{"version":3,"file":"js/chunk-vendors.2bc1de00.js","mappings":"6GAEA,ICKWA,EDLPC,EAAwC,WACxC,IAAIC,EAAgBC,OAAOC,gBACtB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIC,KAAKD,EAAOA,EAAEE,eAAeD,KAAIF,EAAEE,GAAKD,EAAEC,KACzE,OAAO,SAAUF,EAAGC,GAEhB,SAASG,IAAOC,KAAKC,YAAcN,EADnCL,EAAcK,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaL,OAAOY,OAAOP,IAAMG,EAAGG,UAAYN,EAAEM,UAAW,IAAIH,IAP3C,GAWxCK,EAA2B,SAAUC,GAOrC,SAASD,EAAUE,EAAcC,GAC7B,IAAIC,EAAaR,KAAKC,YAClBQ,EAAQT,KACRU,EAAYF,EAAWN,UAM3B,OALAO,EAAQJ,EAAOM,KAAKX,KAAMM,IAAiBN,KAC3CS,EAAMF,WAAaA,EAGnBE,EAAMhB,UAAYiB,EACXD,EAEX,OAjBApB,EAAUe,EAAWC,GAiBdD,EAlBmB,CAmB5BQ,OAGEC,EAA8B,SAAUR,GAMxC,SAASQ,EAAaP,GAClB,IAAIE,EAAaR,KAAKC,iBACD,IAAjBK,IAA2BA,EAAe,uBAC9C,IAAIG,EAAQT,KACRU,EAAYF,EAAWN,UAK3B,OAJAO,EAAQJ,EAAOM,KAAKX,KAAMM,IAAiBN,KAG3CS,EAAMhB,UAAYiB,EACXD,EAEX,OAhBApB,EAAUwB,EAAcR,GAgBjBQ,EAjBsB,CAkB/BD,QC7CF,SAAWxB,GAEPA,EAASA,EAAS,SAAW,GAAK,QAElCA,EAASA,EAAS,SAAW,GAAK,QAElCA,EAASA,EAAS,eAAiB,GAAK,cAExCA,EAASA,EAAS,WAAa,GAAK,UAEpCA,EAASA,EAAS,SAAW,GAAK,QAElCA,EAASA,EAAS,YAAc,GAAK,WAErCA,EAASA,EAAS,QAAU,GAAK,QAdrC,CAeGA,IAAaA,EAAW,KCrB3B,IAAI,EAAwC,WACxC,IAAIE,EAAgBC,OAAOC,gBACtB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIC,KAAKD,EAAOA,EAAEE,eAAeD,KAAIF,EAAEE,GAAKD,EAAEC,KACzE,OAAO,SAAUF,EAAGC,GAEhB,SAASG,IAAOC,KAAKC,YAAcN,EADnCL,EAAcK,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaL,OAAOY,OAAOP,IAAMG,EAAGG,UAAYN,EAAEM,UAAW,IAAIH,IAP3C,GAUxCe,EAAsCvB,OAAOwB,QAAU,SAASC,GAChE,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAIrB,KADToB,EAAIG,UAAUF,GACAD,EAAO1B,OAAOW,UAAUJ,eAAea,KAAKM,EAAGpB,KACzDmB,EAAEnB,GAAKoB,EAAEpB,IAEjB,OAAOmB,GAKPM,EAA8B,WAC9B,SAASA,EAAaf,EAAYgB,EAAYC,GAC1CxB,KAAKO,WAAaA,EAClBP,KAAKuB,WAAaA,EAClBvB,KAAKwB,QAAUA,EAEnB,OAAOF,EANsB,GAa7BG,EAA4B,WAC5B,SAASA,KAWT,OATAA,EAAWvB,UAAUwB,IAAM,SAAUC,EAAKC,GACtC,OAAO5B,KAAK6B,KAAKf,EAAS,GAAIc,EAAS,CAAEE,OAAQ,MAAOH,IAAKA,MAEjEF,EAAWvB,UAAU6B,KAAO,SAAUJ,EAAKC,GACvC,OAAO5B,KAAK6B,KAAKf,EAAS,GAAIc,EAAS,CAAEE,OAAQ,OAAQH,IAAKA,MAElEF,EAAWvB,UAAU8B,OAAS,SAAUL,EAAKC,GACzC,OAAO5B,KAAK6B,KAAKf,EAAS,GAAIc,EAAS,CAAEE,OAAQ,SAAUH,IAAKA,MAE7DF,EAZoB,IAgBQ,SAAUpB,GAG7C,SAAS4B,EAAkBC,GACvB,IAAIzB,EAAQJ,EAAOM,KAAKX,OAASA,KAEjC,OADAS,EAAMyB,OAASA,EACRzB,EALX,EAAUwB,EAAmB5B,GAQ7B4B,EAAkB/B,UAAU2B,KAAO,SAAUM,GACzC,IAAI1B,EAAQT,KACZ,OAAO,IAAIoC,SAAQ,SAAUC,EAASC,GAClC,IAAIC,EAAM,IAAIC,eACdD,EAAIE,KAAKN,EAAQL,OAAQK,EAAQR,KAAK,GACtCY,EAAIG,iBAAkB,EACtBH,EAAII,iBAAiB,mBAAoB,kBAEzCJ,EAAII,iBAAiB,eAAgB,4BACjCR,EAAQS,SACRrD,OAAOsD,KAAKV,EAAQS,SACfE,SAAQ,SAAUC,GAAU,OAAOR,EAAII,iBAAiBI,EAAQZ,EAAQS,QAAQG,OAErFZ,EAAQa,eACRT,EAAIS,aAAeb,EAAQa,cAE3Bb,EAAQc,cACRd,EAAQc,YAAYC,QAAU,WAC1BX,EAAIY,UAGRhB,EAAQiB,UACRb,EAAIa,QAAUjB,EAAQiB,SAE1Bb,EAAIc,OAAS,WACLlB,EAAQc,cACRd,EAAQc,YAAYC,QAAU,MAE9BX,EAAIe,QAAU,KAAOf,EAAIe,OAAS,IAClCjB,EAAQ,IAAIf,EAAaiB,EAAIe,OAAQf,EAAIhB,WAAYgB,EAAIgB,UAAYhB,EAAIiB,eAGzElB,EAAO,IAAIlC,EAAUmC,EAAIhB,WAAYgB,EAAIe,UAGjDf,EAAIkB,QAAU,WACVhD,EAAMyB,OAAOwB,IAAItE,EAASuE,QAAS,4BAA8BpB,EAAIe,OAAS,KAAOf,EAAIhB,YACzFe,EAAO,IAAIlC,EAAUmC,EAAIhB,WAAYgB,EAAIe,UAE7Cf,EAAIqB,UAAY,WACZnD,EAAMyB,OAAOwB,IAAItE,EAASuE,QAAS,8BACnCrB,EAAO,IAAIzB,IAEf0B,EAAIV,KAAKM,EAAQX,SAAW,SApDF,CAwDpCC,I;;;;;;;;;;;;;;;;AC1FF,IAAInC,EAAgB,SAASK,EAAGC,GAI5B,OAHAN,EAAgBC,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIC,KAAKD,EAAOL,OAAOW,UAAUJ,eAAea,KAAKf,EAAGC,KAAIF,EAAEE,GAAKD,EAAEC,KACzFP,EAAcK,EAAGC,IAG5B,SAASP,EAAUM,EAAGC,GAElB,SAASG,IAAOC,KAAKC,YAAcN,EADnCL,EAAcK,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaL,OAAOY,OAAOP,IAAMG,EAAGG,UAAYN,EAAEM,UAAW,IAAIH,GAGnF,ICnBI8D,EA+EAC,ED5DAhD,EAAW,WAQX,OAPAA,EAAWvB,OAAOwB,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAIrB,KADToB,EAAIG,UAAUF,GACAD,EAAO1B,OAAOW,UAAUJ,eAAea,KAAKM,EAAGpB,KAAImB,EAAEnB,GAAKoB,EAAEpB,IAE9E,OAAOmB,GAEJF,EAASiD,MAAM/D,KAAMoB,YAGhC,SAAS4C,EAAUC,EAASC,EAAYC,EAAGC,GACvC,SAASC,EAAMC,GAAS,OAAOA,aAAiBH,EAAIG,EAAQ,IAAIH,GAAE,SAAU9B,GAAWA,EAAQiC,MAC/F,OAAO,IAAKH,IAAMA,EAAI/B,WAAU,SAAUC,EAASC,GAC/C,SAASiC,EAAUD,GAAS,IAAME,EAAKJ,EAAUK,KAAKH,IAAW,MAAOI,GAAKpC,EAAOoC,IACpF,SAASC,EAASL,GAAS,IAAME,EAAKJ,EAAU,SAASE,IAAW,MAAOI,GAAKpC,EAAOoC,IACvF,SAASF,EAAKI,GAAUA,EAAOC,KAAOxC,EAAQuC,EAAON,OAASD,EAAMO,EAAON,OAAOQ,KAAKP,EAAWI,GAClGH,GAAMJ,EAAYA,EAAUL,MAAME,EAASC,GAAc,KAAKO,WAItE,SAASM,EAAYd,EAASe,GAC1B,IAAsGC,EAAGC,EAAGlE,EAAGmE,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPtE,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOuE,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEV,KAAMgB,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAXC,SAA0BP,EAAEO,OAAOC,UAAY,WAAa,OAAO3F,OAAUmF,EACvJ,SAASM,EAAKtE,GAAK,OAAO,SAAUyE,GAAK,OAAOpB,EAAK,CAACrD,EAAGyE,KACzD,SAASpB,EAAKqB,GACV,GAAIZ,EAAG,MAAM,IAAIa,UAAU,mCAC3B,MAAOV,MACH,GAAIH,EAAI,EAAGC,IAAMlE,EAAY,EAAR6E,EAAG,GAASX,EAAE,UAAYW,EAAG,GAAKX,EAAE,YAAclE,EAAIkE,EAAE,YAAclE,EAAEL,KAAKuE,GAAI,GAAKA,EAAET,SAAWzD,EAAIA,EAAEL,KAAKuE,EAAGW,EAAG,KAAKhB,KAAM,OAAO7D,EAE3J,OADIkE,EAAI,EAAGlE,IAAG6E,EAAK,CAAS,EAARA,EAAG,GAAQ7E,EAAEsD,QACzBuB,EAAG,IACP,KAAK,EAAG,KAAK,EAAG7E,EAAI6E,EAAI,MACxB,KAAK,EAAc,OAAXT,EAAEC,QAAgB,CAAEf,MAAOuB,EAAG,GAAIhB,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIW,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKT,EAAEI,IAAIO,MAAOX,EAAEG,KAAKQ,MAAO,SACxC,QACI,GAAM/E,EAAIoE,EAAEG,OAAMvE,EAAIA,EAAEK,OAAS,GAAKL,EAAEA,EAAEK,OAAS,MAAkB,IAAVwE,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAET,EAAI,EAAG,SACjG,GAAc,IAAVS,EAAG,MAAc7E,GAAM6E,EAAG,GAAK7E,EAAE,IAAM6E,EAAG,GAAK7E,EAAE,IAAM,CAAEoE,EAAEC,MAAQQ,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYT,EAAEC,MAAQrE,EAAE,GAAI,CAAEoE,EAAEC,MAAQrE,EAAE,GAAIA,EAAI6E,EAAI,MAC7D,GAAI7E,GAAKoE,EAAEC,MAAQrE,EAAE,GAAI,CAAEoE,EAAEC,MAAQrE,EAAE,GAAIoE,EAAEI,IAAIQ,KAAKH,GAAK,MACvD7E,EAAE,IAAIoE,EAAEI,IAAIO,MAChBX,EAAEG,KAAKQ,MAAO,SAEtBF,EAAKb,EAAKrE,KAAKsD,EAASmB,GAC1B,MAAOV,GAAKmB,EAAK,CAAC,EAAGnB,GAAIQ,EAAI,EAAK,QAAUD,EAAIjE,EAAI,EACtD,GAAY,EAAR6E,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEvB,MAAOuB,EAAG,GAAKA,EAAG,QAAK,EAAQhB,MAAM,IAIlF,SAASoB,EAAOC,EAAG/E,GACf,IAAIgF,EAAsB,oBAAXT,QAAyBQ,EAAER,OAAOC,UACjD,IAAKQ,EAAG,OAAOD,EACf,IAAmBE,EAAY1B,EAA3BxD,EAAIiF,EAAExF,KAAKuF,GAAOG,EAAK,GAC3B,IACI,YAAc,IAANlF,GAAgBA,KAAM,MAAQiF,EAAIlF,EAAEuD,QAAQI,KAAMwB,EAAGL,KAAKI,EAAE9B,OAExE,MAAOgC,GAAS5B,EAAI,CAAE4B,MAAOA,GAC7B,QACI,IACQF,IAAMA,EAAEvB,OAASsB,EAAIjF,EAAE,YAAYiF,EAAExF,KAAKO,GAElD,QAAU,GAAIwD,EAAG,MAAMA,EAAE4B,OAE7B,OAAOD,EAGX,SAASE,IACL,IAAK,IAAIF,EAAK,GAAInF,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAC3CmF,EAAKA,EAAGG,OAAOP,EAAO7E,UAAUF,KACpC,OAAOmF,GCvFX,SAAWxC,GAKPA,EAAkB,sBAAwB,qBAK1CA,EAAkB,8BAAgC,6BAKlDA,EAAkB,sBAAwB,qBAK1CA,EAAkB,2BAA6B,0BAK/CA,EAAkB,qBAAuB,oBAKzCA,EAAkB,oCAAsC,mCAKxDA,EAAkB,qBAAuB,oBAKzCA,EAAkB,iCAAmC,gCAKrDA,EAAkB,kCAAoC,iCAKtDA,EAAkB,mCAAqC,kCAKvDA,EAAkB,aAAe,YAKjCA,EAAkB,mDAAqD,kDAKvEA,EAAkB,kCAAoC,iCAKtDA,EAAkB,uCAAyC,uCAtE/D,CAuEGA,IAAsBA,EAAoB,KAQ7C,SAAWC,GACPA,EAAuBA,EAAuB,cAAgB,GAAK,aACnEA,EAAuBA,EAAuB,cAAgB,GAAK,aACnEA,EAAuBA,EAAuB,aAAe,GAAK,YAHtE,CAIGA,IAA2BA,EAAyB;;;;;;;;;;;;;;;;AC9EvD,IAAI,EAAgB,SAASnE,EAAGC,GAI5B,OAHA,EAAgBL,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIC,KAAKD,EAAOL,OAAOW,UAAUJ,eAAea,KAAKf,EAAGC,KAAIF,EAAEE,GAAKD,EAAEC,KACzF,EAAcF,EAAGC,IAG5B,SAAS,EAAUD,EAAGC,GAElB,SAASG,IAAOC,KAAKC,YAAcN,EADnC,EAAcA,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaL,OAAOY,OAAOP,IAAMG,EAAGG,UAAYN,EAAEM,UAAW,IAAIH,GAGnF,IAAI,EAAW,WAQX,OAPA,EAAWR,OAAOwB,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAIrB,KADToB,EAAIG,UAAUF,GACAD,EAAO1B,OAAOW,UAAUJ,eAAea,KAAKM,EAAGpB,KAAImB,EAAEnB,GAAKoB,EAAEpB,IAE9E,OAAOmB,GAEJ,EAAS+C,MAAM/D,KAAMoB,YAGhC,SAAS,EAAU6C,EAASC,EAAYC,EAAGC,GACvC,SAASC,EAAMC,GAAS,OAAOA,aAAiBH,EAAIG,EAAQ,IAAIH,GAAE,SAAU9B,GAAWA,EAAQiC,MAC/F,OAAO,IAAKH,IAAMA,EAAI/B,WAAU,SAAUC,EAASC,GAC/C,SAASiC,EAAUD,GAAS,IAAME,EAAKJ,EAAUK,KAAKH,IAAW,MAAOI,GAAKpC,EAAOoC,IACpF,SAASC,EAASL,GAAS,IAAME,EAAKJ,EAAU,SAASE,IAAW,MAAOI,GAAKpC,EAAOoC,IACvF,SAASF,EAAKI,GAAUA,EAAOC,KAAOxC,EAAQuC,EAAON,OAASD,EAAMO,EAAON,OAAOQ,KAAKP,EAAWI,GAClGH,GAAMJ,EAAYA,EAAUL,MAAME,EAASC,GAAc,KAAKO,WAItE,SAAS,EAAYR,EAASe,GAC1B,IAAsGC,EAAGC,EAAGlE,EAAGmE,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPtE,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOuE,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEV,KAAMgB,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAXC,SAA0BP,EAAEO,OAAOC,UAAY,WAAa,OAAO3F,OAAUmF,EACvJ,SAASM,EAAKtE,GAAK,OAAO,SAAUyE,GAAK,OAAOpB,EAAK,CAACrD,EAAGyE,KACzD,SAASpB,EAAKqB,GACV,GAAIZ,EAAG,MAAM,IAAIa,UAAU,mCAC3B,MAAOV,MACH,GAAIH,EAAI,EAAGC,IAAMlE,EAAY,EAAR6E,EAAG,GAASX,EAAE,UAAYW,EAAG,GAAKX,EAAE,YAAclE,EAAIkE,EAAE,YAAclE,EAAEL,KAAKuE,GAAI,GAAKA,EAAET,SAAWzD,EAAIA,EAAEL,KAAKuE,EAAGW,EAAG,KAAKhB,KAAM,OAAO7D,EAE3J,OADIkE,EAAI,EAAGlE,IAAG6E,EAAK,CAAS,EAARA,EAAG,GAAQ7E,EAAEsD,QACzBuB,EAAG,IACP,KAAK,EAAG,KAAK,EAAG7E,EAAI6E,EAAI,MACxB,KAAK,EAAc,OAAXT,EAAEC,QAAgB,CAAEf,MAAOuB,EAAG,GAAIhB,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIW,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKT,EAAEI,IAAIO,MAAOX,EAAEG,KAAKQ,MAAO,SACxC,QACI,GAAM/E,EAAIoE,EAAEG,OAAMvE,EAAIA,EAAEK,OAAS,GAAKL,EAAEA,EAAEK,OAAS,MAAkB,IAAVwE,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAET,EAAI,EAAG,SACjG,GAAc,IAAVS,EAAG,MAAc7E,GAAM6E,EAAG,GAAK7E,EAAE,IAAM6E,EAAG,GAAK7E,EAAE,IAAM,CAAEoE,EAAEC,MAAQQ,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYT,EAAEC,MAAQrE,EAAE,GAAI,CAAEoE,EAAEC,MAAQrE,EAAE,GAAIA,EAAI6E,EAAI,MAC7D,GAAI7E,GAAKoE,EAAEC,MAAQrE,EAAE,GAAI,CAAEoE,EAAEC,MAAQrE,EAAE,GAAIoE,EAAEI,IAAIQ,KAAKH,GAAK,MACvD7E,EAAE,IAAIoE,EAAEI,IAAIO,MAChBX,EAAEG,KAAKQ,MAAO,SAEtBF,EAAKb,EAAKrE,KAAKsD,EAASmB,GAC1B,MAAOV,GAAKmB,EAAK,CAAC,EAAGnB,GAAIQ,EAAI,EAAK,QAAUD,EAAIjE,EAAI,EACtD,GAAY,EAAR6E,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEvB,MAAOuB,EAAG,GAAKA,EAAG,QAAK,EAAQhB,MAAM,IAIlF,SAAS4B,IACL,IAAK,IAAIxF,EAAI,EAAGC,EAAI,EAAGwF,EAAKtF,UAAUC,OAAQH,EAAIwF,EAAIxF,IAAKD,GAAKG,UAAUF,GAAGG,OACxE,IAAI+E,EAAI1G,MAAMuB,GAAI0F,EAAI,EAA3B,IAA8BzF,EAAI,EAAGA,EAAIwF,EAAIxF,IACzC,IAAK,IAAI0F,EAAIxF,UAAUF,GAAI2F,EAAI,EAAGC,EAAKF,EAAEvF,OAAQwF,EAAIC,EAAID,IAAKF,IAC1DP,EAAEO,GAAKC,EAAEC,GACjB,OAAOT;;AC7EX,IAyDIW,EAWAC,EAYAC,EASAC,EAsDAC,EA/IAC,EAAY,CACZC,aAAc,UACdC,IAAK,iBAELC,aAAc,OAEdC,kBAAmB,4CACnBC,uBAAwB,4BACxBC,sBAAuB,SAEvBC,KAAM,OAENC,6BAA8B,sGAE9BC,eAAgB,IAEhBC,WAAY,aAEZC,OAAQ,SAERC,cAAe,uCAEfC,aAAc,SACdC,cAAe,UACfC,qBAAsB,iBACtBC,YAAa,QAEbC,mBAAoB,OACpBC,gBAAiB,qBACjBC,cAAe,gBACfC,uBAAwB,WACxBC,2BAA4B,OAC5BC,sBAAuB,kDACvBC,sBAAuB,wBACvBC,YAAa,cACbC,aAAc,GACdC,cAAe,IACfC,cAAe,4DACfC,aAAc,aACdC,aAAc,IACdC,gCAAiC,gBACjCC,kCAAmC,sBACnCC,oBAAqB,CAAC,4BAA6B,oBAAqB,sBAAuB,mBAC/FC,oBAAqB,QACrBC,uBAAwB,YAExBC,EAAsB,CACtBnC,EAAUa,aACVb,EAAUc,cACVd,EAAUe,sBAEVqB,EAAc/C,EAAe8C,EAAqB,CAClDnC,EAAUgB,eAMd,SAAWrB,GACPA,EAAY,gBAAkB,eAC9BA,EAAY,eAAiB,cAC7BA,EAAY,cAAgB,kBAC5BA,EAAY,mBAAqB,mBACjCA,EAAY,sBAAwB,uBALxC,CAMGA,IAAgBA,EAAc,KAKjC,SAAWC,GACPA,EAAoB,YAAc,UAClCA,EAAoB,eAAiB,cACrCA,EAAoB,iBAAmB,eACvCA,EAAoB,SAAW,QAC/BA,EAAoB,cAAgB,oBACpCA,EAAoB,kBAAoB,iBAN5C,CAOGA,IAAwBA,EAAsB,KAKjD,SAAWC,GACPA,EAAsB,UAAY,SAClCA,EAAsB,iBAAmB,gBACzCA,EAAsB,aAAe,YAHzC,CAIGA,IAA0BA,EAAwB,KAKrD,SAAWC,GACPA,EAAmB,aAAe,YAClCA,EAAmB,gBAAkB,eACrCA,EAAmB,iBAAmB,gBACtCA,EAAmB,iBAAmB,gBACtCA,EAAmB,cAAgB,aACnCA,EAAmB,UAAY,SAC/BA,EAAmB,SAAW,QAC9BA,EAAmB,SAAW,QAC9BA,EAAmB,qBAAuB,oBAC1CA,EAAmB,gBAAkB,eACrCA,EAAmB,YAAc,WACjCA,EAAmB,iBAAmB,gBACtCA,EAAmB,cAAgB,aACnCA,EAAmB,SAAW,QAC9BA,EAAmB,SAAW,QAC9BA,EAAmB,UAAY,SAC/BA,EAAmB,iBAAmB,gBACtCA,EAAmB,eAAiB,cACpCA,EAAmB,QAAU,OAC7BA,EAAmB,kBAAoB,iBACvCA,EAAmB,yBAA2B,wBAC9CA,EAAmB,iBAAmB,gBACtCA,EAAmB,qBAAuB,oBAC1CA,EAAmB,gBAAkB,eACrCA,EAAmB,gBAAkB,eACrCA,EAAmB,eAAiB,cACpCA,EAAmB,gBAAkB,eACrCA,EAAmB,uBAAyB,6BAC5CA,EAAmB,uBAAyB,0BAC5CA,EAAmB,uBAAyB,sBAC5CA,EAAmB,cAAgB,aACnCA,EAAmB,aAAe,YAClCA,EAAmB,mBAAqB,2BACxCA,EAAmB,iBAAmB,gBACtCA,EAAmB,eAAiB,cACpCA,EAAmB,iBAAmB,gBACtCA,EAAmB,oBAAsB,mBACzCA,EAAmB,yBAA2B,wBAC9CA,EAAmB,cAAgB,aACnCA,EAAmB,WAAa,UAChCA,EAAmB,iBAAmB,YACtCA,EAAmB,uBAAyB,sBAC5CA,EAAmB,gBAAkB,eACrCA,EAAmB,QAAU,OAC7BA,EAAmB,cAAgB,kBACnCA,EAAmB,mBAAqB,kBACxCA,EAAmB,iBAAmB,eACtCA,EAAmB,eAAiB,cAhDxC,CAiDGA,IAAuBA,EAAqB,KAK/C,SAAWC,GACPA,EAAkB,gBAAkB,eACpCA,EAAkB,UAAY,SAFlC,CAGGA,IAAsBA,EAAoB,KAM7C,IAUIsC,EAVAC,EAAc,CACdC,MAAO,QACPC,eAAgB,iBAChBC,QAAS,UACTC,KAAM,OACNC,OAAQ,WAMZ,SAAWN,GACPA,EAAS,WAAa,UACtBA,EAAS,OAAS,MAClBA,EAAS,cAAgB,aACzBA,EAAS,YAAc,WACvBA,EAAS,eAAiB,cAC1BA,EAAS,iBAAmB,gBAC5BA,EAAS,aAAe,YACxBA,EAAS,cAAgB,oBACzBA,EAAS,kBAAoB,yBATjC,CAUGA,IAAaA,EAAW,KAI3B,IAOIO,EASAC,EAaAC,EAUAC,EAQAC,EAUAC,EAgBAC,EAzEAC,EAA4B,CAC5BC,MAAO,QACPC,KAAM,SAMV,SAAWT,GACPA,EAAa,SAAW,QACxBA,EAAa,YAAc,WAC3BA,EAAa,aAAe,aAHhC,CAIGA,IAAiBA,EAAe,KAKnC,SAAWC,GACPA,EAAU,kBAAoB,WAC9BA,EAAU,4BAA8B,qBACxCA,EAAU,4BAA8B,qBACxCA,EAAU,iCAAmC,WAC7CA,EAAU,uBAAyB,gBACnCA,EAAU,qBAAuB,cACjCA,EAAU,cAAgB,8CAP9B,CAQGA,IAAcA,EAAY,KAK7B,SAAWC,GACPA,EAAiB,sBAAwB,QACzCA,EAAiB,qBAAuB,OACxCA,EAAiB,sBAAwB,MACzCA,EAAiB,wBAA0B,UAJ/C,CAKGA,IAAqBA,EAAmB,KAK3C,SAAWC,GACPA,EAAW,uBAAyB,IACpCA,EAAW,yBAA2B,IAF1C,CAGGA,IAAeA,EAAa,KAK/B,SAAWC,GACPA,EAAe,YAAc,UAC7BA,EAAe,gBAAkB,cACjCA,EAAe,iCAAmC,8BAClDA,EAAe,iBAAmB,eAJtC,CAKGA,IAAmBA,EAAiB,KAKvC,SAAWC,GACPA,EAAgB,WAAa,UAC7BA,EAAgB,cAAgB,aAChCA,EAAgB,YAAc,UAC9BA,EAAgB,gBAAkB,cAClCA,EAAgB,iBAAmB,eACnCA,EAAgB,gBAAkB,cAClCA,EAAgB,aAAe,YAC/BA,EAAgB,aAAe,YAC/BA,EAAgB,aAAe,YAC/BA,EAAgB,cAAgB,aAVpC,CAWGA,IAAoBA,EAAkB,KAKzC,SAAWC,GACPA,EAAUA,EAAU,QAAU,MAAQ,OACtCA,EAAUA,EAAU,OAAS,MAAQ,MACrCA,EAAUA,EAAU,SAAW,MAAQ,QACvCA,EAAUA,EAAU,WAAa,MAAQ,UACzCA,EAAUA,EAAU,gBAAkB,MAAQ,eAC9CA,EAAUA,EAAU,iBAAmB,MAAQ,gBAC/CA,EAAUA,EAAU,YAAc,MAAQ,WAC1CA,EAAUA,EAAU,gBAAkB,MAAQ,eAC9CA,EAAUA,EAAU,aAAe,MAAQ,YAT/C,CAUGA,IAAcA,EAAY,KAI7B,IAOII,EAPAC,EAAe,cACfC,EAAc,cACdC,EAAgB,IAChBC,EAA+B,CAC/BC,UAAW,qBACXC,qBAAsB,QAG1B,SAAWN,GACPA,EAAwB,UAAY,SACpCA,EAAwB,SAAW,QACnCA,EAAwB,WAAa,WAHzC,CAIGA,IAA4BA,EAA0B,KACzD,IAeIO,EAfAC,EAAyB,CACzBC,eAAgB,EAChBC,qBAAsB,GACtBC,sBAAuB,IACvBC,kBAAmB,GACnBP,UAAW,mBACXQ,mBAAoB,IACpBC,gBAAiB,IACjBC,cAAe,IACfC,eAAgB,IAChBC,cAAe,kBAMnB,SAAWV,GACPA,EAAqB,UAAY,SACjCA,EAAqB,OAAS,MAC9BA,EAAqB,OAAS,YAHlC,CAIGA,IAAyBA,EAAuB,KAInD,IAiBIW,EAQAC,EAQAC,EAUAC,EAQAC,EAnDAC,EAAsB,CAEtBC,8BAA+B,GAE/BC,kCAAmC,KAEnCC,kBAAmB,aAEnBC,0BAA2B,qBAE3BC,EAAS,CACTC,oBAAqB,gBACrBC,sBAAuB,oBAM3B,SAAWZ,GACPA,EAAuB,YAAc,WACrCA,EAAuB,YAAc,YAFzC,CAGGA,IAA2BA,EAAyB,KAKvD,SAAWC,GACPA,EAAcA,EAAc,eAAiB,KAAO,cACpDA,EAAcA,EAAc,kBAAoB,KAAO,iBAF3D,CAGGA,IAAkBA,EAAgB,KAKrC,SAAWC,GACPA,EAAuB,yBAA2B,IAClDA,EAAuB,kBAAoB,IAC3CA,EAAuB,wBAA0B,IACjDA,EAAuB,QAAU,IAJrC,CAKGA,IAA2BA,EAAyB,KAKvD,SAAWC,GACPA,EAAwB,+BAAiC,IACzDA,EAAwB,gCAAkC,IAC1DA,EAAwB,2BAA6B,IACrDA,EAAwB,uCAAyC,IACjEA,EAAwB,mCAAqC,IALjE,CAMGA,IAA4BA,EAA0B,KAEzD,SAAWC,GACPA,EAAa,gBAAkB,IAC/BA,EAAa,iBAAmB,IAChCA,EAAa,0BAA4B,IACzCA,EAAa,+BAAiC,IAC9CA,EAAa,+BAAiC,IALlD,CAMGA,IAAiBA,EAAe;;ACtWnC,IAkCIS,EAOAC,EASAC,EAQAC,EAoBAC,GAWAC,GAeAC,GAWAC,GAnHAC,GAAmB,CAInBC,8BAA+B,0BAI/BX,oBAAqB,gBAIrBY,YAAa,IAIbC,aAAc,IAIdC,kBAAmB,OAInBC,iBAAkB,GAIlBC,SAAU,mBAEVC,GAAkB,CAClBC,WAAY,uCACZC,uBAAwB,qCAG5B,SAAWjB,GACPA,EAAsB,oBAAsB,YAC5CA,EAAsB,qBAAuB,oBAC7CA,EAAsB,YAAc,WACpCA,EAAsB,YAAc,YAJxC,CAKGA,IAA0BA,EAAwB,KAErD,SAAWC,GACPA,EAAqB,gBAAkB,eACvCA,EAAqB,kBAAoB,iBACzCA,EAAqB,iBAAmB,gBAH5C,CAIGA,IAAyBA,EAAuB,KAKnD,SAAWC,GACPA,EAAkB,OAAS,MAC3BA,EAAkB,QAAU,OAFhC,CAGGA,IAAsBA,EAAoB,KAK7C,SAAWC,GACPA,EAAmB,aAAe,YAClCA,EAAmB,yBAA2B,uBAC9CA,EAAmB,iBAAmB,gBACtCA,EAAmB,iBAAmB,gBACtCA,EAAmB,iBAAmB,iBACtCA,EAAmB,cAAgB,iBACnCA,EAAmB,gBAAkB,qBACrCA,EAAmB,YAAc,UACjCA,EAAmB,kBAAoB,iBACvCA,EAAmB,UAAY,SAC/BA,EAAmB,0BAA4B,qBAC/CA,EAAmB,kBAAoB,iBACvCA,EAAmB,kBAAoB,wBACvCA,EAAmB,kBAAoB,iBAd3C,CAeGA,IAAuBA,EAAqB,KAK/C,SAAWC,GACPA,EAAkB,eAAiB,cACnCA,EAAkB,eAAiB,kBAFvC,CAGGA,KAAsBA,GAAoB,KAQ7C,SAAWC,GACPA,EAAMA,EAAM,wBAA0B,KAAO,uBAC7CA,EAAMA,EAAM,qBAAuB,KAAO,oBAC1CA,EAAMA,EAAM,aAAe,KAAO,YAClCA,EAAMA,EAAM,+BAAiC,KAAO,8BACpDA,EAAMA,EAAM,yBAA2B,KAAO,wBAC9CA,EAAMA,EAAM,sBAAwB,KAAO,qBAC3CA,EAAMA,EAAM,iCAAmC,IAAM,gCACrDA,EAAMA,EAAM,UAAY,KAAO,SAC/BA,EAAMA,EAAM,eAAiB,KAAO,cATxC,CAUGA,KAAUA,GAAQ,KAKrB,SAAWC,GACPA,EAAgB,YAAc,WAC9BA,EAAgB,SAAW,QAC3BA,EAAgB,UAAY,SAC5BA,EAAgB,QAAU,OAJ9B,CAKGA,KAAoBA,GAAkB,KAMzC,SAAWC,GAIPA,EAAkB,WAAa,UAI/BA,EAAkB,SAAW,QAI7BA,EAAkB,UAAY,SAI9BA,EAAkB,gBAAkB,eAIpCA,EAAkB,aAAe,YAIjCA,EAAkB,kBAAoB,iBAItCA,EAAkB,QAAU,OA5BhC,CA6BGA,KAAsBA,GAAoB,KAC7C,IAQIW,GARAC,GAAkB,CAClBC,OAAQtE,GAKRuE,GAAiB,OAGrB,SAAWH,GACPA,EAAW,SAAW,oBACtBA,EAAW,WAAa,uBAF5B,CAGGA,KAAeA,GAAa,KAE/B,ICzJII,GDyJAC,GAAU,UACVC,GAAa,EACbC,GAAgBF,GAAU,QEpK1BG,GAA2B,WAC3B,SAASA,KAcT,OAPAA,EAAUC,aAAe,SAAUC,GAC/B,IAAIC,EAAMD,EAAIE,SAAS,IACvB,MAAOD,EAAIjN,OAAS,EAChBiN,EAAM,IAAMA,EAEhB,OAAOA,GAEJH,EAfmB,GCA1BK,GAA+B,WAC/B,SAASA,EAAcC,GACnBzO,KAAKyO,UAAYA,EA6ErB,OArDAD,EAActO,UAAUwO,aAAe,WACnC,IACI,IAAIC,EAAS,IAAIC,WAAW,IAQ5B,OAPA5O,KAAKyO,UAAUI,gBAAgBF,GAE/BA,EAAO,IAAM,GACbA,EAAO,IAAM,GAEbA,EAAO,IAAM,IACbA,EAAO,IAAM,IACNR,GAAUC,aAAaO,EAAO,IAAMR,GAAUC,aAAaO,EAAO,IACnER,GAAUC,aAAaO,EAAO,IAAMR,GAAUC,aAAaO,EAAO,IAClE,IAAMR,GAAUC,aAAaO,EAAO,IAAMR,GAAUC,aAAaO,EAAO,IACxE,IAAMR,GAAUC,aAAaO,EAAO,IAAMR,GAAUC,aAAaO,EAAO,IACxE,IAAMR,GAAUC,aAAaO,EAAO,IAAMR,GAAUC,aAAaO,EAAO,IACxE,IAAMR,GAAUC,aAAaO,EAAO,KAAOR,GAAUC,aAAaO,EAAO,KACzER,GAAUC,aAAaO,EAAO,KAAOR,GAAUC,aAAaO,EAAO,KACnER,GAAUC,aAAaO,EAAO,KAAOR,GAAUC,aAAaO,EAAO,KAE7E,MAAOG,GAKH,IAJA,IAAIC,EAAa,uCACbT,EAAM,mBACNlI,EAAI,EACJ4I,EAAe5H,EAAUyB,aACpB3H,EAAI,EAAGA,EAAI,GAAIA,IACE,MAAlB6N,EAAW7N,IAAgC,MAAlB6N,EAAW7N,KAEpCkF,EAAoB,GAAhB6I,KAAKC,SAAgB,GAEP,MAAlBH,EAAW7N,GACX8N,GAAgBV,EAAIlI,GAEG,MAAlB2I,EAAW7N,IAEhBkF,GAAK,EACLA,GAAK,EACL4I,GAAgBV,EAAIlI,IAGpB4I,GAAgBD,EAAW7N,GAGnC,OAAO8N,IAOfR,EAActO,UAAUiP,OAAS,SAAUC,GACvC,IAAIC,EAAY,6EAChB,OAAOA,EAAUC,KAAKF,IAEnBZ,EA/EuB,GCG9Be,GAAoC,WACpC,SAASA,KAiGT,OA3FAA,EAAmBC,gBAAkB,SAAUC,GAK3C,IAJA,IAAIC,EACAC,EAAU,EACVC,EAAUH,EAAQpO,OAEbwO,EAAU,EAAGA,EAAUD,EAASC,IACrCH,EAAOD,EAAQK,WAAWD,GAC1BF,GAAWD,EAAO,IAAO,EAAIA,EAAO,KAAQ,EAAIA,EAAO,MAAU,EAAIA,EAAO,QAAW,EAAIA,EAAO,SAAY,EAAI,EAItH,IAFA,IAAIK,EAAS,IAAInB,WAAWe,GAEnBK,EAAO,EAAGC,EAAU,EAAGD,EAAOL,EAASM,IAC5CP,EAAOD,EAAQK,WAAWG,GACtBP,EAAO,IAEPK,EAAOC,KAAUN,EAEZA,EAAO,MAEZK,EAAOC,KAAU,KAAON,IAAS,GACjCK,EAAOC,KAAU,KAAc,GAAPN,IAEnBA,EAAO,OAEZK,EAAOC,KAAU,KAAON,IAAS,IACjCK,EAAOC,KAAU,KAAON,IAAS,EAAI,IACrCK,EAAOC,KAAU,KAAc,GAAPN,IAEnBA,EAAO,SAEZK,EAAOC,KAAU,KAAON,IAAS,IACjCK,EAAOC,KAAU,KAAON,IAAS,GAAK,IACtCK,EAAOC,KAAU,KAAON,IAAS,EAAI,IACrCK,EAAOC,KAAU,KAAc,GAAPN,IAEnBA,EAAO,UAEZK,EAAOC,KAAU,KAAON,IAAS,IACjCK,EAAOC,KAAU,KAAON,IAAS,GAAK,IACtCK,EAAOC,KAAU,KAAON,IAAS,GAAK,IACtCK,EAAOC,KAAU,KAAON,IAAS,EAAI,IACrCK,EAAOC,KAAU,KAAc,GAAPN,KAIxBK,EAAOC,KAAU,KAAON,IAAS,IACjCK,EAAOC,KAAU,KAAON,IAAS,GAAK,IACtCK,EAAOC,KAAU,KAAON,IAAS,GAAK,IACtCK,EAAOC,KAAU,KAAON,IAAS,GAAK,IACtCK,EAAOC,KAAU,KAAON,IAAS,EAAI,IACrCK,EAAOC,KAAU,KAAc,GAAPN,IAGhC,OAAOK,GAMXR,EAAmBW,oBAAsB,SAAUC,GAG/C,IAFA,IAAIC,EAAO,IAAIC,YAAYF,EAAW9O,QAClCiP,EAAW,IAAI1B,WAAWwB,GACrBlP,EAAI,EAAGA,EAAIiP,EAAW9O,OAAQH,IACnCoP,EAASpP,GAAKiP,EAAWL,WAAW5O,GAExC,OAAOkP,GAMXb,EAAmBgB,gBAAkB,SAAUR,GAE3C,IADA,IAAIS,EAAQpJ,EAAUyB,aACb4H,OAAQ,EAAQC,EAAOX,EAAO1O,OAAQ2O,EAAO,EAAGA,EAAOU,EAAMV,IAClES,EAAQV,EAAOC,GACfQ,GAASG,OAAOC,aAAaH,EAAQ,KAAOA,EAAQ,KAAOT,EAAO,EAAIU,EAElD,YAAfD,EAAQ,MAAqBV,IAASC,GAAQ,KAAO,KAAOD,IAASC,GAAQ,KAAO,KAAOD,IAASC,GAAQ,KAAO,KAAOD,IAASC,GAAQ,KAAO,GAAKD,IAASC,GAAQ,IACvKS,EAAQ,KAAOA,EAAQ,KAAOT,EAAO,EAAIU,GACtCD,EAAQ,KAAO,KAAOV,IAASC,GAAQ,KAAO,KAAOD,IAASC,GAAQ,KAAO,KAAOD,IAASC,GAAQ,KAAO,GAAKD,IAASC,GAAQ,IACjIS,EAAQ,KAAOA,EAAQ,KAAOT,EAAO,EAAIU,GACtCD,EAAQ,KAAO,KAAOV,IAASC,GAAQ,KAAO,KAAOD,IAASC,GAAQ,KAAO,GAAKD,IAASC,GAAQ,IAClGS,EAAQ,KAAOA,EAAQ,KAAOT,EAAO,EAAIU,GACtCD,EAAQ,KAAO,KAAOV,IAASC,GAAQ,KAAO,GAAKD,IAASC,GAAQ,IACnES,EAAQ,KAAOA,EAAQ,KAAOT,EAAO,EAAIU,GACtCD,EAAQ,KAAO,GAAKV,IAASC,GAAQ,IAElCS,GAE5B,OAAOD,GAEJjB,EAlG4B,GCCnCsB,GAA8B,WAC9B,SAASA,KAqET,OA/DAA,EAAa3Q,UAAU4Q,UAAY,SAAUC,GACzC,OAAOC,mBAAmBhR,KAAKiR,OAAOF,GACjCG,QAAQ,KAAM9J,EAAUyB,cACxBqI,QAAQ,MAAO,KACfA,QAAQ,MAAO,OAMxBL,EAAa3Q,UAAUiR,aAAe,SAAUC,GAC5C,OAAOpR,KAAKqR,aAAaD,GACpBF,QAAQ,KAAM9J,EAAUyB,cACxBqI,QAAQ,MAAO,KACfA,QAAQ,MAAO,MAMxBL,EAAa3Q,UAAU+Q,OAAS,SAAUF,GACtC,IAAIO,EAAe/B,GAAmBC,gBAAgBuB,GACtD,OAAO/Q,KAAKqR,aAAaC,IAM7BT,EAAa3Q,UAAUmR,aAAe,SAAUtB,GAG5C,IAFA,IAAIwB,GAAS,EAAKxB,EAAO1O,OAAS,GAAM,EACpCmQ,EAAUpK,EAAUyB,aACf4I,OAAQ,EAAQf,EAAOX,EAAO1O,OAAQqQ,EAAU,EAAG1B,EAAO,EAAGA,EAAOU,EAAMV,IAC/EyB,EAAQzB,EAAO,EAKf0B,GAAW3B,EAAOC,KAAU,KAAOyB,EAAQ,IAC7B,IAAVA,GAAe1B,EAAO1O,OAAS2O,IAAS,IACxCwB,GAAWb,OAAOC,aAAa5Q,KAAK2R,WAAWD,IAAY,GAAK,IAAK1R,KAAK2R,WAAWD,IAAY,GAAK,IAAK1R,KAAK2R,WAAWD,IAAY,EAAI,IAAK1R,KAAK2R,WAAqB,GAAVD,IAChKA,EAAU,GAGlB,OAAiB,IAAVH,EAAcC,EAAUA,EAAQI,UAAU,EAAGJ,EAAQnQ,OAASkQ,IAAoB,IAAVA,EAAc,IAAM,OAMvGV,EAAa3Q,UAAUyR,WAAa,SAAUE,GAC1C,OAAOA,EAAS,GACZA,EAAS,GACPA,EAAS,GACPA,EAAS,GACPA,EAAS,GACPA,EAAS,EACI,KAAXA,EACE,GACa,KAAXA,EACE,GAEI,IAErBhB,EAtEsB,GCA7BiB,GAA8B,WAC9B,SAASA,KA+DT,OAzDAA,EAAa5R,UAAU6R,OAAS,SAAUhB,GACtC,IAAIiB,EAAgBjB,EAAMG,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAC3D,OAAQc,EAAc3Q,OAAS,GAC3B,KAAK,EACD,MACJ,KAAK,EACD2Q,GAAiB,KACjB,MACJ,KAAK,EACDA,GAAiB,IACjB,MACJ,QACI,MAAM,IAAIpR,MAAM,yBAExB,IAAI0Q,EAAetR,KAAKiS,eAAeD,GACvC,OAAOzC,GAAmBgB,gBAAgBe,IAO9CQ,EAAa5R,UAAU+R,eAAiB,SAAUC,EAAcC,GAK5D,IAJA,IAAIX,EAAUU,EAAahB,QAAQ,oBAAqB9J,EAAUyB,cAC9DuJ,EAASZ,EAAQnQ,OACjBgR,EAAUF,EAAalD,KAAKqD,MAAe,EAATF,EAAa,IAAM,GAAKD,GAAcA,EAAsB,EAATC,EAAa,IAAM,EACxGrC,EAAS,IAAInB,WAAWyD,GACnBZ,OAAQ,EAAQc,OAAQ,EAAQb,EAAU,EAAGc,EAAU,EAAGC,EAAS,EAAGA,EAASL,EAAQK,IAG5F,GAFAF,EAAiB,EAATE,EACRf,GAAW1R,KAAK0S,WAAWlB,EAAQ1B,WAAW2C,KAAY,GAAK,EAAIF,EACrD,IAAVA,GAAeH,EAASK,IAAW,EAAG,CACtC,IAAKhB,EAAQ,EAAGA,EAAQ,GAAKe,EAAUH,EAASZ,IAASe,IACrDzC,EAAOyC,GAAWd,KAAa,KAAOD,EAAQ,IAAM,IAExDC,EAAU,EAGlB,OAAO3B,GAMX+B,EAAa5R,UAAUwS,WAAa,SAAUC,GAC1C,OAAOA,EAAU,IAAMA,EAAU,GAC7BA,EAAU,GACRA,EAAU,IAAMA,EAAU,IACxBA,EAAU,GACRA,EAAU,IAAMA,EAAU,GACxBA,EAAU,EACI,KAAZA,EACE,GACc,KAAZA,EACE,GAEI,GAErBb,EAhEsB,GCD7Bc,GAAmB,CACnBC,gBAAiB,CACbC,KAAM,mBACNC,KAAM,wCAMVC,GAA2B,SAAU3S,GAErC,SAAS2S,EAAUC,EAAW3S,EAAc4S,GACxC,IAAIzS,EAAQT,KACRmT,EAAc7S,EAAe2S,EAAY,KAAO3S,EAAe2S,EAOnE,OANAxS,EAAQJ,EAAOM,KAAKX,KAAMmT,IAAgBnT,KAC1CT,OAAOC,eAAeiB,EAAOuS,EAAU9S,WACvCO,EAAMwS,UAAYA,GAAa7L,EAAUyB,aACzCpI,EAAMH,aAAeA,GAAgB8G,EAAUyB,aAC/CpI,EAAM2S,SAAWF,GAAY9L,EAAUyB,aACvCpI,EAAM4S,KAAO,YACN5S,EAYX,OAtBA,EAAUuS,EAAW3S,GAYrB2S,EAAU9S,UAAUoT,iBAAmB,SAAUC,GAC7CvT,KAAKuT,cAAgBA,GAMzBP,EAAUQ,sBAAwB,SAAUC,GACxC,OAAO,IAAIT,EAAUJ,GAAiBC,gBAAgBC,KAAMF,GAAiBC,gBAAgBE,KAAO,KAAOU,IAExGT,EAvBmB,CAwB5BpS,OCjCE8S,GAAyB,CACzBC,wBAAyB,CACrBb,KAAM,6BACNC,KAAM,+GAEVa,qBAAsB,CAClBd,KAAM,0BACNC,KAAM,mFAEVc,kBAAmB,CACff,KAAM,sBACNC,KAAM,8EAEVe,iBAAkB,CACdhB,KAAM,sBACNC,KAAM,oFAEVgB,wBAAyB,CACrBjB,KAAM,6BACNC,KAAM,2EAEViB,aAAc,CACVlB,KAAM,gBACNC,KAAM,+EAEVkB,6BAA8B,CAC1BnB,KAAM,sBACNC,KAAM,+IAEVmB,oBAAqB,CACjBpB,KAAM,wBACNC,KAAM,uGAEVoB,mBAAoB,CAChBrB,KAAM,uBACNC,KAAM,sFAEVqB,kBAAmB,CACftB,KAAM,gBACNC,KAAM,6IAEVsB,mBAAoB,CAChBvB,KAAM,iBACNC,KAAM,iGAEVuB,mBAAoB,CAChBxB,KAAM,kBACNC,KAAM,mBAEVwB,mBAAoB,CAChBzB,KAAM,iBACNC,KAAM,wFAEVyB,mBAAoB,CAChB1B,KAAM,kBACNC,KAAM,mBAEV0B,mBAAoB,CAChB3B,KAAM,kBACNC,KAAM,oLAEV2B,uBAAwB,CACpB5B,KAAM,2BACNC,KAAM,qJAGV4B,yBAA0B,CACtB7B,KAAM,6BACNC,KAAM,6HAEV6B,4BAA6B,CACzB9B,KAAM,gCACNC,KAAM,oIAEV8B,yBAA0B,CACtB/B,KAAM,yBACNC,KAAM,6EAEV+B,sBAAuB,CACnBhC,KAAM,4BACNC,KAAM,8FAEVgC,sBAAuB,CACnBjC,KAAM,4BACNC,KAAM,gGAEViC,oBAAqB,CACjBlC,KAAM,yBACNC,KAAM,wCAEVkC,wBAAyB,CACrBnC,KAAM,uBACNC,KAAM,6CAEVmC,2BAA4B,CACxBpC,KAAM,gCACNC,KAAM,mHAEVoC,kBAAmB,CACfrC,KAAM,sBACNC,KAAM,2BAEVqC,uBAAwB,CACpBtC,KAAM,4BACNC,KAAM,oDAEVsC,yBAA0B,CACtBvC,KAAM,+BACNC,KAAM,2FAEVuC,mBAAoB,CAChBxC,KAAM,uBACNC,KAAM,8CAEVwC,wBAAyB,CACrBzC,KAAM,4BACNC,KAAM,6DAEVyC,eAAgB,CACZ1C,KAAM,mBACNC,KAAM,4CAEV0C,iBAAkB,CACd3C,KAAM,sCACNC,KAAM,iFAEV2C,YAAa,CACT5C,KAAM,mBACNC,KAAM,6EAEV4C,iBAAkB,CACd7C,KAAM,qBACNC,KAAM,sBAEV6C,sBAAuB,CACnB9C,KAAM,0BACNC,KAAM,4BAEV8C,yBAA0B,CACtB/C,KAAM,6BACNC,KAAM,+BAEV+C,iBAAkB,CACdhD,KAAM,oBACNC,KAAM,4FAEVgD,wBAAyB,CACrBjD,KAAM,4BACNC,KAAM,kKAEViD,qBAAsB,CAClBlD,KAAM,yBACNC,KAAM,sOAEVkD,mBAAoB,CAChBnD,KAAM,uBACNC,KAAM,wDAEVmD,oBAAqB,CACjBpD,KAAM,0CACNC,KAAM,mEAEVoD,8BAA+B,CAC3BrD,KAAM,kDACNC,KAAM,qEAEVqD,sBAAuB,CACnBtD,KAAM,2BACNC,KAAM,mEAEVsD,2BAA4B,CACxBvD,KAAM,2BACNC,KAAM,uGAEVuD,0BAA2B,CACvBxD,KAAM,0BACNC,KAAM,+DAEVwD,mBAAoB,CAChBzD,KAAM,qCACNC,KAAM,gDAMVyD,GAAiC,SAAUnW,GAE3C,SAASmW,EAAgBvD,EAAW3S,GAChC,IAAIG,EAAQJ,EAAOM,KAAKX,KAAMiT,EAAW3S,IAAiBN,KAG1D,OAFAS,EAAM4S,KAAO,kBACb9T,OAAOC,eAAeiB,EAAO+V,EAAgBtW,WACtCO,EAkQX,OAvQA,EAAU+V,EAAiBnW,GAW3BmW,EAAgBC,8BAAgC,SAAUC,GACtD,OAAO,IAAIF,EAAgB9C,GAAuBC,wBAAwBb,KAAMY,GAAuBC,wBAAwBZ,KAAO,uBAAyB2D,IAMnKF,EAAgBG,2BAA6B,WACzC,OAAO,IAAIH,EAAgB9C,GAAuBE,qBAAqBd,KAAM,GAAKY,GAAuBE,qBAAqBb,OAMlIyD,EAAgBI,wBAA0B,SAAUC,GAChD,OAAO,IAAIL,EAAgB9C,GAAuBG,kBAAkBf,KAAMY,GAAuBG,kBAAkBd,KAAO,uBAAyB8D,IAMvJL,EAAgBM,4BAA8B,SAAUC,GACpD,OAAO,IAAIP,EAAgB9C,GAAuBI,iBAAiBhB,KAAMY,GAAuBI,iBAAiBf,KAAO,qBAAuBgE,IAKnJP,EAAgBQ,uCAAyC,SAAUC,GAC/D,OAAO,IAAIT,EAAgB9C,GAAuBK,wBAAwBjB,KAAMY,GAAuBK,wBAAwBhB,KAAO,YAAckE,IAKxJT,EAAgBU,mBAAqB,SAAUC,EAAUF,GACrD,OAAO,IAAIT,EAAgB9C,GAAuBM,aAAalB,KAAMY,GAAuBM,aAAajB,KAAO,0BAA4BkE,EAAY,0BAA4BE,EAASC,MAAM,KAAK,KAK5MZ,EAAgBa,mCAAqC,SAAUJ,GAC3D,OAAO,IAAIT,EAAgB9C,GAAuBO,6BAA6BnB,KAAMY,GAAuBO,6BAA6BlB,KAAO,0CAA4CkE,IAMhMT,EAAgBc,+BAAiC,SAAUC,GACvD,OAAO,IAAIf,EAAgB9C,GAAuBQ,oBAAoBpB,KAAMY,GAAuBQ,oBAAoBnB,KAAO,kBAAoBwE,IAMtJf,EAAgBgB,wBAA0B,SAAUC,EAActE,GAC9D,OAAO,IAAIqD,EAAgB9C,GAAuBU,kBAAkBtB,KAAMY,GAAuBU,kBAAkBrB,KAAO,mBAAqB0E,EAAe,eAAiBtE,IAKnLqD,EAAgBkB,yBAA2B,WACvC,OAAO,IAAIlB,EAAgB9C,GAAuBW,mBAAmBvB,KAAMY,GAAuBW,mBAAmBtB,OAMzHyD,EAAgBmB,yBAA2B,SAAUC,GACjD,OAAO,IAAIpB,EAAgB9C,GAAuBY,mBAAmBxB,KAAMY,GAAuBY,mBAAmBvB,KAAO,MAAQ6E,IAKxIpB,EAAgBqB,yBAA2B,WACvC,OAAO,IAAIrB,EAAgB9C,GAAuBa,mBAAmBzB,KAAMY,GAAuBa,mBAAmBxB,OAMzHyD,EAAgBsB,yBAA2B,SAAUC,GACjD,OAAO,IAAIvB,EAAgB9C,GAAuBc,mBAAmB1B,KAAMY,GAAuBc,mBAAmBzB,KAAO,MAAQgF,IAKxIvB,EAAgBwB,yCAA2C,WACvD,OAAO,IAAIxB,EAAgB9C,GAAuBgB,uBAAuB5B,KAAMY,GAAuBgB,uBAAuB3B,KAAO,MAKxIyD,EAAgByB,2CAA6C,WACzD,OAAO,IAAIzB,EAAgB9C,GAAuBiB,yBAAyB7B,KAAMY,GAAuBiB,yBAAyB5B,OAKrIyD,EAAgB0B,8CAAgD,WAC5D,OAAO,IAAI1B,EAAgB9C,GAAuBkB,4BAA4B9B,KAAMY,GAAuBkB,4BAA4B7B,OAK3IyD,EAAgB2B,oCAAsC,WAClD,OAAO,IAAI3B,EAAgB9C,GAAuBmB,yBAAyB/B,KAAMY,GAAuBmB,yBAAyB9B,OAMrIyD,EAAgB4B,iCAAmC,SAAUC,GACzD,OAAO,IAAI7B,EAAgB9C,GAAuBoB,sBAAsBhC,KAAMY,GAAuBoB,sBAAsB/B,KAAO,iBAAmBsF,IAMzJ7B,EAAgB8B,mCAAqC,SAAUD,GAC3D,OAAO,IAAI7B,EAAgB9C,GAAuBqB,sBAAsBjC,KAAMY,GAAuBqB,sBAAsBhC,KAAO,iBAAmBsF,IAMzJ7B,EAAgB+B,0BAA4B,SAAUC,GAClD,OAAO,IAAIhC,EAAgB9C,GAAuBsB,oBAAoBlC,KAAMY,GAAuBsB,oBAAoBjC,KAAO,kBAAoByF,IAMtJhC,EAAgBiC,8BAAgC,WAC5C,OAAO,IAAIjC,EAAgB9C,GAAuBuB,wBAAwBnC,KAAM,GAAKY,GAAuBuB,wBAAwBlC,OAKxIyD,EAAgBkC,+BAAiC,WAC7C,OAAO,IAAIlC,EAAgB9C,GAAuBwB,2BAA2BpC,KAAM,GAAKY,GAAuBwB,2BAA2BnC,OAK9IyD,EAAgBmC,6BAA+B,WAC3C,OAAO,IAAInC,EAAgB9C,GAAuByB,kBAAkBrC,KAAM,GAAKY,GAAuByB,kBAAkBpC,OAK5HyD,EAAgBoC,6BAA+B,WAC3C,OAAO,IAAIpC,EAAgB9C,GAAuB0B,uBAAuBtC,KAAM,GAAKY,GAAuB0B,uBAAuBrC,OAKtIyD,EAAgBqC,oCAAsC,WAClD,OAAO,IAAIrC,EAAgB9C,GAAuB2B,yBAAyBvC,KAAM,GAAKY,GAAuB2B,yBAAyBtC,OAK1IyD,EAAgBsC,iCAAmC,WAC/C,OAAO,IAAItC,EAAgB9C,GAAuB4B,mBAAmBxC,KAAMY,GAAuB4B,mBAAmBvC,OAKzHyD,EAAgBuC,mCAAqC,WACjD,OAAO,IAAIvC,EAAgB9C,GAAuB6B,wBAAwBzC,KAAMY,GAAuB6B,wBAAwBxC,OAKnIyD,EAAgBwC,0BAA4B,WACxC,OAAO,IAAIxC,EAAgB9C,GAAuB8B,eAAe1C,KAAMY,GAAuB8B,eAAezC,OAKjHyD,EAAgByC,uBAAyB,WACrC,OAAO,IAAIzC,EAAgB9C,GAAuB+B,iBAAiB3C,KAAM,GAAKY,GAAuB+B,iBAAiB1C,OAM1HyD,EAAgB0C,0BAA4B,SAAUC,GAClD,OAAO,IAAI3C,EAAgB9C,GAAuBgC,YAAY5C,KAAM,GAAKY,GAAuBgC,YAAY3C,KAAOoG,IAKvH3C,EAAgB4C,4BAA8B,WAC1C,OAAO,IAAI5C,EAAgB9C,GAAuBiC,iBAAiB7C,KAAM,GAAKY,GAAuBiC,iBAAiB5C,OAK1HyD,EAAgB6C,iCAAmC,WAC/C,OAAO,IAAI7C,EAAgB9C,GAAuBkC,sBAAsB9C,KAAM,GAAKY,GAAuBkC,sBAAsB7C,OAKpIyD,EAAgB8C,oCAAsC,WAClD,OAAO,IAAI9C,EAAgB9C,GAAuBmC,yBAAyB/C,KAAM,GAAKY,GAAuBmC,yBAAyB9C,OAK1IyD,EAAgB+C,4BAA8B,WAC1C,OAAO,IAAI/C,EAAgB9C,GAAuBoC,iBAAiBhD,KAAM,GAAKY,GAAuBoC,iBAAiB/C,OAK1HyD,EAAgBgD,6BAA+B,WAC3C,OAAO,IAAIhD,EAAgB9C,GAAuBqC,wBAAwBjD,KAAM,GAAKY,GAAuBqC,wBAAwBhD,OAKxIyD,EAAgBiD,2BAA6B,WACzC,OAAO,IAAIjD,EAAgB9C,GAAuBsC,qBAAqBlD,KAAMY,GAAuBsC,qBAAqBjD,OAK7HyD,EAAgBkD,8BAAgC,WAC5C,OAAO,IAAIlD,EAAgB9C,GAAuBuC,mBAAmBnD,KAAMY,GAAuBuC,mBAAmBlD,OAKzHyD,EAAgBmD,+BAAiC,WAC7C,OAAO,IAAInD,EAAgB9C,GAAuBwC,oBAAoBpD,KAAMY,GAAuBwC,oBAAoBnD,OAK3HyD,EAAgBoD,sCAAwC,WACpD,OAAO,IAAIpD,EAAgB9C,GAAuByC,8BAA8BrD,KAAMY,GAAuByC,8BAA8BpD,OAE/IyD,EAAgBqD,gCAAkC,WAC9C,OAAO,IAAIrD,EAAgB9C,GAAuB4C,0BAA0BxD,KAAMY,GAAuB4C,0BAA0BvD,OAKvIyD,EAAgBsD,8BAAgC,WAC5C,OAAO,IAAItD,EAAgB9C,GAAuB6C,mBAAmBzD,KAAMY,GAAuB6C,mBAAmBxD,OAElHyD,EAxQyB,CAyQlCxD,ICpcE+G,GAA6B,WAC7B,SAASA,KAgHT,OAzGAA,EAAYC,gBAAkB,SAAUC,GACpC,GAAIF,EAAYG,QAAQD,GACpB,MAAMzD,GAAgBM,4BAA4BmD,GAEtD,IAAIE,EAAkB,uCAClBC,EAAUD,EAAgBE,KAAKJ,GACnC,IAAKG,GAAWA,EAAQ/Y,OAAS,EAC7B,MAAMmV,GAAgBI,wBAAwB,6BAA+B0D,KAAKC,UAAUN,IAEhG,IAAIO,EAAe,CACfzX,OAAQqX,EAAQ,GAChBK,WAAYL,EAAQ,GACpBM,OAAQN,EAAQ,IAEpB,OAAOI,GAOXT,EAAYG,QAAU,SAAUS,GAC5B,MAAuB,qBAARA,IAAwBA,GAAO,IAAMA,EAAItZ,QAM5D0Y,EAAYa,WAAa,SAAUC,GAC/B,GAAIA,IAAWd,EAAYG,QAAQW,GAC/B,IACI,IAAIC,EAAMR,KAAKS,MAAMF,GACrB,OAAmC,IAA5Btb,OAAOsD,KAAKiY,GAAKzZ,OAE5B,MAAOqD,IAEX,OAAO,GAEXqV,EAAYiB,WAAa,SAAUL,EAAKM,GACpC,OAA+B,IAAxBN,EAAIO,QAAQD,IAEvBlB,EAAYoB,SAAW,SAAUR,EAAKM,GAClC,OAAQN,EAAItZ,QAAU4Z,EAAO5Z,QAAYsZ,EAAIS,YAAYH,KAAaN,EAAItZ,OAAS4Z,EAAO5Z,QAO9F0Y,EAAYsB,oBAAsB,SAAUC,GACxC,IAAIR,EAAM,GACNS,EAASD,EAAMlE,MAAM,KACrBrF,EAAS,SAAU9Q,GAAK,OAAOua,mBAAmBva,EAAEiQ,QAAQ,MAAO,OASvE,OARAqK,EAAOzY,SAAQ,SAAU2Y,GACrB,GAAIA,EAAKC,OAAQ,CACb,IAAIC,EAAKF,EAAKrE,MAAM,SAAU,GAAIwE,EAAMD,EAAG,GAAIrX,EAAQqX,EAAG,GACtDC,GAAOtX,IACPwW,EAAI/I,EAAO6J,IAAQ7J,EAAOzN,QAI/BwW,GAOXf,EAAY8B,iBAAmB,SAAUC,GACrC,OAAOA,EAAIC,KAAI,SAAUC,GAAS,OAAOA,EAAMN,WAMnD3B,EAAYkC,4BAA8B,SAAUH,GAChD,OAAOA,EAAII,QAAO,SAAUF,GACxB,OAAQjC,EAAYG,QAAQ8B,OAOpCjC,EAAYoC,gBAAkB,SAAUxB,GACpC,IACI,OAAOL,KAAKS,MAAMJ,GAEtB,MAAOjW,GACH,OAAO,OAQfqV,EAAYqC,aAAe,SAAUC,EAAStL,GAK1C,IAAIuL,EAAQ,IAAIC,OAAOF,EAAQnL,QAAQ,MAAO,QAAQA,QAAQ,MAAO,SAASA,QAAQ,MAAO,QAC7F,OAAOoL,EAAMhN,KAAKyB,IAEfgJ,EAjHqB,GCC5ByC,GAA0B,CAC1BC,iBAAkB,CACd3J,KAAM,mBACNC,KAAM,gEAEV2J,mBAAoB,CAChB5J,KAAM,qBACNC,KAAM,mDAEV4J,8BAA+B,CAC3B7J,KAAM,8BACNC,KAAM,mEAEV6J,sBAAuB,CACnB9J,KAAM,qBACNC,KAAM,oEAEV8J,eAAgB,CACZ/J,KAAM,mBACNC,KAAM,qHAEV+J,6BAA8B,CAC1BhK,KAAM,mBACNC,KAAM,qFAEVgK,uCAAwC,CACpCjK,KAAM,yCACNC,KAAM,yGAEViK,wBAAyB,CACrBlK,KAAM,wBACNC,KAAM,+EAEVkK,kCAAmC,CAC/BnK,KAAM,kCACNC,KAAM,2EAEVmK,sBAAuB,CACnBpK,KAAM,0BACNC,KAAM,kLAEVoK,iBAAkB,CACdrK,KAAM,qBACNC,KAAM,4GAEVqK,iBAAkB,CACdtK,KAAM,qBACNC,KAAM,yDAEVsK,mBAAoB,CAChBvK,KAAM,iBACNC,KAAM,4BAEVuK,yBAA0B,CACtBxK,KAAM,yBACNC,KAAM,mGAEVwK,0BAA2B,CACvBzK,KAAM,yBACNC,KAAM,oGAEVyK,sBAAuB,CACnB1K,KAAM,qBACNC,KAAM,oKAEV0K,sCAAuC,CACnC3K,KAAM,sBACNC,KAAM,uIAEV2K,+BAAgC,CAC5B5K,KAAM,sBACNC,KAAM,uFAEV4K,6BAA8B,CAC1B7K,KAAM,4BACNC,KAAM,sDAEV6K,6BAA8B,CAC1B9K,KAAM,4BACNC,KAAM,mFAEV8K,eAAgB,CACZ/K,KAAM,mBACNC,KAAM,2JAEV+K,uBAAwB,CACpBhL,KAAM,4BACNC,KAAM,kGAEVgL,yBAA0B,CACtBjL,KAAM,+BACNC,KAAM,oCAEViL,oCAAqC,CACjClL,KAAM,4CACNC,KAAM,iDAEVkL,uBAAwB,CACpBnL,KAAM,4BACNC,KAAM,8BAEVmL,kBAAmB,CACfpL,KAAM,6BACNC,KAAM,kGAEV4C,iBAAkB,CACd7C,KAAM,qBACNC,KAAM,sBAEVoL,wBAAyB,CACrBrL,KAAM,0BACNC,KAAM,2EAEVqL,gBAAiB,CACbtL,KAAM,oBACNC,KAAM,yBAEVsL,sBAAuB,CACnBvL,KAAM,0BACNC,KAAM,4DAEVuL,kBAAmB,CACfxL,KAAM,sBACNC,KAAM,6IAEVwL,iBAAkB,CACdzL,KAAM,qBACNC,KAAM,mFAEVyL,6BAA8B,CAC1B1L,KAAM,2BACNC,KAAM,0DAEV0L,uBAAwB,CACpB3L,KAAM,uBACNC,KAAM,iCAEV2L,4BAA6B,CACzB5L,KAAM,uBACNC,KAAM,8DAEV4L,iBAAkB,CACd7L,KAAM,qBACNC,KAAM,gGAEV6L,gCAAiC,CAC7B9L,KAAM,wCACNC,KAAM,2EAEV8L,oBAAqB,CACjB/L,KAAM,uBACNC,KAAM,iMAEV+L,uCAAwC,CACpChM,KAAM,+CACNC,KAAM,oHAEVgM,uBAAwB,CACpBjM,KAAM,2BACNC,KAAM,2EAEViM,4BAA6B,CACzBlM,KAAM,iCACNC,KAAM,mGAEVkM,+BAAgC,CAC5BnM,KAAM,oCACNC,KAAM,mLAEVmM,mCAAoC,CAChCpM,KAAM,yCACNC,KAAM,sLAEVoM,yBAA0B,CACtBrM,KAAM,8BACNC,KAAM,sHAMVqM,GAAkC,SAAU/e,GAE5C,SAAS+e,EAAiBnM,EAAW3S,GACjC,IAAIG,EAAQJ,EAAOM,KAAKX,KAAMiT,EAAW3S,IAAiBN,KAG1D,OAFAT,OAAOC,eAAeiB,EAAO2e,EAAiBlf,WAC9CO,EAAM4S,KAAO,mBACN5S,EAsRX,OA3RApB,EAAU+f,EAAkB/e,GAW5B+e,EAAiBC,4BAA8B,SAAUpI,GACrD,OAAO,IAAImI,EAAiB5C,GAAwBC,iBAAiB3J,KAAM0J,GAAwBC,iBAAiB1J,KAAO,WAAakE,IAM5ImI,EAAiBE,8BAAgC,SAAUrI,GACvD,OAAO,IAAImI,EAAiB5C,GAAwBE,mBAAmB5J,KAAM0J,GAAwBE,mBAAmB3J,KAAO,WAAakE,IAMhJmI,EAAiBG,oCAAsC,SAAUzd,GAC7D,OAAO,IAAIsd,EAAiB5C,GAAwBG,8BAA8B7J,KAAM0J,GAAwBG,8BAA8B5J,KAAO,kBAAoBjR,IAK7Ksd,EAAiBI,8BAAgC,WAC7C,OAAO,IAAIJ,EAAiB5C,GAAwBI,sBAAsB9J,KAAM0J,GAAwBI,sBAAsB7J,OAMlIqM,EAAiBK,qBAAuB,SAAUC,GAC9C,OAAO,IAAIN,EAAiB5C,GAAwBK,eAAe/J,KAAM0J,GAAwBK,eAAe9J,KAAO,eAAiB2M,IAK5IN,EAAiBO,mCAAqC,WAClD,OAAO,IAAIP,EAAiB5C,GAAwBM,6BAA6BhK,KAAM0J,GAAwBM,6BAA6B/J,OAKhJqM,EAAiBQ,6CAA+C,WAC5D,OAAO,IAAIR,EAAiB5C,GAAwBO,uCAAuCjK,KAAM0J,GAAwBO,uCAAuChK,OAKpKqM,EAAiBS,8BAAgC,WAC7C,OAAO,IAAIT,EAAiB5C,GAAwBQ,wBAAwBlK,KAAM0J,GAAwBQ,wBAAwBjK,OAKtIqM,EAAiBU,wCAA0C,WACvD,OAAO,IAAIV,EAAiB5C,GAAwBS,kCAAkCnK,KAAM0J,GAAwBS,kCAAkClK,OAK1JqM,EAAiBW,iCAAmC,WAChD,OAAO,IAAIX,EAAiB5C,GAAwBU,sBAAsBpK,KAAM0J,GAAwBU,sBAAsBnK,OAMlIqM,EAAiBY,uBAAyB,SAAU/I,GAChD,IAAI3W,EAAekc,GAAwBW,iBAAiBpK,KAE5D,OADAzS,EAAgByZ,GAAYG,QAAQjD,GAAuD3W,EAA1CA,EAAe,aAAe2W,EACxE,IAAImI,EAAiB5C,GAAwBW,iBAAiBrK,KAAMxS,IAM/E8e,EAAiBa,8BAAgC,WAC7C,OAAO,IAAIb,EAAiB5C,GAAwBY,iBAAiBtK,KAAM0J,GAAwBY,iBAAiBrK,OAKxHqM,EAAiBc,yBAA2B,WACxC,OAAO,IAAId,EAAiB5C,GAAwBa,mBAAmBvK,KAAM0J,GAAwBa,mBAAmBtK,OAK5HqM,EAAiBe,+BAAiC,WAC9C,OAAO,IAAIf,EAAiB5C,GAAwBc,yBAAyBxK,KAAM0J,GAAwBc,yBAAyBvK,OAKxIqM,EAAiBgB,gCAAkC,WAC/C,OAAO,IAAIhB,EAAiB5C,GAAwBe,0BAA0BzK,KAAM0J,GAAwBe,0BAA0BxK,OAM1IqM,EAAiBiB,4BAA8B,SAAUC,GACrD,OAAO,IAAIlB,EAAiB5C,GAAwBgB,sBAAsB1K,KAAM0J,GAAwBgB,sBAAsBzK,KAAO,kCAAoCuN,IAK7KlB,EAAiBmB,qCAAuC,WACpD,OAAO,IAAInB,EAAiB5C,GAAwBiB,sCAAsC3K,KAAM0J,GAAwBiB,sCAAsC1K,OAMlKqM,EAAiBoB,qCAAuC,WACpD,OAAO,IAAIpB,EAAiB5C,GAAwBkB,+BAA+B5K,KAAM0J,GAAwBkB,+BAA+B3K,OAKpJqM,EAAiBqB,mCAAqC,WAClD,OAAO,IAAIrB,EAAiB5C,GAAwBmB,6BAA6B7K,KAAM0J,GAAwBmB,6BAA6B5K,OAKhJqM,EAAiBsB,mCAAqC,WAClD,OAAO,IAAItB,EAAiB5C,GAAwBoB,6BAA6B9K,KAAM0J,GAAwBoB,6BAA6B7K,OAKhJqM,EAAiBuB,qBAAuB,WACpC,OAAO,IAAIvB,EAAiB5C,GAAwBqB,eAAe/K,KAAM0J,GAAwBqB,eAAe9K,OAKpHqM,EAAiBwB,6BAA+B,SAAUC,GACtD,OAAO,IAAIzB,EAAiB5C,GAAwBsB,uBAAuBhL,KAAM0J,GAAwBsB,uBAAuB/K,KAAO,iBAAmB8N,IAK9JzB,EAAiB0B,0CAA4C,WACzD,OAAO,IAAI1B,EAAiB5C,GAAwBwB,oCAAoClL,KAAM0J,GAAwBwB,oCAAoCjL,OAK9JqM,EAAiB2B,+BAAiC,WAC9C,OAAO,IAAI3B,EAAiB5C,GAAwBuB,yBAAyBjL,KAAM0J,GAAwBuB,yBAAyBhL,OAKxIqM,EAAiB4B,6BAA+B,WAC5C,OAAO,IAAI5B,EAAiB5C,GAAwB0B,kBAAkBpL,KAAM0J,GAAwB0B,kBAAkBnL,OAK1HqM,EAAiB6B,6BAA+B,WAC5C,OAAO,IAAI7B,EAAiB5C,GAAwByB,uBAAuBnL,KAAM0J,GAAwByB,uBAAuBlL,OAKpIqM,EAAiBhG,4BAA8B,WAC3C,OAAO,IAAIgG,EAAiB5C,GAAwB7G,iBAAiB7C,KAAM,GAAK0J,GAAwB7G,iBAAiB5C,OAK7HqM,EAAiB8B,iCAAmC,WAChD,OAAO,IAAI9B,EAAiB5C,GAAwB2B,wBAAwBrL,KAAM0J,GAAwB2B,wBAAwBpL,OAKtIqM,EAAiB+B,2BAA6B,WAC1C,OAAO,IAAI/B,EAAiB5C,GAAwB4B,gBAAgBtL,KAAM0J,GAAwB4B,gBAAgBrL,OAKtHqM,EAAiBgC,iCAAmC,WAChD,OAAO,IAAIhC,EAAiB5C,GAAwB6B,sBAAsBvL,KAAM0J,GAAwB6B,sBAAsBtL,OAKlIqM,EAAiBiC,6BAA+B,SAAUC,EAAWnK,GACjE,OAAO,IAAIiI,EAAiB5C,GAAwB8B,kBAAkBxL,KAAM0J,GAAwB8B,kBAAkBvL,KAAO,4BAA8BuO,EAAY,0BAA4BnK,EAASC,MAAM,KAAK,KAK3NgI,EAAiBmC,4BAA8B,SAAUD,EAAWnK,GAChE,OAAO,IAAIiI,EAAiB5C,GAAwB+B,iBAAiBzL,KAAM0J,GAAwB+B,iBAAiBxL,KAAO,4BAA8BuO,EAAY,0BAA4BnK,EAASC,MAAM,KAAK,KAKzNgI,EAAiBoC,wCAA0C,SAAUrK,GACjE,OAAO,IAAIiI,EAAiB5C,GAAwBgC,6BAA6B1L,KAAM0J,GAAwBgC,6BAA6BzL,KAAO,0BAA4BoE,EAASC,MAAM,KAAK,KAKvMgI,EAAiBqC,6BAA+B,SAAUC,GACtD,OAAO,IAAItC,EAAiB5C,GAAwBiC,uBAAuB3L,KAAM0J,GAAwBiC,uBAAuB1L,KAAO,MAAQ2O,IAKnJtC,EAAiBuC,uCAAyC,SAAUC,GAChE,OAAO,IAAIxC,EAAiB5C,GAAwBkC,4BAA4B5L,KAAM0J,GAAwBkC,4BAA4B3L,KAAO,gCAAkC6O,IAKvLxC,EAAiByC,4BAA8B,WAC3C,OAAO,IAAIzC,EAAiB5C,GAAwBmC,iBAAiB7L,KAAM0J,GAAwBmC,iBAAiB5L,OAKxHqM,EAAiB0C,6CAA+C,WAC5D,OAAO,IAAI1C,EAAiB5C,GAAwBoC,gCAAgC9L,KAAM0J,GAAwBoC,gCAAgC7L,OAKtJqM,EAAiB2C,+BAAiC,WAC9C,OAAO,IAAI3C,EAAiB5C,GAAwBqC,oBAAoB/L,KAAM0J,GAAwBqC,oBAAoB9L,OAK9HqM,EAAiB4C,kDAAoD,WACjE,OAAO,IAAI5C,EAAiB5C,GAAwBsC,uCAAuChM,KAAM0J,GAAwBsC,uCAAuC/L,OAKpKqM,EAAiB6C,kCAAoC,WACjD,OAAO,IAAI7C,EAAiB5C,GAAwBuC,uBAAuBjM,KAAM0J,GAAwBuC,uBAAuBhM,OAKpIqM,EAAiB8C,uCAAyC,WACtD,OAAO,IAAI9C,EAAiB5C,GAAwBwC,4BAA4BlM,KAAM0J,GAAwBwC,4BAA4BjM,OAM9IqM,EAAiB+C,0CAA4C,WACzD,OAAO,IAAI/C,EAAiB5C,GAAwByC,+BAA+BnM,KAAM0J,GAAwByC,+BAA+BlM,OAKpJqM,EAAiBgD,yCAA2C,WACxD,OAAO,IAAIhD,EAAiB5C,GAAwB0C,mCAAmCpM,KAAM0J,GAAwB0C,mCAAmCnM,OAM5JqM,EAAiBiD,6CAA+C,WAC5D,OAAO,IAAIjD,EAAiB5C,GAAwB2C,yBAAyBrM,KAAM0J,GAAwB2C,yBAAyBpM,OAEjIqM,EA5R0B,CA6RnCpM,ICndEsP,GAAyB,GAIzBC,GAA+B,WAC/B,SAASA,EAAc9T,GACnBzO,KAAKwiB,aAAe,IAAI3R,GACxB7Q,KAAKyO,UAAYA,EAgErB,OA3DA8T,EAAcriB,UAAUuiB,cAAgB,WACpC,OAAOze,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI0iB,EAAcC,EAClB,OAAO5d,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,OADAqd,EAAe1iB,KAAK4iB,uBACb,CAAC,EAAa5iB,KAAK6iB,kCAAkCH,IAChE,KAAK,EAED,OADAC,EAAgBhH,EAAGrW,OACZ,CAAC,EAAc,CACdwd,SAAUJ,EACVK,UAAWJ,YAUvCJ,EAAcriB,UAAU0iB,qBAAuB,WAC3C,IAEI,IAAIjU,EAAS,IAAIC,WAAW0T,IAC5BtiB,KAAKyO,UAAUI,gBAAgBF,GAE/B,IAAIqU,EAAsBhjB,KAAKwiB,aAAarR,aAAaxC,GACzD,OAAOqU,EAEX,MAAOte,GACH,MAAM0a,GAAiBC,4BAA4B3a,KAO3D6d,EAAcriB,UAAU2iB,kCAAoC,SAAUI,GAClE,OAAOjf,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIkjB,EAAwBC,EAC5B,OAAOpe,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,OADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAahG,KAAKyO,UAAU2U,aAAaH,IACrD,KAAK,EAGD,OAFAC,EAAyBvH,EAAGrW,OAErB,CAAC,EAActF,KAAKwiB,aAAarR,aAAa,IAAIvC,WAAWsU,KACxE,KAAK,EAED,MADAC,EAAMxH,EAAGrW,OACH8Z,GAAiBC,4BAA4B8D,GACvD,KAAK,EAAG,MAAO,CAAC,WAKzBZ,EAnEuB,GCC9Bc,GAAuB,oBAEvBC,GAAgB,UAEhBC,GAAiB,KAEjBC,GAAkB,IAAI5U,WAAW,CAAC,EAAM,EAAM,IAK9C6U,GAA+B,WAC/B,SAASA,EAAcvhB,GAEnB,GADAlC,KAAKkC,OAASA,GACRlC,KAAK0jB,eACP,MAAMtE,GAAiBE,8BAA8B,oDAEzDtf,KAAK2jB,wBAA0B,CAC3BtQ,KAAMgQ,GACNO,KAAMN,GACNO,cAAeN,GACfO,eAAgBN,IAgPxB,OAzOAC,EAAcvjB,UAAUkjB,aAAe,SAAUjT,GAC7C,OAAOnM,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIoQ,EACJ,OAAOrL,EAAY/E,MAAM,SAAU2b,GAE/B,OADAvL,EAAOb,GAAmBC,gBAAgBW,GACnC,CAAC,EAAcnQ,KAAK+jB,cAAgB/jB,KAAKgkB,kBAAkBV,GAAelT,GAAQpQ,KAAKikB,sBAAsBX,GAAelT,WAQ/IqT,EAAcvjB,UAAU2O,gBAAkB,SAAUqV,GAChD,IAAIzV,EAAY0V,OAAO,aAAeA,OAAOC,OAC7C,IAAK3V,EAAUI,gBACX,MAAMuQ,GAAiBE,8BAA8B,mCAEzD7Q,EAAUI,gBAAgBqV,IAO9BT,EAAcvjB,UAAUmkB,gBAAkB,SAAUC,EAAaC,GAC7D,OAAOvgB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,MAAO,CAAC,EAAe3b,KAAK+jB,cACpB/jB,KAAKwkB,oBAAoBF,EAAaC,GACpCJ,OAAOC,OAAOK,OAAOC,YAAY1kB,KAAK2jB,wBAAyBW,EAAaC,WASlGd,EAAcvjB,UAAUykB,UAAY,SAAU/I,GAC1C,OAAO5X,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,MAAO,CAAC,EAAc3b,KAAK+jB,cAAgB/jB,KAAK4kB,kBAAkBhJ,GAAOuI,OAAOC,OAAOK,OAAOI,UAAU/W,GAAgB8N,WAWpI6H,EAAcvjB,UAAU4kB,UAAY,SAAUlJ,EAAK0I,EAAaC,GAC5D,OAAOvgB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI+kB,EAAWC,EACf,OAAOjgB,EAAY/E,MAAM,SAAU2b,GAG/B,OAFAoJ,EAAYtB,EAAcwB,aAAarJ,GACvCoJ,EAAYzV,GAAmBW,oBAAoB6U,GAC5C,CAAC,EAAc/kB,KAAK+jB,cACnB/jB,KAAKklB,kBAAkBF,EAAWV,EAAaC,GAC7CJ,OAAOC,OAAOK,OAAOU,UAAUrX,GAAgB8N,EAAK5b,KAAK2jB,wBAAyBW,EAAaC,WASrHd,EAAcvjB,UAAUklB,KAAO,SAAUxJ,EAAKxL,GAC1C,OAAOpM,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,MAAO,CAAC,EAAc3b,KAAK+jB,cACnB/jB,KAAKqlB,aAAazJ,EAAKxL,GACrB+T,OAAOC,OAAOK,OAAOW,KAAKplB,KAAK2jB,wBAAyB/H,EAAKxL,WAOnFqT,EAAcvjB,UAAUwjB,aAAe,WACnC,OAAO1jB,KAAK+jB,eAAiB/jB,KAAKslB,oBAKtC7B,EAAcvjB,UAAU6jB,YAAc,WAClC,MAAO,aAAcI,QAKzBV,EAAcvjB,UAAUolB,iBAAmB,WACvC,MAAO,WAAYnB,QAOvBV,EAAcvjB,UAAU+jB,sBAAwB,SAAUsB,EAAWnV,GACjE,OAAOpM,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,MAAO,CAAC,EAAcwI,OAAOC,OAAOK,OAAOe,OAAOD,EAAWnV,WASzEqT,EAAcvjB,UAAU8jB,kBAAoB,SAAUuB,EAAWnV,GAC7D,OAAOpM,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,MAAO,CAAC,EAAc,IAAIvZ,SAAQ,SAAUC,EAASC,GAC7C,IAAImjB,EAAkBtB,OAAO,YAAYM,OAAOe,OAAOD,EAAWnV,EAAKzB,QACvE8W,EAAgBC,iBAAiB,YAAY,SAAUhhB,GACnDrC,EAAQqC,EAAEihB,OAAO/gB,WAErB6gB,EAAgBC,iBAAiB,SAAS,SAAUpf,GAChDhE,EAAOgE,iBAW/Bmd,EAAcvjB,UAAUskB,oBAAsB,SAAUF,EAAaC,GACjE,OAAOvgB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIS,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,MAAO,CAAC,EAAc,IAAIvZ,SAAQ,SAAUC,EAASC,GAC7C,IAAIsjB,EAAgBzB,OAAO,YAAYM,OAAOC,YAAYjkB,EAAMkjB,wBAAyBW,EAAaC,GACtGqB,EAAcF,iBAAiB,YAAY,SAAUhhB,GACjDrC,EAAQqC,EAAEihB,OAAO/gB,WAErBghB,EAAcF,iBAAiB,SAAS,SAAUpf,GAC9ChE,EAAOgE,iBAW/Bmd,EAAcvjB,UAAU0kB,kBAAoB,SAAUhJ,GAClD,OAAO5X,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,MAAO,CAAC,EAAc,IAAIvZ,SAAQ,SAAUC,EAASC,GAC7C,IAAIujB,EAAc1B,OAAO,YAAYM,OAAOI,UAAU/W,GAAgB8N,GACtEiK,EAAYH,iBAAiB,YAAY,SAAUhhB,GAC/C,IAAIohB,EAAephB,EAAEihB,OAAO/gB,OACxBmhB,EAAexW,GAAmBgB,gBAAgB,IAAI3B,WAAWkX,IAChE5U,QAAQ,MAAO9J,EAAUyB,cACzBqI,QAAQ,MAAO9J,EAAUyB,cACzBqI,QAAQ,MAAO9J,EAAUyB,cACzBuO,MAAM,KAAK4O,KAAK5e,EAAUyB,cAC1BqI,QAAQ,KAAU9J,EAAUyB,cACjC,IACIxG,EAAQiY,KAAKS,MAAMgL,IAEvB,MAAOrhB,GACHpC,EAAOoC,OAGfmhB,EAAYH,iBAAiB,SAAS,SAAUpf,GAC5ChE,EAAOgE,iBAa/Bmd,EAAcvjB,UAAUglB,kBAAoB,SAAUF,EAAWV,EAAaC,GAC1E,OAAOvgB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIS,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,MAAO,CAAC,EAAc,IAAIvZ,SAAQ,SAAUC,EAASC,GAC7C,IAAI2jB,EAAc9B,OAAO,YAAYM,OAAOU,UAAUrX,GAAgBkX,EAAWvkB,EAAMkjB,wBAAyBW,EAAaC,GAC7H0B,EAAYP,iBAAiB,YAAY,SAAUhhB,GAC/CrC,EAAQqC,EAAEihB,OAAO/gB,WAErBqhB,EAAYP,iBAAiB,SAAS,SAAUpf,GAC5ChE,EAAOgE,iBAW/Bmd,EAAcvjB,UAAUmlB,aAAe,SAAUzJ,EAAKxL,GAClD,OAAOpM,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIS,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,MAAO,CAAC,EAAc,IAAIvZ,SAAQ,SAAUC,EAASC,GAC7C,IAAI4jB,EAAS/B,OAAO,YAAYM,OAAOW,KAAK3kB,EAAMkjB,wBAAyB/H,EAAKxL,GAChF8V,EAAOR,iBAAiB,YAAY,SAAUhhB,GAC1CrC,EAAQqC,EAAEihB,OAAO/gB,WAErBshB,EAAOR,iBAAiB,SAAS,SAAUpf,GACvChE,EAAOgE,iBAU/Bmd,EAAcwB,aAAe,SAAUkB,GACnC,OAAO7L,KAAKC,UAAU4L,EAAK5mB,OAAOsD,KAAKsjB,GAAKC,SAEzC3C,EA1PuB,GCd9B4C,GAAiC,WACjC,SAASA,IACLrmB,KAAKsmB,OAAStY,GACdhO,KAAKumB,QAAUtY,GACfjO,KAAKwmB,UAAYtY,GACjBlO,KAAKymB,QAAS,EA2PlB,OAtPAJ,EAAgBnmB,UAAUuC,KAAO,WAC7B,OAAOuB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIS,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,MAAO,CAAC,EAAc,IAAIvZ,SAAQ,SAAUC,EAASC,GAC7C,IAAIokB,EAASvC,OAAOwC,UAAUlkB,KAAKhC,EAAM6lB,OAAQ7lB,EAAM8lB,SACvDG,EAAOhB,iBAAiB,iBAAiB,SAAUhhB,GAC/C,IAAIkiB,EAAQliB,EACZkiB,EAAMjB,OAAO/gB,OAAOiiB,kBAAkBpmB,EAAM+lB,cAEhDE,EAAOhB,iBAAiB,WAAW,SAAUhhB,GACzC,IAAIkiB,EAAQliB,EACZjE,EAAMqmB,GAAKF,EAAMjB,OAAO/gB,OACxBnE,EAAMgmB,QAAS,EACfpkB,OAEJqkB,EAAOhB,iBAAiB,SAAS,WAAc,OAAOpjB,EAAO8c,GAAiB2C,gDASlGsE,EAAgBnmB,UAAU6mB,gBAAkB,WACxC,IAAID,EAAK9mB,KAAK8mB,GACVA,GAAM9mB,KAAKymB,SACXK,EAAGE,QACHhnB,KAAKymB,QAAS,IAMtBJ,EAAgBnmB,UAAU+mB,iBAAmB,WACzC,OAAOjjB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EACD,OAAMrF,KAAKymB,OAAe,CAAC,EAAa,GACjC,CAAC,EAAazmB,KAAKyC,QAC9B,KAAK,EAAG,MAAO,CAAC,EAAckZ,EAAGrW,QACjC,KAAK,EAAG,MAAO,CAAC,WAShC+gB,EAAgBnmB,UAAUgnB,QAAU,SAAUtL,GAC1C,OAAO5X,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIS,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAAG,MAAO,CAAC,EAAarF,KAAKinB,oBAClC,KAAK,EAED,OADAtL,EAAGrW,OACI,CAAC,EAAc,IAAIlD,SAAQ,SAAUC,EAASC,GAE7C,IAAK7B,EAAMqmB,GACP,OAAOxkB,EAAO8c,GAAiB+B,8BAEnC,IAAIgG,EAAc1mB,EAAMqmB,GAAGK,YAAY,CAAC1mB,EAAM+lB,WAAY,YACtDY,EAAcD,EAAYC,YAAY3mB,EAAM+lB,WAC5Ca,EAAQD,EAAY1lB,IAAIka,GAC5ByL,EAAM3B,iBAAiB,WAAW,SAAUhhB,GACxC,IAAIkiB,EAAQliB,EACZjE,EAAMsmB,kBACN1kB,EAAQukB,EAAMjB,OAAO/gB,WAEzByiB,EAAM3B,iBAAiB,SAAS,SAAUhhB,GACtCjE,EAAMsmB,kBACNzkB,EAAOoC,kBAYvC2hB,EAAgBnmB,UAAUonB,QAAU,SAAU1L,EAAK2L,GAC/C,OAAOvjB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIS,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAAG,MAAO,CAAC,EAAarF,KAAKinB,oBAClC,KAAK,EAED,OADAtL,EAAGrW,OACI,CAAC,EAAc,IAAIlD,SAAQ,SAAUC,EAASC,GAE7C,IAAK7B,EAAMqmB,GACP,OAAOxkB,EAAO8c,GAAiB+B,8BAEnC,IAAIgG,EAAc1mB,EAAMqmB,GAAGK,YAAY,CAAC1mB,EAAM+lB,WAAY,aACtDY,EAAcD,EAAYC,YAAY3mB,EAAM+lB,WAC5CgB,EAAQJ,EAAYK,IAAIF,EAAS3L,GACrC4L,EAAM9B,iBAAiB,WAAW,WAC9BjlB,EAAMsmB,kBACN1kB,OAEJmlB,EAAM9B,iBAAiB,SAAS,SAAUhhB,GACtCjE,EAAMsmB,kBACNzkB,EAAOoC,kBAWvC2hB,EAAgBnmB,UAAUwnB,WAAa,SAAU9L,GAC7C,OAAO5X,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIS,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAAG,MAAO,CAAC,EAAarF,KAAKinB,oBAClC,KAAK,EAED,OADAtL,EAAGrW,OACI,CAAC,EAAc,IAAIlD,SAAQ,SAAUC,EAASC,GAC7C,IAAK7B,EAAMqmB,GACP,OAAOxkB,EAAO8c,GAAiB+B,8BAEnC,IAAIgG,EAAc1mB,EAAMqmB,GAAGK,YAAY,CAAC1mB,EAAM+lB,WAAY,aACtDY,EAAcD,EAAYC,YAAY3mB,EAAM+lB,WAC5CmB,EAAWP,EAAYplB,OAAO4Z,GAClC+L,EAASjC,iBAAiB,WAAW,WACjCjlB,EAAMsmB,kBACN1kB,OAEJslB,EAASjC,iBAAiB,SAAS,SAAUhhB,GACzCjE,EAAMsmB,kBACNzkB,EAAOoC,kBAUvC2hB,EAAgBnmB,UAAU0nB,QAAU,WAChC,OAAO5jB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIS,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAAG,MAAO,CAAC,EAAarF,KAAKinB,oBAClC,KAAK,EAED,OADAtL,EAAGrW,OACI,CAAC,EAAc,IAAIlD,SAAQ,SAAUC,EAASC,GAC7C,IAAK7B,EAAMqmB,GACP,OAAOxkB,EAAO8c,GAAiB+B,8BAEnC,IAAIgG,EAAc1mB,EAAMqmB,GAAGK,YAAY,CAAC1mB,EAAM+lB,WAAY,YACtDY,EAAcD,EAAYC,YAAY3mB,EAAM+lB,WAC5CqB,EAAYT,EAAYU,aAC5BD,EAAUnC,iBAAiB,WAAW,SAAUhhB,GAC5C,IAAIkiB,EAAQliB,EACZjE,EAAMsmB,kBACN1kB,EAAQukB,EAAMjB,OAAO/gB,WAEzBijB,EAAUnC,iBAAiB,SAAS,SAAUhhB,GAC1CjE,EAAMsmB,kBACNzkB,EAAOoC,kBAWvC2hB,EAAgBnmB,UAAU6nB,YAAc,SAAUnM,GAC9C,OAAO5X,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIS,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAAG,MAAO,CAAC,EAAarF,KAAKinB,oBAClC,KAAK,EAED,OADAtL,EAAGrW,OACI,CAAC,EAAc,IAAIlD,SAAQ,SAAUC,EAASC,GAC7C,IAAK7B,EAAMqmB,GACP,OAAOxkB,EAAO8c,GAAiB+B,8BAEnC,IAAIgG,EAAc1mB,EAAMqmB,GAAGK,YAAY,CAAC1mB,EAAM+lB,WAAY,YACtDY,EAAcD,EAAYC,YAAY3mB,EAAM+lB,WAC5CwB,EAAgBZ,EAAYa,MAAMrM,GACtCoM,EAActC,iBAAiB,WAAW,SAAUhhB,GAChD,IAAIkiB,EAAQliB,EACZjE,EAAMsmB,kBACN1kB,EAAgC,IAAxBukB,EAAMjB,OAAO/gB,WAEzBojB,EAActC,iBAAiB,SAAS,SAAUhhB,GAC9CjE,EAAMsmB,kBACNzkB,EAAOoC,kBAYvC2hB,EAAgBnmB,UAAUgoB,eAAiB,WACvC,OAAOlkB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAImoB,EAAmBC,EACvB,OAAOrjB,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAKD,OAHIrF,KAAK8mB,IAAM9mB,KAAKymB,QAChBzmB,KAAK+mB,kBAEF,CAAC,EAAa5C,OAAOwC,UAAU0B,aAC1C,KAAK,EAID,OAHAF,EAAoBxM,EAAGrW,OACvB8iB,EAAWD,EAAkBG,MAAK,SAAUF,GAAY,OAAOA,EAAS/U,OAASrF,MAE7Eoa,EACO,CAAC,EAAc,IAAIhmB,SAAQ,SAAUC,EAASC,GAC7C,IAAIimB,EAAkBpE,OAAOwC,UAAUuB,eAAela,IACtDua,EAAgB7C,iBAAiB,WAAW,WAAc,OAAOrjB,GAAQ,MACzEkmB,EAAgB7C,iBAAiB,SAAS,WAAc,OAAOpjB,GAAO,UAI3E,CAAC,GAAc,WAKnC+jB,EAhQyB,GCPhCmC,GAA+B,WAC/B,SAASA,IACLxoB,KAAKyoB,MAAQ,IAAIC,IAwBrB,OAtBAF,EAActoB,UAAUgnB,QAAU,SAAUtL,GACxC,OAAO5b,KAAKyoB,MAAM/mB,IAAIka,IAAQ,MAElC4M,EAActoB,UAAUonB,QAAU,SAAU1L,EAAKtX,GAC7CtE,KAAKyoB,MAAME,IAAI/M,EAAKtX,IAExBkkB,EAActoB,UAAUwnB,WAAa,SAAU9L,GAC3C5b,KAAKyoB,MAAMzmB,OAAO4Z,IAEtB4M,EAActoB,UAAU0nB,QAAU,WAC9B,IAAIgB,EAAY,GAIhB,OAHA5oB,KAAKyoB,MAAM3lB,SAAQ,SAAUwB,EAAOsX,GAChCgN,EAAU5iB,KAAK4V,MAEZgN,GAEXJ,EAActoB,UAAU6nB,YAAc,SAAUnM,GAC5C,OAAO5b,KAAKyoB,MAAMI,IAAIjN,IAE1B4M,EAActoB,UAAU4oB,MAAQ,WAC5B9oB,KAAKyoB,MAAMK,SAERN,EA1BuB,GCS9BO,GAAoC,WACpC,SAASA,EAAmB7mB,EAAQ8mB,GAChChpB,KAAKipB,cAAgB,IAAIT,GACzBxoB,KAAKkpB,eAAiB,IAAI7C,GAC1BrmB,KAAKkC,OAASA,EACdlC,KAAKgpB,UAAYA,EAqLrB,OAnLAD,EAAmB7oB,UAAUipB,0BAA4B,SAAU7iB,GAC/D,KAAIA,aAAiB8Y,IAAoB9Y,EAAM2M,YAAcuJ,GAAwBqC,oBAAoB/L,MAIrG,MAAMxM,EAHNtG,KAAKkC,OAAOoE,MAAM,gJAW1ByiB,EAAmB7oB,UAAUgnB,QAAU,SAAUtL,GAC7C,OAAO5X,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIopB,EAAMjG,EACV,OAAOpe,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,GADA+jB,EAAOppB,KAAKipB,cAAc/B,QAAQtL,GAC5BwN,EAAM,MAAO,CAAC,EAAa,GACjCzN,EAAGtW,MAAQ,EACf,KAAK,EAGD,OAFAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACtBhG,KAAKkC,OAAOmnB,QAAQ,+EACb,CAAC,EAAarpB,KAAKkpB,eAAehC,QAAQtL,IACrD,KAAK,EAAG,MAAO,CAAC,EAAcD,EAAGrW,QACjC,KAAK,EAGD,OAFA6d,EAAMxH,EAAGrW,OACTtF,KAAKmpB,0BAA0BhG,GACxB,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,EAAciG,WAW9CL,EAAmB7oB,UAAUonB,QAAU,SAAU1L,EAAKtX,GAClD,OAAON,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIspB,EACJ,OAAOvkB,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EACDrF,KAAKipB,cAAc3B,QAAQ1L,EAAKtX,GAChCqX,EAAGtW,MAAQ,EACf,KAAK,EAED,OADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAahG,KAAKkpB,eAAe5B,QAAQ1L,EAAKtX,IAC1D,KAAK,EAED,OADAqX,EAAGrW,OACI,CAAC,EAAa,GACzB,KAAK,EAGD,OAFAgkB,EAAM3N,EAAGrW,OACTtF,KAAKmpB,0BAA0BG,GACxB,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,WAShCP,EAAmB7oB,UAAUwnB,WAAa,SAAU9L,GAChD,OAAO5X,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIupB,EACJ,OAAOxkB,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EACDrF,KAAKipB,cAAcvB,WAAW9L,GAC9BD,EAAGtW,MAAQ,EACf,KAAK,EAED,OADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAahG,KAAKkpB,eAAexB,WAAW9L,IACxD,KAAK,EAED,OADAD,EAAGrW,OACI,CAAC,EAAa,GACzB,KAAK,EAGD,OAFAikB,EAAM5N,EAAGrW,OACTtF,KAAKmpB,0BAA0BI,GACxB,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,WAShCR,EAAmB7oB,UAAU0nB,QAAU,WACnC,OAAO5jB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI4oB,EAAWY,EACf,OAAOzkB,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,GADAujB,EAAY5oB,KAAKipB,cAAcrB,UACJ,IAArBgB,EAAUvnB,OAAe,MAAO,CAAC,EAAa,GACpDsa,EAAGtW,MAAQ,EACf,KAAK,EAGD,OAFAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACtBhG,KAAKkC,OAAOmnB,QAAQ,8DACb,CAAC,EAAarpB,KAAKkpB,eAAetB,WAC7C,KAAK,EAAG,MAAO,CAAC,EAAcjM,EAAGrW,QACjC,KAAK,EAGD,OAFAkkB,EAAM7N,EAAGrW,OACTtF,KAAKmpB,0BAA0BK,GACxB,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,EAAcZ,WAS9CG,EAAmB7oB,UAAU6nB,YAAc,SAAUnM,GACjD,OAAO5X,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI+nB,EAAa0B,EACjB,OAAO1kB,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,GADA0iB,EAAc/nB,KAAKipB,cAAclB,YAAYnM,GACvCmM,EAAa,MAAO,CAAC,EAAa,GACxCpM,EAAGtW,MAAQ,EACf,KAAK,EAGD,OAFAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACtBhG,KAAKkC,OAAOmnB,QAAQ,sEACb,CAAC,EAAarpB,KAAKkpB,eAAenB,YAAYnM,IACzD,KAAK,EAAG,MAAO,CAAC,EAAcD,EAAGrW,QACjC,KAAK,EAGD,OAFAmkB,EAAM9N,EAAGrW,OACTtF,KAAKmpB,0BAA0BM,GACxB,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,EAAc1B,WAQ9CgB,EAAmB7oB,UAAU4oB,MAAQ,WACjC,OAAO9kB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI0pB,EAAWC,EACf,OAAO5kB,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAEDrF,KAAKkC,OAAOmnB,QAAQ,+BAAiCrpB,KAAKgpB,WAC1DhpB,KAAKipB,cAAcH,QACnB9oB,KAAKkC,OAAOmnB,QAAQ,sBAAwBrpB,KAAKgpB,UAAY,YAC7DhpB,KAAKkC,OAAOmnB,QAAQ,gCAAkCrpB,KAAKgpB,WAC3DrN,EAAGtW,MAAQ,EACf,KAAK,EAED,OADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAahG,KAAKkpB,eAAehB,kBAC7C,KAAK,EAKD,OAJAwB,EAAY/N,EAAGrW,OACXokB,GACA1pB,KAAKkC,OAAOmnB,QAAQ,uBAAyBrpB,KAAKgpB,UAAY,YAE3D,CAAC,EAAcU,GAC1B,KAAK,EAGD,OAFAC,EAAMhO,EAAGrW,OACTtF,KAAKmpB,0BAA0BQ,GACxB,CAAC,GAAc,GAC1B,KAAK,EAAG,MAAO,CAAC,WAKzBZ,EA1L4B,IdIvC,SAAWhb,GACPA,EAAoB,kBAAoB,iBACxCA,EAAoB,iBAAmB,iBAF3C,CAGGA,KAAwBA,GAAsB,KAKjD,IefI3O,GfeAwqB,GAA2B,WAC3B,SAASA,EAAU1nB,EAAQ2nB,GACvB7pB,KAAKkC,OAASA,EAEdlC,KAAK8pB,cAAgB,IAAIrG,GAAczjB,KAAKkC,QAC5ClC,KAAK+pB,UAAY,IAAIlZ,GACrB7Q,KAAKgqB,UAAY,IAAIlY,GACrB9R,KAAKiqB,cAAgB,IAAIzb,GAAcxO,KAAK8pB,eAC5C9pB,KAAKkqB,cAAgB,IAAI3H,GAAcviB,KAAK8pB,eAC5C9pB,KAAKyoB,MAAQ,CACT0B,eAAgB,IAAIpB,GAAmB/oB,KAAKkC,OAAQ6L,GAAoBoc,gBACxEC,cAAe,IAAIrB,GAAmB/oB,KAAKkC,OAAQ6L,GAAoBqc,gBAE3EpqB,KAAK6pB,kBAAoBA,EAmN7B,OA7MAD,EAAU1pB,UAAUmqB,cAAgB,WAChC,OAAOrqB,KAAKiqB,cAAcvb,gBAM9Bkb,EAAU1pB,UAAUsiB,aAAe,SAAUzR,GACzC,OAAO/Q,KAAK+pB,UAAU9Y,OAAOF,IAMjC6Y,EAAU1pB,UAAUoqB,aAAe,SAAUvZ,GACzC,OAAO/Q,KAAKgqB,UAAUjY,OAAOhB,IAKjC6Y,EAAU1pB,UAAUqqB,kBAAoB,WACpC,OAAOvmB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,MAAO,CAAC,EAAc3b,KAAKkqB,cAAczH,wBAQrDmH,EAAU1pB,UAAUsqB,uBAAyB,SAAUroB,GACnD,IAAIwZ,EACJ,OAAO3X,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIyqB,EAA2BC,EAASC,EAAcC,EAAoBC,EAAiBC,EAAeC,EAAeC,EACzH,OAAOjmB,EAAY/E,MAAM,SAAUirB,GAC/B,OAAQA,EAAG5lB,OACP,KAAK,EAED,OADAolB,EAA8D,QAAjC9O,EAAK3b,KAAK6pB,yBAAsC,IAAPlO,OAAgB,EAASA,EAAGuP,iBAAiBrnB,EAAkBsnB,iCAAkChpB,EAAQoR,eACxK,CAAC,EAAavT,KAAK8pB,cAAczF,gBAAgBuF,EAAUwB,YAAaxB,EAAUyB,iBAC7F,KAAK,EAED,OADAX,EAAUO,EAAG3lB,OACN,CAAC,EAAatF,KAAK8pB,cAAcnF,UAAU+F,EAAQY,YAC9D,KAAK,EAQD,OAPAX,EAAeM,EAAG3lB,OAClBslB,EAAqB,CACjBlmB,EAAGimB,EAAajmB,EAChB6mB,IAAKZ,EAAaY,IAClBpqB,EAAGwpB,EAAaxpB,GAEpB0pB,EAAkBpH,GAAcwB,aAAa2F,GACtC,CAAC,EAAa5qB,KAAKwrB,WAAWX,IACzC,KAAK,EAED,OADAC,EAAgBG,EAAG3lB,OACZ,CAAC,EAAatF,KAAK8pB,cAAcnF,UAAU+F,EAAQe,aAC9D,KAAK,EAED,OADAV,EAAgBE,EAAG3lB,OACZ,CAAC,EAAatF,KAAK8pB,cAAchF,UAAUiG,GAAe,EAAO,CAAC,UAC7E,KAAK,EAGD,OAFAC,EAA0BC,EAAG3lB,OAEtB,CAAC,EAAatF,KAAKyoB,MAAM0B,eAAe7C,QAAQwD,EAAe,CAC9DW,WAAYT,EACZM,UAAWZ,EAAQY,UACnBI,cAAevpB,EAAQwpB,sBACvBC,WAAYzpB,EAAQ0pB,sBAEhC,KAAK,EAQD,OANAZ,EAAG3lB,OACCmlB,GACAA,EAA0BqB,eAAe,CACrCC,SAAS,IAGV,CAAC,EAAcjB,WAS1ClB,EAAU1pB,UAAU8rB,sBAAwB,SAAUC,GAClD,OAAOjoB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIksB,EACJ,OAAOnnB,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAAG,MAAO,CAAC,EAAarF,KAAKyoB,MAAM0B,eAAezC,WAAWuE,IAClE,KAAK,EAED,OADAtQ,EAAGrW,OACI,CAAC,EAAatF,KAAKyoB,MAAM0B,eAAepC,YAAYkE,IAC/D,KAAK,EAED,OADAC,EAAWvQ,EAAGrW,OACP,CAAC,GAAe4mB,WAQ3CtC,EAAU1pB,UAAUisB,cAAgB,WAChC,OAAOnoB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAImjB,EACJ,OAAOpe,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAGD,OAFAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACtBhG,KAAKkC,OAAOmnB,QAAQ,2DACb,CAAC,EAAarpB,KAAKyoB,MAAM0B,eAAerB,SACnD,KAAK,EAID,OAHAnN,EAAGrW,OACHtF,KAAKkC,OAAOmnB,QAAQ,8CACpBrpB,KAAKkC,OAAOmnB,QAAQ,0DACb,CAAC,EAAarpB,KAAKyoB,MAAM2B,cAActB,SAClD,KAAK,EAGD,OAFAnN,EAAGrW,OACHtF,KAAKkC,OAAOmnB,QAAQ,6CACb,CAAC,GAAc,GAC1B,KAAK,EAQD,OAPAlG,EAAMxH,EAAGrW,OACL6d,aAAeviB,MACfZ,KAAKkC,OAAOoE,MAAM,wCAA0C6c,EAAIiJ,SAGhEpsB,KAAKkC,OAAOoE,MAAM,+CAEf,CAAC,GAAc,GAC1B,KAAK,EAAG,MAAO,CAAC,WAUhCsjB,EAAU1pB,UAAUmsB,QAAU,SAAU9E,EAAS0E,EAAK1Y,GAClD,IAAIoI,EACJ,OAAO3X,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIssB,EAAoBC,EAAe5B,EAAc6B,EAAoBzpB,EAAQ0pB,EAAeC,EAAgBC,EAAaC,EAAaC,EAAiBC,EAAkBC,EAC7K,OAAOhoB,EAAY/E,MAAM,SAAUirB,GAC/B,OAAQA,EAAG5lB,OACP,KAAK,EAED,OADAinB,EAAuD,QAAjC3Q,EAAK3b,KAAK6pB,yBAAsC,IAAPlO,OAAgB,EAASA,EAAGuP,iBAAiBrnB,EAAkBmpB,kBAAmBzZ,GAC1I,CAAC,EAAavT,KAAKyoB,MAAM0B,eAAejD,QAAQ+E,IAC3D,KAAK,EAED,GADAM,EAAgBtB,EAAG3lB,QACdinB,EACD,MAAMnN,GAAiBuC,uCAAuCsK,GAElE,MAAO,CAAC,EAAajsB,KAAK8pB,cAAcnF,UAAU4H,EAAcjB,YACpE,KAAK,EAeD,OAdAX,EAAeM,EAAG3lB,OAClBknB,EAAqB/I,GAAcwB,aAAa0F,GAChD5nB,EAAS,CACLkqB,IAAKtC,EAAasC,IAClBC,KAAMpf,IAEV2e,EAAgBzsB,KAAK+pB,UAAUjZ,UAAUwJ,KAAKC,UAAUxX,IAExDwkB,EAAQ4F,IAAM,CACVhH,IAAK7L,KAAKS,MAAMyR,IAEpBE,EAAiB1sB,KAAK+pB,UAAUjZ,UAAUwJ,KAAKC,UAAUgN,IACzDoF,EAAcF,EAAgB,IAAMC,EACpCE,EAAcrd,GAAmBW,oBAAoByc,GAC9C,CAAC,EAAa3sB,KAAK8pB,cAAc1E,KAAKmH,EAAcd,WAAYmB,IAC3E,KAAK,EASD,OARAC,EAAkB5B,EAAG3lB,OACrBwnB,EAAmB9sB,KAAK+pB,UAAU5Y,aAAa,IAAIvC,WAAWie,IAC9DE,EAAYJ,EAAc,IAAMG,EAC5BR,GACAA,EAAmBR,eAAe,CAC9BC,SAAS,IAGV,CAAC,EAAcgB,WAS1CnD,EAAU1pB,UAAUsrB,WAAa,SAAU4B,GACvC,OAAOppB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIqtB,EAAYC,EAChB,OAAOvoB,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAAG,MAAO,CAAC,EAAarF,KAAK8pB,cAAc1G,aAAagK,IAC7D,KAAK,EAGD,OAFAC,EAAa1R,EAAGrW,OAChBgoB,EAAY,IAAI1e,WAAWye,GACpB,CAAC,EAAcrtB,KAAK+pB,UAAU5Y,aAAamc,YAKtE1D,EAAUyB,eAAiB,CAAC,OAAQ,UACpCzB,EAAUwB,aAAc,EACjBxB,EAhOmB,Ied9B,SAAWxqB,GACPA,EAASA,EAAS,SAAW,GAAK,QAClCA,EAASA,EAAS,WAAa,GAAK,UACpCA,EAASA,EAAS,QAAU,GAAK,OACjCA,EAASA,EAAS,WAAa,GAAK,UACpCA,EAASA,EAAS,SAAW,GAAK,SALtC,CAMGA,KAAaA,GAAW,KAI3B,ICdImuB,GDcAC,GAAwB,WACxB,SAASA,EAAOC,EAAeC,EAAaC,GAExC3tB,KAAK4tB,MAAQxuB,GAASyuB,KACtB,IAAIC,EAAwB,aAG5B9tB,KAAK+tB,cAAgBN,EAAcO,gBAAkBF,EACrD9tB,KAAKiuB,kBAAoBR,EAAcQ,oBAAqB,EAC5DjuB,KAAK4tB,MAA4C,kBAA5BH,EAAsB,SAAiBA,EAAcS,SAAW9uB,GAASyuB,KAC9F7tB,KAAKuT,cAAgBka,EAAcla,eAAiBnM,EAAUyB,aAC9D7I,KAAK0tB,YAAcA,GAAetmB,EAAUyB,aAC5C7I,KAAK2tB,eAAiBA,GAAkBvmB,EAAUyB,aAiJtD,OA5IA2kB,EAAOttB,UAAUiuB,MAAQ,SAAUT,EAAaC,EAAgBpa,GAC5D,OAAO,IAAIia,EAAO,CAAEQ,eAAgBhuB,KAAK+tB,cAAeE,kBAAmBjuB,KAAKiuB,kBAAmBC,SAAUluB,KAAK4tB,MAAOra,cAAeA,GAAiBvT,KAAKuT,eAAiBma,EAAaC,IAKhMH,EAAOttB,UAAUkuB,WAAa,SAAUA,EAAYxsB,GAChD,KAAKA,EAAQssB,SAAWluB,KAAK4tB,QAAY5tB,KAAKiuB,mBAAqBrsB,EAAQysB,aAA3E,CAGA,IAEIC,EAFAC,GAAY,IAAIC,MAAOC,cAUvBH,EAPCvU,GAAYG,QAAQtY,EAAQ2R,eAGvBwG,GAAYG,QAAQla,KAAKuT,eAInB,IAAMgb,EAAY,IAHlB,IAAMA,EAAY,QAAUvuB,KAAKuT,cAAgB,IAHjD,IAAMgb,EAAY,QAAU3sB,EAAQ2R,cAAgB,IAQpE,IAAI7P,EAAM4qB,EAAY,MAAQtuB,KAAK0tB,YAAc,IAAM1tB,KAAK2tB,eAAiB,MAAQvuB,GAASwC,EAAQssB,UAAY,MAAQE,EAE1HpuB,KAAK0uB,gBAAgB9sB,EAAQssB,SAAUxqB,EAAK9B,EAAQysB,cAAe,KAKvEb,EAAOttB,UAAUwuB,gBAAkB,SAAUd,EAAOxB,EAASiC,GACrDruB,KAAK+tB,eACL/tB,KAAK+tB,cAAcH,EAAOxB,EAASiC,IAM3Cb,EAAOttB,UAAUoG,MAAQ,SAAU8lB,EAAS7Y,GACxCvT,KAAKouB,WAAWhC,EAAS,CACrB8B,SAAU9uB,GAASwB,MACnBytB,aAAa,EACb9a,cAAeA,GAAiBnM,EAAUyB,gBAMlD2kB,EAAOttB,UAAUyuB,SAAW,SAAUvC,EAAS7Y,GAC3CvT,KAAKouB,WAAWhC,EAAS,CACrB8B,SAAU9uB,GAASwB,MACnBytB,aAAa,EACb9a,cAAeA,GAAiBnM,EAAUyB,gBAMlD2kB,EAAOttB,UAAU0uB,QAAU,SAAUxC,EAAS7Y,GAC1CvT,KAAKouB,WAAWhC,EAAS,CACrB8B,SAAU9uB,GAASuE,QACnB0qB,aAAa,EACb9a,cAAeA,GAAiBnM,EAAUyB,gBAMlD2kB,EAAOttB,UAAU2uB,WAAa,SAAUzC,EAAS7Y,GAC7CvT,KAAKouB,WAAWhC,EAAS,CACrB8B,SAAU9uB,GAASuE,QACnB0qB,aAAa,EACb9a,cAAeA,GAAiBnM,EAAUyB,gBAMlD2kB,EAAOttB,UAAU4uB,KAAO,SAAU1C,EAAS7Y,GACvCvT,KAAKouB,WAAWhC,EAAS,CACrB8B,SAAU9uB,GAASyuB,KACnBQ,aAAa,EACb9a,cAAeA,GAAiBnM,EAAUyB,gBAMlD2kB,EAAOttB,UAAU6uB,QAAU,SAAU3C,EAAS7Y,GAC1CvT,KAAKouB,WAAWhC,EAAS,CACrB8B,SAAU9uB,GAASyuB,KACnBQ,aAAa,EACb9a,cAAeA,GAAiBnM,EAAUyB,gBAMlD2kB,EAAOttB,UAAUmpB,QAAU,SAAU+C,EAAS7Y,GAC1CvT,KAAKouB,WAAWhC,EAAS,CACrB8B,SAAU9uB,GAAS4vB,QACnBX,aAAa,EACb9a,cAAeA,GAAiBnM,EAAUyB,gBAMlD2kB,EAAOttB,UAAU+uB,WAAa,SAAU7C,EAAS7Y,GAC7CvT,KAAKouB,WAAWhC,EAAS,CACrB8B,SAAU9uB,GAAS4vB,QACnBX,aAAa,EACb9a,cAAeA,GAAiBnM,EAAUyB,gBAMlD2kB,EAAOttB,UAAUgvB,MAAQ,SAAU9C,EAAS7Y,GACxCvT,KAAKouB,WAAWhC,EAAS,CACrB8B,SAAU9uB,GAAS+vB,MACnBd,aAAa,EACb9a,cAAeA,GAAiBnM,EAAUyB,gBAMlD2kB,EAAOttB,UAAUkvB,SAAW,SAAUhD,EAAS7Y,GAC3CvT,KAAKouB,WAAWhC,EAAS,CACrB8B,SAAU9uB,GAAS+vB,MACnBd,aAAa,EACb9a,cAAeA,GAAiBnM,EAAUyB,gBAMlD2kB,EAAOttB,UAAUmvB,oBAAsB,WACnC,OAAOrvB,KAAKiuB,oBAAqB,GAE9BT,EA7JgB,GEdvB8B,GAAmC,WAYnC,SAASA,EAAkBC,EAAUC,EAAWttB,EAAQutB,EAAaC,EAAgBC,GACjF3vB,KAAKwvB,UAAYA,EACjBxvB,KAAKyvB,YAAcA,EACnBzvB,KAAK0vB,eAAiBA,EACtB1vB,KAAK2vB,qBAAuBA,EAC5B3vB,KAAKuvB,SAAWA,EAChBvvB,KAAKkC,OAASA,EACdlC,KAAK4vB,UAAY,IAAIlH,IACrB1oB,KAAK6vB,sBAAwB,IAAInH,IACjC1oB,KAAK8vB,iBAAmB,IAAIpH,IAgPhC,OAvOA4G,EAAkBpvB,UAAUgrB,iBAAmB,SAAU6E,EAAaxc,GAClE,IACIoI,EAAIsP,EADJxqB,EAAQT,KAGRgwB,EAAqBzc,GAAiBvT,KAAKiwB,aAC1C1c,GACDvT,KAAKkC,OAAO4sB,KAAK,qDAAuDiB,EAAc,eAAgBC,GAE1GhwB,KAAKkC,OAAOgtB,MAAM,0DAA4Da,EAAaC,GAC3F,IAAIE,EAAyBlwB,KAAKmwB,6BAA6BJ,EAAaC,GAC5EE,EAAuBhF,mBACvB,IAAIkF,EAAkB,CAClBC,QAASrwB,KAAKiwB,aACd3sB,OAAQQ,EAAuBwsB,WAC/Bd,UAAWxvB,KAAKwvB,UAChBC,YAAazvB,KAAKyvB,YAClBC,eAAgB1vB,KAAK0vB,eACrBa,QAA8C,QAApC5U,EAAK3b,KAAK2vB,4BAAyC,IAAPhU,OAAgB,EAASA,EAAG4U,QAClFC,WAAiD,QAApCvF,EAAKjrB,KAAK2vB,4BAAyC,IAAP1E,OAAgB,EAASA,EAAGuF,WACrFjB,SAAUvvB,KAAKuvB,SACflc,KAAM0c,EACNU,YAAajC,KAAKkC,MAClBnd,cAAeyc,GAMnB,OAHAhwB,KAAK2wB,0BAA0BP,GAC/BpwB,KAAK4wB,iBAAiBR,EAAiBF,GAEhC,CACHpE,eAAgB,SAAUlF,GACtB,IAAIiK,EAAiBpwB,EAAMqrB,eAAe,EAAS,EAAS,GAAIsE,GAAkBxJ,IAKlF,OAJIiK,GAEApwB,EAAMkwB,0BAA0BE,GAE7BA,GAEXC,iBAAkB,WACd,OAAOrwB,EAAMswB,kBAAkBX,EAAgB/c,KAAM+c,EAAgB7c,gBAEzEyd,mBAAoB,WAChB,OAAOvwB,EAAMwwB,oBAAoBb,EAAgB7c,gBAErD2d,YAAahB,EACbtJ,MAAOwJ,IAUfd,EAAkBpvB,UAAU4rB,eAAiB,SAAUlF,GACnD,IAAIsJ,EAAyBlwB,KAAK8vB,iBAAiBpuB,IAAIklB,EAAMyJ,SAC7D,GAAIH,EAAwB,CAExBlwB,KAAK8vB,iBAAiB9tB,OAAO4kB,EAAMyJ,SACnCH,EAAuBpE,iBACvB,IAAIqF,EAAajB,EAAuBY,mBAExC,GAAmB,OAAfK,EAAqB,CACrBnxB,KAAKkC,OAAOgtB,MAAM,wDAA0DtI,EAAMvT,KAAO,KAAO8d,EAAa,MAAOvK,EAAMrT,eAC1H,IAAIsd,EAAiB,EAAS,EAAS,CAEnCM,WAAYliB,KAAKmiB,MAAMD,IAAevK,GAAQ,CAAEtjB,OAAQQ,EAAuButB,YACnF,OAAOR,EAGP7wB,KAAKkC,OAAOgtB,MAAM,uDAAwDtI,EAAMrT,oBAIpFvT,KAAKkC,OAAOgtB,MAAM,gDAAkDtI,EAAMyJ,QAASzJ,EAAMrT,eAE7F,OAAO,MAWX+b,EAAkBpvB,UAAUywB,0BAA4B,SAAU/J,GAC9D,IAAI0K,EAAiBtxB,KAAK6vB,sBAAsBnuB,IAAIklB,EAAMrT,eACtD+d,GACAtxB,KAAKkC,OAAOgtB,MAAM,kDAAoDtI,EAAMvT,KAAO,iBAAkBuT,EAAMrT,eAC3G+d,EAAe3I,IAAI/B,EAAMyJ,QAASzJ,KAGlC5mB,KAAKkC,OAAOgtB,MAAM,kDAAoDtI,EAAMvT,KAAO,WAAYuT,EAAMrT,eACrGvT,KAAK6vB,sBAAsBlH,IAAI/B,EAAMrT,eAAe,IAAImV,KAAMC,IAAI/B,EAAMyJ,QAASzJ,MAUzF0I,EAAkBpvB,UAAU0wB,iBAAmB,SAAUhK,EAAOsK,GAC5DlxB,KAAK8vB,iBAAiBnH,IAAI/B,EAAMyJ,QAASa,IAQ7C5B,EAAkBpvB,UAAU6wB,kBAAoB,SAAUhB,EAAaxc,GACnE,IAAI9S,EAAQT,KACZA,KAAKkC,OAAOgtB,MAAM,2DAA6Da,EAAaxc,GAC5F,IAAIge,EAAyBvxB,KAAK6vB,sBAAsBnuB,IAAI6R,GAC5D,GAAIge,EAAwB,CACxBvxB,KAAKixB,oBAAoB1d,GAMzB,IAAIie,EAAoB,GACxBD,EAAuBzuB,SAAQ,SAAU8jB,GACrC,GAAIA,EAAMvT,OAAS0c,GAAenJ,EAAMtjB,SAAWQ,EAAuButB,UAAW,CACjF5wB,EAAMyB,OAAOgtB,MAAM,gDAAkDtI,EAAMvT,KAAO,cAAgB0c,EAAaxc,GAC/G,IAAIsd,EAAiBpwB,EAAMqrB,eAAelF,GACtCiK,GACAW,EAAkBxrB,KAAK6qB,GAG/BW,EAAkBxrB,KAAK4gB,MAG3B,IAAI6K,EAAwBD,EAAkBpL,MAAK,SAAUsL,EAAQC,GAAU,OAAOD,EAAOjB,YAAckB,EAAOlB,eAE9GmB,EAAiBH,EAAsBvV,QAAO,SAAU0K,GAAS,OAAOA,EAAMvT,OAAS0c,GAAenJ,EAAMtjB,SAAWQ,EAAuButB,aAClJ,GAAIO,EAAevwB,OAAS,EAAG,CAKvBuwB,EAAevwB,OAAS,GACxBrB,KAAKkC,OAAOmnB,QAAQ,2FAA4F9V,GAEpH,IAAIse,EAAgBD,EAAe,GACnC5xB,KAAKkC,OAAOmnB,QAAQ,4CAA8C0G,EAAaxc,GAE/E,IAAIue,EAAcL,EAAsBM,QAAO,SAAUC,EAAUC,GAC/D,GAAIA,EAAQ5e,OAAS0c,EAAa,CAC9BtvB,EAAMyB,OAAOgtB,MAAM,wDAA0D+C,EAAQ5e,KAAME,GAE3F,IAAI2e,EAAqBD,EAAQ5e,KAAO,aAMnC2e,EAASE,GAIVzxB,EAAMyB,OAAOmnB,QAAQ,yCAA2C0G,EAAc,uBAAyBkC,EAAQ5e,KAAO,aAAcE,GAHpIye,EAASE,GAAsBD,EAAQd,WAM/C,OAAOa,IACRH,GACH7xB,KAAKmyB,WAAW,CAACL,GAAcA,EAAYve,oBAG3CvT,KAAKkC,OAAOmnB,QAAQ,oEAAsE0G,EAAaxc,QAI3GvT,KAAKkC,OAAOmnB,QAAQ,2CAA4C9V,IAQxE+b,EAAkBpvB,UAAU+wB,oBAAsB,SAAU1d,GACxDvT,KAAKkC,OAAOgtB,MAAM,wDAAyD3b,GAC3EvT,KAAK6vB,sBAAsB7tB,OAAOuR,IAQtC+b,EAAkBpvB,UAAUkyB,uBAAyB,SAAUC,GAC3D,IAAIC,EAAatyB,KAAKiwB,aAGtB,OAFAjwB,KAAK4vB,UAAUjH,IAAI2J,EAAYD,GAC/BryB,KAAKkC,OAAOmnB,QAAQ,+DAAiEiJ,GAC9EA,GAQXhD,EAAkBpvB,UAAUqyB,0BAA4B,SAAUD,GAC9D,IAAI1tB,EAAS5E,KAAK4vB,UAAU5tB,OAAOswB,GAOnC,OANI1tB,EACA5E,KAAKkC,OAAOmnB,QAAQ,2CAA6CiJ,EAAa,aAG9EtyB,KAAKkC,OAAOmnB,QAAQ,2CAA6CiJ,EAAa,iBAE3E1tB,GAQX0qB,EAAkBpvB,UAAUiyB,WAAa,SAAUK,EAAQjf,GACvD,IAAI9S,EAAQT,KACZA,KAAKkC,OAAOmnB,QAAQ,iDAAkD9V,GACtEvT,KAAK4vB,UAAU9sB,SAAQ,SAAUuvB,EAAUC,GACvC7xB,EAAMyB,OAAOgtB,MAAM,iDAAmDoD,EAAY/e,GAClF8e,EAAStuB,MAAM,KAAM,CAACyuB,QAGvBlD,EArQ2B,GCAlCmD,GAA4C,WAC5C,SAASA,KAST,OANAA,EAA2BvyB,UAAUgrB,iBAAmB,aAExDuH,EAA2BvyB,UAAU4rB,eAAiB,aACtD2G,EAA2BvyB,UAAU4wB,iBAAmB,WACpD,OAAO,MAEJ2B,EAVoC,GAY3CC,GAAuC,SAAUryB,GAEjD,SAASqyB,IACL,OAAkB,OAAXryB,GAAmBA,EAAO0D,MAAM/D,KAAMoB,YAAcpB,KAQ/D,OAVA,EAAU0yB,EAAuBryB,GAIjCqyB,EAAsBxyB,UAAU+vB,WAAa,WACzC,MAAO,eAEXyC,EAAsBxyB,UAAUiwB,6BAA+B,WAC3D,OAAO,IAAIsC,IAERC,EAX+B,CAYxCpD,ICxBEqD,GAAgC,CAChCtI,cAAe,WACX,IAAIuI,EAAa,8DACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CtI,aAAc,WACV,IAAIsI,EAAa,6DACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CpQ,aAAc,WACV,IAAIoQ,EAAa,6DACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CrI,kBAAmB,WACf,OAAO,EAAUvqB,UAAM,OAAQ,GAAQ,WACnC,IAAI4yB,EACJ,OAAO,EAAY5yB,MAAM,SAAU2b,GAE/B,MADAiX,EAAa,kEACP5f,GAAUQ,sBAAsBof,UAIlDpI,uBAAwB,WACpB,OAAO,EAAUxqB,UAAM,OAAQ,GAAQ,WACnC,IAAI4yB,EACJ,OAAO,EAAY5yB,MAAM,SAAU2b,GAE/B,MADAiX,EAAa,uEACP5f,GAAUQ,sBAAsBof,UAIlD5G,sBAAuB,WACnB,OAAO,EAAUhsB,UAAM,OAAQ,GAAQ,WACnC,IAAI4yB,EACJ,OAAO,EAAY5yB,MAAM,SAAU2b,GAE/B,MADAiX,EAAa,sEACP5f,GAAUQ,sBAAsBof,UAIlDzG,cAAe,WACX,OAAO,EAAUnsB,UAAM,OAAQ,GAAQ,WACnC,IAAI4yB,EACJ,OAAO,EAAY5yB,MAAM,SAAU2b,GAE/B,MADAiX,EAAa,8DACP5f,GAAUQ,sBAAsBof,UAIlDvG,QAAS,WACL,OAAO,EAAUrsB,UAAM,OAAQ,GAAQ,WACnC,IAAI4yB,EACJ,OAAO,EAAY5yB,MAAM,SAAU2b,GAE/B,MADAiX,EAAa,wDACP5f,GAAUQ,sBAAsBof,UAIlDpH,WAAY,WACR,OAAO,EAAUxrB,UAAM,OAAQ,GAAQ,WACnC,IAAI4yB,EACJ,OAAO,EAAY5yB,MAAM,SAAU2b,GAE/B,MADAiX,EAAa,2DACP5f,GAAUQ,sBAAsBof,WC5DlDC,GAA6B,SAAUxyB,GAEvC,SAASwyB,EAAY5f,EAAW3S,EAAc8S,GAC1C,IAAI3S,EAAQJ,EAAOM,KAAKX,KAAMiT,EAAW3S,EAAc8S,IAAapT,KAGpE,OAFAS,EAAM4S,KAAO,cACb9T,OAAOC,eAAeiB,EAAOoyB,EAAY3yB,WAClCO,EAEX,OAPA,EAAUoyB,EAAaxyB,GAOhBwyB,EARqB,CAS9B7f,ICTE8f,GAAwC,CACxC,uBACA,mBACA,kBAEAC,GAAyC,CACzC,eACA,oBACA,eACA,wBACA,oBAKAC,GAAsC,CACtCve,mBAAoB,CAChB3B,KAAM,kBACNC,KAAM,yDAMVkgB,GAA8C,SAAU5yB,GAExD,SAAS4yB,EAA6BhgB,EAAW3S,EAAc8S,GAC3D,IAAI3S,EAAQJ,EAAOM,KAAKX,KAAMiT,EAAW3S,EAAc8S,IAAapT,KAGpE,OAFAS,EAAM4S,KAAO,+BACb9T,OAAOC,eAAeiB,EAAOwyB,EAA6B/yB,WACnDO,EAsBX,OA3BA,EAAUwyB,EAA8B5yB,GAaxC4yB,EAA6BC,2BAA6B,SAAUjgB,EAAWE,EAAaC,GACxF,IAAI+f,IAAmClgB,GAAa6f,GAAsC5X,QAAQjI,IAAc,EAC5GmgB,IAAkChgB,GAAY2f,GAAuC7X,QAAQ9H,IAAa,EAC1GigB,IAAmClgB,GAAe2f,GAAsCQ,MAAK,SAAUC,GACvG,OAAOpgB,EAAY+H,QAAQqY,IAAgB,KAE/C,OAAOJ,GAAkCE,GAAkCD,GAK/EH,EAA6BO,yBAA2B,WACpD,OAAO,IAAIP,EAA6BD,GAAoCve,mBAAmB3B,KAAMkgB,GAAoCve,mBAAmB1B,OAEzJkgB,EA5BsC,CA6B/CjgB;;AClDF,SAASygB,GAAgBC,EAAetP,GACpC,GAAIrK,GAAYG,QAAQwZ,GACpB,MAAMld,GAAgBG,6BAE1B,IACI,IAAIgd,EAAoBvP,EAAOkG,aAAaoJ,GAC5C,OAAOpZ,KAAKS,MAAM4Y,GAEtB,MAAOjvB,GACH,MAAM8R,GAAgBC,8BAA8B/R,IAO5D,SAASkvB,GAAiCC,GACtC,GAAI9Z,GAAYG,QAAQ2Z,GACpB,MAAMrd,GAAgBC,8BAA8B,8BAExD,IAAIqd,EAAkBD,EAAczc,MAAMjN,EAAW4pB,sBAAuB,GAC5E,MAAO,CACHC,IAAKF,EAAgB,GACrBG,KAAMH,EAAgBzyB,OAAS,EAAI+F,EAAUyB,aAAeirB,EAAgB,KN5BpF,SAAWvG,GACPA,EAAcA,EAAc,WAAa,GAAK,UAC9CA,EAAcA,EAAc,QAAU,GAAK,QAF/C,CAGGA,KAAkBA,GAAgB;;AOuBrC,IC9BI2G,GD8BAC,GAA+B,WAC/B,SAASA,KA4MT,OAvMAA,EAAcj0B,UAAUk0B,kBAAoB,WACxC,IAAIC,EAAY,CAACr0B,KAAK6zB,cAAe7zB,KAAKs0B,aAC1C,OAAOD,EAAUrO,KAAK7b,EAAWoqB,qBAAqBC,eAK1DL,EAAcj0B,UAAUu0B,mBAAqB,WACzC,OAAON,EAAcO,wBAAwB,CACzCb,cAAe7zB,KAAK6zB,cACpBS,YAAat0B,KAAKs0B,YAClBK,SAAU30B,KAAK40B,MACfC,SAAU70B,KAAK60B,SACfC,eAAgB90B,KAAK80B,kBAM7BX,EAAcj0B,UAAU60B,aAAe,WACnC,OAAQ/0B,KAAKg1B,eACT,KAAK9qB,EAAiB+qB,kBAClB,OAAO3qB,EAAU3C,KACrB,KAAKuC,EAAiBgrB,mBAClB,OAAO5qB,EAAU6qB,IACrB,KAAKjrB,EAAiBkrB,mBAClB,OAAO9qB,EAAU+qB,MACrB,KAAKnrB,EAAiBorB,qBAClB,OAAOhrB,EAAUirB,QACrB,QACI,MAAM/e,GAAgB6C,qCAOlC8a,EAAcj0B,UAAUs1B,eAAiB,WACrC,MAAO,CACH3B,cAAe7zB,KAAK6zB,cACpBS,YAAat0B,KAAKs0B,YAClBK,SAAU30B,KAAK40B,MACfC,SAAU70B,KAAK60B,SACfC,eAAgB90B,KAAK80B,eACrBzhB,KAAMrT,KAAKqT,KACXoiB,cAAez1B,KAAKy1B,cACpBC,gBAAiB11B,KAAK01B,kBAO9BvB,EAAcO,wBAA0B,SAAUiB,GAC9C,IAAIC,EAAa,CACbD,EAAiB9B,cACjB8B,EAAiBrB,aAAeltB,EAAUyB,aAC1C8sB,EAAiBhB,UAAYvtB,EAAUyB,cAE3C,OAAO+sB,EAAW5P,KAAK7b,EAAWoqB,qBAAqBC,eAS3DL,EAAc0B,cAAgB,SAAUC,EAAYjC,EAAekC,EAASvG,EAAWwG,EAAcC,EAAoBC,EAAa5B,EAAaoB,GAC/I,IAAI/Z,EAAIsP,EAAIkL,EAAIC,EAAIC,EAAIC,EACpBC,EAAU,IAAIpC,EAClBoC,EAAQvB,cAAgB9qB,EAAiBkrB,mBACzCmB,EAAQT,WAAaA,EACrBS,EAAQ1C,cAAgBA,EACxB0C,EAAQb,gBAAkBA,EAC1B,IAAIc,EAAMlC,GAAgB9E,GAAaA,EAAUiH,oBACjD,IAAKD,EACD,MAAMhgB,GAAgBuC,qCAmB1B,OAjBAwd,EAAQjC,YAAckC,EAEtBD,EAAQ3B,OAAqF,QAA3EjZ,EAAiB,OAAZoa,QAAgC,IAAZA,OAAqB,EAASA,EAAQW,cAA2B,IAAP/a,OAAgB,EAASA,EAAGgb,MAAQvvB,EAAUyB,aACnJ0tB,EAAQP,aAAeA,EACnBD,IACAQ,EAAQd,cAAgBM,EAAQW,OAEhCH,EAAQzB,gBAA8F,QAA3E7J,EAAiB,OAAZ8K,QAAgC,IAAZA,OAAqB,EAASA,EAAQW,cAA2B,IAAPzL,OAAgB,EAASA,EAAG2L,OAAqF,QAA3ET,EAAiB,OAAZJ,QAAgC,IAAZA,OAAqB,EAASA,EAAQW,cAA2B,IAAPP,OAAgB,EAASA,EAAGU,MAAQzvB,EAAUyB,aAKrR0tB,EAAQ1B,UAAwF,QAA3EuB,EAAiB,OAAZL,QAAgC,IAAZA,OAAqB,EAASA,EAAQW,cAA2B,IAAPN,OAAgB,EAASA,EAAGU,uBAAqG,QAA3ET,EAAiB,OAAZN,QAAgC,IAAZA,OAAqB,EAASA,EAAQW,cAA2B,IAAPL,OAAgB,EAASA,EAAGU,QAAUhB,EAAQW,OAAOK,OAAO,GAAK3vB,EAAUyB,cAC5T0tB,EAAQljB,KAAmF,QAA3EijB,EAAiB,OAAZP,QAAgC,IAAZA,OAAqB,EAASA,EAAQW,cAA2B,IAAPJ,OAAgB,EAASA,EAAGjjB,MAEnIkjB,EAAQN,mBAAqBA,EAC7BM,EAAQL,YAAcA,EACfK,GAOXpC,EAAc6C,qBAAuB,SAAUnD,EAAekC,EAASvG,EAAWwG,EAAcC,EAAoBC,EAAa5B,GAC7H,IAAI3Y,EAAIsP,EAAIkL,EAAIC,EACZG,EAAU,IAAIpC,EAClBoC,EAAQvB,cAAiBxF,GAAaA,EAAUwF,gBAAkBzH,GAAc0J,KAAQ/sB,EAAiB+qB,kBAAoB/qB,EAAiBorB,qBAC9IiB,EAAQ1C,cAAgBA,EAExB0C,EAAQ3B,MAAQxtB,EAAUyB,aAC1B0tB,EAAQP,aAAeA,EACvB,IAAIQ,EAAMlC,GAAe9E,GAAaA,EAAUiH,oBAChD,IAAKD,EACD,MAAMhgB,GAAgBuC,qCAiB1B,OAfIgd,IAEAQ,EAAQzB,gBAA8F,QAA3EnZ,EAAiB,OAAZoa,QAAgC,IAAZA,OAAqB,EAASA,EAAQW,cAA2B,IAAP/a,OAAgB,EAASA,EAAGib,OAAqF,QAA3E3L,EAAiB,OAAZ8K,QAAgC,IAAZA,OAAqB,EAASA,EAAQW,cAA2B,IAAPzL,OAAgB,EAASA,EAAG4L,MAAQzvB,EAAUyB,aAErR0tB,EAAQ1B,UAAwF,QAA3EsB,EAAiB,OAAZJ,QAAgC,IAAZA,OAAqB,EAASA,EAAQW,cAA2B,IAAPP,OAAgB,EAASA,EAAGe,MAAQ9vB,EAAUyB,aACtJ0tB,EAAQljB,MAAoF,QAA3E+iB,EAAiB,OAAZL,QAAgC,IAAZA,OAAqB,EAASA,EAAQW,cAA2B,IAAPN,OAAgB,EAASA,EAAG/iB,OAASjM,EAAUyB,aACnJ0tB,EAAQd,cAA4B,OAAZM,QAAgC,IAAZA,OAAqB,EAASA,EAAQW,QAEtFH,EAAQjC,YAAckC,EACtBD,EAAQN,mBAAqBA,EAC7BM,EAAQL,YAAcA,EAKfK,GAOXpC,EAAcgD,sBAAwB,SAAUC,EAAkBC,EAAUn1B,EAAQuM,EAAWsnB,GAC3F,IAAIpa,EACA0Y,GAAyF,QAA3E1Y,EAAiB,OAAZoa,QAAgC,IAAZA,OAAqB,EAASA,EAAQW,cAA2B,IAAP/a,OAAgB,EAASA,EAAGkb,KAAOd,EAAQW,OAAOG,IAAMzvB,EAAUyB,aAEvK,GAAIwuB,IAAa9J,GAAc0J,KAC3B,OAAO5C,EAGX,GAAI+C,EACA,IACI,IAAItB,EAAarC,GAAgB2D,EAAkB3oB,GACnD,IAAKsL,GAAYG,QAAQ4b,EAAW9B,OAASja,GAAYG,QAAQ4b,EAAW7B,MACxE,MAAO,GAAK6B,EAAW9B,IAAM7pB,EAAW4pB,sBAAwB+B,EAAW7B,KAGnF,MAAOvvB,IAIX,OADAxC,EAAOmnB,QAAQ,8BACRgL,GAMXF,EAAcmD,gBAAkB,SAAUC,GACtC,QAAKA,IAGGA,EAAOz3B,eAAe,kBAC1By3B,EAAOz3B,eAAe,gBACtBy3B,EAAOz3B,eAAe,UACtBy3B,EAAOz3B,eAAe,mBACtBy3B,EAAOz3B,eAAe,aACtBy3B,EAAOz3B,eAAe,mBAQ9Bq0B,EAAcqD,mBAAqB,SAAUC,EAAUC,EAAUC,GAC7D,IAAKF,IAAaC,EACd,OAAO,EAEX,IAAIE,GAAc,EAClB,GAAID,EAAe,CACf,IAAIE,EAAkBJ,EAAShC,eAAiB,GAC5CqC,EAAkBJ,EAASjC,eAAiB,GAEhDmC,EAAeC,EAAeE,MAAQD,EAAeC,KAChDF,EAAeG,QAAUF,EAAeE,MAEjD,OAAQP,EAAS5D,gBAAkB6D,EAAS7D,eACvC4D,EAAS3C,iBAAmB4C,EAAS5C,gBACrC2C,EAAS5C,WAAa6C,EAAS7C,UAC/B4C,EAAS9C,WAAa+C,EAAS/C,UAC/B8C,EAASnD,cAAgBoD,EAASpD,aAClCmD,EAAS/B,kBAAoBgC,EAAShC,iBACvCkC,GAEDzD,EA7MuB,GEL9B8D,GAAkC,WAClC,SAASA,KA+HT,OA1HAA,EAAiB/3B,UAAUk0B,kBAAoB,WAC3C,OAAO6D,EAAiBC,6BAA6Bl4B,KAAK6zB,cAAe7zB,KAAKs0B,cAKlF2D,EAAiB/3B,UAAUi4B,qBAAuB,WAC9C,OAAOF,EAAiBG,gCAAgCp4B,KAAKq4B,eAAgBr4B,KAAKuvB,SAAUvvB,KAAK40B,MAAO50B,KAAKs4B,WAKjHL,EAAiB/3B,UAAUq4B,eAAiB,WACxC,OAAON,EAAiBO,0BAA0Bx4B,KAAK2lB,SAK3DsS,EAAiB/3B,UAAUu4B,sBAAwB,WAC/C,OAAOR,EAAiBS,2BAA2B14B,KAAK6zB,cAAe7zB,KAAKs0B,YAAat0B,KAAKq4B,eAAgBr4B,KAAKuvB,SAAUvvB,KAAK40B,MAAO50B,KAAK2lB,OAAQ3lB,KAAKs4B,SAAUt4B,KAAK24B,UAAW34B,KAAK44B,sBAK9LX,EAAiB/3B,UAAU60B,aAAe,WACtC,OAAQ/0B,KAAKq4B,gBACT,KAAKjuB,EAAeyuB,SAChB,OAAOvuB,EAAUuuB,SACrB,KAAKzuB,EAAe0uB,aACpB,KAAK1uB,EAAe2uB,8BAChB,OAAOzuB,EAAUwuB,aACrB,KAAK1uB,EAAe4uB,cAChB,OAAO1uB,EAAU0uB,cACrB,QACI,MAAMxiB,GAAgB8C,wCAQlC2e,EAAiBgB,kBAAoB,SAAUrd,GAE3C,OAAgE,IAA5DA,EAAIV,QAAQ9Q,EAAe0uB,aAAatE,gBAEyC,IAA7E5Y,EAAIV,QAAQ9Q,EAAe2uB,8BAA8BvE,eAClDpqB,EAAe2uB,8BAEnB3uB,EAAe0uB,cAEuC,IAAxDld,EAAIV,QAAQ9Q,EAAeyuB,SAASrE,eAClCpqB,EAAeyuB,UAE4C,IAA7Djd,EAAIV,QAAQ9Q,EAAe4uB,cAAcxE,eACvCpqB,EAAe4uB,cAEnB5xB,EAAUwB,aAMrBqvB,EAAiBS,2BAA6B,SAAU7E,EAAeS,EAAa+D,EAAgB9I,EAAUqF,EAAOjP,EAAQ2S,EAAUK,EAAWC,GAC9I,IAAIM,EAAgB,CAChBl5B,KAAKk4B,6BAA6BrE,EAAeS,GACjDt0B,KAAKo4B,gCAAgCC,EAAgB9I,EAAUqF,EAAO0D,GACtEt4B,KAAKw4B,0BAA0B7S,GAC/B3lB,KAAKm5B,8BAA8BP,GACnC54B,KAAKo5B,0BAA0BT,IAEnC,OAAOO,EAAclT,KAAK7b,EAAWoqB,qBAAqBC,eAO9DyD,EAAiBC,6BAA+B,SAAUrE,EAAeS,GACrE,IAAID,EAAY,CAACR,EAAeS,GAChC,OAAOD,EAAUrO,KAAK7b,EAAWoqB,qBAAqBC,eAS1DyD,EAAiBG,gCAAkC,SAAUC,EAAgB9I,EAAUqF,EAAO0D,GAC1F,IAAIe,EAAmBhB,IAAmBjuB,EAAe4uB,eACnDV,GACA/I,EACF+J,EAAe,CACfjB,EACAgB,EACAzE,GAASxtB,EAAUyB,cAEvB,OAAOywB,EAAatT,KAAK7b,EAAWoqB,qBAAqBC,eAK7DyD,EAAiBO,0BAA4B,SAAU3qB,GACnD,OAAQA,GAAUzG,EAAUyB,cAAc2rB,eAK9CyD,EAAiBkB,8BAAgC,SAAUP,GACvD,OAAQA,GAAuBxxB,EAAUyB,cAAc2rB,eAK3DyD,EAAiBmB,0BAA4B,SAAUT,GAKnD,OAAQA,GAAaA,EAAUnE,gBAAkBvpB,EAAqBsuB,OAAO/E,cAAiBmE,EAAUnE,cAAgBptB,EAAUyB,cAE/HovB,EAhI0B,GCnBjCuB,GAAkC,CAClCC,kBAAmB,CACf3mB,KAAM,qBACNC,KAAM,oEAEV2mB,oBAAqB,CACjB5mB,KAAM,wBACNC,KAAM,4CAEV4mB,0BAA2B,CACvB7mB,KAAM,+BACNC,KAAM,oDAEV6mB,qBAAsB,CAClB9mB,KAAM,yBACNC,KAAM,6NAEV8mB,cAAe,CACX/mB,KAAM,kBACNC,KAAM,sDAEV+mB,cAAe,CACXhnB,KAAM,kBACNC,KAAM,0BAEVgnB,iBAAkB,CACdjnB,KAAM,2BACNC,KAAM,kHAEVinB,oBAAqB,CACjBlnB,KAAM,8BACNC,KAAM,yCAEVknB,yBAA0B,CACtBnnB,KAAM,8BACNC,KAAM,qDAEVmnB,cAAe,CACXpnB,KAAM,uBACNC,KAAM,gRAEVonB,qBAAsB,CAClBrnB,KAAM,iBACNC,KAAM,6DAEVqnB,uBAAwB,CACpBtnB,KAAM,sBACNC,KAAM,mDAEVsnB,wBAAyB,CACrBvnB,KAAM,uBACNC,KAAM,6CAEVunB,2BAA4B,CACxBxnB,KAAM,gCACNC,KAAM,iFAEVwnB,2BAA4B,CACxBznB,KAAM,sBACNC,KAAM,uGAEVynB,8BAA+B,CAC3B1nB,KAAM,mCACNC,KAAM,uIAEV0nB,yBAA0B,CACtB3nB,KAAM,6BACNC,KAAM,2IAEV2nB,mBAAoB,CAChB5nB,KAAM,sBACNC,KAAM,8HAEV4nB,0BAA2B,CACvB7nB,KAAM,+BACNC,KAAM,uHAEV6nB,cAAe,CACX9nB,KAAM,kBACNC,KAAM,+HAEV8nB,cAAe,CACX/nB,KAAM,kBACNC,KAAM,yJAEV+nB,iCAAkC,CAC9BhoB,KAAM,sCACNC,KAAM,kLAEVgoB,4BAA6B,CACzBjoB,KAAM,gCACNC,KAAM,2CAMVioB,GAA0C,SAAU36B,GAEpD,SAAS26B,EAAyB/nB,EAAW3S,GACzC,IAAIG,EAAQJ,EAAOM,KAAKX,KAAMiT,EAAW3S,IAAiBN,KAG1D,OAFAS,EAAM4S,KAAO,2BACb9T,OAAOC,eAAeiB,EAAOu6B,EAAyB96B,WAC/CO,EA4IX,OAjJA,EAAUu6B,EAA0B36B,GAUpC26B,EAAyBC,4BAA8B,WACnD,OAAO,IAAID,EAAyBxB,GAAgCC,kBAAkB3mB,KAAM0mB,GAAgCC,kBAAkB1mB,OAKlJioB,EAAyBE,sCAAwC,WAC7D,OAAO,IAAIF,EAAyBxB,GAAgCE,oBAAoB5mB,KAAM0mB,GAAgCE,oBAAoB3mB,OAKtJioB,EAAyBG,gCAAkC,SAAUC,GACjE,OAAO,IAAIJ,EAAyBxB,GAAgCG,0BAA0B7mB,KAAM0mB,GAAgCG,0BAA0B5mB,KAAO,iBAAmBqoB,IAM5LJ,EAAyBK,gCAAkC,SAAUC,GACjE,OAAO,IAAIN,EAAyBxB,GAAgCI,qBAAqB9mB,KAAM0mB,GAAgCI,qBAAqB7mB,KAAO,eAAiBuoB,IAMhLN,EAAyBO,oBAAsB,SAAU1B,GACrD,OAAO,IAAImB,EAAyBxB,GAAgCK,cAAc/mB,KAAM0mB,GAAgCK,cAAc9mB,KAAO,iBAAmB8mB,IAMpKmB,EAAyBQ,oBAAsB,WAC3C,OAAO,IAAIR,EAAyBxB,GAAgCM,cAAchnB,KAAM0mB,GAAgCM,cAAc/mB,OAM1IioB,EAAyBS,4BAA8B,WACnD,OAAO,IAAIT,EAAyBxB,GAAgCO,iBAAiBjnB,KAAM,GAAK0mB,GAAgCO,iBAAiBhnB,OAMrJioB,EAAyBU,+BAAiC,SAAUC,GAChE,OAAO,IAAIX,EAAyBxB,GAAgCS,yBAAyBnnB,KAAM0mB,GAAgCS,yBAAyBlnB,KAAO,kBAAoB4oB,IAM3LX,EAAyBY,yBAA2B,SAAUC,GAC1D,OAAO,IAAIb,EAAyBxB,GAAgCU,cAAcpnB,KAAM0mB,GAAgCU,cAAcnnB,KAAO,iBAAmB8oB,IAKpKb,EAAyBc,gCAAkC,WACvD,OAAO,IAAId,EAAyBxB,GAAgCW,qBAAqBrnB,KAAM0mB,GAAgCW,qBAAqBpnB,OAKxJioB,EAAyBe,8BAAgC,WACrD,OAAO,IAAIf,EAAyBxB,GAAgCa,wBAAwBvnB,KAAM0mB,GAAgCa,wBAAwBtnB,OAK9JioB,EAAyBgB,6BAA+B,WACpD,OAAO,IAAIhB,EAAyBxB,GAAgCY,uBAAuBtnB,KAAM0mB,GAAgCY,uBAAuBrnB,OAK5JioB,EAAyBiB,sCAAwC,WAC7D,OAAO,IAAIjB,EAAyBxB,GAAgCc,2BAA2BxnB,KAAM0mB,GAAgCc,2BAA2BvnB,OAKpKioB,EAAyBkB,sCAAwC,WAC7D,OAAO,IAAIlB,EAAyBxB,GAAgCe,2BAA2BznB,KAAM0mB,GAAgCe,2BAA2BxnB,OAKpKioB,EAAyBmB,yCAA2C,WAChE,OAAO,IAAInB,EAAyBxB,GAAgCgB,8BAA8B1nB,KAAM0mB,GAAgCgB,8BAA8BznB,OAK1KioB,EAAyBoB,oCAAsC,WAC3D,OAAO,IAAIpB,EAAyBxB,GAAgCiB,yBAAyB3nB,KAAM0mB,GAAgCiB,yBAAyB1nB,OAKhKioB,EAAyBqB,8BAAgC,WACrD,OAAO,IAAIrB,EAAyBxB,GAAgCkB,mBAAmB5nB,KAAM0mB,GAAgCkB,mBAAmB3nB,OAKpJioB,EAAyBsB,qCAAuC,WAC5D,OAAO,IAAItB,EAAyBxB,GAAgCmB,0BAA0B7nB,KAAM0mB,GAAgCmB,0BAA0B5nB,OAKlKioB,EAAyBuB,yBAA2B,WAChD,OAAO,IAAIvB,EAAyBxB,GAAgCoB,cAAc9nB,KAAM0mB,GAAgCoB,cAAc7nB,OAK1IioB,EAAyBwB,yBAA2B,WAChD,OAAO,IAAIxB,EAAyBxB,GAAgCqB,cAAc/nB,KAAM0mB,GAAgCqB,cAAc9nB,OAK1IioB,EAAyByB,6CAA+C,WACpE,OAAO,IAAIzB,EAAyBxB,GAAgCsB,iCAAiChoB,KAAM0mB,GAAgCsB,iCAAiC/nB,OAKhLioB,EAAyB0B,uCAAyC,SAAUC,EAAmBC,GAC3F,OAAO,IAAI5B,EAAyBxB,GAAgCuB,4BAA4BjoB,KAAM0mB,GAAgCuB,4BAA4BhoB,KAAO,qBAAuB4pB,EAAoB,cAAgBC,IAEjO5B,EAlJkC,CAmJ3CxkB,IC/OEqmB,GAA0B,WAC1B,SAASA,EAASlB,GACd,IAAIl7B,EAAQT,KAER88B,EAAWnB,EAAc5hB,GAAY8B,iBAAiBpV,EAAek1B,IAAgB,GACrFoB,EAAgBD,EAAW/iB,GAAYkC,4BAA4B6gB,GAAY,GAEnF98B,KAAKg9B,oBAAoBD,GACzB/8B,KAAK6N,OAAS,IAAIovB,IAClBF,EAAcj6B,SAAQ,SAAUo6B,GAAS,OAAOz8B,EAAMoN,OAAOsvB,IAAID,MAiKrE,OAzJAL,EAASO,WAAa,SAAUC,GAC5B,IAAIC,EAAcD,GAAoBj2B,EAAUyB,aAC5C8yB,EAAc2B,EAAYlmB,MAAM,KACpC,OAAO,IAAIylB,EAASlB,IAOxBkB,EAAS38B,UAAU88B,oBAAsB,SAAUrB,GAE/C,IAAKA,GAAeA,EAAYt6B,OAAS,EACrC,MAAM25B,GAAyBS,+BAOvCoB,EAAS38B,UAAUq9B,cAAgB,SAAUL,GACzC,IAAIM,EAAkBx9B,KAAKy9B,uBAAuBrmB,MAAM,KACpDsmB,EAAqB,IAAIb,EAASW,GAEtC,OAAQzjB,GAAYG,QAAQgjB,IAASQ,EAAmB7vB,OAAOgb,IAAIqU,EAAM1I,gBAM7EqI,EAAS38B,UAAUy9B,iBAAmB,SAAUC,GAC5C,IAAIn9B,EAAQT,KACZ,SAAK49B,GAAYA,EAAS/vB,OAAOgwB,MAAQ,KAGjC79B,KAAK6N,OAAOgwB,MAAQD,EAAS/vB,OAAOgwB,MAAQD,EAASE,UAAUC,OAAM,SAAUb,GAAS,OAAOz8B,EAAM88B,cAAcL,QAK/HL,EAAS38B,UAAU89B,uBAAyB,WACxC,IAAIv9B,EAAQT,KACRi+B,EAAoB,EAMxB,OALAz0B,EAAY1G,SAAQ,SAAUo7B,GACtBz9B,EAAM88B,cAAcW,KACpBD,GAAqB,MAGtBj+B,KAAK6N,OAAOgwB,OAASI,GAMhCpB,EAAS38B,UAAUi+B,YAAc,SAAUC,GAClCrkB,GAAYG,QAAQkkB,IACrBp+B,KAAK6N,OAAOsvB,IAAIiB,EAAS1iB,SAOjCmhB,EAAS38B,UAAUm+B,aAAe,SAAUC,GACxC,IAAI79B,EAAQT,KACZ,IACIs+B,EAAUx7B,SAAQ,SAAUs7B,GAAY,OAAO39B,EAAM09B,YAAYC,MAErE,MAAO15B,GACH,MAAM8R,GAAgB+B,0BAA0B7T,KAOxDm4B,EAAS38B,UAAUq+B,YAAc,SAAUrB,GACvC,GAAInjB,GAAYG,QAAQgjB,GACpB,MAAM1mB,GAAgB8B,mCAAmC4kB,GAE7Dl9B,KAAK6N,OAAO7L,OAAOk7B,EAAMxhB,SAM7BmhB,EAAS38B,UAAUs+B,iBAAmB,WAClC,IAAI/9B,EAAQT,KACZwJ,EAAY1G,SAAQ,SAAUo7B,GAC1Bz9B,EAAMoN,OAAO7L,OAAOk8B,OAO5BrB,EAAS38B,UAAUu+B,eAAiB,SAAUC,GAC1C,IAAKA,EACD,MAAMloB,GAAgBiC,gCAE1B,IAAIkmB,EAAc,IAAI1B,IAGtB,OAFAyB,EAAY7wB,OAAO/K,SAAQ,SAAUo6B,GAAS,OAAOyB,EAAYxB,IAAID,EAAM1I,kBAC3Ex0B,KAAK6N,OAAO/K,SAAQ,SAAUo6B,GAAS,OAAOyB,EAAYxB,IAAID,EAAM1I,kBAC7DmK,GAMX9B,EAAS38B,UAAU0+B,sBAAwB,SAAUF,GACjD,IAAKA,EACD,MAAMloB,GAAgBiC,gCAGrBimB,EAAYV,0BACbU,EAAYF,mBAEhB,IAAIG,EAAc3+B,KAAKy+B,eAAeC,GAClCG,EAAkBH,EAAYI,gBAC9BC,EAAiB/+B,KAAK8+B,gBACtBE,EAAkBL,EAAYd,KAClC,OAAOmB,EAAmBD,EAAiBF,GAK/ChC,EAAS38B,UAAU4+B,cAAgB,WAC/B,OAAO9+B,KAAK6N,OAAOgwB,MAKvBhB,EAAS38B,UAAU49B,QAAU,WACzB,IAAImB,EAAQ,GAEZ,OADAj/B,KAAK6N,OAAO/K,SAAQ,SAAUo8B,GAAO,OAAOD,EAAMj5B,KAAKk5B,MAChDD,GAKXpC,EAAS38B,UAAUi/B,YAAc,WAC7B,GAAIn/B,KAAK6N,OAAQ,CACb,IAAIivB,EAAW98B,KAAK89B,UACpB,OAAOhB,EAAS9W,KAAK,KAEzB,OAAO5e,EAAUyB,cAKrBg0B,EAAS38B,UAAUu9B,qBAAuB,WACtC,OAAOz9B,KAAKm/B,cAAc3K,eAEvBqI,EA1KkB,GCLzBuC,GAA2B,WAC3B,SAASA,EAAUC,EAAUjb,GACzB,GAAIrK,GAAYG,QAAQmlB,GACpB,MAAM7oB,GAAgBM,4BAA4BuoB,GAEtDr/B,KAAKq/B,SAAWA,EAChBr/B,KAAK02B,OAAS0I,EAAUE,mBAAmBD,EAAUjb,GAoBzD,OAbAgb,EAAUE,mBAAqB,SAAUC,EAAcnb,GACnD,IAAIob,EAAezlB,GAAYC,gBAAgBulB,GAE/C,IACI,IAAIE,EAAqBD,EAAa/kB,WAElCilB,EAAgBtb,EAAOkG,aAAamV,GACxC,OAAOnlB,KAAKS,MAAM2kB,GAEtB,MAAO5wB,GACH,MAAM0H,GAAgBI,wBAAwB9H,KAG/CswB,EA1BmB,GCM1BO,GAA8B,WAC9B,SAASA,EAAapQ,EAAUqQ,GAC5B5/B,KAAKuvB,SAAWA,EAChBvvB,KAAK4/B,WAAaA,EAutBtB,OAltBAD,EAAaz/B,UAAU2/B,eAAiB,WACpC,IAAIp/B,EAAQT,KACR8/B,EAAkB9/B,KAAK+/B,wBACvBC,EAAgBzgC,OAAOsD,KAAKi9B,GAAiB/jB,KAAI,SAAU6Z,GAAc,OAAOkK,EAAgBlK,MAChGqK,EAAcD,EAAc3+B,OAChC,GAAI4+B,EAAc,EACd,MAAO,GAGP,IAAIC,EAAcF,EAAcjkB,KAAI,SAAUzX,GAC1C,IAAI67B,EAAgBR,EAAaS,SAAS,IAAIjM,GAAiB7vB,GAC3D+7B,EAAcF,EAAc3K,iBAC5BO,EAAUt1B,EAAM6/B,qBAAqB7/B,EAAM8uB,SAAU8Q,GAIzD,OAHItK,IAAYsK,EAAY5K,gBACxB4K,EAAY5K,cAAgB,IAAI2J,GAAUrJ,EAAQwK,OAAQ9/B,EAAMm/B,YAAYlJ,QAEzE2J,KAEX,OAAOH,GAOfP,EAAaz/B,UAAUsgC,gBAAkB,SAAUC,GAC/C,OAAO,EAAUzgC,UAAM,OAAQ,GAAQ,WACnC,OAAO,EAAYA,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EACD,IAAKo7B,EACD,MAAMjqB,GAAgBsC,mCAQ1B,OANM2nB,EAAYlK,SACdv2B,KAAK0gC,WAAWD,EAAYlK,SAE1BkK,EAAY1K,SACd/1B,KAAK2gC,qBAAqBF,EAAY1K,SAEnC0K,EAAYG,YACZ,CAAC,EAAa5gC,KAAK6gC,gBAAgBJ,EAAYG,cADf,CAAC,EAAa,GAEzD,KAAK,EACDjlB,EAAGrW,OACHqW,EAAGtW,MAAQ,EACf,KAAK,EAOD,OANMo7B,EAAYK,cACd9gC,KAAK+gC,0BAA0BN,EAAYK,cAEzCL,EAAYO,aACdhhC,KAAKihC,eAAeR,EAAYO,aAE7B,CAAC,WAS5BrB,EAAaz/B,UAAU2gC,gBAAkB,SAAUK,GAC/C,OAAO,EAAUlhC,UAAM,OAAQ,GAAQ,WACnC,IAAImhC,EAAmBC,EAAeC,EAAqBC,EACvD7gC,EAAQT,KACZ,OAAO,EAAYA,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAYD,OAXA87B,EAAoBnhC,KAAKuhC,yBAAyB,CAC9ChS,SAAU2R,EAAW3R,SACrB8I,eAAgB6I,EAAW7I,eAC3B/D,YAAa4M,EAAW5M,YACxBT,cAAeqN,EAAWrN,cAC1Be,MAAOsM,EAAWtM,MAClB+D,UAAWuI,EAAWvI,UACtBC,oBAAqBsI,EAAWtI,sBAEpCwI,EAAgBvE,GAASO,WAAW8D,EAAWvb,QAC/C0b,EAAsB9hC,OAAOsD,KAAKs+B,EAAkBK,cAAczlB,KAAI,SAAUH,GAAO,OAAOulB,EAAkBK,aAAa5lB,MACxHylB,GACLC,EAAwB,GACxBD,EAAoBv+B,SAAQ,SAAU2+B,GAClC,IAAIC,EAAgB7E,GAASO,WAAWqE,EAAY9b,QAChD+b,EAAc9C,sBAAsBwC,IACpCE,EAAsBt7B,KAAKvF,EAAMkhC,iBAAiBF,OAGnD,CAAC,EAAar/B,QAAQw/B,IAAIN,KARA,CAAC,EAAa,GASnD,KAAK,EACD3lB,EAAGrW,OACHqW,EAAGtW,MAAQ,EACf,KAAK,EAED,OADArF,KAAK6hC,yBAAyBX,GACvB,CAAC,WAY5BvB,EAAaz/B,UAAU6/B,sBAAwB,SAAU+B,GACrD,OAAO9hC,KAAK+hC,8BAA8BD,EAAgBA,EAAcjO,cAAgBzsB,EAAUyB,aAAci5B,EAAgBA,EAAcxN,YAAcltB,EAAUyB,aAAci5B,EAAgBA,EAAclN,MAAQxtB,EAAUyB,eASxO82B,EAAaz/B,UAAU6hC,8BAAgC,SAAUlO,EAAeS,EAAaM,GACzF,IAAIn0B,EAAQT,KACRgiC,EAAehiC,KAAK4nB,UACpBqa,EAAmB,GAiBvB,OAhBAD,EAAal/B,SAAQ,SAAUo/B,GAC3B,IAAI3K,EAAS92B,EAAM0hC,WAAWD,GACzB3K,IAGC1D,IAAkBpzB,EAAM2hC,mBAAmB7K,EAAQ1D,IAGnDS,IAAgB7zB,EAAM4hC,iBAAiB9K,EAAQjD,IAG/CM,IAAUn0B,EAAM6hC,WAAW/K,EAAQ3C,KAGzCqN,EAAiBC,GAAY3K,OAE1B0K,GAWXtC,EAAaz/B,UAAUqhC,yBAA2B,SAAUrlB,GACxD,OAAOlc,KAAKuiC,iCAAiCrmB,EAAO2X,cAAe3X,EAAOoY,YAAapY,EAAOmc,eAAgBnc,EAAOqT,SAAUrT,EAAOoc,SAAUpc,EAAO0Y,MAAO1Y,EAAOyJ,OAAQzJ,EAAO8Z,aAAc9Z,EAAOyc,UAAWzc,EAAO0F,MAAO1F,EAAO0c,sBAa7O+G,EAAaz/B,UAAUqiC,iCAAmC,SAAU1O,EAAeS,EAAa+D,EAAgB9I,EAAU+I,EAAU1D,EAAOjP,EAAQqQ,EAAc2C,EAAW/W,EAAOgX,GAC/K,IAAIn4B,EAAQT,KACRgiC,EAAehiC,KAAK4nB,UACpB4a,EAAsB,CACtBC,SAAU,GACVjB,aAAc,GACdkB,cAAe,IA2EnB,OAzEAV,EAAal/B,SAAQ,SAAUo/B,GAE3B,IAAIS,EAAW1K,GAAiBgB,kBAAkBiJ,GAClD,GAAIS,IAAav7B,EAAUwB,YAA3B,CAIA,IAAI2uB,EAAS92B,EAAMmiC,sBAAsBV,EAAUS,GACnD,GAAKpL,KAGCvB,GAAiBv1B,EAAMoiC,kBAAkBtL,EAAQvB,OAGjDnC,GAAkBpzB,EAAM2hC,mBAAmB7K,EAAQ1D,OAGnDS,GAAgB7zB,EAAM4hC,iBAAiB9K,EAAQjD,OAG/CM,GAAUn0B,EAAM6hC,WAAW/K,EAAQ3C,OAGnCyD,GAAmB53B,EAAMqiC,oBAAoBvL,EAAQc,OAGrD9I,GAAa9uB,EAAMsiC,cAAcxL,EAAQhI,OAGzC+I,GAAa73B,EAAMuiC,cAAczL,EAAQe,OAOzC3S,GAAWllB,EAAMwiC,YAAY1L,EAAQ5R,OAIvCiT,IAAuBrB,EAAOqB,qBAE1BrB,EAAOqB,sBAAwBA,GAFvC,CAOA,GAAIP,IAAmBjuB,EAAe2uB,8BAA+B,CACjE,GAAMJ,IAAcl4B,EAAMyiC,eAAe3L,EAAQoB,GAC7C,OAGJ,GAAIA,IAAc1tB,EAAqBk4B,KAC/BvhB,IAAUnhB,EAAM2iC,WAAW7L,EAAQ3V,GACnC,OAKZ,IAAIyhB,EAAkB5iC,EAAM6iC,yBAAyBpB,EAAU3K,GAC/D,OAAQoL,GACJ,KAAKv4B,EAAeyuB,SAChB2J,EAAoBC,SAASY,GAAmB9L,EAChD,MACJ,KAAKntB,EAAe0uB,aACpB,KAAK1uB,EAAe2uB,8BAChByJ,EAAoBhB,aAAa6B,GAAmB9L,EACpD,MACJ,KAAKntB,EAAe4uB,cAChBwJ,EAAoBE,cAAcW,GAAmB9L,EACrD,YAGLiL,GAMX7C,EAAaz/B,UAAUqjC,yBAA2B,SAAUrnB,GACxD,OAAOlc,KAAKwjC,iCAAiCtnB,EAAOoY,YAAapY,EAAOqT,WAO5EoQ,EAAaz/B,UAAUsjC,iCAAmC,SAAUlP,EAAa/E,GAC7E,IAAI9uB,EAAQT,KACRgiC,EAAehiC,KAAK4nB,UACpB6b,EAAsB,GAmB1B,OAlBAzB,EAAal/B,SAAQ,SAAUo/B,GAE3B,GAAKzhC,EAAMijC,cAAcxB,GAAzB,CAIA,IAAI3K,EAAS92B,EAAMkjC,eAAezB,GAC7B3K,IAGCjD,IAAgB7zB,EAAM4hC,iBAAiB9K,EAAQjD,IAG/C/E,IAAa9uB,EAAMsiC,cAAcxL,EAAQhI,KAG/CkU,EAAoBvB,GAAY3K,QAE7BkM,GAMX9D,EAAaz/B,UAAU0jC,4BAA8B,SAAUC,GAC3D,IAAIpjC,EAAQT,KACRgiC,EAAehiC,KAAK8jC,2BACpBC,EAAgB,KAgBpB,OAfA/B,EAAal/B,SAAQ,SAAUo/B,GAE3B,GAAKzhC,EAAMujC,oBAAoB9B,KAAmD,IAAtCA,EAAShnB,QAAQza,EAAM8uB,UAAnE,CAIA,IAAIgI,EAAS92B,EAAMwjC,qBAAqB/B,GACnC3K,IAGiC,IAAlCA,EAAO2M,QAAQhpB,QAAQ2oB,KAG3BE,EAAgBxM,OAEbwM,GAKXpE,EAAaz/B,UAAUikC,kBAAoB,WACvC,OAAO,EAAUnkC,UAAM,OAAQ,GAAQ,WACnC,IAAIgiC,EAAcoC,EACd3jC,EAAQT,KACZ,OAAO,EAAYA,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAUD,OATA28B,EAAehiC,KAAK4nB,UACpBwc,EAAkB,GAClBpC,EAAal/B,SAAQ,SAAUo/B,GAC3B,IAAI3K,EAAS92B,EAAM0hC,WAAWD,GACzB3K,GAGL6M,EAAgBp+B,KAAKvF,EAAM4jC,cAAcnC,OAEtC,CAAC,EAAa9/B,QAAQw/B,IAAIwC,IACrC,KAAK,EAED,OADAzoB,EAAGrW,OACI,CAAC,GAAc,WAS1Cq6B,EAAaz/B,UAAUmkC,cAAgB,SAAUzO,GAC7C,OAAO,EAAU51B,UAAM,OAAQ,GAAQ,WACnC,IAAIu2B,EACJ,OAAO,EAAYv2B,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,GADAkxB,EAAUv2B,KAAKmiC,WAAWvM,IACrBW,EACD,MAAM/f,GAAgBwC,4BAE1B,MAAO,CAAC,EAAahZ,KAAKskC,qBAAqB/N,IACnD,KAAK,EAAG,MAAO,CAAC,EAAgB5a,EAAGrW,QAAWtF,KAAK0nB,WAAWkO,EAAYvrB,EAAgBk6B,kBAS1G5E,EAAaz/B,UAAUokC,qBAAuB,SAAU/N,GACpD,OAAO,EAAUv2B,UAAM,OAAQ,GAAQ,WACnC,IAAIgiC,EAAc3N,EAAWmQ,EACzB/jC,EAAQT,KACZ,OAAO,EAAYA,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAeD,OAdA28B,EAAehiC,KAAK4nB,UACpByM,EAAYkC,EAAQnC,oBACpBoQ,EAAqB,GACrBxC,EAAal/B,SAAQ,SAAUo/B,GAE3B,IAAIS,EAAW1K,GAAiBgB,kBAAkBiJ,GAClD,GAAIS,IAAav7B,EAAUwB,YAA3B,CAGA,IAAI67B,EAAchkC,EAAMmiC,sBAAsBV,EAAUS,GAClD8B,GAAepQ,IAAcoQ,EAAYrQ,qBAC3CoQ,EAAmBx+B,KAAKvF,EAAMkhC,iBAAiB8C,QAGhD,CAAC,EAAariC,QAAQw/B,IAAI4C,IACrC,KAAK,EAED,OADA7oB,EAAGrW,OACI,CAAC,GAAc,WAS1Cq6B,EAAaz/B,UAAUyhC,iBAAmB,SAAUT,GAChD,OAAO,EAAUlhC,UAAM,OAAQ,GAAQ,WACnC,IAAI4b,EAAK8oB,EAAiCzY,EAC1C,OAAO,EAAYjsB,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,GADAuW,EAAMslB,EAAWzI,wBACXyI,EAAW7I,eAAe7D,gBAAkBpqB,EAAe2uB,8BAA8BvE,cAAgB,MAAO,CAAC,EAAa,GACpI,GAAM0M,EAAWvI,YAAc1tB,EAAqB05B,IAAM,MAAO,CAAC,EAAa,GAG/E,GAFAD,EAAkCxD,EAClCjV,EAAMyY,EAAgC9iB,OACjCqK,EAAK,MAAO,CAAC,EAAa,GAC/BtQ,EAAGtW,MAAQ,EACf,KAAK,EAED,OADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAahG,KAAK4/B,WAAW5T,sBAAsBC,IAC/D,KAAK,EAED,OADAtQ,EAAGrW,OACI,CAAC,EAAa,GACzB,KAAK,EAED,MADAqW,EAAGrW,OACGkR,GAAgBqD,kCAC1B,KAAK,EAAG,MAAO,CAAC,EAAc7Z,KAAK0nB,WAAW9L,EAAKvR,EAAgBu6B,qBAQnFjF,EAAaz/B,UAAU2kC,kBAAoB,WACvC,IAAIpkC,EAAQT,KACRgiC,EAAehiC,KAAK4nB,UAMxB,OALAoa,EAAal/B,SAAQ,SAAUo/B,GACvBzhC,EAAMijC,cAAcxB,IACpBzhC,EAAMinB,WAAWwa,EAAU73B,EAAgBM,kBAG5C,GAUXg1B,EAAaz/B,UAAU4kC,gBAAkB,SAAUvO,EAAShH,EAAUptB,EAASmyB,GAC3E,IAAIyQ,EAAgB/kC,KAAKglC,qBAAqBzO,GAC1C0O,EAAgBjlC,KAAKsgC,qBAAqB/Q,EAAUgH,GACpD2O,EAAoBllC,KAAKmlC,yBAAyB5V,EAAUgH,EAASp0B,GACrEijC,EAAqBplC,KAAKqlC,0BAA0B9V,EAAUgH,GAAS,GACvE+O,EAAoBtlC,KAAKulC,yBAAyBjR,EAAa/E,GAInE,OAHIwV,GAAiBE,IACjBF,EAActP,cAAgB,IAAI2J,GAAU6F,EAAc1E,OAAQvgC,KAAK4/B,YAAYlJ,QAEhF,CACHH,QAASwO,EACThP,QAASkP,EACTrE,YAAasE,EACbpE,aAAcsE,EACdpE,YAAasE,IAOrB3F,EAAaz/B,UAAU8kC,qBAAuB,SAAUzO,GACpD,IAAIX,EAAazB,GAAcO,wBAAwB6B,GACvD,OAAOv2B,KAAKmiC,WAAWvM,IAQ3B+J,EAAaz/B,UAAUogC,qBAAuB,SAAU/Q,EAAUgH,GAC9D,IAAIiP,EAAgB,CAChB3R,cAAe0C,EAAQ1C,cACvBS,YAAaiC,EAAQjC,YACrB+D,eAAgBjuB,EAAeyuB,SAC/BtJ,SAAUA,EACVqF,MAAO2B,EAAQ5B,UAEf8Q,EAAkBzlC,KAAKuhC,yBAAyBiE,GAChD/C,EAAWljC,OAAOsD,KAAK4iC,EAAgBhD,UAAU1mB,KAAI,SAAUH,GAAO,OAAO6pB,EAAgBhD,SAAS7mB,MACtG8pB,EAAcjD,EAASphC,OAC3B,GAAIqkC,EAAc,EACd,OAAO,KAEN,GAAIA,EAAc,EACnB,MAAMlvB,GAAgBwB,2CAE1B,OAAOyqB,EAAS,IASpB9C,EAAaz/B,UAAUilC,yBAA2B,SAAU5V,EAAUgH,EAASp0B,GAC3E,IAAI0L,EAAS,IAAIgvB,GAAS16B,EAAQ0L,QAAU,IACxC83B,EAAaxjC,EAAQyjC,sBAAwB36B,EAAqBsuB,OAKlElB,EAAkBsN,GAAcA,EAAWnR,gBAAkBvpB,EAAqBsuB,OAAO/E,cAAiBpqB,EAAe2uB,8BAAgC3uB,EAAe0uB,aACxK+M,EAAoB,CACpBhS,cAAe0C,EAAQ1C,cACvBS,YAAaiC,EAAQjC,YACrB+D,eAAgBA,EAChB9I,SAAUA,EACVqF,MAAO2B,EAAQ5B,SACfhP,OAAQ9X,EAAO4vB,uBACf9E,UAAWgN,EACX/jB,MAAOzf,EAAQ2jC,OACflN,oBAAqBz2B,EAAQy2B,qBAE7B6M,EAAkBzlC,KAAKuhC,yBAAyBsE,GAChDrE,EAAejiC,OAAOsD,KAAK4iC,EAAgBjE,cAAczlB,KAAI,SAAUH,GAAO,OAAO6pB,EAAgBjE,aAAa5lB,MAClHmqB,EAAkBvE,EAAangC,OACnC,GAAI0kC,EAAkB,EAClB,OAAO,KAEN,GAAIA,EAAkB,EACvB,MAAMvvB,GAAgBwB,2CAE1B,OAAOwpB,EAAa,IAQxB7B,EAAaz/B,UAAUmlC,0BAA4B,SAAU9V,EAAUgH,EAASyP,GAC5E,IAAIC,EAAKD,EAAWn7B,OAAgBq7B,EAChCC,EAAqB,CACrBtS,cAAe0C,EAAQ1C,cACvBS,YAAaiC,EAAQjC,YACrB+D,eAAgBjuB,EAAe4uB,cAC/BzJ,SAAUA,EACV+I,SAAU2N,GAEVR,EAAkBzlC,KAAKuhC,yBAAyB4E,GAChDzD,EAAgBnjC,OAAOsD,KAAK4iC,EAAgB/C,eAAe3mB,KAAI,SAAUH,GAAO,OAAO6pB,EAAgB/C,cAAc9mB,MACrHwqB,EAAmB1D,EAAcrhC,OACrC,OAAI+kC,EAAmB,EACZ,KAGJ1D,EAAc,IAKzB/C,EAAaz/B,UAAUqlC,yBAA2B,SAAUjR,EAAa/E,GACrE,IAAI8W,EAAoB,CACpB/R,YAAaA,EACb/E,SAAUA,GAEVyR,EAAchhC,KAAKujC,yBAAyB8C,GAC5CC,EAAqB/mC,OAAOsD,KAAKm+B,GAAajlB,KAAI,SAAUH,GAAO,OAAOolB,EAAYplB,MACtF2qB,EAAiBD,EAAmBjlC,OACxC,GAAIklC,EAAiB,EACjB,OAAO,KAEN,GAAIA,EAAiB,EACtB,MAAM/vB,GAAgB0B,gDAE1B,OAAOouB,EAAmB,IAO9B3G,EAAaz/B,UAAUsmC,kBAAoB,SAAUlS,EAAa/E,GAC9D,IAAIyR,EAAchhC,KAAKulC,yBAAyBjR,EAAa/E,GAC7D,SAAUyR,GAAeA,EAAY1I,WAAaztB,IAOtD80B,EAAaz/B,UAAUkiC,mBAAqB,SAAU7K,EAAQ1D,GAC1D,SAAU0D,EAAO1D,eAAiBA,IAAkB0D,EAAO1D,gBAO/D8L,EAAaz/B,UAAU2iC,kBAAoB,SAAUtL,EAAQvB,GACzD,SAAUuB,EAAOvB,cAAgBA,IAAiBuB,EAAOvB,eAO7D2J,EAAaz/B,UAAUmiC,iBAAmB,SAAU9K,EAAQjD,GACxD,IAAImS,EAAgBzmC,KAAK4jC,4BAA4BtP,GACrD,SAAImS,GAAiBA,EAAcvC,QAAQhpB,QAAQqc,EAAOjD,cAAgB,IAU9EqL,EAAaz/B,UAAU4iC,oBAAsB,SAAUvL,EAAQc,GAC3D,OAAQd,EAAOc,gBAAkBA,EAAe7D,gBAAkB+C,EAAOc,eAAe7D,eAO5FmL,EAAaz/B,UAAU6iC,cAAgB,SAAUxL,EAAQhI,GACrD,SAAUgI,EAAOhI,UAAYA,IAAagI,EAAOhI,WAOrDoQ,EAAaz/B,UAAU8iC,cAAgB,SAAUzL,EAAQe,GACrD,SAAUf,EAAOe,UAAYA,IAAaf,EAAOe,WAOrDqH,EAAaz/B,UAAUoiC,WAAa,SAAU/K,EAAQ3C,GAClD,SAAU2C,EAAO3C,OAASA,IAAU2C,EAAO3C,QAO/C+K,EAAaz/B,UAAU+iC,YAAc,SAAU1L,EAAQ5R,GACnD,IAAI+gB,EAA8BnP,EAAOc,iBAAmBjuB,EAAe0uB,cAAgBvB,EAAOc,iBAAmBjuB,EAAe2uB,8BACpI,GAAI2N,IAA+BnP,EAAO5R,OACtC,OAAO,EAEX,IAAIghB,EAAiB9J,GAASO,WAAW7F,EAAO5R,QAC5CihB,EAAwB/J,GAASO,WAAWzX,GAOhD,OANKihB,EAAsB5I,yBAIvB4I,EAAsBrI,YAAYn3B,EAAUe,sBAH5Cy+B,EAAsBpI,mBAKnBmI,EAAehJ,iBAAiBiJ,IAO3CjH,EAAaz/B,UAAUgjC,eAAiB,SAAU3L,EAAQoB,GACtD,SAAUpB,EAAOoB,WAAapB,EAAOoB,YAAcA,IAOvDgH,EAAaz/B,UAAUkjC,WAAa,SAAU7L,EAAQ3V,GAClD,SAAU2V,EAAO3V,OAAS2V,EAAO3V,QAAUA,IAM/C+d,EAAaz/B,UAAUwjC,cAAgB,SAAU9nB,GAC7C,OAAsC,IAA/BA,EAAIV,QAAQvQ,IAMvBg1B,EAAaz/B,UAAU8jC,oBAAsB,SAAUpoB,GACnD,OAAgE,IAAzDA,EAAIV,QAAQpQ,EAA6BC,YAKpD40B,EAAaz/B,UAAU2mC,kCAAoC,SAAUrX,GACjE,OAAO1kB,EAA6BC,UAAY,IAAM/K,KAAKuvB,SAAW,IAAMC,GAOhFmQ,EAAaz/B,UAAU0iC,sBAAwB,SAAUhnB,EAAK+mB,GAC1D,OAAQA,GACJ,KAAKv4B,EAAeyuB,SAChB,OAAO74B,KAAK8mC,qBAAqBlrB,GAErC,KAAKxR,EAAe0uB,aACpB,KAAK1uB,EAAe2uB,8BAChB,OAAO/4B,KAAK+mC,yBAAyBnrB,GAEzC,KAAKxR,EAAe4uB,cAChB,OAAOh5B,KAAKgnC,0BAA0BprB,GAE1C,QACI,OAAO,OAQnB+jB,EAAaS,SAAW,SAAUtlB,EAAKmsB,GACnC,IAAK,IAAIC,KAAgBD,EACrBnsB,EAAIosB,GAAgBD,EAAKC,GAE7B,OAAOpsB,GAEJ6kB,EA1tBsB,GA4tB7BwH,GAAqC,SAAU9mC,GAE/C,SAAS8mC,IACL,OAAkB,OAAX9mC,GAAmBA,EAAO0D,MAAM/D,KAAMoB,YAAcpB,KA+F/D,OAjGA,EAAUmnC,EAAqB9mC,GAI/B8mC,EAAoBjnC,UAAUwgC,WAAa,WACvC,IAAI9N,EAAa,4FACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAUiiC,WAAa,WACvC,IAAIvP,EAAa,4FACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAUygC,qBAAuB,WACjD,IAAI/N,EAAa,sGACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAU4mC,qBAAuB,WACjD,IAAIlU,EAAa,sGACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAU2hC,yBAA2B,WACrD,IAAIjP,EAAa,0GACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAU6mC,yBAA2B,WACrD,IAAInU,EAAa,0GACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAU6gC,0BAA4B,WACtD,IAAInO,EAAa,2GACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAU8mC,0BAA4B,WACtD,IAAIpU,EAAa,2GACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAU+gC,eAAiB,WAC3C,IAAIrO,EAAa,gGACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAUyjC,eAAiB,WAC3C,IAAI/Q,EAAa,gGACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAUknC,mBAAqB,WAC/C,IAAIxU,EAAa,oGACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAUmnC,mBAAqB,WAC/C,IAAIzU,EAAa,oGACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAUonC,qBAAuB,WACjD,IAAI1U,EAAa,sGACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAU+jC,qBAAuB,WACjD,IAAIrR,EAAa,sGACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAU4jC,yBAA2B,WACrD,IAAIlR,EAAa,0GACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAUqnC,mBAAqB,WAC/C,IAAI3U,EAAa,oGACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAUsnC,mBAAqB,WAC/C,IAAI5U,EAAa,oGACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAUwnB,WAAa,WACvC,IAAIkL,EAAa,4FACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAU6nB,YAAc,WACxC,IAAI6K,EAAa,6FACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAU0nB,QAAU,WACpC,IAAIgL,EAAa,yFACjB,MAAM5f,GAAUQ,sBAAsBof,IAE1CuU,EAAoBjnC,UAAU4oB,MAAQ,WAClC,OAAO,EAAU9oB,UAAM,OAAQ,GAAQ,WACnC,IAAI4yB,EACJ,OAAO,EAAY5yB,MAAM,SAAU2b,GAE/B,MADAiX,EAAa,uFACP5f,GAAUQ,sBAAsBof,UAIlDuU,EAAoBjnC,UAAUojC,yBAA2B,WACrD,IAAI1Q,EAAa,0GACjB,MAAM5f,GAAUQ,sBAAsBof,IAEnCuU,EAlG6B,CAmGtCxH,ICtzBE8H,GAA+B,SAAUpnC,GAEzC,SAASonC,IACL,OAAkB,OAAXpnC,GAAmBA,EAAO0D,MAAM/D,KAAMoB,YAAcpB,KAoC/D,OAtCA,EAAUynC,EAAepnC,GAWzBonC,EAAcC,oBAAsB,SAAU7T,EAAeS,EAAayB,EAASxG,EAAUoF,EAAUqB,GACnG,IAAI2R,EAAgB,IAAIF,EAQxB,OAPAE,EAActP,eAAiBjuB,EAAeyuB,SAC9C8O,EAAc9T,cAAgBA,EAC9B8T,EAAcrT,YAAcA,EAC5BqT,EAAcpY,SAAWA,EACzBoY,EAAcpH,OAASxK,EACvB4R,EAAc/S,MAAQD,EACtBgT,EAAc3R,aAAeA,EACtB2R,GAMXF,EAAcG,gBAAkB,SAAUrQ,GACtC,QAAKA,IAGGA,EAAOz3B,eAAe,kBAC1By3B,EAAOz3B,eAAe,gBACtBy3B,EAAOz3B,eAAe,mBACtBy3B,EAAOz3B,eAAe,UACtBy3B,EAAOz3B,eAAe,aACtBy3B,EAAOz3B,eAAe,WACtBy3B,EAAO,oBAAsBntB,EAAeyuB,WAE7C4O,EAvCuB,CAwChCxP,IC1DE4P,GAA2B,WAC3B,SAASA,KAsCT,OAjCAA,EAAUC,WAAa,WAEnB,OAAO74B,KAAKmiB,OAAM,IAAI5C,MAAOuZ,UAAY,MAM7CF,EAAUG,eAAiB,SAAUC,EAAWC,GAE5C,IAAIC,EAAgBC,OAAOH,IAAc,EACrCI,EAAuBR,EAAUC,aAAeI,EAEpD,OAAQG,EAAuBF,GAQnCN,EAAUS,mBAAqB,SAAUC,GACrC,IAAIC,EAAcJ,OAAOG,GACzB,OAAOC,EAAcX,EAAUC,cAOnCD,EAAUY,MAAQ,SAAUznC,EAAGsD,GAC3B,OAAO,IAAIlC,SAAQ,SAAUC,GAAW,OAAOqmC,YAAW,WAAc,OAAOrmC,EAAQiC,KAAWtD,OAE/F6mC,EAvCmB,GC6B1Bc,GAAmC,SAAUtoC,GAE7C,SAASsoC,IACL,OAAkB,OAAXtoC,GAAmBA,EAAO0D,MAAM/D,KAAMoB,YAAcpB,KA8E/D,OAhFA,EAAU2oC,EAAmBtoC,GAe7BsoC,EAAkBC,wBAA0B,SAAU/U,EAAeS,EAAasM,EAAarR,EAAUoF,EAAU9mB,EAAQo6B,EAAWY,EAAcC,EAAaC,EAAWpQ,EAAW3C,EAAcpU,EAAOonB,EAAiBpQ,GACzN,IAAIjd,EAAIsP,EACJge,EAAW,IAAIN,EACnBM,EAASpV,cAAgBA,EACzBoV,EAAS5Q,eAAiBjuB,EAAe0uB,aACzCmQ,EAAS1I,OAASK,EAClB,IAAIsI,EAAcrB,GAAUC,aAyB5B,GAxBAmB,EAASV,SAAWW,EAAY36B,WAKhC06B,EAAShB,UAAYA,EAAU15B,WAC/B06B,EAASE,kBAAoBN,EAAat6B,WACtCw6B,IACAE,EAASF,UAAYA,EAAUx6B,YAEnC06B,EAAS3U,YAAcA,EACvB2U,EAAS1Z,SAAWA,EACpB0Z,EAASrU,MAAQD,EACjBsU,EAAStjB,OAAS9X,EAClBo7B,EAASjT,aAAeA,EACxBiT,EAAStQ,UAAY5e,GAAYG,QAAQye,GAAa1tB,EAAqBsuB,OAASZ,EAChFqQ,IACAC,EAASD,gBAAkBA,EAC3BC,EAASrQ,oBAAsBA,IAMA,QAA7Bjd,EAAKstB,EAAStQ,iBAA8B,IAAPhd,OAAgB,EAASA,EAAG6Y,iBAAmBvpB,EAAqBsuB,OAAO/E,cAElH,OADAyU,EAAS5Q,eAAiBjuB,EAAe2uB,8BACjCkQ,EAAStQ,WACb,KAAK1tB,EAAqB05B,IAEtB,IAAIyE,EAAchK,GAAUE,mBAAmBsB,EAAakI,GAC5D,KAA2F,QAApF7d,EAAqB,OAAhBme,QAAwC,IAAhBA,OAAyB,EAASA,EAAYjc,WAAwB,IAAPlC,OAAgB,EAASA,EAAGgB,KAC3H,MAAMzV,GAAgBmD,iCAE1BsvB,EAASrnB,MAAQwnB,EAAYjc,IAAIlB,IACjC,MACJ,KAAKhhB,EAAqBk4B,IACtB8F,EAASrnB,MAAQA,EAG7B,OAAOqnB,GAMXN,EAAkBU,oBAAsB,SAAU9R,GAC9C,QAAKA,IAGGA,EAAOz3B,eAAe,kBAC1By3B,EAAOz3B,eAAe,gBACtBy3B,EAAOz3B,eAAe,mBACtBy3B,EAAOz3B,eAAe,UACtBy3B,EAAOz3B,eAAe,aACtBy3B,EAAOz3B,eAAe,WACtBy3B,EAAOz3B,eAAe,YACrBy3B,EAAO,oBAAsBntB,EAAe0uB,cAAgBvB,EAAO,oBAAsBntB,EAAe2uB,iCAE1G4P,EAjF2B,CAkFpC1Q,IC3FEqR,GAAoC,SAAUjpC,GAE9C,SAASipC,IACL,OAAkB,OAAXjpC,GAAmBA,EAAO0D,MAAM/D,KAAMoB,YAAcpB,KAoC/D,OAtCA,EAAUspC,EAAoBjpC,GAW9BipC,EAAmBC,yBAA2B,SAAU1V,EAAeS,EAAawM,EAAcvR,EAAU+I,EAAUtC,GAClH,IAAIwT,EAAW,IAAIF,EASnB,OARAE,EAASja,SAAWA,EACpBia,EAASnR,eAAiBjuB,EAAe4uB,cACzCwQ,EAASlV,YAAcA,EACvBkV,EAAS3V,cAAgBA,EACzB2V,EAASjJ,OAASO,EAClB0I,EAASxT,aAAeA,EACpBsC,IACAkR,EAASlR,SAAWA,GACjBkR,GAMXF,EAAmBG,qBAAuB,SAAUlS,GAChD,QAAKA,IAGGA,EAAOz3B,eAAe,kBAC1By3B,EAAOz3B,eAAe,gBACtBy3B,EAAOz3B,eAAe,mBACtBy3B,EAAOz3B,eAAe,aACtBy3B,EAAOz3B,eAAe,WACtBy3B,EAAO,oBAAsBntB,EAAe4uB,gBAE7CsQ,EAvC4B,CAwCrCrR,IC/CEyR,GAAmC,WACnC,SAASA,KA8CT,OAzCAA,EAAkBxpC,UAAUypC,uBAAyB,WACjD,OAAOD,EAAkBE,4BAA4B5pC,KAAKs0B,YAAat0B,KAAKuvB,WAKhFma,EAAkBE,4BAA8B,SAAUtV,EAAa/E,GACnE,IAAIsa,EAAsB,CACtBl/B,EACA2pB,EACA/E,GAEJ,OAAOsa,EAAoB7jB,KAAK7b,EAAWoqB,qBAAqBC,eAQpEkV,EAAkBI,wBAA0B,SAAUva,EAAU+E,EAAagE,GACzE,IAAI0I,EAAc,IAAI0I,EAMtB,OALA1I,EAAYzR,SAAWA,EACvByR,EAAY1M,YAAcA,EACtBgE,IACA0I,EAAY1I,SAAWA,GAEpB0I,GAMX0I,EAAkBK,oBAAsB,SAAUnuB,EAAK2b,GACnD,QAAKA,IAGiC,IAA9B3b,EAAIV,QAAQvQ,IAChB4sB,EAAOz3B,eAAe,aACtBy3B,EAAOz3B,eAAe,iBAEvB4pC,EA/C2B,GCdlCM,GAAuC,WACvC,SAASA,IACLhqC,KAAKiqC,eAAiB,GACtBjqC,KAAKkqC,OAAS,GACdlqC,KAAKmqC,UAAY,EAkBrB,OAXAH,EAAsBI,wBAA0B,SAAUxuB,EAAK2b,GAC3D,IAAI8S,EAAgE,IAAlDzuB,EAAIV,QAAQhQ,EAAuBH,WACjDu/B,GAAiB,EAOrB,OANI/S,IACA+S,EACI/S,EAAOz3B,eAAe,mBAClBy3B,EAAOz3B,eAAe,WACtBy3B,EAAOz3B,eAAe,cAE3BuqC,GAAeC,GAEnBN,EAtB+B,GCCtCO,GAAyC,WACzC,SAASA,IACLvqC,KAAKwqC,UAAY3C,GAAUC,aAAeh9B,EAA6BE,qBAgE3E,OAzDAu/B,EAAwBrqC,UAAUuqC,6BAA+B,SAAUC,EAAUC,GACjF3qC,KAAKkkC,QAAUwG,EAASxG,QACxBlkC,KAAK4qC,gBAAkBF,EAASE,gBAChC5qC,KAAK6qC,kBAAoBH,EAASG,kBAClC7qC,KAAK8qC,mBAAqBH,GAO9BJ,EAAwBrqC,UAAU6qC,uBAAyB,SAAUL,EAAUC,GAC3E3qC,KAAKgrC,uBAAyBN,EAASM,uBACvChrC,KAAKirC,eAAiBP,EAASO,eAC/BjrC,KAAKkrC,qBAAuBR,EAASQ,qBACrClrC,KAAKmrC,OAAST,EAASS,OACvBnrC,KAAKorC,qBAAuBT,GAMhCJ,EAAwBrqC,UAAUmrC,yBAA2B,SAAU7b,GACnExvB,KAAKsrC,oBAAsB9b,GAK/B+a,EAAwBrqC,UAAUqrC,eAAiB,WAC/CvrC,KAAKwqC,UAAY3C,GAAUC,aAAeh9B,EAA6BE,sBAK3Eu/B,EAAwBrqC,UAAUsrC,UAAY,WAC1C,OAAOxrC,KAAKwqC,WAAa3C,GAAUC,cAMvCyC,EAAwBkB,0BAA4B,SAAU7vB,EAAK2b,GAC/D,QAAKA,IAG2D,IAAxD3b,EAAIV,QAAQpQ,EAA6BC,YAC7CwsB,EAAOz3B,eAAe,YACtBy3B,EAAOz3B,eAAe,oBACtBy3B,EAAOz3B,eAAe,sBACtBy3B,EAAOz3B,eAAe,wBACtBy3B,EAAOz3B,eAAe,2BACtBy3B,EAAOz3B,eAAe,mBACtBy3B,EAAOz3B,eAAe,WACtBy3B,EAAOz3B,eAAe,uBACtBy3B,EAAOz3B,eAAe,yBACtBy3B,EAAOz3B,eAAe,eAEvByqC,EAlEiC,GCDxCmB,GAAkC,WAClC,SAASA,KAkBT,OAXAA,EAAiBC,mBAAqB,SAAU/vB,EAAK2b,GACjD,IAAI8S,GAAc,EACdzuB,IACAyuB,EAAqE,IAAvDzuB,EAAIV,QAAQjP,EAAoBG,oBAElD,IAAIk+B,GAAiB,EAIrB,OAHI/S,IACA+S,EAAiB/S,EAAOz3B,eAAe,iBAEpCuqC,GAAeC,GAEnBoB,EAnB0B,GCKjCE,GAA+B,WAC/B,SAASA,KA0DT,OAnDAA,EAAcC,gBAAkB,SAAUp9B,EAAWq9B,EAAWC,GAC5D,IAAIC,EAAeJ,EAAcK,qBAAqBx9B,EAAWs9B,GACjE,OAAQhyB,GAAYG,QAAQ4xB,GAAwEE,EAA3D,GAAKA,EAAe5kC,EAAUS,eAAiBikC,GAO5FF,EAAcK,qBAAuB,SAAUx9B,EAAWs9B,GACtD,IAAKt9B,EACD,MAAM+H,GAAgB0C,0BAA0B,wBAGpD,IAAIgzB,EAAW,CACXjG,GAAIx3B,EAAU4b,iBAEd0hB,IACAG,EAASH,KAAOA,GAEpB,IAAII,EAAc7xB,KAAKC,UAAU2xB,GACjC,OAAOz9B,EAAU+T,aAAa2pB,IAOlCP,EAAcQ,kBAAoB,SAAU39B,EAAW49B,GACnD,IAAK59B,EACD,MAAM+H,GAAgB0C,0BAA0B,qBAEpD,GAAIa,GAAYG,QAAQmyB,GACpB,MAAM71B,GAAgBgB,wBAAwB60B,EAAO,kCAEzD,IAEI,IAAIC,EAAaD,EAAMj1B,MAAMhQ,EAAUS,gBACnCmkC,EAAeM,EAAW,GAC1BR,EAAYQ,EAAWjrC,OAAS,EAAIirC,EAAWC,MAAM,GAAGvmB,KAAK5e,EAAUS,gBAAkBT,EAAUyB,aACnG2jC,EAAqB/9B,EAAU6b,aAAa0hB,GAC5CS,EAAkBnyB,KAAKS,MAAMyxB,GACjC,MAAO,CACHE,iBAAmB3yB,GAAYG,QAAQ4xB,GAAyB1kC,EAAUyB,aAAtBijC,EACpDE,aAAcS,GAGtB,MAAO/nC,GACH,MAAM8R,GAAgBgB,wBAAwB60B,EAAO3nC,KAGtDknC,EA3DuB,IdNlC,SAAW1X,GACPA,EAAkB,mBAAqB,kBACvCA,EAAkB,OAAS,OAF/B,CAGGA,KAAsBA,GAAoB;;AeE7C,ICHIyY,GCHAC,GFMAC,GAAuC,CACvCpT,kBAAmB,CACf3mB,KAAM,qBACNC,KAAM,oEAEV2mB,oBAAqB,CACjB5mB,KAAM,wBACNC,KAAM,4CAEV+5B,yBAA0B,CACtBh6B,KAAM,wBACNC,KAAM,yDAEVg6B,uBAAwB,CACpBj6B,KAAM,wBACNC,KAAM,+PAGVi6B,sBAAuB,CACnBl6B,KAAM,0BACNC,KAAM,4KAGVk6B,sBAAuB,CACnBn6B,KAAM,2CACNC,KAAM,kLAEVm6B,yBAA0B,CACtBp6B,KAAM,8BACNC,KAAM,0RAMVo6B,GAA+C,SAAU9sC,GAEzD,SAAS8sC,EAA8Bl6B,EAAW3S,GAC9C,IAAIG,EAAQJ,EAAOM,KAAKX,KAAMiT,EAAW3S,IAAiBN,KAG1D,OAFAS,EAAM4S,KAAO,gCACb9T,OAAOC,eAAeiB,EAAO0sC,EAA8BjtC,WACpDO,EAuCX,OA5CApB,EAAU8tC,EAA+B9sC,GAUzC8sC,EAA8BlS,4BAA8B,WACxD,OAAO,IAAIkS,EAA8BN,GAAqCpT,kBAAkB3mB,KAAM+5B,GAAqCpT,kBAAkB1mB,OAKjKo6B,EAA8BjS,sCAAwC,WAClE,OAAO,IAAIiS,EAA8BN,GAAqCnT,oBAAoB5mB,KAAM+5B,GAAqCnT,oBAAoB3mB,OAMrKo6B,EAA8BC,+BAAiC,SAAUC,GACrE,OAAO,IAAIF,EAA8BN,GAAqCC,yBAAyBh6B,KAAM+5B,GAAqCC,yBAAyB/5B,KAAO,oBAAsBs6B,IAK5MF,EAA8BG,mCAAqC,WAC/D,OAAO,IAAIH,EAA8BN,GAAqCE,uBAAuBj6B,KAAM+5B,GAAqCE,uBAAuBh6B,OAK3Ko6B,EAA8BI,iCAAmC,WAC7D,OAAO,IAAIJ,EAA8BN,GAAqCI,sBAAsBn6B,KAAM+5B,GAAqCI,sBAAsBl6B,OAKzKo6B,EAA8BK,uCAAyC,WACnE,OAAO,IAAIL,EAA8BN,GAAqCK,yBAAyBp6B,KAAM+5B,GAAqCK,yBAAyBn6B,OAExKo6B,EA7CuC,CA8ChDn6B,IGpFEy6B,GAAgC,WAChC,SAASA,EAAeC,GACpB1tC,KAAK2tC,sBAAsBD,GAC3B1tC,KAAK4tC,cAAgBzpB,OAAOupB,GA0BhC,OAxBAD,EAAevtC,UAAUytC,sBAAwB,SAAUD,GACvD,GAAIA,IAAkBhhC,EAAqBmhC,cAAgBH,IAAkBhhC,EAAqBohC,eAC9F,MAAMX,GAA8BC,+BAA+BM,GAEvE,IAAIK,IAAqB5pB,OAAOupB,GAChC,IAAKK,EACD,MAAMZ,GAA8BC,+BAA+BM,IAG3ED,EAAevtC,UAAUgnB,QAAU,SAAUtL,GACzC,OAAO5b,KAAK4tC,cAAc1mB,QAAQtL,IAEtC6xB,EAAevtC,UAAUonB,QAAU,SAAU1L,EAAKtX,GAC9CtE,KAAK4tC,cAActmB,QAAQ1L,EAAKtX,IAEpCmpC,EAAevtC,UAAUwnB,WAAa,SAAU9L,GAC5C5b,KAAK4tC,cAAclmB,WAAW9L,IAElC6xB,EAAevtC,UAAU0nB,QAAU,WAC/B,OAAOroB,OAAOsD,KAAK7C,KAAK4tC,gBAE5BH,EAAevtC,UAAU6nB,YAAc,SAAUnM,GAC7C,OAAO5b,KAAK4tC,cAAc9tC,eAAe8b,IAEtC6xB,EA7BwB,GCK/BO,GAA2B,WAC3B,SAASA,EAAUrsC,GAEf,GADA3B,KAAKiuC,WAAatsC,EACdoY,GAAYG,QAAQla,KAAKiuC,YAEzB,MAAMjT,GAAyBQ,sBAE/BzhB,GAAYG,QAAQla,KAAKkuC,aACzBluC,KAAKiuC,WAAaD,EAAUG,gBAAgBxsC,IAqLpD,OAlLApC,OAAO6uC,eAAeJ,EAAU9tC,UAAW,YAAa,CACpDwB,IAAK,WACD,OAAO1B,KAAKiuC,YAEhBI,YAAY,EACZC,cAAc,IAMlBN,EAAUG,gBAAkB,SAAUxsC,GAClC,GAAIA,EAAK,CACL,IAAI4sC,EAAe5sC,EAAI6yB,cAUvB,OATIza,GAAYoB,SAASozB,EAAc,KACnCA,EAAeA,EAAahC,MAAM,GAAI,GAEjCxyB,GAAYoB,SAASozB,EAAc,QACxCA,EAAeA,EAAahC,MAAM,GAAI,IAErCxyB,GAAYoB,SAASozB,EAAc,OACpCA,GAAgB,KAEbA,EAEX,OAAO5sC,GAKXqsC,EAAU9tC,UAAUsuC,cAAgB,WAEhC,IAAIC,EACJ,IACIA,EAAazuC,KAAK0uC,mBAEtB,MAAOhqC,GACH,MAAMs2B,GAAyBO,oBAAoB72B,GAGvD,IAAK+pC,EAAWE,kBAAoBF,EAAWG,aAC3C,MAAM5T,GAAyBO,oBAAoB,qBAAuBv7B,KAAKs7B,WAGnF,IAAKmT,EAAWI,UAAkD,WAAtCJ,EAAWI,SAASra,cAC5C,MAAMwG,GAAyBK,gCAAgCr7B,KAAKs7B,YAQ5E0S,EAAUc,kBAAoB,SAAUntC,EAAKotC,GACzC,OAAIh1B,GAAYG,QAAQ60B,GACbptC,EAEJA,EAAIuZ,QAAQ,KAAO,EAAIvZ,EAAM,IAAMotC,EAAcptC,EAAM,IAAMotC,GAMxEf,EAAUgB,kBAAoB,SAAUrtC,GACpC,OAAOqsC,EAAUG,gBAAgBxsC,EAAIyV,MAAM,KAAK,KAOpD42B,EAAU9tC,UAAU+uC,kBAAoB,SAAUta,GAC9C,IAAIua,EAAYlvC,KAAK0uC,mBACjBS,EAAYD,EAAUN,aAI1B,OAHIja,GAAkC,IAArBwa,EAAU9tC,QAAiB8tC,EAAU,KAAOloC,EAAsBmoC,QAAUD,EAAU,KAAOloC,EAAsBooC,gBAChIF,EAAU,GAAKxa,GAEZqZ,EAAUsB,gCAAgCJ,IAKrDlB,EAAU9tC,UAAUguC,QAAU,WAC1B,OAAOF,EAAUuB,UAAUvvC,KAAKs7B,YAMpC0S,EAAU9tC,UAAUwuC,iBAAmB,WAEnC,IAAIc,EAAQjzB,OAAO,8DAEfkzB,EAAQzvC,KAAKs7B,UAAUmU,MAAMD,GACjC,IAAKC,EACD,MAAMzU,GAAyBO,oBAAoB,qBAAuBv7B,KAAKs7B,WAGnF,IAAIoU,EAAgB,CAChBb,SAAUY,EAAM,GAChBd,gBAAiBc,EAAM,GACvBE,aAAcF,EAAM,GACpBG,YAAaH,EAAM,IAEnBI,EAAeH,EAAcC,aAAav4B,MAAM,KAMpD,OALAy4B,EAAeA,EAAa3zB,QAAO,SAAUgjB,GAAO,OAAOA,GAAOA,EAAI79B,OAAS,KAC/EquC,EAAcd,aAAeiB,GACxB91B,GAAYG,QAAQw1B,EAAcE,cAAgBF,EAAcE,YAAYz0B,SAAS,OACtFu0B,EAAcE,YAAcF,EAAcE,YAAYh+B,UAAU,EAAG89B,EAAcE,YAAYvuC,OAAS,IAEnGquC,GAEX1B,EAAU8B,iBAAmB,SAAUnuC,GACnC,IAAI6tC,EAAQjzB,OAAO,4BACfkzB,EAAQ9tC,EAAI8tC,MAAMD,GACtB,IAAKC,EACD,MAAMzU,GAAyBO,oBAAoB,qBAAuB55B,GAE9E,OAAO8tC,EAAM,IAEjBzB,EAAU+B,eAAiB,SAAUC,EAAaC,GAC9C,GAAID,EAAY,KAAO5oC,EAAU0B,cAAe,CAC5C,IAAInH,EAAM,IAAIqsC,EAAUiC,GACpBC,EAAiBvuC,EAAI+sC,mBACzB,OAAOwB,EAAerB,SAAW,KAAOqB,EAAevB,gBAAkBqB,EAE7E,OAAOA,GAMXhC,EAAUuB,UAAY,SAAU/jB,GAC5B,IAAI2kB,EAAa3kB,EAAWtQ,QAAQ,KAChCk1B,EAAa5kB,EAAWtQ,QAAQ,MACpC,OAAIk1B,GAAc,EACP5kB,EAAW5Z,UAAUw+B,EAAa,GAEpCD,GAAc,EACZ3kB,EAAW5Z,UAAUu+B,EAAa,GAEtC/oC,EAAUyB,cAErBmlC,EAAUsB,gCAAkC,SAAUJ,GAClD,OAAO,IAAIlB,EAAUkB,EAAUL,SAAW,KAAOK,EAAUP,gBAAkB,IAAMO,EAAUN,aAAa5oB,KAAK,OAKnHgoB,EAAUqC,oBAAsB,SAAUzsB,GAEtC,GAAI7J,GAAYG,QAAQ0J,GACpB,MAAO,GAGX,IAAI0sB,EAAatC,EAAUuB,UAAU3rB,GAEjC2sB,EAAmBx2B,GAAYsB,oBAAoBtB,GAAYG,QAAQo2B,GAAc1sB,EAAO0sB,GAEhG,IAAKC,EACD,MAAM/5B,GAAgBc,+BAA+BgD,KAAKC,UAAUg2B,IAExE,OAAOA,GAKXvC,EAAUwC,4BAA8B,SAAU5sB,GAC9C,GAAI7J,GAAYG,QAAQ0J,IAASA,EAAK1I,QAAQ,KAAO,EAEjD,OAAO,EAEX,IAAIu1B,EAAazC,EAAUqC,oBAAoBzsB,GAC/C,SAAU6sB,EAAW39B,MACjB29B,EAAWC,mBACXD,EAAWnqC,OACXmqC,EAAWpE,QAEZ2B,EA7LmB,GCN1B2C,GAAsC,WACtC,SAASA,KA8BT,OAvBAA,EAAqBC,2BAA6B,SAAU9mB,EAAeuiB,GACvE,GAAItyB,GAAYG,QAAQmyB,GACpB,OAAO,KAEX,IACI,IAAIwE,EAAkBjF,GAAcQ,kBAAkBtiB,EAAeuiB,GACrE,OAAOwE,EAAgB7E,aAAaD,KAExC,MAAOrnC,GACH,MAAM8R,GAAgBgB,wBAAwB60B,EAAO3nC,KAO7DisC,EAAqBG,4BAA8B,SAAUC,GACzD,IAAKA,EACD,MAAO,GAEX,IAAIC,EAAgB,IAAIhD,GAAU+C,GAClC,OAAO/C,GAAUqC,oBAAoBW,EAAc9C,YAEhDyC,EA/B8B,GCWrCM,GAAqC,SAAU5wC,GAE/C,SAAS4wC,EAAoB1hB,EAAU2hB,EAAatR,EAAY19B,GAC5D,IAAIzB,EAAQJ,EAAOM,KAAKX,KAAMuvB,EAAUqQ,IAAe5/B,KAUvD,OARAS,EAAM0wC,uBAAyB,MAC/B1wC,EAAMywC,YAAcA,EACpBzwC,EAAMyB,OAASA,EACfzB,EAAM2wC,gBAAkB,IAAI5oB,GAC5B/nB,EAAM4wC,eAAiB5wC,EAAM6wC,oBAAoB7wC,EAAMywC,YAAYxD,eACnEjtC,EAAM8wC,sBAAwB9wC,EAAM+wC,2BAA2B/wC,EAAMywC,YAAYxD,eAEjFjtC,EAAMgxC,sBACChxC,EAq3BX,OAj4BApB,EAAU4xC,EAAqB5wC,GAkB/B4wC,EAAoB/wC,UAAUoxC,oBAAsB,SAAU5D,GAC1D,OAAQA,GACJ,KAAKhhC,EAAqBmhC,aAC1B,KAAKnhC,EAAqBohC,eACtB,IAEI,OAAO,IAAIL,GAAeC,GAE9B,MAAOhpC,GACH1E,KAAKkC,OAAOmnB,QAAQ3kB,GACpB,OAIZ,OADA1E,KAAKkxC,YAAYxD,cAAgBhhC,EAAqB8b,cAC/C,IAAIA,IAMfyoB,EAAoB/wC,UAAUsxC,2BAA6B,SAAU9D,GACjE,OAAQA,GACJ,KAAKhhC,EAAqBmhC,aAC1B,KAAKnhC,EAAqBohC,eACtB,IAEI,OAAO,IAAIL,GAAe/gC,EAAqBohC,gBAEnD,MAAOppC,GAEH,OADA1E,KAAKkC,OAAOmnB,QAAQ3kB,GACb1E,KAAKoxC,gBAEpB,KAAK1kC,EAAqB8b,cAC1B,QACI,OAAOxoB,KAAKoxC,kBAOxBH,EAAoB/wC,UAAUuxC,oBAAsB,WAChD,IAAIhxC,EAAQT,KACR0xC,EAAatqC,EAAUG,aAAe,IAAMP,EAAoB6xB,SAChE8Y,EAAgBvqC,EAAUG,aAAe,IAAMP,EAAoB4D,YACnEgnC,EAAWxqC,EAAUG,aAAe,IAAMP,EAAoB6qC,MAC9DC,EAAe1qC,EAAUG,aAAe,IAAMP,EAAoB+qC,WAClEC,EAAehyC,KAAKqxC,eAAenqB,QAAQwqB,GAC3CO,EAAkBjyC,KAAKqxC,eAAenqB,QAAQyqB,GAC9CO,EAAalyC,KAAKqxC,eAAenqB,QAAQ0qB,GACzCO,EAAiBnyC,KAAKqxC,eAAenqB,QAAQ4qB,GAC7CM,EAAS,CAACJ,EAAcC,EAAiBC,EAAYC,GACrDE,EAAgB,CAACrrC,EAAoB6xB,SAAU7xB,EAAoB4D,YAAa5D,EAAoB6qC,MAAO7qC,EAAoB+qC,YACnIM,EAAcvvC,SAAQ,SAAUo/B,EAAUoQ,GAAS,OAAO7xC,EAAM8xC,kBAAkBrQ,EAAUkQ,EAAOE,QAQvGrB,EAAoB/wC,UAAUqyC,kBAAoB,SAAUC,EAAQluC,GAC5DA,GACAtE,KAAKyyC,kBAAkBD,EAAQluC,GAAO,IAO9C2sC,EAAoB/wC,UAAUwyC,qBAAuB,SAAUC,GAC3D,IACI,IAAIC,EAAat4B,KAAKS,MAAM43B,GAO5B,OAAQC,GAAoC,kBAAfA,EAA2BA,EAAa,KAEzE,MAAOtsC,GACH,OAAO,OAOf2qC,EAAoB/wC,UAAUgnB,QAAU,SAAUtL,GAC9C,OAAO5b,KAAKqxC,eAAenqB,QAAQtL,IAOvCq1B,EAAoB/wC,UAAUonB,QAAU,SAAU1L,EAAKtX,GACnDtE,KAAKqxC,eAAe/pB,QAAQ1L,EAAKtX,IAMrC2sC,EAAoB/wC,UAAUiiC,WAAa,SAAUvM,GACjD,IAAIW,EAAUv2B,KAAKknB,QAAQ0O,GAC3B,IAAKW,EACD,OAAO,KAEX,IAAIsc,EAAgB7yC,KAAK0yC,qBAAqBnc,GAC9C,OAAKsc,GAAkB1e,GAAcmD,gBAAgBub,GAG9ClT,GAAaS,SAAS,IAAIjM,GAAiB0e,GAFvC,MASf5B,EAAoB/wC,UAAUwgC,WAAa,SAAUnK,GACjDv2B,KAAKkC,OAAOgtB,MAAM,yCAClB,IAAItT,EAAM2a,EAAQ9B,qBAClBz0B,KAAKsnB,QAAQ1L,EAAKtB,KAAKC,UAAUgc,KAMrC0a,EAAoB/wC,UAAU4mC,qBAAuB,SAAU4K,GAC3D,IAAIptC,EAAQtE,KAAKknB,QAAQwqB,GACzB,IAAKptC,EAED,OADAtE,KAAKkC,OAAOgtB,MAAM,kEACX,KAEX,IAAI4jB,EAAgB9yC,KAAK0yC,qBAAqBpuC,GAC9C,OAAKwuC,GAAkBrL,GAAcG,gBAAgBkL,IAIrD9yC,KAAKkC,OAAOgtB,MAAM,uDACXyQ,GAAaS,SAAS,IAAIqH,GAAiBqL,KAJ9C9yC,KAAKkC,OAAOgtB,MAAM,kEACX,OASf+hB,EAAoB/wC,UAAUygC,qBAAuB,SAAU5K,GAC3D/1B,KAAKkC,OAAOgtB,MAAM,mDAClB,IAAIwiB,EAAa3b,EAAQ0C,wBACzBz4B,KAAKsnB,QAAQoqB,EAAYp3B,KAAKC,UAAUwb,KAM5Ckb,EAAoB/wC,UAAU6mC,yBAA2B,SAAUgM,GAC/D,IAAIzuC,EAAQtE,KAAKknB,QAAQ6rB,GACzB,IAAKzuC,EAED,OADAtE,KAAKkC,OAAOgtB,MAAM,sEACX,KAEX,IAAI8jB,EAAoBhzC,KAAK0yC,qBAAqBpuC,GAClD,OAAK0uC,GAAsBrK,GAAkBU,oBAAoB2J,IAIjEhzC,KAAKkC,OAAOgtB,MAAM,2DACXyQ,GAAaS,SAAS,IAAIuI,GAAqBqK,KAJlDhzC,KAAKkC,OAAOgtB,MAAM,sEACX,OASf+hB,EAAoB/wC,UAAU2hC,yBAA2B,SAAUjB,GAC/D5gC,KAAKkC,OAAOgtB,MAAM,uDAClB,IAAI6jB,EAAiBnS,EAAYnI,wBACjCz4B,KAAKsnB,QAAQyrB,EAAgBz4B,KAAKC,UAAUqmB,KAMhDqQ,EAAoB/wC,UAAU8mC,0BAA4B,SAAUiM,GAChE,IAAI3uC,EAAQtE,KAAKknB,QAAQ+rB,GACzB,IAAK3uC,EAED,OADAtE,KAAKkC,OAAOgtB,MAAM,uEACX,KAEX,IAAIgkB,EAAqBlzC,KAAK0yC,qBAAqBpuC,GACnD,OAAK4uC,GAAuB5J,GAAmBG,qBAAqByJ,IAIpElzC,KAAKkC,OAAOgtB,MAAM,4DACXyQ,GAAaS,SAAS,IAAIkJ,GAAsB4J,KAJnDlzC,KAAKkC,OAAOgtB,MAAM,uEACX,OASf+hB,EAAoB/wC,UAAU6gC,0BAA4B,SAAUD,GAChE9gC,KAAKkC,OAAOgtB,MAAM,wDAClB,IAAI+jB,EAAkBnS,EAAarI,wBACnCz4B,KAAKsnB,QAAQ2rB,EAAiB34B,KAAKC,UAAUumB,KAMjDmQ,EAAoB/wC,UAAUyjC,eAAiB,SAAUwP,GACrD,IAAI7uC,EAAQtE,KAAKknB,QAAQisB,GACzB,IAAK7uC,EAED,OADAtE,KAAKkC,OAAOgtB,MAAM,4DACX,KAEX,IAAIkkB,EAAiBpzC,KAAK0yC,qBAAqBpuC,GAC/C,OAAK8uC,GAAmB1J,GAAkBK,oBAAoBoJ,EAAgBC,IAI9EpzC,KAAKkC,OAAOgtB,MAAM,iDACXyQ,GAAaS,SAAS,IAAIsJ,GAAqB0J,KAJlDpzC,KAAKkC,OAAOgtB,MAAM,4DACX,OASf+hB,EAAoB/wC,UAAU+gC,eAAiB,SAAUD,GACrDhhC,KAAKkC,OAAOgtB,MAAM,6CAClB,IAAIikB,EAAiBnS,EAAY2I,yBACjC3pC,KAAKsnB,QAAQ6rB,EAAgB74B,KAAKC,UAAUymB,KAMhDiQ,EAAoB/wC,UAAUmnC,mBAAqB,SAAUgM,GACzD,IAAI/uC,EAAQtE,KAAKknB,QAAQmsB,GACzB,IAAK/uC,EAED,OADAtE,KAAKkC,OAAOgtB,MAAM,gEACX,KAEX,IAAIkkB,EAAiBpzC,KAAK0yC,qBAAqBpuC,GAC/C,OAAK8uC,GAAmBpJ,GAAsBI,wBAAwBiJ,EAAoBD,IAI1FpzC,KAAKkC,OAAOgtB,MAAM,qDACXyQ,GAAaS,SAAS,IAAI4J,GAAyBoJ,KAJtDpzC,KAAKkC,OAAOgtB,MAAM,gEACX,OAUf+hB,EAAoB/wC,UAAUknC,mBAAqB,SAAUiM,EAAoBC,GAC7EtzC,KAAKkC,OAAOgtB,MAAM,iDAClBlvB,KAAKsnB,QAAQ+rB,EAAoB/4B,KAAKC,UAAU+4B,KAKpDrC,EAAoB/wC,UAAU+jC,qBAAuB,SAAUroB,GAC3D,IAAItX,EAAQtE,KAAKoxC,gBAAgBlqB,QAAQtL,GACzC,IAAKtX,EAED,OADAtE,KAAKkC,OAAOgtB,MAAM,kEACX,KAEX,IAAIkkB,EAAiBpzC,KAAK0yC,qBAAqBpuC,GAC/C,OAAI8uC,GAAkB7I,GAAwBkB,0BAA0B7vB,EAAKw3B,IACzEpzC,KAAKkC,OAAOgtB,MAAM,uDACXyQ,GAAaS,SAAS,IAAImK,GAA2B6I,IAEzD,MAKXnC,EAAoB/wC,UAAU4jC,yBAA2B,WACrD,IAAIrjC,EAAQT,KACRuzC,EAAUvzC,KAAKoxC,gBAAgBxpB,UACnC,OAAO2rB,EAAQr3B,QAAO,SAAUN,GAC5B,OAAOnb,EAAMujC,oBAAoBpoB,OAQzCq1B,EAAoB/wC,UAAUszC,mBAAqB,SAAUC,EAAYC,GACrE1zC,KAAKoxC,gBAAgB9pB,QAAQza,GAAkB8mC,YAAaF,GAC5DzzC,KAAKoxC,gBAAgB9pB,QAAQza,GAAkB+mC,YAAaF,IAKhEzC,EAAoB/wC,UAAU2zC,mBAAqB,WAC/C,IAAIC,EAAM9zC,KAAKoxC,gBAAgBlqB,QAAQra,GAAkB8mC,cAAgBvsC,EAAUyB,aAC/E0d,EAAUvmB,KAAKoxC,gBAAgBlqB,QAAQra,GAAkB+mC,cAAgBxsC,EAAUyB,aACvF,MAAO,CAACirC,EAAKvtB,IAMjB0qB,EAAoB/wC,UAAUonC,qBAAuB,SAAU1rB,EAAK2b,GAChEv3B,KAAKkC,OAAOgtB,MAAM,mDAClBlvB,KAAKoxC,gBAAgB9pB,QAAQ1L,EAAKtB,KAAKC,UAAUgd,KAKrD0Z,EAAoB/wC,UAAU6zC,iBAAmB,WAC7C,IAAIC,EAAqBh0C,KAAKi0C,iBAAiBjtC,EAAoBktC,gBAC/DC,EAAkBn0C,KAAKqxC,eAAenqB,QAAQ8sB,GAClD,OAAKG,GAGEn0C,KAAKo0C,uBAAuB,CAAEtf,eAAgBqf,IAAmB,IAF7D,MAQflD,EAAoB/wC,UAAUm0C,iBAAmB,SAAU9d,GACvD,IAAIyd,EAAqBh0C,KAAKi0C,iBAAiBjtC,EAAoBktC,gBAC/D3d,GACAv2B,KAAKkC,OAAOmnB,QAAQ,wCACpBrpB,KAAKqxC,eAAe/pB,QAAQ0sB,EAAoBzd,EAAQzB,kBAGxD90B,KAAKkC,OAAOmnB,QAAQ,+DACpBrpB,KAAKqxC,eAAe3pB,WAAWssB,KAOvC/C,EAAoB/wC,UAAUk0C,uBAAyB,SAAUtS,GAC7D,IAAI5B,EAAclgC,KAAK6/B,iBACvB,OAAOK,EAAYhkB,QAAO,SAAUo4B,GAChC,QAAIxS,EAAcjN,UAAYiN,EAAcjN,SAASL,gBAAkB8f,EAAWzf,SAASL,mBAGvFsN,EAAcjO,eAAiBiO,EAAcjO,gBAAkBygB,EAAWzgB,mBAG1EiO,EAAchN,gBAAkBgN,EAAchN,iBAAmBwf,EAAWxf,oBAG5EgN,EAAcnN,UAAYmN,EAAcnN,WAAa2f,EAAW3f,aAGhEmN,EAAcxN,aAAewN,EAAcxN,cAAgBggB,EAAWhgB,oBAWlF2c,EAAoB/wC,UAAUq0C,sBAAwB,SAAUC,EAAWC,GACvE,IAAIxS,EAAmBjiC,KAAK6/B,iBAAiB3jB,QAAO,SAAUmkB,GAC1D,GAAIoU,EAAK,CACL,IAAIC,EAAarU,EAAY5K,eAAiB4K,EAAY5K,cAAc,OACxE,OAAOgf,IAAQC,EAEnB,QAAIF,GACOA,IAAcnU,EAAYxL,YAIzC,GAAgC,IAA5BoN,EAAiB5gC,OACjB,OAAO4gC,EAAiB,GAEvB,GAAIA,EAAiB5gC,OAAS,EAC/B,MAAMmV,GAAgByB,6CAE1B,OAAO,MAMXg5B,EAAoB/wC,UAAUsnC,mBAAqB,SAAUmN,GACzD,IAAIrwC,EAAQtE,KAAKknB,QAAQytB,GACzB,IAAKrwC,EAED,OADAtE,KAAKkC,OAAOgtB,MAAM,gEACX,KAEX,IAAI0lB,EAAwB50C,KAAK0yC,qBAAqBpuC,GACtD,OAAKswC,GAA0BlJ,GAAiBC,mBAAmBgJ,EAAoBC,IAIvF50C,KAAKkC,OAAOgtB,MAAM,qDACXyQ,GAAaS,SAAS,IAAIsL,GAAoBkJ,KAJjD50C,KAAKkC,OAAOgtB,MAAM,gEACX,OAUf+hB,EAAoB/wC,UAAUqnC,mBAAqB,SAAUoN,EAAoBE,GAC7E70C,KAAKkC,OAAOgtB,MAAM,iDAClBlvB,KAAKsnB,QAAQqtB,EAAoBr6B,KAAKC,UAAUs6B,KAOpD5D,EAAoB/wC,UAAU40C,kBAAoB,SAAU5S,EAAUxd,GAClE,IAAI9I,EAAM8I,EAAc1kB,KAAKi0C,iBAAiB/R,GAAYA,EAC1D,GAAIliC,KAAKkxC,YAAY6D,uBAAwB,CACzC,IAAIC,EAAah1C,KAAKi1C,cAAcr5B,GACpC,GAAIo5B,EAEA,OADAh1C,KAAKkC,OAAOgtB,MAAM,uGACX8lB,EAGf,IAAI1wC,EAAQtE,KAAKuxC,sBAAsBrqB,QAAQtL,GAC/C,IAAKtX,EAAO,CAER,GAAItE,KAAKkxC,YAAYxD,gBAAkBhhC,EAAqBmhC,aAAc,CACtE,IAAIzkB,EAAOppB,KAAKqxC,eAAenqB,QAAQtL,GACvC,GAAIwN,EAEA,OADAppB,KAAKkC,OAAOgtB,MAAM,sFACX9F,EAIf,OADAppB,KAAKkC,OAAOgtB,MAAM,+EACX,KAGX,OADAlvB,KAAKkC,OAAOgtB,MAAM,wEACX5qB,GASX2sC,EAAoB/wC,UAAUuyC,kBAAoB,SAAUvQ,EAAU59B,EAAOogB,GACzE,IAAI9I,EAAM8I,EAAc1kB,KAAKi0C,iBAAiB/R,GAAYA,EAC1DliC,KAAKuxC,sBAAsBjqB,QAAQ1L,EAAKtX,GACpCtE,KAAKkxC,YAAY6D,yBACjB/0C,KAAKkC,OAAOgtB,MAAM,kGAClBlvB,KAAKk1C,cAAct5B,EAAKtX,KAQhC2sC,EAAoB/wC,UAAUwnB,WAAa,SAAU9L,GAOjD,OANA5b,KAAKqxC,eAAe3pB,WAAW9L,GAC/B5b,KAAKuxC,sBAAsB7pB,WAAW9L,GAClC5b,KAAKkxC,YAAY6D,yBACjB/0C,KAAKkC,OAAOgtB,MAAM,wFAClBlvB,KAAKm1C,gBAAgBv5B,KAElB,GAMXq1B,EAAoB/wC,UAAU6nB,YAAc,SAAUnM,GAClD,OAAO5b,KAAKqxC,eAAetpB,YAAYnM,IAAQ5b,KAAKuxC,sBAAsBxpB,YAAYnM,IAK1Fq1B,EAAoB/wC,UAAU0nB,QAAU,WACpC,OAAOrhB,EAASvG,KAAKqxC,eAAezpB,UAAW5nB,KAAKuxC,sBAAsB3pB,YAK9EqpB,EAAoB/wC,UAAU4oB,MAAQ,WAClC,OAAO9kB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIS,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAEL,MAAO,CAAC,EAAarF,KAAKmkC,qBAC1B,KAAK,EAYD,OAVAxoB,EAAGrW,OACHtF,KAAK6kC,oBAEL7kC,KAAK4nB,UAAU9kB,SAAQ,SAAUo/B,IAExBzhC,EAAM4wC,eAAetpB,YAAYma,KAAazhC,EAAM8wC,sBAAsBxpB,YAAYma,KAA8D,IAA9CA,EAAShnB,QAAQ9T,EAAUG,gBAAgE,IAAtC26B,EAAShnB,QAAQza,EAAM8uB,WACnL9uB,EAAMinB,WAAWwa,MAGzBliC,KAAKoxC,gBAAgBtoB,QACd,CAAC,WAW5BmoB,EAAoB/wC,UAAUg1C,cAAgB,SAAUE,EAAYC,EAAaC,GAC7E,IAAIC,EAAYvkC,mBAAmBokC,GAAc,IAAMpkC,mBAAmBqkC,GAAe,WACzF,GAAIC,EAAS,CACT,IAAIE,EAAax1C,KAAKy1C,wBAAwBH,GAC9CC,GAAa,WAAaC,EAAa,IAEvCx1C,KAAKkxC,YAAYwE,gBACjBH,GAAa,WAEjBI,SAASC,OAASL,GAMtBtE,EAAoB/wC,UAAU+0C,cAAgB,SAAUG,GAGpD,IAFA,IAAI/hC,EAAOrC,mBAAmBokC,GAAc,IACxCS,EAAaF,SAASC,OAAOx+B,MAAM,KAC9BlW,EAAI,EAAGA,EAAI20C,EAAWx0C,OAAQH,IAAK,CACxC,IAAI00C,EAASC,EAAW30C,GACxB,MAA4B,MAArB00C,EAAOE,OAAO,GACjBF,EAASA,EAAOhkC,UAAU,GAE9B,GAA6B,IAAzBgkC,EAAO16B,QAAQ7H,GACf,OAAOmI,mBAAmBo6B,EAAOhkC,UAAUyB,EAAKhS,OAAQu0C,EAAOv0C,SAGvE,OAAO+F,EAAUyB,cAKrBooC,EAAoB/wC,UAAU61C,iBAAmB,WAC7C,IAAIt1C,EAAQT,KACRg2C,EAAe5uC,EAAUG,aAAe,IAAMvH,KAAKuvB,SACnDsmB,EAAaF,SAASC,OAAOx+B,MAAM,KACvCy+B,EAAW/yC,SAAQ,SAAU8yC,GACzB,MAA4B,MAArBA,EAAOE,OAAO,GAEjBF,EAASA,EAAOhkC,UAAU,GAE9B,GAAqC,IAAjCgkC,EAAO16B,QAAQ86B,GAAqB,CACpC,IAAIC,EAAYL,EAAOx+B,MAAM,KAAK,GAClC3W,EAAM00C,gBAAgBc,QAQlChF,EAAoB/wC,UAAUi1C,gBAAkB,SAAUC,GACtDp1C,KAAKk1C,cAAcE,EAAYhuC,EAAUyB,cAAe,IAM5DooC,EAAoB/wC,UAAUu1C,wBAA0B,SAAUS,GAC9D,IAAIC,EAAQ,IAAI3nB,KACZ4nB,EAAO,IAAI5nB,KAAK2nB,EAAMpO,UAAYmO,EAAiBl2C,KAAKmxC,wBAC5D,OAAOiF,EAAK3nB,eAKhBwiB,EAAoB/wC,UAAUm2C,SAAW,WACrC,OAAOr2C,KAAKqxC,gBAKhBJ,EAAoB/wC,UAAUo2C,SAAW,aAQzCrF,EAAoB/wC,UAAU+zC,iBAAmB,SAAUr4B,GACvD,IAAI26B,EAAev2C,KAAK0yC,qBAAqB92B,GAC7C,OAAK26B,EAMEj8B,KAAKC,UAAUqB,GALd7B,GAAYiB,WAAWY,EAAKxU,EAAUG,eAAiBwS,GAAYiB,WAAWY,EAAK5U,EAAoBwvC,eAChG56B,EAEJxU,EAAUG,aAAe,IAAMvH,KAAKuvB,SAAW,IAAM3T,GAQpEq1B,EAAoB/wC,UAAUu2C,qBAAuB,SAAUtK,GAC3D,IAAIuK,EAAU9K,GAAcQ,kBAAkBpsC,KAAK4/B,WAAYuM,GAAaH,aAAa/F,GACzF,OAAOjmC,KAAKi0C,iBAAiBrnC,EAAmB+pC,UAAY,IAAMD,IAMtEzF,EAAoB/wC,UAAU02C,iBAAmB,SAAUzK,GACvD,IAAIuK,EAAU9K,GAAcQ,kBAAkBpsC,KAAK4/B,WAAYuM,GAAaH,aAAa/F,GACzF,OAAOjmC,KAAKi0C,iBAAiBrnC,EAAmBiqC,cAAgB,IAAMH,IAM1EzF,EAAoB/wC,UAAU42C,iBAAmB,SAAU3K,GAEvD,IAAIuK,EAAU9K,GAAcQ,kBAAkBpsC,KAAK4/B,WAAYuM,GAAaH,aAAa/F,GACzF,OAAOjmC,KAAKi0C,iBAAiBrnC,EAAmBmqC,cAAgB,IAAML,IAK1EzF,EAAoB/wC,UAAU82C,mBAAqB,SAAUC,GACzD,IAAIC,EAAgBl3C,KAAK82C,iBAAiBG,GACtC5K,EAAQrsC,KAAK80C,kBAAkBoC,GACnC,IAAK7K,EACD,OAAO,KAEX,IAAI8K,EAAoBn3C,KAAKy2C,qBAAqBpK,GAClD,OAAOrsC,KAAK80C,kBAAkBqC,IAOlClG,EAAoB/wC,UAAUk3C,mBAAqB,SAAU/K,EAAOrU,EAAOqf,EAAmB7C,EAAWje,GACrGv2B,KAAKkC,OAAOgtB,MAAM,iDAElB,IAAIgoB,EAAgBl3C,KAAK82C,iBAAiBzK,GAC1CrsC,KAAKyyC,kBAAkByE,EAAe7K,GAAO,GAE7C,IAAIiL,EAAgBt3C,KAAK42C,iBAAiBvK,GAC1CrsC,KAAKyyC,kBAAkB6E,EAAetf,GAAO,GAE7C,IAAImf,EAAoBn3C,KAAKy2C,qBAAqBpK,GAElD,GADArsC,KAAKyyC,kBAAkB0E,EAAmBE,GAAmB,GACzD9gB,EAAS,CACT,IAAIghB,EAAgB,CAChBrW,WAAY3K,EAAQ1C,cACpB3G,KAAMgH,GAAkBsjB,iBAE5Bx3C,KAAKyyC,kBAAkB7lC,EAAmB6qC,eAAgBn9B,KAAKC,UAAUg9B,IAAgB,QAExF,IAAKx9B,GAAYG,QAAQs6B,GAAY,CAClC+C,EAAgB,CAChBrW,WAAYsT,EACZtnB,KAAMgH,GAAkBwjB,KAE5B13C,KAAKyyC,kBAAkB7lC,EAAmB6qC,eAAgBn9B,KAAKC,UAAUg9B,IAAgB,KAOjGtG,EAAoB/wC,UAAUy3C,kBAAoB,SAAUtL,GACxD,IAAI5rC,EAAQT,KACZA,KAAKkC,OAAOgtB,MAAM,gDAEbnV,GAAYG,QAAQmyB,IACrBrsC,KAAK4nB,UAAU9kB,SAAQ,SAAU8Y,IACD,IAAxBA,EAAIV,QAAQmxB,IACZ5rC,EAAMinB,WAAW9L,MAKzBywB,IACArsC,KAAK0nB,WAAW1nB,KAAK82C,iBAAiBzK,IACtCrsC,KAAK0nB,WAAW1nB,KAAK42C,iBAAiBvK,IACtCrsC,KAAK0nB,WAAW1nB,KAAKy2C,qBAAqBpK,KAE9CrsC,KAAK0nB,WAAW1nB,KAAKi0C,iBAAiBrnC,EAAmBgrC,iBACzD53C,KAAK0nB,WAAW1nB,KAAKi0C,iBAAiBrnC,EAAmBirC,aACzD73C,KAAK0nB,WAAW1nB,KAAKi0C,iBAAiBrnC,EAAmBkrC,WACzD93C,KAAK0nB,WAAW1nB,KAAKi0C,iBAAiBrnC,EAAmBmrC,iBACzD/3C,KAAK0nB,WAAW1nB,KAAKi0C,iBAAiBrnC,EAAmB6qC,iBACzDz3C,KAAK0nB,WAAW1nB,KAAKi0C,iBAAiBrnC,EAAmBorC,iBACzDh4C,KAAKi4C,0BAAyB,IAMlChH,EAAoB/wC,UAAUg4C,oBAAsB,SAAU/L,GAG1D,GAFAnsC,KAAKkC,OAAOgtB,MAAM,kDAEdid,EAAa,CACb,IAAIgM,EAAWn4C,KAAK82C,iBAAiB3K,GACjC8K,EAAcj3C,KAAKuxC,sBAAsBrqB,QAAQixB,GACrDn4C,KAAKkC,OAAO6sB,QAAQ,sFAAwFkoB,GAC5Gj3C,KAAK23C,kBAAkBV,GAAe7vC,EAAUyB,cAEpD7I,KAAK+1C,oBAOT9E,EAAoB/wC,UAAUk4C,8BAAgC,SAAUC,GACpE,IAAI53C,EAAQT,KACZA,KAAKkC,OAAOgtB,MAAM,4DAElBlvB,KAAK4nB,UAAU9kB,SAAQ,SAAU8Y,GAE7B,IAAuD,IAAnDA,EAAIV,QAAQtO,EAAmBmqC,eAAnC,CAIA,IAAIuB,EAAa73C,EAAM8wC,sBAAsBrqB,QAAQtL,GACrD,GAAK08B,EAAL,CAIA,IAAIC,EAAc5H,GAAqBC,2BAA2BnwC,EAAMm/B,WAAY0Y,GAChFC,GAAeA,EAAYF,kBAAoBA,IAC/C53C,EAAMyB,OAAO6sB,QAAQ,gGAAkGupB,GACvH73C,EAAMk3C,kBAAkBW,SAGhCt4C,KAAK+1C,mBACL/1C,KAAKi4C,0BAAyB,IAElChH,EAAoB/wC,UAAUs4C,iBAAmB,SAAUC,EAAiB3uB,GACxE9pB,KAAKkC,OAAOgtB,MAAM,+CAClB,IAAIwpB,EAAe5uB,EAActH,aAAalI,KAAKC,UAAUk+B,IAC7Dz4C,KAAKyyC,kBAAkB7lC,EAAmBgrC,eAAgBc,GAAc,IAK5EzH,EAAoB/wC,UAAUy4C,iBAAmB,SAAUtM,EAAOviB,GAC9D9pB,KAAKkC,OAAOgtB,MAAM,+CAElB,IAAI0pB,EAAsB54C,KAAK80C,kBAAkBloC,EAAmBgrC,gBAAgB,GACpF,IAAKgB,EACD,MAAMx5B,GAAiB2B,iCAE3B,IAAI83B,EAAgB74C,KAAK0yC,qBAAqB5oB,EAAcQ,aAAasuB,IACzE,IAAKC,EACD,MAAMz5B,GAAiB0B,4CAI3B,GAFA9gB,KAAK0nB,WAAW1nB,KAAKi0C,iBAAiBrnC,EAAmBgrC,iBAErD79B,GAAYG,QAAQ2+B,EAAcrpB,WAAY,CAC9C,IAAI2nB,EAAoBn3C,KAAKy2C,qBAAqBpK,GAC9CyM,EAAkB94C,KAAK80C,kBAAkBqC,GAC7C,IAAK2B,EACD,MAAM15B,GAAiB6B,+BAE3B43B,EAAcrpB,UAAYspB,EAE9B,OAAOD,GAKX5H,EAAoB/wC,UAAU64C,uBAAyB,WACnD/4C,KAAKkC,OAAOgtB,MAAM,qDAClB,IAAI8pB,EAAgBh5C,KAAK80C,kBAAkBloC,EAAmBorC,gBAAgB,GAC9E,IAAKgB,EAED,OADAh5C,KAAKkC,OAAOgtB,MAAM,8EACX,KAEX,IAAI2pB,EAAgB74C,KAAK0yC,qBAAqBsG,GAC9C,OAAKH,IACD74C,KAAKkC,OAAOoE,MAAM,8EACX,OAIf2qC,EAAoB/wC,UAAU+4C,wBAA0B,SAAUlW,GAC9D,IAAIxT,EAAWvvB,KAAKk5C,2BACpB,OAAInW,EACOxT,IAAavvB,KAAKuvB,WAGhBA,GAGjB0hB,EAAoB/wC,UAAUg5C,yBAA2B,WACrD,IAAIt9B,EAAMxU,EAAUG,aAAe,IAAMqF,EAAmBusC,uBAC5D,OAAOn5C,KAAK80C,kBAAkBl5B,GAAK,IAEvCq1B,EAAoB/wC,UAAU+3C,yBAA2B,SAAUmB,GAE/D,IAAIx9B,EAAMxU,EAAUG,aAAe,IAAMqF,EAAmBusC,uBAC5D,GAAIC,EAAY,CACZ,GAAIp5C,KAAKk5C,2BACL,MAAM95B,GAAiBW,mCAIvB/f,KAAKyyC,kBAAkB72B,EAAK5b,KAAKuvB,UAAU,QAGzC6pB,GAAcp5C,KAAKk5C,6BAA+Bl5C,KAAKuvB,UAC7DvvB,KAAK0nB,WAAW9L,IAMxBq1B,EAAoB/wC,UAAUm5C,mBAAqB,WAE/C,IAAIC,EAAoBt5C,KAAK80C,kBAAkB9tC,EAAoBwvC,eAC/D8C,IACAt5C,KAAKqxC,eAAe3pB,WAAW1gB,EAAoBwvC,eACnDx2C,KAAKkC,OAAOmnB,QAAQ,oCAGxB,IAAIkwB,EAAoBv5C,KAAK80C,kBAAkB9tC,EAAoB6xB,UAAU,GACzE0gB,IACAv5C,KAAK0nB,WAAW1nB,KAAKi0C,iBAAiBjtC,EAAoB6xB,WAC1D74B,KAAKkC,OAAOmnB,QAAQ,yCAExB,IAAImwB,EAAsBD,GAAqBD,EAC/C,GAAIE,EAAqB,CACrB,IAAIvU,EAAgB,IAAI,GAAQuU,EAAqBx5C,KAAK4/B,YAC1D,GAAIqF,EAAcvO,QAAUuO,EAAcvO,OAAOI,mBAE7C,OADA92B,KAAKkC,OAAOmnB,QAAQ,6GACb4b,EAAcvO,OAAOI,mBAE3B,GAAImO,EAAcvO,QAAUuO,EAAcvO,OAAOQ,IAElD,OADAl3B,KAAKkC,OAAOmnB,QAAQ,8FACb4b,EAAcvO,OAAOQ,IAG5Bl3B,KAAKkC,OAAOmnB,QAAQ,0JAG5B,OAAO,MAKX4nB,EAAoB/wC,UAAUojC,yBAA2B,SAAUmW,EAAiBvY,GAChF,IAAImC,EAAkBnC,EAAWzI,wBACjC,GAAIghB,IAAoBpW,EAAiB,CACrC,IAAIqW,EAAY15C,KAAKknB,QAAQuyB,GAC7B,GAAIC,EAIA,OAHA15C,KAAK0nB,WAAW+xB,GAChBz5C,KAAKsnB,QAAQ+b,EAAiBqW,GAC9B15C,KAAKkC,OAAOmnB,QAAQ,uBAAyB6X,EAAW7I,eAAiB,cAClEgL,EAGPrjC,KAAKkC,OAAOoE,MAAM,mCAAqC46B,EAAW7I,eAAiB,yEAG3F,OAAOohB,GAEJxI,EAl4B6B,CAm4BtCtR,IACEga,GAAgC,SAAUpqB,EAAUrtB,GACpD,IAAI03C,EAAe,CACflM,cAAehhC,EAAqB8b,cACpCusB,wBAAwB,EACxBW,eAAe,GAEnB,OAAO,IAAIzE,GAAoB1hB,EAAUqqB,EAAcjnB,GAA+BzwB,KLn5B1F,SAAWyqC,GACPA,EAAa,OAAS,MACtBA,EAAa,QAAU,QAF3B,CAGGA,KAAiBA,GAAe,KCNnC,SAAWC,GAEPA,EAAmBA,EAAmB,QAAU,GAAK,OAErDA,EAAmB,eAAiB,oCAEpCA,EAAmB,YAAc,gCAEjCA,EAAmB,cAAgB,iCAEnCA,EAAmB,gBAAkB,mCAErCA,EAAmB,qBAAuB,mCAZ9C,CAaGA,KAAuBA,GAAqB;;AKjB/C,IAAI,GAAO,qBACPrmB,GAAU,QCYVszB,GAAmC,IACnCC,GAAyB,CACzBC,0BAA2BF,GAC3BG,sBAAsB,EACtBC,SAAU7yC,EAAUyB,cAEpBqxC,GAAgC,CAChClsB,eAAgB,aAGhBC,mBAAmB,EACnBC,SAAU9uB,GAASyuB,KACnBta,cAAenM,EAAUyB,cAEzBsxC,GAAiC,CACjCC,oBAAqB,WACjB,OAAO,EAAUp6C,UAAM,OAAQ,GAAQ,WACnC,IAAI4yB,EACJ,OAAO,EAAY5yB,MAAM,SAAU2b,GAE/B,MADAiX,EAAa,qEACP5f,GAAUQ,sBAAsBof,UAIlDynB,qBAAsB,WAClB,OAAO,EAAUr6C,UAAM,OAAQ,GAAQ,WACnC,IAAI4yB,EACJ,OAAO,EAAY5yB,MAAM,SAAU2b,GAE/B,MADAiX,EAAa,sEACP5f,GAAUQ,sBAAsBof,WAKlD0nB,GAAuB,CACvBxG,IAAK1sC,EAAUE,IACfif,QAASA,GACTg0B,IAAKnzC,EAAUyB,aACf2xC,GAAIpzC,EAAUyB,cAEd4xC,GAA6B,CAC7BC,aAActzC,EAAUyB,aACxB8xC,qBAAiBzU,GAEjB0U,GAA8B,CAC9BC,mBAAoBjO,GAAmBkO,KACvCC,OAAQ,GAAK3zC,EAAUM,uBAEvBszC,GAA4B,CAC5BC,YAAa,CACT1qB,QAAS,GACTC,WAAY,KAUpB,SAAS0qB,GAAyBv/B,GAC9B,IAAIw/B,EAAkBx/B,EAAGy/B,YAAaC,EAAoB1/B,EAAG2/B,cAAeC,EAAmB5/B,EAAG8R,cAAe+tB,EAAwB7/B,EAAG8/B,iBAAkBC,EAAwB//B,EAAGggC,iBAAkBC,EAAuBjgC,EAAGkgC,gBAAiBC,EAAoBngC,EAAGmgC,kBAAmBC,EAAcpgC,EAAGogC,YAAaC,EAAYrgC,EAAGqgC,UAAWC,EAAyBtgC,EAAGsgC,uBAAwBC,EAAoBvgC,EAAGugC,kBAAmBC,EAAoBxgC,EAAGwgC,kBACzc1uB,EAAgB,EAAS,EAAS,GAAIysB,IAAgCqB,GAC1E,MAAO,CACHH,YAAagB,GAAiBjB,GAC9BG,cAAe,EAAS,EAAS,GAAIxB,IAAyBuB,GAC9D5tB,cAAeA,EACfguB,iBAAkBD,GAAyB,IAAIrU,GAAoBgU,EAAgB5rB,SAAUoD,IAC7FgpB,iBAAkBD,GAAyBvB,GAC3C0B,gBAAiBD,GAAwBjpB,GACzCmpB,kBAAmBA,GAAqBrB,GACxCsB,YAAa,EAAS,EAAS,GAAIzB,IAAuByB,GAC1DC,UAAW,EAAS,EAAS,GAAIhB,IAA4BgB,GAC7DC,uBAAwBA,GAA0B,KAClDC,kBAAmBA,GAAqB,KACxCC,kBAAmBA,GAAqB,MAOhD,SAASC,GAAiBhB,GACtB,OAAO,EAAS,CAAEiB,mBAAoB,GAAIC,kBAAmB1B,IAA+BQ;;AC5FhG,IAAImB,GAAuB,CACvBnC,oBAAqB,WACjB,IAAIxnB,EAAa,gGACjB,OAAOxwB,QAAQE,OAAO0Q,GAAUQ,sBAAsBof,KAE1DynB,qBAAsB,WAClB,IAAIznB,EAAa,iGACjB,OAAOxwB,QAAQE,OAAO0Q,GAAUQ,sBAAsBof,MCD1D4pB,GAA6B,WAC7B,SAASA,KAsHT,OA9GAA,EAAYt8C,UAAUk6C,oBAAsB,SAAUz4C,EAAKC,GACvD,OAAOoC,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIuD,EAAU4f,EAAKxH,EACnB,OAAO5W,EAAY/E,MAAM,SAAUirB,GAC/B,OAAQA,EAAG5lB,OACP,KAAK,EAED,OADA4lB,EAAG1lB,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAay2C,MAAM96C,EAAK,CACxBG,OAAQ6K,EAAkB+vC,IAC1B95C,QAAS5C,KAAK28C,gBAAgB/6C,MAE1C,KAAK,EAED,OADA2B,EAAW0nB,EAAG3lB,OACP,CAAC,EAAa,GACzB,KAAK,EAED,MADA6d,EAAM8H,EAAG3lB,OACL6e,OAAOy4B,UAAUC,OACXz9B,GAAiBmC,4BAA4B4B,EAAKxhB,GAGlDyd,GAAiBgC,mCAE/B,KAAK,EAKD,OAJA6J,EAAG1lB,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACtB2V,EAAK,CACD/Y,QAAS5C,KAAK88C,cAAcv5C,EAASX,UAElC,CAAC,EAAaW,EAAS0jC,QAClC,KAAK,EAAG,MAAO,CAAC,GAAetrB,EAAG3W,KAAQimB,EAAG3lB,OACrCqW,EAAGrY,OAASC,EAASD,OACrBqY,IACR,KAAK,EAED,MADAsP,EAAG3lB,OACG8Z,GAAiBoC,wCAAwC7f,GACnE,KAAK,EAAG,MAAO,CAAC,WAWhC66C,EAAYt8C,UAAUm6C,qBAAuB,SAAU14C,EAAKC,GACxD,OAAOoC,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI+8C,EAASx5C,EAAUgmB,EAAK5N,EAC5B,OAAO5W,EAAY/E,MAAM,SAAUirB,GAC/B,OAAQA,EAAG5lB,OACP,KAAK,EACD03C,EAAWn7C,GAAWA,EAAQoD,MAASoC,EAAUyB,aACjDoiB,EAAG5lB,MAAQ,EACf,KAAK,EAED,OADA4lB,EAAG1lB,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAay2C,MAAM96C,EAAK,CACxBG,OAAQ6K,EAAkBqwC,KAC1Bp6C,QAAS5C,KAAK28C,gBAAgB/6C,GAC9BoD,KAAM+3C,KAElB,KAAK,EAED,OADAx5C,EAAW0nB,EAAG3lB,OACP,CAAC,EAAa,GACzB,KAAK,EAED,MADAikB,EAAM0B,EAAG3lB,OACL6e,OAAOy4B,UAAUC,OACXz9B,GAAiBiC,6BAA6BkI,EAAK5nB,GAGnDyd,GAAiBgC,mCAE/B,KAAK,EAKD,OAJA6J,EAAG1lB,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACtB2V,EAAK,CACD/Y,QAAS5C,KAAK88C,cAAcv5C,EAASX,UAElC,CAAC,EAAaW,EAAS0jC,QAClC,KAAK,EAAG,MAAO,CAAC,GAAetrB,EAAG3W,KAAQimB,EAAG3lB,OACrCqW,EAAGrY,OAASC,EAASD,OACrBqY,IACR,KAAK,EAED,MADAsP,EAAG3lB,OACG8Z,GAAiBoC,wCAAwC7f,GACnE,KAAK,EAAG,MAAO,CAAC,WAShC66C,EAAYt8C,UAAUy8C,gBAAkB,SAAU/6C,GAC9C,IAAIgB,EAAU,IAAIq6C,QAClB,IAAMr7C,IAAWA,EAAQgB,QACrB,OAAOA,EAEX,IAAIs6C,EAAiBt7C,EAAQgB,QAI7B,OAHArD,OAAOsD,KAAKq6C,GAAgBp6C,SAAQ,SAAU8Y,GAC1ChZ,EAAQu6C,OAAOvhC,EAAKshC,EAAethC,OAEhChZ,GAEX45C,EAAYt8C,UAAU48C,cAAgB,SAAUl6C,GAC5C,IAAIw6C,EAAa,GAIjB,OAHAx6C,EAAQE,SAAQ,SAAUwB,EAAOsX,GAC7BwhC,EAAWxhC,GAAOtX,KAEf84C,GAEJZ,EAvHqB,GCD5Ba,GAA2B,WAC3B,SAASA,KAuHT,OA/GAA,EAAUn9C,UAAUk6C,oBAAsB,SAAUz4C,EAAKC,GACrD,OAAOoC,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,MAAO,CAAC,EAAc3b,KAAKs9C,iBAAiB37C,EAAKgL,EAAkB+vC,IAAK96C,WAUpFy7C,EAAUn9C,UAAUm6C,qBAAuB,SAAU14C,EAAKC,GACtD,OAAOoC,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,MAAO,CAAC,EAAc3b,KAAKs9C,iBAAiB37C,EAAKgL,EAAkBqwC,KAAMp7C,WAUrFy7C,EAAUn9C,UAAUo9C,iBAAmB,SAAU37C,EAAKG,EAAQF,GAC1D,IAAInB,EAAQT,KACZ,OAAO,IAAIoC,SAAQ,SAAUC,EAASC,GAClC,IAAIC,EAAM,IAAIC,eAsCd,GArCAD,EAAIE,KAAKX,EAAQH,GAAkB,GACnClB,EAAM88C,cAAch7C,EAAKX,GACzBW,EAAIc,OAAS,YACLd,EAAIe,OAAS,KAAOf,EAAIe,QAAU,OAC9BxB,IAAW6K,EAAkBqwC,KAC7B16C,EAAO8c,GAAiBiC,6BAA6B,sBAAwB9e,EAAIe,OAAQ3B,IAGzFW,EAAO8c,GAAiBmC,4BAA4B,sBAAwBhf,EAAIe,OAAQ3B,KAGhG,IACI,IAAI67C,EAAeljC,KAAKS,MAAMxY,EAAIiB,cAC9Bi6C,EAAkB,CAClB76C,QAASnC,EAAMq8C,cAAcv6C,GAC7ByC,KAAMw4C,EACNl6C,OAAQf,EAAIe,QAEhBjB,EAAQo7C,GAEZ,MAAO/4C,GACHpC,EAAO8c,GAAiBoC,wCAAwC7f,MAGxEY,EAAIkB,QAAU,WACN0gB,OAAOy4B,UAAUC,OACb/6C,IAAW6K,EAAkBqwC,KAC7B16C,EAAO8c,GAAiBiC,6BAA6B,sBAAwB9e,EAAIe,OAAQ3B,IAGzFW,EAAO8c,GAAiBmC,4BAA4B,sBAAwBhf,EAAIe,OAAQ3B,IAI5FW,EAAO8c,GAAiBgC,qCAG5Btf,IAAW6K,EAAkBqwC,MAAQp7C,GAAWA,EAAQoD,KACxDzC,EAAIV,KAAKD,EAAQoD,UAEhB,IAAIlD,IAAW6K,EAAkB+vC,IAIlC,MAAMt9B,GAAiBG,oCAAoCzd,GAH3DS,EAAIV,YAYhBw7C,EAAUn9C,UAAUq9C,cAAgB,SAAUh7C,EAAKX,GAC/C,GAAIA,GAAWA,EAAQgB,QAAS,CAC5B,IAAI86C,EAAY97C,EAAQgB,QACxBrD,OAAOsD,KAAK66C,GAAW56C,SAAQ,SAAU8Y,GACrCrZ,EAAII,iBAAiBiZ,EAAK8hC,EAAU9hC,SAUhDyhC,EAAUn9C,UAAU48C,cAAgB,SAAUv6C,GAC1C,IAAIo7C,EAAep7C,EAAIq7C,wBACnBC,EAAYF,EAAajiC,OAAOtE,MAAM,WACtCgmC,EAAa,GASjB,OARAS,EAAU/6C,SAAQ,SAAUwB,GACxB,IAAIw5C,EAAQx5C,EAAM8S,MAAM,MACpB2mC,EAAaD,EAAME,QACnBC,EAAYH,EAAM93B,KAAK,MACvB+3B,GAAcE,IACdb,EAAWW,GAAcE,MAG1Bb,GAEJC,EAxHmB,GCE1Ba,GAA8B,WAC9B,SAASA,KA8HT,OAxHAA,EAAaC,UAAY,SAAUC,GAE/BA,EAAcC,SAASz6B,KAAOxc,EAAUyB,aACU,oBAAvCu1C,EAAcE,QAAQC,cAE7BH,EAAcE,QAAQC,aAAa,KAAMn3C,EAAUyB,aAAc,GAAKu1C,EAAcC,SAASG,OAASJ,EAAcC,SAASI,SAAWL,EAAcC,SAASpjC,SAMvKijC,EAAaQ,YAAc,SAAU/8C,GACjC,IAAIg9C,EAAWh9C,EAAIyV,MAAM,KACzBunC,EAASX,QACT75B,OAAOk6B,SAASz6B,KAAO+6B,EAASt9C,OAAS,EAAIs9C,EAAS34B,KAAK,KAAO5e,EAAUyB,cAKhFq1C,EAAaU,WAAa,WACtB,OAAOz6B,OAAO06B,SAAW16B,QAK7B+5B,EAAaY,UAAY,WACrB,MAAyB,qBAAX36B,UAA4BA,OAAO46B,QAC7C56B,OAAO46B,SAAW56B,QACK,kBAAhBA,OAAO9Q,MACoD,IAAlE8Q,OAAO9Q,KAAK6H,QAAQjO,GAAiBI,kBAAoB,MAMjE6wC,EAAac,cAAgB,WACzB,OAAO76B,OAAOk6B,SAASY,KAAK7nC,MAAM,KAAK,GAAGA,MAAM,KAAK,IAKzD8mC,EAAagB,YAAc,WACvB,IAAIC,EAAa,IAAInR,GAAU7pB,OAAOk6B,SAASY,MAC3CvP,EAAgByP,EAAWzQ,mBAC/B,OAAOgB,EAAcb,SAAW,KAAOa,EAAcf,gBAAkB,KAK3EuP,EAAakB,wBAA0B,WACnC,OAAIj7B,OAAOs4B,OAASt4B,OAAO84B,QAChB,IAAIT,GAGJ,IAAIa,IAOnBa,EAAamB,2BAA6B,WACtC,IAAIC,EAAiBtR,GAAUwC,4BAA4BrsB,OAAOk6B,SAASz6B,MAE3E,GAAI07B,GAAkBpB,EAAaU,aAC/B,MAAMx/B,GAAiBmB,wCAQ/B29B,EAAaqB,sBAAwB,SAAUlH,EAAiBmH,GAC5D,IAAIC,EAAevB,EAAaU,aAChC,GAAIvG,IAAoBtrC,GAAgB2yC,UAAYD,IAAiBD,EAEjE,MAAMpgC,GAAiBiB,4BAA4Bo/B,IAM3DvB,EAAayB,0BAA4B,WAErC,GAAIzB,EAAaY,YACb,MAAM1/B,GAAiBoB,wCAO/B09B,EAAa0B,2BAA6B,SAAUC,GAChD,IAAKA,EACD,MAAMzgC,GAAiB8B,oCAQ/Bg9B,EAAa4B,yCAA2C,SAAUC,EAAmBC,GACjF,GAAID,IAAsBC,EACtB,MAAM5gC,GAAiBgD,4CAM/B87B,EAAa+B,eAAiB,WAC1B,IAAIC,EAAK/7B,OAAOy4B,UAAUuD,UACtBC,EAAOF,EAAGhlC,QAAQ,SAClBmlC,EAASH,EAAGhlC,QAAQ,YACpBolC,EAASJ,EAAGhlC,QAAQ,SACpBqlC,EAAOH,EAAO,GAAKC,EAAS,EAC5BG,EAASF,EAAS,EACtB,OAAOC,GAAQC,GAEZtC,EA/HsB,GCT7BuC,GAAkC,WAClC,SAASA,KAoCT,OA7BAA,EAAiBvgD,UAAUwgD,iBAAmB,SAAU/+C,EAAKC,GACzD,OAAO6+C,EAAiBE,sBAAsBh/C,EAAKC,IAOvD6+C,EAAiBvgD,UAAU0gD,iBAAmB,SAAUj/C,EAAKC,GACzD,OAAO6+C,EAAiBE,sBAAsBh/C,EAAKC,IAOvD6+C,EAAiBE,sBAAwB,SAAUh/C,EAAKC,GAOpD,OANIA,EAAQi/C,UACR18B,OAAOk6B,SAASntC,QAAQvP,GAGxBwiB,OAAOk6B,SAASt9C,OAAOY,GAEpB,IAAIS,SAAQ,SAAUC,GACzBqmC,YAAW,WACPrmC,GAAQ,KACTT,EAAQwB,aAGZq9C,EArC0B,GCOjCK,GAA2B,IAC3BC,GAA4B,IAC5BC,GAA8B,IAC9BC,GAA6C,IAUjD,SAASC,GAAmBvlC,EAAIkkC,GAC5B,IAAIsB,EAAgBxlC,EAAGylC,KAAMC,EAAiB1lC,EAAG8M,MAAO64B,EAAkB3lC,EAAG4lC,OAAQC,EAAqB7lC,EAAGqgC,UAEzGyF,EAAuB,CACvBlyB,SAAUnoB,EAAUyB,aACpB2mB,UAAW,GAAKpoB,EAAUI,kBAC1Bk6C,iBAAkB,GAClBC,uBAAwBv6C,EAAUyB,aAClC+4C,kBAAmBx6C,EAAUyB,aAC7Bg5C,YAAaz6C,EAAUyB,aACvBi5C,sBAAuB16C,EAAUyB,aACjCk5C,2BAA2B,EAC3B1F,mBAAoB,GACpB2F,aAAcrV,GAAasV,IAC3B3F,kBAAmB,CACfzB,mBAAoBjO,GAAmBkO,KACvCC,OAAQ3zC,EAAUyB,eAItBq5C,EAAwB,CACxBxU,cAAehhC,EAAqBohC,eACpCiH,wBAAwB,EACxBW,eAAe,GAGfyM,EAAyB,CAEzBn0B,eAAgB,aAChBE,SAAU9uB,GAASyuB,KACnBI,mBAAmB,GAGnBm0B,EAAiCthD,EAASA,EAAS,GAAIg5C,IAAyB,CAAErsB,cAAe00B,EAAwBE,cAAexC,EAAuB3B,GAAakB,0BAA4B7C,GAAsB+F,iBAAkB,IAAI7B,GAAoB8B,iBAAkB,EAE1RC,mBAAwC,OAApBlB,QAAgD,IAApBA,OAA6B,EAASA,EAAgBiB,mBAAqBzB,GAA0B2B,mBAAwC,OAApBnB,QAAgD,IAApBA,OAA6B,EAASA,EAAgBiB,mBAAqBxB,GAA2B2B,kBAAmB7C,GAAwB3B,GAAa+B,iBAAmB,IAAM,EAAG0C,0BAA2B3B,GAA6B4B,aAAa,EAAOpD,uBAAuB,EAAOO,mBAAmB,EAAO8C,8BAAmD,OAApBvB,QAAgD,IAApBA,OAA6B,EAASA,EAAgBuB,+BAAiC5B,KACrpBjG,EAA4B,CAC5BC,YAAa,CACT1qB,QAASnpB,EAAUyB,aACnB2nB,WAAYppB,EAAUyB,eAG1Bi6C,EAAkB,CAClB1B,KAAMtgD,EAASA,EAAS,GAAI2gD,GAAuBN,GACnD14B,MAAO3nB,EAASA,EAAS,GAAIohD,GAAwBb,GACrDE,OAAQzgD,EAASA,EAAS,GAAIshD,GAAiCd,GAC/DtF,UAAWl7C,EAASA,EAAS,GAAIk6C,GAA4BwG,IAEjE,OAAOsB;;ACvEX,ICGIC,GDHA,GAAO,sBACP,GAAU,UCGd,SAAWA,GACPA,EAAU,oBAAsB,uBAChCA,EAAU,kBAAoB,qBAC9BA,EAAU,iBAAmB,oBAC7BA,EAAU,mBAAqB,sBAC/BA,EAAU,eAAiB,kBAC3BA,EAAU,iBAAmB,oBAC7BA,EAAU,iBAAmB,oBAC7BA,EAAU,uBAAyB,yBACnCA,EAAU,yBAA2B,2BACrCA,EAAU,yBAA2B,2BACrCA,EAAU,+BAAiC,oCAC3CA,EAAU,oBAAsB,sBAChCA,EAAU,sBAAwB,wBAClCA,EAAU,sBAAwB,wBAClCA,EAAU,+BAAiC,+BAC3CA,EAAU,iCAAmC,iCAC7CA,EAAU,iCAAmC,iCAC7CA,EAAU,yBAA2B,2BACrCA,EAAU,uBAAyB,yBACnCA,EAAU,gBAAkB,mBAC5BA,EAAU,gBAAkB,mBAC5BA,EAAU,kBAAoB,qBAC9BA,EAAU,kBAAoB,qBAC9BA,EAAU,cAAgB,kBAxB9B,CAyBGA,KAAcA,GAAY;;ACvB7B,ICGIC,GDHAC,GAA8B,WAC9B,SAASA,EAAa/gD,EAAQ4nB,GAC1B9pB,KAAKkjD,eAAiB,IAAIx6B,IAC1B1oB,KAAKkC,OAASA,EACdlC,KAAK8pB,cAAgBA,EACrB9pB,KAAKmjD,0BAA2B,EAChCnjD,KAAKojD,yBAA2BpjD,KAAKojD,yBAAyBC,KAAKrjD,MA2GvE,OArGAijD,EAAa/iD,UAAUojD,iBAAmB,SAAUjxB,GAChD,GAAsB,qBAAXlO,OAAwB,CAC/B,IAAImO,EAAatyB,KAAK8pB,cAAcO,gBAGpC,OAFArqB,KAAKkjD,eAAev6B,IAAI2J,EAAYD,GACpCryB,KAAKkC,OAAOmnB,QAAQ,sCAAwCiJ,GACrDA,EAEX,OAAO,MAMX2wB,EAAa/iD,UAAUqjD,oBAAsB,SAAUjxB,GACnDtyB,KAAKkjD,eAAelhD,OAAOswB,GAC3BtyB,KAAKkC,OAAOmnB,QAAQ,kBAAoBiJ,EAAa,cAKzD2wB,EAAa/iD,UAAUsjD,2BAA6B,WAC1B,qBAAXr/B,SAGNnkB,KAAKmjD,yBAMNnjD,KAAKkC,OAAOmnB,QAAQ,iDALpBrpB,KAAKkC,OAAOmnB,QAAQ,oCACpBrpB,KAAKmjD,0BAA2B,EAChCh/B,OAAOuB,iBAAiB,UAAW1lB,KAAKojD,6BAShDH,EAAa/iD,UAAUujD,4BAA8B,WAC3B,qBAAXt/B,SAGPnkB,KAAKmjD,0BACLnjD,KAAKkC,OAAOmnB,QAAQ,sCACpBlF,OAAOu/B,oBAAoB,UAAW1jD,KAAKojD,0BAC3CpjD,KAAKmjD,0BAA2B,GAGhCnjD,KAAKkC,OAAOmnB,QAAQ,6CAU5B45B,EAAa/iD,UAAUyjD,UAAY,SAAUC,EAAWvL,EAAiB9wB,EAASjhB,GAC9E,IAAI7F,EAAQT,KACZ,GAAsB,qBAAXmkB,OAAwB,CAC/B,IAAI0/B,EAAY,CACZD,UAAWA,EACXvL,gBAAiBA,GAAmB,KACpC9wB,QAASA,GAAW,KACpBjhB,MAAOA,GAAS,KAChBioB,UAAWC,KAAKkC,OAEpB1wB,KAAKkC,OAAO4sB,KAAK,mBAAqB80B,GACtC5jD,KAAKkjD,eAAepgD,SAAQ,SAAUuvB,EAAUC,GAC5C7xB,EAAMyB,OAAOmnB,QAAQ,8BAAgCiJ,EAAa,KAAOsxB,GACzEvxB,EAAStuB,MAAM,KAAM,CAAC8/C,SAOlCZ,EAAa/iD,UAAUkjD,yBAA2B,SAAU1+C,GACxD,IACI,IAAIo/C,EAAap/C,EAAEq/C,UAAYr/C,EAAEs/C,SACjC,IAAKF,EACD,OAEJ,IAAIG,EAAc3pC,KAAKS,MAAM+oC,GAC7B,GAA2B,kBAAhBG,IAA6B9vB,GAAcmD,gBAAgB2sB,GAClE,OAEJ,IAAI9jB,EAAgBR,GAAaS,SAAS,IAAIjM,GAAiB8vB,GAC3D5jB,EAAcF,EAAc3K,kBAC3B9wB,EAAEs/C,UAAYt/C,EAAEq/C,UACjB/jD,KAAKkC,OAAO4sB,KAAK,oDACjB9uB,KAAK2jD,UAAUZ,GAAUmB,mBAAehe,EAAW7F,KAE7C37B,EAAEq/C,UAAYr/C,EAAEs/C,WACtBhkD,KAAKkC,OAAO4sB,KAAK,wDACjB9uB,KAAK2jD,UAAUZ,GAAUoB,qBAAiBje,EAAW7F,IAG7D,MAAO37B,GACH,SAGDu+C,EAjHsB,GEA7BmB,GAAiC,WACjC,SAASA,KAsFT,OAhFAA,EAAgBC,6BAA+B,SAAUC,GACrD,OAAOr4C,EAAoBG,kBAAoB,IAAMkO,KAAKC,UAAU+pC,IAOxEF,EAAgBG,WAAa,SAAUC,EAAcF,GACjD,IAAI3oC,EACAC,EAAMwoC,EAAgBC,6BAA6BC,GACnDhgD,EAAQkgD,EAAahd,mBAAmB5rB,GAC5C,GAAItX,EAAO,CACP,GAAIA,EAAMmgD,aAAej2B,KAAKkC,MAE1B,YADA8zB,EAAa98B,WAAW9L,EAAKvR,EAAgBq6C,YAGjD,MAAM,IAAI7xB,IAAyC,QAA3BlX,EAAKrX,EAAMqgD,kBAA+B,IAAPhpC,OAAgB,EAASA,EAAGqK,KAAK,OAAS5e,EAAUyB,aAAcvE,EAAMhE,aAAcgE,EAAM8O,YAS/JgxC,EAAgBQ,YAAc,SAAUJ,EAAcF,EAAY/gD,GAC9D,GAAI6gD,EAAgBS,oBAAoBthD,IAAa6gD,EAAgBU,2BAA2BvhD,GAAW,CACvG,IAAIwhD,EAAkB,CAClBN,aAAcL,EAAgBY,sBAAsBC,SAAS1hD,EAASX,QAAQmE,EAAYm+C,eAC1F5+C,MAAO/C,EAASyB,KAAKsB,MACrBq+C,WAAYphD,EAASyB,KAAKmgD,YAC1B7kD,aAAciD,EAASyB,KAAK0rC,kBAC5Bt9B,SAAU7P,EAASyB,KAAKkO,UAE5BsxC,EAAajd,mBAAmB6c,EAAgBC,6BAA6BC,GAAaS,KAOlGX,EAAgBS,oBAAsB,SAAUthD,GAC5C,OAA2B,MAApBA,EAASD,QAAkBC,EAASD,QAAU,KAAOC,EAASD,OAAS,KAMlF8gD,EAAgBU,2BAA6B,SAAUvhD,GACnD,QAAIA,EAASX,UACFW,EAASX,QAAQ9C,eAAeiH,EAAYm+C,eAAiB3hD,EAASD,OAAS,KAAOC,EAASD,QAAU,OAQxH8gD,EAAgBY,sBAAwB,SAAUP,GAC9C,IAAIW,EAAOX,GAAgB,EAAI,EAAIA,EAC/BY,EAAiB72B,KAAKkC,MAAQ,IAClC,OAAOzhB,KAAKq2C,MAAuK,IAAjKr2C,KAAKs2C,IAAIF,GAAkBD,GAAQn5C,EAAoBC,+BAAgCm5C,EAAiBp5C,EAAoBE,qCAElJi4C,EAAgBoB,eAAiB,SAAUhB,EAAcj1B,EAAUptB,EAASsjD,GACxE,IAAInB,EAAa,CACb/0B,SAAUA,EACVC,UAAWrtB,EAAQqtB,UACnB3hB,OAAQ1L,EAAQ0L,OAChB43C,sBAAuBA,EACvB/uB,OAAQv0B,EAAQu0B,OAChBkP,qBAAsBzjC,EAAQyjC,qBAC9Bja,sBAAuBxpB,EAAQwpB,sBAC/BE,mBAAoB1pB,EAAQ0pB,mBAC5B65B,UAAWvjD,EAAQujD,UACnB5f,OAAQ3jC,EAAQ2jC,QAEhBlqB,EAAM5b,KAAKqkD,6BAA6BC,GAC5C,OAAOE,EAAa98B,WAAW9L,EAAKvR,EAAgBq6C,aAEjDN,EAvFyB,GCEhCuB,GAAgC,WAChC,SAASA,EAAetD,EAAemC,GACnCxkD,KAAKqiD,cAAgBA,EACrBriD,KAAKwkD,aAAeA,EAqCxB,OA7BAmB,EAAezlD,UAAU0lD,gBAAkB,SAAUtB,EAAYuB,EAAejkD,GAC5E,OAAO,EAAU5B,UAAM,OAAQ,GAAQ,WACnC,IAAIuD,EAAU4f,EACd,OAAO,EAAYnjB,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EACD++C,GAAgBG,WAAWvkD,KAAKwkD,aAAcF,GAC9C3oC,EAAGtW,MAAQ,EACf,KAAK,EAED,OADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAahG,KAAKqiD,cAAchI,qBAAqBwL,EAAejkD,IAChF,KAAK,EAED,OADA2B,EAAWoY,EAAGrW,OACP,CAAC,EAAa,GACzB,KAAK,EAED,MADA6d,EAAMxH,EAAGrW,OACL6d,aAAenQ,GACTmQ,EAGA3M,GAAgBU,mBAAmB2uC,EAAe1iC,GAEhE,KAAK,EAED,OADAihC,GAAgBQ,YAAY5kD,KAAKwkD,aAAcF,EAAY/gD,GACpD,CAAC,EAAcA,WAKnCoiD,EAxCwB,GCQ/BG,GAA4B,WAC5B,SAASA,EAAWC,GAEhB/lD,KAAKgmD,OAAS9K,GAAyB6K,GAEvC/lD,KAAKkC,OAAS,IAAIsrB,GAAOxtB,KAAKgmD,OAAOv4B,cAAe,GAAMlH,IAE1DvmB,KAAK8oC,YAAc9oC,KAAKgmD,OAAOnK,gBAE/B77C,KAAKwkD,aAAexkD,KAAKgmD,OAAOvK,iBAEhCz7C,KAAKqiD,cAAgBriD,KAAKgmD,OAAOrK,iBAEjC37C,KAAKimD,eAAiB,IAAIN,GAAe3lD,KAAKqiD,cAAeriD,KAAKwkD,cAElExkD,KAAKi8C,uBAAyBj8C,KAAKgmD,OAAO/J,uBAE1Cj8C,KAAKwvB,UAAYxvB,KAAKgmD,OAAO5K,YAAY5rB,UA4D7C,OAvDAs2B,EAAW5lD,UAAUgmD,0BAA4B,SAAUC,GACvD,IAAIvjD,EAAU,GAEd,GADAA,EAAQmE,EAAYq/C,cAAgBh/C,EAAUsB,uBACzC1I,KAAKgmD,OAAO1K,cAActB,sBAAwBmM,EACnD,OAAQA,EAAQj5B,MACZ,KAAKgH,GAAkBsjB,gBACnB,IACI,IAAI1hB,EAAalC,GAAiCuyB,EAAQjlB,YAC1Dt+B,EAAQmE,EAAYs/C,YAAc,OAASvwB,EAAW9B,IAAM,IAAM8B,EAAW7B,KAEjF,MAAOvvB,GACH1E,KAAKkC,OAAOmnB,QAAQ,mDAAqD3kB,GAE7E,MACJ,KAAKwvB,GAAkBwjB,IACnB90C,EAAQmE,EAAYs/C,YAAc,QAAUF,EAAQjlB,WACpD,MAGZ,OAAOt+B,GASXkjD,EAAW5lD,UAAUomD,2BAA6B,SAAUT,EAAe9W,EAAansC,EAAS0hD,GAC7F,OAAO,EAAUtkD,UAAM,OAAQ,GAAQ,WACnC,IAAIuD,EACJ,OAAO,EAAYvD,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAAG,MAAO,CAAC,EAAarF,KAAKimD,eAAeL,gBAAgBtB,EAAYuB,EAAe,CAAE7gD,KAAM+pC,EAAansC,QAASA,EAASq3C,SAAUj6C,KAAKgmD,OAAO1K,cAAcrB,YACvK,KAAK,EAMD,OALA12C,EAAWoY,EAAGrW,OACVtF,KAAKgmD,OAAO/J,wBAA0B14C,EAASD,OAAS,KAA2B,MAApBC,EAASD,QAExEtD,KAAKgmD,OAAO/J,uBAAuBsK,sBAEhC,CAAC,EAAchjD,WAS1CuiD,EAAW5lD,UAAUsmD,gBAAkB,SAAUC,GAC7C,IAAKA,EAAiBC,oBAClB,MAAMlwC,GAAgBQ,uCAAuC,2DAEjEhX,KAAKwvB,UAAYi3B,GAEdX,EA7EoB,GCN3Ba,GAAkC,WAClC,SAASA,KAyET,OAnEAA,EAAiBC,oBAAsB,SAAU/E,GAC7C,GAAI9nC,GAAYG,QAAQ2nC,GACpB,MAAM7mB,GAAyBC,+BAOvC0rB,EAAiBE,eAAiB,SAAUC,GACxC,IAAIC,EAAe,GACnB,IAAK,IAAIziD,KAASoF,EACdq9C,EAAa/gD,KAAK0D,EAAYpF,IAElC,GAAIyiD,EAAa7rC,QAAQ4rC,GAAU,EAC/B,MAAM9rB,GAAyBY,yBAAyBkrB,IAGhEH,EAAiBK,eAAiB,SAAUtwB,GACxC,IACIpc,KAAKS,MAAM2b,GAEf,MAAOhyB,GACH,MAAMs2B,GAAyBc,oCAQvC6qB,EAAiBM,4BAA8B,SAAUtkC,EAAeukC,GACpE,GAAIntC,GAAYG,QAAQyI,IAAkB5I,GAAYG,QAAQgtC,GAC1D,MAAMlsB,GAAyBkB,wCAG/Bl8B,KAAKmnD,4BAA4BD,IAOzCP,EAAiBQ,4BAA8B,SAAUD,GACrD,GAAI,CACA38C,EAA0BC,MAC1BD,EAA0BE,MAC5ByQ,QAAQgsC,GAAuB,EAC7B,MAAMlsB,GAAyBiB,yCAOvC0qB,EAAiBS,iBAAmB,SAAUC,EAAUC,GACpD,OAAKD,GAILC,EAAYxkD,SAAQ,SAAUwB,EAAOsX,GAC7ByrC,EAASzrC,WACFyrC,EAASzrC,MAGjByrC,GARI,IAURV,EA1E0B,GCAjCY,GAAyC,WACzC,SAASA,IACLvnD,KAAKywC,WAAa,IAAI/nB,IA2W1B,OAtWA6+B,EAAwBrnD,UAAUsnD,oBAAsB,WACpDxnD,KAAKywC,WAAW9nB,IAAIzhB,EAAmBugD,cAAez2C,mBAAmB5J,EAAUiB,sBAKvFk/C,EAAwBrnD,UAAUwnD,kCAAoC,WAClE1nD,KAAKywC,WAAW9nB,IAAIzhB,EAAmBugD,cAAez2C,mBAAmB5J,EAAUiC,oBAAsB,IAAMjC,EAAUkC,0BAM7Hi+C,EAAwBrnD,UAAUynD,gBAAkB,SAAUC,GAC1D5nD,KAAKywC,WAAW9nB,IAAIzhB,EAAmB2gD,cAAe72C,mBAAmB,GAAgChH,EAAa89C,SAK1HP,EAAwBrnD,UAAU6nD,gBAAkB,WAChD/nD,KAAKywC,WAAW9nB,IAAIzhB,EAAmB8gD,cAAeh3C,mBAAmB,OAO7Eu2C,EAAwBrnD,UAAU+nD,UAAY,SAAUp6C,EAAQq6C,QACtC,IAAlBA,IAA4BA,GAAgB,GAChD,IAAIC,EAAgBD,EAAgBzhD,EAAeoH,GAAU,GAAItE,GAAuBsE,GAAU,GAC9F+vB,EAAW,IAAIf,GAASsrB,GAC5BnoD,KAAKywC,WAAW9nB,IAAIzhB,EAAmBkhD,MAAOp3C,mBAAmB4sB,EAASuB,iBAM9EooB,EAAwBrnD,UAAUmoD,YAAc,SAAU94B,GACtDvvB,KAAKywC,WAAW9nB,IAAIzhB,EAAmBohD,UAAWt3C,mBAAmBue,KAMzEg4B,EAAwBrnD,UAAUqoD,eAAiB,SAAU1G,GACzD8E,GAAiBC,oBAAoB/E,GACrC7hD,KAAKywC,WAAW9nB,IAAIzhB,EAAmBshD,aAAcx3C,mBAAmB6wC,KAM5E0F,EAAwBrnD,UAAUuoD,yBAA2B,SAAU5G,GACnE8E,GAAiBC,oBAAoB/E,GACrC7hD,KAAKywC,WAAW9nB,IAAIzhB,EAAmBwhD,gBAAiB13C,mBAAmB6wC,KAM/E0F,EAAwBrnD,UAAUyoD,eAAiB,SAAUC,GACzD5oD,KAAKywC,WAAW9nB,IAAIzhB,EAAmB2hD,cAAe73C,mBAAmB43C,KAM7ErB,EAAwBrnD,UAAU4oD,cAAgB,SAAUC,GACxD/oD,KAAKywC,WAAW9nB,IAAIlf,EAASu/C,YAAah4C,mBAAmB+3C,KAMjExB,EAAwBrnD,UAAU+oD,aAAe,SAAUzU,GACvDx0C,KAAKywC,WAAW9nB,IAAIlf,EAASy/C,WAAYl4C,mBAAmBwjC,KAMhE+S,EAAwBrnD,UAAUipD,UAAY,SAAU3U,GACpDx0C,KAAKywC,WAAW9nB,IAAI5hB,EAAYs/C,WAAYr1C,mBAAmB,OAASwjC,KAM5E+S,EAAwBrnD,UAAUkpD,UAAY,SAAUtzB,GACpD91B,KAAKywC,WAAW9nB,IAAI5hB,EAAYs/C,WAAYr1C,mBAAmB,OAAS8kB,EAAW9B,IAAM,IAAM8B,EAAW7B,QAM9GszB,EAAwBrnD,UAAUmpD,OAAS,SAAU5U,GACjDz0C,KAAKywC,WAAW9nB,IAAIlf,EAAS6/C,IAAKt4C,mBAAmByjC,KAMzD8S,EAAwBrnD,UAAUqpD,UAAY,SAAU7yB,EAAQ2lB,GAC5D,IAAImN,EAAexpD,KAAKypD,8BAA8B/yB,EAAQ2lB,GAC9DsK,GAAiBK,eAAewC,GAChCxpD,KAAKywC,WAAW9nB,IAAIzhB,EAAmBa,OAAQiJ,mBAAmBw4C,KAMtEjC,EAAwBrnD,UAAUwpD,iBAAmB,SAAUn2C,GAC3DvT,KAAKywC,WAAW9nB,IAAIzhB,EAAmByiD,kBAAmB34C,mBAAmBuC,KAMjFg0C,EAAwBrnD,UAAU0pD,eAAiB,SAAU7N,GAEzD/7C,KAAKywC,WAAW9nB,IAAIzhB,EAAmB2iD,aAAc9N,EAAYjI,KACjE9zC,KAAKywC,WAAW9nB,IAAIzhB,EAAmB4iD,aAAc/N,EAAYx1B,SAC7Dw1B,EAAYvB,IACZx6C,KAAKywC,WAAW9nB,IAAIzhB,EAAmB6iD,YAAahO,EAAYvB,IAEhEuB,EAAYxB,KACZv6C,KAAKywC,WAAW9nB,IAAIzhB,EAAmB8iD,aAAcjO,EAAYxB,MAOzEgN,EAAwBrnD,UAAU+pD,wBAA0B,SAAUC,IAC7C,OAAjBA,QAA0C,IAAjBA,OAA0B,EAASA,EAAa35B,UACzEvwB,KAAKywC,WAAW9nB,IAAIzhB,EAAmBijD,WAAYD,EAAa35B,UAE/C,OAAjB25B,QAA0C,IAAjBA,OAA0B,EAASA,EAAa15B,aACzExwB,KAAKywC,WAAW9nB,IAAIzhB,EAAmBkjD,UAAWF,EAAa15B,aAOvE+2B,EAAwBrnD,UAAUmqD,UAAY,SAAUvD,GACpDH,GAAiBE,eAAeC,GAChC9mD,KAAKywC,WAAW9nB,IAAI,GAAKzhB,EAAmBojD,OAAQt5C,mBAAmB81C,KAM3ES,EAAwBrnD,UAAUqqD,SAAW,SAAUle,GAC9CtyB,GAAYG,QAAQmyB,IACrBrsC,KAAKywC,WAAW9nB,IAAIzhB,EAAmBsjD,MAAOx5C,mBAAmBq7B,KAOzEkb,EAAwBrnD,UAAUuqD,SAAW,SAAUzyB,GACnDh4B,KAAKywC,WAAW9nB,IAAIzhB,EAAmBwjD,MAAO15C,mBAAmBgnB,KAQrEuvB,EAAwBrnD,UAAUyqD,uBAAyB,SAAUhoC,EAAeukC,GAEhF,GADAP,GAAiBM,4BAA4BtkC,EAAeukC,IACxDvkC,IAAiBukC,EAKjB,MAAMlsB,GAAyBkB,wCAJ/Bl8B,KAAKywC,WAAW9nB,IAAIzhB,EAAmB0jD,eAAgB55C,mBAAmB2R,IAC1E3iB,KAAKywC,WAAW9nB,IAAIzhB,EAAmB2jD,sBAAuB75C,mBAAmBk2C,KAUzFK,EAAwBrnD,UAAU4qD,qBAAuB,SAAUh4C,GAC/D9S,KAAKywC,WAAW9nB,IAAIzhB,EAAmB6jD,KAAM/5C,mBAAmB8B,KAMpEy0C,EAAwBrnD,UAAU8qD,cAAgB,SAAUl4C,GACxD9S,KAAKywC,WAAW9nB,IAAIzhB,EAAmB+jD,YAAaj6C,mBAAmB8B,KAM3Ey0C,EAAwBrnD,UAAUgrD,gBAAkB,SAAUpqB,GAC1D9gC,KAAKywC,WAAW9nB,IAAIzhB,EAAmB8xB,cAAehoB,mBAAmB8vB,KAM7EymB,EAAwBrnD,UAAUirD,gBAAkB,SAAUzoC,GAC1D1iB,KAAKywC,WAAW9nB,IAAIzhB,EAAmBkkD,cAAep6C,mBAAmB0R,KAM7E6kC,EAAwBrnD,UAAUmrD,gBAAkB,SAAU3Q,GAC1D16C,KAAKywC,WAAW9nB,IAAIzhB,EAAmBokD,cAAet6C,mBAAmB0pC,KAM7E6M,EAAwBrnD,UAAUqrD,mBAAqB,SAAU5Q,GAC7D36C,KAAKywC,WAAW9nB,IAAIzhB,EAAmBskD,iBAAkBx6C,mBAAmB2pC,KAMhF4M,EAAwBrnD,UAAUurD,uBAAyB,SAAUC,GACjE1rD,KAAKywC,WAAW9nB,IAAIzhB,EAAmBykD,sBAAuB36C,mBAAmB06C,KAMrFnE,EAAwBrnD,UAAU0rD,gBAAkB,SAAU51B,GAC1Dh2B,KAAKywC,WAAW9nB,IAAIzhB,EAAmB2kD,cAAe76C,mBAAmBglB,KAM7EuxB,EAAwBrnD,UAAU4rD,mBAAqB,SAAUC,GAC7D/rD,KAAKywC,WAAW9nB,IAAIzhB,EAAmB8kD,oBAAqBh7C,mBAAmB+6C,KAMnFxE,EAAwBrnD,UAAU+rD,aAAe,SAAUC,GACvDlsD,KAAKywC,WAAW9nB,IAAIzhB,EAAmBilD,WAAYn7C,mBAAmBk7C,KAM1E3E,EAAwBrnD,UAAUksD,cAAgB,WAC9CpsD,KAAKywC,WAAW9nB,IAAI/d,EAAa,MAMrC28C,EAAwBrnD,UAAUmsD,wBAA0B,SAAUC,GAClE,IAAI7rD,EAAQT,KACZ2mD,GAAiBS,iBAAiBkF,EAAUtsD,KAAKywC,YACjDlxC,OAAOsD,KAAKypD,GAAUxpD,SAAQ,SAAU8Y,GACpCnb,EAAMgwC,WAAW9nB,IAAI/M,EAAK0wC,EAAS1wC,QAG3C2rC,EAAwBrnD,UAAUupD,8BAAgC,SAAU/yB,EAAQ2lB,GAChF,IAAImN,EAEJ,GAAK9yB,EAID,IACI8yB,EAAelvC,KAAKS,MAAM2b,GAE9B,MAAOhyB,GACH,MAAMs2B,GAAyBc,uCAPnC0tB,EAAe,GAoBnB,OAVInN,GAAsBA,EAAmBh7C,OAAS,IAC7CmoD,EAAa1pD,eAAeqH,EAAkB2xB,gBAE/C0wB,EAAariD,EAAkB2xB,cAAgB,IAGnD0wB,EAAariD,EAAkB2xB,cAAc3xB,EAAkBolD,QAAU,CACrEna,OAAQiK,IAGT/hC,KAAKC,UAAUivC,IAM1BjC,EAAwBrnD,UAAUssD,YAAc,SAAU33B,GACtD70B,KAAKywC,WAAW9nB,IAAI/c,EAAuBipB,SAAUA,IAMzD0yB,EAAwBrnD,UAAUusD,YAAc,SAAUC,GACtD1sD,KAAKywC,WAAW9nB,IAAI/c,EAAuB8gD,SAAUA,IAMzDnF,EAAwBrnD,UAAUysD,YAAc,SAAUC,GACjD7yC,GAAYG,QAAQ0yC,KACrB5sD,KAAKywC,WAAW9nB,IAAIzhB,EAAmB2lD,WAAY5hD,EAAqB05B,KACxE3kC,KAAKywC,WAAW9nB,IAAIzhB,EAAmB4lD,QAAS97C,mBAAmB47C,MAM3ErF,EAAwBrnD,UAAU6sD,UAAY,SAAUC,GAC/CjzC,GAAYG,QAAQ8yC,KACrBhtD,KAAKywC,WAAW9nB,IAAIzhB,EAAmB2lD,WAAY5hD,EAAqBk4B,KACxEnjC,KAAKywC,WAAW9nB,IAAIzhB,EAAmB4lD,QAAS97C,mBAAmBg8C,MAO3EzF,EAAwBrnD,UAAU+sD,mBAAqB,SAAUhR,GAC7Dj8C,KAAKywC,WAAW9nB,IAAIzhB,EAAmBgmD,oBAAqBjR,EAAuBkR,qCACnFntD,KAAKywC,WAAW9nB,IAAIzhB,EAAmBkmD,oBAAqBnR,EAAuBoR,mCAKvF9F,EAAwBrnD,UAAUotD,cAAgB,WAC9CttD,KAAKywC,WAAW9nB,IAAIzhB,EAAmBqmD,oBAAqBthD,EAAoBI,4BAKpFk7C,EAAwBrnD,UAAUstD,cAAgB,SAAUC,GACxDztD,KAAKywC,WAAW9nB,IAAIzhB,EAAmBwmD,YAAa18C,mBAAmBy8C,KAK3ElG,EAAwBrnD,UAAUytD,kBAAoB,WAClD,IAAIC,EAAsB,IAAIluD,MAI9B,OAHAM,KAAKywC,WAAW3tC,SAAQ,SAAUwB,EAAOsX,GACrCgyC,EAAoB5nD,KAAK4V,EAAM,IAAMtX,MAElCspD,EAAoB5nC,KAAK,MAE7BuhC,EA7WiC,GCPxCsG,GAA6B,WAC7B,SAASA,EAAY1tB,EAAewH,EAAemmB,EAAmBC,EAAoBC,GACtFhuD,KAAKu2B,QAAU4J,GAAiB,KAChCngC,KAAK+1B,QAAU4R,GAAiB,KAChC3nC,KAAK4gC,YAAcktB,GAAqB,KACxC9tD,KAAK8gC,aAAeitB,GAAsB,KAC1C/tD,KAAKghC,YAAcgtB,GAAqB,KAE5C,OAAOH,EARqB,INOhC,SAAW7K,GACPA,EAAY,MAAQ,KACpBA,EAAY,OAAS,OAFzB,CAGGA,KAAgBA,GAAc,KACjC,IAAIiL,GAAmC,WACnC,SAASA,EAAkBnlB,GACvB9oC,KAAK8oC,YAAcA,EA+FvB,OAxFAmlB,EAAkB/tD,UAAUguD,YAAc,SAAU/rD,GAChD,OAAO,EAAUnC,UAAM,OAAQ,GAAQ,WACnC,IAAImuD,EACJ,OAAO,EAAYnuD,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAAG,MAAO,CAAC,EAAarF,KAAKouD,YAAYjsD,IAC9C,KAAK,EAED,OADAgsD,EAASxyC,EAAGrW,OACL,CAAC,EAActF,KAAK8oC,YAAYtmB,aAAalI,KAAKC,UAAU4zC,aAUvFF,EAAkB/tD,UAAUmuD,gBAAkB,SAAUlhC,GACpD,OAAO,EAAUntB,UAAM,OAAQ,GAAQ,WACnC,OAAO,EAAYA,MAAM,SAAU2b,GAC/B,MAAO,CAAC,EAAc3b,KAAK8oC,YAAYtd,WAAW2B,WAS9D8gC,EAAkB/tD,UAAUkuD,YAAc,SAAUjsD,GAChD,OAAO,EAAUnC,UAAM,OAAQ,GAAQ,WACnC,IAAIsuD,EACJ,OAAO,EAAYtuD,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAAG,MAAO,CAAC,EAAarF,KAAK8oC,YAAYte,uBAAuBroB,IACrE,KAAK,EAED,OADAmsD,EAAgB3yC,EAAGrW,OACZ,CAAC,EAAc,CACd2mB,IAAKqiC,EACLC,QAASvL,GAAYwL,aAYjDP,EAAkB/tD,UAAUuuD,aAAe,SAAU7tB,EAAaz+B,GAC9D,IAAIwZ,EACJ,OAAO,EAAU3b,UAAM,OAAQ,GAAQ,WACnC,IAAIopC,EACJ,OAAO,EAAYppC,MAAM,SAAUirB,GAE/B,GADAme,EAAchK,GAAUE,mBAAmBsB,EAAa5gC,KAAK8oC,eAC8B,QAApFntB,EAAqB,OAAhBytB,QAAwC,IAAhBA,OAAyB,EAASA,EAAYjc,WAAwB,IAAPxR,OAAgB,EAASA,EAAGsQ,KAC3H,MAAMzV,GAAgBmD,iCAE1B,MAAO,CAAC,EAAc3Z,KAAK0uD,YAAY9tB,EAAawI,EAAYjc,IAAIlB,IAAK9pB,WAYrF8rD,EAAkB/tD,UAAUwuD,YAAc,SAAUnnC,EAAS0E,EAAK9pB,EAASu0B,GACvE,OAAO,EAAU12B,UAAM,OAAQ,GAAQ,WACnC,IAAI2rB,EAAuBE,EAAoB65B,EAAWiJ,EAAUC,EAAmBC,EACvF,OAAO,EAAY7uD,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAID,OAHAsmB,EAAwBxpB,EAAQwpB,sBAAuBE,EAAqB1pB,EAAQ0pB,mBAAoB65B,EAAYvjD,EAAQujD,UAAWiJ,EAAWxsD,EAAQwsD,SAC1JC,EAAoB,EAAuB,IAAI5gB,GAAUniB,QAAsBqa,EAC/E2oB,EAA8C,OAAtBD,QAAoD,IAAtBA,OAA+B,EAASA,EAAkBlgB,mBACzG,CAAC,EAAa1uC,KAAK8oC,YAAYzc,QAAQ,EAAS,CAAEyiC,GAAIvnC,EAASwnC,GAAIlnB,GAAUC,aAAc3hC,EAA6B,OAA1BwlB,QAA4D,IAA1BA,OAAmC,EAASA,EAAsBqjC,cAAeC,EAA6B,OAA1BJ,QAA4D,IAA1BA,OAAmC,EAASA,EAAsBlgB,gBAAiB3W,MAAO22B,GAAY3uD,KAAK8oC,YAAYze,gBAAiBxqB,EAA6B,OAA1BgvD,QAA4D,IAA1BA,OAAmC,EAASA,EAAsBlf,aAAcuf,GAA8B,OAA1BL,QAA4D,IAA1BA,OAAmC,EAASA,EAAsBjf,aAAe,CAAC,GAAIif,EAAsBjf,kBAAe1J,EAAWipB,cAAezJ,QAAaxf,GAAaxP,GAASzK,EAAK9pB,EAAQoR,gBACzuB,KAAK,EAAG,MAAO,CAAC,EAAcoI,EAAGrW,gBAK1C2oD,EAjG2B,GOR9BmB,GAAmC,WACvC,SAASA,EAAkBC,EAAYC,GACnCtvD,KAAKyoB,MAAQ4mC,EACbrvD,KAAKsvD,WAAaA,EAsBtB,OApBA/vD,OAAO6uC,eAAeghB,EAAkBlvD,UAAW,kBAAmB,CAIlEwB,IAAK,WACD,OAAO1B,KAAKsvD,YAEhBjhB,YAAY,EACZC,cAAc,IAElB/uC,OAAO6uC,eAAeghB,EAAkBlvD,UAAW,aAAc,CAI7DwB,IAAK,WACD,OAAO1B,KAAKyoB,OAEhB4lB,YAAY,EACZC,cAAc,IAEX8gB,EAzB+B,GCoBtCG,GAAiC,WACjC,SAASA,EAAgBhgC,EAAUigC,EAAc/gD,EAAWvM,EAAQi6C,EAAmBD,GACnFl8C,KAAKuvB,SAAWA,EAChBvvB,KAAKwvD,aAAeA,EACpBxvD,KAAKyO,UAAYA,EACjBzO,KAAKkC,OAASA,EACdlC,KAAKm8C,kBAAoBA,EACzBn8C,KAAKk8C,kBAAoBA,EAuP7B,OA/OAqT,EAAgBrvD,UAAUuvD,wCAA0C,SAAUC,EAAoBzY,EAAaxoC,GAC3G,IAAKihD,EAAmBrjB,QAAU4K,EAC9B,MAAOyY,EAAmBrjB,MAAmE71B,GAAgBmB,yBAAyB,gBAApGnB,GAAgBmB,yBAAyB,gBAE/E,GAAI6D,mBAAmBk0C,EAAmBrjB,SAAW7wB,mBAAmBy7B,GACpE,MAAMzgC,GAAgBkB,2BAG1B,GAAIg4C,EAAmBppD,OAASopD,EAAmBhf,mBAAqBgf,EAAmBx8C,SAAU,CACjG,GAAI+f,GAA6BC,2BAA2Bw8B,EAAmBppD,MAAOopD,EAAmBhf,kBAAmBgf,EAAmBx8C,UAC3I,MAAM,IAAI+f,GAA6By8B,EAAmBppD,OAASc,EAAUyB,aAAc6mD,EAAmBhf,kBAAmBgf,EAAmBx8C,UAExJ,MAAM,IAAI2f,GAAY68B,EAAmBppD,OAASc,EAAUyB,aAAc6mD,EAAmBhf,kBAAmBgf,EAAmBx8C,UAEnIw8C,EAAmBC,aACnBl8B,GAAgBi8B,EAAmBC,YAAalhD,IAOxD8gD,EAAgBrvD,UAAU0vD,sBAAwB,SAAUC,GAExD,GAAIA,EAAevpD,OAASupD,EAAenf,mBAAqBmf,EAAe38C,SAAU,CACrF,GAAI+f,GAA6BC,2BAA2B28B,EAAevpD,MAAOupD,EAAenf,kBAAmBmf,EAAe38C,UAC/H,MAAM,IAAI+f,GAA6B48B,EAAevpD,MAAOupD,EAAenf,kBAAmBmf,EAAe38C,UAElH,IAAI48C,EAAYD,EAAe1K,YAAc,OAAS0K,EAAethC,UAAY,MAAQshC,EAAenf,kBAAoB,sBAAwBmf,EAAeE,eAAiB,gBAAkBF,EAAeG,SACrN,MAAM,IAAIn9B,GAAYg9B,EAAevpD,MAAOwpD,EAAWD,EAAe38C,YAQ9Eq8C,EAAgBrvD,UAAU+vD,0BAA4B,SAAUC,EAAqB1gC,EAAW2gC,EAAchuD,EAASiuD,EAAiBp6B,EAAcq6B,GAClJ,OAAO,EAAUrwD,UAAM,OAAQ,GAAQ,WACnC,IAAIswD,EAAYzf,EAAiBpQ,EAAa8vB,EAAc30C,EAAK2a,EACjE,OAAO,EAAYv2B,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EACD,GAAI6qD,EAAoBM,WACpBF,EAAa,IAAIlxB,GAAU8wB,EAAoBM,UAAYppD,EAAUyB,aAAc7I,KAAKyO,WAEpF2hD,IAAoBr2C,GAAYG,QAAQk2C,EAAgBp4B,QACpDs4B,EAAW55B,OAAOsB,QAAUo4B,EAAgBp4B,OAC5C,MAAMxhB,GAAgBqB,2BAKlC7X,KAAKylD,sBAAwBtxB,GAAcgD,sBAAsB+4B,EAAoBP,aAAevoD,EAAUyB,aAAc2mB,EAAUwF,cAAeh1B,KAAKkC,OAAQlC,KAAKyO,UAAW6hD,GAC5KF,GAAqBA,EAAgB/jB,QACvCwE,EAAkBjF,GAAcQ,kBAAkBpsC,KAAKyO,UAAW2hD,EAAgB/jB,QAGtF6jB,EAAoBO,OAASP,EAAoBO,QAAUtuD,EAAQ2jC,aAAUI,EAC7EzF,EAAczgC,KAAK0wD,oBAAoBR,EAAqB1gC,EAAW2gC,EAAchuD,EAASmuD,EAAYt6B,EAAco6B,GACxHz0C,EAAGtW,MAAQ,EACf,KAAK,EAED,OADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,CAAE,EAAG,IAChBhG,KAAKk8C,mBAAqBl8C,KAAKm8C,mBACrCn8C,KAAKkC,OAAOmnB,QAAQ,kDACpBknC,EAAe,IAAInB,GAAkBpvD,KAAKm8C,mBAAmB,GACtD,CAAC,EAAan8C,KAAKk8C,kBAAkByU,kBAAkBJ,KAHE,CAAC,EAAa,GAIlF,KAAK,EACD50C,EAAGrW,OACHqW,EAAGtW,MAAQ,EACf,KAAK,EAMD,OAAIgrD,GAAgC5vB,EAAYlK,UAC5C3a,EAAM6kB,EAAYlK,QAAQ9B,qBAC1B8B,EAAUv2B,KAAKwvD,aAAartB,WAAWvmB,IAClC2a,IACDv2B,KAAKkC,OAAO0sB,QAAQ,uGACb,CAAC,EAAc2gC,EAAgBqB,6BAA6B5wD,KAAKyO,UAAW+gB,EAAWiR,GAAa,EAAOt+B,EAASmuD,EAAYzf,KAGxI,CAAC,EAAa7wC,KAAKwvD,aAAahvB,gBAAgBC,IAC3D,KAAK,EAED,OADA9kB,EAAGrW,OACI,CAAC,EAAa,GACzB,KAAK,EACD,OAAMtF,KAAKk8C,mBAAqBl8C,KAAKm8C,mBAAqBoU,GAC1DvwD,KAAKkC,OAAOmnB,QAAQ,iDACb,CAAC,EAAarpB,KAAKk8C,kBAAkB2U,iBAAiBN,KAFmB,CAAC,EAAa,GAGlG,KAAK,EACD50C,EAAGrW,OACHqW,EAAGtW,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,GAChB,KAAK,EAAG,MAAO,CAAC,EAAckqD,EAAgBqB,6BAA6B5wD,KAAKyO,UAAW+gB,EAAWiR,GAAa,EAAOt+B,EAASmuD,EAAYzf,EAAiBqf,EAAoBY,mBAWpMvB,EAAgBrvD,UAAUwwD,oBAAsB,SAAUR,EAAqB1gC,EAAW2gC,EAAchuD,EAASmuD,EAAYt6B,EAAco6B,GACvI,IAKInrB,EACAF,EANAvO,EAAMhH,EAAUiH,oBACpB,GAAI1c,GAAYG,QAAQsc,GACpB,MAAMhgB,GAAgBuC,sCAKrBgB,GAAYG,QAAQg2C,EAAoBM,WAAeF,IACxDrrB,EAAgBwC,GAAcC,oBAAoB1nC,KAAKylD,sBAAuBjvB,EAAK05B,EAAoBM,UAAYppD,EAAUyB,aAAc7I,KAAKuvB,SAAU+gC,EAAW55B,OAAOC,KAAOvvB,EAAUyB,aAAcmtB,GAC3M+O,EAAgB/kC,KAAK+wD,sBAAsBb,EAAqBI,EAAY9gC,EAAWwG,EAAco6B,IAGzG,IAAIlrB,EAAoB,KACxB,IAAKnrB,GAAYG,QAAQg2C,EAAoBc,cAAe,CAExD,IAAIC,EAAiBf,EAAoBhzB,MAAQL,GAASO,WAAW8yB,EAAoBhzB,OAAS,IAAIL,GAAS16B,EAAQ0L,QAAU,IAK7HqjD,GAAuD,kBAAnChB,EAAoBiB,WAA0BlM,SAASiL,EAAoBiB,WAAY,IAAMjB,EAAoBiB,aAAe,EACpJC,GAA8D,kBAAvClB,EAAoBmB,eAA8BpM,SAASiL,EAAoBmB,eAAgB,IAAMnB,EAAoBmB,iBAAmB,EACnKC,GAAuD,kBAAnCpB,EAAoBqB,WAA0BtM,SAASiL,EAAoBqB,WAAY,IAAMrB,EAAoBqB,kBAAerrB,EACpJsrB,EAAyBrB,EAAee,EACxCO,EAAiCD,EAAyBJ,EAC1DM,EAAmBJ,GAAaA,EAAY,EAAInB,EAAemB,OAAYprB,EAE/EhB,EAAoByD,GAAkBC,wBAAwB5oC,KAAKylD,sBAAuBjvB,EAAK05B,EAAoBc,cAAgB5pD,EAAUyB,aAAc7I,KAAKuvB,SAAU+gC,EAAaA,EAAW55B,OAAOC,KAAOvvB,EAAUyB,aAAe2mB,EAAUurB,OAAQkW,EAAe9xB,cAAeqyB,EAAwBC,EAAgCzxD,KAAKyO,UAAWijD,EAAkBxB,EAAoByB,WAAY37B,EAAck6B,EAAoBO,OAAQtuD,EAAQu0B,OAAQv0B,EAAQy2B,qBAGzd,IAAIwM,EAAqB,KACpBrrB,GAAYG,QAAQg2C,EAAoB0B,iBACzCxsB,EAAqBkE,GAAmBC,yBAAyBvpC,KAAKylD,sBAAuBjvB,EAAK05B,EAAoB0B,eAAiBxqD,EAAUyB,aAAc7I,KAAKuvB,SAAU2gC,EAAoB2B,KAAM77B,IAG5M,IAAIsP,EAAoB,KAIxB,OAHKvrB,GAAYG,QAAQg2C,EAAoB2B,QACzCvsB,EAAoBoE,GAAkBI,wBAAwB9pC,KAAKuvB,SAAUiH,EAAK05B,EAAoB2B,OAEnG,IAAIhE,GAAY9oB,EAAeE,EAAeC,EAAmBE,EAAoBE,IAQhGiqB,EAAgBrvD,UAAU6wD,sBAAwB,SAAUb,EAAqBn6B,EAASvG,EAAWwG,EAAco6B,GAC/G,IAAIp7B,EAAgBxF,EAAUwF,cAC1BiB,EAAqBm6B,EAAkBA,EAAgB0B,sBAAwB1qD,EAAUyB,aACzFkpD,EAAc3B,EAAkBA,EAAgB4B,aAAe5qD,EAAUyB,aAE7E,GAAImsB,IAAkBzH,GAAc0J,KAEhC,OADAj3B,KAAKkC,OAAOmnB,QAAQ,iDACb8K,GAAc6C,qBAAqBh3B,KAAKylD,sBAAuB1vB,EAASvG,EAAWwG,EAAcC,EAAoB87B,GAGhI,GAAIh4C,GAAYG,QAAQg2C,EAAoBP,cAA2C,QAA3BngC,EAAUwyB,aAClE,MAAMxrC,GAAgBG,6BAE1B,OAAOu5C,EAAoBP,YACvBx7B,GAAc0B,cAAcq6B,EAAoBP,YAAa3vD,KAAKylD,sBAAuB1vB,EAASvG,EAAWwG,EAAcC,EAAoB87B,GAC/I59B,GAAc6C,qBAAqBh3B,KAAKylD,sBAAuB1vB,EAASvG,EAAWwG,EAAcC,EAAoB87B,IAY7HxC,EAAgBqB,6BAA+B,SAAUniD,EAAW+gB,EAAWiR,EAAawxB,EAAgB9vD,EAASmuD,EAAY4B,EAAcp/C,GAC3I,IAAI6I,EAAIsP,EAAIkL,EACZ,OAAO,EAAUn2B,UAAM,OAAQ,GAAQ,WACnC,IAAI4gC,EAAaqwB,EAAgBhpB,EAAWY,EAAcvQ,EAAU65B,EAAmBn+B,EAAK2C,EAC5F,OAAO,EAAY32B,MAAM,SAAUo2B,GAC/B,OAAQA,EAAG/wB,OACP,KAAK,EAKD,OAJAu7B,EAAcx5B,EAAUyB,aACxBooD,EAAiB,GACjBhpB,EAAY,KACZ3P,EAAWlxB,EAAUyB,aAChB43B,EAAYG,YACXH,EAAYG,YAAYjI,YAAc1tB,EAAqB05B,IAAa,CAAC,EAAa,IAC5FwtB,EAAoB,IAAIlE,GAAkBx/C,GACnC,CAAC,EAAa0jD,EAAkB1D,aAAahuB,EAAYG,YAAYL,OAAQp+B,KAH/C,CAAC,EAAa,GAIvD,KAAK,EAED,OADAy+B,EAAcxK,EAAG9wB,OACV,CAAC,EAAa,GACzB,KAAK,EACDs7B,EAAcH,EAAYG,YAAYL,OACtCnK,EAAG/wB,MAAQ,EACf,KAAK,EACD4rD,EAAiBp0B,GAASO,WAAWqD,EAAYG,YAAYjb,QAAQmY,UACrEmK,EAAY,IAAIzZ,KAAiD,IAA5C4Z,OAAO3H,EAAYG,YAAYqH,YACpDY,EAAe,IAAIra,KAAyD,IAApD4Z,OAAO3H,EAAYG,YAAYuI,oBACvD/S,EAAG/wB,MAAQ,EACf,KAAK,EAMD,OALIo7B,EAAYO,cACZ1I,EAAWmI,EAAYO,YAAY1I,WAAaztB,EAAgBA,EAAgBzD,EAAUyB,cAE9FmrB,GAAsB,OAAfs8B,QAAsC,IAAfA,OAAwB,EAASA,EAAW55B,OAAOE,OAAwB,OAAf05B,QAAsC,IAAfA,OAAwB,EAASA,EAAW55B,OAAOG,MAAQzvB,EAAUyB,aACtL8tB,GAAsB,OAAf25B,QAAsC,IAAfA,OAAwB,EAASA,EAAW55B,OAAOC,MAAQvvB,EAAUyB,aAC5F,CAAC,EAAc,CACd2mB,UAAWA,EAAU4iC,mBACrBC,SAAUr+B,EACVW,SAAUgC,EACV9oB,OAAQojD,EACR16B,QAASkK,EAAYlK,QAAUkK,EAAYlK,QAAQf,iBAAmB,KACtEO,QAASu6B,EAAaA,EAAWjxB,SAAWj4B,EAAUyB,aACtD4sB,cAAe66B,EAAaA,EAAW55B,OAAS,GAChDkK,YAAaA,EACb0xB,UAAWL,EACXhqB,UAAWA,EACX10B,cAAepR,EAAQoR,cACvBs1B,aAAcA,EACdvQ,SAAUA,EACVK,WAA+C,QAAlChd,EAAK8kB,EAAYG,mBAAgC,IAAPjlB,OAAgB,EAASA,EAAGgd,YAAcvxB,EAAUyB,aAC3GwjC,MAAO6lB,EAAeA,EAAaxlB,iBAAmBtlC,EAAUyB,aAChEotB,oBAAoD,QAA9BhL,EAAKwV,EAAYlK,eAA4B,IAAPtL,OAAgB,EAASA,EAAGgL,qBAAuB7uB,EAAUyB,aACzHqtB,aAA6C,QAA9BC,EAAKsK,EAAYlK,eAA4B,IAAPJ,OAAgB,EAASA,EAAGD,cAAgB9uB,EAAUyB,aAC3GiK,KAAMA,EACNy/C,kBAAkB,YAMvChD,EA9PyB,GCLhCiD,GAAyC,SAAUnyD,GAEnD,SAASmyD,EAAwBzM,GAC7B,IAAItlD,EAAQJ,EAAOM,KAAKX,KAAM+lD,IAAkB/lD,KAGhD,OADAS,EAAMgyD,oBAAqB,EACpBhyD,EAmaX,OAxaA,EAAU+xD,EAAyBnyD,GAiBnCmyD,EAAwBtyD,UAAUwyD,eAAiB,SAAUvwD,GACzD,OAAO,EAAUnC,UAAM,OAAQ,GAAQ,WACnC,IAAI+uC,EACJ,OAAO,EAAY/uC,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAAG,MAAO,CAAC,EAAarF,KAAK2yD,6BAA6BxwD,IAC/D,KAAK,EAED,OADA4sC,EAAcpzB,EAAGrW,OACV,CAAC,EAAc0oC,GAAUc,kBAAkB9uC,KAAKwvB,UAAUojC,sBAAuB7jB,YAU5GyjB,EAAwBtyD,UAAU2yD,aAAe,SAAU1wD,EAASiuD,GAChE,OAAO,EAAUpwD,UAAM,OAAQ,GAAQ,WACnC,IAAImwD,EAAc5sD,EAAUuvD,EAC5B,OAAO,EAAY9yD,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,GADArF,KAAKkC,OAAO4sB,KAAK,yBACZ3sB,GAAW4X,GAAYG,QAAQ/X,EAAQ2Q,MACxC,MAAM0D,GAAgB2B,sCAG1B,OADAg4C,EAAetoB,GAAUC,aAClB,CAAC,EAAa9nC,KAAK+yD,oBAAoB/yD,KAAKwvB,UAAWrtB,IAClE,KAAK,EAKD,OAJAoB,EAAWoY,EAAGrW,OACdwtD,EAAkB,IAAIvD,GAAgBvvD,KAAKgmD,OAAO5K,YAAY7rB,SAAUvvB,KAAKwkD,aAAcxkD,KAAK8oC,YAAa9oC,KAAKkC,OAAQlC,KAAKgmD,OAAO7J,kBAAmBn8C,KAAKgmD,OAAO9J,mBAErK4W,EAAgBlD,sBAAsBrsD,EAASyB,MACxC,CAAC,EAAa8tD,EAAgB7C,0BAA0B1sD,EAASyB,KAAMhF,KAAKwvB,UAAW2gC,EAAchuD,EAASiuD,IACzH,KAAK,EAAG,MAAO,CAAC,EAAcz0C,EAAGrW,gBAUjDktD,EAAwBtyD,UAAU8yD,uBAAyB,SAAUC,EAAchc,GAE/E,IAAI6b,EAAkB,IAAIvD,GAAgBvvD,KAAKgmD,OAAO5K,YAAY7rB,SAAUvvB,KAAKwkD,aAAcxkD,KAAK8oC,YAAa9oC,KAAKkC,OAAQ,KAAM,MAEhI8uC,EAAgB,IAAIhD,GAAUilB,GAE9BC,EAAellB,GAAUqC,oBAAoBW,EAAc9C,WAI/D,GAFA4kB,EAAgBrD,wCAAwCyD,EAAcjc,EAAaj3C,KAAK8oC,cAEnFoqB,EAAapgD,KACd,MAAM0D,GAAgBoD,wCAE1B,OAAO,EAAS,EAAS,GAAIs5C,GAAe,CAExCpgD,KAAMogD,EAAapgD,QAO3B0/C,EAAwBtyD,UAAUizD,aAAe,SAAUC,GAEvD,IAAKA,EACD,MAAMp4B,GAAyBe,gCAEnC,IAAIgT,EAAc/uC,KAAKqzD,2BAA2BD,GAElD,OAAOplB,GAAUc,kBAAkB9uC,KAAKwvB,UAAU8jC,mBAAoBvkB,IAO1EyjB,EAAwBtyD,UAAU6yD,oBAAsB,SAAUvjC,EAAWrtB,GACzE,OAAO,EAAUnC,UAAM,OAAQ,GAAQ,WACnC,IAAIskD,EAAYiP,EAAaC,EAAiBjc,EAAezhB,EAAYlzB,EAASuU,EAClF,OAAO,EAAYnX,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAYD,OAXAi/C,EAAa,CACT/0B,SAAUvvB,KAAKgmD,OAAO5K,YAAY7rB,SAClCC,UAAWA,EAAU4iC,mBACrBvkD,OAAQ1L,EAAQ0L,OAChB6oB,OAAQv0B,EAAQu0B,OAChBkP,qBAAsBzjC,EAAQyjC,qBAC9Bja,sBAAuBxpB,EAAQwpB,sBAC/BE,mBAAoB1pB,EAAQ0pB,mBAC5B65B,UAAWvjD,EAAQujD,UACnB5f,OAAQ3jC,EAAQ2jC,QAEb,CAAC,EAAa9lC,KAAKyzD,uBAAuBtxD,IACrD,KAAK,EAID,GAHAoxD,EAAc53C,EAAGrW,OACjBkuD,EAAkBxzD,KAAK0zD,2BAA2BvxD,GAClDo1C,OAAgBrR,EACZ/jC,EAAQ2zB,WACR,IACIA,EAAarC,GAAgBtxB,EAAQ2zB,WAAY91B,KAAK8oC,aACtDyO,EAAgB,CACZrW,WAAY,GAAKpL,EAAW9B,IAAM7pB,EAAW4pB,sBAAwB+B,EAAW7B,KAChF/G,KAAMgH,GAAkBsjB,iBAGhC,MAAO9yC,GACH1E,KAAKkC,OAAOmnB,QAAQ,+CAAiD3kB,GAK7E,OAFA9B,EAAU5C,KAAKkmD,0BAA0B3O,GAAiBp1C,EAAQo1C,eAClEpgC,EAAW4C,GAAYG,QAAQs5C,GAAmBhkC,EAAUq2B,cAAgBr2B,EAAUq2B,cAAgB,IAAM2N,EACrG,CAAC,EAAcxzD,KAAKsmD,2BAA2BnvC,EAAUo8C,EAAa3wD,EAAS0hD,YAS1GkO,EAAwBtyD,UAAUwzD,2BAA6B,SAAUvxD,GACrE,IAAIwxD,EAAmB,IAAIpM,GAI3B,OAHIplD,EAAQyxD,sBACRD,EAAiBtH,wBAAwBlqD,EAAQyxD,sBAE9CD,EAAiBhG,qBAM5B6E,EAAwBtyD,UAAUuzD,uBAAyB,SAAUtxD,GACjE,OAAO,EAAUnC,UAAM,OAAQ,GAAQ,WACnC,IAAI2zD,EAAkBhZ,EAAiBwX,EAAmBvF,EAAWr5C,EAAe4yC,EAAqBrwB,EACrGna,EACJ,OAAO,EAAY3b,MAAM,SAAUirB,GAC/B,OAAQA,EAAG5lB,OACP,KAAK,EAwCD,OAvCAsuD,EAAmB,IAAIpM,GACvBoM,EAAiBtL,YAAYroD,KAAKgmD,OAAO5K,YAAY7rB,UAKhDvvB,KAAKyyD,mBAMNkB,EAAiBpL,eAAepmD,EAAQ0/C,aAJxC8E,GAAiBC,oBAAoBzkD,EAAQ0/C,aAOjD8R,EAAiB1L,UAAU9lD,EAAQ0L,QAEnC8lD,EAAiB7I,qBAAqB3oD,EAAQ2Q,MAE9C6gD,EAAiB/J,eAAe5pD,KAAKgmD,OAAOjK,aAC5C4X,EAAiB1J,wBAAwBjqD,KAAKgmD,OAAOhK,UAAUf,aAC/D0Y,EAAiBrG,gBACbttD,KAAKi8C,wBACL0X,EAAiB1G,mBAAmBjtD,KAAKi8C,wBAGzC95C,EAAQugB,cACRixC,EAAiBxI,gBAAgBhpD,EAAQugB,cAEzC1iB,KAAKgmD,OAAOlK,kBAAkBpB,cAC9BiZ,EAAiBtI,gBAAgBrrD,KAAKgmD,OAAOlK,kBAAkBpB,cAE/D16C,KAAKgmD,OAAOlK,kBAAkBnB,kBAC9BA,EAAkB36C,KAAKgmD,OAAOlK,kBAAkBnB,gBAChDgZ,EAAiBpI,mBAAmB5Q,EAAgBkZ,WACpDF,EAAiBlI,uBAAuB9Q,EAAgBmZ,gBAE5DH,EAAiB1H,aAAahiD,EAAU8pD,0BACxCJ,EAAiBvH,gBACXjqD,EAAQyjC,uBAAyB36B,EAAqB05B,IAAa,CAAC,EAAa,IACvFwtB,EAAoB,IAAIlE,GAAkBjuD,KAAK8oC,aACxC,CAAC,EAAaqpB,EAAkBjE,YAAY/rD,KACvD,KAAK,EAGD,OAFAyqD,EAAY3hC,EAAG3lB,OACfquD,EAAiBhH,YAAYC,GACtB,CAAC,EAAa,GACzB,KAAK,EACD,GAAIzqD,EAAQyjC,uBAAyB36B,EAAqBk4B,IAAK,CAC3D,IAAIhhC,EAAQ6xD,OAIR,MAAMh5B,GAAyBuB,2BAH/Bo3B,EAAiB5G,UAAU5qD,EAAQ6xD,QAM3C/oC,EAAG5lB,MAAQ,EACf,KAAK,EAOD,GANAkO,EAAgBpR,EAAQoR,eAAiBvT,KAAKgmD,OAAOnK,gBAAgBxxB,gBACrEspC,EAAiBjK,iBAAiBn2C,KAC7BwG,GAAYa,WAAWzY,EAAQu0B,SAAW12B,KAAKgmD,OAAO5K,YAAYiB,oBAAsBr8C,KAAKgmD,OAAO5K,YAAYiB,mBAAmBh7C,OAAS,IAC7IsyD,EAAiBpK,UAAUpnD,EAAQu0B,OAAQ12B,KAAKgmD,OAAO5K,YAAYiB,oBAEvE8J,OAAUjgB,EACN/jC,EAAQ2zB,WACR,IACIA,EAAarC,GAAgBtxB,EAAQ2zB,WAAY91B,KAAK8oC,aACtDqd,EAAU,CACNjlB,WAAY,GAAKpL,EAAW9B,IAAM7pB,EAAW4pB,sBAAwB+B,EAAW7B,KAChF/G,KAAMgH,GAAkBsjB,iBAGhC,MAAO9yC,GACH1E,KAAKkC,OAAOmnB,QAAQ,+CAAiD3kB,QAIzEyhD,EAAUhkD,EAAQo1C,cAGtB,GAAIv3C,KAAKgmD,OAAO1K,cAActB,sBAAwBmM,EAClD,OAAQA,EAAQj5B,MACZ,KAAKgH,GAAkBsjB,gBACnB,IACI1hB,EAAalC,GAAiCuyB,EAAQjlB,YACtDyyB,EAAiBvK,UAAUtzB,GAE/B,MAAOpxB,GACH1E,KAAKkC,OAAOmnB,QAAQ,mDAAqD3kB,GAE7E,MACJ,KAAKwvB,GAAkBwjB,IACnBic,EAAiBxK,UAAUhD,EAAQjlB,YACnC,MAYZ,OATI/+B,EAAQ8xD,qBACRN,EAAiBtH,wBAAwBlqD,EAAQ8xD,sBAGjD9xD,EAAQ+xD,4BAAgC/xD,EAAQ8xD,qBAAwB9xD,EAAQ8xD,oBAAoB/sD,EAAmBitD,kBACvHR,EAAiBtH,yBAAyB1wC,EAAK,GAC3CA,EAAGzU,EAAmBitD,iBAAmB,IACzCx4C,IAED,CAAC,EAAcg4C,EAAiBhG,6BAS3D6E,EAAwBtyD,UAAUyyD,6BAA+B,SAAUxwD,GACvE,OAAO,EAAUnC,UAAM,OAAQ,GAAQ,WACnC,IAAI2zD,EAAkBxL,EAAe50C,EAAemhC,EAAwB5e,EAAYq8B,EAAmBhlC,EAAKinC,EAChH,OAAO,EAAYp0D,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EA4BD,GA3BAsuD,EAAmB,IAAIpM,GACvBoM,EAAiBtL,YAAYroD,KAAKgmD,OAAO5K,YAAY7rB,UACrD44B,EAAgB1hD,EAAetE,EAAQ0L,QAAU,GAAI1L,EAAQkyD,sBAAwB,IACrFV,EAAiB1L,UAAUE,GAE3BwL,EAAiBpL,eAAepmD,EAAQ0/C,aACxCtuC,EAAgBpR,EAAQoR,eAAiBvT,KAAKgmD,OAAOnK,gBAAgBxxB,gBACrEspC,EAAiBjK,iBAAiBn2C,GAElCogD,EAAiBhM,gBAAgBxlD,EAAQylD,cAEzC+L,EAAiBnM,sBAEjBmM,EAAiB/J,eAAe5pD,KAAKgmD,OAAOjK,aAC5C4X,EAAiB1J,wBAAwBjqD,KAAKgmD,OAAOhK,UAAUf,aAE/D0Y,EAAiBvH,gBACbjqD,EAAQwgB,eAAiBxgB,EAAQ+kD,qBACjCyM,EAAiBhJ,uBAAuBxoD,EAAQwgB,cAAexgB,EAAQ+kD,qBAEvE/kD,EAAQ2kD,QACR6M,EAAiBtJ,UAAUloD,EAAQ2kD,QAEnC3kD,EAAQ4mD,YACR4K,EAAiB7K,cAAc3mD,EAAQ4mD,YAGvC5mD,EAAQ2kD,SAAWp9C,EAAYE,eAE/B,GAAIzH,EAAQsyC,KAAOtyC,EAAQ2kD,SAAWp9C,EAAYI,KAE9C9J,KAAKkC,OAAOmnB,QAAQ,yEACpBsqC,EAAiBtK,OAAOlnD,EAAQsyC,UAE/B,GAAItyC,EAAQo0B,SAGb,GAFAme,EAAa10C,KAAKs0D,kBAAkBnyD,EAAQo0B,SAExCme,GAAcvyC,EAAQ2kD,SAAWp9C,EAAYI,KAAM,CAEnD9J,KAAKkC,OAAOmnB,QAAQ,yEACpBsqC,EAAiBtK,OAAO3U,GACxB,IACI5e,EAAalC,GAAiCzxB,EAAQo0B,QAAQ1C,eAC9D8/B,EAAiBvK,UAAUtzB,GAE/B,MAAOpxB,GACH1E,KAAKkC,OAAOmnB,QAAQ,mDAAqD3kB,SAG5E,GAAIvC,EAAQqyC,UACbx0C,KAAKkC,OAAOmnB,QAAQ,gEACpBsqC,EAAiB1K,aAAa9mD,EAAQqyC,WACtCmf,EAAiBxK,UAAUhnD,EAAQqyC,gBAElC,GAAIryC,EAAQo0B,QAAQ1B,SAAU,CAE/B70B,KAAKkC,OAAOmnB,QAAQ,gEACpBsqC,EAAiB1K,aAAa9mD,EAAQo0B,QAAQ1B,UAC9C,IACIiB,EAAalC,GAAiCzxB,EAAQo0B,QAAQ1C,eAC9D8/B,EAAiBvK,UAAUtzB,GAE/B,MAAOpxB,GACH1E,KAAKkC,OAAOmnB,QAAQ,mDAAqD3kB,UAI5EvC,EAAQqyC,YACbx0C,KAAKkC,OAAOmnB,QAAQ,4EACpBsqC,EAAiB1K,aAAa9mD,EAAQqyC,WACtCmf,EAAiBxK,UAAUhnD,EAAQqyC,iBAIvCx0C,KAAKkC,OAAOmnB,QAAQ,kFAcxB,OAZIlnB,EAAQ61B,OACR27B,EAAiBlJ,SAAStoD,EAAQ61B,OAElC71B,EAAQkqC,OACRsnB,EAAiBpJ,SAASpoD,EAAQkqC,SAEjCtyB,GAAYG,QAAQ/X,EAAQu0B,SAAW12B,KAAKgmD,OAAO5K,YAAYiB,oBAAsBr8C,KAAKgmD,OAAO5K,YAAYiB,mBAAmBh7C,OAAS,IAC1IsyD,EAAiBpK,UAAUpnD,EAAQu0B,OAAQ12B,KAAKgmD,OAAO5K,YAAYiB,oBAEnEl6C,EAAQoyD,sBACRZ,EAAiBtH,wBAAwBlqD,EAAQoyD,sBAEhDpyD,EAAQqyD,cAEbb,EAAiB5L,kBACX5lD,EAAQyjC,uBAAyB36B,EAAqB05B,IAAa,CAAC,EAAa,IACvFwtB,EAAoB,IAAIlE,GAAkBjuD,KAAK8oC,aACxC,CAAC,EAAaqpB,EAAkBjE,YAAY/rD,MALjB,CAAC,EAAa,GAMpD,KAAK,EAED,OADAgrB,EAAMxR,EAAGrW,OACF,CAAC,EAAa6sD,EAAkB9D,gBAAgBlhC,IAC3D,KAAK,EACDinC,EAAUz4C,EAAGrW,OACbquD,EAAiBhH,YAAYyH,GAC7Bz4C,EAAGtW,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAcsuD,EAAiBhG,6BAS/D6E,EAAwBtyD,UAAUmzD,2BAA6B,SAAUlxD,GACrE,IAAIwxD,EAAmB,IAAIpM,GAmB3B,OAlBIplD,EAAQ2/C,uBACR6R,EAAiBlL,yBAAyBtmD,EAAQ2/C,uBAElD3/C,EAAQoR,eACRogD,EAAiBjK,iBAAiBvnD,EAAQoR,eAE1CpR,EAAQymD,aACR+K,EAAiBhL,eAAexmD,EAAQymD,aAExCzmD,EAAQkqC,OACRsnB,EAAiBpJ,SAASpoD,EAAQkqC,OAElClqC,EAAQsrD,YACRkG,EAAiBnG,cAAcrrD,EAAQsrD,YAEvCtrD,EAAQoyD,sBACRZ,EAAiBtH,wBAAwBlqD,EAAQoyD,sBAE9CZ,EAAiBhG,qBAM5B6E,EAAwBtyD,UAAUo0D,kBAAoB,SAAU/9B,GAC5D,GAAIA,EAAQd,cAAe,CACvB,IAAI2T,EAAc7S,EAAQd,cAC1B,OAAO2T,EAAYqL,KAAO,KAE9B,OAAO,MAEJ+d,EAzaiC,CA0a1C1M;;AC5bF,SAAS2O,GAAuBlxD,GAC5B,OAAQA,EAASzD,eAAe,2BAC5ByD,EAASzD,eAAe,mBACxByD,EAASzD,eAAe;;ACHhC,SAAS40D,GAAiCnxD,GACtC,OAAQA,EAASzD,eAAe,8BAC5ByD,EAASzD,eAAe;;ACChC,ICCI60D,GDDAC,GAAiC,WACjC,SAASA,EAAgBjZ,GACrB37C,KAAK27C,iBAAmBA,EA+G5B,OAxGAiZ,EAAgB10D,UAAU20D,aAAe,SAAUC,EAAmBC,EAAyB9a,GAC3F,OAAO,EAAUj6C,UAAM,OAAQ,GAAQ,WACnC,IAAIg1D,EAAwBpzD,EAASqzD,EAA0BC,EAAoBC,EACnF,OAAO,EAAYn1D,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,GADA2vD,EAAyBF,EACnBE,EAAwB,MAAO,CAAC,EAAa,GACnDpzD,EAAUgzD,EAAgBQ,aACtBnb,IACAr4C,EAAQq4C,SAAWA,GAEvBt+B,EAAGtW,MAAQ,EACf,KAAK,EAED,OADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAahG,KAAKq1D,kBAAkBjuD,EAAU4B,aAAcpH,IACxE,KAAK,EAMD,OALAqzD,EAA2Bt5C,EAAGrW,OAC1B2vD,EAAyB3xD,SAAWuI,EAAcypD,cAClDN,EAAyBC,EAAyBjwD,KAClD+vD,EAAwBQ,cAAgBzpD,EAAuB0pD,MAE7DP,EAAyB3xD,SAAWuI,EAAc4pD,eAAwB,CAAC,EAAa,GACvF,CAAC,EAAaz1D,KAAK01D,kBAAkB9zD,IAChD,KAAK,EAED,OADAszD,EAAqBv5C,EAAGrW,OACnB4vD,EAIE,CAAC,EAAal1D,KAAKq1D,kBAAkBH,EAAoBtzD,KAH5DmzD,EAAwBQ,cAAgBzpD,EAAuB6pD,sBACxD,CAAC,EAAc,OAG9B,KAAK,EACDR,EAA6Bx5C,EAAGrW,OAC5B6vD,EAA2B7xD,SAAWuI,EAAcypD,cACpDN,EAAyBG,EAA2BnwD,KACpD+vD,EAAwBQ,cAAgBzpD,EAAuB0pD,MAEnE75C,EAAGtW,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAa,GAC7B,KAAK,EAGD,OAFAsW,EAAGrW,OACHyvD,EAAwBQ,cAAgBzpD,EAAuB6pD,sBACxD,CAAC,EAAc,MAC1B,KAAK,EAAG,MAAO,CAAC,EAAa,GAC7B,KAAK,EACDZ,EAAwBQ,cAAgBzpD,EAAuB8pD,qBAC/Dj6C,EAAGtW,MAAQ,EACf,KAAK,EAKD,OAHK2vD,IACDD,EAAwBQ,cAAgBzpD,EAAuB6pD,uBAE5D,CAAC,EAAcX,GAA0B,cAWpEJ,EAAgB10D,UAAUm1D,kBAAoB,SAAU9uC,EAAS3kB,GAC7D,OAAO,EAAU5B,UAAM,OAAQ,GAAQ,WACnC,OAAO,EAAYA,MAAM,SAAU2b,GAC/B,MAAO,CAAC,EAAc3b,KAAK27C,iBAAiBvB,oBAAoBhzC,EAAU2B,cAAgB,gBAAkBwd,EAAU,eAAgB3kB,EAASwF,EAAU6B,sBASrK2rD,EAAgB10D,UAAUw1D,kBAAoB,SAAU9zD,GACpD,OAAO,EAAU5B,UAAM,OAAQ,GAAQ,WACnC,IAAIuD,EACJ,OAAO,EAAYvD,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,OADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAahG,KAAK27C,iBAAiBvB,oBAAoBhzC,EAAU2B,cAAgB,eAAgBnH,IAC7G,KAAK,EAGD,OAFA2B,EAAWoY,EAAGrW,OAEV/B,EAASD,SAAWuI,EAAc4pD,gBAAkBlyD,EAASyB,MAAQzB,EAASyB,KAAK,oBAAsBzB,EAASyB,KAAK,mBAAmB3D,OAAS,EAC5I,CAAC,EAAckC,EAASyB,KAAK,mBAAmB,IAEpD,CAAC,EAAc,MAC1B,KAAK,EAED,OADA2W,EAAGrW,OACI,CAAC,EAAc,MAC1B,KAAK,EAAG,MAAO,CAAC,WAMhCsvD,EAAgBQ,aAAe,CAC3BxyD,QAAS,CACLizD,SAAU,SAGXjB,EAjHyB,GEchCkB,GAA2B,WAC3B,SAASA,EAAUtmC,EAAWmsB,EAAkB6I,EAAcuR,EAAkB9b,GAC5Ej6C,KAAKoyD,mBAAqB5iC,EAC1BxvB,KAAKg2D,oBAAoBxnB,gBACzBxuC,KAAK27C,iBAAmBA,EACxB37C,KAAKwkD,aAAeA,EACpBxkD,KAAK+1D,iBAAmBA,EACxB/1D,KAAKi2D,gBAAkB,IAAIrB,GAAgBjZ,GAC3C37C,KAAK+0D,wBAA0B,CAAEmB,iBAAahwB,EAAWqvB,mBAAervB,EAAWiwB,oBAAgBjwB,GACnGlmC,KAAKi6C,SAAWA,GAAY7yC,EAAUyB,aAwjB1C,OAtjBAtJ,OAAO6uC,eAAe0nB,EAAU51D,UAAW,gBAAiB,CAExDwB,IAAK,WACD,IAAImuC,EAAe7vC,KAAKo2D,gCAAgCxnB,aACxD,OAAIiB,EAAaxuC,QAAUwuC,EAAa,GAAGrb,gBAAkBptB,EAAUO,KAC5D4lB,GAAc0J,KAElB1J,GAAc8oC,SAEzBhoB,YAAY,EACZC,cAAc,IAElB/uC,OAAO6uC,eAAe0nB,EAAU51D,UAAW,eAAgB,CAIvDwB,IAAK,WACD,OAAO1B,KAAK+1D,iBAAiB/T,cAEjC3T,YAAY,EACZC,cAAc,IAElB/uC,OAAO6uC,eAAe0nB,EAAU51D,UAAW,UAAW,CAIlDwB,IAAK,WACD,OAAO1B,KAAK+1D,kBAEhB1nB,YAAY,EACZC,cAAc,IAElB/uC,OAAO6uC,eAAe0nB,EAAU51D,UAAW,qBAAsB,CAI7DwB,IAAK,WACD,OAAO1B,KAAKg2D,oBAAoB16B,WAKpC3S,IAAK,SAAUhnB,GACX3B,KAAKg2D,oBAAsB,IAAIhoB,GAAUrsC,GACzC3B,KAAKg2D,oBAAoBxnB,gBACzBxuC,KAAKs2D,iCAAmC,MAE5CjoB,YAAY,EACZC,cAAc,IAElB/uC,OAAO6uC,eAAe0nB,EAAU51D,UAAW,kCAAmC,CAI1EwB,IAAK,WAID,OAHK1B,KAAKs2D,mCACNt2D,KAAKs2D,iCAAmCt2D,KAAKg2D,oBAAoBtnB,oBAE9D1uC,KAAKs2D,kCAEhBjoB,YAAY,EACZC,cAAc,IAElB/uC,OAAO6uC,eAAe0nB,EAAU51D,UAAW,kBAAmB,CAI1DwB,IAAK,WACD,OAAO1B,KAAKo2D,gCAAgCznB,gBAAgBna,eAEhE6Z,YAAY,EACZC,cAAc,IAElB/uC,OAAO6uC,eAAe0nB,EAAU51D,UAAW,SAAU,CAIjDwB,IAAK,WACD,OAAO1B,KAAKo2D,gCAAgCxnB,aAAa,IAE7DP,YAAY,EACZC,cAAc,IAElB/uC,OAAO6uC,eAAe0nB,EAAU51D,UAAW,wBAAyB,CAIhEwB,IAAK,WACD,GAAI1B,KAAK0mD,oBAAqB,CAC1B,IAAIvvC,EAAWnX,KAAKu2D,YAAYv2D,KAAK0qC,SAASM,wBAC9C,OAAOhrC,KAAKw2D,cAAcr/C,GAG1B,MAAMX,GAAgBQ,uCAAuC,0BAGrEq3B,YAAY,EACZC,cAAc,IAElB/uC,OAAO6uC,eAAe0nB,EAAU51D,UAAW,gBAAiB,CAIxDwB,IAAK,WACD,GAAI1B,KAAK0mD,oBAAqB,CAC1B,IAAIvvC,EAAWnX,KAAKu2D,YAAYv2D,KAAK0qC,SAASO,gBAC9C,OAAOjrC,KAAKw2D,cAAcr/C,GAG1B,MAAMX,GAAgBQ,uCAAuC,0BAGrEq3B,YAAY,EACZC,cAAc,IAElB/uC,OAAO6uC,eAAe0nB,EAAU51D,UAAW,qBAAsB,CAC7DwB,IAAK,WACD,GAAI1B,KAAK0mD,oBAAqB,CAC1B,IAAIvvC,EAAWnX,KAAKu2D,YAAYv2D,KAAK0qC,SAASO,eAAe/5B,QAAQ,SAAU,gBAC/E,OAAOlR,KAAKw2D,cAAcr/C,GAG1B,MAAMX,GAAgBQ,uCAAuC,0BAGrEq3B,YAAY,EACZC,cAAc,IAElB/uC,OAAO6uC,eAAe0nB,EAAU51D,UAAW,qBAAsB,CAI7DwB,IAAK,WACD,GAAI1B,KAAK0mD,oBAAqB,CAE1B,IAAK1mD,KAAK0qC,SAASQ,qBACf,MAAM10B,GAAgBsD,gCAE1B,IAAI3C,EAAWnX,KAAKu2D,YAAYv2D,KAAK0qC,SAASQ,sBAC9C,OAAOlrC,KAAKw2D,cAAcr/C,GAG1B,MAAMX,GAAgBQ,uCAAuC,0BAGrEq3B,YAAY,EACZC,cAAc,IAElB/uC,OAAO6uC,eAAe0nB,EAAU51D,UAAW,wBAAyB,CAIhEwB,IAAK,WACD,GAAI1B,KAAK0mD,oBAAqB,CAC1B,IAAIvvC,EAAWnX,KAAKu2D,YAAYv2D,KAAK0qC,SAASS,QAC9C,OAAOnrC,KAAKw2D,cAAcr/C,GAG1B,MAAMX,GAAgBQ,uCAAuC,0BAGrEq3B,YAAY,EACZC,cAAc,IAMlBwnB,EAAU51D,UAAUs2D,cAAgB,SAAUl7B,GAC1C,OAAOA,EAAUpqB,QAAQ,uBAAwBlR,KAAK+6C,SAM1D+a,EAAU51D,UAAUq2D,YAAc,SAAUj7B,GACxC,IAAInkB,EAAWmkB,EACXm7B,EAAqB,IAAIzoB,GAAUhuC,KAAK0qC,SAASY,qBACjDorB,EAAuBD,EAAmB/nB,mBAAmBE,aAC7D+nB,EAAwB32D,KAAKo2D,gCAAgCxnB,aAOjE,OANA+nB,EAAsB7zD,SAAQ,SAAU8zD,EAAatkB,GACjD,IAAIukB,EAAaH,EAAqBpkB,GAClCskB,IAAgBC,IAChB1/C,EAAWA,EAASjG,QAAQ,IAAM2lD,EAAa,IAAK,IAAMD,EAAc,SAGzEz/C,GAEX5X,OAAO6uC,eAAe0nB,EAAU51D,UAAW,qCAAsC,CAI7EwB,IAAK,WACD,OAAI1B,KAAKg1B,gBAAkBzH,GAAc0J,MAAQj3B,KAAKgiD,eAAiBrV,GAAamqB,KACzE92D,KAAKoyD,mBAAqB,mCAE9BpyD,KAAKoyD,mBAAqB,yCAErC/jB,YAAY,EACZC,cAAc,IAKlBwnB,EAAU51D,UAAUwmD,kBAAoB,WACpC,QAAS1mD,KAAK0qC,UAMlBorB,EAAU51D,UAAU62D,sBAAwB,WACxC,OAAO,EAAU/2D,UAAM,OAAQ,GAAQ,WACnC,IAAIg3D,EAAgBC,EAAsBC,EAAgBh1B,EAC1D,OAAO,EAAYliC,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAMD,OALA2xD,EAAiBh3D,KAAKwkD,aAAa5gB,4BAA4B5jC,KAAKm3D,iBAC/DH,IACDA,EAAiB,IAAIzsB,GACrBysB,EAAe3rB,yBAAyBrrC,KAAKoyD,qBAE1C,CAAC,EAAapyD,KAAKyqC,6BAA6BusB,IAC3D,KAAK,EAGD,OAFAC,EAAuBt7C,EAAGrW,OAC1BtF,KAAKoyD,mBAAqBpyD,KAAKoyD,mBAAmBlhD,QAAQlR,KAAKm3D,gBAAiBH,EAAensB,mBACxF,CAAC,EAAa7qC,KAAK+qC,uBAAuBisB,IACrD,KAAK,EAUD,OATAE,EAAiBv7C,EAAGrW,OAChB2xD,IAAyBvsD,EAAwB0sD,OAASF,IAAmBxsD,EAAwB0sD,QAErGJ,EAAezrB,iBACfyrB,EAAe3rB,yBAAyBrrC,KAAKoyD,qBAEjDlwB,EAAWliC,KAAKwkD,aAAa3d,kCAAkCmwB,EAAepsB,iBAC9E5qC,KAAKwkD,aAAald,qBAAqBpF,EAAU80B,GACjDh3D,KAAK0qC,SAAWssB,EACT,CAAC,WAS5BlB,EAAU51D,UAAU6qC,uBAAyB,SAAUisB,GACnD,IAAIr7C,EACJ,OAAO,EAAU3b,UAAM,OAAQ,GAAQ,WACnC,IAAI0qC,EAAUsqB,EAAwBqC,EACtC,OAAO,EAAYr3D,MAAM,SAAUirB,GAC/B,OAAQA,EAAG5lB,OACP,KAAK,EAED,OADAqlC,EAAW1qC,KAAKs3D,gCACZ5sB,GACAssB,EAAejsB,uBAAuBL,GAAU,GACzC,CAAC,EAAchgC,EAAwB6sD,SAE9Cv3D,KAAKw3D,oBAAoBR,IAAmBA,EAAe5rB,uBAAyB4rB,EAAexrB,YAE5F,CAAC,EAAc9gC,EAAwB0sD,OAE3C,CAAC,EAAap3D,KAAKy3D,kCAC9B,KAAK,EAED,OADA/sB,EAAWzf,EAAG3lB,OACTolC,GAC2D,QAAzD/uB,EAAK3b,KAAK+1D,iBAAiB2B,gCAA6C,IAAP/7C,OAAgB,EAASA,EAAG07C,aAC7F,CAAC,EAAar3D,KAAKi2D,gBAAgBpB,aAAa70D,KAAK+1D,iBAAiB2B,yBAAyB5C,kBAAmB90D,KAAK+0D,wBAAyB/0D,KAAKi6C,WADnC,CAAC,EAAa,GADjH,CAAC,EAAa,GAGxC,KAAK,EACD+a,EAAyB/pC,EAAG3lB,OAC5B+xD,EAAcr3D,KAAK+1D,iBAAiB2B,yBAAyBL,cAAgBjwD,EAAU8B,gCACjF8rD,EACAh1D,KAAK+1D,iBAAiB2B,yBAAyBL,YACjDr3D,KAAK+1D,iBAAiB2B,yBAAyBL,cAAgBjwD,EAAU8B,gCACzElJ,KAAK+0D,wBAAwBoB,eAAiBnB,EAC1CjpD,EAAwB4rD,oCACxB5rD,EAAwB6rD,gCAIxB53D,KAAK+0D,wBAAwBoB,eAD7BnB,EAC+Ch1D,KAAK+1D,iBAAiB2B,yBAAyBL,cAAgBrC,EAC1GjpD,EAAwB8rD,4BACxB9rD,EAAwB+rD,wBAGkB/rD,EAAwBgsD,6BAG1EV,IACAr3D,KAAK+0D,wBAAwBmB,YAAcmB,EAC3C3sB,EAAWorB,EAAUkC,+BAA+BttB,EAAU2sB,IAElEpsC,EAAG5lB,MAAQ,EACf,KAAK,EAED,OADA2xD,EAAejsB,uBAAuBL,GAAU,GACzC,CAAC,EAAchgC,EAAwButD,SAClD,KAAK,EAAG,MAAMzhD,GAAgBa,mCAAmCrX,KAAKk4D,4CAUtFpC,EAAU51D,UAAUs3D,oBAAsB,SAAUR,GAChD,IAAIP,EAAqB,IAAIzoB,GAAUgpB,EAAe1rB,qBAClD6sB,EAAc1B,EAAmB/nB,mBAAmBE,aACxD,OAAOupB,EAAY92D,SAAWrB,KAAKo2D,gCAAgCxnB,aAAavtC,QAKpFy0D,EAAU51D,UAAUo3D,8BAAgC,WAChD,GAAIt3D,KAAK+1D,iBAAiBnU,kBACtB,IACI,OAAOtnC,KAAKS,MAAM/a,KAAK+1D,iBAAiBnU,mBAE5C,MAAOl9C,GACH,MAAMs2B,GAAyBoB,sCAGvC,OAAO,MAKX05B,EAAU51D,UAAUu3D,+BAAiC,WACjD,OAAO,EAAUz3D,UAAM,OAAQ,GAAQ,WACnC,IAAI4B,EAAS2B,EACb,OAAO,EAAYvD,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EACDzD,EAAU,GACN5B,KAAKi6C,WACLr4C,EAAQq4C,SAAWj6C,KAAKi6C,UAE5Bt+B,EAAGtW,MAAQ,EACf,KAAK,EAED,OADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAahG,KAAK27C,iBAAiBvB,oBAAoBp6C,KAAKk4D,mCAAoCt2D,IAC5G,KAAK,EAED,OADA2B,EAAWoY,EAAGrW,OACP,CAAC,EAAcmvD,GAAuBlxD,EAASyB,MAAQzB,EAASyB,KAAO,MAClF,KAAK,EAED,OADA2W,EAAGrW,OACI,CAAC,EAAc,MAC1B,KAAK,EAAG,MAAO,CAAC,WAUhCwwD,EAAU51D,UAAUuqC,6BAA+B,SAAUusB,GACzD,OAAO,EAAUh3D,UAAM,OAAQ,GAAQ,WACnC,IAAI0qC,EACJ,OAAO,EAAY1qC,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,OADAqlC,EAAW1qC,KAAKo4D,sCACZ1tB,GACAssB,EAAevsB,6BAA6BC,GAAU,GAC/C,CAAC,EAAchgC,EAAwB6sD,SAG9Cv3D,KAAKw3D,oBAAoBR,IAAmBA,EAAelsB,qBAAuBksB,EAAexrB,YAE1F,CAAC,EAAc9gC,EAAwB0sD,OAE3C,CAAC,EAAap3D,KAAKq4D,wCAC9B,KAAK,EAED,GADA3tB,EAAW/uB,EAAGrW,OACVolC,EAEA,OADAssB,EAAevsB,6BAA6BC,GAAU,GAC/C,CAAC,EAAchgC,EAAwButD,SAI9C,MAAMj9B,GAAyBqB,wCASvDy5B,EAAU51D,UAAUk4D,oCAAsC,WAEtD,GAAIp4D,KAAK+1D,iBAAiBpU,uBACtB,IACI,IAAI2W,EAAiBh+C,KAAKS,MAAM/a,KAAK+1D,iBAAiBpU,wBAClDjX,EAAWorB,EAAUyC,6CAA6CD,EAAe5tB,SAAU1qC,KAAKm3D,iBACpG,GAAIzsB,EACA,OAAOA,EAGf,MAAOhmC,GACH,MAAMs2B,GAAyBmB,2CAIvC,OAAIn8B,KAAKw4D,uBACE1C,EAAU2C,qCAAqCz4D,KAAKm3D,iBAExD,MAMXrB,EAAU51D,UAAUm4D,qCAAuC,WACvD,OAAO,EAAUr4D,UAAM,OAAQ,GAAQ,WACnC,IAAI04D,EAA2B92D,EAAS6tC,EAAOlsC,EAAUmnC,EACzD,OAAO,EAAY1qC,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EACDqzD,EAA4B,GAAKtxD,EAAUQ,6BAA+B5H,KAAKoyD,mBAAqB,wBACpGxwD,EAAU,GACN5B,KAAKi6C,WACLr4C,EAAQq4C,SAAWj6C,KAAKi6C,UAE5BxK,EAAQ,KACR9zB,EAAGtW,MAAQ,EACf,KAAK,EAED,OADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAahG,KAAK27C,iBAAiBvB,oBAAoBse,EAA2B92D,IAC9F,KAAK,EAGD,OAFA2B,EAAWoY,EAAGrW,OACdolC,EAAWgqB,GAAiCnxD,EAASyB,MAAQzB,EAASyB,KAAK0lC,SAAW,GAC9D,IAApBA,EAASrpC,OAEF,CAAC,EAAc,OAE1BouC,EAAQqmB,EAAUyC,6CAA6C7tB,EAAU1qC,KAAKm3D,iBACvE,CAAC,EAAa,IACzB,KAAK,EAED,OADAx7C,EAAGrW,OACI,CAAC,EAAc,MAC1B,KAAK,EAKD,OAJKmqC,IAEDA,EAAQqmB,EAAU2C,qCAAqCz4D,KAAKm3D,kBAEzD,CAAC,EAAc1nB,WAQ1CqmB,EAAU51D,UAAUs4D,qBAAuB,WACvC,IAAI/3D,EAAQT,KACRoa,EAAUpa,KAAK+1D,iBAAiBrU,iBAAiBxlC,QAAO,SAAUsT,GAClE,OAAOwe,GAAU8B,iBAAiBtgB,GAAWgF,gBAAkB/zB,EAAM02D,mBAEzE,OAAO/8C,EAAQ/Y,OAAS,GAO5By0D,EAAU6C,kBAAoB,SAAUC,EAAiBtc,GACrD,IAAIuc,EACJ,GAAIvc,GAAqBA,EAAkBzB,qBAAuBjO,GAAmBkO,KAAM,CACvF,IAAIC,EAASuB,EAAkBvB,OAASuB,EAAkBvB,OAAS3zC,EAAUM,sBAC7EmxD,EAA8Bvc,EAAkBzB,mBAAqB,IAAME,EAAS,IAExF,OAAO8d,GAA4DD,GAMvE9C,EAAU2C,qCAAuC,SAAU50B,GACvD,MAAO,CACHgH,kBAAmBhH,EACnB+G,gBAAiB/G,EACjBK,QAAS,CAACL,KAQlBiyB,EAAUyC,6CAA+C,SAAUh1D,EAAUisB,GACzE,IAAK,IAAItuB,EAAI,EAAGA,EAAIqC,EAASlC,OAAQH,IAAK,CACtC,IAAIwpC,EAAWnnC,EAASrC,GACxB,GAAIwpC,EAASxG,QAAQhpB,QAAQsU,IAAc,EACvC,OAAOkb,EAGf,OAAO,MAKXorB,EAAU51D,UAAUu2B,kBAAoB,WACpC,GAAIz2B,KAAK0mD,oBACL,OAAO1mD,KAAK0qC,SAASE,gBAGrB,MAAMp0B,GAAgBQ,uCAAuC,0BAOrE8+C,EAAU51D,UAAU44D,QAAU,SAAUj1B,GACpC,OAAO7jC,KAAK0qC,SAASxG,QAAQhpB,QAAQ2oB,IAAS,GAQlDiyB,EAAUiD,uBAAyB,SAAUl1B,GACzC,OAAOz8B,EAAUgC,oBAAoB8R,QAAQ2oB,IAAS,GAQ1DiyB,EAAUkD,6BAA+B,SAAUn1B,EAAMo1B,EAAQlqB,GAE7D,IAAImqB,EAAuB,IAAIlrB,GAAUnK,GACzCq1B,EAAqB1qB,gBACrB,IAAI2qB,EAAoBD,EAAqBxqB,mBACzC0qB,EAAkBH,EAAS,IAAME,EAAkBxqB,gBACnD3uC,KAAK+4D,uBAAuBI,EAAkBxqB,mBAC9CyqB,EAAkBH,EAAS,IAAM7xD,EAAU+B,mCAG/C,IAAIxH,EAAMqsC,GAAUsB,gCAAgC,EAAS,EAAS,GAAI4pB,EAAqBxqB,oBAAqB,CAAEC,gBAAiByqB,KAAoB99B,UAE3J,OAAIyT,EACOptC,EAAM,IAAMotC,EAChBptC,GAQXm0D,EAAUkC,+BAAiC,SAAUttB,EAAU2sB,GAO3D,OANA3sB,EAASM,uBAAyB8qB,EAAUkD,6BAA6BtuB,EAASM,uBAAwBqsB,GAE1G3sB,EAASO,eAAiB6qB,EAAUkD,6BAA6BtuB,EAASO,eAAgBosB,EAAa,yBACnG3sB,EAASQ,uBACTR,EAASQ,qBAAuB4qB,EAAUkD,6BAA6BtuB,EAASQ,qBAAsBmsB,IAEnG3sB,GAEJorB,EAjkBmB,GCX1BuD,GAAkC,WAClC,SAASA,KAmDT,OAvCAA,EAAiBC,yBAA2B,SAAUC,EAAclX,EAAemC,EAAcuR,EAAkB9b,GAC/G,OAAO,EAAUj6C,UAAM,OAAQ,GAAQ,WACnC,IAAIw5D,EAAuBr2C,EAC3B,OAAO,EAAYnjB,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EACDm0D,EAAwBH,EAAiBI,eAAeF,EAAclX,EAAemC,EAAcuR,EAAkB9b,GACrHt+B,EAAGtW,MAAQ,EACf,KAAK,EAED,OADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAawzD,EAAsBzC,yBAC/C,KAAK,EAED,OADAp7C,EAAGrW,OACI,CAAC,EAAck0D,GAC1B,KAAK,EAED,MADAr2C,EAAMxH,EAAGrW,OACHkR,GAAgBQ,uCAAuCmM,GACjE,KAAK,EAAG,MAAO,CAAC,WAehCk2C,EAAiBI,eAAiB,SAAUC,EAAc/d,EAAkB6I,EAAcuR,EAAkB9b,GAExG,GAAIlgC,GAAYG,QAAQw/C,GACpB,MAAM1+B,GAAyBQ,sBAEnC,OAAO,IAAIs6B,GAAU4D,EAAc/d,EAAkB6I,EAAcuR,EAAkB9b,IAElFof,EApD0B,GCFjCM,GAAwC,WACxC,SAASA,EAAuBC,EAAkBpV,GAC9CxkD,KAAK65D,aAAe7tD,EAAa8tD,aACjC95D,KAAKwkD,aAAeA,EACpBxkD,KAAK+5D,MAAQH,EAAiBG,MAC9B/5D,KAAKuT,cAAgBqmD,EAAiBrmD,cACtCvT,KAAKyzC,WAAammB,EAAiBnmB,YAAcrsC,EAAUyB,aAC3D7I,KAAKg6D,WAAaJ,EAAiBI,YAAc5yD,EAAUyB,aAC3D7I,KAAKi6D,kBAAoB/uD,EAAuBH,UAAYZ,EAAWoqB,oBAAsBqlC,EAAiBrqC,SAiJlH,OA5IAoqC,EAAuBz5D,UAAUitD,kCAAoC,WACjE,IAAIhrD,EAAU,GAAKnC,KAAK+5D,MAAQ7uD,EAAuBM,gBAAkBxL,KAAK65D,aAC1EK,EAAiB,CAACl6D,KAAKyzC,WAAYzzC,KAAKg6D,YAAYh0C,KAAK9a,EAAuBM,iBAChF2uD,EAAwBn6D,KAAKo6D,2BAC7BC,EAAmC,CAACl4D,EAASg4D,GAAuBn0C,KAAK9a,EAAuBM,iBACpG,MAAO,CAACN,EAAuBC,eAAgBkvD,EAAkCH,GAAgBl0C,KAAK9a,EAAuBK,qBAKjIouD,EAAuBz5D,UAAUmtD,+BAAiC,WAC9D,IAAIiN,EAAet6D,KAAKu6D,kBACpBC,EAAYb,EAAuBc,gBAAgBH,GACnDrwB,EAAiBqwB,EAAarwB,eAAesC,MAAM,EAAG,EAAIiuB,GAAWx0C,KAAK9a,EAAuBM,iBACjG0+B,EAASowB,EAAapwB,OAAOqC,MAAM,EAAGiuB,GAAWx0C,KAAK9a,EAAuBM,iBAC7EkvD,EAAaJ,EAAapwB,OAAO7oC,OAEjCs5D,EAAWH,EAAYE,EAAaxvD,EAAuBO,cAAgBP,EAAuBQ,eAClGwuD,EAAiB,CAACQ,EAAYC,GAAU30C,KAAK9a,EAAuBM,iBACxE,MAAO,CAACN,EAAuBC,eAAgBmvD,EAAanwB,UAAWF,EAAgBC,EAAQgwB,GAAgBl0C,KAAK9a,EAAuBK,qBAM/IouD,EAAuBz5D,UAAU06D,mBAAqB,SAAUt0D,GAC5D,IAAIg0D,EAAet6D,KAAKu6D,kBACpBD,EAAapwB,OAAO7oC,QAAU6J,EAAuBI,oBAErDgvD,EAAarwB,eAAe+T,QAC5Bsc,EAAarwB,eAAe+T,QAC5Bsc,EAAapwB,OAAO8T,SAExBsc,EAAarwB,eAAejkC,KAAKhG,KAAK+5D,MAAO/5D,KAAKuT,eAC7CwG,GAAYG,QAAQ5T,EAAM8M,UAGrB2G,GAAYG,QAAQ5T,EAAM2M,WAGzB3M,GAASA,EAAMiI,WACtB+rD,EAAapwB,OAAOlkC,KAAKM,EAAMiI,YAG/B+rD,EAAapwB,OAAOlkC,KAAKkF,EAAuBS,eANhD2uD,EAAapwB,OAAOlkC,KAAKM,EAAM2M,WAH/BqnD,EAAapwB,OAAOlkC,KAAKM,EAAM8M,UAWnCpT,KAAKwkD,aAAapd,mBAAmBpnC,KAAKi6D,kBAAmBK,IAMjEX,EAAuBz5D,UAAU26D,mBAAqB,WAClD,IAAIP,EAAet6D,KAAKu6D,kBAGxB,OAFAD,EAAanwB,WAAa,EAC1BnqC,KAAKwkD,aAAapd,mBAAmBpnC,KAAKi6D,kBAAmBK,GACtDA,EAAanwB,WAKxBwvB,EAAuBz5D,UAAUq6D,gBAAkB,WAC/C,IAAIO,EAAe,IAAI9wB,GACnBswB,EAAet6D,KAAKwkD,aAAand,mBAAmBrnC,KAAKi6D,mBAC7D,OAAOK,GAAgBQ,GAK3BnB,EAAuBz5D,UAAUqmD,oBAAsB,WACnD,IAAI+T,EAAet6D,KAAKu6D,kBACpBQ,EAAmBpB,EAAuBc,gBAAgBH,GAC1DI,EAAaJ,EAAapwB,OAAO7oC,OACrC,GAAI05D,IAAqBL,EAErB16D,KAAKwkD,aAAa98B,WAAW1nB,KAAKi6D,uBAEjC,CAED,IAAIe,EAAoB,IAAIhxB,GAC5BgxB,EAAkB/wB,eAAiBqwB,EAAarwB,eAAesC,MAAyB,EAAnBwuB,GACrEC,EAAkB9wB,OAASowB,EAAapwB,OAAOqC,MAAMwuB,GACrD/6D,KAAKwkD,aAAapd,mBAAmBpnC,KAAKi6D,kBAAmBe,KAOrErB,EAAuBc,gBAAkB,SAAUQ,GAC/C,IAAI/5D,EACAs5D,EAAY,EACZU,EAAW,EACXR,EAAaO,EAAsB/wB,OAAO7oC,OAC9C,IAAKH,EAAI,EAAGA,EAAIw5D,EAAYx5D,IAAK,CAE7B,IAAI64D,EAAQkB,EAAsBhxB,eAAe,EAAI/oC,IAAMkG,EAAUyB,aACjE0K,EAAgB0nD,EAAsBhxB,eAAe,EAAI/oC,EAAI,IAAMkG,EAAUyB,aAC7EoK,EAAYgoD,EAAsB/wB,OAAOhpC,IAAMkG,EAAUyB,aAG7D,GADAqyD,GAAYnB,EAAMxrD,WAAWlN,OAASkS,EAAchF,WAAWlN,OAAS4R,EAAU5R,OAAS,IACvF65D,EAAWhwD,EAAuBG,uBAKlC,MAHAmvD,GAAa,EAMrB,OAAOA,GAOXb,EAAuBz5D,UAAUk6D,yBAA2B,WACxD,IAAID,EAAwB,GAI5B,OAHAA,EAAsBn0D,KAAKhG,KAAKm7D,YAAc/zD,EAAUyB,cACxDsxD,EAAsBn0D,KAAKhG,KAAKo7D,cAAgBh0D,EAAUyB,cAC1DsxD,EAAsBn0D,KAAKhG,KAAKq7D,eAAiBj0D,EAAUyB,cACpDsxD,EAAsBn0C,KAAK,MAQtC2zC,EAAuBz5D,UAAUo7D,8BAAgC,SAAUvG,GACvE/0D,KAAKm7D,WAAapG,EAAwBmB,YAC1Cl2D,KAAKo7D,aAAerG,EAAwBQ,cAC5Cv1D,KAAKq7D,cAAgBtG,EAAwBoB,gBAKjDwD,EAAuBz5D,UAAUq7D,gBAAkB,SAAU1B,GACzD75D,KAAK65D,aAAeA,GAEjBF,EAzJgC,GCEvC6B,GAAuC,WACvC,SAASA,EAAsBxV,EAAQyV,EAAa3xC,EAAe5nB,EAAQw5D,EAAcpZ,EAAkBz4B,EAAmB8xC,EAAsBpoD,GAChJvT,KAAKgmD,OAASA,EACdhmD,KAAKqxC,eAAiBoqB,EACtBz7D,KAAK8pB,cAAgBA,EACrB9pB,KAAKqiD,cAAgBriD,KAAKgmD,OAAOzE,OAAOc,cACxCriD,KAAK07D,aAAeA,EACpB17D,KAAKsiD,iBAAmBA,EACxBtiD,KAAK27D,qBAAuBA,EAC5B37D,KAAKuT,cAAgBA,GAAiBvT,KAAK8pB,cAAcO,gBACzDrqB,KAAKkC,OAASA,EAAOisB,MAAMlhB,GAAiBM,SAAU,GAASvN,KAAKuT,eACpEvT,KAAK6pB,kBAAoBA,EAsJ7B,OApJA2xC,EAAsBt7D,UAAU07D,mBAAqB,SAAUrlC,GAC3D,OAAOvyB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EACD,IAAKkxB,EAAS,MAAO,CAAC,EAAa,GAC/BpC,GAAcqD,mBAAmBjB,EAASv2B,KAAKqxC,eAAe0C,oBAAoB,KAClF/zC,KAAKkC,OAAOmnB,QAAQ,kCACpBrpB,KAAKqxC,eAAegD,iBAAiB,OAEzC14B,EAAGtW,MAAQ,EACf,KAAK,EAED,OADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAahG,KAAKqxC,eAAehN,cAAclQ,GAAcO,wBAAwB6B,KACjG,KAAK,EAGD,OAFA5a,EAAGrW,OACHtF,KAAKkC,OAAOmnB,QAAQ,gFACb,CAAC,EAAa,GACzB,KAAK,EAGD,OAFA1N,EAAGrW,OACHtF,KAAKkC,OAAOoE,MAAM,4EACX,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,EAAa,GAC7B,KAAK,EAID,OAHAqV,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACtBhG,KAAKkC,OAAOmnB,QAAQ,mEAAoErpB,KAAKuT,eAEtF,CAAC,EAAavT,KAAKqxC,eAAevoB,SAC7C,KAAK,EAID,OAFAnN,EAAGrW,OAEI,CAAC,EAAatF,KAAK8pB,cAAcqC,iBAC5C,KAAK,EAGD,OADAxQ,EAAGrW,OACI,CAAC,EAAa,GACzB,KAAK,EAGD,OAFAqW,EAAGrW,OACHtF,KAAKkC,OAAOoE,MAAM,8EACX,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,WAShCk1D,EAAsBt7D,UAAU27D,sBAAwB,SAAU15D,GAC9D,OAAO6B,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIwvB,EAAW3hB,EAAQiuD,EAAkBngD,EACzC,OAAO5W,EAAY/E,MAAM,SAAUirB,GAC/B,OAAQA,EAAG5lB,OACP,KAAK,EAOD,GANArF,KAAKkC,OAAOmnB,QAAQ,gCACpBmG,EAAYrtB,EAAQqtB,WAAaxvB,KAAKgmD,OAAO5E,KAAK5xB,UAClD3hB,EAAStH,EAAWpE,GAAWA,EAAQ0L,QAAW,IAClDiuD,EAAmBh7D,EAASA,EAAS,GAAIqB,GAAU,CAAEoR,cAAevT,KAAKuT,cAAeic,UAAWA,EAC/F3hB,OAAQA,IAEPiuD,EAAiBl2B,qBAIjB,CACD,GAAIk2B,EAAiBl2B,uBAAyB36B,EAAqBk4B,IAAK,CACpE,IAAKhhC,EAAQ6xD,OACT,MAAMh5B,GAAyBuB,2BAEnC,IAAKp6B,EAAQ2jC,OACT,MAAM9K,GAAyBwB,2BAGvCx8B,KAAKkC,OAAOmnB,QAAQ,iCAAoCyyC,EAAiBl2B,qBAAuB,wCAZhGk2B,EAAiBl2B,qBAAuB36B,EAAqBsuB,OAC7Dv5B,KAAKkC,OAAOmnB,QAAQ,2FAaxB,OAAMlnB,EAAQu0B,QAAW3c,GAAYG,QAAQ/X,EAAQu0B,QAAiB,CAAC,EAAa,IACpF/a,EAAKmgD,EACE,CAAC,EAAa97D,KAAK8pB,cAAc0B,WAAWrpB,EAAQu0B,UAC/D,KAAK,EACD/a,EAAGid,oBAAsB3N,EAAG3lB,OAC5B2lB,EAAG5lB,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAcy2D,WAY9CN,EAAsBt7D,UAAU67D,eAAiB,SAAUC,GACvDh8D,KAAKkC,OAAOmnB,QAAQ,yBACpB,IAAIw4B,EAAcma,GAAsBh8D,KAAKgmD,OAAO5E,KAAKS,aAAe3D,GAAac,gBACrF,OAAOhR,GAAU+B,eAAe8R,EAAa3D,GAAac,kBAQ9Dwc,EAAsBt7D,UAAU+7D,iCAAmC,SAAUlC,EAAOmC,GAChFl8D,KAAKkC,OAAOmnB,QAAQ,2CACpB,IAAI8yC,EAAmB,CACnB5sC,SAAUvvB,KAAKgmD,OAAO5E,KAAK7xB,SAC3Bhc,cAAevT,KAAKuT,cACpBwmD,MAAOA,EACPmC,aAAcA,IAAgB,EAC9BzoB,WAAYzzC,KAAKqxC,eAAewC,qBAAqB,GACrDmmB,WAAYh6D,KAAKqxC,eAAewC,qBAAqB,IAEzD,OAAO,IAAI8lB,GAAuBwC,EAAkBn8D,KAAKqxC,iBAO7DmqB,EAAsBt7D,UAAUk8D,uBAAyB,SAAUC,GAC/D,OAAOr4D,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI+1D,EACJ,OAAOhxD,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAQD,OAPArF,KAAKkC,OAAOmnB,QAAQ,iCACpB0sC,EAAmB,CACf/T,aAAchiD,KAAKgmD,OAAO5E,KAAKY,aAC/BN,iBAAkB1hD,KAAKgmD,OAAO5E,KAAKM,iBACnCC,uBAAwB3hD,KAAKgmD,OAAO5E,KAAKO,uBACzCC,kBAAmB5hD,KAAKgmD,OAAO5E,KAAKQ,mBAEnCya,GACLr8D,KAAKkC,OAAOmnB,QAAQ,wDACb,CAAC,EAAagwC,GAAiBC,yBAAyB+C,EAAkBr8D,KAAKgmD,OAAOzE,OAAOc,cAAeriD,KAAKqxC,eAAgB0kB,KAF1G,CAAC,EAAa,GAGhD,KAAK,EAAG,MAAO,CAAC,EAAcp6C,EAAGrW,QACjC,KAAK,EAED,OADAtF,KAAKkC,OAAOmnB,QAAQ,2DACb,CAAC,EAAagwC,GAAiBC,yBAAyBt5D,KAAKgmD,OAAO5E,KAAK5xB,UAAWxvB,KAAKgmD,OAAOzE,OAAOc,cAAeriD,KAAKqxC,eAAgB0kB,IACtJ,KAAK,EAAG,MAAO,CAAC,EAAcp6C,EAAGrW,gBAK1Ck2D,EAjK+B,GCMtCc,GAA2C,SAAUj8D,GAErD,SAASi8D,IACL,OAAkB,OAAXj8D,GAAmBA,EAAO0D,MAAM/D,KAAMoB,YAAcpB,KA0Q/D,OA5QAX,EAAUi9D,EAA2Bj8D,GAQrCi8D,EAA0Bp8D,UAAUq8D,mCAAqC,SAAUp6D,GAC/E,OAAO6B,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIw8D,EAAqB/jB,EACzB,OAAO1zC,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,OADArF,KAAKkC,OAAOmnB,QAAQ,wCAAyClnB,EAAQoR,eAC9D,CAAC,EAAavT,KAAK8pB,cAAcS,qBAC5C,KAAK,EAKD,OAJAiyC,EAAsB7gD,EAAGrW,OACzBmzC,EAAkB33C,EAASA,EAAS,GAAIqB,GAAU,CAAE0/C,YAAa1/C,EAAQ0/C,YAAa/uC,KAAM1L,EAAUyB,aAAc6Z,aAAc85C,EAAoB15C,WACtJ3gB,EAAQwgB,cAAgB65C,EAAoBz5C,UAC5C5gB,EAAQ+kD,oBAAsB9/C,EAAUqB,2BACjC,CAAC,EAAcgwC,WAS1C6jB,EAA0Bp8D,UAAUu8D,wBAA0B,SAAUrJ,GACpEpzD,KAAKkC,OAAOmnB,QAAQ,iCAAoD,OAAlB+pC,QAA4C,IAAlBA,OAA2B,EAASA,EAAc7/C,eAClI,IAAImpD,EAAqB57D,EAAS,CAAEyS,cAAevT,KAAKuT,eAAiBvT,KAAK8pB,cAAcO,iBAAmB+oC,GAK/G,GAAIA,EAEA,GAAKA,EAAc3F,WAafztD,KAAKkC,OAAOmnB,QAAQ,yDAZpB,GAAI+pC,EAAc78B,QAAS,CACvB,IAAIk3B,EAAaztD,KAAK28D,+BAA+BvJ,EAAc78B,SAC/Dk3B,IACAztD,KAAKkC,OAAOmnB,QAAQ,kFACpBqzC,EAAmBjP,WAAaA,QAIpCztD,KAAKkC,OAAOmnB,QAAQ,0GAQ5BrpB,KAAKkC,OAAOmnB,QAAQ,qEA0BxB,OApBK+pC,GAAyD,OAAxCA,EAActR,sBAkBhC9hD,KAAKkC,OAAOmnB,QAAQ,6EAA8EqzC,EAAmBnpD,eAjBjH6/C,GAAiBA,EAActR,uBAC/B9hD,KAAKkC,OAAOmnB,QAAQ,6DAA8DqzC,EAAmBnpD,eACrGmpD,EAAmB5a,sBAAwB9T,GAAU+B,eAAeqjB,EAActR,sBAAuB5D,GAAac,kBAEtE,OAA3Ch/C,KAAKgmD,OAAO5E,KAAKU,sBACtB9hD,KAAKkC,OAAOmnB,QAAQ,uGAAwGqzC,EAAmBnpD,eAE1IvT,KAAKgmD,OAAO5E,KAAKU,uBACtB9hD,KAAKkC,OAAOmnB,QAAQ,kDAAmDqzC,EAAmBnpD,eAC1FmpD,EAAmB5a,sBAAwB9T,GAAU+B,eAAe/vC,KAAKgmD,OAAO5E,KAAKU,sBAAuB5D,GAAac,mBAGzHh/C,KAAKkC,OAAOmnB,QAAQ,gDAAiDqzC,EAAmBnpD,eACxFmpD,EAAmB5a,sBAAwB9T,GAAU+B,eAAemO,GAAac,gBAAiBd,GAAac,kBAMhH0d,GAOXJ,EAA0Bp8D,UAAUy8D,+BAAiC,SAAUpmC,GAC3E,IAAId,EAAgBc,EAAQd,cAC5B,GAAIA,EAAe,CACf,GAAIA,EAAcmnC,WACd,OAAOnnC,EAAcmnC,WAGrB58D,KAAKkC,OAAOmnB,QAAQ,2IAIxBrpB,KAAKkC,OAAOmnB,QAAQ,yGAExB,OAAO,MAOXizC,EAA0Bp8D,UAAU28D,qBAAuB,SAAU5gB,EAAwByd,EAAcoD,GACvG,OAAO94D,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI+8D,EACJ,OAAOh4D,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAAG,MAAO,CAAC,EAAarF,KAAKg9D,uBAAuB/gB,EAAwByd,EAAcoD,IAC/F,KAAK,EAED,OADAC,EAAephD,EAAGrW,OACX,CAAC,EAAc,IAAIktD,GAAwBuK,YAWtET,EAA0Bp8D,UAAU88D,uBAAyB,SAAU/gB,EAAwBogB,EAAkBS,GAC7G,OAAO94D,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIi9D,EACJ,OAAOl4D,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,OADArF,KAAKkC,OAAOmnB,QAAQ,gCAAiCrpB,KAAKuT,eACnD,CAAC,EAAavT,KAAKo8D,uBAAuBC,EAAkBS,IACvE,KAAK,EAED,OADAG,EAAsBthD,EAAGrW,OAClB,CAAC,EAAc,CACd81C,YAAa,CACT7rB,SAAUvvB,KAAKgmD,OAAO5E,KAAK7xB,SAC3BC,UAAWytC,EACX5gB,mBAAoBr8C,KAAKgmD,OAAO5E,KAAK/E,oBAEzCf,cAAe,CACXvB,0BAA2B/5C,KAAKgmD,OAAOzE,OAAOxH,0BAC9CC,sBAAsB,GAE1BvsB,cAAe,CACXO,eAAgBhuB,KAAKgmD,OAAOzE,OAAO9zB,cAAcO,eACjDC,kBAAmBjuB,KAAKgmD,OAAOzE,OAAO9zB,cAAcQ,kBACpDC,SAAUluB,KAAKgmD,OAAOzE,OAAO9zB,cAAcS,SAC3C3a,cAAevT,KAAKuT,eAExBsoC,gBAAiB77C,KAAK8pB,cACtB6xB,iBAAkB37C,KAAKqiD,cACvB5G,iBAAkBz7C,KAAKqxC,eACvB4K,uBAAwBA,EACxBF,YAAa,CACTjI,IAAK7mC,GAAiBM,SACtBgZ,QAAS,GACTg0B,IAAKnzC,EAAUyB,aACf2xC,GAAIpzC,EAAUyB,cAElBmzC,UAAWh8C,KAAKgmD,OAAOhK,oBAUnDsgB,EAA0Bp8D,UAAUg9D,gCAAkC,SAAUhK,EAAc7a,EAAiB8kB,GAE3G,GADAn9D,KAAKkC,OAAOmnB,QAAQ,yCAA0C8zC,IACzDjK,EAAa7mB,MACd,MAAMjtB,GAAiBO,qCAE3B,IAAIy9C,EAAmBzsB,GAAqBC,2BAA2B5wC,KAAK8pB,cAAeopC,EAAa7mB,OACxG,IAAK+wB,EACD,MAAMh+C,GAAiBS,gCAE3B,GAAIu9C,EAAiB/kB,kBAAoBA,EACrC,MAAMj5B,GAAiBU,0CAG3B,OADA9f,KAAKkC,OAAOmnB,QAAQ,4BAA6B8zC,GAC1CjK,EAAa7mB,OAOxBiwB,EAA0Bp8D,UAAUk8D,uBAAyB,SAAUC,EAAkBS,GACrF,OAAO94D,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIq9D,EAAyBtH,EAAkBuH,EAAeC,EAC9D,OAAOx4D,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAYD,OAXArF,KAAKkC,OAAOmnB,QAAQ,gCAAiCrpB,KAAKuT,eAC1D8pD,EAA0Br9D,KAAK6pB,kBAAkBqB,iBAAiBrnB,EAAkB25D,gDAAiDx9D,KAAKuT,eAC1IwiD,EAAmB,CACf/T,aAAchiD,KAAKgmD,OAAO5E,KAAKY,aAC/BN,iBAAkB1hD,KAAKgmD,OAAO5E,KAAKM,iBACnCC,uBAAwB3hD,KAAKgmD,OAAO5E,KAAKO,uBACzCC,kBAAmB5hD,KAAKgmD,OAAO5E,KAAKQ,mBAExC0b,EAAgBjB,GAAsCr8D,KAAKgmD,OAAO5E,KAAK5xB,UACvE+tC,EAAiBzH,GAAU6C,kBAAkB2E,EAAeR,GAA4B98D,KAAKgmD,OAAO5E,KAAK9E,mBACzGt8C,KAAKkC,OAAOmnB,QAAQ,0DAA2DrpB,KAAKuT,eAC7E,CAAC,EAAa8lD,GAAiBC,yBAAyBiE,EAAgBv9D,KAAKgmD,OAAOzE,OAAOc,cAAeriD,KAAKqxC,eAAgB0kB,GAC7HjxD,MAAK,SAAUF,GAIhB,OAHAy4D,EAAwBvxC,eAAe,CACnCC,SAAS,IAENnnB,KAEN64D,OAAM,SAAUn3D,GAIjB,MAHA+2D,EAAwBvxC,eAAe,CACnCC,SAAS,IAEPzlB,MAElB,KAAK,EAAG,MAAO,CAAC,EAAcqV,EAAGrW,gBAUjDg3D,EAA0Bp8D,UAAUw9D,+BAAiC,SAAUv7D,EAASk2C,GACpF,OAAOr0C,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI6hD,EAAa8b,EAActxB,EAAOyvB,EAAkBngD,EAAI4a,EAASqnC,EACrE,OAAO74D,EAAY/E,MAAM,SAAUirB,GAC/B,OAAQA,EAAG5lB,OACP,KAAK,EAQD,OAPArF,KAAKkC,OAAOmnB,QAAQ,wCAAyCrpB,KAAKuT,eAClEsuC,EAAc7hD,KAAK+7D,eAAe55D,EAAQ0/C,aAC1C8b,EAAe,CACXtlB,gBAAiBA,GAErBhM,EAAQT,GAAcC,gBAAgB7rC,KAAK8pB,cAAgB3nB,GAAWA,EAAQkqC,OAAUjlC,EAAUyB,aAAc80D,GAChHhiD,EAAK,CAAC,IACC,CAAC,EAAa3b,KAAK67D,sBAAsB15D,IACpD,KAAK,EAeD,OAdA25D,EAAmBh7D,EAASiD,WAAM,EAAQ,CAACjD,EAASiD,WAAM,EAAQ4X,EAAGnV,OAAO,CAACykB,EAAG3lB,UAAW,CAAEu8C,YAAaA,EAAaxV,MAAOA,EAAOrU,MAAO71B,EAAQ61B,OAASh4B,KAAK8pB,cAAcO,gBAAiBu9B,aAAc59C,EAAa6zD,YAC5NtnC,EAAUp0B,EAAQo0B,SAAWv2B,KAAKqxC,eAAe0C,mBAC7Cxd,IACAv2B,KAAKkC,OAAOmnB,QAAQ,oCAAqCrpB,KAAKuT,eAC9DvT,KAAKkC,OAAO+sB,WAAW,sCAAwCsH,EAAQ1C,cAAe7zB,KAAKuT,eAC3FuoD,EAAiBvlC,QAAUA,GAG3Bxc,GAAYG,QAAQ4hD,EAAiBtnB,aAAeje,IACpDqnC,EAAkB59D,KAAKqxC,eAAegI,qBAClCukB,IACA9B,EAAiBtnB,UAAYopB,IAG9B,CAAC,EAAc9B,WAKnCQ,EA7QmC,CA8Q5Cd,ICtREsC,GAA4B,WAC5B,SAASA,EAAWrC,EAAav5D,GAC7BlC,KAAKqxC,eAAiBoqB,EACtBz7D,KAAKkC,OAASA,EAEdlC,KAAK+9D,aAAe/9D,KAAK+9D,aAAa1a,KAAKrjD,MAqK/C,OAtJA89D,EAAW59D,UAAU89D,UAAY,SAAUC,EAAaC,GACpD,IACI,IAAIC,OAAc,EAalB,GAXID,EAAYE,OACZD,EAAcD,EAAYE,MAC1Bp+D,KAAKkC,OAAO+sB,WAAW,+BAAiCgvC,GACxDE,EAAY9f,SAASt9C,OAAOk9D,IAEM,qBAAtBC,EAAYE,QAExBp+D,KAAKkC,OAAO+sB,WAAW,4BAA8BgvC,GACrDE,EAAcL,EAAWO,eAAeJ,EAAaC,EAAYI,UAAWJ,EAAYK,sBAAuBv+D,KAAKkC,UAGnHi8D,EACD,MAAM/+C,GAAiBa,gCAO3B,OALIk+C,EAAYK,OACZL,EAAYK,QAEhBx+D,KAAKy+D,cAAgBN,EACrBh6C,OAAOuB,iBAAiB,eAAgB1lB,KAAK+9D,cACtCI,EAEX,MAAOz5D,GAGH,MAFA1E,KAAKkC,OAAOoE,MAAM,uBAAyB5B,EAAE0nB,SAC7CpsB,KAAKqxC,eAAe4G,0BAAyB,GACvC74B,GAAiBY,uBAAuBtb,EAAE6J,cAUxDuvD,EAAWO,eAAiB,SAAUJ,EAAaK,EAAWC,EAAuBr8D,GACjF,IAAIyZ,EAAIsP,EAAIkL,EAAIC,EAKZsoC,EAAUv6C,OAAOw6C,WAAax6C,OAAOw6C,WAAax6C,OAAOy6C,QACzDC,EAAS16C,OAAO26C,UAAY36C,OAAO26C,UAAY36C,OAAO46C,QAKtDC,EAAW76C,OAAO86C,YAActpB,SAASupB,gBAAgBC,aAAexpB,SAAS3wC,KAAKm6D,YACtFC,EAAYj7C,OAAOk7C,aAAe1pB,SAASupB,gBAAgBI,cAAgB3pB,SAAS3wC,KAAKs6D,aACzFC,EAAmD,QAA1C5jD,EAAK4iD,EAAsBiB,iBAA8B,IAAP7jD,OAAgB,EAASA,EAAG4jD,MACvFE,EAAoD,QAA1Cx0C,EAAKszC,EAAsBiB,iBAA8B,IAAPv0C,OAAgB,EAASA,EAAGw0C,OACxFC,EAAqD,QAA9CvpC,EAAKooC,EAAsBoB,qBAAkC,IAAPxpC,OAAgB,EAASA,EAAGupC,IACzFE,EAAsD,QAA9CxpC,EAAKmoC,EAAsBoB,qBAAkC,IAAPvpC,OAAgB,EAASA,EAAGwpC,KAiB9F,QAhBKL,GAASA,EAAQ,GAAKA,EAAQP,KAC/B98D,EAAOmnB,QAAQ,4EACfk2C,EAAQtyD,GAAiBE,eAExBsyD,GAAUA,EAAS,GAAKA,EAASL,KAClCl9D,EAAOmnB,QAAQ,8EACfo2C,EAASxyD,GAAiBG,gBAEzBsyD,GAAOA,EAAM,GAAKA,EAAMN,KACzBl9D,EAAOmnB,QAAQ,iFACfq2C,EAAMzwD,KAAK4wD,IAAI,EAAKT,EAAY,EAAMnyD,GAAiBG,aAAe,EAAMyxD,MAE3Ee,GAAQA,EAAO,GAAKA,EAAOZ,KAC5B98D,EAAOmnB,QAAQ,mFACfu2C,EAAO3wD,KAAK4wD,IAAI,EAAKb,EAAW,EAAM/xD,GAAiBE,YAAc,EAAMuxD,IAExEv6C,OAAO1hB,KAAKw7D,EAAaK,EAAW,SAAWiB,EAAQ,YAAcE,EAAS,SAAWC,EAAM,UAAYE,EAAO,qBAK7H9B,EAAW59D,UAAU69D,aAAe,SAAUr5D,GAC1C1E,KAAKqxC,eAAe+G,8BAA8BrrC,GAAgB+yD,OAC9D9/D,KAAKy+D,eACLz+D,KAAKy+D,cAAcz3C,QAGvBtiB,EAAEq7D,kBAMNjC,EAAW59D,UAAU8/D,WAAa,SAAU7B,GACpCA,GAEAA,EAAYn3C,QAGhB7C,OAAOu/B,oBAAoB,eAAgB1jD,KAAK+9D,cAEhD/9D,KAAKqxC,eAAe4G,0BAAyB,IAMjD6lB,EAAW59D,UAAU+/D,0BAA4B,SAAU9B,GACvD,IAAI19D,EAAQT,KACZ,OAAO,IAAIoC,SAAQ,SAAUC,EAASC,GAClC,IAAI49D,EAAaC,aAAY,WACzB,GAAIhC,EAAYiC,OAKZ,OAHA3/D,EAAMu/D,aACNK,cAAcH,QACd59D,EAAO8c,GAAiBc,4BAG5B,IAAI++B,EAAO73C,EAAUyB,aACrB,IAMIo2C,EAAOkf,EAAY9f,SAASY,KAEhC,MAAOv6C,IAEHqV,GAAYG,QAAQ+kC,IAAkB,gBAATA,IAGjCohB,cAAcH,GACd79D,OACD4K,GAAiBK,sBAQ5BwwD,EAAWwC,kBAAoB,SAAU/wC,EAAU1hB,EAAQ2hB,EAAWjc,GAClE,OAAOtG,GAAiBI,kBAAoB,IAAMkiB,EAAW,IAAM1hB,EAAOmY,KAAK,KAAO,IAAMwJ,EAAY,IAAMjc,GAOlHuqD,EAAWyC,wBAA0B,SAAUhxC,EAAUptB,GACrD,IAAI0xB,EAAgB1xB,EAAQo0B,SAAWp0B,EAAQo0B,QAAQ1C,cACvD,OAAO5mB,GAAiBI,kBAAoB,IAAMkiB,EAAW,IAAMsE,EAAgB,IAAM1xB,EAAQoR,eAE9FuqD,EA1KoB,GCI3B0C,GAAoC,WACpC,SAASA,EAAmBC,EAAgBhF,EAAahjB,EAAiBioB,GACtE1gE,KAAK2gE,WAAaF,EAClBzgE,KAAKqxC,eAAiBoqB,EACtBz7D,KAAKy4C,gBAAkBA,EACvBz4C,KAAK0gE,qBAAuBA,EAkIhC,OA5HAF,EAAmBtgE,UAAU0gE,2BAA6B,SAAU7vB,EAAc1E,EAAO7c,EAAWqxC,GAChG,OAAO78D,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIm4C,EAAU+Z,EAAc4O,EAC5B,OAAO/7D,EAAY/E,MAAM,SAAU2b,GAG/B,GAFA3b,KAAK0gE,qBAAqBr3C,QAAQ,gDAE9BtP,GAAYG,QAAQ62B,GACpB,MAAM3xB,GAAiBK,qBAAqBsxB,GAIhD,GAFAoH,EAAWn4C,KAAKqxC,eAAeyF,iBAAiBzK,GAChD6lB,EAAelyD,KAAKqxC,eAAeyD,kBAAkBqD,IAChD+Z,EACD,MAAM17C,GAAgBmB,yBAAyB,gBAEnD,IACImpD,EAAmB9gE,KAAK2gE,WAAW3N,uBAAuBjiB,EAAcmhB,GAE5E,MAAOxtD,GACH,MAAIA,aAAamuB,IAAenuB,EAAE0O,WAAaoJ,GAAwBa,mBAAmBvK,KAEhFsM,GAAiBc,2BAGjBxb,EAGd,MAAO,CAAC,EAAc1E,KAAK+gE,6BAA6BD,EAAkBz0B,EAAO7c,EAAWqxC,WAYxGL,EAAmBtgE,UAAU6gE,6BAA+B,SAAUD,EAAkBz0B,EAAO7c,EAAWqxC,EAAeG,GAErH,YADsB,IAAlBA,IAA4BA,GAAgB,GACzCh9D,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIm4C,EAAU+Z,EAAc+O,EAAUC,EAAaC,EAAeC,EAClE,OAAOr8D,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAID,GAHArF,KAAK0gE,qBAAqBxxC,MAAM,0DAChCipB,EAAWn4C,KAAKqxC,eAAeyF,iBAAiBzK,GAChD6lB,EAAelyD,KAAKqxC,eAAeyD,kBAAkBqD,IAChD+Z,EACD,MAAM17C,GAAgBmB,yBAAyB,gBAMnD,OAJAspD,EAAWjhE,KAAKqxC,eAAeuF,iBAAiBsb,GAChDgP,EAAclhE,KAAKqxC,eAAeyD,kBAAkBmsB,GAEpDjhE,KAAKy4C,gBAAgB3lC,KAAOguD,EAAiBhuD,KACxCguD,EAAiBO,yBACf,CAAC,EAAarhE,KAAKshE,6BAA6BR,EAAiBO,yBAA0B7xC,EAAWqxC,IADtD,CAAC,EAAa,GAEzE,KAAK,EACDllD,EAAGrW,OACHqW,EAAGtW,MAAQ,EACf,KAAK,EAgBD,OAdI27D,IACAF,EAAiB9oC,MAAQkpC,QAAeh7B,GAE5C46B,EAAiBz0B,MAAQ6lB,EAErB4O,EAAiBnR,YACjB3vD,KAAKy4C,gBAAgB3iB,WAAagrC,EAAiBnR,aAGnDwR,EAAgBnhE,KAAKuhE,sBACjBJ,IACAnhE,KAAKy4C,gBAAgBlB,cAAgB4pB,IAGtC,CAAC,EAAanhE,KAAK2gE,WAAW9N,aAAa7yD,KAAKy4C,gBAAiBqoB,IAC5E,KAAK,EAGD,OAFAM,EAAgBzlD,EAAGrW,OACnBtF,KAAKqxC,eAAe6G,oBAAoB7L,GACjC,CAAC,EAAc+0B,WAW1CZ,EAAmBtgE,UAAUohE,6BAA+B,SAAUE,EAAuBhyC,EAAWqxC,GACpG,OAAO78D,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIyhE,EAA2BC,EAC/B,OAAO38D,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,OADAo8D,EAA4B,WAAaD,EAAwB,IAAMhyC,EAAUurB,OAAS,IACnF,CAAC,EAAase,GAAiBC,yBAAyBmI,EAA2BZ,EAAe7gE,KAAKqxC,eAAgB7hB,EAAU5tB,UAC5I,KAAK,EAGD,OAFA8/D,EAAyB/lD,EAAGrW,OAC5BtF,KAAK2gE,WAAWna,gBAAgBkb,GACzB,CAAC,WAQ5BlB,EAAmBtgE,UAAUqhE,oBAAsB,WAE/C,IAAIJ,EAAgBnhE,KAAKqxC,eAAeyD,kBAAkBloC,EAAmB6qC,gBAAgB,GAC7F,GAAI0pB,EACA,IACI,OAAO7mD,KAAKS,MAAMomD,GAEtB,MAAOz8D,GACH1E,KAAK2gE,WAAWz+D,OAAOoE,MAAM,wCAC7BtG,KAAK2gE,WAAWz+D,OAAOysB,SAAS,yCAA2CwyC,GAGnF,OAAO,MAEJX,EAvI4B,GCGnCmB,GAA8B,SAAUthE,GAExC,SAASshE,EAAalB,EAAgBhF,EAAahjB,EAAiBioB,GAChE,IAAIjgE,EAAQJ,EAAOM,KAAKX,KAAMygE,EAAgBhF,EAAahjB,EAAiBioB,IAAyB1gE,KAGrG,OADAS,EAAMmhE,WAAa,IAAI9D,GAAWrC,EAAaiF,GACxCjgE,EAyCX,OA9CApB,EAAUsiE,EAActhE,GAWxBshE,EAAazhE,UAAU2hE,oBAAsB,SAAUC,EAAYvmD,GAE/D,GAAKxB,GAAYG,QAAQ4nD,GAQrB,MADA9hE,KAAK0gE,qBAAqBp6D,MAAM,yBAC1B8Y,GAAiBI,gCALvB,OAFAxf,KAAK0gE,qBAAqB3xC,QAAQ,gBAAkB+yC,GAE7C9hE,KAAK4hE,WAAW5D,UAAU8D,EAAYvmD,IAarDomD,EAAazhE,UAAU6hE,oBAAsB,SAAU5D,GACnD,IAAI19D,EAAQT,KACZ,OAAOA,KAAK4hE,WAAW3B,0BAA0B9B,GAAar5D,MAAK,WAC/D,IAAIk9D,EAAc7D,EAAY9f,SAASz6B,KAGvC,GAFAs6B,GAAaC,UAAUggB,GACvB19D,EAAMmhE,WAAW5B,WAAW7B,IACvB6D,EACD,MAAM5iD,GAAiBK,qBAAqB0+C,EAAY9f,SAASY,MAErE,GAAIjR,GAAUwC,4BAA4BwxB,GACtC,OAAOA,EAGP,MAAM5iD,GAAiBQ,mDAI5B+hD,EA/CsB,CAgD/BnB,KRtDF,SAAW7L,GACPA,EAAiB,6BAA+B,4BAChDA,EAAiB,eAAiB,cAClCA,EAAiB,cAAgB,aACjCA,EAAiB,mBAAqB,kBACtCA,EAAiB,oBAAsB,oBAL3C,CAMGA,KAAqBA,GAAmB,KAC3C,IAAIsN,GAAyB,CACzBC,eAAgB,CACZpvD,KAAM,gBAEVqvD,WAAY,CACRrvD,KAAM,cACNC,KAAM,uKAGVqvD,GAAiC,SAAU/hE,GAE3C,SAAS+hE,EAAgBnvD,EAAWovD,EAAaC,GAC7C,IAAI7hE,EAAQJ,EAAOM,KAAKX,KAAMiT,EAAWovD,IAAgBriE,KAIzD,OAHAT,OAAOC,eAAeiB,EAAO2hE,EAAgBliE,WAC7CO,EAAM4S,KAAO,kBACb5S,EAAM6hE,IAAMA,EACL7hE,EA2CX,OAjDApB,EAAU+iE,EAAiB/hE,GAW3B+hE,EAAgBliE,UAAUqiE,QAAU,WAChC,GAAIviE,KAAKsiE,KAAOtiE,KAAKsiE,IAAIh/D,QAAUtD,KAAKsiE,IAAIh/D,SAAWqxD,GAAiB6N,iBACpE,OAAO,EAEX,OAAQxiE,KAAKiT,WACT,KAAKgvD,GAAuBC,eAAepvD,KACvC,OAAO,EACX,QACI,OAAO,IAUnBsvD,EAAgBK,YAAc,SAAU3vD,EAAMuvD,EAAaC,GACvD,GAAIA,GAAOA,EAAIh/D,OACX,OAAQg/D,EAAIh/D,QACR,KAAKqxD,GAAiB+N,0BAClB,OAAO,IAAIzvC,GAA6BngB,EAAMuvD,GAClD,KAAK1N,GAAiBgO,YAClB,OAAOvjD,GAAiBc,2BAC5B,KAAKy0C,GAAiBiO,WAClB,OAAOxjD,GAAiBgC,mCAGpC,OAAO,IAAIghD,EAAgBtvD,EAAMuvD,EAAaC,IAMlDF,EAAgBS,sBAAwB,WACpC,OAAO,IAAIT,EAAgBH,GAAuBE,WAAWrvD,KAAMmvD,GAAuBE,WAAWpvD,OAElGqvD,EAlDyB,CAmDlCpvD,ISjEE8vD,GAAyC,SAAUziE,GAEnD,SAASyiE,EAAwB9c,EAAQ3U,EAAgBvnB,EAAe5nB,EAAQw5D,EAAcpZ,EAAkByX,EAAOlwC,EAAmBk5C,EAAU1uC,EAAW9gB,GAC3J,IAAI9S,EAAQJ,EAAOM,KAAKX,KAAMgmD,EAAQ3U,EAAgBvnB,EAAe5nB,EAAQw5D,EAAcpZ,EAAkBz4B,EAAmBk5C,EAAUxvD,IAAkBvT,KAI5J,OAHAS,EAAMs5D,MAAQA,EACdt5D,EAAM4zB,UAAYA,EAClB5zB,EAAMk7D,qBAAuBoH,EACtBtiE,EAqTX,OA3TApB,EAAUyjE,EAAyBziE,GAYnCyiE,EAAwB5iE,UAAU2yD,aAAe,SAAU1wD,GACvD,OAAO6B,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIgjE,EAAqBC,EAAeC,EAAa/S,EAAc5sD,EAAU4/D,EAC7E,OAAOp+D,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAGD,OAFArF,KAAKkC,OAAOgtB,MAAM,kDAClB8zC,EAAsBhjE,KAAK6pB,kBAAkBqB,iBAAiBrnB,EAAkBu/D,oCAAqCjhE,EAAQoR,eACtH,CAAC,EAAavT,KAAKqjE,wBAAwBlhE,IACtD,KAAK,EAOD,OANA8gE,EAAgBtnD,EAAGrW,OACnB49D,EAAc,CACVphE,OAAQ2K,EAAsB62D,SAC9BnhE,QAAS8gE,GAEb9S,EAAetoB,GAAUC,aAClB,CAAC,EAAa9nC,KAAK27D,qBAAqB4H,YAAYL,IAC/D,KAAK,EAGD,OAFA3/D,EAAWoY,EAAGrW,OACd69D,EAAoBnjE,KAAKwjE,uBAAuBjgE,GACzC,CAAC,EAAcvD,KAAKyjE,qBAAqBN,EAAmBF,EAAe9S,GACzErrD,MAAK,SAAUF,GAKhB,OAJAo+D,EAAoBl3C,eAAe,CAC/BC,SAAS,EACT23C,gBAAgB,IAEb9+D,KAEN64D,OAAM,SAAUn3D,GAKjB,MAJA08D,EAAoBl3C,eAAe,CAC/BC,SAAS,EACT23C,gBAAgB,IAEdp9D,cAUlCw8D,EAAwB5iE,UAAUyjE,qBAAuB,SAAUxhE,GAC/D,OAAO6B,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIijE,EAAeC,EAAa3/D,EAAU4f,EAAKygD,EAAmB/hB,EAClE,OAAO98C,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,OADArF,KAAKkC,OAAOgtB,MAAM,0DACX,CAAC,EAAalvB,KAAKqjE,wBAAwBlhE,IACtD,KAAK,EACD8gE,EAAgBtnD,EAAGrW,OACnB49D,EAAc,CACVphE,OAAQ2K,EAAsB62D,SAC9BnhE,QAAS8gE,GAEbtnD,EAAGtW,MAAQ,EACf,KAAK,EAED,OADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAahG,KAAK27D,qBAAqB4H,YAAYL,IAC/D,KAAK,EAGD,OAFA3/D,EAAWoY,EAAGrW,OACdtF,KAAKwjE,uBAAuBjgE,GACrB,CAAC,EAAa,GACzB,KAAK,EAGD,GAFA4f,EAAMxH,EAAGrW,OAEL6d,aAAei/C,IAAmBj/C,EAAIo/C,UACtC,MAAMp/C,EAEV,MAAO,CAAC,EAAa,GACzB,KAAK,EAQD,OAPAnjB,KAAKqxC,eAAeoB,kBAAkB7lC,EAAmBorC,eAAgB19B,KAAKC,UAAU0oD,IAAgB,GACxGW,EAAoB,CAChB7J,MAAOjtD,GAAM62D,qBACbvgE,QAASpD,KAAKgmD,OAAOzE,OAAOoB,0BAC5B9B,WAAW,GAEfgB,EAAc7hD,KAAKgmD,OAAO5E,KAAKW,0BAA4B59B,OAAOk6B,SAASY,KAAOj/C,KAAK+7D,eAAe55D,EAAQ0/C,aACvG,CAAC,EAAa7hD,KAAKsiD,iBAAiB1B,iBAAiBiB,EAAa+hB,IAC7E,KAAK,EAED,OADAjoD,EAAGrW,OACI,CAAC,WAQ5Bw9D,EAAwB5iE,UAAU2jE,sBAAwB,WACtD,OAAO7/D,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIg5C,EAAekqB,EAAa/S,EAAc5sD,EAAUqB,EAAQ0kB,EAChE,OAAOvkB,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,GADArF,KAAKkC,OAAOgtB,MAAM,4DACblvB,KAAKqxC,eAAe4H,yBAAwB,GAE7C,OADAj5C,KAAKkC,OAAO4sB,KAAK,yFACV,CAAC,EAAc,MAG1B,GADAkqB,EAAgBh5C,KAAKqxC,eAAe0H,0BAC/BC,EAED,OADAh5C,KAAKkC,OAAOmnB,QAAQ,0GACb,CAAC,EAAc,MAE1BrpB,KAAKqxC,eAAe3pB,WAAW1nB,KAAKqxC,eAAe4C,iBAAiBrnC,EAAmBorC,iBACvFkrB,EAAc,CACVphE,OAAQ2K,EAAsB62D,SAC9BnhE,QAAS62C,GAEbmX,EAAetoB,GAAUC,aACzBnsB,EAAGtW,MAAQ,EACf,KAAK,EAGD,OAFAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACtBhG,KAAKkC,OAAOmnB,QAAQ,qFACb,CAAC,EAAarpB,KAAK27D,qBAAqB4H,YAAYL,IAC/D,KAAK,EAKD,OAJA3/D,EAAWoY,EAAGrW,OACdtF,KAAKwjE,uBAAuBjgE,GAC5BqB,EAAS5E,KAAKyjE,qBAAqBlgE,EAAUy1C,EAAemX,GAC5DnwD,KAAKqxC,eAAe4G,0BAAyB,GACtC,CAAC,EAAcrzC,GAC1B,KAAK,EAGD,MAFA0kB,EAAM3N,EAAGrW,OACTtF,KAAKqxC,eAAe4G,0BAAyB,GACvC3uB,EACV,KAAK,EAAG,MAAO,CAAC,WAShCw5C,EAAwB5iE,UAAU4jE,OAAS,WAEvC,OADA9jE,KAAKkC,OAAOgtB,MAAM,4CACX9sB,QAAQE,OAAO,+BAQ1BwgE,EAAwB5iE,UAAUujE,qBAAuB,SAAUlgE,EAAUpB,EAASguD,GAClF,OAAOnsD,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIswD,EAAY9gC,EAAWu0C,EAAyBte,EAAuBtlB,EAAe8wB,EAAgB+S,EAAmBhwC,EAAK2C,EAAKstC,EAAqBC,EAAmBvoD,EAAIw2C,EAAmBgS,EAAev/D,EACjNnE,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAUirB,GAC/B,OAAQA,EAAG5lB,OACP,KAAK,EAED,GADArF,KAAKkC,OAAOgtB,MAAM,0DACd3rB,EAASgzB,QAAQ0P,KAAO9jC,EAAQkyB,UAEhC,MAAM+tC,GAAgBS,wBAG1B,OADAvS,EAAa,IAAIlxB,GAAU77B,EAASitD,UAAYppD,EAAUyB,aAAc7I,KAAK8pB,eACtE,CAAC,EAAa9pB,KAAKo8D,uBAAuBj6D,EAAQqtB,YAC7D,KAAK,EAYD,OAXAA,EAAYvE,EAAG3lB,OACfy+D,EAA0Bv0C,EAAUiH,oBACpCgvB,EAAwBtxB,GAAcgD,sBAAsB5zB,EAASosD,aAAevoD,EAAUyB,aAAc0kB,GAAc8oC,QAASr2D,KAAKkC,OAAQlC,KAAK8pB,cAAewmC,GACpKnwB,EAAgBhM,GAAc0B,cAActyB,EAASosD,YAAalK,EAAuB6K,OAAYpqB,OAAWA,OAAWA,OAAWA,EAAW69B,EAAyBxgE,EAASgzB,QAAQ0P,IAC3LjmC,KAAKqxC,eAAe3Q,WAAWP,GAC/B8wB,EAAiB1tD,EAASsK,OAASgvB,GAASO,WAAW75B,EAASsK,QAAUgvB,GAASO,WAAWj7B,EAAQ0L,QACtGm2D,EAAoBzgE,EAASgzB,QAAQ6tC,YAAc,GACnDpwC,EAAMgwC,EAAkB,QAAU1T,EAAW55B,OAAOE,KAAO05B,EAAW55B,OAAOG,KAAOzvB,EAAUyB,aAC9F8tB,EAAMqtC,EAAkB,aAAe1T,EAAW55B,OAAOC,KAAOvvB,EAAUyB,aAC1Eq7D,EAAoBj5D,EAAqBsuB,OACzC5d,EAAKxZ,EAAQwvD,WACLh2C,GACJ,KAAK1Q,EAAqB05B,IAAK,MAAO,CAAC,EAAa,GAExD,MAAO,CAAC,EAAa,GACzB,KAAK,EAID,OAFAu/B,EAAoBj5D,EAAqB05B,IAErCphC,EAAS8gE,KACTrkE,KAAKkC,OAAOgtB,MAAM,8DAClB+0C,EAAsB1gE,EAAS8gE,IACxB,CAAC,EAAa,KAEzBlS,EAAoB,IAAIlE,GAAkBjuD,KAAK8pB,eAC/Cq6C,EAAgB,CACZx4C,sBAAuBxpB,EAAQwpB,sBAC/BE,mBAAoB1pB,EAAQ0pB,mBAC5B65B,UAAWvjD,EAAQujD,UACnBiJ,SAAUxsD,EAAQwsD,UAEf,CAAC,EAAawD,EAAkB1D,aAAalrD,EAASytD,aAAcmT,KAC/E,KAAK,EAED,OADAF,EAAsBh5C,EAAG3lB,OAClB,CAAC,EAAa,GACzB,KAAK,EAEG2+D,EAAsB1gE,EAASytD,aAEnC/lC,EAAG5lB,MAAQ,EACf,KAAK,EAqBD,OApBAT,EAAS,CACL4qB,UAAWA,EAAU4iC,mBACrBC,SAAUr+B,EACVW,SAAUgC,EACV9oB,OAAQojD,EAAenzB,UACvBvH,QAAS4J,EAAc3K,iBACvBO,QAASxyB,EAASitD,SAClB/6B,cAAe66B,EAAW55B,OAC1BkK,YAAaqjC,EACb3R,WAAW,EACXrqB,UAAW,IAAIzZ,KAAkD,IAA7C4Z,OAAO+nB,EAAe5sD,EAAS4tD,aACnDx4B,UAAWurC,EACX3wD,cAAevT,KAAKuT,cACpB84B,MAAO9oC,EAAS8oC,MAChBkmB,kBAAkB,GAGtBvyD,KAAKqxC,eAAe/M,qBAAqBnE,GAAes9B,OAAM,SAAU/4D,GACpEjE,EAAMyB,OAAOoE,MAAM,uEAAyE5B,MAEzF,CAAC,EAAcE,WAS1Ck+D,EAAwB5iE,UAAUsjE,uBAAyB,SAAUjgE,GACjE,GAAIA,EAASzD,eAAe,iBACxByD,EAASzD,eAAe,aACxByD,EAASzD,eAAe,gBACxByD,EAASzD,eAAe,YACxByD,EAASzD,eAAe,WACxByD,EAASzD,eAAe,cACxB,OAAOyD,EAGP,MAAM6+D,GAAgB5uD,sBAAsB,0CAOpDsvD,EAAwB5iE,UAAUmjE,wBAA0B,SAAUlhE,GAClE,OAAO6B,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIwvB,EAAW4iC,EAAoBvkD,EAAQ+vB,EAAU0mC,EAAexI,EAAkBqI,EAAehS,EAAmBhlC,EAAKxR,EAC7H,OAAO5W,EAAY/E,MAAM,SAAUirB,GAC/B,OAAQA,EAAG5lB,OACP,KAAK,EAQD,GAPArF,KAAKkC,OAAOgtB,MAAM,4DAClBM,EAAYrtB,EAAQqtB,WAAaxvB,KAAKgmD,OAAO5E,KAAK5xB,UAClD4iC,EAAqB,IAAIpkB,GAAUxe,GACnC4iC,EAAmB5jB,gBACnB3gC,EAAS1L,GAAWA,EAAQ0L,QAAU,GACtC+vB,EAAW,IAAIf,GAAShvB,GACxB+vB,EAASS,aAAa90B,GAClBpH,EAAQ2kD,OACR,OAAQ3kD,EAAQ2kD,QACZ,KAAKp9C,EAAYI,KACjB,KAAKJ,EAAYG,QACb7J,KAAKkC,OAAOgtB,MAAM,kEAClB,MACJ,QAEI,MADAlvB,KAAKkC,OAAOgtB,MAAM,qCAAuC/sB,EAAQ2kD,OAAS,uCACpE1nC,GAAiBiD,+CAMnC,OAHAiiD,KAAmBniE,EAAQoyD,uBAAwBpyD,EAAQoyD,qBAAqBgQ,gBAChFzI,EAAmBh7D,EAASA,EAAS,GAAIqB,GAAU,CAAEkyB,UAAWr0B,KAAKq0B,UAAW9E,SAAUvvB,KAAKgmD,OAAO5E,KAAK7xB,SAAUC,UAAW4iC,EAAmB92B,UAAWztB,OAAQ+vB,EAASuB,cAAe0iB,YAAa7hD,KAAK+7D,eAAe55D,EAAQ0/C,aAActuC,cAAevT,KAAKuT,cAAegxD,eAAgBD,EAAe3S,WAAYxvD,EAAQyjC,qBAAsB4+B,qBAAsB7uB,SAAS8uB,MAAOC,gBAAiB5jE,EAASA,EAAS,GAAIqB,EAAQoyD,sBAAuBpyD,EAAQyxD,sBAAuB+Q,qBAAqB,IAE3fxiE,EAAQyjC,uBAAyB36B,EAAqB05B,IAAa,CAAC,EAAa,IACvFw/B,EAAgB,CACZt4C,mBAAoB1pB,EAAQ0pB,mBAC5BF,sBAAuBxpB,EAAQwpB,sBAC/B+5B,UAAWvjD,EAAQujD,UACnBiJ,SAAUxsD,EAAQwsD,UAEtBwD,EAAoB,IAAIlE,GAAkBjuD,KAAK8pB,eACxC,CAAC,EAAaqoC,EAAkBjE,YAAYiW,KACvD,KAAK,EAID,OAHAh3C,EAAMlC,EAAG3lB,OAETqW,EAAKmgD,EACE,CAAC,EAAa3J,EAAkB9D,gBAAgBlhC,IAC3D,KAAK,EAEDxR,EAAGipD,QAAU35C,EAAG3lB,OAChB2lB,EAAG5lB,MAAQ,EACf,KAAK,EAID,OAHIrF,KAAK+5D,QAAUjtD,GAAM+3D,WAAa7kE,KAAK+5D,QAAUjtD,GAAMg4D,gCACvDhJ,EAAiBhV,OAASp9C,EAAYI,MAEnC,CAAC,EAAcgyD,WAKnCgH,EA5TiC,CA6T1CtH,IC9TEuJ,GAAsC,WACtC,SAASA,EAAqB7iE,EAAQ8iE,EAAoBC,GACtDjlE,KAAKkC,OAASA,EACdlC,KAAKglE,mBAAqBA,EAC1BhlE,KAAKilE,YAAcA,EACnBjlE,KAAKklE,UAAY,IAAIx8C,IACrB1oB,KAAKmlE,mBAAqB,IAAIz8C,IAC9B1oB,KAAKolE,WAAa,EAClBplE,KAAKqlE,eAAiB,IAAIC,eAC1BtlE,KAAKulE,eAAiBvlE,KAAKwlE,gBAAgBniB,KAAKrjD,MA4NpD,OAtNA+kE,EAAqB7kE,UAAUqjE,YAAc,SAAUv+D,GACnD,OAAOhB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIylE,EACAhlE,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAW/B,OAVA3b,KAAKkC,OAAOgtB,MAAM,8CAClBu2C,EAAM,CACFC,QAASl4D,GAAgBC,WACzBw3D,YAAajlE,KAAKilE,YAClBG,WAAYplE,KAAKolE,aACjBpgE,KAAMA,GAEVhF,KAAKkC,OAAOgtB,MAAM,+DAClBlvB,KAAKkC,OAAOktB,SAAS,gEAAkE9U,KAAKC,UAAUkrD,IACtGzlE,KAAKqlE,eAAeM,MAAMC,YAAYH,GAC/B,CAAC,EAAc,IAAIrjE,SAAQ,SAAUC,EAASC,GAC7C7B,EAAMykE,UAAUv8C,IAAI88C,EAAIL,WAAY,CAAE/iE,QAASA,EAASC,OAAQA,eAUpFyiE,EAAqBc,eAAiB,SAAU3jE,EAAQ8iE,GACpD,OAAOhhE,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI8lE,EAAmBC,EACvB,OAAOhhE,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EACDnD,EAAOgtB,MAAM,iDACbvT,EAAGtW,MAAQ,EACf,KAAK,EAGD,OAFAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACtB8/D,EAAoB,IAAIf,EAAqB7iE,EAAQ8iE,EAAoBx3D,GAAgBE,wBAClF,CAAC,EAAao4D,EAAkBE,wBAC3C,KAAK,EAED,OADArqD,EAAGrW,OACI,CAAC,EAAcwgE,GAC1B,KAAK,EAGD,OAFAnqD,EAAGrW,OACHygE,EAAiB,IAAIhB,EAAqB7iE,EAAQ8iE,GAC3C,CAAC,EAAae,EAAeC,wBACxC,KAAK,EAED,OADArqD,EAAGrW,OACI,CAAC,EAAcygE,GAC1B,KAAK,EAAG,MAAO,CAAC,WAQhChB,EAAqB7kE,UAAU8lE,qBAAuB,WAClD,OAAOhiE,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIylE,EACAhlE,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAgB/B,OAfA3b,KAAKkC,OAAOgtB,MAAM,uDAElB/K,OAAOuB,iBAAiB,UAAW1lB,KAAKulE,gBAAgB,GACxDE,EAAM,CACFC,QAASl4D,GAAgBC,WACzBw3D,YAAajlE,KAAKilE,YAClBG,WAAYplE,KAAKolE,aACjBpgE,KAAM,CACFlD,OAAQ2K,EAAsBw5D,mBAGtCjmE,KAAKqlE,eAAeM,MAAMO,UAAY,SAAUt/C,GAC5CnmB,EAAM0lE,iBAAiBv/C,IAE3BzC,OAAOyhD,YAAYH,EAAKthD,OAAOq6B,OAAQ,CAACx+C,KAAKqlE,eAAee,QACrD,CAAC,EAAc,IAAIhkE,SAAQ,SAAUC,EAASC,GAC7C7B,EAAM0kE,mBAAmBx8C,IAAI88C,EAAIL,WAAY,CAAE/iE,QAASA,EAASC,OAAQA,IACzE7B,EAAM4lE,UAAYliD,OAAOukB,YAAW,WAKhCvkB,OAAOu/B,oBAAoB,UAAWjjD,EAAM8kE,gBAAgB,GAC5D9kE,EAAM4kE,eAAeM,MAAM3+C,QAC3BvmB,EAAM4kE,eAAee,MAAMp/C,QAC3B1kB,EAAO8c,GAAiB6C,qCACxBxhB,EAAM0kE,mBAAmBnjE,OAAOyjE,EAAIL,cACrC3kE,EAAMukE,+BAS7BD,EAAqB7kE,UAAUslE,gBAAkB,SAAU5+C,GAGvD,GAFA5mB,KAAKkC,OAAOgtB,MAAM,iDAEdtI,EAAM0/C,SAAWniD,OAArB,CAGA,IAAIhiB,EAAUykB,EAAMxW,KACpB,GAAKjO,EAAQujE,SAAWvjE,EAAQujE,UAAYl4D,GAAgBC,cAGxDtL,EAAQ8iE,aAAe9iE,EAAQ8iE,cAAgBjlE,KAAKilE,cAGpD9iE,EAAQ6C,KAAKlD,SAAW2K,EAAsBw5D,iBAAkB,CAEhEjmE,KAAKkC,OAAOmnB,QAAQlnB,EAAQ8iE,YAAc,sBAAwB9iE,EAAQ8iE,YAAc,iBAAmB,0BAC3GsB,aAAavmE,KAAKqmE,WAClBrmE,KAAKqlE,eAAeM,MAAM3+C,QAC1BhnB,KAAKqlE,eAAee,MAAMp/C,QAC1B7C,OAAOu/B,oBAAoB,UAAW1jD,KAAKulE,gBAAgB,GAC3D,IAAIiB,EAAoBxmE,KAAKmlE,mBAAmBzjE,IAAIS,EAAQijE,YACxDoB,GACAA,EAAkBlkE,OAAO8c,GAAiB8C,6CAQtD6iD,EAAqB7kE,UAAUimE,iBAAmB,SAAUv/C,GACxD5mB,KAAKkC,OAAOgtB,MAAM,mDAClB,IAAI/sB,EAAUykB,EAAMxW,KAChBq2D,EAAWzmE,KAAKklE,UAAUxjE,IAAIS,EAAQijE,YACtCoB,EAAoBxmE,KAAKmlE,mBAAmBzjE,IAAIS,EAAQijE,YAC5D,IACI,IAAItjE,EAASK,EAAQ6C,KAAKlD,OAC1B,GAAIA,IAAW2K,EAAsBi6D,SAAU,CAC3C,IAAKD,EACD,OAEJ,IAAIljE,EAAWpB,EAAQ6C,KAAKzB,SAG5B,GAFAvD,KAAKkC,OAAOgtB,MAAM,mEAClBlvB,KAAKkC,OAAOktB,SAAS,oEAAsE9U,KAAKC,UAAUhX,IAClF,YAApBA,EAASD,OACTmjE,EAASnkE,OAAO8/D,GAAgBK,YAAYl/D,EAASuP,KAAMvP,EAAS8+D,YAAa9+D,EAAS++D,UAEzF,KAAI/+D,EAASqB,OASd,MAAMoO,GAAUQ,sBAAsB,kCARlCjQ,EAASqB,OAAO,SAAWrB,EAASqB,OAAO,eAC3C6hE,EAASnkE,OAAO8/D,GAAgBK,YAAYl/D,EAASqB,OAAO,QAASrB,EAASqB,OAAO,eAAgBrB,EAASqB,OAAO,SAGrH6hE,EAASpkE,QAAQkB,EAASqB,QAMlC5E,KAAKklE,UAAUljE,OAAOG,EAAQijE,iBAE7B,GAAItjE,IAAW2K,EAAsBk6D,kBAAmB,CACzD,IAAKH,EACD,OAEJD,aAAavmE,KAAKqmE,WAClBliD,OAAOu/B,oBAAoB,UAAW1jD,KAAKulE,gBAAgB,GAC3DvlE,KAAKilE,YAAc9iE,EAAQ8iE,YAC3BjlE,KAAKkC,OAAOmnB,QAAQ,qEAAuErpB,KAAKilE,aAChGuB,EAAkBnkE,UAClBrC,KAAKmlE,mBAAmBnjE,OAAOG,EAAQijE,aAI/C,MAAOt2D,GACH9O,KAAKkC,OAAOoE,MAAM,6CAClBtG,KAAKkC,OAAOysB,SAAS,8CAAgD7f,EAAIP,YACzEvO,KAAKkC,OAAOysB,SAAS,mBAAqB/H,GACtC6/C,EACAA,EAASnkE,OAAOwM,GAEX03D,GACLA,EAAkBlkE,OAAOwM,KAWrCi2D,EAAqB6B,kBAAoB,SAAU5gB,EAAQ9jD,EAAQ2kE,EAAyBjhC,GAExF,GADA1jC,EAAOgtB,MAAM,6BACR82B,EAAOzE,OAAOxB,kBAGf,OAFA79C,EAAOgtB,MAAM,yEAEN,EAEX,IAAK23C,EAGD,OAFA3kE,EAAOgtB,MAAM,kFAEN,EAEX,GAAI0W,EACA,OAAQA,GACJ,KAAK36B,EAAqBsuB,OAC1B,KAAKtuB,EAAqB05B,IAEtB,OADAziC,EAAOgtB,MAAM,yEACN,EACX,QAEI,OADAhtB,EAAOgtB,MAAM,8EACN,EAGnB,OAAO,GAEJ61C,EArO8B,GCMrC+B,GAA6B,SAAUzmE,GAEvC,SAASymE,IACL,OAAkB,OAAXzmE,GAAmBA,EAAO0D,MAAM/D,KAAMoB,YAAcpB,KA+O/D,OAjPAX,EAAUynE,EAAazmE,GAQvBymE,EAAY5mE,UAAU2yD,aAAe,SAAU1wD,GAC3C,IACI,IAAIm8D,EAAYR,GAAWwC,kBAAkBtgE,KAAKgmD,OAAO5E,KAAK7xB,SAAUptB,EAAQ0L,QAAUtE,EAAqBpH,EAAQqtB,WAAaxvB,KAAKgmD,OAAO5E,KAAK5xB,UAAWxvB,KAAKuT,eACjKgrD,EAAwBp8D,EAAQo8D,uBAAyB,GAE7D,GAAIv+D,KAAKgmD,OAAOzE,OAAOqB,YAGnB,OAFA5iD,KAAKkC,OAAOmnB,QAAQ,4CAEbrpB,KAAK+mE,uBAAuB5kE,EAASm8D,EAAWC,GAIvDv+D,KAAKkC,OAAOmnB,QAAQ,iEACpB,IAAI+0C,EAAQN,GAAWO,eAAe,cAAeC,EAAWC,EAAuBv+D,KAAKkC,QAC5F,OAAOlC,KAAK+mE,uBAAuB5kE,EAASm8D,EAAWC,EAAuBH,GAGtF,MAAO15D,GACH,OAAOtC,QAAQE,OAAOoC,KAO9BoiE,EAAY5mE,UAAU4jE,OAAS,SAAU1Q,GACrC,IACIpzD,KAAKkC,OAAOmnB,QAAQ,sBACpB,IAAIqzC,EAAqB18D,KAAKy8D,wBAAwBrJ,GAClDkL,EAAYR,GAAWyC,wBAAwBvgE,KAAKgmD,OAAO5E,KAAK7xB,SAAUmtC,GAC1EltC,EAAY4jC,GAAiBA,EAAc5jC,UAC3Cw3C,EAAwB5T,GAAiBA,EAAc4T,sBACvDzI,GAA2C,OAAlBnL,QAA4C,IAAlBA,OAA2B,EAASA,EAAcmL,wBAA0B,GAEnI,GAAIv+D,KAAKgmD,OAAOzE,OAAOqB,YAGnB,OAFA5iD,KAAKkC,OAAOmnB,QAAQ,2BAEbrpB,KAAKinE,iBAAiBvK,EAAoB4B,EAAWC,EAAuB/uC,OAAW0W,EAAW8gC,GAIzGhnE,KAAKkC,OAAOmnB,QAAQ,0CACpB,IAAI+0C,EAAQN,GAAWO,eAAe,cAAeC,EAAWC,EAAuBv+D,KAAKkC,QAC5F,OAAOlC,KAAKinE,iBAAiBvK,EAAoB4B,EAAWC,EAAuB/uC,EAAW4uC,EAAO4I,GAG7G,MAAOtiE,GAEH,OAAOtC,QAAQE,OAAOoC,KAY9BoiE,EAAY5mE,UAAU6mE,uBAAyB,SAAU5kE,EAASm8D,EAAWC,EAAuBH,GAChG,OAAOp6D,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIi8C,EAAwBirB,EAAczuB,EAAiB0uB,EAAYzD,EAAgB0D,EAAiCC,EAAaC,EAAoBC,EAAiBpJ,EAAav6C,EAAMsvC,EAAcsU,EAASC,EAAyB/6B,EAAkB9nC,EAAQue,EACnQ1iB,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAGD,OAFArF,KAAKkC,OAAOmnB,QAAQ,iCACpB4yB,EAAyBj8C,KAAKi8D,iCAAiCnvD,GAAM46D,mBAC9D,CAAC,EAAa1nE,KAAK09D,+BAA+Bv7D,EAAS4K,GAAgB+yD,QACtF,KAAK,EACDoH,EAAevrD,EAAGrW,OAClBtF,KAAKqxC,eAAe+F,mBAAmB8vB,EAAa76B,MAAO66B,EAAalvC,MAAOkvC,EAAa13C,UAAW03C,EAAa1yB,WAAaptC,EAAUyB,aAAcq+D,EAAa3wC,SAAW,MACjL5a,EAAGtW,MAAQ,EACf,KAAK,EAED,OADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAahG,KAAKu8D,mCAAmC2K,IACjE,KAAK,EAED,OADAzuB,EAAkB98B,EAAGrW,OACd,CAAC,EAAatF,KAAK68D,qBAAqB5gB,EAAwBirB,EAAa13C,UAAW03C,EAAa5qB,oBAChH,KAAK,EAQD,OAPA6qB,EAAaxrD,EAAGrW,OAChBtF,KAAKkC,OAAOmnB,QAAQ,4BACpBq6C,EAAiBqB,GAAqB6B,kBAAkB5mE,KAAKgmD,OAAQhmD,KAAKkC,OAAQlC,KAAK27D,qBAAsBx5D,EAAQyjC,sBACrHwhC,OAAkC,EAC9B1D,IACA0D,EAAkCpnE,KAAK6pB,kBAAkBqB,iBAAiBrnB,EAAkB8jE,+BAAgCxlE,EAAQoR,gBAEjI,CAAC,EAAa4zD,EAAWzU,eAAe5xD,EAASA,EAAS,GAAIomE,GAAe,CAAE1S,aAAckP,MACxG,KAAK,EAUD,OATA2D,EAAc1rD,EAAGrW,OACjBgiE,EAAqB,IAAI3F,GAAawF,EAAYnnE,KAAKqxC,eAAgBoH,EAAiBz4C,KAAKkC,QAC7FqlE,EAAkB,CACdnJ,MAAOA,EACPE,UAAWA,EACXC,sBAAuBA,GAE3BJ,EAAcmJ,EAAmBzF,oBAAoBwF,EAAaE,GAClEvnE,KAAK07D,aAAa/X,UAAUZ,GAAU6kB,aAAc76D,GAAgB+yD,MAAO,CAAE3B,YAAaA,GAAe,MAClG,CAAC,EAAamJ,EAAmBvF,oBAAoB5D,IAChE,KAAK,EAMD,GALAv6C,EAAOjI,EAAGrW,OACV4tD,EAAellB,GAAUqC,oBAAoBzsB,GAC7C4jD,EAAUxnE,KAAKk9D,gCAAgChK,EAAcnmD,GAAgB+yD,MAAOoH,EAAa3zD,eAEjG6wC,GAAgBoB,eAAexlD,KAAKqxC,eAAgBrxC,KAAKgmD,OAAO5E,KAAK7xB,SAAUkpB,GAC3Eya,EAAa7+B,UAAW,CASxB,GARAr0B,KAAKkC,OAAOmnB,QAAQ,mDAEhB+9C,GACAA,EAAgCt7C,eAAe,CAC3CC,SAAS,EACT23C,gBAAgB,KAGnB1jE,KAAK27D,qBACN,MAAMv8C,GAAiB+C,4CAI3B,OAFAslD,EAA0B,IAAI3E,GAAwB9iE,KAAKgmD,OAAQhmD,KAAKqxC,eAAgBrxC,KAAK8pB,cAAe9pB,KAAKkC,OAAQlC,KAAK07D,aAAc17D,KAAKsiD,iBAAkBx1C,GAAM46D,kBAAmB1nE,KAAK6pB,kBAAmB7pB,KAAK27D,qBAAsBzI,EAAa7+B,UAAW6yC,EAAa3zD,eACpRm5B,EAAmBd,GAAcQ,kBAAkBpsC,KAAK8pB,cAAe09C,GAAS96B,iBACzE,CAAC,EAAc+6B,EAAwB5U,aAAa/xD,EAASA,EAAS,GAAIomE,GAAe,CAAE76B,MAAOK,EAAkBoa,YAAQ5gB,KAC1H2hC,SAAQ,WACTpnE,EAAM4wC,eAAe6G,oBAAoBsvB,OAGrD,MAAO,CAAC,EAAaF,EAAmB1G,2BAA2Bh9C,EAAM4jD,EAASL,EAAW33C,UAAWxvB,KAAKqiD,gBACjH,KAAK,EAED,OADAz9C,EAAS+W,EAAGrW,OACL,CAAC,EAAcV,GAC1B,KAAK,EAWD,MAVAue,EAAMxH,EAAGrW,OACL84D,GAEAA,EAAMp3C,QAEN7D,aAAenQ,IACfmQ,EAAI7P,iBAAiBtT,KAAKuT,eAE9B0oC,EAAuB2e,mBAAmBz3C,GAC1CnjB,KAAKqxC,eAAe6G,oBAAoBgvB,EAAa76B,OAC/ClpB,EACV,KAAK,EAAG,MAAO,CAAC,WAchC2jD,EAAY5mE,UAAU+mE,iBAAmB,SAAUC,EAAc5I,EAAWC,EAAuBlC,EAAkB+B,EAAO4I,GACxH,OAAOhjE,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIi8C,EAAwBkrB,EAAYW,EAAWlG,EAAYzD,EAAa70C,EAAKs6C,EAAmBmE,EAAax+C,EACjH,OAAOxkB,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EACDrF,KAAKkC,OAAOmnB,QAAQ,2BACpBrpB,KAAK07D,aAAa/X,UAAUZ,GAAUilB,aAAcj7D,GAAgB+yD,MAAOoH,GAC3EjrB,EAAyBj8C,KAAKi8D,iCAAiCnvD,GAAMm7D,aACrEtsD,EAAGtW,MAAQ,EACf,KAAK,EAGD,OAFAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IAEf,CAAC,EAAahG,KAAK47D,mBAAmBsL,EAAa3wC,UAC9D,KAAK,EAGD,OADA5a,EAAGrW,OACI,CAAC,EAAatF,KAAK68D,qBAAqB5gB,EAAwBogB,IAC3E,KAAK,EACD8K,EAAaxrD,EAAGrW,OAChBtF,KAAKkC,OAAOmnB,QAAQ,4BACpBy+C,EAAYX,EAAWhU,aAAa+T,GACpClnE,KAAK07D,aAAa/X,UAAUZ,GAAUmlB,eAAgBn7D,GAAgB+yD,MAAOoH,GAC7EtF,EAAa,IAAI9D,GAAW99D,KAAKqxC,eAAgBrxC,KAAKkC,QACtDi8D,EAAcyD,EAAW5D,UAAU8J,EAAW,CAAExJ,UAAWA,EAAWC,sBAAuBA,EAAuBH,MAAOA,IAC3Hp+D,KAAK07D,aAAa/X,UAAUZ,GAAU6kB,aAAc76D,GAAgB+yD,MAAO,CAAE3B,YAAaA,GAAe,MACzGxiD,EAAGtW,MAAQ,EACf,KAAK,EAGD,OAFAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IAEf,CAAC,EAAa47D,EAAW3B,0BAA0B9B,IAC9D,KAAK,EAID,OAFAxiD,EAAGrW,OACHtF,KAAKkC,OAAOmnB,QAAQ,0DACb,CAAC,EAAa,GACzB,KAAK,EAGD,OAFAC,EAAM3N,EAAGrW,OACTtF,KAAKkC,OAAOmnB,QAAQ,sGAAwGC,GACrH,CAAC,EAAa,GACzB,KAAK,EAgBD,OAfAs4C,EAAW5B,WAAW7B,GAClB6I,GACApD,EAAoB,CAChB7J,MAAOjtD,GAAMm7D,YACb7kE,QAASpD,KAAKgmD,OAAOzE,OAAOoB,0BAC5B9B,WAAW,GAEfknB,EAAc/5B,GAAU+B,eAAei3B,EAAuB9oB,GAAac,iBAC3Eh/C,KAAKkC,OAAOmnB,QAAQ,2DACpBrpB,KAAKkC,OAAO+sB,WAAW,+BAAiC84C,GACxD/nE,KAAKsiD,iBAAiB5B,iBAAiBqnB,EAAanE,IAGpD5jE,KAAKkC,OAAOmnB,QAAQ,uCAEjB,CAAC,EAAa,GACzB,KAAK,EAaD,MAZAE,EAAM5N,EAAGrW,OACL84D,GAEAA,EAAMp3C,QAENuC,aAAevW,IACfuW,EAAIjW,iBAAiBtT,KAAKuT,eAE9BvT,KAAKqxC,eAAe4G,0BAAyB,GAC7Cj4C,KAAK07D,aAAa/X,UAAUZ,GAAUolB,eAAgBp7D,GAAgB+yD,MAAO,KAAMv2C,GACnFvpB,KAAK07D,aAAa/X,UAAUZ,GAAUqlB,WAAYr7D,GAAgB+yD,OAClE7jB,EAAuB2e,mBAAmBrxC,GACpCA,EACV,KAAK,EAED,OADAvpB,KAAK07D,aAAa/X,UAAUZ,GAAUqlB,WAAYr7D,GAAgB+yD,OAC3D,CAAC,WAKrBgH,EAlPqB,CAmP9BxK,ICzPE+L,GAAiC,SAAUhoE,GAE3C,SAASgoE,EAAgB5H,EAAgBhF,EAAahjB,EAAiBioB,EAAsB52C,GACzF,IAAIrpB,EAAQJ,EAAOM,KAAKX,KAAMygE,EAAgBhF,EAAahjB,EAAiBioB,IAAyB1gE,KAErG,OADAS,EAAMqpB,cAAgBA,EACfrpB,EA2HX,OA/HApB,EAAUgpE,EAAiBhoE,GAU3BgoE,EAAgBnoE,UAAU2hE,oBAAsB,SAAUC,EAAYvmD,GAClE,OAAOvX,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI4jE,EAAmB0E,EACvB,OAAOvjE,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,OADArF,KAAK0gE,qBAAqBr3C,QAAQ,8CAC5BtP,GAAYG,QAAQ4nD,GAAoB,CAAC,EAAa,IAExDvmD,EAAOgtD,oBACPvoE,KAAK0gE,qBAAqBr3C,QAAQ,kFAClCrpB,KAAKqxC,eAAeoB,kBAAkB7lC,EAAmBirC,WAAYt8B,EAAOgtD,mBAAmB,IAGnGvoE,KAAKqxC,eAAeoB,kBAAkB7lC,EAAmBmrC,eAAgB/3C,KAAKy4C,gBAAgBllC,eAAe,GAC7GvT,KAAKqxC,eAAemH,iBAAiBx4C,KAAKy4C,gBAAiBz4C,KAAK8pB,eAChE9pB,KAAK0gE,qBAAqB3xC,QAAQ,qDAAuD+yC,GACzF8B,EAAoB,CAChB7J,MAAOjtD,GAAM62D,qBACbvgE,QAASmY,EAAOitD,gBAChB3nB,WAAW,GAE4B,oBAA9BtlC,EAAOktD,mBAA2C,CAAC,EAAa,IAC7EzoE,KAAK0gE,qBAAqBr3C,QAAQ,6EAClCi/C,EAAW/sD,EAAOktD,mBAAmB3G,IAClB,IAAbwG,EAA4B,CAAC,EAAa,IAChDtoE,KAAK0gE,qBAAqBr3C,QAAQ,4FAC3B,CAAC,EAAa9N,EAAO+mC,iBAAiB1B,iBAAiBkhB,EAAY8B,OAC9E,KAAK,EAED,OADAjoD,EAAGrW,OACI,CAAC,GACZ,KAAK,EAED,OADAtF,KAAK0gE,qBAAqBr3C,QAAQ,+FAC3B,CAAC,GACZ,KAAK,EAAG,MAAO,CAAC,EAAa,GAC7B,KAAK,EAGD,OADArpB,KAAK0gE,qBAAqBr3C,QAAQ,0EAC3B,CAAC,EAAa9N,EAAO+mC,iBAAiB1B,iBAAiBkhB,EAAY8B,IAC9E,KAAK,EAED,OADAjoD,EAAGrW,OACI,CAAC,GACZ,KAAK,EAAG,MAAO,CAAC,EAAa,GAC7B,KAAK,EAGD,MADAtF,KAAK0gE,qBAAqB5xC,KAAK,8DACzB1P,GAAiBI,gCAC3B,KAAK,EAAG,MAAO,CAAC,WAShC6oD,EAAgBnoE,UAAU0gE,2BAA6B,SAAU7vB,EAAc1E,EAAO7c,EAAWqxC,GAC7F,OAAO78D,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIm4C,EAAU+Z,EAAc4O,EAAkBG,EAAUC,EAAaC,EAAeC,EACpF,OAAOr8D,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAGD,GAFArF,KAAK0gE,qBAAqBr3C,QAAQ,6CAE9BtP,GAAYG,QAAQ62B,GACpB,MAAM3xB,GAAiBK,qBAAqBsxB,GAMhD,GAHA/wC,KAAKqxC,eAAe4G,0BAAyB,GAC7CE,EAAWn4C,KAAKqxC,eAAeyF,iBAAiBzK,GAChD6lB,EAAelyD,KAAKqxC,eAAeyD,kBAAkBqD,IAChD+Z,EACD,MAAM17C,GAAgBmB,yBAAyB,gBAEnD,IACImpD,EAAmB9gE,KAAK2gE,WAAW3N,uBAAuBjiB,EAAcmhB,GAE5E,MAAOxtD,GACH,MAAIA,aAAamuB,IAAenuB,EAAE0O,WAAaoJ,GAAwBa,mBAAmBvK,KAEhFsM,GAAiBc,2BAGjBxb,EAOd,OAJAu8D,EAAWjhE,KAAKqxC,eAAeuF,iBAAiBsb,GAChDgP,EAAclhE,KAAKqxC,eAAeyD,kBAAkBmsB,GAEpDjhE,KAAKy4C,gBAAgB3lC,KAAOguD,EAAiBhuD,KACxCguD,EAAiBO,yBACf,CAAC,EAAarhE,KAAKshE,6BAA6BR,EAAiBO,yBAA0B7xC,EAAWqxC,IADtD,CAAC,EAAa,GAEzE,KAAK,EACDllD,EAAGrW,OACHqW,EAAGtW,MAAQ,EACf,KAAK,EAaD,OAZAy7D,EAAiB9oC,MAAQkpC,QAAeh7B,EACxC46B,EAAiBz0B,MAAQ6lB,EAErB4O,EAAiBnR,YACjB3vD,KAAKy4C,gBAAgB3iB,WAAagrC,EAAiBnR,aAGnDwR,EAAgBnhE,KAAKuhE,sBACjBJ,IACAnhE,KAAKy4C,gBAAgBlB,cAAgB4pB,IAGtC,CAAC,EAAanhE,KAAK2gE,WAAW9N,aAAa7yD,KAAKy4C,gBAAiBqoB,IAC5E,KAAK,EAGD,OAFAM,EAAgBzlD,EAAGrW,OACnBtF,KAAKqxC,eAAe6G,oBAAoB7L,GACjC,CAAC,EAAc+0B,WAKnCiH,EAhIyB,CAiIlC7H,IC5HEkI,GAAgC,SAAUroE,GAE1C,SAASqoE,IACL,OAAkB,OAAXroE,GAAmBA,EAAO0D,MAAM/D,KAAMoB,YAAcpB,KA8T/D,OAhUAX,EAAUqpE,EAAgBroE,GAQ1BqoE,EAAexoE,UAAU2yD,aAAe,SAAU1wD,GAC9C,OAAO6B,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIknE,EAAcjrB,EAAwB0sB,EAAkBlwB,EAAiB0uB,EAAYG,EAAoBD,EAAakB,EAAmBplD,EACzI1iB,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAAG,MAAO,CAAC,EAAarF,KAAK09D,+BAA+Bv7D,EAAS4K,GAAgB2yC,WAC1F,KAAK,EACDwnB,EAAevrD,EAAGrW,OAClBtF,KAAKqxC,eAAe+F,mBAAmB8vB,EAAa76B,MAAO66B,EAAalvC,MAAOkvC,EAAa13C,UAAW03C,EAAa1yB,WAAaptC,EAAUyB,aAAcq+D,EAAa3wC,SAAW,MACjL0lB,EAAyBj8C,KAAKi8D,iCAAiCnvD,GAAM62D,sBACrEgF,EAAmB,SAAU/hD,GAErBA,EAAMgiD,YACNnoE,EAAMyB,OAAOmnB,QAAQ,wEACrB5oB,EAAM4wC,eAAe6G,oBAAoBgvB,EAAa76B,SAG9D1wB,EAAGtW,MAAQ,EACf,KAAK,EAED,OADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAahG,KAAKu8D,mCAAmC2K,IACjE,KAAK,EAED,OADAzuB,EAAkB98B,EAAGrW,OACd,CAAC,EAAatF,KAAK68D,qBAAqB5gB,EAAwBirB,EAAa13C,UAAW03C,EAAa5qB,oBAChH,KAAK,EAID,OAHA6qB,EAAaxrD,EAAGrW,OAChBtF,KAAKkC,OAAOmnB,QAAQ,4BACpBi+C,EAAqB,IAAIe,GAAgBlB,EAAYnnE,KAAKqxC,eAAgBoH,EAAiBz4C,KAAKkC,OAAQlC,KAAK8pB,eACtG,CAAC,EAAaq9C,EAAWzU,eAAe5xD,EAASA,EAAS,GAAIomE,GAAe,CAAE1S,aAAcuQ,GAAqB6B,kBAAkB5mE,KAAKgmD,OAAQhmD,KAAKkC,OAAQlC,KAAK27D,qBAAsBx5D,EAAQyjC,0BAC5M,KAAK,EAMD,OALAyhC,EAAc1rD,EAAGrW,OACjBijE,EAAoBvoE,KAAK6oE,qBAAqB1mE,EAAQomE,mBACtDvoE,KAAKkC,OAAO+sB,WAAW,wBAA0Bs5C,GAEjDpkD,OAAOuB,iBAAiB,WAAYijD,GAC7B,CAAC,EAAarB,EAAmBzF,oBAAoBwF,EAAa,CACjE/kB,iBAAkBtiD,KAAKsiD,iBACvBkmB,gBAAiBxoE,KAAKgmD,OAAOzE,OAAOoB,0BACpC4lB,kBAAmBA,EACnBE,mBAAoBtmE,EAAQsmE,sBAExC,KAAK,EAEL,MAAO,CAAC,EAAc9sD,EAAGrW,QACzB,KAAK,EAQD,MAPA6d,EAAMxH,EAAGrW,OACL6d,aAAenQ,IACfmQ,EAAI7P,iBAAiBtT,KAAKuT,eAE9B4Q,OAAOu/B,oBAAoB,WAAYilB,GACvC1sB,EAAuB2e,mBAAmBz3C,GAC1CnjB,KAAKqxC,eAAe6G,oBAAoBgvB,EAAa76B,OAC/ClpB,EACV,KAAK,EAAG,MAAO,CAAC,WAWhCulD,EAAexoE,UAAU2jE,sBAAwB,SAAUjgD,GACvD,OAAO5f,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIi8C,EAAwB6sB,EAAcz8B,EAAO6mB,EAAc6V,EAAiBC,EAA2BC,EAAsBC,EAAkBtF,EAAmBuF,EAAuBC,EAAU9/C,EACvM,OAAOvkB,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EACD42C,EAAyBj8C,KAAKi8D,iCAAiCnvD,GAAM+2D,uBACrEloD,EAAGtW,MAAQ,EACf,KAAK,EAED,GADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,GAAI,CAAE,MAClBhG,KAAKqxC,eAAe4H,yBAAwB,GAE7C,OADAj5C,KAAKkC,OAAO4sB,KAAK,yFACV,CAAC,EAAc,MAG1B,GADAg6C,EAAe9oE,KAAKqpE,wBAAwBzlD,GAAQO,OAAOk6B,SAASz6B,OAC/DklD,EAID,OAFA9oE,KAAKkC,OAAO4sB,KAAK,6GACjB9uB,KAAKqxC,eAAe+G,8BAA8BrrC,GAAgB2yC,UAC3D,CAAC,EAAc,MAE1BrT,OAAQ,EACR,IACI6mB,EAAellB,GAAUqC,oBAAoBy4B,GAC7Cz8B,EAAQrsC,KAAKk9D,gCAAgChK,EAAcnmD,GAAgB2yC,UAC3E1/C,KAAKkC,OAAOmnB,QAAQ,6BAExB,MAAO3kB,GAGH,OAFA1E,KAAKkC,OAAO4sB,KAAK,6DAA+DpqB,GAChF1E,KAAKqxC,eAAe+G,8BAA8BrrC,GAAgB2yC,UAC3D,CAAC,EAAc,MAK1B,OAHAqpB,EAAkB/oE,KAAKqxC,eAAeyD,kBAAkBloC,EAAmBirC,YAAY,IAASzwC,EAAUyB,aAC1GmgE,EAA4Bh7B,GAAUgB,kBAAkB+5B,GACxDE,EAAuBj7B,GAAUgB,kBAAkB7qB,OAAOk6B,SAASY,MAC7D+pB,IAA8BC,GAAwBjpE,KAAKgmD,OAAO5E,KAAKW,2BAE7E/hD,KAAKkC,OAAOmnB,QAAQ,kDACb,CAAC,EAAarpB,KAAKspE,WAAWR,EAAcz8B,EAAO4P,KAHsD,CAAC,EAAa,GAIlI,KAAK,EAMD,OALAitB,EAAmBvtD,EAAGrW,OAClByjE,EAAgB7tD,QAAQ,MAAQ,GAEhCgjC,GAAaQ,YAAYqqB,GAEtB,CAAC,EAAcG,GAC1B,KAAK,EACD,OAAMlpE,KAAKgmD,OAAO5E,KAAKW,0BAAkC,CAAC,EAAa,IACvE/hD,KAAKkC,OAAOmnB,QAAQ,yDACb,CAAC,EAAcrpB,KAAKspE,WAAWR,EAAcz8B,EAAO4P,KAC/D,KAAK,EACD,OAAOiC,GAAaU,eAAgB5+C,KAAKgmD,OAAOzE,OAAO/B,sBAA+B,CAAC,EAAa,IAKpGx/C,KAAKqxC,eAAeoB,kBAAkB7lC,EAAmBkrC,SAAUgxB,GAAc,GACjFlF,EAAoB,CAChB7J,MAAOjtD,GAAM+2D,sBACbzgE,QAASpD,KAAKgmD,OAAOzE,OAAOoB,0BAC5B9B,WAAW,GAEfsoB,GAAwB,EACjBJ,GAAuC,SAApBA,EAAoC,CAAC,EAAa,IAC5EK,EAAWlrB,GAAagB,cAExBl/C,KAAKqxC,eAAeoB,kBAAkB7lC,EAAmBirC,WAAYuxB,GAAU,GAC/EppE,KAAKkC,OAAO0sB,QAAQ,8EACb,CAAC,EAAa5uB,KAAKsiD,iBAAiB5B,iBAAiB0oB,EAAUxF,MAC1E,KAAK,EAED,OADAuF,EAAwBxtD,EAAGrW,OACpB,CAAC,EAAa,GACzB,KAAK,EAGD,OADAtF,KAAKkC,OAAOmnB,QAAQ,kCAAoC0/C,GACjD,CAAC,EAAa/oE,KAAKsiD,iBAAiB5B,iBAAiBqoB,EAAiBnF,IACjF,KAAK,EACDuF,EAAwBxtD,EAAGrW,OAC3BqW,EAAGtW,MAAQ,EACf,KAAK,EAED,IAAK8jE,EACD,MAAO,CAAC,EAAcnpE,KAAKspE,WAAWR,EAAcz8B,EAAO4P,IAE/DtgC,EAAGtW,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAc,MAC9B,KAAK,GAOD,MANAikB,EAAM3N,EAAGrW,OACLgkB,aAAetW,IACfsW,EAAIhW,iBAAiBtT,KAAKuT,eAE9B0oC,EAAuB2e,mBAAmBtxC,GAC1CtpB,KAAKqxC,eAAe+G,8BAA8BrrC,GAAgB2yC,UAC5Dp2B,EACV,KAAK,GAAI,MAAO,CAAC,WAUjCo/C,EAAexoE,UAAUmpE,wBAA0B,SAAUzlD,GACzD5jB,KAAKkC,OAAOmnB,QAAQ,kCAEpB,IAAIi2B,EAAiBtR,GAAUwC,4BAA4B5sB,GAC3D,GAAI07B,EAGA,OAFApB,GAAaC,UAAUh6B,QACvBnkB,KAAKkC,OAAOmnB,QAAQ,2DACbzF,EAEX,IAAI2lD,EAAavpE,KAAKqxC,eAAeyD,kBAAkBloC,EAAmBkrC,UAAU,GAGpF,OAFA93C,KAAKqxC,eAAe3pB,WAAW1nB,KAAKqxC,eAAe4C,iBAAiBrnC,EAAmBkrC,WACvF93C,KAAKkC,OAAOmnB,QAAQ,iEACbkgD,GAOXb,EAAexoE,UAAUopE,WAAa,SAAU1lD,EAAMyoB,EAAO4P,GACzD,OAAOj4C,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIg5C,EAAeka,EAAcuU,EAAyB/6B,EAAkB88B,EAAkBrC,EAAYG,EACtG7mE,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAID,GAHA2zC,EAAgBh5C,KAAKqxC,eAAesH,iBAAiBtM,EAAOrsC,KAAK8pB,eACjE9pB,KAAKkC,OAAOmnB,QAAQ,+CACpB6pC,EAAellB,GAAUqC,oBAAoBzsB,GACzCsvC,EAAa7+B,UAAW,CAExB,GADAr0B,KAAKkC,OAAOmnB,QAAQ,oDACfrpB,KAAK27D,qBACN,MAAMv8C,GAAiB+C,4CAI3B,OAFAslD,EAA0B,IAAI3E,GAAwB9iE,KAAKgmD,OAAQhmD,KAAKqxC,eAAgBrxC,KAAK8pB,cAAe9pB,KAAKkC,OAAQlC,KAAK07D,aAAc17D,KAAKsiD,iBAAkBx1C,GAAM46D,kBAAmB1nE,KAAK6pB,kBAAmB7pB,KAAK27D,qBAAsBzI,EAAa7+B,UAAW2kB,EAAczlC,eACrRm5B,EAAmBd,GAAcQ,kBAAkBpsC,KAAK8pB,cAAeuiB,GAAOK,iBACvE,CAAC,EAAc+6B,EAAwB5U,aAAa/xD,EAASA,EAAS,GAAIk4C,GAAgB,CAAE3M,MAAOK,EAAkBoa,YAAQ5gB,KAC3H2hC,SAAQ,WACTpnE,EAAM4wC,eAAe6G,oBAAoB7L,OAIrD,GADAm9B,EAAmBxpE,KAAKqxC,eAAe2F,mBAAmB3K,IACrDm9B,EACD,MAAMpqD,GAAiB6B,+BAE3B,MAAO,CAAC,EAAajhB,KAAK68D,qBAAqB5gB,EAAwButB,IAC3E,KAAK,EAKD,OAJArC,EAAaxrD,EAAGrW,OAChBtF,KAAKkC,OAAOmnB,QAAQ,4BACpB+6B,GAAgBoB,eAAexlD,KAAKqxC,eAAgBrxC,KAAKgmD,OAAO5E,KAAK7xB,SAAUypB,GAC/EsuB,EAAqB,IAAIe,GAAgBlB,EAAYnnE,KAAKqxC,eAAgB2H,EAAeh5C,KAAKkC,OAAQlC,KAAK8pB,eACpG,CAAC,EAAaw9C,EAAmB1G,2BAA2Bh9C,EAAMyoB,EAAO86B,EAAW33C,UAAWxvB,KAAKqiD,gBAC/G,KAAK,EAAG,MAAO,CAAC,EAAc1mC,EAAGrW,gBAUjDojE,EAAexoE,UAAU4jE,OAAS,SAAU1Q,GACxC,OAAOpvD,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI08D,EAAoBzgB,EAAwB2nB,EAAmBuD,EAAYW,EAAWQ,EAAU/+C,EACpG,OAAOxkB,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EACDrF,KAAKkC,OAAOmnB,QAAQ,yBACpBqzC,EAAqB18D,KAAKy8D,wBAAwBrJ,GAClDnX,EAAyBj8C,KAAKi8D,iCAAiCnvD,GAAMg3D,QACrEnoD,EAAGtW,MAAQ,EACf,KAAK,EAID,OAHAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,GAAI,CAAE,KACvBhG,KAAK07D,aAAa/X,UAAUZ,GAAUilB,aAAcj7D,GAAgB2yC,SAAU0T,GAEvE,CAAC,EAAapzD,KAAK47D,mBAAmBc,EAAmBnmC,UACpE,KAAK,EAQD,OANA5a,EAAGrW,OACHs+D,EAAoB,CAChB7J,MAAOjtD,GAAMg3D,OACb1gE,QAASpD,KAAKgmD,OAAOzE,OAAOoB,0BAC5B9B,WAAW,GAER,CAAC,EAAa7gD,KAAK68D,qBAAqB5gB,EAAwBmX,GAAiBA,EAAc5jC,YAC1G,KAAK,EAKD,OAJA23C,EAAaxrD,EAAGrW,OAChBtF,KAAKkC,OAAOmnB,QAAQ,4BACpBy+C,EAAYX,EAAWhU,aAAauJ,GACpC18D,KAAK07D,aAAa/X,UAAUZ,GAAUmlB,eAAgBn7D,GAAgB2yC,SAAUgd,GAC1EtJ,GAA6D,oBAArCA,EAAcqV,oBAC5CH,EAAWlV,EAAcqV,mBAAmBX,IACzB,IAAbQ,EAA4B,CAAC,EAAa,IAChDtoE,KAAKkC,OAAOmnB,QAAQ,8DAEfrpB,KAAKqxC,eAAe6H,4BACrBl5C,KAAKqxC,eAAe4G,0BAAyB,GAE1C,CAAC,EAAaj4C,KAAKsiD,iBAAiB1B,iBAAiBknB,EAAWlE,MARgB,CAAC,EAAa,GASzG,KAAK,EAED,OADAjoD,EAAGrW,OACI,CAAC,GACZ,KAAK,EAEDtF,KAAKqxC,eAAe4G,0BAAyB,GAC7Cj4C,KAAKkC,OAAOmnB,QAAQ,iEACpB1N,EAAGtW,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAa,GAC7B,KAAK,EAKD,OAHKrF,KAAKqxC,eAAe6H,4BACrBl5C,KAAKqxC,eAAe4G,0BAAyB,GAE1C,CAAC,EAAaj4C,KAAKsiD,iBAAiB1B,iBAAiBknB,EAAWlE,IAC3E,KAAK,EAED,OADAjoD,EAAGrW,OACI,CAAC,GACZ,KAAK,EAAG,MAAO,CAAC,EAAa,IAC7B,KAAK,GAQD,MAPAikB,EAAM5N,EAAGrW,OACLikB,aAAevW,IACfuW,EAAIjW,iBAAiBtT,KAAKuT,eAE9B0oC,EAAuB2e,mBAAmBrxC,GAC1CvpB,KAAK07D,aAAa/X,UAAUZ,GAAUolB,eAAgBp7D,GAAgB2yC,SAAU,KAAMn2B,GACtFvpB,KAAK07D,aAAa/X,UAAUZ,GAAUqlB,WAAYr7D,GAAgB2yC,UAC5Dn2B,EACV,KAAK,GAED,OADAvpB,KAAK07D,aAAa/X,UAAUZ,GAAUqlB,WAAYr7D,GAAgB2yC,UAC3D,CAAC,WAS5BgpB,EAAexoE,UAAU2oE,qBAAuB,SAAUY,GACtD,IAAIlB,EAAoBkB,GAAoBtlD,OAAOk6B,SAASY,KAC5D,OAAOjR,GAAU+B,eAAew4B,EAAmBrqB,GAAac,kBAE7D0pB,EAjUwB,CAkUjCpM,ICtUEoN,GAA+B,SAAUrpE,GAEzC,SAASqpE,EAAcjJ,EAAgBhF,EAAahjB,EAAiBioB,EAAsBhe,GACvF,IAAIjiD,EAAQJ,EAAOM,KAAKX,KAAMygE,EAAgBhF,EAAahjB,EAAiBioB,IAAyB1gE,KAErG,OADAS,EAAMiiD,kBAAoBA,EACnBjiD,EA4IX,OAhJApB,EAAUqqE,EAAerpE,GAWzBqpE,EAAcxpE,UAAU2hE,oBAAsB,SAAUC,GACpD,OAAO99D,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI2b,EACJ,OAAO5W,EAAY/E,MAAM,SAAUirB,GAC/B,OAAQA,EAAG5lB,OACP,KAAK,EACD,GAAI0U,GAAYG,QAAQ4nD,GAGpB,MADA9hE,KAAK0gE,qBAAqB5xC,KAAK,yBACzB1P,GAAiBI,gCAE3B,OAAKxf,KAAK0iD,kBACH,CAAC,EAAa1iD,KAAK2pE,UAAU7H,IADA,CAAC,EAAa,GAEtD,KAAK,EAED,OADAnmD,EAAKsP,EAAG3lB,OACD,CAAC,EAAa,GACzB,KAAK,EACDqW,EAAK3b,KAAK4pE,cAAc9H,GACxB72C,EAAG5lB,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAcsW,WAU9C+tD,EAAcxpE,UAAU2pE,qBAAuB,SAAUC,EAAQ1mE,GAC7D,IAAI3C,EAAQT,KACZ,OAAO,IAAIoC,SAAQ,SAAUC,EAASC,GAC9Bc,EAAU29C,IACVtgD,EAAMigE,qBAAqB9xC,QAAQ,qEAAuExrB,EAAU,yBAA2B29C,GAA4B,qCAM/K,IAAIgpB,EAAU5lD,OAAO6lD,YAAYt5C,MAC7Bu5C,EAAcF,EAAU3mE,EACxB88D,EAAaC,aAAY,WACzB,GAAIh8C,OAAO6lD,YAAYt5C,MAAQu5C,EAI3B,OAHAxpE,EAAMypE,mBAAmBJ,GACzBzJ,cAAcH,QACd59D,EAAO8c,GAAiBgB,mCAG5B,IAAI6+B,EAAO73C,EAAUyB,aACjBu1C,EAAgB0rB,EAAO1rB,cAC3B,IAMIa,EAAOb,EAAgBA,EAAcC,SAASY,KAAO73C,EAAUyB,aAEnE,MAAOnE,IACP,IAAIqV,GAAYG,QAAQ+kC,GAAxB,CAGA,IAAI+iB,EAAc5jB,EAAgBA,EAAcC,SAASz6B,KAAOxc,EAAUyB,aAC1E,OAAImlC,GAAUwC,4BAA4BwxB,IAEtCvhE,EAAMypE,mBAAmBJ,GACzBzJ,cAAcH,QACd79D,EAAQ2/D,SAJZ,KAOD/0D,GAAiBK,sBAQ5Bo8D,EAAcxpE,UAAUypE,UAAY,SAAU1L,GAK1C,IAAIx9D,EAAQT,KACZ,OAAO,IAAIoC,SAAQ,SAAUC,EAASC,GAClC,IAAI6nE,EAAc1pE,EAAM2pE,qBACxB1hC,YAAW,WACFyhC,GAILA,EAAYE,IAAMpM,EAClB57D,EAAQ8nE,IAJJ7nE,EAAO,2BAKZ7B,EAAMiiD,uBAUjBgnB,EAAcxpE,UAAU0pE,cAAgB,SAAU3L,GAC9C,IAAIkM,EAAcnqE,KAAKoqE,qBAEvB,OADAD,EAAYE,IAAMpM,EACXkM,GAOXT,EAAcxpE,UAAUkqE,mBAAqB,WACzC,IAAIE,EAAY30B,SAAS40B,cAAc,UAOvC,OANAD,EAAUE,MAAMC,WAAa,SAC7BH,EAAUE,MAAME,SAAW,WAC3BJ,EAAUE,MAAMjL,MAAQ+K,EAAUE,MAAM/K,OAAS,IACjD6K,EAAUE,MAAMG,OAAS,IACzBL,EAAUM,aAAa,UAAW,+CAClCj1B,SAASk1B,qBAAqB,QAAQ,GAAGC,YAAYR,GAC9CA,GAOXZ,EAAcxpE,UAAUgqE,mBAAqB,SAAUJ,GAC/Cn0B,SAAS3wC,OAAS8kE,EAAOiB,YACzBp1B,SAAS3wC,KAAKgmE,YAAYlB,IAG3BJ,EAjJuB,CAkJhClJ,IChJEyK,GAAoC,SAAU5qE,GAE9C,SAAS4qE,EAAmBjlB,EAAQyV,EAAa3xC,EAAe5nB,EAAQw5D,EAAcpZ,EAAkByX,EAAOlwC,EAAmB8xC,EAAsBpoD,GACpJ,IAAI9S,EAAQJ,EAAOM,KAAKX,KAAMgmD,EAAQyV,EAAa3xC,EAAe5nB,EAAQw5D,EAAcpZ,EAAkBz4B,EAAmB8xC,EAAsBpoD,IAAkBvT,KAErK,OADAS,EAAMs5D,MAAQA,EACPt5D,EAgHX,OApHApB,EAAU4rE,EAAoB5qE,GAU9B4qE,EAAmB/qE,UAAU2yD,aAAe,SAAU1wD,GAClD,OAAO6B,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIkrE,EAAyBC,EAAelvB,EAAwBkrB,EAAYhkD,EAChF,OAAOpe,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAQD,GAPArF,KAAKkC,OAAOmnB,QAAQ,+BACpB6hD,EAA0BlrE,KAAK6pB,kBAAkBqB,iBAAiBrnB,EAAkBunE,+BAAgCjpE,EAAQoR,eAExHwG,GAAYG,QAAQ/X,EAAQqyC,YAAcz6B,GAAYG,QAAQ/X,EAAQsyC,QAAUtyC,EAAQo0B,SAAWxc,GAAYG,QAAQ/X,EAAQo0B,QAAQ1B,YACvI70B,KAAKkC,OAAO0sB,QAAQ,uGAGpBzsB,EAAQ2kD,QAAU3kD,EAAQ2kD,SAAWp9C,EAAYI,KAIjD,MAHAohE,EAAwBp/C,eAAe,CACnCC,SAAS,IAEP3M,GAAiBwB,6BAA6Bze,EAAQ2kD,QAEhE,MAAO,CAAC,EAAa9mD,KAAK09D,+BAA+B58D,EAASA,EAAS,GAAIqB,GAAU,CAAE2kD,OAAQp9C,EAAYI,OAASiD,GAAgBs+D,SAC5I,KAAK,EACDF,EAAgBxvD,EAAGrW,OACnBtF,KAAKqxC,eAAe+F,mBAAmB+zB,EAAc9+B,MAAO8+B,EAAcnzC,MAAOmzC,EAAc37C,UAAW27C,EAAc32B,WAAaptC,EAAUyB,aAAcsiE,EAAc50C,SAAW,MACtL0lB,EAAyBj8C,KAAKi8D,iCAAiCj8D,KAAK+5D,OACpEp+C,EAAGtW,MAAQ,EACf,KAAK,EAED,OADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAahG,KAAK68D,qBAAqB5gB,EAAwBkvB,EAAc37C,UAAW27C,EAAc7uB,oBAClH,KAAK,EAGD,OAFA6qB,EAAaxrD,EAAGrW,OAChBtF,KAAKkC,OAAOmnB,QAAQ,4BACb,CAAC,EAAarpB,KAAKsrE,kBAAkBnE,EAAYgE,GAAermE,MAAK,SAAUF,GAK9E,OAJAsmE,EAAwBp/C,eAAe,CACnCC,SAAS,EACTumC,WAAW,IAER1tD,MAEnB,KAAK,EAAG,MAAO,CAAC,EAAc+W,EAAGrW,QACjC,KAAK,EAUD,MATA6d,EAAMxH,EAAGrW,OACL6d,aAAenQ,IACfmQ,EAAI7P,iBAAiBtT,KAAKuT,eAE9B0oC,EAAuB2e,mBAAmBz3C,GAC1CnjB,KAAKqxC,eAAe6G,oBAAoBizB,EAAc9+B,OACtD6+B,EAAwBp/C,eAAe,CACnCC,SAAS,IAEP5I,EACV,KAAK,EAAG,MAAO,CAAC,WAQhC8nD,EAAmB/qE,UAAU4jE,OAAS,WAElC,OAAO1hE,QAAQE,OAAO8c,GAAiBsB,uCAQ3CuqD,EAAmB/qE,UAAUorE,kBAAoB,SAAUnE,EAAYgE,GACnE,OAAOnnE,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIy4C,EAAiB4uB,EAAakE,EAAeC,EAAW5nD,EAAMsvC,EAAc7mB,EAAOo7B,EAAyB/6B,EAC5GjsC,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAAG,MAAO,CAAC,EAAarF,KAAKu8D,mCAAmC4O,IACrE,KAAK,EAED,OADA1yB,EAAkB98B,EAAGrW,OACd,CAAC,EAAa6hE,EAAWzU,eAAe5xD,EAASA,EAAS,GAAIqqE,GAAgB,CAAE3W,aAAcuQ,GAAqB6B,kBAAkB5mE,KAAKgmD,OAAQhmD,KAAKkC,OAAQlC,KAAK27D,qBAAsBwP,EAAcvlC,0BACnN,KAAK,EAGD,OAFAyhC,EAAc1rD,EAAGrW,OACjBimE,EAAgB,IAAI7B,GAAcvC,EAAYnnE,KAAKqxC,eAAgBoH,EAAiBz4C,KAAKkC,OAAQlC,KAAKgmD,OAAOzE,OAAOmB,mBAC7G,CAAC,EAAa6oB,EAAc1J,oBAAoBwF,IAC3D,KAAK,EAED,OADAmE,EAAY7vD,EAAGrW,OACR,CAAC,EAAaimE,EAAc1B,qBAAqB2B,EAAWxrE,KAAKgmD,OAAOzE,OAAOkB,oBAC1F,KAAK,EAID,GAHA7+B,EAAOjI,EAAGrW,OACV4tD,EAAellB,GAAUqC,oBAAoBzsB,GAC7CyoB,EAAQrsC,KAAKk9D,gCAAgChK,EAAcnmD,GAAgBs+D,OAAQ5yB,EAAgBllC,eAC/F2/C,EAAa7+B,UAAW,CAExB,GADAr0B,KAAKkC,OAAOmnB,QAAQ,oDACfrpB,KAAK27D,qBACN,MAAMv8C,GAAiB+C,4CAI3B,OAFAslD,EAA0B,IAAI3E,GAAwB9iE,KAAKgmD,OAAQhmD,KAAKqxC,eAAgBrxC,KAAK8pB,cAAe9pB,KAAKkC,OAAQlC,KAAK07D,aAAc17D,KAAKsiD,iBAAkBtiD,KAAK+5D,MAAO/5D,KAAK6pB,kBAAmB7pB,KAAK27D,qBAAsBzI,EAAa7+B,UAAWr0B,KAAKuT,eAC/Pm5B,EAAmBd,GAAcQ,kBAAkBpsC,KAAK8pB,cAAeuiB,GAAOK,iBACvE,CAAC,EAAc+6B,EAAwB5U,aAAa/xD,EAASA,EAAS,GAAIqqE,GAAgB,CAAE9+B,MAAOK,EAAkBoa,OAAQp9C,EAAYI,QAAS+9D,SAAQ,WACzJpnE,EAAM4wC,eAAe6G,oBAAoB7L,OAIrD,MAAO,CAAC,EAAck/B,EAAc3K,2BAA2Bh9C,EAAMyoB,EAAO86B,EAAW33C,UAAWxvB,KAAKqiD,wBAKpH4oB,EArH4B,CAsHrC3O,IC5GEmP,GAAoC,SAAUprE,GAE9C,SAASorE,EAAmB1lB,GACxB,OAAO1lD,EAAOM,KAAKX,KAAM+lD,IAAkB/lD,KAqM/C,OAvMA,EAAUyrE,EAAoBprE,GAI9BorE,EAAmBvrE,UAAU2yD,aAAe,SAAU1wD,GAClD,OAAO,EAAUnC,UAAM,OAAQ,GAAQ,WACnC,IAAImwD,EAAc5sD,EAAUuvD,EAC5B,OAAO,EAAY9yD,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,OADA8qD,EAAetoB,GAAUC,aAClB,CAAC,EAAa9nC,KAAK+yD,oBAAoB5wD,EAASnC,KAAKwvB,YAChE,KAAK,EAID,OAHAjsB,EAAWoY,EAAGrW,OACdwtD,EAAkB,IAAIvD,GAAgBvvD,KAAKgmD,OAAO5K,YAAY7rB,SAAUvvB,KAAKwkD,aAAcxkD,KAAK8oC,YAAa9oC,KAAKkC,OAAQlC,KAAKgmD,OAAO7J,kBAAmBn8C,KAAKgmD,OAAO9J,mBACrK4W,EAAgBlD,sBAAsBrsD,EAASyB,MACxC,CAAC,EAAc8tD,EAAgB7C,0BAA0B1sD,EAASyB,KAAMhF,KAAKwvB,UAAW2gC,EAAchuD,OAAS+jC,OAAWA,GAAW,YAShKulC,EAAmBvrE,UAAUwrE,2BAA6B,SAAUvpE,GAChE,OAAO,EAAUnC,UAAM,OAAQ,GAAQ,WACnC,IAAI2rE,EAAQC,EAAmBC,EAC/B,OAAO,EAAY7rE,MAAM,SAAU2b,GAE/B,IAAKxZ,EACD,MAAM64B,GAAyBgB,+BAGnC,IAAK75B,EAAQo0B,QACT,MAAM/f,GAAgBqC,sCAI1B,GAFA8yD,EAAS3rE,KAAKwkD,aAAahe,kBAAkBrkC,EAAQo0B,QAAQjC,YAAat0B,KAAKgmD,OAAO5K,YAAY7rB,UAE9Fo8C,EACA,IACI,MAAO,CAAC,EAAc3rE,KAAK8rE,mCAAmC3pE,GAAS,IAE3E,MAAOuC,GAIH,GAHAknE,EAAoBlnE,aAAauuB,IAAgCvuB,EAAEuO,YAAc+f,GAAoCve,mBAAmB3B,KACxI+4D,EAAkCnnE,aAAamuB,IAAenuB,EAAEuO,YAAc3G,EAAOC,qBAAuB7H,EAAE0O,WAAa9G,EAAOE,sBAE9Ho/D,GAAqBC,EACrB,MAAO,CAAC,EAAc7rE,KAAK8rE,mCAAmC3pE,GAAS,IAIvE,MAAMuC,EAKlB,MAAO,CAAC,EAAc1E,KAAK8rE,mCAAmC3pE,GAAS,WAQnFspE,EAAmBvrE,UAAU4rE,mCAAqC,SAAU3pE,EAAS0vD,GACjF,OAAO,EAAU7xD,UAAM,OAAQ,GAAQ,WACnC,IAAI8gC,EAAcirC,EAClB,OAAO,EAAY/rE,MAAM,SAAU2b,GAG/B,GAFAmlB,EAAe9gC,KAAKwkD,aAAanf,0BAA0BrlC,KAAKgmD,OAAO5K,YAAY7rB,SAAUptB,EAAQo0B,QAASs7B,IAEzG/wB,EACD,MAAM7N,GAA6BO,2BAMvC,OAJAu4C,EAAsB,EAAS,EAAS,GAAI5pE,GAAU,CAAE2+B,aAAcA,EAAaP,OAAQqF,qBAAsBzjC,EAAQyjC,sBAAwB36B,EAAqBsuB,OAAQge,cAAe,CACrLrW,WAAY/+B,EAAQo0B,QAAQ1C,cAC5B3G,KAAMgH,GAAkBsjB,mBAEzB,CAAC,EAAcx3C,KAAK6yD,aAAakZ,WASpDN,EAAmBvrE,UAAU6yD,oBAAsB,SAAU5wD,EAASqtB,GAClE,OAAO,EAAUxvB,UAAM,OAAQ,GAAQ,WACnC,IAAIuzD,EAAaC,EAAiB5wD,EAAS0hD,EAAYntC,EACvD,OAAO,EAAYnX,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAAG,MAAO,CAAC,EAAarF,KAAKyzD,uBAAuBtxD,IACzD,KAAK,EAgBD,OAfAoxD,EAAc53C,EAAGrW,OACjBkuD,EAAkBxzD,KAAK0zD,2BAA2BvxD,GAClDS,EAAU5C,KAAKkmD,0BAA0B/jD,EAAQo1C,eACjD+M,EAAa,CACT/0B,SAAUvvB,KAAKgmD,OAAO5K,YAAY7rB,SAClCC,UAAWA,EAAU4iC,mBACrBvkD,OAAQ1L,EAAQ0L,OAChB6oB,OAAQv0B,EAAQu0B,OAChBkP,qBAAsBzjC,EAAQyjC,qBAC9Bja,sBAAuBxpB,EAAQwpB,sBAC/BE,mBAAoB1pB,EAAQ0pB,mBAC5B65B,UAAWvjD,EAAQujD,UACnB5f,OAAQ3jC,EAAQ2jC,QAEpB3uB,EAAW62B,GAAUc,kBAAkBtf,EAAUq2B,cAAe2N,GACzD,CAAC,EAAcxzD,KAAKsmD,2BAA2BnvC,EAAUo8C,EAAa3wD,EAAS0hD,YAS1GmnB,EAAmBvrE,UAAUwzD,2BAA6B,SAAUvxD,GAChE,IAAIwxD,EAAmB,IAAIpM,GAI3B,OAHIplD,EAAQyxD,sBACRD,EAAiBtH,wBAAwBlqD,EAAQyxD,sBAE9CD,EAAiBhG,qBAM5B8d,EAAmBvrE,UAAUuzD,uBAAyB,SAAUtxD,GAC5D,OAAO,EAAUnC,UAAM,OAAQ,GAAQ,WACnC,IAAI2zD,EAAkBpgD,EAAeonC,EAAiBwX,EAAmBvF,EAAW92B,EACpF,OAAO,EAAY91B,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAuBD,OAtBAsuD,EAAmB,IAAIpM,GACvBoM,EAAiBtL,YAAYroD,KAAKgmD,OAAO5K,YAAY7rB,UACrDokC,EAAiB1L,UAAU9lD,EAAQ0L,QACnC8lD,EAAiB1H,aAAahiD,EAAU+hE,qBACxCrY,EAAiBvH,gBACjBuH,EAAiB/J,eAAe5pD,KAAKgmD,OAAOjK,aAC5C4X,EAAiB1J,wBAAwBjqD,KAAKgmD,OAAOhK,UAAUf,aAC/D0Y,EAAiBrG,gBACbttD,KAAKi8C,wBACL0X,EAAiB1G,mBAAmBjtD,KAAKi8C,wBAE7C1oC,EAAgBpR,EAAQoR,eAAiBvT,KAAKgmD,OAAOnK,gBAAgBxxB,gBACrEspC,EAAiBjK,iBAAiBn2C,GAClCogD,EAAiBzI,gBAAgB/oD,EAAQ2+B,cACrC9gC,KAAKgmD,OAAOlK,kBAAkBpB,cAC9BiZ,EAAiBtI,gBAAgBrrD,KAAKgmD,OAAOlK,kBAAkBpB,cAE/D16C,KAAKgmD,OAAOlK,kBAAkBnB,kBAC9BA,EAAkB36C,KAAKgmD,OAAOlK,kBAAkBnB,gBAChDgZ,EAAiBpI,mBAAmB5Q,EAAgBkZ,WACpDF,EAAiBlI,uBAAuB9Q,EAAgBmZ,gBAEtD3xD,EAAQyjC,uBAAyB36B,EAAqB05B,IAAa,CAAC,EAAa,IACvFwtB,EAAoB,IAAIlE,GAAkBjuD,KAAK8oC,aACxC,CAAC,EAAaqpB,EAAkBjE,YAAY/rD,KACvD,KAAK,EAGD,OAFAyqD,EAAYjxC,EAAGrW,OACfquD,EAAiBhH,YAAYC,GACtB,CAAC,EAAa,GACzB,KAAK,EACD,GAAIzqD,EAAQyjC,uBAAyB36B,EAAqBk4B,IAAK,CAC3D,IAAIhhC,EAAQ6xD,OAIR,MAAMh5B,GAAyBuB,2BAH/Bo3B,EAAiB5G,UAAU5qD,EAAQ6xD,QAM3Cr4C,EAAGtW,MAAQ,EACf,KAAK,EAID,KAHK0U,GAAYa,WAAWzY,EAAQu0B,SAAW12B,KAAKgmD,OAAO5K,YAAYiB,oBAAsBr8C,KAAKgmD,OAAO5K,YAAYiB,mBAAmBh7C,OAAS,IAC7IsyD,EAAiBpK,UAAUpnD,EAAQu0B,OAAQ12B,KAAKgmD,OAAO5K,YAAYiB,oBAEnEr8C,KAAKgmD,OAAO1K,cAActB,sBAAwB73C,EAAQo1C,cAC1D,OAAQp1C,EAAQo1C,cAAcrqB,MAC1B,KAAKgH,GAAkBsjB,gBACnB,IACI1hB,EAAalC,GAAiCzxB,EAAQo1C,cAAcrW,YACpEyyB,EAAiBvK,UAAUtzB,GAE/B,MAAOpxB,GACH1E,KAAKkC,OAAOmnB,QAAQ,mDAAqD3kB,GAE7E,MACJ,KAAKwvB,GAAkBwjB,IACnBic,EAAiBxK,UAAUhnD,EAAQo1C,cAAcrW,YACjD,MAGZ,MAAO,CAAC,EAAcyyB,EAAiBhG,6BAKpD8d,EAxM4B,CAyMrC3lB,ICtNEmmB,GAAqC,SAAU5rE,GAE/C,SAAS4rE,IACL,OAAkB,OAAX5rE,GAAmBA,EAAO0D,MAAM/D,KAAMoB,YAAcpB,KAuE/D,OAzEAX,EAAU4sE,EAAqB5rE,GAQ/B4rE,EAAoB/rE,UAAU2yD,aAAe,SAAU1wD,GACnD,OAAO6B,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAImrE,EAAexvD,EAAIuvD,EAAyBjvB,EAAwBiwB,EACpEzrE,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAUirB,GAC/B,OAAQA,EAAG5lB,OACP,KAAK,EAED,OADAsW,EAAK,CAAC7a,EAAS,GAAIqB,IACZ,CAAC,EAAanC,KAAK67D,sBAAsB15D,IACpD,KAAK,EAID,OAHAgpE,EAAgBrqE,EAASiD,WAAM,EAAQ4X,EAAGnV,OAAO,CAACykB,EAAG3lB,UACrD4lE,EAA0BlrE,KAAK6pB,kBAAkBqB,iBAAiBrnB,EAAkBsoE,gCAAiChB,EAAc53D,eACnI0oC,EAAyBj8C,KAAKi8D,iCAAiCnvD,GAAMg4D,+BAC9D,CAAC,EAAa9kE,KAAKosE,yBAAyBnwB,EAAwBkvB,EAAc37C,UAAW27C,EAAc7uB,oBACtH,KAAK,EAID,OAHA4vB,EAAqBjhD,EAAG3lB,OACxBtF,KAAKkC,OAAOmnB,QAAQ,gCAEb,CAAC,EAAc6iD,EAAmBR,2BAA2BP,GAC3DrmE,MAAK,SAAUF,GAKhB,OAJAsmE,EAAwBp/C,eAAe,CACnCC,SAAS,EACTumC,UAAW1tD,EAAO0tD,YAEf1tD,KAEN64D,OAAM,SAAU/4D,GAQjB,MAPIA,aAAasO,IACbtO,EAAE4O,iBAAiB7S,EAAM8S,eAE7B0oC,EAAuB2e,mBAAmBl2D,GAC1CwmE,EAAwBp/C,eAAe,CACnCC,SAAS,IAEPrnB,cASlCunE,EAAoB/rE,UAAU4jE,OAAS,WAEnC,OAAO1hE,QAAQE,OAAO8c,GAAiBsB,uCAO3CurD,EAAoB/rE,UAAUksE,yBAA2B,SAAUnwB,EAAwByd,EAAcpd,GACrG,OAAOt4C,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI+8D,EACJ,OAAOh4D,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAAG,MAAO,CAAC,EAAarF,KAAKg9D,uBAAuB/gB,EAAwByd,EAAcpd,IAC/F,KAAK,EAED,OADAygB,EAAephD,EAAGrW,OACX,CAAC,EAAc,IAAImmE,GAAmB1O,YAK1DkP,EA1E6B,CA2EtC3P,IC3EE+P,GAA4B,WAC5B,SAASA,EAAWtmB,EAAeumB,EAASpqE,EAAQuM,GAChDzO,KAAK6/C,qBAAyC,qBAAX17B,OACnCnkB,KAAKgmD,OAASD,EACd/lD,KAAKssE,QAAUA,EACftsE,KAAKkC,OAASA,EACdlC,KAAKyO,UAAYA,EAsGrB,OA7FA49D,EAAWnsE,UAAUqsE,mBAAqB,SAAUpqE,EAASoB,EAAU3B,GAEnE,GADA5B,KAAKkC,OAAO4sB,KAAK,2CACZvrB,EAASitD,SACV,MAAMpxC,GAAiBqC,6BAA6B,oDAExD,GAAItf,EAAQo0B,QACRv2B,KAAKwsE,YAAYjpE,EAASitD,SAAUruD,EAAQo0B,QAAQ1C,cAAe1xB,EAAQo0B,QAAQjC,YAAanyB,EAAQo0B,QAAQ5B,SAAU/yB,GAC1H5B,KAAKysE,gBAAgBtqE,EAASoB,EAAUpB,EAAQo0B,QAAQ1C,cAAe1xB,EAAQo0B,QAAQjC,YAAanyB,EAAQo0B,QAAQ5B,SAAU/yB,OAE7H,KAAIO,EAAQqtB,UAyBb,MAAMpQ,GAAiBqC,6BAA6B,yEAxBpD,IAAIi4C,EAAe5D,GAAU6C,kBAAkBx2D,EAAQqtB,UAAWrtB,EAAQm6C,mBACtEyZ,EAAmB,CACnB/T,aAAchiD,KAAKgmD,OAAO5E,KAAKY,aAC/BN,iBAAkB1hD,KAAKgmD,OAAO5E,KAAKM,iBACnCC,uBAAwB3hD,KAAKgmD,OAAO5E,KAAKO,uBACzCC,kBAAmB5hD,KAAKgmD,OAAO5E,KAAKQ,mBAEpCpyB,EAAY,IAAIsmC,GAAU4D,EAAc15D,KAAKgmD,OAAOzE,OAAOc,cAAeriD,KAAKssE,QAASvW,GAE5F,GAAIn0D,EAAQk0B,WACR91B,KAAKkC,OAAOgtB,MAAM,2CAClBlvB,KAAKwsE,YAAYjpE,EAASitD,SAAU5uD,EAAQk0B,WAAYtG,EAAU2nC,gBAAiB3nC,EAAUurB,OAAQn5C,GACrG5B,KAAKysE,gBAAgBtqE,EAASoB,EAAU3B,EAAQk0B,WAAYtG,EAAU2nC,gBAAiB3nC,EAAUurB,OAAQn5C,OAExG,KAAI2B,EAASosD,YAMd,MAAMvwC,GAAiBqC,6BAA6B,yDALpDzhB,KAAKkC,OAAOgtB,MAAM,4CAClBlvB,KAAKwsE,YAAYjpE,EAASitD,SAAUjtD,EAASosD,YAAangC,EAAU2nC,gBAAiB3nC,EAAUurB,OAAQn5C,GACvG5B,KAAKysE,gBAAgBtqE,EAASoB,EAAUA,EAASosD,YAAangC,EAAU2nC,gBAAiB3nC,EAAUurB,OAAQn5C,MAkBvHyqE,EAAWnsE,UAAUssE,YAAc,SAAUz2C,EAASlC,EAAeS,EAAaK,EAAU/yB,GACxF,IAAI+lC,EAAgBF,GAAcC,oBAAoB7T,EAAeS,EAAayB,EAAS/1B,KAAKgmD,OAAO5E,KAAK7xB,SAAUoF,GAClH+3C,EAAc,IAAIttC,GAAUrJ,EAAS/1B,KAAKyO,WAC1C0xB,EAAgBv+B,EAAQk0B,WACxB3B,GAAc0B,cAAcj0B,EAAQk0B,WAAYjC,EAAe64C,OAAaxmC,OAAWA,OAAWA,OAAWA,EAAW5R,GACxHH,GAAc6C,qBAAqBnD,EAAe64C,OAAaxmC,OAAWA,OAAWA,OAAWA,EAAW5R,GAC/G,IAAIt0B,KAAK6/C,qBAML,MAAMzgC,GAAiBqC,6BAA6B,wEALpDzhB,KAAKkC,OAAOmnB,QAAQ,iCACpBrpB,KAAKssE,QAAQ5rC,WAAWP,GACxBngC,KAAKssE,QAAQ3rC,qBAAqBgH,IAgB1C0kC,EAAWnsE,UAAUusE,gBAAkB,SAAUtqE,EAASoB,EAAUswB,EAAeS,EAAaK,EAAU/yB,GACtG,GAAK2B,EAASytD,aAAd,CAIA,IAAKztD,EAAS4tD,WACV,MAAM/xC,GAAiBqC,6BAA6B,4DAExD,IAAK7f,EAAQunC,kBACT,MAAM/pB,GAAiBqC,6BAA6B,6DAExD,IAAI5T,EAAS,IAAIgvB,GAAS16B,EAAQ0L,QAAQsxB,cACtC8I,EAAY1kC,EAAS4tD,WACrBhoB,EAAoBvnC,EAAQunC,kBAC5B2kB,EAAoBnlB,GAAkBC,wBAAwB/U,EAAeS,EAAa/wB,EAASytD,aAAchxD,KAAKgmD,OAAO5E,KAAK7xB,SAAUoF,EAAU9mB,EAAQo6B,EAAWkB,EAAmBnpC,KAAKyO,WACrM,IAAIzO,KAAK6/C,qBAKL,MAAMzgC,GAAiBqC,6BAA6B,wEAJpDzhB,KAAKkC,OAAOmnB,QAAQ,qCACpBrpB,KAAKssE,QAAQzqC,yBAAyBisB,QAftC9tD,KAAKkC,OAAOmnB,QAAQ,sDAqBrBgjD,EA5GoB,GCI3BM,GAAkC,SAAUtsE,GAE5C,SAASssE,EAAiB5mB,GACtB,OAAO1lD,EAAOM,KAAKX,KAAM+lD,IAAkB/lD,KAwG/C,OA1GA,EAAU2sE,EAAkBtsE,GAS5BssE,EAAiBzsE,UAAU2yD,aAAe,SAAU1wD,GAChD,OAAO,EAAUnC,UAAM,OAAQ,GAAQ,WACnC,IAAImjB,EAAK+oD,EACT,OAAO,EAAYlsE,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,OADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAahG,KAAK4sE,mBAAmBzqE,IACjD,KAAK,EAAG,MAAO,CAAC,EAAcwZ,EAAGrW,QACjC,KAAK,EAED,GADA6d,EAAMxH,EAAGrW,OACL6d,aAAe3M,IAAmB2M,EAAIlQ,YAAcS,GAAuBsC,qBAAqBlD,KAEhG,OADAo5D,EAAqB,IAAIT,GAAmBzrE,KAAKgmD,QAC1C,CAAC,EAAckmB,EAAmBR,2BAA2BvpE,IAGpE,MAAMghB,EAEd,KAAK,EAAG,MAAO,CAAC,WAShCwpD,EAAiBzsE,UAAU0sE,mBAAqB,SAAUzqE,GACtD,IAAIwZ,EAAIsP,EAAIkL,EAAIC,EAChB,OAAO,EAAUp2B,UAAM,OAAQ,GAAQ,WACnC,IAAIs0B,EAAamM,EACjB,OAAO,EAAYzgC,MAAM,SAAUq2B,GAC/B,OAAQA,EAAGhxB,OACP,KAAK,EAED,IAAKlD,EACD,MAAM64B,GAAyBgB,+BAEnC,GAAI75B,EAAQ+5D,aAIR,MAFuC,QAAtCvgD,EAAK3b,KAAKi8C,8BAA2C,IAAPtgC,GAAyBA,EAAG4/C,gBAAgBvvD,EAAa6gE,eACxG7sE,KAAKkC,OAAO4sB,KAAK,sFACXtY,GAAgBiD,6BAG1B,IAAKtX,EAAQo0B,QACT,MAAM/f,GAAgBqC,sCAI1B,GAFAyb,EAAcnyB,EAAQqtB,WAAaxvB,KAAKwvB,UAAUiH,oBAClDgK,EAAczgC,KAAKwkD,aAAa1f,gBAAgB3iC,EAAQo0B,QAASv2B,KAAKgmD,OAAO5K,YAAY7rB,SAAUptB,EAASmyB,IACvGmM,EAAYG,YAIb,MAFuC,QAAtC3V,EAAKjrB,KAAKi8C,8BAA2C,IAAPhxB,GAAyBA,EAAGswC,gBAAgBvvD,EAAa8gE,wBACxG9sE,KAAKkC,OAAO4sB,KAAK,kGACXtY,GAAgBiD,6BAErB,GAAIouB,GAAUS,mBAAmB7H,EAAYG,YAAY2H,WAC1DV,GAAUG,eAAevH,EAAYG,YAAYqH,UAAWjoC,KAAKgmD,OAAO1K,cAAcvB,2BAItF,MAFuC,QAAtC5jB,EAAKn2B,KAAKi8C,8BAA2C,IAAP9lB,GAAyBA,EAAGolC,gBAAgBvvD,EAAa+gE,6BACxG/sE,KAAKkC,OAAO4sB,KAAK,8FAAgG9uB,KAAKgmD,OAAO1K,cAAcvB,0BAA4B,aACjKvjC,GAAgBiD,6BAErB,GAAIgnB,EAAYG,YAAYmI,WAAalB,GAAUG,eAAevH,EAAYG,YAAYmI,UAAW,GAItG,MAFuC,QAAtC3S,EAAKp2B,KAAKi8C,8BAA2C,IAAP7lB,GAAyBA,EAAGmlC,gBAAgBvvD,EAAaghE,6BACxGhtE,KAAKkC,OAAO4sB,KAAK,sGACXtY,GAAgBiD,6BAK1B,OAHIzZ,KAAKgmD,OAAO/J,wBACZj8C,KAAKgmD,OAAO/J,uBAAuB4e,qBAEhC,CAAC,EAAa76D,KAAKitE,8BAA8BxsC,EAAat+B,IACzE,KAAK,EAAG,MAAO,CAAC,EAAck0B,EAAG/wB,gBASjDqnE,EAAiBzsE,UAAU+sE,8BAAgC,SAAUxsC,EAAat+B,GAC9E,OAAO,EAAUnC,UAAM,OAAQ,GAAQ,WACnC,IAAIswD,EACJ,OAAO,EAAYtwD,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAID,OAHIo7B,EAAY1K,UACZu6B,EAAa,IAAIlxB,GAAUqB,EAAY1K,QAAQwK,OAAQvgC,KAAKgmD,OAAOnK,kBAEhE,CAAC,EAAa0T,GAAgBqB,6BAA6B5wD,KAAK8oC,YAAa9oC,KAAKwvB,UAAWiR,GAAa,EAAMt+B,EAASmuD,IACpI,KAAK,EAAG,MAAO,CAAC,EAAc30C,EAAGrW,gBAK1CqnE,EA3G0B,CA4GnC7mB,IChHEonB,GAAmC,SAAU7sE,GAE7C,SAAS6sE,IACL,OAAkB,OAAX7sE,GAAmBA,EAAO0D,MAAM/D,KAAMoB,YAAcpB,KAiF/D,OAnFAX,EAAU6tE,EAAmB7sE,GAQ7B6sE,EAAkBhtE,UAAU2yD,aAAe,SAAUsY,GACjD,OAAOnnE,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIkrE,EAAyBjvB,EAAwBkxB,EAAkBC,EAAaC,EACpF,OAAOtoE,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAGD,OAFA6lE,EAA0BlrE,KAAK6pB,kBAAkBqB,iBAAiBrnB,EAAkBypE,8BAA+BnC,EAAc53D,eACjI0oC,EAAyBj8C,KAAKi8D,iCAAiCnvD,GAAMg4D,+BAC9D,CAAC,EAAa9kE,KAAKutE,uBAAuBtxB,EAAwBkvB,EAAc37C,UAAW27C,EAAc7uB,oBACpH,KAAK,EACD6wB,EAAmBxxD,EAAGrW,OACtBtF,KAAKkC,OAAOmnB,QAAQ,8BACpB1N,EAAGtW,MAAQ,EACf,KAAK,EAED,OADAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAamnE,EAAiBP,mBAAmBzB,IAC7D,KAAK,EAMD,OALAiC,EAAczxD,EAAGrW,OACjB4lE,EAAwBp/C,eAAe,CACnCC,SAAS,EACTumC,WAAW,IAER,CAAC,EAAc8a,GAC1B,KAAK,EAQD,MAPAC,EAAU1xD,EAAGrW,OACT+nE,aAAmBjuD,IAAoBiuD,EAAQp6D,YAAcuJ,GAAwBkC,4BAA4B5L,MACjH9S,KAAKkC,OAAOmnB,QAAQ,wHAExB6hD,EAAwBp/C,eAAe,CACnCC,SAAS,IAEPshD,EACV,KAAK,EAAG,MAAO,CAAC,WAQhCH,EAAkBhtE,UAAU4jE,OAAS,WAEjC,OAAO1hE,QAAQE,OAAO8c,GAAiBsB,uCAO3CwsD,EAAkBhtE,UAAUqtE,uBAAyB,SAAUtxB,EAAwByd,EAAcpd,GACjG,OAAOt4C,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI+8D,EACJ,OAAOh4D,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAAG,MAAO,CAAC,EAAarF,KAAKg9D,uBAAuB/gB,EAAwByd,EAAcpd,IAC/F,KAAK,EAED,OADAygB,EAAephD,EAAGrW,OACX,CAAC,EAAc,IAAIqnE,GAAiB5P,YAK/DmQ,EAAkBhtE,UAAUstE,wBAA0B,SAAUrrE,EAASo0B,GACrE,OAAOvyB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI2b,EACJ,OAAO5W,EAAY/E,MAAM,SAAUirB,GAC/B,OAAQA,EAAG5lB,OACP,KAAK,EAED,OADAsW,EAAK,CAAC7a,EAAS,GAAIqB,IACZ,CAAC,EAAanC,KAAK67D,sBAAsB15D,IACpD,KAAK,EAAG,MAAO,CAAC,EAAcrB,EAASiD,WAAM,EAAQ,CAACjD,EAASiD,WAAM,EAAQ4X,EAAGnV,OAAO,CAACykB,EAAG3lB,UAAW,CAAEixB,QAASA,EAAS2lC,aAAc/5D,EAAQ+5D,eAAgB,cAKzKgR,EApF2B,CAqFpC5Q,ICxFEmR,GAAkD,SAAUptE,GAE5D,SAASotE,EAAiCznB,GACtC,IAAIvlD,EAAQJ,EAAOM,KAAKX,KAAMgmD,IAAWhmD,KAEzC,OADAS,EAAMgyD,oBAAqB,EACpBhyD,EAEX,OANApB,EAAUouE,EAAkCptE,GAMrCotE,EAP0C,CAQnDjb,ICHEkb,GAAsC,SAAUrtE,GAEhD,SAASqtE,EAAqB1nB,EAAQyV,EAAa3xC,EAAe5nB,EAAQw5D,EAAcpZ,EAAkByX,EAAOlwC,EAAmB8xC,EAAsBpoD,GACtJ,IAAI9S,EAAQJ,EAAOM,KAAKX,KAAMgmD,EAAQyV,EAAa3xC,EAAe5nB,EAAQw5D,EAAcpZ,EAAkBz4B,EAAmB8xC,EAAsBpoD,IAAkBvT,KAErK,OADAS,EAAMs5D,MAAQA,EACPt5D,EA2DX,OA/DApB,EAAUquE,EAAsBrtE,GAUhCqtE,EAAqBxtE,UAAU2yD,aAAe,SAAU1wD,GACpD,OAAO6B,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAImrE,EAAelvB,EAAwBxD,EAAiBskB,EAAcoK,EAAYoE,EAAepoD,EACrG,OAAOpe,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAGD,GAFArF,KAAKkC,OAAOgtB,MAAM,6CAEb/sB,EAAQ2Q,KACT,MAAMsM,GAAiByC,8BAE3B,MAAO,CAAC,EAAa7hB,KAAK09D,+BAA+Bv7D,EAAS4K,GAAgBs+D,SACtF,KAAK,EACDF,EAAgBxvD,EAAGrW,OACnBtF,KAAKqxC,eAAe+F,mBAAmB+zB,EAAc9+B,MAAO8+B,EAAcnzC,MAAOmzC,EAAc37C,UAAW27C,EAAc32B,WAAaptC,EAAUyB,aAAcsiE,EAAc50C,SAAW,MACtL0lB,EAAyBj8C,KAAKi8D,iCAAiCj8D,KAAK+5D,OACpEp+C,EAAGtW,MAAQ,EACf,KAAK,EAGD,OAFAsW,EAAGpW,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACtByyC,EAAkB33C,EAASA,EAAS,GAAIqqE,GAAgB,CAAEr4D,KAAM3Q,EAAQ2Q,OACjE,CAAC,EAAa9S,KAAKg9D,uBAAuB/gB,EAAwBkvB,EAAc37C,YAC3F,KAAK,EAMD,OALAutC,EAAephD,EAAGrW,OAClB6hE,EAAa,IAAIsG,GAAiC1Q,GAClD/8D,KAAKkC,OAAOmnB,QAAQ,4BACpBkiD,EAAgB,IAAI7B,GAAcvC,EAAYnnE,KAAKqxC,eAAgBoH,EAAiBz4C,KAAKkC,OAAQlC,KAAKgmD,OAAOzE,OAAOmB,mBAE7G,CAAC,EAAc6oB,EAAcxK,6BAA6B,CACzDjuD,KAAM3Q,EAAQ2Q,KACdk/C,aAAc7vD,EAAQ+zB,YACtB47B,sBAAuB3vD,EAAQ8zB,mBAC/BorC,yBAA0Bl/D,EAAQwrE,uBACnCxC,EAAc9+B,MAAO86B,EAAW33C,UAAWxvB,KAAKqiD,eAAe,IAC1E,KAAK,EAOD,MANAl/B,EAAMxH,EAAGrW,OACL6d,aAAenQ,IACfmQ,EAAI7P,iBAAiBtT,KAAKuT,eAE9B0oC,EAAuB2e,mBAAmBz3C,GAC1CnjB,KAAKqxC,eAAe6G,oBAAoBizB,EAAc9+B,OAChDlpB,EACV,KAAK,EAAG,MAAO,CAAC,WAQhCuqD,EAAqBxtE,UAAU4jE,OAAS,WAEpC,OAAO1hE,QAAQE,OAAO8c,GAAiBsB,uCAEpCgtD,EAhE8B,CAiEvCpR,ICzEEsR,GAA+C,WAC/C,SAASA,EAA8Bv6D,EAAME,GACzCvT,KAAKuT,cAAgBA,EACrBvT,KAAK+vB,YAAc,gBAAkB1c,EAAO,IAAMrT,KAAKuT,cACvDvT,KAAK6tE,UAAY,cAAgBx6D,EAAO,IAAMrT,KAAKuT,cACnDvT,KAAK8tE,QAAU,YAAcz6D,EAAO,IAAMrT,KAAKuT,cAkDnD,OAhDAq6D,EAA8BG,2BAA6B,WACvD,MAAyB,qBAAX5pD,QACoB,qBAAvBA,OAAO6lD,aACqB,oBAA5B7lD,OAAO6lD,YAAYgE,MACY,oBAA/B7pD,OAAO6lD,YAAYiE,SACe,oBAAlC9pD,OAAO6lD,YAAYkE,YACkB,oBAArC/pD,OAAO6lD,YAAYmE,eACqB,oBAAxChqD,OAAO6lD,YAAYoE,kBAElCR,EAA8B1tE,UAAUgrB,iBAAmB,WACvD,GAAI0iD,EAA8BG,6BAC9B,IACI5pD,OAAO6lD,YAAYgE,KAAKhuE,KAAK6tE,WAEjC,MAAOnpE,MAKfkpE,EAA8B1tE,UAAU4rB,eAAiB,WACrD,GAAI8hD,EAA8BG,6BAC9B,IACI5pD,OAAO6lD,YAAYgE,KAAKhuE,KAAK8tE,SAC7B3pD,OAAO6lD,YAAYiE,QAAQjuE,KAAK+vB,YAAa/vB,KAAK6tE,UAAW7tE,KAAK8tE,SAEtE,MAAOppE,MAKfkpE,EAA8B1tE,UAAU4wB,iBAAmB,WACvD,GAAI88C,EAA8BG,6BAC9B,IACI,IAAIM,EAAwBlqD,OAAO6lD,YAAYoE,iBAAiBpuE,KAAK+vB,YAAa,WAClF,GAAIs+C,EAAsBhtE,OAAS,EAAG,CAClC,IAAI8vB,EAAak9C,EAAsB,GAAGC,SAI1C,OAHAnqD,OAAO6lD,YAAYmE,cAAcnuE,KAAK+vB,aACtC5L,OAAO6lD,YAAYkE,WAAWluE,KAAK6tE,WACnC1pD,OAAO6lD,YAAYkE,WAAWluE,KAAK8tE,SAC5B38C,GAGf,MAAOzsB,IAIX,OAAO,MAEJkpE,EAvDuC,GCM9CW,GAA0C,SAAUluE,GAEpD,SAASkuE,EAAyBh/C,EAAUC,EAAWttB,EAAQutB,EAAaC,EAAgBC,GACxF,IAAIlvB,EAAQJ,EAAOM,KAAKX,KAAMuvB,EAAUC,EAAWttB,EAAQutB,EAAaC,EAAgBC,IAAyB3vB,KAGjH,OAFAS,EAAMqpB,cAAgB,IAAIrG,GAAchjB,EAAMyB,QAC9CzB,EAAMwpB,cAAgB,IAAIzb,GAAc/N,EAAMqpB,eACvCrpB,EA6BX,OAlCApB,EAAUkvE,EAA0BluE,GAOpCkuE,EAAyBruE,UAAUiwB,6BAA+B,SAAUJ,EAAaxc,GACrF,OAAO,IAAIq6D,GAA8B79C,EAAaxc,IAE1Dg7D,EAAyBruE,UAAU+vB,WAAa,WAC5C,OAAOjwB,KAAKiqB,cAAcvb,gBAE9B6/D,EAAyBruE,UAAUsuE,kBAAoB,WACnD,IAAI7yD,EACJ,OAA4C,QAAnCA,EAAKg6B,SAAS84B,uBAAoC,IAAP9yD,OAAgB,EAASA,EAAGpN,aAAe,MAUnGggE,EAAyBruE,UAAUgrB,iBAAmB,SAAU6E,EAAaxc,GACzE,IAAI9S,EAAQT,KAER0uE,EAAsB1uE,KAAKwuE,oBAC3Bp+C,EAAkB/vB,EAAOH,UAAUgrB,iBAAiBvqB,KAAKX,KAAM+vB,EAAaxc,GAChF,OAAOzS,EAASA,EAAS,GAAIsvB,GAAkB,CAAEtE,eAAgB,SAAUlF,GACnE,OAAOwJ,EAAgBtE,eAAehrB,EAAS,CAAE4tE,oBAAqBA,EAAqBC,kBAAmBluE,EAAM+tE,qBAAuB5nD,QAGhJ2nD,EAnCkC,CAoC3Cj/C,IClBEs/C,GAAmC,WAsBnC,SAASA,EAAkB7oB,GAMvB/lD,KAAK6/C,qBAAyC,qBAAX17B,OAEnCnkB,KAAKgmD,OAAS9E,GAAmB6E,EAAe/lD,KAAK6/C,sBACrD7/C,KAAKggD,aAAc,EAEnBhgD,KAAKkC,OAAS,IAAIsrB,GAAOxtB,KAAKgmD,OAAOzE,OAAO9zB,cAAe,GAAM,IAEjEztB,KAAKqiD,cAAgBriD,KAAKgmD,OAAOzE,OAAOc,cAExCriD,KAAKsiD,iBAAmBtiD,KAAKgmD,OAAOzE,OAAOe,iBAE3CtiD,KAAK6uE,iBAAmB,IAAInmD,IAE5B1oB,KAAK8uE,wBAA0B,IAAIpmD,IAEnC1oB,KAAK6pB,kBAAoB7pB,KAAK6/C,qBAC1B,IAAI0uB,GAAyBvuE,KAAKgmD,OAAO5E,KAAK7xB,SAAUvvB,KAAKgmD,OAAO5E,KAAK5xB,UAAWxvB,KAAKkC,OAAQ,GAAM,GAASlC,KAAKgmD,OAAOhK,UAAUf,aACtI,IAAIvoB,GAAsB1yB,KAAKgmD,OAAO5E,KAAK7xB,SAAUvvB,KAAKgmD,OAAO5E,KAAK5xB,UAAWxvB,KAAKkC,OAAQ,GAAM,GAASlC,KAAKgmD,OAAOhK,UAAUf,aAEvIj7C,KAAK8pB,cAAgB9pB,KAAK6/C,qBAAuB,IAAIj2B,GAAU5pB,KAAKkC,OAAQlC,KAAK6pB,mBAAqB8I,GACtG3yB,KAAK07D,aAAe,IAAIzY,GAAajjD,KAAKkC,OAAQlC,KAAK8pB,eAEvD9pB,KAAKqxC,eAAiBrxC,KAAK6/C,qBACvB,IAAI5O,GAAoBjxC,KAAKgmD,OAAO5E,KAAK7xB,SAAUvvB,KAAKgmD,OAAOv9B,MAAOzoB,KAAK8pB,cAAe9pB,KAAKkC,QAC/Fy3C,GAA8B35C,KAAKgmD,OAAO5E,KAAK7xB,SAAUvvB,KAAKkC,QAElElC,KAAKqvD,WAAa,IAAIgd,GAAWrsE,KAAKgmD,OAAQhmD,KAAKqxC,eAAgBrxC,KAAKkC,OAAQlC,KAAK8pB,eAw0BzF,OAn0BA8kD,EAAkB1uE,UAAU6uE,WAAa,WACrC,OAAO/qE,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI2b,EAAIwH,EACR,OAAOpe,EAAY/E,MAAM,SAAUirB,GAC/B,OAAQA,EAAG5lB,OACP,KAAK,EAED,GADArF,KAAKkC,OAAOgtB,MAAM,qBACdlvB,KAAKggD,YAEL,OADAhgD,KAAKkC,OAAO0sB,QAAQ,gFACb,CAAC,GAGZ,GADA5uB,KAAK07D,aAAa/X,UAAUZ,GAAUisB,mBACjChvE,KAAKgmD,OAAOzE,OAAOxB,kBAAmB,MAAO,CAAC,EAAa,GAChE90B,EAAG5lB,MAAQ,EACf,KAAK,EAGD,OAFA4lB,EAAG1lB,KAAKS,KAAK,CAAC,EAAG,EAAG,CAAE,IACtB2V,EAAK3b,KACE,CAAC,EAAa+kE,GAAqBc,eAAe7lE,KAAKkC,OAAQlC,KAAKgmD,OAAOzE,OAAOsB,+BAC7F,KAAK,EAED,OADAlnC,EAAGkrD,wBAA0B57C,EAAG3lB,OACzB,CAAC,EAAa,GACzB,KAAK,EAGD,OAFA6d,EAAM8H,EAAG3lB,OACTtF,KAAKkC,OAAOmnB,QAAQlG,GACb,CAAC,EAAa,GACzB,KAAK,EAGD,OAFAnjB,KAAKggD,aAAc,EACnBhgD,KAAK07D,aAAa/X,UAAUZ,GAAUksB,gBAC/B,CAAC,WAa5BL,EAAkB1uE,UAAU2jE,sBAAwB,SAAUjgD,GAC1D,OAAO5f,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIkvE,EAAkBC,EAAqB5rE,EAAUpB,EAAS0sE,EAAkBO,EAAc77D,EAAe87D,EACzG5uE,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAK/B,OAJA3b,KAAKkC,OAAOmnB,QAAQ,gCAEpB60B,GAAa4B,yCAAyC9/C,KAAKgmD,OAAOzE,OAAOxB,kBAAmB//C,KAAKggD,aACjGkvB,EAAmBlvE,KAAK6/B,iBACpB7/B,KAAK6/C,sBACLsvB,EAAsBvrD,GAAQxc,EAAUyB,aACxCtF,EAAWvD,KAAK6uE,iBAAiBntE,IAAIytE,GACb,qBAAb5rE,GACPvD,KAAK07D,aAAa/X,UAAUZ,GAAUusB,sBAAuBviE,GAAgB2yC,UAC7E1/C,KAAKkC,OAAOmnB,QAAQ,iFACpBlnB,EAAUnC,KAAKqxC,eAAe0H,yBAC9B81B,OAAmB,EACf1sE,GAAW4iE,GAAqB6B,kBAAkB5mE,KAAKgmD,OAAQhmD,KAAKkC,OAAQlC,KAAK6mE,0BAA4B7mE,KAAK6mE,0BAA4BjjD,GAC9I5jB,KAAKkC,OAAOgtB,MAAM,gEAClBkgD,EAAe,IAAItM,GAAwB9iE,KAAKgmD,OAAQhmD,KAAKqxC,eAAgBrxC,KAAK8pB,cAAe9pB,KAAKkC,OAAQlC,KAAK07D,aAAc17D,KAAKsiD,iBAAkBx1C,GAAM+2D,sBAAuB7jE,KAAK6pB,kBAAmB7pB,KAAK6mE,wBAAyB1kE,EAAQkyB,UAAWlyB,EAAQoR,eACtQs7D,EAAmBO,EAAavL,0BAGhC7jE,KAAKkC,OAAOgtB,MAAM,yDAClB3b,EAAgBvT,KAAKqxC,eAAeyD,kBAAkBloC,EAAmBmrC,gBAAgB,IAAS3wC,EAAUyB,aAC5GwmE,EAAiBrvE,KAAKuvE,qBAAqBh8D,GAC3Cs7D,EAAmBQ,EAAexL,sBAAsBjgD,IAE5DrgB,EAAWsrE,EAAiB/pE,MAAK,SAAUF,GACvC,GAAIA,EAAQ,CAER,IAAI4qE,EAAcN,EAAiB7tE,OAASZ,EAAMo/B,iBAAiBx+B,OAC/DmuE,GACA/uE,EAAMi7D,aAAa/X,UAAUZ,GAAU0sB,cAAe1iE,GAAgB2yC,SAAU96C,GAChFnE,EAAMyB,OAAOmnB,QAAQ,2DAGrB5oB,EAAMi7D,aAAa/X,UAAUZ,GAAU2sB,sBAAuB3iE,GAAgB2yC,SAAU96C,GACxFnE,EAAMyB,OAAOmnB,QAAQ,kEAI7B,OADA5oB,EAAMi7D,aAAa/X,UAAUZ,GAAU4sB,oBAAqB5iE,GAAgB2yC,UACrE96C,KACR64D,OAAM,SAAU/4D,GASf,MAPIwqE,EAAiB7tE,OAAS,EAC1BZ,EAAMi7D,aAAa/X,UAAUZ,GAAU6sB,sBAAuB7iE,GAAgB2yC,SAAU,KAAMh7C,GAG9FjE,EAAMi7D,aAAa/X,UAAUZ,GAAU8sB,cAAe9iE,GAAgB2yC,SAAU,KAAMh7C,GAE1FjE,EAAMi7D,aAAa/X,UAAUZ,GAAU4sB,oBAAqB5iE,GAAgB2yC,UACtEh7C,KAEV1E,KAAK6uE,iBAAiBlmD,IAAIwmD,EAAqB5rE,IAG/CvD,KAAKkC,OAAOmnB,QAAQ,8FAEjB,CAAC,EAAc9lB,KAE1BvD,KAAKkC,OAAOmnB,QAAQ,+DACb,CAAC,EAAc,cAalCulD,EAAkB1uE,UAAUyjE,qBAAuB,SAAUxhE,GACzD,OAAO6B,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIuT,EAAeu8D,EAAYlrE,EAAQwqE,EAAcC,EACjD5uE,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GA0B/B,OAzBApI,EAAgBvT,KAAK+vE,wBAAwB5tE,GAC7CnC,KAAKkC,OAAOmnB,QAAQ,8BAA+B9V,GACnDvT,KAAKgwE,iCAAiCjjE,GAAgB2yC,UACtDowB,EAAa9vE,KAAK6/B,iBAAiBx+B,OAAS,EACxCyuE,EACA9vE,KAAK07D,aAAa/X,UAAUZ,GAAUktB,oBAAqBljE,GAAgB2yC,SAAUv9C,GAGrFnC,KAAK07D,aAAa/X,UAAUZ,GAAUmtB,YAAanjE,GAAgB2yC,SAAUv9C,GAE7EnC,KAAK6mE,yBAA2B7mE,KAAKmwE,aAAahuE,IAClDitE,EAAe,IAAItM,GAAwB9iE,KAAKgmD,OAAQhmD,KAAKqxC,eAAgBrxC,KAAK8pB,cAAe9pB,KAAKkC,OAAQlC,KAAK07D,aAAc17D,KAAKsiD,iBAAkBx1C,GAAM62D,qBAAsB3jE,KAAK6pB,kBAAmB7pB,KAAK6mE,wBAAyB7mE,KAAKowE,mBAAmBjuE,GAAUA,EAAQoR,eACpR3O,EAASwqE,EAAazL,qBAAqBxhE,GAASs7D,OAAM,SAAU/4D,GAChE,GAAIA,aAAa09D,IAAmB19D,EAAE69D,UAAW,CAC7C9hE,EAAMomE,6BAA0B3gC,EAChC,IAAImpC,EAAiB5uE,EAAM8uE,qBAAqBptE,EAAQoR,eACxD,OAAO87D,EAAexc,aAAa1wD,GAEvC,MAAMuC,OAIV2qE,EAAiBrvE,KAAKuvE,qBAAqBptE,EAAQoR,eACnD3O,EAASyqE,EAAexc,aAAa1wD,IAElC,CAAC,EAAcyC,EAAO64D,OAAM,SAAU/4D,GAQrC,MANIorE,EACArvE,EAAMi7D,aAAa/X,UAAUZ,GAAU6sB,sBAAuB7iE,GAAgB2yC,SAAU,KAAMh7C,GAG9FjE,EAAMi7D,aAAa/X,UAAUZ,GAAU8sB,cAAe9iE,GAAgB2yC,SAAU,KAAMh7C,GAEpFA,aAc1BkqE,EAAkB1uE,UAAUwnE,kBAAoB,SAAUvlE,GACtD,IAAI1B,EAAQT,KACRuT,EAAgBvT,KAAK+vE,wBAAwB5tE,GAC7CkuE,EAAqBrwE,KAAK6pB,kBAAkBqB,iBAAiBrnB,EAAkBysE,kBAAmB/8D,GACtG,IACIvT,KAAKkC,OAAOmnB,QAAQ,2BAA4B9V,GAChDvT,KAAKgwE,iCAAiCjjE,GAAgB+yD,OAE1D,MAAOp7D,GAEH,OAAOtC,QAAQE,OAAOoC,GAG1B,IAOIE,EAPAsqE,EAAmBlvE,KAAK6/B,iBAQ5B,GAPIqvC,EAAiB7tE,OAAS,EAC1BrB,KAAK07D,aAAa/X,UAAUZ,GAAUktB,oBAAqBljE,GAAgB+yD,MAAO39D,GAGlFnC,KAAK07D,aAAa/X,UAAUZ,GAAUmtB,YAAanjE,GAAgB+yD,MAAO39D,GAG1EnC,KAAKmwE,aAAahuE,GAClByC,EAAS5E,KAAKuwE,mBAAmBpuE,EAAS2K,GAAM46D,mBAAmB5iE,MAAK,SAAUvB,GAO9E,OANA9C,EAAM4wC,eAAe4G,0BAAyB,GAC9Co4B,EAAmBvkD,eAAe,CAC9BC,SAAS,EACT23C,gBAAgB,IAEpB2M,EAAmBv/C,mBACZvtB,KACRk6D,OAAM,SAAU/4D,GACf,GAAIA,aAAa09D,IAAmB19D,EAAE69D,UAAW,CAC7C9hE,EAAMomE,6BAA0B3gC,EAChC,IAAIsqC,EAAc/vE,EAAMgwE,kBAAkBtuE,EAAQoR,eAClD,OAAOi9D,EAAY3d,aAAa1wD,GAEpC,MAAMuC,SAGT,CACD,IAAI8rE,EAAcxwE,KAAKywE,kBAAkBtuE,EAAQoR,eACjD3O,EAAS4rE,EAAY3d,aAAa1wD,GAEtC,OAAOyC,EAAOE,MAAK,SAAUF,GAEzB,IAAI4qE,EAAcN,EAAiB7tE,OAASZ,EAAMo/B,iBAAiBx+B,OAWnE,OAVImuE,EACA/uE,EAAMi7D,aAAa/X,UAAUZ,GAAU0sB,cAAe1iE,GAAgB+yD,MAAOl7D,GAG7EnE,EAAMi7D,aAAa/X,UAAUZ,GAAU2sB,sBAAuB3iE,GAAgB+yD,MAAOl7D,GAEzFyrE,EAAmBvkD,eAAe,CAC9BC,SAAS,IAEbskD,EAAmBv/C,mBACZlsB,KACR64D,OAAM,SAAU/4D,GAYf,OAXIwqE,EAAiB7tE,OAAS,EAC1BZ,EAAMi7D,aAAa/X,UAAUZ,GAAU6sB,sBAAuB7iE,GAAgB+yD,MAAO,KAAMp7D,GAG3FjE,EAAMi7D,aAAa/X,UAAUZ,GAAU8sB,cAAe9iE,GAAgB+yD,MAAO,KAAMp7D,GAEvF2rE,EAAmBvkD,eAAe,CAC9BC,SAAS,IAEbskD,EAAmBv/C,mBAEZ1uB,QAAQE,OAAOoC,OAoB9BkqE,EAAkB1uE,UAAU2kE,UAAY,SAAU1iE,GAC9C,OAAO6B,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIuT,EAAe2zD,EAAcwJ,EAAsB9rE,EAAQ+rE,EAC3DlwE,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAsB/B,OArBApI,EAAgBvT,KAAK+vE,wBAAwB5tE,GAC7C+kE,EAAepmE,EAASA,EAAS,GAAIqB,GAAU,CAAE2kD,OAAQp9C,EAAYI,KAAMyJ,cAAeA,IAC1FvT,KAAKgwE,iCAAiCjjE,GAAgBs+D,QACtDqF,EAAuB1wE,KAAK6pB,kBAAkBqB,iBAAiBrnB,EAAkB+sE,UAAWr9D,GAC5FvT,KAAKkC,OAAOmnB,QAAQ,mBAAoB9V,GACxCvT,KAAK07D,aAAa/X,UAAUZ,GAAU8tB,iBAAkB9jE,GAAgBs+D,OAAQnE,GAC5ElnE,KAAKmwE,aAAajJ,GAClBtiE,EAAS5E,KAAKuwE,mBAAmBrJ,EAAcp6D,GAAM+3D,WAAWpH,OAAM,SAAU/4D,GAE5E,GAAIA,aAAa09D,IAAmB19D,EAAE69D,UAAW,CAC7C9hE,EAAMomE,6BAA0B3gC,EAChC,IAAIyqC,EAAqBlwE,EAAMqwE,yBAAyB5J,EAAa3zD,eACrE,OAAOo9D,EAAmB9d,aAAaqU,GAE3C,MAAMxiE,MAIVisE,EAAqB3wE,KAAK8wE,yBAAyB5J,EAAa3zD,eAChE3O,EAAS+rE,EAAmB9d,aAAaqU,IAEtC,CAAC,EAActiE,EAAOE,MAAK,SAAUvB,GAMpC,OALA9C,EAAMi7D,aAAa/X,UAAUZ,GAAUguB,mBAAoBhkE,GAAgBs+D,OAAQ9nE,GACnFmtE,EAAqB5kD,eAAe,CAChCC,SAAS,IAEb2kD,EAAqB5/C,mBACdvtB,KACRk6D,OAAM,SAAU/4D,GAMf,MALAjE,EAAMi7D,aAAa/X,UAAUZ,GAAUiuB,mBAAoBjkE,GAAgBs+D,OAAQ,KAAM3mE,GACzFgsE,EAAqB5kD,eAAe,CAChCC,SAAS,IAEb2kD,EAAqB5/C,mBACfpsB,aAe1BkqE,EAAkB1uE,UAAU+wE,mBAAqB,SAAU9uE,GACvD,OAAO6B,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIuT,EAAe29D,EAAiBC,EAAkB5tE,EAClD9C,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/BpI,EAAgBvT,KAAK+vE,wBAAwB5tE,GAC7CnC,KAAKgwE,iCAAiCjjE,GAAgBs+D,QACtDrrE,KAAKkC,OAAOgtB,MAAM,4BAA6B3b,GAC/CvT,KAAK07D,aAAa/X,UAAUZ,GAAUquB,4BAA6BrkE,GAAgBs+D,OAAQlpE,GAC3F+uE,EAAkBlxE,KAAK6pB,kBAAkBqB,iBAAiBrnB,EAAkBwtE,mBAAoBlvE,EAAQoR,eACxG,IACI,GAAIpR,EAAQ2Q,KAiCR,OAhCAq+D,EAAmBhvE,EAAQ2Q,KAC3BvP,EAAWvD,KAAK8uE,wBAAwBptE,IAAIyvE,GACvC5tE,GAwBDvD,KAAKkC,OAAOmnB,QAAQ,4CAA6ClnB,EAAQoR,eACzE29D,EAAgBplD,eAAe,CAC3BC,SAAS,IAEbmlD,EAAgBlgD,uBA3BhBhxB,KAAKkC,OAAOmnB,QAAQ,4CAA6C9V,GACjEhQ,EAAWvD,KAAKsxE,wBAAwBxwE,EAASA,EAAS,GAAIqB,GAAU,CAAEoR,cAAeA,KACpFzO,MAAK,SAAUF,GAOhB,OANAnE,EAAMi7D,aAAa/X,UAAUZ,GAAUwuB,8BAA+BxkE,GAAgBs+D,OAAQzmE,GAC9FnE,EAAMquE,wBAAwB9sE,OAAOmvE,GACrCD,EAAgBplD,eAAe,CAC3BC,SAAS,IAEbmlD,EAAgBpgD,mBACTlsB,KAEN64D,OAAM,SAAUn3D,GAOjB,MANA7F,EAAMquE,wBAAwB9sE,OAAOmvE,GACrC1wE,EAAMi7D,aAAa/X,UAAUZ,GAAUyuB,8BAA+BzkE,GAAgBs+D,OAAQ,KAAM/kE,GACpG4qE,EAAgBplD,eAAe,CAC3BC,SAAS,IAEbmlD,EAAgBpgD,mBACVxqB,KAEVtG,KAAK8uE,wBAAwBnmD,IAAIwoD,EAAkB5tE,IAShD,CAAC,EAAcA,GAErB,GAAIpB,EAAQuzB,gBAAiB,CAC9B,GAAI11B,KAAKmwE,aAAahuE,EAASA,EAAQuzB,iBACnC,MAAO,CAAC,EAAc11B,KAAKuwE,mBAAmBpuE,EAAS2K,GAAMmkE,mBAAoB9uE,EAAQuzB,iBAAiB+nC,OAAM,SAAU/4D,GAKlH,MAHIA,aAAa09D,IAAmB19D,EAAE69D,YAClC9hE,EAAMomE,6BAA0B3gC,GAE9BxhC,MAId,MAAM0a,GAAiB4C,oDAI3B,MAAM5C,GAAiB0C,+CAG/B,MAAOpd,GAKH,MAJA1E,KAAK07D,aAAa/X,UAAUZ,GAAUyuB,8BAA+BzkE,GAAgBs+D,OAAQ,KAAM3mE,GACnGwsE,EAAgBplD,eAAe,CAC3BC,SAAS,IAEPrnB,EAEV,MAAO,CAAC,UASpBkqE,EAAkB1uE,UAAUoxE,wBAA0B,SAAUnvE,GAC5D,OAAO6B,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIyxE,EAAsBC,EAC1B,OAAO3sE,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAGD,OAFArF,KAAKkC,OAAOgtB,MAAM,iCAAkC/sB,EAAQoR,eAC5Dk+D,EAAuBzxE,KAAK2xE,2BAA2BxvE,EAAQoR,eACxD,CAAC,EAAak+D,EAAqB5e,aAAa1wD,IAC3D,KAAK,EAED,OADAuvE,EAAoB/1D,EAAGrW,OAChB,CAAC,EAAcosE,WAgB1C9C,EAAkB1uE,UAAUwrE,2BAA6B,SAAUvpE,GAC/D,OAAO6B,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI4xE,EAAkBC,EAClBpxE,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAM/B,OAJAuiC,GAAamB,6BACbuyB,EAAmB5xE,KAAK6pB,kBAAkBqB,iBAAiBrnB,EAAkBiuE,2BAA4B3vE,EAAQoR,eACjHvT,KAAK07D,aAAa/X,UAAUZ,GAAUgvB,4BAA6BhlE,GAAgBs+D,OAAQlpE,GAC3F0vE,EAAsB7xE,KAAKgyE,0BAA0B7vE,EAAQoR,eACtD,CAAC,EAAcs+D,EAAoBhf,aAAa1wD,GAC9C2C,MAAK,SAAUF,GAKhB,OAJAgtE,EAAiB9lD,eAAe,CAC5BC,SAAS,EACTumC,UAAW1tD,EAAO0tD,YAEf1tD,KAEN64D,OAAM,SAAU/4D,GACjB,IAAIutE,EAAgBvtE,aAAamuB,GAC7BK,EAA6BxuB,aAAauuB,GAC1Ci/C,EAAuBxtE,EAAEuO,YAAchG,GAAiBV,oBAC5D,GAAI0lE,GAAiBC,IAAwBh/C,EAA4B,CACrEzyB,EAAMyB,OAAOmnB,QAAQ,uEAAwElnB,EAAQoR,eACrG,IAAIo9D,EAAqBlwE,EAAMqwE,yBAAyB3uE,EAAQoR,eAChE,OAAOo9D,EAAmB9d,aAAa1wD,GAClC2C,MAAK,SAAUF,GAKhB,OAJAgtE,EAAiB9lD,eAAe,CAC5BC,SAAS,EACTumC,UAAW1tD,EAAO0tD,YAEf1tD,KAEN64D,OAAM,SAAUn3D,GAIjB,MAHAsrE,EAAiB9lD,eAAe,CAC5BC,SAAS,IAEPzlB,KAMd,MAHAsrE,EAAiB9lD,eAAe,CAC5BC,SAAS,IAEPrnB,aAY1BkqE,EAAkB1uE,UAAU4jE,OAAS,SAAU1Q,GAC3C,OAAOpvD,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIuT,EACJ,OAAOxO,EAAY/E,MAAM,SAAU2b,GAG/B,OAFApI,EAAgBvT,KAAK+vE,wBAAwB3c,GAC7CpzD,KAAKkC,OAAO0sB,QAAQ,mGAAoGrb,GACjH,CAAC,EAAcvT,KAAKmyE,eAAerxE,EAAS,CAAEyS,cAAeA,GAAiB6/C,YASjGwb,EAAkB1uE,UAAUiyE,eAAiB,SAAU/e,GACnD,OAAOpvD,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIuT,EAAe87D,EACnB,OAAOtqE,EAAY/E,MAAM,SAAU2b,GAI/B,OAHApI,EAAgBvT,KAAK+vE,wBAAwB3c,GAC7CpzD,KAAKgwE,iCAAiCjjE,GAAgB2yC,UACtD2vB,EAAiBrvE,KAAKuvE,qBAAqBh8D,GACpC,CAAC,EAAc87D,EAAevL,OAAO1Q,WAQxDwb,EAAkB1uE,UAAU+nE,YAAc,SAAU7U,GAChD,IACI,IAAI7/C,EAAgBvT,KAAK+vE,wBAAwB3c,GACjDpzD,KAAKgwE,iCAAiCjjE,GAAgB+yD,OACtD,IAAI0Q,EAAcxwE,KAAKywE,kBAAkBl9D,GACzC,OAAOi9D,EAAY1M,OAAO1Q,GAE9B,MAAO1uD,GAEH,OAAOtC,QAAQE,OAAOoC,KAW9BkqE,EAAkB1uE,UAAU2/B,eAAiB,WAEzC,OADA7/B,KAAKkC,OAAOmnB,QAAQ,yBACbrpB,KAAK6/C,qBAAuB7/C,KAAKqxC,eAAexR,iBAAmB,IAU9E+uC,EAAkB1uE,UAAUkyE,qBAAuB,SAAUC,GACzD,IAAInyC,EAAclgC,KAAK6/B,iBACvB,OAAK9lB,GAAYG,QAAQm4D,IAAanyC,GAAeA,EAAY7+B,QAC7DrB,KAAKkC,OAAOmnB,QAAQ,8CACpBrpB,KAAKkC,OAAO+sB,WAAW,mDAAqDojD,GACrEnyC,EAAYhkB,QAAO,SAAUo4B,GAAc,OAAOA,EAAWzf,SAASL,gBAAkB69C,EAAS79C,iBAAkB,IAAM,OAGhIx0B,KAAKkC,OAAOmnB,QAAQ,mEACb,OAUfulD,EAAkB1uE,UAAUoyE,mBAAqB,SAAUz+C,GACvD,IAAIqM,EAAclgC,KAAK6/B,iBACvB,OAAK9lB,GAAYG,QAAQ2Z,IAAkBqM,GAAeA,EAAY7+B,QAClErB,KAAKkC,OAAOmnB,QAAQ,mDACpBrpB,KAAKkC,OAAO+sB,WAAW,wDAA0D4E,GAC1EqM,EAAYhkB,QAAO,SAAUo4B,GAAc,OAAOA,EAAWzgB,gBAAkBA,KAAkB,IAAM,OAG9G7zB,KAAKkC,OAAOmnB,QAAQ,iEACb,OAUfulD,EAAkB1uE,UAAUqyE,oBAAsB,SAAUz9C,GACxD,IAAIoL,EAAclgC,KAAK6/B,iBACvB,OAAK9lB,GAAYG,QAAQ4a,IAAmBoL,GAAeA,EAAY7+B,QACnErB,KAAKkC,OAAOmnB,QAAQ,oDACpBrpB,KAAKkC,OAAO+sB,WAAW,yDAA2D6F,GAC3EoL,EAAYhkB,QAAO,SAAUo4B,GAAc,OAAOA,EAAWxf,iBAAmBA,KAAmB,IAAM,OAGhH90B,KAAKkC,OAAOmnB,QAAQ,kEACb,OAOfulD,EAAkB1uE,UAAUm0C,iBAAmB,SAAU9d,GACrDv2B,KAAKqxC,eAAegD,iBAAiB9d,IAKzCq4C,EAAkB1uE,UAAU6zC,iBAAmB,WAC3C,OAAO/zC,KAAKqxC,eAAe0C,oBAQ/B66B,EAAkB1uE,UAAU8vE,iCAAmC,SAAU33B,GAarE,GAZAr4C,KAAKkC,OAAOmnB,QAAQ,4CAEpB60B,GAAa0B,2BAA2B5/C,KAAK6/C,sBAE7C3B,GAAaqB,sBAAsBlH,EAAiBr4C,KAAKgmD,OAAOzE,OAAO/B,uBAEvEtB,GAAamB,6BAEbnB,GAAayB,4BAEbzB,GAAa4B,yCAAyC9/C,KAAKgmD,OAAOzE,OAAOxB,kBAAmB//C,KAAKggD,aAE7F3H,IAAoBtrC,GAAgB2yC,UACpC1/C,KAAKgmD,OAAOv9B,MAAMilB,gBAAkBhhC,EAAqB8b,gBACxDxoB,KAAKgmD,OAAOv9B,MAAMssB,uBACnB,MAAM5H,GAA8BK,yCAEpC6K,IAAoBtrC,GAAgB2yC,UAAYrH,IAAoBtrC,GAAgB+yD,OACpF9/D,KAAKwyE,+BAQb5D,EAAkB1uE,UAAUsyE,4BAA8B,WACtDxyE,KAAKkC,OAAOmnB,QAAQ,kEAEpB60B,GAAamB,6BAEbr/C,KAAKqxC,eAAe4G,0BAAyB,IAMjD22B,EAAkB1uE,UAAUqwE,mBAAqB,SAAUpuE,EAAS43D,EAAO1lC,GACvE,OAAOrwB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIovE,EACJ,OAAOrqE,EAAY/E,MAAM,SAAU2b,GAE/B,GADA3b,KAAKkC,OAAOgtB,MAAM,8BACblvB,KAAK6mE,wBACN,MAAMznD,GAAiB+C,4CAG3B,OADAitD,EAAe,IAAItM,GAAwB9iE,KAAKgmD,OAAQhmD,KAAKqxC,eAAgBrxC,KAAK8pB,cAAe9pB,KAAKkC,OAAQlC,KAAK07D,aAAc17D,KAAKsiD,iBAAkByX,EAAO/5D,KAAK6pB,kBAAmB7pB,KAAK6mE,wBAAyBxyC,GAAar0B,KAAKowE,mBAAmBjuE,GAAUA,EAAQoR,eACrQ,CAAC,EAAc67D,EAAavc,aAAa1wD,WAQ5DysE,EAAkB1uE,UAAUiwE,aAAe,SAAUhuE,EAASkyB,GAE1D,GADAr0B,KAAKkC,OAAOgtB,MAAM,wBACb61C,GAAqB6B,kBAAkB5mE,KAAKgmD,OAAQhmD,KAAKkC,OAAQlC,KAAK6mE,wBAAyB1kE,EAAQyjC,sBAExG,OADA5lC,KAAKkC,OAAOgtB,MAAM,oEACX,EAEX,GAAI/sB,EAAQ2kD,OACR,OAAQ3kD,EAAQ2kD,QACZ,KAAKp9C,EAAYI,KACjB,KAAKJ,EAAYG,QACb7J,KAAKkC,OAAOgtB,MAAM,uDAClB,MACJ,QAEI,OADAlvB,KAAKkC,OAAOgtB,MAAM,0BAA4B/sB,EAAQ2kD,OAAS,yDACxD,EAGnB,SAAKzyB,IAAcr0B,KAAKowE,mBAAmBjuE,MACvCnC,KAAKkC,OAAOgtB,MAAM,oEACX,IASf0/C,EAAkB1uE,UAAUkwE,mBAAqB,SAAUjuE,GACvD,IAAIo0B,EAAUp0B,EAAQo0B,SAAWv2B,KAAKqxC,eAAekD,sBAAsBpyC,EAAQqyC,UAAWryC,EAAQsyC,MAAQz0C,KAAK+zC,mBACnH,OAAOxd,GAAWA,EAAQb,iBAAmB,IAMjDk5C,EAAkB1uE,UAAUuwE,kBAAoB,SAAUl9D,GACtD,OAAO,IAAIuzD,GAAY9mE,KAAKgmD,OAAQhmD,KAAKqxC,eAAgBrxC,KAAK8pB,cAAe9pB,KAAKkC,OAAQlC,KAAK07D,aAAc17D,KAAKsiD,iBAAkBtiD,KAAK6pB,kBAAmB7pB,KAAK6mE,wBAAyBtzD,IAM9Lq7D,EAAkB1uE,UAAUqvE,qBAAuB,SAAUh8D,GACzD,OAAO,IAAIm1D,GAAe1oE,KAAKgmD,OAAQhmD,KAAKqxC,eAAgBrxC,KAAK8pB,cAAe9pB,KAAKkC,OAAQlC,KAAK07D,aAAc17D,KAAKsiD,iBAAkBtiD,KAAK6pB,kBAAmB7pB,KAAK6mE,wBAAyBtzD,IAMjMq7D,EAAkB1uE,UAAU4wE,yBAA2B,SAAUv9D,GAC7D,OAAO,IAAI03D,GAAmBjrE,KAAKgmD,OAAQhmD,KAAKqxC,eAAgBrxC,KAAK8pB,cAAe9pB,KAAKkC,OAAQlC,KAAK07D,aAAc17D,KAAKsiD,iBAAkBx1C,GAAM+3D,UAAW7kE,KAAK6pB,kBAAmB7pB,KAAK6mE,wBAAyBtzD,IAKtNq7D,EAAkB1uE,UAAUuyE,wBAA0B,SAAUl/D,GAC5D,OAAO,IAAI25D,GAAkBltE,KAAKgmD,OAAQhmD,KAAKqxC,eAAgBrxC,KAAK8pB,cAAe9pB,KAAKkC,OAAQlC,KAAK07D,aAAc17D,KAAKsiD,iBAAkBtiD,KAAK6pB,kBAAmB7pB,KAAK6mE,wBAAyBtzD,IAKpMq7D,EAAkB1uE,UAAU8xE,0BAA4B,SAAUz+D,GAC9D,OAAO,IAAI04D,GAAoBjsE,KAAKgmD,OAAQhmD,KAAKqxC,eAAgBrxC,KAAK8pB,cAAe9pB,KAAKkC,OAAQlC,KAAK07D,aAAc17D,KAAKsiD,iBAAkBtiD,KAAK6pB,kBAAmB7pB,KAAK6mE,wBAAyBtzD,IAKtMq7D,EAAkB1uE,UAAUyxE,2BAA6B,SAAUp+D,GAC/D,OAAO,IAAIm6D,GAAqB1tE,KAAKgmD,OAAQhmD,KAAKqxC,eAAgBrxC,KAAK8pB,cAAe9pB,KAAKkC,OAAQlC,KAAK07D,aAAc17D,KAAKsiD,iBAAkBx1C,GAAMmkE,mBAAoBjxE,KAAK6pB,kBAAmB7pB,KAAK6mE,wBAAyBtzD,IAMjOq7D,EAAkB1uE,UAAUojD,iBAAmB,SAAUjxB,GACrD,OAAOryB,KAAK07D,aAAapY,iBAAiBjxB,IAM9Cu8C,EAAkB1uE,UAAUqjD,oBAAsB,SAAUjxB,GACxDtyB,KAAK07D,aAAanY,oBAAoBjxB,IAQ1Cs8C,EAAkB1uE,UAAUkyB,uBAAyB,SAAUC,GAC3D,OAAOryB,KAAK6pB,kBAAkBuI,uBAAuBC,IAQzDu8C,EAAkB1uE,UAAUqyB,0BAA4B,SAAUD,GAC9D,OAAOtyB,KAAK6pB,kBAAkB0I,0BAA0BD,IAK5Ds8C,EAAkB1uE,UAAUsjD,2BAA6B,WACrDxjD,KAAK07D,aAAalY,8BAKtBorB,EAAkB1uE,UAAUujD,4BAA8B,WACtDzjD,KAAK07D,aAAajY,+BAKtBmrB,EAAkB1uE,UAAUwyE,cAAgB,WACxC,OAAO1yE,KAAKqvD,YAKhBuf,EAAkB1uE,UAAUyyE,UAAY,WACpC,OAAO3yE,KAAKkC,QAMhB0sE,EAAkB1uE,UAAU0yE,UAAY,SAAU1wE,GAC9ClC,KAAKkC,OAASA,GAOlB0sE,EAAkB1uE,UAAU2yE,yBAA2B,SAAU/+B,EAAKvtB,GAElEvmB,KAAKqxC,eAAemC,mBAAmBM,EAAKvtB,IAMhDqoD,EAAkB1uE,UAAU4yE,oBAAsB,SAAUxwB,GACxDtiD,KAAKsiD,iBAAmBA,GAK5BssB,EAAkB1uE,UAAU6yE,iBAAmB,WAC3C,OAAO/yE,KAAKgmD,QAShB4oB,EAAkB1uE,UAAU6vE,wBAA0B,SAAU5tE,GAC5D,OAAgB,OAAZA,QAAgC,IAAZA,OAAqB,EAASA,EAAQoR,eACnDpR,EAAQoR,cAEfvT,KAAK6/C,qBACE7/C,KAAK8pB,cAAcO,gBAMvBjjB,EAAUyB,cAEd+lE,EA93B2B,GCXlCoE,GAAyC,SAAU3yE,GAuBnD,SAAS2yE,EAAwBjtB,GAC7B,IAAItlD,EAAQJ,EAAOM,KAAKX,KAAM+lD,IAAkB/lD,KAEhD,OADAS,EAAMwyE,0BAA4B,IAAIvqD,IAC/BjoB,EAmKX,OA5LApB,EAAU2zE,EAAyB3yE,GAoCnC2yE,EAAwB9yE,UAAUgzE,cAAgB,SAAU/wE,GACxD,OAAO6B,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIuT,EACJ,OAAOxO,EAAY/E,MAAM,SAAU2b,GAG/B,OAFApI,EAAgBvT,KAAK+vE,wBAAwB5tE,GAC7CnC,KAAKkC,OAAOmnB,QAAQ,uBAAwB9V,GACrC,CAAC,EAAcvT,KAAK2jE,qBAAqB7iE,EAAS,CAAEyS,cAAeA,GAAkBpR,GAAWyL,aAWnHolE,EAAwB9yE,UAAUizE,WAAa,SAAUhxE,GACrD,IAAIoR,EAAgBvT,KAAK+vE,wBAAwB5tE,GAEjD,OADAnC,KAAKkC,OAAOmnB,QAAQ,oBAAqB9V,GAClCvT,KAAK0nE,kBAAkB5mE,EAAS,CAAEyS,cAAeA,GAAkBpR,GAAWyL,MAQzFolE,EAAwB9yE,UAAUkzE,mBAAqB,SAAUjxE,GAC7D,OAAO6B,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIuT,EAAe8/D,EAAgB98C,EAAS+tB,EAAYgvB,EAAkBC,EAAgBhwE,EACtF9C,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAM/B,GALApI,EAAgBvT,KAAK+vE,wBAAwB5tE,GAC7CkxE,EAAiBrzE,KAAK6pB,kBAAkBqB,iBAAiBrnB,EAAkB2vE,mBAAoBjgE,GAC/FvT,KAAKgwE,iCAAiCjjE,GAAgBs+D,QACtDrrE,KAAKkC,OAAOmnB,QAAQ,4BAA6B9V,GACjDgjB,EAAUp0B,EAAQo0B,SAAWv2B,KAAK+zC,oBAC7Bxd,EACD,MAAMnX,GAAiBuB,uBAgB3B,OAdA2jC,EAAa,CACT/0B,SAAUvvB,KAAKgmD,OAAO5E,KAAK7xB,SAC3BC,UAAWrtB,EAAQqtB,WAAapoB,EAAUyB,aAC1CgF,OAAQ1L,EAAQ0L,OAChB43C,sBAAuBlvB,EAAQ1C,cAC/B6C,OAAQv0B,EAAQu0B,OAChBkP,qBAAsBzjC,EAAQyjC,qBAC9Bja,sBAAuBxpB,EAAQwpB,sBAC/BE,mBAAoB1pB,EAAQ0pB,mBAC5B65B,UAAWvjD,EAAQujD,UACnB5f,OAAQ3jC,EAAQ2jC,QAEpBwtC,EAAmBh5D,KAAKC,UAAU+pC,GAClCivB,EAAiBvzE,KAAKizE,0BAA0BvxE,IAAI4xE,GACtB,qBAAnBC,GACPvzE,KAAKkC,OAAOmnB,QAAQ,uEAAwE9V,GAC5FhQ,EAAWvD,KAAKyzE,wBAAwB3yE,EAASA,EAAS,GAAIqB,GAAU,CAAEoR,cAAeA,IAAkBgjB,GACtGzxB,MAAK,SAAUF,GAOhB,OANAnE,EAAMwyE,0BAA0BjxE,OAAOsxE,GACvCD,EAAevnD,eAAe,CAC1BC,SAAS,EACTumC,UAAW1tD,EAAO0tD,YAEtB+gB,EAAeviD,mBACRlsB,KAEN64D,OAAM,SAAUn3D,GAMjB,MALA7F,EAAMwyE,0BAA0BjxE,OAAOsxE,GACvCD,EAAevnD,eAAe,CAC1BC,SAAS,IAEbsnD,EAAeviD,mBACTxqB,KAEVtG,KAAKizE,0BAA0BtqD,IAAI2qD,EAAkB/vE,GAC9C,CAAC,EAAcA,KAGtBvD,KAAKkC,OAAOmnB,QAAQ,0FAA2F9V,GAC/G8/D,EAAevnD,eAAe,CAC1BC,SAAS,IAGbsnD,EAAeriD,qBACR,CAAC,EAAcuiD,WAWtCP,EAAwB9yE,UAAUuzE,wBAA0B,SAAUtxE,EAASo0B,GAC3E,OAAOvyB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI0zE,EAAsB9uE,EAAQumE,EAAewI,EAAmBC,EAChEnzE,EAAQT,KACZ,OAAO+E,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAGD,OAFArF,KAAK07D,aAAa/X,UAAUZ,GAAUktB,oBAAqBljE,GAAgBs+D,OAAQlpE,GACnFuxE,EAAuB1zE,KAAK6pB,kBAAkBqB,iBAAiBrnB,EAAkBgwE,wBAAyB1xE,EAAQoR,eAC5GwxD,GAAqB6B,kBAAkB5mE,KAAKgmD,OAAQhmD,KAAKkC,OAAQlC,KAAK6mE,wBAAyB1kE,EAAQyjC,uBAAyBrP,EAAQb,iBAC9I11B,KAAKkC,OAAOmnB,QAAQ,yEACpB8hD,EAAgBrqE,EAASA,EAAS,GAAIqB,GAAU,CAAEo0B,QAASA,IAC3D3xB,EAAS5E,KAAKuwE,mBAAmBpF,EAAer+D,GAAMg4D,+BAA+BrH,OAAM,SAAU/4D,GAAK,OAAOV,EAAUvD,OAAO,OAAQ,GAAQ,WAC9I,IAAIkwE,EACJ,OAAO5rE,EAAY/E,MAAM,SAAU2b,GAE/B,GAAIjX,aAAa09D,IAAmB19D,EAAE69D,UAIlC,OAHAviE,KAAKkC,OAAOmnB,QAAQ,8EACpBrpB,KAAK6mE,6BAA0B3gC,EAC/ByqC,EAAqB3wE,KAAK8wE,yBAAyB3uE,EAAQoR,eACpD,CAAC,EAAco9D,EAAmB9d,aAAa1wD,IAE1D,MAAMuC,WAGP,CAAC,EAAa,IAhBkJ,CAAC,EAAa,GAiBzL,KAAK,EAGD,OAFA1E,KAAKkC,OAAOmnB,QAAQ,kEACpBsqD,EAAoB3zE,KAAKyyE,wBAAwBtwE,EAAQoR,eAClD,CAAC,EAAaogE,EAAkBnG,wBAAwBrrE,EAASo0B,IAC5E,KAAK,EACDq9C,EAAkBj4D,EAAGrW,OACrBV,EAAS+uE,EAAkB9gB,aAAa+gB,GAAiBnW,OAAM,WAAc,OAAOz5D,EAAUvD,OAAO,OAAQ,GAAQ,WACjH,OAAOsE,EAAY/E,MAAM,SAAU2b,GAC/B,MAAO,CAAC,EAAc3b,KAAK0rE,2BAA2BkI,aAG9Dj4D,EAAGtW,MAAQ,EACf,KAAK,EAAG,MAAO,CAAC,EAAcT,EAAOE,MAAK,SAAUvB,GAM5C,OALA9C,EAAMi7D,aAAa/X,UAAUZ,GAAU2sB,sBAAuB3iE,GAAgBs+D,OAAQ9nE,GACtFmwE,EAAqB5nD,eAAe,CAChCC,SAAS,EACTumC,UAAW/uD,EAAS+uD,YAEjB/uD,KACRk6D,OAAM,SAAUqW,GAKf,MAJArzE,EAAMi7D,aAAa/X,UAAUZ,GAAU6sB,sBAAuB7iE,GAAgBs+D,OAAQ,KAAMyI,GAC5FJ,EAAqB5nD,eAAe,CAChCC,SAAS,IAEP+nD,cAMvBd,EA7LiC,CA8L1CpE,K;;;;;;;;;;;;;;;;;AC9LF,MAiEMmF,EAAsB,SAAUp5D,GAElC,MAAMq5D,EAAM,GACZ,IAAIn0E,EAAI,EACR,IAAK,IAAIqB,EAAI,EAAGA,EAAIyZ,EAAItZ,OAAQH,IAAK,CACjC,IAAI+yE,EAAIt5D,EAAI7K,WAAW5O,GACnB+yE,EAAI,IACJD,EAAIn0E,KAAOo0E,EAENA,EAAI,MACTD,EAAIn0E,KAAQo0E,GAAK,EAAK,IACtBD,EAAIn0E,KAAY,GAAJo0E,EAAU,KAEA,SAAZ,MAAJA,IACN/yE,EAAI,EAAIyZ,EAAItZ,QACyB,SAAZ,MAAxBsZ,EAAI7K,WAAW5O,EAAI,KAEpB+yE,EAAI,QAAgB,KAAJA,IAAe,KAA6B,KAAtBt5D,EAAI7K,aAAa5O,IACvD8yE,EAAIn0E,KAAQo0E,GAAK,GAAM,IACvBD,EAAIn0E,KAASo0E,GAAK,GAAM,GAAM,IAC9BD,EAAIn0E,KAASo0E,GAAK,EAAK,GAAM,IAC7BD,EAAIn0E,KAAY,GAAJo0E,EAAU,MAGtBD,EAAIn0E,KAAQo0E,GAAK,GAAM,IACvBD,EAAIn0E,KAASo0E,GAAK,EAAK,GAAM,IAC7BD,EAAIn0E,KAAY,GAAJo0E,EAAU,KAG9B,OAAOD,GAQLE,EAAoB,SAAUC,GAEhC,MAAMH,EAAM,GACZ,IAAII,EAAM,EAAGH,EAAI,EACjB,MAAOG,EAAMD,EAAM9yE,OAAQ,CACvB,MAAMgzE,EAAKF,EAAMC,KACjB,GAAIC,EAAK,IACLL,EAAIC,KAAOtjE,OAAOC,aAAayjE,QAE9B,GAAIA,EAAK,KAAOA,EAAK,IAAK,CAC3B,MAAMC,EAAKH,EAAMC,KACjBJ,EAAIC,KAAOtjE,OAAOC,cAAoB,GAALyjE,IAAY,EAAW,GAALC,QAElD,GAAID,EAAK,KAAOA,EAAK,IAAK,CAE3B,MAAMC,EAAKH,EAAMC,KACXG,EAAKJ,EAAMC,KACXI,EAAKL,EAAMC,KACXnlB,IAAY,EAALolB,IAAW,IAAa,GAALC,IAAY,IAAa,GAALC,IAAY,EAAW,GAALC,GAClE,MACJR,EAAIC,KAAOtjE,OAAOC,aAAa,OAAUq+C,GAAK,KAC9C+kB,EAAIC,KAAOtjE,OAAOC,aAAa,OAAc,KAAJq+C,QAExC,CACD,MAAMqlB,EAAKH,EAAMC,KACXG,EAAKJ,EAAMC,KACjBJ,EAAIC,KAAOtjE,OAAOC,cAAoB,GAALyjE,IAAY,IAAa,GAALC,IAAY,EAAW,GAALC,IAG/E,OAAOP,EAAIhuD,KAAK,KAKdyuD,EAAS,CAIXC,eAAgB,KAIhBC,eAAgB,KAKhBC,sBAAuB,KAKvBC,sBAAuB,KAKvBC,kBAAmB,iEAIfC,mBACA,OAAO/0E,KAAK80E,kBAAoB,OAKhCE,2BACA,OAAOh1E,KAAK80E,kBAAoB,OASpCG,mBAAoC,oBAATC,KAU3BC,gBAAgBpkE,EAAOqkE,GACnB,IAAK11E,MAAM21E,QAAQtkE,GACf,MAAMnQ,MAAM,iDAEhBZ,KAAKs1E,QACL,MAAMC,EAAgBH,EAChBp1E,KAAK40E,sBACL50E,KAAK00E,eACLc,EAAS,GACf,IAAK,IAAIt0E,EAAI,EAAGA,EAAI6P,EAAM1P,OAAQH,GAAK,EAAG,CACtC,MAAMu0E,EAAQ1kE,EAAM7P,GACdw0E,EAAYx0E,EAAI,EAAI6P,EAAM1P,OAC1Bs0E,EAAQD,EAAY3kE,EAAM7P,EAAI,GAAK,EACnC00E,EAAY10E,EAAI,EAAI6P,EAAM1P,OAC1Bw0E,EAAQD,EAAY7kE,EAAM7P,EAAI,GAAK,EACnC40E,EAAWL,GAAS,EACpBM,GAAqB,EAARN,IAAiB,EAAME,GAAS,EACnD,IAAIK,GAAqB,GAARL,IAAiB,EAAME,GAAS,EAC7CI,EAAmB,GAARJ,EACVD,IACDK,EAAW,GACNP,IACDM,EAAW,KAGnBR,EAAOxvE,KAAKuvE,EAAcO,GAAWP,EAAcQ,GAAWR,EAAcS,GAAWT,EAAcU,IAEzG,OAAOT,EAAOxvD,KAAK,KAUvBkwD,aAAanlE,EAAOqkE,GAGhB,OAAIp1E,KAAKi1E,qBAAuBG,EACrBe,KAAKplE,GAET/Q,KAAKm1E,gBAAgBpB,EAAoBhjE,GAAQqkE,IAU5DgB,aAAarlE,EAAOqkE,GAGhB,OAAIp1E,KAAKi1E,qBAAuBG,EACrBF,KAAKnkE,GAETmjE,EAAkBl0E,KAAKq2E,wBAAwBtlE,EAAOqkE,KAiBjEiB,wBAAwBtlE,EAAOqkE,GAC3Bp1E,KAAKs1E,QACL,MAAMgB,EAAgBlB,EAChBp1E,KAAK60E,sBACL70E,KAAK20E,eACLa,EAAS,GACf,IAAK,IAAIt0E,EAAI,EAAGA,EAAI6P,EAAM1P,QAAS,CAC/B,MAAMo0E,EAAQa,EAAcvlE,EAAM+kC,OAAO50C,MACnCw0E,EAAYx0E,EAAI6P,EAAM1P,OACtBs0E,EAAQD,EAAYY,EAAcvlE,EAAM+kC,OAAO50C,IAAM,IACzDA,EACF,MAAM00E,EAAY10E,EAAI6P,EAAM1P,OACtBw0E,EAAQD,EAAYU,EAAcvlE,EAAM+kC,OAAO50C,IAAM,KACzDA,EACF,MAAMq1E,EAAYr1E,EAAI6P,EAAM1P,OACtBm1E,EAAQD,EAAYD,EAAcvlE,EAAM+kC,OAAO50C,IAAM,GAE3D,KADEA,EACW,MAATu0E,GAA0B,MAATE,GAA0B,MAATE,GAA0B,MAATW,EACnD,MAAM51E,QAEV,MAAMk1E,EAAYL,GAAS,EAAME,GAAS,EAE1C,GADAH,EAAOxvE,KAAK8vE,GACE,KAAVD,EAAc,CACd,MAAME,EAAaJ,GAAS,EAAK,IAASE,GAAS,EAEnD,GADAL,EAAOxvE,KAAK+vE,GACE,KAAVS,EAAc,CACd,MAAMR,EAAaH,GAAS,EAAK,IAAQW,EACzChB,EAAOxvE,KAAKgwE,KAIxB,OAAOR,GAOXF,QACI,IAAKt1E,KAAK00E,eAAgB,CACtB10E,KAAK00E,eAAiB,GACtB10E,KAAK20E,eAAiB,GACtB30E,KAAK40E,sBAAwB,GAC7B50E,KAAK60E,sBAAwB,GAE7B,IAAK,IAAI3zE,EAAI,EAAGA,EAAIlB,KAAK+0E,aAAa1zE,OAAQH,IAC1ClB,KAAK00E,eAAexzE,GAAKlB,KAAK+0E,aAAaj/B,OAAO50C,GAClDlB,KAAK20E,eAAe30E,KAAK00E,eAAexzE,IAAMA,EAC9ClB,KAAK40E,sBAAsB1zE,GAAKlB,KAAKg1E,qBAAqBl/B,OAAO50C,GACjElB,KAAK60E,sBAAsB70E,KAAK40E,sBAAsB1zE,IAAMA,EAExDA,GAAKlB,KAAK80E,kBAAkBzzE,SAC5BrB,KAAK20E,eAAe30E,KAAKg1E,qBAAqBl/B,OAAO50C,IAAMA,EAC3DlB,KAAK60E,sBAAsB70E,KAAK+0E,aAAaj/B,OAAO50C,IAAMA,MASxEshB,EAAe,SAAU7H,GAC3B,MAAM87D,EAAY1C,EAAoBp5D,GACtC,OAAO85D,EAAOU,gBAAgBsB,GAAW,IAMvCC,EAAgC,SAAU/7D,GAE5C,OAAO6H,EAAa7H,GAAKzJ,QAAQ,MAAO,KAWtCoZ,EAAe,SAAU3P,GAC3B,IACI,OAAO85D,EAAO2B,aAAaz7D,GAAK,GAEpC,MAAOjW,GACHiyE,QAAQrwE,MAAM,wBAAyB5B,GAE3C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2FX,MAAMkyE,EACF32E,cACID,KAAKsC,OAAS,OACdtC,KAAKqC,QAAU,OACfrC,KAAK62E,QAAU,IAAIz0E,SAAQ,CAACC,EAASC,KACjCtC,KAAKqC,QAAUA,EACfrC,KAAKsC,OAASA,KAQtBw0E,aAAazkD,GACT,MAAO,CAAC/rB,EAAOhC,KACPgC,EACAtG,KAAKsC,OAAOgE,GAGZtG,KAAKqC,QAAQiC,GAEO,oBAAb+tB,IAGPryB,KAAK62E,QAAQpZ,OAAM,SAGK,IAApBprC,EAAShxB,OACTgxB,EAAS/rB,GAGT+rB,EAAS/rB,EAAOhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyEpC,SAASyyE,IACL,MAAyB,qBAAdn6B,WAC2B,kBAA3BA,UAAU,aACVA,UAAU,aAGV,GAUf,SAASo6B,IACL,MAA0B,qBAAX7yD,WAGRA,OAAO,YAAcA,OAAO,aAAeA,OAAO,cACrD,oDAAoD7U,KAAKynE,KAsBjE,SAASE,IACL,MAAMC,EAA4B,kBAAXC,OACjBA,OAAOD,QACY,kBAAZE,QACHA,QAAQF,aACRhxC,EACV,MAA0B,kBAAZgxC,QAAuChxC,IAAfgxC,EAAQjxC,GAOlD,SAASoxC,IACL,MAA6B,kBAAdz6B,WAAmD,gBAAzBA,UAAU,WAOvD,SAAS2D,IACL,MAAML,EAAK62B,IACX,OAAO72B,EAAGhlC,QAAQ,UAAY,GAAKglC,EAAGhlC,QAAQ,aAAe,EAwBjE,SAASo8D,IACL,MAA4B,kBAAd3wD,UASlB,SAAS4wD,IACL,OAAO,IAAIn1E,SAAQ,CAACC,EAASC,KACzB,IACI,IAAIk1E,GAAW,EACf,MAAMC,EAAgB,0DAChBt1E,EAAUu1E,KAAK/wD,UAAUlkB,KAAKg1E,GACpCt1E,EAAQw1E,UAAY,KAChBx1E,EAAQyC,OAAOoiB,QAEVwwD,GACDE,KAAK/wD,UAAUuB,eAAeuvD,GAElCp1E,GAAQ,IAEZF,EAAQy1E,gBAAkB,KACtBJ,GAAW,GAEfr1E,EAAQsB,QAAU,KACd,IAAIkY,EACJrZ,GAAiC,QAAxBqZ,EAAKxZ,EAAQmE,aAA0B,IAAPqV,OAAgB,EAASA,EAAGyQ,UAAY,KAGzF,MAAO9lB,GACHhE,EAAOgE;;;;;;;;;;;;;;;;;AAwFnB,MAAMuxE,EAAa,gBAGnB,MAAMC,UAAsBl3E,MACxBX,YAEA6S,EAAMsZ,EAEN2rD,GACIC,MAAM5rD,GACNpsB,KAAK8S,KAAOA,EACZ9S,KAAK+3E,WAAaA,EAElB/3E,KAAKqT,KAAOwkE,EAGZt4E,OAAOC,eAAeQ,KAAM83E,EAAc53E,WAGtCU,MAAMq3E,mBACNr3E,MAAMq3E,kBAAkBj4E,KAAMk4E,EAAah4E,UAAUC,SAIjE,MAAM+3E,EACFj4E,YAAYk4E,EAASC,EAAaluC,GAC9BlqC,KAAKm4E,QAAUA,EACfn4E,KAAKo4E,YAAcA,EACnBp4E,KAAKkqC,OAASA,EAElB/pC,OAAO2S,KAAS1C,GACZ,MAAM2nE,EAAa3nE,EAAK,IAAM,GACxBioE,EAAW,GAAGr4E,KAAKm4E,WAAWrlE,IAC9BwlE,EAAWt4E,KAAKkqC,OAAOp3B,GACvBsZ,EAAUksD,EAAWC,EAAgBD,EAAUP,GAAc,QAE7DS,EAAc,GAAGx4E,KAAKo4E,gBAAgBhsD,MAAYisD,MAClD/xE,EAAQ,IAAIwxE,EAAcO,EAAUG,EAAaT,GACvD,OAAOzxE,GAGf,SAASiyE,EAAgBD,EAAUloE,GAC/B,OAAOkoE,EAASpnE,QAAQunE,GAAS,CAACrzE,EAAGwW,KACjC,MAAMtX,EAAQ8L,EAAKwL,GACnB,OAAgB,MAATtX,EAAgBqM,OAAOrM,GAAS,IAAIsX,SAGnD,MAAM68D,EAAU;;;;;;;;;;;;;;;;GA8KhB,SAASv+D,EAAQY,GACb,IAAK,MAAMc,KAAOd,EACd,GAAIvb,OAAOW,UAAUJ,eAAea,KAAKma,EAAKc,GAC1C,OAAO,EAGf,OAAO,EAcX,SAAS88D,EAAU9xE,EAAGhH,GAClB,GAAIgH,IAAMhH,EACN,OAAO,EAEX,MAAM+4E,EAAQp5E,OAAOsD,KAAK+D,GACpBgyE,EAAQr5E,OAAOsD,KAAKjD,GAC1B,IAAK,MAAM+G,KAAKgyE,EAAO,CACnB,IAAKC,EAAMC,SAASlyE,GAChB,OAAO,EAEX,MAAMmyE,EAAQlyE,EAAED,GACVoyE,EAAQn5E,EAAE+G,GAChB,GAAIqyE,EAASF,IAAUE,EAASD,IAC5B,IAAKL,EAAUI,EAAOC,GAClB,OAAO,OAGV,GAAID,IAAUC,EACf,OAAO,EAGf,IAAK,MAAMpyE,KAAKiyE,EACZ,IAAKD,EAAME,SAASlyE,GAChB,OAAO,EAGf,OAAO,EAEX,SAASqyE,EAASC,GACd,OAAiB,OAAVA,GAAmC,kBAAVA;;;;;;;;;;;;;;;;GAwBpC,SAASC,EAAYC,GACjB,MAAM59D,EAAS,GACf,IAAK,MAAOK,EAAKtX,KAAU/E,OAAO65E,QAAQD,GAClCz5E,MAAM21E,QAAQ/wE,GACdA,EAAMxB,SAAQu2E,IACV99D,EAAOvV,KAAKgL,mBAAmB4K,GAAO,IAAM5K,mBAAmBqoE,OAInE99D,EAAOvV,KAAKgL,mBAAmB4K,GAAO,IAAM5K,mBAAmB1M,IAGvE,OAAOiX,EAAOla,OAAS,IAAMka,EAAOyK,KAAK,KAAO,GAMpD,SAASszD,EAAkBJ,GACvB,MAAMp+D,EAAM,GACNy+D,EAASL,EAAYhoE,QAAQ,MAAO,IAAIkG,MAAM,KAOpD,OANAmiE,EAAOz2E,SAAQ02E,IACX,GAAIA,EAAO,CACP,MAAO59D,EAAKtX,GAASk1E,EAAMpiE,MAAM,KACjC0D,EAAIU,mBAAmBI,IAAQJ,mBAAmBlX,OAGnDwW,EAKX,SAAS2+D,EAAmB93E,GACxB,MAAM+3E,EAAa/3E,EAAIuZ,QAAQ,KAC/B,IAAKw+D,EACD,MAAO,GAEX,MAAMC,EAAgBh4E,EAAIuZ,QAAQ,IAAKw+D,GACvC,OAAO/3E,EAAIiQ,UAAU8nE,EAAYC,EAAgB,EAAIA,OAAgBzzC;;;;;;;;;;;;;;;;GA2QzE,SAAS0zC,EAAgBC,EAAUC,GAC/B,MAAMC,EAAQ,IAAIC,EAAcH,EAAUC,GAC1C,OAAOC,EAAME,UAAU52B,KAAK02B,GAMhC,MAAMC,EAMF/5E,YAAY45E,EAAUC,GAClB95E,KAAKk6E,UAAY,GACjBl6E,KAAKm6E,aAAe,GACpBn6E,KAAKo6E,cAAgB,EAErBp6E,KAAKq6E,KAAOj4E,QAAQC,UACpBrC,KAAKs6E,WAAY,EACjBt6E,KAAK85E,cAAgBA,EAIrB95E,KAAKq6E,KACAv1E,MAAK,KACN+0E,EAAS75E,SAERy9D,OAAM/4D,IACP1E,KAAKsG,MAAM5B,MAGnBD,KAAKH,GACDtE,KAAKu6E,iBAAiBC,IAClBA,EAAS/1E,KAAKH,MAGtBgC,MAAMA,GACFtG,KAAKu6E,iBAAiBC,IAClBA,EAASl0E,MAAMA,MAEnBtG,KAAKgnB,MAAM1gB,GAEfm0E,WACIz6E,KAAKu6E,iBAAiBC,IAClBA,EAASC,cAEbz6E,KAAKgnB,QAQTizD,UAAUS,EAAgBp0E,EAAOm0E,GAC7B,IAAID,EACJ,QAAuBt0C,IAAnBw0C,QACUx0C,IAAV5/B,QACa4/B,IAAbu0C,EACA,MAAM,IAAI75E,MAAM,qBAQhB45E,EALAG,EAAqBD,EAAgB,CACrC,OACA,QACA,aAEWA,EAGA,CACPj2E,KAAMi2E,EACNp0E,QACAm0E,iBAGcv0C,IAAlBs0C,EAAS/1E,OACT+1E,EAAS/1E,KAAOm2E,QAEG10C,IAAnBs0C,EAASl0E,QACTk0E,EAASl0E,MAAQs0E,QAEK10C,IAAtBs0C,EAASC,WACTD,EAASC,SAAWG,GAExB,MAAMC,EAAQ76E,KAAK86E,eAAez3B,KAAKrjD,KAAMA,KAAKk6E,UAAU74E,QAsB5D,OAlBIrB,KAAKs6E,WAELt6E,KAAKq6E,KAAKv1E,MAAK,KACX,IACQ9E,KAAK+6E,WACLP,EAASl0E,MAAMtG,KAAK+6E,YAGpBP,EAASC,WAGjB,MAAO/1E,QAMf1E,KAAKk6E,UAAUl0E,KAAKw0E,GACbK,EAIXC,eAAe55E,QACYglC,IAAnBlmC,KAAKk6E,gBAAiDh0C,IAAtBlmC,KAAKk6E,UAAUh5E,YAG5ClB,KAAKk6E,UAAUh5E,GACtBlB,KAAKo6E,eAAiB,EACK,IAAvBp6E,KAAKo6E,oBAA8Cl0C,IAAvBlmC,KAAK85E,eACjC95E,KAAK85E,cAAc95E,OAG3Bu6E,gBAAgBS,GACZ,IAAIh7E,KAAKs6E,UAMT,IAAK,IAAIp5E,EAAI,EAAGA,EAAIlB,KAAKk6E,UAAU74E,OAAQH,IACvClB,KAAKi7E,QAAQ/5E,EAAG85E,GAMxBC,QAAQ/5E,EAAG85E,GAGPh7E,KAAKq6E,KAAKv1E,MAAK,KACX,QAAuBohC,IAAnBlmC,KAAKk6E,gBAAiDh0C,IAAtBlmC,KAAKk6E,UAAUh5E,GAC/C,IACI85E,EAAGh7E,KAAKk6E,UAAUh5E,IAEtB,MAAOwD,GAIoB,qBAAZiyE,SAA2BA,QAAQrwE,OAC1CqwE,QAAQrwE,MAAM5B,OAMlCsiB,MAAMlY,GACE9O,KAAKs6E,YAGTt6E,KAAKs6E,WAAY,OACLp0C,IAARp3B,IACA9O,KAAK+6E,WAAajsE,GAItB9O,KAAKq6E,KAAKv1E,MAAK,KACX9E,KAAKk6E,eAAYh0C,EACjBlmC,KAAK85E,mBAAgB5zC,OAsBjC,SAASy0C,EAAqB7/D,EAAKogE,GAC/B,GAAmB,kBAARpgE,GAA4B,OAARA,EAC3B,OAAO,EAEX,IAAK,MAAMhZ,KAAUo5E,EACjB,GAAIp5E,KAAUgZ,GAA8B,oBAAhBA,EAAIhZ,GAC5B,OAAO,EAGf,OAAO,EAEX,SAAS84E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmTT,SAASO,EAAmBhD,GACxB,OAAIA,GAAWA,EAAQiD,UACZjD,EAAQiD,UAGRjD,I,6GCx1DR,IAAIkD,EAAuB,0DACvBC,EAAa,aACbC,EAAgB,gBAChBC,EAAa,cACbC,EAA0B,uCAC1BC,EAAsB,YACtBC,EAAkB,gBAClBC,EAAU,Q,wECbd,SAASC,EAAeC,GAC3B,IAAIl1D,EAAQ,KACZ,IAAI,QAAWm1D,OACXn1D,EAAQ,IAAIm1D,MAAMD,OAEjB,CACD,IAAIE,GAAM,UACNA,GAAOA,EAAIC,cACXr1D,EAAQo1D,EAAIC,YAAY,SACxBr1D,EAAMs1D,UAAUJ,GAAW,GAAM,IAGzC,OAAOl1D,I,qECZAu1D,GAAc,QAAgB,CACrCtuC,aAAc,EACdC,eAAgB,IAETsuC,GAA0B,QAAgB,CACjDC,GAAI,EACJC,WAAY,EACZC,IAAK,K,oGCNLC,EAAW,GACR,SAASC,EAAsB9hE,EAAK+hE,GAEvC,YADqB,IAAjBA,IAA2BA,GAAe,QAClCx2C,IAARvrB,GAA6B,OAARA,EACd+hE,EAE+D,SAAnE/hE,EAAIpM,WAAW,QAKnB,SAASouE,EAAaC,IACrBC,MAAMD,IAAYA,EAAU,KAC5BA,EAAU,GAEdA,EAAU3tE,KAAKmiB,MAAMwrD,GACrB,IAAIE,EAAKN,EAAWI,EAAU,IAC1BG,EAAMP,EAAWvtE,KAAKq2C,MAAMs3B,EAAU,KAAQ,GAC9Cr3B,EAAMi3B,EAAWvtE,KAAKq2C,MAAMs3B,EAAU,KAAe,GACrDI,EAAOR,EAAWvtE,KAAKq2C,MAAMs3B,EAAU,MAAoB,GAC3DK,EAAOhuE,KAAKq2C,MAAMs3B,EAAU,OAKhC,OAJAE,EAA8C,IAAzCA,EAAG,MAA0C,KAAOA,EAA8C,IAAzCA,EAAG,MAA0C,IAAMA,EAAKA,EACtHC,EAAMA,EAAI,MAAoC,EAAI,IAAMA,EAAMA,EAC9Dx3B,EAAMA,EAAI,MAAoC,EAAI,IAAMA,EAAMA,EAC9Dy3B,EAAOA,EAAK,MAAoC,EAAI,IAAMA,EAAOA,GACzDC,EAAO,EAAIA,EAAO,IAAMT,GAAYQ,EAAO,IAAMz3B,EAAM,IAAMw3B,EAAM,IAAMD,EAE9E,SAASI,EAAmBC,EAAYC,GAC3C,IAAIC,EAAY,KAOhB,OANA,QAAWF,GAAY,SAAU74E,GAC7B,GAAIA,EAAM84E,aAAeA,EAErB,OADAC,EAAY/4E,GACJ,KAGT+4E,EAEJ,SAASC,EAAmBlxD,EAASzqB,EAAK47E,EAAYC,EAAcl3E,GACvE,OAAQA,IAAS,QAAS8lB,KAAyB,kBAAZA,GAA2C,iBAAZA,K,6DCvC/DqxD,GAAiB,QAAe,CACvCC,qBAAsB,CAAC,EAA8C,mBACrEC,wBAAyB,CAAC,EAAiD,SAC3EC,0BAA2B,CAAC,EAAmD,iBAC/EC,gBAAiB,CAAC,EAAyC,cAC3DC,kBAAmB,CAAC,EAA2C,eAC/DC,iBAAkB,CAAC,EAA0C,cAC7DC,iBAAkB,CAAC,EAA0C,eAC7DC,6BAA8B,CAAC,EAAsD,SACrFC,8BAA+B,CAAC,EAAuD,sB,+MCPvFC,OAAsBj4C,EACtBk4C,OAAwBl4C,EAK5B,SAASm4C,IACL,OAAIC,IACOC,EAA0B,kBAE9B,KAQX,SAASA,EAA0BC,GAC/B,IACI,IAAI,SAAkB,WAClB,OAAO,KAEX,IAAIxqD,GAAM,IAAKxF,MAAM,QACjB89C,GAAU,QAAckS,IAAgB,iBAA2B,eAAiB,kBACxFlS,EAAQhlD,QAAQ0M,EAAKA,GACrB,IAAIyqD,EAAOnS,EAAQplD,QAAQ8M,KAASA,EAEpC,GADAs4C,EAAQ,MAA2Ct4C,IAC9CyqD,EACD,OAAOnS,EAGf,MAAOoS,IAGP,OAAO,KAMX,SAASC,IACL,OAAIC,IACOL,EAA0B,oBAE9B,KAKJ,SAASM,IACZV,GAAsB,EACtBC,GAAwB,EAKrB,SAASU,IACZX,EAAsBG,GAAsB,GAC5CF,EAAwBQ,GAAwB,GAO7C,SAASN,EAAsBS,GAIlC,OAHIA,QAAiC74C,IAAxBi4C,KACTA,IAAwBI,EAA0B,mBAE/CJ,EAEJ,SAASa,EAAmB98E,EAAQmR,GACvC,IAAIi5D,EAAU+R,IACd,GAAgB,OAAZ/R,EACA,IACI,OAAOA,EAAQplD,QAAQ7T,GAE3B,MAAO3O,GACHy5E,GAAsB,GACtB,QAAej8E,EAAQ,EAAkC,EAA2D,0CAA2C,QAAiBwC,GAAI,CAAEg6E,WAAW,QAAQh6E,KAGjN,OAAO,KAEJ,SAASu6E,EAAmB/8E,EAAQmR,EAAMjD,GAC7C,IAAIk8D,EAAU+R,IACd,GAAgB,OAAZ/R,EACA,IAEI,OADAA,EAAQhlD,QAAQjU,EAAMjD,IACf,EAEX,MAAO1L,GACHy5E,GAAsB,GACtB,QAAej8E,EAAQ,EAAkC,EAA4D,2CAA4C,QAAiBwC,GAAI,CAAEg6E,WAAW,QAAQh6E,KAGnN,OAAO,EAEJ,SAASw6E,EAAiBh9E,EAAQmR,GACrC,IAAIi5D,EAAU+R,IACd,GAAgB,OAAZ/R,EACA,IAEI,OADAA,EAAQ,MAA2Cj5D,IAC5C,EAEX,MAAO3O,GACHy5E,GAAsB,GACtB,QAAej8E,EAAQ,EAAkC,EAAkE,kDAAmD,QAAiBwC,GAAI,CAAEg6E,WAAW,QAAQh6E,KAGhO,OAAO,EAEJ,SAASk6E,EAAwBG,GAIpC,OAHIA,QAAmC74C,IAA1Bk4C,KACTA,IAA0BG,EAA0B,qBAEjDH,EAEJ,SAASe,IACZ,IAAIt8E,EAAO,GAMX,OALI+7E,MACA,SAAc,QAAc,mBAAmB,SAAUhjE,GACrD/Y,EAAKmD,KAAK4V,MAGX/Y,EAEJ,SAASu8E,EAAqBl9E,EAAQmR,GACzC,IAAIi5D,EAAUqS,IACd,GAAgB,OAAZrS,EACA,IACI,OAAOA,EAAQplD,QAAQ7T,GAE3B,MAAO3O,GACH05E,GAAwB,GACxB,QAAel8E,EAAQ,EAAkC,EAA6D,4CAA6C,QAAiBwC,GAAI,CAAEg6E,WAAW,QAAQh6E,KAGrN,OAAO,KAEJ,SAAS26E,EAAqBn9E,EAAQmR,EAAMjD,GAC/C,IAAIk8D,EAAUqS,IACd,GAAgB,OAAZrS,EACA,IAEI,OADAA,EAAQhlD,QAAQjU,EAAMjD,IACf,EAEX,MAAO1L,GACH05E,GAAwB,GACxB,QAAel8E,EAAQ,EAAkC,EAA8D,6CAA8C,QAAiBwC,GAAI,CAAEg6E,WAAW,QAAQh6E,KAGvN,OAAO,EAEJ,SAAS46E,EAAwBp9E,EAAQmR,GAC5C,IAAIi5D,EAAUqS,IACd,GAAgB,OAAZrS,EACA,IAEI,OADAA,EAAQ,MAA2Cj5D,IAC5C,EAEX,MAAO3O,GACH05E,GAAwB,GACxB,QAAel8E,EAAQ,EAAkC,EAAoE,oDAAqD,QAAiBwC,GAAI,CAAEg6E,WAAW,QAAQh6E,KAGpO,OAAO,I,kHC1KPiX,E,4CAGG,SAAS4jE,EAAgCr9E,EAAQ0Z,EAAKG,GACzD,IAAIyjE,EAAa5jE,EAAI,MACjB6jE,EAAQC,EAAgBx9E,EAAQ0Z,GAEpC,GAAI6jE,EAAM,QAAsCD,EAAY,CACxD,IAAIt+E,EAAI,EACJy+E,EAAcF,EAClB,WAA4Bv5C,IAArBnqB,EAAI4jE,GACPz+E,IACAy+E,EAAcF,EAAM,MAAwC,EAAG,KAAqDG,EAAY1+E,GAEpIu+E,EAAQE,EAEZ,OAAOF,EAEJ,SAASC,EAAgBx9E,EAAQmR,GACpC,IAAIwsE,EAUJ,OATIxsE,IAEAA,GAAO,QAAQA,EAAK,SAEhBA,EAAK,MAAoC,MACzCwsE,EAAYxsE,EAAK,MAAwC,EAAG,MAC5D,QAAenR,EAAQ,EAAkC,GAA0C,8DAAiH,CAAEmR,KAAMA,IAAQ,KAGrOwsE,GAAaxsE,EAEjB,SAASysE,EAAmB59E,EAAQoC,EAAOy7E,GAE9C,IAAIC,EASJ,YAVkB,IAAdD,IAAwBA,EAAY,MAEpCz7E,IACAy7E,EAAYA,GAAwB,KACpCz7E,GAAQ,QAAQA,GACZA,EAAMiK,WAAW,MAAoCwxE,IACrDC,EAAa17E,EAAM,QAAyC,MAAwC,EAAGy7E,IACvG,QAAe79E,EAAQ,EAAkC,GAAiD,sDAAwD69E,EAAY,eAAgB,CAAEz7E,MAAOA,IAAS,KAGjN07E,GAAc17E,EAElB,SAAS27E,EAAgB/9E,EAAQP,GACpC,OAAOu+E,EAAkBh+E,EAAQP,EAAK,KAA+C,IAElF,SAASw+E,EAAoBj+E,EAAQkqB,GACxC,IAAIg0D,EAOJ,OANIh0D,GACIA,EAAQ,MAAoC,QAC5Cg0D,EAAeh0D,EAAQ,MAAwC,EAAG,QAClE,QAAelqB,EAAQ,EAAkC,GAA+C,kEAAwH,CAAEkqB,QAASA,IAAW,IAGvPg0D,GAAgBh0D,EAEpB,SAASi0D,EAAsBn+E,EAAQw8E,GAC1C,IAAI4B,EACJ,GAAI5B,EAAW,CAEX,IAAIp6E,EAAQ,GAAKo6E,EACbp6E,EAAM,MAAoC,QAC1Cg8E,EAAiBh8E,EAAM,MAAwC,EAAG,QAClE,QAAepC,EAAQ,EAAkC,GAAiD,oEAA4H,CAAEw8E,UAAWA,IAAa,IAGxQ,OAAO4B,GAAkB5B,EAEtB,SAAS6B,EAAuBr+E,EAAQkiE,GAC3C,GAAIA,EAAY,CACZ,IAAIoc,EAAc,IAClB,QAAcpc,GAAY,SAAUqc,EAAMn8E,GACtC,IAAI,QAASA,KAAU,UAEnB,IACIA,GAAQ,UAAU,MAAwCA,GAE9D,MAAOI,IACH,QAAexC,EAAQ,EAAkC,GAAmE,+BAAgC,CAAEw8E,UAAWh6E,IAAK,GAGtLJ,EAAQw7E,EAAmB59E,EAAQoC,EAAO,MAC1Cm8E,EAAOlB,EAAgCr9E,EAAQu+E,EAAMD,GACrDA,EAAYC,GAAQn8E,KAExB8/D,EAAaoc,EAEjB,OAAOpc,EAEJ,SAASsc,EAAyBx+E,EAAQy+E,GAC7C,GAAIA,EAAc,CACd,IAAIC,EAAqB,IACzB,QAAcD,GAAc,SAAU1S,EAAS3pE,GAC3C2pE,EAAUsR,EAAgCr9E,EAAQ+rE,EAAS2S,GAC3DA,EAAmB3S,GAAW3pE,KAElCq8E,EAAeC,EAEnB,OAAOD,EAEJ,SAASE,EAAe3+E,EAAQ+jC,GACnC,OAAOA,EAAKi6C,EAAkBh+E,EAAQ+jC,EAAI,IAA6C,IAAwC,QAA2CA,EAEvK,SAASi6C,EAAkBh+E,EAAQ6O,EAAOgvE,EAAWe,GACxD,IAAIC,EAQJ,OAPIhwE,IACAA,GAAQ,QAAQA,GACZA,EAAM,MAAoCgvE,IAC1CgB,EAAahwE,EAAM,MAAwC,EAAGgvE,IAC9D,QAAe79E,EAAQ,EAAkC4+E,EAAQ,+CAAiDf,EAAY,eAAgB,CAAE3vE,KAAMW,IAAS,KAGhKgwE,GAAchwE,EAElB,SAAS6uE,EAAYvxE,GACxB,IAAIpN,EAAI,KAAOoN,EACf,OAAOpN,EAAE+/E,OAAO//E,EAAE,MAAoC,GAKnD,IAAIggF,GAAiBtlE,EAAK,CACzBulE,gBAAiB,IACjBC,cAAe,IACfC,oBAAqB,KACrBC,kBAAmB,KACnBC,eAAgB,KAChBC,mBAAoB,MACpBC,qBAAsB,OAE1B7lE,EAAG,MAAqE4jE,EACxE5jE,EAAG8lE,YAAc/B,EACjB/jE,EAAG+lE,eAAiB5B,EACpBnkE,EAAGgmE,YAAc1B,EACjBtkE,EAAGimE,gBAAkBzB,EACrBxkE,EAAG,MAAwD0kE,EAC3D1kE,EAAG,MAA0D4kE,EAC7D5kE,EAAG,MAA8D+kE,EACjE/kE,EAAGkmE,WAAahB,EAChBllE,EAAGmmE,cAAgB5B,EACnBvkE,EAAGomE,UAAYnC,EACfjkE,EAAGD,KAAO,KACVC,I,gIC7IAqmE,GAAY,WAAiB,GAC7BC,EAAiB,EAGjBC,EAAqB,CAAC,KAAM,KAAM,KAAM,KAAM,MAC3C,SAASC,EAAYxgF,GACxB,IAAIygF,EAAYH,EACZI,EAAcH,EACdI,EAAaD,EAAYD,GAgB7B,OAfKJ,EAAUzX,cAIL8X,EAAYD,KAElBE,EAAaD,EAAYD,GAAaJ,EAAUzX,cAAc,MAJ9D+X,EAAa,CAAEz+C,KAAM0+C,EAAa5gF,GAAK,IAM3C2gF,EAAWrjC,KAAOt9C,EAElBygF,IACIA,GAAaC,EAAY,QACzBD,EAAY,GAEhBH,EAAiBG,EACVE,EAEJ,SAASE,EAAkB7gF,GAC9B,IAAIiD,EACAgC,EAAIu7E,EAAYxgF,GAIpB,OAHIiF,IACAhC,EAASgC,EAAEq4C,MAERr6C,EAEJ,SAAS69E,EAAe9gF,GAC3B,IAAIiD,EACAgC,EAAIu7E,EAAYxgF,GAIpB,OAHIiF,IACAhC,EAASgC,EAAE,OAERhC,EAEJ,SAAS89E,EAAkB5gF,EAAQimE,GACtC,OAAIjmE,EACOA,EAAOktD,cAAgB,IAAM+Y,EAEjCA,EAGJ,SAASwa,EAAa5gF,EAAKghF,GAC9B,IAAIC,EAAWC,EAAiBlhF,EAAKghF,IAAa,GAClD,GAAIC,EAAU,CACV,IAAInzC,EAAQmzC,EAASnzC,MAAM,+CAC3B,GAAa,MAATA,GAAiBA,EAAM,MAAoC,IAAK,QAASA,EAAM,KAAOA,EAAM,GAAG,MAAoC,EACnI,OAAOA,EAAM,IAAMA,EAAM,IAAM,IAGvC,OAAOmzC,EAEJ,SAASC,EAAiBlhF,EAAKghF,GAClC,IAAI/9E,EAAS,KACb,GAAIjD,EAAK,CACL,IAAI8tC,EAAQ9tC,EAAI8tC,MAAM,gDACtB,GAAa,MAATA,GAAiBA,EAAM,MAAoC,IAAK,QAASA,EAAM,KAAOA,EAAM,GAAG,MAAoC,IACnI7qC,EAAS6qC,EAAM,IAAM,GACjBkzC,GAAYlzC,EAAM,MAAoC,GAAG,CACzD,IAAIqzC,GAAYrzC,EAAM,IAAM,IAAI,QAC5BszC,EAAOtzC,EAAM,IAAM,IAEN,SAAbqzC,GAAgC,QAATC,GAGL,UAAbD,GAAiC,SAATC,KAF7BA,EAAO,IAKXn+E,GAAUm+E,GAItB,OAAOn+E,I,+RCvEPo+E,EAAqB,CACrB,KAA0B,KAC1B,8CAAgD,KAChD,2CAA6C,MAE1C,SAASC,EAAsCC,GAClD,OAAwG,KAAjG,QAAWF,EAAoBE,EAAY,SAE/C,IAAIC,EAAO,CACdC,aAAc,KACdvH,eAAgB,IAChBwH,eAAgB,KAChBJ,sCAAuCA,EACvCK,mBAAoB,KACpBC,WAAY,KACZC,WAAY,KACZC,cAAe,KACfC,qBAAsB,KACtBC,sBAAuB,KACvBC,kBAAmB,KACnBC,kBAAmB,KACnBC,qBAAsB,KACtBC,eAAgB,KAChBC,cAAe,KACfC,sBAAuB,KACvBC,UAAW,KACXzH,sBAAuB,KACvB0H,UAAW,KACXC,aAAc,KACd1oE,KAAM,KACN2oE,MAAO,KACPC,SAAU,WACN,OAAO,SAAS,IAEpBC,cAAe,KACflP,QAAS,KACTmP,QAAS,KACTC,OAAQ,KACRC,kBAAmB,KACnBC,aAAc,KACdhI,aAAc,KACdW,mBAAoB,KACpBsH,KAAM,KACNC,iBAAkB,KAClBC,gBAAiB,KACjBC,qBAAsB,KACtBC,aAAc,MAEPC,EAAY,CACnBC,SAAU,KACVn1C,eAAgB,IAChBo1C,YAAa,KACbC,eAAgB,KAChBC,UAAW,KACXC,cAAe,MAERC,EAAsB,CAC7BC,oBAAqB,UAQrBC,4BAA6B,SAAUz/B,EAAQ8b,EAAY4jB,GACvD,IAAK5jB,GAAe9b,GAAUA,EAAO2/B,0BACjC,OAAO,EAEX,GAAI3/B,GAAUA,EAAO,MACjB,IAAK,IAAI9kD,EAAI,EAAGA,EAAI8kD,EAAO4/B,iCAAiC,MAAmC1kF,IAC3F,GAAI8kD,EAAO,MAA2E9kD,GAAGoO,KAAKwyD,GAC1F,OAAO,EAInB,IAAI+jB,GAAc,QAAY/jB,GAAYj+B,KAAK,QAM/C,IALIgiD,IAA8E,IAA9DA,EAAY,MAAqC,UAA+E,IAA7DA,EAAY,MAAqC,SAGpIA,IAAe,QAAiB/jB,GAAY,IAAS,IAAI,WAEvD9b,IAAWA,EAAO8/B,wBAA2BD,GAAeA,IAAgBH,EAC9E,OAAO,EAEX,IAEQK,EAFJC,EAAkBhgC,GAAUA,EAAOigC,yBACvC,GAAID,KAEA,QAAWA,GAAiB,SAAUE,GAClC,IAAI5pE,EAAQ,IAAIC,OAAO2pE,EAAO1xD,cAActjB,QAAQ,MAAO,QAAQA,QAAQ,MAAO,OAAOA,QAAQ,MAAO,OACxG60E,EAAgBA,GAAiBzpE,EAAMhN,KAAKu2E,OAE3CE,GACD,OAAO,EAGf,IAAII,EAAkBngC,GAAUA,EAAOogC,iCACvC,IAAKD,GAAyE,IAAtDA,EAAgB,MACpC,OAAO,EAEX,IAASjlF,EAAI,EAAGA,EAAIilF,EAAgB,MAAmCjlF,IAAK,CACxE,IAAIob,EAAQ,IAAIC,OAAO4pE,EAAgBjlF,GAAGszB,cAActjB,QAAQ,MAAO,QAAQA,QAAQ,MAAO,OAAOA,QAAQ,MAAO,OACpH,GAAIoL,EAAMhN,KAAKu2E,GACX,OAAO,EAKf,OAAOA,GAAeA,EAAY,MAAoC,GAK1EQ,sBAAuB,SAAUC,GAC7B,GAAIA,EAAgB,CAChB,IAAI/yE,EAAgBgyE,EAAoBgB,2BAA2BD,EAAgB,QACnF,GAAI/yE,GAAiBA,IAAkBgyE,EAAoBC,oBACvD,OAAOjyE,IAOnBgzE,2BAA4B,SAAUD,EAAgB1qE,GAClD,GAAI0qE,EAEA,IADA,IAAIE,EAAYF,EAAe,MAAgC,KACtDplF,EAAI,EAAGA,EAAIslF,EAAU,QAAqCtlF,EAAG,CAClE,IAAIulF,EAAWD,EAAUtlF,GAAG,MAAgC,KAC5D,GAAmD,IAA/CulF,EAAS,OAA2CA,EAAS,KAAO7qE,EACpE,OAAO6qE,EAAS,MAM7B,SAASC,EAA8BxkF,EAAQ6lE,EAAajmE,EAAQ6kF,GACvE,IAAIhhE,EAAQtS,EAAOszE,EAAav2E,EAAOu2E,EACvC,GAAI5e,GAAeA,EAAY,MAAoC,EAAG,CAClE,IAAI6e,GAAY,QAAY7e,GAE5B,GADApiD,EAASihE,EAAU/iD,MACdxwB,EACD,GAAuD,MAAnDuzE,EAAU,MAA+C,CACzD,IAAIC,EAAqE,IAAzDD,EAAUnoC,SAAS,MAA2C,IAAMmoC,EAAU,MACnE,MAAvBC,EAAS/wC,OAAO,KAChB+wC,EAAW,IAAMA,GAErBz2E,EAAOw2E,EAAU,MACjBvzE,GAAO,QAAmBnR,EAAQJ,EAASA,EAAS,IAAM+kF,EAAWA,QAGrExzE,GAAO,QAAmBnR,EAAQ6lE,QAK1CpiD,EAASghE,EACTtzE,EAAOszE,EAEX,MAAO,CACHhhE,OAAQA,EACRtS,KAAMA,EACNjD,KAAMA,GAGP,SAAS02E,IAEZ,IAAIC,GAAO,SACX,GAAIA,GAAQA,EAAKr2D,KAAOq2D,EAAKC,OAAQ,CACjC,IAAIt2D,EAAMq2D,EAAKr2D,MAAQq2D,EAAKC,OAAOC,gBAEnC,GAAIv2D,EAAM,EACN,OAAOA,EAGf,OAAO,UAEJ,SAASw2D,EAAsBC,EAAOC,GACzC,IAAIxiF,EAAS,KAIb,OAHc,IAAVuiF,GAAuB,IAARC,IAAc,QAAkBD,KAAW,QAAkBC,KAC5ExiF,EAASwiF,EAAMD,GAEZviF,EAKJ,IAAIyiF,EAAgB,CACvBC,IAAKR,EACLS,YAAaL,GAQV,SAASM,EAAuCC,EAAgBC,GACnE,IAAIx4D,EAAQu4D,GAAkB,GAC9B,MAAO,CACHE,QAAS,WACL,OAAOz4D,EAAM,MAEjB04D,QAAS,SAAU7jC,GACf2jC,GAAaA,EAAUE,QAAQ7jC,GAC/B70B,EAAM,KAAgC60B,GAE1C8jC,WAAY,WACR,OAAO34D,EAAM44D,SAEjBC,WAAY,SAAUhkC,GAClB2jC,GAAaA,EAAUK,WAAWhkC,IAC9B,QAAeA,KACf70B,EAAM44D,QAAU/jC,IAGxBikC,UAAW,WACP,OAAO94D,EAAM+4D,UAEjBC,UAAW,SAAUnkC,GACjB2jC,GAAaA,EAAUQ,UAAUnkC,IAC7B,QAAcA,KACd70B,EAAM+4D,SAAWlkC,IAGzBokC,cAAe,WACX,OAAOj5D,EAAMk5D,YAEjBC,cAAe,SAAUC,GACrBZ,GAAaA,EAAUW,cAAcC,GACrCp5D,EAAMk5D,WAAaE,M,kXCzOxB,IAAIC,EAAa,QACbC,EAAc,SACdC,EAAqB,cACrBC,EAAyB,oBACzBC,EAAiB,WACjBC,EAAmB,aACnBC,EAAY,OACZC,EAAe,UACfC,EAAa,QAMbC,EAAiB,YACjBC,EAAgB,WAChBC,EAA6B,mCAC7BC,EAAgB,UAChBC,EAAwB,kBACxBC,EAAkB,aAClBC,EAAoB,cACpBC,EAAkB,aAClBC,EAAoB,eACpBC,EAAqB,cACrBC,EAAiB,WACjBC,EAAsB,gBACtBC,EAAqB,eACrBC,EAAiB,WACjBC,EAA6B,sBAC7BC,EAAsB,eACtBC,EAAa,QACbC,EAAc,SACdC,EAAgB,WAChBC,EAAiB,WACjBC,EAAY,OACZC,EAAgB,WAChBC,EAAyB,mBACzBC,EAAiB,YACjBC,EAA6B,8BAC7BC,EAA0B,oBAC1BC,EAA2B,qBAC3BC,EAA6B,wB,uEC1CjC,SAASC,EAAgBx4C,GAC5B,IAAIy4C,EAAY,GAKhB,OAJA,QAAcz4C,GAAQ,SAAUqtC,EAAOn7E,GACnCumF,EAAUpL,GAASn7E,EACnBumF,EAAUvmF,GAASm7E,MAEhB,QAAWoL,GAwBf,SAASC,EAAe14C,GAC3B,IAAI24C,EAAW,GAKf,OAJA,QAAc34C,GAAQ,SAAUqtC,EAAOn7E,GACnCymF,EAAStL,GAASn7E,EAAM,GACxBymF,EAASzmF,EAAM,IAAMA,EAAM,OAExB,QAAWymF,K,qICvClBC,EAAiB,cACjBC,EAAiB,cACjBC,EAAY,SACZC,EAAa,UACbC,EAAa,UACbC,EAAyB,sBACzBC,EAAyB,sBACzBC,EAAqB,SACrBC,EAAmB,KACnBC,EAAmB,KACnBC,EAAqB,KACrBC,GAAO,UACPC,EAAe,GACfC,EAAsB,GAUnB,SAASC,EAAc9lC,EAAQ9jD,GAElC,IAAI6pF,EAAOC,EAAgBT,IAAuBM,EAAoBN,GAOtE,OANKQ,IAGDA,EAAOC,EAAgBT,GAAsBS,EAAgBhmC,EAAQ9jD,GACrE2pF,EAAoBN,GAAsBQ,GAEvCA,EAEX,SAASE,EAAcC,GACnB,OAAIA,GACOA,EAAUC,YAIzB,SAASC,EAAuBC,GAC5B,IAAIC,EAAeD,EAAW,MAA2CA,EAAW,OAA4C,GAIhI,IAFA,QAASC,EAAc,SAAUD,EAAWE,aAAc,KAAsB,OAChF,QAASD,EAAc,OAAQD,EAAWG,YAAc,IAAK,KAAM,OAC/D,QAAkBF,EAAalB,IAAc,CAE7C,IAAIqB,OAAgB,GACf,QAAYJ,EAAWhB,MACxBoB,GAAiBJ,EAAWhB,KAE3B,QAAYgB,EAAWf,MACxBmB,GAAiBJ,EAAWf,IAEhCgB,EAAalB,GAAcqB,EAE/B,OAAOH,EAEX,SAASI,EAAiBJ,EAAcj5E,GACpC,SAAIA,GAAQi5E,IAAgB,QAAQA,EAAaK,kBACqC,IAA3EL,EAAaK,cAAc,MAAqCt5E,GAI/E,SAASu5E,EAAiBN,EAAcj5E,GACpC,SAAIA,GAAQi5E,IAAgB,QAAQA,EAAaO,kBACmC,IAA5EP,EAAaO,eAAe,MAAqCx5E,KAIlEq5E,EAAiBJ,EAAcj5E,GASnC,SAASy5E,EAAiBC,EAAM/mC,GACnC,IAAIkmC,EACJ,GAAIa,EAEAb,EAAYa,EAAKC,oBAEhB,GAAIhnC,EAAQ,CACb,IAAIinC,EAAYjnC,EAAO,MAEnBkmC,EADAe,EAAU1B,GACE0B,EAAU1B,GAGVS,EAAgBhmC,GAOpC,OAJKkmC,IAEDA,EAAYJ,EAAc9lC,GAAS+mC,GAAQ,IAAI,QAE5Cb,EAEJ,SAASF,EAAgBK,EAAYnqF,GACxC,IAAIyZ,EACAuxE,EAAkBd,EAAuBC,GAAcR,GACvDsB,EAAQD,EAAgBE,MAAQ,IAChCC,EAAUH,EAAgBhH,OAE1BoH,GAA2C,IAAhCJ,EAAgB9B,GAC3Bc,GAAavwE,EAAK,CACdwwE,UAAW,WACP,IAAIoB,EAAUD,GAAYE,EAAoBtrF,GAG1CurF,EAAa5B,EAAoBN,GAMrC,OALIgC,GAAWE,GAAcvB,IAAcuB,IAGvCF,EAAUtB,EAAcwB,IAErBF,IAGf5xE,EAAG,MAA0C,SAAUrX,GAEnDgpF,GAAqB,IAAVhpF,GAEfqX,EAAGgN,IAAM,SAAUtV,EAAM/O,EAAOopF,EAAWxH,EAAQkH,GAC/C,IAAIxoF,GAAS,EACb,GAAIqnF,EAAcC,KAAeU,EAAiBM,EAAiB75E,GAAO,CACtE,IAAI++B,EAAS,GACTu7C,GAAW,QAAQrpF,GAAS,MAC5BspF,EAAMD,EAAS,MAAqC,KAOxD,IANa,IAATC,IACAD,GAAW,QAAQrpF,EAAM,MAAwC,EAAGspF,IACpEx7C,EAASy7C,EAAcvpF,EAAM,MAAwCspF,EAAM,MAG/E,QAASx7C,EAAQ,SAAU8zC,GAAUmH,EAAS,KAAU,QACnD,QAAkBK,GAAY,CAC/B,IAAII,GAAQ,UACZ,IAAI,QAAY17C,EAAO+4C,IAAc,CACjC,IAAI4C,GAAQ,UAERC,EAAWD,EAAqB,IAAZL,EAExB,GAAIM,EAAW,EAAG,CACd,IAAIC,EAAS,IAAIz/D,KACjBy/D,EAAOC,QAAQF,IACf,QAAS57C,EAAQ+4C,EAAYgD,EAAYF,EAASH,EAAyB9C,EAAjBC,IAAoCkD,EAAYF,EAAQH,EAAQ9C,EAAiBC,IAAmB,KAAW,OAG5K6C,IAED,QAAS17C,EAAQ,UAAW,KAAYs7C,EAAW,KAAM,MAGjE,IAAIU,GAAa,UACbA,GAAsC,WAAxBA,EAAWtL,YACzB,QAAS1wC,EAAQ,SAAU,KAAM,KAAM,MAEd,OAArBq5C,IACAA,GAAoB4C,IAAyB,WAAkB,IAAI,QAEnE5C,IACA,QAASr5C,EAAQ,WAAY,OAAQ,KAAM,QAGnD,QAASA,EAAQ,OAAQg7C,GAAQD,EAAO,KAAM,MAC9C,IAAImB,EAAcpB,EAAgBhJ,WAAaqK,EAC/CD,EAAYj7E,EAAMm7E,EAAmBb,EAAUv7C,IAC/CxtC,GAAS,EAEb,OAAOA,GAEX+W,EAAGja,IAAM,SAAU2R,GACf,IAAI/O,EAAQ,KAIZ,OAHI2nF,EAAcC,KAAeQ,EAAiBQ,EAAiB75E,KAC/D/O,GAAS4oF,EAAgB/I,WAAasK,GAAiBp7E,IAEpD/O,GAEXqX,EAAG+yE,IAAM,SAAUr7E,EAAM+5E,GACrB,IAAIxoF,GAAS,EAKb,OAJIqnF,EAAcC,KAEdtnF,EAASsnF,EAAUyC,MAAMt7E,EAAM+5E,IAE5BxoF,GAEX+W,EAAGgzE,MAAQ,SAAUt7E,EAAM+5E,GACvB,IAAIzxE,EACA/W,GAAS,EACb,GAAI4oF,EAAoBtrF,GAAS,CAE7B,IAAIkwC,GAAUz2B,EAAK,GACfA,EAAG,QAAUyxE,GAAc,IAC3BzxE,EAAGwvE,GAAc,gCACjBxvE,IACC,YAEDy2B,EAAO,WAAa,KAExB,IAAIw8C,EAAY1B,EAAgB0B,WAAaL,EAC7CK,EAAUv7E,EAAMm7E,EAAmB,KAAWp8C,IAC9CxtC,GAAS,EAEb,OAAOA,GAEX+W,GAGJ,OADAuwE,EAAUX,GAAsBW,EACzBA,EAKJ,SAASsB,EAAoBtrF,GAChC,GAAyB,OAArBspF,EAA2B,CAC3BA,GAAmB,EACnB,IACI,IAAIxP,EAAM2P,GAAQ,GAClBH,OAAsCtlD,IAAnB81C,EAAIkP,GAE3B,MAAOxmF,IACH,QAAexC,EAAQ,EAAkC,GAAiD,oCAAqC,QAAiBwC,GAAI,CAAEg6E,WAAW,QAAQh6E,MAGjM,OAAO8mF,EAEX,SAASqC,EAAcF,GACnB,IAAIv7C,EAAS,GACb,GAAIu7C,GAAYA,EAAS,MAAmC,CACxD,IAAI7vC,GAAQ,QAAQ6vC,GAAU,MAAgC,MAC9D,QAAW7vC,GAAO,SAAU+wC,GAExB,GADAA,GAAU,QAAQA,GAAW,MACzBA,EAAS,CACT,IAAIjB,EAAMiB,EAAQ,MAAqC,MAC1C,IAATjB,EACAx7C,EAAOy8C,GAAW,KAGlBz8C,GAAO,QAAQy8C,EAAQ,MAAwC,EAAGjB,MAAS,QAAQiB,EAAQ,MAAwCjB,EAAM,QAKzJ,OAAOx7C,EAEX,SAAS+7C,EAAYW,EAASC,GAC1B,OAAI,QAAWD,EAAQC,IACZD,EAAQC,KAEZ,KAEX,SAASP,EAAmBlqF,EAAO8tC,GAC/B,IAAIiD,EAAc/wC,GAAS,KAI3B,OAHA,QAAc8tC,GAAQ,SAAU/+B,EAAMs6E,GAClCt4C,GAAe,KAAOhiC,IAAS,QAAkBs6E,GAA6B,KAAjB,IAAMA,MAEhEt4C,EAEX,SAASo5C,EAAgBp7E,GACrB,IAAIgiC,EAAc,KAClB,GAAIs2C,EAAM,CACN,IAAIqD,EAAYrD,EAAKT,IAAc,KAC/BQ,IAAuBsD,IACvBpD,EAAeiC,EAAcmB,GAC7BtD,EAAqBsD,GAEzB35C,GAAc,QAAQu2C,EAAav4E,IAAS,MAEhD,OAAOgiC,EAEX,SAASk5C,EAAgBl7E,EAAMgiC,GACvBs2C,IACAA,EAAKT,GAAa73E,EAAO,IAAMgiC,GAGhC,SAASg5C,EAAwBluC,GACpC,SAAK,QAASA,SAQV,QAAYA,EAAW,uBAAuB,QAAYA,EAAW,0BAUrE,QAAYA,EAAW,qCAAsC,QAAYA,EAAW,cAAe,QAAYA,EAAW,iBAU1H,QAAYA,EAAW,sCAAsC,QAAYA,EAAW,mDAMpF,QAAYA,EAAW,eAAe,QAAYA,EAAW,mBAK7D,QAAYA,EAAW,kBAAoB,QAAYA,EAAW,gBAMlE,QAAYA,EAAW,mBAAmB,QAAYA,EAAW,wB,gGC5TrE8uC,E,wFADAC,EAAc,KAIX,SAASC,IACZ,IAAIC,EAAO7K,IACX,OAAO6K,EAAK,MAAwC,EAAG,GAAK,IAAMA,EAAK,MAAwC,EAAG,IAAM,IAAMA,EAAK,MAAwC,GAAI,IAAM,IAAMA,EAAK,MAAwC,GAAI,IAAM,IAAMA,EAAK,MAAwC,IAMlS,SAASC,IACZ,IAAItI,GAAO,SACX,OAAIA,GAAQA,EAAKr2D,IACNq2D,EAAKr2D,OAET,UAmBJ,SAAS6zD,IAIZ,IAHA,IAEqB+K,EAFjBC,EAAY,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAExFC,EAAM,KACD5oF,EAAI,EAAGA,EAAI,EAAGA,IACnB0oF,GAAM,UACNE,GACID,EAAgB,GAAND,GACNC,EAAUD,GAAO,EAAI,IACrBC,EAAUD,GAAO,EAAI,IACrBC,EAAUD,GAAO,GAAK,IACtBC,EAAUD,GAAO,GAAK,IACtBC,EAAUD,GAAO,GAAK,IACtBC,EAAUD,GAAO,GAAK,IACtBC,EAAUD,GAAO,GAAK,IAGlC,IAAIG,EAAkBF,EAAU,GAAkB,GAAb,WAAqB,GAC1D,OAAOC,EAAI,MAAkC,EAAG,GAAKA,EAAI,MAAkC,EAAG,GAAK,IAAMA,EAAI,MAAkC,GAAI,GAAKC,EAAkBD,EAAI,MAAkC,GAAI,GAAKA,EAAI,MAAkC,GAAI,IAQhQ,IAAIE,EAAY,CACnBT,oBAAgB/oD,EAChBypD,SAAU,KACVC,YAAa,KACbC,kBAAmB,KACnB/vF,eAAgB,KAChBgwF,WAAY,KACZ9W,SAAU,KACVyL,OAAQ,KACRpP,QAAS,KACTmP,QAAS,KACTuL,SAAU,KACVC,SAAU,KACVC,UAAW,KACXC,YAAa,KACbC,WAAY,KACZC,WAAY,KACZC,OAAQ,KACRC,UAAW,KACXC,QAAS,KACTC,UAAW,KACXC,QAAS,KACTC,mBAAoB,KACpB5L,gBAAiB,KACjB6L,QAAS,KACTpwC,KAAM,KACNwjC,eAAgBA,EAChBoL,QAASA,EACTE,QAASA,EACThL,MAAO,KACPuM,YAAa,KACbtM,SAAU,KACVuM,cAAe,KACfC,YAAa,KACbvM,cAAeA,GAIP,KACK,KACL,KACK,KAYV,SAASwM,EAAiB/qC,EAAQ9jD,GACrC,IAAIgqF,GAAY,QAAclmC,EAAQ9jD,GAClC8uF,EAAsBtB,EAAUT,eAwBpC,OAvBoB,OAAhBC,IACAA,EAAc,GACdD,EAAiB+B,GAGjB,QAAmBtB,EAAW,kBAAkB,WAC5C,OAAOT,KACR,SAAU3qF,GACT2qF,EAAiB3qF,GACjB,QAAW4qF,GAAa,SAAU+B,GAC9BA,EAAI,MAA2C3sF,WAIf,KAAxC,QAAW4qF,EAAahD,IACxBgD,EAAY,MAA8BhD,IAE1C,QAAU8E,IACV9E,EAAU,MAA2C8E,IAErD,QAAU/B,IACV/C,EAAU,MAA2C+C,GAElD/C,EAMJ,SAASnI,IACZgN,IAAmB,OAA2C,GAM3D,SAAS/M,EAAc9hF,GAC1B,OAAO6uF,EAAiB,KAAM7uF,GAAQiqF,YAMnC,SAAShI,EAAUjiF,EAAQmR,GAC9B,OAAO09E,EAAiB,KAAM7uF,GAAQR,IAAI2R,GAMvC,SAAS6wE,EAAUhiF,EAAQmR,EAAM/O,EAAO4hF,GAC3C6K,EAAiB,KAAM7uF,GAAQymB,IAAItV,EAAM/O,EAAO,KAAM4hF,GAOnD,SAAS9B,EAAaliF,EAAQmR,GACjC,OAAO09E,EAAiB,KAAM7uF,GAAQwsF,IAAIr7E,K,gHCrL1C69E,EAAqB,KACrB3qE,EAAU,QACV4qE,EAAe,KAAM,QAAM,GAC3BC,EAAW,EACf,SAASC,EAAgB1rE,EAAQ86D,EAAMn8E,GACnC,GAAI4sF,EACA,IAMI,OALAA,EAAmBvrE,EAAQ86D,EAAM,CAC7Bn8E,MAAOA,EACP+pC,YAAY,EACZC,cAAc,KAEX,EAEX,MAAO5pC,IAKX,OAAO,EAQX,SAAS4sF,EAAe3rE,GACpB,OAAyD,IAAlDA,EAAO,OAAkG,IAAlDA,EAAO,SAAmDA,EAAO,MAEnI,SAAS4rE,EAAUnhF,EAAMuV,GACrB,IAAI6rE,EAAW7rE,EAAOvV,EAAK61B,IAC3B,IAAKurD,EAAU,CACXA,EAAW,GACX,IACQF,EAAe3rE,KACV0rE,EAAgB1rE,EAAQvV,EAAK61B,GAAIurD,KAElC7rE,EAAOvV,EAAK61B,IAAMurD,IAI9B,MAAO9sF,KAIX,OAAO8sF,EAEJ,SAASC,EAAsBp+E,EAAMq+E,GAExC,YADuB,IAAnBA,IAA6BA,GAAiB,IAC3C,QAAgBr+E,EAAQ+9E,KAAeM,EAAiB,IAAMnrE,EAAU,MAAa4qE,GAEzF,SAASQ,EAAkBt+E,GAC9B,IAAIjD,EAAO,CACP61B,GAAIwrD,EAAsB,YAAcp+E,GAAQ,MAAa,IAAMkT,GACnEqrE,OAAQ,SAAUjsE,GACd,OAAO2rE,EAAe3rE,IAE1BjkB,IAAK,SAAUikB,EAAQtS,EAAMw+E,EAAUC,GACnC,IAAIN,EAAW7rE,EAAOvV,EAAK61B,IAC3B,OAAKurD,EAQEA,GAAS,QAAgBn+E,KAPxBy+E,IAEAN,EAAWD,EAAUnhF,EAAMuV,GAC3B6rE,GAAS,QAAgBn+E,IAASw+E,GAE/BA,IAIfE,KAAM,SAAUpsE,EAAQtS,GACpB,GAAIsS,GAAUA,EAAOtS,GACjB,WACWsS,EAAOtS,GAElB,MAAO3O,OAMnB,OAAO0L,I,0DClFP4hF,E,sBAFAC,EAAgB,CAAC,aAAc,kBAAmB,oBAAqB,aACvEC,EAAe,KAEnB,SAASC,EAAmB9+E,EAAM2yC,GAC9B,OAAO,WACH,IAAIosC,EAAOhxF,UACPixF,EAASC,EAAYtsC,GACzB,GAAIqsC,EAAQ,CACR,IAAIE,EAAWF,EAAOE,SAClBA,GAAYA,EAASl/E,IACrBk/E,EAASl/E,GAAM,MAAgCk/E,EAAUH,KAKzE,SAASI,IAEL,IAAI7sE,GAAS,QAAc,aAI3B,OAHIA,IACAusE,EAAevsE,EAAO,wBAEnBusE,EAEJ,SAASI,EAAYtsC,GACxB,IAAIysC,EAAKP,EAIT,OAHKO,IAA+B,IAAzBzsC,EAAO0sC,gBACdD,EAAKP,GAAgBM,KAElBC,EAAKA,EAAG,gBAAkB,KAE9B,SAASE,EAAiB3sC,GAC7B,IAAKgsC,EAAgB,CACjBA,EAAiB,GACjB,IAAK,IAAIY,EAAK,EAAGA,EAAKX,EAAc,MAAmCW,IACnEZ,EAAeC,EAAcW,IAAOT,EAAmBF,EAAcW,GAAK5sC,GAGlF,OAAOgsC,I,kKC7BPa,EAA4B,kBAI5BC,EAAyB,OAIzBC,EAA0B,QAC9B,SAASC,EAAwBC,GAC7B,OAAIA,EACO,IAAOA,EAAK,MAAoC,MAAO,MAAa,IAExE,KAEX,SAASC,EAAcnE,EAAM3iE,GACzB,IAAI+mE,GAAa,UACjB,GAAMA,EAAY,CACd,IAAIC,EAAU,MACVD,EAAWpE,KACXqE,EAAUrE,IAEV,QAAWoE,EAAWC,KACtBD,EAAWC,GAAShnE,IAIhC,IAAIinE,EAAqC,WACrC,SAASA,EAAoBC,EAAOC,EAAKC,EAAWpvB,QAC9B,IAAdovB,IAAwBA,GAAY,GACxC,IAAIC,EAAQzzF,KACZyzF,EAAM,MAA2CH,EACjDG,EAAM,OACDD,EAAYV,EAAyBD,GAClCS,EACR,IAAII,EAAW,MACX,YACAA,GAAW,UAAUn5E,UAAU6pD,IAEnC,IAAIuvB,GAAkBJ,EAAM,YAAcP,EAAwBO,GAAO,OACpEnvB,EAAa,UAAY4uB,EAAwBU,GAAY,MAClED,EAAM,OAAuCE,EAGjD,OADAN,EAAoBO,SAAW,cACxBP,EAjB6B,GAoBjC,SAASQ,EAAc9G,EAAM/mC,GAChC,OAAQ+mC,GAAQ,IAAI,OAAqC,IAAI+G,EAAiB9tC,GAElF,IAAI8tC,EAAkC,WAClC,SAASA,EAAiB9tC,GACtBhmD,KAAKo9E,WAAa,mBAIlBp9E,KAAK+zF,MAAQ,GAIb,IAKIC,EACAC,EACAC,EACAC,EARAC,EAAgB,EAIhBC,EAAiB,IAKrB,OAAaP,EAAkB9zF,MAAM,SAAUyzF,GAuE3C,SAASa,EAAoBC,EAAUnoE,GACnC,IAAIooE,IAAJ,CAIA,IAAIpmE,GAAa,EACbqmE,EAAa1B,EAA0B3mE,EAAQ,MAQnD,GANIioE,EAAeI,GACfrmE,GAAa,EAGbimE,EAAeI,IAAc,EAE7BrmE,IAEImmE,GAAYN,IACZR,EAAMM,MAAM,MAA8B3nE,GAC1CgoE,IACAM,EAA2B,IAAbH,EAAiD,QAAU,OAASnoE,IAGlFgoE,IAAkBF,GAA0B,CAC5C,IAAIS,EAAuB,oEACvBC,EAAkB,IAAIvB,EAAoB,GAAwDsB,GAAsB,GAC5HlB,EAAMM,MAAM,MAA8Ba,GACzB,IAAbL,EACAd,EAAM,MAAmDkB,GAGzDlB,EAAM,MAAiDkB,KAKvE,SAASE,EAAuB7uC,GAC5BguC,GAAuB,QAAYhuC,EAAO8uC,oBAAqB,GAC/Db,GAAyB,QAAYjuC,EAAO+uC,sBAAuB,GACnEb,GAA2B,QAAYluC,EAAOgvC,gBAAiB,IAC/Db,GAAyB,QAAYnuC,EAAO,OAAiE,GAEjH,SAASwuC,IACL,OAAOJ,GAAiBF,EAE5B,SAASQ,EAAarhF,EAAMjD,GACxB,IAAIiiF,GAAS,OAAYrsC,GAAU,IAC/BqsC,GAAUA,EAAO,OACjBA,EAAO,MAAqCh/E,EAAMjD,GArH1DykF,EAAuB7uC,GAAU,IACjCytC,EAAMwB,oBAAsB,WAAc,OAAOjB,GACjDP,EAAMyB,sBAAwB,WAAc,OAAOjB,GACnDR,EAAM0B,wBAA0B,WAAc,OAAOjB,GACrDT,EAAM,MAAkE,WAAc,OAAOU,GAM7FV,EAAM2B,cAAgB,SAAUb,EAAUjB,EAAOC,EAAKnvB,EAAYovB,QAC5C,IAAdA,IAAwBA,GAAY,GACxC,IAAIpnE,EAAU,IAAIinE,EAAoBC,EAAOC,EAAKC,EAAWpvB,GAC7D,GAAI+vB,EACA,MAAM,QAAQ/nE,GAId,IAAIgnE,EAAuB,IAAbmB,EAAiD,KAAuB,KACtF,IAAK,QAAYnoE,EAAQ,OAkBrBsoE,EAAa,SAAwB,IAAbH,EAAiD,WAAa,WAAYnoE,OAlBvC,CAC3D,GAAIonE,EAAW,CAEX,IAAIiB,GAAcroE,EAAQ,OACrBioE,EAAeI,IAAeT,GAAwBO,IACvDd,EAAML,GAAShnE,EAAQ,OACvBioE,EAAeI,IAAc,QAK7BT,GAAwBO,GACxBd,EAAML,GAAShnE,EAAQ,OAG/BkoE,EAAoBC,EAAUnoE,KAW1CqnE,EAAM,MAAmD,SAAUrnE,GAC/D8mE,EAAc,OAAQ9mE,GACtBsoE,EAAa,UAAWtoE,IAM5BqnE,EAAM,MAAqD,SAAUrnE,GACjE8mE,EAAc,QAAS9mE,GACvBsoE,EAAa,QAAStoE,IAK1BqnE,EAAM4B,0BAA4B,WAC9BjB,EAAgB,EAChBC,EAAiB,IAOrBZ,EAAM,MAA8Da,KAmE5E,OAFAR,EAAiBwB,QAAQ,EAElBxB,EA5J0B,GA+JrC,SAASyB,EAAWrzF,GAChB,OAAQA,GAAU,IAAI4xF,EAWnB,SAAS0B,EAAetzF,EAAQqyF,EAAUjB,EAAOC,EAAKnvB,EAAYovB,QACnD,IAAdA,IAAwBA,GAAY,GACxC+B,EAAWrzF,GAAQkzF,cAAcb,EAAUjB,EAAOC,EAAKnvB,EAAYovB,GAOhE,SAASiC,EAAevzF,EAAQkqB,GACnCmpE,EAAWrzF,GAAQ,MAAiDkqB,GAQjE,SAASkoE,EAAoBpyF,EAAQqyF,EAAUnoE,GAClDmpE,EAAWrzF,GAAQ,MAA4DqyF,EAAUnoE,K,8SC/OzFspE,EAAY,SACZC,EAAc,WACdC,EAAkB,eAClBC,EAAe,YACfC,EAAa,UACbC,EAAc,WACdC,EAAa,UACbC,EAAiB,cACjBC,EAAU,OACVC,EAAY,SACZC,EAAc,WACdC,EAAiB,cACjBC,EAAU,OACVC,EAAa,WACbC,EAAoB,iBACpBC,EAAa,KACbC,EAAqB,KACrBC,GAAe,EACfC,EAAqB,KACrBC,EAAoB,KACxB,SAASC,EAAaC,EAAUC,GAC5B,IAAIC,GAAY,EAChB,GAAIF,EAAU,CACV,IAEI,GADAE,EAAYD,KAAYD,GACnBE,EAAW,CACZ,IAAIC,EAAQH,EAAS,MACjBG,IACAD,EAAYD,KAAYE,IAIpC,MAAOxyF,IAGP,IAAKuyF,EACD,IACI,IAAI3H,EAAM,IAAIyH,EACdE,IAAa,QAAY3H,EAAI0H,IAEjC,MAAOtyF,KAKf,OAAOuyF,EAaJ,SAASE,EAAc9jF,GAC1B,IAAI+jF,GAAM,UACV,OAAIA,GAAOA,EAAI/jF,GACJ+jF,EAAI/jF,GAGXA,IAASqiF,GAAa2B,IAEflzE,OAEJ,KASJ,SAASkzE,IACZ,OAAOC,eAAenzE,SAAW,MAAiBA,QAO/C,SAASozE,IACZ,OAAIF,IACOlzE,OAGJgzE,EAAczB,GASlB,SAAS8B,IACZ,OAAOF,eAAe3hD,WAAa,MAAiBA,UAOjD,SAAS8hD,IACZ,OAAID,IACO7hD,SAEJwhD,EAAcxB,GASlB,SAAS+B,IACZ,OAAOJ,eAAe16C,YAAc,MAAiBA,WAOlD,SAAS+6C,IACZ,OAAID,IACO96C,UAEJu6C,EAActB,GASlB,SAAS+B,IACZ,OAAON,eAAeh5C,UAAY,MAAiBA,SAOhD,SAASu5C,IACZ,OAAID,IACOt5C,QAEJ64C,EAAcrB,GAOlB,SAASgC,EAAYC,GACxB,GAAIA,GAAgBpB,EAAc,CAC9B,IAAIqB,EAAeb,EAAc,kBACjC,GAAIa,EACA,OAAOA,EAGf,cAAW35C,WAAa,MAAiBA,SAC9BA,SAEJ84C,EAAcpB,GAKlB,SAASkC,IACZ,cAAWthB,UAAY,KACZA,QAEJwgB,EAAcnB,GAOlB,SAASkC,IACZ,OAAOf,EAAclB,GASlB,SAASkC,IACZ,OAAOb,eAAgBh9E,OAAS,MAAiBA,MAAoC,OAA3B68E,EAAcjB,IAOrE,SAASkC,IACZ,OAAID,IACO79E,MAAQ68E,EAAcjB,GAE1B,KAOJ,SAASmC,IACZ,OAAOlB,EAAchB,GAOlB,SAASmC,IACZ,OAAOnB,EAAcf,GAKlB,SAAS/e,IAEZ,IAAIkhB,EAAMZ,IACV,SAAIY,IAAOA,EAAIC,UACJD,EAAIC,UAAYnC,EAOxB,SAAS91C,IACZ,IAAIg4C,EAAMZ,IACV,GAAIY,IAAQA,EAAI,QAA6C7B,GAAqC,OAAfD,GAAsB,CAErGC,EAAqB6B,EAAI,MACzB,IAAIp4C,GAAau2C,GAAsB,MAAW,QAClDD,GAAc,QAAYt2C,EAAWm2C,KAAY,QAAYn2C,EAAWo2C,GAE5E,OAAOE,EAKJ,SAAS9R,EAAa8T,GAEzB,QADqB,IAAjBA,IAA2BA,EAAe,OACzCA,EAAc,CACf,IAAIC,EAAcf,KAAkB,GACpCc,EAAeC,GAAeA,EAAY,OAA4C,MAAW,QAAkD,KAEvJ,IAAIx4C,GAAMu4C,GAAgB,MAAW,QAErC,IAAI,QAAYv4C,EAAIo2C,GAAU,CAC1B,IAAIta,EAAMyb,KAAiB,GAC3B,OAAOxoF,KAAK4wD,IAAI5a,SAAS/E,EAAG,MAAgCo2C,GAAS,IAAMta,EAAI4Z,IAAoB,GAElG,IAAI,QAAY11C,EAAIq2C,GAAa,CAClC,IAAIoC,EAAa1zC,SAAS/E,EAAG,MAAgCq2C,GAAY,IACzE,GAAIoC,EACA,OAAOA,EAAa,EAG5B,OAAO,KAKJ,SAASC,EAAQC,GACpB,IAAIC,EAAiBv5F,OAAO,MAAkBgP,SAAS,MAA8BsqF,GACjFE,EAAoB,KAOxB,MANuB,mBAAnBD,EACAC,EAAoB,aAAeF,EAAOG,MAAQ,gBAAkBH,EAAOzsE,QAAU,aAAeysE,EAAO,KAAgC,IAEtIV,MACLY,EAAoBX,IAAU79E,UAAUs+E,IAErCC,EAAiBC,EAcrB,SAASE,IAIZ,OAH0B,OAAtBpC,IACAA,EAAoBa,KAAkBJ,QAAQK,IAAeuB,aAE1DrC,EAOJ,SAASsC,EAAiBC,GAC7B,IAAIC,GAAc,EAClB,IACIA,IAAgBlC,EAAc,SAC9B,IAAIh1F,EAAUg1F,EAAc,WACxBkC,GAAeD,GAAiBj3F,IAChCk3F,EAAcvC,EAAa30F,EAAS,cAG5C,MAAOuC,IAGP,OAAO20F,EAEJ,SAASC,IAOZ,OAN2B,OAAvB1C,IACAA,SAA6B2C,iBAAmB,KAC5C3C,GAAsB4C,MACtB5C,EAAqBA,IAAuBE,EAAaK,EAAcX,GAAoB,qBAG5FI,EAMJ,SAAS4C,IACZ,IAAIH,GAAc,EAClB,IACI,IAAII,EAAiBtC,EAAcX,GACnC6C,IAAgBI,EAEpB,MAAO/0F,IAGP,OAAO20F,I,2LC/VPK,EAAc,KACdC,EAAiB,cACjBC,EAAoB,mBACpBC,EAAiB,cACjBC,EAAyB,sBACzBC,EAAY,SACZC,EAAyB,mBACzBC,EAAc,WAEdC,EAAY,SACZC,EAAkB,eAClBC,GAAuB,OAAsB,iBAE7CC,IADuB,OAAsB,iBAC5B,YACjBC,EAAyB,SACzBC,EAAQ,EACRC,GAAc,OAAkB,UAChCC,EAAiB,sBACrB,SAASC,EAAoBrnF,GACzB,OAAIA,GAAQA,EAAK,MACNA,EAAK,MAAoC,+BAAgC,MAE7EA,EAEX,SAASsnF,EAAiB7e,EAAW8e,GACjC,IAAIj/E,EACJ,GAAIi/E,EAAc,CACd,IAAIC,EAAiB,MACjB,QAAQD,IACRC,EAAiB,MACjB,QAAWD,GAAc,SAAUvnF,GAC/BA,EAAOqnF,EAAoBrnF,GACvBA,IACgB,MAAZA,EAAK,KACLA,EAAO,IAAMA,GAEjBwnF,GAAkBxnF,OAK1BwnF,EAAiBH,EAAoBE,GAErCC,IAC0B,MAAtBA,EAAe,KACfA,EAAiB,IAAMA,GAG3B/e,GAAaA,GAAa,MAAa+e,GAG/C,IAAIC,EAAeL,EAAepgF,KAAKyhE,GAAa,OAAc,GAClE,OAAOngE,EAAK,GACRA,EAAG,MAA6Bm/E,EAAY,GAC5Cn/E,EAAG82E,IAAOqI,EAAY,IAAM,MAAW5pF,QAAQmpF,EAAgB,KAAKnpF,QAAQopF,EAAwB,MAAW,MAAgC,KAAKl0E,OAAQJ,KAAK,KACjKrK,EA8BR,SAASo/E,EAAqBp1E,EAAQq1E,EAASlJ,QACxB,IAAfA,IAAyBA,GAAa,GAC1C,IAAImJ,EAAST,EAAY94F,IAAIikB,EAAQo0E,EAAW,GAAIjI,GAChDoJ,EAAmBD,EAAOD,GAI9B,OAHKE,IACDA,EAAmBD,EAAOD,GAAW,IAElCE,EAEX,SAASC,EAAUrgF,EAAKkgF,EAASI,EAAYC,GACrCvgF,GAAOkgF,GAAWA,EAAQ,QACtBlgF,EAAIg/E,GACJh/E,EAAIg/E,GAAwBkB,EAAQ,MAA+BI,EAAYC,GAE1EvgF,EAAI++E,IACT/+E,EAAI++E,GAAgBH,EAAcsB,EAAQ,MAA+BI,IAIrF,SAASE,EAAUxgF,EAAKkgF,EAASI,EAAYC,GACzC,IAAIz2F,GAAS,EAab,OAZIkW,GAAOkgF,GAAWA,EAAQ,OAAiCI,IACvDtgF,EAAI8+E,IAEJ9+E,EAAI8+E,GAAmBoB,EAAQ,MAA+BI,EAAYC,GAC1Ez2F,GAAS,GAEJkW,EAAI6+E,KAET7+E,EAAI6+E,GAAgBD,EAAcsB,EAAQ,MAA+BI,GACzEx2F,GAAS,IAGVA,EAEX,SAAS22F,EAAc51E,EAAQ6M,EAAQwoE,EAASQ,GAC5C,IAAI5N,EAAMp7D,EAAO,MACjB,MAAOo7D,IAAO,CACV,IAAI6N,EAAWjpE,EAAOo7D,GAClB6N,IACKT,EAAQvI,IAAMuI,EAAQvI,KAAOgJ,EAAST,QAAQvI,IAC1C+I,IAAWA,EAAQC,KACpBN,EAAUx1E,EAAQ81E,EAAST,QAASS,EAAS,MAAqCA,EAASC,SAE3FlpE,EAAO,MAAkCo7D,EAAK,MAMlE,SAAS+N,EAAkBh2E,EAAQq1E,EAASQ,GACxC,GAAIR,EAAQ,MACRO,EAAc51E,EAAQo1E,EAAqBp1E,EAAQq1E,EAAQ,OAAgCA,EAASQ,OAEnG,CACD,IAAII,EAAapB,EAAY94F,IAAIikB,EAAQo0E,EAAW,KACpD,QAAc6B,GAAY,SAAUC,EAASrpE,GACzC+oE,EAAc51E,EAAQ6M,EAAQwoE,EAASQ,MAGmB,KAA1D,QAAQI,GAAY,OACpBpB,EAAYzI,KAAKpsE,EAAQo0E,IAI9B,SAAS+B,EAAkBC,EAAcC,GAC5C,IAAIC,EAcJ,OAbID,GAEIC,GADA,QAAQD,GACQ,CAACD,GAAcv1F,OAAOw1F,GAGtB,CAACD,EAAcC,GAGnCC,EAAiBtB,EAAiB,KAAMsB,GAAiB,GAAE,MAAgC,MAG3FA,EAAgBF,EAEbE,EAaJ,SAASC,EAAQv2E,EAAQm2D,EAAWsf,EAAYR,EAAcS,GACjE,IAAI1/E,OACe,IAAf0/E,IAAyBA,GAAa,GAC1C,IAAIz2F,GAAS,EACb,GAAI+gB,EACA,IACI,IAAIq1E,EAAUL,EAAiB7e,EAAW8e,GAE1C,GADAh2F,EAAS02F,EAAU31E,EAAQq1E,EAASI,EAAYC,GAC5Cz2F,GAAU41F,EAAY5I,OAAOjsE,GAAS,CACtC,IAAIw2E,GAAmBxgF,EAAK,CACpBvM,KAAMmrF,IACNS,QAASA,GAEbr/E,EAAG,MAAmCy/E,EACtCz/E,EAAG+/E,QAAUL,EACb1/E,GACJo/E,EAAqBp1E,EAAQq1E,EAAQ9tE,MAAM,MAA8BivE,IAGjF,MAAOz3F,IAIX,OAAOE,EAcJ,SAASw3F,EAASz2E,EAAQm2D,EAAWsf,EAAYR,EAAcS,GAElE,QADmB,IAAfA,IAAyBA,GAAa,GACtC11E,EACA,IACI,IAAI02E,EAAY1B,EAAiB7e,EAAW8e,GACxC0B,GAAU,EACdX,EAAkBh2E,EAAQ02E,GAAW,SAAUE,GAC3C,UAAKF,EAAU5J,IAAO2I,IAAemB,EAAS,QAAwCnB,KAClFkB,GAAU,GACH,MAIVA,GAEDnB,EAAUx1E,EAAQ02E,EAAWjB,EAAYC,GAGjD,MAAO32F,KAaR,SAAS83F,EAAY1hF,EAAK2hF,EAAoBrB,EAAYC,GAE7D,YADmB,IAAfA,IAAyBA,GAAa,GACnCa,EAAQphF,EAAK2hF,EAAoBrB,EAAY,KAAMC,GAYvD,SAASqB,EAAY5hF,EAAK2hF,EAAoBrB,EAAYC,QAC1C,IAAfA,IAAyBA,GAAa,GAC1Ce,EAASthF,EAAK2hF,EAAoBrB,EAAY,KAAMC,GASjD,SAASvW,EAAgBhJ,EAAWzpD,EAAUuoE,GACjD,IAAIh2F,GAAS,EACT+3F,GAAI,UACJA,IACA/3F,EAASs3F,EAAQS,EAAG7gB,EAAWzpD,EAAUuoE,GACzCh2F,EAASs3F,EAAQS,EAAE,QAAS7gB,EAAWzpD,EAAUuoE,IAAiBh2F,GAEtE,IAAIo3E,GAAM,UAIV,OAHIA,IACAp3E,EAASs3F,EAAQlgB,EAAKF,EAAWzpD,EAAUuoE,IAAiBh2F,GAEzDA,EAWJ,SAASg4F,EAAmB9gB,EAAWzpD,EAAUuoE,GACpD,IAAI+B,GAAI,UACJA,IACAP,EAASO,EAAG7gB,EAAWzpD,EAAUuoE,GACjCwB,EAASO,EAAE,QAAS7gB,EAAWzpD,EAAUuoE,IAE7C,IAAI5e,GAAM,UACNA,GACAogB,EAASpgB,EAAKF,EAAWzpD,EAAUuoE,GAW3C,SAASiC,EAAmBrqE,EAAQ+/D,EAAUuK,EAAelC,GACzD,IAAImC,GAAQ,EAUZ,OATIxK,GAAY//D,GAAUA,EAAO,MAAoC,IACjE,QAAWA,GAAQ,SAAUnf,GACrBA,IACKypF,IAAsD,KAArC,QAAWA,EAAezpF,KAC5C0pF,EAAQjY,EAAgBzxE,EAAMk/E,EAAUqI,IAAiBmC,OAKlEA,EAUJ,SAASC,EAAkBxqE,EAAQ+/D,EAAUuK,EAAelC,GAC/D,IAAImC,GAAQ,EAQZ,OAPIxK,GAAY//D,IAAU,QAAQA,KAC9BuqE,EAAQF,EAAmBrqE,EAAQ+/D,EAAUuK,EAAelC,IACvDmC,GAASD,GAAiBA,EAAc,MAAoC,IAE7EC,EAAQF,EAAmBrqE,EAAQ+/D,EAAU,KAAMqI,KAGpDmC,EAQJ,SAASE,EAAqBzqE,EAAQ+/D,EAAUqI,GAC/CpoE,IAAU,QAAQA,KAClB,QAAWA,GAAQ,SAAUnf,GACrBA,GACAupF,EAAmBvpF,EAAMk/E,EAAUqI,MAgB5C,SAASsC,EAA2B3K,EAAUuK,EAAelC,GAGhE,OAAOoC,EAAkB,CAAC7C,EAAiBD,EAAWD,GAAc1H,EAAUuK,EAAelC,GAS1F,SAASuC,EAA8B5K,EAAUqI,GACpDqC,EAAqB,CAAC9C,EAAiBD,EAAWD,GAAc1H,EAAUqI,GAcvE,SAASwC,EAAyB7K,EAAUuK,EAAelC,GAC9D,SAASyC,EAAsBC,GAC3B,IAAIthB,GAAM,UACNuW,GAAYvW,GAA+B,WAAxBA,EAAIvN,iBACvB8jB,EAAS+K,GAIjB,IAAIrB,EAAgBH,EAAkB1B,EAAsBQ,GACxD2C,EAAkBV,EAAmB,CAAC5C,GAAc1H,EAAUuK,EAAeb,GAQjF,OAPKa,IAAwE,KAAvD,QAAWA,EAAe9C,KAC5CuD,EAAkBV,EAAmB,CAAC7C,GAAyBqD,EAAuBP,EAAeb,IAAkBsB,IAEtHA,GAAmBT,IAEpBS,EAAkBH,EAAyB7K,EAAU,KAAMqI,IAExD2C,EASJ,SAASC,EAA4BjL,EAAUqI,GAElD,IAAIqB,EAAgBH,EAAkB1B,EAAsBQ,GAC5DqC,EAAqB,CAAChD,GAAc1H,EAAU0J,GAC9CgB,EAAqB,CAACjD,GAAyB,KAAMiC,K,6dC5arDwB,EAAiB,cACjBC,EAAe,WACfC,EAAiB,aACjBC,EAAa,UACbC,EAAS,MACTC,EAAY,SACZC,EAAW,OACXC,EAAc,WAKdC,EAAa,YAKbC,EAAiB,cACjBhN,EAAqB,KACrBiN,EAAa,YAEbC,GADW,UACA,WACXC,EAAc1tF,OAAO,MACrB2tF,EAAWD,EAAYN,GACvBQ,EAAeF,EAAYX,GAE3Bc,GADiBH,EAAYV,GACjBnvE,KAAK,OACjBiwE,EAAmBD,EAAUf,GAC7BiB,EAAWh/F,MAAM21E,QACjBspB,EAAe,KAASX,GACxBY,EAAc,KAAkBZ,GAEhCa,EAAqBD,EAAY,MAA8B,MAC/DE,EAAa,YACbC,EAAoB,eACpBC,EAAkB,iBAKlBC,EAAqB1/F,OAAO,kBAKzB,SAAS2/F,EAAav5E,GACzB,GAAIA,EAAQ,CAER,GAAIs5E,EACA,OAAOA,EAAmBt5E,GAG9B,IAAIw5E,EAAWx5E,EAAOs4E,IAAet4E,EAAO,OAAqBA,EAAOu4E,GACxE,GAAIiB,EACA,OAAOA,EAGf,OAAO,KAKJ,SAASxP,EAASrrF,EAAO86F,GAC5B,cAAc96F,IAAU86F,EAErB,SAASxP,EAAYtrF,GACxB,YAAiB4hC,IAAV5hC,UAA8BA,IAAU,KAK5C,SAASurF,EAAkBvrF,GAC9B,OAAkB,OAAVA,GAAkBsrF,EAAYtrF,GAEnC,SAAS+6F,EAAqB/6F,GACjC,OAAQurF,EAAkBvrF,GAEvB,SAASxE,EAAegb,EAAK2lE,GAChC,SAAU3lE,IAAO,KAAkB,MAA8BA,EAAK2lE,IAEnE,SAASzH,EAAS10E,GAErB,SAAUA,UAAgBA,IAAU,MAEjC,SAASwrF,EAAWxrF,GAEvB,SAAUA,UAAgBA,IAAU,MAYjC,SAASg7F,EAAgBjsF,GAC5B,IAAI/O,EAAQ+O,EAWZ,OAVI/O,GAASyrF,EAASzrF,KAElBA,EAAQA,EAAM,MAAoCw6F,GAAY,SAAUS,EAAMC,GAC1E,OAAOA,EAAOxwC,iBAElB1qD,EAAQA,EAAM,MAAoCy6F,EAAmB,KACrEz6F,EAAQA,EAAM,MAAoC06F,GAAiB,SAAUO,EAAM9vD,GAC/E,MAAO,IAAMA,MAGdnrC,EAQJ,SAASm7F,EAAc95E,EAAQ+5E,GAClC,GAAI/5E,EACA,IAAK,IAAI86D,KAAQ96D,EACT,KAAkB,MAA8BA,EAAQ86D,IACxDif,EAAW,MAA8B/5E,EAAQ86D,EAAM96D,EAAO86D,IAWvE,SAASkf,EAAYr7F,EAAO2W,GAC/B,IAAIrW,GAAS,EAKb,OAJIN,GAAS2W,KAAYrW,EAASN,IAAU2W,KAExCrW,EAAS25F,EAAej6F,EAAMo5F,GAAcziF,GAAU2kF,EAAiBt7F,EAAO2W,IAE3ErW,EAQJ,SAASg7F,EAAiBt7F,EAAO2W,GACpC,IAAIrW,GAAS,EACTi7F,EAAY5kF,EAASA,EAAO,MAAoC,EAChE6kF,EAASx7F,EAAQA,EAAM,MAAoC,EAC/D,GAAIu7F,GAAaC,GAAUA,GAAUD,KAAej7F,EAASN,IAAU2W,GAAS,CAE5E,IADA,IAAIm5D,EAAM0rB,EAAS,EACVlN,EAAKiN,EAAY,EAAGjN,GAAM,EAAGA,IAAM,CACxC,GAAItuF,EAAM8vE,IAAQn5D,EAAO23E,GACrB,OAAO,EAEXxe,IAEJxvE,GAAS,EAEb,OAAOA,EAyCJ,SAASm7F,EAAYz7F,EAAO2W,GAC/B,SAAI3W,IAAS2W,KACsD,IAAxD3W,EAAM,MAAqC2W,GAOnD,SAASwpE,EAAO3pE,GACnB,SAAUA,GAA2D,kBAApD6jF,EAAa,MAA8B7jF,IAMzD,IAAIu6D,EAAUqpB,GAAYsB,EACjC,SAASA,EAAallF,GAClB,SAAUA,GAA2D,mBAApD6jF,EAAa,MAA8B7jF,IAKzD,SAAS0pE,EAAQ1pE,GACpB,SAAUA,GAA2D,mBAApD6jF,EAAa,MAA8B7jF,IAOzD,SAASi1E,EAASzrF,GAErB,MAAwB,kBAAVA,EAOX,SAAS0rF,EAAS1rF,GAErB,MAAwB,kBAAVA,EAOX,SAAS2rF,EAAU3rF,GAEtB,MAAwB,mBAAVA,EAeX,SAAS27F,EAAc37F,GAC1B,IAAIM,GAAS,EACb,GAAIN,GAA0B,kBAAVA,EAAoB,CAEpC,IAAI4yF,EAAQ+H,EAAqBA,EAAmB36F,GAAS46F,EAAa56F,GACrE4yF,GAMGA,EAAMgH,IAAmB,KAAkB,MAA8BhH,EAAOgH,KAChFhH,EAAQA,EAAMgH,IAElBt5F,SAAgBsyF,IAAU,MAAmB0H,EAAY,MAA8B1H,KAAW2H,GAPlGj6F,GAAS,EAUjB,OAAOA,EAKJ,SAASsrF,GAAYgQ,GACxB,GAAIA,EAEA,OAAOzB,EAAmByB,EAAKzC,KAAoB0C,GAAiBD,GAMrE,SAASC,GAAiBD,GAC7B,GAAIA,GAAQA,EAAKE,eAAgB,CAC7B,IAAIC,EAAM,SAAUhyF,GAChB,IAAIjI,EAAIuK,OAAOtC,GAIf,OAH4C,IAAxCjI,EAAE,QACFA,EAAI,IAAMA,GAEPA,GAEX,OAAO85F,EAAKE,iBACN,IAAMC,EAAIH,EAAKI,cAAgB,GAC/B,IAAMD,EAAIH,EAAKK,cACf,IAAMF,EAAIH,EAAKM,eACf,IAAMH,EAAIH,EAAKO,iBACf,IAAMJ,EAAIH,EAAKQ,iBACf,IAAM/vF,QAAQuvF,EAAKS,qBAAuB,KAAMC,QAAQ,IAAIr0D,MAAM,EAAG,GACrE,KAWP,SAAS4jD,GAAWr0E,EAAK4jF,EAAYz7F,GACxC,IAAI48F,EAAM/kF,EAAI,MACd,IACI,IAAK,IAAI8xE,EAAM,EAAGA,EAAMiT,EAAKjT,IACzB,GAAIA,KAAO9xE,IAC+E,IAAlF4jF,EAAW,MAA8Bz7F,GAAW6X,EAAKA,EAAI8xE,GAAMA,EAAK9xE,GACxE,MAKhB,MAAOpX,KAYJ,SAAS0rF,GAAWt0E,EAAKglF,EAAeC,GAC3C,GAAIjlF,EAAK,CAEL,GAAIA,EAAI8hF,GACJ,OAAO9hF,EAAI8hF,GAAYkD,EAAeC,GAE1C,IAAIF,EAAM/kF,EAAI,MACVklF,EAAOD,GAAa,EACxB,IACI,IAAK,IAAInO,EAAK3jF,KAAK4wD,IAAImhC,GAAQ,EAAIA,EAAOH,EAAM5xF,KAAKgyF,IAAID,GAAO,GAAIpO,EAAKiO,EAAKjO,IAC1E,GAAIA,KAAM92E,GAAOA,EAAI82E,KAAQkO,EACzB,OAAOlO,EAInB,MAAOluF,KAIX,OAAQ,EAUL,SAAS2rF,GAAOv0E,EAAK4jF,EAAYz7F,GACpC,IAAIi9F,EACJ,GAAIplF,EAAK,CAEL,GAAIA,EAAI+hF,GACJ,OAAO/hF,EAAI+hF,GAAQ6B,EAAYz7F,GAEnC,IAAI48F,EAAM/kF,EAAI,MACVrb,EAAQwD,GAAW6X,EACvBolF,EAAU,IAAIxhG,MAAMmhG,GACpB,IACI,IAAK,IAAIjO,EAAK,EAAGA,EAAKiO,EAAKjO,IACnBA,KAAM92E,IACNolF,EAAQtO,GAAM8M,EAAW,MAA8Bj/F,EAAOqb,EAAI82E,GAAK92E,IAInF,MAAOpX,KAIX,OAAOw8F,EAUJ,SAAS5Q,GAAUx0E,EAAK4jF,EAAY5kC,GACvC,IAAIx2D,EACJ,GAAIwX,EAAK,CAEL,GAAIA,EAAIgiF,GACJ,OAAOhiF,EAAIgiF,GAAW4B,EAAY5kC,GAEtC,IAAI+lC,EAAM/kF,EAAI,MACV82E,EAAK,EAET,GAAIxxF,UAAU,OAAqC,EAC/CkD,EAAQlD,UAAU,OAEjB,CACD,MAAOwxF,EAAKiO,KAASjO,KAAM92E,GACvB82E,IAEJtuF,EAAQwX,EAAI82E,KAEhB,MAAOA,EAAKiO,EACJjO,KAAM92E,IACNxX,EAAQo7F,EAAWp7F,EAAOwX,EAAI82E,GAAKA,EAAI92E,IAE3C82E,IAGR,OAAOtuF,EAKJ,SAASisF,GAAQ51E,GAKpB,OAJIA,IAEAA,EAAO2jF,GAAY3jF,EAAIojF,GAAapjF,EAAIojF,KAAepjF,EAAI,MAAsCA,EAAI,MAAoC,mBAAoB,MAAaA,GAEvKA,EAEX,IAAIwmF,IAA0B,CAAG5yF,SAAU,MAAQ6yF,qBAAqB,YACpEC,GAAoB,CACpB,WACA,iBACA,UACA,iBACA,gBACA,uBACA,eAQG,SAAS5Q,GAAQ31E,GACpB,IAAIwmF,SAAiBxmF,EAKrB,GAJIwmF,IAAY,MAAoBA,IAAY,MAAyB,OAARxmF,IAC7D,QAAe,iCAGdqmF,IAA0B/C,EAC3B,OAAOA,EAAStjF,GAEpB,IAAIlW,EAAS,GACb,IAAK,IAAI67E,KAAQ3lE,EACTA,GAAO,KAAkB,MAA8BA,EAAK2lE,IAC5D77E,EAAO,MAA8B67E,GAG7C,GAAI0gB,GAEA,IADA,IAAII,EAAkBF,GAAkB,MAC/BzO,EAAK,EAAGA,EAAK2O,EAAiB3O,IAC/B93E,GAAO,KAAkB,MAA8BA,EAAKumF,GAAkBzO,KAC9EhuF,EAAO,MAA8By8F,GAAkBzO,IAInE,OAAOhuF,EAYJ,SAAS8rF,GAAmB/qE,EAAQ86D,EAAM+gB,EAASC,GACtD,GAAIvQ,EACA,IACI,IAAIwQ,EAAa,CACbrzD,YAAY,EACZC,cAAc,GASlB,OAPIkzD,IACAE,EAAWhgG,IAAM8/F,GAEjBC,IACAC,EAAW/4E,IAAM84E,GAErBvQ,EAAmBvrE,EAAQ86D,EAAMihB,IAC1B,EAEX,MAAOh9F,IAKX,OAAO,EAEX,SAASi9F,GAAWr9F,GAChB,OAAOA,EAEJ,SAASs9F,GAAW9mF,GAQvB,OAPIqjF,GACAsB,EAAc3kF,GAAK,SAAUzH,EAAM/O,IAC3B+wE,EAAQ/wE,IAAU00E,EAAS10E,KAC3B65F,EAAW75F,MAIhBu9F,GAAU/mF,GAEd,IAAI+mF,GAAY1D,GAAcwD,GAM9B,SAAShR,KACZ,IAAImR,EAAKtzE,KACT,OAAOszE,EAAGpxE,IAAMoxE,EAAGpxE,OAAQ,IAAIoxE,GAAK/5D,UAKjC,SAAS88C,GAAiBgU,GAC7B,OAAIrU,EAAQqU,GACDA,EAAO,KAEX,KAYJ,SAASkJ,GAASp8E,EAAQ85D,EAAOn7E,EAAO09F,EAAQC,GACnD,IAAItU,EAAWrpF,EAQf,OAPIqhB,IACAgoE,EAAWhoE,EAAO85D,GACdkO,IAAarpF,GAAW29F,IAAUA,EAAOtU,IAAgBqU,IAAUA,EAAO19F,KAC1EqpF,EAAWrpF,EACXqhB,EAAO85D,GAASkO,IAGjBA,EAQJ,SAASuU,GAAYv8E,EAAQ85D,EAAOoS,GACvC,IAAIlE,EAaJ,OAZIhoE,GACAgoE,EAAWhoE,EAAO85D,IACbkO,GAAYkC,EAAkBlC,KAE/BA,EAAYiC,EAAYiC,GAAuB,GAAXA,EACpClsE,EAAO85D,GAASkO,IAKpBA,EAAYiC,EAAYiC,GAAuB,GAAXA,EAEjClE,EAOJ,SAASwU,GAAYxU,EAAUjR,GAClC,OAAQmT,EAAkBlC,GAAuBjR,EAAXiR,EAKnC,SAASyU,GAAS99F,GACrB,QAASA,EAEN,SAAS+9F,GAAWj2E,GACvB,MAAM,IAAIxrB,MAAMwrB,GAEpB,SAASk2E,GAAqBh8B,EAAQi8B,GAClC,IAAIC,EAAU,KACVn4B,EAAM,KAOV,OANIylB,EAAWxpB,GACXk8B,EAAUl8B,EAGV+D,EAAM/D,EAEH,WAEH,IAAIm8B,EAAoBrhG,UAIxB,GAHIohG,IACAn4B,EAAMm4B,KAENn4B,EACA,OAAOA,EAAIk4B,GAAU,MAAgCl4B,EAAKo4B,IAmB/D,SAASC,GAAY/8E,EAAQ2gD,EAAQq8B,GACxC,GAAIh9E,GAAU2gD,GAAU0S,EAASrzD,IAAWqzD,EAAS1S,GAAS,CAC1D,IAAIs8B,EAAU,SAAUnjB,GACpB,GAAIsQ,EAAStQ,GAAQ,CACjB,IAAIn7E,EAAQgiE,EAAOmZ,GACfqQ,EAAWxrF,GACNq+F,IAAUA,EAAOljB,GAAO,EAAMnZ,EAAQ3gD,KAEvCA,EAAO85D,GAAS6iB,GAAqBh8B,EAAQmZ,IAG3CkjB,IAAUA,EAAOljB,GAAO,EAAOnZ,EAAQ3gD,KACzC7lB,EAAe6lB,EAAQ85D,WAEhB95D,EAAO85D,GAEbiR,GAAmB/qE,EAAQ85D,GAAO,WACnC,OAAOnZ,EAAOmZ,MACf,SAAUkO,GACTrnB,EAAOmZ,GAASkO,OAKhBhoE,EAAO85D,GAASn7E,MAMhC,IAAK,IAAIm7E,KAASnZ,EACds8B,EAAQnjB,GAGhB,OAAO95D,EAWJ,SAASk9E,GAAgBl9E,EAAQtS,EAAMizD,EAAQw8B,EAASC,GACvDp9E,GAAUtS,GAAQizD,KACM,IAApBy8B,GAA6BnT,EAAYjqE,EAAOtS,OAChDsS,EAAOtS,GAAQivF,GAAqBh8B,EAAQw8B,IAYjD,SAASE,GAAer9E,EAAQ2gD,EAAQ28B,EAAkBF,GAQ7D,OAPIp9E,GAAU2gD,GAAU0S,EAASrzD,IAAW0vD,EAAQ4tB,IAChD9S,GAAW8S,GAAkB,SAAUC,GAC/BnT,EAASmT,IACTL,GAAgBl9E,EAAQu9E,EAAa58B,EAAQ48B,EAAaH,MAI/Dp9E,EAOJ,SAASw9E,GAAyBC,GACrC,OAAsB,WAClB,SAASC,IACL,IAAIC,EAAUtjG,KACVojG,GACA3D,EAAc2D,GAAU,SAAU3jB,EAAOn7E,GACrCg/F,EAAQ7jB,GAASn7E,KAI7B,OAAO++F,EATU,GAmBlB,SAASE,GAAeC,GAM3B,OAHIA,GAAa,OACbA,GAAY,SAAS,QAAU,GAAIA,KAEhCA,EAEJ,SAASC,GAAUC,EAAMC,EAAMC,EAAMC,EAAMC,EAAMC,GAEpD,IAAIC,EAAU5iG,UACV6iG,EAAWD,EAAQ,IAAM,GACzBE,EAASF,EAAQ,MACjBG,GAAO,EACPvW,EAAM,EAYV,IAVIsW,EAAS,GAAKjU,EAAUgU,KACxBE,EAAOF,EACPA,EAAWD,EAAQpW,IAAQ,GAC3BA,KAGC5U,EAASirB,KACVA,EAAW,IAGRrW,EAAMsW,EAAQtW,IAAO,CACxB,IAAIwW,EAAMJ,EAAQpW,GACdyW,EAAahvB,EAAQ+uB,GACrBE,EAAWtrB,EAASorB,GACxB,IAAK,IAAI3jB,KAAQ2jB,EAAK,CAClB,IAAIG,EAAUF,GAAe5jB,KAAQ2jB,GAAUE,GAAa,KAAkB,MAA8BF,EAAK3jB,GACjH,GAAK8jB,EAAL,CAGA,IAAIxgD,EAAWqgD,EAAI3jB,GACf+jB,OAAa,EAEjB,GAAIL,GAAQpgD,KAAcygD,EAAanvB,EAAQtxB,KAAck8C,EAAcl8C,IAAY,CAEnF,IAAI51B,EAAQ81E,EAASxjB,GACjB+jB,EACKnvB,EAAQlnD,KAETA,EAAQ,IAGN8xE,EAAc9xE,KAEpBA,EAAQ,IAGZ41B,EAAW0/C,GAAUU,EAAMh2E,EAAO41B,QAGrB7d,IAAb6d,IACAkgD,EAASxjB,GAAQ18B,KAI7B,OAAOkgD,I,qLCryBJ,IAAIQ,EAAY,GACZC,EAAe,WACfC,EAAW,OACXC,EAAsB,gBACtBC,EAAe,WACfC,EAAuB,kBACvBC,EAAiB,aACjBC,EAAwB,mBACxBC,EAAe,WACfC,EAAkB,aAClBC,EAAuB,kBACvBC,EAA0B,oBAC1BC,EAAiB,YACjBC,EAAuB,iBACvBC,EAAsB,gBACtBC,EAAmB,c,mICd1BC,EAAa,WACbC,EAAY,WAEZC,GAAa,EACbC,EAAQ,UACRC,EAAQ,UAEZ,SAASC,EAASC,GACVA,EAAY,IAEZA,KAAe,GAEnBH,EAAS,UAAYG,EAAaL,EAClCG,EAAS,UAAYE,EAAaL,EAClCC,GAAa,EAEjB,SAASK,IAGL,IACI,IAAIt1E,EAAkB,YAAZ,UACVo1E,GAAW72F,KAAKC,SAAWu2F,EAAc/0E,GAAOA,GAEpD,MAAOhsB,KASJ,SAASksF,EAAYqV,GACxB,OAAIA,EAAW,EACJh3F,KAAKq2C,MAAOg/B,IAAaohB,GAAcO,EAAW,MAAQ,EAE9D,EAMJ,SAAS3hB,EAAS4hB,GACrB,IAAI5hG,EAAQ,EACR2vE,GAAI,YAAe,UAuBvB,OAtBIA,GAAKA,EAAEplE,kBAEPvK,EAAQ2vE,EAAEplE,gBAAgB,IAAIs3F,YAAY,IAAI,GAAKT,GAEzC,IAAVphG,IAAe,YAEVqhG,GAEDK,IAIJ1hG,EAAQwsF,IAAgB4U,GAEd,IAAVphG,IAEAA,EAAQ2K,KAAKq2C,MAAOmgD,EAAax2F,KAAKC,SAAY,IAEjDg3F,IAED5hG,KAAW,GAERA,EAMJ,SAASusF,EAAcvsF,GACrBA,EAIDwhG,EAASxhG,GAHT0hG,IAYD,SAASlV,EAAYoV,GACxBL,EAAS,OAAiB,MAARA,IAAmBA,GAAS,IAAOH,EACrDE,EAAS,MAAiB,MAARA,IAAmBA,GAAS,IAAOF,EACrD,IAAIphG,GAAWuhG,GAAS,KAAe,MAARD,KAAqB,EAAKF,EAAY,EAKrE,OAJKQ,IAED5hG,KAAW,GAERA,EAOJ,SAAS+/E,EAAMtE,QACA,IAAdA,IAAwBA,EAAY,IACxC,IAAIqmB,EAAc,mEAEdC,EAAS/hB,MAAe,EACxBgiB,EAAQ,EACR1hG,EAAS,KACb,MAAOA,EAAO,MAAoCm7E,EAC9CumB,IACA1hG,GAAUwhG,EAAYtwD,OAAgB,GAATuwD,GAC7BA,KAAY,EACE,IAAVC,IAGAD,GAAY/hB,KAAc,EAAK,WAAwB,EAAT+hB,KAAoB,EAClEC,EAAQ,GAGhB,OAAO1hG,I,oGCxHP2hG,EAAkB,KAClBC,EAAkB,KAClBC,EAAmB,mCACnBC,EAAkB,mBAEtB,SAASC,EAASriG,EAAOu8F,EAAK+F,GAC1B,SAAItiG,GAASA,EAAM,QAAsCu8F,GAAOv8F,IAAUsiG,MAC7DtiG,EAAMmrC,MAAM,cAI7B,SAASo3D,EAAaviG,EAAOu8F,EAAKhP,GAC9B,OAAI8U,EAASriG,EAAOu8F,GACTv8F,EAEJutF,EAEX,SAASiV,EAAaxiG,IACdu4E,MAAMv4E,IAAUA,EAAQ,GAAKA,EAAQ,OACrCA,EAAQ,GAEZ,IAAIM,EAASN,EAAMiK,SAAS,IAC5B,MAAO3J,EAAO,MAAoC,EAC9CA,EAAS,IAAMA,EAEnB,OAAOA,EAUJ,SAASmiG,EAAkBC,EAASC,EAAQC,EAAO3gF,GACtD,IAAI5K,EACJ,OAAOA,EAAK,GACRA,EAAG,MAAmCgrF,EAASpgF,EAAS,EAAGigF,GAAmBjgF,EAAUggF,EACxF5qF,EAAG,MAAoCwrF,EAAeH,GAAWA,GAAU,UAC3ErrF,EAAGsrF,OAASG,EAAcH,GAAUA,GAAS,UAAgB,MAAkC,EAAG,IAClGtrF,EAAGysE,WAAa8e,GAAS,GAAKA,GAAS,IAAOA,EAAQ,EACtDvrF,EA4CD,SAASwrF,EAAe7iG,GAC3B,OAAOqiG,EAASriG,EAAO,GAAImiG,GASxB,SAASW,EAAc9iG,GAC1B,OAAOqiG,EAASriG,EAAO,GAAIoiG,GAqCxB,SAASW,EAAkB/iG,GAC9B,GAAIA,EAAO,CAGP,IAAI4iG,EAAQJ,EAAaxiG,EAAM,OAC1BqiG,EAASO,EAAO,KACjBA,EAAQ,MAEZ,IAAI3gF,EAAUjiB,EAAM,OAAuCiiG,EAM3D,MALgB,OAAZhgF,GAAgC,OAAZA,IAEpBA,EAAUggF,GAGP,GAAG//F,OAAO+f,EAAS,KAAK/f,OAAOqgG,EAAaviG,EAAM0iG,QAAS,GAAIP,GAAmB,KAAKjgG,OAAOqgG,EAAaviG,EAAM2iG,OAAQ,GAAIP,GAAkB,KAAKlgG,OAAO0gG,GAEtK,MAAO,K,+hBCnJJ,IAAII,EAAkB,aAClBze,EAAY,OACZ0e,EAAsB,eACtBC,EAAkB,aAClBC,EAAY,OACZC,EAAsB,gBACtBC,EAAc,SACdC,EAA2B,qBAC3BC,EAAc,SACdrf,EAAc,SACdsf,EAAY,OACZC,EAAoB,cACpBC,EAA6B,uBAC7BC,EAA6B,0BAC7BC,EAA6B,6BAC7BC,EAA6B,0BAC7BC,EAAmB,aACnBC,EAAkB,YAClBC,EAAa,QACbC,EAAmB,cACnBC,EAAc,SACdC,EAAgB,WAChBC,EAAkB,YAClB5f,EAAe,UACf6f,EAAgB,UAChBC,EAAoB,cACpBC,EAAc,SACdC,EAAgB,UAChBC,EAAgB,UAChBC,EAAuB,gBACvBC,EAAkB,YAClBC,EAAkB,YAClB/f,EAAgB,UAChBoB,EAAiB,YACjB4e,EAAkB,YAClB5gB,EAAa,QACb6gB,EAAmB,aACnBC,EAAc,SACdC,EAAiB,WACjBC,EAAa,QACbC,EAAe,UACfC,EAA6B,wBAC7BC,EAA4B,qBAC5BjhB,EAAqB,cACrBkhB,EAAY,OACZC,EAAY,OACZC,EAAe,UACfC,EAAiB,YACjBC,EAAoB,aACpBC,EAAe,SACfC,EAAe,SACfC,GAAgB,WAChBC,GAAgB,UAChBC,GAAe,SACfC,GAAmB,aACnBC,GAAe,W,wIClEnB,IAAIC,EAAkB,WAClBC,EAAgB,SAChBC,EAAmB,YACnBC,EAAmB,YACnBC,EAAwB,iBAExBC,EAAWrrG,OACXsrG,EAAWD,EAASF,GACpBI,EAAYF,EAAS,UACrBG,EAAYH,EAAS,UACrBI,EAAoBJ,EAAS,kBAC7BK,EAAoBJ,EAASF,I,+ECVpCO,EAAgB,KAab,SAASC,EAAUC,QACJ,IAAdA,IAAwBA,GAAY,GACxC,IAAIxmG,GAAuB,IAAdwmG,EAAsB,KAAOF,EAgB1C,OAfKtmG,WACUymG,aAAe,OACtBzmG,EAASymG,YAERzmG,UAAiB8yE,OAAS,OAC3B9yE,EAAS8yE,MAER9yE,UAAiBuf,SAAW,OAC7Bvf,EAASuf,QAERvf,UAAiB,EAAAO,IAAW,OAC7BP,EAAS,EAAAO,GAEb+lG,EAAgBtmG,GAEbA,EAEJ,SAAS0mG,EAAel/E,GAC3B,MAAM,IAAItmB,UAAUsmB,GAQjB,SAASm/E,EAAYzwF,GACxB,IAAIi0E,EAAO,KAEX,GAAIA,EAEA,OAAOA,EAAKj0E,GAEhB,GAAW,MAAPA,EACA,MAAO,GAEX,IAAIoS,SAAcpS,EAIlB,SAAS0wF,KAET,OALIt+E,IAAS,MAAiBA,IAAS,MACnCo+E,EAAe,0CAA4CxwF,GAG/D0wF,EAAQ,MAAoB1wF,EACrB,IAAI0wF,I,mFC5CJC,KARa,WAAe,IAAI,YAClB,WAAe,IAAI,WAOb,SAAUzqG,GAErC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAIrB,KADToB,EAAIG,UAAUF,GACAD,EACN,KAAS,MAAuBN,KAAKM,EAAGpB,KACxCmB,EAAEnB,GAAKoB,EAAEpB,IAIrB,OAAOmB,IAEA0qG,EAAa,MAAaD,EAEjCE,EAAkB,SAAUhsG,EAAGC,GAc/B,OAbA+rG,EAAkB,qBAEb,CAAElsG,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAChDD,EAAEF,UAAYG,IAGlB,SAAUD,EAAGC,GACT,IAAK,IAAIC,KAAKD,EACNA,EAAE,MAAuBC,KACzBF,EAAEE,GAAKD,EAAEC,KAIlB8rG,EAAgBhsG,EAAGC,IAEvB,SAASgsG,EAAYjsG,EAAGC,GAK3B,SAASG,IACLC,KAAKC,YAAcN,SALZC,IAAM,MAAyB,OAANA,IAChC,QAAe,uBAAyB+Q,OAAO/Q,GAAK,iCAExD+rG,EAAgBhsG,EAAGC,GAKnBD,EAAE,MAA0B,OAANC,GAAa,QAAYA,IAAMG,EAAG,MAAoBH,EAAE,MAAmB,IAAIG,GAmIlG,SAAS8rG,EAAgBC,EAAI9K,GAChC,IAAK,IAAI9/F,EAAI,EAAGwF,EAAKs6F,EAAK3/F,OAAQwF,EAAIilG,EAAGzqG,OAAQH,EAAIwF,EAAIxF,IAAK2F,IAC1DilG,EAAGjlG,GAAKm6F,EAAK9/F,GAEjB,OAAO4qG,EC/JJ,IAAIC,EAA6B,8BAC7BC,EAA0B,2BAC1BC,EAA4B,+B,iECfhC,SAASC,EAAoB9iF,EAAM+iF,EAAUC,EAAclqG,EAAQmqG,EAAkBC,GACxF,IAAI3wF,EACJywF,GAAe,QAAmBlqG,EAAQkqG,IAAiB,OACvD,QAAkBhjF,KAClB,QAAkB+iF,KAClB,QAAkBC,MAClB,QAAW,6CAEf,IAAIG,EAAO,GACPnjF,EAAK,QACLmjF,EAAOnjF,EAAK,aACLA,EAAK,OAEhB,IAAIojF,GAAiB7wF,EAAK,GACtBA,EAAG,KAA6BywF,EAChCzwF,EAAGypC,MAAO,QAAY,IAAI52B,MAC1B7S,EAAG4wF,KAAOA,EACV5wF,EAAG2mD,IAAMgqC,GAAsC,GAC/C3wF,EAAG8wF,KAAO,GACV9wF,EAAGvL,KAAO,GACVuL,EAAGwwF,SAAWA,EACdxwF,EAAG+wF,SAAWtjF,EAEdzN,GAOJ,OALK,QAAkB0wF,KACnB,QAAcA,GAAkB,SAAU5rB,EAAMn8E,GAC5CkoG,EAAcp8F,KAAKqwE,GAAQn8E,KAG5BkoG,EAEX,IAAIG,EAAsC,WACtC,SAASA,KAYT,OADAA,EAAqBxsG,OAAS+rG,EACvBS,EAb8B,GC1CrC,EAAuB,WAIvB,SAAS5wB,EAAM75E,EAAQmR,EAAM+wD,EAAYuc,GACrC3gF,KAAK4sG,eAAiB,CAClBC,IAAK,EACLx5F,KAAM,EACN+wD,WAAY,EACZuc,aAAc,GAElB,IAAI8S,EAAQzzF,KACZyzF,EAAMoZ,IAAM,EACZpZ,EAAM,MAAgC,QAAmBvxF,EAAQmR,IAAS,KAC1EogF,EAAM,OAA4C,QAAuBvxF,EAAQkiE,GACjFqvB,EAAM,OAAgD,QAAyBvxF,EAAQy+E,GAI3F,OAFA5E,EAAM+wB,aAAe,0CACrB/wB,EAAM6X,SAAW,YACV7X,EAnBe,GCAtB5sD,EAAuB,WAIvB,SAASA,EAAMjtB,EAAQkqB,EAAS2gF,EAAe3oC,EAAYuc,GACvD3gF,KAAK4sG,eAAiB,CAClBC,IAAK,EACLzgF,QAAS,EACT2gF,cAAe,EACf3oC,WAAY,GAEhB,IAAIqvB,EAAQzzF,KACZyzF,EAAMoZ,IAAM,EACZzgF,EAAUA,GAAW,KACrBqnE,EAAM,OAAsC,QAAoBvxF,EAAQkqB,GACxEqnE,EAAM,OAA4C,QAAuBvxF,EAAQkiE,GACjFqvB,EAAM,OAAgD,QAAyBvxF,EAAQy+E,GACnFosB,IACAtZ,EAAM,MAAmDsZ,GAKjE,OAFA59E,EAAM29E,aAAe,4CACrB39E,EAAMykE,SAAW,cACVzkE,EAvBe,GCHtB69E,EAA2B,WAC3B,SAASA,IAILhtG,KAAK4sG,eAAiB,CAClBv5F,KAAM,EACN45F,KAAM,EACN3oG,MAAO,EACP2jB,MAAO,EACPs9B,IAAK,EACLsa,IAAK,EACLqtC,OAAQ,GAKZltG,KAAKitG,KAAO,EAEhB,OAAOD,EAnBmB,GCI1BG,EAAwB,WAIxB,SAASA,EAAOjrG,EAAQmR,EAAM/O,EAAO2jB,EAAOs9B,EAAKsa,EAAKqtC,EAAQ9oC,EAAYuc,GACtE3gF,KAAK4sG,eAAiB,CAClBC,IAAK,EACLO,QAAS,EACThpC,WAAY,GAEhB,IAAIqvB,EAAQzzF,KACZyzF,EAAMoZ,IAAM,EACZ,IAAIQ,EAAY,IAAIL,EACpBK,EAAU,MAAkCplF,EAAQ,EAAIA,OAAQie,EAChEmnE,EAAUxtC,IAAMgd,MAAMhd,IAAgB,OAARA,OAAe35B,EAAY25B,EACzDwtC,EAAU9nD,IAAMs3B,MAAMt3B,IAAgB,OAARA,OAAerf,EAAYqf,EACzD8nD,EAAU,MAAgC,QAAmBnrG,EAAQmR,IAAS,KAC9Eg6F,EAAU/oG,MAAQA,EAClB+oG,EAAUH,OAASrwB,MAAMqwB,IAAsB,OAAXA,OAAkBhnE,EAAYgnE,EAClEzZ,EAAM2Z,QAAU,CAACC,GACjB5Z,EAAM,OAA4C,QAAuBvxF,EAAQkiE,GACjFqvB,EAAM,OAAgD,QAAyBvxF,EAAQy+E,GAI3F,OAFAwsB,EAAOL,aAAe,2CACtBK,EAAOvZ,SAAW,aACXuZ,EAzBgB,GCAvBG,EAA0B,WAI1B,SAASA,EAASprG,EAAQmR,EAAM1R,EAAKwvB,EAAYizC,EAAYuc,EAAc16C,GACvEjmC,KAAK4sG,eAAiB,CAClBC,IAAK,EACLx5F,KAAM,EACN1R,IAAK,EACL2sE,SAAU,EACVlK,WAAY,EACZuc,aAAc,EACd16C,GAAI,GAER,IAAIwtD,EAAQzzF,KACZyzF,EAAMoZ,IAAM,EACZpZ,EAAMxtD,IAAK,QAAe/jC,EAAQ+jC,GAClCwtD,EAAM9xF,KAAM,QAAgBO,EAAQP,GACpC8xF,EAAM,MAAgC,QAAmBvxF,EAAQmR,IAAS,KACrEwpE,MAAM1rD,KACPsiE,EAAM,OAAwC,QAAatiE,IAE/DsiE,EAAM,OAA4C,QAAuBvxF,EAAQkiE,GACjFqvB,EAAM,OAAgD,QAAyBvxF,EAAQy+E,GAI3F,OAFA2sB,EAASR,aAAe,6CACxBQ,EAAS1Z,SAAW,eACb0Z,EA3BkB,GCDzBC,EAAqC,WAIrC,SAASA,EAAoBrrG,EAAQmR,EAAM1R,EAAK6rG,EAAQppC,EAAYuc,EAAc8sB,GAC9EztG,KAAK4sG,eAAiB,CAClBC,IAAK,EACLx5F,KAAM,EACN1R,IAAK,EACL2sE,SAAU,EACVo/B,UAAW,EACXC,eAAgB,EAChBC,YAAa,EACbC,iBAAkB,EAClBC,cAAe,EACf1pC,WAAY,EACZuc,aAAc,GAElB,IAAI8S,EAAQzzF,KACZyzF,EAAMoZ,IAAM,EACZpZ,EAAM9xF,KAAM,QAAgBO,EAAQP,GACpC8xF,EAAM,MAAgC,QAAmBvxF,EAAQmR,IAAS,KAC1EogF,EAAM,OAA4C,QAAuBvxF,EAAQkiE,GACjFqvB,EAAM,OAAgD,QAAyBvxF,EAAQy+E,GACnF8sB,IACAha,EAAMqa,cAAgBL,EAAYK,cAClCra,EAAM,MAAwCga,EAAY,MAC1Dha,EAAMka,eAAiBF,EAAYE,eACnCla,EAAMia,UAAYD,EAAYC,UAC9Bja,EAAM,MAAyDga,EAAY,MAC3Eha,EAAMma,YAAcH,EAAYG,aAKxC,OAFAL,EAAoBT,aAAe,wDACnCS,EAAoB3Z,SAAW,0BACxB2Z,EAnC6B,GCEpCQ,EAAW,cACXC,EAAW,QACXC,EAAW,QACXC,EAAkB,eAClBC,EAAc,WACdC,EAAa,UACbC,EAAiB,cACrB,SAASC,EAAWhqG,EAAOiqG,GACvB,IAAI3pG,EAASN,EAiBb,OAhBIM,KAAW,QAASA,KAChB0V,MAAQA,KAAK,OACb1V,EAAS0V,KAAK,MAAwChW,IAClDiqG,GAAqB3pG,GAAqB,OAAXA,IAE3BA,GADA,QAAWN,EAAM,OACRA,EAAM,QAGN,GAAKA,IAKtBM,EAAcN,EAAQ,+BAGvBM,GAAU,GAErB,SAAS4pG,EAAe/S,EAAUgT,GAC9B,IAAIC,EAAajT,EAmBjB,OAlBIA,IACIiT,KAAe,QAASA,KACxBA,EAAajT,EAAS2S,IAAe3S,EAAS4S,IAAmBK,GAGjEA,KAAe,QAASA,KAExBA,EAAaJ,EAAWI,GAAY,IAEpCjT,EAAS,cAETiT,EAAaA,EAAa,MAAQjT,EAAS,aAAe,IAAM,KAAOA,EAAS,WAAa,KAAO,KAAOA,EAAS,UAAY,OAIpIgT,GAA2B,WAAdA,GAAwC,WAAdA,GAAwC,UAAdA,IAAiG,KAAvEC,GAAc,IAAI,MAAqCD,KAClJC,EAAaD,EAAY,KAAOC,GAE7BA,GAAc,GAEzB,SAASC,EAA4BrqG,GACjC,IACI,IAAI,QAASA,GACT,MAAO,iBAAkBA,GAAS,aAAcA,EAGxD,MAAOI,IAGP,OAAO,EAEX,SAASkqG,EAAqBtqG,GAC1B,IACI,IAAI,QAASA,GACT,MAAQ,QAASA,GAAS,eAAgBA,GAAS,eAAgBA,EAG3E,MAAOI,IAGP,OAAO,EAEX,SAASmqG,EAAgBjyE,GACrB,OAAOA,GAAWA,EAAQytC,MAAO,QAASztC,EAAQytC,MAAQztC,EAAQ9hB,MAAO,QAAQ8hB,EAAQ9hB,KAE7F,SAASg0F,EAAiBC,GACtB,IAAI1kC,EAAM0kC,GAAc,IACnB,QAAS1kC,KAENA,GADA,QAASA,EAAI4jC,IACP5jC,EAAI4jC,GAGJ,GAAK5jC,GAGnB,IAAI2kC,EAAQ3kC,EAAI,MAAgC,MAChD,MAAO,CACHA,IAAKA,EACLvvD,IAAKk0F,GAGb,SAASC,EAAe3uG,GAGpB,IAFA,IAAI04F,EAAQ,GACRkW,EAAQ5uG,EAAa,MAAgC,MAChDsyF,EAAK,EAAGA,EAAKsc,EAAM,MAAmCtc,IAAM,CACjE,IAAI52E,EAAQkzF,EAAMtc,GACdsc,EAAMtc,EAAK,KACX52E,GAAS,IAAMkzF,EAAMtc,EAAK,GAC1BA,KAEJoG,EAAMhzF,KAAKgW,GAEf,MAAO,CACHquD,IAAK/pE,EACLwa,IAAKk+E,GAGb,SAASmW,EAAsBC,GAC3B,IAAIxyE,EAAU,KACd,GAAIwyE,EACA,IAGI,GAAIA,EAASnB,GAETrxE,EAAUkyE,EAAiBM,EAASnB,SAEnC,GAAImB,EAASpB,IAAaoB,EAASpB,GAAUC,GAE9CrxE,EAAUkyE,EAAiBM,EAASpB,GAAUC,SAE7C,GAAImB,EAAS,cAAgBA,EAAS1wB,UAAUuvB,GACjDrxE,EAAUkyE,EAAiBM,EAAS1wB,UAAUuvB,SAE7C,GAAIY,EAAgBO,GACrBxyE,EAAUwyE,OAET,GAAIP,EAAgBO,EAASlB,IAC9BtxE,EAAUwyE,EAASlB,QAElB,GAAI/pF,QAAUA,OAAO,UAAYirF,EAAShB,GAE3CxxE,EAAUqyE,EAAeG,EAAS,YAEjC,GAAIA,EAAS,WAAaA,EAASC,OAAOpB,GAE3CrxE,EAAUkyE,EAAiBM,EAASC,OAAOpB,SAE1C,IAAI,QAASmB,GACdxyE,EAAUkyE,EAAiBM,OAE1B,CACD,IAAIV,EAAaU,EAAShB,IAAegB,EAASf,IAAmB,IACjE,QAASe,EAASjB,MACdO,IACAA,GAAc,MAElBA,GAAc,SAAWU,EAASjB,IAElCO,IACA9xE,EAAUkyE,EAAiBJ,KAIvC,MAAOhqG,GAGHk4B,EAAUkyE,EAAiBpqG,GAGnC,OAAOk4B,GAAW,CACdytC,IAAK,GACLvvD,IAAK,MAGb,SAASw0F,EAAkBC,GACvB,IAAIvW,EAAQ,GAWZ,OAVIuW,IACIA,EAAaz0F,KACb,QAAWy0F,EAAaz0F,KAAK,SAAUkB,GACnCg9E,GAASh9E,EAAQ,QAIrBg9E,EAAQuW,EAAallC,KAAO,IAG7B2uB,EAEX,SAASwW,EAAYxW,GACjB,IAAIyW,EACAC,EAAS1W,EAAMl+E,IACnB,GAAI40F,GAAUA,EAAO,MAAoC,EAAG,CACxDD,EAAc,GACd,IAAIE,EAAU,EACVC,EAAqB,GACzB,QAAWF,GAAQ,SAAUG,GACzB,IAAIC,EAAWD,EAAM,QACrB,GAAIE,EAAYzzF,MAAMhN,KAAKwgG,GAAW,CAClC,IAAIE,EAAc,IAAID,EAAYD,EAAUH,KAC5CC,GAAsBI,EAAY,MAClCP,EAAYzpG,KAAKgqG,OAKzB,IAAIC,EAAgC,MACpC,GAAIL,EAAqBK,EAA+B,CACpD,IAAIrwC,EAAO,EACPswC,EAAQT,EAAY,MAAoC,EACxD5xE,EAAO,EACPsyE,EAAevwC,EACfwwC,EAAgBF,EACpB,MAAOtwC,EAAOswC,EAAO,CAEjB,IAAIG,EAAQZ,EAAY7vC,GAAM,MAC1B0wC,EAAQb,EAAYS,GAAO,MAE/B,GADAryE,GAAQwyE,EAAQC,EACZzyE,EAAOoyE,EAA+B,CAEtC,IAAIM,EAAUH,EAAgBD,EAAe,EAC7CV,EAAYe,OAAOL,EAAcI,GACjC,MAGJJ,EAAevwC,EACfwwC,EAAgBF,EAChBtwC,IACAswC,MAIZ,OAAOT,EAEX,SAASgB,EAAchC,GAEnB,IAAIiC,EAAW,GACf,GAAIjC,IACAiC,EAAWjC,EAAUiC,UAAYjC,EAAU,MAAiC,IACvEiC,GACD,IACI,IAAIC,EAAgB,wBAChBzP,EAAU,EAAgB7mF,KAAK,EAAYpa,YAAY,SAC3DywG,EAAYxP,GAAWA,EAAQ,MAAoC,EAAKA,EAAQ,GAAK,GAEzF,MAAOx8F,IAKf,OAAOgsG,EAMJ,SAASE,EAAiBxB,GAC7B,GAAIA,EACA,IACI,KAAK,QAASA,GAAW,CACrB,IAAIX,EAAYgC,EAAcrB,GAC1BxqG,EAAS0pG,EAAWc,GAAU,GASlC,OARKxqG,GAAqB,OAAXA,IACPwqG,EAASpB,KAEToB,EAAWA,EAASpB,GACpBS,EAAYgC,EAAcrB,IAE9BxqG,EAAS0pG,EAAWc,GAAU,IAE6B,IAA3DxqG,EAAO,MAAqC6pG,IAAkC,WAAdA,EACzDA,EAAY,IAAM7pG,EAEtBA,GAGf,MAAOF,IAKX,MAAO,IAAM0qG,GAAY,IAE7B,IAAIyB,EAA2B,WAI3B,SAASA,EAAU3uG,EAAQw8E,EAAWta,EAAYuc,EAAcosB,EAAe9mE,GAC3EjmC,KAAK4sG,eAAiB,CAClBC,IAAK,EACLiE,WAAY,EACZ/D,cAAe,EACf3oC,WAAY,EACZuc,aAAc,GAElB,IAAI8S,EAAQzzF,KACZyzF,EAAMoZ,IAAM,EACP+B,EAAqBlwB,IAetB+U,EAAM,MAA4C/U,EAAU,OAA6C,GACzG+U,EAAM,MAA4C/U,EAAU,MAC5D+U,EAAM,MAAgD/U,EAAU,MAC5DA,EAAU,QACV+U,EAAM,MAAmD/U,EAAU,OAEnEA,EAAUz4C,KACVwtD,EAAMxtD,GAAKy4C,EAAUz4C,IAErBy4C,EAAU,QACV+U,EAAM,MAAiD/U,EAAU,QAGhE,QAAkBA,EAAU,SAC7B+U,EAAM,MAAyC/U,EAAU,SA5BxDta,IACDA,EAAa,IAEjBqvB,EAAM,MAA4C,CAAC,IAAIsd,EAAkB7uG,EAAQw8E,EAAWta,IAC5FqvB,EAAM,OAA4C,QAAuBvxF,EAAQkiE,GACjFqvB,EAAM,OAAgD,QAAyBvxF,EAAQy+E,GACnFosB,IACAtZ,EAAM,MAAmDsZ,GAEzD9mE,IACAwtD,EAAMxtD,GAAKA,IAgFvB,OA1DA4qE,EAAUG,oBAAsB,SAAU5kF,EAASzqB,EAAK47E,EAAYC,EAAcl3E,EAAOg3F,EAAKtE,EAAOiY,GACjG,IAAIt1F,EACA8yF,EAAYgC,EAAcnqG,GAASg3F,GAAOlxE,GAC9C,OAAOzQ,EAAK,GACRA,EAAG,MAAmC6yF,EAAepiF,EAASqiF,GAC9D9yF,EAAGha,IAAMA,EACTga,EAAG4hE,WAAaA,EAChB5hE,EAAG6hE,aAAeA,EAClB7hE,EAAGrV,MAAQsqG,EAAiBtqG,GAASg3F,GAAOlxE,GAC5CzQ,EAAG2hF,IAAMsT,EAAiBtT,GAAOlxE,GACjCzQ,EAAG,MAAsC8yF,EACzC9yF,EAAG4zF,aAAeJ,EAAsBnW,GAAS1yF,GAASg3F,GAC1D3hF,EAAGs1F,SAAWA,EACdt1F,GAERk1F,EAAUK,oBAAsB,SAAUhvG,EAAQw8E,EAAWta,EAAYuc,GACrE,IAAImwB,EAAapyB,EAAU,QACpB,QAAOA,EAAU,OAA2C,SAAUyyB,GAAM,OAAOJ,EAAkB,MAA8D7uG,EAAQivG,MAC9KC,EAAgB,IAAIP,EAAU3uG,EAAQ,EAAS,EAAS,GAAIw8E,GAAY,CAAEoyB,WAAYA,IAAe1sC,EAAYuc,GACrH,OAAOywB,GAEXP,EAAU3wG,UAAUmxG,YAAc,WAC9B,IAAI11F,EACAsP,EAAKjrB,KAAM8wG,EAAa7lF,EAAG6lF,WAAY1sC,EAAan5C,EAAGm5C,WAAYuc,EAAe11D,EAAG01D,aAAcosB,EAAgB9hF,EAAG8hF,cAAeuE,EAAermF,EAAGqmF,aAAcrrE,EAAKhb,EAAGgb,GAAIsrE,EAAWtmF,EAAGsmF,SAC/LC,EAA4BV,aAAsBpxG,QAC/C,QAAOoxG,GAAY,SAAUpyB,GAAa,OAAOA,EAAU2yB,uBAC3DnrE,EACP,OAAOvqB,EAAK,CACJkxF,IAAK,OAETlxF,EAAG,MAAyC61F,EAC5C71F,EAAGoxF,cAAgBA,EACnBpxF,EAAGyoD,WAAaA,EAChBzoD,EAAGglE,aAAeA,EAClBhlE,EAAG21F,aAAeA,EAClB31F,EAAGsqB,GAAKA,EACRtqB,EAAG41F,SAAWA,EACd51F,GAKRk1F,EAAUY,sBAAwB,SAAUrlF,EAASskF,EAAUgB,EAAUC,EAAU/0E,EAASg1E,GACxF,IAAIj2F,EACJ,MAAO,CACHm1F,WAAY,EACPn1F,EAAK,GACFA,EAAG,OAA+C,EAClDA,EAAGyQ,QAAUA,EACbzQ,EAAGq9E,MAAQp8D,EACXjhB,EAAG+0F,SAAWA,EACd/0F,MAIhBk1F,EAAU/D,aAAe,8CACzB+D,EAAUjd,SAAW,gBACrBid,EAAUgB,YAAcjB,EACjBC,EAzGmB,GA4G1BE,EAAmC,WACnC,SAASA,EAAkB7uG,EAAQw8E,EAAWta,GAC1CpkE,KAAK4sG,eAAiB,CAClB3mE,GAAI,EACJ6rE,QAAS,EACTpB,SAAU,EACVtkF,QAAS,EACT2lF,aAAc,EACd/Y,MAAO,EACPyW,YAAa,GAEjB,IAAIhc,EAAQzzF,KACZ,GAAK2uG,EAA4BjwB,GAiB7B+U,EAAM,MAAyC/U,EAAU,MACzD+U,EAAM,MAAsC/U,EAAU,MACtD+U,EAAMwa,GAAYvvB,EAAUuvB,GAC5Bxa,EAAM,MAA+C/U,EAAU,OAAgD,GAC/G+U,EAAM,MAAkD/U,EAAU,UArBzB,CACzC,IAAIp4E,EAAQo4E,EACR4e,EAAMh3F,GAASA,EAAMg3F,KACpB,QAAQh3F,KACTA,EAAQA,EAAM0nG,IAAa1Q,GAAOh3F,GAEtCmtF,EAAM,OAAyC,QAAmBvxF,EAAQuuG,EAAcnqG,KAAW,KACnGmtF,EAAM,OAAsC,QAAoBvxF,EAAQssG,EAAe9vB,GAAap4E,EAAOmtF,EAAM,SAA4C,KAC7J,IAAIuF,EAAQta,EAAUwvB,IAAoBiB,EAAsBzwB,GAChE+U,EAAM,MAA+C+b,EAAYxW,GACjEvF,EAAMwa,IAAY,QAAsB/rG,EAAQotG,EAAkBtW,IAClEvF,EAAMse,cAAe,QAAQte,EAAMgc,cAAgBhc,EAAMgc,YAAY,MAAoC,EACrGrrC,IACAA,EAAW,MAAyCA,EAAW,OAA0CqvB,EAAM,QAmC3H,OAxBAsd,EAAkB7wG,UAAUmxG,YAAc,WACtC,IAAI11F,EACA83E,EAAQzzF,KACRyvG,EAAchc,EAAM,gBAAwD/zF,QACzE,QAAO+zF,EAAM,OAA8C,SAAUoc,GAAS,OAAOA,EAAMwB,iBAC9FG,GAA6B71F,EAAK,CAC9BsqB,GAAIwtD,EAAMxtD,GACV6rE,QAASre,EAAMqe,QACfpB,SAAUjd,EAAM,MAChBrnE,QAASqnE,EAAM,MACfse,aAActe,EAAM,MACpBuF,MAAOvF,EAAMwa,IAEjBtyF,EAAG,MAA4C8zF,QAAevpE,EAC9DvqB,GACJ,OAAO61F,GAEXT,EAAkBG,oBAAsB,SAAUhvG,EAAQw8E,GACtD,IAAI+wB,EAAe/wB,EAAU,gBAAwDh/E,QAC9E,QAAOg/E,EAAU,OAA8C,SAAUmxB,GAAS,OAAOE,EAAY,MAA8DF,OACnKnxB,EAAU,MACbszB,EAAmB,IAAIjB,EAAkB7uG,EAAQ,EAAS,EAAS,GAAIw8E,GAAY,CAAE+wB,YAAaA,KACtG,OAAOuC,GAEJjB,EA5D2B,GA+DlChB,EAA6B,WAC7B,SAASA,EAAYkC,EAAarkF,GAC9B5tB,KAAK4sG,eAAiB,CAClBh/E,MAAO,EACP9rB,OAAQ,EACR4vG,SAAU,EACVC,SAAU,EACVC,KAAM,GAEV,IAAIne,EAAQzzF,KAIZ,GAHAyzF,EAAM,MAAgD,EAG3B,kBAAhBwe,EAA0B,CACjC,IAAIpC,EAAQoC,EACZxe,EAAM,MAAkC7lE,EACxC6lE,EAAM,MAAoCsa,EAC1Cta,EAAM,OAAwC,QAAQoc,GACtDpc,EAAM,MAAyC,GAC/CA,EAAM,MAAgC,EACtC,IAAIr5E,EAAUy1F,EAAMpgE,MAAMsgE,EAAYzzF,OAClClC,GAAWA,EAAQ,OAAqC,IACxDq5E,EAAM,OAAoC,QAAQr5E,EAAQ,KAAOq5E,EAAM,MACvEA,EAAM,OAAyC,QAAQr5E,EAAQ,IAC/Dq5E,EAAM,MAAgCxuC,SAAS7qC,EAAQ,KAAO,QAIlEq5E,EAAM,MAAkCwe,EAAY,MACpDxe,EAAM,MAAoCwe,EAAY,MACtDxe,EAAM,MAAwCwe,EAAY,MAC1Dxe,EAAM,MAAyCwe,EAAY,MAC3Dxe,EAAM,MAAgCwe,EAAY,MAClDxe,EAAM,MAAgD,EAE1DA,EAAMye,aAAeze,EAAM3xF,OAAO,MAClC2xF,EAAMye,aAAeze,EAAMke,SAAS,MACpCle,EAAMye,aAAeze,EAAMie,SAAS,MAEpCje,EAAM,OAAiDsc,EAAYoC,SACnE1e,EAAMye,aAAeze,EAAM7lE,MAAMrf,WAAW,MAC5CklF,EAAMye,aAAeze,EAAMme,KAAKrjG,WAAW,MAmB/C,OAjBAwhG,EAAYmB,oBAAsB,SAAUrB,GACxC,OAAO,IAAIE,EAAYF,EAAO,OAElCE,EAAY7vG,UAAUmxG,YAAc,WAChC,IAAI5d,EAAQzzF,KACZ,MAAO,CACH4tB,MAAO6lE,EAAM,MACb3xF,OAAQ2xF,EAAM,MACdie,SAAUje,EAAM,MAChBke,SAAUle,EAAM,MAChBme,KAAMne,EAAM,QAKpBsc,EAAYzzF,MAAQ,uFACpByzF,EAAYoC,SAAW,GAChBpC,EA5DqB,G,WC5b5BqC,EAAsC,WAItC,SAASA,EAAqBlwG,EAAQ+jC,EAAI8hC,EAAa4e,EAAariF,EAAOynB,EAASsmF,EAAYvwG,EAAQwwG,EAAYC,EAAoBnuC,EAAYuc,QAC7H,IAAf2xB,IAAyBA,EAAa,QAC1CtyG,KAAK4sG,eAAiB,CAClB3mE,GAAI,EACJ4mE,IAAK,EACLx5F,KAAM,EACNg/F,WAAY,EACZ/jC,SAAU,EACVviD,QAAS,EACT3b,KAAM,EACNuV,OAAQ,EACRuH,KAAM,EACNk3C,WAAY,EACZuc,aAAc,EACdssB,KAAM,EACN3oG,MAAO,EACP2jB,MAAO,EACPs9B,IAAK,EACLsa,IAAK,EACLqtC,OAAQ,EACRsF,eAAgB,EAChBC,iBAAkB,EAClB9rB,YAAa,EACb+rB,mBAAoB,GAExB,IAAIjf,EAAQzzF,KACZyzF,EAAMoZ,IAAM,EACZpZ,EAAMxtD,GAAKA,EACXwtD,EAAM,OAAwC,QAAanvF,GAC3DmvF,EAAM1nE,QAAUA,EAChB0nE,EAAM4e,WAAaA,EAAa,GAChC5e,EAAMvmE,MAAO,QAAmBhrB,EAAQowG,GACxC,IAAIK,GAAmB,QAA8BzwG,EAAQ6lE,EAAajmE,EAAQ6kF,GAClF8M,EAAMrjF,MAAO,QAAgBlO,EAAQykF,IAAgBgsB,EAAiBviG,KACtEqjF,EAAM9tE,QAAS,QAAmBzjB,EAAQywG,EAAiBhtF,QACvD4sF,IACA9e,EAAM9tE,OAAS,GAAGnf,OAAOitF,EAAM9tE,OAAQ,OAAOnf,OAAO+rG,IAEzD9e,EAAM,MAAgC,QAAmBvxF,EAAQywG,EAAiB,MAClFlf,EAAM,OAA4C,QAAuBvxF,EAAQkiE,GACjFqvB,EAAM,OAAgD,QAAyBvxF,EAAQy+E,GAI3F,OAFAyxB,EAAqBtF,aAAe,qDACpCsF,EAAqBxe,SAAW,uBACzBwe,EAhD8B,G,8FCArCQ,GAAyB,MACzBC,GAAsB,mBACtBC,GAAwB,qBACxBC,GAAsB,KACtBC,GAA2B,WAC3B,SAASA,EAAU3/F,EAAM4/F,EAAgBC,GACrC,IAQQC,EARJ1f,EAAQzzF,KACRozG,GAAkB,GACtB3f,EAAMtM,OAAQ,UACdsM,EAAM,MAAgCpgF,EACtCogF,EAAM,MAAuCyf,EAC7Czf,EAAM,OAA8C,WAAc,OAAO,IACrE,QAAWwf,MAGXG,GAAkB,QAAmB3f,EAAO,WAAW,WAOnD,OALK0f,IAAgB,QAAWF,KAC5BE,EAAeF,IAEfA,EAAiB,MAEdE,MAGf1f,EAAM,MAAqC,SAAU73E,GACjD,OAAIA,EAEIA,IAAQo3F,EAAUH,KAAwBj3F,IAAQo3F,EAAUF,IACrDrf,EAAM73E,IAET63E,EAAMmf,KAA2B,IAAIh3F,GAE1C,MAEX63E,EAAM,OAAqC,SAAU73E,EAAKtX,GACtD,GAAIsX,EAEA,GAAIA,IAAQo3F,EAAUH,IAEbpf,EAAM73E,KACP63E,EAAM,OAA8C,WAAc,OAAO,IAE7EA,EAAM73E,GAAOtX,OAEZ,GAAIsX,IAAQo3F,EAAUF,IACvBrf,EAAM73E,GAAOtX,MAEZ,CACD,IAAI+uG,EAAM5f,EAAMmf,IAA0Bnf,EAAMmf,KAA2B,GAC3ES,EAAIz3F,GAAOtX,IAIvBmvF,EAAM,OAAwC,WAC1C,IAAI6f,EAAY,EACZC,EAAY9f,EAAM,MAAmCuf,EAAUF,KACnE,IAAI,QAAQS,GACR,IAAK,IAAI3gB,EAAK,EAAGA,EAAK2gB,EAAU,OAAmC3gB,IAAM,CACrE,IAAI4gB,EAAWD,EAAU3gB,GACrB4gB,IACAF,GAAaE,EAAS,QAIlC/f,EAAM,QAAgC,UAAYA,EAAMtM,MACxDsM,EAAMggB,OAAShgB,EAAM,OAAgC6f,EACrD7f,EAAM,OAAwC,cACzC2f,IAAmB,QAAWH,KAE/Bxf,EAAMlsE,QAAU0rF,MAM5B,OAFAD,EAAUU,iBAAmB,SAC7BV,EAAUW,mBAAqB,YACxBX,EAxEmB,GA2E1BY,GAA6B,WAC7B,SAASA,EAAYC,GAKjB7zG,KAAKqzG,IAAM,IACX,OAAaO,EAAa5zG,MAAM,SAAUyzF,GACtCA,EAAMtzF,OAAS,SAAUkqE,EAAK4oC,EAAgBC,GAG1C,OAAO,IAAIF,GAAU3oC,EAAK4oC,EAAgBC,IAE9Czf,EAAMqgB,KAAO,SAAUC,GACfA,IACAA,EAAU,SACNF,IAAW,QAAWA,EAAQ,SAC9BA,EAAQ,OAAwCE,KAI5DtgB,EAAM,OAAqC,SAAU73E,EAAKtX,GACtD,GAAIsX,EAAK,CACL,IAAIy3F,EAAM5f,EAAMmf,IAA0Bnf,EAAMmf,KAA2B,GAC3ES,EAAIz3F,GAAOtX,IAGnBmvF,EAAM,MAAqC,SAAU73E,GACjD,OAAQ63E,EAAMmf,KAA2B,IAAIh3F,OAazD,OAFAg4F,EAAYte,QAAQ,EAEbse,EAzCqB,GA4C5BI,GAAkB,mBASf,SAASC,GAAOC,EAAWC,EAAWplB,EAAMnyD,EAASs2E,GACxD,GAAIgB,EAAW,CACX,IAAIE,EAAUF,EAKd,GAJIE,EAAQ,SAERA,EAAUA,EAAQ,UAElBA,EAAS,CACT,IAAIC,OAAU,EACVC,EAAgBF,EAAQ,MAAmCJ,IAC/D,IAEI,GADAK,EAAUD,EAAQj0G,OAAOg0G,IAAav3E,EAASs2E,GAC3CmB,EAAS,CACT,GAAIC,GAAiBD,EAAQ,SACzBA,EAAQ,OAAmCrB,GAAUH,IAAsByB,GACvEA,EAAc,OAAsCA,EAAc,QAAoC,CACtG,IAAIC,EAAWD,EAAc,MAAmCtB,GAAUF,KACrEyB,IACDA,EAAW,GACXD,EAAc,OAAmCtB,GAAUF,IAAwByB,IAEvFA,EAAS,OAA8BF,GAK/C,OADAD,EAAQ,OAAmCJ,GAAiBK,GACrDtlB,EAAKslB,IAGpB,MAAOlD,GACCkD,GAAWA,EAAQ,QACnBA,EAAQ,OAAmC,YAAalD,GAGhE,QAEQkD,GACAD,EAAQN,KAAKO,GAGjBD,EAAQ,OAAmCJ,GAAiBM,KAIxE,OAAOvlB,IAaJ,SAASylB,KACZ,OAAOzB,G,gBC5LP0B,IAAkB,QAAkB,UACjC,SAASC,GAAgBC,GAC5B,OAAOF,GAAgB/yG,IAAIizG,EAAQ,QAAS,IAAI,GAS7C,SAASC,GAAkBC,EAAgB13B,GAE9C,IAGI23B,EAHAC,EAAc,GACdC,EAAa,KACbj7B,EAAQ86B,EAAe,SAE3B,MAAO96B,EAAO,CACV,IAAIk7B,EAAYl7B,EAAM,SACtB,GAAIk7B,EAAW,CACPD,IACA,QAAWA,EAAW,UACtB,QAAWC,EAAU,SAErBD,EAAW,OAAkDC,GAEjE,IAAIC,GAAgB,GAChB,QAAWD,EAAU,QACrBC,EAAgBD,EAAU,UAG1BH,EAAcJ,GAAgBO,GAC9BC,EAAgBJ,EAAY,QAE3BI,GACDH,EAAY,OAA8BE,GAE9CD,EAAaC,EACbl7B,EAAQA,EAAM,WAItB,QAAWg7B,GAAa,SAAUE,GAC9B,IAAIloB,EAAO8nB,EAAe,SAC1BI,EAAU,OAA0CJ,EAAeM,SAAUpoB,EAAM5P,EAAY03B,EAAe,UAC9GC,EAAcJ,GAAgBO,GAEzBA,EAAU,QAAcH,EAAY,SACrCA,EAAY,OAAY/nB,GAE5B+nB,EAAY,QAAmD,SACxDA,EAAY,UAGpB,SAASM,GAAYC,GAExB,OAAOA,EAAQjvF,MAAK,SAAUkvF,EAAMC,GAChC,IAAI3wG,EAAS,EACb,GAAI2wG,EAAM,CACN,IAAIC,GAAc,QAAWD,EAAK,SAC9B,QAAWD,EAAK,QAChB1wG,EAAS4wG,EAAcF,EAAK,OAAgBC,EAAK,OAAgB,EAE5DC,IACL5wG,GAAU,QAIdA,EAAS0wG,EAAO,GAAK,EAEzB,OAAO1wG,KAmCR,SAAS6wG,GAA8B/tB,GAC1C,IAAIx4D,EAAQ,GACZ,MAAO,CACHy4D,QAAS,WACL,OAAOz4D,EAAM,OAEjB04D,QAAS,SAAU7jC,GACf2jC,GAAaA,EAAUE,QAAQ7jC,GAC/B70B,EAAM,MAAgC60B,GAE1C8jC,WAAY,WACR,OAAO34D,EAAM,QAEjB64D,WAAY,SAAUhkC,GAClB2jC,GAAaA,EAAUK,WAAWhkC,IAC9B,SAAeA,KACf70B,EAAM,OAAuC60B,IAGrDikC,UAAW,WACP,OAAO94D,EAAM,QAEjBg5D,UAAW,SAAUnkC,GACjB2jC,GAAaA,EAAUQ,UAAUnkC,IAC7B,SAAcA,KACd70B,EAAM,OAAqC60B,IAGnDokC,cAAe,WACX,OAAOj5D,EAAM,QAEjBm5D,cAAe,SAAUC,GACrBZ,GAAaA,EAAUW,cAAcC,GACrCp5D,EAAM,OAA6Co5D,ICxI/D,IAAIotB,GAA0B,uBAC1BC,GAAiB,UACjBC,GAAe,aACfC,GAAW,EACf,SAASC,GAAmB/7B,EAAOgT,EAAMgpB,GACrC,MAAOh8B,EAAO,CACV,GAAIA,EAAM,WAA+Cg8B,EACrD,OAAOh8B,EAEXA,EAAQA,EAAM,SAGlB,OAAOi8B,GAA0B,CAACD,GAAUhpB,EAAK,QAAqC,GAAIA,GAU9F,SAASkpB,GAAuBC,EAAgBlwD,EAAQ+mC,EAAMgpB,GAG1D,IAAII,EAAa,KACbC,EAAc,GACF,OAAZL,IAEAI,EAAaJ,EAAUD,GAAmBI,EAAgBnpB,EAAMgpB,GAAWG,GAE/E,IAAIG,EAAU,CACVC,MAAOC,EACPlD,IAAK,CACDtmB,KAAM,WACF,OAAOA,GAEXypB,QAAS,WACL,OAAO,SAAczpB,EAAM/mC,IAE/BmvD,OAAQ,WACJ,OAAOnvD,GAEXywD,UAAWC,EACXC,UAAWC,EACXC,QAAS,WACL,QAASV,GAEbW,QAAS,WACL,OAAOX,GAEXY,QAAS,SAAUC,GACfb,EAAaa,GAEjBC,QAASC,EACTC,WAAYC,IAGpB,SAASA,EAAeD,EAAYE,GAEhC,IADA,IAAIjlB,EAAO,GACFklB,EAAK,EAAGA,EAAKl2G,UAAUC,OAAQi2G,IACpCllB,EAAKklB,EAAK,GAAKl2G,UAAUk2G,GAEzBH,GACAf,EAAY,OAA8B,CACtCrnB,KAAMooB,EACNz/B,MAAO,QAAY2/B,GAAehB,EAAQhD,IAAfgE,EAC3BjlB,KAAMA,IAIlB,SAASmkB,IACL,IAAIgB,EAAYpB,EAGhB,GADAA,EAAaoB,EAAYA,EAAU,SAAyC,MACvEA,EAAW,CACZ,IAAIJ,EAAaf,EACbe,GAAcA,EAAW,OAAoC,KAC7D,QAAWA,GAAY,SAAUK,GAC7B,IACIA,EAAgBzoB,KAAK,OAA8ByoB,EAAgB9/B,KAAM8/B,EAAgBplB,MAE7F,MAAO1tF,IACH,SAAeqoF,EAAK,OAAmC,EAAkC,GAA8C,6CAA8C,QAAQroF,QAGrM0xG,EAAc,IAGtB,OAAOmB,EAEX,SAASb,EAAWt5B,EAAYV,EAAc+6B,GAG1C,IAAIC,EACJ,QAHqB,IAAjBh7B,IAA2BA,EAAe,SACzB,IAAjB+6B,IAA2BA,EAAe,GAE1CzxD,EAAQ,CACR,IAAI2xD,EAAY3xD,EAAO,OACnB2xD,GAAav6B,IACbs6B,EAAYC,EAAUv6B,IAG9B,GAAKs6B,GAIA,IAAI,QAASh7B,IACO,IAAjB+6B,EAAkD,CAElD,IAAIG,GAAc,SAAU,EAAMl7B,EAAcg7B,GAC5C1xD,GAA2B,IAAjByxD,IAGV,QAAc/6B,GAAc,SAAU+C,GAElC,IAAI,QAAkBm4B,EAAYn4B,IAAS,CACvC,IAAIo4B,EAAW7xD,EAAOy5B,IACjB,QAAkBo4B,KACnBD,EAAYn4B,GAASo4B,OAKrCH,EAAYE,QAnBhBF,EAAYh7B,EAsBhB,OAAOg7B,EAEX,SAASd,EAAWx5B,EAAYqC,EAAO/C,GAEnC,IAAIiR,OADiB,IAAjBjR,IAA2BA,GAAe,GAE9C,IAAIi7B,EAAYjB,EAAWt5B,EAAY,MAOvC,OANIu6B,KAAc,QAAkBA,EAAUl4B,IAC1CkO,EAAWgqB,EAAUl4B,GAEhBz5B,KAAW,QAAkBA,EAAOy5B,MACzCkO,EAAW3nC,EAAOy5B,KAEd,QAAkBkO,GAAuBjR,EAAXiR,EAE1C,SAASupB,EAAcY,GAEnB,IAAId,EACJ,MAAUA,EAAaX,EAAQC,QAAU,CACrC,IAAI3B,EAASqC,EAAW,SACpBrC,GAEAmD,EAAGnD,IAIf,OAAO0B,EASJ,SAAS0B,GAA8B7B,EAAgBlwD,EAAQ+mC,EAAMgpB,GACxE,IAAIiC,EAAkB/B,GAAuBC,EAAgBlwD,EAAQ+mC,EAAMgpB,GACvEM,EAAU2B,EAAgB3E,IAC9B,SAAS4E,EAAazhF,GAClB,IAAIwgF,EAAagB,EAAgB1B,QAGjC,OADAU,GAAcA,EAAW,OAAsDxgF,EAAK6/E,IAC5EW,EAEZ,SAASkB,EAAW7C,EAASU,GAKzB,YAJgB,IAAZV,IAAsBA,EAAU,OAChC,QAAQA,KACRA,EAAUW,GAA0BX,EAASrvD,EAAQ+mC,EAAMgpB,IAExDgC,GAA8B1C,GAAWgB,EAAQ,SAAwCrwD,EAAQ+mC,EAAMgpB,GAIlH,OAFAM,EAAQ,OAA+C4B,EACvD5B,EAAQ,OAA2C6B,EAC5C7B,EASJ,SAAS8B,GAAoCjC,EAAgBnpB,EAAMgpB,GACtE,IAAI/vD,EAAS+mC,EAAK,QAAqC,GACnDirB,EAAkB/B,GAAuBC,EAAgBlwD,EAAQ+mC,EAAMgpB,GACvEM,EAAU2B,EAAgB3E,IAC9B,SAAS4E,EAAaG,GAClB,IAAIpB,EAAagB,EAAgB1B,QAEjC,OADAU,GAAcA,EAAWqB,OAAOhC,EAAS+B,IACjCpB,EAEZ,SAASkB,EAAW7C,EAASU,GAKzB,YAJgB,IAAZV,IAAsBA,EAAU,OAChC,QAAQA,KACRA,EAAUW,GAA0BX,EAASrvD,EAAQ+mC,EAAMgpB,IAExDoC,GAAoC9C,GAAWgB,EAAQ,SAAwCtpB,EAAMgpB,GAIhH,OAFAM,EAAQ,OAA+C4B,EACvD5B,EAAQ,OAA2C6B,EAC5C7B,EASJ,SAASiC,GAAoCpC,EAAgBnpB,EAAMgpB,GACtE,IAAI/vD,EAAS+mC,EAAK,QAAqC,GACnDirB,EAAkB/B,GAAuBC,EAAgBlwD,EAAQ+mC,EAAMgpB,GACvEM,EAAU2B,EAAgB3E,IAC9B,SAAS4E,EAAaM,GAClB,OAAOlC,EAAQY,SAAQ,SAAUtC,IACzB,QAAWA,EAAO,SAClBA,EAAO,OAAkC0B,EAASkC,MAI9D,SAASL,EAAW7C,EAASU,GAKzB,YAJgB,IAAZV,IAAsBA,EAAU,OAChC,QAAQA,KACRA,EAAUW,GAA0BX,EAASrvD,EAAQ+mC,EAAMgpB,IAExDuC,GAAoCjD,GAAWgB,EAAQ,SAAwCtpB,EAAMgpB,GAIhH,OAFAM,EAAQ,OAA+C4B,EACvD5B,EAAQ,OAA2C6B,EAC5C7B,EASJ,SAASL,GAA0BX,EAASrvD,EAAQ+mC,EAAMgpB,GAC7D,IAAIyC,EAAa,KACbr7E,GAAM44E,EACV,IAAI,QAAQV,IAAYA,EAAQ,OAAoC,EAAG,CAEnE,IAAIoD,EAAc,MAClB,QAAWpD,GAAS,SAAUJ,GAI1B,GAHK93E,GAAO44E,IAAYd,IACpB93E,GAAM,GAENA,GAAO83E,IAAa,QAAWA,EAAU,QAAwD,CAEjG,IAAIyD,EAAWC,GAA2B1D,EAAWjvD,EAAQ+mC,GACxDyrB,IACDA,EAAaE,GAEbD,GAEAA,EAAYG,SAASF,GAEzBD,EAAcC,MAI1B,OAAI3C,IAAYyC,EAELxC,GAA0B,CAACD,GAAU/vD,EAAQ+mC,GAEjDyrB,EAaJ,SAASG,GAA2BhE,EAAQ3uD,EAAQ+mC,GACvD,IAGI8rB,EAHAtB,EAAY,KACZuB,GAAsB,QAAWnE,EAAO,QACxCoE,GAAa,QAAWpE,EAAO,QAG/BkE,EADAlE,EACUA,EAAO,OAA4C,IAAMA,EAAO,OAAuC,IAAMkB,KAG7G,aAAeA,KAE7B,IAAImD,EAAa,CACbC,UAAW,WACP,OAAOtE,GAEXmC,QAAS,WACL,OAAOS,GAEX2B,iBAAkBC,EAClBd,OAAQe,EACRC,OAAQC,EACRC,IAAKV,EACLD,SAAU,SAAU5B,GAChBO,EAAYP,IAGpB,SAASwC,IACL,IAAIC,EAUJ,OARI9E,IAAU,QAAWA,EAAOiB,OAE5B6D,EAAU9E,EAAOiB,OAEhB6D,IAEDA,EAAU1B,GAA8BiB,EAAYhzD,EAAQ+mC,IAEzD0sB,EAEX,SAASC,EAAcD,EAASE,EAAiBtmG,EAAMupB,EAASs2E,GAC5D,IAAI0G,GAAS,EACTx8B,EAAau3B,EAASA,EAAO,OAA4Ce,GACzEmE,EAAgBJ,EAAQ9D,IAiC5B,OAhCKkE,IAEDA,EAAgBJ,EAAQ9D,IAAkB,IAG9C8D,EAAQ1C,QAAQQ,GACZ5C,GACAV,GAAOwF,EAAQ,UAAgC,WAAc,OAAOr8B,EAAa,IAAM/pE,KAAS,WAE5FwmG,EAAchB,IAAW,EACzB,IAEI,IAAIiB,EAASvC,EAAYA,EAAUgC,IAAM,MACrCO,IACAD,EAAcC,IAAU,GAE5BF,EAASD,EAAgBF,GAE7B,MAAOnzG,GACH,IAAIyzG,GAAaxC,GAAYsC,EAActC,EAAUgC,KACjDQ,IAEAH,GAAS,GAERrC,GAAcwC,IAGf,SAAeN,EAAQ,SAAwC,EAAmC,GAA8C,WAAar8B,EAAa,mBAAqB/pE,EAAO,OAAQ,QAAQ/M,GAAS,iBAAkB,QAAQuzG,OAGlQj9E,EAASs2E,GAET0G,EAEX,SAAST,EAAkB3iF,EAAKijF,GAE5B,SAASO,EAAsBP,GAC3B,IAAK9E,IAAWmE,EACZ,OAAO,EAEX,IAAIhE,EAAcJ,GAAgBC,GAClC,OAAIG,EAAY,SAAyCA,EAAY,SAMjEiE,GAEApE,EAAO,OAAkD4C,GAE7D5C,EAAO,OAAsDn+E,EAAKijF,IAE3D,GAlBXA,EAAUA,GAAWD,IAoBhBE,EAAcD,EAASO,EAAuB,oBAAoB,WAAc,MAAO,CAAG5wF,KAAMoN,MAAaA,EAAQ,OAGtHijF,EAAQ,OAA6CjjF,GAG7D,SAAS4iF,EAAca,EAAW7B,GAC9B,SAAS8B,IAEL,IAAIN,GAAS,EACb,GAAIjF,EAAQ,CACR,IAAIG,EAAcJ,GAAgBC,GAC9BwF,EAAaxF,EAAO,QAAaG,EAAY,QAE7CH,GAAYwF,GAAcA,IAAeF,EAAUltB,QAAY+nB,EAAY,SAE3EA,EAAY,OAA+B,KAC3CA,EAAY,QAAwC,EACpDA,EAAY,QAAmD,EAC3DH,EAAO,SAAkH,IAAzEA,EAAO,OAAsCsF,EAAW7B,KAExGwB,GAAS,IAIrB,OAAOA,EAENF,EAAcO,EAAWC,EAAe,UAAU,cAAiB9B,EAAY,QAEhF6B,EAAU,OAA6C7B,GAG/D,SAASkB,EAAcc,EAAW7B,GAC9B,SAAS8B,IAEL,IAAIT,GAAS,EACb,GAAIjF,EAAQ,CACR,IAAIG,EAAcJ,GAAgBC,GAC9BwF,EAAaxF,EAAO,QAAaG,EAAY,QAE7CH,GAAYwF,GAAcA,IAAeC,EAAUrtB,QAAY+nB,EAAY,QACvEH,EAAO,SAA0G,IAArEA,EAAO,OAAkCyF,EAAW7B,KAEhGqB,GAAS,GAIrB,OAAOA,EAENF,EAAcU,EAAWC,EAAa,UAAU,eAAiB,IAElED,EAAU,OAA6C7B,GAG/D,OAAO,QAAUS,IAMwB,WAOzC,SAASsB,EAAwBC,EAAav0D,EAAQ+mC,EAAMgpB,GACxD,IAAItiB,EAAQzzF,KACRq2G,EAAU0B,GAA8BwC,EAAav0D,EAAQ+mC,EAAMgpB,IAEvE,QAAetiB,EAAO4iB,GAAS,QAAQA,MAXH,GAA5C,IC7bImE,GAAoB,WACpBC,GAAU,CACV,MAAO,MAAO,QAAS,SAG3B,SAASC,GAAS5+F,EAAKk/D,GACnB,GAAIl/D,EACA,IAAK,IAAI82E,EAAK,EAAGA,EAAK92E,EAAI,OAAmC82E,IACzD,GAAI5X,EAAGl/D,EAAI82E,GAAKA,GACZ,MAMhB,SAAS+nB,GAAaC,EAAOC,EAAaC,EAAQC,EAAS7tF,GACnDA,GAAQ,GAAgCA,GAAQ,GAChDwtF,GAASE,GAAO,SAAUI,EAAMptB,GAC5B,IAAIqtB,EAAOD,EAAKC,KACZnD,EAAKmD,EAAKR,GAAQvtF,IACtB,GAAI4qF,EAAI,CAEJ+C,EAAYxH,IAAM,WACd,IAAIA,EAAM0H,EAAQntB,GAAQmtB,EAAQntB,IAAQ,GAC1C,OAAOylB,GAEX,IACIyE,EAAG,OAAgC+C,EAAY9uB,KAAM+uB,GAEzD,MAAOhsG,GACH,IAAIosG,EAAQL,EAAY/rG,IACxB,IAEI,IAAIqsG,EAAcF,EAAKR,GAAQ,IAC3BU,IACAN,EAAY/rG,IAAMA,EAClBqsG,EAAY,OAAgCN,EAAY9uB,KAAM+uB,IAGtE,MAAOp2G,IAGP,QAEIm2G,EAAY/rG,IAAMosG,QAQ1C,SAASE,GAAoBC,GAEzB,OAAO,WACH,IAAI1/F,EACA2/F,EAAWt7G,KAEXu7G,EAAUn6G,UACVw5G,EAAQS,EAAOG,EACfC,GAAY9/F,EAAK,GACjBA,EAAG,MAA6B0/F,EAAOl6G,EACvCwa,EAAGowE,KAAOuvB,EACV3/F,EAAG03F,IAAM,KACT13F,EAAGgN,IAAM+yF,EACT//F,GACAo/F,EAAU,GACVD,EAASa,EAAY,CAACF,GAAWF,GAErC,SAASI,EAAYh2F,EAAQq+E,GAIzB,OAHA0W,GAAS1W,GAAS,SAAUI,GACxBz+E,EAAO,OAA8By+E,MAElCz+E,EAEX,SAAS+1F,EAAY9tB,EAAKtpF,GACtBi3G,EAAUI,EAAY,GAAIJ,GAC1BA,EAAQ3tB,GAAOtpF,EACfw2G,EAASa,EAAY,CAACF,GAAWF,GAVrCE,EAASne,KAAM,QAAc,SAa7Bqd,GAAaC,EAAOa,EAAUX,EAAQC,EAAS,GAE/C,IAAIjY,EAAUuY,EAAOp2G,EACrB,GAAI69F,EACA,IACI2Y,EAASG,KAAO9Y,EAAQ,OAAgCwY,EAAUC,GAEtE,MAAOzsG,GAKH,MAHA2sG,EAAS3sG,IAAMA,EACf6rG,GAAaC,EAAOa,EAAUX,EAAQC,EAAS,GAEzCjsG,EAKd,OADA6rG,GAAaC,EAAOa,EAAUX,EAAQC,EAAS,GACxCU,EAASG,MAIxB,SAASC,GAAUl2F,EAAQtS,EAAMyoG,GAC7B,IAAIC,EAAQ,KASZ,OARIp2F,KACI,QAAeA,EAAQtS,GACvB0oG,EAAQp2F,EAEHm2F,IACLC,EAAQF,IAAU,QAAal2F,GAAStS,GAAM,KAG/C0oG,EAQJ,SAASC,GAAgBr2F,EAAQ48E,EAAU3yE,GAC9C,OAAIjK,EACOs2F,GAAet2F,EAAO,MAAmB48E,EAAU3yE,GAAW,GAElE,KAcX,SAASssF,GAAsBH,EAAOxZ,EAAUvnB,EAAIprD,GAChD,IAAIyrF,EAASrgC,GAAMA,EAAGw/B,IACtB,IAAKa,EAAQ,CAETA,EAAS,CACLn6G,EAAG,EACHC,EAAGohG,EACHt9F,EAAG+1E,EACHwgC,EAAG,IAGP,IAAIW,EAAUf,GAAoBC,GAClCc,EAAQ3B,IAAqBa,EAC7BU,EAAMxZ,GAAY4Z,EAEtB,IAAIC,EAAU,CAEVn2E,GAAIo1E,EAAOn6G,EACX+5G,KAAMrrF,EACNysF,GAAI,WAGA,IAAIp2E,EAAKjmC,KAAKimC,GACdy0E,GAASW,EAAOG,GAAG,SAAUR,EAAMptB,GAC/B,GAAIotB,EAAK/0E,KAAOA,EAEZ,OADAo1E,EAAOG,EAAE,OAAkC5tB,EAAK,GACzC,OAQvB,OAFAytB,EAAOn6G,IACPm6G,EAAOG,EAAE,OAA8BY,GAChCA,EASJ,SAASH,GAAet2F,EAAQ48E,EAAU3yE,EAAWksF,GAExD,QADuB,IAAnBA,IAA6BA,GAAiB,GAC9Cn2F,GAAU48E,GAAY3yE,EAAW,CACjC,IAAImsF,EAAQF,GAAUl2F,EAAQ48E,EAAUuZ,GACxC,GAAIC,EAAO,CACP,IAAI/gC,EAAK+gC,EAAMxZ,GACf,UAAWvnB,IAAO,KACd,OAAOkhC,GAAsBH,EAAOxZ,EAAUvnB,EAAIprD,IAI9D,OAAO,KA+BJ,SAAS0sF,GAAgB32F,EAAQq1E,EAASprE,EAAWksF,GACxD,GAAIn2F,GAAUq1E,GAAWprE,EAAW,CAChC,IAAImsF,EAAQF,GAAUl2F,EAAQq1E,EAAS8gB,IAAmBn2F,EAC1D,GAAIo2F,EACA,OAAOG,GAAsBH,EAAO/gB,EAAS+gB,EAAM/gB,GAAUprE,GAGrE,OAAO,K,gBCtOJ,SAAS2sF,KACZ,IAAIC,EAAW,GACf,SAASC,EAAYC,GACbA,GACAF,EAAS,OAA8BE,GAG/C,SAASC,EAAa1C,EAAW7B,IAC7B,QAAWoE,GAAU,SAAUE,GAC3B,IACIA,EAAQzC,EAAW7B,GAEvB,MAAO1zG,IACH,SAAeu1G,EAAU,SAAwC,EAAkC,GAA8C,8CAA+C,QAAQv1G,QAGhN83G,EAAW,GAEf,MAAO,CACHr/E,IAAKs/E,EACLG,IAAKD,GCjBb,IAAIE,GAAe,YAMfC,GAAqC,WACrC,SAASA,IACL,IAEIC,EACAC,EACAC,EACAC,EACAC,EANA1pB,EAAQzzF,KA4HZ,SAASw5G,EAAW4D,QACG,IAAfA,IAAyBA,EAAa,MAC1C,IAAI3D,EAAU2D,EACd,IAAK3D,EAAS,CACV,IAAI4D,EAAUL,GAAYjF,GAA8B,KAAM,GAAItkB,EAAM,QAIpEgmB,EAFAwD,GAAeA,EAAYJ,IAEjBQ,EAAQ,OAAyC,KAAMJ,EAAYJ,KAGnEQ,EAAQ,OAAyC,KAAMJ,GAGzE,OAAOxD,EAEX,SAAS6D,EAAat3D,EAAQ+mC,EAAMwtB,GAC5Bv0D,IAEA,QAASA,EAAQ,MAAsB,GAAI,KAAM,OAEhDu0D,GAAextB,IAEhBwtB,EAAcxtB,EAAK,SAAiE,UAExF,IAAIiqB,EAAaiG,EACbA,GAAeA,EAAYJ,MAE3B7F,EAAaiG,EAAYJ,OAG7BppB,EAAM,OAA+B1G,EACrCiwB,EAAWjF,GAA8BwC,EAAav0D,EAAQ+mC,EAAMiqB,GAExE,SAASuG,IACLR,GAAiB,EACjBtpB,EAAM,OAA+B,KACrCupB,EAAW,KACXC,EAAc,KACdE,EAAS,GACTD,EAA0BX,KA7J9BgB,KACA,OAAaT,EAAqBrpB,GAAO,SAAUA,GAC/CA,EAAM,OAA4C,SAAUztC,EAAQ+mC,EAAM5P,EAAYo9B,GAClF+C,EAAat3D,EAAQ+mC,EAAMwtB,GAC3BwC,GAAiB,GAErBtpB,EAAM,OAAwC,SAAUwmB,EAAW7B,GAC/D,IAAIz8F,EAGAoxE,EAAO0G,EAAM,OACjB,GAAK1G,KAASktB,GAAaltB,IAASktB,EAAU,UAA9C,CAIA,IAAIr1G,EACA44G,GAAa,EACbC,EAAexD,GAAa9B,GAAoC,KAAMprB,EAAMkwB,GAAeA,EAAYJ,IAAgBI,EAAYJ,MAAkBI,GACrJS,EAAiBtF,IAAgBz8F,EAAK,CAClC0zF,OAAQ,GAEZ1zF,EAAG,OAAoC,EACvCA,GAwBJ,OAPK83E,EAAM,SAAsJ,IAAtGA,EAAM,OAA6CgqB,EAAcC,EAAgBC,GAKxI/4G,GAAS,EAJT+4G,IAMG/4G,EAvBP,SAAS+4G,IACL,IAAKH,EAAY,CACbA,GAAa,EACbN,EAAwBN,IAAIa,EAAcrF,GAC1C,IAAIwF,EAAWT,EACfA,EAAS,IAET,QAAWS,GAAU,SAAU5iC,GAC3BA,EAAGqhC,SAEQ,IAAXz3G,GACA64G,EAAa,OAA6CC,GAE9DH,OAYZ9pB,EAAM,OAAoC,SAAU2mB,EAAW7B,GAG3D,IAAIxrB,EAAO0G,EAAM,OACjB,GAAK1G,KAASqtB,GAAartB,IAASqtB,EAAU,UAA9C,CAIA,IAAIx1G,EACAi5G,GAAa,EACbC,EAAe1D,GAAa9B,GAAoC,KAAMvrB,EAAMkwB,GAAeA,EAAYJ,IAAgBI,EAAYJ,MAAkBI,GACrJc,EAAiBxF,GAAe,CAChClJ,OAAQ,GAcZ,OANK5b,EAAMuqB,YAAgF,IAAnEvqB,EAAMuqB,UAAUF,EAAcC,EAAgBE,GAIlEr5G,GAAS,EAHTq5G,IAKGr5G,EAZP,SAASq5G,IACAJ,IACDA,GAAa,EACbP,EAAaQ,EAAa3I,SAAU2I,EAAa/wB,OAAQ+wB,EAAa,aAWlFrqB,EAAMyqB,SAAW,SAAUtD,GACnBA,KACI,QAAQA,GACRuC,EAASA,EAAO32G,OAAOo0G,GAGvBuC,EAAO,OAA8BvC,MAIjD,QAAgBnnB,EAAO,gBAAgB,WAAc,OAAOypB,IAA4B,UAG5FzpB,EAAM,OAAuC,SAAUgmB,GACnD,OAAOD,EAAWC,GAAS,UAE/BhmB,EAAM,OAAmD,WACrD,OAAOspB,GAEXtpB,EAAM0qB,eAAiB,SAAUjJ,GAC7B6H,EAAiB7H,GAMrBzhB,EAAM,OAAoD,SAAUhvF,GAChEw4G,EAAcx4G,GAElBgvF,EAAM,OAA+C,SAAUj9D,EAAKijF,GAC5DA,EAEAA,EAAQ,OAA6CjjF,GAEhDymF,IAAe,QAAWA,EAAY,SAG3CA,EAAY,OAAsDzmF,EAAK,OAG/Ei9D,EAAM+lB,WAAaA,EAsDvB,OAFAsD,EAAoBxnB,QAAQ,EAErBwnB,EAnL6B,GCN7Bn0B,GAAiB,WACjBy1B,GAA6B,2BAC7BC,GAA6B,yBAC7BC,GAA6B,2BAC7BC,GAA6B,0CAC7BC,GAA2B,qBAC3BC,GAA6B,uBAC7BC,GAA6B,+BAC7BC,GAA6B,0BAC7BC,GAAmB,aACnBC,GAA6B,6BAE7BC,GAAY,OACZC,GAAiB,WACjBC,GAAqB,eACrBjW,GAAgB,UAChBkW,GAAa,QACbC,GAAuB,gBACvBC,GAA6B,yBAC7BC,GAA8B,uBAC9BC,GAA8B,kCAC9BC,GAA8B,mCAC9BC,GAAY,OACZC,GAA8B,wBAC9BC,GAAiB,YACjBC,GAAa,QACbC,GAAgB,WAChBC,GAAiB,WACjBC,GAAmB,aACnBC,GAAqB,eACrBh3B,GAAe,UACfi3B,GAA8B,sBAC9BC,GAA8B,0BAC9B31B,GAAgB,WAChB,GAAc,SACd41B,GAA8B,+BAC9BC,GAA8B,uBAC9BC,GAAwB,kBACxBC,GAA8B,wBAC9BC,GAA8B,+BAC9BC,GAA2B,mBAC3BC,GAAsB,gBACtBC,GAAqB,eACrBC,GAAsB,eACtBC,GAAoB,cACpBC,GAAmB,aACnBC,GAA8B,qBC9CrCC,GAAiC,WACjC,SAASA,EAAgBC,EAAaC,EAA0Bh0B,EAAMi0B,IAClE,OAAaH,EAAiB7gH,MAAM,SAAUyzF,GAC1C,IAGIwtB,EAHAC,EAAiB,KACjBC,EAAY,GACZC,GAA0B,EAK9B,SAASC,EAAenO,GAChBnmB,GACAA,EAAKu0B,MAAMpO,GAGnB,SAASqO,EAAUzJ,GACfqJ,EAAUn7G,KAAK8xG,GACVoJ,IACDA,EAAiB/gD,aAAY,WACzB,IAAIqhD,EAAWL,EAAU50E,MAAM,GAC3Bk1E,GAAU,EACdN,EAAY,IACZ,QAAWK,GAAU,SAAUp4F,GACtBA,IAKDq4F,GAAU,EAHVN,EAAUn7G,KAAKojB,MAM6B,IAAhD+3F,EAAU,MACV9gD,cAAc6gD,GACdA,EAAiB,MAEjBO,GAEAJ,GAAe,KAEnB,MAhCRt0B,IACAk0B,EAAUl0B,EAAK7qF,QAkCnBuxF,EAAMyrB,IAAoD,SAAUwC,EAAUrV,GAC1E,IAAIh5F,EAAOquG,EAASruG,KACpB,IAAI,QAAkBA,IAAyB,kBAATA,EAAmB,CACrD,IAAI2oE,GAAM,UACV3oE,EAAOquG,EAASruG,KAAO2oE,GAAOA,EAAIvX,OAAS,GAE/C,IAAIk9C,EAAMD,EAASC,IACnB,IAAI,QAAkBA,IAAuB,kBAARA,EAAkB,CACnD,IAAIvzB,GAAa,UACjBuzB,EAAMD,EAASC,IAAMvzB,GAAcA,EAAWmxB,KAAiC,GAKnF,IAAKyB,EAA2Bf,MAK5B,OAJAa,EAAY1B,IAAgEsC,EAAUrV,GACtFgV,GAAe,QAEf,SAAeJ,EAAS,EAAkC,GAA2D,mLAGzH,IACIW,EAWAtzC,EAZAuzC,GAAe,EAGf16B,EAAQ65B,EAA2Bd,MAAkEC,IACrGh5B,EAAQ,IACRy6B,GAAiB,QAAsBz6B,GAAQ,IAAI34D,MAC9CwyF,EAA2BZ,IAAiEwB,KAC7FA,OAAiB17E,KAMpB,QAAkBmmE,KAClB,QAAkBA,EAAiBhiB,OACpC/b,EAAW+9B,EAAiBhiB,MAE5B02B,GAA6BlkC,MAAMvO,KAC/BuO,MAAMvO,KAED+9B,IACDA,EAAmB,IAEvBA,EAAiBhiB,IAAwCu3B,GAG7Dd,EAAY1B,IAAgEsC,EAAUrV,GACtFgV,GAAe,GACfQ,GAAe,GAGnB,IAAIC,EAAmB,IAClBzV,IACDA,EAAmB,IAGvBkV,GAAU,WACN,IAAIQ,GAAY,EAChB,IACI,GAAIf,EAA2BX,MAA2E,CACtG0B,GAAY,EACZ,IAAIC,EAAsB,CACtB3uG,KAAMA,EACNsuG,IAAKA,GAETX,EAA2B1B,IAA4E0C,GAClGA,EAAoBC,SAAYJ,GAO5BA,IACDxV,EAAiBhiB,IAAwC23B,EAAoB7wF,WAC7E2vF,EAAY1B,IAAgEsC,EAAUrV,IAErF+U,IACDN,EAAYzB,IAA2E2C,EAAqB3V,GAC5G+U,GAA0B,KAV9B/U,EAAiBhiB,IAAwCu3B,EACzDd,EAAY1B,IAAgEsC,EAAUrV,SAarFllB,EAAQ,IAAK,QAAsBA,GAAQ,IAAI34D,MAAQszF,IAG5DC,GAAY,EACPF,IACDxV,EAAiBhiB,IAAwCy3B,EACzDhB,EAAY1B,IAAgEsC,EAAUrV,KAIlG,MAAO3nG,IACH,SAAeu8G,EAAS,EAAmC,GAAgD,mDAAoD,QAAiBv8G,GAAI,CAAEg6E,WAAW,QAAQh6E,KAE7M,OAAOq9G,MAGftuB,EAAMyuB,SAAW,SAAUjI,EAAW7B,GAClC,GAAI8I,EAAgB,CAChB7gD,cAAc6gD,GACdA,EAAiB,KACjB,IAAIM,EAAWL,EAAU50E,MAAM,GAE/B40E,EAAY,IACZ,QAAWK,GAAU,SAAUp4F,GACvBA,MACY,UAcpC,OAFAy3F,EAAgBvrB,QAAQ,EAEjBurB,EArKyB,GCHhCsB,GAAuB,KACvBC,GAAgB,CAAC,YAAa,gBAAiB,cAAe,wBAClE,SAASC,KACL,IAAIt7B,GAAO,SACX,OAAOA,KAAUA,EAAKC,OAE1B,SAASs7B,KACL,IAAIv7B,GAAO,SACX,OAAOA,GAAQA,EAAKw7B,kBAAoBx7B,EAAKw7B,iBAAiB,cAAc,IAAoC,EAEpH,SAASC,KACL,IAAIz7B,GAAO,SACPC,EAASD,EAAOA,EAAKC,OAAS,EAClC,OAAOA,GACAA,EAAOy7B,kBAAoB,GAC3Bz7B,EAAOm5B,IAAuD,GAC9Dn5B,EAAOu5B,IAAmD,GAC1Dv5B,EAAOw5B,IAAiD,GACxDx5B,EAAOy5B,IAAkD,GACzDz5B,EAAO05B,IAA+C,GACtD15B,EAAO25B,IAA6C,GACpD35B,EAAO07B,WAAa,EAE/B,SAASC,KACL,OAAIN,MACO,SAAiBr7B,OAErB,KAEX,SAAS47B,KACL,OAAIN,MACO,SAAiBhC,IAAyD,cAAc,GAE5F,KAKX,SAASuC,KAEL,IADA,IAAIC,EAAY,GACPxL,EAAK,EAAGA,EAAKl2G,UAAUC,OAAQi2G,IACpCwL,EAAUxL,GAAMl2G,UAAUk2G,GAE9B,IAAIyL,GAAa,WAAkB,GAE/B5iE,EAAY4iE,EAAW5iE,UACvB6iE,GAAc,EAClB,GAAI7iE,EACA,IAAK,IAAIj/C,EAAI,EAAGA,EAAIkhH,GAAc,IAAmClhH,IACjE8hH,EAAcA,IAAsE,IAAvD7iE,EAAU3rB,cAActZ,QAAQknG,GAAclhH,IAGnF,GAAI8hH,EAEA,OAAO,EAIP,IAAS9hH,EAAI,EAAGA,EAAI4hH,EAAU,IAAmC5hH,IAC7D,GAAI4hH,EAAU5hH,GAAK,GAAK4hH,EAAU5hH,IAAMihH,GACpC,OAAO,EAInB,OAAO,EAKX,IAAIc,GAA4C,WAC5C,SAASA,EAA2Bl2B,GAChC,IAAItsF,EAAQT,KACRihH,GAAU,SAAcl0B,IAC5B,OAAak2B,EAA4BjjH,MAAM,SAAUyzF,GACrDA,EAAM6rB,IAA8E,SAAU0C,GAC1FA,EAAoBC,SAAU,EAqB9B,IAAIiB,EAAmBN,KACnB57B,EAAS27B,KACTQ,EAAQ,EACRC,EAAU,EACVjhH,EAAU,EACVoB,EAAW,EACX8/G,EAAM,GACNH,GAAoBl8B,KAChBk8B,GACAC,EAAQD,EAAiB74B,IAMzB+4B,EAAyC,IAA/BF,EAAiBI,UAAkBJ,EAAiBvC,KAA6C,QAAsBuC,EAAiBI,UAAWJ,EAAiBvC,KAC9Kx+G,GAAU,QAAsB+gH,EAAiBK,aAAcL,EAAiB3C,KAChFh9G,GAAW,QAAsB2/G,EAAiB3C,IAAkD2C,EAAiBxC,KACrH2C,GAAM,QAAsBH,EAAiBM,YAAaN,EAAiBzC,OAG3E0C,GAAQ,QAAsBn8B,EAAOm5B,IAAsDn5B,EAAOy5B,KAClG2C,GAAU,QAAsBp8B,EAAOm5B,IAAsDn5B,EAAO25B,KACpGx+G,GAAU,QAAsB6kF,EAAOu8B,aAAcv8B,EAAOu5B,KAC5Dh9G,GAAW,QAAsByjF,EAAOu5B,IAAkDv5B,EAAO05B,KACjG2C,GAAM,QAAsBr8B,EAAOw8B,YAAax8B,EAAOy5B,MAE7C,IAAV0C,GACA,SAAelC,EAAS,EAAkC,GAA0C,2CAA4C,CAAEkC,MAAOA,EAAOC,QAASA,EAASjhH,QAASA,EAASoB,SAAUA,EAAU8/G,IAAKA,IAEvN5iH,EAAM2/G,IAAiE+C,EAAOC,EAASjhH,EAASoB,EAAU8/G,GAG3GF,EAAQl0G,KAAKq2C,MAAM89D,GAAWn0G,KAAKq2C,MAAMnjD,GAAW8M,KAAKq2C,MAAM/hD,GAAY0L,KAAKq2C,MAAM+9D,IAG3F,SAAepC,EAAS,EAAkC,EAAwD,iCAAkC,CAAEkC,MAAOA,EAAOC,QAASA,EAASjhH,QAASA,EAASoB,SAAUA,EAAU8/G,IAAKA,KAGjOrB,EAAoB7wF,WAAagyF,EAEjCnB,EAAoBtU,UAAYsU,EAAoB33B,KAAwC,QAAa84B,GACzGnB,EAAoBrU,gBAAiB,QAAayV,GAClDpB,EAAoBpU,aAAc,QAAazrG,GAC/C6/G,EAAoBnU,kBAAmB,QAAatqG,GACpDy+G,EAAoBlU,eAAgB,QAAauV,GACjDrB,EAAoBC,SAAU,IAf9B,SAAehB,EAAS,EAAkC,GAAmD,qEAAsE,CAAEkC,MAAOA,EAAOC,QAASA,EAASjhH,QAASA,EAASoB,SAAUA,EAAU8/G,IAAKA,MAmB5Q5vB,EAAMysB,IAAkEyC,GACxElvB,EAAMwsB,IAA0EoC,GAChF5uB,EAAM4sB,IAA0EmC,GAChF/uB,EAAM2sB,IAAmEyC,MAajF,OAFAI,EAA2B3tB,QAAQ,EAE5B2tB,EA7FoC,GClE3CQ,GAAsC,WAMtC,SAASA,EAAqBvhH,EAAQwhH,GAClC,IAAIC,EAA2B,qBAC/B,OAAaF,EAAsBzjH,MAAM,SAAUyzF,GAmB/C,SAASmwB,EAAsBC,EAAUC,GACrC,IAAIC,EAAoB,KACxB,IACIA,EAAoBC,IACpBC,EAAoBJ,EAAUC,GAElC,MAAOp/G,IACH,SAAexC,EAAQ,4BAA6B,QAAQwC,IAC5Dq/G,EAAoB,KAExB,OAAOA,EAOX,SAASE,EAAoBJ,EAAUC,GACnC,IACI,IAAI,UAA2B,CACmC,OAA1D,QAAqB5hH,EAAQyhH,KAC7B,QAAW,gFAEf,IAAIO,EAAoB,IAAIC,GAAcN,EAAUC,GAChDM,GAAuB,UAAU7pG,UAAU2pG,IAC/C,QAAqBhiH,EAAQyhH,EAA0BS,IAG/D,MAAO1/G,IAEH,SAAexC,EAAQ,0BAA2B,QAAQwC,KAOlE,SAASs/G,IACL,IAAID,EAAoB,KACxB,IACI,IAAI,UAA2B,CAE3B,IAAIM,GAAmB,UAEnBC,GAAuB,QAAqBpiH,EAAQyhH,GACpDW,IAAwB,YAExBP,GAAoB,UAAUhpG,MAAMupG,GACpCP,EAAkBQ,cAAgBF,EAAmBN,EAAkBnD,KAEvE,QAAwB1+G,EAAQyhH,KAI5C,MAAOj/G,IACH,SAAexC,EAAQ,kCAAmC,QAAQwC,IAClEq/G,EAAoB,KAExB,OAAOA,EA5EXtwB,EAAM0rB,IAAmE,SAAUqF,EAAiBC,GAChG,IAEI,IAAIC,EAAwBd,EAAsBY,EAAiBC,GAE/DC,GACAhB,EAA6BgB,EAAsBb,SAAUa,EAAsBZ,QAASY,EAAsBH,eAG1H,MAAO7/G,IACH,SAAexC,EAAQ,qEAAsE,QAAQwC,OAqE7G,QAAmB+uF,EAAO,WAAW,WAAc,OAAOvxF,MAC1D,QAAmBuxF,EAAO,gCAAgC,WAAc,OAAOiwB,QASvF,OAFAD,EAAqBnuB,QAAQ,EAEtBmuB,EAlG8B,GAqGrCU,GAA+B,WAC/B,SAASA,EAAcN,EAAUC,GAC7B9jH,KAAK4gH,KAAgE,UACrE5gH,KAAK6jH,SAAWA,EAChB7jH,KAAK8jH,QAAUA,EAEnB,OAAOK,EANuB,GCvG9BQ,GAAwB,WACxB,SAASA,EAAOziH,EAAQmR,GACpB,IAAIogF,EAAQzzF,KACR4kH,EAAU,GACdnxB,EAAMtM,MAAQ,SAAU9zE,GACS,qBAAlBuxG,EAAQvxG,KACf,SAAenR,EAAQ,EAAkC,GAAsD,uEAAwE,CAAEmR,KAAMA,EAAMuI,IAAKvI,IAAQ,GAEtNuxG,EAAQvxG,IAAS,IAAImb,MAEzBilE,EAAMoxB,KAAO,SAAUxxG,EAAM1R,EAAKyiE,EAAYuc,GAC1C,IAAIwG,EAAQy9B,EAAQvxG,GACpB,GAAIwpE,MAAMsK,IACN,SAAejlF,EAAQ,EAAkC,GAAqD,iDAAkD,CAAEmR,KAAMA,EAAMuI,IAAKvI,IAAQ,OAE1L,CACD,IAAI+zE,GAAO,IAAI54D,KACX8/C,GAAW,QAAsB6Y,EAAOC,GAC5CqM,EAAMqxB,OAAOzxG,EAAM1R,EAAK2sE,EAAUlK,EAAYuc,UAE3CikC,EAAQvxG,GACfuxG,EAAQvxG,QAAQ6yB,GAGxB,OAAOy+E,EAxBgB,GCMvBI,GAAW,QACf,SAASC,GAAer/F,EAAQs/F,GACxBt/F,GAAUA,EAAOu/F,eAAiBD,GAClCt/F,EAAOu/F,cAAcD,GAG7B,SAASE,GAAW7+G,GAChB,GAAIA,GAASA,EAAM+oG,OAAQ,CACvB,IAAIA,EAAS/oG,EAAM+oG,OACnB,QAAK,QAASA,KAAW,QAAWA,EAAO1mB,KAChC0mB,EAAO1mB,OAEX,QAAQ0mB,GAGnB,OAAO/oG,GAAS,GAEpB,IAAI8+G,GAAkB,IACtB,SAASC,GAAoB/gH,EAAOutF,GAKhC,OAJAvtF,EAAQA,GAASutF,EACbvtF,EAAQ8gH,KACR9gH,EAAQ8gH,IAEL9gH,EAEX,SAASghH,GAAkBt/D,GAqBvB,OApBKA,IACDA,EAAS,IAGbA,EAAOu/D,iBAAmBF,GAAoBr/D,EAAOu/D,iBAAkB,MACvEv/D,EAAOw/D,oBAAsBH,GAAoBr/D,EAAOw/D,oBAAqB,OAC7Ex/D,EAAOo4D,KAAqE,QAAsBp4D,EAAOo4D,KACzGp4D,EAAOq4D,KAAmE,QAAsBr4D,EAAOq4D,KACvGr4D,EAAOs4D,KAAqE,QAAsBt4D,EAAOs4D,KACzGt4D,EAAOu4D,KAAoF,QAAsBv4D,EAAOu4D,MACpH1hC,MAAM72B,EAAOw4D,MAA+Dx4D,EAAOw4D,KAA8D,GAAKx4D,EAAOw4D,KAA8D,OAC3Nx4D,EAAOw4D,IAA6D,KAExEx4D,EAAOy4D,KAAiE,QAAsBz4D,EAAOy4D,KACrGz4D,EAAO04D,KAAyE,QAAsB14D,EAAO04D,KAC7G14D,EAAO24D,KAAoE,QAAsB34D,EAAO24D,KACxG34D,EAAO44D,IAA6C54D,EAAO44D,KAA8C,GACzG54D,EAAOy/D,aAAc,QAAsBz/D,EAAOy/D,aAClDz/D,EAAO64D,KAAuE,QAAsB74D,EAAO64D,KAC3G74D,EAAO0/D,sBAAuB,QAAsB1/D,EAAO0/D,qBAAsB1/D,EAAO64D,KACjF74D,EAEX,SAAS2/D,GAAoBhO,IAGpB,QAAYA,EAAU8G,OACnB9G,EAAU8G,KACV,WAGA,WAIZ,IAAImH,GAAiC,SAAUvlH,GAE3C,SAASulH,IACL,IAIIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAjBAjmH,EAAQJ,EAAOM,KAAKX,OAASA,KACjCS,EAAM28E,WAAa6uB,EACnBxrG,EAAMkmH,SAAW,IACjBlmH,EAAMmmH,iBAAmB,IAmBzB,IAEIC,EACAC,EACAC,EA+iBJ,OA9iBA,OAAanB,EAAiBnlH,GAAO,SAAUgzF,EAAOuzB,GAClD,IAAI9I,EAAW8I,EAAM9I,SA4UrB,SAAS+I,EAAkBjhE,GACvB,IAAIqtD,EAAM0E,GAA8B,KAAM/xD,EAAQytC,EAAMqrB,KACxD1hC,EAAaqW,EAAMrW,WAEnBgmB,EAAWkiB,GAAkBt/D,GAC7B2xD,EAAYlkB,EAAMztC,OAASqtD,EAAIoD,UAAUr5B,GAU7C,YATiBl3C,IAAbk9D,IACA,QAAcA,GAAU,SAAU3jB,EAAOn7E,GAErCqzG,EAAUl4B,GAAS4zB,EAAIsD,UAAUv5B,EAAYqC,EAAOn7E,QAC3B4hC,IAArByxE,EAAUl4B,KACVk4B,EAAYrzG,MAIjBqzG,EAEX,SAASuP,EAA2BvP,EAAW3xD,GAC3CmgE,EAAgCxO,EAAU+G,KAA0E14D,EAAO04D,IAC3HyI,IAOJ,SAASC,EAAmBvD,EAAUC,EAASS,GAC3C,IAAIngD,EAAa,CAAEijD,SAAUxD,EAAUyD,QAASxD,GAChDrwB,EAAM8zB,YAAY,CACdl0G,KAAM,gBACNm0G,QAASjD,EACT1kD,IAAK0kD,EACLh/D,IAAKg/D,EACLkD,YAAa,GACdrjD,GAEP,SAAS+iD,IACL,IAAKf,GAAgCD,EAA+B,CAChE,IAAIuB,EAAqB,CAAC,uBAAwB,mBAC9CC,EAA0B,SAAUC,GACpC,GAAIzB,GAAiCyB,EAASzb,WAAaiG,EAAqB2M,IAAwC,CACpH,IAAI8I,EAAaD,EAASlb,SAC1B,GAAImb,EACA,IAAK,IAAI3mH,EAAI,EAAGA,EAAIwmH,EAAmB,IAAmCxmH,IACtE,GAAI2mH,EAAWliG,QAAUkiG,EAAWliG,OAAOzK,QAAQwsG,EAAmBxmH,KAAO,EACzE,OAAO,EAKvB,OAAO,GAEXuyF,EAAMusB,IAAmE2H,GACzEvB,GAA+B,GAGvC,SAAS0B,EAAmBppC,EAAWta,GACnC,IAAIooC,EAAgBN,EAAoBxtB,EAAWmyB,EAAUkO,IAAwClO,EAAUmO,IAAgDvrB,EAAMsV,MAAwC3kC,GAC7MqvB,EAAMqrB,IAA8BG,IAAgCzS,GAExE,SAASub,EAAyBpQ,GAC9B,IAAIqQ,GAAU,UACVC,GAAO,SAAY,GACvB1B,EAA4B5O,EAAUyG,IACjCmI,GAA8BC,GAA+B7O,EAAUuQ,4BAExEhK,EAAS5B,GAAgB0L,EAAS,UAAW,CACzCv1B,GAAIs0B,EACJoB,IAAK,SAAUtN,EAAazuF,EAASzqB,EAAK47E,EAAYC,EAAcl3E,GAC3DigH,IAAkD,IAArB1L,EAAYe,MAC1CnoB,EAAMksB,IAAsC9O,EAAUkP,IAA+D3zF,EAASzqB,EAAK47E,EAAYC,EAAcl3E,EAAOu0G,EAAYvd,SAGzL,IACHkpB,GAA6B,GAEjC4B,EAAsCzQ,EAAWqQ,EAASC,GAE9D,SAASI,EAAsB1Q,GAC3B,IAAI2Q,GAAM,UACNL,GAAO,SAAY,GAKvB,GAJA5B,GAA2G,IAAhF1O,EAAUgH,IAIjC2J,GAAOjC,IAA4B,UAAc,CACjD,IAAIkC,GAAW,WACX,QAAWA,EAASC,aAAc,QAAWD,EAAShqE,sBAAwBw9B,QAAU,MACxF0sC,EAAoB9Q,EAAW2Q,EAAKC,EAAUN,IAI1D,SAASS,IACL,IAAIC,EAAsB,KAI1B,GAHIl1B,EAAMqrB,KAAiCrrB,EAAMqrB,IAA8B8J,cAC3ED,EAAsBl1B,EAAMqrB,IAA8B8J,aAAY,KAErED,EAAqB,CAEtB,IAAIvkD,EAAaqvB,EAAMqrB,IAA8B7F,UAAUlN,GAC/D,GAAI3nC,EAAY,CACZ,IAAIiyC,EAAUjyC,EAAWuwC,OAAO0B,QAC5BA,IACAsS,GAAsB,QAAuCtS,EAAQ5uB,kBAIjF,OAAOkhC,EAKX,SAASF,EAAoB9Q,EAAW2Q,EAAKhqE,EAAS2pE,GAClD,IAAIY,EAAalR,EAAUiH,KAA8C,GACzE,SAASkK,IACDzC,GACArB,GAAesD,GAAK,OAAeO,EAAa,mBAGxD,SAASE,IASL,GAPIjC,GACAD,EAAWC,EACXA,EAAWmB,GAAQA,EAAK1I,KAAiC,IAGzDuH,EAAWmB,GAAQA,EAAK1I,KAAiC,GAEzD8G,EAA0B,CAC1B,IAAIsC,EAAsBD,IAC1B,GAAIC,EAAqB,CACrBA,EAAoB5gC,YAAW,YAC/B,IAAIihC,EAAoB,YACpBf,GAAQA,EAAKxpE,WACbuqE,EAAoBf,EAAKxpE,UAAYwpE,EAAKrkG,MAAQ,KAGtD+kG,EAAoB/gC,SAAQ,QAAmB6L,EAAMsV,MAAwCigB,IAEjGtgF,WAAW,SAAWi5E,GAElBluB,EAAMyrB,IAAkD,CAAE+J,OAAQtH,EAAKv9C,WAAY,CAAEkK,SAAU,MAChGjrB,KAAKrjD,KAAM6mH,GAAWpzB,EAAMmzB,mBAGlCN,IACDpI,EAAS5B,GAAgBh+D,EAAS,YAAa,CAC3Cm0C,GAAIs0B,EACJoB,IAAK,WACG9B,IACArB,GAAesD,GAAK,OAAeO,EAAa,cAChD7D,GAAesD,GAAK,OAAeO,EAAa,uBAGzD,IACH3K,EAAS5B,GAAgBh+D,EAAS,eAAgB,CAC9Cm0C,GAAIs0B,EACJoB,IAAK,WACG9B,IACArB,GAAesD,GAAK,OAAeO,EAAa,iBAChD7D,GAAesD,GAAK,OAAeO,EAAa,uBAGzD,KACH,SAAQP,EAAKO,EAAa,WAAYC,EAAkB/B,IACxD,SAAQuB,EAAKO,EAAa,iBAAkBE,EAAwBhC,GACpET,GAAwB,GAGhC,SAAS8B,EAAsCzQ,EAAWqQ,EAASkB,GAC/DzC,GAA2I,IAAhG9O,EAAU4G,IACjDkI,IAA6CC,IAE7CxI,EAAS5B,GAAgB0L,EAAS,uBAAwB,CACtDv1B,GAAIs0B,EACJoB,IAAK,SAAUtN,EAAav0G,GACpBmgH,IAAiE,IAArB5L,EAAYe,MACxDnoB,EAAMksB,IAAsC9O,EAAUkP,IAA+DoF,GAAW7+G,GAAQ4iH,EAAYA,EAAU3J,IAAgC,GAAI,EAAG,EAAGj5G,EAAOu0G,EAAYvd,SAGpO,IACHopB,GAAoC,EACpC/O,EAAUwR,iCAAmCzC,GAQrD,SAASlxB,EAAejB,EAAUjB,EAAOC,EAAKnvB,EAAYovB,GACtDC,EAAMsV,MAAuC3T,cAAcb,EAAUjB,EAAOC,EAAKnvB,EAAYovB,GAEjG,SAAS+pB,IACLsI,EAAiB,KACjBC,EAAgB,KAChBC,EAAmB,KACnBC,EAA8B,KAC9BC,EAAwB,KACxBC,EAAgC,KAChCC,GAAgC,EAChCC,GAA+B,EAC/BC,GAA2B,EAC3BC,GAAwB,EACxBC,GAA4B,EAC5BC,GAA6B,EAC7BC,GAA2C,EAC3CC,GAAoC,EAKf,EAErB,IAAIroE,GAAW,SAAY,GAC3BwoE,EAAWxoE,GAAYA,EAASkhE,KAAiC,GACjEuH,EAAW,KACXC,EAAgB,KApiBpBxJ,IACA9pB,EAAMzG,aAAe,WACjB,OAAO,SAAiByG,EAAMqrB,MAElCrrB,EAAMylB,iBAAmB,SAAU1iF,EAAKijF,GACpChmB,EAAM21B,YAAY5yF,EAAKijF,IAE3BhmB,EAAM41B,WAAa,SAAUziG,EAAOylF,GAChC,IACI,IAAIG,EAAgBN,EAAoBtlF,EAAO,EAAem4F,IAAwC,EAAeC,IAAgDvrB,EAAMsV,MAAwCsD,GACnN5Y,EAAMqrB,IAA8BG,IAAgCzS,GAExE,MAAO9nG,GACH8wF,EAAe,EAAkC,GAA+C,oDAAqD,QAAiB9wF,GAAI,CAAEg6E,WAAW,QAAQh6E,OAOvM+uF,EAAM61B,gBAAkB,SAAUj2G,GAC9B,IACIwyG,EAAe1+B,MAAM9zE,GAEzB,MAAO3O,GACH8wF,EAAe,EAAmC,GAAoD,yDAA0D,QAAiB9wF,GAAI,CAAEg6E,WAAW,QAAQh6E,OASlN+uF,EAAM81B,eAAiB,SAAUl2G,EAAM+wD,EAAYuc,GAC/C,IACIklC,EAAehB,KAAKxxG,OAAM6yB,EAAWk+B,EAAYuc,GAErD,MAAOj8E,GACH8wF,EAAe,EAAmC,GAAmD,wDAAyD,QAAiB9wF,GAAI,CAAEg6E,WAAW,QAAQh6E,OAShN+uF,EAAM+1B,WAAa,SAAUt6F,EAAOm9E,GAChC,IACI,IAAIG,EAAgBN,EAAoBh9E,EAAOC,EAAM4vF,IAAwC5vF,EAAM6vF,IAAgDvrB,EAAMsV,MAAwCsD,GACjM5Y,EAAMqrB,IAA8BG,IAAgCzS,GAExE,MAAO9nG,GACH8wF,EAAe,EAAkC,GAA+C,oDAAqD,QAAiB9wF,GAAI,CAAEg6E,WAAW,QAAQh6E,OAcvM+uF,EAAM8zB,YAAc,SAAUkC,EAAQpd,GAClC,IACI,IAAIG,EAAgBN,EAAoBud,EAAQtc,EAAO4R,IAAwC5R,EAAO6R,IAAgDvrB,EAAMsV,MAAwCsD,GACpM5Y,EAAMqrB,IAA8BG,IAAgCzS,GAExE,MAAO9nG,GACH8wF,EAAe,EAAmC,GAAgD,sDAAuD,QAAiB9wF,GAAI,CAAEg6E,WAAW,QAAQh6E,OAS3M+uF,EAAMyrB,IAAoD,SAAUwC,EAAUrV,GAC1E,IACI,IAAIqd,EAAOhI,GAAY,GACvBqE,EAAiB7G,IAAkDwK,EAAM,EAAS,EAAS,EAAS,GAAIA,EAAKtlD,YAAaslD,EAAK/oC,cAAe0rB,IAC1I5Y,EAAMztC,OAAOq4D,KACb4H,EAAsB9G,IAAiEuK,EAAKr2G,KAAMq2G,EAAK/H,KAG/G,MAAOj9G,GACH8wF,EAAe,EAAmC,GAA4C,2DAA4D,QAAiB9wF,GAAI,CAAEg6E,WAAW,QAAQh6E,OAS5M+uF,EAAM2rB,IAAkE,SAAUsC,EAAUt9C,EAAYkoC,GACpG,IAAItwB,GAAM,UACNA,IACA0lC,EAASuH,YAA6B/iF,IAApBw7E,EAASuH,OAAuBjtC,EAAI2tC,SAAWjI,EAASuH,QAE9E,IAAIzc,EAAgBN,EAAoBwV,EAAUpU,EAASyR,IAAwCzR,EAAS0R,IAAgDvrB,EAAMsV,MAAwC3kC,EAAYkoC,GACtN7Y,EAAMqrB,IAA8BG,IAAgCzS,GAE/C,GAOzB/Y,EAAM4rB,IAA6E,SAAU2C,EAAqB59C,EAAYkoC,GAC1H,IAAIE,EAAgBN,EAAoB8V,EAAqBzU,EAAoBwR,IAAwCxR,EAAoByR,IAAgDvrB,EAAMsV,MAAwC3kC,EAAYkoC,GACvP7Y,EAAMqrB,IAA8BG,IAAgCzS,IAOxE/Y,EAAMm2B,yBAA2B,SAAU5H,EAAqB3V,GAC5D,IAAIwd,EAAQ7H,GAAuB,GACnC,IACIgE,EAA4B1G,IAA4EuK,GACxGp2B,EAAM4rB,IAA2EwK,EAAOxd,GAE5F,MAAO3nG,GACH8wF,EAAe,EAAmC,GAA4C,sEAAuE,QAAiB9wF,GAAI,CAAEg6E,WAAW,QAAQh6E,OASvN+uF,EAAMq2B,eAAiB,SAAUz2G,GAC7B,IACI,GAAoB,kBAATA,EAAmB,CAC1B,IAAI2oE,GAAM,UACV3oE,EAAO2oE,GAAOA,EAAIvX,OAAS,GAE/BqhD,EAAc3+B,MAAM9zE,GAExB,MAAO3O,GACH8wF,EAAe,EAAmC,GAA+C,2DAA4D,QAAiB9wF,GAAI,CAAEg6E,WAAW,QAAQh6E,OAW/M+uF,EAAMs2B,cAAgB,SAAU12G,EAAM1R,EAAKyiE,EAAYlzC,GACnD,IACI,GAAoB,kBAAT7d,EAAmB,CAC1B,IAAI2oE,GAAM,UACV3oE,EAAO2oE,GAAOA,EAAIvX,OAAS,GAE/B,GAAmB,kBAAR9iE,EAAkB,CACzB,IAAIqoH,GAAM,UACVroH,EAAMqoH,GAAOA,EAAIzK,KAAiC,GAEtDuG,EAAcjB,KAAKxxG,EAAM1R,EAAKyiE,EAAYlzC,GACtCuiE,EAAMztC,OAAOq4D,KACb4H,EAAsB9G,IAAiE9rG,EAAM1R,GAGrG,MAAO+C,GACH8wF,EAAe,EAAmC,GAA8C,2DAA4D,QAAiB9wF,GAAI,CAAEg6E,WAAW,QAAQh6E,OAS9M+uF,EAAM+rB,IAAmE,SAAU9gC,EAAW2tB,EAAkBC,GAC5G,IAAI2d,EAAWvrC,EAAU+gC,KAA2C/gC,EAAUghC,KAAmC,IAAI9+G,MAAM,MACvHspH,EAAiB,IAAIrZ,EAAUpd,EAAMsV,MAAwCkhB,EAAUvrC,EAAUta,YAAcioC,EAAkB3tB,EAAUiC,aAAcjC,EAAUquB,cAAeruB,EAAUz4C,IAAIorE,cAChM7E,EAAgBN,EAAoBge,EAAgBrZ,EAAUkO,IAAwClO,EAAUmO,IAAgDvrB,EAAMsV,MAAwCsD,EAAkBC,GACpO7Y,EAAMqrB,IAA8BG,IAAgCzS,IAWxE/Y,EAAM02B,eAAiB,SAAUzrC,EAAW2tB,GACpC3tB,IAAcA,EAAU+gC,KAA2C/gC,EAAUghC,MAC7EhhC,EAAU+gC,IAA0C/gC,EAAUghC,KAElE,IACIjsB,EAAM+rB,IAAiE9gC,EAAW2tB,GAEtF,MAAO3nG,GACH8wF,EAAe,EAAmC,GAAmD,4DAA6D,QAAiB9wF,GAAI,CAAEg6E,WAAW,QAAQh6E,OAQpN+uF,EAAMksB,IAAwC,SAAUjhC,GACpD,IAAIp4E,EAAQo4E,GAAaA,EAAUghC,IAC/BpiB,EAAM5e,GAAaA,EAAU4e,IACjC,IACI,IAAKA,EAAK,CACN,IAAI0qB,GAAU,UACVA,IACA1qB,EAAM0qB,EAAQjD,KAGtB,IAAIpjH,EAAO+8E,GAAaA,EAAU/8E,OAAS,WAAiB,IAAIyoH,IAE5DnZ,EAAWvyB,EAAUkhC,KAA0C,kBAAoBj+G,EAAM,KAAO+8E,EAAUmhC,KAA8C,GAAK,KAAOnhC,EAAUohC,KAAkD,GAChO17C,EAAa,CACb6sC,SAAUA,EACVtvG,IAAKA,EACL47E,WAAYmB,EAAUmhC,KAA8C,EACpEriC,aAAckB,EAAUohC,KAAkD,EAC1E1zF,QAASsyD,EAAUoK,MAEnB,QAAmBpK,EAAUtyD,QAASsyD,EAAU/8E,IAAK+8E,EAAUnB,WAAYmB,EAAUlB,aAAckB,EAAUghC,KAC7GoI,EAAmBjX,EAAUkP,IAA+D,qJAAsJp+G,EAAK+8E,EAAUmhC,KAA8C,EAAGnhC,EAAUohC,KAAkD,EAAGx5G,EAAOg3F,EAAK,KAAM2T,GAAW7sC,IAGzYsa,EAAUkhC,MACXlhC,EAAUkhC,IAAyC3O,GAEvDxd,EAAM02B,eAAe,CAAEzrC,UAAWA,EAAWquB,cAAe,GAAgC3oC,IAGpG,MAAO1/D,GACH,IAAIyO,EAAc7M,EAASA,EAAM+M,KAAO,KAAO/M,EAAMwiF,IAAuC,OAC5F0M,EAAe,EAAmC,GAAyD,+EACrG,QAAiB9wF,GAAI,CAAEg6E,WAAW,QAAQh6E,GAAIyO,YAAaA,MAGzEsgF,EAAMusB,IAAqE,SAAUqK,GACjF,GAAI52B,EAAMqrB,IAEN,OAAOrrB,EAAMqrB,IAA8BkB,IAAmEqK,GAG7GnE,IACDA,EAAgC,IAEpCA,EAA8BlgH,KAAKqkH,IAEvC52B,EAAM1kB,WAAa,SAAU/oB,EAAQ+mC,EAAM5P,EAAYo9B,GACnD,IAAI9mB,EAAMyhB,gBAAV,EAGI,QAAkBnoB,KAClB,QAAW,sBAEfi6B,EAAMj4C,WAAW/oB,EAAQ+mC,EAAM5P,EAAYo9B,GAC3C,IACIwM,GAAgB,UAAkB,QAAsBtzB,EAAMrW,YAAa2P,EAAK6N,cAAgB7N,EAAK6N,gBACjGsrB,KACA,QAAWA,GAA+B,SAAUoE,GAChDv9B,EAAKizB,IAAmEsK,MAE5EpE,EAAgC,MAEpC,IAAIvO,EAAYsP,EAAkBjhE,GAClC2/D,GAAoBhO,GACpBqO,EAA8B,IAAI/C,GAA2BxvB,EAAMqrB,KACnEiH,EAAmB,IAAIlF,GAAgBpgH,EAAOk3G,EAAU2G,IAAoE7qB,EAAMqrB,IAA+BkH,GACjKC,EAAwB,IAAIxC,GAAqBhwB,EAAMsV,OAAwC,SAAU8a,EAAUC,EAASS,GAAiB,OAAO6C,EAAmBvD,EAAUC,EAASS,MAC1L2C,EAA2BvP,EAAW3xD,GACtC6/D,EAAiB,IAAIlB,GAAOlxB,EAAMsV,MAAwC,cAC1E8c,EAAef,OACX,SAAUzxG,EAAM1R,EAAK2sE,EAAUlK,EAAYuc,GAClCvc,IACDA,EAAa,IAEZuc,IACDA,EAAe,IAEnBvc,EAAWkK,SAAWA,EAASqa,MAC/B8K,EAAM41B,WAAW,CAAEh2G,KAAMA,EAAM+wD,WAAYA,EAAYuc,aAAcA,KAG7EmlC,EAAgB,IAAInB,GAAOlxB,EAAMsV,MAAwC,iBACzE+c,EAAchB,OAAS,SAAUzxG,EAAM1R,EAAK2sE,EAAUlK,EAAYuc,IAE1D,QAAkBvc,KAClBA,EAAa,IAEjBA,EAAWkK,SAAWA,EAASqa,MAC/B,IAAI4hC,EAAe,CACfl3G,KAAMA,EACNsuG,IAAKhgH,EACLyiE,WAAYA,EACZuc,aAAcA,GAElB8S,EAAM2rB,IAAgEmL,EAAcnmD,KAEpF,YACA2jD,EAAyBpQ,GACzB0Q,EAAsB1Q,IAG9B,MAAOjzG,GAGH,MADA+uF,EAAM0qB,gBAAe,GACfz5G,KAGd+uF,EAAM+2B,YAAc,SAAUvQ,EAAW7B,GACrC2N,GAAoBA,EAAiB7D,SAASjI,EAAW7B,IAEzD,SAASj0F,OAAQ,KAAM,KAAM4iG,GAC7BxJ,MA8NJ,QAAmB9pB,EAAO,oBAAoB,WAAc,OAAOsyB,MACnE,QAAmBtyB,EAAO,+BAA+B,WAAc,OAAOuyB,MAC9E,QAAmBvyB,EAAO,yBAAyB,WAAc,OAAOwyB,MACxE,QAAmBxyB,EAAO,iBAAiB,WAAc,MAAO,IAAMszB,QAEnEtmH,EAsBX,OAjmBA,EAAUmlH,EAAiBvlH,GA+lB3BulH,EAAgB6E,QAAU,QAC1B7E,EAAgB8E,iBAAmBpF,GAC5BM,EAlmByB,CAmmBlC9I,I,YCxqBF,SAAS6N,GAAYC,GACjB,IAAIC,EAAS,MAAQD,EAAW,IAChC,OAAO,SAAUv3G,GACb,OAAOw3G,EAASx3G,GAGxB,IAAIy3G,GAAiBH,GAAY,eAC7BI,GAAYJ,GAAY,UACxBK,GAAcL,GAAY,YAC1BM,GAAeN,GAAY,aAC3BO,GAAaP,GAAY,WACzBQ,GAAUR,GAAY,QACtBS,GAAWT,GAAY,SACvBU,GAAcV,GAAY,YAC1BW,GAAgC,SAAUjrH,GAE1C,SAASirH,IACL,OAAOjrH,EAAOM,KAAKX,OAASA,KAEhC,OAJA,EAAUsrH,EAAgBjrH,GAInBirH,EALwB,EAMjC,QAAyB,CACvBC,mBAAoBT,GAAe,OACnCU,iBAAkBV,GAAe,SACjCW,kBAAmBX,GAAe,UAClCY,cAAeZ,GAAe,iBAC9Ba,iBAAkBb,GAAe,SACjCc,SAAUb,GAAU,MACpBc,SAAUd,GAAU,MACpBe,eAAgBf,GAAU,YAC1BgB,aAAchB,GAAU,UACxBiB,YAAajB,GAAU,SACvBkB,mBAAoBlB,GAAU,gBAC9BmB,cAAenB,GAAU,WACzBoB,kBAAmBpB,GAAU,eAC7BqB,cAAerB,GAAU,WACzBsB,SAAUtB,GAAU,MACpBuB,gBAAiBvB,GAAU,aAC3BwB,mBAAoBxB,GAAU,gBAC9ByB,eAAgBzB,GAAU,YAC1B0B,uBAAwB1B,GAAU,oBAClC2B,WAAY3B,GAAU,QACtB4B,kBAAmB5B,GAAU,eAC7B6B,aAAc7B,GAAU,UACxB8B,cAAe9B,GAAU,WACzB+B,qBAAsB/B,GAAU,kBAChCgC,WAAY/B,GAAY,MACxBgC,gBAAiBhC,GAAY,WAC7BiC,iBAAkBjC,GAAY,YAC9BkC,aAAclC,GAAY,QAC1BmC,YAAalC,GAAa,MAC1B9xG,cAAe8xG,GAAa,QAC5BmC,kBAAmBnC,GAAa,YAChCoC,gBAAiBpC,GAAa,UAC9BqC,yBAA0BrC,GAAa,mBACvCsC,2BAA4BtC,GAAa,qBACzCuC,UAAWtC,GAAW,MACtBuC,eAAgBvC,GAAW,WAC3BwC,aAAcxC,GAAW,SACzByC,2BAA4BxC,GAAQ,0BACpCyC,cAAezC,GAAQ,aACvBhrE,UAAWgrE,GAAQ,aACnB0C,OAAQ1C,GAAQ,MAChB2C,gBAAiB3C,GAAQ,eACzB4C,eAAgB5C,GAAQ,cACxB6C,iCAAkC7C,GAAQ,2BAC1C8C,qCAAsC9C,GAAQ,2BAC9C+C,UAAW9C,GAAS,QACpB+C,UAAW/C,GAAS,QACpBgD,aAAchD,GAAS,WACvBiD,kBAAmBjD,GAAS,gBAC5BkD,iBAAkBlD,GAAS,eAC3BmD,cAAenD,GAAS,YACxBoD,oBAAqBpD,GAAS,kBAC9BqD,iBAAkBpD,GAAY,YAC9BqD,mBAAoBrD,GAAY,cAChCsD,qBAAsBtD,GAAY,gBAClCuD,gBAAiBvD,GAAY,WAC7BwD,eAAgBxD,GAAY,aChFrByD,GAAa,CACpBC,QAAS,OACTC,UAAW,SACXC,SAAU,QACVC,OAAQ,MACRC,OAAQ,MACRC,MAAO,KACPC,WAAY,MACZC,OAAQ,OAEDC,GAAa,IAAIjE,GCLxBkE,GAA0B,WAI1B,SAASA,EAASttH,EAAQkO,EAAMiD,GAC5B,IAAI5S,EAAQT,KACRyzF,EAAQzzF,KACZyzF,EAAMoZ,IAAM,EACZpZ,EAAMg8B,WAAa,IACnBh8B,EAAMgZ,KAAO,GACbhZ,EAAM,MAAgC,QAAmBvxF,EAAQmR,IAAS,KAC1EogF,EAAMrjF,KAAOA,EACbqjF,EAAMruC,MAAO,QAAY,IAAI52B,MAC7BilE,EAAMmZ,eAAiB,CACnBxnD,KAAM,EACNmnD,KAAM,EACNl5F,KAAM,EACNo8G,WAAY,WACR,OAA6B,MAArBhvH,EAAMgvH,WAAsB,EAA2B,GAEnEhjB,KAAM,EACNr8F,KAAM,GAGd,OAAOo/G,EAxBkB,GCJzBE,GAAsB,WAItB,SAASA,EAAKvjB,EAAU/7F,GAIpBpQ,KAAK4sG,eAAiB,CAClBT,SAAU,EACVO,SAAU,GAEd1sG,KAAKmsG,SAAWA,EAChBnsG,KAAK0sG,SAAWt8F,EAEpB,OAAOs/G,EAfc,GCKdC,GAAe,WCEfC,GAAY,OACZC,GAAmB,aACnBC,GAAY,OACZjnC,GAAY,OACZshB,GAAgB,UAChB,GAAc,SACdnhB,GAAiB,YACjBQ,GAAoB,eACpB,GAAiB,WACjB,GAAqB,eACrB,GAAiB,WACjBumC,GAAe,SACfC,GAAe,UACfjnC,GAAa,QACb,GAAY,OACZknC,GAA6B,wBAC7BC,GAAa,QACbC,GAAsB,gBACtBC,GAAoB,aACpBC,GAAkB,YAClBC,GAAoB,aACpBC,GAA0B,kBAC1BC,GAA0B,kBAC1B,GAAmB,aACnBC,GAA6B,sBAC7BC,GAAoB,cACpB,GAAgB,UAChBC,GAA6B,wBAC7BC,GAA6B,sBAC7BC,GAAe,UACfC,GAAsB,gBACtBC,GAAe,UACfC,GAA6B,6BAC7B,GAA2B,qBAC3BppB,GAA2B,qBAC3BqpB,GAAoB,cACpBC,GAAsB,gBACtBC,GAAmB,aACnBC,GAA6B,uBAC7BC,GAAyB,mBACzBC,GAAiB,WACjBC,GAAmB,aACnBC,GAAyB,mBACzBC,GAA6B,uBAC7BC,GAAiB,WACjBC,GAA2B,oBAC3BC,GAAmB,aACnBC,GAAsB,gBACtBC,GAAsB,gBACtBC,GAAyB,kBACzBC,GAA0B,mBAC1BC,GAA0B,mBAC1BC,GAA2B,oBAC3BC,GAA6B,sCAC7BC,GAA0B,mBAC1BC,GAA2B,mBC1DlCC,GAAc,WACdC,GAAc,WACdC,GAAgB,aAChBC,GAAU,OACd,SAASC,GAAY/sG,EAAQ85D,EAAOn7E,GAChC,OAAO,QAASqhB,EAAQ85D,EAAOn7E,EAAO,MAK1C,SAASquH,GAAwBzwH,EAAQknB,EAAMoN,GAE3C,IAAIo8F,EAAUp8F,EAAIo5F,IAAgCp5F,EAAIo5F,KAAiC,GACnFiD,EAASzpG,EAAKk5C,IAAMl5C,EAAKk5C,KAAO,GAChCwwD,EAAU1pG,EAAKwmG,IAAgCxmG,EAAKwmG,KAAiC,GACrFmD,EAAUF,EAAOG,KACjBD,IACAL,GAAYE,EAASrD,GAAWxB,eAAgBgF,EAAQE,QACxDP,GAAYE,EAASrD,GAAW1B,OAAQkF,EAAQ9sF,IAAM8sF,EAAQG,UAElE,IAAIC,EAASN,EAAOO,IAChBD,GACAT,GAAYE,EAASrD,GAAW/B,UAAW2F,EAAOE,OAEtD,IAAIC,EAAYT,EAAOU,OACnBD,IACAZ,GAAYE,EAASrD,GAAW3D,SAAU0H,EAAUrtF,IAAMqtF,EAAUJ,SACpER,GAAYE,EAASrD,GAAWM,IAA4CyD,EAAUE,aACtFd,GAAYE,EAASrD,GAAW1D,SAAUyH,EAAUG,IACpDf,GAAYE,EAASrD,GAAWvD,YAAasH,EAAUI,OACvDhB,GAAYE,EAASrD,GAAWM,IAA4CyD,EAAUzD,MAE1F,IAAI8D,EAAMvqG,EAAKk5C,IAAIqxD,IACnB,GAAIA,EAAK,CACLjB,GAAYE,EAASrD,GAAWzD,eAAgB6H,EAAIC,aACpDlB,GAAYE,EAASrD,GAAWzC,qBAAsB6G,EAAIE,YAC1DnB,GAAYE,EAASrD,GAAW1C,cAAe8G,EAAIv8C,SACnD,IAAI08C,EAAUt9F,EAAIs5F,IAAgCt5F,EAAIs5F,KAAiC,GACnFiE,EAAcD,EAAQvB,IAAeuB,EAAQvB,KAAgB,GAC7DyB,EAAWD,EAAYvB,IAAiBuB,EAAYvB,KAAkB,GAC1EE,GAAYsB,EAAU,SAAUL,EAAIztC,QACpCwsC,GAAYsB,EAAU,WAAYL,EAAIpiB,SAAWkhB,GAAU,MAC3DC,GAAYsB,EAAU,YAAaL,EAAIM,WACvCvB,GAAYsB,EAAU,cAAeL,EAAIO,YAAczB,GAAU,MAErE,IAAI0B,EAAQtB,EAAOr4E,GACf25E,GACAzB,GAAYE,EAASrD,GAAWlD,SAAU8H,EAAMtrC,KAGpD,IAAIurC,EAAWvB,EAAO3jG,MAClBklG,IACA1B,GAAYE,EAASrD,GAAWnC,kBAAmBgH,EAASnsC,UAC5DyqC,GAAYE,EAASrD,GAAWp2G,eAAe,QAAmBjX,EAAQkyH,EAASvrC,MACnF6pC,GAAYE,EAASrD,GAAWpC,YAAaiH,EAASjqB,MAmB1D,IAFA,IAAIkqB,EAAM,GAEDnzH,EAAI4xH,EAAQ,IAAoC,EAAG5xH,GAAK,EAAGA,IAAK,CACrE,IAAIozH,EAAKxB,EAAQ5xH,IACjB,QAAcozH,GAAI,SAAU14G,EAAKtX,GAC7B+vH,EAAIz4G,GAAOtX,KAEfwuH,EAAQtiB,OAAOtvG,EAAG,IAGtB,QAAc4xH,GAAS,SAAUwB,EAAIhwH,GACjC+vH,EAAIC,GAAMhwH,KAEd,IAAIiwH,EAAU,EAAS,EAAS,GAAI3B,GAAUyB,GACzCE,EAAQhF,GAAWb,sBAEpB6F,EAAQhF,GAAWb,oBAAsB,cAAcloH,OAAOguH,GAAgB/J,UAElFj0F,EAAIo5F,KAAgC,QAAe2E,GAEvD,SAASE,GAA6BrkH,EAAMg0D,EAAYuc,IAC/C,QAAkBvwE,KACnB,QAAcA,GAAM,SAAUwL,EAAKtX,IAC3B,QAASA,GACTq8E,EAAa/kE,GAAOtX,GAEf,QAASA,GACd8/D,EAAWxoD,GAAOtX,GAEb,YACL8/D,EAAWxoD,IAAO,UAAUotE,IAAwC1kF,OAKpF,SAASowH,GAA2CtwD,EAAYuwD,IACvD,QAAkBvwD,KACnB,QAAcA,GAAY,SAAUxoD,EAAKtX,GACrC8/D,EAAWxoD,GAAOtX,GAASqwH,KAKvC,SAASC,GAAgB1yH,EAAQ4qG,EAAcN,EAAep8F,GAC1D,IAAIw3G,EAAW,IAAI4H,GAASttH,EAAQkO,EAAM08F,GAC1C4lB,GAAY9K,EAAU,aAAcpb,EAAc,QAC7CA,EAAc+lB,KAAgB,IAAIjP,YACnCsE,EAASxiE,MAAO,QAAYonD,EAAc+lB,IAAajP,YAE3DsE,EAASrb,KAAOC,EAAcD,KAC9B,IAAIsoB,EAAeroB,EAAcD,KAAKr7F,QAAQ,KAAM,IAMpD,OALA02G,EAAS/+B,IAAgC++B,EAAS/+B,IAA8B33E,QAAQ,MAAO2jH,GAE/FlC,GAAwBzwH,EAAQsqG,EAAeob,GAE/Cpb,EAAcojB,IAAgCpjB,EAAcojB,KAAiC,IACtF,QAAehI,GAE1B,SAASkN,GAAoB5yH,EAAQsqG,IAC7B,QAAkBA,EAAc+lB,OAChC,SAAerwH,EAAQ,EAAmC,GAAuD,0CAGlH,IAAIsyH,GAAkB,CACzB/J,QAAS,SAEN,SAASsK,GAA0B7yH,EAAQsqG,EAAemoB,GAC7DG,GAAoB5yH,EAAQsqG,GAC5B,IAAIwoB,EAAqBxoB,EAAc+lB,IAAa/oC,KAAiD,GACjG6iB,EAAmBG,EAAc+lB,IAAaC,KAAkB,GACpEiC,GAA6BjoB,EAAcsjB,IAA+BzjB,EAAkB2oB,IACvF,QAAkBL,IACnBD,GAA2CroB,EAAkBsoB,GAEjE,IAAIM,EAAKzoB,EAAc+lB,IACvB,IAAI,QAAkB0C,GAElB,OADA,SAAe/yH,EAAQ,qCAChB,KAEX,IAAIJ,EAASmzH,EAAGzC,KAAkByC,EAAGzC,IAAe,MAAcyC,EAAGzC,IAAe,MAAc,MAC9F0C,EAAgB,IAAI9iB,EAAqBlwG,EAAQ+yH,EAAGhvF,GAAIgvF,EAAGtvG,OAAQsvG,EAAGpsC,IAA+BosC,EAAGtF,IAAsCsF,EAAGlpG,QAASkpG,EAAGE,aAAcrzH,EAAQmzH,EAAG/nG,KAAM+nG,EAAG1iB,mBAAoBlG,EAAkB2oB,GACrO5kH,EAAO,IAAIs/G,GAAKtd,EAAqB,IAAwC8iB,GACjF,OAAON,GAAgB1yH,EAAQkwG,EAAqB,IAAgD5F,EAAep8F,GAEhH,SAASglH,GAAqBlzH,EAAQsqG,EAAemoB,GACxDG,GAAoB5yH,EAAQsqG,GAC5B,IAAIH,EAAmB,GACnB2oB,EAAqB,GACrBxoB,EAAc8lB,MAAiB,EAAM,MACrCjmB,EAAiB,kBAAoBG,EAAc8lB,KAEnD9lB,EAAc8lB,MAAiB,EAAM,KACrCjmB,EAAmBG,EAAc+lB,IAAaC,KAAkB,GAChEwC,EAAqBxoB,EAAc+lB,IAAa/oC,KAAiD,IAG7FgjB,EAAc+lB,KACdkC,GAA6BjoB,EAAc+lB,IAAclmB,EAAkB2oB,GAInFP,GAA6BjoB,EAAcsjB,IAA+BzjB,EAAkB2oB,IACvF,QAAkBL,IACnBD,GAA2CroB,EAAkBsoB,GAEjE,IAAI74C,EAAY0wB,EAAc+lB,IAAa1pC,IACvCwsC,EAAY,IAAI,EAAMnzH,EAAQ45E,EAAWuwB,EAAkB2oB,GAC3D5kH,EAAO,IAAIs/G,GAAK,EAAM,IAAwC2F,GAClE,OAAOT,GAAgB1yH,EAAQ,EAAM,IAAgDsqG,EAAep8F,GAEjG,SAASklH,GAAyBpzH,EAAQsqG,EAAemoB,GAC5DG,GAAoB5yH,EAAQsqG,GAE5B,IAAIwoB,EAAqBxoB,EAAc+lB,IAAa/oC,KAAiD,GACjG6iB,EAAmBG,EAAc+lB,IAAaC,KAAkB,GACpEiC,GAA6BjoB,EAAcsjB,IAA+BzjB,EAAkB2oB,IACvF,QAAkBL,IACnBD,GAA2CroB,EAAkBsoB,GAEjE,IAAIM,EAAKzoB,EAAc+lB,IACnBgD,EAAS1kB,EAAUK,oBAAoBhvG,EAAQ+yH,EAAI5oB,EAAkB2oB,GACrE5kH,EAAO,IAAIs/G,GAAK7e,EAAU,IAAwC0kB,GACtE,OAAOX,GAAgB1yH,EAAQ2uG,EAAU,IAAgDrE,EAAep8F,GAErG,SAASolH,GAAsBtzH,EAAQsqG,EAAemoB,GACzDG,GAAoB5yH,EAAQsqG,GAC5B,IAAIE,EAAWF,EAAc+lB,IACzBkD,EAAQ/oB,EAAS8lB,KAAkB,GACnC7xC,EAAe+rB,EAASljB,KAAiD,GAC7EirC,GAA6BjoB,EAAcsjB,IAA+B2F,EAAO90C,IAC5E,QAAkBg0C,IACnBD,GAA2Ce,EAAOd,GAEtD,IAAIe,EAAiB,IAAIvoB,EAAOjrG,EAAQwqG,EAAS7jB,IAA+B6jB,EAAS8a,QAAS9a,EAAS+a,YAAa/a,EAASnnD,IAAKmnD,EAAS7sC,IAAK6sC,EAASQ,OAAQuoB,EAAO90C,GACxKvwE,EAAO,IAAIs/G,GAAKviB,EAAO,IAAwCuoB,GACnE,OAAOd,GAAgB1yH,EAAQirG,EAAO,IAAgDX,EAAep8F,GAElG,SAASulH,GAAwBzzH,EAAQsqG,EAAemoB,GAG3D,IAAIrmD,EAFJwmD,GAAoB5yH,EAAQsqG,GAG5B,IAAIE,EAAWF,EAAc+lB,KACxB,QAAkB7lB,KAClB,QAAkBA,EAAS8lB,OAC3B,QAAkB9lB,EAAS8lB,IAAe7C,MAIrC,QAAkBnjB,EAAcsjB,OACrC,QAAkBtjB,EAAcsjB,IAA8BH,OAC/DrhD,EAAWk+B,EAAcsjB,IAA8BH,WAChDnjB,EAAcsjB,IAA8BH,MANnDrhD,EAAWo+B,EAAS8lB,IAAe7C,WAC5BjjB,EAAS8lB,IAAe7C,KAOnC,IAEIiG,EAFAX,EAAKzoB,EAAc+lB,MAGjB/lB,EAAclqC,KAAO,IAAIpzC,OAAS,IAAIi7E,MACxCyrB,EAAmBppB,EAAclqC,IAAIpzC,MAAMi7E,KAE/C,IAAIlkE,EAAKgvF,EAAGhvF,IAAM2vF,EACdviH,EAAO4hH,EAAGpsC,IACVlnF,EAAMszH,EAAGtT,IACTv9C,EAAa6wD,EAAGzC,KAAkB,GAClC7xC,EAAes0C,EAAGzrC,KAAiD,GAcvE,IAZK,QAAkByrC,EAAGhM,UACtB7kD,EAAW,UAAY6wD,EAAGhM,SAGzB,QAAkBgM,EAAGY,YACtBzxD,EAAW,YAAc6wD,EAAGY,WAG3B,QAAkBZ,EAAGnlD,cACtB1L,EAAW,cAAgB6wD,EAAGnlD,WAAW,SAGxC,QAAkBmlD,EAAGzC,KAAiB,CACvC,IAAIsD,EAAWb,EAAGzC,KAClB,QAAcsD,GAAU,SAAUl6G,EAAKtX,GACnC8/D,EAAWxoD,GAAOtX,KAG1BmwH,GAA6BjoB,EAAcsjB,IAA+B1rD,EAAYuc,IACjF,QAAkBg0C,IACnBD,GAA2CtwD,EAAYuwD,GAE3D,IAAIoB,EAAe,IAAIzoB,EAASprG,EAAQmR,EAAM1R,EAAK2sE,EAAUlK,EAAYuc,EAAc16C,GACnF71B,EAAO,IAAIs/G,GAAKpiB,EAAS,IAAwCyoB,GACrE,OAAOnB,GAAgB1yH,EAAQorG,EAAS,IAAgDd,EAAep8F,GAEpG,SAAS4lH,GAAmC9zH,EAAQsqG,EAAemoB,GACtEG,GAAoB5yH,EAAQsqG,GAC5B,IAAIyoB,EAAKzoB,EAAc+lB,IACnBl/G,EAAO4hH,EAAGpsC,IACVlnF,EAAMszH,EAAGtT,KAAOsT,EAAGtzH,IACnByiE,EAAa6wD,EAAGzC,KAAkB,GAClC7xC,EAAes0C,EAAGzrC,KAAiD,GACvEirC,GAA6BjoB,EAAcsjB,IAA+B1rD,EAAYuc,IACjF,QAAkBg0C,IACnBD,GAA2CtwD,EAAYuwD,GAE3D,IAAIjoB,EAAW,IAAIa,EAAoBrrG,EAAQmR,EAAM1R,OAAKukC,EAAWk+B,EAAYuc,EAAcs0C,GAC3F7kH,EAAO,IAAIs/G,GAAKniB,EAAoB,IAAwCb,GAChF,OAAOkoB,GAAgB1yH,EAAQqrG,EAAoB,IAAgDf,EAAep8F,GAE/G,SAAS6lH,GAAqB/zH,EAAQsqG,EAAemoB,GACxDG,GAAoB5yH,EAAQsqG,GAC5B,IAAIpgF,EAAUogF,EAAc+lB,IAAanmG,QACrC2gF,EAAgBP,EAAc+lB,IAAaxlB,cAC3C0oB,EAAQjpB,EAAc+lB,IAAaC,KAAkB,GACrD7xC,EAAe6rB,EAAc+lB,IAAa/oC,KAAiD,GAC/FirC,GAA6BjoB,EAAcsjB,IAA+B2F,EAAO90C,IAC5E,QAAkBg0C,IACnBD,GAA2Ce,EAAOd,GAEtD,IAAIjoB,EAAW,IAAIv9E,EAAMjtB,EAAQkqB,EAAS2gF,EAAe0oB,EAAO90C,GAC5DvwE,EAAO,IAAIs/G,GAAKvgG,EAAM,IAAwCu9E,GAClE,OAAOkoB,GAAgB1yH,EAAQitB,EAAM,IAAgDq9E,EAAep8F,GCrSxG,SAAS8lH,GAAevwG,EAAQi1E,IAC5B,SAASj1E,EAAQ,KAAM,KAAMi1E,GAM1B,SAASu7B,GAAsBC,GAClC,IAAIp0C,GAAY,UACZ+gC,GAAa,UACbsT,GAAe,EACfC,GAAgB,EAChBvP,GAAgB,UAAkB,QAAsB,mBAAoBqP,GAChF,IAII,GAHIG,GAAc,aACdF,GAAe,GAEfr0C,EAAW,CAEX,IAAIr8D,EAASq8D,EAAUh9E,MAAQg9E,EAC3Br8D,EAAO6wG,UACHD,EAAc5wG,KACd0wG,GAAe,GAIvBA,GAEItT,KAAe,QAAkBA,EAAWgN,OAC5CuG,EAAgBvT,EAAWgN,KAIvC,MAAOrrH,GAEH2xH,GAAe,EAEnB,SAASE,EAAc5wG,GACnB,IAAI4nE,GAAU,EAOd,OANI5nE,IACA4nE,GAAU,SAAQ5nE,EAAQ,SAAU8wG,EAAY1P,GAC5Cx5B,IACA,SAAQ5nE,EAAQ,UAAW+wG,EAAa3P,IAGzCx5B,EAEX,SAASkpC,IACLH,GAAgB,EAEpB,SAASI,IACLJ,GAAgB,EAEpB,SAASK,IACL,IAAI/xH,GAAS,EAOb,OANIyxH,EACAzxH,EAAS0xH,EAEJvT,KAAe,QAAkBA,EAAWgN,OACjDnrH,EAASm+G,EAAWgN,KAEjBnrH,EAEX,SAASgyH,IACL,IAAItO,GAAM,UACV,GAAIA,GAAO+N,EAAc,CAErB,GADAH,GAAe5N,EAAKvB,GAChB/kC,EAAW,CAEX,IAAIr8D,EAASq8D,EAAUh9E,MAAQg9E,GAC1B,QAAYr8D,EAAO6wG,WACpBN,GAAevwG,EAAQohG,GAG/BsP,GAAe,GAGvB,MAAO,CACHQ,SAAUF,EACVG,YAAa,WAAc,OAAOT,GAClChe,OAAQue,GC7EhB,ICLIj7G,GDKAo7G,GAAgC,WAChC,SAASA,EAAe70H,EAAQ8jD,GAC5B,IAAIgxE,EAAU,GACVC,GAAyB,EAC7Bj3H,KAAKk3H,KAAO,WACR,OAAOF,GAEXh3H,KAAKm3H,KAAO,SAAUxoH,GAElB,OADAqoH,EAAUroH,EACHqoH,IAEX,OAAaD,EAAgB/2H,MAAM,SAAUyzF,GACzCA,EAAMu8B,IAAsC,SAAUzoG,GAC9CksE,EAAM1K,OAAqC/iC,EAAOoxE,mBAE7CH,KACD,SAAe/0H,EAAQ,EAAkC,IAAyD,0CAA4CuxF,EAAM1K,OAAmC,GACvMkuC,GAAyB,GAIjCD,EAAQ,IAA8BzvG,IAE1CksE,EAAM1K,IAAkC,WACpC,OAAOiuC,EAAQ,KAEnBvjC,EAAM51D,KAAO,WAET,IADA,IAAIA,EAAOm5F,EAAQ,IACVpkC,EAAK,EAAGA,EAAKokC,EAAQ,IAAmCpkC,IAC7D/0D,GAAQm5F,EAAQpkC,GAAI,IAKxB,OAHK5sC,EAAOiqE,QACRpyF,GAAQ,GAELA,GAEX41D,EAAMy8B,IAAkC,WACpC8G,EAAU,GACVC,GAAyB,GAE7BxjC,EAAM4jC,SAAW,WACb,OAAOL,EAAQzqF,MAAM,IAEzBknD,EAAM08B,IAAmD,SAAU5oG,GAC/D,GAAIA,GAAWA,EAAQ,IAAoC,EAAG,CAC1D,IAAI+vG,EAAQtxE,EAAOiqE,MACf1oG,EAAQvB,KAAK,MACb,IAAMuB,EAAQvB,KAAK,KAAO,IAC9B,OAAOsxG,EAEX,OAAO,SAenB,OAFAP,EAAezhC,QAAQ,EAEhByhC,EAjEwB,GAsE/BQ,GAAiC,SAAUl3H,GAE3C,SAASk3H,EAAgBr1H,EAAQ8jD,GAC7B,IAAIvlD,EAAQJ,EAAOM,KAAKX,KAAMkC,EAAQ8jD,IAAWhmD,KASjD,OARA,OAAau3H,EAAiB92H,GAAO,SAAUgzF,EAAOuzB,GAClDvzB,EAAM28B,IAA8C,SAAU7oG,GAC1Dy/F,EAAMkJ,OAEVz8B,EAAM48B,IAA2C,SAAU9oG,QAIxD9mB,EASX,OApBA,EAAU82H,EAAiBl3H,GAkB3Bk3H,EAAgBjiC,QAAQ,EAEjBiiC,EArByB,CAsBlCR,IAKES,GAA0C,SAAUn3H,GAEpD,SAASm3H,EAAyBt1H,EAAQ8jD,GACtC,IAAIvlD,EAAQJ,EAAOM,KAAKX,KAAMkC,EAAQ8jD,IAAWhmD,KAC7Ci3H,GAAyB,EA6F7B,OA5FA,OAAaO,EAA0B/2H,GAAO,SAAUgzF,EAAOuzB,GAC3D,IAAIyQ,EAAcC,EAAWF,EAAyBlH,KAClDqH,EAAoBD,EAAWF,EAAyBjH,KACxD5hH,EAAS8kF,EAAM0jC,KAAKM,EAAYjxH,OAAOmxH,IA4C3C,SAASC,EAA0BC,EAAUlpH,GACzC,IAAImpH,EAAY,GAMhB,OALA,QAAWnpH,GAAQ,SAAUrK,IACpB,QAAWA,KAA2C,KAAjC,QAAWuzH,EAAUvzH,IAC3CwzH,EAAU,IAA8BxzH,MAGzCwzH,EAEX,SAASJ,EAAW97G,GAChB,IAAIm8G,EAAcn8G,EAClB,IACIm8G,EAAc/xE,EAAO,KAA8CA,EAAO,MAA+CA,EAAO,MAA+C,IAAM+xE,EAAcA,EACnM,IAAIC,GAAa,QAAqB91H,EAAQ61H,GAC9C,GAAIC,EAAY,CACZ,IAAIC,GAAW,UAAUl9G,MAAMi9G,GAK/B,IAJI,QAASC,KAETA,GAAW,UAAUl9G,MAAMk9G,IAE3BA,IAAY,QAAQA,GACpB,OAAOA,GAInB,MAAOvzH,IACH,SAAexC,EAAQ,EAAmC,GAA2D,iBAAmB61H,EAAc,MAAO,QAAiBrzH,GAAI,CAAEg6E,WAAW,QAAQh6E,KAE3M,MAAO,GAEX,SAASwzH,EAAWt8G,EAAKjN,GACrB,IAAIopH,EAAcn8G,EAClB,IACIm8G,EAAc/xE,EAAO,KAA8CA,EAAO,MAA+CA,EAAO,MAA+C,IAAM+xE,EAAcA,EACnM,IAAIC,EAAa19G,KAAK0uE,IAAwCr6E,IAC9D,QAAqBzM,EAAQ61H,EAAaC,GAE9C,MAAOtzH,IAGH,QAAqBxC,EAAQ61H,EAAaz9G,KAAK0uE,IAAwC,MACvF,SAAe9mF,EAAQ,EAAkC,GAAuD,iBAAmB61H,EAAc,MAAO,QAAiBrzH,GAAK,mBAAoB,CAAEg6E,WAAW,QAAQh6E,MAnF3NiK,EAAO,IAAoC6oH,EAAyBhH,MACpE7hH,EAAO,IAAoC6oH,EAAyBhH,KAExE0H,EAAWV,EAAyBjH,IAAwD,IAC5F2H,EAAWV,EAAyBlH,IAA6C3hH,GACjF8kF,EAAMu8B,IAAsC,SAAUzoG,GAC9CksE,EAAM1K,OAAqCyuC,EAAyBhH,IAE/DyG,KACD,SAAe/0H,EAAQ,EAAkC,GAAuD,gCAAkCuxF,EAAM1K,OAAmC,GAC3LkuC,GAAyB,IAIjCjQ,EAAMgJ,IAAoCzoG,GAC1C2wG,EAAWV,EAAyBlH,IAA6C78B,EAAMyjC,UAE3FzjC,EAAMy8B,IAAkC,WACpClJ,EAAMkJ,MACNgI,EAAWV,EAAyBlH,IAA6C78B,EAAMyjC,QACvFgB,EAAWV,EAAyBjH,IAAwD,IAC5F0G,GAAyB,GAE7BxjC,EAAM28B,IAA8C,SAAU7oG,GAC1D2wG,EAAWV,EAAyBlH,IAA6C78B,EAAM0jC,KAAKS,EAA0BrwG,EAASksE,EAAMyjC,UACrI,IAAIiB,EAAeT,EAAWF,EAAyBjH,KACnD4H,aAAwBz4H,OAAS6nB,aAAmB7nB,QACpDy4H,EAAeA,EAAa3xH,OAAO+gB,GAC/B4wG,EAAa,IAAoCX,EAAyBhH,OAG1E,SAAetuH,EAAQ,EAAmC,GAAuD,yCAA2Ci2H,EAAa,KAAmC,GAC5MA,EAAa,IAAoCX,EAAyBhH,KAE9E0H,EAAWV,EAAyBjH,IAAwD4H,KAGpG1kC,EAAM48B,IAA2C,SAAU9oG,GACvD,IAAI4wG,EAAeT,EAAWF,EAAyBjH,KACvD4H,EAAeP,EAA0BrwG,EAAS4wG,GAClDD,EAAWV,EAAyBjH,IAAwD4H,OA+C7F13H,EAUX,OA1GA,EAAU+2H,EAA0Bn3H,GAsGpCm3H,EAAyBY,WAAa,YACtCZ,EAAyBa,gBAAkB,gBAE3Cb,EAAyBc,gBAAkB,IACpCd,EA3GkC,CA4G3CT,IE/MEwB,GAA4B,WAC5B,SAASA,EAAWr2H,IAChB,OAAaq2H,EAAYv4H,MAAM,SAAUyzF,GAcrC,SAAS+kC,EAAiBlyD,EAAQjzD,GAC9B,IAAIolH,EAAyB,uBACzBjjD,EAAS,GACb,IAAKlP,EAED,OADA,SAAepkE,EAAQ,EAAmC,GAAoD,0DAA2D,CAAEmR,KAAMA,IAAQ,GAClLmiE,EAEX,GAAIlP,EAAOmyD,GAEP,OADA,SAAev2H,EAAQ,EAAkC,GAAwD,uDAAwD,CAAEmR,KAAMA,IAAQ,GAClLmiE,EAEX,IAAKlP,EAAOsmC,eAAgB,CAExB,GAAa,iBAATv5F,EACAmiE,EAASkjD,EAAoBpyD,EAAQ,SAAUjzD,QAE9C,GAAa,eAATA,EACLmiE,EAASkjD,EAAoBpyD,EAAQ,SAAUjzD,QAE9C,GAAa,SAATA,EACLmiE,EAASkjD,EAAoBpyD,EAAQ,SAAUjzD,QAE9C,IAAI,QAAQizD,GACbkP,EAASmjD,EAAgBryD,EAAQjzD,OAEhC,EACD,SAAenR,EAAQ,EAAkC,GAAmE,2EAA4E,CAAEmR,KAAMA,IAAQ,GACxN,KAEI,UAAU21E,IAAwC1iB,GAClDkP,EAASlP,EAEb,MAAO5hE,IAEH,SAAexC,EAAQ,EAAmC,GAAqDwC,IAAK,QAAWA,EAAE,KAA2CA,EAAE,MAA2C,2BAA4B,MAAM,IAGnQ,OAAO8wE,EAoCX,OAlCAlP,EAAOmyD,IAA0B,GACjC,QAAcnyD,EAAOsmC,gBAAgB,SAAUntB,EAAOm5C,GAClD,IAAIC,GAAc,QAAWD,GAA2B,EAAbA,IAAuD,EAAXA,EACnFE,GAAY,QAAWF,GAA2B,EAAbA,IAAqD,EAAXA,EAC/EvjD,EAAqB,EAAXujD,EACVG,OAA8B7yF,IAAlBogC,EAAOmZ,GACnBu5C,GAAQ,QAAS1yD,EAAOmZ,KAA6B,OAAlBnZ,EAAOmZ,GAC9C,IAAIo5C,GAAeE,GAAc1jD,GAI5B,IAAKyjD,EAAU,CAChB,IAAIx0H,OAAQ,EAIJA,EAHJ00H,EACI3jD,EAEQsjD,EAAgBryD,EAAOmZ,GAAQA,GAI/B+4C,EAAiBlyD,EAAOmZ,GAAQA,GAKpCnZ,EAAOmZ,QAGLv5C,IAAV5hC,IACAkxE,EAAOiK,GAASn7E,SArBpB,SAAepC,EAAQ,EAAmC,GAAgE,wFAAyF,CAAEu9E,MAAOA,EAAOpsE,KAAMA,cAyB1OizD,EAAOmyD,GACPjjD,EAEX,SAASmjD,EAAgBM,EAAS5lH,GAC9B,IAAImiE,EACJ,GAAMyjD,EACF,IAAK,QAAQA,GAGR,CACDzjD,EAAS,GACT,IAAK,IAAIt0E,EAAI,EAAGA,EAAI+3H,EAAQ,IAAmC/3H,IAAK,CAChE,IAAIolE,EAAS2yD,EAAQ/3H,GACjBkoB,EAAOovG,EAAiBlyD,EAAQjzD,EAAO,IAAMnS,EAAI,KACrDs0E,EAAO,IAA8BpsD,SAPzC,SAAelnB,EAAQ,EAAmC,GAA6C,yFAA0F,CAAEmR,KAAMA,IAAQ,GAWzN,OAAOmiE,EAEX,SAASkjD,EAAoB38G,EAAKm9G,EAAc7lH,GAC5C,IAAImiE,EAyCJ,OAxCIz5D,IACAy5D,EAAS,IACT,QAAcz5D,GAAK,SAAU0jE,EAAOn7E,GAChC,GAAqB,WAAjB40H,OACchzF,IAAV5hC,EACAkxE,EAAOiK,GAAS,YAED,OAAVn7E,EACLkxE,EAAOiK,GAAS,OAEVn7E,EAAM,IAIZkxE,EAAOiK,GAASn7E,EAAM,MAHtBkxE,EAAOiK,GAAS,iDAMnB,GAAqB,WAAjBy5C,EACL,QAAchzF,IAAV5hC,EACAkxE,EAAOiK,GAAS,iBAEf,GAAc,OAAVn7E,EACLkxE,EAAOiK,GAAS,WAEf,CACD,IAAIpxE,EAAM8qH,WAAW70H,GACjBu4E,MAAMxuE,GACNmnE,EAAOiK,GAAS,MAGhBjK,EAAOiK,GAASpxE,OAKxBmnE,EAAOiK,GAAS,kBAAoBpsE,EAAO,wBAC3C,SAAenR,EAAQ,EAAmCszE,EAAOiK,GAAQ,MAAM,OAIpFjK,EAhJXie,EAAM2lC,UAAY,SAAUroH,GACxB,IAAIykE,EAASgjD,EAAiBznH,EAAO,QACrC,IACI,OAAO,UAAUi4E,IAAwCxT,GAE7D,MAAO9wE,IAEH,SAAexC,EAAQ,EAAmC,GAAqDwC,IAAK,QAAWA,EAAE,KAA2CA,EAAE,MAA2C,2BAA4B,MAAM,QAmJ3Q,OAFA6zH,EAAWjjC,QAAQ,EAEZijC,EAhKoB,GCC3Bc,GAAmB,EACnBC,GAAwC,WACxC,SAASA,KAyBT,OAvBAA,EAAuBp5H,UAAUq5H,iBAAmB,SAAU39G,GAC1D,IAAI49G,EAAQx5H,KAAKy5H,YAAY79G,GAAO09G,EAAuBI,cAC3D,OAAe,IAARF,GAEXF,EAAuBp5H,UAAUu5H,YAAc,SAAU1oH,GACrD,GAAc,KAAVA,EACA,OAAO,EAEX,MAAOA,EAAM,IAAoCsoH,GAC7CtoH,EAAQA,EAAMvK,OAAOuK,GAIzB,IADA,IAAI6S,EAAO,KACF1iB,EAAI,EAAGA,EAAI6P,EAAM,MAAqC7P,EAC3D0iB,GAASA,GAAQ,GAAKA,EAAQ7S,EAAMjB,WAAW5O,GAG/C0iB,GAAcA,EAElB,OAAO3U,KAAKgyF,IAAIr9E,IAGpB01G,EAAuBI,cAAgB,WAChCJ,EA1BgC,GCAvCK,GAAwC,WACxC,SAASA,IACL,IAAIlmC,EAAQzzF,KACR45H,EAAoB,IAAIN,GACxBz2H,EAAO,IAAIyoH,GACf73B,EAAM2+B,IAA0D,SAAUhpG,GACtE,IAAIowG,EAAQ,EAiBZ,OAfIA,EADApwG,EAAKwmG,KAAiCxmG,EAAKwmG,IAA8B/sH,EAAKgrH,QACtE+L,EAAkBL,iBAAiBnwG,EAAKwmG,IAA8B/sH,EAAKgrH,SAE9EzkG,EAAKk5C,KAAOl5C,EAAKk5C,IAAI0wD,MAAQ5pG,EAAKk5C,IAAI0wD,KAAK/sF,GACxC2zF,EAAkBvH,IAAyDjpG,EAAKk5C,IAAI0wD,KAAK/sF,IAE5F7c,EAAKwmG,KAAiCxmG,EAAKwmG,IAA8B/sH,EAAKsqH,aAC3EyM,EAAkBL,iBAAiBnwG,EAAKwmG,IAA8B/sH,EAAKsqH,cAE9E/jG,EAAKk5C,KAAOl5C,EAAKk5C,IAAImlB,gBAAkBr+D,EAAKk5C,IAAImlB,eAAe0iB,IAC5DyvB,EAAkBL,iBAAiBnwG,EAAKk5C,IAAImlB,eAAe0iB,KAI1C,IAAhBl7F,KAAKC,SAEXsqH,GAGf,OAAOG,EA1BgC,GCCvCE,GAAwB,WACxB,SAASA,EAAOpK,EAAYvtH,GAExBlC,KAAK05H,cAAgB,WACrB,IAAIzY,EAAU/+G,IAAU,SAAc,OAClCutH,EAAa,KAAOA,EAAa,KACjCxO,EAAQ7rB,cAAc,EAAkC,GAAmD,8IAA+I,CAAE0kC,aAAcrK,IAAc,GACxRA,EAAa,KAEjBzvH,KAAKuxH,IAA6C9B,EAClDzvH,KAAK+5H,uBAAyB,IAAIJ,GAkBtC,OAbAE,EAAO35H,UAAU85H,YAAc,SAAUpS,GACrC,IAAIqS,EAAqBj6H,KAAKuxH,IAC1ByI,GAAc,EAClB,OAA2B,OAAvBC,QAAsD/zF,IAAvB+zF,GAAoCA,GAAsB,MAGpFrS,EAASzb,WAAagB,EAAO,MAItC6sB,EAAch6H,KAAK+5H,uBAAuB3H,IAAwDxK,GAAYqS,EACvGD,KAEJH,EA5BgB,GJKvBK,GAAiC,KACrC,SAASC,GAAiB53H,GACtB,IACI,OAAOA,EAAIiB,aAEf,MAAOkB,IAGP,OAAO,KAEX,SAAS01H,KACL,IAAIz+G,EACA+gE,EACA29C,EAEJ,OAAO1+G,EAAK,CACJunE,YAAa,WAAc,OAAO,KAA0B,OAEhEvnE,EAAGs0G,IAA+D,WAAc,OAAO,GACvFt0G,EAAGs2G,IAAuD,WAAc,OAAO,MAC/Et2G,EAAG80G,IAA6D,WAAc,OAAO,QACrF90G,EAAG01G,IAAsD,WAAc,OAAO,GAC9E11G,EAAGq1G,IAAoE,WAAc,OAAO,GAC5Fr1G,EAAGo2G,IAAqD,WAAc,OAAO,GAC7Ep2G,EAAGi1G,IAA6D,WAAc,OAAO,GACrFj1G,EAAGw1G,IAA0C,WAAc,OAAO,GAClEx1G,EAAGy1G,IAA8D,WAAc,OAAO,GACtFz1G,EAAGg1G,IAA+D,WAAc,OAAO,GACvFh1G,EAAGisF,IAA0D,WAAc,OAAOlrB,GAClF/gE,EAAG,IAA0C,WAAc,OAAO+gE,GAClE/gE,EAAG,IAA0D,WAAc,OAAO,KAClFA,EAAGu1G,IAAgD,WAAc,OAAOmJ,GACxE1+G,EAAG61G,IAAsD,WAAc,OAAO90C,GAC9E/gE,EAAGy7G,iBAAmB,WAAc,OAAO,KAC3Cz7G,EAER,IAAI2+G,IAAuB3+G,GAAK,GAC5BA,GAAG,YAAkBy5G,GACrBz5G,GAAGwT,EAAMykE,UAAYqiC,GACrBt6G,GAAG2xF,EAAS1Z,UAAY+hC,GACxBh6G,GAAG4xF,EAAoB3Z,UAAYoiC,GACnCr6G,GAAGk1F,EAAUjd,UAAY0hC,GACzB35G,GAAGwxF,EAAOvZ,UAAY4hC,GACtB75G,GAAGy2F,EAAqBxe,UAAYmhC,GACpCp5G,IACA4+G,GAAwB,SAAUl6H,GAElC,SAASk6H,IACL,IAQIC,EACAC,EAEAC,EACAC,EACAC,EACAC,EACAC,EAfAr6H,EAAQJ,EAAOM,KAAKX,OAASA,KACjCS,EAAMkmH,SAAW,KACjBlmH,EAAM28E,WAAa4uB,EAInBvrG,EAAMs6H,cAAgBX,KAUtB,IACIY,EACAC,EACAC,EACAnU,EAJAoU,EAAoB,EAiyBxB,OA5xBA,OAAaZ,EAAQ95H,GAAO,SAAUgzF,EAAOuzB,GAuUzC,SAASoU,EAAaxT,GAClB,OAAOn0B,EAAM4nC,QAAQrB,YAAYpS,GAErC,SAAS0T,EAAoBh4H,EAAQikB,EAASg0G,EAAaC,EAAuBl7H,EAAcm7H,GAC5F,IAAIl4H,EAAW,KAOf,GANKkwF,EAAMioC,SACPn4H,EAAWo4H,EAAeF,GACtBl4H,GAAYA,EAASq4H,QACrBnoC,EAAMioC,OAASn4H,EAASq4H,SAG3Bt4H,EAAS,KAAOA,GAAU,MAAmB,IAAXA,EAAc,CAGjD,IAAe,MAAXA,GAA6B,MAAXA,GAA6B,MAAXA,KAC/Bu4H,EAA2BN,GAE5B,YADA9nC,EAAMi+B,IAAuCnqG,EAASjnB,IAIzDmzF,EAAMq9B,IAAiDiB,OAA2D+J,EAAax4H,IAChIy4H,EAAex0G,IACf,SAAeksE,EAAM,MAAwC,EAAkC,GAAiD,mBACzHnwF,EAAS,wBAA0BikB,EAAQ,IAAoC,YAGtGksE,EAAMi+B,IAAuCnqG,EAASjnB,QAGzD,GAAI46H,IAAqBA,EAAiBrE,YAE3C,IAAKpjC,EAAMq9B,IAAiDiB,MAAyD,CACjH,IAAIiK,EAA2B,GAC/BD,EAAex0G,EAASy0G,IACxB,SAAevoC,EAAM,MAAwC,EAAkC,GAAiD,8BAA8BjtF,OAAOlD,EAAQ,sBAAsBkD,QAAQ00H,EAAiBrE,WAAY,yBAAyBrwH,OAAO+gB,EAAQlmB,OAAQ,kBAM5Sw6H,EAA2BN,GACZ,MAAXj4H,GACKC,IACDA,EAAWo4H,EAAeF,IAE1Bl4H,IAAakwF,EAAMq9B,IAAiDiB,MACpEt+B,EAAMk+B,IAA0DpqG,EAAShkB,GAGzEkwF,EAAMi+B,IAAuCnqG,EAASjnB,KAI1Dk6H,EAAqB,EACrB/mC,EAAMm+B,IAA2CrqG,EAASi0G,IAItE,SAASK,EAA2BN,GAEhC,QAAIV,GAA6B,QAK5B,QAAkBU,IAAgC,KAAhBA,GAC/BA,IAAgB9nC,EAAMq9B,IAAiDG,QACvEx9B,EAAMq9B,IAAiDG,IAA+C,WAAc,OAAOsK,KACzHV,GACK,IAKnB,SAASoB,EAAc10G,EAAS2rF,GACxB+nB,EAEAA,EAAkB1zG,GAAS,GAI3B20G,EAAc30G,EAAS2rF,GAG/B,SAASipB,EAAc50G,GACnB,IAAIgxE,GAAM,UACN5pF,EAAS8kF,EAAMs9B,IACfpvH,EAAM8xF,EAAMq9B,IAAiDG,MAC7DqG,EAAQ7jC,EAAMujC,QAAQ7G,IAAiD5oG,GAGvE60G,EAAiB,IAAIC,KAAK,CAAC/E,GAAQ,CAAEpqG,KAAM,6BAE3CovG,EAAS/jC,EAAIW,WAAWv3F,EAAKy6H,GAMjC,OALIE,IACA3tH,EAAOyhH,IAA4C7oG,GAEnDksE,EAAM8oC,WAAWh1G,EAASA,EAAQ,MAE/B+0G,EASX,SAASJ,EAAc30G,EAAS2rF,GAC5B,IAAI,QAAQ3rF,IAAYA,EAAQ,IAAoC,IAE3D40G,EAAc50G,GAAU,CAGzB,IADA,IAAIi1G,EAAiB,GACZ5pC,EAAK,EAAGA,EAAKrrE,EAAQ,IAAmCqrE,IAAM,CACnE,IAAI6pC,EAAal1G,EAAQqrE,GACpBupC,EAAc,CAACM,KAEhBD,EAAe,IAA8BC,GAGjDD,EAAe,IAAoC,IACnDxB,GAAmBA,EAAgBwB,GAAgB,IACnD,SAAe/oC,EAAM,MAAwC,EAAkC,GAAiD,6EAUhK,SAASipC,EAAWn1G,EAAS2rF,GACzB,IAAI3wG,EAAM,IAAIC,eACVm6H,EAAclpC,EAAMq9B,IAAiDG,MACzE,IACI1uH,EAAI,OAAwB,EAEhC,MAAOmC,IAIPnC,EAAIE,KAAK,OAAQk6H,EAAazpB,GAC9B3wG,EAAIyvH,IAAwD,eAAgB,qBAExE,QAAsC2K,IACtCp6H,EAAIyvH,IAAwD,QAA0D,UAE1H,SAAW,QAAQ8I,IAAW,SAAU/8E,GACpCx7C,EAAIyvH,IAAwDj0E,EAAY+8E,EAAS/8E,OAErFx7C,EAAIq6H,mBAAqB,WAAc,OAAOnpC,EAAMopC,qBAAqBt6H,EAAKglB,EAASA,EAAQ,MAC/FhlB,EAAIkB,QAAU,SAAUmjB,GAAS,OAAO6sE,EAAMi+B,IAAuCnqG,EAASu1G,EAAuBv6H,GAAMqkB,IAE3H,IAAI0wG,EAAQ7jC,EAAMujC,QAAQ7G,IAAiD5oG,GAC3EhlB,EAAIV,KAAKy1H,GACT7jC,EAAMujC,QAAQ5G,IAA4C7oG,GAE9D,SAASw1G,EAAsBx1G,EAAS2rF,GACpC,IAAI,QAAQ3rF,GAAU,CAElB,IADA,IAAIy1G,EAAcz1G,EAAQ,IACjBqrE,EAAK,EAAGA,EAAKrrE,EAAQ,IAAmCqrE,IAC7DoqC,GAAez1G,EAAQqrE,GAAI,IAE1BuoC,EAAoB6B,GAAgB9C,GACrC+C,EAAe11G,GAAS,IAEnB,UAEL20G,EAAc30G,EAAS2rF,IAIvB8nB,GAAmBA,EAAgBzzG,GAAS,IAC5C,SAAeksE,EAAM,MAAwC,EAAkC,GAAiD,yEAS5J,SAASypC,EAAa31G,EAAS2rF,GAC3B+pB,EAAe11G,GAAS,GAO5B,SAAS01G,EAAe11G,EAAS2rF,GAC7B,IAAIv3F,EACAghH,EAAclpC,EAAMq9B,IAAiDG,MACrEqG,EAAQ7jC,EAAMujC,QAAQ7G,IAAiD5oG,GACvE60G,EAAiB,IAAIC,KAAK,CAAC/E,GAAQ,CAAEpqG,KAAM,qBAC3CiwG,EAAiB,IAAIlgF,QACrBmgF,EAAc9F,EAAM,IACpB+F,GAAiB,EACjBC,GAAkB,GAElB,QAAsCX,IACtCQ,EAAehgF,OAAO,QAA0D,UAEpF,SAAW,QAAQ29E,IAAW,SAAU/8E,GACpCo/E,EAAehgF,OAAOY,EAAY+8E,EAAS/8E,OAE/C,IAAIw/E,GAAQ5hH,EAAK,CACT7Z,OAAQ,OACRc,QAASu6H,EACTn4H,KAAMo3H,GAEVzgH,EAAG,OAAwB,EAE3BA,GACCu3F,IACDqqB,EAAKC,WAAY,EAGjBH,GAAiB,EACjBlC,GAAqBiC,GAEzB,IAAIj7H,EAAU,IAAIs7H,QAAQd,EAAaY,GACvC,IAEIp7H,EAAQ,OAAwB,EAEpC,MAAOuC,IAIP+uF,EAAMujC,QAAQ5G,IAA4C7oG,GAC1D,IACIk1B,MAAMt6C,GAAS2C,MAAK,SAAUvB,GACrB2vG,IACDioB,GAAqBiC,EACrBA,EAAc,GAEbE,IACDA,GAAkB,EAMb/5H,EAASm6H,GAIVn6H,EAAS0vF,OAAOnuF,MAAK,SAAUmuF,GAC3BqoC,EAAoB/3H,EAASD,OAAQikB,EAAShkB,EAAS5B,IAAK4lB,EAAQ,IAAmChkB,EAAShC,WAAY0xF,MAJhIQ,EAAMi+B,IAAuCnqG,EAAShkB,EAAShC,gBAQxE,UAAS,SAAU+E,GACb4sG,IACDioB,GAAqBiC,EACrBA,EAAc,GAEbE,IACDA,GAAkB,EAClB7pC,EAAMi+B,IAAuCnqG,EAASjhB,EAAM8lB,aAIxE,MAAO1nB,GACE44H,GACD7pC,EAAMi+B,IAAuCnqG,GAAS,QAAQ7iB,IAGlE24H,IAAmBC,IAEnBA,GAAkB,EAClB7pC,EAAM8oC,WAAWh1G,EAASA,EAAQ,MAO1C,SAASo0G,EAAep4H,GACpB,IACI,GAAIA,GAAyB,KAAbA,EAAiB,CAC7B,IAAIqB,GAAS,UAAUmW,MAAMxX,GAC7B,GAAIqB,GAAUA,EAAO+4H,eAAiB/4H,EAAO+4H,eAAiB/4H,EAAOitH,KACjEjtH,EAAO+4H,cAAgB/4H,EAAOg5H,gBAAkBh5H,EAAOslC,OAAO,IAC9D,OAAOtlC,GAInB,MAAOF,IACH,SAAe+uF,EAAM,MAAwC,EAAmC,GAAqD,+BAAgC,QAAiB/uF,GAAI,CACtMnB,SAAUA,IAGlB,OAAO,KAMX,SAASw4H,EAAex0G,EAASs2G,GAE7B,QADqB,IAAjBA,IAA2BA,EAAe,GACzCt2G,GAAyD,IAA9CA,EAAQ,IAAxB,CAGA,IAAI5Y,EAAS8kF,EAAMs9B,IACnBpiH,EAAO0hH,IAAyC9oG,GAChDizG,IACA,IAAK,IAAIljB,EAAK,EAAGwmB,EAAYv2G,EAAS+vF,EAAKwmB,EAAUz8H,OAAQi2G,IAAM,CAC/D,IAAIluF,EAAO00G,EAAUxmB,GACrB3oG,EAAOqhH,IAAoC5mG,GAG/C20G,EAAcF,GACdG,KAMJ,SAASD,EAAcF,GACnB,IACII,EADAC,EAAqB,GAEzB,GAAI1D,GAAsB,EACtByD,EAAiBC,MAEhB,CACD,IAAIC,GAAelvH,KAAKmvH,IAAI,EAAG5D,GAAsB,GAAK,EAEtD6D,EAAepvH,KAAKq2C,MAAMr2C,KAAKC,SAAWivH,EAAcD,GAAsB,EAClFG,GAAeR,EACfI,EAAiBhvH,KAAK4wD,IAAI5wD,KAAKs2C,IAAI84E,EAAc,MAAOH,GAG5D,IAAII,GAAqB,UAA8B,IAAjBL,EAEtCxD,EAAW6D,EAKf,SAASN,IACL,IAAKrD,IAAmBD,EAAS,CAC7B,IAAI6D,EAAgB9D,EAAWxrH,KAAK4wD,IAAI,EAAG46D,GAAW,WAAa,EAC/D+D,EAAavvH,KAAK4wD,IAAI4zB,EAAMq9B,IAAiDmB,MAA2DsM,GAC5I5D,EAAiBjyF,YAAW,WACxBiyF,EAAiB,KACjBlnC,EAAMi9B,KAA6C,EAAM,KAAM,KAChE8N,IAGX,SAASC,IACLl4D,aAAao0D,GACbA,EAAiB,KACjBF,EAAW,KAMf,SAASqB,EAAav7H,GAClB,OAAsB,MAAfA,GACe,MAAfA,GACe,MAAfA,GACe,MAAfA,GACe,MAAfA,GACe,MAAfA,GACe,MAAfA,GACe,MAAfA,EAEX,SAASu8H,EAAuBv6H,EAAK6pB,GACjC,OAAI7pB,EACO,yBAA2BA,EAAIe,OAAS,aAAe62H,GAAiB53H,IAAwB,EAEpG6pB,EAYX,SAASsyG,EAAWn3G,EAAS2rF,GACzB,IAAIvkG,EAAS8kF,EAAMs9B,IACf/I,GAAU,UACV2W,EAAM,IAAIplC,eACdolC,EAAIt7H,OAAS,WAAc,OAAOowF,EAAMmrC,WAAWD,EAAKp3G,IACxDo3G,EAAIl7H,QAAU,SAAUmjB,GAAS,OAAO6sE,EAAMi+B,IAAuCnqG,EAASs3G,EAAuBF,GAAM/3G,IAG3H,IAAIk4G,EAAkB9W,GAAWA,EAAQ3pE,UAAY2pE,EAAQ3pE,SAASykC,UAAY,GAClF,GAA8I,IAA1I2Q,EAAMq9B,IAAiDG,MAA+C71G,YAAY0jH,EAAiB,GAInI,OAHA,SAAerrC,EAAM,MAAwC,EAAkC,GAAiD,0GAEhJ9kF,EAAOuhH,MAGX,IAAIhtC,EAAcuQ,EAAMq9B,IAAiDG,MAA+C//G,QAAQ,aAAc,IAC9IytH,EAAIl8H,KAAK,OAAQygF,GAEjB,IAAIo0C,EAAQ3oH,EAAOwhH,IAAiD5oG,GACpEo3G,EAAI98H,KAAKy1H,GACT3oH,EAAOyhH,IAA4C7oG,GAEvD,SAASs3G,EAAuBF,EAAKvyG,GACjC,OAAIuyG,EACO,2BAA6BxE,GAAiBwE,IAAQ,EAE1DvyG,EAGX,SAAS2yG,IACL,IAAIhwC,EAAO,eACX,OAAI0E,EAAM1G,KAAKgC,GACJ0E,EAAM1G,KAAKgC,KAGf0E,EAAM1G,KAAK,wBAEtB,SAASiyC,EAAmBC,EAAa/rB,GACrC,IAAIW,EAAUkrB,IACd,GAAIlrB,GAAWA,EAAQqe,IACnB,IACIre,EAAQqe,IAA0D+M,EAAa/rB,GAEnF,MAAOxuG,IACH,SAAe+uF,EAAM,MAAwC,EAAmC,GAAoD,sCAAuC,QAAiB/uF,GAAI,CAAEg6E,WAAW,QAAQh6E,MAQjP,SAASw6H,EAA4Bl5E,GACjC,IAAIm5E,IAA4B,QAAkBn5E,EAAOmsE,MAAyFnsE,EAAOmsE,IACzJ,GAAIgN,EACA,OAAO,EAEX,IAAIC,EAAa,iEACbC,EAAS,IAAI9iH,OAAO6iH,GACxB,OAAOC,EAAO/vH,KAAK02C,EAAO4hD,KAE9B,SAAS2V,IACL9pB,EAAMo9B,IAAsC,KAC5Cp9B,EAAMs9B,IAAsC,KAC5Ct9B,EAAMioC,OAAS,KACfjoC,EAAM4nC,QAAU,KAChBP,EAAW,GACXI,EAAmB,KACnBV,EAAqB,EACrBC,EAAW,KACC,KACZC,GAAU,EACVC,EAAiB,KACjBC,EAAc,KACdC,EAA4B,EAC5BM,EAAoB,EACpBH,EAAkB,KAClBC,EAAoB,KACpBlU,EAAgB,KAxxBpBxJ,IACA9pB,EAAM6rC,MAAQ,WACVb,IACA/D,GAAU,GAEdjnC,EAAM8rC,OAAS,WACP7E,IACAA,GAAU,EACVD,EAAW,KAEPhnC,EAAMujC,QAAQn5F,OAAS41D,EAAMsnC,cAActK,OAC3Ch9B,EAAMi9B,KAA6C,EAAM,KAAM,IAEnEsN,MAGRvqC,EAAM6tB,MAAQ,SAAUpO,EAASssB,EAAUC,GAEvC,QADgB,IAAZvsB,IAAsBA,GAAU,IAC/BwnB,EAAS,CAEV+D,IACA,IACIhrC,EAAMi9B,IAA6Cxd,EAAS,KAAMusB,GAAc,GAEpF,MAAO/6H,IACH,SAAe+uF,EAAM,MAAwC,EAAmC,GAA0C,mDAAoD,QAAiB/uF,GAAI,CAAEg6E,WAAW,QAAQh6E,QAIpP+uF,EAAMisC,cAAgB,WAClB,IAAKhF,EACD,IAA+F,IAA1FjnC,EAAMsnC,cAAcpK,QAA0M,IAA3Hl9B,EAAMq9B,IAAiDF,SAA8E,UASzOn9B,EAAM6tB,aARN,IACI7tB,EAAMi9B,KAA6C,EAAMuL,EAAe,GAE5E,MAAOv3H,IACH,SAAe+uF,EAAM,MAAwC,EAAmC,GAA0D,wFAAyF,QAAiB/uF,GAAI,CAAEg6E,WAAW,QAAQh6E,OAQ7S+uF,EAAMksC,UAAY,SAAUtsH,EAAM/O,GAC9Bw2H,EAASznH,GAAQ/O,GAErBmvF,EAAM1kB,WAAa,SAAU/oB,EAAQ+mC,EAAM5P,EAAYo9B,GAC/C9mB,EAAMyhB,kBACN,SAAezhB,EAAM,MAAwC,EAAmC,GAAmD,iCAEvJuzB,EAAMj4C,WAAW/oB,EAAQ+mC,EAAM5P,EAAYo9B,GAC3C,IAAIlH,EAAM5f,EAAM+lB,aACZp8B,EAAaqW,EAAMrW,WACvBw9C,EAAc,IAAIrC,GAAWxrC,EAAK7qF,QAClCs4H,EAAqB,EACrBC,EAAW,KACC,EACZhnC,EAAMo9B,IAAsC,KAC5CgK,EAA4B,EAC5B,IAAIrkB,EAAU/iB,EAAM,MACpBszB,GAAgB,UAAkB,QAAsB,UAAWh6B,EAAK6N,cAAgB7N,EAAK6N,gBAC7FsgC,EAAmB/E,GAAsBpP,GAEzC,IAAI6Y,EAAgBxF,MACpB,QAAcwF,GAAe,SAAUngD,EAAOn7E,GAC1CmvF,EAAMq9B,IAAiDrxC,GAAS,WAC5D,IAAIkO,EAAW0lB,EAAIsD,UAAUv5B,EAAYqC,EAAOn7E,KAKhD,OAJKqpF,GAAsB,gBAAVlO,IAEbkO,EAAWrpF,KAERqpF,MAGf8F,EAAMujC,QAAWvjC,EAAMq9B,IAAiDE,QAA0E,UAC5I,IAAIwG,GAAyBhhB,EAAS/iB,EAAMq9B,KAAoD,IAAIyG,GAAgB/gB,EAAS/iB,EAAMq9B,KACzIr9B,EAAM4nC,QAAU,IAAIxB,GAAOpmC,EAAMq9B,IAAiD,MAA8Dta,GAC3I0oB,EAA4Bl5E,KAC7B,SAAewwD,EAAS,EAAmC,IAAyD,+BAAiCxwD,EAAO4hD,OAE3J,QAAsCnU,EAAMsnC,cAAc73C,gBAAkBuQ,EAAMsnC,cAAc8E,iBAAmBpsC,EAAMsnC,cAAc8E,gBAAgB,IAAoC,IAC5L,QAAWpsC,EAAMq9B,IAAiDI,OAAoD,SAAU4O,GAC5Hr/H,EAAMk/H,UAAUG,EAAa/8H,OAAQ+8H,EAAax7H,UAG1D,IAAIy7H,EAAetsC,EAAMq9B,IACrBkP,EAAe,MACdD,EAAa5O,QAAgD,UAC9D6O,EAAetB,GAETqB,EAAa5O,QAAgD,YACnE6O,EAAetD,IAEdsD,IAAgB,YACjBA,EAAe9C,GAGnBlC,EAAkBgF,GAAgBtD,GAC7BqD,EAAanP,QAAmE,YAEjFoP,EAAe9D,GAEnBzoC,EAAMo9B,IAAsCmP,GAAgBtD,EAGxDzB,GAFC8E,EAAa3O,QAAoE,SAAiB,GAE/E2L,GAEf,UAEeb,GAEd6D,EAAa5O,QAAgD,UAC/CuN,GAEdqB,EAAa5O,QAAgD,UAC/CuL,EAGA1B,GAG5BvnC,EAAMylB,iBAAmB,SAAU1M,EAAeiN,GAC9CA,EAAUhmB,EAAM+lB,WAAWC,GAC3B,IAAIwmB,EAAaxmB,EAAQ,MACzB,IAEI,GAAIhmB,EAAMq9B,IAAiDO,MAEvD,OAGJ,IAAK7kB,EAED,YADA,SAAeyzB,EAAY,EAAmC,EAAsD,+BAIxH,GAAIzzB,EAAcE,WAAaF,EAAc8kB,IAEzC,YADA,SAAe2O,EAAY,EAAmC,GAA2C,uDAQ7G,GALKzzB,EAAc8kB,MAEf9kB,EAAc8kB,IAAyC,cAGtD79B,EAAMo9B,IAEP,YADA,SAAeoP,EAAY,EAAmC,GAAmD,8BAIrH,IAAK7E,EAAa5uB,GAGd,YADA,SAAeyzB,EAAY,EAAkC,GAAyD,8CAA+C,CAAE3kD,WAAYmY,EAAM4nC,QAAQ9J,MAIjM/kB,EAAc,MAAc/Y,EAAM4nC,QAAQ9J,IAE9C,IAAI2O,EAAmBzsC,EAAMq9B,IAAiDU,YAA4DtrF,EAGtIi6F,EAAsB3zB,EAAcD,MAAQ9Y,EAAMq9B,IAAiDlpB,MACnGw4B,EAAe7F,EAAO8F,kBAAkB7zB,EAAe2zB,EAAqBF,EAAYC,GAC5F,IAAKE,EAED,YADA,SAAeH,EAAY,EAAmC,GAAkD,4CAGpH,IAAIK,GAAkB,EAkBtB,GAhBI9zB,EAAcojB,KAAiCpjB,EAAcojB,IAA8B,SAC3F,QAAWpjB,EAAcojB,IAA8B,OAAgB,SAAU4P,GAC7E,IACQA,IAAuC,IAA3BA,EAASY,KACrBE,GAAkB,GAClB,SAAeL,EAAY,4CAGnC,MAAOv7H,IAGH,SAAeu7H,EAAY,EAAmC,GAAyD,2EAA4E,QAAiBv7H,GAAI,CAAEg6E,WAAW,QAAQh6E,KAAM,cAGpP8nG,EAAcojB,IAA8B,OAEnD0Q,EACA,OAGJ,IAAI/4G,EAAUqzG,EAAYxB,UAAUgH,GAEhCzxH,EAAS8kF,EAAMs9B,IACfwP,EAAa5xH,EAAOkvB,OACnB0iG,EAAah5G,EAAQ,IAAqCksE,EAAMq9B,IAAiDL,OAClHh9B,EAAMi9B,KAA6C,EAAM,KAAM,IAGnE/hH,EAAOqhH,IAAoCzoG,GAE3Cy2G,IAEJ,MAAOt5H,IACH,SAAeu7H,EAAY,EAAkC,GAA4D,iFAAkF,QAAiBv7H,GAAI,CAAEg6E,WAAW,QAAQh6E,KAGzP+uF,EAAM21B,YAAY5c,EAAeiN,IAKrChmB,EAAMg+B,IAAiE,SAAUlvH,EAAKglB,EAASi0G,GACpE,IAAnBj5H,EAAIi+H,YACJlF,EAAoB/4H,EAAIe,OAAQikB,EAAShlB,EAAIk+H,YAAajF,EAAuBsB,EAAuBv6H,GAAM43H,GAAiB53H,IAAQA,EAAIgB,WAQnJkwF,EAAMi9B,IAA+C,SAAUgQ,EAAOC,EAAclB,GAEhF,QADc,IAAViB,IAAoBA,GAAQ,IAC3BhG,EACD,IACI,IAAI/rH,EAAS8kF,EAAMs9B,IAEnB,GAAKt9B,EAAMq9B,IAAiDO,MAgBxD1iH,EAAOuhH,UAhB2G,CAClH,GAAIvhH,EAAOo6E,MAAoC,EAAG,CAC9C,IAAIxhE,EAAU5Y,EAAO0oH,WACrB2H,EAAmBS,GAAc,EAAqCiB,GAElEC,EACAA,EAAahgI,KAAKF,EAAO8mB,EAASm5G,GAGlCjtC,EAAMo9B,IAAoCtpG,EAASm5G,IAI9C,IAAIlyG,KAKrBiwG,IAEJ,MAAO/5H,GAEH,IAAIk8H,GAAQ,YACPA,GAASA,EAAQ,KAClB,SAAentC,EAAM,MAAwC,EAAmC,GAAiD,gEAAiE,QAAiB/uF,GAAI,CAAEg6E,WAAW,QAAQh6E,OAK5Q+uF,EAAM+2B,YAAc,SAAUvQ,EAAW7B,GACrC3kB,EAAMisC,gBACNxE,EAAiB7iB,SACjBkF,KAKJ9pB,EAAMi+B,IAAyC,SAAUnqG,EAAS6E,EAASxF,IACvE,SAAe6sE,EAAM,MAAwC,EAAkC,GAAsC,4BAA6B,CAAErnE,QAASA,IAC7KqnE,EAAMujC,QAAQ3G,IAAyC9oG,IAK3DksE,EAAMk+B,IAA4D,SAAUpqG,EAAS25E,GAKjF,IAJA,IAAI2/B,EAAS,GACTC,EAAQ,GAER52F,EAASg3D,EAAQh3D,OAAO62F,UACnBzpB,EAAK,EAAG0pB,EAAW92F,EAAQotE,EAAK0pB,EAAS3/H,OAAQi2G,IAAM,CAC5D,IAAIhxG,EAAQ06H,EAAS1pB,GACjB2pB,EAAY15G,EAAQipF,OAAOlqG,EAAMgsC,MAAO,GAAG,GAC3CwpF,EAAax1H,EAAM/F,YACnBugI,EAAM,IAA8BG,GAIpCJ,EAAO,IAA8BI,GAGzC15G,EAAQ,IAAoC,GAC5CksE,EAAMm+B,IAA2CrqG,EAAS25E,EAAQ2wB,KAElEgP,EAAO,IAAoC,GAC3CptC,EAAMi+B,IAAuCmP,EAAQ/D,EAAuB,KAAM,CAAC,kBAAmB57B,EAAQ2wB,IAAkD,KAAM3wB,EAAQy8B,eAAe33G,KAAK,OAElM86G,EAAM,IAAoC,IAC1C/E,EAAe+E,IACf,SAAertC,EAAM,MAAwC,EAAkC,GAAiD,+BAC5HlsE,EAAQ,IAAoC,aAAes5G,EAAO,IAClF,wBAA0BC,EAAM,IAAoC,WAAa5/B,EAAQ4wB,IAAmD,YAMxJr+B,EAAMm+B,IAA6C,SAAUrqG,EAASi0G,GAClE/nC,EAAMujC,QAAQ3G,IAAyC9oG,IAK3DksE,EAAMmrC,WAAa,SAAUD,EAAKp3G,GAC9B,IAAI/jB,EAAe22H,GAAiBwE,GACpC,IAAIA,GAAQn7H,EAAe,KAAO,OAA0B,KAAjBA,EAItC,CACD,IAAI09F,EAAUy6B,EAAen4H,GACzB09F,GAAWA,EAAQy8B,eAAiBz8B,EAAQy8B,cAAgBz8B,EAAQ2wB,MAChEp+B,EAAMq9B,IAAiDiB,MAC3Dt+B,EAAMk+B,IAA0DpqG,EAAS25E,GAGzEzN,EAAMi+B,IAAuCnqG,EAASs3G,EAAuBF,SAVjFnE,EAAqB,EACrB/mC,EAAMm+B,IAA2CrqG,EAAS,OAke/D9mB,EA0BX,OA70BA,EAAU85H,EAAQl6H,GAqzBlBk6H,EAAO8F,kBAAoB,SAAUa,EAAM30B,EAAMrqG,EAAQg+H,GACrD,IAAItY,EAKAA,EAJArb,IAAS20B,EAAK30B,OAAS,QAAkBA,GAI9B20B,EAHA,EAAS,EAAS,GAAIA,GAAO,CAAE30B,KAAMA,IAKpD,IAAI40B,EAAU7G,GAAoB1S,EAASzb,WAAaipB,GACxD,OAAO+L,EAAQj/H,EAAQ0lH,EAAUsY,IAe9B3F,EA90BgB,CA+0BzBzd,IKl4BEskB,GAAoB,IACpBC,GAA6B,IAC1B,SAASC,GAAsBC,GAClC,IAAKA,EACD,MAAO,GAEX,IAAIC,EAAUD,EAAiB,MAAgCH,IAC3Dx8H,GAAS,QAAU48H,GAAS,SAAUC,EAAQC,GAC9C,IAAIC,EAAUD,EAAG,MAAgCL,IACjD,GAAkD,IAA9CM,EAAQ,MAAyC,CACjD,IAAI/lH,EAAM+lH,EAAQ,GAAG,QACjBr9H,EAAQq9H,EAAQ,GACpBF,EAAO7lH,GAAOtX,EAElB,OAAOm9H,IACR,IACH,IAAI,QAAQ78H,GAAQ,MAAoC,EAAG,CAEvD,GAAIA,EAAOg9H,eAAgB,CAEvB,IAAIC,EAAiBj9H,EAAOy5C,SAAWz5C,EAAOy5C,SAAW,IAAM,GAC/Dz5C,EAAO,MAA0DA,EAAO,OAA4D,WAAai9H,EAAiB,MAAQj9H,EAAOg9H,eAGrLh9H,EAAO,MAA0DA,EAAO,OAA2D,KAEvI,OAAOA,EAEJ,IAAIk9H,GAAyB,CAChC/mH,MAAOumH,I,YC5BAS,IAAgB,SAAgB,CACvC/yG,QAAS,EACTgzG,YAAa,EACbr+H,QAAS,EACT/C,MAAO,EACPqhI,SAAU,ICPVC,GAAsC,WACtC,SAASA,KAaT,OAXAA,EAAqBvrB,UAAY,SAAU3wD,EAAQy5B,EAAOrC,EAAYV,GAElE,IAAIylD,EAOJ,YARqB,IAAjBzlD,IAA2BA,GAAe,GAG1CylD,EADA/kD,GAAcp3B,EAAO,OAAwDA,EAAO,MAAqDo3B,MAAgB,QAAkBp3B,EAAO,MAAqDo3B,GAAYqC,IACrOz5B,EAAO,MAAqDo3B,GAAYqC,GAGxEz5B,EAAOy5B,IAEjB,QAAkB0iD,GAA6BzlD,EAAdylD,GAEtCD,EAd8B,G,YCG9BE,GAA4B,IACnCC,GAA2B,kCAC/B,SAASC,GAAiBC,EAAcxuC,EAAOhH,GACvCgH,IAAS,QAAQA,IAAUA,EAAM,OAAoC,IACrEA,EAAQA,EAAM3tE,MAAK,SAAUxf,EAAGhH,GAC5B,OAAOgH,EAAE,OAAuChH,EAAE,WAEtD,QAAWm0F,GAAO,SAAUyuC,GACpBA,EAAU,OAAuCJ,KACjD,QAAWC,GAA2BG,EAAU,WAGxDD,EAAa,OAA8B,CACvCxuC,OAAO,QAAUA,GACjB0uC,MAAOzsB,GAA0BjiB,EAAOhH,EAAK,OAAmCA,MAIrF,SAAS21C,GAA8BH,EAAcx1C,GACxD,SAASysB,IACL,OAAOzB,GAA8B,KAAMhrB,EAAK,OAAmCA,EAAM,MAE7F,SAAS41C,EAAqBC,EAAanpB,EAASopB,EAAW1rB,GAC3D,IAAI2rB,EAAUF,EAAeA,EAAY,OAAoC,EAAK,EAClF,SAASG,IACLD,IACgB,IAAZA,IACA3rB,GAAcA,IACdA,EAAa,MAGjB2rB,EAAU,IACV,QAAWF,GAAa,SAAUI,GAE9B,GAAIA,GAAYA,EAASjvC,MAAM,OAAoC,EAAG,CAClE,IAAIkvC,EAAeD,EAASP,MACxBS,EAAWzpB,EAAQ,OAAyCwpB,GAChEC,EAAS,OAA2CH,GAEpDF,EAAUK,QAGVJ,OAIZC,IAEJ,SAAS/kB,EAAU5D,EAAW7B,GAC1B,IAAIwF,EAAiBxF,GAAe,CAChClJ,OAAQ,GAOZ,OALAszB,EAAqBJ,EAAcnoB,GAAW,SAAU8oB,GACpDA,EAAS,OAA6CnlB,MACvD,WACC3D,EAAU,OAA6C2D,OAEpD,EAEX,SAASyM,EAAYvQ,EAAW7B,GAC5B,IAAIsF,EAAiBtF,GAAe,CAChC/I,OAAQ,EACR6D,SAAS,GAQb,OANAyvB,EAAqBJ,EAActoB,GAAW,SAAUipB,GACpDA,EAAS,OAA6CxlB,MACvD,WACCzD,EAAU,OAA6CyD,GACvDxI,GAAgB,MAEb,EAEX,SAASiuB,EAAYC,GACjB,IAAInuB,EAAY,KAmBhB,OAlBIstB,GAAgBA,EAAa,OAAoC,IACjE,QAAWA,GAAc,SAAUS,GAE/B,GAAIA,GAAYA,EAASjvC,MAAM,OAAoC,KAC/D,QAAWivC,EAASjvC,OAAO,SAAUzxB,GACjC,GAAIA,EAAI,SAA8C8gE,EAGlD,OAFAnuB,EAAY3yC,GAEJ,KAGZ2yC,GAEA,OAAQ,KAKjBA,EAEX,IAAIC,GAAgB,EAChBmuB,EAAoB,CACpBjmD,WAAY,0BACZupC,SAAUyb,GACVrzD,WAAY,SAAU/oB,EAAQ+mC,EAAM5P,EAAYo9B,GAC5CrF,GAAgB,GAChB,QAAWqtB,GAAc,SAAUS,GAC3BA,GAAYA,EAASjvC,MAAM,OAAoC,GAC/D6gB,GAAkBmD,GAA8BirB,EAASP,MAAOz8E,EAAQ+mC,GAAO5P,OAI3F+3B,cAAe,WACX,OAAOA,GAEXgE,iBAAkB,SAAU9vF,EAAMqwF,GAC9BkpB,EAAqBJ,EAAc9oB,GAAWD,KAAc,SAAU0pB,GAClEA,EAAS,OAA6C95G,MACvD,WACCqwF,EAAQ,OAA6CrwF,OAG7DiwF,OAAQ2E,EACRshB,MAAO,WACHqD,EAAqBJ,EAAc/oB,KAAc,SAAU0pB,GACvDA,EAASjsB,SAAQ,SAAUtC,GACvBA,EAAO2qB,OAAS3qB,EAAO2qB,aAE5B,OAEPC,OAAQ,WACJoD,EAAqBJ,EAAc/oB,KAAc,SAAU0pB,GACvDA,EAASjsB,SAAQ,SAAUtC,GACvBA,EAAO4qB,QAAU5qB,EAAO4qB,cAE7B,OAEPrd,SAAUsI,EACV8Y,WAAYH,EACZ7hB,MAAO,SAAUpO,EAASssB,EAAUC,EAAY8D,GAE5C,IAAIT,EAAU,EACVU,GAAgB,EAChBC,EAAU,KAEd,SAASC,IACLZ,IACIU,GAA6B,IAAZV,IACbW,IACAl9D,aAAak9D,GACbA,EAAU,MAEdjE,GAAYA,EAASgE,GACrBhE,EAAW,MAkCnB,OA3CA+D,EAAYA,GAAa,IAYzBZ,EAAqBJ,EAAc/oB,KAAc,SAAU0pB,GACvDA,EAASjsB,SAAQ,SAAUtC,GACvB,GAAIA,EAAO,OAAiC,CACxCmuB,IACA,IAAIa,GAAY,EAEXhvB,EAAO,OAAgCzB,GAAS,WACjDywB,GAAY,EACZD,MACDjE,IACMkE,IAIGzwB,GAAsB,MAAXuwB,EACXA,EAAU/6F,YAAW,WACjB+6F,EAAU,KACVC,MACDH,GAGHG,YAMrB,WACCF,GAAgB,EAChBE,QAEG,GAEXE,UAAW,SAAU7vC,GACjBwuC,EAAexuC,IAGvB,OAAOsvC,EAEJ,SAASQ,GAAoBb,EAAU7lD,EAAY4P,GACtD,IAAIw1C,EAAe,GAKnB,GAJIS,IAEA,QAAWA,GAAU,SAAUjvC,GAAS,OAAOuuC,GAAiBC,EAAcxuC,EAAOhH,MAErF5P,EAAY,CAEZ,IAAI2mD,EAAmB,IACvB,QAAW3mD,GAAY,SAAUw3B,GACzBA,EAAO,OAAuCytB,IAC9C0B,EAAiB,OAA8BnvB,MAGvD2tB,GAAiBC,EAAcuB,EAAkB/2C,GAErD,OAAOw1C,E,gBC1MPwB,GAA4C,SAAU1jI,GAEtD,SAAS0jI,IACL,IAIIxqB,EACAyqB,EALAvjI,EAAQJ,EAAOM,KAAKX,OAASA,KAqDjC,SAASu9G,IACLhE,EAAM,EACNyqB,EAAgB,GAEpB,OAxDAvjI,EAAM28E,WAAa,6BACnB38E,EAAMkmH,SAAW,IAIjBpJ,KACA,OAAawmB,EAA4BtjI,GAAO,SAAUgzF,EAAOuzB,GAC7DvzB,EAAMwwC,wBAA0B,SAAU5Z,GACtC,IAAI6Z,EAAiB,CACjBj+F,GAAIszE,IACJv+B,GAAIqvC,GAER2Z,EAAc,OAA8BE,GAC5C,IAAIxnB,EAAU,CACVynB,OAAQ,YACJ,QAAWH,GAAe,SAAU1Z,EAAa18B,GAC7C,GAAI08B,EAAYrkF,KAAOi+F,EAAej+F,GAElC,OADA+9F,EAAc,OAAkCp2C,EAAK,IAC7C,OAKxB,OAAO8uB,GAEXjpB,EAAM,OAAwD,SAAUrqE,EAAMqwF,GAG1E,IAFA,IAAI2qB,GAAgB,EAChBC,EAA6BL,EAAc,OACtC9iI,EAAI,EAAGA,EAAImjI,IAA8BnjI,EAAG,CACjD,IAAImpH,EAAuB2Z,EAAc9iI,GACzC,GAAImpH,EACA,IACI,IAA8E,IAA1EA,EAAqBrvC,GAAG,OAAgC,KAAM,CAAC5xD,IAAkB,CACjFg7G,GAAgB,EAChB,OAGR,MAAO1/H,IAGH,SAAe+0G,EAAQ,SAAwC,EAAmC,GAAyD,2EAA4E,QAAiB/0G,GAAI,CAAEg6E,WAAW,QAAQh6E,KAAM,IAI9R0/H,GACD3wC,EAAM,OAA6CrqE,EAAMqwF,IAGjEhmB,EAAM,OAA+C,WACjD8pB,QAOD98G,EASX,OApEA,EAAUsjI,EAA4B1jI,GAkEtC0jI,EAA2BzuC,QAAQ,EAE5ByuC,EArEoC,CAsE7CjnB,IC7DEwnB,GAAqB,yCACrBC,GAAyB,uBACzBC,GAAuB,4BACvBC,GAAuB,yBAEvBC,GAAoB,CAEpB5vC,oBAAqB,GAOzB,SAAS6vC,GAAmB53C,EAAM63C,GAC9B,OAAO,IAAIhxB,GAAYgxB,GAE3B,SAASC,GAAoB3iI,EAAQ4iI,EAAiBC,GAClD,IAAIppH,EAEAqpH,EAAiB,GAGjBC,EAAgB,GAwBpB,OAtBA,QAAWF,GAAe,SAAUziE,KAE5B,QAAkBA,KAAQ,QAAkBA,EAAI,WAChD,QAAWgiE,IAEf,IAAIY,EAAc5iE,EAAI,OAClB8a,EAAa9a,EAAI,OACjBA,GAAO4iE,KACF,QAAkBD,EAAcC,IAKjCD,EAAcC,GAAe9nD,GAJ7B,SAAel7E,EAAQ,sCAAwCgjI,EAAc,MAAQD,EAAcC,GAAe,KAAO9nD,MAQ5H8nD,GAAeA,EAAcJ,IAE9BE,EAAe,OAA8B1iE,MAG9C3mD,EAAK,CACJimB,IAAKmjG,GAETppH,EAAG,OAA4BqpH,EAC/BrpH,EAER,SAASwpH,GAAiBlwB,EAAWI,GACjC,IAAI+vB,GAAS,EAOb,OANA,QAAW/vB,GAAS,SAAUV,GAC1B,GAAIA,IAAWM,EAEX,OADAmwB,GAAS,GACD,KAGTA,EAEX,SAASC,KACL,IAAI1pH,EACJ,OAAO,SAAaA,EAAK,GACrBA,EAAG,MAAiE,SAAU42E,KAC9E52E,EAAG,OAAoE,SAAU42E,KACjF52E,EAAG,OAAyC,SAAU6W,KACtD7W,EAAG,OAAmD,SAAU6W,EAAQ68E,KACxE1zF,EAAG,OAAwD,SAAU8jH,EAAYvsB,KACjFv3F,IAER,IAAI2pH,GAA0B,WAC1B,SAASA,IAEL,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAvf,EACAwf,EACAv0C,EACAw0C,EAIAC,EAAqB,GACzB,OAAanB,EAAUtlI,MAAM,SAAUyzF,GAgQnC,SAAS8pB,IACLioB,GAAiB,EAEjBD,GAAU,SAAU,EAAM,GAAIb,IAC9BjxC,EAAM,OAAoC8xC,EAC1C9xC,EAAM,OAAoC,IAAIK,GAAA,GAAiByxC,GAC/D9xC,EAAM,OAA8C,GACpD4yC,EAA8B,IAAItC,GAClC0B,EAAc,GACdC,EAAuB,KACvBC,EAAe,KACfC,EAAkB,KAClBC,EAAiB,KACjBC,EAAe,KACfE,EAAkB,KAClBD,EAAoB,GACpBE,EAAkB,KAClBC,EAAiB,KACjBC,EAAgB,KAChBC,GAAe,EACfE,EAAyB,KACzBvf,GAAgB,QAAsB,cAAc,GACpDwf,EAAkBhqB,KAClBiqB,EAAY,KAEhB,SAASE,IACL,OAAO3uB,GAA8B4uB,IAAmBpB,EAAS9xC,GAGrE,SAASmzC,EAAiBruB,GAEtB,IAAIsuB,EAAgBhC,GAAoBpxC,EAAM,OAAmC2uC,GAA2B2D,GAC5GC,EAAkBa,EAAc,OAChCf,EAAe,KAEf,IAAIf,EAAgB8B,EAAcjlG,IAGlC,GADAukG,GAAgB,QAAUtC,GAAoBqC,EAAgBnB,EAAetxC,IACzEwyC,EAAiB,CAKjB,IAAIr4C,GAAM,QAAWm3C,EAAekB,IACvB,IAATr4C,GACAm3C,EAAc,OAAkCn3C,EAAK,GAEzDA,GAAM,QAAWo4C,EAAiBC,IACrB,IAATr4C,GACAo4C,EAAgB,OAAkCp4C,EAAK,GAE3Dq4C,EAAgBrC,UAAUuC,QAG1BF,EAAkBvD,GAA8ByD,EAAe1yC,GAGnEsxC,EAAc,OAA8BkB,GAC5CD,EAAgB,OAA8BC,GAE9CxyC,EAAM,OAA8C2hB,GAAY2vB,GAEhEkB,EAAgB,OAA0CV,EAAS9xC,EAAOsxC,GAC1EnwB,GAAkB8xB,IAAiB3B,GAEnCtxC,EAAM,QAA8C,QAAU2hB,GAAY4wB,GAAmB,KAAKz5F,QAC9FgsE,GACAyF,EAAUzF,GAGlB,SAASuuB,EAAW1D,GAChB,IAAIznH,EACAorH,EAAS,KACT9xB,EAAY,KA4ChB,OA3CA,QAAWxhB,EAAM,QAA6C,SAAUnxB,GACpE,GAAIA,EAAI,SAA8C8gE,GAAoB9gE,IAAQ2jE,GAAmB3jE,IAAQ+jE,EAEzG,OADApxB,EAAY3yC,GACJ,MAGX2yC,GAAagxB,IAEdhxB,EAAYgxB,EAAgB3C,WAAWF,IAEvCnuB,IACUt5F,EAAK,CACPg5F,OAAQM,GAEZt5F,EAAG,OAA0C,SAAU4xE,GACnDmnB,GAAgBO,GAAW,QAAiB1nB,GAEhD5xE,EAAGwwE,UAAY,WACX,IAAI2oB,EAAcJ,GAAgBO,GAClC,OAAQH,EAAY,SAA0CA,EAAY,QAE9En5F,EAAGwoH,OAAS,SAAUjxB,EAAS8zB,GAC3B,IAAIrrH,OACY,IAAZu3F,IAAsBA,GAAU,GACpC,IAAI+zB,EAAkB,CAAChyB,GACnBmD,GAAez8F,EAAK,CAChB0zF,OAAQ,GAEZ1zF,EAAG,MAAoCu3F,EACvCv3F,GACJurH,EAAeD,EAAiB7uB,GAAa,SAAU+uB,GAC/CA,GAEAP,EAAiB,CACbv3B,OAAQ,GACR83B,QAASF,IAGjBD,GAAYA,EAASG,OA3BjCJ,EA8BIprH,GAEDorH,EAEX,SAASJ,IACL,IAAKb,EAAc,CAEf,IAAI3oD,GAAc6oD,GAAmB,IAAIz5F,SAEoB,KAAzD,QAAW4wC,EAAYkpD,IACvBlpD,EAAW,OAA8BkpD,GAE7CP,EAAe9vB,GAA0BZ,GAAYj4B,GAAaooD,EAAS9xC,GAE/E,OAAOqyC,EAEX,SAASoB,EAAeE,EAAYhvB,EAAaivB,GAC7C,GAAID,GAAcA,EAAW,OAAoC,EAAG,CAChE,IAAIE,EAActxB,GAA0BoxB,EAAY7B,EAAS9xC,GAC7DwmB,EAAY9B,GAAoCmvB,EAAa7zC,GACjEwmB,EAAU,QAA2C,WACjD,IAAIktB,GAAU,EAEVI,EAAsB,IAC1B,QAAWxB,GAAmB,SAAUpxB,EAAQ/mB,GACvCu3C,GAAiBxwB,EAAQyyB,GAI1BD,GAAU,EAHVI,EAAoB,OAA8B5yB,MAM1DoxB,EAAoBwB,EAEpB,IAAIC,EAAmB,GACnBtB,KACA,QAAWA,GAAgB,SAAUnyC,EAAOnG,GACxC,IAAI65C,EAAW,IACf,QAAW1zC,GAAO,SAAUruB,GACnBy/D,GAAiBz/D,EAAS0hE,GAI3BD,GAAU,EAHVM,EAAS,OAA8B/hE,MAM/C8hE,EAAiB,OAA8BC,MAEnDvB,EAAiBsB,GAErBH,GAAkBA,EAAeF,MAErCltB,EAAU,OAA6C7B,QAGvDivB,GAAe,GAGvB,SAASK,IACL,IAAI3zC,EAAQN,EAAM,OAAoCA,EAAM,OAAkCM,MAAQ,GAClGA,KACA,QAAWA,GAAO,SAAU3lE,GACxB,IAAIzS,EACAyN,GAAQzN,EAAK,GACbA,EAAG,MAA6B2qH,GAAkD,sBAAwBl4G,EAAW,OACrHzS,EAAG4wF,MAAO,QAAYg5B,EAAQ,QAC9B5pH,EAAGypC,MAAO,QAAY,IAAI52B,MAC1B7S,EAAGwwF,SAAW,eACdxwF,EAAG+wF,SAAW,CAAEtgF,QAASgC,EAAW,QACpCzS,GACJ83E,EAAMk0C,MAAMv+G,MAEhB2qE,EAAM,OAAoC,GAGlD,SAASstB,EAAenO,EAASssB,EAAUC,EAAY8D,GACnD,OAAI0C,EACOA,EAAgB,OAAgC/yB,EAASssB,EAAUC,GAAc,EAAqC8D,IAEjI/D,GAAYA,GAAS,IACd,GAEX,SAASoI,IACL,IAAIl1C,GAAgB,QAAY6yC,EAAQ7yC,gBAClB,IAAlBA,GAA0BV,IAE1B0zC,EAAqB,OAAqE1zC,GAC1FA,EAAiB,MAEjB0zC,IAAyB1zC,IAAoC,IAAlBU,IAC3CV,GAAiB,QAAiBuzC,GAClCG,EAAqB,MAAkE1zC,IAG/F,SAAS61C,IACL,IAAIC,GAAgB,QAAYvC,EAAQuC,gBACnCA,GAAiBlC,IAElBA,EAAkB,MAElBkC,IAEA,QAAYvC,EAAS,MAAqBZ,IAGlD,SAASoD,IACL,IAAIpwB,GAAY,QAAY4tB,EAAS,MAAsB,IAC3D5tB,EAAUqwB,oBAAsBtC,EAEpC,SAAS1nB,EAAUzF,GACf,IAAI6B,EAAY9B,GAAoCquB,IAAmBlzC,GAClEA,EAAMw0C,cAA6D,IAA9Cx0C,EAAMw0C,YAAY7tB,EAAW7B,IACnD6B,EAAU,OAA6C7B,GAG/D,SAAS2vB,EAAiB97G,GACtB,IAAIlqB,EAASuxF,EAAM,OACfvxF,GAEA,SAAeA,EAAQ,EAAkC,GAA8CkqB,IAGvG,QAAWA,GA3enBmxF,IACA9pB,EAAM,OAAmD,WAAc,OAAO+xC,GAE9E/xC,EAAM,OAA4C,SAAUztC,EAAQm3B,EAAYj7E,EAAQimI,GAChF/B,IACA,QAAW5B,IAGX/wC,EAAM,WACN,QAAW,iDAEf8xC,EAAUv/E,GAAU,GACpBytC,EAAM,OAAoC8xC,GACtC,QAAkBv/E,EAAO,UACzB,QAAW,sCAEf0/E,EAAuByC,EAEvB10C,EAAM8wC,IAA0B4D,EAChCP,IACAC,IAEAE,IACI7lI,IACAuxF,EAAM,OAAoCvxF,GAE9C,IAAIkmI,GAAgB,QAAY7C,EAAS,MAAgB,IAEzDQ,EAAoB,GACpBA,EAAkB,OAA8BhiI,MAAMgiI,EAAmB,EAAc,EAAc,GAAI5oD,GAAY,GAAQirD,GAAe,IAC5IlC,GAAiB,QAAYX,EAAS,KAAc,IACpDqB,EAAiB,MACZT,GAAqE,IAApDA,EAAc,SAChC,QAAW,MAAQ,KAAe,cAEtCX,GAAiB,EACjB/xC,EAAM40C,gBAEV50C,EAAM60C,wBAA0B,WAC5B,IAAIC,EAAW,GAMf,OALIpC,IACA,QAAWA,GAAe,SAAUnD,GAChCuF,EAAS,OAA8BvF,EAASjvC,WAGjD,QAAUw0C,IAErB90C,EAAMk0C,MAAQ,SAAUn7B,GAEpBA,EAAcD,KAAOC,EAAcD,MAAQg5B,EAAQ,OAEnD/4B,EAAc,OAAgCA,EAAc,SAAiC,QAAY,IAAIh+E,MAE7Gg+E,EAAcK,IAAML,EAAcK,KAAO,OACpCu5B,GAAgB3yC,EAAM,SAEvBizC,IAAgB,OAA6Cl6B,GAI7Di5B,EAAY,OAA8Bj5B,IAGlD/Y,EAAM,OAAiEizC,EACvEjzC,EAAM,OAAkD,WAOpD,OANKiyC,IAEDA,EAAuBL,KAEvB5xC,EAAM8wC,IAA0BmB,GAE7BA,GAQXjyC,EAAM,MAAoE,SAAUlB,GAC5EmzC,GACAA,EAAqB,MAAkEnzC,IAO/FkB,EAAM,OAAuE,SAAUlB,GAC/EmzC,GACAA,EAAqB,OAAqEnzC,IAGlGkB,EAAMzG,aAAe,WAIjB,OAHK64C,IACDA,GAAiB,SAAgBN,EAAS9xC,EAAM,SAE7CoyC,GAEXpyC,EAAM+0C,aAAe,SAAUt8C,GAC3B25C,EAAiB35C,GAErBuH,EAAM,OAA6C,WAC/C,IAAKkyC,IAAiBC,IACd,QAAYL,EAAQuC,eAAgB,CACpC,IAAIW,GAAgB,QAAYlD,EAAQ,SACpC,QAAWkD,KACX7C,EAAkB6C,EAAch1C,EAAOA,EAAM,WAIzD,OAAOkyC,GAAgBC,GAAmBpxB,MAE9C/gB,EAAMi1C,WAAa,SAAUt0B,GACzBuxB,EAAevxB,GAEnB3gB,EAAMk1C,SAAW,WACb,OAAOlD,EAAY,QAEvBhyC,EAAM40C,aAAe,WACjB,GAAI7C,GAAkBC,EAAY,OAAoC,EAAG,CACrE,IAAImD,EAAanD,EACjBA,EAAc,IACd,QAAWmD,GAAY,SAAUhiH,GAC7B8/G,IAAgB,OAA6C9/G,QAOzE6sE,EAAMo1C,iBAAmB,SAAU/sD,GAC/BwqD,EAAyBxqD,GAAa,KACtC,IAAIgtD,GAAW,QAAYvD,EAAQwD,uBAUnC,OATKD,GAAcA,EAAW,IAC1BA,EAAW,KAEXrC,GACApmE,cAAcomE,GAElBA,EAAqBtmE,aAAY,WAC7BunE,MACDoB,GACIrC,GAKXhzC,EAAM,OAAoE,WAClEgzC,IACApmE,cAAcomE,GACdA,EAAqB,EACrBiB,OAIR,QAAej0C,GAAO,WAAc,OAAO4yC,IAAgC,CAAC,4BAC5E5yC,EAAM4kB,OAAS,SAAUnF,EAAS81B,EAAgBzF,GAC9C,IAAI5nH,OACY,IAAZu3F,IAAsBA,GAAU,GAC/BsyB,IAED,QAAWf,IAGX2B,IAEA,QAAW5B,IAEf,IAAIpsB,GAAez8F,EAAK,CAChB0zF,OAAQ,IAEZ1zF,EAAG,MAAoCu3F,EACvCv3F,EAAGstH,eAAgB,EACnBttH,GACAutH,EAAmB/wB,GAAoCwuB,IAAmBlzC,GAK9E,SAAS01C,EAAUF,GACf7wB,EAAY6wB,cAAgBA,EAC5B7C,GAAe,EAEfG,EAAgB3pB,IAAIssB,EAAkB9wB,GAEtC3kB,EAAM,SAENy1C,EAAiB,OAA6C9wB,GAZlE8wB,EAAiB,QAA2C,WACxD3rB,IACAyrB,GAAkBA,EAAe5wB,KAClC3kB,GAWE4tB,EAAenO,EAASi2B,EAAW,EAAqC5F,IACzE4F,GAAU,IAGlB11C,EAAM,OAA2CqzC,EACjDrzC,EAAM21C,UAAY,SAAUz0B,EAAQ00B,EAAiBn2B,EAASo2B,GAC1D,IAAK30B,EAGD,OAFA20B,GAASA,GAAM,QACfpB,EAAiB5D,IAGrB,IAAIiF,EAAiBzC,EAAWnyB,EAAO,QACvC,GAAI40B,IAAmBF,EAGnB,OAFAC,GAASA,GAAM,QACfpB,EAAiB,WAAavzB,EAAO,OAA4C,wBAGrF,IAAI4D,EAAc,CACdlJ,OAAQ,IAEZ,SAASm6B,EAAWrC,GAChBpB,EAAkB,OAA8BpxB,GAChD4D,EAAYxb,MAAQ,CAAC4X,GAErBiyB,EAAiBruB,GACjB+wB,GAASA,GAAM,GAEnB,GAAIC,EAAgB,CAChB,IAAIE,EAAmB,CAACF,EAAe50B,QACnCyD,EAAc,CACd/I,OAAQ,EACR6D,UAAWA,GAEfg0B,EAAeuC,EAAkBrxB,GAAa,SAAU+uB,GAC/CA,GAKD5uB,EAAY4uB,QAAUsC,EACtBlxB,EAAYlJ,QAAU,GACtBm6B,GAAW,IALXF,GAASA,GAAM,WAUvBE,GAAW,IAGnB/1C,EAAMmH,aAAe,WACjB,OAAOmsB,GAEXtzB,EAAM,OAAkC4tB,EACxC5tB,EAAMm1B,YAAc,SAAU8gB,GAI1B,OAHKlD,IACDA,EAAY/wB,MAET+wB,GAEX/yC,EAAMk2C,YAAc,SAAUC,GAC1BpD,EAAYoD,GAAY,OAG5B,QAAgBn2C,EAAO,eAAe,WAAc,OAAO8yC,IAAoB,UAiRvF,OAFAjB,EAAShwC,QAAQ,EAEVgwC,EA3iBkB,GCtF7B,SAASuE,GAAcC,EAAWz2H,EAAM6/F,EAAS7gF,IAC7C,QAAWy3G,GAAW,SAAUv3C,GAC5B,GAAIA,GAAYA,EAASl/E,GACrB,GAAI6/F,EACAxqE,YAAW,WAAc,OAAOrW,EAASkgE,KAAc,QAGvD,IACIlgE,EAASkgE,GAEb,MAAO7tF,QAUvB,IAAIsjI,GAAqC,WACrC,SAASA,EAAoBhiF,GACzBhmD,KAAK8pI,UAAY,GACjB,IAAIC,KAAqB/jF,GAAU,IAAI+jF,iBACvC,OAAa/B,EAAqBhoI,MAAM,SAAUyzF,GAC9CA,EAAM,MAAoE,SAAUlB,GAChFkB,EAAMq2C,UAAU,OAA8Bv3C,IAMlDkB,EAAM,OAAuE,SAAUlB,GACnF,IAAIjgD,GAAQ,QAAWmhD,EAAM,OAAyClB,GACtE,MAAOjgD,GAAS,EACZmhD,EAAMq2C,UAAU,OAAkCx3F,EAAO,GACzDA,GAAQ,QAAWmhD,EAAM,OAAyClB,IAO1EkB,EAAM,OAA4C,SAAUjhE,GACxDq3G,GAAcp2C,EAAM,OAAyC,OAAiB,GAAM,SAAUlB,GAC1FA,EAAS,OAA0C//D,OAS3DihE,EAAM,OAAsD,SAAUjhE,EAAQ68E,GAC1Ew6B,GAAcp2C,EAAM,OAAyC,OAAsB,GAAM,SAAUlB,GAC/FA,EAAS,OAAoD//D,EAAQ68E,OAQ7E5b,EAAM,OAA2D,SAAUgsC,EAAYvsB,GACnF22B,GAAcp2C,EAAM,OAAyC,MAAyByf,GAAS,SAAU3gB,GACrGA,EAAS,OAAyDktC,EAAYvsB,OAGtFzf,EAAM,OAA0C,SAAUsgB,GAClDA,KAEIg2B,GAAoBh2B,EAAU,UAC9B81B,GAAcp2C,EAAM,OAAyC,OAAgB,GAAO,SAAUlB,GACtFwhB,EAAU,MACVrrE,YAAW,WAAc,OAAO6pD,EAAS,OAAwCwhB,KAAe,GAGhGxhB,EAAS,OAAwCwhB,WAkB7E,OAFAi0B,EAAoB1yC,QAAQ,EAErB0yC,EA5E6B,GCfpCgC,GAAiC,SAAU3pI,GAE3C,SAAS2pI,IACL,IAAIvpI,EAAQJ,EAAOM,KAAKX,OAASA,KA8BjC,OA7BA,OAAagqI,EAAiBvpI,GAAO,SAAUgzF,EAAOuzB,GAgBlD,SAASijB,EAAuBz9B,IACxB,QAAkBA,EAAc,SAChC09B,EAAoB19B,IACpB,QAAW,4BAGnB,SAAS09B,EAAoB19B,GACzB,IAAIqH,EAAUpgB,EAAM,SAChBogB,GACAA,EAAQ,OAAoD,CAACrH,GAAgB,GAxBrF/Y,EAAM,OAA4C,SAAUztC,EAAQm3B,EAAYj7E,EAAQimI,GACpFnhB,EAAM,OAA0ChhE,EAAQm3B,EAAYj7E,GAAU,IAAI4xF,GAAA,GAAiB9tC,GAASmiF,GAAuB,IAAIH,GAAoBhiF,KAE/JytC,EAAMk0C,MAAQ,SAAUn7B,GACpByH,GAAOxgB,EAAM,UAA8C,WAAc,MAAO,2BAA4B,WAClF,OAAlB+Y,IACA09B,EAAoB19B,IAEpB,QAAW,2BAGfy9B,EAAuBz9B,GACvBwa,EAAM2gB,MAAMn7B,MACb,WAAc,MAAO,CAAGpjF,KAAMojF,MAAuBA,EAAkB,UAe3E/rG,EASX,OAzCA,EAAUupI,EAAiB3pI,GAuC3B2pI,EAAgB10C,QAAQ,EAEjB00C,EA1CyB,CA2ClC1E,IC/CS,GAAe,WACf6E,GAAiB,aCCjBC,GAAmB,aACnBC,GAAY,OACZ,GAAc,SACd,GAAgB,UAChBjgC,GAAe,SACfC,GAAmB,aACnBigC,GAAe,UACfC,GAAiB,UACjBC,GAAgB,SAChB,GAAY,OACZC,GAA6B,4BAC7BC,GAA6B,8BAC7BC,GAAwB,iBACxBC,GAAe,UACfC,GAAuB,iBACvBC,GAAc,QACd,GAA0B,mBAC1BC,GAA6B,8BAC7BC,GAA6B,yBAC7BC,GAAkB,YAClBxiD,GAAqB,cACrByiD,GAA6B,8BAC7BC,GAA6B,4BAC7BC,GAA6B,yBAC7BC,GAA6B,sBAC7BC,GAA8B,+BAC9BC,GAA8B,yCAC9BC,GAA2B,oBAC3BC,GAA8B,sBAC9BC,GAA8B,uBAC9BC,GAAc,SACdC,GAAmB,aACnBC,GAAkB,YAClBC,GAAiB,WACjBC,GAAiB,WACjBC,GAAyB,kBACzBC,GAAkB,YAClBC,GAAoB,aACpBC,GAAuB,gBACvBliD,GAAc,SACdmiD,GAAyB,kBACzBC,GAA8B,sBAC9BC,GAAqB,eACrBC,GAA8B,uBAC9BC,GAA0B,kBAC1BC,GAAgB,WAChBC,GAA8B,wBAC9BC,GAAuB,gBACvBC,GAA8B,wBAC9BC,GAAiB,WACjBC,GAA8B,sBAC9B,GAAY,OACZC,GAAmB,aACnBC,GAA8B,yBAC9BC,GAA2B,qBAC3BC,GAA2B,oBAC3BC,GAAuB,gB,YCzDlC,SAASC,GAAkBC,EAAelmD,EAAOC,GAC7C,IAAIxiF,EAAS,EACTo8F,EAAOqsC,EAAclmD,GACrB2kB,EAAKuhC,EAAcjmD,GAIvB,OAHI4Z,GAAQ8K,IACRlnG,GAAS,QAAsBo8F,EAAM8K,IAElClnG,EAGX,SAAS0oI,GAAiB7X,EAAOpiH,EAAMg6H,EAAelmD,EAAOC,GACzD,IAAIxiF,EAAS,EACTN,EAAQ8oI,GAAkBC,EAAelmD,EAAOC,GAIpD,OAHI9iF,IACAM,EAAS2oI,GAAc9X,EAAOpiH,GAAM,QAAa/O,KAE9CM,EAGX,SAAS2oI,GAAc9X,EAAOpiH,EAAM/O,GAChC,IAAIkpI,EAAU,WACV5oI,EAAS,EACb,GAAI6wH,GAASpiH,GAAQ/O,EAAO,CACxB,IAAImpI,EAAWhY,EAAM+X,GAAY/X,EAAM+X,IAAY,GACnDC,EAASp6H,GAAQ/O,EACjBM,EAAS,EAEb,OAAOA,EAGX,SAAS8oI,GAAkBC,EAAUC,GAqBjC,IAAIP,EAAgBM,EAASZ,IACzBtX,EAAQmY,EAAWzD,KAA4C,GAC/D0D,EAAW,EACXC,EAAU,OACVC,EAAW,QACXC,EAAS,MACTC,EAAkB,eAClBC,EAAa,UACbC,EAAc,WACdC,EAAa,UACbC,EAAc,WACdC,EAAe,YACfC,EAAuBN,EAAkBF,EACzCS,EAAqBP,EAAkBD,EACvCS,EAAkBP,EAAaH,EAC/BW,EAAgBR,EAAaF,EAC7BW,EAAkBP,EAAaL,EAC/Ba,EAAgBR,EAAaJ,EAC7Ba,EAAmBR,EAAcN,EACjCe,EAAiBT,EAAcL,EAC/Be,EAAmBZ,EAAcJ,EACjCiB,EAAiBb,EAAcH,EAC/BiB,EAAkB,eAClBC,EAAqB,kBACrBC,EAAqB,kBACrBC,EAAkB,eACtB,GAAI/B,EAAe,CAEfQ,GAAYP,GAAiB7X,EAAO0Y,EAAad,EAAe0B,EAAkBC,GAElFnB,GAAYP,GAAiB7X,EAAOwY,EAAiBZ,EAAekB,EAAsBC,GAE1FX,GAAYP,GAAiB7X,EAAOyY,EAAYb,EAAeoB,EAAiBC,GAEhFb,GAAYP,GAAiB7X,EAAO2Y,EAAYf,EAAesB,EAAiBC,GAEhFf,GAAYP,GAAiB7X,EAAO4Y,EAAahB,EAAewB,EAAkBC,GAElFjB,GAAYP,GAAiB7X,EAAO,iBAAkB4X,EAAeiB,EAAcI,GAEnFb,GAAYP,GAAiB7X,EAAO,cAAe4X,EAAesB,EAAiBG,GAEnF,IAAIxgE,EAAW++D,EAAc,IACxB/+D,IACDA,EAAW8+D,GAAkBC,EAAeiB,EAAcQ,IAAmB,GAEjFjB,GAAYN,GAAc9X,EAAO,GAAcnnD,GAC/Cu/D,GAAYN,GAAc9X,EAAO,YAAannD,GAC9C,IAAI+gE,EAAehC,EAAc+B,GACjC,GAAIC,EAAc,CACd,IAAIC,EAAW,IACf,QAAWD,GAAc,SAAU/qI,EAAOspF,GACtC,IAAIv6E,GAAO,QAAgB/O,EAAMwpI,IAAY,GAAKlgD,GAC9C7pC,EAAWurF,EAASj8H,IAAS,IACjC,QAAc/O,GAAO,SAAUsX,EAAKsjB,IAC5BtjB,IAAQkyH,IAAW,QAAS5uG,KAAQ,QAASA,MACzC6kB,EAASnoC,KACTsjB,EAAM6kB,EAASnoC,GAAO,IAAMsjB,IAE5BA,IAAQ,QAASA,KAEjB6kB,EAASnoC,GAAOsjB,OAI5BowG,EAASj8H,GAAQ0wC,KAErB8pF,GAAYN,GAAc9X,EAAO2Z,EAAiBE,GAEtDzB,GAAYN,GAAc9X,EAAOwZ,EAAiB5B,EAAc4B,IAChEpB,GAAYN,GAAc9X,EAAOyZ,EAAoB7B,EAAc6B,IACnErB,GAAYN,GAAc9X,EAAO0Z,EAAoB9B,EAAc8B,SAG/DxB,EAASd,MACTgB,GAAYN,GAAc9X,EAAO,UAAWkY,EAAS4B,eAGzD1B,IACAD,EAAWzD,IAA2C1U,GAG9D,IAAI+Z,GAAoC,WACpC,SAASA,IACL,IAAI93D,EAAO13E,KACX03E,EAAKo0D,KAAyC,EAC9Cp0D,EAAK+3D,sBAAuB,EAC5B/3D,EAAKq0D,KAAyC,EAC9Cr0D,EAAKu0D,KAA2C,EAEhDv0D,EAAK20D,KAAiE,EAE1E,OAAOmD,EAV4B,GAanCE,GAA4B,WAC5B,SAASA,EAAW1oC,EAASC,EAAQ/kG,EAAQ0nI,GACzC,IAAIjuH,EACA+7D,EAAO13E,KACPihH,EAAU/+G,EACVytI,EAAkB,eAGtBj4D,EAAKm1D,IAAyC,KAC9Cn1D,EAAKk4D,WAAY,EACjBl4D,EAAKm4D,mBAAqB,KAC1Bn4D,EAAKmzD,IAAqD,KAC1DnzD,EAAKo4D,0BAA4B,KACjCp4D,EAAKq4D,iBAAmB,KACxBr4D,EAAKw1D,IAA4D,KACjEx1D,EAAKs4D,QAAU,EACft4D,EAAKosC,QAAU,KACfpsC,EAAK0yD,IAA6C,KAClD1yD,EAAKu4D,YAAc,EACnBv4D,EAAKuS,IAAoC,KACzCvS,EAAKi0D,IAAoC,KACzCj0D,EAAKs0D,IAAwD,KAC7Dt0D,EAAKw4D,oBAAsB,KAC3Bx4D,EAAK60D,IAAkE,KACvE70D,EAAKy4D,qBAAuB,KAC5Bz4D,EAAK04D,QAAU,KACf14D,EAAK24D,mBAAqB,IAAIb,GAC9B93D,EAAK44D,cAAgB,EACrB54D,EAAK,IAAuCsvB,EAC5CtvB,EAAK0yB,IAAqCnD,EAC1CvvB,EAAK2yB,IAA0D,OAAbu/B,QAAkC,IAAbA,OAAsB,EAASA,EAASzhD,gBAE3GzQ,EAAKy1D,IADLvD,GAC0DjuH,EAAK,GAC3DA,EAAG4uH,IAAqCX,EAASsC,MACjDvwH,EAAG6uH,IAAmCZ,EAAS5hD,YAC/CrsE,EAAG0uF,IAA0Cu/B,EAASuC,MACtDxwH,GAGqD,MAE7D,OAAa+zH,EAAYh4D,GAAM,SAAUA,GACrCA,EAAK3nC,eAAiB,WAClB,OAAO2nC,EAAK0yD,KAA6C,QAAkB1yD,EAAK0yD,KAA8C,MAElI1yD,EAAKyN,YAAc,WACf,OAAOzN,EAAK0yD,KAA6C,QAAgBnpB,GAAS,SAAkBvpC,EAAKuS,IAAmCvS,EAAK0yD,MAA+C,MAEpM1yD,EAAK80D,IAAyD,SAAU+D,EAAUC,EAA6BC,GAC3G,IAAI90H,EAGJ,GADA+7D,EAAKg5D,kBAAoBzhI,KAAKmiB,MAA+E,KAAzE,QAAsBsmD,EAAKi5D,gBAAiBj5D,EAAKk5D,uBAAgC,IACjHl5D,EAAKw1D,IAA4D,EACjE,OAAO,KAEX,IAAIU,GAAcjyH,EAAK,CACfsqB,GAAI,IAAMyxC,EAAK,IAAuC,IAAMA,EAAK0yB,IACjEzkF,OAAQ+xD,EAAKizD,OAEjBhvH,EAAG,IAA6B+7D,EAAKyN,cACrCxpE,EAAGuR,KAAOqjH,EACV50H,EAAGsvH,IAAwC,KAC3CtvH,EAAG2yD,SAAWoJ,EAAKw1D,IACnBvxH,EAAGoQ,SAAa2rD,EAAKi0D,KAAuC,MAAUj0D,EAAKi0D,IAAsC,IACjHhwH,EAAGw5G,cAAkBz9C,EAAKi0D,IAC1BhwH,EAAG7Z,OAAS41E,EAAKuS,IACjBtuE,EAAGwuH,IAAkB,CAAE3uD,WAAY9D,EAAKuS,KACxCtuE,GAQJ,GAPI+7D,EAAKs0D,MAEL4B,EAAW3C,IAA2C,IAAIz8G,KAC1Do/G,EAAW3C,IAAyC/8C,QAAQxW,EAAKs0D,MAGrE0B,GAAkBh2D,EAAMk2D,GACpB4C,IACI,QAAQ94D,EAAKylD,gBAAgB,IAAoC,EAAG,CACpE,IAAI1H,EAAQmY,EAAWzD,IAA2CyD,EAAWzD,KAA4C,GACzH1U,EAAMoV,IAAqDnzD,EAAKmzD,IAGxE,GAAI4F,EAAa,CACb,IAAIltI,EAAWktI,IACf,GAAIltI,EAAU,CAEV,IAAIgvG,EAAqBhvG,EAAS0pI,IAIlC,GAHI16B,IACAq7B,EAAWr7B,mBAAuDA,GAElEhvG,EAASsoI,MACL,QAAQtoI,EAASstI,WAAW,IAAoC,EAAG,CAC/Dpb,EAAQmY,EAAWzD,IAA2CyD,EAAWzD,KAA4C,GACzH1U,EAAMqb,gBAAkBvtI,EAASsoI,IAGzC,GAAIn0D,EAAKq5D,iBAAmBr5D,EAAKi0D,KAAqC,IAAK,CACvE,IAAI3oI,EAAeO,EAAS2pB,KACxBuoG,EAAQmY,EAAWzD,IAA2CyD,EAAWzD,KAA4C,GACpG,KAAjBnnI,GAAwC,SAAjBA,IACvByyH,EAAMjyH,aAAeD,EAASC,aAAeD,EAASqoI,IAA6C,MAAQroI,EAASosI,GAAmBpsI,EAASqoI,KAE/H,SAAjB5oI,IACAyyH,EAAMjyH,aAAeD,EAASA,SAAWA,EAASqoI,IAA6C,MAAQtxH,KAAKC,UAAUhX,EAASkpI,KAAyClpI,EAASqoI,OAKjM,OAAOgC,GAEXl2D,EAAKi1D,IAAoD,WACrD,IAAIhxH,EACAq1H,EAAQ,KACRpH,EAAWlyD,EAAKy1D,IACpB,GAAIvD,IAAaA,EAASW,KAAyCX,EAASY,KAAsC,CAC9GwG,EAAQ,GACR,IAAIC,EAAWD,EAAMliB,GAAWG,WAAatzG,EAAK,GAC9CA,EAAG,IAAoCiuH,EAASW,IAChD5uH,EAAGssE,SAAW2hD,EAASY,IACvB7uH,IACC,QAAkBiuH,EAASv/B,OAC5B4mC,EAAS5mC,IAA6Cu/B,EAASv/B,KAGvE,OAAO2mC,MAanB,OAFAtB,EAAWp6C,QAAQ,EAEZo6C,EAxIoB,GCjJ3BwB,GAAsB,YACtBC,GAAa,UACbC,GAAc,WACdC,GAAW,QACXC,GAAe,mCACfC,GAAe,wCACfC,GAAgBD,GAAe,oBAC/BE,GAAiBF,GAAe,iBAChCG,GAA2B,gHAC3BC,GAA+B,iGAC/BC,GAAqC,2CAErCC,GAAa,EAEjB,SAASC,KACL,IAAIC,GAAU,UACd,OAAKA,IACD,QAAkBA,EAAQtU,WAC1B,QAAkBsU,EAAQtU,QAAQ,SAClC,QAAkBsU,EAAQV,KACnB,KAEJU,EAAQV,IAOnB,SAASW,GAAwBC,GAC7B,IAAIrtI,GAAS,EACb,IAAI,UAAkB,CAClB,IAAIsyF,EAAQ10F,eAAe,MAC3BoC,IAAU,QAAkBsyF,MACvB,QAAkBA,EAAMz0F,SACxB,QAAkBy0F,EAAMr1F,SACxB,QAAkBq1F,EAAM/zF,OAEjC,IAAIy9H,GAAQ,UAIZ,GAHIA,GAASA,EAAQ,IACjBh8H,GAAS,GAETA,EAEA,IACI,IAAIrC,EAAM,IAAIC,eACdD,EAAI6uI,IAAe,GAEnB,IAAIc,EAAU1vI,eAAe,MAAcC,KAC3CD,eAAe,MAAcC,KAAOyvI,EAExC,MAAOxtI,GAEHE,GAAS,EACTutI,GAAuBF,EAAqB,GAAoD,yEAA0E,CACtKvzD,WAAW,QAAQh6E,KAI/B,OAAOE,EAGX,SAASwtI,GAAiC7vI,GACtC,IAAIqC,EAAS,GACb,IACQrC,GAAOA,EAAI6uI,KAAgB7uI,EAAI6uI,IAAahH,MAC5CxlI,GAAU,UAAYrC,EAAI6uI,IAAahH,IAA6C,MAG5F,MAAO1lI,IAGP,OAAOE,EAGX,SAASutI,GAAuBF,EAAqB3+C,EAAOlnE,EAASg4C,EAAYovB,IAC7E,SAAey+C,EAAoBd,MAAe,EAAmC79C,EAAOlnE,EAASg4C,EAAYovB,GAGrH,SAAS6+C,GAAsBJ,EAAqB3+C,EAAOlnE,EAASg4C,EAAYovB,IAC5E,SAAey+C,EAAoBd,MAAe,EAAkC79C,EAAOlnE,EAASg4C,EAAYovB,GAGpH,SAAS8+C,GAAyBL,EAAqBM,EAAiBnmH,GAEpE,OAAO,SAAUgmE,GACb+/C,GAAuBF,EAAqBM,EAAiBnmH,EAAS,CAClEomH,uBAAwBJ,GAAiChgD,EAAKi4C,KAC9D3rD,WAAW,QAAQ0T,EAAKtjF,QAIpC,SAAS2jI,GAASnuI,EAAOmrC,GACrB,OAAInrC,GAASmrC,EACFnrC,EAAM4W,QAAQu0B,IAEjB,EAEZ,SAASgtE,GAAYi2B,EAAWzsG,EAAI68D,GAChC,IAAI6vC,EAAa,CACb1sG,GAAIA,EACJ+0C,GAAI8nB,GAGR,OADA4vC,EAAU1sI,KAAK2sI,GACR,CACHxO,OAAQ,YACJ,QAAWuO,GAAW,SAAUpoB,EAAa18B,GACzC,GAAI08B,EAAYrkF,KAAO0sG,EAAW1sG,GAE9B,OADAysG,EAAUliC,OAAO5iB,EAAK,IACd,OAM5B,SAASglD,GAA4B7lD,EAAM2lD,EAAW91G,EAASxQ,GAC3D,IAAIxnB,GAAS,EAWb,OAVA,QAAW8tI,GAAW,SAAU5vC,EAASlV,GACrC,KAC2C,IAAnCkV,EAAQ9nB,GAAGr6E,KAAK,KAAMi8B,KACtBh4B,GAAS,GAGjB,MAAOF,IACH,SAAeqoF,GAAQA,EAAK7qF,OAAQ,EAAmC,GAAyD,cAAgBkqB,EAAU,MAAQwhE,EAAM,cAAe,QAAiBlpF,GAAI,CAAEg6E,WAAW,QAAQh6E,KAAM,OAGxOE,EAEX,SAASiuI,GAA4B/I,EAAW/8C,EAAM4gD,EAAUprI,EAAKwO,EAAOwsH,GACxE,IAAI5hH,EACAm3H,EAAoBhJ,EAAU,IAClC,GAAIgJ,EAAoB,EAAG,CACvB,IAAIl2G,GAAWjhB,EAAK,GAChBA,EAAG,IAA6BoxE,EAChCpxE,EAAGpZ,IAAMA,EACToZ,EAAG5K,MAAQA,EACX4K,EAAG4hH,KAAOA,EACV5hH,EAAGqrF,QAAU2mC,EAAS,IACtBhyH,EAAGsrF,OAAS0mC,EAASvjC,IACrBzuF,EAAGysE,WAAaulD,EAAStjC,IACzB1uF,EAAG06F,QAAUs3B,EAASrD,KAAuC,GAC7D3uH,GACJi3H,GAA4B7lD,EAAM+8C,EAAWltG,EAAS,YACtD+wG,EAAS,IAAuC/wG,EAAQ2tG,IACxDoD,EAASvjC,IAAqCxtE,EAAQ4tG,IACtDmD,EAAStjC,IAA6CztE,EAAQytE,IAC9DsjC,EAASrD,IAAsC1tG,EAAQ0tG,KAG/D,IAAIyI,GAAY,eACLC,IAAqC,QAAW,CACvDD,GAAY,cACZA,GAAY,mBACZA,GAAY,cACZA,GAAY,sBAEZE,GAA4B,CAC5B,uHAEJ,SAAS,KACL,IAAIt3H,EACAqqC,GAAUrqC,EAAK,GACfA,EAAG0vH,IAA6D,IAChE1vH,EAAG8vH,KAA8D,EACjE9vH,EAAG+vH,KAA+D,EAClE/vH,EAAG4vH,SAAiFrlG,EACpFvqB,EAAGgqE,2BAA4B,EAC/BhqE,EAAGu3H,uBAAyB,EAC5Bv3H,EAAGyqE,iCAAmC4sD,GACtCr3H,EAAGsqE,8BAA2B//C,EAC9BvqB,EAAGiqE,sCAAmC1/C,EACtCvqB,EAAGmvH,SAAgC5kG,EACnCvqB,EAAGmqE,uBAAwB,EAC3BnqE,EAAGuvH,KAAqE,EACxEvvH,EAAG2vH,KAAuE,EAC1E3vH,EAAGwvH,KAAmE,EACtExvH,EAAGyvH,KAAgE,EACnEzvH,EAAGw3H,0BAA4B,EAC/Bx3H,EAAGmxH,IAA8D,GACjEnxH,EAAGy3H,cAAgB,CACf,gBACA,YACA,oBAEJz3H,EAAG6vH,SAAyDtlG,EAC5DvqB,EAAG03H,iBAAkB,EACrB13H,GACJ,OAAOqqC,EAEX,SAASstF,KACL,IAAIC,EAAc,KAIlB,OAHA,QAAcA,GAAa,SAAUjvI,GACjCivI,EAAYjvI,QAAS4hC,KAElBqtG,EAEX,IAAIC,GAA6B,SAAUnzI,GAEvC,SAASmzI,IACL,IAGIC,EACAC,EACAC,EACApO,EACAqO,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACA3tB,EACA4tB,EACAC,EACAC,EAzBAp0I,EAAQJ,EAAOM,KAAKX,OAASA,KAsyBjC,OAryBAS,EAAM28E,WAAao2D,EAAYp2D,WAC/B38E,EAAMkmH,SAAW,KAwBjB,OAAa6sB,EAAa/yI,GAAO,SAAUgzF,EAAOuzB,GAC9C,IAAI9I,EAAW8I,EAAM9I,SAuHrB,SAASX,IACL,IAAIl/D,GAAW,UACfo1F,GAAoB,EACpBC,GAAkB,EAClBC,EAAqBt1F,GAAYA,EAASxa,MAAQwa,EAASxa,KAAK4kD,MAChE88C,EAAUiO,EAAYsB,iBACtBlB,GAA+B,EAC/BC,GAA6B,EAC7BC,EAAqB,EACrBC,EAAW,KACXC,GAAqB,EACrBC,GAAoB,EACpBC,EAAc,KACdC,GAA0B,EAC1BC,EAAuB,EACvBC,GAAgC,EAChCC,EAAgB,GAChBC,GAAuB,EACvBC,GAAwB,EACxBC,EAA0C,KAC1CC,EAAqB,KACrB3tB,EAAgB,KAChB4tB,EAAuB,EACvBC,EAAuB,GACvBC,EAA0B,GAE9B,SAAS5tB,EAAkBjhE,GACvB,IAAIqtD,EAAM0E,GAA8B,KAAM/xD,EAAQytC,EAAM,KAE5D8xC,EAAU+N,KACV,IAAI1T,EAAgB,MACpB,QAAcA,GAAe,SAAUngD,EAAOn7E,GAC1CihI,EAAQ9lD,GAAS4zB,EAAIsD,UAAU68B,EAAYp2D,WAAYqC,EAAOn7E,MAElE,IAAI4uI,EAAyB3N,EAAQyF,IAUrC,GATA4I,EAA+BrO,EAAQ2F,IACvC2I,EAA6BtO,EAAQ4F,IACrCgJ,EAA0B5O,EAAQ6F,IAClCgJ,EAAuB7O,EAAQ8F,IAC/BgJ,EAAgC9O,EAAQ+F,IACxCmJ,EAA0C,GAAGjuI,OAAO++H,EAAQgG,KAAqF,IAAgC,IAA5BhG,EAAQ8N,gBAA4BJ,GAA4B,IACrNyB,EAAqBnP,EAAQiG,IAC7ByI,EAA+C,IAA3Bf,GAA6F,IAA3BA,EACtFc,EAAgD,IAA3Bd,GAAqG,IAA3BA,EAC3FiB,EAAyB,CACzB,IAAI5nC,EAAOvmD,EAAO+uF,oBAAsB,QAEpCb,EADA3nC,EAAK,IAAoC,EAC3B2kC,GAAsB3kC,EAAK36F,UAAU26F,EAAK,IAAoC,GAAK,IAGnF2kC,GAAsB3kC,EAAO,IAGnDgoC,IAAyBhP,EAAQkG,IACjC+I,IAA0BjP,EAAQmG,IAEtC,SAASsJ,IACL,IAAIC,EAAUxhD,EAAM,IAA8BwlB,UAAUlN,GACxDkpC,IACAlB,EAAWkB,EAAQtgC,OAAO21B,KAIlC,SAAS4K,EAAmBnyI,GACxB,IAAIoyI,GAAM,EASV,OARIpyI,GAAUwiI,EAAQ6N,iBAClB,QAAW7N,EAAQ6N,eAAe,SAAWx3H,GACzC,GAAIA,EAAI6sE,QAAoD1lF,EAAO0lF,MAE/D,OADA0sD,GAAM,GACE,KAIbA,EAGX,SAASC,IACL,IAAI34F,EAAQq1F,KACZ,GAAKr1F,EAAL,CAGA,IAAI44F,GAAS,UACTC,EAAa74F,EAAM84F,SAClBf,GAA0Bf,EAyDtB6B,GAOLp3B,EAASjC,GAAeo5B,EAAQhE,GAAU,CACtC5+C,GAAIs0B,EACJthD,IAAK,SAAUo1C,EAAa9pG,EAAOwsH,GAE/BiY,EAAmB,KAAMzkI,EAAOwsH,QAnExCrf,EAASjC,GAAeo5B,EAAQhE,GAAU,CACtC5+C,GAAIs0B,EAEJthD,IAAK,SAAUo1C,EAAa9pG,EAAOwsH,GAC/B,IAAIkY,EACJ,IAAKjB,GAAyBf,IACzB+B,EAAmB,KAAMzkI,EAAOwsH,MAE/B+X,IAAc5B,GAAkB,CAClC,IAAIrgC,EAAMwH,EAAYxH,MACtBoiC,EAAYC,EAAmB3kI,EAAOwsH,GACtC,IAAIoY,EAAUliD,EAAMg3C,IAAoEgL,EAAW1kI,EAAOwsH,GACtGoY,IAAYpY,GACZ1iB,EAAYlyF,IAAI,EAAGgtH,GAEvBtiC,EAAIjjG,KAAOqlI,IAGnBttB,IAAK,SAAUtN,EAAa9pG,GACxB,IAAKyjI,EAAuB,CACxB,IAAIoB,EAAc/6B,EAAYxH,MAAMjjG,KAChCwlI,IAEA/6B,EAAYe,KAAOf,EAAYe,KAAK92G,MAAK,SAAUvB,GAoB/C,OAnBAsyI,GAAoBh7B,GAAct3G,GAAY,IAAIooI,IAAmC56H,EAAOxN,EAAUqyI,GAAa,WAC/G,IAAIj6H,EACAm6H,GAAgBn6H,EAAK,CACjBpa,WAAYgC,EAASqoI,KAEzBjwH,EAAGkwH,IAAwC,KAC3ClwH,EAAGsxH,IAA0D8I,GAA4BxyI,GACzFoY,GACJ,GAAI04H,EAA+B,CAC/B,IAAI2B,EAAsB,GAC1BzyI,EAASX,QAAQE,SAAQ,SAAUwB,EAAO+O,GAClC6hI,EAAmB7hI,KACnB2iI,EAAoB3iI,GAAQ/O,MAGpCwxI,EAAajK,IAA2CmK,EAE5D,OAAOF,KAEJvyI,KACR,UAAS,SAAU8rG,GAElB,MADAwmC,GAAoBh7B,EAAa,EAAG9pG,EAAO,KAAM6kI,EAAa,KAAM,CAAEtvI,MAAO+oG,EAAOjjF,UAC9EijF,QAMtB4mC,MAAO3D,GAAyB7+C,EAAO,GAAoD,iCAAmC+9C,OAElIiC,GAAoB,GAiBpB6B,IAGAD,EAAOhE,IAAUkE,SAAWD,IAGpC,SAASY,EAAWvwH,EAAQ48E,EAAU3yE,GAClCsuF,EAASlC,GAAgBr2F,EAAQ48E,EAAU3yE,IAE/C,SAASumH,KACDnE,GAAwBv+C,IAAW8gD,GAAyBb,IAE5DwC,EAAW1zI,eAAgB,OAAQ,CAC/BiwF,GAAIs0B,EACJthD,IAAK,SAAU2sB,EAAMtwF,EAAQH,EAAK++H,GAC9B,IAAK6T,EAAsB,CACvB,IAAIhyI,EAAM6vF,EAAKi4C,IACXsD,EAAWprI,EAAI6uI,KACdoE,EAAmBjzI,EAAKZ,IAAQy0I,EAAwB7zI,GAAK,KACzDorI,GAAaA,EAAS0C,mBAAmBvE,KAE1CuK,EAAa9zI,EAAKT,EAAQH,EAAK++H,GAGnC4V,EAA4B/zI,MAIxC0zI,MAAO3D,GAAyB7+C,EAAO,GAAoD69C,GAAe,QAAUE,MAGxH0E,EAAW1zI,eAAgB,OAAQ,CAC/BiwF,GAAIs0B,EACJthD,IAAK,SAAU2sB,EAAMikB,GACjB,IAAKk+B,EAAsB,CACvB,IAAIhyI,EAAM6vF,EAAKi4C,IACXsD,EAAWprI,EAAI6uI,IACfgF,EAAwB7zI,KAASorI,EAAS0C,mBAAmBtE,MAC7DwK,EAAc,MAAO5I,GACrBA,EAAS3B,KAAwD,UACjEv4C,EAAMg3C,IAAoEkD,OAAUznG,OAAWA,EAAW3jC,GAC1GorI,EAAS0C,mBAAmBtE,KAAyC,KAIjFkK,MAAO3D,GAAyB7+C,EAAO,GAAoD69C,GAAeE,MAG9G0E,EAAW1zI,eAAgB,QAAS,CAChCiwF,GAAIs0B,EACJthD,IAAK,SAAU2sB,GACX,IAAKmiD,EAAsB,CACvB,IAAIhyI,EAAM6vF,EAAKi4C,IACXsD,EAAWprI,EAAI6uI,IACfgF,EAAwB7zI,KAASorI,EAAS0C,mBAAmBpE,MAC7D0B,EAASqC,QAAU,EACnBrC,EAAS0C,mBAAmBpE,KAA2C,KAInFgK,MAAO3D,GAAyB7+C,EAAO,GAAqD69C,GAAe,SAAWE,MAG1H0E,EAAW1zI,eAAgB,mBAAoB,CAC3CiwF,GAAIs0B,EACJthD,IAAK,SAAU2sB,EAAMrvF,EAAQuB,GACzB,IAAKiwI,GAAwBX,EAA8B,CACvD,IAAIrxI,EAAM6vF,EAAKi4C,IACX+L,EAAwB7zI,IAAQ2yI,EAAmBnyI,KACnDR,EAAI6uI,IAAavG,IAAmD9nI,GAAUuB,KAI1F2xI,MAAO3D,GAAyB7+C,EAAO,GAAgE69C,GAAe,oBAAsBE,MAEhJkC,GAAkB,GAG1B,SAAS8B,EAAmBjzI,EAAKJ,EAASo7H,GACtC,IAAIiZ,GAAa,EACbC,KAAY,QAASt0I,GAAuCA,GAA3BA,GAAW,IAAIR,KAAO,KAAiB,IAAI8mF,MAYhF,IAVA,QAAWgsD,GAAyC,SAAUn4H,GAC1D,IAAIo6H,EAAWp6H,GACX,QAASA,KACTo6H,EAAW,IAAIn6H,OAAOD,IAErBk6H,IACDA,EAAaE,EAASpnI,KAAKmnI,OAI/BD,EACA,OAAOA,EAEX,IAAI5oD,EAAM6kD,GAASgE,EAAQ,KACvBE,EAAOlE,GAASgE,EAAQ,KAkC5B,QAjCa,IAAT7oD,IAAyB,IAAV+oD,GAAeA,EAAO/oD,KACrCA,EAAM+oD,IAEG,IAAT/oD,IAEA6oD,EAASA,EAAO7kI,UAAU,EAAGg8E,KAG5B,QAAkBrrF,IAIb,QAAkBJ,KAExBq0I,EAAiC,kBAAZr0I,IAAyD,IAAlCA,EAAQ,SAC/Co7H,IAAsC,IAA/BA,EAAK,OALjBiZ,GAA2C,IAA9Bj0I,EAAI,QAAmE,IAAjCk0I,EAAO,OAQzDD,GAAcC,IAAU,QAAsCA,KAC/DD,GAAa,GAEbA,EAEKlC,EAAcmC,KACfnC,EAAcmC,GAAU,GAKxBnC,EAAcmC,KACdD,GAAa,GAGdA,EAKX,SAASJ,EAAwB7zI,EAAKq0I,GAClC,IAAIC,GAAiB,EACjB72F,EAAc0zF,EAKlB,OAJK,QAAkBnxI,KACnBs0I,GAA+C,IAA9BD,KAAuC,QAAkBr0I,EAAI6uI,MAG3EpxF,GAEA62F,EAEX,SAASnuB,IACL,IAAIC,EAAsB,KAQ1B,OAPIl1B,EAAM,KAAiCA,EAAM,IAA8Bm1B,cAC3ED,EAAsBl1B,EAAM,IAA8Bm1B,aAAY,KAGrED,GAAuBorB,GAAYA,EAAStsD,iBAC7CkhC,GAAsB,QAAuCorB,EAAStsD,iBAEnEkhC,EAEX,SAAS0tB,EAAa9zI,EAAKT,EAAQH,EAAK++H,GACpC,IAAI/kH,EACAgtG,EAAsBD,IACtB5gC,EAAW6gC,GAAuBA,EAAoBujB,QAAkD,WACxG4K,GAAS,WAAgB91D,OAAO,EAAG,IACnC2sD,EAAW,IAAI+B,GAAW5nD,EAASgvD,EAAQrjD,EAAM09C,MAAqC,QAArBx1H,EAAK83E,EAAM1G,YAAyB,IAAPpxE,OAAgB,EAASA,EAAGitG,eAC9H+kB,EAAStjC,IAA6Cse,GAAuBA,EAAoBwjB,MACjGwB,EAAS1jD,IAAoCnoF,EAC7C6rI,EAASvD,IAA6CzoI,EACtDgsI,EAAS0C,mBAAmBvE,KAAyC,EACrE6B,EAAS9C,IAAqD,GAC9D8C,EAASjN,MAAQA,EACjBiN,EAASvB,IAAwDyH,EACjEtxI,EAAI6uI,IAAezD,EAEvB,SAAS2I,EAA4B/zI,GACjCA,EAAI6uI,IAAaf,mBAAmBhE,KAAiE,SAAQ9pI,EAAK,oBAAoB,WAClI,IAAIoZ,EACJ,IACQpZ,GAA0B,IAAnBA,EAAIi+H,YAAoB4V,EAAwB7zI,IACvDw0I,EAAgBx0I,GAGxB,MAAOmC,GACH,IAAIsyI,GAAgB,QAAQtyI,GAEvBsyI,IAA0G,IAAzFvE,GAASuE,EAAcvuD,MAAiD,aAC1F0pD,GAAuB1+C,EAAO,GAAmD69C,GAAe,oCAAsCE,IAAgB71H,EAAK,GACvJA,EAAGqxH,IAAiEoF,GAAiC7vI,GACrGoZ,EAAG+iE,UAAYs4D,EACfr7H,OAGborG,GAEP,SAASoT,EAAiB53H,GACtB,IACI,IAAIS,EAAeT,EAAIS,aACvB,GAAqB,KAAjBA,GAAwC,SAAjBA,EAEvB,OAAOT,EAAI+pI,IAGnB,MAAO5nI,IAGP,OAAO,KAEX,SAASqyI,EAAgBx0I,GACrB,IAAIorI,EAAWprI,EAAI6uI,IAGnB,SAAS6F,EAAgBvyI,EAAGwyI,GACxB,IAAIC,EAAaD,GAAe,GAChCC,EAAW,0BAA4B/E,GAAiC7vI,GACpEmC,IACAyyI,EAAW,cAAe,QAAQzyI,IAEtC2tI,GAAsB5+C,EAAO,GAAmDm+C,GAAqC,YAAcH,GAAgB0F,GARvJxJ,EAASpB,KAAkE,UAC3EoB,EAAShC,IAAoCppI,EAAIopI,IASjDyL,EAAuB,iBAAkBzJ,GAAU,WAC/C,IACI,IAAIC,EAAaD,EAASnB,IAAuD,OAAQoH,GAA8B,WACnH,IAAIj4H,EACAm6H,GAAgBn6H,EAAK,CACjBpa,WAAYgB,EAAIqpI,KAEpBjwH,EAAGkwH,IAAwC,KAC3ClwH,EAAGsxH,IAA0DoK,EAA2B90I,GACxFoZ,EAAGuR,KAAO3qB,EAAIS,aACd2Y,EAAG2wH,IAA8CnS,EAAiB53H,GAClEoZ,EAAGpY,SAAWhB,EAAIkqI,IAClB9wH,GACJ,GAAI04H,EAA+B,CAC/B,IAAIzxI,EAAUL,EAAImqI,MAClB,GAAI9pI,EAAS,CAGT,IAAIkZ,GAAM,QAAQlZ,GAASwU,MAAM,WAC7BkgI,EAAsB,IAC1B,QAAWx7H,GAAK,SAAU81F,GACtB,IAAI9zD,EAAQ8zD,EAAKx6F,MAAM,MACnBrU,EAAS+6C,EAAME,QACf15C,EAAQw5C,EAAM93B,KAAK,MACnBkvH,EAAmBnyI,KACnBu0I,EAAoBv0I,GAAUuB,MAGtCwxI,EAAajK,IAA2CyL,GAGhE,OAAOxB,KAEP1xE,OAAa,EACjB,IACUswE,IACFtwE,EAAaswE,EAAmB,CAAEpxI,OAAQf,EAAIopI,IAAmCppI,IAAKA,KAG9F,MAAOmC,GACH2tI,GAAsB5+C,EAAO,IAAuEk+C,IAExG,GAAI/D,EAAY,MACO1nG,IAAfk+B,IACAwpE,EAAWzD,IAA2C,EAAS,EAAS,GAAIyD,EAAWxpE,YAAaA,IAExG,IAAImzE,EAAgB5J,EAAShB,MAC7B6K,GAA0B3C,EAAyBphD,EAAM,IAA+Bk6C,EAAUC,EAAY,KAAM2J,QAGpHN,EAAgB,KAAM,CAClBtG,gBAAiBhD,EAAS3B,IAC1B4E,qBAAsBjD,EAASpB,MAI3C,QAEI,IACIhqI,EAAI6uI,IAAe,KAEvB,MAAO1sI,SAIZ,SAAUA,GACTuyI,EAAgBvyI,EAAG,SAG3B,SAAS2yI,EAA2B90I,GAChC,IAAIoZ,EACJ,IACI,IAAI87H,EAAwBl1I,EAAImqI,MAChC,GAA8B,OAA1B+K,EAAgC,CAChC,IAAInlG,EAAQmgG,GAASgF,EAAsBhvD,MAAiD,SAC5F,IAAe,IAAXn2C,EAAc,CACd,IAAIg0C,EAAiB/jF,EAAIm1I,kBAAkB,SAC3C,OAAO,KAAoB9K,IAAiEtmD,KAIxG,MAAO5hF,GACH2tI,GAAsB5+C,EAAO,GAAoEi+C,IAA2B/1H,EAAK,GAC7HA,EAAGqxH,IAAiEoF,GAAiC7vI,GACrGoZ,EAAG+iE,WAAY,QAAQh6E,GACvBiX,KAGZ,SAAS46H,EAAcrpH,EAAMygH,GACzB,GAAIA,EAASvD,KAA8C8J,GAAeC,EAAyB,CAC/F,IAAIwD,GAAgB,SACpB,GAAIA,IAAiB,QAAWA,EAAc3pE,MAAO,CACjD6jE,KACA,IAAI+F,EAAS1D,EAAchnH,EAAO,IAAM2kH,GACxC8F,EAAc3pE,KAAK4pE,GACnB,IAAIx+D,EAAUu+D,EAAcvpE,iBAAiBwpE,GACzCx+D,GAAyD,IAA9CA,EAAQ,MACnBu0D,EAASd,IAAyCzzD,EAAQ,MAK1E,SAASg+D,EAAuBS,EAAelK,EAAUmK,EAAeC,GACpE,IAAIC,EAAWrK,EAASd,IACpB7iE,GAAc,SACdiuE,EAAc1S,EAAQ4N,0BACtB+E,EAAa3S,EAAQuH,IACrBhrE,EAAa6rE,EAASvD,IACtB+N,EAAU,GACd,SAAUC,IACN,IACI,GAAIpuE,GAAeguE,EAAU,CACzBG,IAGA,IAFA,IAAIE,EAAa,KACbj/D,EAAUpP,EAAYsuE,aACjB1lD,EAAKxZ,EAAQ,IAAoC,EAAGwZ,GAAM,EAAGA,IAAM,CACxE,IAAI52E,EAAQo9D,EAAQwZ,GACpB,GAAI52E,EAAO,CACP,GAAwB,aAApBA,EAAMu8H,UACFv8H,EAAM67H,gBAAkBA,IACwC,IAA/DpF,GAASz2H,EAAM,IAA+B8lD,KAAqF,IAA/D2wE,GAAS3wE,EAAY9lD,EAAM,OAChGq8H,EAAar8H,QAGhB,GAAwB,SAApBA,EAAMu8H,WAAwBv8H,EAAM,MAAkCg8H,EAAS,IAA+B,CAEnHrK,EAASZ,IAA6CsL,EACtD,MAEJ,GAAIr8H,EAAMivH,IAA2C+M,EAAS/M,IAA2C,IAErG,SAKX+M,GACDrK,EAASZ,KACToL,GAAWF,IACQ,IAAnBtK,EAASjN,OACLsX,IAAY,QAAWhuE,EAAYkE,aAEnClE,EAAYkE,WAAW8pE,EAAS,KAEpCrK,EAAS4B,aAAe4I,EAExBL,KAMApvG,WAAW0vG,EAAsBF,GAGzC,MAAOxzI,GACHqzI,EAAYrzI,KA/CpB,GAmDJ,SAASgxI,EAAmB3kI,EAAOwsH,GAC/B,IAAI5hH,EACAgtG,EAAsBD,IACtB5gC,EAAW6gC,GAAuBA,EAAoBujB,QAAkD,WACxG4K,GAAS,WAAgB91D,OAAO,EAAG,IACnC2sD,EAAW,IAAI+B,GAAW5nD,EAASgvD,EAAQrjD,EAAM09C,MAAqC,QAArBx1H,EAAK83E,EAAM1G,YAAyB,IAAPpxE,OAAgB,EAASA,EAAGitG,eAC9H+kB,EAAStjC,IAA6Cse,GAAuBA,EAAoBwjB,MACjGwB,EAAS3B,KAAwD,UACjE2B,EAASvB,IAAwDyH,EAC7D9iI,aAAiB0sH,QACjBkQ,EAASvD,IAA6Cr5H,EAAQA,EAAMpP,IAAM,GAG1EgsI,EAASvD,IAA6Cr5H,EAE1D,IAAIjP,EAAS,MACTy7H,GAAQA,EAAKtzC,IACbnoF,EAASy7H,EAAKtzC,IAETl5E,GAASA,aAAiB0sH,UAC/B37H,EAASiP,EAAMk5E,KAEnB0jD,EAAS1jD,IAAoCnoF,EAC7C,IAAIq7H,EAAiB,GACrB,GAAIyW,EAA8B,CAC9B,IAAIhxI,EAAU,IAAIq6C,SAASsgF,EAAOA,EAAKqN,IAAsC,IAAO75H,aAAiB0sH,SAAW1sH,EAAM65H,KAA6C,IACnKhoI,EAAQE,SAAQ,SAAUwB,EAAOsX,GACzBs5H,EAAmBt5H,KACnBuhH,EAAevhH,GAAOtX,MAMlC,OAFAqpI,EAAS9C,IAAqD1N,EAC9DoZ,EAAc,QAAS5I,GAChBA,EAEX,SAAS6K,GAAkCznI,GACvC,IAAInM,EAAS,GACb,KACS,QAAkBmM,KAEfnM,GAAU,UAAU4B,OADD,kBAAZ,EACoBuK,EAGAA,EAAMpP,IAHC,OAO9C,MAAO+C,GACHytI,GAAuB1+C,EAAO,GAAoD,kDAAmD,CAAE/U,WAAW,QAAQh6E,KAE9J,OAAOE,EAEX,SAASixI,GAAoBh7B,EAAav3G,EAAQyN,EAAOxN,EAAUoqI,EAAU8C,EAAarsE,GAItF,SAASq0E,EAAkBnlD,EAAO5uF,EAAGwyI,GACjC,IAAIC,EAAaD,GAAe,GAChCC,EAAW,2BAA6BqB,GAAkCznI,GACtErM,IACAyyI,EAAW,cAAe,QAAQzyI,IAEtC2tI,GAAsB5+C,EAAOH,EAAOs+C,GAAqC,aAAeH,GAAgB0F,GATvGxJ,IAWLA,EAASpB,KAAkE,UAC3EoB,EAAShC,IAAoCroI,EAC7C8zI,EAAuB,QAASzJ,GAAU,WACtC,IACIvpE,EADAwpE,EAAaD,EAASnB,IAAuD,QAASoH,EAA8BnD,GAExH,IACUiE,IACFtwE,EAAaswE,EAAmB,CAAEpxI,OAAQA,EAAQnB,QAAS4O,EAAOxN,SAAUA,KAGpF,MAAOmB,GACH2tI,GAAsB5+C,EAAO,IAAuEk+C,IAExG,GAAI/D,EAAY,MACO1nG,IAAfk+B,IACAwpE,EAAWzD,IAA2C,EAAS,EAAS,GAAIyD,EAAWxpE,YAAaA,IAExG,IAAImzE,EAAgB5J,EAAShB,MAC7B6K,GAA0B3C,EAAyBphD,EAAM,IAA+Bk6C,EAAUC,EAAY,KAAM2J,QAGpHkB,EAAkB,GAAmD,KAAM,CACvE9H,gBAAiBhD,EAAS3B,IAC1B4E,qBAAsBjD,EAASpB,SAGxC,SAAU7nI,GACT+zI,EAAkB,GAAoE/zI,EAAG,UAGjG,SAASqxI,GAA4BxyI,GACjC,GAAIA,GAAYA,EAASqnI,IACrB,IACI,IAAItkD,EAAiB/iF,EAASqnI,IAAoClpI,IAAI,SACtE,OAAO,KAAoBkrI,IAAiEtmD,GAEhG,MAAO5hF,GACH2tI,GAAsB5+C,EAAO,GAAoEi+C,GAA0B,CACvHgH,wBAAyBF,GAAkCj1I,GAC3Dm7E,WAAW,QAAQh6E,MAKnC,SAAS8yI,GAA0BmB,EAAc5rD,EAAM4gD,EAAUC,EAAYxpE,EAAYkoC,GACrF,IAAI3wF,EACA/W,GAAS,EACTkuI,EAAoB6F,EAAa,IACrC,GAAI7F,EAAoB,EAAG,CACvB,IAAIl2G,GAAWjhB,EAAK,CACZyN,KAAMwkH,GAEVjyH,EAAGwuH,IAAwC/lE,EAC3CzoD,EAAG47H,cAAgBjrC,EACnB3wF,EAAG06F,QAAUs3B,EAAWA,EAASrD,IAAsC,KACvE3uH,GACJ/W,EAASguI,GAA4B7lD,EAAM4rD,EAAc/7G,EAAS,eAElEh4B,GACA6uF,EAAMs3C,IAAsE6C,EAAYxpE,EAAYkoC,GAtwB5GiR,IACA9pB,EAAM1kB,WAAa,SAAU/oB,EAAQ+mC,EAAM5P,EAAYo9B,GAC9C9mB,EAAMyhB,kBACP8R,EAAMj4C,WAAW/oB,EAAQ+mC,EAAM5P,EAAYo9B,GAC3CwM,GAAgB,UAAkB,QAAsB,QAASh6B,GAAQA,EAAK6N,cAAgB7N,EAAK6N,gBACnGqsB,EAAkBjhE,GAClBmwF,IACAf,IACAJ,MAGRvhD,EAAM+2B,YAAc,WAChBjN,KAEJ9pB,EAAMmlD,oBAAsB,SAAUhL,EAAYxpE,GAC9CozE,GAA0B3C,EAAyBphD,EAAM,IAA+B,KAAMm6C,EAAYxpE,IAE9GqvB,EAAMg3C,IAAsE,SAAUkD,EAAU58H,EAAOwsH,EAAMh7H,GAEzG,IAAIs2I,EAAoBplD,EAAM,uBAAyBkgD,EAEvD,GADAd,GAA4B+B,EAAsBnhD,EAAM,IAA+Bk6C,EAAUprI,EAAKwO,EAAOwsH,GACzGxsH,EAAO,CACP,GAAI,KAAoB25H,IAAsEnF,EAASoI,EAAShD,MAAuDkO,GAAoB,CAClLtb,IACDA,EAAO,IAKX,IAAI36H,EAAU,IAAIq6C,QAAQsgF,EAAKqN,KAAwC75H,aAAiB0sH,SAAW1sH,EAAM65H,KAA6C,IACtJ,GAAIqJ,EAAmB,CACnB,IAAIhuG,EAAK,IAAM0nG,EAAS,IAAuC,IAAMA,EAASvjC,IAC9ExnG,EAAQ+lB,IAAI,QAAyDsd,GACjE2tG,IACAjG,EAAS9C,IAAmD,SAA2D5kG,GAG/H,IAAI21F,EAAQ2J,EAAQuF,KAAqCiJ,GAAYA,EAASjJ,MAO9E,GANIlP,IACAh5H,EAAQ+lB,IAAI,QAA8D,QAAoEizG,GAC1IgY,IACAjG,EAAS9C,IAAmD,SAAgE,QAAoEjP,IAGpMoY,EAAoB,CACpB,IAAI5rD,EAAaulD,EAAStjC,KACtB,QAAkBjiB,KAClBA,EAAa,GAEjB,IAAI0wD,GAAc,UAAkB,SAAkBnL,EAAS,IAAsCA,EAASvjC,IAAoChiB,IAClJxlF,EAAQ+lB,IAAI,QAA2DmwH,GACnElF,IACAjG,EAAS9C,IAAmD,SAA6DiO,GAGjIvb,EAAKqN,IAAsChoI,EAE/C,OAAO26H,EAEN,GAAIh7H,EAAK,CACV,GAAI,KAAoBmoI,IAAsEnF,EAASoI,EAAShD,MAAuDkO,GAAoB,CACvL,GAAI5E,EAAmB,CACfhuG,EAAK,IAAM0nG,EAAS,IAAuC,IAAMA,EAASvjC,IAC9E7nG,EAAI,IAAwD,QAAyD0jC,GACjH2tG,IACAjG,EAAS9C,IAAmD,SAA2D5kG,GAG3H21F,EAAQ2J,EAAQuF,KAAqCiJ,GAAYA,EAASjJ,MAO9E,GANIlP,IACAr5H,EAAI,IAAwD,QAA8D,QAAoEq5H,GAC1LgY,IACAjG,EAAS9C,IAAmD,SAAgE,QAAoEjP,IAGpMoY,EAAoB,CAChB5rD,EAAaulD,EAAStjC,KACtB,QAAkBjiB,KAClBA,EAAa,GAEb0wD,GAAc,UAAkB,SAAkBnL,EAAS,IAAsCA,EAASvjC,IAAoChiB,IAClJ7lF,EAAI,IAAwD,QAA2Du2I,GACnHlF,IACAjG,EAAS9C,IAAmD,SAA6DiO,IAIrI,OAAOv2I,IAIfkxF,EAAMs3C,IAAwE,SAAU6C,EAAYxpE,EAAYkoC,GAC5G,IAA8B,IAA1B8nC,GAA+BN,EAAqBM,EAAsB,CAIQ,IAA7E7O,EAAQyF,KACuE,IAA7EzF,EAAQyF,KACiB,kBAAlB4C,EAAW3nG,IAA0F,MAAvE2nG,EAAW3nG,GAAG2nG,EAAW3nG,GAAG,IAAoC,KACxG2nG,EAAW3nG,IAAM,MAEjB,QAAkB2nG,EAAW3C,OAC7B2C,EAAW3C,IAA2C,IAAIz8G,MAE9D,IAAIpF,EAAO8iF,EAAoB0hC,EAAYx7B,EAAqBxe,SAAUwe,EAAqBtF,aAAcrZ,EAAM09C,MAAe/sE,EAAYkoC,GAC9I7Y,EAAM,IAA8Bk0C,MAAMv+G,QAErC0qH,IAAuBM,GAC5BjC,GAAuB1+C,EAAO,GAAmD,2LAA2L,KAE9QqgD,GAENrgD,EAAMslD,sBAAwB,SAAUC,GACpC,OAAOv8B,GAAYm4B,EAAsBD,IAAwBqE,IAErEvlD,EAAMwlD,yBAA2B,SAAUC,GACvC,OAAOz8B,GAAYo4B,EAAyBF,IAAwBuE,OAspBrEz4I,EAwBX,OAh0BA,EAAU+yI,EAAanzI,GA2yBvBmzI,EAAYtzI,UAAUg5G,iBAAmB,SAAU9vF,EAAMqwF,GACrDz5G,KAAKopH,YAAYhgG,EAAMqwF,IAa3B+5B,EAAYtzI,UAAU+4I,yBAA2B,SAAUC,GACvD,OAAO,MAGX1F,EAAYp2D,WAAa,uBACzBo2D,EAAY9oB,iBAAmB,GAC/B8oB,EAAYsB,eAAiBxB,GACtBE,EAj0BqB,CAk0B9B12B,IC9gCEq8B,GAA6B,WAC7B,SAASA,KAET,OAAOA,EAHqB,GCA5BC,GAAwB,WAIxB,SAASA,IAELp5I,KAAKimC,GAAK,UAGVjmC,KAAKwzH,YAAc,UAEvB,OAAO4lB,EAXgB,GCOhBC,GAAuB,iBACvBxwC,GAAc,SACdywC,GAA0B,kBAC1BC,GAAmB,YACnBC,GAAqB,cACrBC,GAAuB,iBACvBC,GAA6B,sBAC7BC,GAA6B,0BAC7BC,GAA4B,qBAC5BC,GAA6B,wBAC7BC,GAA0B,mBAC1BC,GAA6B,6BAC7BC,GAA6B,uBAC7BC,GAA6B,uBAC7BC,GAAkB,YAClBC,GAAqB,eACrBC,GAAsB,eACtB,GAAmB,aACnBC,GAA6B,uBAC7BC,GAA2B,oBAC3BC,GAAiB,WACjBC,GAAkB,WAClB,GAAc,SACdC,GAAyB,mBACzBC,GAAwB,kBACxBC,GAA6B,sBAC7BC,GAA0B,mBAC1BjzC,GAAc,SACdkzC,GAAwB,kBACxBC,GAAoB,cACpBC,GAAqB,eACrBC,GAAY,OACZC,GAAwB,kBACxBC,GAA6B,qBCvCpCzwB,GAAU,QACV0wB,GAA0B,WAI1B,SAASA,EAASn1F,GACdhmD,KAAKo7I,YAAcp1F,EAAOm0F,KAAkDn0F,EAAOm0F,MAAmDn0F,EAAOm0F,MAAmD,IAAM,IAAM,cAAgB1vB,GAEhO,OAAO0wB,EAPkB,GCFzBE,GAA0B,WAC1B,SAASA,KAET,OAAOA,EAHkB,G,YCIzBC,GAAkB,aAClBC,GAAyB,WACzB,SAASA,KAET,OAAOA,EAHiB,GAMxBC,GAAiC,WACjC,SAASA,EAAgBx1F,EAAQ+mC,GAC7B,IACI0uD,EACAC,EAFAhkE,EAAO13E,KAGPihH,GAAU,SAAcl0B,GACxB84C,GAAiB,SAAiB94C,IACtC,OAAayuD,EAAiB9jE,GAAM,SAAU+b,GACrCztC,IACDA,EAAS,KAER,QAAWA,EAAO20F,OACnB30F,EAAO20F,IAAgE,WAAc,OAAOa,EAAgBG,mBAE3G,QAAW31F,EAAO40F,OACnB50F,EAAO40F,IAA0D,WAAc,OAAOY,EAAgBI,cAE1GnoD,EAAMkU,IAAoC3hD,EAE1C,IAAI61F,EAAwBpoD,EAAMztC,OAAOq0F,KAAkE5mD,EAAMkU,IAAkC0yC,MAC/I5mD,EAAMztC,OAAOq0F,MACX5mD,EAAMztC,OAAO,KAA8CytC,EAAMkU,IAAkC,MAAgDlU,EAAMkU,IAAkC,MAA+C,GA+ChP,SAASm0C,EAA4BC,EAASrrH,GAC1C,IAAIuxF,GAAU,EACV5sE,EAAcwwF,EAAenkI,IAAI+5I,KACrC,GAAIpmG,IAAe,QAAWA,EAAYj+B,OACtC6qG,EAAU+5B,EAAoCD,EAAS1mG,OAEtD,CAKD,IAAI4mG,GAAe,QAAmBh7B,EAASw6B,KAC3CQ,IACAh6B,EAAU+5B,EAAoCD,EAASE,IAG/D,OAAOh6B,KAAa85B,EAAQ91G,GAShC,SAAS+1G,EAAoCD,EAASG,GAClD,IAAIj6B,GAAU,EACVk6B,EAAe,0BACf5iE,EAAS2iE,EAAY9kI,MAAM,KAC/B,GAAImiE,EAAO,KAAqC,EAC5C,IACI,IAAI6iE,GAAS7iE,EAAO,IAAM,EACtB8iE,GAAa9iE,EAAO,IAAM,EAC1BsD,MAAMu/D,IAAUA,GAAS,GACzB,SAAen7B,EAAS,EAAkC,GAAuD,mCAAqCk7B,GAEjJt/D,MAAMw/D,IAAcA,GAAa,GACtC,SAAep7B,EAAS,EAAkC,GAAuD,+BAAiCk7B,GAE7I5iE,EAAO,KAEZwiE,EAAQ91G,GAAKszC,EAAO,GACpBwiE,EAAQlB,IAAuDuB,EAC/DL,EAAQjB,IAA+CuB,EACvDp6B,GAAU,GAGlB,MAAOv9G,IACH,SAAeu8G,EAAS,EAAmC,EAAyD,oCAAsCi7B,GAAe,IAAM,IAAMC,EAAe,OAAQ,QAAiBz3I,GAAI,CAAEg6E,WAAW,QAAQh6E,KAG9P,OAAOu9G,EAEX,SAASq6B,EAAOvuD,GACZ,IAAI2pB,EAAajkB,EAAMkU,KAAqC,GACxD40C,GAAY7kC,EAAU8iC,IAA0C9iC,EAAU8iC,MAA4C,OAAS,MACnI/mD,EAAM+oD,iBAAiBv2G,GAAKs2G,EAAS7kC,EAAU6iC,IAAyC7iC,EAAU6iC,MAA2C,IAC7I9mD,EAAMgnD,IAAuDI,IAAuD9sD,EACpH0uD,EAAWhpD,EAAMgnD,IAAwD1sD,IAEpE,YACD,SAAekzB,EAAS,EAAkC,EAA+D,iFAGjI,SAASw7B,EAAWV,EAAShuD,GACzB,IAAI2uD,EAAMX,EAAQlB,IAClBkB,EAAQjB,IAA+C/sD,EACvD,IAAI/nC,EAASytC,EAAMkU,IACfg1C,EAAkB32F,EAAO40F,MAGzBgC,EAAiBF,EAAM12F,EAAO20F,MAAmE5sD,EACjGn4C,EAAS,CAACmmG,EAAQ91G,GAAIy2G,EAAK3uD,GAC3BL,EAAY,EAEZA,EADAkvD,EAAgBD,EACJC,EAAgB,IAGhBD,EAAkB,IAElC,IAAIpwD,EAAevmC,EAAO+0F,IAAiD/0F,EAAO+0F,MAAmD,KAIrIlV,EAAel9G,IAAI8yH,IAAsB7lG,EAAO5vB,KAAK,KAAMggC,EAAO20F,MAAkE,EAAIjtD,EAAY,KAAMnB,GAC1JmvD,EAA0B3tD,EAE9B,SAAS8uD,EAAYztI,EAAMstI,EAAKI,IAI5B,QAAmB77B,EAASw6B,IAAsB,CAACrsI,EAAMstI,EAAKI,GAAS9B,IAA8B,MAzIzGS,EAAqB,WAAc,OAAOH,GAAkBO,GAC5DpoD,EAAMgnD,IAAyD,IAAIc,GACnE9nD,EAAMoV,IAAoC,WAGtC,IAAI9a,GAAQ,UACRviD,GAAY,EACZuwG,EAAUtoD,EAAMgnD,IACfsB,EAAQ91G,KACTuF,GAAaswG,EAA4BC,EAAShuD,IAEtD,IAAIy3B,EAAsB/xB,EAAMztC,OAAO20F,MACvC,IAAKnvG,GAAag6E,EAAsB,EAAG,CACvC,IAAID,EAAmB9xB,EAAMztC,OAAO40F,MAChCmC,EAAiBhvD,EAAQguD,EAAQlB,IACjCmC,EAAqBjvD,EAAQguD,EAAQjB,IACzCtvG,EAAYuxG,EAAiB,GAAKC,EAAqB,EACvDxxG,EAAYA,GAAauxG,EAAiBv3B,EAC1Ch6E,EAAYA,GAAawxG,EAAqBz3B,EAG9C/5E,EAEA8wG,EAAOvuD,KAIF2tD,GAA2B3tD,EAAQ2tD,EAA0BF,EAAgByB,uBAC9ER,EAAWV,EAAShuD,IAShC0F,EAAMypD,OAAS,WACX,IAAInB,EAAUtoD,EAAMgnD,IACpBoC,EAAYd,EAAQ91G,GAAI81G,EAAQlB,IAAsDkB,EAAQjB,SA2G1G,OAHAU,EAAgBG,gBAAkB,MAClCH,EAAgBI,YAAc,KAC9BJ,EAAgByB,qBAAuB,IAChCzB,EAxKyB,GCThC2B,GAAgC,WAChC,SAASA,EAAel3G,EAAIm3G,EAAU/pI,EAAMnR,GACxC,IAAIuxF,EAAQzzF,KACZyzF,EAAM3L,QAAU7hD,IAAM,WACtBwtD,EAAMxL,SAAWm1D,EACjB,IAAI/+F,GAAW,WACVhrC,GAAQgrC,GAAYA,EAASI,WAC9BprC,EAAOgrC,EAASI,UAEpBg1C,EAAMpgF,MAAO,QAAmBnR,EAAQmR,GAE5C,OAAO8pI,EAXwB,GCEnC,SAASE,GAAmBp3G,GAIxB,QAAkB,kBAAPA,IACNA,GACDA,EAAGwJ,MAAM,eAKjB,IAAI6tG,GAAsB,WACtB,SAASA,EAAKt3F,EAAQ+mC,GAIlB/sF,KAAKu9I,WAAY,EAIjBv9I,KAAKw9I,iBAAkB,EACvB,IAEI/B,EAFAx6B,GAAU,SAAcl0B,GACxB84C,GAAiB,SAAiB94C,IAEtC,OAAauwD,EAAMt9I,MAAM,SAAUyzF,GAC/BA,EAAMkU,IAAoC3hD,EAC1C,IAAIy3F,EAAqBhqD,EAAMztC,OAAOs0F,KAA6D7mD,EAAMkU,IAAkC2yC,MAA+D7mD,EAAMkU,IAAkC2yC,MAA8D,GAChTmB,EAAqB,WAAc,OAAO6B,EAAKI,eAAiBD,GAEhE,IAAI7nG,EAASiwF,EAAenkI,IAAI+5I,KAChC,GAAI7lG,EAAQ,CACR69C,EAAM8lD,KAA4C,EAClD,IAAIh+H,EAASq6B,EAAOx+B,MAAMkmI,EAAKrC,KAC3B1/H,EAAO,IAAoC,IAC3Ck4E,EAAMxtD,GAAK1qB,EAAO,GAElBk4E,EAAM6lD,MAA2D7lD,EAAMxtD,IAG/E,SAAS03G,IACL,IAAIjmC,EAAa1xD,GAAU,GACvBu2F,GAAY7kC,EAAU8iC,IAA0C9iC,EAAU8iC,MAA4C,OAAS,MAC/Hv0G,EAAKs2G,EAAS7kC,EAAU6iC,IAAyCv0F,EAAOu0F,MAA2C,IACvH,OAAOt0G,EAEX,SAAS23G,EAAmB/vB,GACxB,IAAIgwB,GAAS,QAAY,IAAIrvH,MAC7BilE,EAAMqqD,uBAAyBD,EAC/BpqD,EAAM8lD,KAA4C,EAClD,IAAIwE,EAAY,CAAClwB,EAAQgwB,GACzB,OAAOE,EAEX,SAASC,EAAepoG,GAIpB,IAAIqoG,EAAU,QACdxqD,EAAM6lD,IAAyDzT,EAAel9G,IAAI8yH,IAAsB7lG,EAAQqoG,GAEpH,IAAKxqD,EAAMxtD,GAAI,CACXwtD,EAAMxtD,GAAK03G,IACX,IAAII,EAAYH,EAAmBnqD,EAAMxtD,IACzC+3G,EAAeD,EAAU/C,IAA8BsC,EAAKrC,MAG5D,IAAIiD,EAASl4F,EAAO,KAA8CA,EAAO,MAA+CA,EAAO,MAA+C,aAAe,cAC7L,QAAiBi7D,EAASi9B,GAI9BzqD,EAAMymD,IAA2Cl0F,EAAOk0F,IAA2Cl0F,EAAOk0F,WAA6Ch0G,EAGvJ,IAAIi4G,EAAatY,EAAenkI,IAAI47I,EAAKpC,KACzC,GAAIiD,EAAY,CACZA,EAAaC,UAAUD,GACvB,IAAIE,EAAmBF,EAAW/mI,MAAMkmI,EAAKrC,KACzCoD,EAAiB,KACjB5qD,EAAMinD,IAAuD2D,EAAiB,IAE9EA,EAAiB,IAAoC,GAAKA,EAAiB,KAC3E5qD,EAAMymD,IAA2CmE,EAAiB,IAG1E5qD,EAAM6qD,4BAA8B,SAAUC,EAAqBlqH,EAAWmqH,QACpD,IAAlBA,IAA4BA,GAAgB,GAEhD,IAAIC,GAAkBpB,GAAmBkB,IAAyBlqH,IAAcgpH,GAAmBhpH,GACnG,GAAIoqH,GACA,SAAex9B,EAAS,EAAkC,GAA8D,gKACU,OAFtI,CAMAxtB,EAAMinD,IAAuD6D,EAC7D,IAAIJ,EAAa1qD,EAAMinD,IACnBrmH,IACAo/D,EAAMymD,IAA2C7lH,EACjD8pH,EAAa,CAAC1qD,EAAMinD,IAAsDjnD,EAAMp/D,WAAW2mH,IAA8BsC,EAAKrC,MAE9HuD,GAGA3Y,EAAel9G,IAAI20H,EAAKpC,IAA8DwD,UAAUP,MAOxG1qD,EAAMkrD,8BAAgC,WAClClrD,EAAMinD,IAAuD,KAC7DjnD,EAAMymD,IAA2C,KACjDrU,EAAen3C,IAAI4uD,EAAKpC,MAE5BznD,EAAMoV,IAAoC,SAAUglB,GAEhD,GAAIp6B,EAAMxtD,KAAO4nF,IAAWp6B,EAAM6lD,IAAwD,CACtF,IAAIsF,EAAU/wB,GAAkB8vB,IAC5BkB,EAAcjB,EAAmBgB,GACrCZ,EAAea,EAAY7D,IAA8BsC,EAAKrC,WAW9E,OAHAqC,EAAKwB,gBAAkB,IACvBxB,EAAKI,eAAiB,UACtBJ,EAAKyB,mBAAqB,cACnBzB,EAxHc,GCFrB0B,GAAS,MACTC,GAAU,OACd,SAASC,GAAav5H,EAAQtS,GACtBsS,GAAUA,EAAOtS,IAAqE,KAA5D,QAAQsS,EAAOtS,IAAO,YACzCsS,EAAOtS,GAGtB,IAAI8rI,GAAkC,WAClC,SAASA,EAAiBpyD,EAAM6yC,EAAewf,GAC3C,IAAI3+I,EAAQT,KACRkC,EAAS6qF,EAAK7qF,OAClBlC,KAAK47H,MAAQ,WAAc,OAAO,MAClC57H,KAAKo6I,IAAkD,WAAc,OAAO,OAC5E,OAAa+E,EAAkBn/I,MAAM,SAAUyzF,GAG3C,GAFAA,EAAMx4C,YAAc,IAAIk+F,GACxB1lD,EAAM4rD,SAAW,IAAIlE,GAASvb,IAC1B,UAAa,CACbnsC,EAAM4lD,IAAqD,IAAImC,GAAgB5b,EAAe7yC,GAC9F0G,EAAM8/B,OAAS,IAAI6lB,GACnB3lD,EAAMp1C,SAAW,IAAIg9F,GACrB5nD,EAAMu/B,KAAO,IAAIsqB,GAAK1d,EAAe7yC,GACrC,IAEImxD,EAFAl3C,OAAU,EACVo2C,OAAW,EAEXgC,IACAp4C,EAAUo4C,EAAiBv3D,aAC3Bu1D,EAAWgC,EAAiBp3D,YAC5Bk2D,EAASkB,EAAiBz3D,WAE9B8L,EAAMgmD,IAAqD,IAAI0D,GAAen2C,EAASo2C,EAAUc,EAAQh8I,GACzGuxF,EAAMsoD,QAAU,IAAIR,GAExB9nD,EAAM2mD,IAAkD,WACpD,IAAI2B,EAAUtoD,EAAMsoD,QAChB1oB,EAAQ,KAEZ,GAAI0oB,IAAW,QAASA,EAAQ91G,IAC5BotF,EAAQ0oB,EAAQ91G,OAEf,CAED,IAAIq5G,GAAe7rD,EAAM4lD,KAAsD,IAAIoB,IACnFpnB,EAAQisB,IAAe,QAASA,EAAYr5G,IAAMq5G,EAAYr5G,GAAK,KAEvE,OAAOotF,GAEX5/B,EAAMimD,IAAgE,SAAUp8C,EAAKmc,IACjF,SAAS,QAAYnc,EAAIh7B,IAAKwsD,GAAWK,QAAS,QAAS17B,EAAM2mD,MAAmD,OAExH3mD,EAAMsmD,IAAuE,SAAUz8C,EAAKmc,IACxF,QAASnc,EAAIh7B,IAAKwsD,GAAWM,MAAO37B,EAAMj5C,KAE9Ci5C,EAAMkmD,IAAoE,SAAUr8C,EAAKmc,GACrF,IAAIx+D,EAAcw4C,EAAMx4C,YACxB,GAAIA,EAAa,CAEb,IAAIwxD,GAAO,QAAYnP,EAAK2hD,KAC5B,QAASxyC,EAAM8iB,GAAWhE,mBAAoBtwE,EAAY4xD,IAAK,OAC/D,QAASJ,EAAM8iB,GAAW/D,iBAAkBvwE,EAAYskG,MAAO,QAGvE9rD,EAAMmmD,IAA8D,SAAUt8C,EAAKmc,GAC/E,IAAI8Z,EAAS9/B,EAAM8/B,OACnB,GAAIA,EAAQ,CAER,IAAID,GAAY,SAAY,QAAYh2B,EAAK0hD,IAASlwB,GAAWE,YACjE,QAASsE,EAAW,UAAWC,EAAOttF,GAAI,OAC1C,QAASqtF,EAAW,KAAMC,EAAOE,GAAI,OACrC,QAASH,EAAW,QAASC,EAAOG,MAAO,OAC3C,QAASJ,EAAW,cAAeC,EAAOC,YAAa,QAG/D//B,EAAMwmD,IAAiE,SAAU38C,EAAKmc,GAClF,IAAI4lC,EAAW5rD,EAAM4rD,SACrB,GAAIA,EAAU,CACV,IAAI5yC,GAAO,QAAYnP,EAAK2hD,KAC5B,QAASxyC,EAAM8iB,GAAWZ,qBAAsB0wB,EAASG,aAAc,OACvE,QAAS/yC,EAAM8iB,GAAWb,mBAAoB2wB,EAASjE,WAAY,MAC/D99C,EAAI6O,WAAa,gBAAgC7O,EAAI6O,WAAamB,EAAS1Z,YAC3E,QAAS6Y,EAAM8iB,GAAWX,gBAAiBywB,EAASI,WAAY,OAChE,QAAShzC,EAAM8iB,GAAWV,eAAgBwwB,EAASK,OAAQ,SAIvEjsD,EAAMumD,IAAiE,SAAU18C,EAAKmc,GAClF,IAAIp7D,EAAW59C,EAAM49C,SACjBA,IACA,SAAS,QAAYi/C,EAAK2hD,GAAS,IAAK1vB,GAAWxC,WAAY1uE,EAASo1E,GAAI,OAGpFhgC,EAAMomD,IAAkE,SAAUv8C,EAAKmc,GACnF,IAAIhyB,EAAiBgM,EAAMgmD,IAC3B,GAAIhyD,EAAgB,CAChB,IAAI2sC,GAAW,SAAY,QAAY92B,EAAK0hD,IAASlwB,GAAWG,SAAU,CAAEnnC,aAAS5hD,EAAW+hD,cAAU/hD,KAC1G,QAASkuF,EAAU,UAAW3sC,EAAeK,QAAS,KAAU,OAChE,QAASssC,EAAU,OAAQ3sC,EAAep0E,KAAM,KAAU,OAC1D,QAAS+gH,EAAU,WAAY3sC,EAAeQ,SAAU,KAAU,QAG1EwL,EAAMksD,gBAAkB,SAAUriD,EAAKmc,GACnC,IAAIka,EAAMlzH,EAAMkzH,IACZA,IACA,SAAS,QAAYr2B,EAAK0hD,IAASlwB,GAAWI,OAAQyE,IAG9DlgC,EAAMqmD,IAA0D,SAAUx8C,EAAKmc,GAC3E,IAAIuZ,EAAOv/B,EAAMu/B,KACjB,GAAIA,EAAM,CACN,IAAIvmB,GAAO,QAAYnP,EAAK2hD,GAAS,KAErC,QAASxyC,EAAM8iB,GAAW3B,cAAeoF,EAAKknB,IAA0C,MAExF,IAAInnB,GAAU,SAAY,QAAYz1B,EAAK0hD,IAASlwB,GAAWC,UAC/D,QAASgE,EAAS,KAAMC,EAAK/sF,GAAI,OACjC,QAAS8sF,EAAS,SAAUC,EAAK0nB,IAAsD,QAG/FjnD,EAAMmsD,QAAU,SAAUtiD,EAAKmc,GAC3B,IAAIn3C,EAAMg7B,EAAIh7B,IACVA,IACA48E,GAAa58E,EAAKwsD,GAAWE,WAC7BkwB,GAAa58E,EAAKwsD,GAAWC,SAC7BmwB,GAAa58E,EAAKwsD,GAAWI,QAC7BgwB,GAAa58E,EAAKwsD,GAAWM,OAC7B8vB,GAAa58E,EAAKwsD,GAAWK,QAC7B+vB,GAAa58E,EAAKwsD,GAAWG,eAoB7C,OAFAkwB,EAAiB7pD,QAAQ,EAElB6pD,EA1I0B,GCZjCU,GAAkC,SAAUx/I,GAE5C,SAASw/I,IACL,IAGIC,EACAC,EACAC,EALAv/I,EAAQJ,EAAOM,KAAKX,OAASA,KAkGjC,OAjGAS,EAAMkmH,SAAW,IACjBlmH,EAAM28E,WAAa2uB,GAInB,OAAa8zC,EAAkBp/I,GAAO,SAAUgzF,EAAOuzB,GAkDnD,SAASzJ,IACLuiC,EAAmB,KACnBC,EAAuB,KACvBC,EAAoB,KAExB,SAAS/4B,EAAkBjhE,GACvB,IAAIo3B,EAAaqW,EAAMrW,WACnB2P,EAAO0G,EAAM1G,KACbsmB,EAAM0E,GAA8B,KAAM/xD,EAAQ+mC,GAClD6yC,EAAgBigB,EAAiBn1B,mBACrCo1B,EAAmBA,GAAoB,IACvC,QAAclgB,GAAe,SAAUngD,EAAOn7E,GAC1Cw7I,EAAiBrgE,GAAS,WAAc,OAAO4zB,EAAIsD,UAAUv5B,EAAYqC,EAAOn7E,SAEpF07I,EAAoBjzD,EAAKysD,KAA8C,GACvE/lD,EAAM4iB,QAAU,IAAI8oC,GAAiBpyD,EAAM+yD,EAAkBE,GAC7DD,GAAuB,QAAuCtsD,EAAM4iB,QAAQojC,IAAoDuG,GAChIjzD,EAAK48C,YAAYoW,GACjBtsD,EAAM4iB,QAAQulB,MAAQ,WAClB,IAAIqkB,EAAgBlzD,EAAKksB,UAAUjN,GACnC,OAAOi0C,EAAgBA,EAActrC,OAAO,UAAY,MAG5DlhB,EAAM,cAAgBqsD,EAE1B,SAASI,EAA0B5iD,EAAKmc,IAEpC,QAAYnc,EAAK,OAAQ,KACzB,QAAYA,EAAK,MAAO,IACxB,IAAI+V,EAAM5f,EAAM4iB,QAChBhD,EAAIqmC,IAA8Dp8C,EAAKmc,GACvEpG,EAAIsmC,IAAkEr8C,EAAKmc,GAC3EpG,EAAIumC,IAA4Dt8C,EAAKmc,GACrEpG,EAAIwmC,IAAgEv8C,EAAKmc,GACzEpG,EAAIymC,IAAwDx8C,EAAKmc,GACjEpG,EAAI0mC,IAAqEz8C,EAAKmc,GAC9EpG,EAAIssC,gBAAgBriD,EAAKmc,GACzBpG,EAAI2mC,IAA+D18C,EAAKmc,GACxEpG,EAAI4mC,IAA+D38C,EAAKmc,GACxEpG,EAAIusC,QAAQtiD,EAAKmc,GAxFrB8D,IACA9pB,EAAM1kB,WAAa,SAAU/oB,EAAQ+mC,EAAM5P,EAAYo9B,GACnDyM,EAAMj4C,WAAW/oB,EAAQ+mC,EAAM5P,EAAYo9B,GAC3C0M,EAAkBjhE,IAMtBytC,EAAMylB,iBAAmB,SAAUtyF,EAAO6yF,GACtC,IAAI,QAAkB7yF,QAGjB,CACD6yF,EAAUhmB,EAAM+lB,WAAWC,GAEvB7yF,EAAMvT,OAASi6F,EAASR,cACxB2M,EAAQjD,UAAUnhB,4BAEtB,IAAI8qD,EAAc1sD,EAAM4iB,SAAW,GAC/B8pC,EAAWpE,SAE6B,kBAA7BtoD,EAAM4iB,QAAQ0lC,QAAQ91G,IAAmBk6G,EAAW9G,KAC3D8G,EAAW9G,IAAmDxwC,MAGtE,IAAIu3C,EAAUD,EAAWntB,KAKzB,GAJIotB,IAAYA,EAAQ9G,KACpB8G,EAAQv3C,IAAkCs3C,EAAWntB,KAAK/sF,IAE9Di6G,EAA0Bt5H,EAAO6yF,GAC7B2mC,GAAWA,EAAQ7G,IAA2C,CAC9D6G,EAAQ7G,KAA4C,EACpD,IAAIntH,EAAU,IAAI,MAAoB,KAA0D,WAAkB,IAAI+zB,WAAa,KACnI,SAAoBs5D,EAAQjD,UAAW,EAAmCpqF,GAE9EqnE,EAAM21B,YAAYxiG,EAAO6yF,KAGjChmB,EAAM+2B,YAAc,SAAUvQ,EAAW7B,GACrC,IAAIrrB,GAAQktB,GAAa,IAAIltB,OAC7B,GAAIA,GAAQA,EAAKysD,IAA+C,CAC5D,IAAI5P,EAAW78C,EAAKysD,KAA8C,GAC9D5P,IAAamW,GACbhzD,EAAK48C,YAAYqW,GAGzBziC,QA4CD98G,EA4BX,OAhIA,EAAUo/I,EAAkBx/I,GAsG5Bw/I,EAAiBn1B,iBAAmB,WAChC,IAAI/uG,EACA+gE,EACA2jE,EAAY,KACZzgB,GAAiBjkH,EAAK,CAClBo5H,mBAAoB,WAAc,OAAOr4D,IAE7C/gE,EAAGu+H,IAAwC,WAAc,OAAOmG,GAChE1kI,EAAG4pG,iBAAmB,WAAc,OAAO,MAC3C5pG,EAAGs+G,mBAAqB,WAAc,OAAO,KAC7Ct+G,EAAG6pG,oBAAsB,WAAc,OAAO,OAC9C7pG,EAAGo/H,IAA8C,WAAc,OAAOsF,GACtE1kI,EAAGw+H,IAA8C,WAAc,OAAOkG,GACtE1kI,EAAG2kI,6BAA+B,WAAc,OAAO,GACvD3kI,EAAGigH,MAAQ,WAAc,OAAOykB,GAChC1kI,EAAGy+H,IAA+C,WAAc,OAAOiG,GACvE1kI,EAAG,IAA0C,WAAc,OAAO+gE,GAClE/gE,EAAG0+H,IAA8D,WAAc,OAAO39D,GACtF/gE,EAAG2+H,IAAyD,WAAc,OAAO59D,GACjF/gE,EAAG4+H,IAAsC,WAAc,OAAO,IAC9D5+H,EAAG6+H,IAAuC,WAAc,OAAO6F,GAC/D1kI,GACJ,OAAOikH,GAIJigB,EAjI0B,CAkInC/iC,IACF,YCtIA,ICKIyjC,GDLAC,GAA8B,2BAC9BC,GAAS,QAEFC,GAAc,UACdC,GAAqB,eACrBC,GAAuB,iBACvBC,GAAsB,gBACtBC,GAAY,QACZC,GAAwB,kBACxBC,GAAuB,iBACvBC,GAAgC,0BAEhCC,GAAyB,mBACzBC,GAAiB,YACjBC,GAAoB,eACpBC,GAAkBZ,GAAS,QAC3Ba,GAAkBb,GAAS,QAC3Bc,GAAmBd,GAAS,SAC5Be,GAAsBf,GAAS,WAC/BgB,GAAsBhB,GAAS,YAC/BiB,GAA4BjB,GAAS,iBACrCkB,GAAqC,MAAQnB,GAC7CoB,GAAuC,QAAUpB,GEpBjDqB,GAA6B,2BAC7BC,GAAyB,kBACzB,GAAoB,cAMpBC,GAA6B,wBAQ7BC,GAA8B,6BAC9BC,GAA8B,uBAM9B,GAAc,SACd,GAAe,UACf,GAAY,OACZ33C,GAAe,UACf43C,GAAa,QACbC,GAAyB,mBACzB,GAA2B,qBAC3BC,GAAoB,cACpBC,GAA8B,gCAC9BC,GAA8B,0BAC9BC,GAAsB,gBACtBC,GAA8B,8BAC9Br5D,GAAgB,UD7BvBs5D,GAAiC,CACjC/B,GAAa,eAAgB,aAAc,kBAAmB,iBAAkB,kBAMhFgC,GAAY,CACZrsF,QAAS,EACTssF,SAAU,EACVjjJ,MAAO,EACPkjJ,OAAQ,GA6CRC,IAnCM1/D,EAAA,GACe,KACV,KACI,KAGC,KACM,KACP,KACH,KACA,KACa,KAaVlC,EAAA,GAIU,KAOO,WAChC,SAAS4hE,EAAeC,GACpB,IAEIC,EACA3+E,EACA4+E,EACAC,EACAl8B,EACAm8B,EACAC,EARA1iJ,EAAQT,MASZ,OAAa6iJ,EAAgB7iJ,MAAM,SAAUyzF,GACzC8pB,IAEA0lC,EAAkB,IAAMH,EAAQM,IAAMN,EAAQx4C,KAAuC,IACrFw4C,EAAQZ,IAAkCY,EAAQZ,KAAmC,GACrFY,EAAQx4C,IAAsCw4C,EAAQx4C,KAAuC,EAC7F,IAAItkD,EAAS88F,EAAQ,KAAqC,GAC1D,GAAI98F,EAAOm8F,IAAwD,CAC/D,IAAIkB,EAAK/hB,GAAsBt7E,EAAOm8F,KAClCmB,EAASD,EAAGE,kBAChBv9F,EAAO,IAA+Cs9F,EAAUA,EAAS,KAAuBt9F,EAAO,IACvGA,EAAO,IAA6Dq9F,EAAGG,oBAAsBx9F,EAAO,IAExGytC,EAAM2uD,IAA+C,IAAIx8B,GACzDxhD,EAAa,IAAI,GACjB2+E,EAAe,IAAI,GACnBC,EAAU,IAAIzoB,GACd4oB,EAAQ,IAAInZ,GACZv2C,EAAM1G,KAAOo2D,EACb,IAAIM,KAAuB,QAAkBz9F,EAAOq8F,MAAmFr8F,EAAOq8F,IAqN9I,SAASqB,IACLjwD,EAAMztC,OAAO+7F,IACTtuD,EAAMztC,OAAO+7F,KAAmEtuD,EAAM,IAAkCsuD,IAAkE,EAAItuD,EAAM,IAAkCsuD,IAAkE,IAGhT,SAAS4B,IACL,OAAOZ,EAEX,SAASxlC,IACLwJ,GAAgB,QAAsB,SACtCm8B,EAAyB,KACzBH,EAAe,KACf3+E,EAAa,KACb4+E,EAAU,KACVC,EAAkB,KAlOjBj9F,EAAOm8F,KAA2DsB,IACnE,SAAeN,EAAMjhJ,OAAQ,EAAmC,IAA6D,qEAEjIuxF,EAAMitD,IAAqCoC,EAC3CrvD,EAAM,IAAoCztC,EAC1C09F,IACAjwD,EAAMqtD,IAAiC,SAAUpgB,QAC/B,IAAVA,IAAoBA,GAAQ,GAChCzsB,GAAOkvC,GAAO,WAAc,MAAO,iBAAkB,YACjD,QAAWA,EAAMb,OAAsE,SAAUtf,IAC7F,QAAWA,GAAU,SAAUt9D,GAC3BA,EAAQo7E,IAA+BpgB,WAGhD,KAAMA,IAEbjtC,EAAM8uD,IAAmD,SAAU7hB,QACjD,IAAVA,IAAoBA,GAAQ,IAChC,QAAWyiB,EAAMb,OAAsE,SAAUtf,IAC7F,QAAWA,GAAU,SAAUt9D,GACvBA,EAAQ68E,IACR78E,EAAQ68E,MAGR78E,EAAQo7E,IAA+BpgB,UAKvDjtC,EAAMquD,IAAwD,SAAU8B,EAAY1hJ,EAAQimI,GAExF,SAAS0b,EAAyBf,GAC9B,GAAIA,EAAS,CACT,IAAIrD,EAAa,IACZ,QAAkBwD,KACnBxD,GAAcwD,GAEdW,IACAnE,GAAc,OAEdhsD,EAAM,KAAuCA,EAAM,IAAoC4rD,WACvF5rD,EAAM,IAAoC4rD,SAASI,WAAaA,GAAc,MAGlF,QAAchsD,GAAO,SAAUhU,EAAOn7E,IAC9B,QAASm7E,MACR,QAAWn7E,IACZm7E,GAAsB,MAAbA,EAAM,KACwC,KAAvD,QAAWgjE,GAAgChjE,KAC3CqjE,EAAQrjE,GAASn7E,OA2BjC,YA9CmB,IAAfs/I,IAAyBA,GAAa,GAyBtCA,GAAcnwD,EAAM,IAAkCtW,YAAcsW,EAAM,IAAkCtW,WAAW97E,OAAS,IAChI,QAAW,yCAEf4yG,GAAOxgB,EAAM1G,MAAM,WAAc,MAAO,2BAA4B,WAChE,IAAI5P,EAAa,GACjBA,EAAW,IAA8B6lE,GACzC7lE,EAAW,IAA8B/Y,GACzC+Y,EAAW,IAA8B4lE,GACzC5lE,EAAW,IAA8BsW,EAAM2uD,KAE/Ce,EAAMp0E,WAAW0kB,EAAM,IAAmCtW,EAAYj7E,EAAQimI,GAC9E10C,EAAM,IAAsCrvB,EAAW,IACnDm8E,IAAmB9sD,EAAM,MACzBA,EAAM,IAAoC4rD,SAASK,OAASa,IAEhEsD,EAAyBpwD,EAAMitD,KAE/BjtD,EAAMqwD,aACNrwD,EAAMytD,MACNztD,EAAM+uD,IAAuE/hJ,MAE1EgzF,GAEXA,EAAMouD,IAAqE,SAAUiB,IAGjF,QAAYA,EAASrvD,GAAO,SAAUpgF,GAElC,OAAOA,IAA8D,KAAtD,QAAWovI,GAAgCpvI,OAGlEogF,EAAMqwD,WAAa,WAEf,IACI,IAAI,QAAQrwD,EAAMqvD,QAAQZ,KAAkC,CAGxD,IADA,IAAI6B,EAAWtwD,EAAMqvD,QAAQZ,IAAgC7gJ,OACpDH,EAAI,EAAGA,EAAI6iJ,EAAU7iJ,IAAK,CAC/B,IAAIP,EAAO8yF,EAAMqvD,QAAQZ,IAAgChhJ,GACzDP,IAEJ8yF,EAAMqvD,QAAQZ,SAAkCh8G,SACzCutD,EAAMqvD,QAAQZ,KAG7B,MAAOxjE,GACH,IAAIslE,EAAe,GACftlE,IAAa,QAAWA,EAAUnwE,YAClCy1I,EAAatlE,UAAYA,EAAUnwE,cAU/CklF,EAAM+uD,IAAyE,SAAUyB,GAErF,IAAI,YAAe,UAAe,CAC9B,IAAIC,EAAsB,WAWtB,GAHAD,EAAoB1B,KAAiD,IAGjE,QAAW9hJ,EAAMssF,KAAKo0D,KAA0C,CAChE,IAAIgD,EAAe1jJ,EAAMssF,KAAKo0D,IAAwCp1C,GACtE,GAAIo4C,EAAc,CACd,IAAIC,EAAmBD,EAAaxvC,OAChCyvC,GAAoBA,EAAiB,KAAuCA,EAAiB,IAAoCC,iBACjID,EAAiB,IAAoCC,gBAAgBnH,YAKjFngD,GAAQ,EACRunD,EAA0BL,EAAoBnjC,YAAY,IAAkCyjC,wBAC3FrB,IACDA,GAAyB,SAAkBn8B,EAAeo8B,EAAM/B,KAAiD+B,EAAM/B,QAEtH6C,EAAoBnjC,YAAY96D,OAAOg8F,OAGpC,SAA2BkC,EAAqBI,EAAyBpB,KACzEnmD,GAAQ,IAGR,SAAyBmnD,EAAqBI,EAAyBpB,KACvEnmD,GAAQ,GAIPA,IAAU,YACX,SAAeknD,EAAoB7B,IAA6Cr1D,KAAK7qF,OAAQ,EAAmC,GAAkE,wDAGrM66F,GAAUknD,EAAoBnjC,YAAY96D,OAAOi8F,MAElD,SAAyBiC,EAAqBI,EAAyBpB,KAInFzvD,EAAM+wD,UAAY,WACd,OAAOxB,GAEXvvD,EAAM4kB,OAAS,SAAUnF,EAAS81B,EAAgBzF,GAC9C9vC,EAAM8uD,IAAiDrvC,GAEnDgwC,KACA,SAA8B,KAAMA,IACpC,SAA4B,KAAMA,IAEtCC,EAAM9qC,QAAU8qC,EAAM9qC,OAAOnF,EAAS81B,EAAgBzF,KAE1D,QAAe9vC,EAAOA,EAAM2uD,IAA8C,CACtEzB,GACAU,GACAG,GACA,2BACAC,GACA,WACAH,GACAC,GACAX,GACAC,GACAE,GACAC,MAEJ,QAAevtD,EAAOkwD,EAAyB,CAC3CjC,GACA,wBACA,8BAEJ,QAAejuD,EAAO0vD,EAAO,CACzBlC,GACAC,GACA,0BACAC,GACA,YACAC,GACA,cACA,iBAEJ,QAAe3tD,GAAO,WAClB,IAAI4iB,EAAUjyC,EAAW,IACzB,OAAOiyC,EAAUA,EAAQ2c,KAAO,OACjC,CACC2uB,GACAC,QAmEZ,OAJAiB,EAAe3iJ,UAAU+4I,yBAA2B,SAAUC,GAC1D,OAAO,MAGJ2J,EApTwB,KAwTnC,WACI,IAAInD,EAAS,KACT+E,GAAW,EACXC,EAAO,CACP,2BACA,8BAEJ,IAGI,IAAIC,GAAShvG,UAAY,IAAIivG,cACzBD,IACAjF,EAASiF,EAAMt6E,KASvB,MAAO3lE,IAGP,GAAIg7I,EACA,IACI,IAAI/9I,EAAM+9I,EAAOlrH,cACjB,GAAI7yB,EAEA,IADA,IAAI0oE,EAAM,GACDujB,EAAM,EAAGA,EAAM82D,EAAKrjJ,OAAQusF,IACjC,IAA6D,IAAzDjsF,EAAIwnF,IAAqCu7D,EAAK92D,IAAc,CAC5DvjB,EAAM,OAASujB,EAAM,IAC0C,IAA3DjsF,EAAIwnF,IAAqC,gBACmB,IAAxDxnF,EAAIwnF,IAAqC,UACzC9e,GAAO,SAEsD,IAAxD1oE,EAAIwnF,IAAqC,YAC9C9e,GAAO,UAGfk2E,GAAkBl2E,GAAOo6E,EAAW,OAAS,IAC7C,OAKhB,MAAO//I,MA9Cf,I;;;;;AE/XA,IAAIiX,E,iBACJ,IAAIkpI,EAAY,YAKZC,EAAc,cAKdC,EAAY,YAKZC,EAAc,WAKdC,EAAmB,gBAKnBC,EAAc,cAKdC,EAAe,YAKfC,EAAqB,WAKrBC,EAAgB,cAKhBC,EAAqBD,EAIrBE,EAAyB,UAKzBC,EAAe,YAKfvnD,EAAa,YAIbwnD,EAAoB,OAASxnD,EAI7BynD,EAAyB,iBAIzBC,EAAkB,gBAKlBC,EAAiB,cAKjBC,EAAkB,eAClBC,EAAMvmJ,OAKN0/F,EAAqB6mD,EAAI,kBAIzBC,EAAkBD,EAAI,uBAK1B,SAASE,IACL,IAAIphJ,EAaJ,cAZWymG,aAAew5C,IACtBjgJ,EAASymG,YAERzmG,UAAiB8yE,OAASmtE,IAC3BjgJ,EAAS8yE,MAER9yE,UAAiBuf,SAAW0gI,IAC7BjgJ,EAASuf,QAERvf,UAAiB,EAAAO,IAAW0/I,IAC7BjgJ,EAAS,EAAAO,GAENP,GAAU,GAIrB,IAAIqhJ,EAAOD,IACPE,EAAWD,EAAKP,KAA4BO,EAAKP,GAA0B,CAC3Ex/I,GAAIyV,EAAK,GACLA,EAAGkqI,IAAmB,EACtBlqI,EAAGiqI,IAAkB,EACrBjqI,GACJxa,EAAG,MAMP,SAASglJ,EAAgBrrI,EAAK2lE,GAC1B,OAAO3lE,GAAOgrI,EAAIf,GAAWjlJ,eAAea,KAAKma,EAAK2lE,GAM1D,SAAS2lE,EAA0BzgI,GAC/B,OAAOA,IAAWA,IAAWmgI,EAAIf,IAAcp/H,IAAWjmB,MAAMqlJ,IAMpE,SAASsB,EAAkC1gI,GACvC,OAAOygI,EAA0BzgI,IAAWA,IAAW2gI,SAASvB,GAMpE,SAAS7lD,EAAav5E,GAClB,IAAIw5E,EACJ,GAAIx5E,EAAQ,CAER,GAAIs5E,EACA,OAAOA,EAAmBt5E,GAE9B,IAAI4gI,EAAW5gI,EAAOs4E,IAAet4E,EAAOo/H,KAAep/H,EAAOm/H,GAAen/H,EAAOm/H,GAAaC,GAAa,MAElH5lD,EAAWx5E,EAAO8/H,IAAsBc,EACnCJ,EAAgBxgI,EAAQ8/H,YAGlB9/H,EAAOggI,GACdxmD,EAAWx5E,EAAO8/H,GAAqB9/H,EAAOggI,IAAoBhgI,EAAO8/H,GACzE9/H,EAAOggI,GAAmBY,GAGlC,OAAOpnD,EAOX,SAASqnD,EAAa7gI,EAAQopE,GAC1B,IAAI0mC,EAAQ,GACZ,GAAIswB,EACAtwB,EAAQswB,EAAgBpgI,QAGxB,IAAK,IAAIu4H,KAAUv4H,EACO,kBAAXu4H,GAAuBiI,EAAgBxgI,EAAQu4H,IACtDzoB,EAAMzvH,KAAKk4I,GAIvB,GAAIzoB,GAASA,EAAMp0H,OAAS,EACxB,IAAK,IAAIuxF,EAAK,EAAGA,EAAK6iC,EAAMp0H,OAAQuxF,IAChC7D,EAAK0mC,EAAM7iC,IAYvB,SAAS6zD,EAAoB9gI,EAAQ48E,EAAUmkD,GAC3C,OAAQnkD,IAAauiD,UAAsBn/H,EAAO48E,KAAcyiD,IAAgB0B,GAAWP,EAAgBxgI,EAAQ48E,IAOvH,SAASokD,EAAgBv6H,GACrB,MAAM,IAAItmB,UAAU,iBAAmBsmB,GAQ3C,SAASw6H,EAAkBC,GAEvB,IAAIC,EAAY,GAShB,OAPAN,EAAaK,GAAY,SAAUxzI,IAE1ByzI,EAAUzzI,IAASozI,EAAoBI,EAAYxzI,GAAM,KAE1DyzI,EAAUzzI,GAAQwzI,EAAWxzI,OAG9ByzI,EAOX,SAASC,EAAY30G,EAAQ9tC,GACzB,IAAK,IAAIsuF,EAAKxgD,EAAO/wC,OAAS,EAAGuxF,GAAM,EAAGA,IACtC,GAAIxgD,EAAOwgD,KAAQtuF,EACf,OAAO,EAGf,OAAO,EAQX,SAAS0iJ,EAAcC,EAAYJ,EAAYC,EAAWI,GACtD,SAASC,EAAexhI,EAAQyhI,EAAU7kD,GACtC,IAAIO,EAAUskD,EAAS7kD,GACvB,GAAIO,EAAQoiD,IAAgBgC,EAAa,CAErC,IAAIG,EAAgB1hI,EAAOs/H,IAAqB,IACN,IAAtCoC,EAAc/B,KACdxiD,GAAWukD,EAAcD,EAASjC,KAAkB,IAAI5iD,IAAaO,GAG7E,OAAO,WAEH,OAAOA,EAAQ/+F,MAAM4hB,EAAQvkB,YAIrC,IAAIkmJ,EAAY,GAChBd,EAAaM,GAAW,SAAUzzI,GAE9Bi0I,EAAUj0I,GAAQ8zI,EAAeN,EAAYC,EAAWzzI,MAG5D,IAAIk0I,EAAYroD,EAAa+nD,GACzBO,EAAU,GAEd,MAAOD,IAAclB,EAAkCkB,KAAeR,EAAYS,EAASD,GAEvFf,EAAae,GAAW,SAAUl0I,IAKzBi0I,EAAUj0I,IAASozI,EAAoBc,EAAWl0I,GAAO4rF,KAE1DqoD,EAAUj0I,GAAQ8zI,EAAeN,EAAYU,EAAWl0I,OAMhEm0I,EAAQxhJ,KAAKuhJ,GACbA,EAAYroD,EAAaqoD,GAE7B,OAAOD,EAEX,SAASG,EAAa9hI,EAAQ48E,EAAUrL,EAAOwwD,GAC3C,IAAIC,EAAW,KAGf,GAAIhiI,GAAUwgI,EAAgBjvD,EAAOiuD,GAAe,CAChD,IAAIkC,EAAgB1hI,EAAOs/H,IAAqB,GAQhD,GAPA0C,GAAYN,EAAcnwD,EAAMiuD,KAAkB,IAAI5iD,GACjDolD,GAEDhB,EAAgB,YAAcpkD,EAAW,KAAOyiD,IAI/C2C,EAAStC,KAAwD,IAAtCgC,EAAc/B,GAA+B,CAEzE,IAAIsC,GAAczB,EAAgBxgI,EAAQ48E,GAEtCslD,EAAW3oD,EAAav5E,GACxB6hI,EAAU,GAGd,MAAOI,GAAcC,IAAaxB,EAAkCwB,KAAcd,EAAYS,EAASK,GAAW,CAC9G,IAAIC,EAAYD,EAAStlD,GACzB,GAAIulD,EAAW,CACXF,EAAcE,IAAcJ,EAC5B,MAGJF,EAAQxhJ,KAAK6hJ,GACbA,EAAW3oD,EAAa2oD,GAE5B,IACQD,IAGAjiI,EAAO48E,GAAYolD,GAGvBA,EAAStC,GAAiB,EAE9B,MAAO3gJ,GAGH2iJ,EAAc/B,IAAsB,IAIhD,OAAOqC,EAEX,SAASI,EAAcxlD,EAAUrL,EAAOwwD,GACpC,IAAII,EAAY5wD,EAAMqL,GAStB,OAPIulD,IAAcJ,IAEdI,EAAY5oD,EAAahI,GAAOqL,WAEzBulD,IAAc9C,GACrB2B,EAAgB,IAAMpkD,EAAW,cAAgByiD,GAE9C8C,EAWX,SAASE,EAAmB9wD,EAAO+wD,EAAWtiI,EAAQuiI,EAAeC,GACjE,SAASC,EAAwBlxD,EAAOqL,GACpC,IAAI8lD,EAAgB,WAEhB,IAAIV,EAAWF,EAAaznJ,KAAMuiG,EAAUrL,EAAOmxD,IAAkBN,EAAcxlD,EAAUrL,EAAOmxD,GAEpG,OAAOV,EAAS5jJ,MAAM/D,KAAMoB,YAKhC,OADAinJ,EAAcnD,GAAe,EACtBmD,EAEX,IAAKjC,EAA0BlvD,GAAQ,CACnC,IAAImwD,EAAgB1hI,EAAOs/H,GAAoBt/H,EAAOs/H,IAAqB,GACvEqD,EAAcjB,EAAcY,GAAcZ,EAAcY,IAAc,IAEhC,IAAtCZ,EAAc/B,KACd+B,EAAc/B,KAAwB6C,GAE1C3B,EAAa7gI,GAAQ,SAAUtS,GAEvBozI,EAAoB9gI,EAAQtS,GAAM,IAAUsS,EAAOtS,KAAU60I,EAAc70I,KAE3Ei1I,EAAYj1I,GAAQsS,EAAOtS,UACpBsS,EAAOtS,KAET8yI,EAAgBjvD,EAAO7jF,IAAU6jF,EAAM7jF,KAAU6jF,EAAM7jF,GAAM6xI,MAC9DhuD,EAAM7jF,GAAQ+0I,EAAwBlxD,EAAO7jF,SAYjE,SAASk1I,EAAgBtB,EAAYJ,GAEjC,GAAI5nD,EAAoB,CAEpB,IAAIuoD,EAAU,GACVgB,EAAYtpD,EAAa2nD,GAC7B,MAAO2B,IAAcnC,EAAkCmC,KAAezB,EAAYS,EAASgB,GAAY,CACnG,GAAIA,IAAcvB,EACd,OAAO,EAIXO,EAAQxhJ,KAAKwiJ,GACbA,EAAYtpD,EAAaspD,GAE7B,OAAO,EAGX,OAAO,EASX,SAASC,EAAY9iI,EAAQ+iI,GACzB,OAAIvC,EAAgBxgI,EAAQo/H,GAEjBp/H,EAAOtS,MAAQq1I,GAAgBlD,IAEhC7/H,GAAU,IAAIm/H,IAAiB,IAAIzxI,MAAQq1I,GAAgBlD,EAsDzE,SAASmD,EAAa5xD,EAAUpxE,EAAQijI,EAAchnJ,GAE7CukJ,EAAgBpvD,EAAUguD,IAC3B4B,EAAgB,4CAGpB,IAAIM,EAAalwD,EAASguD,GACrBwD,EAAgBtB,EAAYthI,IAC7BghI,EAAgB,IAAM8B,EAAY1xD,GAAY,0BAA4B0xD,EAAY9iI,GAAU,KAEpG,IAAIsiI,EAAY,KACZ9B,EAAgBc,EAAY9B,GAE5B8C,EAAYhB,EAAW9B,IAMvB8C,EAAY7C,EAAqBqD,EAAY1xD,EAAU,KAAO,IAAMmvD,EAAS/kJ,EAC7E+kJ,EAAS/kJ,IACT8lJ,EAAW9B,GAAgB8C,GAE/B,IAAIY,EAAcF,EAAapD,GAC3B2B,IAAgB2B,EAAYjD,GAC5BsB,GAAetlJ,QAAuCskC,IAA5BtkC,EAAQgkJ,KAClCsB,IAAgBtlJ,EAAQgkJ,IAG5B,IAAIkB,EAAYF,EAAkBjhI,GAE9B2hI,EAAYN,EAAcC,EAAYthI,EAAQmhI,EAAWI,GAG7D0B,EAAajjI,EAAQ2hI,GAErB,IAAIa,IAAoBlpD,KAAwB4pD,EAAYhD,GACxDsC,GAAmBvmJ,IACnBumJ,IAAoBvmJ,EAAQikJ,IAGhCmC,EAAmBf,EAAYgB,EAAWtiI,EAAQmhI,GAA+B,IAApBqB,GAOjEQ,EAAapD,GAA0BW,EAAShgJ,G,4BCvhBjC,SAAS4iJ,EACtBC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAGA,IAqBItuC,EArBAp5G,EAAmC,oBAAlBmnJ,EACjBA,EAAcnnJ,QACdmnJ,EAsDJ,GAnDIC,IACFpnJ,EAAQonJ,OAASA,EACjBpnJ,EAAQqnJ,gBAAkBA,EAC1BrnJ,EAAQ2nJ,WAAY,GAIlBL,IACFtnJ,EAAQ4nJ,YAAa,GAInBJ,IACFxnJ,EAAQ6nJ,SAAW,UAAYL,GAI7BC,GACFruC,EAAO,SAAU3E,GAEfA,EACEA,GACCr2G,KAAK0pJ,QAAU1pJ,KAAK0pJ,OAAOC,YAC3B3pJ,KAAK6+C,QAAU7+C,KAAK6+C,OAAO6qG,QAAU1pJ,KAAK6+C,OAAO6qG,OAAOC,WAEtDtzC,GAA0C,qBAAxBuzC,sBACrBvzC,EAAUuzC,qBAGRT,GACFA,EAAaxoJ,KAAKX,KAAMq2G,GAGtBA,GAAWA,EAAQwzC,uBACrBxzC,EAAQwzC,sBAAsB1sH,IAAIksH,IAKtCznJ,EAAQkoJ,aAAe9uC,GACdmuC,IACTnuC,EAAOsuC,EACH,WACAH,EAAaxoJ,KACXX,MACC4B,EAAQ4nJ,WAAaxpJ,KAAK6+C,OAAS7+C,MAAM+pJ,MAAMC,SAASC,aAG3Dd,GAGFnuC,EACF,GAAIp5G,EAAQ4nJ,WAAY,CAGtB5nJ,EAAQsoJ,cAAgBlvC,EAExB,IAAImvC,EAAiBvoJ,EAAQonJ,OAC7BpnJ,EAAQonJ,OAAS,SAAmCxtC,EAAGnF,GAErD,OADA2E,EAAKr6G,KAAK01G,GACH8zC,EAAe3uC,EAAGnF,QAEtB,CAEL,IAAI+zC,EAAWxoJ,EAAQyoJ,aACvBzoJ,EAAQyoJ,aAAeD,EACnB,GAAG5jJ,OAAO4jJ,EAAUpvC,GACpB,CAACA,GAIT,MAAO,CACLsvC,QAASvB,EACTnnJ,QAASA,G,iCC/Fb2oJ,EAAOD,QAAU,EAAjB,Q,6BCEA,IAAIE,EAAQ,EAAQ,OAChBC,EAAS,EAAQ,OACjBC,EAAU,EAAQ,MAClBC,EAAW,EAAQ,OACnBC,EAAgB,EAAQ,OACxBC,EAAe,EAAQ,OACvBC,EAAkB,EAAQ,OAC1BC,EAAuB,EAAQ,OAC/BC,EAAa,EAAQ,OACrBC,EAAgB,EAAQ,OACxBC,EAAgB,EAAQ,OAE5BX,EAAOD,QAAU,SAAoBtkG,GACnC,OAAO,IAAI5jD,SAAQ,SAA4BC,EAASC,GACtD,IAGI6oJ,EAHAC,EAAcplG,EAAO51C,KACrB+sH,EAAiBn3E,EAAOpjD,QACxBI,EAAegjD,EAAOhjD,aAE1B,SAAS6B,IACHmhD,EAAOqlG,aACTrlG,EAAOqlG,YAAYC,YAAYH,GAG7BnlG,EAAOulG,QACTvlG,EAAOulG,OAAO7nG,oBAAoB,QAASynG,GAI3CX,EAAMgB,WAAWJ,IAAgBZ,EAAMiB,+BAClCtuB,EAAe,gBAGxB,IAAIh7H,EAAU,IAAIK,eAGlB,GAAIwjD,EAAO5E,KAAM,CACf,IAAIvsB,EAAWmxB,EAAO5E,KAAKvsB,UAAY,GACnC63B,EAAW1G,EAAO5E,KAAKsL,SAAWg/F,SAAS16I,mBAAmBg1C,EAAO5E,KAAKsL,WAAa,GAC3FywE,EAAewuB,cAAgB,SAAWx1E,KAAKthD,EAAW,IAAM63B,GAGlE,IAAIk/F,EAAWhB,EAAc5kG,EAAO6lG,QAAS7lG,EAAOrkD,KAOpD,SAASmqJ,IACP,GAAK3pJ,EAAL,CAIA,IAAI2uI,EAAkB,0BAA2B3uI,EAAU0oJ,EAAa1oJ,EAAQy7C,yBAA2B,KACvGmuG,EAAgB/oJ,GAAiC,SAAjBA,GAA6C,SAAjBA,EACvCb,EAAQoB,SAA/BpB,EAAQqB,aACND,EAAW,CACb6M,KAAM27I,EACNzoJ,OAAQnB,EAAQmB,OAChB/B,WAAYY,EAAQZ,WACpBqB,QAASkuI,EACT9qF,OAAQA,EACR7jD,QAASA,GAGXsoJ,GAAO,SAAkBnmJ,GACvBjC,EAAQiC,GACRO,OACC,SAAiBiK,GAClBxM,EAAOwM,GACPjK,MACCtB,GAGHpB,EAAU,MAoEZ,GAnGAA,EAAQM,KAAKujD,EAAOlkD,OAAOktD,cAAe27F,EAASiB,EAAU5lG,EAAOzqC,OAAQyqC,EAAOgmG,mBAAmB,GAGtG7pJ,EAAQiB,QAAU4iD,EAAO5iD,QA+BrB,cAAejB,EAEjBA,EAAQ2pJ,UAAYA,EAGpB3pJ,EAAQy6H,mBAAqB,WACtBz6H,GAAkC,IAAvBA,EAAQq+H,aAQD,IAAnBr+H,EAAQmB,QAAkBnB,EAAQs+H,aAAwD,IAAzCt+H,EAAQs+H,YAAYvlH,QAAQ,WAKjFwtB,WAAWojH,IAKf3pJ,EAAQe,QAAU,WACXf,IAILG,EAAO,IAAI0oJ,EAAW,kBAAmBA,EAAWiB,aAAcjmG,EAAQ7jD,IAG1EA,EAAU,OAIZA,EAAQsB,QAAU,WAGhBnB,EAAO,IAAI0oJ,EAAW,gBAAiBA,EAAWkB,YAAalmG,EAAQ7jD,EAASA,IAGhFA,EAAU,MAIZA,EAAQyB,UAAY,WAClB,IAAIuoJ,EAAsBnmG,EAAO5iD,QAAU,cAAgB4iD,EAAO5iD,QAAU,cAAgB,mBACxFgpJ,EAAepmG,EAAOomG,cAAgBrB,EACtC/kG,EAAOmmG,sBACTA,EAAsBnmG,EAAOmmG,qBAE/B7pJ,EAAO,IAAI0oJ,EACTmB,EACAC,EAAaC,oBAAsBrB,EAAWsB,UAAYtB,EAAWiB,aACrEjmG,EACA7jD,IAGFA,EAAU,MAMRqoJ,EAAMiB,uBAAwB,CAEhC,IAAIc,GAAavmG,EAAOtjD,iBAAmBooJ,EAAgBc,KAAc5lG,EAAOwmG,eAC9E9B,EAAQ+B,KAAKzmG,EAAOwmG,qBACpBtmH,EAEEqmH,IACFpvB,EAAen3E,EAAO0mG,gBAAkBH,GAKxC,qBAAsBpqJ,GACxBqoJ,EAAM1nJ,QAAQq6H,GAAgB,SAA0Bj+F,EAAKtjB,GAChC,qBAAhBwvI,GAAqD,iBAAtBxvI,EAAI4Y,qBAErC2oG,EAAevhH,GAGtBzZ,EAAQQ,iBAAiBiZ,EAAKsjB,MAM/BsrH,EAAM56D,YAAY5pC,EAAOtjD,mBAC5BP,EAAQO,kBAAoBsjD,EAAOtjD,iBAIjCM,GAAiC,SAAjBA,IAClBb,EAAQa,aAAegjD,EAAOhjD,cAIS,oBAA9BgjD,EAAO2mG,oBAChBxqJ,EAAQujB,iBAAiB,WAAYsgC,EAAO2mG,oBAIP,oBAA5B3mG,EAAO4mG,kBAAmCzqJ,EAAQ0qJ,QAC3D1qJ,EAAQ0qJ,OAAOnnI,iBAAiB,WAAYsgC,EAAO4mG,mBAGjD5mG,EAAOqlG,aAAerlG,EAAOulG,UAG/BJ,EAAa,SAAS2B,GACf3qJ,IAGLG,GAAQwqJ,GAAWA,GAAUA,EAAO5/H,KAAQ,IAAI+9H,EAAkB6B,GAClE3qJ,EAAQgB,QACRhB,EAAU,OAGZ6jD,EAAOqlG,aAAerlG,EAAOqlG,YAAYpxE,UAAUkxE,GAC/CnlG,EAAOulG,SACTvlG,EAAOulG,OAAOvb,QAAUmb,IAAenlG,EAAOulG,OAAO7lI,iBAAiB,QAASylI,KAI9EC,IACHA,EAAc,MAGhB,IAAItoE,EAAWooE,EAAcU,GAEzB9oE,IAA+D,IAAnD,CAAE,OAAQ,QAAS,QAAS5nE,QAAQ4nE,GAClDxgF,EAAO,IAAI0oJ,EAAW,wBAA0BloE,EAAW,IAAKkoE,EAAW+B,gBAAiB/mG,IAM9F7jD,EAAQN,KAAKupJ,Q,6BCzNjB,IAAIZ,EAAQ,EAAQ,OAChBnnG,EAAO,EAAQ,OACf2pG,EAAQ,EAAQ,OAChBC,EAAc,EAAQ,OACtB7pD,EAAW,EAAQ,OAQvB,SAAS3pC,EAAemmE,GACtB,IAAIvpB,EAAU,IAAI22C,EAAMptB,GACpBstB,EAAW7pG,EAAK2pG,EAAM9sJ,UAAUiC,QAASk0G,GAa7C,OAVAm0C,EAAM2C,OAAOD,EAAUF,EAAM9sJ,UAAWm2G,GAGxCm0C,EAAM2C,OAAOD,EAAU72C,GAGvB62C,EAAS/sJ,OAAS,SAAgBitJ,GAChC,OAAO3zF,EAAewzF,EAAYrtB,EAAewtB,KAG5CF,EAIT,IAAIG,EAAQ5zF,EAAe2pC,GAG3BiqD,EAAML,MAAQA,EAGdK,EAAMpC,cAAgB,EAAQ,OAC9BoC,EAAMC,YAAc,EAAQ,OAC5BD,EAAME,SAAW,EAAQ,OACzBF,EAAMG,QAAU,iBAChBH,EAAMI,WAAa,EAAQ,OAG3BJ,EAAMrC,WAAa,EAAQ,OAG3BqC,EAAMK,OAASL,EAAMpC,cAGrBoC,EAAMzrH,IAAM,SAAa+rH,GACvB,OAAOvrJ,QAAQw/B,IAAI+rH,IAErBN,EAAMO,OAAS,EAAQ,MAGvBP,EAAMQ,aAAe,EAAQ,OAE7BtD,EAAOD,QAAU+C,EAGjB9C,EAAOD,QAAP,WAAyB+C,G,6BC7DzB,IAAIpC,EAAgB,EAAQ,OAQ5B,SAASqC,EAAYzzE,GACnB,GAAwB,oBAAbA,EACT,MAAM,IAAI/zE,UAAU,gCAGtB,IAAIgoJ,EAEJ9tJ,KAAK62E,QAAU,IAAIz0E,SAAQ,SAAyBC,GAClDyrJ,EAAiBzrJ,KAGnB,IAAIm3E,EAAQx5E,KAGZA,KAAK62E,QAAQ/xE,MAAK,SAASgoJ,GACzB,GAAKtzE,EAAMu0E,WAAX,CAEA,IAAI7sJ,EACA8sJ,EAAIx0E,EAAMu0E,WAAW1sJ,OAEzB,IAAKH,EAAI,EAAGA,EAAI8sJ,EAAG9sJ,IACjBs4E,EAAMu0E,WAAW7sJ,GAAG4rJ,GAEtBtzE,EAAMu0E,WAAa,SAIrB/tJ,KAAK62E,QAAQ/xE,KAAO,SAASmpJ,GAC3B,IAAIC,EAEAr3E,EAAU,IAAIz0E,SAAQ,SAASC,GACjCm3E,EAAMS,UAAU53E,GAChB6rJ,EAAW7rJ,KACVyC,KAAKmpJ,GAMR,OAJAp3E,EAAQi2E,OAAS,WACftzE,EAAM8xE,YAAY4C,IAGbr3E,GAGTgD,GAAS,SAAgBztD,GACnBotD,EAAM61B,SAKV71B,EAAM61B,OAAS,IAAI47C,EAAc7+H,GACjC0hI,EAAet0E,EAAM61B,YAOzBi+C,EAAYptJ,UAAUiuJ,iBAAmB,WACvC,GAAInuJ,KAAKqvG,OACP,MAAMrvG,KAAKqvG,QAQfi+C,EAAYptJ,UAAU+5E,UAAY,SAAmBsY,GAC/CvyF,KAAKqvG,OACP9c,EAASvyF,KAAKqvG,QAIZrvG,KAAK+tJ,WACP/tJ,KAAK+tJ,WAAW/nJ,KAAKusF,GAErBvyF,KAAK+tJ,WAAa,CAACx7D,IAQvB+6D,EAAYptJ,UAAUorJ,YAAc,SAAqB/4D,GACvD,GAAKvyF,KAAK+tJ,WAAV,CAGA,IAAIz7G,EAAQtyC,KAAK+tJ,WAAW7yI,QAAQq3E,IACrB,IAAXjgD,GACFtyC,KAAK+tJ,WAAWv9C,OAAOl+D,EAAO,KAQlCg7G,EAAYhnF,OAAS,WACnB,IAAIwmF,EACAtzE,EAAQ,IAAI8zE,GAAY,SAAkBr5E,GAC5C64E,EAAS74E,KAEX,MAAO,CACLuF,MAAOA,EACPszE,OAAQA,IAIZvC,EAAOD,QAAUgD,G,6BCpHjB,IAAItC,EAAa,EAAQ,OACrBR,EAAQ,EAAQ,OAQpB,SAASS,EAAc7+H,GAErB4+H,EAAWrqJ,KAAKX,KAAiB,MAAXosB,EAAkB,WAAaA,EAAS4+H,EAAWoD,cACzEpuJ,KAAKqT,KAAO,gBAGdm3I,EAAM6D,SAASpD,EAAeD,EAAY,CACxCsD,YAAY,IAGd/D,EAAOD,QAAUW,G,uBCnBjBV,EAAOD,QAAU,SAAkBhmJ,GACjC,SAAUA,IAASA,EAAMgqJ,c,6BCD3B,IAAI9D,EAAQ,EAAQ,OAChBG,EAAW,EAAQ,OACnB4D,EAAqB,EAAQ,OAC7BC,EAAkB,EAAQ,OAC1BvB,EAAc,EAAQ,OACtBrC,EAAgB,EAAQ,OACxB6D,EAAY,EAAQ,OAEpBC,EAAaD,EAAUC,WAM3B,SAAS1B,EAAMI,GACbptJ,KAAKojG,SAAWgqD,EAChBptJ,KAAK2uJ,aAAe,CAClBxsJ,QAAS,IAAIosJ,EACbhrJ,SAAU,IAAIgrJ,GASlBvB,EAAM9sJ,UAAUiC,QAAU,SAAiBysJ,EAAa5oG,GAG3B,kBAAhB4oG,GACT5oG,EAASA,GAAU,GACnBA,EAAOrkD,IAAMitJ,GAEb5oG,EAAS4oG,GAAe,GAG1B5oG,EAASinG,EAAYjtJ,KAAKojG,SAAUp9C,GAGhCA,EAAOlkD,OACTkkD,EAAOlkD,OAASkkD,EAAOlkD,OAAO0yB,cACrBx0B,KAAKojG,SAASthG,OACvBkkD,EAAOlkD,OAAS9B,KAAKojG,SAASthG,OAAO0yB,cAErCwxB,EAAOlkD,OAAS,MAGlB,IAAIsqJ,EAAepmG,EAAOomG,kBAELlmH,IAAjBkmH,GACFqC,EAAUI,cAAczC,EAAc,CACpC0C,kBAAmBJ,EAAWtC,aAAasC,EAAWK,SACtDC,kBAAmBN,EAAWtC,aAAasC,EAAWK,SACtD1C,oBAAqBqC,EAAWtC,aAAasC,EAAWK,WACvD,GAIL,IAAIE,EAA0B,GAC1BC,GAAiC,EACrClvJ,KAAK2uJ,aAAaxsJ,QAAQW,SAAQ,SAAoCqsJ,GACjC,oBAAxBA,EAAYC,UAA0D,IAAhCD,EAAYC,QAAQppG,KAIrEkpG,EAAiCA,GAAkCC,EAAYE,YAE/EJ,EAAwBK,QAAQH,EAAY5qJ,UAAW4qJ,EAAYxqJ,cAGrE,IAKIkyE,EALA04E,EAA2B,GAO/B,GANAvvJ,KAAK2uJ,aAAaprJ,SAAST,SAAQ,SAAkCqsJ,GACnEI,EAAyBvpJ,KAAKmpJ,EAAY5qJ,UAAW4qJ,EAAYxqJ,cAK9DuqJ,EAAgC,CACnC,IAAIzsB,EAAQ,CAAC+rB,OAAiBtoH,GAE9BxmC,MAAMQ,UAAUovJ,QAAQvrJ,MAAM0+H,EAAOwsB,GACrCxsB,EAAQA,EAAMj8H,OAAO+oJ,GAErB14E,EAAUz0E,QAAQC,QAAQ2jD,GAC1B,MAAOy8E,EAAMphI,OACXw1E,EAAUA,EAAQ/xE,KAAK29H,EAAMzkF,QAASykF,EAAMzkF,SAG9C,OAAO64B,EAIT,IAAI24E,EAAYxpG,EAChB,MAAOipG,EAAwB5tJ,OAAQ,CACrC,IAAIouJ,EAAcR,EAAwBjxG,QACtC0xG,EAAaT,EAAwBjxG,QACzC,IACEwxG,EAAYC,EAAYD,GACxB,MAAOlpJ,GACPopJ,EAAWppJ,GACX,OAIJ,IACEuwE,EAAU23E,EAAgBgB,GAC1B,MAAOlpJ,GACP,OAAOlE,QAAQE,OAAOgE,GAGxB,MAAOipJ,EAAyBluJ,OAC9Bw1E,EAAUA,EAAQ/xE,KAAKyqJ,EAAyBvxG,QAASuxG,EAAyBvxG,SAGpF,OAAO64B,GAGTm2E,EAAM9sJ,UAAUyvJ,OAAS,SAAgB3pG,GACvCA,EAASinG,EAAYjtJ,KAAKojG,SAAUp9C,GACpC,IAAI4lG,EAAWhB,EAAc5kG,EAAO6lG,QAAS7lG,EAAOrkD,KACpD,OAAOgpJ,EAASiB,EAAU5lG,EAAOzqC,OAAQyqC,EAAOgmG,mBAIlDxB,EAAM1nJ,QAAQ,CAAC,SAAU,MAAO,OAAQ,YAAY,SAA6BhB,GAE/EkrJ,EAAM9sJ,UAAU4B,GAAU,SAASH,EAAKqkD,GACtC,OAAOhmD,KAAKmC,QAAQ8qJ,EAAYjnG,GAAU,GAAI,CAC5ClkD,OAAQA,EACRH,IAAKA,EACLyO,MAAO41C,GAAU,IAAI51C,YAK3Bo6I,EAAM1nJ,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+BhB,GAGrE,SAAS8tJ,EAAmBC,GAC1B,OAAO,SAAoBluJ,EAAKyO,EAAM41C,GACpC,OAAOhmD,KAAKmC,QAAQ8qJ,EAAYjnG,GAAU,GAAI,CAC5ClkD,OAAQA,EACRc,QAASitJ,EAAS,CAChB,eAAgB,uBACd,GACJluJ,IAAKA,EACLyO,KAAMA,MAKZ48I,EAAM9sJ,UAAU4B,GAAU8tJ,IAE1B5C,EAAM9sJ,UAAU4B,EAAS,QAAU8tJ,GAAmB,MAGxDrF,EAAOD,QAAU0C,G,6BC7JjB,IAAIxC,EAAQ,EAAQ,OAYpB,SAASQ,EAAW5+H,EAAStZ,EAAMkzC,EAAQ7jD,EAASoB,GAClD3C,MAAMD,KAAKX,MACXA,KAAKosB,QAAUA,EACfpsB,KAAKqT,KAAO,aACZP,IAAS9S,KAAK8S,KAAOA,GACrBkzC,IAAWhmD,KAAKgmD,OAASA,GACzB7jD,IAAYnC,KAAKmC,QAAUA,GAC3BoB,IAAavD,KAAKuD,SAAWA,GAG/BinJ,EAAM6D,SAASrD,EAAYpqJ,MAAO,CAChCkvJ,OAAQ,WACN,MAAO,CAEL1jI,QAASpsB,KAAKosB,QACd/Y,KAAMrT,KAAKqT,KAEXgvD,YAAariE,KAAKqiE,YAClBgkC,OAAQrmG,KAAKqmG,OAEbsL,SAAU3xG,KAAK2xG,SACfp0B,WAAYv9E,KAAKu9E,WACjBC,aAAcx9E,KAAKw9E,aACnBwb,MAAOh5F,KAAKg5F,MAEZhzC,OAAQhmD,KAAKgmD,OACblzC,KAAM9S,KAAK8S,KACXxP,OAAQtD,KAAKuD,UAAYvD,KAAKuD,SAASD,OAAStD,KAAKuD,SAASD,OAAS,SAK7E,IAAIpD,EAAY8qJ,EAAW9qJ,UACvB6vJ,EAAc,GAElB,CACE,uBACA,iBACA,eACA,YACA,cACA,4BACA,iBACA,mBACA,kBACA,gBAEAjtJ,SAAQ,SAASgQ,GACjBi9I,EAAYj9I,GAAQ,CAACxO,MAAOwO,MAG9BvT,OAAOywJ,iBAAiBhF,EAAY+E,GACpCxwJ,OAAO6uC,eAAeluC,EAAW,eAAgB,CAACoE,OAAO,IAGzD0mJ,EAAWhqD,KAAO,SAAS16F,EAAOwM,EAAMkzC,EAAQ7jD,EAASoB,EAAU0sJ,GACjE,IAAIC,EAAa3wJ,OAAOY,OAAOD,GAY/B,OAVAsqJ,EAAM2F,aAAa7pJ,EAAO4pJ,GAAY,SAAgBp1I,GACpD,OAAOA,IAAQla,MAAMV,aAGvB8qJ,EAAWrqJ,KAAKuvJ,EAAY5pJ,EAAM8lB,QAAStZ,EAAMkzC,EAAQ7jD,EAASoB,GAElE2sJ,EAAW78I,KAAO/M,EAAM+M,KAExB48I,GAAe1wJ,OAAOwB,OAAOmvJ,EAAYD,GAElCC,GAGT3F,EAAOD,QAAUU,G,6BCnFjB,IAAIR,EAAQ,EAAQ,OAEpB,SAAS+D,IACPvuJ,KAAKw8G,SAAW,GAWlB+xC,EAAmBruJ,UAAUkwJ,IAAM,SAAa7rJ,EAAWI,EAAU/C,GAOnE,OANA5B,KAAKw8G,SAASx2G,KAAK,CACjBzB,UAAWA,EACXI,SAAUA,EACV0qJ,cAAaztJ,GAAUA,EAAQytJ,YAC/BD,QAASxtJ,EAAUA,EAAQwtJ,QAAU,OAEhCpvJ,KAAKw8G,SAASn7G,OAAS,GAQhCktJ,EAAmBruJ,UAAUmwJ,MAAQ,SAAepqH,GAC9CjmC,KAAKw8G,SAASv2E,KAChBjmC,KAAKw8G,SAASv2E,GAAM,OAYxBsoH,EAAmBruJ,UAAU4C,QAAU,SAAiBk4E,GACtDwvE,EAAM1nJ,QAAQ9C,KAAKw8G,UAAU,SAAwBhB,GACzC,OAANA,GACFxgC,EAAGwgC,OAKT+uC,EAAOD,QAAUiE,G,6BCnDjB,IAAI+B,EAAgB,EAAQ,OACxBC,EAAc,EAAQ,MAW1BhG,EAAOD,QAAU,SAAuBuB,EAAS2E,GAC/C,OAAI3E,IAAYyE,EAAcE,GACrBD,EAAY1E,EAAS2E,GAEvBA,I,6BChBT,IAAIhG,EAAQ,EAAQ,OAChBiG,EAAgB,EAAQ,OACxBlD,EAAW,EAAQ,OACnBnqD,EAAW,EAAQ,OACnB6nD,EAAgB,EAAQ,OAK5B,SAASyF,EAA6B1qG,GAKpC,GAJIA,EAAOqlG,aACTrlG,EAAOqlG,YAAY8C,mBAGjBnoG,EAAOulG,QAAUvlG,EAAOulG,OAAOvb,QACjC,MAAM,IAAIib,EAUdV,EAAOD,QAAU,SAAyBtkG,GACxC0qG,EAA6B1qG,GAG7BA,EAAOpjD,QAAUojD,EAAOpjD,SAAW,GAGnCojD,EAAO51C,KAAOqgJ,EAAc9vJ,KAC1BqlD,EACAA,EAAO51C,KACP41C,EAAOpjD,QACPojD,EAAO2qG,kBAIT3qG,EAAOpjD,QAAU4nJ,EAAMoG,MACrB5qG,EAAOpjD,QAAQiuJ,QAAU,GACzB7qG,EAAOpjD,QAAQojD,EAAOlkD,SAAW,GACjCkkD,EAAOpjD,SAGT4nJ,EAAM1nJ,QACJ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,WAClD,SAA2BhB,UAClBkkD,EAAOpjD,QAAQd,MAI1B,IAAIgvJ,EAAU9qG,EAAO8qG,SAAW1tD,EAAS0tD,QAEzC,OAAOA,EAAQ9qG,GAAQlhD,MAAK,SAA6BvB,GAWvD,OAVAmtJ,EAA6B1qG,GAG7BziD,EAAS6M,KAAOqgJ,EAAc9vJ,KAC5BqlD,EACAziD,EAAS6M,KACT7M,EAASX,QACTojD,EAAO+qG,mBAGFxtJ,KACN,SAA4B8rG,GAe7B,OAdKk+C,EAASl+C,KACZqhD,EAA6B1qG,GAGzBqpD,GAAUA,EAAO9rG,WACnB8rG,EAAO9rG,SAAS6M,KAAOqgJ,EAAc9vJ,KACnCqlD,EACAqpD,EAAO9rG,SAAS6M,KAChBi/F,EAAO9rG,SAASX,QAChBojD,EAAO+qG,qBAKN3uJ,QAAQE,OAAO+sG,Q,6BClF1B,IAAIm7C,EAAQ,EAAQ,OAUpBD,EAAOD,QAAU,SAAqB0G,EAASC,GAE7CA,EAAUA,GAAW,GACrB,IAAIjrG,EAAS,GAEb,SAASkrG,EAAevrI,EAAQ2gD,GAC9B,OAAIkkF,EAAMvqD,cAAct6E,IAAW6kI,EAAMvqD,cAAc35B,GAC9CkkF,EAAMoG,MAAMjrI,EAAQ2gD,GAClBkkF,EAAMvqD,cAAc35B,GACtBkkF,EAAMoG,MAAM,GAAItqF,GACdkkF,EAAMn1E,QAAQ/O,GAChBA,EAAO/5B,QAET+5B,EAIT,SAAS6qF,EAAoB1wE,GAC3B,OAAK+pE,EAAM56D,YAAYqhE,EAAQxwE,IAEnB+pE,EAAM56D,YAAYohE,EAAQvwE,SAA/B,EACEywE,OAAehrH,EAAW8qH,EAAQvwE,IAFlCywE,EAAeF,EAAQvwE,GAAOwwE,EAAQxwE,IAOjD,SAAS2wE,EAAiB3wE,GACxB,IAAK+pE,EAAM56D,YAAYqhE,EAAQxwE,IAC7B,OAAOywE,OAAehrH,EAAW+qH,EAAQxwE,IAK7C,SAAS4wE,EAAiB5wE,GACxB,OAAK+pE,EAAM56D,YAAYqhE,EAAQxwE,IAEnB+pE,EAAM56D,YAAYohE,EAAQvwE,SAA/B,EACEywE,OAAehrH,EAAW8qH,EAAQvwE,IAFlCywE,OAAehrH,EAAW+qH,EAAQxwE,IAO7C,SAAS6wE,EAAgB7wE,GACvB,OAAIA,KAAQwwE,EACHC,EAAeF,EAAQvwE,GAAOwwE,EAAQxwE,IACpCA,KAAQuwE,EACVE,OAAehrH,EAAW8qH,EAAQvwE,SADpC,EAKT,IAAI8wE,EAAW,CACb,IAAOH,EACP,OAAUA,EACV,KAAQA,EACR,QAAWC,EACX,iBAAoBA,EACpB,kBAAqBA,EACrB,iBAAoBA,EACpB,QAAWA,EACX,eAAkBA,EAClB,gBAAmBA,EACnB,QAAWA,EACX,aAAgBA,EAChB,eAAkBA,EAClB,eAAkBA,EAClB,iBAAoBA,EACpB,mBAAsBA,EACtB,WAAcA,EACd,iBAAoBA,EACpB,cAAiBA,EACjB,eAAkBA,EAClB,UAAaA,EACb,UAAaA,EACb,WAAcA,EACd,YAAeA,EACf,WAAcA,EACd,iBAAoBA,EACpB,eAAkBC,GASpB,OANA9G,EAAM1nJ,QAAQvD,OAAOsD,KAAKmuJ,GAASxqJ,OAAOjH,OAAOsD,KAAKouJ,KAAW,SAA4BxwE,GAC3F,IAAImwE,EAAQW,EAAS9wE,IAAS0wE,EAC1BhvB,EAAcyuB,EAAMnwE,GACvB+pE,EAAM56D,YAAYuyC,IAAgByuB,IAAUU,IAAqBtrG,EAAOy6B,GAAQ0hD,MAG5En8E,I,6BChGT,IAAIglG,EAAa,EAAQ,OASzBT,EAAOD,QAAU,SAAgBjoJ,EAASC,EAAQiB,GAChD,IAAIiuJ,EAAiBjuJ,EAASyiD,OAAOwrG,eAChCjuJ,EAASD,QAAWkuJ,IAAkBA,EAAejuJ,EAASD,QAGjEhB,EAAO,IAAI0oJ,EACT,mCAAqCznJ,EAASD,OAC9C,CAAC0nJ,EAAW+B,gBAAiB/B,EAAWyG,kBAAkBxiJ,KAAKq2C,MAAM/hD,EAASD,OAAS,KAAO,GAC9FC,EAASyiD,OACTziD,EAASpB,QACToB,IAPFlB,EAAQkB,K,6BCZZ,IAAIinJ,EAAQ,EAAQ,OAChBpnD,EAAW,EAAQ,OAUvBmnD,EAAOD,QAAU,SAAuBl6I,EAAMxN,EAAS8uJ,GACrD,IAAIr7C,EAAUr2G,MAAQojG,EAMtB,OAJAonD,EAAM1nJ,QAAQ4uJ,GAAK,SAAmB12E,GACpC5qE,EAAO4qE,EAAGr6E,KAAK01G,EAASjmG,EAAMxN,MAGzBwN,I,6BClBT,IAAIo6I,EAAQ,EAAQ,OAChBmH,EAAsB,EAAQ,OAC9B3G,EAAa,EAAQ,OACrBD,EAAuB,EAAQ,OAC/B0C,EAAa,EAAQ,OAErBmE,EAAuB,CACzB,eAAgB,qCAGlB,SAASC,EAAsBjvJ,EAAS0B,IACjCkmJ,EAAM56D,YAAYhtF,IAAY4nJ,EAAM56D,YAAYhtF,EAAQ,mBAC3DA,EAAQ,gBAAkB0B,GAI9B,SAASwtJ,IACP,IAAIhB,EAQJ,OAP8B,qBAAnBtuJ,gBAGmB,qBAAZuvJ,SAAuE,qBAA5CxyJ,OAAOW,UAAUqO,SAAS5N,KAAKoxJ,YAD1EjB,EAAU,EAAQ,QAKbA,EAGT,SAASkB,EAAgBC,EAAUC,EAAQC,GACzC,GAAI3H,EAAMz6D,SAASkiE,GACjB,IAEE,OADCC,GAAU53I,KAAKS,OAAOk3I,GAChBzH,EAAM9uI,KAAKu2I,GAClB,MAAOvtJ,GACP,GAAe,gBAAXA,EAAE2O,KACJ,MAAM3O,EAKZ,OAAQytJ,GAAW73I,KAAKC,WAAW03I,GAGrC,IAAI7uD,EAAW,CAEbgpD,aAAcrB,EAEd+F,QAASgB,IAETnB,iBAAkB,CAAC,SAA0BvgJ,EAAMxN,GAIjD,GAHA+uJ,EAAoB/uJ,EAAS,UAC7B+uJ,EAAoB/uJ,EAAS,gBAEzB4nJ,EAAMgB,WAAWp7I,IACnBo6I,EAAM4H,cAAchiJ,IACpBo6I,EAAM6H,SAASjiJ,IACfo6I,EAAM8H,SAASliJ,IACfo6I,EAAM+H,OAAOniJ,IACbo6I,EAAMgI,OAAOpiJ,GAEb,OAAOA,EAET,GAAIo6I,EAAMiI,kBAAkBriJ,GAC1B,OAAOA,EAAKzB,OAEd,GAAI67I,EAAMkI,kBAAkBtiJ,GAE1B,OADAyhJ,EAAsBjvJ,EAAS,mDACxBwN,EAAK7B,WAGd,IAGIokJ,EAHAC,EAAkBpI,EAAMxxE,SAAS5oE,GACjCyiJ,EAAcjwJ,GAAWA,EAAQ,gBAIrC,IAAK+vJ,EAAanI,EAAMmI,WAAWviJ,KAAWwiJ,GAAmC,wBAAhBC,EAAwC,CACvG,IAAIC,EAAY9yJ,KAAKw2B,KAAOx2B,KAAKw2B,IAAIu8H,SACrC,OAAOtF,EAAWkF,EAAa,CAAC,UAAWviJ,GAAQA,EAAM0iJ,GAAa,IAAIA,GACrE,OAAIF,GAAmC,qBAAhBC,GAC5BhB,EAAsBjvJ,EAAS,oBACxBovJ,EAAgB5hJ,IAGlBA,IAGT2gJ,kBAAmB,CAAC,SAA2B3gJ,GAC7C,IAAIg8I,EAAepsJ,KAAKosJ,cAAgBhpD,EAASgpD,aAC7C0C,EAAoB1C,GAAgBA,EAAa0C,kBACjDE,EAAoB5C,GAAgBA,EAAa4C,kBACjDgE,GAAqBlE,GAA2C,SAAtB9uJ,KAAKgD,aAEnD,GAAIgwJ,GAAsBhE,GAAqBxE,EAAMz6D,SAAS3/E,IAASA,EAAK/O,OAC1E,IACE,OAAOiZ,KAAKS,MAAM3K,GAClB,MAAO1L,GACP,GAAIsuJ,EAAmB,CACrB,GAAe,gBAAXtuJ,EAAE2O,KACJ,MAAM23I,EAAWhqD,KAAKt8F,EAAGsmJ,EAAWyG,iBAAkBzxJ,KAAM,KAAMA,KAAKuD,UAEzE,MAAMmB,GAKZ,OAAO0L,IAOThN,QAAS,EAETopJ,eAAgB,aAChBE,eAAgB,eAEhBuG,kBAAmB,EACnBC,eAAgB,EAEhB18H,IAAK,CACHu8H,SAAU,EAAQ,QAGpBvB,eAAgB,SAAwBluJ,GACtC,OAAOA,GAAU,KAAOA,EAAS,KAGnCV,QAAS,CACPiuJ,OAAQ,CACN,OAAU,uCAKhBrG,EAAM1nJ,QAAQ,CAAC,SAAU,MAAO,SAAS,SAA6BhB,GACpEshG,EAASxgG,QAAQd,GAAU,MAG7B0oJ,EAAM1nJ,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+BhB,GACrEshG,EAASxgG,QAAQd,GAAU0oJ,EAAMoG,MAAMgB,MAGzCrH,EAAOD,QAAUlnD,G,uBC/IjBmnD,EAAOD,QAAU,CACfwE,mBAAmB,EACnBE,mBAAmB,EACnB3C,qBAAqB,I,UCLvB9B,EAAOD,QAAU,CACf,QAAW,W,uBCCbC,EAAOD,QAAU,SAActvE,EAAI/2E,GACjC,OAAO,WAEL,IADA,IAAImuF,EAAO,IAAI1yF,MAAM0B,UAAUC,QACtBH,EAAI,EAAGA,EAAIkxF,EAAK/wF,OAAQH,IAC/BkxF,EAAKlxF,GAAKE,UAAUF,GAEtB,OAAO85E,EAAGj3E,MAAME,EAASmuF,M,6BCN7B,IAAIo4D,EAAQ,EAAQ,OAEpB,SAASv5I,EAAOiuB,GACd,OAAOluB,mBAAmBkuB,GACxBhuB,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KAUrBq5I,EAAOD,QAAU,SAAkB3oJ,EAAK4Z,EAAQywI,GAE9C,IAAKzwI,EACH,OAAO5Z,EAGT,IAAIwxJ,EACJ,GAAInH,EACFmH,EAAmBnH,EAAiBzwI,QAC/B,GAAIivI,EAAMkI,kBAAkBn3I,GACjC43I,EAAmB53I,EAAOhN,eACrB,CACL,IAAIuvC,EAAQ,GAEZ0sG,EAAM1nJ,QAAQyY,GAAQ,SAAmB2jB,EAAKtjB,GAChC,OAARsjB,GAA+B,qBAARA,IAIvBsrH,EAAMn1E,QAAQn2C,GAChBtjB,GAAY,KAEZsjB,EAAM,CAACA,GAGTsrH,EAAM1nJ,QAAQo8B,GAAK,SAAoBt5B,GACjC4kJ,EAAM/lE,OAAO7+E,GACfA,EAAIA,EAAEsqF,cACGs6D,EAAMxxE,SAASpzE,KACxBA,EAAI0U,KAAKC,UAAU3U,IAErBk4C,EAAM93C,KAAKiL,EAAO2K,GAAO,IAAM3K,EAAOrL,WAI1CutJ,EAAmBr1G,EAAM93B,KAAK,KAGhC,GAAImtI,EAAkB,CACpB,IAAIC,EAAgBzxJ,EAAIuZ,QAAQ,MACT,IAAnBk4I,IACFzxJ,EAAMA,EAAI4qC,MAAM,EAAG6mH,IAGrBzxJ,KAA8B,IAAtBA,EAAIuZ,QAAQ,KAAc,IAAM,KAAOi4I,EAGjD,OAAOxxJ,I,sBC3DT4oJ,EAAOD,QAAU,SAAqBuB,EAASwH,GAC7C,OAAOA,EACHxH,EAAQ36I,QAAQ,OAAQ,IAAM,IAAMmiJ,EAAYniJ,QAAQ,OAAQ,IAChE26I,I,4BCVN,IAAIrB,EAAQ,EAAQ,OAEpBD,EAAOD,QACLE,EAAMiB,uBAGJ,WACE,MAAO,CACL6H,MAAO,SAAejgJ,EAAM/O,EAAOgxC,EAAS83C,EAAMlH,EAAQqtE,GACxD,IAAI39G,EAAS,GACbA,EAAO5vC,KAAKqN,EAAO,IAAMrC,mBAAmB1M,IAExCkmJ,EAAMx6D,SAAS16C,IACjBM,EAAO5vC,KAAK,WAAa,IAAIwoB,KAAK8mB,GAASk+G,eAGzChJ,EAAMz6D,SAAS3C,IACjBx3C,EAAO5vC,KAAK,QAAUonF,GAGpBo9D,EAAMz6D,SAAS7J,IACjBtwC,EAAO5vC,KAAK,UAAYkgF,IAGX,IAAXqtE,GACF39G,EAAO5vC,KAAK,UAGd2vC,SAASC,OAASA,EAAO5vB,KAAK,OAGhCymI,KAAM,SAAcp5I,GAClB,IAAIo8B,EAAQkG,SAASC,OAAOnG,MAAM,IAAIlzB,OAAO,aAAelJ,EAAO,cACnE,OAAQo8B,EAAQj0B,mBAAmBi0B,EAAM,IAAM,MAGjD00F,OAAQ,SAAgB9wH,GACtBrT,KAAKszJ,MAAMjgJ,EAAM,GAAImb,KAAKkC,MAAQ,SA/BxC,GAqCA,WACE,MAAO,CACL4iI,MAAO,aACP7G,KAAM,WAAkB,OAAO,MAC/BtoB,OAAQ,cAJZ,I,uBCrCJomB,EAAOD,QAAU,SAAuB3oJ,GAItC,MAAO,8BAA8B2N,KAAK3N,K,6BCV5C,IAAI6oJ,EAAQ,EAAQ,OAQpBD,EAAOD,QAAU,SAAsB/iI,GACrC,OAAOijI,EAAMxxE,SAASzxD,KAAsC,IAAzBA,EAAQsmI,e,6BCT7C,IAAIrD,EAAQ,EAAQ,OAEpBD,EAAOD,QACLE,EAAMiB,uBAIJ,WACE,IAEIgI,EAFArzG,EAAO,kBAAkB9wC,KAAKstC,UAAUuD,WACxCuzG,EAAiB/9G,SAAS40B,cAAc,KAS5C,SAASopF,EAAWhyJ,GAClB,IAAIs9C,EAAOt9C,EAWX,OATIy+C,IAEFszG,EAAe9oF,aAAa,OAAQ3rB,GACpCA,EAAOy0G,EAAez0G,MAGxBy0G,EAAe9oF,aAAa,OAAQ3rB,GAG7B,CACLA,KAAMy0G,EAAez0G,KACrB6jC,SAAU4wE,EAAe5wE,SAAW4wE,EAAe5wE,SAAS5xE,QAAQ,KAAM,IAAM,GAChF2yB,KAAM6vH,EAAe7vH,KACrB5oB,OAAQy4I,EAAez4I,OAASy4I,EAAez4I,OAAO/J,QAAQ,MAAO,IAAM,GAC3E0S,KAAM8vI,EAAe9vI,KAAO8vI,EAAe9vI,KAAK1S,QAAQ,KAAM,IAAM,GACpE0iJ,SAAUF,EAAeE,SACzB7wE,KAAM2wE,EAAe3wE,KACrBtkC,SAAiD,MAAtCi1G,EAAej1G,SAAS3I,OAAO,GACxC49G,EAAej1G,SACf,IAAMi1G,EAAej1G,UAY3B,OARAg1G,EAAYE,EAAWxvI,OAAOk6B,SAASY,MAQhC,SAAyB40G,GAC9B,IAAIC,EAAUtJ,EAAMz6D,SAAS8jE,GAAeF,EAAWE,GAAcA,EACrE,OAAQC,EAAOhxE,WAAa2wE,EAAU3wE,UAClCgxE,EAAOjwH,OAAS4vH,EAAU5vH,MAhDlC,GAqDA,WACE,OAAO,WACL,OAAO,GAFX,I,6BC5DJ,IAAI2mH,EAAQ,EAAQ,OAEpBD,EAAOD,QAAU,SAA6B1nJ,EAASmxJ,GACrDvJ,EAAM1nJ,QAAQF,GAAS,SAAuB0B,EAAO+O,GAC/CA,IAAS0gJ,GAAkB1gJ,EAAK27C,gBAAkB+kG,EAAe/kG,gBACnEpsD,EAAQmxJ,GAAkBzvJ,SACnB1B,EAAQyQ,S,UCPrBk3I,EAAOD,QAAU,M,6BCCjB,IAAIE,EAAQ,EAAQ,OAIhBwJ,EAAoB,CACtB,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,cAgB5BzJ,EAAOD,QAAU,SAAsB1nJ,GACrC,IACIgZ,EACAsjB,EACAh+B,EAHA4yJ,EAAS,GAKb,OAAKlxJ,GAEL4nJ,EAAM1nJ,QAAQF,EAAQwU,MAAM,OAAO,SAAgBw6F,GAKjD,GAJA1wG,EAAI0wG,EAAK12F,QAAQ,KACjBU,EAAM4uI,EAAM9uI,KAAKk2F,EAAK5wB,OAAO,EAAG9/E,IAAIszB,cACpC0K,EAAMsrH,EAAM9uI,KAAKk2F,EAAK5wB,OAAO9/E,EAAI,IAE7B0a,EAAK,CACP,GAAIk4I,EAAOl4I,IAAQo4I,EAAkB94I,QAAQU,IAAQ,EACnD,OAGAk4I,EAAOl4I,GADG,eAARA,GACak4I,EAAOl4I,GAAOk4I,EAAOl4I,GAAO,IAAIpV,OAAO,CAAC04B,IAEzC40H,EAAOl4I,GAAOk4I,EAAOl4I,GAAO,KAAOsjB,EAAMA,MAKtD40H,GAnBgBA,I,uBC9BzBvJ,EAAOD,QAAU,SAAuB3oJ,GACtC,IAAI8tC,EAAQ,4BAA4Bp1B,KAAK1Y,GAC7C,OAAO8tC,GAASA,EAAM,IAAM,K,sBCkB9B86G,EAAOD,QAAU,SAAgBj4H,GAC/B,OAAO,SAAcvW,GACnB,OAAOuW,EAAStuB,MAAM,KAAM+X,M,6BCtBhC,IAAI0uI,EAAQ,EAAQ,OASpB,SAASiD,EAAW3yI,EAAKm5I,GAEvBA,EAAWA,GAAY,IAAIlB,SAE3B,IAAI/5D,EAAQ,GAEZ,SAASk7D,EAAa5vJ,GACpB,OAAc,OAAVA,EAAuB,GAEvBkmJ,EAAM/lE,OAAOngF,GACRA,EAAM4rF,cAGXs6D,EAAM4H,cAAc9tJ,IAAUkmJ,EAAM2J,aAAa7vJ,GAC5B,oBAAT+3H,KAAsB,IAAIA,KAAK,CAAC/3H,IAAU8vJ,OAAOpzD,KAAK18F,GAG/DA,EAGT,SAASi7I,EAAMnvI,EAAMikJ,GACnB,GAAI7J,EAAMvqD,cAAc7vF,IAASo6I,EAAMn1E,QAAQjlE,GAAO,CACpD,IAA6B,IAAzB4oF,EAAM99E,QAAQ9K,GAChB,MAAMxP,MAAM,kCAAoCyzJ,GAGlDr7D,EAAMhzF,KAAKoK,GAEXo6I,EAAM1nJ,QAAQsN,GAAM,SAAc9L,EAAOsX,GACvC,IAAI4uI,EAAM56D,YAAYtrF,GAAtB,CACA,IACIwX,EADAw4I,EAAUD,EAAYA,EAAY,IAAMz4I,EAAMA,EAGlD,GAAItX,IAAU+vJ,GAA8B,kBAAV/vJ,EAChC,GAAIkmJ,EAAMrvI,SAASS,EAAK,MAEtBtX,EAAQgW,KAAKC,UAAUjW,QAClB,GAAIkmJ,EAAMrvI,SAASS,EAAK,QAAUE,EAAM0uI,EAAM+J,QAAQjwJ,IAK3D,YAHAwX,EAAIhZ,SAAQ,SAAS0xJ,IAClBhK,EAAM56D,YAAY4kE,IAAOP,EAAS92G,OAAOm3G,EAASJ,EAAaM,OAMtEjV,EAAMj7I,EAAOgwJ,OAGft7D,EAAMjzF,WAENkuJ,EAAS92G,OAAOk3G,EAAWH,EAAa9jJ,IAM5C,OAFAmvI,EAAMzkI,GAECm5I,EAGT1J,EAAOD,QAAUmD,G,6BCrEjB,IAAID,EAAU,iBACVxC,EAAa,EAAQ,OAErB0D,EAAa,GAGjB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAU5rJ,SAAQ,SAASoqB,EAAMhsB,GACrFwtJ,EAAWxhI,GAAQ,SAAmB+rD,GACpC,cAAcA,IAAU/rD,GAAQ,KAAOhsB,EAAI,EAAI,KAAO,KAAOgsB,MAIjE,IAAIunI,EAAqB,GA6CzB,SAAS5F,EAAcjtJ,EAAS8yJ,EAAQC,GACtC,GAAuB,kBAAZ/yJ,EACT,MAAM,IAAIopJ,EAAW,4BAA6BA,EAAW4J,sBAE/D,IAAI/xJ,EAAOtD,OAAOsD,KAAKjB,GACnBV,EAAI2B,EAAKxB,OACb,MAAOH,KAAM,EAAG,CACd,IAAI2zJ,EAAMhyJ,EAAK3B,GACXutJ,EAAYiG,EAAOG,GACvB,GAAIpG,EAAJ,CACE,IAAInqJ,EAAQ1C,EAAQizJ,GAChBjwJ,OAAmBshC,IAAV5hC,GAAuBmqJ,EAAUnqJ,EAAOuwJ,EAAKjzJ,GAC1D,IAAe,IAAXgD,EACF,MAAM,IAAIomJ,EAAW,UAAY6J,EAAM,YAAcjwJ,EAAQomJ,EAAW4J,2BAI5E,IAAqB,IAAjBD,EACF,MAAM,IAAI3J,EAAW,kBAAoB6J,EAAK7J,EAAW8J,iBAtD/DpG,EAAWtC,aAAe,SAAsBqC,EAAWloI,EAAS6F,GAClE,SAAS2oI,EAAcF,EAAK9hJ,GAC1B,MAAO,WAAay6I,EAAU,0BAA6BqH,EAAM,IAAO9hJ,GAAQqZ,EAAU,KAAOA,EAAU,IAI7G,OAAO,SAAS9nB,EAAOuwJ,EAAKG,GAC1B,IAAkB,IAAdvG,EACF,MAAM,IAAIzD,EACR+J,EAAcF,EAAK,qBAAuBtuI,EAAU,OAASA,EAAU,KACvEykI,EAAWiK,gBAef,OAXI1uI,IAAYkuI,EAAmBI,KACjCJ,EAAmBI,IAAO,EAE1Bl+E,QAAQu+E,KACNH,EACEF,EACA,+BAAiCtuI,EAAU,8CAK1CkoI,GAAYA,EAAUnqJ,EAAOuwJ,EAAKG,KAkC7CzK,EAAOD,QAAU,CACfuE,cAAeA,EACfH,WAAYA,I,6BClFd,IAAIrrG,EAAO,EAAQ,OAIf90C,EAAWhP,OAAOW,UAAUqO,SAG5B4mJ,EAAS,SAAU1sI,GAErB,OAAO,SAASwwD,GACd,IAAIt+D,EAAMpM,EAAS5N,KAAKs4E,GACxB,OAAOxwD,EAAM9N,KAAS8N,EAAM9N,GAAOA,EAAI4xB,MAAM,GAAI,GAAG/X,gBAJ3C,CAMVj1B,OAAOY,OAAO,OAEjB,SAASi1J,EAAWloI,GAElB,OADAA,EAAOA,EAAKsH,cACL,SAAkBykD,GACvB,OAAOk8E,EAAOl8E,KAAW/rD,GAU7B,SAASmoD,EAAQn2C,GACf,OAAOx/B,MAAM21E,QAAQn2C,GASvB,SAAS0wD,EAAY1wD,GACnB,MAAsB,qBAARA,EAShB,SAASmzH,EAASnzH,GAChB,OAAe,OAARA,IAAiB0wD,EAAY1wD,IAA4B,OAApBA,EAAIj/B,cAAyB2vF,EAAY1wD,EAAIj/B,cAChD,oBAA7Bi/B,EAAIj/B,YAAYoyJ,UAA2BnzH,EAAIj/B,YAAYoyJ,SAASnzH,GAUlF,IAAIkzH,EAAgBgD,EAAW,eAS/B,SAAS3C,EAAkBvzH,GACzB,IAAIt6B,EAMJ,OAJEA,EAD0B,qBAAhByL,aAAiCA,YAAkB,OACpDA,YAAYglJ,OAAOn2H,GAEnB,GAAUA,EAAU,QAAMkzH,EAAclzH,EAAIvwB,QAEhD/J,EAST,SAASmrF,EAAS7wD,GAChB,MAAsB,kBAARA,EAShB,SAAS8wD,EAAS9wD,GAChB,MAAsB,kBAARA,EAShB,SAAS85C,EAAS95C,GAChB,OAAe,OAARA,GAA+B,kBAARA,EAShC,SAAS+gE,EAAc/gE,GACrB,GAAoB,WAAhBi2H,EAAOj2H,GACT,OAAO,EAGT,IAAIh/B,EAAYX,OAAO+1J,eAAep2H,GACtC,OAAqB,OAAdh/B,GAAsBA,IAAcX,OAAOW,UAUpD,IAAIukF,EAAS2wE,EAAW,QASpB7C,EAAS6C,EAAW,QASpB5C,EAAS4C,EAAW,QASpBzC,EAAayC,EAAW,YAQ5B,SAAStlE,EAAW5wD,GAClB,MAA8B,sBAAvB3wB,EAAS5N,KAAKu+B,GASvB,SAASozH,EAASpzH,GAChB,OAAO85C,EAAS95C,IAAQ4wD,EAAW5wD,EAAIq2H,MASzC,SAAS/J,EAAWvyE,GAClB,IAAI58D,EAAU,oBACd,OAAO48D,IACgB,oBAAb85E,UAA2B95E,aAAiB85E,UACpDxkJ,EAAS5N,KAAKs4E,KAAW58D,GACxByzE,EAAW7W,EAAM1qE,WAAa0qE,EAAM1qE,aAAe8N,GAUxD,IAAIq2I,EAAoB0C,EAAW,mBAQnC,SAAS15I,EAAKf,GACZ,OAAOA,EAAIe,KAAOf,EAAIe,OAASf,EAAIzJ,QAAQ,aAAc,IAkB3D,SAASu6I,IACP,OAAyB,qBAAd7uG,WAAoD,gBAAtBA,UAAU47C,SACY,iBAAtB57C,UAAU47C,SACY,OAAtB57C,UAAU47C,WAI/B,qBAAXr0E,QACa,qBAAbwxB,UAgBX,SAAS7yC,EAAQgY,EAAKkgE,GAEpB,GAAY,OAARlgE,GAA+B,qBAARA,EAU3B,GALmB,kBAARA,IAETA,EAAM,CAACA,IAGLu6D,EAAQv6D,GAEV,IAAK,IAAI5Z,EAAI,EAAG8sJ,EAAIlzI,EAAIzZ,OAAQH,EAAI8sJ,EAAG9sJ,IACrC85E,EAAGr6E,KAAK,KAAMma,EAAI5Z,GAAIA,EAAG4Z,QAI3B,IAAK,IAAIc,KAAOd,EACVvb,OAAOW,UAAUJ,eAAea,KAAKma,EAAKc,IAC5Co/D,EAAGr6E,KAAK,KAAMma,EAAIc,GAAMA,EAAKd,GAuBrC,SAAS81I,IACP,IAAIhsJ,EAAS,GACb,SAAS4wJ,EAAYt2H,EAAKtjB,GACpBqkF,EAAcr7F,EAAOgX,KAASqkF,EAAc/gE,GAC9Ct6B,EAAOgX,GAAOg1I,EAAMhsJ,EAAOgX,GAAMsjB,GACxB+gE,EAAc/gE,GACvBt6B,EAAOgX,GAAOg1I,EAAM,GAAI1xH,GACfm2C,EAAQn2C,GACjBt6B,EAAOgX,GAAOsjB,EAAIqN,QAElB3nC,EAAOgX,GAAOsjB,EAIlB,IAAK,IAAIh+B,EAAI,EAAG8sJ,EAAI5sJ,UAAUC,OAAQH,EAAI8sJ,EAAG9sJ,IAC3C4B,EAAQ1B,UAAUF,GAAIs0J,GAExB,OAAO5wJ,EAWT,SAASuoJ,EAAOvmJ,EAAGhH,EAAGqE,GAQpB,OAPAnB,EAAQlD,GAAG,SAAqBs/B,EAAKtjB,GAEjChV,EAAEgV,GADA3X,GAA0B,oBAARi7B,EACXmkB,EAAKnkB,EAAKj7B,GAEVi7B,KAGNt4B,EAST,SAAS6uJ,EAASj0J,GAIhB,OAH8B,QAA1BA,EAAQsO,WAAW,KACrBtO,EAAUA,EAAQ+qC,MAAM,IAEnB/qC,EAWT,SAAS6sJ,EAASpuJ,EAAay1J,EAAkBjgC,EAAOs6B,GACtD9vJ,EAAYC,UAAYX,OAAOY,OAAOu1J,EAAiBx1J,UAAW6vJ,GAClE9vJ,EAAYC,UAAUD,YAAcA,EACpCw1H,GAASl2H,OAAOwB,OAAOd,EAAYC,UAAWu1H,GAWhD,SAAS06B,EAAawF,EAAWC,EAAS15I,GACxC,IAAIu5G,EACAv0H,EACAu/E,EACAo1E,EAAS,GAEbD,EAAUA,GAAW,GAErB,EAAG,CACDngC,EAAQl2H,OAAOu2J,oBAAoBH,GACnCz0J,EAAIu0H,EAAMp0H,OACV,MAAOH,KAAM,EACXu/E,EAAOg1C,EAAMv0H,GACR20J,EAAOp1E,KACVm1E,EAAQn1E,GAAQk1E,EAAUl1E,GAC1Bo1E,EAAOp1E,IAAQ,GAGnBk1E,EAAYp2J,OAAO+1J,eAAeK,SAC3BA,KAAez5I,GAAUA,EAAOy5I,EAAWC,KAAaD,IAAcp2J,OAAOW,WAEtF,OAAO01J,EAUT,SAASz6I,EAASR,EAAKo7I,EAAcrrF,GACnC/vD,EAAMhK,OAAOgK,SACIurB,IAAbwkC,GAA0BA,EAAW/vD,EAAItZ,UAC3CqpE,EAAW/vD,EAAItZ,QAEjBqpE,GAAYqrF,EAAa10J,OACzB,IAAI20J,EAAYr7I,EAAIO,QAAQ66I,EAAcrrF,GAC1C,OAAsB,IAAfsrF,GAAoBA,IAActrF,EAS3C,SAAS6pF,EAAQt7E,GACf,IAAKA,EAAO,OAAO,KACnB,IAAI/3E,EAAI+3E,EAAM53E,OACd,GAAIuuF,EAAY1uF,GAAI,OAAO,KAC3B,IAAI4a,EAAM,IAAIpc,MAAMwB,GACpB,MAAOA,KAAM,EACX4a,EAAI5a,GAAK+3E,EAAM/3E,GAEjB,OAAO4a,EAIT,IAAIq4I,EAAe,SAAU8B,GAE3B,OAAO,SAASh9E,GACd,OAAOg9E,GAAch9E,aAAiBg9E,GAHvB,CAKM,qBAAfrnJ,YAA8BrP,OAAO+1J,eAAe1mJ,aAE9D27I,EAAOD,QAAU,CACfj1E,QAASA,EACT+8E,cAAeA,EACfC,SAAUA,EACV7G,WAAYA,EACZiH,kBAAmBA,EACnB1iE,SAAUA,EACVC,SAAUA,EACVhX,SAAUA,EACVinB,cAAeA,EACfrQ,YAAaA,EACbnL,OAAQA,EACR8tE,OAAQA,EACRC,OAAQA,EACR1iE,WAAYA,EACZwiE,SAAUA,EACVI,kBAAmBA,EACnBjH,qBAAsBA,EACtB3oJ,QAASA,EACT8tJ,MAAOA,EACPzD,OAAQA,EACRzxI,KAAMA,EACN+5I,SAAUA,EACVpH,SAAUA,EACV8B,aAAcA,EACdgF,OAAQA,EACRC,WAAYA,EACZj6I,SAAUA,EACVo5I,QAASA,EACTJ,aAAcA,EACdxB,WAAYA,I,gBCpdd,IAAIuD,EAAa,EAAQ,OACrBC,EAAc,EAAQ,OAEtBC,EAAatwJ,UAGjBykJ,EAAOD,QAAU,SAAU+L,GACzB,GAAIH,EAAWG,GAAW,OAAOA,EACjC,MAAMD,EAAWD,EAAYE,GAAY,wB,gBCR3C,IAAIC,EAAgB,EAAQ,MACxBH,EAAc,EAAQ,OAEtBC,EAAatwJ,UAGjBykJ,EAAOD,QAAU,SAAU+L,GACzB,GAAIC,EAAcD,GAAW,OAAOA,EACpC,MAAMD,EAAWD,EAAYE,GAAY,2B,gBCR3C,IAAIH,EAAa,EAAQ,OAErBK,EAAU5lJ,OACVylJ,EAAatwJ,UAEjBykJ,EAAOD,QAAU,SAAU+L,GACzB,GAAuB,iBAAZA,GAAwBH,EAAWG,GAAW,OAAOA,EAChE,MAAMD,EAAW,aAAeG,EAAQF,GAAY,qB,gBCPtD,IAAIG,EAAkB,EAAQ,MAC1Br2J,EAAS,EAAQ,OACjBiuC,EAAiB,UAEjBqoH,EAAcD,EAAgB,eAC9BE,EAAiBh3J,MAAMQ,eAIQgmC,GAA/BwwH,EAAeD,IACjBroH,EAAesoH,EAAgBD,EAAa,CAC1CnoH,cAAc,EACdhqC,MAAOnE,EAAO,QAKlBoqJ,EAAOD,QAAU,SAAU1uI,GACzB86I,EAAeD,GAAa76I,IAAO,I,6BCjBrC,IAAIk6B,EAAS,gBAIby0G,EAAOD,QAAU,SAAUqM,EAAGrkH,EAAOskH,GACnC,OAAOtkH,GAASskH,EAAU9gH,EAAO6gH,EAAGrkH,GAAOjxC,OAAS,K,gBCNtD,IAAIw1J,EAAgB,EAAQ,OAExBT,EAAatwJ,UAEjBykJ,EAAOD,QAAU,SAAUwM,EAAI/R,GAC7B,GAAI8R,EAAc9R,EAAW+R,GAAK,OAAOA,EACzC,MAAMV,EAAW,0B,gBCNnB,IAAIp9E,EAAW,EAAQ,OAEnBu9E,EAAU5lJ,OACVylJ,EAAatwJ,UAGjBykJ,EAAOD,QAAU,SAAU+L,GACzB,GAAIr9E,EAASq9E,GAAW,OAAOA,EAC/B,MAAMD,EAAWG,EAAQF,GAAY,uB,eCPvC,IAAIU,EAAQ,EAAQ,OAEpBxM,EAAOD,QAAUyM,GAAM,WACrB,GAA0B,mBAAf1mJ,YAA2B,CACpC,IAAI1B,EAAS,IAAI0B,YAAY,GAEzB9Q,OAAOy3J,aAAaroJ,IAASpP,OAAO6uC,eAAez/B,EAAQ,IAAK,CAAErK,MAAO,S,6BCNjF,IAAI87B,EAAW,EAAQ,OACnB62H,EAAkB,EAAQ,OAC1BC,EAAoB,EAAQ,OAIhC3M,EAAOD,QAAU,SAAchmJ,GAC7B,IAAI6yJ,EAAI/2H,EAASpgC,MACbqB,EAAS61J,EAAkBC,GAC3BC,EAAkBh2J,UAAUC,OAC5BixC,EAAQ2kH,EAAgBG,EAAkB,EAAIh2J,UAAU,QAAK8kC,EAAW7kC,GACxE+lF,EAAMgwE,EAAkB,EAAIh2J,UAAU,QAAK8kC,EAC3CmxH,OAAiBnxH,IAARkhD,EAAoB/lF,EAAS41J,EAAgB7vE,EAAK/lF,GAC/D,MAAOg2J,EAAS/kH,EAAO6kH,EAAE7kH,KAAWhuC,EACpC,OAAO6yJ,I,6BCdT,IAAIG,EAAW,iBACXC,EAAsB,EAAQ,MAE9BC,EAAgBD,EAAoB,WAIxChN,EAAOD,QAAWkN,EAGd,GAAG10J,QAH2B,SAAiB48F,GACjD,OAAO43D,EAASt3J,KAAM0/F,EAAYt+F,UAAUC,OAAS,EAAID,UAAU,QAAK8kC,K,6BCR1E,IAAImd,EAAO,EAAQ,OACf1iD,EAAO,EAAQ,OACfy/B,EAAW,EAAQ,OACnBq3H,EAA+B,EAAQ,OACvCC,EAAwB,EAAQ,OAChCpB,EAAgB,EAAQ,MACxBY,EAAoB,EAAQ,OAC5BS,EAAiB,EAAQ,OACzBC,EAAc,EAAQ,OACtBC,EAAoB,EAAQ,OAE5BC,EAASp4J,MAIb6qJ,EAAOD,QAAU,SAAcyN,GAC7B,IAAIZ,EAAI/2H,EAAS23H,GACbC,EAAiB1B,EAAct2J,MAC/Bo3J,EAAkBh2J,UAAUC,OAC5B42J,EAAQb,EAAkB,EAAIh2J,UAAU,QAAK8kC,EAC7CgyH,OAAoBhyH,IAAV+xH,EACVC,IAASD,EAAQ50G,EAAK40G,EAAOb,EAAkB,EAAIh2J,UAAU,QAAK8kC,IACtE,IAEI7kC,EAAQuD,EAAQJ,EAAMmB,EAAUlB,EAAMH,EAFtC6zJ,EAAiBN,EAAkBV,GACnC7kH,EAAQ,EAGZ,IAAI6lH,GAAoBn4J,OAAS83J,GAAUJ,EAAsBS,GAW/D,IAFA92J,EAAS61J,EAAkBC,GAC3BvyJ,EAASozJ,EAAiB,IAAIh4J,KAAKqB,GAAUy2J,EAAOz2J,GAC9CA,EAASixC,EAAOA,IACpBhuC,EAAQ4zJ,EAAUD,EAAMd,EAAE7kH,GAAQA,GAAS6kH,EAAE7kH,GAC7CqlH,EAAe/yJ,EAAQ0tC,EAAOhuC,QAThC,IAHAqB,EAAWiyJ,EAAYT,EAAGgB,GAC1B1zJ,EAAOkB,EAASlB,KAChBG,EAASozJ,EAAiB,IAAIh4J,KAAS,KAC/BwE,EAAO7D,EAAK8D,EAAMkB,IAAWd,KAAMytC,IACzChuC,EAAQ4zJ,EAAUT,EAA6B9xJ,EAAUsyJ,EAAO,CAACzzJ,EAAKF,MAAOguC,IAAQ,GAAQ9tC,EAAKF,MAClGqzJ,EAAe/yJ,EAAQ0tC,EAAOhuC,GAWlC,OADAM,EAAOvD,OAASixC,EACT1tC,I,gBC5CT,IAAIwzJ,EAAkB,EAAQ,OAC1BnB,EAAkB,EAAQ,OAC1BC,EAAoB,EAAQ,OAG5BmB,EAAe,SAAUC,GAC3B,OAAO,SAAUC,EAAO/D,EAAIzzD,GAC1B,IAGIz8F,EAHA6yJ,EAAIiB,EAAgBG,GACpBl3J,EAAS61J,EAAkBC,GAC3B7kH,EAAQ2kH,EAAgBl2D,EAAW1/F,GAIvC,GAAIi3J,GAAe9D,GAAMA,GAAI,MAAOnzJ,EAASixC,EAG3C,GAFAhuC,EAAQ6yJ,EAAE7kH,KAENhuC,GAASA,EAAO,OAAO,OAEtB,KAAMjD,EAASixC,EAAOA,IAC3B,IAAKgmH,GAAehmH,KAAS6kH,IAAMA,EAAE7kH,KAAWkiH,EAAI,OAAO8D,GAAehmH,GAAS,EACnF,OAAQgmH,IAAgB,IAI9B/N,EAAOD,QAAU,CAGfzxE,SAAUw/E,GAAa,GAGvBn9I,QAASm9I,GAAa,K,gBC9BxB,IAAIh1G,EAAO,EAAQ,OACfm1G,EAAc,EAAQ,MACtBC,EAAgB,EAAQ,OACxBr4H,EAAW,EAAQ,OACnB82H,EAAoB,EAAQ,OAC5BwB,EAAqB,EAAQ,OAE7B1yJ,EAAOwyJ,EAAY,GAAGxyJ,MAGtBqyJ,EAAe,SAAUM,GAC3B,IAAIC,EAAiB,GAARD,EACTE,EAAoB,GAARF,EACZG,EAAkB,GAARH,EACVI,EAAmB,GAARJ,EACXK,EAAwB,GAARL,EAChBM,EAA2B,GAARN,EACnBO,EAAmB,GAARP,GAAaK,EAC5B,OAAO,SAAUT,EAAO74D,EAAY2X,EAAM8hD,GASxC,IARA,IAOI70J,EAAOM,EAPPuyJ,EAAI/2H,EAASm4H,GACb7gF,EAAO+gF,EAActB,GACrBiC,EAAgB/1G,EAAKq8C,EAAY2X,GACjCh2G,EAAS61J,EAAkBx/E,GAC3BplC,EAAQ,EACRnyC,EAASg5J,GAAkBT,EAC3B/yI,EAASizI,EAASz4J,EAAOo4J,EAAOl3J,GAAUw3J,GAAaI,EAAmB94J,EAAOo4J,EAAO,QAAKryH,EAE3F7kC,EAASixC,EAAOA,IAAS,IAAI4mH,GAAY5mH,KAASolC,KACtDpzE,EAAQozE,EAAKplC,GACb1tC,EAASw0J,EAAc90J,EAAOguC,EAAO6kH,GACjCwB,GACF,GAAIC,EAAQjzI,EAAO2sB,GAAS1tC,OACvB,GAAIA,EAAQ,OAAQ+zJ,GACvB,KAAK,EAAG,OAAO,EACf,KAAK,EAAG,OAAOr0J,EACf,KAAK,EAAG,OAAOguC,EACf,KAAK,EAAGtsC,EAAK2f,EAAQrhB,QAChB,OAAQq0J,GACb,KAAK,EAAG,OAAO,EACf,KAAK,EAAG3yJ,EAAK2f,EAAQrhB,GAI3B,OAAO00J,GAAiB,EAAIF,GAAWC,EAAWA,EAAWpzI,IAIjE4kI,EAAOD,QAAU,CAGfxnJ,QAASu1J,EAAa,GAGtBt8I,IAAKs8I,EAAa,GAGlBn8I,OAAQm8I,EAAa,GAGrB/kI,KAAM+kI,EAAa,GAGnBt6H,MAAOs6H,EAAa,GAGpB/vI,KAAM+vI,EAAa,GAGnBgB,UAAWhB,EAAa,GAGxBiB,aAAcjB,EAAa,K,6BCrE7B,IAAIt0J,EAAQ,EAAQ,OAChBq0J,EAAkB,EAAQ,OAC1BmB,EAAsB,EAAQ,OAC9BrC,EAAoB,EAAQ,OAC5BK,EAAsB,EAAQ,MAE9BhyG,EAAMt2C,KAAKs2C,IACXi0G,EAAe,GAAGp+I,YAClBq+I,IAAkBD,GAAgB,EAAI,CAAC,GAAGp+I,YAAY,GAAI,GAAK,EAC/Do8I,EAAgBD,EAAoB,eACpCmC,EAASD,IAAkBjC,EAI/BjN,EAAOD,QAAUoP,EAAS,SAAqB54D,GAE7C,GAAI24D,EAAe,OAAO11J,EAAMy1J,EAAcx5J,KAAMoB,YAAc,EAClE,IAAI+1J,EAAIiB,EAAgBp4J,MACpBqB,EAAS61J,EAAkBC,GAC3B7kH,EAAQjxC,EAAS,EAGrB,IAFID,UAAUC,OAAS,IAAGixC,EAAQiT,EAAIjT,EAAOinH,EAAoBn4J,UAAU,MACvEkxC,EAAQ,IAAGA,EAAQjxC,EAASixC,GAC1BA,GAAS,EAAGA,IAAS,GAAIA,KAAS6kH,GAAKA,EAAE7kH,KAAWwuD,EAAe,OAAOxuD,GAAS,EACzF,OAAQ,GACNknH,G,gBC1BJ,IAAIzC,EAAQ,EAAQ,OAChBP,EAAkB,EAAQ,MAC1BmD,EAAa,EAAQ,MAErBC,EAAUpD,EAAgB,WAE9BjM,EAAOD,QAAU,SAAUuP,GAIzB,OAAOF,GAAc,KAAO5C,GAAM,WAChC,IAAI93H,EAAQ,GACRh/B,EAAcg/B,EAAMh/B,YAAc,GAItC,OAHAA,EAAY25J,GAAW,WACrB,MAAO,CAAEE,IAAK,IAE2B,IAApC76H,EAAM46H,GAAaviE,SAASwiE,S,4BCfvC,IAAI/C,EAAQ,EAAQ,OAEpBxM,EAAOD,QAAU,SAAUuP,EAAaxD,GACtC,IAAIv0J,EAAS,GAAG+3J,GAChB,QAAS/3J,GAAUi1J,GAAM,WAEvBj1J,EAAOnB,KAAK,KAAM01J,GAAY,WAAc,OAAO,GAAM,Q,gBCP7D,IAAI0D,EAAY,EAAQ,OACpB35H,EAAW,EAAQ,OACnBq4H,EAAgB,EAAQ,OACxBvB,EAAoB,EAAQ,OAE5Bd,EAAatwJ,UAGbuyJ,EAAe,SAAU2B,GAC3B,OAAO,SAAU3iD,EAAM3X,EAAY03D,EAAiB6C,GAClDF,EAAUr6D,GACV,IAAIy3D,EAAI/2H,EAASi3E,GACb3/B,EAAO+gF,EAActB,GACrB91J,EAAS61J,EAAkBC,GAC3B7kH,EAAQ0nH,EAAW34J,EAAS,EAAI,EAChCH,EAAI84J,GAAY,EAAI,EACxB,GAAI5C,EAAkB,EAAG,MAAO,EAAM,CACpC,GAAI9kH,KAASolC,EAAM,CACjBuiF,EAAOviF,EAAKplC,GACZA,GAASpxC,EACT,MAGF,GADAoxC,GAASpxC,EACL84J,EAAW1nH,EAAQ,EAAIjxC,GAAUixC,EACnC,MAAM8jH,EAAW,+CAGrB,KAAM4D,EAAW1nH,GAAS,EAAIjxC,EAASixC,EAAOA,GAASpxC,EAAOoxC,KAASolC,IACrEuiF,EAAOv6D,EAAWu6D,EAAMviF,EAAKplC,GAAQA,EAAO6kH,IAE9C,OAAO8C,IAIX1P,EAAOD,QAAU,CAGf1qF,KAAMy4F,GAAa,GAGnBnoD,MAAOmoD,GAAa,K,gBCxCtB,IAAIpB,EAAkB,EAAQ,OAC1BC,EAAoB,EAAQ,OAC5BS,EAAiB,EAAQ,OAEzBG,EAASp4J,MACTmgE,EAAM5wD,KAAK4wD,IAEf0qF,EAAOD,QAAU,SAAU6M,EAAGhwE,EAAOC,GAKnC,IAJA,IAAI/lF,EAAS61J,EAAkBC,GAC3BxwJ,EAAIswJ,EAAgB9vE,EAAO9lF,GAC3B64J,EAAMjD,OAAwB/wH,IAARkhD,EAAoB/lF,EAAS+lF,EAAK/lF,GACxDuD,EAASkzJ,EAAOj4F,EAAIq6F,EAAMvzJ,EAAG,IACxBxF,EAAI,EAAGwF,EAAIuzJ,EAAKvzJ,IAAKxF,IAAKw2J,EAAe/yJ,EAAQzD,EAAGg2J,EAAExwJ,IAE/D,OADA/B,EAAOvD,OAASF,EACTyD,I,gBCdT,IAAI4zJ,EAAc,EAAQ,MAE1BjO,EAAOD,QAAUkO,EAAY,GAAGjsH,Q,gBCFhC,IAAI4tH,EAAa,EAAQ,OAErB70G,EAAQr2C,KAAKq2C,MAEb80G,EAAY,SAAUn7H,EAAOo7H,GAC/B,IAAIh5J,EAAS49B,EAAM59B,OACfi5J,EAASh1G,EAAMjkD,EAAS,GAC5B,OAAOA,EAAS,EAAIk5J,EAAct7H,EAAOo7H,GAAazJ,EACpD3xH,EACAm7H,EAAUD,EAAWl7H,EAAO,EAAGq7H,GAASD,GACxCD,EAAUD,EAAWl7H,EAAOq7H,GAASD,GACrCA,IAIAE,EAAgB,SAAUt7H,EAAOo7H,GACnC,IAEIG,EAAS3zJ,EAFTxF,EAAS49B,EAAM59B,OACfH,EAAI,EAGR,MAAOA,EAAIG,EAAQ,CACjBwF,EAAI3F,EACJs5J,EAAUv7H,EAAM/9B,GAChB,MAAO2F,GAAKwzJ,EAAUp7H,EAAMp4B,EAAI,GAAI2zJ,GAAW,EAC7Cv7H,EAAMp4B,GAAKo4B,IAAQp4B,GAEjBA,IAAM3F,MAAK+9B,EAAMp4B,GAAK2zJ,GAC1B,OAAOv7H,GAGP2xH,EAAQ,SAAU3xH,EAAO2gC,EAAMswC,EAAOmqD,GACxC,IAAII,EAAU76F,EAAKv+D,OACfq5J,EAAUxqD,EAAM7uG,OAChBs5J,EAAS,EACTC,EAAS,EAEb,MAAOD,EAASF,GAAWG,EAASF,EAClCz7H,EAAM07H,EAASC,GAAWD,EAASF,GAAWG,EAASF,EACnDL,EAAUz6F,EAAK+6F,GAASzqD,EAAM0qD,KAAY,EAAIh7F,EAAK+6F,KAAYzqD,EAAM0qD,KACrED,EAASF,EAAU76F,EAAK+6F,KAAYzqD,EAAM0qD,KAC9C,OAAO37H,GAGXsrH,EAAOD,QAAU8P,G,gBC3CjB,IAAI/kF,EAAU,EAAQ,OAClBihF,EAAgB,EAAQ,MACxBt9E,EAAW,EAAQ,OACnBw9E,EAAkB,EAAQ,MAE1BoD,EAAUpD,EAAgB,WAC1BsB,EAASp4J,MAIb6qJ,EAAOD,QAAU,SAAUuQ,GACzB,IAAIC,EASF,OAREzlF,EAAQwlF,KACVC,EAAID,EAAc56J,YAEdq2J,EAAcwE,KAAOA,IAAMhD,GAAUziF,EAAQylF,EAAE56J,YAAa46J,OAAI50H,EAC3D8yC,EAAS8hF,KAChBA,EAAIA,EAAElB,GACI,OAANkB,IAAYA,OAAI50H,UAETA,IAAN40H,EAAkBhD,EAASgD,I,gBCpBtC,IAAIC,EAA0B,EAAQ,OAItCxQ,EAAOD,QAAU,SAAUuQ,EAAex5J,GACxC,OAAO,IAAK05J,EAAwBF,GAA7B,CAAwD,IAAXx5J,EAAe,EAAIA,K,gBCLzE,IAAI25J,EAAW,EAAQ,OACnBC,EAAgB,EAAQ,OAG5B1Q,EAAOD,QAAU,SAAU3kJ,EAAUq1E,EAAI12E,EAAO42J,GAC9C,IACE,OAAOA,EAAUlgF,EAAGggF,EAAS12J,GAAO,GAAIA,EAAM,IAAM02E,EAAG12E,GACvD,MAAOgC,GACP20J,EAAct1J,EAAU,QAASW,M,gBCRrC,IAAIkwJ,EAAkB,EAAQ,MAE1B2E,EAAW3E,EAAgB,YAC3B4E,GAAe,EAEnB,IACE,IAAIC,EAAS,EACTC,EAAqB,CACvB72J,KAAM,WACJ,MAAO,CAAEI,OAAQw2J,MAEnB,OAAU,WACRD,GAAe,IAGnBE,EAAmBH,GAAY,WAC7B,OAAOn7J,MAGTN,MAAMshG,KAAKs6D,GAAoB,WAAc,MAAM,KACnD,MAAOh1J,IAETikJ,EAAOD,QAAU,SAAUjwI,EAAMkhJ,GAC/B,IAAKA,IAAiBH,EAAc,OAAO,EAC3C,IAAII,GAAoB,EACxB,IACE,IAAI3iE,EAAS,GACbA,EAAOsiE,GAAY,WACjB,MAAO,CACL12J,KAAM,WACJ,MAAO,CAAEI,KAAM22J,GAAoB,MAIzCnhJ,EAAKw+E,GACL,MAAOvyF,IACT,OAAOk1J,I,gBCpCT,IAAIhD,EAAc,EAAQ,MAEtBjqJ,EAAWiqJ,EAAY,GAAGjqJ,UAC1BktJ,EAAcjD,EAAY,GAAGjsH,OAEjCg+G,EAAOD,QAAU,SAAUwM,GACzB,OAAO2E,EAAYltJ,EAASuoJ,GAAK,GAAI,K,gBCNvC,IAAI4E,EAAwB,EAAQ,OAChCxF,EAAa,EAAQ,OACrByF,EAAa,EAAQ,OACrBnF,EAAkB,EAAQ,MAE1BoF,EAAgBpF,EAAgB,eAChCqF,EAAUt8J,OAGVu8J,EAAuE,aAAnDH,EAAW,WAAc,OAAOv6J,UAArB,IAG/B26J,EAAS,SAAUjF,EAAIl7I,GACzB,IACE,OAAOk7I,EAAGl7I,GACV,MAAOtV,MAIXikJ,EAAOD,QAAUoR,EAAwBC,EAAa,SAAU7E,GAC9D,IAAIK,EAAG6E,EAAKp3J,EACZ,YAAcshC,IAAP4wH,EAAmB,YAAqB,OAAPA,EAAc,OAEO,iBAAjDkF,EAAMD,EAAO5E,EAAI0E,EAAQ/E,GAAK8E,IAA8BI,EAEpEF,EAAoBH,EAAWxE,GAEH,WAA3BvyJ,EAAS+2J,EAAWxE,KAAmBjB,EAAWiB,EAAE8E,QAAU,YAAcr3J,I,gBC3BnF,IAAI4zJ,EAAc,EAAQ,MAEtB0D,EAASt7J,MACTsQ,EAAUsnJ,EAAY,GAAGtnJ,SAEzBirJ,EAAO,SAAW/3D,GAAO,OAAOzzF,OAAOurJ,EAAO93D,GAAKpL,OAA5C,CAAuD,UAC9DojE,EAA2B,uBAC3BC,EAAwBD,EAAyB9sJ,KAAK6sJ,GAE1D5R,EAAOD,QAAU,SAAUtxD,EAAOsjE,GAChC,GAAID,GAAyC,iBAATrjE,IAAsBkjE,EAAOK,kBAC/D,MAAOD,IAAetjE,EAAQ9nF,EAAQ8nF,EAAOojE,EAA0B,IACvE,OAAOpjE,I,6BCXX,IAAI5qD,EAAiB,UACjBjuC,EAAS,EAAQ,OACjBq8J,EAAiB,EAAQ,OACzBn5G,EAAO,EAAQ,OACfo5G,EAAa,EAAQ,OACrBxlD,EAAU,EAAQ,OAClBylD,EAAiB,EAAQ,OACzBC,EAAa,EAAQ,OACrBC,EAAc,EAAQ,OACtBC,EAAU,iBACVC,EAAsB,EAAQ,OAE9BC,EAAmBD,EAAoBn0I,IACvCq0I,EAAyBF,EAAoBG,UAEjD1S,EAAOD,QAAU,CACf4S,eAAgB,SAAUC,EAASC,EAAkBxE,EAAQyE,GAC3D,IAAIvY,EAAcqY,GAAQ,SAAU9lD,EAAMimD,GACxCb,EAAWplD,EAAM0tC,GACjBgY,EAAiB1lD,EAAM,CACrBnqF,KAAMkwI,EACN9qH,MAAOnyC,EAAO,MACdo9J,WAAOr3H,EACPs3H,UAAMt3H,EACNrI,KAAM,IAEH++H,IAAavlD,EAAKx5E,KAAO,QACdqI,GAAZo3H,GAAuBrmD,EAAQqmD,EAAUjmD,EAAKgmD,GAAQ,CAAEhmD,KAAMA,EAAMomD,WAAY7E,OAGlF7T,EAAYD,EAAY5kJ,UAExBw9J,EAAmBV,EAAuBI,GAE1CO,EAAS,SAAUtmD,EAAMz7F,EAAKtX,GAChC,IAEI0tB,EAAUsgB,EAFVjG,EAAQqxH,EAAiBrmD,GACzBr7F,EAAQ4hJ,EAASvmD,EAAMz7F,GAqBzB,OAlBEI,EACFA,EAAM1X,MAAQA,GAGd+nC,EAAMmxH,KAAOxhJ,EAAQ,CACnBs2B,MAAOA,EAAQuqH,EAAQjhJ,GAAK,GAC5BA,IAAKA,EACLtX,MAAOA,EACP0tB,SAAUA,EAAWqa,EAAMmxH,KAC3B/4J,UAAMyhC,EACNihG,SAAS,GAEN96F,EAAMkxH,QAAOlxH,EAAMkxH,MAAQvhJ,GAC5BgW,IAAUA,EAASvtB,KAAOuX,GAC1B4gJ,EAAavwH,EAAMxO,OAClBw5E,EAAKx5E,OAEI,MAAVyU,IAAejG,EAAMiG,MAAMA,GAASt2B,IACjCq7F,GAGPumD,EAAW,SAAUvmD,EAAMz7F,GAC7B,IAGII,EAHAqwB,EAAQqxH,EAAiBrmD,GAEzB/kE,EAAQuqH,EAAQjhJ,GAEpB,GAAc,MAAV02B,EAAe,OAAOjG,EAAMiG,MAAMA,GAEtC,IAAKt2B,EAAQqwB,EAAMkxH,MAAOvhJ,EAAOA,EAAQA,EAAMvX,KAC7C,GAAIuX,EAAMJ,KAAOA,EAAK,OAAOI,GAwFjC,OApFAwgJ,EAAezX,EAAW,CAIxBj8H,MAAO,WACL,IAAIuuF,EAAOr3G,KACPqsC,EAAQqxH,EAAiBrmD,GACzBjnG,EAAOi8B,EAAMiG,MACbt2B,EAAQqwB,EAAMkxH,MAClB,MAAOvhJ,EACLA,EAAMmrH,SAAU,EACZnrH,EAAMgW,WAAUhW,EAAMgW,SAAWhW,EAAMgW,SAASvtB,UAAOyhC,UACpD91B,EAAK4L,EAAMs2B,OAClBt2B,EAAQA,EAAMvX,KAEhB4nC,EAAMkxH,MAAQlxH,EAAMmxH,UAAOt3H,EACvB02H,EAAavwH,EAAMxO,KAAO,EACzBw5E,EAAKx5E,KAAO,GAKnB,OAAU,SAAUjiB,GAClB,IAAIy7F,EAAOr3G,KACPqsC,EAAQqxH,EAAiBrmD,GACzBr7F,EAAQ4hJ,EAASvmD,EAAMz7F,GAC3B,GAAII,EAAO,CACT,IAAIvX,EAAOuX,EAAMvX,KACbo5J,EAAO7hJ,EAAMgW,gBACVqa,EAAMiG,MAAMt2B,EAAMs2B,OACzBt2B,EAAMmrH,SAAU,EACZ02B,IAAMA,EAAKp5J,KAAOA,GAClBA,IAAMA,EAAKutB,SAAW6rI,GACtBxxH,EAAMkxH,OAASvhJ,IAAOqwB,EAAMkxH,MAAQ94J,GACpC4nC,EAAMmxH,MAAQxhJ,IAAOqwB,EAAMmxH,KAAOK,GAClCjB,EAAavwH,EAAMxO,OAClBw5E,EAAKx5E,OACV,QAAS7hB,GAKblZ,QAAS,SAAiB48F,GACxB,IAEI1jF,EAFAqwB,EAAQqxH,EAAiB19J,MACzBo5J,EAAgB/1G,EAAKq8C,EAAYt+F,UAAUC,OAAS,EAAID,UAAU,QAAK8kC,GAE3E,MAAOlqB,EAAQA,EAAQA,EAAMvX,KAAO4nC,EAAMkxH,MAAO,CAC/CnE,EAAcp9I,EAAM1X,MAAO0X,EAAMJ,IAAK5b,MAEtC,MAAOgc,GAASA,EAAMmrH,QAASnrH,EAAQA,EAAMgW,WAMjDnJ,IAAK,SAAajN,GAChB,QAASgiJ,EAAS59J,KAAM4b,MAI5B4gJ,EAAezX,EAAW6T,EAAS,CAGjCl3J,IAAK,SAAaka,GAChB,IAAII,EAAQ4hJ,EAAS59J,KAAM4b,GAC3B,OAAOI,GAASA,EAAM1X,OAIxBqkB,IAAK,SAAa/M,EAAKtX,GACrB,OAAOq5J,EAAO39J,KAAc,IAAR4b,EAAY,EAAIA,EAAKtX,KAEzC,CAGF64B,IAAK,SAAa74B,GAChB,OAAOq5J,EAAO39J,KAAMsE,EAAkB,IAAVA,EAAc,EAAIA,EAAOA,MAGrDs4J,GAAaxuH,EAAe22G,EAAW,OAAQ,CACjDrjJ,IAAK,WACH,OAAOg8J,EAAiB19J,MAAM69B,QAG3BinH,GAETgZ,UAAW,SAAUhZ,EAAasY,EAAkBxE,GAClD,IAAImF,EAAgBX,EAAmB,YACnCY,EAA6BhB,EAAuBI,GACpDa,EAA2BjB,EAAuBe,GAUtDrB,EAAe5X,EAAasY,GAAkB,SAAUc,EAAUjxD,GAChE8vD,EAAiB/8J,KAAM,CACrBktB,KAAM6wI,EACNp4I,OAAQu4I,EACR7xH,MAAO2xH,EAA2BE,GAClCjxD,KAAMA,EACNuwD,UAAMt3H,OAEP,WACD,IAAImG,EAAQ4xH,EAAyBj+J,MACjCitG,EAAO5gE,EAAM4gE,KACbjxF,EAAQqwB,EAAMmxH,KAElB,MAAOxhJ,GAASA,EAAMmrH,QAASnrH,EAAQA,EAAMgW,SAE7C,OAAKqa,EAAM1mB,SAAY0mB,EAAMmxH,KAAOxhJ,EAAQA,EAAQA,EAAMvX,KAAO4nC,EAAMA,MAAMkxH,OAMjE,QAARtwD,EAAuB,CAAE3oG,MAAO0X,EAAMJ,IAAK/W,MAAM,GACzC,UAARooG,EAAyB,CAAE3oG,MAAO0X,EAAM1X,MAAOO,MAAM,GAClD,CAAEP,MAAO,CAAC0X,EAAMJ,IAAKI,EAAM1X,OAAQO,MAAM,IAN9CwnC,EAAM1mB,YAASugB,EACR,CAAE5hC,WAAO4hC,EAAWrhC,MAAM,MAMlC+zJ,EAAS,UAAY,UAAWA,GAAQ,GAK3C+D,EAAWS,M,6BCxMf,IAAIe,EAAI,EAAQ,OACZ9oB,EAAS,EAAQ,OACjBmjB,EAAc,EAAQ,MACtB4F,EAAW,EAAQ,OACnBC,EAAgB,EAAQ,OACxBC,EAAyB,EAAQ,OACjCrnD,EAAU,EAAQ,OAClBwlD,EAAa,EAAQ,OACrBvG,EAAa,EAAQ,OACrBl9E,EAAW,EAAQ,OACnB+9E,EAAQ,EAAQ,OAChBwH,EAA8B,EAAQ,OACtCC,EAAiB,EAAQ,OACzBC,EAAoB,EAAQ,OAEhClU,EAAOD,QAAU,SAAU8S,EAAkBD,EAAStM,GACpD,IAAI+H,GAA8C,IAArCwE,EAAiBliJ,QAAQ,OAClCwjJ,GAAgD,IAAtCtB,EAAiBliJ,QAAQ,QACnCmiJ,EAAQzE,EAAS,MAAQ,MACzB+F,EAAoBtpB,EAAO+nB,GAC3BwB,EAAkBD,GAAqBA,EAAkBz+J,UACzD4kJ,EAAc6Z,EACdE,EAAW,GAEXC,EAAY,SAAUC,GACxB,IAAIC,EAAwBxG,EAAYoG,EAAgBG,IACxDV,EAAcO,EAAiBG,EACtB,OAAPA,EAAe,SAAaz6J,GAE1B,OADA06J,EAAsBh/J,KAAgB,IAAVsE,EAAc,EAAIA,GACvCtE,MACE,UAAP++J,EAAkB,SAAUnjJ,GAC9B,QAAO8iJ,IAAY1lF,EAASp9D,KAAeojJ,EAAsBh/J,KAAc,IAAR4b,EAAY,EAAIA,IAC9E,OAAPmjJ,EAAe,SAAanjJ,GAC9B,OAAO8iJ,IAAY1lF,EAASp9D,QAAOsqB,EAAY84H,EAAsBh/J,KAAc,IAAR4b,EAAY,EAAIA,IAClF,OAAPmjJ,EAAe,SAAanjJ,GAC9B,QAAO8iJ,IAAY1lF,EAASp9D,KAAeojJ,EAAsBh/J,KAAc,IAAR4b,EAAY,EAAIA,IACrF,SAAaA,EAAKtX,GAEpB,OADA06J,EAAsBh/J,KAAc,IAAR4b,EAAY,EAAIA,EAAKtX,GAC1CtE,QAKTi/J,EAAUb,EACZhB,GACClH,EAAWyI,MAAwBD,GAAWE,EAAgB97J,UAAYi0J,GAAM,YAC/E,IAAI4H,GAAoBvlF,UAAU30E,YAItC,GAAIw6J,EAEFna,EAAc+L,EAAOqM,eAAeC,EAASC,EAAkBxE,EAAQyE,GACvEiB,EAAuBY,cAClB,GAAId,EAAShB,GAAkB,GAAO,CAC3C,IAAIlQ,EAAW,IAAIpI,EAEfqa,EAAiBjS,EAASmQ,GAAOqB,EAAU,IAAM,EAAG,IAAMxR,EAE1DkS,EAAuBrI,GAAM,WAAc7J,EAASrkI,IAAI,MAGxDw2I,EAAmBd,GAA4B,SAAUjB,GAAY,IAAIqB,EAAkBrB,MAE3FgC,GAAcZ,GAAW3H,GAAM,WAEjC,IAAIwI,EAAY,IAAIZ,EAChBrsH,EAAQ,EACZ,MAAOA,IAASitH,EAAUlC,GAAO/qH,EAAOA,GACxC,OAAQitH,EAAU12I,KAAK,MAGpBw2I,IACHva,EAAcqY,GAAQ,SAAUqC,EAAOlC,GACrCb,EAAW+C,EAAOZ,GAClB,IAAIvnD,EAAOonD,EAAkB,IAAIE,EAAqBa,EAAO1a,GAE7D,YADgB5+G,GAAZo3H,GAAuBrmD,EAAQqmD,EAAUjmD,EAAKgmD,GAAQ,CAAEhmD,KAAMA,EAAMomD,WAAY7E,IAC7EvhD,KAETytC,EAAY5kJ,UAAY0+J,EACxBA,EAAgB3+J,YAAc6kJ,IAG5Bsa,GAAwBE,KAC1BR,EAAU,UACVA,EAAU,OACVlG,GAAUkG,EAAU,SAGlBQ,GAAcH,IAAgBL,EAAUzB,GAGxCqB,GAAWE,EAAgB91I,cAAc81I,EAAgB91I,MAU/D,OAPA+1I,EAASzB,GAAoBtY,EAC7BqZ,EAAE,CAAE9oB,QAAQ,EAAMp1I,aAAa,EAAMw/J,OAAQ3a,GAAe6Z,GAAqBE,GAEjFL,EAAe1Z,EAAasY,GAEvBsB,GAAS7N,EAAOiN,UAAUhZ,EAAasY,EAAkBxE,GAEvD9T,I,gBCvGT,IAAI4a,EAAS,EAAQ,OACjBC,EAAU,EAAQ,OAClBC,EAAiC,EAAQ,OACzCC,EAAuB,EAAQ,MAEnCtV,EAAOD,QAAU,SAAU3kI,EAAQ2gD,EAAQwqC,GAIzC,IAHA,IAAIjuG,EAAO88J,EAAQr5F,GACfl4B,EAAiByxH,EAAqB56J,EACtC66J,EAA2BF,EAA+B36J,EACrD/D,EAAI,EAAGA,EAAI2B,EAAKxB,OAAQH,IAAK,CACpC,IAAI0a,EAAM/Y,EAAK3B,GACVw+J,EAAO/5I,EAAQ/J,IAAUk1F,GAAc4uD,EAAO5uD,EAAYl1F,IAC7DwyB,EAAezoB,EAAQ/J,EAAKkkJ,EAAyBx5F,EAAQ1qD,O,gBCZnE,IAAI46I,EAAkB,EAAQ,MAE1BuJ,EAAQvJ,EAAgB,SAE5BjM,EAAOD,QAAU,SAAUuP,GACzB,IAAIx6B,EAAS,IACb,IACE,MAAMw6B,GAAax6B,GACnB,MAAO2gC,GACP,IAEE,OADA3gC,EAAO0gC,IAAS,EACT,MAAMlG,GAAax6B,GAC1B,MAAO4gC,KACT,OAAO,I,gBCbX,IAAIlJ,EAAQ,EAAQ,OAEpBxM,EAAOD,SAAWyM,GAAM,WACtB,SAASmJ,KAGT,OAFAA,EAAEhgK,UAAUD,YAAc,KAEnBV,OAAO+1J,eAAe,IAAI4K,KAASA,EAAEhgK,c,gBCN9C,IAAIs4J,EAAc,EAAQ,MACtB2H,EAAyB,EAAQ,OACjC5xJ,EAAW,EAAQ,OAEnB6xJ,EAAO,KACPlvJ,EAAUsnJ,EAAY,GAAGtnJ,SAI7Bq5I,EAAOD,QAAU,SAAU+V,EAAQrE,EAAKsE,EAAWh8J,GACjD,IAAIqyJ,EAAIpoJ,EAAS4xJ,EAAuBE,IACpCE,EAAK,IAAMvE,EAEf,MADkB,KAAdsE,IAAkBC,GAAM,IAAMD,EAAY,KAAOpvJ,EAAQ3C,EAASjK,GAAQ87J,EAAM,UAAY,KACzFG,EAAK,IAAM5J,EAAI,KAAOqF,EAAM,M,6BCZrC,IAAIwE,EAAoB,2BACpBrgK,EAAS,EAAQ,OACjBsgK,EAA2B,EAAQ,OACnCjC,EAAiB,EAAQ,OACzBkC,EAAY,EAAQ,OAEpBC,EAAa,WAAc,OAAO3gK,MAEtCuqJ,EAAOD,QAAU,SAAUsW,EAAqBC,EAAMp8J,EAAMq8J,GAC1D,IAAIlF,EAAgBiF,EAAO,YAI3B,OAHAD,EAAoB1gK,UAAYC,EAAOqgK,EAAmB,CAAE/7J,KAAMg8J,IAA2BK,EAAiBr8J,KAC9G+5J,EAAeoC,EAAqBhF,GAAe,GAAO,GAC1D8E,EAAU9E,GAAiB+E,EACpBC,I,gBCdT,IAAIhE,EAAc,EAAQ,OACtBiD,EAAuB,EAAQ,MAC/BY,EAA2B,EAAQ,OAEvClW,EAAOD,QAAUsS,EAAc,SAAU/jE,EAAQj9E,EAAKtX,GACpD,OAAOu7J,EAAqB56J,EAAE4zF,EAAQj9E,EAAK6kJ,EAAyB,EAAGn8J,KACrE,SAAUu0F,EAAQj9E,EAAKtX,GAEzB,OADAu0F,EAAOj9E,GAAOtX,EACPu0F,I,UCRT0xD,EAAOD,QAAU,SAAUyW,EAAQz8J,GACjC,MAAO,CACL+pC,aAAuB,EAAT0yH,GACdzyH,eAAyB,EAATyyH,GAChBC,WAAqB,EAATD,GACZz8J,MAAOA,K,6BCJX,IAAI28J,EAAgB,EAAQ,OACxBpB,EAAuB,EAAQ,MAC/BY,EAA2B,EAAQ,OAEvClW,EAAOD,QAAU,SAAUzxD,EAAQj9E,EAAKtX,GACtC,IAAI48J,EAAcD,EAAcrlJ,GAC5BslJ,KAAeroE,EAAQgnE,EAAqB56J,EAAE4zF,EAAQqoE,EAAaT,EAAyB,EAAGn8J,IAC9Fu0F,EAAOqoE,GAAe58J,I,gBCR7B,IAAI68J,EAAc,EAAQ,OACtB/yH,EAAiB,EAAQ,MAE7Bm8G,EAAOD,QAAU,SAAU3kI,EAAQtS,EAAMquF,GAGvC,OAFIA,EAAWhgG,KAAKy/J,EAAYz/D,EAAWhgG,IAAK2R,EAAM,CAAE+tJ,QAAQ,IAC5D1/D,EAAW/4E,KAAKw4I,EAAYz/D,EAAW/4E,IAAKtV,EAAM,CAAEguJ,QAAQ,IACzDjzH,EAAenpC,EAAE0gB,EAAQtS,EAAMquF,K,gBCNxC,IAAIw0D,EAAa,EAAQ,OACrBoL,EAA8B,EAAQ,OACtCH,EAAc,EAAQ,OACtBI,EAAuB,EAAQ,OAEnChX,EAAOD,QAAU,SAAU6M,EAAGv7I,EAAKtX,EAAO1C,GACnCA,IAASA,EAAU,IACxB,IAAI4/J,EAAS5/J,EAAQysC,WACjBh7B,OAAwB6yB,IAAjBtkC,EAAQyR,KAAqBzR,EAAQyR,KAAOuI,EAUrD,OATEs6I,EAAW5xJ,IAAQ68J,EAAY78J,EAAO+O,EAAMzR,GAC5CA,EAAQyzI,OACNmsB,EAAQrK,EAAEv7I,GAAOtX,EAChBi9J,EAAqB3lJ,EAAKtX,IAE1B1C,EAAQ6/J,OACJtK,EAAEv7I,KAAM4lJ,GAAS,UADErK,EAAEv7I,GAE1B4lJ,EAAQrK,EAAEv7I,GAAOtX,EAChBg9J,EAA4BnK,EAAGv7I,EAAKtX,IAClC6yJ,I,gBClBX,IAAIkH,EAAgB,EAAQ,OAE5B9T,EAAOD,QAAU,SAAU3kI,EAAQ0kD,EAAKzoE,GACtC,IAAK,IAAIga,KAAOyuD,EAAKg0F,EAAc14I,EAAQ/J,EAAKyuD,EAAIzuD,GAAMha,GAC1D,OAAO+jB,I,gBCJT,IAAI0vH,EAAS,EAAQ,OAGjBjnG,EAAiB7uC,OAAO6uC,eAE5Bm8G,EAAOD,QAAU,SAAU1uI,EAAKtX,GAC9B,IACE8pC,EAAeinG,EAAQz5H,EAAK,CAAEtX,MAAOA,EAAOgqC,cAAc,EAAM0yH,UAAU,IAC1E,MAAO16J,GACP+uI,EAAOz5H,GAAOtX,EACd,OAAOA,I,6BCTX,IAAI65J,EAAI,EAAQ,OACZx9J,EAAO,EAAQ,OACf+gK,EAAU,EAAQ,OAClBC,EAAe,EAAQ,OACvBzL,EAAa,EAAQ,OACrB0L,EAA4B,EAAQ,OACpCtM,EAAiB,EAAQ,OACzB91J,EAAiB,EAAQ,OACzBg/J,EAAiB,EAAQ,OACzB8C,EAA8B,EAAQ,OACtCjD,EAAgB,EAAQ,OACxB7H,EAAkB,EAAQ,MAC1BkK,EAAY,EAAQ,OACpBmB,EAAgB,EAAQ,OAExBC,EAAuBH,EAAaI,OACpCC,EAA6BL,EAAaM,aAC1CzB,EAAoBqB,EAAcrB,kBAClC0B,EAAyBL,EAAcK,uBACvC/G,EAAW3E,EAAgB,YAC3B2L,EAAO,OACPC,EAAS,SACTlH,EAAU,UAEVyF,EAAa,WAAc,OAAO3gK,MAEtCuqJ,EAAOD,QAAU,SAAU+X,EAAUxB,EAAMD,EAAqBn8J,EAAM69J,EAASC,EAAQ7I,GACrFkI,EAA0BhB,EAAqBC,EAAMp8J,GAErD,IAkBI+9J,EAA0BtnF,EAAS6jF,EAlBnC0D,EAAqB,SAAUC,GACjC,GAAIA,IAASJ,GAAWK,EAAiB,OAAOA,EAChD,IAAKT,GAA0BQ,KAAQE,EAAmB,OAAOA,EAAkBF,GACnF,OAAQA,GACN,KAAKP,EAAM,OAAO,WAAkB,OAAO,IAAIvB,EAAoB5gK,KAAM0iK,IACzE,KAAKN,EAAQ,OAAO,WAAoB,OAAO,IAAIxB,EAAoB5gK,KAAM0iK,IAC7E,KAAKxH,EAAS,OAAO,WAAqB,OAAO,IAAI0F,EAAoB5gK,KAAM0iK,IAC/E,OAAO,WAAc,OAAO,IAAI9B,EAAoB5gK,QAGpD47J,EAAgBiF,EAAO,YACvBgC,GAAwB,EACxBD,EAAoBP,EAASniK,UAC7B4iK,EAAiBF,EAAkBzH,IAClCyH,EAAkB,eAClBN,GAAWM,EAAkBN,GAC9BK,GAAmBT,GAA0BY,GAAkBL,EAAmBH,GAClFS,EAA4B,SAARlC,GAAkB+B,EAAkBxpF,SAA4B0pF,EA+BxF,GA3BIC,IACFP,EAA2BlN,EAAeyN,EAAkBpiK,KAAK,IAAI0hK,IACjEG,IAA6BjjK,OAAOW,WAAasiK,EAAyB/9J,OACvEi9J,GAAWpM,EAAekN,KAA8BhC,IACvDhhK,EACFA,EAAegjK,EAA0BhC,GAC/BtK,EAAWsM,EAAyBrH,KAC9CkD,EAAcmE,EAA0BrH,EAAUwF,IAItDnC,EAAegE,EAA0B5G,GAAe,GAAM,GAC1D8F,IAAShB,EAAU9E,GAAiB+E,KAKxCmB,GAAwBQ,GAAWF,GAAUU,GAAkBA,EAAezvJ,OAAS+uJ,KACpFV,GAAWM,EACdV,EAA4BsB,EAAmB,OAAQR,IAEvDS,GAAwB,EACxBF,EAAkB,WAAoB,OAAOhiK,EAAKmiK,EAAgB9iK,SAKlEsiK,EAMF,GALApnF,EAAU,CACR9oC,OAAQqwH,EAAmBL,GAC3Bv/J,KAAM0/J,EAASI,EAAkBF,EAAmBN,GACpD/oF,QAASqpF,EAAmBvH,IAE1BxB,EAAQ,IAAKqF,KAAO7jF,GAClBgnF,GAA0BW,KAA2B9D,KAAO6D,KAC9DvE,EAAcuE,EAAmB7D,EAAK7jF,EAAQ6jF,SAE3CZ,EAAE,CAAEx4I,OAAQk7I,EAAM3pE,OAAO,EAAMuoE,OAAQyC,GAA0BW,GAAyB3nF,GASnG,OALMwmF,IAAWhI,GAAWkJ,EAAkBzH,KAAcwH,GAC1DtE,EAAcuE,EAAmBzH,EAAUwH,EAAiB,CAAEtvJ,KAAMivJ,IAEtE5B,EAAUG,GAAQ8B,EAEXznF,I,gBCjGT,IAAIkS,EAAO,EAAQ,OACfsyE,EAAS,EAAQ,OACjBsD,EAA+B,EAAQ,MACvC50H,EAAiB,UAErBm8G,EAAOD,QAAU,SAAUuW,GACzB,IAAIn7J,EAAS0nF,EAAK1nF,SAAW0nF,EAAK1nF,OAAS,IACtCg6J,EAAOh6J,EAAQm7J,IAAOzyH,EAAe1oC,EAAQm7J,EAAM,CACtDv8J,MAAO0+J,EAA6B/9J,EAAE47J,O,6BCP1C,IAAI1K,EAAc,EAAQ,OAEtBC,EAAatwJ,UAEjBykJ,EAAOD,QAAU,SAAU6M,EAAGhzJ,GAC5B,WAAYgzJ,EAAEhzJ,GAAI,MAAMiyJ,EAAW,0BAA4BD,EAAYhyJ,GAAK,OAASgyJ,EAAYgB,M,gBCNvG,IAAIJ,EAAQ,EAAQ,OAGpBxM,EAAOD,SAAWyM,GAAM,WAEtB,OAA8E,GAAvEx3J,OAAO6uC,eAAe,GAAI,EAAG,CAAE1sC,IAAK,WAAc,OAAO,KAAQ,O,gBCL1E,IAAI2zI,EAAS,EAAQ,OACjBr8D,EAAW,EAAQ,OAEnBrjC,EAAW0/F,EAAO1/F,SAElBstH,EAASjqF,EAASrjC,IAAaqjC,EAASrjC,EAAS40B,eAErDggF,EAAOD,QAAU,SAAUwM,GACzB,OAAOmM,EAASttH,EAAS40B,cAAcusF,GAAM,K,SCR/C,IAAIV,EAAatwJ,UACbo9J,EAAmB,iBAEvB3Y,EAAOD,QAAU,SAAUwM,GACzB,GAAIA,EAAKoM,EAAkB,MAAM9M,EAAW,kCAC5C,OAAOU,I,UCHTvM,EAAOD,QAAU,CACf6Y,YAAa,EACbC,oBAAqB,EACrBC,aAAc,EACdC,eAAgB,EAChBC,YAAa,EACbC,cAAe,EACfC,aAAc,EACdC,qBAAsB,EACtBC,SAAU,EACVC,kBAAmB,EACnBC,eAAgB,EAChBC,gBAAiB,EACjBC,kBAAmB,EACnBC,UAAW,EACXC,cAAe,EACfC,aAAc,EACdC,SAAU,EACVC,iBAAkB,EAClBC,OAAQ,EACRC,YAAa,EACbC,cAAe,EACfC,cAAe,EACfC,eAAgB,EAChBC,aAAc,EACdC,cAAe,EACfC,iBAAkB,EAClBC,iBAAkB,EAClBC,eAAgB,EAChBC,iBAAkB,EAClBC,cAAe,EACfC,UAAW,I,gBChCb,IAAIC,EAAwB,EAAQ,OAEhCC,EAAYD,EAAsB,QAAQC,UAC1CC,EAAwBD,GAAaA,EAAUllK,aAAeklK,EAAUllK,YAAYC,UAExFqqJ,EAAOD,QAAU8a,IAA0B7lK,OAAOW,eAAYgmC,EAAYk/H,G,gBCN1E,IAAIjlH,EAAY,EAAQ,OAEpBklH,EAAUllH,EAAU1Q,MAAM,mBAE9B86G,EAAOD,UAAY+a,IAAYA,EAAQ,I,SCJvC9a,EAAOD,QAA2B,iBAAVnmI,QAAqC,iBAARmhJ,M,gBCArD,IAAIC,EAAK,EAAQ,OAEjBhb,EAAOD,QAAU,eAAeh7I,KAAKi2J,I,gBCFrC,IAAIplH,EAAY,EAAQ,OACpBk1F,EAAS,EAAQ,OAErBkV,EAAOD,QAAU,oBAAoBh7I,KAAK6wC,SAAgCja,IAAlBmvG,EAAOmwB,Q,eCH/D,IAAIrlH,EAAY,EAAQ,OAExBoqG,EAAOD,QAAU,qCAAqCh7I,KAAK6wC,I,gBCF3D,IAAIslH,EAAU,EAAQ,OAClBpwB,EAAS,EAAQ,OAErBkV,EAAOD,QAAqC,WAA3Bmb,EAAQpwB,EAAO0c,U,gBCHhC,IAAI5xG,EAAY,EAAQ,OAExBoqG,EAAOD,QAAU,qBAAqBh7I,KAAK6wC,I,gBCF3C,IAAIulH,EAAa,EAAQ,OAEzBnb,EAAOD,QAAUob,EAAW,YAAa,cAAgB,I,eCFzD,IAOIj2H,EAAOlpB,EAPP8uH,EAAS,EAAQ,OACjBl1F,EAAY,EAAQ,OAEpB4xG,EAAU1c,EAAO0c,QACjBuT,EAAOjwB,EAAOiwB,KACdK,EAAW5T,GAAWA,EAAQ4T,UAAYL,GAAQA,EAAK/+I,QACvDq/I,EAAKD,GAAYA,EAASC,GAG1BA,IACFn2H,EAAQm2H,EAAGxuJ,MAAM,KAGjBmP,EAAUkpB,EAAM,GAAK,GAAKA,EAAM,GAAK,EAAI,IAAMA,EAAM,GAAKA,EAAM,MAK7DlpB,GAAW45B,IACd1Q,EAAQ0Q,EAAU1Q,MAAM,iBACnBA,GAASA,EAAM,IAAM,MACxBA,EAAQ0Q,EAAU1Q,MAAM,iBACpBA,IAAOlpB,GAAWkpB,EAAM,MAIhC86G,EAAOD,QAAU/jI,G,gBC1BjB,IAAI45B,EAAY,EAAQ,OAEpB0lH,EAAS1lH,EAAU1Q,MAAM,wBAE7B86G,EAAOD,UAAYub,IAAWA,EAAO,I,UCHrCtb,EAAOD,QAAU,CACf,cACA,iBACA,gBACA,uBACA,iBACA,WACA,Y,gBCRF,IAAIyM,EAAQ,EAAQ,OAChB0J,EAA2B,EAAQ,OAEvClW,EAAOD,SAAWyM,GAAM,WACtB,IAAIzwJ,EAAQ1F,MAAM,KAClB,QAAM,UAAW0F,KAEjB/G,OAAO6uC,eAAe9nC,EAAO,QAASm6J,EAAyB,EAAG,IAC3C,IAAhBn6J,EAAM0yF,W,4BCPf,IAAI4jE,EAAc,EAAQ,OACtB7F,EAAQ,EAAQ,OAChBiE,EAAW,EAAQ,OACnB76J,EAAS,EAAQ,OACjB2lK,EAA0B,EAAQ,OAElCC,EAAsBnlK,MAAMV,UAAUqO,SAEtCy3J,EAAsBjP,GAAM,WAC9B,GAAI6F,EAAa,CAGf,IAAI/jE,EAAS14F,EAAOZ,OAAO6uC,eAAe,GAAI,OAAQ,CAAE1sC,IAAK,WAC3D,OAAO1B,OAAS64F,MAElB,GAAyC,SAArCktE,EAAoBplK,KAAKk4F,GAAoB,OAAO,EAG1D,MAA6D,SAAtDktE,EAAoBplK,KAAK,CAAEyrB,QAAS,EAAG/Y,KAAM,KAEd,UAAjC0yJ,EAAoBplK,KAAK,OAGhC4pJ,EAAOD,QAAU0b,EAAsB,WACrC,IAAI7O,EAAI6D,EAASh7J,MACbqT,EAAOyyJ,EAAwB3O,EAAE9jJ,KAAM,SACvC+Y,EAAU05I,EAAwB3O,EAAE/qI,SACxC,OAAQ/Y,EAAkB+Y,EAAiB/Y,EAAO,KAAO+Y,EAArB/Y,EAArB+Y,GACb25I,G,gBC7BJ,IAAI1wB,EAAS,EAAQ,OACjByqB,EAA2B,WAC3BwB,EAA8B,EAAQ,OACtCjD,EAAgB,EAAQ,OACxBkD,EAAuB,EAAQ,OAC/B0E,EAA4B,EAAQ,OACpC7H,EAAW,EAAQ,OAiBvB7T,EAAOD,QAAU,SAAU1oJ,EAAS0kE,GAClC,IAGIozF,EAAQ/zI,EAAQ/J,EAAKsqJ,EAAgBC,EAAgBzkE,EAHrD0kE,EAASxkK,EAAQ+jB,OACjB0gJ,EAASzkK,EAAQyzI,OACjBixB,EAAS1kK,EAAQ2kK,KASrB,GANE5gJ,EADE0gJ,EACOhxB,EACAixB,EACAjxB,EAAO+wB,IAAW7E,EAAqB6E,EAAQ,KAE9C/wB,EAAO+wB,IAAW,IAAIlmK,UAE9BylB,EAAQ,IAAK/J,KAAO0qD,EAAQ,CAQ9B,GAPA6/F,EAAiB7/F,EAAO1qD,GACpBha,EAAQ4kK,gBACV9kE,EAAao+D,EAAyBn6I,EAAQ/J,GAC9CsqJ,EAAiBxkE,GAAcA,EAAWp9F,OACrC4hK,EAAiBvgJ,EAAO/J,GAC/B89I,EAAS0E,EAASiI,EAASzqJ,EAAMwqJ,GAAUE,EAAS,IAAM,KAAO1qJ,EAAKha,EAAQ69J,SAEzE/F,QAA6BxzH,IAAnBggI,EAA8B,CAC3C,UAAWC,UAAyBD,EAAgB,SACpDD,EAA0BE,EAAgBD,IAGxCtkK,EAAQ6kK,MAASP,GAAkBA,EAAeO,OACpDnF,EAA4B6E,EAAgB,QAAQ,GAEtD9H,EAAc14I,EAAQ/J,EAAKuqJ,EAAgBvkK,M,UCnD/C2oJ,EAAOD,QAAU,SAAUjwI,GACzB,IACE,QAASA,IACT,MAAO/T,GACP,OAAO,K,6BCFX,EAAQ,OACR,IAAIkyJ,EAAc,EAAQ,MACtB6F,EAAgB,EAAQ,OACxBqI,EAAa,EAAQ,OACrB3P,EAAQ,EAAQ,OAChBP,EAAkB,EAAQ,MAC1B8K,EAA8B,EAAQ,OAEtC1H,EAAUpD,EAAgB,WAC1BmQ,EAAkBpqJ,OAAOrc,UAE7BqqJ,EAAOD,QAAU,SAAUyU,EAAK1kJ,EAAMq/I,EAAQkN,GAC5C,IAAIC,EAASrQ,EAAgBuI,GAEzB+H,GAAuB/P,GAAM,WAE/B,IAAII,EAAI,GAER,OADAA,EAAE0P,GAAU,WAAc,OAAO,GACZ,GAAd,GAAG9H,GAAK5H,MAGb4P,EAAoBD,IAAwB/P,GAAM,WAEpD,IAAIiQ,GAAa,EACbC,EAAK,IAkBT,MAhBY,UAARlI,IAIFkI,EAAK,GAGLA,EAAGhnK,YAAc,GACjBgnK,EAAGhnK,YAAY25J,GAAW,WAAc,OAAOqN,GAC/CA,EAAG//D,MAAQ,GACX+/D,EAAGJ,GAAU,IAAIA,IAGnBI,EAAG5sJ,KAAO,WAAiC,OAAnB2sJ,GAAa,EAAa,MAElDC,EAAGJ,GAAQ,KACHG,KAGV,IACGF,IACAC,GACDrN,EACA,CACA,IAAIwN,EAA8B1O,EAAY,IAAIqO,IAC9C3rF,EAAU7gE,EAAKwsJ,EAAQ,GAAG9H,IAAM,SAAUoI,EAAc9nC,EAAQ1kH,EAAKysJ,EAAMC,GAC7E,IAAIrI,EAAwBxG,EAAY2O,GACpCG,EAAQjoC,EAAOhlH,KACnB,OAAIitJ,IAAUZ,GAAcY,IAAUX,EAAgBtsJ,KAChDysJ,IAAwBO,EAInB,CAAExiK,MAAM,EAAMP,MAAO4iK,EAA4B7nC,EAAQ1kH,EAAKysJ,IAEhE,CAAEviK,MAAM,EAAMP,MAAO06J,EAAsBrkJ,EAAK0kH,EAAQ+nC,IAE1D,CAAEviK,MAAM,MAGjBw5J,EAAc1tJ,OAAOzQ,UAAW6+J,EAAK7jF,EAAQ,IAC7CmjF,EAAcsI,EAAiBE,EAAQ3rF,EAAQ,IAG7C0rF,GAAMtF,EAA4BqF,EAAgBE,GAAS,QAAQ,K,4BCvEzE,IAAIxxF,EAAU,EAAQ,OAClB6hF,EAAoB,EAAQ,OAC5BqQ,EAA2B,EAAQ,MACnClkH,EAAO,EAAQ,OAIfmkH,EAAmB,SAAU7hJ,EAAQ8hJ,EAAUnhG,EAAQohG,EAAWvgF,EAAOwgF,EAAOC,EAAQ3jK,GAC1F,IAGIu2J,EAASqN,EAHTC,EAAc3gF,EACd4gF,EAAc,EACdC,IAAQJ,GAASvkH,EAAKukH,EAAQ3jK,GAGlC,MAAO8jK,EAAcL,EACfK,KAAezhG,IACjBk0F,EAAUwN,EAAQA,EAAM1hG,EAAOyhG,GAAcA,EAAaN,GAAYnhG,EAAOyhG,GAEzEJ,EAAQ,GAAKtyF,EAAQmlF,IACvBqN,EAAa3Q,EAAkBsD,GAC/BsN,EAAcN,EAAiB7hJ,EAAQ8hJ,EAAUjN,EAASqN,EAAYC,EAAaH,EAAQ,GAAK,IAEhGJ,EAAyBO,EAAc,GACvCniJ,EAAOmiJ,GAAetN,GAGxBsN,KAEFC,IAEF,OAAOD,GAGTvd,EAAOD,QAAUkd,G,gBCjCjB,IAAIzQ,EAAQ,EAAQ,OAEpBxM,EAAOD,SAAWyM,GAAM,WAEtB,OAAOx3J,OAAOy3J,aAAaz3J,OAAO0oK,kBAAkB,S,gBCJtD,IAAIC,EAAc,EAAQ,OAEtBC,EAAoB7hB,SAASpmJ,UAC7B6D,EAAQokK,EAAkBpkK,MAC1BpD,EAAOwnK,EAAkBxnK,KAG7B4pJ,EAAOD,QAA4B,iBAAX8d,SAAuBA,QAAQrkK,QAAUmkK,EAAcvnK,EAAK0iD,KAAKt/C,GAAS,WAChG,OAAOpD,EAAKoD,MAAMA,EAAO3C,c,gBCR3B,IAAIo3J,EAAc,EAAQ,MACtBuB,EAAY,EAAQ,OACpBmO,EAAc,EAAQ,OAEtB7kH,EAAOm1G,EAAYA,EAAYn1G,MAGnCknG,EAAOD,QAAU,SAAUtvE,EAAIq8B,GAE7B,OADA0iD,EAAU/+E,QACM90C,IAATmxE,EAAqBr8B,EAAKktF,EAAc7kH,EAAK23B,EAAIq8B,GAAQ,WAC9D,OAAOr8B,EAAGj3E,MAAMszG,EAAMj2G,c,gBCV1B,IAAI21J,EAAQ,EAAQ,OAEpBxM,EAAOD,SAAWyM,GAAM,WAEtB,IAAIznJ,EAAO,aAA8B+zC,OAEzC,MAAsB,mBAAR/zC,GAAsBA,EAAKxP,eAAe,iB,6BCL1D,IAAI04J,EAAc,EAAQ,MACtBuB,EAAY,EAAQ,OACpB/gF,EAAW,EAAQ,OACnB0mF,EAAS,EAAQ,OACjBvF,EAAa,EAAQ,OACrB+N,EAAc,EAAQ,OAEtBG,EAAY/hB,SACZ9/I,EAASgyJ,EAAY,GAAGhyJ,QACxBwf,EAAOwyI,EAAY,GAAGxyI,MACtBsiJ,EAAY,GAEZC,EAAY,SAAUzN,EAAG0N,EAAYp2E,GACvC,IAAKstE,EAAO4I,EAAWE,GAAa,CAClC,IAAK,IAAIC,EAAO,GAAIvnK,EAAI,EAAGA,EAAIsnK,EAAYtnK,IAAKunK,EAAKvnK,GAAK,KAAOA,EAAI,IACrEonK,EAAUE,GAAcH,EAAU,MAAO,gBAAkBriJ,EAAKyiJ,EAAM,KAAO,KAC7E,OAAOH,EAAUE,GAAY1N,EAAG1oE,IAKpCm4D,EAAOD,QAAU4d,EAAcG,EAAUhlH,KAAO,SAAcg0D,GAC5D,IAAI6oD,EAAInG,EAAU/5J,MACd+kJ,EAAYmb,EAAEhgK,UACdwoK,EAAWvO,EAAW/4J,UAAW,GACjCg4J,EAAgB,WAClB,IAAIhnE,EAAO5rF,EAAOkiK,EAAUvO,EAAW/4J,YACvC,OAAOpB,gBAAgBo5J,EAAgBmP,EAAUrI,EAAG9tE,EAAK/wF,OAAQ+wF,GAAQ8tE,EAAEn8J,MAAMszG,EAAMjlB,IAGzF,OADIpZ,EAAS+rE,KAAYqU,EAAcl5J,UAAY6kJ,GAC5CqU,I,gBC/BT,IAAI8O,EAAc,EAAQ,OAEtBvnK,EAAO2lJ,SAASpmJ,UAAUS,KAE9B4pJ,EAAOD,QAAU4d,EAAcvnK,EAAK0iD,KAAK1iD,GAAQ,WAC/C,OAAOA,EAAKoD,MAAMpD,EAAMS,a,gBCL1B,IAAIw7J,EAAc,EAAQ,OACtB8C,EAAS,EAAQ,OAEjByI,EAAoB7hB,SAASpmJ,UAE7ByoK,EAAgB/L,GAAer9J,OAAOugK,yBAEtCmD,EAASvD,EAAOyI,EAAmB,QAEnCpG,EAASkB,GAA0D,cAAhD,aAAuC5vJ,KAC1D4uJ,EAAegB,KAAYrG,GAAgBA,GAAe+L,EAAcR,EAAmB,QAAQ75H,cAEvGi8G,EAAOD,QAAU,CACf2Y,OAAQA,EACRlB,OAAQA,EACRE,aAAcA,I,eCfhB,IAAIiG,EAAc,EAAQ,OAEtBC,EAAoB7hB,SAASpmJ,UAC7BmjD,EAAO8kH,EAAkB9kH,KACzB1iD,EAAOwnK,EAAkBxnK,KACzB63J,EAAc0P,GAAe7kH,EAAKA,KAAK1iD,EAAMA,GAEjD4pJ,EAAOD,QAAU4d,EAAc,SAAUltF,GACvC,OAAOA,GAAMw9E,EAAYx9E,IACvB,SAAUA,GACZ,OAAOA,GAAM,WACX,OAAOr6E,EAAKoD,MAAMi3E,EAAI55E,c,gBCX1B,IAAIi0I,EAAS,EAAQ,OACjB6gB,EAAa,EAAQ,OAErB0S,EAAY,SAAUvS,GACxB,OAAOH,EAAWG,GAAYA,OAAWnwH,GAG3CqkH,EAAOD,QAAU,SAAUue,EAAW/mK,GACpC,OAAOV,UAAUC,OAAS,EAAIunK,EAAUvzB,EAAOwzB,IAAcxzB,EAAOwzB,IAAcxzB,EAAOwzB,GAAW/mK,K,gBCRtG,IAAI2jK,EAAU,EAAQ,OAClBqD,EAAY,EAAQ,OACpBpI,EAAY,EAAQ,OACpBlK,EAAkB,EAAQ,MAE1B2E,EAAW3E,EAAgB,YAE/BjM,EAAOD,QAAU,SAAUwM,GACzB,QAAU5wH,GAAN4wH,EAAiB,OAAOgS,EAAUhS,EAAIqE,IACrC2N,EAAUhS,EAAI,eACd4J,EAAU+E,EAAQ3O,M,gBCVzB,IAAIn2J,EAAO,EAAQ,OACfo5J,EAAY,EAAQ,OACpBiB,EAAW,EAAQ,OACnB7E,EAAc,EAAQ,OACtB0B,EAAoB,EAAQ,OAE5BzB,EAAatwJ,UAEjBykJ,EAAOD,QAAU,SAAU+L,EAAU0S,GACnC,IAAI5Q,EAAiB/2J,UAAUC,OAAS,EAAIw2J,EAAkBxB,GAAY0S,EAC1E,GAAIhP,EAAU5B,GAAiB,OAAO6C,EAASr6J,EAAKw3J,EAAgB9B,IACpE,MAAMD,EAAWD,EAAYE,GAAY,sB,gBCX3C,IAAI0D,EAAY,EAAQ,OAIxBxP,EAAOD,QAAU,SAAU0e,EAAG7kK,GAC5B,IAAI4qF,EAAOi6E,EAAE7kK,GACb,OAAe,MAAR4qF,OAAe7oD,EAAY6zH,EAAUhrE,K,gBCN9C,IAAIypE,EAAc,EAAQ,MACtBp4H,EAAW,EAAQ,OAEnBklB,EAAQr2C,KAAKq2C,MACbxP,EAAS0iH,EAAY,GAAG1iH,QACxB5kC,EAAUsnJ,EAAY,GAAGtnJ,SACzBuqJ,EAAcjD,EAAY,GAAGjsH,OAC7B08H,EAAuB,8BACvBC,EAAgC,sBAIpC3e,EAAOD,QAAU,SAAU6e,EAASxuJ,EAAK+vD,EAAU0+F,EAAUC,EAAeC,GAC1E,IAAIC,EAAU7+F,EAAWy+F,EAAQ9nK,OAC7B8E,EAAIijK,EAAS/nK,OACbmoK,EAAUN,EAKd,YAJsBhjI,IAAlBmjI,IACFA,EAAgBjpI,EAASipI,GACzBG,EAAUP,GAEL/3J,EAAQo4J,EAAaE,GAAS,SAAU/5H,EAAOg6H,GACpD,IAAI/tE,EACJ,OAAQ5lD,EAAO2zH,EAAI,IACjB,IAAK,IAAK,MAAO,IACjB,IAAK,IAAK,OAAON,EACjB,IAAK,IAAK,OAAO1N,EAAY9gJ,EAAK,EAAG+vD,GACrC,IAAK,IAAK,OAAO+wF,EAAY9gJ,EAAK4uJ,GAClC,IAAK,IACH7tE,EAAU2tE,EAAc5N,EAAYgO,EAAI,GAAI,IAC5C,MACF,QACE,IAAItoK,GAAKsoK,EACT,GAAU,IAANtoK,EAAS,OAAOsuC,EACpB,GAAItuC,EAAIgF,EAAG,CACT,IAAIlB,EAAIqgD,EAAMnkD,EAAI,IAClB,OAAU,IAAN8D,EAAgBwqC,EAChBxqC,GAAKkB,OAA8B+/B,IAApBkjI,EAASnkK,EAAI,GAAmB6wC,EAAO2zH,EAAI,GAAKL,EAASnkK,EAAI,GAAK6wC,EAAO2zH,EAAI,GACzFh6H,EAETisD,EAAU0tE,EAASjoK,EAAI,GAE3B,YAAmB+kC,IAAZw1D,EAAwB,GAAKA,O,gBCzCxC,IAAIguE,EAAQ,SAAU5S,GACpB,OAAOA,GAAMA,EAAG7nJ,MAAQA,MAAQ6nJ,GAIlCvM,EAAOD,QAELof,EAA2B,iBAAdr+D,YAA0BA,aACvCq+D,EAAuB,iBAAVvlJ,QAAsBA,SAEnCulJ,EAAqB,iBAARhyF,MAAoBA,OACjCgyF,EAAuB,iBAAV,EAAAvkK,GAAsB,EAAAA,IAEnC,WAAe,OAAOnF,KAAtB,IAAoCsmJ,SAAS,cAATA,I,gBCbtC,IAAIkS,EAAc,EAAQ,MACtBp4H,EAAW,EAAQ,OAEnBtgC,EAAiB04J,EAAY,GAAG14J,gBAKpCyqJ,EAAOD,QAAU/qJ,OAAOmgK,QAAU,SAAgB5I,EAAIl7I,GACpD,OAAO9b,EAAesgC,EAAS02H,GAAKl7I,K,SCTtC2uI,EAAOD,QAAU,I,cCAjB,IAAIjV,EAAS,EAAQ,OAErBkV,EAAOD,QAAU,SAAU1jJ,EAAGhH,GAC5B,IAAI+2E,EAAU0+D,EAAO1+D,QACjBA,GAAWA,EAAQrwE,QACD,GAApBlF,UAAUC,OAAcs1E,EAAQrwE,MAAMM,GAAK+vE,EAAQrwE,MAAMM,EAAGhH,M,gBCLhE,IAAI8lK,EAAa,EAAQ,OAEzBnb,EAAOD,QAAUob,EAAW,WAAY,oB,gBCFxC,IAAI9I,EAAc,EAAQ,OACtB7F,EAAQ,EAAQ,OAChBxsF,EAAgB,EAAQ,OAG5BggF,EAAOD,SAAWsS,IAAgB7F,GAAM,WAEtC,OAEQ,GAFDx3J,OAAO6uC,eAAem8B,EAAc,OAAQ,IAAK,CACtD7oE,IAAK,WAAc,OAAO,KACzBkF,M,gBCTL,IAAI4xJ,EAAc,EAAQ,MACtBzB,EAAQ,EAAQ,OAChB0O,EAAU,EAAQ,OAElB5J,EAAUt8J,OACV6X,EAAQohJ,EAAY,GAAGphJ,OAG3BmzI,EAAOD,QAAUyM,GAAM,WAGrB,OAAQ8E,EAAQ,KAAKz6D,qBAAqB,MACvC,SAAU01D,GACb,MAAsB,UAAf2O,EAAQ3O,GAAkB1/I,EAAM0/I,EAAI,IAAM+E,EAAQ/E,IACvD+E,G,gBCdJ,IAAI3F,EAAa,EAAQ,OACrBl9E,EAAW,EAAQ,OACnBx5E,EAAiB,EAAQ,OAG7B+qJ,EAAOD,QAAU,SAAUiO,EAAOiH,EAAOmK,GACvC,IAAIC,EAAWC,EAUf,OAPErqK,GAEA02J,EAAW0T,EAAYpK,EAAMv/J,cAC7B2pK,IAAcD,GACd3wF,EAAS6wF,EAAqBD,EAAU1pK,YACxC2pK,IAAuBF,EAAQzpK,WAC/BV,EAAe+4J,EAAOsR,GACjBtR,I,gBChBT,IAAIC,EAAc,EAAQ,MACtBtC,EAAa,EAAQ,OACrB4T,EAAQ,EAAQ,MAEhBC,EAAmBvR,EAAYlS,SAAS/3I,UAGvC2nJ,EAAW4T,EAAME,iBACpBF,EAAME,cAAgB,SAAUlT,GAC9B,OAAOiT,EAAiBjT,KAI5BvM,EAAOD,QAAUwf,EAAME,e,gBCbvB,IAAIhxF,EAAW,EAAQ,OACnBsoF,EAA8B,EAAQ,OAI1C/W,EAAOD,QAAU,SAAU6M,EAAGv1J,GACxBo3E,EAASp3E,IAAY,UAAWA,GAClC0/J,EAA4BnK,EAAG,QAASv1J,EAAQqoK,S,gBCPpD,IAAI9L,EAAI,EAAQ,OACZ3F,EAAc,EAAQ,MACtB0R,EAAa,EAAQ,MACrBlxF,EAAW,EAAQ,OACnB0mF,EAAS,EAAQ,OACjBtxH,EAAiB,UACjB+7H,EAA4B,EAAQ,MACpCC,EAAoC,EAAQ,MAC5CpT,EAAe,EAAQ,OACvBhjI,EAAM,EAAQ,OACdq2I,EAAW,EAAQ,OAEnBC,GAAW,EACXC,EAAWv2I,EAAI,QACfiS,EAAK,EAELukI,EAAc,SAAU1T,GAC1B1oH,EAAe0oH,EAAIyT,EAAU,CAAEjmK,MAAO,CACpCmmK,SAAU,IAAMxkI,IAChBykI,SAAU,OAIV7N,EAAU,SAAU/F,EAAI32J,GAE1B,IAAK64E,EAAS89E,GAAK,MAAoB,iBAANA,EAAiBA,GAAmB,iBAANA,EAAiB,IAAM,KAAOA,EAC7F,IAAK4I,EAAO5I,EAAIyT,GAAW,CAEzB,IAAKvT,EAAaF,GAAK,MAAO,IAE9B,IAAK32J,EAAQ,MAAO,IAEpBqqK,EAAY1T,GAEZ,OAAOA,EAAGyT,GAAUE,UAGpBE,EAAc,SAAU7T,EAAI32J,GAC9B,IAAKu/J,EAAO5I,EAAIyT,GAAW,CAEzB,IAAKvT,EAAaF,GAAK,OAAO,EAE9B,IAAK32J,EAAQ,OAAO,EAEpBqqK,EAAY1T,GAEZ,OAAOA,EAAGyT,GAAUG,UAIpBE,EAAW,SAAU9T,GAEvB,OADIuT,GAAYC,GAAYtT,EAAaF,KAAQ4I,EAAO5I,EAAIyT,IAAWC,EAAY1T,GAC5EA,GAGLoI,EAAS,WACXnzH,EAAKmzH,OAAS,aACdoL,GAAW,EACX,IAAIxU,EAAsBqU,EAA0BllK,EAChDurG,EAASgoD,EAAY,GAAGhoD,QACxBlhG,EAAO,GACXA,EAAKi7J,GAAY,EAGbzU,EAAoBxmJ,GAAMjO,SAC5B8oK,EAA0BllK,EAAI,SAAU6xJ,GAEtC,IADA,IAAIlyJ,EAASkxJ,EAAoBgB,GACxB51J,EAAI,EAAGG,EAASuD,EAAOvD,OAAQH,EAAIG,EAAQH,IAClD,GAAI0D,EAAO1D,KAAOqpK,EAAU,CAC1B/5D,EAAO5rG,EAAQ1D,EAAG,GAClB,MAEF,OAAO0D,GAGXu5J,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,EAAM9G,QAAQ,GAAQ,CAChD3J,oBAAqBsU,EAAkCnlK,MAKzD8mC,EAAOw+G,EAAOD,QAAU,CAC1B4U,OAAQA,EACRrC,QAASA,EACT8N,YAAaA,EACbC,SAAUA,GAGZV,EAAWK,IAAY,G,gBCxFvB,IAaI5hJ,EAAKjnB,EAAKmnB,EAbVgiJ,EAAkB,EAAQ,OAC1Bx1B,EAAS,EAAQ,OACjBmjB,EAAc,EAAQ,MACtBx/E,EAAW,EAAQ,OACnBsoF,EAA8B,EAAQ,OACtC5B,EAAS,EAAQ,OACjBoL,EAAS,EAAQ,MACjBC,EAAY,EAAQ,MACpBb,EAAa,EAAQ,MAErBc,EAA6B,6BAC7BllK,EAAYuvI,EAAOvvI,UACnBmlK,EAAU51B,EAAO41B,QAGjBC,EAAU,SAAUpU,GACtB,OAAOjuI,EAAIiuI,GAAMp1J,EAAIo1J,GAAMnuI,EAAImuI,EAAI,KAGjCmG,EAAY,SAAUtE,GACxB,OAAO,SAAU7B,GACf,IAAIzqH,EACJ,IAAK2sC,EAAS89E,KAAQzqH,EAAQ3qC,EAAIo1J,IAAK5pI,OAASyrI,EAC9C,MAAM7yJ,EAAU,0BAA4B6yJ,EAAO,aACnD,OAAOtsH,IAIb,GAAIw+H,GAAmBC,EAAOz+H,MAAO,CACnC,IAAIy9H,EAAQgB,EAAOz+H,QAAUy+H,EAAOz+H,MAAQ,IAAI4+H,GAC5CE,EAAQ3S,EAAYsR,EAAMpoK,KAC1B0pK,EAAQ5S,EAAYsR,EAAMjhJ,KAC1BwiJ,EAAQ7S,EAAYsR,EAAMnhJ,KAC9BA,EAAM,SAAUmuI,EAAIpsH,GAClB,GAAI0gI,EAAMtB,EAAOhT,GAAK,MAAM,IAAIhxJ,EAAUklK,GAG1C,OAFAtgI,EAAS4gI,OAASxU,EAClBuU,EAAMvB,EAAOhT,EAAIpsH,GACVA,GAEThpC,EAAM,SAAUo1J,GACd,OAAOqU,EAAMrB,EAAOhT,IAAO,IAE7BjuI,EAAM,SAAUiuI,GACd,OAAOsU,EAAMtB,EAAOhT,QAEjB,CACL,IAAItsG,EAAQugH,EAAU,SACtBb,EAAW1/G,IAAS,EACpB7hC,EAAM,SAAUmuI,EAAIpsH,GAClB,GAAIg1H,EAAO5I,EAAItsG,GAAQ,MAAM,IAAI1kD,EAAUklK,GAG3C,OAFAtgI,EAAS4gI,OAASxU,EAClBwK,EAA4BxK,EAAItsG,EAAO9f,GAChCA,GAEThpC,EAAM,SAAUo1J,GACd,OAAO4I,EAAO5I,EAAItsG,GAASssG,EAAGtsG,GAAS,IAEzC3hC,EAAM,SAAUiuI,GACd,OAAO4I,EAAO5I,EAAItsG,IAItB+/F,EAAOD,QAAU,CACf3hI,IAAKA,EACLjnB,IAAKA,EACLmnB,IAAKA,EACLqiJ,QAASA,EACTjO,UAAWA,I,gBCnEb,IAAIzG,EAAkB,EAAQ,MAC1BkK,EAAY,EAAQ,OAEpBvF,EAAW3E,EAAgB,YAC3BE,EAAiBh3J,MAAMQ,UAG3BqqJ,EAAOD,QAAU,SAAUwM,GACzB,YAAc5wH,IAAP4wH,IAAqB4J,EAAUhhK,QAAUo3J,GAAMJ,EAAeyE,KAAcrE,K,gBCRrF,IAAI2O,EAAU,EAAQ,OAKtBlb,EAAOD,QAAU5qJ,MAAM21E,SAAW,SAAiBghF,GACjD,MAA4B,SAArBoP,EAAQpP,K,UCJjB9L,EAAOD,QAAU,SAAU+L,GACzB,MAA0B,mBAAZA,I,eCHhB,IAAImC,EAAc,EAAQ,MACtBzB,EAAQ,EAAQ,OAChBb,EAAa,EAAQ,OACrBuP,EAAU,EAAQ,OAClBC,EAAa,EAAQ,OACrBsE,EAAgB,EAAQ,OAExBpvF,EAAO,aACP2wF,EAAQ,GACRhD,EAAY7C,EAAW,UAAW,aAClC8F,EAAoB,2BACpBnxJ,EAAOm+I,EAAYgT,EAAkBnxJ,MACrC2rJ,GAAuBwF,EAAkBnxJ,KAAKugE,GAE9C6wF,EAAsB,SAAuBpV,GAC/C,IAAKH,EAAWG,GAAW,OAAO,EAClC,IAEE,OADAkS,EAAU3tF,EAAM2wF,EAAOlV,IAChB,EACP,MAAO/vJ,GACP,OAAO,IAIPolK,EAAsB,SAAuBrV,GAC/C,IAAKH,EAAWG,GAAW,OAAO,EAClC,OAAQoP,EAAQpP,IACd,IAAK,gBACL,IAAK,oBACL,IAAK,yBAA0B,OAAO,EAExC,IAIE,OAAO2P,KAAyB3rJ,EAAKmxJ,EAAmBxB,EAAc3T,IACtE,MAAO/vJ,GACP,OAAO,IAIXolK,EAAoBjF,MAAO,EAI3Blc,EAAOD,SAAWie,GAAaxR,GAAM,WACnC,IAAIsE,EACJ,OAAOoQ,EAAoBA,EAAoB9qK,QACzC8qK,EAAoBlsK,UACpBksK,GAAoB,WAAcpQ,GAAS,MAC5CA,KACFqQ,EAAsBD,G,gBCnD3B,IAAI1U,EAAQ,EAAQ,OAChBb,EAAa,EAAQ,OAErBoT,EAAc,kBAEdlL,EAAW,SAAUuN,EAASC,GAChC,IAAItnK,EAAQ8L,EAAKy7J,EAAUF,IAC3B,OAAOrnK,GAASwnK,GACZxnK,GAASynK,IACT7V,EAAW0V,GAAa7U,EAAM6U,KAC5BA,IAGJC,EAAYzN,EAASyN,UAAY,SAAUxL,GAC7C,OAAO1vJ,OAAO0vJ,GAAQnvJ,QAAQo4J,EAAa,KAAK90I,eAG9CpkB,EAAOguJ,EAAShuJ,KAAO,GACvB27J,EAAS3N,EAAS2N,OAAS,IAC3BD,EAAW1N,EAAS0N,SAAW,IAEnCvhB,EAAOD,QAAU8T,G,gBCrBjB,IAAIlI,EAAa,EAAQ,OAEzB3L,EAAOD,QAAU,SAAUwM,GACzB,MAAoB,iBAANA,EAAwB,OAAPA,EAAcZ,EAAWY,K,UCH1DvM,EAAOD,SAAU,G,gBCAjB,IAAItxE,EAAW,EAAQ,OACnBysF,EAAU,EAAQ,OAClBjP,EAAkB,EAAQ,MAE1BuJ,EAAQvJ,EAAgB,SAI5BjM,EAAOD,QAAU,SAAUwM,GACzB,IAAIkV,EACJ,OAAOhzF,EAAS89E,UAAmC5wH,KAA1B8lI,EAAWlV,EAAGiJ,MAA0BiM,EAA0B,UAAfvG,EAAQ3O,M,gBCVtF,IAAI4O,EAAa,EAAQ,OACrBxP,EAAa,EAAQ,OACrBW,EAAgB,EAAQ,OACxBoV,EAAoB,EAAQ,OAE5BpQ,EAAUt8J,OAEdgrJ,EAAOD,QAAU2hB,EAAoB,SAAUnV,GAC7C,MAAoB,iBAANA,GACZ,SAAUA,GACZ,IAAIoV,EAAUxG,EAAW,UACzB,OAAOxP,EAAWgW,IAAYrV,EAAcqV,EAAQhsK,UAAW27J,EAAQ/E,M,gBCXzE,IAAIzzG,EAAO,EAAQ,OACf1iD,EAAO,EAAQ,OACfq6J,EAAW,EAAQ,OACnB7E,EAAc,EAAQ,OACtBuB,EAAwB,EAAQ,OAChCR,EAAoB,EAAQ,OAC5BL,EAAgB,EAAQ,OACxBe,EAAc,EAAQ,OACtBC,EAAoB,EAAQ,OAC5BoD,EAAgB,EAAQ,OAExB7E,EAAatwJ,UAEbqmK,EAAS,SAAUC,EAASxnK,GAC9B5E,KAAKosK,QAAUA,EACfpsK,KAAK4E,OAASA,GAGZynK,EAAkBF,EAAOjsK,UAE7BqqJ,EAAOD,QAAU,SAAUgT,EAAUgP,EAAiB1qK,GACpD,IAKI+D,EAAU4mK,EAAQj6H,EAAOjxC,EAAQuD,EAAQH,EAAMD,EAL/C6yG,EAAOz1G,GAAWA,EAAQy1G,KAC1BomD,KAAgB77J,IAAWA,EAAQ67J,YACnC+O,KAAiB5qK,IAAWA,EAAQ4qK,aACpCC,KAAiB7qK,IAAWA,EAAQ6qK,aACpCzxF,EAAK33B,EAAKipH,EAAiBj1D,GAG3BwN,EAAO,SAAU6nD,GAEnB,OADI/mK,GAAUs1J,EAAct1J,EAAU,SAAU+mK,GACzC,IAAIP,GAAO,EAAMO,IAGtBC,EAAS,SAAUroK,GACrB,OAAIm5J,GACFzC,EAAS12J,GACFmoK,EAAczxF,EAAG12E,EAAM,GAAIA,EAAM,GAAIugH,GAAQ7pC,EAAG12E,EAAM,GAAIA,EAAM,KAChEmoK,EAAczxF,EAAG12E,EAAOugH,GAAQ7pC,EAAG12E,IAG9C,GAAIkoK,EACF7mK,EAAW23J,MACN,CAEL,GADAiP,EAAS1U,EAAkByF,IACtBiP,EAAQ,MAAMnW,EAAWD,EAAYmH,GAAY,oBAEtD,GAAI5F,EAAsB6U,GAAS,CACjC,IAAKj6H,EAAQ,EAAGjxC,EAAS61J,EAAkBoG,GAAWj8J,EAASixC,EAAOA,IAEpE,GADA1tC,EAAS+nK,EAAOrP,EAAShrH,IACrB1tC,GAAUiyJ,EAAcwV,EAAiBznK,GAAS,OAAOA,EAC7D,OAAO,IAAIunK,GAAO,GAEtBxmK,EAAWiyJ,EAAY0F,EAAUiP,GAGnC9nK,EAAOkB,EAASlB,KAChB,QAASD,EAAO7D,EAAK8D,EAAMkB,IAAWd,KAAM,CAC1C,IACED,EAAS+nK,EAAOnoK,EAAKF,OACrB,MAAOgC,GACP20J,EAAct1J,EAAU,QAASW,GAEnC,GAAqB,iBAAV1B,GAAsBA,GAAUiyJ,EAAcwV,EAAiBznK,GAAS,OAAOA,EAC1F,OAAO,IAAIunK,GAAO,K,gBC/DtB,IAAIxrK,EAAO,EAAQ,OACfq6J,EAAW,EAAQ,OACnB8N,EAAY,EAAQ,OAExBve,EAAOD,QAAU,SAAU3kJ,EAAUsnG,EAAM3oG,GACzC,IAAIsoK,EAAaC,EACjB7R,EAASr1J,GACT,IAEE,GADAinK,EAAc9D,EAAUnjK,EAAU,WAC7BinK,EAAa,CAChB,GAAa,UAAT3/D,EAAkB,MAAM3oG,EAC5B,OAAOA,EAETsoK,EAAcjsK,EAAKisK,EAAajnK,GAChC,MAAOW,GACPumK,GAAa,EACbD,EAActmK,EAEhB,GAAa,UAAT2mG,EAAkB,MAAM3oG,EAC5B,GAAIuoK,EAAY,MAAMD,EAEtB,OADA5R,EAAS4R,GACFtoK,I,6BCpBT,IAaIk8J,EAAmBsM,EAAmCC,EAbtDhW,EAAQ,EAAQ,OAChBb,EAAa,EAAQ,OACrB/1J,EAAS,EAAQ,OACjBm1J,EAAiB,EAAQ,OACzB+I,EAAgB,EAAQ,OACxB7H,EAAkB,EAAQ,MAC1BkL,EAAU,EAAQ,OAElBvG,EAAW3E,EAAgB,YAC3B0L,GAAyB,EAOzB,GAAGr/J,OACLkqK,EAAgB,GAAGlqK,OAEb,SAAUkqK,GAEdD,EAAoCxX,EAAeA,EAAeyX,IAC9DD,IAAsCvtK,OAAOW,YAAWsgK,EAAoBsM,IAHlD5K,GAAyB,GAO3D,IAAI8K,OAA8C9mI,GAArBs6H,GAAkCzJ,GAAM,WACnE,IAAIznJ,EAAO,GAEX,OAAOkxJ,EAAkBrF,GAAUx6J,KAAK2O,KAAUA,KAGhD09J,EAAwBxM,EAAoB,GACvCkB,IAASlB,EAAoBrgK,EAAOqgK,IAIxCtK,EAAWsK,EAAkBrF,KAChCkD,EAAcmC,EAAmBrF,GAAU,WACzC,OAAOn7J,QAIXuqJ,EAAOD,QAAU,CACfkW,kBAAmBA,EACnB0B,uBAAwBA,I,UC9C1B3X,EAAOD,QAAU,I,gBCAjB,IAAI2iB,EAAW,EAAQ,OAIvB1iB,EAAOD,QAAU,SAAUxvI,GACzB,OAAOmyJ,EAASnyJ,EAAIzZ,U,gBCLtB,IAAI01J,EAAQ,EAAQ,OAChBb,EAAa,EAAQ,OACrBwJ,EAAS,EAAQ,OACjB9C,EAAc,EAAQ,OACtBoF,EAA6B,sBAC7BgI,EAAgB,EAAQ,OACxBlN,EAAsB,EAAQ,OAE9BoQ,EAAuBpQ,EAAoBoO,QAC3CxN,EAAmBZ,EAAoBp7J,IAEvC0sC,EAAiB7uC,OAAO6uC,eAExB++H,EAAsBvQ,IAAgB7F,GAAM,WAC9C,OAAsF,IAA/E3oH,GAAe,cAA6B,SAAU,CAAE9pC,MAAO,IAAKjD,UAGzE+rK,EAAWz8J,OAAOA,QAAQyG,MAAM,UAEhC+pJ,EAAc5W,EAAOD,QAAU,SAAUhmJ,EAAO+O,EAAMzR,GACvB,YAA7B+O,OAAO0C,GAAMk5B,MAAM,EAAG,KACxBl5B,EAAO,IAAM1C,OAAO0C,GAAMnC,QAAQ,qBAAsB,MAAQ,KAE9DtP,GAAWA,EAAQw/J,SAAQ/tJ,EAAO,OAASA,GAC3CzR,GAAWA,EAAQy/J,SAAQhuJ,EAAO,OAASA,KAC1CqsJ,EAAOp7J,EAAO,SAAY09J,GAA8B19J,EAAM+O,OAASA,IAC1E+6B,EAAe9pC,EAAO,OAAQ,CAAEA,MAAO+O,EAAMi7B,cAAc,IAEzD6+H,GAAuBvrK,GAAW89J,EAAO99J,EAAS,UAAY0C,EAAMjD,SAAWO,EAAQyrK,OACzFj/H,EAAe9pC,EAAO,SAAU,CAAEA,MAAO1C,EAAQyrK,QAEnD,IACMzrK,GAAW89J,EAAO99J,EAAS,gBAAkBA,EAAQ3B,YACnD28J,GAAaxuH,EAAe9pC,EAAO,YAAa,CAAE08J,UAAU,IAEvD18J,EAAMpE,YAAWoE,EAAMpE,eAAYgmC,GAC9C,MAAO5/B,IACT,IAAI+lC,EAAQ6gI,EAAqB5oK,GAG/B,OAFGo7J,EAAOrzH,EAAO,YACjBA,EAAMi6B,OAAS8mG,EAASpnJ,KAAoB,iBAAR3S,EAAmBA,EAAO,KACvD/O,GAKXgiJ,SAASpmJ,UAAUqO,SAAW4yJ,GAAY,WACxC,OAAOjL,EAAWl2J,OAAS09J,EAAiB19J,MAAMsmE,QAAU0jG,EAAchqK,QACzE,a,UC5CHuqJ,EAAOD,QAAUr7I,KAAKmW,MAAQ,SAAckoJ,GAC1C,IAAInsK,GAAKmsK,EAET,OAAY,GAALnsK,GAAUA,GAAKA,EAAIA,EAAIA,EAAI,GAAK,EAAI,I,UCN7C,IAAImR,EAAOrD,KAAKqD,KACZgzC,EAAQr2C,KAAKq2C,MAKjBilG,EAAOD,QAAUr7I,KAAKs+J,OAAS,SAAeD,GAC5C,IAAInsK,GAAKmsK,EACT,OAAQnsK,EAAI,EAAImkD,EAAQhzC,GAAMnR,K,gBCRhC,IAiBImgH,EAAOksD,EAAMhQ,EAAMiQ,EAAQC,EAAQC,EAAM92F,EAAS/xE,EAjBlDuwI,EAAS,EAAQ,OACjBhyF,EAAO,EAAQ,OACfy8G,EAA2B,WAC3B8N,EAAY,aACZC,EAAS,EAAQ,MACjBC,EAAgB,EAAQ,OACxBC,EAAkB,EAAQ,OAC1BC,EAAU,EAAQ,OAElBC,EAAmB54B,EAAO44B,kBAAoB54B,EAAO64B,uBACrDv4H,EAAW0/F,EAAO1/F,SAClBo8G,EAAU1c,EAAO0c,QACjB3vJ,EAAUizI,EAAOjzI,QAEjB+rK,EAA2BrO,EAAyBzqB,EAAQ,kBAC5D+4B,EAAiBD,GAA4BA,EAAyB7pK,MAKrE8pK,IACH9sD,EAAQ,WACN,IAAIziE,EAAQm8B,EACRgzF,IAAYnvH,EAASkzG,EAAQ7rE,SAASrnC,EAAOwvH,OACjD,MAAOb,EAAM,CACXxyF,EAAKwyF,EAAKxyF,GACVwyF,EAAOA,EAAK/oK,KACZ,IACEu2E,IACA,MAAO10E,GAGP,MAFIknK,EAAMC,IACLjQ,OAAOt3H,EACN5/B,GAERk3J,OAAOt3H,EACL2Y,GAAQA,EAAOyvH,SAKhBT,GAAWG,GAAYD,IAAmBE,IAAoBt4H,GAQvDm4H,GAAiB1rK,GAAWA,EAAQC,SAE9Cw0E,EAAUz0E,EAAQC,aAAQ6jC,GAE1B2wC,EAAQ52E,YAAcmC,EACtB0C,EAAOu+C,EAAKwzB,EAAQ/xE,KAAM+xE,GAC1B42F,EAAS,WACP3oK,EAAKw8G,KAGE0sD,EACTP,EAAS,WACP1b,EAAQwc,SAASjtD,KAUnBssD,EAAYvqH,EAAKuqH,EAAWv4B,GAC5Bo4B,EAAS,WACPG,EAAUtsD,MA/BZosD,GAAS,EACTC,EAAOh4H,EAAS64H,eAAe,IAC/B,IAAIP,EAAiB3sD,GAAOmtD,QAAQd,EAAM,CAAEe,eAAe,IAC3DjB,EAAS,WACPE,EAAKv9J,KAAOs9J,GAAUA,KAgC5BnjB,EAAOD,QAAU8jB,GAAkB,SAAUpzF,GAC3C,IAAIX,EAAO,CAAEW,GAAIA,EAAIv2E,UAAMyhC,GACvBs3H,IAAMA,EAAK/4J,KAAO41E,GACjBmzF,IACHA,EAAOnzF,EACPozF,KACAjQ,EAAOnjF,I,gBCnFX,IAAIs0F,EAAgB,EAAQ,OAG5BpkB,EAAOD,QAAUqkB,KAAmBjpK,OAAO,UAAYA,OAAOkpK,Q,gBCF9D,IAAIjV,EAAa,EAAQ,MACrB5C,EAAQ,EAAQ,OAGpBxM,EAAOD,UAAY/qJ,OAAOsvK,wBAA0B9X,GAAM,WACxD,IAAI+X,EAASppK,SAGb,OAAQiL,OAAOm+J,MAAavvK,OAAOuvK,aAAmBppK,UAEnDA,OAAO+gK,MAAQ9M,GAAcA,EAAa,O,cCX/C,IAAI5C,EAAQ,EAAQ,OAChBP,EAAkB,EAAQ,MAC1BkL,EAAU,EAAQ,OAElBvG,EAAW3E,EAAgB,YAE/BjM,EAAOD,SAAWyM,GAAM,WAEtB,IAAIp1J,EAAM,IAAIyoH,IAAI,gBAAiB,YAC/B2kD,EAAeptK,EAAIotK,aACnBnqK,EAAS,GAMb,OALAjD,EAAI88C,SAAW,QACfswH,EAAajsK,SAAQ,SAAUwB,EAAOsX,GACpCmzJ,EAAa,UAAU,KACvBnqK,GAAUgX,EAAMtX,KAEVo9J,IAAY//J,EAAImuJ,SAClBif,EAAa3oJ,MACD,2BAAbzkB,EAAIs9C,MACsB,MAA1B8vH,EAAartK,IAAI,MACuB,QAAxCiP,OAAO,IAAIq+J,gBAAgB,WAC1BD,EAAa5T,IAEsB,MAApC,IAAI/wC,IAAI,eAAev1F,UACsC,MAA7D,IAAIm6I,gBAAgB,IAAIA,gBAAgB,QAAQttK,IAAI,MAEpB,eAAhC,IAAI0oH,IAAI,eAAevmF,MAEQ,YAA/B,IAAIumF,IAAI,cAAcxmG,MAEX,SAAXhf,GAEwC,MAAxC,IAAIwlH,IAAI,gBAAYlkF,GAAWrC,S,gBChCtC,IAAIwxG,EAAS,EAAQ,OACjB6gB,EAAa,EAAQ,OACrB8T,EAAgB,EAAQ,OAExBiB,EAAU51B,EAAO41B,QAErB1gB,EAAOD,QAAU4L,EAAW+U,IAAY,cAAc37J,KAAK06J,EAAciB,K,6BCLzE,IAAIlR,EAAY,EAAQ,OAEpBkV,EAAoB,SAAUnU,GAChC,IAAIz4J,EAASC,EACbtC,KAAK62E,QAAU,IAAIikF,GAAE,SAAUoU,EAAWC,GACxC,QAAgBjpI,IAAZ7jC,QAAoC6jC,IAAX5jC,EAAsB,MAAMwD,UAAU,2BACnEzD,EAAU6sK,EACV5sK,EAAS6sK,KAEXnvK,KAAKqC,QAAU03J,EAAU13J,GACzBrC,KAAKsC,OAASy3J,EAAUz3J,IAK1BioJ,EAAOD,QAAQrlJ,EAAI,SAAU61J,GAC3B,OAAO,IAAImU,EAAkBnU,K,gBCjB/B,IAAIvsJ,EAAW,EAAQ,OAEvBg8I,EAAOD,QAAU,SAAU+L,EAAU+Y,GACnC,YAAoBlpI,IAAbmwH,EAAyBj1J,UAAUC,OAAS,EAAI,GAAK+tK,EAAW7gK,EAAS8nJ,K,eCHlF,IAAI2V,EAAW,EAAQ,OAEnB5V,EAAatwJ,UAEjBykJ,EAAOD,QAAU,SAAUwM,GACzB,GAAIkV,EAASlV,GACX,MAAMV,EAAW,iDACjB,OAAOU,I,eCPX,IAAIzhB,EAAS,EAAQ,OACjB0hB,EAAQ,EAAQ,OAChByB,EAAc,EAAQ,MACtBjqJ,EAAW,EAAQ,OACnBmN,EAAO,cACP2zJ,EAAc,EAAQ,OAEtBv5H,EAAS0iH,EAAY,GAAG1iH,QACxBw5H,EAAej6B,EAAOlc,WACtBzzH,EAAS2vI,EAAO3vI,OAChBy1J,EAAWz1J,GAAUA,EAAOC,SAC5B+zJ,EAAS,EAAI4V,EAAaD,EAAc,SAAWE,KAEjDpU,IAAapE,GAAM,WAAcuY,EAAa/vK,OAAO47J,OAI3D5Q,EAAOD,QAAUoP,EAAS,SAAoB2G,GAC5C,IAAImP,EAAgB9zJ,EAAKnN,EAAS8xJ,IAC9Bz7J,EAAS0qK,EAAaE,GAC1B,OAAkB,IAAX5qK,GAA4C,KAA5BkxC,EAAO05H,EAAe,IAAa,EAAI5qK,GAC5D0qK,G,gBCrBJ,IAAIj6B,EAAS,EAAQ,OACjB0hB,EAAQ,EAAQ,OAChByB,EAAc,EAAQ,MACtBjqJ,EAAW,EAAQ,OACnBmN,EAAO,cACP2zJ,EAAc,EAAQ,OAEtBI,EAAYp6B,EAAOpwF,SACnBv/C,EAAS2vI,EAAO3vI,OAChBy1J,EAAWz1J,GAAUA,EAAOC,SAC5B2I,EAAM,YACN+L,EAAOm+I,EAAYlqJ,EAAI+L,MACvBq/I,EAA2C,IAAlC+V,EAAUJ,EAAc,OAAmD,KAApCI,EAAUJ,EAAc,SAEtElU,IAAapE,GAAM,WAAc0Y,EAAUlwK,OAAO47J,OAIxD5Q,EAAOD,QAAUoP,EAAS,SAAkB2G,EAAQqP,GAClD,IAAI/Y,EAAIj7I,EAAKnN,EAAS8xJ,IACtB,OAAOoP,EAAU9Y,EAAI+Y,IAAU,IAAOr1J,EAAK/L,EAAKqoJ,GAAK,GAAK,MACxD8Y,G,6BCpBJ,IAAI7S,EAAc,EAAQ,OACtBpE,EAAc,EAAQ,MACtB73J,EAAO,EAAQ,OACfo2J,EAAQ,EAAQ,OAChB4Y,EAAa,EAAQ,OACrBC,EAA8B,EAAQ,OACtCC,EAA6B,EAAQ,OACrCzvI,EAAW,EAAQ,OACnBq4H,EAAgB,EAAQ,OAGxBqX,EAAUvwK,OAAOwB,OAEjBqtC,EAAiB7uC,OAAO6uC,eACxB5nC,EAASgyJ,EAAY,GAAGhyJ,QAI5B+jJ,EAAOD,SAAWwlB,GAAW/Y,GAAM,WAEjC,GAAI6F,GAQiB,IARFkT,EAAQ,CAAElwK,EAAG,GAAKkwK,EAAQ1hI,EAAe,GAAI,IAAK,CACnEC,YAAY,EACZ3sC,IAAK,WACH0sC,EAAepuC,KAAM,IAAK,CACxBsE,MAAO,EACP+pC,YAAY,OAGd,CAAEzuC,EAAG,KAAMA,EAAS,OAAO,EAE/B,IAAImwK,EAAI,GACJC,EAAI,GAEJlB,EAASppK,SACTuqK,EAAW,uBAGf,OAFAF,EAAEjB,GAAU,EACZmB,EAAS74J,MAAM,IAAItU,SAAQ,SAAUotK,GAAOF,EAAEE,GAAOA,KACpB,GAA1BJ,EAAQ,GAAIC,GAAGjB,IAAgBa,EAAWG,EAAQ,GAAIE,IAAIhqJ,KAAK,KAAOiqJ,KAC1E,SAAgBtqJ,EAAQ2gD,GAC3B,IAAI6pG,EAAI/vI,EAASza,GACbyxI,EAAkBh2J,UAAUC,OAC5BixC,EAAQ,EACRu8H,EAAwBe,EAA4B3qK,EACpDm8F,EAAuByuE,EAA2B5qK,EACtD,MAAOmyJ,EAAkB9kH,EAAO,CAC9B,IAII12B,EAJA+6I,EAAI8B,EAAcr3J,UAAUkxC,MAC5BzvC,EAAOgsK,EAAwBroK,EAAOmpK,EAAWhZ,GAAIkY,EAAsBlY,IAAMgZ,EAAWhZ,GAC5Ft1J,EAASwB,EAAKxB,OACdwF,EAAI,EAER,MAAOxF,EAASwF,EACd+U,EAAM/Y,EAAKgE,KACN+1J,IAAej8J,EAAKygG,EAAsBu1D,EAAG/6I,KAAMu0J,EAAEv0J,GAAO+6I,EAAE/6I,IAErE,OAAOu0J,GACPL,G,gBCvDJ,IAmDIM,EAnDApV,EAAW,EAAQ,OACnBqV,EAAyB,EAAQ,OACjCC,EAAc,EAAQ,OACtBpG,EAAa,EAAQ,MACrBqG,EAAO,EAAQ,OACfrL,EAAwB,EAAQ,OAChC6F,EAAY,EAAQ,MAEpByF,EAAK,IACLC,EAAK,IACLC,EAAY,YACZC,EAAS,SACTC,EAAW7F,EAAU,YAErB8F,EAAmB,aAEnBC,EAAY,SAAUtvK,GACxB,OAAOivK,EAAKE,EAASH,EAAKhvK,EAAUivK,EAAK,IAAME,EAASH,GAItDO,EAA4B,SAAUX,GACxCA,EAAgB9c,MAAMwd,EAAU,KAChCV,EAAgBppJ,QAChB,IAAIgqJ,EAAOZ,EAAgBa,aAAa1xK,OAExC,OADA6wK,EAAkB,KACXY,GAILE,EAA2B,WAE7B,IAEIC,EAFArnG,EAASo7F,EAAsB,UAC/BkM,EAAK,OAAST,EAAS,IAU3B,OARA7mG,EAAOU,MAAM6mG,QAAU,OACvBd,EAAKzlG,YAAYhB,GAEjBA,EAAOO,IAAM15D,OAAOygK,GACpBD,EAAiBrnG,EAAO1rB,cAAczI,SACtCw7H,EAAe1uK,OACf0uK,EAAe7d,MAAMwd,EAAU,sBAC/BK,EAAenqJ,QACRmqJ,EAAejR,GASpBoR,EAAkB,WACpB,IACElB,EAAkB,IAAImB,cAAc,YACpC,MAAOjrK,IACTgrK,EAAqC,oBAAZ37H,SACrBA,SAASuwC,QAAUkqF,EACjBW,EAA0BX,GAC1Bc,IACFH,EAA0BX,GAC9B,IAAI/uK,EAASivK,EAAYjvK,OACzB,MAAOA,WAAiBiwK,EAAgBZ,GAAWJ,EAAYjvK,IAC/D,OAAOiwK,KAGTpH,EAAW0G,IAAY,EAKvBrmB,EAAOD,QAAU/qJ,OAAOY,QAAU,SAAgBg3J,EAAGqa,GACnD,IAAI5sK,EAQJ,OAPU,OAANuyJ,GACF0Z,EAAiBH,GAAa1V,EAAS7D,GACvCvyJ,EAAS,IAAIisK,EACbA,EAAiBH,GAAa,KAE9B9rK,EAAOgsK,GAAYzZ,GACdvyJ,EAAS0sK,SACMprI,IAAfsrI,EAA2B5sK,EAASyrK,EAAuBprK,EAAEL,EAAQ4sK,K,gBCjF9E,IAAI5U,EAAc,EAAQ,OACtB6U,EAA0B,EAAQ,MAClC5R,EAAuB,EAAQ,MAC/B7E,EAAW,EAAQ,OACnB5C,EAAkB,EAAQ,OAC1BuX,EAAa,EAAQ,OAKzBrlB,EAAQrlJ,EAAI23J,IAAgB6U,EAA0BlyK,OAAOywJ,iBAAmB,SAA0BmH,EAAGqa,GAC3GxW,EAAS7D,GACT,IAIIv7I,EAJA65G,EAAQ2iC,EAAgBoZ,GACxB3uK,EAAO8sK,EAAW6B,GAClBnwK,EAASwB,EAAKxB,OACdixC,EAAQ,EAEZ,MAAOjxC,EAASixC,EAAOutH,EAAqB56J,EAAEkyJ,EAAGv7I,EAAM/Y,EAAKyvC,KAAUmjF,EAAM75G,IAC5E,OAAOu7I,I,eClBT,IAAIyF,EAAc,EAAQ,OACtB8U,EAAiB,EAAQ,OACzBD,EAA0B,EAAQ,MAClCzW,EAAW,EAAQ,OACnBiG,EAAgB,EAAQ,OAExB7K,EAAatwJ,UAEb6rK,EAAkBpyK,OAAO6uC,eAEzBwjI,EAA4BryK,OAAOugK,yBACnC+R,EAAa,aACb5P,EAAe,eACf6P,EAAW,WAIfxnB,EAAQrlJ,EAAI23J,EAAc6U,EAA0B,SAAwBta,EAAGhzJ,EAAG4tK,GAIhF,GAHA/W,EAAS7D,GACThzJ,EAAI88J,EAAc98J,GAClB62J,EAAS+W,GACQ,oBAAN5a,GAA0B,cAANhzJ,GAAqB,UAAW4tK,GAAcD,KAAYC,IAAeA,EAAWD,GAAW,CAC5H,IAAI7/I,EAAU2/I,EAA0Bza,EAAGhzJ,GACvC8tB,GAAWA,EAAQ6/I,KACrB3a,EAAEhzJ,GAAK4tK,EAAWztK,MAClBytK,EAAa,CACXzjI,aAAc2zH,KAAgB8P,EAAaA,EAAW9P,GAAgBhwI,EAAQgwI,GAC9E5zH,WAAYwjI,KAAcE,EAAaA,EAAWF,GAAc5/I,EAAQ4/I,GACxE7Q,UAAU,IAGd,OAAO2Q,EAAgBxa,EAAGhzJ,EAAG4tK,IAC7BJ,EAAkB,SAAwBxa,EAAGhzJ,EAAG4tK,GAIlD,GAHA/W,EAAS7D,GACThzJ,EAAI88J,EAAc98J,GAClB62J,EAAS+W,GACLL,EAAgB,IAClB,OAAOC,EAAgBxa,EAAGhzJ,EAAG4tK,GAC7B,MAAOzrK,IACT,GAAI,QAASyrK,GAAc,QAASA,EAAY,MAAM3b,EAAW,2BAEjE,MADI,UAAW2b,IAAY5a,EAAEhzJ,GAAK4tK,EAAWztK,OACtC6yJ,I,gBCzCT,IAAIyF,EAAc,EAAQ,OACtBj8J,EAAO,EAAQ,OACfkvK,EAA6B,EAAQ,OACrCpP,EAA2B,EAAQ,OACnCrI,EAAkB,EAAQ,OAC1B6I,EAAgB,EAAQ,OACxBvB,EAAS,EAAQ,OACjBgS,EAAiB,EAAQ,OAGzBE,EAA4BryK,OAAOugK,yBAIvCxV,EAAQrlJ,EAAI23J,EAAcgV,EAA4B,SAAkCza,EAAGhzJ,GAGzF,GAFAgzJ,EAAIiB,EAAgBjB,GACpBhzJ,EAAI88J,EAAc98J,GACdutK,EAAgB,IAClB,OAAOE,EAA0Bza,EAAGhzJ,GACpC,MAAOmC,IACT,GAAIo5J,EAAOvI,EAAGhzJ,GAAI,OAAOs8J,GAA0B9/J,EAAKkvK,EAA2B5qK,EAAGkyJ,EAAGhzJ,GAAIgzJ,EAAEhzJ,M,eCnBjG,IAAIshK,EAAU,EAAQ,OAClBrN,EAAkB,EAAQ,OAC1B4Z,EAAuB,UACvB7X,EAAa,EAAQ,OAErB8X,EAA+B,iBAAV9tJ,QAAsBA,QAAU5kB,OAAOu2J,oBAC5Dv2J,OAAOu2J,oBAAoB3xI,QAAU,GAErC+tJ,EAAiB,SAAUpb,GAC7B,IACE,OAAOkb,EAAqBlb,GAC5B,MAAOxwJ,GACP,OAAO6zJ,EAAW8X,KAKtB1nB,EAAOD,QAAQrlJ,EAAI,SAA6B6xJ,GAC9C,OAAOmb,GAA8B,UAAfxM,EAAQ3O,GAC1Bob,EAAepb,GACfkb,EAAqB5Z,EAAgBtB,M,eCrB3C,IAAIqb,EAAqB,EAAQ,OAC7B7B,EAAc,EAAQ,OAEtBpG,EAAaoG,EAAY9pK,OAAO,SAAU,aAK9C8jJ,EAAQrlJ,EAAI1F,OAAOu2J,qBAAuB,SAA6BqB,GACrE,OAAOgb,EAAmBhb,EAAG+S,K,cCR/B5f,EAAQrlJ,EAAI1F,OAAOsvK,uB,gBCDnB,IAAInP,EAAS,EAAQ,OACjBxJ,EAAa,EAAQ,OACrB91H,EAAW,EAAQ,OACnB2qI,EAAY,EAAQ,MACpBqH,EAA2B,EAAQ,OAEnCxB,EAAW7F,EAAU,YACrBlP,EAAUt8J,OACV8yK,EAAkBxW,EAAQ37J,UAK9BqqJ,EAAOD,QAAU8nB,EAA2BvW,EAAQvG,eAAiB,SAAU6B,GAC7E,IAAIt+D,EAASz4D,EAAS+2H,GACtB,GAAIuI,EAAO7mE,EAAQ+3E,GAAW,OAAO/3E,EAAO+3E,GAC5C,IAAI3wK,EAAc44F,EAAO54F,YACzB,OAAIi2J,EAAWj2J,IAAgB44F,aAAkB54F,EACxCA,EAAYC,UACZ24F,aAAkBgjE,EAAUwW,EAAkB,O,gBCnBzD,IAAItb,EAAQ,EAAQ,OAChB/9E,EAAW,EAAQ,OACnBysF,EAAU,EAAQ,OAClB6M,EAA8B,EAAQ,MAGtCC,EAAgBhzK,OAAOy3J,aACvBwb,EAAsBzb,GAAM,WAAcwb,EAAc,MAI5DhoB,EAAOD,QAAWkoB,GAAuBF,EAA+B,SAAsBxb,GAC5F,QAAK99E,EAAS89E,OACVwb,GAA8C,eAAf7M,EAAQ3O,OACpCyb,GAAgBA,EAAczb,MACnCyb,G,gBCfJ,IAAI/Z,EAAc,EAAQ,MAE1BjO,EAAOD,QAAUkO,EAAY,GAAG3B,gB,gBCFhC,IAAI2B,EAAc,EAAQ,MACtBkH,EAAS,EAAQ,OACjBtH,EAAkB,EAAQ,OAC1Bl9I,EAAU,iBACVgvJ,EAAa,EAAQ,MAErBlkK,EAAOwyJ,EAAY,GAAGxyJ,MAE1BukJ,EAAOD,QAAU,SAAUzxD,EAAQ45E,GACjC,IAGI72J,EAHAu7I,EAAIiB,EAAgBv/D,GACpB33F,EAAI,EACJ0D,EAAS,GAEb,IAAKgX,KAAOu7I,GAAIuI,EAAOwK,EAAYtuJ,IAAQ8jJ,EAAOvI,EAAGv7I,IAAQ5V,EAAKpB,EAAQgX,GAE1E,MAAO62J,EAAMpxK,OAASH,EAAOw+J,EAAOvI,EAAGv7I,EAAM62J,EAAMvxK,SAChDga,EAAQtW,EAAQgX,IAAQ5V,EAAKpB,EAAQgX,IAExC,OAAOhX,I,gBClBT,IAAIutK,EAAqB,EAAQ,OAC7B7B,EAAc,EAAQ,OAK1B/lB,EAAOD,QAAU/qJ,OAAOsD,MAAQ,SAAcs0J,GAC5C,OAAOgb,EAAmBhb,EAAGmZ,K,2BCN/B,IAAIoC,EAAwB,GAAGtxE,qBAE3B0+D,EAA2BvgK,OAAOugK,yBAGlC6S,EAAc7S,IAA6B4S,EAAsB/xK,KAAK,CAAE,EAAG,GAAK,GAIpF2pJ,EAAQrlJ,EAAI0tK,EAAc,SAA8B3J,GACtD,IAAItnE,EAAao+D,EAAyB9/J,KAAMgpK,GAChD,QAAStnE,GAAcA,EAAWrzD,YAChCqkI,G,gBCZJ,IAAIla,EAAc,EAAQ,MACtBwC,EAAW,EAAQ,OACnB4X,EAAqB,EAAQ,OAMjCroB,EAAOD,QAAU/qJ,OAAOC,iBAAmB,aAAe,GAAK,WAC7D,IAEI6hK,EAFAwR,GAAiB,EACjBvjK,EAAO,GAEX,IAEE+xJ,EAAS7I,EAAYj5J,OAAOugK,yBAAyBvgK,OAAOW,UAAW,aAAayoB,KACpF04I,EAAO/xJ,EAAM,IACbujK,EAAiBvjK,aAAgB5P,MACjC,MAAO4G,IACT,OAAO,SAAwB6wJ,EAAGjgE,GAKhC,OAJA8jE,EAAS7D,GACTyb,EAAmB17E,GACf27E,EAAgBxR,EAAOlK,EAAGjgE,GACzBigE,EAAE13J,UAAYy3F,EACZigE,GAfoD,QAiBzDjxH,I,gBC1BN,IAAI02H,EAAc,EAAQ,OACtBpE,EAAc,EAAQ,MACtBmX,EAAa,EAAQ,OACrBvX,EAAkB,EAAQ,OAC1Bsa,EAAwB,WAExBtxE,EAAuBo3D,EAAYka,GACnC1sK,EAAOwyJ,EAAY,GAAGxyJ,MAGtBqyJ,EAAe,SAAUya,GAC3B,OAAO,SAAUhc,GACf,IAKIl7I,EALAu7I,EAAIiB,EAAgBtB,GACpBj0J,EAAO8sK,EAAWxY,GAClB91J,EAASwB,EAAKxB,OACdH,EAAI,EACJ0D,EAAS,GAEb,MAAOvD,EAASH,EACd0a,EAAM/Y,EAAK3B,KACN07J,IAAex7D,EAAqB+1D,EAAGv7I,IAC1C5V,EAAKpB,EAAQkuK,EAAa,CAACl3J,EAAKu7I,EAAEv7I,IAAQu7I,EAAEv7I,IAGhD,OAAOhX,IAIX2lJ,EAAOD,QAAU,CAGflxE,QAASi/E,GAAa,GAGtBjmH,OAAQimH,GAAa,K,6BCjCvB,IAAIqD,EAAwB,EAAQ,OAChC+J,EAAU,EAAQ,OAItBlb,EAAOD,QAAUoR,EAAwB,GAAGntJ,SAAW,WACrD,MAAO,WAAak3J,EAAQzlK,MAAQ,M,gBCPtC,IAAIW,EAAO,EAAQ,OACfu1J,EAAa,EAAQ,OACrBl9E,EAAW,EAAQ,OAEnBo9E,EAAatwJ,UAIjBykJ,EAAOD,QAAU,SAAUv5I,EAAOgiK,GAChC,IAAI/3F,EAAI97C,EACR,GAAa,WAAT6zI,GAAqB7c,EAAWl7E,EAAKjqE,EAAMxC,YAAcyqE,EAAS95C,EAAMv+B,EAAKq6E,EAAIjqE,IAAS,OAAOmuB,EACrG,GAAIg3H,EAAWl7E,EAAKjqE,EAAMiiK,WAAah6F,EAAS95C,EAAMv+B,EAAKq6E,EAAIjqE,IAAS,OAAOmuB,EAC/E,GAAa,WAAT6zI,GAAqB7c,EAAWl7E,EAAKjqE,EAAMxC,YAAcyqE,EAAS95C,EAAMv+B,EAAKq6E,EAAIjqE,IAAS,OAAOmuB,EACrG,MAAMk3H,EAAW,6C,gBCbnB,IAAIsP,EAAa,EAAQ,OACrBlN,EAAc,EAAQ,MACtB2R,EAA4B,EAAQ,MACpCyF,EAA8B,EAAQ,OACtC5U,EAAW,EAAQ,OAEnBx0J,EAASgyJ,EAAY,GAAGhyJ,QAG5B+jJ,EAAOD,QAAUob,EAAW,UAAW,YAAc,SAAiB5O,GACpE,IAAIj0J,EAAOsnK,EAA0BllK,EAAE+1J,EAASlE,IAC5C+X,EAAwBe,EAA4B3qK,EACxD,OAAO4pK,EAAwBroK,EAAO3D,EAAMgsK,EAAsB/X,IAAOj0J,I,gBCZ3E,IAAIwyI,EAAS,EAAQ,OAErBkV,EAAOD,QAAUjV,G,UCFjBkV,EAAOD,QAAU,SAAUjwI,GACzB,IACE,MAAO,CAAE/T,OAAO,EAAOhC,MAAO+V,KAC9B,MAAO/T,GACP,MAAO,CAAEA,OAAO,EAAMhC,MAAOgC,M,gBCJjC,IAAI+uI,EAAS,EAAQ,OACjB49B,EAA2B,EAAQ,MACnC/c,EAAa,EAAQ,OACrBkI,EAAW,EAAQ,OACnB4L,EAAgB,EAAQ,OACxBxT,EAAkB,EAAQ,MAC1B0c,EAAa,EAAQ,MACrBxR,EAAU,EAAQ,OAClB/H,EAAa,EAAQ,MAErBwZ,EAAyBF,GAA4BA,EAAyB/yK,UAC9E05J,EAAUpD,EAAgB,WAC1B4c,GAAc,EACdC,EAAiCnd,EAAW7gB,EAAOi+B,uBAEnDC,EAA6BnV,EAAS,WAAW,WACnD,IAAIoV,EAA6BxJ,EAAciJ,GAC3CQ,EAAyBD,IAA+B7iK,OAAOsiK,GAInE,IAAKQ,GAAyC,KAAf9Z,EAAmB,OAAO,EAEzD,GAAI+H,KAAayR,EAAuB,WAAYA,EAAuB,YAAa,OAAO,EAI/F,GAAIxZ,GAAc,IAAM,cAAcrqJ,KAAKkkK,GAA6B,OAAO,EAE/E,IAAI38F,EAAU,IAAIo8F,GAAyB,SAAU5wK,GAAWA,EAAQ,MACpEqxK,EAAc,SAAUr5J,GAC1BA,GAAK,eAA6B,gBAEhCpa,EAAc42E,EAAQ52E,YAAc,GAGxC,OAFAA,EAAY25J,GAAW8Z,EACvBN,EAAcv8F,EAAQ/xE,MAAK,yBAAwC4uK,GAC9DN,IAEGK,GAA0BP,IAAeG,KAGnD9oB,EAAOD,QAAU,CACfqpB,YAAaJ,EACbK,gBAAiBP,EACjBD,YAAaA,I,eC5Cf,IAAI/9B,EAAS,EAAQ,OAErBkV,EAAOD,QAAUjV,EAAOjzI,S,gBCFxB,IAAI44J,EAAW,EAAQ,OACnBhiF,EAAW,EAAQ,OACnB66F,EAAuB,EAAQ,OAEnCtpB,EAAOD,QAAU,SAAUwQ,EAAGwS,GAE5B,GADAtS,EAASF,GACL9hF,EAASs0F,IAAMA,EAAErtK,cAAgB66J,EAAG,OAAOwS,EAC/C,IAAIwG,EAAoBD,EAAqB5uK,EAAE61J,GAC3Cz4J,EAAUyxK,EAAkBzxK,QAEhC,OADAA,EAAQirK,GACDwG,EAAkBj9F,U,gBCV3B,IAAIo8F,EAA2B,EAAQ,MACnC1U,EAA8B,EAAQ,OACtCgV,EAA6B,qBAEjChpB,EAAOD,QAAUipB,IAA+BhV,GAA4B,SAAUjB,GACpF2V,EAAyBrxI,IAAI07H,GAAUx4J,UAAKohC,GAAW,mB,eCLzD,IAAIkI,EAAiB,UAErBm8G,EAAOD,QAAU,SAAUypB,EAAQC,EAAQp4J,GACzCA,KAAOm4J,GAAU3lI,EAAe2lI,EAAQn4J,EAAK,CAC3C0yB,cAAc,EACd5sC,IAAK,WAAc,OAAOsyK,EAAOp4J,IACjC+M,IAAK,SAAUmuI,GAAMkd,EAAOp4J,GAAOk7I,O,UCNvC,IAAImd,EAAQ,WACVj0K,KAAKwtK,KAAO,KACZxtK,KAAKk0K,KAAO,MAGdD,EAAM/zK,UAAY,CAChBi9B,IAAK,SAAU/T,GACb,IAAIpN,EAAQ,CAAEoN,KAAMA,EAAM3kB,KAAM,MAC5BzE,KAAKwtK,KAAMxtK,KAAKk0K,KAAKzvK,KAAOuX,EAC3Bhc,KAAKwtK,KAAOxxJ,EACjBhc,KAAKk0K,KAAOl4J,GAEdta,IAAK,WACH,IAAIsa,EAAQhc,KAAKwtK,KACjB,GAAIxxJ,EAGF,OAFAhc,KAAKwtK,KAAOxxJ,EAAMvX,KACdzE,KAAKk0K,OAASl4J,IAAOhc,KAAKk0K,KAAO,MAC9Bl4J,EAAMoN,OAKnBmhI,EAAOD,QAAU2pB,G,gBCtBjB,IAAItzK,EAAO,EAAQ,OACfq6J,EAAW,EAAQ,OACnB9E,EAAa,EAAQ,OACrBuP,EAAU,EAAQ,OAClBiB,EAAa,EAAQ,OAErBtQ,EAAatwJ,UAIjBykJ,EAAOD,QAAU,SAAU6pB,EAAGxd,GAC5B,IAAIt8I,EAAO85J,EAAE95J,KACb,GAAI67I,EAAW77I,GAAO,CACpB,IAAIzV,EAASjE,EAAK0Z,EAAM85J,EAAGxd,GAE3B,OADe,OAAX/xJ,GAAiBo2J,EAASp2J,GACvBA,EAET,GAAmB,WAAf6gK,EAAQ0O,GAAiB,OAAOxzK,EAAK+lK,EAAYyN,EAAGxd,GACxD,MAAMP,EAAW,iD,6BCfnB,IAAIz1J,EAAO,EAAQ,OACf63J,EAAc,EAAQ,MACtBjqJ,EAAW,EAAQ,OACnB6lK,EAAc,EAAQ,OACtBC,EAAgB,EAAQ,OACxBvJ,EAAS,EAAQ,OACjB3qK,EAAS,EAAQ,OACjBu9J,EAAmB,aACnB4W,EAAsB,EAAQ,MAC9BC,EAAkB,EAAQ,OAE1BC,EAAgB1J,EAAO,wBAAyBn6J,OAAOzQ,UAAUgR,SACjEujK,EAAal4J,OAAOrc,UAAUma,KAC9Bq6J,EAAcD,EACd3+H,EAAS0iH,EAAY,GAAG1iH,QACxB56B,EAAUs9I,EAAY,GAAGt9I,SACzBhK,EAAUsnJ,EAAY,GAAGtnJ,SACzBuqJ,EAAcjD,EAAY,GAAGjsH,OAE7BooI,EAA2B,WAC7B,IAAIC,EAAM,IACNC,EAAM,MAGV,OAFAl0K,EAAK8zK,EAAYG,EAAK,KACtBj0K,EAAK8zK,EAAYI,EAAK,KACG,IAAlBD,EAAI5e,WAAqC,IAAlB6e,EAAI7e,UALL,GAQ3B8e,EAAgBT,EAAcU,aAG9BC,OAAuC9uI,IAAvB,OAAO7rB,KAAK,IAAI,GAEhC46J,EAAQN,GAA4BK,GAAiBF,GAAiBR,GAAuBC,EAE7FU,IACFP,EAAc,SAAcrU,GAC1B,IAIIz7J,EAAQswK,EAAQlf,EAAWvmH,EAAOvuC,EAAG23F,EAAQs8E,EAJ7ClO,EAAKjnK,KACLqsC,EAAQqxH,EAAiBuJ,GACzBtsJ,EAAMpM,EAAS8xJ,GACf+U,EAAM/oI,EAAM+oI,IAGhB,GAAIA,EAIF,OAHAA,EAAIpf,UAAYiR,EAAGjR,UACnBpxJ,EAASjE,EAAK+zK,EAAaU,EAAKz6J,GAChCssJ,EAAGjR,UAAYof,EAAIpf,UACZpxJ,EAGT,IAAIywK,EAAShpI,EAAMgpI,OACfC,EAASR,GAAiB7N,EAAGqO,OAC7BpuE,EAAQvmG,EAAKyzK,EAAanN,GAC1B3gG,EAAS2gG,EAAG3gG,OACZivG,EAAa,EACbC,EAAU76J,EA+Cd,GA7CI26J,IACFpuE,EAAQh2F,EAAQg2F,EAAO,IAAK,KACC,IAAzBhsF,EAAQgsF,EAAO,OACjBA,GAAS,KAGXsuE,EAAU/Z,EAAY9gJ,EAAKssJ,EAAGjR,WAE1BiR,EAAGjR,UAAY,KAAOiR,EAAGwO,WAAaxO,EAAGwO,WAA+C,OAAlC3/H,EAAOn7B,EAAKssJ,EAAGjR,UAAY,MACnF1vF,EAAS,OAASA,EAAS,IAC3BkvG,EAAU,IAAMA,EAChBD,KAIFL,EAAS,IAAI34J,OAAO,OAAS+pD,EAAS,IAAK4gC,IAGzC8tE,IACFE,EAAS,IAAI34J,OAAO,IAAM+pD,EAAS,WAAY4gC,IAE7CytE,IAA0B3e,EAAYiR,EAAGjR,WAE7CvmH,EAAQ9uC,EAAK8zK,EAAYa,EAASJ,EAASjO,EAAIuO,GAE3CF,EACE7lI,GACFA,EAAM1+B,MAAQ0qJ,EAAYhsH,EAAM1+B,MAAOwkK,GACvC9lI,EAAM,GAAKgsH,EAAYhsH,EAAM,GAAI8lI,GACjC9lI,EAAM6C,MAAQ20H,EAAGjR,UACjBiR,EAAGjR,WAAavmH,EAAM,GAAGpuC,QACpB4lK,EAAGjR,UAAY,EACb2e,GAA4BllI,IACrCw3H,EAAGjR,UAAYiR,EAAG5xB,OAAS5lG,EAAM6C,MAAQ7C,EAAM,GAAGpuC,OAAS20J,GAEzDgf,GAAiBvlI,GAASA,EAAMpuC,OAAS,GAG3CV,EAAK6zK,EAAe/kI,EAAM,GAAIylI,GAAQ,WACpC,IAAKh0K,EAAI,EAAGA,EAAIE,UAAUC,OAAS,EAAGH,SACfglC,IAAjB9kC,UAAUF,KAAkBuuC,EAAMvuC,QAAKglC,MAK7CuJ,GAAS4lI,EAEX,IADA5lI,EAAM4lI,OAASx8E,EAAS14F,EAAO,MAC1Be,EAAI,EAAGA,EAAIm0K,EAAOh0K,OAAQH,IAC7Bi0K,EAAQE,EAAOn0K,GACf23F,EAAOs8E,EAAM,IAAM1lI,EAAM0lI,EAAM,IAInC,OAAO1lI,IAIX86G,EAAOD,QAAUoqB,G,6BCnHjB,IAAI1Z,EAAW,EAAQ,OAIvBzQ,EAAOD,QAAU,WACf,IAAIjzC,EAAO2jD,EAASh7J,MAChB4E,EAAS,GAQb,OAPIyyG,EAAKq+D,aAAY9wK,GAAU,KAC3ByyG,EAAKg+B,SAAQzwI,GAAU,KACvByyG,EAAKs+D,aAAY/wK,GAAU,KAC3ByyG,EAAKo+D,YAAW7wK,GAAU,KAC1ByyG,EAAKu+D,SAAQhxK,GAAU,KACvByyG,EAAKu/C,UAAShyJ,GAAU,KACxByyG,EAAKi+D,SAAQ1wK,GAAU,KACpBA,I,gBCfT,IAAIjE,EAAO,EAAQ,OACf++J,EAAS,EAAQ,OACjB7I,EAAgB,EAAQ,OACxBgf,EAAc,EAAQ,OAEtBlP,EAAkBpqJ,OAAOrc,UAE7BqqJ,EAAOD,QAAU,SAAU6pB,GACzB,IAAIjtE,EAAQitE,EAAEjtE,MACd,YAAiBhhE,IAAVghE,GAAyB,UAAWy/D,GAAqBjH,EAAOyU,EAAG,WAAYtd,EAAc8P,EAAiBwN,GAC1FjtE,EAAvBvmG,EAAKk1K,EAAa1B,K,gBCVxB,IAAIpd,EAAQ,EAAQ,OAChB1hB,EAAS,EAAQ,OAGjBygC,EAAUzgC,EAAO94H,OAEjBu4J,EAAgB/d,GAAM,WACxB,IAAIkQ,EAAK6O,EAAQ,IAAK,KAEtB,OADA7O,EAAGjR,UAAY,EACW,MAAnBiR,EAAG5sJ,KAAK,WAKb07J,EAAgBjB,GAAiB/d,GAAM,WACzC,OAAQ+e,EAAQ,IAAK,KAAKR,UAGxBP,EAAeD,GAAiB/d,GAAM,WAExC,IAAIkQ,EAAK6O,EAAQ,KAAM,MAEvB,OADA7O,EAAGjR,UAAY,EACU,MAAlBiR,EAAG5sJ,KAAK,UAGjBkwI,EAAOD,QAAU,CACfyqB,aAAcA,EACdgB,cAAeA,EACfjB,cAAeA,I,eC5BjB,IAAI/d,EAAQ,EAAQ,OAChB1hB,EAAS,EAAQ,OAGjBygC,EAAUzgC,EAAO94H,OAErBguI,EAAOD,QAAUyM,GAAM,WACrB,IAAIkQ,EAAK6O,EAAQ,IAAK,KACtB,QAAS7O,EAAG2O,QAAU3O,EAAG5sJ,KAAK,OAAsB,MAAb4sJ,EAAG//D,W,gBCR5C,IAAI6vD,EAAQ,EAAQ,OAChB1hB,EAAS,EAAQ,OAGjBygC,EAAUzgC,EAAO94H,OAErBguI,EAAOD,QAAUyM,GAAM,WACrB,IAAIkQ,EAAK6O,EAAQ,UAAW,KAC5B,MAAiC,MAA1B7O,EAAG5sJ,KAAK,KAAKg7J,OAAOzuK,GACI,OAA7B,IAAIsK,QAAQ+1J,EAAI,a,UCTpB,IAAI7Q,EAAatwJ,UAIjBykJ,EAAOD,QAAU,SAAUwM,GACzB,QAAU5wH,GAAN4wH,EAAiB,MAAMV,EAAW,wBAA0BU,GAChE,OAAOA,I,UCHTvM,EAAOD,QAAU/qJ,OAAOy2K,IAAM,SAAY1I,EAAGpoK,GAE3C,OAAOooK,IAAMpoK,EAAU,IAANooK,GAAW,EAAIA,IAAM,EAAIpoK,EAAIooK,GAAKA,GAAKpoK,GAAKA,I,gBCL/D,IAAImwI,EAAS,EAAQ,OACjBtxI,EAAQ,EAAQ,OAChBmyJ,EAAa,EAAQ,OACrB/1G,EAAY,EAAQ,OACpBg6G,EAAa,EAAQ,OACrB8b,EAA0B,EAAQ,OAElCC,EAAO,WAAW5mK,KAAK6wC,GACvBmmG,EAAWjR,EAAOiR,SAElB6vB,EAAO,SAAUC,GACnB,OAAOF,EAAO,SAAUx5D,EAASt5G,GAC/B,IAAIizK,EAAYJ,EAAwB70K,UAAUC,OAAQ,GAAK,EAC3D25E,EAAKk7E,EAAWx5C,GAAWA,EAAU4pC,EAAS5pC,GAC9CtqB,EAAOikF,EAAYlc,EAAW/4J,UAAW,QAAK8kC,EAClD,OAAOkwI,EAAUC,EAAY,WAC3BtyK,EAAMi3E,EAAIh7E,KAAMoyF,IACdpX,EAAI53E,IACNgzK,GAKN7rB,EAAOD,QAAU,CAGf5hH,WAAYytI,EAAK9gC,EAAO3sG,YAGxBy3B,YAAag2G,EAAK9gC,EAAOl1E,e,6BC5B3B,IAAIulG,EAAa,EAAQ,OACrB7F,EAAuB,EAAQ,MAC/BrJ,EAAkB,EAAQ,MAC1BoG,EAAc,EAAQ,OAEtBhD,EAAUpD,EAAgB,WAE9BjM,EAAOD,QAAU,SAAU8S,GACzB,IAAItY,EAAc4gB,EAAWtI,GACzBhvH,EAAiByxH,EAAqB56J,EAEtC23J,GAAe9X,IAAgBA,EAAY8U,IAC7CxrH,EAAe02G,EAAa8U,EAAS,CACnCtrH,cAAc,EACd5sC,IAAK,WAAc,OAAO1B,U,gBCfhC,IAAIouC,EAAiB,UACjBsxH,EAAS,EAAQ,OACjBlJ,EAAkB,EAAQ,MAE1BoF,EAAgBpF,EAAgB,eAEpCjM,EAAOD,QAAU,SAAU3kI,EAAQ2wJ,EAAKhQ,GAClC3gJ,IAAW2gJ,IAAQ3gJ,EAASA,EAAOzlB,WACnCylB,IAAW+5I,EAAO/5I,EAAQi2I,IAC5BxtH,EAAezoB,EAAQi2I,EAAe,CAAEttH,cAAc,EAAMhqC,MAAOgyK,M,eCTvE,IAAIxL,EAAS,EAAQ,OACjB92I,EAAM,EAAQ,OAEdnxB,EAAOioK,EAAO,QAElBvgB,EAAOD,QAAU,SAAU1uI,GACzB,OAAO/Y,EAAK+Y,KAAS/Y,EAAK+Y,GAAOoY,EAAIpY,M,eCNvC,IAAIy5H,EAAS,EAAQ,OACjBksB,EAAuB,EAAQ,OAE/BgV,EAAS,qBACTzM,EAAQz0B,EAAOkhC,IAAWhV,EAAqBgV,EAAQ,IAE3DhsB,EAAOD,QAAUwf,G,gBCNjB,IAAIpI,EAAU,EAAQ,OAClBoI,EAAQ,EAAQ,OAEnBvf,EAAOD,QAAU,SAAU1uI,EAAKtX,GAC/B,OAAOwlK,EAAMluJ,KAASkuJ,EAAMluJ,QAAiBsqB,IAAV5hC,EAAsBA,EAAQ,MAChE,WAAY,IAAI0B,KAAK,CACtBugB,QAAS,SACTiwJ,KAAM9U,EAAU,OAAS,SACzB+U,UAAW,4CACXC,QAAS,2DACTpwG,OAAQ,yC,gBCVV,IAAI00F,EAAW,EAAQ,OACnB2b,EAAe,EAAQ,OACvBngB,EAAkB,EAAQ,MAE1BoD,EAAUpD,EAAgB,WAI9BjM,EAAOD,QAAU,SAAU6M,EAAGyf,GAC5B,IACIjgB,EADAmE,EAAIE,EAAS7D,GAAGl3J,YAEpB,YAAaimC,IAAN40H,QAAiD50H,IAA7BywH,EAAIqE,EAASF,GAAGlB,IAAyBgd,EAAqBD,EAAahgB,K,gBCXxG,IAAII,EAAQ,EAAQ,OAIpBxM,EAAOD,QAAU,SAAUuP,GACzB,OAAO9C,GAAM,WACX,IAAIznJ,EAAO,GAAGuqJ,GAAa,KAC3B,OAAOvqJ,IAASA,EAAKklB,eAAiBllB,EAAK8H,MAAM,KAAK/V,OAAS,O,gBCPnE,IAAIm3J,EAAc,EAAQ,MACtBe,EAAsB,EAAQ,OAC9BhrJ,EAAW,EAAQ,OACnB4xJ,EAAyB,EAAQ,OAEjCrqH,EAAS0iH,EAAY,GAAG1iH,QACxBhmC,EAAa0oJ,EAAY,GAAG1oJ,YAC5B2rJ,EAAcjD,EAAY,GAAGjsH,OAE7B8rH,EAAe,SAAUwe,GAC3B,OAAO,SAAUte,EAAOnkF,GACtB,IAGImpF,EAAOuZ,EAHPngB,EAAIpoJ,EAAS4xJ,EAAuB5H,IACpC7tF,EAAW6uF,EAAoBnlF,GAC/Bv2C,EAAO84H,EAAEt1J,OAEb,OAAIqpE,EAAW,GAAKA,GAAY7sC,EAAag5I,EAAoB,QAAK3wI,GACtEq3H,EAAQztJ,EAAW6mJ,EAAGjsF,GACf6yF,EAAQ,OAAUA,EAAQ,OAAU7yF,EAAW,IAAM7sC,IACtDi5I,EAAShnK,EAAW6mJ,EAAGjsF,EAAW,IAAM,OAAUosG,EAAS,MAC3DD,EACE/gI,EAAO6gH,EAAGjsF,GACV6yF,EACFsZ,EACEpb,EAAY9E,EAAGjsF,EAAUA,EAAW,GACVosG,EAAS,OAAlCvZ,EAAQ,OAAU,IAA0B,SAIzDhT,EAAOD,QAAU,CAGfysB,OAAQ1e,GAAa,GAGrBviH,OAAQuiH,GAAa,K,6BChCvB,IAAIG,EAAc,EAAQ,MAEtBwe,EAAS,WACTC,EAAO,GACPC,EAAO,EACPC,EAAO,GACPC,EAAO,GACPC,EAAO,IACPC,EAAc,GACdC,EAAW,IACXC,EAAY,IACZC,EAAgB,eAChBC,EAAkB,yBAClBC,EAAiB,kDACjBC,EAAgBX,EAAOC,EAEvBW,EAAcC,WACdz9J,EAAOm+I,EAAYkf,EAAgBr9J,MACnCirC,EAAQr2C,KAAKq2C,MACb10C,EAAeD,OAAOC,aACtBd,EAAa0oJ,EAAY,GAAG1oJ,YAC5BkW,EAAOwyI,EAAY,GAAGxyI,MACtBhgB,EAAOwyJ,EAAY,GAAGxyJ,MACtBkL,EAAUsnJ,EAAY,GAAGtnJ,SACzBkG,EAAQohJ,EAAY,GAAGphJ,OACvBod,EAAcgkI,EAAY,GAAGhkI,aAS7BujJ,EAAa,SAAU1X,GACzB,IAAI7qF,EAAS,GACTwiG,EAAU,EACV32K,EAASg/J,EAAOh/J,OACpB,MAAO22K,EAAU32K,EAAQ,CACvB,IAAIiD,EAAQwL,EAAWuwJ,EAAQ2X,KAC/B,GAAI1zK,GAAS,OAAUA,GAAS,OAAU0zK,EAAU32K,EAAQ,CAE1D,IAAI42K,EAAQnoK,EAAWuwJ,EAAQ2X,KACP,QAAX,MAARC,GACHjyK,EAAKwvE,IAAkB,KAARlxE,IAAkB,KAAe,KAAR2zK,GAAiB,QAIzDjyK,EAAKwvE,EAAQlxE,GACb0zK,UAGFhyK,EAAKwvE,EAAQlxE,GAGjB,OAAOkxE,GAML0iG,EAAe,SAAUC,GAG3B,OAAOA,EAAQ,GAAK,IAAMA,EAAQ,KAOhCC,EAAQ,SAAUC,EAAOC,EAAWC,GACtC,IAAI5xK,EAAI,EACR0xK,EAAQE,EAAYjzH,EAAM+yH,EAAQhB,GAAQgB,GAAS,EACnDA,GAAS/yH,EAAM+yH,EAAQC,GACvB,MAAOD,EAAQT,EAAgBT,GAAQ,EACrCkB,EAAQ/yH,EAAM+yH,EAAQT,GACtBjxK,GAAKswK,EAEP,OAAO3xH,EAAM3+C,GAAKixK,EAAgB,GAAKS,GAASA,EAAQjB,KAOtDnmK,EAAS,SAAUF,GACrB,IAAIykE,EAAS,GAGbzkE,EAAQgnK,EAAWhnK,GAGnB,IAMI7P,EAAGs3K,EANHC,EAAc1nK,EAAM1P,OAGpBF,EAAIo2K,EACJc,EAAQ,EACRK,EAAOpB,EAIX,IAAKp2K,EAAI,EAAGA,EAAI6P,EAAM1P,OAAQH,IAC5Bs3K,EAAeznK,EAAM7P,GACjBs3K,EAAe,KACjBxyK,EAAKwvE,EAAQ5kE,EAAa4nK,IAI9B,IAAIG,EAAcnjG,EAAOn0E,OACrBu3K,EAAiBD,EAGjBA,GACF3yK,EAAKwvE,EAAQgiG,GAIf,MAAOoB,EAAiBH,EAAa,CAEnC,IAAItyK,EAAI6wK,EACR,IAAK91K,EAAI,EAAGA,EAAI6P,EAAM1P,OAAQH,IAC5Bs3K,EAAeznK,EAAM7P,GACjBs3K,GAAgBr3K,GAAKq3K,EAAeryK,IACtCA,EAAIqyK,GAKR,IAAIK,EAAwBD,EAAiB,EAC7C,GAAIzyK,EAAIhF,EAAImkD,GAAO0xH,EAASqB,GAASQ,GACnC,MAAMhB,EAAYF,GAMpB,IAHAU,IAAUlyK,EAAIhF,GAAK03K,EACnB13K,EAAIgF,EAECjF,EAAI,EAAGA,EAAI6P,EAAM1P,OAAQH,IAAK,CAEjC,GADAs3K,EAAeznK,EAAM7P,GACjBs3K,EAAer3K,KAAOk3K,EAAQrB,EAChC,MAAMa,EAAYF,GAEpB,GAAIa,GAAgBr3K,EAAG,CAErB,IAAI+tD,EAAImpH,EACJ1xK,EAAIswK,EACR,MAAO,EAAM,CACX,IAAIj2K,EAAI2F,GAAK+xK,EAAOxB,EAAQvwK,GAAK+xK,EAAOvB,EAAOA,EAAOxwK,EAAI+xK,EAC1D,GAAIxpH,EAAIluD,EAAG,MACX,IAAI83K,EAAU5pH,EAAIluD,EACd+3K,EAAa9B,EAAOj2K,EACxBgF,EAAKwvE,EAAQ5kE,EAAasnK,EAAal3K,EAAI83K,EAAUC,KACrD7pH,EAAI5J,EAAMwzH,EAAUC,GACpBpyK,GAAKswK,EAGPjxK,EAAKwvE,EAAQ5kE,EAAasnK,EAAahpH,KACvCwpH,EAAON,EAAMC,EAAOQ,EAAuBD,GAAkBD,GAC7DN,EAAQ,EACRO,KAIJP,IACAl3K,IAEF,OAAO6kB,EAAKwvD,EAAQ,KAGtB+0E,EAAOD,QAAU,SAAUv5I,GACzB,IAEI7P,EAAGmE,EAFH2zK,EAAU,GACVC,EAAS7hK,EAAMlG,EAAQsjB,EAAYzjB,GAAQ2mK,EAAiB,KAAW,KAE3E,IAAKx2K,EAAI,EAAGA,EAAI+3K,EAAO53K,OAAQH,IAC7BmE,EAAQ4zK,EAAO/3K,GACf8E,EAAKgzK,EAAS3+J,EAAKo9J,EAAepyK,GAAS,OAAS4L,EAAO5L,GAASA,GAEtE,OAAO2gB,EAAKgzJ,EAAS,O,6BClLvB,IAAIzf,EAAsB,EAAQ,OAC9BhrJ,EAAW,EAAQ,OACnB4xJ,EAAyB,EAAQ,OAEjC0X,EAAcC,WAIlBvtB,EAAOD,QAAU,SAAgBriI,GAC/B,IAAItN,EAAMpM,EAAS4xJ,EAAuBngK,OACtC4E,EAAS,GACTzD,EAAIo4J,EAAoBtxI,GAC5B,GAAI9mB,EAAI,GAAKA,GAAKouK,IAAU,MAAMsI,EAAY,+BAC9C,KAAM12K,EAAI,GAAIA,KAAO,KAAOwZ,GAAOA,GAAc,EAAJxZ,IAAOyD,GAAU+V,GAC9D,OAAO/V,I,gBCfT,IAAIk9J,EAAuB,gBACvB/K,EAAQ,EAAQ,OAChBsY,EAAc,EAAQ,OAEtB6J,EAAM,MAIV3uB,EAAOD,QAAU,SAAUuP,GACzB,OAAO9C,GAAM,WACX,QAASsY,EAAYxV,MAChBqf,EAAIrf,OAAmBqf,GACtBpX,GAAwBuN,EAAYxV,GAAaxmJ,OAASwmJ,O,gBCZpE,IAAIrB,EAAc,EAAQ,MACtB2H,EAAyB,EAAQ,OACjC5xJ,EAAW,EAAQ,OACnB8gK,EAAc,EAAQ,OAEtBn+J,EAAUsnJ,EAAY,GAAGtnJ,SACzBioK,EAAa,IAAM9J,EAAc,IACjC+J,EAAQ78J,OAAO,IAAM48J,EAAaA,EAAa,KAC/CE,EAAQ98J,OAAO48J,EAAaA,EAAa,MAGzC9gB,EAAe,SAAUM,GAC3B,OAAO,SAAUJ,GACf,IAAI8H,EAAS9xJ,EAAS4xJ,EAAuB5H,IAG7C,OAFW,EAAPI,IAAU0H,EAASnvJ,EAAQmvJ,EAAQ+Y,EAAO,KACnC,EAAPzgB,IAAU0H,EAASnvJ,EAAQmvJ,EAAQgZ,EAAO,KACvChZ,IAIX9V,EAAOD,QAAU,CAGfnjE,MAAOkxE,EAAa,GAGpBjxE,IAAKixE,EAAa,GAGlB38I,KAAM28I,EAAa,K,gBC7BrB,IAAI13J,EAAO,EAAQ,OACf+kK,EAAa,EAAQ,OACrBlP,EAAkB,EAAQ,MAC1B6H,EAAgB,EAAQ,OAE5B9T,EAAOD,QAAU,WACf,IAAI5kJ,EAASggK,EAAW,UACpB4T,EAAkB5zK,GAAUA,EAAOxF,UACnC8yK,EAAUsG,GAAmBA,EAAgBtG,QAC7CuG,EAAe/iB,EAAgB,eAE/B8iB,IAAoBA,EAAgBC,IAItClb,EAAcib,EAAiBC,GAAc,SAAUC,GACrD,OAAO74K,EAAKqyK,EAAShzK,QACpB,CAAEqtK,MAAO,M,gBCjBhB,IAuBIhvH,EAAUo7H,EAAO/zG,EAASqd,EAvB1BsyD,EAAS,EAAQ,OACjBtxI,EAAQ,EAAQ,OAChBs/C,EAAO,EAAQ,OACf6yG,EAAa,EAAQ,OACrBwJ,EAAS,EAAQ,OACjB3I,EAAQ,EAAQ,OAChBwZ,EAAO,EAAQ,OACfpW,EAAa,EAAQ,OACrB5vF,EAAgB,EAAQ,OACxB0rG,EAA0B,EAAQ,OAClCpI,EAAS,EAAQ,MACjBG,EAAU,EAAQ,OAElBrlJ,EAAM0sH,EAAOqkC,aACb5wJ,EAAQusH,EAAOskC,eACf5nB,EAAU1c,EAAO0c,QACjB6nB,EAAWvkC,EAAOukC,SAClBtzB,EAAWjR,EAAOiR,SAClBhhF,EAAiB+vE,EAAO/vE,eACxB30D,EAAS0kI,EAAO1kI,OAChBqnK,EAAU,EACVjkF,EAAQ,GACR8lF,EAAqB,qBAGzB,IAEEx7H,EAAWg3F,EAAOh3F,SAClB,MAAO/3C,IAET,IAAIs2G,EAAM,SAAU32E,GAClB,GAAIy5H,EAAO3rE,EAAO9tD,GAAK,CACrB,IAAI+0C,EAAK+Y,EAAM9tD,UACR8tD,EAAM9tD,GACb+0C,MAIA8+F,EAAS,SAAU7zI,GACrB,OAAO,WACL22E,EAAI32E,KAIJssD,EAAW,SAAU3rE,GACvBg2F,EAAIh2F,EAAMxW,OAGRrO,EAAO,SAAUkkC,GAEnBovG,EAAOzvE,YAAYj1D,EAAOs1B,GAAKoY,EAASykC,SAAW,KAAOzkC,EAASxa,OAIhElb,GAAQG,IACXH,EAAM,SAAsB+zF,GAC1Bu5D,EAAwB70K,UAAUC,OAAQ,GAC1C,IAAI25E,EAAKk7E,EAAWx5C,GAAWA,EAAU4pC,EAAS5pC,GAC9CtqB,EAAO+nE,EAAW/4J,UAAW,GAKjC,OAJA2yF,IAAQikF,GAAW,WACjBj0K,EAAMi3E,OAAI90C,EAAWksD,IAEvBqnF,EAAMzB,GACCA,GAETlvJ,EAAQ,SAAwBmd,UACvB8tD,EAAM9tD,IAGX+nI,EACFyL,EAAQ,SAAUxzI,GAChB8rH,EAAQwc,SAASuL,EAAO7zI,KAGjB2zI,GAAYA,EAASlpJ,IAC9B+oJ,EAAQ,SAAUxzI,GAChB2zI,EAASlpJ,IAAIopJ,EAAO7zI,KAIbq/B,IAAmBuoG,GAC5BnoG,EAAU,IAAIJ,EACdyd,EAAOrd,EAAQU,MACfV,EAAQC,MAAMO,UAAYqsB,EAC1BknF,EAAQp2H,EAAK0/B,EAAKnd,YAAamd,IAI/BsyD,EAAO3vH,kBACPwwI,EAAW7gB,EAAOzvE,eACjByvE,EAAO0kC,eACR17H,GAAkC,UAAtBA,EAASykC,WACpBi0E,EAAMh1J,IAEP03K,EAAQ13K,EACRszI,EAAO3vH,iBAAiB,UAAW6sE,GAAU,IAG7CknF,EADSI,KAAsBtvG,EAAc,UACrC,SAAUtkC,GAChBsqI,EAAKzlG,YAAYP,EAAc,WAAWsvG,GAAsB,WAC9DtJ,EAAKvlG,YAAYhrE,MACjB48G,EAAI32E,KAKA,SAAUA,GAChByC,WAAWoxI,EAAO7zI,GAAK,KAK7BskH,EAAOD,QAAU,CACf3hI,IAAKA,EACLG,MAAOA,I,gBClHT,IAAI0vI,EAAc,EAAQ,MAI1BjO,EAAOD,QAAUkO,EAAY,GAAIwa,U,gBCJjC,IAAIzZ,EAAsB,EAAQ,OAE9B15F,EAAM5wD,KAAK4wD,IACXta,EAAMt2C,KAAKs2C,IAKfglG,EAAOD,QAAU,SAAUh4G,EAAOjxC,GAChC,IAAI24K,EAAUzgB,EAAoBjnH,GAClC,OAAO0nI,EAAU,EAAIn6G,EAAIm6G,EAAU34K,EAAQ,GAAKkkD,EAAIy0H,EAAS34K,K,gBCT/D,IAAIo3J,EAAgB,EAAQ,OACxB0H,EAAyB,EAAQ,OAErC5V,EAAOD,QAAU,SAAUwM,GACzB,OAAO2B,EAAc0H,EAAuBrJ,M,gBCL9C,IAAIyW,EAAQ,EAAQ,OAIpBhjB,EAAOD,QAAU,SAAU+L,GACzB,IAAIhwD,GAAUgwD,EAEd,OAAOhwD,IAAWA,GAAqB,IAAXA,EAAe,EAAIknE,EAAMlnE,K,gBCPvD,IAAIkzD,EAAsB,EAAQ,OAE9Bh0G,EAAMt2C,KAAKs2C,IAIfglG,EAAOD,QAAU,SAAU+L,GACzB,OAAOA,EAAW,EAAI9wG,EAAIg0G,EAAoBlD,GAAW,kBAAoB,I,gBCP/E,IAAI8J,EAAyB,EAAQ,OAEjCtE,EAAUt8J,OAIdgrJ,EAAOD,QAAU,SAAU+L,GACzB,OAAOwF,EAAQsE,EAAuB9J,M,gBCPxC,IAAI11J,EAAO,EAAQ,OACfq4E,EAAW,EAAQ,OACnBihG,EAAW,EAAQ,OACnBnR,EAAY,EAAQ,OACpBoR,EAAsB,EAAQ,OAC9B1jB,EAAkB,EAAQ,MAE1BJ,EAAatwJ,UACbyzK,EAAe/iB,EAAgB,eAInCjM,EAAOD,QAAU,SAAUv5I,EAAOgiK,GAChC,IAAK/5F,EAASjoE,IAAUkpK,EAASlpK,GAAQ,OAAOA,EAChD,IACInM,EADAu1K,EAAerR,EAAU/3J,EAAOwoK,GAEpC,GAAIY,EAAc,CAGhB,QAFaj0I,IAAT6sI,IAAoBA,EAAO,WAC/BnuK,EAASjE,EAAKw5K,EAAcppK,EAAOgiK,IAC9B/5F,EAASp0E,IAAWq1K,EAASr1K,GAAS,OAAOA,EAClD,MAAMwxJ,EAAW,2CAGnB,YADalwH,IAAT6sI,IAAoBA,EAAO,UACxBmH,EAAoBnpK,EAAOgiK,K,gBCvBpC,IAAIqH,EAAc,EAAQ,OACtBH,EAAW,EAAQ,OAIvB1vB,EAAOD,QAAU,SAAU+L,GACzB,IAAIz6I,EAAMw+J,EAAY/jB,EAAU,UAChC,OAAO4jB,EAASr+J,GAAOA,EAAMA,EAAM,K,gBCPrC,IAAI46I,EAAkB,EAAQ,MAE1BoF,EAAgBpF,EAAgB,eAChClnJ,EAAO,GAEXA,EAAKssJ,GAAiB,IAEtBrR,EAAOD,QAA2B,eAAjB35I,OAAOrB,I,gBCPxB,IAAIm2J,EAAU,EAAQ,OAElBlP,EAAU5lJ,OAEd45I,EAAOD,QAAU,SAAU+L,GACzB,GAA0B,WAAtBoP,EAAQpP,GAAwB,MAAMvwJ,UAAU,6CACpD,OAAOywJ,EAAQF,K,UCNjB,IAAIE,EAAU5lJ,OAEd45I,EAAOD,QAAU,SAAU+L,GACzB,IACE,OAAOE,EAAQF,GACf,MAAO/vJ,GACP,MAAO,Y,gBCNX,IAAIkyJ,EAAc,EAAQ,MAEtBvyH,EAAK,EACLo0I,EAAUprK,KAAKC,SACfX,EAAWiqJ,EAAY,GAAIjqJ,UAE/Bg8I,EAAOD,QAAU,SAAU1uI,GACzB,MAAO,gBAAqBsqB,IAARtqB,EAAoB,GAAKA,GAAO,KAAOrN,IAAW03B,EAAKo0I,EAAS,M,gBCNtF,IAAI1L,EAAgB,EAAQ,OAE5BpkB,EAAOD,QAAUqkB,IACXjpK,OAAO+gK,MACkB,iBAAnB/gK,OAAOC,U,eCLnB,IAAIi3J,EAAc,EAAQ,OACtB7F,EAAQ,EAAQ,OAIpBxM,EAAOD,QAAUsS,GAAe7F,GAAM,WAEpC,OAGgB,IAHTx3J,OAAO6uC,gBAAe,cAA6B,YAAa,CACrE9pC,MAAO,GACP08J,UAAU,IACT9gK,c,UCVL,IAAIk2J,EAAatwJ,UAEjBykJ,EAAOD,QAAU,SAAUgwB,EAAQC,GACjC,GAAID,EAASC,EAAU,MAAMnkB,EAAW,wBACxC,OAAOkkB,I,eCJT,IAAI9jB,EAAkB,EAAQ,MAE9BlM,EAAQrlJ,EAAIuxJ,G,eCFZ,IAAInhB,EAAS,EAAQ,OACjBy1B,EAAS,EAAQ,OACjBpL,EAAS,EAAQ,OACjB1rI,EAAM,EAAQ,OACd26I,EAAgB,EAAQ,OACxB1C,EAAoB,EAAQ,OAE5BuO,EAAwB1P,EAAO,OAC/BplK,EAAS2vI,EAAO3vI,OAChB+0K,EAAY/0K,GAAUA,EAAO,OAC7Bg1K,EAAwBzO,EAAoBvmK,EAASA,GAAUA,EAAOi1K,eAAiB3mJ,EAE3Fu2H,EAAOD,QAAU,SAAUj3I,GACzB,IAAKqsJ,EAAO8a,EAAuBnnK,KAAWs7J,GAAuD,iBAA/B6L,EAAsBnnK,GAAoB,CAC9G,IAAIgvD,EAAc,UAAYhvD,EAC1Bs7J,GAAiBjP,EAAOh6J,EAAQ2N,GAClCmnK,EAAsBnnK,GAAQ3N,EAAO2N,GAErCmnK,EAAsBnnK,GADb44J,GAAqBwO,EACAA,EAAUp4G,GAEVq4G,EAAsBr4G,GAEtD,OAAOm4G,EAAsBnnK,K,UCrBjCk3I,EAAOD,QAAU,iD,6BCAjB,IAAIob,EAAa,EAAQ,OACrBhG,EAAS,EAAQ,OACjB4B,EAA8B,EAAQ,OACtCzK,EAAgB,EAAQ,OACxBr3J,EAAiB,EAAQ,OACzBymK,EAA4B,EAAQ,OACpC2U,EAAgB,EAAQ,MACxBnc,EAAoB,EAAQ,OAC5BqH,EAA0B,EAAQ,OAClC+U,EAAoB,EAAQ,OAC5BC,EAAkB,EAAQ,OAC1BC,EAA0B,EAAQ,OAClCne,EAAc,EAAQ,OACtB8E,EAAU,EAAQ,OAEtBnX,EAAOD,QAAU,SAAU0wB,EAAW7d,EAASzD,EAAQuhB,GACrD,IAAIC,EAAoB,kBACpBC,EAAmBF,EAAqB,EAAI,EAC5C7tF,EAAO4tF,EAAU5jK,MAAM,KACvBygE,EAAauV,EAAKA,EAAK/rF,OAAS,GAChC+5K,EAAgB1V,EAAW3hK,MAAM,KAAMqpF,GAE3C,GAAKguF,EAAL,CAEA,IAAIC,EAAyBD,EAAcl7K,UAK3C,IAFKwhK,GAAWhC,EAAO2b,EAAwB,iBAAiBA,EAAuBpR,OAElFvQ,EAAQ,OAAO0hB,EAEpB,IAAIE,EAAY5V,EAAW,SAEvB6V,EAAepe,GAAQ,SAAUv2J,EAAGhH,GACtC,IAAIwsB,EAAU05I,EAAwBmV,EAAqBr7K,EAAIgH,OAAGs/B,GAC9DthC,EAASq2K,EAAqB,IAAIG,EAAcx0K,GAAK,IAAIw0K,EAK7D,YAJgBl1I,IAAZ9Z,GAAuBk1I,EAA4B18J,EAAQ,UAAWwnB,GACtE2uJ,GAAyBzZ,EAA4B18J,EAAQ,QAASk2K,EAAgBl2K,EAAOo0F,MAAO,IACpGh5F,MAAQ62J,EAAcwkB,EAAwBr7K,OAAOy+J,EAAkB75J,EAAQ5E,KAAMu7K,GACrFn6K,UAAUC,OAAS85K,GAAkBN,EAAkBj2K,EAAQxD,UAAU+5K,IACtEv2K,KAeT,GAZA22K,EAAar7K,UAAYm7K,EAEN,UAAfxjG,EACEr4E,EAAgBA,EAAe+7K,EAAcD,GAC5CrV,EAA0BsV,EAAcD,EAAW,CAAEjoK,MAAM,IACvDupJ,GAAese,KAAqBE,IAC7CR,EAAcW,EAAcH,EAAeF,GAC3CN,EAAcW,EAAcH,EAAe,sBAG7CnV,EAA0BsV,EAAcH,IAEnC1Z,EAAS,IAER2Z,EAAuBhoK,OAASwkE,GAClCypF,EAA4B+Z,EAAwB,OAAQxjG,GAE9DwjG,EAAuBp7K,YAAcs7K,EACrC,MAAOj1K,IAET,OAAOi1K,K,6BC/DT,IAAIpd,EAAI,EAAQ,OACZpH,EAAQ,EAAQ,OAChB1hF,EAAU,EAAQ,OAClB2D,EAAW,EAAQ,OACnB54C,EAAW,EAAQ,OACnB82H,EAAoB,EAAQ,OAC5BqQ,EAA2B,EAAQ,MACnC5P,EAAiB,EAAQ,OACzBe,EAAqB,EAAQ,OAC7B8iB,EAA+B,EAAQ,OACvChlB,EAAkB,EAAQ,MAC1BmD,EAAa,EAAQ,MAErB8hB,EAAuBjlB,EAAgB,sBAKvCklB,EAA+B/hB,GAAc,KAAO5C,GAAM,WAC5D,IAAI93H,EAAQ,GAEZ,OADAA,EAAMw8I,IAAwB,EACvBx8I,EAAMz4B,SAAS,KAAOy4B,KAG3B08I,EAAkBH,EAA6B,UAE/CI,EAAqB,SAAUzkB,GACjC,IAAKn+E,EAASm+E,GAAI,OAAO,EACzB,IAAI0kB,EAAa1kB,EAAEskB,GACnB,YAAsBv1I,IAAf21I,IAA6BA,EAAaxmG,EAAQ8hF,IAGvDuC,GAAUgiB,IAAiCC,EAK/Cxd,EAAE,CAAEx4I,OAAQ,QAASuxE,OAAO,EAAMm2E,MAAO,EAAG5N,OAAQ/F,GAAU,CAE5DlzJ,OAAQ,SAAgB49F,GACtB,IAGIljG,EAAGyF,EAAGtF,EAAQw/F,EAAKi7E,EAHnB3kB,EAAI/2H,EAASpgC,MACb+vK,EAAIrX,EAAmBvB,EAAG,GAC1Bh2J,EAAI,EAER,IAAKD,GAAK,EAAGG,EAASD,UAAUC,OAAQH,EAAIG,EAAQH,IAElD,GADA46K,GAAW,IAAP56K,EAAWi2J,EAAI/1J,UAAUF,GACzB06K,EAAmBE,GAGrB,IAFAj7E,EAAMq2D,EAAkB4kB,GACxBvU,EAAyBpmK,EAAI0/F,GACxBl6F,EAAI,EAAGA,EAAIk6F,EAAKl6F,IAAKxF,IAASwF,KAAKm1K,GAAGnkB,EAAeoY,EAAG5uK,EAAG26K,EAAEn1K,SAElE4gK,EAAyBpmK,EAAI,GAC7Bw2J,EAAeoY,EAAG5uK,IAAK26K,GAI3B,OADA/L,EAAE1uK,OAASF,EACJ4uK,M,6BCxDX,IAAI5R,EAAI,EAAQ,OACZ4d,EAAS,eACTxkB,EAAsB,EAAQ,MAE9BC,EAAgBD,EAAoB,SAIxC4G,EAAE,CAAEx4I,OAAQ,QAASuxE,OAAO,EAAMuoE,QAASjI,GAAiB,CAC1Dz5H,MAAO,SAAe2hE,GACpB,OAAOq8E,EAAO/7K,KAAM0/F,EAAYt+F,UAAUC,OAAS,EAAID,UAAU,QAAK8kC,O,gBCX1E,IAAIi4H,EAAI,EAAQ,OACZ6d,EAAO,EAAQ,OACfC,EAAmB,EAAQ,OAI/B9d,EAAE,CAAEx4I,OAAQ,QAASuxE,OAAO,GAAQ,CAClC8kF,KAAMA,IAIRC,EAAiB,S,6BCVjB,IAAI9d,EAAI,EAAQ,OACZ+d,EAAU,gBACVV,EAA+B,EAAQ,OAEvCW,EAAsBX,EAA6B,UAKvDrd,EAAE,CAAEx4I,OAAQ,QAASuxE,OAAO,EAAMuoE,QAAS0c,GAAuB,CAChEjgK,OAAQ,SAAgBwjF,GACtB,OAAOw8E,EAAQl8K,KAAM0/F,EAAYt+F,UAAUC,OAAS,EAAID,UAAU,QAAK8kC,O,6BCX3E,IAAIi4H,EAAI,EAAQ,OACZie,EAAa,mBACbH,EAAmB,EAAQ,OAE3BI,EAAa,YACbC,GAAc,EAGdD,IAAc,IAAI38K,MAAM,GAAG28K,IAAY,WAAcC,GAAc,KAIvEne,EAAE,CAAEx4I,OAAQ,QAASuxE,OAAO,EAAMuoE,OAAQ6c,GAAe,CACvDjjB,UAAW,SAAmB35D,GAC5B,OAAO08E,EAAWp8K,KAAM0/F,EAAYt+F,UAAUC,OAAS,EAAID,UAAU,QAAK8kC,MAK9E+1I,EAAiBI,I,6BCnBjB,IAAIle,EAAI,EAAQ,OACZoe,EAAQ,cACRN,EAAmB,EAAQ,OAE3BO,EAAO,OACPF,GAAc,EAGdE,IAAQ,IAAI98K,MAAM,GAAG88K,IAAM,WAAcF,GAAc,KAI3Dne,EAAE,CAAEx4I,OAAQ,QAASuxE,OAAO,EAAMuoE,OAAQ6c,GAAe,CACvDh0J,KAAM,SAAco3E,GAClB,OAAO68E,EAAMv8K,KAAM0/F,EAAYt+F,UAAUC,OAAS,EAAID,UAAU,QAAK8kC,MAKzE+1I,EAAiBO,I,6BCnBjB,IAAIre,EAAI,EAAQ,OACZqJ,EAAmB,EAAQ,MAC3BpnI,EAAW,EAAQ,OACnB82H,EAAoB,EAAQ,OAC5BqC,EAAsB,EAAQ,OAC9Bb,EAAqB,EAAQ,OAIjCyF,EAAE,CAAEx4I,OAAQ,QAASuxE,OAAO,GAAQ,CAClCulF,KAAM,WACJ,IAAIC,EAAWt7K,UAAUC,OAASD,UAAU,QAAK8kC,EAC7CixH,EAAI/2H,EAASpgC,MACb0nK,EAAYxQ,EAAkBC,GAC9B4Y,EAAIrX,EAAmBvB,EAAG,GAE9B,OADA4Y,EAAE1uK,OAASmmK,EAAiBuI,EAAG5Y,EAAGA,EAAGuQ,EAAW,OAAgBxhI,IAAbw2I,EAAyB,EAAInjB,EAAoBmjB,IAC7F3M,M,6BChBX,IAAI5R,EAAI,EAAQ,OACZr7J,EAAU,EAAQ,OAKtBq7J,EAAE,CAAEx4I,OAAQ,QAASuxE,OAAO,EAAMuoE,OAAQ,GAAG38J,SAAWA,GAAW,CACjEA,QAASA,K,gBCRX,IAAIq7J,EAAI,EAAQ,OACZn9D,EAAO,EAAQ,OACfu9D,EAA8B,EAAQ,OAEtCoe,GAAuBpe,GAA4B,SAAUjB,GAE/D59J,MAAMshG,KAAKs8D,MAKba,EAAE,CAAEx4I,OAAQ,QAAS4gJ,MAAM,EAAM9G,OAAQkd,GAAuB,CAC9D37E,KAAMA,K,6BCXR,IAAIm9D,EAAI,EAAQ,OACZye,EAAY,kBACZ7lB,EAAQ,EAAQ,OAChBklB,EAAmB,EAAQ,OAG3BY,EAAmB9lB,GAAM,WAC3B,OAAQr3J,MAAM,GAAGm5E,cAKnBslF,EAAE,CAAEx4I,OAAQ,QAASuxE,OAAO,EAAMuoE,OAAQod,GAAoB,CAC5DhkG,SAAU,SAAkB27E,GAC1B,OAAOooB,EAAU58K,KAAMw0J,EAAIpzJ,UAAUC,OAAS,EAAID,UAAU,QAAK8kC,MAKrE+1I,EAAiB,a,6BClBjB,IAAI9d,EAAI,EAAQ,OACZ3F,EAAc,EAAQ,MACtBskB,EAAW,iBACXvlB,EAAsB,EAAQ,MAE9BwlB,EAAavkB,EAAY,GAAGt9I,SAE5Bu+I,IAAkBsjB,GAAc,EAAIA,EAAW,CAAC,GAAI,GAAI,GAAK,EAC7DvlB,EAAgBD,EAAoB,WAIxC4G,EAAE,CAAEx4I,OAAQ,QAASuxE,OAAO,EAAMuoE,OAAQhG,IAAkBjC,GAAiB,CAC3Et8I,QAAS,SAAiB4lF,GACxB,IAAIC,EAAY3/F,UAAUC,OAAS,EAAID,UAAU,QAAK8kC,EACtD,OAAOuzH,EAEHsjB,EAAW/8K,KAAM8gG,EAAeC,IAAc,EAC9C+7E,EAAS98K,KAAM8gG,EAAeC,O,gBCpBtC,IAAIo9D,EAAI,EAAQ,OACZ9oF,EAAU,EAAQ,OAItB8oF,EAAE,CAAEx4I,OAAQ,QAAS4gJ,MAAM,GAAQ,CACjClxF,QAASA,K,6BCLX,IAAI+iF,EAAkB,EAAQ,OAC1B6jB,EAAmB,EAAQ,OAC3Bvb,EAAY,EAAQ,OACpB5D,EAAsB,EAAQ,OAC9B1uH,EAAiB,UACjBsuH,EAAiB,EAAQ,OACzBgF,EAAU,EAAQ,OAClB9E,EAAc,EAAQ,OAEtBogB,EAAiB,iBACjBjgB,EAAmBD,EAAoBn0I,IACvC+0I,EAAmBZ,EAAoBG,UAAU+f,GAYrDzyB,EAAOD,QAAUoS,EAAeh9J,MAAO,SAAS,SAAUw+J,EAAUjxD,GAClE8vD,EAAiB/8J,KAAM,CACrBktB,KAAM8vJ,EACNr3J,OAAQyyI,EAAgB8F,GACxB5rH,MAAO,EACP26D,KAAMA,OAIP,WACD,IAAI5gE,EAAQqxH,EAAiB19J,MACzB2lB,EAAS0mB,EAAM1mB,OACfsnF,EAAO5gE,EAAM4gE,KACb36D,EAAQjG,EAAMiG,QAClB,OAAK3sB,GAAU2sB,GAAS3sB,EAAOtkB,QAC7BgrC,EAAM1mB,YAASugB,EACR,CAAE5hC,WAAO4hC,EAAWrhC,MAAM,IAEvB,QAARooG,EAAuB,CAAE3oG,MAAOguC,EAAOztC,MAAM,GACrC,UAARooG,EAAyB,CAAE3oG,MAAOqhB,EAAO2sB,GAAQztC,MAAM,GACpD,CAAEP,MAAO,CAACguC,EAAO3sB,EAAO2sB,IAASztC,MAAM,KAC7C,UAKH,IAAIutC,EAASsuH,EAAUuc,UAAYvc,EAAUhhK,MAQ7C,GALAu8K,EAAiB,QACjBA,EAAiB,UACjBA,EAAiB,YAGZva,GAAW9E,GAA+B,WAAhBxqH,EAAO/+B,KAAmB,IACvD+6B,EAAegE,EAAQ,OAAQ,CAAE9tC,MAAO,WACxC,MAAOgC,M,6BC3DT,IAAI63J,EAAI,EAAQ,OACZ3F,EAAc,EAAQ,MACtBC,EAAgB,EAAQ,OACxBL,EAAkB,EAAQ,OAC1Bb,EAAsB,EAAQ,MAE9B2lB,EAAU1kB,EAAY,GAAGxyI,MAEzBm3J,EAAc1kB,GAAiBl5J,OAC/Bi4J,EAAgBD,EAAoB,OAAQ,KAIhD4G,EAAE,CAAEx4I,OAAQ,QAASuxE,OAAO,EAAMuoE,OAAQ0d,IAAgB3lB,GAAiB,CACzExxI,KAAM,SAAco3J,GAClB,OAAOF,EAAQ9kB,EAAgBp4J,WAAqBkmC,IAAdk3I,EAA0B,IAAMA,O,gBChB1E,IAAIjf,EAAI,EAAQ,OACZ/iJ,EAAc,EAAQ,OAK1B+iJ,EAAE,CAAEx4I,OAAQ,QAASuxE,OAAO,EAAMuoE,OAAQrkJ,IAAgB,GAAGA,aAAe,CAC1EA,YAAaA,K,6BCNf,IAAI+iJ,EAAI,EAAQ,OACZkf,EAAO,aACP7B,EAA+B,EAAQ,OAEvCW,EAAsBX,EAA6B,OAKvDrd,EAAE,CAAEx4I,OAAQ,QAASuxE,OAAO,EAAMuoE,QAAS0c,GAAuB,CAChEpgK,IAAK,SAAa2jF,GAChB,OAAO29E,EAAKr9K,KAAM0/F,EAAYt+F,UAAUC,OAAS,EAAID,UAAU,QAAK8kC,O,6BCXxE,IAAIi4H,EAAI,EAAQ,OACZmf,EAAU,cACV/lB,EAAsB,EAAQ,MAC9BgmB,EAAiB,EAAQ,MACzBvP,EAAU,EAAQ,OAElBxW,EAAgBD,EAAoB,UAGpCimB,GAAcxP,GAAWuP,EAAiB,IAAMA,EAAiB,GAIrEpf,EAAE,CAAEx4I,OAAQ,QAASuxE,OAAO,EAAMuoE,QAASjI,GAAiBgmB,GAAc,CACxEzrJ,OAAQ,SAAgB2tE,GACtB,IAAIr+F,EAASD,UAAUC,OACvB,OAAOi8K,EAAQt9K,KAAM0/F,EAAYr+F,EAAQA,EAAS,EAAID,UAAU,QAAK8kC,O,6BChBzE,IAAIi4H,EAAI,EAAQ,OACZ3F,EAAc,EAAQ,MACtBnjF,EAAU,EAAQ,OAElBooG,EAAajlB,EAAY,GAAGz3B,SAC5BzxH,EAAO,CAAC,EAAG,GAMf6uJ,EAAE,CAAEx4I,OAAQ,QAASuxE,OAAO,EAAMuoE,OAAQ9uJ,OAAOrB,KAAUqB,OAAOrB,EAAKyxH,YAAc,CACnFA,QAAS,WAGP,OADI1rD,EAAQr1E,QAAOA,KAAKqB,OAASrB,KAAKqB,QAC/Bo8K,EAAWz9K,U,6BCftB,IAAIm+J,EAAI,EAAQ,OACZ9oF,EAAU,EAAQ,OAClBihF,EAAgB,EAAQ,MACxBt9E,EAAW,EAAQ,OACnBi+E,EAAkB,EAAQ,OAC1BC,EAAoB,EAAQ,OAC5BkB,EAAkB,EAAQ,OAC1BT,EAAiB,EAAQ,OACzBnB,EAAkB,EAAQ,MAC1BglB,EAA+B,EAAQ,OACvCkC,EAAW,EAAQ,OAEnBvB,EAAsBX,EAA6B,SAEnD5hB,EAAUpD,EAAgB,WAC1BsB,EAASp4J,MACTmgE,EAAM5wD,KAAK4wD,IAKfs+F,EAAE,CAAEx4I,OAAQ,QAASuxE,OAAO,EAAMuoE,QAAS0c,GAAuB,CAChE5vI,MAAO,SAAe46C,EAAOC,GAC3B,IAKI09D,EAAalgJ,EAAQzD,EALrBg2J,EAAIiB,EAAgBp4J,MACpBqB,EAAS61J,EAAkBC,GAC3BxwJ,EAAIswJ,EAAgB9vE,EAAO9lF,GAC3B64J,EAAMjD,OAAwB/wH,IAARkhD,EAAoB/lF,EAAS+lF,EAAK/lF,GAG5D,GAAIg0E,EAAQ8hF,KACVrS,EAAcqS,EAAEl3J,YAEZq2J,EAAcxR,KAAiBA,IAAgBgT,GAAUziF,EAAQyvE,EAAY5kJ,YAC/E4kJ,OAAc5+G,EACL8yC,EAAS8rE,KAClBA,EAAcA,EAAY8U,GACN,OAAhB9U,IAAsBA,OAAc5+G,IAEtC4+G,IAAgBgT,QAA0B5xH,IAAhB4+G,GAC5B,OAAO44B,EAASvmB,EAAGxwJ,EAAGuzJ,GAI1B,IADAt1J,EAAS,SAAqBshC,IAAhB4+G,EAA4BgT,EAAShT,GAAajlF,EAAIq6F,EAAMvzJ,EAAG,IACxExF,EAAI,EAAGwF,EAAIuzJ,EAAKvzJ,IAAKxF,IAASwF,KAAKwwJ,GAAGQ,EAAe/yJ,EAAQzD,EAAGg2J,EAAExwJ,IAEvE,OADA/B,EAAOvD,OAASF,EACTyD,M,4BC7CX,IAAIu5J,EAAI,EAAQ,OACZwf,EAAQ,cACRpmB,EAAsB,EAAQ,MAE9BC,EAAgBD,EAAoB,QAIxC4G,EAAE,CAAEx4I,OAAQ,QAASuxE,OAAO,EAAMuoE,QAASjI,GAAiB,CAC1DlkI,KAAM,SAAcosE,GAClB,OAAOi+E,EAAM39K,KAAM0/F,EAAYt+F,UAAUC,OAAS,EAAID,UAAU,QAAK8kC,O,4BCVzE,IAAIi4H,EAAI,EAAQ,OACZ3F,EAAc,EAAQ,MACtBuB,EAAY,EAAQ,OACpB35H,EAAW,EAAQ,OACnB82H,EAAoB,EAAQ,OAC5B0mB,EAAwB,EAAQ,OAChCrvK,EAAW,EAAQ,OACnBwoJ,EAAQ,EAAQ,OAChB8mB,EAAe,EAAQ,OACvBtmB,EAAsB,EAAQ,MAC9BumB,EAAK,EAAQ,OACbC,EAAa,EAAQ,OACrBC,EAAK,EAAQ,MACbC,EAAS,EAAQ,OAEjB3uK,EAAO,GACP4uK,EAAU1lB,EAAYlpJ,EAAK8W,MAC3BpgB,EAAOwyJ,EAAYlpJ,EAAKtJ,MAGxBm4K,EAAqBpnB,GAAM,WAC7BznJ,EAAK8W,UAAK8f,MAGRk4I,EAAgBrnB,GAAM,WACxBznJ,EAAK8W,KAAK,SAGRoxI,EAAgBD,EAAoB,QAEpC8mB,GAAetnB,GAAM,WAEvB,GAAIinB,EAAI,OAAOA,EAAK,GACpB,KAAIF,GAAMA,EAAK,GAAf,CACA,GAAIC,EAAY,OAAO,EACvB,GAAIE,EAAQ,OAAOA,EAAS,IAE5B,IACInrK,EAAMo9J,EAAK5rK,EAAOguC,EADlB1tC,EAAS,GAIb,IAAKkO,EAAO,GAAIA,EAAO,GAAIA,IAAQ,CAGjC,OAFAo9J,EAAMv/J,OAAOC,aAAakC,GAElBA,GACN,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAAIxO,EAAQ,EAAG,MAC/C,KAAK,GAAI,KAAK,GAAIA,EAAQ,EAAG,MAC7B,QAASA,EAAQ,EAGnB,IAAKguC,EAAQ,EAAGA,EAAQ,GAAIA,IAC1BhjC,EAAKtJ,KAAK,CAAEW,EAAGupK,EAAM59H,EAAO1sC,EAAGtB,IAMnC,IAFAgL,EAAK8W,MAAK,SAAUxf,EAAGhH,GAAK,OAAOA,EAAEgG,EAAIgB,EAAEhB,KAEtC0sC,EAAQ,EAAGA,EAAQhjC,EAAKjO,OAAQixC,IACnC49H,EAAM5gK,EAAKgjC,GAAO3rC,EAAEmvC,OAAO,GACvBlxC,EAAOkxC,OAAOlxC,EAAOvD,OAAS,KAAO6uK,IAAKtrK,GAAUsrK,GAG1D,MAAkB,gBAAXtrK,MAGL80J,EAASykB,IAAuBC,IAAkB5mB,IAAkB6mB,EAEpEC,EAAiB,SAAUjkB,GAC7B,OAAO,SAAUiT,EAAGpoK,GAClB,YAAUghC,IAANhhC,GAAyB,OACnBghC,IAANonI,EAAwB,OACVpnI,IAAdm0H,GAAiCA,EAAUiT,EAAGpoK,IAAM,EACjDqJ,EAAS++J,GAAK/+J,EAASrJ,GAAK,GAAK,IAM5Ci5J,EAAE,CAAEx4I,OAAQ,QAASuxE,OAAO,EAAMuoE,OAAQ/F,GAAU,CAClDtzI,KAAM,SAAci0I,QACAn0H,IAAdm0H,GAAyBN,EAAUM,GAEvC,IAAIp7H,EAAQmB,EAASpgC,MAErB,GAAIq+K,EAAa,YAAqBn4I,IAAdm0H,EAA0B6jB,EAAQj/I,GAASi/I,EAAQj/I,EAAOo7H,GAElF,IAEIkkB,EAAajsI,EAFb08D,EAAQ,GACRwvE,EAActnB,EAAkBj4H,GAGpC,IAAKqT,EAAQ,EAAGA,EAAQksI,EAAalsI,IAC/BA,KAASrT,GAAOj5B,EAAKgpG,EAAO/vE,EAAMqT,IAGxCurI,EAAa7uE,EAAOsvE,EAAejkB,IAEnCkkB,EAAcvvE,EAAM3tG,OACpBixC,EAAQ,EAER,MAAOA,EAAQisI,EAAat/I,EAAMqT,GAAS08D,EAAM18D,KACjD,MAAOA,EAAQksI,EAAaZ,EAAsB3+I,EAAOqT,KAEzD,OAAOrT,M,6BCtGX,IAAIk/H,EAAI,EAAQ,OACZ/9H,EAAW,EAAQ,OACnB62H,EAAkB,EAAQ,OAC1BsC,EAAsB,EAAQ,OAC9BrC,EAAoB,EAAQ,OAC5BqQ,EAA2B,EAAQ,MACnC7O,EAAqB,EAAQ,OAC7Bf,EAAiB,EAAQ,OACzBimB,EAAwB,EAAQ,OAChCpC,EAA+B,EAAQ,OAEvCW,EAAsBX,EAA6B,UAEnD37G,EAAM5wD,KAAK4wD,IACXta,EAAMt2C,KAAKs2C,IAKf44G,EAAE,CAAEx4I,OAAQ,QAASuxE,OAAO,EAAMuoE,QAAS0c,GAAuB,CAChE3rE,OAAQ,SAAgBrpB,EAAOs3F,GAC7B,IAIIC,EAAaC,EAAmB5O,EAAGppK,EAAGq6F,EAAM8K,EAJ5CqrD,EAAI/2H,EAASpgC,MACb6gG,EAAMq2D,EAAkBC,GACxBynB,EAAc3nB,EAAgB9vE,EAAO0Z,GACrCu2D,EAAkBh2J,UAAUC,OAahC,IAXwB,IAApB+1J,EACFsnB,EAAcC,EAAoB,EACL,IAApBvnB,GACTsnB,EAAc,EACdC,EAAoB99E,EAAM+9E,IAE1BF,EAActnB,EAAkB,EAChCunB,EAAoBp5H,EAAIsa,EAAI05F,EAAoBklB,GAAc,GAAI59E,EAAM+9E,IAE1ErX,EAAyB1mE,EAAM69E,EAAcC,GAC7C5O,EAAIrX,EAAmBvB,EAAGwnB,GACrBh4K,EAAI,EAAGA,EAAIg4K,EAAmBh4K,IACjCq6F,EAAO49E,EAAcj4K,EACjBq6F,KAAQm2D,GAAGQ,EAAeoY,EAAGppK,EAAGwwJ,EAAEn2D,IAGxC,GADA+uE,EAAE1uK,OAASs9K,EACPD,EAAcC,EAAmB,CACnC,IAAKh4K,EAAIi4K,EAAaj4K,EAAIk6F,EAAM89E,EAAmBh4K,IACjDq6F,EAAOr6F,EAAIg4K,EACX7yE,EAAKnlG,EAAI+3K,EACL19E,KAAQm2D,EAAGA,EAAErrD,GAAMqrD,EAAEn2D,GACpB48E,EAAsBzmB,EAAGrrD,GAEhC,IAAKnlG,EAAIk6F,EAAKl6F,EAAIk6F,EAAM89E,EAAoBD,EAAa/3K,IAAKi3K,EAAsBzmB,EAAGxwJ,EAAI,QACtF,GAAI+3K,EAAcC,EACvB,IAAKh4K,EAAIk6F,EAAM89E,EAAmBh4K,EAAIi4K,EAAaj4K,IACjDq6F,EAAOr6F,EAAIg4K,EAAoB,EAC/B7yE,EAAKnlG,EAAI+3K,EAAc,EACnB19E,KAAQm2D,EAAGA,EAAErrD,GAAMqrD,EAAEn2D,GACpB48E,EAAsBzmB,EAAGrrD,GAGlC,IAAKnlG,EAAI,EAAGA,EAAI+3K,EAAa/3K,IAC3BwwJ,EAAExwJ,EAAIi4K,GAAex9K,UAAUuF,EAAI,GAGrC,OADAwwJ,EAAE91J,OAASw/F,EAAM89E,EAAoBD,EAC9B3O,M,gBC7DX,IAAIkM,EAAmB,EAAQ,OAG/BA,EAAiB,S,gBCJjB,IAAIzjB,EAAc,EAAQ,MACtB6F,EAAgB,EAAQ,OAExBwgB,EAAgBrwJ,KAAKtuB,UACrB4+K,EAAe,eACfC,EAAY,WACZC,EAAkBxmB,EAAYqmB,EAAcE,IAC5Ch3I,EAAUywH,EAAYqmB,EAAc92I,SAIpCp3B,OAAO,IAAI6d,KAAKywJ,OAASH,GAC3BzgB,EAAcwgB,EAAeE,GAAW,WACtC,IAAIz6K,EAAQyjC,EAAQ/nC,MAEpB,OAAOsE,IAAUA,EAAQ06K,EAAgBh/K,MAAQ8+K,M,gBCfrD,IAAI3gB,EAAI,EAAQ,OACZ9oB,EAAS,EAAQ,OACjBtxI,EAAQ,EAAQ,OAChBm7K,EAAgC,EAAQ,OAExCC,EAAe,cACfC,EAAc/pC,EAAO8pC,GAErBzlB,EAA4C,IAAnC94J,MAAM,IAAK,CAAEqpK,MAAO,IAAKA,MAElCoV,EAAgC,SAAUxnG,EAAYslF,GACxD,IAAIhG,EAAI,GACRA,EAAEt/E,GAAcqnG,EAA8BrnG,EAAYslF,EAASzD,GACnEyE,EAAE,CAAE9oB,QAAQ,EAAMp1I,aAAa,EAAMotK,MAAO,EAAG5N,OAAQ/F,GAAUvC,IAG/DmoB,EAAqC,SAAUznG,EAAYslF,GAC7D,GAAIiiB,GAAeA,EAAYvnG,GAAa,CAC1C,IAAIs/E,EAAI,GACRA,EAAEt/E,GAAcqnG,EAA8BC,EAAe,IAAMtnG,EAAYslF,EAASzD,GACxFyE,EAAE,CAAEx4I,OAAQw5J,EAAc5Y,MAAM,EAAMtmK,aAAa,EAAMotK,MAAO,EAAG5N,OAAQ/F,GAAUvC,KAKzFkoB,EAA8B,SAAS,SAAU9hD,GAC/C,OAAO,SAAenxG,GAAW,OAAOroB,EAAMw5H,EAAMv9H,KAAMoB,eAE5Di+K,EAA8B,aAAa,SAAU9hD,GACnD,OAAO,SAAmBnxG,GAAW,OAAOroB,EAAMw5H,EAAMv9H,KAAMoB,eAEhEi+K,EAA8B,cAAc,SAAU9hD,GACpD,OAAO,SAAoBnxG,GAAW,OAAOroB,EAAMw5H,EAAMv9H,KAAMoB,eAEjEi+K,EAA8B,kBAAkB,SAAU9hD,GACxD,OAAO,SAAwBnxG,GAAW,OAAOroB,EAAMw5H,EAAMv9H,KAAMoB,eAErEi+K,EAA8B,eAAe,SAAU9hD,GACrD,OAAO,SAAqBnxG,GAAW,OAAOroB,EAAMw5H,EAAMv9H,KAAMoB,eAElEi+K,EAA8B,aAAa,SAAU9hD,GACnD,OAAO,SAAmBnxG,GAAW,OAAOroB,EAAMw5H,EAAMv9H,KAAMoB,eAEhEi+K,EAA8B,YAAY,SAAU9hD,GAClD,OAAO,SAAkBnxG,GAAW,OAAOroB,EAAMw5H,EAAMv9H,KAAMoB,eAE/Dk+K,EAAmC,gBAAgB,SAAU/hD,GAC3D,OAAO,SAAsBnxG,GAAW,OAAOroB,EAAMw5H,EAAMv9H,KAAMoB,eAEnEk+K,EAAmC,aAAa,SAAU/hD,GACxD,OAAO,SAAmBnxG,GAAW,OAAOroB,EAAMw5H,EAAMv9H,KAAMoB,eAEhEk+K,EAAmC,gBAAgB,SAAU/hD,GAC3D,OAAO,SAAsBnxG,GAAW,OAAOroB,EAAMw5H,EAAMv9H,KAAMoB,gB,gBCtDnE,IAAIi9J,EAAgB,EAAQ,OACxBkhB,EAAgB,EAAQ,MAExBC,EAAiB5+K,MAAMV,UAIvBs/K,EAAejxK,WAAagxK,GAC9BlhB,EAAcmhB,EAAgB,WAAYD,I,gBCP5C,IAAIphB,EAAI,EAAQ,OACZ96G,EAAO,EAAQ,OAInB86G,EAAE,CAAEx4I,OAAQ,WAAYuxE,OAAO,EAAMuoE,OAAQnZ,SAASjjG,OAASA,GAAQ,CACrEA,KAAMA,K,gBCPR,IAAIu5G,EAAc,EAAQ,OACtB6iB,EAAuB,gBACvBjnB,EAAc,EAAQ,MACtBpqH,EAAiB,UAEjB+5H,EAAoB7hB,SAASpmJ,UAC7B6pK,EAAmBvR,EAAY2P,EAAkB55J,UACjDmxK,EAAS,mEACTC,EAAannB,EAAYknB,EAAOrlK,MAChCwmJ,EAAO,OAIPjE,IAAgB6iB,GAClBrxI,EAAe+5H,EAAmBtH,EAAM,CACtCvyH,cAAc,EACd5sC,IAAK,WACH,IACE,OAAOi+K,EAAWD,EAAQ3V,EAAiB/pK,OAAO,GAClD,MAAOsG,GACP,MAAO,Q,gBCpBf,IAAI63J,EAAI,EAAQ,OACZuH,EAAa,EAAQ,OACrB3hK,EAAQ,EAAQ,OAChBpD,EAAO,EAAQ,OACf63J,EAAc,EAAQ,MACtBzB,EAAQ,EAAQ,OAChB1hF,EAAU,EAAQ,OAClB6gF,EAAa,EAAQ,OACrBl9E,EAAW,EAAQ,OACnBihG,EAAW,EAAQ,OACnB9f,EAAa,EAAQ,OACrBwU,EAAgB,EAAQ,OAExBiR,EAAala,EAAW,OAAQ,aAChCrrJ,EAAOm+I,EAAY,IAAIn+I,MACvBy7B,EAAS0iH,EAAY,GAAG1iH,QACxBhmC,EAAa0oJ,EAAY,GAAG1oJ,YAC5BoB,EAAUsnJ,EAAY,GAAGtnJ,SACzB2uK,EAAiBrnB,EAAY,GAAIjqJ,UAEjCuxK,EAAS,mBACTC,EAAM,oBACNC,EAAK,oBAELC,GAA4BtR,GAAiB5X,GAAM,WACrD,IAAI+X,EAASpJ,EAAW,SAAXA,GAEb,MAA+B,UAAxBka,EAAW,CAAC9Q,KAEe,MAA7B8Q,EAAW,CAAEh5K,EAAGkoK,KAEc,MAA9B8Q,EAAWrgL,OAAOuvK,OAIrBoR,EAAqBnpB,GAAM,WAC7B,MAAsC,qBAA/B6oB,EAAW,iBACY,cAAzBA,EAAW,aAGdO,EAA0B,SAAUrpB,EAAIspB,GAC1C,IAAIhuF,EAAO+nE,EAAW/4J,WAClBi/K,EAAYD,EAChB,IAAKpnG,EAASonG,SAAoBl6I,IAAP4wH,KAAoBmjB,EAASnjB,GAMxD,OALKzhF,EAAQ+qG,KAAWA,EAAW,SAAUxkK,EAAKtX,GAEhD,GADI4xJ,EAAWmqB,KAAY/7K,EAAQ3D,EAAK0/K,EAAWrgL,KAAM4b,EAAKtX,KACzD21K,EAAS31K,GAAQ,OAAOA,IAE/B8tF,EAAK,GAAKguF,EACHr8K,EAAM67K,EAAY,KAAMxtF,IAG7BkuF,EAAe,SAAU7wI,EAAOvH,EAAQm4H,GAC1C,IAAIxC,EAAO/nH,EAAOuqH,EAAQn4H,EAAS,GAC/BzjC,EAAOqxC,EAAOuqH,EAAQn4H,EAAS,GACnC,OAAK7tB,EAAK0lK,EAAKtwI,KAAWp1B,EAAK2lK,EAAIv7K,IAAW4V,EAAK2lK,EAAIvwI,KAAWp1B,EAAK0lK,EAAKliB,GACnE,MAAQgiB,EAAe/vK,EAAW2/B,EAAO,GAAI,IAC7CA,GAGPmwI,GAGFzhB,EAAE,CAAEx4I,OAAQ,OAAQ4gJ,MAAM,EAAM8G,MAAO,EAAG5N,OAAQwgB,GAA4BC,GAAsB,CAElG3lK,UAAW,SAAmBu8I,EAAIspB,EAAUG,GAC1C,IAAInuF,EAAO+nE,EAAW/4J,WAClBwD,EAASb,EAAMk8K,EAA2BE,EAA0BP,EAAY,KAAMxtF,GAC1F,OAAO8tF,GAAuC,iBAAVt7K,EAAqBsM,EAAQtM,EAAQk7K,EAAQQ,GAAgB17K,M,gBCpEvG,IAAIywI,EAAS,EAAQ,OACjBmpB,EAAiB,EAAQ,OAI7BA,EAAenpB,EAAO/6H,KAAM,QAAQ,I,6BCJpC,IAAIkmK,EAAa,EAAQ,OACrBC,EAAmB,EAAQ,OAI/BD,EAAW,OAAO,SAAUjjD,GAC1B,OAAO,WAAiB,OAAOA,EAAKv9H,KAAMoB,UAAUC,OAASD,UAAU,QAAK8kC,MAC3Eu6I,I,gBCPH,EAAQ,Q,gBCDR,IAAItiB,EAAI,EAAQ,OACZ/4I,EAAO,EAAQ,OAEf67E,EAAMhyF,KAAKgyF,IACXm9B,EAAMnvH,KAAKmvH,IAIf+/B,EAAE,CAAEx4I,OAAQ,OAAQ4gJ,MAAM,GAAQ,CAChCma,KAAM,SAAcpT,GAClB,IAAInsK,GAAKmsK,EACT,OAAOloJ,EAAKjkB,GAAKi9H,EAAIn9B,EAAI9/F,GAAI,EAAI,O,gBCXrC,IAAIq9J,EAAiB,EAAQ,OAI7BA,EAAevvJ,KAAM,QAAQ,I,4BCH7B,IAAI2tJ,EAAc,EAAQ,OACtBvnB,EAAS,EAAQ,OACjBmjB,EAAc,EAAQ,MACtB4F,EAAW,EAAQ,OACnBC,EAAgB,EAAQ,OACxBqB,EAAS,EAAQ,OACjBjB,EAAoB,EAAQ,OAC5B5H,EAAgB,EAAQ,OACxBojB,EAAW,EAAQ,OACnBG,EAAc,EAAQ,OACtBrjB,EAAQ,EAAQ,OAChBjB,EAAsB,UACtBgK,EAA2B,WAC3B1xH,EAAiB,UACjBuyI,EAAkB,EAAQ,OAC1BjlK,EAAO,cAEPklK,EAAS,SACTC,EAAexrC,EAAOurC,GACtBE,EAAkBD,EAAa3gL,UAC/B4F,EAAYuvI,EAAOvvI,UACnBq0J,EAAa3B,EAAY,GAAGjsH,OAC5Bz8B,EAAa0oJ,EAAY,GAAG1oJ,YAI5BixK,EAAY,SAAUz8K,GACxB,IAAI08K,EAAY5G,EAAY91K,EAAO,UACnC,MAA2B,iBAAb08K,EAAwBA,EAAYC,EAASD,IAKzDC,EAAW,SAAU5qB,GACvB,IACIkH,EAAO2jB,EAAOxR,EAAOyR,EAASC,EAAQ//K,EAAQixC,EAAOx/B,EADrDgkJ,EAAKsjB,EAAY/jB,EAAU,UAE/B,GAAI4jB,EAASnjB,GAAK,MAAMhxJ,EAAU,6CAClC,GAAiB,iBAANgxJ,GAAkBA,EAAGz1J,OAAS,EAGvC,GAFAy1J,EAAKp7I,EAAKo7I,GACVyG,EAAQztJ,EAAWgnJ,EAAI,GACT,KAAVyG,GAA0B,KAAVA,GAElB,GADA2jB,EAAQpxK,EAAWgnJ,EAAI,GACT,KAAVoqB,GAA0B,MAAVA,EAAe,OAAOjC,SACrC,GAAc,KAAV1hB,EAAc,CACvB,OAAQztJ,EAAWgnJ,EAAI,IACrB,KAAK,GAAI,KAAK,GAAI4Y,EAAQ,EAAGyR,EAAU,GAAI,MAC3C,KAAK,GAAI,KAAK,IAAKzR,EAAQ,EAAGyR,EAAU,GAAI,MAC5C,QAAS,OAAQrqB,EAInB,IAFAsqB,EAASjnB,EAAWrD,EAAI,GACxBz1J,EAAS+/K,EAAO//K,OACXixC,EAAQ,EAAGA,EAAQjxC,EAAQixC,IAI9B,GAHAx/B,EAAOhD,EAAWsxK,EAAQ9uI,GAGtBx/B,EAAO,IAAMA,EAAOquK,EAAS,OAAOlC,IACxC,OAAOh6H,SAASm8H,EAAQ1R,GAE5B,OAAQ5Y,GAKZ,GAAIsH,EAASwiB,GAASC,EAAa,UAAYA,EAAa,QAAUA,EAAa,SAAU,CAQ3F,IAPA,IAcqBjlK,EAdjBylK,EAAgB,SAAgB/8K,GAClC,IAAInD,EAAIC,UAAUC,OAAS,EAAI,EAAIw/K,EAAaE,EAAUz8K,IACtDk7J,EAAQx/J,KAEZ,OAAO62J,EAAciqB,EAAiBthB,IAAUzI,GAAM,WAAc4pB,EAAgBnhB,MAChFf,EAAkBl/J,OAAO4B,GAAIq+J,EAAO6hB,GAAiBlgL,GAElD0B,EAAO+5J,EAAc9G,EAAoB+qB,GAAgB,oLAOhEzpK,MAAM,KAAMvQ,EAAI,EAAQhE,EAAKxB,OAASwF,EAAGA,IACrC64J,EAAOmhB,EAAcjlK,EAAM/Y,EAAKgE,MAAQ64J,EAAO2hB,EAAezlK,IAChEwyB,EAAeizI,EAAezlK,EAAKkkJ,EAAyB+gB,EAAcjlK,IAG9EylK,EAAcnhL,UAAY4gL,EAC1BA,EAAgB7gL,YAAcohL,EAC9BhjB,EAAchpB,EAAQurC,EAAQS,EAAe,CAAEphL,aAAa,M,6BCrF9D,IAAIk+J,EAAI,EAAQ,OACZ3F,EAAc,EAAQ,MACtBe,EAAsB,EAAQ,OAC9BonB,EAAkB,EAAQ,OAC1BW,EAAU,EAAQ,OAClBvqB,EAAQ,EAAQ,OAEhB8gB,EAAcC,WACdvhB,EAAU5lJ,OACV20C,EAAQr2C,KAAKq2C,MACbi8H,EAAS/oB,EAAY8oB,GACrB7lB,EAAcjD,EAAY,GAAGjsH,OAC7Bi1I,EAAahpB,EAAY,GAAI53D,SAE7Bw9B,EAAM,SAAUkvC,EAAGnsK,EAAGsgL,GACxB,OAAa,IAANtgL,EAAUsgL,EAAMtgL,EAAI,IAAM,EAAIi9H,EAAIkvC,EAAGnsK,EAAI,EAAGsgL,EAAMnU,GAAKlvC,EAAIkvC,EAAIA,EAAGnsK,EAAI,EAAGsgL,IAG9E/9K,EAAM,SAAU4pK,GAClB,IAAInsK,EAAI,EACJugL,EAAKpU,EACT,MAAOoU,GAAM,KACXvgL,GAAK,GACLugL,GAAM,KAER,MAAOA,GAAM,EACXvgL,GAAK,EACLugL,GAAM,EACN,OAAOvgL,GAGPwgL,EAAW,SAAUvxK,EAAMjP,EAAG8yE,GAChC,IAAI3hC,GAAS,EACTgiC,EAAKL,EACT,QAAS3hC,EAAQ,EACfgiC,GAAMnzE,EAAIiP,EAAKkiC,GACfliC,EAAKkiC,GAASgiC,EAAK,IACnBA,EAAKhvB,EAAMgvB,EAAK,MAIhBstG,EAAS,SAAUxxK,EAAMjP,GAC3B,IAAImxC,EAAQ,EACR2hC,EAAI,EACR,QAAS3hC,GAAS,EAChB2hC,GAAK7jE,EAAKkiC,GACVliC,EAAKkiC,GAASgT,EAAM2uB,EAAI9yE,GACxB8yE,EAAKA,EAAI9yE,EAAK,KAId0gL,EAAe,SAAUzxK,GAC3B,IAAIkiC,EAAQ,EACRrxC,EAAI,GACR,QAASqxC,GAAS,EAChB,GAAU,KAANrxC,GAAsB,IAAVqxC,GAA+B,IAAhBliC,EAAKkiC,GAAc,CAChD,IAAItxC,EAAIu1J,EAAQnmJ,EAAKkiC,IACrBrxC,EAAU,KAANA,EAAWD,EAAIC,EAAIsgL,EAAO,IAAK,EAAIvgL,EAAEK,QAAUL,EAErD,OAAOC,GAGPy4J,EAAS3C,GAAM,WACjB,MAAkC,UAA3ByqB,EAAW,KAAS,IACF,MAAvBA,EAAW,GAAK,IACS,SAAzBA,EAAW,MAAO,IACuB,wBAAzCA,EAAW,kBAAuB,QAC/BzqB,GAAM,WAEXyqB,EAAW,OAKbrjB,EAAE,CAAEx4I,OAAQ,SAAUuxE,OAAO,EAAMuoE,OAAQ/F,GAAU,CACnD94D,QAAS,SAAiBkhF,GACxB,IAKIp9K,EAAGq9K,EAAGl7K,EAAGF,EALT0/F,EAASs6E,EAAgB3gL,MACzBgiL,EAAczoB,EAAoBuoB,GAClC1xK,EAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GACvBgV,EAAO,GACPxgB,EAAS,IAIb,GAAIo9K,EAAc,GAAKA,EAAc,GAAI,MAAMnK,EAAY,6BAE3D,GAAIxxE,GAAUA,EAAQ,MAAO,MAC7B,GAAIA,IAAW,MAAQA,GAAU,KAAM,OAAOkwD,EAAQlwD,GAKtD,GAJIA,EAAS,IACXjhF,EAAO,IACPihF,GAAUA,GAERA,EAAS,MAKX,GAJA3hG,EAAIhB,EAAI2iG,EAAS+3B,EAAI,EAAG,GAAI,IAAM,GAClC2jD,EAAIr9K,EAAI,EAAI2hG,EAAS+3B,EAAI,GAAI15H,EAAG,GAAK2hG,EAAS+3B,EAAI,EAAG15H,EAAG,GACxDq9K,GAAK,iBACLr9K,EAAI,GAAKA,EACLA,EAAI,EAAG,CACTi9K,EAASvxK,EAAM,EAAG2xK,GAClBl7K,EAAIm7K,EACJ,MAAOn7K,GAAK,EACV86K,EAASvxK,EAAM,IAAK,GACpBvJ,GAAK,EAEP86K,EAASvxK,EAAMguH,EAAI,GAAIv3H,EAAG,GAAI,GAC9BA,EAAInC,EAAI,EACR,MAAOmC,GAAK,GACV+6K,EAAOxxK,EAAM,GAAK,IAClBvJ,GAAK,GAEP+6K,EAAOxxK,EAAM,GAAKvJ,GAClB86K,EAASvxK,EAAM,EAAG,GAClBwxK,EAAOxxK,EAAM,GACbxL,EAASi9K,EAAazxK,QAEtBuxK,EAASvxK,EAAM,EAAG2xK,GAClBJ,EAASvxK,EAAM,IAAM1L,EAAG,GACxBE,EAASi9K,EAAazxK,GAAQmxK,EAAO,IAAKS,GAU5C,OAPEA,EAAc,GAChBr7K,EAAI/B,EAAOvD,OACXuD,EAASwgB,GAAQze,GAAKq7K,EAClB,KAAOT,EAAO,IAAKS,EAAcr7K,GAAK/B,EACtC62J,EAAY72J,EAAQ,EAAG+B,EAAIq7K,GAAe,IAAMvmB,EAAY72J,EAAQ+B,EAAIq7K,KAE5Ep9K,EAASwgB,EAAOxgB,EACTA,M,gBChIb,IAAIu5J,EAAI,EAAQ,OACZp9J,EAAS,EAAQ,OAKrBo9J,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,EAAM8G,MAAO,EAAG5N,OAAQlgK,OAAOwB,SAAWA,GAAU,CAC9EA,OAAQA,K,gBCNV,IAAIo9J,EAAI,EAAQ,OACZvB,EAAc,EAAQ,OACtBz8J,EAAS,EAAQ,OAIrBg+J,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,EAAME,MAAO7J,GAAe,CACtDz8J,OAAQA,K,gBCRV,IAAIg+J,EAAI,EAAQ,OACZvB,EAAc,EAAQ,OACtB5M,EAAmB,WAKvBmO,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,EAAM9G,OAAQlgK,OAAOywJ,mBAAqBA,EAAkByW,MAAO7J,GAAe,CAC5G5M,iBAAkBA,K,gBCRpB,IAAImO,EAAI,EAAQ,OACZvB,EAAc,EAAQ,OACtBxuH,EAAiB,UAKrB+vH,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,EAAM9G,OAAQlgK,OAAO6uC,iBAAmBA,EAAgBq4H,MAAO7J,GAAe,CACxGxuH,eAAgBA,K,gBCRlB,IAAI+vH,EAAI,EAAQ,OACZ8jB,EAAW,iBAIf9jB,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,GAAQ,CAClCntF,QAAS,SAAiB+9E,GACxB,OAAO8qB,EAAS9qB,O,gBCPpB,IAAIgH,EAAI,EAAQ,OACZkM,EAAW,EAAQ,OACnBtT,EAAQ,EAAQ,OAChB/9E,EAAW,EAAQ,OACnB4xF,EAAW,kBAGXsX,EAAU3iL,OAAO4iL,OACjB3P,EAAsBzb,GAAM,WAAcmrB,EAAQ,MAItD/jB,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,EAAM9G,OAAQ+S,EAAqB/L,MAAO4D,GAAY,CAChF8X,OAAQ,SAAgBrrB,GACtB,OAAOorB,GAAWlpG,EAAS89E,GAAMorB,EAAQtX,EAAS9T,IAAOA,M,gBCd7D,IAAIqH,EAAI,EAAQ,OACZpH,EAAQ,EAAQ,OAChBqB,EAAkB,EAAQ,OAC1BgqB,EAAiC,WACjCxlB,EAAc,EAAQ,OAEtB4V,EAAsBzb,GAAM,WAAcqrB,EAA+B,MACzE1oB,GAAUkD,GAAe4V,EAI7BrU,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,EAAM9G,OAAQ/F,EAAQ+M,MAAO7J,GAAe,CACtEkD,yBAA0B,SAAkChJ,EAAIl7I,GAC9D,OAAOwmK,EAA+BhqB,EAAgBtB,GAAKl7I,O,gBCb/D,IAAIuiJ,EAAI,EAAQ,OACZvB,EAAc,EAAQ,OACtB+C,EAAU,EAAQ,OAClBvH,EAAkB,EAAQ,OAC1BwH,EAAiC,EAAQ,OACzCjI,EAAiB,EAAQ,OAI7BwG,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,EAAME,MAAO7J,GAAe,CACtDylB,0BAA2B,SAAmCxpF,GAC5D,IAKIj9E,EAAK8lF,EALLy1D,EAAIiB,EAAgBv/D,GACpBinE,EAA2BF,EAA+B36J,EAC1DpC,EAAO88J,EAAQxI,GACfvyJ,EAAS,GACT0tC,EAAQ,EAEZ,MAAOzvC,EAAKxB,OAASixC,EACnBovD,EAAao+D,EAAyB3I,EAAGv7I,EAAM/Y,EAAKyvC,WACjCpM,IAAfw7D,GAA0Bi2D,EAAe/yJ,EAAQgX,EAAK8lF,GAE5D,OAAO98F,M,gBCrBX,IAAIu5J,EAAI,EAAQ,OACZwQ,EAAgB,EAAQ,OACxB5X,EAAQ,EAAQ,OAChB6Y,EAA8B,EAAQ,OACtCxvI,EAAW,EAAQ,OAInBs5H,GAAUiV,GAAiB5X,GAAM,WAAc6Y,EAA4B3qK,EAAE,MAIjFk5J,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,EAAM9G,OAAQ/F,GAAU,CAClDmV,sBAAuB,SAA+B/X,GACpD,IAAIwrB,EAAyB1S,EAA4B3qK,EACzD,OAAOq9K,EAAyBA,EAAuBliJ,EAAS02H,IAAO,O,gBCf3E,IAAIqH,EAAI,EAAQ,OACZpH,EAAQ,EAAQ,OAChB32H,EAAW,EAAQ,OACnBmiJ,EAAuB,EAAQ,OAC/BnQ,EAA2B,EAAQ,OAEnCI,EAAsBzb,GAAM,WAAcwrB,EAAqB,MAInEpkB,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,EAAM9G,OAAQ+S,EAAqB/L,MAAO2L,GAA4B,CAChG9c,eAAgB,SAAwBwB,GACtC,OAAOyrB,EAAqBniJ,EAAS02H,Q,gBCZzC,IAAIqH,EAAI,EAAQ,OACZuB,EAAS,EAAQ,OAIrBvB,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,GAAQ,CAClC7G,OAAQA,K,gBCNV,IAAIvB,EAAI,EAAQ,OACZ6X,EAAK,EAAQ,OAIjB7X,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,GAAQ,CAClCyP,GAAIA,K,gBCNN,IAAI7X,EAAI,EAAQ,OACZ/9H,EAAW,EAAQ,OACnBoiJ,EAAa,EAAQ,OACrBzrB,EAAQ,EAAQ,OAEhByb,EAAsBzb,GAAM,WAAcyrB,EAAW,MAIzDrkB,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,EAAM9G,OAAQ+S,GAAuB,CAC/D3vK,KAAM,SAAci0J,GAClB,OAAO0rB,EAAWpiJ,EAAS02H,Q,gBCX/B,IAAIqH,EAAI,EAAQ,OACZ3+J,EAAiB,EAAQ,OAI7B2+J,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,GAAQ,CAClC/mK,eAAgBA,K,gBCNlB,IAAIk8J,EAAwB,EAAQ,OAChC2C,EAAgB,EAAQ,OACxB9vJ,EAAW,EAAQ,OAIlBmtJ,GACH2C,EAAc9+J,OAAOW,UAAW,WAAYqO,EAAU,CAAEkzJ,QAAQ,K,gBCPlE,IAAItD,EAAI,EAAQ,OACZskB,EAAU,gBAIdtkB,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,GAAQ,CAClCn0H,OAAQ,SAAgB+kH,GACtB,OAAOsrB,EAAQtrB,O,gBCPnB,IAAIgH,EAAI,EAAQ,OACZukB,EAAc,EAAQ,MAI1BvkB,EAAE,CAAE9oB,QAAQ,EAAMoqB,OAAQtmC,YAAcupD,GAAe,CACrDvpD,WAAYupD,K,gBCNd,IAAIvkB,EAAI,EAAQ,OACZsR,EAAY,EAAQ,OAIxBtR,EAAE,CAAE9oB,QAAQ,EAAMoqB,OAAQx6G,UAAYwqH,GAAa,CACjDxqH,SAAUwqH,K,6BCLZ,IAAItR,EAAI,EAAQ,OACZx9J,EAAO,EAAQ,OACfo5J,EAAY,EAAQ,OACpB4oB,EAA6B,EAAQ,OACrCC,EAAU,EAAQ,OAClB3rE,EAAU,EAAQ,OAClB4rE,EAAsC,EAAQ,OAIlD1kB,EAAE,CAAEx4I,OAAQ,UAAW4gJ,MAAM,EAAM9G,OAAQojB,GAAuC,CAChFjhJ,IAAK,SAAa07H,GAChB,IAAIxC,EAAI96J,KACJ8iL,EAAaH,EAA2B19K,EAAE61J,GAC1Cz4J,EAAUygL,EAAWzgL,QACrBC,EAASwgL,EAAWxgL,OACpBsC,EAASg+K,GAAQ,WACnB,IAAIG,EAAkBhpB,EAAUe,EAAEz4J,SAC9B+vC,EAAS,GACT4lI,EAAU,EACVlgD,EAAY,EAChB7gB,EAAQqmD,GAAU,SAAUzmF,GAC1B,IAAIvkC,EAAQ0lI,IACRgL,GAAgB,EACpBlrD,IACAn3H,EAAKoiL,EAAiBjoB,EAAGjkF,GAAS/xE,MAAK,SAAUR,GAC3C0+K,IACJA,GAAgB,EAChB5wI,EAAOE,GAAShuC,IACdwzH,GAAaz1H,EAAQ+vC,MACtB9vC,QAEHw1H,GAAaz1H,EAAQ+vC,MAGzB,OADIxtC,EAAO0B,OAAOhE,EAAOsC,EAAON,OACzBw+K,EAAWjsG,Y,6BCnCtB,IAAIsnF,EAAI,EAAQ,OACZuD,EAAU,EAAQ,OAClB6R,EAA6B,qBAC7BN,EAA2B,EAAQ,MACnCvN,EAAa,EAAQ,OACrBxP,EAAa,EAAQ,OACrBmI,EAAgB,EAAQ,OAExB8U,EAAyBF,GAA4BA,EAAyB/yK,UAWlF,GAPAi+J,EAAE,CAAEx4I,OAAQ,UAAWuxE,OAAO,EAAMuoE,OAAQ8T,EAA4B0P,MAAM,GAAQ,CACpF,MAAS,SAAUvzB,GACjB,OAAO1vJ,KAAK8E,UAAKohC,EAAWwpH,OAK3BgS,GAAWxL,EAAW+c,GAA2B,CACpD,IAAInxK,EAAS4jK,EAAW,WAAWxlK,UAAU,SACzCizK,EAAuB,WAAarxK,GACtCu8J,EAAc8U,EAAwB,QAASrxK,EAAQ,CAAE2/J,QAAQ,M,6BCtBrE,IAgDItmB,EAAU+nC,EAAsBC,EAAgBC,EAhDhDjlB,EAAI,EAAQ,OACZuD,EAAU,EAAQ,OAClBsM,EAAU,EAAQ,OAClB34B,EAAS,EAAQ,OACjB10I,EAAO,EAAQ,OACf09J,EAAgB,EAAQ,OACxB7+J,EAAiB,EAAQ,OACzBg/J,EAAiB,EAAQ,OACzB7B,EAAa,EAAQ,OACrB5C,EAAY,EAAQ,OACpB7D,EAAa,EAAQ,OACrBl9E,EAAW,EAAQ,OACnByjF,EAAa,EAAQ,OACrB4mB,EAAqB,EAAQ,OAC7BhpG,EAAO,aACPipG,EAAY,EAAQ,OACpBC,EAAmB,EAAQ,KAC3BX,EAAU,EAAQ,OAClB3O,EAAQ,EAAQ,OAChBnX,EAAsB,EAAQ,OAC9BmW,EAA2B,EAAQ,MACnCuQ,EAA8B,EAAQ,OACtCb,EAA6B,EAAQ,OAErCc,EAAU,UACVlQ,EAA6BiQ,EAA4B7P,YACzDN,EAAiCmQ,EAA4B5P,gBAC7D8P,EAA6BF,EAA4BpQ,YACzDuQ,EAA0B7mB,EAAoBG,UAAUwmB,GACxD1mB,EAAmBD,EAAoBn0I,IACvCwqJ,EAAyBF,GAA4BA,EAAyB/yK,UAC9E0jL,EAAqB3Q,EACrB4Q,EAAmB1Q,EACnBrtK,EAAYuvI,EAAOvvI,UACnB6vC,EAAW0/F,EAAO1/F,SAClBo8G,EAAU1c,EAAO0c,QACjB8hB,EAAuB8O,EAA2B19K,EAClD6+K,EAA8BjQ,EAE9BkQ,KAAoBpuI,GAAYA,EAASsmC,aAAeo5D,EAAOnwB,eAC/D8+D,EAAsB,qBACtBC,EAAoB,mBACpBC,EAAU,EACVC,EAAY,EACZC,EAAW,EACXC,EAAU,EACVC,EAAY,EAKZC,EAAa,SAAUztB,GACzB,IAAIhyJ,EACJ,SAAOk0E,EAAS89E,KAAOZ,EAAWpxJ,EAAOgyJ,EAAGhyJ,QAAQA,GAGlD0/K,EAAe,SAAUC,EAAUp4I,GACrC,IAMIznC,EAAQE,EAAM4/K,EANdpgL,EAAQ+nC,EAAM/nC,MACdo5H,EAAKrxF,EAAMA,OAAS83I,EACpBznE,EAAUghB,EAAK+mD,EAAS/mD,GAAK+mD,EAAShmG,KACtCp8E,EAAUoiL,EAASpiL,QACnBC,EAASmiL,EAASniL,OAClB4jF,EAASu+F,EAASv+F,OAEtB,IACMw2B,GACGghB,IACCrxF,EAAMs4I,YAAcL,GAAWM,GAAkBv4I,GACrDA,EAAMs4I,UAAYN,IAEJ,IAAZ3nE,EAAkB93G,EAASN,GAEzB4hF,GAAQA,EAAOooF,QACnB1pK,EAAS83G,EAAQp4G,GACb4hF,IACFA,EAAOmoF,OACPqW,GAAS,IAGT9/K,IAAW6/K,EAAS5tG,QACtBv0E,EAAOwD,EAAU,yBACRhB,EAAOy/K,EAAW3/K,IAC3BjE,EAAKmE,EAAMF,EAAQvC,EAASC,GACvBD,EAAQuC,IACVtC,EAAOgC,GACd,MAAOgC,GACH4/E,IAAWw+F,GAAQx+F,EAAOmoF,OAC9B/rK,EAAOgE,KAIPmnK,GAAS,SAAUphI,EAAOw4I,GACxBx4I,EAAMy4I,WACVz4I,EAAMy4I,UAAW,EACjBxB,GAAU,WACR,IACImB,EADAM,EAAY14I,EAAM04I,UAEtB,MAAON,EAAWM,EAAUrjL,MAC1B8iL,EAAaC,EAAUp4I,GAEzBA,EAAMy4I,UAAW,EACbD,IAAax4I,EAAMs4I,WAAWK,GAAY34I,QAI9C64E,GAAgB,SAAU7xG,EAAMwjE,EAASw4B,GAC3C,IAAIzoF,EAAO81F,EACPqnE,GACFn9J,EAAQ+uB,EAASsmC,YAAY,SAC7Br1D,EAAMiwD,QAAUA,EAChBjwD,EAAMyoF,OAASA,EACfzoF,EAAMs1D,UAAU7oE,GAAM,GAAO,GAC7BgiI,EAAOnwB,cAAct+F,IAChBA,EAAQ,CAAEiwD,QAASA,EAASw4B,OAAQA,IACtCgkE,IAAmC32D,EAAU24B,EAAO,KAAOhiI,IAAQqpG,EAAQ91F,GACvEvT,IAAS2wK,GAAqBT,EAAiB,8BAA+Bl0E,IAGrF21E,GAAc,SAAU34I,GAC1B1rC,EAAK05E,EAAMg7D,GAAQ,WACjB,IAGIzwI,EAHAiyE,EAAUxqC,EAAMi/H,OAChBhnK,EAAQ+nC,EAAM/nC,MACd2gL,EAAeC,GAAY74I,GAE/B,GAAI44I,IACFrgL,EAASg+K,GAAQ,WACX5U,EACFjc,EAAQozB,KAAK,qBAAsB7gL,EAAOuyE,GACrCquC,GAAc8+D,EAAqBntG,EAASvyE,MAGrD+nC,EAAMs4I,UAAY3W,GAAWkX,GAAY74I,GAASi4I,EAAYD,EAC1Dz/K,EAAO0B,OAAO,MAAM1B,EAAON,UAKjC4gL,GAAc,SAAU74I,GAC1B,OAAOA,EAAMs4I,YAAcN,IAAYh4I,EAAMwS,QAG3C+lI,GAAoB,SAAUv4I,GAChC1rC,EAAK05E,EAAMg7D,GAAQ,WACjB,IAAIx+D,EAAUxqC,EAAMi/H,OAChB0C,EACFjc,EAAQozB,KAAK,mBAAoBtuG,GAC5BquC,GAAc++D,EAAmBptG,EAASxqC,EAAM/nC,WAIvD++C,GAAO,SAAU23B,EAAI3uC,EAAO+4I,GAC9B,OAAO,SAAU9gL,GACf02E,EAAG3uC,EAAO/nC,EAAO8gL,KAIjBC,GAAiB,SAAUh5I,EAAO/nC,EAAO8gL,GACvC/4I,EAAMxnC,OACVwnC,EAAMxnC,MAAO,EACTugL,IAAQ/4I,EAAQ+4I,GACpB/4I,EAAM/nC,MAAQA,EACd+nC,EAAMA,MAAQ+3I,EACd3W,GAAOphI,GAAO,KAGZi5I,GAAkB,SAAUj5I,EAAO/nC,EAAO8gL,GAC5C,IAAI/4I,EAAMxnC,KAAV,CACAwnC,EAAMxnC,MAAO,EACTugL,IAAQ/4I,EAAQ+4I,GACpB,IACE,GAAI/4I,EAAMi/H,SAAWhnK,EAAO,MAAMwB,EAAU,oCAC5C,IAAIhB,EAAOy/K,EAAWjgL,GAClBQ,EACFw+K,GAAU,WACR,IAAInmB,EAAU,CAAEt4J,MAAM,GACtB,IACElE,EAAKmE,EAAMR,EACT++C,GAAKiiI,GAAiBnoB,EAAS9wH,GAC/BgX,GAAKgiI,GAAgBloB,EAAS9wH,IAEhC,MAAO/lC,GACP++K,GAAeloB,EAAS72J,EAAO+lC,QAInCA,EAAM/nC,MAAQA,EACd+nC,EAAMA,MAAQ83I,EACd1W,GAAOphI,GAAO,IAEhB,MAAO/lC,GACP++K,GAAe,CAAExgL,MAAM,GAASyB,EAAO+lC,MAK3C,GAAIknI,IAEFqQ,EAAqB,SAAiB/pG,GACpC4iF,EAAWz8J,KAAM6jL,GACjB9pB,EAAUlgF,GACVl5E,EAAKw6I,EAAUn7I,MACf,IAAIqsC,EAAQs3I,EAAwB3jL,MACpC,IACE65E,EAASx2B,GAAKiiI,GAAiBj5I,GAAQgX,GAAKgiI,GAAgBh5I,IAC5D,MAAO/lC,GACP++K,GAAeh5I,EAAO/lC,KAI1Bu9K,EAAmBD,EAAmB1jL,UAGtCi7I,EAAW,SAAiBthE,GAC1BkjF,EAAiB/8J,KAAM,CACrBktB,KAAMu2J,EACN5+K,MAAM,EACNigL,UAAU,EACVjmI,QAAQ,EACRkmI,UAAW,IAAI9Q,EACf0Q,WAAW,EACXt4I,MAAO63I,EACP5/K,WAAO4hC,KAMXi1G,EAASj7I,UAAYm+J,EAAcwlB,EAAkB,QAAQ,SAAcp0B,EAAaC,GACtF,IAAIrjH,EAAQs3I,EAAwB3jL,MAChCykL,EAAW5Q,EAAqBwP,EAAmBrjL,KAAM4jL,IAS7D,OARAv3I,EAAMwS,QAAS,EACf4lI,EAAS/mD,IAAKw4B,EAAWzG,IAAeA,EACxCg1B,EAAShmG,KAAOy3E,EAAWxG,IAAeA,EAC1C+0B,EAASv+F,OAAS8nF,EAAUjc,EAAQ7rE,YAAShgD,EACzCmG,EAAMA,OAAS63I,EAAS73I,EAAM04I,UAAU5nJ,IAAIsnJ,GAC3CnB,GAAU,WACbkB,EAAaC,EAAUp4I,MAElBo4I,EAAS5tG,WAGlBqsG,EAAuB,WACrB,IAAIrsG,EAAU,IAAIskE,EACd9uG,EAAQs3I,EAAwB9sG,GACpC72E,KAAK62E,QAAUA,EACf72E,KAAKqC,QAAUghD,GAAKiiI,GAAiBj5I,GACrCrsC,KAAKsC,OAAS+gD,GAAKgiI,GAAgBh5I,IAGrCs2I,EAA2B19K,EAAI4uK,EAAuB,SAAU/Y,GAC9D,OAAOA,IAAM8oB,GAAsB9oB,IAAMqoB,EACrC,IAAID,EAAqBpoB,GACzBgpB,EAA4BhpB,KAG7B4G,GAAWxL,EAAW+c,IAA6BE,IAA2B5zK,OAAOW,WAAW,CACnGkjL,EAAajQ,EAAuBruK,KAE/B4+K,GAEHrlB,EAAc8U,EAAwB,QAAQ,SAAc1jB,EAAaC,GACvE,IAAIr4C,EAAOr3G,KACX,OAAO,IAAI4jL,GAAmB,SAAUvhL,EAASC,GAC/C3B,EAAKyiL,EAAY/rE,EAAMh1G,EAASC,MAC/BwC,KAAK2qJ,EAAaC,KAEpB,CAAE+R,QAAQ,IAIf,WACS0R,EAAuBlzK,YAC9B,MAAOqG,KAGL9G,GACFA,EAAe2zK,EAAwB0Q,GAK7C1lB,EAAE,CAAE9oB,QAAQ,EAAMp1I,aAAa,EAAMk2K,MAAM,EAAM1W,OAAQ8T,GAA8B,CACrFnxK,QAASwhL,IAGXplB,EAAeolB,EAAoBH,GAAS,GAAO,GACnD9mB,EAAW8mB,I,6BC9RX,IAAItlB,EAAI,EAAQ,OACZuD,EAAU,EAAQ,OAClBuR,EAA2B,EAAQ,MACnClc,EAAQ,EAAQ,OAChB2O,EAAa,EAAQ,OACrBxP,EAAa,EAAQ,OACrBmtB,EAAqB,EAAQ,OAC7BkC,EAAiB,EAAQ,OACzBlnB,EAAgB,EAAQ,OAExB8U,EAAyBF,GAA4BA,EAAyB/yK,UAG9EslL,IAAgBvS,GAA4Blc,GAAM,WAEpDoc,EAAuB,WAAWxyK,KAAK,CAAEmE,KAAM,eAA+B,kBAqBhF,GAhBAq5J,EAAE,CAAEx4I,OAAQ,UAAWuxE,OAAO,EAAM+rF,MAAM,EAAMxjB,OAAQ+lB,GAAe,CACrE,QAAW,SAAUC,GACnB,IAAI3qB,EAAIuoB,EAAmBrjL,KAAM0lK,EAAW,YACxC51E,EAAaomE,EAAWuvB,GAC5B,OAAOzlL,KAAK8E,KACVgrF,EAAa,SAAUw9E,GACrB,OAAOiY,EAAezqB,EAAG2qB,KAAa3gL,MAAK,WAAc,OAAOwoK,MAC9DmY,EACJ31F,EAAa,SAAUprF,GACrB,OAAO6gL,EAAezqB,EAAG2qB,KAAa3gL,MAAK,WAAc,MAAMJ,MAC7D+gL,OAML/jB,GAAWxL,EAAW+c,GAA2B,CACpD,IAAInxK,EAAS4jK,EAAW,WAAWxlK,UAAU,WACzCizK,EAAuB,aAAerxK,GACxCu8J,EAAc8U,EAAwB,UAAWrxK,EAAQ,CAAE2/J,QAAQ,M,gBCvCvE,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,MACR,EAAQ,OACR,EAAQ,Q,4BCLR,IAAItD,EAAI,EAAQ,OACZx9J,EAAO,EAAQ,OACfo5J,EAAY,EAAQ,OACpB4oB,EAA6B,EAAQ,OACrCC,EAAU,EAAQ,OAClB3rE,EAAU,EAAQ,OAClB4rE,EAAsC,EAAQ,OAIlD1kB,EAAE,CAAEx4I,OAAQ,UAAW4gJ,MAAM,EAAM9G,OAAQojB,GAAuC,CAChF6C,KAAM,SAAcpoB,GAClB,IAAIxC,EAAI96J,KACJ8iL,EAAaH,EAA2B19K,EAAE61J,GAC1Cx4J,EAASwgL,EAAWxgL,OACpBsC,EAASg+K,GAAQ,WACnB,IAAIG,EAAkBhpB,EAAUe,EAAEz4J,SAClC40G,EAAQqmD,GAAU,SAAUzmF,GAC1Bl2E,EAAKoiL,EAAiBjoB,EAAGjkF,GAAS/xE,KAAKg+K,EAAWzgL,QAASC,SAI/D,OADIsC,EAAO0B,OAAOhE,EAAOsC,EAAON,OACzBw+K,EAAWjsG,Y,6BCtBtB,IAAIsnF,EAAI,EAAQ,OACZx9J,EAAO,EAAQ,OACfgiL,EAA6B,EAAQ,OACrCpP,EAA6B,qBAIjCpV,EAAE,CAAEx4I,OAAQ,UAAW4gJ,MAAM,EAAM9G,OAAQ8T,GAA8B,CACvEjxK,OAAQ,SAAgB8D,GACtB,IAAI08K,EAAaH,EAA2B19K,EAAEjF,MAE9C,OADAW,EAAKmiL,EAAWxgL,YAAQ4jC,EAAW9/B,GAC5B08K,EAAWjsG,Y,6BCXtB,IAAIsnF,EAAI,EAAQ,OACZuH,EAAa,EAAQ,OACrBhE,EAAU,EAAQ,OAClBuR,EAA2B,EAAQ,MACnCM,EAA6B,qBAC7BgS,EAAiB,EAAQ,OAEzBI,EAA4BjgB,EAAW,WACvCkgB,EAAgBlkB,IAAY6R,EAIhCpV,EAAE,CAAEx4I,OAAQ,UAAW4gJ,MAAM,EAAM9G,OAAQiC,GAAW6R,GAA8B,CAClFlxK,QAAS,SAAiBirK,GACxB,OAAOiY,EAAeK,GAAiB5lL,OAAS2lL,EAA4B1S,EAA2BjzK,KAAMstK,O,gBCfjH,IAAInP,EAAI,EAAQ,OACZuH,EAAa,EAAQ,OACrB3hK,EAAQ,EAAQ,OAChBs/C,EAAO,EAAQ,OACfszH,EAAe,EAAQ,OACvB3b,EAAW,EAAQ,OACnBhiF,EAAW,EAAQ,OACnB74E,EAAS,EAAQ,OACjB42J,EAAQ,EAAQ,OAEhB8uB,EAAkBngB,EAAW,UAAW,aACxC2M,EAAkB9yK,OAAOW,UACzB8F,EAAO,GAAGA,KAMV8/K,EAAiB/uB,GAAM,WACzB,SAASmJ,KACT,QAAS2lB,GAAgB,cAA6B,GAAI3lB,aAAcA,MAGtE6lB,GAAYhvB,GAAM,WACpB8uB,GAAgB,kBAGdnsB,EAASosB,GAAkBC,EAE/B5nB,EAAE,CAAEx4I,OAAQ,UAAW4gJ,MAAM,EAAM9G,OAAQ/F,EAAQ+M,KAAM/M,GAAU,CACjE6O,UAAW,SAAmBwL,EAAQ3hF,GACpCukF,EAAa5C,GACb/Y,EAAS5oE,GACT,IAAI4zF,EAAY5kL,UAAUC,OAAS,EAAI0yK,EAAS4C,EAAav1K,UAAU,IACvE,GAAI2kL,IAAaD,EAAgB,OAAOD,EAAgB9R,EAAQ3hF,EAAM4zF,GACtE,GAAIjS,GAAUiS,EAAW,CAEvB,OAAQ5zF,EAAK/wF,QACX,KAAK,EAAG,OAAO,IAAI0yK,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAO3hF,EAAK,IAC/B,KAAK,EAAG,OAAO,IAAI2hF,EAAO3hF,EAAK,GAAIA,EAAK,IACxC,KAAK,EAAG,OAAO,IAAI2hF,EAAO3hF,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjD,KAAK,EAAG,OAAO,IAAI2hF,EAAO3hF,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAG5D,IAAI6zF,EAAQ,CAAC,MAEb,OADAliL,EAAMiC,EAAMigL,EAAO7zF,GACZ,IAAKruF,EAAMs/C,EAAM0wH,EAAQkS,IAGlC,IAAI/uF,EAAQ8uF,EAAU9lL,UAClBgtJ,EAAW/sJ,EAAO64E,EAASke,GAASA,EAAQm7E,GAC5CztK,EAASb,EAAMgwK,EAAQ7mB,EAAU96D,GACrC,OAAOpZ,EAASp0E,GAAUA,EAASsoJ,M,gBCrDvC,IAAIiR,EAAI,EAAQ,OACZ9oB,EAAS,EAAQ,OACjBmpB,EAAiB,EAAQ,OAE7BL,EAAE,CAAE9oB,QAAQ,GAAQ,CAAE+yB,QAAS,KAI/B5J,EAAenpB,EAAO+yB,QAAS,WAAW,I,gBCR1C,IAAIxL,EAAc,EAAQ,OACtBvnB,EAAS,EAAQ,OACjBmjB,EAAc,EAAQ,MACtB4F,EAAW,EAAQ,OACnBK,EAAoB,EAAQ,OAC5B6C,EAA8B,EAAQ,OACtCxL,EAAsB,UACtBe,EAAgB,EAAQ,OACxBmV,EAAW,EAAQ,OACnBz9J,EAAW,EAAQ,OACnB23K,EAAiB,EAAQ,OACzB7R,EAAgB,EAAQ,OACxBuG,EAAgB,EAAQ,MACxBvc,EAAgB,EAAQ,OACxBtH,EAAQ,EAAQ,OAChB2I,EAAS,EAAQ,OACjBwN,EAAuB,iBACvBvQ,EAAa,EAAQ,OACrBnG,EAAkB,EAAQ,MAC1B8d,EAAsB,EAAQ,MAC9BC,EAAkB,EAAQ,OAE1BxU,EAAQvJ,EAAgB,SACxB2vB,EAAe9wC,EAAO94H,OACtBoqJ,EAAkBwf,EAAajmL,UAC/BkmL,EAAc/wC,EAAO+wC,YACrB/rK,EAAOm+I,EAAYmO,EAAgBtsJ,MACnCy7B,EAAS0iH,EAAY,GAAG1iH,QACxB5kC,EAAUsnJ,EAAY,GAAGtnJ,SACzBm1K,EAAgB7tB,EAAY,GAAGt9I,SAC/BugJ,EAAcjD,EAAY,GAAGjsH,OAE7B+5I,EAAS,2CACT1R,EAAM,KACNC,EAAM,KAGN0R,EAAc,IAAIJ,EAAavR,KAASA,EAExCmB,EAAgB1B,EAAc0B,cAC9BjB,EAAgBT,EAAcS,cAE9B0R,EAAc5pB,KACd2pB,GAAexQ,GAAiBzB,GAAuBC,GAAmBxd,GAAM,WAGhF,OAFA8d,EAAI9U,IAAS,EAENomB,EAAavR,IAAQA,GAAOuR,EAAatR,IAAQA,GAAiC,QAA1BsR,EAAavR,EAAK,SAGjF6R,EAAe,SAAUpmB,GAM3B,IALA,IAII6P,EAJA7uK,EAASg/J,EAAOh/J,OAChBixC,EAAQ,EACR1tC,EAAS,GACT8hL,GAAW,EAERp0I,GAASjxC,EAAQixC,IACtB49H,EAAMp6H,EAAOuqH,EAAQ/tH,GACT,OAAR49H,EAICwW,GAAoB,MAARxW,GAGH,MAARA,EACFwW,GAAW,EACM,MAARxW,IACTwW,GAAW,GACX9hL,GAAUsrK,GANZtrK,GAAU,WAJVA,GAAUsrK,EAAMp6H,EAAOuqH,IAAU/tH,GAYnC,OAAO1tC,GAGP+hL,EAAY,SAAUtmB,GAWxB,IAVA,IASI6P,EATA7uK,EAASg/J,EAAOh/J,OAChBixC,EAAQ,EACR1tC,EAAS,GACTgiL,EAAQ,GACRnU,EAAQ,GACRiU,GAAW,EACXG,GAAM,EACNC,EAAU,EACVC,EAAY,GAETz0I,GAASjxC,EAAQixC,IAAS,CAE/B,GADA49H,EAAMp6H,EAAOuqH,EAAQ/tH,GACT,OAAR49H,EACFA,GAAYp6H,EAAOuqH,IAAU/tH,QACxB,GAAY,MAAR49H,EACTwW,GAAW,OACN,IAAKA,EAAU,QAAQ,GAC5B,IAAa,MAARxW,EACHwW,GAAW,EACX,MACF,IAAa,MAARxW,EACC71J,EAAKisK,EAAQ7qB,EAAY4E,EAAQ/tH,EAAQ,MAC3CA,GAAS,EACTu0I,GAAM,GAERjiL,GAAUsrK,EACV4W,IACA,SACF,IAAa,MAAR5W,GAAe2W,EAClB,GAAkB,KAAdE,GAAoBrnB,EAAO+S,EAAOsU,GACpC,MAAM,IAAIX,EAAY,8BAExB3T,EAAMsU,IAAa,EACnBH,EAAMA,EAAMvlL,QAAU,CAAC0lL,EAAWD,GAClCD,GAAM,EACNE,EAAY,GACZ,SAEAF,EAAKE,GAAa7W,EACjBtrK,GAAUsrK,EACf,MAAO,CAACtrK,EAAQgiL,IAKpB,GAAIxoB,EAAS,SAAUooB,GAAc,CA4DnC,IA3DA,IAAIQ,EAAgB,SAAgB3qK,EAAS6qF,GAC3C,IAKI+/E,EAAUrR,EAAQN,EAAQ4R,EAAStiL,EAAQynC,EAL3C86I,EAAetwB,EAAc8P,EAAiB3mK,MAC9ConL,EAAkBpb,EAAS3vJ,GAC3BgrK,OAA8BnhJ,IAAVghE,EACpBmuE,EAAS,GACTiS,EAAajrK,EAGjB,IAAK8qK,GAAgBC,GAAmBC,GAAqBhrK,EAAQpc,cAAgB+mL,EACnF,OAAO3qK,EA0CT,IAvCI+qK,GAAmBvwB,EAAc8P,EAAiBtqJ,MACpDA,EAAUA,EAAQiqD,OACd+gH,IAAmBngF,EAAQg/E,EAAeoB,KAGhDjrK,OAAsB6pB,IAAZ7pB,EAAwB,GAAK9N,EAAS8N,GAChD6qF,OAAkBhhE,IAAVghE,EAAsB,GAAK34F,EAAS24F,GAC5CogF,EAAajrK,EAETi4J,GAAuB,WAAYM,IACrCgB,IAAW1uE,GAASm/E,EAAcn/E,EAAO,MAAQ,EAC7C0uE,IAAQ1uE,EAAQh2F,EAAQg2F,EAAO,KAAM,MAG3C+/E,EAAW//E,EAEP6uE,GAAiB,WAAYnB,IAC/BU,IAAWpuE,GAASm/E,EAAcn/E,EAAO,MAAQ,EAC7CouE,GAAUR,IAAe5tE,EAAQh2F,EAAQg2F,EAAO,KAAM,MAGxDqtE,IACF2S,EAAUP,EAAUtqK,GACpBA,EAAU6qK,EAAQ,GAClB7R,EAAS6R,EAAQ,IAGnBtiL,EAAS65J,EAAkB0nB,EAAa9pK,EAAS6qF,GAAQigF,EAAennL,KAAO2mK,EAAiBqgB,IAE5FpR,GAAUN,GAAUD,EAAOh0K,UAC7BgrC,EAAQ6gI,EAAqBtoK,GACzBgxK,IACFvpI,EAAMupI,QAAS,EACfvpI,EAAM+oI,IAAM4R,EAAcP,EAAapqK,GAAU4qK,IAE/C3R,IAAQjpI,EAAMipI,QAAS,GACvBD,EAAOh0K,SAAQgrC,EAAMgpI,OAASA,IAGhCh5J,IAAYirK,EAAY,IAE1BhmB,EAA4B18J,EAAQ,SAAyB,KAAf0iL,EAAoB,OAASA,GAC3E,MAAOhhL,IAET,OAAO1B,GAGA/B,EAAOizJ,EAAoBqwB,GAAe7zI,EAAQ,EAAGzvC,EAAKxB,OAASixC,GAC1EsoI,EAAcoM,EAAeb,EAActjL,EAAKyvC,MAGlDq0H,EAAgB1mK,YAAc+mL,EAC9BA,EAAc9mL,UAAYymK,EAC1BtI,EAAchpB,EAAQ,SAAU2xC,EAAe,CAAE/mL,aAAa,IAIhE08J,EAAW,W,gBC7LX,IAAIC,EAAc,EAAQ,OACtB0X,EAAsB,EAAQ,MAC9B7O,EAAU,EAAQ,OAClB8hB,EAAwB,EAAQ,OAChC7pB,EAAmB,aAEnBiJ,EAAkBpqJ,OAAOrc,UACzBk2J,EAAatwJ,UAIb82J,GAAe0X,GACjBiT,EAAsB5gB,EAAiB,SAAU,CAC/Cr4H,cAAc,EACd5sC,IAAK,WACH,GAAI1B,OAAS2mK,EAAb,CAGA,GAAsB,WAAlBlB,EAAQzlK,MACV,QAAS09J,EAAiB19J,MAAM41K,OAElC,MAAMxf,EAAW,+C,6BCpBvB,IAAI+H,EAAI,EAAQ,OACZ9jJ,EAAO,EAAQ,OAInB8jJ,EAAE,CAAEx4I,OAAQ,SAAUuxE,OAAO,EAAMuoE,OAAQ,IAAIplJ,OAASA,GAAQ,CAC9DA,KAAMA,K,gBCPR,IAAIuiJ,EAAc,EAAQ,OACtB2qB,EAAwB,EAAQ,OAChC1R,EAAc,EAAQ,OACtB9e,EAAQ,EAAQ,OAEhB4P,EAAkBpqJ,OAAOrc,UAEzBw5J,EAASkD,GAAe7F,GAAM,WAEhC,MAA8G,OAAvGx3J,OAAOugK,yBAAyB6G,EAAiB,SAASjlK,IAAIf,KAAK,CAAEi1K,QAAQ,EAAMN,QAAQ,OAKhG5b,GAAQ6tB,EAAsB5gB,EAAiB,QAAS,CAC1Dr4H,cAAc,EACd5sC,IAAKm0K,K,gBChBP,IAAIjZ,EAAc,EAAQ,OACtBmZ,EAAgB,uBAChBtQ,EAAU,EAAQ,OAClB8hB,EAAwB,EAAQ,OAChC7pB,EAAmB,aAEnBiJ,EAAkBpqJ,OAAOrc,UACzBk2J,EAAatwJ,UAIb82J,GAAemZ,GACjBwR,EAAsB5gB,EAAiB,SAAU,CAC/Cr4H,cAAc,EACd5sC,IAAK,WACH,GAAI1B,OAAS2mK,EAAb,CAGA,GAAsB,WAAlBlB,EAAQzlK,MACV,QAAS09J,EAAiB19J,MAAMs1K,OAElC,MAAMlf,EAAW,+C,6BCnBvB,EAAQ,OACR,IAAI+H,EAAI,EAAQ,OACZx9J,EAAO,EAAQ,OACf63J,EAAc,EAAQ,MACtBtC,EAAa,EAAQ,OACrBl9E,EAAW,EAAQ,OAEnB+tF,EAAoB,WACtB,IAAIC,GAAa,EACbC,EAAK,OAKT,OAJAA,EAAG5sJ,KAAO,WAER,OADA2sJ,GAAa,EACN,IAAI3sJ,KAAKtW,MAAM/D,KAAMoB,aAEJ,IAAnB6lK,EAAG33J,KAAK,QAAmB03J,EAPZ,GAUpB5Q,EAAatwJ,UACb0hL,EAAUhvB,EAAY,IAAIlpJ,MAI9B6uJ,EAAE,CAAEx4I,OAAQ,SAAUuxE,OAAO,EAAMuoE,QAASsH,GAAqB,CAC/Dz3J,KAAM,SAAUqL,GACd,IAAIN,EAAOra,KAAKqa,KAChB,IAAK67I,EAAW77I,GAAO,OAAOmtK,EAAQxnL,KAAM2a,GAC5C,IAAI/V,EAASjE,EAAK0Z,EAAMra,KAAM2a,GAC9B,GAAe,OAAX/V,IAAoBo0E,EAASp0E,GAC/B,MAAM,IAAIwxJ,EAAW,sEAEvB,QAASxxJ,M,6BC/Bb,IAAIk9J,EAAuB,gBACvBzD,EAAgB,EAAQ,OACxBrD,EAAW,EAAQ,OACnBysB,EAAY,EAAQ,OACpB1wB,EAAQ,EAAQ,OAChBmvB,EAAiB,EAAQ,OAEzBnH,EAAY,WACZpY,EAAkBpqJ,OAAOrc,UACzBwnL,EAAa/gB,EAAgBoY,GAE7B4I,EAAc5wB,GAAM,WAAc,MAAuD,QAAhD2wB,EAAW/mL,KAAK,CAAE2lE,OAAQ,IAAK4gC,MAAO,SAE/E0gF,EAAiB9lB,GAAwB4lB,EAAWr0K,MAAQ0rK,GAI5D4I,GAAeC,IACjBvpB,EAAc9hJ,OAAOrc,UAAW6+K,GAAW,WACzC,IAAI5K,EAAInZ,EAASh7J,MACbqc,EAAUorK,EAAUtT,EAAE7tG,QACtB4gC,EAAQugF,EAAUvB,EAAe/R,IACrC,MAAO,IAAM93J,EAAU,IAAM6qF,IAC5B,CAAEu6D,QAAQ,K,6BCvBf,IAAItD,EAAI,EAAQ,OACZ0pB,EAAa,EAAQ,OACrBC,EAAyB,EAAQ,OAIrC3pB,EAAE,CAAEx4I,OAAQ,SAAUuxE,OAAO,EAAMuoE,OAAQqoB,EAAuB,WAAa,CAC7EC,OAAQ,SAAgB10K,GACtB,OAAOw0K,EAAW7nL,KAAM,IAAK,OAAQqT,O,6BCRzC,IAAI8qJ,EAAI,EAAQ,OACZ3F,EAAc,EAAQ,MACtBsH,EAA2B,WAC3BmN,EAAW,EAAQ,OACnB1+J,EAAW,EAAQ,OACnBy5K,EAAa,EAAQ,MACrB7nB,EAAyB,EAAQ,OACjC8nB,EAAuB,EAAQ,OAC/BvmB,EAAU,EAAQ,OAGlBwmB,EAAc1vB,EAAY,GAAGr9I,UAC7BoxB,EAAQisH,EAAY,GAAGjsH,OACvBgZ,EAAMt2C,KAAKs2C,IAEX4iI,EAA0BF,EAAqB,YAE/CG,GAAoB1mB,IAAYymB,KAA6B,WAC/D,IAAIzmF,EAAao+D,EAAyBnvJ,OAAOzQ,UAAW,YAC5D,OAAOwhG,IAAeA,EAAWs/D,SAF8B,GAOjE7C,EAAE,CAAEx4I,OAAQ,SAAUuxE,OAAO,EAAMuoE,QAAS2oB,IAAqBD,GAA2B,CAC1FhtK,SAAU,SAAkB46I,GAC1B,IAAI1+C,EAAO9oG,EAAS4xJ,EAAuBngK,OAC3CgoL,EAAWjyB,GACX,IAAIsyB,EAAcjnL,UAAUC,OAAS,EAAID,UAAU,QAAK8kC,EACpD26D,EAAMwW,EAAKh2G,OACX+lF,OAAsBlhD,IAAhBmiJ,EAA4BxnF,EAAMt7C,EAAI0nH,EAASob,GAAcxnF,GACnE5lF,EAAS1M,EAASwnJ,GACtB,OAAOmyB,EACHA,EAAY7wE,EAAMp8F,EAAQmsE,GAC1B76C,EAAM8qE,EAAMjwB,EAAMnsE,EAAO5Z,OAAQ+lF,KAASnsE,M,6BClClD,IAAIkjJ,EAAI,EAAQ,OACZ0pB,EAAa,EAAQ,OACrBC,EAAyB,EAAQ,OAIrC3pB,EAAE,CAAEx4I,OAAQ,SAAUuxE,OAAO,EAAMuoE,OAAQqoB,EAAuB,UAAY,CAC5EQ,MAAO,WACL,OAAOT,EAAW7nL,KAAM,KAAM,GAAI,Q,6BCRtC,IAAIm+J,EAAI,EAAQ,OACZ3F,EAAc,EAAQ,MACtBwvB,EAAa,EAAQ,MACrB7nB,EAAyB,EAAQ,OACjC5xJ,EAAW,EAAQ,OACnB05K,EAAuB,EAAQ,OAE/B5B,EAAgB7tB,EAAY,GAAGt9I,SAInCijJ,EAAE,CAAEx4I,OAAQ,SAAUuxE,OAAO,EAAMuoE,QAASwoB,EAAqB,aAAe,CAC9EpvG,SAAU,SAAkBk9E,GAC1B,SAAUswB,EACR93K,EAAS4xJ,EAAuBngK,OAChCuO,EAASy5K,EAAWjyB,IACpB30J,UAAUC,OAAS,EAAID,UAAU,QAAK8kC,O,6BChB5C,IAAI4P,EAAS,gBACTvnC,EAAW,EAAQ,OACnBuuJ,EAAsB,EAAQ,OAC9BJ,EAAiB,EAAQ,OAEzB6rB,EAAkB,kBAClBxrB,EAAmBD,EAAoBn0I,IACvC+0I,EAAmBZ,EAAoBG,UAAUsrB,GAIrD7rB,EAAe/rJ,OAAQ,UAAU,SAAUutJ,GACzCnB,EAAiB/8J,KAAM,CACrBktB,KAAMq7J,EACNloB,OAAQ9xJ,EAAS2vJ,GACjB5rH,MAAO,OAIR,WACD,IAGIk2I,EAHAn8I,EAAQqxH,EAAiB19J,MACzBqgK,EAASh0H,EAAMg0H,OACf/tH,EAAQjG,EAAMiG,MAElB,OAAIA,GAAS+tH,EAAOh/J,OAAe,CAAEiD,WAAO4hC,EAAWrhC,MAAM,IAC7D2jL,EAAQ1yI,EAAOuqH,EAAQ/tH,GACvBjG,EAAMiG,OAASk2I,EAAMnnL,OACd,CAAEiD,MAAOkkL,EAAO3jL,MAAM,Q,6BC3B/B,IAAIs5J,EAAI,EAAQ,OACZ0pB,EAAa,EAAQ,OACrBC,EAAyB,EAAQ,OAIrC3pB,EAAE,CAAEx4I,OAAQ,SAAUuxE,OAAO,EAAMuoE,OAAQqoB,EAAuB,SAAW,CAC3EW,KAAM,SAAc9mL,GAClB,OAAOkmL,EAAW7nL,KAAM,IAAK,OAAQ2B,O,4BCRzC,IAAIhB,EAAO,EAAQ,OACf+nL,EAAgC,EAAQ,OACxC1tB,EAAW,EAAQ,OACnBiS,EAAW,EAAQ,OACnB1+J,EAAW,EAAQ,OACnB4xJ,EAAyB,EAAQ,OACjC2I,EAAY,EAAQ,OACpB6f,EAAqB,EAAQ,OAC7BhJ,EAAa,EAAQ,OAGzB+I,EAA8B,SAAS,SAAU3oB,EAAO6oB,EAAaC,GACnE,MAAO,CAGL,SAAexpD,GACb,IAAI83B,EAAIgJ,EAAuBngK,MAC3B8oL,OAAoB5iJ,GAAVm5F,OAAsBn5F,EAAY4iI,EAAUzpC,EAAQ0gC,GAClE,OAAO+oB,EAAUnoL,EAAKmoL,EAASzpD,EAAQ83B,GAAK,IAAI56I,OAAO8iH,GAAQ0gC,GAAOxxJ,EAAS4oJ,KAIjF,SAAUkJ,GACR,IAAI0oB,EAAK/tB,EAASh7J,MACd22J,EAAIpoJ,EAAS8xJ,GACb5kC,EAAMotD,EAAgBD,EAAaG,EAAIpyB,GAE3C,GAAIl7B,EAAI52H,KAAM,OAAO42H,EAAIn3H,MAEzB,IAAKykL,EAAG1zC,OAAQ,OAAOsqC,EAAWoJ,EAAIpyB,GAEtC,IAAIqyB,EAAcD,EAAGnyB,QACrBmyB,EAAG/yB,UAAY,EACf,IAEIpxJ,EAFAmrK,EAAI,GACJ5uK,EAAI,EAER,MAAwC,QAAhCyD,EAAS+6K,EAAWoJ,EAAIpyB,IAAc,CAC5C,IAAIsyB,EAAW16K,EAAS3J,EAAO,IAC/BmrK,EAAE5uK,GAAK8nL,EACU,KAAbA,IAAiBF,EAAG/yB,UAAY2yB,EAAmBhyB,EAAGsW,EAAS8b,EAAG/yB,WAAYgzB,IAClF7nL,IAEF,OAAa,IAANA,EAAU,KAAO4uK,Q,gBC3C9B,IAAI5R,EAAI,EAAQ,OACZojB,EAAS,EAAQ,OAIrBpjB,EAAE,CAAEx4I,OAAQ,SAAUuxE,OAAO,GAAQ,CACnCqqF,OAAQA,K,6BCLV,IAAIpjB,EAAI,EAAQ,OACZx9J,EAAO,EAAQ,OACf63J,EAAc,EAAQ,MACtB2H,EAAyB,EAAQ,OACjCjK,EAAa,EAAQ,OACrB8V,EAAW,EAAQ,OACnBz9J,EAAW,EAAQ,OACnBu6J,EAAY,EAAQ,OACpBod,EAAiB,EAAQ,OACzBgD,EAAkB,EAAQ,OAC1B1yB,EAAkB,EAAQ,MAC1BkL,EAAU,EAAQ,OAElBzC,EAAUzI,EAAgB,WAC1BJ,EAAatwJ,UACboV,EAAUs9I,EAAY,GAAGt9I,SACzBhK,EAAUsnJ,EAAY,GAAGtnJ,SACzBuqJ,EAAcjD,EAAY,GAAGjsH,OAC7BszB,EAAM5wD,KAAK4wD,IAEXwmH,EAAgB,SAAUhmB,EAAQ8oB,EAAapoF,GACjD,OAAIA,EAAYs/D,EAAOh/J,QAAgB,EACnB,KAAhB8nL,EAA2BpoF,EACxB7lF,EAAQmlJ,EAAQ8oB,EAAapoF,IAKtCo9D,EAAE,CAAEx4I,OAAQ,SAAUuxE,OAAO,GAAQ,CACnCkyF,WAAY,SAAoBD,EAAaE,GAC3C,IACIC,EAAYpiF,EAAOk5E,EAAU/f,EAAQtK,EAAcwzB,EAAmBC,EAAcC,EAAWngB,EAD/FnS,EAAIgJ,EAAuBngK,MAE3B0qE,EAAW,EACXg/G,EAAiB,EACjB9kL,EAAS,GACb,GAAmB,MAAfukL,EAAqB,CAEvB,GADAG,EAAatd,EAASmd,GAClBG,IACFpiF,EAAQ34F,EAAS4xJ,EAAuB+lB,EAAeiD,OACjDjuK,EAAQgsF,EAAO,MAAM,MAAMkvD,EAAW,mDAG9C,GADAgqB,EAAWtX,EAAUqgB,EAAalqB,GAC9BmhB,EACF,OAAOz/K,EAAKy/K,EAAU+I,EAAahyB,EAAGkyB,GACjC,GAAI3nB,GAAW4nB,EACpB,OAAOp4K,EAAQ3C,EAAS4oJ,GAAIgyB,EAAaE,GAG7ChpB,EAAS9xJ,EAAS4oJ,GAClBpB,EAAexnJ,EAAS46K,GACxBI,EAAoBrzB,EAAWmzB,GAC1BE,IAAmBF,EAAe96K,EAAS86K,IAChDG,EAAezzB,EAAa10J,OAC5BooL,EAAY5pH,EAAI,EAAG2pH,GACnB9+G,EAAW27G,EAAchmB,EAAQtK,EAAc,GAC/C,OAAqB,IAAdrrF,EACL4+F,EAAcigB,EACVh7K,EAAS86K,EAAatzB,EAAcrrF,EAAU21F,IAC9C6oB,EAAgBnzB,EAAcsK,EAAQ31F,EAAU,QAAIxkC,EAAWmjJ,GACnEzkL,GAAU62J,EAAY4E,EAAQqpB,EAAgBh/G,GAAY4+F,EAC1DogB,EAAiBh/G,EAAW8+G,EAC5B9+G,EAAW27G,EAAchmB,EAAQtK,EAAcrrF,EAAW++G,GAK5D,OAHIC,EAAiBrpB,EAAOh/J,SAC1BuD,GAAU62J,EAAY4E,EAAQqpB,IAEzB9kL,M,6BClEX,IAAIb,EAAQ,EAAQ,OAChBpD,EAAO,EAAQ,OACf63J,EAAc,EAAQ,MACtBkwB,EAAgC,EAAQ,OACxC3xB,EAAQ,EAAQ,OAChBiE,EAAW,EAAQ,OACnB9E,EAAa,EAAQ,OACrBqD,EAAsB,EAAQ,OAC9B0T,EAAW,EAAQ,OACnB1+J,EAAW,EAAQ,OACnB4xJ,EAAyB,EAAQ,OACjCwoB,EAAqB,EAAQ,OAC7B7f,EAAY,EAAQ,OACpBogB,EAAkB,EAAQ,OAC1BvJ,EAAa,EAAQ,OACrBnpB,EAAkB,EAAQ,MAE1ByI,EAAUzI,EAAgB,WAC1B32F,EAAM5wD,KAAK4wD,IACXta,EAAMt2C,KAAKs2C,IACX/+C,EAASgyJ,EAAY,GAAGhyJ,QACxBR,EAAOwyJ,EAAY,GAAGxyJ,MACtBqgL,EAAgB7tB,EAAY,GAAGt9I,SAC/BugJ,EAAcjD,EAAY,GAAGjsH,OAE7Bo9I,EAAgB,SAAU7yB,GAC5B,YAAc5wH,IAAP4wH,EAAmBA,EAAKnmJ,OAAOmmJ,IAKpC8yB,EAAmB,WAErB,MAAkC,OAA3B,IAAI14K,QAAQ,IAAK,MAFH,GAMnB24K,EAA+C,WACjD,QAAI,IAAI5qB,IAC6B,KAA5B,IAAIA,GAAS,IAAK,MAFsB,GAO/C6qB,GAAiC/yB,GAAM,WACzC,IAAIkQ,EAAK,IAOT,OANAA,EAAG5sJ,KAAO,WACR,IAAIzV,EAAS,GAEb,OADAA,EAAOywK,OAAS,CAAEzuK,EAAG,KACdhC,GAGyB,MAA3B,GAAGsM,QAAQ+1J,EAAI,WAIxByhB,EAA8B,WAAW,SAAUtjL,EAAGovK,EAAeqU,GACnE,IAAIkB,EAAoBF,EAA+C,IAAM,KAE7E,MAAO,CAGL,SAAiBV,EAAaE,GAC5B,IAAIlyB,EAAIgJ,EAAuBngK,MAC3BogL,OAA0Bl6I,GAAfijJ,OAA2BjjJ,EAAY4iI,EAAUqgB,EAAalqB,GAC7E,OAAOmhB,EACHz/K,EAAKy/K,EAAU+I,EAAahyB,EAAGkyB,GAC/B1oL,EAAK6zK,EAAejmK,EAAS4oJ,GAAIgyB,EAAaE,IAIpD,SAAUhpB,EAAQgpB,GAChB,IAAIN,EAAK/tB,EAASh7J,MACd22J,EAAIpoJ,EAAS8xJ,GAEjB,GACyB,iBAAhBgpB,IAC6C,IAApDhD,EAAcgD,EAAcU,KACW,IAAvC1D,EAAcgD,EAAc,MAC5B,CACA,IAAI5tD,EAAMotD,EAAgBrU,EAAeuU,EAAIpyB,EAAG0yB,GAChD,GAAI5tD,EAAI52H,KAAM,OAAO42H,EAAIn3H,MAG3B,IAAIilL,EAAoBrzB,EAAWmzB,GAC9BE,IAAmBF,EAAe96K,EAAS86K,IAEhD,IAAIh0C,EAAS0zC,EAAG1zC,OAChB,GAAIA,EAAQ,CACV,IAAI2zC,EAAcD,EAAGnyB,QACrBmyB,EAAG/yB,UAAY,EAEjB,IAAI90D,EAAU,GACd,MAAO,EAAM,CACX,IAAIt8F,EAAS+6K,EAAWoJ,EAAIpyB,GAC5B,GAAe,OAAX/xJ,EAAiB,MAGrB,GADAoB,EAAKk7F,EAASt8F,IACTywI,EAAQ,MAEb,IAAI4zC,EAAW16K,EAAS3J,EAAO,IACd,KAAbqkL,IAAiBF,EAAG/yB,UAAY2yB,EAAmBhyB,EAAGsW,EAAS8b,EAAG/yB,WAAYgzB,IAKpF,IAFA,IAAIgB,EAAoB,GACpBC,EAAqB,EAChB/oL,EAAI,EAAGA,EAAIggG,EAAQ7/F,OAAQH,IAAK,CACvC0D,EAASs8F,EAAQhgG,GAUjB,IARA,IAAIioK,EAAU56J,EAAS3J,EAAO,IAC1B8lE,EAAW7K,EAAIta,EAAIg0G,EAAoB30J,EAAO0tC,OAAQqkH,EAAEt1J,QAAS,GACjE+nK,EAAW,GAMNviK,EAAI,EAAGA,EAAIjC,EAAOvD,OAAQwF,IAAKb,EAAKojK,EAAUugB,EAAc/kL,EAAOiC,KAC5E,IAAIwiK,EAAgBzkK,EAAOywK,OAC3B,GAAIkU,EAAmB,CACrB,IAAIW,EAAe1jL,EAAO,CAAC2iK,GAAUC,EAAU1+F,EAAUisF,QACnCzwH,IAAlBmjI,GAA6BrjK,EAAKkkL,EAAc7gB,GACpD,IAAIC,EAAc/6J,EAASxK,EAAMslL,OAAcnjJ,EAAWgkJ,SAE1D5gB,EAAc4f,EAAgB/f,EAASxS,EAAGjsF,EAAU0+F,EAAUC,EAAeggB,GAE3E3+G,GAAYu/G,IACdD,GAAqBvuB,EAAY9E,EAAGszB,EAAoBv/G,GAAY4+F,EACpE2gB,EAAqBv/G,EAAWy+F,EAAQ9nK,QAG5C,OAAO2oL,EAAoBvuB,EAAY9E,EAAGszB,QAG5CH,IAAkCF,GAAoBC,I,6BCtI1D,IAAI1rB,EAAI,EAAQ,OACZ0pB,EAAa,EAAQ,OACrBC,EAAyB,EAAQ,OAIrC3pB,EAAE,CAAEx4I,OAAQ,SAAUuxE,OAAO,EAAMuoE,OAAQqoB,EAAuB,UAAY,CAC5EqC,MAAO,WACL,OAAOtC,EAAW7nL,KAAM,QAAS,GAAI,Q,6BCRzC,IAAI+D,EAAQ,EAAQ,OAChBpD,EAAO,EAAQ,OACf63J,EAAc,EAAQ,MACtBkwB,EAAgC,EAAQ,OACxC1c,EAAW,EAAQ,OACnBhR,EAAW,EAAQ,OACnBmF,EAAyB,EAAQ,OACjCkjB,EAAqB,EAAQ,OAC7BsF,EAAqB,EAAQ,OAC7B1b,EAAW,EAAQ,OACnB1+J,EAAW,EAAQ,OACnBu6J,EAAY,EAAQ,OACpB3O,EAAa,EAAQ,OACrBiwB,EAAiB,EAAQ,OACzB1jB,EAAa,EAAQ,OACrB2N,EAAgB,EAAQ,OACxBtd,EAAQ,EAAQ,OAEhB+d,EAAgBT,EAAcS,cAC9BuV,EAAa,WACb9kI,EAAMt2C,KAAKs2C,IACX+kI,EAAQ,GAAGtkL,KACXqU,EAAOm+I,EAAY,IAAIn+I,MACvBrU,EAAOwyJ,EAAY8xB,GACnB7uB,EAAcjD,EAAY,GAAGjsH,OAI7Bg+I,GAAqCxzB,GAAM,WAE7C,IAAIkQ,EAAK,OACLujB,EAAevjB,EAAG5sJ,KACtB4sJ,EAAG5sJ,KAAO,WAAc,OAAOmwK,EAAazmL,MAAM/D,KAAMoB,YACxD,IAAIwD,EAAS,KAAKwS,MAAM6vJ,GACxB,OAAyB,IAAlBriK,EAAOvD,QAA8B,MAAduD,EAAO,IAA4B,MAAdA,EAAO,MAI5D8jL,EAA8B,SAAS,SAAU+B,EAAOC,EAAa7B,GACnE,IAAI8B,EAqDJ,OAzCEA,EAV2B,KAA3B,OAAOvzK,MAAM,QAAQ,IAEc,GAAnC,OAAOA,MAAM,QAAS,GAAG/V,QACO,GAAhC,KAAK+V,MAAM,WAAW/V,QACU,GAAhC,IAAI+V,MAAM,YAAY/V,QAEtB,IAAI+V,MAAM,QAAQ/V,OAAS,GAC3B,GAAG+V,MAAM,MAAM/V,OAGC,SAAU+7K,EAAWwN,GACnC,IAAIvqB,EAAS9xJ,EAAS4xJ,EAAuBngK,OACzC6qL,OAAgB3kJ,IAAV0kJ,EAAsBP,EAAaO,IAAU,EACvD,GAAY,IAARC,EAAW,MAAO,GACtB,QAAkB3kJ,IAAdk3I,EAAyB,MAAO,CAAC/c,GAErC,IAAK2L,EAASoR,GACZ,OAAOz8K,EAAK+pL,EAAarqB,EAAQ+c,EAAWyN,GAE9C,IAQIp7I,EAAOumH,EAAW80B,EARlBt1G,EAAS,GACT0xB,GAASk2E,EAAUzH,WAAa,IAAM,KAC7ByH,EAAU3H,UAAY,IAAM,KAC5B2H,EAAUxmB,QAAU,IAAM,KAC1BwmB,EAAU9H,OAAS,IAAM,IAClCyV,EAAgB,EAEhBC,EAAgB,IAAIzuK,OAAO6gK,EAAU92G,OAAQ4gC,EAAQ,KAEzD,MAAOz3D,EAAQ9uC,EAAK+lK,EAAYskB,EAAe3qB,GAAS,CAEtD,GADArK,EAAYg1B,EAAch1B,UACtBA,EAAY+0B,IACd/kL,EAAKwvE,EAAQimF,EAAY4E,EAAQ0qB,EAAet7I,EAAM6C,QAClD7C,EAAMpuC,OAAS,GAAKouC,EAAM6C,MAAQ+tH,EAAOh/J,QAAQ0C,EAAMumL,EAAO90G,EAAQ2kF,EAAW1qH,EAAO,IAC5Fq7I,EAAar7I,EAAM,GAAGpuC,OACtB0pL,EAAgB/0B,EACZxgF,EAAOn0E,QAAUwpL,GAAK,MAExBG,EAAch1B,YAAcvmH,EAAM6C,OAAO04I,EAAch1B,YAK7D,OAHI+0B,IAAkB1qB,EAAOh/J,QACvBypL,GAAezwK,EAAK2wK,EAAe,KAAKhlL,EAAKwvE,EAAQ,IACpDxvE,EAAKwvE,EAAQimF,EAAY4E,EAAQ0qB,IACjCv1G,EAAOn0E,OAASwpL,EAAM1wB,EAAW3kF,EAAQ,EAAGq1G,GAAOr1G,GAGnD,IAAIp+D,WAAM8uB,EAAW,GAAG7kC,OACjB,SAAU+7K,EAAWwN,GACnC,YAAqB1kJ,IAAdk3I,GAAqC,IAAVwN,EAAc,GAAKjqL,EAAK+pL,EAAa1qL,KAAMo9K,EAAWwN,IAErEF,EAEhB,CAGL,SAAetN,EAAWwN,GACxB,IAAIzzB,EAAIgJ,EAAuBngK,MAC3BirL,OAAwB/kJ,GAAbk3I,OAAyBl3I,EAAY4iI,EAAUsU,EAAWqN,GACzE,OAAOQ,EACHtqL,EAAKsqL,EAAU7N,EAAWjmB,EAAGyzB,GAC7BjqL,EAAKgqL,EAAep8K,EAAS4oJ,GAAIimB,EAAWwN,IAOlD,SAAUvqB,EAAQuqB,GAChB,IAAI7B,EAAK/tB,EAASh7J,MACd22J,EAAIpoJ,EAAS8xJ,GACb5kC,EAAMotD,EAAgB8B,EAAe5B,EAAIpyB,EAAGi0B,EAAOD,IAAkBD,GAEzE,GAAIjvD,EAAI52H,KAAM,OAAO42H,EAAIn3H,MAEzB,IAAIw2J,EAAIuoB,EAAmB0F,EAAIxsK,QAE3B2uK,EAAkBnC,EAAGnyB,QACrB1vD,GAAS6hF,EAAGpT,WAAa,IAAM,KACtBoT,EAAGtT,UAAY,IAAM,KACrBsT,EAAGnyB,QAAU,IAAM,KACnBke,EAAgB,IAAM,KAI/BmW,EAAW,IAAInwB,EAAEga,EAAgB,OAASiU,EAAGziH,OAAS,IAAMyiH,EAAI7hF,GAChE2jF,OAAgB3kJ,IAAV0kJ,EAAsBP,EAAaO,IAAU,EACvD,GAAY,IAARC,EAAW,MAAO,GACtB,GAAiB,IAAbl0B,EAAEt1J,OAAc,OAAuC,OAAhC+oL,EAAea,EAAUt0B,GAAc,CAACA,GAAK,GACxE,IAAI92J,EAAI,EACJqvD,EAAI,EACJ6gH,EAAI,GACR,MAAO7gH,EAAIynG,EAAEt1J,OAAQ,CACnB4pL,EAASj1B,UAAY8e,EAAgB,EAAI5lH,EACzC,IACIxqD,EADAq9K,EAAIqI,EAAea,EAAUnW,EAAgBrZ,EAAY9E,EAAGznG,GAAKynG,GAErE,GACQ,OAANorB,IACCr9K,EAAI6gD,EAAI0nH,EAASge,EAASj1B,WAAa8e,EAAgB5lH,EAAI,IAAKynG,EAAEt1J,WAAaxB,EAEhFqvD,EAAIy5H,EAAmBhyB,EAAGznG,EAAGg8H,OACxB,CAEL,GADAllL,EAAK+pK,EAAGtU,EAAY9E,EAAG92J,EAAGqvD,IACtB6gH,EAAE1uK,SAAWwpL,EAAK,OAAO9a,EAC7B,IAAK,IAAI7uK,EAAI,EAAGA,GAAK6gL,EAAE1gL,OAAS,EAAGH,IAEjC,GADA8E,EAAK+pK,EAAGgS,EAAE7gL,IACN6uK,EAAE1uK,SAAWwpL,EAAK,OAAO9a,EAE/B7gH,EAAIrvD,EAAI6E,GAIZ,OADAsB,EAAK+pK,EAAGtU,EAAY9E,EAAG92J,IAChBkwK,OAGTwa,EAAmCzV,I,6BC1JvC,IAAI3W,EAAI,EAAQ,OACZ3F,EAAc,EAAQ,MACtBsH,EAA2B,WAC3BmN,EAAW,EAAQ,OACnB1+J,EAAW,EAAQ,OACnBy5K,EAAa,EAAQ,MACrB7nB,EAAyB,EAAQ,OACjC8nB,EAAuB,EAAQ,OAC/BvmB,EAAU,EAAQ,OAGlBypB,EAAgB3yB,EAAY,GAAGx9I,YAC/BygJ,EAAcjD,EAAY,GAAGjsH,OAC7BgZ,EAAMt2C,KAAKs2C,IAEX4iI,EAA0BF,EAAqB,cAE/CG,GAAoB1mB,IAAYymB,KAA6B,WAC/D,IAAIzmF,EAAao+D,EAAyBnvJ,OAAOzQ,UAAW,cAC5D,OAAOwhG,IAAeA,EAAWs/D,SAF8B,GAOjE7C,EAAE,CAAEx4I,OAAQ,SAAUuxE,OAAO,EAAMuoE,QAAS2oB,IAAqBD,GAA2B,CAC1FntK,WAAY,SAAoB+6I,GAC9B,IAAI1+C,EAAO9oG,EAAS4xJ,EAAuBngK,OAC3CgoL,EAAWjyB,GACX,IAAIzjH,EAAQ26H,EAAS1nH,EAAInkD,UAAUC,OAAS,EAAID,UAAU,QAAK8kC,EAAWmxE,EAAKh2G,SAC3E4Z,EAAS1M,EAASwnJ,GACtB,OAAOo1B,EACHA,EAAc9zE,EAAMp8F,EAAQq3B,GAC5BmpH,EAAYpkD,EAAM/kE,EAAOA,EAAQr3B,EAAO5Z,UAAY4Z,M,6BChC5D,IAAIkjJ,EAAI,EAAQ,OACZ3F,EAAc,EAAQ,MACtB2H,EAAyB,EAAQ,OACjC5G,EAAsB,EAAQ,OAC9BhrJ,EAAW,EAAQ,OAEnBktJ,EAAcjD,EAAY,GAAGjsH,OAC7BszB,EAAM5wD,KAAK4wD,IACXta,EAAMt2C,KAAKs2C,IAGXm0G,GAAU,GAAG14E,QAA8B,MAApB,KAAKA,QAAQ,GAIxCm9E,EAAE,CAAEx4I,OAAQ,SAAUuxE,OAAO,EAAMuoE,OAAQ/F,GAAU,CACnD14E,OAAQ,SAAgBmG,EAAO9lF,GAC7B,IAGI+pL,EAAWC,EAHXh0E,EAAO9oG,EAAS4xJ,EAAuBngK,OACvC69B,EAAOw5E,EAAKh2G,OACZiqL,EAAW/xB,EAAoBpyE,GAKnC,OAHImkG,IAAa/b,MAAU+b,EAAW,GAClCA,EAAW,IAAGA,EAAWzrH,EAAIhiC,EAAOytJ,EAAU,IAClDF,OAAuBllJ,IAAX7kC,EAAuBw8B,EAAO07H,EAAoBl4J,GAC1D+pL,GAAa,GAAKA,IAAc7b,IAAiB,IACrD8b,EAAS9lI,EAAI+lI,EAAWF,EAAWvtJ,GAC5BytJ,GAAYD,EAAS,GAAK5vB,EAAYpkD,EAAMi0E,EAAUD,Q,6BC1BjE,IAAIltB,EAAI,EAAQ,OACZotB,EAAQ,cACRC,EAAyB,EAAQ,OAIrCrtB,EAAE,CAAEx4I,OAAQ,SAAUuxE,OAAO,EAAMuoE,OAAQ+rB,EAAuB,SAAW,CAC3E9vK,KAAM,WACJ,OAAO6vK,EAAMvrL,U,gBCTjB,IAAIyrL,EAAwB,EAAQ,OAIpCA,EAAsB,kB,4BCHtB,IAAIttB,EAAI,EAAQ,OACZ9oB,EAAS,EAAQ,OACjB10I,EAAO,EAAQ,OACf63J,EAAc,EAAQ,MACtBkJ,EAAU,EAAQ,OAClB9E,EAAc,EAAQ,OACtB+R,EAAgB,EAAQ,OACxB5X,EAAQ,EAAQ,OAChB2I,EAAS,EAAQ,OACjB7I,EAAgB,EAAQ,OACxBmE,EAAW,EAAQ,OACnB5C,EAAkB,EAAQ,OAC1B6I,EAAgB,EAAQ,OACxBwmB,EAAY,EAAQ,OACpBhnB,EAA2B,EAAQ,OACnCirB,EAAqB,EAAQ,OAC7B/b,EAAa,EAAQ,OACrBxF,EAA4B,EAAQ,MACpCwhB,EAA8B,EAAQ,MACtC/b,EAA8B,EAAQ,OACtChQ,EAAiC,EAAQ,OACzCC,EAAuB,EAAQ,MAC/BwQ,EAAyB,EAAQ,OACjCR,EAA6B,EAAQ,OACrCxR,EAAgB,EAAQ,OACxByM,EAAS,EAAQ,OACjBC,EAAY,EAAQ,MACpBb,EAAa,EAAQ,MACrBl2I,EAAM,EAAQ,OACdwiI,EAAkB,EAAQ,MAC1BwM,EAA+B,EAAQ,MACvCyoB,EAAwB,EAAQ,OAChCG,EAA0B,EAAQ,OAClCptB,EAAiB,EAAQ,OACzB1B,EAAsB,EAAQ,OAC9BxF,EAAW,iBAEXu0B,EAAS9gB,EAAU,UACnBlE,EAAS,SACT6J,EAAY,YAEZ3T,EAAmBD,EAAoBn0I,IACvC+0I,EAAmBZ,EAAoBG,UAAU4J,GAEjDwL,EAAkB9yK,OAAOmxK,GACzBxE,EAAU72B,EAAO3vI,OACjB4zK,EAAkBpN,GAAWA,EAAQwE,GACrC5qK,EAAYuvI,EAAOvvI,UACnBgmL,EAAUz2C,EAAOy2C,QACjB1J,EAAiCxiB,EAA+B36J,EAChE8mL,EAAuBlsB,EAAqB56J,EAC5C+mL,EAA4BL,EAA4B1mL,EACxDgnL,EAA6Bpc,EAA2B5qK,EACxDe,EAAOwyJ,EAAY,GAAGxyJ,MAEtBkmL,GAAaphB,EAAO,WACpBqhB,GAAyBrhB,EAAO,cAChC0P,GAAwB1P,EAAO,OAG/BshB,IAAcN,IAAYA,EAAQpb,KAAeob,EAAQpb,GAAW2b,UAGpEC,GAAsB1vB,GAAe7F,GAAM,WAC7C,OAES,GAFF20B,EAAmBK,EAAqB,GAAI,IAAK,CACtDrqL,IAAK,WAAc,OAAOqqL,EAAqB/rL,KAAM,IAAK,CAAEsE,MAAO,IAAKsC,MACtEA,KACD,SAAUuwJ,EAAGhzJ,EAAG4tK,GACnB,IAAIwa,EAA4BnK,EAA+B/P,EAAiBluK,GAC5EooL,UAAkCla,EAAgBluK,GACtD4nL,EAAqB50B,EAAGhzJ,EAAG4tK,GACvBwa,GAA6Bp1B,IAAMkb,GACrC0Z,EAAqB1Z,EAAiBluK,EAAGooL,IAEzCR,EAEA5V,GAAO,SAAUna,EAAK35F,GACxB,IAAIysG,EAASod,GAAWlwB,GAAO0vB,EAAmBpS,GAOlD,OANAvc,EAAiB+R,EAAQ,CACvB5hJ,KAAM25I,EACN7K,IAAKA,EACL35F,YAAaA,IAEVu6F,IAAakS,EAAOzsG,YAAcA,GAChCysG,GAGL6C,GAAkB,SAAwBxa,EAAGhzJ,EAAG4tK,GAC9C5a,IAAMkb,GAAiBV,GAAgBwa,GAAwBhoL,EAAG4tK,GACtE/W,EAAS7D,GACT,IAAIv7I,EAAMqlJ,EAAc98J,GAExB,OADA62J,EAAS+W,GACLrS,EAAOwsB,GAAYtwK,IAChBm2J,EAAW1jI,YAIVqxH,EAAOvI,EAAG00B,IAAW10B,EAAE00B,GAAQjwK,KAAMu7I,EAAE00B,GAAQjwK,IAAO,GAC1Dm2J,EAAa2Z,EAAmB3Z,EAAY,CAAE1jI,WAAYoyH,EAAyB,GAAG,OAJjFf,EAAOvI,EAAG00B,IAASE,EAAqB50B,EAAG00B,EAAQprB,EAAyB,EAAG,KACpFtJ,EAAE00B,GAAQjwK,IAAO,GAIV0wK,GAAoBn1B,EAAGv7I,EAAKm2J,IAC9Bga,EAAqB50B,EAAGv7I,EAAKm2J,IAGpCya,GAAoB,SAA0Br1B,EAAGqa,GACnDxW,EAAS7D,GACT,IAAI/yF,EAAag0F,EAAgBoZ,GAC7B3uK,EAAO8sK,EAAWvrG,GAAY59D,OAAO87K,GAAuBl+G,IAIhE,OAHAkzF,EAASz0J,GAAM,SAAU+Y,GAClBghJ,IAAej8J,EAAK+xK,GAAuBtuG,EAAYxoD,IAAM+1J,GAAgBxa,EAAGv7I,EAAKwoD,EAAWxoD,OAEhGu7I,GAGLs1B,GAAU,SAAgBt1B,EAAGqa,GAC/B,YAAsBtrI,IAAfsrI,EAA2Bka,EAAmBv0B,GAAKq1B,GAAkBd,EAAmBv0B,GAAIqa,IAGjGkB,GAAwB,SAA8B1J,GACxD,IAAI7kK,EAAI88J,EAAc+H,GAClB36H,EAAa1tC,EAAKsrL,EAA4BjsL,KAAMmE,GACxD,QAAInE,OAASqyK,GAAmB3S,EAAOwsB,GAAY/nL,KAAOu7J,EAAOysB,GAAwBhoL,QAClFkqC,IAAeqxH,EAAO1/J,KAAMmE,KAAOu7J,EAAOwsB,GAAY/nL,IAAMu7J,EAAO1/J,KAAM6rL,IAAW7rL,KAAK6rL,GAAQ1nL,KACpGkqC,IAGFujI,GAA4B,SAAkCza,EAAGhzJ,GACnE,IAAI2yJ,EAAKsB,EAAgBjB,GACrBv7I,EAAMqlJ,EAAc98J,GACxB,GAAI2yJ,IAAOub,IAAmB3S,EAAOwsB,GAAYtwK,IAAS8jJ,EAAOysB,GAAwBvwK,GAAzF,CACA,IAAI8lF,EAAa0gF,EAA+BtrB,EAAIl7I,GAIpD,OAHI8lF,IAAcg+D,EAAOwsB,GAAYtwK,IAAU8jJ,EAAO5I,EAAI+0B,IAAW/0B,EAAG+0B,GAAQjwK,KAC9E8lF,EAAWrzD,YAAa,GAEnBqzD,IAGLswE,GAAuB,SAA6B7a,GACtD,IAAIsb,EAAQuZ,EAA0B5zB,EAAgBjB,IAClDvyJ,EAAS,GAIb,OAHA0yJ,EAASmb,GAAO,SAAU72J,GACnB8jJ,EAAOwsB,GAAYtwK,IAAS8jJ,EAAOwK,EAAYtuJ,IAAM5V,EAAKpB,EAAQgX,MAElEhX,GAGL09K,GAAyB,SAAUnrB,GACrC,IAAIu1B,EAAsBv1B,IAAMkb,EAC5BI,EAAQuZ,EAA0BU,EAAsBP,GAAyB/zB,EAAgBjB,IACjGvyJ,EAAS,GAMb,OALA0yJ,EAASmb,GAAO,SAAU72J,IACpB8jJ,EAAOwsB,GAAYtwK,IAAU8wK,IAAuBhtB,EAAO2S,EAAiBz2J,IAC9E5V,EAAKpB,EAAQsnL,GAAWtwK,OAGrBhX,GAKJ+pK,IACHzC,EAAU,WACR,GAAIrV,EAAcyiB,EAAiBt5K,MAAO,MAAM8F,EAAU,+BAC1D,IAAIu8D,EAAejhE,UAAUC,aAA2B6kC,IAAjB9kC,UAAU,GAA+BqmL,EAAUrmL,UAAU,SAAhC8kC,EAChE81H,EAAMhoI,EAAIquC,GACVg/F,EAAS,SAAU/8J,GACjBtE,OAASqyK,GAAiB1xK,EAAK0gK,EAAQ8qB,GAAwB7nL,GAC/Do7J,EAAO1/J,KAAM6rL,IAAWnsB,EAAO1/J,KAAK6rL,GAAS7vB,KAAMh8J,KAAK6rL,GAAQ7vB,IAAO,GAC3EswB,GAAoBtsL,KAAMg8J,EAAKyE,EAAyB,EAAGn8J,KAG7D,OADIs4J,GAAewvB,IAAYE,GAAoBja,EAAiBrW,EAAK,CAAE1tH,cAAc,EAAM3lB,IAAK04I,IAC7F8U,GAAKna,EAAK35F,IAGnBi3G,EAAkBpN,EAAQwE,GAE1BrS,EAAcib,EAAiB,YAAY,WACzC,OAAO5b,EAAiB19J,MAAMg8J,OAGhCqC,EAAc6N,EAAS,iBAAiB,SAAU7pG,GAChD,OAAO8zG,GAAKniJ,EAAIquC,GAAcA,MAGhCwtG,EAA2B5qK,EAAIytK,GAC/B7S,EAAqB56J,EAAI0sK,GACzBtB,EAAuBprK,EAAIunL,GAC3B5sB,EAA+B36J,EAAI2sK,GACnCzH,EAA0BllK,EAAI0mL,EAA4B1mL,EAAI+sK,GAC9DpC,EAA4B3qK,EAAIq9K,GAEhCtf,EAA6B/9J,EAAI,SAAUoO,GACzC,OAAO8iK,GAAK3f,EAAgBnjJ,GAAOA,IAGjCupJ,IAEFmvB,EAAqBzS,EAAiB,cAAe,CACnDhrI,cAAc,EACd5sC,IAAK,WACH,OAAOg8J,EAAiB19J,MAAMqiE,eAG7Bq/F,GACHrD,EAAcgU,EAAiB,uBAAwBK,GAAuB,CAAEjR,QAAQ,MAK9FtD,EAAE,CAAE9oB,QAAQ,EAAMp1I,aAAa,EAAMk2K,MAAM,EAAM1W,QAASkP,EAAelI,MAAOkI,GAAiB,CAC/FjpK,OAAQwmK,IAGV5U,EAASqY,EAAW6K,KAAwB,SAAUnnK,GACpDo4K,EAAsBp4K,MAGxB8qJ,EAAE,CAAEx4I,OAAQkhJ,EAAQN,MAAM,EAAM9G,QAASkP,GAAiB,CACxDge,UAAW,WAAcP,IAAa,GACtCQ,UAAW,WAAcR,IAAa,KAGxCjuB,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,EAAM9G,QAASkP,EAAelI,MAAO7J,GAAe,CAG9Ez8J,OAAQssL,GAGRr+I,eAAgBujI,GAGhB3hB,iBAAkBw8B,GAGlB1sB,yBAA0B8R,KAG5BzT,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,EAAM9G,QAASkP,GAAiB,CAG1D7Y,oBAAqBkc,KAKvB4Z,IAIAptB,EAAe0N,EAASrF,GAExBqD,EAAW2hB,IAAU,G,6BCxPrB,IAAI1tB,EAAI,EAAQ,OACZvB,EAAc,EAAQ,OACtBvnB,EAAS,EAAQ,OACjBmjB,EAAc,EAAQ,MACtBkH,EAAS,EAAQ,OACjBxJ,EAAa,EAAQ,OACrBW,EAAgB,EAAQ,OACxBtoJ,EAAW,EAAQ,OACnB6/B,EAAiB,UACjB63H,EAA4B,EAAQ,OAEpC4mB,EAAex3C,EAAO3vI,OACtB4zK,EAAkBuT,GAAgBA,EAAa3sL,UAEnD,GAAI08J,GAAe1G,EAAW22B,OAAoB,gBAAiBvT,SAElCpzI,IAA/B2mJ,IAAexqH,aACd,CACD,IAAIyqH,EAA8B,GAE9BC,EAAgB,WAClB,IAAI1qH,EAAcjhE,UAAUC,OAAS,QAAsB6kC,IAAjB9kC,UAAU,QAAmB8kC,EAAY33B,EAASnN,UAAU,IAClGwD,EAASiyJ,EAAcyiB,EAAiBt5K,MACxC,IAAI6sL,EAAaxqH,QAEDn8B,IAAhBm8B,EAA4BwqH,IAAiBA,EAAaxqH,GAE9D,MADoB,KAAhBA,IAAoByqH,EAA4BloL,IAAU,GACvDA,GAGTqhK,EAA0B8mB,EAAeF,GACzCE,EAAc7sL,UAAYo5K,EAC1BA,EAAgBr5K,YAAc8sL,EAE9B,IAAIpe,EAAgD,gBAAhCh+J,OAAOk8K,EAAa,SACpCG,EAAiBx0B,EAAY8gB,EAAgB/qK,UAC7C0+K,EAAgBz0B,EAAY8gB,EAAgBtG,SAC5C3zC,EAAS,wBACTnuH,EAAUsnJ,EAAY,GAAGtnJ,SACzBuqJ,EAAcjD,EAAY,GAAGjsH,OAEjC6B,EAAekrI,EAAiB,cAAe,CAC7ChrI,cAAc,EACd5sC,IAAK,WACH,IAAIotK,EAASme,EAAcjtL,MACvBqgK,EAAS2sB,EAAele,GAC5B,GAAIpP,EAAOotB,EAA6Bhe,GAAS,MAAO,GACxD,IAAI/7J,EAAO47J,EAAgBlT,EAAY4E,EAAQ,GAAI,GAAKnvJ,EAAQmvJ,EAAQhhC,EAAQ,MAChF,MAAgB,KAATtsH,OAAcmzB,EAAYnzB,KAIrCorJ,EAAE,CAAE9oB,QAAQ,EAAMp1I,aAAa,EAAMw/J,QAAQ,GAAQ,CACnD/5J,OAAQqnL,M,gBCxDZ,IAAI5uB,EAAI,EAAQ,OACZuH,EAAa,EAAQ,OACrBhG,EAAS,EAAQ,OACjBnxJ,EAAW,EAAQ,OACnBu8J,EAAS,EAAQ,OACjBoiB,EAAyB,EAAQ,OAEjCC,EAAyBriB,EAAO,6BAChCsiB,EAAyBtiB,EAAO,6BAIpC3M,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,EAAM9G,QAASytB,GAA0B,CACnE,IAAO,SAAUtxK,GACf,IAAIykJ,EAAS9xJ,EAASqN,GACtB,GAAI8jJ,EAAOytB,EAAwB9sB,GAAS,OAAO8sB,EAAuB9sB,GAC1E,IAAIyO,EAASpJ,EAAW,SAAXA,CAAqBrF,GAGlC,OAFA8sB,EAAuB9sB,GAAUyO,EACjCse,EAAuBte,GAAUzO,EAC1ByO,M,gBCnBX,IAAI2c,EAAwB,EAAQ,OAIpCA,EAAsB,a,gBCHtB,EAAQ,MACR,EAAQ,OACR,EAAQ,OACR,EAAQ,OACR,EAAQ,Q,gBCLR,IAAIttB,EAAI,EAAQ,OACZuB,EAAS,EAAQ,OACjBua,EAAW,EAAQ,OACnB9jB,EAAc,EAAQ,OACtB2U,EAAS,EAAQ,OACjBoiB,EAAyB,EAAQ,OAEjCE,EAAyBtiB,EAAO,6BAIpC3M,EAAE,CAAEx4I,OAAQ,SAAU4gJ,MAAM,EAAM9G,QAASytB,GAA0B,CACnEte,OAAQ,SAAgBye,GACtB,IAAKpT,EAASoT,GAAM,MAAMvnL,UAAUqwJ,EAAYk3B,GAAO,oBACvD,GAAI3tB,EAAO0tB,EAAwBC,GAAM,OAAOD,EAAuBC,O,gBCd3E,IAAI3nB,EAAa,EAAQ,OACrB+lB,EAAwB,EAAQ,OAChCjtB,EAAiB,EAAQ,OAI7BitB,EAAsB,eAItBjtB,EAAekH,EAAW,UAAW,W,gBCVrC,IAAIrwB,EAAS,EAAQ,OACjBi4C,EAAe,EAAQ,OACvBloB,EAAwB,EAAQ,OAChCtiK,EAAU,EAAQ,OAClBw+J,EAA8B,EAAQ,OAEtCisB,EAAkB,SAAUC,GAE9B,GAAIA,GAAuBA,EAAoB1qL,UAAYA,EAAS,IAClEw+J,EAA4BksB,EAAqB,UAAW1qL,GAC5D,MAAOwD,GACPknL,EAAoB1qL,QAAUA,IAIlC,IAAK,IAAI2qL,KAAmBH,EACtBA,EAAaG,IACfF,EAAgBl4C,EAAOo4C,IAAoBp4C,EAAOo4C,GAAiBvtL,WAIvEqtL,EAAgBnoB,I,gBCrBhB,IAAI/vB,EAAS,EAAQ,OACjBi4C,EAAe,EAAQ,OACvBloB,EAAwB,EAAQ,OAChCsoB,EAAuB,EAAQ,OAC/BpsB,EAA8B,EAAQ,OACtC9K,EAAkB,EAAQ,MAE1B2E,EAAW3E,EAAgB,YAC3BoF,EAAgBpF,EAAgB,eAChCm3B,EAAcD,EAAqBt7I,OAEnCm7I,EAAkB,SAAUC,EAAqBC,GACnD,GAAID,EAAqB,CAEvB,GAAIA,EAAoBryB,KAAcwyB,EAAa,IACjDrsB,EAA4BksB,EAAqBryB,EAAUwyB,GAC3D,MAAOrnL,GACPknL,EAAoBryB,GAAYwyB,EAKlC,GAHKH,EAAoB5xB,IACvB0F,EAA4BksB,EAAqB5xB,EAAe6xB,GAE9DH,EAAaG,GAAkB,IAAK,IAAI5zB,KAAe6zB,EAEzD,GAAIF,EAAoB3zB,KAAiB6zB,EAAqB7zB,GAAc,IAC1EyH,EAA4BksB,EAAqB3zB,EAAa6zB,EAAqB7zB,IACnF,MAAOvzJ,GACPknL,EAAoB3zB,GAAe6zB,EAAqB7zB,MAMhE,IAAK,IAAI4zB,KAAmBH,EAC1BC,EAAgBl4C,EAAOo4C,IAAoBp4C,EAAOo4C,GAAiBvtL,UAAWutL,GAGhFF,EAAgBnoB,EAAuB,iB,gBCrCvC,IAAIjH,EAAI,EAAQ,OACZ9oB,EAAS,EAAQ,OACjBl1E,EAAc,qBAIlBg+F,EAAE,CAAE9oB,QAAQ,EAAMhyF,MAAM,EAAMo8G,OAAQpqB,EAAOl1E,cAAgBA,GAAe,CAC1EA,YAAaA,K,gBCPf,IAAIg+F,EAAI,EAAQ,OACZ9oB,EAAS,EAAQ,OACjB3sG,EAAa,oBAIjBy1H,EAAE,CAAE9oB,QAAQ,EAAMhyF,MAAM,EAAMo8G,OAAQpqB,EAAO3sG,aAAeA,GAAc,CACxEA,WAAYA,K,gBCNd,EAAQ,OACR,EAAQ,Q,6BCAR,EAAQ,OACR,IAAIy1H,EAAI,EAAQ,OACZ9oB,EAAS,EAAQ,OACjB10I,EAAO,EAAQ,OACf63J,EAAc,EAAQ,MACtBoE,EAAc,EAAQ,OACtBgxB,EAAiB,EAAQ,KACzBvvB,EAAgB,EAAQ,OACxB7B,EAAiB,EAAQ,OACzBgC,EAAiB,EAAQ,OACzBoD,EAA4B,EAAQ,OACpC9E,EAAsB,EAAQ,OAC9BL,EAAa,EAAQ,OACrBvG,EAAa,EAAQ,OACrBwJ,EAAS,EAAQ,OACjBr8G,EAAO,EAAQ,OACfoiH,EAAU,EAAQ,OAClBzK,EAAW,EAAQ,OACnBhiF,EAAW,EAAQ,OACnByuG,EAAY,EAAQ,OACpBtnL,EAAS,EAAQ,OACjBsgK,EAA2B,EAAQ,OACnC7I,EAAc,EAAQ,OACtBC,EAAoB,EAAQ,OAC5Boe,EAA0B,EAAQ,OAClCzf,EAAkB,EAAQ,MAC1Bq3B,EAAY,EAAQ,OAEpB1yB,EAAW3E,EAAgB,YAC3Bs3B,EAAoB,kBACpBC,EAA6BD,EAAoB,WACjD/wB,EAAmBD,EAAoBn0I,IACvCqlK,EAAyBlxB,EAAoBG,UAAU6wB,GACvD7vB,EAA2BnB,EAAoBG,UAAU8wB,GAEzDjuB,EAA2BvgK,OAAOugK,yBAGlCmuB,EAAiB,SAAU56K,GAC7B,IAAKupJ,EAAa,OAAOvnB,EAAOhiI,GAChC,IAAIquF,EAAao+D,EAAyBzqB,EAAQhiI,GAClD,OAAOquF,GAAcA,EAAWp9F,OAG9B4pL,EAAcD,EAAe,SAC7BE,EAAgBF,EAAe,WAC/BhxI,EAAUgxI,EAAe,WACzBG,EAAmBD,GAAiBA,EAAcjuL,UAClDmuL,EAAmBpxI,GAAWA,EAAQ/8C,UACtCqc,EAAS84H,EAAO94H,OAChBzW,EAAYuvI,EAAOvvI,UACnB0V,EAAqB65H,EAAO75H,mBAC5BxK,EAAqBqkI,EAAOrkI,mBAC5B8kC,EAAS0iH,EAAY,GAAG1iH,QACxB9vB,EAAOwyI,EAAY,GAAGxyI,MACtBhgB,EAAOwyJ,EAAY,GAAGxyJ,MACtBkL,EAAUsnJ,EAAY,GAAGtnJ,SACzB8sC,EAAQw6G,EAAY,GAAGx6G,OACvBwyD,EAASgoD,EAAY,GAAGhoD,QACxBp5F,EAAQohJ,EAAY,GAAGphJ,OACvBqkJ,EAAcjD,EAAY,GAAGjsH,OAE7B+hJ,GAAO,MACPC,GAAY7uL,MAAM,GAElB8uL,GAAkB,SAAUr6G,GAC9B,OAAOo6G,GAAUp6G,EAAQ,KAAOo6G,GAAUp6G,EAAQ,GAAK53D,EAAO,qBAAuB43D,EAAQ,KAAM,QAGjGs6G,GAAgB,SAAUC,GAC5B,IACE,OAAOlzK,EAAmBkzK,GAC1B,MAAOpoL,GACP,OAAOooL,IAIPC,GAAc,SAAU73B,GAC1B,IAAIlyJ,EAASsM,EAAQ4lJ,EAAIw3B,GAAM,KAC3Bn6G,EAAQ,EACZ,IACE,OAAO34D,EAAmB5W,GAC1B,MAAO0B,GACP,MAAO6tE,EACLvvE,EAASsM,EAAQtM,EAAQ4pL,GAAgBr6G,KAAUs6G,IAErD,OAAO7pL,IAIP0jB,GAAO,eAEPsmK,GAAe,CACjB,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,KAGLxO,GAAW,SAAU3wI,GACvB,OAAOm/I,GAAan/I,IAGlB2pF,GAAY,SAAU09B,GACxB,OAAO5lJ,EAAQF,EAAmB8lJ,GAAKxuI,GAAM83J,KAG3CyO,GAA0BjtB,GAA0B,SAAkBrmJ,EAAQ0xF,GAChF8vD,EAAiB/8J,KAAM,CACrBktB,KAAM6gK,EACNpoL,SAAUiyJ,EAAYo2B,EAAuBzyK,GAAQ69D,SACrD6zB,KAAMA,MAEP,YAAY,WACb,IAAI5gE,EAAQ4xH,EAAyBj+J,MACjCitG,EAAO5gE,EAAM4gE,KACbzoG,EAAO6nC,EAAM1mC,SAASlB,OACtBuX,EAAQxX,EAAKF,MAGf,OAFGE,EAAKK,OACRL,EAAKF,MAAiB,SAAT2oG,EAAkBjxF,EAAMJ,IAAe,WAATqxF,EAAoBjxF,EAAM1X,MAAQ,CAAC0X,EAAMJ,IAAKI,EAAM1X,QACxFE,KACR,GAECsqL,GAAuB,SAAUvxD,GACnCv9H,KAAKo5E,QAAU,GACfp5E,KAAK2B,IAAM,UAEEukC,IAATq3F,IACEvkD,EAASukD,GAAOv9H,KAAK+uL,YAAYxxD,GAChCv9H,KAAKgvL,WAA0B,iBAARzxD,EAAuC,MAApBznF,EAAOynF,EAAM,GAAak+B,EAAYl+B,EAAM,GAAKA,EAAOkqD,EAAUlqD,MAIrHuxD,GAAqB5uL,UAAY,CAC/BgtB,KAAM4gK,EACNmB,QAAS,SAAUttL,GACjB3B,KAAK2B,IAAMA,EACX3B,KAAKq5G,UAEP01E,YAAa,SAAUl2F,GACrB,IACIlzF,EAAUlB,EAAMD,EAAM0qL,EAAeC,EAAW5xB,EAAOuZ,EADvD3e,EAAiBN,EAAkBh/D,GAGvC,GAAIs/D,EAAgB,CAClBxyJ,EAAWiyJ,EAAY/+D,EAAQs/D,GAC/B1zJ,EAAOkB,EAASlB,KAChB,QAASD,EAAO7D,EAAK8D,EAAMkB,IAAWd,KAAM,CAG1C,GAFAqqL,EAAgBt3B,EAAYoD,EAASx2J,EAAKF,QAC1C6qL,EAAYD,EAAczqL,MAEvB84J,EAAQ58J,EAAKwuL,EAAWD,IAAgBrqL,OACxCiyK,EAASn2K,EAAKwuL,EAAWD,IAAgBrqL,OACzClE,EAAKwuL,EAAWD,GAAerqL,KAChC,MAAMiB,EAAU,mCAClBE,EAAKhG,KAAKo5E,QAAS,CAAEx9D,IAAK6rK,EAAUlqB,EAAMj5J,OAAQA,MAAOmjL,EAAU3Q,EAAOxyK,eAEvE,IAAK,IAAIsX,KAAOi9E,EAAY6mE,EAAO7mE,EAAQj9E,IAChD5V,EAAKhG,KAAKo5E,QAAS,CAAEx9D,IAAKA,EAAKtX,MAAOmjL,EAAU5uF,EAAOj9E,OAG3DozK,WAAY,SAAU1zK,GACpB,GAAIA,EAAO,CACT,IAEIglJ,EAAWtkJ,EAFXozK,EAAah4K,EAAMkE,EAAO,KAC1Bg3B,EAAQ,EAEZ,MAAOA,EAAQ88I,EAAW/tL,OACxBi/J,EAAY8uB,EAAW98I,KACnBguH,EAAUj/J,SACZ2a,EAAQ5E,EAAMkpJ,EAAW,KACzBt6J,EAAKhG,KAAKo5E,QAAS,CACjBx9D,IAAK+yK,GAAY3wI,EAAMhiC,IACvB1X,MAAOqqL,GAAY3oK,EAAKhK,EAAO,WAMzCo9G,UAAW,WACT,IAGIp9G,EAHAo9D,EAAUp5E,KAAKo5E,QACfx0E,EAAS,GACT0tC,EAAQ,EAEZ,MAAOA,EAAQ8mC,EAAQ/3E,OACrB2a,EAAQo9D,EAAQ9mC,KAChBtsC,EAAKpB,EAAQw0H,GAAUp9G,EAAMJ,KAAO,IAAMw9G,GAAUp9G,EAAM1X,QAC1D,OAAO0hB,EAAKphB,EAAQ,MAExBy0G,OAAQ,WACNr5G,KAAKo5E,QAAQ/3E,OAAS,EACtBrB,KAAKgvL,WAAWhvL,KAAK2B,IAAI2Z,QAE3B+zK,UAAW,WACLrvL,KAAK2B,KAAK3B,KAAK2B,IAAI03G,WAM3B,IAAIi2E,GAA6B,WAC/B7yB,EAAWz8J,KAAMuvL,IACjB,IAAIhyD,EAAOn8H,UAAUC,OAAS,EAAID,UAAU,QAAK8kC,EACjD62H,EAAiB/8J,KAAM,IAAI8uL,GAAqBvxD,KAG9CgyD,GAA2BD,GAA2BpvL,UAwI1D,GAtIAs8J,EAAe+yB,GAA0B,CAGvCpyI,OAAQ,SAAgB9pC,EAAM/O,GAC5B2xK,EAAwB70K,UAAUC,OAAQ,GAC1C,IAAIgrC,EAAQ2hJ,EAAuBhuL,MACnCgG,EAAKqmC,EAAM+sC,QAAS,CAAEx9D,IAAK6rK,EAAUp0K,GAAO/O,MAAOmjL,EAAUnjL,KAC7D+nC,EAAMgjJ,aAIR,OAAU,SAAUh8K,GAClB4iK,EAAwB70K,UAAUC,OAAQ,GAC1C,IAAIgrC,EAAQ2hJ,EAAuBhuL,MAC/Bo5E,EAAU/sC,EAAM+sC,QAChBx9D,EAAM6rK,EAAUp0K,GAChBi/B,EAAQ,EACZ,MAAOA,EAAQ8mC,EAAQ/3E,OACjB+3E,EAAQ9mC,GAAO12B,MAAQA,EAAK40F,EAAOp3B,EAAS9mC,EAAO,GAClDA,IAEPjG,EAAMgjJ,aAIR3tL,IAAK,SAAa2R,GAChB4iK,EAAwB70K,UAAUC,OAAQ,GAI1C,IAHA,IAAI+3E,EAAU40G,EAAuBhuL,MAAMo5E,QACvCx9D,EAAM6rK,EAAUp0K,GAChBi/B,EAAQ,EACLA,EAAQ8mC,EAAQ/3E,OAAQixC,IAC7B,GAAI8mC,EAAQ9mC,GAAO12B,MAAQA,EAAK,OAAOw9D,EAAQ9mC,GAAOhuC,MAExD,OAAO,MAITkrL,OAAQ,SAAgBn8K,GACtB4iK,EAAwB70K,UAAUC,OAAQ,GAK1C,IAJA,IAAI+3E,EAAU40G,EAAuBhuL,MAAMo5E,QACvCx9D,EAAM6rK,EAAUp0K,GAChBzO,EAAS,GACT0tC,EAAQ,EACLA,EAAQ8mC,EAAQ/3E,OAAQixC,IACzB8mC,EAAQ9mC,GAAO12B,MAAQA,GAAK5V,EAAKpB,EAAQw0E,EAAQ9mC,GAAOhuC,OAE9D,OAAOM,GAITikB,IAAK,SAAaxV,GAChB4iK,EAAwB70K,UAAUC,OAAQ,GAC1C,IAAI+3E,EAAU40G,EAAuBhuL,MAAMo5E,QACvCx9D,EAAM6rK,EAAUp0K,GAChBi/B,EAAQ,EACZ,MAAOA,EAAQ8mC,EAAQ/3E,OACrB,GAAI+3E,EAAQ9mC,KAAS12B,MAAQA,EAAK,OAAO,EAE3C,OAAO,GAIT+M,IAAK,SAAatV,EAAM/O,GACtB2xK,EAAwB70K,UAAUC,OAAQ,GAQ1C,IAPA,IAMI2a,EANAqwB,EAAQ2hJ,EAAuBhuL,MAC/Bo5E,EAAU/sC,EAAM+sC,QAChBq2G,GAAQ,EACR7zK,EAAM6rK,EAAUp0K,GAChB6rB,EAAMuoJ,EAAUnjL,GAChBguC,EAAQ,EAELA,EAAQ8mC,EAAQ/3E,OAAQixC,IAC7Bt2B,EAAQo9D,EAAQ9mC,GACZt2B,EAAMJ,MAAQA,IACZ6zK,EAAOj/E,EAAOp3B,EAAS9mC,IAAS,IAElCm9I,GAAQ,EACRzzK,EAAM1X,MAAQ46B,IAIfuwJ,GAAOzpL,EAAKozE,EAAS,CAAEx9D,IAAKA,EAAKtX,MAAO46B,IAC7CmN,EAAMgjJ,aAIRjpK,KAAM,WACJ,IAAIimB,EAAQ2hJ,EAAuBhuL,MACnC6tL,EAAUxhJ,EAAM+sC,SAAS,SAAUxyE,EAAGhH,GACpC,OAAOgH,EAAEgV,IAAMhc,EAAEgc,IAAM,GAAK,KAE9BywB,EAAMgjJ,aAGRvsL,QAAS,SAAiBuvB,GACxB,IAGIrW,EAHAo9D,EAAU40G,EAAuBhuL,MAAMo5E,QACvCggF,EAAgB/1G,EAAKhxB,EAAUjxB,UAAUC,OAAS,EAAID,UAAU,QAAK8kC,GACrEoM,EAAQ,EAEZ,MAAOA,EAAQ8mC,EAAQ/3E,OACrB2a,EAAQo9D,EAAQ9mC,KAChB8mH,EAAcp9I,EAAM1X,MAAO0X,EAAMJ,IAAK5b,OAI1C6C,KAAM,WACJ,OAAO,IAAIgsL,GAAwB7uL,KAAM,SAG3CoyC,OAAQ,WACN,OAAO,IAAIy8I,GAAwB7uL,KAAM,WAG3Co5E,QAAS,WACP,OAAO,IAAIy1G,GAAwB7uL,KAAM,aAE1C,CAAEquC,YAAY,IAGjBgwH,EAAckxB,GAA0Bp0B,EAAUo0B,GAAyBn2G,QAAS,CAAE/lE,KAAM,YAI5FgrJ,EAAckxB,GAA0B,YAAY,WAClD,OAAOvB,EAAuBhuL,MAAMo5H,cACnC,CAAE/qF,YAAY,IAEjBmwH,EAAe8wB,GAA4BxB,GAE3C3vB,EAAE,CAAE9oB,QAAQ,EAAMp1I,aAAa,EAAMw/J,QAASmuB,GAAkB,CAC9D5e,gBAAiBsgB,MAId1B,GAAkB13B,EAAWj5G,GAAU,CAC1C,IAAIyyI,GAAal3B,EAAY61B,EAAiBxlK,KAC1C8mK,GAAan3B,EAAY61B,EAAiB1lK,KAE1CinK,GAAqB,SAAUryD,GACjC,GAAIvkD,EAASukD,GAAO,CAClB,IACI36H,EADAoC,EAAOu4H,EAAKv4H,KAEhB,GAAIygK,EAAQzgK,KAAU8oL,EAKpB,OAJAlrL,EAAU26H,EAAK36H,QAAU,IAAIq6C,EAAQsgF,EAAK36H,SAAW,IAAIq6C,EACpDyyI,GAAW9sL,EAAS,iBACvB+sL,GAAW/sL,EAAS,eAAgB,mDAE/BzC,EAAOo9H,EAAM,CAClBv4H,KAAMy7J,EAAyB,EAAGgnB,EAAUziL,IAC5CpC,QAAS69J,EAAyB,EAAG79J,KAGzC,OAAO26H,GAWX,GARI24B,EAAWg4B,IACb/vB,EAAE,CAAE9oB,QAAQ,EAAMhnG,YAAY,EAAMm4H,gBAAgB,EAAM/G,QAAQ,GAAQ,CACxEhjH,MAAO,SAAe1rC,GACpB,OAAOm9K,EAAYn9K,EAAO3P,UAAUC,OAAS,EAAIuuL,GAAmBxuL,UAAU,IAAM,OAKtF80J,EAAWi4B,GAAgB,CAC7B,IAAI0B,GAAqB,SAAiB9+K,GAExC,OADA0rJ,EAAWz8J,KAAMouL,GACV,IAAID,EAAcp9K,EAAO3P,UAAUC,OAAS,EAAIuuL,GAAmBxuL,UAAU,IAAM,KAG5FgtL,EAAiBnuL,YAAc4vL,GAC/BA,GAAmB3vL,UAAYkuL,EAE/BjwB,EAAE,CAAE9oB,QAAQ,EAAMp1I,aAAa,EAAMumK,gBAAgB,EAAM/G,QAAQ,GAAQ,CACzEhiC,QAASoyD,MAKftlC,EAAOD,QAAU,CACf0kB,gBAAiBsgB,GACjBQ,SAAU9B,I,gBCrYZ,EAAQ,Q,6BCCR,EAAQ,OACR,IA+DI+B,EA/DA5xB,EAAI,EAAQ,OACZvB,EAAc,EAAQ,OACtBgxB,EAAiB,EAAQ,KACzBv4C,EAAS,EAAQ,OACjBhyF,EAAO,EAAQ,OACfm1G,EAAc,EAAQ,MACtB6F,EAAgB,EAAQ,OACxBkpB,EAAwB,EAAQ,OAChC9qB,EAAa,EAAQ,OACrBiD,EAAS,EAAQ,OACjB3+J,EAAS,EAAQ,OACjBivL,EAAY,EAAQ,OACpB71B,EAAa,EAAQ,OACrB4c,EAAS,gBACTkZ,EAAU,EAAQ,OAClBxI,EAAY,EAAQ,OACpBjpB,EAAiB,EAAQ,OACzByX,EAA0B,EAAQ,OAClCia,EAAwB,EAAQ,OAChCpzB,EAAsB,EAAQ,OAE9BC,EAAmBD,EAAoBn0I,IACvCwnK,EAAsBrzB,EAAoBG,UAAU,OACpD+R,EAAkBkhB,EAAsBlhB,gBACxCohB,EAA+BF,EAAsBJ,SAErDO,EAAYh7C,EAAOjrB,IACnBtkH,EAAYuvI,EAAOvvI,UACnBm/C,EAAWowF,EAAOpwF,SAClBK,EAAQr2C,KAAKq2C,MACb84E,EAAMnvH,KAAKmvH,IACXtoF,EAAS0iH,EAAY,GAAG1iH,QACxBz7B,EAAOm+I,EAAY,IAAIn+I,MACvB2L,EAAOwyI,EAAY,GAAGxyI,MACtB65J,EAAiBrnB,EAAY,GAAIjqJ,UACjCxI,EAAMyyJ,EAAY,GAAGzyJ,KACrBC,EAAOwyJ,EAAY,GAAGxyJ,MACtBkL,EAAUsnJ,EAAY,GAAGtnJ,SACzB8sC,EAAQw6G,EAAY,GAAGx6G,OACvB5mC,EAAQohJ,EAAY,GAAGphJ,OACvBqkJ,EAAcjD,EAAY,GAAGjsH,OAC7B/X,EAAcgkI,EAAY,GAAGhkI,aAC7B86H,EAAUkJ,EAAY,GAAGlJ,SAEzBghC,EAAoB,oBACpBC,EAAiB,iBACjBC,EAAe,eACfC,EAAe,eAEfC,EAAQ,SAERC,EAAe,cACfC,EAAQ,KACRC,EAAY,OACZC,EAAM,WACNC,GAAM,QACNC,GAAM,cAENC,GAA4B,6BAC5BC,GAA8C,4BAC9CC,GAA2C,uCAC3CC,GAAmB,YAKnBC,GAAY,SAAUtgL,GACxB,IACIugL,EAAaC,EAASj/I,EAAOk/I,EAAM9hB,EAAOrpE,EAAQorF,EADlD3zI,EAAQ1mC,EAAMrG,EAAO,KAMzB,GAJI+sC,EAAMz8C,QAAqC,IAA3By8C,EAAMA,EAAMz8C,OAAS,IACvCy8C,EAAMz8C,SAERiwL,EAAcxzI,EAAMz8C,OAChBiwL,EAAc,EAAG,OAAOvgL,EAE5B,IADAwgL,EAAU,GACLj/I,EAAQ,EAAGA,EAAQg/I,EAAah/I,IAAS,CAE5C,GADAk/I,EAAO1zI,EAAMxL,GACD,IAARk/I,EAAY,OAAOzgL,EAMvB,GALA2+J,EAAQ,GACJ8hB,EAAKnwL,OAAS,GAAwB,KAAnBy0C,EAAO07I,EAAM,KAClC9hB,EAAQr1J,EAAKw2K,EAAWW,GAAQ,GAAK,EACrCA,EAAO/1B,EAAY+1B,EAAe,GAAT9hB,EAAa,EAAI,IAE/B,KAAT8hB,EACFnrF,EAAS,MACJ,CACL,IAAKhsF,EAAc,IAATq1J,EAAcqhB,GAAe,GAATrhB,EAAaohB,EAAME,GAAKQ,GAAO,OAAOzgL,EACpEs1F,EAASphD,EAASusI,EAAM9hB,GAE1B1pK,EAAKurL,EAASlrF,GAEhB,IAAK/zD,EAAQ,EAAGA,EAAQg/I,EAAah/I,IAEnC,GADA+zD,EAASkrF,EAAQj/I,GACbA,GAASg/I,EAAc,GACzB,GAAIjrF,GAAU+3B,EAAI,IAAK,EAAIkzD,GAAc,OAAO,UAC3C,GAAIjrF,EAAS,IAAK,OAAO,KAGlC,IADAorF,EAAO1rL,EAAIwrL,GACNj/I,EAAQ,EAAGA,EAAQi/I,EAAQlwL,OAAQixC,IACtCm/I,GAAQF,EAAQj/I,GAAS8rF,EAAI,IAAK,EAAI9rF,GAExC,OAAOm/I,GAKLC,GAAY,SAAU3gL,GACxB,IAIIzM,EAAOjD,EAAQswL,EAAaC,EAAWvrF,EAAQwrF,EAAOC,EAJtDC,EAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAChCC,EAAa,EACbC,EAAW,KACXC,EAAU,EAGVhiB,EAAM,WACR,OAAOp6H,EAAO/kC,EAAOmhL,IAGvB,GAAa,KAAThiB,IAAc,CAChB,GAAwB,KAApBp6H,EAAO/kC,EAAO,GAAW,OAC7BmhL,GAAW,EACXF,IACAC,EAAWD,EAEb,MAAO9hB,IAAO,CACZ,GAAkB,GAAd8hB,EAAiB,OACrB,GAAa,KAAT9hB,IAAJ,CAOA5rK,EAAQjD,EAAS,EACjB,MAAOA,EAAS,GAAKgZ,EAAK22K,GAAK9gB,KAC7B5rK,EAAgB,GAARA,EAAa2gD,EAASirH,IAAO,IACrCgiB,IACA7wL,IAEF,GAAa,KAAT6uK,IAAc,CAChB,GAAc,GAAV7uK,EAAa,OAEjB,GADA6wL,GAAW7wL,EACP2wL,EAAa,EAAG,OACpBL,EAAc,EACd,MAAOzhB,IAAO,CAEZ,GADA0hB,EAAY,KACRD,EAAc,EAAG,CACnB,KAAa,KAATzhB,KAAgByhB,EAAc,GAC7B,OADgCO,IAGvC,IAAK73K,EAAKu2K,EAAO1gB,KAAQ,OACzB,MAAO71J,EAAKu2K,EAAO1gB,KAAQ,CAEzB,GADA7pE,EAASphD,EAASirH,IAAO,IACP,OAAd0hB,EAAoBA,EAAYvrF,MAC/B,IAAiB,GAAburF,EAAgB,OACpBA,EAAwB,GAAZA,EAAiBvrF,EAClC,GAAIurF,EAAY,IAAK,OACrBM,IAEFH,EAAQC,GAAoC,IAAtBD,EAAQC,GAAoBJ,EAClDD,IACmB,GAAfA,GAAmC,GAAfA,GAAkBK,IAE5C,GAAmB,GAAfL,EAAkB,OACtB,MACK,GAAa,KAATzhB,KAET,GADAgiB,KACKhiB,IAAO,YACP,GAAIA,IAAO,OAClB6hB,EAAQC,KAAgB1tL,MA3CxB,CACE,GAAiB,OAAb2tL,EAAmB,OACvBC,IACAF,IACAC,EAAWD,GAyCf,GAAiB,OAAbC,EAAmB,CACrBJ,EAAQG,EAAaC,EACrBD,EAAa,EACb,MAAqB,GAAdA,GAAmBH,EAAQ,EAChCC,EAAOC,EAAQC,GACfD,EAAQC,KAAgBD,EAAQE,EAAWJ,EAAQ,GACnDE,EAAQE,IAAaJ,GAASC,OAE3B,GAAkB,GAAdE,EAAiB,OAC5B,OAAOD,GAGLI,GAA0B,SAAUC,GAMtC,IALA,IAAIC,EAAW,KACXtyG,EAAY,EACZuyG,EAAY,KACZC,EAAa,EACbjgJ,EAAQ,EACLA,EAAQ,EAAGA,IACI,IAAhB8/I,EAAK9/I,IACHigJ,EAAaxyG,IACfsyG,EAAWC,EACXvyG,EAAYwyG,GAEdD,EAAY,KACZC,EAAa,IAEK,OAAdD,IAAoBA,EAAYhgJ,KAClCigJ,GAON,OAJIA,EAAaxyG,IACfsyG,EAAWC,EACXvyG,EAAYwyG,GAEPF,GAILG,GAAgB,SAAU3uJ,GAC5B,IAAIj/B,EAAQ0tC,EAAO2/I,EAAUQ,EAE7B,GAAmB,iBAAR5uJ,EAAkB,CAE3B,IADAj/B,EAAS,GACJ0tC,EAAQ,EAAGA,EAAQ,EAAGA,IACzBg9G,EAAQ1qJ,EAAQi/B,EAAO,KACvBA,EAAOyhB,EAAMzhB,EAAO,KACpB,OAAO7d,EAAKphB,EAAQ,KAEjB,GAAmB,iBAARi/B,EAAkB,CAGlC,IAFAj/B,EAAS,GACTqtL,EAAWE,GAAwBtuJ,GAC9ByO,EAAQ,EAAGA,EAAQ,EAAGA,IACrBmgJ,GAA2B,IAAhB5uJ,EAAKyO,KAChBmgJ,IAASA,GAAU,GACnBR,IAAa3/I,GACf1tC,GAAU0tC,EAAQ,IAAM,KACxBmgJ,GAAU,IAEV7tL,GAAUi7K,EAAeh8I,EAAKyO,GAAQ,IAClCA,EAAQ,IAAG1tC,GAAU,OAG7B,MAAO,IAAMA,EAAS,IACtB,OAAOi/B,GAGP6uJ,GAA4B,GAC5BC,GAA2B5xL,EAAO,GAAI2xL,GAA2B,CACnE,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAEnCE,GAAuB7xL,EAAO,GAAI4xL,GAA0B,CAC9D,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAE3BE,GAA2B9xL,EAAO,GAAI6xL,GAAsB,CAC9D,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,EAAG,KAAM,EAAG,IAAK,EAAG,IAAK,EAAG,IAAK,IAG5EE,GAAgB,SAAU5iB,EAAKvnJ,GACjC,IAAI7V,EAAOikK,EAAO7G,EAAK,GACvB,OAAOp9J,EAAO,IAAQA,EAAO,MAAS4sJ,EAAO/2I,EAAKunJ,GAAOA,EAAMl/J,mBAAmBk/J,IAIhF6iB,GAAiB,CACnBC,IAAK,GACLC,KAAM,KACNC,KAAM,GACNC,MAAO,IACPC,GAAI,GACJC,IAAK,KAIHC,GAAuB,SAAUjzB,EAAQkzB,GAC3C,IAAIzc,EACJ,OAAwB,GAAjBzW,EAAOh/J,QAAegZ,EAAKq2K,EAAO56I,EAAOuqH,EAAQ,MAClB,MAA/ByW,EAAShhI,EAAOuqH,EAAQ,MAAgBkzB,GAAwB,KAAVzc,IAI3D0c,GAA+B,SAAUnzB,GAC3C,IAAI6gB,EACJ,OAAO7gB,EAAOh/J,OAAS,GAAKiyL,GAAqB73B,EAAY4E,EAAQ,EAAG,MACrD,GAAjBA,EAAOh/J,QAC0B,OAA/B6/K,EAAQprI,EAAOuqH,EAAQ,KAAyB,OAAV6gB,GAA4B,MAAVA,GAA2B,MAAVA,IAK3EuS,GAAc,SAAUC,GAC1B,MAAmB,MAAZA,GAA4C,QAAzBl/J,EAAYk/J,IAIpCC,GAAc,SAAUD,GAE1B,OADAA,EAAUl/J,EAAYk/J,GACH,OAAZA,GAAgC,SAAZA,GAAkC,SAAZA,GAAkC,WAAZA,GAIrEE,GAAe,GACfC,GAAS,GACTC,GAAY,GACZC,GAAgC,GAChCC,GAAoB,GACpBC,GAAW,GACXC,GAAiB,GACjBC,GAA4B,GAC5BC,GAAmC,GACnCz9I,GAAY,GACZ09I,GAAO,GACPC,GAAW,GACXC,GAAO,GACPC,GAAO,GACPC,GAAa,GACbC,GAAY,GACZC,GAAa,GACbC,GAAO,GACPC,GAA4B,GAC5B/sI,GAAQ,GACR+V,GAAW,GAEXi3H,GAAW,SAAUnzL,EAAKozL,EAAQ9d,GACpC,IACI+d,EAAWC,EAASlmB,EADpBzzI,EAAYmsJ,EAAU9lL,GAE1B,GAAIozL,EAAQ,CAEV,GADAE,EAAUj1L,KAAK+a,MAAMugB,GACjB25J,EAAS,MAAMnvL,EAAUmvL,GAC7Bj1L,KAAK+uK,aAAe,SACf,CAGL,QAFa7oI,IAAT+wI,IAAoB+d,EAAY,IAAIF,GAAS7d,GAAM,IACvDge,EAAUj1L,KAAK+a,MAAMugB,EAAW,KAAM05J,GAClCC,EAAS,MAAMnvL,EAAUmvL,GAC7BlmB,EAAeqhB,EAA6B,IAAIphB,GAChDD,EAAakgB,QAAQjvL,MACrBA,KAAK+uK,aAAeA,IAIxB+lB,GAAS50L,UAAY,CACnBgtB,KAAM,MAGNnS,MAAO,SAAUhK,EAAOmkL,EAAeje,GACrC,IAOIke,EAAYjlB,EAAKklB,EAAkBH,EAPnCtzL,EAAM3B,KACNqsC,EAAQ6oJ,GAAiBtB,GACzB1B,EAAU,EACVvjL,EAAS,GACT0mL,GAAS,EACTC,GAAc,EACdC,GAAoB,EAGxBxkL,EAAQ02K,EAAU12K,GAEbmkL,IACHvzL,EAAI6zL,OAAS,GACb7zL,EAAIkzB,SAAW,GACflzB,EAAI+qD,SAAW,GACf/qD,EAAIkiC,KAAO,KACXliC,EAAIohF,KAAO,KACXphF,EAAIyrF,KAAO,GACXzrF,EAAI2Z,MAAQ,KACZ3Z,EAAI8zL,SAAW,KACf9zL,EAAI+zL,kBAAmB,EACvB3kL,EAAQG,EAAQH,EAAOogL,GAA0C,KAGnEpgL,EAAQG,EAAQH,EAAOqgL,GAAkB,IAEzC+D,EAAanF,EAAUj/K,GAEvB,MAAOmhL,GAAWiD,EAAW9zL,OAAQ,CAEnC,OADA6uK,EAAMilB,EAAWjD,GACT7lJ,GACN,KAAKunJ,GACH,IAAI1jB,IAAO71J,EAAKq2K,EAAOxgB,GAGhB,IAAKglB,EAGL,OAAO3E,EAFZlkJ,EAAQynJ,GACR,SAJAnlL,GAAU6lB,EAAY07I,GACtB7jI,EAAQwnJ,GAKV,MAEF,KAAKA,GACH,GAAI3jB,IAAQ71J,EAAKs2K,EAAczgB,IAAe,KAAPA,GAAqB,KAAPA,GAAqB,KAAPA,GACjEvhK,GAAU6lB,EAAY07I,OACjB,IAAW,KAAPA,EA0BJ,IAAKglB,EAKL,OAAO3E,EAJZ5hL,EAAS,GACT09B,EAAQynJ,GACR5B,EAAU,EACV,SA7BA,GAAIgD,IACDvzL,EAAIg0L,aAAej2B,EAAOqzB,GAAgBpkL,IAChC,QAAVA,IAAqBhN,EAAIi0L,uBAAsC,OAAbj0L,EAAIohF,OACxC,QAAdphF,EAAI6zL,SAAqB7zL,EAAIkiC,MAC7B,OAEH,GADAliC,EAAI6zL,OAAS7mL,EACTumL,EAEF,YADIvzL,EAAIg0L,aAAe5C,GAAepxL,EAAI6zL,SAAW7zL,EAAIohF,OAAMphF,EAAIohF,KAAO,OAG5Ep0E,EAAS,GACS,QAAdhN,EAAI6zL,OACNnpJ,EAAQmoJ,GACC7yL,EAAIg0L,aAAe1e,GAAQA,EAAKue,QAAU7zL,EAAI6zL,OACvDnpJ,EAAQ0nJ,GACCpyL,EAAIg0L,YACbtpJ,EAAQ8nJ,GAC4B,KAA3BgB,EAAWjD,EAAU,IAC9B7lJ,EAAQ2nJ,GACR9B,MAEAvwL,EAAI+zL,kBAAmB,EACvB1vL,EAAKrE,EAAIyrF,KAAM,IACf/gD,EAAQwoJ,IAQZ,MAEF,KAAKf,GACH,IAAK7c,GAASA,EAAKye,kBAA2B,KAAPxlB,EAAa,OAAOqgB,EAC3D,GAAItZ,EAAKye,kBAA2B,KAAPxlB,EAAY,CACvCvuK,EAAI6zL,OAASve,EAAKue,OAClB7zL,EAAIyrF,KAAO+sE,EAAW8c,EAAK7pF,MAC3BzrF,EAAI2Z,MAAQ27J,EAAK37J,MACjB3Z,EAAI8zL,SAAW,GACf9zL,EAAI+zL,kBAAmB,EACvBrpJ,EAAQwxB,GACR,MAEFxxB,EAAuB,QAAf4qI,EAAKue,OAAmBhB,GAAOP,GACvC,SAEF,KAAKF,GACH,GAAW,KAAP7jB,GAAyC,KAA3BilB,EAAWjD,EAAU,GAGhC,CACL7lJ,EAAQ4nJ,GACR,SAJA5nJ,EAAQ+nJ,GACRlC,IAIA,MAEJ,KAAK8B,GACH,GAAW,KAAP9jB,EAAY,CACd7jI,EAAQsK,GACR,MAEAtK,EAAQuoJ,GACR,SAGJ,KAAKX,GAEH,GADAtyL,EAAI6zL,OAASve,EAAKue,OACdtlB,GAAO6f,EACTpuL,EAAIkzB,SAAWoiJ,EAAKpiJ,SACpBlzB,EAAI+qD,SAAWuqH,EAAKvqH,SACpB/qD,EAAIkiC,KAAOozI,EAAKpzI,KAChBliC,EAAIohF,KAAOk0F,EAAKl0F,KAChBphF,EAAIyrF,KAAO+sE,EAAW8c,EAAK7pF,MAC3BzrF,EAAI2Z,MAAQ27J,EAAK37J,WACZ,GAAW,KAAP40J,GAAsB,MAAPA,GAAevuK,EAAIg0L,YAC3CtpJ,EAAQ6nJ,QACH,GAAW,KAAPhkB,EACTvuK,EAAIkzB,SAAWoiJ,EAAKpiJ,SACpBlzB,EAAI+qD,SAAWuqH,EAAKvqH,SACpB/qD,EAAIkiC,KAAOozI,EAAKpzI,KAChBliC,EAAIohF,KAAOk0F,EAAKl0F,KAChBphF,EAAIyrF,KAAO+sE,EAAW8c,EAAK7pF,MAC3BzrF,EAAI2Z,MAAQ,GACZ+wB,EAAQyb,OACH,IAAW,KAAPooH,EASJ,CACLvuK,EAAIkzB,SAAWoiJ,EAAKpiJ,SACpBlzB,EAAI+qD,SAAWuqH,EAAKvqH,SACpB/qD,EAAIkiC,KAAOozI,EAAKpzI,KAChBliC,EAAIohF,KAAOk0F,EAAKl0F,KAChBphF,EAAIyrF,KAAO+sE,EAAW8c,EAAK7pF,MAC3BzrF,EAAIyrF,KAAK/rF,SACTgrC,EAAQuoJ,GACR,SAhBAjzL,EAAIkzB,SAAWoiJ,EAAKpiJ,SACpBlzB,EAAI+qD,SAAWuqH,EAAKvqH,SACpB/qD,EAAIkiC,KAAOozI,EAAKpzI,KAChBliC,EAAIohF,KAAOk0F,EAAKl0F,KAChBphF,EAAIyrF,KAAO+sE,EAAW8c,EAAK7pF,MAC3BzrF,EAAI2Z,MAAQ27J,EAAK37J,MACjB3Z,EAAI8zL,SAAW,GACfppJ,EAAQwxB,GAUR,MAEJ,KAAKq2H,GACH,IAAIvyL,EAAIg0L,aAAuB,KAAPzlB,GAAqB,MAAPA,EAE/B,IAAW,KAAPA,EAEJ,CACLvuK,EAAIkzB,SAAWoiJ,EAAKpiJ,SACpBlzB,EAAI+qD,SAAWuqH,EAAKvqH,SACpB/qD,EAAIkiC,KAAOozI,EAAKpzI,KAChBliC,EAAIohF,KAAOk0F,EAAKl0F,KAChB12C,EAAQuoJ,GACR,SAPAvoJ,EAAQsK,QAFRtK,EAAQ+nJ,GAUR,MAEJ,KAAKD,GAEH,GADA9nJ,EAAQ+nJ,GACG,KAAPlkB,GAA6C,KAA/Bp6H,EAAOnnC,EAAQujL,EAAU,GAAW,SACtDA,IACA,MAEF,KAAKkC,GACH,GAAW,KAAPlkB,GAAqB,MAAPA,EAAa,CAC7B7jI,EAAQsK,GACR,SACA,MAEJ,KAAKA,GACH,GAAW,KAAPu5H,EAAY,CACVmlB,IAAQ1mL,EAAS,MAAQA,GAC7B0mL,GAAS,EACTD,EAAmBpF,EAAUrhL,GAC7B,IAAK,IAAIzN,EAAI,EAAGA,EAAIk0L,EAAiB/zL,OAAQH,IAAK,CAChD,IAAI20L,EAAYT,EAAiBl0L,GACjC,GAAiB,KAAb20L,GAAqBN,EAAzB,CAIA,IAAIO,EAAoBhD,GAAc+C,EAAWhD,IAC7C0C,EAAmB5zL,EAAI+qD,UAAYopI,EAClCn0L,EAAIkzB,UAAYihK,OALnBP,GAAoB,EAOxB5mL,EAAS,QACJ,GACLuhK,GAAO6f,GAAc,KAAP7f,GAAqB,KAAPA,GAAqB,KAAPA,GAClC,MAAPA,GAAevuK,EAAIg0L,YACpB,CACA,GAAIN,GAAoB,IAAV1mL,EAAc,OAAO2hL,EACnC4B,GAAWlC,EAAUrhL,GAAQtN,OAAS,EACtCsN,EAAS,GACT09B,EAAQgoJ,QACH1lL,GAAUuhK,EACjB,MAEF,KAAKmkB,GACL,KAAKC,GACH,GAAIY,GAA+B,QAAdvzL,EAAI6zL,OAAkB,CACzCnpJ,EAAQqoJ,GACR,SACK,GAAW,KAAPxkB,GAAeolB,EAOnB,IACLplB,GAAO6f,GAAc,KAAP7f,GAAqB,KAAPA,GAAqB,KAAPA,GAClC,MAAPA,GAAevuK,EAAIg0L,YACpB,CACA,GAAIh0L,EAAIg0L,aAAyB,IAAVhnL,EAAc,OAAO6hL,EAC5C,GAAI0E,GAA2B,IAAVvmL,IAAiBhN,EAAIi0L,uBAAsC,OAAbj0L,EAAIohF,MAAgB,OAEvF,GADAkyG,EAAUtzL,EAAI0jF,UAAU12E,GACpBsmL,EAAS,OAAOA,EAGpB,GAFAtmL,EAAS,GACT09B,EAAQsoJ,GACJO,EAAe,OACnB,SAEW,KAAPhlB,EAAYolB,GAAc,EACd,KAAPplB,IAAYolB,GAAc,GACnC3mL,GAAUuhK,MAtB2B,CACrC,GAAc,IAAVvhK,EAAc,OAAO6hL,EAEzB,GADAyE,EAAUtzL,EAAI0jF,UAAU12E,GACpBsmL,EAAS,OAAOA,EAGpB,GAFAtmL,EAAS,GACT09B,EAAQkoJ,GACJW,GAAiBZ,GAAU,OAiB/B,MAEJ,KAAKC,GACH,IAAIl6K,EAAKu2K,EAAO1gB,GAET,IACLA,GAAO6f,GAAc,KAAP7f,GAAqB,KAAPA,GAAqB,KAAPA,GAClC,MAAPA,GAAevuK,EAAIg0L,aACpBT,EACA,CACA,GAAc,IAAVvmL,EAAc,CAChB,IAAIo0E,EAAO99B,EAASt2C,EAAQ,IAC5B,GAAIo0E,EAAO,MAAQ,OAAO0tG,EAC1B9uL,EAAIohF,KAAQphF,EAAIg0L,aAAe5yG,IAASgwG,GAAepxL,EAAI6zL,QAAW,KAAOzyG,EAC7Ep0E,EAAS,GAEX,GAAIumL,EAAe,OACnB7oJ,EAAQsoJ,GACR,SACK,OAAOlE,EAfZ9hL,GAAUuhK,EAgBZ,MAEF,KAAKskB,GAEH,GADA7yL,EAAI6zL,OAAS,OACF,KAAPtlB,GAAqB,MAAPA,EAAa7jI,EAAQooJ,OAClC,KAAIxd,GAAuB,QAAfA,EAAKue,OAyBf,CACLnpJ,EAAQuoJ,GACR,SA1BA,GAAI1kB,GAAO6f,EACTpuL,EAAIkiC,KAAOozI,EAAKpzI,KAChBliC,EAAIyrF,KAAO+sE,EAAW8c,EAAK7pF,MAC3BzrF,EAAI2Z,MAAQ27J,EAAK37J,WACZ,GAAW,KAAP40J,EACTvuK,EAAIkiC,KAAOozI,EAAKpzI,KAChBliC,EAAIyrF,KAAO+sE,EAAW8c,EAAK7pF,MAC3BzrF,EAAI2Z,MAAQ,GACZ+wB,EAAQyb,OACH,IAAW,KAAPooH,EAMJ,CACAsjB,GAA6BxtK,EAAKm0I,EAAWg7B,EAAYjD,GAAU,OACtEvwL,EAAIkiC,KAAOozI,EAAKpzI,KAChBliC,EAAIyrF,KAAO+sE,EAAW8c,EAAK7pF,MAC3BzrF,EAAIo0L,eAEN1pJ,EAAQuoJ,GACR,SAZAjzL,EAAIkiC,KAAOozI,EAAKpzI,KAChBliC,EAAIyrF,KAAO+sE,EAAW8c,EAAK7pF,MAC3BzrF,EAAI2Z,MAAQ27J,EAAK37J,MACjB3Z,EAAI8zL,SAAW,GACfppJ,EAAQwxB,IAaV,MAEJ,KAAK42H,GACH,GAAW,KAAPvkB,GAAqB,MAAPA,EAAa,CAC7B7jI,EAAQqoJ,GACR,MAEEzd,GAAuB,QAAfA,EAAKue,SAAqBhC,GAA6BxtK,EAAKm0I,EAAWg7B,EAAYjD,GAAU,OACnGoB,GAAqBrc,EAAK7pF,KAAK,IAAI,GAAOpnF,EAAKrE,EAAIyrF,KAAM6pF,EAAK7pF,KAAK,IAClEzrF,EAAIkiC,KAAOozI,EAAKpzI,MAEvBwI,EAAQuoJ,GACR,SAEF,KAAKF,GACH,GAAIxkB,GAAO6f,GAAc,KAAP7f,GAAqB,MAAPA,GAAsB,KAAPA,GAAqB,KAAPA,EAAY,CACvE,IAAKglB,GAAiB5B,GAAqB3kL,GACzC09B,EAAQuoJ,QACH,GAAc,IAAVjmL,EAAc,CAEvB,GADAhN,EAAIkiC,KAAO,GACPqxJ,EAAe,OACnB7oJ,EAAQsoJ,OACH,CAEL,GADAM,EAAUtzL,EAAI0jF,UAAU12E,GACpBsmL,EAAS,OAAOA,EAEpB,GADgB,aAAZtzL,EAAIkiC,OAAqBliC,EAAIkiC,KAAO,IACpCqxJ,EAAe,OACnBvmL,EAAS,GACT09B,EAAQsoJ,GACR,SACGhmL,GAAUuhK,EACjB,MAEF,KAAKykB,GACH,GAAIhzL,EAAIg0L,aAEN,GADAtpJ,EAAQuoJ,GACG,KAAP1kB,GAAqB,MAAPA,EAAa,cAC1B,GAAKglB,GAAwB,KAAPhlB,EAGtB,GAAKglB,GAAwB,KAAPhlB,GAGtB,GAAIA,GAAO6f,IAChB1jJ,EAAQuoJ,GACG,KAAP1kB,GAAY,cAJhBvuK,EAAI8zL,SAAW,GACfppJ,EAAQwxB,QAJRl8D,EAAI2Z,MAAQ,GACZ+wB,EAAQyb,GAOR,MAEJ,KAAK8sI,GACH,GACE1kB,GAAO6f,GAAc,KAAP7f,GACN,MAAPA,GAAevuK,EAAIg0L,cAClBT,IAAyB,KAAPhlB,GAAqB,KAAPA,GAClC,CAkBA,GAjBIyjB,GAAYhlL,IACdhN,EAAIo0L,cACO,KAAP7lB,GAAuB,MAAPA,GAAevuK,EAAIg0L,aACrC3vL,EAAKrE,EAAIyrF,KAAM,KAERqmG,GAAY9kL,GACV,KAAPuhK,GAAuB,MAAPA,GAAevuK,EAAIg0L,aACrC3vL,EAAKrE,EAAIyrF,KAAM,KAGC,QAAdzrF,EAAI6zL,SAAqB7zL,EAAIyrF,KAAK/rF,QAAUiyL,GAAqB3kL,KAC/DhN,EAAIkiC,OAAMliC,EAAIkiC,KAAO,IACzBl1B,EAASmnC,EAAOnnC,EAAQ,GAAK,KAE/B3I,EAAKrE,EAAIyrF,KAAMz+E,IAEjBA,EAAS,GACS,QAAdhN,EAAI6zL,SAAqBtlB,GAAO6f,GAAc,KAAP7f,GAAqB,KAAPA,GACvD,MAAOvuK,EAAIyrF,KAAK/rF,OAAS,GAAqB,KAAhBM,EAAIyrF,KAAK,GACrCpvC,EAAMr8C,EAAIyrF,MAGH,KAAP8iF,GACFvuK,EAAI2Z,MAAQ,GACZ+wB,EAAQyb,IACQ,KAAPooH,IACTvuK,EAAI8zL,SAAW,GACfppJ,EAAQwxB,SAGVlvD,GAAUmkL,GAAc5iB,EAAK0iB,IAC7B,MAEJ,KAAKiC,GACQ,KAAP3kB,GACFvuK,EAAI2Z,MAAQ,GACZ+wB,EAAQyb,IACQ,KAAPooH,GACTvuK,EAAI8zL,SAAW,GACfppJ,EAAQwxB,IACCqyG,GAAO6f,IAChBpuL,EAAIyrF,KAAK,IAAM0lG,GAAc5iB,EAAKwiB,KAClC,MAEJ,KAAK5qI,GACEotI,GAAwB,KAAPhlB,EAGXA,GAAO6f,IACL,KAAP7f,GAAcvuK,EAAIg0L,YAAah0L,EAAI2Z,OAAS,MAC3B3Z,EAAI2Z,OAAT,KAAP40J,EAAyB,MAChB4iB,GAAc5iB,EAAKwiB,MALrC/wL,EAAI8zL,SAAW,GACfppJ,EAAQwxB,IAKR,MAEJ,KAAKA,GACCqyG,GAAO6f,IAAKpuL,EAAI8zL,UAAY3C,GAAc5iB,EAAKyiB,KACnD,MAGJT,MAIJ7sG,UAAW,SAAUt0E,GACnB,IAAInM,EAAQuwL,EAAY7iJ,EACxB,GAAwB,KAApBwD,EAAO/kC,EAAO,GAAW,CAC3B,GAAuC,KAAnC+kC,EAAO/kC,EAAOA,EAAM1P,OAAS,GAAW,OAAOmvL,EAEnD,GADA5rL,EAAS8sL,GAAUj2B,EAAY1qJ,EAAO,GAAI,KACrCnM,EAAQ,OAAO4rL,EACpBxwL,KAAK6jC,KAAOj/B,OAEP,GAAK5E,KAAK21L,YAQV,CAEL,GADA5kL,EAAQk/K,EAAQl/K,GACZsJ,EAAK42K,GAA2BlgL,GAAQ,OAAOy/K,EAEnD,GADA5rL,EAASysL,GAAUtgL,GACJ,OAAXnM,EAAiB,OAAO4rL,EAC5BxwL,KAAK6jC,KAAOj/B,MAbgB,CAC5B,GAAIyV,EAAK62K,GAA6CngL,GAAQ,OAAOy/K,EAGrE,IAFA5rL,EAAS,GACTuwL,EAAanF,EAAUj/K,GAClBuhC,EAAQ,EAAGA,EAAQ6iJ,EAAW9zL,OAAQixC,IACzC1tC,GAAUkuL,GAAcqC,EAAW7iJ,GAAQogJ,IAE7C1yL,KAAK6jC,KAAOj/B,IAUhBoxL,+BAAgC,WAC9B,OAAQh2L,KAAK6jC,MAAQ7jC,KAAK01L,kBAAmC,QAAf11L,KAAKw1L,QAGrDI,oBAAqB,WACnB,MAAwB,IAAjB51L,KAAK60B,UAAmC,IAAjB70B,KAAK0sD,UAGrCipI,UAAW,WACT,OAAOj2B,EAAOqzB,GAAgB/yL,KAAKw1L,SAGrCO,YAAa,WACX,IAAI3oG,EAAOptF,KAAKotF,KACZ6oG,EAAW7oG,EAAK/rF,QAChB40L,GAA4B,QAAfj2L,KAAKw1L,QAAgC,GAAZS,GAAkB3C,GAAqBlmG,EAAK,IAAI,IACxFA,EAAK/rF,UAIT+3H,UAAW,WACT,IAAIz3H,EAAM3B,KACNw1L,EAAS7zL,EAAI6zL,OACb3gK,EAAWlzB,EAAIkzB,SACf63B,EAAW/qD,EAAI+qD,SACf7oB,EAAOliC,EAAIkiC,KACXk/C,EAAOphF,EAAIohF,KACXqK,EAAOzrF,EAAIyrF,KACX9xE,EAAQ3Z,EAAI2Z,MACZm6K,EAAW9zL,EAAI8zL,SACfjgH,EAASggH,EAAS,IAYtB,OAXa,OAAT3xJ,GACF2xC,GAAU,KACN7zE,EAAIi0L,wBACNpgH,GAAU3gD,GAAY63B,EAAW,IAAMA,EAAW,IAAM,KAE1D8oB,GAAUg9G,GAAc3uJ,GACX,OAATk/C,IAAevN,GAAU,IAAMuN,IAChB,QAAVyyG,IAAkBhgH,GAAU,MACvCA,GAAU7zE,EAAI+zL,iBAAmBtoG,EAAK,GAAKA,EAAK/rF,OAAS,IAAM2kB,EAAKonE,EAAM,KAAO,GACnE,OAAV9xE,IAAgBk6D,GAAU,IAAMl6D,GACnB,OAAbm6K,IAAmBjgH,GAAU,IAAMigH,GAChCjgH,GAGT0gH,QAAS,SAAUj3I,GACjB,IAAIg2I,EAAUj1L,KAAK+a,MAAMkkC,GACzB,GAAIg2I,EAAS,MAAMnvL,EAAUmvL,GAC7Bj1L,KAAK+uK,aAAa11D,UAGpB88E,UAAW,WACT,IAAIX,EAASx1L,KAAKw1L,OACdzyG,EAAO/iF,KAAK+iF,KAChB,GAAc,QAAVyyG,EAAkB,IACpB,OAAO,IAAIY,GAAeZ,EAAOpoG,KAAK,IAAI5uC,OAC1C,MAAOl4C,GACP,MAAO,OAET,MAAc,QAAVkvL,GAAqBx1L,KAAK21L,YACvBH,EAAS,MAAQhD,GAAcxyL,KAAK6jC,OAAkB,OAATk/C,EAAgB,IAAMA,EAAO,IAD/B,QAIpDszG,YAAa,WACX,OAAOr2L,KAAKw1L,OAAS,KAEvBc,YAAa,SAAUxzG,GACrB9iF,KAAK+a,MAAM0sK,EAAU3kG,GAAY,IAAK8wG,KAGxC2C,YAAa,WACX,OAAOv2L,KAAK60B,UAEd2hK,YAAa,SAAU3hK,GACrB,IAAIsgK,EAAanF,EAAUvI,EAAU5yJ,IACrC,IAAI70B,KAAKg2L,iCAAT,CACAh2L,KAAK60B,SAAW,GAChB,IAAK,IAAI3zB,EAAI,EAAGA,EAAIi0L,EAAW9zL,OAAQH,IACrClB,KAAK60B,UAAYi+J,GAAcqC,EAAWj0L,GAAI2xL,MAIlD4D,YAAa,WACX,OAAOz2L,KAAK0sD,UAEdgqI,YAAa,SAAUhqI,GACrB,IAAIyoI,EAAanF,EAAUvI,EAAU/6H,IACrC,IAAI1sD,KAAKg2L,iCAAT,CACAh2L,KAAK0sD,SAAW,GAChB,IAAK,IAAIxrD,EAAI,EAAGA,EAAIi0L,EAAW9zL,OAAQH,IACrClB,KAAK0sD,UAAYomI,GAAcqC,EAAWj0L,GAAI2xL,MAIlD8D,QAAS,WACP,IAAI9yJ,EAAO7jC,KAAK6jC,KACZk/C,EAAO/iF,KAAK+iF,KAChB,OAAgB,OAATl/C,EAAgB,GACV,OAATk/C,EAAgByvG,GAAc3uJ,GAC9B2uJ,GAAc3uJ,GAAQ,IAAMk/C,GAElC6zG,QAAS,SAAU/yJ,GACb7jC,KAAK01L,kBACT11L,KAAK+a,MAAM8oB,EAAMwwJ,KAGnBwC,YAAa,WACX,IAAIhzJ,EAAO7jC,KAAK6jC,KAChB,OAAgB,OAATA,EAAgB,GAAK2uJ,GAAc3uJ,IAE5CizJ,YAAa,SAAUljC,GACjB5zJ,KAAK01L,kBACT11L,KAAK+a,MAAM64I,EAAU0gC,KAGvByC,QAAS,WACP,IAAIh0G,EAAO/iF,KAAK+iF,KAChB,OAAgB,OAATA,EAAgB,GAAK0kG,EAAU1kG,IAExCi0G,QAAS,SAAUj0G,GACb/iF,KAAKg2L,mCACTjzG,EAAO0kG,EAAU1kG,GACL,IAARA,EAAY/iF,KAAK+iF,KAAO,KACvB/iF,KAAK+a,MAAMgoE,EAAMwxG,MAGxB0C,YAAa,WACX,IAAI7pG,EAAOptF,KAAKotF,KAChB,OAAOptF,KAAK01L,iBAAmBtoG,EAAK,GAAKA,EAAK/rF,OAAS,IAAM2kB,EAAKonE,EAAM,KAAO,IAEjF8pG,YAAa,SAAUz4I,GACjBz+C,KAAK01L,mBACT11L,KAAKotF,KAAO,GACZptF,KAAK+a,MAAM0jC,EAAUk2I,MAGvBwC,UAAW,WACT,IAAI77K,EAAQtb,KAAKsb,MACjB,OAAOA,EAAQ,IAAMA,EAAQ,IAE/B87K,UAAW,SAAUn8K,GACnBA,EAASwsK,EAAUxsK,GACL,IAAVA,EACFjb,KAAKsb,MAAQ,MAET,KAAOw6B,EAAO76B,EAAQ,KAAIA,EAASwgJ,EAAYxgJ,EAAQ,IAC3Djb,KAAKsb,MAAQ,GACbtb,KAAK+a,MAAME,EAAQ6sC,KAErB9nD,KAAK+uK,aAAa11D,UAGpBg+E,gBAAiB,WACf,OAAOr3L,KAAK+uK,aAAazD,QAG3Bp9H,QAAS,WACP,IAAIunJ,EAAWz1L,KAAKy1L,SACpB,OAAOA,EAAW,IAAMA,EAAW,IAErC6B,QAAS,SAAU1zK,GACjBA,EAAO6jK,EAAU7jK,GACL,IAARA,GAIA,KAAOkyB,EAAOlyB,EAAM,KAAIA,EAAO63I,EAAY73I,EAAM,IACrD5jB,KAAKy1L,SAAW,GAChBz1L,KAAK+a,MAAM6I,EAAMi6C,KALf79D,KAAKy1L,SAAW,MAOpBp8E,OAAQ,WACNr5G,KAAKsb,MAAQtb,KAAK+uK,aAAa31C,aAAe,OAMlD,IAAIg9D,GAAiB,SAAaz0L,GAChC,IAAI01G,EAAOolD,EAAWz8J,KAAMu3L,IACxBtgB,EAAOhB,EAAwB70K,UAAUC,OAAQ,GAAK,EAAID,UAAU,QAAK8kC,EACzEmG,EAAQ0wH,EAAiB1lD,EAAM,IAAIy9E,GAASnzL,GAAK,EAAOs1K,IACvDra,IACHvlD,EAAKp4D,KAAO5S,EAAM+sF,YAClB/hB,EAAK74D,OAASnS,EAAM8pJ,YACpB9+E,EAAKv0B,SAAWz2C,EAAMgqJ,cACtBh/E,EAAKxiF,SAAWwX,EAAMkqJ,cACtBl/E,EAAK3qD,SAAWrgB,EAAMoqJ,cACtBp/E,EAAKxzE,KAAOwI,EAAMsqJ,UAClBt/E,EAAKu8C,SAAWvnH,EAAMwqJ,cACtBx/E,EAAKt0B,KAAO12C,EAAM0qJ,UAClB1/E,EAAK54D,SAAWpS,EAAM4qJ,cACtB5/E,EAAKp8F,OAASoxB,EAAM8qJ,YACpB9/E,EAAK03D,aAAe1iI,EAAMgrJ,kBAC1BhgF,EAAKzzF,KAAOyoB,EAAM6B,YAIlBqpJ,GAAenB,GAAel2L,UAE9Bs3L,GAAqB,SAAUp2B,EAAQC,GACzC,MAAO,CACL3/J,IAAK,WACH,OAAOyuL,EAAoBnwL,MAAMohK,MAEnCz4I,IAAK04I,GAAU,SAAU/8J,GACvB,OAAO6rL,EAAoBnwL,MAAMqhK,GAAQ/8J,IAE3CgqC,cAAc,EACdD,YAAY,IAuDhB,GAnDIuuH,IAGF2qB,EAAsBgQ,GAAc,OAAQC,GAAmB,YAAa,YAG5EjQ,EAAsBgQ,GAAc,SAAUC,GAAmB,cAGjEjQ,EAAsBgQ,GAAc,WAAYC,GAAmB,cAAe,gBAGlFjQ,EAAsBgQ,GAAc,WAAYC,GAAmB,cAAe,gBAGlFjQ,EAAsBgQ,GAAc,WAAYC,GAAmB,cAAe,gBAGlFjQ,EAAsBgQ,GAAc,OAAQC,GAAmB,UAAW,YAG1EjQ,EAAsBgQ,GAAc,WAAYC,GAAmB,cAAe,gBAGlFjQ,EAAsBgQ,GAAc,OAAQC,GAAmB,UAAW,YAG1EjQ,EAAsBgQ,GAAc,WAAYC,GAAmB,cAAe,gBAGlFjQ,EAAsBgQ,GAAc,SAAUC,GAAmB,YAAa,cAG9EjQ,EAAsBgQ,GAAc,eAAgBC,GAAmB,oBAGvEjQ,EAAsBgQ,GAAc,OAAQC,GAAmB,UAAW,aAK5En5B,EAAck5B,GAAc,UAAU,WACpC,OAAOpH,EAAoBnwL,MAAMo5H,cAChC,CAAE/qF,YAAY,IAIjBgwH,EAAck5B,GAAc,YAAY,WACtC,OAAOpH,EAAoBnwL,MAAMo5H,cAChC,CAAE/qF,YAAY,IAEbgiJ,EAAW,CACb,IAAIoH,GAAwBpH,EAAUqH,gBAClCC,GAAwBtH,EAAUuH,gBAGlCH,IAAuBp5B,EAAc+3B,GAAgB,kBAAmB/yI,EAAKo0I,GAAuBpH,IAGpGsH,IAAuBt5B,EAAc+3B,GAAgB,kBAAmB/yI,EAAKs0I,GAAuBtH,IAG1G7xB,EAAe43B,GAAgB,OAE/Bj4B,EAAE,CAAE9oB,QAAQ,EAAMp1I,aAAa,EAAMw/J,QAASmuB,EAAgBnnB,MAAO7J,GAAe,CAClFxyC,IAAKgsE,M,gBC/gCP,EAAQ,Q,mBCDP,SAASp1L,EAAE0D,GAAwD6lJ,EAAOD,QAAQ5lJ,IAAlF,CAAuM1E,GAAK,WAAY,aAAa,IAAIgB,EAAE,IAAI0D,EAAE,IAAIvD,EAAE,KAAKiF,EAAE,cAAclF,EAAE,SAASD,EAAE,SAASguD,EAAE,OAAOroD,EAAE,MAAMV,EAAE,OAAOjB,EAAE,QAAQu2G,EAAE,UAAUvnC,EAAE,OAAOt0E,EAAE,OAAOw+J,EAAE,eAAenQ,EAAE,6FAA6F9oJ,EAAE,sFAAsF2yL,EAAE,CAACxkL,KAAK,KAAKykL,SAAS,2DAA2D1gL,MAAM,KAAK2gL,OAAO,wFAAwF3gL,MAAM,MAAMjR,EAAE,SAASnF,EAAE0D,EAAEvD,GAAG,IAAIiF,EAAEuK,OAAO3P,GAAG,OAAOoF,GAAGA,EAAE/E,QAAQqD,EAAE1D,EAAE,GAAGtB,MAAMgF,EAAE,EAAE0B,EAAE/E,QAAQ2kB,KAAK7kB,GAAGH,GAAGmE,EAAE,CAAClE,EAAEkF,EAAE47K,EAAE,SAAS/gL,GAAG,IAAI0D,GAAG1D,EAAEg3L,YAAY72L,EAAE8N,KAAKgyF,IAAIv8F,GAAG0B,EAAE6I,KAAKq2C,MAAMnkD,EAAE,IAAID,EAAEC,EAAE,GAAG,OAAOuD,GAAG,EAAE,IAAI,KAAKyB,EAAEC,EAAE,EAAE,KAAK,IAAID,EAAEjF,EAAE,EAAE,MAAMiF,EAAE,SAASnF,EAAE0D,EAAEvD,GAAG,GAAGuD,EAAEw7F,OAAO/+F,EAAE++F,OAAO,OAAOl/F,EAAEG,EAAEuD,GAAG,IAAI0B,EAAE,IAAIjF,EAAE82L,OAAOvzL,EAAEuzL,SAAS92L,EAAE+2L,QAAQxzL,EAAEwzL,SAASh3L,EAAEwD,EAAEypB,QAAQgP,IAAI/2B,EAAEnB,GAAGhE,EAAEE,EAAED,EAAE,EAAE+tD,EAAEvqD,EAAEypB,QAAQgP,IAAI/2B,GAAGnF,GAAG,EAAE,GAAGgE,GAAG,UAAUmB,GAAGjF,EAAED,IAAID,EAAEC,EAAE+tD,EAAEA,EAAE/tD,KAAK,IAAI0F,EAAE,SAAS5F,GAAG,OAAOA,EAAE,EAAEiO,KAAKqD,KAAKtR,IAAI,EAAEiO,KAAKq2C,MAAMtkD,IAAInB,EAAE,SAASmB,GAAG,MAAM,CAAC62L,EAAE5yL,EAAEC,EAAE+uE,EAAE0oB,EAAEz2F,EAAEvG,EAAEiH,EAAEuxL,EAAEx4L,EAAE67G,EAAEvsD,EAAE9oD,EAAElF,EAAEA,EAAEC,EAAE47E,GAAG12E,EAAEgyL,EAAE58E,GAAGx6G,IAAI2P,OAAO3P,GAAG,IAAIwzB,cAActjB,QAAQ,KAAK,KAAK+9C,EAAE,SAASjuD,GAAG,YAAO,IAASA,IAAI4E,EAAE,KAAKuyL,EAAE,GAAGA,EAAEvyL,GAAGiyL,EAAE,IAAIh4L,EAAE,SAASmB,GAAG,OAAOA,aAAaoE,GAAGuxJ,EAAE,SAAS31J,EAAE0D,EAAEvD,EAAEiF,GAAG,IAAIlF,EAAE,IAAIwD,EAAE,OAAOkB,EAAE,GAAG,iBAAiBlB,EAAE,CAAC,IAAIzD,EAAEyD,EAAE8vB,cAAc2jK,EAAEl3L,KAAKC,EAAED,GAAGE,IAAIg3L,EAAEl3L,GAAGE,EAAED,EAAED,GAAG,IAAIguD,EAAEvqD,EAAE0S,MAAM,KAAK,IAAIlW,GAAG+tD,EAAE5tD,OAAO,EAAE,OAAOL,EAAEiuD,EAAE,QAAQ,CAAC,IAAIroD,EAAElC,EAAE2O,KAAK8kL,EAAEvxL,GAAGlC,EAAExD,EAAE0F,EAAE,OAAOR,GAAGlF,IAAI0E,EAAE1E,GAAGA,IAAIkF,GAAGR,GAAG+2F,EAAE,SAAS37F,EAAE0D,GAAG,GAAG7E,EAAEmB,GAAG,OAAOA,EAAEmtB,QAAQ,IAAIhtB,EAAE,iBAAiBuD,EAAEA,EAAE,GAAG,OAAOvD,EAAE++F,KAAKl/F,EAAEG,EAAEixF,KAAKhxF,UAAU,IAAIgE,EAAEjE,IAAIg2J,EAAEhyJ,EAAEgyJ,EAAEnJ,EAAE2I,EAAEQ,EAAEj2J,EAAErB,EAAEs3J,EAAEx6D,EAAE,SAAS37F,EAAE0D,GAAG,OAAOi4F,EAAE37F,EAAE,CAACq3L,OAAO3zL,EAAE4zL,GAAGC,IAAI7zL,EAAE8zL,GAAGlrB,EAAE5oK,EAAE+zL,GAAGC,QAAQh0L,EAAEg0L,WAAW,IAAItzL,EAAE,WAAW,SAASyyL,EAAE72L,GAAGhB,KAAKs4L,GAAG3hC,EAAE31J,EAAEq3L,OAAO,MAAK,GAAIr4L,KAAK+a,MAAM/Z,GAAG,IAAImF,EAAE0xL,EAAE33L,UAAU,OAAOiG,EAAE4U,MAAM,SAAS/Z,GAAGhB,KAAK24L,GAAG,SAAS33L,GAAG,IAAI0D,EAAE1D,EAAEk/F,KAAK/+F,EAAEH,EAAEu3L,IAAI,GAAG,OAAO7zL,EAAE,OAAO,IAAI8pB,KAAKywJ,KAAK,GAAG9nB,EAAEloG,EAAEvqD,GAAG,OAAO,IAAI8pB,KAAK,GAAG9pB,aAAa8pB,KAAK,OAAO,IAAIA,KAAK9pB,GAAG,GAAG,iBAAiBA,IAAI,MAAM4K,KAAK5K,GAAG,CAAC,IAAI0B,EAAE1B,EAAE+qC,MAAMu+G,GAAG,GAAG5nJ,EAAE,CAAC,IAAIlF,EAAEkF,EAAE,GAAG,GAAG,EAAEnF,GAAGmF,EAAE,IAAI,KAAKwL,UAAU,EAAE,GAAG,OAAOzQ,EAAE,IAAIqtB,KAAKA,KAAKoqK,IAAIxyL,EAAE,GAAGlF,EAAEkF,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEnF,IAAI,IAAIutB,KAAKpoB,EAAE,GAAGlF,EAAEkF,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEA,EAAE,IAAI,EAAEnF,IAAI,OAAO,IAAIutB,KAAK9pB,GAAzX,CAA6X1D,GAAGhB,KAAKy4L,GAAGz3L,EAAEssK,GAAG,GAAGttK,KAAKu9H,QAAQp3H,EAAEo3H,KAAK,WAAW,IAAIv8H,EAAEhB,KAAK24L,GAAG34L,KAAK64L,GAAG73L,EAAE83L,cAAc94L,KAAK+4L,GAAG/3L,EAAEg4L,WAAWh5L,KAAKi5L,GAAGj4L,EAAEk4L,UAAUl5L,KAAKm5L,GAAGn4L,EAAEo4L,SAASp5L,KAAKq5L,GAAGr4L,EAAEs4L,WAAWt5L,KAAKu5L,GAAGv4L,EAAEw4L,aAAax5L,KAAKy5L,GAAGz4L,EAAE04L,aAAa15L,KAAK25L,IAAI34L,EAAE44L,mBAAmBzzL,EAAE0zL,OAAO,WAAW,OAAO1iC,GAAGhxJ,EAAE87G,QAAQ,WAAW,QAAQjiH,KAAK24L,GAAGpqL,aAAa4vJ,IAAIh4J,EAAE2zL,OAAO,SAAS94L,EAAE0D,GAAG,IAAIvD,EAAEw7F,EAAE37F,GAAG,OAAOhB,KAAK+5L,QAAQr1L,IAAIvD,GAAGA,GAAGnB,KAAKg6L,MAAMt1L,IAAIyB,EAAE8zL,QAAQ,SAASj5L,EAAE0D,GAAG,OAAOi4F,EAAE37F,GAAGhB,KAAK+5L,QAAQr1L,IAAIyB,EAAE+zL,SAAS,SAASl5L,EAAE0D,GAAG,OAAO1E,KAAKg6L,MAAMt1L,GAAGi4F,EAAE37F,IAAImF,EAAEg0L,GAAG,SAASn5L,EAAE0D,EAAEvD,GAAG,OAAOg2J,EAAEloG,EAAEjuD,GAAGhB,KAAK0E,GAAG1E,KAAK2oB,IAAIxnB,EAAEH,IAAImF,EAAEi0L,KAAK,WAAW,OAAOnrL,KAAKq2C,MAAMtlD,KAAKgzK,UAAU,MAAM7sK,EAAE6sK,QAAQ,WAAW,OAAOhzK,KAAK24L,GAAG5wJ,WAAW5hC,EAAE4zL,QAAQ,SAAS/4L,EAAE0D,GAAG,IAAIvD,EAAEnB,KAAKoG,IAAI+wJ,EAAEloG,EAAEvqD,IAAIA,EAAE82G,EAAE27C,EAAEt3J,EAAEmB,GAAGm9J,EAAE,SAASn9J,EAAE0D,GAAG,IAAIxD,EAAEi2J,EAAEx6D,EAAEx7F,EAAEq3L,GAAGhqK,KAAKoqK,IAAIz3L,EAAE03L,GAAGn0L,EAAE1D,GAAG,IAAIwtB,KAAKrtB,EAAE03L,GAAGn0L,EAAE1D,GAAGG,GAAG,OAAOiF,EAAElF,EAAEA,EAAE84L,MAAMpzL,IAAIonJ,EAAE,SAAShtJ,EAAE0D,GAAG,OAAOyyJ,EAAEx6D,EAAEx7F,EAAEk5L,SAASr5L,GAAG+C,MAAM5C,EAAEk5L,OAAO,MAAMj0L,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,MAAMmmC,MAAM7nC,IAAIvD,IAAI+D,EAAElF,KAAKm5L,GAAGtB,EAAE73L,KAAK+4L,GAAG5yL,EAAEnG,KAAKi5L,GAAG9zL,EAAE,OAAOnF,KAAKw4L,GAAG,MAAM,IAAI,OAAOh9E,GAAG,KAAKvnC,EAAE,OAAO7tE,EAAE+3J,EAAE,EAAE,GAAGA,EAAE,GAAG,IAAI,KAAKl5J,EAAE,OAAOmB,EAAE+3J,EAAE,EAAE05B,GAAG15B,EAAE,EAAE05B,EAAE,GAAG,KAAK3xL,EAAE,IAAIN,EAAE5F,KAAKs6L,UAAUC,WAAW,EAAEpC,GAAGjzL,EAAEU,EAAEV,EAAE,EAAEA,GAAGU,EAAE,OAAOu4J,EAAE/3J,EAAED,EAAEgyL,EAAEhyL,GAAG,EAAEgyL,GAAGN,GAAG,KAAKjxL,EAAE,KAAKjH,EAAE,OAAOquJ,EAAE7oJ,EAAE,QAAQ,GAAG,KAAK8pD,EAAE,OAAO++F,EAAE7oJ,EAAE,UAAU,GAAG,KAAKlE,EAAE,OAAO+sJ,EAAE7oJ,EAAE,UAAU,GAAG,KAAKjE,EAAE,OAAO8sJ,EAAE7oJ,EAAE,eAAe,GAAG,QAAQ,OAAOnF,KAAKmuB,UAAUhoB,EAAE6zL,MAAM,SAASh5L,GAAG,OAAOhB,KAAK+5L,QAAQ/4L,GAAE,IAAKmF,EAAEq0L,KAAK,SAASx5L,EAAE0D,GAAG,IAAIvD,EAAE+E,EAAEixJ,EAAEt3J,EAAEmB,GAAGw6G,EAAE,OAAOx7G,KAAKw4L,GAAG,MAAM,IAAIr6B,GAAGh9J,EAAE,GAAGA,EAAEyF,GAAG40G,EAAE,OAAOr6G,EAAExB,GAAG67G,EAAE,OAAOr6G,EAAE8D,GAAGu2G,EAAE,QAAQr6G,EAAE8yE,GAAGunC,EAAE,WAAWr6G,EAAE8tD,GAAGusD,EAAE,QAAQr6G,EAAEF,GAAGu6G,EAAE,UAAUr6G,EAAED,GAAGs6G,EAAE,UAAUr6G,EAAEiF,GAAGo1G,EAAE,eAAer6G,GAAG+E,GAAG8nJ,EAAE9nJ,IAAIU,EAAE5G,KAAKi5L,IAAIv0L,EAAE1E,KAAKm5L,IAAIz0L,EAAE,GAAGwB,IAAIjB,GAAGiB,IAAI+tE,EAAE,CAAC,IAAI/uE,EAAElF,KAAKmuB,QAAQxF,IAAIhpB,EAAE,GAAGuF,EAAEyzL,GAAGx6B,GAAGnQ,GAAG9oJ,EAAEq4H,OAAOv9H,KAAK24L,GAAGzzL,EAAEyjB,IAAIhpB,EAAEsP,KAAKs2C,IAAIvlD,KAAKi5L,GAAG/zL,EAAEu1L,gBAAgB9B,QAAQx6B,GAAGn+J,KAAK24L,GAAGx6B,GAAGnQ,GAAG,OAAOhuJ,KAAKu9H,OAAOv9H,MAAMmG,EAAEwiB,IAAI,SAAS3nB,EAAE0D,GAAG,OAAO1E,KAAKmuB,QAAQqsK,KAAKx5L,EAAE0D,IAAIyB,EAAEzE,IAAI,SAASV,GAAG,OAAOhB,KAAKm3J,EAAEt3J,EAAEmB,OAAOmF,EAAEg3B,IAAI,SAAS/2B,EAAEo1G,GAAG,IAAI77G,EAAEw+J,EAAEn+J,KAAKoG,EAAEgiC,OAAOhiC,GAAG,IAAI4nJ,EAAEmJ,EAAEt3J,EAAE27G,GAAGt2G,EAAE,SAASlE,GAAG,IAAI0D,EAAEi4F,EAAEwhE,GAAG,OAAOhH,EAAEx6D,EAAEj4F,EAAEw7F,KAAKx7F,EAAEw7F,OAAOjxF,KAAKmiB,MAAMpwB,EAAEoF,IAAI+3J,IAAI,GAAGnQ,IAAI/oJ,EAAE,OAAOjF,KAAK2oB,IAAI1jB,EAAEjF,KAAK+4L,GAAG3yL,GAAG,GAAG4nJ,IAAI/5E,EAAE,OAAOj0E,KAAK2oB,IAAIsrD,EAAEj0E,KAAK64L,GAAGzyL,GAAG,GAAG4nJ,IAAIpnJ,EAAE,OAAO1B,EAAE,GAAG,GAAG8oJ,IAAI9nJ,EAAE,OAAOhB,EAAE,GAAG,IAAI2yL,GAAGl4L,EAAE,GAAGA,EAAEsB,GAAGyD,EAAE/E,EAAEsvD,GAAG9tD,EAAExB,EAAEuB,GAAGF,EAAErB,GAAGquJ,IAAI,EAAE7nJ,EAAEnG,KAAK24L,GAAG5wJ,UAAU3hC,EAAEyxL,EAAE,OAAO1gC,EAAEx6D,EAAEx2F,EAAEnG,OAAOmG,EAAEu0L,SAAS,SAAS15L,EAAE0D,GAAG,OAAO1E,KAAKm9B,KAAK,EAAEn8B,EAAE0D,IAAIyB,EAAEw0L,OAAO,SAAS35L,GAAG,IAAI0D,EAAE1E,KAAKmB,EAAEnB,KAAKs6L,UAAU,IAAIt6L,KAAKiiH,UAAU,OAAO9gH,EAAEy5L,aAAaz8B,EAAE,IAAI/3J,EAAEpF,GAAG,uBAAuBE,EAAEi2J,EAAE4qB,EAAE/hL,MAAMiB,EAAEjB,KAAKq5L,GAAGpqI,EAAEjvD,KAAKu5L,GAAG3yL,EAAE5G,KAAK+4L,GAAG7yL,EAAE/E,EAAE22L,SAAS7yL,EAAE9D,EAAE42L,OAAOv8E,EAAE,SAASx6G,EAAEG,EAAED,EAAED,GAAG,OAAOD,IAAIA,EAAEG,IAAIH,EAAE0D,EAAE0B,KAAKlF,EAAEC,GAAGorC,MAAM,EAAEtrC,IAAIgzE,EAAE,SAASjzE,GAAG,OAAOm2J,EAAEl2J,EAAEA,EAAE,IAAI,GAAGD,EAAE,MAAMrB,EAAEwB,EAAE05L,UAAU,SAAS75L,EAAE0D,EAAEvD,GAAG,IAAIiF,EAAEpF,EAAE,GAAG,KAAK,KAAK,OAAOG,EAAEiF,EAAEouB,cAAcpuB,GAAG4nJ,EAAE,CAAC8sC,GAAGnqL,OAAO3Q,KAAK64L,IAAItsJ,OAAO,GAAGwuJ,KAAK/6L,KAAK64L,GAAGhB,EAAEjxL,EAAE,EAAEo0L,GAAG7jC,EAAEl2J,EAAE2F,EAAE,EAAE,EAAE,KAAKq0L,IAAIz/E,EAAEr6G,EAAE+5L,YAAYt0L,EAAE3B,EAAE,GAAGk2L,KAAK3/E,EAAEv2G,EAAE2B,GAAGuxL,EAAEn4L,KAAKi5L,GAAGmC,GAAGjkC,EAAEl2J,EAAEjB,KAAKi5L,GAAG,EAAE,KAAKt5L,EAAEgR,OAAO3Q,KAAKm5L,IAAIkC,GAAG7/E,EAAEr6G,EAAEm6L,YAAYt7L,KAAKm5L,GAAGjzL,EAAE,GAAGq1L,IAAI//E,EAAEr6G,EAAEq6L,cAAcx7L,KAAKm5L,GAAGjzL,EAAE,GAAGu1L,KAAKv1L,EAAElG,KAAKm5L,IAAIuC,EAAE/qL,OAAO1P,GAAG06L,GAAGxkC,EAAEl2J,EAAEA,EAAE,EAAE,KAAKu6G,EAAEvnC,EAAE,GAAG2nH,GAAG3nH,EAAE,GAAGrtE,EAAEjH,EAAEsB,EAAEguD,GAAE,GAAI8gH,EAAEpwK,EAAEsB,EAAEguD,GAAE,GAAI9oD,EAAEwK,OAAOs+C,GAAG4sI,GAAG1kC,EAAEl2J,EAAEguD,EAAE,EAAE,KAAKhuD,EAAE0P,OAAO3Q,KAAKy5L,IAAIqC,GAAG3kC,EAAEl2J,EAAEjB,KAAKy5L,GAAG,EAAE,KAAKsC,IAAI5kC,EAAEl2J,EAAEjB,KAAK25L,IAAI,EAAE,KAAKqC,EAAE96L,GAAG,OAAOkF,EAAE8K,QAAQhM,GAAE,SAAUlE,EAAE0D,GAAG,OAAOA,GAAGspJ,EAAEhtJ,IAAIE,EAAEgQ,QAAQ,IAAI,QAAQ/K,EAAE6xL,UAAU,WAAW,OAAO,IAAI/oL,KAAKmiB,MAAMpxB,KAAK24L,GAAGsD,oBAAoB,KAAK91L,EAAE+1L,KAAK,SAAS91L,EAAEzG,EAAEw+J,GAAG,IAAInQ,EAAE9oJ,EAAEiyJ,EAAEt3J,EAAEF,GAAGk4L,EAAEl7F,EAAEv2F,GAAGD,GAAG0xL,EAAEG,YAAYh4L,KAAKg4L,aAAatzL,EAAES,EAAEnF,KAAK63L,EAAEjyL,EAAEuxJ,EAAEhxJ,EAAEnG,KAAK63L,GAAG,OAAOjyL,GAAGooJ,EAAE,GAAGA,EAAE/5E,GAAGruE,EAAE,GAAGooJ,EAAE/oJ,GAAGW,EAAEooJ,EAAExyC,GAAG51G,EAAE,EAAEooJ,EAAE9nJ,IAAIf,EAAEgB,GAAG,OAAO6nJ,EAAEpnJ,IAAIzB,EAAEgB,GAAG,MAAM6nJ,EAAE/+F,GAAG9pD,EAAEhE,EAAE6sJ,EAAE/sJ,GAAGkE,EAAET,EAAEspJ,EAAE9sJ,GAAGiE,EAAEnE,EAAEgtJ,GAAG9oJ,IAAIC,EAAEg5J,EAAEv4J,EAAEuxJ,EAAEvwJ,EAAEhB,IAAIO,EAAEs0L,YAAY,WAAW,OAAOz6L,KAAKg6L,MAAM/0L,GAAGg0L,IAAI9yL,EAAEm0L,QAAQ,WAAW,OAAOnC,EAAEn4L,KAAKs4L,KAAKnyL,EAAEkyL,OAAO,SAASr3L,EAAE0D,GAAG,IAAI1D,EAAE,OAAOhB,KAAKs4L,GAAG,IAAIn3L,EAAEnB,KAAKmuB,QAAQ/nB,EAAEuwJ,EAAE31J,EAAE0D,GAAE,GAAI,OAAO0B,IAAIjF,EAAEm3L,GAAGlyL,GAAGjF,GAAGgF,EAAEgoB,MAAM,WAAW,OAAOgpI,EAAEx6D,EAAE38F,KAAK24L,GAAG34L,OAAOmG,EAAEk0L,OAAO,WAAW,OAAO,IAAI7rK,KAAKxuB,KAAKgzK,YAAY7sK,EAAE2pJ,OAAO,WAAW,OAAO9vJ,KAAKiiH,UAAUjiH,KAAKkwF,cAAc,MAAM/pF,EAAE+pF,YAAY,WAAW,OAAOlwF,KAAK24L,GAAGzoG,eAAe/pF,EAAEoI,SAAS,WAAW,OAAOvO,KAAK24L,GAAGlqK,eAAeopK,EAArwI,GAA0wI1nB,EAAE/qK,EAAElF,UAAU,OAAOy8F,EAAEz8F,UAAUiwK,EAAE,CAAC,CAAC,MAAM/pK,GAAG,CAAC,KAAKlF,GAAG,CAAC,KAAKD,GAAG,CAAC,KAAKguD,GAAG,CAAC,KAAKroD,GAAG,CAAC,KAAK3B,GAAG,CAAC,KAAKgvE,GAAG,CAAC,KAAKt0E,IAAImD,SAAQ,SAAU9B,GAAGmvK,EAAEnvK,EAAE,IAAI,SAAS0D,GAAG,OAAO1E,KAAKm6L,GAAGz1L,EAAE1D,EAAE,GAAGA,EAAE,QAAQ27F,EAAEwwD,OAAO,SAASnsJ,EAAE0D,GAAG,OAAO1D,EAAEm7L,KAAKn7L,EAAE0D,EAAEU,EAAEu3F,GAAG37F,EAAEm7L,IAAG,GAAIx/F,GAAGA,EAAE07F,OAAO1hC,EAAEh6D,EAAEy/F,QAAQv8L,EAAE88F,EAAEy9F,KAAK,SAASp5L,GAAG,OAAO27F,EAAE,IAAI37F,IAAI27F,EAAE0/F,GAAGlE,EAAEvyL,GAAG+2F,EAAE2/F,GAAGnE,EAAEx7F,EAAE98F,EAAE,GAAG88F,M,uBCAp6M,SAASj4F,EAAEkC,GAAwD2jJ,EAAOD,QAAQ1jJ,EAAE,EAAQ,QAA5F,CAAqP5G,GAAK,SAAU0E,GAAG,aAAa,SAASkC,EAAElC,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC63L,QAAQ73L,GAAG,IAAI1D,EAAE4F,EAAElC,GAAGU,EAAE,CAACiO,KAAK,QAAQykL,SAAS,2DAA2D1gL,MAAM,KAAK2gL,OAAO,wFAAwF3gL,MAAM,KAAKmjL,UAAU,EAAEiB,cAAc,8BAA8BpkL,MAAM,KAAK8jL,YAAY,kDAAkD9jL,MAAM,KAAKkkL,YAAY,uBAAuBlkL,MAAM,KAAKolL,QAAQ,SAAS93L,GAAG,OAAOA,GAAG+3L,QAAQ,CAAChsB,GAAG,SAASisB,IAAI,YAAYC,EAAE,aAAaC,GAAG,cAAcC,IAAI,qBAAqBC,KAAK,4BAA4BC,aAAa,CAACC,OAAO,QAAQC,KAAK,SAASh8L,EAAE,gBAAgBkF,EAAE,WAAW01L,GAAG,aAAargF,EAAE,UAAUogF,GAAG,WAAWj8L,EAAE,QAAQ07L,GAAG,UAAUxD,EAAE,UAAUmD,GAAG,YAAY91L,EAAE,SAASg4L,GAAG,aAAa,OAAOl8L,EAAEu7L,QAAQlE,OAAOjzL,EAAE,MAAK,GAAIA,M,uBCA3mC,SAASV,EAAEkC,GAAwD2jJ,EAAOD,QAAQ1jJ,EAAE,EAAQ,QAA5F,CAAqP5G,GAAK,SAAU0E,GAAG,aAAa,SAASkC,EAAElC,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC63L,QAAQ73L,GAAG,IAAIU,EAAEwB,EAAElC,GAAG1D,EAAE,CAACqS,KAAK,QAAQykL,SAAS,2DAA2D1gL,MAAM,KAAK2gL,OAAO,wFAAwF3gL,MAAM,KAAKokL,cAAc,8BAA8BpkL,MAAM,KAAK8jL,YAAY,kDAAkD9jL,MAAM,KAAKkkL,YAAY,uBAAuBlkL,MAAM,KAAKolL,QAAQ,SAAS93L,GAAG,OAAOA,GAAG+3L,QAAQ,CAAChsB,GAAG,SAASisB,IAAI,YAAYC,EAAE,aAAaC,GAAG,eAAeC,IAAI,sBAAsBC,KAAK,6BAA6BC,aAAa,CAACC,OAAO,QAAQC,KAAK,SAASh8L,EAAE,gBAAgBkF,EAAE,WAAW01L,GAAG,aAAargF,EAAE,UAAUogF,GAAG,WAAWj8L,EAAE,QAAQ07L,GAAG,UAAUxD,EAAE,UAAUmD,GAAG,YAAY91L,EAAE,SAASg4L,GAAG,aAAa,OAAO93L,EAAEm3L,QAAQlE,OAAOr3L,EAAE,MAAK,GAAIA,M,uBCAlmC,SAAS0D,EAAEkC,GAAwD2jJ,EAAOD,QAAQ1jJ,EAAE,EAAQ,QAA5F,CAAqP5G,GAAK,SAAU0E,GAAG,aAAa,SAASkC,EAAElC,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC63L,QAAQ73L,GAAG,IAAI1D,EAAE4F,EAAElC,GAAGU,EAAE,CAACiO,KAAK,QAAQykL,SAAS,2DAA2D1gL,MAAM,KAAKokL,cAAc,8BAA8BpkL,MAAM,KAAKkkL,YAAY,uBAAuBlkL,MAAM,KAAK2gL,OAAO,wFAAwF3gL,MAAM,KAAK8jL,YAAY,kDAAkD9jL,MAAM,KAAKmjL,UAAU,EAAE4C,UAAU,EAAEJ,aAAa,CAACC,OAAO,QAAQC,KAAK,SAASh8L,EAAE,gBAAgBkF,EAAE,WAAW01L,GAAG,aAAargF,EAAE,UAAUogF,GAAG,WAAWj8L,EAAE,QAAQ07L,GAAG,UAAUxD,EAAE,UAAUmD,GAAG,YAAY91L,EAAE,SAASg4L,GAAG,YAAYT,QAAQ,CAAChsB,GAAG,QAAQisB,IAAI,WAAWC,EAAE,aAAaC,GAAG,cAAcC,IAAI,oBAAoBC,KAAK,2BAA2BN,QAAQ,SAAS93L,GAAG,IAAIkC,EAAE,CAAC,KAAK,KAAK,KAAK,MAAM5F,EAAE0D,EAAE,IAAI,MAAM,IAAIA,GAAGkC,GAAG5F,EAAE,IAAI,KAAK4F,EAAE5F,IAAI4F,EAAE,IAAI,MAAM,OAAO5F,EAAEu7L,QAAQlE,OAAOjzL,EAAE,MAAK,GAAIA,M,uBCAzrC,SAASV,EAAEkC,GAAwD2jJ,EAAOD,QAAQ1jJ,EAAE,EAAQ,QAA5F,CAAqP5G,GAAK,SAAU0E,GAAG,aAAa,SAASkC,EAAElC,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,YAAYA,EAAEA,EAAE,CAAC63L,QAAQ73L,GAAG,IAAI1D,EAAE4F,EAAElC,GAAGvD,EAAE,CAACkS,KAAK,QAAQykL,SAAS,2DAA2D1gL,MAAM,KAAK2gL,OAAO,wFAAwF3gL,MAAM,KAAKmjL,UAAU,EAAEiB,cAAc,8BAA8BpkL,MAAM,KAAK8jL,YAAY,kDAAkD9jL,MAAM,KAAKkkL,YAAY,uBAAuBlkL,MAAM,KAAKolL,QAAQ,SAAS93L,GAAG,IAAIkC,EAAE,CAAC,KAAK,KAAK,KAAK,MAAM5F,EAAE0D,EAAE,IAAI,MAAM,IAAIA,GAAGkC,GAAG5F,EAAE,IAAI,KAAK4F,EAAE5F,IAAI4F,EAAE,IAAI,KAAK61L,QAAQ,CAAChsB,GAAG,SAASisB,IAAI,YAAYC,EAAE,aAAaC,GAAG,cAAcC,IAAI,qBAAqBC,KAAK,4BAA4BC,aAAa,CAACC,OAAO,QAAQC,KAAK,SAASh8L,EAAE,gBAAgBkF,EAAE,WAAW01L,GAAG,aAAargF,EAAE,UAAUogF,GAAG,WAAWj8L,EAAE,QAAQ07L,GAAG,UAAUxD,EAAE,UAAUmD,GAAG,YAAY91L,EAAE,SAASg4L,GAAG,aAAa,OAAOl8L,EAAEu7L,QAAQlE,OAAOl3L,EAAE,MAAK,GAAIA,M,mBCAjrC,SAASuD,EAAE1D,GAAwDupJ,EAAOD,QAAQtpJ,IAAlF,CAA6NhB,GAAK,WAAY,aAAa,OAAO,SAAS0E,EAAE1D,EAAEoF,GAAG,IAAIjF,EAAEH,EAAEd,UAAUe,EAAEE,EAAEw5L,OAAOv0L,EAAEi2L,GAAGG,QAAQ,SAAS93L,GAAG,IAAI1D,EAAE,CAAC,KAAK,KAAK,KAAK,MAAMoF,EAAE1B,EAAE,IAAI,MAAM,IAAIA,GAAG1D,GAAGoF,EAAE,IAAI,KAAKpF,EAAEoF,IAAIpF,EAAE,IAAI,KAAKG,EAAEw5L,OAAO,SAASj2L,GAAG,IAAI1D,EAAEhB,KAAKoG,EAAEpG,KAAKs6L,UAAU,IAAIt6L,KAAKiiH,UAAU,OAAOhhH,EAAEoiD,KAAKrjD,KAAPiB,CAAayD,GAAG,IAAIvD,EAAEnB,KAAK65L,SAASjzL,GAAGlC,GAAG,wBAAwBwM,QAAQ,+DAA8D,SAAUxM,GAAG,OAAOA,GAAG,IAAI,IAAI,OAAOuK,KAAKqD,MAAMtR,EAAE+3L,GAAG,GAAG,GAAG,IAAI,KAAK,OAAO3yL,EAAEo2L,QAAQx7L,EAAEi4L,IAAI,IAAI,OAAO,OAAOj4L,EAAEo8L,WAAW,IAAI,OAAO,OAAOp8L,EAAEq8L,cAAc,IAAI,KAAK,OAAOj3L,EAAEo2L,QAAQx7L,EAAEs8L,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,OAAOn8L,EAAEF,EAAED,EAAEs8L,OAAO,MAAM54L,EAAE,EAAE,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,OAAOvD,EAAEF,EAAED,EAAEu8L,UAAU,MAAM74L,EAAE,EAAE,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,OAAOvD,EAAEF,EAAE0P,OAAO,IAAI3P,EAAEq4L,GAAG,GAAGr4L,EAAEq4L,IAAI,MAAM30L,EAAE,EAAE,EAAE,KAAK,IAAI,IAAI,OAAOuK,KAAKq2C,MAAMtkD,EAAE23L,GAAG5wJ,UAAU,KAAK,IAAI,IAAI,OAAO/mC,EAAE23L,GAAG5wJ,UAAU,IAAI,IAAI,MAAM,IAAI/mC,EAAEw8L,aAAa,IAAI,IAAI,MAAM,MAAM,IAAIx8L,EAAEw8L,WAAW,QAAQ,IAAI,QAAQ,OAAO94L,MAAM,OAAOzD,EAAEoiD,KAAKrjD,KAAPiB,CAAa2F,S,mBCA5qC,SAASlC,EAAE1D,GAAwDupJ,EAAOD,QAAQtpJ,IAAlF,CAAgOhB,GAAK,WAAY,aAAa,IAAI0E,EAAE,CAACg4L,IAAI,YAAYjsB,GAAG,SAASksB,EAAE,aAAaC,GAAG,eAAeC,IAAI,sBAAsBC,KAAK,6BAA6B97L,EAAE,wFAAwFG,EAAE,OAAOiF,EAAE,QAAQlF,EAAE,oBAAoBgF,EAAE,GAAGjF,EAAE,SAASyD,GAAG,OAAOA,GAAGA,IAAIA,EAAE,GAAG,KAAK,MAAUkC,EAAE,SAASlC,GAAG,OAAO,SAAS1D,GAAGhB,KAAK0E,IAAI1D,IAAIiE,EAAE,CAAC,sBAAsB,SAASP,IAAI1E,KAAKy9L,OAAOz9L,KAAKy9L,KAAK,KAAKv1J,OAAO,SAASxjC,GAAG,IAAIA,EAAE,OAAO,EAAE,GAAG,MAAMA,EAAE,OAAO,EAAE,IAAI1D,EAAE0D,EAAE+qC,MAAM,gBAAgBtuC,EAAE,GAAGH,EAAE,KAAKA,EAAE,IAAI,GAAG,OAAO,IAAIG,EAAE,EAAE,MAAMH,EAAE,IAAIG,EAAEA,EAA/H,CAAkIuD,KAAK82G,EAAE,SAAS92G,GAAG,IAAI1D,EAAEkF,EAAExB,GAAG,OAAO1D,IAAIA,EAAEka,QAAQla,EAAEA,EAAEC,EAAEuF,OAAOxF,EAAEiE,KAAKgqD,EAAE,SAASvqD,EAAE1D,GAAG,IAAIG,EAAEiF,EAAEF,EAAE20L,SAAS,GAAGz0L,GAAG,IAAI,IAAIlF,EAAE,EAAEA,GAAG,GAAGA,GAAG,EAAE,GAAGwD,EAAEwW,QAAQ9U,EAAElF,EAAE,EAAEF,KAAK,EAAE,CAACG,EAAED,EAAE,GAAG,YAAYC,EAAEuD,KAAK1D,EAAE,KAAK,MAAM,OAAOG,GAAGxB,EAAE,CAACowK,EAAE,CAAC7uK,EAAE,SAASwD,GAAG1E,KAAK09L,UAAUzuI,EAAEvqD,GAAE,KAAMkC,EAAE,CAAC1F,EAAE,SAASwD,GAAG1E,KAAK09L,UAAUzuI,EAAEvqD,GAAE,KAAMiyJ,EAAE,CAAC,KAAK,SAASjyJ,GAAG1E,KAAK29L,aAAa,KAAKj5L,IAAIk5L,GAAG,CAACz8L,EAAE,SAASuD,GAAG1E,KAAK29L,aAAa,IAAIj5L,IAAIq3L,IAAI,CAAC,QAAQ,SAASr3L,GAAG1E,KAAK29L,cAAcj5L,IAAIzD,EAAE,CAACmF,EAAEQ,EAAE,YAAYk1L,GAAG,CAAC11L,EAAEQ,EAAE,YAAYT,EAAE,CAACC,EAAEQ,EAAE,YAAYi1L,GAAG,CAACz1L,EAAEQ,EAAE,YAAY80L,EAAE,CAACt1L,EAAEQ,EAAE,UAAU40G,EAAE,CAACp1G,EAAEQ,EAAE,UAAU+0L,GAAG,CAACv1L,EAAEQ,EAAE,UAAUg1L,GAAG,CAACx1L,EAAEQ,EAAE,UAAUuxL,EAAE,CAAC/xL,EAAEQ,EAAE,QAAQw0L,GAAG,CAACj6L,EAAEyF,EAAE,QAAQi3L,GAAG,CAAC38L,EAAE,SAASwD,GAAG,IAAI1D,EAAEkF,EAAEs2L,QAAQr7L,EAAEuD,EAAE+qC,MAAM,OAAO,GAAGzvC,KAAK89L,IAAI38L,EAAE,GAAGH,EAAE,IAAI,IAAIoF,EAAE,EAAEA,GAAG,GAAGA,GAAG,EAAEpF,EAAEoF,GAAG8K,QAAQ,SAAS,MAAMxM,IAAI1E,KAAK89L,IAAI13L,KAAKyxL,EAAE,CAACzxL,EAAEQ,EAAE,UAAUo0L,GAAG,CAAC75L,EAAEyF,EAAE,UAAUq0L,IAAI,CAAC/5L,EAAE,SAASwD,GAAG,IAAI1D,EAAEw6G,EAAE,UAAUr6G,GAAGq6G,EAAE,gBAAgBx6G,EAAE+a,KAAI,SAAUrX,GAAG,OAAOA,EAAE6nC,MAAM,EAAE,OAAOrxB,QAAQxW,GAAG,EAAE,GAAGvD,EAAE,EAAE,MAAM,IAAIP,MAAMZ,KAAKk4L,MAAM/2L,EAAE,IAAIA,IAAIg6L,KAAK,CAACj6L,EAAE,SAASwD,GAAG,IAAI1D,EAAEw6G,EAAE,UAAUtgG,QAAQxW,GAAG,EAAE,GAAG1D,EAAE,EAAE,MAAM,IAAIJ,MAAMZ,KAAKk4L,MAAMl3L,EAAE,IAAIA,IAAI+8L,EAAE,CAAC,WAAWn3L,EAAE,SAASk0L,GAAG,CAAC35L,EAAE,SAASuD,GAAG1E,KAAKi4L,KAAKh3L,EAAEyD,KAAKq2L,KAAK,CAAC,QAAQn0L,EAAE,SAASo1L,EAAE/2L,EAAE+4L,GAAG/4L,GAAG,SAASgvE,EAAE9yE,GAAG,IAAIiF,EAAElF,EAAEkF,EAAEjF,EAAED,EAAEgF,GAAGA,EAAEu2L,QAAQ,IAAI,IAAIx7L,GAAGE,EAAEiF,EAAE8K,QAAQ,qCAAoC,SAAUlQ,EAAEG,EAAEiF,GAAG,IAAIF,EAAEE,GAAGA,EAAE4oD,cAAc,OAAO7tD,GAAGD,EAAEkF,IAAI1B,EAAE0B,IAAIlF,EAAEgF,GAAGgL,QAAQ,kCAAiC,SAAUxM,EAAE1D,EAAEG,GAAG,OAAOH,GAAGG,EAAEorC,MAAM,UAAUkD,MAAMzuC,GAAG4F,EAAE3F,EAAEI,OAAO4D,EAAE,EAAEA,EAAE2B,EAAE3B,GAAG,EAAE,CAAC,IAAIu2G,EAAEv6G,EAAEgE,GAAGgqD,EAAEtvD,EAAE67G,GAAGvnC,EAAEhlB,GAAGA,EAAE,GAAG++F,EAAE/+F,GAAGA,EAAE,GAAGhuD,EAAEgE,GAAG+oJ,EAAE,CAAC1xI,MAAM23D,EAAEi+E,OAAOlE,GAAGxyC,EAAEtqG,QAAQ,WAAW,IAAI,OAAO,SAASxM,GAAG,IAAI,IAAI1D,EAAE,GAAGG,EAAE,EAAEiF,EAAE,EAAEjF,EAAEyF,EAAEzF,GAAG,EAAE,CAAC,IAAID,EAAED,EAAEE,GAAG,GAAG,iBAAiBD,EAAEkF,GAAGlF,EAAEG,WAAW,CAAC,IAAI6E,EAAEhF,EAAEob,MAAMrX,EAAE/D,EAAEgxJ,OAAO12C,EAAE92G,EAAE6nC,MAAMnmC,GAAG6oD,EAAE/oD,EAAEmU,KAAKmhG,GAAG,GAAGv2G,EAAEtE,KAAKK,EAAEiuD,GAAGvqD,EAAEA,EAAEwM,QAAQ+9C,EAAE,KAAK,OAAO,SAASvqD,GAAG,IAAI1D,EAAE0D,EAAEg5L,UAAU,QAAG,IAAS18L,EAAE,CAAC,IAAIG,EAAEuD,EAAEu5L,MAAMj9L,EAAEG,EAAE,KAAKuD,EAAEu5L,OAAO,IAAI,KAAK98L,IAAIuD,EAAEu5L,MAAM,UAAUv5L,EAAEg5L,WAA9G,CAA0H18L,GAAGA,GAAG,OAAO,SAAS0D,EAAE1D,EAAEG,GAAGA,EAAEtB,EAAEq+L,mBAAkB,EAAGx5L,GAAGA,EAAEy5L,oBAAoBl9L,EAAEyD,EAAEy5L,mBAAmB,IAAI/3L,EAAEpF,EAAEd,UAAUgB,EAAEkF,EAAE2U,MAAM3U,EAAE2U,MAAM,SAASrW,GAAG,IAAI1D,EAAE0D,EAAEw7F,KAAK95F,EAAE1B,EAAE6zL,IAAIt3L,EAAEyD,EAAE0tF,KAAKpyF,KAAKw4L,GAAGpyL,EAAE,IAAIQ,EAAE3F,EAAE,GAAG,GAAG,iBAAiB2F,EAAE,CAAC,IAAI3B,GAAE,IAAKhE,EAAE,GAAGu6G,GAAE,IAAKv6G,EAAE,GAAGguD,EAAEhqD,GAAGu2G,EAAE77G,EAAEsB,EAAE,GAAGu6G,IAAI77G,EAAEsB,EAAE,IAAIiF,EAAElG,KAAKs6L,WAAWr1L,GAAGtF,IAAIuG,EAAE/E,EAAEm7L,GAAG38L,IAAIK,KAAK24L,GAAG,SAASj0L,EAAE1D,EAAEG,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK+Z,QAAQla,IAAI,EAAE,OAAO,IAAIwtB,MAAM,MAAMxtB,EAAE,IAAI,GAAG0D,GAAG,IAAI0B,EAAE6tE,EAAEjzE,EAAFizE,CAAKvvE,GAAGxD,EAAEkF,EAAE6xL,KAAK/xL,EAAEE,EAAE8xL,MAAMj3L,EAAEmF,EAAE03L,IAAIl3L,EAAER,EAAE63L,MAAMh5L,EAAEmB,EAAEg4L,QAAQ5iF,EAAEp1G,EAAEi4L,QAAQpvI,EAAE7oD,EAAEu3L,aAAah+L,EAAEyG,EAAEq3L,KAAKzvC,EAAE,IAAIx/H,KAAKroB,EAAElF,IAAIC,GAAGgF,EAAE,EAAE8nJ,EAAEkrC,WAAWrB,EAAE32L,GAAG8sJ,EAAE8qC,cAAciF,EAAE,EAAE78L,IAAIgF,IAAI63L,EAAE73L,EAAE,EAAEA,EAAE,EAAE8nJ,EAAEgrC,YAAY,IAAIn5L,EAAE+G,GAAG,EAAEhB,EAAEX,GAAG,EAAEkzL,EAAE38E,GAAG,EAAEr2G,EAAE8pD,GAAG,EAAE,OAAOtvD,EAAE,IAAI6uB,KAAKA,KAAKoqK,IAAIf,EAAEkG,EAAE53L,EAAEtG,EAAE+F,EAAEuyL,EAAEhzL,EAAE,GAAGxF,EAAEuoC,OAAO,MAAM/mC,EAAE,IAAIqtB,KAAKA,KAAKoqK,IAAIf,EAAEkG,EAAE53L,EAAEtG,EAAE+F,EAAEuyL,EAAEhzL,IAAI,IAAIqpB,KAAKqpK,EAAEkG,EAAE53L,EAAEtG,EAAE+F,EAAEuyL,EAAEhzL,GAAG,MAAMT,GAAG,OAAO,IAAI8pB,KAAK,KAArc,CAA2cxtB,EAAE4F,EAAER,GAAGpG,KAAKu9H,OAAO59H,IAAG,IAAKA,IAAIK,KAAKs4L,GAAGt4L,KAAKq4L,OAAO14L,GAAG24L,IAAIrpI,GAAGjuD,GAAGhB,KAAK26L,OAAO/zL,KAAK5G,KAAK24L,GAAG,IAAInqK,KAAK,KAAKtoB,EAAE,QAAQ,GAAGU,aAAalH,MAAM,IAAI,IAAIsuJ,EAAEpnJ,EAAEvF,OAAO8E,EAAE,EAAEA,GAAG6nJ,EAAE7nJ,GAAG,EAAE,CAAClF,EAAE,GAAG2F,EAAET,EAAE,GAAG,IAAI0xL,EAAE12L,EAAE4C,MAAM/D,KAAKiB,GAAG,GAAG42L,EAAE51E,UAAU,CAACjiH,KAAK24L,GAAGd,EAAEc,GAAG34L,KAAKs4L,GAAGT,EAAES,GAAGt4L,KAAKu9H,OAAO,MAAMp3H,IAAI6nJ,IAAIhuJ,KAAK24L,GAAG,IAAInqK,KAAK,UAAUttB,EAAEP,KAAKX,KAAK0E,S,kBCAtpH,SAAS1D,EAAEC,GAAwDspJ,EAAOD,QAAQrpJ,IAAlF,CAAuNjB,GAAK,WAAY,aAAa,IAAIgB,EAAEC,EAAEE,EAAE,IAAID,EAAE,IAAIwD,EAAE,KAAK0B,EAAE,MAAMF,EAAE,sFAAsF+oD,EAAE,QAAQusD,EAAE,OAAO50G,EAAE,sKAAsKjH,EAAE,CAAC2+L,MAAMrvI,EAAE8oI,OAAOv8E,EAAEv+B,KAAK72E,EAAE63L,MAAMv5L,EAAE05L,QAAQl9L,EAAEm9L,QAAQl9L,EAAEw8L,aAAa,EAAEY,MAAM,QAAQtqH,EAAE,SAASjzE,GAAG,OAAOA,aAAanB,GAAGoF,EAAE,SAASjE,EAAEC,EAAEE,GAAG,OAAO,IAAItB,EAAEmB,EAAEG,EAAEF,EAAEu9L,KAAKr4L,EAAE,SAASnF,GAAG,OAAOC,EAAEpB,EAAEmB,GAAG,KAAKgtJ,EAAE,SAAShtJ,GAAG,OAAOA,EAAE,GAAGm9J,EAAE,SAASn9J,GAAG,OAAOgtJ,EAAEhtJ,GAAGiO,KAAKqD,KAAKtR,GAAGiO,KAAKq2C,MAAMtkD,IAAIkE,EAAE,SAASlE,GAAG,OAAOiO,KAAKgyF,IAAIjgG,IAAImE,EAAE,SAASnE,EAAEC,GAAG,OAAOD,EAAEgtJ,EAAEhtJ,GAAG,CAACy9L,UAAS,EAAG9D,OAAO,GAAGz1L,EAAElE,GAAGC,GAAG,CAACw9L,UAAS,EAAG9D,OAAO,GAAG35L,EAAEC,GAAG,CAACw9L,UAAS,EAAG9D,OAAO,KAAK96L,EAAE,WAAW,SAASmuJ,EAAEhtJ,EAAEC,EAAEE,GAAG,IAAID,EAAElB,KAAK,GAAGA,KAAK24L,GAAG,GAAG34L,KAAKw+L,GAAGr9L,OAAE,IAASH,IAAIhB,KAAK25L,IAAI,EAAE35L,KAAK0+L,yBAAyBz9L,EAAE,OAAOgE,EAAEjE,EAAErB,EAAEwG,EAAElF,IAAIjB,MAAM,GAAG,iBAAiBgB,EAAE,OAAOhB,KAAK25L,IAAI34L,EAAEhB,KAAK0+L,wBAAwB1+L,KAAK,GAAG,iBAAiBgB,EAAE,OAAOzB,OAAOsD,KAAK7B,GAAG8B,SAAQ,SAAU7B,GAAGC,EAAEy3L,GAAGxyL,EAAElF,IAAID,EAAEC,MAAMjB,KAAK2+L,kBAAkB3+L,KAAK,GAAG,iBAAiBgB,EAAE,CAAC,IAAI0D,EAAE1D,EAAEyuC,MAAM7oC,GAAG,GAAGlC,EAAE,CAAC,IAAI0B,EAAE1B,EAAE6nC,MAAM,GAAGxwB,KAAI,SAAU/a,GAAG,OAAO,MAAMA,EAAEonC,OAAOpnC,GAAG,KAAK,OAAOhB,KAAK24L,GAAG2F,MAAMl4L,EAAE,GAAGpG,KAAK24L,GAAGZ,OAAO3xL,EAAE,GAAGpG,KAAK24L,GAAG4F,MAAMn4L,EAAE,GAAGpG,KAAK24L,GAAG17G,KAAK72E,EAAE,GAAGpG,KAAK24L,GAAGsF,MAAM73L,EAAE,GAAGpG,KAAK24L,GAAGyF,QAAQh4L,EAAE,GAAGpG,KAAK24L,GAAG0F,QAAQj4L,EAAE,GAAGpG,KAAK2+L,kBAAkB3+L,MAAM,OAAOA,KAAK,IAAIkF,EAAE8oJ,EAAE9tJ,UAAU,OAAOgF,EAAEy5L,gBAAgB,WAAW,IAAI39L,EAAEhB,KAAKA,KAAK25L,IAAIp6L,OAAOsD,KAAK7C,KAAK24L,IAAI5mK,QAAO,SAAU9wB,EAAEE,GAAG,OAAOF,GAAGD,EAAE23L,GAAGx3L,IAAI,GAAGxB,EAAEwB,KAAK,IAAI+D,EAAEw5L,sBAAsB,WAAW,IAAI19L,EAAEhB,KAAK25L,IAAI35L,KAAK24L,GAAG2F,MAAMngC,EAAEn9J,EAAEiuD,GAAGjuD,GAAGiuD,EAAEjvD,KAAK24L,GAAGZ,OAAO55B,EAAEn9J,EAAEw6G,GAAGx6G,GAAGw6G,EAAEx7G,KAAK24L,GAAG17G,KAAKkhF,EAAEn9J,EAAEoF,GAAGpF,GAAGoF,EAAEpG,KAAK24L,GAAGsF,MAAM9/B,EAAEn9J,EAAE0D,GAAG1D,GAAG0D,EAAE1E,KAAK24L,GAAGyF,QAAQjgC,EAAEn9J,EAAEE,GAAGF,GAAGE,EAAElB,KAAK24L,GAAG0F,QAAQlgC,EAAEn9J,EAAEG,GAAGH,GAAGG,EAAEnB,KAAK24L,GAAGgF,aAAa38L,GAAGkE,EAAEgrF,YAAY,WAAW,IAAIlvF,EAAEmE,EAAEnF,KAAK24L,GAAG2F,MAAM,KAAKr9L,EAAEkE,EAAEnF,KAAK24L,GAAGZ,OAAO,KAAK52L,GAAGnB,KAAK24L,GAAG17G,MAAM,EAAEj9E,KAAK24L,GAAG4F,QAAQp9L,GAAG,EAAEnB,KAAK24L,GAAG4F,OAAO,IAAIr9L,EAAEiE,EAAEhE,EAAE,KAAKuD,EAAES,EAAEnF,KAAK24L,GAAGsF,MAAM,KAAK73L,EAAEjB,EAAEnF,KAAK24L,GAAGyF,QAAQ,KAAKl4L,EAAElG,KAAK24L,GAAG0F,SAAS,EAAEr+L,KAAK24L,GAAGgF,eAAez3L,GAAGlG,KAAK24L,GAAGgF,aAAa,KAAK,IAAI1uI,EAAE9pD,EAAEe,EAAE,KAAKs1G,EAAEx6G,EAAEy9L,UAAUx9L,EAAEw9L,UAAUv9L,EAAEu9L,UAAU/5L,EAAE+5L,UAAUr4L,EAAEq4L,UAAUxvI,EAAEwvI,SAAS73L,EAAElC,EAAEi2L,QAAQv0L,EAAEu0L,QAAQ1rI,EAAE0rI,OAAO,IAAI,GAAGh7L,GAAG67G,EAAE,IAAI,IAAI,IAAIx6G,EAAE25L,OAAO15L,EAAE05L,OAAOz5L,EAAEy5L,OAAO/zL,EAAElC,EAAEi2L,OAAOv0L,EAAEu0L,OAAO1rI,EAAE0rI,OAAO,MAAM,MAAMh7L,GAAG,OAAOA,EAAE,MAAMA,GAAGuF,EAAE4qJ,OAAO,WAAW,OAAO9vJ,KAAKkwF,eAAehrF,EAAEy1L,OAAO,SAAS35L,GAAG,IAAIG,EAAEH,GAAG,sBAAsBE,EAAE,CAAC68L,EAAE/9L,KAAK24L,GAAG2F,MAAMxD,GAAG75L,EAAEA,EAAEjB,KAAK24L,GAAG2F,MAAM,EAAE,KAAKvD,KAAK95L,EAAEA,EAAEjB,KAAK24L,GAAG2F,MAAM,EAAE,KAAKzG,EAAE73L,KAAK24L,GAAGZ,OAAOiD,GAAG/5L,EAAEA,EAAEjB,KAAK24L,GAAGZ,OAAO,EAAE,KAAKI,EAAEn4L,KAAK24L,GAAG17G,KAAKm+G,GAAGn6L,EAAEA,EAAEjB,KAAK24L,GAAG17G,KAAK,EAAE,KAAKy+G,EAAE17L,KAAK24L,GAAGsF,MAAMtC,GAAG16L,EAAEA,EAAEjB,KAAK24L,GAAGsF,MAAM,EAAE,KAAK93L,EAAEnG,KAAK24L,GAAGyF,QAAQvC,GAAG56L,EAAEA,EAAEjB,KAAK24L,GAAGyF,QAAQ,EAAE,KAAKn9L,EAAEjB,KAAK24L,GAAG0F,QAAQvC,GAAG76L,EAAEA,EAAEjB,KAAK24L,GAAG0F,QAAQ,EAAE,KAAKtC,IAAI96L,EAAEA,EAAEjB,KAAK24L,GAAGgF,aAAa,EAAE,MAAM,OAAOx8L,EAAE+P,QAAQhL,GAAE,SAAUlF,EAAEC,GAAG,OAAOA,GAAG0P,OAAOzP,EAAEF,QAAQkE,EAAE05L,GAAG,SAAS59L,GAAG,OAAOhB,KAAK25L,IAAIh6L,EAAEwG,EAAEnF,KAAKkE,EAAExD,IAAI,SAASV,GAAG,IAAIC,EAAEjB,KAAK25L,IAAIx4L,EAAEgF,EAAEnF,GAAG,MAAM,iBAAiBG,EAAEF,GAAG,IAAIA,EAAE,UAAUE,EAAEg9J,EAAEl9J,EAAEtB,EAAEwB,IAAInB,KAAK24L,GAAGx3L,GAAG,IAAIF,EAAE,EAAEA,GAAGiE,EAAEi4B,IAAI,SAASn8B,EAAEC,EAAEE,GAAG,IAAID,EAAE,OAAOA,EAAED,EAAED,EAAErB,EAAEwG,EAAElF,IAAIgzE,EAAEjzE,GAAGA,EAAE24L,IAAI10L,EAAEjE,EAAEhB,MAAM25L,IAAI10L,EAAEjF,KAAK25L,IAAIz4L,GAAGC,GAAG,EAAE,GAAGnB,OAAOkF,EAAEw1L,SAAS,SAAS15L,EAAEC,GAAG,OAAOjB,KAAKm9B,IAAIn8B,EAAEC,GAAE,IAAKiE,EAAEmzL,OAAO,SAASr3L,GAAG,IAAIC,EAAEjB,KAAKmuB,QAAQ,OAAOltB,EAAEu9L,GAAGx9L,EAAEC,GAAGiE,EAAEipB,MAAM,WAAW,OAAOlpB,EAAEjF,KAAK25L,IAAI35L,OAAOkF,EAAE25L,SAAS,SAAS59L,GAAG,OAAOD,IAAIm8B,IAAIn9B,KAAK25L,IAAI,MAAMtB,OAAOr4L,KAAKw+L,IAAIM,SAAS79L,IAAIiE,EAAEy4L,aAAa,WAAW,OAAO39L,KAAK0B,IAAI,iBAAiBwD,EAAE65L,eAAe,WAAW,OAAO/+L,KAAK4+L,GAAG,iBAAiB15L,EAAEm5L,QAAQ,WAAW,OAAOr+L,KAAK0B,IAAI,YAAYwD,EAAE85L,UAAU,WAAW,OAAOh/L,KAAK4+L,GAAG,YAAY15L,EAAEk5L,QAAQ,WAAW,OAAOp+L,KAAK0B,IAAI,YAAYwD,EAAE+5L,UAAU,WAAW,OAAOj/L,KAAK4+L,GAAG,YAAY15L,EAAE+4L,MAAM,WAAW,OAAOj+L,KAAK0B,IAAI,UAAUwD,EAAEg6L,QAAQ,WAAW,OAAOl/L,KAAK4+L,GAAG,UAAU15L,EAAE+3E,KAAK,WAAW,OAAOj9E,KAAK0B,IAAI,SAASwD,EAAEi6L,OAAO,WAAW,OAAOn/L,KAAK4+L,GAAG,SAAS15L,EAAEq5L,MAAM,WAAW,OAAOv+L,KAAK0B,IAAI,UAAUwD,EAAEk6L,QAAQ,WAAW,OAAOp/L,KAAK4+L,GAAG,UAAU15L,EAAE6yL,OAAO,WAAW,OAAO/3L,KAAK0B,IAAI,WAAWwD,EAAEm6L,SAAS,WAAW,OAAOr/L,KAAK4+L,GAAG,WAAW15L,EAAEo5L,MAAM,WAAW,OAAOt+L,KAAK0B,IAAI,UAAUwD,EAAEo6L,QAAQ,WAAW,OAAOt/L,KAAK4+L,GAAG,UAAU5wC,EAA/sG,GAAotG,OAAO,SAAS7sJ,EAAED,EAAEwD,GAAG1D,EAAE0D,EAAEzD,EAAEyD,IAAIm1L,SAASn1L,EAAE4pE,SAAS,SAASttE,EAAEC,GAAG,IAAIE,EAAEuD,EAAE2zL,SAAS,OAAOpzL,EAAEjE,EAAE,CAACw9L,GAAGr9L,GAAGF,IAAIyD,EAAE66L,WAAWtrH,EAAE,IAAI7tE,EAAElF,EAAEhB,UAAUi9B,IAAIj3B,EAAEhF,EAAEhB,UAAUw6L,SAASx5L,EAAEhB,UAAUi9B,IAAI,SAASn8B,EAAEC,GAAG,OAAOgzE,EAAEjzE,KAAKA,EAAEA,EAAE+9L,kBAAkB34L,EAAEi9C,KAAKrjD,KAAPoG,CAAapF,EAAEC,IAAIC,EAAEhB,UAAUw6L,SAAS,SAAS15L,EAAEC,GAAG,OAAOgzE,EAAEjzE,KAAKA,EAAEA,EAAE+9L,kBAAkB74L,EAAEm9C,KAAKrjD,KAAPkG,CAAalF,EAAEC,S,mBCA1/I,SAASyD,EAAExD,GAAwDqpJ,EAAOD,QAAQppJ,IAAlF,CAAwNlB,GAAK,WAAY,aAAa,OAAO,SAAS0E,EAAExD,EAAEF,GAAGE,EAAEhB,UAAUs/L,UAAU,SAAS96L,EAAExD,EAAED,EAAEgE,GAAG,IAAI9D,EAAEH,EAAE0D,GAAGwB,EAAElF,EAAEE,GAAGkF,EAAE,OAAOnB,EAAEA,GAAG,MAAM,GAAGgqD,EAAE,MAAMhqD,EAAE,GAAG,OAAOmB,EAAEpG,KAAKi6L,QAAQ94L,EAAEF,IAAIjB,KAAKk6L,SAAS/4L,EAAEF,MAAMguD,EAAEjvD,KAAKk6L,SAASh0L,EAAEjF,IAAIjB,KAAKi6L,QAAQ/zL,EAAEjF,MAAMmF,EAAEpG,KAAKk6L,SAAS/4L,EAAEF,IAAIjB,KAAKi6L,QAAQ94L,EAAEF,MAAMguD,EAAEjvD,KAAKi6L,QAAQ/zL,EAAEjF,IAAIjB,KAAKk6L,SAASh0L,EAAEjF,U,mBCAxhB,SAASyD,EAAExD,GAAwDqpJ,EAAOD,QAAQppJ,IAAlF,CAA6NlB,GAAK,WAAY,aAAa,OAAO,SAAS0E,EAAExD,GAAGA,EAAEhB,UAAUu/L,eAAe,SAAS/6L,EAAExD,GAAG,OAAOlB,KAAK85L,OAAOp1L,EAAExD,IAAIlB,KAAKk6L,SAASx1L,EAAExD,S,kBCAlW,SAASwD,EAAEwB,GAAwDqkJ,EAAOD,QAAQpkJ,IAAlF,CAAsNlG,GAAK,WAAY,aAAa,OAAO,SAAS0E,EAAEwB,EAAElF,GAAGkF,EAAEhG,UAAUw/L,QAAQ,WAAW,IAAIh7L,EAAE,aAAawB,EAAElF,IAAI,OAAOhB,KAAK26L,OAAOj2L,KAAKwB,EAAEy0L,OAAOj2L,S,mBCApW,SAASwB,EAAExB,GAAwD6lJ,EAAOD,QAAQ5lJ,IAAlF,CAAyN1E,GAAK,WAAY,aAAa,OAAO,SAASkG,EAAExB,EAAE1D,GAAG0D,EAAExE,UAAUy/L,WAAW,WAAW,IAAIz5L,EAAE,aAAaxB,EAAE1D,IAAIm8B,IAAI,EAAE,OAAO,OAAOn9B,KAAK26L,OAAOz0L,KAAKxB,EAAEi2L,OAAOz0L,S,mBCAvX,SAASxB,EAAE1D,GAAwDupJ,EAAOD,QAAQtpJ,IAAlF,CAA0NhB,GAAK,WAAY,aAAa,OAAO,SAAS0E,EAAE1D,EAAEG,GAAGH,EAAEd,UAAU0/L,YAAY,WAAW,IAAIl7L,EAAE,aAAa1D,EAAEG,IAAIu5L,SAAS,EAAE,OAAO,OAAO16L,KAAK26L,OAAOj2L,KAAK1D,EAAE25L,OAAOj2L,S,mBCA9X,SAASA,EAAE1D,GAAwDupJ,EAAOD,QAAQtpJ,IAAlF,CAAsNhB,GAAK,WAAY,aAAa,IAAI0E,EAAE,MAAM,OAAO,SAAS1D,EAAEE,EAAED,GAAG,IAAI2F,EAAE,SAAS5F,GAAG,OAAOA,EAAEm8B,IAAI,EAAEn8B,EAAE6+L,aAAan7L,IAAI/E,EAAEuB,EAAEhB,UAAUP,EAAE09L,YAAY,WAAW,OAAOz2L,EAAE5G,MAAMi4L,QAAQt4L,EAAE49L,QAAQ,SAASv8L,GAAG,IAAIhB,KAAK65L,SAAS5qI,EAAEjuD,GAAG,OAAOhB,KAAKm9B,IAAI,GAAGn8B,EAAEhB,KAAKu9L,WAAW74L,GAAG,IAAIxD,EAAEvB,EAAEwB,EAAE+E,EAAEE,EAAEQ,EAAE5G,MAAMivD,GAAG/tD,EAAElB,KAAKq9L,cAAc19L,EAAEK,KAAKw4L,GAAGr3L,GAAGxB,EAAEsB,EAAEs3L,IAAIt3L,KAAKg3L,KAAK/2L,GAAG64L,QAAQ,QAAQ7zL,EAAE,EAAE/E,EAAE0+L,aAAa1+L,EAAE0+L,aAAa,IAAI35L,GAAG,GAAG/E,EAAEg8B,IAAIj3B,EAAExB,IAAI,OAAO0B,EAAE81L,KAAKjtI,EAAE,QAAQ,GAAGtvD,EAAEkgM,WAAW,SAASn7L,GAAG,OAAO1E,KAAK65L,SAAS5qI,EAAEvqD,GAAG1E,KAAK89L,OAAO,EAAE99L,KAAK89L,IAAI99L,KAAK89L,MAAM,EAAEp5L,EAAEA,EAAE,IAAI,IAAIvD,EAAExB,EAAEo6L,QAAQp6L,EAAEo6L,QAAQ,SAASr1L,EAAE1D,GAAG,IAAIE,EAAElB,KAAK65L,SAAS54L,IAAIC,EAAE+tD,EAAEjuD,IAAIA,EAAE,MAAM,YAAYE,EAAErB,EAAE6E,GAAGzD,EAAEjB,KAAKkgG,KAAKlgG,KAAKkgG,QAAQlgG,KAAK6/L,aAAa,IAAI9F,QAAQ,OAAO/5L,KAAKkgG,KAAKlgG,KAAKkgG,OAAO,GAAGlgG,KAAK6/L,aAAa,GAAG,GAAG7F,MAAM,OAAO74L,EAAEkiD,KAAKrjD,KAAPmB,CAAauD,EAAE1D,S,mBCA99B,SAASG,EAAEuD,GAAwD6lJ,EAAOD,QAAQ5lJ,IAAlF,CAAyN1E,GAAK,WAAY,aAAa,OAAO,SAASmB,EAAEuD,EAAE1D,GAAG,IAAIoF,EAAE1B,EAAExE,UAAUgG,EAAE,SAAS/E,GAAG,OAAOA,IAAIA,EAAE+Z,QAAQ/Z,EAAEA,EAAEF,IAAIguD,EAAE,SAAS9tD,EAAEuD,EAAE1D,EAAEoF,EAAE6oD,GAAG,IAAI/tD,EAAEC,EAAEkS,KAAKlS,EAAEA,EAAEm5L,UAAU1zL,EAAEV,EAAEhF,EAAEwD,IAAIzD,EAAEiF,EAAEhF,EAAEF,IAAIiE,EAAE2B,GAAG3F,EAAE8a,KAAI,SAAU5a,GAAG,OAAOA,EAAEorC,MAAM,EAAEnmC,MAAM,IAAI6oD,EAAE,OAAOhqD,EAAE,IAAItF,EAAEuB,EAAEq5L,UAAU,OAAOt1L,EAAE8W,KAAI,SAAU5a,EAAEuD,GAAG,OAAOO,GAAGP,GAAG/E,GAAG,IAAI,OAAOuB,EAAE,WAAW,OAAOF,EAAEs7L,GAAGt7L,EAAEq3L,WAAWzxL,EAAE,SAASzF,EAAEuD,GAAG,OAAOvD,EAAEs7L,QAAQ/3L,IAAI,SAASvD,GAAG,OAAOA,EAAE+P,QAAQ,kCAAiC,SAAU/P,EAAEuD,EAAE1D,GAAG,OAAO0D,GAAG1D,EAAEurC,MAAM,MAAjG,CAAwGprC,EAAEs7L,QAAQ/3L,EAAEsqD,iBAAiB/tD,EAAE,WAAW,IAAIE,EAAEnB,KAAK,MAAM,CAAC+3L,OAAO,SAASrzL,GAAG,OAAOA,EAAEA,EAAEi2L,OAAO,QAAQ1rI,EAAE9tD,EAAE,WAAW+5L,YAAY,SAASx2L,GAAG,OAAOA,EAAEA,EAAEi2L,OAAO,OAAO1rI,EAAE9tD,EAAE,cAAc,SAAS,IAAI2+L,eAAe,WAAW,OAAO3+L,EAAEm5L,UAAUC,WAAW,GAAGzC,SAAS,SAASpzL,GAAG,OAAOA,EAAEA,EAAEi2L,OAAO,QAAQ1rI,EAAE9tD,EAAE,aAAam6L,YAAY,SAAS52L,GAAG,OAAOA,EAAEA,EAAEi2L,OAAO,MAAM1rI,EAAE9tD,EAAE,cAAc,WAAW,IAAIq6L,cAAc,SAAS92L,GAAG,OAAOA,EAAEA,EAAEi2L,OAAO,OAAO1rI,EAAE9tD,EAAE,gBAAgB,WAAW,IAAI4+L,eAAe,SAASr7L,GAAG,OAAOkC,EAAEzF,EAAEm5L,UAAU51L,IAAIm2L,SAAS76L,KAAKs6L,UAAUO,SAAS2B,QAAQx8L,KAAKs6L,UAAUkC,UAAUp2L,EAAE45L,WAAW,WAAW,OAAO/+L,EAAEoiD,KAAKrjD,KAAPiB,IAAgBD,EAAEg/L,WAAW,WAAW,IAAI7+L,EAAED,IAAI,MAAM,CAAC4+L,eAAe,WAAW,OAAO3+L,EAAEo5L,WAAW,GAAGzC,SAAS,WAAW,OAAO92L,EAAE82L,YAAY0D,cAAc,WAAW,OAAOx6L,EAAEw6L,iBAAiBF,YAAY,WAAW,OAAOt6L,EAAEs6L,eAAevD,OAAO,WAAW,OAAO/2L,EAAE+2L,UAAUmD,YAAY,WAAW,OAAOl6L,EAAEk6L,eAAe6E,eAAe,SAASr7L,GAAG,OAAOkC,EAAEzF,EAAEuD,IAAIm2L,SAAS15L,EAAE05L,SAAS2B,QAAQr7L,EAAEq7L,UAAUx7L,EAAE+2L,OAAO,WAAW,OAAO9oI,EAAE/tD,IAAI,WAAWF,EAAEk6L,YAAY,WAAW,OAAOjsI,EAAE/tD,IAAI,cAAc,SAAS,IAAIF,EAAE82L,SAAS,SAAS32L,GAAG,OAAO8tD,EAAE/tD,IAAI,WAAW,KAAK,KAAKC,IAAIH,EAAEw6L,cAAc,SAASr6L,GAAG,OAAO8tD,EAAE/tD,IAAI,gBAAgB,WAAW,EAAEC,IAAIH,EAAEs6L,YAAY,SAASn6L,GAAG,OAAO8tD,EAAE/tD,IAAI,cAAc,WAAW,EAAEC,S,mBCA1hE,SAASuD,EAAE1D,GAAwDupJ,EAAOD,QAAQtpJ,IAAlF,CAA8NhB,GAAK,WAAY,aAAa,IAAI0E,EAAE,CAACg4L,IAAI,YAAYjsB,GAAG,SAASksB,EAAE,aAAaC,GAAG,eAAeC,IAAI,sBAAsBC,KAAK,6BAA6B,OAAO,SAAS97L,EAAEkF,EAAE/E,GAAG,IAAIiF,EAAEF,EAAEhG,UAAUgB,EAAEkF,EAAEu0L,OAAOx5L,EAAEk7L,GAAGI,QAAQ/3L,EAAE0B,EAAEu0L,OAAO,SAAS35L,QAAG,IAASA,IAAIA,EAAE,wBAAwB,IAAIkF,EAAElG,KAAKs6L,UAAUmC,QAAQt7L,EAAE,SAASH,EAAEkF,GAAG,OAAOlF,EAAEkQ,QAAQ,qCAAoC,SAAUlQ,EAAEG,EAAEiF,GAAG,IAAIlF,EAAEkF,GAAGA,EAAE4oD,cAAc,OAAO7tD,GAAG+E,EAAEE,IAAI1B,EAAE0B,IAAIF,EAAEhF,GAAGgQ,QAAQ,kCAAiC,SAAUxM,EAAE1D,EAAEkF,GAAG,OAAOlF,GAAGkF,EAAEqmC,MAAM,SAApN,CAA8NvrC,OAAE,IAASkF,EAAE,GAAGA,GAAG,OAAOhF,EAAEP,KAAKX,KAAKmB,S,mBCA9xB,SAASH,EAAEG,GAAwDopJ,EAAOD,QAAQnpJ,IAAlF,CAA4NnB,GAAK,WAAY,aAAa,OAAO,SAASgB,EAAEG,EAAEuD,GAAG,IAAIxD,EAAEC,EAAEjB,UAAUkG,EAAE,SAASpF,GAAG,IAAIG,EAAEiF,EAAEpF,EAAEk/F,KAAKh6F,EAAElF,EAAEu3L,IAAI3xL,EAAE,GAAG,MAAMzF,EAAEiF,aAAaooB,SAASrtB,aAAazB,QAAQyB,aAAa5B,OAAO,CAAC,IAAIA,OAAOsD,KAAKuD,GAAG/E,OAAO,OAAO,IAAImtB,KAAK,IAAIygC,EAAE/oD,EAAExB,EAAE6zL,MAAM7zL,IAAInF,OAAOsD,KAAKuD,GAAGtD,SAAQ,SAAU9B,GAAG,IAAIG,EAAEuD,EAAEkC,GAAGzF,EAAEH,EAAE0D,EAAExD,EAAE24L,SAASh6L,EAAEsB,GAAG,SAASuD,EAAE,MAAMA,IAAI0B,EAAEpF,MAAM,IAAIrB,EAAEiH,EAAEk3L,MAAMl3L,EAAEqxL,MAAMrxL,EAAEsxL,OAAO,EAAE,EAAEjpI,EAAEixC,QAAQjsB,EAAErtE,EAAEqxL,MAAMhpI,EAAEgpI,OAAOhzL,EAAE2B,EAAEsxL,OAAO,EAAEtxL,EAAEsxL,MAAMtxL,EAAEqxL,MAAMrxL,EAAEk3L,IAAI,EAAE7uI,EAAEipI,QAAQj3L,EAAE2F,EAAEo2E,MAAM,EAAEw+B,EAAE50G,EAAEq5L,QAAQ,EAAErgM,EAAEgH,EAAEkwK,QAAQ,EAAE5xK,EAAE0B,EAAEs5L,aAAa,EAAE,OAAOh6L,EAAE,IAAIsoB,KAAKA,KAAKoqK,IAAI3kH,EAAEhvE,EAAEtF,EAAEsB,EAAEu6G,EAAE57G,EAAEsF,IAAI,IAAIspB,KAAKylD,EAAEhvE,EAAEtF,EAAEsB,EAAEu6G,EAAE57G,EAAEsF,GAAG,OAAOkB,GAAGF,EAAEhF,EAAE6Z,MAAM7Z,EAAE6Z,MAAM,SAAS/Z,GAAGA,EAAEk/F,KAAK95F,EAAEi9C,KAAKrjD,KAAPoG,CAAapF,GAAGkF,EAAEm9C,KAAKrjD,KAAPkG,CAAalF,IAAI,IAAI4F,EAAE1F,EAAEynB,IAAIsmC,EAAE/tD,EAAEi8B,IAAIx9B,EAAE,SAASqB,EAAEG,EAAEuD,EAAExD,GAAG,QAAG,IAASA,IAAIA,EAAE,GAAGC,aAAa5B,OAAO,CAAC,IAAI6G,EAAE7G,OAAOsD,KAAK1B,GAAG+E,EAAElG,KAAK,OAAOoG,EAAEtD,SAAQ,SAAU4B,GAAGwB,EAAElF,EAAEqiD,KAAKn9C,EAAPlF,CAAUG,EAAEuD,GAAGxD,EAAEwD,MAAMwB,EAAE,OAAOlF,EAAEqiD,KAAKrjD,KAAPgB,CAAaG,EAAED,EAAEwD,IAAIxD,EAAEynB,IAAI,SAAS3nB,EAAEG,GAAG,OAAOA,OAAE,IAASA,EAAEH,EAAEG,EAAExB,EAAE0jD,KAAKrjD,KAAPL,EAAa,SAAUqB,EAAEG,GAAG,OAAOyF,EAAEy8C,KAAKrjD,KAAP4G,CAAazF,EAAEH,KAAKG,EAAEH,IAAIE,EAAEi8B,IAAI,SAASn8B,EAAEG,GAAG,OAAOxB,EAAE0jD,KAAKrjD,KAAPL,CAAasvD,EAAEjuD,EAAEG,IAAID,EAAEw5L,SAAS,SAAS15L,EAAEG,GAAG,OAAOxB,EAAE0jD,KAAKrjD,KAAPL,CAAasvD,EAAEjuD,EAAEG,GAAG,S,mBCAlwC,SAASiF,EAAE1B,GAAwD6lJ,EAAOD,QAAQ5lJ,IAAlF,CAA2N1E,GAAK,WAAY,aAAa,OAAO,SAASoG,EAAE1B,EAAE1D,GAAGoF,EAAEA,GAAG,GAAG,IAAIjF,EAAEuD,EAAExE,UAAUgG,EAAE,CAAC82L,OAAO,QAAQC,KAAK,SAASh8L,EAAE,gBAAgBkF,EAAE,WAAW01L,GAAG,aAAargF,EAAE,UAAUogF,GAAG,WAAWj8L,EAAE,QAAQ07L,GAAG,UAAUxD,EAAE,UAAUmD,GAAG,YAAY91L,EAAE,SAASg4L,GAAG,YAAY,SAASh8L,EAAEkF,EAAE1B,EAAE1D,EAAEkF,GAAG,OAAO/E,EAAEg/L,WAAW/5L,EAAE1B,EAAE1D,EAAEkF,GAAGlF,EAAEq7L,GAAGU,aAAa72L,EAAE/E,EAAEg/L,WAAW,SAASz7L,EAAEvD,EAAED,EAAEvB,EAAEsvD,GAAG,IAAI,IAAIhqD,EAAE2B,EAAE3F,EAAE+sJ,EAAE9sJ,EAAEo5L,UAAUyC,cAAc72L,EAAEs1G,EAAEp1G,EAAEg6L,YAAY,CAAC,CAACpyC,EAAE,IAAI5nJ,EAAE,GAAGzG,EAAE,UAAU,CAACquJ,EAAE,IAAI5nJ,EAAE,IAAI,CAAC4nJ,EAAE,KAAK5nJ,EAAE,GAAGzG,EAAE,UAAU,CAACquJ,EAAE,IAAI5nJ,EAAE,IAAI,CAAC4nJ,EAAE,KAAK5nJ,EAAE,GAAGzG,EAAE,QAAQ,CAACquJ,EAAE,IAAI5nJ,EAAE,IAAI,CAAC4nJ,EAAE,KAAK5nJ,EAAE,GAAGzG,EAAE,OAAO,CAACquJ,EAAE,IAAI5nJ,EAAE,IAAI,CAAC4nJ,EAAE,KAAK5nJ,EAAE,GAAGzG,EAAE,SAAS,CAACquJ,EAAE,IAAI5nJ,EAAE,IAAI,CAAC4nJ,EAAE,KAAKruJ,EAAE,SAASwG,EAAEq1G,EAAEn6G,OAAO4yE,EAAE,EAAEA,EAAE9tE,EAAE8tE,GAAG,EAAE,CAAC,IAAI/uE,EAAEs2G,EAAEvnC,GAAG/uE,EAAEvF,IAAIsF,EAAEtF,EAAEqB,EAAE0D,GAAGw3L,KAAKh7L,EAAEgE,EAAEvF,GAAE,GAAIuB,EAAEg7L,KAAKx3L,EAAEQ,EAAEvF,GAAE,IAAK,IAAIE,GAAGuG,EAAEi6L,UAAUpxL,KAAKmiB,OAAOniB,KAAKgyF,IAAIh8F,IAAI,GAAGhE,EAAEgE,EAAE,EAAEpF,GAAGqF,EAAEkB,IAAIlB,EAAEkB,EAAE,CAACvG,GAAG,GAAGo0E,EAAE,IAAI/uE,EAAEs2G,EAAEvnC,EAAE,IAAI,IAAIruE,EAAEooJ,EAAE9oJ,EAAE8oJ,GAAG/+F,IAAIpvD,EAAEovD,EAAE,GAAGpvD,IAAI+G,EAAE,iBAAiBhB,EAAEA,EAAEsL,QAAQ,KAAKrR,GAAG+F,EAAE/F,EAAEsB,EAAE+D,EAAE8oJ,EAAE/sJ,GAAG,OAAO,GAAGE,EAAE,OAAOyF,EAAE,IAAIixL,EAAE52L,EAAE+sJ,EAAEgvC,OAAOhvC,EAAEivC,KAAK,MAAM,mBAAmBpF,EAAEA,EAAEjxL,GAAGixL,EAAE3mL,QAAQ,KAAKtK,IAAIzF,EAAE2qG,GAAG,SAAS1lG,EAAE1B,GAAG,OAAOxD,EAAEkF,EAAE1B,EAAE1E,MAAK,IAAKmB,EAAE6/F,KAAK,SAAS56F,EAAE1B,GAAG,OAAOxD,EAAEkF,EAAE1B,EAAE1E,OAAO,IAAIL,EAAE,SAASyG,GAAG,OAAOA,EAAEoyL,GAAGx3L,EAAEu3L,MAAMv3L,KAAKG,EAAEm/L,MAAM,SAASl6L,GAAG,OAAOpG,KAAK8rG,GAAGnsG,EAAEK,MAAMoG,IAAIjF,EAAE29L,QAAQ,SAAS14L,GAAG,OAAOpG,KAAKghG,KAAKrhG,EAAEK,MAAMoG,S,mBCAr4C,SAASpF,EAAE0D,GAAwD6lJ,EAAOD,QAAQ5lJ,IAAlF,CAAuN1E,GAAK,WAAY,aAAa,IAAIgB,EAAE,CAACi3L,KAAK,EAAEC,MAAM,EAAE4F,IAAI,EAAE9gH,KAAK,EAAEijH,OAAO,EAAEnpB,OAAO,GAAGpyK,EAAE,GAAG,OAAO,SAASvD,EAAED,EAAEgF,GAAG,IAAIE,EAAEQ,EAAE,SAAS5F,EAAEG,EAAED,QAAG,IAASA,IAAIA,EAAE,IAAI,IAAIgF,EAAE,IAAIsoB,KAAKxtB,GAAGoF,EAAE,SAASpF,EAAEG,QAAG,IAASA,IAAIA,EAAE,IAAI,IAAID,EAAEC,EAAEo/L,cAAc,QAAQr6L,EAAElF,EAAE,IAAIE,EAAEkF,EAAE1B,EAAEwB,GAAG,OAAOE,IAAIA,EAAE,IAAIo6L,KAAKC,eAAe,QAAQ,CAACC,QAAO,EAAGC,SAAS3/L,EAAEi3L,KAAK,UAAUC,MAAM,UAAU4F,IAAI,UAAU9gH,KAAK,UAAUijH,OAAO,UAAUnpB,OAAO,UAAUypB,aAAar/L,IAAIwD,EAAEwB,GAAGE,GAAGA,EAA1Q,CAA6QjF,EAAED,GAAG,OAAOkF,EAAEw6L,cAAc16L,IAAI+oD,EAAE,SAASvqD,EAAEvD,GAAG,IAAI,IAAID,EAAE0F,EAAElC,EAAEvD,GAAGiF,EAAE,GAAG6oD,EAAE,EAAEA,EAAE/tD,EAAEG,OAAO4tD,GAAG,EAAE,CAAC,IAAIhqD,EAAE/D,EAAE+tD,GAAGhuD,EAAEgE,EAAEioB,KAAK/mB,EAAElB,EAAEX,MAAM2vE,EAAEjzE,EAAEC,GAAGgzE,GAAG,IAAI7tE,EAAE6tE,GAAGhvB,SAAS9+C,EAAE,KAAK,IAAIxG,EAAEyG,EAAE,GAAG4nJ,EAAE,KAAKruJ,EAAE,EAAEA,EAAEiG,EAAEQ,EAAE,GAAG,IAAIA,EAAE,GAAG,IAAIA,EAAE,GAAG,IAAI4nJ,EAAE,IAAI5nJ,EAAE,GAAG,IAAIA,EAAE,GAAG,OAAOo1G,GAAG92G,EAAE,OAAOwB,EAAEqyL,IAAI3yL,GAAGotK,WAAWx3D,GAAGA,EAAE,MAAM,KAAKv2G,EAAE/D,EAAEhB,UAAU+E,EAAE47L,GAAG,SAAS7/L,EAAE0D,QAAG,IAAS1D,IAAIA,EAAEoF,GAAG,IAAIjF,EAAEnB,KAAKg4L,YAAY92L,EAAElB,KAAKq6L,SAASzzL,EAAE1F,EAAE4/L,eAAe,QAAQ,CAACH,SAAS3/L,IAAIiuD,EAAEhgD,KAAKmiB,OAAOlwB,EAAE,IAAIstB,KAAK5nB,IAAI,IAAI,IAAI3B,EAAEiB,EAAEU,GAAG4zL,KAAK,cAAcx6L,KAAK25L,KAAK3B,UAAU,IAAI/oL,KAAKmiB,MAAMlwB,EAAE+6L,oBAAoB,IAAIhtI,GAAE,GAAI,GAAGvqD,EAAE,CAAC,IAAIzD,EAAEgE,EAAE+yL,YAAY/yL,EAAEA,EAAEk4B,IAAIh8B,EAAEF,EAAE,UAAU,OAAOgE,EAAEwzL,GAAGsI,UAAU//L,EAAEiE,GAAGA,EAAEu4L,WAAW,SAASx8L,GAAG,IAAI0D,EAAE1E,KAAKy4L,GAAGsI,WAAW76L,EAAE26L,GAAGG,QAAQ7/L,EAAEyF,EAAE5G,KAAKgzK,UAAUtuK,EAAE,CAAC67L,aAAav/L,IAAIsnB,MAAK,SAAUtnB,GAAG,MAAM,iBAAiBA,EAAEksB,KAAKsH,iBAAiB,OAAOrzB,GAAGA,EAAEmD,OAAO,IAAIrD,EAAEgE,EAAE80L,QAAQ90L,EAAE80L,QAAQ,SAAS/4L,EAAE0D,GAAG,IAAI1E,KAAKy4L,KAAKz4L,KAAKy4L,GAAGsI,UAAU,OAAO9/L,EAAEN,KAAKX,KAAKgB,EAAE0D,GAAG,IAAIvD,EAAE+E,EAAElG,KAAK26L,OAAO,4BAA4B,OAAO15L,EAAEN,KAAKQ,EAAEH,EAAE0D,GAAGm8L,GAAG7gM,KAAKy4L,GAAGsI,WAAU,IAAK76L,EAAE26L,GAAG,SAAS7/L,EAAE0D,EAAEvD,GAAG,IAAID,EAAEC,GAAGuD,EAAEkC,EAAEzF,GAAGuD,GAAG0B,EAAEnB,EAAEgqD,GAAG/oD,IAAIU,GAAG,GAAG,iBAAiB5F,EAAE,OAAOkF,EAAElF,GAAG6/L,GAAGj6L,GAAG,IAAI3F,EAAE,SAASD,EAAE0D,EAAEvD,GAAG,IAAID,EAAEF,EAAE,GAAG0D,EAAE,IAAIwB,EAAE+oD,EAAE/tD,EAAEC,GAAG,GAAGuD,IAAIwB,EAAE,MAAM,CAAChF,EAAEwD,GAAG,IAAI0B,EAAE6oD,EAAE/tD,GAAG,IAAIgF,EAAExB,GAAG,IAAIvD,GAAG,OAAO+E,IAAIE,EAAE,CAAClF,EAAEgF,GAAG,CAAClF,EAAE,GAAGiO,KAAKs2C,IAAIr/C,EAAEE,GAAG,IAAI6I,KAAK4wD,IAAI35D,EAAEE,IAAhJ,CAAqJF,EAAEqyL,IAAIv3L,EAAEE,GAAG8xK,UAAU/tK,EAAE2B,GAAGT,EAAElF,EAAE,GAAGgzE,EAAEhzE,EAAE,GAAGtB,EAAEuG,EAAEC,GAAG6xL,UAAU/jH,GAAG,OAAOt0E,EAAE84L,GAAGsI,UAAUn6L,EAAEjH,GAAGuG,EAAE26L,GAAGG,MAAM,WAAW,OAAOR,KAAKC,iBAAiBQ,kBAAkBN,UAAUz6L,EAAE26L,GAAGK,WAAW,SAASlgM,GAAGoF,EAAEpF,Q,mBCArjE,SAASA,EAAEE,GAAwDqpJ,EAAOD,QAAQppJ,IAAlF,CAAkNlB,GAAK,WAAY,aAAa,IAAIgB,EAAE,SAASE,EAAE,uBAAuBwD,EAAE,eAAe,OAAO,SAASzD,EAAEgE,EAAE9D,GAAG,IAAI8tD,EAAEhqD,EAAE/E,UAAUiB,EAAEo3L,IAAI,SAASv3L,GAAG,IAAIE,EAAE,CAACg/F,KAAKl/F,EAAEu3L,KAAI,EAAGnmG,KAAKhxF,WAAW,OAAO,IAAI6D,EAAE/D,IAAI+tD,EAAEspI,IAAI,SAASr3L,GAAG,IAAIwD,EAAEvD,EAAEnB,KAAKq6L,SAAS,CAAChC,OAAOr4L,KAAKs4L,GAAGC,KAAI,IAAK,OAAOr3L,EAAEwD,EAAEy4B,IAAIn9B,KAAKg4L,YAAYh3L,GAAG0D,GAAGuqD,EAAEkyI,MAAM,WAAW,OAAOhgM,EAAEnB,KAAKq6L,SAAS,CAAChC,OAAOr4L,KAAKs4L,GAAGC,KAAI,KAAM,IAAIryL,EAAE+oD,EAAEl0C,MAAMk0C,EAAEl0C,MAAM,SAAS/Z,GAAGA,EAAEu3L,MAAMv4L,KAAKw4L,IAAG,GAAIx4L,KAAK65L,SAAS5qI,EAAEjuD,EAAE03L,WAAW14L,KAAK04L,QAAQ13L,EAAE03L,SAASxyL,EAAEvF,KAAKX,KAAKgB,IAAI,IAAIoF,EAAE6oD,EAAEsuE,KAAKtuE,EAAEsuE,KAAK,WAAW,GAAGv9H,KAAKw4L,GAAG,CAAC,IAAIx3L,EAAEhB,KAAK24L,GAAG34L,KAAK64L,GAAG73L,EAAEo/F,iBAAiBpgG,KAAK+4L,GAAG/3L,EAAEs/F,cAActgG,KAAKi5L,GAAGj4L,EAAEu/F,aAAavgG,KAAKm5L,GAAGn4L,EAAEogM,YAAYphM,KAAKq5L,GAAGr4L,EAAEw/F,cAAcxgG,KAAKu5L,GAAGv4L,EAAEy/F,gBAAgBzgG,KAAKy5L,GAAGz4L,EAAE0/F,gBAAgB1gG,KAAK25L,IAAI34L,EAAE2/F,0BAA0Bv6F,EAAEzF,KAAKX,OAAO,IAAI4G,EAAEqoD,EAAE+oI,UAAU/oI,EAAE+oI,UAAU,SAAS/2L,EAAEgE,GAAG,IAAI9D,EAAEnB,KAAK65L,SAAS5qI,EAAE,GAAG9tD,EAAEF,GAAG,OAAOjB,KAAKw4L,GAAG,EAAEr3L,EAAEnB,KAAK04L,SAAS9xL,EAAEjG,KAAKX,MAAMA,KAAK04L,QAAQ,GAAG,iBAAiBz3L,IAAIA,EAAE,SAASD,QAAG,IAASA,IAAIA,EAAE,IAAI,IAAIC,EAAED,EAAEyuC,MAAMvuC,GAAG,IAAID,EAAE,OAAO,KAAK,IAAIgE,GAAG,GAAGhE,EAAE,IAAIwuC,MAAM/qC,IAAI,CAAC,IAAI,EAAE,GAAGvD,EAAE8D,EAAE,GAAGgqD,EAAE,IAAIhqD,EAAE,KAAKA,EAAE,GAAG,OAAO,IAAIgqD,EAAE,EAAE,MAAM9tD,EAAE8tD,GAAGA,EAAzJ,CAA4JhuD,GAAG,OAAOA,GAAG,OAAOjB,KAAK,IAAIivD,EAAEhgD,KAAKgyF,IAAIhgG,IAAI,GAAG,GAAGA,EAAEA,EAAEiF,EAAElG,KAAK,GAAGiF,EAAE,OAAOiB,EAAEwyL,QAAQzpI,EAAE/oD,EAAEsyL,GAAG,IAAIv3L,EAAEiF,EAAE,GAAG,IAAIjF,EAAE,CAAC,IAAImF,EAAEpG,KAAKw4L,GAAGx4L,KAAKq6L,SAAS4B,qBAAqB,EAAEj8L,KAAKg4L,aAAa9xL,EAAElG,KAAKmhM,QAAQhkK,IAAI8xB,EAAE7oD,EAAEpF,IAAI03L,QAAQzpI,EAAE/oD,EAAEuyL,GAAG4I,aAAaj7L,OAAOF,EAAElG,KAAKu4L,MAAM,OAAOryL,GAAG,IAAIs1G,EAAEvsD,EAAE0rI,OAAO1rI,EAAE0rI,OAAO,SAAS35L,GAAG,IAAIE,EAAEF,IAAIhB,KAAKw4L,GAAG,yBAAyB,IAAI,OAAOh9E,EAAE76G,KAAKX,KAAKkB,IAAI+tD,EAAE+jH,QAAQ,WAAW,IAAIhyK,EAAEhB,KAAK65L,SAAS5qI,EAAEjvD,KAAK04L,SAAS,EAAE14L,KAAK04L,SAAS14L,KAAKy4L,GAAG4I,cAAcrhM,KAAK24L,GAAGsD,qBAAqB,OAAOj8L,KAAK24L,GAAG3lB,UAAU,IAAIhyK,GAAGiuD,EAAEqyI,MAAM,WAAW,QAAQthM,KAAKw4L,IAAIvpI,EAAEihC,YAAY,WAAW,OAAOlwF,KAAKq6L,SAASnqG,eAAejhC,EAAE1gD,SAAS,WAAW,OAAOvO,KAAKq6L,SAAS5rK,eAAe,IAAIu/H,EAAE/+F,EAAEorI,OAAOprI,EAAEorI,OAAO,SAASr5L,GAAG,MAAM,MAAMA,GAAGhB,KAAK04L,QAAQv3L,EAAEnB,KAAK26L,OAAO,4BAA4BN,SAASrsC,EAAErtJ,KAAKX,OAAO,IAAIi0E,EAAEhlB,EAAEitI,KAAKjtI,EAAEitI,KAAK,SAASl7L,EAAEE,EAAEwD,GAAG,GAAG1D,GAAGhB,KAAKw4L,KAAKx3L,EAAEw3L,GAAG,OAAOvkH,EAAEtzE,KAAKX,KAAKgB,EAAEE,EAAEwD,GAAG,IAAIzD,EAAEjB,KAAKmhM,QAAQl8L,EAAE9D,EAAEH,GAAGmgM,QAAQ,OAAOltH,EAAEtzE,KAAKM,EAAEgE,EAAE/D,EAAEwD,S,mBCApsE,SAASA,EAAE1D,GAAwDupJ,EAAOD,QAAQtpJ,IAAlF,CAAsNhB,GAAK,WAAY,aAAa,OAAO,SAAS0E,EAAE1D,GAAGA,EAAEd,UAAUqhM,QAAQ,SAAS78L,GAAG,IAAI1D,EAAEhB,KAAKs6L,UAAUC,WAAW,EAAEr5L,EAAElB,KAAKm5L,GAAGh4L,GAAGD,EAAEF,EAAEE,EAAE,EAAEA,GAAGF,EAAE,OAAOhB,KAAK65L,SAAS5qI,EAAEvqD,GAAGvD,EAAEnB,KAAK06L,SAASv5L,EAAE,OAAOg8B,IAAIz4B,EAAE,a,sBCE/Z,IAAI88L,EAAoB,SAA2Bl9L,GAClD,OAAOm9L,EAAgBn9L,KAClBqxL,EAAUrxL,IAGhB,SAASm9L,EAAgBn9L,GACxB,QAASA,GAA0B,kBAAVA,EAG1B,SAASqxL,EAAUrxL,GAClB,IAAIo9L,EAAcniM,OAAOW,UAAUqO,SAAS5N,KAAK2D,GAEjD,MAAuB,oBAAhBo9L,GACa,kBAAhBA,GACAC,EAAer9L,GAIpB,IAAIs9L,EAAiC,oBAAXl8L,QAAyBA,OAAOm8L,IACtDC,EAAqBF,EAAel8L,OAAOm8L,IAAI,iBAAmB,MAEtE,SAASF,EAAer9L,GACvB,OAAOA,EAAMy9L,WAAaD,EAG3B,SAASE,EAAY9iK,GACpB,OAAOx/B,MAAM21E,QAAQn2C,GAAO,GAAK,GAGlC,SAAS+iK,EAA8B39L,EAAO1C,GAC7C,OAA0B,IAAlBA,EAAQusB,OAAmBvsB,EAAQ4/L,kBAAkBl9L,GAC1D49L,EAAUF,EAAY19L,GAAQA,EAAO1C,GACrC0C,EAGJ,SAAS69L,EAAkBx8K,EAAQ2gD,EAAQ1kE,GAC1C,OAAO+jB,EAAOnf,OAAO8/D,GAAQvqD,KAAI,SAASy+I,GACzC,OAAOynC,EAA8BznC,EAAS54J,MAIhD,SAASwgM,EAAiBxmL,EAAKha,GAC9B,IAAKA,EAAQygM,YACZ,OAAOH,EAER,IAAIG,EAAczgM,EAAQygM,YAAYzmL,GACtC,MAA8B,oBAAhBymL,EAA6BA,EAAcH,EAG1D,SAASI,EAAgC38K,GACxC,OAAOpmB,OAAOsvK,sBACXtvK,OAAOsvK,sBAAsBlpJ,GAAQzJ,QAAO,SAAS4yJ,GACtD,OAAOnpJ,EAAOy7E,qBAAqB0tE,MAElC,GAGJ,SAASlnJ,EAAQjC,GAChB,OAAOpmB,OAAOsD,KAAK8iB,GAAQnf,OAAO87L,EAAgC38K,IAGnE,SAAS48K,EAAmB1pG,EAAQ7B,GACnC,IACC,OAAOA,KAAY6B,EAClB,MAAMzzF,GACP,OAAO,GAKT,SAASo9L,EAAiB78K,EAAQ/J,GACjC,OAAO2mL,EAAmB58K,EAAQ/J,MAC5Brc,OAAOO,eAAea,KAAKglB,EAAQ/J,IACpCrc,OAAO6hG,qBAAqBzgG,KAAKglB,EAAQ/J,IAG/C,SAAS6mL,EAAY98K,EAAQ2gD,EAAQ1kE,GACpC,IAAI8gM,EAAc,GAiBlB,OAhBI9gM,EAAQ4/L,kBAAkB77K,IAC7BiC,EAAQjC,GAAQ7iB,SAAQ,SAAS8Y,GAChC8mL,EAAY9mL,GAAOqmL,EAA8Bt8K,EAAO/J,GAAMha,MAGhEgmB,EAAQ0+C,GAAQxjE,SAAQ,SAAS8Y,GAC5B4mL,EAAiB78K,EAAQ/J,KAIzB2mL,EAAmB58K,EAAQ/J,IAAQha,EAAQ4/L,kBAAkBl7H,EAAO1qD,IACvE8mL,EAAY9mL,GAAOwmL,EAAiBxmL,EAAKha,EAAtBwgM,CAA+Bz8K,EAAO/J,GAAM0qD,EAAO1qD,GAAMha,GAE5E8gM,EAAY9mL,GAAOqmL,EAA8B37H,EAAO1qD,GAAMha,OAGzD8gM,EAGR,SAASR,EAAUv8K,EAAQ2gD,EAAQ1kE,GAClCA,EAAUA,GAAW,GACrBA,EAAQ+gM,WAAa/gM,EAAQ+gM,YAAcR,EAC3CvgM,EAAQ4/L,kBAAoB5/L,EAAQ4/L,mBAAqBA,EAGzD5/L,EAAQqgM,8BAAgCA,EAExC,IAAIW,EAAgBljM,MAAM21E,QAAQ/O,GAC9Bu8H,EAAgBnjM,MAAM21E,QAAQ1vD,GAC9Bm9K,EAA4BF,IAAkBC,EAElD,OAAKC,EAEMF,EACHhhM,EAAQ+gM,WAAWh9K,EAAQ2gD,EAAQ1kE,GAEnC6gM,EAAY98K,EAAQ2gD,EAAQ1kE,GAJ5BqgM,EAA8B37H,EAAQ1kE,GAQ/CsgM,EAAUtgK,IAAM,SAAsB3C,EAAOr9B,GAC5C,IAAKlC,MAAM21E,QAAQp2C,GAClB,MAAM,IAAIr+B,MAAM,qCAGjB,OAAOq+B,EAAMlN,QAAO,SAAS8rI,EAAMp5J,GAClC,OAAOy9L,EAAUrkC,EAAMp5J,EAAM7C,KAC3B,KAGJ,IAAImhM,EAAcb,EAElB33C,EAAOD,QAAUy4C,G;;CClIjB,SAAW1tD,EAAQ2tD,GAC8Cz4C,EAAOD,QAAU04C,KADlF,CAIGhjM,GAAM,WAAe,aAEtB,SAASijM,EAAQnoL,GAGf,OAAOmoL,EAAU,mBAAqBv9L,QAAU,iBAAmBA,OAAOC,SAAW,SAAUmV,GAC7F,cAAcA,GACZ,SAAUA,GACZ,OAAOA,GAAO,mBAAqBpV,QAAUoV,EAAI7a,cAAgByF,QAAUoV,IAAQpV,OAAOxF,UAAY,gBAAkB4a,GACvHmoL,EAAQnoL,GAGb,SAASooL,EAAgBh9L,EAAGrG,GAM1B,OALAqjM,EAAkB3jM,OAAOC,gBAAkB,SAAyB0G,EAAGrG,GAErE,OADAqG,EAAEzG,UAAYI,EACPqG,GAGFg9L,EAAgBh9L,EAAGrG,GAG5B,SAASsjM,IACP,GAAuB,qBAAZ/6B,UAA4BA,QAAQG,UAAW,OAAO,EACjE,GAAIH,QAAQG,UAAU9B,KAAM,OAAO,EACnC,GAAqB,oBAAV28B,MAAsB,OAAO,EAExC,IAEE,OADA9rG,QAAQp3F,UAAU8yK,QAAQryK,KAAKynK,QAAQG,UAAUjxE,QAAS,IAAI,iBACvD,EACP,MAAO5yF,GACP,OAAO,GAIX,SAAS2+L,EAAWC,EAAQlxG,EAAMmxG,GAchC,OAZEF,EADEF,IACW/6B,QAAQG,UAER,SAAoB+6B,EAAQlxG,EAAMmxG,GAC7C,IAAI38L,EAAI,CAAC,MACTA,EAAEZ,KAAKjC,MAAM6C,EAAGwrF,GAChB,IAAI0yD,EAAcwB,SAASjjG,KAAKt/C,MAAMu/L,EAAQ18L,GAC1CsmJ,EAAW,IAAIpI,EAEnB,OADIy+C,GAAOL,EAAgBh2C,EAAUq2C,EAAMrjM,WACpCgtJ,GAIJm2C,EAAWt/L,MAAM,KAAM3C,WAGhC,SAASoiM,EAAmB1nL,GAC1B,OAAO2nL,EAAmB3nL,IAAQ4nL,EAAiB5nL,IAAQ6nL,EAA4B7nL,IAAQ8nL,IAGjG,SAASH,EAAmB3nL,GAC1B,GAAIpc,MAAM21E,QAAQv5D,GAAM,OAAO+nL,EAAkB/nL,GAGnD,SAAS4nL,EAAiBI,GACxB,GAAsB,qBAAXp+L,QAAmD,MAAzBo+L,EAAKp+L,OAAOC,WAA2C,MAAtBm+L,EAAK,cAAuB,OAAOpkM,MAAMshG,KAAK8iG,GAGtH,SAASH,EAA4Bz9L,EAAG69L,GACtC,GAAK79L,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAO29L,EAAkB39L,EAAG69L,GACvD,IAAI5iM,EAAI5B,OAAOW,UAAUqO,SAAS5N,KAAKuF,GAAGqmC,MAAM,GAAI,GAEpD,MADU,WAANprC,GAAkB+E,EAAEjG,cAAakB,EAAI+E,EAAEjG,YAAYoT,MAC7C,QAANlS,GAAqB,QAANA,EAAoBzB,MAAMshG,KAAK96F,GACxC,cAAN/E,GAAqB,2CAA2CmO,KAAKnO,GAAW0iM,EAAkB39L,EAAG69L,QAAzG,GAGF,SAASF,EAAkB/nL,EAAK+kF,IACnB,MAAPA,GAAeA,EAAM/kF,EAAIza,UAAQw/F,EAAM/kF,EAAIza,QAE/C,IAAK,IAAIH,EAAI,EAAG8iM,EAAO,IAAItkM,MAAMmhG,GAAM3/F,EAAI2/F,EAAK3/F,IAAK8iM,EAAK9iM,GAAK4a,EAAI5a,GAEnE,OAAO8iM,EAGT,SAASJ,IACP,MAAM,IAAI99L,UAAU,wIAGtB,IAAIhG,EAAiBP,OAAOO,eACxBN,EAAiBD,OAAOC,eACxBykM,EAAW1kM,OAAO0kM,SAClB3uC,EAAiB/1J,OAAO+1J,eACxBwK,EAA2BvgK,OAAOugK,yBAClCqiB,EAAS5iL,OAAO4iL,OAChB+hB,EAAO3kM,OAAO2kM,KACd/jM,EAASZ,OAAOY,OAEhBgkM,EAA0B,qBAAZ/7B,SAA2BA,QACzCrkK,EAAQogM,EAAKpgM,MACbwkK,EAAY47B,EAAK57B,UAEhBxkK,IACHA,EAAQ,SAAeqgM,EAAKC,EAAWjyG,GACrC,OAAOgyG,EAAIrgM,MAAMsgM,EAAWjyG,KAI3B+vF,IACHA,EAAS,SAAgB7U,GACvB,OAAOA,IAIN42B,IACHA,EAAO,SAAc52B,GACnB,OAAOA,IAIN/E,IACHA,EAAY,SAAmB+7B,EAAMlyG,GACnC,OAAOixG,EAAWiB,EAAMd,EAAmBpxG,MAI/C,IAAImyG,EAAeC,EAAQ9kM,MAAMQ,UAAU4C,SACvC2hM,EAAWD,EAAQ9kM,MAAMQ,UAAU6F,KACnC2+L,EAAYF,EAAQ9kM,MAAMQ,UAAU8F,MACpC2+L,EAAoBH,EAAQ7zL,OAAOzQ,UAAUs0B,aAC7CowK,EAAcJ,EAAQ7zL,OAAOzQ,UAAUuvC,OACvCo1J,EAAgBL,EAAQ7zL,OAAOzQ,UAAUgR,SACzCm1K,EAAgBme,EAAQ7zL,OAAOzQ,UAAUgb,SACzC4pL,EAAaN,EAAQ7zL,OAAOzQ,UAAUwb,MACtCqpL,EAAaP,EAAQjoL,OAAOrc,UAAUoP,MACtC01L,EAAkBC,EAAYn/L,WAClC,SAAS0+L,EAAQz1G,GACf,OAAO,SAAU9qF,GACf,IAAK,IAAIihM,EAAO9jM,UAAUC,OAAQ+wF,EAAO,IAAI1yF,MAAMwlM,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClG/yG,EAAK+yG,EAAO,GAAK/jM,UAAU+jM,GAG7B,OAAOphM,EAAMgrF,EAAM9qF,EAASmuF,IAGhC,SAAS6yG,EAAYl2G,GACnB,OAAO,WACL,IAAK,IAAIq2G,EAAQhkM,UAAUC,OAAQ+wF,EAAO,IAAI1yF,MAAM0lM,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFjzG,EAAKizG,GAASjkM,UAAUikM,GAG1B,OAAO98B,EAAUx5E,EAAMqD,IAK3B,SAASkzG,EAAS38K,EAAKsW,EAAOsmK,GAC5BA,EAAoBA,GAAwCZ,EAExDnlM,GAIFA,EAAempB,EAAK,MAGtB,IAAIqlI,EAAI/uH,EAAM59B,OAEd,MAAO2sJ,IAAK,CACV,IAAIwM,EAAUv7H,EAAM+uH,GAEpB,GAAuB,kBAAZwM,EAAsB,CAC/B,IAAIgrC,EAAYD,EAAkB/qC,GAE9BgrC,IAAchrC,IAEXypC,EAAShlK,KACZA,EAAM+uH,GAAKw3C,GAGbhrC,EAAUgrC,GAId78K,EAAI6xI,IAAW,EAGjB,OAAO7xI,EAIT,SAASwF,EAAM0qE,GACb,IACI7B,EADAyuG,EAAYtlM,EAAO,MAGvB,IAAK62F,KAAY6B,EACX90F,EAAMjE,EAAgB+4F,EAAQ,CAAC7B,MACjCyuG,EAAUzuG,GAAY6B,EAAO7B,IAIjC,OAAOyuG,EAOT,SAASC,EAAa7sG,EAAQpY,GAC5B,MAAkB,OAAXoY,EAAiB,CACtB,IAAI9lF,EAAO+sJ,EAAyBjnE,EAAQpY,GAE5C,GAAI1tE,EAAM,CACR,GAAIA,EAAKrR,IACP,OAAO8iM,EAAQzxL,EAAKrR,KAGtB,GAA0B,oBAAfqR,EAAKzO,MACd,OAAOkgM,EAAQzxL,EAAKzO,OAIxBu0F,EAASy8D,EAAez8D,GAG1B,SAAS8sG,EAAcnrC,GAErB,OADA7jF,QAAQu+E,KAAK,qBAAsBsF,GAC5B,KAGT,OAAOmrC,EAGT,IAAIC,EAASzjB,EAAO,CAAC,IAAK,OAAQ,UAAW,UAAW,OAAQ,UAAW,QAAS,QAAS,IAAK,MAAO,MAAO,MAAO,QAAS,aAAc,OAAQ,KAAM,SAAU,SAAU,UAAW,SAAU,OAAQ,OAAQ,MAAO,WAAY,UAAW,OAAQ,WAAY,KAAM,YAAa,MAAO,UAAW,MAAO,SAAU,MAAO,MAAO,KAAM,KAAM,UAAW,KAAM,WAAY,aAAc,SAAU,OAAQ,SAAU,OAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAAQ,SAAU,SAAU,KAAM,OAAQ,IAAK,MAAO,QAAS,MAAO,MAAO,QAAS,SAAU,KAAM,OAAQ,MAAO,OAAQ,UAAW,OAAQ,WAAY,QAAS,MAAO,OAAQ,KAAM,WAAY,SAAU,SAAU,IAAK,UAAW,MAAO,WAAY,IAAK,KAAM,KAAM,OAAQ,IAAK,OAAQ,UAAW,SAAU,SAAU,QAAS,SAAU,SAAU,OAAQ,SAAU,SAAU,QAAS,MAAO,UAAW,MAAO,QAAS,QAAS,KAAM,WAAY,WAAY,QAAS,KAAM,QAAS,OAAQ,KAAM,QAAS,KAAM,IAAK,KAAM,MAAO,QAAS,QAEn+B0jB,EAAQ1jB,EAAO,CAAC,MAAO,IAAK,WAAY,cAAe,eAAgB,eAAgB,gBAAiB,mBAAoB,SAAU,WAAY,OAAQ,OAAQ,UAAW,SAAU,OAAQ,IAAK,QAAS,WAAY,QAAS,QAAS,OAAQ,iBAAkB,SAAU,OAAQ,WAAY,QAAS,OAAQ,UAAW,UAAW,WAAY,iBAAkB,OAAQ,OAAQ,QAAS,SAAU,SAAU,OAAQ,WAAY,QAAS,OAAQ,QAAS,OAAQ,UAC3c2jB,EAAa3jB,EAAO,CAAC,UAAW,gBAAiB,sBAAuB,cAAe,mBAAoB,oBAAqB,oBAAqB,iBAAkB,UAAW,UAAW,UAAW,UAAW,UAAW,iBAAkB,UAAW,UAAW,cAAe,eAAgB,WAAY,eAAgB,qBAAsB,cAAe,SAAU,iBAKhX4jB,EAAgB5jB,EAAO,CAAC,UAAW,gBAAiB,SAAU,UAAW,eAAgB,YAAa,mBAAoB,iBAAkB,gBAAiB,gBAAiB,gBAAiB,QAAS,YAAa,OAAQ,eAAgB,YAAa,UAAW,gBAAiB,SAAU,MAAO,aAAc,UAAW,QAChU6jB,EAAW7jB,EAAO,CAAC,OAAQ,WAAY,SAAU,UAAW,QAAS,SAAU,KAAM,aAAc,gBAAiB,KAAM,KAAM,QAAS,UAAW,WAAY,QAAS,OAAQ,KAAM,SAAU,QAAS,SAAU,OAAQ,OAAQ,UAAW,SAAU,MAAO,QAAS,MAAO,SAAU,eAG1R8jB,EAAmB9jB,EAAO,CAAC,UAAW,cAAe,aAAc,WAAY,YAAa,UAAW,UAAW,SAAU,SAAU,QAAS,YAAa,aAAc,iBAAkB,cAAe,SAC3MlvF,EAAOkvF,EAAO,CAAC,UAEf5R,EAAO4R,EAAO,CAAC,SAAU,SAAU,QAAS,MAAO,iBAAkB,eAAgB,uBAAwB,WAAY,aAAc,UAAW,SAAU,UAAW,cAAe,cAAe,UAAW,OAAQ,QAAS,QAAS,QAAS,OAAQ,UAAW,WAAY,eAAgB,SAAU,cAAe,WAAY,WAAY,UAAW,MAAO,WAAY,0BAA2B,wBAAyB,WAAY,YAAa,UAAW,eAAgB,OAAQ,MAAO,UAAW,SAAU,SAAU,OAAQ,OAAQ,WAAY,KAAM,YAAa,YAAa,QAAS,OAAQ,QAAS,OAAQ,OAAQ,UAAW,OAAQ,MAAO,MAAO,YAAa,QAAS,SAAU,MAAO,YAAa,WAAY,QAAS,OAAQ,QAAS,UAAW,aAAc,SAAU,OAAQ,UAAW,UAAW,cAAe,cAAe,SAAU,UAAW,UAAW,aAAc,WAAY,MAAO,WAAY,MAAO,WAAY,OAAQ,OAAQ,UAAW,aAAc,QAAS,WAAY,QAAS,OAAQ,QAAS,OAAQ,UAAW,QAAS,MAAO,SAAU,OAAQ,QAAS,UAAW,WAAY,QAAS,YAAa,OAAQ,SAAU,SAAU,QAAS,QAAS,QAAS,SACjqC+jB,EAAM/jB,EAAO,CAAC,gBAAiB,aAAc,WAAY,qBAAsB,SAAU,gBAAiB,gBAAiB,UAAW,gBAAiB,iBAAkB,QAAS,OAAQ,KAAM,QAAS,OAAQ,gBAAiB,YAAa,YAAa,QAAS,sBAAuB,8BAA+B,gBAAiB,kBAAmB,KAAM,KAAM,IAAK,KAAM,KAAM,kBAAmB,YAAa,UAAW,UAAW,MAAO,WAAY,YAAa,MAAO,OAAQ,eAAgB,YAAa,SAAU,cAAe,cAAe,gBAAiB,cAAe,YAAa,mBAAoB,eAAgB,aAAc,eAAgB,cAAe,KAAM,KAAM,KAAM,KAAM,aAAc,WAAY,gBAAiB,oBAAqB,SAAU,OAAQ,KAAM,kBAAmB,KAAM,MAAO,IAAK,KAAM,KAAM,KAAM,KAAM,UAAW,YAAa,aAAc,WAAY,OAAQ,eAAgB,iBAAkB,eAAgB,mBAAoB,iBAAkB,QAAS,aAAc,aAAc,eAAgB,eAAgB,cAAe,cAAe,mBAAoB,YAAa,MAAO,OAAQ,QAAS,SAAU,OAAQ,MAAO,OAAQ,aAAc,SAAU,WAAY,UAAW,QAAS,SAAU,cAAe,SAAU,WAAY,cAAe,OAAQ,aAAc,sBAAuB,mBAAoB,eAAgB,SAAU,gBAAiB,sBAAuB,iBAAkB,IAAK,KAAM,KAAM,SAAU,OAAQ,OAAQ,cAAe,YAAa,UAAW,SAAU,SAAU,QAAS,OAAQ,kBAAmB,mBAAoB,mBAAoB,eAAgB,cAAe,eAAgB,cAAe,aAAc,eAAgB,mBAAoB,oBAAqB,iBAAkB,kBAAmB,oBAAqB,iBAAkB,SAAU,eAAgB,QAAS,eAAgB,iBAAkB,WAAY,UAAW,UAAW,YAAa,mBAAoB,cAAe,kBAAmB,iBAAkB,aAAc,OAAQ,KAAM,KAAM,UAAW,SAAU,UAAW,aAAc,UAAW,aAAc,gBAAiB,gBAAiB,QAAS,eAAgB,OAAQ,eAAgB,mBAAoB,mBAAoB,IAAK,KAAM,KAAM,QAAS,IAAK,KAAM,KAAM,IAAK,eAC9vEgkB,EAAShkB,EAAO,CAAC,SAAU,cAAe,QAAS,WAAY,QAAS,eAAgB,cAAe,aAAc,aAAc,QAAS,MAAO,UAAW,eAAgB,WAAY,QAAS,QAAS,SAAU,OAAQ,KAAM,UAAW,SAAU,gBAAiB,SAAU,SAAU,iBAAkB,YAAa,WAAY,cAAe,UAAW,UAAW,gBAAiB,WAAY,WAAY,OAAQ,WAAY,WAAY,aAAc,UAAW,SAAU,SAAU,cAAe,gBAAiB,uBAAwB,YAAa,YAAa,aAAc,WAAY,iBAAkB,iBAAkB,YAAa,UAAW,QAAS,UACrpBikB,EAAMjkB,EAAO,CAAC,aAAc,SAAU,cAAe,YAAa,gBAElEkkB,EAAgBnC,EAAK,6BAErBoC,EAAWpC,EAAK,yBAChBqC,EAAYrC,EAAK,8BAEjBsC,EAAYtC,EAAK,kBAEjBuC,EAAiBvC,EAAK,yFAEtBwC,EAAoBxC,EAAK,yBACzByC,EAAkBzC,EAAK,+DAEvB0C,GAAe1C,EAAK,WAEpB/4F,GAAY,WACd,MAAyB,qBAAXhnF,OAAyB,KAAOA,QAY5C0iL,GAA4B,SAAmCC,EAAcnxJ,GAC/E,GAA8B,WAA1BstJ,EAAQ6D,IAAmE,oBAA9BA,EAAaC,aAC5D,OAAO,KAMT,IAAIC,EAAS,KACTC,EAAY,wBAEZtxJ,EAASivG,eAAiBjvG,EAASivG,cAAcsiD,aAAaD,KAChED,EAASrxJ,EAASivG,cAAcuiD,aAAaF,IAG/C,IAAIG,EAAa,aAAeJ,EAAS,IAAMA,EAAS,IAExD,IACE,OAAOF,EAAaC,aAAaK,EAAY,CAC3Cvf,WAAY,SAAoBtX,GAC9B,OAAOA,GAET82B,gBAAiB,SAAyBC,GACxC,OAAOA,KAGX,MAAOliM,GAKP,OADAuxE,QAAQu+E,KAAK,uBAAyBkyC,EAAa,0BAC5C,OAIX,SAASG,KACP,IAAIpjL,EAAS/iB,UAAUC,OAAS,QAAsB6kC,IAAjB9kC,UAAU,GAAmBA,UAAU,GAAK+pG,KAE7Eq8F,EAAY,SAAmBC,GACjC,OAAOF,GAAgBE,IAgBzB,GARAD,EAAUjhL,QAAU,QAMpBihL,EAAUrgE,QAAU,IAEfhjH,IAAWA,EAAOwxB,UAAyC,IAA7BxxB,EAAOwxB,SAAS+xJ,SAIjD,OADAF,EAAUnuG,aAAc,EACjBmuG,EAGT,IAAIG,EAAmBxjL,EAAOwxB,SAC1BA,EAAWxxB,EAAOwxB,SAClBiyJ,EAAmBzjL,EAAOyjL,iBAC1BC,EAAsB1jL,EAAO0jL,oBAC7BC,EAAO3jL,EAAO2jL,KACdC,EAAU5jL,EAAO4jL,QACjBC,EAAa7jL,EAAO6jL,WACpBC,EAAuB9jL,EAAO+/I,aAC9BA,OAAwC,IAAzB+jC,EAAkC9jL,EAAO+/I,cAAgB//I,EAAO+jL,gBAAkBD,EACjGnkC,EAAkB3/I,EAAO2/I,gBACzBqkC,EAAYhkL,EAAOgkL,UACnBrB,EAAe3iL,EAAO2iL,aACtBsB,EAAmBL,EAAQ7nM,UAC3BmoM,EAAY3C,EAAa0C,EAAkB,aAC3CE,EAAiB5C,EAAa0C,EAAkB,eAChDG,EAAgB7C,EAAa0C,EAAkB,cAC/CI,EAAgB9C,EAAa0C,EAAkB,cAOnD,GAAmC,oBAAxBP,EAAoC,CAC7C,IAAIvvH,EAAW3iC,EAAS40B,cAAc,YAElC+N,EAAS92E,SAAW82E,EAAS92E,QAAQinM,gBACvC9yJ,EAAW2iC,EAAS92E,QAAQinM,eAIhC,IAAIC,GAAqB7B,GAA0BC,EAAca,GAE7DgB,GAAYD,GAAqBA,GAAmB7gB,WAAW,IAAM,GACrE7lG,GAAYrsC,EACZizJ,GAAiB5mH,GAAU4mH,eAC3BC,GAAqB7mH,GAAU6mH,mBAC/BC,GAAyB9mH,GAAU8mH,uBACnCj+H,GAAuBmX,GAAUnX,qBACjCk+H,GAAapB,EAAiBoB,WAC9BC,GAAe,GAEnB,IACEA,GAAe76K,EAAMwnB,GAAUqzJ,aAAerzJ,EAASqzJ,aAAe,GACtE,MAAO5jM,KAET,IAAIw1G,GAAQ,GAKZ4sF,EAAUnuG,YAAuC,oBAAlBmvG,GAAgCI,IAA+D,qBAAtCA,GAAeK,oBAAuD,IAAjBD,GAC7I,IA+IIE,GAGA3D,GAlJA4D,GAAkB9C,EAClB+C,GAAa9C,EACb+C,GAAc9C,EACd+C,GAAc9C,EACd+C,GAAsB7C,EACtB8C,GAAoB7C,EACpB8C,GAAmBhD,EAQnBiD,GAAe,KACfC,GAAuBrE,EAAS,GAAI,GAAG9+L,OAAOg9L,EAAmBoC,GAASpC,EAAmBqC,GAAQrC,EAAmBsC,GAAatC,EAAmBwC,GAAWxC,EAAmBvwG,KAGtL22G,GAAe,KACfC,GAAuBvE,EAAS,GAAI,GAAG9+L,OAAOg9L,EAAmBjzB,GAAOizB,EAAmB0C,GAAM1C,EAAmB2C,GAAS3C,EAAmB4C,KAQhJ0D,GAA0BvqM,OAAO2kM,KAAK3kM,OAAOY,OAAO,KAAM,CAC5D4pM,aAAc,CACZ/oC,UAAU,EACV1yH,cAAc,EACdD,YAAY,EACZ/pC,MAAO,MAET0lM,mBAAoB,CAClBhpC,UAAU,EACV1yH,cAAc,EACdD,YAAY,EACZ/pC,MAAO,MAET2lM,+BAAgC,CAC9BjpC,UAAU,EACV1yH,cAAc,EACdD,YAAY,EACZ/pC,OAAO,MAKP4lM,GAAc,KAGdC,GAAc,KAGdC,IAAkB,EAGlBC,IAAkB,EAGlBC,IAA0B,EAK1BC,IAAqB,EAGrBC,IAAiB,EAGjBC,IAAa,EAIbC,IAAa,EAMbC,IAAa,EAIbC,IAAsB,EAItBC,IAAsB,EAKtBC,IAAe,EAefC,IAAuB,EACvBC,GAA8B,gBAG9BC,IAAe,EAIfC,IAAW,EAGXC,GAAe,GAGfC,GAAkB,KAClBC,GAA0B/F,EAAS,GAAI,CAAC,iBAAkB,QAAS,WAAY,OAAQ,gBAAiB,OAAQ,SAAU,OAAQ,KAAM,KAAM,KAAM,KAAM,QAAS,UAAW,WAAY,WAAY,YAAa,SAAU,QAAS,MAAO,WAAY,QAAS,QAAS,QAAS,QAGpRgG,GAAgB,KAChBC,GAAwBjG,EAAS,GAAI,CAAC,QAAS,QAAS,MAAO,SAAU,QAAS,UAGlFkG,GAAsB,KACtBC,GAA8BnG,EAAS,GAAI,CAAC,MAAO,QAAS,MAAO,KAAM,QAAS,OAAQ,UAAW,cAAe,OAAQ,UAAW,QAAS,QAAS,QAAS,UAClKoG,GAAmB,qCACnBC,GAAgB,6BAChBC,GAAiB,+BAGjBC,GAAYD,GACZE,IAAiB,EAIjBC,GAA+B,CAAC,wBAAyB,aACzDC,GAA4B,YAI5Bz0I,GAAS,KAKT00I,GAAct2J,EAAS40B,cAAc,QAErC2hI,GAAoB,SAA2BC,GACjD,OAAOA,aAAqB5vL,QAAU4vL,aAAqB7lD,UAUzD8lD,GAAe,SAAsBC,GACnC90I,IAAUA,KAAW80I,IAMpBA,GAAwB,WAAjBpJ,EAAQoJ,KAClBA,EAAM,IAKRA,EAAMl+K,EAAMk+K,GACZnD,GACqEA,IAAJ,IAAjE6C,GAA6B7wL,QAAQmxL,EAAInD,mBAAgD8C,GAAgDK,EAAInD,kBAE7I3D,GAA0C,0BAAtB2D,GAAgD,SAAU57B,GAC5E,OAAOA,GACLq3B,EAGJ+E,GAAe,iBAAkB2C,EAAM/G,EAAS,GAAI+G,EAAI3C,aAAcnE,IAAqBoE,GAC3FC,GAAe,iBAAkByC,EAAM/G,EAAS,GAAI+G,EAAIzC,aAAcrE,IAAqBsE,GAC3F2B,GAAsB,sBAAuBa,EAAM/G,EAASn3K,EAAMs9K,IAClEY,EAAIC,kBACJ/G,IAEEkG,GACFH,GAAgB,sBAAuBe,EAAM/G,EAASn3K,EAAMo9K,IAC5Dc,EAAIE,kBACJhH,IAEEgG,GACFH,GAAkB,oBAAqBiB,EAAM/G,EAAS,GAAI+G,EAAIjB,gBAAiB7F,IAAqB8F,GACpGnB,GAAc,gBAAiBmC,EAAM/G,EAAS,GAAI+G,EAAInC,YAAa3E,IAAqB,GACxF4E,GAAc,gBAAiBkC,EAAM/G,EAAS,GAAI+G,EAAIlC,YAAa5E,IAAqB,GACxF4F,GAAe,iBAAkBkB,GAAMA,EAAIlB,aAC3Cf,IAA0C,IAAxBiC,EAAIjC,gBAEtBC,IAA0C,IAAxBgC,EAAIhC,gBAEtBC,GAA0B+B,EAAI/B,0BAA2B,EAEzDC,GAAqB8B,EAAI9B,qBAAsB,EAE/CC,GAAiB6B,EAAI7B,iBAAkB,EAEvCG,GAAa0B,EAAI1B,aAAc,EAE/BC,GAAsByB,EAAIzB,sBAAuB,EAEjDC,GAAsBwB,EAAIxB,sBAAuB,EAEjDH,GAAa2B,EAAI3B,aAAc,EAE/BI,IAAoC,IAArBuB,EAAIvB,aAEnBC,GAAuBsB,EAAItB,uBAAwB,EAEnDE,IAAoC,IAArBoB,EAAIpB,aAEnBC,GAAWmB,EAAInB,WAAY,EAE3BzB,GAAmB4C,EAAIG,oBAAsB/C,GAC7CoC,GAAYQ,EAAIR,WAAaD,GAEzBS,EAAIvC,yBAA2BoC,GAAkBG,EAAIvC,wBAAwBC,gBAC/ED,GAAwBC,aAAesC,EAAIvC,wBAAwBC,cAGjEsC,EAAIvC,yBAA2BoC,GAAkBG,EAAIvC,wBAAwBE,sBAC/EF,GAAwBE,mBAAqBqC,EAAIvC,wBAAwBE,oBAGvEqC,EAAIvC,yBAAiG,mBAA/DuC,EAAIvC,wBAAwBG,iCACpEH,GAAwBG,+BAAiCoC,EAAIvC,wBAAwBG,gCAGnFM,KACFF,IAAkB,GAGhBO,KACFD,IAAa,GAKXQ,KACFzB,GAAepE,EAAS,GAAI9B,EAAmBvwG,IAC/C22G,GAAe,IAEW,IAAtBuB,GAAa56B,OACf+0B,EAASoE,GAAc9D,GACvBN,EAASsE,GAAcr5B,KAGA,IAArB46B,GAAajF,MACfZ,EAASoE,GAAc7D,GACvBP,EAASsE,GAAc1D,GACvBZ,EAASsE,GAAcxD,KAGO,IAA5B+E,GAAarF,aACfR,EAASoE,GAAc5D,GACvBR,EAASsE,GAAc1D,GACvBZ,EAASsE,GAAcxD,KAGG,IAAxB+E,GAAahF,SACfb,EAASoE,GAAc1D,GACvBV,EAASsE,GAAczD,GACvBb,EAASsE,GAAcxD,KAMvBiG,EAAII,WACF/C,KAAiBC,KACnBD,GAAev7K,EAAMu7K,KAGvBpE,EAASoE,GAAc2C,EAAII,SAAUlH,KAGnC8G,EAAIK,WACF9C,KAAiBC,KACnBD,GAAez7K,EAAMy7K,KAGvBtE,EAASsE,GAAcyC,EAAIK,SAAUnH,KAGnC8G,EAAIC,mBACNhH,EAASkG,GAAqBa,EAAIC,kBAAmB/G,IAGnD8G,EAAIjB,kBACFA,KAAoBC,KACtBD,GAAkBj9K,EAAMi9K,KAG1B9F,EAAS8F,GAAiBiB,EAAIjB,gBAAiB7F,KAK7C0F,KACFvB,GAAa,UAAW,GAKtBc,IACFlF,EAASoE,GAAc,CAAC,OAAQ,OAAQ,SAKtCA,GAAaiD,QACfrH,EAASoE,GAAc,CAAC,iBACjBQ,GAAY0C,OAKjBzqB,GACFA,EAAOkqB,GAGT90I,GAAS80I,IAGPQ,GAAiCvH,EAAS,GAAI,CAAC,KAAM,KAAM,KAAM,KAAM,UACvEwH,GAA0BxH,EAAS,GAAI,CAAC,gBAAiB,OAAQ,QAAS,mBAK1EyH,GAA+BzH,EAAS,GAAI,CAAC,QAAS,QAAS,OAAQ,IAAK,WAK5E0H,GAAe1H,EAAS,GAAIO,GAChCP,EAAS0H,GAAclH,GACvBR,EAAS0H,GAAcjH,GACvB,IAAIkH,GAAkB3H,EAAS,GAAIU,GACnCV,EAAS2H,GAAiBhH,GAU1B,IAAIiH,GAAuB,SAA8B1yC,GACvD,IAAI37G,EAAS2pJ,EAAchuC,GAGtB37G,GAAWA,EAAOsuJ,UACrBtuJ,EAAS,CACPuuJ,aAAcxB,GACduB,QAAS,aAIb,IAAIA,EAAUxI,EAAkBnqC,EAAQ2yC,SACpCE,EAAgB1I,EAAkB9lJ,EAAOsuJ,SAE7C,OAAI3yC,EAAQ4yC,eAAiBzB,GAIvB9sJ,EAAOuuJ,eAAiBxB,GACP,QAAZuB,EAMLtuJ,EAAOuuJ,eAAiB1B,GACP,QAAZyB,IAAwC,mBAAlBE,GAAsCR,GAA+BQ,IAK7F/1G,QAAQ01G,GAAaG,IAG1B3yC,EAAQ4yC,eAAiB1B,GAIvB7sJ,EAAOuuJ,eAAiBxB,GACP,SAAZuB,EAKLtuJ,EAAOuuJ,eAAiBzB,GACP,SAAZwB,GAAsBL,GAAwBO,GAKhD/1G,QAAQ21G,GAAgBE,IAG7B3yC,EAAQ4yC,eAAiBxB,OAIvB/sJ,EAAOuuJ,eAAiBzB,KAAkBmB,GAAwBO,QAIlExuJ,EAAOuuJ,eAAiB1B,KAAqBmB,GAA+BQ,OAMxEJ,GAAgBE,KAAaJ,GAA6BI,KAAaH,GAAaG,QAe5FG,GAAe,SAAsB3/B,GACvC+2B,EAAU8C,EAAUrgE,QAAS,CAC3BqzB,QAASmT,IAGX,IAEEA,EAAK5iG,WAAWC,YAAY2iG,GAC5B,MAAOvoK,IACP,IACEuoK,EAAK4/B,UAAY5E,GACjB,MAAOvjM,IACPuoK,EAAKxpC,YAYPqpE,GAAmB,SAA0Bn6L,EAAMs6J,GACrD,IACE+2B,EAAU8C,EAAUrgE,QAAS,CAC3Bm5B,UAAWqN,EAAK8/B,iBAAiBp6L,GACjC2tF,KAAM2sE,IAER,MAAOvoK,IACPs/L,EAAU8C,EAAUrgE,QAAS,CAC3Bm5B,UAAW,KACXt/D,KAAM2sE,IAMV,GAFAA,EAAK+/B,gBAAgBr6L,GAER,OAATA,IAAkBu2L,GAAav2L,GACjC,GAAIs3L,IAAcC,GAChB,IACE0C,GAAa3/B,GACb,MAAOvoK,UAET,IACEuoK,EAAK/iG,aAAav3D,EAAM,IACxB,MAAOjO,OAYXuoM,GAAgB,SAAuBC,GAEzC,IAAI5xH,EACA6xH,EAEJ,GAAInD,GACFkD,EAAQ,oBAAsBA,MACzB,CAEL,IAAIxzL,EAAUwqL,EAAYgJ,EAAO,eACjCC,EAAoBzzL,GAAWA,EAAQ,GAGf,0BAAtB8uL,KAEF0E,EAAQ,iEAAmEA,EAAQ,kBAGrF,IAAIE,EAAepF,GAAqBA,GAAmB7gB,WAAW+lB,GAASA,EAM/E,GAAI/B,KAAcD,GAChB,IACE5vH,GAAM,IAAImsH,GAAY4F,gBAAgBD,EAAc5E,IACpD,MAAO9jM,KAKX,IAAK42E,IAAQA,EAAI9c,gBAAiB,CAChC8c,EAAM4sH,GAAeoF,eAAenC,GAAW,WAAY,MAE3D,IACE7vH,EAAI9c,gBAAgB+uI,UAAYnC,GAAiB,GAAKgC,EACtD,MAAO1oM,MAIX,IAAIJ,EAAOg3E,EAAIh3E,MAAQg3E,EAAI9c,gBAQ3B,OANI0uI,GAASC,GACX7oM,EAAKkpM,aAAav4J,EAAS64H,eAAeq/B,GAAoB7oM,EAAKmpM,WAAW,IAAM,MAKlFtC,KAAcD,GACT/gI,GAAqBlqE,KAAKq7E,EAAKwuH,GAAiB,OAAS,QAAQ,GAGnEA,GAAiBxuH,EAAI9c,gBAAkBl6D,GAU5CopM,GAAkB,SAAyB3G,GAC7C,OAAOoB,GAAmBloM,KAAK8mM,EAAKgB,eAAiBhB,EAAMA,EAC3DO,EAAWqG,aAAerG,EAAWsG,aAAetG,EAAWuG,UAAW,MAAM,IAU9EC,GAAe,SAAsBC,GACvC,OAAOA,aAAe3qC,IAA4C,kBAAjB2qC,EAAIC,UAAoD,kBAApBD,EAAIE,aAAuD,oBAApBF,EAAIzjI,eAAgCyjI,EAAIrf,sBAAsBlrB,IAAgD,oBAAxBuqC,EAAIf,iBAA8D,oBAArBe,EAAI7jI,cAA2D,kBAArB6jI,EAAIrB,cAAyD,oBAArBqB,EAAIP,eAUnVU,GAAU,SAAiB/1G,GAC7B,MAAyB,WAAlBoqG,EAAQ6E,GAAqBjvG,aAAkBivG,EAAOjvG,GAA8B,WAApBoqG,EAAQpqG,IAAmD,kBAApBA,EAAO6uG,UAAoD,kBAApB7uG,EAAO61G,UAY1JG,GAAe,SAAsBC,EAAYC,EAAa3+L,GAC3DwqG,GAAMk0F,IAIXvK,EAAa3pF,GAAMk0F,IAAa,SAAU9zF,GACxCA,EAAKr6G,KAAK6mM,EAAWuH,EAAa3+L,EAAMmnD,QAexCy3I,GAAoB,SAA2BD,GACjD,IAAIvtM,EAOJ,GAJAqtM,GAAa,yBAA0BE,EAAa,MAIhDP,GAAaO,GAGf,OAFAzB,GAAayB,IAEN,EAKT,GAAIhK,EAAW,kBAAmBgK,EAAYL,UAG5C,OAFApB,GAAayB,IAEN,EAKT,IAAI5B,EAAU5H,GAAkBwJ,EAAYL,UAU5C,GAPAG,GAAa,sBAAuBE,EAAa,CAC/C5B,QAASA,EACT8B,YAAavF,KAKXqF,EAAYG,kBAAoBN,GAAQG,EAAYI,sBAAwBP,GAAQG,EAAYvtM,WAAaotM,GAAQG,EAAYvtM,QAAQ2tM,qBAAuBpK,EAAW,UAAWgK,EAAYd,YAAclJ,EAAW,UAAWgK,EAAYJ,aAGpP,OAFArB,GAAayB,IAEN,EAKT,GAAgB,WAAZ5B,GAAwBpI,EAAW,aAAcgK,EAAYd,WAG/D,OAFAX,GAAayB,IAEN,EAKT,IAAKrF,GAAayD,IAAYjD,GAAYiD,GAAU,CAElD,IAAKjD,GAAYiD,IAAYiC,GAAwBjC,GAAU,CAC7D,GAAIrD,GAAwBC,wBAAwBxtL,QAAUwoL,EAAW+E,GAAwBC,aAAcoD,GAAU,OAAO,EAChI,GAAIrD,GAAwBC,wBAAwBzjD,UAAYwjD,GAAwBC,aAAaoD,GAAU,OAAO,EAKxH,GAAIlC,KAAiBG,GAAgB+B,GAAU,CAC7C,IAAIpiI,EAAay9H,EAAcuG,IAAgBA,EAAYhkI,WACvDojI,EAAa5F,EAAcwG,IAAgBA,EAAYZ,WAE3D,GAAIA,GAAcpjI,EAGhB,IAFA,IAAIskI,EAAalB,EAAW9sM,OAEnBH,EAAImuM,EAAa,EAAGnuM,GAAK,IAAKA,EACrC6pE,EAAWmjI,aAAa7F,EAAU8F,EAAWjtM,IAAI,GAAOonM,EAAeyG,IAO7E,OAFAzB,GAAayB,IAEN,EAKT,OAAIA,aAAuBhH,IAAYmF,GAAqB6B,IAC1DzB,GAAayB,IAEN,GAGQ,aAAZ5B,GAAsC,YAAZA,IAA0BpI,EAAW,uBAAwBgK,EAAYd,YAQpG1D,IAA+C,IAAzBwE,EAAYrH,WAEpClmM,EAAUutM,EAAYJ,YACtBntM,EAAUqjM,EAAcrjM,EAAS2nM,GAAiB,KAClD3nM,EAAUqjM,EAAcrjM,EAAS4nM,GAAY,KAEzC2F,EAAYJ,cAAgBntM,IAC9BkjM,EAAU8C,EAAUrgE,QAAS,CAC3BqzB,QAASu0C,EAAY1G,cAEvB0G,EAAYJ,YAAcntM,IAM9BqtM,GAAa,wBAAyBE,EAAa,OAE5C,IAzBLzB,GAAayB,IAEN,IAoCPO,GAAoB,SAA2BC,EAAOC,EAAQlrM,GAEhE,GAAIwmM,KAA4B,OAAX0E,GAA8B,SAAXA,KAAuBlrM,KAASqxC,GAAYrxC,KAAS2nM,IAC3F,OAAO,EAQT,GAAI5B,KAAoBF,GAAYqF,IAAWzK,EAAWsE,GAAamG,SAAgB,GAAIpF,IAAmBrF,EAAWuE,GAAakG,SAAgB,IAAK5F,GAAa4F,IAAWrF,GAAYqF,IAC7L,KAGAJ,GAAwBG,KAAWzF,GAAwBC,wBAAwBxtL,QAAUwoL,EAAW+E,GAAwBC,aAAcwF,IAAUzF,GAAwBC,wBAAwBzjD,UAAYwjD,GAAwBC,aAAawF,MAAYzF,GAAwBE,8BAA8BztL,QAAUwoL,EAAW+E,GAAwBE,mBAAoBwF,IAAW1F,GAAwBE,8BAA8B1jD,UAAYwjD,GAAwBE,mBAAmBwF,KAEze,OAAXA,GAAmB1F,GAAwBG,iCAAmCH,GAAwBC,wBAAwBxtL,QAAUwoL,EAAW+E,GAAwBC,aAAczlM,IAAUwlM,GAAwBC,wBAAwBzjD,UAAYwjD,GAAwBC,aAAazlM,KAClS,OAAO,OAIJ,GAAIknM,GAAoBgE,SAAgB,GAAIzK,EAAW0E,GAAkB5E,EAAcvgM,EAAOklM,GAAmB,WAAa,GAAgB,QAAXgG,GAA+B,eAAXA,GAAsC,SAAXA,GAAgC,WAAVD,GAAwD,IAAlClpB,EAAc/hL,EAAO,WAAkBgnM,GAAciE,IAAe,GAAIjF,KAA4BvF,EAAWwE,GAAqB1E,EAAcvgM,EAAOklM,GAAmB,WAAa,GAAKllM,EACja,OAAO,OAGT,OAAO,GAUL8qM,GAA0B,SAAiCjC,GAC7D,OAAOA,EAAQjyL,QAAQ,KAAO,GAc5Bu0L,GAAsB,SAA6BV,GACrD,IAAIW,EACAprM,EACAkrM,EACAxhD,EAGJ6gD,GAAa,2BAA4BE,EAAa,MAEtD,IAAI3f,EAAa2f,EAAY3f,WAG7B,GAAKA,EAAL,CAIA,IAAIugB,EAAY,CACdC,SAAU,GACVC,UAAW,GACXC,UAAU,EACVC,kBAAmBnG,IAErB57C,EAAIohC,EAAW/tL,OAGf,MAAO2sJ,IAAK,CACV0hD,EAAOtgB,EAAWphC,GAClB,IAAIgiD,EAAQN,EACRr8L,EAAO28L,EAAM38L,KACb+5L,EAAe4C,EAAM5C,aAezB,GAdA9oM,EAAiB,UAAT+O,EAAmBq8L,EAAKprM,MAAQwgM,EAAW4K,EAAKprM,OACxDkrM,EAASjK,GAAkBlyL,GAG3Bs8L,EAAUC,SAAWJ,EACrBG,EAAUE,UAAYvrM,EACtBqrM,EAAUG,UAAW,EACrBH,EAAUM,mBAAgB/pK,EAE1B2oK,GAAa,wBAAyBE,EAAaY,GAEnDrrM,EAAQqrM,EAAUE,WAGdF,EAAUM,gBAMdzC,GAAiBn6L,EAAM07L,GAIlBY,EAAUG,UAMf,GAAI/K,EAAW,OAAQzgM,GACrBkpM,GAAiBn6L,EAAM07L,OADzB,CAQIxE,KACFjmM,EAAQugM,EAAcvgM,EAAO6kM,GAAiB,KAC9C7kM,EAAQugM,EAAcvgM,EAAO8kM,GAAY,MAK3C,IAAImG,EAAQhK,GAAkBwJ,EAAYL,UAE1C,GAAKY,GAAkBC,EAAOC,EAAQlrM,GAAtC,CAkBA,IAVIymM,IAAoC,OAAXyE,GAA8B,SAAXA,IAE9ChC,GAAiBn6L,EAAM07L,GAGvBzqM,EAAQ0mM,GAA8B1mM,GAKpCokM,IAAgD,WAA1BzF,EAAQ6D,IAAuE,oBAAlCA,EAAaoJ,iBAClF,GAAI9C,QACF,OAAQtG,EAAaoJ,iBAAiBX,EAAOC,IAC3C,IAAK,cACHlrM,EAAQokM,GAAmB7gB,WAAWvjL,GACtC,MAEF,IAAK,mBACHA,EAAQokM,GAAmBrB,gBAAgB/iM,GAC3C,MAOR,IACM8oM,EACF2B,EAAYoB,eAAe/C,EAAc/5L,EAAM/O,GAG/CyqM,EAAYnkI,aAAav3D,EAAM/O,GAGjCmgM,EAAS+C,EAAUrgE,SACnB,MAAO/hI,QAKXypM,GAAa,0BAA2BE,EAAa,QASnDqB,GAAqB,SAASA,EAAmB3a,GACnD,IAAI4a,EAEAC,EAAiBlC,GAAgB3Y,GAIrCoZ,GAAa,0BAA2BpZ,EAAU,MAElD,MAAO4a,EAAaC,EAAeC,WAEjC1B,GAAa,yBAA0BwB,EAAY,MAI/CrB,GAAkBqB,KAMlBA,EAAW7uM,mBAAmBomM,GAChCwI,EAAmBC,EAAW7uM,SAKhCiuM,GAAoBY,IAKtBxB,GAAa,yBAA0BpZ,EAAU,OAkTnD,OAtSA+R,EAAUgJ,SAAW,SAAU5C,GAC7B,IACI5oM,EACAyrM,EACA1B,EACA2B,EACAC,EALAtE,EAAMjrM,UAAUC,OAAS,QAAsB6kC,IAAjB9kC,UAAU,GAAmBA,UAAU,GAAK,GAkB9E,GARA0qM,IAAkB8B,EAEd9B,KACF8B,EAAQ,eAKW,kBAAVA,IAAuBgB,GAAQhB,GAAQ,CAEhD,GAA8B,oBAAnBA,EAAMr/L,SACf,MAAMy2L,EAAgB,8BAItB,GAFA4I,EAAQA,EAAMr/L,WAEO,kBAAVq/L,EACT,MAAM5I,EAAgB,mCAO5B,IAAKwC,EAAUnuG,YAAa,CAC1B,GAAqC,WAAjC4pG,EAAQ9+K,EAAOysL,eAA6D,oBAAxBzsL,EAAOysL,aAA6B,CAC1F,GAAqB,kBAAVhD,EACT,OAAOzpL,EAAOysL,aAAahD,GAG7B,GAAIgB,GAAQhB,GACV,OAAOzpL,EAAOysL,aAAahD,EAAML,WAIrC,OAAOK,EAkBT,GAbKnD,IACH2B,GAAaC,GAKf7E,EAAUrgE,QAAU,GAGC,kBAAVymE,IACT1C,IAAW,GAGTA,IAEF,GAAI0C,EAAMc,SAAU,CAClB,IAAIvB,EAAU5H,GAAkBqI,EAAMc,UAEtC,IAAKhF,GAAayD,IAAYjD,GAAYiD,GACxC,MAAMnI,EAAgB,iEAGrB,GAAI4I,aAAiB9F,EAG1B9iM,EAAO2oM,GAAc,iBACrB8C,EAAezrM,EAAKyjM,cAAcM,WAAW6E,GAAO,GAEtB,IAA1B6C,EAAa/I,UAA4C,SAA1B+I,EAAa/B,UAGX,SAA1B+B,EAAa/B,SADtB1pM,EAAOyrM,EAKPzrM,EAAK8lE,YAAY2lI,OAEd,CAEL,IAAK9F,KAAeJ,KAAuBC,KACnB,IAAxBoD,EAAM1yL,QAAQ,KACZ,OAAOwtL,IAAsBmC,GAAsBnC,GAAmB7gB,WAAW+lB,GAASA,EAQ5F,GAHA5oM,EAAO2oM,GAAcC,IAGhB5oM,EACH,OAAO2lM,GAAa,KAAOE,GAAsBlC,GAAY,GAM7D3jM,GAAQ0lM,IACV4C,GAAatoM,EAAK6rM,YAKpB,IAAIC,EAAe1C,GAAgBlD,GAAW0C,EAAQ5oM,GAItD,MAAO+pM,EAAc+B,EAAaP,WAEH,IAAzBxB,EAAYrH,UAAkBqH,IAAgB2B,GAM9C1B,GAAkBD,KAMlBA,EAAYvtM,mBAAmBomM,GACjCwI,GAAmBrB,EAAYvtM,SAKjCiuM,GAAoBV,GAEpB2B,EAAU3B,GAMZ,GAHA2B,EAAU,KAGNxF,GACF,OAAO0C,EAKT,GAAIjD,GAAY,CACd,GAAIC,GAAqB,CACvB+F,EAAa7H,GAAuBnoM,KAAKqE,EAAKyjM,eAE9C,MAAOzjM,EAAK6rM,WAEVF,EAAW7lI,YAAY9lE,EAAK6rM,iBAG9BF,EAAa3rM,EAcf,OAXI4kM,GAAamH,aAQfJ,EAAa5H,GAAWpoM,KAAKgnM,EAAkBgJ,GAAY,IAGtDA,EAGT,IAAIK,EAAiBxG,GAAiBxlM,EAAKuoM,UAAYvoM,EAAKipM,UAc5D,OAXIzD,IAAkBd,GAAa,aAAe1kM,EAAKyjM,eAAiBzjM,EAAKyjM,cAAcwI,SAAWjsM,EAAKyjM,cAAcwI,QAAQ59L,MAAQ0xL,EAAW6B,GAAc5hM,EAAKyjM,cAAcwI,QAAQ59L,QAC3L29L,EAAiB,aAAehsM,EAAKyjM,cAAcwI,QAAQ59L,KAAO,MAAQ29L,GAKxEzG,KACFyG,EAAiBnM,EAAcmM,EAAgB7H,GAAiB,KAChE6H,EAAiBnM,EAAcmM,EAAgB5H,GAAY,MAGtDV,IAAsBmC,GAAsBnC,GAAmB7gB,WAAWmpB,GAAkBA,GAUrGxJ,EAAU0J,UAAY,SAAU7E,GAC9BD,GAAaC,GAEb5B,IAAa,GASfjD,EAAU2J,YAAc,WACtB55I,GAAS,KACTkzI,IAAa,GAcfjD,EAAU4J,iBAAmB,SAAUp1C,EAAK0zC,EAAMprM,GAE3CizD,IACH60I,GAAa,IAGf,IAAImD,EAAQhK,GAAkBvpC,GAC1BwzC,EAASjK,GAAkBmK,GAC/B,OAAOJ,GAAkBC,EAAOC,EAAQlrM,IAW1CkjM,EAAU6J,QAAU,SAAUvC,EAAYwC,GACZ,oBAAjBA,IAIX12F,GAAMk0F,GAAcl0F,GAAMk0F,IAAe,GACzCpK,EAAU9pF,GAAMk0F,GAAawC,KAY/B9J,EAAU+J,WAAa,SAAUzC,GAC/B,GAAIl0F,GAAMk0F,GACR,OAAOrK,EAAS7pF,GAAMk0F,KAW1BtH,EAAUgK,YAAc,SAAU1C,GAC5Bl0F,GAAMk0F,KACRl0F,GAAMk0F,GAAc,KAUxBtH,EAAUiK,eAAiB,WACzB72F,GAAQ,IAGH4sF,EAGT,IAAIkK,GAASnK,KAEb,OAAOmK,O,iECxoDLr+L,EAAO,WACPkT,EAAU;;;;;;;;;;;;;;;;;CAkBd,QAAgBlT,EAAMkT,EAAS,Q,miECoBxB,SAASorL,EAAO1wM,EAAGyD,GACtB,IAAI1D,EAAI,GACR,IAAK,IAAInB,KAAKoB,EAAO1B,OAAOW,UAAUJ,eAAea,KAAKM,EAAGpB,IAAM6E,EAAEwW,QAAQrb,GAAK,IAC9EmB,EAAEnB,GAAKoB,EAAEpB,IACb,GAAS,MAALoB,GAAqD,oBAAjC1B,OAAOsvK,sBACtB,KAAI3tK,EAAI,EAAb,IAAgBrB,EAAIN,OAAOsvK,sBAAsB5tK,GAAIC,EAAIrB,EAAEwB,OAAQH,IAC3DwD,EAAEwW,QAAQrb,EAAEqB,IAAM,GAAK3B,OAAOW,UAAUkhG,qBAAqBzgG,KAAKM,EAAGpB,EAAEqB,MACvEF,EAAEnB,EAAEqB,IAAMD,EAAEpB,EAAEqB,KAE1B,OAAOF,EAwDkBzB,OAAOY,OA0GXZ,OAAOY,O;;;;;;;;;;;;;;;;;AC1LhC,MAAMyxM,EAAW,CAEbC,MAAO,SAOLC,EAAa,CAEfC,SAAU,eAEVC,OAAQ,aAERC,OAAQ,aAERC,SAAU,WAEVL,MAAO,QAEPM,QAAS,eAOPC,EAAe,CAEjBC,WAAY,YAEZC,eAAgB,WAEhBP,SAAU,eAEVC,OAAQ,aAERC,OAAQ,aAERJ,MAAO,QAEPM,QAAS,eAOPI,EAAgB,CAElBC,KAAM,OAENC,eAAgB,iBAEhBC,QAAS,UAOPC,EAAsB,CAExBC,aAAc,eAEdC,eAAgB,iBAEhBC,cAAe,gBAEfC,8BAA+B,gCAE/BC,wBAAyB,0BAEzBC,aAAc;;;;;;;;;;;;;;;;;AAmBlB,SAASC,IACL,MAAO,CACH,CAAC,8BAA0D,uDAC3D,CAAC,kBAAwC,GACzC,CAAC,sBAAgD,6LAGjD,CAAC,qBAA8C,qJAG/C,CAAC,wBAAoD,kKAGrD,CAAC,gBAAoC,+EAErC,CAAC,qBAA8C,kCAC/C,CAAC,oBAA4C,iCAC7C,CAAC,6BAA8D,uEAC/D,CAAC,yBAAoD,wDACrD,CAAC,yBAA+D,6GAEhE,CAAC,yCAA+E,0LAGhF,CAAC,8BAAgE,+FAEjE,CAAC,mCAA0E,wDAC3E,CAAC,wBAA4C,0DAC7C,CAAC,0BAAwD,gKAGzD,CAAC,uBAA+C,+BAChD,CAAC,2BAAwD,mFACzD,CAAC,kBAAwC,sCACzC,CAAC,0BAAwD,sIAEzD,CAAC,kBAAwC,qEACzC,CAAC,sBAA0C,sLAG3C,CAAC,sBAAgD,sCACjD,CAAC,6BAAiD,wLAGlD,CAAC,wBAAoD,uDACrD,CAAC,iCAAsE,gOAIvE,CAAC,wBAAoD,wEACrD,CAAC,+BAAkE,4FACnE,CAAC,iBAAsC,wCACvC,CAAC,2BAA0D,qEAC3D,CAAC,mBAA0C,sEAC3C,CAAC,qBAA8C,kDAC/C,CAAC,sBAAkD,4DACnD,CAAC,2BAA0D,+KAE3D,CAAC,gCAA2D,iFAC5D,CAAC,0BAAwD,uGAEzD,CAAC,2BAA0D,0FAE3D,CAAC,uBAA6C,+IAE9C,CAAC,uBAA+C,2GAEhD,CAAC,kBAA0C,gEAC3C,CAAC,4BAAuD,oFACxD,CAAC,wBAAoD,gPAIrD,CAAC,uBAAkD,wCACnD,CAAC,2BAA0D,4GAE3D,CAAC,kBAAwC,6KAEzC,CAAC,2BAAuD,2EACxD,CAAC,qBAA8C,4CAC/C,CAAC,iBAAsC,4DACvC,CAAC,4BAAgE,2FACjE,CAAC,+BAA0D,8HAE3D,CAAC,0BAAwD,gIAEzD,CAAC,6BAAiD,6EAClD,CAAC,wBAAoD,kDACrD,CAAC,wBAAoD,sCACrD,CAAC,yBAAsD,oEACvD,CAAC,4BAA4D,oKAG7D,CAAC,6BAAqD,2CACtD,CAAC,gCAA2D,mEAC5D,CAAC,wBAAoD,wEACrD,CAAC,2BAAuD,uEACxD,CAAC,eAAuC,iDACxC,CAAC,+BAAyD,2EAC1D,CAAC,8BAAkD,yEACnD,CAAC,4CAAqE,wJAGtE,CAAC,0BAAwD,kGACzD,CAAC,iBAAsC,sCACvC,CAAC,oBAA4C,6DAC7C,CAAC,aAA8B,0GAE/B,CAAC,yBAAsD,yJAGvD,CAAC,+CAA8E,kLAG/E,CAAC,iBAAsC,4FACvC,CAAC,wBAAoD,yEACrD,CAAC,2BAA0D,kEAC3D,CAAC,kBAAwC,4DACzC,CAAC,8BAAgE,2EACjE,CAAC,8BAAgE,mDACjE,CAAC,uBAAkD,6DACnD,CAAC,gCAAsE,yDACvE,CAAC,wCAA4E,4EAC7E,CAAC,sBAAgD,sEACjD,CAAC,WAA0B,+BAC3B,CAAC,sBAA2C,yEAC5C,CAAC,qBAAwD,0FAEzD,CAAC,6BAAwD,2GAEzD,CAAC,4BAA4D,sHAC7D,CAAC,gCAA+D,2EAChE,CAAC,gCAAoE,6DACrE,CAAC,oBAA4C,2CAC7C,CAAC,kBAAwC,wEACzC,CAAC,kBAAsC,4FAEvC,CAAC,iBAAsC,0DACvC,CAAC,iBAAsC,+EACvC,CAAC,mBAA0C,GAC3C,CAAC,iBAAsC,kDACvC,CAAC,2BAA0D,+EAC3D,CAAC,uBAAkD,qOAM3D,SAASC,IAIL,MAAO,CACH,CAAC,yCAA+E,2LAYxF,MAAMC,EAAgBF,EAQhBG,EAAeF,EACfG,EAA8B,IAAI,KAAa,OAAQ,WAAYH,KAYnEI,EAA6C,CAC/CC,qBAAsB,kCACtBC,eAAgB,sBAChBC,mBAAoB,0BACpBC,kBAAmB,yBACnBC,qBAAsB,4BACtBC,aAAc,oBACdC,kBAAmB,yBACnBC,iBAAkB,wBAClBC,0BAA2B,iCAC3BC,oBAAqB,6BACrBC,+BAAgC,6BAChCC,+BAAgC,6CAChCC,2BAA4B,kCAC5BC,gCAAiC,uCACjCC,aAAc,4BACdC,uBAAwB,8BACxBC,iBAAkB,2BAClBC,sBAAuB,+BACvBC,eAAgB,sBAChBC,gBAAiB,uBACjBC,uBAAwB,8BACxBC,eAAgB,sBAChBC,aAAc,0BACdC,mBAAoB,0BACpBC,kBAAmB,yBACnBC,aAAc,iCACdC,qBAAsB,4BACtBC,8BAA+B,qCAC/BC,qBAAsB,4BACtBC,4BAA6B,mCAC7BC,cAAe,qBACfC,wBAAyB,+BACzBC,qBAAsB,0BACtBC,wBAAyB,+BACzBC,oBAAqB,oCACrBC,wBAAyB,+BACzBC,uBAAwB,8BACxBC,iBAAkB,2BAClBC,eAAgB,2BAChBC,iBAAkB,sBAClBC,oBAAqB,gCACrBC,qBAAsB,4BACtBC,oBAAqB,2BACrBC,wBAAyB,+BACzBC,eAAgB,sBAChBC,qBAAsB,+BACtBC,kBAAmB,yBACnBC,mBAAoB,mCACpBC,aAAc,kCACdC,6BAA8B,gCAC9BC,uBAAwB,8BACxBC,oBAAqB,mCACrBC,aAAc,iCACdC,qBAAsB,4BACtBC,qBAAsB,4BACtBC,sBAAuB,6BACvBC,yBAA0B,gCAC1BC,iBAAkB,iCAClBC,oBAAqB,oCACrBC,qBAAsB,4BACtBC,qBAAsB,+BACtBC,iBAAkB,mBAClBC,kBAAmB,gDACnBC,uBAAwB,8BACxBC,UAAW,iBACXC,cAAe,qBACfC,iBAAkB,wBAClBC,sBAAuB,6BACvBC,wBAAyB,mDACzBC,cAAe,qBACfC,qBAAsB,4BACtBC,wBAAyB,+BACzBC,eAAgB,sBAChBC,2BAA4B,kCAC5BC,2BAA4B,kCAC5BC,oBAAqB,2BACrBC,+BAAgC,oCAChCC,6BAA8B,4CAC9BC,mBAAoB,0BACpBC,QAAS,eACTC,cAAe,0BACfC,4BAA6B,yBAC7BC,oBAAqB,iCACrBC,yBAA0B,gCAC1BC,wBAAyB,oCACzBC,6BAA8B,oCAC9BC,iBAAkB,wBAClBC,eAAgB,sBAChBC,aAAc,sBACdC,cAAe,qBACfC,cAAe,qBACfC,gBAAiB,uBACjBC,cAAe,qBACfC,wBAAyB,+BACzBC,oBAAqB,4BAmBnBC,EAAY,IAAI,KAAO,kBAC7B,SAASC,EAAUjmH,KAAQnB,GACnBmnH,EAAUrrL,UAAY,eACtBqrL,EAAUjzM,MAAM,SAAS,UAAiBitF,OAAUnB;;;;;;;;;;;;;;;;GAoB5D,SAASqnH,EAAMC,KAAeC,GAC1B,MAAMC,EAAoBF,KAAeC,GAE7C,SAASE,EAAaH,KAAeC,GACjC,OAAOC,EAAoBF,KAAeC,GAE9C,SAASG,EAAwB14J,EAAMtuC,EAAMsZ,GACzC,MAAM2tL,EAAWx6M,OAAOwB,OAAOxB,OAAOwB,OAAO,GAAIsyM,KAAiB,CAAE,CAACvgM,GAAOsZ,IACtE42K,EAAU,IAAI,KAAa,OAAQ,WAAY+W,GACrD,OAAO/W,EAAQ7iM,OAAO2S,EAAM,CACxByd,QAAS6wB,EAAK/tC,OAGtB,SAAS2mM,EAAkB54J,EAAMy3C,EAAQq0D,GACrC,MAAM+sD,EAAsB/sD,EAC5B,KAAMr0D,aAAkBohH,GAIpB,MAHIA,EAAoB5mM,OAASwlF,EAAO54F,YAAYoT,MAChDomM,EAAMr4J,EAAM,kBAEV04J,EAAwB14J,EAAM,iBAAuC,WAAWy3C,EAAO54F,YAAYoT,6FAIjH,SAASumM,EAAoBF,KAAeC,GACxC,GAA0B,kBAAfD,EAAyB,CAChC,MAAM5mM,EAAO6mM,EAAK,GACZO,EAAa,IAAIP,EAAKptK,MAAM,IAIlC,OAHI2tK,EAAW,KACXA,EAAW,GAAG3pL,QAAUmpL,EAAWrmM,MAEhCqmM,EAAWS,cAAch6M,OAAO2S,KAASonM,GAEpD,OAAO5G,EAA4BnzM,OAAOu5M,KAAeC,GAE7D,SAASS,EAAQvmJ,EAAW6lJ,KAAeC,GACvC,IAAK9lJ,EACD,MAAM+lJ,EAAoBF,KAAeC,GASjD,SAASU,EAAUplB,GAGf,MAAM7oK,EAAU,8BAAgC6oK,EAKhD,MAJAukB,EAAUptL,GAIJ,IAAIxrB,MAAMwrB,GASpB,SAASkuL,EAAYzmJ,EAAWznC,GACvBynC,GACDwmJ,EAAUjuL;;;;;;;;;;;;;;;;GAoBlB,MAAMmuL,EAAgB,IAAI7xL,IAC1B,SAAS8xL,EAAaC,GAClBH,EAAYG,aAAen0D,SAAU,+BACrC,IAAI4G,EAAWqtD,EAAc74M,IAAI+4M,GACjC,OAAIvtD,GACAotD,EAAYptD,aAAoButD,EAAK,kDAC9BvtD,IAEXA,EAAW,IAAIutD,EACfF,EAAc5xL,IAAI8xL,EAAKvtD,GAChBA;;;;;;;;;;;;;;;;GA4CX,SAASwtD,EAAetnF,EAAKunF,GACzB,MAAM53I,GAAW,QAAaqwD,EAAK,QACnC,GAAIrwD,EAASmyC,gBAAiB,CAC1B,MAAM9zD,EAAO2hB,EAAS63I,eAChBC,EAAiB93I,EAAS+3I,aAChC,IAAI,QAAUD,EAAyB,OAATF,QAA0B,IAATA,EAAkBA,EAAO,IACpE,OAAOv5J,EAGPq4J,EAAMr4J,EAAM,uBAGpB,MAAMA,EAAO2hB,EAASgM,WAAW,CAAEntE,QAAS+4M,IAC5C,OAAOv5J,EAEX,SAAS25J,EAAwB35J,EAAMu5J,GACnC,MAAMK,GAAwB,OAATL,QAA0B,IAATA,OAAkB,EAASA,EAAKK,cAAgB,GAChFC,GAAav7M,MAAM21E,QAAQ2lI,GAAeA,EAAc,CAACA,IAAcj/L,IAAIy+L,IACpE,OAATG,QAA0B,IAATA,OAAkB,EAASA,EAAKZ,WACjD34J,EAAK85J,gBAAgBP,EAAKZ,UAK9B34J,EAAK+5J,2BAA2BF,EAAoB,OAATN,QAA0B,IAATA,OAAkB,EAASA,EAAKS;;;;;;;;;;;;;;;;GAmBhG,SAASC,IACL,IAAI1/L,EACJ,MAAwB,qBAAT+7D,OAAkD,QAAxB/7D,EAAK+7D,KAAKr5B,gBAA6B,IAAP1iC,OAAgB,EAASA,EAAGsjC,OAAU,GAEnH,SAASq8J,IACL,MAA+B,UAAxBC,KAA2D,WAAxBA,IAE9C,SAASA,IACL,IAAI5/L,EACJ,MAAwB,qBAAT+7D,OAAkD,QAAxB/7D,EAAK+7D,KAAKr5B,gBAA6B,IAAP1iC,OAAgB,EAASA,EAAGmnE,WAAc;;;;;;;;;;;;;;;;GAsBvH,SAAS6zC,IACL,QAAyB,qBAAd/5E,WACPA,WACA,WAAYA,WACgB,mBAArBA,UAAUC,SAMhBy+J,MAAoB,WAAwB,eAAgB1+J,aACtDA,UAAUC,OAKzB,SAAS2+J,IACL,GAAyB,qBAAd5+J,UACP,OAAO,KAEX,MAAM6+J,EAAoB7+J,UAC1B,OAEC6+J,EAAkBC,WAAaD,EAAkBC,UAAU,IAGxDD,EAAkBE,UAElB;;;;;;;;;;;;;;;;GAwBR,MAAMC,EACF37M,YAAY47M,EAAYC,GACpB97M,KAAK67M,WAAaA,EAClB77M,KAAK87M,UAAYA,EAEjBxB,EAAYwB,EAAYD,EAAY,+CACpC77M,KAAK+7M,UAAW,YAAqB,UAEzCr6M,MACI,OAAKi1H,IAQE32H,KAAK+7M,SAAW/7M,KAAK87M,UAAY97M,KAAK67M,WANlC5sM,KAAKs2C,IAAI,IAAoBvlD,KAAK67M;;;;;;;;;;;;;;;;GA0BrD,SAASG,EAAah2J,EAAQonC,GAC1BktH,EAAYt0J,EAAOi2J,SAAU,sCAC7B,MAAM,IAAEt6M,GAAQqkD,EAAOi2J,SACvB,OAAK7uH,EAGE,GAAGzrF,IAAMyrF,EAAKpyE,WAAW,KAAOoyE,EAAK7gD,MAAM,GAAK6gD,IAF5CzrF;;;;;;;;;;;;;;;;GAqBf,MAAMu6M,EACFC,kBAAkBC,EAAWC,EAAaC,GACtCt8M,KAAKo8M,UAAYA,EACbC,IACAr8M,KAAKq8M,YAAcA,GAEnBC,IACAt8M,KAAKs8M,aAAeA,GAG5BH,eACI,OAAIn8M,KAAKo8M,UACEp8M,KAAKo8M,UAEI,qBAAT1kI,MAAwB,UAAWA,KACnCA,KAAKj7B,WAEhB49J,EAAU,mHAEd8B,iBACI,OAAIn8M,KAAKq8M,YACEr8M,KAAKq8M,YAEI,qBAAT3kI,MAAwB,YAAaA,KACrCA,KAAKz6B,aAEhBo9J,EAAU,qHAEd8B,kBACI,OAAIn8M,KAAKs8M,aACEt8M,KAAKs8M,aAEI,qBAAT5kI,MAAwB,aAAcA,KACtCA,KAAKhR,cAEhB2zI,EAAU;;;;;;;;;;;;;;;;GAuBlB,MAAMkC,EAAmB,CAErB,CAAC,uBAAkD,wBAEnD,CAAC,wBAAoD,iBAErD,CAAC,sBAAgD,gBAEjD,CAAC,wBAAoD,iBAErD,CAAC,oBAA4C,iBAE7C,CAAC,oBAA4C,iBAE7C,CAAC,gBAAoC,uBACrC,CAAC,2BAA0D,wBAE3D,CAAC,wBAAoD,qBACrD,CAAC,yBAAsD,qBACvD,CAAC,oCAA4E,4BAE7E,CAAC,oBAA4C,iBAE7C,CAAC,mBAA0C,iBAC3C,CAAC,+BAAkE,oBACnE,CAAC,oBAA4C,sBAC7C,CAAC,oBAA4C,sBAE7C,CAAC,oBAA4C,iBAE7C,CAAC,kCAAwE,wBACzE,CAAC,oBAA4C,qBAC7C,CAAC,iBAAsC,qBACvC,CAAC,kBAAwC,qBAEzC,CAAC,+BAAkE,oBAEnE,CAAC,gBAAoC,4BACrC,CAAC,wBAAoD,0BACrD,CAAC,2BAA0D,qBAC3D,CAAC,wBAAoD,0BACrD,CAAC,mBAA0C,eAI3C,CAAC,gCAAoE,2BACrE,CAAC,uBAAkD,4BAEnD,CAAC,2BAA0D,0BAE3D,CAAC,wBAAoD,6BAErD,CAAC,kCAAwE,+BACzE,CAAC,4BAA4D,8BAC7D,CAAC,6BAA8D,4BAC/D,CAAC,kCAAwE,+BACzE,CAAC,wBAAoD,+BACrD,CAAC,gCAAoE,uCAErE,CAAC,oCAA4E,kBAmB3EC,EAAyB,IAAIZ,EAAM,IAAO;;;;;;;;;;;;;;;;GAChD,SAASa,EAAmBr7J,EAAMj/C,GAC9B,OAAIi/C,EAAKzsB,WAAaxyB,EAAQwyB,SACnBp1B,OAAOwB,OAAOxB,OAAOwB,OAAO,GAAIoB,GAAU,CAAEwyB,SAAUysB,EAAKzsB,WAE/DxyB,EAEXu+H,eAAeg8E,EAAmBt7J,EAAMt/C,EAAQsrF,EAAMjrF,EAASw6M,EAAiB,IAC5E,OAAOC,EAA+Bx7J,EAAMu7J,GAAgBj8E,UACxD,IAAI17H,EAAO,GACPuW,EAAS,GACTpZ,IACe,QAAXL,EACAyZ,EAASpZ,EAGT6C,EAAO,CACHA,KAAMsV,KAAKC,UAAUpY,KAIjC,MAAMmZ,GAAQ,QAAY/b,OAAOwB,OAAO,CAAE6a,IAAKwlC,EAAK4E,OAAO62J,QAAUthM,IAASgxB,MAAM,GAC9E3pC,QAAgBw+C,EAAK07J,wBAK3B,OAJAl6M,EAAQ,gBAAqC,mBACzCw+C,EAAK27J,eACLn6M,EAAQ,qBAA+Cw+C,EAAK27J,cAEzDb,EAAcz/J,OAAdy/J,CAAsBc,EAAgB57J,EAAMA,EAAK4E,OAAOi3J,QAAS7vH,EAAM9xE,GAAQ/b,OAAOwB,OAAO,CAAEe,SAClGc,UAASs6M,eAAgB,eAAiBl4M,OAGtD07H,eAAek8E,EAA+Bx7J,EAAMu7J,EAAgBQ,GAChE/7J,EAAKg8J,kBAAmB,EACxB,MAAMrD,EAAWx6M,OAAOwB,OAAOxB,OAAOwB,OAAO,GAAIw7M,GAAmBI,GACpE,IACI,MAAMU,EAAiB,IAAIC,EAAel8J,GACpC79C,QAAiBnB,QAAQsjL,KAAK,CAChCy3B,IACAE,EAAexmI,UAInBwmI,EAAeE,sBACf,MAAMt2K,QAAa1jC,EAAS0jC,OAC5B,GAAI,qBAAsBA,EACtB,MAAMu2K,EAAiBp8J,EAAM,2CAAoEna,GAErG,GAAI1jC,EAASm6H,MAAQ,iBAAkBz2F,GACnC,OAAOA,EAEN,CACD,MAAM3mC,EAAeiD,EAASm6H,GAAKz2F,EAAK3mC,aAAe2mC,EAAK3gC,MAAM8lB,SAC3DqxL,EAAiBC,GAAsBp9M,EAAa8W,MAAM,OACjE,GAAwB,qCAApBqmM,EACA,MAAMD,EAAiBp8J,EAAM,4BAA6Dna,GAEzF,GAAwB,iBAApBw2K,EACL,MAAMD,EAAiBp8J,EAAM,uBAA2Cna,GAEvE,GAAwB,kBAApBw2K,EACL,MAAMD,EAAiBp8J,EAAM,gBAAqCna,GAEtE,MAAM02K,EAAY5D,EAAS0D,IACvBA,EACKjpL,cACAtjB,QAAQ,UAAW,KAC5B,GAAIwsM,EACA,MAAM5D,EAAwB14J,EAAMu8J,EAAWD,GAG/CjE,EAAMr4J,EAAMu8J,IAIxB,MAAOj5M,GACH,GAAIA,aAAa,KACb,MAAMA,EAEV+0M,EAAMr4J,EAAM,2BAGpBs/E,eAAek9E,EAAsBx8J,EAAMt/C,EAAQsrF,EAAMjrF,EAASw6M,EAAiB,IAC/E,MAAM9sJ,QAAwB6sJ,EAAmBt7J,EAAMt/C,EAAQsrF,EAAMjrF,EAASw6M,GAM9E,MALI,yBAA0B9sJ,GAC1B4pJ,EAAMr4J,EAAM,6BAAiD,CACzDy8J,gBAAiBhuJ,IAGlBA,EAEX,SAASmtJ,EAAgB57J,EAAMvd,EAAMupD,EAAM9xE,GACvC,MAAM27J,EAAO,GAAGpzI,IAAOupD,KAAQ9xE,IAC/B,OAAK8lC,EAAK4E,OAAOi2J,SAGVD,EAAa56J,EAAK4E,OAAQixH,GAFtB,GAAG71H,EAAK4E,OAAO83J,eAAe7mC,IAI7C,MAAMqmC,EACFr9M,YAAYmhD,GACRphD,KAAKohD,KAAOA,EAIZphD,KAAK+9M,MAAQ,KACb/9M,KAAK62E,QAAU,IAAIz0E,SAAQ,CAACgD,EAAG9C,KAC3BtC,KAAK+9M,MAAQr1K,YAAW,IACbpmC,EAAOu3M,EAAa75M,KAAKohD,KAAM,4BACvCo7J,EAAuB96M,UAGlC67M,sBACIh3I,aAAavmE,KAAK+9M,QAG1B,SAASP,EAAiBp8J,EAAMtuC,EAAMvP,GAClC,MAAMy6M,EAAc,CAChBztL,QAAS6wB,EAAK/tC,MAEd9P,EAAS06M,QACTD,EAAYC,MAAQ16M,EAAS06M,OAE7B16M,EAAS26M,cACTF,EAAYE,YAAc36M,EAAS26M,aAEvC,MAAM53M,EAAQuzM,EAAaz4J,EAAMtuC,EAAMkrM,GAGvC,OADA13M,EAAMyxE,WAAWomI,eAAiB56M,EAC3B+C;;;;;;;;;;;;;;;;GAmBXo6H,eAAe09E,EAAch9J,EAAMj/C,GAC/B,OAAOu6M,EAAmBt7J,EAAM,OAAmB,sBAA4Cj/C,GAEnGu+H,eAAe29E,EAAqBj9J,EAAMj/C,GACtC,OAAOu6M,EAAmBt7J,EAAM,OAAmB,sBAA8Cj/C,GAErGu+H,eAAelrG,EAAe4rB,EAAMj/C,GAChC,OAAOu6M,EAAmBt7J,EAAM,OAAmB,sBAA8Cj/C;;;;;;;;;;;;;;;;GAmBrG,SAASm8M,EAAyBC,GAC9B,GAAKA,EAGL,IAEI,MAAMr+G,EAAO,IAAI1xE,KAAK4Z,OAAOm2K,IAE7B,IAAK1hI,MAAMqjB,EAAKn4D,WAEZ,OAAOm4D,EAAKzxE,cAGpB,MAAO/pB;;;;;;;;;;;;;;;;GAkCX,SAAS85M,GAAWxrF,EAAM92D,GAAe,GACrC,OAAO,QAAmB82D,GAAMwrF,WAAWtiJ,GAc/CwkE,eAAe+9E,GAAiBzrF,EAAM92D,GAAe,GACjD,MAAMwiJ,GAAe,QAAmB1rF,GAClCx5C,QAAcklI,EAAaF,WAAWtiJ,GACtCxlC,EAASioL,GAAYnlI,GAC3B4gI,EAAQ1jL,GAAUA,EAAOkoL,KAAOloL,EAAOmoL,WAAanoL,EAAOqB,IAAK2mL,EAAat9J,KAAM,kBACnF,MAAM09J,EAAsC,kBAApBpoL,EAAOooL,SAAwBpoL,EAAOooL,cAAW54K,EACnE64K,EAA8B,OAAbD,QAAkC,IAAbA,OAAsB,EAASA,EAAS,oBACpF,MAAO,CACHpoL,SACA8iD,QACAwlI,SAAUV,EAAyBW,GAA4BvoL,EAAOmoL,YACtEK,aAAcZ,EAAyBW,GAA4BvoL,EAAOqB,MAC1EonL,eAAgBb,EAAyBW,GAA4BvoL,EAAOkoL,MAC5EG,eAAgBA,GAAkB,KAClCK,oBAAkC,OAAbN,QAAkC,IAAbA,OAAsB,EAASA,EAAS,2BAA6B,MAGvH,SAASG,GAA4B5gB,GACjC,OAAyB,IAAlBj2J,OAAOi2J,GAElB,SAASsgB,GAAYnlI,GACjB,MAAOj0D,EAAWgC,EAAS83L,GAAa7lI,EAAMpiE,MAAM,KACpD,QAAkB8uB,IAAd3gB,QACY2gB,IAAZ3e,QACc2e,IAAdm5K,EAEA,OADA7F,EAAU,kDACH,KAEX,IACI,MAAM8F,GAAU,QAAa/3L,GAC7B,OAAK+3L,EAIEhlM,KAAKS,MAAMukM,IAHd9F,EAAU,uCACH,MAIf,MAAO90M,GAEH,OADA80M,EAAU,2CAA4C90M,GAC/C,MAMf,SAAS66M,GAAgB/lI,GACrB,MAAMgmI,EAAcb,GAAYnlI,GAIhC,OAHA4gI,EAAQoF,EAAa,kBACrBpF,EAAmC,qBAApBoF,EAAYZ,IAAqB,kBAChDxE,EAAmC,qBAApBoF,EAAYznL,IAAqB,kBACzCqQ,OAAOo3K,EAAYZ,KAAOx2K,OAAOo3K,EAAYznL;;;;;;;;;;;;;;;;GAmBxD2oG,eAAe++E,GAAqBzsF,EAAMn8C,EAAS6oI,GAAkB,GACjE,GAAIA,EACA,OAAO7oI,EAEX,IACI,aAAaA,EAEjB,MAAOnyE,GAMH,MALIA,aAAa,MAAiBi7M,GAAkBj7M,IAC5CsuH,EAAK5xE,KAAKw+J,cAAgB5sF,SACpBA,EAAK5xE,KAAKy+J,UAGlBn7M,GAGd,SAASi7M,IAAkB,KAAE7sM,IACzB,MAAiB,uBAATA,GACK,4BAATA;;;;;;;;;;;;;;;;GAmBR,MAAMgtM,GACF7/M,YAAY+yH,GACRhzH,KAAKgzH,KAAOA,EACZhzH,KAAK+/M,WAAY,EAKjB//M,KAAKggN,QAAU,KACfhgN,KAAKigN,aAAe,IAExBC,SACQlgN,KAAK+/M,YAGT//M,KAAK+/M,WAAY,EACjB//M,KAAKmgN,YAETC,QACSpgN,KAAK+/M,YAGV//M,KAAK+/M,WAAY,EACI,OAAjB//M,KAAKggN,SACLz5I,aAAavmE,KAAKggN,UAG1BK,YAAYC,GACR,IAAI3kM,EACJ,GAAI2kM,EAAU,CACV,MAAMx3E,EAAW9oI,KAAKigN,aAEtB,OADAjgN,KAAKigN,aAAehxM,KAAKs2C,IAAwB,EAApBvlD,KAAKigN,aAAkB,MAC7Cn3E,EAEN,CAED9oI,KAAKigN,aAAe,IACpB,MAAMM,EAA8D,QAAnD5kM,EAAK3b,KAAKgzH,KAAKwtF,gBAAgBrB,sBAAmC,IAAPxjM,EAAgBA,EAAK,EAC3FmtH,EAAWy3E,EAAU/xL,KAAKkC,MAAQ,IACxC,OAAOzhB,KAAK4wD,IAAI,EAAGipE,IAG3Bq3E,SAASG,GAAW,GAChB,IAAKtgN,KAAK+/M,UAEN,OAEJ,MAAMj3E,EAAW9oI,KAAKqgN,YAAYC,GAClCtgN,KAAKggN,QAAUt3K,YAAWg4F,gBAChB1gI,KAAKygN,cACZ33E,GAEPpI,kBACI,UACU1gI,KAAKgzH,KAAKwrF,YAAW,GAE/B,MAAO95M,GAKH,YAHe,gCAAXA,EAAEoO,MACF9S,KAAKmgN,UAAwB,IAIrCngN,KAAKmgN;;;;;;;;;;;;;;;;GAoBb,MAAMO,GACFzgN,YAAY0gN,EAAWC,GACnB5gN,KAAK2gN,UAAYA,EACjB3gN,KAAK4gN,YAAcA,EACnB5gN,KAAK6gN,kBAETA,kBACI7gN,KAAK8gN,eAAiBxC,EAAyBt+M,KAAK4gN,aACpD5gN,KAAK+gN,aAAezC,EAAyBt+M,KAAK2gN,WAEtDK,MAAMt2K,GACF1qC,KAAK2gN,UAAYj2K,EAASi2K,UAC1B3gN,KAAK4gN,YAAcl2K,EAASk2K,YAC5B5gN,KAAK6gN,kBAET/wD,SACI,MAAO,CACH6wD,UAAW3gN,KAAK2gN,UAChBC,YAAa5gN,KAAK4gN;;;;;;;;;;;;;;;;GAqB9BlgF,eAAeugF,GAAqBjuF,GAChC,IAAIr3G,EACJ,MAAMylC,EAAO4xE,EAAK5xE,KACZrrB,QAAgBi9F,EAAKwrF,aACrBj7M,QAAiBk8M,GAAqBzsF,EAAMx9F,EAAe4rB,EAAM,CAAErrB,aACzEqkL,EAAqB,OAAb72M,QAAkC,IAAbA,OAAsB,EAASA,EAAS29M,MAAM7/M,OAAQ+/C,EAAM,kBACzF,MAAM+/J,EAAc59M,EAAS29M,MAAM,GACnCluF,EAAKouF,sBAAsBD,GAC3B,MAAME,GAA2D,QAAvC1lM,EAAKwlM,EAAYG,wBAAqC,IAAP3lM,OAAgB,EAASA,EAAGta,QAC/FkgN,GAAoBJ,EAAYG,kBAChC,GACAE,EAAeC,GAAkBzuF,EAAKwuF,aAAcH,GAMpDK,EAAiB1uF,EAAK2uF,YACtBC,IAAmB5uF,EAAKirF,OAASkD,EAAYU,iBAAoC,OAAjBL,QAA0C,IAAjBA,OAA0B,EAASA,EAAangN,QACzIsgN,IAAeD,GAAyBE,EACxCE,EAAU,CACZ9tL,IAAKmtL,EAAYjuF,QACjB6uF,YAAaZ,EAAYY,aAAe,KACxCC,SAAUb,EAAYc,UAAY,KAClChE,MAAOkD,EAAYlD,OAAS,KAC5BiE,cAAef,EAAYe,gBAAiB,EAC5ChE,YAAaiD,EAAYjD,aAAe,KACxCvpL,SAAUwsL,EAAYxsL,UAAY,KAClC6sL,eACA92K,SAAU,IAAIg2K,GAAaS,EAAYR,UAAWQ,EAAYP,aAC9De,eAEJpiN,OAAOwB,OAAOiyH,EAAM8uF,GASxBphF,eAAeyhF,GAAOnvF,GAClB,MAAM0rF,GAAe,QAAmB1rF,SAClCiuF,GAAqBvC,SAIrBA,EAAat9J,KAAKghK,sBAAsB1D,GAC9CA,EAAat9J,KAAKihK,0BAA0B3D,GAEhD,SAAS+C,GAAkBh6C,EAAU66C,GACjC,MAAMC,EAAU96C,EAASvrJ,QAAOhW,IAAMo8M,EAAQhvL,MAAKnyB,GAAKA,EAAEqhN,aAAet8M,EAAEs8M,eAC3E,MAAO,IAAID,KAAYD,GAE3B,SAASf,GAAoBkB,GACzB,OAAOA,EAAU1mM,KAAKJ,IAClB,IAAI,WAAE6mM,GAAe7mM,EAAIonD,EAAW4uI,EAAOh2L,EAAI,CAAC,eAChD,MAAO,CACH6mM,aACAxuL,IAAK+uC,EAAS2/I,OAAS,GACvBX,YAAah/I,EAASg/I,aAAe,KACrC9D,MAAOl7I,EAASk7I,OAAS,KACzBC,YAAan7I,EAASm7I,aAAe,KACrC8D,SAAUj/I,EAASk/I,UAAY;;;;;;;;;;;;;;;;GAqB3CvhF,eAAeiiF,GAAgBvhK,EAAMtgB,GACjC,MAAMv9B,QAAiBq5M,EAA+Bx7J,EAAM,IAAIs/E,UAC5D,MAAM17H,GAAO,QAAY,CACrB,WAAc,gBACd,cAAiB87B,IAClByL,MAAM,IACH,aAAEq2K,EAAY,OAAE/F,GAAWz7J,EAAK4E,OAChCrkD,EAAMq7M,EAAgB57J,EAAMwhK,EAAc,YAAyB,OAAO/F,KAC1Ej6M,QAAgBw+C,EAAK07J,wBAE3B,OADAl6M,EAAQ,gBAAqC,oCACtCs5M,EAAcz/J,OAAdy/J,CAAsBv6M,EAAK,CAC9BG,OAAQ,OACRc,UACAoC,YAIR,MAAO,CACH47B,YAAar9B,EAASytD,aACtBE,UAAW3tD,EAAS4tD,WACpBrwB,aAAcv9B,EAASquD;;;;;;;;;;;;;;;;GA0B/B,MAAMixJ,GACF5iN,cACID,KAAK8gC,aAAe,KACpB9gC,KAAK4gC,YAAc,KACnB5gC,KAAKm/M,eAAiB,KAEtB3zK,gBACA,OAASxrC,KAAKm/M,gBACV3wL,KAAKkC,MAAQ1wB,KAAKm/M,eAAiB,IAE3C2D,yBAAyBv/M,GACrB62M,EAAQ72M,EAASwyB,QAAS,kBAC1BqkL,EAAoC,qBAArB72M,EAASwyB,QAAyB,kBACjDqkL,EAAyC,qBAA1B72M,EAASu9B,aAA8B,kBACtD,MAAMowB,EAAY,cAAe3tD,GAA0C,qBAAvBA,EAAS2tD,UACvD9oB,OAAO7kC,EAAS2tD,WAChBquJ,GAAgBh8M,EAASwyB,SAC/B/1B,KAAK+iN,0BAA0Bx/M,EAASwyB,QAASxyB,EAASu9B,aAAcowB,GAE5EwvE,eAAet/E,EAAM8a,GAAe,GAEhC,OADAk+I,GAASp6M,KAAK4gC,aAAe5gC,KAAK8gC,aAAcsgB,EAAM,sBACjD8a,IAAgBl8D,KAAK4gC,aAAgB5gC,KAAKwrC,UAG3CxrC,KAAK8gC,oBACC9gC,KAAKgjN,QAAQ5hK,EAAMphD,KAAK8gC,cACvB9gC,KAAK4gC,aAET,KANI5gC,KAAK4gC,YAQpBqiL,oBACIjjN,KAAK8gC,aAAe,KAExB4/F,cAAct/E,EAAM8hK,GAChB,MAAM,YAAEtiL,EAAW,aAAEE,EAAY,UAAEowB,SAAoByxJ,GAAgBvhK,EAAM8hK,GAC7EljN,KAAK+iN,0BAA0BniL,EAAaE,EAAcsH,OAAO8oB,IAErE6xJ,0BAA0BniL,EAAaE,EAAcqiL,GACjDnjN,KAAK8gC,aAAeA,GAAgB,KACpC9gC,KAAK4gC,YAAcA,GAAe,KAClC5gC,KAAKm/M,eAAiB3wL,KAAKkC,MAAuB,IAAfyyL,EAEvChH,gBAAgB5rL,EAASsoE,GACrB,MAAM,aAAE/3D,EAAY,YAAEF,EAAW,eAAEu+K,GAAmBtmH,EAChDgb,EAAU,IAAIgvG,GAmBpB,OAlBI/hL,IACAs5K,EAAgC,kBAAjBt5K,EAA2B,iBAAuC,CAC7EvQ,YAEJsjF,EAAQ/yE,aAAeA,GAEvBF,IACAw5K,EAA+B,kBAAhBx5K,EAA0B,iBAAuC,CAC5ErQ,YAEJsjF,EAAQjzE,YAAcA,GAEtBu+K,IACA/E,EAAkC,kBAAnB+E,EAA6B,iBAAuC,CAC/E5uL,YAEJsjF,EAAQsrG,eAAiBA,GAEtBtrG,EAEXi8C,SACI,MAAO,CACHhvH,aAAc9gC,KAAK8gC,aACnBF,YAAa5gC,KAAK4gC,YAClBu+K,eAAgBn/M,KAAKm/M,gBAG7BiE,QAAQ5C,GACJxgN,KAAK4gC,YAAc4/K,EAAgB5/K,YACnC5gC,KAAK8gC,aAAe0/K,EAAgB1/K,aACpC9gC,KAAKm/M,eAAiBqB,EAAgBrB,eAE1CkE,SACI,OAAO9jN,OAAOwB,OAAO,IAAI8hN,GAAmB7iN,KAAK8vJ,UAErDwzD,kBACI,OAAOjJ,EAAU;;;;;;;;;;;;;;;;GAoBzB,SAASkJ,GAAwB1vJ,EAAWtjC,GACxC6pL,EAA6B,kBAAdvmJ,GAA+C,qBAAdA,EAA2B,iBAAuC,CAAEtjC,YAExH,MAAMizL,GACFvjN,YAAY0b,GACR,IAAI,IAAEqY,EAAG,KAAEotB,EAAI,gBAAEo/J,GAAoB7kM,EAAIk5I,EAAM88C,EAAOh2L,EAAI,CAAC,MAAO,OAAQ,oBAE1E3b,KAAKwiN,WAAa,WAClBxiN,KAAKyjN,iBAAmB,IAAI3D,GAAiB9/M,MAC7CA,KAAK0jN,eAAiB,KACtB1jN,KAAK2jN,eAAiB,KACtB3jN,KAAKg0B,IAAMA,EACXh0B,KAAKohD,KAAOA,EACZphD,KAAKwgN,gBAAkBA,EACvBxgN,KAAK4gC,YAAc4/K,EAAgB5/K,YACnC5gC,KAAK+hN,YAAcltD,EAAIktD,aAAe,KACtC/hN,KAAKi+M,MAAQppD,EAAIopD,OAAS,KAC1Bj+M,KAAKkiN,cAAgBrtD,EAAIqtD,gBAAiB,EAC1CliN,KAAKk+M,YAAcrpD,EAAIqpD,aAAe,KACtCl+M,KAAKgiN,SAAWntD,EAAImtD,UAAY,KAChChiN,KAAK2hN,YAAc9sD,EAAI8sD,cAAe,EACtC3hN,KAAK20B,SAAWkgI,EAAIlgI,UAAY,KAChC30B,KAAKwhN,aAAe3sD,EAAI2sD,aAAe,IAAI3sD,EAAI2sD,cAAgB,GAC/DxhN,KAAK0qC,SAAW,IAAIg2K,GAAa7rD,EAAI8rD,gBAAaz6K,EAAW2uH,EAAI+rD,kBAAe16K,GAEpFw6F,iBAAiBxkE,GACb,MAAMt7B,QAAoB6+K,GAAqBz/M,KAAMA,KAAKwgN,gBAAgBoD,SAAS5jN,KAAKohD,KAAM8a,IAO9F,OANAk+I,EAAQx5K,EAAa5gC,KAAKohD,KAAM,kBAC5BphD,KAAK4gC,cAAgBA,IACrB5gC,KAAK4gC,YAAcA,QACb5gC,KAAKohD,KAAKghK,sBAAsBpiN,MACtCA,KAAKohD,KAAKihK,0BAA0BriN,OAEjC4gC,EAEX69K,iBAAiBviJ,GACb,OAAOuiJ,GAAiBz+M,KAAMk8D,GAElCimJ,SACI,OAAOA,GAAOniN,MAElBojN,QAAQpwF,GACAhzH,OAASgzH,IAGbonF,EAAQp6M,KAAKg0B,MAAQg/F,EAAKh/F,IAAKh0B,KAAKohD,KAAM,kBAC1CphD,KAAK+hN,YAAc/uF,EAAK+uF,YACxB/hN,KAAKgiN,SAAWhvF,EAAKgvF,SACrBhiN,KAAKi+M,MAAQjrF,EAAKirF,MAClBj+M,KAAKkiN,cAAgBlvF,EAAKkvF,cAC1BliN,KAAKk+M,YAAclrF,EAAKkrF,YACxBl+M,KAAK2hN,YAAc3uF,EAAK2uF,YACxB3hN,KAAK20B,SAAWq+F,EAAKr+F,SACrB30B,KAAKwhN,aAAexuF,EAAKwuF,aAAazlM,KAAI8nM,GAAatkN,OAAOwB,OAAO,GAAI8iN,KACzE7jN,KAAK0qC,SAASs2K,MAAMhuF,EAAKtoF,UACzB1qC,KAAKwgN,gBAAgB4C,QAAQpwF,EAAKwtF,kBAEtC6C,OAAOjiK,GACH,OAAO,IAAIoiK,GAASjkN,OAAOwB,OAAOxB,OAAOwB,OAAO,GAAIf,MAAO,CAAEohD,OAAMo/J,gBAAiBxgN,KAAKwgN,gBAAgB6C,YAE7GS,UAAUzxL,GAEN+nL,GAASp6M,KAAK2jN,eAAgB3jN,KAAKohD,KAAM,kBACzCphD,KAAK2jN,eAAiBtxL,EAClBryB,KAAK0jN,iBACL1jN,KAAKohN,sBAAsBphN,KAAK0jN,gBAChC1jN,KAAK0jN,eAAiB,MAG9BtC,sBAAsByC,GACd7jN,KAAK2jN,eACL3jN,KAAK2jN,eAAeE,GAIpB7jN,KAAK0jN,eAAiBG,EAG9BE,yBACI/jN,KAAKyjN,iBAAiBvD,SAE1B8D,wBACIhkN,KAAKyjN,iBAAiBrD,QAE1B1/E,+BAA+Bn9H,EAAU4+M,GAAS,GAC9C,IAAI8B,GAAkB,EAClB1gN,EAASwyB,SACTxyB,EAASwyB,UAAY/1B,KAAKwgN,gBAAgB5/K,cAC1C5gC,KAAKwgN,gBAAgBsC,yBAAyBv/M,GAC9C0gN,GAAkB,GAElB9B,SACMlB,GAAqBjhN,YAEzBA,KAAKohD,KAAKghK,sBAAsBpiN,MAClCikN,GACAjkN,KAAKohD,KAAKihK,0BAA0BriN,MAG5C0gI,eACI,MAAM3qG,QAAgB/1B,KAAKw+M,aAK3B,aAJMiB,GAAqBz/M,KAAMo+M,EAAcp+M,KAAKohD,KAAM,CAAErrB,aAC5D/1B,KAAKwgN,gBAAgByC,oBAGdjjN,KAAKohD,KAAKy+J,UAErB/vD,SACI,OAAOvwJ,OAAOwB,OAAOxB,OAAOwB,OAAO,CAAEizB,IAAKh0B,KAAKg0B,IAAKiqL,MAAOj+M,KAAKi+M,YAAS/3K,EAAWg8K,cAAeliN,KAAKkiN,cAAeH,YAAa/hN,KAAK+hN,kBAAe77K,EAAWy7K,YAAa3hN,KAAK2hN,YAAaK,SAAUhiN,KAAKgiN,eAAY97K,EAAWg4K,YAAal+M,KAAKk+M,kBAAeh4K,EAAWvR,SAAU30B,KAAK20B,eAAYuR,EAAWs7K,aAAcxhN,KAAKwhN,aAAazlM,KAAI8nM,GAAatkN,OAAOwB,OAAO,GAAI8iN,KAAarD,gBAAiBxgN,KAAKwgN,gBAAgB1wD,SAG5ao0D,iBAAkBlkN,KAAKkkN,kBAAoBlkN,KAAK0qC,SAASolH,UAAW,CAEpE+sD,OAAQ78M,KAAKohD,KAAK4E,OAAO62J,OAAQtsL,QAASvwB,KAAKohD,KAAK/tC,OAExDytB,mBACA,OAAO9gC,KAAKwgN,gBAAgB1/K,cAAgB,GAEhDq7K,iBAAiB/6J,EAAMy3C,GACnB,IAAIl9E,EAAIsP,EAAIkL,EAAIC,EAAIC,EAAIC,EAAI6tL,EAAIC,EAChC,MAAMrC,EAA4C,QAA7BpmM,EAAKk9E,EAAOkpH,mBAAgC,IAAPpmM,EAAgBA,OAAKuqB,EACzE+3K,EAAgC,QAAvBhzL,EAAK4tE,EAAOolH,aAA0B,IAAPhzL,EAAgBA,OAAKib,EAC7Dg4K,EAA4C,QAA7B/nL,EAAK0iE,EAAOqlH,mBAAgC,IAAP/nL,EAAgBA,OAAK+P,EACzE87K,EAAsC,QAA1B5rL,EAAKyiE,EAAOmpH,gBAA6B,IAAP5rL,EAAgBA,OAAK8P,EACnEvR,EAAsC,QAA1B0B,EAAKwiE,EAAOlkE,gBAA6B,IAAP0B,EAAgBA,OAAK6P,EACnEg+K,EAAsD,QAAlC5tL,EAAKuiE,EAAOqrH,wBAAqC,IAAP5tL,EAAgBA,OAAK4P,EACnFy6K,EAAwC,QAA3BwD,EAAKtrH,EAAO8nH,iBAA8B,IAAPwD,EAAgBA,OAAKj+K,EACrE06K,EAA4C,QAA7BwD,EAAKvrH,EAAO+nH,mBAAgC,IAAPwD,EAAgBA,OAAKl+K,GACzE,IAAElS,EAAG,cAAEkuL,EAAa,YAAEP,EAAW,aAAEH,EAAchB,gBAAiB6D,GAA4BxrH,EACpGuhH,EAAQpmL,GAAOqwL,EAAyBjjK,EAAM,kBAC9C,MAAMo/J,EAAkBqC,GAAgByB,SAAStkN,KAAKqT,KAAMgxM,GAC5DjK,EAAuB,kBAARpmL,EAAkBotB,EAAM,kBACvCmiK,GAAwBxB,EAAa3gK,EAAK/tC,MAC1CkwM,GAAwBtF,EAAO78J,EAAK/tC,MACpC+mM,EAAiC,mBAAlB8H,EAA6B9gK,EAAM,kBAClDg5J,EAA+B,mBAAhBuH,EAA2BvgK,EAAM,kBAChDmiK,GAAwBrF,EAAa98J,EAAK/tC,MAC1CkwM,GAAwBvB,EAAU5gK,EAAK/tC,MACvCkwM,GAAwB5uL,EAAUysB,EAAK/tC,MACvCkwM,GAAwBW,EAAkB9iK,EAAK/tC,MAC/CkwM,GAAwB5C,EAAWv/J,EAAK/tC,MACxCkwM,GAAwB3C,EAAax/J,EAAK/tC,MAC1C,MAAM2/G,EAAO,IAAIwwF,GAAS,CACtBxvL,MACAotB,OACA68J,QACAiE,gBACAH,cACAJ,cACAK,WACA9D,cACAvpL,WACA6rL,kBACAG,YACAC,gBAQJ,OANIY,GAAgB9hN,MAAM21E,QAAQmsI,KAC9BxuF,EAAKwuF,aAAeA,EAAazlM,KAAI8nM,GAAatkN,OAAOwB,OAAO,GAAI8iN,MAEpEK,IACAlxF,EAAKkxF,iBAAmBA,GAErBlxF,EAOXmpF,kCAAkC/6J,EAAMmjK,EAAiB5C,GAAc,GACnE,MAAMnB,EAAkB,IAAIqC,GAC5BrC,EAAgBsC,yBAAyByB,GAEzC,MAAMvxF,EAAO,IAAIwwF,GAAS,CACtBxvL,IAAKuwL,EAAgBrxF,QACrB9xE,OACAo/J,kBACAmB,gBAIJ,aADMV,GAAqBjuF,GACpBA;;;;;;;;;;;;;;;;GAoBf,MAAMwxF,GACFvkN,cACID,KAAKktB,KAAO,OACZltB,KAAKssE,QAAU,GAEnBo0D,qBACI,OAAO,EAEXA,WAAW9kH,EAAKtX,GACZtE,KAAKssE,QAAQ1wD,GAAOtX,EAExBo8H,WAAW9kH,GACP,MAAMtX,EAAQtE,KAAKssE,QAAQ1wD,GAC3B,YAAiBsqB,IAAV5hC,EAAsB,KAAOA,EAExCo8H,cAAc9kH,UACH5b,KAAKssE,QAAQ1wD,GAExB6oM,aAAatf,EAAMuf,IAInBC,gBAAgBxf,EAAMuf,KAK1BF,GAAoBt3L,KAAO,OAM3B,MAAM03L,GAAsBJ;;;;;;;;;;;;;;;;GAkB5B,SAASK,GAAoBjpM,EAAKihM,EAAQtsL,GACtC,MAAO,YAAmC3U,KAAOihM,KAAUtsL,IAE/D,MAAMu0L,GACF7kN,YAAY+6M,EAAa55J,EAAM2jK,GAC3B/kN,KAAKg7M,YAAcA,EACnBh7M,KAAKohD,KAAOA,EACZphD,KAAK+kN,QAAUA,EACf,MAAM,OAAE/+J,EAAM,KAAE3yC,GAASrT,KAAKohD,KAC9BphD,KAAKglN,YAAcH,GAAoB7kN,KAAK+kN,QAAS/+J,EAAO62J,OAAQxpM,GACpErT,KAAKilN,mBAAqBJ,GAAoB,cAAsC7+J,EAAO62J,OAAQxpM,GACnGrT,KAAKklN,kBAAoB9jK,EAAK+jK,gBAAgB9hK,KAAKjC,GACnDphD,KAAKg7M,YAAYyJ,aAAazkN,KAAKglN,YAAahlN,KAAKklN,mBAEzDE,eAAepyF,GACX,OAAOhzH,KAAKg7M,YAAY7jF,KAAKn3H,KAAKglN,YAAahyF,EAAK88B,UAExDpvB,uBACI,MAAM2kF,QAAarlN,KAAKg7M,YAAY9jF,KAAKl3H,KAAKglN,aAC9C,OAAOK,EAAO7B,GAAS8B,UAAUtlN,KAAKohD,KAAMikK,GAAQ,KAExDE,oBACI,OAAOvlN,KAAKg7M,YAAYwK,QAAQxlN,KAAKglN,aAEzCS,6BACI,OAAOzlN,KAAKg7M,YAAY7jF,KAAKn3H,KAAKilN,mBAAoBjlN,KAAKg7M,YAAY9tL,MAE3EwzG,qBAAqBglF,GACjB,GAAI1lN,KAAKg7M,cAAgB0K,EACrB,OAEJ,MAAM9F,QAAoB5/M,KAAK2lN,iBAG/B,aAFM3lN,KAAKulN,oBACXvlN,KAAKg7M,YAAc0K,EACf9F,EACO5/M,KAAKolN,eAAexF,QAD/B,EAIJ59M,SACIhC,KAAKg7M,YAAY2J,gBAAgB3kN,KAAKglN,YAAahlN,KAAKklN,mBAE5D/I,oBAAoB/6J,EAAMwkK,EAAsBb,EAAU,YACtD,IAAKa,EAAqBvkN,OACtB,OAAO,IAAIyjN,GAAuBtK,EAAaoK,IAAsBxjK,EAAM2jK,GAG/E,MAAMc,SAA+BzjN,QAAQw/B,IAAIgkL,EAAqB7pM,KAAI2kH,MAAOs6E,IAC7E,SAAUA,EAAY8K,eAClB,OAAO9K,OAGV9+L,QAAO8+L,GAAeA,IAE3B,IAAI+K,EAAsBF,EAAsB,IAC5CrL,EAAaoK,IACjB,MAAMhpM,EAAMipM,GAAoBE,EAAS3jK,EAAK4E,OAAO62J,OAAQz7J,EAAK/tC,MAGlE,IAAI2yM,EAAgB,KAIpB,IAAK,MAAMhL,KAAe4K,EACtB,IACI,MAAMP,QAAarK,EAAY9jF,KAAKt7G,GACpC,GAAIypM,EAAM,CACN,MAAMryF,EAAOwwF,GAAS8B,UAAUlkK,EAAMikK,GAClCrK,IAAgB+K,IAChBC,EAAgBhzF,GAEpB+yF,EAAsB/K,EACtB,OAGR,MAAOr/L,IAIX,MAAMsqM,EAAqBJ,EAAsB3pM,QAAOrc,GAAKA,EAAEqmN,wBAE/D,OAAKH,EAAoBG,uBACpBD,EAAmB5kN,QAGxB0kN,EAAsBE,EAAmB,GACrCD,SAGMD,EAAoB5uF,KAAKv7G,EAAKoqM,EAAcl2D,gBAIhD1tJ,QAAQw/B,IAAIgkL,EAAqB7pM,KAAI2kH,MAAOs6E,IAC9C,GAAIA,IAAgB+K,EAChB,UACU/K,EAAYwK,QAAQ5pM,GAE9B,MAAOD,SAGR,IAAImpM,GAAuBiB,EAAqB3kK,EAAM2jK,IAlBlD,IAAID,GAAuBiB,EAAqB3kK,EAAM2jK;;;;;;;;;;;;;;;;GAyCzE,SAASoB,GAAgBhmK,GACrB,MAAMD,EAAKC,EAAU3rB,cACrB,GAAI0rB,EAAG24B,SAAS,WAAa34B,EAAG24B,SAAS,SAAW34B,EAAG24B,SAAS,UAC5D,MAAO,QAEN,GAAIutI,GAAYlmK,GAEjB,MAAO,WAEN,GAAIA,EAAG24B,SAAS,SAAW34B,EAAG24B,SAAS,YACxC,MAAO,KAEN,GAAI34B,EAAG24B,SAAS,SACjB,MAAO,OAEN,GAAIwtI,GAAWnmK,GAChB,MAAO,UAEN,GAAIA,EAAG24B,SAAS,SACjB,MAAO,OAEN,GAAIytI,GAAcpmK,GAEnB,MAAO,aAEN,GAAIqmK,GAASrmK,GAEd,MAAO,QAEN,GAAIsmK,GAAUtmK,GACf,MAAO,SAEN,IAAKA,EAAG24B,SAAS,YAAc4tI,GAAavmK,MAC5CA,EAAG24B,SAAS,SACb,MAAO,SAEN,GAAI6tI,GAAWxmK,GAEhB,MAAO,UAEN,CAED,MAAM+mH,EAAK,kCACL7sJ,EAAU+lC,EAAU1Q,MAAMw3H,GAChC,GAA2E,KAA1D,OAAZ7sJ,QAAgC,IAAZA,OAAqB,EAASA,EAAQ/Y,QAC3D,OAAO+Y,EAAQ,GAGvB,MAAO,QAEX,SAASisM,GAAWnmK,GAAK,WACrB,MAAO,aAAa5wC,KAAK4wC,GAE7B,SAASsmK,GAAUrmK,GAAY,WAC3B,MAAMD,EAAKC,EAAU3rB,cACrB,OAAQ0rB,EAAG24B,SAAS,aACf34B,EAAG24B,SAAS,aACZ34B,EAAG24B,SAAS,YACZ34B,EAAG24B,SAAS,WAErB,SAAS4tI,GAAavmK,GAAK,WACvB,MAAO,WAAW5wC,KAAK4wC,GAE3B,SAASkmK,GAAYlmK,GAAK,WACtB,MAAO,YAAY5wC,KAAK4wC,GAE5B,SAASwmK,GAAWxmK,GAAK,WACrB,MAAO,WAAW5wC,KAAK4wC,GAE3B,SAASomK,GAAcpmK,GAAK,WACxB,MAAO,cAAc5wC,KAAK4wC,GAE9B,SAASqmK,GAASrmK,GAAK,WACnB,MAAO,SAAS5wC,KAAK4wC,GAEzB,SAASymK,GAAOzmK,GAAK,WACjB,MAAO,oBAAoB5wC,KAAK4wC,GAMpC,SAAS0mK,GAAiB1mK,GAAK,WAC3B,IAAIvkC,EACJ,OAAOgrM,GAAOzmK,OAAsC,QAA3BvkC,EAAKwI,OAAOy4B,iBAA8B,IAAPjhC,OAAgB,EAASA,EAAGkrM,YAE5F,SAASC,KACL,OAAO,WAAoC,KAA1BnxK,SAASqzJ,aAE9B,SAAS+d,GAAiB7mK,GAAK,WAE3B,OAAQymK,GAAOzmK,IACXwmK,GAAWxmK,IACXqmK,GAASrmK,IACTomK,GAAcpmK,IACd,iBAAiB5wC,KAAK4wC,IACtBkmK,GAAYlmK,GAEpB,SAAS8mK,KACL,IAGI,SAAU7iM,QAAUA,SAAWA,OAAOu7C,KAE1C,MAAOh7D,GACH,OAAO;;;;;;;;;;;;;;;;GAuBf,SAASuiN,GAAkBC,EAAgBC,EAAa,IACpD,IAAIC,EACJ,OAAQF,GACJ,IAAK,UAEDE,EAAmBjB,IAAgB,WACnC,MACJ,IAAK,SAIDiB,EAAmB,GAAGjB,IAAgB,cAAYe,IAClD,MACJ,QACIE,EAAmBF,EAE3B,MAAMG,EAAqBF,EAAW9lN,OAChC8lN,EAAWnhM,KAAK,KAChB,mBACN,MAAO,GAAGohM,YAA2C,QAAeC;;;;;;;;;;;;;;;;GAmBxE,MAAMC,GACFrnN,YAAYmhD,GACRphD,KAAKohD,KAAOA,EACZphD,KAAK+zF,MAAQ,GAEjBwzH,aAAal1L,EAAUm1L,GAGnB,MAAMC,EAAmBz0F,GAAS,IAAI5wH,SAAQ,CAACC,EAASC,KACpD,IACI,MAAMsC,EAASytB,EAAS2gG,GAGxB3wH,EAAQuC,GAEZ,MAAOF,GAEHpC,EAAOoC,OAIf+iN,EAAgBD,QAAUA,EAC1BxnN,KAAK+zF,MAAM/tF,KAAKyhN,GAChB,MAAMn1K,EAAQtyC,KAAK+zF,MAAM1yF,OAAS,EAClC,MAAO,KAGHrB,KAAK+zF,MAAMzhD,GAAS,IAAMlwC,QAAQC,WAG1Cq+H,oBAAoBgnF,GAChB,GAAI1nN,KAAKohD,KAAKw+J,cAAgB8H,EAC1B,OAIJ,MAAMC,EAAe,GACrB,IACI,IAAK,MAAMC,KAAuB5nN,KAAK+zF,YAC7B6zH,EAAoBF,GAEtBE,EAAoBJ,SACpBG,EAAa3hN,KAAK4hN,EAAoBJ,SAIlD,MAAO9iN,GAGHijN,EAAa5mF,UACb,IAAK,MAAMymF,KAAWG,EAClB,IACIH,IAEJ,MAAOpiN,IAEX,MAAMpF,KAAKohD,KAAK+4J,cAAch6M,OAAO,gBAAqC,CAAE0nN,gBAAiBnjN,EAAE0nB;;;;;;;;;;;;;;;;GAqB3G,MAAM07L,GACF7nN,YAAYmzH,EAAK20F,EAA0B/hK,GACvChmD,KAAKozH,IAAMA,EACXpzH,KAAK+nN,yBAA2BA,EAChC/nN,KAAKgmD,OAASA,EACdhmD,KAAK4/M,YAAc,KACnB5/M,KAAKgoN,eAAiB,KACtBhoN,KAAKioN,WAAa7lN,QAAQC,UAC1BrC,KAAKkoN,sBAAwB,IAAIC,GAAanoN,MAC9CA,KAAKooN,oBAAsB,IAAID,GAAanoN,MAC5CA,KAAKqoN,iBAAmB,IAAIf,GAAoBtnN,MAChDA,KAAKsoN,aAAe,KACpBtoN,KAAKuoN,2BAA4B,EAGjCvoN,KAAKo9M,kBAAmB,EACxBp9M,KAAKwlI,gBAAiB,EACtBxlI,KAAKwoN,UAAW,EAChBxoN,KAAKyoN,uBAAyB,KAC9BzoN,KAAK0oN,uBAAyB,KAC9B1oN,KAAKm6M,cAAgB7G,EAIrBtzM,KAAK2oN,qBAAkBziL,EACvBlmC,KAAK+8M,aAAe,KACpB/8M,KAAK20B,SAAW,KAChB30B,KAAK4oN,SAAW,CAAEC,mCAAmC,GACrD7oN,KAAKmnN,WAAa,GAClBnnN,KAAKqT,KAAO+/G,EAAI//G,KAChBrT,KAAK8oN,cAAgB9iK,EAAO+iK,iBAEhC5N,2BAA2ByK,EAAsBxK,GA+B7C,OA9BIA,IACAp7M,KAAK0oN,uBAAyBlO,EAAaY,IAI/Cp7M,KAAKyoN,uBAAyBzoN,KAAK+zF,OAAM2sC,UACrC,IAAI/kH,EAAIsP,EACR,IAAIjrB,KAAKwoN,WAGTxoN,KAAKgpN,yBAA2BlE,GAAuB3kN,OAAOH,KAAM4lN,IAChE5lN,KAAKwoN,UAAT,CAKA,GAA2C,QAAtC7sM,EAAK3b,KAAK0oN,8BAA2C,IAAP/sM,OAAgB,EAASA,EAAGstM,uBAE3E,UACUjpN,KAAK0oN,uBAAuBQ,YAAYlpN,MAElD,MAAO0E,UAEL1E,KAAKmpN,sBAAsB/N,GACjCp7M,KAAK2oN,iBAA+C,QAA3B19L,EAAKjrB,KAAK4/M,mBAAgC,IAAP30L,OAAgB,EAASA,EAAG+I,MAAQ,KAC5Fh0B,KAAKwoN,WAGTxoN,KAAKwlI,gBAAiB,OAEnBxlI,KAAKyoN,uBAKhB/nF,wBACI,GAAI1gI,KAAKwoN,SACL,OAEJ,MAAMx1F,QAAahzH,KAAKopN,oBAAoBzD,iBAC5C,OAAK3lN,KAAK4/M,aAAgB5sF,EAKtBhzH,KAAK4/M,aAAe5sF,GAAQhzH,KAAK4/M,YAAY5rL,MAAQg/F,EAAKh/F,KAE1Dh0B,KAAKqpN,aAAajG,QAAQpwF,cAGpBhzH,KAAK4/M,YAAYpB,yBAKrBx+M,KAAKspN,mBAAmBt2F,GAAqC,QAfnE,EAiBJ0N,4BAA4B06E,GACxB,IAAIz/L,EAEJ,MAAM4tM,QAA8BvpN,KAAKopN,oBAAoBzD,iBAC7D,IAAI6D,EAAoBD,EACpBE,GAAyB,EAC7B,GAAIrO,GAAyBp7M,KAAKgmD,OAAO0jK,WAAY,OAC3C1pN,KAAK2pN,sCACX,MAAMC,EAAmD,QAA5BjuM,EAAK3b,KAAKsoN,oBAAiC,IAAP3sM,OAAgB,EAASA,EAAGuoM,iBACvF2F,EAA0C,OAAtBL,QAAoD,IAAtBA,OAA+B,EAASA,EAAkBtF,iBAC5Gt/M,QAAe5E,KAAK8pN,kBAAkB1O,GAKtCwO,GAAuBA,IAAwBC,KACrC,OAAXjlN,QAA8B,IAAXA,OAAoB,EAASA,EAAOouH,QACxDw2F,EAAoB5kN,EAAOouH,KAC3By2F,GAAyB,GAIjC,IAAKD,EACD,OAAOxpN,KAAK+pN,uBAAuB,MAEvC,IAAKP,EAAkBtF,iBAAkB,CAGrC,GAAIuF,EACA,UACUzpN,KAAKqoN,iBAAiB2B,cAAcR,GAE9C,MAAO9kN,GACH8kN,EAAoBD,EAGpBvpN,KAAK0oN,uBAAuBuB,wBAAwBjqN,MAAM,IAAMoC,QAAQE,OAAOoC,KAGvF,OAAI8kN,EACOxpN,KAAKkqN,+BAA+BV,GAGpCxpN,KAAK+pN,uBAAuB,MAQ3C,OALA3P,EAAQp6M,KAAK0oN,uBAAwB1oN,KAAM,wBACrCA,KAAK2pN,sCAIP3pN,KAAKsoN,cACLtoN,KAAKsoN,aAAapE,mBAAqBsF,EAAkBtF,iBAClDlkN,KAAK+pN,uBAAuBP,GAEhCxpN,KAAKkqN,+BAA+BV,GAE/C9oF,wBAAwBypF,GAgBpB,IAAIvlN,EAAS,KACb,IAGIA,QAAe5E,KAAK0oN,uBAAuB0B,oBAAoBpqN,KAAMmqN,GAAkB,GAE3F,MAAOzlN,SAGG1E,KAAKqqN,iBAAiB,MAEhC,OAAOzlN,EAEX87H,qCAAqC1N,GACjC,UACUiuF,GAAqBjuF,GAE/B,MAAOtuH,GACH,GAAe,gCAAXA,EAAEoO,KAGF,OAAO9S,KAAK+pN,uBAAuB,MAG3C,OAAO/pN,KAAK+pN,uBAAuB/2F,GAEvCs3F,oBACItqN,KAAK+8M,aAAevB,IAExB96E,gBACI1gI,KAAKwoN,UAAW,EAEpB9nF,wBAAwB6pF,GAGpB,MAAMv3F,EAAOu3F,GACP,QAAmBA,GACnB,KAIN,OAHIv3F,GACAonF,EAAQpnF,EAAK5xE,KAAK4E,OAAO62J,SAAW78M,KAAKgmD,OAAO62J,OAAQ78M,KAAM,sBAE3DA,KAAKspN,mBAAmBt2F,GAAQA,EAAKqwF,OAAOrjN,OAEvD0gI,yBAAyB1N,EAAMw3F,GAA2B,GACtD,IAAIxqN,KAAKwoN,SAST,OANIx1F,GACAonF,EAAQp6M,KAAK20B,WAAaq+F,EAAKr+F,SAAU30B,KAAM,sBAE9CwqN,SACKxqN,KAAKqoN,iBAAiB2B,cAAch3F,GAEvChzH,KAAK+zF,OAAM2sC,gBACR1gI,KAAK+pN,uBAAuB/2F,GAClChzH,KAAKyqN,yBAGb/pF,gBASI,aAPM1gI,KAAKqoN,iBAAiB2B,cAAc,OAEtChqN,KAAK0qN,4BAA8B1qN,KAAK0oN,+BAClC1oN,KAAKqqN,iBAAiB,MAIzBrqN,KAAKspN,mBAAmB,MAAqC,GAExEqB,eAAe3P,GACX,OAAOh7M,KAAK+zF,OAAM2sC,gBACR1gI,KAAKopN,oBAAoBuB,eAAenQ,EAAaQ,OAGnE4P,kBACI,OAAO5qN,KAAKopN,oBAAoBpO,YAAY9tL,KAEhDguL,gBAAgBnB,GACZ/5M,KAAKm6M,cAAgB,IAAI,KAAa,OAAQ,WAAYJ,KAE9D8Q,mBAAmBnwI,EAAgBp0E,EAAOspI,GACtC,OAAO5vI,KAAK8qN,sBAAsB9qN,KAAKkoN,sBAAuBxtI,EAAgBp0E,EAAOspI,GAEzFm7E,uBAAuB14L,EAAUm1L,GAC7B,OAAOxnN,KAAKqoN,iBAAiBd,aAAal1L,EAAUm1L,GAExDwD,iBAAiBtwI,EAAgBp0E,EAAOspI,GACpC,OAAO5vI,KAAK8qN,sBAAsB9qN,KAAKooN,oBAAqB1tI,EAAgBp0E,EAAOspI,GAEvFkgB,SACI,IAAIn0I,EACJ,MAAO,CACHkhM,OAAQ78M,KAAKgmD,OAAO62J,OACpB6M,WAAY1pN,KAAKgmD,OAAO0jK,WACxBn5L,QAASvwB,KAAKqT,KACdusM,YAA0C,QAA5BjkM,EAAK3b,KAAKqpN,oBAAiC,IAAP1tM,OAAgB,EAASA,EAAGm0I,UAGtFpvB,uBAAuB1N,EAAMooF,GACzB,MAAM6P,QAAwBjrN,KAAK2pN,oCAAoCvO,GACvE,OAAgB,OAATpoF,EACDi4F,EAAgB1F,oBAChB0F,EAAgB7F,eAAepyF,GAEzC0N,0CAA0C06E,GACtC,IAAKp7M,KAAK0qN,2BAA4B,CAClC,MAAMjkJ,EAAY20I,GAAyBZ,EAAaY,IACpDp7M,KAAK0oN,uBACTtO,EAAQ3zI,EAAUzmE,KAAM,kBACxBA,KAAK0qN,iCAAmC5F,GAAuB3kN,OAAOH,KAAM,CAACw6M,EAAa/zI,EAASykJ,uBAAwB,gBAC3HlrN,KAAKsoN,mBACKtoN,KAAK0qN,2BAA2B/E,iBAE9C,OAAO3lN,KAAK0qN,2BAEhBhqF,yBAAyBz6F,GACrB,IAAItqB,EAAIsP,EAMR,OAHIjrB,KAAKwlI,sBACCxlI,KAAK+zF,OAAM2sC,eAEa,QAA5B/kH,EAAK3b,KAAKqpN,oBAAiC,IAAP1tM,OAAgB,EAASA,EAAGuoM,oBAAsBj+K,EACjFjmC,KAAKqpN,cAEkB,QAA5Bp+L,EAAKjrB,KAAKsoN,oBAAiC,IAAPr9L,OAAgB,EAASA,EAAGi5L,oBAAsBj+K,EACjFjmC,KAAKsoN,aAET,KAEX5nF,4BAA4B1N,GACxB,GAAIA,IAAShzH,KAAK4/M,YACd,OAAO5/M,KAAK+zF,OAAM2sC,SAAY1gI,KAAK+pN,uBAAuB/2F,KAIlEqvF,0BAA0BrvF,GAClBA,IAAShzH,KAAK4/M,aACd5/M,KAAKyqN,sBAGbtlB,OACI,MAAO,GAAGnlM,KAAKgmD,OAAO0jK,cAAc1pN,KAAKgmD,OAAO62J,UAAU78M,KAAKqT,OAEnE0wM,yBACI/jN,KAAKuoN,2BAA4B,EAC7BvoN,KAAK4/M,aACL5/M,KAAKqpN,aAAatF,yBAG1BC,wBACIhkN,KAAKuoN,2BAA4B,EAC7BvoN,KAAK4/M,aACL5/M,KAAKqpN,aAAarF,wBAItBqF,mBACA,OAAOrpN,KAAK4/M,YAEhB6K,sBACI,IAAI9uM,EAAIsP,EACR,IAAKjrB,KAAKwlI,eACN,OAEJxlI,KAAKooN,oBAAoB3jN,KAAKzE,KAAK4/M,aACnC,MAAMuL,EAA4F,QAA9ElgM,EAAiC,QAA3BtP,EAAK3b,KAAK4/M,mBAAgC,IAAPjkM,OAAgB,EAASA,EAAGqY,WAAwB,IAAP/I,EAAgBA,EAAK,KAC3HjrB,KAAK2oN,kBAAoBwC,IACzBnrN,KAAK2oN,gBAAkBwC,EACvBnrN,KAAKkoN,sBAAsBzjN,KAAKzE,KAAK4/M,cAG7CkL,sBAAsBM,EAAc1wI,EAAgBp0E,EAAOspI,GACvD,GAAI5vI,KAAKwoN,SACL,MAAO,OAEX,MAAM1wG,EAA+B,oBAAnBp9B,EACZA,EACAA,EAAej2E,KAAK4+C,KAAKq3B,GACzB7D,EAAU72E,KAAKwlI,eACfpjI,QAAQC,UACRrC,KAAKyoN,uBAKX,OAJArO,EAAQvjI,EAAS72E,KAAM,kBAGvB62E,EAAQ/xE,MAAK,IAAMgzG,EAAG93G,KAAK4/M,eACG,oBAAnBllI,EACA0wI,EAAaC,YAAY3wI,EAAgBp0E,EAAOspI,GAGhDw7E,EAAaC,YAAY3wI,GAQxCgmD,6BAA6B1N,GACrBhzH,KAAK4/M,aAAe5/M,KAAK4/M,cAAgB5sF,IACzChzH,KAAKqpN,aAAarF,wBACdhxF,GAAQhzH,KAAKuoN,2BACbv1F,EAAK+wF,0BAGb/jN,KAAK4/M,YAAc5sF,EACfA,QACMhzH,KAAKopN,oBAAoBhE,eAAepyF,SAGxChzH,KAAKopN,oBAAoB7D,oBAGvCxxH,MAAM+wB,GAIF,OADA9kH,KAAKioN,WAAajoN,KAAKioN,WAAWnjN,KAAKggH,EAAQA,GACxC9kH,KAAKioN,WAEZmB,0BAEA,OADAhP,EAAQp6M,KAAKgpN,mBAAoBhpN,KAAM,kBAChCA,KAAKgpN,mBAEhBsC,cAAcC,GACLA,IAAavrN,KAAKmnN,WAAWtuI,SAAS0yI,KAG3CvrN,KAAKmnN,WAAWnhN,KAAKulN,GAGrBvrN,KAAKmnN,WAAW/gM,OAChBpmB,KAAK8oN,cAAgB7B,GAAkBjnN,KAAKgmD,OAAOkhK,eAAgBlnN,KAAKwrN,mBAE5EA,iBACI,OAAOxrN,KAAKmnN,WAEhBzmF,8BACI,IAAI/kH,EAEJ,MAAM/Y,EAAU,CACZ,CAAC,oBAA4C5C,KAAK8oN,eAElD9oN,KAAKozH,IAAIxxH,QAAQg6H,QACjBh5H,EAAQ,oBAA6C5C,KAAKozH,IAAIxxH,QAAQg6H,OAG1E,MAAM6vF,QAEE,QAFyB9vM,EAAK3b,KAAK+nN,yBAAyBnN,aAAa,CAC7E8Q,UAAU,WACS,IAAP/vM,OAAgB,EAASA,EAAGgwM,uBAI5C,OAHIF,IACA7oN,EAAQ,qBAA+C6oN,GAEpD7oN,GASf,SAASgpN,GAAUxqK,GACf,OAAO,QAAmBA,GAG9B,MAAM+mK,GACFloN,YAAYmhD,GACRphD,KAAKohD,KAAOA,EACZphD,KAAKw6E,SAAW,KAChBx6E,KAAKqrN,aAAc,SAAgB7wI,GAAax6E,KAAKw6E,SAAWA,IAEhE/1E,WAEA,OADA21M,EAAQp6M,KAAKw6E,SAAUx6E,KAAKohD,KAAM,kBAC3BphD,KAAKw6E,SAAS/1E,KAAK4+C,KAAKrjD,KAAKw6E,WA0B5C,SAASqxI,GAAoBzqK,EAAMz/C,EAAKC,GACpC,MAAMkqN,EAAeF,GAAUxqK,GAC/Bg5J,EAAQ0R,EAAa1O,iBAAkB0O,EAAc,0BACrD1R,EAAQ,eAAe9qM,KAAK3N,GAAMmqN,EAAc,2BAChD,MAAMC,KAAiC,OAAZnqN,QAAgC,IAAZA,OAAqB,EAASA,EAAQmqN,iBAC/EjpI,EAAWkpI,GAAgBrqN,IAC3B,KAAEkiC,EAAI,KAAEk/C,GAASkpI,GAAmBtqN,GACpCuqN,EAAmB,OAATnpI,EAAgB,GAAK,IAAIA,IAEzC+oI,EAAa9lK,OAAOi2J,SAAW,CAAEt6M,IAAK,GAAGmhF,MAAaj/C,IAAOqoL,MAC7DJ,EAAalD,SAASC,mCAAoC,EAC1DiD,EAAa9D,eAAiBzoN,OAAO4iL,OAAO,CACxCt+I,OACAk/C,OACAD,SAAUA,EAAS5xE,QAAQ,IAAK,IAChCtP,QAASrC,OAAO4iL,OAAO,CAAE4pC,sBAExBA,GACDI,KAGR,SAASH,GAAgBrqN,GACrB,MAAMyqN,EAAczqN,EAAIuZ,QAAQ,KAChC,OAAOkxM,EAAc,EAAI,GAAKzqN,EAAIq/E,OAAO,EAAGorI,EAAc,GAE9D,SAASH,GAAmBtqN,GACxB,MAAMmhF,EAAWkpI,GAAgBrqN,GAC3B6tB,EAAY,mBAAmBnV,KAAK1Y,EAAIq/E,OAAO8B,EAASzhF,SAC9D,IAAKmuB,EACD,MAAO,CAAEqU,KAAM,GAAIk/C,KAAM,MAE7B,MAAMspI,EAAc78L,EAAU,GAAGpY,MAAM,KAAKrR,OAAS,GAC/CumN,EAAgB,qBAAqBjyM,KAAKgyM,GAChD,GAAIC,EAAe,CACf,MAAMzoL,EAAOyoL,EAAc,GAC3B,MAAO,CAAEzoL,OAAMk/C,KAAMwpI,GAAUF,EAAYrrI,OAAOn9C,EAAKxiC,OAAS,KAE/D,CACD,MAAOwiC,EAAMk/C,GAAQspI,EAAYj1M,MAAM,KACvC,MAAO,CAAEysB,OAAMk/C,KAAMwpI,GAAUxpI,KAGvC,SAASwpI,GAAUL,GACf,IAAKA,EACD,OAAO,KAEX,MAAMnpI,EAAO36C,OAAO8jL,GACpB,OAAIrvI,MAAMkG,GACC,KAEJA,EAEX,SAASopI,KACL,SAASK,IACL,MAAMh4D,EAAK7+G,SAAS40B,cAAc,KAC5BkiJ,EAAMj4D,EAAGhqF,MACfgqF,EAAGk4D,UACC,oEACJD,EAAI/hJ,SAAW,QACf+hJ,EAAIltJ,MAAQ,OACZktJ,EAAIE,gBAAkB,UACtBF,EAAI9hJ,OAAS,qBACb8hJ,EAAIG,MAAQ,UACZH,EAAII,OAAS,MACbJ,EAAI7sJ,KAAO,MACX6sJ,EAAIK,OAAS,MACbL,EAAIM,OAAS,QACbN,EAAIO,UAAY,SAChBx4D,EAAG2Q,UAAUhoI,IAAI,6BACjBwY,SAAS3wC,KAAK8lE,YAAY0pF,GAEP,qBAAZ79E,SAAmD,oBAAjBA,QAAQ7nD,MACjD6nD,QAAQ7nD,KAAK,gIAIK,qBAAX3K,QACa,qBAAbwxB,WACqB,YAAxBA,SAAS6qF,WACTr8G,OAAOuB,iBAAiB,mBAAoB8mM,GAG5CA;;;;;;;;;;;;;;;;GA6BZ,MAAMS,GAEFhtN,YAOAuiN,EASA0K,GACIltN,KAAKwiN,WAAaA,EAClBxiN,KAAKktN,aAAeA,EAOxBp9D,SACI,OAAOuqD,EAAU,mBAGrB8S,oBAAoBC,GAChB,OAAO/S,EAAU,mBAGrBgT,eAAeD,EAAOE,GAClB,OAAOjT,EAAU,mBAGrBkT,6BAA6BH,GACzB,OAAO/S,EAAU;;;;;;;;;;;;;;;;GAoBzB35E,eAAe8sF,GAAcpsK,EAAMj/C,GAC/B,OAAOu6M,EAAmBt7J,EAAM,OAAmB,6BAAmDq7J,EAAmBr7J,EAAMj/C,IAEnIu+H,eAAe+sF,GAAoBrsK,EAAMj/C,GACrC,OAAOu6M,EAAmBt7J,EAAM,OAAmB,sBAA8Cj/C,GAErGu+H,eAAegtF,GAAkBtsK,EAAMj/C,GACnC,OAAOu6M,EAAmBt7J,EAAM,OAAmB,sBAA8Cq7J,EAAmBr7J,EAAMj/C;;;;;;;;;;;;;;;;GAmB9Hu+H,eAAeitF,GAAmBvsK,EAAMj/C,GACpC,OAAOy7M,EAAsBx8J,EAAM,OAAmB,kCAA+Dq7J,EAAmBr7J,EAAMj/C,IAElJu+H,eAAektF,GAAYxsK,EAAMj/C,GAC7B,OAAOu6M,EAAmBt7J,EAAM,OAAmB,2BAAgDq7J,EAAmBr7J,EAAMj/C,IAEhIu+H,eAAemtF,GAAwBzsK,EAAMj/C,GACzC,OAAOyrN,GAAYxsK,EAAMj/C,GAE7Bu+H,eAAeotF,GAAyB1sK,EAAMj/C,GAC1C,OAAOyrN,GAAYxsK,EAAMj/C,GAE7Bu+H,eAAeqtF,GAAwB3sK,EAAMj/C,GACzC,OAAOyrN,GAAYxsK,EAAMj/C,GAE7Bu+H,eAAestF,GAAqB5sK,EAAMj/C,GACtC,OAAOyrN,GAAYxsK,EAAMj/C;;;;;;;;;;;;;;;;GAmB7Bu+H,eAAeutF,GAAsB7sK,EAAMj/C,GACvC,OAAOy7M,EAAsBx8J,EAAM,OAAmB,mCAAkEq7J,EAAmBr7J,EAAMj/C,IAErJu+H,eAAewtF,GAA8B9sK,EAAMj/C,GAC/C,OAAOy7M,EAAsBx8J,EAAM,OAAmB,mCAAkEq7J,EAAmBr7J,EAAMj/C;;;;;;;;;;;;;;;;GA6BrJ,MAAMgsN,WAA4BlB,GAE9BhtN,YAEAmuN,EAEAC,EAAWnB,EAEXoB,EAAY,MACRt2I,MAAM,WAA2Bk1I,GACjCltN,KAAKouN,OAASA,EACdpuN,KAAKquN,UAAYA,EACjBruN,KAAKsuN,UAAYA,EAGrBnS,6BAA6B8B,EAAOvxJ,GAChC,OAAO,IAAIyhK,GAAoBlQ,EAAOvxJ,EAAU,YAGpDyvJ,yBAAyB8B,EAAOsQ,EAAS55L,EAAW,MAChD,OAAO,IAAIw5L,GAAoBlQ,EAAOsQ,EAAS,YAA8B55L,GAGjFm7H,SACI,MAAO,CACHmuD,MAAOj+M,KAAKouN,OACZ1hK,SAAU1sD,KAAKquN,UACfnB,aAAcltN,KAAKktN,aACnBv4L,SAAU30B,KAAKsuN,WAWvBnS,gBAAgBl1K,GACZ,MAAMnsB,EAAsB,kBAATmsB,EAAoB3sB,KAAKS,MAAMksB,GAAQA,EAC1D,IAAa,OAARnsB,QAAwB,IAARA,OAAiB,EAASA,EAAImjM,SAAmB,OAARnjM,QAAwB,IAARA,OAAiB,EAASA,EAAI4xC,UAAW,CACnH,GAAyB,aAArB5xC,EAAIoyM,aACJ,OAAOltN,KAAKwuN,sBAAsB1zM,EAAImjM,MAAOnjM,EAAI4xC,UAEhD,GAAyB,cAArB5xC,EAAIoyM,aACT,OAAOltN,KAAKyuN,kBAAkB3zM,EAAImjM,MAAOnjM,EAAI4xC,SAAU5xC,EAAI6Z,UAGnE,OAAO,KAGX+rG,0BAA0Bt/E,GACtB,OAAQphD,KAAKktN,cACT,IAAK,WACD,OAAOS,GAAmBvsK,EAAM,CAC5BstK,mBAAmB,EACnBzQ,MAAOj+M,KAAKouN,OACZ1hK,SAAU1sD,KAAKquN,YAEvB,IAAK,YACD,OAAOJ,GAAsB7sK,EAAM,CAC/B68J,MAAOj+M,KAAKouN,OACZG,QAASvuN,KAAKquN,YAEtB,QACI5U,EAAMr4J,EAAM,mBAIxBs/E,qBAAqBt/E,EAAMrrB,GACvB,OAAQ/1B,KAAKktN,cACT,IAAK,WACD,OAAOO,GAAoBrsK,EAAM,CAC7BrrB,UACA24L,mBAAmB,EACnBzQ,MAAOj+M,KAAKouN,OACZ1hK,SAAU1sD,KAAKquN,YAEvB,IAAK,YACD,OAAOH,GAA8B9sK,EAAM,CACvCrrB,UACAkoL,MAAOj+M,KAAKouN,OACZG,QAASvuN,KAAKquN,YAEtB,QACI5U,EAAMr4J,EAAM,mBAIxBmsK,6BAA6BnsK,GACzB,OAAOphD,KAAKmtN,oBAAoB/rK;;;;;;;;;;;;;;;;GAoBxCs/E,eAAeiuF,GAAcvtK,EAAMj/C,GAC/B,OAAOy7M,EAAsBx8J,EAAM,OAAmB,6BAAqDq7J,EAAmBr7J,EAAMj/C;;;;;;;;;;;;;;;;GAmBxI,MAAMysN,GAAoB,mBAS1B,MAAMC,WAAwB5B,GAC1BhtN,cACI+3E,SAAS52E,WACTpB,KAAK8uN,aAAe,KAGxB3S,mBAAmB5gM,GACf,MAAMwzM,EAAO,IAAIF,GAAgBtzM,EAAOinM,WAAYjnM,EAAO2xM,cAyB3D,OAxBI3xM,EAAOwa,SAAWxa,EAAOqlB,aAErBrlB,EAAOwa,UACPg5L,EAAKh5L,QAAUxa,EAAOwa,SAEtBxa,EAAOqlB,cACPmuL,EAAKnuL,YAAcrlB,EAAOqlB,aAG1BrlB,EAAOyc,QAAUzc,EAAOuzM,eACxBC,EAAK/2L,MAAQzc,EAAOyc,OAEpBzc,EAAOuzM,eACPC,EAAKD,aAAevzM,EAAOuzM,eAG1BvzM,EAAOyzM,YAAczzM,EAAO0zM,kBAEjCF,EAAKnuL,YAAcrlB,EAAOyzM,WAC1BD,EAAKxuL,OAAShlB,EAAO0zM,kBAGrBxV,EAAM,kBAEHsV,EAGXj/D,SACI,MAAO,CACH/5H,QAAS/1B,KAAK+1B,QACd6K,YAAa5gC,KAAK4gC,YAClBL,OAAQvgC,KAAKugC,OACbvI,MAAOh4B,KAAKg4B,MACZ82L,aAAc9uN,KAAK8uN,aACnBtM,WAAYxiN,KAAKwiN,WACjB0K,aAAcltN,KAAKktN,cAY3B/Q,gBAAgBl1K,GACZ,MAAMnsB,EAAsB,kBAATmsB,EAAoB3sB,KAAKS,MAAMksB,GAAQA,GACpD,WAAEu7K,EAAU,aAAE0K,GAAiBpyM,EAAK6+L,EAAOhI,EAAO72L,EAAK,CAAC,aAAc,iBAC5E,IAAK0nM,IAAe0K,EAChB,OAAO,KAEX,MAAM6B,EAAO,IAAIF,GAAgBrM,EAAY0K,GAM7C,OALA6B,EAAKh5L,QAAU4jL,EAAK5jL,cAAWmQ,EAC/B6oL,EAAKnuL,YAAc+4K,EAAK/4K,kBAAesF,EACvC6oL,EAAKxuL,OAASo5K,EAAKp5K,OACnBwuL,EAAK/2L,MAAQ2hL,EAAK3hL,MAClB+2L,EAAKD,aAAenV,EAAKmV,cAAgB,KAClCC,EAGX5B,oBAAoB/rK,GAChB,MAAMj/C,EAAUnC,KAAKkvN,eACrB,OAAOP,GAAcvtK,EAAMj/C,GAG/BkrN,eAAejsK,EAAMrrB,GACjB,MAAM5zB,EAAUnC,KAAKkvN,eAErB,OADA/sN,EAAQ4zB,QAAUA,EACX44L,GAAcvtK,EAAMj/C,GAG/BorN,6BAA6BnsK,GACzB,MAAMj/C,EAAUnC,KAAKkvN,eAErB,OADA/sN,EAAQgtN,YAAa,EACdR,GAAcvtK,EAAMj/C,GAE/B+sN,eACI,MAAM/sN,EAAU,CACZypB,WAAYgjM,GACZF,mBAAmB,GAEvB,GAAI1uN,KAAK8uN,aACL3sN,EAAQ2sN,aAAe9uN,KAAK8uN,iBAE3B,CACD,MAAMM,EAAW,GACbpvN,KAAK+1B,UACLq5L,EAAS,YAAcpvN,KAAK+1B,SAE5B/1B,KAAK4gC,cACLwuL,EAAS,gBAAkBpvN,KAAK4gC,aAEhC5gC,KAAKugC,SACL6uL,EAAS,sBAAwBpvN,KAAKugC,QAE1C6uL,EAAS,cAAgBpvN,KAAKwiN,WAC1BxiN,KAAKg4B,QAAUh4B,KAAK8uN,eACpBM,EAAS,SAAWpvN,KAAKg4B,OAE7B71B,EAAQitN,UAAW,QAAYA,GAEnC,OAAOjtN;;;;;;;;;;;;;;;;GAoBfu+H,eAAe2uF,GAA0BjuK,EAAMj/C,GAC3C,OAAOu6M,EAAmBt7J,EAAM,OAAmB,oCAAkEq7J,EAAmBr7J,EAAMj/C,IAElJu+H,eAAe4uF,GAAwBluK,EAAMj/C,GACzC,OAAOy7M,EAAsBx8J,EAAM,OAAmB,qCAAsEq7J,EAAmBr7J,EAAMj/C,IAEzJu+H,eAAe6uF,GAAsBnuK,EAAMj/C,GACvC,MAAMoB,QAAiBq6M,EAAsBx8J,EAAM,OAAmB,qCAAsEq7J,EAAmBr7J,EAAMj/C,IACrK,GAAIoB,EAASisN,eACT,MAAMhS,EAAiBp8J,EAAM,2CAAoE79C,GAErG,OAAOA,EAEX,MAAMksN,GAA8C,CAChD,CAAC,kBAAwC,kBAE7C/uF,eAAegvF,GAA6BtuK,EAAMj/C,GAC9C,MAAMwtN,EAAapwN,OAAOwB,OAAOxB,OAAOwB,OAAO,GAAIoB,GAAU,CAAEytN,UAAW,WAC1E,OAAOhS,EAAsBx8J,EAAM,OAAmB,qCAAsEq7J,EAAmBr7J,EAAMuuK,GAAaF;;;;;;;;;;;;;;;;GAwBtK,MAAMI,WAA4B5C,GAC9BhtN,YAAYsb,GACRy8D,MAAM,QAAqB,SAC3Bh4E,KAAKub,OAASA,EAGlB4gM,yBAAyB2T,EAAgBC,GACrC,OAAO,IAAIF,GAAoB,CAAEC,iBAAgBC,qBAGrD5T,0BAA0B+B,EAAasR,GACnC,OAAO,IAAIK,GAAoB,CAAE3R,cAAasR,mBAGlDrC,oBAAoB/rK,GAChB,OAAOkuK,GAAwBluK,EAAMphD,KAAKgwN,4BAG9C3C,eAAejsK,EAAMrrB,GACjB,OAAOw5L,GAAsBnuK,EAAM7hD,OAAOwB,OAAO,CAAEg1B,WAAW/1B,KAAKgwN,6BAGvEzC,6BAA6BnsK,GACzB,OAAOsuK,GAA6BtuK,EAAMphD,KAAKgwN,4BAGnDA,2BACI,MAAM,eAAER,EAAc,YAAEtR,EAAW,eAAE4R,EAAc,iBAAEC,GAAqB/vN,KAAKub,OAC/E,OAAIi0M,GAAkBtR,EACX,CAAEsR,iBAAgBtR,eAEtB,CACH+R,YAAaH,EACbh9M,KAAMi9M,GAIdjgE,SACI,MAAMh1I,EAAM,CACR0nM,WAAYxiN,KAAKwiN,YAcrB,OAZIxiN,KAAKub,OAAO2iM,cACZpjM,EAAIojM,YAAcl+M,KAAKub,OAAO2iM,aAE9Bl+M,KAAKub,OAAOi0M,iBACZ10M,EAAI00M,eAAiBxvN,KAAKub,OAAOi0M,gBAEjCxvN,KAAKub,OAAOw0M,mBACZj1M,EAAIi1M,iBAAmB/vN,KAAKub,OAAOw0M,kBAEnC/vN,KAAKub,OAAOu0M,iBACZh1M,EAAIg1M,eAAiB9vN,KAAKub,OAAOu0M,gBAE9Bh1M,EAGXqhM,gBAAgBl1K,GACQ,kBAATA,IACPA,EAAO3sB,KAAKS,MAAMksB,IAEtB,MAAM,eAAE6oL,EAAc,iBAAEC,EAAgB,YAAE7R,EAAW,eAAEsR,GAAmBvoL,EAC1E,OAAK8oL,GACAD,GACA5R,GACAsR,EAGE,IAAIK,GAAoB,CAC3BC,iBACAC,mBACA7R,cACAsR,mBANO;;;;;;;;;;;;;;;;GAgCnB,SAASU,GAAU15C,GACf,OAAQA,GACJ,IAAK,eACD,MAAO,gBACX,IAAK,gBACD,MAAO,iBACX,IAAK,SACD,MAAO,eACX,IAAK,cACD,MAAO,eACX,IAAK,uBACD,MAAO,0BACX,IAAK,6BACD,MAAO,gCACX,QACI,OAAO,MAQnB,SAAS25C,GAAcxuN,GACnB,MAAM8mL,GAAO,SAAkB,QAAmB9mL,IAAM,QAElDyuN,EAAiB3nC,GACjB,SAAkB,QAAmBA,IAAO,gBAC5C,KAEA4nC,GAAc,SAAkB,QAAmB1uN,IAAM,gBACzD2uN,EAAoBD,GACpB,SAAkB,QAAmBA,IAAc,QACnD,KACN,OAAOC,GAAqBD,GAAeD,GAAkB3nC,GAAQ9mL,EAQzE,MAAM4uN,GAOFtwN,YAAYuwN,GACR,IAAI70M,EAAIsP,EAAIkL,EAAIC,EAAIC,EAAIC,EACxB,MAAMy4I,GAAe,SAAkB,QAAmByhD,IACpD3T,EAAyD,QAA/ClhM,EAAKozJ,EAAa,iBAA4C,IAAPpzJ,EAAgBA,EAAK,KACtF7I,EAAqD,QAA7CmY,EAAK8jJ,EAAa,kBAA0C,IAAP9jJ,EAAgBA,EAAK,KAClF2kM,EAAYM,GAAqD,QAA1C/5L,EAAK44I,EAAa,eAAuC,IAAP54I,EAAgBA,EAAK,MAEpGikL,EAAQyC,GAAU/pM,GAAQ88M,EAAW,kBACrC5vN,KAAK68M,OAASA,EACd78M,KAAK4vN,UAAYA,EACjB5vN,KAAK8S,KAAOA,EACZ9S,KAAKywN,YAAwE,QAAzDr6L,EAAK24I,EAAa,sBAAsD,IAAP34I,EAAgBA,EAAK,KAC1Gp2B,KAAK+8M,aAA2E,QAA3D1mL,EAAK04I,EAAa,uBAAwD,IAAP14I,EAAgBA,EAAK,KAC7Gr2B,KAAK20B,SAA+D,QAAnD2B,EAAKy4I,EAAa,mBAAgD,IAAPz4I,EAAgBA,EAAK,KAWrG6lL,iBAAiB1zB,GACb,MAAM+nC,EAAaL,GAAc1nC,GACjC,IACI,OAAO,IAAI8nC,GAAcC,GAE7B,MAAO70M,GACH,OAAO,OAUnB,SAAS+0M,GAAmBjoC,GACxB,OAAO8nC,GAAcI,UAAUloC;;;;;;;;;;;;;;;;GAwBnC,MAAMmoC,GACF3wN,cAIID,KAAKwiN,WAAaoO,GAAkBC,YAoBxC1U,kBAAkB8B,EAAOvxJ,GACrB,OAAOyhK,GAAoBK,sBAAsBvQ,EAAOvxJ,GAwB5DyvJ,0BAA0B8B,EAAO6S,GAC7B,MAAMC,EAAgBR,GAAcI,UAAUG,GAE9C,OADA1W,EAAQ2W,EAAe,kBAChB5C,GAAoBM,kBAAkBxQ,EAAO8S,EAAcj+M,KAAMi+M,EAAcp8L,WAM9Fi8L,GAAkBC,YAAc,WAIhCD,GAAkBI,8BAAgC,WAIlDJ,GAAkBK,0BAA4B;;;;;;;;;;;;;;;;;AAyB9C,MAAMC,GAMFjxN,YAAYuiN,GACRxiN,KAAKwiN,WAAaA,EAElBxiN,KAAKmxN,oBAAsB,KAE3BnxN,KAAKoxN,iBAAmB,GAO5BC,mBAAmBtU,GACf/8M,KAAKmxN,oBAAsBpU,EAY/BuU,oBAAoBC,GAEhB,OADAvxN,KAAKoxN,iBAAmBG,EACjBvxN,KAKXwxN,sBACI,OAAOxxN,KAAKoxN;;;;;;;;;;;;;;;;GA0BpB,MAAMK,WAA0BP,GAC5BjxN,cACI+3E,SAAS52E,WAETpB,KAAK6N,OAAS,GAOlB6jN,SAASx0L,GAKL,OAHKl9B,KAAK6N,OAAOgrE,SAAS37C,IACtBl9B,KAAK6N,OAAO7H,KAAKk3B,GAEdl9B,KAKX2xN,YACI,MAAO,IAAI3xN,KAAK6N,SA2CxB,MAAM+jN,WAAsBH,GAKxBtV,0BAA0Bl1K,GACtB,MAAMnsB,EAAsB,kBAATmsB,EAAoB3sB,KAAKS,MAAMksB,GAAQA,EAE1D,OADAmzK,EAAQ,eAAgBt/L,GAAO,iBAAkBA,EAAK,kBAC/C+zM,GAAgBgD,YAAY/2M,GAuBvComB,WAAW3lB,GACP,OAAOvb,KAAK8xN,YAAYvyN,OAAOwB,OAAOxB,OAAOwB,OAAO,GAAIwa,GAAS,CAAEyc,MAAOzc,EAAOw2M,YAGrFD,YAAYv2M,GAGR,OAFA6+L,EAAQ7+L,EAAOwa,SAAWxa,EAAOqlB,YAAa,kBAEvCiuL,GAAgBgD,YAAYtyN,OAAOwB,OAAOxB,OAAOwB,OAAO,GAAIwa,GAAS,CAAEinM,WAAYxiN,KAAKwiN,WAAY0K,aAAcltN,KAAKwiN,cAOlIrG,4BAA4B6V,GACxB,OAAOJ,GAAcK,gCAAgCD,GAQzD7V,2BAA2B71M,GACvB,OAAOsrN,GAAcK,gCAAiC3rN,EAAMyxE,YAAc,IAE9EokI,wCAAyCgC,eAAgB/8I,IACrD,IAAKA,EACD,OAAO,KAEX,MAAM,aAAE8wJ,EAAY,iBAAEC,EAAgB,iBAAElD,EAAgB,aAAEH,EAAY,MAAE92L,EAAK,WAAEwqL,GAAephJ,EAC9F,IAAK+wJ,IACAlD,IACAiD,IACApD,EACD,OAAO,KAEX,IAAKtM,EACD,OAAO,KAEX,IACI,OAAO,IAAIoP,GAAcpP,GAAYsP,YAAY,CAC7C/7L,QAASm8L,EACTtxL,YAAauxL,EACbn6L,QACA82L,iBAGR,MAAOpqN,GACH,OAAO;;;;;;;;;;;;;;;;GA4DnB,MAAM0tN,WAA6BX,GAC/BxxN,cACI+3E,MAAM,gBAcVmkI,kBAAkBv7K,GACd,OAAOiuL,GAAgBgD,YAAY,CAC/BrP,WAAY4P,GAAqBvB,YACjC3D,aAAckF,GAAqBC,wBACnCzxL,gBAQRu7K,4BAA4B6V,GACxB,OAAOI,GAAqBE,2BAA2BN,GAQ3D7V,2BAA2B71M,GACvB,OAAO8rN,GAAqBE,2BAA4BhsN,EAAMyxE,YAAc,IAEhFokI,mCAAoCgC,eAAgB/8I,IAChD,IAAKA,KAAmB,qBAAsBA,GAC1C,OAAO,KAEX,IAAKA,EAAc+wJ,iBACf,OAAO,KAEX,IACI,OAAOC,GAAqBlxL,WAAWkgC,EAAc+wJ,kBAEzD,MAAOx2M,GACH,OAAO,OAKnBy2M,GAAqBC,wBAA0B,eAE/CD,GAAqBvB,YAAc;;;;;;;;;;;;;;;;;AA2DnC,MAAM0B,WAA2Bd,GAC7BxxN,cACI+3E,MAAM,cACNh4E,KAAK0xN,SAAS,WAelBvV,kBAAkBpmL,EAAS6K,GACvB,OAAOiuL,GAAgBgD,YAAY,CAC/BrP,WAAY+P,GAAmB1B,YAC/B3D,aAAcqF,GAAmBC,sBACjCz8L,UACA6K,gBAQRu7K,4BAA4B6V,GACxB,OAAOO,GAAmBD,2BAA2BN,GAQzD7V,2BAA2B71M,GACvB,OAAOisN,GAAmBD,2BAA4BhsN,EAAMyxE,YAAc,IAE9EokI,mCAAoCgC,eAAgB/8I,IAChD,IAAKA,EACD,OAAO,KAEX,MAAM,aAAE8wJ,EAAY,iBAAEC,GAAqB/wJ,EAC3C,IAAK8wJ,IAAiBC,EAElB,OAAO,KAEX,IACI,OAAOI,GAAmBrxL,WAAWgxL,EAAcC,GAEvD,MAAOx2M,GACH,OAAO,OAKnB42M,GAAmBC,sBAAwB,aAE3CD,GAAmB1B,YAAc;;;;;;;;;;;;;;;;;AA4DjC,MAAM4B,WAA2BhB,GAC7BxxN,cACI+3E,MAAM,cAOVmkI,kBAAkBv7K,GACd,OAAOiuL,GAAgBgD,YAAY,CAC/BrP,WAAYiQ,GAAmB5B,YAC/B3D,aAAcuF,GAAmBC,sBACjC9xL,gBAQRu7K,4BAA4B6V,GACxB,OAAOS,GAAmBH,2BAA2BN,GAQzD7V,2BAA2B71M,GACvB,OAAOmsN,GAAmBH,2BAA4BhsN,EAAMyxE,YAAc,IAE9EokI,mCAAoCgC,eAAgB/8I,IAChD,IAAKA,KAAmB,qBAAsBA,GAC1C,OAAO,KAEX,IAAKA,EAAc+wJ,iBACf,OAAO,KAEX,IACI,OAAOM,GAAmBvxL,WAAWkgC,EAAc+wJ,kBAEvD,MAAOx2M,GACH,OAAO,OAKnB82M,GAAmBC,sBAAwB,aAE3CD,GAAmB5B,YAAc;;;;;;;;;;;;;;;;;AAkBjC,MAAM8B,GAAkB,mBAIxB,MAAMC,WAA2B3F,GAE7BhtN,YAAYuiN,EAAYsM,GACpB92I,MAAMwqI,EAAYA,GAClBxiN,KAAK8uN,aAAeA,EAGxB3B,oBAAoB/rK,GAChB,MAAMj/C,EAAUnC,KAAKkvN,eACrB,OAAOP,GAAcvtK,EAAMj/C,GAG/BkrN,eAAejsK,EAAMrrB,GACjB,MAAM5zB,EAAUnC,KAAKkvN,eAErB,OADA/sN,EAAQ4zB,QAAUA,EACX44L,GAAcvtK,EAAMj/C,GAG/BorN,6BAA6BnsK,GACzB,MAAMj/C,EAAUnC,KAAKkvN,eAErB,OADA/sN,EAAQgtN,YAAa,EACdR,GAAcvtK,EAAMj/C,GAG/B2tJ,SACI,MAAO,CACHo9D,aAAcltN,KAAKktN,aACnB1K,WAAYxiN,KAAKwiN,WACjBsM,aAAc9uN,KAAK8uN,cAY3B3S,gBAAgBl1K,GACZ,MAAMnsB,EAAsB,kBAATmsB,EAAoB3sB,KAAKS,MAAMksB,GAAQA,GACpD,WAAEu7K,EAAU,aAAE0K,EAAY,aAAE4B,GAAiBh0M,EACnD,OAAK0nM,GACA0K,GACA4B,GACDtM,IAAe0K,EAGZ,IAAI0F,GAAmBpQ,EAAYsM,GAF/B,KASf3S,eAAeqG,EAAYsM,GACvB,OAAO,IAAI8D,GAAmBpQ,EAAYsM,GAE9CI,eACI,MAAO,CACHtjM,WAAY+mM,GACZjE,mBAAmB,EACnBI,aAAc9uN,KAAK8uN;;;;;;;;;;;;;;;;GAqB/B,MAAM+D,GAAuB,QAM7B,MAAMC,WAAyB5B,GAK3BjxN,YAAYuiN,GACRpI,EAAQoI,EAAWxnM,WAAW63M,IAAuB,kBACrD76I,MAAMwqI,GAkBVrG,4BAA4B6V,GACxB,OAAOc,GAAiBC,+BAA+Bf,GAQ3D7V,2BAA2B71M,GACvB,OAAOwsN,GAAiBC,+BAAgCzsN,EAAMyxE,YAAc,IAMhFokI,0BAA0Bl1K,GACtB,MAAM/F,EAAa0xL,GAAmBtO,SAASr9K,GAE/C,OADAmzK,EAAQl5K,EAAY,kBACbA,EAEXi7K,uCAAwCgC,eAAgB/8I,IACpD,IAAKA,EACD,OAAO,KAEX,MAAM,aAAE0tJ,EAAY,WAAEtM,GAAephJ,EACrC,IAAK0tJ,IAAiBtM,EAClB,OAAO,KAEX,IACI,OAAOoQ,GAAmBI,QAAQxQ,EAAYsM,GAElD,MAAOpqN,GACH,OAAO;;;;;;;;;;;;;;;;GA4DnB,MAAMuuN,WAA4BxB,GAC9BxxN,cACI+3E,MAAM,eAQVmkI,kBAAkB3iI,EAAOj5C,GACrB,OAAOsuL,GAAgBgD,YAAY,CAC/BrP,WAAYyQ,GAAoBpC,YAChC3D,aAAc+F,GAAoBC,uBAClClE,WAAYx1I,EACZy1I,iBAAkB1uL,IAQ1B47K,4BAA4B6V,GACxB,OAAOiB,GAAoBX,2BAA2BN,GAQ1D7V,2BAA2B71M,GACvB,OAAO2sN,GAAoBX,2BAA4BhsN,EAAMyxE,YAAc,IAE/EokI,mCAAoCgC,eAAgB/8I,IAChD,IAAKA,EACD,OAAO,KAEX,MAAM,iBAAE+wJ,EAAgB,iBAAElD,GAAqB7tJ,EAC/C,IAAK+wJ,IAAqBlD,EACtB,OAAO,KAEX,IACI,OAAOgE,GAAoB/xL,WAAWixL,EAAkBlD,GAE5D,MAAOtzM,GACH,OAAO;;;;;;;;;;;;;;;;;AAyBnB+kH,eAAeyyF,GAAO/xK,EAAMj/C,GACxB,OAAOy7M,EAAsBx8J,EAAM,OAAmB,sBAAqCq7J,EAAmBr7J,EAAMj/C;;;;;;;;;;;;;;;;GArBxH8wN,GAAoBC,uBAAyB,cAE7CD,GAAoBpC,YAAc,cAsClC,MAAMuC,GACFnzN,YAAYsb,GACRvb,KAAKgzH,KAAOz3G,EAAOy3G,KACnBhzH,KAAKwiN,WAAajnM,EAAOinM,WACzBxiN,KAAKm+M,eAAiB5iM,EAAO4iM,eAC7Bn+M,KAAKqzN,cAAgB93M,EAAO83M,cAEhClX,kCAAkC/6J,EAAMiyK,EAAe9O,EAAiB5C,GAAc,GAClF,MAAM3uF,QAAawwF,GAAS8P,qBAAqBlyK,EAAMmjK,EAAiB5C,GAClEa,EAAa+Q,GAAsBhP,GACnCiP,EAAW,IAAIJ,GAAmB,CACpCpgG,OACAwvF,aACArE,eAAgBoG,EAChB8O,kBAEJ,OAAOG,EAEXrX,2BAA2BnpF,EAAMqgG,EAAe9vN,SACtCyvH,EAAKygG,yBAAyBlwN,GAAuB,GAC3D,MAAMi/M,EAAa+Q,GAAsBhwN,GACzC,OAAO,IAAI6vN,GAAmB,CAC1BpgG,OACAwvF,aACArE,eAAgB56M,EAChB8vN,mBAIZ,SAASE,GAAsBhwN,GAC3B,OAAIA,EAASi/M,WACFj/M,EAASi/M,WAEhB,gBAAiBj/M,EACV,QAEJ;;;;;;;;;;;;;;;;GA8BXm9H,eAAegzF,GAAkBtyK,GAC7B,IAAIzlC,EACJ,MAAMmwM,EAAeF,GAAUxqK,GAE/B,SADM0qK,EAAarD,uBACqB,QAAnC9sM,EAAKmwM,EAAalM,mBAAgC,IAAPjkM,OAAgB,EAASA,EAAGgmM,YAExE,OAAO,IAAIyR,GAAmB,CAC1BpgG,KAAM84F,EAAalM,YACnB4C,WAAY,KACZ6Q,cAAe,WAGvB,MAAM9vN,QAAiB4vN,GAAOrH,EAAc,CACxC4C,mBAAmB,IAEjBsD,QAAuBoB,GAAmBE,qBAAqBxH,EAAc,SAAwBvoN,GAAU,GAErH,aADMuoN,EAAaxC,mBAAmB0I,EAAeh/F,MAC9Cg/F;;;;;;;;;;;;;;;;GAmBX,MAAM2B,WAAyB,KAC3B1zN,YAAYmhD,EAAM96C,EAAO+sN,EAAergG,GACpC,IAAIr3G,EACJq8D,MAAM1xE,EAAMwM,KAAMxM,EAAM8lB,SACxBpsB,KAAKqzN,cAAgBA,EACrBrzN,KAAKgzH,KAAOA,EAEZzzH,OAAOC,eAAeQ,KAAM2zN,GAAiBzzN,WAC7CF,KAAK+3E,WAAa,CACdxnD,QAAS6wB,EAAK/tC,KACdshB,SAAmC,QAAxBhZ,EAAKylC,EAAKzsB,gBAA6B,IAAPhZ,EAAgBA,OAAKuqB,EAChE23K,gBAAiBv3M,EAAMyxE,WAAW8lI,gBAClCwV,iBAGRlX,8BAA8B/6J,EAAM96C,EAAO+sN,EAAergG,GACtD,OAAO,IAAI2gG,GAAiBvyK,EAAM96C,EAAO+sN,EAAergG,IAGhE,SAAS4gG,GAA8CxyK,EAAMiyK,EAAenyL,EAAY8xF,GACpF,MAAM6gG,EAAoC,mBAAlBR,EAClBnyL,EAAWqsL,6BAA6BnsK,GACxClgB,EAAWisL,oBAAoB/rK,GACrC,OAAOyyK,EAAgBp2J,OAAMn3D,IACzB,GAAmB,oCAAfA,EAAMwM,KACN,MAAM6gN,GAAiBG,uBAAuB1yK,EAAM96C,EAAO+sN,EAAergG,GAE9E,MAAM1sH;;;;;;;;;;;;;;;;GAuBd,SAASytN,GAAoBvS,GACzB,OAAO,IAAIvkL,IAAIukL,EACVzlM,KAAI,EAAGymM,gBAAiBA,IACxBtmM,QAAO83M,KAASA;;;;;;;;;;;;;;;;GA2BzBtzF,eAAeuzF,GAAOjhG,EAAMwvF,GACxB,MAAM9D,GAAe,QAAmB1rF,SAClCkhG,IAAoB,EAAMxV,EAAc8D,GAC9C,MAAM,iBAAElB,SAA2BjD,EAAqBK,EAAat9J,KAAM,CACvErrB,cAAe2oL,EAAaF,aAC5B2V,eAAgB,CAAC3R,KAEf4R,EAAgBL,GAAoBzS,GAAoB,IAM9D,OALA5C,EAAa8C,aAAe9C,EAAa8C,aAAatlM,QAAOm4M,GAAMD,EAAcvrM,IAAIwrM,EAAG7R,cACnF4R,EAAcvrM,IAAI,WACnB61L,EAAaR,YAAc,YAEzBQ,EAAat9J,KAAKghK,sBAAsB1D,GACvCA,EAEXh+E,eAAe4zF,GAAQthG,EAAM9xF,EAAYw+K,GAAkB,GACvD,MAAMn8M,QAAiBk8M,GAAqBzsF,EAAM9xF,EAAWmsL,eAAer6F,EAAK5xE,WAAY4xE,EAAKwrF,cAAekB,GACjH,OAAO0T,GAAmBmB,cAAcvhG,EAAM,OAAmBzvH,GAErEm9H,eAAewzF,GAAoBM,EAAUxhG,EAAMjwD,SACzCk+I,GAAqBjuF,GAC3B,MAAMyhG,EAAcV,GAAoB/gG,EAAKwuF,cACvC1uM,GAAoB,IAAb0hN,EACP,0BACA,mBACNpa,EAAQqa,EAAY5rM,IAAIk6C,KAAcyxJ,EAAUxhG,EAAK5xE,KAAMtuC;;;;;;;;;;;;;;;;GAmB/D4tH,eAAeg0F,GAAgB1hG,EAAM9xF,EAAYw+K,GAAkB,GAC/D,MAAM,KAAEt+J,GAAS4xE,EACXqgG,EAAgB,iBACtB,IACI,MAAM9vN,QAAiBk8M,GAAqBzsF,EAAM4gG,GAA8CxyK,EAAMiyK,EAAenyL,EAAY8xF,GAAO0sF,GACxItF,EAAQ72M,EAASwyB,QAASqrB,EAAM,kBAChC,MAAM0yG,EAAS6qD,GAAYp7M,EAASwyB,SACpCqkL,EAAQtmD,EAAQ1yG,EAAM,kBACtB,MAAQvqB,IAAKq8F,GAAY4gC,EAEzB,OADAsmD,EAAQpnF,EAAKh/F,MAAQk/F,EAAS9xE,EAAM,iBAC7BgyK,GAAmBmB,cAAcvhG,EAAMqgG,EAAe9vN,GAEjE,MAAOmB,GAKH,KAHuD,yBAA5C,OAANA,QAAoB,IAANA,OAAe,EAASA,EAAEoO,OACzC2mM,EAAMr4J,EAAM,iBAEV18C;;;;;;;;;;;;;;;;GAoBdg8H,eAAei0F,GAAsBvzK,EAAMlgB,EAAYw+K,GAAkB,GACrE,MAAM2T,EAAgB,SAChB9vN,QAAiBqwN,GAA8CxyK,EAAMiyK,EAAenyL,GACpF8wL,QAAuBoB,GAAmBE,qBAAqBlyK,EAAMiyK,EAAe9vN,GAI1F,OAHKm8M,SACKt+J,EAAKkoK,mBAAmB0I,EAAeh/F,MAE1Cg/F,EAaXtxF,eAAek0F,GAAqBxzK,EAAMlgB,GACtC,OAAOyzL,GAAsB/I,GAAUxqK,GAAOlgB,GAalDw/F,eAAem0F,GAAmB7hG,EAAM9xF,GACpC,MAAMw9K,GAAe,QAAmB1rF,GAExC,aADMkhG,IAAoB,EAAOxV,EAAcx9K,EAAWshL,YACnD8R,GAAQ5V,EAAcx9K,GAcjCw/F,eAAeo0F,GAA6B9hG,EAAM9xF,GAC9C,OAAOwzL,IAAgB,QAAmB1hG,GAAO9xF;;;;;;;;;;;;;;;;GAmBrDw/F,eAAeq0F,GAAwB3zK,EAAMj/C,GACzC,OAAOy7M,EAAsBx8J,EAAM,OAAmB,qCAAsEq7J,EAAmBr7J,EAAMj/C;;;;;;;;;;;;;;;;GAmCzJu+H,eAAes0F,GAAsB5zK,EAAM6zK,GACvC,MAAMnJ,EAAeF,GAAUxqK,GACzB79C,QAAiBwxN,GAAwBjJ,EAAc,CACzDtyI,MAAOy7I,EACPvG,mBAAmB,IAEjBK,QAAaqE,GAAmBE,qBAAqBxH,EAAc,SAAwBvoN,GAEjG,aADMuoN,EAAaxC,mBAAmByF,EAAK/7F,MACpC+7F;;;;;;;;;;;;;;;;GAmBX,MAAMmG,GACFj1N,YAAYk1N,EAAU5xN,GAClBvD,KAAKm1N,SAAWA,EAChBn1N,KAAKg0B,IAAMzwB,EAAS6xN,gBACpBp1N,KAAKq1N,eAAiB,IAAI7mM,KAAKjrB,EAAS+xN,YAAY7mM,cACpDzuB,KAAK+hN,YAAcx+M,EAASw+M,YAEhC5F,2BAA2B/6J,EAAMm0K,GAC7B,MAAI,cAAeA,EACRC,GAAyBC,oBAAoBr0K,EAAMm0K,GAEvD9b,EAAMr4J,EAAM,mBAG3B,MAAMo0K,WAAiCN,GACnCj1N,YAAYsD,GACRy0E,MAAM,QAAqBz0E,GAC3BvD,KAAKk+M,YAAc36M,EAASmyN,UAEhCvZ,2BAA2BiR,EAAOmI,GAC9B,OAAO,IAAIC,GAAyBD;;;;;;;;;;;;;;;;GAoB5C,SAASI,GAAgCv0K,EAAMj/C,EAASyzN,GACpD,IAAIj6M,EACJy+L,GAA2C,QAAjCz+L,EAAKi6M,EAAmBj0N,WAAwB,IAAPga,OAAgB,EAASA,EAAGta,QAAU,EAAG+/C,EAAM,wBAClGg5J,EAAwD,qBAAzCwb,EAAmBC,mBAC9BD,EAAmBC,kBAAkBx0N,OAAS,EAAG+/C,EAAM,+BAC3Dj/C,EAAQsuN,YAAcmF,EAAmBj0N,IACzCQ,EAAQ0zN,kBAAoBD,EAAmBC,kBAC/C1zN,EAAQ2zN,mBAAqBF,EAAmBG,gBAC5CH,EAAmBI,MACnB5b,EAAQwb,EAAmBI,IAAIC,SAAS50N,OAAS,EAAG+/C,EAAM,yBAC1Dj/C,EAAQ+zN,YAAcN,EAAmBI,IAAIC,UAE7CL,EAAmBO,UACnB/b,EAAQwb,EAAmBO,QAAQzoM,YAAYrsB,OAAS,EAAG+/C,EAAM,4BACjEj/C,EAAQi0N,kBAAoBR,EAAmBO,QAAQE,WACvDl0N,EAAQm0N,0BACJV,EAAmBO,QAAQI,eAC/Bp0N,EAAQq0N,mBAAqBZ,EAAmBO,QAAQzoM;;;;;;;;;;;;;;;;GAoDhEgzG,eAAe+1F,GAAuBr1K,EAAM68J,EAAO2X,GAC/C,MAAMc,GAAc,QAAmBt1K,GACjCj/C,EAAU,CACZw0N,YAAa,iBACb1Y,SAEA2X,GACAD,GAAgCe,EAAav0N,EAASyzN,SAEpD9H,GAAyB4I,EAAav0N,GAWhDu+H,eAAek2F,GAAqBx1K,EAAMmtK,EAASsI,SACzCrJ,IAAc,QAAmBpsK,GAAO,CAC1CmtK,UACAsI,gBAYRn2F,eAAeo2F,GAAgB11K,EAAMmtK,SAC3Bb,IAAkB,QAAmBtsK,GAAO,CAAEmtK,YAYxD7tF,eAAeq2F,GAAgB31K,EAAMmtK,GACjC,MAAMmI,GAAc,QAAmBt1K,GACjC79C,QAAiBiqN,GAAckJ,EAAa,CAAEnI,YAO9CqB,EAAYrsN,EAASozN,YAE3B,OADAvc,EAAQwV,EAAW8G,EAAa,kBACxB9G,GACJ,IAAK,eACD,MACJ,IAAK,0BACDxV,EAAQ72M,EAASyzN,SAAUN,EAAa,kBACxC,MACJ,IAAK,gCACDtc,EAAQ72M,EAAS0zN,QAASP,EAAa,kBAE3C,QACItc,EAAQ72M,EAAS06M,MAAOyY,EAAa,kBAG7C,IAAIQ,EAAkB,KAItB,OAHI3zN,EAAS0zN,UACTC,EAAkBhC,GAAoBO,oBAAoB7J,GAAU8K,GAAcnzN,EAAS0zN,UAExF,CACH7mN,KAAM,CACF6tM,OAAiC,4BAAzB16M,EAASozN,YACXpzN,EAASyzN,SACTzzN,EAAS06M,QAAU,KACzBkZ,eAAyC,4BAAzB5zN,EAASozN,YACnBpzN,EAAS06M,MACT16M,EAASyzN,WAAa,KAC5BE,mBAEJtH,aAaRlvF,eAAe02F,GAAwBh2K,EAAMtuC,GACzC,MAAM,KAAE1C,SAAe2mN,IAAgB,QAAmB31K,GAAOtuC,GAEjE,OAAO1C,EAAK6tM,MAmBhBv9E,eAAe22F,GAA+Bj2K,EAAM68J,EAAOvxJ,GACvD,MAAMo/J,EAAeF,GAAUxqK,GACzB79C,QAAiB4vN,GAAOrH,EAAc,CACxC4C,mBAAmB,EACnBzQ,QACAvxJ,aAEEslK,QAAuBoB,GAAmBE,qBAAqBxH,EAAc,SAAwBvoN,GAE3G,aADMuoN,EAAaxC,mBAAmB0I,EAAeh/F,MAC9Cg/F,EAkBX,SAASsF,GAA2Bl2K,EAAM68J,EAAOvxJ,GAC7C,OAAOkoK,IAAqB,QAAmBxzK,GAAOwvK,GAAkB1vL,WAAW+8K,EAAOvxJ;;;;;;;;;;;;;;;;GAyD9Fg0E,eAAe62F,GAAsBn2K,EAAM68J,EAAO2X,GAC9C,MAAMc,GAAc,QAAmBt1K,GACjCj/C,EAAU,CACZw0N,YAAa,eACb1Y,SAEJ7D,EAAQwb,EAAmBG,gBAAiBW,EAAa,kBACrDd,GACAD,GAAgCe,EAAav0N,EAASyzN,SAEpD7H,GAAwB2I,EAAav0N,GAU/C,SAASq1N,GAAsBp2K,EAAM0vK,GACjC,MAAMC,EAAgBR,GAAcI,UAAUG,GAC9C,MAAmG,kBAAzE,OAAlBC,QAA4C,IAAlBA,OAA2B,EAASA,EAAcnB,WAuCxFlvF,eAAe+2F,GAAoBr2K,EAAM68J,EAAO6S,GAC5C,MAAM4F,GAAc,QAAmBt1K,GACjClgB,EAAa0vL,GAAkB8G,mBAAmBzZ,EAAO6S,GAAazV,KAI5E,OADAjB,EAAQl5K,EAAWotL,aAAeoI,EAAY/hM,UAAY,MAAO+hM,EAAa,sBACvE9B,GAAqB8B,EAAax1L;;;;;;;;;;;;;;;;GAmB7Cw/F,eAAei3F,GAAcv2K,EAAMj/C,GAC/B,OAAOu6M,EAAmBt7J,EAAM,OAAmB,6BAAoDq7J,EAAmBr7J,EAAMj/C;;;;;;;;;;;;;;;;GAiCpIu+H,eAAek3F,GAA2Bx2K,EAAM68J,GAI5C,MAAM4Z,EAAcvc,IAAmBD,IAAmB,mBACpDl5M,EAAU,CACZi7E,WAAY6gI,EACZ4Z,gBAEE,cAAEC,SAAwBH,IAAc,QAAmBv2K,GAAOj/C,GACxE,OAAO21N,GAAiB,GAgC5Bp3F,eAAeq3F,GAAsB/kG,EAAM4iG,GACvC,MAAMlX,GAAe,QAAmB1rF,GAClCj9F,QAAgBi9F,EAAKwrF,aACrBr8M,EAAU,CACZw0N,YAAa,eACb5gM,WAEA6/L,GACAD,GAAgCjX,EAAat9J,KAAMj/C,EAASyzN,GAEhE,MAAM,MAAE3X,SAAgB4P,GAAwBnP,EAAat9J,KAAMj/C,GAC/D87M,IAAUjrF,EAAKirF,aACTjrF,EAAKmvF,SAqCnBzhF,eAAes3F,GAAwBhlG,EAAMgkG,EAAUpB,GACnD,MAAMlX,GAAe,QAAmB1rF,GAClCj9F,QAAgBi9F,EAAKwrF,aACrBr8M,EAAU,CACZw0N,YAAa,0BACb5gM,UACAihM,YAEApB,GACAD,GAAgCjX,EAAat9J,KAAMj/C,EAASyzN,GAEhE,MAAM,MAAE3X,SAAgB+P,GAAqBtP,EAAat9J,KAAMj/C,GAC5D87M,IAAUjrF,EAAKirF,aAGTjrF,EAAKmvF;;;;;;;;;;;;;;;;GAoBnBzhF,eAAeu3F,GAAgB72K,EAAMj/C,GACjC,OAAOu6M,EAAmBt7J,EAAM,OAAmB,sBAA8Cj/C;;;;;;;;;;;;;;;;GA2BrGu+H,eAAew3F,GAAcllG,GAAM,YAAE+uF,EAAaC,SAAUC,IACxD,QAAoB/7K,IAAhB67K,QAA0C77K,IAAb+7K,EAC7B,OAEJ,MAAMvD,GAAe,QAAmB1rF,GAClCj9F,QAAgB2oL,EAAaF,aAC7B2Z,EAAiB,CACnBpiM,UACAgsL,cACAE,WACAyM,mBAAmB,GAEjBnrN,QAAiBk8M,GAAqBf,EAAcuZ,GAAgBvZ,EAAat9J,KAAM+2K,IAC7FzZ,EAAaqD,YAAcx+M,EAASw+M,aAAe,KACnDrD,EAAasD,SAAWz+M,EAAS0+M,UAAY,KAE7C,MAAMmW,EAAmB1Z,EAAa8C,aAAal5L,MAAK,EAAGk6L,gBAAgC,aAAfA,IACxE4V,IACAA,EAAiBrW,YAAcrD,EAAaqD,YAC5CqW,EAAiBpW,SAAWtD,EAAasD,gBAEvCtD,EAAa+U,yBAAyBlwN,GAkBhD,SAAS80N,GAAYrlG,EAAMgkG,GACvB,OAAOsB,IAAsB,QAAmBtlG,GAAOgkG,EAAU,MAerE,SAASuB,GAAevlG,EAAM6jG,GAC1B,OAAOyB,IAAsB,QAAmBtlG,GAAO,KAAM6jG,GAEjEn2F,eAAe43F,GAAsBtlG,EAAMirF,EAAOvxJ,GAC9C,MAAM,KAAEtL,GAAS4xE,EACXj9F,QAAgBi9F,EAAKwrF,aACrBr8M,EAAU,CACZ4zB,UACA24L,mBAAmB,GAEnBzQ,IACA97M,EAAQ87M,MAAQA,GAEhBvxJ,IACAvqD,EAAQuqD,SAAWA,GAEvB,MAAMnpD,QAAiBk8M,GAAqBzsF,EAAMy6F,GAAoBrsK,EAAMj/C,UACtE6wH,EAAKygG,yBAAyBlwN,GAAuB;;;;;;;;;;;;;;;;GAuB/D,SAAS+vN,GAAqB/O,GAC1B,IAAI5oM,EAAIsP,EACR,IAAKs5L,EACD,OAAO,KAEX,MAAM,WAAE/B,GAAe+B,EACjBiU,EAAUjU,EAAgBkU,YAC1Bn+M,KAAKS,MAAMwpM,EAAgBkU,aAC3B,GACAl7E,EAAYgnE,EAAgBhnE,WACL,0CAAzBgnE,EAAgBt3G,KACpB,IAAKu1G,IAAmC,OAApB+B,QAAgD,IAApBA,OAA6B,EAASA,EAAgBxuL,SAAU,CAC5G,MAAMgpL,EAAyH,QAAvG9zL,EAAqD,QAA/CtP,EAAKgjM,GAAY4F,EAAgBxuL,gBAA6B,IAAPpa,OAAgB,EAASA,EAAGmjM,gBAA6B,IAAP7zL,OAAgB,EAASA,EAAG,oBACnK,GAAI8zL,EAAgB,CAChB,MAAM2Z,EAAwC,cAAnB3Z,GACJ,WAAnBA,EACEA,EACA,KAEN,OAAO,IAAI4Z,GAA0Bp7E,EAAWm7E,IAGxD,IAAKlW,EACD,OAAO,KAEX,OAAQA,GACJ,IAAK,eACD,OAAO,IAAIoW,GAA2Br7E,EAAWi7E,GACrD,IAAK,aACD,OAAO,IAAIK,GAAyBt7E,EAAWi7E,GACnD,IAAK,aACD,OAAO,IAAIM,GAAyBv7E,EAAWi7E,GACnD,IAAK,cACD,OAAO,IAAIO,GAA0Bx7E,EAAWi7E,EAASjU,EAAgByU,YAAc,MAC3F,IAAK,SACL,IAAK,YACD,OAAO,IAAIL,GAA0Bp7E,EAAW,MACpD,QACI,OAAO,IAAIo7E,GAA0Bp7E,EAAWilE,EAAYgW,IAGxE,MAAMG,GACF14N,YAAYs9I,EAAWilE,EAAYgW,EAAU,IACzCx4N,KAAKu9I,UAAYA,EACjBv9I,KAAKwiN,WAAaA,EAClBxiN,KAAKw4N,QAAUA,GAGvB,MAAMS,WAAgDN,GAClD14N,YAAYs9I,EAAWilE,EAAYgW,EAAS3jM,GACxCmjD,MAAMulE,EAAWilE,EAAYgW,GAC7Bx4N,KAAK60B,SAAWA,GAGxB,MAAM+jM,WAAmCD,GACrC14N,YAAYs9I,EAAWi7E,GACnBxgJ,MAAMulE,EAAW,eAA+Bi7E,IAGxD,MAAMK,WAAiCI,GACnCh5N,YAAYs9I,EAAWi7E,GACnBxgJ,MAAMulE,EAAW,aAA2Bi7E,EAAsF,kBAAzD,OAAZA,QAAgC,IAAZA,OAAqB,EAASA,EAAQU,OAAkC,OAAZV,QAAgC,IAAZA,OAAqB,EAASA,EAAQU,MAAQ,OAGvN,MAAMJ,WAAiCH,GACnC14N,YAAYs9I,EAAWi7E,GACnBxgJ,MAAMulE,EAAW,aAA2Bi7E,IAGpD,MAAMO,WAAkCE,GACpCh5N,YAAYs9I,EAAWi7E,EAASQ,GAC5BhhJ,MAAMulE,EAAW,cAA6Bi7E,EAASQ,IAU/D,SAASG,GAAsBnH,GAC3B,MAAM,KAAEh/F,EAAI,eAAEmrF,GAAmB6T,EACjC,OAAIh/F,EAAK2uF,cAAgBxD,EAGd,CACHqE,WAAY,KACZjlE,WAAW,EACXi7E,QAAS,MAGVlF,GAAqBnV;;;;;;;;;;;;;;;;GAyChC,SAASwM,GAAevpK,EAAM45J,GAC1B,OAAO,QAAmB55J,GAAMupK,eAAe3P,GAiBnD,SAASgQ,GAAiB5pK,EAAMs5B,EAAgBp0E,EAAOspI,GACnD,OAAO,QAAmBxuF,GAAM4pK,iBAAiBtwI,EAAgBp0E,EAAOspI,GAY5E,SAASm7E,GAAuB3pK,EAAM/uB,EAAUm1L,GAC5C,OAAO,QAAmBpmK,GAAM2pK,uBAAuB14L,EAAUm1L,GAiBrE,SAASqD,GAAmBzpK,EAAMs5B,EAAgBp0E,EAAOspI,GACrD,OAAO,QAAmBxuF,GAAMypK,mBAAmBnwI,EAAgBp0E,EAAOspI,GAS9E,SAAS06E,GAAkBlpK,IACvB,QAAmBA,GAAMkpK,oBAoB7B,SAAS8O,GAAkBh4K,EAAM4xE,GAC7B,OAAO,QAAmB5xE,GAAMg4K,kBAAkBpmG,GAStD,SAAS6sF,GAAQz+J,GACb,OAAO,QAAmBA,GAAMy+J,UAcpCn/E,eAAe24F,GAAWrmG,GACtB,OAAO,QAAmBA,GAAMhxH,SAGpC,MAAMs3N,GACFr5N,YAAYitB,EAAMgU,GACdlhC,KAAKktB,KAAOA,EACZltB,KAAKkhC,WAAaA,EAEtBi7K,oBAAoBpmL,GAChB,OAAO,IAAIujM,GAAuB,SAAuBvjM,GAE7DomL,iCAAiCod,GAC7B,OAAO,IAAID,GAAuB,SAAwBC,GAE9DzpE,SACI,MAAMl0I,EAAoB,WAAd5b,KAAKktB,KACX,UACA,oBACN,MAAO,CACHssM,mBAAoB,CAChB,CAAC59M,GAAM5b,KAAKkhC,aAIxBi7K,gBAAgBrhM,GACZ,IAAIa,EAAIsP,EACR,GAAY,OAARnQ,QAAwB,IAARA,OAAiB,EAASA,EAAI0+M,mBAAoB,CAClE,GAAsC,QAAjC79M,EAAKb,EAAI0+M,0BAAuC,IAAP79M,OAAgB,EAASA,EAAG89M,kBACtE,OAAOH,GAAuBI,0BAA0B5+M,EAAI0+M,mBAAmBC,mBAE9E,GAAsC,QAAjCxuM,EAAKnQ,EAAI0+M,0BAAuC,IAAPvuM,OAAgB,EAASA,EAAG8K,QAC3E,OAAOujM,GAAuBK,aAAa7+M,EAAI0+M,mBAAmBzjM,SAG1E,OAAO;;;;;;;;;;;;;;;;GAoBf,MAAM6jM,GACF35N,YAAY87I,EAAS89E,EAAOC,GACxB95N,KAAK+7I,QAAUA,EACf/7I,KAAK65N,MAAQA,EACb75N,KAAK85N,eAAiBA,EAG1B3d,kBAAkB4d,EAAYzzN,GAC1B,MAAM86C,EAAOwqK,GAAUmO,GACjBlqK,EAAiBvpD,EAAMyxE,WAAW8lI,gBAClCgc,GAAShqK,EAAeonK,SAAW,IAAIl7M,KAAIw5M,GAAcL,GAAoBO,oBAAoBr0K,EAAMm0K,KAC7Gnb,EAAQvqJ,EAAe0pK,qBAAsBn4K,EAAM,kBACnD,MAAM26F,EAAUu9E,GAAuBI,0BAA0B7pK,EAAe0pK,sBAChF,OAAO,IAAIK,GAAwB79E,EAAS89E,GAAOn5F,MAAO7sE,IACtD,MAAMmmK,QAAoBnmK,EAAUomK,SAAS74K,EAAM26F,UAE5ClsF,EAAeonK,eACfpnK,EAAe0pK,qBAEtB,MAAMhV,EAAkBhlN,OAAOwB,OAAOxB,OAAOwB,OAAO,GAAI8uD,GAAiB,CAAE95B,QAASikM,EAAYjkM,QAAS+K,aAAck5L,EAAYl5L,eAEnI,OAAQx6B,EAAM+sN,eACV,IAAK,SACD,MAAMrB,QAAuBoB,GAAmBE,qBAAqBlyK,EAAM96C,EAAM+sN,cAAe9O,GAEhG,aADMnjK,EAAKkoK,mBAAmB0I,EAAeh/F,MACtCg/F,EACX,IAAK,iBAED,OADA5X,EAAQ9zM,EAAM0sH,KAAM5xE,EAAM,kBACnBgyK,GAAmBmB,cAAcjuN,EAAM0sH,KAAM1sH,EAAM+sN,cAAe9O,GAC7E,QACI9K,EAAMr4J,EAAM,sBAI5Bs/E,oBAAoBw5F,GAChB,MAAMrmK,EAAYqmK,EAClB,OAAOl6N,KAAK85N,eAAejmK,IAanC,SAASsmK,GAAuB/4K,EAAM96C,GAClC,IAAIqV,EACJ,MAAM+6M,GAAc,QAAmBt1K,GACjCg5K,EAAgB9zN,EAGtB,OAFA8zM,EAAQ9zM,EAAMyxE,WAAWs7I,cAAeqD,EAAa,kBACrDtc,EAA4D,QAAnDz+L,EAAKy+M,EAAcriJ,WAAW8lI,uBAAoC,IAAPliM,OAAgB,EAASA,EAAG49M,qBAAsB7C,EAAa,kBAC5HkD,GAAwBS,WAAW3D,EAAa0D;;;;;;;;;;;;;;;;GAmB3D,SAASE,GAAoBl5K,EAAMj/C,GAC/B,OAAOu6M,EAAmBt7J,EAAM,OAAmB,mCAAqEq7J,EAAmBr7J,EAAMj/C,IAErJ,SAASo4N,GAAuBn5K,EAAMj/C,GAClC,OAAOu6M,EAAmBt7J,EAAM,OAAmB,sCAA2Eq7J,EAAmBr7J,EAAMj/C,IAE3J,SAASq4N,GAAYp5K,EAAMj/C,GACvB,OAAOu6M,EAAmBt7J,EAAM,OAAmB,sCAA0Dq7J,EAAmBr7J,EAAMj/C,IAG1I,MAAMs4N,GACFx6N,YAAY+yH,GACRhzH,KAAKgzH,KAAOA,EACZhzH,KAAK06N,gBAAkB,GACvB1nG,EAAK8wF,WAAUD,IACPA,EAASoT,UACTj3N,KAAK06N,gBAAkB7W,EAASoT,QAAQl7M,KAAIw5M,GAAcL,GAAoBO,oBAAoBziG,EAAK5xE,KAAMm0K,SAIzHpZ,iBAAiBnpF,GACb,OAAO,IAAIynG,GAAoBznG,GAEnC0N,mBACI,OAAO44F,GAAuBK,mBAAmB35N,KAAKgzH,KAAKwrF,cAE/D99E,aAAaw5F,EAAiBnY,GAC1B,MAAMluJ,EAAYqmK,EACZn+E,QAAiB/7I,KAAK26N,aACtBC,QAA4Bnb,GAAqBz/M,KAAKgzH,KAAMn/D,EAAUomK,SAASj6N,KAAKgzH,KAAK5xE,KAAM26F,EAASgmE,IAO9G,aAJM/hN,KAAKgzH,KAAKygG,yBAAyBmH,GAIlC56N,KAAKgzH,KAAKmvF,SAErBzhF,eAAem6F,GACX,MAAMzF,EAAuC,kBAAdyF,EAAyBA,EAAYA,EAAU7mM,IACxE+B,QAAgB/1B,KAAKgzH,KAAKwrF,aAC1B+F,QAAwB9E,GAAqBz/M,KAAKgzH,KAAMwnG,GAAYx6N,KAAKgzH,KAAK5xE,KAAM,CACtFrrB,UACAq/L,qBAGJp1N,KAAK06N,gBAAkB16N,KAAK06N,gBAAgBx+M,QAAO,EAAG8X,SAAUA,IAAQohM,UAKlEp1N,KAAKgzH,KAAKygG,yBAAyBlP,GACzC,UACUvkN,KAAKgzH,KAAKmvF,SAEpB,MAAOz9M,GACH,GAAe,4BAAXA,EAAEoO,KACF,MAAMpO,IAKtB,MAAMo2N,GAAuB,IAAI7vD,QAWjC,SAAS8vD,GAAY/nG,GACjB,MAAMgoG,GAAc,QAAmBhoG,GAIvC,OAHK8nG,GAAqBjyM,IAAImyM,IAC1BF,GAAqBnyM,IAAIqyM,EAAaP,GAAoBQ,UAAUD,IAEjEF,GAAqBp5N,IAAIs5N,GAGpC,MAAME,GAAwB;;;;;;;;;;;;;;;;GAqB9B,MAAMC,GACFl7N,YAAYm7N,EAAkBluM,GAC1BltB,KAAKo7N,iBAAmBA,EACxBp7N,KAAKktB,KAAOA,EAEhB44L,eACI,IACI,OAAK9lN,KAAKssE,SAGVtsE,KAAKssE,QAAQhlD,QAAQ4zM,GAAuB,KAC5Cl7N,KAAKssE,QAAQ5kD,WAAWwzM,IACjB94N,QAAQC,SAAQ,IAJZD,QAAQC,SAAQ,GAM/B,MAAOsZ,GACH,OAAOvZ,QAAQC,SAAQ,IAG/B80H,KAAKv7G,EAAKtX,GAEN,OADAtE,KAAKssE,QAAQhlD,QAAQ1L,EAAKtB,KAAKC,UAAUjW,IAClClC,QAAQC,UAEnB60H,KAAKt7G,GACD,MAAMqrB,EAAOjnC,KAAKssE,QAAQplD,QAAQtL,GAClC,OAAOxZ,QAAQC,QAAQ4kC,EAAO3sB,KAAKS,MAAMksB,GAAQ,MAErDu+K,QAAQ5pM,GAEJ,OADA5b,KAAKssE,QAAQ5kD,WAAW9L,GACjBxZ,QAAQC,UAEfiqE,cACA,OAAOtsE,KAAKo7N;;;;;;;;;;;;;;;;GAoBpB,SAASC,KACL,MAAMn7K,GAAK,UACX,OAAOsmK,GAAUtmK,IAAOymK,GAAOzmK,GAGnC,MAAMo7K,GAAyB,IAEzBC,GAAgC,GACtC,MAAMC,WAAgCL,GAClCl7N,cACI+3E,OAAM,IAAM7zD,OAAOs3M,cAAc,SACjCz7N,KAAKklN,kBAAoB,CAACt+L,EAAO80M,IAAS17N,KAAK27N,eAAe/0M,EAAO80M,GACrE17N,KAAK8pI,UAAY,GACjB9pI,KAAK47N,WAAa,GAGlB57N,KAAK67N,UAAY,KAEjB77N,KAAK87N,4BAA8BT,MAAiCrU,KAEpEhnN,KAAK+7N,kBAAoBhV,KACzB/mN,KAAKkmN,uBAAwB,EAEjC8V,kBAAkBlkH,GAEd,IAAK,MAAMl8F,KAAOrc,OAAOsD,KAAK7C,KAAK8pI,WAAY,CAE3C,MAAM/lF,EAAW/jD,KAAKssE,QAAQplD,QAAQtL,GAChCooC,EAAWhkD,KAAK47N,WAAWhgN,GAG7BmoC,IAAaC,GACb8zD,EAAGl8F,EAAKooC,EAAUD,IAI9B43K,eAAe/0M,EAAO80M,GAAO,GAEzB,IAAK90M,EAAMhL,IAIP,YAHA5b,KAAKg8N,mBAAkB,CAACpgN,EAAKqgN,EAAWl4K,KACpC/jD,KAAKk8N,gBAAgBtgN,EAAKmoC,MAIlC,MAAMnoC,EAAMgL,EAAMhL,IAelB,GAZI8/M,EAGA17N,KAAKm8N,iBAKLn8N,KAAKo8N,cAILp8N,KAAK87N,4BAA6B,CAElC,MAAMO,EAAcr8N,KAAKssE,QAAQplD,QAAQtL,GAEzC,GAAIgL,EAAMm9B,WAAas4K,EACI,OAAnBz1M,EAAMm9B,SAEN/jD,KAAKssE,QAAQhlD,QAAQ1L,EAAKgL,EAAMm9B,UAIhC/jD,KAAKssE,QAAQ5kD,WAAW9L,QAG3B,GAAI5b,KAAK47N,WAAWhgN,KAASgL,EAAMm9B,WAAa23K,EAEjD,OAGR,MAAMY,EAAmB,KAGrB,MAAMD,EAAcr8N,KAAKssE,QAAQplD,QAAQtL,IACpC8/M,GAAQ17N,KAAK47N,WAAWhgN,KAASygN,IAKtCr8N,KAAKk8N,gBAAgBtgN,EAAKygN,IAExBA,EAAcr8N,KAAKssE,QAAQplD,QAAQtL,GACrCkrM,MACAuV,IAAgBz1M,EAAMm9B,UACtBn9B,EAAMm9B,WAAan9B,EAAMo9B,SAKzBtb,WAAW4zL,EAAkBf,IAG7Be,IAGRJ,gBAAgBtgN,EAAKtX,GACjBtE,KAAK47N,WAAWhgN,GAAOtX,EACvB,MAAMwlI,EAAY9pI,KAAK8pI,UAAUluH,GACjC,GAAIkuH,EACA,IAAK,MAAMv3C,KAAY7yF,MAAMshG,KAAK8oC,GAC9Bv3C,EAASjuF,EAAQgW,KAAKS,MAAMzW,GAASA,GAIjDi4N,eACIv8N,KAAKo8N,cACLp8N,KAAK67N,UAAY17J,aAAY,KACzBngE,KAAKg8N,mBAAkB,CAACpgN,EAAKooC,EAAUD,KACnC/jD,KAAK27N,eAAe,IAAIa,aAAa,UAAW,CAC5C5gN,MACAooC,WACAD,cAEO,QAEhBu3K,IAEPc,cACQp8N,KAAK67N,YACLx7J,cAAcrgE,KAAK67N,WACnB77N,KAAK67N,UAAY,MAGzBY,iBACIt4M,OAAOuB,iBAAiB,UAAW1lB,KAAKklN,mBAE5CiX,iBACIh4M,OAAOu/B,oBAAoB,UAAW1jD,KAAKklN,mBAE/CT,aAAa7oM,EAAK22E,GAC6B,IAAvChzF,OAAOsD,KAAK7C,KAAK8pI,WAAWzoI,SAKxBrB,KAAK+7N,kBACL/7N,KAAKu8N,eAGLv8N,KAAKy8N,kBAGRz8N,KAAK8pI,UAAUluH,KAChB5b,KAAK8pI,UAAUluH,GAAO,IAAIqhB,IAE1Bj9B,KAAK47N,WAAWhgN,GAAO5b,KAAKssE,QAAQplD,QAAQtL,IAEhD5b,KAAK8pI,UAAUluH,GAAKuhB,IAAIo1D,GAE5BoyH,gBAAgB/oM,EAAK22E,GACbvyF,KAAK8pI,UAAUluH,KACf5b,KAAK8pI,UAAUluH,GAAK5Z,OAAOuwF,GACM,IAA7BvyF,KAAK8pI,UAAUluH,GAAKiiB,aACb79B,KAAK8pI,UAAUluH,IAGa,IAAvCrc,OAAOsD,KAAK7C,KAAK8pI,WAAWzoI,SAC5BrB,KAAKm8N,iBACLn8N,KAAKo8N,eAIb17F,WAAW9kH,EAAKtX,SACN0zE,MAAMm/C,KAAKv7G,EAAKtX,GACtBtE,KAAK47N,WAAWhgN,GAAOtB,KAAKC,UAAUjW,GAE1Co8H,WAAW9kH,GACP,MAAMtX,QAAc0zE,MAAMk/C,KAAKt7G,GAE/B,OADA5b,KAAK47N,WAAWhgN,GAAOtB,KAAKC,UAAUjW,GAC/BA,EAEXo8H,cAAc9kH,SACJo8D,MAAMwtI,QAAQ5pM,UACb5b,KAAK47N,WAAWhgN,IAG/B4/M,GAAwBtuM,KAAO,QAO/B,MAAMwvM,GAA0BlB;;;;;;;;;;;;;;;;GAkBhC,MAAMmB,WAAkCxB,GACpCl7N,cACI+3E,OAAM,IAAM7zD,OAAOy4M,gBAAgB,WAEvCnY,aAAatf,EAAMuf,IAInBC,gBAAgBxf,EAAMuf,KAK1BiY,GAA0BzvM,KAAO,UAOjC,MAAM2vM,GAA4BF;;;;;;;;;;;;;;;;GAuBlC,SAASG,GAAYnvE,GACjB,OAAOvrJ,QAAQw/B,IAAI+rH,EAAS5xI,KAAI2kH,MAAO7pD,IACnC,IACI,MAAMvyE,QAAcuyE,EACpB,MAAO,CACHtyE,WAAW,EACXD,SAGR,MAAO+qG,GACH,MAAO,CACH9qG,WAAW,EACX8qG;;;;;;;;;;;;;;;;GA0BhB,MAAM0tH,GACF98N,YAAY+8N,GACRh9N,KAAKg9N,YAAcA,EACnBh9N,KAAKi9N,YAAc,GACnBj9N,KAAKklN,kBAAoBllN,KAAKk9N,YAAY75K,KAAKrjD,MAQnDm8M,oBAAoB6gB,GAIhB,MAAMG,EAAmBn9N,KAAKo9N,UAAU90M,MAAK+0M,GAAYA,EAASC,cAAcN,KAChF,GAAIG,EACA,OAAOA,EAEX,MAAMI,EAAc,IAAIR,GAASC,GAEjC,OADAh9N,KAAKo9N,UAAUp3N,KAAKu3N,GACbA,EAEXD,cAAcN,GACV,OAAOh9N,KAAKg9N,cAAgBA,EAYhCt8F,kBAAkB95G,GACd,MAAM42M,EAAe52M,GACf,QAAEyJ,EAAO,UAAEuzB,EAAS,KAAExzC,GAASotN,EAAaptN,KAC5CosG,EAAWx8G,KAAKi9N,YAAYr5K,GAClC,KAAmB,OAAb44D,QAAkC,IAAbA,OAAsB,EAASA,EAAS3+E,MAC/D,OAEJ2/L,EAAaC,MAAM,GAAG73J,YAAY,CAC9BtiE,OAAQ,MACR+sB,UACAuzB,cAEJ,MAAM+pG,EAAWjuJ,MAAMshG,KAAKwb,GAAUzgG,KAAI2kH,MAAOhkB,GAAYA,EAAQ8gH,EAAah/K,OAAQpuC,KACpF7M,QAAiBu5N,GAAYnvE,GACnC6vE,EAAaC,MAAM,GAAG73J,YAAY,CAC9BtiE,OAAQ,OACR+sB,UACAuzB,YACArgD,aAURm6N,WAAW95K,EAAW8X,GAC2B,IAAzCn8D,OAAOsD,KAAK7C,KAAKi9N,aAAa57N,QAC9BrB,KAAKg9N,YAAYt3M,iBAAiB,UAAW1lB,KAAKklN,mBAEjDllN,KAAKi9N,YAAYr5K,KAClB5jD,KAAKi9N,YAAYr5K,GAAa,IAAI3mB,KAEtCj9B,KAAKi9N,YAAYr5K,GAAWzmB,IAAIu+B,GASpCiiK,aAAa/5K,EAAW8X,GAChB17D,KAAKi9N,YAAYr5K,IAAc8X,GAC/B17D,KAAKi9N,YAAYr5K,GAAW5hD,OAAO05D,GAElCA,GAAqD,IAArC17D,KAAKi9N,YAAYr5K,GAAW/lB,aACtC79B,KAAKi9N,YAAYr5K,GAEiB,IAAzCrkD,OAAOsD,KAAK7C,KAAKi9N,aAAa57N,QAC9BrB,KAAKg9N,YAAYt5K,oBAAoB,UAAW1jD,KAAKklN;;;;;;;;;;;;;;;;;AAsBjE,SAAS0Y,GAAiBC,EAAS,GAAIz8C,EAAS,IAC5C,IAAIlyK,EAAS,GACb,IAAK,IAAIhO,EAAI,EAAGA,EAAIkgL,EAAQlgL,IACxBgO,GAAUD,KAAKq2C,MAAsB,GAAhBr2C,KAAKC,UAE9B,OAAO2uN,EAAS3uN;;;;;;;;;;;;;;;;GAvBpB6tN,GAASK,UAAY,GA8CrB,MAAM7iG,GACFt6H,YAAY0lB,GACR3lB,KAAK2lB,OAASA,EACd3lB,KAAKw8G,SAAW,IAAIv/E,IAOxB6gM,qBAAqBphH,GACbA,EAAQr3C,iBACRq3C,EAAQr3C,eAAeM,MAAMjiB,oBAAoB,UAAWg5D,EAAQqhH,WACpErhH,EAAQr3C,eAAeM,MAAM3+C,SAEjChnB,KAAKw8G,SAASx6G,OAAO06G,GAezBgkB,YAAY98E,EAAWxzC,EAAMhN,EAAU,IACnC,MAAMiiE,EAA2C,qBAAnBC,eAAiC,IAAIA,eAAmB,KACtF,IAAKD,EACD,MAAM,IAAIzkE,MAAM,0BAMpB,IAAIo9N,EACAthH,EACJ,OAAO,IAAIt6G,SAAQ,CAACC,EAASC,KACzB,MAAM+tB,EAAUutM,GAAiB,GAAI,IACrCv4J,EAAeM,MAAMwhB,QACrB,MAAM82I,EAAWv1L,YAAW,KACxBpmC,EAAO,IAAI1B,MAAM,wBAClBwC,GACHs5G,EAAU,CACNr3C,iBACA04J,UAAUn3M,GACN,MAAM42M,EAAe52M,EACrB,GAAI42M,EAAaptN,KAAKigB,UAAYA,EAGlC,OAAQmtM,EAAaptN,KAAK9M,QACtB,IAAK,MAEDijE,aAAa03J,GACbD,EAAkBt1L,YAAW,KACzBpmC,EAAO,IAAI1B,MAAM,cAClB,KACH,MACJ,IAAK,OAED2lE,aAAay3J,GACb37N,EAAQm7N,EAAaptN,KAAK7M,UAC1B,MACJ,QACIgjE,aAAa03J,GACb13J,aAAay3J,GACb17N,EAAO,IAAI1B,MAAM,qBACjB,SAIhBZ,KAAKw8G,SAASr/E,IAAIu/E,GAClBr3C,EAAeM,MAAMjgD,iBAAiB,UAAWg3F,EAAQqhH,WACzD/9N,KAAK2lB,OAAOigD,YAAY,CACpBhiB,YACAvzB,UACAjgB,QACD,CAACi1D,EAAee,WACpByB,SAAQ,KACH60C,GACA18G,KAAK89N,qBAAqBphH;;;;;;;;;;;;;;;;GA0B1C,SAASsL,KACL,OAAO7jG,OAEX,SAAS+5M,GAAmBv8N,GACxBqmH,KAAU3pE,SAASY,KAAOt9C;;;;;;;;;;;;;;;;GAmB9B,SAASw8N,KACL,MAAkD,qBAAnCn2G,KAAU,sBACiB,oBAA/BA,KAAU,iBAEzB0Y,eAAe09F,KACX,KAAoB,OAAdxhL,gBAAoC,IAAdA,eAAuB,EAASA,UAAUyhL,eAClE,OAAO,KAEX,IACI,MAAMC,QAAqB1hL,UAAUyhL,cAAcE,MACnD,OAAOD,EAAaE,OAExB,MAAO7iN,GACH,OAAO,MAGf,SAAS8iN,KACL,IAAI9iN,EACJ,OAAiG,QAAxFA,EAAmB,OAAdihC,gBAAoC,IAAdA,eAAuB,EAASA,UAAUyhL,qBAAkC,IAAP1iN,OAAgB,EAASA,EAAG+iN,aAAe,KAExJ,SAASC,KACL,OAAOR,KAAczmJ,KAAO;;;;;;;;;;;;;;;;GAmBhC,MAAM1pE,GAAU,yBACVC,GAAa,EACb2wN,GAAsB,uBACtBC,GAAkB,YAOxB,MAAMC,GACF7+N,YAAYkC,GACRnC,KAAKmC,QAAUA,EAEnB48N,YACI,OAAO,IAAI38N,SAAQ,CAACC,EAASC,KACzBtC,KAAKmC,QAAQujB,iBAAiB,WAAW,KACrCrjB,EAAQrC,KAAKmC,QAAQyC,WAEzB5E,KAAKmC,QAAQujB,iBAAiB,SAAS,KACnCpjB,EAAOtC,KAAKmC,QAAQmE,cAKpC,SAAS04N,GAAel4M,EAAIm4M,GACxB,OAAOn4M,EACFK,YAAY,CAACy3M,IAAsBK,EAAc,YAAc,YAC/D73M,YAAYw3M,IAErB,SAASM,KACL,MAAM/8N,EAAUwkB,UAAUuB,eAAela,IACzC,OAAO,IAAI8wN,GAAU38N,GAAS48N,YAElC,SAASI,KACL,MAAMh9N,EAAUwkB,UAAUlkB,KAAKuL,GAASC,IACxC,OAAO,IAAI7L,SAAQ,CAACC,EAASC,KACzBH,EAAQujB,iBAAiB,SAAS,KAC9BpjB,EAAOH,EAAQmE,UAEnBnE,EAAQujB,iBAAiB,iBAAiB,KACtC,MAAMoB,EAAK3kB,EAAQyC,OACnB,IACIkiB,EAAGD,kBAAkB+3M,GAAqB,CAAEQ,QAASP,KAEzD,MAAOn6N,GACHpC,EAAOoC,OAGfvC,EAAQujB,iBAAiB,WAAWg7G,UAChC,MAAM55G,EAAK3kB,EAAQyC,OAKdkiB,EAAGu4M,iBAAiBC,SAASV,IAO9Bv8N,EAAQykB,IALRA,EAAGE,cACGk4M,KACN78N,QAAc88N,aAQ9Bz+F,eAAe6+F,GAAWz4M,EAAIlL,EAAKtX,GAC/B,MAAMnC,EAAU68N,GAAel4M,GAAI,GAAMW,IAAI,CACzC,CAACo3M,IAAkBjjN,EACnBtX,UAEJ,OAAO,IAAIw6N,GAAU38N,GAAS48N,YAElCr+F,eAAe8+F,GAAU14M,EAAIlL,GACzB,MAAMzZ,EAAU68N,GAAel4M,GAAI,GAAOplB,IAAIka,GACxCxL,QAAa,IAAI0uN,GAAU38N,GAAS48N,YAC1C,YAAgB74L,IAAT91B,EAAqB,KAAOA,EAAK9L,MAE5C,SAASm7N,GAAc34M,EAAIlL,GACvB,MAAMzZ,EAAU68N,GAAel4M,GAAI,GAAM9kB,OAAO4Z,GAChD,OAAO,IAAIkjN,GAAU38N,GAAS48N,YAElC,MAAMW,GAAuB,IACvBC,GAA2B,EACjC,MAAMC,GACF3/N,cACID,KAAKktB,KAAO,QACZltB,KAAKkmN,uBAAwB,EAC7BlmN,KAAK8pI,UAAY,GACjB9pI,KAAK47N,WAAa,GAGlB57N,KAAK67N,UAAY,KACjB77N,KAAK6/N,cAAgB,EACrB7/N,KAAKq9N,SAAW,KAChBr9N,KAAK8/N,OAAS,KACd9/N,KAAK+/N,gCAAiC,EACtC//N,KAAKggO,oBAAsB,KAE3BhgO,KAAKigO,6BACDjgO,KAAKkgO,mCAAmCp7N,MAAK,SAAW,SAEhE47H,gBACI,OAAI1gI,KAAK8mB,KAGT9mB,KAAK8mB,SAAWq4M,MAFLn/N,KAAK8mB,GAKpB45G,mBAAmB76H,GACf,IAAIs6N,EAAc,EAClB,MAAO,EACH,IACI,MAAMr5M,QAAW9mB,KAAKogO,UACtB,aAAav6N,EAAGihB,GAEpB,MAAOpiB,GACH,GAAIy7N,IAAgBR,GAChB,MAAMj7N,EAEN1E,KAAK8mB,KACL9mB,KAAK8mB,GAAGE,QACRhnB,KAAK8mB,QAAKof,IAU1Bw6F,yCACI,OAAOy9F,KAAcn+N,KAAKqgO,qBAAuBrgO,KAAKsgO,mBAK1D5/F,2BACI1gI,KAAKq9N,SAAWN,GAASviB,aAAamkB,MAEtC3+N,KAAKq9N,SAASK,WAAW,cAAgCh9F,MAAO6/F,EAASnwN,KACrE,MAAMvN,QAAa7C,KAAKwgO,QACxB,MAAO,CACHC,aAAc59N,EAAKg2E,SAASzoE,EAAKwL,SAIzC5b,KAAKq9N,SAASK,WAAW,QAAmBh9F,MAAO6/F,EAASG,IACjD,CAAC,gBAUhBhgG,yBACI,IAAI/kH,EAAIsP,EAGR,GADAjrB,KAAKggO,0BAA4B5B,MAC5Bp+N,KAAKggO,oBACN,OAEJhgO,KAAK8/N,OAAS,IAAIvlG,GAAOv6H,KAAKggO,qBAE9B,MAAM9+H,QAAgBlhG,KAAK8/N,OAAOa,MAAM,OAAmB,GAAI,KAC1Dz/H,IAGsB,QAArBvlF,EAAKulF,EAAQ,UAAuB,IAAPvlF,OAAgB,EAASA,EAAGpX,aACpC,QAArB0mB,EAAKi2E,EAAQ,UAAuB,IAAPj2E,OAAgB,EAASA,EAAG3mB,MAAMu0E,SAAS,iBAC1E74E,KAAK+/N,gCAAiC,GAY9Cr/F,0BAA0B9kH,GACtB,GAAK5b,KAAK8/N,QACL9/N,KAAKggO,qBACNvB,OAAkCz+N,KAAKggO,oBAG3C,UACUhgO,KAAK8/N,OAAOa,MAAM,aAAgC,CAAE/kN,OAE1D5b,KAAK+/N,+BACC,IACA,IAEV,MAAOpkN,KAIX+kH,qBACI,IACI,IAAK/5G,UACD,OAAO,EAEX,MAAMG,QAAWq4M,KAGjB,aAFMI,GAAWz4M,EAAIo0M,GAAuB,WACtCuE,GAAc34M,EAAIo0M,KACjB,EAEX,MAAOv/M,IACP,OAAO,EAEX+kH,wBAAwB4yB,GACpBtzJ,KAAK6/N,gBACL,UACUvsE,IAEV,QACItzJ,KAAK6/N,iBAGbn/F,WAAW9kH,EAAKtX,GACZ,OAAOtE,KAAK4gO,mBAAkBlgG,gBACpB1gI,KAAK6gO,cAAc/5M,GAAOy4M,GAAWz4M,EAAIlL,EAAKtX,KACpDtE,KAAK47N,WAAWhgN,GAAOtX,EAChBtE,KAAK8gO,oBAAoBllN,MAGxC8kH,WAAW9kH,GACP,MAAMd,QAAa9a,KAAK6gO,cAAc/5M,GAAO04M,GAAU14M,EAAIlL,KAE3D,OADA5b,KAAK47N,WAAWhgN,GAAOd,EAChBA,EAEX4lH,cAAc9kH,GACV,OAAO5b,KAAK4gO,mBAAkBlgG,gBACpB1gI,KAAK6gO,cAAc/5M,GAAO24M,GAAc34M,EAAIlL,YAC3C5b,KAAK47N,WAAWhgN,GAChB5b,KAAK8gO,oBAAoBllN,MAGxC8kH,cAEI,MAAM97H,QAAe5E,KAAK6gO,cAAc/5M,IACpC,MAAMi6M,EAAgB/B,GAAel4M,GAAI,GAAO0oK,SAChD,OAAO,IAAIsvC,GAAUiC,GAAehC,eAExC,IAAKn6N,EACD,MAAO,GAGX,GAA2B,IAAvB5E,KAAK6/N,cACL,MAAO,GAEX,MAAMh9N,EAAO,GACPm+N,EAAe,IAAI/jM,IACzB,IAAK,MAAQgkM,UAAWrlN,EAAG,MAAEtX,KAAWM,EACpCo8N,EAAa7jM,IAAIvhB,GACbtB,KAAKC,UAAUva,KAAK47N,WAAWhgN,MAAUtB,KAAKC,UAAUjW,KACxDtE,KAAKk8N,gBAAgBtgN,EAAKtX,GAC1BzB,EAAKmD,KAAK4V,IAGlB,IAAK,MAAMslN,KAAY3hO,OAAOsD,KAAK7C,KAAK47N,YAChC57N,KAAK47N,WAAWsF,KAAcF,EAAan4M,IAAIq4M,KAE/ClhO,KAAKk8N,gBAAgBgF,EAAU,MAC/Br+N,EAAKmD,KAAKk7N,IAGlB,OAAOr+N,EAEXq5N,gBAAgBtgN,EAAKmoC,GACjB/jD,KAAK47N,WAAWhgN,GAAOmoC,EACvB,MAAM+lF,EAAY9pI,KAAK8pI,UAAUluH,GACjC,GAAIkuH,EACA,IAAK,MAAMv3C,KAAY7yF,MAAMshG,KAAK8oC,GAC9Bv3C,EAASxuC,GAIrBw4K,eACIv8N,KAAKo8N,cACLp8N,KAAK67N,UAAY17J,aAAYugE,SAAY1gI,KAAKwgO,SAASd,IAE3DtD,cACQp8N,KAAK67N,YACLx7J,cAAcrgE,KAAK67N,WACnB77N,KAAK67N,UAAY,MAGzBpX,aAAa7oM,EAAK22E,GAC6B,IAAvChzF,OAAOsD,KAAK7C,KAAK8pI,WAAWzoI,QAC5BrB,KAAKu8N,eAEJv8N,KAAK8pI,UAAUluH,KAChB5b,KAAK8pI,UAAUluH,GAAO,IAAIqhB,IAErBj9B,KAAKk3H,KAAKt7G,IAEnB5b,KAAK8pI,UAAUluH,GAAKuhB,IAAIo1D,GAE5BoyH,gBAAgB/oM,EAAK22E,GACbvyF,KAAK8pI,UAAUluH,KACf5b,KAAK8pI,UAAUluH,GAAK5Z,OAAOuwF,GACM,IAA7BvyF,KAAK8pI,UAAUluH,GAAKiiB,aACb79B,KAAK8pI,UAAUluH,IAGa,IAAvCrc,OAAOsD,KAAK7C,KAAK8pI,WAAWzoI,QAC5BrB,KAAKo8N,eAIjBwD,GAA0B1yM,KAAO,QAOjC,MAAMi0M,GAA4BvB;;;;;;;;;;;;;;;;GAkBlC,SAASwB,GAAoBhgL,EAAMj/C,GAC/B,OAAOu6M,EAAmBt7J,EAAM,OAAmB,+BAA8Dq7J,EAAmBr7J,EAAMj/C,IAE9I,SAASk/N,GAAuBjgL,EAAMj/C,GAClC,OAAOu6M,EAAmBt7J,EAAM,OAAmB,kCAAoEq7J,EAAmBr7J,EAAMj/C;;;;;;;;;;;;;;;;GAmBpJu+H,eAAe4gG,GAAmBlgL,GAC9B,aAAes7J,EAAmBt7J,EAAM,MAAiB,wBAAkDmgL,kBAAoB;;;;;;;;;;;;;;;;GAmBnI,SAASC,KACL,IAAI7lN,EAAIsP,EACR,OAA0G,QAAlGA,EAAsD,QAAhDtP,EAAKg6B,SAASk1B,qBAAqB,eAA4B,IAAPlvD,OAAgB,EAASA,EAAG,UAAuB,IAAPsP,EAAgBA,EAAK0qB,SAE3I,SAAS8rL,GAAQ9/N,GAEb,OAAO,IAAIS,SAAQ,CAACC,EAASC,KACzB,MAAMkyJ,EAAK7+G,SAAS40B,cAAc,UAClCiqF,EAAG5pF,aAAa,MAAOjpE,GACvB6yJ,EAAGnxJ,OAAShB,EACZmyJ,EAAG/wJ,QAAUiB,IACT,MAAM4B,EAAQuzM,EAAa,kBAC3BvzM,EAAMyxE,WAAarzE,EACnBpC,EAAOgE,IAEXkuJ,EAAGtnI,KAAO,kBACVsnI,EAAGktE,QAAU,QACbF,KAAyB12J,YAAY0pF,MAG7C,SAASmtE,GAAsB9D,GAC3B,MAAO,KAAKA,IAAS5uN,KAAKq2C,MAAsB,IAAhBr2C,KAAKC;;;;;;;;;;;;;;;;GAmBzC,MAAM0yN,GAAiB,IACjBC,GAAsB,IACtBC,GAAmB,KACzB,MAAMC,GACF9hO,YAAYmhD,GACRphD,KAAKohD,KAAOA,EACZphD,KAAKg4K,QAAU8pD,GACf9hO,KAAKgiO,SAAW,IAAIt5M,IAExBsgI,OAAOtW,EAAWjiG,GACd,MAAMxK,EAAKjmC,KAAKg4K,QAGhB,OAFAh4K,KAAKgiO,SAASr5M,IAAIsd,EAAI,IAAIg8L,GAAWvvF,EAAW1yI,KAAKohD,KAAK/tC,KAAMo9B,GAAc,KAC9EzwC,KAAKg4K,UACE/xI,EAEX84C,MAAMmjJ,GACF,IAAIvmN,EACJ,MAAMsqB,EAAKi8L,GAAeJ,GACa,QAAhCnmN,EAAK3b,KAAKgiO,SAAStgO,IAAIukC,UAAwB,IAAPtqB,GAAyBA,EAAG3Z,SAC3EhC,KAAKgiO,SAAShgO,OAAOikC,GAEzBwqG,YAAYyxF,GACR,IAAIvmN,EACJ,MAAMsqB,EAAKi8L,GAAeJ,GAC1B,OAAyC,QAAhCnmN,EAAK3b,KAAKgiO,SAAStgO,IAAIukC,UAAwB,IAAPtqB,OAAgB,EAASA,EAAG80H,gBAAkB,GAEnG/P,cAAcwhG,GACV,IAAIvmN,EACJ,MAAMsqB,EAAKi8L,GAAeJ,GAE1B,OADuC,QAAhCnmN,EAAK3b,KAAKgiO,SAAStgO,IAAIukC,UAAwB,IAAPtqB,GAAyBA,EAAGwmN,UACpE,IAGf,MAAMF,GACFhiO,YAAYmiO,EAAe7xM,EAAShV,GAChCvb,KAAKub,OAASA,EACdvb,KAAKggN,QAAU,KACfhgN,KAAKqiO,SAAU,EACfriO,KAAKsiO,cAAgB,KACrBtiO,KAAKuiO,aAAe,KAChBviO,KAAKmiO,WAET,MAAMzvF,EAAqC,kBAAlB0vF,EACnBzsL,SAAS6sL,eAAeJ,GACxBA,EACNhoB,EAAQ1nE,EAAW,iBAAuC,CAAEniH,YAC5DvwB,KAAK0yI,UAAYA,EACjB1yI,KAAKyiO,UAAiC,cAArBziO,KAAKub,OAAOsiB,KACzB79B,KAAKyiO,UACLziO,KAAKmiO,UAGLniO,KAAK0yI,UAAUhtH,iBAAiB,QAAS1lB,KAAKuiO,cAGtD9xF,cAEI,OADAzwI,KAAK0iO,iBACE1iO,KAAKsiO,cAEhBtgO,SACIhC,KAAK0iO,iBACL1iO,KAAKqiO,SAAU,EACXriO,KAAKggN,UACLz5I,aAAavmE,KAAKggN,SAClBhgN,KAAKggN,QAAU,MAEnBhgN,KAAK0yI,UAAUhvF,oBAAoB,QAAS1jD,KAAKuiO,cAErDJ,UACIniO,KAAK0iO,iBACD1iO,KAAKggN,UAGThgN,KAAKggN,QAAU77L,OAAOukB,YAAW,KAC7B1oC,KAAKsiO,cAAgBK,GAAiC,IACtD,MAAM,SAAEtwM,EAAU,mBAAoBuwM,GAAoB5iO,KAAKub,OAC/D,GAAI8W,EACA,IACIA,EAASryB,KAAKsiO,eAElB,MAAO59N,IAEX1E,KAAKggN,QAAU77L,OAAOukB,YAAW,KAG7B,GAFA1oC,KAAKggN,QAAU,KACfhgN,KAAKsiO,cAAgB,KACjBM,EACA,IACIA,IAEJ,MAAOl+N,IAEP1E,KAAKyiO,WACLziO,KAAKmiO,YAEVN,MACJD,KAEPc,iBACI,GAAI1iO,KAAKqiO,QACL,MAAM,IAAIzhO,MAAM,wCAI5B,SAAS+hO,GAAiC9hI,GACtC,MAAMyF,EAAQ,GACRu8H,EAAe,iEACrB,IAAK,IAAI3hO,EAAI,EAAGA,EAAI2/F,EAAK3/F,IACrBolG,EAAMtgG,KAAK68N,EAAa/sL,OAAO7mC,KAAKq2C,MAAMr2C,KAAKC,SAAW2zN,EAAaxhO,UAE3E,OAAOilG,EAAMtgF,KAAK;;;;;;;;;;;;;;;;GAqBtB,MAAM88M,GAAmBnB,GAAsB,OACzCoB,GAAwB,IAAInnB,EAAM,IAAO,KACzConB,GAAiB,2CAIvB,MAAMC,GACFhjO,cACID,KAAKkjO,aAAe,GACpBljO,KAAKg4K,QAAU,EACfh4K,KAAKmjO,0BAA4Bn7G,KAAUo7G,WAE/CC,KAAKjiL,EAAMkiL,EAAK,IAEZ,OADAlpB,EAAQmpB,GAAoBD,GAAKliL,EAAM,kBACnCphD,KAAKwjO,yBAAyBF,GACvBlhO,QAAQC,QAAQ2lH,KAAUo7G,YAE9B,IAAIhhO,SAAQ,CAACC,EAASC,KACzB,MAAM+6M,EAAiBr1F,KAAUt/E,YAAW,KACxCpmC,EAAOu3M,EAAaz4J,EAAM,6BAC3B2hL,GAAsBrhO,OACzBsmH,KAAU86G,IAAoB,KAC1B96G,KAAUzhD,aAAa82I,UAChBr1F,KAAU86G,IACjB,MAAMW,EAAYz7G,KAAUo7G,WAC5B,IAAKK,EAED,YADAnhO,EAAOu3M,EAAaz4J,EAAM,mBAK9B,MAAM4nG,EAASy6E,EAAUz6E,OACzBy6E,EAAUz6E,OAAS,CAACtW,EAAWn3H,KAC3B,MAAMmoN,EAAW16E,EAAOtW,EAAWn3H,GAEnC,OADAvb,KAAKg4K,UACE0rD,GAEX1jO,KAAKkjO,aAAeI,EACpBjhO,EAAQohO,IAEZ,MAAM9hO,EAAM,GAAGqhO,OAAkB,QAAY,CACzC3/N,OAAQy/N,GACR95E,OAAQ,WACRs6E,SAEJ7B,GAAQ9/N,GAAK87D,OAAM,KACf8I,aAAa82I,GACb/6M,EAAOu3M,EAAaz4J,EAAM,yBAItCuiL,qBACI3jO,KAAKg4K,UAETwrD,yBAAyBF,GAQrB,QAAUt7G,KAAUo7G,aACfE,IAAOtjO,KAAKkjO,cACTljO,KAAKg4K,QAAU,GACfh4K,KAAKmjO,0BAGrB,SAASI,GAAoBD,GACzB,OAAOA,EAAGjiO,QAAU,GAAK,yBAAyBiO,KAAKg0N,GAE3D,MAAMM,GACFljG,WAAWt/E,GACP,OAAO,IAAI2gL,GAAc3gL,GAE7BuiL;;;;;;;;;;;;;;;;GAmBJ,MAAME,GAA0B,YAC1BC,GAAiB,CACnBC,MAAO,QACP72M,KAAM,SAOV,MAAM82M,GAyBF/jO,YAAYmiO,EAAe3xL,EAAalxC,OAAOwB,OAAO,GAAI+iO,IAAiB/J,GACvE/5N,KAAKywC,WAAaA,EAOlBzwC,KAAKktB,KAAO22M,GACZ7jO,KAAKikO,WAAY,EACjBjkO,KAAK0jO,SAAW,KAChB1jO,KAAKkkO,qBAAuB,IAAIjnM,IAChCj9B,KAAKmkO,cAAgB,KACrBnkO,KAAKyjO,UAAY,KACjBzjO,KAAKohD,KAAOwqK,GAAUmO,GACtB/5N,KAAKokO,YAAuC,cAAzBpkO,KAAKywC,WAAW5S,KACnCu8K,EAA4B,qBAAbzkK,SAA0B31C,KAAKohD,KAAM,+CACpD,MAAMsxF,EAAqC,kBAAlB0vF,EACnBzsL,SAAS6sL,eAAeJ,GACxBA,EACNhoB,EAAQ1nE,EAAW1yI,KAAKohD,KAAM,kBAC9BphD,KAAK0yI,UAAYA,EACjB1yI,KAAKywC,WAAWpe,SAAWryB,KAAKqkO,kBAAkBrkO,KAAKywC,WAAWpe,UAClEryB,KAAKskO,iBAAmBtkO,KAAKohD,KAAKwnK,SAASC,kCACrC,IAAI+a,GACJ,IAAIX,GACVjjO,KAAKukO,wBAQT7jG,eACI1gI,KAAKwkO,qBACL,MAAMv+L,QAAWjmC,KAAKgpJ,SAChBy6E,EAAYzjO,KAAKykO,uBACjBlhO,EAAWkgO,EAAUhzF,YAAYxqG,GACvC,OAAI1iC,GAGG,IAAInB,SAAQC,IACf,MAAMqiO,EAAelrJ,IACZA,IAGLx5E,KAAKkkO,qBAAqBliO,OAAO0iO,GACjCriO,EAAQm3E,KAEZx5E,KAAKkkO,qBAAqB/mM,IAAIunM,GAC1B1kO,KAAKokO,aACLX,EAAUtB,QAAQl8L,MAS9B+iH,SACI,IACIhpJ,KAAKwkO,qBAET,MAAO9/N,GAIH,OAAOtC,QAAQE,OAAOoC,GAE1B,OAAI1E,KAAKmkO,gBAGTnkO,KAAKmkO,cAAgBnkO,KAAK2kO,oBAAoBlnK,OAAM/4D,IAEhD,MADA1E,KAAKmkO,cAAgB,KACfz/N,MAJC1E,KAAKmkO,cASpBS,SACI5kO,KAAKwkO,qBACiB,OAAlBxkO,KAAK0jO,UACL1jO,KAAKykO,uBAAuB1lJ,MAAM/+E,KAAK0jO,UAM/C56M,QACI9oB,KAAKwkO,qBACLxkO,KAAKikO,WAAY,EACjBjkO,KAAKskO,iBAAiBX,qBACjB3jO,KAAKokO,aACNpkO,KAAK0yI,UAAUy7D,WAAWrrM,SAAQ6qK,IAC9B3tK,KAAK0yI,UAAU1nE,YAAY2iG,MAIvC42D,wBACInqB,GAASp6M,KAAKywC,WAAWo0L,QAAS7kO,KAAKohD,KAAM,kBAC7Cg5J,EAAQp6M,KAAKokO,cAAgBpkO,KAAK0yI,UAAUw8D,gBAAiBlvM,KAAKohD,KAAM,kBACxEg5J,EAA4B,qBAAbzkK,SAA0B31C,KAAKohD,KAAM,+CAExDijL,kBAAkBj6E,GACd,OAAO5wE,IAEH,GADAx5E,KAAKkkO,qBAAqBphO,SAAQyvF,GAAYA,EAAS/Y,KAC/B,oBAAb4wE,EACPA,EAAS5wE,QAER,GAAwB,kBAAb4wE,EAAuB,CACnC,MAAM06E,EAAa98G,KAAUoiC,GACH,oBAAf06E,GACPA,EAAWtrJ,KAK3BgrJ,qBACIpqB,GAASp6M,KAAKikO,UAAWjkO,KAAKohD,KAAM,kBAExCs/E,0BAEI,SADM1gI,KAAKu9H,QACNv9H,KAAK0jO,SAAU,CAChB,IAAIhxF,EAAY1yI,KAAK0yI,UACrB,IAAK1yI,KAAKokO,YAAa,CACnB,MAAMW,EAAkBpvL,SAAS40B,cAAc,OAC/CmoE,EAAU5nE,YAAYi6J,GACtBryF,EAAYqyF,EAEhB/kO,KAAK0jO,SAAW1jO,KAAKykO,uBAAuBz7E,OAAOtW,EAAW1yI,KAAKywC,YAEvE,OAAOzwC,KAAK0jO,SAEhBhjG,aACI05E,EAAQkB,MAAqB6iB,KAAan+N,KAAKohD,KAAM,wBAC/C4jL,KACNhlO,KAAKyjO,gBAAkBzjO,KAAKskO,iBAAiBjB,KAAKrjO,KAAKohD,KAAMphD,KAAKohD,KAAK27J,mBAAgB72K,GACvF,MAAM++L,QAAgB3D,GAAmBthO,KAAKohD,MAC9Cg5J,EAAQ6qB,EAASjlO,KAAKohD,KAAM,kBAC5BphD,KAAKywC,WAAWo0L,QAAUI,EAE9BR,uBAEI,OADArqB,EAAQp6M,KAAKyjO,UAAWzjO,KAAKohD,KAAM,kBAC5BphD,KAAKyjO,WAGpB,SAASuB,KACL,IAAIv+J,EAAW,KACf,OAAO,IAAIrkE,SAAQC,IACa,aAAxBszC,SAAS6qF,YAOb/5D,EAAW,IAAMpkE,IACjB8hB,OAAOuB,iBAAiB,OAAQ+gD,IAP5BpkE,OAQLo7D,OAAM/4D,IAIL,MAHI+hE,GACAtiD,OAAOu/B,oBAAoB,OAAQ+iB,GAEjC/hE;;;;;;;;;;;;;;;;GAoBd,MAAMwgO,GACFjlO,YAAY6vN,EAAgBqV,GACxBnlO,KAAK8vN,eAAiBA,EACtB9vN,KAAKmlO,eAAiBA,EAE1BC,QAAQrV,GACJ,MAAMsV,EAAiBxV,GAAoByV,kBAAkBtlO,KAAK8vN,eAAgBC,GAClF,OAAO/vN,KAAKmlO,eAAeE,IAiCnC3kG,eAAe6kG,GAAsBnkL,EAAM88J,EAAasnB,GACpD,MAAM1Z,EAAeF,GAAUxqK,GACzB0uK,QAAuB2V,GAAmB3Z,EAAc5N,GAAa,QAAmBsnB,IAC9F,OAAO,IAAIN,GAAuBpV,GAAgBf,GAAQ6F,GAAqB9I,EAAciD,KAWjGruF,eAAeglG,GAAoB1yG,EAAMkrF,EAAasnB,GAClD,MAAM9mB,GAAe,QAAmB1rF,SAClCkhG,IAAoB,EAAOxV,EAAc,SAC/C,MAAMoR,QAAuB2V,GAAmB/mB,EAAat9J,KAAM88J,GAAa,QAAmBsnB,IACnG,OAAO,IAAIN,GAAuBpV,GAAgBf,GAAQ8F,GAAmBnW,EAAcqQ,KAa/FruF,eAAeilG,GAA8B3yG,EAAMkrF,EAAasnB,GAC5D,MAAM9mB,GAAe,QAAmB1rF,GAClC88F,QAAuB2V,GAAmB/mB,EAAat9J,KAAM88J,GAAa,QAAmBsnB,IACnG,OAAO,IAAIN,GAAuBpV,GAAgBf,GAAQ+F,GAA6BpW,EAAcqQ,KAMzGruF,eAAe+kG,GAAmBrkL,EAAMx/C,EAASkhB,GAC7C,IAAInH,EACJ,MAAMiqN,QAAuB9iN,EAAS+iN,SACtC,IAGI,IAAIC,EASJ,GAXA1rB,EAAkC,kBAAnBwrB,EAA6BxkL,EAAM,kBAClDg5J,EAAQt3L,EAASoK,OAAS22M,GAAyBziL,EAAM,kBAGrD0kL,EADmB,kBAAZlkO,EACY,CACfs8M,YAAat8M,GAIEA,EAEnB,YAAakkO,EAAkB,CAC/B,MAAM/pF,EAAU+pF,EAAiB/pF,QACjC,GAAI,gBAAiB+pF,EAAkB,CACnC1rB,EAAyB,WAAjBr+D,EAAQ7uH,KAAgCk0B,EAAM,kBACtD,MAAM79C,QAAiB+2N,GAAoBl5K,EAAM,CAC7CrrB,QAASgmH,EAAQ76G,WACjB6kM,oBAAqB,CACjB7nB,YAAa4nB,EAAiB5nB,YAC9B0nB,oBAGR,OAAOriO,EAASyiO,iBAAiB/V,YAEhC,CACD7V,EAAyB,WAAjBr+D,EAAQ7uH,KAAiCk0B,EAAM,kBACvD,MAAMg0K,GAA+D,QAA3Cz5M,EAAKmqN,EAAiBG,uBAAoC,IAAPtqN,OAAgB,EAASA,EAAGqY,MACrG8xM,EAAiBI,eACrB9rB,EAAQgb,EAAiBh0K,EAAM,6BAC/B,MAAM79C,QAAiB69N,GAAoBhgL,EAAM,CAC7Cm4K,qBAAsBx9E,EAAQ76G,WAC9Bk0L,kBACA+Q,gBAAiB,CACbP,oBAGR,OAAOriO,EAAS6iO,kBAAkBnW,aAGrC,CACD,MAAM,YAAEA,SAAsBZ,GAA0BjuK,EAAM,CAC1D88J,YAAa4nB,EAAiB5nB,YAC9B0nB,mBAEJ,OAAO3V,GAGf,QACIntM,EAAS8hN,UAsBjBlkG,eAAe2lG,GAAkBrzG,EAAM9xF,SAC7BozL,IAAQ,QAAmBthG,GAAO9xF;;;;;;;;;;;;;;;;GAmC5C,MAAMolM,GAKFrmO,YAAYmhD,GAERphD,KAAKwiN,WAAa8jB,GAAkBzV,YACpC7wN,KAAKohD,KAAOwqK,GAAUxqK,GAiC1BmlL,kBAAkBC,EAAcC,GAC5B,OAAOhB,GAAmBzlO,KAAKohD,KAAMolL,GAAc,QAAmBC,IA6B1EtqB,kBAAkB2T,EAAgBC,GAC9B,OAAOF,GAAoByV,kBAAkBxV,EAAgBC,GAMjE5T,4BAA4B6V,GACxB,MAAM9wL,EAAa8wL,EACnB,OAAOsU,GAAkBhU,2BAA2BpxL,GAkCxDi7K,2BAA2B71M,GACvB,OAAOggO,GAAkBhU,2BAA4BhsN,EAAMyxE,YAAc,IAE7EokI,mCAAoCgC,eAAgB/8I,IAChD,IAAKA,EACD,OAAO,KAEX,MAAM,YAAE88I,EAAW,eAAEsR,GAAmBpuJ,EACxC,OAAI88I,GAAesR,EACRK,GAAoB6W,mBAAmBxoB,EAAasR,GAExD;;;;;;;;;;;;;;;;;AA6Bf,SAASmX,GAAqBvlL,EAAMwlL,GAChC,OAAIA,EACOpsB,EAAaosB,IAExBxsB,EAAQh5J,EAAKsnK,uBAAwBtnK,EAAM,kBACpCA,EAAKsnK;;;;;;;;;;;;;;;;GA9BhB4d,GAAkBzV,YAAc,QAEhCyV,GAAkBO,qBAAuB,QA+CzC,MAAMC,WAAsB7Z,GACxBhtN,YAAYsb,GACRy8D,MAAM,SAAuB,UAC7Bh4E,KAAKub,OAASA,EAElB4xM,oBAAoB/rK,GAChB,OAAOutK,GAAcvtK,EAAMphD,KAAK+mO,oBAEpC1Z,eAAejsK,EAAMrrB,GACjB,OAAO44L,GAAcvtK,EAAMphD,KAAK+mO,iBAAiBhxM,IAErDw3L,6BAA6BnsK,GACzB,OAAOutK,GAAcvtK,EAAMphD,KAAK+mO,oBAEpCA,iBAAiBhxM,GACb,MAAM5zB,EAAU,CACZypB,WAAY5rB,KAAKub,OAAOqQ,WACxB4hG,UAAWxtH,KAAKub,OAAOiyG,UACvB4hG,SAAUpvN,KAAKub,OAAO6zM,SACtBz6L,SAAU30B,KAAKub,OAAOoZ,SACtBm6L,aAAc9uN,KAAKub,OAAOuzM,aAC1BJ,mBAAmB,EACnBsY,qBAAqB,GAKzB,OAHIjxM,IACA5zB,EAAQ4zB,QAAUA,GAEf5zB,GAGf,SAAS8kO,GAAQ1rN,GACb,OAAOo5M,GAAsBp5M,EAAO6lC,KAAM,IAAI0lL,GAAcvrN,GAASA,EAAOmkM,iBAEhF,SAASwnB,GAAQ3rN,GACb,MAAM,KAAE6lC,EAAI,KAAE4xE,GAASz3G,EAEvB,OADA6+L,EAAQpnF,EAAM5xE,EAAM,kBACbszK,GAAgB1hG,EAAM,IAAI8zG,GAAcvrN,GAASA,EAAOmkM,iBAEnEh/E,eAAeymG,GAAM5rN,GACjB,MAAM,KAAE6lC,EAAI,KAAE4xE,GAASz3G,EAEvB,OADA6+L,EAAQpnF,EAAM5xE,EAAM,kBACbkzK,GAAQthG,EAAM,IAAI8zG,GAAcvrN,GAASA,EAAOmkM;;;;;;;;;;;;;;;;GAuB3D,MAAM0nB,GACFnnO,YAAYmhD,EAAMllC,EAAQuqD,EAAUusD,EAAM0sF,GAAkB,GACxD1/M,KAAKohD,KAAOA,EACZphD,KAAKymE,SAAWA,EAChBzmE,KAAKgzH,KAAOA,EACZhzH,KAAK0/M,gBAAkBA,EACvB1/M,KAAKqnO,eAAiB,KACtBrnO,KAAKsnO,aAAe,KACpBtnO,KAAKkc,OAASxc,MAAM21E,QAAQn5D,GAAUA,EAAS,CAACA,GAEpDimN,UACI,OAAO,IAAI//N,SAAQs+H,MAAOr+H,EAASC,KAC/BtC,KAAKqnO,eAAiB,CAAEhlO,UAASC,UACjC,IACItC,KAAKsnO,mBAAqBtnO,KAAKymE,SAASyiJ,YAAYlpN,KAAKohD,YACnDphD,KAAKunO,cACXvnO,KAAKsnO,aAAaE,iBAAiBxnO,MAEvC,MAAO0E,GACH1E,KAAKsC,OAAOoC,OAIxBg8H,kBAAkB95G,GACd,MAAM,YAAE6gN,EAAW,UAAEj6G,EAAS,SAAE4hG,EAAQ,SAAEz6L,EAAQ,MAAEruB,EAAK,KAAE4mB,GAAStG,EACpE,GAAItgB,EAEA,YADAtG,KAAKsC,OAAOgE,GAGhB,MAAMiV,EAAS,CACX6lC,KAAMphD,KAAKohD,KACXx1B,WAAY67M,EACZj6G,UAAWA,EACX74F,SAAUA,QAAYuR,EACtBkpL,SAAUA,QAAYlpL,EACtB8sF,KAAMhzH,KAAKgzH,KACX0sF,gBAAiB1/M,KAAK0/M,iBAE1B,IACI1/M,KAAKqC,cAAcrC,KAAK0nO,WAAWx6M,EAAhBltB,CAAsBub,IAE7C,MAAO7W,GACH1E,KAAKsC,OAAOoC,IAGpBijO,QAAQrhO,GACJtG,KAAKsC,OAAOgE,GAEhBohO,WAAWx6M,GACP,OAAQA,GACJ,IAAK,iBACL,IAAK,oBACD,OAAO+5M,GACX,IAAK,eACL,IAAK,kBACD,OAAOE,GACX,IAAK,iBACL,IAAK,oBACD,OAAOD,GACX,QACIztB,EAAMz5M,KAAKohD,KAAM,mBAG7B/+C,QAAQ0sN,GACJzU,EAAYt6M,KAAKqnO,eAAgB,iCACjCrnO,KAAKqnO,eAAehlO,QAAQ0sN,GAC5B/uN,KAAK4nO,uBAETtlO,OAAOgE,GACHg0M,EAAYt6M,KAAKqnO,eAAgB,iCACjCrnO,KAAKqnO,eAAe/kO,OAAOgE,GAC3BtG,KAAK4nO,uBAETA,uBACQ5nO,KAAKsnO,cACLtnO,KAAKsnO,aAAaO,mBAAmB7nO,MAEzCA,KAAKqnO,eAAiB,KACtBrnO,KAAK4/I;;;;;;;;;;;;;;;;GAoBb,MAAMkoF,GAA6B,IAAIlsB,EAAM,IAAM,KA8BnDl7E,eAAeqnG,GAAgB3mL,EAAM2hB,EAAU0D,GAC3C,MAAMqlJ,EAAeF,GAAUxqK,GAC/B44J,EAAkB54J,EAAM2hB,EAAUmuJ,IAClC,MAAM8W,EAAmBrB,GAAqB7a,EAAcrlJ,GACtDq+C,EAAS,IAAImjH,GAAenc,EAAc,iBAA0C/oJ,EAAUilK,GACpG,OAAOljH,EAAOojH,iBA2BlBxnG,eAAeynG,GAAwBn1G,EAAMjwD,EAAU0D,GACnD,MAAMi4I,GAAe,QAAmB1rF,GACxCgnF,EAAkB0E,EAAat9J,KAAM2hB,EAAUmuJ,IAC/C,MAAM8W,EAAmBrB,GAAqBjoB,EAAat9J,KAAMqlB,GAC3Dq+C,EAAS,IAAImjH,GAAevpB,EAAat9J,KAAM,iBAAyC2hB,EAAUilK,EAAkBtpB,GAC1H,OAAO55F,EAAOojH,iBA0BlBxnG,eAAe0nG,GAAcp1G,EAAMjwD,EAAU0D,GACzC,MAAMi4I,GAAe,QAAmB1rF,GACxCgnF,EAAkB0E,EAAat9J,KAAM2hB,EAAUmuJ,IAC/C,MAAM8W,EAAmBrB,GAAqBjoB,EAAat9J,KAAMqlB,GAC3Dq+C,EAAS,IAAImjH,GAAevpB,EAAat9J,KAAM,eAAqC2hB,EAAUilK,EAAkBtpB,GACtH,OAAO55F,EAAOojH,iBAOlB,MAAMD,WAAuBb,GACzBnnO,YAAYmhD,EAAMllC,EAAQ6mD,EAAU0D,EAAUusD,GAC1Ch7C,MAAM52B,EAAMllC,EAAQuqD,EAAUusD,GAC9BhzH,KAAK+iE,SAAWA,EAChB/iE,KAAKqoO,WAAa,KAClBroO,KAAKsoO,OAAS,KACVL,GAAeM,oBACfN,GAAeM,mBAAmBz7E,SAEtCm7E,GAAeM,mBAAqBvoO,KAExC0gI,uBACI,MAAM97H,QAAe5E,KAAKmiO,UAE1B,OADA/nB,EAAQx1M,EAAQ5E,KAAKohD,KAAM,kBACpBx8C,EAEX87H,oBACI45E,EAAmC,IAAvBt6M,KAAKkc,OAAO7a,OAAc,0CACtC,MAAMgvB,EAAUutM,KAChB59N,KAAKqoO,iBAAmBroO,KAAKymE,SAAS+hK,WAAWxoO,KAAKohD,KAAMphD,KAAK+iE,SAAU/iE,KAAKkc,OAAO,GACvFmU,GACArwB,KAAKqoO,WAAWI,gBAAkBp4M,EAQlCrwB,KAAKymE,SAASiiK,kBAAkB1oO,KAAKohD,MAAMqc,OAAM/4D,IAC7C1E,KAAKsC,OAAOoC,MAEhB1E,KAAKymE,SAASkiK,6BAA6B3oO,KAAKohD,MAAMi4C,IAC7CA,GACDr5F,KAAKsC,OAAOu3M,EAAa75M,KAAKohD,KAAM,+BAI5CphD,KAAK4oO,uBAELv4M,cACA,IAAI1U,EACJ,OAAmC,QAA1BA,EAAK3b,KAAKqoO,kBAA+B,IAAP1sN,OAAgB,EAASA,EAAG8sN,kBAAoB,KAE/F37E,SACI9sJ,KAAKsC,OAAOu3M,EAAa75M,KAAKohD,KAAM,4BAExCw+F,UACQ5/I,KAAKqoO,YACLroO,KAAKqoO,WAAWrhN,QAEhBhnB,KAAKsoO,QACLnkN,OAAOoiD,aAAavmE,KAAKsoO,QAE7BtoO,KAAKqoO,WAAa,KAClBroO,KAAKsoO,OAAS,KACdL,GAAeM,mBAAqB,KAExCK,uBACI,MAAMlN,EAAO,KACT,IAAI//M,EAAIsP,GAC6E,QAAhFA,EAAgC,QAA1BtP,EAAK3b,KAAKqoO,kBAA+B,IAAP1sN,OAAgB,EAASA,EAAGwI,cAA2B,IAAP8G,OAAgB,EAASA,EAAGm1C,QAIrHpgE,KAAKsoO,OAASnkN,OAAOukB,YAAW,KAC5B1oC,KAAKsoO,OAAS,KACdtoO,KAAKsC,OAAOu3M,EAAa75M,KAAKohD,KAAM,2BACrC,KAGPphD,KAAKsoO,OAASnkN,OAAOukB,WAAWgzL,EAAMoM,GAA2BpmO,QAErEg6N,KAKRuM,GAAeM,mBAAqB;;;;;;;;;;;;;;;;;AAkBpC,MAAMM,GAAuB,kBAGvBC,GAAqB,IAAIpgN,IAC/B,MAAMqgN,WAAuB3B,GACzBnnO,YAAYmhD,EAAMqlB,EAAUi5I,GAAkB,GAC1C1nI,MAAM52B,EAAM,CACR,oBACA,kBACA,oBACA,WACDqlB,OAAUvgC,EAAWw5K,GACxB1/M,KAAKqwB,QAAU,KAMnBqwG,gBACI,IAAIsoG,EAAeF,GAAmBpnO,IAAI1B,KAAKohD,KAAK+jJ,QACpD,IAAK6jC,EAAc,CACf,IACI,MAAMC,QAA2BC,GAAkClpO,KAAKymE,SAAUzmE,KAAKohD,MACjFx8C,EAASqkO,QAA2BjxJ,MAAMmqJ,UAAY,KAC5D6G,EAAe,IAAM5mO,QAAQC,QAAQuC,GAEzC,MAAOF,GACHskO,EAAe,IAAM5mO,QAAQE,OAAOoC,GAExCokO,GAAmBngN,IAAI3oB,KAAKohD,KAAK+jJ,OAAQ6jC,GAO7C,OAHKhpO,KAAK0/M,iBACNopB,GAAmBngN,IAAI3oB,KAAKohD,KAAK+jJ,QAAQ,IAAM/iM,QAAQC,QAAQ,QAE5D2mO,IAEXtoG,kBAAkB95G,GACd,GAAmB,sBAAfA,EAAMsG,KACN,OAAO8qD,MAAMmxJ,YAAYviN,GAExB,GAAmB,YAAfA,EAAMsG,MAKf,GAAItG,EAAMyJ,QAAS,CACf,MAAM2iG,QAAahzH,KAAKohD,KAAKgoL,mBAAmBxiN,EAAMyJ,SACtD,GAAI2iG,EAEA,OADAhzH,KAAKgzH,KAAOA,EACLh7C,MAAMmxJ,YAAYviN,GAGzB5mB,KAAKqC,QAAQ,YAVjBrC,KAAKqC,QAAQ,MAcrBq+H,qBACAkf,YAEJlf,eAAewoG,GAAkCziK,EAAUrlB,GACvD,MAAMxlC,EAAMytN,GAAmBjoL,GACzB45J,EAAcsuB,GAAoB7iK,GACxC,UAAYu0I,EAAY8K,eACpB,OAAO,EAEX,MAAMmjB,EAAuD,eAA3BjuB,EAAY9jF,KAAKt7G,GAEnD,aADMo/L,EAAYwK,QAAQ5pM,GACnBqtN,EAEXvoG,eAAe6oG,GAA0B9iK,EAAUrlB,GAC/C,OAAOkoL,GAAoB7iK,GAAU0wD,KAAKkyG,GAAmBjoL,GAAO,QAKxE,SAAS6oK,GAAwB7oK,EAAMx8C,GACnCkkO,GAAmBngN,IAAIy4B,EAAK+jJ,OAAQvgM,GAExC,SAAS0kO,GAAoB7iK,GACzB,OAAO+zI,EAAa/zI,EAASykJ,sBAEjC,SAASme,GAAmBjoL,GACxB,OAAOyjK,GAAoBgkB,GAAsBznL,EAAK4E,OAAO62J,OAAQz7J,EAAK/tC;;;;;;;;;;;;;;;;GA0D9E,SAASm2N,GAAmBpoL,EAAM2hB,EAAU0D,GACxC,OAAOgjK,GAAoBroL,EAAM2hB,EAAU0D,GAE/Ci6D,eAAe+oG,GAAoBroL,EAAM2hB,EAAU0D,GAC/C,MAAMqlJ,EAAeF,GAAUxqK,GAC/B44J,EAAkB54J,EAAM2hB,EAAUmuJ,IAClC,MAAM8W,EAAmBrB,GAAqB7a,EAAcrlJ,GAE5D,aADM8iK,GAA0BvB,EAAkBlc,GAC3Ckc,EAAiB0B,cAAc5d,EAAc/oJ,EAAU,qBA8BlE,SAAS4mK,GAA2B32G,EAAMjwD,EAAU0D,GAChD,OAAOmjK,GAA4B52G,EAAMjwD,EAAU0D,GAEvDi6D,eAAekpG,GAA4B52G,EAAMjwD,EAAU0D,GACvD,MAAMi4I,GAAe,QAAmB1rF,GACxCgnF,EAAkB0E,EAAat9J,KAAM2hB,EAAUmuJ,IAE/C,MAAM8W,EAAmBrB,GAAqBjoB,EAAat9J,KAAMqlB,SAC3D8iK,GAA0BvB,EAAkBtpB,EAAat9J,MAC/D,MAAM/wB,QAAgBw5M,GAAuBnrB,GAC7C,OAAOspB,EAAiB0B,cAAchrB,EAAat9J,KAAM2hB,EAAU,oBAA+C1yC,GA2BtH,SAASy5M,GAAiB92G,EAAMjwD,EAAU0D,GACtC,OAAOsjK,GAAkB/2G,EAAMjwD,EAAU0D,GAE7Ci6D,eAAeqpG,GAAkB/2G,EAAMjwD,EAAU0D,GAC7C,MAAMi4I,GAAe,QAAmB1rF,GACxCgnF,EAAkB0E,EAAat9J,KAAM2hB,EAAUmuJ,IAE/C,MAAM8W,EAAmBrB,GAAqBjoB,EAAat9J,KAAMqlB,SAC3DytJ,IAAoB,EAAOxV,EAAc37I,EAASy/I,kBAClD+mB,GAA0BvB,EAAkBtpB,EAAat9J,MAC/D,MAAM/wB,QAAgBw5M,GAAuBnrB,GAC7C,OAAOspB,EAAiB0B,cAAchrB,EAAat9J,KAAM2hB,EAAU,kBAA2C1yC,GAyClHqwG,eAAespG,GAAkB5oL,EAAMqlB,GAEnC,aADMmlJ,GAAUxqK,GAAMqnK,uBACfwhB,GAAmB7oL,EAAMqlB,GAAU,GAE9Ci6D,eAAeupG,GAAmB7oL,EAAM8oL,EAAgBxqB,GAAkB,GACtE,MAAMoM,EAAeF,GAAUxqK,GACzBqlB,EAAWkgK,GAAqB7a,EAAcoe,GAC9CplH,EAAS,IAAIikH,GAAejd,EAAcrlJ,EAAUi5I,GACpD96M,QAAekgH,EAAOq9G,UAM5B,OALIv9N,IAAW86M,WACJ96M,EAAOouH,KAAKkxF,uBACb4H,EAAa1J,sBAAsBx9M,EAAOouH,YAC1C84F,EAAazB,iBAAiB,KAAM6f,IAEvCtlO,EAEX87H,eAAempG,GAAuB72G,GAClC,MAAM3iG,EAAUutM,GAAiB,GAAG5qG,EAAKh/F,UAIzC,OAHAg/F,EAAKkxF,iBAAmB7zL,QAClB2iG,EAAK5xE,KAAKipK,iBAAiBr3F,SAC3BA,EAAK5xE,KAAKghK,sBAAsBpvF,GAC/B3iG;;;;;;;;;;;;;;;;GAqBX,MAAM85M,GAAsC,IAC5C,MAAMC,GACFnqO,YAAYmhD,GACRphD,KAAKohD,KAAOA,EACZphD,KAAKqqO,gBAAkB,IAAIptM,IAC3Bj9B,KAAKsqO,UAAY,IAAIrtM,IACrBj9B,KAAKuqO,oBAAsB,KAC3BvqO,KAAKwqO,6BAA8B,EACnCxqO,KAAKyqO,uBAAyBj8M,KAAKkC,MAEvC82M,iBAAiBkD,GACb1qO,KAAKsqO,UAAUntM,IAAIutM,GACf1qO,KAAKuqO,qBACLvqO,KAAK2qO,mBAAmB3qO,KAAKuqO,oBAAqBG,KAClD1qO,KAAK4qO,eAAe5qO,KAAKuqO,oBAAqBG,GAC9C1qO,KAAK6qO,iBAAiB7qO,KAAKuqO,qBAC3BvqO,KAAKuqO,oBAAsB,MAGnC1C,mBAAmB6C,GACf1qO,KAAKsqO,UAAUtoO,OAAO0oO,GAE1BI,QAAQlkN,GAEJ,GAAI5mB,KAAK+qO,oBAAoBnkN,GACzB,OAAO,EAEX,IAAIsgK,GAAU,EAQd,OAPAlnL,KAAKsqO,UAAUxnO,SAAQkoO,IACfhrO,KAAK2qO,mBAAmB/jN,EAAOokN,KAC/B9jD,GAAU,EACVlnL,KAAK4qO,eAAehkN,EAAOokN,GAC3BhrO,KAAK6qO,iBAAiBjkN,OAG1B5mB,KAAKwqO,8BAAgCS,GAAgBrkN,KAKzD5mB,KAAKwqO,6BAA8B,EAE9BtjD,IACDlnL,KAAKuqO,oBAAsB3jN,EAC3BsgK,GAAU,IANHA,EAUf0jD,eAAehkN,EAAOokN,GAClB,IAAIrvN,EACJ,GAAIiL,EAAMtgB,QAAU4kO,GAAoBtkN,GAAQ,CAC5C,MAAM9T,GAAoC,QAA3B6I,EAAKiL,EAAMtgB,MAAMwM,YAAyB,IAAP6I,OAAgB,EAASA,EAAGvE,MAAM,SAAS,KACzF,iBACJ4zN,EAASrD,QAAQ9tB,EAAa75M,KAAKohD,KAAMtuC,SAGzCk4N,EAAS7B,YAAYviN,GAG7B+jN,mBAAmB/jN,EAAOokN,GACtB,MAAMG,EAAsC,OAArBH,EAAS36M,WACzBzJ,EAAMyJ,SAAWzJ,EAAMyJ,UAAY26M,EAAS36M,QACnD,OAAO26M,EAAS9uN,OAAO28D,SAASjyD,EAAMsG,OAASi+M,EAEnDJ,oBAAoBnkN,GAKhB,OAJI4H,KAAKkC,MAAQ1wB,KAAKyqO,wBAClBN,IACAnqO,KAAKqqO,gBAAgBvhN,QAElB9oB,KAAKqqO,gBAAgBxhN,IAAIuiN,GAASxkN,IAE7CikN,iBAAiBjkN,GACb5mB,KAAKqqO,gBAAgBltM,IAAIiuM,GAASxkN,IAClC5mB,KAAKyqO,uBAAyBj8M,KAAKkC,OAG3C,SAAS06M,GAAS1mO,GACd,MAAO,CAACA,EAAEwoB,KAAMxoB,EAAE2rB,QAAS3rB,EAAE8oH,UAAW9oH,EAAEiwB,UAAUzY,QAAOtW,GAAKA,IAAGogB,KAAK,KAE5E,SAASklN,IAAoB,KAAEh+M,EAAI,MAAE5mB,IACjC,MAAiB,YAAT4mB,GAC2D,wBAApD,OAAV5mB,QAA4B,IAAVA,OAAmB,EAASA,EAAMwM,MAE7D,SAASm4N,GAAgBrkN,GACrB,OAAQA,EAAMsG,MACV,IAAK,oBACL,IAAK,kBACL,IAAK,oBACD,OAAO,EACX,IAAK,UACD,OAAOg+M,GAAoBtkN,GAC/B,QACI,OAAO;;;;;;;;;;;;;;;;GAoBnB85G,eAAe2qG,GAAkBjqL,EAAMj/C,EAAU,IAC7C,OAAOu6M,EAAmBt7J,EAAM,MAAiB,eAAyCj/C;;;;;;;;;;;;;;;;GAmB9F,MAAMmpO,GAAmB,uCACnBC,GAAa,UACnB7qG,eAAe8qG,GAAgBpqL,GAE3B,GAAIA,EAAK4E,OAAOi2J,SACZ,OAEJ,MAAM,kBAAEwvB,SAA4BJ,GAAkBjqL,GACtD,IAAK,MAAM8kC,KAAUulJ,EACjB,IACI,GAAIC,GAAYxlJ,GACZ,OAGR,MAAOvqE,IAKX89L,EAAMr4J,EAAM,uBAEhB,SAASsqL,GAAYlX,GACjB,MAAMr1K,EAAak8J,KACb,SAAEv4H,EAAQ,SAAE8wE,GAAa,IAAIxpC,IAAIjrE,GACvC,GAAIq1K,EAASx5M,WAAW,uBAAwB,CAC5C,MAAM2wN,EAAQ,IAAIvhH,IAAIoqG,GACtB,MAAuB,KAAnBmX,EAAM/3E,UAAgC,KAAbA,EAEJ,sBAAb9wE,GACJ0xI,EAAStjN,QAAQ,sBAAuB,MACpCiuC,EAAWjuC,QAAQ,sBAAuB,IAElC,sBAAb4xE,GAAoC6oJ,EAAM/3E,WAAaA,EAElE,IAAK23E,GAAWj8N,KAAKwzE,GACjB,OAAO,EAEX,GAAIwoJ,GAAiBh8N,KAAKklN,GAGtB,OAAO5gE,IAAa4gE,EAGxB,MAAMoX,EAAuBpX,EAAStjN,QAAQ,MAAO,OAG/C+1J,EAAK,IAAI1qJ,OAAO,UAAYqvN,EAAuB,IAAMA,EAAuB,KAAM,KAC5F,OAAO3kE,EAAG33J,KAAKskJ;;;;;;;;;;;;;;;;GAmBnB,MAAMi4E,GAAkB,IAAIjwB,EAAM,IAAO,KAKzC,SAASkwB,KAIL,MAAMC,EAAS/jH,KAAUgkH,OAEzB,GAAe,OAAXD,QAA8B,IAAXA,OAAoB,EAASA,EAAOrwC,EAEvD,IAAK,MAAMliB,KAAQj6K,OAAOsD,KAAKkpO,EAAOrwC,GAQlC,GANAqwC,EAAOrwC,EAAEliB,GAAMpzK,EAAI2lO,EAAOrwC,EAAEliB,GAAMpzK,GAAK,GAEvC2lO,EAAOrwC,EAAEliB,GAAMmjB,EAAIovC,EAAOrwC,EAAEliB,GAAMmjB,GAAK,GAEvCovC,EAAOrwC,EAAEliB,GAAMpzK,EAAI,IAAI2lO,EAAOrwC,EAAEliB,GAAMmjB,GAElCovC,EAAOE,GACP,IAAK,IAAI/qO,EAAI,EAAGA,EAAI6qO,EAAOE,GAAG5qO,OAAQH,IAElC6qO,EAAOE,GAAG/qO,GAAK,KAMnC,SAASgrO,GAAS9qL,GACd,OAAO,IAAIh/C,SAAQ,CAACC,EAASC,KACzB,IAAIqZ,EAAIsP,EAAIkL,EAEZ,SAASg2M,IAGLL,KACAM,KAAK/I,KAAK,eAAgB,CACtBhxM,SAAU,KACNhwB,EAAQ+pO,KAAKC,QAAQC,eAEzB1oO,UAAW,KAOPkoO,KACAxpO,EAAOu3M,EAAaz4J,EAAM,4BAE9Bh+C,QAASyoO,GAAgBnqO,QAGjC,GAAqF,QAAhFupB,EAA+B,QAAzBtP,EAAKqsG,KAAUokH,YAAyB,IAAPzwN,OAAgB,EAASA,EAAG0wN,eAA4B,IAAPphN,OAAgB,EAASA,EAAGshN,OAErHlqO,EAAQ+pO,KAAKC,QAAQC,kBAEpB,MAAiC,QAAzBn2M,EAAK6xF,KAAUokH,YAAyB,IAAPj2M,OAAgB,EAASA,EAAGktM,MAIrE,CAMD,MAAMmJ,EAAS7K,GAAsB,aAarC,OAXA35G,KAAUwkH,GAAU,KAEVJ,KAAK/I,KACP8I,IAIA7pO,EAAOu3M,EAAaz4J,EAAM,4BAI3BqgL,GAAQ,4CAA4C+K,KAAU/uK,OAAM/4D,GAAKpC,EAAOoC,KArBvFynO,QAuBL1uK,OAAMn3D,IAGL,MADAmmO,GAAmB,KACbnmO,KAGd,IAAImmO,GAAmB,KACvB,SAASC,GAAUtrL,GAEf,OADAqrL,GAAmBA,IAAoBP,GAAS9qL,GACzCqrL;;;;;;;;;;;;;;;;GAmBX,MAAME,GAAe,IAAI/wB,EAAM,IAAM,MAC/BgxB,GAAc,iBACdC,GAAuB,uBACvBC,GAAoB,CACtBtiK,MAAO,CACHE,SAAU,WACVhL,IAAK,SACLH,MAAO,MACPE,OAAQ,OAEZ,cAAe,OACfstK,SAAU,MAIRC,GAAmB,IAAItkN,IAAI,CAC7B,CAAC,iCAAiD,KAClD,CAAC,iDAAkD,KACnD,CAAC,8CAA+C,OAEpD,SAASukN,GAAa7rL,GAClB,MAAM4E,EAAS5E,EAAK4E,OACpBo0J,EAAQp0J,EAAO0jK,WAAYtoK,EAAM,+BACjC,MAAMz/C,EAAMqkD,EAAOi2J,SACbD,EAAah2J,EAAQ6mL,IACrB,WAAWzrL,EAAK4E,OAAO0jK,cAAckjB,KACrCrxN,EAAS,CACXshM,OAAQ72J,EAAO62J,OACftsL,QAAS6wB,EAAK/tC,KACdzN,EAAG,MAEDsnO,EAAMF,GAAiBtrO,IAAI0/C,EAAK4E,OAAOi3J,SACzCiwB,IACA3xN,EAAO2xN,IAAMA,GAEjB,MAAM/lB,EAAa/lK,EAAKoqK,iBAIxB,OAHIrE,EAAW9lN,SACXka,EAAO4xN,GAAKhmB,EAAWnhM,KAAK,MAEzB,GAAGrkB,MAAO,QAAY4Z,GAAQgxB,MAAM,KAE/Cm0F,eAAe0sG,GAAYhsL,GACvB,MAAMi1D,QAAgBq2H,GAAUtrL,GAC1BgrL,EAAOpkH,KAAUokH,KAEvB,OADAhyB,EAAQgyB,EAAMhrL,EAAM,kBACbi1D,EAAQ5zG,KAAK,CAChB4qO,MAAO13L,SAAS3wC,KAChBrD,IAAKsrO,GAAa7rL,GAClBksL,sBAAuBlB,EAAKC,QAAQkB,4BACpCn+C,WAAY09C,GACZU,WAAW,IACX1jK,GAAW,IAAI1nE,SAAQs+H,MAAOr+H,EAASC,WACjCwnE,EAAO2jK,QAAQ,CAEjBC,gBAAgB,IAEpB,MAAM15N,EAAe6lM,EAAaz4J,EAAM,0BAGlCusL,EAAoB3lH,KAAUt/E,YAAW,KAC3CpmC,EAAO0R,KACR24N,GAAajrO,OAEhB,SAASksO,IACL5lH,KAAUzhD,aAAaonK,GACvBtrO,EAAQynE,GAIZA,EAAO+jK,KAAKD,GAAsB9oO,KAAK8oO,GAAsB,KACzDtrO,EAAO0R;;;;;;;;;;;;;;;;GAqBnB,MAAM85N,GAAqB,CACvBzvL,SAAU,MACV0vL,UAAW,MACXC,UAAW,MACXC,QAAS,MAEPC,GAAgB,IAChBC,GAAiB,IACjBC,GAAe,SACfC,GAAoB,mBAC1B,MAAMC,GACFruO,YAAYkkB,GACRnkB,KAAKmkB,OAASA,EACdnkB,KAAKyoO,gBAAkB,KAE3BzhN,QACI,GAAIhnB,KAAKmkB,OACL,IACInkB,KAAKmkB,OAAO6C,QAEhB,MAAOtiB,MAInB,SAAS6pO,GAAMntL,EAAMz/C,EAAK0R,EAAMksD,EAAQ2uK,GAAezuK,EAAS0uK,IAC5D,MAAMzuK,EAAMzwD,KAAK4wD,KAAK17C,OAAOqqN,OAAOC,YAAchvK,GAAU,EAAG,GAAGlxD,WAC5DqxD,EAAO3wD,KAAK4wD,KAAK17C,OAAOqqN,OAAOE,WAAanvK,GAAS,EAAG,GAAGhxD,WACjE,IAAIoX,EAAS,GACb,MAAM/jB,EAAUrC,OAAOwB,OAAOxB,OAAOwB,OAAO,GAAI+sO,IAAqB,CAAEvuK,MAAOA,EAAMhxD,WAAYkxD,OAAQA,EAAOlxD,WAAYmxD,MACvHE,SAGE1f,GAAK,UAAQ1rB,cACfnhB,IACAsS,EAAS8gM,GAAavmK,GAAMkuL,GAAe/6N,GAE3CgzM,GAAWnmK,KAEXv+C,EAAMA,GAAO0sO,GAGbzsO,EAAQ+sO,WAAa,OAEzB,MAAMC,EAAgBrvO,OAAO65E,QAAQx3E,GAASmwB,QAAO,CAAC88M,GAAQjzN,EAAKtX,KAAW,GAAGuqO,IAAQjzN,KAAOtX,MAAU,IAC1G,GAAIsiN,GAAiB1mK,IAAkB,UAAXv6B,EAExB,OADAmpN,GAAmBntO,GAAO,GAAIgkB,GACvB,IAAI2oN,GAAU,MAIzB,MAAMS,EAAS5qN,OAAO1hB,KAAKd,GAAO,GAAIgkB,EAAQipN,GAC9Cx0B,EAAQ20B,EAAQ3tL,EAAM,iBAEtB,IACI2tL,EAAOvwK,QAEX,MAAO95D,IACP,OAAO,IAAI4pO,GAAUS,GAEzB,SAASD,GAAmBntO,EAAKgkB,GAC7B,MAAM6uI,EAAK7+G,SAAS40B,cAAc,KAClCiqF,EAAGv1G,KAAOt9C,EACV6yJ,EAAG7uI,OAASA,EACZ,MAAMqpN,EAAQr5L,SAASsmC,YAAY,cACnC+yJ,EAAMC,eAAe,SAAS,GAAM,EAAM9qN,OAAQ,EAAG,EAAG,EAAG,EAAG,GAAG,GAAO,GAAO,GAAO,EAAO,EAAG,MAChGqwI,EAAGtvC,cAAc8pH;;;;;;;;;;;;;;;;GAwBrB,MAAME,GAAc,kBAMdC,GAAuB,wBAC7B,SAASC,GAAgBhuL,EAAM2hB,EAAU1rC,EAAUg4M,EAAah/M,EAASi/M,GACrEl1B,EAAQh5J,EAAK4E,OAAO0jK,WAAYtoK,EAAM,+BACtCg5J,EAAQh5J,EAAK4E,OAAO62J,OAAQz7J,EAAM,mBAClC,MAAM7lC,EAAS,CACXshM,OAAQz7J,EAAK4E,OAAO62J,OACpBtsL,QAAS6wB,EAAK/tC,KACdgkB,WACAg4M,cACAzpO,EAAG,KACHyqB,WAEJ,GAAI0yC,aAAoBmuJ,GAAuB,CAC3CnuJ,EAASsuJ,mBAAmBjwK,EAAK27J,cACjCxhM,EAAOinM,WAAaz/I,EAASy/I,YAAc,IACtC,QAAQz/I,EAASyuJ,yBAClBj2M,EAAO61M,iBAAmB92M,KAAKC,UAAUwoD,EAASyuJ,wBAGtD,IAAK,MAAO51M,EAAKtX,KAAU/E,OAAO65E,QAAQk2J,GAAoB,IAC1D/zN,EAAOK,GAAOtX,EAGtB,GAAIy+D,aAAoB0uJ,GAAmB,CACvC,MAAM5jN,EAASk1D,EAAS4uJ,YAAYz1M,QAAOghB,GAAmB,KAAVA,IAChDrvB,EAAOxM,OAAS,IAChBka,EAAO1N,OAASA,EAAOmY,KAAK,MAGhCo7B,EAAKzsB,WACLpZ,EAAOob,IAAMyqB,EAAKzsB,UAItB,MAAM46M,EAAah0N,EACnB,IAAK,MAAMK,KAAOrc,OAAOsD,KAAK0sO,QACFrpM,IAApBqpM,EAAW3zN,WACJ2zN,EAAW3zN,GAG1B,MAAO,GAAG4zN,GAAepuL,OAAS,QAAYmuL,GAAYhjM,MAAM,KAEpE,SAASijM,IAAe,OAAExpL,IACtB,OAAKA,EAAOi2J,SAGLD,EAAah2J,EAAQmpL,IAFjB,WAAWnpL,EAAO0jK,cAAcwlB;;;;;;;;;;;;;;;;GAyB/C,MAAMO,GAA0B,oBAChC,MAAMC,GACFzvO,cACID,KAAK2vO,cAAgB,GACrB3vO,KAAKqsO,QAAU,GACfrsO,KAAK4vO,yBAA2B,GAChC5vO,KAAKkrN,qBAAuB2R,GAC5B78N,KAAKoqN,oBAAsB6f,GAC3BjqO,KAAKiqN,wBAA0BA,GAInCvpF,iBAAiBt/E,EAAM2hB,EAAU1rC,EAAUhH,GACvC,IAAI1U,EACJ2+L,EAAuD,QAA1C3+L,EAAK3b,KAAK2vO,cAAcvuL,EAAK+jJ,eAA4B,IAAPxpL,OAAgB,EAASA,EAAGk4F,QAAS,gDACpG,MAAMlyG,EAAMytO,GAAgBhuL,EAAM2hB,EAAU1rC,EAAUgkL,IAAkBhrL,GACxE,OAAOk+M,GAAMntL,EAAMz/C,EAAKi8N,MAE5Bl9F,oBAAoBt/E,EAAM2hB,EAAU1rC,EAAUhH,GAG1C,aAFMrwB,KAAK0oO,kBAAkBtnL,GAC7B88K,GAAmBkR,GAAgBhuL,EAAM2hB,EAAU1rC,EAAUgkL,IAAkBhrL,IACxE,IAAIjuB,SAAQ,SAEvB8mN,YAAY9nK,GACR,MAAMxlC,EAAMwlC,EAAK+jJ,OACjB,GAAInlM,KAAK2vO,cAAc/zN,GAAM,CACzB,MAAM,QAAEi4F,EAAO,QAAEh9B,GAAY72E,KAAK2vO,cAAc/zN,GAChD,OAAIi4F,EACOzxG,QAAQC,QAAQwxG,IAGvBymG,EAAYzjI,EAAS,4CACdA,GAGf,MAAMA,EAAU72E,KAAK6vO,kBAAkBzuL,GAOvC,OANAphD,KAAK2vO,cAAc/zN,GAAO,CAAEi7D,WAG5BA,EAAQpZ,OAAM,YACHz9D,KAAK2vO,cAAc/zN,MAEvBi7D,EAEX6pD,wBAAwBt/E,GACpB,MAAM0oB,QAAesjK,GAAYhsL,GAC3ByyD,EAAU,IAAIu2H,GAAiBhpL,GASrC,OARA0oB,EAAOgmK,SAAS,aAAcC,IAC1B31B,EAAwB,OAAhB21B,QAAwC,IAAhBA,OAAyB,EAASA,EAAYC,UAAW5uL,EAAM,sBAE/F,MAAM8lI,EAAUrzE,EAAQi3H,QAAQiF,EAAYC,WAC5C,MAAO,CAAE1sO,OAAQ4jL,EAAU,MAAkB,WAC9CklD,KAAKC,QAAQkB,6BAChBvtO,KAAK2vO,cAAcvuL,EAAK+jJ,QAAU,CAAEtxF,WACpC7zG,KAAKqsO,QAAQjrL,EAAK+jJ,QAAUr7H,EACrB+pC,EAEX80H,6BAA6BvnL,EAAM02D,GAC/B,MAAMhuC,EAAS9pE,KAAKqsO,QAAQjrL,EAAK+jJ,QACjCr7H,EAAOjoE,KAAK4tO,GAAyB,CAAEviN,KAAMuiN,KAA2B7qO,IACpE,IAAI+W,EACJ,MAAM09E,EAAmF,QAApE19E,EAAgB,OAAX/W,QAA8B,IAAXA,OAAoB,EAASA,EAAO,UAAuB,IAAP+W,OAAgB,EAASA,EAAG8zN,SACzGvpM,IAAhBmzD,GACAye,IAAKze,GAETogH,EAAMr4J,EAAM,oBACbgrL,KAAKC,QAAQkB,6BAEpB7E,kBAAkBtnL,GACd,MAAMxlC,EAAMwlC,EAAK+jJ,OAIjB,OAHKnlM,KAAK4vO,yBAAyBh0N,KAC/B5b,KAAK4vO,yBAAyBh0N,GAAO4vN,GAAgBpqL,IAElDphD,KAAK4vO,yBAAyBh0N,GAErCqtM,6BAEA,OAAOlC,MAAsBP,MAAeG,MASpD,MAAMspB,GAA+BP,GAErC,MAAMQ,GACFjwO,YAAYk1N,GACRn1N,KAAKm1N,SAAWA,EAEpB8E,SAAS74K,EAAM26F,EAASgmE,GACpB,OAAQhmE,EAAQ7uH,MACZ,IAAK,SACD,OAAOltB,KAAKmwO,gBAAgB/uL,EAAM26F,EAAQ76G,WAAY6gL,GAC1D,IAAK,SACD,OAAO/hN,KAAKowO,gBAAgBhvL,EAAM26F,EAAQ76G,YAC9C,QACI,OAAOm5K,EAAU,uCAUjC,MAAMg2B,WAAsCH,GACxCjwO,YAAYihC,GACR82C,MAAM,SACNh4E,KAAKkhC,WAAaA,EAGtBi7K,uBAAuBj7K,GACnB,OAAO,IAAImvM,GAA8BnvM,GAG7CivM,gBAAgB/uL,EAAMrrB,EAASgsL,GAC3B,OAAOwY,GAAuBn5K,EAAM,CAChCrrB,UACAgsL,cACAuuB,sBAAuBtwO,KAAKkhC,WAAW8uL,6BAI/CogB,gBAAgBhvL,EAAMm4K,GAClB,OAAO8H,GAAuBjgL,EAAM,CAChCm4K,uBACA+W,sBAAuBtwO,KAAKkhC,WAAW8uL,8BASnD,MAAMugB,GACFtwO,eAQAk8M,iBAAiBj7K,GACb,OAAOmvM,GAA8BG,gBAAgBtvM,IAM7DqvM,GAA0BE,UAAY,QAEtC,IAAI,GAAO,iBACPlqN,GAAU;;;;;;;;;;;;;;;;;AAkBd,MAAMmqN,GACFzwO,YAAYmhD,GACRphD,KAAKohD,KAAOA,EACZphD,KAAK2wO,kBAAoB,IAAIjoN,IAEjCkoN,SACI,IAAIj1N,EAEJ,OADA3b,KAAK6wO,wBACoC,QAAhCl1N,EAAK3b,KAAKohD,KAAKw+J,mBAAgC,IAAPjkM,OAAgB,EAASA,EAAGqY,MAAQ,KAEzF0sG,eAAexkE,GAGX,GAFAl8D,KAAK6wO,6BACC7wO,KAAKohD,KAAKqnK,wBACXzoN,KAAKohD,KAAKw+J,YACX,OAAO,KAEX,MAAMh/K,QAAoB5gC,KAAKohD,KAAKw+J,YAAYpB,WAAWtiJ,GAC3D,MAAO,CAAEt7B,eAEbkwM,qBAAqBv+I,GAEjB,GADAvyF,KAAK6wO,uBACD7wO,KAAK2wO,kBAAkB9nN,IAAI0pE,GAC3B,OAEJ,MAAM+4D,EAActrJ,KAAKohD,KAAK4pK,kBAAiBh4F,IAC3C,IAAIr3G,EACJ42E,GAA0B,QAAf52E,EAAKq3G,SAAyB,IAAPr3G,OAAgB,EAASA,EAAG6kM,gBAAgB5/K,cAAgB,SAElG5gC,KAAK2wO,kBAAkBhoN,IAAI4pE,EAAU+4D,GACrCtrJ,KAAK+wO,yBAETC,wBAAwBz+I,GACpBvyF,KAAK6wO,uBACL,MAAMvlF,EAActrJ,KAAK2wO,kBAAkBjvO,IAAI6wF,GAC1C+4D,IAGLtrJ,KAAK2wO,kBAAkB3uO,OAAOuwF,GAC9B+4D,IACAtrJ,KAAK+wO,0BAETF,uBACIz2B,EAAQp6M,KAAKohD,KAAKqnK,uBAAwB,yCAE9CsoB,yBACQ/wO,KAAK2wO,kBAAkB9yM,KAAO,EAC9B79B,KAAKohD,KAAK2iK,yBAGV/jN,KAAKohD,KAAK4iK;;;;;;;;;;;;;;;;GAqBtB,SAASitB,GAAsB/pB,GAC3B,OAAQA,GACJ,IAAK,OACD,MAAO,OACX,IAAK,cACD,MAAO,KACX,IAAK,SACD,MAAO,YACX,IAAK,UACD,MAAO,UACX,QACI,QAIZ,SAASgqB,GAAahqB,IAClB,QAAmB,IAAI,KAAU,QAAmB,CAACx0E,GAAa9wI,QAAS+4M,MACvE,MAAMvnF,EAAMsf,EAAUy+F,YAAY,OAAOv2B,eACnCmN,EAA2Br1E,EAAUy+F,YAAY,cACjD,OAAEt0B,EAAM,WAAE6M,GAAet2F,EAAIxxH,QACnC,MAAO,EAAEwxH,EAAK20F,KACV3N,EAAQyC,IAAWA,EAAOhkI,SAAS,KAAM,kBAAyC,CAAEtoD,QAAS6iG,EAAI//G,OAEjG+mM,IAAyB,OAAfsP,QAAsC,IAAfA,OAAwB,EAASA,EAAW7wI,SAAS,MAAO,iBAAuC,CAChItoD,QAAS6iG,EAAI//G,OAEjB,MAAM2yC,EAAS,CACX62J,SACA6M,aACAxC,iBACAjK,QAAS,iCACT2F,aAAc,6BACd9E,UAAW,QACXiL,iBAAkB9B,GAAkBC,IAElCkqB,EAAe,IAAItpB,GAAS10F,EAAK20F,EAA0B/hK,GAEjE,OADA+0J,EAAwBq2B,EAAcz2B,GAC/By2B,GAjBJ,CAkBJh+G,EAAK20F,KACT,UAKEspB,qBAAqB,YAKrBC,4BAA2B,CAAC5+F,EAAW6+F,EAAqBC,KAC7D,MAAMC,EAAuB/+F,EAAUy+F,YAAY,iBACnDM,EAAqB1iK,kBAEzB,QAAmB,IAAI,KAAU,iBAAqC2jE,IAClE,MAAMtxF,EAAOwqK,GAAUl5E,EAAUy+F,YAAY,QAAmBv2B,gBAChE,MAAO,CAACx5J,GAAQ,IAAIsvL,GAAYtvL,GAAzB,CAAgCA,KACxC,WAAyBiwL,qBAAqB,cACjD,QAAgB,GAAM9qN,GAAS0qN,GAAsB/pB,KAErD,QAAgB,GAAM3gM,GAAS;;;;;;;;;;;;;;;;GA2BnC,SAASmrN,GAAQt+G,GAAM,WACnB,MAAMrwD,GAAW,QAAaqwD,EAAK,QACnC,OAAIrwD,EAASmyC,gBACFnyC,EAAS63I,eAEbF,EAAetnF,EAAK,CACvBgoF,sBAAuB60B,GACvBj1B,YAAa,CACTmmB,GACAzE,GACAG,MAIZqU,GAAa,Y,oBC1vSb,UAmBC,EAAEzpC,EAAMkqC,KACwC,EAAO,GAAI,EAAF,EAAK,kEAD9D,CAIE3xO,GAAMoF,IAGP,IAAIwsO,EAAS,CAAC32N,EAAQ0K,KAAoO,GAAW,WAAR1K,EAAkB,MAAM,CAAC0K,OAAO,2BAA2B6zG,MAAM,EAAEq4G,SAAS,CAAC,IACxU,IAAI52N,IAAW0K,EAAQ,OAAOmsN,EAE9B,IAAIC,EAAiBC,EAAkB/2N,GACnC+9G,EAAMrzG,KAASA,EAASssN,EAAYtsN,IAExC,IAAIusN,EAAiBH,EAAeI,SACpC,OAAID,EAAiBvsN,EAAOysN,aAAeF,EAAuBJ,EAE3DvsN,EAAUwsN,EAAgBpsN,IAI/B0sN,EAAK,CAACp3N,EAAQq3N,EAAS1wO,KAA+N,GAAW,WAARqZ,EAAkB,MAAM,CAAC,CAAC0K,OAAO,2BAA2B6zG,MAAM,EAAEq4G,SAAS,CAAC,GAAG/2N,IAAIw3N,EAAQA,EAAQ,GAAGR,IACnW,IAAI72N,EAAQ,OAAOrZ,GAASA,EAAQggC,IAAMA,EAAI3mB,EAAQq3N,EAAS1wO,GAAW2wO,EAE1E,IAAIR,EAAiBC,EAAkB/2N,GACnCi3N,EAAiBH,EAAeI,SAGhCK,GAFiBT,EAAeU,cAEpB7wO,GAASA,EAAQ4wO,WAAaE,GAC1C9nD,EAAYhpL,GAASA,EAAQ,UAAa+wO,EAE1CC,EAAa,EAAOC,EAAe,EACnCC,EAAaR,EAAQjxO,OAKzB,GAAGO,GAAWA,EAAQga,IAEpB,IADA,IAAIA,EAAMha,EAAQga,IACV1a,EAAI,EAAGA,EAAI4xO,IAAc5xO,EAAG,CAAE,IAAI4Z,EAAMw3N,EAAQpxO,GAClDykB,EAASotN,EAASj4N,EAAKc,GAC3B,GAAI+J,IACAqzG,EAAMrzG,KAASA,EAASssN,EAAYtsN,KAEpCusN,EAAiBvsN,EAAOysN,aAAeF,GAA3C,CACA,IAAIttO,EAAS2gB,EAAUwsN,EAAgBpsN,GACpC/gB,IAAWktO,IACXltO,EAAO40H,MAAQg5G,IAGlB5tO,EAAS,CAAC+gB,OAAO/gB,EAAO+gB,OAAQqtN,aAAa,GAAIC,kBAAkBnB,EAAMoB,sBAAsBpB,EAAMM,UAAU,EAAG54G,MAAM50H,EAAO40H,MAAOq4G,SAASjtO,EAAOitO,SAAU/2N,IAAIA,GAEjK83N,EAAahoD,GAAS17H,EAAE/xB,IAAIv4B,KAAWguO,MAEtCC,EACCjuO,EAAO40H,MAAQtqE,EAAEikL,OAAO35G,OAAOtqE,EAAEkkL,WAAWxuO,YAK9C,GAAGhD,GAAWA,EAAQiB,KAC3B,KAAIwwO,EAAUzxO,EAAQ,YAAc0xO,EAChCzwO,EAAOjB,EAAQiB,KACf0wO,EAAU1wO,EAAKxB,OACnB,IAAQH,EAAI,EAAGA,EAAI4xO,IAAc5xO,EAAG,CAAM4Z,EAAMw3N,EAAQpxO,GAEtD,IAFoC,IAChCsyO,EAAa,IAAI9zO,MAAM6zO,GAClBE,EAAO,EAAGA,EAAOF,IAAWE,EAAM,CACrC73N,EAAM/Y,EAAK4wO,GACX9tN,EAASotN,EAASj4N,EAAKc,GACvB+J,GACAqzG,EAAMrzG,KAASA,EAASssN,EAAYtsN,KAEpCusN,EAAiBvsN,EAAOysN,aAAeF,EAAgBsB,EAAWC,GAAQ3B,EACzE0B,EAAWC,GAAQluN,EAAUwsN,EAAgBpsN,IAJpC6tN,EAAWC,GAAQ3B,EAMnC0B,EAAW14N,IAAMA,EACjB,IAAI0+G,EAAQ65G,EAAQG,GACjBh6G,IAAUs4G,IACVt4G,EAAQg5G,IACXgB,EAAWh6G,MAAQA,EAChBo5G,EAAahoD,GAAS17H,EAAE/xB,IAAIq2M,KAAeZ,MAE1CC,EACCr5G,EAAQtqE,EAAEikL,OAAO35G,OAAOtqE,EAAEkkL,WAAWI,YAM5C,IAAQtyO,EAAI,EAAGA,EAAI4xO,IAAc5xO,EAAG,CAAMykB,EAAS2sN,EAAQpxO,GACzD,GAAIykB,IACAqzG,EAAMrzG,KAASA,EAASssN,EAAYtsN,KAEpCusN,EAAiBvsN,EAAOysN,aAAeF,GAA3C,CACIttO,EAAS2gB,EAAUwsN,EAAgBpsN,GACpC/gB,IAAWktO,IACXltO,EAAO40H,MAAQg5G,IACfI,EAAahoD,GAAS17H,EAAE/xB,IAAIv4B,KAAWguO,MAEtCC,EACCjuO,EAAO40H,MAAQtqE,EAAEikL,OAAO35G,OAAOtqE,EAAEkkL,WAAWxuO,OAKrD,GAAkB,IAAfguO,EAAkB,OAAOL,EAC5B,IAAIrxI,EAAU,IAAIxhG,MAAMkzO,GACxB,IAAQ1xO,EAAI0xO,EAAa,EAAG1xO,GAAK,IAAKA,EAAGggG,EAAQhgG,GAAKguD,EAAEwsK,OAExD,OADAx6H,EAAQiiB,MAAQyvH,EAAaC,EACtB3xI,GAILwyI,EAAY,CAAC9uO,EAAQ+uO,EAAOC,KAC9B,GAAoB,oBAAVD,EAAsB,OAAOE,EAAkBjvO,EAAQ+uO,GACjE,GAAG/uO,IAAWktO,EAAM,OAAOA,OACd5rM,IAAVytM,IAAqBA,EAAQ,YAClBztM,IAAX0tM,IAAsBA,EAAS,QAClC,IAAIE,EAAc,GACdC,EAAe,EACfC,GAAS,EACTruN,EAAS/gB,EAAO+gB,OAChBsuN,EAAYtuN,EAAOtkB,OACnB6yO,EAAUtvO,EAAOitO,SACrBqC,EAAUA,EAAQ3nM,MAAM,EAAG2nM,EAAQrzI,KAAKz6E,MAAK,CAACxf,EAAEhH,IAAIgH,EAAEhH,IACtD,IAAI,IAAIsB,EAAI,EAAGA,EAAI+yO,IAAa/yO,EAAG,CAAE,IAAIizO,EAAOxuN,EAAOzkB,GACrD,GAAGgzO,EAAQH,KAAkB7yO,GAM3B,KALE6yO,EACEC,IAAUA,GAAS,EACrBF,GAAeH,GAGdI,IAAiBG,EAAQ7yO,OAAQ,CAClCyyO,GAAeK,EAAOP,EAASjuN,EAAOq7D,OAAO9/E,EAAE,GAC/C,YAGC8yO,IAAUA,GAAS,EACpBF,GAAeF,GAGnBE,GAAeK,EAGjB,OAAOL,GAELD,EAAoB,CAACjvO,EAAQkzG,KAC/B,GAAGlzG,IAAWktO,EAAM,OAAOA,EAC3B,IAAInsN,EAAS/gB,EAAO+gB,OAChBsuN,EAAYtuN,EAAOtkB,OACnB6yO,EAAUtvO,EAAOitO,SACrBqC,EAAUA,EAAQ3nM,MAAM,EAAG2nM,EAAQrzI,KAAKz6E,MAAK,CAACxf,EAAEhH,IAAIgH,EAAEhH,IAMtD,IALA,IAAIk0O,EAAc,GACdM,EAAS,EACTC,EAAW,EACXL,GAAS,EAEL9yO,GADJ0D,EAAS,GACD,GAAG1D,EAAI+yO,IAAa/yO,EAAG,CAAE,IAAIizO,EAAOxuN,EAAOzkB,GACrD,GAAGgzO,EAAQG,KAAcnzO,GAMvB,KALEmzO,EACEL,IAAUA,GAAS,EACrBpvO,EAAOoB,KAAK8tO,GAAcA,EAAc,IAGvCO,IAAaH,EAAQ7yO,OAAQ,CAC9ByyO,GAAeK,EACfvvO,EAAOoB,KAAK8xG,EAAGg8H,EAAaM,MAAYN,EAAc,GACtDlvO,EAAOoB,KAAK2f,EAAOq7D,OAAO9/E,EAAE,IAC5B,YAGC8yO,IAAUA,GAAS,EACpBpvO,EAAOoB,KAAK8xG,EAAGg8H,EAAaM,MAAYN,EAAc,IAG1DA,GAAeK,EAEjB,OAAOvvO,GAILsvO,EAAUtvO,GAAUA,EAAOitO,SAAStlM,MAAM,EAAG3nC,EAAOitO,SAAShxI,KAAKz6E,MAAK,CAACxf,EAAEhH,IAAIgH,EAAEhH,IAGhF00O,EAAW3uN,IACQ,kBAAXA,IAAqBA,EAAS,IACxC,IAAImJ,EAAOylN,EAAiB5uN,GAC5B,MAAO,CAAC,OAASA,EAAQqtN,aAAalkN,EAAK0lN,OAAQvB,kBAAkBnkN,EAAK2lN,WAAYvB,sBAAsBpB,EAAMM,UAAUtjN,EAAKqjN,SAAU,MAAQL,EAAMD,SAAS,CAAC,GAAI,IAAMC,IAU3K4C,EAAiBz5N,IACE,kBAAXA,IAAqBA,EAAS,IACxCA,EAASA,EAAOS,OAChB,IAAIoT,EAAOylN,EAAiBt5N,GAExB05N,EAAgB,GACpB,GAAG7lN,EAAK2jN,cAAe,CACrB,IAAImC,EAAW35N,EAAO7D,MAAM,OAC5Bw9N,EAAW,IAAI,IAAI33M,IAAI23M,IACvB,IAAI,IAAI1zO,EAAE,EAAGA,EAAE0zO,EAASvzO,OAAQH,IAC9B,GAAmB,KAAhB0zO,EAAS1zO,GAAZ,CACA,IAAI2zO,EAAQN,EAAiBK,EAAS1zO,IACtCyzO,EAAc3uO,KAAK,CAACyuO,WAAWI,EAAMJ,WAAYD,OAAOI,EAAS1zO,GAAGszB,cAAei+M,eAAc,KAIrG,MAAO,CAACgC,WAAY3lN,EAAK2lN,WAAYtC,SAAUrjN,EAAKqjN,SAAUM,cAAe3jN,EAAK2jN,cAAe+B,OAAQ1lN,EAAK0lN,OAAQG,cAAeA,IAKnI1C,EAAetsN,IACjB,GAAGA,EAAOtkB,OAAS,IAAK,OAAOizO,EAAQ3uN,GACvC,IAAImvN,EAAiBC,EAAcrzO,IAAIikB,GACvC,YAAsBugB,IAAnB4uM,IACHA,EAAiBR,EAAQ3uN,GACzBovN,EAAcpsN,IAAIhD,EAAQmvN,IAFcA,GAKtC9C,EAAqB/2N,IACvB,GAAGA,EAAO5Z,OAAS,IAAK,OAAOqzO,EAAcz5N,GAC7C,IAAI+5N,EAAiBC,EAAoBvzO,IAAIuZ,GAC7C,YAAsBirB,IAAnB8uM,IACHA,EAAiBN,EAAcz5N,GAC/Bg6N,EAAoBtsN,IAAI1N,EAAQ+5N,IAFQA,GAOtCpzM,EAAM,CAAC3mB,EAAQq3N,EAAS1wO,KAC1B,IAAIs/F,EAAU,GAAIA,EAAQiiB,MAAQmvH,EAAQjxO,OAE1C,IAAIupL,EAAQhpL,GAAWA,EAAQgpL,OAAS+nD,EAExC,GAAG/wO,GAAWA,EAAQga,IACpB,IAAI,IAAI1a,EAAE,EAAEA,EAAEoxO,EAAQjxO,OAAOH,IAAK,CAAE,IAAI4Z,EAAMw3N,EAAQpxO,GAChDykB,EAASotN,EAASj4N,EAAKlZ,EAAQga,KACnC,GAAI+J,EAAJ,CACIqzG,EAAMrzG,KAASA,EAASssN,EAAYtsN,IACxCA,EAAO6zG,MAAQk5G,EACf/sN,EAAOksN,SAAShxI,IAAM,EACtB,IAAIj8F,EAAS+gB,EAES,GADtB/gB,EAAS,CAAC+gB,OAAO/gB,EAAO+gB,OAAQqtN,aAAa,GAAIC,kBAAkBnB,EAAMoB,sBAAsBpB,EAAMM,UAAU,EAAG54G,MAAM7zG,EAAO6zG,MAAOq4G,SAASC,EAAMh3N,IAAIA,GACzJomF,EAAQl7F,KAAKpB,GAAYs8F,EAAQ7/F,QAAUupL,EAAO,OAAO1pF,QAEtD,GAAGt/F,GAAWA,EAAQiB,KAC3B,IAAQ3B,EAAE,EAAEA,EAAEoxO,EAAQjxO,OAAOH,IAAK,CAAM4Z,EAAMw3N,EAAQpxO,GAEpD,IAFkC,IAC9BsyO,EAAa,IAAI9zO,MAAMkC,EAAQiB,KAAKxB,QAC/BoyO,EAAO7xO,EAAQiB,KAAKxB,OAAS,EAAGoyO,GAAQ,IAAKA,EAAM,CACtD9tN,EAASotN,EAASj4N,EAAKlZ,EAAQiB,KAAK4wO,IACpC9tN,GACAqzG,EAAMrzG,KAASA,EAASssN,EAAYtsN,IACxCA,EAAO6zG,MAAQk5G,EACf/sN,EAAOksN,SAAShxI,IAAM,EACtB2yI,EAAWC,GAAQ9tN,GAJL6tN,EAAWC,GAAQ3B,EAQT,GAF1B0B,EAAW14N,IAAMA,EACjB04N,EAAWh6G,MAAQk5G,EACnBxxI,EAAQl7F,KAAKwtO,GAAgBtyI,EAAQ7/F,QAAUupL,EAAO,OAAO1pF,OAG/D,IAAQhgG,EAAE,EAAEA,EAAEoxO,EAAQjxO,OAAOH,IAAK,CAAMykB,EAAS2sN,EAAQpxO,GACvD,GAAIykB,IACAqzG,EAAMrzG,KAASA,EAASssN,EAAYtsN,IACxCA,EAAO6zG,MAAQk5G,EACf/sN,EAAOksN,SAAShxI,IAAM,EACtBK,EAAQl7F,KAAK2f,GAAYu7E,EAAQ7/F,QAAUupL,GAAO,OAAO1pF,EAI7D,OAAOA,GAIL37E,EAAY,CAACwsN,EAAgBmD,KAC/B,GAAGnD,EAAeU,cAAe,OAAO0C,EAAgBpD,EAAgBmD,GAexE,IAbA,IAAIE,EAAcrD,EAAeyC,OAC7Ba,EAAmBtD,EAAe0C,WAClCa,EAAkBD,EAAiB,GACnCE,EAAmBL,EAASjC,kBAC5BpzI,EAAYw1I,EAAiBh0O,OAC7B4yO,EAAYsB,EAAiBl0O,OAC7Bm0O,EAAU,EACVC,EAAU,EACVC,EAAmB,IAKf,CACN,IAAIC,EAAUL,IAAoBC,EAAiBE,GACnD,GAAGE,EAAS,CAEC,GADXC,EAAcF,KAAsBD,IAClCD,EAAYA,IAAY31I,EAAW,MACrCy1I,EAAkBD,EAAiBG,GAE1B,KAATC,EAAYA,GAAWxB,EAAW,OAAOnC,EAGzC0D,EAAU,EAAd,IACIK,GAAgB,EAChBC,EAAmB,EAEnBC,EAAuBb,EAAShC,sBACjC6C,IAAyBjE,IAAMiE,EAAuBb,EAAShC,sBAAwB8C,EAA4Bd,EAASvvN,SAC1G8vN,EAA6B,IAAnBG,EAAc,GAAS,EAAIG,EAAqBH,EAAc,GAAG,GAAhG,IAKIK,EAAiB,EACrB,GAAGR,IAAYxB,EAAW,OACxB,GAAGwB,GAAWxB,EAAW,CAEvB,GAAGuB,GAAW,EAAG,MAEC,KAAhBS,EAAmBA,EAAiB,IAAK,QAEzCT,EACF,IAAIU,EAAYC,IAAgBL,GAChCL,EAAUM,EAAqBG,OAE1B,CACDP,EAAUN,EAAiBG,KAAaD,EAAiBE,GAC7D,GAAGE,EAAS,CAEC,GADXQ,EAAcL,KAAsBL,IAClCD,EAAYA,IAAY31I,EAAW,CAAEg2I,GAAgB,EAAM,QAC3DJ,OAEFA,EAAUM,EAAqBN,GAMrC,IAAIW,EAAiBlB,EAASlC,aAAa93N,QAAQk6N,EAAaQ,EAAc,IAC1ES,GAAeD,EACnB,GAAGC,IAAgBR,EACjB,IAAI,IAAI30O,EAAE,EAAGA,EAAEw0O,IAAoBx0O,EAAG00O,EAAc10O,GAAKk1O,EAAel1O,EAE1E,IAAIo1O,GAAuB,EAMzB,GALCD,IACDC,EAAuBpB,EAAShC,sBAAsBkD,EAAe,KAAOA,GAIzEP,EAAiB,IAAIU,EAAcJ,EAAmBK,EAAiBV,OAC/DS,EAAcX,EAAmBY,EAAiBd,EAE7D,IAAIl8G,EAAQ,EAERi9G,EAAuB,EAC3B,IAAQv1O,EAAI,EAAGA,EAAI2+F,IAAa3+F,EAC3Bq1O,EAAYr1O,GAAKq1O,EAAYr1O,EAAE,KAAO,IAAIs4H,GAAS+8G,EAAYr1O,KAAMu1O,GAE1E,IAAIC,EAAoBH,EAAY12I,EAAU,GAAK02I,EAAY,IAAM12I,EAAU,GAM/E,GAJA25B,IAAU,GAAGk9G,GAAqBD,EAEZ,IAAnBF,EAAY,KAAU/8G,GAAwB,GAAf+8G,EAAY,IAE1CV,EAEG,CAEL,IAAIc,EAAyB,EAC7B,IAAQz1O,EAAI60O,EAAqB,GAAI70O,EAAI+yO,EAAW/yO,EAAE60O,EAAqB70O,KAAMy1O,EAE9EA,EAAyB,KAAIn9G,GAAqC,IAA3Bm9G,EAAuB,UANjEn9G,GAAS,IASR68G,IAAsB78G,GAAS,IAC/B88G,IAAsB98G,GAAS,IAElCA,GAASy6G,EAAYp0I,EACrBq1I,EAAS17G,MAAQA,EAEjB,IAAQt4H,EAAI,EAAGA,EAAIs1O,IAAkBt1O,EAAGg0O,EAASrD,SAAS3wO,GAAKq1O,EAAYr1O,GAG3E,OAFAg0O,EAASrD,SAAShxI,IAAM21I,EAEjBtB,GAGPC,EAAkB,CAACpD,EAAgBpsN,KAOrC,IANA,IAAIixN,EAAe,IAAI35M,IACnBu8F,EAAQ,EACR50H,EAASktO,EAET+E,EAA+B,EAC/BjC,EAAW7C,EAAe4C,cACtBzzO,EAAE,EAAGA,EAAE0zO,EAASvzO,SAAUH,EAAG,CACnC,IAAI+Z,EAAS25N,EAAS1zO,GAGtB,GADA0D,EAAS2gB,EAAUtK,EAAQ0K,GACxB/gB,IAAWktO,EAAM,OAAOA,EAE3Bt4G,GAAS50H,EAAO40H,MAGb50H,EAAOitO,SAAS,GAAKgF,IACtBr9G,GAASq9G,EAA+BjyO,EAAOitO,SAAS,IAE1DgF,EAA+BjyO,EAAOitO,SAAS,GAE/C,IAAI,IAAIhrO,EAAE,EAAGA,EAAEjC,EAAOitO,SAAShxI,MAAOh6F,EAAG+vO,EAAaz5M,IAAIv4B,EAAOitO,SAAShrO,IAG5EjC,EAAO40H,MAAQA,EAEXt4H,EAAI,EACR,IAAK,IAAIoxC,KAASskM,EAAchyO,EAAOitO,SAAS3wO,KAAOoxC,EAGvD,OAFA1tC,EAAOitO,SAAShxI,IAAM3/F,EAEf0D,GAIL2vO,EAAoB55N,IAOtB,IANA,IAAIm8N,EAASn8N,EAAItZ,OACb01O,EAAQp8N,EAAI6Z,cACZigN,EAAa,GACbtC,EAAW,EACXM,GAAgB,EAEZvxO,EAAI,EAAGA,EAAI41O,IAAU51O,EAAG,CAC9B,IAAI81O,EAAYvC,EAAWvzO,GAAK61O,EAAMjnO,WAAW5O,GAEjD,GAAiB,KAAd81O,EAAH,CAKA,IAAIC,EAAMD,GAAW,IAAIA,GAAW,IAAMA,EAAU,GAC1CA,GAAW,IAAIA,GAAW,GAAM,GAEhCA,GAAW,IAAqB,GACA,GAC1C7E,GAAY,GAAG8E,OATbxE,GAAgB,EAYpB,MAAO,CAACgC,WAAWA,EAAYtC,SAASA,EAAUM,cAAcA,EAAe+B,OAAOuC,IAEpFG,EAA2BvxN,IAK7B,IAJA,IAAIsuN,EAAYtuN,EAAOtkB,OACnB81O,EAAmB,GAAQC,EAAsB,EACjDC,GAAW,EACXC,GAAc,EACVp2O,EAAI,EAAGA,EAAI+yO,IAAa/yO,EAAG,CACjC,IAAIq2O,EAAa5xN,EAAO7V,WAAW5O,GAC/Bs2O,EAAUD,GAAY,IAAIA,GAAY,GACtCE,EAAaD,GAAWD,GAAY,IAAIA,GAAY,KAAOA,GAAY,IAAIA,GAAY,GACvFG,EAAcF,IAAYH,IAAaC,IAAgBG,EAC3DJ,EAAWG,EACXF,EAAcG,EACXC,IAAaP,EAAiBC,KAAyBl2O,GAE5D,OAAOi2O,GAELnB,EAA+BrwN,IAMjC,IALA,IAAIsuN,EAAYtuN,EAAOtkB,OACnB81O,EAAmBD,EAAwBvxN,GAC3CowN,EAAuB,GACvB4B,EAAkBR,EAAiB,GACnCS,EAAmB,EACf12O,EAAI,EAAGA,EAAI+yO,IAAa/yO,EAC3By2O,EAAkBz2O,EACnB60O,EAAqB70O,GAAKy2O,GAE1BA,EAAkBR,IAAmBS,GACrC7B,EAAqB70O,QAAuBglC,IAAlByxM,EAA8B1D,EAAY0D,GAGxE,OAAO5B,GAIL8B,EAAU,KAAQ9C,EAAcjsN,QAASmsN,EAAoBnsN,QAAS8sN,EAAgB,GAAIO,EAAgB,IAE1GpB,EAAsB,IAAIrsN,IAC1BusN,EAAsB,IAAIvsN,IAC1BktN,EAAgB,GAAQO,EAAgB,GAIxC7C,EAAkB1sO,IAGpB,IAFA,IAAIi5D,EAAM6yK,EACN7xI,EAAMj6F,EAAEvF,OACHH,EAAI,EAAGA,EAAI2/F,IAAO3/F,EAAG,CAC5B,IAAI0D,EAASgC,EAAE1F,GAAI,GAAG0D,IAAWktO,EAAd,CACnB,IAAIt4G,EAAQ50H,EAAO40H,MAChBA,EAAQ35D,IAAKA,EAAM25D,IAExB,OAAG35D,IAAQ6yK,EAAgBZ,EACpBjyK,GAMLkzK,EAAW,CAACj4N,EAAK2lE,KACnB,IAAI6O,EAAMx0E,EAAI2lE,GAAO,QAAWv6C,IAARopD,EAAmB,OAAOA,EAClD,IAAIwoJ,EAAOr3J,EACP/gF,MAAM21E,QAAQoL,KAAOq3J,EAAOr3J,EAAKrpE,MAAM,MAC3C,IAAIypF,EAAMi3I,EAAKz2O,OACXH,GAAK,EACT,MAAO4Z,KAAU5Z,EAAI2/F,EAAM/lF,EAAMA,EAAIg9N,EAAK52O,IAC1C,OAAO4Z,GAGLk+G,EAASs0C,GAA4B,kBAANA,EAE/BqlE,EAAUpjE,IAAcmjE,GAAWC,EACnCJ,EAAY,GAAIA,EAAUpvH,MAAQ,EACtC,IAAI2uH,EAAO,KAIPiG,EAAkB3xO,IAAI,IAAI1B,EAAE,GAAGwB,EAAE,EAAEU,EAAE,GAAGhB,EAAEQ,IAAI,IAAI,IAAIQ,EAAE,EAAEhB,EAAElB,EAAEkC,GAAGqtE,EAAE,EAAEA,EAAE/tE,GAAG,CAAC,IAAIjF,EAAEgzE,EAAE,EAAErtE,EAAEqtE,EAAEhzE,EAAEiF,GAAGxB,EAAEzD,GAAGu4H,MAAM90H,EAAEuvE,GAAGulD,QAAQ5yH,EAAE3F,GAAGyD,EAAEkC,EAAE,GAAG,GAAGlC,EAAEkC,GAAGqtE,EAAE,GAAGrtE,GAAG,GAAG,IAAI,IAAI3B,EAAE2B,EAAE,GAAG,EAAEA,EAAE,GAAGhB,EAAE4zH,MAAM90H,EAAEO,GAAGu0H,MAAMv0H,GAAG2B,EAAE3B,GAAG,GAAG,EAAEP,EAAEkC,GAAGlC,EAAEO,GAAGP,EAAEkC,GAAGhB,GAAG,OAAOgB,EAAEu2B,IAAK/2B,IAAI,IAAIQ,EAAEV,EAAExB,EAAEwB,KAAKE,EAAE,IAAI,IAAIR,EAAEgB,EAAE,GAAG,EAAEA,EAAE,GAAGR,EAAEozH,MAAM90H,EAAEkB,GAAG4zH,MAAM5zH,GAAGgB,EAAEhB,GAAG,GAAG,EAAElB,EAAEkC,GAAGlC,EAAEkB,GAAGlB,EAAEkC,GAAGR,GAAIQ,EAAE80N,KAAMt1N,IAAI,GAAG,IAAIF,EAAE,CAAC,IAAIU,EAAElC,EAAE,GAAG,OAAOA,EAAE,GAAGA,IAAIwB,GAAGN,IAAIgB,IAAKA,EAAEusO,KAAM/sO,IAAI,GAAG,IAAIF,EAAE,OAAOxB,EAAE,IAAKkC,EAAEwsO,WAAYhtO,IAAI1B,EAAE,GAAG0B,EAAER,KAAMgB,GACxcsoD,EAAI6oL,IAIR,MAAO,CAAC,OAASnG,EAAQ,GAAKS,EAAI,UAAYqB,EAAW,QAAUY,EAAS,QAAUJ,EAAS,QAAU2D,O,gBCpiB3G,IAAIG,EAAe,EAAQ,OAEvBC,EAAc,SAAUtsE,GAC1B,IAAI1E,EAAK,kBACT,OAAOA,EAAG33J,KAAKq8J,IAGbusE,EAAS,SAAUp9N,GACrB,IAAIq9N,EAAK,GACLC,EAAW74O,OAAOsD,KAAKiY,GAmB3B,OAlBAs9N,EAASt1O,SAAQ,SAAU6oK,EAASr5H,GAClC,IAAIhuC,EAAQwW,EAAI6wJ,GAChBA,EAAUqsE,EAAarsE,GAEnBssE,EAAYtsE,IAA6B,kBAAVrnK,IACjCA,GAAgB,MAGhB6zO,IADY,IAAV7zO,EACIqnK,GACa,IAAVrnK,EACH,OAASqnK,EAET,IAAMA,EAAU,KAAOrnK,EAAQ,IAEnCguC,EAAQ8lM,EAAS/2O,OAAO,IAC1B82O,GAAM,YAGHA,GAGLE,EAAU,SAAU/8N,GACtB,IAAI68N,EAAK,GACT,MAAqB,kBAAV78N,EACFA,EAGLA,aAAiB5b,OACnB4b,EAAMxY,SAAQ,SAAUosD,EAAG5c,GACzB6lM,GAAMD,EAAOhpL,GACT5c,EAAQh3B,EAAMja,OAAO,IACvB82O,GAAM,SAGHA,GAGFD,EAAO58N,IAGhBivI,EAAOD,QAAU+tF,G,gBClDjB,IAAI5wC,EAAO,EAAQ,OAGf/hM,EAAS+hM,EAAK/hM,OAElB6kJ,EAAOD,QAAU5kJ,G,UCIjB,SAAS4yO,EAASr5M,EAAOs5M,GACvB,IAAIjmM,GAAS,EACTjxC,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACnCuD,EAASlF,MAAM2B,GAEnB,QAASixC,EAAQjxC,EACfuD,EAAO0tC,GAASimM,EAASt5M,EAAMqT,GAAQA,EAAOrT,GAEhD,OAAOr6B,EAGT2lJ,EAAOD,QAAUguF,G,UCRjB,SAASE,EAAYv5M,EAAOs5M,EAAUE,EAAaC,GACjD,IAAIpmM,GAAS,EACTjxC,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OAEnCq3O,GAAar3O,IACfo3O,EAAcx5M,IAAQqT,IAExB,QAASA,EAAQjxC,EACfo3O,EAAcF,EAASE,EAAax5M,EAAMqT,GAAQA,EAAOrT,GAE3D,OAAOw5M,EAGTluF,EAAOD,QAAUkuF,G,UClBjB,SAASG,EAAat4E,GACpB,OAAOA,EAAOjpJ,MAAM,IAGtBmzI,EAAOD,QAAUquF,G,UCVjB,IAAIC,EAAc,4CASlB,SAASC,EAAWx4E,GAClB,OAAOA,EAAO5wH,MAAMmpM,IAAgB,GAGtCruF,EAAOD,QAAUuuF,G,gBCdjB,IAAInzO,EAAS,EAAQ,OACjBozO,EAAY,EAAQ,OACpBC,EAAiB,EAAQ,MAGzBC,EAAU,gBACVC,EAAe,qBAGfC,EAAiBxzO,EAASA,EAAOyzO,iBAAcjzM,EASnD,SAASkzM,EAAW90O,GAClB,OAAa,MAATA,OACe4hC,IAAV5hC,EAAsB20O,EAAeD,EAEtCE,GAAkBA,KAAkB35O,OAAO+E,GAC/Cw0O,EAAUx0O,GACVy0O,EAAez0O,GAGrBimJ,EAAOD,QAAU8uF,G,UCpBjB,SAASC,EAAexgJ,GACtB,OAAO,SAASj9E,GACd,OAAiB,MAAVi9E,OAAiB3yD,EAAY2yD,EAAOj9E,IAI/C2uI,EAAOD,QAAU+uF,G,UCJjB,SAASC,EAAUr6M,EAAOkoD,EAAOC,GAC/B,IAAI90C,GAAS,EACTjxC,EAAS49B,EAAM59B,OAEf8lF,EAAQ,IACVA,GAASA,EAAQ9lF,EAAS,EAAKA,EAAS8lF,GAE1CC,EAAMA,EAAM/lF,EAASA,EAAS+lF,EAC1BA,EAAM,IACRA,GAAO/lF,GAETA,EAAS8lF,EAAQC,EAAM,EAAMA,EAAMD,IAAW,EAC9CA,KAAW,EAEX,IAAIviF,EAASlF,MAAM2B,GACnB,QAASixC,EAAQjxC,EACfuD,EAAO0tC,GAASrT,EAAMqT,EAAQ60C,GAEhC,OAAOviF,EAGT2lJ,EAAOD,QAAUgvF,G,gBC9BjB,IAAI5zO,EAAS,EAAQ,OACjB4yO,EAAW,EAAQ,OACnBjjK,EAAU,EAAQ,MAClB4kG,EAAW,EAAQ,OAGnBs/D,EAAW,IAGXC,EAAc9zO,EAASA,EAAOxF,eAAYgmC,EAC1C8mJ,EAAiBwsD,EAAcA,EAAYjrO,cAAW23B,EAU1D,SAASuzM,EAAan1O,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI+wE,EAAQ/wE,GAEV,OAAOg0O,EAASh0O,EAAOm1O,GAAgB,GAEzC,GAAIx/D,EAAS31K,GACX,OAAO0oL,EAAiBA,EAAersL,KAAK2D,GAAS,GAEvD,IAAIM,EAAUN,EAAQ,GACtB,MAAkB,KAAVM,GAAkB,EAAIN,IAAWi1O,EAAY,KAAO30O,EAG9D2lJ,EAAOD,QAAUmvF,G,gBCpCjB,IAAIH,EAAY,EAAQ,OAWxB,SAASI,EAAUz6M,EAAOkoD,EAAOC,GAC/B,IAAI/lF,EAAS49B,EAAM59B,OAEnB,OADA+lF,OAAclhD,IAARkhD,EAAoB/lF,EAAS+lF,GAC1BD,GAASC,GAAO/lF,EAAU49B,EAAQq6M,EAAUr6M,EAAOkoD,EAAOC,GAGrEmjE,EAAOD,QAAUovF,G,gBCjBjB,IAAIA,EAAY,EAAQ,OACpBC,EAAa,EAAQ,OACrBC,EAAgB,EAAQ,OACxBrrO,EAAW,EAAQ,OASvB,SAASsrO,EAAgBC,GACvB,OAAO,SAASz5E,GACdA,EAAS9xJ,EAAS8xJ,GAElB,IAAI05E,EAAaJ,EAAWt5E,GACxBu5E,EAAcv5E,QACdn6H,EAEAgqI,EAAM6pE,EACNA,EAAW,GACX15E,EAAOvqH,OAAO,GAEdkkM,EAAWD,EACXL,EAAUK,EAAY,GAAG/zN,KAAK,IAC9Bq6I,EAAO9zH,MAAM,GAEjB,OAAO2jI,EAAI4pE,KAAgBE,GAI/BzvF,EAAOD,QAAUuvF,G,gBChCjB,IAAIrB,EAAc,EAAQ,OACtByB,EAAS,EAAQ,OACjBC,EAAQ,EAAQ,OAGhBC,EAAS,OAGTC,EAAS79N,OAAO49N,EAAQ,KAS5B,SAASE,EAAiBhoN,GACxB,OAAO,SAASguI,GACd,OAAOm4E,EAAY0B,EAAMD,EAAO55E,GAAQnvJ,QAAQkpO,EAAQ,KAAM/nN,EAAU,KAI5Ek4H,EAAOD,QAAU+vF,G,gBCvBjB,IAAIhB,EAAiB,EAAQ,OAGzBiB,EAAkB,CAEpB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IACnC,EAAQ,KAAM,EAAQ,KACtB,EAAQ,KAAM,EAAQ,KACtB,EAAQ,KAER,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,KAWxBC,EAAelB,EAAeiB,GAElC/vF,EAAOD,QAAUiwF,G,gBCrEjB,IAAIC,EAA8B,iBAAV,EAAAr1O,GAAsB,EAAAA,GAAU,EAAAA,EAAO5F,SAAWA,QAAU,EAAA4F,EAEpFolJ,EAAOD,QAAUkwF,G,gBCHjB,IAAI90O,EAAS,EAAQ,OAGjB+0O,EAAcl7O,OAAOW,UAGrBJ,EAAiB26O,EAAY36O,eAO7B46O,EAAuBD,EAAYlsO,SAGnC2qO,EAAiBxzO,EAASA,EAAOyzO,iBAAcjzM,EASnD,SAAS4yM,EAAUx0O,GACjB,IAAIq2O,EAAQ76O,EAAea,KAAK2D,EAAO40O,GACnCl9E,EAAM13J,EAAM40O,GAEhB,IACE50O,EAAM40O,QAAkBhzM,EACxB,IAAI00M,GAAW,EACf,MAAOl2O,IAET,IAAIE,EAAS81O,EAAqB/5O,KAAK2D,GAQvC,OAPIs2O,IACED,EACFr2O,EAAM40O,GAAkBl9E,SAEjB13J,EAAM40O,IAGVt0O,EAGT2lJ,EAAOD,QAAUwuF,G,UC5CjB,IAAI+B,EAAgB,kBAChBC,EAAoB,kBACpBC,EAAwB,kBACxBC,EAAsB,kBACtBC,EAAeH,EAAoBC,EAAwBC,EAC3DE,EAAa,iBAGbC,EAAQ,UAGRC,EAAe7+N,OAAO,IAAM4+N,EAAQN,EAAiBI,EAAeC,EAAa,KASrF,SAASvB,EAAWt5E,GAClB,OAAO+6E,EAAa9rO,KAAK+wJ,GAG3B9V,EAAOD,QAAUqvF,G,UCxBjB,IAAI0B,EAAmB,qEASvB,SAASC,EAAej7E,GACtB,OAAOg7E,EAAiB/rO,KAAK+wJ,GAG/B9V,EAAOD,QAAUgxF,G,SCbjB,IAAIb,EAAcl7O,OAAOW,UAOrBw6O,EAAuBD,EAAYlsO,SASvC,SAASwqO,EAAez0O,GACtB,OAAOo2O,EAAqB/5O,KAAK2D,GAGnCimJ,EAAOD,QAAUyuF,G,gBCrBjB,IAAIyB,EAAa,EAAQ,OAGrBe,EAA0B,iBAAR7jK,MAAoBA,MAAQA,KAAKn4E,SAAWA,QAAUm4E,KAGxE+vH,EAAO+yC,GAAce,GAAYj1F,SAAS,cAATA,GAErCiE,EAAOD,QAAUm9C,G,gBCRjB,IAAIkxC,EAAe,EAAQ,OACvBgB,EAAa,EAAQ,OACrB6B,EAAiB,EAAQ,KAS7B,SAAS5B,EAAcv5E,GACrB,OAAOs5E,EAAWt5E,GACdm7E,EAAen7E,GACfs4E,EAAat4E,GAGnB9V,EAAOD,QAAUsvF,G,QChBjB,IAAIiB,EAAgB,kBAChBC,EAAoB,kBACpBC,EAAwB,kBACxBC,EAAsB,kBACtBC,EAAeH,EAAoBC,EAAwBC,EAC3DE,EAAa,iBAGbO,EAAW,IAAMZ,EAAgB,IACjCa,EAAU,IAAMT,EAAe,IAC/BU,EAAS,2BACTC,EAAa,MAAQF,EAAU,IAAMC,EAAS,IAC9CE,EAAc,KAAOhB,EAAgB,IACrCiB,EAAa,kCACbC,EAAa,qCACbZ,EAAQ,UAGRa,EAAWJ,EAAa,IACxBK,EAAW,IAAMf,EAAa,KAC9BgB,EAAY,MAAQf,EAAQ,MAAQ,CAACU,EAAaC,EAAYC,GAAY/1N,KAAK,KAAO,IAAMi2N,EAAWD,EAAW,KAClHG,EAAQF,EAAWD,EAAWE,EAC9BE,EAAW,MAAQ,CAACP,EAAcH,EAAU,IAAKA,EAASI,EAAYC,EAAYN,GAAUz1N,KAAK,KAAO,IAGxGq2N,EAAY9/N,OAAOo/N,EAAS,MAAQA,EAAS,KAAOS,EAAWD,EAAO,KAS1E,SAASX,EAAen7E,GACtB,OAAOA,EAAO5wH,MAAM4sM,IAAc,GAGpC9xF,EAAOD,QAAUkxF,G,SCtCjB,IAAIX,EAAgB,kBAChBC,EAAoB,kBACpBC,EAAwB,kBACxBC,EAAsB,kBACtBC,EAAeH,EAAoBC,EAAwBC,EAC3DsB,EAAiB,kBACjBC,EAAe,4BACfC,EAAgB,uBAChBC,EAAiB,+CACjBC,EAAqB,kBACrBC,EAAe,+JACfC,EAAe,4BACf1B,EAAa,iBACb2B,EAAeL,EAAgBC,EAAiBC,EAAqBC,EAGrExC,EAAS,OACT2C,EAAU,IAAMD,EAAe,IAC/BnB,EAAU,IAAMT,EAAe,IAC/B8B,EAAW,OACXC,EAAY,IAAMV,EAAiB,IACnCW,EAAU,IAAMV,EAAe,IAC/BW,EAAS,KAAOrC,EAAgBgC,EAAeE,EAAWT,EAAiBC,EAAeK,EAAe,IACzGjB,EAAS,2BACTC,EAAa,MAAQF,EAAU,IAAMC,EAAS,IAC9CE,EAAc,KAAOhB,EAAgB,IACrCiB,EAAa,kCACbC,EAAa,qCACboB,EAAU,IAAMP,EAAe,IAC/BzB,EAAQ,UAGRiC,EAAc,MAAQH,EAAU,IAAMC,EAAS,IAC/CG,EAAc,MAAQF,EAAU,IAAMD,EAAS,IAC/CI,EAAkB,MAAQnD,EAAS,yBACnCoD,EAAkB,MAAQpD,EAAS,yBACnC6B,EAAWJ,EAAa,IACxBK,EAAW,IAAMf,EAAa,KAC9BgB,EAAY,MAAQf,EAAQ,MAAQ,CAACU,EAAaC,EAAYC,GAAY/1N,KAAK,KAAO,IAAMi2N,EAAWD,EAAW,KAClHwB,EAAa,mDACbC,EAAa,mDACbtB,EAAQF,EAAWD,EAAWE,EAC9BwB,EAAU,MAAQ,CAACV,EAAWlB,EAAYC,GAAY/1N,KAAK,KAAO,IAAMm2N,EAGxEwB,EAAgBphO,OAAO,CACzB4gO,EAAU,IAAMF,EAAU,IAAMK,EAAkB,MAAQ,CAACR,EAASK,EAAS,KAAKn3N,KAAK,KAAO,IAC9Fq3N,EAAc,IAAME,EAAkB,MAAQ,CAACT,EAASK,EAAUC,EAAa,KAAKp3N,KAAK,KAAO,IAChGm3N,EAAU,IAAMC,EAAc,IAAME,EACpCH,EAAU,IAAMI,EAChBE,EACAD,EACAT,EACAW,GACA13N,KAAK,KAAM,KASb,SAAS43N,EAAav9E,GACpB,OAAOA,EAAO5wH,MAAMkuM,IAAkB,GAGxCpzF,EAAOD,QAAUszF,G,gBCpEjB,IAAIC,EAAa,EAAQ,OACrBxD,EAAmB,EAAQ,OAsB3ByD,EAAYzD,GAAiB,SAASz1O,EAAQm5O,EAAMzrM,GAEtD,OADAyrM,EAAOA,EAAKvpN,cACL5vB,GAAU0tC,EAAQurM,EAAWE,GAAQA,MAG9CxzF,EAAOD,QAAUwzF,G,gBC5BjB,IAAIvvO,EAAW,EAAQ,OACnByvO,EAAa,EAAQ,OAiBzB,SAASH,EAAWx9E,GAClB,OAAO29E,EAAWzvO,EAAS8xJ,GAAQ7rI,eAGrC+1H,EAAOD,QAAUuzF,G,gBCtBjB,IAAItD,EAAe,EAAQ,OACvBhsO,EAAW,EAAQ,OAGnB0vO,EAAU,8CAGVnD,EAAoB,kBACpBC,EAAwB,kBACxBC,EAAsB,kBACtBC,EAAeH,EAAoBC,EAAwBC,EAG3DU,EAAU,IAAMT,EAAe,IAM/BiD,EAAc3hO,OAAOm/N,EAAS,KAoBlC,SAASzB,EAAO55E,GAEd,OADAA,EAAS9xJ,EAAS8xJ,GACXA,GAAUA,EAAOnvJ,QAAQ+sO,EAAS1D,GAAcrpO,QAAQgtO,EAAa,IAG9E3zF,EAAOD,QAAU2vF,G,SCrBjB,IAAI5kK,EAAU31E,MAAM21E,QAEpBk1E,EAAOD,QAAUj1E,G,UCDjB,SAAS8oK,EAAa75O,GACpB,OAAgB,MAATA,GAAiC,iBAATA,EAGjCimJ,EAAOD,QAAU6zF,G,gBC5BjB,IAAI/E,EAAa,EAAQ,OACrB+E,EAAe,EAAQ,OAGvBC,EAAY,kBAmBhB,SAASnkE,EAAS31K,GAChB,MAAuB,iBAATA,GACX65O,EAAa75O,IAAU80O,EAAW90O,IAAU85O,EAGjD7zF,EAAOD,QAAU2vB,G,sBC5BjB;;;;;;;;cAQE,WAGA,IAAI/zI,EAGAsnH,EAAU,UAGV6wF,EAAmB,IAGnBC,EAAkB,kEAClBC,EAAkB,sBAClBC,EAA+B,qDAG/BC,EAAiB,4BAGjBC,EAAmB,IAGnBC,EAAc,yBAGdC,EAAkB,EAClBC,EAAkB,EAClBC,EAAqB,EAGrBC,EAAuB,EACvBC,EAAyB,EAGzBC,EAAiB,EACjBC,EAAqB,EACrBC,EAAwB,EACxBC,EAAkB,EAClBC,EAAwB,GACxBC,EAAoB,GACpBC,EAA0B,GAC1BC,EAAgB,IAChBC,EAAkB,IAClBC,EAAiB,IAGjBC,EAAuB,GACvBC,EAAyB,MAGzBC,EAAY,IACZC,EAAW,GAGXC,EAAmB,EACnBC,EAAgB,EAChBC,EAAkB,EAGlB1G,EAAW,IACXr2E,EAAmB,iBACnBg9E,EAAc,sBACdC,EAAM,IAGNC,EAAmB,WACnBC,EAAkBD,EAAmB,EACrCE,EAAwBF,IAAqB,EAG7CG,EAAY,CACd,CAAC,MAAOf,GACR,CAAC,OAAQP,GACT,CAAC,UAAWC,GACZ,CAAC,QAASE,GACV,CAAC,aAAcC,GACf,CAAC,OAAQK,GACT,CAAC,UAAWJ,GACZ,CAAC,eAAgBC,GACjB,CAAC,QAASE,IAIRe,EAAU,qBACVC,EAAW,iBACXC,EAAW,yBACXC,EAAU,mBACVC,EAAU,gBACVC,EAAY,wBACZC,EAAW,iBACXC,EAAU,oBACVC,EAAS,6BACTC,EAAS,eACTC,EAAY,kBACZlI,GAAU,gBACVmI,GAAY,kBACZC,GAAa,mBACbC,GAAW,iBACXC,GAAY,kBACZC,GAAS,eACTC,GAAY,kBACZpD,GAAY,kBACZnF,GAAe,qBACfwI,GAAa,mBACbC,GAAa,mBAEbC,GAAiB,uBACjBC,GAAc,oBACdC,GAAa,wBACbC,GAAa,wBACbC,GAAU,qBACVC,GAAW,sBACXC,GAAW,sBACXC,GAAW,sBACXC,GAAkB,6BAClBC,GAAY,uBACZC,GAAY,uBAGZC,GAAuB,iBACvBC,GAAsB,qBACtBC,GAAwB,gCAGxBC,GAAgB,4BAChBC,GAAkB,WAClBC,GAAmBpmO,OAAOkmO,GAAcn8K,QACxCs8K,GAAqBrmO,OAAOmmO,GAAgBp8K,QAG5Cu8K,GAAW,mBACXC,GAAa,kBACbC,GAAgB,mBAGhBC,GAAe,mDACfC,GAAgB,QAChBC,GAAa,mGAMbC,GAAe,sBACfC,GAAkB7mO,OAAO4mO,GAAa78K,QAGtC+8K,GAAc,OAGdC,GAAe,KAGfC,GAAgB,4CAChBC,GAAgB,oCAChBC,GAAiB,QAGjB7K,GAAc,4CAYd8K,GAA6B,mBAG7BC,GAAe,WAMfC,GAAe,kCAGfC,GAAU,OAGVC,GAAa,qBAGbC,GAAa,aAGbC,GAAe,8BAGfC,GAAY,cAGZC,GAAW,mBAGXjG,GAAU,8CAGVkG,GAAY,OAGZC,GAAoB,yBAGpBvJ,GAAgB,kBAChBC,GAAoB,kBACpBC,GAAwB,kBACxBC,GAAsB,kBACtBC,GAAeH,GAAoBC,GAAwBC,GAC3DsB,GAAiB,kBACjBC,GAAe,4BACfC,GAAgB,uBAChBC,GAAiB,+CACjBC,GAAqB,kBACrBC,GAAe,+JACfC,GAAe,4BACf1B,GAAa,iBACb2B,GAAeL,GAAgBC,GAAiBC,GAAqBC,GAGrExC,GAAS,OACTsB,GAAW,IAAMZ,GAAgB,IACjCiC,GAAU,IAAMD,GAAe,IAC/BnB,GAAU,IAAMT,GAAe,IAC/B8B,GAAW,OACXC,GAAY,IAAMV,GAAiB,IACnCW,GAAU,IAAMV,GAAe,IAC/BW,GAAS,KAAOrC,GAAgBgC,GAAeE,GAAWT,GAAiBC,GAAeK,GAAe,IACzGjB,GAAS,2BACTC,GAAa,MAAQF,GAAU,IAAMC,GAAS,IAC9CE,GAAc,KAAOhB,GAAgB,IACrCiB,GAAa,kCACbC,GAAa,qCACboB,GAAU,IAAMP,GAAe,IAC/BzB,GAAQ,UAGRiC,GAAc,MAAQH,GAAU,IAAMC,GAAS,IAC/CG,GAAc,MAAQF,GAAU,IAAMD,GAAS,IAC/CI,GAAkB,MAAQnD,GAAS,yBACnCoD,GAAkB,MAAQpD,GAAS,yBACnC6B,GAAWJ,GAAa,IACxBK,GAAW,IAAMf,GAAa,KAC9BgB,GAAY,MAAQf,GAAQ,MAAQ,CAACU,GAAaC,GAAYC,IAAY/1N,KAAK,KAAO,IAAMi2N,GAAWD,GAAW,KAClHwB,GAAa,mDACbC,GAAa,mDACbtB,GAAQF,GAAWD,GAAWE,GAC9BwB,GAAU,MAAQ,CAACV,GAAWlB,GAAYC,IAAY/1N,KAAK,KAAO,IAAMm2N,GACxEC,GAAW,MAAQ,CAACP,GAAcH,GAAU,IAAKA,GAASI,GAAYC,GAAYN,IAAUz1N,KAAK,KAAO,IAGxGo0N,GAAS79N,OAAO49N,GAAQ,KAMxB+D,GAAc3hO,OAAOm/N,GAAS,KAG9BW,GAAY9/N,OAAOo/N,GAAS,MAAQA,GAAS,KAAOS,GAAWD,GAAO,KAGtEwB,GAAgBphO,OAAO,CACzB4gO,GAAU,IAAMF,GAAU,IAAMK,GAAkB,MAAQ,CAACR,GAASK,GAAS,KAAKn3N,KAAK,KAAO,IAC9Fq3N,GAAc,IAAME,GAAkB,MAAQ,CAACT,GAASK,GAAUC,GAAa,KAAKp3N,KAAK,KAAO,IAChGm3N,GAAU,IAAMC,GAAc,IAAME,GACpCH,GAAU,IAAMI,GAChBE,GACAD,GACAT,GACAW,IACA13N,KAAK,KAAM,KAGTo1N,GAAe7+N,OAAO,IAAM4+N,GAAQN,GAAiBI,GAAeC,GAAa,KAGjFG,GAAmB,qEAGnBgJ,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,GACrBA,GAAe1C,IAAc0C,GAAezC,IAC5CyC,GAAexC,IAAWwC,GAAevC,IACzCuC,GAAetC,IAAYsC,GAAerC,IAC1CqC,GAAepC,IAAmBoC,GAAenC,IACjDmC,GAAelC,KAAa,EAC5BkC,GAAe/D,GAAW+D,GAAe9D,GACzC8D,GAAe5C,IAAkB4C,GAAe5D,GAChD4D,GAAe3C,IAAe2C,GAAe3D,GAC7C2D,GAAezD,GAAYyD,GAAexD,GAC1CwD,GAAetD,GAAUsD,GAAerD,GACxCqD,GAAepD,IAAaoD,GAAejD,IAC3CiD,GAAehD,IAAUgD,GAAe/C,IACxC+C,GAAe9C,KAAc,EAG7B,IAAI+C,GAAgB,GACpBA,GAAchE,GAAWgE,GAAc/D,GACvC+D,GAAc7C,IAAkB6C,GAAc5C,IAC9C4C,GAAc7D,GAAW6D,GAAc5D,GACvC4D,GAAc3C,IAAc2C,GAAc1C,IAC1C0C,GAAczC,IAAWyC,GAAcxC,IACvCwC,GAAcvC,IAAYuC,GAAcvD,GACxCuD,GAActD,GAAasD,GAAcrD,IACzCqD,GAAclD,IAAakD,GAAcjD,IACzCiD,GAAchD,IAAagD,GAAcpG,IACzCoG,GAActC,IAAYsC,GAAcrC,IACxCqC,GAAcpC,IAAaoC,GAAcnC,KAAa,EACtDmC,GAAc1D,GAAY0D,GAAczD,GACxCyD,GAAc/C,KAAc,EAG5B,IAAInH,GAAkB,CAEpB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IACtB,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAC1E,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IAAK,EAAQ,IAChD,EAAQ,IAAM,EAAQ,IAAK,EAAQ,IACnC,EAAQ,KAAM,EAAQ,KACtB,EAAQ,KAAM,EAAQ,KACtB,EAAQ,KAER,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACvE,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IACxD,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IAAK,EAAU,IACtF,EAAU,IAAM,EAAU,IAC1B,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,IAAM,EAAU,IAAK,EAAU,IACzC,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,KAC1B,EAAU,KAAM,EAAU,KAIxBmK,GAAc,CAChB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,SAIHC,GAAgB,CAClB,QAAS,IACT,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,QAAS,KAIPC,GAAgB,CAClB,KAAM,KACN,IAAK,IACL,KAAM,IACN,KAAM,IACN,SAAU,QACV,SAAU,SAIRC,GAAiBzrH,WACjB0rH,GAAe5/L,SAGfu1L,GAA8B,iBAAV,EAAAr1O,GAAsB,EAAAA,GAAU,EAAAA,EAAO5F,SAAWA,QAAU,EAAA4F,EAGhFo2O,GAA0B,iBAAR7jK,MAAoBA,MAAQA,KAAKn4E,SAAWA,QAAUm4E,KAGxE+vH,GAAO+yC,IAAce,IAAYj1F,SAAS,cAATA,GAGjCw+F,GAA4Cx6F,IAAYA,EAAQo9C,UAAYp9C,EAG5Ey6F,GAAaD,IAA4Cv6F,IAAWA,EAAOm9C,UAAYn9C,EAGvFy6F,GAAgBD,IAAcA,GAAWz6F,UAAYw6F,GAGrDG,GAAcD,IAAiBxK,GAAWzoF,QAG1CmzF,GAAY,WACd,IAEE,IAAIC,EAAQJ,IAAcA,GAAWK,SAAWL,GAAWK,QAAQ,QAAQD,MAE3E,OAAIA,GAKGF,IAAeA,GAAYI,SAAWJ,GAAYI,QAAQ,QACjE,MAAO3gP,KAXI,GAeX4gP,GAAoBJ,IAAYA,GAAS9yF,cACzCmzF,GAAaL,IAAYA,GAASzgK,OAClC+gK,GAAYN,IAAYA,GAASO,MACjCC,GAAeR,IAAYA,GAASl5E,SACpC25E,GAAYT,IAAYA,GAASU,MACjCC,GAAmBX,IAAYA,GAAS/wF,aAc5C,SAASpwJ,GAAMgrF,EAAM9qF,EAASmuF,GAC5B,OAAQA,EAAK/wF,QACX,KAAK,EAAG,OAAO0tF,EAAKpuF,KAAKsD,GACzB,KAAK,EAAG,OAAO8qF,EAAKpuF,KAAKsD,EAASmuF,EAAK,IACvC,KAAK,EAAG,OAAOrD,EAAKpuF,KAAKsD,EAASmuF,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAOrD,EAAKpuF,KAAKsD,EAASmuF,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,OAAOrD,EAAKhrF,MAAME,EAASmuF,GAa7B,SAAS0zJ,GAAgB7mN,EAAOoiI,EAAQk3E,EAAUE,GAChD,IAAInmM,GAAS,EACTjxC,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OAEvC,QAASixC,EAAQjxC,EAAQ,CACvB,IAAIiD,EAAQ26B,EAAMqT,GAClB+uH,EAAOo3E,EAAan0O,EAAOi0O,EAASj0O,GAAQ26B,GAE9C,OAAOw5M,EAYT,SAASsN,GAAU9mN,EAAOs5M,GACxB,IAAIjmM,GAAS,EACTjxC,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OAEvC,QAASixC,EAAQjxC,EACf,IAA6C,IAAzCk3O,EAASt5M,EAAMqT,GAAQA,EAAOrT,GAChC,MAGJ,OAAOA,EAYT,SAAS+mN,GAAe/mN,EAAOs5M,GAC7B,IAAIl3O,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OAEvC,MAAOA,IACL,IAA+C,IAA3Ck3O,EAASt5M,EAAM59B,GAASA,EAAQ49B,GAClC,MAGJ,OAAOA,EAaT,SAASgnN,GAAWhnN,EAAOinN,GACzB,IAAI5zM,GAAS,EACTjxC,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OAEvC,QAASixC,EAAQjxC,EACf,IAAK6kP,EAAUjnN,EAAMqT,GAAQA,EAAOrT,GAClC,OAAO,EAGX,OAAO,EAYT,SAASknN,GAAYlnN,EAAOinN,GAC1B,IAAI5zM,GAAS,EACTjxC,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACnC+kP,EAAW,EACXxhP,EAAS,GAEb,QAAS0tC,EAAQjxC,EAAQ,CACvB,IAAIiD,EAAQ26B,EAAMqT,GACd4zM,EAAU5hP,EAAOguC,EAAOrT,KAC1Br6B,EAAOwhP,KAAc9hP,GAGzB,OAAOM,EAYT,SAASyhP,GAAcpnN,EAAO36B,GAC5B,IAAIjD,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,QAASA,GAAUilP,GAAYrnN,EAAO36B,EAAO,IAAM,EAYrD,SAASiiP,GAAkBtnN,EAAO36B,EAAOkiP,GACvC,IAAIl0M,GAAS,EACTjxC,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OAEvC,QAASixC,EAAQjxC,EACf,GAAImlP,EAAWliP,EAAO26B,EAAMqT,IAC1B,OAAO,EAGX,OAAO,EAYT,SAASgmM,GAASr5M,EAAOs5M,GACvB,IAAIjmM,GAAS,EACTjxC,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACnCuD,EAASlF,MAAM2B,GAEnB,QAASixC,EAAQjxC,EACfuD,EAAO0tC,GAASimM,EAASt5M,EAAMqT,GAAQA,EAAOrT,GAEhD,OAAOr6B,EAWT,SAAS8/L,GAAUzlK,EAAOmT,GACxB,IAAIE,GAAS,EACTjxC,EAAS+wC,EAAO/wC,OAChB6mC,EAASjJ,EAAM59B,OAEnB,QAASixC,EAAQjxC,EACf49B,EAAMiJ,EAASoK,GAASF,EAAOE,GAEjC,OAAOrT,EAeT,SAASu5M,GAAYv5M,EAAOs5M,EAAUE,EAAaC,GACjD,IAAIpmM,GAAS,EACTjxC,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OAEnCq3O,GAAar3O,IACfo3O,EAAcx5M,IAAQqT,IAExB,QAASA,EAAQjxC,EACfo3O,EAAcF,EAASE,EAAax5M,EAAMqT,GAAQA,EAAOrT,GAE3D,OAAOw5M,EAeT,SAASgO,GAAiBxnN,EAAOs5M,EAAUE,EAAaC,GACtD,IAAIr3O,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACnCq3O,GAAar3O,IACfo3O,EAAcx5M,IAAQ59B,IAExB,MAAOA,IACLo3O,EAAcF,EAASE,EAAax5M,EAAM59B,GAASA,EAAQ49B,GAE7D,OAAOw5M,EAaT,SAASiO,GAAUznN,EAAOinN,GACxB,IAAI5zM,GAAS,EACTjxC,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OAEvC,QAASixC,EAAQjxC,EACf,GAAI6kP,EAAUjnN,EAAMqT,GAAQA,EAAOrT,GACjC,OAAO,EAGX,OAAO,EAUT,IAAI0nN,GAAYC,GAAa,UAS7B,SAASjO,GAAat4E,GACpB,OAAOA,EAAOjpJ,MAAM,IAUtB,SAASyhO,GAAWx4E,GAClB,OAAOA,EAAO5wH,MAAMmpM,KAAgB,GActC,SAASiO,GAAYrmE,EAAY0lE,EAAWY,GAC1C,IAAIliP,EAOJ,OANAkiP,EAAStmE,GAAY,SAASl8K,EAAOsX,EAAK4kK,GACxC,GAAI0lE,EAAU5hP,EAAOsX,EAAK4kK,GAExB,OADA57K,EAASgX,GACF,KAGJhX,EAcT,SAASmiP,GAAc9nN,EAAOinN,EAAWnlJ,EAAWimJ,GAClD,IAAI3lP,EAAS49B,EAAM59B,OACfixC,EAAQyuD,GAAaimJ,EAAY,GAAK,GAE1C,MAAQA,EAAY10M,MAAYA,EAAQjxC,EACtC,GAAI6kP,EAAUjnN,EAAMqT,GAAQA,EAAOrT,GACjC,OAAOqT,EAGX,OAAQ,EAYV,SAASg0M,GAAYrnN,EAAO36B,EAAOy8F,GACjC,OAAOz8F,IAAUA,EACb2iP,GAAchoN,EAAO36B,EAAOy8F,GAC5BgmJ,GAAc9nN,EAAOioN,GAAWnmJ,GAatC,SAASomJ,GAAgBloN,EAAO36B,EAAOy8F,EAAWylJ,GAChD,IAAIl0M,EAAQyuD,EAAY,EACpB1/F,EAAS49B,EAAM59B,OAEnB,QAASixC,EAAQjxC,EACf,GAAImlP,EAAWvnN,EAAMqT,GAAQhuC,GAC3B,OAAOguC,EAGX,OAAQ,EAUV,SAAS40M,GAAU5iP,GACjB,OAAOA,IAAUA,EAYnB,SAAS8iP,GAASnoN,EAAOs5M,GACvB,IAAIl3O,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,OAAOA,EAAUgmP,GAAQpoN,EAAOs5M,GAAYl3O,EAAU8+O,EAUxD,SAASyG,GAAahrO,GACpB,OAAO,SAASi9E,GACd,OAAiB,MAAVA,EAAiB3yD,EAAY2yD,EAAOj9E,IAW/C,SAASy9N,GAAexgJ,GACtB,OAAO,SAASj9E,GACd,OAAiB,MAAVi9E,EAAiB3yD,EAAY2yD,EAAOj9E,IAiB/C,SAAS0rO,GAAW9mE,EAAY+3D,EAAUE,EAAaC,EAAWoO,GAMhE,OALAA,EAAStmE,GAAY,SAASl8K,EAAOguC,EAAOkuI,GAC1Ci4D,EAAcC,GACTA,GAAY,EAAOp0O,GACpBi0O,EAASE,EAAan0O,EAAOguC,EAAOkuI,MAEnCi4D,EAaT,SAAS8O,GAAWtoN,EAAOuoN,GACzB,IAAInmP,EAAS49B,EAAM59B,OAEnB49B,EAAM7Y,KAAKohO,GACX,MAAOnmP,IACL49B,EAAM59B,GAAU49B,EAAM59B,GAAQiD,MAEhC,OAAO26B,EAYT,SAASooN,GAAQpoN,EAAOs5M,GACtB,IAAI3zO,EACA0tC,GAAS,EACTjxC,EAAS49B,EAAM59B,OAEnB,QAASixC,EAAQjxC,EAAQ,CACvB,IAAI4wB,EAAUsmN,EAASt5M,EAAMqT,IACzBrgB,IAAYiU,IACdthC,EAASA,IAAWshC,EAAYjU,EAAWrtB,EAASqtB,GAGxD,OAAOrtB,EAYT,SAAS6iP,GAAUtmP,EAAGo3O,GACpB,IAAIjmM,GAAS,EACT1tC,EAASlF,MAAMyB,GAEnB,QAASmxC,EAAQnxC,EACfyD,EAAO0tC,GAASimM,EAASjmM,GAE3B,OAAO1tC,EAYT,SAAS8iP,GAAY7uJ,EAAQ48B,GAC3B,OAAO6iH,GAAS7iH,GAAO,SAAS75G,GAC9B,MAAO,CAACA,EAAKi9E,EAAOj9E,OAWxB,SAAS+rO,GAAStnF,GAChB,OAAOA,EACHA,EAAO9zH,MAAM,EAAGq7M,GAAgBvnF,GAAU,GAAGnvJ,QAAQmyO,GAAa,IAClEhjF,EAUN,SAASwnF,GAAU94J,GACjB,OAAO,SAASzqF,GACd,OAAOyqF,EAAKzqF,IAchB,SAASwjP,GAAWjvJ,EAAQ48B,GAC1B,OAAO6iH,GAAS7iH,GAAO,SAAS75G,GAC9B,OAAOi9E,EAAOj9E,MAYlB,SAASmsO,GAASt/N,EAAO7M,GACvB,OAAO6M,EAAMI,IAAIjN,GAYnB,SAASosO,GAAgBjO,EAAYkO,GACnC,IAAI31M,GAAS,EACTjxC,EAAS04O,EAAW14O,OAExB,QAASixC,EAAQjxC,GAAUilP,GAAY2B,EAAYlO,EAAWznM,GAAQ,IAAM,GAC5E,OAAOA,EAYT,SAAS41M,GAAcnO,EAAYkO,GACjC,IAAI31M,EAAQynM,EAAW14O,OAEvB,MAAOixC,KAAWg0M,GAAY2B,EAAYlO,EAAWznM,GAAQ,IAAM,GACnE,OAAOA,EAWT,SAAS61M,GAAalpN,EAAOmpN,GAC3B,IAAI/mP,EAAS49B,EAAM59B,OACfuD,EAAS,EAEb,MAAOvD,IACD49B,EAAM59B,KAAY+mP,KAClBxjP,EAGN,OAAOA,EAWT,IAAI21O,GAAelB,GAAeiB,IAS9B+N,GAAiBhP,GAAeoL,IASpC,SAAS6D,GAAiBp4E,GACxB,MAAO,KAAOy0E,GAAcz0E,GAW9B,SAAS6iE,GAASl6I,EAAQj9E,GACxB,OAAiB,MAAVi9E,EAAiB3yD,EAAY2yD,EAAOj9E,GAU7C,SAAS+9N,GAAWt5E,GAClB,OAAO+6E,GAAa9rO,KAAK+wJ,GAU3B,SAASi7E,GAAej7E,GACtB,OAAOg7E,GAAiB/rO,KAAK+wJ,GAU/B,SAASkoF,GAAgB5iP,GACvB,IAAIyK,EACAxL,EAAS,GAEb,QAASwL,EAAOzK,EAASlB,QAAQI,KAC/BD,EAAOoB,KAAKoK,EAAK9L,OAEnB,OAAOM,EAUT,SAAS4jP,GAAWzsO,GAClB,IAAIu2B,GAAS,EACT1tC,EAASlF,MAAMqc,EAAI8hB,MAKvB,OAHA9hB,EAAIjZ,SAAQ,SAASwB,EAAOsX,GAC1BhX,IAAS0tC,GAAS,CAAC12B,EAAKtX,MAEnBM,EAWT,SAAS6jP,GAAQ15J,EAAM25J,GACrB,OAAO,SAAStkJ,GACd,OAAOrV,EAAK25J,EAAUtkJ,KAa1B,SAASukJ,GAAe1pN,EAAOmpN,GAC7B,IAAI91M,GAAS,EACTjxC,EAAS49B,EAAM59B,OACf+kP,EAAW,EACXxhP,EAAS,GAEb,QAAS0tC,EAAQjxC,EAAQ,CACvB,IAAIiD,EAAQ26B,EAAMqT,GACdhuC,IAAU8jP,GAAe9jP,IAAUq6O,IACrC1/M,EAAMqT,GAASqsM,EACf/5O,EAAOwhP,KAAc9zM,GAGzB,OAAO1tC,EAUT,SAASgkP,GAAWjgO,GAClB,IAAI2pB,GAAS,EACT1tC,EAASlF,MAAMipB,EAAIkV,MAKvB,OAHAlV,EAAI7lB,SAAQ,SAASwB,GACnBM,IAAS0tC,GAAShuC,KAEbM,EAUT,SAASikP,GAAWlgO,GAClB,IAAI2pB,GAAS,EACT1tC,EAASlF,MAAMipB,EAAIkV,MAKvB,OAHAlV,EAAI7lB,SAAQ,SAASwB,GACnBM,IAAS0tC,GAAS,CAAChuC,EAAOA,MAErBM,EAaT,SAASqiP,GAAchoN,EAAO36B,EAAOy8F,GACnC,IAAIzuD,EAAQyuD,EAAY,EACpB1/F,EAAS49B,EAAM59B,OAEnB,QAASixC,EAAQjxC,EACf,GAAI49B,EAAMqT,KAAWhuC,EACnB,OAAOguC,EAGX,OAAQ,EAaV,SAASw2M,GAAkB7pN,EAAO36B,EAAOy8F,GACvC,IAAIzuD,EAAQyuD,EAAY,EACxB,MAAOzuD,IACL,GAAIrT,EAAMqT,KAAWhuC,EACnB,OAAOguC,EAGX,OAAOA,EAUT,SAASy2M,GAAW1oF,GAClB,OAAOs5E,GAAWt5E,GACd2oF,GAAY3oF,GACZsmF,GAAUtmF,GAUhB,SAASu5E,GAAcv5E,GACrB,OAAOs5E,GAAWt5E,GACdm7E,GAAen7E,GACfs4E,GAAat4E,GAWnB,SAASunF,GAAgBvnF,GACvB,IAAI/tH,EAAQ+tH,EAAOh/J,OAEnB,MAAOixC,KAAWgxM,GAAah0O,KAAK+wJ,EAAOvqH,OAAOxD,KAClD,OAAOA,EAUT,IAAI22M,GAAmB5P,GAAeqL,IAStC,SAASsE,GAAY3oF,GACnB,IAAIz7J,EAASy3O,GAAUrmF,UAAY,EACnC,MAAOqmF,GAAU/sO,KAAK+wJ,KAClBz7J,EAEJ,OAAOA,EAUT,SAAS42O,GAAen7E,GACtB,OAAOA,EAAO5wH,MAAM4sM,KAAc,GAUpC,SAASuB,GAAav9E,GACpB,OAAOA,EAAO5wH,MAAMkuM,KAAkB,GAkCxC,IAAIuL,GAAe,SAAUA,EAAa7yI,GACxCA,EAAqB,MAAXA,EAAkBoxF,GAAOriM,GAAEg+F,SAASqkG,GAAKloM,SAAU82G,EAASjxG,GAAE+jP,KAAK1hD,GAAM48C,KAGnF,IAAI3kP,EAAQ22G,EAAQ32G,MAChB8uB,EAAO6nF,EAAQ7nF,KACf5tB,GAAQy1G,EAAQz1G,MAChB0lJ,GAAWjwC,EAAQiwC,SACnBr3I,GAAOonG,EAAQpnG,KACf1P,GAAS82G,EAAQ92G,OACjBgd,GAAS85F,EAAQ95F,OACjB5L,GAAS0lG,EAAQ1lG,OACjB7K,GAAYuwG,EAAQvwG,UAGpBsjP,GAAa1pP,EAAMQ,UACnBmpP,GAAY/iG,GAASpmJ,UACrBu6O,GAAcl7O,GAAOW,UAGrBopP,GAAajzI,EAAQ,sBAGrBkzI,GAAeF,GAAU96O,SAGzBzO,GAAiB26O,GAAY36O,eAG7B0pP,GAAY,EAGZC,GAAc,WAChB,IAAIz1N,EAAM,SAAS3Z,KAAKivO,IAAcA,GAAWzmP,MAAQymP,GAAWzmP,KAAK+tK,UAAY,IACrF,OAAO58I,EAAO,iBAAmBA,EAAO,GAFzB,GAUb0mN,GAAuBD,GAAYlsO,SAGnCm7O,GAAmBH,GAAa5oP,KAAKpB,IAGrCoqP,GAAUliD,GAAKriM,EAGfwkP,GAAartO,GAAO,IACtBgtO,GAAa5oP,KAAKb,IAAgBoR,QAAQiyO,GAAc,QACvDjyO,QAAQ,yDAA0D,SAAW,KAI5EkjJ,GAAS4wF,GAAgB3uI,EAAQ+9C,OAASluH,EAC1CxgC,GAAS2wG,EAAQ3wG,OACjBkJ,GAAaynG,EAAQznG,WACrBi7O,GAAcz1F,GAASA,GAAOy1F,YAAc3jN,EAC5C4jN,GAAerB,GAAQlpP,GAAO+1J,eAAgB/1J,IAC9CwqP,GAAexqP,GAAOY,OACtBihG,GAAuBq5I,GAAYr5I,qBACnCoP,GAAS44I,GAAW54I,OACpBw5I,GAAmBtkP,GAASA,GAAOk2K,mBAAqB11I,EACxD+jN,GAAcvkP,GAASA,GAAOC,SAAWugC,EACzCgzM,GAAiBxzO,GAASA,GAAOyzO,YAAcjzM,EAE/CkI,GAAkB,WACpB,IACE,IAAI2gD,EAAOm7J,GAAU3qP,GAAQ,kBAE7B,OADAwvF,EAAK,GAAI,GAAI,IACNA,EACP,MAAOrqF,KALU,GASjBylP,GAAkB9zI,EAAQ9vC,eAAiBkhI,GAAKlhI,cAAgB8vC,EAAQ9vC,aACxE6jL,GAAS57N,GAAQA,EAAKkC,MAAQ+2K,GAAKj5K,KAAKkC,KAAOlC,EAAKkC,IACpD25N,GAAgBh0I,EAAQ3tE,aAAe++J,GAAK/+J,YAAc2tE,EAAQ3tE,WAGlE4hN,GAAar7O,GAAKqD,KAClBi4O,GAAct7O,GAAKq2C,MACnBklM,GAAmBjrP,GAAOsvK,sBAC1B47E,GAAiBr2F,GAASA,GAAO/B,SAAWnsH,EAC5CwkN,GAAiBr0I,EAAQs0I,SACzBC,GAAaxB,GAAWpjO,KACxBw8J,GAAaimE,GAAQlpP,GAAOsD,KAAMtD,IAClCsrP,GAAY57O,GAAK4wD,IACjBirL,GAAY77O,GAAKs2C,IACjBwlM,GAAYv8N,EAAKkC,IACjBs6N,GAAiB30I,EAAQpxD,SACzBgmM,GAAeh8O,GAAKC,OACpBg8O,GAAgB9B,GAAWroH,QAG3BoqH,GAAWjB,GAAU7zI,EAAS,YAC9B3tF,GAAMwhO,GAAU7zI,EAAS,OACzBj0G,GAAU8nP,GAAU7zI,EAAS,WAC7Bp5E,GAAMitN,GAAU7zI,EAAS,OACzB40D,GAAUi/E,GAAU7zI,EAAS,WAC7B+0I,GAAelB,GAAU3qP,GAAQ,UAGjC8rP,GAAUpgF,IAAW,IAAIA,GAGzBqgF,GAAY,GAGZC,GAAqBC,GAASL,IAC9BM,GAAgBD,GAAS9iO,IACzBgjO,GAAoBF,GAASppP,IAC7BupP,GAAgBH,GAASvuN,IACzB2uN,GAAoBJ,GAASvgF,IAG7BuuE,GAAc9zO,GAASA,GAAOxF,UAAYgmC,EAC1C+mJ,GAAgBusD,GAAcA,GAAYxmE,QAAU9sI,EACpD8mJ,GAAiBwsD,GAAcA,GAAYjrO,SAAW23B,EAyH1D,SAAS2lN,GAAOvnP,GACd,GAAI65O,GAAa75O,KAAW+wE,GAAQ/wE,MAAYA,aAAiBwnP,IAAc,CAC7E,GAAIxnP,aAAiBynP,GACnB,OAAOznP,EAET,GAAIxE,GAAea,KAAK2D,EAAO,eAC7B,OAAO0nP,GAAa1nP,GAGxB,OAAO,IAAIynP,GAAcznP,GAW3B,IAAI2nP,GAAc,WAChB,SAASpzJ,KACT,OAAO,SAAS3B,GACd,IAAKle,GAASke,GACZ,MAAO,GAET,GAAI6yJ,GACF,OAAOA,GAAa7yJ,GAEtB2B,EAAO34F,UAAYg3F,EACnB,IAAItyF,EAAS,IAAIi0F,EAEjB,OADAA,EAAO34F,UAAYgmC,EACZthC,GAZM,GAqBjB,SAASsnP,MAWT,SAASH,GAAcznP,EAAO6nP,GAC5BnsP,KAAKosP,YAAc9nP,EACnBtE,KAAKqsP,YAAc,GACnBrsP,KAAKssP,YAAcH,EACnBnsP,KAAKusP,UAAY,EACjBvsP,KAAKwsP,WAAatmN,EAgFpB,SAAS4lN,GAAYxnP,GACnBtE,KAAKosP,YAAc9nP,EACnBtE,KAAKqsP,YAAc,GACnBrsP,KAAKysP,QAAU,EACfzsP,KAAK0sP,cAAe,EACpB1sP,KAAK2sP,cAAgB,GACrB3sP,KAAK4sP,cAAgBxM,EACrBpgP,KAAK6sP,UAAY,GAWnB,SAASC,KACP,IAAIloP,EAAS,IAAIknP,GAAY9rP,KAAKosP,aAOlC,OANAxnP,EAAOynP,YAAcU,GAAU/sP,KAAKqsP,aACpCznP,EAAO6nP,QAAUzsP,KAAKysP,QACtB7nP,EAAO8nP,aAAe1sP,KAAK0sP,aAC3B9nP,EAAO+nP,cAAgBI,GAAU/sP,KAAK2sP,eACtC/nP,EAAOgoP,cAAgB5sP,KAAK4sP,cAC5BhoP,EAAOioP,UAAYE,GAAU/sP,KAAK6sP,WAC3BjoP,EAWT,SAASooP,KACP,GAAIhtP,KAAK0sP,aAAc,CACrB,IAAI9nP,EAAS,IAAIknP,GAAY9rP,MAC7B4E,EAAO6nP,SAAW,EAClB7nP,EAAO8nP,cAAe,OAEtB9nP,EAAS5E,KAAKmuB,QACdvpB,EAAO6nP,UAAY,EAErB,OAAO7nP,EAWT,SAASqoP,KACP,IAAIhuN,EAAQj/B,KAAKosP,YAAY9nP,QACzB4oP,EAAMltP,KAAKysP,QACXU,EAAQ93K,GAAQp2C,GAChBmuN,EAAUF,EAAM,EAChBG,EAAYF,EAAQluN,EAAM59B,OAAS,EACnCisP,EAAOC,GAAQ,EAAGF,EAAWrtP,KAAK6sP,WAClC1lK,EAAQmmK,EAAKnmK,MACbC,EAAMkmK,EAAKlmK,IACX/lF,EAAS+lF,EAAMD,EACf70C,EAAQ86M,EAAUhmK,EAAOD,EAAQ,EACjCqmK,EAAYxtP,KAAK2sP,cACjBc,EAAaD,EAAUnsP,OACvB+kP,EAAW,EACXsH,EAAY5C,GAAUzpP,EAAQrB,KAAK4sP,eAEvC,IAAKO,IAAWC,GAAWC,GAAahsP,GAAUqsP,GAAarsP,EAC7D,OAAOssP,GAAiB1uN,EAAOj/B,KAAKqsP,aAEtC,IAAIznP,EAAS,GAEbgpP,EACA,MAAOvsP,KAAY+kP,EAAWsH,EAAW,CACvCp7M,GAAS46M,EAET,IAAIW,GAAa,EACbvpP,EAAQ26B,EAAMqT,GAElB,QAASu7M,EAAYJ,EAAY,CAC/B,IAAIr9O,EAAOo9O,EAAUK,GACjBtV,EAAWnoO,EAAKmoO,SAChBrrN,EAAO9c,EAAK8c,KACZ4gO,EAAWvV,EAASj0O,GAExB,GAAI4oB,GAAQ8yN,EACV17O,EAAQwpP,OACH,IAAKA,EAAU,CACpB,GAAI5gO,GAAQ6yN,EACV,SAAS6N,EAET,MAAMA,GAIZhpP,EAAOwhP,KAAc9hP,EAEvB,OAAOM,EAgBT,SAASmpP,GAAK30K,GACZ,IAAI9mC,GAAS,EACTjxC,EAAoB,MAAX+3E,EAAkB,EAAIA,EAAQ/3E,OAE3CrB,KAAK8oB,QACL,QAASwpB,EAAQjxC,EAAQ,CACvB,IAAI2a,EAAQo9D,EAAQ9mC,GACpBtyC,KAAK2oB,IAAI3M,EAAM,GAAIA,EAAM,KAW7B,SAASgyO,KACPhuP,KAAKiuP,SAAW7C,GAAeA,GAAa,MAAQ,GACpDprP,KAAK69B,KAAO,EAad,SAASqwN,GAAWtyO,GAClB,IAAIhX,EAAS5E,KAAK6oB,IAAIjN,WAAe5b,KAAKiuP,SAASryO,GAEnD,OADA5b,KAAK69B,MAAQj5B,EAAS,EAAI,EACnBA,EAYT,SAASupP,GAAQvyO,GACf,IAAIxL,EAAOpQ,KAAKiuP,SAChB,GAAI7C,GAAc,CAChB,IAAIxmP,EAASwL,EAAKwL,GAClB,OAAOhX,IAAW65O,EAAiBv4M,EAAYthC,EAEjD,OAAO9E,GAAea,KAAKyP,EAAMwL,GAAOxL,EAAKwL,GAAOsqB,EAYtD,SAASkoN,GAAQxyO,GACf,IAAIxL,EAAOpQ,KAAKiuP,SAChB,OAAO7C,GAAgBh7O,EAAKwL,KAASsqB,EAAapmC,GAAea,KAAKyP,EAAMwL,GAa9E,SAASyyO,GAAQzyO,EAAKtX,GACpB,IAAI8L,EAAOpQ,KAAKiuP,SAGhB,OAFAjuP,KAAK69B,MAAQ79B,KAAK6oB,IAAIjN,GAAO,EAAI,EACjCxL,EAAKwL,GAAQwvO,IAAgB9mP,IAAU4hC,EAAau4M,EAAiBn6O,EAC9DtE,KAmBT,SAASsuP,GAAUl1K,GACjB,IAAI9mC,GAAS,EACTjxC,EAAoB,MAAX+3E,EAAkB,EAAIA,EAAQ/3E,OAE3CrB,KAAK8oB,QACL,QAASwpB,EAAQjxC,EAAQ,CACvB,IAAI2a,EAAQo9D,EAAQ9mC,GACpBtyC,KAAK2oB,IAAI3M,EAAM,GAAIA,EAAM,KAW7B,SAASuyO,KACPvuP,KAAKiuP,SAAW,GAChBjuP,KAAK69B,KAAO,EAYd,SAAS2wN,GAAgB5yO,GACvB,IAAIxL,EAAOpQ,KAAKiuP,SACZ37M,EAAQm8M,GAAar+O,EAAMwL,GAE/B,GAAI02B,EAAQ,EACV,OAAO,EAET,IAAI0jH,EAAY5lJ,EAAK/O,OAAS,EAO9B,OANIixC,GAAS0jH,EACX5lJ,EAAKrK,MAELyqG,GAAO7vG,KAAKyP,EAAMkiC,EAAO,KAEzBtyC,KAAK69B,MACA,EAYT,SAAS6wN,GAAa9yO,GACpB,IAAIxL,EAAOpQ,KAAKiuP,SACZ37M,EAAQm8M,GAAar+O,EAAMwL,GAE/B,OAAO02B,EAAQ,EAAIpM,EAAY91B,EAAKkiC,GAAO,GAY7C,SAASq8M,GAAa/yO,GACpB,OAAO6yO,GAAazuP,KAAKiuP,SAAUryO,IAAQ,EAa7C,SAASgzO,GAAahzO,EAAKtX,GACzB,IAAI8L,EAAOpQ,KAAKiuP,SACZ37M,EAAQm8M,GAAar+O,EAAMwL,GAQ/B,OANI02B,EAAQ,KACRtyC,KAAK69B,KACPztB,EAAKpK,KAAK,CAAC4V,EAAKtX,KAEhB8L,EAAKkiC,GAAO,GAAKhuC,EAEZtE,KAmBT,SAAS6uP,GAASz1K,GAChB,IAAI9mC,GAAS,EACTjxC,EAAoB,MAAX+3E,EAAkB,EAAIA,EAAQ/3E,OAE3CrB,KAAK8oB,QACL,QAASwpB,EAAQjxC,EAAQ,CACvB,IAAI2a,EAAQo9D,EAAQ9mC,GACpBtyC,KAAK2oB,IAAI3M,EAAM,GAAIA,EAAM,KAW7B,SAAS8yO,KACP9uP,KAAK69B,KAAO,EACZ79B,KAAKiuP,SAAW,CACd,KAAQ,IAAIF,GACZ,IAAO,IAAKrlO,IAAO4lO,IACnB,OAAU,IAAIP,IAalB,SAASgB,GAAenzO,GACtB,IAAIhX,EAASoqP,GAAWhvP,KAAM4b,GAAK,UAAUA,GAE7C,OADA5b,KAAK69B,MAAQj5B,EAAS,EAAI,EACnBA,EAYT,SAASqqP,GAAYrzO,GACnB,OAAOozO,GAAWhvP,KAAM4b,GAAKla,IAAIka,GAYnC,SAASszO,GAAYtzO,GACnB,OAAOozO,GAAWhvP,KAAM4b,GAAKiN,IAAIjN,GAanC,SAASuzO,GAAYvzO,EAAKtX,GACxB,IAAI8L,EAAO4+O,GAAWhvP,KAAM4b,GACxBiiB,EAAOztB,EAAKytB,KAIhB,OAFAztB,EAAKuY,IAAI/M,EAAKtX,GACdtE,KAAK69B,MAAQztB,EAAKytB,MAAQA,EAAO,EAAI,EAC9B79B,KAoBT,SAASovP,GAASh9M,GAChB,IAAIE,GAAS,EACTjxC,EAAmB,MAAV+wC,EAAiB,EAAIA,EAAO/wC,OAEzCrB,KAAKiuP,SAAW,IAAIY,GACpB,QAASv8M,EAAQjxC,EACfrB,KAAKm9B,IAAIiV,EAAOE,IAcpB,SAAS+8M,GAAY/qP,GAEnB,OADAtE,KAAKiuP,SAAStlO,IAAIrkB,EAAOm6O,GAClBz+O,KAYT,SAASsvP,GAAYhrP,GACnB,OAAOtE,KAAKiuP,SAASplO,IAAIvkB,GAgB3B,SAASirP,GAAMn2K,GACb,IAAIhpE,EAAOpQ,KAAKiuP,SAAW,IAAIK,GAAUl1K,GACzCp5E,KAAK69B,KAAOztB,EAAKytB,KAUnB,SAAS2xN,KACPxvP,KAAKiuP,SAAW,IAAIK,GACpBtuP,KAAK69B,KAAO,EAYd,SAAS4xN,GAAY7zO,GACnB,IAAIxL,EAAOpQ,KAAKiuP,SACZrpP,EAASwL,EAAK,UAAUwL,GAG5B,OADA5b,KAAK69B,KAAOztB,EAAKytB,KACVj5B,EAYT,SAAS8qP,GAAS9zO,GAChB,OAAO5b,KAAKiuP,SAASvsP,IAAIka,GAY3B,SAAS+zO,GAAS/zO,GAChB,OAAO5b,KAAKiuP,SAASplO,IAAIjN,GAa3B,SAASg0O,GAASh0O,EAAKtX,GACrB,IAAI8L,EAAOpQ,KAAKiuP,SAChB,GAAI79O,aAAgBk+O,GAAW,CAC7B,IAAIuB,EAAQz/O,EAAK69O,SACjB,IAAKvlO,IAAQmnO,EAAMxuP,OAASg9O,EAAmB,EAG7C,OAFAwR,EAAM7pP,KAAK,CAAC4V,EAAKtX,IACjBtE,KAAK69B,OAASztB,EAAKytB,KACZ79B,KAEToQ,EAAOpQ,KAAKiuP,SAAW,IAAIY,GAASgB,GAItC,OAFAz/O,EAAKuY,IAAI/M,EAAKtX,GACdtE,KAAK69B,KAAOztB,EAAKytB,KACV79B,KAoBT,SAAS8vP,GAAcxrP,EAAOyrP,GAC5B,IAAI5C,EAAQ93K,GAAQ/wE,GAChB0rP,GAAS7C,GAAS8C,GAAY3rP,GAC9B4rP,GAAU/C,IAAU6C,GAAS39F,GAAS/tJ,GACtC6rP,GAAUhD,IAAU6C,IAAUE,GAAU/7F,GAAa7vJ,GACrD8rP,EAAcjD,GAAS6C,GAASE,GAAUC,EAC1CvrP,EAASwrP,EAAc3I,GAAUnjP,EAAMjD,OAAQsP,IAAU,GACzDtP,EAASuD,EAAOvD,OAEpB,IAAK,IAAIua,KAAOtX,GACTyrP,IAAajwP,GAAea,KAAK2D,EAAOsX,IACvCw0O,IAEQ,UAAPx0O,GAECs0O,IAAkB,UAAPt0O,GAA0B,UAAPA,IAE9Bu0O,IAAkB,UAAPv0O,GAA0B,cAAPA,GAA8B,cAAPA,IAEtDy0O,GAAQz0O,EAAKva,KAElBuD,EAAOoB,KAAK4V,GAGhB,OAAOhX,EAUT,SAAS0rP,GAAYrxN,GACnB,IAAI59B,EAAS49B,EAAM59B,OACnB,OAAOA,EAAS49B,EAAMsxN,GAAW,EAAGlvP,EAAS,IAAM6kC,EAWrD,SAASsqN,GAAgBvxN,EAAO99B,GAC9B,OAAOsvP,GAAY1D,GAAU9tN,GAAQyxN,GAAUvvP,EAAG,EAAG89B,EAAM59B,SAU7D,SAASsvP,GAAa1xN,GACpB,OAAOwxN,GAAY1D,GAAU9tN,IAY/B,SAAS2xN,GAAiB/3J,EAAQj9E,EAAKtX,IAChCA,IAAU4hC,IAAc2qN,GAAGh4J,EAAOj9E,GAAMtX,IACxCA,IAAU4hC,KAAetqB,KAAOi9E,KACnCi4J,GAAgBj4J,EAAQj9E,EAAKtX,GAcjC,SAASkxJ,GAAY38D,EAAQj9E,EAAKtX,GAChC,IAAIysP,EAAWl4J,EAAOj9E,GAChB9b,GAAea,KAAKk4F,EAAQj9E,IAAQi1O,GAAGE,EAAUzsP,KAClDA,IAAU4hC,GAAetqB,KAAOi9E,IACnCi4J,GAAgBj4J,EAAQj9E,EAAKtX,GAYjC,SAASmqP,GAAaxvN,EAAOrjB,GAC3B,IAAIva,EAAS49B,EAAM59B,OACnB,MAAOA,IACL,GAAIwvP,GAAG5xN,EAAM59B,GAAQ,GAAIua,GACvB,OAAOva,EAGX,OAAQ,EAcV,SAAS2vP,GAAexwE,EAAYnf,EAAQk3E,EAAUE,GAIpD,OAHAwY,GAASzwE,GAAY,SAASl8K,EAAOsX,EAAK4kK,GACxCnf,EAAOo3E,EAAan0O,EAAOi0O,EAASj0O,GAAQk8K,MAEvCi4D,EAYT,SAASyY,GAAWr4J,EAAQvyB,GAC1B,OAAOuyB,GAAUs4J,GAAW7qL,EAAQzjE,GAAKyjE,GAASuyB,GAYpD,SAASu4J,GAAav4J,EAAQvyB,GAC5B,OAAOuyB,GAAUs4J,GAAW7qL,EAAQ+qL,GAAO/qL,GAASuyB,GAYtD,SAASi4J,GAAgBj4J,EAAQj9E,EAAKtX,GACzB,aAAPsX,GAAsBwyB,GACxBA,GAAeyqD,EAAQj9E,EAAK,CAC1B,cAAgB,EAChB,YAAc,EACd,MAAStX,EACT,UAAY,IAGdu0F,EAAOj9E,GAAOtX,EAYlB,SAASgtP,GAAOz4J,EAAQ04J,GACtB,IAAIj/M,GAAS,EACTjxC,EAASkwP,EAAMlwP,OACfuD,EAASlF,EAAM2B,GACfmwP,EAAiB,MAAV34J,EAEX,QAASvmD,EAAQjxC,EACfuD,EAAO0tC,GAASk/M,EAAOtrN,EAAYxkC,GAAIm3F,EAAQ04J,EAAMj/M,IAEvD,OAAO1tC,EAYT,SAAS8rP,GAAUrqJ,EAAQ0wI,EAAO0a,GAShC,OARIprJ,IAAWA,IACTorJ,IAAUvrN,IACZmgE,EAASA,GAAUorJ,EAAQprJ,EAASorJ,GAElC1a,IAAU7wM,IACZmgE,EAASA,GAAU0wI,EAAQ1wI,EAAS0wI,IAGjC1wI,EAmBT,SAASqrJ,GAAUptP,EAAOqtP,EAASC,EAAYh2O,EAAKi9E,EAAQG,GAC1D,IAAIp0F,EACAitP,EAASF,EAAU/S,EACnBkT,EAASH,EAAU9S,EACnBkT,EAASJ,EAAU7S,EAKvB,GAHI8S,IACFhtP,EAASi0F,EAAS+4J,EAAWttP,EAAOsX,EAAKi9E,EAAQG,GAAS44J,EAAWttP,IAEnEM,IAAWshC,EACb,OAAOthC,EAET,IAAKo0E,GAAS10E,GACZ,OAAOA,EAET,IAAI6oP,EAAQ93K,GAAQ/wE,GACpB,GAAI6oP,GAEF,GADAvoP,EAASotP,GAAe1tP,IACnButP,EACH,OAAO9E,GAAUzoP,EAAOM,OAErB,CACL,IAAIo3J,EAAMi2F,GAAO3tP,GACb4tP,EAASl2F,GAAO+kF,GAAW/kF,GAAOglF,EAEtC,GAAI3uF,GAAS/tJ,GACX,OAAO6tP,GAAY7tP,EAAOutP,GAE5B,GAAI71F,GAAOmlF,IAAanlF,GAAOwkF,GAAY0R,IAAWr5J,GAEpD,GADAj0F,EAAUktP,GAAUI,EAAU,GAAKE,GAAgB9tP,IAC9CutP,EACH,OAAOC,EACHO,GAAc/tP,EAAO8sP,GAAaxsP,EAAQN,IAC1CguP,GAAYhuP,EAAO4sP,GAAWtsP,EAAQN,QAEvC,CACL,IAAKkgP,GAAcxoF,GACjB,OAAOnjE,EAASv0F,EAAQ,GAE1BM,EAAS2tP,GAAejuP,EAAO03J,EAAK61F,IAIxC74J,IAAUA,EAAQ,IAAIu2J,IACtB,IAAIiD,EAAUx5J,EAAMt3F,IAAI4C,GACxB,GAAIkuP,EACF,OAAOA,EAETx5J,EAAMrwE,IAAIrkB,EAAOM,GAEbghP,GAAMthP,GACRA,EAAMxB,SAAQ,SAAS2vP,GACrB7tP,EAAOu4B,IAAIu0N,GAAUe,EAAUd,EAASC,EAAYa,EAAUnuP,EAAO00F,OAE9DysJ,GAAMnhP,IACfA,EAAMxB,SAAQ,SAAS2vP,EAAU72O,GAC/BhX,EAAO+jB,IAAI/M,EAAK81O,GAAUe,EAAUd,EAASC,EAAYh2O,EAAKtX,EAAO00F,OAIzE,IAAI05J,EAAWX,EACVD,EAASa,GAAe7qO,GACxBgqO,EAAST,GAASxuP,GAEnB4yH,EAAQ03H,EAAQjnN,EAAYwsN,EAASpuP,GASzC,OARAyhP,GAAUtwH,GAASnxH,GAAO,SAASmuP,EAAU72O,GACvC65G,IACF75G,EAAM62O,EACNA,EAAWnuP,EAAMsX,IAGnB45I,GAAY5wJ,EAAQgX,EAAK81O,GAAUe,EAAUd,EAASC,EAAYh2O,EAAKtX,EAAO00F,OAEzEp0F,EAUT,SAASguP,GAAatsL,GACpB,IAAImvD,EAAQ5yH,GAAKyjE,GACjB,OAAO,SAASuyB,GACd,OAAOg6J,GAAeh6J,EAAQvyB,EAAQmvD,IAY1C,SAASo9H,GAAeh6J,EAAQvyB,EAAQmvD,GACtC,IAAIp0H,EAASo0H,EAAMp0H,OACnB,GAAc,MAAVw3F,EACF,OAAQx3F,EAEVw3F,EAASt5F,GAAOs5F,GAChB,MAAOx3F,IAAU,CACf,IAAIua,EAAM65G,EAAMp0H,GACZ6kP,EAAY5/K,EAAO1qD,GACnBtX,EAAQu0F,EAAOj9E,GAEnB,GAAKtX,IAAU4hC,KAAetqB,KAAOi9E,KAAaqtJ,EAAU5hP,GAC1D,OAAO,EAGX,OAAO,EAaT,SAASwuP,GAAU/jK,EAAMgkK,EAAM3gK,GAC7B,GAAmB,mBAARrD,EACT,MAAM,IAAIjpF,GAAUy4O,GAEtB,OAAO71M,IAAW,WAAaqmD,EAAKhrF,MAAMmiC,EAAWksD,KAAU2gK,GAcjE,SAASC,GAAe/zN,EAAOmT,EAAQmmM,EAAUiO,GAC/C,IAAIl0M,GAAS,EACTumC,EAAWwtK,GACX4M,GAAW,EACX5xP,EAAS49B,EAAM59B,OACfuD,EAAS,GACTsuP,EAAe9gN,EAAO/wC,OAE1B,IAAKA,EACH,OAAOuD,EAEL2zO,IACFnmM,EAASkmM,GAASlmM,EAAQy1M,GAAUtP,KAElCiO,GACF3tK,EAAW0tK,GACX0M,GAAW,GAEJ7gN,EAAO/wC,QAAUg9O,IACxBxlK,EAAWkvK,GACXkL,GAAW,EACX7gN,EAAS,IAAIg9M,GAASh9M,IAExBw7M,EACA,QAASt7M,EAAQjxC,EAAQ,CACvB,IAAIiD,EAAQ26B,EAAMqT,GACdw7M,EAAuB,MAAZvV,EAAmBj0O,EAAQi0O,EAASj0O,GAGnD,GADAA,EAASkiP,GAAwB,IAAVliP,EAAeA,EAAQ,EAC1C2uP,GAAYnF,IAAaA,EAAU,CACrC,IAAIqF,EAAcD,EAClB,MAAOC,IACL,GAAI/gN,EAAO+gN,KAAiBrF,EAC1B,SAASF,EAGbhpP,EAAOoB,KAAK1B,QAEJu0E,EAASzmC,EAAQ07M,EAAUtH,IACnC5hP,EAAOoB,KAAK1B,GAGhB,OAAOM,EAjkCTinP,GAAOuH,iBAAmB,CAQxB,OAAUvQ,GAQV,SAAYC,GAQZ,YAAeC,GAQf,SAAY,GAQZ,QAAW,CAQT,EAAK8I,KAKTA,GAAO3rP,UAAYgsP,GAAWhsP,UAC9B2rP,GAAO3rP,UAAUD,YAAc4rP,GAE/BE,GAAc7rP,UAAY+rP,GAAWC,GAAWhsP,WAChD6rP,GAAc7rP,UAAUD,YAAc8rP,GAsHtCD,GAAY5rP,UAAY+rP,GAAWC,GAAWhsP,WAC9C4rP,GAAY5rP,UAAUD,YAAc6rP,GAoGpCiC,GAAK7tP,UAAU4oB,MAAQklO,GACvBD,GAAK7tP,UAAU,UAAYguP,GAC3BH,GAAK7tP,UAAUwB,IAAMysP,GACrBJ,GAAK7tP,UAAU2oB,IAAMulO,GACrBL,GAAK7tP,UAAUyoB,IAAM0lO,GAiHrBC,GAAUpuP,UAAU4oB,MAAQylO,GAC5BD,GAAUpuP,UAAU,UAAYsuP,GAChCF,GAAUpuP,UAAUwB,IAAMgtP,GAC1BJ,GAAUpuP,UAAU2oB,IAAM8lO,GAC1BL,GAAUpuP,UAAUyoB,IAAMimO,GAmG1BC,GAAS3uP,UAAU4oB,MAAQgmO,GAC3BD,GAAS3uP,UAAU,UAAY6uP,GAC/BF,GAAS3uP,UAAUwB,IAAMutP,GACzBJ,GAAS3uP,UAAU2oB,IAAMqmO,GACzBL,GAAS3uP,UAAUyoB,IAAMwmO,GAmDzBC,GAASlvP,UAAUi9B,IAAMiyN,GAASlvP,UAAU8F,KAAOqpP,GACnDD,GAASlvP,UAAU2oB,IAAMymO,GAkGzBC,GAAMrvP,UAAU4oB,MAAQ0mO,GACxBD,GAAMrvP,UAAU,UAAYuvP,GAC5BF,GAAMrvP,UAAUwB,IAAMguP,GACtBH,GAAMrvP,UAAU2oB,IAAM8mO,GACtBJ,GAAMrvP,UAAUyoB,IAAMinO,GA8btB,IAAIqB,GAAWoC,GAAeC,IAU1BC,GAAgBF,GAAeG,IAAiB,GAWpD,SAASC,GAAUjzE,EAAY0lE,GAC7B,IAAIthP,GAAS,EAKb,OAJAqsP,GAASzwE,GAAY,SAASl8K,EAAOguC,EAAOkuI,GAE1C,OADA57K,IAAWshP,EAAU5hP,EAAOguC,EAAOkuI,GAC5B57K,KAEFA,EAaT,SAAS8uP,GAAaz0N,EAAOs5M,EAAUiO,GACrC,IAAIl0M,GAAS,EACTjxC,EAAS49B,EAAM59B,OAEnB,QAASixC,EAAQjxC,EAAQ,CACvB,IAAIiD,EAAQ26B,EAAMqT,GACdrgB,EAAUsmN,EAASj0O,GAEvB,GAAe,MAAX2tB,IAAoB67N,IAAa5nN,EAC5BjU,IAAYA,IAAYgoJ,GAAShoJ,GAClCu0N,EAAWv0N,EAAS67N,IAE1B,IAAIA,EAAW77N,EACXrtB,EAASN,EAGjB,OAAOM,EAaT,SAAS+uP,GAAS10N,EAAO36B,EAAO6iF,EAAOC,GACrC,IAAI/lF,EAAS49B,EAAM59B,OAEnB8lF,EAAQysK,GAAUzsK,GACdA,EAAQ,IACVA,GAASA,EAAQ9lF,EAAS,EAAKA,EAAS8lF,GAE1CC,EAAOA,IAAQlhD,GAAakhD,EAAM/lF,EAAUA,EAASuyP,GAAUxsK,GAC3DA,EAAM,IACRA,GAAO/lF,GAET+lF,EAAMD,EAAQC,EAAM,EAAI6lF,GAAS7lF,GACjC,MAAOD,EAAQC,EACbnoD,EAAMkoD,KAAW7iF,EAEnB,OAAO26B,EAWT,SAAS40N,GAAWrzE,EAAY0lE,GAC9B,IAAIthP,EAAS,GAMb,OALAqsP,GAASzwE,GAAY,SAASl8K,EAAOguC,EAAOkuI,GACtC0lE,EAAU5hP,EAAOguC,EAAOkuI,IAC1B57K,EAAOoB,KAAK1B,MAGTM,EAcT,SAASkvP,GAAY70N,EAAO0oI,EAAOu+E,EAAW6N,EAAUnvP,GACtD,IAAI0tC,GAAS,EACTjxC,EAAS49B,EAAM59B,OAEnB6kP,IAAcA,EAAY8N,IAC1BpvP,IAAWA,EAAS,IAEpB,QAAS0tC,EAAQjxC,EAAQ,CACvB,IAAIiD,EAAQ26B,EAAMqT,GACdq1H,EAAQ,GAAKu+E,EAAU5hP,GACrBqjK,EAAQ,EAEVmsF,GAAYxvP,EAAOqjK,EAAQ,EAAGu+E,EAAW6N,EAAUnvP,GAEnD8/L,GAAU9/L,EAAQN,GAEVyvP,IACVnvP,EAAOA,EAAOvD,QAAUiD,GAG5B,OAAOM,EAcT,IAAIqvP,GAAUC,KAYVC,GAAeD,IAAc,GAUjC,SAASZ,GAAWz6J,EAAQ0/I,GAC1B,OAAO1/I,GAAUo7J,GAAQp7J,EAAQ0/I,EAAU11O,IAW7C,SAAS2wP,GAAgB36J,EAAQ0/I,GAC/B,OAAO1/I,GAAUs7J,GAAat7J,EAAQ0/I,EAAU11O,IAYlD,SAASuxP,GAAcv7J,EAAQ48B,GAC7B,OAAO0wH,GAAY1wH,GAAO,SAAS75G,GACjC,OAAOk0E,GAAW+I,EAAOj9E,OAY7B,SAASy4O,GAAQx7J,EAAQzL,GACvBA,EAAOknK,GAASlnK,EAAMyL,GAEtB,IAAIvmD,EAAQ,EACRjxC,EAAS+rF,EAAK/rF,OAElB,MAAiB,MAAVw3F,GAAkBvmD,EAAQjxC,EAC/Bw3F,EAASA,EAAO07J,GAAMnnK,EAAK96C,OAE7B,OAAQA,GAASA,GAASjxC,EAAUw3F,EAAS3yD,EAc/C,SAASsuN,GAAe37J,EAAQ65J,EAAU+B,GACxC,IAAI7vP,EAAS8tP,EAAS75J,GACtB,OAAOxjB,GAAQwjB,GAAUj0F,EAAS8/L,GAAU9/L,EAAQ6vP,EAAY57J,IAUlE,SAASugJ,GAAW90O,GAClB,OAAa,MAATA,EACKA,IAAU4hC,EAAY+yM,GAAeD,GAEtCE,IAAkBA,MAAkB35O,GAAO+E,GAC/Cw0O,GAAUx0O,GACVy0O,GAAez0O,GAYrB,SAASowP,GAAOpwP,EAAOqwP,GACrB,OAAOrwP,EAAQqwP,EAWjB,SAASC,GAAQ/7J,EAAQj9E,GACvB,OAAiB,MAAVi9E,GAAkB/4F,GAAea,KAAKk4F,EAAQj9E,GAWvD,SAASi5O,GAAUh8J,EAAQj9E,GACzB,OAAiB,MAAVi9E,GAAkBj9E,KAAOrc,GAAOs5F,GAYzC,SAASi8J,GAAYzuJ,EAAQlf,EAAOC,GAClC,OAAOif,GAAUykJ,GAAU3jK,EAAOC,IAAQif,EAASwkJ,GAAU1jK,EAAOC,GAatE,SAAS2tK,GAAiBC,EAAQzc,EAAUiO,GAC1C,IAAI3tK,EAAW2tK,EAAaD,GAAoBF,GAC5ChlP,EAAS2zP,EAAO,GAAG3zP,OACnB4zP,EAAYD,EAAO3zP,OACnB6zP,EAAWD,EACXE,EAASz1P,EAAMu1P,GACfl1K,EAAYwvF,IACZ3qK,EAAS,GAEb,MAAOswP,IAAY,CACjB,IAAIj2N,EAAQ+1N,EAAOE,GACfA,GAAY3c,IACdt5M,EAAQq5M,GAASr5M,EAAO4oN,GAAUtP,KAEpCx4J,EAAY+qK,GAAU7rN,EAAM59B,OAAQ0+E,GACpCo1K,EAAOD,IAAa1O,IAAejO,GAAal3O,GAAU,KAAO49B,EAAM59B,QAAU,KAC7E,IAAI+tP,GAAS8F,GAAYj2N,GACzBiH,EAENjH,EAAQ+1N,EAAO,GAEf,IAAI1iN,GAAS,EACT8iN,EAAOD,EAAO,GAElBvH,EACA,QAASt7M,EAAQjxC,GAAUuD,EAAOvD,OAAS0+E,EAAW,CACpD,IAAIz7E,EAAQ26B,EAAMqT,GACdw7M,EAAWvV,EAAWA,EAASj0O,GAASA,EAG5C,GADAA,EAASkiP,GAAwB,IAAVliP,EAAeA,EAAQ,IACxC8wP,EACErN,GAASqN,EAAMtH,GACfj1K,EAASj0E,EAAQkpP,EAAUtH,IAC5B,CACL0O,EAAWD,EACX,QAASC,EAAU,CACjB,IAAIzsO,EAAQ0sO,EAAOD,GACnB,KAAMzsO,EACEs/N,GAASt/N,EAAOqlO,GAChBj1K,EAASm8K,EAAOE,GAAWpH,EAAUtH,IAE3C,SAASoH,EAGTwH,GACFA,EAAKpvP,KAAK8nP,GAEZlpP,EAAOoB,KAAK1B,IAGhB,OAAOM,EAcT,SAASywP,GAAax8J,EAAQwoE,EAAQk3E,EAAUE,GAI9C,OAHA6a,GAAWz6J,GAAQ,SAASv0F,EAAOsX,EAAKi9E,GACtCwoE,EAAOo3E,EAAaF,EAASj0O,GAAQsX,EAAKi9E,MAErC4/I,EAaT,SAAS6c,GAAWz8J,EAAQzL,EAAMgF,GAChChF,EAAOknK,GAASlnK,EAAMyL,GACtBA,EAASh6C,GAAOg6C,EAAQzL,GACxB,IAAI2B,EAAiB,MAAV8J,EAAiBA,EAASA,EAAO07J,GAAM/2F,GAAKpwE,KACvD,OAAe,MAAR2B,EAAe7oD,EAAYniC,GAAMgrF,EAAM8J,EAAQzG,GAUxD,SAASmjK,GAAgBjxP,GACvB,OAAO65O,GAAa75O,IAAU80O,GAAW90O,IAAUk8O,EAUrD,SAASgV,GAAkBlxP,GACzB,OAAO65O,GAAa75O,IAAU80O,GAAW90O,IAAUq9O,GAUrD,SAAS8T,GAAWnxP,GAClB,OAAO65O,GAAa75O,IAAU80O,GAAW90O,IAAUs8O,EAiBrD,SAAS8U,GAAYpxP,EAAOqwP,EAAOhD,EAASC,EAAY54J,GACtD,OAAI10F,IAAUqwP,IAGD,MAATrwP,GAA0B,MAATqwP,IAAmBxW,GAAa75O,KAAW65O,GAAawW,GACpErwP,IAAUA,GAASqwP,IAAUA,EAE/BgB,GAAgBrxP,EAAOqwP,EAAOhD,EAASC,EAAY8D,GAAa18J,IAiBzE,SAAS28J,GAAgB98J,EAAQ87J,EAAOhD,EAASC,EAAYgE,EAAW58J,GACtE,IAAI68J,EAAWxgL,GAAQwjB,GACnBi9J,EAAWzgL,GAAQs/K,GACnBoB,EAASF,EAAWpV,EAAWwR,GAAOp5J,GACtCm9J,EAASF,EAAWrV,EAAWwR,GAAO0C,GAE1CoB,EAASA,GAAUvV,EAAUW,GAAY4U,EACzCC,EAASA,GAAUxV,EAAUW,GAAY6U,EAEzC,IAAIC,EAAWF,GAAU5U,GACrB+U,EAAWF,GAAU7U,GACrBgV,EAAYJ,GAAUC,EAE1B,GAAIG,GAAa9jG,GAASx5D,GAAS,CACjC,IAAKw5D,GAASsiG,GACZ,OAAO,EAETkB,GAAW,EACXI,GAAW,EAEb,GAAIE,IAAcF,EAEhB,OADAj9J,IAAUA,EAAQ,IAAIu2J,IACdsG,GAAY1hG,GAAat7D,GAC7Bu9J,GAAYv9J,EAAQ87J,EAAOhD,EAASC,EAAYgE,EAAW58J,GAC3Dq9J,GAAWx9J,EAAQ87J,EAAOoB,EAAQpE,EAASC,EAAYgE,EAAW58J,GAExE,KAAM24J,EAAU5S,GAAuB,CACrC,IAAIuX,EAAeL,GAAYn2P,GAAea,KAAKk4F,EAAQ,eACvD09J,EAAeL,GAAYp2P,GAAea,KAAKg0P,EAAO,eAE1D,GAAI2B,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAez9J,EAAOv0F,QAAUu0F,EAC/C49J,EAAeF,EAAe5B,EAAMrwP,QAAUqwP,EAGlD,OADA37J,IAAUA,EAAQ,IAAIu2J,IACfqG,EAAUY,EAAcC,EAAc9E,EAASC,EAAY54J,IAGtE,QAAKm9J,IAGLn9J,IAAUA,EAAQ,IAAIu2J,IACfmH,GAAa79J,EAAQ87J,EAAOhD,EAASC,EAAYgE,EAAW58J,IAUrE,SAAS29J,GAAUryP,GACjB,OAAO65O,GAAa75O,IAAU2tP,GAAO3tP,IAAU28O,EAajD,SAAS2V,GAAY/9J,EAAQvyB,EAAQuwL,EAAWjF,GAC9C,IAAIt/M,EAAQukN,EAAUx1P,OAClBA,EAASixC,EACTwkN,GAAgBlF,EAEpB,GAAc,MAAV/4J,EACF,OAAQx3F,EAEVw3F,EAASt5F,GAAOs5F,GAChB,MAAOvmD,IAAS,CACd,IAAIliC,EAAOymP,EAAUvkN,GACrB,GAAKwkN,GAAgB1mP,EAAK,GAClBA,EAAK,KAAOyoF,EAAOzoF,EAAK,MACtBA,EAAK,KAAMyoF,GAEnB,OAAO,EAGX,QAASvmD,EAAQjxC,EAAQ,CACvB+O,EAAOymP,EAAUvkN,GACjB,IAAI12B,EAAMxL,EAAK,GACX2gP,EAAWl4J,EAAOj9E,GAClBm7O,EAAW3mP,EAAK,GAEpB,GAAI0mP,GAAgB1mP,EAAK,IACvB,GAAI2gP,IAAa7qN,KAAetqB,KAAOi9E,GACrC,OAAO,MAEJ,CACL,IAAIG,EAAQ,IAAIu2J,GAChB,GAAIqC,EACF,IAAIhtP,EAASgtP,EAAWb,EAAUgG,EAAUn7O,EAAKi9E,EAAQvyB,EAAQ0yB,GAEnE,KAAMp0F,IAAWshC,EACTwvN,GAAYqB,EAAUhG,EAAUhS,EAAuBC,EAAwB4S,EAAY54J,GAC3Fp0F,GAEN,OAAO,GAIb,OAAO,EAWT,SAASoyP,GAAa1yP,GACpB,IAAK00E,GAAS10E,IAAU2yP,GAAS3yP,GAC/B,OAAO,EAET,IAAI+X,EAAUyzE,GAAWxrF,GAASslP,GAAa5F,GAC/C,OAAO3nO,EAAQ/M,KAAKk8O,GAASlnP,IAU/B,SAAS4yP,GAAa5yP,GACpB,OAAO65O,GAAa75O,IAAU80O,GAAW90O,IAAUg9O,GAUrD,SAAS6V,GAAU7yP,GACjB,OAAO65O,GAAa75O,IAAU2tP,GAAO3tP,IAAUi9O,GAUjD,SAAS6V,GAAiB9yP,GACxB,OAAO65O,GAAa75O,IAClB+yP,GAAS/yP,EAAMjD,WAAakjP,GAAenL,GAAW90O,IAU1D,SAASgzP,GAAahzP,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACKizP,GAEW,iBAATjzP,EACF+wE,GAAQ/wE,GACXkzP,GAAoBlzP,EAAM,GAAIA,EAAM,IACpCmzP,GAAYnzP,GAEX0yF,GAAS1yF,GAUlB,SAASozP,GAAS7+J,GAChB,IAAK8+J,GAAY9+J,GACf,OAAO2pF,GAAW3pF,GAEpB,IAAIj0F,EAAS,GACb,IAAK,IAAIgX,KAAOrc,GAAOs5F,GACjB/4F,GAAea,KAAKk4F,EAAQj9E,IAAe,eAAPA,GACtChX,EAAOoB,KAAK4V,GAGhB,OAAOhX,EAUT,SAASgzP,GAAW/+J,GAClB,IAAK7f,GAAS6f,GACZ,OAAOg/J,GAAah/J,GAEtB,IAAIi/J,EAAUH,GAAY9+J,GACtBj0F,EAAS,GAEb,IAAK,IAAIgX,KAAOi9E,GACD,eAAPj9E,IAAyBk8O,GAAYh4P,GAAea,KAAKk4F,EAAQj9E,KACrEhX,EAAOoB,KAAK4V,GAGhB,OAAOhX,EAYT,SAASmzP,GAAOzzP,EAAOqwP,GACrB,OAAOrwP,EAAQqwP,EAWjB,SAASqD,GAAQx3E,EAAY+3D,GAC3B,IAAIjmM,GAAS,EACT1tC,EAASqzP,GAAYz3E,GAAc9gL,EAAM8gL,EAAWn/K,QAAU,GAKlE,OAHA4vP,GAASzwE,GAAY,SAASl8K,EAAOsX,EAAK4kK,GACxC57K,IAAS0tC,GAASimM,EAASj0O,EAAOsX,EAAK4kK,MAElC57K,EAUT,SAAS6yP,GAAYnxL,GACnB,IAAIuwL,EAAYqB,GAAa5xL,GAC7B,OAAwB,GAApBuwL,EAAUx1P,QAAew1P,EAAU,GAAG,GACjCsB,GAAwBtB,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAASh+J,GACd,OAAOA,IAAWvyB,GAAUswL,GAAY/9J,EAAQvyB,EAAQuwL,IAY5D,SAASW,GAAoBpqK,EAAM2pK,GACjC,OAAIqB,GAAMhrK,IAASirK,GAAmBtB,GAC7BoB,GAAwB5D,GAAMnnK,GAAO2pK,GAEvC,SAASl+J,GACd,IAAIk4J,EAAWrvP,GAAIm3F,EAAQzL,GAC3B,OAAQ2jK,IAAa7qN,GAAa6qN,IAAagG,EAC3CuB,GAAMz/J,EAAQzL,GACdsoK,GAAYqB,EAAUhG,EAAUhS,EAAuBC,IAe/D,SAASuZ,GAAU1/J,EAAQvyB,EAAQkyL,EAAU5G,EAAY54J,GACnDH,IAAWvyB,GAGf2tL,GAAQ3tL,GAAQ,SAASywL,EAAUn7O,GAEjC,GADAo9E,IAAUA,EAAQ,IAAIu2J,IAClBv2K,GAAS+9K,GACX0B,GAAc5/J,EAAQvyB,EAAQ1qD,EAAK48O,EAAUD,GAAW3G,EAAY54J,OAEjE,CACH,IAAIj1C,EAAW6tM,EACXA,EAAW8G,GAAQ7/J,EAAQj9E,GAAMm7O,EAAWn7O,EAAM,GAAKi9E,EAAQvyB,EAAQ0yB,GACvE9yD,EAEA6d,IAAa7d,IACf6d,EAAWgzM,GAEbnG,GAAiB/3J,EAAQj9E,EAAKmoC,MAE/BstM,IAkBL,SAASoH,GAAc5/J,EAAQvyB,EAAQ1qD,EAAK48O,EAAUG,EAAW/G,EAAY54J,GAC3E,IAAI+3J,EAAW2H,GAAQ7/J,EAAQj9E,GAC3Bm7O,EAAW2B,GAAQpyL,EAAQ1qD,GAC3B42O,EAAUx5J,EAAMt3F,IAAIq1P,GAExB,GAAIvE,EACF5B,GAAiB/3J,EAAQj9E,EAAK42O,OADhC,CAIA,IAAIzuM,EAAW6tM,EACXA,EAAWb,EAAUgG,EAAWn7O,EAAM,GAAKi9E,EAAQvyB,EAAQ0yB,GAC3D9yD,EAEA+sN,EAAWlvM,IAAa7d,EAE5B,GAAI+sN,EAAU,CACZ,IAAI9F,EAAQ93K,GAAQ0hL,GAChB7G,GAAU/C,GAAS96F,GAAS0kG,GAC5B6B,GAAWzL,IAAU+C,GAAU/7F,GAAa4iG,GAEhDhzM,EAAWgzM,EACP5J,GAAS+C,GAAU0I,EACjBvjL,GAAQ07K,GACVhtM,EAAWgtM,EAEJ8H,GAAkB9H,GACzBhtM,EAAWgpM,GAAUgE,GAEdb,GACP+C,GAAW,EACXlvM,EAAWouM,GAAY4E,GAAU,IAE1B6B,GACP3F,GAAW,EACXlvM,EAAW+0M,GAAgB/B,GAAU,IAGrChzM,EAAW,GAGNk8C,GAAc82J,IAAa9G,GAAY8G,IAC9ChzM,EAAWgtM,EACPd,GAAYc,GACdhtM,EAAWg1M,GAAchI,GAEjB/3K,GAAS+3K,KAAajhK,GAAWihK,KACzChtM,EAAWquM,GAAgB2E,KAI7B9D,GAAW,EAGXA,IAEFj6J,EAAMrwE,IAAIouO,EAAUhzM,GACpB40M,EAAU50M,EAAUgzM,EAAUyB,EAAU5G,EAAY54J,GACpDA,EAAM,UAAU+9J,IAElBnG,GAAiB/3J,EAAQj9E,EAAKmoC,IAWhC,SAASi1M,GAAQ/5N,EAAO99B,GACtB,IAAIE,EAAS49B,EAAM59B,OACnB,GAAKA,EAIL,OADAF,GAAKA,EAAI,EAAIE,EAAS,EACfgvP,GAAQlvP,EAAGE,GAAU49B,EAAM99B,GAAK+kC,EAYzC,SAAS+yN,GAAYz4E,EAAYgtE,EAAW0L,GAExC1L,EADEA,EAAUnsP,OACAi3O,GAASkV,GAAW,SAASjV,GACvC,OAAIljK,GAAQkjK,GACH,SAASj0O,GACd,OAAO+vP,GAAQ/vP,EAA2B,IAApBi0O,EAASl3O,OAAek3O,EAAS,GAAKA,IAGzDA,KAGG,CAACgf,IAGf,IAAIjlN,GAAS,EACbk7M,EAAYlV,GAASkV,EAAW3F,GAAUsR,OAE1C,IAAIv0P,EAASozP,GAAQx3E,GAAY,SAASl8K,EAAOsX,EAAK4kK,GACpD,IAAI44E,EAAW9gB,GAASkV,GAAW,SAASjV,GAC1C,OAAOA,EAASj0O,MAElB,MAAO,CAAE,SAAY80P,EAAU,QAAW9mN,EAAO,MAAShuC,MAG5D,OAAOijP,GAAW3iP,GAAQ,SAASi0F,EAAQ87J,GACzC,OAAO0E,GAAgBxgK,EAAQ87J,EAAOuE,MAa1C,SAASI,GAASzgK,EAAQ04J,GACxB,OAAOgI,GAAW1gK,EAAQ04J,GAAO,SAASjtP,EAAO8oF,GAC/C,OAAOkrK,GAAMz/J,EAAQzL,MAazB,SAASmsK,GAAW1gK,EAAQ04J,EAAOrL,GACjC,IAAI5zM,GAAS,EACTjxC,EAASkwP,EAAMlwP,OACfuD,EAAS,GAEb,QAAS0tC,EAAQjxC,EAAQ,CACvB,IAAI+rF,EAAOmkK,EAAMj/M,GACbhuC,EAAQ+vP,GAAQx7J,EAAQzL,GAExB84J,EAAU5hP,EAAO8oF,IACnBosK,GAAQ50P,EAAQ0vP,GAASlnK,EAAMyL,GAASv0F,GAG5C,OAAOM,EAUT,SAAS60P,GAAiBrsK,GACxB,OAAO,SAASyL,GACd,OAAOw7J,GAAQx7J,EAAQzL,IAe3B,SAASssK,GAAYz6N,EAAOmT,EAAQmmM,EAAUiO,GAC5C,IAAItrO,EAAUsrO,EAAaW,GAAkBb,GACzCh0M,GAAS,EACTjxC,EAAS+wC,EAAO/wC,OAChB+zP,EAAOn2N,EAEPA,IAAUmT,IACZA,EAAS26M,GAAU36M,IAEjBmmM,IACF6c,EAAO9c,GAASr5M,EAAO4oN,GAAUtP,KAEnC,QAASjmM,EAAQjxC,EAAQ,CACvB,IAAI0/F,EAAY,EACZz8F,EAAQ8tC,EAAOE,GACfw7M,EAAWvV,EAAWA,EAASj0O,GAASA,EAE5C,OAAQy8F,EAAY7lF,EAAQk6O,EAAMtH,EAAU/sJ,EAAWylJ,KAAgB,EACjE4O,IAASn2N,GACXuxE,GAAO7vG,KAAKy0P,EAAMr0J,EAAW,GAE/ByP,GAAO7vG,KAAKs+B,EAAO8hE,EAAW,GAGlC,OAAO9hE,EAYT,SAAS06N,GAAW16N,EAAOi1M,GACzB,IAAI7yO,EAAS49B,EAAQi1M,EAAQ7yO,OAAS,EAClC20J,EAAY30J,EAAS,EAEzB,MAAOA,IAAU,CACf,IAAIixC,EAAQ4hM,EAAQ7yO,GACpB,GAAIA,GAAU20J,GAAa1jH,IAAUtgB,EAAU,CAC7C,IAAIA,EAAWsgB,EACX+9M,GAAQ/9M,GACVk+D,GAAO7vG,KAAKs+B,EAAOqT,EAAO,GAE1BsnN,GAAU36N,EAAOqT,IAIvB,OAAOrT,EAYT,SAASsxN,GAAWxZ,EAAO0a,GACzB,OAAO1a,EAAQwT,GAAYU,MAAkBwG,EAAQ1a,EAAQ,IAc/D,SAAS8iB,GAAU1yK,EAAOC,EAAK5iF,EAAMwiP,GACnC,IAAI10M,GAAS,EACTjxC,EAASwpP,GAAUP,IAAYljK,EAAMD,IAAU3iF,GAAQ,IAAK,GAC5DI,EAASlF,EAAM2B,GAEnB,MAAOA,IACLuD,EAAOoiP,EAAY3lP,IAAWixC,GAAS60C,EACvCA,GAAS3iF,EAEX,OAAOI,EAWT,SAASk1P,GAAWz5F,EAAQl/J,GAC1B,IAAIyD,EAAS,GACb,IAAKy7J,GAAUl/J,EAAI,GAAKA,EAAI+hK,EAC1B,OAAOt+J,EAIT,GACMzD,EAAI,IACNyD,GAAUy7J,GAEZl/J,EAAIopP,GAAYppP,EAAI,GAChBA,IACFk/J,GAAUA,SAELl/J,GAET,OAAOyD,EAWT,SAASm1P,GAAShrK,EAAM5H,GACtB,OAAO6yK,GAAYC,GAASlrK,EAAM5H,EAAOowK,IAAWxoK,EAAO,IAU7D,SAASmrK,GAAW15E,GAClB,OAAO8vE,GAAYl+M,GAAOouI,IAW5B,SAAS25E,GAAe35E,EAAYr/K,GAClC,IAAI89B,EAAQmT,GAAOouI,GACnB,OAAOiwE,GAAYxxN,EAAOyxN,GAAUvvP,EAAG,EAAG89B,EAAM59B,SAalD,SAASm4P,GAAQ3gK,EAAQzL,EAAM9oF,EAAOstP,GACpC,IAAK54K,GAAS6f,GACZ,OAAOA,EAETzL,EAAOknK,GAASlnK,EAAMyL,GAEtB,IAAIvmD,GAAS,EACTjxC,EAAS+rF,EAAK/rF,OACd20J,EAAY30J,EAAS,EACrB+4P,EAASvhK,EAEb,MAAiB,MAAVuhK,KAAoB9nN,EAAQjxC,EAAQ,CACzC,IAAIua,EAAM24O,GAAMnnK,EAAK96C,IACjByR,EAAWz/C,EAEf,GAAY,cAARsX,GAA+B,gBAARA,GAAiC,cAARA,EAClD,OAAOi9E,EAGT,GAAIvmD,GAAS0jH,EAAW,CACtB,IAAI+6F,EAAWqJ,EAAOx+O,GACtBmoC,EAAW6tM,EAAaA,EAAWb,EAAUn1O,EAAKw+O,GAAUl0N,EACxD6d,IAAa7d,IACf6d,EAAWi1B,GAAS+3K,GAChBA,EACCV,GAAQjjK,EAAK96C,EAAQ,IAAM,GAAK,IAGzCkjH,GAAY4kG,EAAQx+O,EAAKmoC,GACzBq2M,EAASA,EAAOx+O,GAElB,OAAOi9E,EAWT,IAAIwhK,GAAehP,GAAqB,SAASt8J,EAAM3+E,GAErD,OADAi7O,GAAQ1iO,IAAIomE,EAAM3+E,GACX2+E,GAFoBwoK,GAazB+C,GAAmBlsN,GAA4B,SAAS2gD,EAAMsxE,GAChE,OAAOjyH,GAAe2gD,EAAM,WAAY,CACtC,cAAgB,EAChB,YAAc,EACd,MAASwrK,GAASl6F,GAClB,UAAY,KALwBk3F,GAgBxC,SAASiD,GAAYh6E,GACnB,OAAOiwE,GAAYr+M,GAAOouI,IAY5B,SAAS84D,GAAUr6M,EAAOkoD,EAAOC,GAC/B,IAAI90C,GAAS,EACTjxC,EAAS49B,EAAM59B,OAEf8lF,EAAQ,IACVA,GAASA,EAAQ9lF,EAAS,EAAKA,EAAS8lF,GAE1CC,EAAMA,EAAM/lF,EAASA,EAAS+lF,EAC1BA,EAAM,IACRA,GAAO/lF,GAETA,EAAS8lF,EAAQC,EAAM,EAAMA,EAAMD,IAAW,EAC9CA,KAAW,EAEX,IAAIviF,EAASlF,EAAM2B,GACnB,QAASixC,EAAQjxC,EACfuD,EAAO0tC,GAASrT,EAAMqT,EAAQ60C,GAEhC,OAAOviF,EAYT,SAAS61P,GAASj6E,EAAY0lE,GAC5B,IAAIthP,EAMJ,OAJAqsP,GAASzwE,GAAY,SAASl8K,EAAOguC,EAAOkuI,GAE1C,OADA57K,EAASshP,EAAU5hP,EAAOguC,EAAOkuI,IACzB57K,OAEDA,EAeX,SAAS81P,GAAgBz7N,EAAO36B,EAAOq2P,GACrC,IAAI56E,EAAM,EACN66E,EAAgB,MAAT37N,EAAgB8gJ,EAAM9gJ,EAAM59B,OAEvC,GAAoB,iBAATiD,GAAqBA,IAAUA,GAASs2P,GAAQta,EAAuB,CAChF,MAAOvgE,EAAM66E,EAAM,CACjB,IAAIC,EAAO96E,EAAM66E,IAAU,EACvB9M,EAAW7uN,EAAM47N,GAEJ,OAAb/M,IAAsB7zE,GAAS6zE,KAC9B6M,EAAc7M,GAAYxpP,EAAUwpP,EAAWxpP,GAClDy7K,EAAM86E,EAAM,EAEZD,EAAOC,EAGX,OAAOD,EAET,OAAOE,GAAkB77N,EAAO36B,EAAOizP,GAAUoD,GAgBnD,SAASG,GAAkB77N,EAAO36B,EAAOi0O,EAAUoiB,GACjD,IAAI56E,EAAM,EACN66E,EAAgB,MAAT37N,EAAgB,EAAIA,EAAM59B,OACrC,GAAa,IAATu5P,EACF,OAAO,EAGTt2P,EAAQi0O,EAASj0O,GACjB,IAAIy2P,EAAWz2P,IAAUA,EACrB02P,EAAsB,OAAV12P,EACZ22P,EAAchhF,GAAS31K,GACvB42P,EAAiB52P,IAAU4hC,EAE/B,MAAO65I,EAAM66E,EAAM,CACjB,IAAIC,EAAMtQ,IAAaxqE,EAAM66E,GAAQ,GACjC9M,EAAWvV,EAASt5M,EAAM47N,IAC1BM,EAAerN,IAAa5nN,EAC5Bk1N,EAAyB,OAAbtN,EACZuN,EAAiBvN,IAAaA,EAC9BwN,EAAcrhF,GAAS6zE,GAE3B,GAAIiN,EACF,IAAIQ,EAASZ,GAAcU,OAE3BE,EADSL,EACAG,IAAmBV,GAAcQ,GACjCH,EACAK,GAAkBF,IAAiBR,IAAeS,GAClDH,EACAI,GAAkBF,IAAiBC,IAAcT,IAAeW,IAChEF,IAAaE,IAGbX,EAAc7M,GAAYxpP,EAAUwpP,EAAWxpP,GAEtDi3P,EACFx7E,EAAM86E,EAAM,EAEZD,EAAOC,EAGX,OAAO/P,GAAU8P,EAAMva,GAYzB,SAASmb,GAAev8N,EAAOs5M,GAC7B,IAAIjmM,GAAS,EACTjxC,EAAS49B,EAAM59B,OACf+kP,EAAW,EACXxhP,EAAS,GAEb,QAAS0tC,EAAQjxC,EAAQ,CACvB,IAAIiD,EAAQ26B,EAAMqT,GACdw7M,EAAWvV,EAAWA,EAASj0O,GAASA,EAE5C,IAAKguC,IAAUu+M,GAAG/C,EAAUsH,GAAO,CACjC,IAAIA,EAAOtH,EACXlpP,EAAOwhP,KAAwB,IAAV9hP,EAAc,EAAIA,GAG3C,OAAOM,EAWT,SAAS62P,GAAan3P,GACpB,MAAoB,iBAATA,EACFA,EAEL21K,GAAS31K,GACJ67O,GAED77O,EAWV,SAASm1O,GAAan1O,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI+wE,GAAQ/wE,GAEV,OAAOg0O,GAASh0O,EAAOm1O,IAAgB,GAEzC,GAAIx/D,GAAS31K,GACX,OAAO0oL,GAAiBA,GAAersL,KAAK2D,GAAS,GAEvD,IAAIM,EAAUN,EAAQ,GACtB,MAAkB,KAAVM,GAAkB,EAAIN,IAAWi1O,EAAY,KAAO30O,EAY9D,SAAS82P,GAASz8N,EAAOs5M,EAAUiO,GACjC,IAAIl0M,GAAS,EACTumC,EAAWwtK,GACXhlP,EAAS49B,EAAM59B,OACf4xP,GAAW,EACXruP,EAAS,GACTwwP,EAAOxwP,EAEX,GAAI4hP,EACFyM,GAAW,EACXp6K,EAAW0tK,QAER,GAAIllP,GAAUg9O,EAAkB,CACnC,IAAI11N,EAAM4vN,EAAW,KAAOojB,GAAU18N,GACtC,GAAItW,EACF,OAAOigO,GAAWjgO,GAEpBsqO,GAAW,EACXp6K,EAAWkvK,GACXqN,EAAO,IAAIhG,QAGXgG,EAAO7c,EAAW,GAAK3zO,EAEzBgpP,EACA,QAASt7M,EAAQjxC,EAAQ,CACvB,IAAIiD,EAAQ26B,EAAMqT,GACdw7M,EAAWvV,EAAWA,EAASj0O,GAASA,EAG5C,GADAA,EAASkiP,GAAwB,IAAVliP,EAAeA,EAAQ,EAC1C2uP,GAAYnF,IAAaA,EAAU,CACrC,IAAI8N,EAAYxG,EAAK/zP,OACrB,MAAOu6P,IACL,GAAIxG,EAAKwG,KAAe9N,EACtB,SAASF,EAGTrV,GACF6c,EAAKpvP,KAAK8nP,GAEZlpP,EAAOoB,KAAK1B,QAEJu0E,EAASu8K,EAAMtH,EAAUtH,KAC7B4O,IAASxwP,GACXwwP,EAAKpvP,KAAK8nP,GAEZlpP,EAAOoB,KAAK1B,IAGhB,OAAOM,EAWT,SAASg1P,GAAU/gK,EAAQzL,GAGzB,OAFAA,EAAOknK,GAASlnK,EAAMyL,GACtBA,EAASh6C,GAAOg6C,EAAQzL,GACP,MAAVyL,UAAyBA,EAAO07J,GAAM/2F,GAAKpwE,KAapD,SAASyuK,GAAWhjK,EAAQzL,EAAM0uK,EAASlK,GACzC,OAAO4H,GAAQ3gK,EAAQzL,EAAM0uK,EAAQzH,GAAQx7J,EAAQzL,IAAQwkK,GAc/D,SAASmK,GAAU98N,EAAOinN,EAAW8V,EAAQhV,GAC3C,IAAI3lP,EAAS49B,EAAM59B,OACfixC,EAAQ00M,EAAY3lP,GAAU,EAElC,OAAQ2lP,EAAY10M,MAAYA,EAAQjxC,IACtC6kP,EAAUjnN,EAAMqT,GAAQA,EAAOrT,IAEjC,OAAO+8N,EACH1iB,GAAUr6M,EAAQ+nN,EAAY,EAAI10M,EAAS00M,EAAY10M,EAAQ,EAAIjxC,GACnEi4O,GAAUr6M,EAAQ+nN,EAAY10M,EAAQ,EAAI,EAAK00M,EAAY3lP,EAASixC,GAa1E,SAASq7M,GAAiBrpP,EAAO23P,GAC/B,IAAIr3P,EAASN,EAIb,OAHIM,aAAkBknP,KACpBlnP,EAASA,EAAON,SAEXk0O,GAAYyjB,GAAS,SAASr3P,EAAQkgH,GAC3C,OAAOA,EAAO/1B,KAAKhrF,MAAM+gH,EAAO7gH,QAASygM,GAAU,CAAC9/L,GAASkgH,EAAO1yB,SACnExtF,GAaL,SAASs3P,GAAQlH,EAAQzc,EAAUiO,GACjC,IAAInlP,EAAS2zP,EAAO3zP,OACpB,GAAIA,EAAS,EACX,OAAOA,EAASq6P,GAAS1G,EAAO,IAAM,GAExC,IAAI1iN,GAAS,EACT1tC,EAASlF,EAAM2B,GAEnB,QAASixC,EAAQjxC,EAAQ,CACvB,IAAI49B,EAAQ+1N,EAAO1iN,GACf4iN,GAAY,EAEhB,QAASA,EAAW7zP,EACd6zP,GAAY5iN,IACd1tC,EAAO0tC,GAAS0gN,GAAepuP,EAAO0tC,IAAUrT,EAAO+1N,EAAOE,GAAW3c,EAAUiO,IAIzF,OAAOkV,GAAS5H,GAAYlvP,EAAQ,GAAI2zO,EAAUiO,GAYpD,SAAS2V,GAAc1mI,EAAOrjF,EAAQgqN,GACpC,IAAI9pN,GAAS,EACTjxC,EAASo0H,EAAMp0H,OACfg7P,EAAajqN,EAAO/wC,OACpBuD,EAAS,GAEb,QAAS0tC,EAAQjxC,EAAQ,CACvB,IAAIiD,EAAQguC,EAAQ+pN,EAAajqN,EAAOE,GAASpM,EACjDk2N,EAAWx3P,EAAQ6wH,EAAMnjF,GAAQhuC,GAEnC,OAAOM,EAUT,SAAS03P,GAAoBh4P,GAC3B,OAAOu0P,GAAkBv0P,GAASA,EAAQ,GAU5C,SAASi4P,GAAaj4P,GACpB,MAAuB,mBAATA,EAAsBA,EAAQizP,GAW9C,SAASjD,GAAShwP,EAAOu0F,GACvB,OAAIxjB,GAAQ/wE,GACHA,EAEF8zP,GAAM9zP,EAAOu0F,GAAU,CAACv0F,GAASk4P,GAAajuP,GAASjK,IAYhE,IAAIm4P,GAAW1C,GAWf,SAASrgB,GAAUz6M,EAAOkoD,EAAOC,GAC/B,IAAI/lF,EAAS49B,EAAM59B,OAEnB,OADA+lF,EAAMA,IAAQlhD,EAAY7kC,EAAS+lF,GAC1BD,GAASC,GAAO/lF,EAAU49B,EAAQq6M,GAAUr6M,EAAOkoD,EAAOC,GASrE,IAAI7gB,GAAe4jL,IAAmB,SAASlkN,GAC7C,OAAOwhK,GAAKlhI,aAAatgC,IAW3B,SAASksN,GAAYxjP,EAAQkjP,GAC3B,GAAIA,EACF,OAAOljP,EAAO49B,QAEhB,IAAIlrC,EAASsN,EAAOtN,OAChBuD,EAASilP,GAAcA,GAAYxoP,GAAU,IAAIsN,EAAO1O,YAAYoB,GAGxE,OADAsN,EAAO+tP,KAAK93P,GACLA,EAUT,SAAS+3P,GAAiBC,GACxB,IAAIh4P,EAAS,IAAIg4P,EAAY38P,YAAY28P,EAAYC,YAErD,OADA,IAAIjuP,GAAWhK,GAAQ+jB,IAAI,IAAI/Z,GAAWguP,IACnCh4P,EAWT,SAASk4P,GAAcxsP,EAAUuhP,GAC/B,IAAIljP,EAASkjP,EAAS8K,GAAiBrsP,EAAS3B,QAAU2B,EAAS3B,OACnE,OAAO,IAAI2B,EAASrQ,YAAY0O,EAAQ2B,EAASysP,WAAYzsP,EAASusP,YAUxE,SAASG,GAAY39H,GACnB,IAAIz6H,EAAS,IAAIy6H,EAAOp/H,YAAYo/H,EAAO/4D,OAAQu9K,GAAQxpO,KAAKglH,IAEhE,OADAz6H,EAAOoxJ,UAAY32B,EAAO22B,UACnBpxJ,EAUT,SAASq4P,GAAYnuF,GACnB,OAAOme,GAAgB1tL,GAAO0tL,GAActsL,KAAKmuK,IAAW,GAW9D,SAASgqF,GAAgBoE,EAAYrL,GACnC,IAAIljP,EAASkjP,EAAS8K,GAAiBO,EAAWvuP,QAAUuuP,EAAWvuP,OACvE,OAAO,IAAIuuP,EAAWj9P,YAAY0O,EAAQuuP,EAAWH,WAAYG,EAAW77P,QAW9E,SAAS87P,GAAiB74P,EAAOqwP,GAC/B,GAAIrwP,IAAUqwP,EAAO,CACnB,IAAIyI,EAAe94P,IAAU4hC,EACzB80N,EAAsB,OAAV12P,EACZ+4P,EAAiB/4P,IAAUA,EAC3B22P,EAAchhF,GAAS31K,GAEvB62P,EAAexG,IAAUzuN,EACzBk1N,EAAsB,OAAVzG,EACZ0G,EAAiB1G,IAAUA,EAC3B2G,EAAcrhF,GAAS06E,GAE3B,IAAMyG,IAAcE,IAAgBL,GAAe32P,EAAQqwP,GACtDsG,GAAeE,GAAgBE,IAAmBD,IAAcE,GAChEN,GAAaG,GAAgBE,IAC5B+B,GAAgB/B,IACjBgC,EACH,OAAO,EAET,IAAMrC,IAAcC,IAAgBK,GAAeh3P,EAAQqwP,GACtD2G,GAAe8B,GAAgBC,IAAmBrC,IAAcC,GAChEG,GAAagC,GAAgBC,IAC5BlC,GAAgBkC,IACjBhC,EACH,OAAQ,EAGZ,OAAO,EAiBT,SAAShC,GAAgBxgK,EAAQ87J,EAAOuE,GACtC,IAAI5mN,GAAS,EACTgrN,EAAczkK,EAAOugK,SACrBmE,EAAc5I,EAAMyE,SACpB/3P,EAASi8P,EAAYj8P,OACrBm8P,EAAetE,EAAO73P,OAE1B,QAASixC,EAAQjxC,EAAQ,CACvB,IAAIuD,EAASu4P,GAAiBG,EAAYhrN,GAAQirN,EAAYjrN,IAC9D,GAAI1tC,EAAQ,CACV,GAAI0tC,GAASkrN,EACX,OAAO54P,EAET,IAAI64P,EAAQvE,EAAO5mN,GACnB,OAAO1tC,GAAmB,QAAT64P,GAAmB,EAAI,IAU5C,OAAO5kK,EAAOvmD,MAAQqiN,EAAMriN,MAc9B,SAASorN,GAAYtrK,EAAMurK,EAAUC,EAASC,GAC5C,IAAIC,GAAa,EACbt1F,EAAap2E,EAAK/wF,OAClB08P,EAAgBH,EAAQv8P,OACxB28P,GAAa,EACbC,EAAaN,EAASt8P,OACtB68P,EAAcrT,GAAUriF,EAAau1F,EAAe,GACpDn5P,EAASlF,EAAMu+P,EAAaC,GAC5BC,GAAeN,EAEnB,QAASG,EAAYC,EACnBr5P,EAAOo5P,GAAaL,EAASK,GAE/B,QAASF,EAAYC,GACfI,GAAeL,EAAYt1F,KAC7B5jK,EAAOg5P,EAAQE,IAAc1rK,EAAK0rK,IAGtC,MAAOI,IACLt5P,EAAOo5P,KAAe5rK,EAAK0rK,KAE7B,OAAOl5P,EAcT,SAASw5P,GAAiBhsK,EAAMurK,EAAUC,EAASC,GACjD,IAAIC,GAAa,EACbt1F,EAAap2E,EAAK/wF,OAClBg9P,GAAgB,EAChBN,EAAgBH,EAAQv8P,OACxBi9P,GAAc,EACdC,EAAcZ,EAASt8P,OACvB68P,EAAcrT,GAAUriF,EAAau1F,EAAe,GACpDn5P,EAASlF,EAAMw+P,EAAcK,GAC7BJ,GAAeN,EAEnB,QAASC,EAAYI,EACnBt5P,EAAOk5P,GAAa1rK,EAAK0rK,GAE3B,IAAI51N,EAAS41N,EACb,QAASQ,EAAaC,EACpB35P,EAAOsjC,EAASo2N,GAAcX,EAASW,GAEzC,QAASD,EAAeN,GAClBI,GAAeL,EAAYt1F,KAC7B5jK,EAAOsjC,EAAS01N,EAAQS,IAAiBjsK,EAAK0rK,MAGlD,OAAOl5P,EAWT,SAASmoP,GAAUzmL,EAAQrnC,GACzB,IAAIqT,GAAS,EACTjxC,EAASilE,EAAOjlE,OAEpB49B,IAAUA,EAAQv/B,EAAM2B,IACxB,QAASixC,EAAQjxC,EACf49B,EAAMqT,GAASg0B,EAAOh0B,GAExB,OAAOrT,EAaT,SAASkyN,GAAW7qL,EAAQmvD,EAAO58B,EAAQ+4J,GACzC,IAAI4M,GAAS3lK,EACbA,IAAWA,EAAS,IAEpB,IAAIvmD,GAAS,EACTjxC,EAASo0H,EAAMp0H,OAEnB,QAASixC,EAAQjxC,EAAQ,CACvB,IAAIua,EAAM65G,EAAMnjF,GAEZyR,EAAW6tM,EACXA,EAAW/4J,EAAOj9E,GAAM0qD,EAAO1qD,GAAMA,EAAKi9E,EAAQvyB,GAClDpgC,EAEA6d,IAAa7d,IACf6d,EAAWuiB,EAAO1qD,IAEhB4iP,EACF1N,GAAgBj4J,EAAQj9E,EAAKmoC,GAE7ByxG,GAAY38D,EAAQj9E,EAAKmoC,GAG7B,OAAO80C,EAWT,SAASy5J,GAAYhsL,EAAQuyB,GAC3B,OAAOs4J,GAAW7qL,EAAQm4L,GAAWn4L,GAASuyB,GAWhD,SAASw5J,GAAc/rL,EAAQuyB,GAC7B,OAAOs4J,GAAW7qL,EAAQo4L,GAAap4L,GAASuyB,GAWlD,SAAS8lK,GAAiBt9F,EAAQ/2C,GAChC,OAAO,SAASk2D,EAAY+3D,GAC1B,IAAIxpJ,EAAO1Z,GAAQmrG,GAAcslE,GAAkBkL,GAC/CvY,EAAcnuH,EAAcA,IAAgB,GAEhD,OAAOv7B,EAAKyxF,EAAYnf,EAAQ83F,GAAY5gB,EAAU,GAAIE,IAW9D,SAASmmB,GAAeC,GACtB,OAAO9E,IAAS,SAASlhK,EAAQogC,GAC/B,IAAI3mF,GAAS,EACTjxC,EAAS43H,EAAQ53H,OACjBuwP,EAAavwP,EAAS,EAAI43H,EAAQ53H,EAAS,GAAK6kC,EAChD44N,EAAQz9P,EAAS,EAAI43H,EAAQ,GAAK/yF,EAEtC0rN,EAAciN,EAASx9P,OAAS,GAA0B,mBAAduwP,GACvCvwP,IAAUuwP,GACX1rN,EAEA44N,GAASC,GAAe9lI,EAAQ,GAAIA,EAAQ,GAAI6lI,KAClDlN,EAAavwP,EAAS,EAAI6kC,EAAY0rN,EACtCvwP,EAAS,GAEXw3F,EAASt5F,GAAOs5F,GAChB,QAASvmD,EAAQjxC,EAAQ,CACvB,IAAIilE,EAAS2yD,EAAQ3mF,GACjBg0B,GACFu4L,EAAShmK,EAAQvyB,EAAQh0B,EAAOs/M,GAGpC,OAAO/4J,KAYX,SAASw6J,GAAevM,EAAUE,GAChC,OAAO,SAASxmE,EAAY+3D,GAC1B,GAAkB,MAAd/3D,EACF,OAAOA,EAET,IAAKy3E,GAAYz3E,GACf,OAAOsmE,EAAStmE,EAAY+3D,GAE9B,IAAIl3O,EAASm/K,EAAWn/K,OACpBixC,EAAQ00M,EAAY3lP,GAAU,EAC9Bi8J,EAAW/9J,GAAOihL,GAEtB,MAAQwmE,EAAY10M,MAAYA,EAAQjxC,EACtC,IAAmD,IAA/Ck3O,EAASj7E,EAAShrH,GAAQA,EAAOgrH,GACnC,MAGJ,OAAOkjB,GAWX,SAAS0zE,GAAclN,GACrB,OAAO,SAASnuJ,EAAQ0/I,EAAUma,GAChC,IAAIpgN,GAAS,EACTgrH,EAAW/9J,GAAOs5F,GAClB48B,EAAQi9H,EAAS75J,GACjBx3F,EAASo0H,EAAMp0H,OAEnB,MAAOA,IAAU,CACf,IAAIua,EAAM65G,EAAMuxH,EAAY3lP,IAAWixC,GACvC,IAA+C,IAA3CimM,EAASj7E,EAAS1hJ,GAAMA,EAAK0hJ,GAC/B,MAGJ,OAAOzkE,GAcX,SAASmmK,GAAWjwK,EAAM4iK,EAAS1tP,GACjC,IAAIg7P,EAAStN,EAAU1S,EACnBigB,EAAOC,GAAWpwK,GAEtB,SAASouE,IACP,IAAIniF,EAAMh7E,MAAQA,OAASynM,IAAQznM,gBAAgBm9J,EAAW+hG,EAAOnwK,EACrE,OAAO/T,EAAGj3E,MAAMk7P,EAASh7P,EAAUjE,KAAMoB,WAE3C,OAAO+7J,EAUT,SAAS08E,GAAgBC,GACvB,OAAO,SAASz5E,GACdA,EAAS9xJ,GAAS8xJ,GAElB,IAAI05E,EAAaJ,GAAWt5E,GACxBu5E,GAAcv5E,GACdn6H,EAEAgqI,EAAM6pE,EACNA,EAAW,GACX15E,EAAOvqH,OAAO,GAEdkkM,EAAWD,EACXL,GAAUK,EAAY,GAAG/zN,KAAK,IAC9Bq6I,EAAO9zH,MAAM,GAEjB,OAAO2jI,EAAI4pE,KAAgBE,GAW/B,SAASK,GAAiBhoN,GACxB,OAAO,SAASguI,GACd,OAAOm4E,GAAY0B,GAAMD,GAAO55E,GAAQnvJ,QAAQkpO,GAAQ,KAAM/nN,EAAU,KAY5E,SAAS8sO,GAAWD,GAClB,OAAO,WAIL,IAAI9sK,EAAOhxF,UACX,OAAQgxF,EAAK/wF,QACX,KAAK,EAAG,OAAO,IAAI69P,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAK9sK,EAAK,IAC7B,KAAK,EAAG,OAAO,IAAI8sK,EAAK9sK,EAAK,GAAIA,EAAK,IACtC,KAAK,EAAG,OAAO,IAAI8sK,EAAK9sK,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC/C,KAAK,EAAG,OAAO,IAAI8sK,EAAK9sK,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACxD,KAAK,EAAG,OAAO,IAAI8sK,EAAK9sK,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjE,KAAK,EAAG,OAAO,IAAI8sK,EAAK9sK,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1E,KAAK,EAAG,OAAO,IAAI8sK,EAAK9sK,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAErF,IAAIgtK,EAAcnT,GAAWiT,EAAKh/P,WAC9B0E,EAASs6P,EAAKn7P,MAAMq7P,EAAahtK,GAIrC,OAAOpZ,GAASp0E,GAAUA,EAASw6P,GAavC,SAASC,GAAYtwK,EAAM4iK,EAAStkF,GAClC,IAAI6xF,EAAOC,GAAWpwK,GAEtB,SAASouE,IACP,IAAI97J,EAASD,UAAUC,OACnB+wF,EAAO1yF,EAAM2B,GACbixC,EAAQjxC,EACR+mP,EAAckX,GAAUniG,GAE5B,MAAO7qH,IACL8/C,EAAK9/C,GAASlxC,UAAUkxC,GAE1B,IAAIsrN,EAAWv8P,EAAS,GAAK+wF,EAAK,KAAOg2J,GAAeh2J,EAAK/wF,EAAS,KAAO+mP,EACzE,GACAO,GAAev2J,EAAMg2J,GAGzB,GADA/mP,GAAUu8P,EAAQv8P,OACdA,EAASgsK,EACX,OAAOkyF,GACLxwK,EAAM4iK,EAAS6N,GAAcriG,EAAQirF,YAAaliN,EAClDksD,EAAMwrK,EAAS13N,EAAWA,EAAWmnI,EAAQhsK,GAEjD,IAAI25E,EAAMh7E,MAAQA,OAASynM,IAAQznM,gBAAgBm9J,EAAW+hG,EAAOnwK,EACrE,OAAOhrF,GAAMi3E,EAAIh7E,KAAMoyF,GAEzB,OAAO+qE,EAUT,SAASsiG,GAAWC,GAClB,OAAO,SAASl/E,EAAY0lE,EAAWnlJ,GACrC,IAAIu8D,EAAW/9J,GAAOihL,GACtB,IAAKy3E,GAAYz3E,GAAa,CAC5B,IAAI+3D,EAAW4gB,GAAYjT,EAAW,GACtC1lE,EAAa39K,GAAK29K,GAClB0lE,EAAY,SAAStqO,GAAO,OAAO28N,EAASj7E,EAAS1hJ,GAAMA,EAAK0hJ,IAElE,IAAIhrH,EAAQotN,EAAcl/E,EAAY0lE,EAAWnlJ,GACjD,OAAOzuD,GAAS,EAAIgrH,EAASi7E,EAAW/3D,EAAWluI,GAASA,GAASpM,GAWzE,SAASy5N,GAAW3Y,GAClB,OAAO4Y,IAAS,SAASC,GACvB,IAAIx+P,EAASw+P,EAAMx+P,OACfixC,EAAQjxC,EACRy+P,EAAS/T,GAAc7rP,UAAU6/P,KAEjC/Y,GACF6Y,EAAM9+H,UAER,MAAOzuF,IAAS,CACd,IAAIy8C,EAAO8wK,EAAMvtN,GACjB,GAAmB,mBAARy8C,EACT,MAAM,IAAIjpF,GAAUy4O,GAEtB,GAAIuhB,IAAW3iG,GAAgC,WAArB6iG,GAAYjxK,GACpC,IAAIouE,EAAU,IAAI4uF,GAAc,IAAI,GAGxCz5M,EAAQ6qH,EAAU7qH,EAAQjxC,EAC1B,QAASixC,EAAQjxC,EAAQ,CACvB0tF,EAAO8wK,EAAMvtN,GAEb,IAAIiwD,EAAWy9J,GAAYjxK,GACvB3+E,EAAmB,WAAZmyF,EAAwB09J,GAAQlxK,GAAQ7oD,EAMjDi3H,EAJE/sJ,GAAQ8vP,GAAW9vP,EAAK,KACtBA,EAAK,KAAOovO,EAAgBJ,EAAkBE,EAAoBG,KACjErvO,EAAK,GAAG/O,QAAqB,GAAX+O,EAAK,GAElB+sJ,EAAQ6iG,GAAY5vP,EAAK,KAAKrM,MAAMo5J,EAAS/sJ,EAAK,IAElC,GAAf2+E,EAAK1tF,QAAe6+P,GAAWnxK,GACtCouE,EAAQ56D,KACR46D,EAAQ4iG,KAAKhxK,GAGrB,OAAO,WACL,IAAIqD,EAAOhxF,UACPkD,EAAQ8tF,EAAK,GAEjB,GAAI+qE,GAA0B,GAAf/qE,EAAK/wF,QAAeg0E,GAAQ/wE,GACzC,OAAO64J,EAAQgjG,MAAM77P,GAAOA,QAE9B,IAAIguC,EAAQ,EACR1tC,EAASvD,EAASw+P,EAAMvtN,GAAOvuC,MAAM/D,KAAMoyF,GAAQ9tF,EAEvD,QAASguC,EAAQjxC,EACfuD,EAASi7P,EAAMvtN,GAAO3xC,KAAKX,KAAM4E,GAEnC,OAAOA,MAwBb,SAAS46P,GAAazwK,EAAM4iK,EAAS1tP,EAAS05P,EAAUC,EAASwC,EAAeC,EAAcC,EAAQC,EAAKlzF,GACzG,IAAImzF,EAAQ7O,EAAUnS,EAClByf,EAAStN,EAAU1S,EACnBwhB,EAAY9O,EAAUzS,EACtB2e,EAAYlM,GAAWvS,EAAkBC,GACzCqhB,EAAS/O,EAAUjS,EACnBwf,EAAOuB,EAAYv6N,EAAYi5N,GAAWpwK,GAE9C,SAASouE,IACP,IAAI97J,EAASD,UAAUC,OACnB+wF,EAAO1yF,EAAM2B,GACbixC,EAAQjxC,EAEZ,MAAOixC,IACL8/C,EAAK9/C,GAASlxC,UAAUkxC,GAE1B,GAAIurN,EACF,IAAIzV,EAAckX,GAAUniG,GACxBwjG,EAAexY,GAAa/1J,EAAMg2J,GASxC,GAPIuV,IACFvrK,EAAOsrK,GAAYtrK,EAAMurK,EAAUC,EAASC,IAE1CuC,IACFhuK,EAAOgsK,GAAiBhsK,EAAMguK,EAAeC,EAAcxC,IAE7Dx8P,GAAUs/P,EACN9C,GAAax8P,EAASgsK,EAAO,CAC/B,IAAIuzF,EAAajY,GAAev2J,EAAMg2J,GACtC,OAAOmX,GACLxwK,EAAM4iK,EAAS6N,GAAcriG,EAAQirF,YAAankP,EAClDmuF,EAAMwuK,EAAYN,EAAQC,EAAKlzF,EAAQhsK,GAG3C,IAAI+9P,EAAcH,EAASh7P,EAAUjE,KACjCg7E,EAAKylL,EAAYrB,EAAYrwK,GAAQA,EAczC,OAZA1tF,EAAS+wF,EAAK/wF,OACVi/P,EACFluK,EAAOyuK,GAAQzuK,EAAMkuK,GACZI,GAAUr/P,EAAS,GAC5B+wF,EAAK2uC,UAEHy/H,GAASD,EAAMl/P,IACjB+wF,EAAK/wF,OAASk/P,GAEZvgQ,MAAQA,OAASynM,IAAQznM,gBAAgBm9J,IAC3CniF,EAAKkkL,GAAQC,GAAWnkL,IAEnBA,EAAGj3E,MAAMq7P,EAAahtK,GAE/B,OAAO+qE,EAWT,SAAS2jG,GAAez/F,EAAQ0/F,GAC9B,OAAO,SAASloK,EAAQ0/I,GACtB,OAAO8c,GAAax8J,EAAQwoE,EAAQ0/F,EAAWxoB,GAAW,KAY9D,SAASyoB,GAAoBC,EAAUvkL,GACrC,OAAO,SAASp4E,EAAOqwP,GACrB,IAAI/vP,EACJ,GAAIN,IAAU4hC,GAAayuN,IAAUzuN,EACnC,OAAOw2C,EAKT,GAHIp4E,IAAU4hC,IACZthC,EAASN,GAEPqwP,IAAUzuN,EAAW,CACvB,GAAIthC,IAAWshC,EACb,OAAOyuN,EAEW,iBAATrwP,GAAqC,iBAATqwP,GACrCrwP,EAAQm1O,GAAan1O,GACrBqwP,EAAQlb,GAAakb,KAErBrwP,EAAQm3P,GAAan3P,GACrBqwP,EAAQ8G,GAAa9G,IAEvB/vP,EAASq8P,EAAS38P,EAAOqwP,GAE3B,OAAO/vP,GAWX,SAASs8P,GAAWC,GAClB,OAAOvB,IAAS,SAASpS,GAEvB,OADAA,EAAYlV,GAASkV,EAAW3F,GAAUsR,OACnCY,IAAS,SAAS3nK,GACvB,IAAInuF,EAAUjE,KACd,OAAOmhQ,EAAU3T,GAAW,SAASjV,GACnC,OAAOx0O,GAAMw0O,EAAUt0O,EAASmuF,YAexC,SAASgvK,GAAc//P,EAAQilG,GAC7BA,EAAQA,IAAUpgE,EAAY,IAAMuzM,GAAanzI,GAEjD,IAAI+6J,EAAc/6J,EAAMjlG,OACxB,GAAIggQ,EAAc,EAChB,OAAOA,EAAcvH,GAAWxzJ,EAAOjlG,GAAUilG,EAEnD,IAAI1hG,EAASk1P,GAAWxzJ,EAAOgkJ,GAAWjpP,EAAS0nP,GAAWziJ,KAC9D,OAAOqzI,GAAWrzI,GACdozI,GAAUE,GAAch1O,GAAS,EAAGvD,GAAQ2kB,KAAK,IACjDphB,EAAO2nC,MAAM,EAAGlrC,GAetB,SAASigQ,GAAcvyK,EAAM4iK,EAAS1tP,EAAS05P,GAC7C,IAAIsB,EAAStN,EAAU1S,EACnBigB,EAAOC,GAAWpwK,GAEtB,SAASouE,IACP,IAAI2gG,GAAa,EACbt1F,EAAapnK,UAAUC,OACvB28P,GAAa,EACbC,EAAaN,EAASt8P,OACtB+wF,EAAO1yF,EAAMu+P,EAAaz1F,GAC1BxtF,EAAMh7E,MAAQA,OAASynM,IAAQznM,gBAAgBm9J,EAAW+hG,EAAOnwK,EAErE,QAASivK,EAAYC,EACnB7rK,EAAK4rK,GAAaL,EAASK,GAE7B,MAAOx1F,IACLp2E,EAAK4rK,KAAe58P,YAAY08P,GAElC,OAAO/5P,GAAMi3E,EAAIikL,EAASh7P,EAAUjE,KAAMoyF,GAE5C,OAAO+qE,EAUT,SAASokG,GAAYva,GACnB,OAAO,SAAS7/J,EAAOC,EAAK5iF,GAa1B,OAZIA,GAAuB,iBAARA,GAAoBu6P,GAAe53K,EAAOC,EAAK5iF,KAChE4iF,EAAM5iF,EAAO0hC,GAGfihD,EAAQq6K,GAASr6K,GACbC,IAAQlhD,GACVkhD,EAAMD,EACNA,EAAQ,GAERC,EAAMo6K,GAASp6K,GAEjB5iF,EAAOA,IAAS0hC,EAAaihD,EAAQC,EAAM,GAAK,EAAKo6K,GAASh9P,GACvDq1P,GAAU1yK,EAAOC,EAAK5iF,EAAMwiP,IAWvC,SAASya,GAA0BR,GACjC,OAAO,SAAS38P,EAAOqwP,GAKrB,MAJsB,iBAATrwP,GAAqC,iBAATqwP,IACvCrwP,EAAQ28K,GAAS38K,GACjBqwP,EAAQ1zE,GAAS0zE,IAEZsM,EAAS38P,EAAOqwP,IAqB3B,SAAS4K,GAAcxwK,EAAM4iK,EAAS+P,EAAUtZ,EAAankP,EAAS05P,EAAUC,EAAS0C,EAAQC,EAAKlzF,GACpG,IAAIs0F,EAAUhQ,EAAUvS,EACpBwhB,EAAae,EAAU/D,EAAU13N,EACjC07N,EAAkBD,EAAUz7N,EAAY03N,EACxCiE,EAAcF,EAAUhE,EAAWz3N,EACnC47N,EAAmBH,EAAUz7N,EAAYy3N,EAE7ChM,GAAYgQ,EAAUriB,EAAoBC,EAC1CoS,KAAagQ,EAAUpiB,EAA0BD,GAE3CqS,EAAUxS,IACdwS,KAAa1S,EAAiBC,IAEhC,IAAI58B,EAAU,CACZvzH,EAAM4iK,EAAS1tP,EAAS49P,EAAajB,EAAYkB,EACjDF,EAAiBtB,EAAQC,EAAKlzF,GAG5BzoK,EAAS88P,EAAS39P,MAAMmiC,EAAWo8K,GAKvC,OAJI49C,GAAWnxK,IACbgzK,GAAQn9P,EAAQ09M,GAElB19M,EAAOwjP,YAAcA,EACd4Z,GAAgBp9P,EAAQmqF,EAAM4iK,GAUvC,SAASsQ,GAAYnoB,GACnB,IAAI/qJ,EAAO9/E,GAAK6qO,GAChB,OAAO,SAASzzI,EAAQ67J,GAGtB,GAFA77J,EAAS46E,GAAS56E,GAClB67J,EAAyB,MAAbA,EAAoB,EAAIpX,GAAU8I,GAAUsO,GAAY,KAChEA,GAAaxX,GAAerkJ,GAAS,CAGvC,IAAI5qF,GAAQlN,GAAS83F,GAAU,KAAKjvF,MAAM,KACtC9S,EAAQyqF,EAAKtzE,EAAK,GAAK,MAAQA,EAAK,GAAKymP,IAG7C,OADAzmP,GAAQlN,GAASjK,GAAS,KAAK8S,MAAM,OAC5BqE,EAAK,GAAK,MAAQA,EAAK,GAAKymP,IAEvC,OAAOnzK,EAAKsX,IAWhB,IAAIs1J,GAAc1+N,IAAQ,EAAI2rN,GAAW,IAAI3rN,GAAI,CAAC,EAAE,KAAK,IAAOs8M,EAAmB,SAASnnM,GAC1F,OAAO,IAAInV,GAAImV,IAD2DwoC,GAW5E,SAASunL,GAAczP,GACrB,OAAO,SAAS75J,GACd,IAAImjE,EAAMi2F,GAAOp5J,GACjB,OAAImjE,GAAOilF,EACFuH,GAAW3vJ,GAEhBmjE,GAAOulF,GACFsH,GAAWhwJ,GAEb6uJ,GAAY7uJ,EAAQ65J,EAAS75J,KA6BxC,SAASupK,GAAWrzK,EAAM4iK,EAAS1tP,EAAS05P,EAAUC,EAAS0C,EAAQC,EAAKlzF,GAC1E,IAAIozF,EAAY9O,EAAUzS,EAC1B,IAAKuhB,GAA4B,mBAAR1xK,EACvB,MAAM,IAAIjpF,GAAUy4O,GAEtB,IAAIl9O,EAASs8P,EAAWA,EAASt8P,OAAS,EAS1C,GARKA,IACHswP,KAAarS,EAAoBC,GACjCoe,EAAWC,EAAU13N,GAEvBq6N,EAAMA,IAAQr6N,EAAYq6N,EAAM1V,GAAU+I,GAAU2M,GAAM,GAC1DlzF,EAAQA,IAAUnnI,EAAYmnI,EAAQumF,GAAUvmF,GAChDhsK,GAAUu8P,EAAUA,EAAQv8P,OAAS,EAEjCswP,EAAUpS,EAAyB,CACrC,IAAI6gB,EAAgBzC,EAChB0C,EAAezC,EAEnBD,EAAWC,EAAU13N,EAEvB,IAAI91B,EAAOqwP,EAAYv6N,EAAY+5N,GAAQlxK,GAEvCuzH,EAAU,CACZvzH,EAAM4iK,EAAS1tP,EAAS05P,EAAUC,EAASwC,EAAeC,EAC1DC,EAAQC,EAAKlzF,GAkBf,GAfIj9J,GACFiyP,GAAU//C,EAASlyM,GAErB2+E,EAAOuzH,EAAQ,GACfqvC,EAAUrvC,EAAQ,GAClBr+M,EAAUq+M,EAAQ,GAClBq7C,EAAWr7C,EAAQ,GACnBs7C,EAAUt7C,EAAQ,GAClBj1C,EAAQi1C,EAAQ,GAAKA,EAAQ,KAAOp8K,EAC/Bu6N,EAAY,EAAI1xK,EAAK1tF,OACtBwpP,GAAUvoC,EAAQ,GAAKjhN,EAAQ,IAE9BgsK,GAASskF,GAAWvS,EAAkBC,KACzCsS,KAAavS,EAAkBC,IAE5BsS,GAAWA,GAAW1S,EAGzBr6O,EADS+sP,GAAWvS,GAAmBuS,GAAWtS,EACzCggB,GAAYtwK,EAAM4iK,EAAStkF,GAC1BskF,GAAWrS,GAAqBqS,IAAY1S,EAAiBK,IAAwBse,EAAQv8P,OAG9Fm+P,GAAaz7P,MAAMmiC,EAAWo8K,GAF9Bg/C,GAAcvyK,EAAM4iK,EAAS1tP,EAAS05P,QAJ/C,IAAI/4P,EAASo6P,GAAWjwK,EAAM4iK,EAAS1tP,GAQzC,IAAIo9J,EAASjxJ,EAAOiqP,GAAc0H,GAClC,OAAOC,GAAgB3gG,EAAOz8J,EAAQ09M,GAAUvzH,EAAM4iK,GAexD,SAAS2Q,GAAuBvR,EAAUgG,EAAUn7O,EAAKi9E,GACvD,OAAIk4J,IAAa7qN,GACZ2qN,GAAGE,EAAUtW,GAAY7+N,MAAU9b,GAAea,KAAKk4F,EAAQj9E,GAC3Dm7O,EAEFhG,EAiBT,SAASwR,GAAoBxR,EAAUgG,EAAUn7O,EAAKi9E,EAAQvyB,EAAQ0yB,GAOpE,OANIhgB,GAAS+3K,IAAa/3K,GAAS+9K,KAEjC/9J,EAAMrwE,IAAIouO,EAAUhG,GACpBwH,GAAUxH,EAAUgG,EAAU7wN,EAAWq8N,GAAqBvpK,GAC9DA,EAAM,UAAU+9J,IAEXhG,EAYT,SAASyR,GAAgBl+P,GACvB,OAAO27F,GAAc37F,GAAS4hC,EAAY5hC,EAgB5C,SAAS8xP,GAAYn3N,EAAO01N,EAAOhD,EAASC,EAAYgE,EAAW58J,GACjE,IAAIypK,EAAY9Q,EAAU5S,EACtBsO,EAAYpuN,EAAM59B,OAClB4zP,EAAYN,EAAMtzP,OAEtB,GAAIgsP,GAAa4H,KAAewN,GAAaxN,EAAY5H,GACvD,OAAO,EAGT,IAAIqV,EAAa1pK,EAAMt3F,IAAIu9B,GACvB0jO,EAAa3pK,EAAMt3F,IAAIizP,GAC3B,GAAI+N,GAAcC,EAChB,OAAOD,GAAc/N,GAASgO,GAAc1jO,EAE9C,IAAIqT,GAAS,EACT1tC,GAAS,EACTwwP,EAAQzD,EAAU3S,EAA0B,IAAIoQ,GAAWlpN,EAE/D8yD,EAAMrwE,IAAIsW,EAAO01N,GACjB37J,EAAMrwE,IAAIgsO,EAAO11N,GAGjB,QAASqT,EAAQ+6M,EAAW,CAC1B,IAAIuV,EAAW3jO,EAAMqT,GACjBuwN,EAAWlO,EAAMriN,GAErB,GAAIs/M,EACF,IAAIkR,EAAWL,EACX7Q,EAAWiR,EAAUD,EAAUtwN,EAAOqiN,EAAO11N,EAAO+5D,GACpD44J,EAAWgR,EAAUC,EAAUvwN,EAAOrT,EAAO01N,EAAO37J,GAE1D,GAAI8pK,IAAa58N,EAAW,CAC1B,GAAI48N,EACF,SAEFl+P,GAAS,EACT,MAGF,GAAIwwP,GACF,IAAK1O,GAAUiO,GAAO,SAASkO,EAAU3N,GACnC,IAAKnN,GAASqN,EAAMF,KACf0N,IAAaC,GAAYjN,EAAUgN,EAAUC,EAAUlR,EAASC,EAAY54J,IAC/E,OAAOo8J,EAAKpvP,KAAKkvP,MAEjB,CACNtwP,GAAS,EACT,YAEG,GACDg+P,IAAaC,IACXjN,EAAUgN,EAAUC,EAAUlR,EAASC,EAAY54J,GACpD,CACLp0F,GAAS,EACT,OAKJ,OAFAo0F,EAAM,UAAU/5D,GAChB+5D,EAAM,UAAU27J,GACT/vP,EAoBT,SAASyxP,GAAWx9J,EAAQ87J,EAAO34F,EAAK21F,EAASC,EAAYgE,EAAW58J,GACtE,OAAQgjE,GACN,KAAK4lF,GACH,GAAK/oJ,EAAOgkK,YAAclI,EAAMkI,YAC3BhkK,EAAOkkK,YAAcpI,EAAMoI,WAC9B,OAAO,EAETlkK,EAASA,EAAOlqF,OAChBgmP,EAAQA,EAAMhmP,OAEhB,KAAKgzO,GACH,QAAK9oJ,EAAOgkK,YAAclI,EAAMkI,aAC3BjH,EAAU,IAAIhnP,GAAWiqF,GAAS,IAAIjqF,GAAW+lP,KAKxD,KAAKhU,EACL,KAAKC,EACL,KAAKM,EAGH,OAAO2P,IAAIh4J,GAAS87J,GAEtB,KAAK7T,EACH,OAAOjoJ,EAAOxlF,MAAQshP,EAAMthP,MAAQwlF,EAAOzsE,SAAWuoO,EAAMvoO,QAE9D,KAAKk1N,GACL,KAAKE,GAIH,OAAO3oJ,GAAW87J,EAAQ,GAE5B,KAAK1T,EACH,IAAI8hB,EAAUva,GAEhB,KAAKjH,GACH,IAAIkhB,EAAY9Q,EAAU5S,EAG1B,GAFAgkB,IAAYA,EAAUna,IAElB/vJ,EAAOh7D,MAAQ82N,EAAM92N,OAAS4kO,EAChC,OAAO,EAGT,IAAIjQ,EAAUx5J,EAAMt3F,IAAIm3F,GACxB,GAAI25J,EACF,OAAOA,GAAWmC,EAEpBhD,GAAW3S,EAGXhmJ,EAAMrwE,IAAIkwE,EAAQ87J,GAClB,IAAI/vP,EAASwxP,GAAY2M,EAAQlqK,GAASkqK,EAAQpO,GAAQhD,EAASC,EAAYgE,EAAW58J,GAE1F,OADAA,EAAM,UAAUH,GACTj0F,EAET,KAAKw5O,GACH,GAAInxD,GACF,OAAOA,GAActsL,KAAKk4F,IAAWo0F,GAActsL,KAAKg0P,GAG9D,OAAO,EAgBT,SAAS+B,GAAa79J,EAAQ87J,EAAOhD,EAASC,EAAYgE,EAAW58J,GACnE,IAAIypK,EAAY9Q,EAAU5S,EACtBikB,EAAWl7O,GAAW+wE,GACtBoqK,EAAYD,EAAS3hQ,OACrB6hQ,EAAWp7O,GAAW6sO,GACtBM,EAAYiO,EAAS7hQ,OAEzB,GAAI4hQ,GAAahO,IAAcwN,EAC7B,OAAO,EAET,IAAInwN,EAAQ2wN,EACZ,MAAO3wN,IAAS,CACd,IAAI12B,EAAMonP,EAAS1wN,GACnB,KAAMmwN,EAAY7mP,KAAO+4O,EAAQ70P,GAAea,KAAKg0P,EAAO/4O,IAC1D,OAAO,EAIX,IAAIunP,EAAanqK,EAAMt3F,IAAIm3F,GACvB8pK,EAAa3pK,EAAMt3F,IAAIizP,GAC3B,GAAIwO,GAAcR,EAChB,OAAOQ,GAAcxO,GAASgO,GAAc9pK,EAE9C,IAAIj0F,GAAS,EACbo0F,EAAMrwE,IAAIkwE,EAAQ87J,GAClB37J,EAAMrwE,IAAIgsO,EAAO97J,GAEjB,IAAIuqK,EAAWX,EACf,QAASnwN,EAAQ2wN,EAAW,CAC1BrnP,EAAMonP,EAAS1wN,GACf,IAAIy+M,EAAWl4J,EAAOj9E,GAClBinP,EAAWlO,EAAM/4O,GAErB,GAAIg2O,EACF,IAAIkR,EAAWL,EACX7Q,EAAWiR,EAAU9R,EAAUn1O,EAAK+4O,EAAO97J,EAAQG,GACnD44J,EAAWb,EAAU8R,EAAUjnP,EAAKi9E,EAAQ87J,EAAO37J,GAGzD,KAAM8pK,IAAa58N,EACV6qN,IAAa8R,GAAYjN,EAAU7E,EAAU8R,EAAUlR,EAASC,EAAY54J,GAC7E8pK,GACD,CACLl+P,GAAS,EACT,MAEFw+P,IAAaA,EAAkB,eAAPxnP,GAE1B,GAAIhX,IAAWw+P,EAAU,CACvB,IAAIC,EAAUxqK,EAAO54F,YACjBqjQ,EAAU3O,EAAM10P,YAGhBojQ,GAAWC,KACV,gBAAiBzqK,MAAU,gBAAiB87J,IACzB,mBAAX0O,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,IACvD1+P,GAAS,GAKb,OAFAo0F,EAAM,UAAUH,GAChBG,EAAM,UAAU27J,GACT/vP,EAUT,SAASg7P,GAAS7wK,GAChB,OAAOirK,GAAYC,GAASlrK,EAAM7oD,EAAWq9N,IAAUx0K,EAAO,IAUhE,SAASjnE,GAAW+wE,GAClB,OAAO27J,GAAe37J,EAAQh2F,GAAM47P,IAWtC,SAAS9L,GAAa95J,GACpB,OAAO27J,GAAe37J,EAAQw4J,GAAQqN,IAUxC,IAAIuB,GAAW5U,GAAiB,SAASt8J,GACvC,OAAOs8J,GAAQ3pP,IAAIqtF,IADInU,GAWzB,SAASolL,GAAYjxK,GACnB,IAAInqF,EAAUmqF,EAAK17E,KAAO,GACtB4rB,EAAQqsN,GAAU1mP,GAClBvD,EAASvB,GAAea,KAAK2qP,GAAW1mP,GAAUq6B,EAAM59B,OAAS,EAErE,MAAOA,IAAU,CACf,IAAI+O,EAAO6uB,EAAM59B,GACbmiQ,EAAYpzP,EAAK2+E,KACrB,GAAiB,MAAby0K,GAAqBA,GAAaz0K,EACpC,OAAO3+E,EAAKiD,KAGhB,OAAOzO,EAUT,SAAS06P,GAAUvwK,GACjB,IAAI8J,EAAS/4F,GAAea,KAAKkrP,GAAQ,eAAiBA,GAAS98J,EACnE,OAAO8J,EAAOuvJ,YAchB,SAAS+Q,KACP,IAAIv0P,EAASinP,GAAOtT,UAAYA,GAEhC,OADA3zO,EAASA,IAAW2zO,GAAW+e,GAAe1yP,EACvCxD,UAAUC,OAASuD,EAAOxD,UAAU,GAAIA,UAAU,IAAMwD,EAWjE,SAASoqP,GAAWjzO,EAAKH,GACvB,IAAIxL,EAAO2L,EAAIkyO,SACf,OAAOwV,GAAU7nP,GACbxL,EAAmB,iBAAPwL,EAAkB,SAAW,QACzCxL,EAAK2L,IAUX,SAASm8O,GAAar/J,GACpB,IAAIj0F,EAAS/B,GAAKg2F,GACdx3F,EAASuD,EAAOvD,OAEpB,MAAOA,IAAU,CACf,IAAIua,EAAMhX,EAAOvD,GACbiD,EAAQu0F,EAAOj9E,GAEnBhX,EAAOvD,GAAU,CAACua,EAAKtX,EAAO+zP,GAAmB/zP,IAEnD,OAAOM,EAWT,SAASslP,GAAUrxJ,EAAQj9E,GACzB,IAAItX,EAAQyuO,GAASl6I,EAAQj9E,GAC7B,OAAOo7O,GAAa1yP,GAASA,EAAQ4hC,EAUvC,SAAS4yM,GAAUx0O,GACjB,IAAIq2O,EAAQ76O,GAAea,KAAK2D,EAAO40O,IACnCl9E,EAAM13J,EAAM40O,IAEhB,IACE50O,EAAM40O,IAAkBhzM,EACxB,IAAI00M,GAAW,EACf,MAAOl2O,IAET,IAAIE,EAAS81O,GAAqB/5O,KAAK2D,GAQvC,OAPIs2O,IACED,EACFr2O,EAAM40O,IAAkBl9E,SAEjB13J,EAAM40O,KAGVt0O,EAUT,IAAI65P,GAAcjU,GAA+B,SAAS3xJ,GACxD,OAAc,MAAVA,EACK,IAETA,EAASt5F,GAAOs5F,GACTstJ,GAAYqE,GAAiB3xJ,IAAS,SAASi2E,GACpD,OAAO1tE,GAAqBzgG,KAAKk4F,EAAQi2E,QANR40F,GAiBjChF,GAAgBlU,GAA+B,SAAS3xJ,GAC1D,IAAIj0F,EAAS,GACb,MAAOi0F,EACL6rG,GAAU9/L,EAAQ65P,GAAW5lK,IAC7BA,EAASixJ,GAAajxJ,GAExB,OAAOj0F,GAN8B8+P,GAgBnCzR,GAAS7Y,GAoCb,SAASmU,GAAQpmK,EAAOC,EAAKu8K,GAC3B,IAAIrxN,GAAS,EACTjxC,EAASsiQ,EAAWtiQ,OAExB,QAASixC,EAAQjxC,EAAQ,CACvB,IAAI+O,EAAOuzP,EAAWrxN,GAClBzU,EAAOztB,EAAKytB,KAEhB,OAAQztB,EAAK8c,MACX,IAAK,OAAai6D,GAAStpD,EAAM,MACjC,IAAK,YAAaupD,GAAOvpD,EAAM,MAC/B,IAAK,OAAaupD,EAAM0jK,GAAU1jK,EAAKD,EAAQtpD,GAAO,MACtD,IAAK,YAAaspD,EAAQ0jK,GAAU1jK,EAAOC,EAAMvpD,GAAO,OAG5D,MAAO,CAAE,MAASspD,EAAO,IAAOC,GAUlC,SAASw8K,GAAet9L,GACtB,IAAI72B,EAAQ62B,EAAO72B,MAAM+zM,IACzB,OAAO/zM,EAAQA,EAAM,GAAGr4B,MAAMqsO,IAAkB,GAYlD,SAASogB,GAAQhrK,EAAQzL,EAAM02K,GAC7B12K,EAAOknK,GAASlnK,EAAMyL,GAEtB,IAAIvmD,GAAS,EACTjxC,EAAS+rF,EAAK/rF,OACduD,GAAS,EAEb,QAAS0tC,EAAQjxC,EAAQ,CACvB,IAAIua,EAAM24O,GAAMnnK,EAAK96C,IACrB,KAAM1tC,EAAmB,MAAVi0F,GAAkBirK,EAAQjrK,EAAQj9E,IAC/C,MAEFi9E,EAASA,EAAOj9E,GAElB,OAAIhX,KAAY0tC,GAASjxC,EAChBuD,GAETvD,EAAmB,MAAVw3F,EAAiB,EAAIA,EAAOx3F,SAC5BA,GAAUg2P,GAASh2P,IAAWgvP,GAAQz0O,EAAKva,KACjDg0E,GAAQwjB,IAAWo3J,GAAYp3J,KAUpC,SAASm5J,GAAe/yN,GACtB,IAAI59B,EAAS49B,EAAM59B,OACfuD,EAAS,IAAIq6B,EAAMh/B,YAAYoB,GAOnC,OAJIA,GAA6B,iBAAZ49B,EAAM,IAAkBn/B,GAAea,KAAKs+B,EAAO,WACtEr6B,EAAO0tC,MAAQrT,EAAMqT,MACrB1tC,EAAOmM,MAAQkuB,EAAMluB,OAEhBnM,EAUT,SAASwtP,GAAgBv5J,GACvB,MAAqC,mBAAtBA,EAAO54F,aAA8B03P,GAAY9+J,GAE5D,GADAozJ,GAAWnC,GAAajxJ,IAgB9B,SAAS05J,GAAe15J,EAAQmjE,EAAK61F,GACnC,IAAIqN,EAAOrmK,EAAO54F,YAClB,OAAQ+7J,GACN,KAAK2lF,GACH,OAAOgb,GAAiB9jK,GAE1B,KAAK8nJ,EACL,KAAKC,EACH,OAAO,IAAIse,GAAMrmK,GAEnB,KAAK+oJ,GACH,OAAOkb,GAAcjkK,EAAQg5J,GAE/B,KAAKhQ,GAAY,KAAKC,GACtB,KAAKC,GAAS,KAAKC,GAAU,KAAKC,GAClC,KAAKC,GAAU,KAAKC,GAAiB,KAAKC,GAAW,KAAKC,GACxD,OAAOyW,GAAgBjgK,EAAQg5J,GAEjC,KAAK5Q,EACH,OAAO,IAAIie,EAEb,KAAKhe,EACL,KAAKM,GACH,OAAO,IAAI0d,EAAKrmK,GAElB,KAAKyoJ,GACH,OAAO0b,GAAYnkK,GAErB,KAAK0oJ,GACH,OAAO,IAAI2d,EAEb,KAAK9gB,GACH,OAAO6e,GAAYpkK,IAYzB,SAASkrK,GAAkBz9L,EAAQ1pC,GACjC,IAAIv7B,EAASu7B,EAAQv7B,OACrB,IAAKA,EACH,OAAOilE,EAET,IAAI0vF,EAAY30J,EAAS,EAGzB,OAFAu7B,EAAQo5H,IAAc30J,EAAS,EAAI,KAAO,IAAMu7B,EAAQo5H,GACxDp5H,EAAUA,EAAQ5W,KAAK3kB,EAAS,EAAI,KAAO,KACpCilE,EAAOp1D,QAAQqyO,GAAe,uBAAyB3mN,EAAU,UAU1E,SAASo3N,GAAc1vP,GACrB,OAAO+wE,GAAQ/wE,IAAU2rP,GAAY3rP,OAChC0lP,IAAoB1lP,GAASA,EAAM0lP,KAW1C,SAASqG,GAAQ/rP,EAAOjD,GACtB,IAAI6rB,SAAc5oB,EAGlB,OAFAjD,EAAmB,MAAVA,EAAiB6hK,EAAmB7hK,IAEpCA,IACE,UAAR6rB,GACU,UAARA,GAAoBg3N,GAAS50O,KAAKhL,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQjD,EAajD,SAAS09P,GAAez6P,EAAOguC,EAAOumD,GACpC,IAAK7f,GAAS6f,GACZ,OAAO,EAET,IAAI3rE,SAAcolB,EAClB,SAAY,UAARplB,EACK+qO,GAAYp/J,IAAWw3J,GAAQ/9M,EAAOumD,EAAOx3F,QACrC,UAAR6rB,GAAoBolB,KAASumD,IAE7Bg4J,GAAGh4J,EAAOvmD,GAAQhuC,GAa7B,SAAS8zP,GAAM9zP,EAAOu0F,GACpB,GAAIxjB,GAAQ/wE,GACV,OAAO,EAET,IAAI4oB,SAAc5oB,EAClB,QAAY,UAAR4oB,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAAT5oB,IAAiB21K,GAAS31K,MAGvB2+O,GAAc3zO,KAAKhL,KAAW0+O,GAAa1zO,KAAKhL,IAC1C,MAAVu0F,GAAkBv0F,KAAS/E,GAAOs5F,IAUvC,SAAS4qK,GAAUn/P,GACjB,IAAI4oB,SAAc5oB,EAClB,MAAgB,UAAR4oB,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAV5oB,EACU,OAAVA,EAWP,SAAS47P,GAAWnxK,GAClB,IAAIwT,EAAWy9J,GAAYjxK,GACvB4lK,EAAQ9I,GAAOtpJ,GAEnB,GAAoB,mBAAToyJ,KAAyBpyJ,KAAYupJ,GAAY5rP,WAC1D,OAAO,EAET,GAAI6uF,IAAS4lK,EACX,OAAO,EAET,IAAIvkP,EAAO6vP,GAAQtL,GACnB,QAASvkP,GAAQ2+E,IAAS3+E,EAAK,GAUjC,SAAS6mP,GAASloK,GAChB,QAAS06J,IAAeA,MAAc16J,GAxTnCo8J,IAAY8G,GAAO,IAAI9G,GAAS,IAAI96O,YAAY,MAAQuxO,IACxDl5N,IAAOupO,GAAO,IAAIvpO,KAAQu4N,GAC1B7+O,IAAW6vP,GAAO7vP,GAAQC,YAAc++O,IACxCnkN,IAAOg1N,GAAO,IAAIh1N,KAAQskN,IAC1Bt2E,IAAWgnF,GAAO,IAAIhnF,KAAYw2E,MACrCwQ,GAAS,SAAS3tP,GAChB,IAAIM,EAASw0O,GAAW90O,GACpB46P,EAAOt6P,GAAUu8O,GAAY78O,EAAMrE,YAAcimC,EACjD89N,EAAa9E,EAAO1T,GAAS0T,GAAQ,GAEzC,GAAI8E,EACF,OAAQA,GACN,KAAKzY,GAAoB,OAAO3J,GAChC,KAAK6J,GAAe,OAAOxK,EAC3B,KAAKyK,GAAmB,OAAOtK,GAC/B,KAAKuK,GAAe,OAAOpK,GAC3B,KAAKqK,GAAmB,OAAOnK,GAGnC,OAAO78O,IA+SX,IAAIq/P,GAAa3a,GAAax5J,GAAao0K,GAS3C,SAASvM,GAAYrzP,GACnB,IAAI46P,EAAO56P,GAASA,EAAMrE,YACtBi3F,EAAwB,mBAARgoK,GAAsBA,EAAKh/P,WAAcu6O,GAE7D,OAAOn2O,IAAU4yF,EAWnB,SAASmhK,GAAmB/zP,GAC1B,OAAOA,IAAUA,IAAU00E,GAAS10E,GAYtC,SAAS6zP,GAAwBv8O,EAAKm7O,GACpC,OAAO,SAASl+J,GACd,OAAc,MAAVA,IAGGA,EAAOj9E,KAASm7O,IACpBA,IAAa7wN,GAActqB,KAAOrc,GAAOs5F,MAYhD,SAASsrK,GAAcp1K,GACrB,IAAInqF,EAASw/P,GAAQr1K,GAAM,SAASnzE,GAIlC,OAHI6M,EAAMoV,OAAS6gN,GACjBj2N,EAAMK,QAEDlN,KAGL6M,EAAQ7jB,EAAO6jB,MACnB,OAAO7jB,EAmBT,SAASy9P,GAAUjyP,EAAMk2D,GACvB,IAAIqrL,EAAUvhP,EAAK,GACfi0P,EAAa/9L,EAAO,GACpBg+L,EAAa3S,EAAU0S,EACvBpR,EAAWqR,GAAcrlB,EAAiBC,EAAqBM,GAE/D+kB,EACAF,GAAc7kB,GAAmBmS,GAAWvS,GAC5CilB,GAAc7kB,GAAmBmS,GAAWlS,GAAqBrvO,EAAK,GAAG/O,QAAUilE,EAAO,IAC1F+9L,IAAe7kB,EAAgBC,IAAsBn5K,EAAO,GAAGjlE,QAAUilE,EAAO,IAAQqrL,GAAWvS,EAGvG,IAAM6T,IAAYsR,EAChB,OAAOn0P,EAGLi0P,EAAaplB,IACf7uO,EAAK,GAAKk2D,EAAO,GAEjBg+L,GAAc3S,EAAU1S,EAAiB,EAAIE,GAG/C,IAAI76O,EAAQgiE,EAAO,GACnB,GAAIhiE,EAAO,CACT,IAAIq5P,EAAWvtP,EAAK,GACpBA,EAAK,GAAKutP,EAAWD,GAAYC,EAAUr5P,EAAOgiE,EAAO,IAAMhiE,EAC/D8L,EAAK,GAAKutP,EAAWhV,GAAev4O,EAAK,GAAIuuO,GAAer4K,EAAO,GA0BrE,OAvBAhiE,EAAQgiE,EAAO,GACXhiE,IACFq5P,EAAWvtP,EAAK,GAChBA,EAAK,GAAKutP,EAAWS,GAAiBT,EAAUr5P,EAAOgiE,EAAO,IAAMhiE,EACpE8L,EAAK,GAAKutP,EAAWhV,GAAev4O,EAAK,GAAIuuO,GAAer4K,EAAO,IAGrEhiE,EAAQgiE,EAAO,GACXhiE,IACF8L,EAAK,GAAK9L,GAGR+/P,EAAa7kB,IACfpvO,EAAK,GAAgB,MAAXA,EAAK,GAAak2D,EAAO,GAAKwkL,GAAU16O,EAAK,GAAIk2D,EAAO,KAGrD,MAAXl2D,EAAK,KACPA,EAAK,GAAKk2D,EAAO,IAGnBl2D,EAAK,GAAKk2D,EAAO,GACjBl2D,EAAK,GAAKk0P,EAEHl0P,EAYT,SAASynP,GAAah/J,GACpB,IAAIj0F,EAAS,GACb,GAAc,MAAVi0F,EACF,IAAK,IAAIj9E,KAAOrc,GAAOs5F,GACrBj0F,EAAOoB,KAAK4V,GAGhB,OAAOhX,EAUT,SAASm0O,GAAez0O,GACtB,OAAOo2O,GAAqB/5O,KAAK2D,GAYnC,SAAS21P,GAASlrK,EAAM5H,EAAOuhK,GAE7B,OADAvhK,EAAQ0jK,GAAU1jK,IAAUjhD,EAAa6oD,EAAK1tF,OAAS,EAAK8lF,EAAO,GAC5D,WACL,IAAIiL,EAAOhxF,UACPkxC,GAAS,EACTjxC,EAASwpP,GAAUz4J,EAAK/wF,OAAS8lF,EAAO,GACxCloD,EAAQv/B,EAAM2B,GAElB,QAASixC,EAAQjxC,EACf49B,EAAMqT,GAAS8/C,EAAKjL,EAAQ70C,GAE9BA,GAAS,EACT,IAAIkyN,EAAY9kQ,EAAMynF,EAAQ,GAC9B,QAAS70C,EAAQ60C,EACfq9K,EAAUlyN,GAAS8/C,EAAK9/C,GAG1B,OADAkyN,EAAUr9K,GAASuhK,EAAUzpN,GACtBl7B,GAAMgrF,EAAM/uF,KAAMwkQ,IAY7B,SAAS3lN,GAAOg6C,EAAQzL,GACtB,OAAOA,EAAK/rF,OAAS,EAAIw3F,EAASw7J,GAAQx7J,EAAQygJ,GAAUlsJ,EAAM,GAAI,IAaxE,SAASyzK,GAAQ5hO,EAAOi1M,GACtB,IAAImZ,EAAYpuN,EAAM59B,OAClBA,EAASypP,GAAU5W,EAAQ7yO,OAAQgsP,GACnCoX,EAAW1X,GAAU9tN,GAEzB,MAAO59B,IAAU,CACf,IAAIixC,EAAQ4hM,EAAQ7yO,GACpB49B,EAAM59B,GAAUgvP,GAAQ/9M,EAAO+6M,GAAaoX,EAASnyN,GAASpM,EAEhE,OAAOjH,EAWT,SAASy5N,GAAQ7/J,EAAQj9E,GACvB,IAAY,gBAARA,GAAgD,oBAAhBi9E,EAAOj9E,KAIhC,aAAPA,EAIJ,OAAOi9E,EAAOj9E,GAiBhB,IAAImmP,GAAU2C,GAASrK,IAUnB3xN,GAAa2hN,IAAiB,SAASt7J,EAAMgkK,GAC/C,OAAOtrD,GAAK/+J,WAAWqmD,EAAMgkK,IAW3BiH,GAAc0K,GAASpK,IAY3B,SAAS0H,GAAgB7kG,EAASwnG,EAAWhT,GAC3C,IAAIrrL,EAAUq+L,EAAY,GAC1B,OAAO3K,GAAY78F,EAAS4mG,GAAkBz9L,EAAQs+L,GAAkBhB,GAAet9L,GAASqrL,KAYlG,SAAS+S,GAAS31K,GAChB,IAAI9mE,EAAQ,EACR48O,EAAa,EAEjB,OAAO,WACL,IAAIC,EAAQ/Z,KACRjzH,EAAYgoH,GAAYglB,EAAQD,GAGpC,GADAA,EAAaC,EACThtI,EAAY,GACd,KAAM7vG,GAAS43N,EACb,OAAOz+O,UAAU,QAGnB6mB,EAAQ,EAEV,OAAO8mE,EAAKhrF,MAAMmiC,EAAW9kC,YAYjC,SAASqvP,GAAYxxN,EAAOpB,GAC1B,IAAIyU,GAAS,EACTjxC,EAAS49B,EAAM59B,OACf20J,EAAY30J,EAAS,EAEzBw8B,EAAOA,IAASqI,EAAY7kC,EAASw8B,EACrC,QAASyU,EAAQzU,EAAM,CACrB,IAAIknO,EAAOxU,GAAWj+M,EAAO0jH,GACzB1xJ,EAAQ26B,EAAM8lO,GAElB9lO,EAAM8lO,GAAQ9lO,EAAMqT,GACpBrT,EAAMqT,GAAShuC,EAGjB,OADA26B,EAAM59B,OAASw8B,EACRoB,EAUT,IAAIu9N,GAAe2H,IAAc,SAAS9jG,GACxC,IAAIz7J,EAAS,GAOb,OAN6B,KAAzBy7J,EAAOvwJ,WAAW,IACpBlL,EAAOoB,KAAK,IAEdq6J,EAAOnvJ,QAAQgyO,IAAY,SAASzzM,EAAO42D,EAAQ2+J,EAAOC,GACxDrgQ,EAAOoB,KAAKg/P,EAAQC,EAAU/zP,QAAQyyO,GAAc,MAASt9I,GAAU52D,MAElE7qC,KAUT,SAAS2vP,GAAMjwP,GACb,GAAoB,iBAATA,GAAqB21K,GAAS31K,GACvC,OAAOA,EAET,IAAIM,EAAUN,EAAQ,GACtB,MAAkB,KAAVM,GAAkB,EAAIN,IAAWi1O,EAAY,KAAO30O,EAU9D,SAAS4mP,GAASz8J,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOw6J,GAAa5oP,KAAKouF,GACzB,MAAOrqF,IACT,IACE,OAAQqqF,EAAO,GACf,MAAOrqF,KAEX,MAAO,GAWT,SAASkgQ,GAAkBhoO,EAAS+0N,GAOlC,OANA5L,GAAUxF,GAAW,SAAS9kO,GAC5B,IAAInX,EAAQ,KAAOmX,EAAK,GACnBk2O,EAAUl2O,EAAK,KAAQ4qO,GAAczpN,EAASt4B,IACjDs4B,EAAQ52B,KAAK1B,MAGVs4B,EAAQxW,OAUjB,SAAS4lO,GAAa7uF,GACpB,GAAIA,aAAmB2uF,GACrB,OAAO3uF,EAAQhvI,QAEjB,IAAIvpB,EAAS,IAAImnP,GAAc5uF,EAAQivF,YAAajvF,EAAQmvF,WAI5D,OAHA1nP,EAAOynP,YAAcU,GAAU5vF,EAAQkvF,aACvCznP,EAAO2nP,UAAapvF,EAAQovF,UAC5B3nP,EAAO4nP,WAAarvF,EAAQqvF,WACrB5nP,EA0BT,SAASsgQ,GAAMjmO,EAAOpB,EAAMihO,GAExBjhO,GADGihO,EAAQC,GAAe9/N,EAAOpB,EAAMihO,GAASjhO,IAASqI,GAClD,EAEA2kN,GAAU+I,GAAU/1N,GAAO,GAEpC,IAAIx8B,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,IAAKA,GAAUw8B,EAAO,EACpB,MAAO,GAET,IAAIyU,EAAQ,EACR8zM,EAAW,EACXxhP,EAASlF,EAAM4qP,GAAWjpP,EAASw8B,IAEvC,MAAOyU,EAAQjxC,EACbuD,EAAOwhP,KAAc9M,GAAUr6M,EAAOqT,EAAQA,GAASzU,GAEzD,OAAOj5B,EAkBT,SAASugQ,GAAQlmO,GACf,IAAIqT,GAAS,EACTjxC,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACnC+kP,EAAW,EACXxhP,EAAS,GAEb,QAAS0tC,EAAQjxC,EAAQ,CACvB,IAAIiD,EAAQ26B,EAAMqT,GACdhuC,IACFM,EAAOwhP,KAAc9hP,GAGzB,OAAOM,EAyBT,SAAS4B,KACP,IAAInF,EAASD,UAAUC,OACvB,IAAKA,EACH,MAAO,GAET,IAAI+wF,EAAO1yF,EAAM2B,EAAS,GACtB49B,EAAQ79B,UAAU,GAClBkxC,EAAQjxC,EAEZ,MAAOixC,IACL8/C,EAAK9/C,EAAQ,GAAKlxC,UAAUkxC,GAE9B,OAAOoyJ,GAAUrvH,GAAQp2C,GAAS8tN,GAAU9tN,GAAS,CAACA,GAAQ60N,GAAY1hK,EAAM,IAwBlF,IAAIgzK,GAAarL,IAAS,SAAS96N,EAAOmT,GACxC,OAAOymN,GAAkB55N,GACrB+zN,GAAe/zN,EAAO60N,GAAY1hN,EAAQ,EAAGymN,IAAmB,IAChE,MA6BFwM,GAAetL,IAAS,SAAS96N,EAAOmT,GAC1C,IAAImmM,EAAW/6E,GAAKprH,GAIpB,OAHIymN,GAAkBtgB,KACpBA,EAAWryM,GAEN2yN,GAAkB55N,GACrB+zN,GAAe/zN,EAAO60N,GAAY1hN,EAAQ,EAAGymN,IAAmB,GAAOM,GAAY5gB,EAAU,IAC7F,MA0BF+sB,GAAiBvL,IAAS,SAAS96N,EAAOmT,GAC5C,IAAIo0M,EAAahpF,GAAKprH,GAItB,OAHIymN,GAAkBrS,KACpBA,EAAatgN,GAER2yN,GAAkB55N,GACrB+zN,GAAe/zN,EAAO60N,GAAY1hN,EAAQ,EAAGymN,IAAmB,GAAO3yN,EAAWsgN,GAClF,MA4BN,SAAS+e,GAAKtmO,EAAO99B,EAAG29P,GACtB,IAAIz9P,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,OAAKA,GAGLF,EAAK29P,GAAS39P,IAAM+kC,EAAa,EAAI0tN,GAAUzyP,GACxCm4O,GAAUr6M,EAAO99B,EAAI,EAAI,EAAIA,EAAGE,IAH9B,GA+BX,SAASmkQ,GAAUvmO,EAAO99B,EAAG29P,GAC3B,IAAIz9P,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,OAAKA,GAGLF,EAAK29P,GAAS39P,IAAM+kC,EAAa,EAAI0tN,GAAUzyP,GAC/CA,EAAIE,EAASF,EACNm4O,GAAUr6M,EAAO,EAAG99B,EAAI,EAAI,EAAIA,IAJ9B,GA0CX,SAASskQ,GAAexmO,EAAOinN,GAC7B,OAAQjnN,GAASA,EAAM59B,OACnB06P,GAAU98N,EAAOk6N,GAAYjT,EAAW,IAAI,GAAM,GAClD,GAsCN,SAASwf,GAAUzmO,EAAOinN,GACxB,OAAQjnN,GAASA,EAAM59B,OACnB06P,GAAU98N,EAAOk6N,GAAYjT,EAAW,IAAI,GAC5C,GAgCN,SAASlqE,GAAK/8I,EAAO36B,EAAO6iF,EAAOC,GACjC,IAAI/lF,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,OAAKA,GAGD8lF,GAAyB,iBAATA,GAAqB43K,GAAe9/N,EAAO36B,EAAO6iF,KACpEA,EAAQ,EACRC,EAAM/lF,GAEDsyP,GAAS10N,EAAO36B,EAAO6iF,EAAOC,IAN5B,GA4CX,SAASiyE,GAAUp6H,EAAOinN,EAAWnlJ,GACnC,IAAI1/F,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIixC,EAAqB,MAAbyuD,EAAoB,EAAI6yJ,GAAU7yJ,GAI9C,OAHIzuD,EAAQ,IACVA,EAAQu4M,GAAUxpP,EAASixC,EAAO,IAE7By0M,GAAc9nN,EAAOk6N,GAAYjT,EAAW,GAAI5zM,GAsCzD,SAASqzN,GAAc1mO,EAAOinN,EAAWnlJ,GACvC,IAAI1/F,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIixC,EAAQjxC,EAAS,EAOrB,OANI0/F,IAAc76D,IAChBoM,EAAQshN,GAAU7yJ,GAClBzuD,EAAQyuD,EAAY,EAChB8pJ,GAAUxpP,EAASixC,EAAO,GAC1Bw4M,GAAUx4M,EAAOjxC,EAAS,IAEzB0lP,GAAc9nN,EAAOk6N,GAAYjT,EAAW,GAAI5zM,GAAO,GAiBhE,SAASixN,GAAQtkO,GACf,IAAI59B,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,OAAOA,EAASyyP,GAAY70N,EAAO,GAAK,GAiB1C,SAAS2mO,GAAY3mO,GACnB,IAAI59B,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,OAAOA,EAASyyP,GAAY70N,EAAOs6M,GAAY,GAuBjD,SAASssB,GAAa5mO,EAAO0oI,GAC3B,IAAItmK,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,OAAKA,GAGLsmK,EAAQA,IAAUzhI,EAAY,EAAI0tN,GAAUjsF,GACrCmsF,GAAY70N,EAAO0oI,IAHjB,GAqBX,SAASm+F,GAAUjW,GACjB,IAAIv9M,GAAS,EACTjxC,EAAkB,MAATwuP,EAAgB,EAAIA,EAAMxuP,OACnCuD,EAAS,GAEb,QAAS0tC,EAAQjxC,EAAQ,CACvB,IAAIoa,EAAOo0O,EAAMv9M,GACjB1tC,EAAO6W,EAAK,IAAMA,EAAK,GAEzB,OAAO7W,EAqBT,SAAS4oK,GAAKvuI,GACZ,OAAQA,GAASA,EAAM59B,OAAU49B,EAAM,GAAKiH,EA0B9C,SAAShrB,GAAQ+jB,EAAO36B,EAAOy8F,GAC7B,IAAI1/F,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIixC,EAAqB,MAAbyuD,EAAoB,EAAI6yJ,GAAU7yJ,GAI9C,OAHIzuD,EAAQ,IACVA,EAAQu4M,GAAUxpP,EAASixC,EAAO,IAE7Bg0M,GAAYrnN,EAAO36B,EAAOguC,GAiBnC,SAASyzN,GAAQ9mO,GACf,IAAI59B,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,OAAOA,EAASi4O,GAAUr6M,EAAO,GAAI,GAAK,GAoB5C,IAAI+mO,GAAejM,IAAS,SAAS/E,GACnC,IAAIiR,EAAS3tB,GAAS0c,EAAQsH,IAC9B,OAAQ2J,EAAO5kQ,QAAU4kQ,EAAO,KAAOjR,EAAO,GAC1CD,GAAiBkR,GACjB,MA0BFC,GAAiBnM,IAAS,SAAS/E,GACrC,IAAIzc,EAAW/6E,GAAKw3F,GAChBiR,EAAS3tB,GAAS0c,EAAQsH,IAO9B,OALI/jB,IAAa/6E,GAAKyoG,GACpB1tB,EAAWryM,EAEX+/N,EAAOlgQ,MAEDkgQ,EAAO5kQ,QAAU4kQ,EAAO,KAAOjR,EAAO,GAC1CD,GAAiBkR,EAAQ9M,GAAY5gB,EAAU,IAC/C,MAwBF4tB,GAAmBpM,IAAS,SAAS/E,GACvC,IAAIxO,EAAahpF,GAAKw3F,GAClBiR,EAAS3tB,GAAS0c,EAAQsH,IAM9B,OAJA9V,EAAkC,mBAAdA,EAA2BA,EAAatgN,EACxDsgN,GACFyf,EAAOlgQ,MAEDkgQ,EAAO5kQ,QAAU4kQ,EAAO,KAAOjR,EAAO,GAC1CD,GAAiBkR,EAAQ//N,EAAWsgN,GACpC,MAkBN,SAASxgO,GAAKiZ,EAAOm+I,GACnB,OAAgB,MAATn+I,EAAgB,GAAK2rN,GAAWjqP,KAAKs+B,EAAOm+I,GAiBrD,SAAS5f,GAAKv+H,GACZ,IAAI59B,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,OAAOA,EAAS49B,EAAM59B,EAAS,GAAK6kC,EAwBtC,SAAS9qB,GAAY6jB,EAAO36B,EAAOy8F,GACjC,IAAI1/F,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIixC,EAAQjxC,EAKZ,OAJI0/F,IAAc76D,IAChBoM,EAAQshN,GAAU7yJ,GAClBzuD,EAAQA,EAAQ,EAAIu4M,GAAUxpP,EAASixC,EAAO,GAAKw4M,GAAUx4M,EAAOjxC,EAAS,IAExEiD,IAAUA,EACbwkP,GAAkB7pN,EAAO36B,EAAOguC,GAChCy0M,GAAc9nN,EAAOioN,GAAW50M,GAAO,GAwB7C,SAAS8zN,GAAInnO,EAAO99B,GAClB,OAAQ89B,GAASA,EAAM59B,OAAU23P,GAAQ/5N,EAAO20N,GAAUzyP,IAAM+kC,EA0BlE,IAAImgO,GAAOtM,GAASuM,IAsBpB,SAASA,GAAQrnO,EAAOmT,GACtB,OAAQnT,GAASA,EAAM59B,QAAU+wC,GAAUA,EAAO/wC,OAC9Cq4P,GAAYz6N,EAAOmT,GACnBnT,EA0BN,SAASsnO,GAAUtnO,EAAOmT,EAAQmmM,GAChC,OAAQt5M,GAASA,EAAM59B,QAAU+wC,GAAUA,EAAO/wC,OAC9Cq4P,GAAYz6N,EAAOmT,EAAQ+mN,GAAY5gB,EAAU,IACjDt5M,EA0BN,SAASunO,GAAYvnO,EAAOmT,EAAQo0M,GAClC,OAAQvnN,GAASA,EAAM59B,QAAU+wC,GAAUA,EAAO/wC,OAC9Cq4P,GAAYz6N,EAAOmT,EAAQlM,EAAWsgN,GACtCvnN,EA2BN,IAAIwnO,GAAS7G,IAAS,SAAS3gO,EAAOi1M,GACpC,IAAI7yO,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACnCuD,EAAS0sP,GAAOryN,EAAOi1M,GAM3B,OAJAylB,GAAW16N,EAAOq5M,GAASpE,GAAS,SAAS5hM,GAC3C,OAAO+9M,GAAQ/9M,EAAOjxC,IAAWixC,EAAQA,KACxClsB,KAAK+2O,KAEDv4P,KA+BT,SAASu/H,GAAOllG,EAAOinN,GACrB,IAAIthP,EAAS,GACb,IAAMq6B,IAASA,EAAM59B,OACnB,OAAOuD,EAET,IAAI0tC,GAAS,EACT4hM,EAAU,GACV7yO,EAAS49B,EAAM59B,OAEnB6kP,EAAYiT,GAAYjT,EAAW,GACnC,QAAS5zM,EAAQjxC,EAAQ,CACvB,IAAIiD,EAAQ26B,EAAMqT,GACd4zM,EAAU5hP,EAAOguC,EAAOrT,KAC1Br6B,EAAOoB,KAAK1B,GACZ4vO,EAAQluO,KAAKssC,IAIjB,OADAqnN,GAAW16N,EAAOi1M,GACXtvO,EA0BT,SAASm8H,GAAQ9hG,GACf,OAAgB,MAATA,EAAgBA,EAAQisN,GAAcvqP,KAAKs+B,GAmBpD,SAASsN,GAAMtN,EAAOkoD,EAAOC,GAC3B,IAAI/lF,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,OAAKA,GAGD+lF,GAAqB,iBAAPA,GAAmB23K,GAAe9/N,EAAOkoD,EAAOC,IAChED,EAAQ,EACRC,EAAM/lF,IAGN8lF,EAAiB,MAATA,EAAgB,EAAIysK,GAAUzsK,GACtCC,EAAMA,IAAQlhD,EAAY7kC,EAASuyP,GAAUxsK,IAExCkyJ,GAAUr6M,EAAOkoD,EAAOC,IAVtB,GA8BX,SAASs/K,GAAYznO,EAAO36B,GAC1B,OAAOo2P,GAAgBz7N,EAAO36B,GA4BhC,SAASqiQ,GAAc1nO,EAAO36B,EAAOi0O,GACnC,OAAOuiB,GAAkB77N,EAAO36B,EAAO60P,GAAY5gB,EAAU,IAmB/D,SAASquB,GAAc3nO,EAAO36B,GAC5B,IAAIjD,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,GAAIA,EAAQ,CACV,IAAIixC,EAAQooN,GAAgBz7N,EAAO36B,GACnC,GAAIguC,EAAQjxC,GAAUwvP,GAAG5xN,EAAMqT,GAAQhuC,GACrC,OAAOguC,EAGX,OAAQ,EAqBV,SAASu0N,GAAgB5nO,EAAO36B,GAC9B,OAAOo2P,GAAgBz7N,EAAO36B,GAAO,GA4BvC,SAASwiQ,GAAkB7nO,EAAO36B,EAAOi0O,GACvC,OAAOuiB,GAAkB77N,EAAO36B,EAAO60P,GAAY5gB,EAAU,IAAI,GAmBnE,SAASwuB,GAAkB9nO,EAAO36B,GAChC,IAAIjD,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,GAAIA,EAAQ,CACV,IAAIixC,EAAQooN,GAAgBz7N,EAAO36B,GAAO,GAAQ,EAClD,GAAIusP,GAAG5xN,EAAMqT,GAAQhuC,GACnB,OAAOguC,EAGX,OAAQ,EAkBV,SAAS00N,GAAW/nO,GAClB,OAAQA,GAASA,EAAM59B,OACnBm6P,GAAev8N,GACf,GAmBN,SAASgoO,GAAahoO,EAAOs5M,GAC3B,OAAQt5M,GAASA,EAAM59B,OACnBm6P,GAAev8N,EAAOk6N,GAAY5gB,EAAU,IAC5C,GAiBN,SAASrkE,GAAKj1I,GACZ,IAAI59B,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,OAAOA,EAASi4O,GAAUr6M,EAAO,EAAG59B,GAAU,GA4BhD,SAAS6lQ,GAAKjoO,EAAO99B,EAAG29P,GACtB,OAAM7/N,GAASA,EAAM59B,QAGrBF,EAAK29P,GAAS39P,IAAM+kC,EAAa,EAAI0tN,GAAUzyP,GACxCm4O,GAAUr6M,EAAO,EAAG99B,EAAI,EAAI,EAAIA,IAH9B,GA+BX,SAASgmQ,GAAUloO,EAAO99B,EAAG29P,GAC3B,IAAIz9P,EAAkB,MAAT49B,EAAgB,EAAIA,EAAM59B,OACvC,OAAKA,GAGLF,EAAK29P,GAAS39P,IAAM+kC,EAAa,EAAI0tN,GAAUzyP,GAC/CA,EAAIE,EAASF,EACNm4O,GAAUr6M,EAAO99B,EAAI,EAAI,EAAIA,EAAGE,IAJ9B,GA0CX,SAAS+lQ,GAAenoO,EAAOinN,GAC7B,OAAQjnN,GAASA,EAAM59B,OACnB06P,GAAU98N,EAAOk6N,GAAYjT,EAAW,IAAI,GAAO,GACnD,GAsCN,SAASmhB,GAAUpoO,EAAOinN,GACxB,OAAQjnN,GAASA,EAAM59B,OACnB06P,GAAU98N,EAAOk6N,GAAYjT,EAAW,IACxC,GAmBN,IAAIohB,GAAQvN,IAAS,SAAS/E,GAC5B,OAAO0G,GAAS5H,GAAYkB,EAAQ,EAAG6D,IAAmB,OA0BxD0O,GAAUxN,IAAS,SAAS/E,GAC9B,IAAIzc,EAAW/6E,GAAKw3F,GAIpB,OAHI6D,GAAkBtgB,KACpBA,EAAWryM,GAENw1N,GAAS5H,GAAYkB,EAAQ,EAAG6D,IAAmB,GAAOM,GAAY5gB,EAAU,OAwBrFivB,GAAYzN,IAAS,SAAS/E,GAChC,IAAIxO,EAAahpF,GAAKw3F,GAEtB,OADAxO,EAAkC,mBAAdA,EAA2BA,EAAatgN,EACrDw1N,GAAS5H,GAAYkB,EAAQ,EAAG6D,IAAmB,GAAO3yN,EAAWsgN,MAqB9E,SAASihB,GAAKxoO,GACZ,OAAQA,GAASA,EAAM59B,OAAUq6P,GAASz8N,GAAS,GA0BrD,SAASyoO,GAAOzoO,EAAOs5M,GACrB,OAAQt5M,GAASA,EAAM59B,OAAUq6P,GAASz8N,EAAOk6N,GAAY5gB,EAAU,IAAM,GAuB/E,SAASovB,GAAS1oO,EAAOunN,GAEvB,OADAA,EAAkC,mBAAdA,EAA2BA,EAAatgN,EACpDjH,GAASA,EAAM59B,OAAUq6P,GAASz8N,EAAOiH,EAAWsgN,GAAc,GAsB5E,SAASohB,GAAM3oO,GACb,IAAMA,IAASA,EAAM59B,OACnB,MAAO,GAET,IAAIA,EAAS,EAOb,OANA49B,EAAQknN,GAAYlnN,GAAO,SAASk2I,GAClC,GAAI0jF,GAAkB1jF,GAEpB,OADA9zK,EAASwpP,GAAU11E,EAAM9zK,OAAQA,IAC1B,KAGJomP,GAAUpmP,GAAQ,SAASixC,GAChC,OAAOgmM,GAASr5M,EAAO2nN,GAAat0M,OAyBxC,SAASu1N,GAAU5oO,EAAOs5M,GACxB,IAAMt5M,IAASA,EAAM59B,OACnB,MAAO,GAET,IAAIuD,EAASgjQ,GAAM3oO,GACnB,OAAgB,MAAZs5M,EACK3zO,EAEF0zO,GAAS1zO,GAAQ,SAASuwK,GAC/B,OAAOpxK,GAAMw0O,EAAUryM,EAAWivI,MAwBtC,IAAI2yF,GAAU/N,IAAS,SAAS96N,EAAOmT,GACrC,OAAOymN,GAAkB55N,GACrB+zN,GAAe/zN,EAAOmT,GACtB,MAqBF21N,GAAMhO,IAAS,SAAS/E,GAC1B,OAAOkH,GAAQ/V,GAAY6O,EAAQ6D,QA0BjCmP,GAAQjO,IAAS,SAAS/E,GAC5B,IAAIzc,EAAW/6E,GAAKw3F,GAIpB,OAHI6D,GAAkBtgB,KACpBA,EAAWryM,GAENg2N,GAAQ/V,GAAY6O,EAAQ6D,IAAoBM,GAAY5gB,EAAU,OAwB3E0vB,GAAUlO,IAAS,SAAS/E,GAC9B,IAAIxO,EAAahpF,GAAKw3F,GAEtB,OADAxO,EAAkC,mBAAdA,EAA2BA,EAAatgN,EACrDg2N,GAAQ/V,GAAY6O,EAAQ6D,IAAoB3yN,EAAWsgN,MAmBhE0hB,GAAMnO,GAAS6N,IAkBnB,SAASO,GAAU1yI,EAAOrjF,GACxB,OAAO+pN,GAAc1mI,GAAS,GAAIrjF,GAAU,GAAIojH,IAkBlD,SAAS4yG,GAAc3yI,EAAOrjF,GAC5B,OAAO+pN,GAAc1mI,GAAS,GAAIrjF,GAAU,GAAIonN,IAuBlD,IAAI6O,GAAUtO,IAAS,SAAS/E,GAC9B,IAAI3zP,EAAS2zP,EAAO3zP,OAChBk3O,EAAWl3O,EAAS,EAAI2zP,EAAO3zP,EAAS,GAAK6kC,EAGjD,OADAqyM,EAA8B,mBAAZA,GAA0Byc,EAAOjvP,MAAOwyO,GAAYryM,EAC/D2hO,GAAU7S,EAAQzc,MAkC3B,SAAS91G,GAAMn+H,GACb,IAAIM,EAASinP,GAAOvnP,GAEpB,OADAM,EAAO0nP,WAAY,EACZ1nP,EA0BT,SAAS0jQ,GAAIhkQ,EAAO6qJ,GAElB,OADAA,EAAY7qJ,GACLA,EA0BT,SAASy7P,GAAKz7P,EAAO6qJ,GACnB,OAAOA,EAAY7qJ,GAmBrB,IAAIikQ,GAAY3I,IAAS,SAASrO,GAChC,IAAIlwP,EAASkwP,EAAMlwP,OACf8lF,EAAQ9lF,EAASkwP,EAAM,GAAK,EAC5BjtP,EAAQtE,KAAKosP,YACbj9F,EAAc,SAASt2D,GAAU,OAAOy4J,GAAOz4J,EAAQ04J,IAE3D,QAAIlwP,EAAS,GAAKrB,KAAKqsP,YAAYhrP,SAC7BiD,aAAiBwnP,IAAiBuE,GAAQlpK,IAGhD7iF,EAAQA,EAAMioC,MAAM46C,GAAQA,GAAS9lF,EAAS,EAAI,IAClDiD,EAAM+nP,YAAYrmP,KAAK,CACrB,KAAQ+5P,GACR,KAAQ,CAAC5wG,GACT,QAAWjpH,IAEN,IAAI6lN,GAAcznP,EAAOtE,KAAKssP,WAAWyT,MAAK,SAAS9gO,GAI5D,OAHI59B,IAAW49B,EAAM59B,QACnB49B,EAAMj5B,KAAKkgC,GAENjH,MAZAj/B,KAAK+/P,KAAK5wG,MA2CrB,SAASq5G,KACP,OAAO/lI,GAAMziI,MA6Bf,SAASyoQ,KACP,OAAO,IAAI1c,GAAc/rP,KAAKsE,QAAStE,KAAKssP,WAyB9C,SAASoc,KACH1oQ,KAAKwsP,aAAetmN,IACtBlmC,KAAKwsP,WAAaj4F,GAAQv0J,KAAKsE,UAEjC,IAAIO,EAAO7E,KAAKusP,WAAavsP,KAAKwsP,WAAWnrP,OACzCiD,EAAQO,EAAOqhC,EAAYlmC,KAAKwsP,WAAWxsP,KAAKusP,aAEpD,MAAO,CAAE,KAAQ1nP,EAAM,MAASP,GAqBlC,SAASqkQ,KACP,OAAO3oQ,KA2BT,SAAS4oQ,GAAatkQ,GACpB,IAAIM,EACAi6C,EAAS7+C,KAEb,MAAO6+C,aAAkBqtM,GAAY,CACnC,IAAI/9N,EAAQ69N,GAAantM,GACzB1wB,EAAMo+N,UAAY,EAClBp+N,EAAMq+N,WAAatmN,EACfthC,EACFotB,EAASo6N,YAAcj+N,EAEvBvpB,EAASupB,EAEX,IAAI6D,EAAW7D,EACf0wB,EAASA,EAAOutM,YAGlB,OADAp6N,EAASo6N,YAAc9nP,EAChBM,EAuBT,SAASikQ,KACP,IAAIvkQ,EAAQtE,KAAKosP,YACjB,GAAI9nP,aAAiBwnP,GAAa,CAChC,IAAIgd,EAAUxkQ,EAUd,OATItE,KAAKqsP,YAAYhrP,SACnBynQ,EAAU,IAAIhd,GAAY9rP,OAE5B8oQ,EAAUA,EAAQ/nI,UAClB+nI,EAAQzc,YAAYrmP,KAAK,CACvB,KAAQ+5P,GACR,KAAQ,CAACh/H,IACT,QAAW76F,IAEN,IAAI6lN,GAAc+c,EAAS9oQ,KAAKssP,WAEzC,OAAOtsP,KAAK+/P,KAAKh/H,IAiBnB,SAASgoI,KACP,OAAOpb,GAAiB3tP,KAAKosP,YAAapsP,KAAKqsP,aA2BjD,IAAI2c,GAAUrK,IAAiB,SAAS/5P,EAAQN,EAAOsX,GACjD9b,GAAea,KAAKiE,EAAQgX,KAC5BhX,EAAOgX,GAETk1O,GAAgBlsP,EAAQgX,EAAK,MA6CjC,SAASmiB,GAAMyiJ,EAAY0lE,EAAW4Y,GACpC,IAAI/vK,EAAO1Z,GAAQmrG,GAAcylE,GAAawN,GAI9C,OAHIqL,GAASC,GAAev+E,EAAY0lE,EAAW4Y,KACjD5Y,EAAYhgN,GAEP6oD,EAAKyxF,EAAY24E,GAAYjT,EAAW,IA4CjD,SAAShqO,GAAOskK,EAAY0lE,GAC1B,IAAIn3J,EAAO1Z,GAAQmrG,GAAc2lE,GAAc0N,GAC/C,OAAO9kK,EAAKyxF,EAAY24E,GAAYjT,EAAW,IAuCjD,IAAI59N,GAAOm3O,GAAWpmG,IAqBlB4vG,GAAWxJ,GAAWkG,IAuB1B,SAASuD,GAAQ1oF,EAAY+3D,GAC3B,OAAOub,GAAY/3O,GAAIykK,EAAY+3D,GAAW,GAuBhD,SAAS4wB,GAAY3oF,EAAY+3D,GAC/B,OAAOub,GAAY/3O,GAAIykK,EAAY+3D,GAAWgB,GAwBhD,SAAS6vB,GAAa5oF,EAAY+3D,EAAU5wE,GAE1C,OADAA,EAAQA,IAAUzhI,EAAY,EAAI0tN,GAAUjsF,GACrCmsF,GAAY/3O,GAAIykK,EAAY+3D,GAAW5wE,GAiChD,SAAS7kK,GAAQ09K,EAAY+3D,GAC3B,IAAIxpJ,EAAO1Z,GAAQmrG,GAAculE,GAAYkL,GAC7C,OAAOliK,EAAKyxF,EAAY24E,GAAY5gB,EAAU,IAuBhD,SAAS8wB,GAAa7oF,EAAY+3D,GAChC,IAAIxpJ,EAAO1Z,GAAQmrG,GAAcwlE,GAAiBuN,GAClD,OAAOxkK,EAAKyxF,EAAY24E,GAAY5gB,EAAU,IA0BhD,IAAI+wB,GAAU3K,IAAiB,SAAS/5P,EAAQN,EAAOsX,GACjD9b,GAAea,KAAKiE,EAAQgX,GAC9BhX,EAAOgX,GAAK5V,KAAK1B,GAEjBwsP,GAAgBlsP,EAAQgX,EAAK,CAACtX,OAkClC,SAASu0E,GAAS2nG,EAAYl8K,EAAOy8F,EAAW+9J,GAC9Ct+E,EAAay3E,GAAYz3E,GAAcA,EAAapuI,GAAOouI,GAC3Dz/E,EAAaA,IAAc+9J,EAASlL,GAAU7yJ,GAAa,EAE3D,IAAI1/F,EAASm/K,EAAWn/K,OAIxB,OAHI0/F,EAAY,IACdA,EAAY8pJ,GAAUxpP,EAAS0/F,EAAW,IAErChR,GAASywF,GACXz/E,GAAa1/F,GAAUm/K,EAAWtlK,QAAQ5W,EAAOy8F,IAAc,IAC7D1/F,GAAUilP,GAAY9lE,EAAYl8K,EAAOy8F,IAAc,EA0BhE,IAAIwoK,GAAYxP,IAAS,SAASv5E,EAAYpzF,EAAMgF,GAClD,IAAI9/C,GAAS,EACT4/M,EAAwB,mBAAR9kK,EAChBxoF,EAASqzP,GAAYz3E,GAAc9gL,EAAM8gL,EAAWn/K,QAAU,GAKlE,OAHA4vP,GAASzwE,GAAY,SAASl8K,GAC5BM,IAAS0tC,GAAS4/M,EAASnuP,GAAMqpF,EAAM9oF,EAAO8tF,GAAQkjK,GAAWhxP,EAAO8oF,EAAMgF,MAEzExtF,KA+BL4kQ,GAAQ7K,IAAiB,SAAS/5P,EAAQN,EAAOsX,GACnDk1O,GAAgBlsP,EAAQgX,EAAKtX,MA6C/B,SAASyX,GAAIykK,EAAY+3D,GACvB,IAAIxpJ,EAAO1Z,GAAQmrG,GAAc83D,GAAW0f,GAC5C,OAAOjpK,EAAKyxF,EAAY24E,GAAY5gB,EAAU,IAgChD,SAASkxB,GAAQjpF,EAAYgtE,EAAW0L,EAAQ4F,GAC9C,OAAkB,MAAdt+E,EACK,IAEJnrG,GAAQm4K,KACXA,EAAyB,MAAbA,EAAoB,GAAK,CAACA,IAExC0L,EAAS4F,EAAQ54N,EAAYgzN,EACxB7jL,GAAQ6jL,KACXA,EAAmB,MAAVA,EAAiB,GAAK,CAACA,IAE3BD,GAAYz4E,EAAYgtE,EAAW0L,IAuC5C,IAAIwQ,GAAY/K,IAAiB,SAAS/5P,EAAQN,EAAOsX,GACvDhX,EAAOgX,EAAM,EAAI,GAAG5V,KAAK1B,MACxB,WAAa,MAAO,CAAC,GAAI,OAuC5B,SAASytB,GAAOyuJ,EAAY+3D,EAAUE,GACpC,IAAI1pJ,EAAO1Z,GAAQmrG,GAAcg4D,GAAc8O,GAC3C5O,EAAYt3O,UAAUC,OAAS,EAEnC,OAAO0tF,EAAKyxF,EAAY24E,GAAY5gB,EAAU,GAAIE,EAAaC,EAAWuY,IAyB5E,SAAS0Y,GAAYnpF,EAAY+3D,EAAUE,GACzC,IAAI1pJ,EAAO1Z,GAAQmrG,GAAcimE,GAAmBa,GAChD5O,EAAYt3O,UAAUC,OAAS,EAEnC,OAAO0tF,EAAKyxF,EAAY24E,GAAY5gB,EAAU,GAAIE,EAAaC,EAAW6a,IAqC5E,SAASjxP,GAAOk+K,EAAY0lE,GAC1B,IAAIn3J,EAAO1Z,GAAQmrG,GAAc2lE,GAAc0N,GAC/C,OAAO9kK,EAAKyxF,EAAYopF,GAAOzQ,GAAYjT,EAAW,KAiBxD,SAAS2jB,GAAOrpF,GACd,IAAIzxF,EAAO1Z,GAAQmrG,GAAc8vE,GAAc4J,GAC/C,OAAOnrK,EAAKyxF,GAuBd,SAASspF,GAAWtpF,EAAYr/K,EAAG29P,GAE/B39P,GADG29P,EAAQC,GAAev+E,EAAYr/K,EAAG29P,GAAS39P,IAAM+kC,GACpD,EAEA0tN,GAAUzyP,GAEhB,IAAI4tF,EAAO1Z,GAAQmrG,GAAcgwE,GAAkB2J,GACnD,OAAOprK,EAAKyxF,EAAYr/K,GAkB1B,SAAS4oQ,GAAQvpF,GACf,IAAIzxF,EAAO1Z,GAAQmrG,GAAcmwE,GAAe6J,GAChD,OAAOzrK,EAAKyxF,GAwBd,SAAS3iJ,GAAK2iJ,GACZ,GAAkB,MAAdA,EACF,OAAO,EAET,GAAIy3E,GAAYz3E,GACd,OAAOzwF,GAASywF,GAAcuoE,GAAWvoE,GAAcA,EAAWn/K,OAEpE,IAAI26J,EAAMi2F,GAAOzxE,GACjB,OAAIxkB,GAAOilF,GAAUjlF,GAAOulF,GACnB/gE,EAAW3iJ,KAEb65N,GAASl3E,GAAYn/K,OAuC9B,SAASiyB,GAAKktJ,EAAY0lE,EAAW4Y,GACnC,IAAI/vK,EAAO1Z,GAAQmrG,GAAckmE,GAAY+T,GAI7C,OAHIqE,GAASC,GAAev+E,EAAY0lE,EAAW4Y,KACjD5Y,EAAYhgN,GAEP6oD,EAAKyxF,EAAY24E,GAAYjT,EAAW,IAgCjD,IAAI8jB,GAASjQ,IAAS,SAASv5E,EAAYgtE,GACzC,GAAkB,MAAdhtE,EACF,MAAO,GAET,IAAIn/K,EAASmsP,EAAUnsP,OAMvB,OALIA,EAAS,GAAK09P,GAAev+E,EAAYgtE,EAAU,GAAIA,EAAU,IACnEA,EAAY,GACHnsP,EAAS,GAAK09P,GAAevR,EAAU,GAAIA,EAAU,GAAIA,EAAU,MAC5EA,EAAY,CAACA,EAAU,KAElByL,GAAYz4E,EAAYszE,GAAYtG,EAAW,GAAI,OAqBxD98N,GAAM05N,IAAU,WAClB,OAAO3iD,GAAKj5K,KAAKkC,OA6BnB,SAASu5O,GAAM9oQ,EAAG4tF,GAChB,GAAmB,mBAARA,EACT,MAAM,IAAIjpF,GAAUy4O,GAGtB,OADAp9O,EAAIyyP,GAAUzyP,GACP,WACL,KAAMA,EAAI,EACR,OAAO4tF,EAAKhrF,MAAM/D,KAAMoB,YAsB9B,SAASm/P,GAAIxxK,EAAM5tF,EAAG29P,GAGpB,OAFA39P,EAAI29P,EAAQ54N,EAAY/kC,EACxBA,EAAK4tF,GAAa,MAAL5tF,EAAa4tF,EAAK1tF,OAASF,EACjCihQ,GAAWrzK,EAAMywJ,EAAet5M,EAAWA,EAAWA,EAAWA,EAAW/kC,GAoBrF,SAAS+oQ,GAAO/oQ,EAAG4tF,GACjB,IAAInqF,EACJ,GAAmB,mBAARmqF,EACT,MAAM,IAAIjpF,GAAUy4O,GAGtB,OADAp9O,EAAIyyP,GAAUzyP,GACP,WAOL,QANMA,EAAI,IACRyD,EAASmqF,EAAKhrF,MAAM/D,KAAMoB,YAExBD,GAAK,IACP4tF,EAAO7oD,GAEFthC,GAuCX,IAAIy+C,GAAO02M,IAAS,SAAShrK,EAAM9qF,EAAS05P,GAC1C,IAAIhM,EAAU1S,EACd,GAAI0e,EAASt8P,OAAQ,CACnB,IAAIu8P,EAAUjV,GAAegV,EAAU2B,GAAUj8M,KACjDsuM,GAAWrS,EAEb,OAAO8iB,GAAWrzK,EAAM4iK,EAAS1tP,EAAS05P,EAAUC,MAgDlDuM,GAAUpQ,IAAS,SAASlhK,EAAQj9E,EAAK+hP,GAC3C,IAAIhM,EAAU1S,EAAiBC,EAC/B,GAAIye,EAASt8P,OAAQ,CACnB,IAAIu8P,EAAUjV,GAAegV,EAAU2B,GAAU6K,KACjDxY,GAAWrS,EAEb,OAAO8iB,GAAWxmP,EAAK+1O,EAAS94J,EAAQ8kK,EAAUC,MA4CpD,SAASwM,GAAMr7K,EAAMs+E,EAAOyxF,GAC1BzxF,EAAQyxF,EAAQ54N,EAAYmnI,EAC5B,IAAIzoK,EAASw9P,GAAWrzK,EAAMqwJ,EAAiBl5M,EAAWA,EAAWA,EAAWA,EAAWA,EAAWmnI,GAEtG,OADAzoK,EAAOwjP,YAAcgiB,GAAMhiB,YACpBxjP,EAyCT,SAASylQ,GAAWt7K,EAAMs+E,EAAOyxF,GAC/BzxF,EAAQyxF,EAAQ54N,EAAYmnI,EAC5B,IAAIzoK,EAASw9P,GAAWrzK,EAAMswJ,EAAuBn5M,EAAWA,EAAWA,EAAWA,EAAWA,EAAWmnI,GAE5G,OADAzoK,EAAOwjP,YAAciiB,GAAWjiB,YACzBxjP,EAyDT,SAAS0lQ,GAASv7K,EAAMgkK,EAAMnxP,GAC5B,IAAI2oQ,EACAC,EACAC,EACA7lQ,EACAo7M,EACA0qD,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACT7wB,GAAW,EAEf,GAAmB,mBAARjrJ,EACT,MAAM,IAAIjpF,GAAUy4O,GAUtB,SAASusB,EAAW1lN,GAClB,IAAIgtC,EAAOm4K,EACPtmQ,EAAUumQ,EAKd,OAHAD,EAAWC,EAAWtkO,EACtBykO,EAAiBvlN,EACjBxgD,EAASmqF,EAAKhrF,MAAME,EAASmuF,GACtBxtF,EAGT,SAASmmQ,EAAY3lN,GAMnB,OAJAulN,EAAiBvlN,EAEjB46J,EAAUt3K,GAAWsiO,EAAcjY,GAE5B6X,EAAUE,EAAW1lN,GAAQxgD,EAGtC,SAASqmQ,EAAc7lN,GACrB,IAAI8lN,EAAoB9lN,EAAOslN,EAC3BS,EAAsB/lN,EAAOulN,EAC7BS,EAAcrY,EAAOmY,EAEzB,OAAOL,EACH/f,GAAUsgB,EAAaX,EAAUU,GACjCC,EAGN,SAASC,EAAajmN,GACpB,IAAI8lN,EAAoB9lN,EAAOslN,EAC3BS,EAAsB/lN,EAAOulN,EAKjC,OAAQD,IAAiBxkO,GAAcglO,GAAqBnY,GACzDmY,EAAoB,GAAOL,GAAUM,GAAuBV,EAGjE,SAASO,IACP,IAAI5lN,EAAO10B,KACX,GAAI26O,EAAajmN,GACf,OAAOkmN,EAAalmN,GAGtB46J,EAAUt3K,GAAWsiO,EAAcC,EAAc7lN,IAGnD,SAASkmN,EAAalmN,GAKpB,OAJA46J,EAAU95K,EAIN8zM,GAAYuwB,EACPO,EAAW1lN,IAEpBmlN,EAAWC,EAAWtkO,EACfthC,GAGT,SAASkoJ,IACHkzD,IAAY95K,GACdqgC,GAAay5I,GAEf2qD,EAAiB,EACjBJ,EAAWG,EAAeF,EAAWxqD,EAAU95K,EAGjD,SAASo7E,IACP,OAAO0+F,IAAY95K,EAAYthC,EAAS0mQ,EAAa56O,MAGvD,SAAS66O,IACP,IAAInmN,EAAO10B,KACP86O,EAAaH,EAAajmN,GAM9B,GAJAmlN,EAAWnpQ,UACXopQ,EAAWxqQ,KACX0qQ,EAAetlN,EAEXomN,EAAY,CACd,GAAIxrD,IAAY95K,EACd,OAAO6kO,EAAYL,GAErB,GAAIG,EAIF,OAFAtkM,GAAay5I,GACbA,EAAUt3K,GAAWsiO,EAAcjY,GAC5B+X,EAAWJ,GAMtB,OAHI1qD,IAAY95K,IACd85K,EAAUt3K,GAAWsiO,EAAcjY,IAE9BnuP,EAIT,OA3GAmuP,EAAO9xE,GAAS8xE,IAAS,EACrB/5K,GAASp3E,KACXgpQ,IAAYhpQ,EAAQgpQ,QACpBC,EAAS,YAAajpQ,EACtB6oQ,EAAUI,EAAShgB,GAAU5pE,GAASr/K,EAAQ6oQ,UAAY,EAAG1X,GAAQ0X,EACrEzwB,EAAW,aAAcp4O,IAAYA,EAAQo4O,SAAWA,GAoG1DuxB,EAAUz+G,OAASA,EACnBy+G,EAAUjqJ,MAAQA,EACXiqJ,EAqBT,IAAI9xF,GAAQsgF,IAAS,SAAShrK,EAAMqD,GAClC,OAAO0gK,GAAU/jK,EAAM,EAAGqD,MAsBxB3pD,GAAQsxN,IAAS,SAAShrK,EAAMgkK,EAAM3gK,GACxC,OAAO0gK,GAAU/jK,EAAMkyF,GAAS8xE,IAAS,EAAG3gK,MAqB9C,SAASq5K,GAAK18K,GACZ,OAAOqzK,GAAWrzK,EAAM2wJ,GA+C1B,SAAS0kB,GAAQr1K,EAAMtoB,GACrB,GAAmB,mBAARsoB,GAAmC,MAAZtoB,GAAuC,mBAAZA,EAC3D,MAAM,IAAI3gE,GAAUy4O,GAEtB,IAAImtB,EAAW,WACb,IAAIt5K,EAAOhxF,UACPwa,EAAM6qD,EAAWA,EAAS1iE,MAAM/D,KAAMoyF,GAAQA,EAAK,GACnD3pE,EAAQijP,EAASjjP,MAErB,GAAIA,EAAMI,IAAIjN,GACZ,OAAO6M,EAAM/mB,IAAIka,GAEnB,IAAIhX,EAASmqF,EAAKhrF,MAAM/D,KAAMoyF,GAE9B,OADAs5K,EAASjjP,MAAQA,EAAME,IAAI/M,EAAKhX,IAAW6jB,EACpC7jB,GAGT,OADA8mQ,EAASjjP,MAAQ,IAAK27O,GAAQuH,OAAS9c,IAChC6c,EA0BT,SAAS9B,GAAO1jB,GACd,GAAwB,mBAAbA,EACT,MAAM,IAAIpgP,GAAUy4O,GAEtB,OAAO,WACL,IAAInsJ,EAAOhxF,UACX,OAAQgxF,EAAK/wF,QACX,KAAK,EAAG,OAAQ6kP,EAAUvlP,KAAKX,MAC/B,KAAK,EAAG,OAAQkmP,EAAUvlP,KAAKX,KAAMoyF,EAAK,IAC1C,KAAK,EAAG,OAAQ8zJ,EAAUvlP,KAAKX,KAAMoyF,EAAK,GAAIA,EAAK,IACnD,KAAK,EAAG,OAAQ8zJ,EAAUvlP,KAAKX,KAAMoyF,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE9D,OAAQ8zJ,EAAUniP,MAAM/D,KAAMoyF,IAsBlC,SAASw5K,GAAK78K,GACZ,OAAOm7K,GAAO,EAAGn7K,GAzDnBq1K,GAAQuH,MAAQ9c,GA2FhB,IAAIgd,GAAWpP,IAAS,SAAS1tK,EAAM40K,GACrCA,EAAmC,GAArBA,EAAWtiQ,QAAeg0E,GAAQsuL,EAAW,IACvDrrB,GAASqrB,EAAW,GAAI9b,GAAUsR,OAClC7gB,GAASwb,GAAY6P,EAAY,GAAI9b,GAAUsR,OAEnD,IAAI2S,EAAcnI,EAAWtiQ,OAC7B,OAAO04P,IAAS,SAAS3nK,GACvB,IAAI9/C,GAAS,EACTjxC,EAASypP,GAAU14J,EAAK/wF,OAAQyqQ,GAEpC,QAASx5N,EAAQjxC,EACf+wF,EAAK9/C,GAASqxN,EAAWrxN,GAAO3xC,KAAKX,KAAMoyF,EAAK9/C,IAElD,OAAOvuC,GAAMgrF,EAAM/uF,KAAMoyF,SAqCzB25K,GAAUhS,IAAS,SAAShrK,EAAM4uK,GACpC,IAAIC,EAAUjV,GAAegV,EAAU2B,GAAUyM,KACjD,OAAO3J,GAAWrzK,EAAMuwJ,EAAmBp5M,EAAWy3N,EAAUC,MAmC9DoO,GAAejS,IAAS,SAAShrK,EAAM4uK,GACzC,IAAIC,EAAUjV,GAAegV,EAAU2B,GAAU0M,KACjD,OAAO5J,GAAWrzK,EAAMwwJ,EAAyBr5M,EAAWy3N,EAAUC,MAyBpEqO,GAAQrM,IAAS,SAAS7wK,EAAMmlJ,GAClC,OAAOkuB,GAAWrzK,EAAM0wJ,EAAiBv5M,EAAWA,EAAWA,EAAWguM,MA4B5E,SAASv6B,GAAK5qH,EAAM5H,GAClB,GAAmB,mBAAR4H,EACT,MAAM,IAAIjpF,GAAUy4O,GAGtB,OADAp3J,EAAQA,IAAUjhD,EAAYihD,EAAQysK,GAAUzsK,GACzC4yK,GAAShrK,EAAM5H,GAqCxB,SAASymE,GAAO7+D,EAAM5H,GACpB,GAAmB,mBAAR4H,EACT,MAAM,IAAIjpF,GAAUy4O,GAGtB,OADAp3J,EAAiB,MAATA,EAAgB,EAAI0jK,GAAU+I,GAAUzsK,GAAQ,GACjD4yK,IAAS,SAAS3nK,GACvB,IAAInzD,EAAQmzD,EAAKjL,GACbq9K,EAAY9qB,GAAUtnJ,EAAM,EAAGjL,GAKnC,OAHIloD,GACFylK,GAAU8/D,EAAWvlO,GAEhBl7B,GAAMgrF,EAAM/uF,KAAMwkQ,MAgD7B,SAAS0H,GAASn9K,EAAMgkK,EAAMnxP,GAC5B,IAAIgpQ,GAAU,EACV5wB,GAAW,EAEf,GAAmB,mBAARjrJ,EACT,MAAM,IAAIjpF,GAAUy4O,GAMtB,OAJIvlK,GAASp3E,KACXgpQ,EAAU,YAAahpQ,IAAYA,EAAQgpQ,QAAUA,EACrD5wB,EAAW,aAAcp4O,IAAYA,EAAQo4O,SAAWA,GAEnDswB,GAASv7K,EAAMgkK,EAAM,CAC1B,QAAW6X,EACX,QAAW7X,EACX,SAAY/Y,IAmBhB,SAASmyB,GAAMp9K,GACb,OAAOwxK,GAAIxxK,EAAM,GAyBnB,SAASonF,GAAK7xK,EAAO64J,GACnB,OAAO4uG,GAAQxP,GAAap/F,GAAU74J,GAsCxC,SAAS8nQ,KACP,IAAKhrQ,UAAUC,OACb,MAAO,GAET,IAAIiD,EAAQlD,UAAU,GACtB,OAAOi0E,GAAQ/wE,GAASA,EAAQ,CAACA,GA6BnC,SAAS6pB,GAAM7pB,GACb,OAAOotP,GAAUptP,EAAOw6O,GAkC1B,SAASutB,GAAU/nQ,EAAOstP,GAExB,OADAA,EAAkC,mBAAdA,EAA2BA,EAAa1rN,EACrDwrN,GAAUptP,EAAOw6O,EAAoB8S,GAqB9C,SAAS0a,GAAUhoQ,GACjB,OAAOotP,GAAUptP,EAAOs6O,EAAkBE,GA+B5C,SAASytB,GAAcjoQ,EAAOstP,GAE5B,OADAA,EAAkC,mBAAdA,EAA2BA,EAAa1rN,EACrDwrN,GAAUptP,EAAOs6O,EAAkBE,EAAoB8S,GA2BhE,SAAS4a,GAAW3zK,EAAQvyB,GAC1B,OAAiB,MAAVA,GAAkBusL,GAAeh6J,EAAQvyB,EAAQzjE,GAAKyjE,IAmC/D,SAASuqL,GAAGvsP,EAAOqwP,GACjB,OAAOrwP,IAAUqwP,GAAUrwP,IAAUA,GAASqwP,IAAUA,EA0B1D,IAAI8X,GAAKhL,GAA0B/M,IAyB/BgY,GAAMjL,IAA0B,SAASn9P,EAAOqwP,GAClD,OAAOrwP,GAASqwP,KAqBd1E,GAAcsF,GAAgB,WAAa,OAAOn0P,UAApB,IAAsCm0P,GAAkB,SAASjxP,GACjG,OAAO65O,GAAa75O,IAAUxE,GAAea,KAAK2D,EAAO,YACtD88F,GAAqBzgG,KAAK2D,EAAO,WA0BlC+wE,GAAU31E,EAAM21E,QAmBhB+8E,GAAgBkzF,GAAoBuC,GAAUvC,IAAqBkQ,GA2BvE,SAASyC,GAAY3zP,GACnB,OAAgB,MAATA,GAAiB+yP,GAAS/yP,EAAMjD,UAAYyuF,GAAWxrF,GA4BhE,SAASu0P,GAAkBv0P,GACzB,OAAO65O,GAAa75O,IAAU2zP,GAAY3zP,GAoB5C,SAAS2rF,GAAU3rF,GACjB,OAAiB,IAAVA,IAA4B,IAAVA,GACtB65O,GAAa75O,IAAU80O,GAAW90O,IAAUq8O,EAoBjD,IAAItuF,GAAWo4F,IAAkByZ,GAmB7Bz/K,GAAS8gK,GAAasC,GAAUtC,IAAckQ,GAmBlD,SAASkX,GAAUroQ,GACjB,OAAO65O,GAAa75O,IAA6B,IAAnBA,EAAMojM,WAAmBznG,GAAc37F,GAoCvE,SAAS4V,GAAQ5V,GACf,GAAa,MAATA,EACF,OAAO,EAET,GAAI2zP,GAAY3zP,KACX+wE,GAAQ/wE,IAA0B,iBAATA,GAA4C,mBAAhBA,EAAMksG,QAC1D6hD,GAAS/tJ,IAAU6vJ,GAAa7vJ,IAAU2rP,GAAY3rP,IAC1D,OAAQA,EAAMjD,OAEhB,IAAI26J,EAAMi2F,GAAO3tP,GACjB,GAAI03J,GAAOilF,GAAUjlF,GAAOulF,GAC1B,OAAQj9O,EAAMu5B,KAEhB,GAAI85N,GAAYrzP,GACd,OAAQozP,GAASpzP,GAAOjD,OAE1B,IAAK,IAAIua,KAAOtX,EACd,GAAIxE,GAAea,KAAK2D,EAAOsX,GAC7B,OAAO,EAGX,OAAO,EA+BT,SAASgxP,GAAQtoQ,EAAOqwP,GACtB,OAAOe,GAAYpxP,EAAOqwP,GAmC5B,SAASkY,GAAYvoQ,EAAOqwP,EAAO/C,GACjCA,EAAkC,mBAAdA,EAA2BA,EAAa1rN,EAC5D,IAAIthC,EAASgtP,EAAaA,EAAWttP,EAAOqwP,GAASzuN,EACrD,OAAOthC,IAAWshC,EAAYwvN,GAAYpxP,EAAOqwP,EAAOzuN,EAAW0rN,KAAgBhtP,EAqBrF,SAAS4/E,GAAQlgF,GACf,IAAK65O,GAAa75O,GAChB,OAAO,EAET,IAAI03J,EAAMo9E,GAAW90O,GACrB,OAAO03J,GAAO8kF,GAAY9kF,GAAO6kF,GACN,iBAAjBv8O,EAAM8nB,SAA4C,iBAAd9nB,EAAM+O,OAAqB4sF,GAAc37F,GA6BzF,SAASqmP,GAASrmP,GAChB,MAAuB,iBAATA,GAAqBomP,GAAepmP,GAoBpD,SAASwrF,GAAWxrF,GAClB,IAAK00E,GAAS10E,GACZ,OAAO,EAIT,IAAI03J,EAAMo9E,GAAW90O,GACrB,OAAO03J,GAAO+kF,GAAW/kF,GAAOglF,GAAUhlF,GAAO0kF,GAAY1kF,GAAOqlF,GA6BtE,SAASyrB,GAAUxoQ,GACjB,MAAuB,iBAATA,GAAqBA,GAASsvP,GAAUtvP,GA6BxD,SAAS+yP,GAAS/yP,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAAS4+J,EA4B7C,SAASlqF,GAAS10E,GAChB,IAAI4oB,SAAc5oB,EAClB,OAAgB,MAATA,IAA0B,UAAR4oB,GAA4B,YAARA,GA2B/C,SAASixN,GAAa75O,GACpB,OAAgB,MAATA,GAAiC,iBAATA,EAoBjC,IAAImhP,GAAQD,GAAYqC,GAAUrC,IAAamR,GA8B/C,SAAShhB,GAAQ98I,EAAQvyB,GACvB,OAAOuyB,IAAWvyB,GAAUswL,GAAY/9J,EAAQvyB,EAAQ4xL,GAAa5xL,IAmCvE,SAASymM,GAAYl0K,EAAQvyB,EAAQsrL,GAEnC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAa1rN,EACrD0wN,GAAY/9J,EAAQvyB,EAAQ4xL,GAAa5xL,GAASsrL,GA+B3D,SAAS/0K,GAAMv4E,GAIb,OAAO0rF,GAAS1rF,IAAUA,IAAUA,EA6BtC,SAAS0oQ,GAAS1oQ,GAChB,GAAI2/P,GAAW3/P,GACb,MAAM,IAAI1D,GAAM09O,GAElB,OAAO0Y,GAAa1yP,GAoBtB,SAAS2oQ,GAAO3oQ,GACd,OAAiB,OAAVA,EAuBT,SAAS4oQ,GAAM5oQ,GACb,OAAgB,MAATA,EA6BT,SAAS0rF,GAAS1rF,GAChB,MAAuB,iBAATA,GACX65O,GAAa75O,IAAU80O,GAAW90O,IAAU48O,EA+BjD,SAASjhJ,GAAc37F,GACrB,IAAK65O,GAAa75O,IAAU80O,GAAW90O,IAAU68O,GAC/C,OAAO,EAET,IAAIjqJ,EAAQ4yJ,GAAaxlP,GACzB,GAAc,OAAV4yF,EACF,OAAO,EAET,IAAIgoK,EAAOp/P,GAAea,KAAKu2F,EAAO,gBAAkBA,EAAMj3F,YAC9D,MAAsB,mBAARi/P,GAAsBA,aAAgBA,GAClD3V,GAAa5oP,KAAKu+P,IAASxV,GAoB/B,IAAI19E,GAAW05E,GAAemC,GAAUnC,IAAgBwR,GA6BxD,SAASiW,GAAc7oQ,GACrB,OAAOwoQ,GAAUxoQ,IAAUA,IAAU4+J,GAAoB5+J,GAAS4+J,EAoBpE,IAAI0iF,GAAQD,GAAYkC,GAAUlC,IAAawR,GAmB/C,SAASpnK,GAASzrF,GAChB,MAAuB,iBAATA,IACV+wE,GAAQ/wE,IAAU65O,GAAa75O,IAAU80O,GAAW90O,IAAUk9O,GAoBpE,SAASvnE,GAAS31K,GAChB,MAAuB,iBAATA,GACX65O,GAAa75O,IAAU80O,GAAW90O,IAAU85O,GAoBjD,IAAIjqF,GAAe0xF,GAAmBgC,GAAUhC,IAAoBuR,GAmBpE,SAASxnK,GAAYtrF,GACnB,OAAOA,IAAU4hC,EAoBnB,SAASknO,GAAU9oQ,GACjB,OAAO65O,GAAa75O,IAAU2tP,GAAO3tP,IAAUm9O,GAoBjD,SAAS4rB,GAAU/oQ,GACjB,OAAO65O,GAAa75O,IAAU80O,GAAW90O,IAAUo9O,GA0BrD,IAAI4rB,GAAK7L,GAA0B1J,IAyB/BwV,GAAM9L,IAA0B,SAASn9P,EAAOqwP,GAClD,OAAOrwP,GAASqwP,KA0BlB,SAASpgG,GAAQjwJ,GACf,IAAKA,EACH,MAAO,GAET,GAAI2zP,GAAY3zP,GACd,OAAOyrF,GAASzrF,GAASs1O,GAAct1O,GAASyoP,GAAUzoP,GAE5D,GAAI2lP,IAAe3lP,EAAM2lP,IACvB,OAAO1B,GAAgBjkP,EAAM2lP,OAE/B,IAAIjuF,EAAMi2F,GAAO3tP,GACbyqF,EAAOitE,GAAOilF,EAASuH,GAAcxsF,GAAOulF,GAASqH,GAAax2M,GAEtE,OAAO28C,EAAKzqF,GA0Bd,SAASk9P,GAASl9P,GAChB,IAAKA,EACH,OAAiB,IAAVA,EAAcA,EAAQ,EAG/B,GADAA,EAAQ28K,GAAS38K,GACbA,IAAUi1O,GAAYj1O,KAAWi1O,EAAU,CAC7C,IAAIn0N,EAAQ9gB,EAAQ,GAAK,EAAI,EAC7B,OAAO8gB,EAAO86N,EAEhB,OAAO57O,IAAUA,EAAQA,EAAQ,EA6BnC,SAASsvP,GAAUtvP,GACjB,IAAIM,EAAS48P,GAASl9P,GAClBkpQ,EAAY5oQ,EAAS,EAEzB,OAAOA,IAAWA,EAAU4oQ,EAAY5oQ,EAAS4oQ,EAAY5oQ,EAAU,EA8BzE,SAASqoK,GAAS3oK,GAChB,OAAOA,EAAQosP,GAAUkD,GAAUtvP,GAAQ,EAAG87O,GAAoB,EA0BpE,SAASn/D,GAAS38K,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI21K,GAAS31K,GACX,OAAO67O,EAET,GAAInnK,GAAS10E,GAAQ,CACnB,IAAIqwP,EAAgC,mBAAjBrwP,EAAM0uK,QAAwB1uK,EAAM0uK,UAAY1uK,EACnEA,EAAQ00E,GAAS27K,GAAUA,EAAQ,GAAMA,EAE3C,GAAoB,iBAATrwP,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQqjP,GAASrjP,GACjB,IAAImpQ,EAAW1pB,GAAWz0O,KAAKhL,GAC/B,OAAQmpQ,GAAYxpB,GAAU30O,KAAKhL,GAC/BugP,GAAavgP,EAAMioC,MAAM,GAAIkhO,EAAW,EAAI,GAC3C3pB,GAAWx0O,KAAKhL,GAAS67O,GAAO77O,EA2BvC,SAASy0P,GAAcz0P,GACrB,OAAO6sP,GAAW7sP,EAAO+sP,GAAO/sP,IA2BlC,SAASopQ,GAAcppQ,GACrB,OAAOA,EACHosP,GAAUkD,GAAUtvP,IAAS4+J,EAAkBA,GACpC,IAAV5+J,EAAcA,EAAQ,EAwB7B,SAASiK,GAASjK,GAChB,OAAgB,MAATA,EAAgB,GAAKm1O,GAAan1O,GAqC3C,IAAIvD,GAAS69P,IAAe,SAAS/lK,EAAQvyB,GAC3C,GAAIqxL,GAAYrxL,IAAW2xL,GAAY3xL,GACrC6qL,GAAW7qL,EAAQzjE,GAAKyjE,GAASuyB,QAGnC,IAAK,IAAIj9E,KAAO0qD,EACVxmE,GAAea,KAAK2lE,EAAQ1qD,IAC9B45I,GAAY38D,EAAQj9E,EAAK0qD,EAAO1qD,OAoClC+xP,GAAW/O,IAAe,SAAS/lK,EAAQvyB,GAC7C6qL,GAAW7qL,EAAQ+qL,GAAO/qL,GAASuyB,MAgCjC+0K,GAAehP,IAAe,SAAS/lK,EAAQvyB,EAAQkyL,EAAU5G,GACnET,GAAW7qL,EAAQ+qL,GAAO/qL,GAASuyB,EAAQ+4J,MA+BzCic,GAAajP,IAAe,SAAS/lK,EAAQvyB,EAAQkyL,EAAU5G,GACjET,GAAW7qL,EAAQzjE,GAAKyjE,GAASuyB,EAAQ+4J,MAoBvC9iM,GAAK8wM,GAAStO,IAoClB,SAASnxP,GAAOD,EAAWkkE,GACzB,IAAIx/D,EAASqnP,GAAW/rP,GACxB,OAAqB,MAAdkkE,EAAqBx/D,EAASssP,GAAWtsP,EAAQw/D,GAwB1D,IAAIg/B,GAAW22J,IAAS,SAASlhK,EAAQogC,GACvCpgC,EAASt5F,GAAOs5F,GAEhB,IAAIvmD,GAAS,EACTjxC,EAAS43H,EAAQ53H,OACjBy9P,EAAQz9P,EAAS,EAAI43H,EAAQ,GAAK/yF,EAElC44N,GAASC,GAAe9lI,EAAQ,GAAIA,EAAQ,GAAI6lI,KAClDz9P,EAAS,GAGX,QAASixC,EAAQjxC,EAAQ,CACvB,IAAIilE,EAAS2yD,EAAQ3mF,GACjBmjF,EAAQ47H,GAAO/qL,GACfwnM,GAAc,EACdC,EAAct4I,EAAMp0H,OAExB,QAASysQ,EAAaC,EAAa,CACjC,IAAInyP,EAAM65G,EAAMq4I,GACZxpQ,EAAQu0F,EAAOj9E,IAEftX,IAAU4hC,GACT2qN,GAAGvsP,EAAOm2O,GAAY7+N,MAAU9b,GAAea,KAAKk4F,EAAQj9E,MAC/Di9E,EAAOj9E,GAAO0qD,EAAO1qD,KAK3B,OAAOi9E,KAsBLm1K,GAAejU,IAAS,SAAS3nK,GAEnC,OADAA,EAAKpsF,KAAKkgC,EAAWq8N,IACdx+P,GAAMkqQ,GAAW/nO,EAAWksD,MAsCrC,SAAS87K,GAAQr1K,EAAQqtJ,GACvB,OAAOW,GAAYhuJ,EAAQsgK,GAAYjT,EAAW,GAAIoN,IAsCxD,SAAS6a,GAAYt1K,EAAQqtJ,GAC3B,OAAOW,GAAYhuJ,EAAQsgK,GAAYjT,EAAW,GAAIsN,IA+BxD,SAAS4a,GAAMv1K,EAAQ0/I,GACrB,OAAiB,MAAV1/I,EACHA,EACAo7J,GAAQp7J,EAAQsgK,GAAY5gB,EAAU,GAAI8Y,IA6BhD,SAASgd,GAAWx1K,EAAQ0/I,GAC1B,OAAiB,MAAV1/I,EACHA,EACAs7J,GAAat7J,EAAQsgK,GAAY5gB,EAAU,GAAI8Y,IA+BrD,SAASid,GAAOz1K,EAAQ0/I,GACtB,OAAO1/I,GAAUy6J,GAAWz6J,EAAQsgK,GAAY5gB,EAAU,IA6B5D,SAASg2B,GAAY11K,EAAQ0/I,GAC3B,OAAO1/I,GAAU26J,GAAgB36J,EAAQsgK,GAAY5gB,EAAU,IA0BjE,SAASi2B,GAAU31K,GACjB,OAAiB,MAAVA,EAAiB,GAAKu7J,GAAcv7J,EAAQh2F,GAAKg2F,IA0B1D,SAAS41K,GAAY51K,GACnB,OAAiB,MAAVA,EAAiB,GAAKu7J,GAAcv7J,EAAQw4J,GAAOx4J,IA4B5D,SAASn3F,GAAIm3F,EAAQzL,EAAM1Q,GACzB,IAAI93E,EAAmB,MAAVi0F,EAAiB3yD,EAAYmuN,GAAQx7J,EAAQzL,GAC1D,OAAOxoF,IAAWshC,EAAYw2C,EAAe93E,EA8B/C,SAASikB,GAAIgwE,EAAQzL,GACnB,OAAiB,MAAVyL,GAAkBgrK,GAAQhrK,EAAQzL,EAAMwnK,IA6BjD,SAAS0D,GAAMz/J,EAAQzL,GACrB,OAAiB,MAAVyL,GAAkBgrK,GAAQhrK,EAAQzL,EAAMynK,IAqBjD,IAAI6Z,GAAS5N,IAAe,SAASl8P,EAAQN,EAAOsX,GACrC,MAATtX,GACyB,mBAAlBA,EAAMiK,WACfjK,EAAQo2O,GAAqB/5O,KAAK2D,IAGpCM,EAAON,GAASsX,IACf2+O,GAAShD,KA4BRoX,GAAW7N,IAAe,SAASl8P,EAAQN,EAAOsX,GACvC,MAATtX,GACyB,mBAAlBA,EAAMiK,WACfjK,EAAQo2O,GAAqB/5O,KAAK2D,IAGhCxE,GAAea,KAAKiE,EAAQN,GAC9BM,EAAON,GAAO0B,KAAK4V,GAEnBhX,EAAON,GAAS,CAACsX,KAElBu9O,IAoBCyV,GAAS7U,GAASzE,IA8BtB,SAASzyP,GAAKg2F,GACZ,OAAOo/J,GAAYp/J,GAAUi3J,GAAcj3J,GAAU6+J,GAAS7+J,GA0BhE,SAASw4J,GAAOx4J,GACd,OAAOo/J,GAAYp/J,GAAUi3J,GAAcj3J,GAAQ,GAAQ++J,GAAW/+J,GAwBxE,SAASg2K,GAAQh2K,EAAQ0/I,GACvB,IAAI3zO,EAAS,GAMb,OALA2zO,EAAW4gB,GAAY5gB,EAAU,GAEjC+a,GAAWz6J,GAAQ,SAASv0F,EAAOsX,EAAKi9E,GACtCi4J,GAAgBlsP,EAAQ2zO,EAASj0O,EAAOsX,EAAKi9E,GAASv0F,MAEjDM,EA+BT,SAASkqQ,GAAUj2K,EAAQ0/I,GACzB,IAAI3zO,EAAS,GAMb,OALA2zO,EAAW4gB,GAAY5gB,EAAU,GAEjC+a,GAAWz6J,GAAQ,SAASv0F,EAAOsX,EAAKi9E,GACtCi4J,GAAgBlsP,EAAQgX,EAAK28N,EAASj0O,EAAOsX,EAAKi9E,OAE7Cj0F,EAkCT,IAAIgsJ,GAAQguG,IAAe,SAAS/lK,EAAQvyB,EAAQkyL,GAClDD,GAAU1/J,EAAQvyB,EAAQkyL,MAkCxByV,GAAYrP,IAAe,SAAS/lK,EAAQvyB,EAAQkyL,EAAU5G,GAChE2G,GAAU1/J,EAAQvyB,EAAQkyL,EAAU5G,MAuBlCmd,GAAOnP,IAAS,SAAS/mK,EAAQ04J,GACnC,IAAI3sP,EAAS,GACb,GAAc,MAAVi0F,EACF,OAAOj0F,EAET,IAAIitP,GAAS,EACbN,EAAQjZ,GAASiZ,GAAO,SAASnkK,GAG/B,OAFAA,EAAOknK,GAASlnK,EAAMyL,GACtBg5J,IAAWA,EAASzkK,EAAK/rF,OAAS,GAC3B+rF,KAET+jK,GAAWt4J,EAAQ85J,GAAa95J,GAASj0F,GACrCitP,IACFjtP,EAAS8sP,GAAU9sP,EAAQg6O,EAAkBC,EAAkBC,EAAoB0jB,KAErF,IAAInhQ,EAASkwP,EAAMlwP,OACnB,MAAOA,IACLu4P,GAAUh1P,EAAQ2sP,EAAMlwP,IAE1B,OAAOuD,KAuBT,SAASoqQ,GAAOn2K,EAAQqtJ,GACtB,OAAO+oB,GAAOp2K,EAAQ+wK,GAAOzQ,GAAYjT,KAoB3C,IAAIiD,GAAOyW,IAAS,SAAS/mK,EAAQ04J,GACnC,OAAiB,MAAV14J,EAAiB,GAAKygK,GAASzgK,EAAQ04J,MAqBhD,SAAS0d,GAAOp2K,EAAQqtJ,GACtB,GAAc,MAAVrtJ,EACF,MAAO,GAET,IAAI48B,EAAQ6iH,GAASqa,GAAa95J,IAAS,SAASpY,GAClD,MAAO,CAACA,MAGV,OADAylK,EAAYiT,GAAYjT,GACjBqT,GAAW1gK,EAAQ48B,GAAO,SAASnxH,EAAO8oF,GAC/C,OAAO84J,EAAU5hP,EAAO8oF,EAAK,OAiCjC,SAASxoF,GAAOi0F,EAAQzL,EAAM1Q,GAC5B0Q,EAAOknK,GAASlnK,EAAMyL,GAEtB,IAAIvmD,GAAS,EACTjxC,EAAS+rF,EAAK/rF,OAGbA,IACHA,EAAS,EACTw3F,EAAS3yD,GAEX,QAASoM,EAAQjxC,EAAQ,CACvB,IAAIiD,EAAkB,MAAVu0F,EAAiB3yD,EAAY2yD,EAAO07J,GAAMnnK,EAAK96C,KACvDhuC,IAAU4hC,IACZoM,EAAQjxC,EACRiD,EAAQo4E,GAEVmc,EAAS/I,GAAWxrF,GAASA,EAAM3D,KAAKk4F,GAAUv0F,EAEpD,OAAOu0F,EA+BT,SAASlwE,GAAIkwE,EAAQzL,EAAM9oF,GACzB,OAAiB,MAAVu0F,EAAiBA,EAAS2gK,GAAQ3gK,EAAQzL,EAAM9oF,GA2BzD,SAAS4qQ,GAAQr2K,EAAQzL,EAAM9oF,EAAOstP,GAEpC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAa1rN,EAC3C,MAAV2yD,EAAiBA,EAAS2gK,GAAQ3gK,EAAQzL,EAAM9oF,EAAOstP,GA2BhE,IAAIud,GAAUhN,GAAct/P,IA0BxBusQ,GAAYjN,GAAc9Q,IAgC9B,SAAS3I,GAAU7vJ,EAAQ0/I,EAAUE,GACnC,IAAI0U,EAAQ93K,GAAQwjB,GAChBw2K,EAAYliB,GAAS96F,GAASx5D,IAAWs7D,GAAat7D,GAG1D,GADA0/I,EAAW4gB,GAAY5gB,EAAU,GACd,MAAfE,EAAqB,CACvB,IAAIymB,EAAOrmK,GAAUA,EAAO54F,YAE1Bw4O,EADE42B,EACYliB,EAAQ,IAAI+R,EAAO,GAE1BlmL,GAAS6f,IACF/I,GAAWovK,GAAQjT,GAAWnC,GAAajxJ,IAG3C,GAMlB,OAHCw2K,EAAYtpB,GAAYuN,IAAYz6J,GAAQ,SAASv0F,EAAOguC,EAAOumD,GAClE,OAAO0/I,EAASE,EAAan0O,EAAOguC,EAAOumD,MAEtC4/I,EA8BT,SAAS62B,GAAMz2K,EAAQzL,GACrB,OAAiB,MAAVyL,GAAwB+gK,GAAU/gK,EAAQzL,GA8BnD,SAASisB,GAAOxgB,EAAQzL,EAAM0uK,GAC5B,OAAiB,MAAVjjK,EAAiBA,EAASgjK,GAAWhjK,EAAQzL,EAAMmvK,GAAaT,IA2BzE,SAASyT,GAAW12K,EAAQzL,EAAM0uK,EAASlK,GAEzC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAa1rN,EAC3C,MAAV2yD,EAAiBA,EAASgjK,GAAWhjK,EAAQzL,EAAMmvK,GAAaT,GAAUlK,GA6BnF,SAASx/M,GAAOymD,GACd,OAAiB,MAAVA,EAAiB,GAAKivJ,GAAWjvJ,EAAQh2F,GAAKg2F,IA2BvD,SAAS22K,GAAS32K,GAChB,OAAiB,MAAVA,EAAiB,GAAKivJ,GAAWjvJ,EAAQw4J,GAAOx4J,IAwBzD,SAAS42K,GAAMppK,EAAQ0wI,EAAO0a,GAa5B,OAZIA,IAAUvrN,IACZurN,EAAQ1a,EACRA,EAAQ7wM,GAENurN,IAAUvrN,IACZurN,EAAQxwE,GAASwwE,GACjBA,EAAQA,IAAUA,EAAQA,EAAQ,GAEhC1a,IAAU7wM,IACZ6wM,EAAQ91D,GAAS81D,GACjBA,EAAQA,IAAUA,EAAQA,EAAQ,GAE7B2Z,GAAUzvE,GAAS56E,GAAS0wI,EAAO0a,GAyC5C,SAASie,GAAQrpK,EAAQlf,EAAOC,GAS9B,OARAD,EAAQq6K,GAASr6K,GACbC,IAAQlhD,GACVkhD,EAAMD,EACNA,EAAQ,GAERC,EAAMo6K,GAASp6K,GAEjBif,EAAS46E,GAAS56E,GACXyuJ,GAAYzuJ,EAAQlf,EAAOC,GAkCpC,SAASl4E,GAAO6nO,EAAO0a,EAAOke,GA2B5B,GA1BIA,GAA+B,kBAAZA,GAAyB5Q,GAAehoB,EAAO0a,EAAOke,KAC3Ele,EAAQke,EAAWzpO,GAEjBypO,IAAazpO,IACK,kBAATurN,GACTke,EAAWle,EACXA,EAAQvrN,GAEe,kBAAT6wM,IACd44B,EAAW54B,EACXA,EAAQ7wM,IAGR6wM,IAAU7wM,GAAaurN,IAAUvrN,GACnC6wM,EAAQ,EACR0a,EAAQ,IAGR1a,EAAQyqB,GAASzqB,GACb0a,IAAUvrN,GACZurN,EAAQ1a,EACRA,EAAQ,GAER0a,EAAQ+P,GAAS/P,IAGjB1a,EAAQ0a,EAAO,CACjB,IAAIzgF,EAAO+lE,EACXA,EAAQ0a,EACRA,EAAQzgF,EAEV,GAAI2+F,GAAY54B,EAAQ,GAAK0a,EAAQ,EAAG,CACtC,IAAIsT,EAAO9Z,KACX,OAAOH,GAAU/T,EAASguB,GAAQtT,EAAQ1a,EAAQ6N,GAAe,QAAUmgB,EAAO,IAAI1jQ,OAAS,KAAOowP,GAExG,OAAOlB,GAAWxZ,EAAO0a,GAyB3B,IAAI3T,GAAYzD,IAAiB,SAASz1O,EAAQm5O,EAAMzrM,GAEtD,OADAyrM,EAAOA,EAAKvpN,cACL5vB,GAAU0tC,EAAQurM,GAAWE,GAAQA,MAkB9C,SAASF,GAAWx9E,GAClB,OAAO29E,GAAWzvO,GAAS8xJ,GAAQ7rI,eAqBrC,SAASylN,GAAO55E,GAEd,OADAA,EAAS9xJ,GAAS8xJ,GACXA,GAAUA,EAAOnvJ,QAAQ+sO,GAAS1D,IAAcrpO,QAAQgtO,GAAa,IA0B9E,SAAS/iO,GAASklJ,EAAQ16I,EAAQ+kD,GAChC21F,EAAS9xJ,GAAS8xJ,GAClB16I,EAAS8zN,GAAa9zN,GAEtB,IAAItkB,EAASg/J,EAAOh/J,OACpBqpE,EAAWA,IAAaxkC,EACpB7kC,EACAqvP,GAAUkD,GAAUlpL,GAAW,EAAGrpE,GAEtC,IAAI+lF,EAAM1c,EAEV,OADAA,GAAY/kD,EAAOtkB,OACZqpE,GAAY,GAAK21F,EAAO9zH,MAAMm+B,EAAU0c,IAAQzhE,EA+BzD,SAASiqP,GAAOvvG,GAEd,OADAA,EAAS9xJ,GAAS8xJ,GACVA,GAAUuiF,GAAmBtzO,KAAK+wJ,GACtCA,EAAOnvJ,QAAQwxO,GAAiB2F,IAChChoF,EAkBN,SAASwvG,GAAaxvG,GAEpB,OADAA,EAAS9xJ,GAAS8xJ,GACVA,GAAU+iF,GAAgB9zO,KAAK+wJ,GACnCA,EAAOnvJ,QAAQiyO,GAAc,QAC7B9iF,EAwBN,IAAIyvG,GAAYz1B,IAAiB,SAASz1O,EAAQm5O,EAAMzrM,GACtD,OAAO1tC,GAAU0tC,EAAQ,IAAM,IAAMyrM,EAAKvpN,iBAuBxCu7O,GAAY11B,IAAiB,SAASz1O,EAAQm5O,EAAMzrM,GACtD,OAAO1tC,GAAU0tC,EAAQ,IAAM,IAAMyrM,EAAKvpN,iBAoBxCw7O,GAAan2B,GAAgB,eAyBjC,SAASx5I,GAAIggE,EAAQh/J,EAAQilG,GAC3B+5D,EAAS9xJ,GAAS8xJ,GAClBh/J,EAASuyP,GAAUvyP,GAEnB,IAAI4uQ,EAAY5uQ,EAAS0nP,GAAW1oF,GAAU,EAC9C,IAAKh/J,GAAU4uQ,GAAa5uQ,EAC1B,OAAOg/J,EAET,IAAIw6F,GAAOx5P,EAAS4uQ,GAAa,EACjC,OACE7O,GAAc7W,GAAYsQ,GAAMv0J,GAChC+5D,EACA+gG,GAAc9W,GAAWuQ,GAAMv0J,GA2BnC,SAAS4pK,GAAO7vG,EAAQh/J,EAAQilG,GAC9B+5D,EAAS9xJ,GAAS8xJ,GAClBh/J,EAASuyP,GAAUvyP,GAEnB,IAAI4uQ,EAAY5uQ,EAAS0nP,GAAW1oF,GAAU,EAC9C,OAAQh/J,GAAU4uQ,EAAY5uQ,EACzBg/J,EAAS+gG,GAAc//P,EAAS4uQ,EAAW3pK,GAC5C+5D,EA0BN,SAAS8vG,GAAS9vG,EAAQh/J,EAAQilG,GAChC+5D,EAAS9xJ,GAAS8xJ,GAClBh/J,EAASuyP,GAAUvyP,GAEnB,IAAI4uQ,EAAY5uQ,EAAS0nP,GAAW1oF,GAAU,EAC9C,OAAQh/J,GAAU4uQ,EAAY5uQ,EACzB+/P,GAAc//P,EAAS4uQ,EAAW3pK,GAAS+5D,EAC5CA,EA2BN,SAASp7G,GAASo7G,EAAQqP,EAAOovF,GAM/B,OALIA,GAAkB,MAATpvF,EACXA,EAAQ,EACCA,IACTA,GAASA,GAEJs7E,GAAez8O,GAAS8xJ,GAAQnvJ,QAAQmyO,GAAa,IAAK3zE,GAAS,GAyB5E,SAAS6R,GAAOlhB,EAAQl/J,EAAG29P,GAMzB,OAJE39P,GADG29P,EAAQC,GAAe1+F,EAAQl/J,EAAG29P,GAAS39P,IAAM+kC,GAChD,EAEA0tN,GAAUzyP,GAET24P,GAAWvrP,GAAS8xJ,GAASl/J,GAsBtC,SAAS+P,KACP,IAAIkhF,EAAOhxF,UACPi/J,EAAS9xJ,GAAS6jF,EAAK,IAE3B,OAAOA,EAAK/wF,OAAS,EAAIg/J,EAASA,EAAOnvJ,QAAQkhF,EAAK,GAAIA,EAAK,IAwBjE,IAAIg+K,GAAY/1B,IAAiB,SAASz1O,EAAQm5O,EAAMzrM,GACtD,OAAO1tC,GAAU0tC,EAAQ,IAAM,IAAMyrM,EAAKvpN,iBAsB5C,SAASpd,GAAMipJ,EAAQ+c,EAAWwN,GAKhC,OAJIA,GAAyB,iBAATA,GAAqBm0E,GAAe1+F,EAAQ+c,EAAWwN,KACzExN,EAAYwN,EAAQ1kJ,GAEtB0kJ,EAAQA,IAAU1kJ,EAAYk6M,EAAmBx1D,IAAU,EACtDA,GAGLvqB,EAAS9xJ,GAAS8xJ,GACdA,IACsB,iBAAb+c,GACO,MAAbA,IAAsBpR,GAASoR,MAEpCA,EAAYq8D,GAAar8D,IACpBA,GAAau8D,GAAWt5E,IACpBq5E,GAAUE,GAAcv5E,GAAS,EAAGuqB,GAGxCvqB,EAAOjpJ,MAAMgmK,EAAWwN,IAZtB,GAoCX,IAAIylF,GAAYh2B,IAAiB,SAASz1O,EAAQm5O,EAAMzrM,GACtD,OAAO1tC,GAAU0tC,EAAQ,IAAM,IAAM0rM,GAAWD,MA0BlD,SAAS/iO,GAAWqlJ,EAAQ16I,EAAQ+kD,GAOlC,OANA21F,EAAS9xJ,GAAS8xJ,GAClB31F,EAAuB,MAAZA,EACP,EACAgmL,GAAUkD,GAAUlpL,GAAW,EAAG21F,EAAOh/J,QAE7CskB,EAAS8zN,GAAa9zN,GACf06I,EAAO9zH,MAAMm+B,EAAUA,EAAW/kD,EAAOtkB,SAAWskB,EA2G7D,SAAS2yD,GAAS+nF,EAAQz+J,EAASk9P,GAIjC,IAAIl2C,EAAWijC,GAAOuH,iBAElB0L,GAASC,GAAe1+F,EAAQz+J,EAASk9P,KAC3Cl9P,EAAUskC,GAEZm6H,EAAS9xJ,GAAS8xJ,GAClBz+J,EAAUgsQ,GAAa,GAAIhsQ,EAASgnN,EAAU05C,IAE9C,IAIIgO,EACAC,EALAC,EAAU5C,GAAa,GAAIhsQ,EAAQ4uQ,QAAS5nD,EAAS4nD,QAASlO,IAC9DmO,EAAc5tQ,GAAK2tQ,GACnBE,EAAgB5oB,GAAW0oB,EAASC,GAIpCn+N,EAAQ,EACRq+N,EAAc/uQ,EAAQ+uQ,aAAexsB,GACrC79K,EAAS,WAGTsqM,EAAer0P,IAChB3a,EAAQguQ,QAAUzrB,IAAW79K,OAAS,IACvCqqM,EAAYrqM,OAAS,KACpBqqM,IAAgB5tB,GAAgBa,GAAeO,IAAW79K,OAAS,KACnE1kE,EAAQivQ,UAAY1sB,IAAW79K,OAAS,KACzC,KAMEwqM,EAAY,kBACbhxQ,GAAea,KAAKiB,EAAS,cACzBA,EAAQkvQ,UAAY,IAAI5/P,QAAQ,MAAO,KACvC,6BAA+BozO,GAAmB,KACnD,KAENjkF,EAAOnvJ,QAAQ0/P,GAAc,SAASnhO,EAAOshO,EAAaC,EAAkBC,EAAiBC,EAAehpO,GAsB1G,OArBA8oO,IAAqBA,EAAmBC,GAGxC3qM,GAAU+5F,EAAO9zH,MAAM+F,EAAOpK,GAAQh3B,QAAQkzO,GAAmBkE,IAG7DyoB,IACFT,GAAa,EACbhqM,GAAU,YAAcyqM,EAAc,UAEpCG,IACFX,GAAe,EACfjqM,GAAU,OAAS4qM,EAAgB,eAEjCF,IACF1qM,GAAU,iBAAmB0qM,EAAmB,+BAElD1+N,EAAQpK,EAASuH,EAAMpuC,OAIhBouC,KAGT62B,GAAU,OAIV,IAAI6qM,EAAWrxQ,GAAea,KAAKiB,EAAS,aAAeA,EAAQuvQ,SACnE,GAAKA,GAKA,GAAIztB,GAA2Bp0O,KAAK6hQ,GACvC,MAAM,IAAIvwQ,GAAM49O,QALhBl4K,EAAS,iBAAmBA,EAAS,QASvCA,GAAUiqM,EAAejqM,EAAOp1D,QAAQoxO,GAAsB,IAAMh8K,GACjEp1D,QAAQqxO,GAAqB,MAC7BrxO,QAAQsxO,GAAuB,OAGlCl8K,EAAS,aAAe6qM,GAAY,OAAS,SAC1CA,EACG,GACA,wBAEJ,qBACCb,EACI,mBACA,KAEJC,EACG,uFAEA,OAEJjqM,EACA,gBAEF,IAAI1hE,EAASuzI,IAAQ,WACnB,OAAOmO,GAASmqH,EAAaK,EAAY,UAAYxqM,GAClDviE,MAAMmiC,EAAWwqO,MAMtB,GADA9rQ,EAAO0hE,OAASA,EACZke,GAAQ5/E,GACV,MAAMA,EAER,OAAOA,EAwBT,SAASwsQ,GAAQ9sQ,GACf,OAAOiK,GAASjK,GAAOkwB,cAwBzB,SAAS68O,GAAQ/sQ,GACf,OAAOiK,GAASjK,GAAO0qD,cAyBzB,SAAStzC,GAAK2kJ,EAAQ/5D,EAAOw4J,GAE3B,GADAz+F,EAAS9xJ,GAAS8xJ,GACdA,IAAWy+F,GAASx4J,IAAUpgE,GAChC,OAAOyhN,GAAStnF,GAElB,IAAKA,KAAY/5D,EAAQmzI,GAAanzI,IACpC,OAAO+5D,EAET,IAAI05E,EAAaH,GAAcv5E,GAC3B4nF,EAAarO,GAActzI,GAC3Bnf,EAAQ6gK,GAAgBjO,EAAYkO,GACpC7gK,EAAM8gK,GAAcnO,EAAYkO,GAAc,EAElD,OAAOvO,GAAUK,EAAY5yJ,EAAOC,GAAKphE,KAAK,IAsBhD,SAASsrP,GAAQjxG,EAAQ/5D,EAAOw4J,GAE9B,GADAz+F,EAAS9xJ,GAAS8xJ,GACdA,IAAWy+F,GAASx4J,IAAUpgE,GAChC,OAAOm6H,EAAO9zH,MAAM,EAAGq7M,GAAgBvnF,GAAU,GAEnD,IAAKA,KAAY/5D,EAAQmzI,GAAanzI,IACpC,OAAO+5D,EAET,IAAI05E,EAAaH,GAAcv5E,GAC3Bj5E,EAAM8gK,GAAcnO,EAAYH,GAActzI,IAAU,EAE5D,OAAOozI,GAAUK,EAAY,EAAG3yJ,GAAKphE,KAAK,IAsB5C,SAASurP,GAAUlxG,EAAQ/5D,EAAOw4J,GAEhC,GADAz+F,EAAS9xJ,GAAS8xJ,GACdA,IAAWy+F,GAASx4J,IAAUpgE,GAChC,OAAOm6H,EAAOnvJ,QAAQmyO,GAAa,IAErC,IAAKhjF,KAAY/5D,EAAQmzI,GAAanzI,IACpC,OAAO+5D,EAET,IAAI05E,EAAaH,GAAcv5E,GAC3Bl5E,EAAQ6gK,GAAgBjO,EAAYH,GAActzI,IAEtD,OAAOozI,GAAUK,EAAY5yJ,GAAOnhE,KAAK,IAwC3C,SAASwrP,GAASnxG,EAAQz+J,GACxB,IAAIP,EAASs+O,EACT8xB,EAAW7xB,EAEf,GAAI5mK,GAASp3E,GAAU,CACrB,IAAIw7K,EAAY,cAAex7K,EAAUA,EAAQw7K,UAAYA,EAC7D/7K,EAAS,WAAYO,EAAUgyP,GAAUhyP,EAAQP,QAAUA,EAC3DowQ,EAAW,aAAc7vQ,EAAU63O,GAAa73O,EAAQ6vQ,UAAYA,EAEtEpxG,EAAS9xJ,GAAS8xJ,GAElB,IAAI4vG,EAAY5vG,EAAOh/J,OACvB,GAAIs4O,GAAWt5E,GAAS,CACtB,IAAI05E,EAAaH,GAAcv5E,GAC/B4vG,EAAYl2B,EAAW14O,OAEzB,GAAIA,GAAU4uQ,EACZ,OAAO5vG,EAET,IAAIj5E,EAAM/lF,EAAS0nP,GAAW0oB,GAC9B,GAAIrqL,EAAM,EACR,OAAOqqL,EAET,IAAI7sQ,EAASm1O,EACTL,GAAUK,EAAY,EAAG3yJ,GAAKphE,KAAK,IACnCq6I,EAAO9zH,MAAM,EAAG66C,GAEpB,GAAIg2F,IAAcl3I,EAChB,OAAOthC,EAAS6sQ,EAKlB,GAHI13B,IACF3yJ,GAAQxiF,EAAOvD,OAAS+lF,GAEtB4kF,GAASoR,IACX,GAAI/c,EAAO9zH,MAAM66C,GAAKnsE,OAAOmiK,GAAY,CACvC,IAAI3tI,EACA79B,EAAYhN,EAEXw4K,EAAU/nC,SACb+nC,EAAY7gK,GAAO6gK,EAAU92G,OAAQ/3D,GAASs1O,GAAQxpO,KAAK+iK,IAAc,MAE3EA,EAAUpnB,UAAY,EACtB,MAAQvmH,EAAQ2tI,EAAU/iK,KAAKzI,GAC7B,IAAI8/P,EAASjiO,EAAM6C,MAErB1tC,EAASA,EAAO2nC,MAAM,EAAGmlO,IAAWxrO,EAAYkhD,EAAMsqL,SAEnD,GAAIrxG,EAAOnlJ,QAAQu+N,GAAar8D,GAAYh2F,IAAQA,EAAK,CAC9D,IAAI90C,EAAQ1tC,EAAOwW,YAAYgiK,GAC3B9qI,GAAS,IACX1tC,EAASA,EAAO2nC,MAAM,EAAG+F,IAG7B,OAAO1tC,EAAS6sQ,EAsBlB,SAAS/lH,GAAS2U,GAEhB,OADAA,EAAS9xJ,GAAS8xJ,GACVA,GAAUsiF,GAAiBrzO,KAAK+wJ,GACpCA,EAAOnvJ,QAAQuxO,GAAewG,IAC9B5oF,EAuBN,IAAIsxG,GAAYt3B,IAAiB,SAASz1O,EAAQm5O,EAAMzrM,GACtD,OAAO1tC,GAAU0tC,EAAQ,IAAM,IAAMyrM,EAAK/uL,iBAoBxCgvL,GAAanE,GAAgB,eAqBjC,SAASK,GAAM75E,EAAQhkJ,EAASyiP,GAI9B,OAHAz+F,EAAS9xJ,GAAS8xJ,GAClBhkJ,EAAUyiP,EAAQ54N,EAAY7pB,EAE1BA,IAAY6pB,EACPo1M,GAAej7E,GAAUu9E,GAAav9E,GAAUw4E,GAAWx4E,GAE7DA,EAAO5wH,MAAMpzB,IAAY,GA2BlC,IAAI87H,GAAU4hH,IAAS,SAAShrK,EAAMqD,GACpC,IACE,OAAOruF,GAAMgrF,EAAM7oD,EAAWksD,GAC9B,MAAO1tF,GACP,OAAO8/E,GAAQ9/E,GAAKA,EAAI,IAAI9D,GAAM8D,OA8BlCktQ,GAAUhS,IAAS,SAAS/mK,EAAQg5K,GAKtC,OAJA9rB,GAAU8rB,GAAa,SAASj2P,GAC9BA,EAAM24O,GAAM34O,GACZk1O,GAAgBj4J,EAAQj9E,EAAKynC,GAAKw1C,EAAOj9E,GAAMi9E,OAE1CA,KAgCT,SAASi5K,GAAKjiB,GACZ,IAAIxuP,EAAkB,MAATwuP,EAAgB,EAAIA,EAAMxuP,OACnC0/P,EAAa5H,KASjB,OAPAtJ,EAASxuP,EAAci3O,GAASuX,GAAO,SAASp0O,GAC9C,GAAsB,mBAAXA,EAAK,GACd,MAAM,IAAI3V,GAAUy4O,GAEtB,MAAO,CAACwiB,EAAWtlP,EAAK,IAAKA,EAAK,OAJlB,GAOXs+O,IAAS,SAAS3nK,GACvB,IAAI9/C,GAAS,EACb,QAASA,EAAQjxC,EAAQ,CACvB,IAAIoa,EAAOo0O,EAAMv9M,GACjB,GAAIvuC,GAAM0X,EAAK,GAAIzb,KAAMoyF,GACvB,OAAOruF,GAAM0X,EAAK,GAAIzb,KAAMoyF,OA8BpC,SAAS2/K,GAASzrM,GAChB,OAAOssL,GAAalB,GAAUprL,EAAQs4K,IAsBxC,SAAS2b,GAASj2P,GAChB,OAAO,WACL,OAAOA,GAwBX,SAAS0tQ,GAAU1tQ,EAAOo4E,GACxB,OAAiB,MAATp4E,GAAiBA,IAAUA,EAASo4E,EAAep4E,EAyB7D,IAAI2tQ,GAAOtS,KAuBPuS,GAAYvS,IAAW,GAkB3B,SAASpI,GAASjzP,GAChB,OAAOA,EA6CT,SAASi0O,GAASxpJ,GAChB,OAAOuoK,GAA4B,mBAARvoK,EAAqBA,EAAO2iK,GAAU3iK,EAAM6vJ,IAsCzE,SAASxkO,GAAQksD,GACf,OAAOmxL,GAAY/F,GAAUprL,EAAQs4K,IAoCvC,SAASuzB,GAAgB/kL,EAAM2pK,GAC7B,OAAOS,GAAoBpqK,EAAMskK,GAAUqF,EAAUnY,IA2BvD,IAAI98O,GAASi4P,IAAS,SAAS3sK,EAAMgF,GACnC,OAAO,SAASyG,GACd,OAAOy8J,GAAWz8J,EAAQzL,EAAMgF,OA2BhCggL,GAAWrY,IAAS,SAASlhK,EAAQzG,GACvC,OAAO,SAAShF,GACd,OAAOkoK,GAAWz8J,EAAQzL,EAAMgF,OAwCpC,SAASigL,GAAMx5K,EAAQvyB,EAAQ1kE,GAC7B,IAAI6zH,EAAQ5yH,GAAKyjE,GACburM,EAAczd,GAAc9tL,EAAQmvD,GAEzB,MAAX7zH,GACEo3E,GAAS1S,KAAYurM,EAAYxwQ,SAAWo0H,EAAMp0H,UACtDO,EAAU0kE,EACVA,EAASuyB,EACTA,EAAS74F,KACT6xQ,EAAczd,GAAc9tL,EAAQzjE,GAAKyjE,KAE3C,IAAIm8D,IAAUzpD,GAASp3E,IAAY,UAAWA,MAAcA,EAAQ6gI,MAChEyvH,EAASpiK,GAAW+I,GAqBxB,OAnBAktJ,GAAU8rB,GAAa,SAAS/3B,GAC9B,IAAI/qJ,EAAOzoB,EAAOwzK,GAClBjhJ,EAAOihJ,GAAc/qJ,EACjBmjK,IACFr5J,EAAO34F,UAAU45O,GAAc,WAC7B,IAAIqS,EAAWnsP,KAAKssP,UACpB,GAAI7pH,GAAS0pH,EAAU,CACrB,IAAIvnP,EAASi0F,EAAO74F,KAAKosP,aACrB6P,EAAUr3P,EAAOynP,YAAcU,GAAU/sP,KAAKqsP,aAIlD,OAFA4P,EAAQj2P,KAAK,CAAE,KAAQ+oF,EAAM,KAAQ3tF,UAAW,QAAWy3F,IAC3Dj0F,EAAO0nP,UAAYH,EACZvnP,EAET,OAAOmqF,EAAKhrF,MAAM80F,EAAQ6rG,GAAU,CAAC1kM,KAAKsE,SAAUlD,iBAKnDy3F,EAgBT,SAASy5K,KAIP,OAHI7qE,GAAKriM,IAAMpF,OACbynM,GAAKriM,EAAIukP,IAEJ3pP,KAeT,SAAS46E,MAwBT,SAAS23L,GAAOpxQ,GAEd,OADAA,EAAIyyP,GAAUzyP,GACP44P,IAAS,SAAS3nK,GACvB,OAAO4mK,GAAQ5mK,EAAMjxF,MAsBzB,IAAIqxQ,GAAOtR,GAAW5oB,IA8BlBm6B,GAAYvR,GAAWjb,IAiCvBysB,GAAWxR,GAAWxa,IAwB1B,SAAS1vJ,GAAS5J,GAChB,OAAOgrK,GAAMhrK,GAAQw5J,GAAa2N,GAAMnnK,IAASqsK,GAAiBrsK,GAwBpE,SAASulL,GAAW95K,GAClB,OAAO,SAASzL,GACd,OAAiB,MAAVyL,EAAiB3yD,EAAYmuN,GAAQx7J,EAAQzL,IA6CxD,IAAIwlL,GAAQrR,KAsCRsR,GAAatR,IAAY,GAoB7B,SAASmC,KACP,MAAO,GAgBT,SAASQ,KACP,OAAO,EAqBT,SAAS4O,KACP,MAAO,GAgBT,SAASC,KACP,MAAO,GAgBT,SAASC,KACP,OAAO,EAsBT,SAASC,GAAM9xQ,EAAGo3O,GAEhB,GADAp3O,EAAIyyP,GAAUzyP,GACVA,EAAI,GAAKA,EAAI+hK,EACf,MAAO,GAET,IAAI5wH,EAAQ8tM,EACR/+O,EAASypP,GAAU3pP,EAAGi/O,GAE1B7H,EAAW4gB,GAAY5gB,GACvBp3O,GAAKi/O,EAEL,IAAIx7O,EAAS6iP,GAAUpmP,EAAQk3O,GAC/B,QAASjmM,EAAQnxC,EACfo3O,EAASjmM,GAEX,OAAO1tC,EAoBT,SAASsuQ,GAAO5uQ,GACd,OAAI+wE,GAAQ/wE,GACHg0O,GAASh0O,EAAOiwP,IAElBt6E,GAAS31K,GAAS,CAACA,GAASyoP,GAAUyP,GAAajuP,GAASjK,KAoBrE,SAAS+tD,GAASwrK,GAChB,IAAI53L,IAAOujN,GACX,OAAOj7O,GAASsvN,GAAU53L,EAoB5B,IAAI9I,GAAM6jO,IAAoB,SAASmS,EAAQC,GAC7C,OAAOD,EAASC,IACf,GAuBC9gQ,GAAO2vP,GAAY,QAiBnBrgF,GAASo/E,IAAoB,SAASqS,EAAUC,GAClD,OAAOD,EAAWC,IACjB,GAuBChuN,GAAQ28M,GAAY,SAoBxB,SAASpiM,GAAI5gC,GACX,OAAQA,GAASA,EAAM59B,OACnBqyP,GAAaz0N,EAAOs4N,GAAU7C,IAC9BxuN,EA0BN,SAASqtO,GAAMt0O,EAAOs5M,GACpB,OAAQt5M,GAASA,EAAM59B,OACnBqyP,GAAaz0N,EAAOk6N,GAAY5gB,EAAU,GAAImc,IAC9CxuN,EAiBN,SAASstO,GAAKv0O,GACZ,OAAOmoN,GAASnoN,EAAOs4N,IA0BzB,SAASkc,GAAOx0O,EAAOs5M,GACrB,OAAO6O,GAASnoN,EAAOk6N,GAAY5gB,EAAU,IAqB/C,SAAShzL,GAAItmB,GACX,OAAQA,GAASA,EAAM59B,OACnBqyP,GAAaz0N,EAAOs4N,GAAUQ,IAC9B7xN,EA0BN,SAASwtO,GAAMz0O,EAAOs5M,GACpB,OAAQt5M,GAASA,EAAM59B,OACnBqyP,GAAaz0N,EAAOk6N,GAAY5gB,EAAU,GAAIwf,IAC9C7xN,EAkBN,IAAIy7I,GAAWq/E,IAAoB,SAAS2S,EAAYC,GACtD,OAAOD,EAAaC,IACnB,GAuBCxiP,GAAQ6wO,GAAY,SAiBpBvnE,GAAWsmE,IAAoB,SAAS6S,EAASC,GACnD,OAAOD,EAAUC,IAChB,GAgBH,SAASC,GAAI90O,GACX,OAAQA,GAASA,EAAM59B,OACnBgmP,GAAQpoN,EAAOs4N,IACf,EA0BN,SAASyc,GAAM/0O,EAAOs5M,GACpB,OAAQt5M,GAASA,EAAM59B,OACnBgmP,GAAQpoN,EAAOk6N,GAAY5gB,EAAU,IACrC,EAgjBN,OA1iBAsT,GAAOoe,MAAQA,GACfpe,GAAO0U,IAAMA,GACb1U,GAAO9qP,OAASA,GAChB8qP,GAAO8hB,SAAWA,GAClB9hB,GAAO+hB,aAAeA,GACtB/hB,GAAOgiB,WAAaA,GACpBhiB,GAAO/8L,GAAKA,GACZ+8L,GAAOqe,OAASA,GAChBre,GAAOxoM,KAAOA,GACdwoM,GAAO+lB,QAAUA,GACjB/lB,GAAOse,QAAUA,GACjBte,GAAOugB,UAAYA,GACnBvgB,GAAOppH,MAAQA,GACfopH,GAAOqZ,MAAQA,GACfrZ,GAAOsZ,QAAUA,GACjBtZ,GAAOrlP,OAASA,GAChBqlP,GAAOimB,KAAOA,GACdjmB,GAAOkmB,SAAWA,GAClBlmB,GAAO0O,SAAWA,GAClB1O,GAAOmd,QAAUA,GACjBnd,GAAO1rP,OAASA,GAChB0rP,GAAOue,MAAQA,GACfve,GAAOwe,WAAaA,GACpBxe,GAAOye,SAAWA,GAClBze,GAAOzoJ,SAAWA,GAClByoJ,GAAOmiB,aAAeA,GACtBniB,GAAOpyE,MAAQA,GACfoyE,GAAOpjN,MAAQA,GACfojN,GAAOuZ,WAAaA,GACpBvZ,GAAOwZ,aAAeA,GACtBxZ,GAAOyZ,eAAiBA,GACxBzZ,GAAO0Z,KAAOA,GACd1Z,GAAO2Z,UAAYA,GACnB3Z,GAAO4Z,eAAiBA,GACxB5Z,GAAO6Z,UAAYA,GACnB7Z,GAAO7vE,KAAOA,GACd6vE,GAAO3vO,OAASA,GAChB2vO,GAAOqd,QAAUA,GACjBrd,GAAOsd,YAAcA,GACrBtd,GAAOud,aAAeA,GACtBvd,GAAO0X,QAAUA,GACjB1X,GAAO+Z,YAAcA,GACrB/Z,GAAOga,aAAeA,GACtBha,GAAO4f,KAAOA,GACd5f,GAAOomB,KAAOA,GACdpmB,GAAOqmB,UAAYA,GACnBrmB,GAAOia,UAAYA,GACnBja,GAAO2iB,UAAYA,GACnB3iB,GAAO4iB,YAAcA,GACrB5iB,GAAOyd,QAAUA,GACjBzd,GAAOka,QAAUA,GACjBla,GAAOma,aAAeA,GACtBna,GAAOqa,eAAiBA,GACxBra,GAAOsa,iBAAmBA,GAC1Bta,GAAO6iB,OAASA,GAChB7iB,GAAO8iB,SAAWA,GAClB9iB,GAAO0d,UAAYA,GACnB1d,GAAOtT,SAAWA,GAClBsT,GAAO2d,MAAQA,GACf3d,GAAOhpP,KAAOA,GACdgpP,GAAOwF,OAASA,GAChBxF,GAAO9vO,IAAMA,GACb8vO,GAAOgjB,QAAUA,GACjBhjB,GAAOijB,UAAYA,GACnBjjB,GAAOzxO,QAAUA,GACjByxO,GAAOsmB,gBAAkBA,GACzBtmB,GAAOuY,QAAUA,GACjBvY,GAAOj7F,MAAQA,GACfi7F,GAAOoiB,UAAYA,GACnBpiB,GAAO/pP,OAASA,GAChB+pP,GAAOumB,SAAWA,GAClBvmB,GAAOwmB,MAAQA,GACfxmB,GAAO+d,OAASA,GAChB/d,GAAO0mB,OAASA,GAChB1mB,GAAOkjB,KAAOA,GACdljB,GAAOmjB,OAASA,GAChBnjB,GAAO+f,KAAOA,GACd/f,GAAO4d,QAAUA,GACjB5d,GAAO2mB,KAAOA,GACd3mB,GAAOggB,SAAWA,GAClBhgB,GAAO4mB,UAAYA,GACnB5mB,GAAO6mB,SAAWA,GAClB7mB,GAAOkgB,QAAUA,GACjBlgB,GAAOmgB,aAAeA,GACtBngB,GAAO6d,UAAYA,GACnB7d,GAAO1C,KAAOA,GACd0C,GAAOojB,OAASA,GAChBpjB,GAAO70J,SAAWA,GAClB60J,GAAO8mB,WAAaA,GACpB9mB,GAAOwa,KAAOA,GACdxa,GAAOya,QAAUA,GACjBza,GAAO0a,UAAYA,GACnB1a,GAAO2a,YAAcA,GACrB3a,GAAO4a,OAASA,GAChB5a,GAAO+mB,MAAQA,GACf/mB,GAAOgnB,WAAaA,GACpBhnB,GAAOogB,MAAQA,GACfpgB,GAAOvpP,OAASA,GAChBupP,GAAO1nH,OAASA,GAChB0nH,GAAOlyC,KAAOA,GACdkyC,GAAO9qH,QAAUA,GACjB8qH,GAAOie,WAAaA,GACpBje,GAAOljO,IAAMA,GACbkjO,GAAOqjB,QAAUA,GACjBrjB,GAAOke,QAAUA,GACjBle,GAAOt/M,MAAQA,GACfs/M,GAAOme,OAASA,GAChBne,GAAOmb,WAAaA,GACpBnb,GAAOob,aAAeA,GACtBpb,GAAOz0O,MAAQA,GACfy0O,GAAOj+F,OAASA,GAChBi+F,GAAO33E,KAAOA,GACd23E,GAAOqb,KAAOA,GACdrb,GAAOsb,UAAYA,GACnBtb,GAAOub,eAAiBA,GACxBvb,GAAOwb,UAAYA,GACnBxb,GAAOyc,IAAMA,GACbzc,GAAOqgB,SAAWA,GAClBrgB,GAAOkU,KAAOA,GACdlU,GAAOt3F,QAAUA,GACjBs3F,GAAOsjB,QAAUA,GACjBtjB,GAAOujB,UAAYA,GACnBvjB,GAAOqnB,OAASA,GAChBrnB,GAAOkN,cAAgBA,GACvBlN,GAAOnD,UAAYA,GACnBmD,GAAOsgB,MAAQA,GACftgB,GAAOyb,MAAQA,GACfzb,GAAO0b,QAAUA,GACjB1b,GAAO2b,UAAYA,GACnB3b,GAAO4b,KAAOA,GACd5b,GAAO6b,OAASA,GAChB7b,GAAO8b,SAAWA,GAClB9b,GAAOyjB,MAAQA,GACfzjB,GAAO+b,MAAQA,GACf/b,GAAOgc,UAAYA,GACnBhc,GAAOxyI,OAASA,GAChBwyI,GAAO0jB,WAAaA,GACpB1jB,GAAOz5M,OAASA,GAChBy5M,GAAO2jB,SAAWA,GAClB3jB,GAAOic,QAAUA,GACjBjc,GAAO3R,MAAQA,GACf2R,GAAO11E,KAAOA,GACd01E,GAAOkc,IAAMA,GACblc,GAAOmc,MAAQA,GACfnc,GAAOoc,QAAUA,GACjBpc,GAAOqc,IAAMA,GACbrc,GAAOsc,UAAYA,GACnBtc,GAAOuc,cAAgBA,GACvBvc,GAAOwc,QAAUA,GAGjBxc,GAAOzyK,QAAU+1L,GACjBtjB,GAAOooB,UAAY7E,GACnBvjB,GAAO1+F,OAASwgH,GAChB9hB,GAAOqoB,WAAatG,GAGpByE,GAAMxmB,GAAQA,IAKdA,GAAO1uN,IAAMA,GACb0uN,GAAO1zG,QAAUA,GACjB0zG,GAAO/N,UAAYA,GACnB+N,GAAOhO,WAAaA,GACpBgO,GAAOv5O,KAAOA,GACdu5O,GAAO4jB,MAAQA,GACf5jB,GAAO19N,MAAQA,GACf09N,GAAOygB,UAAYA,GACnBzgB,GAAO0gB,cAAgBA,GACvB1gB,GAAOwgB,UAAYA,GACnBxgB,GAAO2gB,WAAaA,GACpB3gB,GAAO5R,OAASA,GAChB4R,GAAOmmB,UAAYA,GACnBnmB,GAAOjqE,OAASA,GAChBiqE,GAAO1wO,SAAWA,GAClB0wO,GAAOgF,GAAKA,GACZhF,GAAO+jB,OAASA,GAChB/jB,GAAOgkB,aAAeA,GACtBhkB,GAAO9tN,MAAQA,GACf8tN,GAAOvjO,KAAOA,GACdujO,GAAOxyF,UAAYA,GACnBwyF,GAAOqiB,QAAUA,GACjBriB,GAAOod,SAAWA,GAClBpd,GAAO8Z,cAAgBA,GACvB9Z,GAAOsiB,YAAcA,GACrBtiB,GAAOvmM,MAAQA,GACfumM,GAAO/oP,QAAUA,GACjB+oP,GAAOwd,aAAeA,GACtBxd,GAAOuiB,MAAQA,GACfviB,GAAOwiB,WAAaA,GACpBxiB,GAAOyiB,OAASA,GAChBziB,GAAO0iB,YAAcA,GACrB1iB,GAAOnqP,IAAMA,GACbmqP,GAAO4gB,GAAKA,GACZ5gB,GAAO6gB,IAAMA,GACb7gB,GAAOhjO,IAAMA,GACbgjO,GAAOyM,MAAQA,GACfzM,GAAOr+E,KAAOA,GACdq+E,GAAO0L,SAAWA,GAClB1L,GAAOhzK,SAAWA,GAClBgzK,GAAO3wO,QAAUA,GACjB2wO,GAAO6jB,QAAUA,GACjB7jB,GAAO+iB,OAASA,GAChB/iB,GAAOoE,YAAcA,GACrBpE,GAAOx2K,QAAUA,GACjBw2K,GAAOz5F,cAAgBA,GACvBy5F,GAAOoM,YAAcA,GACrBpM,GAAOgN,kBAAoBA,GAC3BhN,GAAO57J,UAAYA,GACnB47J,GAAOx5F,SAAWA,GAClBw5F,GAAOpnK,OAASA,GAChBonK,GAAO8gB,UAAYA,GACnB9gB,GAAO3xO,QAAUA,GACjB2xO,GAAO+gB,QAAUA,GACjB/gB,GAAOghB,YAAcA,GACrBhhB,GAAOrnK,QAAUA,GACjBqnK,GAAOlB,SAAWA,GAClBkB,GAAO/7J,WAAaA,GACpB+7J,GAAOihB,UAAYA,GACnBjhB,GAAOwL,SAAWA,GAClBxL,GAAOpG,MAAQA,GACfoG,GAAOlW,QAAUA,GACjBkW,GAAOkhB,YAAcA,GACrBlhB,GAAOhvK,MAAQA,GACfgvK,GAAOmhB,SAAWA,GAClBnhB,GAAOqhB,MAAQA,GACfrhB,GAAOohB,OAASA,GAChBphB,GAAO77J,SAAWA,GAClB67J,GAAO7yK,SAAWA,GAClB6yK,GAAO1N,aAAeA,GACtB0N,GAAO5rJ,cAAgBA,GACvB4rJ,GAAO7/E,SAAWA,GAClB6/E,GAAOshB,cAAgBA,GACvBthB,GAAOjG,MAAQA,GACfiG,GAAO97J,SAAWA,GAClB87J,GAAO5xE,SAAWA,GAClB4xE,GAAO13F,aAAeA,GACtB03F,GAAOj8J,YAAcA,GACrBi8J,GAAOuhB,UAAYA,GACnBvhB,GAAOwhB,UAAYA,GACnBxhB,GAAO7lO,KAAOA,GACd6lO,GAAOikB,UAAYA,GACnBjkB,GAAOruF,KAAOA,GACdquF,GAAOzwO,YAAcA,GACrBywO,GAAOkkB,UAAYA,GACnBlkB,GAAOmkB,WAAaA,GACpBnkB,GAAOyhB,GAAKA,GACZzhB,GAAO0hB,IAAMA,GACb1hB,GAAOhsL,IAAMA,GACbgsL,GAAO0nB,MAAQA,GACf1nB,GAAO2nB,KAAOA,GACd3nB,GAAO4nB,OAASA,GAChB5nB,GAAOtmM,IAAMA,GACbsmM,GAAO6nB,MAAQA,GACf7nB,GAAO6X,UAAYA,GACnB7X,GAAOqY,UAAYA,GACnBrY,GAAOinB,WAAaA,GACpBjnB,GAAOknB,WAAaA,GACpBlnB,GAAOmnB,SAAWA,GAClBnnB,GAAOlqE,SAAWA,GAClBkqE,GAAOua,IAAMA,GACbva,GAAOymB,WAAaA,GACpBzmB,GAAOjxK,KAAOA,GACdixK,GAAOn7N,IAAMA,GACbm7N,GAAOxrJ,IAAMA,GACbwrJ,GAAOqkB,OAASA,GAChBrkB,GAAOskB,SAAWA,GAClBtkB,GAAO5mM,SAAWA,GAClB4mM,GAAO38O,OAASA,GAChB28O,GAAO95N,OAASA,GAChB85N,GAAO8d,YAAcA,GACrB9d,GAAOtqE,OAASA,GAChBsqE,GAAO36O,QAAUA,GACjB26O,GAAOjnP,OAASA,GAChBinP,GAAOz6N,MAAQA,GACfy6N,GAAO3C,aAAeA,EACtB2C,GAAOge,OAASA,GAChBhe,GAAOhuN,KAAOA,GACdguN,GAAOukB,UAAYA,GACnBvkB,GAAOv4N,KAAOA,GACdu4N,GAAO6a,YAAcA,GACrB7a,GAAO8a,cAAgBA,GACvB9a,GAAO+a,cAAgBA,GACvB/a,GAAOgb,gBAAkBA,GACzBhb,GAAOib,kBAAoBA,GAC3Bjb,GAAOkb,kBAAoBA,GAC3Blb,GAAOwkB,UAAYA,GACnBxkB,GAAO7wO,WAAaA,GACpB6wO,GAAOnxD,SAAWA,GAClBmxD,GAAOkoB,IAAMA,GACbloB,GAAOmoB,MAAQA,GACfnoB,GAAOvzK,SAAWA,GAClBuzK,GAAOonB,MAAQA,GACfpnB,GAAO2V,SAAWA,GAClB3V,GAAO+H,UAAYA,GACnB/H,GAAO5+E,SAAWA,GAClB4+E,GAAOulB,QAAUA,GACjBvlB,GAAO5qE,SAAWA,GAClB4qE,GAAO6hB,cAAgBA,GACvB7hB,GAAOt9O,SAAWA,GAClBs9O,GAAOwlB,QAAUA,GACjBxlB,GAAOnwO,KAAOA,GACdmwO,GAAOylB,QAAUA,GACjBzlB,GAAO0lB,UAAYA,GACnB1lB,GAAO2lB,SAAWA,GAClB3lB,GAAOngG,SAAWA,GAClBmgG,GAAOx5L,SAAWA,GAClBw5L,GAAO8lB,UAAYA,GACnB9lB,GAAO7N,WAAaA,GAGpB6N,GAAOsoB,KAAOrxQ,GACd+oP,GAAOuoB,UAAY/K,GACnBxd,GAAOtuF,MAAQiQ,GAEf6kG,GAAMxmB,GAAS,WACb,IAAIvlL,EAAS,GAMb,OALAgtL,GAAWzH,IAAQ,SAAS98J,EAAM+qJ,GAC3Bh6O,GAAea,KAAKkrP,GAAO3rP,UAAW45O,KACzCxzK,EAAOwzK,GAAc/qJ,MAGlBzoB,EAPK,GAQR,CAAE,OAAS,IAWjBulL,GAAOr+F,QAAUA,EAGjBu4F,GAAU,CAAC,OAAQ,UAAW,QAAS,aAAc,UAAW,iBAAiB,SAASjM,GACxF+R,GAAO/R,GAAYsO,YAAcyD,MAInC9F,GAAU,CAAC,OAAQ,SAAS,SAASjM,EAAYxnM,GAC/Cw5M,GAAY5rP,UAAU45O,GAAc,SAAS34O,GAC3CA,EAAIA,IAAM+kC,EAAY,EAAI2kN,GAAU+I,GAAUzyP,GAAI,GAElD,IAAIyD,EAAU5E,KAAK0sP,eAAiBp6M,EAChC,IAAIw5M,GAAY9rP,MAChBA,KAAKmuB,QAUT,OARIvpB,EAAO8nP,aACT9nP,EAAOgoP,cAAgB9B,GAAU3pP,EAAGyD,EAAOgoP,eAE3ChoP,EAAOioP,UAAU7mP,KAAK,CACpB,KAAQ8kP,GAAU3pP,EAAGi/O,GACrB,KAAQtG,GAAcl1O,EAAO6nP,QAAU,EAAI,QAAU,MAGlD7nP,GAGTknP,GAAY5rP,UAAU45O,EAAa,SAAW,SAAS34O,GACrD,OAAOnB,KAAK+gI,UAAU+4G,GAAY34O,GAAG4/H,cAKzCglH,GAAU,CAAC,SAAU,MAAO,cAAc,SAASjM,EAAYxnM,GAC7D,IAAIplB,EAAOolB,EAAQ,EACf+hO,EAAWnnP,GAAQ6yN,GAAoB7yN,GAAQ+yN,EAEnD6L,GAAY5rP,UAAU45O,GAAc,SAASvB,GAC3C,IAAI3zO,EAAS5E,KAAKmuB,QAMlB,OALAvpB,EAAO+nP,cAAc3mP,KAAK,CACxB,SAAYmzP,GAAY5gB,EAAU,GAClC,KAAQrrN,IAEVtoB,EAAO8nP,aAAe9nP,EAAO8nP,cAAgB2nB,EACtCzvQ,MAKXmhP,GAAU,CAAC,OAAQ,SAAS,SAASjM,EAAYxnM,GAC/C,IAAIgiO,EAAW,QAAUhiO,EAAQ,QAAU,IAE3Cw5M,GAAY5rP,UAAU45O,GAAc,WAClC,OAAO95O,KAAKs0Q,GAAU,GAAGhwQ,QAAQ,OAKrCyhP,GAAU,CAAC,UAAW,SAAS,SAASjM,EAAYxnM,GAClD,IAAIiiO,EAAW,QAAUjiO,EAAQ,GAAK,SAEtCw5M,GAAY5rP,UAAU45O,GAAc,WAClC,OAAO95O,KAAK0sP,aAAe,IAAIZ,GAAY9rP,MAAQA,KAAKu0Q,GAAU,OAItEzoB,GAAY5rP,UAAUilQ,QAAU,WAC9B,OAAOnlQ,KAAKkc,OAAOq7O,KAGrBzL,GAAY5rP,UAAUooB,KAAO,SAAS49N,GACpC,OAAOlmP,KAAKkc,OAAOgqO,GAAW14E,QAGhCs+E,GAAY5rP,UAAU+oQ,SAAW,SAAS/iB,GACxC,OAAOlmP,KAAK+gI,UAAUz4G,KAAK49N,IAG7B4F,GAAY5rP,UAAUqpQ,UAAYxP,IAAS,SAAS3sK,EAAMgF,GACxD,MAAmB,mBAARhF,EACF,IAAI0+J,GAAY9rP,MAElBA,KAAK+b,KAAI,SAASzX,GACvB,OAAOgxP,GAAWhxP,EAAO8oF,EAAMgF,SAInC05J,GAAY5rP,UAAUoC,OAAS,SAAS4jP,GACtC,OAAOlmP,KAAKkc,OAAO0tP,GAAOzQ,GAAYjT,MAGxC4F,GAAY5rP,UAAUqsC,MAAQ,SAAS46C,EAAOC,GAC5CD,EAAQysK,GAAUzsK,GAElB,IAAIviF,EAAS5E,KACb,OAAI4E,EAAO8nP,eAAiBvlK,EAAQ,GAAKC,EAAM,GACtC,IAAI0kK,GAAYlnP,IAErBuiF,EAAQ,EACVviF,EAASA,EAAOuiQ,WAAWhgL,GAClBA,IACTviF,EAASA,EAAO2gQ,KAAKp+K,IAEnBC,IAAQlhD,IACVkhD,EAAMwsK,GAAUxsK,GAChBxiF,EAASwiF,EAAM,EAAIxiF,EAAO4gQ,WAAWp+K,GAAOxiF,EAAOsiQ,KAAK9/K,EAAMD,IAEzDviF,IAGTknP,GAAY5rP,UAAUknQ,eAAiB,SAASlhB,GAC9C,OAAOlmP,KAAK+gI,UAAUsmI,UAAUnhB,GAAWnlH,WAG7C+qH,GAAY5rP,UAAUq0J,QAAU,WAC9B,OAAOv0J,KAAKknQ,KAAK9mB,IAInBkT,GAAWxH,GAAY5rP,WAAW,SAAS6uF,EAAM+qJ,GAC/C,IAAI06B,EAAgB,qCAAqCllQ,KAAKwqO,GAC1D26B,EAAU,kBAAkBnlQ,KAAKwqO,GACjC46B,EAAa7oB,GAAO4oB,EAAW,QAAwB,QAAd36B,EAAuB,QAAU,IAAOA,GACjF66B,EAAeF,GAAW,QAAQnlQ,KAAKwqO,GAEtC46B,IAGL7oB,GAAO3rP,UAAU45O,GAAc,WAC7B,IAAIx1O,EAAQtE,KAAKosP,YACbh6J,EAAOqiL,EAAU,CAAC,GAAKrzQ,UACvBwzQ,EAAStwQ,aAAiBwnP,GAC1BvT,EAAWnmJ,EAAK,GAChByiL,EAAUD,GAAUv/L,GAAQ/wE,GAE5B6qJ,EAAc,SAAS7qJ,GACzB,IAAIM,EAAS8vQ,EAAW3wQ,MAAM8nP,GAAQnnD,GAAU,CAACpgM,GAAQ8tF,IACzD,OAAQqiL,GAAWtoB,EAAYvnP,EAAO,GAAKA,GAGzCiwQ,GAAWL,GAAoC,mBAAZj8B,GAA6C,GAAnBA,EAASl3O,SAExEuzQ,EAASC,GAAU,GAErB,IAAI1oB,EAAWnsP,KAAKssP,UAChBwoB,IAAa90Q,KAAKqsP,YAAYhrP,OAC9B0zQ,EAAcJ,IAAiBxoB,EAC/B6oB,EAAWJ,IAAWE,EAE1B,IAAKH,GAAgBE,EAAS,CAC5BvwQ,EAAQ0wQ,EAAW1wQ,EAAQ,IAAIwnP,GAAY9rP,MAC3C,IAAI4E,EAASmqF,EAAKhrF,MAAMO,EAAO8tF,GAE/B,OADAxtF,EAAOynP,YAAYrmP,KAAK,CAAE,KAAQ+5P,GAAM,KAAQ,CAAC5wG,GAAc,QAAWjpH,IACnE,IAAI6lN,GAAcnnP,EAAQunP,GAEnC,OAAI4oB,GAAeC,EACVjmL,EAAKhrF,MAAM/D,KAAMoyF,IAE1BxtF,EAAS5E,KAAK+/P,KAAK5wG,GACZ4lH,EAAeN,EAAU7vQ,EAAON,QAAQ,GAAKM,EAAON,QAAWM,QAK1EmhP,GAAU,CAAC,MAAO,OAAQ,QAAS,OAAQ,SAAU,YAAY,SAASjM,GACxE,IAAI/qJ,EAAOq6J,GAAWtP,GAClBm7B,EAAY,0BAA0B3lQ,KAAKwqO,GAAc,MAAQ,OACjE66B,EAAe,kBAAkBrlQ,KAAKwqO,GAE1C+R,GAAO3rP,UAAU45O,GAAc,WAC7B,IAAI1nJ,EAAOhxF,UACX,GAAIuzQ,IAAiB30Q,KAAKssP,UAAW,CACnC,IAAIhoP,EAAQtE,KAAKsE,QACjB,OAAOyqF,EAAKhrF,MAAMsxE,GAAQ/wE,GAASA,EAAQ,GAAI8tF,GAEjD,OAAOpyF,KAAKi1Q,IAAW,SAAS3wQ,GAC9B,OAAOyqF,EAAKhrF,MAAMsxE,GAAQ/wE,GAASA,EAAQ,GAAI8tF,UAMrDkhK,GAAWxH,GAAY5rP,WAAW,SAAS6uF,EAAM+qJ,GAC/C,IAAI46B,EAAa7oB,GAAO/R,GACxB,GAAI46B,EAAY,CACd,IAAI94P,EAAM84P,EAAWrhQ,KAAO,GACvBvT,GAAea,KAAK2qP,GAAW1vO,KAClC0vO,GAAU1vO,GAAO,IAEnB0vO,GAAU1vO,GAAK5V,KAAK,CAAE,KAAQ8zO,EAAY,KAAQ46B,QAItDppB,GAAUkU,GAAat5N,EAAWg5M,GAAoB7rO,MAAQ,CAAC,CAC7D,KAAQ,UACR,KAAQ6yB,IAIV4lN,GAAY5rP,UAAUiuB,MAAQ2+N,GAC9BhB,GAAY5rP,UAAU6gI,QAAUisH,GAChClB,GAAY5rP,UAAUoE,MAAQ2oP,GAG9BpB,GAAO3rP,UAAU4uD,GAAKy5M,GACtB1c,GAAO3rP,UAAUuiI,MAAQ+lI,GACzB3c,GAAO3rP,UAAUg1Q,OAASzM,GAC1B5c,GAAO3rP,UAAUuE,KAAOikQ,GACxB7c,GAAO3rP,UAAUigQ,MAAQyI,GACzB/c,GAAO3rP,UAAU6gI,QAAU8nI,GAC3Bhd,GAAO3rP,UAAU4vJ,OAAS+7F,GAAO3rP,UAAU8yK,QAAU64E,GAAO3rP,UAAUoE,MAAQykQ,GAG9Eld,GAAO3rP,UAAUq9J,MAAQsuF,GAAO3rP,UAAUstK,KAEtCy8E,KACF4B,GAAO3rP,UAAU+pP,IAAe0e,IAE3B9c,IAMLzmP,GAAI8jP,KAQNzhD,GAAKriM,EAAIA,GAIT,aACE,OAAOA,IACR,oCAaHzE,KAAKX,O,gBCxzhBP,IAAIy5O,EAAe,EAAQ,OAuB3B,SAASlrO,EAASjK,GAChB,OAAgB,MAATA,EAAgB,GAAKm1O,EAAan1O,GAG3CimJ,EAAOD,QAAU/7I,G,gBC3BjB,IAAIsrO,EAAkB,EAAQ,OAmB1BmE,EAAanE,EAAgB,eAEjCtvF,EAAOD,QAAU0zF,G,gBCrBjB,IAAInF,EAAa,EAAQ,OACrByC,EAAiB,EAAQ,OACzB/sO,EAAW,EAAQ,OACnBqvO,EAAe,EAAQ,MAqB3B,SAAS1D,EAAM75E,EAAQhkJ,EAASyiP,GAI9B,OAHAz+F,EAAS9xJ,EAAS8xJ,GAClBhkJ,EAAUyiP,OAAQ54N,EAAY7pB,OAEd6pB,IAAZ7pB,EACKi/N,EAAej7E,GAAUu9E,EAAav9E,GAAUw4E,EAAWx4E,GAE7DA,EAAO5wH,MAAMpzB,IAAY,GAGlCkuI,EAAOD,QAAU4vF,G,mDClCK,qBAAdt9L,WAA8B,SAAWy4F,EAAQ2tD,GACQz4C,OAAOD,QAAU04C,IAD5C,CAInChjM,GAAM,WAAe,aAEtB,IAAIm1Q,MAAQ,6BACRC,aAAe,GACfC,eAAgB,EAChBC,qBAAuB,OAEvBC,aAAe,SAAsBC,GACvCH,gBAAkBG,GAGhBC,aAAe,WACjB,OAAOJ,eAGLK,gBAAkB,SAAyBpxQ,GAC7C8wQ,aAAe9wQ,GAGbqxQ,gBAAkB,WACpB,OAAOP,cAGT,SAASQ,UAAU1oP,GAEjB,OAAOyoB,SAAS40B,cAAcr9C,GAGhC,SAAS2oP,gBAAgB58I,EAASypE,GAChC,IAAIxhM,EAEA40Q,EADAj1K,EAAMo4B,EAAQ53H,OAGlB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAGxB,IAAK,IAAIwuM,KAFTomE,EAAkB78I,EAAQ/3H,GAAGhB,UAEZ41Q,EACXv2Q,OAAOW,UAAUJ,eAAea,KAAKm1Q,EAAiBpmE,KAAOhN,EAAYxiM,UAAUwvM,GAAQomE,EAAgBpmE,IAKrH,SAAS/mC,cAAc9vE,EAAQpY,GAC7B,OAAOlhF,OAAOugK,yBAAyBjnE,EAAQpY,GAGjD,SAASs1L,oBAAoB71Q,GAC3B,SAAS81Q,KAGT,OADAA,EAAc91Q,UAAYA,EACnB81Q,EAIT,IAAIC,uBAAyB,WAC3B,SAASC,EAAgBC,GACvBn2Q,KAAKo2Q,OAAS,GACdp2Q,KAAKm2Q,aAAeA,EACpBn2Q,KAAKq2Q,QAAU,EACfr2Q,KAAKs2Q,UAAW,EAqFlB,OAlFAJ,EAAgBh2Q,UAAY,CAC1Bq2Q,SAAU,SAAkBC,GAC1Bx2Q,KAAKo2Q,OAAOpwQ,KAAKwwQ,IAEnBl3I,MAAO,WACL,IAAIp+H,EACA2/F,EAAM7gG,KAAKo2Q,OAAO/0Q,OAEtB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKo2Q,OAAOl1Q,GAAGo+H,SAGnBC,OAAQ,WACN,IAAIr+H,EACA2/F,EAAM7gG,KAAKo2Q,OAAO/0Q,OAEtB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKo2Q,OAAOl1Q,GAAGq+H,UAGnBk3I,QAAS,SAAiBC,GACxB,IAAIx1Q,EACA2/F,EAAM7gG,KAAKo2Q,OAAO/0Q,OAEtB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKo2Q,OAAOl1Q,GAAGu1Q,QAAQC,IAG3BC,YAAa,SAAqBC,GAChC,OAAI52Q,KAAKm2Q,aACAn2Q,KAAKm2Q,aAAaS,GAGvBzyP,OAAO0yP,KACF,IAAI1yP,OAAO0yP,KAAK,CACrBxsM,IAAK,CAACusM,KAIH,CACLE,WAAW,EACXC,KAAM,WACJ/2Q,KAAK82Q,WAAY,GAEnBE,KAAM,WACJh3Q,KAAK82Q,WAAY,GAEnBG,QAAS,aACTC,KAAM,aACNC,UAAW,eAGfC,gBAAiB,SAAyBjB,GACxCn2Q,KAAKm2Q,aAAeA,GAEtBgB,UAAW,SAAmB7yQ,GAC5BtE,KAAKq2Q,QAAU/xQ,EAEftE,KAAKq3Q,iBAEPC,KAAM,WACJt3Q,KAAKs2Q,UAAW,EAEhBt2Q,KAAKq3Q,iBAEPE,OAAQ,WACNv3Q,KAAKs2Q,UAAW,EAEhBt2Q,KAAKq3Q,iBAEPG,UAAW,WACT,OAAOx3Q,KAAKq2Q,SAEdgB,cAAe,WACb,IAAIn2Q,EACA2/F,EAAM7gG,KAAKo2Q,OAAO/0Q,OAEtB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKo2Q,OAAOl1Q,GAAGu2Q,OAAOz3Q,KAAKq2Q,SAAWr2Q,KAAKs2Q,SAAW,EAAI,MAIzD,WACL,OAAO,IAAIJ,GA3Fc,GA+FzBwB,iBAAmB,WACrB,SAASC,EAAmBzqP,EAAM2zE,GAChC,IAEIv8F,EAFApD,EAAI,EACJ4a,EAAM,GAGV,OAAQoR,GACN,IAAK,QACL,IAAK,SACH5oB,EAAQ,EACR,MAEF,QACEA,EAAQ,IACR,MAGJ,IAAKpD,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB4a,EAAI9V,KAAK1B,GAGX,OAAOwX,EAGT,SAAS87P,EAAwB1qP,EAAM2zE,GACrC,MAAa,YAAT3zE,EACK,IAAI2qP,aAAah3K,GAGb,UAAT3zE,EACK,IAAI4qP,WAAWj3K,GAGX,WAAT3zE,EACK,IAAI6qP,kBAAkBl3K,GAGxB82K,EAAmBzqP,EAAM2zE,GAGlC,MAAiC,oBAAtBk3K,mBAA4D,oBAAjBF,aAC7CD,EAGFD,EA5Cc,GA+CvB,SAASK,iBAAiBn3K,GACxB,OAAOnhG,MAAMqE,MAAM,KAAM,CACvB1C,OAAQw/F,IAIZ,SAASo3K,UAAUn9P,GAAuV,OAA1Om9P,UAArD,oBAAXvyQ,QAAoD,kBAApBA,OAAOC,SAAqC,SAAiBmV,GAAO,cAAcA,GAA6B,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXpV,QAAyBoV,EAAI7a,cAAgByF,QAAUoV,IAAQpV,OAAOxF,UAAY,gBAAkB4a,GAAiBm9P,UAAUn9P,GAC3X,IAAIo9P,iBAAkB,EAClBC,kBAAoB,KACpBC,WAAa,GACbC,SAAW,iCAAiC/oQ,KAAKstC,UAAUuD,WAC3Dm4N,oBAAqB,EACrBC,MAAQtpQ,KAAKmvH,IACbo6I,OAASvpQ,KAAKwpQ,KACdC,QAAUzpQ,KAAKq2C,MACfqzN,MAAQ1pQ,KAAK4wD,IACb+4M,MAAQ3pQ,KAAKs2C,IACbszN,OAAS,GAYb,SAASC,qBACP,MAAO,IAXT,WACE,IACI53Q,EADA63Q,EAAgB,CAAC,MAAO,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,QAAS,OAAQ,OAAQ,QAAS,QAAS,MAAO,OAAQ,MAAO,QAAS,SAAU,QAAS,OAAQ,MAAO,QAAS,OAAQ,QAAS,MAAO,MAAO,MAAO,SAAU,QAAS,OAAQ,MAAO,OAAQ,OAAQ,MAAO,OAAQ,QAAS,IAAK,OAAQ,MAAO,SAAU,QAAS,KAAM,UAAW,SAExWl4K,EAAMk4K,EAAc13Q,OAExB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB23Q,OAAOE,EAAc73Q,IAAM+N,KAAK8pQ,EAAc73Q,KANlD,GAcA23Q,OAAO3pQ,OAASD,KAAKC,OAErB2pQ,OAAO53K,IAAM,SAAU/hE,GACrB,IAAI85O,EAASf,UAAU/4O,GAEvB,GAAe,WAAX85O,GAAuB95O,EAAI79B,OAAQ,CACrC,IACIH,EADA+3Q,EAASjB,iBAAiB94O,EAAI79B,QAE9Bw/F,EAAM3hE,EAAI79B,OAEd,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB+3Q,EAAO/3Q,GAAK+N,KAAKgyF,IAAI/hE,EAAIh+B,IAG3B,OAAO+3Q,EAGT,OAAOhqQ,KAAKgyF,IAAI/hE,IAGlB,IAAIg6O,qBAAuB,IACvBC,UAAYlqQ,KAAKmqQ,GAAK,IACtBC,YAAc,MAElB,SAASC,YAAY9D,GACnB8C,qBAAuB9C,EAGzB,SAAS+D,MAAMj1Q,GACb,OAAIg0Q,mBACKrpQ,KAAKmiB,MAAM9sB,GAGbA,EAGT,SAASk1Q,SAASh/G,GAChBA,EAAQhwF,MAAME,SAAW,WACzB8vF,EAAQhwF,MAAM9K,IAAM,EACpB86F,EAAQhwF,MAAM5K,KAAO,EACrB46F,EAAQhwF,MAAM6mG,QAAU,QACxB7W,EAAQhwF,MAAMivM,gBAAkB,MAChCj/G,EAAQhwF,MAAMkvM,sBAAwB,MACtCl/G,EAAQhwF,MAAMmvM,mBAAqB,UACnCn/G,EAAQhwF,MAAMovM,yBAA2B,UACzCp/G,EAAQhwF,MAAMqvM,eAAiB,cAC/Br/G,EAAQhwF,MAAMsvM,qBAAuB,cACrCt/G,EAAQhwF,MAAMuvM,kBAAoB,cAGpC,SAASC,kBAAkB9sP,EAAMgc,EAAa+wO,EAAWC,GACvDl6Q,KAAKktB,KAAOA,EACZltB,KAAKkpC,YAAcA,EACnBlpC,KAAKi6Q,UAAYA,EACjBj6Q,KAAKm6Q,UAAYD,EAAkB,GAAK,EAAI,EAG9C,SAASE,gBAAgBltP,EAAMgtP,GAC7Bl6Q,KAAKktB,KAAOA,EACZltB,KAAKm6Q,UAAYD,EAAkB,GAAK,EAAI,EAG9C,SAASG,oBAAoBntP,EAAMotP,EAAYC,EAAaL,GAC1Dl6Q,KAAKktB,KAAOA,EACZltB,KAAKu6Q,YAAcA,EACnBv6Q,KAAKs6Q,WAAaA,EAClBt6Q,KAAKm6Q,UAAYD,EAAkB,GAAK,EAAI,EAG9C,SAASM,oBAAoBttP,EAAMutP,EAAYC,GAC7C16Q,KAAKktB,KAAOA,EACZltB,KAAKy6Q,WAAaA,EAClBz6Q,KAAK06Q,YAAcA,EAGrB,SAASC,eAAeztP,EAAMvH,GAC5B3lB,KAAKktB,KAAOA,EACZltB,KAAK2lB,OAASA,EAGhB,SAASi1P,wBAAwBC,EAAa3xO,GAC5ClpC,KAAKktB,KAAO,mBACZltB,KAAK66Q,YAAcA,EACnB76Q,KAAKkpC,YAAcA,EAGrB,SAAS4xO,mBAAmBD,GAC1B76Q,KAAKktB,KAAO,cACZltB,KAAK66Q,YAAcA,EAGrB,SAASE,4BAA4B7tP,EAAM2tP,GACzC76Q,KAAKktB,KAAOA,EACZltB,KAAK66Q,YAAcA,EAGrB,IAAIG,gBAAkB,WACpB,IAAIC,EAAS,EACb,OAAO,WAEL,OADAA,GAAU,EACH7C,WAAa,oBAAsB6C,GAJxB,GAQtB,SAASC,SAAS1/J,EAAGv6G,EAAG2E,GACtB,IAAIQ,EACAjB,EACAvF,EACAsB,EACA+D,EACApF,EACAqvD,EACAluD,EAOJ,OANAE,EAAI+N,KAAKq2C,MAAU,EAAJk2D,GACfv2G,EAAQ,EAAJu2G,EAAQt6G,EACZrB,EAAI+F,GAAK,EAAI3E,GACbiuD,EAAItpD,GAAK,EAAIX,EAAIhE,GACjBD,EAAI4E,GAAK,GAAK,EAAIX,GAAKhE,GAEfC,EAAI,GACV,KAAK,EACHkF,EAAIR,EACJT,EAAInE,EACJpB,EAAIC,EACJ,MAEF,KAAK,EACHuG,EAAI8oD,EACJ/pD,EAAIS,EACJhG,EAAIC,EACJ,MAEF,KAAK,EACHuG,EAAIvG,EACJsF,EAAIS,EACJhG,EAAIoB,EACJ,MAEF,KAAK,EACHoF,EAAIvG,EACJsF,EAAI+pD,EACJtvD,EAAIgG,EACJ,MAEF,KAAK,EACHQ,EAAIpF,EACJmE,EAAItF,EACJD,EAAIgG,EACJ,MAEF,KAAK,EACHQ,EAAIR,EACJT,EAAItF,EACJD,EAAIsvD,EACJ,MAEF,QACE,MAGJ,MAAO,CAAC9oD,EAAGjB,EAAGvF,GAGhB,SAASu7Q,SAAS/0Q,EAAGjB,EAAGvF,GACtB,IAGI47G,EAHA37C,EAAM5wD,KAAK4wD,IAAIz5D,EAAGjB,EAAGvF,GACrB2lD,EAAMt2C,KAAKs2C,IAAIn/C,EAAGjB,EAAGvF,GACrBD,EAAIkgE,EAAMta,EAEVtkD,EAAY,IAAR4+D,EAAY,EAAIlgE,EAAIkgE,EACxBj6D,EAAIi6D,EAAM,IAEd,OAAQA,GACN,KAAKta,EACHi2D,EAAI,EACJ,MAEF,KAAKp1G,EACHo1G,EAAIr2G,EAAIvF,EAAID,GAAKwF,EAAIvF,EAAI,EAAI,GAC7B47G,GAAK,EAAI77G,EACT,MAEF,KAAKwF,EACHq2G,EAAI57G,EAAIwG,EAAQ,EAAJzG,EACZ67G,GAAK,EAAI77G,EACT,MAEF,KAAKC,EACH47G,EAAIp1G,EAAIjB,EAAQ,EAAJxF,EACZ67G,GAAK,EAAI77G,EACT,MAEF,QACE,MAGJ,MAAO,CAAC67G,EAAGv6G,EAAG2E,GAGhB,SAASw1Q,mBAAmBxuD,EAAO1kL,GACjC,IAAImzO,EAAMF,SAAoB,IAAXvuD,EAAM,GAAqB,IAAXA,EAAM,GAAqB,IAAXA,EAAM,IASzD,OARAyuD,EAAI,IAAMnzO,EAENmzO,EAAI,GAAK,EACXA,EAAI,GAAK,EACAA,EAAI,IAAM,IACnBA,EAAI,GAAK,GAGJH,SAASG,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAGtC,SAASC,mBAAmB1uD,EAAO1kL,GACjC,IAAImzO,EAAMF,SAAoB,IAAXvuD,EAAM,GAAqB,IAAXA,EAAM,GAAqB,IAAXA,EAAM,IASzD,OARAyuD,EAAI,IAAMnzO,EAENmzO,EAAI,GAAK,EACXA,EAAI,GAAK,EACAA,EAAI,GAAK,IAClBA,EAAI,GAAK,GAGJH,SAASG,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAGtC,SAASE,YAAY3uD,EAAO1kL,GAC1B,IAAImzO,EAAMF,SAAoB,IAAXvuD,EAAM,GAAqB,IAAXA,EAAM,GAAqB,IAAXA,EAAM,IASzD,OARAyuD,EAAI,IAAMnzO,EAAS,IAEfmzO,EAAI,GAAK,EACXA,EAAI,IAAM,EACDA,EAAI,GAAK,IAClBA,EAAI,IAAM,GAGLH,SAASG,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAGtC,IAAIG,SAAW,WACb,IACIt6Q,EACAoN,EAFAmtQ,EAAW,GAIf,IAAKv6Q,EAAI,EAAGA,EAAI,IAAKA,GAAK,EACxBoN,EAAMpN,EAAEqN,SAAS,IACjBktQ,EAASv6Q,GAAoB,IAAfoN,EAAIjN,OAAe,IAAMiN,EAAMA,EAG/C,OAAO,SAAUlI,EAAGjB,EAAGvF,GAarB,OAZIwG,EAAI,IACNA,EAAI,GAGFjB,EAAI,IACNA,EAAI,GAGFvF,EAAI,IACNA,EAAI,GAGC,IAAM67Q,EAASr1Q,GAAKq1Q,EAASt2Q,GAAKs2Q,EAAS77Q,IAvBvC,GA2BX87Q,mBAAqB,SAA4BlG,GACnD0C,kBAAoB1C,GAGlBmG,mBAAqB,WACvB,OAAOzD,iBAGL0D,qBAAuB,SAA8Bt3Q,GACvD6zQ,kBAAoB7zQ,GAGlBu3Q,qBAAuB,WACzB,OAAO1D,mBAGL2D,wBAA0B,SAAiCx3Q,GAC7D40Q,qBAAuB50Q,GAGrBy3Q,wBAA0B,WAC5B,OAAO7C,sBAGL8C,YAAc,SAAqB13Q,GACrC8zQ,WAAa9zQ,GAGX23Q,YAAc,WAChB,OAAO7D,YAGT,SAAS8D,SAAShvP,GAEhB,OAAOyoB,SAASwmO,gBAAgBhH,MAAOjoP,GAGzC,SAASkvP,UAAUthQ,GAAuV,OAA1OshQ,UAArD,oBAAX12Q,QAAoD,kBAApBA,OAAOC,SAAqC,SAAiBmV,GAAO,cAAcA,GAA6B,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXpV,QAAyBoV,EAAI7a,cAAgByF,QAAUoV,IAAQpV,OAAOxF,UAAY,gBAAkB4a,GAAiBshQ,UAAUthQ,GAE3X,IAAIuhQ,YAAc,WAChB,IAEIC,EACAC,EAHAC,EAAa,EACbC,EAAY,GAGZC,EAAc,CAChBx2M,UAAW,aACXN,YAAa,SAAqBwnB,GAChCkvL,EAAS,CACPlsQ,KAAMg9E,MAIRuvL,EAAc,CAChB/2M,YAAa,SAAqBx1D,GAChCssQ,EAAYx2M,UAAU,CACpB91D,KAAMA,MAKZ,SAASwsQ,EAAa5hM,GACpB,GAAI72D,OAAO04P,QAAU14P,OAAOk4G,MAAQo5I,eAAgB,CAClD,IAAIpwD,EAAO,IAAIhpF,KAAK,CAAC,4CAA6CrhD,EAAGzsE,YAAa,CAChF2e,KAAM,oBAGJvrB,EAAMyoH,IAAIstE,gBAAgB2tB,GAC9B,OAAO,IAAIw3D,OAAOl7Q,GAIpB,OADA26Q,EAAWthM,EACJ0hM,EAGT,SAASI,IACFP,IACHA,EAAiBK,GAAa,SAAqBl4Q,GACjD,SAASq4Q,IACP,SAASC,EAAeC,EAAQC,GAC9B,IAAIC,EACAj8Q,EAEA2F,EACAu2Q,EACAz2Q,EACA02Q,EAJAx8K,EAAMo8K,EAAO57Q,OAMjB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAGxB,GAFAi8Q,EAAYF,EAAO/7Q,GAEf,OAAQi8Q,IAAcA,EAAUvtI,UAAW,CAO7C,GANAutI,EAAUvtI,WAAY,EAElButI,EAAUG,KACZL,EAAO/7Q,EAAI,GAAGq8Q,GAAKJ,EAAUG,IAG3BH,EAAUK,QAAS,CACrB,IAAIC,EAAYN,EAAUO,gBAG1B,IAFAN,EAAOK,EAAUp8Q,OAEZwF,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzB,GAAI42Q,EAAU52Q,GAAG82Q,GAAGh3Q,EAAEzF,EACpB08Q,EAA6BH,EAAU52Q,GAAG82Q,GAAGh3Q,QAI7C,IAFA02Q,EAAOI,EAAU52Q,GAAG82Q,GAAGh3Q,EAAEtF,OAEpBsF,EAAI,EAAGA,EAAI02Q,EAAM12Q,GAAK,EACrB82Q,EAAU52Q,GAAG82Q,GAAGh3Q,EAAEA,GAAG1F,GACvB28Q,EAA6BH,EAAU52Q,GAAG82Q,GAAGh3Q,EAAEA,GAAG1F,EAAE,IAGlDw8Q,EAAU52Q,GAAG82Q,GAAGh3Q,EAAEA,GAAGjC,GACvBk5Q,EAA6BH,EAAU52Q,GAAG82Q,GAAGh3Q,EAAEA,GAAGjC,EAAE,IAOzC,IAAjBy4Q,EAAUU,IACZV,EAAUF,OAASa,EAAeX,EAAUY,MAAOb,GACnDF,EAAeG,EAAUF,OAAQC,IACP,IAAjBC,EAAUU,GACnBG,EAAeb,EAAUc,QACC,IAAjBd,EAAUU,IACnBK,EAAaf,IAMrB,SAASgB,EAAc73K,EAAO83K,GAC5B,GAAI93K,EAAO,CACT,IAAIplG,EAAI,EACJ2/F,EAAMyF,EAAMjlG,OAEhB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACL,IAAfolG,EAAMplG,GAAGF,IAEXslG,EAAMplG,GAAGkP,KAAK6sQ,OAASa,EAAex3K,EAAMplG,GAAGkP,KAAK2tQ,MAAOK,GAa3DpB,EAAe12K,EAAMplG,GAAGkP,KAAK6sQ,OAAQmB,KAM7C,SAASC,EAASp4O,EAAIi3O,GACpB,IAAIh8Q,EAAI,EACJ2/F,EAAMq8K,EAAM77Q,OAEhB,MAAOH,EAAI2/F,EAAK,CACd,GAAIq8K,EAAMh8Q,GAAG+kC,KAAOA,EAClB,OAAOi3O,EAAMh8Q,GAGfA,GAAK,EAGP,OAAO,KAGT,SAAS48Q,EAAe73O,EAAIi3O,GAC1B,IAAIoB,EAAOD,EAASp4O,EAAIi3O,GAExB,OAAIoB,EACGA,EAAKrB,OAAOsB,OAKVjkQ,KAAKS,MAAMT,KAAKC,UAAU+jQ,EAAKrB,UAJpCqB,EAAKrB,OAAOsB,QAAS,EACdD,EAAKrB,QAMT,KAGT,SAASe,EAAeliQ,GACtB,IAAI5a,EAEA2F,EACAu2Q,EAFAv8K,EAAM/kF,EAAIza,OAId,IAAKH,EAAI2/F,EAAM,EAAG3/F,GAAK,EAAGA,GAAK,EAC7B,GAAkB,OAAd4a,EAAI5a,GAAG28Q,GACT,GAAI/hQ,EAAI5a,GAAGs9Q,GAAG73Q,EAAEzF,EACd08Q,EAA6B9hQ,EAAI5a,GAAGs9Q,GAAG73Q,QAIvC,IAFAy2Q,EAAOthQ,EAAI5a,GAAGs9Q,GAAG73Q,EAAEtF,OAEdwF,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACrBiV,EAAI5a,GAAGs9Q,GAAG73Q,EAAEE,GAAG5F,GACjB28Q,EAA6B9hQ,EAAI5a,GAAGs9Q,GAAG73Q,EAAEE,GAAG5F,EAAE,IAG5C6a,EAAI5a,GAAGs9Q,GAAG73Q,EAAEE,GAAGnC,GACjBk5Q,EAA6B9hQ,EAAI5a,GAAGs9Q,GAAG73Q,EAAEE,GAAGnC,EAAE,QAI7B,OAAdoX,EAAI5a,GAAG28Q,IAChBG,EAAeliQ,EAAI5a,GAAG41J,IAK5B,SAAS8mH,EAA6BxwL,GACpC,IAAIlsF,EACA2/F,EAAMzT,EAAKlsF,EAAEG,OAEjB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBksF,EAAKlsF,EAAEA,GAAG,IAAMksF,EAAKxnF,EAAE1E,GAAG,GAC1BksF,EAAKlsF,EAAEA,GAAG,IAAMksF,EAAKxnF,EAAE1E,GAAG,GAC1BksF,EAAKlnF,EAAEhF,GAAG,IAAMksF,EAAKxnF,EAAE1E,GAAG,GAC1BksF,EAAKlnF,EAAEhF,GAAG,IAAMksF,EAAKxnF,EAAE1E,GAAG,GAI9B,SAASu9Q,EAAaC,EAASC,GAC7B,IAAIC,EAAcD,EAAoBA,EAAkBvnQ,MAAM,KAAO,CAAC,IAAK,IAAK,KAEhF,OAAIsnQ,EAAQ,GAAKE,EAAY,MAIzBA,EAAY,GAAKF,EAAQ,MAIzBA,EAAQ,GAAKE,EAAY,MAIzBA,EAAY,GAAKF,EAAQ,MAIzBA,EAAQ,GAAKE,EAAY,MAIzBA,EAAY,GAAKF,EAAQ,KAItB,OAGT,IAAIG,EAAY,WACd,IAAItoD,EAAiB,CAAC,EAAG,EAAG,IAE5B,SAASuoD,EAAgBC,GACvB,IAAIC,EAAeD,EAAU/9Q,EAAErB,EAC/Bo/Q,EAAU/9Q,EAAErB,EAAI,CACdgH,EAAG,CAAC,CACF1F,EAAG+9Q,EACHh+Q,EAAG,KAKT,SAASi+Q,EAAchC,GACrB,IAAI/7Q,EACA2/F,EAAMo8K,EAAO57Q,OAEjB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACH,IAAjB+7Q,EAAO/7Q,GAAG28Q,IACZiB,EAAgB7B,EAAO/7Q,IAK7B,OAAO,SAAUg+Q,GACf,GAAIT,EAAaloD,EAAgB2oD,EAAct5Q,KAC7Cq5Q,EAAcC,EAAcjC,QAExBiC,EAAcd,QAAQ,CACxB,IAAIl9Q,EACA2/F,EAAMq+K,EAAcd,OAAO/8Q,OAE/B,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACpBg+Q,EAAcd,OAAOl9Q,GAAG+7Q,QAC1BgC,EAAcC,EAAcd,OAAOl9Q,GAAG+7Q,UAlClC,GA0CZkC,EAAa,WACf,IAAI5oD,EAAiB,CAAC,EAAG,EAAG,IAC5B,OAAO,SAAU2oD,GACf,GAAIA,EAAc54K,QAAUm4K,EAAaloD,EAAgB2oD,EAAct5Q,GAAI,CACzE,IAAI1E,EACA2/F,EAAMq+K,EAAc54K,MAAMjlG,OAE9B,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAAG,CAC3B,IAAIk+Q,EAAWF,EAAc54K,MAAMplG,GAE/Bk+Q,EAAShvQ,MAAQgvQ,EAAShvQ,KAAK6tQ,SACjCD,EAAeoB,EAAShvQ,KAAK6tQ,QAC7BmB,EAAShvQ,KAAKqjH,GAAK,EACnB2rJ,EAAShvQ,KAAKvK,GAAK,MACnBu5Q,EAAShvQ,KAAKivQ,GAAK,EACnBD,EAAShvQ,KAAKkvQ,GAAK,EACnBF,EAAShvQ,KAAKouQ,GAAK,CACjB3+Q,EAAG,CACD8G,EAAG,CAAC,EAAG,GACPC,EAAG,GAEL3F,EAAG,CACD0F,EAAG,CAAC,IAAK,KACTC,EAAG,GAELA,EAAG,CACDD,EAAG,CAAC,EAAG,GACPC,EAAG,GAELR,EAAG,CACDO,EAAG,EACHC,EAAG,GAELV,EAAG,CACDS,EAAG,IACHC,EAAG,IAIFs4Q,EAAc54K,MAAMplG,GAAGF,IAC1Bo+Q,EAAShvQ,KAAK6tQ,OAAOj4Q,KAAK,CACxB63Q,GAAI,OAENuB,EAAShvQ,KAAK6tQ,OAAO,GAAGnnH,GAAG9wJ,KAAK,CAC9BnG,EAAG,CACD8G,EAAG,CAAC,EAAG,GACPC,EAAG,GAEL3F,EAAG,CACD0F,EAAG,CAAC,IAAK,KACTC,EAAG,GAELA,EAAG,CACDD,EAAG,CAAC,EAAG,GACPC,EAAG,GAELR,EAAG,CACDO,EAAG,EACHC,EAAG,GAELV,EAAG,CACDS,EAAG,IACHC,EAAG,GAEL24Q,GAAI,CACF54Q,EAAG,EACHC,EAAG,GAEL44Q,GAAI,CACF74Q,EAAG,EACHC,EAAG,GAELi3Q,GAAI,YAxED,GAiFb4B,EAAsB,WACxB,IAAIlpD,EAAiB,CAAC,EAAG,EAAG,IAE5B,SAASuoD,EAAgBC,GACvB,IAAIW,EAAWX,EAAU/9Q,EAAEnB,EAED,kBAAf6/Q,EAAS94Q,IAClB84Q,EAAS94Q,EAAI,CACXA,EAAG,EACHD,EAAG+4Q,EAAS94Q,IAIU,kBAAf84Q,EAAS7/Q,IAClB6/Q,EAAS7/Q,EAAI,CACX+G,EAAG,EACHD,EAAG+4Q,EAAS7/Q,IAIU,kBAAf6/Q,EAASt5Q,IAClBs5Q,EAASt5Q,EAAI,CACXQ,EAAG,EACHD,EAAG+4Q,EAASt5Q,IAKlB,SAAS64Q,EAAchC,GACrB,IAAI/7Q,EACA2/F,EAAMo8K,EAAO57Q,OAEjB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACH,IAAjB+7Q,EAAO/7Q,GAAG28Q,IACZiB,EAAgB7B,EAAO/7Q,IAK7B,OAAO,SAAUg+Q,GACf,GAAIT,EAAaloD,EAAgB2oD,EAAct5Q,KAC7Cq5Q,EAAcC,EAAcjC,QAExBiC,EAAcd,QAAQ,CACxB,IAAIl9Q,EACA2/F,EAAMq+K,EAAcd,OAAO/8Q,OAE/B,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACpBg+Q,EAAcd,OAAOl9Q,GAAG+7Q,QAC1BgC,EAAcC,EAAcd,OAAOl9Q,GAAG+7Q,UAjDxB,GAyDtB0C,EAAc,WAChB,IAAIppD,EAAiB,CAAC,EAAG,EAAG,GAE5B,SAASqpD,EAAc3B,GACrB,IAAI/8Q,EAEA2F,EACAu2Q,EAFAv8K,EAAMo9K,EAAO58Q,OAIjB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB,GAAqB,OAAjB+8Q,EAAO/8Q,GAAG28Q,GACZ+B,EAAc3B,EAAO/8Q,GAAG41J,SACnB,GAAqB,OAAjBmnH,EAAO/8Q,GAAG28Q,IAAgC,OAAjBI,EAAO/8Q,GAAG28Q,GAC5C,GAAII,EAAO/8Q,GAAG+yE,EAAEttE,GAAKs3Q,EAAO/8Q,GAAG+yE,EAAEttE,EAAE,GAAGzF,EAGpC,IAFAk8Q,EAAOa,EAAO/8Q,GAAG+yE,EAAEttE,EAAEtF,OAEhBwF,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACrBo3Q,EAAO/8Q,GAAG+yE,EAAEttE,EAAEE,GAAG5F,IACnBg9Q,EAAO/8Q,GAAG+yE,EAAEttE,EAAEE,GAAG5F,EAAE,IAAM,IACzBg9Q,EAAO/8Q,GAAG+yE,EAAEttE,EAAEE,GAAG5F,EAAE,IAAM,IACzBg9Q,EAAO/8Q,GAAG+yE,EAAEttE,EAAEE,GAAG5F,EAAE,IAAM,IACzBg9Q,EAAO/8Q,GAAG+yE,EAAEttE,EAAEE,GAAG5F,EAAE,IAAM,KAGvBg9Q,EAAO/8Q,GAAG+yE,EAAEttE,EAAEE,GAAGnC,IACnBu5Q,EAAO/8Q,GAAG+yE,EAAEttE,EAAEE,GAAGnC,EAAE,IAAM,IACzBu5Q,EAAO/8Q,GAAG+yE,EAAEttE,EAAEE,GAAGnC,EAAE,IAAM,IACzBu5Q,EAAO/8Q,GAAG+yE,EAAEttE,EAAEE,GAAGnC,EAAE,IAAM,IACzBu5Q,EAAO/8Q,GAAG+yE,EAAEttE,EAAEE,GAAGnC,EAAE,IAAM,UAI7Bu5Q,EAAO/8Q,GAAG+yE,EAAEttE,EAAE,IAAM,IACpBs3Q,EAAO/8Q,GAAG+yE,EAAEttE,EAAE,IAAM,IACpBs3Q,EAAO/8Q,GAAG+yE,EAAEttE,EAAE,IAAM,IACpBs3Q,EAAO/8Q,GAAG+yE,EAAEttE,EAAE,IAAM,IAM5B,SAASs4Q,EAAchC,GACrB,IAAI/7Q,EACA2/F,EAAMo8K,EAAO57Q,OAEjB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACH,IAAjB+7Q,EAAO/7Q,GAAG28Q,IACZ+B,EAAc3C,EAAO/7Q,GAAG+8Q,QAK9B,OAAO,SAAUiB,GACf,GAAIT,EAAaloD,EAAgB2oD,EAAct5Q,KAC7Cq5Q,EAAcC,EAAcjC,QAExBiC,EAAcd,QAAQ,CACxB,IAAIl9Q,EACA2/F,EAAMq+K,EAAcd,OAAO/8Q,OAE/B,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACpBg+Q,EAAcd,OAAOl9Q,GAAG+7Q,QAC1BgC,EAAcC,EAAcd,OAAOl9Q,GAAG+7Q,UA9DhC,GAsEd4C,EAAc,WAChB,IAAItpD,EAAiB,CAAC,EAAG,EAAG,IAE5B,SAASupD,EAAsBhkQ,GAC7B,IAAI5a,EAEA2F,EACAu2Q,EAFAv8K,EAAM/kF,EAAIza,OAId,IAAKH,EAAI2/F,EAAM,EAAG3/F,GAAK,EAAGA,GAAK,EAC7B,GAAkB,OAAd4a,EAAI5a,GAAG28Q,GACT,GAAI/hQ,EAAI5a,GAAGs9Q,GAAG73Q,EAAEzF,EACd4a,EAAI5a,GAAGs9Q,GAAG73Q,EAAEstE,EAAIn4D,EAAI5a,GAAGk/D,YAIvB,IAFAg9M,EAAOthQ,EAAI5a,GAAGs9Q,GAAG73Q,EAAEtF,OAEdwF,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACrBiV,EAAI5a,GAAGs9Q,GAAG73Q,EAAEE,GAAG5F,IACjB6a,EAAI5a,GAAGs9Q,GAAG73Q,EAAEE,GAAG5F,EAAE,GAAGgzE,EAAIn4D,EAAI5a,GAAGk/D,QAG7BtkD,EAAI5a,GAAGs9Q,GAAG73Q,EAAEE,GAAGnC,IACjBoX,EAAI5a,GAAGs9Q,GAAG73Q,EAAEE,GAAGnC,EAAE,GAAGuvE,EAAIn4D,EAAI5a,GAAGk/D,YAId,OAAdtkD,EAAI5a,GAAG28Q,IAChBiC,EAAsBhkQ,EAAI5a,GAAG41J,IAKnC,SAASmoH,EAAchC,GACrB,IAAIE,EACAj8Q,EAEA2F,EACAu2Q,EACAz2Q,EACA02Q,EAJAx8K,EAAMo8K,EAAO57Q,OAMjB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAAG,CAG3B,GAFAi8Q,EAAYF,EAAO/7Q,GAEfi8Q,EAAUK,QAAS,CACrB,IAAIC,EAAYN,EAAUO,gBAG1B,IAFAN,EAAOK,EAAUp8Q,OAEZwF,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzB,GAAI42Q,EAAU52Q,GAAG82Q,GAAGh3Q,EAAEzF,EACpBu8Q,EAAU52Q,GAAG82Q,GAAGh3Q,EAAEstE,EAAIwpM,EAAU52Q,GAAGk5Q,QAInC,IAFA1C,EAAOI,EAAU52Q,GAAG82Q,GAAGh3Q,EAAEtF,OAEpBsF,EAAI,EAAGA,EAAI02Q,EAAM12Q,GAAK,EACrB82Q,EAAU52Q,GAAG82Q,GAAGh3Q,EAAEA,GAAG1F,IACvBw8Q,EAAU52Q,GAAG82Q,GAAGh3Q,EAAEA,GAAG1F,EAAE,GAAGgzE,EAAIwpM,EAAU52Q,GAAGk5Q,IAGzCtC,EAAU52Q,GAAG82Q,GAAGh3Q,EAAEA,GAAGjC,IACvB+4Q,EAAU52Q,GAAG82Q,GAAGh3Q,EAAEA,GAAGjC,EAAE,GAAGuvE,EAAIwpM,EAAU52Q,GAAGk5Q,IAOhC,IAAjB5C,EAAUU,IACZiC,EAAsB3C,EAAUc,SAKtC,OAAO,SAAUiB,GACf,GAAIT,EAAaloD,EAAgB2oD,EAAct5Q,KAC7Cq5Q,EAAcC,EAAcjC,QAExBiC,EAAcd,QAAQ,CACxB,IAAIl9Q,EACA2/F,EAAMq+K,EAAcd,OAAO/8Q,OAE/B,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACpBg+Q,EAAcd,OAAOl9Q,GAAG+7Q,QAC1BgC,EAAcC,EAAcd,OAAOl9Q,GAAG+7Q,UAnFhC,GA2FlB,SAAS+C,EAAad,GAChBA,EAAce,aAIlBN,EAAYT,GACZL,EAAUK,GACVC,EAAWD,GACXO,EAAoBP,GACpBW,EAAYX,GACZlC,EAAekC,EAAcjC,OAAQiC,EAAcd,QACnDD,EAAce,EAAc54K,MAAO44K,EAAcd,QACjDc,EAAce,YAAa,GAG7B,SAAS/B,EAAa9tQ,GACI,IAApBA,EAAKpP,EAAE4F,EAAEvF,QAAyB+O,EAAKpP,EAAEnB,EAI/C,IAAIqgR,EAAW,GAOf,OANAA,EAASF,aAAeA,EACxBE,EAASP,YAAcA,EACvBO,EAASf,WAAaA,EACtBe,EAAST,oBAAsBA,EAC/BS,EAASL,YAAcA,EACvBK,EAASlD,eAAiBA,EACnBkD,EA4ET,GAzEKvD,EAAYN,cACfM,EAAYN,YAAcU,KAGvBJ,EAAYwD,cACfxD,EAAYwD,YAAc,WACxB,SAASC,EAAe79Q,GAGtB,IAAI89Q,EAAoB99Q,EAAIm1I,kBAAkB,gBAE9C,OAAI2oI,GAA0C,SAArB99Q,EAAIS,eAAkE,IAAvCq9Q,EAAkBnlQ,QAAQ,SAI9E3Y,EAAIgB,UAAwC,WAA5B64Q,UAAU75Q,EAAIgB,UAHzBhB,EAAIgB,SAOThB,EAAIgB,UAAoC,kBAAjBhB,EAAIgB,SACtB+W,KAAKS,MAAMxY,EAAIgB,UAGpBhB,EAAIiB,aACC8W,KAAKS,MAAMxY,EAAIiB,cAGjB,KAGT,SAAS88Q,EAAUlzL,EAAMw+D,EAAUv5H,EAAUkuP,GAC3C,IAAIh9Q,EACAhB,EAAM,IAAIC,eAEd,IAEED,EAAIS,aAAe,OACnB,MAAO8L,IAGTvM,EAAIq6H,mBAAqB,WACvB,GAAuB,IAAnBr6H,EAAIi+H,WACN,GAAmB,MAAfj+H,EAAIe,OACNC,EAAW68Q,EAAe79Q,GAC1B8vB,EAAS9uB,QAET,IACEA,EAAW68Q,EAAe79Q,GAC1B8vB,EAAS9uB,GACT,MAAOuL,GACHyxQ,GACFA,EAAczxQ,KAOxB,IACEvM,EAAIE,KAAK,MAAO2qF,GAAM,GACtB,MAAO9mF,GACP/D,EAAIE,KAAK,MAAOmpJ,EAAW,IAAMx+D,GAAM,GAGzC7qF,EAAIV,OAGN,MAAO,CACLwhO,KAAMi9C,GA/DgB,IAoER,kBAAhB57Q,EAAE0L,KAAK8c,KACTyvP,EAAYwD,YAAY98C,KAAK3+N,EAAE0L,KAAKg9E,KAAM1oF,EAAE0L,KAAKw7I,UAAU,SAAUx7I,GACnEusQ,EAAYN,YAAY2D,aAAa5vQ,GAErCusQ,EAAY/2M,YAAY,CACtB3/B,GAAIvhC,EAAE0L,KAAK61B,GACX1e,QAASnX,EACT9M,OAAQ,eAET,WACDq5Q,EAAY/2M,YAAY,CACtB3/B,GAAIvhC,EAAE0L,KAAK61B,GACX3iC,OAAQ,kBAGP,GAAoB,aAAhBoB,EAAE0L,KAAK8c,KAAqB,CACrC,IAAIszP,EAAY97Q,EAAE0L,KAAKowQ,UAEvB7D,EAAYN,YAAY2D,aAAaQ,GAErC7D,EAAY/2M,YAAY,CACtB3/B,GAAIvhC,EAAE0L,KAAK61B,GACX1e,QAASi5P,EACTl9Q,OAAQ,gBAEe,aAAhBoB,EAAE0L,KAAK8c,MAChByvP,EAAYwD,YAAY98C,KAAK3+N,EAAE0L,KAAKg9E,KAAM1oF,EAAE0L,KAAKw7I,UAAU,SAAUx7I,GACnEusQ,EAAY/2M,YAAY,CACtB3/B,GAAIvhC,EAAE0L,KAAK61B,GACX1e,QAASnX,EACT9M,OAAQ,eAET,WACDq5Q,EAAY/2M,YAAY,CACtB3/B,GAAIvhC,EAAE0L,KAAK61B,GACX3iC,OAAQ,gBAMhBi5Q,EAAer2M,UAAY,SAAUt/C,GACnC,IAAIxW,EAAOwW,EAAMxW,KACb61B,EAAK71B,EAAK61B,GACV8rH,EAAU0qH,EAAUx2O,GACxBw2O,EAAUx2O,GAAM,KAEI,YAAhB71B,EAAK9M,OACPyuJ,EAAQ56C,WAAW/mG,EAAKmX,SACfwqI,EAAQ41E,SACjB51E,EAAQ41E,YAMhB,SAAS84C,EAActpK,EAAYwwH,GACjC60C,GAAc,EACd,IAAIv2O,EAAK,aAAeu2O,EAKxB,OAJAC,EAAUx2O,GAAM,CACdkxE,WAAYA,EACZwwH,QAASA,GAEJ1hM,EAGT,SAASy6O,EAActzL,EAAM+pB,EAAYwwH,GACvCm1C,IACA,IAAI6D,EAAYF,EAActpK,EAAYwwH,GAC1C40C,EAAe32M,YAAY,CACzB14C,KAAM,gBACNkgE,KAAMA,EACNw+D,SAAUznI,OAAOk6B,SAASG,OAASr6B,OAAOk6B,SAASI,SACnDxY,GAAI06O,IAIR,SAASC,EAASxzL,EAAM+pB,EAAYwwH,GAClCm1C,IACA,IAAI6D,EAAYF,EAActpK,EAAYwwH,GAC1C40C,EAAe32M,YAAY,CACzB14C,KAAM,WACNkgE,KAAMA,EACNw+D,SAAUznI,OAAOk6B,SAASG,OAASr6B,OAAOk6B,SAASI,SACnDxY,GAAI06O,IAIR,SAASE,EAAkBC,EAAM3pK,EAAYwwH,GAC3Cm1C,IACA,IAAI6D,EAAYF,EAActpK,EAAYwwH,GAC1C40C,EAAe32M,YAAY,CACzB14C,KAAM,WACNszP,UAAWM,EACX76O,GAAI06O,IAIR,MAAO,CACLD,cAAeA,EACfE,SAAUA,EACVC,kBAAmBA,GA9vBL,GAkwBdE,eAAiB,WACnB,IAAIC,EAAa,WACf,IAAIC,EAASrL,UAAU,UACvBqL,EAAO1hN,MAAQ,EACf0hN,EAAOxhN,OAAS,EAChB,IAAI4zC,EAAM4tK,EAAO30C,WAAW,MAG5B,OAFAj5H,EAAI6tK,UAAY,gBAChB7tK,EAAI8tK,SAAS,EAAG,EAAG,EAAG,GACfF,EAPQ,GAUjB,SAASG,IACPphR,KAAKqhR,cAAgB,EAEjBrhR,KAAKqhR,eAAiBrhR,KAAKshR,aAAethR,KAAKuhR,sBAAwBvhR,KAAKwhR,eAC1ExhR,KAAKyhR,gBACPzhR,KAAKyhR,eAAe,MAK1B,SAASC,IACP1hR,KAAKuhR,qBAAuB,EAExBvhR,KAAKqhR,eAAiBrhR,KAAKshR,aAAethR,KAAKuhR,sBAAwBvhR,KAAKwhR,eAC1ExhR,KAAKyhR,gBACPzhR,KAAKyhR,eAAe,MAK1B,SAASE,EAAcC,EAAWC,EAAYC,GAC5C,IAAI10L,EAAO,GAEX,GAAIw0L,EAAUl9Q,EACZ0oF,EAAOw0L,EAAU/hR,OACZ,GAAIgiR,EAAY,CACrB,IAAIE,EAAYH,EAAU/hR,GAEY,IAAlCkiR,EAAU7mQ,QAAQ,aACpB6mQ,EAAYA,EAAU3qQ,MAAM,KAAK,IAGnCg2E,EAAOy0L,EAAaE,OAEpB30L,EAAO00L,EACP10L,GAAQw0L,EAAU3yN,EAAI2yN,EAAU3yN,EAAI,GACpCm+B,GAAQw0L,EAAU/hR,EAGpB,OAAOutF,EAGT,SAAS40L,EAAgBC,GACvB,IAAIhH,EAAS,EACT/6M,EAAaC,YAAY,WAC3B,IAAI+hN,EAAMD,EAAIE,WAEVD,EAAI3iN,OAAS07M,EAAS,OACxBj7Q,KAAKoiR,eAEL/hN,cAAcH,IAGhB+6M,GAAU,GACV53N,KAAKrjD,MAAO,IAGhB,SAASqiR,EAAgBT,GACvB,IAAIx0L,EAAOu0L,EAAcC,EAAW5hR,KAAK6hR,WAAY7hR,KAAKotF,MACtD60L,EAAM/F,SAAS,SAEf7D,SACFr4Q,KAAKgiR,gBAAgBC,GAErBA,EAAIv8P,iBAAiB,OAAQ1lB,KAAKoiR,cAAc,GAGlDH,EAAIv8P,iBAAiB,QAAS,WAC5B48P,EAAGL,IAAMjB,EAEThhR,KAAKoiR,gBACL/+N,KAAKrjD,OAAO,GACdiiR,EAAI9xE,eAAe,+BAAgC,OAAQ/iH,GAEvDptF,KAAKuiR,eAAeplO,OACtBn9C,KAAKuiR,eAAeplO,OAAO8kO,GAE3BjiR,KAAKuiR,eAAez3M,YAAYm3M,GAGlC,IAAIK,EAAK,CACPL,IAAKA,EACLL,UAAWA,GAEb,OAAOU,EAGT,SAASE,EAAcZ,GACrB,IAAIx0L,EAAOu0L,EAAcC,EAAW5hR,KAAK6hR,WAAY7hR,KAAKotF,MACtD60L,EAAMrM,UAAU,OACpBqM,EAAIQ,YAAc,YAClBR,EAAIv8P,iBAAiB,OAAQ1lB,KAAKoiR,cAAc,GAChDH,EAAIv8P,iBAAiB,QAAS,WAC5B48P,EAAGL,IAAMjB,EAEThhR,KAAKoiR,gBACL/+N,KAAKrjD,OAAO,GACdiiR,EAAI53M,IAAM+iB,EACV,IAAIk1L,EAAK,CACPL,IAAKA,EACLL,UAAWA,GAEb,OAAOU,EAGT,SAASI,EAAkBtyQ,GACzB,IAAIkyQ,EAAK,CACPV,UAAWxxQ,GAETg9E,EAAOu0L,EAAcvxQ,EAAMpQ,KAAK6hR,WAAY7hR,KAAKotF,MAUrD,OATAivL,YAAYuE,SAASxzL,EAAM,SAAUu1L,GACnCL,EAAGL,IAAMU,EAET3iR,KAAK4iR,kBACLv/N,KAAKrjD,MAAO,WACZsiR,EAAGL,IAAM,GAETjiR,KAAK4iR,kBACLv/N,KAAKrjD,OACAsiR,EAGT,SAASO,EAAWzE,EAAQtmK,GAE1B,IAAI52G,EADJlB,KAAKyhR,eAAiB3pK,EAEtB,IAAIjX,EAAMu9K,EAAO/8Q,OAEjB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACnBk9Q,EAAOl9Q,GAAG+7Q,SACRmB,EAAOl9Q,GAAGF,GAAqB,QAAhBo9Q,EAAOl9Q,GAAGF,EAGH,IAAhBo9Q,EAAOl9Q,GAAGF,IACnBhB,KAAKwhR,eAAiB,EACtBxhR,KAAK8iR,OAAO98Q,KAAKhG,KAAK0iR,kBAAkBtE,EAAOl9Q,OAJ/ClB,KAAKshR,aAAe,EACpBthR,KAAK8iR,OAAO98Q,KAAKhG,KAAK+iR,iBAAiB3E,EAAOl9Q,OAStD,SAAS8hR,EAAQ51L,GACfptF,KAAKotF,KAAOA,GAAQ,GAGtB,SAAS61L,EAAc71L,GACrBptF,KAAK6hR,WAAaz0L,GAAQ,GAG5B,SAAS81L,EAAStB,GAChB,IAAI1gR,EAAI,EACJ2/F,EAAM7gG,KAAK8iR,OAAOzhR,OAEtB,MAAOH,EAAI2/F,EAAK,CACd,GAAI7gG,KAAK8iR,OAAO5hR,GAAG0gR,YAAcA,EAC/B,OAAO5hR,KAAK8iR,OAAO5hR,GAAG+gR,IAGxB/gR,GAAK,EAGP,OAAO,KAGT,SAASiiR,IACPnjR,KAAKyhR,eAAiB,KACtBzhR,KAAK8iR,OAAOzhR,OAAS,EAGvB,SAAS+hR,IACP,OAAOpjR,KAAKshR,cAAgBthR,KAAKqhR,aAGnC,SAASgC,IACP,OAAOrjR,KAAKwhR,gBAAkBxhR,KAAKuhR,oBAGrC,SAAS+B,EAAap2P,EAAMq2P,GACb,QAATr2P,GACFltB,KAAKuiR,eAAiBgB,EACtBvjR,KAAK+iR,iBAAmB/iR,KAAKqiR,gBAAgBh/N,KAAKrjD,OAElDA,KAAK+iR,iBAAmB/iR,KAAKwiR,cAAcn/N,KAAKrjD,MAIpD,SAASwjR,IACPxjR,KAAKoiR,aAAehB,EAAY/9N,KAAKrjD,MACrCA,KAAK4iR,eAAiBlB,EAAcr+N,KAAKrjD,MACzCA,KAAKgiR,gBAAkBA,EAAgB3+N,KAAKrjD,MAC5CA,KAAK0iR,kBAAoBA,EAAkBr/N,KAAKrjD,MAChDA,KAAK6hR,WAAa,GAClB7hR,KAAKotF,KAAO,GACZptF,KAAKshR,YAAc,EACnBthR,KAAKwhR,cAAgB,EACrBxhR,KAAKqhR,aAAe,EACpBrhR,KAAKuhR,oBAAsB,EAC3BvhR,KAAKyhR,eAAiB,KACtBzhR,KAAK8iR,OAAS,GAiBhB,OAdAU,EAAsBtjR,UAAY,CAChC2iR,WAAYA,EACZI,cAAeA,EACfD,QAASA,EACTI,aAAcA,EACdC,eAAgBA,EAChBF,QAASA,EACTD,SAAUA,EACVV,cAAeA,EACfH,gBAAiBA,EACjBjB,YAAaA,EACbM,cAAeA,EACf4B,aAAcA,GAETE,EAjOY,GAoOrB,SAASC,aAETA,UAAUvjR,UAAY,CACpBwjR,aAAc,SAAsB5nM,EAAWsW,GAC7C,GAAIpyF,KAAK2jR,KAAK7nM,GAGZ,IAFA,IAAIlsD,EAAY5vB,KAAK2jR,KAAK7nM,GAEjB56E,EAAI,EAAGA,EAAI0uB,EAAUvuB,OAAQH,GAAK,EACzC0uB,EAAU1uB,GAAGkxF,IAInB1sE,iBAAkB,SAA0Bo2D,EAAWzpD,GAOrD,OANKryB,KAAK2jR,KAAK7nM,KACb97E,KAAK2jR,KAAK7nM,GAAa,IAGzB97E,KAAK2jR,KAAK7nM,GAAW91E,KAAKqsB,GAEnB,WACLryB,KAAK0jD,oBAAoBo4B,EAAWzpD,IACpCgxB,KAAKrjD,OAET0jD,oBAAqB,SAA6Bo4B,EAAWzpD,GAC3D,GAAKA,GAEE,GAAIryB,KAAK2jR,KAAK7nM,GAAY,CAC/B,IAAI56E,EAAI,EACJ2/F,EAAM7gG,KAAK2jR,KAAK7nM,GAAWz6E,OAE/B,MAAOH,EAAI2/F,EACL7gG,KAAK2jR,KAAK7nM,GAAW56E,KAAOmxB,IAC9BryB,KAAK2jR,KAAK7nM,GAAW00B,OAAOtvG,EAAG,GAE/BA,GAAK,EACL2/F,GAAO,GAGT3/F,GAAK,EAGFlB,KAAK2jR,KAAK7nM,GAAWz6E,SACxBrB,KAAK2jR,KAAK7nM,GAAa,YAjBzB97E,KAAK2jR,KAAK7nM,GAAa,OAuB7B,IAAI8nM,aAAe,WACjB,SAASC,EAAkBt8P,GAMzB,IALA,IAEIqqF,EAFA1C,EAAQ3nF,EAAQnQ,MAAM,QACtBvU,EAAO,GAEPihR,EAAY,EAEP5iR,EAAI,EAAGA,EAAIguG,EAAM7tG,OAAQH,GAAK,EACrC0wG,EAAO1C,EAAMhuG,GAAGkW,MAAM,KAEF,IAAhBw6F,EAAKvwG,SACPwB,EAAK+uG,EAAK,IAAMA,EAAK,GAAGl2F,OACxBooQ,GAAa,GAIjB,GAAkB,IAAdA,EACF,MAAM,IAAIljR,MAGZ,OAAOiC,EAGT,OAAO,SAAUkhR,GAGf,IAFA,IAAIC,EAAU,GAEL9iR,EAAI,EAAGA,EAAI6iR,EAAS1iR,OAAQH,GAAK,EAAG,CAC3C,IAAI+iR,EAAUF,EAAS7iR,GACnBgjR,EAAa,CACf9+N,KAAM6+N,EAAQE,GACd71M,SAAU21M,EAAQG,IAGpB,IACEF,EAAW38P,QAAUjN,KAAKS,MAAMgpQ,EAAS7iR,GAAGmjR,IAC5C,MAAOj/Q,GACP,IACE8+Q,EAAW38P,QAAUs8P,EAAkBE,EAAS7iR,GAAGmjR,IACnD,MAAOtkR,GACPmkR,EAAW38P,QAAU,CACnBlU,KAAM0wQ,EAAS7iR,GAAGmjR,KAKxBL,EAAQh+Q,KAAKk+Q,GAGf,OAAOF,GAhDQ,GAoDfM,iBAAmB,WACrB,SAASC,EAAoBjG,GAC3Bt+Q,KAAKwkR,aAAax+Q,KAAKs4Q,GAGzB,OAAO,WACL,SAASmG,EAAqBpxQ,GAC5B,IAAInS,EAAI,EACJ2/F,EAAM7gG,KAAKwkR,aAAanjR,OAE5B,MAAOH,EAAI2/F,EAAK,CACd,GAAI7gG,KAAKwkR,aAAatjR,GAAGkP,MAAQpQ,KAAKwkR,aAAatjR,GAAGkP,KAAKs0Q,KAAOrxQ,EAKhE,OAJIrT,KAAKwkR,aAAatjR,GAAGyjR,cAAgB3kR,KAAKwkR,aAAatjR,GAAGkP,KAAKw0Q,IACjE5kR,KAAKwkR,aAAatjR,GAAGyjR,aAAa3kR,KAAK6kR,cAGlC7kR,KAAKwkR,aAAatjR,GAAG4jR,cAG9B5jR,GAAK,EAGP,OAAO,KAMT,OAHAujR,EAAqBD,aAAe,GACpCC,EAAqBI,aAAe,EACpCJ,EAAqBF,oBAAsBA,EACpCE,GA5BY,GAgCnBM,UAAY,GAEZC,iBAAmB,SAA0BppQ,EAAKtX,GACpDygR,UAAUnpQ,GAAOtX,GAGnB,SAAS2gR,YAAYrpQ,GACnB,OAAOmpQ,UAAUnpQ,GAGnB,SAASspQ,UAAUpqQ,GAAuV,OAA1OoqQ,UAArD,oBAAXx/Q,QAAoD,kBAApBA,OAAOC,SAAqC,SAAiBmV,GAAO,cAAcA,GAA6B,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXpV,QAAyBoV,EAAI7a,cAAgByF,QAAUoV,IAAQpV,OAAOxF,UAAY,gBAAkB4a,GAAiBoqQ,UAAUpqQ,GAE3X,IAAIqqQ,cAAgB,WAClBnlR,KAAK2jR,KAAO,GACZ3jR,KAAKqT,KAAO,GACZrT,KAAKotF,KAAO,GACZptF,KAAKolR,UAAW,EAChBplR,KAAK6kR,aAAe,EACpB7kR,KAAKqlR,gBAAkB,EACvBrlR,KAAKy6Q,WAAa,EAClBz6Q,KAAK06Q,YAAc,EACnB16Q,KAAKslR,UAAY,EACjBtlR,KAAKulR,UAAY,EACjBvlR,KAAKwlR,UAAY,EACjBxlR,KAAKylR,cAAgB,EACrBzlR,KAAK0lR,UAAY,EACjB1lR,KAAKk/Q,cAAgB,GACrBl/Q,KAAKo+Q,OAAS,GACdp+Q,KAAK2lR,UAAW,EAChB3lR,KAAK4lR,UAAW,EAChB5lR,KAAK6lR,MAAO,EACZ7lR,KAAK8lR,SAAW,KAChB9lR,KAAK+lR,YAAc/K,kBACnBh7Q,KAAK6hR,WAAa,GAClB7hR,KAAKgmR,cAAgB,EACrBhmR,KAAKimR,WAAa,EAClBjmR,KAAKkmR,kBAAoBvK,qBACzB37Q,KAAKmmR,SAAW,GAChBnmR,KAAKomR,OAAQ,EACbpmR,KAAKqmR,gBAAiB,EACtBrmR,KAAKsmR,iBAAmBhC,mBACxBtkR,KAAKumR,eAAiB,IAAIxF,eAC1B/gR,KAAKwmR,gBAAkBvQ,yBACvBj2Q,KAAKgkR,QAAU,GACfhkR,KAAKymR,gBAAkBzmR,KAAKymR,gBAAgBpjO,KAAKrjD,MACjDA,KAAK0mR,aAAe1mR,KAAK0mR,aAAarjO,KAAKrjD,MAC3CA,KAAK2mR,kBAAoB3mR,KAAK2mR,kBAAkBtjO,KAAKrjD,MACrDA,KAAK4mR,gBAAkB,IAAI5M,kBAAkB,aAAc,EAAG,EAAG,IAGnEnE,gBAAgB,CAAC4N,WAAY0B,eAE7BA,cAAcjlR,UAAU2mR,UAAY,SAAUtrQ,IACxCA,EAAO4hJ,SAAW5hJ,EAAOm3H,aAC3B1yI,KAAKm9J,QAAU5hJ,EAAO4hJ,SAAW5hJ,EAAOm3H,WAG1C,IAAIo0I,EAAW,MAEXvrQ,EAAOurQ,SACTA,EAAWvrQ,EAAOurQ,SACTvrQ,EAAOuqQ,WAChBgB,EAAWvrQ,EAAOuqQ,UAGpB,IAAIiB,EAAgB9B,YAAY6B,GAChC9mR,KAAK8lR,SAAW,IAAIiB,EAAc/mR,KAAMub,EAAOyrQ,kBAC/ChnR,KAAKumR,eAAejD,aAAawD,EAAU9mR,KAAK8lR,SAASmB,WAAWC,MACpElnR,KAAK8lR,SAASqB,oBAAoBnnR,KAAKsmR,kBACvCtmR,KAAK8mR,SAAWA,EAEI,KAAhBvrQ,EAAOsqQ,MAA+B,OAAhBtqQ,EAAOsqQ,WAAiC3/O,IAAhB3qB,EAAOsqQ,OAAsC,IAAhBtqQ,EAAOsqQ,KACpF7lR,KAAK6lR,MAAO,GACa,IAAhBtqQ,EAAOsqQ,KAChB7lR,KAAK6lR,MAAO,EAEZ7lR,KAAK6lR,KAAO5gO,SAAS1pC,EAAOsqQ,KAAM,IAGpC7lR,KAAK4lR,WAAW,aAAcrqQ,IAASA,EAAOqqQ,SAC9C5lR,KAAKqT,KAAOkI,EAAOlI,KAAOkI,EAAOlI,KAAO,GACxCrT,KAAKonR,kBAAmB7nR,OAAOW,UAAUJ,eAAea,KAAK4a,EAAQ,qBAAsBA,EAAO6rQ,iBAClGpnR,KAAK6hR,WAAatmQ,EAAOsmQ,WACzB7hR,KAAKqnR,eAAiB9rQ,EAAO8rQ,eAEzB9rQ,EAAO46P,cACTn2Q,KAAKwmR,gBAAgBpP,gBAAgB77P,EAAO46P,cAG1C56P,EAAO2jQ,cACTl/Q,KAAKsnR,eAAe/rQ,EAAO2jQ,eAClB3jQ,EAAO6xE,QACuB,IAAnC7xE,EAAO6xE,KAAKhyE,YAAY,MAC1Bpb,KAAKotF,KAAO7xE,EAAO6xE,KAAKpM,OAAO,EAAGzlE,EAAO6xE,KAAKhyE,YAAY,MAAQ,GAElEpb,KAAKotF,KAAO7xE,EAAO6xE,KAAKpM,OAAO,EAAGzlE,EAAO6xE,KAAKhyE,YAAY,KAAO,GAGnEpb,KAAK2xG,SAAWp2F,EAAO6xE,KAAKpM,OAAOzlE,EAAO6xE,KAAKhyE,YAAY,KAAO,GAClEpb,KAAK2xG,SAAW3xG,KAAK2xG,SAAS3wB,OAAO,EAAGhhF,KAAK2xG,SAASv2F,YAAY,UAClEihQ,YAAYqE,cAAcnlQ,EAAO6xE,KAAMptF,KAAKymR,gBAAiBzmR,KAAK0mR,gBAItEvB,cAAcjlR,UAAUwmR,aAAe,WACrC1mR,KAAKunR,QAAQ,gBAGfpC,cAAcjlR,UAAUonR,eAAiB,SAAUl3Q,GACjDisQ,YAAYwE,kBAAkBzwQ,EAAMpQ,KAAKymR,kBAG3CtB,cAAcjlR,UAAU6hQ,QAAU,SAAU5kG,EAAS+hH,GAC/CA,GAC+B,WAA7BgG,UAAUhG,KACZA,EAAgB5kQ,KAAKS,MAAMmkQ,IAI/B,IAAI3jQ,EAAS,CACX4hJ,QAASA,EACT+hH,cAAeA,GAEbsI,EAAoBrqH,EAAQiyB,WAChC7zK,EAAO6xE,KAAOo6L,EAAkBC,aAAa,uBAC3CD,EAAkBC,aAAa,uBAAuBnjR,MAAQkjR,EAAkBC,aAAa,gBAC7FD,EAAkBC,aAAa,gBAAgBnjR,MAAQkjR,EAAkBC,aAAa,WAAaD,EAAkBC,aAAa,WAAWnjR,MAAQ,GACvJiX,EAAOurQ,SAAWU,EAAkBC,aAAa,kBAC/CD,EAAkBC,aAAa,kBAAkBnjR,MAAQkjR,EAAkBC,aAAa,gBACxFD,EAAkBC,aAAa,gBAAgBnjR,MAAQkjR,EAAkBC,aAAa,WACtFD,EAAkBC,aAAa,WAAWnjR,MAAQkjR,EAAkBC,aAAa,oBACjFD,EAAkBC,aAAa,oBAAoBnjR,MAAQkjR,EAAkBC,aAAa,eAAiBD,EAAkBC,aAAa,eAAenjR,MAAQ,SACnK,IAAIuhR,EAAO2B,EAAkBC,aAAa,kBACxCD,EAAkBC,aAAa,kBAAkBnjR,MAAQkjR,EAAkBC,aAAa,gBACxFD,EAAkBC,aAAa,gBAAgBnjR,MAAQkjR,EAAkBC,aAAa,WAAaD,EAAkBC,aAAa,WAAWnjR,MAAQ,GAE1I,UAATuhR,EACFtqQ,EAAOsqQ,MAAO,EACI,SAATA,EACTtqQ,EAAOsqQ,MAAO,EACI,KAATA,IACTtqQ,EAAOsqQ,KAAO5gO,SAAS4gO,EAAM,KAG/B,IAAID,EAAW4B,EAAkBC,aAAa,sBAC5CD,EAAkBC,aAAa,sBAAsBnjR,MAAQkjR,EAAkBC,aAAa,oBAC5FD,EAAkBC,aAAa,oBAAoBnjR,OAAQkjR,EAAkBC,aAAa,gBAAiBD,EAAkBC,aAAa,eAAenjR,MAC3JiX,EAAOqqQ,SAAwB,UAAbA,EAClBrqQ,EAAOlI,KAAOm0Q,EAAkBC,aAAa,aAC3CD,EAAkBC,aAAa,aAAanjR,MAAQkjR,EAAkBC,aAAa,gBACnFD,EAAkBC,aAAa,gBAAgBnjR,MAAQkjR,EAAkBC,aAAa,WAAaD,EAAkBC,aAAa,WAAWnjR,MAAQ,GACvJ,IAAIojR,EAAYF,EAAkBC,aAAa,uBAC7CD,EAAkBC,aAAa,uBAAuBnjR,MAAQkjR,EAAkBC,aAAa,qBAC7FD,EAAkBC,aAAa,qBAAqBnjR,MAAQkjR,EAAkBC,aAAa,gBAAkBD,EAAkBC,aAAa,gBAAgBnjR,MAAQ,GAEpJ,UAAdojR,IACFnsQ,EAAOmsQ,WAAY,GAGrB1nR,KAAK6mR,UAAUtrQ,IAGjB4pQ,cAAcjlR,UAAUynR,cAAgB,SAAUv3Q,GAC5CA,EAAKvK,GAAK7F,KAAKk/Q,cAAcr5Q,KAC/B7F,KAAKk/Q,cAAcr5Q,GAAKuK,EAAKvK,GAC7B7F,KAAK06Q,YAAczrQ,KAAKq2C,MAAMl1C,EAAKvK,GAAK7F,KAAKk/Q,cAAczrJ,KAG7D,IACIvyH,EAGA2F,EAJAo2Q,EAASj9Q,KAAKk/Q,cAAcjC,OAE5Bp8K,EAAMo8K,EAAO57Q,OACbumR,EAAYx3Q,EAAK6sQ,OAEjBG,EAAOwK,EAAUvmR,OAErB,IAAKwF,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EAAG,CAC5B3F,EAAI,EAEJ,MAAOA,EAAI2/F,EAAK,CACd,GAAIo8K,EAAO/7Q,GAAG+kC,KAAO2hP,EAAU/gR,GAAGo/B,GAAI,CACpCg3O,EAAO/7Q,GAAK0mR,EAAU/gR,GACtB,MAGF3F,GAAK,GAST,IALIkP,EAAKk2F,OAASl2F,EAAKy3Q,SACrB7nR,KAAK8lR,SAASmB,WAAWa,YAAYC,SAAS33Q,EAAKk2F,OACnDtmG,KAAK8lR,SAASmB,WAAWa,YAAYE,SAAS53Q,EAAKy3Q,MAAO7nR,KAAK8lR,SAASmB,WAAWC,OAGjF92Q,EAAKguQ,OAGP,IAFAv9K,EAAMzwF,EAAKguQ,OAAO/8Q,OAEbH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKk/Q,cAAcd,OAAOp4Q,KAAKoK,EAAKguQ,OAAOl9Q,IAI/ClB,KAAKk/Q,cAAce,YAAa,EAChC5D,YAAYwE,kBAAkB7gR,KAAKk/Q,cAAel/Q,KAAK2mR,oBAGzDxB,cAAcjlR,UAAUymR,kBAAoB,SAAUv2Q,GACpDpQ,KAAKk/Q,cAAgB9uQ,EACrB,IAAI+nQ,EAAoB0D,uBAEpB1D,GACFA,EAAkB8P,gBAAgBjoR,MAGpCA,KAAKkoR,mBAGP/C,cAAcjlR,UAAUgoR,gBAAkB,WACxC,IAAI/B,EAAWnmR,KAAKk/Q,cAAciH,SAElC,IAAKA,GAAgC,IAApBA,EAAS9kR,SAAiBrB,KAAKonR,iBAG9C,OAFApnR,KAAKunR,QAAQ,mBACbvnR,KAAKgmR,cAAgBhmR,KAAK06Q,aAI5B,IAAIhnF,EAAUyyF,EAASnoO,QACvBh+C,KAAKgmR,cAAgBtyF,EAAQtuI,KAAOplD,KAAKslR,UACzC,IAAI6C,EAAcnoR,KAAKotF,KAAOptF,KAAK2xG,SAAW,IAAM3xG,KAAKimR,WAAa,QACtEjmR,KAAKimR,YAAc,EACnB5J,YAAYuE,SAASuH,EAAanoR,KAAK2nR,cAActkO,KAAKrjD,MAAO,WAC/DA,KAAKunR,QAAQ,gBACblkO,KAAKrjD,QAGTmlR,cAAcjlR,UAAUkoR,aAAe,WACrC,IAAIjC,EAAWnmR,KAAKk/Q,cAAciH,SAE7BA,IACHnmR,KAAKgmR,cAAgBhmR,KAAK06Q,aAG5B16Q,KAAKkoR,mBAGP/C,cAAcjlR,UAAUmoR,aAAe,WACrCroR,KAAKunR,QAAQ,iBACbvnR,KAAKsoR,eAGPnD,cAAcjlR,UAAUqoR,cAAgB,WACtCvoR,KAAKumR,eAAetD,cAAcjjR,KAAK6hR,YACvC7hR,KAAKumR,eAAevD,QAAQhjR,KAAKotF,MACjCptF,KAAKumR,eAAe1D,WAAW7iR,KAAKk/Q,cAAcd,OAAQp+Q,KAAKqoR,aAAahlO,KAAKrjD,QAGnFmlR,cAAcjlR,UAAUumR,gBAAkB,SAAU+B,GAClD,GAAKxoR,KAAK8lR,SAIV,IACE9lR,KAAKk/Q,cAAgBsJ,EAEjBxoR,KAAKqnR,gBACPrnR,KAAK06Q,YAAczrQ,KAAKq2C,MAAMtlD,KAAKqnR,eAAe,GAAKrnR,KAAKqnR,eAAe,IAC3ErnR,KAAKy6Q,WAAaxrQ,KAAKmiB,MAAMpxB,KAAKqnR,eAAe,MAEjDrnR,KAAK06Q,YAAczrQ,KAAKq2C,MAAMtlD,KAAKk/Q,cAAcr5Q,GAAK7F,KAAKk/Q,cAAczrJ,IACzEzzH,KAAKy6Q,WAAaxrQ,KAAKmiB,MAAMpxB,KAAKk/Q,cAAczrJ,KAGlDzzH,KAAK8lR,SAASW,gBAAgB+B,GAEzBA,EAASpK,SACZoK,EAASpK,OAAS,IAGpBp+Q,KAAKo+Q,OAASp+Q,KAAKk/Q,cAAcd,OACjCp+Q,KAAKslR,UAAYtlR,KAAKk/Q,cAAcuJ,GACpCzoR,KAAKulR,UAAYvlR,KAAKk/Q,cAAcuJ,GAAK,IACzCzoR,KAAK8lR,SAAS4C,wBAAwBF,EAASpK,QAC/Cp+Q,KAAKgkR,QAAUJ,aAAa4E,EAASxE,SAAW,IAChDhkR,KAAKunR,QAAQ,gBACbvnR,KAAKuoR,gBACLvoR,KAAKooR,eACLpoR,KAAK2oR,oBACL3oR,KAAK4oR,qBAED5oR,KAAK2lR,UACP3lR,KAAKwmR,gBAAgBlnJ,QAEvB,MAAOh5H,GACPtG,KAAK6oR,mBAAmBviR,KAI5B6+Q,cAAcjlR,UAAU0oR,mBAAqB,WACtC5oR,KAAK8lR,WAIN9lR,KAAK8lR,SAASmB,WAAWa,YAAY1C,SACvCplR,KAAKsoR,cAEL5/O,WAAW1oC,KAAK4oR,mBAAmBvlO,KAAKrjD,MAAO,MAInDmlR,cAAcjlR,UAAUooR,YAAc,WACpC,IAAKtoR,KAAKolR,UAAYplR,KAAK8lR,SAASmB,WAAWa,YAAY1C,WAAaplR,KAAKumR,eAAenD,gBAAiD,WAA/BpjR,KAAK8lR,SAASgD,eAA8B9oR,KAAKumR,eAAelD,iBAAkB,CAC9LrjR,KAAKolR,UAAW,EAChB,IAAIjN,EAAoB0D,uBAEpB1D,GACFA,EAAkB8P,gBAAgBjoR,MAGpCA,KAAK8lR,SAASiD,YACdrgP,WAAW,WACT1oC,KAAKunR,QAAQ,cACblkO,KAAKrjD,MAAO,GACdA,KAAKgpR,YAEDhpR,KAAK4lR,UACP5lR,KAAK+2Q,SAKXoO,cAAcjlR,UAAU+oR,OAAS,WAC/BjpR,KAAK8lR,SAASoD,uBAGhB/D,cAAcjlR,UAAUipR,YAAc,SAAU3T,GAC9Cx1Q,KAAKkmR,oBAAsB1Q,GAG7B2P,cAAcjlR,UAAU8oR,UAAY,WAClChpR,KAAK6kR,aAAe7kR,KAAKkmR,kBAAoBlmR,KAAKqlR,kBAAoBrlR,KAAKqlR,gBAEvErlR,KAAKgmR,gBAAkBhmR,KAAK06Q,aAAe16Q,KAAK6kR,aAAe7kR,KAAKgmR,gBACtEhmR,KAAK6kR,aAAe7kR,KAAKgmR,eAG3BhmR,KAAKunR,QAAQ,cACbvnR,KAAKopR,cACLppR,KAAKunR,QAAQ,eAGfpC,cAAcjlR,UAAUkpR,YAAc,WACpC,IAAsB,IAAlBppR,KAAKolR,UAAuBplR,KAAK8lR,SAIrC,IACE9lR,KAAK8lR,SAASsD,YAAYppR,KAAK6kR,aAAe7kR,KAAKy6Q,YACnD,MAAOn0Q,GACPtG,KAAKqpR,wBAAwB/iR,KAIjC6+Q,cAAcjlR,UAAU62Q,KAAO,SAAU1jQ,GACnCA,GAAQrT,KAAKqT,OAASA,IAIJ,IAAlBrT,KAAK2lR,WACP3lR,KAAK2lR,UAAW,EAChB3lR,KAAKunR,QAAQ,UACbvnR,KAAKwmR,gBAAgBjnJ,SAEjBv/H,KAAKomR,QACPpmR,KAAKomR,OAAQ,EACbpmR,KAAKunR,QAAQ,cAKnBpC,cAAcjlR,UAAUo/H,MAAQ,SAAUjsH,GACpCA,GAAQrT,KAAKqT,OAASA,IAIJ,IAAlBrT,KAAK2lR,WACP3lR,KAAK2lR,UAAW,EAChB3lR,KAAKunR,QAAQ,SACbvnR,KAAKomR,OAAQ,EACbpmR,KAAKunR,QAAQ,SACbvnR,KAAKwmR,gBAAgBlnJ,UAIzB6lJ,cAAcjlR,UAAUopR,YAAc,SAAUj2Q,GAC1CA,GAAQrT,KAAKqT,OAASA,KAIJ,IAAlBrT,KAAK2lR,SACP3lR,KAAK+2Q,OAEL/2Q,KAAKs/H,UAIT6lJ,cAAcjlR,UAAU2kH,KAAO,SAAUxxG,GACnCA,GAAQrT,KAAKqT,OAASA,IAI1BrT,KAAKs/H,QACLt/H,KAAK0lR,UAAY,EACjB1lR,KAAKqmR,gBAAiB,EACtBrmR,KAAKupR,wBAAwB,KAG/BpE,cAAcjlR,UAAUspR,cAAgB,SAAUC,GAGhD,IAFA,IAAIC,EAEKxoR,EAAI,EAAGA,EAAIlB,KAAKgkR,QAAQ3iR,OAAQH,GAAK,EAG5C,GAFAwoR,EAAS1pR,KAAKgkR,QAAQ9iR,GAElBwoR,EAAOniQ,SAAWmiQ,EAAOniQ,QAAQlU,OAASo2Q,EAC5C,OAAOC,EAIX,OAAO,MAGTvE,cAAcjlR,UAAUypR,YAAc,SAAUrlR,EAAOslR,EAASv2Q,GAC9D,IAAIA,GAAQrT,KAAKqT,OAASA,EAA1B,CAIA,IAAIw2Q,EAAWzhP,OAAO9jC,GAEtB,GAAIu4E,MAAMgtM,GAAW,CACnB,IAAIH,EAAS1pR,KAAKwpR,cAAcllR,GAE5BolR,GACF1pR,KAAK2pR,YAAYD,EAAOtkO,MAAM,QAEvBwkO,EACT5pR,KAAKupR,wBAAwBjlR,GAE7BtE,KAAKupR,wBAAwBjlR,EAAQtE,KAAK8pR,eAG5C9pR,KAAKs/H,UAGP6lJ,cAAcjlR,UAAU6pR,YAAc,SAAUzlR,EAAOslR,EAASv2Q,GAC9D,IAAIA,GAAQrT,KAAKqT,OAASA,EAA1B,CAIA,IAAIw2Q,EAAWzhP,OAAO9jC,GAEtB,GAAIu4E,MAAMgtM,GAAW,CACnB,IAAIH,EAAS1pR,KAAKwpR,cAAcllR,GAE5BolR,IACGA,EAAOp7M,SAGVtuE,KAAKgqR,aAAa,CAACN,EAAOtkO,KAAMskO,EAAOtkO,KAAOskO,EAAOp7M,WAAW,GAFhEtuE,KAAK2pR,YAAYD,EAAOtkO,MAAM,SAMlCplD,KAAK2pR,YAAYE,EAAUD,EAASv2Q,GAGtCrT,KAAK+2Q,SAGPoO,cAAcjlR,UAAU+pR,YAAc,SAAU3lR,GAC9C,IAAsB,IAAlBtE,KAAK2lR,WAAuC,IAAlB3lR,KAAKolR,SAAnC,CAIA,IAAI8E,EAAYlqR,KAAKqlR,gBAAkB/gR,EAAQtE,KAAK8pR,cAChDK,GAAc,EAGdD,GAAalqR,KAAK06Q,YAAc,GAAK16Q,KAAK8pR,cAAgB,EACvD9pR,KAAK6lR,MAAQ7lR,KAAK0lR,YAAc1lR,KAAK6lR,KAK/BqE,GAAalqR,KAAK06Q,aAC3B16Q,KAAK0lR,WAAa,EAEb1lR,KAAKoqR,cAAcF,EAAYlqR,KAAK06Q,eACvC16Q,KAAKupR,wBAAwBW,EAAYlqR,KAAK06Q,aAC9C16Q,KAAKqmR,gBAAiB,EACtBrmR,KAAKunR,QAAQ,kBAGfvnR,KAAKupR,wBAAwBW,GAbxBlqR,KAAKoqR,cAAcF,EAAYlqR,KAAK06Q,YAAcwP,EAAYlqR,KAAK06Q,YAAc,KACpFyP,GAAc,EACdD,EAAYlqR,KAAK06Q,YAAc,GAa1BwP,EAAY,EAChBlqR,KAAKoqR,cAAcF,EAAYlqR,KAAK06Q,gBACnC16Q,KAAK6lR,MAAU7lR,KAAK0lR,aAAe,IAAmB,IAAd1lR,KAAK6lR,MAU/CsE,GAAc,EACdD,EAAY,IATZlqR,KAAKupR,wBAAwBvpR,KAAK06Q,YAAcwP,EAAYlqR,KAAK06Q,aAE5D16Q,KAAKqmR,eAGRrmR,KAAKunR,QAAQ,gBAFbvnR,KAAKqmR,gBAAiB,IAU5BrmR,KAAKupR,wBAAwBW,GAG3BC,IACFnqR,KAAKupR,wBAAwBW,GAC7BlqR,KAAKs/H,QACLt/H,KAAKunR,QAAQ,eAIjBpC,cAAcjlR,UAAUmqR,cAAgB,SAAUvuQ,EAAKosB,GACrDloC,KAAK0lR,UAAY,EAEb5pQ,EAAI,GAAKA,EAAI,IACX9b,KAAK8pR,cAAgB,IACnB9pR,KAAKwlR,UAAY,EACnBxlR,KAAKsqR,UAAUtqR,KAAKwlR,WAEpBxlR,KAAKuqR,cAAc,IAIvBvqR,KAAK06Q,YAAc5+P,EAAI,GAAKA,EAAI,GAChC9b,KAAKgmR,cAAgBhmR,KAAK06Q,YAC1B16Q,KAAKy6Q,WAAa3+P,EAAI,GACtB9b,KAAKupR,wBAAwBvpR,KAAK06Q,YAAc,KAAQxyO,IAC/CpsB,EAAI,GAAKA,EAAI,KAClB9b,KAAK8pR,cAAgB,IACnB9pR,KAAKwlR,UAAY,EACnBxlR,KAAKsqR,UAAUtqR,KAAKwlR,WAEpBxlR,KAAKuqR,aAAa,IAItBvqR,KAAK06Q,YAAc5+P,EAAI,GAAKA,EAAI,GAChC9b,KAAKgmR,cAAgBhmR,KAAK06Q,YAC1B16Q,KAAKy6Q,WAAa3+P,EAAI,GACtB9b,KAAKupR,wBAAwB,KAAQrhP,IAGvCloC,KAAKunR,QAAQ,iBAGfpC,cAAcjlR,UAAUsqR,WAAa,SAAUjtJ,EAAMn2C,GACnD,IAAIqjM,GAAgB,EAEhBzqR,KAAK2lR,WACH3lR,KAAKqlR,gBAAkBrlR,KAAKy6Q,WAAal9I,EAC3CktJ,EAAeltJ,EACNv9H,KAAKqlR,gBAAkBrlR,KAAKy6Q,WAAarzL,IAClDqjM,EAAerjM,EAAMm2C,IAIzBv9H,KAAKy6Q,WAAal9I,EAClBv9H,KAAK06Q,YAActzL,EAAMm2C,EACzBv9H,KAAKgmR,cAAgBhmR,KAAK06Q,aAEJ,IAAlB+P,GACFzqR,KAAK2pR,YAAYc,GAAc,IAInCtF,cAAcjlR,UAAU8pR,aAAe,SAAUluQ,EAAK4uQ,GAKpD,GAJIA,IACF1qR,KAAKmmR,SAAS9kR,OAAS,GAGC,WAAtB6jR,UAAUppQ,EAAI,IAAkB,CAClC,IAAI5a,EACA2/F,EAAM/kF,EAAIza,OAEd,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKmmR,SAASngR,KAAK8V,EAAI5a,SAGzBlB,KAAKmmR,SAASngR,KAAK8V,GAGjB9b,KAAKmmR,SAAS9kR,QAAUqpR,GAC1B1qR,KAAKqqR,cAAcrqR,KAAKmmR,SAASnoO,QAAS,GAGxCh+C,KAAK2lR,UACP3lR,KAAK+2Q,QAIToO,cAAcjlR,UAAUyqR,cAAgB,SAAUD,GAChD1qR,KAAKmmR,SAAS9kR,OAAS,EACvBrB,KAAKmmR,SAASngR,KAAK,CAAChG,KAAKk/Q,cAAczrJ,GAAIzzH,KAAKk/Q,cAAcr5Q,KAE1D6kR,GACF1qR,KAAKoqR,cAAc,IAIvBjF,cAAcjlR,UAAUkqR,cAAgB,SAAUliP,GAChD,QAAIloC,KAAKmmR,SAAS9kR,SAChBrB,KAAKqqR,cAAcrqR,KAAKmmR,SAASnoO,QAAS9V,IACnC,IAMXi9O,cAAcjlR,UAAUijR,QAAU,SAAU9vQ,GACtCA,GAAQrT,KAAKqT,OAASA,IAASrT,KAAK8lR,WAIxC9lR,KAAK8lR,SAAS3C,UACdnjR,KAAKumR,eAAepD,UACpBnjR,KAAKunR,QAAQ,WACbvnR,KAAK2jR,KAAO,KACZ3jR,KAAK4qR,aAAe,KACpB5qR,KAAK6qR,eAAiB,KACtB7qR,KAAKm3G,WAAa,KAClBn3G,KAAK8qR,eAAiB,KACtB9qR,KAAK+qR,UAAY,KACjB/qR,KAAK8lR,SAAW,KAChB9lR,KAAK8lR,SAAW,KAChB9lR,KAAKumR,eAAiB,KACtBvmR,KAAKsmR,iBAAmB,OAG1BnB,cAAcjlR,UAAUqpR,wBAA0B,SAAUjlR,GAC1DtE,KAAKqlR,gBAAkB/gR,EACvBtE,KAAKgpR,aAGP7D,cAAcjlR,UAAUoqR,SAAW,SAAUprP,GAC3Cl/B,KAAKwlR,UAAYtmP,EACjBl/B,KAAK2oR,qBAGPxD,cAAcjlR,UAAUqqR,aAAe,SAAUrrP,GAC/Cl/B,KAAKylR,cAAgBvmP,EAAM,GAAK,EAAI,EACpCl/B,KAAK2oR,qBAGPxD,cAAcjlR,UAAUi3Q,UAAY,SAAUj4O,EAAK7rB,GAC7CA,GAAQrT,KAAKqT,OAASA,GAI1BrT,KAAKwmR,gBAAgBrP,UAAUj4O,IAGjCimP,cAAcjlR,UAAUs3Q,UAAY,WAClC,OAAOx3Q,KAAKwmR,gBAAgBhP,aAG9B2N,cAAcjlR,UAAUo3Q,KAAO,SAAUjkQ,GACnCA,GAAQrT,KAAKqT,OAASA,GAI1BrT,KAAKwmR,gBAAgBlP,QAGvB6N,cAAcjlR,UAAUq3Q,OAAS,SAAUlkQ,GACrCA,GAAQrT,KAAKqT,OAASA,GAI1BrT,KAAKwmR,gBAAgBjP,UAGvB4N,cAAcjlR,UAAUyoR,kBAAoB,WAC1C3oR,KAAK8pR,cAAgB9pR,KAAKulR,UAAYvlR,KAAKwlR,UAAYxlR,KAAKylR,cAC5DzlR,KAAKwmR,gBAAgB/P,QAAQz2Q,KAAKwlR,UAAYxlR,KAAKylR,gBAGrDN,cAAcjlR,UAAU8qR,QAAU,WAChC,OAAOhrR,KAAKotF,MAGd+3L,cAAcjlR,UAAUyhR,cAAgB,SAAUC,GAChD,IAAIx0L,EAAO,GAEX,GAAIw0L,EAAUl9Q,EACZ0oF,EAAOw0L,EAAU/hR,OACZ,GAAIG,KAAK6hR,WAAY,CAC1B,IAAIE,EAAYH,EAAU/hR,GAEY,IAAlCkiR,EAAU7mQ,QAAQ,aACpB6mQ,EAAYA,EAAU3qQ,MAAM,KAAK,IAGnCg2E,EAAOptF,KAAK6hR,WAAaE,OAEzB30L,EAAOptF,KAAKotF,KACZA,GAAQw0L,EAAU3yN,EAAI2yN,EAAU3yN,EAAI,GACpCm+B,GAAQw0L,EAAU/hR,EAGpB,OAAOutF,GAGT+3L,cAAcjlR,UAAU+qR,aAAe,SAAUhlP,GAC/C,IAAI/kC,EAAI,EACJ2/F,EAAM7gG,KAAKo+Q,OAAO/8Q,OAEtB,MAAOH,EAAI2/F,EAAK,CACd,GAAI56D,IAAOjmC,KAAKo+Q,OAAOl9Q,GAAG+kC,GACxB,OAAOjmC,KAAKo+Q,OAAOl9Q,GAGrBA,GAAK,EAGP,OAAO,MAGTikR,cAAcjlR,UAAUgrR,KAAO,WAC7BlrR,KAAK8lR,SAASoF,QAGhB/F,cAAcjlR,UAAUirR,KAAO,WAC7BnrR,KAAK8lR,SAASqF,QAGhBhG,cAAcjlR,UAAUkrR,YAAc,SAAUxB,GAC9C,OAAOA,EAAU5pR,KAAK06Q,YAAc16Q,KAAK06Q,YAAc16Q,KAAKslR,WAG9DH,cAAcjlR,UAAUmrR,mBAAqB,SAAUj+L,EAAM4xL,EAAc1sO,GACzE,IACE,IAAIkoH,EAAUx6J,KAAK8lR,SAASwF,iBAAiBl+L,GAC7CotE,EAAQ6wH,mBAAmBrM,EAAc1sO,GACzC,MAAOhsC,MAIX6+Q,cAAcjlR,UAAUqnR,QAAU,SAAUl0Q,GAC1C,GAAIrT,KAAK2jR,MAAQ3jR,KAAK2jR,KAAKtwQ,GACzB,OAAQA,GACN,IAAK,aACHrT,KAAK0jR,aAAarwQ,EAAM,IAAI2mQ,kBAAkB3mQ,EAAMrT,KAAK6kR,aAAc7kR,KAAK06Q,YAAa16Q,KAAK8pR,gBAC9F,MAEF,IAAK,aACH9pR,KAAK4mR,gBAAgB19O,YAAclpC,KAAK6kR,aACxC7kR,KAAK4mR,gBAAgB3M,UAAYj6Q,KAAK06Q,YACtC16Q,KAAK4mR,gBAAgBzM,UAAYn6Q,KAAK8pR,cACtC9pR,KAAK0jR,aAAarwQ,EAAMrT,KAAK4mR,iBAC7B,MAEF,IAAK,eACH5mR,KAAK0jR,aAAarwQ,EAAM,IAAIgnQ,oBAAoBhnQ,EAAMrT,KAAK6lR,KAAM7lR,KAAK0lR,UAAW1lR,KAAKulR,YACtF,MAEF,IAAK,WACHvlR,KAAK0jR,aAAarwQ,EAAM,IAAI+mQ,gBAAgB/mQ,EAAMrT,KAAKulR,YACvD,MAEF,IAAK,eACHvlR,KAAK0jR,aAAarwQ,EAAM,IAAImnQ,oBAAoBnnQ,EAAMrT,KAAKy6Q,WAAYz6Q,KAAK06Q,cAC5E,MAEF,IAAK,UACH16Q,KAAK0jR,aAAarwQ,EAAM,IAAIsnQ,eAAetnQ,EAAMrT,OACjD,MAEF,QACEA,KAAK0jR,aAAarwQ,GAIX,eAATA,GAAyBrT,KAAK4qR,cAChC5qR,KAAK4qR,aAAajqR,KAAKX,KAAM,IAAIg6Q,kBAAkB3mQ,EAAMrT,KAAK6kR,aAAc7kR,KAAK06Q,YAAa16Q,KAAKulR,YAGxF,iBAATlyQ,GAA2BrT,KAAK6qR,gBAClC7qR,KAAK6qR,eAAelqR,KAAKX,KAAM,IAAIq6Q,oBAAoBhnQ,EAAMrT,KAAK6lR,KAAM7lR,KAAK0lR,UAAW1lR,KAAKulR,YAGlF,aAATlyQ,GAAuBrT,KAAKm3G,YAC9Bn3G,KAAKm3G,WAAWx2G,KAAKX,KAAM,IAAIo6Q,gBAAgB/mQ,EAAMrT,KAAKulR,YAG/C,iBAATlyQ,GAA2BrT,KAAK8qR,gBAClC9qR,KAAK8qR,eAAenqR,KAAKX,KAAM,IAAIw6Q,oBAAoBnnQ,EAAMrT,KAAKy6Q,WAAYz6Q,KAAK06Q,cAGxE,YAATrnQ,GAAsBrT,KAAK+qR,WAC7B/qR,KAAK+qR,UAAUpqR,KAAKX,KAAM,IAAI26Q,eAAetnQ,EAAMrT,QAIvDmlR,cAAcjlR,UAAUmpR,wBAA0B,SAAUxO,GAC1D,IAAIv0Q,EAAQ,IAAIs0Q,wBAAwBC,EAAa76Q,KAAK6kR,cAC1D7kR,KAAK0jR,aAAa,QAASp9Q,GAEvBtG,KAAK2nO,SACP3nO,KAAK2nO,QAAQhnO,KAAKX,KAAMsG,IAI5B6+Q,cAAcjlR,UAAU2oR,mBAAqB,SAAUhO,GACrD,IAAIv0Q,EAAQ,IAAIw0Q,mBAAmBD,EAAa76Q,KAAK6kR,cACrD7kR,KAAK0jR,aAAa,QAASp9Q,GAEvBtG,KAAK2nO,SACP3nO,KAAK2nO,QAAQhnO,KAAKX,KAAMsG,IAI5B,IAAIilR,iBAAmB,WACrB,IAAIrL,EAAW,GACXsL,EAAuB,GACvBC,EAAW,EACX5qL,EAAM,EACN6qL,EAAuB,EACvBC,GAAW,EACXC,GAAY,EAEhB,SAASC,EAAcC,GACrB,IAAI5qR,EAAI,EACJ6qR,EAAWD,EAAGnmQ,OAElB,MAAOzkB,EAAI2/F,EACL2qL,EAAqBtqR,GAAGs/Q,YAAcuL,IACxCP,EAAqBh7K,OAAOtvG,EAAG,GAC/BA,GAAK,EACL2/F,GAAO,EAEFkrL,EAASpG,UACZqG,KAIJ9qR,GAAK,EAIT,SAAS+qR,EAAkBzxH,EAAS0kH,GAClC,IAAK1kH,EACH,OAAO,KAGT,IAAIt5J,EAAI,EAER,MAAOA,EAAI2/F,EAAK,CACd,GAAI2qL,EAAqBtqR,GAAGgrR,OAAS1xH,GAA4C,OAAjCgxH,EAAqBtqR,GAAGgrR,KACtE,OAAOV,EAAqBtqR,GAAGs/Q,UAGjCt/Q,GAAK,EAGP,IAAI6qR,EAAW,IAAI5G,cAGnB,OAFAmC,EAAeyE,EAAUvxH,GACzBuxH,EAAShqB,QAAQvnG,EAAS0kH,GACnB6M,EAGT,SAASI,IACP,IAAIjrR,EACAkrR,EAAWZ,EAAqBnqR,OAChCgrR,EAAa,GAEjB,IAAKnrR,EAAI,EAAGA,EAAIkrR,EAAUlrR,GAAK,EAC7BmrR,EAAWrmR,KAAKwlR,EAAqBtqR,GAAGs/Q,WAG1C,OAAO6L,EAGT,SAASC,IACPZ,GAAwB,EACxBa,IAGF,SAASP,IACPN,GAAwB,EAG1B,SAASpE,EAAeyE,EAAUvxH,GAChCuxH,EAASrmQ,iBAAiB,UAAWmmQ,GACrCE,EAASrmQ,iBAAiB,UAAW4mQ,GACrCP,EAASrmQ,iBAAiB,QAASsmQ,GACnCR,EAAqBxlR,KAAK,CACxBkmR,KAAM1xH,EACNgmH,UAAWuL,IAEblrL,GAAO,EAGT,SAAS6/K,EAAcnlQ,GACrB,IAAIwwQ,EAAW,IAAI5G,cAGnB,OAFAmC,EAAeyE,EAAU,MACzBA,EAASlF,UAAUtrQ,GACZwwQ,EAGT,SAASzB,EAASprP,EAAKshP,GACrB,IAAIt/Q,EAEJ,IAAKA,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBsqR,EAAqBtqR,GAAGs/Q,UAAU8J,SAASprP,EAAKshP,GAIpD,SAAS+J,EAAarrP,EAAKshP,GACzB,IAAIt/Q,EAEJ,IAAKA,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBsqR,EAAqBtqR,GAAGs/Q,UAAU+J,aAAarrP,EAAKshP,GAIxD,SAASzJ,EAAKyJ,GACZ,IAAIt/Q,EAEJ,IAAKA,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBsqR,EAAqBtqR,GAAGs/Q,UAAUzJ,KAAKyJ,GAI3C,SAASjhJ,EAAOitJ,GACd,IACItrR,EADAurR,EAAcD,EAAUf,EAG5B,IAAKvqR,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBsqR,EAAqBtqR,GAAGs/Q,UAAUyJ,YAAYwC,GAGhDhB,EAAWe,EAEPd,IAAyBE,EAC3BznQ,OAAOuoQ,sBAAsBntJ,GAE7BosJ,GAAW,EAIf,SAASpuH,EAAMivH,GACbf,EAAWe,EACXroQ,OAAOuoQ,sBAAsBntJ,GAG/B,SAASD,EAAMkhJ,GACb,IAAIt/Q,EAEJ,IAAKA,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBsqR,EAAqBtqR,GAAGs/Q,UAAUlhJ,MAAMkhJ,GAI5C,SAASmJ,EAAYrlR,EAAOslR,EAASpJ,GACnC,IAAIt/Q,EAEJ,IAAKA,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBsqR,EAAqBtqR,GAAGs/Q,UAAUmJ,YAAYrlR,EAAOslR,EAASpJ,GAIlE,SAAS37J,EAAK27J,GACZ,IAAIt/Q,EAEJ,IAAKA,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBsqR,EAAqBtqR,GAAGs/Q,UAAU37J,KAAK27J,GAI3C,SAAS8I,EAAY9I,GACnB,IAAIt/Q,EAEJ,IAAKA,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBsqR,EAAqBtqR,GAAGs/Q,UAAU8I,YAAY9I,GAIlD,SAAS2C,EAAQ3C,GACf,IAAIt/Q,EAEJ,IAAKA,EAAI2/F,EAAM,EAAG3/F,GAAK,EAAGA,GAAK,EAC7BsqR,EAAqBtqR,GAAGs/Q,UAAU2C,QAAQ3C,GAI9C,SAASmM,EAAiBzN,EAAer4D,EAAYi/D,GACnD,IACI5kR,EADA0rR,EAAe,GAAGpmR,OAAO,GAAG+lC,MAAM5rC,KAAKg1C,SAASk3O,uBAAuB,WAAY,GAAGtgP,MAAM5rC,KAAKg1C,SAASk3O,uBAAuB,eAEjIT,EAAWQ,EAAavrR,OAE5B,IAAKH,EAAI,EAAGA,EAAIkrR,EAAUlrR,GAAK,EACzB4kR,GACF8G,EAAa1rR,GAAG0pE,aAAa,eAAgBk7M,GAG/CmG,EAAkBW,EAAa1rR,GAAIg+Q,GAGrC,GAAIr4D,GAA2B,IAAbulE,EAAgB,CAC3BtG,IACHA,EAAW,OAGb,IAAI9gR,EAAO2wC,SAASk1B,qBAAqB,QAAQ,GACjD7lE,EAAK0nN,UAAY,GACjB,IAAIogE,EAAMlX,UAAU,OACpBkX,EAAItiN,MAAMjL,MAAQ,OAClButN,EAAItiN,MAAM/K,OAAS,OACnBqtN,EAAIliN,aAAa,eAAgBk7M,GACjC9gR,EAAK8lE,YAAYgiN,GACjBb,EAAkBa,EAAK5N,IAI3B,SAAS+J,IACP,IAAI/nR,EAEJ,IAAKA,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBsqR,EAAqBtqR,GAAGs/Q,UAAUyI,SAItC,SAASsD,KACFX,GAAaF,GACZC,IACFxnQ,OAAOuoQ,sBAAsBnvH,GAC7BouH,GAAW,GAKjB,SAASxpG,IACPypG,GAAY,EAGd,SAASmB,IACPnB,GAAY,EACZW,IAGF,SAASpV,EAAUj4O,EAAKshP,GACtB,IAAIt/Q,EAEJ,IAAKA,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBsqR,EAAqBtqR,GAAGs/Q,UAAUrJ,UAAUj4O,EAAKshP,GAIrD,SAASlJ,EAAKkJ,GACZ,IAAIt/Q,EAEJ,IAAKA,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBsqR,EAAqBtqR,GAAGs/Q,UAAUlJ,KAAKkJ,GAI3C,SAASjJ,EAAOiJ,GACd,IAAIt/Q,EAEJ,IAAKA,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBsqR,EAAqBtqR,GAAGs/Q,UAAUjJ,OAAOiJ,GAuB7C,OAnBAN,EAAS+L,kBAAoBA,EAC7B/L,EAASQ,cAAgBA,EACzBR,EAASoK,SAAWA,EACpBpK,EAASqK,aAAeA,EACxBrK,EAASnJ,KAAOA,EAChBmJ,EAAS5gJ,MAAQA,EACjB4gJ,EAASr7J,KAAOA,EAChBq7J,EAASoJ,YAAcA,EACvBpJ,EAASyM,iBAAmBA,EAC5BzM,EAAS+I,OAASA,EAElB/I,EAASyJ,YAAcA,EACvBzJ,EAASiD,QAAUA,EACnBjD,EAAS/9F,OAASA,EAClB+9F,EAAS6M,SAAWA,EACpB7M,EAAS/I,UAAYA,EACrB+I,EAAS5I,KAAOA,EAChB4I,EAAS3I,OAASA,EAClB2I,EAASiM,wBAA0BA,EAC5BjM,EAhRc,GAoRnB8M,cAAgB,WAWlB,IAAI1K,EAAK,GACTA,EAAG2K,gBAAkBA,EACrB,IAAIC,EAAU,GAEd,SAASD,EAAgBrmR,EAAGhH,EAAGq0E,EAAGt0E,EAAG+kR,GACnC,IAAI/pQ,EAAM+pQ,IAAO,OAAS99Q,EAAI,IAAMhH,EAAI,IAAMq0E,EAAI,IAAMt0E,GAAGuR,QAAQ,MAAO,KAE1E,GAAIg8Q,EAAQvyQ,GACV,OAAOuyQ,EAAQvyQ,GAGjB,IAAIwyQ,EAAY,IAAIC,EAAa,CAACxmR,EAAGhH,EAAGq0E,EAAGt0E,IAE3C,OADAutR,EAAQvyQ,GAAOwyQ,EACRA,EAIT,IAAIE,EAAoB,EACpBC,EAAmB,KACnBC,EAAwB,KACxBC,EAA6B,GAC7BC,EAAmB,GACnBC,EAAkB,GAAOD,EAAmB,GAC5CE,EAAgD,oBAAjB9V,aAEnC,SAAS9nG,EAAE69G,EAAKC,GACd,OAAO,EAAM,EAAMA,EAAM,EAAMD,EAGjC,SAAS59G,EAAE49G,EAAKC,GACd,OAAO,EAAMA,EAAM,EAAMD,EAG3B,SAAS9yH,EAAE8yH,GACT,OAAO,EAAMA,EAIf,SAASE,EAAWC,EAAIH,EAAKC,GAC3B,QAAS99G,EAAE69G,EAAKC,GAAOE,EAAK/9G,EAAE49G,EAAKC,IAAQE,EAAKjzH,EAAE8yH,IAAQG,EAI5D,SAASC,EAASD,EAAIH,EAAKC,GACzB,OAAO,EAAM99G,EAAE69G,EAAKC,GAAOE,EAAKA,EAAK,EAAM/9G,EAAE49G,EAAKC,GAAOE,EAAKjzH,EAAE8yH,GAGlE,SAASK,EAAgBC,EAAIC,EAAIC,EAAIC,EAAKC,GACxC,IAAIC,EACAC,EACAttR,EAAI,EAER,GACEstR,EAAWL,GAAMC,EAAKD,GAAM,EAC5BI,EAAWT,EAAWU,EAAUH,EAAKC,GAAOJ,EAExCK,EAAW,EACbH,EAAKI,EAELL,EAAKK,QAEAv/Q,KAAKgyF,IAAIstL,GAAYhB,KAA2BrsR,EAAIssR,GAE7D,OAAOgB,EAGT,SAASC,EAAqBP,EAAIQ,EAASL,EAAKC,GAC9C,IAAK,IAAIptR,EAAI,EAAGA,EAAImsR,IAAqBnsR,EAAG,CAC1C,IAAIytR,EAAeX,EAASU,EAASL,EAAKC,GAC1C,GAAqB,IAAjBK,EAAsB,OAAOD,EACjC,IAAIH,EAAWT,EAAWY,EAASL,EAAKC,GAAOJ,EAC/CQ,GAAWH,EAAWI,EAGxB,OAAOD,EAOT,SAAStB,EAAawB,GACpB5uR,KAAK6uR,GAAKD,EACV5uR,KAAK8uR,eAAiBnB,EAAwB,IAAI9V,aAAa4V,GAAoB,IAAI/tR,MAAM+tR,GAC7FztR,KAAK+uR,cAAe,EACpB/uR,KAAK0B,IAAM1B,KAAK0B,IAAI2hD,KAAKrjD,MAsE3B,OAnEAotR,EAAaltR,UAAY,CACvBwB,IAAK,SAAa4rK,GAChB,IAAI+gH,EAAMruR,KAAK6uR,GAAG,GACdG,EAAMhvR,KAAK6uR,GAAG,GACdP,EAAMtuR,KAAK6uR,GAAG,GACdI,EAAMjvR,KAAK6uR,GAAG,GAElB,OADK7uR,KAAK+uR,cAAc/uR,KAAKkvR,cACzBb,IAAQW,GAAOV,IAAQW,EAAY3hH,EAG7B,IAANA,EAAgB,EACV,IAANA,EAAgB,EACbwgH,EAAW9tR,KAAKmvR,UAAU7hH,GAAI0hH,EAAKC,IAG5CC,YAAa,WACX,IAAIb,EAAMruR,KAAK6uR,GAAG,GACdG,EAAMhvR,KAAK6uR,GAAG,GACdP,EAAMtuR,KAAK6uR,GAAG,GACdI,EAAMjvR,KAAK6uR,GAAG,GAClB7uR,KAAK+uR,cAAe,EAEhBV,IAAQW,GAAOV,IAAQW,GACzBjvR,KAAKovR,qBAGTA,kBAAmB,WAIjB,IAHA,IAAIf,EAAMruR,KAAK6uR,GAAG,GACdP,EAAMtuR,KAAK6uR,GAAG,GAET3tR,EAAI,EAAGA,EAAIusR,IAAoBvsR,EACtClB,KAAK8uR,eAAe5tR,GAAK4sR,EAAW5sR,EAAIwsR,EAAiBW,EAAKC,IAOlEa,UAAW,SAAmBjB,GAQ5B,IAPA,IAAIG,EAAMruR,KAAK6uR,GAAG,GACdP,EAAMtuR,KAAK6uR,GAAG,GACdQ,EAAgBrvR,KAAK8uR,eACrBQ,EAAgB,EAChBC,EAAgB,EAChBC,EAAa/B,EAAmB,EAE7B8B,IAAkBC,GAAcH,EAAcE,IAAkBrB,IAAMqB,EAC3ED,GAAiB5B,IAGjB6B,EAEF,IAAIE,GAAQvB,EAAKmB,EAAcE,KAAmBF,EAAcE,EAAgB,GAAKF,EAAcE,IAC/FG,EAAYJ,EAAgBG,EAAO/B,EACnCiC,EAAe3B,EAAS0B,EAAWrB,EAAKC,GAE5C,OAAIqB,GAAgBrC,EACXmB,EAAqBP,EAAIwB,EAAWrB,EAAKC,GAG7B,IAAjBqB,EACKD,EAGFzB,EAAgBC,EAAIoB,EAAeA,EAAgB5B,EAAiBW,EAAKC,KAG7EhM,EAtKW,GAyKhBsN,QAAU,WACZ,SAASC,EAAQ/zQ,GACf,OAAOA,EAAItV,OAAOwxQ,iBAAiBl8P,EAAIza,SAGzC,MAAO,CACL,OAAUwuR,GANA,GAUVC,YAAc,WAChB,OAAO,SAAUC,EAAe/8D,EAASg9D,GACvC,IAAIC,EAAU,EACVC,EAAaH,EACbI,EAAOnY,iBAAiBkY,GACxB5N,EAAK,CACP8N,WAAYA,EACZC,QAASA,GAGX,SAASD,IACP,IAAI51H,EASJ,OAPIy1H,GACFA,GAAW,EACXz1H,EAAU21H,EAAKF,IAEfz1H,EAAUw4D,IAGLx4D,EAGT,SAAS61H,EAAQ71H,GACXy1H,IAAYC,IACdC,EAAOP,QAAQ,UAAUO,GACzBD,GAAc,GAGZF,GACFA,EAASx1H,GAGX21H,EAAKF,GAAWz1H,EAChBy1H,GAAW,EAGb,OAAO3N,GArCO,GAyCdgO,iBAAmB,WACrB,SAASnwR,IACP,MAAO,CACLowR,YAAa,EACbC,SAAU9Y,iBAAiB,UAAWqE,2BACtC0U,QAAS/Y,iBAAiB,UAAWqE,4BAIzC,OAAO+T,YAAY,EAAG3vR,GATD,GAYnBuwR,mBAAqB,WACvB,SAASvwR,IACP,MAAO,CACLswR,QAAS,GACTE,YAAa,GAIjB,SAASN,EAAQ71H,GACf,IAAIt5J,EACA2/F,EAAM25D,EAAQi2H,QAAQpvR,OAE1B,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBovR,iBAAiBD,QAAQ71H,EAAQi2H,QAAQvvR,IAG3Cs5J,EAAQi2H,QAAQpvR,OAAS,EAG3B,OAAOyuR,YAAY,EAAG3vR,EAAQkwR,GAnBP,GAsBzB,SAASO,cACP,IAAIC,EAAO5hR,KAEX,SAAS6hR,EAAcC,EAAIC,EAAItvG,EAAIuvG,EAAIC,EAAIC,GACzC,IAAIC,EAAOL,EAAKE,EAAKD,EAAKE,EAAKxvG,EAAKyvG,EAAKD,EAAKD,EAAKE,EAAKJ,EAAKrvG,EAAKsvG,EAClE,OAAOI,GAAQ,MAASA,EAAO,KAGjC,SAASC,EAAcN,EAAIC,EAAIM,EAAI5vG,EAAIuvG,EAAIM,EAAIL,EAAIC,EAAIK,GACrD,GAAW,IAAPF,GAAmB,IAAPC,GAAmB,IAAPC,EAC1B,OAAOV,EAAcC,EAAIC,EAAItvG,EAAIuvG,EAAIC,EAAIC,GAG3C,IAGIM,EAHAC,EAAQb,EAAKpY,KAAKoY,EAAKzyJ,IAAIsjD,EAAKqvG,EAAI,GAAKF,EAAKzyJ,IAAI6yJ,EAAKD,EAAI,GAAKH,EAAKzyJ,IAAImzJ,EAAKD,EAAI,IAClFK,EAAQd,EAAKpY,KAAKoY,EAAKzyJ,IAAI8yJ,EAAKH,EAAI,GAAKF,EAAKzyJ,IAAI+yJ,EAAKH,EAAI,GAAKH,EAAKzyJ,IAAIozJ,EAAKF,EAAI,IAClFM,EAAQf,EAAKpY,KAAKoY,EAAKzyJ,IAAI8yJ,EAAKxvG,EAAI,GAAKmvG,EAAKzyJ,IAAI+yJ,EAAKF,EAAI,GAAKJ,EAAKzyJ,IAAIozJ,EAAKD,EAAI,IAetF,OAVIE,EAFAC,EAAQC,EACND,EAAQE,EACCF,EAAQC,EAAQC,EAEhBA,EAAQD,EAAQD,EAEpBE,EAAQD,EACNC,EAAQD,EAAQD,EAEhBC,EAAQD,EAAQE,EAGtBH,GAAY,MAAUA,EAAW,KAG1C,IAAII,EAAkB,WACpB,OAAO,SAAUC,EAAKC,EAAKC,EAAKC,GAC9B,IACItrR,EACAzF,EACA2/F,EACAqxL,EACAC,EAEAC,EAPAC,EAAgBtW,0BAMhBwU,EAAc,EAEd/nG,EAAQ,GACR8pG,EAAY,GACZC,EAAajC,iBAAiBF,aAGlC,IAFAvvL,EAAMmxL,EAAI3wR,OAELsF,EAAI,EAAGA,EAAI0rR,EAAe1rR,GAAK,EAAG,CAIrC,IAHAwrR,EAAOxrR,GAAK0rR,EAAgB,GAC5BD,EAAa,EAERlxR,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBgxR,EAAU3Z,MAAM,EAAI4Z,EAAM,GAAKL,EAAI5wR,GAAK,EAAIq3Q,MAAM,EAAI4Z,EAAM,GAAKA,EAAOH,EAAI9wR,GAAK,GAAK,EAAIixR,GAAQ5Z,MAAM4Z,EAAM,GAAKF,EAAI/wR,GAAKq3Q,MAAM4Z,EAAM,GAAKJ,EAAI7wR,GACjJsnL,EAAMtnL,GAAKgxR,EAEU,OAAjBI,EAAUpxR,KACZkxR,GAAc7Z,MAAM/vF,EAAMtnL,GAAKoxR,EAAUpxR,GAAI,IAG/CoxR,EAAUpxR,GAAKsnL,EAAMtnL,GAGnBkxR,IACFA,EAAa5Z,OAAO4Z,GACpB7B,GAAe6B,GAGjBG,EAAW/B,SAAS7pR,GAAKwrR,EACzBI,EAAW9B,QAAQ9pR,GAAK4pR,EAI1B,OADAgC,EAAWhC,YAAcA,EAClBgC,GAxCW,GA4CtB,SAASC,EAAkBC,GACzB,IAKIvxR,EALAwxR,EAAiBhC,mBAAmBN,aACpChwN,EAASqyN,EAAUx+M,EACnB0+M,EAAQF,EAAU7sR,EAClBgtR,EAAQH,EAAUvsR,EAClB2sR,EAAQJ,EAAUvxR,EAElB2/F,EAAM4xL,EAAUxC,QAChBQ,EAAUiC,EAAejC,QACzBE,EAAc,EAElB,IAAKzvR,EAAI,EAAGA,EAAI2/F,EAAM,EAAG3/F,GAAK,EAC5BuvR,EAAQvvR,GAAK2wR,EAAgBc,EAAMzxR,GAAIyxR,EAAMzxR,EAAI,GAAI0xR,EAAM1xR,GAAI2xR,EAAM3xR,EAAI,IACzEyvR,GAAeF,EAAQvvR,GAAGqvR,YAS5B,OANInwN,GAAUygC,IACZ4vL,EAAQvvR,GAAK2wR,EAAgBc,EAAMzxR,GAAIyxR,EAAM,GAAIC,EAAM1xR,GAAI2xR,EAAM,IACjElC,GAAeF,EAAQvvR,GAAGqvR,aAG5BmC,EAAe/B,YAAcA,EACtB+B,EAGT,SAASI,EAAWzxR,GAClBrB,KAAK+yR,cAAgB,EACrB/yR,KAAK4uR,OAAS,IAAIlvR,MAAM2B,GAG1B,SAAS2xR,EAAUjnB,EAASvjF,GAC1BxoL,KAAKizR,cAAgBlnB,EACrB/rQ,KAAKwoL,MAAQA,EAGf,IAAI0qG,EAAkB,WACpB,IAAIC,EAAa,GACjB,OAAO,SAAUrB,EAAKC,EAAKC,EAAKC,GAC9B,IAAImB,GAActB,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMC,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMC,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMC,EAAI,GAAK,IAAMA,EAAI,IAAI/gR,QAAQ,MAAO,KAElJ,IAAKiiR,EAAWC,GAAa,CAC3B,IACIzsR,EACAzF,EACA2/F,EACAqxL,EACAC,EAEAC,EACA5pG,EARA6pG,EAAgBtW,0BAMhBwU,EAAc,EAGd+B,EAAY,KAEG,IAAfR,EAAIzwR,SAAiBywR,EAAI,KAAOC,EAAI,IAAMD,EAAI,KAAOC,EAAI,KAAOjB,EAAcgB,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,GAAID,EAAI,GAAKE,EAAI,GAAIF,EAAI,GAAKE,EAAI,KAAOlB,EAAcgB,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAKE,EAAI,GAAIF,EAAI,GAAKE,EAAI,MACjOI,EAAgB,GAGlB,IAAIgB,EAAa,IAAIP,EAAWT,GAGhC,IAFAxxL,EAAMmxL,EAAI3wR,OAELsF,EAAI,EAAGA,EAAI0rR,EAAe1rR,GAAK,EAAG,CAKrC,IAJA6hL,EAAQwvF,iBAAiBn3K,GACzBsxL,EAAOxrR,GAAK0rR,EAAgB,GAC5BD,EAAa,EAERlxR,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBgxR,EAAU3Z,MAAM,EAAI4Z,EAAM,GAAKL,EAAI5wR,GAAK,EAAIq3Q,MAAM,EAAI4Z,EAAM,GAAKA,GAAQL,EAAI5wR,GAAK8wR,EAAI9wR,IAAM,GAAK,EAAIixR,GAAQ5Z,MAAM4Z,EAAM,IAAMJ,EAAI7wR,GAAK+wR,EAAI/wR,IAAMq3Q,MAAM4Z,EAAM,GAAKJ,EAAI7wR,GACvKsnL,EAAMtnL,GAAKgxR,EAEO,OAAdI,IACFF,GAAc7Z,MAAM/vF,EAAMtnL,GAAKoxR,EAAUpxR,GAAI,IAIjDkxR,EAAa5Z,OAAO4Z,GACpB7B,GAAe6B,EACfiB,EAAWzE,OAAOjoR,GAAK,IAAIqsR,EAAUZ,EAAY5pG,GACjD8pG,EAAY9pG,EAGd6qG,EAAWN,cAAgBxC,EAC3B4C,EAAWC,GAAcC,EAG3B,OAAOF,EAAWC,IAhDA,GAoDtB,SAASE,EAAgBnB,EAAMkB,GAC7B,IAAI7C,EAAW6C,EAAW7C,SACtBC,EAAU4C,EAAW5C,QACrB5vL,EAAM2vL,EAASnvR,OACfkyR,EAAU7a,SAAS73K,EAAM,GAAKsxL,GAC9BqB,EAAYrB,EAAOkB,EAAW9C,YAC9BkD,EAAQ,EAEZ,GAAIF,IAAY1yL,EAAM,GAAiB,IAAZ0yL,GAAiBC,IAAc/C,EAAQ8C,GAChE,OAAO/C,EAAS+C,GAGlB,IAAIrmC,EAAMujC,EAAQ8C,GAAWC,GAAa,EAAI,EAC1Che,GAAO,EAEX,MAAOA,EAQL,GAPIib,EAAQ8C,IAAYC,GAAa/C,EAAQ8C,EAAU,GAAKC,GAC1DC,GAASD,EAAY/C,EAAQ8C,KAAa9C,EAAQ8C,EAAU,GAAK9C,EAAQ8C,IACzE/d,GAAO,GAEP+d,GAAWrmC,EAGTqmC,EAAU,GAAKA,GAAW1yL,EAAM,EAAG,CAErC,GAAI0yL,IAAY1yL,EAAM,EACpB,OAAO2vL,EAAS+C,GAGlB/d,GAAO,EAIX,OAAOgb,EAAS+C,IAAY/C,EAAS+C,EAAU,GAAK/C,EAAS+C,IAAYE,EAG3E,SAASC,EAAkB5B,EAAKC,EAAKC,EAAKC,EAAK0B,EAASN,GACtD,IAAIO,EAAKN,EAAgBK,EAASN,GAC9BQ,EAAK,EAAID,EACTE,EAAMjD,EAAKz/P,MAAwK,KAAjKyiQ,EAAKA,EAAKA,EAAK/B,EAAI,IAAM8B,EAAKC,EAAKA,EAAKA,EAAKD,EAAKC,EAAKA,EAAKA,EAAKD,GAAM5B,EAAI,IAAM4B,EAAKA,EAAKC,EAAKA,EAAKD,EAAKA,EAAKA,EAAKC,EAAKD,GAAM3B,EAAI,GAAK2B,EAAKA,EAAKA,EAAK7B,EAAI,KAAc,IAC3LgC,EAAMlD,EAAKz/P,MAAwK,KAAjKyiQ,EAAKA,EAAKA,EAAK/B,EAAI,IAAM8B,EAAKC,EAAKA,EAAKA,EAAKD,EAAKC,EAAKA,EAAKA,EAAKD,GAAM5B,EAAI,IAAM4B,EAAKA,EAAKC,EAAKA,EAAKD,EAAKA,EAAKA,EAAKC,EAAKD,GAAM3B,EAAI,GAAK2B,EAAKA,EAAKA,EAAK7B,EAAI,KAAc,IAC/L,MAAO,CAAC+B,EAAKC,GAGf,IAAIC,EAAsBtc,iBAAiB,UAAW,GAEtD,SAASuc,EAAcnC,EAAKC,EAAKC,EAAKC,EAAKiC,EAAWC,EAASd,GACzDa,EAAY,EACdA,EAAY,EACHA,EAAY,IACrBA,EAAY,GAGd,IAAIE,EAAKd,EAAgBY,EAAWb,GACpCc,EAAUA,EAAU,EAAI,EAAIA,EAC5B,IACIjzR,EADA0yR,EAAKN,EAAgBa,EAASd,GAE9BxyL,EAAMixL,EAAIzwR,OACVgzR,EAAK,EAAID,EACTP,EAAK,EAAID,EACTU,EAASD,EAAKA,EAAKA,EACnBE,EAAWH,EAAKC,EAAKA,EAAK,EAE1BG,EAAWJ,EAAKA,EAAKC,EAAK,EAE1BI,EAASL,EAAKA,EAAKA,EAEnBM,EAASL,EAAKA,EAAKR,EACnBc,EAAWP,EAAKC,EAAKR,EAAKQ,EAAKD,EAAKP,EAAKQ,EAAKA,EAAKT,EAEnDgB,EAAWR,EAAKA,EAAKP,EAAKQ,EAAKD,EAAKR,EAAKQ,EAAKC,EAAKT,EAEnDiB,EAAST,EAAKA,EAAKR,EAEnBkB,EAAST,EAAKR,EAAKA,EACnBkB,EAAWX,EAAKP,EAAKA,EAAKQ,EAAKT,EAAKC,EAAKQ,EAAKR,EAAKD,EAEnDoB,EAAWZ,EAAKR,EAAKC,EAAKQ,EAAKT,EAAKA,EAAKQ,EAAKP,EAAKD,EAEnDqB,EAASb,EAAKR,EAAKA,EAEnBsB,EAASrB,EAAKA,EAAKA,EACnBsB,EAAWvB,EAAKC,EAAKA,EAAKA,EAAKD,EAAKC,EAAKA,EAAKA,EAAKD,EAEnDwB,EAAWxB,EAAKA,EAAKC,EAAKA,EAAKD,EAAKA,EAAKA,EAAKC,EAAKD,EAEnDyB,EAASzB,EAAKA,EAAKA,EAEvB,IAAK1yR,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB8yR,EAAwB,EAAJ9yR,GAAS2vR,EAAKz/P,MAAoF,KAA7EkjQ,EAASxC,EAAI5wR,GAAKqzR,EAAWvC,EAAI9wR,GAAKszR,EAAWvC,EAAI/wR,GAAKuzR,EAAS1C,EAAI7wR,KAAc,IAE9H8yR,EAAwB,EAAJ9yR,EAAQ,GAAK2vR,EAAKz/P,MAAoF,KAA7EsjQ,EAAS5C,EAAI5wR,GAAKyzR,EAAW3C,EAAI9wR,GAAK0zR,EAAW3C,EAAI/wR,GAAK2zR,EAAS9C,EAAI7wR,KAAc,IAElI8yR,EAAwB,EAAJ9yR,EAAQ,GAAK2vR,EAAKz/P,MAAoF,KAA7E0jQ,EAAShD,EAAI5wR,GAAK6zR,EAAW/C,EAAI9wR,GAAK8zR,EAAW/C,EAAI/wR,GAAK+zR,EAASlD,EAAI7wR,KAAc,IAElI8yR,EAAwB,EAAJ9yR,EAAQ,GAAK2vR,EAAKz/P,MAAoF,KAA7E8jQ,EAASpD,EAAI5wR,GAAKi0R,EAAWnD,EAAI9wR,GAAKk0R,EAAWnD,EAAI/wR,GAAKm0R,EAAStD,EAAI7wR,KAAc,IAGpI,OAAO8yR,EAGT,MAAO,CACLxB,kBAAmBA,EACnByB,cAAeA,EACfP,kBAAmBA,EACnBR,gBAAiBA,EACjBpC,cAAeA,EACfO,cAAeA,GAInB,IAAIiE,IAAM1E,cAEN2E,gBAAkB,WACpB,IAAIC,EAAYlgB,oBACZmgB,EAAUxmR,KAAKgyF,IAEnB,SAAS+vK,EAAiB0kB,EAAUC,GAClC,IACI5xO,EADA6xO,EAAa51R,KAAK41R,WAGA,qBAAlB51R,KAAK61R,WACP9xO,EAAW2zN,iBAAiB,UAAW13Q,KAAK81R,GAAGz0R,SAGjD,IAII00R,EACAC,EACAC,EA6BAtvR,EACA02Q,EACA8U,EACA/U,EACAv2Q,EACAqvR,EAxCAC,EAAiBR,EAAQ3/H,UACzB90J,EAAIi1R,EACJt1L,EAAM7gG,KAAKo2R,UAAU/0R,OAAS,EAC9Bm0Q,GAAO,EAKX,MAAOA,EAAM,CAIX,GAHAugB,EAAU/1R,KAAKo2R,UAAUl1R,GACzB80R,EAAch2R,KAAKo2R,UAAUl1R,EAAI,GAE7BA,IAAM2/F,EAAM,GAAK60L,GAAYM,EAAYh1R,EAAI40R,EAAY,CACvDG,EAAQv6K,IACVu6K,EAAUC,GAGZG,EAAiB,EACjB,MAGF,GAAIH,EAAYh1R,EAAI40R,EAAaF,EAAU,CACzCS,EAAiBj1R,EACjB,MAGEA,EAAI2/F,EAAM,EACZ3/F,GAAK,GAELi1R,EAAiB,EACjB3gB,GAAO,GAIXygB,EAAmBj2R,KAAKq2R,kBAAkBn1R,IAAM,GAOhD,IAEIo1R,EAFAC,EAAcP,EAAYh1R,EAAI40R,EAC9BY,EAAUT,EAAQ/0R,EAAI40R,EAG1B,GAAIG,EAAQjqL,GAAI,CACTmqL,EAAiB5C,aACpB4C,EAAiB5C,WAAaiC,IAAIpC,gBAAgB6C,EAAQ90R,EAAG+0R,EAAY/0R,GAAK80R,EAAQrxR,EAAGqxR,EAAQjqL,GAAIiqL,EAAQU,KAG/G,IAAIpD,EAAa4C,EAAiB5C,WAElC,GAAIqC,GAAYa,GAAeb,EAAWc,EAAS,CACjD,IAAIE,EAAMhB,GAAYa,EAAclD,EAAWzE,OAAOvtR,OAAS,EAAI,EAGnE,IAFAg8Q,EAAOgW,EAAWzE,OAAO8H,GAAKluG,MAAMnnL,OAE/BsF,EAAI,EAAGA,EAAI02Q,EAAM12Q,GAAK,EACzBo9C,EAASp9C,GAAK0sR,EAAWzE,OAAO8H,GAAKluG,MAAM7hL,OAGxC,CACDsvR,EAAiBU,OACnBT,EAAMD,EAAiBU,QAEvBT,EAAMlJ,cAAcC,gBAAgB8I,EAAQ7vR,EAAEonK,EAAGyoH,EAAQ7vR,EAAEhB,EAAG6wR,EAAQ70R,EAAEosK,EAAGyoH,EAAQ70R,EAAEgE,EAAG6wR,EAAQ50R,GAAGO,IACnGu0R,EAAiBU,OAAST,GAG5B/D,EAAO+D,GAAKR,EAAWc,IAAYD,EAAcC,IACjD,IACII,EADAC,EAAiBxD,EAAWN,cAAgBZ,EAE5C5B,EAAcoF,EAAQmB,UAAYpB,GAAYC,EAAQoB,qBAAuB71R,EAAIy0R,EAAQqB,iBAAmB,EAChHnwR,EAAI8uR,EAAQmB,UAAYpB,GAAYC,EAAQoB,qBAAuB71R,EAAIy0R,EAAQsB,WAAa,EAC5FzhB,GAAO,EACP4H,EAAOiW,EAAWzE,OAAOvtR,OAEzB,MAAOm0Q,EAAM,CAGX,GAFA+a,GAAe8C,EAAWzE,OAAO/nR,GAAGosR,cAEb,IAAnB4D,GAAiC,IAAT1E,GAActrR,IAAMwsR,EAAWzE,OAAOvtR,OAAS,EAAG,CAG5E,IAFAg8Q,EAAOgW,EAAWzE,OAAO/nR,GAAG2hL,MAAMnnL,OAE7BsF,EAAI,EAAGA,EAAI02Q,EAAM12Q,GAAK,EACzBo9C,EAASp9C,GAAK0sR,EAAWzE,OAAO/nR,GAAG2hL,MAAM7hL,GAG3C,MACK,GAAIkwR,GAAkBtG,GAAesG,EAAiBtG,EAAc8C,EAAWzE,OAAO/nR,EAAI,GAAGosR,cAAe,CAIjH,IAHA2D,GAAeC,EAAiBtG,GAAe8C,EAAWzE,OAAO/nR,EAAI,GAAGosR,cACxE5V,EAAOgW,EAAWzE,OAAO/nR,GAAG2hL,MAAMnnL,OAE7BsF,EAAI,EAAGA,EAAI02Q,EAAM12Q,GAAK,EACzBo9C,EAASp9C,GAAK0sR,EAAWzE,OAAO/nR,GAAG2hL,MAAM7hL,IAAM0sR,EAAWzE,OAAO/nR,EAAI,GAAG2hL,MAAM7hL,GAAK0sR,EAAWzE,OAAO/nR,GAAG2hL,MAAM7hL,IAAMiwR,EAGtH,MAGE/vR,EAAIu2Q,EAAO,EACbv2Q,GAAK,EAEL2uQ,GAAO,EAIXmgB,EAAQsB,WAAapwR,EACrB8uR,EAAQqB,iBAAmBzG,EAAc8C,EAAWzE,OAAO/nR,GAAGosR,cAC9D0C,EAAQoB,mBAAqB71R,OAE1B,CACL,IAAIg2R,EACAC,EACAC,EACAC,EACA5wM,EAIJ,GAHAoa,EAAMk1L,EAAQ90R,EAAEI,OAChBi1R,EAAWN,EAAY/0R,GAAK80R,EAAQrxR,EAEhC1E,KAAKs3R,IAAoB,IAAdvB,EAAQv6K,EACrB,GAAIk6K,GAAYa,EACdxyO,EAAS,GAAKuyO,EAAS,GACvBvyO,EAAS,GAAKuyO,EAAS,GACvBvyO,EAAS,GAAKuyO,EAAS,QAClB,GAAIZ,GAAYc,EACrBzyO,EAAS,GAAKgyO,EAAQ90R,EAAE,GACxB8iD,EAAS,GAAKgyO,EAAQ90R,EAAE,GACxB8iD,EAAS,GAAKgyO,EAAQ90R,EAAE,OACnB,CACL,IAAIs2R,EAAYC,EAAiBzB,EAAQ90R,GACrCw2R,EAAUD,EAAiBlB,GAC3BlxO,GAAQswO,EAAWc,IAAYD,EAAcC,GACjDkB,EAAkB3zO,EAAU4zO,EAAMJ,EAAWE,EAASryO,SAGxD,IAAKlkD,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACN,IAAd60R,EAAQv6K,IACNk6K,GAAYa,EACdpE,EAAO,EACEuD,EAAWc,EACpBrE,EAAO,GAEH4D,EAAQ7vR,EAAEonK,EAAErtK,cAAgBP,OACzBu2R,EAAiBU,SACpBV,EAAiBU,OAAS,IAGvBV,EAAiBU,OAAOz1R,GAQ3Bg1R,EAAMD,EAAiBU,OAAOz1R,IAP9Bg2R,OAA0BhxP,IAAnB6vP,EAAQ7vR,EAAEonK,EAAEpsK,GAAmB60R,EAAQ7vR,EAAEonK,EAAE,GAAKyoH,EAAQ7vR,EAAEonK,EAAEpsK,GACnEi2R,OAA0BjxP,IAAnB6vP,EAAQ7vR,EAAEhB,EAAEhE,GAAmB60R,EAAQ7vR,EAAEhB,EAAE,GAAK6wR,EAAQ7vR,EAAEhB,EAAEhE,GACnEk2R,OAAyBlxP,IAAnB6vP,EAAQ70R,EAAEosK,EAAEpsK,GAAmB60R,EAAQ70R,EAAEosK,EAAE,GAAKyoH,EAAQ70R,EAAEosK,EAAEpsK,GAClEm2R,OAAyBnxP,IAAnB6vP,EAAQ70R,EAAEgE,EAAEhE,GAAmB60R,EAAQ70R,EAAEgE,EAAE,GAAK6wR,EAAQ70R,EAAEgE,EAAEhE,GAClEg1R,EAAMlJ,cAAcC,gBAAgBiK,EAAMC,EAAMC,EAAKC,GAAK31R,IAC1Du0R,EAAiBU,OAAOz1R,GAAKg1R,IAIrBD,EAAiBU,OAQ3BT,EAAMD,EAAiBU,QAPvBO,EAAOnB,EAAQ7vR,EAAEonK,EACjB6pH,EAAOpB,EAAQ7vR,EAAEhB,EACjBkyR,EAAMrB,EAAQ70R,EAAEosK,EAChB+pH,EAAMtB,EAAQ70R,EAAEgE,EAChBgxR,EAAMlJ,cAAcC,gBAAgBiK,EAAMC,EAAMC,EAAKC,GAAK31R,IAC1Dq0R,EAAQE,iBAAmBC,GAK7B/D,EAAO+D,GAAKR,EAAWc,IAAYD,EAAcC,MAIrDF,EAAWN,EAAY/0R,GAAK80R,EAAQrxR,EACpC+hF,EAAyB,IAAdsvM,EAAQv6K,EAAUu6K,EAAQ90R,EAAEC,GAAK60R,EAAQ90R,EAAEC,IAAMo1R,EAASp1R,GAAK60R,EAAQ90R,EAAEC,IAAMixR,EAEpE,qBAAlBnyR,KAAK61R,SACP9xO,EAAS7iD,GAAKulF,EAEd1iC,EAAW0iC,EAOnB,OADAkvM,EAAQ3/H,UAAYmgI,EACbpyO,EAIT,SAAS4zO,EAAM/wR,EAAGhH,EAAGoB,GACnB,IASI42R,EACAC,EACAC,EACAC,EACAC,EAbAhkN,EAAM,GACNikN,EAAKrxR,EAAE,GACPsxR,EAAKtxR,EAAE,GACPuxR,EAAKvxR,EAAE,GACPwxR,EAAKxxR,EAAE,GACPyxR,EAAKz4R,EAAE,GACP04R,EAAK14R,EAAE,GACP24R,EAAK34R,EAAE,GACP44R,EAAK54R,EAAE,GA8BX,OAxBAi4R,EAAQI,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAEvCX,EAAQ,IACVA,GAASA,EACTQ,GAAMA,EACNC,GAAMA,EACNC,GAAMA,EACNC,GAAMA,GAGJ,EAAMX,EAAQ,MAChBD,EAAQ3oR,KAAKwpR,KAAKZ,GAClBC,EAAQ7oR,KAAKypR,IAAId,GACjBG,EAAS9oR,KAAKypR,KAAK,EAAM13R,GAAK42R,GAASE,EACvCE,EAAS/oR,KAAKypR,IAAI13R,EAAI42R,GAASE,IAE/BC,EAAS,EAAM/2R,EACfg3R,EAASh3R,GAGXgzE,EAAI,GAAK+jN,EAASE,EAAKD,EAASK,EAChCrkN,EAAI,GAAK+jN,EAASG,EAAKF,EAASM,EAChCtkN,EAAI,GAAK+jN,EAASI,EAAKH,EAASO,EAChCvkN,EAAI,GAAK+jN,EAASK,EAAKJ,EAASQ,EACzBxkN,EAGT,SAAS0jN,EAAkB1jN,EAAK2kN,GAC9B,IAAIC,EAAKD,EAAK,GACVE,EAAKF,EAAK,GACVG,EAAKH,EAAK,GACVI,EAAKJ,EAAK,GACVK,EAAU/pR,KAAKgqR,MAAM,EAAIJ,EAAKE,EAAK,EAAIH,EAAKE,EAAI,EAAI,EAAID,EAAKA,EAAK,EAAIC,EAAKA,GAC3EI,EAAWjqR,KAAKkqR,KAAK,EAAIP,EAAKC,EAAK,EAAIC,EAAKC,GAC5CK,EAAOnqR,KAAKgqR,MAAM,EAAIL,EAAKG,EAAK,EAAIF,EAAKC,EAAI,EAAI,EAAIF,EAAKA,EAAK,EAAIE,EAAKA,GAC5E9kN,EAAI,GAAKglN,EAAU7f,UACnBnlM,EAAI,GAAKklN,EAAW/f,UACpBnlM,EAAI,GAAKolN,EAAOjgB,UAGlB,SAASqe,EAAiBplP,GACxB,IAAI4mP,EAAU5mP,EAAO,GAAK+mO,UACtB+f,EAAW9mP,EAAO,GAAK+mO,UACvBigB,EAAOhnP,EAAO,GAAK+mO,UACnB9kM,EAAKplE,KAAKoqR,IAAIL,EAAU,GACxB1kN,EAAKrlE,KAAKoqR,IAAIH,EAAW,GACzB3kN,EAAKtlE,KAAKoqR,IAAID,EAAO,GACrBE,EAAKrqR,KAAKypR,IAAIM,EAAU,GACxBO,EAAKtqR,KAAKypR,IAAIQ,EAAW,GACzBM,EAAKvqR,KAAKypR,IAAIU,EAAO,GACrBz8L,EAAItoB,EAAKC,EAAKC,EAAK+kN,EAAKC,EAAKC,EAC7BlsH,EAAIgsH,EAAKC,EAAKhlN,EAAKF,EAAKC,EAAKklN,EAC7Bt0R,EAAIo0R,EAAKhlN,EAAKC,EAAKF,EAAKklN,EAAKC,EAC7Bz3G,EAAI1tG,EAAKklN,EAAKhlN,EAAK+kN,EAAKhlN,EAAKklN,EACjC,MAAO,CAAClsH,EAAGpoK,EAAG68K,EAAGplF,GAGnB,SAAS88L,IACP,IAAI/D,EAAW11R,KAAKs+Q,KAAKob,cAAgB15R,KAAK41R,WAC1CnK,EAAWzrR,KAAKo2R,UAAU,GAAGp1R,EAAIhB,KAAK41R,WACtCxlJ,EAAUpwI,KAAKo2R,UAAUp2R,KAAKo2R,UAAU/0R,OAAS,GAAGL,EAAIhB,KAAK41R,WAEjE,KAAMF,IAAa11R,KAAK25R,SAAS7C,WAAa92R,KAAK25R,SAAS7C,YAActB,IAAcx1R,KAAK25R,SAAS7C,WAAa1mJ,GAAWslJ,GAAYtlJ,GAAWpwI,KAAK25R,SAAS7C,UAAYrL,GAAYiK,EAAWjK,IAAY,CAC5MzrR,KAAK25R,SAAS7C,WAAapB,IAC7B11R,KAAK25R,SAAS5C,oBAAsB,EACpC/2R,KAAK25R,SAAS3jI,UAAY,GAG5B,IAAI4jI,EAAe55R,KAAKgxQ,iBAAiB0kB,EAAU11R,KAAK25R,UACxD35R,KAAK81R,GAAK8D,EAIZ,OADA55R,KAAK25R,SAAS7C,UAAYpB,EACnB11R,KAAK81R,GAGd,SAAS+D,EAAU36P,GACjB,IAAI46P,EAEJ,GAAsB,mBAAlB95R,KAAK61R,SACPiE,EAAkB56P,EAAMl/B,KAAK+5R,KAEzBtE,EAAQz1R,KAAK4F,EAAIk0R,GAAmB,OACtC95R,KAAK4F,EAAIk0R,EACT95R,KAAKg6R,MAAO,OAET,CACL,IAAI94R,EAAI,EACJ2/F,EAAM7gG,KAAK4F,EAAEvE,OAEjB,MAAOH,EAAI2/F,EACTi5L,EAAkB56P,EAAIh+B,GAAKlB,KAAK+5R,KAE5BtE,EAAQz1R,KAAK4F,EAAE1E,GAAK44R,GAAmB,OACzC95R,KAAK4F,EAAE1E,GAAK44R,EACZ95R,KAAKg6R,MAAO,GAGd94R,GAAK,GAKX,SAAS+4R,IACP,GAAIj6R,KAAKksR,KAAKjF,WAAWiT,UAAYl6R,KAAKk6R,SAAYl6R,KAAKm6R,gBAAgB94R,OAI3E,GAAIrB,KAAKo6R,KACPp6R,KAAK65R,UAAU75R,KAAK81R,QADtB,CAOA,IAAI50R,EAFJlB,KAAKo6R,MAAO,EACZp6R,KAAKg6R,KAAOh6R,KAAKq6R,cAEjB,IAAIx5L,EAAM7gG,KAAKm6R,gBAAgB94R,OAC3Bi5R,EAAat6R,KAAKu6R,GAAKv6R,KAAK81R,GAAK91R,KAAKoQ,KAAKzJ,EAE/C,IAAKzF,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBo5R,EAAat6R,KAAKm6R,gBAAgBj5R,GAAGo5R,GAGvCt6R,KAAK65R,UAAUS,GACft6R,KAAKq6R,eAAgB,EACrBr6R,KAAKo6R,MAAO,EACZp6R,KAAKk6R,QAAUl6R,KAAKksR,KAAKjF,WAAWiT,SAGtC,SAASM,EAAUC,GACjBz6R,KAAKm6R,gBAAgBn0R,KAAKy0R,GAC1Bz6R,KAAK0yI,UAAUgoJ,mBAAmB16R,MAGpC,SAAS26R,EAAczO,EAAM97Q,EAAM2pR,EAAMrnJ,GACvC1yI,KAAK61R,SAAW,iBAChB71R,KAAK+5R,KAAOA,GAAQ,EACpB/5R,KAAKoQ,KAAOA,EACZpQ,KAAK4F,EAAIm0R,EAAO3pR,EAAKzJ,EAAIozR,EAAO3pR,EAAKzJ,EACrC3G,KAAK81R,GAAK1lR,EAAKzJ,EACf3G,KAAKg6R,MAAO,EACZh6R,KAAKksR,KAAOA,EACZlsR,KAAK0yI,UAAYA,EACjB1yI,KAAKs+Q,KAAO4N,EAAK5N,KACjBt+Q,KAAK2G,GAAI,EACT3G,KAAKu6R,IAAK,EACVv6R,KAAK46R,IAAM,EACX56R,KAAKm6R,gBAAkB,GACvBn6R,KAAKq6R,eAAgB,EACrBr6R,KAAK+yO,SAAWknD,EAChBj6R,KAAK65R,UAAYA,EACjB75R,KAAKw6R,UAAYA,EAGnB,SAASK,EAAyB3O,EAAM97Q,EAAM2pR,EAAMrnJ,GAWlD,IAAIxxI,EAVJlB,KAAK61R,SAAW,mBAChB71R,KAAK+5R,KAAOA,GAAQ,EACpB/5R,KAAKoQ,KAAOA,EACZpQ,KAAKg6R,MAAO,EACZh6R,KAAKksR,KAAOA,EACZlsR,KAAK0yI,UAAYA,EACjB1yI,KAAKs+Q,KAAO4N,EAAK5N,KACjBt+Q,KAAK2G,GAAI,EACT3G,KAAKu6R,IAAK,EACVv6R,KAAKk6R,SAAW,EAEhB,IAAIr5L,EAAMzwF,EAAKzJ,EAAEtF,OAKjB,IAJArB,KAAK4F,EAAI8xQ,iBAAiB,UAAW72K,GACrC7gG,KAAK81R,GAAKpe,iBAAiB,UAAW72K,GACtC7gG,KAAK46R,IAAMljB,iBAAiB,UAAW72K,GAElC3/F,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAK4F,EAAE1E,GAAKkP,EAAKzJ,EAAEzF,GAAKlB,KAAK+5R,KAC7B/5R,KAAK81R,GAAG50R,GAAKkP,EAAKzJ,EAAEzF,GAGtBlB,KAAKq6R,eAAgB,EACrBr6R,KAAKm6R,gBAAkB,GACvBn6R,KAAK+yO,SAAWknD,EAChBj6R,KAAK65R,UAAYA,EACjB75R,KAAKw6R,UAAYA,EAGnB,SAASM,EAAuB5O,EAAM97Q,EAAM2pR,EAAMrnJ,GAChD1yI,KAAK61R,SAAW,iBAChB71R,KAAKo2R,UAAYhmR,EAAKzJ,EACtB3G,KAAKq2R,kBAAoB,GACzBr2R,KAAK41R,WAAa1J,EAAK97Q,KAAKivQ,GAC5Br/Q,KAAKk6R,SAAW,EAChBl6R,KAAK25R,SAAW,CACd7C,UAAWtB,EACXx/H,UAAW,EACX1xJ,MAAO,EACPyyR,oBAAqB,GAEvB/2R,KAAK2G,GAAI,EACT3G,KAAKu6R,IAAK,EACVv6R,KAAKoQ,KAAOA,EACZpQ,KAAK+5R,KAAOA,GAAQ,EACpB/5R,KAAKksR,KAAOA,EACZlsR,KAAK0yI,UAAYA,EACjB1yI,KAAKs+Q,KAAO4N,EAAK5N,KACjBt+Q,KAAK4F,EAAI4vR,EACTx1R,KAAK81R,GAAKN,EACVx1R,KAAKq6R,eAAgB,EACrBr6R,KAAK+yO,SAAWknD,EAChBj6R,KAAK65R,UAAYA,EACjB75R,KAAKgxQ,iBAAmBA,EACxBhxQ,KAAKm6R,gBAAkB,CAACV,EAAsBp2O,KAAKrjD,OACnDA,KAAKw6R,UAAYA,EAGnB,SAASO,EAAkC7O,EAAM97Q,EAAM2pR,EAAMrnJ,GAE3D,IAAIxxI,EADJlB,KAAK61R,SAAW,mBAEhB,IACI50R,EACAyD,EACAonG,EACA2qL,EAJA51L,EAAMzwF,EAAKzJ,EAAEtF,OAMjB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAM,EAAG3/F,GAAK,EACxBkP,EAAKzJ,EAAEzF,GAAG4qG,IAAM17F,EAAKzJ,EAAEzF,GAAGD,GAAKmP,EAAKzJ,EAAEzF,EAAI,IAAMkP,EAAKzJ,EAAEzF,EAAI,GAAGD,IAChEA,EAAImP,EAAKzJ,EAAEzF,GAAGD,EACdyD,EAAI0L,EAAKzJ,EAAEzF,EAAI,GAAGD,EAClB6qG,EAAK17F,EAAKzJ,EAAEzF,GAAG4qG,GACf2qL,EAAKrmR,EAAKzJ,EAAEzF,GAAGu1R,IAEE,IAAbx1R,EAAEI,SAAkBJ,EAAE,KAAOyD,EAAE,IAAMzD,EAAE,KAAOyD,EAAE,KAAO4wR,IAAIxE,cAAc7vR,EAAE,GAAIA,EAAE,GAAIyD,EAAE,GAAIA,EAAE,GAAIzD,EAAE,GAAK6qG,EAAG,GAAI7qG,EAAE,GAAK6qG,EAAG,KAAOwpL,IAAIxE,cAAc7vR,EAAE,GAAIA,EAAE,GAAIyD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAK+xR,EAAG,GAAI/xR,EAAE,GAAK+xR,EAAG,KAAoB,IAAbx1R,EAAEI,SAAkBJ,EAAE,KAAOyD,EAAE,IAAMzD,EAAE,KAAOyD,EAAE,IAAMzD,EAAE,KAAOyD,EAAE,KAAO4wR,IAAIjE,cAAcpwR,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIyD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIzD,EAAE,GAAK6qG,EAAG,GAAI7qG,EAAE,GAAK6qG,EAAG,GAAI7qG,EAAE,GAAK6qG,EAAG,KAAOwpL,IAAIjE,cAAcpwR,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIyD,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAK+xR,EAAG,GAAI/xR,EAAE,GAAK+xR,EAAG,GAAI/xR,EAAE,GAAK+xR,EAAG,OACldrmR,EAAKzJ,EAAEzF,GAAG4qG,GAAK,KACf17F,EAAKzJ,EAAEzF,GAAGu1R,GAAK,MAGbx1R,EAAE,KAAOyD,EAAE,IAAMzD,EAAE,KAAOyD,EAAE,IAAgB,IAAVonG,EAAG,IAAsB,IAAVA,EAAG,IAAsB,IAAV2qL,EAAG,IAAsB,IAAVA,EAAG,KACnE,IAAbx1R,EAAEI,QAAgBJ,EAAE,KAAOyD,EAAE,IAAgB,IAAVonG,EAAG,IAAsB,IAAV2qL,EAAG,MACvDrmR,EAAKzJ,EAAEzF,GAAG4qG,GAAK,KACf17F,EAAKzJ,EAAEzF,GAAGu1R,GAAK,OAMvBz2R,KAAKm6R,gBAAkB,CAACV,EAAsBp2O,KAAKrjD,OACnDA,KAAKoQ,KAAOA,EACZpQ,KAAKo2R,UAAYhmR,EAAKzJ,EACtB3G,KAAKq2R,kBAAoB,GACzBr2R,KAAK41R,WAAa1J,EAAK97Q,KAAKivQ,GAC5Br/Q,KAAK2G,GAAI,EACT3G,KAAKu6R,IAAK,EACVv6R,KAAKq6R,eAAgB,EACrBr6R,KAAK+5R,KAAOA,GAAQ,EACpB/5R,KAAKksR,KAAOA,EACZlsR,KAAK0yI,UAAYA,EACjB1yI,KAAKs+Q,KAAO4N,EAAK5N,KACjBt+Q,KAAK+yO,SAAWknD,EAChBj6R,KAAK65R,UAAYA,EACjB75R,KAAKgxQ,iBAAmBA,EACxBhxQ,KAAKk6R,SAAW,EAChB,IAAIc,EAAS5qR,EAAKzJ,EAAE,GAAG1F,EAAEI,OAIzB,IAHArB,KAAK4F,EAAI8xQ,iBAAiB,UAAWsjB,GACrCh7R,KAAK81R,GAAKpe,iBAAiB,UAAWsjB,GAEjC95R,EAAI,EAAGA,EAAI85R,EAAQ95R,GAAK,EAC3BlB,KAAK4F,EAAE1E,GAAKs0R,EACZx1R,KAAK81R,GAAG50R,GAAKs0R,EAGfx1R,KAAK25R,SAAW,CACd7C,UAAWtB,EACXx/H,UAAW,EACX1xJ,MAAOozQ,iBAAiB,UAAWsjB,IAErCh7R,KAAKw6R,UAAYA,EAGnB,SAASh5L,EAAQ0qL,EAAM97Q,EAAM8c,EAAM6sQ,EAAMrnJ,GACvC,IAAI7yI,EAEJ,GAAKuQ,EAAKzJ,EAAEtF,OAEL,GAAyB,kBAAd+O,EAAKzJ,EAAE,GACvB9G,EAAI,IAAIg7R,EAAyB3O,EAAM97Q,EAAM2pR,EAAMrnJ,QAEnD,OAAQxlH,GACN,KAAK,EACHrtB,EAAI,IAAIi7R,EAAuB5O,EAAM97Q,EAAM2pR,EAAMrnJ,GACjD,MAEF,KAAK,EACH7yI,EAAI,IAAIk7R,EAAkC7O,EAAM97Q,EAAM2pR,EAAMrnJ,GAC5D,MAEF,QACE,WAdJ7yI,EAAI,IAAI86R,EAAczO,EAAM97Q,EAAM2pR,EAAMrnJ,GAsB1C,OAJI7yI,EAAEs6R,gBAAgB94R,QACpBqxI,EAAUgoJ,mBAAmB76R,GAGxBA,EAGT,IAAIyiR,EAAK,CACP9gL,QAASA,GAEX,OAAO8gL,EA1gBa,GA6gBtB,SAAS2Y,4BAETA,yBAAyB/6R,UAAY,CACnCw6R,mBAAoB,SAA4Bj6M,IACA,IAA1CzgF,KAAKk7R,kBAAkBhgR,QAAQulE,KACjCzgF,KAAKk7R,kBAAkBl1R,KAAKy6E,GAC5BzgF,KAAK0yI,UAAUgoJ,mBAAmB16R,MAClCA,KAAKm7R,aAAc,IAGvBC,yBAA0B,WAExB,IAAIl6R,EADJlB,KAAKg6R,MAAO,EAEZ,IAAIn5L,EAAM7gG,KAAKk7R,kBAAkB75R,OAEjC,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKk7R,kBAAkBh6R,GAAG6xO,WAEtB/yO,KAAKk7R,kBAAkBh6R,GAAG84R,OAC5Bh6R,KAAKg6R,MAAO,IAIlBqB,6BAA8B,SAAsC3oJ,GAClE1yI,KAAK0yI,UAAYA,EACjB1yI,KAAKk7R,kBAAoB,GACzBl7R,KAAKg6R,MAAO,EACZh6R,KAAKm7R,aAAc,IAIvB,IAAIG,UAAY,WACd,SAASn7R,IACP,OAAOu3Q,iBAAiB,UAAW,GAGrC,OAAOoY,YAAY,EAAG3vR,GALR,GAQhB,SAASo7R,YACPv7R,KAAKi0E,GAAI,EACTj0E,KAAKiwR,QAAU,EACfjwR,KAAKkwR,WAAa,EAClBlwR,KAAK4F,EAAIoyQ,iBAAiBh4Q,KAAKkwR,YAC/BlwR,KAAKkG,EAAI8xQ,iBAAiBh4Q,KAAKkwR,YAC/BlwR,KAAKkB,EAAI82Q,iBAAiBh4Q,KAAKkwR,YAGjCqL,UAAUr7R,UAAUs7R,YAAc,SAAUp7N,EAAQygC,GAClD7gG,KAAKi0E,EAAI7T,EACTpgE,KAAKy7R,UAAU56L,GACf,IAAI3/F,EAAI,EAER,MAAOA,EAAI2/F,EACT7gG,KAAK4F,EAAE1E,GAAKo6R,UAAUlL,aACtBpwR,KAAKkG,EAAEhF,GAAKo6R,UAAUlL,aACtBpwR,KAAKkB,EAAEA,GAAKo6R,UAAUlL,aACtBlvR,GAAK,GAITq6R,UAAUr7R,UAAUu7R,UAAY,SAAU56L,GACxC,MAAO7gG,KAAKkwR,WAAarvL,EACvB7gG,KAAK07R,oBAGP17R,KAAKiwR,QAAUpvL,GAGjB06L,UAAUr7R,UAAUw7R,kBAAoB,WACtC17R,KAAK4F,EAAI5F,KAAK4F,EAAEY,OAAOwxQ,iBAAiBh4Q,KAAKkwR,aAC7ClwR,KAAKkB,EAAIlB,KAAKkB,EAAEsF,OAAOwxQ,iBAAiBh4Q,KAAKkwR,aAC7ClwR,KAAKkG,EAAIlG,KAAKkG,EAAEM,OAAOwxQ,iBAAiBh4Q,KAAKkwR,aAC7ClwR,KAAKkwR,YAAc,GAGrBqL,UAAUr7R,UAAUy7R,QAAU,SAAUruH,EAAGpoK,EAAGgoB,EAAMknD,EAAKljE,GACvD,IAAI4K,EAOJ,OANA9b,KAAKiwR,QAAUhhR,KAAK4wD,IAAI7/D,KAAKiwR,QAAS77M,EAAM,GAExCp0E,KAAKiwR,SAAWjwR,KAAKkwR,YACvBlwR,KAAK07R,oBAGCxuQ,GACN,IAAK,IACHpR,EAAM9b,KAAK4F,EACX,MAEF,IAAK,IACHkW,EAAM9b,KAAKkB,EACX,MAEF,IAAK,IACH4a,EAAM9b,KAAKkG,EACX,MAEF,QACE4V,EAAM,GACN,QAGCA,EAAIs4D,IAAQt4D,EAAIs4D,KAASljE,KAC5B4K,EAAIs4D,GAAOknN,UAAUlL,cAGvBt0Q,EAAIs4D,GAAK,GAAKk5F,EACdxxJ,EAAIs4D,GAAK,GAAKlvE,GAGhBq2R,UAAUr7R,UAAU07R,YAAc,SAAUC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAI9nN,EAAKljE,GACvElR,KAAK27R,QAAQE,EAAIC,EAAI,IAAK1nN,EAAKljE,GAC/BlR,KAAK27R,QAAQI,EAAIC,EAAI,IAAK5nN,EAAKljE,GAC/BlR,KAAK27R,QAAQM,EAAIC,EAAI,IAAK9nN,EAAKljE,IAGjCqqR,UAAUr7R,UAAU6gI,QAAU,WAC5B,IAAIo7J,EAAU,IAAIZ,UAClBY,EAAQX,YAAYx7R,KAAKi0E,EAAGj0E,KAAKiwR,SACjC,IAAImM,EAAWp8R,KAAK4F,EAChBy2R,EAAYr8R,KAAKkG,EACjBo2R,EAAWt8R,KAAKkB,EAChBq8H,EAAO,EAEPv9H,KAAKi0E,IACPkoN,EAAQP,YAAYQ,EAAS,GAAG,GAAIA,EAAS,GAAG,GAAIE,EAAS,GAAG,GAAIA,EAAS,GAAG,GAAID,EAAU,GAAG,GAAIA,EAAU,GAAG,GAAI,GAAG,GACzH9+J,EAAO,GAGT,IAEIr8H,EAFAq7R,EAAMv8R,KAAKiwR,QAAU,EACrBpvL,EAAM7gG,KAAKiwR,QAGf,IAAK/uR,EAAIq8H,EAAMr8H,EAAI2/F,EAAK3/F,GAAK,EAC3Bi7R,EAAQP,YAAYQ,EAASG,GAAK,GAAIH,EAASG,GAAK,GAAID,EAASC,GAAK,GAAID,EAASC,GAAK,GAAIF,EAAUE,GAAK,GAAIF,EAAUE,GAAK,GAAIr7R,GAAG,GACrIq7R,GAAO,EAGT,OAAOJ,GAGT,IAAIK,UAAY,WACd,SAASr8R,IACP,OAAO,IAAIo7R,UAGb,SAASlL,EAAQoM,GACf,IACIv7R,EADA2/F,EAAM47L,EAAUxM,QAGpB,IAAK/uR,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBo6R,UAAUjL,QAAQoM,EAAU72R,EAAE1E,IAC9Bo6R,UAAUjL,QAAQoM,EAAUv7R,EAAEA,IAC9Bo6R,UAAUjL,QAAQoM,EAAUv2R,EAAEhF,IAC9Bu7R,EAAU72R,EAAE1E,GAAK,KACjBu7R,EAAUv7R,EAAEA,GAAK,KACjBu7R,EAAUv2R,EAAEhF,GAAK,KAGnBu7R,EAAUxM,QAAU,EACpBwM,EAAUxoN,GAAI,EAGhB,SAAS9lD,EAAMuuQ,GACb,IACIx7R,EADAy7R,EAAS35F,EAAQotF,aAEjBvvL,OAAwB36D,IAAlBw2P,EAAMzM,QAAwByM,EAAM92R,EAAEvE,OAASq7R,EAAMzM,QAI/D,IAHA0M,EAAOlB,UAAU56L,GACjB87L,EAAO1oN,EAAIyoN,EAAMzoN,EAEZ/yE,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBy7R,EAAOf,YAAYc,EAAM92R,EAAE1E,GAAG,GAAIw7R,EAAM92R,EAAE1E,GAAG,GAAIw7R,EAAMx2R,EAAEhF,GAAG,GAAIw7R,EAAMx2R,EAAEhF,GAAG,GAAIw7R,EAAMx7R,EAAEA,GAAG,GAAIw7R,EAAMx7R,EAAEA,GAAG,GAAIA,GAG/G,OAAOy7R,EAGT,IAAI35F,EAAU8sF,YAAY,EAAG3vR,EAAQkwR,GAErC,OADArtF,EAAQ70K,MAAQA,EACT60K,EAtCO,GAyChB,SAAS45F,kBACP58R,KAAKiwR,QAAU,EACfjwR,KAAKkwR,WAAa,EAClBlwR,KAAKi+Q,OAASjG,iBAAiBh4Q,KAAKkwR,YAGtC0M,gBAAgB18R,UAAU28R,SAAW,SAAUpK,GACzCzyR,KAAKiwR,UAAYjwR,KAAKkwR,aACxBlwR,KAAKi+Q,OAASj+Q,KAAKi+Q,OAAOz3Q,OAAOwxQ,iBAAiBh4Q,KAAKkwR,aACvDlwR,KAAKkwR,YAAc,GAGrBlwR,KAAKi+Q,OAAOj+Q,KAAKiwR,SAAWwC,EAC5BzyR,KAAKiwR,SAAW,GAGlB2M,gBAAgB18R,UAAU48R,cAAgB,WACxC,IAAI57R,EAEJ,IAAKA,EAAI,EAAGA,EAAIlB,KAAKiwR,QAAS/uR,GAAK,EACjCs7R,UAAUnM,QAAQrwR,KAAKi+Q,OAAO/8Q,IAGhClB,KAAKiwR,QAAU,GAGjB,IAAI8M,oBAAsB,WACxB,IAAIza,EAAK,CACP0a,mBAAoBA,EACpB3M,QAASA,GAEPJ,EAAU,EACVC,EAAa,EACbC,EAAOnY,iBAAiBkY,GAE5B,SAAS8M,IACP,IAAIC,EASJ,OAPIhN,GACFA,GAAW,EACXgN,EAAkB9M,EAAKF,IAEvBgN,EAAkB,IAAIL,gBAGjBK,EAGT,SAAS5M,EAAQ4M,GACf,IAAI/7R,EACA2/F,EAAMo8L,EAAgBhN,QAE1B,IAAK/uR,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBs7R,UAAUnM,QAAQ4M,EAAgBhf,OAAO/8Q,IAG3C+7R,EAAgBhN,QAAU,EAEtBA,IAAYC,IACdC,EAAOP,QAAQ,UAAUO,GACzBD,GAAc,GAGhBC,EAAKF,GAAWgN,EAChBhN,GAAW,EAGb,OAAO3N,EAzCiB,GA4CtB4a,qBAAuB,WACzB,IAAI1H,GAAa,OAEjB,SAAS2H,EAAiBzH,EAAU0H,EAAezH,GACjD,IACI0H,EACAC,EACAC,EACA12R,EACAF,EACAy2Q,EACAC,EACA8U,EACAqL,EATArH,EAAiBR,EAAQ3/H,UAUzBukI,EAAKv6R,KAAKo2R,UAEd,GAAIV,EAAW6E,EAAG,GAAGv5R,EAAIhB,KAAK41R,WAC5ByH,EAAW9C,EAAG,GAAGt5R,EAAE,GACnBs8R,GAAS,EACTpH,EAAiB,OACZ,GAAIT,GAAY6E,EAAGA,EAAGl5R,OAAS,GAAGL,EAAIhB,KAAK41R,WAChDyH,EAAW9C,EAAGA,EAAGl5R,OAAS,GAAGJ,EAAIs5R,EAAGA,EAAGl5R,OAAS,GAAGJ,EAAE,GAAKs5R,EAAGA,EAAGl5R,OAAS,GAAGqD,EAAE,GAO9E64R,GAAS,MACJ,CACL,IAGIxH,EACAC,EACAC,EALA/0R,EAAIi1R,EACJt1L,EAAM05L,EAAGl5R,OAAS,EAClBm0Q,GAAO,EAKX,MAAOA,EAAM,CAIX,GAHAugB,EAAUwE,EAAGr5R,GACb80R,EAAcuE,EAAGr5R,EAAI,GAEjB80R,EAAYh1R,EAAIhB,KAAK41R,WAAaF,EACpC,MAGEx0R,EAAI2/F,EAAM,EACZ3/F,GAAK,EAELs0Q,GAAO,EAQX,GAJAygB,EAAmBj2R,KAAKq2R,kBAAkBn1R,IAAM,GAChDq8R,EAAuB,IAAdxH,EAAQv6K,EACjB26K,EAAiBj1R,GAEZq8R,EAAQ,CACX,GAAI7H,GAAYM,EAAYh1R,EAAIhB,KAAK41R,WACnCzD,EAAO,OACF,GAAIuD,EAAWK,EAAQ/0R,EAAIhB,KAAK41R,WACrCzD,EAAO,MACF,CACL,IAAI+D,EAEAD,EAAiBU,OACnBT,EAAMD,EAAiBU,QAEvBT,EAAMlJ,cAAcC,gBAAgB8I,EAAQ7vR,EAAEonK,EAAGyoH,EAAQ7vR,EAAEhB,EAAG6wR,EAAQ70R,EAAEosK,EAAGyoH,EAAQ70R,EAAEgE,GAAGxD,IACxFu0R,EAAiBU,OAAST,GAG5B/D,EAAO+D,GAAKR,GAAYK,EAAQ/0R,EAAIhB,KAAK41R,cAAgBI,EAAYh1R,EAAIhB,KAAK41R,YAAcG,EAAQ/0R,EAAIhB,KAAK41R,cAG/G0H,EAAWtH,EAAY/0R,EAAI+0R,EAAY/0R,EAAE,GAAK80R,EAAQrxR,EAAE,GAG1D24R,EAAWtH,EAAQ90R,EAAE,GAOvB,IAJAm8Q,EAAOggB,EAAcnN,QACrB5S,EAAOggB,EAASn8R,EAAE,GAAGG,OACrBs0R,EAAQ3/H,UAAYmgI,EAEftvR,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzB,IAAKF,EAAI,EAAGA,EAAI02Q,EAAM12Q,GAAK,EACzB62R,EAAcD,EAASF,EAASn8R,EAAE2F,GAAGF,GAAK02R,EAASn8R,EAAE2F,GAAGF,IAAM22R,EAASp8R,EAAE2F,GAAGF,GAAK02R,EAASn8R,EAAE2F,GAAGF,IAAMwrR,EACrGiL,EAAcl8R,EAAE2F,GAAGF,GAAK62R,EACxBA,EAAcD,EAASF,EAASn3R,EAAEW,GAAGF,GAAK02R,EAASn3R,EAAEW,GAAGF,IAAM22R,EAASp3R,EAAEW,GAAGF,GAAK02R,EAASn3R,EAAEW,GAAGF,IAAMwrR,EACrGiL,EAAcl3R,EAAEW,GAAGF,GAAK62R,EACxBA,EAAcD,EAASF,EAASz3R,EAAEiB,GAAGF,GAAK02R,EAASz3R,EAAEiB,GAAGF,IAAM22R,EAAS13R,EAAEiB,GAAGF,GAAK02R,EAASz3R,EAAEiB,GAAGF,IAAMwrR,EACrGiL,EAAcx3R,EAAEiB,GAAGF,GAAK62R,EAK9B,SAASC,IACP,IAAI/H,EAAW11R,KAAKs+Q,KAAKob,cAAgB15R,KAAK41R,WAC1CnK,EAAWzrR,KAAKo2R,UAAU,GAAGp1R,EAAIhB,KAAK41R,WACtCxlJ,EAAUpwI,KAAKo2R,UAAUp2R,KAAKo2R,UAAU/0R,OAAS,GAAGL,EAAIhB,KAAK41R,WAC7DkB,EAAY92R,KAAK25R,SAAS7C,UAS9B,OAPMA,IAActB,IAAcsB,EAAYrL,GAAYiK,EAAWjK,GAAYqL,EAAY1mJ,GAAWslJ,EAAWtlJ,KAEjHpwI,KAAK25R,SAAS3jI,UAAY8gI,EAAYpB,EAAW11R,KAAK25R,SAAS3jI,UAAY,EAC3Eh2J,KAAKm9R,iBAAiBzH,EAAU11R,KAAK81R,GAAI91R,KAAK25R,WAGhD35R,KAAK25R,SAAS7C,UAAYpB,EACnB11R,KAAK81R,GAGd,SAAS4H,IACP19R,KAAKuxP,MAAQvxP,KAAK29R,qBAGpB,SAASC,EAAYC,EAAQC,GAC3B,GAAID,EAAO5N,UAAY6N,EAAO7N,SAAW4N,EAAO5pN,IAAM6pN,EAAO7pN,EAC3D,OAAO,EAGT,IAAI/yE,EACA2/F,EAAMg9L,EAAO5N,QAEjB,IAAK/uR,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB,GAAI28R,EAAOj4R,EAAE1E,GAAG,KAAO48R,EAAOl4R,EAAE1E,GAAG,IAAM28R,EAAOj4R,EAAE1E,GAAG,KAAO48R,EAAOl4R,EAAE1E,GAAG,IAAM28R,EAAO33R,EAAEhF,GAAG,KAAO48R,EAAO53R,EAAEhF,GAAG,IAAM28R,EAAO33R,EAAEhF,GAAG,KAAO48R,EAAO53R,EAAEhF,GAAG,IAAM28R,EAAO38R,EAAEA,GAAG,KAAO48R,EAAO58R,EAAEA,GAAG,IAAM28R,EAAO38R,EAAEA,GAAG,KAAO48R,EAAO58R,EAAEA,GAAG,GAC1N,OAAO,EAIX,OAAO,EAGT,SAAS24R,EAAUsC,GACZyB,EAAY59R,KAAK4F,EAAGu2R,KACvBn8R,KAAK4F,EAAI42R,UAAUruQ,MAAMguQ,GACzBn8R,KAAK29R,qBAAqBb,gBAC1B98R,KAAK29R,qBAAqBd,SAAS78R,KAAK4F,GACxC5F,KAAKg6R,MAAO,EACZh6R,KAAKuxP,MAAQvxP,KAAK29R,sBAItB,SAAS1D,IACP,GAAIj6R,KAAKksR,KAAKjF,WAAWiT,UAAYl6R,KAAKk6R,QAI1C,GAAKl6R,KAAKm6R,gBAAgB94R,OAK1B,GAAIrB,KAAKo6R,KACPp6R,KAAK65R,UAAU75R,KAAK81R,QADtB,CAOA,IAAIwE,EAUAp5R,EAZJlB,KAAKo6R,MAAO,EACZp6R,KAAKg6R,MAAO,EAIVM,EADEt6R,KAAKu6R,GACMv6R,KAAK81R,GACT91R,KAAKoQ,KAAKouQ,GACNx+Q,KAAKoQ,KAAKouQ,GAAG73Q,EAEb3G,KAAKoQ,KAAKutQ,GAAGh3Q,EAI5B,IAAIk6F,EAAM7gG,KAAKm6R,gBAAgB94R,OAE/B,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBo5R,EAAat6R,KAAKm6R,gBAAgBj5R,GAAGo5R,GAGvCt6R,KAAK65R,UAAUS,GACft6R,KAAKo6R,MAAO,EACZp6R,KAAKk6R,QAAUl6R,KAAKksR,KAAKjF,WAAWiT,aA9BlCl6R,KAAKg6R,MAAO,EAiChB,SAAS+D,EAAc7R,EAAM97Q,EAAM8c,GACjCltB,KAAK61R,SAAW,QAChB71R,KAAKs+Q,KAAO4N,EAAK5N,KACjBt+Q,KAAK0yI,UAAYw5I,EACjBlsR,KAAKksR,KAAOA,EACZlsR,KAAKoQ,KAAOA,EACZpQ,KAAK2G,GAAI,EACT3G,KAAKu6R,IAAK,EACVv6R,KAAKg6R,MAAO,EACZ,IAAIta,EAAoB,IAATxyP,EAAa9c,EAAKutQ,GAAGh3Q,EAAIyJ,EAAKouQ,GAAG73Q,EAChD3G,KAAK4F,EAAI42R,UAAUruQ,MAAMuxP,GACzB1/Q,KAAK81R,GAAK0G,UAAUruQ,MAAMnuB,KAAK4F,GAC/B5F,KAAK29R,qBAAuBZ,oBAAoBC,qBAChDh9R,KAAKuxP,MAAQvxP,KAAK29R,qBAClB39R,KAAKuxP,MAAMsrC,SAAS78R,KAAK4F,GACzB5F,KAAK++E,MAAQ2+M,EACb19R,KAAKm6R,gBAAkB,GAGzB,SAASK,EAAUC,GACjBz6R,KAAKm6R,gBAAgBn0R,KAAKy0R,GAC1Bz6R,KAAK0yI,UAAUgoJ,mBAAmB16R,MAQpC,SAASg+R,EAAuB9R,EAAM97Q,EAAM8c,GAC1CltB,KAAK61R,SAAW,QAChB71R,KAAKs+Q,KAAO4N,EAAK5N,KACjBt+Q,KAAKksR,KAAOA,EACZlsR,KAAK0yI,UAAYw5I,EACjBlsR,KAAK41R,WAAa1J,EAAK97Q,KAAKivQ,GAC5Br/Q,KAAKo2R,UAAqB,IAATlpQ,EAAa9c,EAAKutQ,GAAGh3Q,EAAIyJ,EAAKouQ,GAAG73Q,EAClD3G,KAAKq2R,kBAAoB,GACzBr2R,KAAK2G,GAAI,EACT3G,KAAKu6R,IAAK,EACV,IAAI15L,EAAM7gG,KAAKo2R,UAAU,GAAGn1R,EAAE,GAAGC,EAAEG,OACnCrB,KAAK4F,EAAI42R,UAAUpM,aACnBpwR,KAAK4F,EAAE41R,YAAYx7R,KAAKo2R,UAAU,GAAGn1R,EAAE,GAAGgzE,EAAG4sB,GAC7C7gG,KAAK81R,GAAK0G,UAAUruQ,MAAMnuB,KAAK4F,GAC/B5F,KAAK29R,qBAAuBZ,oBAAoBC,qBAChDh9R,KAAKuxP,MAAQvxP,KAAK29R,qBAClB39R,KAAKuxP,MAAMsrC,SAAS78R,KAAK4F,GACzB5F,KAAK82R,UAAYtB,EACjBx1R,KAAK++E,MAAQ2+M,EACb19R,KAAK25R,SAAW,CACd7C,UAAWtB,EACXx/H,UAAW,GAEbh2J,KAAKm6R,gBAAkB,CAACsD,EAA4Bp6O,KAAKrjD,OA5B3D+9R,EAAc79R,UAAUi9R,iBAAmBA,EAC3CY,EAAc79R,UAAU6yO,SAAWknD,EACnC8D,EAAc79R,UAAU25R,UAAYA,EACpCkE,EAAc79R,UAAUs6R,UAAYA,EA4BpCwD,EAAuB99R,UAAU6yO,SAAWknD,EAC5C+D,EAAuB99R,UAAUi9R,iBAAmBA,EACpDa,EAAuB99R,UAAU25R,UAAYA,EAC7CmE,EAAuB99R,UAAUs6R,UAAYA,EAE7C,IAAIyD,EAAmB,WACrB,IAAIC,EAAS7kB,YAEb,SAAS8kB,EAAwBjS,EAAM97Q,GACrCpQ,KAAK4F,EAAI42R,UAAUpM,aACnBpwR,KAAK4F,EAAE41R,aAAY,EAAM,GACzBx7R,KAAK29R,qBAAuBZ,oBAAoBC,qBAChDh9R,KAAKuxP,MAAQvxP,KAAK29R,qBAClB39R,KAAK29R,qBAAqBd,SAAS78R,KAAK4F,GACxC5F,KAAKL,EAAIyQ,EAAKzQ,EACdK,KAAKksR,KAAOA,EACZlsR,KAAKs+Q,KAAO4N,EAAK5N,KACjBt+Q,KAAKk6R,SAAW,EAChBl6R,KAAKq7R,6BAA6BnP,GAClClsR,KAAKH,EAAI01R,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKvQ,EAAG,EAAG,EAAGG,MACrDA,KAAKiB,EAAIs0R,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKnP,EAAG,EAAG,EAAGjB,MAEjDA,KAAKk7R,kBAAkB75R,OACzBrB,KAAK2G,GAAI,GAET3G,KAAK2G,GAAI,EACT3G,KAAKo+R,oBAsDT,OAlDAD,EAAwBj+R,UAAY,CAClC6+E,MAAO2+M,EACP3qD,SAAU,WACJ/yO,KAAKksR,KAAKjF,WAAWiT,UAAYl6R,KAAKk6R,UAI1Cl6R,KAAKk6R,QAAUl6R,KAAKksR,KAAKjF,WAAWiT,QACpCl6R,KAAKo7R,2BAEDp7R,KAAKg6R,MACPh6R,KAAKo+R,qBAGTA,iBAAkB,WAChB,IAAIC,EAAKr+R,KAAKH,EAAE+F,EAAE,GACd26J,EAAKvgK,KAAKH,EAAE+F,EAAE,GACd04R,EAAKt+R,KAAKiB,EAAE2E,EAAE,GAAK,EACnB0zR,EAAKt5R,KAAKiB,EAAE2E,EAAE,GAAK,EAEnB24R,EAAiB,IAAXv+R,KAAKL,EAEX6+R,EAAKx+R,KAAK4F,EACd44R,EAAG54R,EAAE,GAAG,GAAKy4R,EACbG,EAAG54R,EAAE,GAAG,GAAK26J,EAAK+4H,EAClBkF,EAAG54R,EAAE,GAAG,GAAK24R,EAAMF,EAAKC,EAAKD,EAAKC,EAClCE,EAAG54R,EAAE,GAAG,GAAK26J,EACbi+H,EAAG54R,EAAE,GAAG,GAAKy4R,EACbG,EAAG54R,EAAE,GAAG,GAAK26J,EAAK+4H,EAClBkF,EAAG54R,EAAE,GAAG,GAAK24R,EAAMF,EAAKC,EAAKD,EAAKC,EAClCE,EAAG54R,EAAE,GAAG,GAAK26J,EACbi+H,EAAGt9R,EAAE,GAAG,GAAKq9R,EAAMF,EAAKC,EAAKJ,EAASG,EAAKC,EAAKJ,EAChDM,EAAGt9R,EAAE,GAAG,GAAKq/J,EAAK+4H,EAClBkF,EAAGt9R,EAAE,GAAG,GAAKq9R,EAAMF,EAAKC,EAAKD,EAAKC,EAClCE,EAAGt9R,EAAE,GAAG,GAAKq/J,EAAK+4H,EAAK4E,EACvBM,EAAGt9R,EAAE,GAAG,GAAKq9R,EAAMF,EAAKC,EAAKJ,EAASG,EAAKC,EAAKJ,EAChDM,EAAGt9R,EAAE,GAAG,GAAKq/J,EAAK+4H,EAClBkF,EAAGt9R,EAAE,GAAG,GAAKq9R,EAAMF,EAAKC,EAAKD,EAAKC,EAClCE,EAAGt9R,EAAE,GAAG,GAAKq/J,EAAK+4H,EAAK4E,EACvBM,EAAGt4R,EAAE,GAAG,GAAKq4R,EAAMF,EAAKC,EAAKJ,EAASG,EAAKC,EAAKJ,EAChDM,EAAGt4R,EAAE,GAAG,GAAKq6J,EAAK+4H,EAClBkF,EAAGt4R,EAAE,GAAG,GAAKq4R,EAAMF,EAAKC,EAAKD,EAAKC,EAClCE,EAAGt4R,EAAE,GAAG,GAAKq6J,EAAK+4H,EAAK4E,EACvBM,EAAGt4R,EAAE,GAAG,GAAKq4R,EAAMF,EAAKC,EAAKJ,EAASG,EAAKC,EAAKJ,EAChDM,EAAGt4R,EAAE,GAAG,GAAKq6J,EAAK+4H,EAClBkF,EAAGt4R,EAAE,GAAG,GAAKq4R,EAAMF,EAAKC,EAAKD,EAAKC,EAClCE,EAAGt4R,EAAE,GAAG,GAAKq6J,EAAK+4H,EAAK4E,IAG3BroB,gBAAgB,CAAColB,0BAA2BkD,GACrCA,EA3Ec,GA8EnBM,EAAoB,WACtB,SAASC,EAAyBxS,EAAM97Q,GACtCpQ,KAAK4F,EAAI42R,UAAUpM,aACnBpwR,KAAK4F,EAAE41R,aAAY,EAAM,GACzBx7R,KAAKksR,KAAOA,EACZlsR,KAAKs+Q,KAAO4N,EAAK5N,KACjBt+Q,KAAKoQ,KAAOA,EACZpQ,KAAKk6R,SAAW,EAChBl6R,KAAKL,EAAIyQ,EAAKzQ,EACdK,KAAKq7R,6BAA6BnP,GAElB,IAAZ97Q,EAAKuuR,IACP3+R,KAAK4+R,GAAKrJ,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKwuR,GAAI,EAAG,EAAG5+R,MACvDA,KAAKg2K,GAAKu/G,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAK4lK,GAAI,EAAG,IAAMh2K,MAC1DA,KAAK6+R,cAAgB7+R,KAAK8+R,mBAE1B9+R,KAAK6+R,cAAgB7+R,KAAK++R,qBAG5B/+R,KAAK29Q,GAAK4X,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKutQ,GAAI,EAAG,EAAG39Q,MACvDA,KAAKH,EAAI01R,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKvQ,EAAG,EAAG,EAAGG,MACrDA,KAAKoG,EAAImvR,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKhK,EAAG,EAAG+yQ,UAAWn5Q,MAC7DA,KAAKg/R,GAAKzJ,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAK4uR,GAAI,EAAG,EAAGh/R,MACvDA,KAAKw6C,GAAK+6O,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKoqC,GAAI,EAAG,IAAMx6C,MAC1DA,KAAK29R,qBAAuBZ,oBAAoBC,qBAChDh9R,KAAK29R,qBAAqBd,SAAS78R,KAAK4F,GACxC5F,KAAKuxP,MAAQvxP,KAAK29R,qBAEd39R,KAAKk7R,kBAAkB75R,OACzBrB,KAAK2G,GAAI,GAET3G,KAAK2G,GAAI,EACT3G,KAAK6+R,iBAyFT,OArFAH,EAAyBx+R,UAAY,CACnC6+E,MAAO2+M,EACP3qD,SAAU,WACJ/yO,KAAKksR,KAAKjF,WAAWiT,UAAYl6R,KAAKk6R,UAI1Cl6R,KAAKk6R,QAAUl6R,KAAKksR,KAAKjF,WAAWiT,QACpCl6R,KAAKo7R,2BAEDp7R,KAAKg6R,MACPh6R,KAAK6+R,kBAGTC,kBAAmB,WACjB,IAaI59R,EACA+9R,EACAC,EACAC,EAhBAC,EAAiC,EAAxBnwR,KAAKq2C,MAAMtlD,KAAK29Q,GAAG/3Q,GAC5By5R,EAAkB,EAAVpwR,KAAKmqQ,GAASgmB,EAKtBE,GAAW,EACXC,EAAUv/R,KAAKg/R,GAAGp5R,EAClB45R,EAAWx/R,KAAK4+R,GAAGh5R,EACnB65R,EAAYz/R,KAAKw6C,GAAG50C,EACpB85R,EAAa1/R,KAAKg2K,GAAGpwK,EACrB+5R,EAAmB,EAAI1wR,KAAKmqQ,GAAKmmB,GAAoB,EAATH,GAC5CQ,EAAoB,EAAI3wR,KAAKmqQ,GAAKomB,GAAqB,EAATJ,GAK9CS,GAAc5wR,KAAKmqQ,GAAK,EAC5BymB,GAAc7/R,KAAKoG,EAAER,EACrB,IAAIsnP,EAAsB,IAAhBltP,KAAKoQ,KAAKzQ,GAAW,EAAI,EAGnC,IAFAK,KAAK4F,EAAEqqR,QAAU,EAEZ/uR,EAAI,EAAGA,EAAIk+R,EAAQl+R,GAAK,EAAG,CAC9B+9R,EAAMK,EAAWC,EAAUC,EAC3BN,EAAYI,EAAWG,EAAYC,EACnCP,EAAeG,EAAWK,EAAmBC,EAC7C,IAAItyH,EAAI2xH,EAAMhwR,KAAKoqR,IAAIwG,GACnB36R,EAAI+5R,EAAMhwR,KAAKypR,IAAImH,GACnBC,EAAW,IAANxyH,GAAiB,IAANpoK,EAAU,EAAIA,EAAI+J,KAAKwpQ,KAAKnrG,EAAIA,EAAIpoK,EAAIA,GACxD66R,EAAW,IAANzyH,GAAiB,IAANpoK,EAAU,GAAKooK,EAAIr+J,KAAKwpQ,KAAKnrG,EAAIA,EAAIpoK,EAAIA,GAC7DooK,IAAMttK,KAAKH,EAAE+F,EAAE,GACfV,IAAMlF,KAAKH,EAAE+F,EAAE,GACf5F,KAAK4F,EAAEg2R,YAAYtuH,EAAGpoK,EAAGooK,EAAIwyH,EAAKX,EAAeD,EAAYhyC,EAAKhoP,EAAI66R,EAAKZ,EAAeD,EAAYhyC,EAAK5/E,EAAIwyH,EAAKX,EAAeD,EAAYhyC,EAAKhoP,EAAI66R,EAAKZ,EAAeD,EAAYhyC,EAAKhsP,GAAG,GAMhMo+R,GAAYA,EACZO,GAAcR,EAAQnyC,IAG1B6xC,qBAAsB,WACpB,IAKI79R,EALAk+R,EAASnwR,KAAKq2C,MAAMtlD,KAAK29Q,GAAG/3Q,GAC5By5R,EAAkB,EAAVpwR,KAAKmqQ,GAASgmB,EACtBH,EAAMj/R,KAAKg/R,GAAGp5R,EACds5R,EAAYl/R,KAAKw6C,GAAG50C,EACpBu5R,EAAe,EAAIlwR,KAAKmqQ,GAAK6lB,GAAgB,EAATG,GAEpCS,EAAwB,IAAV5wR,KAAKmqQ,GACnBlsB,EAAsB,IAAhBltP,KAAKoQ,KAAKzQ,GAAW,EAAI,EAInC,IAHAkgS,GAAc7/R,KAAKoG,EAAER,EACrB5F,KAAK4F,EAAEqqR,QAAU,EAEZ/uR,EAAI,EAAGA,EAAIk+R,EAAQl+R,GAAK,EAAG,CAC9B,IAAIosK,EAAI2xH,EAAMhwR,KAAKoqR,IAAIwG,GACnB36R,EAAI+5R,EAAMhwR,KAAKypR,IAAImH,GACnBC,EAAW,IAANxyH,GAAiB,IAANpoK,EAAU,EAAIA,EAAI+J,KAAKwpQ,KAAKnrG,EAAIA,EAAIpoK,EAAIA,GACxD66R,EAAW,IAANzyH,GAAiB,IAANpoK,EAAU,GAAKooK,EAAIr+J,KAAKwpQ,KAAKnrG,EAAIA,EAAIpoK,EAAIA,GAC7DooK,IAAMttK,KAAKH,EAAE+F,EAAE,GACfV,IAAMlF,KAAKH,EAAE+F,EAAE,GACf5F,KAAK4F,EAAEg2R,YAAYtuH,EAAGpoK,EAAGooK,EAAIwyH,EAAKX,EAAeD,EAAYhyC,EAAKhoP,EAAI66R,EAAKZ,EAAeD,EAAYhyC,EAAK5/E,EAAIwyH,EAAKX,EAAeD,EAAYhyC,EAAKhoP,EAAI66R,EAAKZ,EAAeD,EAAYhyC,EAAKhsP,GAAG,GAChM2+R,GAAcR,EAAQnyC,EAGxBltP,KAAKuxP,MAAMlwP,OAAS,EACpBrB,KAAKuxP,MAAM,GAAKvxP,KAAK4F,IAGzBiwQ,gBAAgB,CAAColB,0BAA2ByD,GACrCA,EAzHe,GA4HpBsB,EAAoB,WACtB,SAASC,EAAyB/T,EAAM97Q,GACtCpQ,KAAK4F,EAAI42R,UAAUpM,aACnBpwR,KAAK4F,EAAEquE,GAAI,EACXj0E,KAAK29R,qBAAuBZ,oBAAoBC,qBAChDh9R,KAAK29R,qBAAqBd,SAAS78R,KAAK4F,GACxC5F,KAAKuxP,MAAQvxP,KAAK29R,qBAClB39R,KAAKksR,KAAOA,EACZlsR,KAAKs+Q,KAAO4N,EAAK5N,KACjBt+Q,KAAKk6R,SAAW,EAChBl6R,KAAKL,EAAIyQ,EAAKzQ,EACdK,KAAKq7R,6BAA6BnP,GAClClsR,KAAKH,EAAI01R,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKvQ,EAAG,EAAG,EAAGG,MACrDA,KAAKiB,EAAIs0R,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKnP,EAAG,EAAG,EAAGjB,MACrDA,KAAKoG,EAAImvR,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKhK,EAAG,EAAG,EAAGpG,MAEjDA,KAAKk7R,kBAAkB75R,OACzBrB,KAAK2G,GAAI,GAET3G,KAAK2G,GAAI,EACT3G,KAAKkgS,qBA8DT,OA1DAD,EAAyB//R,UAAY,CACnCggS,kBAAmB,WACjB,IAAI7B,EAAKr+R,KAAKH,EAAE+F,EAAE,GACd26J,EAAKvgK,KAAKH,EAAE+F,EAAE,GACdu6R,EAAKngS,KAAKiB,EAAE2E,EAAE,GAAK,EACnBw6R,EAAKpgS,KAAKiB,EAAE2E,EAAE,GAAK,EACnBwrB,EAAQwnP,MAAMunB,EAAIC,EAAIpgS,KAAKoG,EAAER,GAC7Bs4R,EAAS9sQ,GAAS,EAAIioP,aAC1Br5Q,KAAK4F,EAAEqqR,QAAU,EAEF,IAAXjwR,KAAKL,GAAsB,IAAXK,KAAKL,GACvBK,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAI5/H,EAAK6/H,EAAKhvQ,EAAOitQ,EAAK8B,EAAI5/H,EAAK6/H,EAAKhvQ,EAAOitQ,EAAK8B,EAAI5/H,EAAK6/H,EAAKlC,EAAQ,GAAG,GACrGl+R,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAI5/H,EAAK6/H,EAAKhvQ,EAAOitQ,EAAK8B,EAAI5/H,EAAK6/H,EAAKlC,EAAQG,EAAK8B,EAAI5/H,EAAK6/H,EAAKhvQ,EAAO,GAAG,GAEvF,IAAVA,GACFpxB,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAK/uQ,EAAOmvI,EAAK6/H,EAAI/B,EAAK8B,EAAK/uQ,EAAOmvI,EAAK6/H,EAAI/B,EAAK8B,EAAKjC,EAAQ39H,EAAK6/H,EAAI,GAAG,GACrGpgS,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAK/uQ,EAAOmvI,EAAK6/H,EAAI/B,EAAK8B,EAAKjC,EAAQ39H,EAAK6/H,EAAI/B,EAAK8B,EAAK/uQ,EAAOmvI,EAAK6/H,EAAI,GAAG,GACrGpgS,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAI5/H,EAAK6/H,EAAKhvQ,EAAOitQ,EAAK8B,EAAI5/H,EAAK6/H,EAAKhvQ,EAAOitQ,EAAK8B,EAAI5/H,EAAK6/H,EAAKlC,EAAQ,GAAG,GACrGl+R,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAI5/H,EAAK6/H,EAAKhvQ,EAAOitQ,EAAK8B,EAAI5/H,EAAK6/H,EAAKlC,EAAQG,EAAK8B,EAAI5/H,EAAK6/H,EAAKhvQ,EAAO,GAAG,GACrGpxB,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAK/uQ,EAAOmvI,EAAK6/H,EAAI/B,EAAK8B,EAAK/uQ,EAAOmvI,EAAK6/H,EAAI/B,EAAK8B,EAAKjC,EAAQ39H,EAAK6/H,EAAI,GAAG,GACrGpgS,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAK/uQ,EAAOmvI,EAAK6/H,EAAI/B,EAAK8B,EAAKjC,EAAQ39H,EAAK6/H,EAAI/B,EAAK8B,EAAK/uQ,EAAOmvI,EAAK6/H,EAAI,GAAG,KAErGpgS,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAI5/H,EAAK6/H,EAAI/B,EAAK8B,EAAKjC,EAAQ39H,EAAK6/H,EAAI/B,EAAK8B,EAAI5/H,EAAK6/H,EAAI,GAClFpgS,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAI5/H,EAAK6/H,EAAI/B,EAAK8B,EAAI5/H,EAAK6/H,EAAKlC,EAAQG,EAAK8B,EAAI5/H,EAAK6/H,EAAI,MAGpFpgS,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAI5/H,EAAK6/H,EAAKhvQ,EAAOitQ,EAAK8B,EAAI5/H,EAAK6/H,EAAKlC,EAAQG,EAAK8B,EAAI5/H,EAAK6/H,EAAKhvQ,EAAO,GAAG,GAEvF,IAAVA,GACFpxB,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAK/uQ,EAAOmvI,EAAK6/H,EAAI/B,EAAK8B,EAAK/uQ,EAAOmvI,EAAK6/H,EAAI/B,EAAK8B,EAAKjC,EAAQ39H,EAAK6/H,EAAI,GAAG,GACrGpgS,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAK/uQ,EAAOmvI,EAAK6/H,EAAI/B,EAAK8B,EAAKjC,EAAQ39H,EAAK6/H,EAAI/B,EAAK8B,EAAK/uQ,EAAOmvI,EAAK6/H,EAAI,GAAG,GACrGpgS,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAI5/H,EAAK6/H,EAAKhvQ,EAAOitQ,EAAK8B,EAAI5/H,EAAK6/H,EAAKhvQ,EAAOitQ,EAAK8B,EAAI5/H,EAAK6/H,EAAKlC,EAAQ,GAAG,GACrGl+R,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAI5/H,EAAK6/H,EAAKhvQ,EAAOitQ,EAAK8B,EAAI5/H,EAAK6/H,EAAKlC,EAAQG,EAAK8B,EAAI5/H,EAAK6/H,EAAKhvQ,EAAO,GAAG,GACrGpxB,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAK/uQ,EAAOmvI,EAAK6/H,EAAI/B,EAAK8B,EAAK/uQ,EAAOmvI,EAAK6/H,EAAI/B,EAAK8B,EAAKjC,EAAQ39H,EAAK6/H,EAAI,GAAG,GACrGpgS,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAK/uQ,EAAOmvI,EAAK6/H,EAAI/B,EAAK8B,EAAKjC,EAAQ39H,EAAK6/H,EAAI/B,EAAK8B,EAAK/uQ,EAAOmvI,EAAK6/H,EAAI,GAAG,GACrGpgS,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAI5/H,EAAK6/H,EAAKhvQ,EAAOitQ,EAAK8B,EAAI5/H,EAAK6/H,EAAKhvQ,EAAOitQ,EAAK8B,EAAI5/H,EAAK6/H,EAAKlC,EAAQ,GAAG,KAErGl+R,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAI5/H,EAAK6/H,EAAI/B,EAAK8B,EAAKjC,EAAQ39H,EAAK6/H,EAAI/B,EAAK8B,EAAI5/H,EAAK6/H,EAAI,GAAG,GACrFpgS,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAI5/H,EAAK6/H,EAAI/B,EAAK8B,EAAI5/H,EAAK6/H,EAAKlC,EAAQG,EAAK8B,EAAI5/H,EAAK6/H,EAAI,GAAG,GACrFpgS,KAAK4F,EAAEg2R,YAAYyC,EAAK8B,EAAI5/H,EAAK6/H,EAAI/B,EAAK8B,EAAKjC,EAAQ39H,EAAK6/H,EAAI/B,EAAK8B,EAAI5/H,EAAK6/H,EAAI,GAAG,MAI3FrtD,SAAU,WACJ/yO,KAAKksR,KAAKjF,WAAWiT,UAAYl6R,KAAKk6R,UAI1Cl6R,KAAKk6R,QAAUl6R,KAAKksR,KAAKjF,WAAWiT,QACpCl6R,KAAKo7R,2BAEDp7R,KAAKg6R,MACPh6R,KAAKkgS,sBAGTnhN,MAAO2+M,GAET7nB,gBAAgB,CAAColB,0BAA2BgF,GACrCA,EAlFe,GAqFxB,SAASI,EAAanU,EAAM97Q,EAAM8c,GAChC,IAAIuzD,EAEJ,GAAa,IAATvzD,GAAuB,IAATA,EAAY,CAC5B,IAAIozQ,EAAoB,IAATpzQ,EAAa9c,EAAKutQ,GAAKvtQ,EAAKouQ,GACvC37Q,EAAOy9R,EAAS35R,EAGlB85E,EADE59E,EAAKxB,OACA,IAAI28R,EAAuB9R,EAAM97Q,EAAM8c,GAEvC,IAAI6wQ,EAAc7R,EAAM97Q,EAAM8c,QAErB,IAATA,EACTuzD,EAAO,IAAIu/M,EAAkB9T,EAAM97Q,GACjB,IAAT8c,EACTuzD,EAAO,IAAIw9M,EAAiB/R,EAAM97Q,GAChB,IAAT8c,IACTuzD,EAAO,IAAIg+M,EAAkBvS,EAAM97Q,IAOrC,OAJIqwE,EAAK95E,GACPulR,EAAKwO,mBAAmBj6M,GAGnBA,EAGT,SAAS8/M,IACP,OAAOxC,EAGT,SAASyC,IACP,OAAOxC,EAGT,IAAI1b,EAAK,GAIT,OAHAA,EAAG+d,aAAeA,EAClB/d,EAAGie,uBAAyBA,EAC5Bje,EAAGke,gCAAkCA,EAC9Ble,EAxjBkB,GAwlBvBme,OAAS,WACX,IAAIC,EAAOzxR,KAAKoqR,IACZsH,EAAO1xR,KAAKypR,IACZkI,EAAO3xR,KAAK4xR,IACZC,EAAO7xR,KAAKmiB,MAEhB,SAAS2tD,IAiBP,OAhBA/+E,KAAKy1H,MAAM,GAAK,EAChBz1H,KAAKy1H,MAAM,GAAK,EAChBz1H,KAAKy1H,MAAM,GAAK,EAChBz1H,KAAKy1H,MAAM,GAAK,EAChBz1H,KAAKy1H,MAAM,GAAK,EAChBz1H,KAAKy1H,MAAM,GAAK,EAChBz1H,KAAKy1H,MAAM,GAAK,EAChBz1H,KAAKy1H,MAAM,GAAK,EAChBz1H,KAAKy1H,MAAM,GAAK,EAChBz1H,KAAKy1H,MAAM,GAAK,EAChBz1H,KAAKy1H,MAAM,IAAM,EACjBz1H,KAAKy1H,MAAM,IAAM,EACjBz1H,KAAKy1H,MAAM,IAAM,EACjBz1H,KAAKy1H,MAAM,IAAM,EACjBz1H,KAAKy1H,MAAM,IAAM,EACjBz1H,KAAKy1H,MAAM,IAAM,EACVz1H,KAGT,SAAS+gS,EAAO1B,GACd,GAAc,IAAVA,EACF,OAAOr/R,KAGT,IAAIghS,EAAON,EAAKrB,GAEZ4B,EAAON,EAAKtB,GAEhB,OAAOr/R,KAAKkhS,GAAGF,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAG3E,SAASG,EAAQ9B,GACf,GAAc,IAAVA,EACF,OAAOr/R,KAGT,IAAIghS,EAAON,EAAKrB,GAEZ4B,EAAON,EAAKtB,GAEhB,OAAOr/R,KAAKkhS,GAAG,EAAG,EAAG,EAAG,EAAG,EAAGF,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,GAG3E,SAASI,EAAQ/B,GACf,GAAc,IAAVA,EACF,OAAOr/R,KAGT,IAAIghS,EAAON,EAAKrB,GAEZ4B,EAAON,EAAKtB,GAEhB,OAAOr/R,KAAKkhS,GAAGF,EAAM,EAAGC,EAAM,EAAG,EAAG,EAAG,EAAG,GAAIA,EAAM,EAAGD,EAAM,EAAG,EAAG,EAAG,EAAG,GAG3E,SAASK,EAAQhC,GACf,GAAc,IAAVA,EACF,OAAOr/R,KAGT,IAAIghS,EAAON,EAAKrB,GAEZ4B,EAAON,EAAKtB,GAEhB,OAAOr/R,KAAKkhS,GAAGF,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAG3E,SAASM,EAAMC,EAAI5C,GACjB,OAAO3+R,KAAKkhS,GAAG,EAAGvC,EAAI4C,EAAI,EAAG,EAAG,GAGlC,SAASnqH,EAAK6gH,EAAIC,GAChB,OAAOl4R,KAAKshS,MAAMV,EAAK3I,GAAK2I,EAAK1I,IAGnC,SAASsJ,EAAavJ,EAAIoH,GACxB,IAAI2B,EAAON,EAAKrB,GAEZ4B,EAAON,EAAKtB,GAEhB,OAAOr/R,KAAKkhS,GAAGF,EAAMC,EAAM,EAAG,GAAIA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAGE,GAAG,EAAG,EAAG,EAAG,EAAGN,EAAK3I,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAGiJ,GAAGF,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGrM,SAASS,EAAMF,EAAI5C,EAAI+C,GAKrB,OAJKA,GAAa,IAAPA,IACTA,EAAK,GAGI,IAAPH,GAAmB,IAAP5C,GAAmB,IAAP+C,EACnB1hS,KAGFA,KAAKkhS,GAAGK,EAAI,EAAG,EAAG,EAAG,EAAG5C,EAAI,EAAG,EAAG,EAAG,EAAG+C,EAAI,EAAG,EAAG,EAAG,EAAG,GAGjE,SAASC,EAAa/6R,EAAGhH,EAAGq0E,EAAGt0E,EAAG+E,EAAGO,EAAGE,EAAGq2G,EAAGt6G,EAAG2F,EAAGF,EAAGqnJ,EAAG7nJ,EAAGhF,EAAG+E,EAAGrG,GAiBjE,OAhBAG,KAAKy1H,MAAM,GAAK7uH,EAChB5G,KAAKy1H,MAAM,GAAK71H,EAChBI,KAAKy1H,MAAM,GAAKxhD,EAChBj0E,KAAKy1H,MAAM,GAAK91H,EAChBK,KAAKy1H,MAAM,GAAK/wH,EAChB1E,KAAKy1H,MAAM,GAAKxwH,EAChBjF,KAAKy1H,MAAM,GAAKtwH,EAChBnF,KAAKy1H,MAAM,GAAKja,EAChBx7G,KAAKy1H,MAAM,GAAKv0H,EAChBlB,KAAKy1H,MAAM,GAAK5uH,EAChB7G,KAAKy1H,MAAM,IAAM9uH,EACjB3G,KAAKy1H,MAAM,IAAMu4B,EACjBhuJ,KAAKy1H,MAAM,IAAMtvH,EACjBnG,KAAKy1H,MAAM,IAAMt0H,EACjBnB,KAAKy1H,MAAM,IAAMvvH,EACjBlG,KAAKy1H,MAAM,IAAM51H,EACVG,KAGT,SAAS4hS,EAAUC,EAAIhkB,EAAIh9E,GAGzB,OAFAA,EAAKA,GAAM,EAEA,IAAPghG,GAAmB,IAAPhkB,GAAmB,IAAPh9E,EACnB7gM,KAAKkhS,GAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAGW,EAAIhkB,EAAIh9E,EAAI,GAG1D7gM,KAGT,SAAS0oP,EAAUo5C,EAAIC,EAAIztN,EAAI0tN,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAC7E,IAAI/T,EAAK7uR,KAAKy1H,MAEd,GAAW,IAAPqsK,GAAmB,IAAPC,GAAmB,IAAPztN,GAAmB,IAAP0tN,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,EAStI,OANA3T,EAAG,IAAMA,EAAG,IAAMiT,EAAKjT,EAAG,IAAM4T,EAChC5T,EAAG,IAAMA,EAAG,IAAMqT,EAAKrT,EAAG,IAAM6T,EAChC7T,EAAG,IAAMA,EAAG,IAAM0T,EAAK1T,EAAG,IAAM8T,EAChC9T,EAAG,KAAO+T,EAEV5iS,KAAK6iS,qBAAsB,EACpB7iS,KAGT,IAAI8iS,EAAKjU,EAAG,GACRkU,EAAKlU,EAAG,GACRx6M,EAAKw6M,EAAG,GACRmU,EAAKnU,EAAG,GACRoU,EAAKpU,EAAG,GACRqU,EAAKrU,EAAG,GACRsU,EAAKtU,EAAG,GACRuU,EAAKvU,EAAG,GACRwU,EAAKxU,EAAG,GACRyU,EAAKzU,EAAG,GACR0U,EAAK1U,EAAG,IACR2U,EAAK3U,EAAG,IACR4U,EAAK5U,EAAG,IACR6U,EAAK7U,EAAG,IACR8U,EAAK9U,EAAG,IACRtuH,EAAKsuH,EAAG,IAwBZ,OAjBAA,EAAG,GAAKiU,EAAKhB,EAAKiB,EAAKd,EAAK5tN,EAAKguN,EAAKW,EAAKP,EAC3C5T,EAAG,GAAKiU,EAAKf,EAAKgB,EAAKb,EAAK7tN,EAAKiuN,EAAKU,EAAKN,EAC3C7T,EAAG,GAAKiU,EAAKxuN,EAAKyuN,EAAKZ,EAAK9tN,EAAKkuN,EAAKS,EAAKL,EAC3C9T,EAAG,GAAKiU,EAAKd,EAAKe,EAAKX,EAAK/tN,EAAKmuN,EAAKQ,EAAKJ,EAC3C/T,EAAG,GAAKoU,EAAKnB,EAAKoB,EAAKjB,EAAKkB,EAAKd,EAAKe,EAAKX,EAC3C5T,EAAG,GAAKoU,EAAKlB,EAAKmB,EAAKhB,EAAKiB,EAAKb,EAAKc,EAAKV,EAC3C7T,EAAG,GAAKoU,EAAK3uN,EAAK4uN,EAAKf,EAAKgB,EAAKZ,EAAKa,EAAKT,EAC3C9T,EAAG,GAAKoU,EAAKjB,EAAKkB,EAAKd,EAAKe,EAAKX,EAAKY,EAAKR,EAC3C/T,EAAG,GAAKwU,EAAKvB,EAAKwB,EAAKrB,EAAKsB,EAAKlB,EAAKmB,EAAKf,EAC3C5T,EAAG,GAAKwU,EAAKtB,EAAKuB,EAAKpB,EAAKqB,EAAKjB,EAAKkB,EAAKd,EAC3C7T,EAAG,IAAMwU,EAAK/uN,EAAKgvN,EAAKnB,EAAKoB,EAAKhB,EAAKiB,EAAKb,EAC5C9T,EAAG,IAAMwU,EAAKrB,EAAKsB,EAAKlB,EAAKmB,EAAKf,EAAKgB,EAAKZ,EAC5C/T,EAAG,IAAM4U,EAAK3B,EAAK4B,EAAKzB,EAAK0B,EAAKtB,EAAK9hI,EAAKkiI,EAC5C5T,EAAG,IAAM4U,EAAK1B,EAAK2B,EAAKxB,EAAKyB,EAAKrB,EAAK/hI,EAAKmiI,EAC5C7T,EAAG,IAAM4U,EAAKnvN,EAAKovN,EAAKvB,EAAKwB,EAAKpB,EAAKhiI,EAAKoiI,EAC5C9T,EAAG,IAAM4U,EAAKzB,EAAK0B,EAAKtB,EAAKuB,EAAKnB,EAAKjiI,EAAKqiI,EAC5C5iS,KAAK6iS,qBAAsB,EACpB7iS,KAGT,SAAS4jS,IAMP,OALK5jS,KAAK6iS,sBACR7iS,KAAK6jS,YAAgC,IAAlB7jS,KAAKy1H,MAAM,IAA8B,IAAlBz1H,KAAKy1H,MAAM,IAA8B,IAAlBz1H,KAAKy1H,MAAM,IAA8B,IAAlBz1H,KAAKy1H,MAAM,IAA8B,IAAlBz1H,KAAKy1H,MAAM,IAA8B,IAAlBz1H,KAAKy1H,MAAM,IAA8B,IAAlBz1H,KAAKy1H,MAAM,IAA8B,IAAlBz1H,KAAKy1H,MAAM,IAA8B,IAAlBz1H,KAAKy1H,MAAM,IAA8B,IAAlBz1H,KAAKy1H,MAAM,IAA+B,IAAnBz1H,KAAKy1H,MAAM,KAAgC,IAAnBz1H,KAAKy1H,MAAM,KAAgC,IAAnBz1H,KAAKy1H,MAAM,KAAgC,IAAnBz1H,KAAKy1H,MAAM,KAAgC,IAAnBz1H,KAAKy1H,MAAM,KAAgC,IAAnBz1H,KAAKy1H,MAAM,KAC5Xz1H,KAAK6iS,qBAAsB,GAGtB7iS,KAAK6jS,UAGd,SAASC,EAAOC,GACd,IAAI7iS,EAAI,EAER,MAAOA,EAAI,GAAI,CACb,GAAI6iS,EAAKtuK,MAAMv0H,KAAOlB,KAAKy1H,MAAMv0H,GAC/B,OAAO,EAGTA,GAAK,EAGP,OAAO,EAGT,SAASitB,EAAM41Q,GACb,IAAI7iS,EAEJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB6iS,EAAKtuK,MAAMv0H,GAAKlB,KAAKy1H,MAAMv0H,GAG7B,OAAO6iS,EAGT,SAASC,EAAevuK,GACtB,IAAIv0H,EAEJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBlB,KAAKy1H,MAAMv0H,GAAKu0H,EAAMv0H,GAI1B,SAAS+iS,EAAa32H,EAAGpoK,EAAG68K,GAC1B,MAAO,CACLzU,EAAGA,EAAIttK,KAAKy1H,MAAM,GAAKvwH,EAAIlF,KAAKy1H,MAAM,GAAKssD,EAAI/hL,KAAKy1H,MAAM,GAAKz1H,KAAKy1H,MAAM,IAC1EvwH,EAAGooK,EAAIttK,KAAKy1H,MAAM,GAAKvwH,EAAIlF,KAAKy1H,MAAM,GAAKssD,EAAI/hL,KAAKy1H,MAAM,GAAKz1H,KAAKy1H,MAAM,IAC1EssD,EAAGzU,EAAIttK,KAAKy1H,MAAM,GAAKvwH,EAAIlF,KAAKy1H,MAAM,GAAKssD,EAAI/hL,KAAKy1H,MAAM,IAAMz1H,KAAKy1H,MAAM,KAQ/E,SAASyuK,EAAS52H,EAAGpoK,EAAG68K,GACtB,OAAOzU,EAAIttK,KAAKy1H,MAAM,GAAKvwH,EAAIlF,KAAKy1H,MAAM,GAAKssD,EAAI/hL,KAAKy1H,MAAM,GAAKz1H,KAAKy1H,MAAM,IAGhF,SAAS0uK,EAAS72H,EAAGpoK,EAAG68K,GACtB,OAAOzU,EAAIttK,KAAKy1H,MAAM,GAAKvwH,EAAIlF,KAAKy1H,MAAM,GAAKssD,EAAI/hL,KAAKy1H,MAAM,GAAKz1H,KAAKy1H,MAAM,IAGhF,SAAS2uK,EAAS92H,EAAGpoK,EAAG68K,GACtB,OAAOzU,EAAIttK,KAAKy1H,MAAM,GAAKvwH,EAAIlF,KAAKy1H,MAAM,GAAKssD,EAAI/hL,KAAKy1H,MAAM,IAAMz1H,KAAKy1H,MAAM,IAGjF,SAAS4uK,IACP,IAAIC,EAActkS,KAAKy1H,MAAM,GAAKz1H,KAAKy1H,MAAM,GAAKz1H,KAAKy1H,MAAM,GAAKz1H,KAAKy1H,MAAM,GACzE7uH,EAAI5G,KAAKy1H,MAAM,GAAK6uK,EACpB1kS,GAAKI,KAAKy1H,MAAM,GAAK6uK,EACrBrwN,GAAKj0E,KAAKy1H,MAAM,GAAK6uK,EACrB3kS,EAAIK,KAAKy1H,MAAM,GAAK6uK,EACpB5/R,GAAK1E,KAAKy1H,MAAM,GAAKz1H,KAAKy1H,MAAM,IAAMz1H,KAAKy1H,MAAM,GAAKz1H,KAAKy1H,MAAM,KAAO6uK,EACxEr/R,IAAMjF,KAAKy1H,MAAM,GAAKz1H,KAAKy1H,MAAM,IAAMz1H,KAAKy1H,MAAM,GAAKz1H,KAAKy1H,MAAM,KAAO6uK,EACzEC,EAAgB,IAAI9D,OAOxB,OANA8D,EAAc9uK,MAAM,GAAK7uH,EACzB29R,EAAc9uK,MAAM,GAAK71H,EACzB2kS,EAAc9uK,MAAM,GAAKxhD,EACzBswN,EAAc9uK,MAAM,GAAK91H,EACzB4kS,EAAc9uK,MAAM,IAAM/wH,EAC1B6/R,EAAc9uK,MAAM,IAAMxwH,EACnBs/R,EAGT,SAASC,EAAa7mB,GACpB,IAAI4mB,EAAgBvkS,KAAKqkS,mBACzB,OAAOE,EAAcE,kBAAkB9mB,EAAG,GAAIA,EAAG,GAAIA,EAAG,IAAM,GAGhE,SAAS+mB,EAAcC,GACrB,IAAIzjS,EACA2/F,EAAM8jM,EAAItjS,OACVujS,EAAS,GAEb,IAAK1jS,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB0jS,EAAO1jS,GAAKsjS,EAAaG,EAAIzjS,IAG/B,OAAO0jS,EAGT,SAASC,EAAoB/S,EAAKC,EAAKC,GACrC,IAAIl2Q,EAAM47P,iBAAiB,UAAW,GAEtC,GAAI13Q,KAAK4jS,aACP9nR,EAAI,GAAKg2Q,EAAI,GACbh2Q,EAAI,GAAKg2Q,EAAI,GACbh2Q,EAAI,GAAKi2Q,EAAI,GACbj2Q,EAAI,GAAKi2Q,EAAI,GACbj2Q,EAAI,GAAKk2Q,EAAI,GACbl2Q,EAAI,GAAKk2Q,EAAI,OACR,CACL,IAAIqM,EAAKr+R,KAAKy1H,MAAM,GAChB8qC,EAAKvgK,KAAKy1H,MAAM,GAChBqvK,EAAK9kS,KAAKy1H,MAAM,GAChBsvK,EAAK/kS,KAAKy1H,MAAM,GAChBuvK,EAAMhlS,KAAKy1H,MAAM,IACjBwvK,EAAMjlS,KAAKy1H,MAAM,IACrB35G,EAAI,GAAKg2Q,EAAI,GAAKuM,EAAKvM,EAAI,GAAKgT,EAAKE,EACrClpR,EAAI,GAAKg2Q,EAAI,GAAKvxH,EAAKuxH,EAAI,GAAKiT,EAAKE,EACrCnpR,EAAI,GAAKi2Q,EAAI,GAAKsM,EAAKtM,EAAI,GAAK+S,EAAKE,EACrClpR,EAAI,GAAKi2Q,EAAI,GAAKxxH,EAAKwxH,EAAI,GAAKgT,EAAKE,EACrCnpR,EAAI,GAAKk2Q,EAAI,GAAKqM,EAAKrM,EAAI,GAAK8S,EAAKE,EACrClpR,EAAI,GAAKk2Q,EAAI,GAAKzxH,EAAKyxH,EAAI,GAAK+S,EAAKE,EAGvC,OAAOnpR,EAGT,SAAS2oR,EAAkBn3H,EAAGpoK,EAAG68K,GAC/B,IAAIjmK,EAQJ,OALEA,EADE9b,KAAK4jS,aACD,CAACt2H,EAAGpoK,EAAG68K,GAEP,CAACzU,EAAIttK,KAAKy1H,MAAM,GAAKvwH,EAAIlF,KAAKy1H,MAAM,GAAKssD,EAAI/hL,KAAKy1H,MAAM,GAAKz1H,KAAKy1H,MAAM,IAAK63C,EAAIttK,KAAKy1H,MAAM,GAAKvwH,EAAIlF,KAAKy1H,MAAM,GAAKssD,EAAI/hL,KAAKy1H,MAAM,GAAKz1H,KAAKy1H,MAAM,IAAK63C,EAAIttK,KAAKy1H,MAAM,GAAKvwH,EAAIlF,KAAKy1H,MAAM,GAAKssD,EAAI/hL,KAAKy1H,MAAM,IAAMz1H,KAAKy1H,MAAM,KAGlO35G,EAGT,SAASopR,EAAwB53H,EAAGpoK,GAClC,GAAIlF,KAAK4jS,aACP,OAAOt2H,EAAI,IAAMpoK,EAGnB,IAAI2pR,EAAK7uR,KAAKy1H,MACd,OAAOxmH,KAAKmiB,MAAyC,KAAlCk8I,EAAIuhH,EAAG,GAAK3pR,EAAI2pR,EAAG,GAAKA,EAAG,MAAc,IAAM,IAAM5/Q,KAAKmiB,MAAyC,KAAlCk8I,EAAIuhH,EAAG,GAAK3pR,EAAI2pR,EAAG,GAAKA,EAAG,MAAc,IAG/H,SAASsW,IAMP,IAAIjkS,EAAI,EACJu0H,EAAQz1H,KAAKy1H,MACb2vK,EAAW,YACXx/R,EAAI,IAER,MAAO1E,EAAI,GACTkkS,GAAYtE,EAAKrrK,EAAMv0H,GAAK0E,GAAKA,EACjCw/R,GAAkB,KAANlkS,EAAW,IAAM,IAC7BA,GAAK,EAGP,OAAOkkS,EAGT,SAASC,EAAoBnmQ,GAC3B,IAAIt5B,EAAI,IAER,OAAIs5B,EAAM,MAAYA,EAAM,GAAKA,GAAO,MAAYA,EAAM,EACjD4hQ,EAAK5hQ,EAAMt5B,GAAKA,EAGlBs5B,EAGT,SAASomQ,IAMP,IAAI7vK,EAAQz1H,KAAKy1H,MAEb95G,EAAK0pR,EAAoB5vK,EAAM,IAE/BxqG,EAAKo6Q,EAAoB5vK,EAAM,IAE/Bt/F,EAAKkvQ,EAAoB5vK,EAAM,IAE/Br/F,EAAKivQ,EAAoB5vK,EAAM,IAE/Bp/F,EAAKgvQ,EAAoB5vK,EAAM,KAE/Bn/F,EAAK+uQ,EAAoB5vK,EAAM,KAEnC,MAAO,UAAY95G,EAAK,IAAMsP,EAAK,IAAMkL,EAAK,IAAMC,EAAK,IAAMC,EAAK,IAAMC,EAAK,IAGjF,OAAO,WACLt2B,KAAK++E,MAAQA,EACb/+E,KAAK+gS,OAASA,EACd/gS,KAAKmhS,QAAUA,EACfnhS,KAAKohS,QAAUA,EACfphS,KAAKqhS,QAAUA,EACfrhS,KAAKo3K,KAAOA,EACZp3K,KAAKwhS,aAAeA,EACpBxhS,KAAKshS,MAAQA,EACbthS,KAAKyhS,MAAQA,EACbzhS,KAAK2hS,aAAeA,EACpB3hS,KAAK4hS,UAAYA,EACjB5hS,KAAK0oP,UAAYA,EACjB1oP,KAAKikS,aAAeA,EACpBjkS,KAAKkkS,SAAWA,EAChBlkS,KAAKmkS,SAAWA,EAChBnkS,KAAKokS,SAAWA,EAChBpkS,KAAKykS,kBAAoBA,EACzBzkS,KAAK6kS,oBAAsBA,EAC3B7kS,KAAKklS,wBAA0BA,EAC/BllS,KAAKmlS,MAAQA,EACbnlS,KAAKslS,QAAUA,EACftlS,KAAKmuB,MAAQA,EACbnuB,KAAKgkS,eAAiBA,EACtBhkS,KAAK8jS,OAASA,EACd9jS,KAAK0kS,cAAgBA,EACrB1kS,KAAKwkS,aAAeA,EACpBxkS,KAAKqkS,iBAAmBA,EACxBrkS,KAAKkhS,GAAKlhS,KAAK0oP,UACf1oP,KAAK4jS,WAAaA,EAClB5jS,KAAK6jS,WAAY,EACjB7jS,KAAK6iS,qBAAsB,EAC3B7iS,KAAKy1H,MAAQiiJ,iBAAiB,UAAW,IACzC13Q,KAAK++E,SAxaI,GA4ab,SAASwmN,UAAUzqR,GAAuV,OAA1OyqR,UAArD,oBAAX7/R,QAAoD,kBAApBA,OAAOC,SAAqC,SAAiBmV,GAAO,cAAcA,GAA6B,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXpV,QAAyBoV,EAAI7a,cAAgByF,QAAUoV,IAAQpV,OAAOxF,UAAY,gBAAkB4a,GAAiByqR,UAAUzqR,GAC3X,IAAI0qR,OAAS,GACT3+E,WAAa,mBACbq4D,cAAgB,sBAChB4G,SAAW,GAEf,SAAS2f,YAAYxmP,GACnBy2N,gBAAgBz2N,GAGlB,SAAS0tO,oBACY,IAAf9lE,WACF0kE,iBAAiBoB,iBAAiBzN,cAAer4D,WAAYi/D,UAE7DyF,iBAAiBoB,mBAIrB,SAAS+Y,qBAAqBlwB,GAC5BkG,mBAAmBlG,GAGrB,SAASmwB,UAAU9nE,GACjBm+C,YAAYn+C,GAGd,SAAS6iD,cAAcnlQ,GAKrB,OAJmB,IAAfsrM,aACFtrM,EAAO2jQ,cAAgB5kQ,KAAKS,MAAMmkQ,gBAG7BqM,iBAAiB7K,cAAcnlQ,GAGxC,SAASqqR,WAAWthS,GAClB,GAAqB,kBAAVA,EACT,OAAQA,GACN,IAAK,OACHw3Q,wBAAwB,KACxB,MAEF,QACA,IAAK,SACHA,wBAAwB,IACxB,MAEF,IAAK,MACHA,wBAAwB,IACxB,WAEMj/L,MAAMv4E,IAAUA,EAAQ,GAClCw3Q,wBAAwBx3Q,GAGtBy3Q,2BAA6B,GAC/BzC,aAAY,GAEZA,aAAY,GAIhB,SAASusB,YACP,MAA4B,qBAAdjpP,UAGhB,SAASkpP,cAAc54Q,EAAMynF,GACd,gBAATznF,GACF0uP,qBAAqBjnK,GAIzB,SAASoxL,WAAW1yR,GAClB,OAAQA,GACN,IAAK,kBACH,OAAOkiR,gBAET,IAAK,uBACH,OAAO2H,qBAET,IAAK,SACH,OAAOuD,OAET,QACE,OAAO,MAiCb,SAASuF,aACqB,aAAxBrwP,SAAS6qF,aACXngE,cAAc4lO,yBACdtZ,oBAIJ,SAASuZ,iBAAiB/0B,GAGxB,IAFA,IAAIg1B,EAAOp3P,YAAY33B,MAAM,KAEpBlW,EAAI,EAAGA,EAAIilS,EAAK9kS,OAAQH,GAAK,EAAG,CACvC,IAAIua,EAAO0qR,EAAKjlS,GAAGkW,MAAM,KAEzB,GAAIoE,mBAAmBC,EAAK,KAAO01P,EAEjC,OAAO31P,mBAAmBC,EAAK,IAInC,OAAO,KAhDT+pR,OAAOzuB,KAAOwU,iBAAiBxU,KAC/ByuB,OAAOlmK,MAAQisJ,iBAAiBjsJ,MAChCkmK,OAAO9vB,gBAAkB+vB,YACzBD,OAAOlc,YAAciC,iBAAiBjC,YACtCkc,OAAOlb,SAAWiB,iBAAiBjB,SACnCkb,OAAOjb,aAAegB,iBAAiBhB,aACvCib,OAAO3gL,KAAO0mK,iBAAiB1mK,KAC/B2gL,OAAO7Y,iBAAmBA,iBAC1B6Y,OAAOvZ,kBAAoBV,iBAAiBU,kBAC5CuZ,OAAO9kB,cAAgBA,cACvB8kB,OAAOE,qBAAuBA,qBAC9BF,OAAOvc,OAASsC,iBAAiBtC,OAEjCuc,OAAO7b,YAAc4B,iBAAiB5B,YACtC6b,OAAOriB,QAAUoI,iBAAiBpI,QAClCqiB,OAAOI,WAAaA,WACpBJ,OAAOK,UAAYA,UACnBL,OAAOM,cAAgBA,cACvBN,OAAOrjH,OAASopG,iBAAiBppG,OACjCqjH,OAAOzY,SAAWxB,iBAAiBwB,SACnCyY,OAAOruB,UAAYoU,iBAAiBpU,UACpCquB,OAAOluB,KAAOiU,iBAAiBjU,KAC/BkuB,OAAOjuB,OAASgU,iBAAiBhU,OACjCiuB,OAAOrZ,wBAA0BZ,iBAAiBY,wBAClDqZ,OAAOY,aAAe7wB,aACtBiwB,OAAOa,YAAcV,UACrBH,OAAOc,aAAeP,WACtBP,OAAOj/Q,QAAU,QAwBjB,IAAIwoB,YAAc,GAElB,GAAI83K,WAAY,CACd,IAAI0/E,QAAU5wP,SAASk1B,qBAAqB,UACxCv4B,MAAQi0P,QAAQllS,OAAS,EACzBmlS,SAAWD,QAAQj0P,QAAU,CAC/B+3B,IAAK,IAEPt7B,YAAcy3P,SAASn8N,IAAMm8N,SAASn8N,IAAIn5D,QAAQ,aAAc,IAAM,GAEtE40Q,SAAWogB,iBAAiB,YAG9B,IAAID,wBAA0B9lO,YAAY6lO,WAAY,KAEtD,IACgF,WAAxBT,UAAUj7I,UAA8F,yBAI9J,MAAOx7I,MAGT,IAAI23R,eAAiB,WACnB,IAAInkB,EAAK,GACLokB,EAAY,GAIhB,SAASC,EAAiBjiB,EAAI1hF,GACvB0jG,EAAUhiB,KACbgiB,EAAUhiB,GAAM1hF,GAIpB,SAAS4jG,EAAYliB,EAAIwH,EAAM97Q,GAC7B,OAAO,IAAIs2R,EAAUhiB,GAAIwH,EAAM97Q,GAGjC,OAbAkyQ,EAAGqkB,iBAAmBA,EACtBrkB,EAAGskB,YAAcA,EAYVtkB,EAhBY,GAmBrB,SAASukB,iBAmDT,SAASC,gBAgZT,SAASC,0BAjcTF,cAAc3mS,UAAU8mS,uBAAyB,aAEjDH,cAAc3mS,UAAU+mS,mBAAqB,aAE7CJ,cAAc3mS,UAAU28R,SAAW,SAAUzsR,GAC3C,IAAKpQ,KAAKogE,OAAQ,CAEhBhwD,EAAKknR,GAAG5kJ,UAAUgoJ,mBAAmBtqR,EAAKknR,IAC1C,IAAI7E,EAAY,CACdiK,MAAOtsR,EAAKknR,GACZlnR,KAAMA,EACNutR,qBAAsBZ,oBAAoBC,sBAE5Ch9R,KAAKi+Q,OAAOj4Q,KAAKysR,GACjBzyR,KAAKinS,mBAAmBxU,GAEpBzyR,KAAKm7R,aACP/qR,EAAK82R,kBAKXL,cAAc3mS,UAAUq9H,KAAO,SAAU2uJ,EAAM97Q,GAC7CpQ,KAAKi+Q,OAAS,GACdj+Q,KAAKksR,KAAOA,EACZlsR,KAAKq7R,6BAA6BnP,GAClClsR,KAAKgnS,uBAAuB9a,EAAM97Q,GAClCpQ,KAAKk6R,QAAU5kB,oBACft1Q,KAAKogE,QAAS,EACdpgE,KAAK2G,GAAI,EAEL3G,KAAKk7R,kBAAkB75R,OACzBrB,KAAK2G,GAAI,EAET3G,KAAK+yO,UAAS,IAIlB8zD,cAAc3mS,UAAUinS,YAAc,WAChCnnS,KAAKksR,KAAKjF,WAAWiT,UAAYl6R,KAAKk6R,UAI1Cl6R,KAAKk6R,QAAUl6R,KAAKksR,KAAKjF,WAAWiT,QACpCl6R,KAAKo7R,6BAGPvlB,gBAAgB,CAAColB,0BAA2B4L,eAI5ChxB,gBAAgB,CAACgxB,eAAgBC,cAEjCA,aAAa5mS,UAAU8mS,uBAAyB,SAAU9a,EAAM97Q,GAC9DpQ,KAAKiB,EAAIs0R,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKnP,EAAG,EAAG,IAAMjB,MACxDA,KAAK0E,EAAI6wR,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAK1L,EAAG,EAAG,IAAM1E,MACxDA,KAAKkG,EAAIqvR,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKlK,EAAG,EAAG,EAAGlG,MACrDA,KAAKonS,OAAS,EACdpnS,KAAKqnS,OAAS,EACdrnS,KAAK+yO,SAAW/yO,KAAKmnS,YACrBnnS,KAAKmG,EAAIiK,EAAKjK,EACdnG,KAAKm7R,cAAgBn7R,KAAKiB,EAAEk5R,gBAAgB94R,UAAYrB,KAAK0E,EAAEy1R,gBAAgB94R,UAAYrB,KAAKkG,EAAEi0R,gBAAgB94R,QAGpHylS,aAAa5mS,UAAU+mS,mBAAqB,SAAUxU,GACpDA,EAAU6U,UAAY,IAGxBR,aAAa5mS,UAAUqnS,oBAAsB,SAAUtmS,EAAGyD,EAAG8iS,EAAajX,EAAakX,GACrF,IAAIthB,EAAW,GAEXzhR,GAAK,EACPyhR,EAASngR,KAAK,CACZ/E,EAAGA,EACHyD,EAAGA,IAEIzD,GAAK,EACdklR,EAASngR,KAAK,CACZ/E,EAAGA,EAAI,EACPyD,EAAGA,EAAI,KAGTyhR,EAASngR,KAAK,CACZ/E,EAAGA,EACHyD,EAAG,IAELyhR,EAASngR,KAAK,CACZ/E,EAAG,EACHyD,EAAGA,EAAI,KAIX,IACIxD,EAEAwmS,EAHAC,EAAgB,GAEhB9mM,EAAMslL,EAAS9kR,OAGnB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAAG,CAIzB,IAAI0mS,EACAC,EAFN,GAFAH,EAAYvhB,EAASjlR,KAEfwmS,EAAUhjS,EAAI+iS,EAAsBlX,GAAemX,EAAUzmS,EAAIwmS,EAAsBlX,EAAciX,GAKvGI,EADEF,EAAUzmS,EAAIwmS,GAAuBlX,EAC9B,GAECmX,EAAUzmS,EAAIwmS,EAAsBlX,GAAeiX,EAI7DK,EADEH,EAAUhjS,EAAI+iS,GAAuBlX,EAAciX,EAC5C,GAECE,EAAUhjS,EAAI+iS,EAAsBlX,GAAeiX,EAG/DG,EAAc3hS,KAAK,CAAC4hS,EAAQC,IAQhC,OAJKF,EAActmS,QACjBsmS,EAAc3hS,KAAK,CAAC,EAAG,IAGlB2hS,GAGTb,aAAa5mS,UAAU4nS,iBAAmB,SAAUR,GAClD,IAAIpmS,EACA2/F,EAAMymM,EAAUjmS,OAEpB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBwvR,mBAAmBL,QAAQiX,EAAUpmS,IAIvC,OADAomS,EAAUjmS,OAAS,EACZimS,GAGTR,aAAa5mS,UAAU6nS,cAAgB,SAAU1N,GAC/C,IAAIp5R,EACAyD,EAwCAsjS,EACA9mS,EAvCJ,GAAIlB,KAAKg6R,MAAQK,EAAe,CAC9B,IAAIn0R,EAAIlG,KAAKkG,EAAEN,EAAI,IAAM,IAsBzB,GApBIM,EAAI,IACNA,GAAK,GAILjF,EADEjB,KAAKiB,EAAE2E,EAAI,EACT,EAAIM,EACClG,KAAKiB,EAAE2E,EAAI,EAChB,EAAIM,EAEJlG,KAAKiB,EAAE2E,EAAIM,EAIfxB,EADE1E,KAAK0E,EAAEkB,EAAI,EACT,EAAIM,EACClG,KAAK0E,EAAEkB,EAAI,EAChB,EAAIM,EAEJlG,KAAK0E,EAAEkB,EAAIM,EAGbjF,EAAIyD,EAAG,CACT,IAAIujS,EAAKhnS,EACTA,EAAIyD,EACJA,EAAIujS,EAGNhnS,EAA4B,KAAxBgO,KAAKmiB,MAAU,IAAJnwB,GACfyD,EAA4B,KAAxBuK,KAAKmiB,MAAU,IAAJ1sB,GACf1E,KAAKonS,OAASnmS,EACdjB,KAAKqnS,OAAS3iS,OAEdzD,EAAIjB,KAAKonS,OACT1iS,EAAI1E,KAAKqnS,OAKX,IACIxgS,EACAu2Q,EACAkqB,EACA5nB,EACAwoB,EALArnM,EAAM7gG,KAAKi+Q,OAAO58Q,OAMlBomS,EAAsB,EAE1B,GAAI/iS,IAAMzD,EACR,IAAKC,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKi+Q,OAAO/8Q,GAAGy8R,qBAAqBb,gBACpC98R,KAAKi+Q,OAAO/8Q,GAAGw7R,MAAM1C,MAAO,EAC5Bh6R,KAAKi+Q,OAAO/8Q,GAAGw7R,MAAMnrC,MAAQvxP,KAAKi+Q,OAAO/8Q,GAAGy8R,qBAExC39R,KAAKg6R,OACPh6R,KAAKi+Q,OAAO/8Q,GAAGomS,UAAUjmS,OAAS,QAGjC,GAAY,IAANqD,GAAiB,IAANzD,GAAiB,IAANyD,GAAiB,IAANzD,GAyGvC,GAAIjB,KAAKg6R,KACd,IAAK94R,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAGxBlB,KAAKi+Q,OAAO/8Q,GAAGomS,UAAUjmS,OAAS,EAClCrB,KAAKi+Q,OAAO/8Q,GAAGw7R,MAAM1C,MAAO,MA9GwB,CACtD,IACIvH,EACAkL,EAFAxX,EAAW,GAIf,IAAKjlR,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAGxB,GAFAuxR,EAAYzyR,KAAKi+Q,OAAO/8Q,GAEnBuxR,EAAUiK,MAAM1C,MAASh6R,KAAKg6R,MAASK,GAA4B,IAAXr6R,KAAKmG,EAE3D,CAKL,GAJA6hS,EAAavV,EAAUiK,MAAMnrC,MAC7B6rB,EAAO4qB,EAAW/X,QAClBiY,EAAmB,GAEdzV,EAAUiK,MAAM1C,MAAQvH,EAAU6U,UAAUjmS,OAC/C6mS,EAAmBzV,EAAUyV,qBACxB,CAGL,IAFAZ,EAAYtnS,KAAK8nS,iBAAiBrV,EAAU6U,WAEvCzgS,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzB64Q,EAAW4V,IAAI9C,kBAAkBwV,EAAW/pB,OAAOp3Q,IACnDygS,EAAUthS,KAAK05Q,GACfwoB,GAAoBxoB,EAASiR,YAG/B8B,EAAUyV,iBAAmBA,EAC7BzV,EAAU6U,UAAYA,EAGxBG,GAAuBS,EACvBzV,EAAUiK,MAAM1C,MAAO,OAtBvBvH,EAAUiK,MAAMnrC,MAAQkhC,EAAUkL,qBA0BtC,IAGIwK,EAHAP,EAAS3mS,EACT4mS,EAASnjS,EACT6rR,EAAc,EAGlB,IAAKrvR,EAAI2/F,EAAM,EAAG3/F,GAAK,EAAGA,GAAK,EAG7B,GAFAuxR,EAAYzyR,KAAKi+Q,OAAO/8Q,GAEpBuxR,EAAUiK,MAAM1C,KAAM,CAaxB,IAZA2D,EAAuBlL,EAAUkL,qBACjCA,EAAqBb,gBAEN,IAAX98R,KAAKmG,GAAW06F,EAAM,GACxBsnM,EAAQnoS,KAAKunS,oBAAoBtmS,EAAGyD,EAAG+tR,EAAUyV,iBAAkB3X,EAAakX,GAChFlX,GAAekC,EAAUyV,kBAEzBC,EAAQ,CAAC,CAACP,EAAQC,IAGpBzqB,EAAO+qB,EAAM9mS,OAERwF,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EAAG,CAC5B+gS,EAASO,EAAMthS,GAAG,GAClBghS,EAASM,EAAMthS,GAAG,GAClBs/Q,EAAS9kR,OAAS,EAEdwmS,GAAU,EACZ1hB,EAASngR,KAAK,CACZ/E,EAAGwxR,EAAUyV,iBAAmBN,EAChCljS,EAAG+tR,EAAUyV,iBAAmBL,IAEzBD,GAAU,EACnBzhB,EAASngR,KAAK,CACZ/E,EAAGwxR,EAAUyV,kBAAoBN,EAAS,GAC1CljS,EAAG+tR,EAAUyV,kBAAoBL,EAAS,MAG5C1hB,EAASngR,KAAK,CACZ/E,EAAGwxR,EAAUyV,iBAAmBN,EAChCljS,EAAG+tR,EAAUyV,mBAEf/hB,EAASngR,KAAK,CACZ/E,EAAG,EACHyD,EAAG+tR,EAAUyV,kBAAoBL,EAAS,MAI9C,IAAIO,EAAgBpoS,KAAKqoS,UAAU5V,EAAWtM,EAAS,IAEvD,GAAIA,EAAS,GAAGllR,IAAMklR,EAAS,GAAGzhR,EAAG,CACnC,GAAIyhR,EAAS9kR,OAAS,EAAG,CACvB,IAAIinS,EAAwB7V,EAAUiK,MAAMnrC,MAAM0sB,OAAOwU,EAAUiK,MAAMnrC,MAAM0+B,QAAU,GAEzF,GAAIqY,EAAsBr0N,EAAG,CAC3B,IAAIs0N,EAAYH,EAAcriS,MAC9B/F,KAAKwoS,SAASJ,EAAezK,GAC7ByK,EAAgBpoS,KAAKqoS,UAAU5V,EAAWtM,EAAS,GAAIoiB,QAEvDvoS,KAAKwoS,SAASJ,EAAezK,GAC7ByK,EAAgBpoS,KAAKqoS,UAAU5V,EAAWtM,EAAS,IAIvDnmR,KAAKwoS,SAASJ,EAAezK,IAIjClL,EAAUiK,MAAMnrC,MAAQosC,KAahCmJ,aAAa5mS,UAAUsoS,SAAW,SAAUC,EAAU9K,GACpD,IAAIz8R,EACA2/F,EAAM4nM,EAASpnS,OAEnB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBy8R,EAAqBd,SAAS4L,EAASvnS,KAI3C4lS,aAAa5mS,UAAUwoS,WAAa,SAAU5W,EAAKC,EAAKC,EAAKC,EAAKwK,EAAWroN,EAAKu0N,GAChFlM,EAAUd,QAAQ5J,EAAI,GAAIA,EAAI,GAAI,IAAK39M,GACvCqoN,EAAUd,QAAQ3J,EAAI,GAAIA,EAAI,GAAI,IAAK59M,EAAM,GAEzCu0N,GACFlM,EAAUd,QAAQ7J,EAAI,GAAIA,EAAI,GAAI,IAAK19M,GAGzCqoN,EAAUd,QAAQ1J,EAAI,GAAIA,EAAI,GAAI,IAAK79M,EAAM,IAG/C0yN,aAAa5mS,UAAU0oS,oBAAsB,SAAUha,EAAQ6N,EAAWroN,EAAKu0N,GAC7ElM,EAAUd,QAAQ/M,EAAO,GAAIA,EAAO,GAAI,IAAKx6M,GAC7CqoN,EAAUd,QAAQ/M,EAAO,GAAIA,EAAO,GAAI,IAAKx6M,EAAM,GAE/Cu0N,GACFlM,EAAUd,QAAQ/M,EAAO,GAAIA,EAAO,GAAI,IAAKx6M,GAG/CqoN,EAAUd,QAAQ/M,EAAO,GAAIA,EAAO,GAAI,IAAKx6M,EAAM,IAGrD0yN,aAAa5mS,UAAUmoS,UAAY,SAAU5V,EAAWoW,EAAcpM,GACpE,IAEIv7R,EAEA2F,EACAu2Q,EAEA0rB,EACAC,EACAtY,EACA/8F,EAEA6/F,EAZA+T,EAAY7U,EAAU6U,UACtBU,EAAavV,EAAUiK,MAAMnrC,MAAM0sB,OAEnCp9K,EAAM4xL,EAAUiK,MAAMnrC,MAAM0+B,QAG5BM,EAAc,EAKdtS,EAAS,GAET0qB,GAAW,EAaf,IAXKlM,GAKHsM,EAAetM,EAAUxM,QACzBsD,EAAUkJ,EAAUxM,UALpBwM,EAAYD,UAAUpM,aACtB2Y,EAAe,EACfxV,EAAU,GAMZtV,EAAOj4Q,KAAKy2R,GAEPv7R,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAAG,CAK3B,IAJAuvR,EAAU6W,EAAUpmS,GAAGuvR,QACvBgM,EAAUxoN,EAAI+zN,EAAW9mS,GAAG+yE,EAC5BmpM,EAAO4qB,EAAW9mS,GAAG+yE,EAAIw8M,EAAQpvR,OAASovR,EAAQpvR,OAAS,EAEtDwF,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EAGzB,GAFAiiS,EAAoBrY,EAAQ5pR,EAAI,GAE5B0pR,EAAcuY,EAAkBvY,YAAcsY,EAAa5nS,EAC7DsvR,GAAeuY,EAAkBvY,YACjCkM,EAAUxoN,GAAI,MACT,IAAIs8M,EAAcsY,EAAankS,EAAG,CACvC+3R,EAAUxoN,GAAI,EACd,MAEI40N,EAAa5nS,GAAKsvR,GAAesY,EAAankS,GAAK6rR,EAAcuY,EAAkBvY,aACrFvwR,KAAK0oS,WAAWV,EAAW9mS,GAAG0E,EAAEiB,EAAI,GAAImhS,EAAW9mS,GAAGgF,EAAEW,EAAI,GAAImhS,EAAW9mS,GAAGA,EAAE2F,GAAImhS,EAAW9mS,GAAG0E,EAAEiB,GAAI41R,EAAWsM,EAAcJ,GACjIA,GAAW,IAEXj1G,EAAU4hG,IAAIrB,cAAc+T,EAAW9mS,GAAG0E,EAAEiB,EAAI,GAAImhS,EAAW9mS,GAAG0E,EAAEiB,GAAImhS,EAAW9mS,GAAGgF,EAAEW,EAAI,GAAImhS,EAAW9mS,GAAGA,EAAE2F,IAAKgiS,EAAa5nS,EAAIsvR,GAAeuY,EAAkBvY,aAAcsY,EAAankS,EAAI6rR,GAAeuY,EAAkBvY,YAAaE,EAAQ5pR,EAAI,IAChQ7G,KAAK4oS,oBAAoBl1G,EAAS+oG,EAAWsM,EAAcJ,GAE3DA,GAAW,EACXlM,EAAUxoN,GAAI,GAGhBs8M,GAAeuY,EAAkBvY,YACjCwY,GAAgB,EAIpB,GAAIf,EAAW9mS,GAAG+yE,GAAKw8M,EAAQpvR,OAAQ,CAGrC,GAFAynS,EAAoBrY,EAAQ5pR,EAAI,GAE5B0pR,GAAesY,EAAankS,EAAG,CACjC,IAAIquR,EAAgBtC,EAAQ5pR,EAAI,GAAG0pR,YAE/BsY,EAAa5nS,GAAKsvR,GAAesY,EAAankS,GAAK6rR,EAAcwC,GACnE/yR,KAAK0oS,WAAWV,EAAW9mS,GAAG0E,EAAEiB,EAAI,GAAImhS,EAAW9mS,GAAGgF,EAAEW,EAAI,GAAImhS,EAAW9mS,GAAGA,EAAE,GAAI8mS,EAAW9mS,GAAG0E,EAAE,GAAI62R,EAAWsM,EAAcJ,GACjIA,GAAW,IAEXj1G,EAAU4hG,IAAIrB,cAAc+T,EAAW9mS,GAAG0E,EAAEiB,EAAI,GAAImhS,EAAW9mS,GAAG0E,EAAE,GAAIoiS,EAAW9mS,GAAGgF,EAAEW,EAAI,GAAImhS,EAAW9mS,GAAGA,EAAE,IAAK2nS,EAAa5nS,EAAIsvR,GAAewC,GAAgB8V,EAAankS,EAAI6rR,GAAewC,EAAetC,EAAQ5pR,EAAI,IAChO7G,KAAK4oS,oBAAoBl1G,EAAS+oG,EAAWsM,EAAcJ,GAE3DA,GAAW,EACXlM,EAAUxoN,GAAI,QAGhBwoN,EAAUxoN,GAAI,EAGhBs8M,GAAeuY,EAAkBvY,YACjCwY,GAAgB,EAQlB,GALItM,EAAUxM,UACZwM,EAAUd,QAAQc,EAAU72R,EAAE2tR,GAAS,GAAIkJ,EAAU72R,EAAE2tR,GAAS,GAAI,IAAKA,GACzEkJ,EAAUd,QAAQc,EAAU72R,EAAE62R,EAAUxM,QAAU,GAAG,GAAIwM,EAAU72R,EAAE62R,EAAUxM,QAAU,GAAG,GAAI,IAAKwM,EAAUxM,QAAU,IAGvHM,EAAcsY,EAAankS,EAC7B,MAGExD,EAAI2/F,EAAM,IACZ47L,EAAYD,UAAUpM,aACtBuY,GAAW,EACX1qB,EAAOj4Q,KAAKy2R,GACZsM,EAAe,GAInB,OAAO9qB,GAKTpI,gBAAgB,CAACgxB,eAAgBE,wBAEjCA,uBAAuB7mS,UAAU8mS,uBAAyB,SAAU9a,EAAM97Q,GACxEpQ,KAAK+yO,SAAW/yO,KAAKmnS,YACrBnnS,KAAKgpS,OAASzT,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKxJ,EAAG,EAAG,KAAM5G,MAC7DA,KAAKm7R,cAAgBn7R,KAAKgpS,OAAO7O,gBAAgB94R,QAGnD0lS,uBAAuB7mS,UAAU+oS,YAAc,SAAU77M,EAAM47M,GAC7D,IAAIrV,EAAUqV,EAAS,IACnBE,EAAc,CAAC,EAAG,GAClBC,EAAa/7M,EAAK6iM,QAClB/uR,EAAI,EAER,IAAKA,EAAI,EAAGA,EAAIioS,EAAYjoS,GAAK,EAC/BgoS,EAAY,IAAM97M,EAAKxnF,EAAE1E,GAAG,GAC5BgoS,EAAY,IAAM97M,EAAKxnF,EAAE1E,GAAG,GAG9BgoS,EAAY,IAAMC,EAClBD,EAAY,IAAMC,EAClB,IAEItN,EACAC,EACAC,EACAC,EACAC,EACAC,EAPAkN,EAAa5M,UAAUpM,aAS3B,IARAgZ,EAAWn1N,EAAImZ,EAAKnZ,EAQf/yE,EAAI,EAAGA,EAAIioS,EAAYjoS,GAAK,EAC/B26R,EAAKzuM,EAAKxnF,EAAE1E,GAAG,IAAMgoS,EAAY,GAAK97M,EAAKxnF,EAAE1E,GAAG,IAAMyyR,EACtDmI,EAAK1uM,EAAKxnF,EAAE1E,GAAG,IAAMgoS,EAAY,GAAK97M,EAAKxnF,EAAE1E,GAAG,IAAMyyR,EACtDoI,EAAK3uM,EAAKlnF,EAAEhF,GAAG,IAAMgoS,EAAY,GAAK97M,EAAKlnF,EAAEhF,GAAG,KAAOyyR,EACvDqI,EAAK5uM,EAAKlnF,EAAEhF,GAAG,IAAMgoS,EAAY,GAAK97M,EAAKlnF,EAAEhF,GAAG,KAAOyyR,EACvDsI,EAAK7uM,EAAKlsF,EAAEA,GAAG,IAAMgoS,EAAY,GAAK97M,EAAKlsF,EAAEA,GAAG,KAAOyyR,EACvDuI,EAAK9uM,EAAKlsF,EAAEA,GAAG,IAAMgoS,EAAY,GAAK97M,EAAKlsF,EAAEA,GAAG,KAAOyyR,EACvDyV,EAAWxN,YAAYC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIh7R,GAGjD,OAAOkoS,GAGTrC,uBAAuB7mS,UAAU6nS,cAAgB,SAAU1N,GACzD,IAAI2N,EACA9mS,EAEA2F,EACAu2Q,EAIEqV,EACAkL,EAPF98L,EAAM7gG,KAAKi+Q,OAAO58Q,OAGlB2nS,EAAShpS,KAAKgpS,OAAOpjS,EAEzB,GAAe,IAAXojS,EAIF,IAAK9nS,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAAG,CAI3B,GAHAuxR,EAAYzyR,KAAKi+Q,OAAO/8Q,GACxBy8R,EAAuBlL,EAAUkL,qBAE1BlL,EAAUiK,MAAM1C,MAASh6R,KAAKg6R,MAASK,EAM5C,IALAsD,EAAqBb,gBACrBrK,EAAUiK,MAAM1C,MAAO,EACvBgO,EAAavV,EAAUiK,MAAMnrC,MAAM0sB,OACnCb,EAAOqV,EAAUiK,MAAMnrC,MAAM0+B,QAExBppR,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzB82R,EAAqBd,SAAS78R,KAAKipS,YAAYjB,EAAWnhS,GAAImiS,IAIlEvW,EAAUiK,MAAMnrC,MAAQkhC,EAAUkL,qBAIjC39R,KAAKk7R,kBAAkB75R,SAC1BrB,KAAKg6R,MAAO,IAIhB,IAAIqP,yBAA2B,WAC7B,IAAIC,EAAgB,CAAC,EAAG,GAExB,SAASC,EAAcC,GACrB,IAAIxP,EAAOh6R,KAAKg6R,KAChBh6R,KAAKo7R,2BACLp7R,KAAKg6R,KAAOh6R,KAAKg6R,MAAQA,EAErBh6R,KAAK4G,GACP4iS,EAAI5H,WAAW5hS,KAAK4G,EAAEhB,EAAE,IAAK5F,KAAK4G,EAAEhB,EAAE,GAAI5F,KAAK4G,EAAEhB,EAAE,IAGjD5F,KAAKiB,GACPuoS,EAAI/H,MAAMzhS,KAAKiB,EAAE2E,EAAE,GAAI5F,KAAKiB,EAAE2E,EAAE,GAAI5F,KAAKiB,EAAE2E,EAAE,IAG3C5F,KAAKu/Q,IACPiqB,EAAIhI,cAAcxhS,KAAKu/Q,GAAG35Q,EAAG5F,KAAKw/Q,GAAG55Q,GAGnC5F,KAAKoG,EACPojS,EAAIzI,QAAQ/gS,KAAKoG,EAAER,GAEnB4jS,EAAInI,SAASrhS,KAAKypS,GAAG7jS,GAAGw7R,QAAQphS,KAAK0pS,GAAG9jS,GAAGu7R,QAAQnhS,KAAK+oL,GAAGnjL,GAAGy7R,SAASrhS,KAAKg/R,GAAGp5R,EAAE,IAAIw7R,QAAQphS,KAAKg/R,GAAGp5R,EAAE,IAAIu7R,QAAQnhS,KAAKg/R,GAAGp5R,EAAE,IAG3H5F,KAAKoQ,KAAKvQ,EAAEoB,EACVjB,KAAKoQ,KAAKvQ,EAAEkiL,EACdynH,EAAI5H,UAAU5hS,KAAK2pS,GAAG/jS,EAAG5F,KAAK4pS,GAAGhkS,GAAI5F,KAAK6pS,GAAGjkS,GAE7C4jS,EAAI5H,UAAU5hS,KAAK2pS,GAAG/jS,EAAG5F,KAAK4pS,GAAGhkS,EAAG,GAGtC4jS,EAAI5H,UAAU5hS,KAAKH,EAAE+F,EAAE,GAAI5F,KAAKH,EAAE+F,EAAE,IAAK5F,KAAKH,EAAE+F,EAAE,IAItD,SAASuhS,EAAY2C,GACnB,GAAI9pS,KAAKksR,KAAKjF,WAAWiT,UAAYl6R,KAAKk6R,QAA1C,CAWA,GAPIl6R,KAAK+pS,WACP/pS,KAAKgqS,qBACLhqS,KAAK+pS,UAAW,GAGlB/pS,KAAKo7R,2BAEDp7R,KAAKg6R,MAAQ8P,EAAa,CAC5B,IAAIxkB,EAqBJ,GApBAtlR,KAAK4F,EAAEo+R,eAAehkS,KAAKiqS,IAAIx0K,OAE3Bz1H,KAAKkqS,uBAAyB,GAChClqS,KAAK4F,EAAEg8R,WAAW5hS,KAAK4G,EAAEhB,EAAE,IAAK5F,KAAK4G,EAAEhB,EAAE,GAAI5F,KAAK4G,EAAEhB,EAAE,IAGpD5F,KAAKkqS,uBAAyB,GAChClqS,KAAK4F,EAAE67R,MAAMzhS,KAAKiB,EAAE2E,EAAE,GAAI5F,KAAKiB,EAAE2E,EAAE,GAAI5F,KAAKiB,EAAE2E,EAAE,IAG9C5F,KAAKu/Q,IAAMv/Q,KAAKkqS,uBAAyB,GAC3ClqS,KAAK4F,EAAE47R,cAAcxhS,KAAKu/Q,GAAG35Q,EAAG5F,KAAKw/Q,GAAG55Q,GAGtC5F,KAAKoG,GAAKpG,KAAKkqS,uBAAyB,EAC1ClqS,KAAK4F,EAAEm7R,QAAQ/gS,KAAKoG,EAAER,IACZ5F,KAAKoG,GAAKpG,KAAKkqS,uBAAyB,GAClDlqS,KAAK4F,EAAEy7R,SAASrhS,KAAKypS,GAAG7jS,GAAGw7R,QAAQphS,KAAK0pS,GAAG9jS,GAAGu7R,QAAQnhS,KAAK+oL,GAAGnjL,GAAGy7R,SAASrhS,KAAKg/R,GAAGp5R,EAAE,IAAIw7R,QAAQphS,KAAKg/R,GAAGp5R,EAAE,IAAIu7R,QAAQnhS,KAAKg/R,GAAGp5R,EAAE,IAG9H5F,KAAKmqS,aAAc,CACrB,IAAI/J,EACAgK,EAGJ,GAFA9kB,EAAYtlR,KAAKksR,KAAKjF,WAAW3B,UAE7BtlR,KAAKH,GAAKG,KAAKH,EAAEu2R,WAAap2R,KAAKH,EAAEwqS,eACnCrqS,KAAKH,EAAE85R,SAAS7C,UAAY92R,KAAKH,EAAE+1R,YAAc51R,KAAKH,EAAEu2R,UAAU,GAAGp1R,GACvEo/R,EAAKpgS,KAAKH,EAAEwqS,gBAAgBrqS,KAAKH,EAAEu2R,UAAU,GAAGp1R,EAAI,KAAQskR,EAAW,GACvE8kB,EAAKpqS,KAAKH,EAAEwqS,eAAerqS,KAAKH,EAAEu2R,UAAU,GAAGp1R,EAAIskR,EAAW,IACrDtlR,KAAKH,EAAE85R,SAAS7C,UAAY92R,KAAKH,EAAE+1R,YAAc51R,KAAKH,EAAEu2R,UAAUp2R,KAAKH,EAAEu2R,UAAU/0R,OAAS,GAAGL,GACxGo/R,EAAKpgS,KAAKH,EAAEwqS,eAAerqS,KAAKH,EAAEu2R,UAAUp2R,KAAKH,EAAEu2R,UAAU/0R,OAAS,GAAGL,EAAIskR,EAAW,GACxF8kB,EAAKpqS,KAAKH,EAAEwqS,gBAAgBrqS,KAAKH,EAAEu2R,UAAUp2R,KAAKH,EAAEu2R,UAAU/0R,OAAS,GAAGL,EAAI,KAAQskR,EAAW,KAEjG8a,EAAKpgS,KAAKH,EAAEi2R,GACZsU,EAAKpqS,KAAKH,EAAEwqS,gBAAgBrqS,KAAKH,EAAE85R,SAAS7C,UAAY92R,KAAKH,EAAE+1R,WAAa,KAAQtQ,EAAWtlR,KAAKH,EAAE+1R,kBAEnG,GAAI51R,KAAK2pS,IAAM3pS,KAAK2pS,GAAGvT,WAAap2R,KAAK4pS,GAAGxT,WAAap2R,KAAK2pS,GAAGU,gBAAkBrqS,KAAK4pS,GAAGS,eAAgB,CAChHjK,EAAK,GACLgK,EAAK,GACL,IAAIT,EAAK3pS,KAAK2pS,GACVC,EAAK5pS,KAAK4pS,GAEVD,EAAGhQ,SAAS7C,UAAY6S,EAAG/T,YAAc+T,EAAGvT,UAAU,GAAGp1R,GAC3Do/R,EAAG,GAAKuJ,EAAGU,gBAAgBV,EAAGvT,UAAU,GAAGp1R,EAAI,KAAQskR,EAAW,GAClE8a,EAAG,GAAKwJ,EAAGS,gBAAgBT,EAAGxT,UAAU,GAAGp1R,EAAI,KAAQskR,EAAW,GAClE8kB,EAAG,GAAKT,EAAGU,eAAeV,EAAGvT,UAAU,GAAGp1R,EAAIskR,EAAW,GACzD8kB,EAAG,GAAKR,EAAGS,eAAeT,EAAGxT,UAAU,GAAGp1R,EAAIskR,EAAW,IAChDqkB,EAAGhQ,SAAS7C,UAAY6S,EAAG/T,YAAc+T,EAAGvT,UAAUuT,EAAGvT,UAAU/0R,OAAS,GAAGL,GACxFo/R,EAAG,GAAKuJ,EAAGU,eAAeV,EAAGvT,UAAUuT,EAAGvT,UAAU/0R,OAAS,GAAGL,EAAIskR,EAAW,GAC/E8a,EAAG,GAAKwJ,EAAGS,eAAeT,EAAGxT,UAAUwT,EAAGxT,UAAU/0R,OAAS,GAAGL,EAAIskR,EAAW,GAC/E8kB,EAAG,GAAKT,EAAGU,gBAAgBV,EAAGvT,UAAUuT,EAAGvT,UAAU/0R,OAAS,GAAGL,EAAI,KAAQskR,EAAW,GACxF8kB,EAAG,GAAKR,EAAGS,gBAAgBT,EAAGxT,UAAUwT,EAAGxT,UAAU/0R,OAAS,GAAGL,EAAI,KAAQskR,EAAW,KAExF8a,EAAK,CAACuJ,EAAG7T,GAAI8T,EAAG9T,IAChBsU,EAAG,GAAKT,EAAGU,gBAAgBV,EAAGhQ,SAAS7C,UAAY6S,EAAG/T,WAAa,KAAQtQ,EAAWqkB,EAAG/T,YACzFwU,EAAG,GAAKR,EAAGS,gBAAgBT,EAAGjQ,SAAS7C,UAAY8S,EAAGhU,WAAa,KAAQtQ,EAAWskB,EAAGhU,kBAG3FwU,EAAKd,EACLlJ,EAAKgK,EAGPpqS,KAAK4F,EAAEm7R,QAAQ9xR,KAAKgqR,MAAMmH,EAAG,GAAKgK,EAAG,GAAIhK,EAAG,GAAKgK,EAAG,KAGlDpqS,KAAKoQ,KAAKvQ,GAAKG,KAAKoQ,KAAKvQ,EAAEoB,EACzBjB,KAAKoQ,KAAKvQ,EAAEkiL,EACd/hL,KAAK4F,EAAEg8R,UAAU5hS,KAAK2pS,GAAG/jS,EAAG5F,KAAK4pS,GAAGhkS,GAAI5F,KAAK6pS,GAAGjkS,GAEhD5F,KAAK4F,EAAEg8R,UAAU5hS,KAAK2pS,GAAG/jS,EAAG5F,KAAK4pS,GAAGhkS,EAAG,GAGzC5F,KAAK4F,EAAEg8R,UAAU5hS,KAAKH,EAAE+F,EAAE,GAAI5F,KAAKH,EAAE+F,EAAE,IAAK5F,KAAKH,EAAE+F,EAAE,IAIzD5F,KAAKk6R,QAAUl6R,KAAKksR,KAAKjF,WAAWiT,SAGtC,SAAS8P,IACP,IAAKhqS,KAAK4G,EAAED,IACV3G,KAAKiqS,IAAIrI,WAAW5hS,KAAK4G,EAAEhB,EAAE,IAAK5F,KAAK4G,EAAEhB,EAAE,GAAI5F,KAAK4G,EAAEhB,EAAE,IACxD5F,KAAKkqS,uBAAyB,GAK3BlqS,KAAKiB,EAAEk5R,gBAAgB94R,QAA5B,CAOA,GANErB,KAAKiqS,IAAIxI,MAAMzhS,KAAKiB,EAAE2E,EAAE,GAAI5F,KAAKiB,EAAE2E,EAAE,GAAI5F,KAAKiB,EAAE2E,EAAE,IAClD5F,KAAKkqS,uBAAyB,EAK5BlqS,KAAKu/Q,GAAI,CACX,GAAKv/Q,KAAKu/Q,GAAG4a,gBAAgB94R,QAAWrB,KAAKw/Q,GAAG2a,gBAAgB94R,OAI9D,OAHArB,KAAKiqS,IAAIzI,cAAcxhS,KAAKu/Q,GAAG35Q,EAAG5F,KAAKw/Q,GAAG55Q,GAC1C5F,KAAKkqS,uBAAyB,EAM9BlqS,KAAKoG,EACFpG,KAAKoG,EAAE+zR,gBAAgB94R,SAC1BrB,KAAKiqS,IAAIlJ,QAAQ/gS,KAAKoG,EAAER,GACxB5F,KAAKkqS,uBAAyB,GAEtBlqS,KAAKypS,GAAGtP,gBAAgB94R,QAAWrB,KAAK0pS,GAAGvP,gBAAgB94R,QAAWrB,KAAK+oL,GAAGoxG,gBAAgB94R,QAAWrB,KAAKg/R,GAAG7E,gBAAgB94R,SAC3IrB,KAAKiqS,IAAI5I,SAASrhS,KAAKypS,GAAG7jS,GAAGw7R,QAAQphS,KAAK0pS,GAAG9jS,GAAGu7R,QAAQnhS,KAAK+oL,GAAGnjL,GAAGy7R,SAASrhS,KAAKg/R,GAAGp5R,EAAE,IAAIw7R,QAAQphS,KAAKg/R,GAAGp5R,EAAE,IAAIu7R,QAAQnhS,KAAKg/R,GAAGp5R,EAAE,IAClI5F,KAAKkqS,uBAAyB,IAIlC,SAASI,KAIT,SAAS5P,EAAmBj6M,GAC1BzgF,KAAKuqS,oBAAoB9pN,GAEzBzgF,KAAKksR,KAAKwO,mBAAmBj6M,GAC7BzgF,KAAK+pS,UAAW,EAGlB,SAASS,EAAkBte,EAAM97Q,EAAMsiI,GAwBrC,GAvBA1yI,KAAKksR,KAAOA,EACZlsR,KAAKk6R,SAAW,EAChBl6R,KAAK61R,SAAW,YAChB71R,KAAKoQ,KAAOA,EACZpQ,KAAK4F,EAAI,IAAI66R,OAEbzgS,KAAKiqS,IAAM,IAAIxJ,OACfzgS,KAAKkqS,uBAAyB,EAC9BlqS,KAAKq7R,6BAA6B3oJ,GAAaw5I,GAE3C97Q,EAAKvQ,GAAKuQ,EAAKvQ,EAAEoB,GACnBjB,KAAK2pS,GAAKpU,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKvQ,EAAEytK,EAAG,EAAG,EAAGttK,MACxDA,KAAK4pS,GAAKrU,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKvQ,EAAEqF,EAAG,EAAG,EAAGlF,MAEpDoQ,EAAKvQ,EAAEkiL,IACT/hL,KAAK6pS,GAAKtU,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKvQ,EAAEkiL,EAAG,EAAG,EAAG/hL,QAG1DA,KAAKH,EAAI01R,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKvQ,GAAK,CAC/C8G,EAAG,CAAC,EAAG,EAAG,IACT,EAAG,EAAG3G,MAGPoQ,EAAK24K,GAAI,CAKX,GAJA/oL,KAAK+oL,GAAKwsG,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAK24K,GAAI,EAAGowF,UAAWn5Q,MAC/DA,KAAK0pS,GAAKnU,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKs5R,GAAI,EAAGvwB,UAAWn5Q,MAC/DA,KAAKypS,GAAKlU,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKq5R,GAAI,EAAGtwB,UAAWn5Q,MAE3DoQ,EAAK4uR,GAAGr4R,EAAE,GAAG8vR,GAAI,CACnB,IAAIv1R,EACA2/F,EAAMzwF,EAAK4uR,GAAGr4R,EAAEtF,OAEpB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBkP,EAAK4uR,GAAGr4R,EAAEzF,GAAG4qG,GAAK,KAClB17F,EAAK4uR,GAAGr4R,EAAEzF,GAAGu1R,GAAK,KAItBz2R,KAAKg/R,GAAKzJ,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAK4uR,GAAI,EAAG7lB,UAAWn5Q,MAE/DA,KAAKg/R,GAAG1H,IAAK,OAEbt3R,KAAKoG,EAAImvR,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKhK,GAAK,CAC/CO,EAAG,GACF,EAAGwyQ,UAAWn5Q,MAGfoQ,EAAKmvQ,KACPv/Q,KAAKu/Q,GAAKgW,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKmvQ,GAAI,EAAGpG,UAAWn5Q,MAC/DA,KAAKw/Q,GAAK+V,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKovQ,GAAI,EAAGrG,UAAWn5Q,OAGjEA,KAAK4G,EAAI2uR,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKxJ,GAAK,CAC/CD,EAAG,CAAC,EAAG,EAAG,IACT,EAAG,EAAG3G,MACTA,KAAKiB,EAAIs0R,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKnP,GAAK,CAC/C0F,EAAG,CAAC,IAAK,IAAK,MACb,EAAG,IAAM3G,MAERoQ,EAAKlK,EACPlG,KAAKkG,EAAIqvR,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKlK,EAAG,EAAG,IAAMgmR,GAExDlsR,KAAKkG,EAAI,CACP8zR,MAAM,EACNp0R,EAAG,GAIP5F,KAAK+pS,UAAW,EAEX/pS,KAAKk7R,kBAAkB75R,QAC1BrB,KAAK+yO,UAAS,GAclB,SAAS03D,EAAqBve,EAAM97Q,EAAMsiI,GACxC,OAAO,IAAI83J,EAAkBte,EAAM97Q,EAAMsiI,GAG3C,OAdA83J,EAAkBtqS,UAAY,CAC5BqpS,cAAeA,EACfx2D,SAAUo0D,EACV6C,mBAAoBA,EACpBM,WAAYA,GAEdz0B,gBAAgB,CAAColB,0BAA2BuP,GAC5CA,EAAkBtqS,UAAUw6R,mBAAqBA,EACjD8P,EAAkBtqS,UAAUqqS,oBAAsBtP,yBAAyB/6R,UAAUw6R,mBAM9E,CACL+P,qBAAsBA,GA3QK,GA+Q/B,SAASC,oBAkST,SAASC,wBA0HT,SAASC,kBAAkBC,GAOzB,IANA,IAIIC,EAJAC,EAASF,EAASG,OAASH,EAASG,OAAO5zR,MAAM,KAAO,GACxD6zR,EAAU,SACVD,EAAS,SACTnqM,EAAMkqM,EAAO1pS,OAGRH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAG5B,OAFA4pS,EAAYC,EAAO7pS,GAAGszB,cAEds2Q,GACN,IAAK,SACHE,EAAS,SACT,MAEF,IAAK,OACHC,EAAU,MACV,MAEF,IAAK,QACHA,EAAU,MACV,MAEF,IAAK,SACHA,EAAU,MACV,MAEF,IAAK,UACL,IAAK,SACHA,EAAU,MACV,MAEF,IAAK,QACL,IAAK,OACHA,EAAU,MACV,MAEF,QACE,MAIN,MAAO,CACLzgO,MAAOwgO,EACPE,OAAQL,EAASI,SAAWA,GAtchCp1B,gBAAgB,CAACgxB,eAAgB6D,kBAEjCA,iBAAiBxqS,UAAU8mS,uBAAyB,SAAU9a,EAAM97Q,GAClEpQ,KAAK+yO,SAAW/yO,KAAKmnS,YACrBnnS,KAAKi0E,EAAIshN,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAK6jE,EAAG,EAAG,KAAMj0E,MACxDA,KAAKkG,EAAIqvR,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKlK,EAAG,EAAG,KAAMlG,MACxDA,KAAKmrS,GAAK9B,yBAAyBoB,qBAAqBve,EAAM97Q,EAAK+6R,GAAInrS,MACvEA,KAAKorS,GAAK7V,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAK+6R,GAAGC,GAAI,EAAG,IAAMprS,MAC7DA,KAAKqrS,GAAK9V,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAK+6R,GAAGE,GAAI,EAAG,IAAMrrS,MAC7DA,KAAKoQ,KAAOA,EAEPpQ,KAAKk7R,kBAAkB75R,QAC1BrB,KAAK+yO,UAAS,GAGhB/yO,KAAKm7R,cAAgBn7R,KAAKk7R,kBAAkB75R,OAC5CrB,KAAKsrS,QAAU,IAAI7K,OACnBzgS,KAAKurS,QAAU,IAAI9K,OACnBzgS,KAAKwrS,QAAU,IAAI/K,OACnBzgS,KAAKyrS,QAAU,IAAIhL,OACnBzgS,KAAK0rS,OAAS,IAAIjL,QAGpBiK,iBAAiBxqS,UAAUyrS,gBAAkB,SAAUL,EAASC,EAASC,EAAS9iD,EAAWypC,EAAMyZ,GACjG,IAAI1+C,EAAM0+C,GAAO,EAAI,EACjBC,EAASnjD,EAAUznP,EAAE2E,EAAE,IAAM,EAAI8iP,EAAUznP,EAAE2E,EAAE,KAAO,EAAIusR,GAC1D2Z,EAASpjD,EAAUznP,EAAE2E,EAAE,IAAM,EAAI8iP,EAAUznP,EAAE2E,EAAE,KAAO,EAAIusR,GAC9DmZ,EAAQ1J,UAAUl5C,EAAU7oP,EAAE+F,EAAE,GAAKsnP,EAAMilC,EAAMzpC,EAAU7oP,EAAE+F,EAAE,GAAKsnP,EAAMilC,EAAMzpC,EAAU7oP,EAAE+F,EAAE,IAC9F2lS,EAAQ3J,WAAWl5C,EAAU9hP,EAAEhB,EAAE,IAAK8iP,EAAU9hP,EAAEhB,EAAE,GAAI8iP,EAAU9hP,EAAEhB,EAAE,IACtE2lS,EAAQxK,QAAQr4C,EAAUtiP,EAAER,EAAIsnP,EAAMilC,GACtCoZ,EAAQ3J,UAAUl5C,EAAU9hP,EAAEhB,EAAE,GAAI8iP,EAAU9hP,EAAEhB,EAAE,GAAI8iP,EAAU9hP,EAAEhB,EAAE,IACpE4lS,EAAQ5J,WAAWl5C,EAAU9hP,EAAEhB,EAAE,IAAK8iP,EAAU9hP,EAAEhB,EAAE,GAAI8iP,EAAU9hP,EAAEhB,EAAE,IACtE4lS,EAAQ/J,MAAMmK,EAAM,EAAIC,EAASA,EAAQD,EAAM,EAAIE,EAASA,GAC5DN,EAAQ5J,UAAUl5C,EAAU9hP,EAAEhB,EAAE,GAAI8iP,EAAU9hP,EAAEhB,EAAE,GAAI8iP,EAAU9hP,EAAEhB,EAAE,KAGtE8kS,iBAAiBxqS,UAAUq9H,KAAO,SAAU2uJ,EAAMpwQ,EAAKs4D,EAAK23N,GAC1D/rS,KAAKksR,KAAOA,EACZlsR,KAAK8b,IAAMA,EACX9b,KAAKo0E,IAAMA,EACXp0E,KAAK+rS,UAAYA,EACjB/rS,KAAKgsS,eAAiB,EACtBhsS,KAAKisS,UAAY,GACjBjsS,KAAKksS,QAAU,GACflsS,KAAKk6R,SAAW,EAChBl6R,KAAKq7R,6BAA6BnP,GAClClsR,KAAKgnS,uBAAuB9a,EAAMpwQ,EAAIs4D,IAEtC,MAAOA,EAAM,EACXA,GAAO,EAEPp0E,KAAKisS,UAAU38I,QAAQxzI,EAAIs4D,IAGzBp0E,KAAKk7R,kBAAkB75R,OACzBrB,KAAK2G,GAAI,EAET3G,KAAK+yO,UAAS,IAIlB23D,iBAAiBxqS,UAAUisS,cAAgB,SAAUC,GACnD,IAAIlrS,EACA2/F,EAAMurM,EAAS/qS,OAEnB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBkrS,EAASlrS,GAAGmrS,YAAa,EAEF,OAAnBD,EAASlrS,GAAG28Q,IACd79Q,KAAKmsS,cAAcC,EAASlrS,GAAG41J,KAKrC4zI,iBAAiBxqS,UAAUosS,cAAgB,SAAUF,GACnD,IAAIG,EAAcjyR,KAAKS,MAAMT,KAAKC,UAAU6xR,IAE5C,OADApsS,KAAKmsS,cAAcI,GACZA,GAGT7B,iBAAiBxqS,UAAUssS,kBAAoB,SAAUJ,EAAUK,GACjE,IAAIvrS,EACA2/F,EAAMurM,EAAS/qS,OAEnB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBkrS,EAASlrS,GAAGwrS,QAAUD,EAEC,OAAnBL,EAASlrS,GAAG28Q,IACd79Q,KAAKwsS,kBAAkBJ,EAASlrS,GAAG41J,GAAI21I,IAK7C/B,iBAAiBxqS,UAAU6nS,cAAgB,SAAU1N,GACnD,IAAIrrL,EACA29L,EACAzrS,EACAgsP,EACA0/C,EACAC,GAAc,EAElB,GAAI7sS,KAAKg6R,MAAQK,EAAe,CAC9B,IAmEIoS,EAnEAK,EAAS79R,KAAKqD,KAAKtS,KAAKi0E,EAAEruE,GAE9B,GAAI5F,KAAKksS,QAAQ7qS,OAASyrS,EAAQ,CAChC,MAAO9sS,KAAKksS,QAAQ7qS,OAASyrS,EAAQ,CACnC,IAAI33H,EAAQ,CACVre,GAAI92J,KAAKssS,cAActsS,KAAKisS,WAC5BpuB,GAAI,MAEN1oG,EAAMre,GAAG9wJ,KAAK,CACZY,EAAG,CACDA,EAAG,EACHmmS,GAAI,EACJpmS,EAAG,CAAC,EAAG,IAET+9Q,GAAI,YACJx+Q,EAAG,CACDU,EAAG,EACHmmS,GAAI,EACJpmS,EAAG,KAEL9G,EAAG,CACD+G,EAAG,EACHmmS,GAAI,EACJpmS,EAAG,CAAC,EAAG,IAETP,EAAG,CACDQ,EAAG,EACHmmS,GAAI,EACJpmS,EAAG,CAAC,CACF1F,EAAG,EACHyD,EAAG,EACH1D,EAAG,GACF,CACDC,EAAG,EACHyD,EAAG,EACH1D,EAAG,KAGPC,EAAG,CACD2F,EAAG,EACHmmS,GAAI,EACJpmS,EAAG,CAAC,IAAK,MAEX64Q,GAAI,CACF54Q,EAAG,EACHmmS,GAAI,EACJpmS,EAAG,GAEL44Q,GAAI,CACF34Q,EAAG,EACHmmS,GAAI,EACJpmS,EAAG,GAELk3Q,GAAI,OAEN79Q,KAAK8b,IAAI00F,OAAO,EAAG,EAAG2kE,GAEtBn1K,KAAKksS,QAAQ17L,OAAO,EAAG,EAAG2kE,GAE1Bn1K,KAAKgsS,gBAAkB,EAGzBhsS,KAAKksR,KAAK8gB,eACVH,GAAc,EAMhB,IAHAD,EAAO,EAGF1rS,EAAI,EAAGA,GAAKlB,KAAKksS,QAAQ7qS,OAAS,EAAGH,GAAK,EAAG,CAKhD,GAJAurS,EAAaG,EAAOE,EACpB9sS,KAAKksS,QAAQhrS,GAAGwrS,QAAUD,EAC1BzsS,KAAKwsS,kBAAkBxsS,KAAKksS,QAAQhrS,GAAG41J,GAAI21I,IAEtCA,EAAY,CACf,IAAIQ,EAAQjtS,KAAK+rS,UAAU7qS,GAAG41J,GAC1BrG,EAAgBw8I,EAAMA,EAAM5rS,OAAS,GAEJ,IAAjCovJ,EAAci4F,UAAU7iP,GAAGD,GAC7B6qJ,EAAci4F,UAAU7iP,GAAGm0R,MAAO,EAClCvpI,EAAci4F,UAAU7iP,GAAGD,EAAI,GAE/B6qJ,EAAci4F,UAAU7iP,GAAGm0R,MAAO,EAItC4S,GAAQ,EAGV5sS,KAAKgsS,eAAiBc,EAEtB,IAAI5kQ,EAASloC,KAAKkG,EAAEN,EAChBsnS,EAAehlQ,EAAS,EACxBilQ,EAAcjlQ,EAAS,EAAIj5B,KAAKq2C,MAAMpd,GAAUj5B,KAAKqD,KAAK41B,GAC1DklQ,EAASptS,KAAKsrS,QAAQ71K,MACtB43K,EAASrtS,KAAKurS,QAAQ91K,MACtB63K,EAASttS,KAAKwrS,QAAQ/1K,MAC1Bz1H,KAAKsrS,QAAQvsN,QACb/+E,KAAKurS,QAAQxsN,QACb/+E,KAAKwrS,QAAQzsN,QACb/+E,KAAKyrS,QAAQ1sN,QACb/+E,KAAK0rS,OAAO3sN,QACZ,IA2BIl4E,EACAu2Q,EA5BA38D,EAAY,EAEhB,GAAIv4K,EAAS,EAAG,CACd,MAAOu4K,EAAY0sF,EACjBntS,KAAK2rS,gBAAgB3rS,KAAKsrS,QAAStrS,KAAKurS,QAASvrS,KAAKwrS,QAASxrS,KAAKmrS,GAAI,GAAG,GAC3E1qF,GAAa,EAGXysF,IACFltS,KAAK2rS,gBAAgB3rS,KAAKsrS,QAAStrS,KAAKurS,QAASvrS,KAAKwrS,QAASxrS,KAAKmrS,GAAI+B,GAAc,GACtFzsF,GAAaysF,QAEV,GAAIhlQ,EAAS,EAAG,CACrB,MAAOu4K,EAAY0sF,EACjBntS,KAAK2rS,gBAAgB3rS,KAAKsrS,QAAStrS,KAAKurS,QAASvrS,KAAKwrS,QAASxrS,KAAKmrS,GAAI,GAAG,GAC3E1qF,GAAa,EAGXysF,IACFltS,KAAK2rS,gBAAgB3rS,KAAKsrS,QAAStrS,KAAKurS,QAASvrS,KAAKwrS,QAASxrS,KAAKmrS,IAAK+B,GAAc,GACvFzsF,GAAaysF,GAIjBhsS,EAAoB,IAAhBlB,KAAKoQ,KAAKjK,EAAU,EAAInG,KAAKgsS,eAAiB,EAClD9+C,EAAsB,IAAhBltP,KAAKoQ,KAAKjK,EAAU,GAAK,EAC/BymS,EAAO5sS,KAAKgsS,eAIZ,MAAOY,EAAM,CAQX,GAPA59L,EAAQhvG,KAAK+rS,UAAU7qS,GAAG41J,GAC1B61I,EAAiB39L,EAAMA,EAAM3tG,OAAS,GAAGqnP,UAAU6kD,OAAO3nS,EAAE6vH,MAC5D2nJ,EAAOuvB,EAAetrS,OACtB2tG,EAAMA,EAAM3tG,OAAS,GAAGqnP,UAAU6kD,OAAOvT,MAAO,EAChDhrL,EAAMA,EAAM3tG,OAAS,GAAGqnP,UAAU7iP,GAAGm0R,MAAO,EAC5ChrL,EAAMA,EAAM3tG,OAAS,GAAGqnP,UAAU7iP,GAAGD,EAA4B,IAAxB5F,KAAKgsS,eAAuBhsS,KAAKorS,GAAGxlS,EAAI5F,KAAKorS,GAAGxlS,GAAK5F,KAAKqrS,GAAGzlS,EAAI5F,KAAKorS,GAAGxlS,IAAM1E,GAAKlB,KAAKgsS,eAAiB,IAEjI,IAAdvrF,EAAiB,CASnB,KARU,IAANv/M,GAAmB,IAARgsP,GAAahsP,IAAMlB,KAAKgsS,eAAiB,IAAc,IAAT9+C,IAC3DltP,KAAK2rS,gBAAgB3rS,KAAKsrS,QAAStrS,KAAKurS,QAASvrS,KAAKwrS,QAASxrS,KAAKmrS,GAAI,GAAG,GAG7EnrS,KAAK0rS,OAAOhjD,UAAU2kD,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KACvMrtS,KAAK0rS,OAAOhjD,UAAU4kD,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KACvMttS,KAAK0rS,OAAOhjD,UAAU0kD,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KAElMvmS,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzB8lS,EAAe9lS,GAAK7G,KAAK0rS,OAAOj2K,MAAM5uH,GAGxC7G,KAAK0rS,OAAO3sN,aAIZ,IAFA/+E,KAAK0rS,OAAO3sN,QAEPl4E,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzB8lS,EAAe9lS,GAAK7G,KAAK0rS,OAAOj2K,MAAM5uH,GAI1C45M,GAAa,EACbmsF,GAAQ,EACR1rS,GAAKgsP,OAEF,CACL0/C,EAAO5sS,KAAKgsS,eACZ9qS,EAAI,EACJgsP,EAAM,EAEN,MAAO0/C,EACL59L,EAAQhvG,KAAK+rS,UAAU7qS,GAAG41J,GAC1B61I,EAAiB39L,EAAMA,EAAM3tG,OAAS,GAAGqnP,UAAU6kD,OAAO3nS,EAAE6vH,MAC5DzmB,EAAMA,EAAM3tG,OAAS,GAAGqnP,UAAU6kD,OAAOvT,MAAO,EAChDhrL,EAAMA,EAAM3tG,OAAS,GAAGqnP,UAAU7iP,GAAGm0R,MAAO,EAC5C4S,GAAQ,EACR1rS,GAAKgsP,EAIT,OAAO2/C,GAGTnC,iBAAiBxqS,UAAU28R,SAAW,aAItChnB,gBAAgB,CAACgxB,eAAgB8D,sBAEjCA,qBAAqBzqS,UAAU8mS,uBAAyB,SAAU9a,EAAM97Q,GACtEpQ,KAAK+yO,SAAW/yO,KAAKmnS,YACrBnnS,KAAKwtS,GAAKjY,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKhK,EAAG,EAAG,KAAMpG,MACzDA,KAAKm7R,cAAgBn7R,KAAKwtS,GAAGrT,gBAAgB94R,QAG/CspS,qBAAqBzqS,UAAU+oS,YAAc,SAAU77M,EAAMh8D,GAC3D,IAEIlwB,EAFAkoS,EAAa5M,UAAUpM,aAC3BgZ,EAAWn1N,EAAImZ,EAAKnZ,EAEpB,IACIw5N,EACAC,EACAC,EACAC,EACAC,EACAC,EAEAjS,EACAC,EACAC,EACAC,EACAC,EACAC,EAbAr7L,EAAMzT,EAAK6iM,QAOX39O,EAAQ,EAQZ,IAAKpxC,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBusS,EAAWrgN,EAAKxnF,EAAE1E,GAClBysS,EAAWvgN,EAAKlnF,EAAEhF,GAClBwsS,EAAWtgN,EAAKlsF,EAAEA,GAEdusS,EAAS,KAAOE,EAAS,IAAMF,EAAS,KAAOE,EAAS,IAAMF,EAAS,KAAOC,EAAS,IAAMD,EAAS,KAAOC,EAAS,GAC7G,IAANxsS,GAAWA,IAAM2/F,EAAM,GAAOzT,EAAKnZ,GASpC25N,EADQ,IAAN1sS,EACQksF,EAAKxnF,EAAEi7F,EAAM,GAEbzT,EAAKxnF,EAAE1E,EAAI,GAGvB2sS,EAAW5+R,KAAKwpQ,KAAKxpQ,KAAKmvH,IAAIqvK,EAAS,GAAKG,EAAQ,GAAI,GAAK3+R,KAAKmvH,IAAIqvK,EAAS,GAAKG,EAAQ,GAAI,IAChGE,EAAaD,EAAW5+R,KAAKs2C,IAAIsoP,EAAW,EAAGz8Q,GAASy8Q,EAAW,EACnE5R,EAAKwR,EAAS,IAAMG,EAAQ,GAAKH,EAAS,IAAMK,EAChDjS,EAAKI,EACLC,EAAKuR,EAAS,IAAMA,EAAS,GAAKG,EAAQ,IAAME,EAChDhS,EAAKI,EACLH,EAAKF,GAAMA,EAAK4R,EAAS,IAAMp0B,YAC/B2iB,EAAKF,GAAMA,EAAK2R,EAAS,IAAMp0B,YAC/B+vB,EAAWxN,YAAYC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAI5pP,GAC/CA,GAAS,EAGPs7P,EADE1sS,IAAM2/F,EAAM,EACJzT,EAAKxnF,EAAE,GAEPwnF,EAAKxnF,EAAE1E,EAAI,GAGvB2sS,EAAW5+R,KAAKwpQ,KAAKxpQ,KAAKmvH,IAAIqvK,EAAS,GAAKG,EAAQ,GAAI,GAAK3+R,KAAKmvH,IAAIqvK,EAAS,GAAKG,EAAQ,GAAI,IAChGE,EAAaD,EAAW5+R,KAAKs2C,IAAIsoP,EAAW,EAAGz8Q,GAASy8Q,EAAW,EACnE9R,EAAK0R,EAAS,IAAMG,EAAQ,GAAKH,EAAS,IAAMK,EAChDjS,EAAKE,EACLC,EAAKyR,EAAS,IAAMG,EAAQ,GAAKH,EAAS,IAAMK,EAChDhS,EAAKE,EACLC,EAAKJ,GAAMA,EAAK4R,EAAS,IAAMp0B,YAC/B6iB,EAAKJ,GAAMA,EAAK2R,EAAS,IAAMp0B,YAC/B+vB,EAAWxN,YAAYC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAI5pP,GAC/CA,GAAS,IAvCT82P,EAAWxN,YAAY6R,EAAS,GAAIA,EAAS,GAAIE,EAAS,GAAIA,EAAS,GAAID,EAAS,GAAIA,EAAS,GAAIp7P,GAKrGA,GAAS,IAqCX82P,EAAWxN,YAAYxuM,EAAKxnF,EAAE1E,GAAG,GAAIksF,EAAKxnF,EAAE1E,GAAG,GAAIksF,EAAKlnF,EAAEhF,GAAG,GAAIksF,EAAKlnF,EAAEhF,GAAG,GAAIksF,EAAKlsF,EAAEA,GAAG,GAAIksF,EAAKlsF,EAAEA,GAAG,GAAIoxC,GAC3GA,GAAS,GAIb,OAAO82P,GAGTuB,qBAAqBzqS,UAAU6nS,cAAgB,SAAU1N,GACvD,IAAI2N,EACA9mS,EAEA2F,EACAu2Q,EAIEqV,EACAkL,EAPF98L,EAAM7gG,KAAKi+Q,OAAO58Q,OAGlBmsS,EAAKxtS,KAAKwtS,GAAG5nS,EAEjB,GAAW,IAAP4nS,EAIF,IAAKtsS,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAAG,CAI3B,GAHAuxR,EAAYzyR,KAAKi+Q,OAAO/8Q,GACxBy8R,EAAuBlL,EAAUkL,qBAE1BlL,EAAUiK,MAAM1C,MAASh6R,KAAKg6R,MAASK,EAM5C,IALAsD,EAAqBb,gBACrBrK,EAAUiK,MAAM1C,MAAO,EACvBgO,EAAavV,EAAUiK,MAAMnrC,MAAM0sB,OACnCb,EAAOqV,EAAUiK,MAAMnrC,MAAM0+B,QAExBppR,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzB82R,EAAqBd,SAAS78R,KAAKipS,YAAYjB,EAAWnhS,GAAI2mS,IAIlE/a,EAAUiK,MAAMnrC,MAAQkhC,EAAUkL,qBAIjC39R,KAAKk7R,kBAAkB75R,SAC1BrB,KAAKg6R,MAAO,IAoDhB,IAAI+T,YAAc,WAChB,IAAIC,EAAiB,IACjBC,EAAY,CACdtxM,EAAG,EACH9+D,KAAM,EACNogP,OAAQ,GACR7tQ,KAAM,CACJ6tQ,OAAQ,KAGRiwB,EAAqB,GAEzBA,EAAqBA,EAAmB1nS,OAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAChP,IAAI2nS,EAAqB,CAAC,WAAY,WAAY,WAAY,WAAY,YACtEC,EAAkB,CAAC,MAAO,MAE9B,SAASC,EAAgBC,GACvB,IACIptS,EADAqtS,EAAcD,EAAKl3R,MAAM,KAEzBypF,EAAM0tM,EAAYltS,OAClBmtS,EAAkB,GAEtB,IAAKttS,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACD,eAAnBqtS,EAAYrtS,IAA0C,cAAnBqtS,EAAYrtS,IACjDstS,EAAgBxoS,KAAKuoS,EAAYrtS,IAIrC,OAAOstS,EAAgBxoR,KAAK,KAG9B,SAASyoR,EAAUH,EAAMI,GACvB,IAAI3jO,EAAa6qM,UAAU,QAE3B7qM,EAAWH,aAAa,eAAe,GACvCG,EAAWP,MAAMmkO,WAAaD,EAC9B,IAAI/gI,EAAOioG,UAAU,QAErBjoG,EAAK++C,UAAY,iBAEjB3hJ,EAAWP,MAAME,SAAW,WAC5BK,EAAWP,MAAM5K,KAAO,WACxBmL,EAAWP,MAAM9K,IAAM,WAEvBqL,EAAWP,MAAMokO,SAAW,QAE5B7jO,EAAWP,MAAMqkO,YAAc,SAC/B9jO,EAAWP,MAAMskO,UAAY,SAC7B/jO,EAAWP,MAAMukO,WAAa,SAC9BhkO,EAAWP,MAAMwkO,cAAgB,IACjCjkO,EAAWD,YAAY6iG,GACvBh4H,SAAS3wC,KAAK8lE,YAAYC,GAE1B,IAAIxL,EAAQouG,EAAKshI,YAEjB,OADAthI,EAAKnjG,MAAMmkO,WAAaN,EAAgBC,GAAQ,KAAOI,EAChD,CACL/gI,KAAMA,EACNhxE,EAAGp9B,EACH1gB,OAAQksB,GAIZ,SAASmkO,IACP,IAAIhuS,EAEAysK,EACAhxE,EAFAkE,EAAM7gG,KAAK6nR,MAAMxmR,OAGjB8tS,EAActuM,EAElB,IAAK3/F,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACpBlB,KAAK6nR,MAAM3mR,GAAGkuS,OAChBD,GAAe,EACoB,MAA1BnvS,KAAK6nR,MAAM3mR,GAAGmuS,SAA4C,IAAzBrvS,KAAK6nR,MAAM3mR,GAAGs9C,OACxDx+C,KAAK6nR,MAAM3mR,GAAGkuS,QAAS,GAEvBzhI,EAAO3tK,KAAK6nR,MAAM3mR,GAAGouS,SAAS3hI,KAC9BhxE,EAAI38F,KAAK6nR,MAAM3mR,GAAGouS,SAAS3yM,EAEvBgxE,EAAKshI,cAAgBtyM,GACvBwyM,GAAe,EACfnvS,KAAK6nR,MAAM3mR,GAAGkuS,QAAS,IAEvBzhI,EAAO3tK,KAAK6nR,MAAM3mR,GAAGquS,SAAS5hI,KAC9BhxE,EAAI38F,KAAK6nR,MAAM3mR,GAAGquS,SAAS5yM,EAEvBgxE,EAAKshI,cAAgBtyM,IACvBwyM,GAAe,EACfnvS,KAAK6nR,MAAM3mR,GAAGkuS,QAAS,IAIvBpvS,KAAK6nR,MAAM3mR,GAAGkuS,SAChBpvS,KAAK6nR,MAAM3mR,GAAGquS,SAAS1wP,OAAOksB,WAAWC,YAAYhrE,KAAK6nR,MAAM3mR,GAAGquS,SAAS1wP,QAC5E7+C,KAAK6nR,MAAM3mR,GAAGouS,SAASzwP,OAAOksB,WAAWC,YAAYhrE,KAAK6nR,MAAM3mR,GAAGouS,SAASzwP,UAK9D,IAAhBswP,GAAqB3gR,KAAKkC,MAAQ1wB,KAAKyrR,SAAWuiB,EACpDtlQ,WAAW1oC,KAAKwvS,uBAAwB,IAExC9mQ,WAAW1oC,KAAKyvS,kBAAmB,IAIvC,SAASC,EAAa7E,EAAU8E,GAC9B,IACIC,EADAC,EAASl6P,SAAS3wC,MAAQ2qS,EAAM,MAAQ,SAExCG,EAAYlF,kBAAkBC,GAElC,GAAe,QAAXgF,EAAkB,CACpB,IAAIE,EAAU7zB,SAAS,QACvB6zB,EAAQvlO,MAAMokO,SAAW,QAEzBmB,EAAQnlO,aAAa,cAAeigO,EAASmF,SAC7CD,EAAQnlO,aAAa,aAAcklO,EAAUtlO,OAC7CulO,EAAQnlO,aAAa,cAAeklO,EAAU5E,QAC9C6E,EAAQphG,YAAc,IAElBk8F,EAASoF,QACXF,EAAQvlO,MAAMmkO,WAAa,UAC3BoB,EAAQnlO,aAAa,QAASigO,EAASoF,SAEvCF,EAAQvlO,MAAMmkO,WAAa9D,EAASmF,QAGtCL,EAAI7kO,YAAYilO,GAChBH,EAASG,MACJ,CACL,IAAIG,EAAgB,IAAIC,gBAAgB,IAAK,KAAK7jE,WAAW,MAC7D4jE,EAAc5B,KAAOwB,EAAUtlO,MAAQ,IAAMslO,EAAU5E,OAAS,UAAYL,EAASmF,QACrFJ,EAASM,EAGX,SAASjiO,EAAQglB,GACf,MAAe,QAAX48M,GACFD,EAAOjhG,YAAc17G,EACd28M,EAAOQ,yBAGTR,EAAOS,YAAYp9M,GAAM1zB,MAGlC,MAAO,CACL8wO,YAAapiO,GAIjB,SAAS+5M,EAAS6iB,EAAU3jB,GAC1B,GAAK2jB,EAAL,CAKA,GAAI7qS,KAAKsmG,MAGP,OAFAtmG,KAAKolR,UAAW,OAChBplR,KAAK6nR,MAAQgjB,EAASpiI,MAIxB,IAAK9yH,SAAS3wC,KAOZ,OANAhF,KAAKolR,UAAW,EAChBylB,EAASpiI,KAAK3lK,SAAQ,SAAUsN,GAC9BA,EAAKw/R,OAASF,EAAat/R,GAC3BA,EAAKqY,MAAQ,WAEfzoB,KAAK6nR,MAAQgjB,EAASpiI,MAIxB,IACIvnK,EADAovS,EAAUzF,EAASpiI,KAEnB5nE,EAAMyvM,EAAQjvS,OACdkvS,EAAgB1vM,EAEpB,IAAK3/F,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAAG,CAC3B,IACIsvS,EACA3pS,EAFA4pS,GAAiB,EAOrB,GAJAH,EAAQpvS,GAAGkuS,QAAS,EACpBkB,EAAQpvS,GAAGouS,SAAWb,EAAU6B,EAAQpvS,GAAG8uS,QAAS,aACpDM,EAAQpvS,GAAGquS,SAAWd,EAAU6B,EAAQpvS,GAAG8uS,QAAS,cAE/CM,EAAQpvS,GAAGwvS,OAGT,GAA2B,MAAvBJ,EAAQpvS,GAAGmuS,SAAyC,IAAtBiB,EAAQpvS,GAAGs9C,QAOlD,GANAgyP,EAAiB76P,SAASg7P,iBAAiB,kCAAoCL,EAAQpvS,GAAG8uS,QAAU,qCAAuCM,EAAQpvS,GAAG8uS,QAAU,MAE5JQ,EAAenvS,OAAS,IAC1BovS,GAAiB,GAGfA,EAAgB,CAClB,IAAIxvS,EAAI20Q,UAAU,SAClB30Q,EAAE2pE,aAAa,YAAa0lO,EAAQpvS,GAAGmuS,SACvCpuS,EAAE2pE,aAAa,WAAY0lO,EAAQpvS,GAAGs9C,QACtCv9C,EAAE2pE,aAAa,WAAY0lO,EAAQpvS,GAAG8uS,SACtC/uS,EAAEisB,KAAO,WACTjsB,EAAEyrN,UAAY,4BAA8B4jF,EAAQpvS,GAAG8uS,QAAU,mCAAqCM,EAAQpvS,GAAGwvS,MAAQ,OACzHxpB,EAAKp8M,YAAY7pE,SAEd,GAA2B,MAAvBqvS,EAAQpvS,GAAGmuS,SAAyC,IAAtBiB,EAAQpvS,GAAGs9C,OAAc,CAGhE,IAFAgyP,EAAiB76P,SAASg7P,iBAAiB,2CAEtC9pS,EAAI,EAAGA,EAAI2pS,EAAenvS,OAAQwF,GAAK,GACgB,IAAtD2pS,EAAe3pS,GAAGo4C,KAAK/jC,QAAQo1R,EAAQpvS,GAAGwvS,SAE5CD,GAAiB,GAIrB,GAAIA,EAAgB,CAClB,IAAIziJ,EAAI4nH,UAAU,QAClB5nH,EAAEpjF,aAAa,YAAa0lO,EAAQpvS,GAAGmuS,SACvCrhJ,EAAEpjF,aAAa,WAAY0lO,EAAQpvS,GAAGs9C,QACtCwvG,EAAE9gI,KAAO,WACT8gI,EAAE4iJ,IAAM,aACR5iJ,EAAE/uG,KAAOqxP,EAAQpvS,GAAGwvS,MACpB/6P,SAAS3wC,KAAK8lE,YAAYkjF,SAEvB,GAA2B,MAAvBsiJ,EAAQpvS,GAAGmuS,SAAyC,IAAtBiB,EAAQpvS,GAAGs9C,OAAc,CAGhE,IAFAgyP,EAAiB76P,SAASg7P,iBAAiB,+CAEtC9pS,EAAI,EAAGA,EAAI2pS,EAAenvS,OAAQwF,GAAK,EACtCypS,EAAQpvS,GAAGwvS,QAAUF,EAAe3pS,GAAGwjE,MAEzComO,GAAiB,GAIrB,GAAIA,EAAgB,CAClB,IAAII,EAAKj7B,UAAU,QACnBi7B,EAAGjmO,aAAa,YAAa0lO,EAAQpvS,GAAGmuS,SACxCwB,EAAGjmO,aAAa,WAAY0lO,EAAQpvS,GAAGs9C,QACvCqyP,EAAGjmO,aAAa,MAAO,cACvBimO,EAAGjmO,aAAa,OAAQ0lO,EAAQpvS,GAAGwvS,OACnCxpB,EAAKp8M,YAAY+lO,UArDnBP,EAAQpvS,GAAGkuS,QAAS,EACpBmB,GAAiB,EAwDnBD,EAAQpvS,GAAG0uS,OAASF,EAAaY,EAAQpvS,GAAIgmR,GAC7CopB,EAAQpvS,GAAGunB,MAAQ,GACnBzoB,KAAK6nR,MAAM7hR,KAAKsqS,EAAQpvS,IAGJ,IAAlBqvS,EACFvwS,KAAKolR,UAAW,EAIhB18O,WAAW1oC,KAAKkvS,iBAAiB7rP,KAAKrjD,MAAO,UArG7CA,KAAKolR,UAAW,EAyGpB,SAAS2C,EAASzhL,GAChB,GAAKA,EAAL,CAQA,IAAIplG,EAJClB,KAAKsmG,QACRtmG,KAAKsmG,MAAQ,IAIf,IACIz/F,EAEA4oL,EAHA5uF,EAAMyF,EAAMjlG,OAEZ+7Q,EAAOp9Q,KAAKsmG,MAAMjlG,OAGtB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAAG,CAC3B2F,EAAI,EACJ4oL,GAAQ,EAER,MAAO5oL,EAAIu2Q,EACLp9Q,KAAKsmG,MAAMz/F,GAAG2jE,QAAU87B,EAAMplG,GAAGspE,OAASxqE,KAAKsmG,MAAMz/F,GAAGmpS,UAAY1pM,EAAMplG,GAAG8uS,SAAWhwS,KAAKsmG,MAAMz/F,GAAG4iK,KAAOnjE,EAAMplG,GAAGuoK,KACxHgmB,GAAQ,GAGV5oL,GAAK,EAGF4oL,IACHzvL,KAAKsmG,MAAMtgG,KAAKsgG,EAAMplG,IACtBk8Q,GAAQ,KAKd,SAAS0zB,EAAYC,EAAOvmO,EAAO8jO,GACjC,IAAIptS,EAAI,EACJ2/F,EAAM7gG,KAAKsmG,MAAMjlG,OAErB,MAAOH,EAAI2/F,EAAK,CACd,GAAI7gG,KAAKsmG,MAAMplG,GAAGuoK,KAAOsnI,GAAS/wS,KAAKsmG,MAAMplG,GAAGspE,QAAUA,GAASxqE,KAAKsmG,MAAMplG,GAAG8uS,UAAY1B,EAC3F,OAAOtuS,KAAKsmG,MAAMplG,GAGpBA,GAAK,EASP,OANsB,kBAAV6vS,GAA8C,KAAxBA,EAAMjhS,WAAW,KAAcihS,IAAUp6N,SAAWA,QAAQu+E,OAC1Fl1J,KAAKgxS,UACPhxS,KAAKgxS,SAAU,EACfr6N,QAAQu+E,KAAK,oDAAqD67I,EAAOvmO,EAAO8jO,IAG3EL,EAGT,SAASoC,EAAYY,EAAQC,EAAUrzQ,GACrC,IAAIgtQ,EAAW7qS,KAAKmxS,cAAcD,GAE9B5+P,EAAQ2+P,EAAOnhS,WAAW,GAE9B,IAAK+6R,EAASpiR,MAAM6pB,EAAQ,GAAI,CAC9B,IAAIy9P,EAAUlF,EAAS+E,OAEvB,GAAe,MAAXqB,EAAgB,CAClB,IAAIG,EAAarB,EAAQM,YAAY,IAAMY,EAAS,KAChDI,EAAatB,EAAQM,YAAY,MACrCxF,EAASpiR,MAAM6pB,EAAQ,IAAM8+P,EAAaC,GAAc,SAExDxG,EAASpiR,MAAM6pB,EAAQ,GAAKy9P,EAAQM,YAAYY,GAAU,IAI9D,OAAOpG,EAASpiR,MAAM6pB,EAAQ,GAAKzU,EAGrC,SAASszQ,EAAc99R,GACrB,IAAInS,EAAI,EACJ2/F,EAAM7gG,KAAK6nR,MAAMxmR,OAErB,MAAOH,EAAI2/F,EAAK,CACd,GAAI7gG,KAAK6nR,MAAM3mR,GAAGowS,QAAUj+R,EAC1B,OAAOrT,KAAK6nR,MAAM3mR,GAGpBA,GAAK,EAGP,OAAOlB,KAAK6nR,MAAM,GAGpB,SAAS0pB,EAAWC,EAAeC,GACjC,IAAI19B,EAAMy9B,EAAcjjS,SAAS,IAAMkjS,EAAeljS,SAAS,IAC/D,OAA4C,IAArC4/R,EAAmBjzR,QAAQ64P,GAGpC,SAAS29B,EAAkBF,EAAeC,GACxC,OAAKA,EAIED,IAAkBpD,EAAgB,IAAMqD,IAAmBrD,EAAgB,GAHzEoD,IAAkBpD,EAAgB,GAM7C,SAASuD,EAAoBC,GAC3B,OAA+C,IAAxC1D,EAAmBhzR,QAAQ02R,GAGpC,SAASC,IACP7xS,KAAKolR,UAAW,EAGlB,IAAI0sB,EAAO,WACT9xS,KAAK6nR,MAAQ,GACb7nR,KAAKsmG,MAAQ,KACbtmG,KAAK+xS,cAAgB,EACrB/xS,KAAKolR,UAAW,EAChBplR,KAAKgxS,SAAU,EACfhxS,KAAKyrR,SAAWj9P,KAAKkC,MACrB1wB,KAAKyvS,kBAAoBzvS,KAAK6xS,YAAYxuP,KAAKrjD,MAC/CA,KAAKwvS,uBAAyBxvS,KAAKkvS,iBAAiB7rP,KAAKrjD,OAG3D8xS,EAAKP,WAAaA,EAClBO,EAAKJ,kBAAoBA,EACzBI,EAAKH,oBAAsBA,EAC3B,IAAIK,EAAgB,CAClBjqB,SAAUA,EACVC,SAAUA,EACV8oB,YAAaA,EACbK,cAAeA,EACfd,YAAaA,EACbnB,iBAAkBA,EAClB2C,YAAaA,GAGf,OADAC,EAAK5xS,UAAY8xS,EACVF,EAtYS,GAyYlB,SAASG,qBAETA,kBAAkB/xS,UAAY,CAC5BgyS,eAAgB,WAEdlyS,KAAKmyS,WAAY,EAEjBnyS,KAAKoyS,QAAS,EAEdpyS,KAAKqyS,eAAgB,EAErBryS,KAAKsyS,qBAAuB,IAE9BC,uBAAwB,SAAgCC,IACA,IAAlDxyS,KAAKsyS,qBAAqBp3R,QAAQs3R,IACpCxyS,KAAKsyS,qBAAqBtsS,KAAKwsS,IAGnCC,0BAA2B,SAAmCD,IACN,IAAlDxyS,KAAKsyS,qBAAqBp3R,QAAQs3R,IACpCxyS,KAAKsyS,qBAAqB9hM,OAAOxwG,KAAKsyS,qBAAqBp3R,QAAQs3R,GAAY,IAGnFE,uBAAwB,SAAgCrkS,GACtDrO,KAAK2yS,iBAAiBtkS,IAExBukS,kBAAmB,WACb5yS,KAAK6yS,eAAeC,MAAM5sS,EAAEN,GAAK,GAC9B5F,KAAKqyS,eAAiBryS,KAAKinR,WAAW8rB,aAAaC,oBACtDhzS,KAAKqyS,eAAgB,EACrBryS,KAAKkrR,QAEElrR,KAAKqyS,gBACdryS,KAAKqyS,eAAgB,EACrBryS,KAAKmrR,SAYTwnB,iBAAkB,SAA0BtkS,GACtCrO,KAAKoQ,KAAKqjH,GAAKzzH,KAAKoQ,KAAKivQ,IAAMhxQ,GAAOrO,KAAKoQ,KAAKvK,GAAK7F,KAAKoQ,KAAKivQ,GAAKhxQ,GAC/C,IAAnBrO,KAAKmyS,YACPnyS,KAAKinR,WAAW+S,MAAO,EACvBh6R,KAAKg6R,MAAO,EACZh6R,KAAKmyS,WAAY,EACjBnyS,KAAKmrR,SAEqB,IAAnBnrR,KAAKmyS,YACdnyS,KAAKinR,WAAW+S,MAAO,EACvBh6R,KAAKmyS,WAAY,EACjBnyS,KAAKkrR,SAGT+nB,iBAAkB,WAChB,IAAI/xS,EACA2/F,EAAM7gG,KAAKsyS,qBAAqBjxS,OAEpC,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKsyS,qBAAqBpxS,GAAGkoR,YAAYppR,KAAKq6R,gBAMlD6Y,iBAAkB,WAChB,MAAO,CACLxzO,IAAK,EACLE,KAAM,EACNL,MAAO,IACPE,OAAQ,MAGZ0zO,aAAc,WACZ,OAAqB,IAAjBnzS,KAAKoQ,KAAKytQ,GACL,CACLlhL,EAAG38F,KAAKoQ,KAAKgjS,SAAS7zO,MACtBi8C,EAAGx7G,KAAKoQ,KAAKgjS,SAAS3zO,QAInB,CACLk9B,EAAG38F,KAAKoQ,KAAKmvD,MACbi8C,EAAGx7G,KAAKoQ,KAAKqvD,UAKnB,IAAI4zO,qBAAuB,WACzB,SAASC,EAAcC,EAAMnjS,GAC3BpQ,KAAKwzS,MAAQD,EACbvzS,KAAK0gO,MAAQtwN,EAGf7Q,OAAO6uC,eAAeklQ,EAAcpzS,UAAW,WAAY,CACzDwB,IAAK,WAKH,OAJI1B,KAAKwzS,MAAM/yN,KAAK95E,GAClB3G,KAAKwzS,MAAM/yN,KAAKsyJ,WAGX/yO,KAAKwzS,MAAM/yN,QAGtBlhF,OAAO6uC,eAAeklQ,EAAcpzS,UAAW,cAAe,CAC5DwB,IAAK,WAKH,OAJI1B,KAAKwzS,MAAM3tS,GAAGc,GAChB3G,KAAKwzS,MAAM3tS,GAAGktO,WAGS,IAAlB/yO,KAAKwzS,MAAM3tS,GAAGD,KAIzB,IAAI6tS,EAAc,SAAqBC,GACrC,IAEIxyS,EAFAyyS,EAAmB37B,iBAAiB07B,EAAYE,SAASvyS,QAGzDw/F,EAAM6yM,EAAYE,SAASvyS,OAE/B,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxByyS,EAAiBzyS,GAAK,IAAIoyS,EAAcI,EAAYE,SAAS1yS,GAAIwyS,EAAYh2B,gBAAgBx8Q,IAG/F,IAAI2yS,EAAe,SAAsBxgS,GACvCnS,EAAI,EAEJ,MAAOA,EAAI2/F,EAAK,CACd,GAAI6yM,EAAYh2B,gBAAgBx8Q,GAAGwjR,KAAOrxQ,EACxC,OAAOsgS,EAAiBzyS,GAG1BA,GAAK,EAGP,OAAO,MAGT,OAAO2yS,GAGT,OAAOJ,EApDkB,GAuDvBK,4BAA8B,WAChC,IAAIC,EAA6B,CAC/Bje,GAAI,EACJlwR,EAAG,EACHm0R,KAAM,GAEJia,EAA+B,CACjCle,GAAI,CAAC,EAAG,EAAG,GACXlwR,EAAG,CAAC,EAAG,EAAG,GACVm0R,KAAM,GAGR,SAASka,EAAiBC,EAAiBl9M,EAAU9pE,GACnD3tB,OAAO6uC,eAAe8lQ,EAAiB,WAAY,CACjDxyS,IAAK,WACH,OAAOs1F,EAASm9M,kBAAkBn9M,EAASsnL,KAAKuG,iBAGpDqvB,EAAgBE,QAAUp9M,EAASo/L,UAAYp/L,EAASo/L,UAAU/0R,OAAS,EAE3E6yS,EAAgBt4R,IAAM,SAAUw4D,GAC9B,IAAK8/N,EAAgBE,QACnB,OAAO,EAGT,IAAI9vS,EAAQ,GAGVA,EADE,MAAO0yF,EAASo/L,UAAUhiN,EAAM,GAC1B4iB,EAASo/L,UAAUhiN,EAAM,GAAGnzE,EAC3B,MAAO+1F,EAASo/L,UAAUhiN,EAAM,GACjC4iB,EAASo/L,UAAUhiN,EAAM,GAAG1vE,EAE5BsyF,EAASo/L,UAAUhiN,EAAM,GAAGnzE,EAGtC,IAAIozS,EAAqB,mBAATnnR,EAA4B,IAAIkb,OAAO9jC,GAAS/E,OAAOwB,OAAO,GAAIuD,GAIlF,OAFA+vS,EAAUjvP,KAAO4xC,EAASo/L,UAAUhiN,EAAM,GAAGpzE,EAAIg2F,EAASk1L,KAAK5N,KAAK2I,WAAW3B,UAC/E+uB,EAAU/vS,MAAiB,mBAAT4oB,EAA4B5oB,EAAM,GAAKA,EAClD+vS,GAGTH,EAAgBI,YAAct9M,EAASqzM,eACvC6J,EAAgBK,YAAcv9M,EAASw9M,eACvCN,EAAgBO,eAAiBz9M,EAASm9M,kBAC1CD,EAAgBQ,cAAgB19M,EAAS09M,cAG3C,SAASC,EAAgC39M,GAClCA,GAAc,OAAQA,IACzBA,EAAW+8M,GAGb,IAAIha,EAAO,EAAI/iM,EAAS+iM,KACpB76P,EAAM83D,EAAS8+L,GAAKiE,EACpBma,EAAkB,IAAI9rQ,OAAOlJ,GAIjC,OAFAg1Q,EAAgB5vS,MAAQ46B,EACxB+0Q,EAAiBC,EAAiBl9M,EAAU,kBACrC,WAcL,OAbIA,EAASrwF,GACXqwF,EAAS+7I,WAGX7zM,EAAM83D,EAASpxF,EAAIm0R,EAEfma,EAAgB5vS,QAAU46B,IAC5Bg1Q,EAAkB,IAAI9rQ,OAAOlJ,GAE7Bg1Q,EAAgB5vS,MAAQ46B,EACxB+0Q,EAAiBC,EAAiBl9M,EAAU,mBAGvCk9M,GAIX,SAASU,EAAkC59M,GACpCA,GAAc,OAAQA,IACzBA,EAAWg9M,GAGb,IAAIja,EAAO,EAAI/iM,EAAS+iM,KACpBl5L,EAAM7J,EAAS5mF,MAAQ4mF,EAAS5mF,KAAK49I,GAAKh3D,EAAS8+L,GAAGz0R,OACtD6yS,EAAkBx8B,iBAAiB,UAAW72K,GAC9C+hK,EAAW8U,iBAAiB,UAAW72K,GAG3C,OAFAqzM,EAAgB5vS,MAAQs+P,EACxBqxC,EAAiBC,EAAiBl9M,EAAU,oBACrC,WACDA,EAASrwF,GACXqwF,EAAS+7I,WAGX,IAAK,IAAI7xO,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAC5B0hQ,EAAS1hQ,GAAK81F,EAASpxF,EAAE1E,GAAK64R,EAC9Bma,EAAgBhzS,GAAK0hQ,EAAS1hQ,GAGhC,OAAOgzS,GAKX,SAASW,IACP,OAAOd,EAGT,OAAO,SAAU/8M,GACf,OAAKA,EAIqB,mBAAtBA,EAAS6+L,SACJ8e,EAAgC39M,GAGlC49M,EAAkC59M,GAPhC69M,GA7GqB,GAwH9BC,6BAA+B,WACjC,OAAO,SAAUpsD,GACf,SAASqsD,EAAc1hS,GACrB,OAAQA,GACN,IAAK,QACL,IAAK,QACL,IAAK,aACL,KAAK,EACH,OAAO0hS,EAActT,MAEvB,IAAK,WACL,IAAK,WACL,IAAK,gBACL,IAAK,gBACL,KAAK,GACH,OAAOsT,EAAcC,SAEvB,IAAK,gBACH,OAAOD,EAAcE,UAEvB,IAAK,gBACH,OAAOF,EAAcG,UAEvB,IAAK,WACL,IAAK,WACL,IAAK,gBACL,KAAK,EACH,OAAOH,EAAcrqO,SAEvB,IAAK,kBACH,OAAOqqO,EAAcI,UAEvB,IAAK,kBACH,OAAOJ,EAAcK,UAEvB,IAAK,kBACH,OAAOL,EAAcM,UAEvB,IAAK,cACL,IAAK,cACL,IAAK,eACL,IAAK,mBACL,KAAK,EACH,OAAON,EAAcO,YAEvB,IAAK,UACL,IAAK,UACL,KAAK,GACH,OAAOP,EAAcQ,QAEvB,QACE,OAAO,MAoBb,IAAIC,EAEAC,EAEAC,EAEAC,EA8CJ,OApEAp2S,OAAO6uC,eAAe2mQ,EAAe,WAAY,CAC/CrzS,IAAKoyS,4BAA4BprD,EAAUtiP,GAAKsiP,EAAU+gD,MAE5DlqS,OAAO6uC,eAAe2mQ,EAAe,YAAa,CAChDrzS,IAAKoyS,4BAA4BprD,EAAU+gD,IAAM/gD,EAAUtiP,KAE7D7G,OAAO6uC,eAAe2mQ,EAAe,YAAa,CAChDrzS,IAAKoyS,4BAA4BprD,EAAU3/D,MAE7CxpL,OAAO6uC,eAAe2mQ,EAAe,YAAa,CAChDrzS,IAAKoyS,4BAA4BprD,EAAUghD,MAE7CnqS,OAAO6uC,eAAe2mQ,EAAe,QAAS,CAC5CrzS,IAAKoyS,4BAA4BprD,EAAUznP,KAWzCynP,EAAU7oP,EACZ81S,EAAoB7B,4BAA4BprD,EAAU7oP,IAE1D21S,EAAM1B,4BAA4BprD,EAAUihD,IAC5C8L,EAAM3B,4BAA4BprD,EAAUkhD,IAExClhD,EAAUmhD,KACZ6L,EAAM5B,4BAA4BprD,EAAUmhD,MAIhDtqS,OAAO6uC,eAAe2mQ,EAAe,WAAY,CAC/CrzS,IAAK,WACH,OAAIgnP,EAAU7oP,EACL81S,IAGF,CAACH,IAAOC,IAAOC,EAAMA,IAAQ,MAGxCn2S,OAAO6uC,eAAe2mQ,EAAe,YAAa,CAChDrzS,IAAKoyS,4BAA4BprD,EAAUihD,MAE7CpqS,OAAO6uC,eAAe2mQ,EAAe,YAAa,CAChDrzS,IAAKoyS,4BAA4BprD,EAAUkhD,MAE7CrqS,OAAO6uC,eAAe2mQ,EAAe,YAAa,CAChDrzS,IAAKoyS,4BAA4BprD,EAAUmhD,MAE7CtqS,OAAO6uC,eAAe2mQ,EAAe,cAAe,CAClDrzS,IAAKoyS,4BAA4BprD,EAAU9hP,KAE7CrH,OAAO6uC,eAAe2mQ,EAAe,UAAW,CAC9CrzS,IAAKoyS,4BAA4BprD,EAAUxiP,KAE7C3G,OAAO6uC,eAAe2mQ,EAAe,OAAQ,CAC3CrzS,IAAKoyS,4BAA4BprD,EAAU62B,MAE7ChgR,OAAO6uC,eAAe2mQ,EAAe,WAAY,CAC/CrzS,IAAKoyS,4BAA4BprD,EAAU82B,MAE7CjgR,OAAO6uC,eAAe2mQ,EAAe,cAAe,CAClDrzS,IAAKoyS,4BAA4BprD,EAAUs2C,MAEtC+V,GA3HwB,GA+H/Ba,yBAA2B,WAC7B,SAASC,EAAUzwP,GACjB,IAAI0wP,EAAa,IAAIrV,OAErB,QAAav6P,IAATkf,EAAoB,CACtB,IAAI2wP,EAAa/1S,KAAKg2S,MAAMnD,eAAeC,MAAMzI,eAAejlP,GAEhE2wP,EAAW5nR,MAAM2nR,OACZ,CACL,IAAIG,EAAej2S,KAAKg2S,MAAMnD,eAAeC,MAC7CmD,EAAa1M,cAAcuM,GAG7B,OAAOA,EAGT,SAASI,EAAWp6R,EAAKspC,GACvB,IAAI0wP,EAAa91S,KAAK61S,UAAUzwP,GAIhC,OAHA0wP,EAAWrgL,MAAM,IAAM,EACvBqgL,EAAWrgL,MAAM,IAAM,EACvBqgL,EAAWrgL,MAAM,IAAM,EAChBz1H,KAAKm2S,WAAWL,EAAYh6R,GAGrC,SAASs6R,EAAQt6R,EAAKspC,GACpB,IAAI0wP,EAAa91S,KAAK61S,UAAUzwP,GAChC,OAAOplD,KAAKm2S,WAAWL,EAAYh6R,GAGrC,SAASu6R,EAAav6R,EAAKspC,GACzB,IAAI0wP,EAAa91S,KAAK61S,UAAUzwP,GAIhC,OAHA0wP,EAAWrgL,MAAM,IAAM,EACvBqgL,EAAWrgL,MAAM,IAAM,EACvBqgL,EAAWrgL,MAAM,IAAM,EAChBz1H,KAAKs2S,YAAYR,EAAYh6R,GAGtC,SAASy6R,EAAUz6R,EAAKspC,GACtB,IAAI0wP,EAAa91S,KAAK61S,UAAUzwP,GAChC,OAAOplD,KAAKs2S,YAAYR,EAAYh6R,GAGtC,SAASq6R,EAAWzK,EAAQ5vR,GAC1B,GAAI9b,KAAKg2S,MAAM/6F,WAAaj7M,KAAKg2S,MAAM/6F,UAAU55M,OAAQ,CACvD,IAAIH,EACA2/F,EAAM7gG,KAAKg2S,MAAM/6F,UAAU55M,OAE/B,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKg2S,MAAM/6F,UAAU/5M,GAAG2xS,eAAeC,MAAMvJ,cAAcmC,GAI/D,OAAOA,EAAOjH,kBAAkB3oR,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAAM,GAG5D,SAASw6R,EAAY5K,EAAQ5vR,GAC3B,GAAI9b,KAAKg2S,MAAM/6F,WAAaj7M,KAAKg2S,MAAM/6F,UAAU55M,OAAQ,CACvD,IAAIH,EACA2/F,EAAM7gG,KAAKg2S,MAAM/6F,UAAU55M,OAE/B,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKg2S,MAAM/6F,UAAU/5M,GAAG2xS,eAAeC,MAAMvJ,cAAcmC,GAI/D,OAAOA,EAAOlH,aAAa1oR,GAG7B,SAAS06R,EAAS16R,GAChB,IAAIg6R,EAAa,IAAIrV,OAKrB,GAJAqV,EAAW/2N,QAEX/+E,KAAKg2S,MAAMnD,eAAeC,MAAMvJ,cAAcuM,GAE1C91S,KAAKg2S,MAAM/6F,WAAaj7M,KAAKg2S,MAAM/6F,UAAU55M,OAAQ,CACvD,IAAIH,EACA2/F,EAAM7gG,KAAKg2S,MAAM/6F,UAAU55M,OAE/B,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKg2S,MAAM/6F,UAAU/5M,GAAG2xS,eAAeC,MAAMvJ,cAAcuM,GAG7D,OAAOA,EAAWtR,aAAa1oR,GAGjC,OAAOg6R,EAAWtR,aAAa1oR,GAGjC,SAAS26R,IACP,MAAO,CAAC,EAAG,EAAG,EAAG,GAGnB,OAAO,SAAUvqB,GACf,IAAIwqB,EAEJ,SAASC,EAAuBjD,GAC9BkD,EAAmBrD,KAAO,IAAIF,qBAAqBK,EAAaxnB,GAGlE,SAAS2qB,EAA0BC,GACjCF,EAAmBG,OAASD,EAG9B,SAASF,EAAmBvjS,GAC1B,OAAQA,GACN,IAAK,0BACL,IAAK,WACL,KAAK,EACH,OAAOujS,EAAmBI,eAE5B,KAAK,EACL,KAAK,EACL,IAAK,YACL,IAAK,YACL,IAAK,uBACH,OAAON,EAET,KAAK,EACL,IAAK,qBACL,IAAK,UACL,IAAK,UACH,OAAOE,EAAmBG,OAE5B,IAAK,uBACH,OAAOH,EAAmBK,cAE5B,QACE,OAAO,MAIbL,EAAmBf,UAAYA,EAC/Be,EAAmBN,YAAcA,EACjCM,EAAmBT,WAAaA,EAChCS,EAAmBR,QAAUA,EAC7BQ,EAAmBV,WAAaA,EAChCU,EAAmBL,UAAYA,EAC/BK,EAAmBP,aAAeA,EAClCO,EAAmBM,OAASd,EAC5BQ,EAAmBJ,SAAWA,EAC9BI,EAAmBH,YAAcA,EACjCG,EAAmB1D,iBAAmBhnB,EAAKgnB,iBAAiB7vP,KAAK6oO,GACjE0qB,EAAmBZ,MAAQ9pB,EAC3BwqB,EAAqB5B,6BAA6B5oB,EAAK2mB,eAAeC,OACtE,IAAIqE,EAAwBxuI,cAAc+tI,EAAoB,eAuC9D,OAtCAn3S,OAAOywJ,iBAAiB4mJ,EAAoB,CAC1CQ,UAAW,CACT11S,IAAK,WACH,OAAOwqR,EAAKjxE,UAAU55M,SAG1Bw9C,OAAQ,CACNn9C,IAAK,WACH,OAAOwqR,EAAKjxE,UAAU,GAAGo8F,iBAG7BrC,SAAUrsI,cAAc+tI,EAAoB,YAC5CjV,MAAO94H,cAAc+tI,EAAoB,SACzChsO,SAAUi+F,cAAc+tI,EAAoB,YAC5CnB,QAAS5sI,cAAc+tI,EAAoB,WAC3CpB,YAAa6B,EACbG,aAAcH,EACdzuD,UAAW,CACThnP,IAAK,WACH,OAAOg1S,IAGXl4E,OAAQ,CACN98N,IAAK,WACH,OAAOwqR,EAAKimB,cAIlByE,EAAmBtzL,UAAY4oK,EAAK97Q,KAAKivQ,GACzCu3B,EAAmBtkQ,MAAQ45O,EAAK97Q,KAAKsmR,IACrCkgB,EAAmBtwO,OAAS4lN,EAAK97Q,KAAK2tQ,MACtC64B,EAAmBn3O,OAA0B,IAAjBysN,EAAK97Q,KAAKytQ,GAAWqO,EAAK97Q,KAAKorG,EAAI,IAC/Do7L,EAAmBr3O,MAAyB,IAAjB2sN,EAAK97Q,KAAKytQ,GAAWqO,EAAK97Q,KAAKusF,EAAI,IAC9Di6M,EAAmBW,QAAUrrB,EAAK97Q,KAAKqjH,GAAKy4J,EAAK5N,KAAK2I,WAAW3B,UACjEsxB,EAAmBY,SAAWtrB,EAAK97Q,KAAKvK,GAAKqmR,EAAK5N,KAAK2I,WAAW3B,UAClEsxB,EAAmBa,MAAQvrB,EAAK97Q,KAAKs0Q,GACrCkyB,EAAmBc,sBAAwBf,EAC3CC,EAAmBe,yBAA2Bd,EACvCD,GAvLoB,GA2L3BgB,qBAAuB,WACzB,OAAO,SAAUC,EAAmBC,GAClC,OAAO,SAAU54Q,GAGf,OAFAA,OAAcgH,IAARhH,EAAoB,EAAIA,EAE1BA,GAAO,EACF24Q,EAGFC,EAAoB54Q,EAAM,KATZ,GAcvB64Q,kBAAoB,WACtB,OAAO,SAAU7wQ,EAAcwtQ,GAC7B,IAAImD,EAAoB,CACtBJ,MAAOvwQ,GAGT,SAAS8wQ,EAAe94Q,GAGtB,OAFAA,OAAcgH,IAARhH,EAAoB,EAAIA,EAE1BA,GAAO,EACF24Q,EAGFnD,EAAcx1Q,EAAM,GAG7B,OAAO84Q,GAhBa,GAoBpBC,2BAA6B,WAC/B,IAAI31B,EAAK,CACP41B,uBAAwBA,GAG1B,SAASA,EAAuBhsB,EAAMwoB,GACpC,GAAIxoB,EAAKisB,eAAgB,CACvB,IAEIj3S,EAFAk3S,EAAiB,GACjBC,EAAcnsB,EAAK97Q,KAAKkoS,GAExBz3M,EAAMqrL,EAAKisB,eAAeC,eAAe/2S,OAE7C,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBk3S,EAAepyS,KAAKuyS,EAAqBF,EAAYn3S,GAAIgrR,EAAKisB,eAAeC,eAAel3S,GAAIwzS,EAAexoB,IAGjH,IAAI4qB,EAAU5qB,EAAK97Q,KAAKkoS,IAAM,GAE1BE,EAAiB,SAAwBnlS,GAC3CnS,EAAI,EACJ2/F,EAAMi2M,EAAQz1S,OAEd,MAAOH,EAAI2/F,EAAK,CACd,GAAIxtF,IAASyjS,EAAQ51S,GAAGwjR,IAAMrxQ,IAASyjS,EAAQ51S,GAAGu3S,IAAMplS,IAASyjS,EAAQ51S,GAAG6rS,GAC1E,OAAOqL,EAAel3S,GAGxBA,GAAK,EAGP,OAAO,MAQT,OALA3B,OAAO6uC,eAAeoqQ,EAAgB,gBAAiB,CACrD92S,IAAK,WACH,OAAOo1S,EAAQz1S,UAGZm3S,EAGT,OAAO,KAGT,SAASD,EAAqBnoS,EAAMg8R,EAAUsI,EAAexoB,GAC3D,SAASssB,EAAenlS,GACtB,IAAIyjS,EAAU1mS,EAAKkoS,GACfp3S,EAAI,EACJ2/F,EAAMi2M,EAAQz1S,OAElB,MAAOH,EAAI2/F,EAAK,CACd,GAAIxtF,IAASyjS,EAAQ51S,GAAGwjR,IAAMrxQ,IAASyjS,EAAQ51S,GAAGu3S,IAAMplS,IAASyjS,EAAQ51S,GAAG6rS,GAC1E,OAAsB,IAAlB+J,EAAQ51S,GAAG28Q,GACNu6B,EAAel3S,GAGjBk3S,EAAel3S,KAGxBA,GAAK,EAGP,MAAM,IAAIN,MAGZ,IAGIM,EAHA82S,EAAiBJ,qBAAqBY,EAAgB9D,GAEtD0D,EAAiB,GAEjBv3M,EAAMzwF,EAAKkoS,GAAGj3S,OAElB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACF,IAAlBkP,EAAKkoS,GAAGp3S,GAAG28Q,GACbu6B,EAAepyS,KAAKuyS,EAAqBnoS,EAAKkoS,GAAGp3S,GAAIkrS,EAASgM,eAAel3S,GAAIkrS,EAASgM,eAAel3S,GAAGwzS,cAAexoB,IAE3HksB,EAAepyS,KAAK0yS,EAAqBtM,EAASgM,eAAel3S,GAAIkP,EAAKkoS,GAAGp3S,GAAG28Q,GAAIqO,EAAM8rB,IA2B9F,MAvBgB,uBAAZ5nS,EAAKqoS,IACPl5S,OAAO6uC,eAAeoqQ,EAAgB,QAAS,CAC7C92S,IAAK,WACH,OAAO02S,EAAe,QAK5B74S,OAAOywJ,iBAAiBwoJ,EAAgB,CACtCG,cAAe,CACbj3S,IAAK,WACH,OAAO0O,EAAKwoS,KAGhBnB,MAAO,CACLnzS,MAAO8L,EAAKs0Q,IAEdgwB,cAAe,CACbpwS,MAAO0zS,KAGXQ,EAAejrN,QAAsB,IAAZn9E,EAAKisL,GAC9Bm8G,EAAeh6E,OAASg6E,EAAejrN,QAChCirN,EAGT,SAASE,EAAqBl+I,EAASttI,EAAMg/P,EAAMwoB,GACjD,IAAImE,EAAqB/E,4BAA4Bt5I,EAAQ36J,GAE7D,SAASg4S,IACP,OAAa,KAAT3qR,EACKg/P,EAAK5N,KAAKwG,cAActqH,EAAQ36J,EAAE+F,GAGpCizS,IAOT,OAJIr+I,EAAQ36J,EAAEi5S,kBACZt+I,EAAQ36J,EAAEi5S,iBAAiBf,kBAAkB,GAAIrD,IAG5CmD,EAGT,OAAOv1B,EA3HwB,GA8H7By2B,wBAA0B,WAC5B,OAAO,SAAUz6B,GACf,SAASs4B,EAAmBvjS,GAC1B,IAAInS,EAAI,EACJ2/F,EAAMy9K,EAAKrB,OAAO57Q,OAEtB,MAAOH,EAAI2/F,EAAK,CACd,GAAIy9K,EAAKrB,OAAO/7Q,GAAGwjR,KAAOrxQ,GAAQirQ,EAAKrB,OAAO/7Q,GAAGw1R,MAAQrjR,EACvD,OAAOirQ,EAAK8tB,SAASlrS,GAAGm2S,eAG1Bn2S,GAAK,EAGP,OAAO,KAcT,OAXA3B,OAAO6uC,eAAewoQ,EAAoB,QAAS,CACjDtyS,MAAOg6Q,EAAKluQ,KAAKs0Q,KAEnBkyB,EAAmBoC,MAAQpC,EAC3BA,EAAmBqC,YAAc,EACjCrC,EAAmBn3O,OAAS6+M,EAAKluQ,KAAKorG,GAAK8iK,EAAK2I,WAAWiyB,SAAS19L,EACpEo7L,EAAmBr3O,MAAQ++M,EAAKluQ,KAAKusF,GAAK2hL,EAAK2I,WAAWiyB,SAASv8M,EACnEi6M,EAAmBqC,YAAc,EACjCrC,EAAmBuC,cAAgB,EAAI76B,EAAK2I,WAAW3B,UACvDsxB,EAAmBwC,iBAAmB,EACtCxC,EAAmByC,UAAY/6B,EAAKrB,OAAO57Q,OACpCu1S,GA5BmB,GAgC1B0C,mBAAqB,WACvB,OAAO,SAA8B5c,EAAOpvC,EAAMonD,GAChD,IAAIj0N,EAAO6sK,EAAKgqC,GAEhB,SAASugB,EAAkB34Q,GACzB,MAAY,UAARA,GAA2B,UAARA,GAA2B,SAARA,GAA0B,SAARA,GAA0B,sBAARA,GAAuC,IAARA,EACpG24Q,EAAkBzqN,KAGpB,KAGT,IAAI4qN,EAAiBJ,qBAAqBC,EAAmBnD,GAsC7D,OApCAj0N,EAAKq4N,iBAAiBf,kBAAkB,OAAQC,IAChDz4S,OAAOywJ,iBAAiB6nJ,EAAmB,CACzCzqN,KAAM,CACJ1rF,IAAK,WAKH,OAJI++E,EAAK95E,GACP85E,EAAKsyJ,WAGAtyJ,IAGXi8M,MAAO,CACLh7R,IAAK,WAKH,OAJI++E,EAAK95E,GACP85E,EAAKsyJ,WAGAtyJ,IAGXg3N,MAAO,CACLnzS,MAAOo4R,EAAMhY,IAEfqoB,GAAI,CACFzoS,MAAOo4R,EAAMqQ,IAEfwM,cAAe,CACbj1S,MAAOo4R,EAAMqQ,IAEf0L,GAAI,CACFn0S,MAAOo4R,EAAM+b,IAEf/D,cAAe,CACbpwS,MAAOowS,KAGJmD,GAlDc,GAsDrB2B,yBAA2B,WAC7B,SAASC,EAAgBx7B,EAAQ3wB,EAAMonD,GACrC,IACIxzS,EADA4a,EAAM,GAEN+kF,EAAMo9K,EAASA,EAAO58Q,OAAS,EAEnC,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACH,OAAjB+8Q,EAAO/8Q,GAAG28Q,GACZ/hQ,EAAI9V,KAAK0zS,EAAsBz7B,EAAO/8Q,GAAIosP,EAAKpsP,GAAIwzS,IACzB,OAAjBz2B,EAAO/8Q,GAAG28Q,GACnB/hQ,EAAI9V,KAAK2zS,EAAqB17B,EAAO/8Q,GAAIosP,EAAKpsP,GAAIwzS,IACxB,OAAjBz2B,EAAO/8Q,GAAG28Q,GACnB/hQ,EAAI9V,KAAK4zS,EAAuB37B,EAAO/8Q,GAAIosP,EAAKpsP,GAAIwzS,IAC1B,OAAjBz2B,EAAO/8Q,GAAG28Q,GACnB/hQ,EAAI9V,KAAK6zS,EAAqB57B,EAAO/8Q,GAAIosP,EAAKpsP,GAAIwzS,IACxB,OAAjBz2B,EAAO/8Q,GAAG28Q,KACO,OAAjBI,EAAO/8Q,GAAG28Q,GACnB/hQ,EAAI9V,KAAK8zS,EAAwB77B,EAAO/8Q,GAAIosP,EAAKpsP,GAAIwzS,IAC3B,OAAjBz2B,EAAO/8Q,GAAG28Q,GACnB/hQ,EAAI9V,KAAK+zS,EAAqB97B,EAAO/8Q,GAAIosP,EAAKpsP,GAAIwzS,IACxB,OAAjBz2B,EAAO/8Q,GAAG28Q,GACnB/hQ,EAAI9V,KAAKszS,mBAAmBr7B,EAAO/8Q,GAAIosP,EAAKpsP,GAAIwzS,IACtB,OAAjBz2B,EAAO/8Q,GAAG28Q,GACnB/hQ,EAAI9V,KAAKg0S,EAAqB/7B,EAAO/8Q,GAAIosP,EAAKpsP,GAAIwzS,IACxB,OAAjBz2B,EAAO/8Q,GAAG28Q,GACnB/hQ,EAAI9V,KAAKi0S,EAAwBh8B,EAAO/8Q,GAAIosP,EAAKpsP,GAAIwzS,IAC3B,OAAjBz2B,EAAO/8Q,GAAG28Q,GACnB/hQ,EAAI9V,KAAKk0S,EAAyBj8B,EAAO/8Q,GAAIosP,EAAKpsP,GAAIwzS,IAC5B,OAAjBz2B,EAAO/8Q,GAAG28Q,GACnB/hQ,EAAI9V,KAAKm0S,EAA6Bl8B,EAAO/8Q,GAAIosP,EAAKpsP,GAAIwzS,IAE1D54R,EAAI9V,KAAKo0S,EAAwBn8B,EAAO/8Q,GAAIosP,EAAKpsP,GAAIwzS,KAIzD,OAAO54R,EAGT,SAASu+R,EAAyB3d,EAAOpvC,EAAMonD,GAC7C,IAAI4F,EAEAzC,EAAoB,SAA4BvzS,GAClD,IAAIpD,EAAI,EACJ2/F,EAAMy5M,EAAWj5S,OAErB,MAAOH,EAAI2/F,EAAK,CACd,GAAIy5M,EAAWp5S,GAAGu2S,QAAUnzS,GAASg2S,EAAWp5S,GAAGu3S,KAAOn0S,GAASg2S,EAAWp5S,GAAGq4S,gBAAkBj1S,GAASg2S,EAAWp5S,GAAG6rS,KAAOzoS,GAASg2S,EAAWp5S,GAAGw1R,MAAQpyR,EAC9J,OAAOg2S,EAAWp5S,GAGpBA,GAAK,EAGP,MAAqB,kBAAVoD,EACFg2S,EAAWh2S,EAAQ,GAGrB,MAGTuzS,EAAkBnD,cAAgBkD,qBAAqBC,EAAmBnD,GAC1E4F,EAAab,EAAgB/c,EAAM5lI,GAAIw2F,EAAKx2F,GAAI+gJ,EAAkBnD,eAClEmD,EAAkBc,cAAgB2B,EAAWj5S,OAC7C,IAAIq1S,EAAqB6D,EAA0B7d,EAAM5lI,GAAG4lI,EAAM5lI,GAAGz1J,OAAS,GAAIisP,EAAKx2F,GAAGw2F,EAAKx2F,GAAGz1J,OAAS,GAAIw2S,EAAkBnD,eAIjI,OAHAmD,EAAkBnvD,UAAYguD,EAC9BmB,EAAkB0B,cAAgB7c,EAAM8d,IACxC3C,EAAkBJ,MAAQ/a,EAAMhY,GACzBmzB,EAGT,SAAS6B,EAAsBhd,EAAOpvC,EAAMonD,GAC1C,IAAImD,EAAoB,SAA4BvzS,GAClD,OAAQA,GACN,IAAK,qBACL,IAAK,WACL,KAAK,EACH,OAAOuzS,EAAkBr2S,QAK3B,QACE,OAAOq2S,EAAkBnvD,YAI/BmvD,EAAkBnD,cAAgBkD,qBAAqBC,EAAmBnD,GAC1E,IAAIlzS,EAAU64S,EAAyB3d,EAAOpvC,EAAMuqD,EAAkBnD,eAClEgC,EAAqB6D,EAA0B7d,EAAM5lI,GAAG4lI,EAAM5lI,GAAGz1J,OAAS,GAAIisP,EAAKx2F,GAAGw2F,EAAKx2F,GAAGz1J,OAAS,GAAIw2S,EAAkBnD,eAajI,OAZAmD,EAAkBr2S,QAAUA,EAC5Bq2S,EAAkBnvD,UAAYguD,EAC9Bn3S,OAAO6uC,eAAeypQ,EAAmB,QAAS,CAChDn2S,IAAK,WACH,OAAOg7R,EAAMhY,MAIjBmzB,EAAkBc,cAAgBjc,EAAMkc,GACxCf,EAAkB0B,cAAgB7c,EAAMqQ,GACxC8K,EAAkBnzB,GAAKgY,EAAMhY,GAC7BmzB,EAAkBY,GAAK/b,EAAM+b,GACtBZ,EAGT,SAAS8B,EAAqBjd,EAAOpvC,EAAMonD,GACzC,SAASmD,EAAkB34Q,GACzB,MAAY,UAARA,GAA2B,UAARA,EACd24Q,EAAkBjrF,MAGf,YAAR1tL,GAA6B,YAARA,EAChB24Q,EAAkBtC,QAGpB,KAmBT,OAhBAh2S,OAAOywJ,iBAAiB6nJ,EAAmB,CACzCjrF,MAAO,CACLlrN,IAAKoyS,4BAA4BxmD,EAAKr5K,IAExCshO,QAAS,CACP7zS,IAAKoyS,4BAA4BxmD,EAAKpnP,IAExCuxS,MAAO,CACLnzS,MAAOo4R,EAAMhY,IAEf+zB,GAAI,CACFn0S,MAAOo4R,EAAM+b,MAGjBnrD,EAAKr5K,EAAE6kO,iBAAiBf,kBAAkB,QAASrD,IACnDpnD,EAAKpnP,EAAE4yS,iBAAiBf,kBAAkB,UAAWrD,IAC9CmD,EAGT,SAASsC,EAA6Bzd,EAAOpvC,EAAMonD,GACjD,SAASmD,EAAkB34Q,GACzB,MAAY,gBAARA,GAAiC,gBAARA,EACpB24Q,EAAkB4C,WAGf,cAARv7Q,GAA+B,cAARA,EAClB24Q,EAAkB6C,SAGf,YAARx7Q,GAA6B,YAARA,EAChB24Q,EAAkBtC,QAGpB,KA4BT,OAzBAh2S,OAAOywJ,iBAAiB6nJ,EAAmB,CACzC4C,WAAY,CACV/4S,IAAKoyS,4BAA4BxmD,EAAKrsP,IAExCy5S,SAAU,CACRh5S,IAAKoyS,4BAA4BxmD,EAAK5oP,IAExC6wS,QAAS,CACP7zS,IAAKoyS,4BAA4BxmD,EAAKpnP,IAExCgnB,KAAM,CACJxrB,IAAK,WACH,MAAO,MAGX+1S,MAAO,CACLnzS,MAAOo4R,EAAMhY,IAEf+zB,GAAI,CACFn0S,MAAOo4R,EAAM+b,MAGjBnrD,EAAKrsP,EAAE63S,iBAAiBf,kBAAkB,cAAerD,IACzDpnD,EAAK5oP,EAAEo0S,iBAAiBf,kBAAkB,YAAarD,IACvDpnD,EAAKpnP,EAAE4yS,iBAAiBf,kBAAkB,UAAWrD,IAC9CmD,EAGT,SAASuC,IACP,SAASvC,IACP,OAAO,KAGT,OAAOA,EAGT,SAAS+B,EAAuBld,EAAOpvC,EAAMonD,GAC3C,IAUIxzS,EAVA82S,EAAiBJ,qBAAqBC,EAAmBnD,GAEzDiG,EAAqB/C,qBAAqBgD,EAAQ5C,GAEtD,SAAS6C,EAAoB35S,GAC3B3B,OAAO6uC,eAAewsQ,EAAQle,EAAM/8R,EAAEuB,GAAGwjR,GAAI,CAC3ChjR,IAAKoyS,4BAA4BxmD,EAAK3tP,EAAEm7S,UAAU55S,GAAGrB,KAKzD,IAAIghG,EAAM67L,EAAM/8R,EAAI+8R,EAAM/8R,EAAE0B,OAAS,EACjCu5S,EAAS,GAEb,IAAK15S,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB25S,EAAoB35S,GACpBosP,EAAK3tP,EAAEm7S,UAAU55S,GAAGrB,EAAEi5S,iBAAiB6B,GAGzC,SAAS9C,EAAkB34Q,GACzB,MAAY,UAARA,GAA2B,UAARA,EACd24Q,EAAkBjrF,MAGf,YAAR1tL,GAA6B,YAARA,EAChB24Q,EAAkBtC,QAGf,iBAARr2Q,GAAkC,iBAARA,EACrB24Q,EAAkBkD,YAGpB,KA4BT,OAzBAx7S,OAAOywJ,iBAAiB6nJ,EAAmB,CACzCjrF,MAAO,CACLlrN,IAAKoyS,4BAA4BxmD,EAAKr5K,IAExCshO,QAAS,CACP7zS,IAAKoyS,4BAA4BxmD,EAAKpnP,IAExC60S,YAAa,CACXr5S,IAAKoyS,4BAA4BxmD,EAAK3wJ,IAExCq+M,KAAM,CACJt5S,IAAK,WACH,OAAOk5S,IAGXnD,MAAO,CACLnzS,MAAOo4R,EAAMhY,IAEf+zB,GAAI,CACFn0S,MAAOo4R,EAAM+b,MAGjBnrD,EAAKr5K,EAAE6kO,iBAAiBf,kBAAkB,QAASC,IACnD1qD,EAAKpnP,EAAE4yS,iBAAiBf,kBAAkB,UAAWC,IACrD1qD,EAAK3wJ,EAAEm8M,iBAAiBf,kBAAkB,eAAgBC,IACnDH,EAGT,SAASgC,EAAqBnd,EAAOpvC,EAAMonD,GACzC,SAASmD,EAAkB34Q,GACzB,OAAIA,IAAQw9P,EAAMh4R,EAAEqoS,IAAc,QAAR7tQ,GAAyB,QAARA,EAClC24Q,EAAkBzwN,IAGvBloD,IAAQw9P,EAAMz7R,EAAE8rS,GACX8K,EAAkB1wN,MAGvBjoD,IAAQw9P,EAAMx2R,EAAE6mS,GACX8K,EAAkB3vQ,OAGpB,KAGT,IAAI8vQ,EAAiBJ,qBAAqBC,EAAmBnD,GAuB7D,OArBAmD,EAAkB0B,cAAgB7c,EAAMqQ,GACxCz/C,EAAKrsP,EAAE63S,iBAAiBf,kBAAkB,QAASC,IACnD1qD,EAAK5oP,EAAEo0S,iBAAiBf,kBAAkB,MAAOC,IACjD1qD,EAAKpnP,EAAE4yS,iBAAiBf,kBAAkB,SAAUC,IACpDH,EAAkB0B,cAAgB7c,EAAMqQ,GACxC8K,EAAkBnD,cAAgBA,EAClCn1S,OAAOywJ,iBAAiB6nJ,EAAmB,CACzC1wN,MAAO,CACLzlF,IAAKoyS,4BAA4BxmD,EAAKrsP,IAExCmmF,IAAK,CACH1lF,IAAKoyS,4BAA4BxmD,EAAK5oP,IAExCwjC,OAAQ,CACNxmC,IAAKoyS,4BAA4BxmD,EAAKpnP,IAExCuxS,MAAO,CACLnzS,MAAOo4R,EAAMhY,MAGjBmzB,EAAkBY,GAAK/b,EAAM+b,GACtBZ,EAGT,SAAS0C,EAA0B7d,EAAOpvC,EAAMonD,GAC9C,SAASmD,EAAkBvzS,GACzB,OAAIo4R,EAAM91R,EAAEmmS,KAAOzoS,GAAmB,iBAAVA,EACnBuzS,EAAkBvC,YAGvB5Y,EAAMx2R,EAAE6mS,KAAOzoS,GAAmB,YAAVA,EACnBuzS,EAAkBtC,QAGvB7Y,EAAM78R,EAAEktS,KAAOzoS,GAAmB,aAAVA,EACnBuzS,EAAkBntO,SAGvBgyN,EAAMt2R,EAAE2mS,KAAOzoS,GAAmB,aAAVA,GAAkC,yBAAVA,EAC3CuzS,EAAkB7C,SAGvBtY,EAAMz7R,EAAE8rS,KAAOzoS,GAAmB,UAAVA,EACnBuzS,EAAkBpW,MAGvB/E,EAAMnd,IAAMmd,EAAMnd,GAAGwtB,KAAOzoS,GAAmB,SAAVA,EAChCuzS,EAAkBzgI,KAGvBslH,EAAMld,IAAMkd,EAAMld,GAAGutB,KAAOzoS,GAAmB,cAAVA,EAChCuzS,EAAkBoD,SAGpB,KAGT,IAAIjD,EAAiBJ,qBAAqBC,EAAmBnD,GA2C7D,OAzCApnD,EAAK5E,UAAU6kD,OAAOrnS,EAAE4yS,iBAAiBf,kBAAkB,UAAWC,IACtE1qD,EAAK5E,UAAU6kD,OAAO1tS,EAAEi5S,iBAAiBf,kBAAkB,WAAYC,IACvE1qD,EAAK5E,UAAU6kD,OAAO3mS,EAAEkyS,iBAAiBf,kBAAkB,eAAgBC,IAC3E1qD,EAAK5E,UAAU6kD,OAAOtsS,EAAE63S,iBAAiBf,kBAAkB,QAASC,IACpE1qD,EAAK5E,UAAU6kD,OAAOnnS,EAAE0yS,iBAAiBf,kBAAkB,WAAYC,IAEnE1qD,EAAK5E,UAAU6kD,OAAOhuB,KACxBjyB,EAAK5E,UAAU6kD,OAAOhuB,GAAGu5B,iBAAiBf,kBAAkB,OAAQC,IACpE1qD,EAAK5E,UAAU6kD,OAAO/tB,GAAGs5B,iBAAiBf,kBAAkB,aAAcC,KAG5E1qD,EAAK5E,UAAU7iP,GAAGizS,iBAAiBf,kBAAkB,UAAWC,IAChEz4S,OAAOywJ,iBAAiB6nJ,EAAmB,CACzCtC,QAAS,CACP7zS,IAAKoyS,4BAA4BxmD,EAAK5E,UAAU6kD,OAAOrnS,IAEzDwkE,SAAU,CACRhpE,IAAKoyS,4BAA4BxmD,EAAK5E,UAAU6kD,OAAO1tS,IAEzDy1S,YAAa,CACX5zS,IAAKoyS,4BAA4BxmD,EAAK5E,UAAU6kD,OAAO3mS,IAEzD66R,MAAO,CACL//R,IAAKoyS,4BAA4BxmD,EAAK5E,UAAU6kD,OAAOtsS,IAEzD+zS,SAAU,CACRtzS,IAAKoyS,4BAA4BxmD,EAAK5E,UAAU6kD,OAAOnnS,IAEzDgxK,KAAM,CACJ11K,IAAKoyS,4BAA4BxmD,EAAK5E,UAAU6kD,OAAOhuB,KAEzD07B,SAAU,CACRv5S,IAAKoyS,4BAA4BxmD,EAAK5E,UAAU6kD,OAAO/tB,KAEzDi4B,MAAO,CACLnzS,MAAOo4R,EAAMhY,MAGjBmzB,EAAkBh6B,GAAK,KACvBg6B,EAAkBY,GAAK/b,EAAM+b,GAC7BZ,EAAkBnD,cAAgBA,EAC3BmD,EAGT,SAASiC,EAAwBpd,EAAOpvC,EAAMonD,GAC5C,SAASmD,EAAkBvzS,GACzB,OAAIo4R,EAAM78R,EAAEktS,KAAOzoS,EACVuzS,EAAkBntO,SAGvBgyN,EAAMz7R,EAAE8rS,KAAOzoS,EACVuzS,EAAkBh6Q,KAGpB,KAGT,IAAIm6Q,EAAiBJ,qBAAqBC,EAAmBnD,GAE7DmD,EAAkB0B,cAAgB7c,EAAMqQ,GACxC,IAAItsN,EAAsB,OAAf6sK,EAAKgqC,GAAGzZ,GAAcvwB,EAAKgqC,GAAG72M,KAAO6sK,EAAKgqC,GAerD,OAdA72M,EAAKx/E,EAAE63S,iBAAiBf,kBAAkB,OAAQC,IAClDv3N,EAAK5gF,EAAEi5S,iBAAiBf,kBAAkB,WAAYC,IACtDz4S,OAAOywJ,iBAAiB6nJ,EAAmB,CACzCh6Q,KAAM,CACJn8B,IAAKoyS,4BAA4BrzN,EAAKx/E,IAExCypE,SAAU,CACRhpE,IAAKoyS,4BAA4BrzN,EAAK5gF,IAExC43S,MAAO,CACLnzS,MAAOo4R,EAAMhY,MAGjBmzB,EAAkBY,GAAK/b,EAAM+b,GACtBZ,EAGT,SAASkC,EAAqBrd,EAAOpvC,EAAMonD,GACzC,SAASmD,EAAkBvzS,GACzB,OAAIo4R,EAAM78R,EAAEktS,KAAOzoS,EACVuzS,EAAkBntO,SAGvBgyN,EAAMt2R,EAAE2mS,KAAOzoS,EACVuzS,EAAkB7C,SAGvBtY,EAAM/e,GAAGovB,KAAOzoS,EACXuzS,EAAkBjpB,OAGvB8N,EAAMsC,GAAG+N,KAAOzoS,GAAmB,kCAAVA,EACpBuzS,EAAkBqD,YAGvBxe,EAAMliP,GAAGuyP,KAAOzoS,EACXuzS,EAAkBsD,gBAGvBze,EAAMkC,IAAOlC,EAAMkC,GAAGmO,KAAOzoS,GAAmB,kCAAVA,EAItCo4R,EAAM1mH,IAAM0mH,EAAM1mH,GAAG+2H,KAAOzoS,EACvBuzS,EAAkBuD,eAGpB,KAPEvD,EAAkBwD,YAU7B,IAAIrD,EAAiBJ,qBAAqBC,EAAmBnD,GAEzDj0N,EAAsB,OAAf6sK,EAAKgqC,GAAGzZ,GAAcvwB,EAAKgqC,GAAG72M,KAAO6sK,EAAKgqC,GAwCrD,OAvCAugB,EAAkB0B,cAAgB7c,EAAMqQ,GACxCtsN,EAAKu+M,GAAG8Z,iBAAiBf,kBAAkB,eAAgBC,IAC3Dv3N,EAAKjmC,GAAGs+P,iBAAiBf,kBAAkB,kBAAmBC,IAC9Dv3N,EAAKk9L,GAAGm7B,iBAAiBf,kBAAkB,SAAUC,IACrDv3N,EAAK5gF,EAAEi5S,iBAAiBf,kBAAkB,WAAYC,IACtDv3N,EAAKr6E,EAAE0yS,iBAAiBf,kBAAkB,WAAYC,IAElDtb,EAAMkC,KACRn+M,EAAKm+M,GAAGka,iBAAiBf,kBAAkB,eAAgBC,IAC3Dv3N,EAAKu1F,GAAG8iI,iBAAiBf,kBAAkB,kBAAmBC,KAGhEz4S,OAAOywJ,iBAAiB6nJ,EAAmB,CACzCntO,SAAU,CACRhpE,IAAKoyS,4BAA4BrzN,EAAK5gF,IAExCm1S,SAAU,CACRtzS,IAAKoyS,4BAA4BrzN,EAAKr6E,IAExCwoR,OAAQ,CACNltR,IAAKoyS,4BAA4BrzN,EAAKk9L,KAExCu9B,YAAa,CACXx5S,IAAKoyS,4BAA4BrzN,EAAKu+M,KAExCmc,eAAgB,CACdz5S,IAAKoyS,4BAA4BrzN,EAAKjmC,KAExC6gQ,YAAa,CACX35S,IAAKoyS,4BAA4BrzN,EAAKm+M,KAExCwc,eAAgB,CACd15S,IAAKoyS,4BAA4BrzN,EAAKu1F,KAExCyhI,MAAO,CACLnzS,MAAOo4R,EAAMhY,MAGjBmzB,EAAkBY,GAAK/b,EAAM+b,GACtBZ,EAGT,SAASmC,EAAqBtd,EAAOpvC,EAAMonD,GACzC,SAASmD,EAAkBvzS,GACzB,OAAIo4R,EAAM78R,EAAEktS,KAAOzoS,EACVuzS,EAAkBntO,SAGvBgyN,EAAMt2R,EAAE2mS,KAAOzoS,EACVuzS,EAAkB3Y,UAGvBxC,EAAMz7R,EAAE8rS,KAAOzoS,GAAmB,SAAVA,GAA8B,0BAAVA,EACvCuzS,EAAkBh6Q,KAGpB,KAGT,IAAIm6Q,EAAiBJ,qBAAqBC,EAAmBnD,GAEzDj0N,EAAsB,OAAf6sK,EAAKgqC,GAAGzZ,GAAcvwB,EAAKgqC,GAAG72M,KAAO6sK,EAAKgqC,GAoBrD,OAnBAugB,EAAkB0B,cAAgB7c,EAAMqQ,GACxCtsN,EAAK5gF,EAAEi5S,iBAAiBf,kBAAkB,WAAYC,IACtDv3N,EAAKx/E,EAAE63S,iBAAiBf,kBAAkB,OAAQC,IAClDv3N,EAAKr6E,EAAE0yS,iBAAiBf,kBAAkB,WAAYC,IACtDz4S,OAAOywJ,iBAAiB6nJ,EAAmB,CACzCntO,SAAU,CACRhpE,IAAKoyS,4BAA4BrzN,EAAK5gF,IAExCq/R,UAAW,CACTx9R,IAAKoyS,4BAA4BrzN,EAAKr6E,IAExCy3B,KAAM,CACJn8B,IAAKoyS,4BAA4BrzN,EAAKx/E,IAExCw2S,MAAO,CACLnzS,MAAOo4R,EAAMhY,MAGjBmzB,EAAkBY,GAAK/b,EAAM+b,GACtBZ,EAGT,SAASoC,EAAwBvd,EAAOpvC,EAAMonD,GAC5C,SAASmD,EAAkBvzS,GACzB,OAAIo4R,EAAMt2R,EAAE2mS,KAAOzoS,GAAmB,oBAAVA,EACnBuzS,EAAkByD,OAGpB,KAGT,IAAItD,EAAiBJ,qBAAqBC,EAAmBnD,GAEzDj0N,EAAO6sK,EAYX,OAXAuqD,EAAkB0B,cAAgB7c,EAAMqQ,GACxCtsN,EAAK+sN,GAAGsL,iBAAiBf,kBAAkB,SAAUC,IACrDz4S,OAAOywJ,iBAAiB6nJ,EAAmB,CACzCyD,OAAQ,CACN55S,IAAKoyS,4BAA4BrzN,EAAK+sN,KAExCiK,MAAO,CACLnzS,MAAOo4R,EAAMhY,MAGjBmzB,EAAkBY,GAAK/b,EAAM+b,GACtBZ,EAGT,SAASqC,EAAyBxd,EAAOpvC,EAAMonD,GAC7C,SAASmD,EAAkBvzS,GACzB,OAAIo4R,EAAMzoN,EAAE84N,KAAOzoS,GAAmB,WAAVA,EACnBuzS,EAAkB/K,OAGvBpQ,EAAMx2R,EAAE6mS,KAAOzoS,GAAmB,WAAVA,EACnBuzS,EAAkB3vQ,OAGpB,KAGT,IAAI8vQ,EAAiBJ,qBAAqBC,EAAmBnD,GAEzDj0N,EAAO6sK,EAgBX,OAfAuqD,EAAkB0B,cAAgB7c,EAAMqQ,GACxCtsN,EAAKxM,EAAE6kO,iBAAiBf,kBAAkB,SAAUC,IACpDv3N,EAAKv6E,EAAE4yS,iBAAiBf,kBAAkB,SAAUC,IACpDz4S,OAAOywJ,iBAAiB6nJ,EAAmB,CACzC/K,OAAQ,CACNprS,IAAKoyS,4BAA4BrzN,EAAKxM,IAExC/rC,OAAQ,CACNxmC,IAAKoyS,4BAA4BrzN,EAAKv6E,IAExCuxS,MAAO,CACLnzS,MAAOo4R,EAAMhY,MAGjBmzB,EAAkBY,GAAK/b,EAAM+b,GACtBZ,EAGT,OAAO,SAAU55B,EAAQ3wB,EAAMonD,GAC7B,IAAI4F,EAEJ,SAASiB,EAAmBj3S,GAC1B,GAAqB,kBAAVA,EAGT,OAFAA,OAAkB4hC,IAAV5hC,EAAsB,EAAIA,EAEpB,IAAVA,EACKowS,EAGF4F,EAAWh2S,EAAQ,GAG5B,IAAIpD,EAAI,EACJ2/F,EAAMy5M,EAAWj5S,OAErB,MAAOH,EAAI2/F,EAAK,CACd,GAAIy5M,EAAWp5S,GAAGu2S,QAAUnzS,EAC1B,OAAOg2S,EAAWp5S,GAGpBA,GAAK,EAGP,OAAO,KAGT,SAASs6S,IACP,OAAO9G,EAOT,OAJA6G,EAAmB7G,cAAgBkD,qBAAqB2D,EAAoBC,GAC5ElB,EAAab,EAAgBx7B,EAAQ3wB,EAAMiuD,EAAmB7G,eAC9D6G,EAAmB5C,cAAgB2B,EAAWj5S,OAC9Ck6S,EAAmB9D,MAAQ,WACpB8D,GAjnBoB,GAqnB3BE,wBAA0B,WAC5B,OAAO,SAAUvvB,GACf,IAAIwvB,EAEAC,EAEJ,SAAS/E,EAAmBvjS,GAC1B,OAAQA,GACN,IAAK,qBACH,OAAOujS,EAAmBgF,WAE5B,QACE,OAAO,MAoBb,OAhBAr8S,OAAO6uC,eAAewoQ,EAAoB,aAAc,CACtDl1S,IAAK,WACHwqR,EAAK2vB,aAAa9oE,WAClB,IAAIrxC,EAAcwqF,EAAK2vB,aAAaC,YAAY96S,EAUhD,OARI0gM,IAAgBg6G,IAClBxvB,EAAK2vB,aAAaC,YAAY96S,EAAI06S,EAClCC,EAAc,IAAIhrS,OAAO+wL,GAGzBi6G,EAAYr3S,MAAQo9L,GAAe,IAAI/wL,OAAO+wL,IAGzCi6G,KAGJ/E,GAhCmB,GAoC1BmF,aAAe,WACjB,IAAIC,EAAiB,CACnB,EAAG,cACH,EAAG,WACH,EAAG,SACH,EAAG,UACH,EAAG,SACH,EAAG,UACH,EAAG,cACH,EAAG,aACH,EAAG,aACH,EAAG,aACH,GAAI,aACJ,GAAI,YACJ,GAAI,MACJ,GAAI,aACJ,GAAI,QACJ,GAAI,cAEN,OAAO,SAAUxlI,GACf,OAAOwlI,EAAexlI,IAAS,IApBhB,GAwBnB,SAASylI,aAAa7rS,EAAM87Q,EAAMx5I,GAChC1yI,KAAKH,EAAI01R,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKxK,EAAG,EAAG,EAAG8sI,GAGvD,SAASwpK,YAAY9rS,EAAM87Q,EAAMx5I,GAC/B1yI,KAAKH,EAAI01R,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKxK,EAAG,EAAG,EAAG8sI,GAGvD,SAASypK,YAAY/rS,EAAM87Q,EAAMx5I,GAC/B1yI,KAAKH,EAAI01R,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKxK,EAAG,EAAG,EAAG8sI,GAGvD,SAAS0pK,YAAYhsS,EAAM87Q,EAAMx5I,GAC/B1yI,KAAKH,EAAI01R,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKxK,EAAG,EAAG,EAAG8sI,GAGvD,SAAS2pK,iBAAiBjsS,EAAM87Q,EAAMx5I,GACpC1yI,KAAKH,EAAI01R,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKxK,EAAG,EAAG,EAAG8sI,GAGvD,SAAS4pK,gBAAgBlsS,EAAM87Q,EAAMx5I,GACnC1yI,KAAKH,EAAI01R,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKxK,EAAG,EAAG,EAAG8sI,GAGvD,SAAS6pK,eAAensS,EAAM87Q,EAAMx5I,GAClC1yI,KAAKH,EAAI01R,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKxK,EAAG,EAAG,EAAG8sI,GAGvD,SAAS8pK,gBACPx8S,KAAKH,EAAI,GAGX,SAAS48S,eAAersS,EAAMoqJ,GAC5B,IAEIt5J,EAFA41S,EAAU1mS,EAAKkoS,IAAM,GACzBt4S,KAAKo4S,eAAiB,GAEtB,IACIsE,EADA77M,EAAMi2M,EAAQz1S,OAGlB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBw7S,EAAa,IAAIC,YAAY7F,EAAQ51S,GAAIs5J,GACzCx6J,KAAKo4S,eAAepyS,KAAK02S,GAI7B,SAASC,YAAYvsS,EAAMoqJ,GACzBx6J,KAAKu9H,KAAKntH,EAAMoqJ,GAgElB,SAASoiJ,eAuET,SAASC,gBAiDT,SAASC,UAAUhiS,GAAuV,OAA1OgiS,UAArD,oBAAXp3S,QAAoD,kBAApBA,OAAOC,SAAqC,SAAiBmV,GAAO,cAAcA,GAA6B,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXpV,QAAyBoV,EAAI7a,cAAgByF,QAAUoV,IAAQpV,OAAOxF,UAAY,gBAAkB4a,GAAiBgiS,UAAUhiS,GArL3X+6P,gBAAgB,CAAColB,0BAA2B0hB,aAC5CA,YAAYz8S,UAAU6yO,SAAW4pE,YAAYz8S,UAAUk7R,yBAEvDuhB,YAAYz8S,UAAUq9H,KAAO,SAAUntH,EAAMoqJ,GAI3C,IAAIt5J,EAHJlB,KAAKoQ,KAAOA,EACZpQ,KAAKo4S,eAAiB,GACtBp4S,KAAKq7R,6BAA6B7gI,GAElC,IACIuiJ,EADAl8M,EAAM7gG,KAAKoQ,KAAKkoS,GAAGj3S,OAEnBy1S,EAAU92S,KAAKoQ,KAAKkoS,GAExB,IAAKp3S,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAAG,CAG3B,OAFA67S,EAAM,KAEEjG,EAAQ51S,GAAG28Q,IACjB,KAAK,EACHk/B,EAAM,IAAId,aAAanF,EAAQ51S,GAAIs5J,EAASx6J,MAC5C,MAEF,KAAK,EACH+8S,EAAM,IAAIb,YAAYpF,EAAQ51S,GAAIs5J,EAASx6J,MAC3C,MAEF,KAAK,EACH+8S,EAAM,IAAIZ,YAAYrF,EAAQ51S,GAAIs5J,EAASx6J,MAC3C,MAEF,KAAK,EACH+8S,EAAM,IAAIX,YAAYtF,EAAQ51S,GAAIs5J,EAASx6J,MAC3C,MAEF,KAAK,EACL,KAAK,EACH+8S,EAAM,IAAIR,eAAezF,EAAQ51S,GAAIs5J,EAASx6J,MAC9C,MAEF,KAAK,GACH+8S,EAAM,IAAIV,iBAAiBvF,EAAQ51S,GAAIs5J,EAASx6J,MAChD,MAEF,KAAK,GACH+8S,EAAM,IAAIT,gBAAgBxF,EAAQ51S,GAAIs5J,EAASx6J,MAC/C,MAEF,KAAK,EACH+8S,EAAM,IAAIN,eAAe3F,EAAQ51S,GAAIs5J,EAASx6J,MAC9C,MAGF,QACE+8S,EAAM,IAAIP,cAAc1F,EAAQ51S,GAAIs5J,EAASx6J,MAC7C,MAGA+8S,GACF/8S,KAAKo4S,eAAepyS,KAAK+2S,KAO/BH,YAAY18S,UAAY,CACtB88S,WAAY,WACV,IAAKh9S,KAAKoQ,KAAKotQ,QACb,OAAO,EAGT,IAAIt8Q,EAAI,EACJ2/F,EAAM7gG,KAAKoQ,KAAKstQ,gBAAgBr8Q,OAEpC,MAAOH,EAAI2/F,EAAK,CACd,GAA0C,MAAtC7gG,KAAKoQ,KAAKstQ,gBAAgBx8Q,GAAGs1K,OAAoD,IAApCx2K,KAAKoQ,KAAKstQ,gBAAgBx8Q,GAAG6+Q,GAC5E,OAAO,EAGT7+Q,GAAK,EAGP,OAAO,GAET+mR,gBAAiB,WACfjoR,KAAKq3S,eAAiBzB,yBAAyB51S,MAE3CA,KAAKoQ,KAAKotQ,SAAWx9Q,KAAK0zS,aAC5B1zS,KAAKq3S,eAAeK,sBAAsB13S,KAAK0zS,aAGjD,IAAIuJ,EAAmBhF,2BAA2BC,uBAAuBl4S,KAAMA,KAAKq3S,gBACpFr3S,KAAKq3S,eAAeM,yBAAyBsF,GAExB,IAAjBj9S,KAAKoQ,KAAKytQ,IAAY79Q,KAAKoQ,KAAKw0Q,GAClC5kR,KAAK8kR,cAAgBi0B,wBAAwB/4S,MACnB,IAAjBA,KAAKoQ,KAAKytQ,IACnB79Q,KAAKq3S,eAAeL,eAAiBwC,yBAAyBx5S,KAAKk9S,WAAYl9S,KAAKm9S,UAAWn9S,KAAKq3S,gBACpGr3S,KAAKq3S,eAAe71S,QAAUxB,KAAKq3S,eAAeL,gBACxB,IAAjBh3S,KAAKoQ,KAAKytQ,KACnB79Q,KAAKq3S,eAAeJ,cAAgBwE,wBAAwBz7S,MAC5DA,KAAKq3S,eAAepkN,KAAOjzF,KAAKq3S,eAAeJ,gBAGnDmG,aAAc,WACZ,IAAIC,EAAiBtB,aAAa/7S,KAAKoQ,KAAKktS,IACxCpxB,EAAOlsR,KAAKu9S,aAAev9S,KAAKw9S,aACpCtxB,EAAK1hN,MAAM,kBAAoB6yO,GAEjCI,aAAc,SAAsBrtS,EAAM62Q,EAAY3I,GACpDt+Q,KAAKinR,WAAaA,EAClBjnR,KAAKs+Q,KAAOA,EACZt+Q,KAAKoQ,KAAOA,EACZpQ,KAAK09S,QAAU1iC,kBAEVh7Q,KAAKoQ,KAAKkvQ,KACbt/Q,KAAKoQ,KAAKkvQ,GAAK,GAIjBt/Q,KAAKm4S,eAAiB,IAAIsE,eAAez8S,KAAKoQ,KAAMpQ,KAAMA,KAAKk7R,oBAEjEyiB,QAAS,WACP,OAAO39S,KAAKktB,MAEdgmR,iBAAkB,cAWpB2J,aAAa38S,UAAY,CAMvBs1R,UAAW,WAETx1R,KAAKq6R,eAAgB,EAErBr6R,KAAKk7R,kBAAoB,GAEzBl7R,KAAKg6R,MAAO,GAad4jB,kBAAmB,SAA2BvvS,EAAKo0N,GACjD,IAAIvhO,EACA2/F,EAAM7gG,KAAKk7R,kBAAkB75R,OAEjC,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,GACpBuhO,GAAaziO,KAAK69S,WAAoD,cAAvC79S,KAAKk7R,kBAAkBh6R,GAAG20R,YAC3D71R,KAAKk7R,kBAAkBh6R,GAAG6xO,WAEtB/yO,KAAKk7R,kBAAkBh6R,GAAG84R,OAC5Bh6R,KAAKinR,WAAW+S,MAAO,EACvBh6R,KAAKg6R,MAAO,KAKpBU,mBAAoB,SAA4Bj6M,IACA,IAA1CzgF,KAAKk7R,kBAAkBhgR,QAAQulE,IACjCzgF,KAAKk7R,kBAAkBl1R,KAAKy6E,KAOlC,IAAIq9N,iBAAmB,WACrB,IAAIC,EAA0B,SAAiC7xB,GAC7D,IAAI8xB,EAAsB,GACtBC,EAAkB/xB,EAAKgyB,iBAE3B,SAAS3gL,IAGP,OAFAygL,EAAsB,GACtBC,EAAkB/xB,EAAKgyB,iBAChBC,EAGT,SAASA,EAAe75S,GACtB,GAAI25S,EAAgB35S,GAIlB,OAHA05S,EAAsB15S,EACtB25S,EAAkBA,EAAgB35S,GAEC,WAA/Bw4S,UAAUmB,GACLE,EAGFF,EAGT,IAAIG,EAAoB95S,EAAM4W,QAAQ8iS,GAEtC,IAA2B,IAAvBI,EAA0B,CAC5B,IAAI9rQ,EAAQ2S,SAAS3gD,EAAM08E,OAAOo9N,EAAoBJ,EAAoB38S,QAAS,IAGnF,OAFA48S,EAAkBA,EAAgB3rQ,GAEC,WAA/BwqQ,UAAUmB,GACLE,EAGFF,EAGT,MAAO,GAGT,OAAO1gL,GAGL8gL,EAAuB,SAA8BnyB,GACvD,SAAS2rB,EAAkBvzS,GACzB,MAAc,YAAVA,EACKuzS,EAAkByG,mBAGpB,KAKT,OAFAzG,EAAkBJ,MAAQ,UAC1BI,EAAkByG,iBAAmBP,EAAwB7xB,GACtD2rB,GAGT,OAAO,SAAU3rB,GACf,SAASqvB,EAAmBj3S,GAC1B,MAAc,SAAVA,EACKi3S,EAAmBgD,cAGrB,KAKT,OAFAhD,EAAmB9D,MAAQ,OAC3B8D,EAAmBgD,cAAgBF,EAAqBnyB,GACjDqvB,GAnEY,GAuEvB,SAASiD,eAAepuS,EAAM62Q,EAAY3I,GACxCt+Q,KAAKw1R,YACLx1R,KAAKkyS,iBACLlyS,KAAK4hR,UAAYqF,EAAWgE,aAAa76Q,EAAK2tQ,OAC9C/9Q,KAAK2iR,YAAcsE,EAAWw3B,YAAYv7B,SAASljR,KAAK4hR,WACxD5hR,KAAKy9S,aAAartS,EAAM62Q,EAAY3I,GAuBtC,SAASogC,aAAatuS,EAAM62Q,EAAY3I,GACtCt+Q,KAAKw1R,YACLx1R,KAAKkyS,iBACLlyS,KAAK4hR,UAAYqF,EAAWgE,aAAa76Q,EAAK2tQ,OAC9C/9Q,KAAKy9S,aAAartS,EAAM62Q,EAAY3I,GACpCt+Q,KAAK2+S,YAAa,EAClB3+S,KAAK4+S,UAAW,EAChB,IAAIhoC,EAAY52Q,KAAKinR,WAAWtF,cAAc3hR,KAAK4hR,WACnD5hR,KAAKw2Q,MAAQx2Q,KAAKinR,WAAWT,gBAAgB7P,YAAYC,GACzD52Q,KAAK6+S,aAAe,EACpB7+S,KAAKinR,WAAWT,gBAAgBjQ,SAASv2Q,MACzCA,KAAK8+S,kBAAoB,EACzB9+S,KAAKq2Q,QAAU,EACfr2Q,KAAK++S,gBAAkB,KACvB/+S,KAAKmkR,GAAK/zQ,EAAK+zQ,GAAKoR,gBAAgB/zL,QAAQxhG,KAAMoQ,EAAK+zQ,GAAI,EAAG8C,EAAW3B,UAAWtlR,MAAQ,CAC1Fg/S,cAAc,GAEhBh/S,KAAKi/S,GAAK1pB,gBAAgB/zL,QAAQxhG,KAAMoQ,EAAK8uS,IAAM9uS,EAAK8uS,GAAGD,GAAK7uS,EAAK8uS,GAAGD,GAAK,CAC3Et4S,EAAG,CAAC,MACH,EAAG,IAAM3G,MA2Ed,SAASm/S,gBAsMT,SAASC,oBAsFT,SAASC,YAAYjvS,EAAMoqJ,EAASysH,GAClCjnR,KAAKoQ,KAAOA,EACZpQ,KAAKw6J,QAAUA,EACfx6J,KAAKinR,WAAaA,EAClBjnR,KAAKmzR,WAAa,GAClBnzR,KAAK09Q,gBAAkB19Q,KAAKoQ,KAAKstQ,iBAAmB,GACpD19Q,KAAKs/S,YAAc,KACnB,IACIp+S,EAIAksF,EALA85L,EAAOlnR,KAAKinR,WAAWC,KAEvBrmL,EAAM7gG,KAAK09Q,gBAAkB19Q,KAAK09Q,gBAAgBr8Q,OAAS,EAC/DrB,KAAK4zS,SAAW57B,iBAAiBn3K,GACjC7gG,KAAKu/S,UAAY,GAEjB,IAGI14S,EACAu2Q,EAEAoiC,EACAC,EACAC,EACApyI,EATAlpG,EAAapkE,KAAK09Q,gBAClBz1P,EAAQ,EACR03R,EAAe,GAGfjC,EAAU1iC,kBAKV4kC,EAAW,WACXC,EAAU,YAEd,IAAK3+S,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAkBxB,IAjB2B,MAAvBkjE,EAAWljE,GAAGs1K,MAAuC,MAAvBpyG,EAAWljE,GAAGs1K,MAAgBpyG,EAAWljE,GAAG0qS,KAA6B,MAAtBxnO,EAAWljE,GAAGgF,EAAES,GAAay9D,EAAWljE,GAAGgF,EAAEonK,KAChIsyI,EAAW,OACXC,EAAU,QAGgB,MAAvBz7O,EAAWljE,GAAGs1K,MAAuC,MAAvBpyG,EAAWljE,GAAGs1K,MAA2B,IAAVvuJ,EAOhEu3R,EAAO,MANPA,EAAOtjC,SAAS,QAChBsjC,EAAK50O,aAAa,OAAQ,WAC1B40O,EAAK50O,aAAa,QAAS5qE,KAAKw6J,QAAQ8jH,KAAKluQ,KAAKusF,GAAK,GACvD6iN,EAAK50O,aAAa,SAAU5qE,KAAKw6J,QAAQ8jH,KAAKluQ,KAAKorG,GAAK,GACxDmkM,EAAa35S,KAAKw5S,IAKpBpyN,EAAO8uL,SAAS,QAEW,MAAvB93M,EAAWljE,GAAGs1K,KAEhBx2K,KAAK4zS,SAAS1yS,GAAK,CACjB2E,GAAI0vR,gBAAgB/zL,QAAQxhG,KAAKw6J,QAASp2F,EAAWljE,GAAGgF,EAAG,EAAG,IAAMlG,KAAKw6J,SACzE/5E,KAAMy8M,qBAAqBmD,aAAargS,KAAKw6J,QAASp2F,EAAWljE,GAAI,GACrEgrR,KAAM9+L,EACN0yN,SAAU,IAEZ54B,EAAKp8M,YAAYsiB,OACZ,CAIL,IAAI2yN,EAgCJ,GAnCA93R,GAAS,EACTmlE,EAAKxiB,aAAa,OAA+B,MAAvBxG,EAAWljE,GAAGs1K,KAAe,UAAY,WACnEppF,EAAKxiB,aAAa,YAAa,WAGL,IAAtBxG,EAAWljE,GAAGosK,EAAE3mK,GAClBi5S,EAAW,OACXC,EAAU,OACVvyI,EAAIioH,gBAAgB/zL,QAAQxhG,KAAKw6J,QAASp2F,EAAWljE,GAAGosK,EAAG,EAAG,KAAMttK,KAAKw6J,SACzEulJ,EAAW/kC,kBACXykC,EAAWvjC,SAAS,UACpBujC,EAAS70O,aAAa,KAAMm1O,GAC5BL,EAAUxjC,SAAS,gBACnBwjC,EAAQ90O,aAAa,WAAY,SACjC80O,EAAQ90O,aAAa,KAAM,iBAC3B80O,EAAQ90O,aAAa,SAAU,KAC/B60O,EAAS30O,YAAY40O,GACrBx4B,EAAKp8M,YAAY20O,GACjBryN,EAAKxiB,aAAa,SAAiC,MAAvBxG,EAAWljE,GAAGs1K,KAAe,UAAY,aAErEkpI,EAAU,KACVpyI,EAAI,MAINttK,KAAKmzR,WAAWjyR,GAAK,CACnBgrR,KAAM9+L,EACNkgF,EAAGA,EACH0yI,MAAON,EACPI,SAAU,GACVG,aAAc,GACdC,SAAUH,EACVI,WAAY,GAGa,MAAvB/7O,EAAWljE,GAAGs1K,KAAc,CAC9B4mG,EAAOuiC,EAAat+S,OACpB,IAAI8D,EAAI+2Q,SAAS,KAEjB,IAAKr1Q,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzB1B,EAAE2lE,YAAY60O,EAAa94S,IAG7B,IAAI0sS,EAAOr3B,SAAS,QACpBq3B,EAAK3oO,aAAa,YAAa,SAC/B2oO,EAAK3oO,aAAa,KAAM8yO,EAAU,IAAMz1R,GACxCsrR,EAAKzoO,YAAYsiB,GACjB85L,EAAKp8M,YAAYyoO,GACjBpuS,EAAEylE,aAAa,OAAQ,OAAS+qM,kBAAoB,IAAM+nC,EAAU,IAAMz1R,EAAQ,KAClF03R,EAAat+S,OAAS,EACtBs+S,EAAa35S,KAAKb,QAElBw6S,EAAa35S,KAAKonF,GAGhBhpB,EAAWljE,GAAG0qS,MAAQ5rS,KAAKu/S,YAC7Bv/S,KAAKu/S,UAAYv/S,KAAKogT,wBAIxBpgT,KAAK4zS,SAAS1yS,GAAK,CACjBgrR,KAAM9+L,EACN0yN,SAAU,GACVj6S,GAAI0vR,gBAAgB/zL,QAAQxhG,KAAKw6J,QAASp2F,EAAWljE,GAAGgF,EAAG,EAAG,IAAMlG,KAAKw6J,SACzE/5E,KAAMy8M,qBAAqBmD,aAAargS,KAAKw6J,QAASp2F,EAAWljE,GAAI,GACrEm/S,QAASb,GAGNx/S,KAAK4zS,SAAS1yS,GAAGu/E,KAAK95E,GACzB3G,KAAKsgT,SAASl8O,EAAWljE,GAAIlB,KAAK4zS,SAAS1yS,GAAGu/E,KAAK76E,EAAG5F,KAAK4zS,SAAS1yS,IAQ1E,IAHAlB,KAAKs/S,YAAcpjC,SAAS0jC,GAC5B/+M,EAAM8+M,EAAat+S,OAEdH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKs/S,YAAYx0O,YAAY60O,EAAaz+S,IAGxC+mB,EAAQ,IACVjoB,KAAKs/S,YAAY10O,aAAa,KAAM8yO,GACpC19S,KAAKw6J,QAAQ+lJ,cAAc31O,aAAai1O,EAAS,OAASlqC,kBAAoB,IAAM+nC,EAAU,KAC9Fx2B,EAAKp8M,YAAY9qE,KAAKs/S,cAGpBt/S,KAAK4zS,SAASvyS,QAChBrB,KAAKw6J,QAAQ+3I,uBAAuBvyS,MA5hBxCw+S,eAAet+S,UAAUykR,aAAe,aAExC9O,gBAAgB,CAACo8B,kBAAmB2K,YAAaC,cAAe2B,gBAEhEA,eAAet+S,UAAUsgT,eAAiB,WACxC,OAAO,MAGThC,eAAet+S,UAAUkpR,YAAc,aAEvCo1B,eAAet+S,UAAUijR,QAAU,aAEnCq7B,eAAet+S,UAAU+nR,gBAAkB,WACzCjoR,KAAKq3S,eAAiByG,iBAAiB99S,OAGzCw+S,eAAet+S,UAAUg+S,eAAiB,WACxC,OAAOl+S,KAAK2iR,aAyBd+7B,aAAax+S,UAAUykR,aAAe,SAAUt2Q,GAI9C,GAHArO,KAAK0yS,uBAAuBrkS,GAAK,GACjCrO,KAAK49S,kBAAkBvvS,GAAK,GAEvBrO,KAAKmkR,GAAG66B,aAIXh/S,KAAK6+S,aAAexwS,EAAMrO,KAAKoQ,KAAKkvQ,OAJX,CACzB,IAAImhC,EAAezgT,KAAKmkR,GAAGv+Q,EAC3B5F,KAAK6+S,aAAe4B,EAKtBzgT,KAAKq2Q,QAAUr2Q,KAAKi/S,GAAGr5S,EAAE,GACzB,IAAI86S,EAAc1gT,KAAKq2Q,QAAUr2Q,KAAK8+S,kBAElC9+S,KAAK++S,kBAAoB2B,IAC3B1gT,KAAK++S,gBAAkB2B,EACvB1gT,KAAKw2Q,MAAMiB,OAAOipC,KAItB7qC,gBAAgB,CAACo8B,kBAAmB2K,YAAaC,cAAe6B,cAEhEA,aAAax+S,UAAUkpR,YAAc,WAC/BppR,KAAKmyS,WAAanyS,KAAK4+S,WACpB5+S,KAAK2+S,aAIE3+S,KAAKw2Q,MAAMS,WAAahoQ,KAAKgyF,IAAIjhG,KAAK6+S,aAAe7+S,KAAKinR,WAAW3B,UAAYtlR,KAAKw2Q,MAAMQ,QAAU,KAChHh3Q,KAAKw2Q,MAAMQ,KAAKh3Q,KAAK6+S,aAAe7+S,KAAKinR,WAAW3B,YAJpDtlR,KAAKw2Q,MAAMO,OACX/2Q,KAAKw2Q,MAAMQ,KAAKh3Q,KAAK6+S,aAAe7+S,KAAKinR,WAAW3B,WACpDtlR,KAAK2+S,YAAa,KAOxBD,aAAax+S,UAAUirR,KAAO,aAG9BuzB,aAAax+S,UAAUgrR,KAAO,WAC5BlrR,KAAKw2Q,MAAMl3I,QACXt/H,KAAK2+S,YAAa,GAGpBD,aAAax+S,UAAUo/H,MAAQ,WAC7Bt/H,KAAKw2Q,MAAMl3I,QACXt/H,KAAK2+S,YAAa,EAClB3+S,KAAK4+S,UAAW,GAGlBF,aAAax+S,UAAUq/H,OAAS,WAC9Bv/H,KAAK4+S,UAAW,GAGlBF,aAAax+S,UAAUu2Q,QAAU,SAAUC,GACzC12Q,KAAKw2Q,MAAMU,KAAKR,IAGlBgoC,aAAax+S,UAAUu3Q,OAAS,SAAUkpC,GACxC3gT,KAAK8+S,kBAAoB6B,EACzB3gT,KAAK++S,gBAAkB4B,EAAc3gT,KAAKq2Q,QAC1Cr2Q,KAAKw2Q,MAAMiB,OAAOz3Q,KAAK++S,kBAGzBL,aAAax+S,UAAUsgT,eAAiB,WACtC,OAAO,MAGT9B,aAAax+S,UAAUijR,QAAU,aAEjCu7B,aAAax+S,UAAUgzS,iBAAmB,aAE1CwL,aAAax+S,UAAU+nR,gBAAkB,aAIzCk3B,aAAaj/S,UAAU0gT,YAAc,SAAUvyS,GAC7C,IAAInN,EAEAkP,EADAywF,EAAM7gG,KAAKi9Q,OAAO57Q,OAItB,IAFArB,KAAKg9Q,gBAAiB,EAEjB97Q,EAAI2/F,EAAM,EAAG3/F,GAAK,EAAGA,GAAK,EACxBlB,KAAKosS,SAASlrS,KACjBkP,EAAOpQ,KAAKi9Q,OAAO/7Q,GAEfkP,EAAKqjH,GAAKrjH,EAAKivQ,IAAMhxQ,EAAMrO,KAAKi9Q,OAAO/7Q,GAAGm+Q,IAAMjvQ,EAAKvK,GAAKuK,EAAKivQ,GAAKhxQ,EAAMrO,KAAKi9Q,OAAO/7Q,GAAGm+Q,IAC3Fr/Q,KAAK6gT,UAAU3/S,IAInBlB,KAAKg9Q,iBAAiBh9Q,KAAKosS,SAASlrS,IAAKlB,KAAKg9Q,eAGhDh9Q,KAAK8gT,wBAGP3B,aAAaj/S,UAAU6gT,WAAa,SAAU/H,GAC5C,OAAQA,EAAMn7B,IACZ,KAAK,EACH,OAAO79Q,KAAKghT,YAAYhI,GAE1B,KAAK,EACH,OAAOh5S,KAAKihT,WAAWjI,GAEzB,KAAK,EACH,OAAOh5S,KAAKkhT,YAAYlI,GAE1B,KAAK,EACH,OAAOh5S,KAAKmhT,WAAWnI,GAEzB,KAAK,EACH,OAAOh5S,KAAKohT,YAAYpI,GAE1B,KAAK,EACH,OAAOh5S,KAAKqhT,WAAWrI,GAEzB,KAAK,EACH,OAAOh5S,KAAK22Q,YAAYqiC,GAE1B,KAAK,GACH,OAAOh5S,KAAKshT,aAAatI,GAE3B,KAAK,GACH,OAAOh5S,KAAKuhT,cAAcvI,GAE5B,QACE,OAAOh5S,KAAKmhT,WAAWnI,KAI7BmG,aAAaj/S,UAAUohT,aAAe,WACpC,MAAM,IAAI1gT,MAAM,qDAGlBu+S,aAAaj/S,UAAUy2Q,YAAc,SAAUvmQ,GAC7C,OAAO,IAAIsuS,aAAatuS,EAAMpQ,KAAKinR,WAAYjnR,OAGjDm/S,aAAaj/S,UAAUqhT,cAAgB,SAAUnxS,GAC/C,OAAO,IAAIouS,eAAepuS,EAAMpQ,KAAKinR,WAAYjnR,OAGnDm/S,aAAaj/S,UAAUshT,cAAgB,WACrC,IAAItgT,EACA2/F,EAAM7gG,KAAKi9Q,OAAO57Q,OAEtB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAK6gT,UAAU3/S,GAGjBlB,KAAK8gT,wBAGP3B,aAAaj/S,UAAUynR,cAAgB,SAAUC,GAE/C,IAAI1mR,EADJlB,KAAKg9Q,gBAAiB,EAEtB,IACIn2Q,EADAg6F,EAAM+mL,EAAUvmR,OAEhB+7Q,EAAOp9Q,KAAKi9Q,OAAO57Q,OAEvB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAAG,CAC3B2F,EAAI,EAEJ,MAAOA,EAAIu2Q,EAAM,CACf,GAAIp9Q,KAAKi9Q,OAAOp2Q,GAAGo/B,KAAO2hP,EAAU1mR,GAAG+kC,GAAI,CACzCjmC,KAAKi9Q,OAAOp2Q,GAAK+gR,EAAU1mR,GAC3B,MAGF2F,GAAK,KAKXs4S,aAAaj/S,UAAUinR,oBAAsB,SAAUs6B,GACrDzhT,KAAKinR,WAAWX,iBAAmBm7B,GAGrCtC,aAAaj/S,UAAU6oR,UAAY,WAC5B/oR,KAAKinR,WAAWy6B,iBACnB1hT,KAAKwhT,iBAITrC,aAAaj/S,UAAUyhT,sBAAwB,SAAUnnJ,EAASonJ,EAAY3mG,GAC5E,IAAImxF,EAAWpsS,KAAKosS,SAChBnvB,EAASj9Q,KAAKi9Q,OACd/7Q,EAAI,EACJ2/F,EAAMo8K,EAAO57Q,OAEjB,MAAOH,EAAI2/F,EACLo8K,EAAO/7Q,GAAGw1R,KAAOkrB,IAEdxV,EAASlrS,KAAsB,IAAhBkrS,EAASlrS,IAI3B+5M,EAAUj1M,KAAKomS,EAASlrS,IACxBkrS,EAASlrS,GAAG2gT,mBAEa37Q,IAArB+2O,EAAO/7Q,GAAG29C,OACZ7+C,KAAK2hT,sBAAsBnnJ,EAASyiH,EAAO/7Q,GAAG29C,OAAQo8J,GAEtDzgD,EAAQsnJ,aAAa7mG,KATvBj7M,KAAK6gT,UAAU3/S,GACflB,KAAK+hT,kBAAkBvnJ,KAa3Bt5J,GAAK,GAITi+S,aAAaj/S,UAAU6hT,kBAAoB,SAAUvnJ,GACnDx6J,KAAKgiT,gBAAgBh8S,KAAKw0J,IAG5B2kJ,aAAaj/S,UAAUwoR,wBAA0B,SAAUtK,GACzD,IAAIl9Q,EACA2/F,EAAMu9K,EAAO/8Q,OAEjB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB,GAAIk9Q,EAAOl9Q,GAAG0jR,GAAI,CAChB,IAAItG,EAAOt+Q,KAAKihT,WAAW7iC,EAAOl9Q,IAClCo9Q,EAAK2J,kBACLjoR,KAAKinR,WAAWX,iBAAiB/B,oBAAoBjG,KAK3D6gC,aAAaj/S,UAAUorR,iBAAmB,SAAUl+L,GAClD,IACIotE,EADAynJ,EAAY70N,EAAKpvC,QAGrB,GAAyB,kBAAdikQ,EACTznJ,EAAUx6J,KAAKosS,SAAS6V,OACnB,CACL,IAAI/gT,EACA2/F,EAAM7gG,KAAKosS,SAAS/qS,OAExB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB,GAAIlB,KAAKosS,SAASlrS,GAAGkP,KAAKs0Q,KAAOu9B,EAAW,CAC1CznJ,EAAUx6J,KAAKosS,SAASlrS,GACxB,OAKN,OAAoB,IAAhBksF,EAAK/rF,OACAm5J,EAGFA,EAAQ8wH,iBAAiBl+L,IAGlC+xN,aAAaj/S,UAAUgiT,gBAAkB,SAAU15B,EAAU25B,GAC3DniT,KAAKinR,WAAWa,YAAc,IAAIimB,YAClC/tS,KAAKinR,WAAWa,YAAYC,SAASS,EAASliL,OAC9CtmG,KAAKinR,WAAWa,YAAYE,SAASQ,EAASX,MAAOs6B,GACrDniT,KAAKinR,WAAWgE,aAAejrR,KAAKoiT,cAAcn3B,aAAa5nO,KAAKrjD,KAAKoiT,eACzEpiT,KAAKinR,WAAWtF,cAAgB3hR,KAAKoiT,cAAczgC,cAAct+N,KAAKrjD,KAAKoiT,eAC3EpiT,KAAKinR,WAAWw3B,YAAcz+S,KAAKoiT,cAAc77B,eACjDvmR,KAAKinR,WAAWT,gBAAkBxmR,KAAKoiT,cAAc57B,gBACrDxmR,KAAKinR,WAAWiT,QAAU,EAC1Bl6R,KAAKinR,WAAW3B,UAAYkD,EAASC,GACrCzoR,KAAKinR,WAAWvC,GAAK8D,EAAS9D,GAC9B1kR,KAAKinR,WAAWiyB,SAAW,CACzBv8M,EAAG6rL,EAAS7rL,EACZ6e,EAAGgtK,EAAShtK,IAMhB4jM,iBAAiBl/S,UAAY,CAC3BmiT,cAAe,WACbriT,KAAK6yS,eAAiB,CACpBC,MAAO9yS,KAAKoQ,KAAKouQ,GAAK6qB,yBAAyBoB,qBAAqBzqS,KAAMA,KAAKoQ,KAAKouQ,GAAIx+Q,MAAQ,CAC9FkG,EAAG,GAELo8S,SAAS,EACTC,QAAQ,EACR/Y,IAAK,IAAI/I,QAGPzgS,KAAKoQ,KAAKoyS,KACZxiT,KAAK6yS,eAAeC,MAAM3I,cAAe,GAIvCnqS,KAAKoQ,KAAKytQ,IAGhB4kC,gBAAiB,WAIf,GAHAziT,KAAK6yS,eAAe0P,OAASviT,KAAK6yS,eAAeC,MAAM5sS,EAAE8zR,MAAQh6R,KAAKq6R,cACtEr6R,KAAK6yS,eAAeyP,QAAUtiT,KAAK6yS,eAAeC,MAAM9Y,MAAQh6R,KAAKq6R,cAEjEr6R,KAAKi7M,UAAW,CAClB,IAAIuuF,EACAkZ,EAAW1iT,KAAK6yS,eAAerJ,IAC/BtoS,EAAI,EACJ2/F,EAAM7gG,KAAKi7M,UAAU55M,OAEzB,IAAKrB,KAAK6yS,eAAeyP,QACvB,MAAOphT,EAAI2/F,EAAK,CACd,GAAI7gG,KAAKi7M,UAAU/5M,GAAG2xS,eAAeC,MAAM9Y,KAAM,CAC/Ch6R,KAAK6yS,eAAeyP,SAAU,EAC9B,MAGFphT,GAAK,EAIT,GAAIlB,KAAK6yS,eAAeyP,QAItB,IAHA9Y,EAAMxpS,KAAK6yS,eAAeC,MAAMltS,EAAE6vH,MAClCitL,EAAS1e,eAAewF,GAEnBtoS,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBsoS,EAAMxpS,KAAKi7M,UAAU/5M,GAAG2xS,eAAeC,MAAMltS,EAAE6vH,MAC/CitL,EAASh6D,UAAU8gD,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAAKA,EAAI,IAAKA,EAAI,IAAKA,EAAI,IAAKA,EAAI,IAAKA,EAAI,OAK5JmZ,cAAe,SAAuBhlC,GACpC,IAAIha,EAAa,GACjBA,EAAW39P,KAAKhG,KAAK6yS,gBACrB,IAeI3xS,EAfAs0Q,GAAO,EACP8I,EAAOt+Q,KAAKs+Q,KAEhB,MAAO9I,EACD8I,EAAKu0B,gBACHv0B,EAAKluQ,KAAKotQ,SACZ7Z,EAAWnzJ,OAAO,EAAG,EAAG8tK,EAAKu0B,gBAG/Bv0B,EAAOA,EAAKA,MAEZ9I,GAAO,EAKX,IACIotC,EADA/hN,EAAM8iK,EAAWtiQ,OAGrB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB0hT,EAAQj/C,EAAWziQ,GAAGsoS,IAAI/E,kBAAkB,EAAG,EAAG,GAElD9mB,EAAK,CAACA,EAAG,GAAKilC,EAAM,GAAIjlC,EAAG,GAAKilC,EAAM,GAAI,GAG5C,OAAOjlC,GAETklC,QAAS,IAAIpiB,QAqJf4e,YAAYn/S,UAAU4iT,gBAAkB,SAAU1uO,GAChD,OAAOp0E,KAAK4zS,SAASx/N,GAAKqM,MAG5B4+N,YAAYn/S,UAAUkpR,YAAc,SAAU25B,GAC5C,IACI7hT,EADAwhT,EAAW1iT,KAAKw6J,QAAQq4I,eAAerJ,IAEvC3oM,EAAM7gG,KAAK09Q,gBAAgBr8Q,OAE/B,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EASxB,IARIlB,KAAK4zS,SAAS1yS,GAAGu/E,KAAKu5M,MAAQ+oB,IAChC/iT,KAAKsgT,SAAStgT,KAAK09Q,gBAAgBx8Q,GAAIlB,KAAK4zS,SAAS1yS,GAAGu/E,KAAK76E,EAAG5F,KAAK4zS,SAAS1yS,KAG5ElB,KAAK4zS,SAAS1yS,GAAG2E,GAAGm0R,MAAQ+oB,IAC9B/iT,KAAK4zS,SAAS1yS,GAAGgrR,KAAKthN,aAAa,eAAgB5qE,KAAK4zS,SAAS1yS,GAAG2E,GAAGD,GAGpC,MAAjC5F,KAAK09Q,gBAAgBx8Q,GAAGs1K,OACtBx2K,KAAK4zS,SAAS1yS,GAAGm/S,UAAYrgT,KAAKw6J,QAAQq4I,eAAeC,MAAM9Y,MAAQ+oB,IACzE/iT,KAAK4zS,SAAS1yS,GAAGm/S,QAAQz1O,aAAa,YAAa83O,EAASre,mBAAmBiB,WAG7EtlS,KAAKmzR,WAAWjyR,GAAGosK,IAAMttK,KAAKmzR,WAAWjyR,GAAGosK,EAAE0sH,MAAQ+oB,IAAe,CACvE,IAAIrD,EAAU1/S,KAAKmzR,WAAWjyR,GAAG8+S,MAE7BhgT,KAAKmzR,WAAWjyR,GAAGosK,EAAE1nK,EAAI,GACa,UAApC5F,KAAKmzR,WAAWjyR,GAAG++S,eACrBjgT,KAAKmzR,WAAWjyR,GAAG++S,aAAe,QAClCjgT,KAAKmzR,WAAWjyR,GAAGgrR,KAAKthN,aAAa,SAAU,OAAS+qM,kBAAoB,IAAM31Q,KAAKmzR,WAAWjyR,GAAGg/S,SAAW,MAGlHR,EAAQ90O,aAAa,UAAW5qE,KAAKmzR,WAAWjyR,GAAGosK,EAAE1nK,KAEb,WAApC5F,KAAKmzR,WAAWjyR,GAAG++S,eACrBjgT,KAAKmzR,WAAWjyR,GAAG++S,aAAe,SAClCjgT,KAAKmzR,WAAWjyR,GAAGgrR,KAAKthN,aAAa,SAAU,OAGjD5qE,KAAKmzR,WAAWjyR,GAAGgrR,KAAKthN,aAAa,eAAyC,EAAzB5qE,KAAKmzR,WAAWjyR,GAAGosK,EAAE1nK,MAOpFy5S,YAAYn/S,UAAU8iT,eAAiB,WACrC,OAAOhjT,KAAKs/S,aAGdD,YAAYn/S,UAAUkgT,qBAAuB,WAC3C,IAAIhzN,EAAO,QAKX,OAJAA,GAAQ,KAAOptF,KAAKinR,WAAWiyB,SAASv8M,EACxCvP,GAAQ,KAAOptF,KAAKinR,WAAWiyB,SAAS19L,EACxCpuB,GAAQ,MAAQptF,KAAKinR,WAAWiyB,SAASv8M,EACzCvP,GAAQ,MAAQptF,KAAKinR,WAAWiyB,SAAS19L,EAAI,IACtCpuB,GAGTiyN,YAAYn/S,UAAUogT,SAAW,SAAU5gC,EAAUujC,EAAWrP,GAC9D,IACI1yS,EACA2/F,EAFAqiN,EAAa,KAAOD,EAAUr9S,EAAE,GAAG,GAAK,IAAMq9S,EAAUr9S,EAAE,GAAG,GAKjE,IAFAi7F,EAAMoiN,EAAUhzB,QAEX/uR,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAExBgiT,GAAc,KAAOD,EAAU/8S,EAAEhF,EAAI,GAAG,GAAK,IAAM+hT,EAAU/8S,EAAEhF,EAAI,GAAG,GAAK,IAAM+hT,EAAU/hT,EAAEA,GAAG,GAAK,IAAM+hT,EAAU/hT,EAAEA,GAAG,GAAK,IAAM+hT,EAAUr9S,EAAE1E,GAAG,GAAK,IAAM+hT,EAAUr9S,EAAE1E,GAAG,GAShL,GALI+hT,EAAUhvO,GAAK4sB,EAAM,IACvBqiN,GAAc,KAAOD,EAAU/8S,EAAEhF,EAAI,GAAG,GAAK,IAAM+hT,EAAU/8S,EAAEhF,EAAI,GAAG,GAAK,IAAM+hT,EAAU/hT,EAAE,GAAG,GAAK,IAAM+hT,EAAU/hT,EAAE,GAAG,GAAK,IAAM+hT,EAAUr9S,EAAE,GAAG,GAAK,IAAMq9S,EAAUr9S,EAAE,GAAG,IAI5KguS,EAASkM,WAAaoD,EAAY,CACpC,IAAIC,EAAiB,GAEjBvP,EAAS1nB,OACP+2B,EAAUhvO,IACZkvO,EAAiBzjC,EAASksB,IAAM5rS,KAAKu/S,UAAY2D,EAAaA,GAGhEtP,EAAS1nB,KAAKthN,aAAa,IAAKu4O,IAGlCvP,EAASkM,SAAWoD,IAIxB7D,YAAYn/S,UAAUijR,QAAU,WAC9BnjR,KAAKw6J,QAAU,KACfx6J,KAAKinR,WAAa,KAClBjnR,KAAKs/S,YAAc,KACnBt/S,KAAKoQ,KAAO,KACZpQ,KAAK09Q,gBAAkB,MAGzB,IAAI0lC,eAAiB,WACnB,IAAI9gC,EAAK,GAIT,SAAS+gC,EAAaC,EAAOC,GAC3B,IAAIC,EAAMtnC,SAAS,UAWnB,OAVAsnC,EAAI54O,aAAa,KAAM04O,IAEC,IAApBC,IACFC,EAAI54O,aAAa,cAAe,qBAChC44O,EAAI54O,aAAa,IAAK,MACtB44O,EAAI54O,aAAa,IAAK,MACtB44O,EAAI54O,aAAa,QAAS,QAC1B44O,EAAI54O,aAAa,SAAU,SAGtB44O,EAGT,SAASC,IACP,IAAIC,EAAgBxnC,SAAS,iBAI7B,OAHAwnC,EAAc94O,aAAa,OAAQ,UACnC84O,EAAc94O,aAAa,8BAA+B,QAC1D84O,EAAc94O,aAAa,SAAU,8CAC9B84O,EAGT,OA1BAphC,EAAG+gC,aAAeA,EAClB/gC,EAAGmhC,6BAA+BA,EAyB3BnhC,EA5BY,GA+BjBqhC,eAAiB,WACnB,IAAIrhC,EAAK,CACPs9B,UAAU,GAOZ,OAJI,WAAWtwS,KAAKstC,UAAUuD,YAAc,UAAU7wC,KAAKstC,UAAUuD,YAAc,WAAW7wC,KAAKstC,UAAUuD,YAAc,aAAa7wC,KAAKstC,UAAUuD,cACrJmiO,EAAGs9B,UAAW,GAGTt9B,EATY,GAYjBshC,kBAAoB,GACpBC,SAAW,iBAEf,SAASC,WAAW53B,GAClB,IAAIhrR,EAOA6iT,EANAz9O,EAAS,gBACTu6B,EAAMqrL,EAAK97Q,KAAKkoS,GAAKpsB,EAAK97Q,KAAKkoS,GAAGj3S,OAAS,EAC3CiiT,EAAQtoC,kBACRwoC,EAAMJ,eAAeC,aAAaC,GAAO,GACzCr7R,EAAQ,EAIZ,IAHAjoB,KAAKgkT,QAAU,GAGV9iT,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAAG,CAC3B6iT,EAAgB,KAChB,IAAI72R,EAAOg/P,EAAK97Q,KAAKkoS,GAAGp3S,GAAG28Q,GAE3B,GAAI+lC,kBAAkB12R,GAAO,CAC3B,IAAI+2R,EAASL,kBAAkB12R,GAAM6pR,OACrCgN,EAAgB,IAAIE,EAAOT,EAAKt3B,EAAKisB,eAAeC,eAAel3S,GAAIgrR,EAAM23B,SAAW57R,EAAOq+C,GAC/FA,EAASu9O,SAAW57R,EAEhB27R,kBAAkB12R,GAAMg3R,iBAC1Bj8R,GAAS,GAIT87R,GACF/jT,KAAKgkT,QAAQh+S,KAAK+9S,GAIlB97R,IACFikQ,EAAKjF,WAAWC,KAAKp8M,YAAY04O,GACjCt3B,EAAKsxB,aAAa5yO,aAAa,SAAU,OAAS+qM,kBAAoB,IAAM2tC,EAAQ,MAGlFtjT,KAAKgkT,QAAQ3iT,QACf6qR,EAAKqmB,uBAAuBvyS,MAahC,SAASmkT,eAAel+Q,EAAI8wQ,EAAQmN,GAClCN,kBAAkB39Q,GAAM,CACtB8wQ,OAAQA,EACRmN,eAAgBA,GAIpB,SAASE,kBAiLT,SAASC,oBAgDT,SAASC,wBAmET,SAASC,cAAcn0S,EAAM62Q,EAAY3I,GACvCt+Q,KAAK4hR,UAAYqF,EAAWgE,aAAa76Q,EAAK2tQ,OAC9C/9Q,KAAKwkT,YAAYp0S,EAAM62Q,EAAY3I,GACnCt+Q,KAAKykT,WAAa,CAChB/kP,IAAK,EACLE,KAAM,EACNL,MAAOv/D,KAAK4hR,UAAUjlL,EACtBl9B,OAAQz/D,KAAK4hR,UAAUpmK,GAoB3B,SAASkpM,iBAAiBlqJ,EAAS9vF,GACjC1qE,KAAKksR,KAAO1xH,EACZx6J,KAAKo0E,IAAM1J,EAGb,SAASi6O,iBApVTb,WAAW5jT,UAAUkpR,YAAc,SAAUiR,GAC3C,IAAIn5R,EACA2/F,EAAM7gG,KAAKgkT,QAAQ3iT,OAEvB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKgkT,QAAQ9iT,GAAGkoR,YAAYiR,IAahC+pB,eAAelkT,UAAY,CACzB0kT,oBAAqB,WACnB5kT,KAAKw9S,aAAethC,SAAS,MAE/B2oC,wBAAyB,WACvB7kT,KAAK8kT,aAAe5oC,SAAS,KAC7Bl8Q,KAAK+kT,mBAAqB/kT,KAAKw9S,aAC/Bx9S,KAAKugT,cAAgBvgT,KAAKw9S,aAC1Bx9S,KAAKglT,cAAe,EACpB,IAEI1B,EACAE,EACAyB,EAJAC,EAAqB,KAMzB,GAAIllT,KAAKoQ,KAAKmtQ,IACZ,GAAoB,GAAhBv9Q,KAAKoQ,KAAKmtQ,IAA2B,GAAhBv9Q,KAAKoQ,KAAKmtQ,GAAS,CAE1C,IAAI4nC,EAASjpC,SAAS,QACtBipC,EAAOv6O,aAAa,KAAM5qE,KAAK09S,SAC/ByH,EAAOv6O,aAAa,YAA6B,GAAhB5qE,KAAKoQ,KAAKmtQ,GAAU,YAAc,SAEnE4nC,EAAOr6O,YAAY9qE,KAAKw9S,cACxB0H,EAAqBC,EACrBnlT,KAAKinR,WAAWC,KAAKp8M,YAAYq6O,GAE5BxB,eAAe/D,UAA4B,GAAhB5/S,KAAKoQ,KAAKmtQ,KAExC4nC,EAAOv6O,aAAa,YAAa,aACjC04O,EAAQtoC,kBACRwoC,EAAMJ,eAAeC,aAAaC,GAClCtjT,KAAKinR,WAAWC,KAAKp8M,YAAY04O,GACjCA,EAAI14O,YAAYs4O,eAAeK,gCAC/BwB,EAAK/oC,SAAS,KACd+oC,EAAGn6O,YAAY9qE,KAAKw9S,cACpB0H,EAAqBD,EACrBE,EAAOr6O,YAAYm6O,GACnBA,EAAGr6O,aAAa,SAAU,OAAS+qM,kBAAoB,IAAM2tC,EAAQ,WAElE,GAAoB,GAAhBtjT,KAAKoQ,KAAKmtQ,GAAS,CAE5B,IAAI6nC,EAAYlpC,SAAS,QACzBkpC,EAAUx6O,aAAa,KAAM5qE,KAAK09S,SAClC0H,EAAUx6O,aAAa,YAAa,SACpC,IAAIy6O,EAAcnpC,SAAS,KAC3BkpC,EAAUt6O,YAAYu6O,GACtB/B,EAAQtoC,kBACRwoC,EAAMJ,eAAeC,aAAaC,GAUlC,IAAIgC,EAAQppC,SAAS,uBACrBopC,EAAM16O,aAAa,KAAM,iBACzB44O,EAAI14O,YAAYw6O,GAChB,IAAIC,EAASrpC,SAAS,WACtBqpC,EAAO36O,aAAa,OAAQ,SAC5B26O,EAAO36O,aAAa,cAAe,WACnC06O,EAAMx6O,YAAYy6O,GAElBvlT,KAAKinR,WAAWC,KAAKp8M,YAAY04O,GACjC,IAAIgC,EAAYtpC,SAAS,QACzBspC,EAAU56O,aAAa,QAAS5qE,KAAKs+Q,KAAKluQ,KAAKusF,GAC/C6oN,EAAU56O,aAAa,SAAU5qE,KAAKs+Q,KAAKluQ,KAAKorG,GAChDgqM,EAAU56O,aAAa,IAAK,KAC5B46O,EAAU56O,aAAa,IAAK,KAC5B46O,EAAU56O,aAAa,OAAQ,WAC/B46O,EAAU56O,aAAa,UAAW,KAClCy6O,EAAYz6O,aAAa,SAAU,OAAS+qM,kBAAoB,IAAM2tC,EAAQ,KAC9E+B,EAAYv6O,YAAY06O,GACxBH,EAAYv6O,YAAY9qE,KAAKw9S,cAC7B0H,EAAqBG,EAEhB1B,eAAe/D,WAClBwF,EAAUx6O,aAAa,YAAa,aACpC44O,EAAI14O,YAAYs4O,eAAeK,gCAC/BwB,EAAK/oC,SAAS,KACdmpC,EAAYv6O,YAAY06O,GACxBP,EAAGn6O,YAAY9qE,KAAKw9S,cACpB0H,EAAqBD,EACrBI,EAAYv6O,YAAYm6O,IAG1BjlT,KAAKinR,WAAWC,KAAKp8M,YAAYs6O,SAE1BplT,KAAKoQ,KAAKktQ,IACnBt9Q,KAAK8kT,aAAah6O,YAAY9qE,KAAKw9S,cACnC0H,EAAqBllT,KAAK8kT,aAC1B9kT,KAAKu9S,YAAcv9S,KAAK8kT,cAExB9kT,KAAKu9S,YAAcv9S,KAAKw9S,aAY1B,GATIx9S,KAAKoQ,KAAKq1S,IACZzlT,KAAKw9S,aAAa5yO,aAAa,KAAM5qE,KAAKoQ,KAAKq1S,IAG7CzlT,KAAKoQ,KAAK2vQ,IACZ//Q,KAAKw9S,aAAa5yO,aAAa,QAAS5qE,KAAKoQ,KAAK2vQ,IAI/B,IAAjB//Q,KAAKoQ,KAAKytQ,KAAa79Q,KAAKoQ,KAAKs1S,GAAI,CACvC,IAAIC,EAAKzpC,SAAS,YACdyB,EAAKzB,SAAS,QAClByB,EAAG/yM,aAAa,IAAK,SAAW5qE,KAAKoQ,KAAKusF,EAAI,OAAS38F,KAAKoQ,KAAKusF,EAAI,IAAM38F,KAAKoQ,KAAKorG,EAAI,OAASx7G,KAAKoQ,KAAKorG,EAAI,KAChH,IAAIoqM,EAAS5qC,kBAKb,GAJA2qC,EAAG/6O,aAAa,KAAMg7O,GACtBD,EAAG76O,YAAY6yM,GACf39Q,KAAKinR,WAAWC,KAAKp8M,YAAY66O,GAE7B3lT,KAAKg9S,aAAc,CACrB,IAAI6I,EAAU3pC,SAAS,KACvB2pC,EAAQj7O,aAAa,YAAa,OAAS+qM,kBAAoB,IAAMiwC,EAAS,KAC9EC,EAAQ/6O,YAAY9qE,KAAKw9S,cACzBx9S,KAAK+kT,mBAAqBc,EAEtBX,EACFA,EAAmBp6O,YAAY9qE,KAAK+kT,oBAEpC/kT,KAAKu9S,YAAcv9S,KAAK+kT,wBAG1B/kT,KAAKw9S,aAAa5yO,aAAa,YAAa,OAAS+qM,kBAAoB,IAAMiwC,EAAS,KAIvE,IAAjB5lT,KAAKoQ,KAAKktS,IACZt9S,KAAKo9S,gBAGT0I,cAAe,WACT9lT,KAAK6yS,eAAeyP,SACtBtiT,KAAK+kT,mBAAmBn6O,aAAa,YAAa5qE,KAAK6yS,eAAerJ,IAAIlE,WAGxEtlS,KAAK6yS,eAAe0P,QACtBviT,KAAK+kT,mBAAmBn6O,aAAa,UAAW5qE,KAAK6yS,eAAeC,MAAM5sS,EAAEN,IAGhFmgT,mBAAoB,WAClB/lT,KAAKw9S,aAAe,KACpBx9S,KAAK8kT,aAAe,KACpB9kT,KAAK0zS,YAAYvwB,WAEnBq9B,eAAgB,WACd,OAAIxgT,KAAKoQ,KAAKs1S,GACL,KAGF1lT,KAAKu9S,aAEdyI,2BAA4B,WAC1BhmT,KAAK0zS,YAAc,IAAI2L,YAAYr/S,KAAKoQ,KAAMpQ,KAAMA,KAAKinR,YACzDjnR,KAAKimT,yBAA2B,IAAInC,WAAW9jT,OAEjDkmT,SAAU,SAAkBjgR,GACrBjmC,KAAK8kT,cAIV9kT,KAAK8kT,aAAal6O,aAAa,OAAQ,OAAS+qM,kBAAoB,IAAM1vO,EAAK,OAWnFo+Q,iBAAiBnkT,UAAY,CAM3BimT,cAAe,WAEbnmT,KAAKi7M,UAAY,GAEjBj7M,KAAK69S,WAAY,EACjB79S,KAAKomT,kBAUPtE,aAAc,SAAsB7mG,GAClCj7M,KAAKi7M,UAAYA,GAQnB4mG,YAAa,WACX7hT,KAAK69S,WAAY,GAQnBuI,eAAgB,gBACWlgR,IAArBlmC,KAAKoQ,KAAKyuC,QACZ7+C,KAAKs+Q,KAAKqjC,sBAAsB3hT,KAAMA,KAAKoQ,KAAKyuC,OAAQ,MAO9D,WACE,IAAIwnQ,EAAa,CACf7B,YAAa,SAAqBp0S,EAAM62Q,EAAY3I,GAClDt+Q,KAAKw1R,YACLx1R,KAAKy9S,aAAartS,EAAM62Q,EAAY3I,GACpCt+Q,KAAKqiT,cAAcjyS,EAAM62Q,EAAY3I,GACrCt+Q,KAAKmmT,gBACLnmT,KAAKkyS,iBACLlyS,KAAK4kT,sBACL5kT,KAAK6kT,0BACL7kT,KAAKgmT,6BACLhmT,KAAKsmT,gBACLtmT,KAAKkrR,QAEPA,KAAM,WAEJ,IAAKlrR,KAAKoyS,UAAYpyS,KAAKmyS,WAAanyS,KAAKqyS,eAAgB,CAC3D,IAAInmB,EAAOlsR,KAAKu9S,aAAev9S,KAAKw9S,aACpCtxB,EAAK1hN,MAAM6mG,QAAU,OACrBrxK,KAAKoyS,QAAS,IAGlBjnB,KAAM,WAEJ,GAAInrR,KAAKmyS,YAAcnyS,KAAKqyS,cAAe,CACzC,IAAKryS,KAAKoQ,KAAKs1S,GAAI,CACjB,IAAIx5B,EAAOlsR,KAAKu9S,aAAev9S,KAAKw9S,aACpCtxB,EAAK1hN,MAAM6mG,QAAU,QAGvBrxK,KAAKoyS,QAAS,EACdpyS,KAAKq6R,eAAgB,IAGzBjR,YAAa,WAGPppR,KAAKoQ,KAAKs1S,IAAM1lT,KAAKoyS,SAIzBpyS,KAAKyiT,kBACLziT,KAAKizS,mBACLjzS,KAAK8lT,gBACL9lT,KAAKumT,qBAEDvmT,KAAKq6R,gBACPr6R,KAAKq6R,eAAgB,KAGzBksB,mBAAoB,aACpB5hC,aAAc,SAAsBt2Q,GAClCrO,KAAKg6R,MAAO,EACZh6R,KAAK0yS,uBAAuBrkS,GAC5BrO,KAAK49S,kBAAkBvvS,EAAKrO,KAAKmyS,WACjCnyS,KAAK4yS,qBAEPzvB,QAAS,WACPnjR,KAAKwmT,UAAY,KACjBxmT,KAAK+lT,uBAGTlwC,gBAAgB,CAACo8B,kBAAmBl8B,oBAAoBswC,IAAc/B,sBA9DxE,GA4EAzuC,gBAAgB,CAAC+mC,YAAawC,iBAAkBgF,eAAgBC,iBAAkBxH,aAAcyH,sBAAuBC,eAEvHA,cAAcrkT,UAAUomT,cAAgB,WACtC,IAAI1vC,EAAY52Q,KAAKinR,WAAWtF,cAAc3hR,KAAK4hR,WACnD5hR,KAAKwmT,UAAYtqC,SAAS,SAC1Bl8Q,KAAKwmT,UAAU57O,aAAa,QAAS5qE,KAAK4hR,UAAUjlL,EAAI,MACxD38F,KAAKwmT,UAAU57O,aAAa,SAAU5qE,KAAK4hR,UAAUpmK,EAAI,MACzDx7G,KAAKwmT,UAAU57O,aAAa,sBAAuB5qE,KAAK4hR,UAAU6kC,IAAMzmT,KAAKinR,WAAW8rB,aAAa2T,0BACrG1mT,KAAKwmT,UAAUr2G,eAAe,+BAAgC,OAAQymE,GACtE52Q,KAAKw9S,aAAa1yO,YAAY9qE,KAAKwmT,YAGrCjC,cAAcrkT,UAAUgzS,iBAAmB,WACzC,OAAOlzS,KAAKykT,YAUdE,cAAczkT,UAAY,CACxBymT,oBAAqB,SAA6Bv2S,GAChD,IAAIlP,EACA2/F,EAAM7gG,KAAK4mT,eAAevlT,OAE9B,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAK4mT,eAAe1lT,GAAG27R,SAASzsR,IAGpCy2S,2BAA4B,SAAoCz2S,GAC9D,IAAIlP,EAAI,EACJ2/F,EAAM7gG,KAAK4mT,eAAevlT,OAE9B,MAAOH,EAAI2/F,EACT,GAAI7gG,KAAK4mT,eAAe1lT,GAAG4lT,oBAAoB12S,GAC7C,OAAO,EAIX,OAAO,GAET22S,gBAAiB,WACf,GAAK/mT,KAAK4mT,eAAevlT,OAAzB,CAIA,IAAIH,EAQA8lT,EAPAnmN,EAAM7gG,KAAKi+Q,OAAO58Q,OAEtB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKi+Q,OAAO/8Q,GAAGo2R,GAAGv4M,QAMpB,IAHA8hB,EAAM7gG,KAAK4mT,eAAevlT,OAGrBH,EAAI2/F,EAAM,EAAG3/F,GAAK,EAAGA,GAAK,EAI7B,GAHA8lT,EAAqBhnT,KAAK4mT,eAAe1lT,GAAG6mS,cAAc/nS,KAAKq6R,eAG3D2sB,EACF,QAINC,uBAAwB,SAAgC/6B,GACtD,IAAIkgB,EAAWpsS,KAAKknT,kBAChBhmT,EAAI,EACJ2/F,EAAMurM,EAAS/qS,OAEnB,MAAOH,EAAI2/F,EAAK,CACd,GAAIurM,EAASlrS,GAAGgrR,OAASA,EACvB,OAAOkgB,EAASlrS,GAAGkzE,IAGrBlzE,GAAK,EAGP,OAAO,GAETimT,oBAAqB,SAA6Bj7B,EAAM93M,GACtD,IAAIg4N,EAAWpsS,KAAKknT,kBAChBhmT,EAAIkrS,EAAS/qS,OAEjB,MAAOH,EAGL,GAFAA,GAAK,EAEDkrS,EAASlrS,GAAGgrR,OAASA,EAEvB,YADAkgB,EAASlrS,GAAGkzE,IAAMA,GAKtBg4N,EAASpmS,KAAK,IAAI0+S,iBAAiBx4B,EAAM93M,KAE3CuwM,aAAc,SAAsBt2Q,GAClCrO,KAAK0yS,uBAAuBrkS,GAC5BrO,KAAK49S,kBAAkBvvS,EAAKrO,KAAKmyS,aAIrC,IAAIiV,YAAc,CAChB,EAAG,OACH,EAAG,QACH,EAAG,UAEDC,aAAe,CACjB,EAAG,QACH,EAAG,QACH,EAAG,SAGL,SAASC,aAAaC,EAAc35R,EAAO8uQ,GACzC18R,KAAKm1P,OAAS,GACdn1P,KAAK+qS,OAAS,GACd/qS,KAAKunT,aAAeA,EACpBvnT,KAAKwnT,KAAO,GACZxnT,KAAKs3R,GAAKoF,EACV18R,KAAKynT,IAAM75R,EAIX5tB,KAAKm7R,cAAgBuB,EAAM/1R,EAE3B,IAAIzF,EAAI,EACJ2/F,EAAM0mN,EAAalmT,OAEvB,MAAOH,EAAI2/F,EAAK,CACd,GAAI0mN,EAAarmT,GAAGqsS,OAAOrS,kBAAkB75R,OAAQ,CACnDrB,KAAKm7R,aAAc,EACnB,MAGFj6R,GAAK,GAQT,SAASwmT,aAAat3S,EAAMwd,GAC1B5tB,KAAKoQ,KAAOA,EACZpQ,KAAKktB,KAAO9c,EAAKytQ,GACjB79Q,KAAKL,EAAI,GACTK,KAAKynT,IAAM75R,EACX5tB,KAAKg6R,MAAO,EACZh6R,KAAKogE,QAAqB,IAAZhwD,EAAKs1S,GACnB1lT,KAAK2nT,MAAQzrC,SAAS,QACtBl8Q,KAAK4nT,OAAS,KAQhB,SAASC,aAAa37B,EAAM97Q,EAAM01Q,EAAUpzI,GAU1C,IAAIxxI,EATJlB,KAAKksR,KAAOA,EACZlsR,KAAKk6R,SAAW,EAChBl6R,KAAK86S,UAAY9iC,iBAAiB5nQ,EAAK/O,QACvCrB,KAAK8lR,SAAWA,EAChB9lR,KAAK2G,GAAI,EACT3G,KAAK8nT,QAAU,GACf9nT,KAAK+nT,UAAYrwC,iBAAiB,UAAWtnQ,EAAK/O,OAAS+O,EAAK/O,OAAS,EAAI,GAC7ErB,KAAKgoT,WAAatwC,iBAAiB,UAAW,GAC9C13Q,KAAKq7R,6BAA6B3oJ,GAElC,IACIjyD,EADAogB,EAAMzwF,EAAK/O,QAAU,EAGzB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBu/E,EAAO80M,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKlP,GAAG0E,EAAG,EAAG,EAAG5F,MACtDA,KAAK2G,EAAI85E,EAAK95E,GAAK3G,KAAK2G,EACxB3G,KAAK86S,UAAU55S,GAAK,CAClBC,EAAGiP,EAAKlP,GAAGC,EACXtB,EAAG4gF,GAIFzgF,KAAK2G,GACR3G,KAAK+yO,UAAS,GAGhB/yO,KAAKm7R,YAAcn7R,KAAK2G,EAoC1B,SAASshT,mBAAmB/7B,EAAM97Q,EAAM83S,GACtCloT,KAAKq7R,6BAA6BnP,GAClClsR,KAAK+yO,SAAW/yO,KAAKo7R,yBACrBp7R,KAAKkG,EAAIqvR,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKlK,EAAG,EAAG,IAAMlG,MACxDA,KAAK28F,EAAI44L,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKusF,EAAG,EAAG,KAAM38F,MACxDA,KAAKL,EAAI,IAAIkoT,aAAa37B,EAAM97Q,EAAKzQ,GAAK,GAAI,MAAOK,MACrDA,KAAKi0E,EAAIshN,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAK6jE,EAAG,EAAG,IAAKj0E,MACvDA,KAAKwqE,MAAQ09O,EACbloT,KAAKm7R,cAAgBn7R,KAAKm7R,YAK5B,SAASgtB,iBAAiBj8B,EAAM97Q,EAAM83S,GACpCloT,KAAKq7R,6BAA6BnP,GAClClsR,KAAK+yO,SAAW/yO,KAAKo7R,yBACrBp7R,KAAKkG,EAAIqvR,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKlK,EAAG,EAAG,IAAMlG,MACxDA,KAAKi0E,EAAIshN,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAK6jE,EAAG,EAAG,IAAKj0E,MACvDA,KAAKwqE,MAAQ09O,EAKf,SAASE,eAAel8B,EAAM97Q,EAAM83S,GAClCloT,KAAKq7R,6BAA6BnP,GAClClsR,KAAK+yO,SAAW/yO,KAAKo7R,yBACrBp7R,KAAKwqE,MAAQ09O,EAKf,SAASG,iBAAiBn8B,EAAM97Q,EAAMsiI,GACpC1yI,KAAKoQ,KAAOA,EACZpQ,KAAKi0E,EAAIyjM,iBAAiB,SAAmB,EAATtnQ,EAAKvQ,GACzC,IAAIyoT,EAAUl4S,EAAKzJ,EAAEA,EAAE,GAAG1F,EAAImP,EAAKzJ,EAAEA,EAAE,GAAG1F,EAAEI,OAAkB,EAAT+O,EAAKvQ,EAAQuQ,EAAKzJ,EAAEA,EAAEtF,OAAkB,EAAT+O,EAAKvQ,EACzFG,KAAKkG,EAAIwxQ,iBAAiB,UAAW4wC,GACrCtoT,KAAKuoT,OAAQ,EACbvoT,KAAKwoT,OAAQ,EACbxoT,KAAKyoT,aAAezoT,KAAK0oT,mBACzB1oT,KAAK2oT,YAAcL,EACnBtoT,KAAKq7R,6BAA6B3oJ,GAClC1yI,KAAKygF,KAAO80M,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKzJ,EAAG,EAAG,KAAM3G,MAC3DA,KAAK2G,EAAI3G,KAAKygF,KAAK95E,EACnB3G,KAAK+yO,UAAS,GAsFhB,SAAS61E,yBAAyB18B,EAAM97Q,EAAM83S,GAC5CloT,KAAKq7R,6BAA6BnP,GAClClsR,KAAK+yO,SAAW/yO,KAAKo7R,yBACrBp7R,KAAK6oT,iBAAiB38B,EAAM97Q,EAAM83S,GA0FpC,SAASY,2BAA2B58B,EAAM97Q,EAAM83S,GAC9CloT,KAAKq7R,6BAA6BnP,GAClClsR,KAAK+yO,SAAW/yO,KAAKo7R,yBACrBp7R,KAAK28F,EAAI44L,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKusF,EAAG,EAAG,KAAM38F,MACxDA,KAAKL,EAAI,IAAIkoT,aAAa37B,EAAM97Q,EAAKzQ,GAAK,GAAI,MAAOK,MACrDA,KAAK6oT,iBAAiB38B,EAAM97Q,EAAM83S,GAClCloT,KAAKm7R,cAAgBn7R,KAAKm7R,YAK5B,SAAS4tB,iBACP/oT,KAAK82J,GAAK,GACV92J,KAAKgpT,aAAe,GACpBhpT,KAAKipT,GAAK/sC,SAAS,KAGrB,SAASgtC,iBAAiB3b,EAAQ1nS,EAAI6sI,GACpC1yI,KAAK0oP,UAAY,CACf6kD,OAAQA,EACR1nS,GAAIA,EACJ6sI,UAAWA,GAEb1yI,KAAKosS,SAAW,GAChBpsS,KAAKm7R,YAAcn7R,KAAK0oP,UAAU6kD,OAAOrS,kBAAkB75R,QAAUrB,KAAK0oP,UAAU7iP,GAAGs0R,gBAAgB94R,OAzUzGimT,aAAapnT,UAAUgnS,cAAgB,WACrClnS,KAAKm7R,aAAc,GAcrBusB,aAAaxnT,UAAU6+E,MAAQ,WAC7B/+E,KAAKL,EAAI,GACTK,KAAKg6R,MAAO,GAiCd6tB,aAAa3nT,UAAU6yO,SAAW,SAAU+2D,GAC1C,IAAI9pS,KAAKksR,KAAKjF,WAAWiT,UAAYl6R,KAAKk6R,SAAY4P,KAItD9pS,KAAKk6R,QAAUl6R,KAAKksR,KAAKjF,WAAWiT,QACpCl6R,KAAKo7R,2BACLp7R,KAAKg6R,KAAOh6R,KAAKg6R,MAAQ8P,EAErB9pS,KAAKg6R,MAAM,CACb,IAAI94R,EAAI,EACJ2/F,EAAM7gG,KAAK86S,UAAUz5S,OAMzB,IAJsB,QAAlBrB,KAAK8lR,WACP9lR,KAAK8nT,QAAU,IAGZ5mT,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACI,MAAxBlB,KAAK86S,UAAU55S,GAAGC,EACE,QAAlBnB,KAAK8lR,SACP9lR,KAAK8nT,SAAW,IAAM9nT,KAAK86S,UAAU55S,GAAGrB,EAAE+F,EAE1C5F,KAAK+nT,UAAU7mT,GAAKlB,KAAK86S,UAAU55S,GAAGrB,EAAE+F,EAG1C5F,KAAKgoT,WAAW,GAAKhoT,KAAK86S,UAAU55S,GAAGrB,EAAE+F,IAMjDiwQ,gBAAgB,CAAColB,0BAA2B4sB,cAa5ChyC,gBAAgB,CAAColB,0BAA2BgtB,oBAU5CpyC,gBAAgB,CAAColB,0BAA2BktB,kBAQ5CtyC,gBAAgB,CAAColB,0BAA2BmtB,gBAiB5CC,iBAAiBnoT,UAAUipT,cAAgB,SAAU/2Q,EAAQw8O,GAC3D,IAEI1yF,EAFAh7L,EAAI,EACJ2/F,EAAM7gG,KAAKkG,EAAE7E,OAAS,EAG1B,MAAOH,EAAI2/F,EAAK,CAGd,GAFAq7F,EAAOjtL,KAAKgyF,IAAI7uD,EAAW,EAAJlxC,GAASkxC,EAAgB,EAATw8O,EAAiB,EAAJ1tR,IAEhDg7L,EAAO,IACT,OAAO,EAGTh7L,GAAK,EAGP,OAAO,GAGTmnT,iBAAiBnoT,UAAUwoT,iBAAmB,WAC5C,GAAI1oT,KAAKkG,EAAE7E,OAAS,IAAMrB,KAAKi0E,EAAE5yE,OAAS,EACxC,OAAO,EAGT,GAAIrB,KAAKoQ,KAAKzJ,EAAEA,EAAE,GAAG1F,EAAG,CACtB,IAAIC,EAAI,EACJ2/F,EAAM7gG,KAAKoQ,KAAKzJ,EAAEA,EAAEtF,OAExB,MAAOH,EAAI2/F,EAAK,CACd,IAAK7gG,KAAKmpT,cAAcnpT,KAAKoQ,KAAKzJ,EAAEA,EAAEzF,GAAGD,EAAGjB,KAAKoQ,KAAKvQ,GACpD,OAAO,EAGTqB,GAAK,QAEF,IAAKlB,KAAKmpT,cAAcnpT,KAAKoQ,KAAKzJ,EAAEA,EAAG3G,KAAKoQ,KAAKvQ,GACtD,OAAO,EAGT,OAAO,GAGTwoT,iBAAiBnoT,UAAU6yO,SAAW,SAAU+2D,GAM9C,GALA9pS,KAAKygF,KAAKsyJ,WACV/yO,KAAKg6R,MAAO,EACZh6R,KAAKuoT,OAAQ,EACbvoT,KAAKwoT,OAAQ,EAETxoT,KAAKygF,KAAKu5M,MAAQ8P,EAAa,CACjC,IAAI5oS,EAEA64R,EACA76P,EAFA2hE,EAAoB,EAAd7gG,KAAKoQ,KAAKvQ,EAIpB,IAAKqB,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB64R,EAAO74R,EAAI,IAAM,EAAI,IAAM,IAC3Bg+B,EAAMjwB,KAAKmiB,MAAMpxB,KAAKygF,KAAK76E,EAAE1E,GAAK64R,GAE9B/5R,KAAKi0E,EAAE/yE,KAAOg+B,IAChBl/B,KAAKi0E,EAAE/yE,GAAKg+B,EACZl/B,KAAKuoT,OAASze,GAIlB,GAAI9pS,KAAKkG,EAAE7E,OAGT,IAFAw/F,EAAM7gG,KAAKygF,KAAK76E,EAAEvE,OAEbH,EAAkB,EAAdlB,KAAKoQ,KAAKvQ,EAAOqB,EAAI2/F,EAAK3/F,GAAK,EACtC64R,EAAO74R,EAAI,IAAM,EAAI,IAAM,EAC3Bg+B,EAAMh+B,EAAI,IAAM,EAAI+N,KAAKmiB,MAAuB,IAAjBpxB,KAAKygF,KAAK76E,EAAE1E,IAAYlB,KAAKygF,KAAK76E,EAAE1E,GAE/DlB,KAAKkG,EAAEhF,EAAkB,EAAdlB,KAAKoQ,KAAKvQ,KAAWq/B,IAClCl/B,KAAKkG,EAAEhF,EAAkB,EAAdlB,KAAKoQ,KAAKvQ,GAASq/B,EAC9Bl/B,KAAKwoT,OAAS1e,GAKpB9pS,KAAKg6R,MAAQ8P,IAIjBj0B,gBAAgB,CAAColB,0BAA2BotB,kBAQ5CO,yBAAyB1oT,UAAU2oT,iBAAmB,SAAU38B,EAAM97Q,EAAM83S,GAC1EloT,KAAKkG,EAAIqvR,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKlK,EAAG,EAAG,IAAMlG,MACxDA,KAAKiB,EAAIs0R,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKnP,EAAG,EAAG,KAAMjB,MACxDA,KAAK0E,EAAI6wR,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAK1L,EAAG,EAAG,KAAM1E,MACxDA,KAAKw7G,EAAI+5K,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKorG,GAAK,CAC/C70G,EAAG,GACF,EAAG,IAAM3G,MACZA,KAAK4G,EAAI2uR,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKxJ,GAAK,CAC/CD,EAAG,GACF,EAAGwyQ,UAAWn5Q,MACjBA,KAAKmF,EAAI,IAAIkjT,iBAAiBn8B,EAAM97Q,EAAKjL,EAAGnF,MAC5CA,KAAKwqE,MAAQ09O,EACbloT,KAAKopT,MAAQ,GACbppT,KAAKqpT,gBAAgBnB,EAAQP,MAAOv3S,GACpCpQ,KAAKspT,mBAAmBl5S,EAAM83S,GAC9BloT,KAAKm7R,cAAgBn7R,KAAKm7R,aAG5BytB,yBAAyB1oT,UAAUmpT,gBAAkB,SAAUE,EAAan5S,GAC1E,IAAIo5S,EAAaxuC,kBACbyuC,EAAQvtC,SAAoB,IAAX9rQ,EAAKpP,EAAU,iBAAmB,kBACvDyoT,EAAM7+O,aAAa,KAAM4+O,GACzBC,EAAM7+O,aAAa,eAAgB,OACnC6+O,EAAM7+O,aAAa,gBAAiB,kBACpC,IACIi6C,EACAh+G,EACAu2Q,EAHAgsC,EAAQ,GAMZ,IAFAhsC,EAAkB,EAAXhtQ,EAAKjL,EAAEtF,EAETgH,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzBg+G,EAAOq3J,SAAS,QAChButC,EAAM3+O,YAAY+5C,GAClBukM,EAAMpjT,KAAK6+G,GAGb0kM,EAAY3+O,aAAyB,OAAZx6D,EAAKytQ,GAAc,OAAS,SAAU,OAASlI,kBAAoB,IAAM6zC,EAAa,KAC/GxpT,KAAK0pT,GAAKD,EACVzpT,KAAK2pT,IAAMP,GAGbR,yBAAyB1oT,UAAUopT,mBAAqB,SAAUl5S,EAAM83S,GACtE,GAAIloT,KAAKmF,EAAEwjT,cAAgB3oT,KAAKmF,EAAEsjT,aAAc,CAC9C,IAAI5jM,EACAh+G,EACAu2Q,EACAm2B,EAAOr3B,SAAS,QAChBojC,EAAcpjC,SAAS,QAC3Bq3B,EAAKzoO,YAAYw0O,GACjB,IAAIsK,EAAY5uC,kBACZ6uC,EAAS7uC,kBACbu4B,EAAK3oO,aAAa,KAAMi/O,GACxB,IAAIC,EAAS5tC,SAAoB,IAAX9rQ,EAAKpP,EAAU,iBAAmB,kBACxD8oT,EAAOl/O,aAAa,KAAMg/O,GAC1BE,EAAOl/O,aAAa,eAAgB,OACpCk/O,EAAOl/O,aAAa,gBAAiB,kBACrCwyM,EAAOhtQ,EAAKjL,EAAEwB,EAAEA,EAAE,GAAG1F,EAAImP,EAAKjL,EAAEwB,EAAEA,EAAE,GAAG1F,EAAEI,OAAS+O,EAAKjL,EAAEwB,EAAEA,EAAEtF,OAC7D,IAAI+nT,EAAQppT,KAAKopT,MAEjB,IAAKviT,EAAe,EAAXuJ,EAAKjL,EAAEtF,EAAOgH,EAAIu2Q,EAAMv2Q,GAAK,EACpCg+G,EAAOq3J,SAAS,QAChBr3J,EAAKj6C,aAAa,aAAc,oBAChCk/O,EAAOh/O,YAAY+5C,GACnBukM,EAAMpjT,KAAK6+G,GAGby6L,EAAY10O,aAAyB,OAAZx6D,EAAKytQ,GAAc,OAAS,SAAU,OAASlI,kBAAoB,IAAMi0C,EAAY,KAE9F,OAAZx5S,EAAKytQ,KACPyhC,EAAY10O,aAAa,iBAAkBw8O,YAAYh3S,EAAK25S,IAAM,IAClEzK,EAAY10O,aAAa,kBAAmBy8O,aAAaj3S,EAAK45S,IAAM,IAEpD,IAAZ55S,EAAK45S,IACP1K,EAAY10O,aAAa,oBAAqBx6D,EAAK65S,KAIvDjqT,KAAKkqT,GAAKJ,EACV9pT,KAAK88E,GAAKy2N,EACVvzS,KAAKmqT,IAAMf,EACXppT,KAAK6pT,OAASA,EACd3B,EAAQN,OAAStI,IAIrBzpC,gBAAgB,CAAColB,0BAA2B2tB,0BAW5C/yC,gBAAgB,CAAC+yC,yBAA0B3tB,0BAA2B6tB,4BAkBtE,IAAIsB,iBAAmB,SAA0BnH,EAAW5hT,EAAQ++D,EAAQopO,GAC1E,GAAe,IAAXnoS,EACF,MAAO,GAGT,IAGIH,EAHAmpT,EAAKpH,EAAU/8S,EACfoxG,EAAK2rM,EAAU/hT,EACfs9R,EAAKykB,EAAUr9S,EAEf0kT,EAAc,KAAO9gB,EAAItE,wBAAwB1G,EAAG,GAAG,GAAIA,EAAG,GAAG,IAErE,IAAKt9R,EAAI,EAAGA,EAAIG,EAAQH,GAAK,EAC3BopT,GAAe,KAAO9gB,EAAItE,wBAAwBmlB,EAAGnpT,EAAI,GAAG,GAAImpT,EAAGnpT,EAAI,GAAG,IAAM,IAAMsoS,EAAItE,wBAAwB5tL,EAAGp2G,GAAG,GAAIo2G,EAAGp2G,GAAG,IAAM,IAAMsoS,EAAItE,wBAAwB1G,EAAGt9R,GAAG,GAAIs9R,EAAGt9R,GAAG,IAQ5L,OALIk/D,GAAU/+D,IACZipT,GAAe,KAAO9gB,EAAItE,wBAAwBmlB,EAAGnpT,EAAI,GAAG,GAAImpT,EAAGnpT,EAAI,GAAG,IAAM,IAAMsoS,EAAItE,wBAAwB5tL,EAAG,GAAG,GAAIA,EAAG,GAAG,IAAM,IAAMkyL,EAAItE,wBAAwB1G,EAAG,GAAG,GAAIA,EAAG,GAAG,IAC1L8rB,GAAe,KAGVA,GAGLC,oBAAsB,WACxB,IAAIC,EAAkB,IAAI/pB,OAEtBgqB,EAAgB,IAAIhqB,OAEpBne,EAAK,CACPooC,qBAAsBA,GAGxB,SAASA,EAAqBt6S,GAC5B,OAAQA,EAAKytQ,IACX,IAAK,KACH,OAAO8sC,EAET,IAAK,KACH,OAAOC,EAET,IAAK,KACH,OAAOC,EAET,IAAK,KACH,OAAOC,EAET,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACH,OAAOC,EAET,IAAK,KACH,OAAOC,EAET,IAAK,KACH,OAAOC,EAET,QACE,OAAO,MAIb,SAASD,EAAuBE,EAAWC,EAAUpI,IAC/CA,GAAgBoI,EAASziE,UAAU7iP,GAAGm0R,OACxCmxB,EAASziE,UAAUh2G,UAAU9nE,aAAa,UAAWugP,EAASziE,UAAU7iP,GAAGD,IAGzEm9S,GAAgBoI,EAASziE,UAAU6kD,OAAOvT,OAC5CmxB,EAASziE,UAAUh2G,UAAU9nE,aAAa,YAAaugP,EAASziE,UAAU6kD,OAAO3nS,EAAE0/R,WAIvF,SAAS2lB,KAET,SAASF,EAAWG,EAAWC,EAAUpI,GACvC,IAAIl8S,EACAu2Q,EACAguC,EACAC,EACApI,EACAj1J,EAGAujG,EACAi4C,EACA/zK,EACA61L,EACA3kT,EANA4kT,EAAOJ,EAASpgB,OAAO1pS,OACvBomT,EAAM0D,EAAS1D,IAOnB,IAAKz5J,EAAI,EAAGA,EAAIu9J,EAAMv9J,GAAK,EAAG,CAG5B,GAFAq9J,EAASF,EAAS7zB,GAAG0C,MAAQ+oB,EAEzBoI,EAASpgB,OAAO/8I,GAAGy5J,IAAMA,EAAK,CAChCje,EAAMihB,EAAc1rO,QACpBusO,EAAa7D,EAAM0D,EAASpgB,OAAO/8I,GAAGy5J,IACtC9gT,EAAIwkT,EAAS5D,aAAalmT,OAAS,EAEnC,OAAQgqT,GAAUC,EAAa,EAC7BD,EAASF,EAAS5D,aAAa5gT,GAAG4mS,OAAOvT,MAAQqxB,EACjDC,GAAc,EACd3kT,GAAK,EAGP,GAAI0kT,EAAQ,CACVC,EAAa7D,EAAM0D,EAASpgB,OAAO/8I,GAAGy5J,IACtC9gT,EAAIwkT,EAAS5D,aAAalmT,OAAS,EAEnC,MAAOiqT,EAAa,EAClB71L,EAAQ01L,EAAS5D,aAAa5gT,GAAG4mS,OAAO3nS,EAAE6vH,MAC1C+zK,EAAI9gD,UAAUjzH,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,KAC/K61L,GAAc,EACd3kT,GAAK,QAIT6iS,EAAMghB,EAMR,GAHAj5D,EAAQ45D,EAAS7zB,GAAG/lC,MACpB6rB,EAAO7rB,EAAM0+B,QAETo7B,EAAQ,CAGV,IAFAD,EAAwB,GAEnBvkT,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzBo8S,EAAY1xD,EAAM0sB,OAAOp3Q,GAErBo8S,GAAaA,EAAUhzB,UACzBm7B,GAAyBhB,iBAAiBnH,EAAWA,EAAUhzB,QAASgzB,EAAUhvO,EAAGu1N,IAIzF2hB,EAASh2D,OAAOnnG,GAAKo9J,OAErBA,EAAwBD,EAASh2D,OAAOnnG,GAG1Cm9J,EAASpgB,OAAO/8I,GAAGruJ,IAAsB,IAAjBurT,EAAUxF,GAAc,GAAK0F,EACrDD,EAASpgB,OAAO/8I,GAAGgsI,KAAOqxB,GAAUF,EAASpgB,OAAO/8I,GAAGgsI,MAI3D,SAAS2wB,EAAWO,EAAWC,EAAUpI,GACvC,IAAIyI,EAAYL,EAAS3gP,OAErB2gP,EAASl3O,EAAE+lN,MAAQ+oB,IACrByI,EAAU7D,MAAM/8O,aAAa,OAAQ,OAAS8tM,QAAQyyC,EAASl3O,EAAEruE,EAAE,IAAM,IAAM8yQ,QAAQyyC,EAASl3O,EAAEruE,EAAE,IAAM,IAAM8yQ,QAAQyyC,EAASl3O,EAAEruE,EAAE,IAAM,MAGzIulT,EAASjlT,EAAE8zR,MAAQ+oB,IACrByI,EAAU7D,MAAM/8O,aAAa,eAAgBugP,EAASjlT,EAAEN,GAI5D,SAASilT,EAAqBK,EAAWC,EAAUpI,GACjD6H,EAAeM,EAAWC,EAAUpI,GACpC+H,EAAaI,EAAWC,EAAUpI,GAGpC,SAAS6H,EAAeM,EAAWC,EAAUpI,GAC3C,IAsBIqG,EACAloT,EACA2/F,EACAgkB,EA+CEo6K,EAxEFwqB,EAAQ0B,EAASzB,GACjB+B,EAAaN,EAAShmT,EAAEwjT,YACxB72B,EAAMq5B,EAASlqT,EAAE2E,EACjBmsR,EAAMo5B,EAASzmT,EAAEkB,EAErB,GAAIulT,EAASjlT,EAAE8zR,MAAQ+oB,EAAc,CACnC,IAAIrzG,EAAwB,OAAjBw7G,EAAUrtC,GAAc,eAAiB,iBACpDstC,EAAS3gP,MAAMm9O,MAAM/8O,aAAa8kI,EAAMy7G,EAASjlT,EAAEN,GAGrD,GAAIulT,EAASlqT,EAAE+4R,MAAQ+oB,EAAc,CACnC,IAAI2I,EAAwB,IAAhBR,EAAUlqT,EAAU,KAAO,KACnC2qT,EAAkB,OAAVD,EAAiB,KAAO,KACpCjC,EAAM7+O,aAAa8gP,EAAO55B,EAAI,IAC9B23B,EAAM7+O,aAAa+gP,EAAO75B,EAAI,IAE1B25B,IAAeN,EAAShmT,EAAEsjT,eAC5B0C,EAASjB,GAAGt/O,aAAa8gP,EAAO55B,EAAI,IACpCq5B,EAASjB,GAAGt/O,aAAa+gP,EAAO75B,EAAI,KASxC,GAAIq5B,EAAShmT,EAAEojT,OAASxF,EAAc,CACpCqG,EAAQ+B,EAASxB,IACjB,IAAIiC,EAAUT,EAAShmT,EAAE8uE,EAGzB,IAFA4sB,EAAMuoN,EAAM/nT,OAEPH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB2jH,EAAOukM,EAAMloT,GACb2jH,EAAKj6C,aAAa,SAAUghP,EAAY,EAAJ1qT,GAAS,KAC7C2jH,EAAKj6C,aAAa,aAAc,OAASghP,EAAY,EAAJ1qT,EAAQ,GAAK,IAAM0qT,EAAY,EAAJ1qT,EAAQ,GAAK,IAAM0qT,EAAY,EAAJ1qT,EAAQ,GAAK,KAIxH,GAAIuqT,IAAeN,EAAShmT,EAAEqjT,OAASzF,GAAe,CACpD,IAAI8I,EAAUV,EAAShmT,EAAEe,EAUzB,IAPEkjT,EADE+B,EAAShmT,EAAEsjT,aACL0C,EAASxB,IAETwB,EAAShB,IAGnBtpN,EAAMuoN,EAAM/nT,OAEPH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB2jH,EAAOukM,EAAMloT,GAERiqT,EAAShmT,EAAEsjT,cACd5jM,EAAKj6C,aAAa,SAAUihP,EAAY,EAAJ3qT,GAAS,KAG/C2jH,EAAKj6C,aAAa,eAAgBihP,EAAY,EAAJ3qT,EAAQ,IAItD,GAAoB,IAAhBgqT,EAAUlqT,GACRmqT,EAASzmT,EAAEs1R,MAAQ+oB,KACrB0G,EAAM7+O,aAAa,KAAMmnN,EAAI,IAC7B03B,EAAM7+O,aAAa,KAAMmnN,EAAI,IAEzB05B,IAAeN,EAAShmT,EAAEsjT,eAC5B0C,EAASjB,GAAGt/O,aAAa,KAAMmnN,EAAI,IACnCo5B,EAASjB,GAAGt/O,aAAa,KAAMmnN,EAAI,WAevC,IATIo5B,EAASlqT,EAAE+4R,MAAQmxB,EAASzmT,EAAEs1R,MAAQ+oB,KACxC9jB,EAAMhwR,KAAKwpQ,KAAKxpQ,KAAKmvH,IAAI0zJ,EAAI,GAAKC,EAAI,GAAI,GAAK9iR,KAAKmvH,IAAI0zJ,EAAI,GAAKC,EAAI,GAAI,IACzE03B,EAAM7+O,aAAa,IAAKq0N,GAEpBwsB,IAAeN,EAAShmT,EAAEsjT,cAC5B0C,EAASjB,GAAGt/O,aAAa,IAAKq0N,IAI9BksB,EAASzmT,EAAEs1R,MAAQmxB,EAAS3vM,EAAEw+K,MAAQmxB,EAASvkT,EAAEozR,MAAQ+oB,EAAc,CACpE9jB,IACHA,EAAMhwR,KAAKwpQ,KAAKxpQ,KAAKmvH,IAAI0zJ,EAAI,GAAKC,EAAI,GAAI,GAAK9iR,KAAKmvH,IAAI0zJ,EAAI,GAAKC,EAAI,GAAI,KAG3E,IAAI+5B,EAAM78S,KAAKgqR,MAAMlH,EAAI,GAAKD,EAAI,GAAIC,EAAI,GAAKD,EAAI,IAC/C6B,EAAUw3B,EAAS3vM,EAAE51G,EAErB+tR,GAAW,EACbA,EAAU,IACDA,IAAY,IACrBA,GAAW,KAGb,IAAIlE,EAAOwP,EAAMtL,EACbrmH,EAAIr+J,KAAKoqR,IAAIyyB,EAAMX,EAASvkT,EAAEhB,GAAK6pR,EAAOqC,EAAI,GAC9C5sR,EAAI+J,KAAKypR,IAAIozB,EAAMX,EAASvkT,EAAEhB,GAAK6pR,EAAOqC,EAAI,GAClD23B,EAAM7+O,aAAa,KAAM0iG,GACzBm8I,EAAM7+O,aAAa,KAAM1lE,GAErBumT,IAAeN,EAAShmT,EAAEsjT,eAC5B0C,EAASjB,GAAGt/O,aAAa,KAAM0iG,GAC/B69I,EAASjB,GAAGt/O,aAAa,KAAM1lE,KAOvC,SAAS4lT,EAAaI,EAAWC,EAAUpI,GACzC,IAAIyI,EAAYL,EAAS3gP,MACrB7qE,EAAIwrT,EAASxrT,EAEbA,IAAMA,EAAEq6R,MAAQ+oB,IAAiBpjT,EAAEmoT,UACrC0D,EAAU7D,MAAM/8O,aAAa,mBAAoBjrE,EAAEmoT,SACnD0D,EAAU7D,MAAM/8O,aAAa,oBAAqBjrE,EAAEqoT,WAAW,KAG7DmD,EAASl3O,IAAMk3O,EAASl3O,EAAE+lN,MAAQ+oB,IACpCyI,EAAU7D,MAAM/8O,aAAa,SAAU,OAAS8tM,QAAQyyC,EAASl3O,EAAEruE,EAAE,IAAM,IAAM8yQ,QAAQyyC,EAASl3O,EAAEruE,EAAE,IAAM,IAAM8yQ,QAAQyyC,EAASl3O,EAAEruE,EAAE,IAAM,MAG3IulT,EAASjlT,EAAE8zR,MAAQ+oB,IACrByI,EAAU7D,MAAM/8O,aAAa,iBAAkBugP,EAASjlT,EAAEN,IAGxDulT,EAASxuN,EAAEq9L,MAAQ+oB,KACrByI,EAAU7D,MAAM/8O,aAAa,eAAgBugP,EAASxuN,EAAE/2F,GAEpD4lT,EAAU5D,QACZ4D,EAAU5D,OAAOh9O,aAAa,eAAgBugP,EAASxuN,EAAE/2F,IAK/D,OAAO08Q,EApRiB,GAuR1B,SAASypC,gBAAgB37S,EAAM62Q,EAAY3I,GAEzCt+Q,KAAKi+Q,OAAS,GAEdj+Q,KAAKk9S,WAAa9sS,EAAK6tQ,OAEvBj+Q,KAAKgsT,WAAa,GAElBhsT,KAAK4mT,eAAiB,GAEtB5mT,KAAKm9S,UAAY,GAEjBn9S,KAAKknT,kBAAoB,GAEzBlnT,KAAKisT,iBAAmB,GACxBjsT,KAAKwkT,YAAYp0S,EAAM62Q,EAAY3I,GAGnCt+Q,KAAKgpT,aAAe,GA0WtB,SAASkD,YAAYhmT,EAAGimT,EAAItb,EAAIub,EAAIjmT,EAAGtG,GACrCG,KAAKkG,EAAIA,EACTlG,KAAKmsT,GAAKA,EACVnsT,KAAK6wS,GAAKA,EACV7wS,KAAKosT,GAAKA,EACVpsT,KAAKmG,EAAIA,EACTnG,KAAKH,EAAIA,EACTG,KAAKg6R,KAAO,CACV9zR,GAAG,EACHimT,KAAMA,EACNtb,KAAMA,EACNub,KAAMA,EACNjmT,GAAG,EACHtG,GAAG,GAoDP,SAASwsT,aAAangC,EAAM97Q,GAC1BpQ,KAAKssT,SAAWh3C,oBAChBt1Q,KAAK81R,GAAK,GACV91R,KAAK4F,EAAI,GACT5F,KAAKu6R,IAAK,EACVv6R,KAAKq6R,eAAgB,EACrBr6R,KAAKg6R,MAAO,EACZh6R,KAAKoQ,KAAOA,EACZpQ,KAAKksR,KAAOA,EACZlsR,KAAKs+Q,KAAOt+Q,KAAKksR,KAAK5N,KACtBt+Q,KAAKusT,UAAY,EACjBvsT,KAAKwsT,WAAY,EACjBxsT,KAAKysT,gBAAkB,EACvBzsT,KAAKm6R,gBAAkB,GACvBn6R,KAAK87S,YAAc,CACjB4Q,OAAQ,EACRC,SAAU3sT,KAAK4sT,gBACf3nT,EAAG,GACH+lS,OAAQ,GACRC,QAAS,GACTmhB,GAAI,GACJvlT,EAAG,GACHgmT,cAAe,GACf7+J,EAAG,GACH8+J,GAAI,EACJC,WAAY,GACZC,GAAI,GACJ9C,GAAI,GACJjpT,EAAG,GACH4vS,GAAI,GACJsb,GAAI,EACJnrT,EAAG,EACHmqS,GAAI,EACJzJ,GAAI,EACJurB,GAAI,KACJC,eAAe,EACfC,iBAAiB,EACjBC,iBAAiB,EACjBC,QAAS,EACTC,UAAW,EACXC,UAAW,GACXC,gBAAiB,EACjBvtC,YAAY,GAEdjgR,KAAKytT,SAASztT,KAAK87S,YAAa97S,KAAKoQ,KAAKzQ,EAAEgH,EAAE,GAAG1F,GAE5CjB,KAAKm+S,kBACRn+S,KAAK0tT,iBAAiB1tT,KAAK87S,aAvd/BjmC,gBAAgB,CAAC+mC,YAAawC,iBAAkBgF,eAAgBO,cAAeN,iBAAkBxH,aAAcyH,sBAAuByH,iBAEtIA,gBAAgB7rT,UAAUytT,qBAAuB,aAEjD5B,gBAAgB7rT,UAAU0tT,eAAiB,IAAIntB,OAE/CsrB,gBAAgB7rT,UAAU2tT,yBAA2B,aAErD9B,gBAAgB7rT,UAAUomT,cAAgB,WACxCtmT,KAAK8tT,aAAa9tT,KAAKk9S,WAAYl9S,KAAKm9S,UAAWn9S,KAAKgpT,aAAchpT,KAAKw9S,aAAc,EAAG,IAAI,GAChGx9S,KAAK+tT,sBAOPhC,gBAAgB7rT,UAAU6tT,mBAAqB,WAC7C,IAAI7sT,EAEAw7R,EACA71R,EAEA2jE,EAJAq2B,EAAM7gG,KAAKi+Q,OAAO58Q,OAGlB+7Q,EAAOp9Q,KAAKgsT,WAAW3qT,OAEvB2sT,EAAa,GACbC,GAAc,EAElB,IAAKpnT,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EAAG,CAK5B,IAJA2jE,EAAQxqE,KAAKgsT,WAAWnlT,GACxBonT,GAAc,EACdD,EAAW3sT,OAAS,EAEfH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBw7R,EAAQ18R,KAAKi+Q,OAAO/8Q,IAEiB,IAAjCw7R,EAAMqO,OAAO7vR,QAAQsvD,KACvBwjP,EAAWhoT,KAAK02R,GAChBuxB,EAAcvxB,EAAMvB,aAAe8yB,GAInCD,EAAW3sT,OAAS,GAAK4sT,GAC3BjuT,KAAKkuT,oBAAoBF,KAK/BjC,gBAAgB7rT,UAAUguT,oBAAsB,SAAUjwC,GACxD,IAAI/8Q,EACA2/F,EAAMo9K,EAAO58Q,OAEjB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB+8Q,EAAO/8Q,GAAGgmS,iBAId6kB,gBAAgB7rT,UAAUiuT,mBAAqB,SAAU/9S,EAAMwd,GAE7D,IAAIwgS,EACAlG,EAAU,IAAIR,aAAat3S,EAAMwd,GACjC27R,EAAcrB,EAAQP,MAE1B,GAAgB,OAAZv3S,EAAKytQ,GACPuwC,EAAc,IAAInG,mBAAmBjoT,KAAMoQ,EAAM83S,QAC5C,GAAgB,OAAZ93S,EAAKytQ,GACduwC,EAAc,IAAIjG,iBAAiBnoT,KAAMoQ,EAAM83S,QAC1C,GAAgB,OAAZ93S,EAAKytQ,IAA2B,OAAZztQ,EAAKytQ,GAAa,CAC/C,IAAIwwC,EAAkC,OAAZj+S,EAAKytQ,GAAc+qC,yBAA2BE,2BACxEsF,EAAc,IAAIC,EAAoBruT,KAAMoQ,EAAM83S,GAClDloT,KAAKinR,WAAWC,KAAKp8M,YAAYsjP,EAAY1E,IAEzC0E,EAAYvE,SACd7pT,KAAKinR,WAAWC,KAAKp8M,YAAYsjP,EAAYtxO,IAC7C98E,KAAKinR,WAAWC,KAAKp8M,YAAYsjP,EAAYlE,IAC7CX,EAAY3+O,aAAa,OAAQ,OAAS+qM,kBAAoB,IAAMy4C,EAAYvE,OAAS,UAEtE,OAAZz5S,EAAKytQ,KACduwC,EAAc,IAAIhG,eAAepoT,KAAMoQ,EAAM83S,IA+B/C,MA5BgB,OAAZ93S,EAAKytQ,IAA2B,OAAZztQ,EAAKytQ,KAC3B0rC,EAAY3+O,aAAa,iBAAkBw8O,YAAYh3S,EAAK25S,IAAM,IAClER,EAAY3+O,aAAa,kBAAmBy8O,aAAaj3S,EAAK45S,IAAM,IACpET,EAAY3+O,aAAa,eAAgB,KAEzB,IAAZx6D,EAAK45S,IACPT,EAAY3+O,aAAa,oBAAqBx6D,EAAK65S,KAIxC,IAAX75S,EAAKhK,GACPmjT,EAAY3+O,aAAa,YAAa,WAGpCx6D,EAAKq1S,IACP8D,EAAY3+O,aAAa,KAAMx6D,EAAKq1S,IAGlCr1S,EAAK2vQ,IACPwpC,EAAY3+O,aAAa,QAASx6D,EAAK2vQ,IAGrC3vQ,EAAKktS,KACPiM,EAAY/+O,MAAM,kBAAoBuxO,aAAa3rS,EAAKktS,KAG1Dt9S,KAAKgsT,WAAWhmT,KAAKkiT,GACrBloT,KAAKsuT,sBAAsBl+S,EAAMg+S,GAC1BA,GAGTrC,gBAAgB7rT,UAAUquT,mBAAqB,SAAUn+S,GACvD,IAAIg+S,EAAc,IAAIrF,eActB,OAZI34S,EAAKq1S,IACP2I,EAAYnF,GAAGr+O,aAAa,KAAMx6D,EAAKq1S,IAGrCr1S,EAAK2vQ,IACPquC,EAAYnF,GAAGr+O,aAAa,QAASx6D,EAAK2vQ,IAGxC3vQ,EAAKktS,KACP8Q,EAAYnF,GAAGz+O,MAAM,kBAAoBuxO,aAAa3rS,EAAKktS,KAGtD8Q,GAGTrC,gBAAgB7rT,UAAUsuT,uBAAyB,SAAUp+S,EAAMsiI,GACjE,IAAI+7K,EAAoBplB,yBAAyBoB,qBAAqBzqS,KAAMoQ,EAAMpQ,MAC9EouT,EAAc,IAAIlF,iBAAiBuF,EAAmBA,EAAkBvoT,EAAGwsI,GAE/E,OADA1yI,KAAKsuT,sBAAsBl+S,EAAMg+S,GAC1BA,GAGTrC,gBAAgB7rT,UAAUwuT,mBAAqB,SAAUt+S,EAAMu+S,EAAiB/gS,GAC9E,IAAIiwP,EAAK,EAEO,OAAZztQ,EAAKytQ,GACPA,EAAK,EACgB,OAAZztQ,EAAKytQ,GACdA,EAAK,EACgB,OAAZztQ,EAAKytQ,KACdA,EAAK,GAGP,IAAI+wC,EAAgB1xB,qBAAqBmD,aAAargS,KAAMoQ,EAAMytQ,EAAI79Q,MAClEouT,EAAc,IAAI9G,aAAaqH,EAAiB/gS,EAAOghS,GAI3D,OAHA5uT,KAAKi+Q,OAAOj4Q,KAAKooT,GACjBpuT,KAAK2mT,oBAAoByH,GACzBpuT,KAAKsuT,sBAAsBl+S,EAAMg+S,GAC1BA,GAGTrC,gBAAgB7rT,UAAUouT,sBAAwB,SAAUl+S,EAAMoqJ,GAChE,IAAIt5J,EAAI,EACJ2/F,EAAM7gG,KAAKisT,iBAAiB5qT,OAEhC,MAAOH,EAAI2/F,EAAK,CACd,GAAI7gG,KAAKisT,iBAAiB/qT,GAAGs5J,UAAYA,EACvC,OAGFt5J,GAAK,EAGPlB,KAAKisT,iBAAiBjmT,KAAK,CACzBg1E,GAAIuvO,oBAAoBG,qBAAqBt6S,GAC7CoqJ,QAASA,EACTpqJ,KAAMA,KAIV27S,gBAAgB7rT,UAAU2uT,iBAAmB,SAAUT,GACrD,IACIvnT,EADAiV,EAAMsyS,EAAYrjB,OAElB3tB,EAAOp9Q,KAAKgsT,WAAW3qT,OAE3B,IAAKwF,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACpB7G,KAAKgsT,WAAWnlT,GAAGu5D,QACtBtkD,EAAI9V,KAAKhG,KAAKgsT,WAAWnlT,KAK/BklT,gBAAgB7rT,UAAU8sS,aAAe,WAEvC,IAAI9rS,EADJlB,KAAKq6R,eAAgB,EAErB,IAAIx5L,EAAM7gG,KAAKm9S,UAAU97S,OAEzB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKgpT,aAAa9nT,GAAKlB,KAAKm9S,UAAUj8S,GAOxC,IAJAlB,KAAK8tT,aAAa9tT,KAAKk9S,WAAYl9S,KAAKm9S,UAAWn9S,KAAKgpT,aAAchpT,KAAKw9S,aAAc,EAAG,IAAI,GAChGx9S,KAAK+tT,qBACLltN,EAAM7gG,KAAKk7R,kBAAkB75R,OAExBH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKk7R,kBAAkBh6R,GAAG6xO,WAG5B/yO,KAAK+mT,mBAGPgF,gBAAgB7rT,UAAU4tT,aAAe,SAAUhyS,EAAKqhS,EAAW6L,EAAct2K,EAAW9kH,EAAO25R,EAAcv+J,GAC/G,IACI9nJ,EAEA2F,EACAu2Q,EAGA0xC,EACAC,EACAC,EATAL,EAAkB,GAAGnoT,OAAO+gT,GAE5B1mN,EAAM/kF,EAAIza,OAAS,EAGnB4tT,EAAY,GACZC,EAAe,GAKnB,IAAKhuT,EAAI2/F,EAAK3/F,GAAK,EAAGA,GAAK,EAAG,CAS5B,GARA8tT,EAAehvT,KAAKinT,uBAAuBnrS,EAAI5a,IAE1C8tT,EAGH7R,EAAUj8S,GAAK8nT,EAAagG,EAAe,GAF3ClzS,EAAI5a,GAAGwrS,QAAU1jJ,EAKD,OAAdltI,EAAI5a,GAAG28Q,IAA6B,OAAd/hQ,EAAI5a,GAAG28Q,IAA6B,OAAd/hQ,EAAI5a,GAAG28Q,IAA6B,OAAd/hQ,EAAI5a,GAAG28Q,IAA6B,OAAd/hQ,EAAI5a,GAAG28Q,GAC5FmxC,EAGH7R,EAAUj8S,GAAGspE,MAAMpK,QAAS,EAF5B+8O,EAAUj8S,GAAKlB,KAAKmuT,mBAAmBryS,EAAI5a,GAAI0sB,GAK7C9R,EAAI5a,GAAGwrS,SACLyQ,EAAUj8S,GAAGspE,MAAMm9O,MAAM58O,aAAe2nE,GAC1CA,EAAU5nE,YAAYqyO,EAAUj8S,GAAGspE,MAAMm9O,OAI7CsH,EAAUjpT,KAAKm3S,EAAUj8S,GAAGspE,YACvB,GAAkB,OAAd1uD,EAAI5a,GAAG28Q,GAAa,CAC7B,GAAKmxC,EAKH,IAFA5xC,EAAO+/B,EAAUj8S,GAAG41J,GAAGz1J,OAElBwF,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzBs2S,EAAUj8S,GAAG8nT,aAAaniT,GAAKs2S,EAAUj8S,GAAG41J,GAAGjwJ,QALjDs2S,EAAUj8S,GAAKlB,KAAKuuT,mBAAmBzyS,EAAI5a,IAS7ClB,KAAK8tT,aAAahyS,EAAI5a,GAAG41J,GAAIqmJ,EAAUj8S,GAAG41J,GAAIqmJ,EAAUj8S,GAAG8nT,aAAc7L,EAAUj8S,GAAG+nT,GAAIr7R,EAAQ,EAAG+gS,EAAiB3lK,GAElHltI,EAAI5a,GAAGwrS,SACLyQ,EAAUj8S,GAAG+nT,GAAGl+O,aAAe2nE,GACjCA,EAAU5nE,YAAYqyO,EAAUj8S,GAAG+nT,QAGhB,OAAdntS,EAAI5a,GAAG28Q,IACXmxC,IACH7R,EAAUj8S,GAAKlB,KAAKwuT,uBAAuB1yS,EAAI5a,GAAIwxI,IAGrDo8K,EAAmB3R,EAAUj8S,GAAGwnP,UAChCimE,EAAgB3oT,KAAK8oT,IACE,OAAdhzS,EAAI5a,GAAG28Q,IAA6B,OAAd/hQ,EAAI5a,GAAG28Q,IAA6B,OAAd/hQ,EAAI5a,GAAG28Q,IAA6B,OAAd/hQ,EAAI5a,GAAG28Q,IAC7EmxC,IACH7R,EAAUj8S,GAAKlB,KAAK0uT,mBAAmB5yS,EAAI5a,GAAIytT,EAAiB/gS,IAGlE5tB,KAAK6uT,iBAAiB1R,EAAUj8S,KACT,OAAd4a,EAAI5a,GAAG28Q,IAA6B,OAAd/hQ,EAAI5a,GAAG28Q,IAA6B,OAAd/hQ,EAAI5a,GAAG28Q,IAA6B,OAAd/hQ,EAAI5a,GAAG28Q,IAC7EmxC,GAMHD,EAAW5R,EAAUj8S,GACrB6tT,EAAS3uP,QAAS,IANlB2uP,EAAWtoB,eAAeG,YAAY9qR,EAAI5a,GAAG28Q,IAC7CkxC,EAASxxL,KAAKv9H,KAAM8b,EAAI5a,IACxBi8S,EAAUj8S,GAAK6tT,EACf/uT,KAAK4mT,eAAe5gT,KAAK+oT,IAM3BG,EAAalpT,KAAK+oT,IACK,OAAdjzS,EAAI5a,GAAG28Q,KACXmxC,GAOHD,EAAW5R,EAAUj8S,GACrB6tT,EAAS3uP,QAAS,IAPlB2uP,EAAWtoB,eAAeG,YAAY9qR,EAAI5a,GAAG28Q,IAC7Cs/B,EAAUj8S,GAAK6tT,EACfA,EAASxxL,KAAKv9H,KAAM8b,EAAK5a,EAAGi8S,GAC5Bn9S,KAAK4mT,eAAe5gT,KAAK+oT,GACzB/lK,GAAS,GAMXkmK,EAAalpT,KAAK+oT,IAGpB/uT,KAAKmnT,oBAAoBrrS,EAAI5a,GAAIA,EAAI,GAKvC,IAFA2/F,EAAMouN,EAAU5tT,OAEXH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB+tT,EAAU/tT,GAAGk/D,QAAS,EAKxB,IAFAygC,EAAMquN,EAAa7tT,OAEdH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBguT,EAAahuT,GAAGk/D,QAAS,GAI7B2rP,gBAAgB7rT,UAAUqmT,mBAAqB,WAE7C,IAAIrlT,EADJlB,KAAK+mT,kBAEL,IAAIlmN,EAAM7gG,KAAKgsT,WAAW3qT,OAE1B,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKgsT,WAAW9qT,GAAG69E,QAKrB,IAFA/+E,KAAKmvT,cAEAjuT,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,GACpBlB,KAAKgsT,WAAW9qT,GAAG84R,MAAQh6R,KAAKq6R,iBAC9Br6R,KAAKgsT,WAAW9qT,GAAG0mT,SACrB5nT,KAAKgsT,WAAW9qT,GAAG0mT,OAAOh9O,aAAa,IAAK5qE,KAAKgsT,WAAW9qT,GAAGvB,GAE/DK,KAAKgsT,WAAW9qT,GAAGvB,EAAI,OAASK,KAAKgsT,WAAW9qT,GAAGvB,GAGrDK,KAAKgsT,WAAW9qT,GAAGymT,MAAM/8O,aAAa,IAAK5qE,KAAKgsT,WAAW9qT,GAAGvB,GAAK,UAKzEosT,gBAAgB7rT,UAAUivT,YAAc,WACtC,IAAIjuT,EAEAkuT,EADAvuN,EAAM7gG,KAAKisT,iBAAiB5qT,OAGhC,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBkuT,EAAkBpvT,KAAKisT,iBAAiB/qT,IAEnClB,KAAKq6R,eAAiB+0B,EAAgB50J,QAAQ2gI,eAAyC,IAAzBi0B,EAAgBh/S,MACjFg/S,EAAgBp0O,GAAGo0O,EAAgBh/S,KAAMg/S,EAAgB50J,QAASx6J,KAAKq6R,gBAK7E0xB,gBAAgB7rT,UAAUijR,QAAU,WAClCnjR,KAAK+lT,qBACL/lT,KAAKk9S,WAAa,KAClBl9S,KAAKm9S,UAAY,MAoBnB+O,YAAYhsT,UAAUm5G,OAAS,SAAUnzG,EAAGimT,EAAItb,EAAIub,EAAIjmT,EAAGtG,GACzDG,KAAKg6R,KAAK9zR,GAAI,EACdlG,KAAKg6R,KAAKmyB,IAAK,EACfnsT,KAAKg6R,KAAK6W,IAAK,EACf7wS,KAAKg6R,KAAKoyB,IAAK,EACfpsT,KAAKg6R,KAAK7zR,GAAI,EACdnG,KAAKg6R,KAAKn6R,GAAI,EACd,IAAIwvT,GAAU,EAsCd,OApCIrvT,KAAKkG,IAAMA,IACblG,KAAKkG,EAAIA,EACTlG,KAAKg6R,KAAK9zR,GAAI,EACdmpT,GAAU,GAGRrvT,KAAKmsT,KAAOA,IACdnsT,KAAKmsT,GAAKA,EACVnsT,KAAKg6R,KAAKmyB,IAAK,EACfkD,GAAU,GAGRrvT,KAAK6wS,KAAOA,IACd7wS,KAAK6wS,GAAKA,EACV7wS,KAAKg6R,KAAK6W,IAAK,EACfwe,GAAU,GAGRrvT,KAAKosT,KAAOA,IACdpsT,KAAKosT,GAAKA,EACVpsT,KAAKg6R,KAAKoyB,IAAK,EACfiD,GAAU,GAGRrvT,KAAKmG,IAAMA,IACbnG,KAAKmG,EAAIA,EACTnG,KAAKg6R,KAAK7zR,GAAI,EACdkpT,GAAU,IAGRxvT,EAAEwB,QAAWrB,KAAKH,EAAE,KAAOA,EAAE,IAAMG,KAAKH,EAAE,KAAOA,EAAE,IAAMG,KAAKH,EAAE,KAAOA,EAAE,IAAMG,KAAKH,EAAE,KAAOA,EAAE,IAAMG,KAAKH,EAAE,MAAQA,EAAE,KAAOG,KAAKH,EAAE,MAAQA,EAAE,MAChJG,KAAKH,EAAIA,EACTG,KAAKg6R,KAAKn6R,GAAI,EACdwvT,GAAU,GAGLA,GAsDThD,aAAansT,UAAU0sT,gBAAkB,CAAC,EAAG,GAE7CP,aAAansT,UAAUutT,SAAW,SAAU3yS,EAAK1K,GAC/C,IAAK,IAAInP,KAAKmP,EACR7Q,OAAOW,UAAUJ,eAAea,KAAKyP,EAAMnP,KAC7C6Z,EAAI7Z,GAAKmP,EAAKnP,IAIlB,OAAO6Z,GAGTuxS,aAAansT,UAAUovT,eAAiB,SAAUl/S,GAC3CA,EAAK6vQ,YACRjgR,KAAK0tT,iBAAiBt9S,GAGxBpQ,KAAK87S,YAAc1rS,EACnBpQ,KAAK87S,YAAY6Q,SAAW3sT,KAAK87S,YAAY6Q,UAAY3sT,KAAK4sT,gBAC9D5sT,KAAKg6R,MAAO,GAGdqyB,aAAansT,UAAUi+S,eAAiB,WACtC,OAAOn+S,KAAKuvT,mBAGdlD,aAAansT,UAAUqvT,gBAAkB,WAOvC,OANAvvT,KAAKu6R,GAAKv6R,KAAKoQ,KAAKzQ,EAAEgH,EAAEtF,OAAS,EAE7BrB,KAAKu6R,IACPv6R,KAAKw6R,UAAUx6R,KAAKwvT,iBAAiBnsQ,KAAKrjD,OAGrCA,KAAKu6R,IAGd8xB,aAAansT,UAAUs6R,UAAY,SAAUC,GAC3Cz6R,KAAKm6R,gBAAgBn0R,KAAKy0R,GAC1Bz6R,KAAKksR,KAAKwO,mBAAmB16R,OAG/BqsT,aAAansT,UAAU6yO,SAAW,SAAU08E,GAC1C,GAAKzvT,KAAKksR,KAAKjF,WAAWiT,UAAYl6R,KAAKk6R,SAAYl6R,KAAKm6R,gBAAgB94R,QAAYouT,EAAxF,CAIAzvT,KAAK87S,YAAY96S,EAAIhB,KAAKoQ,KAAKzQ,EAAEgH,EAAE3G,KAAKusT,WAAWtrT,EAAED,EACrD,IAAIw3K,EAAex4K,KAAK87S,YACpB4T,EAAe1vT,KAAKusT,UAExB,GAAIvsT,KAAKo6R,KACPp6R,KAAKsvT,eAAetvT,KAAK87S,iBAD3B,CAOA,IAAI56S,EAFJlB,KAAKo6R,MAAO,EACZp6R,KAAKg6R,MAAO,EAEZ,IAAIn5L,EAAM7gG,KAAKm6R,gBAAgB94R,OAC3Bi5R,EAAam1B,GAAezvT,KAAKoQ,KAAKzQ,EAAEgH,EAAE3G,KAAKusT,WAAWtrT,EAE9D,IAAKC,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAGtBo5R,EADEo1B,IAAiB1vT,KAAKusT,UACXvsT,KAAKm6R,gBAAgBj5R,GAAGo5R,EAAYA,EAAWt5R,GAE/ChB,KAAKm6R,gBAAgBj5R,GAAGlB,KAAK87S,YAAaxhB,EAAWt5R,GAIlEw3K,IAAiB8hH,GACnBt6R,KAAKsvT,eAAeh1B,GAGtBt6R,KAAK4F,EAAI5F,KAAK87S,YACd97S,KAAK81R,GAAK91R,KAAK4F,EACf5F,KAAKo6R,MAAO,EACZp6R,KAAKk6R,QAAUl6R,KAAKksR,KAAKjF,WAAWiT,WAGtCmyB,aAAansT,UAAUsvT,iBAAmB,WACxC,IAAIG,EAAW3vT,KAAKoQ,KAAKzQ,EAAEgH,EACvB+uR,EAAW11R,KAAKksR,KAAK5N,KAAKob,cAC1Bx4R,EAAI,EACJ2/F,EAAM8uN,EAAStuT,OAEnB,MAAOH,GAAK2/F,EAAM,EAAG,CACnB,GAAI3/F,IAAM2/F,EAAM,GAAK8uN,EAASzuT,EAAI,GAAGF,EAAI00R,EACvC,MAGFx0R,GAAK,EAOP,OAJIlB,KAAKusT,YAAcrrT,IACrBlB,KAAKusT,UAAYrrT,GAGZlB,KAAKoQ,KAAKzQ,EAAEgH,EAAE3G,KAAKusT,WAAWtrT,GAGvCorT,aAAansT,UAAU0vT,eAAiB,SAAU38N,GAChD,IAGI48N,EACApe,EAJAqe,EAAkB,GAClB5uT,EAAI,EACJ2/F,EAAM5N,EAAK5xF,OAGX0uT,GAAgB,EAEpB,MAAO7uT,EAAI2/F,EACTgvN,EAAW58N,EAAKnjF,WAAW5O,GAEvB6sS,YAAY4D,oBAAoBke,GAClCC,EAAgBA,EAAgBzuT,OAAS,IAAM4xF,EAAKn9C,OAAO50C,GAClD2uT,GAAY,OAAUA,GAAY,OAC3Cpe,EAAiBx+M,EAAKnjF,WAAW5O,EAAI,GAEjCuwS,GAAkB,OAAUA,GAAkB,OAC5Cse,GAAiBhiB,YAAYwD,WAAWse,EAAUpe,IACpDqe,EAAgBA,EAAgBzuT,OAAS,IAAM4xF,EAAKjS,OAAO9/E,EAAG,GAC9D6uT,GAAgB,GAEhBD,EAAgB9pT,KAAKitF,EAAKjS,OAAO9/E,EAAG,IAGtCA,GAAK,GAEL4uT,EAAgB9pT,KAAKitF,EAAKn9C,OAAO50C,KAE1B2uT,EAAW,OACpBpe,EAAiBx+M,EAAKnjF,WAAW5O,EAAI,GAEjC6sS,YAAY2D,kBAAkBme,EAAUpe,IAC1Cse,GAAgB,EAChBD,EAAgBA,EAAgBzuT,OAAS,IAAM4xF,EAAKjS,OAAO9/E,EAAG,GAC9DA,GAAK,GAEL4uT,EAAgB9pT,KAAKitF,EAAKn9C,OAAO50C,KAE1B6sS,YAAY2D,kBAAkBme,IACvCC,EAAgBA,EAAgBzuT,OAAS,IAAM4xF,EAAKn9C,OAAO50C,GAC3D6uT,GAAgB,GAEhBD,EAAgB9pT,KAAKitF,EAAKn9C,OAAO50C,IAGnCA,GAAK,EAGP,OAAO4uT,GAGTzD,aAAansT,UAAUwtT,iBAAmB,SAAU1uC,GAClDA,EAAaiB,YAAa,EAC1B,IAGI/+Q,EACA2/F,EACAmvN,EAEA9wR,EAQAr4B,EACAu2Q,EAEAgC,EAlBA0I,EAAc9nR,KAAKksR,KAAKjF,WAAWa,YACnC13Q,EAAOpQ,KAAKoQ,KACZ6/S,EAAU,GAIV39Q,EAAQ,EAER49Q,EAAiB9/S,EAAKjK,EAAEhB,EACxBgrT,EAAc,EACdC,EAAa,EACbC,EAAc,EACdtD,EAAa,GACbuD,EAAY,EACZC,EAAe,EAGf1lB,EAAW/iB,EAAYqpB,cAAcnyB,EAAa/5Q,GAElDqjT,EAAU,EACVxY,EAAYlF,kBAAkBC,GAClC7rB,EAAaisB,QAAU6E,EAAU5E,OACjClsB,EAAagsB,OAAS8E,EAAUtlO,MAChCw0M,EAAasuC,UAAYtuC,EAAa/9Q,EACtC+9Q,EAAauuC,UAAYvtT,KAAK4vT,eAAe5wC,EAAah+Q,GAC1D6/F,EAAMm+K,EAAauuC,UAAUlsT,OAC7B29Q,EAAawuC,gBAAkBxuC,EAAa8tC,GAC5C,IACI+C,EADAW,EAAiBxxC,EAAamsB,GAAK,IAAOnsB,EAAasuC,UAG3D,GAAItuC,EAAa0iB,GAAI,CACnB,IAGI+uB,EACAlD,EAJA/3C,GAAO,EACPm3C,EAAW3tC,EAAa0iB,GAAG,GAC3BgvB,EAAY1xC,EAAa0iB,GAAG,GAIhC,MAAOlsB,EAAM,CACX+3C,EAAYvtT,KAAK4vT,eAAe5wC,EAAah+Q,GAC7CyvT,EAAgB,EAChBH,EAAY,EACZzvN,EAAM0sN,EAAUlsT,OAChBmvT,EAAiBxxC,EAAamsB,GAAK,IAAOnsB,EAAasuC,UACvD,IAAIqD,GAAkB,EAEtB,IAAKzvT,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB2uT,EAAWtC,EAAUrsT,GAAG4O,WAAW,GACnCkgT,GAAc,EAEO,MAAjBzC,EAAUrsT,GACZyvT,EAAiBzvT,EACK,KAAb2uT,GAAgC,IAAbA,IAC5BS,EAAY,EACZN,GAAc,EACdS,GAAiBzxC,EAAawuC,iBAA4C,IAAzBxuC,EAAasuC,WAG5DxlC,EAAYxhL,OACd84K,EAAW0I,EAAYgpB,YAAYyc,EAAUrsT,GAAI2pS,EAASG,OAAQH,EAASmF,SAC3EsY,EAAU0H,EAAc,EAAI5wC,EAASziL,EAAIqiL,EAAasuC,UAAY,KAGlEhF,EAAUxgC,EAAYuoB,YAAYkd,EAAUrsT,GAAI89Q,EAAa/5Q,EAAG+5Q,EAAasuC,WAG3EgD,EAAYhI,EAAUqE,GAA6B,MAAjBY,EAAUrsT,KACtB,IAApByvT,EACF9vN,GAAO,EAEP3/F,EAAIyvT,EAGNF,GAAiBzxC,EAAawuC,iBAA4C,IAAzBxuC,EAAasuC,UAC9DC,EAAU/8M,OAAOtvG,EAAGyvT,IAAmBzvT,EAAI,EAAI,EAAG,MAElDyvT,GAAkB,EAClBL,EAAY,IAEZA,GAAahI,EACbgI,GAAaE,GAIjBC,GAAiB5lB,EAAS6hB,OAAS1tC,EAAasuC,UAAY,IAExDttT,KAAKwsT,WAAaxtC,EAAasuC,UAAYttT,KAAKysT,iBAAmBiE,EAAYD,GACjFzxC,EAAasuC,WAAa,EAC1BtuC,EAAawuC,gBAAkBxuC,EAAasuC,UAAYtuC,EAAa8tC,GAAK9tC,EAAa/9Q,IAEvF+9Q,EAAauuC,UAAYA,EACzB1sN,EAAMm+K,EAAauuC,UAAUlsT,OAC7Bm0Q,GAAO,IAKb86C,GAAaE,EACblI,EAAU,EACV,IACIsI,EADAC,EAAoB,EAGxB,IAAK3vT,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EA6CxB,GA5CA8uT,GAAc,EACdY,EAAc5xC,EAAauuC,UAAUrsT,GACrC2uT,EAAWe,EAAY9gT,WAAW,GAEjB,KAAb+/S,GAAgC,IAAbA,GACrBgB,EAAoB,EACpB9D,EAAW/mT,KAAKsqT,GAChBC,EAAeD,EAAYC,EAAeD,EAAYC,EACtDD,GAAa,EAAIE,EACjBtxR,EAAM,GACN8wR,GAAc,EACdK,GAAe,GAEfnxR,EAAM0xR,EAGJ9oC,EAAYxhL,OACd84K,EAAW0I,EAAYgpB,YAAY8f,EAAa/lB,EAASG,OAAQljB,EAAYqpB,cAAcnyB,EAAa/5Q,GAAG+qS,SAC3GsY,EAAU0H,EAAc,EAAI5wC,EAASziL,EAAIqiL,EAAasuC,UAAY,KAIlEhF,EAAUxgC,EAAYuoB,YAAYnxQ,EAAK8/O,EAAa/5Q,EAAG+5Q,EAAasuC,WAIlD,MAAhBsD,EACFC,GAAqBvI,EAAUkI,GAE/BF,GAAahI,EAAUkI,EAAiBK,EACxCA,EAAoB,GAGtBZ,EAAQjqT,KAAK,CACXgoJ,EAAGs6J,EACHwI,GAAIxI,EACJnrR,IAAKgzR,EACLhvT,EAAG6uT,EACHe,UAAW,GACX7xR,IAAKA,EACL0yE,KAAMy+M,EACNW,sBAAuB,IAGH,GAAlBd,GAIF,GAFAC,GAAe7H,EAEH,KAARppR,GAAsB,MAARA,GAAeh+B,IAAM2/F,EAAM,EAAG,CAClC,KAAR3hE,GAAsB,MAARA,IAChBixR,GAAe7H,GAGjB,MAAO8H,GAAclvT,EACnB+uT,EAAQG,GAAYU,GAAKX,EACzBF,EAAQG,GAAY15B,IAAMpkP,EAC1B29Q,EAAQG,GAAYn4I,MAAQqwI,EAC5B8H,GAAc,EAGhB99Q,GAAS,EACT69Q,EAAc,QAEX,GAAsB,GAAlBD,GAIT,GAFAC,GAAe7H,EAEH,KAARppR,GAAch+B,IAAM2/F,EAAM,EAAG,CACnB,KAAR3hE,IACFixR,GAAe7H,GAGjB,MAAO8H,GAAclvT,EACnB+uT,EAAQG,GAAYU,GAAKX,EACzBF,EAAQG,GAAY15B,IAAMpkP,EAC1B29Q,EAAQG,GAAYn4I,MAAQqwI,EAC5B8H,GAAc,EAGhBD,EAAc,EACd79Q,GAAS,QAGX29Q,EAAQ39Q,GAAOokP,IAAMpkP,EACrB29Q,EAAQ39Q,GAAO2lI,MAAQ,EACvB3lI,GAAS,EAQb,GAJA0sO,EAAahxH,EAAIiiK,EACjBM,EAAeD,EAAYC,EAAeD,EAAYC,EACtDxD,EAAW/mT,KAAKsqT,GAEZtxC,EAAa0iB,GACf1iB,EAAa2tC,SAAW3tC,EAAa0iB,GAAG,GACxC1iB,EAAa6tC,cAAgB,OAI7B,OAFA7tC,EAAa2tC,SAAW4D,EAEhBvxC,EAAan4Q,GACnB,KAAK,EACHm4Q,EAAa6tC,eAAiB7tC,EAAa2tC,SAC3C,MAEF,KAAK,EACH3tC,EAAa6tC,eAAiB7tC,EAAa2tC,SAAW,EACtD,MAEF,QACE3tC,EAAa6tC,cAAgB,EAInC7tC,EAAa+tC,WAAaA,EAC1B,IACIkE,EACAC,EAEAC,EACAz6B,EALA06B,EAAYhhT,EAAKxJ,EAGrBw2Q,EAAOg0C,EAAU/vT,OAGjB,IAAI6yO,EAAU,GAEd,IAAKrtO,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EAAG,CAkB5B,IAjBAoqT,EAAeG,EAAUvqT,GAErBoqT,EAAarqT,EAAEiqS,KACjB7xB,EAAamuC,iBAAkB,GAG7B8D,EAAarqT,EAAEulT,KACjBntC,EAAaouC,iBAAkB,IAG7B6D,EAAarqT,EAAEwlT,IAAM6E,EAAarqT,EAAEyqT,IAAMJ,EAAarqT,EAAE0qT,IAAML,EAAarqT,EAAE2qT,MAChFvyC,EAAakuC,eAAgB,GAG/Bx2B,EAAM,EACNy6B,EAAQF,EAAahwT,EAAErB,EAElBsB,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBgwT,EAAajB,EAAQ/uT,GACrBgwT,EAAWH,UAAUlqT,GAAK6vR,GAEb,GAATy6B,GAAiC,KAAnBD,EAAWhyR,KAAuB,GAATiyR,GAAiC,KAAnBD,EAAWhyR,KAAiC,MAAnBgyR,EAAWhyR,KAAwB,GAATiyR,IAAeD,EAAW/vT,GAAuB,KAAlB+vT,EAAWhyR,KAAch+B,GAAK2/F,EAAM,IAAe,GAATswN,IAAeD,EAAW/vT,GAAKD,GAAK2/F,EAAM,MAEnM,IAAtBowN,EAAahwT,EAAEuwT,IACjBt9E,EAAQluO,KAAK0wR,GAGfA,GAAO,GAIXtmR,EAAKxJ,EAAEC,GAAG5F,EAAEwwT,WAAa/6B,EACzB,IACIg7B,EADAC,GAAc,EAGlB,GAA0B,IAAtBV,EAAahwT,EAAEuwT,GACjB,IAAKtwT,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBgwT,EAAajB,EAAQ/uT,GAEjBywT,GAAcT,EAAWH,UAAUlqT,KAErC8qT,EAAaT,EAAWH,UAAUlqT,GAClC6qT,EAASx9E,EAAQ1jI,OAAOvhG,KAAKq2C,MAAMr2C,KAAKC,SAAWglO,EAAQ7yO,QAAS,GAAG,IAGzE6vT,EAAWH,UAAUlqT,GAAK6qT,EAKhC1yC,EAAaquC,QAAUruC,EAAawuC,iBAA4C,IAAzBxuC,EAAasuC,UACpEtuC,EAAaguC,GAAKhuC,EAAaguC,IAAM,EACrChuC,EAAa0tC,OAAS7hB,EAAS6hB,OAAS1tC,EAAasuC,UAAY,KAGnEjB,aAAansT,UAAUmrR,mBAAqB,SAAU/oE,EAAShwK,GAC7DA,OAAkBpM,IAAVoM,EAAsBtyC,KAAKusT,UAAYj6Q,EAC/C,IAAIs/Q,EAAQ5xT,KAAKytT,SAAS,GAAIztT,KAAKoQ,KAAKzQ,EAAEgH,EAAE2rC,GAAOrxC,GACnD2wT,EAAQ5xT,KAAKytT,SAASmE,EAAOtvG,GAC7BtiN,KAAKoQ,KAAKzQ,EAAEgH,EAAE2rC,GAAOrxC,EAAI2wT,EACzB5xT,KAAK6xT,YAAYv/Q,GACjBtyC,KAAKksR,KAAKwO,mBAAmB16R,OAG/BqsT,aAAansT,UAAU2xT,YAAc,SAAUv/Q,GAC7C,IAAIs/Q,EAAQ5xT,KAAKoQ,KAAKzQ,EAAEgH,EAAE2rC,GAAOrxC,EACjC2wT,EAAM3xC,YAAa,EACnBjgR,KAAKusT,UAAY,EACjBvsT,KAAKq6R,eAAgB,EACrBr6R,KAAK+yO,SAAS6+E,IAGhBvF,aAAansT,UAAU4xT,cAAgB,SAAUC,GAC/C/xT,KAAKwsT,UAAYuF,EACjB/xT,KAAK6xT,YAAY7xT,KAAKusT,WACtBvsT,KAAKksR,KAAKwO,mBAAmB16R,OAG/BqsT,aAAansT,UAAU8xT,mBAAqB,SAAUC,GACpDjyT,KAAKysT,gBAAkBx9S,KAAKq2C,MAAM2sQ,IAAe,EACjDjyT,KAAK6xT,YAAY7xT,KAAKusT,WACtBvsT,KAAKksR,KAAKwO,mBAAmB16R,OAG/B,IAAIkyT,iBAAmB,WACrB,IAAIryP,EAAM5wD,KAAK4wD,IACXta,EAAMt2C,KAAKs2C,IACXD,EAAQr2C,KAAKq2C,MAEjB,SAAS6sQ,EAAwBjmC,EAAM97Q,GACrCpQ,KAAKoyT,oBAAsB,EAC3BpyT,KAAK2G,GAAI,EACT3G,KAAKoQ,KAAOA,EACZpQ,KAAKksR,KAAOA,EACZlsR,KAAKs+Q,KAAO4N,EAAK5N,KACjBt+Q,KAAKqyT,OAAS,EACdryT,KAAKsyT,OAAS,EACdtyT,KAAKq7R,6BAA6BnP,GAClClsR,KAAKiB,EAAIs0R,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKnP,GAAK,CAC/C0F,EAAG,GACF,EAAG,EAAG3G,MAGPA,KAAK0E,EADH,MAAO0L,EACAmlR,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAK1L,EAAG,EAAG,EAAG1E,MAE5C,CACP4F,EAAG,KAIP5F,KAAKkG,EAAIqvR,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKlK,GAAK,CAC/CS,EAAG,GACF,EAAG,EAAG3G,MACTA,KAAKuyT,GAAKh9B,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKmiT,IAAM,CACjD5rT,EAAG,GACF,EAAG,EAAG3G,MACTA,KAAKwyT,GAAKj9B,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKoiT,IAAM,CACjD7rT,EAAG,GACF,EAAG,EAAG3G,MACTA,KAAKyyT,GAAKl9B,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKqiT,IAAM,CACjD9rT,EAAG,KACF,EAAG,EAAG3G,MACTA,KAAK4G,EAAI2uR,gBAAgB/zL,QAAQ0qL,EAAM97Q,EAAKxJ,EAAG,EAAG,IAAM5G,MAEnDA,KAAKk7R,kBAAkB75R,QAC1BrB,KAAK+yO,WA6JT,SAAS2/E,EAAoBxmC,EAAM97Q,EAAM0L,GACvC,OAAO,IAAIq2S,EAAwBjmC,EAAM97Q,EAAM0L,GAGjD,OA7JAq2S,EAAwBjyT,UAAY,CAClCyyT,QAAS,SAAiBj8B,GACpB12R,KAAKoyT,qBAAuBpyT,KAAKksR,KAAK2vB,aAAaC,YAAY9tJ,EAAE3sJ,QACnErB,KAAK+yO,WAGP,IAAIg+C,EAAK,EACLC,EAAK,EACLtvG,EAAK,EACLuvG,EAAK,EAELjxR,KAAKwyT,GAAG5sT,EAAI,EACdmrR,EAAK/wR,KAAKwyT,GAAG5sT,EAAI,IAEjBorR,GAAMhxR,KAAKwyT,GAAG5sT,EAAI,IAGhB5F,KAAKuyT,GAAG3sT,EAAI,EACd87K,EAAK,EAAM1hL,KAAKuyT,GAAG3sT,EAAI,IAEvBqrR,EAAK,EAAMjxR,KAAKuyT,GAAG3sT,EAAI,IAGzB,IAAIgtT,EAAQ5lC,cAAcC,gBAAgB8D,EAAIC,EAAItvG,EAAIuvG,GAAIvvR,IACtDq4R,EAAO,EACP94R,EAAIjB,KAAKqyT,OACT3tT,EAAI1E,KAAKsyT,OACTplS,EAAOltB,KAAKoQ,KAAKknR,GAErB,GAAa,IAATpqQ,EAEA6sQ,EADEr1R,IAAMzD,EACDy1R,GAAOhyR,EAAI,EAAI,EAEfm7D,EAAI,EAAGta,EAAI,IAAO7gD,EAAIzD,IAAMy1R,EAAMz1R,IAAMyD,EAAIzD,GAAI,IAGzD84R,EAAO64B,EAAM74B,QACR,GAAa,IAAT7sQ,EAEP6sQ,EADEr1R,IAAMzD,EACDy1R,GAAOhyR,EAAI,EAAI,EAEf,EAAIm7D,EAAI,EAAGta,EAAI,IAAO7gD,EAAIzD,IAAMy1R,EAAMz1R,IAAMyD,EAAIzD,GAAI,IAG7D84R,EAAO64B,EAAM74B,QACR,GAAa,IAAT7sQ,EACLxoB,IAAMzD,EACR84R,EAAO,GAEPA,EAAOl6N,EAAI,EAAGta,EAAI,IAAO7gD,EAAIzD,IAAMy1R,EAAMz1R,IAAMyD,EAAIzD,GAAI,IAEnD84R,EAAO,GACTA,GAAQ,EAERA,EAAO,EAAI,GAAKA,EAAO,KAI3BA,EAAO64B,EAAM74B,QACR,GAAa,IAAT7sQ,EAAY,CACrB,GAAIxoB,IAAMzD,EACR84R,EAAO,MACF,CACL,IAAI84B,EAAMnuT,EAAIzD,EAIdy1R,EAAMnxO,EAAIsa,EAAI,EAAG62N,EAAM,GAAMz1R,GAAIyD,EAAIzD,GACrC,IAAIqsK,GAAKulJ,EAAM,EAAIn8B,EACf9vR,EAAIisT,EAAM,EACd94B,EAAO9qR,KAAKwpQ,KAAK,EAAInrG,EAAIA,GAAK1mK,EAAIA,IAGpCmzR,EAAO64B,EAAM74B,QACK,IAAT7sQ,GACLxoB,IAAMzD,EACR84R,EAAO,GAEPrD,EAAMnxO,EAAIsa,EAAI,EAAG62N,EAAM,GAAMz1R,GAAIyD,EAAIzD,GACrC84R,GAAQ,EAAI9qR,KAAKoqR,IAAIpqR,KAAKmqQ,GAAe,EAAVnqQ,KAAKmqQ,GAASsd,GAAOhyR,EAAIzD,KAAO,GAGjE84R,EAAO64B,EAAM74B,KAETrD,GAAOpxO,EAAMrkD,KAEb84R,EAAOl6N,EAAI,EAAGta,EADZmxO,EAAMz1R,EAAI,EACMskD,EAAI7gD,EAAG,IAAMzD,EAAIy1R,GAEjBhyR,EAAIgyR,EAFmB,KAM7CqD,EAAO64B,EAAM74B,IAaf,GAAkB,MAAd/5R,KAAKyyT,GAAG7sT,EAAW,CACrB,IAAIktT,EAAyB,IAAZ9yT,KAAKyyT,GAAG7sT,EAEN,IAAfktT,IACFA,EAAa,MAGf,IAAItgF,EAAY,GAAmB,GAAbsgF,EAElB/4B,EAAOvnD,EACTunD,EAAO,GAEPA,GAAQA,EAAOvnD,GAAasgF,EAExB/4B,EAAO,IACTA,EAAO,IAKb,OAAOA,EAAO/5R,KAAK4G,EAAEhB,GAEvBmtO,SAAU,SAAkBggF,GAC1B/yT,KAAKo7R,2BACLp7R,KAAKg6R,KAAO+4B,GAAgB/yT,KAAKg6R,KACjCh6R,KAAKoyT,mBAAqBpyT,KAAKksR,KAAK2vB,aAAaC,YAAY9tJ,EAAE3sJ,QAAU,EAErE0xT,GAAgC,IAAhB/yT,KAAKoQ,KAAKhK,IAC5BpG,KAAK0E,EAAEkB,EAAI5F,KAAKoyT,oBAGlB,IAAI9+C,EAA0B,IAAhBtzQ,KAAKoQ,KAAKhK,EAAU,EAAI,IAAMpG,KAAKoQ,KAAKqhT,WAClDvrT,EAAIlG,KAAKkG,EAAEN,EAAI0tQ,EACfryQ,EAAIjB,KAAKiB,EAAE2E,EAAI0tQ,EAAUptQ,EACzBxB,EAAI1E,KAAK0E,EAAEkB,EAAI0tQ,EAAUptQ,EAE7B,GAAIjF,EAAIyD,EAAG,CACT,IAAIujS,EAAKhnS,EACTA,EAAIyD,EACJA,EAAIujS,EAGNjoS,KAAKqyT,OAASpxT,EACdjB,KAAKsyT,OAAS5tT,IAGlBmxQ,gBAAgB,CAAColB,0BAA2Bk3B,GAMrC,CACLO,oBAAqBA,GA3MF,GA+MvB,SAASM,yBAAyB9mC,EAAM+mC,EAAevgL,GACrD,IAAIwgL,EAAc,CAChBr9B,UAAU,GAERr0L,EAAU+zL,gBAAgB/zL,QAC1B2xN,EAA0BF,EAAcrsT,EAC5C5G,KAAK4G,EAAI,CACPR,EAAG+sT,EAAwB/sT,EAAIo7F,EAAQ0qL,EAAMinC,EAAwB/sT,EAAG,EAAG+yQ,UAAWzmI,GAAawgL,EACnGnqI,GAAIoqI,EAAwBpqI,GAAKvnF,EAAQ0qL,EAAMinC,EAAwBpqI,GAAI,EAAGowF,UAAWzmI,GAAawgL,EACtGxpB,GAAIypB,EAAwBzpB,GAAKloM,EAAQ0qL,EAAMinC,EAAwBzpB,GAAI,EAAGvwB,UAAWzmI,GAAawgL,EACtG3zC,GAAI4zC,EAAwB5zC,GAAK/9K,EAAQ0qL,EAAMinC,EAAwB5zC,GAAI,EAAGpG,UAAWzmI,GAAawgL,EACtG1zC,GAAI2zC,EAAwB3zC,GAAKh+K,EAAQ0qL,EAAMinC,EAAwB3zC,GAAI,EAAGrG,UAAWzmI,GAAawgL,EACtGjyT,EAAGkyT,EAAwBlyT,EAAIugG,EAAQ0qL,EAAMinC,EAAwBlyT,EAAG,EAAG,IAAMyxI,GAAawgL,EAC9FtsT,EAAGusT,EAAwBvsT,EAAI46F,EAAQ0qL,EAAMinC,EAAwBvsT,EAAG,EAAG,EAAG8rI,GAAawgL,EAC3FhtT,EAAGitT,EAAwBjtT,EAAIs7F,EAAQ0qL,EAAMinC,EAAwBjtT,EAAG,EAAG,IAAMwsI,GAAawgL,EAC9FrzT,EAAGszT,EAAwBtzT,EAAI2hG,EAAQ0qL,EAAMinC,EAAwBtzT,EAAG,EAAG,EAAG6yI,GAAawgL,EAC3F/G,GAAIgH,EAAwBhH,GAAK3qN,EAAQ0qL,EAAMinC,EAAwBhH,GAAI,EAAG,EAAGz5K,GAAawgL,EAC9FriB,GAAIsiB,EAAwBtiB,GAAKrvM,EAAQ0qL,EAAMinC,EAAwBtiB,GAAI,EAAG,EAAGn+J,GAAawgL,EAC9F9G,GAAI+G,EAAwB/G,GAAK5qN,EAAQ0qL,EAAMinC,EAAwB/G,GAAI,EAAG,EAAG15K,GAAawgL,EAC9F7B,GAAI8B,EAAwB9B,GAAK7vN,EAAQ0qL,EAAMinC,EAAwB9B,GAAI,EAAG,EAAG3+K,GAAawgL,EAC9F5B,GAAI6B,EAAwB7B,GAAK9vN,EAAQ0qL,EAAMinC,EAAwB7B,GAAI,EAAG,IAAM5+K,GAAawgL,EACjG3B,GAAI4B,EAAwB5B,GAAK/vN,EAAQ0qL,EAAMinC,EAAwB5B,GAAI,EAAG,IAAM7+K,GAAawgL,EACjGlyT,EAAGmyT,EAAwBnyT,EAAIwgG,EAAQ0qL,EAAMinC,EAAwBnyT,EAAG,EAAG,EAAG0xI,GAAawgL,GAE7FlzT,KAAKiB,EAAIixT,iBAAiBQ,oBAAoBxmC,EAAM+mC,EAAchyT,EAAGyxI,GACrE1yI,KAAKiB,EAAED,EAAIiyT,EAAchyT,EAAED,EAG7B,SAASoyT,qBAAqBhgB,EAAUigB,EAAYnnC,GAClDlsR,KAAKq6R,eAAgB,EACrBr6R,KAAKszT,gBAAiB,EACtBtzT,KAAKssT,UAAY,EACjBtsT,KAAKuzT,UAAYngB,EACjBpzS,KAAKwzT,YAAcH,EACnBrzT,KAAKg2S,MAAQ9pB,EACblsR,KAAKyzT,eAAiBz7C,iBAAiBh4Q,KAAKuzT,UAAU3sT,EAAEvF,QACxDrB,KAAK0zT,UAAY,GACjB1zT,KAAK2zT,aAAe,CAClBC,UAAW,IAEb5zT,KAAK6zT,gBAAkB,GACvB7zT,KAAK8zT,oBAAqB,EAC1B9zT,KAAKq7R,6BAA6BnP,GAyoBpC,SAAS6nC,gBAtoBTX,qBAAqBlzT,UAAU8zT,iBAAmB,WAChD,IAAI9yT,EAEA+xT,EADApyN,EAAM7gG,KAAKuzT,UAAU3sT,EAAEvF,OAEvBmgG,EAAU+zL,gBAAgB/zL,QAE9B,IAAKtgG,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB+xT,EAAgBjzT,KAAKuzT,UAAU3sT,EAAE1F,GACjClB,KAAKyzT,eAAevyT,GAAK,IAAI8xT,yBAAyBhzT,KAAKg2S,MAAOid,EAAejzT,MAG/EA,KAAKuzT,UAAU1zT,GAAK,MAAOG,KAAKuzT,UAAU1zT,GAC5CG,KAAK0zT,UAAY,CACf9sT,EAAG46F,EAAQxhG,KAAKg2S,MAAOh2S,KAAKuzT,UAAU1zT,EAAE+G,EAAG,EAAG,EAAG5G,MACjDiF,EAAGu8F,EAAQxhG,KAAKg2S,MAAOh2S,KAAKuzT,UAAU1zT,EAAEoF,EAAG,EAAG,EAAGjF,MACjDguJ,EAAGxsD,EAAQxhG,KAAKg2S,MAAOh2S,KAAKuzT,UAAU1zT,EAAEmuJ,EAAG,EAAG,EAAGhuJ,MACjDoG,EAAGo7F,EAAQxhG,KAAKg2S,MAAOh2S,KAAKuzT,UAAU1zT,EAAEuG,EAAG,EAAG,EAAGpG,MACjDH,EAAG2hG,EAAQxhG,KAAKg2S,MAAOh2S,KAAKuzT,UAAU1zT,EAAEA,EAAG,EAAG,EAAGG,MACjDmG,EAAGnG,KAAKg2S,MAAMtC,YAAYoP,gBAAgB9iT,KAAKuzT,UAAU1zT,EAAEsG,IAE7DnG,KAAKszT,gBAAiB,GAEtBtzT,KAAKszT,gBAAiB,EAGxBtzT,KAAK2zT,aAAaC,UAAYpyN,EAAQxhG,KAAKg2S,MAAOh2S,KAAKuzT,UAAUptT,EAAES,EAAG,EAAG,EAAG5G,OAG9EozT,qBAAqBlzT,UAAU+zT,YAAc,SAAUj1C,EAAc80C,GAGnE,GAFA9zT,KAAK8zT,mBAAqBA,EAErB9zT,KAAKg6R,MAASh6R,KAAKq6R,eAAkBy5B,GAAwB9zT,KAAKszT,gBAAmBtzT,KAAK0zT,UAAUvtT,EAAE6zR,KAA3G,CAIAh6R,KAAKq6R,eAAgB,EACrB,IAMI65B,EACAC,EACAjzT,EACA2/F,EAEAuzN,EACAC,EACAC,EACAvhC,EACAvd,EACA++C,EACAC,EACAC,EACA7lC,EACAzI,EACA8M,EACAtC,EACAwB,EACAuiC,EACAnhB,EAzBAqgB,EAAY5zT,KAAK2zT,aAAaC,UAAUhuT,EACxCwrT,EAAYpxT,KAAKyzT,eACjBrgB,EAAWpzS,KAAKuzT,UAChBoB,EAAe30T,KAAK6iT,QACpBwQ,EAAarzT,KAAKwzT,YAClBoB,EAAuB50T,KAAK6zT,gBAAgBxyT,OAK5C4uT,EAAUjxC,EAAahxH,EAiB3B,GAAIhuJ,KAAKszT,eAAgB,CAGvB,GAFA/f,EAAOvzS,KAAK0zT,UAAUvtT,GAEjBnG,KAAK0zT,UAAUvyT,GAAKnB,KAAK0zT,UAAU15B,KAAM,CAC5C,IAYI3G,EAZA9hC,EAAQgiD,EAAK3tS,EAejB,IAbI5F,KAAK0zT,UAAUttT,EAAER,IACnB2rP,EAAQA,EAAMxwH,WAIhBqzL,EAAW,CACTS,QAAS,EACT1uC,SAAU,IAEZtlL,EAAM0wJ,EAAM0+B,QAAU,EAEtBU,EAAc,EAETzvR,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBmyR,EAAaiC,IAAIpC,gBAAgB3hC,EAAM3rP,EAAE1E,GAAIqwP,EAAM3rP,EAAE1E,EAAI,GAAI,CAACqwP,EAAMrrP,EAAEhF,GAAG,GAAKqwP,EAAM3rP,EAAE1E,GAAG,GAAIqwP,EAAMrrP,EAAEhF,GAAG,GAAKqwP,EAAM3rP,EAAE1E,GAAG,IAAK,CAACqwP,EAAMrwP,EAAEA,EAAI,GAAG,GAAKqwP,EAAM3rP,EAAE1E,EAAI,GAAG,GAAIqwP,EAAMrwP,EAAEA,EAAI,GAAG,GAAKqwP,EAAM3rP,EAAE1E,EAAI,GAAG,KACxMkzT,EAASS,SAAWxhC,EAAWN,cAC/BqhC,EAASjuC,SAASngR,KAAKqtR,GACvB1C,GAAe0C,EAAWN,cAG5B7xR,EAAI2/F,EAEA0yM,EAAK3tS,EAAEquE,IACTo/M,EAAaiC,IAAIpC,gBAAgB3hC,EAAM3rP,EAAE1E,GAAIqwP,EAAM3rP,EAAE,GAAI,CAAC2rP,EAAMrrP,EAAEhF,GAAG,GAAKqwP,EAAM3rP,EAAE1E,GAAG,GAAIqwP,EAAMrrP,EAAEhF,GAAG,GAAKqwP,EAAM3rP,EAAE1E,GAAG,IAAK,CAACqwP,EAAMrwP,EAAE,GAAG,GAAKqwP,EAAM3rP,EAAE,GAAG,GAAI2rP,EAAMrwP,EAAE,GAAG,GAAKqwP,EAAM3rP,EAAE,GAAG,KACpLwuT,EAASS,SAAWxhC,EAAWN,cAC/BqhC,EAASjuC,SAASngR,KAAKqtR,GACvB1C,GAAe0C,EAAWN,eAG5B/yR,KAAK0zT,UAAUoB,GAAKV,EAWtB,GARAA,EAAWp0T,KAAK0zT,UAAUoB,GAC1BT,EAAgBr0T,KAAK0zT,UAAUzuT,EAAEW,EACjC4uT,EAAa,EACbD,EAAW,EACXxhC,EAAgB,EAChBvd,GAAO,EACP2Q,EAAWiuC,EAASjuC,SAEhBkuC,EAAgB,GAAK9gB,EAAK3tS,EAAEquE,EAAG,CAC7BmgP,EAASS,QAAU5lT,KAAKgyF,IAAIozN,KAC9BA,GAAiBplT,KAAKgyF,IAAIozN,GAAiBD,EAASS,SAGtDL,EAAaruC,EAAS9kR,OAAS,EAC/ButR,EAASzI,EAASquC,GAAY5lC,OAC9B2lC,EAAW3lC,EAAOvtR,OAAS,EAE3B,MAAOgzT,EAAgB,EACrBA,GAAiBzlC,EAAO2lC,GAAUthC,cAClCshC,GAAY,EAERA,EAAW,IACbC,GAAc,EACd5lC,EAASzI,EAASquC,GAAY5lC,OAC9B2lC,EAAW3lC,EAAOvtR,OAAS,GAKjCutR,EAASzI,EAASquC,GAAY5lC,OAC9B6lC,EAAY7lC,EAAO2lC,EAAW,GAC9BD,EAAe1lC,EAAO2lC,GACtBthC,EAAgBqhC,EAAarhC,cAG/BpyL,EAAMovN,EAAQ5uT,OACd6yT,EAAO,EACPC,EAAO,EACP,IAEIlB,EACA8B,EACAluT,EACAu2Q,EACA43C,EAEAj7B,EARAk7B,EAAgC,IAAzBj2C,EAAasuC,UAAkB,KACtC4H,GAAY,EAMhB93C,EAAOg0C,EAAU/vT,OAEjB,IACI8zT,EACAC,EACAC,EAKAC,EACAzkB,EACAsb,EACAC,EACAzlT,EACA4uT,EACAC,EACAC,EAGAC,EAlBAh/B,GAAO,EAIPi/B,EAActB,EACduB,EAAiBpB,EACjBqB,EAAetB,EACflE,IAAe,EASfyF,GAAU,GACVC,GAAU/1T,KAAKg2T,kBAGnB,GAAuB,IAAnBh3C,EAAan4Q,GAA8B,IAAnBm4Q,EAAan4Q,EAAS,CAChD,IAAImqT,GAAwB,EACxBiF,GAA0B,EAC1BC,GAAuC,IAAnBl3C,EAAan4Q,GAAW,IAAO,EACnDmvJ,GAAY,EACZmgK,IAAY,EAEhB,IAAKj1T,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB,GAAI+uT,EAAQ/uT,GAAGC,EAAG,CACZ6vT,KACFA,IAAyBiF,IAG3B,MAAOjgK,GAAY90J,EACjB+uT,EAAQj6J,IAAWg7J,sBAAwBA,GAC3Ch7J,IAAa,EAGfg7J,GAAwB,EACxBmF,IAAY,MACP,CACL,IAAKtvT,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzBosT,EAAgB7B,EAAUvqT,GAAGD,EAEzBqsT,EAAcjyT,EAAE60R,WACdsgC,IAAgC,IAAnBn3C,EAAan4Q,IAC5BovT,IAA2BhD,EAAcjyT,EAAE4E,EAAIswT,IAGjDnB,EAAmB3D,EAAUvqT,GAAG5F,EAChC84R,EAAOg7B,EAAiBpC,QAAQ1C,EAAQ/uT,GAAG6vT,UAAUlqT,GAAIusS,EAASxsS,EAAEC,GAAG5F,EAAEwwT,YAErE13B,EAAK14R,OACP2vT,IAAyBiC,EAAcjyT,EAAE4E,EAAIm0R,EAAK,GAAKm8B,GAEvDlF,IAAyBiC,EAAcjyT,EAAE4E,EAAIm0R,EAAOm8B,IAK1DC,IAAY,EAIZnF,KACFA,IAAyBiF,IAG3B,MAAOjgK,GAAY90J,EACjB+uT,EAAQj6J,IAAWg7J,sBAAwBA,GAC3Ch7J,IAAa,EAKjB,IAAK90J,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAAG,CAI3B,GAHAyzT,EAAa51O,QACbu2O,EAAc,EAEVrF,EAAQ/uT,GAAGC,EACb+yT,EAAO,EACPC,GAAQn1C,EAAaquC,QACrB8G,GAAQe,EAAY,EAAI,EACxBb,EAAgBsB,EAChBT,GAAY,EAERl1T,KAAKszT,iBACPkB,EAAaoB,EACbrB,EAAWsB,EACXjnC,EAASzI,EAASquC,GAAY5lC,OAC9B6lC,EAAY7lC,EAAO2lC,EAAW,GAC9BD,EAAe1lC,EAAO2lC,GACtBthC,EAAgBqhC,EAAarhC,cAC7BF,EAAgB,GAGlB+iC,GAAU,GACVL,EAAW,GACXF,EAAW,GACXG,EAAU,GACVK,GAAU/1T,KAAKg2T,sBACV,CACL,GAAIh2T,KAAKszT,eAAgB,CACvB,GAAIjD,KAAgBJ,EAAQ/uT,GAAG0wG,KAAM,CACnC,OAAQotK,EAAan4Q,GACnB,KAAK,EACHwtT,GAAiB1jC,EAAc3R,EAAa+tC,WAAWkD,EAAQ/uT,GAAG0wG,MAClE,MAEF,KAAK,EACHyiN,IAAkB1jC,EAAc3R,EAAa+tC,WAAWkD,EAAQ/uT,GAAG0wG,OAAS,EAC5E,MAEF,QACE,MAGJy+M,GAAcJ,EAAQ/uT,GAAG0wG,KAGvB8kL,IAAQu5B,EAAQ/uT,GAAGw1R,MACjBu5B,EAAQv5B,KACV29B,GAAiBpE,EAAQv5B,GAAKz+G,OAGhCo8I,GAAiBpE,EAAQ/uT,GAAG4vT,GAAK,EACjCp6B,EAAMu5B,EAAQ/uT,GAAGw1R,KAGnB29B,GAAiBT,EAAU,GAAK3D,EAAQ/uT,GAAG4vT,GAAK,KAChD,IAAIsF,GAAiB,EAErB,IAAKvvT,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzBosT,EAAgB7B,EAAUvqT,GAAGD,EAEzBqsT,EAAcpzT,EAAEg2R,WAClBk/B,EAAmB3D,EAAUvqT,GAAG5F,EAChC84R,EAAOg7B,EAAiBpC,QAAQ1C,EAAQ/uT,GAAG6vT,UAAUlqT,GAAIusS,EAASxsS,EAAEC,GAAG5F,EAAEwwT,YAErE13B,EAAK14R,OACP+0T,IAAkBnD,EAAcpzT,EAAE+F,EAAE,GAAKm0R,EAAK,GAE9Cq8B,IAAkBnD,EAAcpzT,EAAE+F,EAAE,GAAKm0R,GAIzCk5B,EAAcrsT,EAAEivR,WAClBk/B,EAAmB3D,EAAUvqT,GAAG5F,EAChC84R,EAAOg7B,EAAiBpC,QAAQ1C,EAAQ/uT,GAAG6vT,UAAUlqT,GAAIusS,EAASxsS,EAAEC,GAAG5F,EAAEwwT,YAErE13B,EAAK14R,OACP+0T,IAAkBnD,EAAcrsT,EAAEhB,EAAE,GAAKm0R,EAAK,GAE9Cq8B,IAAkBnD,EAAcrsT,EAAEhB,EAAE,GAAKm0R,GAK/CvkB,GAAO,EAEHx1Q,KAAK0zT,UAAU9sT,EAAEhB,IACnByuT,EAAgC,GAAhBpE,EAAQ,GAAGa,IAAYngC,EAAc3wR,KAAK0zT,UAAUzuT,EAAEW,EAAoB,GAAhBqqT,EAAQ,GAAGa,GAA4C,GAAjCb,EAAQA,EAAQ5uT,OAAS,GAAGyvT,IAAYp6B,GAAO71L,EAAM,GACrJwzN,GAAiBr0T,KAAK0zT,UAAUzuT,EAAEW,GAGpC,MAAO4vQ,EACDud,EAAgBE,GAAiBohC,EAAgB+B,KAAmBxnC,GACtEuD,GAAQkiC,EAAgB+B,GAAiBrjC,GAAiBuhC,EAAarhC,cACvEmiC,EAAWX,EAAUjsI,MAAM,IAAM8rI,EAAa9rI,MAAM,GAAKisI,EAAUjsI,MAAM,IAAM2pG,EAC/EkjC,EAAWZ,EAAUjsI,MAAM,IAAM8rI,EAAa9rI,MAAM,GAAKisI,EAAUjsI,MAAM,IAAM2pG,EAC/EwiC,EAAa/yB,WAAWgyB,EAAU,GAAK3D,EAAQ/uT,GAAG4vT,GAAK,MAAS8C,EAAU,GAAKqB,EAAQ,KACvFz/C,GAAO,GACEoZ,IACTmE,GAAiBuhC,EAAarhC,cAC9BshC,GAAY,EAERA,GAAY3lC,EAAOvtR,SACrBkzT,EAAW,EACXC,GAAc,EAETruC,EAASquC,GAUZ5lC,EAASzI,EAASquC,GAAY5lC,OAT1B2kB,EAAK3tS,EAAEquE,GACTsgP,EAAW,EACXC,EAAa,EACb5lC,EAASzI,EAASquC,GAAY5lC,SAE9BmE,GAAiBuhC,EAAarhC,cAC9BrE,EAAS,OAOXA,IACF6lC,EAAYH,EACZA,EAAe1lC,EAAO2lC,GACtBthC,EAAgBqhC,EAAarhC,gBAKnCkiC,EAAOlF,EAAQ/uT,GAAG4vT,GAAK,EAAIb,EAAQ/uT,GAAGi8B,IACtCw3R,EAAa/yB,WAAWuzB,EAAM,EAAG,QAEjCA,EAAOlF,EAAQ/uT,GAAG4vT,GAAK,EAAIb,EAAQ/uT,GAAGi8B,IACtCw3R,EAAa/yB,WAAWuzB,EAAM,EAAG,GAEjCR,EAAa/yB,WAAWgyB,EAAU,GAAK3D,EAAQ/uT,GAAG4vT,GAAK,MAAQ8C,EAAU,GAAKqB,EAAO,IAAM,GAG7F,IAAKpuT,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzBosT,EAAgB7B,EAAUvqT,GAAGD,EAEzBqsT,EAAcjyT,EAAE60R,WAClBk/B,EAAmB3D,EAAUvqT,GAAG5F,EAChC84R,EAAOg7B,EAAiBpC,QAAQ1C,EAAQ/uT,GAAG6vT,UAAUlqT,GAAIusS,EAASxsS,EAAEC,GAAG5F,EAAEwwT,YAE5D,IAATyC,GAAiC,IAAnBl1C,EAAan4Q,IACzB7G,KAAKszT,eACHv5B,EAAK14R,OACPgzT,GAAiBpB,EAAcjyT,EAAE4E,EAAIm0R,EAAK,GAE1Cs6B,GAAiBpB,EAAcjyT,EAAE4E,EAAIm0R,EAE9BA,EAAK14R,OACd6yT,GAAQjB,EAAcjyT,EAAE4E,EAAIm0R,EAAK,GAEjCm6B,GAAQjB,EAAcjyT,EAAE4E,EAAIm0R,IAsBpC,IAhBI/a,EAAaouC,kBACfjB,EAAKntC,EAAamtC,IAAM,GAGtBntC,EAAamuC,kBAEbtc,EADE7xB,EAAa6xB,GACV,CAAC7xB,EAAa6xB,GAAG,GAAI7xB,EAAa6xB,GAAG,GAAI7xB,EAAa6xB,GAAG,IAEzD,CAAC,EAAG,EAAG,IAIZ7xB,EAAakuC,eAAiBluC,EAAaotC,KAC7CA,EAAK,CAACptC,EAAaotC,GAAG,GAAIptC,EAAaotC,GAAG,GAAIptC,EAAaotC,GAAG,KAG3DvlT,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzBosT,EAAgB7B,EAAUvqT,GAAGD,EAEzBqsT,EAAcrsT,EAAEivR,WAClBk/B,EAAmB3D,EAAUvqT,GAAG5F,EAChC84R,EAAOg7B,EAAiBpC,QAAQ1C,EAAQ/uT,GAAG6vT,UAAUlqT,GAAIusS,EAASxsS,EAAEC,GAAG5F,EAAEwwT,YAErE13B,EAAK14R,OACPszT,EAAa/yB,WAAWqxB,EAAcrsT,EAAEhB,EAAE,GAAKm0R,EAAK,IAAKk5B,EAAcrsT,EAAEhB,EAAE,GAAKm0R,EAAK,GAAIk5B,EAAcrsT,EAAEhB,EAAE,GAAKm0R,EAAK,IAErH46B,EAAa/yB,WAAWqxB,EAAcrsT,EAAEhB,EAAE,GAAKm0R,GAAOk5B,EAAcrsT,EAAEhB,EAAE,GAAKm0R,EAAMk5B,EAAcrsT,EAAEhB,EAAE,GAAKm0R,IAKhH,IAAKlzR,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzBosT,EAAgB7B,EAAUvqT,GAAGD,EAEzBqsT,EAAchyT,EAAE40R,WAClBk/B,EAAmB3D,EAAUvqT,GAAG5F,EAChC84R,EAAOg7B,EAAiBpC,QAAQ1C,EAAQ/uT,GAAG6vT,UAAUlqT,GAAIusS,EAASxsS,EAAEC,GAAG5F,EAAEwwT,YAErE13B,EAAK14R,OACPszT,EAAalzB,MAAM,GAAKwxB,EAAchyT,EAAE2E,EAAE,GAAK,GAAKm0R,EAAK,GAAI,GAAKk5B,EAAchyT,EAAE2E,EAAE,GAAK,GAAKm0R,EAAK,GAAI,GAEvG46B,EAAalzB,MAAM,GAAKwxB,EAAchyT,EAAE2E,EAAE,GAAK,GAAKm0R,EAAM,GAAKk5B,EAAchyT,EAAE2E,EAAE,GAAK,GAAKm0R,EAAM,IAKvG,IAAKlzR,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EAAG,CAqD5B,GApDAosT,EAAgB7B,EAAUvqT,GAAGD,EAC7BmuT,EAAmB3D,EAAUvqT,GAAG5F,EAChC84R,EAAOg7B,EAAiBpC,QAAQ1C,EAAQ/uT,GAAG6vT,UAAUlqT,GAAIusS,EAASxsS,EAAEC,GAAG5F,EAAEwwT,YAErEwB,EAAc1zC,GAAGsW,WACfkE,EAAK14R,OACPszT,EAAanzB,cAAcyxB,EAAc1zC,GAAG35Q,EAAIm0R,EAAK,GAAIk5B,EAAczzC,GAAG55Q,EAAIm0R,EAAK,IAEnF46B,EAAanzB,cAAcyxB,EAAc1zC,GAAG35Q,EAAIm0R,EAAMk5B,EAAczzC,GAAG55Q,EAAIm0R,IAI3Ek5B,EAAc7sT,EAAEyvR,WACdkE,EAAK14R,OACPszT,EAAatzB,SAAS4xB,EAAc7sT,EAAER,EAAIm0R,EAAK,IAE/C46B,EAAatzB,SAAS4xB,EAAc7sT,EAAER,EAAIm0R,IAI1Ck5B,EAAcvpB,GAAG7T,WACfkE,EAAK14R,OACPszT,EAAavzB,QAAQ6xB,EAAcvpB,GAAG9jS,EAAIm0R,EAAK,IAE/C46B,EAAavzB,QAAQ6xB,EAAcvpB,GAAG9jS,EAAIm0R,IAI1Ck5B,EAAclqI,GAAG8sG,WACfkE,EAAK14R,OACPszT,EAAaxzB,QAAQ8xB,EAAclqI,GAAGnjL,EAAIm0R,EAAK,IAE/C46B,EAAaxzB,QAAQ8xB,EAAclqI,GAAGnjL,EAAIm0R,IAI1Ck5B,EAAc/sT,EAAE2vR,WACdkE,EAAK14R,OACPi0T,IAAgBrC,EAAc/sT,EAAEN,EAAIm0R,EAAK,GAAKu7B,GAAev7B,EAAK,GAElEu7B,IAAgBrC,EAAc/sT,EAAEN,EAAIm0R,EAAOu7B,GAAev7B,GAI1D/a,EAAaouC,iBAAmB6F,EAAc9G,GAAGt2B,WAC/CkE,EAAK14R,OACP8qT,GAAM8G,EAAc9G,GAAGvmT,EAAIm0R,EAAK,GAEhCoyB,GAAM8G,EAAc9G,GAAGvmT,EAAIm0R,GAI3B/a,EAAamuC,iBAAmB8F,EAAcpiB,GAAGhb,SACnD,IAAKlvR,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAClBozR,EAAK14R,OACPwvS,EAAGlqS,KAAOssT,EAAcpiB,GAAGjrS,EAAEe,GAAKkqS,EAAGlqS,IAAMozR,EAAK,GAEhD8W,EAAGlqS,KAAOssT,EAAcpiB,GAAGjrS,EAAEe,GAAKkqS,EAAGlqS,IAAMozR,EAKjD,GAAI/a,EAAakuC,eAAiBluC,EAAaotC,GAAI,CACjD,GAAI6G,EAAc7G,GAAGv2B,SACnB,IAAKlvR,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAClBozR,EAAK14R,OACP+qT,EAAGzlT,KAAOssT,EAAc7G,GAAGxmT,EAAEe,GAAKylT,EAAGzlT,IAAMozR,EAAK,GAEhDqyB,EAAGzlT,KAAOssT,EAAc7G,GAAGxmT,EAAEe,GAAKylT,EAAGzlT,IAAMozR,EAK7Ck5B,EAAc5B,GAAGx7B,WAEjBu2B,EADEryB,EAAK14R,OACFk6Q,YAAY6wC,EAAI6G,EAAc5B,GAAGzrT,EAAIm0R,EAAK,IAE1Cxe,YAAY6wC,EAAI6G,EAAc5B,GAAGzrT,EAAIm0R,IAI1Ck5B,EAAc3B,GAAGz7B,WAEjBu2B,EADEryB,EAAK14R,OACF+5Q,mBAAmBgxC,EAAI6G,EAAc3B,GAAG1rT,EAAIm0R,EAAK,IAEjD3e,mBAAmBgxC,EAAI6G,EAAc3B,GAAG1rT,EAAIm0R,IAIjDk5B,EAAc1B,GAAG17B,WAEjBu2B,EADEryB,EAAK14R,OACFi6Q,mBAAmB8wC,EAAI6G,EAAc1B,GAAG3rT,EAAIm0R,EAAK,IAEjDze,mBAAmB8wC,EAAI6G,EAAc1B,GAAG3rT,EAAIm0R,KAMzD,IAAKlzR,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzBosT,EAAgB7B,EAAUvqT,GAAGD,EAEzBqsT,EAAcpzT,EAAEg2R,WAClBk/B,EAAmB3D,EAAUvqT,GAAG5F,EAChC84R,EAAOg7B,EAAiBpC,QAAQ1C,EAAQ/uT,GAAG6vT,UAAUlqT,GAAIusS,EAASxsS,EAAEC,GAAG5F,EAAEwwT,YAErEzxT,KAAKszT,eACHv5B,EAAK14R,OACPszT,EAAa/yB,UAAU,EAAGqxB,EAAcpzT,EAAE+F,EAAE,GAAKm0R,EAAK,IAAKk5B,EAAcpzT,EAAE+F,EAAE,GAAKm0R,EAAK,IAEvF46B,EAAa/yB,UAAU,EAAGqxB,EAAcpzT,EAAE+F,EAAE,GAAKm0R,GAAOk5B,EAAcpzT,EAAE+F,EAAE,GAAKm0R,GAExEA,EAAK14R,OACdszT,EAAa/yB,UAAUqxB,EAAcpzT,EAAE+F,EAAE,GAAKm0R,EAAK,GAAIk5B,EAAcpzT,EAAE+F,EAAE,GAAKm0R,EAAK,IAAKk5B,EAAcpzT,EAAE+F,EAAE,GAAKm0R,EAAK,IAEpH46B,EAAa/yB,UAAUqxB,EAAcpzT,EAAE+F,EAAE,GAAKm0R,EAAMk5B,EAAcpzT,EAAE+F,EAAE,GAAKm0R,GAAOk5B,EAAcpzT,EAAE+F,EAAE,GAAKm0R,IAiB/G,GAZI/a,EAAaouC,kBACfmI,EAAWpJ,EAAK,EAAI,EAAIA,GAGtBntC,EAAamuC,kBACfqI,EAAW,OAASvmT,KAAKmiB,MAAc,IAARy/Q,EAAG,IAAY,IAAM5hS,KAAKmiB,MAAc,IAARy/Q,EAAG,IAAY,IAAM5hS,KAAKmiB,MAAc,IAARy/Q,EAAG,IAAY,KAG5G7xB,EAAakuC,eAAiBluC,EAAaotC,KAC7CqJ,EAAW,OAASxmT,KAAKmiB,MAAc,IAARg7R,EAAG,IAAY,IAAMn9S,KAAKmiB,MAAc,IAARg7R,EAAG,IAAY,IAAMn9S,KAAKmiB,MAAc,IAARg7R,EAAG,IAAY,KAG5GpsT,KAAKszT,eAAgB,CAIvB,GAHAqB,EAAa/yB,UAAU,GAAI5iB,EAAaguC,IACxC2H,EAAa/yB,UAAU,EAAGgyB,EAAU,GAAKqB,EAAO,IAAOd,EAAM,GAEzDn0T,KAAK0zT,UAAU7zT,EAAE+F,EAAG,CACtB8uT,GAAYJ,EAAa9rI,MAAM,GAAKisI,EAAUjsI,MAAM,KAAO8rI,EAAa9rI,MAAM,GAAKisI,EAAUjsI,MAAM,IACnG,IAAI6tI,GAA4B,IAAtBpnT,KAAKqnT,KAAK5B,GAAkBzlT,KAAKmqQ,GAEvCk7C,EAAa9rI,MAAM,GAAKisI,EAAUjsI,MAAM,KAC1C6tI,IAAO,KAGT1B,EAAa5zB,QAAQs1B,GAAMpnT,KAAKmqQ,GAAK,KAGvCu7C,EAAa/yB,UAAUwzB,EAAUC,EAAU,GAC3ChB,GAAiBT,EAAU,GAAK3D,EAAQ/uT,GAAG4vT,GAAK,KAE5Cb,EAAQ/uT,EAAI,IAAMw1R,IAAQu5B,EAAQ/uT,EAAI,GAAGw1R,MAC3C29B,GAAiBpE,EAAQ/uT,GAAG4vT,GAAK,EACjCuD,GAAmC,KAAlBr1C,EAAamsB,GAAansB,EAAasuC,eAErD,CAQL,OAPAqH,EAAa/yB,UAAUsyB,EAAMC,EAAM,GAE/Bn1C,EAAaiuC,IAEf0H,EAAa/yB,UAAU5iB,EAAaiuC,GAAG,GAAIjuC,EAAaiuC,GAAG,GAAKjuC,EAAa0tC,OAAQ,GAG/E1tC,EAAan4Q,GACnB,KAAK,EACH8tT,EAAa/yB,UAAUquB,EAAQ/uT,GAAG8vT,sBAAwBhyC,EAAa6tC,eAAiB7tC,EAAa2tC,SAAW3tC,EAAa+tC,WAAWkD,EAAQ/uT,GAAG0wG,OAAQ,EAAG,GAC9J,MAEF,KAAK,EACH+iN,EAAa/yB,UAAUquB,EAAQ/uT,GAAG8vT,sBAAwBhyC,EAAa6tC,eAAiB7tC,EAAa2tC,SAAW3tC,EAAa+tC,WAAWkD,EAAQ/uT,GAAG0wG,OAAS,EAAG,EAAG,GAClK,MAEF,QACE,MAGJ+iN,EAAa/yB,UAAU,GAAI5iB,EAAaguC,IACxC2H,EAAa/yB,UAAUuzB,EAAM,EAAG,GAChCR,EAAa/yB,UAAUgyB,EAAU,GAAK3D,EAAQ/uT,GAAG4vT,GAAK,KAAO8C,EAAU,GAAKqB,EAAO,IAAM,GACzFf,GAAQjE,EAAQ/uT,GAAG8sJ,EAAsB,KAAlBgxH,EAAamsB,GAAansB,EAAasuC,UAG7C,SAAf+F,EACFyC,GAAUnB,EAAaxvB,QACC,QAAfkuB,EACTyC,GAAUnB,EAAarvB,UAEvBywB,GAAU,CAACpB,EAAal/L,MAAM,GAAIk/L,EAAal/L,MAAM,GAAIk/L,EAAal/L,MAAM,GAAIk/L,EAAal/L,MAAM,GAAIk/L,EAAal/L,MAAM,GAAIk/L,EAAal/L,MAAM,GAAIk/L,EAAal/L,MAAM,GAAIk/L,EAAal/L,MAAM,GAAIk/L,EAAal/L,MAAM,GAAIk/L,EAAal/L,MAAM,GAAIk/L,EAAal/L,MAAM,IAAKk/L,EAAal/L,MAAM,IAAKk/L,EAAal/L,MAAM,IAAKk/L,EAAal/L,MAAM,IAAKk/L,EAAal/L,MAAM,IAAKk/L,EAAal/L,MAAM,KAG9XigM,EAAUJ,EAGRV,GAAwB1zT,GAC1B8zT,EAAc,IAAI9I,YAAYwJ,EAASH,EAAUC,EAAUC,EAAUK,GAASC,IAC9E/1T,KAAK6zT,gBAAgB7tT,KAAKgvT,GAC1BJ,GAAwB,EACxB50T,KAAK8zT,oBAAqB,IAE1BkB,EAAch1T,KAAK6zT,gBAAgB3yT,GACnClB,KAAK8zT,mBAAqBkB,EAAY37M,OAAOq8M,EAASH,EAAUC,EAAUC,EAAUK,GAASC,KAAY/1T,KAAK8zT,uBAKpHV,qBAAqBlzT,UAAU6yO,SAAW,WACpC/yO,KAAKg2S,MAAM/uB,WAAWiT,UAAYl6R,KAAKssT,WAI3CtsT,KAAKssT,SAAWtsT,KAAKg2S,MAAM/uB,WAAWiT,QACtCl6R,KAAKo7R,6BAGPg4B,qBAAqBlzT,UAAU2iT,QAAU,IAAIpiB,OAC7C2yB,qBAAqBlzT,UAAU81T,kBAAoB,GACnDngD,gBAAgB,CAAColB,0BAA2Bm4B,sBAI5CW,aAAa7zT,UAAUskT,YAAc,SAAUp0S,EAAM62Q,EAAY3I,GAC/Dt+Q,KAAK8zT,oBAAqB,EAC1B9zT,KAAKw1R,YACLx1R,KAAKy9S,aAAartS,EAAM62Q,EAAY3I,GACpCt+Q,KAAK67S,aAAe,IAAIwQ,aAAarsT,KAAMoQ,EAAKpP,EAAGhB,KAAKk7R,mBACxDl7R,KAAKu2T,aAAe,IAAInD,qBAAqBhjT,EAAKpP,EAAGhB,KAAKqzT,WAAYrzT,MACtEA,KAAKqiT,cAAcjyS,EAAM62Q,EAAY3I,GACrCt+Q,KAAKmmT,gBACLnmT,KAAKkyS,iBACLlyS,KAAK4kT,sBACL5kT,KAAK6kT,0BACL7kT,KAAKgmT,6BACLhmT,KAAKsmT,gBACLtmT,KAAKkrR,OACLlrR,KAAKu2T,aAAavC,iBAAiBh0T,KAAKk7R,oBAG1C64B,aAAa7zT,UAAUykR,aAAe,SAAUt2Q,GAC9CrO,KAAKg6R,MAAO,EACZh6R,KAAK0yS,uBAAuBrkS,GAC5BrO,KAAK49S,kBAAkBvvS,EAAKrO,KAAKmyS,YAE7BnyS,KAAK67S,aAAa7hB,MAAQh6R,KAAK67S,aAAaxhB,iBAC9Cr6R,KAAKw2T,eACLx2T,KAAK67S,aAAaxhB,eAAgB,EAClCr6R,KAAK67S,aAAa7hB,MAAO,IAI7B+5B,aAAa7zT,UAAUu2T,gBAAkB,SAAU9B,EAAc12C,GAC/D,IAAIp3Q,EAEAo8S,EADA7lC,EAAOa,EAAO58Q,OAEdq1T,EAAW,GAEf,IAAK7vT,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACJ,OAAjBo3Q,EAAOp3Q,GAAGg3Q,KACZolC,EAAYhlC,EAAOp3Q,GAAG23Q,GAAG73Q,EACzB+vT,GAAYtM,iBAAiBnH,EAAWA,EAAU/hT,EAAEG,QAAQ,EAAMszT,IAItE,OAAO+B,GAGT3C,aAAa7zT,UAAUmrR,mBAAqB,SAAU/oE,EAAShwK,GAC7DtyC,KAAK67S,aAAaxwB,mBAAmB/oE,EAAShwK,IAGhDyhR,aAAa7zT,UAAU4xT,cAAgB,SAAUC,GAC/C/xT,KAAK67S,aAAaiW,cAAcC,IAGlCgC,aAAa7zT,UAAU8xT,mBAAqB,SAAU2E,GACpD32T,KAAK67S,aAAamW,mBAAmB2E,IAGvC5C,aAAa7zT,UAAU02T,4BAA8B,SAAU53C,EAAc21C,EAAcp3O,EAAY22O,EAAMC,GAO3G,OANIn1C,EAAaiuC,IACf0H,EAAa/yB,UAAU5iB,EAAaiuC,GAAG,GAAIjuC,EAAaiuC,GAAG,GAAKjuC,EAAa0tC,OAAQ,GAGvFiI,EAAa/yB,UAAU,GAAI5iB,EAAaguC,GAAI,GAEpChuC,EAAan4Q,GACnB,KAAK,EACH8tT,EAAa/yB,UAAU5iB,EAAa6tC,eAAiB7tC,EAAa2tC,SAAW3tC,EAAa+tC,WAAWxvO,IAAc,EAAG,GACtH,MAEF,KAAK,EACHo3O,EAAa/yB,UAAU5iB,EAAa6tC,eAAiB7tC,EAAa2tC,SAAW3tC,EAAa+tC,WAAWxvO,IAAe,EAAG,EAAG,GAC1H,MAEF,QACE,MAGJo3O,EAAa/yB,UAAUsyB,EAAMC,EAAM,IAGrCJ,aAAa7zT,UAAU22T,WAAa,SAAUC,GAC5C,MAAO,OAAS7nT,KAAKmiB,MAAqB,IAAf0lS,EAAU,IAAY,IAAM7nT,KAAKmiB,MAAqB,IAAf0lS,EAAU,IAAY,IAAM7nT,KAAKmiB,MAAqB,IAAf0lS,EAAU,IAAY,KAGjI/C,aAAa7zT,UAAU62T,UAAY,IAAI7K,YAEvC6H,aAAa7zT,UAAUijR,QAAU,aAEjC,IAAI6zC,eAAiB,CACnB/4C,OAAQ,IAGV,SAASg5C,qBAAqB7mT,EAAM62Q,EAAY3I,GAC9Ct+Q,KAAKk3T,UAAY,GACjBl3T,KAAKqzT,WAAa,MAClBrzT,KAAKwkT,YAAYp0S,EAAM62Q,EAAY3I,GA+UrC,SAAS64C,cAAc/mT,EAAM62Q,EAAY3I,GACvCt+Q,KAAKwkT,YAAYp0S,EAAM62Q,EAAY3I,GAgBrC,SAAS84C,YAAYhnT,EAAM62Q,EAAY3I,GACrCt+Q,KAAKw1R,YACLx1R,KAAKy9S,aAAartS,EAAM62Q,EAAY3I,GACpCt+Q,KAAKw1R,YACLx1R,KAAKqiT,cAAcjyS,EAAM62Q,EAAY3I,GACrCt+Q,KAAKmmT,gBAqBP,SAASkR,mBAyOT,SAASC,gBA4GT,SAASC,eAAennT,EAAM62Q,EAAY3I,GACxCt+Q,KAAKi9Q,OAAS7sQ,EAAK6sQ,OACnBj9Q,KAAKw3T,YAAa,EAClBx3T,KAAKg9Q,gBAAiB,EACtBh9Q,KAAKgiT,gBAAkB,GACvBhiT,KAAKosS,SAAWpsS,KAAKi9Q,OAASjF,iBAAiBh4Q,KAAKi9Q,OAAO57Q,QAAU,GACrErB,KAAKwkT,YAAYp0S,EAAM62Q,EAAY3I,GACnCt+Q,KAAKmkR,GAAK/zQ,EAAK+zQ,GAAKoR,gBAAgB/zL,QAAQxhG,KAAMoQ,EAAK+zQ,GAAI,EAAG8C,EAAW3B,UAAWtlR,MAAQ,CAC1Fg/S,cAAc,GAUlB,SAASyY,YAAYrV,EAAep8P,GAClChmD,KAAKoiT,cAAgBA,EACrBpiT,KAAKi9Q,OAAS,KACdj9Q,KAAK05R,eAAiB,EACtB15R,KAAK03T,WAAax7C,SAAS,OAC3B,IAAIy7C,EAAY,GAEhB,GAAI3xQ,GAAUA,EAAOye,MAAO,CAC1B,IAAImzP,EAAe17C,SAAS,SACxB27C,EAAU78C,kBACd48C,EAAahtP,aAAa,KAAMitP,GAChCD,EAAajpH,YAAc3oJ,EAAOye,MAClCzkE,KAAK03T,WAAW5sP,YAAY8sP,GAC5BD,GAAaE,EAGf,GAAI7xQ,GAAUA,EAAOqc,YAAa,CAChC,IAAIy1P,EAAc57C,SAAS,QACvB67C,EAAS/8C,kBACb88C,EAAYltP,aAAa,KAAMmtP,GAC/BD,EAAYnpH,YAAc3oJ,EAAOqc,YACjCriE,KAAK03T,WAAW5sP,YAAYgtP,GAC5BH,GAAa,IAAMI,EAGjBJ,GACF33T,KAAK03T,WAAW9sP,aAAa,kBAAmB+sP,GAGlD,IAAIzwC,EAAOhL,SAAS,QACpBl8Q,KAAK03T,WAAW5sP,YAAYo8M,GAC5B,IAAIo4B,EAAcpjC,SAAS,KAC3Bl8Q,KAAK03T,WAAW5sP,YAAYw0O,GAC5Bt/S,KAAKw9S,aAAe8B,EACpBt/S,KAAK+yS,aAAe,CAClBilB,oBAAqBhyQ,GAAUA,EAAOgyQ,qBAAuB,gBAC7DtR,yBAA0B1gQ,GAAUA,EAAO0gQ,0BAA4B,iBACvEuR,kBAAmBjyQ,GAAUA,EAAOiyQ,mBAAqB,UACzDvW,gBAAiB17P,GAAUA,EAAO07P,kBAAmB,EACrD1O,oBAAqBhtP,IAAuC,IAA7BA,EAAOgtP,mBACtCklB,YAAalyQ,GAAUA,EAAOkyQ,cAAe,EAC7CC,YAAanyQ,GAAUA,EAAOmyQ,cAAe,EAC7ClwK,UAAWjiG,GAAUA,EAAOiiG,WAAa,GACzChiH,GAAI+f,GAAUA,EAAO/f,IAAM,GAC3BmyR,UAAWpyQ,GAAUA,EAAOoyQ,UAC5BC,WAAY,CACV94P,MAAOvZ,GAAUA,EAAOqyQ,YAAcryQ,EAAOqyQ,WAAW94P,OAAS,OACjEE,OAAQzZ,GAAUA,EAAOqyQ,YAAcryQ,EAAOqyQ,WAAW54P,QAAU,OACnE6tG,EAAGtnH,GAAUA,EAAOqyQ,YAAcryQ,EAAOqyQ,WAAW/qJ,GAAK,KACzDpoK,EAAG8gD,GAAUA,EAAOqyQ,YAAcryQ,EAAOqyQ,WAAWnzT,GAAK,MAE3Dq6D,MAAOvZ,GAAUA,EAAOuZ,MACxBE,OAAQzZ,GAAUA,EAAOyZ,QAE3Bz/D,KAAKinR,WAAa,CAChB+S,MAAM,EACNtE,UAAW,EACXxO,KAAMA,EACN6rB,aAAc/yS,KAAK+yS,cAErB/yS,KAAKosS,SAAW,GAChBpsS,KAAKgiT,gBAAkB,GACvBhiT,KAAKikO,WAAY,EACjBjkO,KAAK8oR,aAAe,MAStB,SAASwvC,gBAKP,IAAIp3T,EAJJlB,KAAKu4T,MAAQ,GACbv4T,KAAKw4T,QAAU,EACfx4T,KAAKy4T,IAAM,IAAIh4B,OACfzgS,KAAK04T,GAAK,EAEV,IAAI73N,EAAM,GAGV,IAFA7gG,KAAK24T,QAAUjhD,iBAAiB,UAAW72K,GAEtC3/F,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKu4T,MAAMr3T,GAAKw2Q,iBAAiB,UAAW,IAG9C13Q,KAAKiwR,QAAUpvL,EAuBjB,SAAS+3N,wBACP54T,KAAKuuL,UAAY,GACjBvuL,KAAK64T,aAAe,GACpB74T,KAAK84T,oBAAsB,EAmE7B,SAASC,aAIT,SAASC,cAAc5oT,EAAMoqJ,GAK3B,IAAIt5J,EAJJlB,KAAKoQ,KAAOA,EACZpQ,KAAKw6J,QAAUA,EACfx6J,KAAK09Q,gBAAkB19Q,KAAKoQ,KAAKstQ,iBAAmB,GACpD19Q,KAAK4zS,SAAW57B,iBAAiBh4Q,KAAK09Q,gBAAgBr8Q,QAEtD,IAAIw/F,EAAM7gG,KAAK09Q,gBAAgBr8Q,OAC3B43T,GAAW,EAEf,IAAK/3T,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACa,MAAjClB,KAAK09Q,gBAAgBx8Q,GAAGs1K,OAC1ByiJ,GAAW,GAGbj5T,KAAK4zS,SAAS1yS,GAAKg8R,qBAAqBmD,aAAargS,KAAKw6J,QAASx6J,KAAK09Q,gBAAgBx8Q,GAAI,GAG9FlB,KAAKi5T,SAAWA,EAEZA,GACFj5T,KAAKw6J,QAAQ+3I,uBAAuBvyS,MAsDxC,SAASk5T,iBAoET,SAASC,YAAY3+J,EAASpqJ,EAAM26R,EAAQquB,GAC1Cp5T,KAAKq5T,aAAe,GACpBr5T,KAAKmrS,GAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAC1B,IAWIjqS,EAXA28Q,EAAK,EAEO,OAAZztQ,EAAKytQ,GACPA,EAAK,EACgB,OAAZztQ,EAAKytQ,GACdA,EAAK,EACgB,OAAZztQ,EAAKytQ,KACdA,EAAK,GAGP79Q,KAAKs3R,GAAK4F,qBAAqBmD,aAAa7lI,EAASpqJ,EAAMytQ,EAAIrjH,GAE/D,IACI8+J,EADAz4N,EAAMkqM,EAAO1pS,OAGjB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACnB6pS,EAAO7pS,GAAGk/D,SACbk5P,EAAc,CACZ31D,WAAYy1D,EAAkBG,qBAAqBxuB,EAAO7pS,GAAGyiQ,YAC7D61D,QAAS,IAEXx5T,KAAKq5T,aAAarzT,KAAKszT,GACvBvuB,EAAO7pS,GAAGkrS,SAASpmS,KAAKszT,IAO9B,SAASG,eAAerpT,EAAM62Q,EAAY3I,GACxCt+Q,KAAKi+Q,OAAS,GACdj+Q,KAAKk9S,WAAa9sS,EAAK6tQ,OACvBj+Q,KAAKgsT,WAAa,GAClBhsT,KAAKm9S,UAAY,GACjBn9S,KAAKgpT,aAAe,GACpBhpT,KAAK4mT,eAAiB,GACtB5mT,KAAKknT,kBAAoB,GACzBlnT,KAAKo5T,kBAAoB,IAAIR,sBAC7B54T,KAAKwkT,YAAYp0S,EAAM62Q,EAAY3I,GAuhBrC,SAASo7C,cAActpT,EAAM62Q,EAAY3I,GACvCt+Q,KAAKk3T,UAAY,GACjBl3T,KAAKqtT,QAAU,EACfrtT,KAAKktT,eAAgB,EACrBltT,KAAKmtT,iBAAkB,EACvBntT,KAAKotT,iBAAkB,EACvBptT,KAAK25T,QAAS,EACd35T,KAAKg8K,MAAO,EACZh8K,KAAK6sT,cAAgB,EACrB7sT,KAAK45T,cAAgB,KACrB55T,KAAKqzT,WAAa,SAClBrzT,KAAKoyC,OAAS,CACZ4pI,KAAM,gBACN29I,OAAQ,gBACRE,OAAQ,EACRC,OAAQ,IAEV95T,KAAKwkT,YAAYp0S,EAAM62Q,EAAY3I,GAiOrC,SAASy7C,eAAe3pT,EAAM62Q,EAAY3I,GACxCt+Q,KAAK4hR,UAAYqF,EAAWgE,aAAa76Q,EAAK2tQ,OAC9C/9Q,KAAKiiR,IAAMgF,EAAWw3B,YAAYv7B,SAASljR,KAAK4hR,WAChD5hR,KAAKwkT,YAAYp0S,EAAM62Q,EAAY3I,GA0CrC,SAAS07C,eAAe5pT,EAAM62Q,EAAY3I,GACxCt+Q,KAAKwkT,YAAYp0S,EAAM62Q,EAAY3I,GAarC,SAAS27C,mBAAmB7X,EAAep8P,GACzChmD,KAAKoiT,cAAgBA,EACrBpiT,KAAK+yS,aAAe,CAClBmnB,aAAal0Q,QAAiC9f,IAAvB8f,EAAOk0Q,aAA4Bl0Q,EAAOk0Q,YACjE7jN,QAASrwD,GAAUA,EAAOqwD,SAAW,KACrCqrM,gBAAiB17P,GAAUA,EAAO07P,kBAAmB,EACrDsW,oBAAqBhyQ,GAAUA,EAAOgyQ,qBAAuB,gBAC7DtR,yBAA0B1gQ,GAAUA,EAAO0gQ,0BAA4B,iBACvEuR,kBAAmBjyQ,GAAUA,EAAOiyQ,mBAAqB,UACzDhwK,UAAWjiG,GAAUA,EAAOiiG,WAAa,GACzChiH,GAAI+f,GAAUA,EAAO/f,IAAM,IAE7BjmC,KAAK+yS,aAAaonB,IAAMn0Q,GAAUA,EAAOm0Q,KAAO,EAE5Cn6T,KAAKoiT,cAAcjlJ,UACrBn9J,KAAK+yS,aAAaonB,IAAMn0Q,GAAUA,EAAOm0Q,KAAOh2S,OAAOi2S,kBAAoB,GAG7Ep6T,KAAK05R,eAAiB,EACtB15R,KAAKinR,WAAa,CAChByO,UAAW,EACXsE,MAAM,EACN+Y,aAAc/yS,KAAK+yS,aACnBsnB,oBAAqB,GAEvBr6T,KAAKs6T,YAAc,IAAIhC,cACvBt4T,KAAKosS,SAAW,GAChBpsS,KAAKgiT,gBAAkB,GACvBhiT,KAAKi2S,aAAe,IAAIxV,OACxBzgS,KAAKg9Q,gBAAiB,EACtBh9Q,KAAK8oR,aAAe,SAwVtB,SAASyxC,cAAcnqT,EAAM62Q,EAAY3I,GACvCt+Q,KAAKg9Q,gBAAiB,EACtBh9Q,KAAKi9Q,OAAS7sQ,EAAK6sQ,OACnBj9Q,KAAKgiT,gBAAkB,GACvBhiT,KAAKosS,SAAWp0B,iBAAiBh4Q,KAAKi9Q,OAAO57Q,QAC7CrB,KAAKwkT,YAAYp0S,EAAM62Q,EAAY3I,GACnCt+Q,KAAKmkR,GAAK/zQ,EAAK+zQ,GAAKoR,gBAAgB/zL,QAAQxhG,KAAMoQ,EAAK+zQ,GAAI,EAAG8C,EAAW3B,UAAWtlR,MAAQ,CAC1Fg/S,cAAc,GA2ClB,SAASwb,eAAepY,EAAep8P,GACrChmD,KAAKoiT,cAAgBA,EACrBpiT,KAAK+yS,aAAe,CAClBmnB,aAAal0Q,QAAiC9f,IAAvB8f,EAAOk0Q,aAA4Bl0Q,EAAOk0Q,YACjE7jN,QAASrwD,GAAUA,EAAOqwD,SAAW,KACrCqrM,gBAAiB17P,GAAUA,EAAO07P,kBAAmB,EACrDsW,oBAAqBhyQ,GAAUA,EAAOgyQ,qBAAuB,gBAC7DtR,yBAA0B1gQ,GAAUA,EAAO0gQ,0BAA4B,iBACvEuR,kBAAmBjyQ,GAAUA,EAAOiyQ,mBAAqB,UACzDhwK,UAAWjiG,GAAUA,EAAOiiG,WAAa,GACzChiH,GAAI+f,GAAUA,EAAO/f,IAAM,IAE7BjmC,KAAK+yS,aAAaonB,IAAMn0Q,GAAUA,EAAOm0Q,KAAO,EAE5Cn6T,KAAKoiT,cAAcjlJ,UACrBn9J,KAAK+yS,aAAaonB,IAAMn0Q,GAAUA,EAAOm0Q,KAAOh2S,OAAOi2S,kBAAoB,GAG7Ep6T,KAAK05R,eAAiB,EACtB15R,KAAKinR,WAAa,CAChByO,UAAW,EACXsE,MAAM,EACN+Y,aAAc/yS,KAAK+yS,aACnBsnB,oBAAqB,GAEvBr6T,KAAKs6T,YAAc,IAAIhC,cACvBt4T,KAAKosS,SAAW,GAChBpsS,KAAKgiT,gBAAkB,GACvBhiT,KAAKi2S,aAAe,IAAIxV,OACxBzgS,KAAKg9Q,gBAAiB,EACtBh9Q,KAAK8oR,aAAe,SAStB,SAAS2xC,gBAwFT,SAASC,cAActqT,EAAM62Q,EAAY3I,GACvCt+Q,KAAKwkT,YAAYp0S,EAAM62Q,EAAY3I,GAyBrC,SAASq8C,cAAcvqT,EAAM62Q,EAAY3I,GAEvCt+Q,KAAKi+Q,OAAS,GAEdj+Q,KAAKk9S,WAAa9sS,EAAK6tQ,OAEvBj+Q,KAAKgsT,WAAa,GAElBhsT,KAAK4mT,eAAiB,GAEtB5mT,KAAKm9S,UAAY,GAEjBn9S,KAAKknT,kBAAoB,GAEzBlnT,KAAKisT,iBAAmB,GACxBjsT,KAAK46T,gBAAkB1+C,SAAS,KAChCl8Q,KAAKwkT,YAAYp0S,EAAM62Q,EAAY3I,GAGnCt+Q,KAAKgpT,aAAe,GACpBhpT,KAAK66T,YAAc,CACjBvtJ,EAAG,OACHpoK,GAAI,OACJs2G,EAAG,EACH7e,EAAG,GAwMP,SAASm+N,aAAa1qT,EAAM62Q,EAAY3I,GACtCt+Q,KAAKk3T,UAAY,GACjBl3T,KAAK+6T,UAAY,GACjB/6T,KAAK66T,YAAc,CACjBvtJ,EAAG,OACHpoK,GAAI,OACJs2G,EAAG,EACH7e,EAAG,GAEL38F,KAAKqzT,WAAa,MAClBrzT,KAAKi3P,UAAW,EAChBj3P,KAAKwkT,YAAYp0S,EAAM62Q,EAAY3I,GA0RrC,SAAS08C,eAAe5qT,EAAM62Q,EAAY3I,GACxCt+Q,KAAKw1R,YACLx1R,KAAKy9S,aAAartS,EAAM62Q,EAAY3I,GACpCt+Q,KAAKmmT,gBACL,IAAI3kN,EAAU+zL,gBAAgB/zL,QAe9B,GAdAxhG,KAAKi7T,GAAKz5N,EAAQxhG,KAAMoQ,EAAK6qT,GAAI,EAAG,EAAGj7T,MAEnCoQ,EAAKouQ,GAAG3+Q,EAAEoB,GACZjB,KAAK2pS,GAAKnoM,EAAQxhG,KAAMoQ,EAAKouQ,GAAG3+Q,EAAEytK,EAAG,EAAG,EAAGttK,MAC3CA,KAAK4pS,GAAKpoM,EAAQxhG,KAAMoQ,EAAKouQ,GAAG3+Q,EAAEqF,EAAG,EAAG,EAAGlF,MAC3CA,KAAK6pS,GAAKroM,EAAQxhG,KAAMoQ,EAAKouQ,GAAG3+Q,EAAEkiL,EAAG,EAAG,EAAG/hL,OAE3CA,KAAKH,EAAI2hG,EAAQxhG,KAAMoQ,EAAKouQ,GAAG3+Q,EAAG,EAAG,EAAGG,MAGtCoQ,EAAKouQ,GAAG53Q,IACV5G,KAAK4G,EAAI46F,EAAQxhG,KAAMoQ,EAAKouQ,GAAG53Q,EAAG,EAAG,EAAG5G,OAGtCoQ,EAAKouQ,GAAGwgB,GAAGr4R,EAAEtF,QAAU+O,EAAKouQ,GAAGwgB,GAAGr4R,EAAE,GAAGmlG,GAAI,CAC7C,IAAI5qG,EACA2/F,EAAMzwF,EAAKouQ,GAAGwgB,GAAGr4R,EAAEtF,OAEvB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBkP,EAAKouQ,GAAGwgB,GAAGr4R,EAAEzF,GAAG4qG,GAAK,KACrB17F,EAAKouQ,GAAGwgB,GAAGr4R,EAAEzF,GAAGu1R,GAAK,KAIzBz2R,KAAKg/R,GAAKx9L,EAAQxhG,KAAMoQ,EAAKouQ,GAAGwgB,GAAI,EAAG7lB,UAAWn5Q,MAClDA,KAAKg/R,GAAG1H,IAAK,EACbt3R,KAAK+oL,GAAKvnF,EAAQxhG,KAAMoQ,EAAKouQ,GAAGz1F,GAAI,EAAGowF,UAAWn5Q,MAClDA,KAAK0pS,GAAKloM,EAAQxhG,KAAMoQ,EAAKouQ,GAAGkrB,GAAI,EAAGvwB,UAAWn5Q,MAClDA,KAAKypS,GAAKjoM,EAAQxhG,KAAMoQ,EAAKouQ,GAAGirB,GAAI,EAAGtwB,UAAWn5Q,MAClDA,KAAKwpS,IAAM,IAAI/I,OACfzgS,KAAKk7T,SAAW,IAAIz6B,OACpBzgS,KAAKq6R,eAAgB,EAErBr6R,KAAK6yS,eAAiB,CACpBC,MAAO9yS,MA2IX,SAASm7T,cAAc/qT,EAAM62Q,EAAY3I,GACvCt+Q,KAAK4hR,UAAYqF,EAAWgE,aAAa76Q,EAAK2tQ,OAC9C/9Q,KAAKwkT,YAAYp0S,EAAM62Q,EAAY3I,GA6BrC,SAAS88C,mBAAmBhZ,EAAep8P,GACzChmD,KAAKoiT,cAAgBA,EACrBpiT,KAAKi9Q,OAAS,KACdj9Q,KAAK05R,eAAiB,EACtB15R,KAAK+yS,aAAe,CAClB9qJ,UAAWjiG,GAAUA,EAAOiiG,WAAa,GACzCy+J,yBAA0B1gQ,GAAUA,EAAO0gQ,0BAA4B,iBACvE1T,oBAAqBhtP,IAAuC,IAA7BA,EAAOgtP,mBACtCqlB,WAAY,CACV94P,MAAOvZ,GAAUA,EAAOqyQ,YAAcryQ,EAAOqyQ,WAAW94P,OAAS,OACjEE,OAAQzZ,GAAUA,EAAOqyQ,YAAcryQ,EAAOqyQ,WAAW54P,QAAU,OACnE6tG,EAAGtnH,GAAUA,EAAOqyQ,YAAcryQ,EAAOqyQ,WAAW/qJ,GAAK,QACzDpoK,EAAG8gD,GAAUA,EAAOqyQ,YAAcryQ,EAAOqyQ,WAAWnzT,GAAK,UAG7DlF,KAAKinR,WAAa,CAChB+S,MAAM,EACNtE,UAAW,EACXqd,aAAc/yS,KAAK+yS,cAErB/yS,KAAKgiT,gBAAkB,GACvBhiT,KAAKosS,SAAW,GAChBpsS,KAAKq7T,eAAiB,GACtBr7T,KAAKikO,WAAY,EACjBjkO,KAAKs7T,OAAS,KACdt7T,KAAKw3T,YAAa,EAClBx3T,KAAK8oR,aAAe,OAwUtB,SAASyyC,aAAanrT,EAAM62Q,EAAY3I,GACtCt+Q,KAAKi9Q,OAAS7sQ,EAAK6sQ,OACnBj9Q,KAAKw3T,YAAcpnT,EAAKotQ,QACxBx9Q,KAAKg9Q,gBAAiB,EACtBh9Q,KAAKgiT,gBAAkB,GACvBhiT,KAAKosS,SAAWpsS,KAAKi9Q,OAASjF,iBAAiBh4Q,KAAKi9Q,OAAO57Q,QAAU,GACrErB,KAAKwkT,YAAYp0S,EAAM62Q,EAAY3I,GACnCt+Q,KAAKmkR,GAAK/zQ,EAAK+zQ,GAAKoR,gBAAgB/zL,QAAQxhG,KAAMoQ,EAAK+zQ,GAAI,EAAG8C,EAAW3B,UAAWtlR,MAAQ,CAC1Fg/S,cAAc,GA+ClB,SAASwc,eAAepZ,EAAep8P,GACrChmD,KAAKoiT,cAAgBA,EACrBpiT,KAAKi9Q,OAAS,KACdj9Q,KAAK05R,eAAiB,EACtB15R,KAAK+yS,aAAe,CAClB9qJ,UAAWjiG,GAAUA,EAAOiiG,WAAa,GACzCy+J,yBAA0B1gQ,GAAUA,EAAO0gQ,0BAA4B,iBACvE1T,oBAAqBhtP,IAAuC,IAA7BA,EAAOgtP,mBACtCqlB,WAAY,CACV94P,MAAOvZ,GAAUA,EAAOqyQ,YAAcryQ,EAAOqyQ,WAAW94P,OAAS,OACjEE,OAAQzZ,GAAUA,EAAOqyQ,YAAcryQ,EAAOqyQ,WAAW54P,QAAU,OACnE6tG,EAAGtnH,GAAUA,EAAOqyQ,YAAcryQ,EAAOqyQ,WAAW/qJ,GAAK,QACzDpoK,EAAG8gD,GAAUA,EAAOqyQ,YAAcryQ,EAAOqyQ,WAAWnzT,GAAK,UAG7DlF,KAAKinR,WAAa,CAChB+S,MAAM,EACNtE,UAAW,EACXqd,aAAc/yS,KAAK+yS,cAErB/yS,KAAKgiT,gBAAkB,GACvBhiT,KAAKosS,SAAW,GAChBpsS,KAAKq7T,eAAiB,GACtBr7T,KAAKikO,WAAY,EACjBjkO,KAAKs7T,OAAS,KACdt7T,KAAKw3T,YAAa,EAClBx3T,KAAK8oR,aAAe,OAzlHtBjT,gBAAgB,CAAC+mC,YAAawC,iBAAkBgF,eAAgBC,iBAAkBxH,aAAcyH,qBAAsByP,cAAekD,sBAErIA,qBAAqB/2T,UAAUomT,cAAgB,WACzCtmT,KAAKoQ,KAAKqrT,cAAgBz7T,KAAKinR,WAAWa,YAAYxhL,QACxDtmG,KAAK07T,cAAgBx/C,SAAS,UAIlC+6C,qBAAqB/2T,UAAUy7T,kBAAoB,SAAUC,GAC3D,IAAI16T,EAAI,EACJ2/F,EAAM+6N,EAAUv6T,OAChBw6T,EAAe,GACfC,EAAqB,GAEzB,MAAO56T,EAAI2/F,EACL+6N,EAAU16T,KAAOyP,OAAOC,aAAa,KAAOgrT,EAAU16T,KAAOyP,OAAOC,aAAa,IACnFirT,EAAa71T,KAAK81T,GAClBA,EAAqB,IAErBA,GAAsBF,EAAU16T,GAGlCA,GAAK,EAIP,OADA26T,EAAa71T,KAAK81T,GACXD,GAGT5E,qBAAqB/2T,UAAU67T,eAAiB,SAAU3rT,EAAMqxR,GAK9D,GAAIrxR,EAAK6tQ,QAAU7tQ,EAAK6tQ,OAAO58Q,OAAQ,CACrC,IAAIq7R,EAAQtsR,EAAK6tQ,OAAO,GAExB,GAAIye,EAAM5lI,GAAI,CACZ,IAAIklK,EAAYt/B,EAAM5lI,GAAG4lI,EAAM5lI,GAAGz1J,OAAS,GAEvC26T,EAAU/6T,IACZ+6T,EAAU/6T,EAAE0F,EAAE,GAAK86R,EACnBu6B,EAAU/6T,EAAE0F,EAAE,GAAK86R,IAKzB,OAAOrxR,GAGT6mT,qBAAqB/2T,UAAUs2T,aAAe,WAE5C,IAAIt1T,EACA2/F,EAFJ7gG,KAAK06R,mBAAmB16R,MAGxB,IAAIg/Q,EAAeh/Q,KAAK67S,aAAaC,YACrC97S,KAAK6zT,gBAAkB77C,iBAAiBgH,EAAeA,EAAahxH,EAAE3sJ,OAAS,GAE3E29Q,EAAaotC,GACfpsT,KAAKw9S,aAAa5yO,aAAa,OAAQ5qE,KAAK62T,WAAW73C,EAAaotC,KAEpEpsT,KAAKw9S,aAAa5yO,aAAa,OAAQ,iBAGrCo0M,EAAa6xB,KACf7wS,KAAKw9S,aAAa5yO,aAAa,SAAU5qE,KAAK62T,WAAW73C,EAAa6xB,KACtE7wS,KAAKw9S,aAAa5yO,aAAa,eAAgBo0M,EAAamtC,KAG9DnsT,KAAKw9S,aAAa5yO,aAAa,YAAao0M,EAAasuC,WACzD,IAAIziB,EAAW7qS,KAAKinR,WAAWa,YAAYqpB,cAAcnyB,EAAa/5Q,GAEtE,GAAI4lS,EAASoF,OACXjwS,KAAKw9S,aAAa5yO,aAAa,QAASigO,EAASoF,YAC5C,CACLjwS,KAAKw9S,aAAa5yO,aAAa,cAAeigO,EAASmF,SACvD,IAAI/E,EAAUjsB,EAAaisB,QACvBD,EAAShsB,EAAagsB,OAC1BhrS,KAAKw9S,aAAa5yO,aAAa,aAAcogO,GAC7ChrS,KAAKw9S,aAAa5yO,aAAa,cAAeqgO,GAGhDjrS,KAAKw9S,aAAa5yO,aAAa,aAAco0M,EAAah+Q,GAC1D,IAGIi7T,EAHAhM,EAAUjxC,EAAahxH,GAAK,GAC5BkuK,IAAel8T,KAAKinR,WAAWa,YAAYxhL,MAC/CzF,EAAMovN,EAAQ5uT,OAEd,IAAIszT,EAAe30T,KAAK6iT,QACpB6T,EAAW,GACX+E,EAAcz7T,KAAKoQ,KAAKqrT,YACxBvH,EAAO,EACPC,EAAO,EACPe,GAAY,EACZ1E,EAAmC,KAAlBxxC,EAAamsB,GAAansB,EAAasuC,UAE5D,IAAImO,GAAgBS,GAAel9C,EAAa0iB,GA4CzC,CACL,IACItiB,EADA+8C,EAAoBn8T,KAAKk3T,UAAU71T,OAGvC,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAAG,CAS3B,GARKlB,KAAKk3T,UAAUh2T,KAClBlB,KAAKk3T,UAAUh2T,GAAK,CAClBk7T,KAAM,KACNC,UAAW,KACXC,MAAO,QAINJ,IAAeT,GAAqB,IAANv6T,EAAS,CAG1C,GAFA+6T,EAAQE,EAAoBj7T,EAAIlB,KAAKk3T,UAAUh2T,GAAGk7T,KAAOlgD,SAASggD,EAAa,IAAM,QAEjFC,GAAqBj7T,EAAG,CAM1B,GALA+6T,EAAMrxP,aAAa,iBAAkB,QACrCqxP,EAAMrxP,aAAa,kBAAmB,SACtCqxP,EAAMrxP,aAAa,oBAAqB,KACxC5qE,KAAKk3T,UAAUh2T,GAAGk7T,KAAOH,EAErBC,EAAY,CACd,IAAIG,EAAYngD,SAAS,KACzB+/C,EAAMnxP,YAAYuxP,GAClBr8T,KAAKk3T,UAAUh2T,GAAGm7T,UAAYA,EAGhCr8T,KAAKk3T,UAAUh2T,GAAGk7T,KAAOH,EACzBj8T,KAAKw9S,aAAa1yO,YAAYmxP,GAGhCA,EAAMzxP,MAAM6mG,QAAU,UAmBxB,GAhBAsjJ,EAAa51O,QAET08O,IACExL,EAAQ/uT,GAAGC,IACb+yT,GAAQ1D,EACR2D,GAAQn1C,EAAaquC,QACrB8G,GAAQe,EAAY,EAAI,EACxBA,GAAY,GAGdl1T,KAAK42T,4BAA4B53C,EAAc21C,EAAc1E,EAAQ/uT,GAAG0wG,KAAMsiN,EAAMC,GACpFD,GAAQjE,EAAQ/uT,GAAG8sJ,GAAK,EAExBkmK,GAAQ1D,GAGN0L,EAAY,CAEd,IAAIK,EAEJ,GAHAn9C,EAAWp/Q,KAAKinR,WAAWa,YAAYgpB,YAAY9xB,EAAauuC,UAAUrsT,GAAI2pS,EAASG,OAAQhrS,KAAKinR,WAAWa,YAAYqpB,cAAcnyB,EAAa/5Q,GAAG+qS,SAGtI,IAAf5wB,EAASp+Q,EACXu7T,EAAe,IAAIhF,eAAen4C,EAAShvQ,KAAMpQ,KAAKinR,WAAYjnR,UAC7D,CACL,IAAIoQ,EAAO4mT,eAEP53C,EAAShvQ,MAAQgvQ,EAAShvQ,KAAK6tQ,SACjC7tQ,EAAOpQ,KAAK+7T,eAAe38C,EAAShvQ,KAAM4uQ,EAAasuC,YAGzDiP,EAAe,IAAIxQ,gBAAgB37S,EAAMpQ,KAAKinR,WAAYjnR,MAG5D,GAAIA,KAAKk3T,UAAUh2T,GAAGo7T,MAAO,CAC3B,IAAIA,EAAQt8T,KAAKk3T,UAAUh2T,GAAGo7T,MAC9Bt8T,KAAKk3T,UAAUh2T,GAAGm7T,UAAUrxP,YAAYsxP,EAAM9e,cAC9C8e,EAAMn5C,UAGRnjR,KAAKk3T,UAAUh2T,GAAGo7T,MAAQC,EAC1BA,EAAaC,QAAS,EACtBD,EAAa53C,aAAa,GAC1B43C,EAAanzC,cACbppR,KAAKk3T,UAAUh2T,GAAGm7T,UAAUvxP,YAAYyxP,EAAa/e,cAGlC,IAAfp+B,EAASp+Q,GACXhB,KAAKk3T,UAAUh2T,GAAGm7T,UAAUzxP,aAAa,YAAa,SAAWo0M,EAAasuC,UAAY,IAAM,IAAMtuC,EAAasuC,UAAY,IAAM,UAGnImO,GACFQ,EAAMrxP,aAAa,YAAa,aAAe+pP,EAAal/L,MAAM,IAAM,IAAMk/L,EAAal/L,MAAM,IAAM,KAGzGwmM,EAAMttH,YAAcshH,EAAQ/uT,GAAGg+B,IAC/B+8R,EAAM9rH,eAAe,uCAAwC,YAAa,YAK1EsrH,GAAeQ,GACjBA,EAAMrxP,aAAa,IAAK8rP,OA3IwB,CAClD,IAAI+F,EAAWz8T,KAAK07T,cAChBgB,EAAU,QAEd,OAAQ19C,EAAan4Q,GACnB,KAAK,EACH61T,EAAU,MACV,MAEF,KAAK,EACHA,EAAU,SACV,MAEF,QACEA,EAAU,QACV,MAGJD,EAAS7xP,aAAa,cAAe8xP,GACrCD,EAAS7xP,aAAa,iBAAkB4lP,GACxC,IAAI7hH,EAAc3uM,KAAK27T,kBAAkB38C,EAAauuC,WAItD,IAHA1sN,EAAM8tG,EAAYttM,OAClB8yT,EAAOn1C,EAAaiuC,GAAKjuC,EAAaiuC,GAAG,GAAKjuC,EAAa0tC,OAAS,EAE/DxrT,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB+6T,EAAQj8T,KAAKk3T,UAAUh2T,GAAGk7T,MAAQlgD,SAAS,SAC3C+/C,EAAMttH,YAAcA,EAAYztM,GAChC+6T,EAAMrxP,aAAa,IAAK,GACxBqxP,EAAMrxP,aAAa,IAAKupP,GACxB8H,EAAMzxP,MAAM6mG,QAAU,UACtBorJ,EAAS3xP,YAAYmxP,GAEhBj8T,KAAKk3T,UAAUh2T,KAClBlB,KAAKk3T,UAAUh2T,GAAK,CAClBk7T,KAAM,KACNE,MAAO,OAIXt8T,KAAKk3T,UAAUh2T,GAAGk7T,KAAOH,EACzB9H,GAAQn1C,EAAawuC,gBAGvBxtT,KAAKw9S,aAAa1yO,YAAY2xP,GAoGhC,MAAOv7T,EAAIlB,KAAKk3T,UAAU71T,OACxBrB,KAAKk3T,UAAUh2T,GAAGk7T,KAAK5xP,MAAM6mG,QAAU,OACvCnwK,GAAK,EAGPlB,KAAKglT,cAAe,GAGtBiS,qBAAqB/2T,UAAUgzS,iBAAmB,WAIhD,GAHAlzS,KAAK2kR,aAAa3kR,KAAKs+Q,KAAKob,cAAgB15R,KAAKoQ,KAAKivQ,IACtDr/Q,KAAKumT,qBAEDvmT,KAAKglT,aAAc,CACrBhlT,KAAKglT,cAAe,EACpB,IAAI2X,EAAU38T,KAAKw9S,aAAar7B,UAChCniR,KAAK48T,KAAO,CACVl9P,IAAKi9P,EAAQz3T,EACb06D,KAAM+8P,EAAQrvJ,EACd/tG,MAAOo9P,EAAQp9P,MACfE,OAAQk9P,EAAQl9P,QAIpB,OAAOz/D,KAAK48T,MAGd3F,qBAAqB/2T,UAAU6yO,SAAW,WACxC,IAAI7xO,EAEAq7T,EADA17N,EAAM7gG,KAAKk3T,UAAU71T,OAIzB,IAFArB,KAAK05R,cAAgB15R,KAAKs+Q,KAAKob,cAE1Bx4R,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBq7T,EAAev8T,KAAKk3T,UAAUh2T,GAAGo7T,MAE7BC,IACFA,EAAa53C,aAAa3kR,KAAKs+Q,KAAKob,cAAgB15R,KAAKoQ,KAAKivQ,IAE1Dk9C,EAAaviC,OACfh6R,KAAKg6R,MAAO,KAMpBi9B,qBAAqB/2T,UAAUqmT,mBAAqB,WAClD,KAAKvmT,KAAKoQ,KAAKqrT,aAAez7T,KAAKg6R,QACjCh6R,KAAKu2T,aAAatC,YAAYj0T,KAAK67S,aAAaC,YAAa97S,KAAK8zT,oBAE9D9zT,KAAK8zT,oBAAsB9zT,KAAKu2T,aAAazC,oBAAoB,CAEnE,IAAI5yT,EACA2/F,EAFJ7gG,KAAKglT,cAAe,EAGpB,IAGI6X,EACAC,EACAP,EALA1I,EAAkB7zT,KAAKu2T,aAAa1C,gBACpC5D,EAAUjwT,KAAK67S,aAAaC,YAAY9tJ,EAM5C,IALAntD,EAAMovN,EAAQ5uT,OAKTH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACnB+uT,EAAQ/uT,GAAGC,IACd07T,EAAiBhJ,EAAgB3yT,GACjC47T,EAAW98T,KAAKk3T,UAAUh2T,GAAGk7T,KAC7BG,EAAev8T,KAAKk3T,UAAUh2T,GAAGo7T,MAE7BC,GACFA,EAAanzC,cAGXyzC,EAAe7iC,KAAK7zR,GACtB22T,EAASlyP,aAAa,YAAaiyP,EAAe12T,GAGhD02T,EAAe7iC,KAAK9zR,GACtB42T,EAASlyP,aAAa,UAAWiyP,EAAe32T,GAG9C22T,EAAe7iC,KAAKmyB,IACtB2Q,EAASlyP,aAAa,eAAgBiyP,EAAe1Q,IAGnD0Q,EAAe7iC,KAAK6W,IACtBisB,EAASlyP,aAAa,SAAUiyP,EAAehsB,IAG7CgsB,EAAe7iC,KAAKoyB,IACtB0Q,EAASlyP,aAAa,OAAQiyP,EAAezQ,OAYzDv2C,gBAAgB,CAAC0uC,eAAgB4S,eAEjCA,cAAcj3T,UAAUomT,cAAgB,WACtC,IAAI9G,EAAOtjC,SAAS,QAIpBsjC,EAAK50O,aAAa,QAAS5qE,KAAKoQ,KAAK+7S,IACrC3M,EAAK50O,aAAa,SAAU5qE,KAAKoQ,KAAKknR,IACtCkoB,EAAK50O,aAAa,OAAQ5qE,KAAKoQ,KAAKygS,IACpC7wS,KAAKw9S,aAAa1yO,YAAY00O,IAWhC4X,YAAYl3T,UAAUykR,aAAe,SAAUt2Q,GAC7CrO,KAAK49S,kBAAkBvvS,GAAK,IAG9B+oT,YAAYl3T,UAAUkpR,YAAc,aAEpCguC,YAAYl3T,UAAUsgT,eAAiB,WACrC,OAAO,MAGT4W,YAAYl3T,UAAUijR,QAAU,aAEhCi0C,YAAYl3T,UAAUgzS,iBAAmB,aAEzCkkB,YAAYl3T,UAAUgrR,KAAO,aAE7BrV,gBAAgB,CAAC+mC,YAAawC,iBAAkBiF,iBAAkBxH,cAAeua,aAIjFvhD,gBAAgB,CAACspC,cAAekY,iBAEhCA,gBAAgBn3T,UAAUihT,WAAa,SAAU/wS,GAC/C,OAAO,IAAIgnT,YAAYhnT,EAAMpQ,KAAKinR,WAAYjnR,OAGhDq3T,gBAAgBn3T,UAAUkhT,YAAc,SAAUhxS,GAChD,OAAO,IAAI27S,gBAAgB37S,EAAMpQ,KAAKinR,WAAYjnR,OAGpDq3T,gBAAgBn3T,UAAUmhT,WAAa,SAAUjxS,GAC/C,OAAO,IAAI6mT,qBAAqB7mT,EAAMpQ,KAAKinR,WAAYjnR,OAGzDq3T,gBAAgBn3T,UAAU8gT,YAAc,SAAU5wS,GAChD,OAAO,IAAIm0S,cAAcn0S,EAAMpQ,KAAKinR,WAAYjnR,OAGlDq3T,gBAAgBn3T,UAAUghT,YAAc,SAAU9wS,GAChD,OAAO,IAAI+mT,cAAc/mT,EAAMpQ,KAAKinR,WAAYjnR,OAGlDq3T,gBAAgBn3T,UAAUumR,gBAAkB,SAAU+B,GACpDxoR,KAAK03T,WAAW9sP,aAAa,QAAS,8BAElC5qE,KAAK+yS,aAAaolB,YACpBn4T,KAAK03T,WAAW9sP,aAAa,UAAW5qE,KAAK+yS,aAAaolB,aAE1Dn4T,KAAK03T,WAAW9sP,aAAa,UAAW,OAAS49M,EAAS7rL,EAAI,IAAM6rL,EAAShtK,GAG1Ex7G,KAAK+yS,aAAamlB,cACrBl4T,KAAK03T,WAAW9sP,aAAa,QAAS49M,EAAS7rL,GAC/C38F,KAAK03T,WAAW9sP,aAAa,SAAU49M,EAAShtK,GAChDx7G,KAAK03T,WAAWltP,MAAMjL,MAAQ,OAC9Bv/D,KAAK03T,WAAWltP,MAAM/K,OAAS,OAC/Bz/D,KAAK03T,WAAWltP,MAAMk+K,UAAY,qBAClC1oP,KAAK03T,WAAWltP,MAAMytP,kBAAoBj4T,KAAK+yS,aAAaklB,mBAG1Dj4T,KAAK+yS,aAAaxzO,OACpBv/D,KAAK03T,WAAW9sP,aAAa,QAAS5qE,KAAK+yS,aAAaxzO,OAGtDv/D,KAAK+yS,aAAatzO,QACpBz/D,KAAK03T,WAAW9sP,aAAa,SAAU5qE,KAAK+yS,aAAatzO,QAGvDz/D,KAAK+yS,aAAa9qJ,WACpBjoJ,KAAK03T,WAAW9sP,aAAa,QAAS5qE,KAAK+yS,aAAa9qJ,WAGtDjoJ,KAAK+yS,aAAa9sQ,IACpBjmC,KAAK03T,WAAW9sP,aAAa,KAAM5qE,KAAK+yS,aAAa9sQ,SAGnBC,IAAhClmC,KAAK+yS,aAAaqlB,WACpBp4T,KAAK03T,WAAW9sP,aAAa,YAAa5qE,KAAK+yS,aAAaqlB,WAG9Dp4T,KAAK03T,WAAW9sP,aAAa,sBAAuB5qE,KAAK+yS,aAAailB,qBAGtEh4T,KAAKoiT,cAAcjlJ,QAAQryF,YAAY9qE,KAAK03T,YAE5C,IAAIxwC,EAAOlnR,KAAKinR,WAAWC,KAC3BlnR,KAAKkiT,gBAAgB15B,EAAUtB,GAC/BlnR,KAAKinR,WAAWy6B,gBAAkB1hT,KAAK+yS,aAAa2O,gBACpD1hT,KAAKoQ,KAAOo4Q,EACZ,IAAI82B,EAAcpjC,SAAS,YACvBsjC,EAAOtjC,SAAS,QACpBsjC,EAAK50O,aAAa,QAAS49M,EAAS7rL,GACpC6iN,EAAK50O,aAAa,SAAU49M,EAAShtK,GACrCgkM,EAAK50O,aAAa,IAAK,GACvB40O,EAAK50O,aAAa,IAAK,GACvB,IAAIi/O,EAAS7uC,kBACbskC,EAAY10O,aAAa,KAAMi/O,GAC/BvK,EAAYx0O,YAAY00O,GACxBx/S,KAAKw9S,aAAa5yO,aAAa,YAAa,OAAS+qM,kBAAoB,IAAMk0C,EAAS,KACxF3iC,EAAKp8M,YAAYw0O,GACjBt/S,KAAKi9Q,OAASuL,EAASvL,OACvBj9Q,KAAKosS,SAAWp0B,iBAAiBwQ,EAASvL,OAAO57Q,SAGnDg2T,gBAAgBn3T,UAAUijR,QAAU,WAOlC,IAAIjiR,EANAlB,KAAKoiT,cAAcjlJ,UACrBn9J,KAAKoiT,cAAcjlJ,QAAQuvD,UAAY,IAGzC1sN,KAAKw9S,aAAe,KACpBx9S,KAAKinR,WAAWC,KAAO,KAEvB,IAAIrmL,EAAM7gG,KAAKi9Q,OAASj9Q,KAAKi9Q,OAAO57Q,OAAS,EAE7C,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACpBlB,KAAKosS,SAASlrS,IAChBlB,KAAKosS,SAASlrS,GAAGiiR,UAIrBnjR,KAAKosS,SAAS/qS,OAAS,EACvBrB,KAAKikO,WAAY,EACjBjkO,KAAKoiT,cAAgB,MAGvBiV,gBAAgBn3T,UAAUgpR,oBAAsB,aAEhDmuC,gBAAgBn3T,UAAU2gT,UAAY,SAAUzsO,GAC9C,IAAIg4N,EAAWpsS,KAAKosS,SAEpB,IAAIA,EAASh4N,IAAgC,KAAxBp0E,KAAKi9Q,OAAO7oM,GAAKypM,GAAtC,CAIAuuB,EAASh4N,IAAO,EAChB,IAAIomF,EAAUx6J,KAAK+gT,WAAW/gT,KAAKi9Q,OAAO7oM,IAC1Cg4N,EAASh4N,GAAOomF,EAEZqhH,yBAC0B,IAAxB77Q,KAAKi9Q,OAAO7oM,GAAKypM,IACnB79Q,KAAKinR,WAAWX,iBAAiB/B,oBAAoB/pH,GAGvDA,EAAQytH,mBAGVjoR,KAAK+8T,mBAAmBviK,EAASpmF,GAE7Bp0E,KAAKi9Q,OAAO7oM,GAAKkpM,KACdt9Q,KAAKosS,SAASh4N,EAAM,KAAiC,IAA3Bp0E,KAAKosS,SAASh4N,EAAM,GAIjDomF,EAAQ0rJ,SAAS9Z,EAASh4N,EAAM,GAAGspO,UAHnC19S,KAAK6gT,UAAUzsO,EAAM,GACrBp0E,KAAK+hT,kBAAkBvnJ,OAO7B68J,gBAAgBn3T,UAAU4gT,qBAAuB,WAC/C,MAAO9gT,KAAKgiT,gBAAgB3gT,OAAQ,CAClC,IAAIm5J,EAAUx6J,KAAKgiT,gBAAgBj8S,MAGnC,GAFAy0J,EAAQ4rJ,iBAEJ5rJ,EAAQpqJ,KAAKktQ,GAAI,CACnB,IAAIp8Q,EAAI,EACJ2/F,EAAM7gG,KAAKosS,SAAS/qS,OAExB,MAAOH,EAAI2/F,EAAK,CACd,GAAI7gG,KAAKosS,SAASlrS,KAAOs5J,EAAS,CAChCA,EAAQ0rJ,SAASlmT,KAAKosS,SAASlrS,EAAI,GAAGw8S,SACtC,MAGFx8S,GAAK,MAMbm2T,gBAAgBn3T,UAAUkpR,YAAc,SAAU/6Q,GAChD,GAAIrO,KAAK05R,gBAAkBrrR,IAAOrO,KAAKikO,UAAvC,CAgBA,IAAI/iO,EAZQ,OAARmN,EACFA,EAAMrO,KAAK05R,cAEX15R,KAAK05R,cAAgBrrR,EAKvBrO,KAAKinR,WAAWyO,SAAWrnR,EAC3BrO,KAAKinR,WAAWiT,SAAW,EAC3Bl6R,KAAKinR,WAAWX,iBAAiBzB,aAAex2Q,EAChDrO,KAAKinR,WAAW+S,MAAO,EAEvB,IAAIn5L,EAAM7gG,KAAKi9Q,OAAO57Q,OAMtB,IAJKrB,KAAKg9Q,gBACRh9Q,KAAK4gT,YAAYvyS,GAGdnN,EAAI2/F,EAAM,EAAG3/F,GAAK,EAAGA,GAAK,GACzBlB,KAAKg9Q,gBAAkBh9Q,KAAKosS,SAASlrS,KACvClB,KAAKosS,SAASlrS,GAAGyjR,aAAat2Q,EAAMrO,KAAKi9Q,OAAO/7Q,GAAGm+Q,IAIvD,GAAIr/Q,KAAKinR,WAAW+S,KAClB,IAAK94R,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,GACpBlB,KAAKg9Q,gBAAkBh9Q,KAAKosS,SAASlrS,KACvClB,KAAKosS,SAASlrS,GAAGkoR,gBAMzBiuC,gBAAgBn3T,UAAU68T,mBAAqB,SAAUviK,EAASpmF,GAChE,IAAIg8M,EAAa51H,EAAQgmJ,iBAEzB,GAAKpwB,EAAL,CAIA,IACI4sC,EADA97T,EAAI,EAGR,MAAOA,EAAIkzE,EACLp0E,KAAKosS,SAASlrS,KAA2B,IAArBlB,KAAKosS,SAASlrS,IAAelB,KAAKosS,SAASlrS,GAAGs/S,mBACpEwc,EAAch9T,KAAKosS,SAASlrS,GAAGs/S,kBAGjCt/S,GAAK,EAGH87T,EACFh9T,KAAKw9S,aAAatvG,aAAakiF,EAAY4sC,GAE3Ch9T,KAAKw9S,aAAa1yO,YAAYslN,KAIlCinC,gBAAgBn3T,UAAUgrR,KAAO,WAC/BlrR,KAAKw9S,aAAahzO,MAAM6mG,QAAU,QAGpCgmJ,gBAAgBn3T,UAAUirR,KAAO,WAC/BnrR,KAAKw9S,aAAahzO,MAAM6mG,QAAU,SAKpCwkG,gBAAgB,CAAC+mC,YAAawC,iBAAkBiF,iBAAkBxH,aAAcyH,sBAAuBgT,cAEvGA,aAAap3T,UAAUskT,YAAc,SAAUp0S,EAAM62Q,EAAY3I,GAC/Dt+Q,KAAKw1R,YACLx1R,KAAKy9S,aAAartS,EAAM62Q,EAAY3I,GACpCt+Q,KAAKqiT,cAAcjyS,EAAM62Q,EAAY3I,GACrCt+Q,KAAKkyS,iBACLlyS,KAAKmmT,gBACLnmT,KAAK4kT,sBACL5kT,KAAK6kT,0BACL7kT,KAAKgmT,8BAEDhmT,KAAKoQ,KAAKw0Q,IAAOqC,EAAWy6B,iBAC9B1hT,KAAKwhT,gBAGPxhT,KAAKkrR,QAePosC,aAAap3T,UAAUykR,aAAe,SAAUt2Q,GAK9C,GAJArO,KAAKg6R,MAAO,EACZh6R,KAAK0yS,uBAAuBrkS,GAC5BrO,KAAK49S,kBAAkBvvS,EAAKrO,KAAKmyS,WAE5BnyS,KAAKmyS,WAAcnyS,KAAKoQ,KAAKw0Q,GAAlC,CAIA,GAAK5kR,KAAKmkR,GAAG66B,aASXh/S,KAAK05R,cAAgBrrR,EAAMrO,KAAKoQ,KAAKkvQ,OATZ,CACzB,IAAImhC,EAAezgT,KAAKmkR,GAAGv+Q,EAEvB66S,IAAiBzgT,KAAKoQ,KAAKvK,KAC7B46S,EAAezgT,KAAKoQ,KAAKvK,GAAK,GAGhC7F,KAAK05R,cAAgB+mB,EAKvB,IAAIv/S,EACA2/F,EAAM7gG,KAAKosS,SAAS/qS,OAOxB,IALKrB,KAAKg9Q,gBACRh9Q,KAAK4gT,YAAY5gT,KAAK05R,eAInBx4R,EAAI2/F,EAAM,EAAG3/F,GAAK,EAAGA,GAAK,GACzBlB,KAAKg9Q,gBAAkBh9Q,KAAKosS,SAASlrS,MACvClB,KAAKosS,SAASlrS,GAAGyjR,aAAa3kR,KAAK05R,cAAgB15R,KAAKi9Q,OAAO/7Q,GAAGm+Q,IAE9Dr/Q,KAAKosS,SAASlrS,GAAG84R,OACnBh6R,KAAKg6R,MAAO,MAMpBs9B,aAAap3T,UAAUqmT,mBAAqB,WAC1C,IAAIrlT,EACA2/F,EAAM7gG,KAAKi9Q,OAAO57Q,OAEtB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,GACpBlB,KAAKg9Q,gBAAkBh9Q,KAAKosS,SAASlrS,KACvClB,KAAKosS,SAASlrS,GAAGkoR,eAKvBkuC,aAAap3T,UAAU+8T,YAAc,SAAUhwB,GAC7CjtS,KAAKosS,SAAWa,GAGlBqqB,aAAap3T,UAAUg9T,YAAc,WACnC,OAAOl9T,KAAKosS,UAGdkrB,aAAap3T,UAAUi9T,gBAAkB,WACvC,IAAIj8T,EACA2/F,EAAM7gG,KAAKi9Q,OAAO57Q,OAEtB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACpBlB,KAAKosS,SAASlrS,IAChBlB,KAAKosS,SAASlrS,GAAGiiR,WAKvBm0C,aAAap3T,UAAUijR,QAAU,WAC/BnjR,KAAKm9T,kBACLn9T,KAAK+lT,sBAePlwC,gBAAgB,CAACwhD,gBAAiBC,aAAclT,gBAAiBmT,gBAEjEA,eAAer3T,UAAU+gT,WAAa,SAAU7wS,GAC9C,OAAO,IAAImnT,eAAennT,EAAMpQ,KAAKinR,WAAYjnR,OAqEnD61Q,gBAAgB,CAACwhD,iBAAkBI,aAEnCA,YAAYv3T,UAAU+gT,WAAa,SAAU7wS,GAC3C,OAAO,IAAImnT,eAAennT,EAAMpQ,KAAKinR,WAAYjnR,OAmBnDs4T,cAAcp4T,UAAUk9T,UAAY,WAClC,IAAIC,EAA2B,EAAfr9T,KAAKiwR,QACjBqtC,EAAiBt9T,KAAK24T,QAC1B34T,KAAK24T,QAAUjhD,iBAAiB,UAAW2lD,GAC3Cr9T,KAAK24T,QAAQhwS,IAAI20S,GACjB,IAAIp8T,EAAI,EAER,IAAKA,EAAIlB,KAAKiwR,QAAS/uR,EAAIm8T,EAAWn8T,GAAK,EACzClB,KAAKu4T,MAAMr3T,GAAKw2Q,iBAAiB,UAAW,IAG9C13Q,KAAKiwR,QAAUotC,GAGjB/E,cAAcp4T,UAAU6+E,MAAQ,WAC9B/+E,KAAKw4T,QAAU,EACfx4T,KAAKy4T,IAAI15O,QACT/+E,KAAK04T,GAAK,GASZE,sBAAsB14T,UAAY,CAChCq5T,qBAAsB,SAA8B51D,GAClD,IAAIziQ,EACA2/F,EAAM8iK,EAAWtiQ,OACjBua,EAAM,IAEV,IAAK1a,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB0a,GAAO+nP,EAAWziQ,GAAGwnP,UAAU9sO,IAAM,IAGvC,IAAI8yK,EAAW1uL,KAAKuuL,UAAU3yK,GAY9B,OAVK8yK,IACHA,EAAW,CACTi1E,WAAY,GAAGn9P,OAAOm9P,GACtBkvC,eAAgB,IAAIpS,OACpBzG,MAAM,GAERh6R,KAAKuuL,UAAU3yK,GAAO8yK,EACtB1uL,KAAK64T,aAAa7yT,KAAK0oL,IAGlBA,GAET6uI,gBAAiB,SAAyB7uI,EAAUq0H,GAClD,IAcMttL,EAdFv0H,EAAI,EACJ2/F,EAAM6tF,EAASi1E,WAAWtiQ,OAC1B24R,EAAO+oB,EAEX,MAAO7hT,EAAI2/F,IAAQkiN,EAAc,CAC/B,GAAIr0H,EAASi1E,WAAWziQ,GAAGwnP,UAAU6kD,OAAOvT,KAAM,CAChDA,GAAO,EACP,MAGF94R,GAAK,EAGP,GAAI84R,EAIF,IAFAtrG,EAASmkH,eAAe9zN,QAEnB79E,EAAI2/F,EAAM,EAAG3/F,GAAK,EAAGA,GAAK,EAC7Bu0H,EAAQi5D,EAASi1E,WAAWziQ,GAAGwnP,UAAU6kD,OAAO3nS,EAAE6vH,MAClDi5D,EAASmkH,eAAenqD,UAAUjzH,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,IAAKA,EAAM,KAIvMi5D,EAASsrG,KAAOA,GAElBwjC,iBAAkB,SAA0Bza,GAC1C,IAAI7hT,EACA2/F,EAAM7gG,KAAK64T,aAAax3T,OAE5B,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKu9T,gBAAgBv9T,KAAK64T,aAAa33T,GAAI6hT,IAG/C0a,UAAW,WAET,OADAz9T,KAAK84T,qBAAuB,EACrB,IAAM94T,KAAK84T,sBAMtBC,UAAU74T,UAAUkpR,YAAc,aA0BlC4vC,cAAc94T,UAAUkpR,YAAc,WACpC,GAAKppR,KAAKi5T,SAAV,CAIA,IAEI/3T,EAEAy8Q,EACAgnB,EACAv0R,EANAs4O,EAAY1oP,KAAKw6J,QAAQq4I,eAAerJ,IACxCn2L,EAAMrzG,KAAKw6J,QAAQkjK,cAEnB78N,EAAM7gG,KAAK09Q,gBAAgBr8Q,OAM/B,IAFAgyG,EAAIsqN,YAECz8T,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB,GAAqC,MAAjClB,KAAK09Q,gBAAgBx8Q,GAAGs1K,KAAc,CAYxC,IAAI3vK,EAXA7G,KAAK09Q,gBAAgBx8Q,GAAG0qS,MAC1Bv4L,EAAIuqN,OAAO,EAAG,GACdvqN,EAAIwqN,OAAO79T,KAAKw6J,QAAQysH,WAAWiyB,SAASv8M,EAAG,GAC/C0W,EAAIwqN,OAAO79T,KAAKw6J,QAAQysH,WAAWiyB,SAASv8M,EAAG38F,KAAKw6J,QAAQysH,WAAWiyB,SAAS19L,GAChFnI,EAAIwqN,OAAO,EAAG79T,KAAKw6J,QAAQysH,WAAWiyB,SAAS19L,GAC/CnI,EAAIwqN,OAAO,EAAG,IAGhBztT,EAAOpQ,KAAK4zS,SAAS1yS,GAAG0E,EACxB+3Q,EAAKj1B,EAAU+7C,kBAAkBr0R,EAAKxK,EAAE,GAAG,GAAIwK,EAAKxK,EAAE,GAAG,GAAI,GAC7DytG,EAAIuqN,OAAOjgD,EAAG,GAAIA,EAAG,IAErB,IAAIP,EAAOhtQ,EAAK6/Q,QAEhB,IAAKppR,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzB89R,EAAMj8C,EAAUm8C,oBAAoBz0R,EAAKlK,EAAEW,EAAI,GAAIuJ,EAAKlP,EAAE2F,GAAIuJ,EAAKxK,EAAEiB,IACrEwsG,EAAIyqN,cAAcn5B,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAGhEA,EAAMj8C,EAAUm8C,oBAAoBz0R,EAAKlK,EAAEW,EAAI,GAAIuJ,EAAKlP,EAAE,GAAIkP,EAAKxK,EAAE,IACrEytG,EAAIyqN,cAAcn5B,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAIlE3kS,KAAKw6J,QAAQysH,WAAWnB,SAASi4C,MAAK,GACtC1qN,EAAI2qN,SAGNhF,cAAc94T,UAAU4iT,gBAAkBzD,YAAYn/S,UAAU4iT,gBAEhEkW,cAAc94T,UAAUijR,QAAU,WAChCnjR,KAAKw6J,QAAU,MAKjB0+J,cAAch5T,UAAY,CACxB+9T,eAAgB,aAChBrZ,oBAAqB,aACrBC,wBAAyB,WACvB7kT,KAAK09T,cAAgB19T,KAAKinR,WAAWy2C,cACrC19T,KAAKimT,yBAA2B,IAAI8S,UAAU/4T,OAEhDsmT,cAAe,aACflJ,aAAc,WACZ,IAAIn2B,EAAajnR,KAAKinR,WAEtB,GAAIA,EAAWi3C,YAAcl+T,KAAKoQ,KAAKktS,GAAI,CACzCr2B,EAAWi3C,UAAYl+T,KAAKoQ,KAAKktS,GACjC,IAAID,EAAiBtB,aAAa/7S,KAAKoQ,KAAKktS,IAC5Cr2B,EAAWy2C,cAAcS,yBAA2B9gB,IAGxD2I,2BAA4B,WAC1BhmT,KAAK0zS,YAAc,IAAIslB,cAAch5T,KAAKoQ,KAAMpQ,OAElDo+T,YAAa,WACNp+T,KAAKoyS,QAAYpyS,KAAKmyS,YAAanyS,KAAKqyS,gBAC3CryS,KAAKoyS,QAAS,IAGlBisB,YAAa,WACPr+T,KAAKmyS,YAAcnyS,KAAKqyS,gBAC1BryS,KAAKoyS,QAAS,EACdpyS,KAAKq6R,eAAgB,EACrBr6R,KAAK0zS,YAAYrZ,eAAgB,IAGrCjR,YAAa,WACX,IAAIppR,KAAKoyS,SAAUpyS,KAAKoQ,KAAKs1S,GAA7B,CAIA1lT,KAAKyiT,kBACLziT,KAAKizS,mBACLjzS,KAAKo9S,eACL,IAAIkhB,EAAkC,IAAjBt+T,KAAKoQ,KAAKytQ,GAC/B79Q,KAAKinR,WAAWnB,SAASi4C,KAAKO,GAC9Bt+T,KAAKinR,WAAWnB,SAASy4C,aAAav+T,KAAK6yS,eAAerJ,IAAI/zK,OAC9Dz1H,KAAKinR,WAAWnB,SAAS04C,WAAWx+T,KAAK6yS,eAAeC,MAAM5sS,EAAEN,GAChE5F,KAAKumT,qBACLvmT,KAAKinR,WAAWnB,SAAS24C,QAAQH,GAE7Bt+T,KAAK0zS,YAAYulB,UACnBj5T,KAAKinR,WAAWnB,SAAS24C,SAAQ,GAG/Bz+T,KAAKq6R,gBACPr6R,KAAKq6R,eAAgB,KAGzBlX,QAAS,WACPnjR,KAAK09T,cAAgB,KACrB19T,KAAKoQ,KAAO,KACZpQ,KAAKinR,WAAa,KAClBjnR,KAAK0zS,YAAYvwB,WAEnB0/B,QAAS,IAAIpiB,QAEfy4B,cAAch5T,UAAUgrR,KAAOguC,cAAch5T,UAAUk+T,YACvDlF,cAAch5T,UAAUirR,KAAO+tC,cAAch5T,UAAUm+T,YAgCvDlF,YAAYj5T,UAAUgnS,cAAgBogB,aAAapnT,UAAUgnS,cAc7DrxB,gBAAgB,CAAC+mC,YAAawC,iBAAkB8Z,cAAevU,cAAeN,iBAAkBxH,aAAc5K,mBAAoBwnB,gBAClIA,eAAev5T,UAAUskT,YAAcF,qBAAqBpkT,UAAUskT,YACtEiV,eAAev5T,UAAUw+T,gBAAkB,CACzCnpB,QAAS,EACTgN,QAAQ,GAEVkX,eAAev5T,UAAUy+T,aAAe,GAExClF,eAAev5T,UAAUomT,cAAgB,WACvCtmT,KAAK8tT,aAAa9tT,KAAKk9S,WAAYl9S,KAAKm9S,UAAWn9S,KAAKgpT,cAAc,EAAM,KAG9EyQ,eAAev5T,UAAUiuT,mBAAqB,SAAU/9S,EAAMuzP,GAC5D,IAAI6nD,EAAY,CACdp7S,KAAMA,EACN8c,KAAM9c,EAAKytQ,GACX+gD,cAAe5+T,KAAKo5T,kBAAkBG,qBAAqB51D,GAC3DA,WAAY,GACZyoC,SAAU,GACVhsO,QAAoB,IAAZhwD,EAAKs1S,IAEX0I,EAAc,GAsBlB,GApBgB,OAAZh+S,EAAKytQ,IAA2B,OAAZztQ,EAAKytQ,IAC3BuwC,EAAYn6O,EAAIshN,gBAAgB/zL,QAAQxhG,KAAMoQ,EAAK6jE,EAAG,EAAG,IAAKj0E,MAEzDouT,EAAYn6O,EAAEttE,IACjB6kT,EAAUqT,GAAK,OAASnmD,QAAQ01C,EAAYn6O,EAAEruE,EAAE,IAAM,IAAM8yQ,QAAQ01C,EAAYn6O,EAAEruE,EAAE,IAAM,IAAM8yQ,QAAQ01C,EAAYn6O,EAAEruE,EAAE,IAAM,MAE3G,OAAZwK,EAAKytQ,IAA2B,OAAZztQ,EAAKytQ,KAClCuwC,EAAYntT,EAAIs0R,gBAAgB/zL,QAAQxhG,KAAMoQ,EAAKnP,EAAG,EAAG,KAAMjB,MAC/DouT,EAAY1pT,EAAI6wR,gBAAgB/zL,QAAQxhG,KAAMoQ,EAAK1L,EAAG,EAAG,KAAM1E,MAC/DouT,EAAY5yM,EAAI+5K,gBAAgB/zL,QAAQxhG,KAAMoQ,EAAKorG,GAAK,CACtD70G,EAAG,GACF,EAAG,IAAM3G,MACZouT,EAAYxnT,EAAI2uR,gBAAgB/zL,QAAQxhG,KAAMoQ,EAAKxJ,GAAK,CACtDD,EAAG,GACF,EAAGwyQ,UAAWn5Q,MACjBouT,EAAYjpT,EAAI,IAAIkjT,iBAAiBroT,KAAMoQ,EAAKjL,EAAGnF,OAGrDouT,EAAYloT,EAAIqvR,gBAAgB/zL,QAAQxhG,KAAMoQ,EAAKlK,EAAG,EAAG,IAAMlG,MAE/C,OAAZoQ,EAAKytQ,IAA2B,OAAZztQ,EAAKytQ,IAe3B,GAdA2tC,EAAUzB,GAAK3C,YAAYh3S,EAAK25S,IAAM,GACtCyB,EAAUxB,GAAK3C,aAAaj3S,EAAK45S,IAAM,GAExB,GAAX55S,EAAK45S,KAEPwB,EAAUvB,GAAK75S,EAAK65S,IAGtBmE,EAAYzxN,EAAI44L,gBAAgB/zL,QAAQxhG,KAAMoQ,EAAKusF,EAAG,EAAG,KAAM38F,MAE1DouT,EAAYzxN,EAAEh2F,IACjB6kT,EAAUsT,GAAK1Q,EAAYzxN,EAAE/2F,GAG3BwK,EAAKzQ,EAAG,CACV,IAAIA,EAAI,IAAIkoT,aAAa7nT,KAAMoQ,EAAKzQ,EAAG,SAAUK,MACjDouT,EAAYzuT,EAAIA,EAEXyuT,EAAYzuT,EAAEgH,IACjB6kT,EAAUuT,GAAK3Q,EAAYzuT,EAAEooT,UAC7ByD,EAAU,MAAQ4C,EAAYzuT,EAAEqoT,WAAW,UAI/CwD,EAAUplT,EAAe,IAAXgK,EAAKhK,EAAU,UAAY,UAK3C,OAFApG,KAAKgsT,WAAWhmT,KAAKwlT,GACrB4C,EAAY5jP,MAAQghP,EACb4C,GAGTqL,eAAev5T,UAAUquT,mBAAqB,WAC5C,IAAIH,EAAc,CAChBt3J,GAAI,GACJkyJ,aAAc,IAEhB,OAAOoF,GAGTqL,eAAev5T,UAAUsuT,uBAAyB,SAAUp+S,GAC1D,IAAIg+S,EAAc,CAChB1lE,UAAW,CACT6sD,QAAS,EACTgN,QAAQ,EACR3mS,IAAK5b,KAAKo5T,kBAAkBqE,YAC5B53T,GAAI0vR,gBAAgB/zL,QAAQxhG,KAAMoQ,EAAKlK,EAAG,EAAG,IAAMlG,MACnDutS,OAAQlE,yBAAyBoB,qBAAqBzqS,KAAMoQ,EAAMpQ,QAGtE,OAAOouT,GAGTqL,eAAev5T,UAAUwuT,mBAAqB,SAAUt+S,GACtD,IAAIg+S,EAAc,IAAI+K,YAAYn5T,KAAMoQ,EAAMpQ,KAAKgsT,WAAYhsT,KAAKo5T,mBAGpE,OAFAp5T,KAAKi+Q,OAAOj4Q,KAAKooT,GACjBpuT,KAAK2mT,oBAAoByH,GAClBA,GAGTqL,eAAev5T,UAAU8sS,aAAe,WAEtC,IAAI9rS,EADJlB,KAAKq6R,eAAgB,EAErB,IAAIx5L,EAAM7gG,KAAKm9S,UAAU97S,OAEzB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKgpT,aAAa9nT,GAAKlB,KAAKm9S,UAAUj8S,GAMxC,IAHAlB,KAAK8tT,aAAa9tT,KAAKk9S,WAAYl9S,KAAKm9S,UAAWn9S,KAAKgpT,cAAc,EAAM,IAC5EnoN,EAAM7gG,KAAKk7R,kBAAkB75R,OAExBH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKk7R,kBAAkBh6R,GAAG6xO,WAG5B/yO,KAAK+mT,kBACL/mT,KAAKo5T,kBAAkBoE,iBAAiBx9T,KAAKq6R,gBAG/Co/B,eAAev5T,UAAU8+T,wBAA0B,SAAUt2E,GAC3D,IAAIxnP,EACA2/F,EAAM7gG,KAAKgsT,WAAW3qT,OAE1B,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACnBlB,KAAKgsT,WAAW9qT,GAAGk/D,QACtBpgE,KAAKgsT,WAAW9qT,GAAGyiQ,WAAW39P,KAAK0iP,IAKzC+wE,eAAev5T,UAAU++T,6BAA+B,WACtD,IAAI/9T,EACA2/F,EAAM7gG,KAAKgsT,WAAW3qT,OAE1B,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACnBlB,KAAKgsT,WAAW9qT,GAAGk/D,QACtBpgE,KAAKgsT,WAAW9qT,GAAGyiQ,WAAW59P,OAKpC0zT,eAAev5T,UAAUg/T,YAAc,SAAUn0B,GAC/C,IAAI7pS,EACA2/F,EAAMkqM,EAAO1pS,OAEjB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB6pS,EAAO7pS,GAAGk/D,QAAS,GAIvBq5P,eAAev5T,UAAU4tT,aAAe,SAAUhyS,EAAKqhS,EAAW6L,EAAcmW,EAAcx7D,GAC5F,IAAIziQ,EAEA2F,EACAu2Q,EAGA4xC,EACAD,EACAD,EAPAjuN,EAAM/kF,EAAIza,OAAS,EAGnB4tT,EAAY,GACZC,EAAe,GAIfkQ,EAAgB,GAAG54T,OAAOm9P,GAE9B,IAAKziQ,EAAI2/F,EAAK3/F,GAAK,EAAGA,GAAK,EAAG,CAS5B,GARA8tT,EAAehvT,KAAKinT,uBAAuBnrS,EAAI5a,IAE1C8tT,EAGH7R,EAAUj8S,GAAK8nT,EAAagG,EAAe,GAF3ClzS,EAAI5a,GAAGm+T,cAAgBF,EAKP,OAAdrjT,EAAI5a,GAAG28Q,IAA6B,OAAd/hQ,EAAI5a,GAAG28Q,IAA6B,OAAd/hQ,EAAI5a,GAAG28Q,IAA6B,OAAd/hQ,EAAI5a,GAAG28Q,GACtEmxC,EAGH7R,EAAUj8S,GAAGspE,MAAMpK,QAAS,EAF5B+8O,EAAUj8S,GAAKlB,KAAKmuT,mBAAmBryS,EAAI5a,GAAIk+T,GAKjDnQ,EAAUjpT,KAAKm3S,EAAUj8S,GAAGspE,YACvB,GAAkB,OAAd1uD,EAAI5a,GAAG28Q,GAAa,CAC7B,GAAKmxC,EAKH,IAFA5xC,EAAO+/B,EAAUj8S,GAAG41J,GAAGz1J,OAElBwF,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzBs2S,EAAUj8S,GAAG8nT,aAAaniT,GAAKs2S,EAAUj8S,GAAG41J,GAAGjwJ,QALjDs2S,EAAUj8S,GAAKlB,KAAKuuT,mBAAmBzyS,EAAI5a,IAS7ClB,KAAK8tT,aAAahyS,EAAI5a,GAAG41J,GAAIqmJ,EAAUj8S,GAAG41J,GAAIqmJ,EAAUj8S,GAAG8nT,aAAcmW,EAAcC,OAChE,OAAdtjT,EAAI5a,GAAG28Q,IACXmxC,IACHF,EAAmB9uT,KAAKwuT,uBAAuB1yS,EAAI5a,IACnDi8S,EAAUj8S,GAAK4tT,GAGjBsQ,EAAcp5T,KAAKm3S,EAAUj8S,IAC7BlB,KAAKg/T,wBAAwB7hB,EAAUj8S,KAChB,OAAd4a,EAAI5a,GAAG28Q,IAA6B,OAAd/hQ,EAAI5a,GAAG28Q,IAA6B,OAAd/hQ,EAAI5a,GAAG28Q,IAA6B,OAAd/hQ,EAAI5a,GAAG28Q,GAC7EmxC,IACH7R,EAAUj8S,GAAKlB,KAAK0uT,mBAAmB5yS,EAAI5a,KAEtB,OAAd4a,EAAI5a,GAAG28Q,IAA6B,OAAd/hQ,EAAI5a,GAAG28Q,IAA6B,OAAd/hQ,EAAI5a,GAAG28Q,IACvDmxC,GAMHD,EAAW5R,EAAUj8S,GACrB6tT,EAAS3uP,QAAS,IANlB2uP,EAAWtoB,eAAeG,YAAY9qR,EAAI5a,GAAG28Q,IAC7CkxC,EAASxxL,KAAKv9H,KAAM8b,EAAI5a,IACxBi8S,EAAUj8S,GAAK6tT,EACf/uT,KAAK4mT,eAAe5gT,KAAK+oT,IAM3BG,EAAalpT,KAAK+oT,IACK,OAAdjzS,EAAI5a,GAAG28Q,KACXmxC,GAOHD,EAAW5R,EAAUj8S,GACrB6tT,EAAS3uP,QAAS,IAPlB2uP,EAAWtoB,eAAeG,YAAY9qR,EAAI5a,GAAG28Q,IAC7Cs/B,EAAUj8S,GAAK6tT,EACfA,EAASxxL,KAAKv9H,KAAM8b,EAAK5a,EAAGi8S,GAC5Bn9S,KAAK4mT,eAAe5gT,KAAK+oT,GACzBoQ,GAAe,GAMjBjQ,EAAalpT,KAAK+oT,IAGpB/uT,KAAKmnT,oBAAoBrrS,EAAI5a,GAAIA,EAAI,GAOvC,IAJAlB,KAAKi/T,+BACLj/T,KAAKk/T,YAAYjQ,GACjBpuN,EAAMquN,EAAa7tT,OAEdH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBguT,EAAahuT,GAAGk/D,QAAS,GAI7Bq5P,eAAev5T,UAAUqmT,mBAAqB,WAC5CvmT,KAAK0+T,gBAAgBnpB,QAAU,EAC/Bv1S,KAAK0+T,gBAAgBnc,QAAS,EAC9BviT,KAAK+mT,kBACL/mT,KAAKo5T,kBAAkBoE,iBAAiBx9T,KAAKq6R,eAC7Cr6R,KAAKmvT,YAAYnvT,KAAK0+T,gBAAiB1+T,KAAKk9S,WAAYl9S,KAAKm9S,WAAW,IAG1Esc,eAAev5T,UAAUo/T,qBAAuB,SAAUC,EAAiBC,IACrED,EAAgBhd,QAAUid,EAAe35T,GAAGm0R,MAAQh6R,KAAKq6R,iBAC3DmlC,EAAejqB,QAAUgqB,EAAgBhqB,QACzCiqB,EAAejqB,SAAWiqB,EAAe35T,GAAGD,EAC5C45T,EAAejd,QAAS,IAI5BkX,eAAev5T,UAAUu/T,UAAY,WACnC,IAAIv+T,EAEA2F,EACAu2Q,EACAz2Q,EACA02Q,EACA4vB,EACAyyB,EAGAxyS,EACAyyS,EAVA9+N,EAAM7gG,KAAKgsT,WAAW3qT,OAOtBykR,EAAW9lR,KAAKinR,WAAWnB,SAC3BzyK,EAAMrzG,KAAKinR,WAAWy2C,cAI1B,IAAKx8T,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAQxB,GAPAy+T,EAAe3/T,KAAKgsT,WAAW9qT,GAC/BgsB,EAAOyyS,EAAazyS,MAMJ,OAATA,GAA0B,OAATA,GAAsC,IAApByyS,EAAab,KAAaa,EAAavvT,KAAKivT,eAAuC,IAAtBM,EAAaC,MAAqD,IAAvC5/T,KAAKinR,WAAWozC,mBAA2B,CAuB3K,IAtBAv0C,EAASi4C,OACT9wB,EAAQ0yB,EAAavzB,SAER,OAATl/Q,GAA0B,OAATA,GACnBmmF,EAAIwsN,YAAuB,OAAT3yS,EAAgByyS,EAAad,GAAKc,EAAaG,IACjEzsN,EAAIi9M,UAAYqP,EAAab,GAC7BzrN,EAAI0sN,QAAUJ,EAAa5V,GAC3B12M,EAAI2sN,SAAWL,EAAa3V,GAC5B32M,EAAI4sN,WAAaN,EAAa1V,IAAM,GAEpC52M,EAAI6tK,UAAqB,OAATh0P,EAAgByyS,EAAad,GAAKc,EAAaG,IAGjEh6C,EAAS04C,WAAWmB,EAAaC,MAEpB,OAAT1yS,GAA0B,OAATA,GACnBmmF,EAAIsqN,YAGN73C,EAASy4C,aAAaoB,EAAaf,cAAc/rB,eAAep9K,OAChE2nJ,EAAO6vB,EAAM5rS,OAERwF,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EAAG,CAa5B,IAZa,OAATqmB,GAA0B,OAATA,IACnBmmF,EAAIsqN,YAEAgC,EAAaZ,KACf1rN,EAAI6sN,YAAYP,EAAaZ,IAC7B1rN,EAAI8sN,eAAiBR,EAAa,QAItCD,EAAQzyB,EAAMpmS,GAAG2yT,QACjBn8C,EAAOqiD,EAAMr+T,OAERsF,EAAI,EAAGA,EAAI02Q,EAAM12Q,GAAK,EACN,MAAf+4T,EAAM/4T,GAAG3F,EACXqyG,EAAIuqN,OAAO8B,EAAM/4T,GAAG9G,EAAE,GAAI6/T,EAAM/4T,GAAG9G,EAAE,IACb,MAAf6/T,EAAM/4T,GAAG3F,EAClBqyG,EAAIyqN,cAAc4B,EAAM/4T,GAAGg+R,IAAI,GAAI+6B,EAAM/4T,GAAGg+R,IAAI,GAAI+6B,EAAM/4T,GAAGg+R,IAAI,GAAI+6B,EAAM/4T,GAAGg+R,IAAI,GAAI+6B,EAAM/4T,GAAGg+R,IAAI,GAAI+6B,EAAM/4T,GAAGg+R,IAAI,IAEpHtxL,EAAI+sN,YAIK,OAATlzS,GAA0B,OAATA,IACnBmmF,EAAIsmN,SAEAgG,EAAaZ,IACf1rN,EAAI6sN,YAAYlgU,KAAK2+T,eAKd,OAATzxS,GAA0B,OAATA,GACnBmmF,EAAI2oE,KAAK2jJ,EAAav5T,GAGxB0/Q,EAAS24C,YAKfhF,eAAev5T,UAAUivT,YAAc,SAAUoQ,EAAiBvwN,EAAO5+F,EAAMiwT,GAC7E,IAAIn/T,EAEAs+T,EADA3+N,EAAMmO,EAAM3tG,OAAS,EAIzB,IAFAm+T,EAAiBD,EAEZr+T,EAAI2/F,EAAK3/F,GAAK,EAAGA,GAAK,EACL,OAAhB8tG,EAAM9tG,GAAG28Q,IACX2hD,EAAiBpvT,EAAKlP,GAAGwnP,UACzB1oP,KAAKs/T,qBAAqBC,EAAiBC,IAClB,OAAhBxwN,EAAM9tG,GAAG28Q,IAA+B,OAAhB7uK,EAAM9tG,GAAG28Q,IAA+B,OAAhB7uK,EAAM9tG,GAAG28Q,IAA+B,OAAhB7uK,EAAM9tG,GAAG28Q,GAC1F79Q,KAAK+qT,WAAW/7M,EAAM9tG,GAAIkP,EAAKlP,IACN,OAAhB8tG,EAAM9tG,GAAG28Q,GAClB79Q,KAAK2qT,WAAW37M,EAAM9tG,GAAIkP,EAAKlP,GAAIs+T,GACV,OAAhBxwN,EAAM9tG,GAAG28Q,GAClB79Q,KAAK8qT,aAAa97M,EAAM9tG,GAAIkP,EAAKlP,GAAIs+T,GACZ,OAAhBxwN,EAAM9tG,GAAG28Q,IAA+B,OAAhB7uK,EAAM9tG,GAAG28Q,GAC1C79Q,KAAKsgU,mBAAmBtxN,EAAM9tG,GAAIkP,EAAKlP,GAAIs+T,GAClB,OAAhBxwN,EAAM9tG,GAAG28Q,GAClB79Q,KAAKmvT,YAAYqQ,EAAgBxwN,EAAM9tG,GAAG41J,GAAI1mJ,EAAKlP,GAAG41J,IAC7C9nD,EAAM9tG,GAAG28Q,GAIlBwiD,GACFrgU,KAAKy/T,aAIThG,eAAev5T,UAAUqgU,kBAAoB,SAAUjH,EAAa58B,GAClE,GAAI18R,KAAKq6R,eAAiBqC,EAAM1C,MAAQs/B,EAAY31D,WAAWq2B,KAAM,CACnE,IAEI94R,EACA2/F,EACAh6F,EAJA25T,EAAalH,EAAYE,QACzBjoE,EAAQmrC,EAAMnrC,MAId6rB,EAAO7rB,EAAM0+B,QACjBuwC,EAAWn/T,OAAS,EACpB,IAAIo/T,EAAoBnH,EAAY31D,WAAWkvC,eAE/C,IAAKhsS,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EAAG,CAC5B,IAAIo8S,EAAY1xD,EAAM0sB,OAAOp3Q,GAE7B,GAAIo8S,GAAaA,EAAUr9S,EAAG,CAG5B,IAFAi7F,EAAMoiN,EAAUhzB,QAEX/uR,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACd,IAANA,GACFs/T,EAAWx6T,KAAK,CACdhF,EAAG,IACHnB,EAAG4gU,EAAkBh8B,kBAAkBwe,EAAUr9S,EAAE,GAAG,GAAIq9S,EAAUr9S,EAAE,GAAG,GAAI,KAIjF46T,EAAWx6T,KAAK,CACdhF,EAAG,IACH2jS,IAAK87B,EAAkB57B,oBAAoBoe,EAAU/8S,EAAEhF,EAAI,GAAI+hT,EAAU/hT,EAAEA,GAAI+hT,EAAUr9S,EAAE1E,MAInF,IAAR2/F,GACF2/N,EAAWx6T,KAAK,CACdhF,EAAG,IACHnB,EAAG4gU,EAAkBh8B,kBAAkBwe,EAAUr9S,EAAE,GAAG,GAAIq9S,EAAUr9S,EAAE,GAAG,GAAI,KAI7Eq9S,EAAUhvO,GAAK4sB,IACjB2/N,EAAWx6T,KAAK,CACdhF,EAAG,IACH2jS,IAAK87B,EAAkB57B,oBAAoBoe,EAAU/8S,EAAEhF,EAAI,GAAI+hT,EAAU/hT,EAAE,GAAI+hT,EAAUr9S,EAAE,MAE7F46T,EAAWx6T,KAAK,CACdhF,EAAG,QAMXs4T,EAAYE,QAAUgH,IAI1B/G,eAAev5T,UAAU6qT,WAAa,SAAUrrC,EAAUyrC,GACxD,IAAoB,IAAhBzrC,EAASgmC,IAAehmC,EAAS2/C,cAAe,CAClD,IAAIn+T,EACA2/F,EAAMsqN,EAASkO,aAAah4T,OAEhC,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKugU,kBAAkBpV,EAASkO,aAAan4T,GAAIiqT,EAAS7zB,MAKhEmiC,eAAev5T,UAAUyqT,WAAa,SAAUO,EAAWC,EAAUqU,GACnE,IAAIhU,EAAYL,EAAS3gP,OAErB2gP,EAASl3O,EAAE+lN,MAAQh6R,KAAKq6R,iBAC1BmxB,EAAUqT,GAAK,OAASnmD,QAAQyyC,EAASl3O,EAAEruE,EAAE,IAAM,IAAM8yQ,QAAQyyC,EAASl3O,EAAEruE,EAAE,IAAM,IAAM8yQ,QAAQyyC,EAASl3O,EAAEruE,EAAE,IAAM,MAGnHulT,EAASjlT,EAAE8zR,MAAQwlC,EAAejd,QAAUviT,KAAKq6R,iBACnDmxB,EAAUoU,KAAOzU,EAASjlT,EAAEN,EAAI45T,EAAejqB,UAInDkkB,eAAev5T,UAAUogU,mBAAqB,SAAUpV,EAAWC,EAAUqU,GAC3E,IACIM,EADAtU,EAAYL,EAAS3gP,MAGzB,IAAKghP,EAAUsU,KAAO3U,EAAShmT,EAAE60R,MAAQmxB,EAASlqT,EAAE+4R,MAAQmxB,EAASzmT,EAAEs1R,MAAwB,IAAhBkxB,EAAUlqT,IAAYmqT,EAAS3vM,EAAEw+K,MAAQmxB,EAASvkT,EAAEozR,MAAO,CACxI,IAuBI94R,EAvBAmyG,EAAMrzG,KAAKinR,WAAWy2C,cACtB5rC,EAAMq5B,EAASlqT,EAAE2E,EACjBmsR,EAAMo5B,EAASzmT,EAAEkB,EAErB,GAAoB,IAAhBslT,EAAUlqT,EACZ8+T,EAAMzsN,EAAIqtN,qBAAqB5uC,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,QACtD,CACL,IAAIkN,EAAMhwR,KAAKwpQ,KAAKxpQ,KAAKmvH,IAAI0zJ,EAAI,GAAKC,EAAI,GAAI,GAAK9iR,KAAKmvH,IAAI0zJ,EAAI,GAAKC,EAAI,GAAI,IACzE+5B,EAAM78S,KAAKgqR,MAAMlH,EAAI,GAAKD,EAAI,GAAIC,EAAI,GAAKD,EAAI,IAC/C6B,EAAUw3B,EAAS3vM,EAAE51G,EAErB+tR,GAAW,EACbA,EAAU,IACDA,IAAY,IACrBA,GAAW,KAGb,IAAIlE,EAAOwP,EAAMtL,EACbrmH,EAAIr+J,KAAKoqR,IAAIyyB,EAAMX,EAASvkT,EAAEhB,GAAK6pR,EAAOqC,EAAI,GAC9C5sR,EAAI+J,KAAKypR,IAAIozB,EAAMX,EAASvkT,EAAEhB,GAAK6pR,EAAOqC,EAAI,GAClDguC,EAAMzsN,EAAIstN,qBAAqBrzJ,EAAGpoK,EAAG,EAAG4sR,EAAI,GAAIA,EAAI,GAAImN,GAI1D,IAAIp+L,EAAMqqN,EAAU/lT,EAAEtF,EAClB+rT,EAAUT,EAAShmT,EAAE8uE,EACrBshO,EAAU,EAEd,IAAKr0S,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACpBiqT,EAAShmT,EAAEwjT,aAAewC,EAAShmT,EAAEsjT,eACvClT,EAAU4V,EAAShmT,EAAEe,EAAM,EAAJhF,EAAQ,IAGjC4+T,EAAIc,aAAahV,EAAY,EAAJ1qT,GAAS,IAAK,QAAU0qT,EAAY,EAAJ1qT,EAAQ,GAAK,IAAM0qT,EAAY,EAAJ1qT,EAAQ,GAAK,IAAM0qT,EAAY,EAAJ1qT,EAAQ,GAAK,IAAMq0S,EAAU,KAG9IiW,EAAUsU,IAAMA,EAGlBtU,EAAUoU,KAAOzU,EAASjlT,EAAEN,EAAI45T,EAAejqB,SAGjDkkB,eAAev5T,UAAU4qT,aAAe,SAAUI,EAAWC,EAAUqU,GACrE,IAAIhU,EAAYL,EAAS3gP,MACrB7qE,EAAIwrT,EAASxrT,EAEbA,IAAMA,EAAEq6R,MAAQh6R,KAAKq6R,iBACvBmxB,EAAUuT,GAAKp/T,EAAEooT,UACjByD,EAAU,MAAQ7rT,EAAEqoT,WAAW,KAG7BmD,EAASl3O,EAAE+lN,MAAQh6R,KAAKq6R,iBAC1BmxB,EAAUqT,GAAK,OAASnmD,QAAQyyC,EAASl3O,EAAEruE,EAAE,IAAM,IAAM8yQ,QAAQyyC,EAASl3O,EAAEruE,EAAE,IAAM,IAAM8yQ,QAAQyyC,EAASl3O,EAAEruE,EAAE,IAAM,MAGnHulT,EAASjlT,EAAE8zR,MAAQwlC,EAAejd,QAAUviT,KAAKq6R,iBACnDmxB,EAAUoU,KAAOzU,EAASjlT,EAAEN,EAAI45T,EAAejqB,UAG7C4V,EAASxuN,EAAEq9L,MAAQh6R,KAAKq6R,iBAC1BmxB,EAAUsT,GAAK3T,EAASxuN,EAAE/2F,IAI9B6zT,eAAev5T,UAAUijR,QAAU,WACjCnjR,KAAKk9S,WAAa,KAClBl9S,KAAKinR,WAAa,KAClBjnR,KAAK09T,cAAgB,KACrB19T,KAAKgsT,WAAW3qT,OAAS,EACzBrB,KAAKm9S,UAAU97S,OAAS,GAuB1Bw0Q,gBAAgB,CAAC+mC,YAAawC,iBAAkB8Z,cAAe7U,iBAAkBxH,aAAc5K,kBAAmB8hB,cAAe2F,eACjIA,cAAcx5T,UAAU6vS,QAAUn6B,UAAU,UAAUtpC,WAAW,MAEjEotF,cAAcx5T,UAAUs2T,aAAe,WACrC,IAAIx3C,EAAeh/Q,KAAK67S,aAAaC,YACrC97S,KAAK6zT,gBAAkB77C,iBAAiBgH,EAAahxH,EAAIgxH,EAAahxH,EAAE3sJ,OAAS,GACjF,IAAIw/T,GAAU,EAEV7hD,EAAaotC,IACfyU,GAAU,EACV7gU,KAAKoyC,OAAO4pI,KAAOh8K,KAAK62T,WAAW73C,EAAaotC,KAEhDpsT,KAAKoyC,OAAO4pI,KAAO,gBAGrBh8K,KAAKg8K,KAAO6kJ,EACZ,IAAIC,GAAY,EAEZ9hD,EAAa6xB,KACfiwB,GAAY,EACZ9gU,KAAKoyC,OAAOunR,OAAS35T,KAAK62T,WAAW73C,EAAa6xB,IAClD7wS,KAAKoyC,OAAOynR,OAAS76C,EAAamtC,IAGpC,IACIjrT,EACA2/F,EAOAu+K,EACAqT,EACA9rR,EACA02Q,EACAY,EACAp3Q,EACAu2Q,EACA6lC,EACA8d,EACAC,EAlBAn2B,EAAW7qS,KAAKinR,WAAWa,YAAYqpB,cAAcnyB,EAAa/5Q,GAGlEgrT,EAAUjxC,EAAahxH,EACvB2mK,EAAe30T,KAAK6iT,QACxB7iT,KAAK25T,OAASmH,EACd9gU,KAAKoyC,OAAO0nR,OAAS96C,EAAasuC,UAAY,MAAQttT,KAAKinR,WAAWa,YAAYqpB,cAAcnyB,EAAa/5Q,GAAG+qS,QAChHnvM,EAAMm+K,EAAauuC,UAAUlsT,OAY7B,IAAIo6T,EAAcz7T,KAAKoQ,KAAKqrT,YACxBjL,EAAmC,KAAlBxxC,EAAamsB,GAAansB,EAAasuC,UACxD4G,EAAO,EACPC,EAAO,EACPe,GAAY,EACZ34B,EAAM,EAEV,IAAKr7R,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAAG,CAC3Bk+Q,EAAWp/Q,KAAKinR,WAAWa,YAAYgpB,YAAY9xB,EAAauuC,UAAUrsT,GAAI2pS,EAASG,OAAQhrS,KAAKinR,WAAWa,YAAYqpB,cAAcnyB,EAAa/5Q,GAAG+qS,SACzJvd,EAAYrT,GAAYA,EAAShvQ,MAAQ,GACzCukT,EAAa51O,QAET08O,GAAexL,EAAQ/uT,GAAGC,IAC5B+yT,GAAQ1D,EACR2D,GAAQn1C,EAAaquC,QACrB8G,GAAQe,EAAY,EAAI,EACxBA,GAAY,GAGdj3C,EAASwU,EAAUxU,OAASwU,EAAUxU,OAAO,GAAGnnH,GAAK,GACrDsmH,EAAOa,EAAO58Q,OACdszT,EAAalzB,MAAMziB,EAAasuC,UAAY,IAAKtuC,EAAasuC,UAAY,KAEtEmO,GACFz7T,KAAK42T,4BAA4B53C,EAAc21C,EAAc1E,EAAQ/uT,GAAG0wG,KAAMsiN,EAAMC,GAGtF4M,EAAW/oD,iBAAiBoF,EAAO,GACnC,IAAI6jD,EAAkB,EAEtB,IAAKp6T,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EACzB,GAAqB,OAAjBo3Q,EAAOp3Q,GAAGg3Q,GAAa,CAKzB,IAJAR,EAAOY,EAAOp3Q,GAAG23Q,GAAG73Q,EAAEzF,EAAEG,OACxB4hT,EAAYhlC,EAAOp3Q,GAAG23Q,GAAG73Q,EACzBq6T,EAAU,GAELr6T,EAAI,EAAGA,EAAI02Q,EAAM12Q,GAAK,EACf,IAANA,GACFq6T,EAAQh7T,KAAK2uT,EAAazwB,SAAS+e,EAAUr9S,EAAE,GAAG,GAAIq9S,EAAUr9S,EAAE,GAAG,GAAI,GAAI+uT,EAAaxwB,SAAS8e,EAAUr9S,EAAE,GAAG,GAAIq9S,EAAUr9S,EAAE,GAAG,GAAI,IAG3Io7T,EAAQh7T,KAAK2uT,EAAazwB,SAAS+e,EAAU/8S,EAAES,EAAI,GAAG,GAAIs8S,EAAU/8S,EAAES,EAAI,GAAG,GAAI,GAAIguT,EAAaxwB,SAAS8e,EAAU/8S,EAAES,EAAI,GAAG,GAAIs8S,EAAU/8S,EAAES,EAAI,GAAG,GAAI,GAAIguT,EAAazwB,SAAS+e,EAAU/hT,EAAEyF,GAAG,GAAIs8S,EAAU/hT,EAAEyF,GAAG,GAAI,GAAIguT,EAAaxwB,SAAS8e,EAAU/hT,EAAEyF,GAAG,GAAIs8S,EAAU/hT,EAAEyF,GAAG,GAAI,GAAIguT,EAAazwB,SAAS+e,EAAUr9S,EAAEe,GAAG,GAAIs8S,EAAUr9S,EAAEe,GAAG,GAAI,GAAIguT,EAAaxwB,SAAS8e,EAAUr9S,EAAEe,GAAG,GAAIs8S,EAAUr9S,EAAEe,GAAG,GAAI,IAG3Zq6T,EAAQh7T,KAAK2uT,EAAazwB,SAAS+e,EAAU/8S,EAAES,EAAI,GAAG,GAAIs8S,EAAU/8S,EAAES,EAAI,GAAG,GAAI,GAAIguT,EAAaxwB,SAAS8e,EAAU/8S,EAAES,EAAI,GAAG,GAAIs8S,EAAU/8S,EAAES,EAAI,GAAG,GAAI,GAAIguT,EAAazwB,SAAS+e,EAAU/hT,EAAE,GAAG,GAAI+hT,EAAU/hT,EAAE,GAAG,GAAI,GAAIyzT,EAAaxwB,SAAS8e,EAAU/hT,EAAE,GAAG,GAAI+hT,EAAU/hT,EAAE,GAAG,GAAI,GAAIyzT,EAAazwB,SAAS+e,EAAUr9S,EAAE,GAAG,GAAIq9S,EAAUr9S,EAAE,GAAG,GAAI,GAAI+uT,EAAaxwB,SAAS8e,EAAUr9S,EAAE,GAAG,GAAIq9S,EAAUr9S,EAAE,GAAG,GAAI,IACzZm7T,EAASE,GAAmBD,EAC5BC,GAAmB,EAInBxF,IACFvH,GAAQjE,EAAQ/uT,GAAG8sJ,EACnBkmK,GAAQ1D,GAGNxwT,KAAKk3T,UAAU36B,GACjBv8R,KAAKk3T,UAAU36B,GAAKrQ,KAAO60C,EAE3B/gU,KAAKk3T,UAAU36B,GAAO,CACpBrQ,KAAM60C,GAIVxkC,GAAO,IAIXm9B,cAAcx5T,UAAUqmT,mBAAqB,WAC3C,IAUIrlT,EACA2/F,EACAh6F,EACAu2Q,EACAz2Q,EACA02Q,EAfAhqK,EAAMrzG,KAAK09T,cACfrqN,EAAIi7L,KAAOtuS,KAAKoyC,OAAO0nR,OACvBzmN,EAAI0sN,QAAU,OACd1sN,EAAI2sN,SAAW,QACf3sN,EAAI4sN,WAAa,EAEZjgU,KAAKoQ,KAAKqrT,aACbz7T,KAAKu2T,aAAatC,YAAYj0T,KAAK67S,aAAaC,YAAa97S,KAAK8zT,oBASpE,IAGI+I,EAHAhJ,EAAkB7zT,KAAKu2T,aAAa1C,gBACpC5D,EAAUjwT,KAAK67S,aAAaC,YAAY9tJ,EAC5CntD,EAAMovN,EAAQ5uT,OAEd,IAGI0/T,EACAC,EAJAE,EAAW,KACXC,EAAa,KACbC,EAAc,KAIlB,IAAKlgU,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB,IAAK+uT,EAAQ/uT,GAAGC,EAAG,CASjB,GARA07T,EAAiBhJ,EAAgB3yT,GAE7B27T,IACF78T,KAAKinR,WAAWnB,SAASi4C,OACzB/9T,KAAKinR,WAAWnB,SAASy4C,aAAa1B,EAAeh9T,GACrDG,KAAKinR,WAAWnB,SAAS04C,WAAW3B,EAAe32T,IAGjDlG,KAAKg8K,KAAM,CAeb,IAdI6gJ,GAAkBA,EAAezQ,GAC/B8U,IAAarE,EAAezQ,KAC9B8U,EAAWrE,EAAezQ,GAC1B/4M,EAAI6tK,UAAY27C,EAAezQ,IAExB8U,IAAalhU,KAAKoyC,OAAO4pI,OAClCklJ,EAAWlhU,KAAKoyC,OAAO4pI,KACvB3oE,EAAI6tK,UAAYlhR,KAAKoyC,OAAO4pI,MAG9B+kJ,EAAW/gU,KAAKk3T,UAAUh2T,GAAGgrR,KAC7B9O,EAAO2jD,EAAS1/T,OAChBrB,KAAKinR,WAAWy2C,cAAcC,YAEzB92T,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EAKzB,IAJAm6T,EAAUD,EAASl6T,GACnBw2Q,EAAO2jD,EAAQ3/T,OACfrB,KAAKinR,WAAWy2C,cAAcE,OAAOoD,EAAQ,GAAIA,EAAQ,IAEpDr6T,EAAI,EAAGA,EAAI02Q,EAAM12Q,GAAK,EACzB3G,KAAKinR,WAAWy2C,cAAcI,cAAckD,EAAQr6T,GAAIq6T,EAAQr6T,EAAI,GAAIq6T,EAAQr6T,EAAI,GAAIq6T,EAAQr6T,EAAI,GAAIq6T,EAAQr6T,EAAI,GAAIq6T,EAAQr6T,EAAI,IAIxI3G,KAAKinR,WAAWy2C,cAAc0C,YAC9BpgU,KAAKinR,WAAWy2C,cAAc1hJ,OAGhC,GAAIh8K,KAAK25T,OAAQ,CAyBf,IAxBIkD,GAAkBA,EAAe1Q,GAC/BiV,IAAgBvE,EAAe1Q,KACjCiV,EAAcvE,EAAe1Q,GAC7B94M,EAAIi9M,UAAYuM,EAAe1Q,IAExBiV,IAAgBphU,KAAKoyC,OAAOynR,SACrCuH,EAAcphU,KAAKoyC,OAAOynR,OAC1BxmN,EAAIi9M,UAAYtwT,KAAKoyC,OAAOynR,QAG1BgD,GAAkBA,EAAehsB,GAC/BswB,IAAetE,EAAehsB,KAChCswB,EAAatE,EAAehsB,GAC5Bx9L,EAAIwsN,YAAchD,EAAehsB,IAE1BswB,IAAenhU,KAAKoyC,OAAOunR,SACpCwH,EAAanhU,KAAKoyC,OAAOunR,OACzBtmN,EAAIwsN,YAAc7/T,KAAKoyC,OAAOunR,QAGhCoH,EAAW/gU,KAAKk3T,UAAUh2T,GAAGgrR,KAC7B9O,EAAO2jD,EAAS1/T,OAChBrB,KAAKinR,WAAWy2C,cAAcC,YAEzB92T,EAAI,EAAGA,EAAIu2Q,EAAMv2Q,GAAK,EAKzB,IAJAm6T,EAAUD,EAASl6T,GACnBw2Q,EAAO2jD,EAAQ3/T,OACfrB,KAAKinR,WAAWy2C,cAAcE,OAAOoD,EAAQ,GAAIA,EAAQ,IAEpDr6T,EAAI,EAAGA,EAAI02Q,EAAM12Q,GAAK,EACzB3G,KAAKinR,WAAWy2C,cAAcI,cAAckD,EAAQr6T,GAAIq6T,EAAQr6T,EAAI,GAAIq6T,EAAQr6T,EAAI,GAAIq6T,EAAQr6T,EAAI,GAAIq6T,EAAQr6T,EAAI,GAAIq6T,EAAQr6T,EAAI,IAIxI3G,KAAKinR,WAAWy2C,cAAc0C,YAC9BpgU,KAAKinR,WAAWy2C,cAAc/D,SAG5BkD,GACF78T,KAAKinR,WAAWnB,SAAS24C,YAYjC5oD,gBAAgB,CAAC+mC,YAAawC,iBAAkB8Z,cAAe7U,iBAAkBxH,aAAc5K,mBAAoB8nB,gBACnHA,eAAe75T,UAAUskT,YAAcuH,gBAAgB7rT,UAAUskT,YACjEuV,eAAe75T,UAAUykR,aAAe4/B,cAAcrkT,UAAUykR,aAEhEo1C,eAAe75T,UAAUomT,cAAgB,WACvC,GAAItmT,KAAKiiR,IAAI1iN,QAAUv/D,KAAK4hR,UAAUjlL,IAAM38F,KAAKiiR,IAAI1iN,OAASv/D,KAAK4hR,UAAUpmK,IAAMx7G,KAAKiiR,IAAIxiN,QAAS,CACnG,IAAIwhN,EAASrL,UAAU,UACvBqL,EAAO1hN,MAAQv/D,KAAK4hR,UAAUjlL,EAC9BskL,EAAOxhN,OAASz/D,KAAK4hR,UAAUpmK,EAC/B,IAKI6lN,EACAC,EANAjuN,EAAM4tK,EAAO30C,WAAW,MACxBi1F,EAAOvhU,KAAKiiR,IAAI1iN,MAChBiiQ,EAAOxhU,KAAKiiR,IAAIxiN,OAChBgiQ,EAASF,EAAOC,EAChBE,EAAY1hU,KAAK4hR,UAAUjlL,EAAI38F,KAAK4hR,UAAUpmK,EAG9CmmN,EAAM3hU,KAAK4hR,UAAU6kC,IAAMzmT,KAAKinR,WAAW8rB,aAAa2T,yBAExD+a,EAASC,GAAqB,mBAARC,GAA4BF,EAASC,GAAqB,mBAARC,GAC1EL,EAAaE,EACbH,EAAYC,EAAaI,IAEzBL,EAAYE,EACZD,EAAaD,EAAYK,GAG3BruN,EAAIuuN,UAAU5hU,KAAKiiR,KAAMs/C,EAAOF,GAAa,GAAIG,EAAOF,GAAc,EAAGD,EAAWC,EAAY,EAAG,EAAGthU,KAAK4hR,UAAUjlL,EAAG38F,KAAK4hR,UAAUpmK,GACvIx7G,KAAKiiR,IAAMhB,IAIf84C,eAAe75T,UAAUqmT,mBAAqB,WAC5CvmT,KAAK09T,cAAckE,UAAU5hU,KAAKiiR,IAAK,EAAG,IAG5C83C,eAAe75T,UAAUijR,QAAU,WACjCnjR,KAAKiiR,IAAM,MAObpM,gBAAgB,CAAC+mC,YAAawC,iBAAkB8Z,cAAe7U,iBAAkBxH,aAAc5K,mBAAoB+nB,gBACnHA,eAAe95T,UAAUskT,YAAcuH,gBAAgB7rT,UAAUskT,YACjEwV,eAAe95T,UAAUykR,aAAe4/B,cAAcrkT,UAAUykR,aAEhEq1C,eAAe95T,UAAUqmT,mBAAqB,WAC5C,IAAIlzM,EAAMrzG,KAAK09T,cACfrqN,EAAI6tK,UAAYlhR,KAAKoQ,KAAKygS,GAC1Bx9L,EAAI8tK,SAAS,EAAG,EAAGnhR,KAAKoQ,KAAK+7S,GAAInsT,KAAKoQ,KAAKknR,KAoC7CzhB,gBAAgB,CAACspC,cAAe8a,oBAEhCA,mBAAmB/5T,UAAUkhT,YAAc,SAAUhxS,GACnD,OAAO,IAAIqpT,eAAerpT,EAAMpQ,KAAKinR,WAAYjnR,OAGnDi6T,mBAAmB/5T,UAAUmhT,WAAa,SAAUjxS,GAClD,OAAO,IAAIspT,cAActpT,EAAMpQ,KAAKinR,WAAYjnR,OAGlDi6T,mBAAmB/5T,UAAU8gT,YAAc,SAAU5wS,GACnD,OAAO,IAAI2pT,eAAe3pT,EAAMpQ,KAAKinR,WAAYjnR,OAGnDi6T,mBAAmB/5T,UAAUghT,YAAc,SAAU9wS,GACnD,OAAO,IAAI4pT,eAAe5pT,EAAMpQ,KAAKinR,WAAYjnR,OAGnDi6T,mBAAmB/5T,UAAUihT,WAAasW,YAAYv3T,UAAUihT,WAEhE8Y,mBAAmB/5T,UAAUq+T,aAAe,SAAU9oM,GACpD,GAAiB,IAAbA,EAAM,IAAyB,IAAbA,EAAM,IAAyB,IAAbA,EAAM,IAAyB,IAAbA,EAAM,IAA0B,IAAdA,EAAM,KAA2B,IAAdA,EAAM,IAIrG,GAAKz1H,KAAK+yS,aAAamnB,YAAvB,CAKAl6T,KAAKi2S,aAAajS,eAAevuK,GACjC,IAAIosM,EAAS7hU,KAAKs6T,YAAY7B,IAAIhjM,MAClCz1H,KAAKi2S,aAAavtD,UAAUm5E,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KAE7M7hU,KAAKs6T,YAAY7B,IAAIz0B,eAAehkS,KAAKi2S,aAAaxgL,OACtD,IAAIqsM,EAAU9hU,KAAKs6T,YAAY7B,IAAIhjM,MACnCz1H,KAAK09T,cAAc/7B,aAAamgC,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,IAAKA,EAAQ,UAVnG9hU,KAAK09T,cAAch1E,UAAUjzH,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAAKA,EAAM,MAa1FwkM,mBAAmB/5T,UAAUs+T,WAAa,SAAU34T,GAIlD,IAAK7F,KAAK+yS,aAAamnB,YAGrB,OAFAl6T,KAAK09T,cAAcqE,aAAel8T,EAAK,EAAI,EAAIA,OAC/C7F,KAAKinR,WAAWozC,mBAAqBr6T,KAAKs6T,YAAY5B,IAIxD14T,KAAKs6T,YAAY5B,IAAM7yT,EAAK,EAAI,EAAIA,EAEhC7F,KAAKinR,WAAWozC,qBAAuBr6T,KAAKs6T,YAAY5B,KAC1D14T,KAAK09T,cAAcqE,YAAc/hU,KAAKs6T,YAAY5B,GAClD14T,KAAKinR,WAAWozC,mBAAqBr6T,KAAKs6T,YAAY5B,KAI1DuB,mBAAmB/5T,UAAU6+E,MAAQ,WAC9B/+E,KAAK+yS,aAAamnB,YAKvBl6T,KAAKs6T,YAAYv7O,QAJf/+E,KAAK09T,cAAce,WAOvBxE,mBAAmB/5T,UAAU69T,KAAO,SAAUiE,GAC5C,GAAKhiU,KAAK+yS,aAAamnB,YAAvB,CAKI8H,GACFhiU,KAAK09T,cAAcK,OAGrB,IAMI78T,EANAu0H,EAAQz1H,KAAKs6T,YAAY7B,IAAIhjM,MAE7Bz1H,KAAKs6T,YAAYrqC,SAAWjwR,KAAKs6T,YAAY9B,SAC/Cx4T,KAAKs6T,YAAY8C,YAInB,IAAIthT,EAAM9b,KAAKs6T,YAAY/B,MAAMv4T,KAAKs6T,YAAY9B,SAElD,IAAKt3T,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB4a,EAAI5a,GAAKu0H,EAAMv0H,GAGjBlB,KAAKs6T,YAAY3B,QAAQ34T,KAAKs6T,YAAY9B,SAAWx4T,KAAKs6T,YAAY5B,GACtE14T,KAAKs6T,YAAY9B,SAAW,OAtB1Bx4T,KAAK09T,cAAcK,QAyBvB9D,mBAAmB/5T,UAAUu+T,QAAU,SAAUuD,GAC/C,GAAKhiU,KAAK+yS,aAAamnB,YAAvB,CAKI8H,IACFhiU,KAAK09T,cAAce,UACnBz+T,KAAKinR,WAAWi3C,UAAY,eAG9Bl+T,KAAKs6T,YAAY9B,SAAW,EAC5B,IACIt3T,EADA+gU,EAASjiU,KAAKs6T,YAAY/B,MAAMv4T,KAAKs6T,YAAY9B,SAEjD18S,EAAM9b,KAAKs6T,YAAY7B,IAAIhjM,MAE/B,IAAKv0H,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB4a,EAAI5a,GAAK+gU,EAAO/gU,GAGlBlB,KAAK09T,cAAc/7B,aAAasgC,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,KAC/FA,EAASjiU,KAAKs6T,YAAY3B,QAAQ34T,KAAKs6T,YAAY9B,SACnDx4T,KAAKs6T,YAAY5B,GAAKuJ,EAElBjiU,KAAKinR,WAAWozC,qBAAuB4H,IACzCjiU,KAAK09T,cAAcqE,YAAcE,EACjCjiU,KAAKinR,WAAWozC,mBAAqB4H,QAxBrCjiU,KAAK09T,cAAce,WA4BvBxE,mBAAmB/5T,UAAUumR,gBAAkB,SAAU+B,GACvD,GAAIxoR,KAAKoiT,cAAcjlJ,QAAS,CAC9Bn9J,KAAKoiT,cAAc1vK,UAAYkjI,UAAU,UACzC,IAAIssD,EAAiBliU,KAAKoiT,cAAc1vK,UAAUloE,MAClD03P,EAAe3iQ,MAAQ,OACvB2iQ,EAAeziQ,OAAS,OACxB,IAAIjhB,EAAS,cACb0jR,EAAezoD,gBAAkBj7N,EACjC0jR,EAAeC,mBAAqB3jR,EACpC0jR,EAAexoD,sBAAwBl7N,EACvC0jR,EAAe,qBAAuB1jR,EACtC0jR,EAAejK,kBAAoBj4T,KAAK+yS,aAAaklB,kBACrDj4T,KAAKoiT,cAAcjlJ,QAAQryF,YAAY9qE,KAAKoiT,cAAc1vK,WAC1D1yI,KAAK09T,cAAgB19T,KAAKoiT,cAAc1vK,UAAU45F,WAAW,MAEzDtsO,KAAK+yS,aAAa9qJ,WACpBjoJ,KAAKoiT,cAAc1vK,UAAU9nE,aAAa,QAAS5qE,KAAK+yS,aAAa9qJ,WAGnEjoJ,KAAK+yS,aAAa9sQ,IACpBjmC,KAAKoiT,cAAc1vK,UAAU9nE,aAAa,KAAM5qE,KAAK+yS,aAAa9sQ,SAGpEjmC,KAAK09T,cAAgB19T,KAAK+yS,aAAa18L,QAGzCr2G,KAAKoQ,KAAOo4Q,EACZxoR,KAAKi9Q,OAASuL,EAASvL,OACvBj9Q,KAAKoiU,gBAAkB,CACrBzlO,EAAG6rL,EAAS7rL,EACZ6e,EAAGgtK,EAAShtK,EACZ+lL,GAAI,EACJ5C,GAAI,EACJkD,GAAI,EACJhkB,GAAI,GAEN79Q,KAAKkiT,gBAAgB15B,EAAU7yO,SAAS3wC,MACxChF,KAAKinR,WAAWy2C,cAAgB19T,KAAK09T,cACrC19T,KAAKinR,WAAWnB,SAAW9lR,KAC3BA,KAAKinR,WAAWo7C,UAAW,EAC3BriU,KAAKinR,WAAWy6B,gBAAkB1hT,KAAK+yS,aAAa2O,gBACpD1hT,KAAKinR,WAAWm7C,gBAAkBpiU,KAAKoiU,gBACvCpiU,KAAKosS,SAAWp0B,iBAAiBwQ,EAASvL,OAAO57Q,QACjDrB,KAAKkpR,uBAGP+wC,mBAAmB/5T,UAAUgpR,oBAAsB,WAEjD,IAAIo5C,EACAC,EAYAC,EACAC,EAEJ,GAjBAziU,KAAK++E,QAID/+E,KAAKoiT,cAAcjlJ,SAAWn9J,KAAKoiT,cAAc1vK,WACnD4vL,EAAetiU,KAAKoiT,cAAcjlJ,QAAQ8xI,YAC1CszB,EAAgBviU,KAAKoiT,cAAcjlJ,QAAQulK,aAC3C1iU,KAAKoiT,cAAc1vK,UAAU9nE,aAAa,QAAS03P,EAAetiU,KAAK+yS,aAAaonB,KACpFn6T,KAAKoiT,cAAc1vK,UAAU9nE,aAAa,SAAU23P,EAAgBviU,KAAK+yS,aAAaonB,OAEtFmI,EAAetiU,KAAK09T,cAAcz8C,OAAO1hN,MAAQv/D,KAAK+yS,aAAaonB,IACnEoI,EAAgBviU,KAAK09T,cAAcz8C,OAAOxhN,OAASz/D,KAAK+yS,aAAaonB,MAMR,IAA3Dn6T,KAAK+yS,aAAailB,oBAAoB98S,QAAQ,UAA8E,IAA5Dlb,KAAK+yS,aAAailB,oBAAoB98S,QAAQ,SAAiB,CACjI,IAAIymT,EAAM3hU,KAAK+yS,aAAailB,oBAAoB5gT,MAAM,KAClDurT,EAAWhB,EAAI,IAAM,OACrBvtP,EAAMutP,EAAI,IAAM,WAChBzN,EAAO9/O,EAAI4M,OAAO,EAAG,GACrBmzO,EAAO//O,EAAI4M,OAAO,GACtBwhP,EAAaF,EAAeC,EAC5BE,EAAeziU,KAAKoiU,gBAAgBzlO,EAAI38F,KAAKoiU,gBAAgB5mN,EAEzDinN,EAAeD,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,GACnF3iU,KAAKoiU,gBAAgB7gC,GAAK+gC,GAAgBtiU,KAAKoiU,gBAAgBzlO,EAAI38F,KAAK+yS,aAAaonB,KACrFn6T,KAAKoiU,gBAAgBzjC,GAAK2jC,GAAgBtiU,KAAKoiU,gBAAgBzlO,EAAI38F,KAAK+yS,aAAaonB,OAErFn6T,KAAKoiU,gBAAgB7gC,GAAKghC,GAAiBviU,KAAKoiU,gBAAgB5mN,EAAIx7G,KAAK+yS,aAAaonB,KACtFn6T,KAAKoiU,gBAAgBzjC,GAAK4jC,GAAiBviU,KAAKoiU,gBAAgB5mN,EAAIx7G,KAAK+yS,aAAaonB,MAItFn6T,KAAKoiU,gBAAgBvgC,GADV,SAATqyB,IAAoBuO,EAAeD,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,IAC5EL,EAAetiU,KAAKoiU,gBAAgBzlO,GAAK4lO,EAAgBviU,KAAKoiU,gBAAgB5mN,IAAM,EAAIx7G,KAAK+yS,aAAaonB,IACnH,SAATjG,IAAoBuO,EAAeD,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,IACnFL,EAAetiU,KAAKoiU,gBAAgBzlO,GAAK4lO,EAAgBviU,KAAKoiU,gBAAgB5mN,IAAMx7G,KAAK+yS,aAAaonB,IAEvG,EAI1Bn6T,KAAKoiU,gBAAgBvkD,GADV,SAATs2C,IAAoBsO,EAAeD,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,IAC5EJ,EAAgBviU,KAAKoiU,gBAAgB5mN,GAAK8mN,EAAetiU,KAAKoiU,gBAAgBzlO,IAAM,EAAI38F,KAAK+yS,aAAaonB,IACnH,SAAThG,IAAoBsO,EAAeD,GAA2B,SAAbG,GAAuBF,EAAeD,GAA2B,UAAbG,IACnFJ,EAAgBviU,KAAKoiU,gBAAgB5mN,GAAK8mN,EAAetiU,KAAKoiU,gBAAgBzlO,IAAM38F,KAAK+yS,aAAaonB,IAEvG,MAEuB,SAA1Cn6T,KAAK+yS,aAAailB,qBAC3Bh4T,KAAKoiU,gBAAgB7gC,GAAK+gC,GAAgBtiU,KAAKoiU,gBAAgBzlO,EAAI38F,KAAK+yS,aAAaonB,KACrFn6T,KAAKoiU,gBAAgBzjC,GAAK4jC,GAAiBviU,KAAKoiU,gBAAgB5mN,EAAIx7G,KAAK+yS,aAAaonB,KACtFn6T,KAAKoiU,gBAAgBvgC,GAAK,EAC1B7hS,KAAKoiU,gBAAgBvkD,GAAK,IAE1B79Q,KAAKoiU,gBAAgB7gC,GAAKvhS,KAAK+yS,aAAaonB,IAC5Cn6T,KAAKoiU,gBAAgBzjC,GAAK3+R,KAAK+yS,aAAaonB,IAC5Cn6T,KAAKoiU,gBAAgBvgC,GAAK,EAC1B7hS,KAAKoiU,gBAAgBvkD,GAAK,GAG5B79Q,KAAKoiU,gBAAgB3sM,MAAQ,CAACz1H,KAAKoiU,gBAAgB7gC,GAAI,EAAG,EAAG,EAAG,EAAGvhS,KAAKoiU,gBAAgBzjC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG3+R,KAAKoiU,gBAAgBvgC,GAAI7hS,KAAKoiU,gBAAgBvkD,GAAI,EAAG,GAQnK79Q,KAAKu+T,aAAav+T,KAAKoiU,gBAAgB3sM,OACvCz1H,KAAK09T,cAAcC,YACnB39T,KAAK09T,cAAcle,KAAK,EAAG,EAAGx/S,KAAKoiU,gBAAgBzlO,EAAG38F,KAAKoiU,gBAAgB5mN,GAC3Ex7G,KAAK09T,cAAc0C,YACnBpgU,KAAK09T,cAAcM,OACnBh+T,KAAKopR,YAAYppR,KAAK05R,eAAe,IAGvCugC,mBAAmB/5T,UAAUijR,QAAU,WAKrC,IAAIjiR,EAJAlB,KAAK+yS,aAAamnB,aAAel6T,KAAKoiT,cAAcjlJ,UACtDn9J,KAAKoiT,cAAcjlJ,QAAQuvD,UAAY,IAIzC,IAAI7rH,EAAM7gG,KAAKi9Q,OAASj9Q,KAAKi9Q,OAAO57Q,OAAS,EAE7C,IAAKH,EAAI2/F,EAAM,EAAG3/F,GAAK,EAAGA,GAAK,EACzBlB,KAAKosS,SAASlrS,IAChBlB,KAAKosS,SAASlrS,GAAGiiR,UAIrBnjR,KAAKosS,SAAS/qS,OAAS,EACvBrB,KAAKinR,WAAWy2C,cAAgB,KAChC19T,KAAKoiT,cAAc1vK,UAAY,KAC/B1yI,KAAKikO,WAAY,GAGnBg2F,mBAAmB/5T,UAAUkpR,YAAc,SAAU/6Q,EAAKy7R,GACxD,IAAI9pS,KAAK05R,gBAAkBrrR,IAAyC,IAAlCrO,KAAK+yS,aAAamnB,aAAyBpwB,KAAe9pS,KAAKikO,YAAsB,IAAT51N,EAA9G,CAWA,IAAInN,EAPJlB,KAAK05R,cAAgBrrR,EACrBrO,KAAKinR,WAAWyO,SAAWrnR,EAAMrO,KAAKoiT,cAAc/nB,cACpDr6R,KAAKinR,WAAWiT,SAAW,EAC3Bl6R,KAAKinR,WAAW+S,MAAQh6R,KAAK+yS,aAAamnB,aAAepwB,EACzD9pS,KAAKinR,WAAWX,iBAAiBzB,aAAex2Q,EAIhD,IAAIwyF,EAAM7gG,KAAKi9Q,OAAO57Q,OAMtB,IAJKrB,KAAKg9Q,gBACRh9Q,KAAK4gT,YAAYvyS,GAGdnN,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,GACpBlB,KAAKg9Q,gBAAkBh9Q,KAAKosS,SAASlrS,KACvClB,KAAKosS,SAASlrS,GAAGyjR,aAAat2Q,EAAMrO,KAAKi9Q,OAAO/7Q,GAAGm+Q,IAIvD,GAAIr/Q,KAAKinR,WAAW+S,KAAM,CAOxB,KANsC,IAAlCh6R,KAAK+yS,aAAamnB,YACpBl6T,KAAK09T,cAAckF,UAAU,EAAG,EAAG5iU,KAAKoiU,gBAAgBzlO,EAAG38F,KAAKoiU,gBAAgB5mN,GAEhFx7G,KAAK+9T,OAGF78T,EAAI2/F,EAAM,EAAG3/F,GAAK,EAAGA,GAAK,GACzBlB,KAAKg9Q,gBAAkBh9Q,KAAKosS,SAASlrS,KACvClB,KAAKosS,SAASlrS,GAAGkoR,eAIiB,IAAlCppR,KAAK+yS,aAAamnB,aACpBl6T,KAAKy+T,aAKXxE,mBAAmB/5T,UAAU2gT,UAAY,SAAUzsO,GACjD,IAAIg4N,EAAWpsS,KAAKosS,SAEpB,IAAIA,EAASh4N,IAAgC,KAAxBp0E,KAAKi9Q,OAAO7oM,GAAKypM,GAAtC,CAIA,IAAIrjH,EAAUx6J,KAAK+gT,WAAW/gT,KAAKi9Q,OAAO7oM,GAAMp0E,KAAMA,KAAKinR,YAC3DmlB,EAASh4N,GAAOomF,EAChBA,EAAQytH,oBAMVgyC,mBAAmB/5T,UAAU4gT,qBAAuB,WAClD,MAAO9gT,KAAKgiT,gBAAgB3gT,OAAQ,CAClC,IAAIm5J,EAAUx6J,KAAKgiT,gBAAgBj8S,MACnCy0J,EAAQ4rJ,mBAIZ6T,mBAAmB/5T,UAAUgrR,KAAO,WAClClrR,KAAKoiT,cAAc1vK,UAAUloE,MAAM6mG,QAAU,QAG/C4oJ,mBAAmB/5T,UAAUirR,KAAO,WAClCnrR,KAAKoiT,cAAc1vK,UAAUloE,MAAM6mG,QAAU,SAc/CwkG,gBAAgB,CAACokD,mBAAoB3C,aAAc4B,eAAgBqB,eAEnEA,cAAcr6T,UAAUqmT,mBAAqB,WAC3C,IAQIrlT,EARAmyG,EAAMrzG,KAAK09T,cACfrqN,EAAIsqN,YACJtqN,EAAIuqN,OAAO,EAAG,GACdvqN,EAAIwqN,OAAO79T,KAAKoQ,KAAKusF,EAAG,GACxB0W,EAAIwqN,OAAO79T,KAAKoQ,KAAKusF,EAAG38F,KAAKoQ,KAAKorG,GAClCnI,EAAIwqN,OAAO,EAAG79T,KAAKoQ,KAAKorG,GACxBnI,EAAIwqN,OAAO,EAAG,GACdxqN,EAAI2qN,OAEJ,IAAIn9N,EAAM7gG,KAAKi9Q,OAAO57Q,OAEtB,IAAKH,EAAI2/F,EAAM,EAAG3/F,GAAK,EAAGA,GAAK,GACzBlB,KAAKg9Q,gBAAkBh9Q,KAAKosS,SAASlrS,KACvClB,KAAKosS,SAASlrS,GAAGkoR,eAKvBmxC,cAAcr6T,UAAUijR,QAAU,WAChC,IAAIjiR,EACA2/F,EAAM7gG,KAAKi9Q,OAAO57Q,OAEtB,IAAKH,EAAI2/F,EAAM,EAAG3/F,GAAK,EAAGA,GAAK,EACzBlB,KAAKosS,SAASlrS,IAChBlB,KAAKosS,SAASlrS,GAAGiiR,UAIrBnjR,KAAKi9Q,OAAS,KACdj9Q,KAAKosS,SAAW,MAGlBmuB,cAAcr6T,UAAU+gT,WAAa,SAAU7wS,GAC7C,OAAO,IAAImqT,cAAcnqT,EAAMpQ,KAAKinR,WAAYjnR,OAoClD61Q,gBAAgB,CAACokD,oBAAqBO,gBAEtCA,eAAet6T,UAAU+gT,WAAa,SAAU7wS,GAC9C,OAAO,IAAImqT,cAAcnqT,EAAMpQ,KAAKinR,WAAYjnR,OAKlDy6T,aAAav6T,UAAY,CACvB2iU,eAAgB,aAChBje,oBAAqB,WACnB5kT,KAAKu9S,YAAc3nC,UAAU51Q,KAAKoQ,KAAKkkH,IAAM,OAEzCt0H,KAAKoQ,KAAKotQ,SACZx9Q,KAAK03T,WAAax7C,SAAS,OAC3Bl8Q,KAAKw9S,aAAethC,SAAS,KAC7Bl8Q,KAAKugT,cAAgBvgT,KAAKw9S,aAC1Bx9S,KAAK03T,WAAW5sP,YAAY9qE,KAAKw9S,cACjCx9S,KAAKu9S,YAAYzyO,YAAY9qE,KAAK03T,aAElC13T,KAAKw9S,aAAex9S,KAAKu9S,YAG3B/jC,SAASx5Q,KAAKu9S,cAEhBsH,wBAAyB,WACvB7kT,KAAKimT,yBAA2B,IAAI8S,UAAU/4T,MAC9CA,KAAK+kT,mBAAqB/kT,KAAKu9S,YAC/Bv9S,KAAKugT,cAAgBvgT,KAAKw9S,aAEtBx9S,KAAKoQ,KAAKq1S,IACZzlT,KAAKw9S,aAAa5yO,aAAa,KAAM5qE,KAAKoQ,KAAKq1S,IAG7CzlT,KAAKoQ,KAAK2vQ,IACZ//Q,KAAKw9S,aAAa5yO,aAAa,QAAS5qE,KAAKoQ,KAAK2vQ,IAG/B,IAAjB//Q,KAAKoQ,KAAKktS,IACZt9S,KAAKo9S,gBAGT0I,cAAe,WACb,IAAIgd,EAA0B9iU,KAAK+kT,mBAAqB/kT,KAAK+kT,mBAAmBv6O,MAAQ,GAExF,GAAIxqE,KAAK6yS,eAAeyP,QAAS,CAC/B,IAAIygB,EAAc/iU,KAAK6yS,eAAerJ,IAAIrE,QAC1C29B,EAAwBp6E,UAAYq6E,EACpCD,EAAwBE,gBAAkBD,EAGxC/iU,KAAK6yS,eAAe0P,SACtBugB,EAAwBvtB,QAAUv1S,KAAK6yS,eAAeC,MAAM5sS,EAAEN,IAGlEwjR,YAAa,WAGPppR,KAAKoQ,KAAKs1S,IAAM1lT,KAAKoyS,SAIzBpyS,KAAKyiT,kBACLziT,KAAKizS,mBACLjzS,KAAK8lT,gBACL9lT,KAAKumT,qBAEDvmT,KAAKq6R,gBACPr6R,KAAKq6R,eAAgB,KAGzBlX,QAAS,WACPnjR,KAAKw9S,aAAe,KACpBx9S,KAAK+kT,mBAAqB,KAEtB/kT,KAAK8kT,eACP9kT,KAAK8kT,aAAe,MAGlB9kT,KAAK0zS,cACP1zS,KAAK0zS,YAAYvwB,UACjBnjR,KAAK0zS,YAAc,OAGvBsS,2BAA4B,WAC1BhmT,KAAK0zS,YAAc,IAAI2L,YAAYr/S,KAAKoQ,KAAMpQ,KAAMA,KAAKinR,aAE3Dg8C,WAAY,aACZ/c,SAAU,cAEZuU,aAAav6T,UAAUsgT,eAAiB4D,eAAelkT,UAAUsgT,eACjEia,aAAav6T,UAAU6lT,mBAAqB0U,aAAav6T,UAAUijR,QACnEs3C,aAAav6T,UAAUyhT,sBAAwBxC,aAAaj/S,UAAUyhT,sBAMtE9rC,gBAAgB,CAAC+mC,YAAawC,iBAAkBqb,aAAcpW,iBAAkBxH,aAAcyH,sBAAuBoW,eAErHA,cAAcx6T,UAAUomT,cAAgB,WACtC,IAAI9G,EAEAx/S,KAAKoQ,KAAKotQ,SACZgiC,EAAOtjC,SAAS,QAChBsjC,EAAK50O,aAAa,QAAS5qE,KAAKoQ,KAAK+7S,IACrC3M,EAAK50O,aAAa,SAAU5qE,KAAKoQ,KAAKknR,IACtCkoB,EAAK50O,aAAa,OAAQ5qE,KAAKoQ,KAAKygS,IACpC7wS,KAAK03T,WAAW9sP,aAAa,QAAS5qE,KAAKoQ,KAAK+7S,IAChDnsT,KAAK03T,WAAW9sP,aAAa,SAAU5qE,KAAKoQ,KAAKknR,MAEjDkoB,EAAO5pC,UAAU,OACjB4pC,EAAKh1O,MAAMjL,MAAQv/D,KAAKoQ,KAAK+7S,GAAK,KAClC3M,EAAKh1O,MAAM/K,OAASz/D,KAAKoQ,KAAKknR,GAAK,KACnCkoB,EAAKh1O,MAAMmiJ,gBAAkB3sN,KAAKoQ,KAAKygS,IAGzC7wS,KAAKw9S,aAAa1yO,YAAY00O,IA+BhC3pC,gBAAgB,CAAC+mC,YAAawC,iBAAkBsb,cAAe3O,gBAAiB0O,aAAcpW,iBAAkBxH,aAAc5K,mBAAoB0oB,eAClJA,cAAcz6T,UAAUgjU,kBAAoBvI,cAAcz6T,UAAUqmT,mBAEpEoU,cAAcz6T,UAAUomT,cAAgB,WACtC,IAAI1Z,EAGJ,GAFA5sS,KAAKu9S,YAAY/yO,MAAMokO,SAAW,EAE9B5uS,KAAKoQ,KAAKotQ,QACZx9Q,KAAKw9S,aAAa1yO,YAAY9qE,KAAK46T,iBACnChuB,EAAO5sS,KAAK03T,eACP,CACL9qB,EAAO1wB,SAAS,OAChB,IAAIr+O,EAAO79B,KAAKs+Q,KAAKluQ,KAAOpQ,KAAKs+Q,KAAKluQ,KAAOpQ,KAAKinR,WAAWiyB,SAC7DtM,EAAKhiO,aAAa,QAAS/sC,EAAK8+D,GAChCiwM,EAAKhiO,aAAa,SAAU/sC,EAAK29E,GACjCoxL,EAAK9hO,YAAY9qE,KAAK46T,iBACtB56T,KAAKw9S,aAAa1yO,YAAY8hO,GAGhC5sS,KAAK8tT,aAAa9tT,KAAKk9S,WAAYl9S,KAAKm9S,UAAWn9S,KAAKgpT,aAAchpT,KAAK46T,gBAAiB,EAAG,IAAI,GACnG56T,KAAK+tT,qBACL/tT,KAAKmjU,UAAYv2B,GAGnB+tB,cAAcz6T,UAAUkjU,oBAAsB,SAAU7b,EAAc/+H,GACpE,IAAItnL,EACA2/F,EAAM0mN,EAAalmT,OAEvB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBsnL,EAAQ++H,EAAarmT,GAAGqsS,OAAO3nS,EAAE6+R,kBAAkBj8G,EAAM,GAAIA,EAAM,GAAI,GAGzE,OAAOA,GAGTmyI,cAAcz6T,UAAUmjU,0BAA4B,SAAUj6S,EAAMk6S,GAClE,IAEIpiU,EAEAqiU,EACAC,EACAC,EACAC,EAPAhnC,EAAQtzQ,EAAKkuQ,GAAG1xR,EAChB2hT,EAAen+R,EAAKm+R,aAEpB1mN,EAAM67L,EAAMzM,QAMhB,KAAIpvL,GAAO,GAAX,CAIA,IAAK3/F,EAAI,EAAGA,EAAI2/F,EAAM,EAAG3/F,GAAK,EAC5BqiU,EAASvjU,KAAKojU,oBAAoB7b,EAAc7qB,EAAM92R,EAAE1E,IACxDsiU,EAASxjU,KAAKojU,oBAAoB7b,EAAc7qB,EAAMx2R,EAAEhF,IACxDuiU,EAAazjU,KAAKojU,oBAAoB7b,EAAc7qB,EAAMx7R,EAAEA,EAAI,IAChEwiU,EAAa1jU,KAAKojU,oBAAoB7b,EAAc7qB,EAAM92R,EAAE1E,EAAI,IAChElB,KAAK2jU,YAAYJ,EAAQC,EAAQC,EAAYC,EAAYJ,GAGvD5mC,EAAMzoN,IACRsvP,EAASvjU,KAAKojU,oBAAoB7b,EAAc7qB,EAAM92R,EAAE1E,IACxDsiU,EAASxjU,KAAKojU,oBAAoB7b,EAAc7qB,EAAMx2R,EAAEhF,IACxDuiU,EAAazjU,KAAKojU,oBAAoB7b,EAAc7qB,EAAMx7R,EAAE,IAC5DwiU,EAAa1jU,KAAKojU,oBAAoB7b,EAAc7qB,EAAM92R,EAAE,IAC5D5F,KAAK2jU,YAAYJ,EAAQC,EAAQC,EAAYC,EAAYJ,MAI7D3I,cAAcz6T,UAAUyjU,YAAc,SAAUJ,EAAQC,EAAQC,EAAYC,EAAYJ,GACtFtjU,KAAK4jU,iBAAiBL,EAAQC,EAAQC,EAAYC,GAClD,IAAIG,EAAS7jU,KAAK8jU,iBAClBR,EAAYh2J,EAAIsrG,MAAMirD,EAAOjkQ,KAAM0jQ,EAAYh2J,GAC/Cg2J,EAAYS,KAAOprD,MAAMkrD,EAAO3zN,MAAOozN,EAAYS,MACnDT,EAAYp+T,EAAI0zQ,MAAMirD,EAAOnkQ,IAAK4jQ,EAAYp+T,GAC9Co+T,EAAYU,KAAOrrD,MAAMkrD,EAAOh3G,OAAQy2G,EAAYU,OAGtDrJ,cAAcz6T,UAAU4jU,iBAAmB,CACzClkQ,KAAM,EACNswC,MAAO,EACPxwC,IAAK,EACLmtJ,OAAQ,GAEV8tG,cAAcz6T,UAAU+jU,gBAAkB,CACxC32J,EAAG,EACHy2J,KAAM,EACN7+T,EAAG,EACH8+T,KAAM,EACNzkQ,MAAO,EACPE,OAAQ,GAGVk7P,cAAcz6T,UAAU0jU,iBAAmB,SAAUvlC,EAAI99H,EAAIqiI,EAAIshC,GAG/D,IAFA,IAESt9T,EAAGhH,EAAGq0E,EAAGjzE,EAAGmjU,EAAMvwC,EAAIwwC,EAF3BP,EAAS,CAAC,CAACxlC,EAAG,GAAI6lC,EAAG,IAAK,CAAC7lC,EAAG,GAAI6lC,EAAG,KAENhjU,EAAI,EAAGA,EAAI,IAAKA,EAEjDtB,EAAI,EAAIy+R,EAAGn9R,GAAK,GAAKq/J,EAAGr/J,GAAK,EAAI0hS,EAAG1hS,GACpC0F,GAAK,EAAIy3R,EAAGn9R,GAAK,EAAIq/J,EAAGr/J,GAAK,EAAI0hS,EAAG1hS,GAAK,EAAIgjU,EAAGhjU,GAChD+yE,EAAI,EAAIssF,EAAGr/J,GAAK,EAAIm9R,EAAGn9R,GACvBtB,GAAK,EAELgH,GAAK,EAELqtE,GAAK,EAEK,IAANrtE,GAAiB,IAANhH,IACE,IAANgH,GACT5F,GAAKizE,EAAIr0E,EAELoB,EAAI,GAAKA,EAAI,GACf6iU,EAAO3iU,GAAG8E,KAAKhG,KAAKqkU,WAAWrjU,EAAGq9R,EAAI99H,EAAIqiI,EAAIshC,EAAIhjU,MAGpDijU,EAAOvkU,EAAIA,EAAI,EAAIq0E,EAAIrtE,EAEnBu9T,GAAQ,IACVvwC,IAAOh0R,EAAI44Q,OAAO2rD,KAAU,EAAIv9T,GAC5BgtR,EAAK,GAAKA,EAAK,GAAGiwC,EAAO3iU,GAAG8E,KAAKhG,KAAKqkU,WAAWzwC,EAAIyK,EAAI99H,EAAIqiI,EAAIshC,EAAIhjU,IACzEkjU,IAAOxkU,EAAI44Q,OAAO2rD,KAAU,EAAIv9T,GAC5Bw9T,EAAK,GAAKA,EAAK,GAAGP,EAAO3iU,GAAG8E,KAAKhG,KAAKqkU,WAAWD,EAAI/lC,EAAI99H,EAAIqiI,EAAIshC,EAAIhjU,OAK/ElB,KAAK8jU,iBAAiBlkQ,KAAOg5M,MAAM70Q,MAAM,KAAM8/T,EAAO,IACtD7jU,KAAK8jU,iBAAiBpkQ,IAAMk5M,MAAM70Q,MAAM,KAAM8/T,EAAO,IACrD7jU,KAAK8jU,iBAAiB5zN,MAAQyoK,MAAM50Q,MAAM,KAAM8/T,EAAO,IACvD7jU,KAAK8jU,iBAAiBj3G,OAAS8rD,MAAM50Q,MAAM,KAAM8/T,EAAO,KAG1DlJ,cAAcz6T,UAAUmkU,WAAa,SAAUrjU,EAAGq9R,EAAI99H,EAAIqiI,EAAIshC,EAAIhjU,GAChE,OAAOq3Q,MAAM,EAAIv3Q,EAAG,GAAKq9R,EAAGn9R,GAAK,EAAIq3Q,MAAM,EAAIv3Q,EAAG,GAAKA,EAAIu/J,EAAGr/J,GAAK,GAAK,EAAIF,GAAKu3Q,MAAMv3Q,EAAG,GAAK4hS,EAAG1hS,GAAKq3Q,MAAMv3Q,EAAG,GAAKkjU,EAAGhjU,IAG1Hy5T,cAAcz6T,UAAUokU,qBAAuB,SAAUnnB,EAAWmmB,GAClE,IAAIpiU,EACA2/F,EAAMs8M,EAAU97S,OAEpB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACpBi8S,EAAUj8S,IAAMi8S,EAAUj8S,GAAGo2R,GAC/Bt3R,KAAKqjU,0BAA0BlmB,EAAUj8S,GAAIoiU,GACpCnmB,EAAUj8S,IAAMi8S,EAAUj8S,GAAG41J,IACtC92J,KAAKskU,qBAAqBnnB,EAAUj8S,GAAG41J,GAAIwsK,IAKjD3I,cAAcz6T,UAAUqkU,mBAAqB,SAAUriD,GACrD,OAAOliR,KAAK66T,YAAYvtJ,GAAK40G,EAAI50G,GAAKttK,KAAK66T,YAAY31T,GAAKg9Q,EAAIh9Q,GAAKlF,KAAK66T,YAAYt7P,MAAQv/D,KAAK66T,YAAYvtJ,GAAK40G,EAAI50G,EAAI40G,EAAI3iN,OAASv/D,KAAK66T,YAAYp7P,OAASz/D,KAAK66T,YAAY31T,GAAKg9Q,EAAIh9Q,EAAIg9Q,EAAIziN,QAGvMk7P,cAAcz6T,UAAUqmT,mBAAqB,WAG3C,GAFAvmT,KAAKkjU,qBAEAljU,KAAKoyS,SAAWpyS,KAAKq6R,eAAiBr6R,KAAKg6R,MAAO,CACrD,IAAIiqC,EAAkBjkU,KAAKikU,gBACvBpkQ,EAAM,OASV,GARAokQ,EAAgB32J,EAAIztG,EACpBokQ,EAAgBF,MAAQlkQ,EACxBokQ,EAAgB/+T,EAAI26D,EACpBokQ,EAAgBD,MAAQnkQ,EACxB7/D,KAAKskU,qBAAqBtkU,KAAKm9S,UAAW8mB,GAC1CA,EAAgB1kQ,MAAQ0kQ,EAAgBF,KAAOE,EAAgB32J,EAAI,EAAI22J,EAAgBF,KAAOE,EAAgB32J,EAC9G22J,EAAgBxkQ,OAASwkQ,EAAgBD,KAAOC,EAAgB/+T,EAAI,EAAI++T,EAAgBD,KAAOC,EAAgB/+T,EAE3GlF,KAAKukU,mBAAmBN,GAC1B,OAGF,IAAIO,GAAU,EAcd,GAZIxkU,KAAK66T,YAAYl+N,IAAMsnO,EAAgB1kQ,QACzCv/D,KAAK66T,YAAYl+N,EAAIsnO,EAAgB1kQ,MACrCv/D,KAAKmjU,UAAUv4P,aAAa,QAASq5P,EAAgB1kQ,OACrDilQ,GAAU,GAGRxkU,KAAK66T,YAAYr/M,IAAMyoN,EAAgBxkQ,SACzCz/D,KAAK66T,YAAYr/M,EAAIyoN,EAAgBxkQ,OACrCz/D,KAAKmjU,UAAUv4P,aAAa,SAAUq5P,EAAgBxkQ,QACtD+kQ,GAAU,GAGRA,GAAWxkU,KAAK66T,YAAYvtJ,IAAM22J,EAAgB32J,GAAKttK,KAAK66T,YAAY31T,IAAM++T,EAAgB/+T,EAAG,CACnGlF,KAAK66T,YAAYl+N,EAAIsnO,EAAgB1kQ,MACrCv/D,KAAK66T,YAAYr/M,EAAIyoN,EAAgBxkQ,OACrCz/D,KAAK66T,YAAYvtJ,EAAI22J,EAAgB32J,EACrCttK,KAAK66T,YAAY31T,EAAI++T,EAAgB/+T,EACrClF,KAAKmjU,UAAUv4P,aAAa,UAAW5qE,KAAK66T,YAAYvtJ,EAAI,IAAMttK,KAAK66T,YAAY31T,EAAI,IAAMlF,KAAK66T,YAAYl+N,EAAI,IAAM38F,KAAK66T,YAAYr/M,GACzI,IAAIipN,EAAazkU,KAAKmjU,UAAU34P,MAC5Bk6P,EAAiB,aAAe1kU,KAAK66T,YAAYvtJ,EAAI,MAAQttK,KAAK66T,YAAY31T,EAAI,MACtFu/T,EAAW/7E,UAAYg8E,EACvBD,EAAWzB,gBAAkB0B,KAmBnC7uD,gBAAgB,CAAC+mC,YAAawC,iBAAkBqb,aAAcpW,iBAAkBxH,aAAcyH,qBAAsByP,cAAe+G,cAEnIA,aAAa56T,UAAUomT,cAAgB,WAGrC,GAFAtmT,KAAKi3P,SAAWj3P,KAAKg9S,aAEjBh9S,KAAKi3P,SAAU,CACjBj3P,KAAKqzT,WAAa,MAClBrzT,KAAK2kU,MAAQ3kU,KAAKs+Q,KAAKluQ,KAAKusF,EAC5B38F,KAAK4kU,MAAQ5kU,KAAKs+Q,KAAKluQ,KAAKorG,EAC5Bx7G,KAAK03T,WAAW9sP,aAAa,QAAS5qE,KAAK2kU,OAC3C3kU,KAAK03T,WAAW9sP,aAAa,SAAU5qE,KAAK4kU,OAC5C,IAAIz/T,EAAI+2Q,SAAS,KACjBl8Q,KAAKugT,cAAcz1O,YAAY3lE,GAC/BnF,KAAKwmT,UAAYrhT,OAEjBnF,KAAKqzT,WAAa,OAClBrzT,KAAKwmT,UAAYxmT,KAAKw9S,aAGxBx9S,KAAKomT,kBAGP0U,aAAa56T,UAAUs2T,aAAe,WACpC,IAAIx3C,EAAeh/Q,KAAK67S,aAAaC,YACrC97S,KAAK6zT,gBAAkB77C,iBAAiBgH,EAAahxH,EAAIgxH,EAAahxH,EAAE3sJ,OAAS,GACjF,IAAIwjU,EAAiB7kU,KAAKwmT,UAAUh8O,MAChCs6P,EAAY9lD,EAAaotC,GAAKpsT,KAAK62T,WAAW73C,EAAaotC,IAAM,gBACrEyY,EAAe7oJ,KAAO8oJ,EACtBD,EAAej4G,MAAQk4G,EAEnB9lD,EAAa6xB,KACfg0B,EAAelL,OAAS35T,KAAK62T,WAAW73C,EAAa6xB,IACrDg0B,EAAe9pB,YAAc/7B,EAAamtC,GAAK,MAGjD,IAiBIjrT,EACA2/F,EAlBAgqM,EAAW7qS,KAAKinR,WAAWa,YAAYqpB,cAAcnyB,EAAa/5Q,GAEtE,IAAKjF,KAAKinR,WAAWa,YAAYxhL,MAI/B,GAHAu+N,EAAej2B,SAAW5vB,EAAasuC,UAAY,KACnDuX,EAAeE,WAAa/lD,EAAasuC,UAAY,KAEjDziB,EAASoF,OACXjwS,KAAKwmT,UAAUv+J,UAAY4iJ,EAASoF,WAC/B,CACL40B,EAAel2B,WAAa9D,EAASmF,QACrC,IAAI/E,EAAUjsB,EAAaisB,QACvBD,EAAShsB,EAAagsB,OAC1B65B,EAAe/1B,UAAY9D,EAC3B65B,EAAe91B,WAAa9D,EAMhC,IAEIgxB,EACA+I,EACAC,EAJAhV,EAAUjxC,EAAahxH,EAC3BntD,EAAMovN,EAAQ5uT,OAId,IACI48Q,EADA02C,EAAe30T,KAAK6iT,QAEpB6T,EAAW,GACXn6B,EAAM,EAEV,IAAKr7R,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAAG,CAuC3B,GAtCIlB,KAAKinR,WAAWa,YAAYxhL,OACzBtmG,KAAK+6T,UAAUx+B,GAMlB0/B,EAAQj8T,KAAK+6T,UAAUx+B,IALvB0/B,EAAQ//C,SAAS,QACjB+/C,EAAMrxP,aAAa,iBAAkBw8O,YAAY,IACjD6U,EAAMrxP,aAAa,kBAAmBy8O,aAAa,IACnD4U,EAAMrxP,aAAa,oBAAqB,MAKrC5qE,KAAKi3P,WACJj3P,KAAKk3T,UAAU36B,IACjByoC,EAAUhlU,KAAKk3T,UAAU36B,GACzB0oC,EAAQD,EAAQzwN,SAAS,KAEzBywN,EAAUpvD,UAAU,OACpBovD,EAAQx6P,MAAMu6P,WAAa,EAC3BE,EAAQ/oD,SAAS,OACjB+oD,EAAMn6P,YAAYmxP,GAClBziD,SAASwrD,MAGHhlU,KAAKi3P,SAYfglE,EAAQj8T,KAAK+6T,UAAUx+B,GAAOv8R,KAAK+6T,UAAUx+B,GAAOrgB,SAAS,QAXzDl8Q,KAAKk3T,UAAU36B,IACjByoC,EAAUhlU,KAAKk3T,UAAU36B,GACzB0/B,EAAQj8T,KAAK+6T,UAAUx+B,KAEvByoC,EAAUpvD,UAAU,QACpB4D,SAASwrD,GACT/I,EAAQrmD,UAAU,QAClB4D,SAASyiD,GACT+I,EAAQl6P,YAAYmxP,IAOpBj8T,KAAKinR,WAAWa,YAAYxhL,MAAO,CACrC,IACImsL,EADArT,EAAWp/Q,KAAKinR,WAAWa,YAAYgpB,YAAY9xB,EAAauuC,UAAUrsT,GAAI2pS,EAASG,OAAQhrS,KAAKinR,WAAWa,YAAYqpB,cAAcnyB,EAAa/5Q,GAAG+qS,SAkB7J,GAdEvd,EADErT,EACUA,EAAShvQ,KAET,KAGdukT,EAAa51O,QAET0zM,GAAaA,EAAUxU,QAAUwU,EAAUxU,OAAO58Q,SACpD48Q,EAASwU,EAAUxU,OAAO,GAAGnnH,GAC7B69J,EAAalzB,MAAMziB,EAAasuC,UAAY,IAAKtuC,EAAasuC,UAAY,KAC1EoJ,EAAW12T,KAAKy2T,gBAAgB9B,EAAc12C,GAC9Cg+C,EAAMrxP,aAAa,IAAK8rP,IAGrB12T,KAAKi3P,SAsBRj3P,KAAKwmT,UAAU17O,YAAYmxP,OAtBT,CAGlB,GAFAj8T,KAAKwmT,UAAU17O,YAAYk6P,GAEvBvyC,GAAaA,EAAUxU,OAAQ,CAEjCtoO,SAAS3wC,KAAK8lE,YAAYm6P,GAC1B,IAAI3B,EAAc2B,EAAM9iD,UACxB8iD,EAAMr6P,aAAa,QAAS04P,EAAY/jQ,MAAQ,GAChD0lQ,EAAMr6P,aAAa,SAAU04P,EAAY7jQ,OAAS,GAClDwlQ,EAAMr6P,aAAa,UAAW04P,EAAYh2J,EAAI,EAAI,KAAOg2J,EAAYp+T,EAAI,GAAK,KAAOo+T,EAAY/jQ,MAAQ,GAAK,KAAO+jQ,EAAY7jQ,OAAS,IAC1I,IAAIylQ,EAAaD,EAAMz6P,MACnB26P,EAAmB,cAAgB7B,EAAYh2J,EAAI,GAAK,OAASg2J,EAAYp+T,EAAI,GAAK,MAC1FggU,EAAWx8E,UAAYy8E,EACvBD,EAAWlC,gBAAkBmC,EAC7BlV,EAAQ/uT,GAAGmsT,QAAUiW,EAAYp+T,EAAI,OAErC+/T,EAAMr6P,aAAa,QAAS,GAC5Bq6P,EAAMr6P,aAAa,SAAU,GAG/Bo6P,EAAQl6P,YAAYm6P,SAQtB,GAHAhJ,EAAMttH,YAAcshH,EAAQ/uT,GAAGg+B,IAC/B+8R,EAAM9rH,eAAe,uCAAwC,YAAa,YAErEnwM,KAAKi3P,SAQRj3P,KAAKwmT,UAAU17O,YAAYmxP,OART,CAClBj8T,KAAKwmT,UAAU17O,YAAYk6P,GAE3B,IAAII,EAASnJ,EAAMzxP,MACf66P,EAAmB,kBAAoBrmD,EAAasuC,UAAY,IAAM,QAC1E8X,EAAO18E,UAAY28E,EACnBD,EAAOpC,gBAAkBqC,EAOxBrlU,KAAKi3P,SAGRj3P,KAAKk3T,UAAU36B,GAAO0/B,EAFtBj8T,KAAKk3T,UAAU36B,GAAOyoC,EAKxBhlU,KAAKk3T,UAAU36B,GAAK/xN,MAAM6mG,QAAU,QACpCrxK,KAAK+6T,UAAUx+B,GAAO0/B,EACtB1/B,GAAO,EAGT,MAAOA,EAAMv8R,KAAKk3T,UAAU71T,OAC1BrB,KAAKk3T,UAAU36B,GAAK/xN,MAAM6mG,QAAU,OACpCkrH,GAAO,GAIXu+B,aAAa56T,UAAUqmT,mBAAqB,WAC1C,IAAI+e,EAEJ,GAAItlU,KAAKoQ,KAAKqrT,YAAa,CACzB,IAAKz7T,KAAKq6R,gBAAkBr6R,KAAK8zT,mBAC/B,OAGF,GAAI9zT,KAAKi3P,UAAYj3P,KAAK6yS,eAAeyP,QAAS,CAEhDtiT,KAAK03T,WAAW9sP,aAAa,WAAY5qE,KAAK6yS,eAAeC,MAAMjzS,EAAE+F,EAAE,GAAK,KAAO5F,KAAK6yS,eAAeC,MAAMjzS,EAAE+F,EAAE,GAAK,IAAM5F,KAAK2kU,MAAQ,IAAM3kU,KAAK4kU,OACpJU,EAAWtlU,KAAK03T,WAAWltP,MAC3B,IAAI+6P,EAAc,cAAgBvlU,KAAK6yS,eAAeC,MAAMjzS,EAAE+F,EAAE,GAAK,OAAS5F,KAAK6yS,eAAeC,MAAMjzS,EAAE+F,EAAE,GAAK,MACjH0/T,EAAS58E,UAAY68E,EACrBD,EAAStC,gBAAkBuC,GAM/B,GAFAvlU,KAAKu2T,aAAatC,YAAYj0T,KAAK67S,aAAaC,YAAa97S,KAAK8zT,oBAE7D9zT,KAAK8zT,oBAAuB9zT,KAAKu2T,aAAazC,mBAAnD,CAIA,IAAI5yT,EACA2/F,EAKAg8N,EACAC,EACA0I,EANAv9S,EAAQ,EACR4rS,EAAkB7zT,KAAKu2T,aAAa1C,gBACpC5D,EAAUjwT,KAAK67S,aAAaC,YAAY9tJ,EAM5C,IALAntD,EAAMovN,EAAQ5uT,OAKTH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACpB+uT,EAAQ/uT,GAAGC,EACb8mB,GAAS,GAET60S,EAAW98T,KAAKk3T,UAAUh2T,GAC1BskU,EAAWxlU,KAAK+6T,UAAU75T,GAC1B27T,EAAiBhJ,EAAgB5rS,GACjCA,GAAS,EAEL40S,EAAe7iC,KAAK7zR,IACjBnG,KAAKi3P,SAIR6lE,EAASlyP,aAAa,YAAaiyP,EAAe12T,IAHlD22T,EAAStyP,MAAMw4P,gBAAkBnG,EAAe12T,EAChD22T,EAAStyP,MAAMk+K,UAAYm0E,EAAe12T,IAO9C22T,EAAStyP,MAAM+qO,QAAUsnB,EAAe32T,EAEpC22T,EAAe1Q,IAAM0Q,EAAe7iC,KAAKmyB,IAC3CqZ,EAAS56P,aAAa,eAAgBiyP,EAAe1Q,IAGnD0Q,EAAehsB,IAAMgsB,EAAe7iC,KAAK6W,IAC3C20B,EAAS56P,aAAa,SAAUiyP,EAAehsB,IAG7CgsB,EAAezQ,IAAMyQ,EAAe7iC,KAAKoyB,KAC3CoZ,EAAS56P,aAAa,OAAQiyP,EAAezQ,IAC7CoZ,EAASh7P,MAAMoiJ,MAAQiwG,EAAezQ,KAK5C,GAAIpsT,KAAKwmT,UAAUrkC,UAAYniR,KAAKoyS,SAAWpyS,KAAKq6R,eAAiBr6R,KAAKg6R,MAAO,CAC/E,IAAIspC,EAActjU,KAAKwmT,UAAUrkC,UAE7BniR,KAAK66T,YAAYl+N,IAAM2mO,EAAY/jQ,QACrCv/D,KAAK66T,YAAYl+N,EAAI2mO,EAAY/jQ,MACjCv/D,KAAK03T,WAAW9sP,aAAa,QAAS04P,EAAY/jQ,QAGhDv/D,KAAK66T,YAAYr/M,IAAM8nN,EAAY7jQ,SACrCz/D,KAAK66T,YAAYr/M,EAAI8nN,EAAY7jQ,OACjCz/D,KAAK03T,WAAW9sP,aAAa,SAAU04P,EAAY7jQ,SAGrD,IAAIqtJ,EAAS,EAEb,GAAI9sN,KAAK66T,YAAYl+N,IAAM2mO,EAAY/jQ,MAAiB,EAATutJ,GAAc9sN,KAAK66T,YAAYr/M,IAAM8nN,EAAY7jQ,OAAkB,EAATqtJ,GAAc9sN,KAAK66T,YAAYvtJ,IAAMg2J,EAAYh2J,EAAIw/C,GAAU9sN,KAAK66T,YAAY31T,IAAMo+T,EAAYp+T,EAAI4nN,EAAQ,CACrN9sN,KAAK66T,YAAYl+N,EAAI2mO,EAAY/jQ,MAAiB,EAATutJ,EACzC9sN,KAAK66T,YAAYr/M,EAAI8nN,EAAY7jQ,OAAkB,EAATqtJ,EAC1C9sN,KAAK66T,YAAYvtJ,EAAIg2J,EAAYh2J,EAAIw/C,EACrC9sN,KAAK66T,YAAY31T,EAAIo+T,EAAYp+T,EAAI4nN,EACrC9sN,KAAK03T,WAAW9sP,aAAa,UAAW5qE,KAAK66T,YAAYvtJ,EAAI,IAAMttK,KAAK66T,YAAY31T,EAAI,IAAMlF,KAAK66T,YAAYl+N,EAAI,IAAM38F,KAAK66T,YAAYr/M,GAC1I8pN,EAAWtlU,KAAK03T,WAAWltP,MAC3B,IAAIi7P,EAAe,aAAezlU,KAAK66T,YAAYvtJ,EAAI,MAAQttK,KAAK66T,YAAY31T,EAAI,MACpFogU,EAAS58E,UAAY+8E,EACrBH,EAAStC,gBAAkByC,MAgDjC5vD,gBAAgB,CAAC+mC,YAAaC,aAAcwH,kBAAmB2W,gBAE/DA,eAAe96T,UAAUwlU,MAAQ,WAC/B,IAAIxkU,EAEAo9Q,EACAqnD,EACAzD,EAHArhO,EAAM7gG,KAAKs+Q,KAAK+8C,eAAeh6T,OAKnC,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAIxB,GAFAo9Q,EAAOt+Q,KAAKs+Q,KAAK+8C,eAAen6T,GAEd,OAAdo9Q,EAAKpxP,KAAe,CACtBy4S,EAAmBrnD,EAAKsnD,gBAAgBp7P,MACxC03P,EAAiB5jD,EAAK5rI,UAAUloE,MAChC,IAAIq7P,EAAc7lU,KAAKi7T,GAAGr1T,EAAI,KAC1B44C,EAAS,cACTktP,EAAS,4CACbi6B,EAAiBE,YAAcA,EAC/BF,EAAiBG,kBAAoBD,EACrC3D,EAAezoD,gBAAkBj7N,EACjC0jR,EAAeC,mBAAqB3jR,EACpC0jR,EAAexoD,sBAAwBl7N,EACvCmnR,EAAiBj9E,UAAYgjD,EAC7Bi6B,EAAiB3C,gBAAkBt3B,IAKzCsvB,eAAe96T,UAAU+9T,eAAiB,aAE1CjD,eAAe96T,UAAUgrR,KAAO,aAEhC8vC,eAAe96T,UAAUkpR,YAAc,WACrC,IACIloR,EACA2/F,EAFAm5L,EAAOh6R,KAAKq6R,cAIhB,GAAIr6R,KAAKi7M,UAGP,IAFAp6G,EAAM7gG,KAAKi7M,UAAU55M,OAEhBH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB84R,EAAOh6R,KAAKi7M,UAAU/5M,GAAG2xS,eAAeC,MAAM9Y,MAAQA,EAI1D,GAAIA,GAAQh6R,KAAKi7T,GAAGjhC,MAAQh6R,KAAKH,GAAKG,KAAKH,EAAEm6R,MAAQh6R,KAAK2pS,KAAO3pS,KAAK2pS,GAAG3P,MAAQh6R,KAAK4pS,GAAG5P,MAAQh6R,KAAK6pS,GAAG7P,OAASh6R,KAAK+oL,GAAGixG,MAAQh6R,KAAK0pS,GAAG1P,MAAQh6R,KAAKypS,GAAGzP,MAAQh6R,KAAKg/R,GAAGhF,MAAQh6R,KAAK4G,GAAK5G,KAAK4G,EAAEozR,KAAM,CAGvM,GAFAh6R,KAAKwpS,IAAIzqN,QAEL/+E,KAAKi7M,UAGP,IAFAp6G,EAAM7gG,KAAKi7M,UAAU55M,OAAS,EAEzBH,EAAI2/F,EAAK3/F,GAAK,EAAGA,GAAK,EAAG,CAC5B,IAAI6kU,EAAU/lU,KAAKi7M,UAAU/5M,GAAG2xS,eAAeC,MAC/C9yS,KAAKwpS,IAAI5H,WAAWmkC,EAAQlmU,EAAE+F,EAAE,IAAKmgU,EAAQlmU,EAAE+F,EAAE,GAAImgU,EAAQlmU,EAAE+F,EAAE,IACjE5F,KAAKwpS,IAAIrI,SAAS4kC,EAAQ/mC,GAAGp5R,EAAE,IAAIw7R,SAAS2kC,EAAQ/mC,GAAGp5R,EAAE,IAAIy7R,QAAQ0kC,EAAQ/mC,GAAGp5R,EAAE,IAClF5F,KAAKwpS,IAAIrI,SAAS4kC,EAAQh9I,GAAGnjL,GAAGw7R,SAAS2kC,EAAQr8B,GAAG9jS,GAAGy7R,QAAQ0kC,EAAQt8B,GAAG7jS,GAC1E5F,KAAKwpS,IAAI/H,MAAM,EAAIskC,EAAQ9kU,EAAE2E,EAAE,GAAI,EAAImgU,EAAQ9kU,EAAE2E,EAAE,GAAI,EAAImgU,EAAQ9kU,EAAE2E,EAAE,IACvE5F,KAAKwpS,IAAI5H,UAAUmkC,EAAQn/T,EAAEhB,EAAE,GAAImgU,EAAQn/T,EAAEhB,EAAE,GAAImgU,EAAQn/T,EAAEhB,EAAE,IAUnE,GANI5F,KAAKH,EACPG,KAAKwpS,IAAI5H,WAAW5hS,KAAKH,EAAE+F,EAAE,IAAK5F,KAAKH,EAAE+F,EAAE,GAAI5F,KAAKH,EAAE+F,EAAE,IAExD5F,KAAKwpS,IAAI5H,WAAW5hS,KAAK2pS,GAAG/jS,GAAI5F,KAAK4pS,GAAGhkS,EAAG5F,KAAK6pS,GAAGjkS,GAGjD5F,KAAK4G,EAAG,CACV,IAAIo/T,EAGFA,EADEhmU,KAAKH,EACM,CAACG,KAAKH,EAAE+F,EAAE,GAAK5F,KAAK4G,EAAEhB,EAAE,GAAI5F,KAAKH,EAAE+F,EAAE,GAAK5F,KAAK4G,EAAEhB,EAAE,GAAI5F,KAAKH,EAAE+F,EAAE,GAAK5F,KAAK4G,EAAEhB,EAAE,IAE9E,CAAC5F,KAAK2pS,GAAG/jS,EAAI5F,KAAK4G,EAAEhB,EAAE,GAAI5F,KAAK4pS,GAAGhkS,EAAI5F,KAAK4G,EAAEhB,EAAE,GAAI5F,KAAK6pS,GAAGjkS,EAAI5F,KAAK4G,EAAEhB,EAAE,IAGvF,IAAIqgU,EAAMh3T,KAAKwpQ,KAAKxpQ,KAAKmvH,IAAI4nM,EAAW,GAAI,GAAK/2T,KAAKmvH,IAAI4nM,EAAW,GAAI,GAAK/2T,KAAKmvH,IAAI4nM,EAAW,GAAI,IAElGE,EAAU,CAACF,EAAW,GAAKC,EAAKD,EAAW,GAAKC,EAAKD,EAAW,GAAKC,GACrEE,EAAiBl3T,KAAKwpQ,KAAKytD,EAAQ,GAAKA,EAAQ,GAAKA,EAAQ,GAAKA,EAAQ,IAC1EE,EAAan3T,KAAKgqR,MAAMitC,EAAQ,GAAIC,GACpCE,EAAap3T,KAAKgqR,MAAMitC,EAAQ,IAAKA,EAAQ,IACjDlmU,KAAKwpS,IAAIpI,QAAQilC,GAAYllC,SAASilC,GAGxCpmU,KAAKwpS,IAAIrI,SAASnhS,KAAK+oL,GAAGnjL,GAAGw7R,SAASphS,KAAK0pS,GAAG9jS,GAAGy7R,QAAQrhS,KAAKypS,GAAG7jS,GACjE5F,KAAKwpS,IAAIrI,SAASnhS,KAAKg/R,GAAGp5R,EAAE,IAAIw7R,SAASphS,KAAKg/R,GAAGp5R,EAAE,IAAIy7R,QAAQrhS,KAAKg/R,GAAGp5R,EAAE,IACzE5F,KAAKwpS,IAAI5H,UAAU5hS,KAAKinR,WAAWiyB,SAASv8M,EAAI,EAAG38F,KAAKinR,WAAWiyB,SAAS19L,EAAI,EAAG,GACnFx7G,KAAKwpS,IAAI5H,UAAU,EAAG,EAAG5hS,KAAKi7T,GAAGr1T,GACjC,IAAI0gU,GAAoBtmU,KAAKk7T,SAASp3B,OAAO9jS,KAAKwpS,KAElD,IAAK88B,GAAoBtmU,KAAKi7T,GAAGjhC,OAASh6R,KAAKs+Q,KAAK+8C,eAAgB,CAElE,IAAI/8C,EACAqnD,EACAzD,EAEJ,IALArhO,EAAM7gG,KAAKs+Q,KAAK+8C,eAAeh6T,OAK1BH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAGxB,GAFAo9Q,EAAOt+Q,KAAKs+Q,KAAK+8C,eAAen6T,GAEd,OAAdo9Q,EAAKpxP,KAAe,CACtB,GAAIo5S,EAAkB,CACpB,IAAIC,EAAWvmU,KAAKwpS,IAAIrE,QACxB+8B,EAAiB5jD,EAAK5rI,UAAUloE,MAChC03P,EAAex5E,UAAY69E,EAC3BrE,EAAec,gBAAkBuD,EAG/BvmU,KAAKi7T,GAAGjhC,OACV2rC,EAAmBrnD,EAAKsnD,gBAAgBp7P,MACxCm7P,EAAiBE,YAAc7lU,KAAKi7T,GAAGr1T,EAAI,KAC3C+/T,EAAiBG,kBAAoB9lU,KAAKi7T,GAAGr1T,EAAI,MAKvD5F,KAAKwpS,IAAIr7Q,MAAMnuB,KAAKk7T,WAIxBl7T,KAAKq6R,eAAgB,GAGvB2gC,eAAe96T,UAAUykR,aAAe,SAAUt2Q,GAChDrO,KAAK49S,kBAAkBvvS,GAAK,IAG9B2sT,eAAe96T,UAAUijR,QAAU,aAEnC63C,eAAe96T,UAAUsgT,eAAiB,WACxC,OAAO,MAQT3qC,gBAAgB,CAAC+mC,YAAawC,iBAAkBqb,aAAcC,cAAerW,iBAAkBxH,aAAc5K,mBAAoBkpB,eAEjIA,cAAcj7T,UAAUomT,cAAgB,WACtC,IAAI1vC,EAAY52Q,KAAKinR,WAAWtF,cAAc3hR,KAAK4hR,WAC/CK,EAAM,IAAIukD,MAEVxmU,KAAKoQ,KAAKotQ,SACZx9Q,KAAKymU,UAAYvqD,SAAS,SAC1Bl8Q,KAAKymU,UAAU77P,aAAa,QAAS5qE,KAAK4hR,UAAUjlL,EAAI,MACxD38F,KAAKymU,UAAU77P,aAAa,SAAU5qE,KAAK4hR,UAAUpmK,EAAI,MACzDx7G,KAAKymU,UAAUt2H,eAAe,+BAAgC,OAAQymE,GACtE52Q,KAAKw9S,aAAa1yO,YAAY9qE,KAAKymU,WACnCzmU,KAAKu9S,YAAY3yO,aAAa,QAAS5qE,KAAK4hR,UAAUjlL,GACtD38F,KAAKu9S,YAAY3yO,aAAa,SAAU5qE,KAAK4hR,UAAUpmK,IAEvDx7G,KAAKw9S,aAAa1yO,YAAYm3M,GAGhCA,EAAIQ,YAAc,YAClBR,EAAI53M,IAAMusM,EAEN52Q,KAAKoQ,KAAKq1S,IACZzlT,KAAKu9S,YAAY3yO,aAAa,KAAM5qE,KAAKoQ,KAAKq1S,KAiClD5vC,gBAAgB,CAACspC,cAAeic,oBAChCA,mBAAmBl7T,UAAU2gT,UAAY4W,YAAYv3T,UAAU2gT,UAE/Dua,mBAAmBl7T,UAAU4gT,qBAAuB,WAClD,MAAO9gT,KAAKgiT,gBAAgB3gT,OAAQ,CAClC,IAAIm5J,EAAUx6J,KAAKgiT,gBAAgBj8S,MACnCy0J,EAAQ4rJ,mBAIZgV,mBAAmBl7T,UAAU68T,mBAAqB,SAAUviK,EAASpmF,GACnE,IAAIsyP,EAAgBlsK,EAAQgmJ,iBAE5B,GAAKkmB,EAAL,CAIA,IAAI1tB,EAAQh5S,KAAKi9Q,OAAO7oM,GAExB,GAAK4kO,EAAMz9G,KAAQv7L,KAAKw3T,WA4BtBx3T,KAAK2mU,iBAAiBD,EAAetyP,QA3BrC,GAAIp0E,KAAKq7T,eACPr7T,KAAK2mU,iBAAiBD,EAAetyP,OAChC,CACL,IACIwyP,EACAC,EACAC,EAHA5lU,EAAI,EAKR,MAAOA,EAAIkzE,EACLp0E,KAAKosS,SAASlrS,KAA2B,IAArBlB,KAAKosS,SAASlrS,IAAelB,KAAKosS,SAASlrS,GAAGs/S,iBACpEqmB,EAAY7mU,KAAKosS,SAASlrS,GAC1B4lU,EAAgB9mU,KAAKi9Q,OAAO/7Q,GAAGq6L,IAAMv7L,KAAK+mU,wBAAwB7lU,GAAK2lU,EAAUrmB,iBACjFomB,EAAiBE,GAAiBF,GAGpC1lU,GAAK,EAGH0lU,EACG5tB,EAAMz9G,KAAQv7L,KAAKw3T,YACtBx3T,KAAKw9S,aAAatvG,aAAaw4H,EAAeE,GAEtC5tB,EAAMz9G,KAAQv7L,KAAKw3T,YAC7Bx3T,KAAKw9S,aAAa1yO,YAAY47P,MAQtCtL,mBAAmBl7T,UAAUkhT,YAAc,SAAUhxS,GACnD,OAAKpQ,KAAKw3T,WAIH,IAAImD,cAAcvqT,EAAMpQ,KAAKinR,WAAYjnR,MAHvC,IAAI+rT,gBAAgB37S,EAAMpQ,KAAKinR,WAAYjnR,OAMtDo7T,mBAAmBl7T,UAAUmhT,WAAa,SAAUjxS,GAClD,OAAKpQ,KAAKw3T,WAIH,IAAIsD,aAAa1qT,EAAMpQ,KAAKinR,WAAYjnR,MAHtC,IAAIi3T,qBAAqB7mT,EAAMpQ,KAAKinR,WAAYjnR,OAM3Do7T,mBAAmBl7T,UAAUohT,aAAe,SAAUlxS,GAEpD,OADApQ,KAAKs7T,OAAS,IAAIN,eAAe5qT,EAAMpQ,KAAKinR,WAAYjnR,MACjDA,KAAKs7T,QAGdF,mBAAmBl7T,UAAU8gT,YAAc,SAAU5wS,GACnD,OAAKpQ,KAAKw3T,WAIH,IAAI2D,cAAc/qT,EAAMpQ,KAAKinR,WAAYjnR,MAHvC,IAAIukT,cAAcn0S,EAAMpQ,KAAKinR,WAAYjnR,OAMpDo7T,mBAAmBl7T,UAAUghT,YAAc,SAAU9wS,GACnD,OAAKpQ,KAAKw3T,WAIH,IAAIkD,cAActqT,EAAMpQ,KAAKinR,WAAYjnR,MAHvC,IAAIm3T,cAAc/mT,EAAMpQ,KAAKinR,WAAYjnR,OAMpDo7T,mBAAmBl7T,UAAUihT,WAAasW,YAAYv3T,UAAUihT,WAEhEia,mBAAmBl7T,UAAU6mU,wBAA0B,SAAU3yP,GAC/D,IAAIlzE,EAAI,EACJ2/F,EAAM7gG,KAAKq7T,eAAeh6T,OAE9B,MAAOH,EAAI2/F,EAAK,CACd,GAAI7gG,KAAKq7T,eAAen6T,GAAG8lU,UAAY5yP,GAAOp0E,KAAKq7T,eAAen6T,GAAGm2J,QAAUjjF,EAC7E,OAAOp0E,KAAKq7T,eAAen6T,GAAG0kU,gBAGhC1kU,GAAK,EAGP,OAAO,MAGTk6T,mBAAmBl7T,UAAU+mU,sBAAwB,SAAU7yP,EAAKlnD,GAClE,IACIs9C,EACA03P,EAFA0D,EAAkBhwD,UAAU,OAGhC4D,SAASosD,GACT,IAAIlzL,EAAYkjI,UAAU,OAG1B,GAFA4D,SAAS9mI,GAEI,OAATxlH,EAAe,CACjBs9C,EAAQo7P,EAAgBp7P,MACxBA,EAAMjL,MAAQv/D,KAAKinR,WAAWiyB,SAASv8M,EAAI,KAC3CnyB,EAAM/K,OAASz/D,KAAKinR,WAAWiyB,SAAS19L,EAAI,KAC5C,IAAI0rN,EAAS,UACb18P,EAAMkvM,sBAAwBwtD,EAC9B18P,EAAM23P,mBAAqB+E,EAC3B18P,EAAMivM,gBAAkBytD,EACxBhF,EAAiBxvL,EAAUloE,MAC3B,IAAIkhO,EAAS,4CACbw2B,EAAex5E,UAAYgjD,EAC3Bw2B,EAAec,gBAAkBt3B,EAGnCk6B,EAAgB96P,YAAY4nE,GAE5B,IAAIy0L,EAAsB,CACxBz0L,UAAWA,EACXkzL,gBAAiBA,EACjBoB,SAAU5yP,EACVijF,OAAQjjF,EACRlnD,KAAMA,GAGR,OADAltB,KAAKq7T,eAAer1T,KAAKmhU,GAClBA,GAGT/L,mBAAmBl7T,UAAUknU,kBAAoB,WAC/C,IAAIlmU,EAEAmmU,EADAxmO,EAAM7gG,KAAKi9Q,OAAO57Q,OAElBimU,EAAmB,GAEvB,IAAKpmU,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACpBlB,KAAKi9Q,OAAO/7Q,GAAGq6L,KAA6B,IAAtBv7L,KAAKi9Q,OAAO/7Q,GAAG28Q,IACd,OAArBypD,IACFA,EAAmB,KACnBD,EAA0BrnU,KAAKinU,sBAAsB/lU,EAAG,OAG1DmmU,EAAwBhwK,OAASpoJ,KAAK4wD,IAAIwnQ,EAAwBhwK,OAAQn2J,KAEjD,OAArBomU,IACFA,EAAmB,KACnBD,EAA0BrnU,KAAKinU,sBAAsB/lU,EAAG,OAG1DmmU,EAAwBhwK,OAASpoJ,KAAK4wD,IAAIwnQ,EAAwBhwK,OAAQn2J,IAM9E,IAFA2/F,EAAM7gG,KAAKq7T,eAAeh6T,OAErBH,EAAI2/F,EAAM,EAAG3/F,GAAK,EAAGA,GAAK,EAC7BlB,KAAKunU,YAAYz8P,YAAY9qE,KAAKq7T,eAAen6T,GAAG0kU,kBAIxDxK,mBAAmBl7T,UAAUymU,iBAAmB,SAAUz6C,EAAM93M,GAC9D,IAAIlzE,EAAI,EACJ2/F,EAAM7gG,KAAKq7T,eAAeh6T,OAE9B,MAAOH,EAAI2/F,EAAK,CACd,GAAIzsB,GAAOp0E,KAAKq7T,eAAen6T,GAAGm2J,OAAQ,CACxC,IACI2lK,EADAn2T,EAAI7G,KAAKq7T,eAAen6T,GAAG8lU,SAG/B,MAAOngU,EAAIutE,EACLp0E,KAAKosS,SAASvlS,IAAM7G,KAAKosS,SAASvlS,GAAG25S,iBACvCwc,EAAch9T,KAAKosS,SAASvlS,GAAG25S,kBAGjC35S,GAAK,EAGHm2T,EACFh9T,KAAKq7T,eAAen6T,GAAGwxI,UAAUw7D,aAAag+E,EAAM8wC,GAEpDh9T,KAAKq7T,eAAen6T,GAAGwxI,UAAU5nE,YAAYohN,GAG/C,MAGFhrR,GAAK,IAITk6T,mBAAmBl7T,UAAUumR,gBAAkB,SAAU+B,GACvD,IAAI++C,EAAc3xD,UAAU,OACxBz4G,EAAUn9J,KAAKoiT,cAAcjlJ,QAC7B3yF,EAAQ+8P,EAAY/8P,MACxBA,EAAMjL,MAAQipN,EAAS7rL,EAAI,KAC3BnyB,EAAM/K,OAAS+oN,EAAShtK,EAAI,KAC5Bx7G,KAAKunU,YAAcA,EACnB/tD,SAAS+tD,GACT/8P,EAAMqvM,eAAiB,OACvBrvM,EAAMuvM,kBAAoB,OAC1BvvM,EAAMsvM,qBAAuB,OAEzB95Q,KAAK+yS,aAAa9qJ,WACpBs/K,EAAY38P,aAAa,QAAS5qE,KAAK+yS,aAAa9qJ,WAGtDkV,EAAQryF,YAAYy8P,GACpB/8P,EAAM7P,SAAW,SACjB,IAAIurI,EAAMg2E,SAAS,OACnBh2E,EAAIt7H,aAAa,QAAS,KAC1Bs7H,EAAIt7H,aAAa,SAAU,KAC3B4uM,SAAStzE,GACTlmM,KAAKunU,YAAYz8P,YAAYo7H,GAC7B,IAAIghF,EAAOhL,SAAS,QACpBh2E,EAAIp7H,YAAYo8M,GAChBlnR,KAAKoQ,KAAOo4Q,EAEZxoR,KAAKkiT,gBAAgB15B,EAAUtiF,GAC/BlmM,KAAKinR,WAAWC,KAAOA,EACvBlnR,KAAKi9Q,OAASuL,EAASvL,OACvBj9Q,KAAKw9S,aAAex9S,KAAKunU,YACzBvnU,KAAKonU,oBACLpnU,KAAKkpR,uBAGPkyC,mBAAmBl7T,UAAUijR,QAAU,WAOrC,IAAIjiR,EANAlB,KAAKoiT,cAAcjlJ,UACrBn9J,KAAKoiT,cAAcjlJ,QAAQuvD,UAAY,IAGzC1sN,KAAKoiT,cAAc1vK,UAAY,KAC/B1yI,KAAKinR,WAAWC,KAAO,KAEvB,IAAIrmL,EAAM7gG,KAAKi9Q,OAASj9Q,KAAKi9Q,OAAO57Q,OAAS,EAE7C,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBlB,KAAKosS,SAASlrS,GAAGiiR,UAGnBnjR,KAAKosS,SAAS/qS,OAAS,EACvBrB,KAAKikO,WAAY,EACjBjkO,KAAKoiT,cAAgB,MAGvBgZ,mBAAmBl7T,UAAUgpR,oBAAsB,WACjD,IAIIqY,EACA5C,EACAkD,EACAhkB,EAPAykD,EAAetiU,KAAKoiT,cAAcjlJ,QAAQ8xI,YAC1CszB,EAAgBviU,KAAKoiT,cAAcjlJ,QAAQulK,aAC3CF,EAAaF,EAAeC,EAC5BE,EAAeziU,KAAKinR,WAAWiyB,SAASv8M,EAAI38F,KAAKinR,WAAWiyB,SAAS19L,EAMrEinN,EAAeD,GACjBjhC,EAAK+gC,EAAetiU,KAAKinR,WAAWiyB,SAASv8M,EAC7CgiM,EAAK2jC,EAAetiU,KAAKinR,WAAWiyB,SAASv8M,EAC7CklM,EAAK,EACLhkB,GAAM0kD,EAAgBviU,KAAKinR,WAAWiyB,SAAS19L,GAAK8mN,EAAetiU,KAAKinR,WAAWiyB,SAASv8M,IAAM,IAElG4kM,EAAKghC,EAAgBviU,KAAKinR,WAAWiyB,SAAS19L,EAC9CmjL,EAAK4jC,EAAgBviU,KAAKinR,WAAWiyB,SAAS19L,EAC9CqmL,GAAMygC,EAAetiU,KAAKinR,WAAWiyB,SAASv8M,GAAK4lO,EAAgBviU,KAAKinR,WAAWiyB,SAAS19L,IAAM,EAClGqiK,EAAK,GAGP,IAAIrzM,EAAQxqE,KAAKunU,YAAY/8P,MAC7BA,EAAMw4P,gBAAkB,YAAczhC,EAAK,YAAc5C,EAAK,gBAAkBkD,EAAK,IAAMhkB,EAAK,QAChGrzM,EAAMk+K,UAAYl+K,EAAMw4P,iBAG1B5H,mBAAmBl7T,UAAUkpR,YAAcquC,YAAYv3T,UAAUkpR,YAEjEgyC,mBAAmBl7T,UAAUgrR,KAAO,WAClClrR,KAAKunU,YAAY/8P,MAAM6mG,QAAU,QAGnC+pJ,mBAAmBl7T,UAAUirR,KAAO,WAClCnrR,KAAKunU,YAAY/8P,MAAM6mG,QAAU,SAGnC+pJ,mBAAmBl7T,UAAU6oR,UAAY,WAGvC,GAFA/oR,KAAKwhT,gBAEDxhT,KAAKs7T,OACPt7T,KAAKs7T,OAAOoK,YACP,CACL,IAEIxkU,EAFAsmU,EAASxnU,KAAKinR,WAAWiyB,SAASv8M,EAClC8qO,EAAUznU,KAAKinR,WAAWiyB,SAAS19L,EAEnC3a,EAAM7gG,KAAKq7T,eAAeh6T,OAE9B,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAAG,CAC3B,IAAIspE,EAAQxqE,KAAKq7T,eAAen6T,GAAG0kU,gBAAgBp7P,MACnDA,EAAMs7P,kBAAoB72T,KAAKwpQ,KAAKxpQ,KAAKmvH,IAAIopM,EAAQ,GAAKv4T,KAAKmvH,IAAIqpM,EAAS,IAAM,KAClFj9P,EAAMq7P,YAAcr7P,EAAMs7P,qBAKhC1K,mBAAmBl7T,UAAUwoR,wBAA0B,SAAUtK,GAC/D,IAAIl9Q,EACA2/F,EAAMu9K,EAAO/8Q,OACbqmU,EAAoB9xD,UAAU,OAElC,IAAK10Q,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB,GAAIk9Q,EAAOl9Q,GAAG0jR,GAAI,CAChB,IAAItG,EAAOt+Q,KAAKihT,WAAW7iC,EAAOl9Q,GAAIwmU,EAAmB1nU,KAAKinR,WAAW3I,KAAM,MAC/EA,EAAK2J,kBACLjoR,KAAKinR,WAAWX,iBAAiB/B,oBAAoBjG,KAiB3DzI,gBAAgB,CAACulD,mBAAoB9D,aAAcmD,cAAec,cAClEA,aAAar7T,UAAUynU,6BAA+BpM,aAAar7T,UAAU2kT,wBAE7E0W,aAAar7T,UAAU2kT,wBAA0B,WAC/C7kT,KAAK2nU,+BAGD3nU,KAAKoQ,KAAKotQ,SACZx9Q,KAAK03T,WAAW9sP,aAAa,QAAS5qE,KAAKoQ,KAAKusF,GAChD38F,KAAK03T,WAAW9sP,aAAa,SAAU5qE,KAAKoQ,KAAKorG,GACjDx7G,KAAK+kT,mBAAqB/kT,KAAKu9S,aAE/Bv9S,KAAK+kT,mBAAqB/kT,KAAKw9S,cAInC+d,aAAar7T,UAAUymU,iBAAmB,SAAUz6C,EAAM93M,GACxD,IACI4oP,EADAn2T,EAAI,EAGR,MAAOA,EAAIutE,EACLp0E,KAAKosS,SAASvlS,IAAM7G,KAAKosS,SAASvlS,GAAG25S,iBACvCwc,EAAch9T,KAAKosS,SAASvlS,GAAG25S,kBAGjC35S,GAAK,EAGHm2T,EACFh9T,KAAKw9S,aAAatvG,aAAag+E,EAAM8wC,GAErCh9T,KAAKw9S,aAAa1yO,YAAYohN,IAIlCqvC,aAAar7T,UAAU+gT,WAAa,SAAU7wS,GAC5C,OAAKpQ,KAAKw3T,WAIH,IAAI+D,aAAanrT,EAAMpQ,KAAKinR,WAAYjnR,MAHtC,IAAIu3T,eAAennT,EAAMpQ,KAAKinR,WAAYjnR,OAmCrD61Q,gBAAgB,CAACulD,oBAAqBI,gBAEtCA,eAAet7T,UAAU+gT,WAAa,SAAU7wS,GAC9C,OAAKpQ,KAAKw3T,WAIH,IAAI+D,aAAanrT,EAAMpQ,KAAKinR,WAAYjnR,MAHtC,IAAIu3T,eAAennT,EAAMpQ,KAAKinR,WAAYjnR,OAMrD,IAAI4nU,YAAc,WAChB,IAAItlD,EAAK,GAGT,SAAS2F,EAAgBzH,GACvB,IAAIqnD,EAAa,EACbC,EAAY,GAEhB,SAASC,IACPF,GAAc,EAGhB,SAASG,IACPH,GAAc,EAEK,IAAfA,GACFI,IAIJ,SAASC,EAA2BC,IACK,IAAnCL,EAAU5sT,QAAQitT,IACpBL,EAAU9hU,KAAKmiU,GAInB,SAASF,IACP,IAAI/mU,EACA2/F,EAAMinO,EAAUzmU,OAEpB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB4mU,EAAU5mU,GAAGmvR,UAGfy3C,EAAUzmU,OAAS,EAGrBm/Q,EAAUsF,SAAShB,cAAgBi0B,wBAAwBv4B,EAAUsF,UACrEtF,EAAUsF,SAASmB,WAAWX,iBAAiB/B,oBAAoB/D,EAAUsF,UAC7EtF,EAAUsF,SAASmB,WAAW8gD,eAAiBA,EAC/CvnD,EAAUsF,SAASmB,WAAW+gD,cAAgBA,EAC9CxnD,EAAUsF,SAASmB,WAAWihD,2BAA6BA,EAG7D,OA1CA5lD,EAAG2F,gBAAkBA,EA0Cd3F,EA5CS,GA+ClB,SAAS8lD,UAAUttT,GAAuV,OAA1OstT,UAArD,oBAAX1iU,QAAoD,kBAApBA,OAAOC,SAAqC,SAAiBmV,GAAO,cAAcA,GAA6B,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXpV,QAAyBoV,EAAI7a,cAAgByF,QAAUoV,IAAQpV,OAAOxF,UAAY,gBAAkB4a,GAAiBstT,UAAUttT,GA2B3X,SAASutT,WAAWl4C,EAAMU,GAIxB,IAaIy3C,EAbAjzL,EAASr1I,KACTu/D,EAAQ,IAEZgpQ,EAAS,EAETnnJ,EAAS,GAETonJ,EAAU,SAEVC,EAAa53C,EAAKzyJ,IAAI7+D,EAAOgpQ,GACzBG,EAAe73C,EAAKzyJ,IAAI,EAAGgjD,GAC3BzmH,EAA0B,EAAf+tQ,EACXn1B,EAAOh0O,EAAQ,EAOnB,SAASopQ,EAAWC,EAAMhnU,EAASywB,GACjC,IAAIzW,EAAM,GACVha,GAAsB,IAAZA,EAAmB,CAC3BinU,SAAS,GACPjnU,GAAW,GAEf,IAAIknU,EAAYC,EAAOxlE,EAAQ3hQ,EAAQinU,QAAU,CAACD,EAAMI,EAAS74C,IAAkB,OAATy4C,EAAgBK,IAAaL,EAAM,GAAIhtT,GAE7GstT,EAAO,IAAIC,EAAKvtT,GAGhBwtT,EAAO,WACT,IAAIjoU,EAAI+nU,EAAK/jU,EAAEojU,GAEf5oU,EAAI8oU,EAEJn7J,EAAI,EAEJ,MAAOnsK,EAAIunU,EAETvnU,GAAKA,EAAImsK,GAAK/tG,EAEd5/D,GAAK4/D,EAEL+tG,EAAI47J,EAAK/jU,EAAE,GAGb,MAAOhE,GAAKw5D,EAEVx5D,GAAK,EAELxB,GAAK,EAEL2tK,KAAO,EAGT,OAAQnsK,EAAImsK,GAAK3tK,GAenB,OAZAypU,EAAKC,MAAQ,WACX,OAAmB,EAAZH,EAAK/jU,EAAE,IAGhBikU,EAAKE,MAAQ,WACX,OAAOJ,EAAK/jU,EAAE,GAAK,YAGrBikU,EAAK,UAAYA,EAEjBL,EAAOC,EAASE,EAAKvyK,GAAIw5H,IAEjBvuR,EAAQ2nU,MAAQl3S,GAAY,SAAU+2S,EAAMR,EAAMY,EAAcn9R,GAetE,OAdIA,IAEEA,EAAMsqH,GACR+lG,EAAKrwN,EAAO68R,GAIdE,EAAK/8R,MAAQ,WACX,OAAOqwN,EAAKwsE,EAAM,MAMlBM,GACF34C,EAAK23C,GAAWY,EACTR,GAGGQ,IACXA,EAAMN,EAAW,WAAYlnU,EAAUA,EAAQyzI,OAASr1I,MAAQ6wR,EAAMjvR,EAAQyqC,OAcnF,SAAS88R,EAAKvtT,GACZ,IAAI5a,EACAyoU,EAAS7tT,EAAIva,OACbqoU,EAAK1pU,KACLkB,EAAI,EACJ2F,EAAI6iU,EAAGxoU,EAAIwoU,EAAG7iU,EAAI,EAClB5F,EAAIyoU,EAAG/yK,EAAI,GAEV8yK,IACH7tT,EAAM,CAAC6tT,MAIT,MAAOvoU,EAAIq+D,EACTt+D,EAAEC,GAAKA,IAGT,IAAKA,EAAI,EAAGA,EAAIq+D,EAAOr+D,IACrBD,EAAEC,GAAKD,EAAE4F,EAAI0sS,EAAO1sS,EAAI+U,EAAI1a,EAAIuoU,IAAWzoU,EAAIC,EAAEC,KACjDD,EAAE4F,GAAK7F,EAIT0oU,EAAGvkU,EAAI,SAAU8iB,GAEf,IAAIjnB,EACAoF,EAAI,EACJlF,EAAIwoU,EAAGxoU,EACP2F,EAAI6iU,EAAG7iU,EACP5F,EAAIyoU,EAAG/yK,EAEX,MAAO1uI,IACLjnB,EAAIC,EAAEC,EAAIqyS,EAAOryS,EAAI,GACrBkF,EAAIA,EAAIm5D,EAAQt+D,EAAEsyS,GAAQtyS,EAAEC,GAAKD,EAAE4F,EAAI0sS,EAAO1sS,EAAI7F,KAAOC,EAAE4F,GAAK7F,IAKlE,OAFA0oU,EAAGxoU,EAAIA,EACPwoU,EAAG7iU,EAAIA,EACAT,GAUX,SAASs2P,EAAKz3P,EAAGjE,GAIf,OAHAA,EAAEE,EAAI+D,EAAE/D,EACRF,EAAE6F,EAAI5B,EAAE4B,EACR7F,EAAE21J,EAAI1xJ,EAAE0xJ,EAAEpqH,QACHvrC,EAOT,SAASuiQ,EAAQzoP,EAAK6sJ,GACpB,IAEIlnF,EAFA77E,EAAS,GACT+kU,EAAMvB,UAAUttT,GAGpB,GAAI6sJ,GAAgB,UAAPgiK,EACX,IAAKlpP,KAAQ3lE,EACX,IACElW,EAAOoB,KAAKu9P,EAAQzoP,EAAI2lE,GAAOknF,EAAQ,IACvC,MAAOjjK,IAIb,OAAOE,EAAOvD,OAASuD,EAAgB,UAAP+kU,EAAkB7uT,EAAMA,EAAM,KAQhE,SAASiuT,EAAOH,EAAMhtT,GACpB,IACIguT,EADAC,EAAajB,EAAO,GAEpB/hU,EAAI,EAER,MAAOA,EAAIgjU,EAAWxoU,OACpBua,EAAI23R,EAAO1sS,GAAK0sS,GAAQq2B,GAAyB,GAAhBhuT,EAAI23R,EAAO1sS,IAAWgjU,EAAW/5T,WAAWjJ,KAG/E,OAAOmiU,EAASptT,GAQlB,SAASqtT,IACP,IACE,GAAIX,EACF,OAAOU,EAASV,EAAWwB,YAAYvqQ,IAGzC,IAAIyU,EAAM,IAAIplE,WAAW2wD,GAEzB,OADC81E,EAAOjxH,QAAUixH,EAAO00L,UAAUl7T,gBAAgBmlE,GAC5Cg1P,EAASh1P,GAChB,MAAOtvE,GACP,IAAI0yE,EAAUi+D,EAAOz4F,UACjBy4D,EAAUj+B,GAAWA,EAAQi+B,QACjC,MAAO,EAAE,IAAI7mF,KAAQ6mH,EAAQhgC,EAASggC,EAAOm5F,OAAQw6F,EAAS74C,KAQlE,SAAS64C,EAASpiU,GAChB,OAAO+J,OAAOC,aAAa7M,MAAM,EAAG6C,GAjItCiqR,EAAK,OAAS23C,GAAWG,EA2IzBI,EAAOl4C,EAAK3hR,SAAUihR,GASxB,SAAS65C,aAAanxD,GACpBwvD,WAAW,GAAIxvD,GAGjB,IAAIoxD,UAAY,CACdC,MAAO,SAGT,SAASjnI,QAAQnoL,GAAmV,OAAtOmoL,QAArD,oBAAXv9L,QAAoD,kBAApBA,OAAOC,SAAmC,SAAiBmV,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,oBAAXpV,QAAyBoV,EAAI7a,cAAgByF,QAAUoV,IAAQpV,OAAOxF,UAAY,gBAAkB4a,GAAiBmoL,QAAQnoL,GAEnX,IAAIqvT,kBAAoB,WAGtB,IAAI7nD,GAAK,GACLrzQ,KAAO4pQ,OACP10P,OAAS,KACTwxB,SAAW,KACXnzC,eAAiB,KACjBi6C,MAAQ,KACRizD,OAAS,KAGb,SAAS06N,sBAAsBtuT,GAC7B,OAAOA,EAAI7b,cAAgBP,OAASoc,EAAI7b,cAAgB43Q,aAG1D,SAASwyD,YAAYC,EAAM1kU,GACzB,MAAgB,WAAT0kU,GAA8B,YAATA,GAA+B,WAATA,GAAqB1kU,aAAawiC,OAGtF,SAASmiS,QAAQ3jU,GACf,IAAI4jU,EAAOvnI,QAAQr8L,GAEnB,GAAa,WAAT4jU,GAA8B,YAATA,GAAsB5jU,aAAawhC,OAC1D,OAAQxhC,EAGV,GAAIwjU,sBAAsBxjU,GAAI,CAC5B,IAAI1F,EACAupU,EAAO7jU,EAAEvF,OACTqpU,EAAS,GAEb,IAAKxpU,EAAI,EAAGA,EAAIupU,EAAMvpU,GAAK,EACzBwpU,EAAOxpU,IAAM0F,EAAE1F,GAGjB,OAAOwpU,EAGT,OAAI9jU,EAAEivR,SACGjvR,EAAEhB,GAGHgB,EAjCVojU,aAAanxD,QAoCb,IAAI8xD,UAAY39C,cAAcC,gBAAgB,KAAO,EAAG,KAAO,KAAO,UAAUvrR,IAC5EkpU,WAAa59C,cAAcC,gBAAgB,KAAO,KAAO,KAAO,EAAG,WAAWvrR,IAC9EmpU,aAAe79C,cAAcC,gBAAgB,IAAM,EAAG,KAAO,EAAG,aAAavrR,IAEjF,SAASqyQ,IAAIntQ,EAAGhH,GACd,IAAI4qU,EAAOvnI,QAAQr8L,GAEfkkU,EAAO7nI,QAAQrjM,GAEnB,GAAa,WAAT4qU,GAA8B,WAATM,EACvB,OAAOlkU,EAAIhH,EAGb,GAAIyqU,YAAYG,EAAM5jU,IAAMyjU,YAAYS,EAAMlrU,GAC5C,OAAOgH,EAAIhH,EAGb,GAAIwqU,sBAAsBxjU,IAAMyjU,YAAYS,EAAMlrU,GAGhD,OAFAgH,EAAIA,EAAE2lC,MAAM,GACZ3lC,EAAE,IAAMhH,EACDgH,EAGT,GAAIyjU,YAAYG,EAAM5jU,IAAMwjU,sBAAsBxqU,GAGhD,OAFAA,EAAIA,EAAE2sC,MAAM,GACZ3sC,EAAE,GAAKgH,EAAIhH,EAAE,GACNA,EAGT,GAAIwqU,sBAAsBxjU,IAAMwjU,sBAAsBxqU,GAAI,CACxD,IAAIsB,EAAI,EACJupU,EAAO7jU,EAAEvF,OACT0pU,EAAOnrU,EAAEyB,OACTqpU,EAAS,GAEb,MAAOxpU,EAAIupU,GAAQvpU,EAAI6pU,GACA,kBAATnkU,EAAE1F,IAAmB0F,EAAE1F,aAAcknC,UAA4B,kBAATxoC,EAAEsB,IAAmBtB,EAAEsB,aAAcknC,QACvGsiS,EAAOxpU,GAAK0F,EAAE1F,GAAKtB,EAAEsB,GAErBwpU,EAAOxpU,QAAcglC,IAATtmC,EAAEsB,GAAmB0F,EAAE1F,GAAK0F,EAAE1F,IAAMtB,EAAEsB,GAGpDA,GAAK,EAGP,OAAOwpU,EAGT,OAAO,EAGT,IAAIvtS,IAAM42O,IAEV,SAASl9O,IAAIjwB,EAAGhH,GACd,IAAI4qU,EAAOvnI,QAAQr8L,GAEfkkU,EAAO7nI,QAAQrjM,GAEnB,GAAIyqU,YAAYG,EAAM5jU,IAAMyjU,YAAYS,EAAMlrU,GAS5C,MARa,WAAT4qU,IACF5jU,EAAIq+C,SAASr+C,EAAG,KAGL,WAATkkU,IACFlrU,EAAIqlD,SAASrlD,EAAG,KAGXgH,EAAIhH,EAGb,GAAIwqU,sBAAsBxjU,IAAMyjU,YAAYS,EAAMlrU,GAGhD,OAFAgH,EAAIA,EAAE2lC,MAAM,GACZ3lC,EAAE,IAAMhH,EACDgH,EAGT,GAAIyjU,YAAYG,EAAM5jU,IAAMwjU,sBAAsBxqU,GAGhD,OAFAA,EAAIA,EAAE2sC,MAAM,GACZ3sC,EAAE,GAAKgH,EAAIhH,EAAE,GACNA,EAGT,GAAIwqU,sBAAsBxjU,IAAMwjU,sBAAsBxqU,GAAI,CACxD,IAAIsB,EAAI,EACJupU,EAAO7jU,EAAEvF,OACT0pU,EAAOnrU,EAAEyB,OACTqpU,EAAS,GAEb,MAAOxpU,EAAIupU,GAAQvpU,EAAI6pU,GACA,kBAATnkU,EAAE1F,IAAmB0F,EAAE1F,aAAcknC,UAA4B,kBAATxoC,EAAEsB,IAAmBtB,EAAEsB,aAAcknC,QACvGsiS,EAAOxpU,GAAK0F,EAAE1F,GAAKtB,EAAEsB,GAErBwpU,EAAOxpU,QAAcglC,IAATtmC,EAAEsB,GAAmB0F,EAAE1F,GAAK0F,EAAE1F,IAAMtB,EAAEsB,GAGpDA,GAAK,EAGP,OAAOwpU,EAGT,OAAO,EAGT,SAASM,IAAIpkU,EAAGhH,GACd,IAIIkc,EAMA5a,EACA2/F,EAXA2pO,EAAOvnI,QAAQr8L,GAEfkkU,EAAO7nI,QAAQrjM,GAInB,GAAIyqU,YAAYG,EAAM5jU,IAAMyjU,YAAYS,EAAMlrU,GAC5C,OAAOgH,EAAIhH,EAMb,GAAIwqU,sBAAsBxjU,IAAMyjU,YAAYS,EAAMlrU,GAAI,CAIpD,IAHAihG,EAAMj6F,EAAEvF,OACRya,EAAM47P,iBAAiB,UAAW72K,GAE7B3/F,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB4a,EAAI5a,GAAK0F,EAAE1F,GAAKtB,EAGlB,OAAOkc,EAGT,GAAIuuT,YAAYG,EAAM5jU,IAAMwjU,sBAAsBxqU,GAAI,CAIpD,IAHAihG,EAAMjhG,EAAEyB,OACRya,EAAM47P,iBAAiB,UAAW72K,GAE7B3/F,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB4a,EAAI5a,GAAK0F,EAAIhH,EAAEsB,GAGjB,OAAO4a,EAGT,OAAO,EAGT,SAASgxQ,IAAIlmR,EAAGhH,GACd,IAIIkc,EAMA5a,EACA2/F,EAXA2pO,EAAOvnI,QAAQr8L,GAEfkkU,EAAO7nI,QAAQrjM,GAInB,GAAIyqU,YAAYG,EAAM5jU,IAAMyjU,YAAYS,EAAMlrU,GAC5C,OAAOgH,EAAIhH,EAMb,GAAIwqU,sBAAsBxjU,IAAMyjU,YAAYS,EAAMlrU,GAAI,CAIpD,IAHAihG,EAAMj6F,EAAEvF,OACRya,EAAM47P,iBAAiB,UAAW72K,GAE7B3/F,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB4a,EAAI5a,GAAK0F,EAAE1F,GAAKtB,EAGlB,OAAOkc,EAGT,GAAIuuT,YAAYG,EAAM5jU,IAAMwjU,sBAAsBxqU,GAAI,CAIpD,IAHAihG,EAAMjhG,EAAEyB,OACRya,EAAM47P,iBAAiB,UAAW72K,GAE7B3/F,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB4a,EAAI5a,GAAK0F,EAAIhH,EAAEsB,GAGjB,OAAO4a,EAGT,OAAO,EAGT,SAASmvT,IAAIrkU,EAAGhH,GASd,MARiB,kBAANgH,IACTA,EAAIq+C,SAASr+C,EAAG,KAGD,kBAANhH,IACTA,EAAIqlD,SAASrlD,EAAG,KAGXgH,EAAIhH,EAGb,IAAIsrU,QAAUn3D,IACVo3D,QAAUt0S,IACVu0S,QAAUJ,IACVK,QAAUv+C,IACVw+C,QAAUL,IAEd,SAASx7D,MAAMphQ,EAAKk3C,EAAKsa,GACvB,GAAIta,EAAMsa,EAAK,CACb,IAAIg8H,EAAKh8H,EACTA,EAAMta,EACNA,EAAMs2I,EAGR,OAAO5sL,KAAKs2C,IAAIt2C,KAAK4wD,IAAIxxD,EAAKk3C,GAAMsa,GAGtC,SAAS0rQ,iBAAiBrsS,GACxB,OAAOA,EAAMi6O,UAGf,IAAIqyD,mBAAqBD,iBAEzB,SAASE,iBAAiBvsS,GACxB,OAAOA,EAAMi6O,UAGf,IAAIuyD,mBAAqBH,iBACrBI,kBAAoB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAExC,SAAStqU,OAAOuqU,EAAM5nI,GACpB,GAAoB,kBAAT4nI,GAAqBA,aAAgBxjS,OAE9C,OADA47J,EAAOA,GAAQ,EACR/0L,KAAKgyF,IAAI2qO,EAAO5nI,GAOzB,IAAI9iM,EAJC8iM,IACHA,EAAO2nI,mBAIT,IAAI9qO,EAAM5xF,KAAKs2C,IAAIqmR,EAAKvqU,OAAQ2iM,EAAK3iM,QACjCkvR,EAAc,EAElB,IAAKrvR,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBqvR,GAAethR,KAAKmvH,IAAI4lE,EAAK9iM,GAAK0qU,EAAK1qU,GAAI,GAG7C,OAAO+N,KAAKwpQ,KAAK8X,GAGnB,SAAS1kH,UAAUggK,GACjB,OAAO/+C,IAAI++C,EAAKxqU,OAAOwqU,IAGzB,SAASC,SAAS5sS,GAChB,IAKIs8E,EACAv6G,EANAmF,EAAI84B,EAAI,GACR/5B,EAAI+5B,EAAI,GACRt/B,EAAIs/B,EAAI,GACR2gC,EAAM5wD,KAAK4wD,IAAIz5D,EAAGjB,EAAGvF,GACrB2lD,EAAMt2C,KAAKs2C,IAAIn/C,EAAGjB,EAAGvF,GAGrBouJ,GAAKnuF,EAAMta,GAAO,EAEtB,GAAIsa,IAAQta,EACVi2D,EAAI,EAEJv6G,EAAI,MACC,CACL,IAAItB,EAAIkgE,EAAMta,EAGd,OAFAtkD,EAAI+sJ,EAAI,GAAMruJ,GAAK,EAAIkgE,EAAMta,GAAO5lD,GAAKkgE,EAAMta,GAEvCsa,GACN,KAAKz5D,EACHo1G,GAAKr2G,EAAIvF,GAAKD,GAAKwF,EAAIvF,EAAI,EAAI,GAC/B,MAEF,KAAKuF,EACHq2G,GAAK57G,EAAIwG,GAAKzG,EAAI,EAClB,MAEF,KAAKC,EACH47G,GAAKp1G,EAAIjB,GAAKxF,EAAI,EAClB,MAEF,QACE,MAGJ67G,GAAK,EAGP,MAAO,CAACA,EAAGv6G,EAAG+sJ,EAAG9uH,EAAI,IAGvB,SAAS6sS,QAAQlsU,EAAGqvD,EAAGluD,GAGrB,OAFIA,EAAI,IAAGA,GAAK,GACZA,EAAI,IAAGA,GAAK,GACZA,EAAI,EAAI,EAAUnB,EAAc,GAATqvD,EAAIrvD,GAASmB,EACpCA,EAAI,GAAckuD,EAClBluD,EAAI,EAAI,EAAUnB,GAAKqvD,EAAIrvD,IAAM,EAAI,EAAImB,GAAK,EAC3CnB,EAGT,SAASmsU,SAAS9sS,GAChB,IAGI94B,EACAjB,EACAvF,EALA47G,EAAIt8E,EAAI,GACRj+B,EAAIi+B,EAAI,GACR8uH,EAAI9uH,EAAI,GAKZ,GAAU,IAANj+B,EACFmF,EAAI4nJ,EAEJpuJ,EAAIouJ,EAEJ7oJ,EAAI6oJ,MACC,CACL,IAAI9+F,EAAI8+F,EAAI,GAAMA,GAAK,EAAI/sJ,GAAK+sJ,EAAI/sJ,EAAI+sJ,EAAI/sJ,EACxCpB,EAAI,EAAImuJ,EAAI9+F,EAChB9oD,EAAI2lU,QAAQlsU,EAAGqvD,EAAGssD,EAAI,EAAI,GAC1Br2G,EAAI4mU,QAAQlsU,EAAGqvD,EAAGssD,GAClB57G,EAAImsU,QAAQlsU,EAAGqvD,EAAGssD,EAAI,EAAI,GAG5B,MAAO,CAACp1G,EAAGjB,EAAGvF,EAAGs/B,EAAI,IAGvB,SAAS+sS,OAAOjrU,EAAGk2K,EAAMC,EAAM+0J,EAAQC,GAQrC,QAPejmS,IAAXgmS,QAAmChmS,IAAXimS,IAC1BD,EAASh1J,EACTi1J,EAASh1J,EACTD,EAAO,EACPC,EAAO,GAGLA,EAAOD,EAAM,CACf,IAAIk1J,EAAQj1J,EACZA,EAAOD,EACPA,EAAOk1J,EAGT,GAAIprU,GAAKk2K,EACP,OAAOg1J,EAGT,GAAIlrU,GAAKm2K,EACP,OAAOg1J,EAGT,IAMIjrU,EANAixR,EAAOh7G,IAASD,EAAO,GAAKl2K,EAAIk2K,IAASC,EAAOD,GAEpD,IAAKg1J,EAAO7qU,OACV,OAAO6qU,GAAUC,EAASD,GAAU/5C,EAItC,IAAItxL,EAAMqrO,EAAO7qU,OACbya,EAAM47P,iBAAiB,UAAW72K,GAEtC,IAAK3/F,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB4a,EAAI5a,GAAKgrU,EAAOhrU,IAAMirU,EAAOjrU,GAAKgrU,EAAOhrU,IAAMixR,EAGjD,OAAOr2Q,EAGT,SAAS5M,OAAOq2C,EAAKsa,GAWnB,QAVY35B,IAAR25B,SACU35B,IAARqf,GACFA,EAAM,EACNsa,EAAM,IAENA,EAAMta,EACNA,OAAMrf,IAIN25B,EAAIx+D,OAAQ,CACd,IAAIH,EACA2/F,EAAMhhC,EAAIx+D,OAETkkD,IACHA,EAAMmyN,iBAAiB,UAAW72K,IAGpC,IAAI/kF,EAAM47P,iBAAiB,UAAW72K,GAClCwrO,EAAMxzD,OAAO3pQ,SAEjB,IAAKhO,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB4a,EAAI5a,GAAKqkD,EAAIrkD,GAAKmrU,GAAOxsQ,EAAI3+D,GAAKqkD,EAAIrkD,IAGxC,OAAO4a,OAGGoqB,IAARqf,IACFA,EAAM,GAGR,IAAI+mR,EAAOzzD,OAAO3pQ,SAClB,OAAOq2C,EAAM+mR,GAAQzsQ,EAAMta,GAG7B,SAASgnR,WAAW39C,EAAQ49C,EAAYC,EAAarsQ,GACnD,IAAIl/D,EACA2/F,EAAM+tL,EAAOvtR,OACb+rF,EAAOovM,UAAUpM,aACrBhjM,EAAKouM,cAAcp7N,EAAQygC,GAC3B,IACI6rO,EACAC,EAFAC,EAAiB,CAAC,EAAG,GAIzB,IAAK1rU,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxBwrU,EAAgBF,GAAcA,EAAWtrU,GAAKsrU,EAAWtrU,GAAK0rU,EAC9DD,EAAiBF,GAAeA,EAAYvrU,GAAKurU,EAAYvrU,GAAK0rU,EAClEx/O,EAAKwuM,YAAYhN,EAAO1tR,GAAG,GAAI0tR,EAAO1tR,GAAG,GAAIyrU,EAAe,GAAK/9C,EAAO1tR,GAAG,GAAIyrU,EAAe,GAAK/9C,EAAO1tR,GAAG,GAAIwrU,EAAc,GAAK99C,EAAO1tR,GAAG,GAAIwrU,EAAc,GAAK99C,EAAO1tR,GAAG,GAAIA,GAAG,GAGxL,OAAOksF,EAGT,SAASy/O,mBAAmB3gD,KAAM97Q,KAAM4mF,UACtC,IAAI93D,IAAM9uB,KAAKk9J,EACXw/J,cAAgB,qBAAqBx9T,KAAK4vB,KAE1C6tS,cAA0C,IAA3B7tS,IAAIhkB,QAAQ,UAE3B8xT,SAAW9gD,KAAK97Q,KAAKytQ,GACrBn1B,UACAukF,cACAzrU,QACAu1S,OACAm2B,aAAel2O,SACnBk2O,aAAa54B,YAAc44B,aAAa7iC,eACxC9qS,OAAO6uC,eAAe8+R,aAAc,QAAS,CAC3CxrU,IAAK,WACH,OAAOwrU,aAAatnU,KAGxBsmR,KAAK5N,KAAK66B,cAAgB,EAAIjtB,KAAK5N,KAAK2I,WAAW3B,UACnD4G,KAAK5N,KAAK86B,iBAAmB,EAC7B,IAAI7B,QAAUrrB,KAAK97Q,KAAKqjH,GAAKy4J,KAAK5N,KAAK2I,WAAW3B,UAC9CkyB,SAAWtrB,KAAK97Q,KAAKvK,GAAKqmR,KAAK5N,KAAK2I,WAAW3B,UAC/C/lN,MAAQ2sN,KAAK97Q,KAAK+7S,GAAKjgC,KAAK97Q,KAAK+7S,GAAK,EACtC1sP,OAASysN,KAAK97Q,KAAKknR,GAAKpL,KAAK97Q,KAAKknR,GAAK,EACvCjkR,KAAO64Q,KAAK97Q,KAAKs0Q,GACjByoD,OACAC,QACAC,QACAC,SACAC,OACAn3B,QACAG,UACAC,SACAU,OACAs2B,kBACA9iQ,SACAsqO,SACAM,YACA7T,MACAgsC,UACAC,SACAn6B,KACAe,YACAG,eACAk5B,aAEAC,oBAAsBC,KAAK,oCAAsC3uS,IAAM,0BAA0B,GAEjGk1Q,QAAUp9M,SAASujM,GAAKnqR,KAAKzJ,EAAEtF,OAAS,EACxCm9N,QAAUx+N,KAAKoQ,OAAyB,IAAjBpQ,KAAKoQ,KAAKs1S,GAEjCooB,OAAS,SAAgBC,EAAMC,GACjC,IAAIC,EACApnU,EACAqnU,EAAYluU,KAAK81R,GAAGz0R,OAASrB,KAAK81R,GAAGz0R,OAAS,EAC9C8sU,EAAYz2D,iBAAiB,UAAWw2D,GAC5CH,EAAO,EACP,IAAIziB,EAAar8S,KAAKq2C,MAAMF,KAAO2oR,GACnCE,EAAU,EACVpnU,EAAI,EAEJ,MAAOonU,EAAU3iB,EAAY,CAE3B,IAAKzkT,EAAI,EAAGA,EAAIqnU,EAAWrnU,GAAK,EAC9BsnU,EAAUtnU,KAAOmnU,EAAY,EAANA,EAAUn1D,OAAO3pQ,SAG1C++T,GAAW,EAIb,IAAIG,EAAUhpR,KAAO2oR,EACjB57C,EAAOi8C,EAAUn/T,KAAKq2C,MAAM8oR,GAC5BtyT,EAAM47P,iBAAiB,UAAWw2D,GAEtC,GAAIA,EAAY,EAAG,CACjB,IAAKrnU,EAAI,EAAGA,EAAIqnU,EAAWrnU,GAAK,EAC9BiV,EAAIjV,GAAK7G,KAAK81R,GAAGjvR,GAAKsnU,EAAUtnU,KAAOmnU,EAAY,EAANA,EAAUn1D,OAAO3pQ,UAAYijR,EAI5E,OAAOr2Q,EAGT,OAAO9b,KAAK81R,GAAKq4C,EAAU,KAAOH,EAAY,EAANA,EAAUn1D,OAAO3pQ,UAAYijR,GACrE9uO,KAAKrjD,MAgBP,SAASquU,eAAenhT,EAAMohD,GAC5B,OAAO6+P,OAAOjgT,EAAMohD,GAAU,GAGhC,SAASggQ,gBAAgBphT,EAAMohD,GAC7B,OAAO++P,QAAQngT,EAAMohD,GAAU,GAnB7B4+P,aAAaC,SACfA,OAASD,aAAaC,OAAO9pR,KAAK6pR,cAClCE,QAAUD,QAGRD,aAAaG,UACfA,QAAUH,aAAaG,QAAQhqR,KAAK6pR,cACpCI,SAAWD,SAGTH,aAAaK,SACfA,OAASL,aAAaK,OAAOlqR,KAAK6pR,eAWhCltU,KAAKqqS,iBACPiK,YAAct0S,KAAKqqS,eAAehnP,KAAKrjD,OAGrCA,KAAKm0S,oBACPM,eAAiBz0S,KAAKm0S,kBAAkB9wP,KAAKrjD,OAG/C,IAAIs+Q,KAAO4N,KAAK5N,KAAK2I,WAAWX,iBAAiBjjO,KAAK6oO,KAAK5N,KAAK2I,WAAWX,kBAsLvElhO,KACAmpR,SACAjqU,MACA2uF,KACAu7O,UACAC,UACAC,cA1LJ,SAASC,OAAOC,EAAOC,GACrB,IAAIC,EAAO,CAACD,EAAM,GAAKD,EAAM,GAAIC,EAAM,GAAKD,EAAM,GAAIC,EAAM,GAAKD,EAAM,IACnEG,EAAQ9/T,KAAKgqR,MAAM61C,EAAK,GAAI7/T,KAAKwpQ,KAAKq2D,EAAK,GAAKA,EAAK,GAAKA,EAAK,GAAKA,EAAK,KAAO31D,UAChF61D,GAAO//T,KAAKgqR,MAAM61C,EAAK,GAAIA,EAAK,IAAM31D,UAC1C,MAAO,CAAC61D,EAAKD,EAAO,GAGtB,SAASE,QAAQjuU,EAAGk2K,EAAMC,EAAM+3J,EAAMC,GACpC,OAAOC,UAAUxE,WAAY5pU,EAAGk2K,EAAMC,EAAM+3J,EAAMC,GAGpD,SAASE,OAAOruU,EAAGk2K,EAAMC,EAAM+3J,EAAMC,GACnC,OAAOC,UAAUzE,UAAW3pU,EAAGk2K,EAAMC,EAAM+3J,EAAMC,GAGnD,SAASG,KAAKtuU,EAAGk2K,EAAMC,EAAM+3J,EAAMC,GACjC,OAAOC,UAAUvE,aAAc7pU,EAAGk2K,EAAMC,EAAM+3J,EAAMC,GAGtD,SAASC,UAAUp0P,EAAIh6E,EAAGk2K,EAAMC,EAAM+3J,EAAMC,QAC7BjpS,IAATgpS,GACFA,EAAOh4J,EACPi4J,EAAOh4J,GAEPn2K,GAAKA,EAAIk2K,IAASC,EAAOD,GAGvBl2K,EAAI,EACNA,EAAI,EACKA,EAAI,IACbA,EAAI,GAGN,IAAI+4R,EAAO/+M,EAAGh6E,GAEd,GAAIopU,sBAAsB8E,GAAO,CAC/B,IAAI3iO,EACAgjO,EAASL,EAAK7tU,OACdya,EAAM47P,iBAAiB,UAAW63D,GAEtC,IAAKhjO,EAAO,EAAGA,EAAOgjO,EAAQhjO,GAAQ,EACpCzwF,EAAIywF,IAAS4iO,EAAK5iO,GAAQ2iO,EAAK3iO,IAASwtL,EAAOm1C,EAAK3iO,GAGtD,OAAOzwF,EAGT,OAAQqzT,EAAOD,GAAQn1C,EAAOm1C,EAGhC,SAASM,WAAWpqR,GAClB,IAAImnD,EAEAj6D,EACAkkP,EAFA+4C,EAASn/T,KAAKzJ,EAAEtF,OAIpB,GAAK+O,KAAKzJ,EAAEtF,QAA+B,kBAAd+O,KAAKzJ,EAAE,GAOlC,GAHA2rC,GAAS,EACT8S,GAAQ8mO,KAAK5N,KAAK2I,WAAW3B,UAEzBlgO,EAAOh1C,KAAKzJ,EAAE,GAAG3F,EACnBsxC,EAAQ,EACRkkP,EAAUpmR,KAAKzJ,EAAE,GAAG3F,MACf,CACL,IAAKurG,EAAO,EAAGA,EAAOgjO,EAAS,EAAGhjO,GAAQ,EAAG,CAC3C,GAAInnD,IAASh1C,KAAKzJ,EAAE4lG,GAAMvrG,EAAG,CAC3BsxC,EAAQi6D,EAAO,EACfiqL,EAAUpmR,KAAKzJ,EAAE4lG,GAAMvrG,EACvB,MACK,GAAIokD,EAAOh1C,KAAKzJ,EAAE4lG,GAAMvrG,GAAKokD,EAAOh1C,KAAKzJ,EAAE4lG,EAAO,GAAGvrG,EAAG,CACzDokD,EAAOh1C,KAAKzJ,EAAE4lG,GAAMvrG,EAAIoP,KAAKzJ,EAAE4lG,EAAO,GAAGvrG,EAAIokD,GAC/C9S,EAAQi6D,EAAO,EACfiqL,EAAUpmR,KAAKzJ,EAAE4lG,EAAO,GAAGvrG,IAE3BsxC,EAAQi6D,EAAO,EACfiqL,EAAUpmR,KAAKzJ,EAAE4lG,GAAMvrG,GAGzB,QAIW,IAAXsxC,IACFA,EAAQi6D,EAAO,EACfiqL,EAAUpmR,KAAKzJ,EAAE4lG,GAAMvrG,QA9B3BsxC,EAAQ,EACRkkP,EAAU,EAkCZ,IAAIi5C,EAAQ,GAGZ,OAFAA,EAAMn9R,MAAQA,EACdm9R,EAAMrqR,KAAOoxO,EAAUtK,KAAK5N,KAAK2I,WAAW3B,UACrCmqD,EAGT,SAAS7zT,IAAI86Q,GACX,IAAI+4C,EACAljO,EACAgjO,EAEJ,IAAKn/T,KAAKzJ,EAAEtF,QAA+B,kBAAd+O,KAAKzJ,EAAE,GAClC,MAAM,IAAI/F,MAAM,yCAA2C81R,GAG7DA,GAAO,EACP+4C,EAAQ,CACNrqR,KAAMh1C,KAAKzJ,EAAE+vR,GAAK11R,EAAIkrR,KAAK5N,KAAK2I,WAAW3B,UAC3ChhR,MAAO,IAET,IAAIwX,EAAMvc,OAAOW,UAAUJ,eAAea,KAAKyP,KAAKzJ,EAAE+vR,GAAM,KAAOtmR,KAAKzJ,EAAE+vR,GAAKz1R,EAAImP,KAAKzJ,EAAE+vR,EAAM,GAAGhyR,EAGnG,IAFA6qU,EAASzzT,EAAIza,OAERkrG,EAAO,EAAGA,EAAOgjO,EAAQhjO,GAAQ,EACpCkjO,EAAMljO,GAAQzwF,EAAIywF,GAClBkjO,EAAMnrU,MAAMioG,GAAQzwF,EAAIywF,GAG1B,OAAOkjO,EAGT,SAASC,aAAajnD,EAAIknD,GAKxB,OAJKA,IACHA,EAAMzjD,KAAK5N,KAAK2I,WAAW3B,WAGtBmD,EAAKknD,EAGd,SAASC,aAAa5uU,EAAG2uU,GASvB,OARK3uU,GAAW,IAANA,IACRA,EAAIokD,MAGDuqR,IACHA,EAAMzjD,KAAK5N,KAAK2I,WAAW3B,WAGtBtkR,EAAI2uU,EAGb,SAAStH,WAAWO,GAClB/vD,OAAO8vD,WAAWkH,SAAWjH,GAG/B,SAAS11B,mBACP,OAAOhnB,KAAKgnB,mBAGd,SAASthS,UAAU2rH,EAAMn2C,GACvB,MAAqB,kBAAV9iF,WACG4hC,IAARkhD,EACK9iF,MAAMsN,UAAU2rH,GAGlBj5H,MAAMsN,UAAU2rH,EAAMn2C,GAGxB,GAGT,SAASpG,OAAOu8C,EAAMn2C,GACpB,MAAqB,kBAAV9iF,WACG4hC,IAARkhD,EACK9iF,MAAM08E,OAAOu8C,GAGfj5H,MAAM08E,OAAOu8C,EAAMn2C,GAGrB,GAGT,SAAS0oP,cAAcC,GACrB3qR,KAA2B,IAApB2qR,EAAwB,EAAI9gU,KAAKq2C,MAAMF,KAAO2qR,GAAmBA,EACxEzrU,MAAQgwS,YAAYlvP,MAUtB,IAAI9S,MAAQ45O,KAAK97Q,KAAKsmR,IAClB0gB,aAAelrB,KAAKjxE,YAAaixE,KAAKjxE,UAAU55M,QAChDw9C,OACAgxR,SAAW5gU,KAAKq2C,MAAsB,IAAhBr2C,KAAKC,UAC3B+3Q,WAAaiF,KAAKjF,WAEtB,SAAS+oD,kBAAkBC,GAIzB,OAFA3rU,MAAQ2rU,EAEJjwU,KAAKkwU,oBAAsBhkD,KAAKjF,WAAWiT,SAA6B,iBAAlBl6R,KAAK61R,SACtDvxR,OAGa,iBAAlBtE,KAAK61R,WACP24C,UAAYxuU,KAAKwuU,UACjBC,UAAYzuU,KAAKyuU,UACjBC,cAAgB1uU,KAAK0uU,eAGlBjB,YACHx6O,KAAOi5L,KAAKmrB,eAAepkN,KAC3Bw6O,UAAYvhD,KAAKmrB,eACjBq2B,SAAWxhD,KAAK5N,KAAKwG,cACrBsxB,QAAUq3B,UAAUr3B,QAAQ/yP,KAAKoqR,WACjCl3B,UAAYk3B,UAAUl3B,UAAUlzP,KAAKoqR,WACrCj3B,SAAWi3B,UAAUj3B,SAASnzP,KAAKoqR,WACnCv2B,OAASu2B,UAAUv2B,OAAO7zP,KAAKoqR,WAC/Bl6B,KAAOk6B,UAAUl6B,KAAOk6B,UAAUl6B,KAAKlwP,KAAKoqR,WAAa,KACzDD,kBAAoBh3B,UAGjB9tD,YACHA,UAAYwjC,KAAKmrB,eAAe,wBAChC41B,cAAgBvkF,UAEZA,YACF4sD,YAAc5sD,UAAU4sD,cAOX,IAAb03B,UAAmBxrU,UACrBA,QAAUisU,UAAU,4BAGjB12B,SACHA,OAAS02B,UAAU,IAGrBr2B,aAAelrB,KAAKjxE,YAAaixE,KAAKjxE,UAAU55M,QAE5C+1S,YAAcv4P,SAChBA,OAASqtO,KAAKjxE,UAAU,GAAGo8F,gBAG7BjyP,KAAOplD,KAAKs+Q,KAAKob,cAAgB15R,KAAKs+Q,KAAK2I,WAAW3B,UAElDynD,cACF1E,WAAWwH,SAAWzqR,MAGpB0nR,gBACFyB,SAAW95B,eAAervP,OAG5BwoR,sBACA5tU,KAAKkwU,kBAAoBhkD,KAAKjF,WAAWiT,QAGzCyzC,aAAeA,aAAa93C,WAAao0C,UAAUC,MAAQyD,aAAa/nU,EAAI+nU,aACrEA,cAKT,OADAqC,kBAAkBG,yBAA2B,CAAClD,cAAe33B,YAAalwP,KAAMmpR,SAAUh3B,QAASC,SAAUj4O,MAAOE,OAAQpsD,KAAM+5T,QAASE,SAAUC,OAAQr2B,OAAQs2B,kBAAmBp3B,QAASG,UAAWhD,KAAM7oO,SAAUsqO,SAAUvT,MAAOisC,SAAUt5B,QAAS51E,OAAQsvG,OAAQO,eAAgBC,gBAAiBhwD,KAAMqwD,OAAQM,QAASI,OAAQC,KAAME,WAAY5zT,IAAKq3E,KAAMu7O,UAAWC,UAAWC,cAAegB,aAAcE,aAAc18B,iBAAkBthS,UAAWovE,OAAQ8uP,cAAex9R,MAAO20O,YACle+oD,kBAKT,OAFA1tD,GAAGuqD,mBAAqBA,mBACxBvqD,GAAG6tD,yBAA2B,CAAChsT,OAAQwxB,SAAUnzC,eAAgBi6C,MAAOizD,OAAQ66N,QAASptS,IAAK+tS,QAASC,QAASC,QAASC,QAASC,QAAS77D,MAAO+7D,mBAAoBC,iBAAkBC,mBAAoB7/J,UAAWigK,SAAUE,SAAUC,OAAQ/8T,OAAQq9T,YACpPjqD,GAp1Be,GAu1BpB8tD,kBAAoB,WACtB,SAASC,EAAkBnkD,EAAM97Q,EAAMqwE,GACjCrwE,EAAKk9J,IACP7sF,EAAK95E,GAAI,EACT85E,EAAK6sF,GAAI,EACT7sF,EAAKosP,mBAAqB1C,kBAAkB0C,mBAC5CpsP,EAAK05M,gBAAgBn0R,KAAKy6E,EAAKosP,mBAAmB3gD,EAAM97Q,EAAMqwE,GAAMp9B,KAAKo9B,KAI7E,SAAS4pN,EAAe3U,GAUtB,OATAA,GAAY11R,KAAKksR,KAAKjF,WAAW3B,UACjCoQ,GAAY11R,KAAK41R,WAEbF,IAAa11R,KAAKswU,eAAex5C,YACnC92R,KAAKswU,eAAet6K,UAAYh2J,KAAKswU,eAAex5C,UAAYpB,EAAW11R,KAAKswU,eAAet6K,UAAY,EAC3Gh2J,KAAKswU,eAAehsU,MAAQtE,KAAKgxQ,iBAAiB0kB,EAAU11R,KAAKswU,gBACjEtwU,KAAKswU,eAAex5C,UAAYpB,GAG3B11R,KAAKswU,eAAehsU,MAG7B,SAASkwS,EAAe9e,GACtB,IAAIr9G,GAAS,IACT+nH,EAAKpgS,KAAKqqS,eAAe3U,GACzB0U,EAAKpqS,KAAKqqS,eAAe3U,EAAWr9G,GACpCk4J,EAAQ,EAEZ,GAAInwC,EAAG/+R,OAAQ,CACb,IAAIH,EAEJ,IAAKA,EAAI,EAAGA,EAAIk/R,EAAG/+R,OAAQH,GAAK,EAC9BqvU,GAASthU,KAAKmvH,IAAIgsK,EAAGlpS,GAAKk/R,EAAGl/R,GAAI,GAGnCqvU,EAA2B,IAAnBthU,KAAKwpQ,KAAK83D,QAElBA,EAAQ,EAGV,OAAOA,EAGT,SAASp8B,EAAkBze,GACzB,QAAiBxvP,IAAblmC,KAAK46R,IACP,OAAO56R,KAAK46R,IAGd,IAII2zC,EAIErtU,EARFm3K,GAAS,KAET+nH,EAAKpgS,KAAKqqS,eAAe3U,GACzB0U,EAAKpqS,KAAKqqS,eAAe3U,EAAWr9G,GAGxC,GAAI+nH,EAAG/+R,OAIL,IAHAktU,EAAW72D,iBAAiB,UAAW0oB,EAAG/+R,QAGrCH,EAAI,EAAGA,EAAIk/R,EAAG/+R,OAAQH,GAAK,EAI9BqtU,EAASrtU,IAAMkpS,EAAGlpS,GAAKk/R,EAAGl/R,IAAMm3K,OAGlCk2J,GAAYnkC,EAAKhK,GAAM/nH,EAGzB,OAAOk2J,EAGT,SAASiC,IACP,OAAOxwU,KAAK81R,GAGd,SAASgjB,EAAiBpE,GACxB10S,KAAK00S,cAAgBA,EAGvB,MAAO,CACL27B,kBAAmBA,EACnB77B,eAAgBA,EAChBL,kBAAmBA,EACnB9J,eAAgBA,EAChBmmC,qBAAsBA,EACtB13B,iBAAkBA,GAtFE,GA0FxB,SAAS23B,uBACP,SAASpD,EAAQngT,EAAMohD,EAAUoiQ,GAC/B,IAAK1wU,KAAK2G,IAAM3G,KAAKo2R,UACnB,OAAOp2R,KAAK81R,GAGd5oQ,EAAOA,EAAOA,EAAKsH,cAAgB,GACnC,IAQIm8S,EACAC,EAmBA1vU,EACA2/F,EACAgwO,EA9BAhsD,EAAe7kR,KAAKs+Q,KAAKob,cACzBtD,EAAYp2R,KAAKo2R,UACjB06C,EAAe16C,EAAUA,EAAU/0R,OAAS,GAAGL,EAEnD,GAAI6jR,GAAgBisD,EAClB,OAAO9wU,KAAK81R,GA2Bd,GArBK46C,GAWDC,EAHGriQ,EAGar/D,KAAKgyF,IAAI6vO,EAAe9wU,KAAKksR,KAAK5N,KAAK2I,WAAW3B,UAAYh3M,GAF9Dr/D,KAAK4wD,IAAI,EAAGixQ,EAAe9wU,KAAKksR,KAAK97Q,KAAKqjH,IAK5Dm9M,EAAgBE,EAAeH,MAb1BriQ,GAAYA,EAAW8nN,EAAU/0R,OAAS,KAC7CitE,EAAW8nN,EAAU/0R,OAAS,GAGhCuvU,EAAgBx6C,EAAUA,EAAU/0R,OAAS,EAAIitE,GAAUttE,EAC3D2vU,EAAgBG,EAAeF,GAepB,aAAT1jT,EAAqB,CACvB,IAAIo+R,EAAar8S,KAAKq2C,OAAOu/N,EAAe+rD,GAAiBD,GAE7D,GAAIrlB,EAAa,IAAM,EACrB,OAAOtrT,KAAKqqS,gBAAgBsmC,GAAiB9rD,EAAe+rD,GAAiBD,EAAgBC,GAAiB5wU,KAAKs+Q,KAAK2I,WAAW3B,UAAW,OAE3I,IAAa,WAATp4P,EAAmB,CAC5B,IAAI6jT,EAAQ/wU,KAAKqqS,eAAeumC,EAAgB5wU,KAAKs+Q,KAAK2I,WAAW3B,UAAW,GAC5E0rD,EAAOhxU,KAAKqqS,eAAeymC,EAAe9wU,KAAKs+Q,KAAK2I,WAAW3B,UAAW,GAC1ErzP,EAAUjyB,KAAKqqS,iBAAiBxlB,EAAe+rD,GAAiBD,EAAgBC,GAAiB5wU,KAAKs+Q,KAAK2I,WAAW3B,UAAW,GAEjI2rD,EAAUhiU,KAAKq2C,OAAOu/N,EAAe+rD,GAAiBD,GAE1D,GAAI3wU,KAAK81R,GAAGz0R,OAAQ,CAIlB,IAHAwvU,EAAM,IAAInxU,MAAMqxU,EAAM1vU,QACtBw/F,EAAMgwO,EAAIxvU,OAELH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB2vU,EAAI3vU,IAAM8vU,EAAK9vU,GAAK6vU,EAAM7vU,IAAM+vU,EAAUh/S,EAAQ/wB,GAGpD,OAAO2vU,EAGT,OAAQG,EAAOD,GAASE,EAAUh/S,EAC7B,GAAa,aAAT/E,EAAqB,CAC9B,IAAIgkT,EAAYlxU,KAAKqqS,eAAeymC,EAAe9wU,KAAKs+Q,KAAK2I,WAAW3B,UAAW,GAC/E6rD,EAAgBnxU,KAAKqqS,gBAAgBymC,EAAe,MAAS9wU,KAAKs+Q,KAAK2I,WAAW3B,UAAW,GAEjG,GAAItlR,KAAK81R,GAAGz0R,OAAQ,CAIlB,IAHAwvU,EAAM,IAAInxU,MAAMwxU,EAAU7vU,QAC1Bw/F,EAAMgwO,EAAIxvU,OAELH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB2vU,EAAI3vU,GAAKgwU,EAAUhwU,IAAMgwU,EAAUhwU,GAAKiwU,EAAcjwU,MAAQ2jR,EAAeisD,GAAgB9wU,KAAKs+Q,KAAK2I,WAAW3B,WAAa,KAGjI,OAAOurD,EAGT,OAAOK,GAA4CrsD,EAAeisD,GAAgB,MAA9DI,EAAYC,IAGlC,OAAOnxU,KAAKqqS,iBAAiBxlB,EAAe+rD,GAAiBD,EAAgBC,GAAiB5wU,KAAKs+Q,KAAK2I,WAAW3B,UAAW,GAGhI,SAAS6nD,EAAOjgT,EAAMohD,EAAUoiQ,GAC9B,IAAK1wU,KAAK2G,EACR,OAAO3G,KAAK81R,GAGd5oQ,EAAOA,EAAOA,EAAKsH,cAAgB,GACnC,IAQIm8S,EACAG,EAmBA5vU,EACA2/F,EACAgwO,EA9BAhsD,EAAe7kR,KAAKs+Q,KAAKob,cACzBtD,EAAYp2R,KAAKo2R,UACjBw6C,EAAgBx6C,EAAU,GAAGp1R,EAEjC,GAAI6jR,GAAgB+rD,EAClB,OAAO5wU,KAAK81R,GA2Bd,GArBK46C,GAWDC,EAHGriQ,EAGar/D,KAAKgyF,IAAIjhG,KAAKksR,KAAK5N,KAAK2I,WAAW3B,UAAYh3M,GAF/Cr/D,KAAK4wD,IAAI,EAAG7/D,KAAKksR,KAAK97Q,KAAKvK,GAAK+qU,GAKlDE,EAAeF,EAAgBD,MAb1BriQ,GAAYA,EAAW8nN,EAAU/0R,OAAS,KAC7CitE,EAAW8nN,EAAU/0R,OAAS,GAGhCyvU,EAAe16C,EAAU9nN,GAAUttE,EACnC2vU,EAAgBG,EAAeF,GAepB,aAAT1jT,EAAqB,CACvB,IAAIo+R,EAAar8S,KAAKq2C,OAAOsrR,EAAgB/rD,GAAgB8rD,GAE7D,GAAIrlB,EAAa,IAAM,EACrB,OAAOtrT,KAAKqqS,iBAAiBumC,EAAgB/rD,GAAgB8rD,EAAgBC,GAAiB5wU,KAAKs+Q,KAAK2I,WAAW3B,UAAW,OAE3H,IAAa,WAATp4P,EAAmB,CAC5B,IAAI6jT,EAAQ/wU,KAAKqqS,eAAeumC,EAAgB5wU,KAAKs+Q,KAAK2I,WAAW3B,UAAW,GAC5E0rD,EAAOhxU,KAAKqqS,eAAeymC,EAAe9wU,KAAKs+Q,KAAK2I,WAAW3B,UAAW,GAC1ErzP,EAAUjyB,KAAKqqS,gBAAgBsmC,GAAiBC,EAAgB/rD,GAAgB8rD,EAAgBC,GAAiB5wU,KAAKs+Q,KAAK2I,WAAW3B,UAAW,GACjJ2rD,EAAUhiU,KAAKq2C,OAAOsrR,EAAgB/rD,GAAgB8rD,GAAiB,EAE3E,GAAI3wU,KAAK81R,GAAGz0R,OAAQ,CAIlB,IAHAwvU,EAAM,IAAInxU,MAAMqxU,EAAM1vU,QACtBw/F,EAAMgwO,EAAIxvU,OAELH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB2vU,EAAI3vU,GAAK+wB,EAAQ/wB,IAAM8vU,EAAK9vU,GAAK6vU,EAAM7vU,IAAM+vU,EAG/C,OAAOJ,EAGT,OAAO5+S,GAAW++S,EAAOD,GAASE,EAC7B,GAAa,aAAT/jT,EAAqB,CAC9B,IAAIkkT,EAAapxU,KAAKqqS,eAAeumC,EAAgB5wU,KAAKs+Q,KAAK2I,WAAW3B,UAAW,GACjF+rD,EAAiBrxU,KAAKqqS,gBAAgBumC,EAAgB,MAAS5wU,KAAKs+Q,KAAK2I,WAAW3B,UAAW,GAEnG,GAAItlR,KAAK81R,GAAGz0R,OAAQ,CAIlB,IAHAwvU,EAAM,IAAInxU,MAAM0xU,EAAW/vU,QAC3Bw/F,EAAMgwO,EAAIxvU,OAELH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB2vU,EAAI3vU,GAAKkwU,EAAWlwU,IAAMkwU,EAAWlwU,GAAKmwU,EAAenwU,KAAO0vU,EAAgB/rD,GAAgB,KAGlG,OAAOgsD,EAGT,OAAOO,GAAcA,EAAaC,IAAmBT,EAAgB/rD,GAAgB,MAGvF,OAAO7kR,KAAKqqS,gBAAgBsmC,IAAkBC,EAAgB/rD,GAAgB8rD,EAAgBC,IAAkB5wU,KAAKs+Q,KAAK2I,WAAW3B,UAAW,GAGlJ,SAASioD,EAAOhuQ,EAAO+xQ,GACrB,IAAKtxU,KAAK2G,EACR,OAAO3G,KAAK81R,GAMd,GAHAv2N,EAAyB,IAAhBA,GAAS,IAClB+xQ,EAAUriU,KAAKq2C,MAAMgsR,GAAW,GAE5BA,GAAW,EACb,OAAOtxU,KAAK81R,GAGd,IAMIxxR,EAQAitU,EAdAroS,EAAclpC,KAAKs+Q,KAAKob,cAAgB15R,KAAKs+Q,KAAK2I,WAAW3B,UAC7DkQ,EAAYtsP,EAAcq2B,EAC1BiyQ,EAAWtoS,EAAcq2B,EACzBkyQ,EAAkBH,EAAU,GAAKE,EAAWh8C,IAAc87C,EAAU,GAAK,EACzEpwU,EAAI,EACJ2F,EAAI,EAINvC,EADEtE,KAAK81R,GAAGz0R,OACFq2Q,iBAAiB,UAAW13Q,KAAK81R,GAAGz0R,QAEpC,EAKV,MAAOH,EAAIowU,EAAS,CAGlB,GAFAC,EAAcvxU,KAAKqqS,eAAe7U,EAAYt0R,EAAIuwU,GAE9CzxU,KAAK81R,GAAGz0R,OACV,IAAKwF,EAAI,EAAGA,EAAI7G,KAAK81R,GAAGz0R,OAAQwF,GAAK,EACnCvC,EAAMuC,IAAM0qU,EAAY1qU,QAG1BvC,GAASitU,EAGXrwU,GAAK,EAGP,GAAIlB,KAAK81R,GAAGz0R,OACV,IAAKwF,EAAI,EAAGA,EAAI7G,KAAK81R,GAAGz0R,OAAQwF,GAAK,EACnCvC,EAAMuC,IAAMyqU,OAGdhtU,GAASgtU,EAGX,OAAOhtU,EAGT,SAASotU,EAAwBtsR,GAC1BplD,KAAK2xU,0BACR3xU,KAAK2xU,wBAA0B,CAC7B/rU,EAAG,IAAI66R,SAKX,IAAIiL,EAAS1rS,KAAK2xU,wBAAwB/rU,EAG1C,GAFA8lS,EAAO1H,eAAehkS,KAAKiqS,IAAIx0K,OAE3Bz1H,KAAKkqS,uBAAyB,EAAG,CACnC,IAAIniH,EAAS/nL,KAAK4G,EAAEyjS,eAAejlP,GACnCsmP,EAAO9J,WAAW75G,EAAO,GAAK/nL,KAAK4G,EAAEmzR,MAAOhyG,EAAO,GAAK/nL,KAAK4G,EAAEmzR,KAAMhyG,EAAO,GAAK/nL,KAAK4G,EAAEmzR,MAG1F,GAAI/5R,KAAKkqS,uBAAyB,EAAG,CACnC,IAAIzI,EAAQzhS,KAAKiB,EAAEopS,eAAejlP,GAClCsmP,EAAOjK,MAAMA,EAAM,GAAKzhS,KAAKiB,EAAE84R,KAAM0H,EAAM,GAAKzhS,KAAKiB,EAAE84R,KAAM0H,EAAM,GAAKzhS,KAAKiB,EAAE84R,MAGjF,GAAI/5R,KAAKu/Q,IAAMv/Q,KAAKkqS,uBAAyB,EAAG,CAC9C,IAAI9yH,EAAOp3K,KAAKu/Q,GAAG8qB,eAAejlP,GAC9B61P,EAAWj7S,KAAKw/Q,GAAG6qB,eAAejlP,GACtCsmP,EAAOlK,cAAcpqH,EAAOp3K,KAAKu/Q,GAAGwa,KAAMkhB,EAAWj7S,KAAKw/Q,GAAGua,MAG/D,GAAI/5R,KAAKoG,GAAKpG,KAAKkqS,uBAAyB,EAAG,CAC7C,IAAI8K,EAAWh1S,KAAKoG,EAAEikS,eAAejlP,GACrCsmP,EAAO3K,QAAQiU,EAAWh1S,KAAKoG,EAAE2zR,WAC5B,IAAK/5R,KAAKoG,GAAKpG,KAAKkqS,uBAAyB,EAAG,CACrD,IAAI0nC,EAAY5xU,KAAKypS,GAAGY,eAAejlP,GACnCysR,EAAY7xU,KAAK0pS,GAAGW,eAAejlP,GACnC0sR,EAAY9xU,KAAK+oL,GAAGshH,eAAejlP,GACnC2sR,EAAc/xU,KAAKg/R,GAAGqL,eAAejlP,GACzCsmP,EAAOrK,SAASuwC,EAAY5xU,KAAKypS,GAAG1P,MAAMqH,QAAQywC,EAAY7xU,KAAK0pS,GAAG3P,MAAMoH,QAAQ2wC,EAAY9xU,KAAK+oL,GAAGgxG,MAAMsH,SAAS0wC,EAAY,GAAK/xU,KAAKg/R,GAAGjF,MAAMqH,QAAQ2wC,EAAY,GAAK/xU,KAAKg/R,GAAGjF,MAAMoH,QAAQ4wC,EAAY,GAAK/xU,KAAKg/R,GAAGjF,MAGhO,GAAI/5R,KAAKoQ,KAAKvQ,GAAKG,KAAKoQ,KAAKvQ,EAAEoB,EAAG,CAChC,IAAI+wU,EAAYhyU,KAAK2pS,GAAGU,eAAejlP,GACnC6sR,EAAYjyU,KAAK4pS,GAAGS,eAAejlP,GAEvC,GAAIplD,KAAKoQ,KAAKvQ,EAAEkiL,EAAG,CACjB,IAAImwJ,EAAYlyU,KAAK6pS,GAAGQ,eAAejlP,GACvCsmP,EAAO9J,UAAUowC,EAAYhyU,KAAK2pS,GAAG5P,KAAMk4C,EAAYjyU,KAAK4pS,GAAG7P,MAAOm4C,EAAYlyU,KAAK6pS,GAAG9P,WAE1F2R,EAAO9J,UAAUowC,EAAYhyU,KAAK2pS,GAAG5P,KAAMk4C,EAAYjyU,KAAK4pS,GAAG7P,KAAM,OAElE,CACL,IAAIrvN,EAAW1qE,KAAKH,EAAEwqS,eAAejlP,GACrCsmP,EAAO9J,UAAUl3N,EAAS,GAAK1qE,KAAKH,EAAEk6R,KAAMrvN,EAAS,GAAK1qE,KAAKH,EAAEk6R,MAAOrvN,EAAS,GAAK1qE,KAAKH,EAAEk6R,MAG/F,OAAO2R,EAGT,SAASymC,IACP,OAAOnyU,KAAK4F,EAAEuoB,MAAM,IAAIsyQ,QAG1B,IAAIgK,EAAuBpB,yBAAyBoB,qBAEpDpB,yBAAyBoB,qBAAuB,SAAUve,EAAM97Q,EAAMsiI,GACpE,IAAIjyD,EAAOgqN,EAAqBve,EAAM97Q,EAAMsiI,GAS5C,OAPIjyD,EAAKy6M,kBAAkB75R,OACzBo/E,EAAK4pN,eAAiBqnC,EAAwBruR,KAAKo9B,GAEnDA,EAAK4pN,eAAiB8nC,EAA8B9uR,KAAKo9B,GAG3DA,EAAKq4N,iBAAmBs3B,kBAAkBt3B,iBACnCr4N,GAGT,IAAI2xP,EAAkB78C,gBAAgB/zL,QAyCtC,SAAS6wO,EAAoB38C,GAmB3B,OAjBK11R,KAAKswU,iBACRtwU,KAAKswU,eAAiB,CACpBgC,WAAY91C,UAAUruQ,MAAMnuB,KAAK81R,IACjC9/H,UAAW,EACXu8K,SAAUj9D,sBAIdogB,GAAY11R,KAAKksR,KAAKjF,WAAW3B,UACjCoQ,GAAY11R,KAAK41R,WAEbF,IAAa11R,KAAKswU,eAAeiC,WACnCvyU,KAAKswU,eAAet6K,UAAYh2J,KAAKswU,eAAeiC,SAAW78C,EAAW11R,KAAK25R,SAAS3jI,UAAY,EACpGh2J,KAAKswU,eAAeiC,SAAW78C,EAC/B11R,KAAKm9R,iBAAiBzH,EAAU11R,KAAKswU,eAAegC,WAAYtyU,KAAKswU,iBAGhEtwU,KAAKswU,eAAegC,WA1D7B/8C,gBAAgB/zL,QAAU,SAAU0qL,EAAM97Q,EAAM8c,EAAM6sQ,EAAMrnJ,GAC1D,IAAIjyD,EAAO2xP,EAAgBlmD,EAAM97Q,EAAM8c,EAAM6sQ,EAAMrnJ,GAI/CjyD,EAAK85M,GACP95M,EAAK4pN,eAAiB+lC,kBAAkB/lC,eAAehnP,KAAKo9B,GAE5DA,EAAK4pN,eAAiB+lC,kBAAkBI,qBAAqBntR,KAAKo9B,GAGpEA,EAAKq4N,iBAAmBs3B,kBAAkBt3B,iBAC1Cr4N,EAAK4sP,QAAUA,EACf5sP,EAAK0sP,OAASA,EACd1sP,EAAK8sP,OAASA,EACd9sP,EAAK0zN,kBAAoBi8B,kBAAkBj8B,kBAAkB9wP,KAAKo9B,GAClEA,EAAK+zN,eAAiB47B,kBAAkB57B,eAAenxP,KAAKo9B,GAC5DA,EAAK2zN,QAAqB,IAAXhkS,EAAKxJ,EAAUwJ,EAAKzJ,EAAEtF,OAAS,EAC9Co/E,EAAK84N,cAAgBnpS,EAAK28R,GAC1B,IAAIzoS,EAAQ,EAiBZ,OAfa,IAAT4oB,IACF5oB,EAAQozQ,iBAAiB,UAAsB,IAAXtnQ,EAAKxJ,EAAUwJ,EAAKzJ,EAAE,GAAG1F,EAAEI,OAAS+O,EAAKzJ,EAAEtF,SAGjFo/E,EAAK6vP,eAAiB,CACpBx5C,UAAWxhB,oBACXt/G,UAAW,EACX1xJ,MAAOA,GAET8rU,kBAAkBC,kBAAkBnkD,EAAM97Q,EAAMqwE,GAE5CA,EAAK95E,GACP+rI,EAAUgoJ,mBAAmBj6M,GAGxBA,GAyBT,IAAI+xP,EAAmCt1C,qBAAqBqD,yBACxDkyC,EAA4Cv1C,qBAAqBsD,kCAErE,SAASkyC,KAETA,EAAiBxyU,UAAY,CAC3Bk8R,SAAU,SAAkB37M,EAAMr7B,GAC5BplD,KAAK2G,GACP3G,KAAK+yO,WAGP,IAMI7xO,EANAu7R,EAAYz8R,KAAK4F,OAERsgC,IAATkf,IACFq3O,EAAYz8R,KAAKqqS,eAAejlP,EAAM,IAIxC,IAAIy7C,EAAM47L,EAAUxM,QAChBmM,EAAWK,EAAUh8M,GACrBmuM,EAAS6N,EAAU72R,EACnBkW,EAAMk8P,iBAAiBn3K,GAE3B,IAAK3/F,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EAEtB4a,EAAI5a,GADO,MAATu/E,GAAyB,MAATA,EACT,CAAC27M,EAASl7R,GAAG,GAAK0tR,EAAO1tR,GAAG,GAAIk7R,EAASl7R,GAAG,GAAK0tR,EAAO1tR,GAAG,IAE3D,CAACk7R,EAASl7R,GAAG,GAAIk7R,EAASl7R,GAAG,IAI1C,OAAO4a,GAET8yQ,OAAQ,SAAgBxpO,GACtB,OAAOplD,KAAKo8R,SAAS,IAAKh3O,IAE5BonR,WAAY,SAAoBpnR,GAC9B,OAAOplD,KAAKo8R,SAAS,IAAKh3O,IAE5BqnR,YAAa,SAAqBrnR,GAChC,OAAOplD,KAAKo8R,SAAS,IAAKh3O,IAE5ButR,SAAU,WACR,OAAO3yU,KAAK4F,EAAEquE,GAEhB2+P,YAAa,SAAqBzgD,EAAM/sO,GACtC,IAAIq3O,EAAYz8R,KAAK4F,OAERsgC,IAATkf,IACFq3O,EAAYz8R,KAAKqqS,eAAejlP,EAAM,IAGnCplD,KAAK6yU,kBACR7yU,KAAK6yU,gBAAkBv9C,IAAI9C,kBAAkBiK,IAG/C,IAMI9e,EANA+U,EAAiB1yR,KAAK6yU,gBACtBpiD,EAAUiC,EAAejC,QACzB+C,EAAYd,EAAe/B,YAAcwB,EACzCjxR,EAAI,EACJ2/F,EAAM4vL,EAAQpvR,OACdyxU,EAAoB,EAGxB,MAAO5xU,EAAI2/F,EAAK,CACd,GAAIiyO,EAAoBriD,EAAQvvR,GAAGqvR,YAAciD,EAAW,CAC1D,IAAIu/C,EAAY7xU,EACZ8xU,EAAWv2C,EAAUxoN,GAAK/yE,IAAM2/F,EAAM,EAAI,EAAI3/F,EAAI,EAClD01R,GAAepD,EAAYs/C,GAAqBriD,EAAQvvR,GAAGqvR,YAC/D5S,EAAK2X,IAAI5B,kBAAkB+I,EAAU72R,EAAEmtU,GAAYt2C,EAAU72R,EAAEotU,GAAWv2C,EAAUv2R,EAAE6sU,GAAYt2C,EAAUv7R,EAAE8xU,GAAWp8C,EAAanG,EAAQvvR,IAC9I,MAEA4xU,GAAqBriD,EAAQvvR,GAAGqvR,YAGlCrvR,GAAK,EAOP,OAJKy8Q,IACHA,EAAK8e,EAAUxoN,EAAI,CAACwoN,EAAU72R,EAAE,GAAG,GAAI62R,EAAU72R,EAAE,GAAG,IAAM,CAAC62R,EAAU72R,EAAE62R,EAAUxM,QAAU,GAAG,GAAIwM,EAAU72R,EAAE62R,EAAUxM,QAAU,GAAG,KAGlItS,GAETs1D,aAAc,SAAsB9gD,EAAM/sO,EAAM8tR,GAElC,GAAR/gD,EAEFA,EAAOnyR,KAAK4F,EAAEquE,EACG,GAARk+M,IAETA,EAAO,MAGT,IAAIL,EAAM9xR,KAAK4yU,YAAYzgD,EAAM/sO,GAC7B2sO,EAAM/xR,KAAK4yU,YAAYzgD,EAAO,KAAO/sO,GACrC+tR,EAAUphD,EAAI,GAAKD,EAAI,GACvBshD,EAAUrhD,EAAI,GAAKD,EAAI,GACvBuhD,EAAYpkU,KAAKwpQ,KAAKxpQ,KAAKmvH,IAAI+0M,EAAS,GAAKlkU,KAAKmvH,IAAIg1M,EAAS,IAEnE,GAAkB,IAAdC,EACF,MAAO,CAAC,EAAG,GAGb,IAAIC,EAA4B,YAAfJ,EAA2B,CAACC,EAAUE,EAAWD,EAAUC,GAAa,EAAED,EAAUC,EAAWF,EAAUE,GAC1H,OAAOC,GAETC,cAAe,SAAuBphD,EAAM/sO,GAC1C,OAAOplD,KAAKizU,aAAa9gD,EAAM/sO,EAAM,YAEvCouR,aAAc,SAAsBrhD,EAAM/sO,GACxC,OAAOplD,KAAKizU,aAAa9gD,EAAM/sO,EAAM,WAEvC0zP,iBAAkBs3B,kBAAkBt3B,iBACpCzO,eAAgB+lC,kBAAkBI,sBAEpC36D,gBAAgB,CAAC68D,GAAmBF,GACpC38D,gBAAgB,CAAC68D,GAAmBD,GACpCA,EAA0CvyU,UAAUmqS,eAAiBgoC,EACrEI,EAA0CvyU,UAAU2sU,mBAAqB1C,kBAAkB0C,mBAC3F,IAAI4G,EAAuBv2C,qBAAqBmD,aAEhDnD,qBAAqBmD,aAAe,SAAUnU,EAAM97Q,EAAM8c,EAAMpR,EAAK43T,GACnE,IAAIjzP,EAAOgzP,EAAqBvnD,EAAM97Q,EAAM8c,EAAMpR,EAAK43T,GAcvD,OAbAjzP,EAAK84N,cAAgBnpS,EAAK28R,GAC1BtsN,EAAK25M,MAAO,EAEC,IAATltQ,EACFkjT,kBAAkBC,kBAAkBnkD,EAAM97Q,EAAKutQ,GAAIl9L,GACjC,IAATvzD,GACTkjT,kBAAkBC,kBAAkBnkD,EAAM97Q,EAAKouQ,GAAI/9L,GAGjDA,EAAK95E,GACPulR,EAAKwO,mBAAmBj6M,GAGnBA,GAIX,SAASkzP,eACPlD,uBAGF,SAASmD,eACP,SAASvD,IACP,OAAIrwU,KAAKoQ,KAAKzQ,EAAE2tK,GACdttK,KAAK6zU,oBAAsB1J,kBAAkB0C,mBAAmBxpR,KAAKrjD,KAA1CmqU,CAAgDnqU,KAAKksR,KAAMlsR,KAAKoQ,KAAKzQ,EAAGK,MACnGA,KAAKw6R,UAAUx6R,KAAK8zU,mBAAmBzwR,KAAKrjD,QACrC,GAGF,KAGTqsT,aAAansT,UAAU4zU,mBAAqB,SAAUt7J,EAAcvlF,GAClE,IAAIlvC,EAAW/jD,KAAK6zU,oBAAoB5gP,GAExC,GAAIulF,EAAax3K,IAAM+iD,EAAU,CAC/B,IAAIu+J,EAAU,GAId,OAHAtiN,KAAKytT,SAASnrG,EAAS9pC,GACvB8pC,EAAQthN,EAAI+iD,EAASx1C,WACrB+zM,EAAQ29D,YAAa,EACd39D,EAGT,OAAO9pC,GAGT6zI,aAAansT,UAAUi+S,eAAiB,WACtC,IAAI41B,EAAc/zU,KAAKuvT,kBACnBykB,EAAiBh0U,KAAKqwU,oBAE1B,OADArwU,KAAKu6R,GAAKw5C,GAAeC,EAClBh0U,KAAKu6R,IAGd8xB,aAAansT,UAAUmwU,kBAAoBA,EAG7C,SAASthQ,aACP6kQ,eAGF,SAASK,uBAoBT,SAASC,cAAch4T,EAAQ6nS,EAAe73B,EAAMjmP,EAAIqgC,GACtDtmE,KAAK+jT,cAAgBA,EACrB,IAAIL,EAAgBxnC,SAAS,iBAC7BwnC,EAAc94O,aAAa,OAAQ,UACnC84O,EAAc94O,aAAa,8BAA+B,aAC1D84O,EAAc94O,aAAa,SAAU,wFACrC84O,EAAc94O,aAAa,SAAU3kC,EAAK,WAC1C/pB,EAAO4uD,YAAY44O,GACnBA,EAAgBxnC,SAAS,iBACzBwnC,EAAc94O,aAAa,OAAQ,UACnC84O,EAAc94O,aAAa,8BAA+B,QAC1D84O,EAAc94O,aAAa,SAAU,2CACrC84O,EAAc94O,aAAa,SAAU3kC,EAAK,WAC1C/pB,EAAO4uD,YAAY44O,GACnB1jT,KAAKm0U,aAAezwB,EACpB,IAAI0wB,EAAUp0U,KAAKq0U,gBAAgBpuS,EAAI,CAACqgC,EAAQrgC,EAAK,UAAWA,EAAK,YACrE/pB,EAAO4uD,YAAYspQ,GAcrB,SAASE,cAAcp4T,EAAQ6nS,EAAe73B,EAAMjmP,GAClDjmC,KAAK+jT,cAAgBA,EACrB,IAAIL,EAAgBxnC,SAAS,iBAC7BwnC,EAAc94O,aAAa,OAAQ,UACnC84O,EAAc94O,aAAa,8BAA+B,QAC1D84O,EAAc94O,aAAa,SAAU,2CACrC84O,EAAc94O,aAAa,SAAU3kC,GACrC/pB,EAAO4uD,YAAY44O,GACnB1jT,KAAKm0U,aAAezwB,EAWtB,SAAS6wB,gBAAgB/wB,EAAKO,EAAe73B,GAC3ClsR,KAAKggD,aAAc,EACnBhgD,KAAK+jT,cAAgBA,EACrB/jT,KAAKksR,KAAOA,EACZlsR,KAAKuxP,MAAQ,GAiIf,SAASijF,iBAAiBt4T,EAAQ6nS,EAAe73B,EAAMjmP,GACrDjmC,KAAK+jT,cAAgBA,EACrB,IAAIL,EAAgBxnC,SAAS,iBAC7BwnC,EAAc94O,aAAa,OAAQ,UACnC84O,EAAc94O,aAAa,8BAA+B,aAC1D84O,EAAc94O,aAAa,SAAU,wFACrC1uD,EAAO4uD,YAAY44O,GACnB,IAAI+wB,EAAsBv4D,SAAS,uBACnCu4D,EAAoB7pQ,aAAa,8BAA+B,QAChE6pQ,EAAoB7pQ,aAAa,SAAU3kC,GAC3CjmC,KAAKm0U,aAAeM,EACpB,IAAIC,EAAUx4D,SAAS,WACvBw4D,EAAQ9pQ,aAAa,OAAQ,SAC7B6pQ,EAAoB3pQ,YAAY4pQ,GAChC10U,KAAK00U,QAAUA,EACf,IAAIC,EAAUz4D,SAAS,WACvBy4D,EAAQ/pQ,aAAa,OAAQ,SAC7B6pQ,EAAoB3pQ,YAAY6pQ,GAChC30U,KAAK20U,QAAUA,EACf,IAAIC,EAAU14D,SAAS,WACvB04D,EAAQhqQ,aAAa,OAAQ,SAC7B6pQ,EAAoB3pQ,YAAY8pQ,GAChC50U,KAAK40U,QAAUA,EACf14T,EAAO4uD,YAAY2pQ,GAiBrB,SAASI,mBAAmB34T,EAAQ6nS,EAAe73B,EAAMjmP,GACvDjmC,KAAK+jT,cAAgBA,EACrB,IAAI3L,EAAiBp4S,KAAK+jT,cAAc3L,eACpCq8B,EAAsBv4D,SAAS,wBAE/Bk8B,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,GAAWwyS,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,GAAWwyS,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,GAAWwyS,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,GAAWwyS,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,KACzR5F,KAAK00U,QAAU10U,KAAK80U,aAAa,UAAWL,KAI1Cr8B,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,GAAWwyS,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,GAAWwyS,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,GAAWwyS,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,GAAWwyS,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,KACzR5F,KAAK20U,QAAU30U,KAAK80U,aAAa,UAAWL,KAI1Cr8B,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,GAAWwyS,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,GAAWwyS,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,GAAWwyS,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,GAAWwyS,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,KACzR5F,KAAK40U,QAAU50U,KAAK80U,aAAa,UAAWL,KAI1Cr8B,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,GAAWwyS,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,GAAWwyS,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,GAAWwyS,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,GAAWwyS,EAAe,IAAIv4S,EAAE8G,GAAgC,IAA3ByxS,EAAe,IAAIv4S,EAAE+F,KACzR5F,KAAK+0U,QAAU/0U,KAAK80U,aAAa,UAAWL,KAI1Cz0U,KAAK00U,SAAW10U,KAAK20U,SAAW30U,KAAK40U,SAAW50U,KAAK+0U,WACvDN,EAAoB7pQ,aAAa,8BAA+B,QAChE1uD,EAAO4uD,YAAY2pQ,KAGjBr8B,EAAe,GAAGv4S,EAAE8G,GAA+B,IAA1ByxS,EAAe,GAAGv4S,EAAE+F,GAAWwyS,EAAe,GAAGv4S,EAAE8G,GAA+B,IAA1ByxS,EAAe,GAAGv4S,EAAE+F,GAAWwyS,EAAe,GAAGv4S,EAAE8G,GAA+B,IAA1ByxS,EAAe,GAAGv4S,EAAE+F,GAAWwyS,EAAe,GAAGv4S,EAAE8G,GAA+B,IAA1ByxS,EAAe,GAAGv4S,EAAE+F,GAAWwyS,EAAe,GAAGv4S,EAAE8G,GAA+B,IAA1ByxS,EAAe,GAAGv4S,EAAE+F,KAC/Q6uU,EAAsBv4D,SAAS,uBAC/Bu4D,EAAoB7pQ,aAAa,8BAA+B,QAChE6pQ,EAAoB7pQ,aAAa,SAAU3kC,GAC3C/pB,EAAO4uD,YAAY2pQ,GACnBz0U,KAAKg1U,gBAAkBh1U,KAAK80U,aAAa,UAAWL,GACpDz0U,KAAKi1U,gBAAkBj1U,KAAK80U,aAAa,UAAWL,GACpDz0U,KAAKk1U,gBAAkBl1U,KAAK80U,aAAa,UAAWL,IA8ExD,SAASU,oBAAoBj5T,EAAQ6nS,EAAe73B,EAAMjmP,EAAIqgC,GAC5D,IAAI+xP,EAAatU,EAAcrxK,UAAUu0I,WAAW8rB,aAAaslB,WACjEn8S,EAAO0uD,aAAa,IAAKytP,EAAW/qJ,GACpCpxJ,EAAO0uD,aAAa,IAAKytP,EAAWnzT,GACpCgX,EAAO0uD,aAAa,QAASytP,EAAW94P,OACxCrjD,EAAO0uD,aAAa,SAAUytP,EAAW54P,QACzCz/D,KAAK+jT,cAAgBA,EACrB,IAAIqxB,EAAiBl5D,SAAS,kBAC9Bk5D,EAAexqQ,aAAa,KAAM,eAClCwqQ,EAAexqQ,aAAa,SAAU3kC,EAAK,kBAC3CmvS,EAAexqQ,aAAa,eAAgB,KAC5C5qE,KAAKo1U,eAAiBA,EACtBl5T,EAAO4uD,YAAYsqQ,GACnB,IAAIC,EAAWn5D,SAAS,YACxBm5D,EAASzqQ,aAAa,KAAM,MAC5ByqQ,EAASzqQ,aAAa,KAAM,KAC5ByqQ,EAASzqQ,aAAa,KAAM3kC,EAAK,kBACjCovS,EAASzqQ,aAAa,SAAU3kC,EAAK,kBACrCjmC,KAAKq1U,SAAWA,EAChBn5T,EAAO4uD,YAAYuqQ,GACnB,IAAIC,EAAUp5D,SAAS,WACvBo5D,EAAQ1qQ,aAAa,cAAe,WACpC0qQ,EAAQ1qQ,aAAa,gBAAiB,KACtC0qQ,EAAQ1qQ,aAAa,SAAU3kC,EAAK,kBACpCjmC,KAAKs1U,QAAUA,EACfp5T,EAAO4uD,YAAYwqQ,GACnB,IAAIC,EAAcr5D,SAAS,eAC3Bq5D,EAAY3qQ,aAAa,KAAM3kC,EAAK,kBACpCsvS,EAAY3qQ,aAAa,MAAO3kC,EAAK,kBACrCsvS,EAAY3qQ,aAAa,WAAY,MACrC2qQ,EAAY3qQ,aAAa,SAAU3kC,EAAK,kBACxC/pB,EAAO4uD,YAAYyqQ,GACnB,IAAInB,EAAUp0U,KAAKq0U,gBAAgBpuS,EAAI,CAACA,EAAK,iBAAkBqgC,IAC/DpqD,EAAO4uD,YAAYspQ,GApYrBH,oBAAoB/zU,UAAY,CAC9Bm0U,gBAAiB,SAAyBmB,EAAUC,GAClD,IAEIC,EACAx0U,EAHAkzU,EAAUl4D,SAAS,WAKvB,IAJAk4D,EAAQxpQ,aAAa,SAAU4qQ,GAI1Bt0U,EAAI,EAAGA,EAAIu0U,EAAIp0U,OAAQH,GAAK,EAC/Bw0U,EAAcx5D,SAAS,eACvBw5D,EAAY9qQ,aAAa,KAAM6qQ,EAAIv0U,IACnCkzU,EAAQtpQ,YAAY4qQ,GACpBtB,EAAQtpQ,YAAY4qQ,GAGtB,OAAOtB,IAuBXv+D,gBAAgB,CAACo+D,qBAAsBC,eAEvCA,cAAch0U,UAAUkpR,YAAc,SAAU0gB,GAC9C,GAAIA,GAAe9pS,KAAK+jT,cAAc/pB,KAAM,CAC1C,IAAI27C,EAAa31U,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EACpDgwU,EAAa51U,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EACpD2vS,EAAUv1S,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAAI,IACzD5F,KAAKm0U,aAAavpQ,aAAa,SAAUgrQ,EAAW,GAAKD,EAAW,GAAK,UAAYA,EAAW,GAAK,KAAOC,EAAW,GAAKD,EAAW,IAAM,UAAYA,EAAW,GAAK,KAAOC,EAAW,GAAKD,EAAW,IAAM,UAAYA,EAAW,GAAK,UAAYpgC,EAAU,QAevQ++B,cAAcp0U,UAAUkpR,YAAc,SAAU0gB,GAC9C,GAAIA,GAAe9pS,KAAK+jT,cAAc/pB,KAAM,CAC1C,IAAIptE,EAAQ5sN,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAC/C2vS,EAAUv1S,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EACrD5F,KAAKm0U,aAAavpQ,aAAa,SAAU,WAAagiJ,EAAM,GAAK,YAAcA,EAAM,GAAK,YAAcA,EAAM,GAAK,UAAY2oF,EAAU,QAW7Ig/B,gBAAgBr0U,UAAU6uE,WAAa,WACrC,IACIqe,EACAyoP,EACA30U,EACA2/F,EAJAi1O,EAAe91U,KAAKksR,KAAKsxB,aAAajpM,UAAYv0G,KAAKksR,KAAKsxB,aAAarvG,WAmB7E,IAbiD,IAA7CnuM,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,GACzCi7F,EAAM7gG,KAAKksR,KAAKwnB,YAAYh2B,gBAAgBr8Q,OAC5CH,EAAI,IAEJA,EAAIlB,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAAI,EAC/Ci7F,EAAM3/F,EAAI,GAGZ20U,EAAY35D,SAAS,KACrB25D,EAAUjrQ,aAAa,OAAQ,QAC/BirQ,EAAUjrQ,aAAa,iBAAkB,SACzCirQ,EAAUjrQ,aAAa,oBAAqB,GAEvC1pE,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACpBksF,EAAO8uL,SAAS,QAChB25D,EAAU/qQ,YAAYsiB,GACtBptF,KAAKuxP,MAAMvrP,KAAK,CACdnG,EAAGutF,EACHjnF,EAAGjF,IAIP,GAAkD,IAA9ClB,KAAK+jT,cAAc3L,eAAe,IAAIv4S,EAAE+F,EAAS,CACnD,IAAI2tS,EAAOr3B,SAAS,QAChBj2O,EAAK+0O,kBACTu4B,EAAK3oO,aAAa,KAAM3kC,GACxBstQ,EAAK3oO,aAAa,YAAa,SAC/B2oO,EAAKzoO,YAAY+qQ,GACjB71U,KAAKksR,KAAKjF,WAAWC,KAAKp8M,YAAYyoO,GACtC,IAAIpuS,EAAI+2Q,SAAS,KACjB/2Q,EAAEylE,aAAa,OAAQ,OAAS+qM,kBAAoB,IAAM1vO,EAAK,KAE/D,MAAO6vS,EAAa,GAClB3wU,EAAE2lE,YAAYgrQ,EAAa,IAG7B91U,KAAKksR,KAAKsxB,aAAa1yO,YAAY3lE,GACnCnF,KAAKmlT,OAAS5R,EACdsiC,EAAUjrQ,aAAa,SAAU,aAC5B,GAAkD,IAA9C5qE,KAAK+jT,cAAc3L,eAAe,IAAIv4S,EAAE+F,GAAyD,IAA9C5F,KAAK+jT,cAAc3L,eAAe,IAAIv4S,EAAE+F,EAAS,CAC7G,GAAkD,IAA9C5F,KAAK+jT,cAAc3L,eAAe,IAAIv4S,EAAE+F,EAAS,CACnDkwU,EAAe91U,KAAKksR,KAAKsxB,aAAajpM,UAAYv0G,KAAKksR,KAAKsxB,aAAarvG,WAEzE,MAAO2nI,EAAaz0U,OAClBrB,KAAKksR,KAAKsxB,aAAaxyO,YAAY8qQ,EAAa,IAIpD91U,KAAKksR,KAAKsxB,aAAa1yO,YAAY+qQ,GACnC71U,KAAKksR,KAAKsxB,aAAa9vG,gBAAgB,QACvCmoI,EAAUjrQ,aAAa,SAAU,QAGnC5qE,KAAKggD,aAAc,EACnBhgD,KAAK+1U,WAAaF,GAGpBtB,gBAAgBr0U,UAAUkpR,YAAc,SAAU0gB,GAKhD,IAAI5oS,EAJClB,KAAKggD,aACRhgD,KAAK+uE,aAIP,IACIwkO,EACAnmN,EAFAyT,EAAM7gG,KAAKuxP,MAAMlwP,OAIrB,IAAKH,EAAI,EAAGA,EAAI2/F,EAAK3/F,GAAK,EACxB,IAAyB,IAArBlB,KAAKuxP,MAAMrwP,GAAGiF,IAChBotS,EAAOvzS,KAAKksR,KAAKwnB,YAAYE,SAAS5zS,KAAKuxP,MAAMrwP,GAAGiF,GACpDinF,EAAOptF,KAAKuxP,MAAMrwP,GAAGrB,GAEjBiqS,GAAe9pS,KAAK+jT,cAAc/pB,MAAQuZ,EAAK9yN,KAAKu5M,OACtD5sM,EAAKxiB,aAAa,IAAK2oO,EAAKuM,UAG1BhW,GAAe9pS,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAEm6R,MAAQh6R,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAEm6R,MAAQh6R,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAEm6R,MAAQh6R,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAEm6R,MAAQuZ,EAAK9yN,KAAKu5M,MAAM,CAC7N,IAAIg8C,EAEJ,GAAiD,IAA7Ch2U,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,GAAwD,MAA7C5F,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAAW,CACtG,IAAI3E,EAAmG,IAA/FgO,KAAKs2C,IAAIvlD,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAAG5F,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,GAC9FlB,EAAmG,IAA/FuK,KAAK4wD,IAAI7/D,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAAG5F,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,GAC9FooJ,EAAI5gE,EAAK6oP,iBACbD,EAAiB,SAAWhoL,EAAI/sJ,EAAI,IACpC,IAGI4F,EAHAqvU,EAAaloL,GAAKtpJ,EAAIzD,GACtByyL,EAAU,EAA+C,EAA3C1zL,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAAQ5F,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAAI,IACxGuwU,EAAQlnU,KAAKq2C,MAAM4wR,EAAaxiJ,GAGpC,IAAK7sL,EAAI,EAAGA,EAAIsvU,EAAOtvU,GAAK,EAC1BmvU,GAAkB,KAAkD,EAA3Ch2U,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAAQ5F,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAAI,IAAO,IAG5HowU,GAAkB,KAAW,GAAJhoL,EAAS,YAElCgoL,EAAiB,KAAkD,EAA3Ch2U,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAAQ5F,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAAI,IAGpHwnF,EAAKxiB,aAAa,mBAAoBorQ,GAa5C,IARIlsC,GAAe9pS,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAEm6R,OACxDh6R,KAAK+1U,WAAWnrQ,aAAa,eAA2D,EAA3C5qE,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,IAGlFkkS,GAAe9pS,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAEm6R,OACxDh6R,KAAK+1U,WAAWnrQ,aAAa,UAAW5qE,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,IAG/B,IAA9C5F,KAAK+jT,cAAc3L,eAAe,IAAIv4S,EAAE+F,GAAyD,IAA9C5F,KAAK+jT,cAAc3L,eAAe,IAAIv4S,EAAE+F,KACzFkkS,GAAe9pS,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAEm6R,MAAM,CAC9D,IAAIptE,EAAQ5sN,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EACnD5F,KAAK+1U,WAAWnrQ,aAAa,SAAU,OAAS8tM,QAAmB,IAAX9rD,EAAM,IAAY,IAAM8rD,QAAmB,IAAX9rD,EAAM,IAAY,IAAM8rD,QAAmB,IAAX9rD,EAAM,IAAY,OA+BhJ4nH,iBAAiBt0U,UAAUkpR,YAAc,SAAU0gB,GACjD,GAAIA,GAAe9pS,KAAK+jT,cAAc/pB,KAAM,CAC1C,IAAIo8C,EAASp2U,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAChDywU,EAASr2U,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAChD0wU,EAASt2U,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAChD2wU,EAASD,EAAO,GAAK,IAAMD,EAAO,GAAK,IAAMD,EAAO,GACpDI,EAASF,EAAO,GAAK,IAAMD,EAAO,GAAK,IAAMD,EAAO,GACpDK,EAASH,EAAO,GAAK,IAAMD,EAAO,GAAK,IAAMD,EAAO,GACxDp2U,KAAK00U,QAAQ9pQ,aAAa,cAAe2rQ,GACzCv2U,KAAK20U,QAAQ/pQ,aAAa,cAAe4rQ,GACzCx2U,KAAK40U,QAAQhqQ,aAAa,cAAe6rQ,KA6C7C5B,mBAAmB30U,UAAU40U,aAAe,SAAU5nT,EAAMunT,GAC1D,IAAIlvB,EAASrpC,SAAShvP,GAGtB,OAFAq4R,EAAO36O,aAAa,OAAQ,SAC5B6pQ,EAAoB3pQ,YAAYy6O,GACzBA,GAGTsvB,mBAAmB30U,UAAUw2U,cAAgB,SAAUC,EAAYC,EAAYC,EAAOC,EAAaC,GACjG,IAEI5kD,EAMA6kD,EARAz6C,EAAM,EACNpW,EAAW,IAEX5gO,EAAMt2C,KAAKs2C,IAAIoxR,EAAYC,GAC3B/2Q,EAAM5wD,KAAK4wD,IAAI82Q,EAAYC,GAC3BjqI,EAAQjtM,MAAMiB,KAAK,KAAM,CAC3BU,OAAQ8kR,IAGN/xM,EAAM,EACN6iQ,EAAcF,EAAcD,EAC5BI,EAAaN,EAAaD,EAE9B,MAAOp6C,GAAO,IACZpK,EAAOoK,EAAM,IAGXy6C,EADE7kD,GAAQ5sO,EACG2xR,EAAa,EAAIH,EAAcD,EACnC3kD,GAAQtyN,EACJq3Q,EAAa,EAAIJ,EAAcC,EAE/BD,EAAcG,EAAchoU,KAAKmvH,KAAK+zJ,EAAOwkD,GAAcO,EAAY,EAAIL,GAG1FlqI,EAAMv4H,GAAO4iQ,EACb5iQ,GAAO,EACPmoN,GAAO,KAAOpW,EAAW,GAG3B,OAAOx5E,EAAM3mL,KAAK,MAGpB6uT,mBAAmB30U,UAAUkpR,YAAc,SAAU0gB,GACnD,GAAIA,GAAe9pS,KAAK+jT,cAAc/pB,KAAM,CAC1C,IAAI96P,EACAk5Q,EAAiBp4S,KAAK+jT,cAAc3L,eAEpCp4S,KAAKg1U,kBAAoBlrC,GAAesO,EAAe,GAAGv4S,EAAEm6R,MAAQoe,EAAe,GAAGv4S,EAAEm6R,MAAQoe,EAAe,GAAGv4S,EAAEm6R,MAAQoe,EAAe,GAAGv4S,EAAEm6R,MAAQoe,EAAe,GAAGv4S,EAAEm6R,QAC9K96P,EAAMl/B,KAAK02U,cAAct+B,EAAe,GAAGv4S,EAAE+F,EAAGwyS,EAAe,GAAGv4S,EAAE+F,EAAGwyS,EAAe,GAAGv4S,EAAE+F,EAAGwyS,EAAe,GAAGv4S,EAAE+F,EAAGwyS,EAAe,GAAGv4S,EAAE+F,GACzI5F,KAAKg1U,gBAAgBpqQ,aAAa,cAAe1rC,GACjDl/B,KAAKi1U,gBAAgBrqQ,aAAa,cAAe1rC,GACjDl/B,KAAKk1U,gBAAgBtqQ,aAAa,cAAe1rC,IAG/Cl/B,KAAK00U,UAAY5qC,GAAesO,EAAe,IAAIv4S,EAAEm6R,MAAQoe,EAAe,IAAIv4S,EAAEm6R,MAAQoe,EAAe,IAAIv4S,EAAEm6R,MAAQoe,EAAe,IAAIv4S,EAAEm6R,MAAQoe,EAAe,IAAIv4S,EAAEm6R,QAC3K96P,EAAMl/B,KAAK02U,cAAct+B,EAAe,IAAIv4S,EAAE+F,EAAGwyS,EAAe,IAAIv4S,EAAE+F,EAAGwyS,EAAe,IAAIv4S,EAAE+F,EAAGwyS,EAAe,IAAIv4S,EAAE+F,EAAGwyS,EAAe,IAAIv4S,EAAE+F,GAC9I5F,KAAK00U,QAAQ9pQ,aAAa,cAAe1rC,IAGvCl/B,KAAK20U,UAAY7qC,GAAesO,EAAe,IAAIv4S,EAAEm6R,MAAQoe,EAAe,IAAIv4S,EAAEm6R,MAAQoe,EAAe,IAAIv4S,EAAEm6R,MAAQoe,EAAe,IAAIv4S,EAAEm6R,MAAQoe,EAAe,IAAIv4S,EAAEm6R,QAC3K96P,EAAMl/B,KAAK02U,cAAct+B,EAAe,IAAIv4S,EAAE+F,EAAGwyS,EAAe,IAAIv4S,EAAE+F,EAAGwyS,EAAe,IAAIv4S,EAAE+F,EAAGwyS,EAAe,IAAIv4S,EAAE+F,EAAGwyS,EAAe,IAAIv4S,EAAE+F,GAC9I5F,KAAK20U,QAAQ/pQ,aAAa,cAAe1rC,IAGvCl/B,KAAK40U,UAAY9qC,GAAesO,EAAe,IAAIv4S,EAAEm6R,MAAQoe,EAAe,IAAIv4S,EAAEm6R,MAAQoe,EAAe,IAAIv4S,EAAEm6R,MAAQoe,EAAe,IAAIv4S,EAAEm6R,MAAQoe,EAAe,IAAIv4S,EAAEm6R,QAC3K96P,EAAMl/B,KAAK02U,cAAct+B,EAAe,IAAIv4S,EAAE+F,EAAGwyS,EAAe,IAAIv4S,EAAE+F,EAAGwyS,EAAe,IAAIv4S,EAAE+F,EAAGwyS,EAAe,IAAIv4S,EAAE+F,EAAGwyS,EAAe,IAAIv4S,EAAE+F,GAC9I5F,KAAK40U,QAAQhqQ,aAAa,cAAe1rC,IAGvCl/B,KAAK+0U,UAAYjrC,GAAesO,EAAe,IAAIv4S,EAAEm6R,MAAQoe,EAAe,IAAIv4S,EAAEm6R,MAAQoe,EAAe,IAAIv4S,EAAEm6R,MAAQoe,EAAe,IAAIv4S,EAAEm6R,MAAQoe,EAAe,IAAIv4S,EAAEm6R,QAC3K96P,EAAMl/B,KAAK02U,cAAct+B,EAAe,IAAIv4S,EAAE+F,EAAGwyS,EAAe,IAAIv4S,EAAE+F,EAAGwyS,EAAe,IAAIv4S,EAAE+F,EAAGwyS,EAAe,IAAIv4S,EAAE+F,EAAGwyS,EAAe,IAAIv4S,EAAE+F,GAC9I5F,KAAK+0U,QAAQnqQ,aAAa,cAAe1rC,MAyC/C22O,gBAAgB,CAACo+D,qBAAsBkB,qBAEvCA,oBAAoBj1U,UAAUkpR,YAAc,SAAU0gB,GACpD,GAAIA,GAAe9pS,KAAK+jT,cAAc/pB,KAAM,CAK1C,IAJI8P,GAAe9pS,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAEm6R,OACxDh6R,KAAKo1U,eAAexqQ,aAAa,eAAgB5qE,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAAI,GAG1FkkS,GAAe9pS,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAEm6R,KAAM,CAC9D,IAAIm9C,EAAMn3U,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EACjD5F,KAAKs1U,QAAQ1qQ,aAAa,cAAe4wM,SAASvsQ,KAAKmiB,MAAe,IAAT+lT,EAAI,IAAWloU,KAAKmiB,MAAe,IAAT+lT,EAAI,IAAWloU,KAAKmiB,MAAe,IAAT+lT,EAAI,MAOvH,IAJIrtC,GAAe9pS,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAEm6R,OACxDh6R,KAAKs1U,QAAQ1qQ,aAAa,gBAAiB5qE,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAAI,KAGpFkkS,GAAe9pS,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAEm6R,MAAQh6R,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAEm6R,KAAM,CAC7G,IAAI6T,EAAW7tS,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAClDy5R,GAASr/R,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAAI,IAAMuzQ,UAC1D7rG,EAAIugI,EAAW5+R,KAAKoqR,IAAIgG,GACxBn6R,EAAI2oS,EAAW5+R,KAAKypR,IAAI2G,GAC5Br/R,KAAKq1U,SAASzqQ,aAAa,KAAM0iG,GACjCttK,KAAKq1U,SAASzqQ,aAAa,KAAM1lE,MAKvC,IAAIkyU,iBAAmB,GAEvB,SAASC,gBAAgBC,EAAYvzB,EAAe73B,GAClDlsR,KAAKggD,aAAc,EACnBhgD,KAAK+jT,cAAgBA,EACrB/jT,KAAKs3U,WAAaA,EAClBt3U,KAAKksR,KAAOA,EACZA,EAAK44B,aAAe5oC,SAAS,KAC7BgQ,EAAK44B,aAAah6O,YAAYohN,EAAKsxB,cACnCtxB,EAAK44B,aAAah6O,YAAYohN,EAAK64B,oBACnC74B,EAAKqxB,YAAcrxB,EAAK44B,aAsG1B,SAASyyB,sBAAsBr7T,EAAQ6nS,EAAe73B,EAAMjmP,GAE1D/pB,EAAO0uD,aAAa,IAAK,SACzB1uD,EAAO0uD,aAAa,IAAK,SACzB1uD,EAAO0uD,aAAa,QAAS,QAC7B1uD,EAAO0uD,aAAa,SAAU,QAC9B5qE,KAAK+jT,cAAgBA,EACrB,IAAIqxB,EAAiBl5D,SAAS,kBAC9Bk5D,EAAexqQ,aAAa,SAAU3kC,GACtC/pB,EAAO4uD,YAAYsqQ,GACnBp1U,KAAKo1U,eAAiBA,EAoDxB,OAjKAiC,gBAAgBn3U,UAAUs3U,WAAa,SAAUjkC,GAC/C,IAAIryS,EAAI,EACJ2/F,EAAMu2O,iBAAiB/1U,OAE3B,MAAOH,EAAI2/F,EAAK,CACd,GAAIu2O,iBAAiBl2U,KAAOqyS,EAC1B,OAAO6jC,iBAAiBl2U,GAG1BA,GAAK,EAGP,OAAO,MAGTm2U,gBAAgBn3U,UAAUu3U,gBAAkB,SAAUlkC,EAAMmkC,GAC1D,IAAI3sQ,EAAawoO,EAAKiK,aAAazyO,WAEnC,GAAKA,EAAL,CAIA,IAYI4sQ,EAZApjO,EAAWxpC,EAAWwpC,SACtBrzG,EAAI,EACJ2/F,EAAM0T,EAASlzG,OAEnB,MAAOH,EAAI2/F,EAAK,CACd,GAAI0T,EAASrzG,KAAOqyS,EAAKiK,aACvB,MAGFt8S,GAAK,EAKHA,GAAK2/F,EAAM,IACb82O,EAAYpjO,EAASrzG,EAAI,IAG3B,IAAI02U,EAAU17D,SAAS,OACvB07D,EAAQhtQ,aAAa,OAAQ,IAAM8sQ,GAE/BC,EACF5sQ,EAAWmjI,aAAa0pI,EAASD,GAEjC5sQ,EAAWD,YAAY8sQ,KAI3BP,gBAAgBn3U,UAAU23U,iBAAmB,SAAU3rD,EAAMqnB,GAC3D,IAAKvzS,KAAKw3U,WAAWjkC,GAAO,CAC1B,IAAImkC,EAAW18D,kBACXmqC,EAASjpC,SAAS,QACtBipC,EAAOv6O,aAAa,KAAM2oO,EAAKmK,SAC/ByH,EAAOv6O,aAAa,YAAa,SAEjCwsQ,iBAAiBpxU,KAAKutS,GAEtB,IAAIrsB,EAAOgF,EAAKjF,WAAWC,KAC3BA,EAAKp8M,YAAYq6O,GACjB,IAAIr2I,EAASotG,SAAS,UACtBptG,EAAOlkG,aAAa,KAAM8sQ,GAC1B13U,KAAKy3U,gBAAgBlkC,EAAMmkC,GAC3B5oK,EAAOhkG,YAAYyoO,EAAKiK,cACxBt2B,EAAKp8M,YAAYgkG,GACjB,IAAI8oK,EAAU17D,SAAS,OACvB07D,EAAQhtQ,aAAa,OAAQ,IAAM8sQ,GACnCvyB,EAAOr6O,YAAY8sQ,GACnBrkC,EAAKnjS,KAAKs1S,IAAK,EACfnS,EAAKpoB,OAGPe,EAAKg6B,SAAS3S,EAAKmK,UAGrB25B,gBAAgBn3U,UAAU6uE,WAAa,WACrC,IAAI2nN,EAAM12R,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAC7CwmS,EAAWpsS,KAAKksR,KAAK5N,KAAK8tB,SAC1BlrS,EAAI,EACJ2/F,EAAMurM,EAAS/qS,OAEnB,MAAOH,EAAI2/F,EACLurM,EAASlrS,IAAMkrS,EAASlrS,GAAGkP,KAAKsmR,MAAQA,GAC1C12R,KAAK63U,iBAAiB73U,KAAKksR,KAAMkgB,EAASlrS,IAG5CA,GAAK,EAGPlB,KAAKggD,aAAc,GAGrBq3R,gBAAgBn3U,UAAUkpR,YAAc,WACjCppR,KAAKggD,aACRhgD,KAAK+uE,cAiBTwoQ,sBAAsBr3U,UAAUkpR,YAAc,SAAU0gB,GACtD,GAAIA,GAAe9pS,KAAK+jT,cAAc/pB,KAAM,CAE1C,IAAI89C,EAAqB,GACrBC,EAAQ/3U,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAAIkyU,EAOnDE,EAAah4U,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EACpDqyU,EAAuB,GAAdD,EAAkB,EAAID,EAE/BG,EAAuB,GAAdF,EAAkB,EAAID,EAEnC/3U,KAAKo1U,eAAexqQ,aAAa,eAAgBqtQ,EAAS,IAAMC,GAKhE,IAAIC,EAAuD,GAA5Cn4U,KAAK+jT,cAAc3L,eAAe,GAAGv4S,EAAE+F,EAAS,OAAS,YAExE5F,KAAKo1U,eAAexqQ,aAAa,WAAYutQ,KAIjDnzD,iBAAiB,SAAUw1C,gBAC3Bx1C,iBAAiB,OAAQw2C,gBACzBx2C,iBAAiB,MAAOyyC,aAExBhxB,eAAeE,iBAAiB,KAAMG,cACtCL,eAAeE,iBAAiB,KAAMI,wBACtCN,eAAeE,iBAAiB,KAAM+D,kBACtCjE,eAAeE,iBAAiB,KAAMgE,sBAEtC/uB,qBAAqBgsD,aACrB+L,eACA5kQ,aAEAo1O,eAAe,GAAI+vB,eAAe,GAClC/vB,eAAe,GAAImwB,eAAe,GAClCnwB,eAAe,GAAIowB,iBAAiB,GACpCpwB,eAAe,GAAIqwB,kBAAkB,GACrCrwB,eAAe,GAAI0wB,oBAAoB,GACvC1wB,eAAe,GAAIgxB,qBAAqB,GACxChxB,eAAe,GAAIkzB,iBAAiB,GACpClzB,eAAe,GAAIozB,uBAAuB,GAEnC/xC,W,uBCltkBT,SAAS4yC,IACPp4U,KAAKq4U,OAAS94U,OAAOY,OAAO,MAC5BH,KAAKs4U,YAAc/4U,OAAOY,OAAO,MAEjC,IAAK,IAAIe,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IACpClB,KAAK29J,OAAOv8J,UAAUF,IAGxBlB,KAAK29J,OAAS39J,KAAK29J,OAAOt6G,KAAKrjD,MAC/BA,KAAK29S,QAAU39S,KAAK29S,QAAQt6P,KAAKrjD,MACjCA,KAAKglF,aAAehlF,KAAKglF,aAAa3hC,KAAKrjD,MAsB7Co4U,EAAKl4U,UAAUy9J,OAAS,SAAS46K,EAASC,GACxC,IAAK,IAAItrT,KAAQqrT,EAAS,CACxB,IAAIp7P,EAAao7P,EAAQrrT,GAAMnR,KAAI,SAAS/a,GAC1C,OAAOA,EAAEwzB,iBAEXtH,EAAOA,EAAKsH,cAEZ,IAAK,IAAItzB,EAAI,EAAGA,EAAIi8E,EAAW97E,OAAQH,IAAK,CAC1C,MAAMohE,EAAM6a,EAAWj8E,GAIvB,GAAe,MAAXohE,EAAI,GAAR,CAIA,IAAKk2Q,GAAUl2Q,KAAOtiE,KAAKq4U,OACzB,MAAM,IAAIz3U,MACR,kCAAoC0hE,EACpC,qBAAuBtiE,KAAKq4U,OAAO/1Q,GAAO,SAAWp1C,EACrD,yDAA2Do1C,EAC3D,sCAAwCp1C,EAAO,MAInDltB,KAAKq4U,OAAO/1Q,GAAOp1C,GAIrB,GAAIsrT,IAAUx4U,KAAKs4U,YAAYprT,GAAO,CACpC,MAAMo1C,EAAM6a,EAAW,GACvBn9E,KAAKs4U,YAAYprT,GAAoB,MAAXo1C,EAAI,GAAcA,EAAMA,EAAI0e,OAAO,MAQnEo3P,EAAKl4U,UAAUy9S,QAAU,SAASvwN,GAChCA,EAAOz8E,OAAOy8E,GACd,IAAIowE,EAAOpwE,EAAKl8E,QAAQ,WAAY,IAAIsjB,cACpC8tC,EAAMk7F,EAAKtsJ,QAAQ,QAAS,IAAIsjB,cAEhCqvO,EAAUrmG,EAAKn8J,OAAS+rF,EAAK/rF,OAC7Bo3U,EAASn2Q,EAAIjhE,OAASm8J,EAAKn8J,OAAS,EAExC,OAAQo3U,IAAW50E,IAAY7jQ,KAAKq4U,OAAO/1Q,IAAQ,MAMrD81Q,EAAKl4U,UAAU8kF,aAAe,SAAS93D,GAErC,OADAA,EAAO,gBAAgB5d,KAAK4d,IAAS3Q,OAAOm8T,GACrCxrT,GAAQltB,KAAKs4U,YAAYprT,EAAKsH,gBAAkB,MAGzD+1H,EAAOD,QAAU8tL,G,6BC9FjB,IAAIA,EAAO,EAAQ,OACnB7tL,EAAOD,QAAU,IAAI8tL,EAAK,EAAQ,OAAqB,EAAQ,S,UCH/D7tL,EAAOD,QAAU,CAAC,sBAAsB,CAAC,OAAO,+CAA+C,CAAC,OAAO,oCAAoC,CAAC,OAAO,oCAAoC,CAAC,OAAO,kCAAkC,CAAC,OAAO,6BAA6B,CAAC,QAAQ,mCAAmC,CAAC,OAAO,oCAAoC,CAAC,OAAO,oCAAoC,CAAC,OAAO,2BAA2B,CAAC,OAAO,0BAA0B,CAAC,MAAM,SAAS,8DAA8D,CAAC,OAAO,0CAA0C,CAAC,QAAQ,4BAA4B,CAAC,MAAM,QAAQ,gCAAgC,CAAC,OAAO,6BAA6B,CAAC,QAAQ,8BAA8B,CAAC,SAAS,wCAAwC,CAAC,OAAO,wCAAwC,CAAC,OAAO,+BAA+B,CAAC,OAAO,uCAAuC,CAAC,OAAO,4BAA4B,CAAC,OAAO,0CAA0C,CAAC,OAAO,yDAAyD,CAAC,OAAO,sDAAsD,CAAC,OAAO,uCAAuC,CAAC,OAAO,sCAAsC,CAAC,QAAQ,gCAAgC,CAAC,OAAO,gCAAgC,CAAC,QAAQ,gCAAgC,CAAC,WAAW,8BAA8B,CAAC,SAAS,+BAA+B,CAAC,UAAU,qCAAqC,CAAC,OAAO,wCAAwC,CAAC,QAAQ,6BAA6B,CAAC,OAAO,oCAAoC,CAAC,QAAQ,oCAAoC,CAAC,OAAO,sBAAsB,CAAC,OAAO,kCAAkC,CAAC,OAAO,+BAA+B,CAAC,SAAS,uCAAuC,CAAC,OAAO,6BAA6B,CAAC,OAAO,2CAA2C,CAAC,OAAO,2BAA2B,CAAC,OAAO,8BAA8B,CAAC,OAAO,gCAAgC,CAAC,MAAM,MAAM,MAAM,MAAM,OAAO,+CAA+C,CAAC,UAAU,mDAAmD,CAAC,UAAU,8BAA8B,CAAC,OAAO,+BAA+B,CAAC,WAAW,8BAA8B,CAAC,OAAO,gCAAgC,CAAC,QAAQ,yCAAyC,CAAC,QAAQ,wCAAwC,CAAC,QAAQ,yCAAyC,CAAC,QAAQ,yCAAyC,CAAC,QAAQ,wCAAwC,CAAC,OAAO,4BAA4B,CAAC,OAAO,2BAA2B,CAAC,OAAO,2BAA2B,CAAC,OAAO,6BAA6B,CAAC,SAAS,uBAAuB,CAAC,QAAQ,kCAAkC,CAAC,OAAO,sBAAsB,CAAC,OAAO,4BAA4B,CAAC,MAAM,OAAO,MAAM,QAAQ,gCAAgC,CAAC,MAAM,QAAQ,mCAAmC,CAAC,MAAM,QAAQ,2BAA2B,CAAC,MAAM,QAAQ,yCAAyC,CAAC,aAAa,sBAAsB,CAAC,OAAO,4BAA4B,CAAC,OAAO,0BAA0B,CAAC,OAAO,+BAA+B,CAAC,QAAQ,8BAA8B,CAAC,QAAQ,0BAA0B,CAAC,OAAO,8BAA8B,CAAC,OAAO,0BAA0B,CAAC,OAAO,+BAA+B,CAAC,OAAO,0BAA0B,CAAC,OAAO,4BAA4B,CAAC,OAAO,4BAA4B,CAAC,OAAO,mCAAmC,CAAC,OAAO,6BAA6B,CAAC,OAAO,4BAA4B,CAAC,OAAO,+BAA+B,CAAC,MAAM,OAAO,8BAA8B,CAAC,OAAO,gCAAgC,CAAC,OAAO,sBAAsB,CAAC,OAAO,6BAA6B,CAAC,SAAS,4BAA4B,CAAC,OAAO,YAAY,6BAA6B,CAAC,OAAO,gCAAgC,CAAC,OAAO,6BAA6B,CAAC,KAAK,QAAQ,QAAQ,QAAQ,8BAA8B,CAAC,OAAO,8BAA8B,CAAC,OAAO,gCAAgC,CAAC,OAAO,gCAAgC,CAAC,OAAO,iCAAiC,CAAC,OAAO,iCAAiC,CAAC,OAAO,kCAAkC,CAAC,OAAO,mCAAmC,CAAC,OAAO,gCAAgC,CAAC,OAAO,sCAAsC,CAAC,OAAO,6CAA6C,CAAC,OAAO,6BAA6B,CAAC,OAAO,mCAAmC,CAAC,OAAO,gCAAgC,CAAC,OAAO,gCAAgC,CAAC,OAAO,oCAAoC,CAAC,MAAM,OAAO,0BAA0B,CAAC,OAAO,0BAA0B,CAAC,OAAO,2BAA2B,CAAC,OAAO,sBAAsB,CAAC,OAAO,uCAAuC,CAAC,QAAQ,2CAA2C,CAAC,WAAW,0CAA0C,CAAC,UAAU,uCAAuC,CAAC,OAAO,mCAAmC,CAAC,OAAO,yBAAyB,CAAC,MAAM,OAAO,iCAAiC,CAAC,OAAO,8BAA8B,CAAC,OAAO,0CAA0C,CAAC,OAAO,kCAAkC,CAAC,OAAO,sCAAsC,CAAC,OAAO,uCAAuC,CAAC,OAAO,+BAA+B,CAAC,OAAO,0BAA0B,CAAC,OAAO,6CAA6C,CAAC,OAAO,uBAAuB,CAAC,QAAQ,oCAAoC,CAAC,OAAO,0BAA0B,CAAC,QAAQ,0BAA0B,CAAC,QAAQ,yBAAyB,CAAC,OAAO,0BAA0B,CAAC,OAAO,yBAAyB,CAAC,OAAO,2BAA2B,CAAC,SAAS,uCAAuC,CAAC,aAAa,8BAA8B,CAAC,OAAO,6BAA6B,CAAC,MAAM,UAAU,YAAY,wCAAwC,CAAC,OAAO,uCAAuC,CAAC,MAAM,6BAA6B,CAAC,MAAM,OAAO,2BAA2B,CAAC,OAAO,kCAAkC,CAAC,OAAO,kCAAkC,CAAC,OAAO,6BAA6B,CAAC,OAAO,mCAAmC,CAAC,MAAM,OAAO,2BAA2B,CAAC,OAAO,2BAA2B,CAAC,OAAO,2BAA2B,CAAC,OAAO,wCAAwC,CAAC,aAAa,0CAA0C,CAAC,OAAO,yBAAyB,CAAC,OAAO,2BAA2B,CAAC,OAAO,sBAAsB,CAAC,OAAO,wCAAwC,CAAC,OAAO,uBAAuB,CAAC,QAAQ,qCAAqC,CAAC,QAAQ,0BAA0B,CAAC,MAAM,OAAO,6BAA6B,CAAC,UAAU,6BAA6B,CAAC,QAAQ,+BAA+B,CAAC,OAAO,4BAA4B,CAAC,OAAO,8BAA8B,CAAC,OAAO,iCAAiC,CAAC,MAAM,OAAO,8BAA8B,CAAC,OAAO,4BAA4B,CAAC,MAAM,OAAO,6BAA6B,CAAC,QAAQ,+BAA+B,CAAC,OAAO,wBAAwB,CAAC,MAAM,OAAO,uBAAuB,CAAC,MAAM,MAAM,MAAM,OAAO,mCAAmC,CAAC,OAAO,8BAA8B,CAAC,UAAU,qDAAqD,CAAC,OAAO,0DAA0D,CAAC,OAAO,8BAA8B,CAAC,OAAO,iCAAiC,CAAC,OAAO,kCAAkC,CAAC,OAAO,8BAA8B,CAAC,OAAO,kCAAkC,CAAC,OAAO,kCAAkC,CAAC,OAAO,gCAAgC,CAAC,OAAO,mCAAmC,CAAC,WAAW,qCAAqC,CAAC,OAAO,sBAAsB,CAAC,OAAO,8BAA8B,CAAC,OAAO,qCAAqC,CAAC,SAAS,uBAAuB,CAAC,OAAO,uBAAuB,CAAC,OAAO,iCAAiC,CAAC,OAAO,iCAAiC,CAAC,OAAO,sBAAsB,CAAC,OAAO,6BAA6B,CAAC,OAAO,6BAA6B,CAAC,OAAO,6BAA6B,CAAC,OAAO,6BAA6B,CAAC,OAAO,6BAA6B,CAAC,OAAO,6BAA6B,CAAC,OAAO,6BAA6B,CAAC,OAAO,qCAAqC,CAAC,OAAO,qCAAqC,CAAC,OAAO,kCAAkC,CAAC,OAAO,8BAA8B,CAAC,OAAO,oCAAoC,CAAC,OAAO,2BAA2B,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,iDAAiD,CAAC,QAAQ,wDAAwD,CAAC,QAAQ,iDAAiD,CAAC,QAAQ,oDAAoD,CAAC,QAAQ,gCAAgC,CAAC,OAAO,8BAA8B,CAAC,OAAO,yBAAyB,CAAC,OAAO,yBAAyB,CAAC,OAAO,iCAAiC,CAAC,QAAQ,6BAA6B,CAAC,OAAO,gCAAgC,CAAC,OAAO,6BAA6B,CAAC,QAAQ,gCAAgC,CAAC,MAAM,MAAM,OAAO,sDAAsD,CAAC,QAAQ,6DAA6D,CAAC,QAAQ,sDAAsD,CAAC,QAAQ,0DAA0D,CAAC,QAAQ,yDAAyD,CAAC,QAAQ,6BAA6B,CAAC,MAAM,OAAO,mDAAmD,CAAC,QAAQ,mDAAmD,CAAC,QAAQ,2BAA2B,CAAC,MAAM,MAAM,MAAM,OAAO,yBAAyB,CAAC,OAAO,iCAAiC,CAAC,OAAO,uBAAuB,CAAC,QAAQ,2BAA2B,CAAC,OAAO,8BAA8B,CAAC,QAAQ,wBAAwB,CAAC,UAAU,oCAAoC,CAAC,OAAO,uBAAuB,CAAC,MAAM,QAAQ,qCAAqC,CAAC,OAAO,kCAAkC,CAAC,OAAO,+BAA+B,CAAC,OAAO,sCAAsC,CAAC,OAAO,oCAAoC,CAAC,SAAS,+CAA+C,CAAC,UAAU,qCAAqC,CAAC,QAAQ,sCAAsC,CAAC,QAAQ,+BAA+B,CAAC,OAAO,+BAA+B,CAAC,OAAO,+BAA+B,CAAC,OAAO,2CAA2C,CAAC,OAAO,oDAAoD,CAAC,OAAO,8CAA8C,CAAC,OAAO,6CAA6C,CAAC,OAAO,sDAAsD,CAAC,QAAQ,8CAA8C,CAAC,OAAO,uDAAuD,CAAC,OAAO,2CAA2C,CAAC,OAAO,oDAAoD,CAAC,OAAO,kDAAkD,CAAC,OAAO,2DAA2D,CAAC,OAAO,iDAAiD,CAAC,OAAO,0DAA0D,CAAC,OAAO,0CAA0C,CAAC,OAAO,iDAAiD,CAAC,OAAO,mDAAmD,CAAC,OAAO,8CAA8C,CAAC,OAAO,6BAA6B,CAAC,MAAM,8BAA8B,CAAC,OAAO,oCAAoC,CAAC,QAAQ,0CAA0C,CAAC,OAAO,yCAAyC,CAAC,OAAO,4EAA4E,CAAC,QAAQ,qEAAqE,CAAC,QAAQ,yEAAyE,CAAC,QAAQ,wEAAwE,CAAC,QAAQ,oEAAoE,CAAC,QAAQ,uEAAuE,CAAC,QAAQ,0EAA0E,CAAC,QAAQ,0EAA0E,CAAC,QAAQ,yCAAyC,CAAC,OAAO,0BAA0B,CAAC,MAAM,iCAAiC,CAAC,OAAO,uBAAuB,CAAC,MAAM,MAAM,QAAQ,4BAA4B,CAAC,OAAO,4BAA4B,CAAC,OAAO,4BAA4B,CAAC,OAAO,yBAAyB,CAAC,QAAQ,6BAA6B,CAAC,MAAM,8BAA8B,CAAC,OAAO,gCAAgC,CAAC,OAAO,qCAAqC,CAAC,OAAO,mCAAmC,CAAC,OAAO,wCAAwC,CAAC,OAAO,4BAA4B,CAAC,QAAQ,oCAAoC,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,sBAAsB,CAAC,OAAO,8BAA8B,CAAC,OAAO,qCAAqC,CAAC,OAAO,yCAAyC,CAAC,YAAY,iCAAiC,CAAC,cAAc,0BAA0B,CAAC,OAAO,+BAA+B,CAAC,MAAM,mCAAmC,CAAC,QAAQ,qCAAqC,CAAC,UAAU,uCAAuC,CAAC,MAAM,0BAA0B,CAAC,OAAO,uBAAuB,CAAC,QAAQ,uBAAuB,CAAC,QAAQ,uBAAuB,CAAC,QAAQ,0CAA0C,CAAC,OAAO,8CAA8C,CAAC,OAAO,6CAA6C,CAAC,OAAO,yCAAyC,CAAC,OAAO,qCAAqC,CAAC,MAAM,QAAQ,uBAAuB,CAAC,OAAO,gCAAgC,CAAC,WAAW,8CAA8C,CAAC,MAAM,kCAAkC,CAAC,OAAO,QAAQ,+BAA+B,CAAC,OAAO,+BAA+B,CAAC,OAAO,oCAAoC,CAAC,OAAO,oCAAoC,CAAC,OAAO,uCAAuC,CAAC,OAAO,oCAAoC,CAAC,OAAO,sCAAsC,CAAC,MAAM,OAAO,6CAA6C,CAAC,OAAO,oCAAoC,CAAC,SAAS,sCAAsC,CAAC,MAAM,+BAA+B,CAAC,QAAQ,+BAA+B,CAAC,OAAO,wCAAwC,CAAC,OAAO,+BAA+B,CAAC,OAAO,wCAAwC,CAAC,OAAO,kCAAkC,CAAC,OAAO,2CAA2C,CAAC,OAAO,+BAA+B,CAAC,OAAO,iCAAiC,CAAC,OAAO,wCAAwC,CAAC,OAAO,0CAA0C,CAAC,OAAO,+BAA+B,CAAC,MAAM,QAAQ,sBAAsB,CAAC,OAAO,kCAAkC,CAAC,MAAM,QAAQ,6BAA6B,CAAC,OAAO,kCAAkC,CAAC,OAAO,gCAAgC,CAAC,OAAO,mCAAmC,CAAC,OAAO,4CAA4C,CAAC,OAAO,+BAA+B,CAAC,OAAO,MAAM,OAAO,iCAAiC,CAAC,OAAO,2BAA2B,CAAC,OAAO,+BAA+B,CAAC,OAAO,0BAA0B,CAAC,OAAO,uBAAuB,CAAC,MAAM,QAAQ,4BAA4B,CAAC,OAAO,yBAAyB,CAAC,OAAO,wBAAwB,CAAC,YAAY,2BAA2B,CAAC,QAAQ,sBAAsB,CAAC,OAAO,wBAAwB,CAAC,MAAM,MAAM,MAAM,OAAO,4BAA4B,CAAC,OAAO,sBAAsB,CAAC,OAAO,4BAA4B,CAAC,SAAS,2BAA2B,CAAC,QAAQ,iCAAiC,CAAC,SAAS,2BAA2B,CAAC,OAAO,iCAAiC,CAAC,OAAO,8BAA8B,CAAC,OAAO,sBAAsB,CAAC,OAAO,yBAAyB,CAAC,OAAO,uBAAuB,CAAC,OAAO,uBAAuB,CAAC,QAAQ,gCAAgC,CAAC,OAAO,mCAAmC,CAAC,OAAO,kCAAkC,CAAC,OAAO,yCAAyC,CAAC,OAAO,oDAAoD,CAAC,UAAU,oCAAoC,CAAC,OAAO,qCAAqC,CAAC,OAAO,0CAA0C,CAAC,OAAO,sBAAsB,CAAC,MAAM,QAAQ,iCAAiC,CAAC,OAAO,8BAA8B,CAAC,MAAM,wBAAwB,CAAC,OAAO,+BAA+B,CAAC,OAAO,gCAAgC,CAAC,QAAQ,oBAAoB,CAAC,OAAO,+BAA+B,CAAC,MAAM,MAAM,MAAM,OAAO,+BAA+B,CAAC,OAAO,+BAA+B,CAAC,OAAO,sBAAsB,CAAC,SAAS,qBAAqB,CAAC,SAAS,2BAA2B,CAAC,WAAW,sBAAsB,CAAC,MAAM,SAAS,qBAAqB,CAAC,MAAM,sBAAsB,CAAC,MAAM,OAAO,oBAAoB,CAAC,MAAM,MAAM,MAAM,MAAM,OAAO,uBAAuB,CAAC,OAAO,+BAA+B,CAAC,OAAO,qBAAqB,CAAC,QAAQ,0BAA0B,CAAC,OAAO,iCAAiC,CAAC,OAAO,sBAAsB,CAAC,OAAO,2BAA2B,CAAC,OAAO,qBAAqB,CAAC,QAAQ,oBAAoB,CAAC,OAAO,+BAA+B,CAAC,OAAO,QAAQ,+BAA+B,CAAC,OAAO,yBAAyB,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,qBAAqB,CAAC,OAAO,2BAA2B,CAAC,OAAO,2BAA2B,CAAC,OAAO,gCAAgC,CAAC,OAAO,oBAAoB,CAAC,OAAO,sBAAsB,CAAC,OAAO,oBAAoB,CAAC,OAAO,yBAAyB,CAAC,OAAO,iCAAiC,CAAC,OAAO,+BAA+B,CAAC,OAAO,yBAAyB,CAAC,OAAO,yBAAyB,CAAC,OAAO,2BAA2B,CAAC,MAAM,MAAM,MAAM,OAAO,wBAAwB,CAAC,OAAO,6BAA6B,CAAC,OAAO,+BAA+B,CAAC,OAAO,sBAAsB,CAAC,OAAO,yBAAyB,CAAC,YAAY,2BAA2B,CAAC,UAAU,qBAAqB,CAAC,QAAQ,oBAAoB,CAAC,OAAO,0BAA0B,CAAC,OAAO,qCAAqC,CAAC,WAAW,8BAA8B,CAAC,QAAQ,qCAAqC,CAAC,QAAQ,yCAAyC,CAAC,YAAY,qCAAqC,CAAC,UAAU,kCAAkC,CAAC,WAAW,+BAA+B,CAAC,QAAQ,yBAAyB,CAAC,QAAQ,sBAAsB,CAAC,SAAS,6BAA6B,CAAC,QAAQ,+BAA+B,CAAC,MAAM,OAAO,yBAAyB,CAAC,OAAO,oBAAoB,CAAC,OAAO,iCAAiC,CAAC,MAAM,QAAQ,+BAA+B,CAAC,eAAe,4BAA4B,CAAC,OAAO,uBAAuB,CAAC,OAAO,uBAAuB,CAAC,OAAO,wBAAwB,CAAC,QAAQ,yBAAyB,CAAC,OAAO,yBAAyB,CAAC,OAAO,2BAA2B,CAAC,OAAO,uBAAuB,CAAC,OAAO,8BAA8B,CAAC,QAAQ,2BAA2B,CAAC,OAAO,OAAO,MAAM,MAAM,QAAQ,4BAA4B,CAAC,MAAM,MAAM,OAAO,2BAA2B,CAAC,OAAO,OAAO,OAAO,OAAO,wBAAwB,CAAC,OAAO,4BAA4B,CAAC,OAAO,2BAA2B,CAAC,OAAO,2BAA2B,CAAC,OAAO,wBAAwB,CAAC,OAAO,uBAAuB,CAAC,KAAK,OAAO,oCAAoC,CAAC,OAAO,oBAAoB,CAAC,OAAO,qBAAqB,CAAC,KAAK,MAAM,sBAAsB,CAAC,OAAO,QAAQ,uBAAuB,CAAC,MAAM,OAAO,mCAAmC,CAAC,MAAM,OAAO,kCAAkC,CAAC,OAAO,+BAA+B,CAAC,QAAQ,uCAAuC,CAAC,OAAO,sCAAsC,CAAC,OAAO,oBAAoB,CAAC,OAAO,mBAAmB,CAAC,MAAM,qBAAqB,CAAC,QAAQ,gCAAgC,CAAC,OAAO,gCAAgC,CAAC,OAAO,oBAAoB,CAAC,OAAO,wBAAwB,CAAC,OAAO,yBAAyB,CAAC,QAAQ,uBAAuB,CAAC,OAAO,wBAAwB,CAAC,WAAW,uBAAuB,CAAC,UAAU,2BAA2B,CAAC,MAAM,qBAAqB,CAAC,OAAO,oBAAoB,CAAC,OAAO,oBAAoB,CAAC,MAAM,MAAM,oBAAoB,CAAC,OAAO,wBAAwB,CAAC,OAAO,wBAAwB,CAAC,UAAU,QAAQ,qBAAqB,CAAC,QAAQ,sBAAsB,CAAC,SAAS,+BAA+B,CAAC,OAAO,+BAA+B,CAAC,OAAO,+BAA+B,CAAC,OAAO,gCAAgC,CAAC,QAAQ,wCAAwC,CAAC,gBAAgB,+BAA+B,CAAC,OAAO,+BAA+B,CAAC,OAAO,gCAAgC,CAAC,QAAQ,4BAA4B,CAAC,OAAO,sCAAsC,CAAC,UAAU,6BAA6B,CAAC,MAAM,MAAM,OAAO,qBAAqB,CAAC,OAAO,0BAA0B,CAAC,QAAQ,0BAA0B,CAAC,OAAO,mBAAmB,CAAC,MAAM,yBAAyB,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,uBAAuB,CAAC,MAAM,QAAQ,0BAA0B,CAAC,OAAO,gBAAgB,CAAC,OAAO,gBAAgB,CAAC,OAAO,mBAAmB,CAAC,SAAS,yBAAyB,CAAC,OAAO,mCAAmC,CAAC,OAAO,4BAA4B,CAAC,aAAa,4BAA4B,CAAC,aAAa,4BAA4B,CAAC,aAAa,gBAAgB,CAAC,OAAO,cAAc,CAAC,OAAO,eAAe,CAAC,MAAM,OAAO,QAAQ,cAAc,CAAC,OAAO,eAAe,CAAC,QAAQ,cAAc,CAAC,QAAQ,mBAAmB,CAAC,OAAO,kBAAkB,CAAC,OAAO,iBAAiB,CAAC,OAAO,iBAAiB,CAAC,OAAO,uBAAuB,CAAC,MAAM,MAAM,8BAA8B,CAAC,OAAO,oBAAoB,CAAC,OAAO,cAAc,CAAC,QAAQ,iBAAiB,CAAC,OAAO,iBAAiB,CAAC,OAAO,kBAAkB,CAAC,QAAQ,iBAAiB,CAAC,OAAO,kBAAkB,CAAC,QAAQ,iBAAiB,CAAC,OAAO,iBAAiB,CAAC,QAAQ,gBAAgB,CAAC,OAAO,4BAA4B,CAAC,OAAO,mCAAmC,CAAC,OAAO,yBAAyB,CAAC,MAAM,OAAO,MAAM,QAAQ,iBAAiB,CAAC,OAAO,OAAO,yBAAyB,CAAC,QAAQ,gBAAgB,CAAC,OAAO,gBAAgB,CAAC,OAAO,yBAAyB,CAAC,OAAO,gBAAgB,CAAC,OAAO,gBAAgB,CAAC,OAAO,iCAAiC,CAAC,OAAO,iCAAiC,CAAC,OAAO,2BAA2B,CAAC,OAAO,mBAAmB,CAAC,OAAO,oBAAoB,CAAC,OAAO,qBAAqB,CAAC,OAAO,oBAAoB,CAAC,OAAO,oBAAoB,CAAC,OAAO,wBAAwB,CAAC,OAAO,iCAAiC,CAAC,OAAO,qBAAqB,CAAC,QAAQ,iBAAiB,CAAC,OAAO,uBAAuB,CAAC,OAAO,cAAc,CAAC,OAAO,qBAAqB,CAAC,OAAO,cAAc,CAAC,OAAO,mBAAmB,CAAC,KAAK,MAAM,MAAM,MAAM,OAAO,eAAe,CAAC,QAAQ,cAAc,CAAC,OAAO,sBAAsB,CAAC,OAAO,iBAAiB,CAAC,QAAQ,cAAc,CAAC,QAAQ,eAAe,CAAC,MAAM,OAAO,0BAA0B,CAAC,OAAO,0BAA0B,CAAC,OAAO,2BAA2B,CAAC,OAAO,0BAA0B,CAAC,OAAO,cAAc,CAAC,OAAO,cAAc,CAAC,OAAO,kBAAkB,CAAC,OAAO,kBAAkB,CAAC,OAAO,sBAAsB,CAAC,OAAO,sBAAsB,CAAC,OAAO,wBAAwB,CAAC,OAAO,gBAAgB,CAAC,OAAO,gBAAgB,CAAC,OAAO,gBAAgB,CAAC,OAAO,gBAAgB,CAAC,OAAO,oBAAoB,CAAC,QAAQ,sCAAsC,CAAC,OAAO,oCAAoC,CAAC,OAAO,oBAAoB,CAAC,OAAO,qBAAqB,CAAC,QAAQ,sCAAsC,CAAC,OAAO,gBAAgB,CAAC,OAAO,qBAAqB,CAAC,OAAO,gBAAgB,CAAC,QAAQ,sBAAsB,CAAC,SAAS,sBAAsB,CAAC,SAAS,sBAAsB,CAAC,SAAS,wBAAwB,CAAC,OAAO,eAAe,CAAC,OAAO,wBAAwB,CAAC,OAAO,oBAAoB,CAAC,MAAM,qBAAqB,CAAC,QAAQ,qBAAqB,CAAC,QAAQ,mCAAmC,CAAC,OAAO,mBAAmB,CAAC,OAAO,yBAAyB,CAAC,QAAQ,aAAa,CAAC,IAAI,OAAO,WAAW,CAAC,IAAI,KAAK,MAAM,MAAM,IAAI,KAAK,OAAO,mBAAmB,CAAC,OAAO,iBAAiB,CAAC,IAAI,MAAM,MAAM,OAAO,6BAA6B,CAAC,OAAO,qBAAqB,CAAC,QAAQ,aAAa,CAAC,OAAO,kBAAkB,CAAC,OAAO,aAAa,CAAC,OAAO,cAAc,CAAC,QAAQ,aAAa,CAAC,QAAQ,gBAAgB,CAAC,IAAI,OAAO,oBAAoB,CAAC,OAAO,cAAc,CAAC,QAAQ,cAAc,CAAC,QAAQ,gBAAgB,CAAC,OAAO,aAAa,CAAC,OAAO,kBAAkB,CAAC,OAAO,kBAAkB,CAAC,MAAM,mBAAmB,CAAC,OAAO,eAAe,CAAC,OAAO,oBAAoB,CAAC,MAAM,QAAQ,wBAAwB,CAAC,MAAM,QAAQ,oBAAoB,CAAC,MAAM,QAAQ,oBAAoB,CAAC,MAAM,QAAQ,uBAAuB,CAAC,MAAM,QAAQ,qBAAqB,CAAC,OAAO,gBAAgB,CAAC,OAAO,oBAAoB,CAAC,MAAM,OAAO,mCAAmC,CAAC,OAAO,qBAAqB,CAAC,MAAM,QAAQ,iBAAiB,CAAC,OAAO,cAAc,CAAC,OAAO,cAAc,CAAC,OAAO,cAAc,CAAC,OAAO,cAAc,CAAC,OAAO,mBAAmB,CAAC,MAAM,OAAO,OAAO,cAAc,CAAC,OAAO,iBAAiB,CAAC,MAAM,OAAO,iBAAiB,CAAC,OAAO,gBAAgB,CAAC,MAAM,iBAAiB,CAAC,OAAO,iBAAiB,CAAC,OAAO,iBAAiB,CAAC,OAAO,kBAAkB,CAAC,OAAO,oBAAoB,CAAC,SAAS,cAAc,CAAC,OAAO,0BAA0B,CAAC,S,UCA9xyBC,EAAOD,QAAU,CAAC,2BAA2B,CAAC,MAAM,yBAAyB,CAAC,MAAM,uBAAuB,CAAC,QAAQ,0BAA0B,CAAC,WAAW,8BAA8B,CAAC,eAAe,0BAA0B,CAAC,WAAW,2BAA2B,CAAC,OAAO,4BAA4B,CAAC,QAAQ,4BAA4B,CAAC,QAAQ,mBAAmB,CAAC,QAAQ,2BAA2B,CAAC,OAAO,wBAAwB,CAAC,SAAS,uBAAuB,CAAC,QAAQ,8BAA8B,CAAC,SAAS,6BAA6B,CAAC,SAAS,0BAA0B,CAAC,SAAS,0BAA0B,CAAC,SAAS,yBAAyB,CAAC,SAAS,uBAAuB,CAAC,MAAM,uBAAuB,CAAC,OAAO,2BAA2B,CAAC,YAAY,0BAA0B,CAAC,OAAO,uBAAuB,CAAC,QAAQ,uBAAuB,CAAC,SAAS,yBAAyB,CAAC,KAAK,QAAQ,uBAAuB,CAAC,QAAQ,4BAA4B,CAAC,aAAa,uBAAuB,CAAC,QAAQ,kBAAkB,CAAC,OAAO,sBAAsB,CAAC,OAAO,sBAAsB,CAAC,OAAO,yBAAyB,CAAC,OAAO,uBAAuB,CAAC,WAAW,sBAAsB,CAAC,OAAO,sBAAsB,CAAC,OAAO,kBAAkB,CAAC,OAAO,mBAAmB,CAAC,MAAM,oBAAoB,CAAC,SAAS,0BAA0B,CAAC,OAAO,wBAAwB,CAAC,MAAM,SAAS,oBAAoB,CAAC,SAAS,sBAAsB,CAAC,OAAO,2BAA2B,CAAC,MAAM,MAAM,OAAO,qCAAqC,CAAC,OAAO,sBAAsB,CAAC,SAAS,yBAAyB,CAAC,KAAK,OAAO,mBAAmB,CAAC,OAAO,OAAO,oBAAoB,CAAC,SAAS,0BAA0B,CAAC,UAAU,sBAAsB,CAAC,UAAU,sBAAsB,CAAC,OAAO,uBAAuB,CAAC,WAAW,2BAA2B,CAAC,OAAO,6BAA6B,CAAC,OAAO,uBAAuB,CAAC,QAAQ,4BAA4B,CAAC,eAAe,mBAAmB,CAAC,OAAO,0BAA0B,CAAC,QAAQ,0BAA0B,CAAC,KAAK,KAAK,MAAM,yBAAyB,CAAC,UAAU,mBAAmB,CAAC,QAAQ,qCAAqC,CAAC,SAAS,2BAA2B,CAAC,YAAY,4BAA4B,CAAC,SAAS,uBAAuB,CAAC,QAAQ,0BAA0B,CAAC,QAAQ,0BAA0B,CAAC,QAAQ,uBAAuB,CAAC,QAAQ,mBAAmB,CAAC,MAAM,QAAQ,kBAAkB,CAAC,OAAO,OAAO,qBAAqB,CAAC,MAAM,OAAO,kBAAkB,CAAC,OAAO,sBAAsB,CAAC,MAAM,wBAAwB,CAAC,MAAM,mBAAmB,CAAC,OAAO,2BAA2B,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,OAAO,QAAQ,MAAM,MAAM,OAAO,MAAM,SAAS,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,UAAU,kBAAkB,CAAC,OAAO,gCAAgC,CAAC,OAAO,kBAAkB,CAAC,OAAO,wBAAwB,CAAC,SAAS,sBAAsB,CAAC,SAAS,UAAU,SAAS,UAAU,mBAAmB,CAAC,QAAQ,8BAA8B,CAAC,QAAQ,kCAAkC,CAAC,OAAO,kBAAkB,CAAC,OAAO,4BAA4B,CAAC,OAAO,4BAA4B,CAAC,MAAM,OAAO,yBAAyB,CAAC,OAAO,qBAAqB,CAAC,OAAO,yBAAyB,CAAC,MAAM,OAAO,8BAA8B,CAAC,OAAO,oBAAoB,CAAC,MAAM,6BAA6B,CAAC,MAAM,wBAAwB,CAAC,OAAO,uBAAuB,CAAC,OAAO,2BAA2B,CAAC,WAAW,sBAAsB,CAAC,OAAO,sBAAsB,CAAC,OAAO,yBAAyB,CAAC,KAAK,MAAM,MAAM,6BAA6B,CAAC,SAAS,uBAAuB,CAAC,WAAW,wBAAwB,CAAC,QAAQ,sBAAsB,CAAC,MAAM,OAAO,0BAA0B,CAAC,OAAO,sCAAsC,CAAC,OAAO,iCAAiC,CAAC,MAAM,sCAAsC,CAAC,OAAO,+BAA+B,CAAC,MAAM,4BAA4B,CAAC,QAAQ,+BAA+B,CAAC,OAAO,4BAA4B,CAAC,QAAQ,gCAAgC,CAAC,OAAO,4BAA4B,CAAC,OAAO,uBAAuB,CAAC,OAAO,sBAAsB,CAAC,OAAO,sBAAsB,CAAC,OAAO,kBAAkB,CAAC,OAAO,uBAAuB,CAAC,QAAQ,8BAA8B,CAAC,OAAO,+BAA+B,CAAC,OAAO,8BAA8B,CAAC,OAAO,+BAA+B,CAAC,OAAO,kBAAkB,CAAC,OAAO,wBAAwB,CAAC,UAAU,yBAAyB,CAAC,WAAW,qCAAqC,CAAC,UAAU,0CAA0C,CAAC,UAAU,sBAAsB,CAAC,OAAO,oBAAoB,CAAC,MAAM,SAAS,uBAAuB,CAAC,MAAM,QAAQ,2BAA2B,CAAC,MAAM,iCAAiC,CAAC,OAAO,mBAAmB,CAAC,QAAQ,uBAAuB,CAAC,SAAS,sBAAsB,CAAC,OAAO,uBAAuB,CAAC,QAAQ,uBAAuB,CAAC,QAAQ,uBAAuB,CAAC,WAAW,sBAAsB,CAAC,MAAM,aAAa,yBAAyB,CAAC,OAAO,+BAA+B,CAAC,OAAO,mBAAmB,CAAC,QAAQ,mBAAmB,CAAC,QAAQ,uBAAuB,CAAC,QAAQ,qBAAqB,CAAC,OAAO,+BAA+B,CAAC,UAAU,iCAAiC,CAAC,MAAM,2BAA2B,CAAC,QAAQ,mBAAmB,CAAC,QAAQ,qBAAqB,CAAC,OAAO,qBAAqB,CAAC,OAAO,uBAAuB,CAAC,QAAQ,2BAA2B,CAAC,YAAY,uBAAuB,CAAC,QAAQ,2BAA2B,CAAC,OAAO,4BAA4B,CAAC,OAAO,4BAA4B,CAAC,OAAO,0BAA0B,CAAC,OAAO,0BAA0B,CAAC,OAAO,uBAAuB,CAAC,QAAQ,wBAAwB,CAAC,QAAQ,OAAO,wBAAwB,CAAC,OAAO,kBAAkB,CAAC,MAAM,MAAM,MAAM,OAAO,sBAAsB,CAAC,OAAO,sBAAsB,CAAC,OAAO,wBAAwB,CAAC,OAAO,uBAAuB,CAAC,OAAO,QAAQ,uBAAuB,CAAC,QAAQ,qBAAqB,CAAC,OAAO,QAAQ,OAAO,OAAO,mBAAmB,CAAC,QAAQ,sBAAsB,CAAC,OAAO,kBAAkB,CAAC,OAAO,aAAa,CAAC,SAAS,cAAc,CAAC,OAAO,YAAY,CAAC,OAAO,cAAc,CAAC,KAAK,OAAO,aAAa,CAAC,MAAM,OAAO,MAAM,OAAO,mBAAmB,CAAC,QAAQ,YAAY,CAAC,QAAQ,YAAY,CAAC,MAAM,QAAQ,aAAa,CAAC,OAAO,MAAM,OAAO,MAAM,MAAM,OAAO,YAAY,CAAC,MAAM,MAAM,MAAM,QAAQ,YAAY,CAAC,OAAO,aAAa,CAAC,OAAO,YAAY,CAAC,OAAO,aAAa,CAAC,QAAQ,aAAa,CAAC,QAAQ,WAAW,CAAC,MAAM,kBAAkB,CAAC,OAAO,WAAW,CAAC,OAAO,WAAW,CAAC,OAAO,YAAY,CAAC,QAAQ,aAAa,CAAC,SAAS,aAAa,CAAC,OAAO,aAAa,CAAC,QAAQ,aAAa,CAAC,QAAQ,YAAY,CAAC,OAAO,YAAY,CAAC,OAAO,kBAAkB,CAAC,QAAQ,YAAY,CAAC,OAAO,aAAa,CAAC,QAAQ,cAAc,CAAC,MAAM,YAAY,CAAC,OAAO,aAAa,CAAC,QAAQ,sBAAsB,CAAC,SAAS,aAAa,CAAC,QAAQ,sBAAsB,CAAC,SAAS,cAAc,CAAC,QAAQ,aAAa,CAAC,QAAQ,YAAY,CAAC,OAAO,YAAY,CAAC,OAAO,YAAY,CAAC,MAAM,QAAQ,aAAa,CAAC,OAAO,MAAM,OAAO,YAAY,CAAC,OAAO,aAAa,CAAC,OAAO,YAAY,CAAC,OAAO,YAAY,CAAC,MAAM,OAAO,YAAY,CAAC,OAAO,aAAa,CAAC,QAAQ,aAAa,CAAC,QAAQ,YAAY,CAAC,OAAO,aAAa,CAAC,QAAQ,aAAa,CAAC,QAAQ,aAAa,CAAC,QAAQ,YAAY,CAAC,OAAO,aAAa,CAAC,QAAQ,YAAY,CAAC,OAAO,YAAY,CAAC,OAAO,gBAAgB,CAAC,MAAM,QAAQ,YAAY,CAAC,OAAO,aAAa,CAAC,MAAM,QAAQ,gBAAgB,CAAC,OAAO,aAAa,CAAC,QAAQ,YAAY,CAAC,OAAO,mCAAmC,CAAC,4BAA4B,iBAAiB,CAAC,SAAS,iCAAiC,CAAC,SAAS,0CAA0C,CAAC,SAAS,yBAAyB,CAAC,SAAS,iBAAiB,CAAC,MAAM,QAAQ,YAAY,CAAC,OAAO,kBAAkB,CAAC,QAAQ,oBAAoB,CAAC,OAAO,aAAa,CAAC,MAAM,QAAQ,aAAa,CAAC,MAAM,OAAO,QAAQ,YAAY,CAAC,OAAO,YAAY,CAAC,OAAO,iBAAiB,CAAC,QAAQ,iBAAiB,CAAC,QAAQ,qBAAqB,CAAC,SAAS,YAAY,CAAC,OAAO,aAAa,CAAC,MAAM,QAAQ,mBAAmB,CAAC,QAAQ,SAAS,wBAAwB,CAAC,QAAQ,iBAAiB,CAAC,QAAQ,SAAS,gBAAgB,CAAC,MAAM,QAAQ,iBAAiB,CAAC,QAAQ,sBAAsB,CAAC,WAAW,YAAY,gBAAgB,CAAC,MAAM,OAAO,oBAAoB,CAAC,SAAS,aAAa,WAAW,CAAC,OAAO,WAAW,CAAC,OAAO,YAAY,CAAC,OAAO,MAAM,SAAS,YAAY,CAAC,QAAQ,WAAW,CAAC,OAAO,YAAY,CAAC,QAAQ,gBAAgB,CAAC,WAAW,MAAM,cAAc,CAAC,OAAO,WAAW,CAAC,OAAO,UAAU,CAAC,MAAM,aAAa,CAAC,MAAM,OAAO,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,gBAAgB,CAAC,OAAO,WAAW,CAAC,QAAQ,YAAY,CAAC,OAAO,OAAO,YAAY,CAAC,QAAQ,YAAY,CAAC,OAAO,OAAO,YAAY,CAAC,QAAQ,cAAc,CAAC,SAAS,QAAQ,4BAA4B,CAAC,OAAO,aAAa,CAAC,IAAI,KAAK,OAAO,MAAM,KAAK,MAAM,cAAc,CAAC,OAAO,gBAAgB,CAAC,MAAM,OAAO,QAAQ,aAAa,CAAC,SAAS,WAAW,CAAC,OAAO,WAAW,CAAC,QAAQ,YAAY,CAAC,OAAO,OAAO,aAAa,CAAC,MAAM,QAAQ,cAAc,CAAC,OAAO,aAAa,CAAC,QAAQ,aAAa,CAAC,QAAQ,aAAa,CAAC,QAAQ,oBAAoB,CAAC,OAAO,aAAa,CAAC,QAAQ,YAAY,CAAC,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,aAAa,CAAC,MAAM,YAAY,CAAC,MAAM,OAAO,QAAQ,aAAa,CAAC,OAAO,MAAM,MAAM,MAAM,OAAO,YAAY,CAAC,OAAO,kBAAkB,CAAC,KAAK,OAAO,aAAa,CAAC,U,0ECAjzS;;mBAGC,SAAUm9C,EAAMzE,GAGb,IAAc,qEAHjB,CAUEhjM,GAAM,WACP,IAAI24U,EAAY,CAEhBA,QAAoB,SAEhBC,EAAWD,EAAU/vH,SAAW,CAClC81D,QAAS,IACTm6D,OAAQ,OACRC,cAAe,GACfvI,MAAO,IACPwI,SAAS,EACTC,YAAa,IACbC,aAAc,IACdC,aAAa,EACbC,YAAa,eACbC,gBAAiB,mBACjBv6R,OAAQ,OACRy5B,SAAU,uIA6QZ,SAASm3L,EAAMtuQ,EAAGokD,EAAKsa,GACrB,OAAI1+D,EAAIokD,EAAYA,EAChBpkD,EAAI0+D,EAAYA,EACb1+D,EAQT,SAASk4U,EAAUl4U,GACjB,OAAkB,MAAT,EAAIA,GASf,SAASm4U,EAAen4U,EAAGovU,EAAOjB,GAChC,IAAIiK,EAYJ,OATEA,EAD6B,gBAA3BX,EAASE,cACF,CAAEpwF,UAAW,eAAe2wF,EAAUl4U,GAAG,UACd,cAA3By3U,EAASE,cACT,CAAEpwF,UAAW,aAAa2wF,EAAUl4U,GAAG,QAEvC,CAAE,cAAek4U,EAAUl4U,GAAG,KAGzCo4U,EAAOC,WAAa,OAAOjJ,EAAM,MAAMjB,EAEhCiK,EArSTZ,EAAUc,UAAY,SAAS73U,GAC7B,IAAIga,EAAKtX,EACT,IAAKsX,KAAOha,EACV0C,EAAQ1C,EAAQga,QACFsqB,IAAV5hC,GAAuB1C,EAAQ9B,eAAe8b,KAAMg9T,EAASh9T,GAAOtX,GAG1E,OAAOtE,MAOT24U,EAAUr1U,OAAS,KASnBq1U,EAAUhwT,IAAM,SAASxnB,GACvB,IAAIu4U,EAAUf,EAAUgB,YAExBx4U,EAAIsuQ,EAAMtuQ,EAAGy3U,EAASl6D,QAAS,GAC/Bi6D,EAAUr1U,OAAgB,IAANnC,EAAU,KAAOA,EAErC,IAAIy4U,EAAWjB,EAAU3vL,QAAQ0wL,GAC7BG,EAAWD,EAASE,cAAclB,EAASO,aAC3C5I,EAAWqI,EAASrI,MACpBjB,EAAWsJ,EAASC,OAkCxB,OAhCAe,EAAS3qC,YAETl7M,GAAM,SAAStvF,GAEkB,KAA3Bm0U,EAASE,gBAAsBF,EAASE,cAAgBH,EAAUoB,qBAGtEC,EAAIH,EAAKP,EAAen4U,EAAGovU,EAAOjB,IAExB,IAANnuU,GAEF64U,EAAIJ,EAAU,CACZJ,WAAY,OACZjkC,QAAS,IAEXqkC,EAAS3qC,YAETvmQ,YAAW,WACTsxS,EAAIJ,EAAU,CACZJ,WAAY,OAASjJ,EAAQ,YAC7Bh7B,QAAS,IAEX7sQ,YAAW,WACTiwS,EAAUx0M,SACV1/H,MACC8rU,KACFA,IAEH7nS,WAAWjkC,EAAM8rU,MAIdvwU,MAGT24U,EAAUgB,UAAY,WACpB,MAAmC,kBAArBhB,EAAUr1U,QAU1Bq1U,EAAUxxP,MAAQ,WACXwxP,EAAUr1U,QAAQq1U,EAAUhwT,IAAI,GAErC,IAAIsxT,EAAO,WACTvxS,YAAW,WACJiwS,EAAUr1U,SACfq1U,EAAUI,UACVkB,OACCrB,EAASK,eAKd,OAFIL,EAASG,SAASkB,IAEfj6U,MAeT24U,EAAU9zU,KAAO,SAAS2zU,GACxB,OAAKA,GAAUG,EAAUr1U,OAElBq1U,EAAUuB,IAAI,GAAM,GAAMjrU,KAAKC,UAAUyZ,IAAI,GAFZ3oB,MAS1C24U,EAAUuB,IAAM,SAASlxC,GACvB,IAAI7nS,EAAIw3U,EAAUr1U,OAElB,OAAKnC,GAGmB,kBAAX6nS,IACTA,GAAU,EAAI7nS,GAAKsuQ,EAAMxgQ,KAAKC,SAAW/N,EAAG,GAAK,MAGnDA,EAAIsuQ,EAAMtuQ,EAAI6nS,EAAQ,EAAG,MAClB2vC,EAAUhwT,IAAIxnB,IAPdw3U,EAAUxxP,SAWrBwxP,EAAUI,QAAU,WAClB,OAAOJ,EAAUuB,IAAIjrU,KAAKC,SAAW0pU,EAASI,cAShD,WACE,IAAIjzE,EAAU,EAAG9zO,EAAU,EAE3B0mT,EAAU9hQ,QAAU,SAASsjQ,GAC3B,OAAKA,GAAiC,aAArBA,EAAS9tS,SAIV,IAAZpa,GACF0mT,EAAUxxP,QAGZ4+K,IACA9zO,IAEAkoT,EAASC,QAAO,WACdnoT,IACgB,IAAZA,GACA8zO,EAAU,EACV4yE,EAAU9zU,QAEV8zU,EAAUhwT,KAAKo9O,EAAU9zO,GAAW8zO,MAInC/lQ,MApBEA,MALb,GAmCA24U,EAAU3vL,OAAS,SAASqxL,GAC1B,GAAI1B,EAAU2B,aAAc,OAAO3kS,SAAS6sL,eAAe,aAE3D+3G,EAAS5kS,SAASupB,gBAAiB,kBAEnC,IAAI06Q,EAAWjkS,SAAS40B,cAAc,OACtCqvQ,EAAS3zS,GAAK,YACd2zS,EAAS3rI,UAAY2qI,EAAStgQ,SAE9B,IAGIkiQ,EAHAX,EAAWD,EAASE,cAAclB,EAASO,aAC3ChnD,EAAWkoD,EAAY,OAAShB,EAAUV,EAAUr1U,QAAU,GAC9Du7C,EAAWlJ,SAASmkS,cAAclB,EAAS/5R,QAkB/C,OAfAm7R,EAAIH,EAAK,CACPL,WAAY,eACZ9wF,UAAW,eAAiBypC,EAAO,WAGhCymD,EAASM,cACZsB,EAAUZ,EAASE,cAAclB,EAASQ,iBAC1CoB,GAAW3uD,EAAc2uD,IAGvB37R,GAAUlJ,SAAS3wC,MACrBu1U,EAAS17R,EAAQ,2BAGnBA,EAAOisB,YAAY8uQ,GACZA,GAOTjB,EAAUx0M,OAAS,WACjBs2M,EAAY9kS,SAASupB,gBAAiB,kBACtCu7Q,EAAY9kS,SAASmkS,cAAclB,EAAS/5R,QAAS,2BACrD,IAAI+6R,EAAWjkS,SAAS6sL,eAAe,aACvCo3G,GAAY/tD,EAAc+tD,IAO5BjB,EAAU2B,WAAa,WACrB,QAAS3kS,SAAS6sL,eAAe,cAOnCm2G,EAAUoB,kBAAoB,WAE5B,IAAIW,EAAY/kS,SAAS3wC,KAAKwlE,MAG1BmwQ,EAAgB,oBAAqBD,EAAa,SAClC,iBAAkBA,EAAa,MAC/B,gBAAiBA,EAAa,KAC9B,eAAgBA,EAAa,IAAM,GAEvD,OAAIC,EAAe,gBAAiBD,EAE3B,cACEC,EAAe,cAAeD,EAEhC,YAGA,UAiDX,IAAI3mP,EAAQ,WACV,IAAI6mP,EAAU,GAEd,SAASn2U,IACP,IAAIu2E,EAAK4/P,EAAQ58R,QACbg9B,GACFA,EAAGv2E,GAIP,OAAO,SAASu2E,GACd4/P,EAAQ50U,KAAKg1E,GACS,GAAlB4/P,EAAQv5U,QAAaoD,KAZjB,GAwBRu1U,EAAM,WACR,IAAIa,EAAc,CAAE,SAAU,IAAK,MAAO,MACtCC,EAAc,GAElB,SAASh9F,EAAUz9E,GACjB,OAAOA,EAAOnvJ,QAAQ,QAAS,OAAOA,QAAQ,gBAAgB,SAASu+B,EAAO+vD,GAC5E,OAAOA,EAAOxwC,iBAIlB,SAAS+rR,EAAc1nU,GACrB,IAAIm3D,EAAQ70B,SAAS3wC,KAAKwlE,MAC1B,GAAIn3D,KAAQm3D,EAAO,OAAOn3D,EAE1B,IAEI2nU,EAFA95U,EAAI25U,EAAYx5U,OAChB45U,EAAU5nU,EAAKyiC,OAAO,GAAGkZ,cAAgB37C,EAAKk5B,MAAM,GAExD,MAAOrrC,IAEL,GADA85U,EAAaH,EAAY35U,GAAK+5U,EAC1BD,KAAcxwQ,EAAO,OAAOwwQ,EAGlC,OAAO3nU,EAGT,SAAS6nU,EAAa7nU,GAEpB,OADAA,EAAOyqO,EAAUzqO,GACVynU,EAASznU,KAAUynU,EAASznU,GAAQ0nU,EAAc1nU,IAG3D,SAAS8nU,EAAS3gL,EAAS/5E,EAAMn8E,GAC/Bm8E,EAAOy6P,EAAaz6P,GACpB+5E,EAAQhwF,MAAMiW,GAAQn8E,EAGxB,OAAO,SAASk2J,EAASp2F,GACvB,IACIqc,EACAn8E,EAFA8tF,EAAOhxF,UAIX,GAAmB,GAAfgxF,EAAK/wF,OACP,IAAKo/E,KAAQrc,EACX9/D,EAAQ8/D,EAAWqc,QACLv6C,IAAV5hC,GAAuB8/D,EAAWtkE,eAAe2gF,IAAO06P,EAAS3gL,EAAS/5E,EAAMn8E,QAGtF62U,EAAS3gL,EAASpoE,EAAK,GAAIA,EAAK,KA9C5B,GAuDV,SAASgpP,EAAS5gL,EAASnnJ,GACzB,IAAIo1J,EAAyB,iBAAXjO,EAAsBA,EAAU2K,EAAU3K,GAC5D,OAAOiO,EAAKvtJ,QAAQ,IAAM7H,EAAO,MAAQ,EAO3C,SAASknU,EAAS//K,EAASnnJ,GACzB,IAAIgoU,EAAUl2K,EAAU3K,GACpB8gL,EAAUD,EAAUhoU,EAEpB+nU,EAASC,EAAShoU,KAGtBmnJ,EAAQvS,UAAYqzL,EAAQ1pU,UAAU,IAOxC,SAAS6oU,EAAYjgL,EAASnnJ,GAC5B,IACIioU,EADAD,EAAUl2K,EAAU3K,GAGnB4gL,EAAS5gL,EAASnnJ,KAGvBioU,EAAUD,EAAQnqU,QAAQ,IAAMmC,EAAO,IAAK,KAG5CmnJ,EAAQvS,UAAYqzL,EAAQ1pU,UAAU,EAAG0pU,EAAQj6U,OAAS,IAS5D,SAAS8jK,EAAU3K,GACjB,OAAQ,KAAOA,EAAQvS,WAAa,IAAM,KAAK/2I,QAAQ,QAAS,KAOlE,SAAS26Q,EAAcrxH,GACrBA,GAAWA,EAAQzvF,YAAcyvF,EAAQzvF,WAAWC,YAAYwvF,GAGlE,OAAOm+K,M;;;;;;GC3cT,IAAI4C,EAAQ,EAAQ,OAgDpB,SAASC,EAA8BD,GACrC,IAAIx/T,EAAM,GAUV,OARAxc,OAAOsD,KAAK04U,GAAOz4U,SAAQ,SAAsBgQ,GAC/C,IAAIsZ,EAAUmvT,EAAMzoU,GAChBxP,EAAS8kC,OAAOt1B,GAGpBiJ,EAAIqQ,EAAQoI,eAAiBlxB,KAGxByY,EAQT,SAAS0/T,EAAsBF,GAC7B,OAAOh8U,OAAOsD,KAAK04U,GAAOx/T,KAAI,SAAkBjJ,GAC9C,OAAOs1B,OAAOt1B,MASlB,SAAS4oU,EAAetvT,GACtB,IAAImnE,EAAMnnE,EAAQoI,cAElB,IAAKj1B,OAAOW,UAAUJ,eAAea,KAAK2C,EAAOwP,KAAMygF,GACrD,MAAM,IAAI3yF,MAAM,4BAA8BwrB,EAAU,KAG1D,OAAO9oB,EAAOwP,KAAKygF,GAQrB,SAASooP,EAAkB7oU,GACzB,IAAKvT,OAAOW,UAAUJ,eAAea,KAAK2C,EAAO8oB,QAAStZ,GACxD,MAAM,IAAIlS,MAAM,wBAA0BkS,GAG5C,OAAOxP,EAAO8oB,QAAQtZ,GAiBxB,SAASxP,EAAQwP,GACf,GAAoB,kBAATA,EACT,OAAO6oU,EAAiB7oU,GAG1B,GAAoB,kBAATA,EACT,MAAM,IAAIhN,UAAU,mCAItB,IAAI3E,EAAI8jD,SAASnyC,EAAM,IACvB,OAAK+pE,MAAM17E,GAIJu6U,EAAc5oU,GAHZ6oU,EAAiBx6U,GAxH5BopJ,EAAOD,QAAUhnJ,EAGjBA,EAAO8oB,QAAUmvT,EAGjBj4U,EAAOwP,KAAO0oU,EAA6BD,GAG3Cj4U,EAAOi4U,MAAQE,EAAqBF,GAGpCj4U,EAAOs4U,SAAW,CAChB,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,GAIPt4U,EAAOioK,MAAQ,CACb,KAAK,EACL,KAAK,EACL,KAAK,GAIPjoK,EAAOw9H,MAAQ,CACb,KAAK,EACL,KAAK,EACL,KAAK,I,UCtDP,IAAIk3G,EAAe,SAAUr9N,GAC3B,OAAOA,EACEzJ,QAAQ,UAAU,SAAUu+B,GAC3B,MAAO,IAAMA,EAAMjb,iBAEpBA,eAGX+1H,EAAOD,QAAU0tF,G,sGCEjB,SAAe6jG,EAAAA,EAAAA,GACbC,EAAAA,GACA3uL,OAAO,CACP95I,KAAM,QAENoiH,MAAO,CACLsmN,KAAM,CACJ7uT,KAAMoqE,QACNilG,aAASr2J,GAEXD,GAAI,CACF/Y,KAAMvc,OACN4rL,QAAS,OAEXy/I,MAAO,CACL9uT,KAAMoqE,QACNilG,aAASr2J,IAIb4nN,SAAU,CACRmuF,OADQ,WAEN,OAAOj8U,KAAKk8U,SAASn4G,MAAMg4G,OAI/B1xL,aAxBO,WAyBL,IAAKrqJ,KAAKk8U,UAAal8U,KAAKk8U,WAAal8U,KAAK+pJ,MAC5C,MAAM,IAAInpJ,MAAM,gIAIpBooJ,OA9BO,SA8BCxtC,GACN,IAAM2hD,EAAU3hD,EAAE,MAAO,CAAE2gO,YAAa,uBAAyBn8U,KAAKo8U,OAAL,YAEjE,OAAO5gO,EAAE,MAAO,CACd2gO,YAAa,gBACbE,OAAA,QACE,wBAAyBr8U,KAAKk8U,SAASI,IACvC,yBAA0Bt8U,KAAKk8U,SAASI,KACrCt8U,KAAKu8U,cAEVC,MAAO,CAAE,YAAY,GACrBC,SAAU,CAAEx2S,GAAIjmC,KAAKimC,KACpB,CAACk3H,Q,4HCxCR,SAAe0+K,EAAAA,EAAAA,GACba,EAAAA,EACAC,EAAAA,EACAC,EAAAA,GAEAzvL,OAAO,CACP95I,KAAM,WAENoiH,MAAO,CACL71D,KAAM03B,QACN4Y,MAAO5Y,QACPz5D,KAAM,CACJ3Q,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,KAIbuxD,SAAU,CACR+uF,QADQ,WAEN,OAAO,QACL,iBAAkB78U,KAAK4/D,KACvB,kBAAmB5/D,KAAKkwG,OACrBlwG,KAAK88U,iBAGZ/xC,OARQ,WASN,OAAO,QACLtrO,QAAQs9Q,EAAAA,EAAAA,IAAc/8U,KAAK69B,MAC3Bm/S,UAAUD,EAAAA,EAAAA,IAAc/8U,KAAK69B,MAC7B0hC,OAAOw9Q,EAAAA,EAAAA,IAAc/8U,KAAK69B,OACvB79B,KAAKi9U,oBAKdj0L,OA9BO,SA8BCxtC,GACN,IAAMprG,EAAO,CACX+rU,YAAa,WACbE,MAAOr8U,KAAK68U,QACZryQ,MAAOxqE,KAAK+qS,OACZmyC,GAAIl9U,KAAKm9U,YAGX,OAAO3hO,EAAE,MAAOx7G,KAAKo9U,mBAAmBp9U,KAAK4sN,MAAOx8M,GAAOpQ,KAAKo8U,OAAL,gB,4JCtD/D,QAAeiB,EAAf,E,0FCuBMC,GAAazB,EAAAA,EAAAA,GACjB0B,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,GACAC,EAAAA,EAAAA,GAAiB,cACjBC,EAAAA,EAAAA,GAAkB,eAOpB,QAAeN,EAAWnwL,SAAkBA,OAAO,CACjD95I,KAAM,QAENoiH,MAAO,CACLooN,YAAa,CACX3wT,KAAMvc,OADK,mBAGT,OAAK3Q,KAAK89U,UAEH99U,KAAK89U,UAAUD,YAFM,KAKhCE,MAAOzmP,QACP0mP,UAAW1mP,QACX2mP,IAAK3mP,QACL4mP,KAAM5mP,QACN6mP,QAAS7mP,QACT8mP,SAAU9mP,QACV+mP,MAAO/mP,QACPgnP,mBAAoBhnP,QACpBinP,QAASjnP,QACT0kE,IAAK,CACH9uI,KAAMvc,OACN4rL,QAAS,UAEXtpG,KAAMqE,QACNknP,KAAMlnP,QACNpqE,KAAM,CACJA,KAAMvc,OACN4rL,QAAS,UAEXj4L,MAAO,MAGT8L,KAAM,iBAAO,CACXquU,WAAY,kBAGd3wF,SAAU,CACR+uF,QADQ,WAEN,OAAO,wCACL,SAAS,GACNW,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAuCx9U,OAF5C,IAGE,kBAAmBA,KAAK0+U,SACxB,eAAgB1+U,KAAK+9U,MACrB,gBAAiB/9U,KAAK6sN,OACtB,kBAAmB7sN,KAAK2+U,SACxB,qBAAsB3+U,KAAK4+U,WAC3B,aAAc5+U,KAAKi+U,IACnB,eAAgBj+U,KAAKsoL,MACrB,gBAAiBtoL,KAAK6+U,MACtB,cAAe7+U,KAAKk+U,KACpB,cAAel+U,KAAK4/D,KACpB,iBAAkB5/D,KAAKm+U,QACvB,kBAAmBn+U,KAAKo+U,SACxB,eAAgBp+U,KAAKq+U,MACrB,eAAgBr+U,KAAKkwG,MACrB,eAAgBlwG,KAAK8+U,QACrB,iBAAkB9+U,KAAKu+U,QACvB,gBAAiBv+U,KAAK8rG,GACtB,cAAe9rG,KAAKizF,KACpB,cAAejzF,KAAKw+U,KACpB,aAAcx+U,KAAK0/D,KAChB1/D,KAAKu8U,cACLv8U,KAAK++U,cACL/+U,KAAKg/U,kBACLh/U,KAAKi/U,kBAGZC,kBA/BQ,WAgCN,IAAIl/U,KAAK2+U,SAET,OAAOQ,EAAAA,EAAAA,QAAAA,SAAAA,kBAAAA,KAAmDn/U,OAE5Do/U,eApCQ,WAoCM,MACNC,GAAgBr/U,KAAKk+U,OAAQl+U,KAAKi+U,KAAM,CAAEqB,QAAQ,GACxD,OAAIt/U,KAAK2+U,WACJ,SAAO3+U,KAAKu/U,QAAZ,EAAsBF,IAE7BR,MAzCQ,WA0CN,OAAQ7+U,KAAKizF,OAASjzF,KAAKq+U,QAAUr+U,KAAKo+U,WAAap+U,KAAKk+U,MAE9DU,WA5CQ,WA6CN,OAAOtnP,SACJt3F,KAAKk+U,OACLl+U,KAAKizF,OACLjzF,KAAKo+U,WACLp+U,KAAKg+U,YACLh+U,KAAK2+U,WACL3+U,KAAKq+U,QACa,MAAlBr+U,KAAKw/U,WAAqBp3S,OAAOpoC,KAAKw/U,WAAa,KAGxDV,QAvDQ,WAwDN,OAAOxnP,QACLt3F,KAAKk+U,MACLl+U,KAAKi+U,MAGTlzC,OA7DQ,WA8DN,OAAO,UACF/qS,KAAKi9U,oBAKdwC,QA1GiD,WA0G1C,WACCC,EAAgB,CACpB,CAAC,OAAQ,QACT,CAAC,UAAW,YACZ,CAAC,QAAS,YAIZA,EAAc58U,SAAQ,YAA4B,mBAA1B2kK,EAA0B,KAAhB6B,EAAgB,KAC5C,EAAKq2K,OAAO7/U,eAAe2nK,KAAWm4K,EAAAA,EAAAA,IAASn4K,EAAU6B,EAAa,OAI9EpuF,QAAS,CACP8zJ,MADO,SACAtqO,IAEJ1E,KAAKs+U,qBAAuBt+U,KAAKi+U,KAAOv5U,EAAEm7U,QAAU7/U,KAAK8/U,IAAIC,OAC9D//U,KAAKggV,MAAM,QAASt7U,GAEpB1E,KAAK89U,WAAa99U,KAAK0tK,UAEzBuyK,WARO,WASL,OAAOjgV,KAAKkgV,eAAe,OAAQ,CACjC/D,YAAa,kBACZn8U,KAAKo8U,OAAL,aAEL+D,UAbO,WAcL,OAAOngV,KAAKkgV,eAAe,OAAQ,CACjC7D,MAAO,iBACNr8U,KAAKo8U,OAAOgE,QAAU,CAACpgV,KAAKkgV,eAAe7C,EAAmB,CAC/D5nN,MAAO,CACL4qN,eAAe,EACfxiT,KAAM,GACN0hC,MAAO,SAMfypF,OAjJiD,SAiJzCxtC,GACN,IAAMjH,EAAW,CACfv0G,KAAKigV,aACLjgV,KAAKm+U,SAAWn+U,KAAKmgV,aAEvB,EAAsBngV,KAAKsgV,oBAAnBtkL,EAAR,EAAQA,IAAK5rJ,EAAb,EAAaA,KACPmwU,EAAWvgV,KAAK6+U,MAClB7+U,KAAKo9U,mBACLp9U,KAAKwgV,aAUT,MARY,WAARxkL,IACF5rJ,EAAKosU,MAAOtvT,KAAOltB,KAAKktB,KACxB9c,EAAKosU,MAAOmC,SAAW3+U,KAAK2+U,UAE9BvuU,EAAKosU,MAAOl4U,MAAQ,CAAC,SAAU,UAAUu0E,UAArB,OAAqC74E,KAAKsE,QAC1DtE,KAAKsE,MACLgW,KAAKC,UAAUva,KAAKsE,OAEjBk3G,EAAEwgD,EAAKh8J,KAAK2+U,SAAWvuU,EAAOmwU,EAASvgV,KAAK4sN,MAAOx8M,GAAOmkG,O,4ICzLrE,SAAesnO,EAAAA,EAAAA,GACb4E,EAAAA,EACAjD,EAAAA,EACAD,EAAAA,GACApwL,OAAO,CACP95I,KAAM,SAENoiH,MAAO,CACLgnD,KAAMnlF,QACNopP,MAAOppP,QACP2qL,IAAKtxQ,OACL83K,KAAMnxF,QACNqpP,aAAc,CACZzzT,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,GAEXqkJ,OAAQtpP,SAGVw2J,SAAU,CACR+uF,QADQ,WAEN,OAAO,gBACL,UAAU,GACPW,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAuCx9U,OAF5C,IAGE,eAAgBA,KAAKy8K,KACrB,gBAAiBz8K,KAAK0gV,MACtB,eAAgB1gV,KAAK6gV,YACrB,kBAAmB7gV,KAAKm+U,QACxB,mBAAoBn+U,KAAK2+U,SACzB,iBAAkB3+U,KAAK4gV,QACpBrD,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAqCv9U,QAG5C+qS,OAdQ,WAeN,IAAMvgO,GAAK,UACN+yQ,EAAAA,EAAAA,QAAAA,SAAAA,OAAAA,KAAoCv9U,OAOzC,OAJIA,KAAKiiR,MACPz3M,EAAMs2Q,WAAN,eAA2B9gV,KAAKiiR,IAAhC,uCAGKz3M,IAIX0Q,QAAS,CACP6lQ,YADO,WAEL,IAAM/3L,EAASy3L,EAAAA,EAAAA,QAAAA,QAAAA,YAAAA,KAA0CzgV,MAEzD,OAAKgpJ,EAEEhpJ,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,mBACbvgU,IAAK,YACJ,CAACotI,IALgB,OASxBA,OAvDO,SAuDCxtC,GACN,MAAsBx7G,KAAKsgV,oBAAnBtkL,EAAR,EAAQA,IAAK5rJ,EAAb,EAAaA,KASb,OAPAA,EAAKo6D,MAAQxqE,KAAK+qS,OAEd/qS,KAAK6gV,cACPzwU,EAAKosU,MAAQpsU,EAAKosU,OAAS,GAC3BpsU,EAAKosU,MAAMzvG,SAAW,GAGjBvxH,EAAEwgD,EAAKh8J,KAAKo9U,mBAAmBp9U,KAAK4sN,MAAOx8M,GAAO,CACvDpQ,KAAK+gV,cACL/gV,KAAKo8U,OAAL,iB,gNC9DN,SAAeP,EAAAA,EAAAA,GACba,EAAAA,EACAgB,EAAAA,EACAF,EAAAA,EACA1B,EAAAA,GACA6B,EAAAA,EAAAA,GAAiB,cACjBC,EAAAA,EAAAA,GAAkB,eAClBzwL,OAAO,CACP95I,KAAM,SAENoiH,MAAO,CACL+oG,OAAQ,CACNtxM,KAAMoqE,QACNilG,SAAS,GAEXshJ,YAAa,CACX3wT,KAAMvc,OADK,mBAGT,OAAK3Q,KAAKghV,UAEHhhV,KAAKghV,UAAUnD,YAFM,KAKhC72T,MAAOswE,QACP2pP,UAAW,CACT/zT,KAAMvc,OACN4rL,QAAS,WAEX2kJ,WAAY,CACVh0T,KAAMvc,OACN4rL,QAAS,kBAEXoiJ,SAAUrnP,QACV6pP,UAAW7pP,QACXp7E,OAAQo7E,QACR8pP,WAAY,CACVl0T,KAAMvc,OACN4rL,QAAS,aAEXl3L,MAAOiyF,QACPmxF,KAAMnxF,QACN8mP,SAAU9mP,QACV+pP,KAAM/pP,QACN0kE,IAAK,CACH9uI,KAAMvc,OACN4rL,QAAS,QAEXuoI,UAAWn0T,OACXrM,MAAO,MAGT8L,KAAM,iBAAO,CACXquU,WAAY,mBAGd3wF,SAAU,CACR+uF,QADQ,WAEN,OAAO,gCACL,UAAU,GACPW,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAuCx9U,OAF5C,IAGE,oBAAqBA,KAAK6gV,YAC1B,mBAAoB7gV,KAAK2+U,SACzB,oBAAqB3+U,KAAKmhV,UAC1B,gBAAiBnhV,KAAKqF,MACtB,eAAgBrF,KAAKshV,OACrB,oBAAqBthV,KAAK4sN,MAC1B,mBAAoB5sN,KAAKo+U,SACzB,eAAgBp+U,KAAKqhV,KACrB,oBAAqBrhV,KAAKuhV,UACvBvhV,KAAKu8U,cACLv8U,KAAKi/U,iBACLj/U,KAAK++U,eAGZwC,SAnBQ,WAoBN,OAAOjqP,QAAQt3F,KAAKgnB,QAEtB65T,YAtBQ,WAuBN,OAAOvpP,QACLkmP,EAAAA,EAAAA,QAAAA,SAAAA,YAAAA,KAA2Cx9U,OAC3CA,KAAKghV,aAKXvB,QA9EO,WA8EA,WACCC,EAAgB,CACpB,CAAC,UAAW,YACZ,CAAC,WAAY,eACb,CAAC,QAAS,UACV,CAAC,SAAU,iBAIbA,EAAc58U,SAAQ,YAA4B,mBAA1B2kK,EAA0B,KAAhB6B,EAAgB,KAC5C,EAAKq2K,OAAO7/U,eAAe2nK,KAAWm4K,EAAAA,EAAAA,IAASn4K,EAAU6B,EAAa,OAI9EpuF,QAAS,CACP8zJ,MADO,SACAtqO,GACL1E,KAAKggV,MAAM,QAASt7U,GAEpB1E,KAAKghV,WAAahhV,KAAK0tK,UAEzB8zK,UANO,WAOL,IAAMjtO,EAAW,GAWjB,OATIv0G,KAAKyhV,UACPltO,EAASvuG,KACPhG,KAAKkgV,eAAewB,EAAAA,EAAO,CACzBvF,YAAa,iBACb1mN,MAAO,CAAE71D,MAAM,IACd5/D,KAAKohV,aAILphV,KAAKkgV,eAAeyB,EAAAA,GAAoBptO,IAEjDqtO,SApBO,WAoBC,WACN,OAAO5hV,KAAKkgV,eAAewB,EAAAA,EAAO,CAChCvF,YAAa,gBACb1mN,MAAO,CACLvlB,OAAO,EACPryE,KAAM,IAER2+S,MAAO,CACL,aAAcx8U,KAAKk8U,SAAS2F,KAAK7gV,EAAEhB,KAAKkhV,aAE1ChE,GAAI,CACFluG,MAAQ,SAAAtqO,GACNA,EAAEo9U,kBACFp9U,EAAEq7D,iBAEF,EAAKigR,MAAM,eACX,EAAKA,MAAM,iBAAiB,MAG/BhgV,KAAKihV,YAEVhB,WAzCO,WA0CL,OAAOjgV,KAAKkgV,eAAe,OAAQ,CACjC/D,YAAa,mBACZ,CACDn8U,KAAKkc,QAAUlc,KAAKwhV,YACpBxhV,KAAKo8U,OAAL,WACAp8U,KAAKuhV,UAAYvhV,KAAK4hV,eAK5B54L,OAhJO,SAgJCxtC,GACN,IAAMjH,EAAW,CAACv0G,KAAKigV,cACvB,EAAoBjgV,KAAKsgV,oBAAnBtkL,EAAN,EAAMA,IAAK5rJ,EAAX,EAAWA,KAEXA,EAAKosU,OAAL,kBACKpsU,EAAKosU,OADV,IAEE2E,UAAWnhV,KAAKmhV,UAAY,YAASj7S,EACrC6mM,SAAU/sO,KAAKghV,YAAchhV,KAAK2+U,SAAW,EAAIvuU,EAAKosU,MAAOzvG,WAE/D38N,EAAK2xU,WAAY/7U,KAAK,CACpBqN,KAAM,OACN/O,MAAOtE,KAAKw+N,SAEdpuN,EAAOpQ,KAAKo9U,mBAAmBp9U,KAAK4sN,MAAOx8M,GAE3C,IAAMw8M,EAAQ5sN,KAAK8kU,WAAc9kU,KAAKo+U,UAAYp+U,KAAK4sN,MAEvD,OAAOpxG,EAAEwgD,EAAKh8J,KAAKwgV,aAAa5zH,EAAOx8M,GAAOmkG,O,2RCtK5C+oO,GAAazB,EAAAA,EAAAA,GACjBmG,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,GAIF,QAAe/E,EAAWnwL,OAAO,CAC/B95I,KAAM,WAEN0uU,WAAY,CAAEO,aAAAA,EAAAA,GAEd7sN,MAAO,CACLsmN,KAAMzkP,QACNqnP,SAAUrnP,QACVirP,WAAYjrP,QACZ0kP,MAAO1kP,QACPkrP,SAAU,CAAC7xU,OAAQy3B,QACnBq6S,iBAAkBnrP,QAClB94C,OAAQ,CACNtxB,KAAMvc,OACN4rL,QAAS,iBAEXmmJ,WAAYprP,QACZqrP,YAAa,CACXz1T,KAAMoqE,QACNilG,SAAS,GAEXqmJ,WAAYtrP,QACZkiP,WAAY,CACVtsT,KAAM,CAACvc,OAAQ2mF,SACfilG,QAAS,qBAEXh9H,MAAO,CAAC5uD,OAAQy3B,SAGlBh4B,KA7B+B,WA8B7B,MAAO,CACLyyU,YAAa,KACbC,SAAS,EACTC,gBAAiB,EACjBC,eAAgB,IAChBC,sBAAuB,OAI3Bn1F,SAAU,CACR+uF,QADQ,WACD,MACL,OAAO,EAAP,aACI,mBAAY78U,KAAKkjV,cAAgBxnU,QAAS,IAD9C,SAEE,mBAAoB1b,KAAKyhV,WAF3B,SAGE,uBAAwBzhV,KAAK0iV,aAH/B,SAIE,uBAAwB1iV,KAAKuiV,aAJ/B,SAKE,uBAAwBviV,KAAK4iV,aAL/B,SAME,qBAAsB5iV,KAAK8iV,SAN7B,GASFK,eAXQ,WAYN,MAAO,CACL,qBAAqB,EACrB,4BAA6BnjV,KAAKyhV,WAGtC2B,aAjBQ,WAkBN,OAAO9rP,UACHt3F,KAAKo8U,OAAOiH,aACZrjV,KAAKsjV,aAAaD,aAK1BE,MAAO,CACL9B,SADK,SACKviT,GAID,MAHHA,GACFl/B,KAAKmrR,OACLnrR,KAAKwjV,eAELxjV,KAAKyjV,gBACLzjV,KAAK0jV,SACL,SAAA1jV,KAAKijV,wBAAL,EAA4BzkR,UAGhC+jR,WAXK,SAWOrjT,GACLl/B,KAAKyhV,WAENviT,GACFl/B,KAAKwjV,aACLxjV,KAAKyjV,eAAc,KAEnBzjV,KAAK2jV,aACL3jV,KAAK4jV,iBAKXnE,QAxF+B,WA0FzBz/U,KAAK2/U,OAAO7/U,eAAe,gBAC7BqnI,EAAAA,EAAAA,IAAQ,aAAcnnI,OAI1B6jV,YA/F+B,WA+FpB,WACT7jV,KAAK8jV,WAAU,WACb,EAAKC,SAAW,EAAKtC,SACrB,EAAKA,UAAY,EAAKt2D,WAI1B64D,cAtG+B,WAuGP,qBAAX7/T,QAAwBnkB,KAAK0jV,UAG1CxoQ,QAAS,CACP+oQ,aADO,WACK,WACVjkV,KAAK8iV,SAAU,EAGf9iV,KAAK8jV,WAAU,WACb,EAAKhB,SAAU,EACf3+T,OAAOoiD,aAAa,EAAKw8Q,gBACzB,EAAKA,eAAiB5+T,OAAOukB,YAAW,kBAAO,EAAKo6S,SAAU,IAAQ,SAG1EoB,iBAXO,SAWWx/U,GAChB,IAAMihB,EAASjhB,EAAEihB,OAKjB,QACE3lB,KAAKmkV,eACJnkV,KAAKyhV,UACNzhV,KAAKokV,MAAM5iV,QAAQ89N,SAAS35M,IAC3B3lB,KAAKqkV,SAAW1+T,IAAW3lB,KAAKqkV,QAAQvE,IAAIxgH,SAAS35M,KACnD3lB,KAAKskV,cAAgBtkV,KAAKukV,gBAEjCf,WAxBO,WAyBDxjV,KAAKuiV,WACP5sS,SAASupB,gBAAgBimG,UAAUhoI,IAAI,qBAEvC+kT,EAAAA,EAAAA,QAAAA,QAAAA,WAAAA,KAA4CliV,OAGhDmrR,KA/BO,WA+BH,YACDnrR,KAAKuiV,aAAeviV,KAAKwkV,aAAexkV,KAAK4jV,aAE9C5jV,KAAK8jV,WAAU,WACb,EAAKA,WAAU,WACR,EAAKM,MAAM5iV,QAAQ89N,SAAS3pL,SAAS8uS,iBACxC,EAAKxB,sBAAwBttS,SAAS8uS,cACtC,EAAKL,MAAM5iV,QAAQg9D,SAErB,EAAKnb,cAIXA,KA5CO,WA6CLl/B,OAAOuB,iBAAiB,UAAW1lB,KAAK0kV,YAE1ChB,OA/CO,WAgDLv/T,OAAOu/B,oBAAoB,UAAW1jD,KAAK0kV,YAE7CC,eAlDO,SAkDSjgV,GACd1E,KAAKggV,MAAM,gBAAiBt7U,GAExB1E,KAAK0iV,WACP1iV,KAAKyiV,kBAAoBziV,KAAKikV,eAE9BjkV,KAAKyhV,UAAW,GAGpBmD,UA3DO,SA2DIlgV,GACT,GAAIA,EAAEmgV,UAAYC,EAAAA,GAAAA,MAAiB9kV,KAAK+kV,oBAAoB1jV,OAC1D,GAAKrB,KAAK0iV,WAIE1iV,KAAKyiV,kBACfziV,KAAKikV,mBALe,CACpBjkV,KAAKyhV,UAAW,EAChB,IAAM4B,EAAYrjV,KAAKglV,eACvBhlV,KAAK8jV,WAAU,kBAAMT,GAAcA,EAA0B7kR,WAKjEx+D,KAAKggV,MAAM,UAAWt7U,IAIxBggV,UAzEO,SAyEIhgV,GACT,GAAKA,GAAM1E,KAAK2iV,YAAhB,CAEA,IAAMh9T,EAASjhB,EAAEihB,OAEjB,GACIA,IAED,CAACgwB,SAAU31C,KAAKokV,MAAM5iV,SAASq3E,SAASlzD,KAExC3lB,KAAKokV,MAAM5iV,QAAQ89N,SAAS35M,IAE7B3lB,KAAKskV,cAAgBtkV,KAAKukV,iBAEzBvkV,KAAKilV,2BAA2B3xT,MAAK,SAAAkhI,GAAE,OAAIA,EAAG8qE,SAAS35M,MAExD,CAEA,IAAMyyS,EAAYp4T,KAAKokV,MAAM5iV,QAAQmvS,iBAAiB,4EAChDn8I,GAAK,OAAI4jK,GAAW9vS,MAAK,SAAAksI,GAAE,OAAKA,EAAG0yC,aAAa,eACtD1yC,GAAMA,EAAGh2F,WAGbyhR,WAhGO,WAgGG,WACR,OAAOjgV,KAAKklV,iBAAgB,iBAAM,CAChC,EAAKhF,eAAeiF,EAAAA,EAAgB,CAClC1vN,MAAO,CACLgyE,MAAM,EACNu0I,MAAO,EAAKA,MACZD,KAAM,EAAKA,OAEZ,CACD,EAAKmE,eAAe,MAAO,CACzB7D,MAAO,EAAK8G,eACZ3G,OAAO,QACL4I,KAAM,SACNr4G,SAAU,EAAK00G,SAAW,OAAIv7S,EAC9B,aAAc,EAAKs+S,iBAAct+S,EAAY,QAC1C,EAAKm/S,mBAEVnI,GAAI,CAAEoI,QAAS,EAAKV,WACpBp6Q,MAAO,CAAEuiJ,OAAQ,EAAKu3H,cACtBiB,IAAK,WACJ,CAAC,EAAKC,yBAIfA,cAxHO,WAyHL,IAAMhkV,EAAUxB,KAAKylV,kBAErB,OAAKzlV,KAAKw5U,WAEHx5U,KAAKkgV,eAAe,aAAc,CACvCzqN,MAAO,CACLpiH,KAAMrT,KAAKw5U,WACXh7R,OAAQx+C,KAAKw+C,OACbknS,QAAQ,IAET,CAAClkV,IARyBA,GAU/BikV,gBArIO,WAsIL,IAAMr1U,EAAkB,CACtBisU,MAAOr8U,KAAK68U,QACZ0I,IAAK,SACLxD,WAAY,CACV,CACE1uU,KAAM,gBACN/O,MAAO,CACLo4G,QAAS18G,KAAK2kV,eACdT,iBAAkBlkV,KAAKkkV,iBACvByB,QAAS3lV,KAAKilV,2BAGlB,CAAE5xU,KAAM,OAAQ/O,MAAOtE,KAAKyhV,WAE9Bj3Q,MAAO,CACLivM,gBAAiBz5Q,KAAKw+C,SAY1B,OARKx+C,KAAKuiV,aACRnyU,EAAKo6D,OAAL,kBACKp6D,EAAKo6D,OADV,IAEEg4Q,UAAUzF,EAAAA,EAAAA,IAAc/8U,KAAKwiV,UAC7BjjR,OAAOw9Q,EAAAA,EAAAA,IAAc/8U,KAAKu/D,UAIvBv/D,KAAKkgV,eAAe,MAAO9vU,EAAMpQ,KAAK4lV,oBAIjD58L,OA/Q+B,SA+QvBxtC,GACN,OAAOA,EAAE,MAAO,CACd2gO,YAAa,sBACbE,MAAO,CACL,gCACkB,KAAhBr8U,KAAK6lV,SACW,IAAhB7lV,KAAK6lV,QACW,WAAhB7lV,KAAK6lV,SAER,CACD7lV,KAAK8lV,eACL9lV,KAAKigV,mB,uECvTX,QAAenE,EAAAA,EAAAA,OAAiB,CAC9BzoU,KAAM,YAENoiH,MAAO,CACLswN,MAAOzuP,QACP0uP,SAAU1uP,SAGZ0xD,OAR8B,SAQtBxtC,GAEN,IAAIu2N,EAIJ,OAHK/xU,KAAK2/U,OAAOyF,MAA6B,cAArBplV,KAAK2/U,OAAOyF,OACnCrT,EAAc/xU,KAAKgmV,SAAW,WAAa,cAEtCxqO,EAAE,KAAM,CACb6gO,OAAA,QACE,aAAa,EACb,mBAAoBr8U,KAAK+lV,MACzB,sBAAuB/lV,KAAKgmV,UACzBhmV,KAAKu8U,cAEVC,OAAO,QACL4I,KAAM,YACN,mBAAoBrT,GACjB/xU,KAAK2/U,QAEVzC,GAAIl9U,KAAKm9U,iB,sIC3Bf,SAAe8I,EAAAA,EAAAA,GAAK,aAAa94L,OAAO,CACtC95I,KAAM,cACNm2I,YAAY,EACZ/zB,MAAO,CACLxvF,GAAIt1B,OACJqrJ,IAAK,CACH9uI,KAAMvc,OACN4rL,QAAS,OAEX2pJ,MAAO,CACLh5T,KAAMoqE,QACNilG,SAAS,IAGbvzC,OAdsC,SAc9BxtC,EAd8B,GAcF,IAC9BqhO,EADOpnN,EAAuB,EAAvBA,MAAOrlH,EAAgB,EAAhBA,KAAMmkG,EAAU,EAAVA,SAEhBioO,EAAUpsU,EAAVosU,MA2BR,OA1BIA,IAEFpsU,EAAKosU,MAAQ,GACbK,EAAUt9U,OAAOsD,KAAK25U,GAAOtgU,QAAO,SAAAN,GAGlC,GAAY,SAARA,EAAgB,OAAO,EAE3B,IAAMtX,EAAQk4U,EAAM5gU,GAIpB,OAAIA,EAAIZ,WAAW,UACjB5K,EAAKosU,MAAO5gU,GAAOtX,GACZ,GAGFA,GAA0B,kBAAVA,MAIvBmxH,EAAMxvF,KACR71B,EAAKqsU,SAAWrsU,EAAKqsU,UAAY,GACjCrsU,EAAKqsU,SAASx2S,GAAKwvF,EAAMxvF,IAGpBu1E,EACLia,EAAMumC,KACNqmG,EAAAA,EAAAA,IAAUjyP,EAAM,CACd+rU,YAAa,YACbE,MAAO38U,MAAW,CAChB,mBAAoB+1H,EAAMywN,QACzB1/U,OAAOq2U,GAAW,MAEvBtoO,O,sECvDN,SAAe0xO,EAAAA,EAAAA,GAAK,S,sECApB,SAAeA,EAAAA,EAAAA,GAAK,W,qECDpB,SAAeE,EAAAA,EAAAA,IAAuB,SAAU,MAAO,a,4HCAzC,SAAUC,EAAO/yU,GAE7B,OAAOgzU,EAAAA,EAAAA,OAAW,CAChBhzU,KAAM,KAAF,OAAOA,GAEXm2I,YAAY,EAEZ/zB,MAAO,CACLxvF,GAAIt1B,OACJqrJ,IAAK,CACH9uI,KAAMvc,OACN4rL,QAAS,QAIbvzC,OAbgB,SAaRxtC,EAbQ,GAaoB,IAAvBia,EAAuB,EAAvBA,MAAOrlH,EAAgB,EAAhBA,KAAMmkG,EAAU,EAAVA,SACxBnkG,EAAK+rU,YAAe,UAAG9oU,EAAH,YAAWjD,EAAK+rU,aAAe,IAAMzgU,OAEzD,IAAQ8gU,EAAUpsU,EAAVosU,MACR,GAAIA,EAAO,CAETpsU,EAAKosU,MAAQ,GACb,IAAMK,EAAUt9U,OAAOsD,KAAK25U,GAAOtgU,QAAO,SAAAN,GAGxC,GAAY,SAARA,EAAgB,OAAO,EAE3B,IAAMtX,EAAQk4U,EAAM5gU,GAIpB,OAAIA,EAAIZ,WAAW,UACjB5K,EAAKosU,MAAO5gU,GAAOtX,GACZ,GAGFA,GAA0B,kBAAVA,KAGrBu4U,EAAQx7U,SAAQ+O,EAAK+rU,aAAL,WAAwBU,EAAQ72T,KAAK,OAQ3D,OALIyvG,EAAMxvF,KACR71B,EAAKqsU,SAAWrsU,EAAKqsU,UAAY,GACjCrsU,EAAKqsU,SAASx2S,GAAKwvF,EAAMxvF,IAGpBu1E,EAAEia,EAAMumC,IAAK5rJ,EAAMmkG,Q,kDClC3B+xO,E,kMASL,SAASC,EAAgBC,GACvB,MAAO,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,OAAOlzT,MAAK,SAAA4L,GAAG,OAAIsnT,EAAS3tQ,SAAS35C,MAGlF,SAASunT,EAAWvI,GAClB,MAAQ,0CAA0C5uU,KAAK4uU,IAAS,UAAU5uU,KAAK4uU,IAASA,EAAK78U,OAAS,GAdxG,SAAKilV,GACHA,EAAAA,UAAAA,OACAA,EAAAA,SAAAA,OACAA,EAAAA,WAAAA,OACAA,EAAAA,UAAAA,OACAA,EAAAA,SAAAA,OACAA,EAAAA,UAAAA,QANF,CAAKA,IAAAA,EAAQ,KAiBb,IAAM5E,GAAQ7F,EAAAA,EAAAA,GACZ6K,EAAAA,EACAhK,EAAAA,EACAgB,EAAAA,EACA5B,EAAAA,GAEA3uL,OAAO,CACP95I,KAAM,SAENoiH,MAAO,CACLkxN,MAAOrvP,QACPqnP,SAAUrnP,QACV13B,KAAM03B,QACN4Y,MAAO5Y,QACPz5D,KAAM,CAACuK,OAAQz3B,QACfqrJ,IAAK,CACH9uI,KAAMvc,OACN4pK,UAAU,EACVgiB,QAAS,MAIbuxD,SAAU,CACR84F,OADQ,WAEN,OAAO,GAETC,iBAJQ,WAKN,OAAOvvP,QACLt3F,KAAK8mV,WAAW93G,OAAShvO,KAAK8mV,WAAW,aAK/C5rQ,QAAS,CACP6rQ,QADO,WAEL,IAAIC,EAAW,GAGf,OAFIhnV,KAAKo8U,OAAL,aAAqB4K,EAAWhnV,KAAKo8U,OAAL,WAAoB,GAAGnpP,KAAMv3E,SAE1DurU,EAAAA,EAAAA,IAAkBjnV,KAAMgnV,IAEjCE,QAPO,WAQL,IAAMC,EAAQ,CACZC,OAAQpnV,KAAKonV,OACbj9J,MAAOnqL,KAAKmqL,MACZy8J,OAAQ5mV,KAAK4mV,OACbS,MAAOrnV,KAAKqnV,MACZC,OAAQtnV,KAAKsnV,QAGTC,GAAe1kV,EAAAA,EAAAA,IAAKskV,GAAO7+T,MAAK,SAAA1M,GAAG,OAAIurU,EAAMvrU,MAEnD,OACG2rU,GAAgBjB,EAASiB,KAAkBxK,EAAAA,EAAAA,IAAc/8U,KAAK69B,OAInE2pT,eAvBO,WAwBL,MAAO,CACLrL,YAAa,qBACbE,MAAO,CACL,mBAAoBr8U,KAAK2+U,SACzB,eAAgB3+U,KAAK4/D,KACrB,eAAgB5/D,KAAK6mV,iBACrB,gBAAiB7mV,KAAKkwG,MACtB,gBAAiBlwG,KAAK2mV,OAExBnK,OAAO,QACL,eAAgBx8U,KAAK6mV,iBACrBlI,SAAU3+U,KAAK6mV,kBAAoB7mV,KAAK2+U,SACxCzxT,KAAMltB,KAAK6mV,iBAAmB,cAAW3gT,GACtClmC,KAAKynV,QAEVvK,GAAIl9U,KAAK8mV,aAGbY,kBA1CO,WA2CL,IAAM94C,EAAW5uS,KAAKknV,UAChBS,GAAc,kBACf3nV,KAAKwnV,kBADO,IAEfh9Q,MAAOokO,EAAW,CAChBA,SAAAA,EACAnvO,OAAQmvO,EACRrvO,MAAOqvO,QACL1oQ,IAIN,OAFAlmC,KAAK4nV,YAAYD,GAEVA,GAETC,YAxDO,SAwDMx3U,GACXA,EAAI,UAAJ,kBAAkBA,EAAI,UAAWpQ,KAAKu8U,cACtCv8U,KAAKwgV,aAAaxgV,KAAK4sN,MAAOx8M,IAEhCy3U,eA5DO,SA4DS3J,EAAc1iO,GAC5B,IAAMssO,EAA6B,GAC7B13U,EAAOpQ,KAAKwnV,iBAEdhB,EAAW,iBAGTuB,EAAiB7J,EAAKhjU,QAAQ,KAC9B8sU,EAAiBD,IAAmB,EAEtCC,EAEFF,EAAY9hV,KAAKk4U,IAEjBsI,EAAWtI,EAAK3xS,MAAM,EAAGw7S,GACrBxB,EAAeC,KAAWA,EAAW,KAG3Cp2U,EAAI,SAAOo2U,IAAY,EACvBp2U,EAAI,SAAO8tU,IAAS8J,EAEpB,IAAMp5C,EAAW5uS,KAAKknV,UAKtB,OAJIt4C,IAAUx+R,EAAKo6D,MAAQ,CAAEokO,SAAAA,IAE7B5uS,KAAK4nV,YAAYx3U,GAEVorG,EAAEx7G,KAAK6mV,iBAAmB,SAAW7mV,KAAKg8J,IAAK5rJ,EAAM03U,IAE9DG,cAxFO,SAwFQ/J,EAAc1iO,GAC3B,IAAM0sO,EAAqB,CACzB7L,MAAO,cACPG,MAAO,CACL2L,MAAO,6BACPC,QAAS,YACThD,KAAM,MACN,eAAe,IAIbvnT,EAAO79B,KAAKknV,UASlB,OARIrpT,IACFqqT,EAAQ19Q,MAAQ,CACdokO,SAAU/wQ,EACV4hC,OAAQ5hC,EACR0hC,MAAO1hC,IAIJ29E,EAAEx7G,KAAK6mV,iBAAmB,SAAW,OAAQ7mV,KAAK0nV,oBAAqB,CAC5ElsO,EAAE,MAAO0sO,EAAS,CAChB1sO,EAAE,OAAQ,CACRghO,MAAO,CACL78U,EAAGu+U,UAMbmK,uBAtHO,SAuHLnK,EACA1iO,GAEA,IAAMprG,EAAkB,CACtBisU,MAAO,CACL,qBAAqB,IAInBx+S,EAAO79B,KAAKknV,UACdrpT,IACFztB,EAAKo6D,MAAQ,CACXokO,SAAU/wQ,EACV4hC,OAAQ5hC,EACR0hC,MAAO1hC,IAIX79B,KAAK4nV,YAAYx3U,GAEjB,IAAMoiS,EAAY0rC,EAAK1rC,UAIvB,OAHApiS,EAAKqlH,MAAQyoN,EAAKzoN,MAClBrlH,EAAKk4U,SAAWl4U,EAAK8sU,GAEd1hO,EAAEx7G,KAAK6mV,iBAAmB,SAAW,OAAQ7mV,KAAK0nV,oBAAqB,CAC5ElsO,EAAEg3L,EAAWpiS,OAKnB44I,OAhLO,SAgLCxtC,GACN,IAAM0iO,EAAOl+U,KAAK+mV,UAElB,MAAoB,kBAAT7I,EACLuI,EAAUvI,GACLl+U,KAAKioV,cAAc/J,EAAM1iO,GAE3Bx7G,KAAK6nV,eAAe3J,EAAM1iO,GAG5Bx7G,KAAKqoV,uBAAuBnK,EAAM1iO,MAI7C,QAAe6qO,EAAAA,EAAAA,OAAW,CACxBhzU,KAAM,SAENk1U,aAAc7G,EAEdl4L,YAAY,EAEZR,OAPwB,SAOhBxtC,EAPgB,GAOK,IAAhBprG,EAAgB,EAAhBA,KAAMmkG,EAAU,EAAVA,SACbyyO,EAAW,GAcf,OAXI52U,EAAKqsU,WACPuK,EAAW52U,EAAKqsU,SAAS9tI,aACvBv+L,EAAKqsU,SAASxuI,WACd+4I,SAIK52U,EAAKqsU,SAAS9tI,mBACdv+L,EAAKqsU,SAASxuI,WAGhBzyF,EAAEkmO,EAAOtxU,EAAM42U,EAAW,CAACA,GAAYzyO,O,6DCxPlD,QAAemtO,EAAf,G,gICAA,QAAe8G,EAAf,E,0DC2BMC,EAAiC,qBAAXtkU,QAA0B,yBAA0BA,OAGhF,SAAe03T,EAAAA,EAAAA,GACb2M,EACA1M,EAAAA,GACA3uL,OAAO,CACP95I,KAAM,QAEN0uU,WAAY,CAAE2G,UAAAA,EAAAA,GAEdjzN,MAAO,CACLkzN,IAAKh4U,OACLi4U,QAAStxP,QACTuxP,MAAOvxP,QACPwxP,SAAUn4U,OACVo4U,QAASp4U,OACT/O,QAAS,CACPsrB,KAAM3tB,OAGNg9L,QAAS,iBAAO,CACdkL,UAAMvhK,EACN8iT,gBAAY9iT,EACZssM,eAAWtsM,KAGfwkC,SAAU,CACRx9C,KAAMvc,OACN4rL,QAAS,iBAEX4qJ,MAAOx2U,OACP05D,IAAK,CACHn9C,KAAM,CAACvc,OAAQpR,QACfg9L,QAAS,IAEX0sJ,OAAQt4U,OACR6oU,WAAY,CACVtsT,KAAM,CAACoqE,QAAS3mF,QAChB4rL,QAAS,oBAIbnsL,KArCO,WAsCL,MAAO,CACL84U,WAAY,GACZC,MAAO,KACPC,WAAW,EACXC,2BAAuBnjT,EACvBojT,kBAAcpjT,EACdqjT,UAAU,IAIdz7F,SAAU,CACR07F,oBADQ,WAEN,OAAOphT,OAAOpoC,KAAKypV,cAAcC,QAAU1pV,KAAKqpV,wBAElDI,cAJQ,WAKN,OAAOzpV,KAAKqqE,KAA2B,YAApB,OAAOrqE,KAAKqqE,KAC3B,CACAA,IAAKrqE,KAAKqqE,IAAIA,IACd4+Q,OAAQjpV,KAAKipV,QAAUjpV,KAAKqqE,IAAI4+Q,OAChCF,QAAS/oV,KAAK+oV,SAAW/oV,KAAKqqE,IAAI0+Q,QAClCW,OAAQthT,OAAOpoC,KAAK2pV,aAAe3pV,KAAKqqE,IAAIq/Q,SAC1C,CACFr/Q,IAAKrqE,KAAKqqE,IACV4+Q,OAAQjpV,KAAKipV,OACbF,QAAS/oV,KAAK+oV,QACdW,OAAQthT,OAAOpoC,KAAK2pV,aAAe,KAGzCC,cAlBQ,WAmBN,KAAM5pV,KAAKypV,cAAcp/Q,KAAOrqE,KAAKypV,cAAcV,SAAW/oV,KAAK8oV,UAAW,MAAO,GAErF,IAAMe,EAA4B,GAC5Bx/Q,EAAMrqE,KAAKopV,UAAYppV,KAAKypV,cAAcV,QAAU/oV,KAAKkpV,WAE3DlpV,KAAK8oV,UAAUe,EAAgB7jV,KAAhB,0BAAwChG,KAAK8oV,SAA7C,MACfz+Q,GAAKw/Q,EAAgB7jV,KAAhB,eAA6BqkE,EAA7B,OAET,IAAM8+Q,EAAQnpV,KAAKkgV,eAAe,MAAO,CACvC/D,YAAa,iBACbE,MAAO,CACL,0BAA2Br8U,KAAKopV,UAChC,0BAA2BppV,KAAK4oV,QAChC,yBAA0B5oV,KAAK4oV,SAEjCp+Q,MAAO,CACLq/Q,gBAAiBA,EAAgB7jU,KAAK,MACtC8jU,mBAAoB9pV,KAAK0qE,UAE3B9uD,KAAM5b,KAAKopV,YAIb,OAAKppV,KAAKw5U,WAEHx5U,KAAKkgV,eAAe,aAAc,CACvC1D,MAAO,CACLnpU,KAAMrT,KAAKw5U,WACXhjK,KAAM,WAEP,CAAC2yK,IAPyBA,IAWjC5F,MAAO,CACLl5Q,IADK,WAGErqE,KAAKopV,UACLppV,KAAK+pV,YADW/pV,KAAKu9H,UAAKr3F,OAAWA,GAAW,IAGvD,4BAA6B,UAG/B8jT,QA9GO,WA+GLhqV,KAAKu9H,QAGPriD,QAAS,CACPqiD,KADO,SAELnkD,EACAoB,EACAyvQ,GAKA,IACExB,GACCwB,GACAjqV,KAAK6oV,MAHR,CAMA,GAAI7oV,KAAKypV,cAAcV,QAAS,CAC9B,IAAMmB,EAAU,IAAI1jB,MACpB0jB,EAAQ7/Q,IAAMrqE,KAAKypV,cAAcV,QACjC/oV,KAAKmqV,YAAYD,EAAS,MAGxBlqV,KAAKypV,cAAcp/Q,KAAKrqE,KAAK+pV,cAEnCK,OAvBO,WAwBLpqV,KAAKqqV,SACLrqV,KAAKopV,WAAY,EACjBppV,KAAKggV,MAAM,OAAQhgV,KAAKqqE,KAGtBrqE,KAAKmpV,QACJnpV,KAAKypV,cAAcp/Q,IAAIlvD,SAAS,SAAWnb,KAAKypV,cAAcp/Q,IAAIrvD,WAAW,yBAE1Ehb,KAAKmpV,MAAMmB,eAAiBtqV,KAAKmpV,MAAMG,cACzCtpV,KAAKspV,aAAetpV,KAAKmpV,MAAMG,aAC/BtpV,KAAKqpV,sBAAwBrpV,KAAKmpV,MAAMG,aAAetpV,KAAKmpV,MAAMmB,eAElEtqV,KAAKqpV,sBAAwB,IAInC1hH,QAxCO,WAyCL3nO,KAAKupV,UAAW,EAChBvpV,KAAKggV,MAAM,QAAShgV,KAAKqqE,MAE3BggR,OA5CO,WA8CDrqV,KAAKmpV,QAAOnpV,KAAKkpV,WAAalpV,KAAKmpV,MAAMD,YAAclpV,KAAKmpV,MAAM9+Q,MAExE0/Q,UAhDO,WAgDE,WACDZ,EAAQ,IAAI3iB,MAClBxmU,KAAKmpV,MAAQA,EAEbA,EAAM9lV,OAAS,WAET8lV,EAAMp3U,OACRo3U,EAAMp3U,SAAN,UAAsB,SAAAjD,IACpBy7U,EAAAA,EAAAA,IACE,qEACQ,EAAKd,cAAcp/Q,MAC1Bv7D,EAAIsd,QAAJ,4BAAmCtd,EAAIsd,SAAY,IACpD,MAEDtnB,KAAK,EAAKslV,QAEb,EAAKA,UAGTjB,EAAM1lV,QAAUzD,KAAK2nO,QAErB3nO,KAAKupV,UAAW,EAChBvpV,KAAKmnV,QAAUgC,EAAMhC,MAAQnnV,KAAKmnV,OAClCnnV,KAAKypV,cAAcR,SAAWE,EAAMF,OAASjpV,KAAKypV,cAAcR,QAChEE,EAAM9+Q,IAAMrqE,KAAKypV,cAAcp/Q,IAC/BrqE,KAAKggV,MAAM,YAAahgV,KAAKypV,cAAcp/Q,KAE3CrqE,KAAK2pV,aAAe3pV,KAAKmqV,YAAYhB,GACrCnpV,KAAKqqV,UAEPF,YA9EO,SA8EMloE,GAAmD,WAA5B7+Q,EAA4B,uDAAH,IACrDs4N,EAAO,SAAPA,IACJ,IAAQ4uH,EAAgCroE,EAAhCqoE,cAAehB,EAAiBrnE,EAAjBqnE,aAEnBgB,GAAiBhB,GACnB,EAAKA,aAAeA,EACpB,EAAKD,sBAAwBC,EAAegB,GAClCroE,EAAIxnM,WAAY,EAAK2uQ,WAAc,EAAKG,UAAuB,MAAXnmV,GAC9DslC,WAAWgzL,EAAMt4N,IAIrBs4N,KAEFukH,WA5FO,WA6FL,IAAMz+U,EAAiBgnV,EAAAA,QAAAA,QAAAA,WAAAA,KAA4CxoV,MAOnE,OANIA,KAAKspV,cACPtpV,KAAKirB,GAAGzpB,EAAQ4O,KAAO,MAAO,CAC5Bo6D,MAAO,CAAEjL,MAAO,GAAF,OAAKv/D,KAAKspV,aAAV,SAIX9nV,GAETgpV,iBAtGO,WAuGL,IAAMC,GAAOC,EAAAA,EAAAA,IAAQ1qV,KAAM,eAC3B,GAAIyqV,EAAM,CACR,IAAMriG,EAAcpoP,KAAKopV,UACrB,CAACppV,KAAKkgV,eAAe,MAAO,CAC5B/D,YAAa,wBACZsO,IACD,GAEJ,OAAKzqV,KAAKw5U,WAEHx5U,KAAKkgV,eAAe,aAAc,CACvCzqN,MAAO,CACLiwN,QAAQ,EACRryU,KAAMrT,KAAKw5U,aAEZpxF,GAP0BA,EAAY,MAY/Cp/F,OA7OO,SA6OCxtC,GACN,IAAMmyD,EAAO66K,EAAAA,QAAAA,OAAAA,KAAgCxoV,KAAMw7G,GAE7CprG,GAAOiyP,EAAAA,EAAAA,IAAU10F,EAAKv9J,KAAO,CACjC+rU,YAAa,UACbK,MAAO,CACL,aAAcx8U,KAAK2oV,IACnBvD,KAAMplV,KAAK2oV,IAAM,WAAQziT,GAE3Bm2S,MAAOr8U,KAAKu8U,aAGZwF,WAAY0G,EACR,CAAC,CACDp1U,KAAM,YACNqzR,UAAW,CAAE96B,MAAM,GACnBtnQ,MAAO,CACLo4G,QAAS18G,KAAKu9H,KACd37H,QAAS5B,KAAK4B,gBAGhBskC,IAUN,OAPAynI,EAAKp5D,SAAW,CACdv0G,KAAK2qV,cACL3qV,KAAK4pV,cACL5pV,KAAKwqV,mBACLxqV,KAAKigV,cAGAzkO,EAAEmyD,EAAK3R,IAAK5rJ,EAAMu9J,EAAKp5D,c,6LChSlC,SAAesnO,EAAAA,EAAAA,GAAOa,EAAAA,EAAWZ,EAAAA,GAAW3uL,OAAO,CACjD95I,KAAM,aAENoiH,MAAO,CACLnxH,MAAO,CACL4oB,KAAMxtB,MACN68L,QAAS,iBAAO,MAIpBrhH,QAAS,CACP0vQ,YADO,WAEL,OAAO5qV,KAAKkgV,eAAe,mBAAoB,CAC7C/D,YAAa,sBACbK,MAAO,CACLnpU,KAAM,qBACN2oJ,IAAK,QAENh8J,KAAKsE,MAAMyX,IAAI/b,KAAK6qV,cAEzBA,WAVO,SAUKz+T,EAAiBxQ,GAC3B,OAAO5b,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,sBACbvgU,IAAAA,IACC8uU,EAAAA,EAAAA,IAAQ1qV,KAAM,UAAW,CAAEosB,QAAAA,EAASxQ,IAAAA,KAAU,CAACwQ,MAItD48H,OA5BiD,SA4BzCxtC,GACN,OAAOA,EAAE,MAAOx7G,KAAKwgV,aAAaxgV,KAAK4sN,MAAO,CAC5CuvH,YAAa,aACbE,MAAOr8U,KAAKu8U,eACV,CAACv8U,KAAK4qV,mBC7Cd,I,qCCsBMtN,GAAazB,EAAAA,EAAAA,GACjB6K,EAAAA,EACAoE,EAAAA,GASF,QAAexN,EAAWnwL,SAAkBA,OAAO,CACjD95I,KAAM,UAEN03U,cAAc,EAEdt1N,MAAO,CACLu1N,WAAYr6U,OACZg8M,gBAAiB,CACfz/L,KAAMvc,OACN4rL,QAAS,IAEXoqJ,MAAOrvP,QACP73B,OAAQ,CAACr3B,OAAQz3B,QACjBs6U,YAAa,CAAC3zP,QAAS3mF,QACvBu6U,gBAAiB5zP,QACjBkiF,KAAM7oK,OACNs1B,GAAIt1B,OACJtL,MAAOsL,OACPwtU,QAAS7mP,QACT6zP,eAAgB7zP,QAChB8zP,YAAaz6U,OACbrM,MAAO,MAGT8L,KAxBiD,WAyB/C,MAAO,CACL68O,UAAWjtP,KAAKsE,MAChB+mV,cAAc,IAIlBv9F,SAAU,CACR+uF,QADQ,WAEN,OAAO,QACL,qBAAsB78U,KAAKsrV,SAC3B,yBAA0BtrV,KAAKurV,YAC/B,2BAA4BvrV,KAAKwrV,cACjC,oBAAqBxrV,KAAKyrV,QAC1B,uBAAwBzrV,KAAKw2I,WAC7B,sBAAuBx2I,KAAK0rV,UAE5B,uBAAwC,IAAjB1rV,KAAKm+U,SAAqC,MAAhBn+U,KAAKm+U,QACtD,uBAAwBn+U,KAAK2rV,WAC7B,iBAAkB3rV,KAAK2mV,MACvB,6BAA8B3mV,KAAKkrV,iBAChClrV,KAAKu8U,eAGZqP,WAjBQ,WAkBN,OAAO5rV,KAAKimC,IAAL,gBAAoBjmC,KAAK6rV,OAElCC,WApBQ,WAqBN,OAAO9rV,KAAK+rV,kBAAkB1qV,OAAS,GAEzC2qV,QAvBQ,WAwBN,OAAQhsV,KAAKisV,eACTjsV,KAAKw5K,OACNx5K,KAAKmrV,gBAAkBnrV,KAAK0rV,YAEjCQ,SA5BQ,WA6BN,SAAUlsV,KAAKo8U,OAAO/2U,QAASrF,KAAKqF,QAMtC8mV,cAAe,CACbzqV,IADa,WAEX,OAAO1B,KAAKitP,WAEdtkO,IAJa,SAIRuW,GACHl/B,KAAKitP,UAAY/tN,EACjBl/B,KAAKggV,MAAMhgV,KAAKosV,aAAcltT,KAGlCusT,QA5CQ,WA6CN,QAASzrV,KAAKitP,WAEhBu+F,cA/CQ,WAgDN,OAAOxrV,KAAKyrV,SAEdM,kBAlDQ,WAkDS,WACf,OAAI/rV,KAAKgsV,QAAgB,CAAChsV,KAAKw5K,MAE1Bx5K,KAAKisV,YAEHjsV,KAAKqsV,YAAYtwU,KAAK,SAAAuwU,GAC3B,GAA0B,kBAAfA,EAAyB,OAAOA,EAE3C,IAAMC,EAAmBD,EAAW,EAAKH,eAEzC,MAAmC,kBAArBI,EAAgCA,EAAmB,MAChErwU,QAAO,SAAAkQ,GAAO,MAAgB,KAAZA,KARS,IAUhCm/T,YA/DQ,WAgEN,OAA4B,IAArBvrV,KAAKirV,aAA+C,SAArBjrV,KAAKirV,aAA0BjrV,KAAK8rV,aAI9EvI,MAAO,CACLj/U,MADK,SACE46B,GACLl/B,KAAKitP,UAAY/tN,IAIrBmrH,aAzGiD,WA4G/CrqJ,KAAKosV,aAAgBpsV,KAAKgqJ,SAASt2B,OAAS1zH,KAAKgqJ,SAASt2B,MAAM9sG,OAAU,SAG5Es0D,QAAS,CACP+kQ,WADO,WAEL,MAAO,CACLjgV,KAAKwsV,iBACLxsV,KAAKysV,aACLzsV,KAAK0sV,kBAGTD,WARO,WASL,OAAOzsV,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,mBACbK,MAAO,CAAE/3Q,MAAOzkE,KAAKynV,OAAOhjR,QAC3B,CACDzkE,KAAK2sV,eACL3sV,KAAK4sV,iBAGTC,eAjBO,WAkBL,MAAO,CACL7sV,KAAK8sV,WACL9sV,KAAKo8U,OAAL,aAGJ2Q,QAvBO,SAwBL7/T,EACA4qF,GACyB,WAAzBk1O,EAAyB,uDAAF,GAEjB9O,EAAQl+U,KAAA,UAAgBktB,EAAhB,SACR4uD,EAAY,SAAH,QAAYg0L,EAAAA,EAAAA,IAAU5iP,IAC/B+/T,KAAiBjtV,KAAK8mV,WAAWhrQ,KAAcg8B,GAE/C1nG,GAAOiyP,EAAAA,EAAAA,IAAU,CACrBm6E,MAAO,CACL,aAAcyQ,GAAcn9E,EAAAA,EAAAA,IAAU5iP,GAAM9V,MAAM,KAAK,GAAK,aAAU8uB,EACtE0mL,MAAO5sN,KAAKktV,gBACZnR,KAAM/7U,KAAK+7U,KACX4C,SAAU3+U,KAAKw2I,WACfwlM,MAAOh8U,KAAKg8U,OAEdkB,GAAK+P,EAED,CACAj+G,MAAQ,SAAAtqO,GACNA,EAAEq7D,iBACFr7D,EAAEo9U,kBAEF,EAAK9B,MAAMlkQ,EAAWp3E,GACtBozG,GAAMA,EAAGpzG,IAIXyoV,QAAU,SAAAzoV,GACRA,EAAEq7D,iBACFr7D,EAAEo9U,yBAbJ57S,GAgBH8mT,GAEH,OAAOhtV,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,gBACbE,MAAOnvT,EAAO,kBAAH,QAAqB4iP,EAAAA,EAAAA,IAAU5iP,SAAUgZ,GACnD,CACDlmC,KAAKkgV,eACHwB,EAAAA,EACAtxU,EACA8tU,MAINyO,aAtEO,WAuEL,OAAO3sV,KAAKkgV,eAAe,MAAOlgV,KAAKo9U,mBAAmBp9U,KAAK2sN,gBAAiB,CAC9EwvH,YAAa,gBACb3xQ,MAAO,CAAE/K,QAAQs9Q,EAAAA,EAAAA,IAAc/8U,KAAKy/D,SACpCy9Q,GAAI,CACFluG,MAAOhvO,KAAKotV,QACZC,UAAWrtV,KAAKstV,YAChBH,QAASntV,KAAKutV,WAEhBhI,IAAK,eACH,CAACvlV,KAAK6sV,oBAEZC,SAlFO,WAmFL,OAAK9sV,KAAKksV,SAEHlsV,KAAKkgV,eAAesN,EAAAA,EAAQ,CACjC/3N,MAAO,CACLm3F,MAAO5sN,KAAKktV,gBACZnR,KAAM/7U,KAAK+7U,KACX4C,SAAU3+U,KAAKw2I,WACfi3M,QAASztV,KAAKsrV,SACdzpJ,IAAK7hM,KAAK4rV,WACV5P,MAAOh8U,KAAKg8U,QAEbh8U,KAAKo8U,OAAO/2U,OAASrF,KAAKqF,OAXF,MAa7BunV,YAhGO,WAgGI,WACT,OAAK5sV,KAAKurV,YAEHvrV,KAAKkgV,eAAewN,EAAW,CACpCj4N,MAAO,CACLm3F,MAAO5sN,KAAKgsV,QAAU,GAAKhsV,KAAKktV,gBAChCnR,KAAM/7U,KAAK+7U,KACXC,MAAOh8U,KAAKg8U,MACZ13U,MAAOtE,KAAK+rV,mBAEdvP,MAAO,CACL4I,KAAMplV,KAAKisV,YAAc,QAAU,MAErC0B,YAAa,CACXpxJ,QAAS,SAAA9mE,GAAK,OAAIi1N,EAAAA,EAAAA,IAAQ,EAAM,UAAWj1N,OAbjB,MAiBhCm4N,QAlHO,SAmHL1gU,EACAmxB,EACAosS,GAEA,IAAKA,EAAKppV,OAAQ,OAAO,KAEzB,IAAMkkV,EAAM,GAAH,OAAMr4T,EAAN,YAAcmxB,GAEvB,OAAOr+C,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,YAAF,OAAcoJ,GACzBA,IAAAA,GACCkF,IAEL+B,eAhIO,WAiIL,IAAM/B,EAAO,GAQb,OANIzqV,KAAKo8U,OAAOyR,QACdpD,EAAKzkV,KAAKhG,KAAKo8U,OAAOyR,SACb7tV,KAAKorV,aACdX,EAAKzkV,KAAKhG,KAAK+sV,QAAQ,YAGlB/sV,KAAK4tV,QAAQ,UAAW,QAASnD,IAE1CiC,cA3IO,WA4IL,IAAMjC,EAAO,GAYb,OANIzqV,KAAKo8U,OAAOj/R,OACdstS,EAAKzkV,KAAKhG,KAAKo8U,OAAOj/R,QACbn9C,KAAKgrV,YACdP,EAAKzkV,KAAKhG,KAAK+sV,QAAQ,WAGlB/sV,KAAK4tV,QAAQ,SAAU,QAASnD,IAEzC2C,QA1JO,SA0JE1oV,GACP1E,KAAKggV,MAAM,QAASt7U,IAEtB4oV,YA7JO,SA6JM5oV,GACX1E,KAAKqrV,cAAe,EACpBrrV,KAAKggV,MAAM,YAAat7U,IAE1B6oV,UAjKO,SAiKI7oV,GACT1E,KAAKqrV,cAAe,EACpBrrV,KAAKggV,MAAM,UAAWt7U,KAI1BskJ,OAtRiD,SAsRzCxtC,GACN,OAAOA,EAAE,MAAOx7G,KAAKwgV,aAAaxgV,KAAKktV,gBAAiB,CACtD/Q,YAAa,UACbE,MAAOr8U,KAAK68U,UACV78U,KAAKigV,iBC3Tb,K,+OCmBa6N,GAAgBjS,EAAAA,EAAAA,GAC3BkS,EAAAA,EACAC,EAAAA,EACAlS,EAAAA,GACA3uL,OAAO,CACP95I,KAAM,kBAENoiH,MAAO,CACLooN,YAAa,CACX3wT,KAAMvc,OACN4rL,QAAS,kBAEX0xJ,UAAW32P,QACXz3B,IAAK,CACH3yC,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,MAEX2xJ,SAAU52P,QACV0kE,IAAK,CACH9uI,KAAMvc,OACN4rL,QAAS,QAIbnsL,KApBO,WAqBL,MAAO,CAIL+9U,uBAAkCjoT,IAAflmC,KAAKsE,MACpBtE,KAAKsE,MACLtE,KAAKkuV,SAAW,QAAKhoT,EACzB8oE,MAAO,KAIX8+I,SAAU,CACR+uF,QADQ,WAEN,OAAO,QACL,gBAAgB,GACb78U,KAAKu8U,eAGZ6R,cAPQ,WAQN,OAAQpuV,KAAKquV,cAAgBruV,KAAKgvG,MAAM9zF,QAAQlb,KAAKquV,gBAAmB,GAE1EA,aAVQ,WAWN,IAAIruV,KAAKkuV,SAET,OAAOluV,KAAKsuV,cAAc,IAE5BA,cAfQ,WAeK,WACX,OAAOtuV,KAAKgvG,MAAM9yF,QAAO,SAACkN,EAAMkpB,GAC9B,OAAO,EAAKi8S,aAAa,EAAKx7G,SAAS3pN,EAAMkpB,QAGjDk8S,eApBQ,WAqBN,OAA0B,MAAtBxuV,KAAKmsV,cAA8B,GAEhCzsV,MAAM21E,QAAQr1E,KAAKmsV,eACtBnsV,KAAKmsV,cACL,CAACnsV,KAAKmsV,gBAEZoC,aA3BQ,WA2BI,WACV,IAAKvuV,KAAKkuV,SACR,OAAQ,SAAAtoV,GAAD,OAAY,EAAK6oV,gBAAgB,EAAKtC,cAAevmV,IAG9D,IAAMumV,EAAgBnsV,KAAKmsV,cAC3B,OAAIzsV,MAAM21E,QAAQ82Q,GACR,SAAAvmV,GAAD,OAAYumV,EAAc74T,MAAK,SAAAo7T,GAAM,OAAI,EAAKD,gBAAgBC,EAAQ9oV,OAGxE,kBAAM,KAIjB29U,MAAO,CACL4I,cAAe,mBACfn9O,MAAO,oBAGTywO,QA9EO,WA+EDz/U,KAAKkuV,WAAaxuV,MAAM21E,QAAQr1E,KAAKmsV,iBACvC5B,EAAAA,EAAAA,IAAY,oEAAqEvqV,OAIrFk7E,QAAS,CAEPyzQ,QAFO,WAGL,MAAO,CACLtS,MAAOr8U,KAAK68U,UAGhB9pG,SAPO,SAOG3pN,EAAyBloB,GACjC,YAAsBglC,IAAf9c,EAAK9kB,MACRpD,EACAkoB,EAAK9kB,OAEX8oV,QAZO,SAYEhkU,GACPppB,KAAK4uV,oBACH5uV,KAAK+yO,SAAS3pN,EAAMppB,KAAKgvG,MAAM9zF,QAAQkO,MAG3C0mN,SAjBO,SAiBG1mN,GAAuB,WACzBkpB,EAAQtyC,KAAKgvG,MAAMhpG,KAAKojB,GAAQ,EAEtCA,EAAKylU,IAAI,UAAU,kBAAM,EAAKzB,QAAQhkU,MAIlCppB,KAAKiuV,YAAcjuV,KAAKwuV,eAAentV,QACzCrB,KAAK8uV,kBAGP9uV,KAAK+uV,WAAW3lU,EAAMkpB,IAExB08S,WA9BO,SA8BK5lU,GACV,IAAIppB,KAAKmkV,aAAT,CAEA,IAAM7xS,EAAQtyC,KAAKgvG,MAAM9zF,QAAQkO,GAC3B9kB,EAAQtE,KAAK+yO,SAAS3pN,EAAMkpB,GAElCtyC,KAAKgvG,MAAMwB,OAAOl+D,EAAO,GAEzB,IAAM28S,EAAajvV,KAAKwuV,eAAetzU,QAAQ5W,GAG/C,KAAI2qV,EAAa,GAAjB,CAGA,IAAKjvV,KAAKiuV,UACR,OAAOjuV,KAAK4uV,oBAAoBtqV,GAI9BtE,KAAKkuV,UAAYxuV,MAAM21E,QAAQr1E,KAAKmsV,eACtCnsV,KAAKmsV,cAAgBnsV,KAAKmsV,cAAcjwU,QAAO,SAAAtW,GAAC,OAAIA,IAAMtB,KAE1DtE,KAAKmsV,mBAAgBjmT,EAMlBlmC,KAAKsuV,cAAcjtV,QACtBrB,KAAK8uV,iBAAgB,MAGzBC,WA9DO,SA8DK3lU,EAAyBkpB,GACnC,IAAMhuC,EAAQtE,KAAK+yO,SAAS3pN,EAAMkpB,GAElClpB,EAAKq4T,SAAWzhV,KAAKuuV,aAAajqV,IAGpC4qV,iBApEO,WAoES,WACdlvV,KAAK8jV,WAAU,WACb,GAAI,EAAKmK,YACN,EAAKK,cAAcjtV,OAEpB,OAAO,EAAKytV,kBAMd,EAAK9/O,MAAMlsG,QAAQ,EAAKisV,gBAG5BH,oBAlFO,SAkFctqV,GACnBtE,KAAKkuV,SACDluV,KAAKmvV,eAAe7qV,GACpBtE,KAAKovV,aAAa9qV,IAExBwqV,gBAvFO,SAuFUtxL,GACf,GAAKx9J,KAAKgvG,MAAM3tG,OAAhB,CAEA,IAAM2tG,EAAQhvG,KAAKgvG,MAAMziE,QAErBixH,GAAMxuD,EAAM+xB,UAEhB,IAAM33G,EAAO4lF,EAAM1mF,MAAK,SAAAc,GAAI,OAAKA,EAAKu1T,YAItC,GAAKv1T,EAAL,CAEA,IAAMkpB,EAAQtyC,KAAKgvG,MAAM9zF,QAAQkO,GAEjCppB,KAAK4uV,oBACH5uV,KAAK+yO,SAAS3pN,EAAMkpB,OAGxB68S,eA1GO,SA0GS7qV,GACd,IAAMo4E,EAAeh9E,MAAM21E,QAAQr1E,KAAKmsV,eACpCnsV,KAAKmsV,cACL,GACEA,EAAgBzvQ,EAAanwC,QAC7B+F,EAAQ65S,EAAc9yL,WAAU,SAAAn6H,GAAG,OAAIA,IAAQ56B,KAGnDtE,KAAKiuV,WAEL37S,GAAS,GAET65S,EAAc9qV,OAAS,EAAI,GAKf,MAAZrB,KAAK6/D,KAELvtB,EAAQ,GAER65S,EAAc9qV,OAAS,EAAIrB,KAAK6/D,MAGlCvtB,GAAS,EACL65S,EAAc37O,OAAOl+D,EAAO,GAC5B65S,EAAcnmV,KAAK1B,GAEvBtE,KAAKmsV,cAAgBA,IAEvBiD,aAxIO,SAwIO9qV,GACZ,IAAMw1L,EAASx1L,IAAUtE,KAAKmsV,cAE1BnsV,KAAKiuV,WAAan0J,IAEtB95L,KAAKmsV,cAAgBryJ,OAAS5zJ,EAAY5hC,KAI9C0kJ,OArOO,SAqOCxtC,GACN,OAAOA,EAAEx7G,KAAKg8J,IAAKh8J,KAAK2uV,UAAW3uV,KAAKo8U,OAAL,eAIvC,QAAe0R,EAAc3gM,OAAO,CAClC95I,KAAM,eAENg8U,QAHkC,WAIhC,MAAO,CACLC,UAAWtvV,U,iHC1PjB,SAAe67U,EAAAA,EAAAA,GAAOC,EAAAA,GAAW3uL,OAAO,CACtC95I,KAAM,UAENm2I,YAAY,EAEZ/zB,MAAO,CACLipN,SAAUpnP,QACVs1H,MAAO,CACL1/L,KAAMvc,OACN4rL,QAAS,WAEXoiJ,SAAUrnP,QACVm2P,QAASn2P,QACTuqG,IAAKlxL,OACLivD,KAAM,CACJ1yC,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,GAEXrsF,MAAO,CACLhjF,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,QAEXj4L,MAAOgzF,SAGT0xD,OAzBsC,SAyB9BxtC,EAAGnI,GACT,IAAQkB,EAA+BlB,EAA/BkB,SAAUu1B,EAAqBz2B,EAArBy2B,UAAWrU,EAAUpiB,EAAVoiB,MACvBrlH,EAAO,CACX+rU,YAAa,UACbE,OAAA,QACE,kBAAmB5mN,EAAMnxH,MACzB,uBAAwBmxH,EAAMkpN,WAC3B4Q,EAAAA,EAAAA,GAAuBl8O,IAE5BmpO,MAAO,CACL36I,IAAKpsE,EAAK,OACV,eAAgBA,EAAK,QAEvBynN,GAAIpzM,EACJt/D,MAAO,CACL5K,MAAMm9Q,EAAAA,EAAAA,IAActnN,EAAM71D,MAC1BswC,OAAO6sO,EAAAA,EAAAA,IAActnN,EAAMvlB,OAC3BxlC,SAAU+qD,EAAMipN,SAAW,WAAa,YAE1C6G,IAAK,SAGP,OAAO/pO,EAAE,QAASkhO,EAAAA,EAAAA,QAAAA,QAAAA,aAAuCjnN,EAAMg4N,SAAWh4N,EAAMm3F,MAAOx8M,GAAOmkG,MC3DlG,K,uHCeA,QAAegpO,EAAAA,EAAAA,SAAyBpwL,OAAO,CAC7C95I,KAAM,SAENg8U,QAH6C,WAI3C,MAAO,CACLG,UAAU,EACV/mL,KAAMzoK,OAIVyvV,OAAQ,CACNC,SAAU,CACRnzJ,SAAS,GAEXozJ,QAAS,CACPpzJ,SAAS,IAIb9mE,MAAO,CACLkxN,MAAOrvP,QACPqnP,SAAUrnP,QACVs4P,OAAQt4P,QACRmlF,KAAMnlF,QACNiB,IAAKjB,QACLinP,QAASjnP,QACTu4P,UAAWv4P,QACXw4P,UAAWx4P,QACXy4P,QAASz4P,SAGXlnF,KAAM,iBAAO,CACXilK,OAAQ,KAGVy4E,SAAU,CACR+uF,QADQ,WAEN,OAAO,kBACFU,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAqCv9U,OAD1C,IAEE,gBAAiBA,KAAK2mV,MACtB,mBAAoB3mV,KAAK2+U,SACzB,eAAgB3+U,KAAKy8K,KACrB,cAAez8K,KAAKu4F,IACpB,kBAAmBv4F,KAAKu+U,QACxB,oBAAqBv+U,KAAK6vV,UAC1B,mBAAoB7vV,KAAK+vV,QACzB,qBAAsB/vV,KAAK8vV,cAKjC50Q,QAAS,CACP40J,SADO,SACGtuO,GACRxB,KAAKq1K,OAAOrvK,KAAKxE,IAEnBwtV,WAJO,SAIKxtV,GACV,IAAM8wC,EAAQtyC,KAAKq1K,OAAOhc,WAAU,SAAAl0J,GAAC,OAAIA,EAAE0mV,OAASrqV,EAAQqqV,QAExDv5S,GAAS,GAAGtyC,KAAKq1K,OAAO7kE,OAAOl+D,EAAO,IAE5C09S,UATO,SASIh8T,GACT,IAAIh0B,KAAK4vV,OAAT,CADoB,gBAGA5vV,KAAKq1K,QAHL,IAGpB,IAAK,EAAL,qBAAiC,KAAtBF,EAAsB,QAC/BA,EAAMzH,OAAO15I,IAJK,kCASxBg1H,OArE6C,SAqErCxtC,GACN,IAAMprG,EAAO,CACX+rU,YAAa,SACbE,MAAOr8U,KAAK68U,QACZryQ,MAAOxqE,KAAK+qS,OACZyxC,OAAO,QACL4I,KAAMplV,KAAK2vV,SAAW3vV,KAAK0vV,cAAWxpT,EAAY,QAC/ClmC,KAAKynV,SAIZ,OAAOjsO,EAAEx7G,KAAKg8J,IAAKh8J,KAAKo9U,mBAAmBp9U,KAAK4sN,MAAOx8M,GAAO,CAACpQ,KAAKo8U,OAAL,iB,4JC3E7DkB,GAAazB,EAAAA,EAAAA,GACjBa,EAAAA,EACAc,EAAAA,EACA1B,EAAAA,GACA6B,EAAAA,EAAAA,GAAiB,kBACjBC,EAAAA,EAAAA,GAAkB,eAYpB,QAAeN,EAAWnwL,SAAkBA,OAAO,CACjD95I,KAAM,cAEN0uU,WAAY,CACVkO,OAAAA,EAAAA,GAGFR,OAAQ,CACNS,UAAW,CACT3zJ,SAAS,GAEXizJ,SAAU,CACRjzJ,SAAS,GAEXmzJ,SAAU,CACRnzJ,SAAS,GAEXozJ,QAAS,CACPpzJ,SAAS,IAIbwuJ,cAAc,EAEdt1N,MAAO,CACLooN,YAAa,CACX3wT,KAAMvc,OADK,mBAGT,OAAK3Q,KAAKmwV,cAEHnwV,KAAKmwV,cAActS,YAFM,KAKpC8I,MAAOrvP,QACP84P,SAAU94P,QACVmxF,KAAMnxF,QACN+4P,WAAY,CACVnjU,KAAMoqE,SAER0kE,IAAK,CACH9uI,KAAMvc,OACN4rL,QAAS,OAEXuzJ,UAAWx4P,QACXy4P,QAASz4P,QACThzF,MAAO,MAGT8L,KAAM,iBAAO,CACXquU,WAAY,wBAGd3wF,SAAU,CACR+uF,QADQ,WAEN,OAAO,gBACL,eAAe,GACZW,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAuCx9U,OAF5C,IAGE,qBAAsBA,KAAK2mV,MAC3B,wBAAyB3mV,KAAK2+U,SAC9B,oBAAqB3+U,KAAK6gV,cAAgB7gV,KAAKowV,SAC/C,0BAA2BpwV,KAAKqwV,WAChC,0BAA2BrwV,KAAK8vV,UAChC,wBAAyB9vV,KAAK+vV,SAC3B/vV,KAAKu8U,eAGZsE,YAdQ,WAeN,OAAOvpP,QACLkmP,EAAAA,EAAAA,QAAAA,SAAAA,YAAAA,KAA2Cx9U,OAC3CA,KAAKmwV,iBAKX1Q,QA1EiD,WA4E3Cz/U,KAAK2/U,OAAO7/U,eAAe,YAC7BqnI,EAAAA,EAAAA,IAAQ,SAAUnnI,OAItBk7E,QAAS,CACP8zJ,MADO,SACAtqO,GACDA,EAAEm7U,QAAQ7/U,KAAK8/U,IAAIC,OAEvB//U,KAAKggV,MAAM,QAASt7U,GAEpB1E,KAAK8rG,IAAM9rG,KAAK0tK,UAElB4iL,SARO,WASL,IAAM9T,GAAK,QACT,kBAAiBx8U,KAAK2+U,eAAkBz4S,EACxC6mM,SAAU/sO,KAAK6gV,cAAgB7gV,KAAK2+U,SAAW,GAAK,GACjD3+U,KAAK2/U,QAiBV,OAdI3/U,KAAK2/U,OAAO7/U,eAAe,SAEpBE,KAAK2vV,UAEL3vV,KAAKkwV,WACd1T,EAAM4I,KAAO,SACb5I,EAAM,iBAAmB7rU,OAAO3Q,KAAKyhV,WAC5BzhV,KAAK0vV,UACdlT,EAAM4I,KAAOplV,KAAK6gV,YAAc,gBAAa36S,EAC7Cs2S,EAAMv2S,GAAKu2S,EAAMv2S,IAAN,oBAAyBjmC,KAAK6rV,OAChC7rV,KAAKwvV,WACdhT,EAAM4I,KAAO,aAGR5I,GAET9uK,OA/BO,WAgCD1tK,KAAK8rG,SAA0B5lE,IAApBlmC,KAAKuwV,aAClBvwV,KAAKyhV,UAAYzhV,KAAKyhV,UAExBzhV,KAAKggV,MAAM,YAIfh3L,OAxHiD,SAwHzCxtC,GAAC,WACP,EAAoBx7G,KAAKsgV,oBAAnBtkL,EAAN,EAAMA,IAAK5rJ,EAAX,EAAWA,KAEXA,EAAKosU,OAAL,kBACKpsU,EAAKosU,OACLx8U,KAAKswV,YAEVlgV,EAAKpQ,KAAK8rG,GAAK,WAAa,OAA5B,kBACK17F,EAAKpQ,KAAK8rG,GAAK,WAAa,OADjC,IAEEw5O,QAAU,SAAA5gV,GAEJA,EAAEmgV,UAAYC,EAAAA,GAAAA,OAAgB,EAAK91G,MAAMtqO,GAE7C,EAAKs7U,MAAM,UAAWt7U,MAItB1E,KAAKowV,WAAUp0L,EAAM,OACrBh8J,KAAKowV,UAAYpwV,KAAK8rG,KACxB17F,EAAK8sU,GAAK9sU,EAAKk4U,gBACRl4U,EAAKk4U,UAGd,IAAM/zO,EAAWv0G,KAAKsjV,aAAL,WACbtjV,KAAKsjV,aAAL,WAA0B,CAC1B9kH,OAAQx+N,KAAKyhV,SACb/zK,OAAQ1tK,KAAK0tK,SAEb1tK,KAAKo8U,OAAL,WAEJ,OAAO5gO,EAAEwgD,EAAKh8J,KAAKyhV,SAAWzhV,KAAKwgV,aAAaxgV,KAAK4sN,MAAOx8M,GAAQA,EAAMmkG,O,+EC1L9E,QAAe8xO,EAAAA,EAAAA,OAAW,CACxBhzU,KAAM,qBAENm2I,YAAY,EAEZR,OALwB,SAKhBxtC,EALgB,GAKU,IAArBprG,EAAqB,EAArBA,KAAqB,IAAfmkG,SAAAA,OAAe,MAAJ,GAAI,EAChCnkG,EAAK+rU,YAAc/rU,EAAK+rU,YAAL,8BAA0C/rU,EAAK+rU,aAAgB,sBAClF,IAAMqU,EAAgBj8O,EAASr4F,QAAO,SAAAu0U,GACpC,OAA2B,IAApBA,EAAMC,WAAsC,MAAfD,EAAMx9P,QAI5C,OAFIu9P,EAAcnvV,OAAS,IAAG+O,EAAK+rU,aAAe,+BAE3C3gO,EAAE,MAAOprG,EAAMmkG,O,iFCb1B,QAAeo8O,EAAf,ECIA,EAAeA,EAAAA,OAAe,CAC5Bt9U,KAAM,qBAENoiH,MAAO,CACLm7N,WAAYt5P,QACZz5D,KAAM,CACJ3Q,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,KAIbuxD,SAAU,CACR+uF,QADQ,WAEN,OAAO,gBACL,kCAAmC78U,KAAK4wV,YACrCD,EAAAA,QAAAA,SAAAA,QAAAA,KAAsC3wV,OAF3C,IAGE,iBAAkBA,KAAKw+U,MAAQx+U,KAAK4wV,eAK1C5nM,OArB4B,SAqBpBxtC,GACN,IAAMwtC,EAAS2nM,EAAAA,QAAAA,OAAAA,KAA4B3wV,KAAMw7G,GAKjD,OAHAwtC,EAAO54I,KAAO44I,EAAO54I,MAAQ,GAC7B44I,EAAO54I,KAAK+rU,aAAe,uBAEpBnzL,M,4FCtBX,SAAe6yL,EAAAA,EAAAA,GACbiS,EAAAA,EACApR,EAAAA,GACAvvL,OAAO,CACP95I,KAAM,oBAENg8U,QAHO,WAIL,MAAO,CACLa,WAAW,EACXC,cAAenwV,OAInB8tP,SAAU,CACR+uF,QADQ,WAEN,OAAO,kBACFiR,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAA4C9tV,OADjD,IAEE,qBAAqB,MAK3Bk7E,QAAS,CACPyzQ,QADO,WAEL,OAAO3uV,KAAKwgV,aAAaxgV,KAAK4sN,OAAvB,kBACFkhI,EAAAA,EAAAA,QAAAA,QAAAA,QAAAA,KAA2C9tV,OADzC,IAELw8U,MAAO,CACL4I,KAAM,mB,sECnChB,QAAeiB,EAAAA,EAAAA,OAAW,CACxBhzU,KAAM,mBAENm2I,YAAY,EAEZR,OALwB,SAKhBxtC,EALgB,GAKK,IAAhBprG,EAAgB,EAAhBA,KAAMmkG,EAAU,EAAVA,SAGjB,OAFAnkG,EAAK+rU,YAAe,4BAAqB/rU,EAAK+rU,aAAe,IAAMzgU,OAE5D8/F,EAAE,MAAOprG,EAAMmkG,O,6RCkBpB+oO,GAAazB,EAAAA,EAAAA,GACjB6K,EAAAA,EACAmK,EAAAA,EACAnU,EAAAA,GACAoU,EAAAA,EAAAA,GAAkB,QAClBC,EAAAA,GAaF,QAAezT,EAAWnwL,SAAkBA,OAAO,CACjD95I,KAAM,eAEN0uU,WAAY,CAAExC,OAAAA,EAAAA,GAEd9pN,MAAO,CACLooN,YAAa,CACX3wT,KAAMvc,OACN4rL,QAAS,IAEXyuJ,WAAY,CACV99T,KAAMvc,OACN4rL,QAAS,WAEXqwB,MAAO,CACL1/L,KAAMvc,OACN4rL,QAAS,WAEXoiJ,SAAUrnP,QACV69E,MAAO,CAACxkK,OAAQ4L,QAChBy0U,SAAU15P,QACV8zP,YAAaz6U,OACb4uU,OAAQ,CACNryT,KAAM,CAACoqE,QAAS/3F,QAChBg9L,SAAS,GAEX00J,SAAU35P,SAGZw2J,SAAU,CACR+uF,QADQ,WAEN,MAAO,CACL,uBAAwB78U,KAAKyhV,SAC7B,yBAA0BzhV,KAAK2+U,SAC/B,0BAA2B3+U,KAAKgxV,SAChC,0BAA2BhxV,KAAKixV,YAKtC1N,MAAO,CACL9B,SADK,SACKviT,IAEHl/B,KAAKixV,UAAY/xT,GACpBl/B,KAAKyoK,MAAQzoK,KAAKyoK,KAAKunL,UAAUhwV,KAAK6rV,OAG1CqF,OAAQ,iBAGVzR,QAlDiD,WAmD/Cz/U,KAAKyoK,MAAQzoK,KAAKyoK,KAAKqnE,SAAS9vO,MAE5BA,KAAKm1K,OACPn1K,KAAKkxV,QACS,MAAdlxV,KAAKsE,QAELtE,KAAKyhV,SAAWzhV,KAAKmxV,WAAWnxV,KAAKkxV,OAAO9jQ,QAIhD42P,cA7DiD,WA8D/ChkV,KAAKyoK,MAAQzoK,KAAKyoK,KAAKumL,WAAWhvV,OAGpCk7E,QAAS,CACP8zJ,MADO,SACAtqO,GAAQ,WACT1E,KAAK2+U,WAET3+U,KAAK+jV,UAAW,EAEhB/jV,KAAKggV,MAAM,QAASt7U,GACpB1E,KAAK8jV,WAAU,kBAAO,EAAKrC,UAAY,EAAKA,cAE9CsL,QATO,SASE7O,GACP,OAAOl+U,KAAKkgV,eAAewB,EAAAA,EAAOxD,IAEpCkT,cAZO,WAaL,IAAMlT,GAAQl+U,KAAKixV,UAAWjxV,KAAKgrV,WAEnC,OAAK9M,GAASl+U,KAAKo8U,OAAO4O,WAEnBhrV,KAAKkgV,eAAemR,EAAAA,EAAe,CACxClV,YAAa,qCACZ,CACDn8U,KAAKo8U,OAAO4O,YAAchrV,KAAK+sV,QAAQ7O,KALI,MAQ/CoT,UAvBO,WAwBL,OAAOtxV,KAAKkgV,eAAeqR,EAAAA,EAAW,CACpCpV,YAAa,uBACbK,MAAO,CACL,gBAAiB7rU,OAAO3Q,KAAKyhV,UAC7B2D,KAAM,UAER/I,OAAA,UACGr8U,KAAK69U,YAAc79U,KAAKyhV,UAE3BhsN,MAAO,CACL86N,WAAYvwV,KAAKyhV,UAEnBM,WAAY,CAAC,CACX1uU,KAAM,SACN/O,MAAOtE,KAAKu/U,SAEdrC,IAAI,kBACCl9U,KAAK8mV,YADR,IAEA93G,MAAOhvO,KAAKgvO,SAEb,CACDhvO,KAAKwxV,iBACLxxV,KAAKo8U,OAAOiH,UACZrjV,KAAKoxV,mBAGTK,SAlDO,WAkDC,WACN,OAAOzxV,KAAKklV,iBAAgB,iBAAM,CAChC,EAAKhF,eAAe,MAAO,CACzB/D,YAAa,sBACb4F,WAAY,CAAC,CACX1uU,KAAM,OACN/O,MAAO,EAAKm9U,aAEbiJ,EAAAA,EAAAA,IAAQ,SAGf8G,eA7DO,WA8DL,IAAMtT,EAAOl+U,KAAKixV,UAAgC,MAApBjxV,KAAKorV,YAC/B,YACAprV,KAAKorV,YAET,OAAKlN,GAASl+U,KAAKo8U,OAAOgP,YAEnBprV,KAAKkgV,eAAemR,EAAAA,EAAe,CACxClV,YAAa,sCACZ,CACDn8U,KAAKo8U,OAAOgP,aAAeprV,KAAK+sV,QAAQ7O,KALI,MAQhDwT,cA1EO,SA0EQ5lP,GAEb,GAAK9rG,KAAKm1K,MAAV,CAEA,IAAMssK,EAAWzhV,KAAKmxV,WAAWrlP,EAAG1e,MAGhCq0P,GAAYzhV,KAAKyhV,WAAaA,GAChCzhV,KAAKyoK,MAAQzoK,KAAKyoK,KAAKunL,UAAUhwV,KAAK6rV,MAGxC7rV,KAAKyhV,SAAWA,IAElB/zK,OAvFO,SAuFC15I,GAAW,WACXytT,EAAWzhV,KAAK6rV,OAAS73T,EAE3BytT,IAAUzhV,KAAK+jV,UAAW,GAC9B/jV,KAAK8jV,WAAU,kBAAO,EAAKrC,SAAWA,MAExC0P,WA7FO,SA6FKrlP,GACV,OAAgC,OAAzBA,EAAGr8D,MAAMzvC,KAAKm1K,SAIzBnsB,OAnKiD,SAmKzCxtC,GACN,OAAOA,EAAE,MAAOx7G,KAAKwgV,aAAaxgV,KAAKyhV,UAAYzhV,KAAK4sN,MAAO,CAC7DuvH,YAAa,eACbE,MAAOr8U,KAAK68U,UACV,CACF78U,KAAKsxV,YACL91O,EAAEm2O,EAAAA,GAAmB3xV,KAAKyxV,iB,qCC/MnBG,GAAsBzL,EAAAA,EAAAA,IAAuB,2BAA4B,QACzE0L,GAAmB1L,EAAAA,EAAAA,IAAuB,uBAAwB,OAClE2L,GAAiB3L,EAAAA,EAAAA,IAAuB,qBAAsB,OAC9D4L,GAAoB5L,EAAAA,EAAAA,IAAuB,wBAAyB,OAc7E6L,EAAAA,EAEAT,EAAAA,EACAU,EAAAA,EAEAC,EAAAA,EAEAC,EAAAA,EACAd,EAAAA,G,6DCzBJ,QAAee,EAAAA,EAAAA,OAAmB,CAChC/+U,KAAM,SAENoiH,MAAO,CACLumC,IAAK,CACH9uI,KAAMvc,OACN4rL,QAAS,SAIbuxD,SAAU,CACRi9C,OADQ,WAEN,MAEI/qS,KAAKk8U,SAASjhS,YADhB4+R,EADF,EACEA,IAAKn6Q,EADP,EACOA,IAAKwwC,EADZ,EACYA,MAAOmiP,EADnB,EACmBA,OAAQC,EAD3B,EAC2BA,YAAazlI,EADxC,EACwCA,OAAQjtJ,EADhD,EACgDA,KAGhD,MAAO,CACL2yR,WAAY,GAAF,OAAK7yR,EAAMm6Q,EAAX,MACV2Y,aAAc,GAAF,OAAKtiP,EAAL,MACZuiP,cAAe,GAAF,OAAKJ,EAASC,EAAczlI,EAA5B,MACb6lI,YAAa,GAAF,OAAK9yR,EAAL,SAKjBopF,OAzBgC,SAyBxBxtC,GACN,IAAMprG,EAAO,CACX+rU,YAAa,SACb3xQ,MAAOxqE,KAAK+qS,OACZw6C,IAAK,QAGP,OAAO/pO,EAAEx7G,KAAKg8J,IAAK5rJ,EAAM,CACvBorG,EACE,MACA,CAAE2gO,YAAa,gBACfn8U,KAAKo8U,OAAL,kB,8VCfFkB,GAAazB,EAAAA,EAAAA,GACjBmG,EAAAA,EACA2Q,EAAAA,EACAxQ,EAAAA,EACAvF,EAAAA,EACAd,EAAAA,EACA8W,EAAAA,GAIF,QAAetV,EAAWnwL,OAAO,CAC/B95I,KAAM,SAEN0uU,WAAY,CACVO,aAAAA,EAAAA,EACAuQ,OAAAA,EAAAA,GAGFxD,QAR+B,WAS7B,MAAO,CACLK,UAAU,EAEV3rH,MAAO/jO,KAAK+jO,QAIhBtuG,MAAO,CACLq9N,KAAMx7P,QACNy7P,aAAc,CACZ7lU,KAAMoqE,QACNilG,SAAS,GAEXy2J,oBAAqB,CACnB9lU,KAAMoqE,QACNilG,SAAS,GAEXoiJ,SAAUrnP,QACV27P,YAAa37P,QACb47P,UAAW,CACThmU,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,QAEX42J,QAAS77P,QACT87P,QAAS97P,QACT+7P,YAAa/7P,QACb94C,OAAQ,CACNtxB,KAAMvc,OACN4rL,QAAS,YAEXi9I,WAAY,CACVtsT,KAAM,CAACoqE,QAAS3mF,QAChB4rL,QAAS,sBAIbnsL,KA7C+B,WA8C7B,MAAO,CACLkjV,kBAAmB,EACnBC,cAAe,EACfC,gBAAgB,EAChBC,WAAY,EACZC,cAAe,EACftF,cAAe,KACfuF,MAAO,KAIX7lG,SAAU,CACR8lG,WADQ,WAEN,OAAO5zV,KAAK2zV,MAAM3zV,KAAKyzV,YAEzBI,eAJQ,WAKN,IAAMC,EAAY7kV,KAAK4wD,IAAI7/D,KAAKg4U,WAAWx2U,QAAQ+9D,MAAO45D,WAAWn5H,KAAK+zV,qBAE1E,OAAK/zV,KAAK8yV,MAEH/V,EAAAA,EAAAA,IAAc/8U,KAAKg0V,cAAch0V,KAAKi0V,eAAgBH,KAAe,IAFrD9zV,KAAKk0V,SAASJ,IAAc,KAIrDK,oBAXQ,WAYN,IAAM10R,EAASz/D,KAAK8yV,KAChB,SACA/V,EAAAA,EAAAA,IAAc/8U,KAAKkzV,WAEvB,OAAOzzR,GAAU,KAEnB20R,mBAlBQ,WAmBN,OAAOrX,EAAAA,EAAAA,IAAc/8U,KAAKwiV,WAAa,KAEzCuR,mBArBQ,WAsBN,GAAI/zV,KAAKg9U,SACP,OAAOD,EAAAA,EAAAA,IAAc/8U,KAAKg9U,WAAa,IAGzC,IAAMA,EAAW/tU,KAAKs2C,IACpBvlD,KAAKg4U,WAAWqL,UAAU9jR,MAC1Bn3B,OAAOpoC,KAAKq0V,aACXr0V,KAAK8yV,KAAO,GAAK,GAClB7jV,KAAK4wD,IAAI7/D,KAAKs0V,UAAY,GAAI,IAG1BF,EAAqBv3Q,MAAM53B,SAASjlD,KAAKo0V,qBAC3CpX,EACA/3R,SAASjlD,KAAKo0V,oBAElB,OAAOrX,EAAAA,EAAAA,IAAc9tU,KAAKs2C,IACxB6uS,EACApX,KACI,KAERuX,cA1CQ,WA2CN,IAAM70R,EAAO1/D,KAAK8yV,MAEd/V,EAAAA,EAAAA,IAAc/8U,KAAKw0V,cAAcx0V,KAAKszV,oBADtCtzV,KAAKy0V,UAGT,OAAO/0R,GAAO,KAEhBg1R,kBAjDQ,WAkDN,OAAOp9P,QAAQt3F,KAAK2zV,MAAMrrU,MAAK,SAAAk2T,GAAI,OAAIA,EAAKmW,UAAY,OAE1D5pD,OApDQ,WAqDN,MAAO,CACLmoD,UAAWlzV,KAAKm0V,oBAChBnX,SAAUh9U,KAAK+zV,mBACfvR,SAAUxiV,KAAKo0V,mBACf10R,IAAK1/D,KAAKu0V,cACV30R,KAAM5/D,KAAK6zV,eACXp6E,gBAAiBz5Q,KAAKw+C,OACtBuuK,OAAQ/sN,KAAK+sN,QAAU/sN,KAAKskV,gBAKlCf,MAAO,CACL9B,SADK,SACKviT,GACHA,IAAKl/B,KAAKyzV,WAAa,IAE9BmB,gBAJK,SAIY11T,GACfl/B,KAAKwzV,eAAiBt0T,GAExBu0T,UAPK,SAOMhvV,EAAMo5J,GACf,GAAIp5J,KAAQzE,KAAK2zV,MAAO,CACtB,IAAMnV,EAAOx+U,KAAK2zV,MAAMlvV,GACxB+5U,EAAKr5K,UAAUhoI,IAAI,4BACnB,IAAM03T,EAAY70V,KAAKokV,MAAM5iV,QAAQqzV,UAC/BC,EAAgB90V,KAAKokV,MAAM5iV,QAAQ89D,aAErCu1R,EAAYrW,EAAKuW,UAAY,GAC/BC,EAAAA,EAAAA,GAAKxW,EAAKuW,UAAYvW,EAAKl/Q,aAAc,CACvC21R,WAAW,EACX3mR,SAAU,IACVokE,UAAW1yI,KAAKokV,MAAM5iV,UAEfqzV,EAAYC,EAAgBtW,EAAKuW,UAAYvW,EAAKl/Q,aAAe,IAC1E01R,EAAAA,EAAAA,GAAKxW,EAAKuW,UAAYD,EAAoC,EAApBtW,EAAKl/Q,aAAkB,CAC3D21R,WAAW,EACX3mR,SAAU,IACVokE,UAAW1yI,KAAKokV,MAAM5iV,UAK5Bq8J,KAAQ79J,KAAK2zV,OACX3zV,KAAK2zV,MAAM91L,GAAMsH,UAAUhhC,OAAO,8BAIxCs7M,QA5J+B,WA8JzBz/U,KAAK2/U,OAAO7/U,eAAe,gBAC7BqnI,EAAAA,EAAAA,IAAQ,aAAcnnI,OAI1BgqV,QAnK+B,WAoK7BhqV,KAAKyhV,UAAYzhV,KAAKk1V,gBAGxBh6Q,QAAS,CACPqxM,SADO,WACC,WAGNvsR,KAAKm1V,mBAELzoE,uBAAsB,WAEpB,EAAK0oE,kBAAkBtwV,MAAK,WACtB,EAAKs/U,MAAM5iV,UACb,EAAK8xV,kBAAoB,EAAK+B,cAC9B,EAAKvC,OAAS,EAAK1O,MAAM5iV,QAAQqzV,UAAY,EAAKS,8BAK1DA,mBAhBO,WAiBL,IAAMxV,EAAM9/U,KAAKokV,MAAM5iV,QACjBoyV,EAAa9T,EAAIhG,cAAc,wBAC/Byb,EAAezV,EAAI0V,aAAe1V,EAAIpd,aAE5C,OAAOkxB,EACH3kV,KAAKs2C,IAAIgwS,EAActmV,KAAK4wD,IAAI,EAAG+zR,EAAWmB,UAAYjV,EAAIpd,aAAe,EAAIkxB,EAAWlxB,aAAe,IAC3God,EAAI+U,WAEVZ,aAzBO,WA0BL,OAAOhvS,SAASjlD,KAAKg4U,WAAWqL,UAAUzjR,KAA4B,EAArB5/D,KAAKuzV,gBAExD8B,YA5BO,WA6BL,IAAMvV,EAAM9/U,KAAKokV,MAAM5iV,QACjBoyV,EAAa9T,EAAIhG,cAAc,wBAMrC,GAJK8Z,IACH5zV,KAAKouV,cAAgB,MAGnBpuV,KAAKozV,UAAYQ,EACnB,OAAO5zV,KAAKy1V,YAGdz1V,KAAKouV,cAAgB1uV,MAAMshG,KAAKhhG,KAAK2zV,OAAOz4U,QAAQ04U,GAEpD,IAAM8B,EAA0B9B,EAAWmB,UAAY/0V,KAAKs1V,qBACtDK,EAAsB7V,EAAIhG,cAAc,gBAAgCib,UAE9E,OAAO/0V,KAAKy1V,YAAcC,EAA0BC,EAAqB,GAE3EC,gBA/CO,SA+CUlxV,GAIf,GAFA1E,KAAK61V,WAEA71V,KAAKyhV,UAAazhV,KAAK00V,kBAErB,GAAIhwV,EAAEmgV,UAAYC,EAAAA,GAAAA,IAAlB,CAGA,GAAIpgV,EAAEmgV,UAAYC,EAAAA,GAAAA,KACvB9kV,KAAK81V,gBACA,GAAIpxV,EAAEmgV,UAAYC,EAAAA,GAAAA,GACvB9kV,KAAK+1V,gBACA,GAAIrxV,EAAEmgV,UAAYC,EAAAA,GAAAA,IACvB9kV,KAAKg2V,gBACA,GAAItxV,EAAEmgV,UAAYC,EAAAA,GAAAA,KACvB9kV,KAAKi2V,gBACA,IAAIvxV,EAAEmgV,UAAYC,EAAAA,GAAAA,QAAsC,IAApB9kV,KAAKyzV,UAEvC,OADPzzV,KAAK2zV,MAAM3zV,KAAKyzV,WAAWzkH,QAG7BtqO,EAAEq7D,sBAdA//D,KAAKyhV,UAAW,GAgBpByC,iBAtEO,SAsEWx/U,GAChB,IAAMihB,EAASjhB,EAAEihB,OAEjB,OAAO3lB,KAAKyhV,WACTzhV,KAAKmkV,cACNnkV,KAAK+yV,eACJ/yV,KAAKokV,MAAM5iV,QAAQ89N,SAAS35M,IAEjCuwU,uBA9EO,WA+EL,IAAM9mK,EAAaizJ,EAAAA,EAAAA,QAAAA,QAAAA,uBAAAA,KAAwDriV,MAE3E,OAAIA,KAAK4zV,YAAc5zV,KAAK4zV,WAAW3tT,IAC9B,kBACFmpJ,GADL,IAEE,wBAAyBpvL,KAAK4zV,WAAW3tT,KAItCmpJ,GAET+mK,sBA1FO,WA2FL,IAAMrsN,EAAY8oN,EAAAA,EAAAA,QAAAA,QAAAA,sBAAAA,KAAoD5yV,MAMtE,OAJKA,KAAKizV,cACRnpN,EAAUw7M,QAAUtlV,KAAKo2V,WAGpBtsN,GAET07M,cAnGO,WAoGL,IAAMhkV,EAAUxB,KAAKigV,aAErB,OAAKjgV,KAAKw5U,WAEHx5U,KAAKkgV,eAAe,aAAc,CACvCzqN,MAAO,CACLpiH,KAAMrT,KAAKw5U,aAEZ,CAACh4U,IANyBA,GAQ/B60V,cA9GO,WA8GM,WACLtU,EAA+B,CAAC,CACpC1uU,KAAM,OACN/O,MAAOtE,KAAK40V,kBAed,OAXK50V,KAAKqzV,aAAerzV,KAAK+yV,cAC5BhR,EAAW/7U,KAAK,CACdqN,KAAM,gBACN/O,MAAO,CACLo4G,QAAS,WAAQ,EAAK+kO,UAAW,GACjCyC,iBAAkBlkV,KAAKkkV,iBACvByB,QAAS,kBAAO,EAAK7F,KAAZ,eAAoB,EAAKmF,iCAKjClD,GAET9B,WAlIO,WAkIG,WACFr+U,EAAU,CACd46U,OAAO,kBACFx8U,KAAKqlV,mBADL,IAEHD,KAAM,SAAUplV,KAAK2/U,OAAS3/U,KAAK2/U,OAAOyF,KAAO,SAEnDjJ,YAAa,kBACbE,OAAA,0BACKr8U,KAAKs2V,kBACLt2V,KAAK88U,gBAFV,YAGE,wBAAyB98U,KAAK8yV,KAC9B,yBAA0B9yV,KAAKu2V,eAC/BC,0BAA2Bx2V,KAAKyhV,UAC/BzhV,KAAKkjV,aAAaxnU,QAAS,IAE9B8uD,MAAOxqE,KAAK+qS,OACZg3C,WAAY/hV,KAAKq2V,gBACjB9Q,IAAK,UACLrI,GAAI,CACFluG,MAAQ,SAAAtqO,GACN,IAAMihB,EAASjhB,EAAEihB,OAEbA,EAAOwhL,aAAa,aACpB,EAAK6rJ,sBAAqB,EAAKvR,UAAW,IAEhD6D,QAAStlV,KAAKo2V,YAmBlB,OAfIp2V,KAAKm9U,WAAWsZ,SAClB70V,EAAQs7U,GAAKt7U,EAAQs7U,IAAM,GAC3Bt7U,EAAQs7U,GAAGuZ,OAASz2V,KAAKm9U,WAAWsZ,SAGjCz2V,KAAK2+U,UAAY3+U,KAAKqzV,cACzBzxV,EAAQs7U,GAAKt7U,EAAQs7U,IAAM,GAC3Bt7U,EAAQs7U,GAAGwZ,WAAa12V,KAAK22V,mBAG3B32V,KAAKqzV,cACPzxV,EAAQs7U,GAAKt7U,EAAQs7U,IAAM,GAC3Bt7U,EAAQs7U,GAAG0Z,WAAa52V,KAAK62V,mBAGxB72V,KAAKkgV,eAAe,MAAOt+U,EAAS5B,KAAK4lV,mBAElDiQ,SAhLO,WAiLA71V,KAAKokV,MAAM5iV,UAEhBxB,KAAK2zV,MAAQj0V,MAAMshG,KAAKhhG,KAAKokV,MAAM5iV,QAAQmvS,iBAAiB,6CAE9DgmD,kBArLO,WAqLU,WACf32V,KAAK82V,SAAS,QAAQ,WAChB,EAAKtD,iBAET,EAAKA,gBAAiB,OAG1BqD,kBA5LO,SA4LYnyV,GAAa,WAE9B1E,KAAK82V,SAAS,SAAS,WAAK,MAC1B,SAAI,EAAK1S,MAAM5iV,UAAXu1V,EAAoBz3H,SAAS56N,EAAEsyV,gBAEnCtqE,uBAAsB,WACpB,EAAK+0D,UAAW,EAChB,EAAKwV,wBAIXnB,SAvMO,WAwML,IAAMtX,EAAOx+U,KAAK2zV,MAAM3zV,KAAKyzV,UAAY,GAEzC,IAAKjV,EAAM,CACT,IAAKx+U,KAAK2zV,MAAMtyV,OAAQ,OAKxB,OAHArB,KAAKyzV,WAAa,OAClBzzV,KAAK81V,WAKP91V,KAAKyzV,aACkB,IAAnBjV,EAAKmW,UAAiB30V,KAAK81V,YAEjCC,SAtNO,WAuNL,IAAMvX,EAAOx+U,KAAK2zV,MAAM3zV,KAAKyzV,UAAY,GAEzC,IAAKjV,EAAM,CACT,IAAKx+U,KAAK2zV,MAAMtyV,OAAQ,OAKxB,OAHArB,KAAKyzV,UAAYzzV,KAAK2zV,MAAMtyV,YAC5BrB,KAAK+1V,WAKP/1V,KAAKyzV,aACkB,IAAnBjV,EAAKmW,UAAiB30V,KAAK+1V,YAEjCC,SArOO,WAsOL,IAAMxX,EAAOx+U,KAAK2zV,MAAM3zV,KAAK2zV,MAAMtyV,OAAS,GAEvCm9U,IAELx+U,KAAKyzV,UAAYzzV,KAAK2zV,MAAMtyV,OAAS,GAEd,IAAnBm9U,EAAKmW,UAAiB30V,KAAK+1V,aAEjCE,UA9OO,WA+OL,IAAMzX,EAAOx+U,KAAK2zV,MAAM,GAEnBnV,IAELx+U,KAAKyzV,UAAY,GAEM,IAAnBjV,EAAKmW,UAAiB30V,KAAK81V,aAEjCM,UAvPO,SAuPI1xV,GAAgB,WACzB,GAAIA,EAAEmgV,UAAYC,EAAAA,GAAAA,IAAc,CAE9Bp8S,YAAW,WAAQ,EAAK+4S,UAAW,KACnC,IAAM4B,EAAYrjV,KAAKglV,eACvBhlV,KAAK8jV,WAAU,kBAAMT,GAAaA,EAAU7kR,gBAE3Cx+D,KAAKyhV,UACN,CAACqD,EAAAA,GAAAA,GAAaA,EAAAA,GAAAA,MAAejsQ,SAASn0E,EAAEmgV,WAExC7kV,KAAKyhV,UAAW,GAIlBzhV,KAAK8jV,WAAU,kBAAM,EAAK8R,gBAAgBlxV,OAE5CwyV,SAvQO,WAwQAl3V,KAAKyhV,WAKVzhV,KAAKokV,MAAM5iV,QAAQytS,YACnBjvS,KAAKm1V,mBAOL5uR,aAAavmE,KAAK0zV,eAClB1zV,KAAK0zV,cAAgBvvU,OAAOukB,WAAW1oC,KAAKm1V,iBAAkB,QAIlEnsM,OAjc+B,SAicvBxtC,GAAC,WACDprG,EAAO,CACX+rU,YAAa,SACbE,MAAO,CACL,mBACkB,KAAhBr8U,KAAK6lV,SACW,IAAhB7lV,KAAK6lV,QACW,WAAhB7lV,KAAK6lV,QAET9D,WAAY,CAAC,CACX39O,IAAK,MACL/wF,KAAM,SACN/O,MAAOtE,KAAKk3V,YAIhB,OAAO17O,EAAE,MAAOprG,EAAM,EACnBpQ,KAAKqjV,WAAarjV,KAAK8lV,eACxB9lV,KAAKklV,iBAAgB,iBAAM,CACzB,EAAKhF,eAAeiF,EAAAA,EAAgB,CAClC1vN,MAAO,CACLgyE,MAAM,EACNu0I,MAAO,EAAKA,MACZD,KAAM,EAAKA,OAEZ,CAAC,EAAKyJ,4B,iHCpfjB,SAAe3J,EAAAA,EAAAA,GACba,EAAAA,EACAZ,EAAAA,EACAiV,EAAAA,GACA5jM,OAAO,CACP95I,KAAM,YAENoiH,MAAO,CACLipN,SAAUpnP,QACVs1H,MAAO,CACL1/L,KAAMvc,OACN4rL,QAAS,WAEXw/I,KAAM,CACJ7uT,KAAMoqE,QACNilG,SAAS,GAEXg5G,QAAS,CACProR,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,KAEXj4L,MAAO,CACLi4L,SAAS,GAEXwwB,OAAQ,CACN7/L,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,IAIbuxD,SAAU,CACRqpG,QADQ,WAEN,IAAM/mV,EAAOpQ,KAAKo9U,mBAAmBp9U,KAAK4sN,MAAO,CAC/CuvH,YAAa,mBACb3xQ,MAAO,CACL+qO,QAASv1S,KAAKo3V,mBAIlB,OAAOp3V,KAAKkgV,eAAe,MAAO9vU,IAEpCysU,QAXQ,WAYN,OAAO,QACL,sBAAuB78U,KAAK0+U,SAC5B,oBAAqB1+U,KAAKyhV,UACvBzhV,KAAKu8U,eAGZ6a,gBAlBQ,WAmBN,OAAOhvT,OAAOpoC,KAAKyhV,SAAWzhV,KAAKu1S,QAAU,IAE/CxK,OArBQ,WAsBN,MAAO,CACLh+E,OAAQ/sN,KAAK+sN,UAKnB7xI,QAAS,CACP+kQ,WADO,WAEL,OAAOjgV,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,sBACZn8U,KAAKo8U,OAAL,cAIPpzL,OA9DO,SA8DCxtC,GACN,IAAMjH,EAAW,CAACv0G,KAAKm3V,SAIvB,OAFIn3V,KAAKyhV,UAAUltO,EAASvuG,KAAKhG,KAAKigV,cAE/BzkO,EAAE,MAAO,CACd2gO,YAAa,YACbe,GAAIl9U,KAAKm9U,WACTd,MAAOr8U,KAAK68U,QACZryQ,MAAOxqE,KAAK+qS,QACXx2L,O,0GC3EP,QAAemoO,EAAAA,EAAAA,OAAiB,CAC9BrpU,KAAM,sBAEN0uU,WAAY,CAAE2G,UAAAA,EAAAA,GAEdjzN,MAAO,CACL4hO,OAAQ//P,QACR+oP,cAAe/oP,QACfypM,OAAQ,CACN7zQ,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,GAEX1+J,KAAM,CACJ3Q,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,IAEXh9H,MAAO,CACLryC,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,GAEXj4L,MAAO,CACL4oB,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,IAIbnsL,KAAM,iBAAO,CACXkrS,OAAQ,GACR74E,WAAW,IAGbqrB,SAAU,CACRwpG,eADQ,WAEN,OAAOlvT,OAAOpoC,KAAK69B,OAAS79B,KAAKq3V,OAAS,EAAI,IAGhDE,cALQ,WAMN,OAAO,EAAItoV,KAAKmqQ,GAAKp5Q,KAAKs7S,QAG5BuhC,QATQ,WAUN,MAAO,CACL,+BAAgC78U,KAAKyiO,UACrC,qCAAsCziO,KAAKqgV,cAC3C,8BAA+BrgV,KAAKq3V,SAIxCG,gBAjBQ,WAkBN,OAAIx3V,KAAKsE,MAAQ,EACR,EAGLtE,KAAKsE,MAAQ,IACR,IAGF60H,WAAWn5H,KAAKsE,QAGzBmzV,gBA7BQ,WA8BN,OAAOxoV,KAAKmiB,MAA2B,IAArBpxB,KAAKu3V,eAAwB,KAGjDG,iBAjCQ,WAkCN,OAAS,IAAM13V,KAAKw3V,iBAAmB,IAAOx3V,KAAKu3V,cAAgB,MAGrEx8C,YArCQ,WAsCN,OAAO3yQ,OAAOpoC,KAAKu/D,QAAUv/D,KAAK69B,KAAO79B,KAAKm4T,YAAc,GAG9DptB,OAzCQ,WA0CN,MAAO,CACLtrO,QAAQs9Q,EAAAA,EAAAA,IAAc/8U,KAAKs3V,gBAC3B/3R,OAAOw9Q,EAAAA,EAAAA,IAAc/8U,KAAKs3V,kBAI9BK,UAhDQ,WAiDN,MAAO,CACLjvG,UAAW,UAAF,OAAYtgN,OAAOpoC,KAAK+gS,QAAxB,UAIbo3B,YAtDQ,WAuDN,OAAOn4T,KAAKs7S,QAAU,EAAIlzQ,OAAOpoC,KAAKu/D,QAAUv/D,KAAK69B,QAIzDq9C,QAAS,CACP08Q,UADO,SACIvkV,EAAc60B,GACvB,OAAOloC,KAAKkgV,eAAe,SAAU,CACnC7D,MAAA,+BAA+BhpU,GAC/BmpU,MAAO,CACLxgK,KAAM,cACN67K,GAAI,EAAI73V,KAAKm4T,YACb2/B,GAAI,EAAI93V,KAAKm4T,YACb/xT,EAAGpG,KAAKs7S,OACR,eAAgBt7S,KAAK+6S,YACrB,mBAAoB/6S,KAAKy3V,gBACzB,oBAAqBvvT,MAI3B6vT,OAfO,WAgBL,IAAMxjP,EAAW,CACfv0G,KAAKqgV,eAAiBrgV,KAAK43V,UAAU,WAAY,GACjD53V,KAAK43V,UAAU,UAAW53V,KAAK03V,mBAGjC,OAAO13V,KAAKkgV,eAAe,MAAO,CAChC11Q,MAAOxqE,KAAK23V,UACZnb,MAAO,CACL2L,MAAO,6BACPC,QAAS,GAAF,OAAKpoV,KAAKm4T,YAAV,YAAyBn4T,KAAKm4T,YAA9B,YAA6C,EAAIn4T,KAAKm4T,YAAtD,YAAqE,EAAIn4T,KAAKm4T,eAEtF5jN,IAELyjP,QA7BO,WA8BL,OAAOh4V,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,6BACZn8U,KAAKo8U,OAAL,aAEL6b,UAlCO,SAkCI7+Q,EAAsCoB,EAAgCyvQ,GAC/EjqV,KAAKyiO,UAAYwnH,IAIrBjhM,OAjI8B,SAiItBxtC,GACN,OAAOA,EAAE,MAAOx7G,KAAKwgV,aAAaxgV,KAAK4sN,MAAO,CAC5CuvH,YAAa,sBACbK,MAAO,CACL4I,KAAM,cACN,gBAAiB,EACjB,gBAAiB,IACjB,gBAAiBplV,KAAKqgV,mBAAgBn6S,EAAYlmC,KAAKw3V,iBAEzDnb,MAAOr8U,KAAK68U,QACZkF,WAAY,CAAC,CACX1uU,KAAM,YACN/O,MAAOtE,KAAKi4V,YAEdztR,MAAOxqE,KAAK+qS,OACZmyC,GAAIl9U,KAAKm9U,aACP,CACFn9U,KAAK+3V,SACL/3V,KAAKg4V,gB,mMC1IL1a,GAAazB,EAAAA,EAAAA,GACjBa,EAAAA,GACAwb,EAAAA,EAAAA,GAAoB,CAAC,WAAY,QAAS,MAAO,WACjDlK,EAAAA,EACAlS,EAAAA,GAIF,QAAewB,EAAWnwL,OAAO,CAC/B95I,KAAM,oBAEN0uU,WAAY,CAAE2G,UAAAA,EAAAA,GAEdjzN,MAAO,CACL+oG,OAAQ,CACNtxM,KAAMoqE,QACNilG,SAAS,GAEXowB,gBAAiB,CACfz/L,KAAMvc,OACN4rL,QAAS,MAEX47J,kBAAmB,CACjBjrU,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,MAEX67J,YAAa,CACXlrU,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,KAEXqwB,MAAO,CACL1/L,KAAMvc,OACN4rL,QAAS,WAEX98H,OAAQ,CACNvyC,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,GAEX8jJ,cAAe/oP,QACfh8E,MAAOg8E,QACPypC,QAASzpC,QACTinP,QAASjnP,QACT+gQ,OAAQ/gQ,QACRghQ,QAAShhQ,QACThzF,MAAO,CACL4oB,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,IAIbnsL,KA1C+B,WA2C7B,MAAO,CACL+9U,kBAAmBnuV,KAAKsE,OAAS,EACjCm+N,WAAW,IAIfqrB,SAAU,CACRyqG,mBADQ,WAEN,OAAOv4V,KAAKkgV,eAAe,MAAOlgV,KAAKo9U,mBAAmBp9U,KAAK2sN,iBAAmB3sN,KAAK4sN,MAAO,CAC5FuvH,YAAa,gCACb3xQ,MAAOxqE,KAAKw4V,oBAGhBC,YAPQ,WAQN,OAAOz4V,KAAKkgV,eAAelgV,KAAK04V,mBAAoB,CAAC14V,KAAK24V,mBAE5DA,gBAVQ,WAWN,OAAO34V,KAAKqgV,cAAgBrgV,KAAK44V,sBAAwB54V,KAAK64V,qBAEhEC,eAbQ,WAcN,OAAO94V,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,4BACb3xQ,MAAOxqE,KAAK+qS,UAGhB8tD,oBAnBQ,WAoBN,OAAO74V,KAAKkgV,eAAe,MAAOlgV,KAAKo9U,mBAAmBp9U,KAAK4sN,MAAO,CACpEuvH,YAAa,iCACb3xQ,MAAO,CACLjL,OAAOw9Q,EAAAA,EAAAA,IAAc/8U,KAAKw3V,gBAAiB,UAIjDoB,sBA3BQ,WA4BN,OAAO54V,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,mCACbE,MAAO,CACL,2CAA4Cr8U,KAAKw+N,SAElD,CACDx+N,KAAK+4V,eAAe,QACpB/4V,KAAK+4V,eAAe,YAGxBC,eAtCQ,WAuCN,OAAKh5V,KAAKq4V,OAEHr4V,KAAKkgV,eAAe,MAAOlgV,KAAKwgV,aAAaxgV,KAAK4sN,MAAO,CAC9DuvH,YAAa,4BACb3xQ,MAAO,CACLjL,OAAOw9Q,EAAAA,EAAAA,IAAc,IAAM/8U,KAAKi5V,iBAAkB,SAL7B,MAS3BT,gBAhDQ,WAgDO,MACPL,EAA8C,MAA1Bn4V,KAAKm4V,kBAC1Bn4V,KAAK2sN,gBAAkB,EAAI,GAC5BxzF,WAAWn5H,KAAKm4V,mBAEpB,OAAO,EAAP,CACE5iD,QAAS4iD,IADX,SAEGn4V,KAAKk5V,WAAa,QAAU,QAASnc,EAAAA,EAAAA,IAAc/8U,KAAKw3V,gBAAiB,OAF5E,kBAGSza,EAAAA,EAAAA,IAAc9tU,KAAK4wD,IAAI,EAAG7/D,KAAKi5V,iBAAmBj5V,KAAKw3V,iBAAkB,MAHlF,GAMF3a,QA3DQ,WA4DN,OAAO,QACL,8BAA+B78U,KAAK0+U,SACpC,2BAA4B1+U,KAAKsoL,MACjC,2BAA4BtoL,KAAKsb,MACjC,8BAA+Btb,KAAKm5V,SACpC,6BAA8Bn5V,KAAKk5V,WACnC,6BAA8Bl5V,KAAKu+U,QACnC,6BAA8Bv+U,KAAKs4V,QACnC,6BAA8Bt4V,KAAKyiO,WAChCziO,KAAKu8U,eAGZmc,mBAxEQ,WAyEN,OAAO14V,KAAKqgV,cAAgB+Y,EAAAA,GAAkBC,EAAAA,IAEhDH,WA3EQ,WA4EN,OAAOl5V,KAAKk8U,SAASI,MAAQt8U,KAAK+gI,SAEpCk4N,iBA9EQ,WA+EN,OAAOj5V,KAAK6rK,UAAU7rK,KAAKo4V,cAE7BZ,gBAjFQ,WAkFN,OAAOx3V,KAAK6rK,UAAU7rK,KAAKmuV,oBAE7BgL,SApFQ,WAqFN,OAAO7hQ,QAAQt3F,KAAKm9U,WAAWmc,SAEjCvuD,OAvFQ,WAwFN,IAAMA,EAA8B,GAUpC,OARK/qS,KAAKw+N,SACRusE,EAAOtrO,OAAS,GAGbz/D,KAAKqgV,eAAuD,MAAtClnN,WAAWn5H,KAAKi5V,oBACzCluD,EAAOxrO,OAAQw9Q,EAAAA,EAAAA,IAAc/8U,KAAKi5V,iBAAkB,MAG/CluD,IAIX7vN,QAAS,CACP+kQ,WADO,WAEL,IAAMwK,GAAOC,EAAAA,EAAAA,IAAQ1qV,KAAM,UAAW,CAAEsE,MAAOtE,KAAKmuV,oBAEpD,OAAK1D,EAEEzqV,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,8BACZsO,GAJe,MAMpB8O,aAVO,WAWL,IAAMzvN,EAAY9pI,KAAKm9U,WAMvB,OAJIn9U,KAAKm5V,WACPrvN,EAAUklG,MAAQhvO,KAAKotV,SAGlBtjN,GAETivN,eAnBO,SAmBS1lV,GACd,OAAOrT,KAAKkgV,eAAe,MAAOlgV,KAAKo9U,mBAAmBp9U,KAAK4sN,MAAO,CACpEuvH,YAAa,mCACbE,OAAA,UACGhpU,GAAO,OAId+5U,QA3BO,SA2BE1oV,GACP,GAAK1E,KAAKm5V,SAAV,CAEA,MAAkBn5V,KAAK8/U,IAAI0Z,wBAAnBj6R,EAAR,EAAQA,MAERv/D,KAAKmsV,cAAgBznV,EAAEyuV,QAAU5zR,EAAQ,MAE3C04R,UAlCO,SAkCI7+Q,EAAsCoB,EAAgCyvQ,GAC/EjqV,KAAKyiO,UAAYwnH,GAEnBp+K,UArCO,SAqCIvnK,GACT,OAAIA,EAAQ,EAAU,EAClBA,EAAQ,IAAY,IACjB60H,WAAW70H,KAItB0kJ,OAnM+B,SAmMvBxtC,GACN,IAAMprG,EAAO,CACX+rU,YAAa,oBACbK,MAAO,CACL4I,KAAM,cACN,gBAAiB,EACjB,gBAAiBplV,KAAKi5V,iBACtB,gBAAiBj5V,KAAKqgV,mBAAgBn6S,EAAYlmC,KAAKw3V,iBAEzDnb,MAAOr8U,KAAK68U,QACZkF,WAAY,CAAC,CACX1uU,KAAM,YACN/O,MAAOtE,KAAKi4V,YAEdztR,MAAO,CACLqiJ,OAAQ7sN,KAAK6sN,OAAS,OAAI3mL,EAC1Bu5B,OAAQz/D,KAAKw+N,QAASu+G,EAAAA,EAAAA,IAAc/8U,KAAKy/D,QAAU,EACnDC,IAAK1/D,KAAK0/D,IAAM,OAAIx5B,GAEtBg3S,GAAIl9U,KAAKu5V,gBAGX,OAAO/9O,EAAE,MAAOprG,EAAM,CACpBpQ,KAAKg5V,eACLh5V,KAAKu4V,mBACLv4V,KAAK84V,eACL94V,KAAKy4V,YACLz4V,KAAKigV,mB,6DC5PX,QAAewZ,EAAf,G,0FCUA,SAAe5d,EAAAA,EAAAA,GAAOc,EAAAA,GAAYxvL,OAAO,CACvC95I,KAAM,eAENoiH,MAAO,CACLk0N,YAAa,CAACh5U,OAAQy3B,QACtB86S,aAAcvyU,QAGhBm9O,SAAU,CACR07F,oBADQ,WAEN,OAAOphT,OAAOpoC,KAAK2pV,cAErB+P,YAJQ,WAKN,OAAO15V,KAAKwpV,oBACR,CAAEiJ,cAAgB,EAAIzyV,KAAKwpV,oBAAuB,IAAM,UACxDtjT,GAENykT,cATQ,WAUN,OAAK3qV,KAAK05V,YAEH15V,KAAKkgV,eAAe,MAAO,CAChC11Q,MAAOxqE,KAAK05V,YACZvd,YAAa,wBAJe,KASlCjhQ,QAAS,CACP+kQ,WADO,WAEL,OAAOjgV,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,wBACbE,MAAOr8U,KAAKkjV,eACXwH,EAAAA,EAAAA,IAAQ1qV,SAIfgpJ,OApCuC,SAoC/BxtC,GACN,OAAOA,EAAE,MAAO,CACd2gO,YAAa,eACb3xQ,MAAOxqE,KAAKi9U,iBACZC,GAAIl9U,KAAKm9U,YACR,CACDn9U,KAAK2qV,cACL3qV,KAAKigV,mB,0VCrDX,QAAe0Z,EAAf,E,eCAA,QAAeC,EAAf,E,oHCYA,QAAevT,EAAAA,EAAAA,OAAW,CACxBhzU,KAAM,oBAENm2I,YAAY,EAEZu4L,WAAY,CACVxC,OAAAA,EAAAA,GAGF9pN,OAAO,0BACFinN,EAAAA,EAAAA,QAAAA,OACAZ,EAAAA,EAAAA,QAAAA,OAFA,IAGH6C,SAAUrnP,QACVioP,OAAQ,CACNryT,KAAMoqE,QACNilG,SAAS,GAEXj4L,MAAOgzF,QACP+oP,cAAe/oP,QACfuiQ,kBAAmB,CACjB3sU,KAAMvc,OACN4rL,QAAS,0BAEXu9J,OAAQ,CACN5sU,KAAMvc,OACN4rL,QAAS,eAEXw9J,QAAS,CACP7sU,KAAMvc,OACN4rL,QAAS,kBAIbvzC,OAjCwB,SAiChBxtC,EAjCgB,GAiCa,IAAxBia,EAAwB,EAAxBA,MAAOrlH,EAAiB,EAAjBA,KACZmkG,GAD6B,EAAXu1B,UACP,IACbo0M,EAAOzoN,EAAMskO,QAYjB,GAXItkO,EAAM4qN,cAAenC,EAAOzoN,EAAMokO,kBAC7BpkO,EAAMnxH,QAAO45U,EAAOzoN,EAAMqkO,QAEnCvlP,EAASvuG,KAAKw1G,EAAEkmO,EAAAA,EAAOhF,EAAAA,EAAAA,QAAAA,QAAAA,aAAuCjnN,EAAMnxH,OAASmxH,EAAMm3F,MAAO,CACxFn3F,MAAO,CACLkpN,SAAUlpN,EAAMkpN,SAChB5C,KAAMtmN,EAAMsmN,KACZC,MAAOvmN,EAAMumN,SAEbkC,IAEAzoN,EAAM8pN,SAAW9pN,EAAMkpN,SAAU,CACnC,IAAMY,EAAS/jO,EAAE,MAAOkhO,EAAAA,EAAAA,QAAAA,QAAAA,aAAuCjnN,EAAMm3F,MAAO,CAC1EuvH,YAAa,sCACb4F,WAAY,CAAC,CACX1uU,KAAM,SACN/O,MAAO,CAAE4iU,QAAQ,QAIrB3yN,EAASvuG,KAAKu5U,GAGhB,OAAO/jO,EAAE,OACP6mJ,EAAAA,EAAAA,IAAUjyP,EAAM,CACdisU,MAAO,CACL,qBAAqB,EACrB,8BAA+B5mN,EAAMkpN,UAEvCzB,GAAI,CACFluG,MAAQ,SAAAtqO,GACNA,EAAEo9U,kBAEE1xU,EAAK8sU,IAAM9sU,EAAK8sU,GAAGnsU,QAAU0kH,EAAMkpN,WACrCqb,EAAAA,EAAAA,IAAY5pV,EAAK8sU,GAAGnsU,OAAOjO,SAAQ,SAAAmC,GAAC,OAAIA,GAAGwwH,EAAMnxH,cAIrD,CACFk3G,EAAE,MAAO,CAAE2gO,YAAa,sCAAwC5nO,Q,eCvFxE,QAAe0lP,EAAf,E,eCAA,QAAeC,EAAf,E,0DC+BA,SAAere,EAAAA,EAAAA,GAAOa,EAAAA,EAAWZ,EAAAA,GAAW3uL,OAAO,CACjD95I,KAAM,gBAGN0uU,WAAY,CACVxC,OAAAA,EAAAA,GAGF9pN,MAAO,CACL3Q,OAAQxtB,QACRqvP,MAAOrvP,QACP6iQ,aAAc7iQ,QACd0X,MAAO,CACL9hF,KAAMxtB,MACN68L,QAAS,iBAAM,KAEjB69J,aAAc,CACZltU,KAAM,CAACvc,OAAQjR,MAAO4mJ,UACtBi2C,QAAS,YAEX89J,SAAU,CACRntU,KAAM,CAACvc,OAAQjR,MAAO4mJ,UACtBi2C,QAAS,QAEX+9J,UAAW,CACTptU,KAAM,CAACvc,OAAQjR,MAAO4mJ,UACtBi2C,QAAS,SAEXg+J,WAAY5pV,OACZ6pV,SAAUljQ,QACVmjQ,YAAa,KACbnM,cAAe,CACbphU,KAAMxtB,MACN68L,QAAS,iBAAM,MAInBuxD,SAAU,CACR4sG,YADQ,WACG,WACT,OAAO16V,KAAKsuV,cAAcvyU,KAAI,SAAAqN,GAAI,OAAI,EAAK2pN,SAAS3pN,OAEtDuxU,gBAJQ,WAKN,OAAOp7V,OAAOsD,KAAK7C,KAAKwgV,aAAaxgV,KAAK4sN,OAAvB,UAAuC,IAAI5mM,KAAK,MAErE40U,iBAPQ,WAQN,IAAMpc,EAAO,CACXhC,MAAO,CACL4I,UAAMl/S,GAERg3S,GAAI,CACFmQ,UAAY,SAAA3oV,GAAD,OAAcA,EAAEq7D,oBAI/B,OAAO//D,KAAKkgV,eAAeqR,EAAAA,EAAW/S,EAAM,CAC1Cx+U,KAAK66V,eAAe76V,KAAKu6V,gBAK/Br/Q,QAAS,CACP4/Q,UADO,SACI1xU,EAAcmnU,GAAe,WACtC,OAAOvwV,KAAKkgV,eAAe+R,EAAAA,EAAiB,CAC1CjyV,KAAKkgV,eAAe6a,EAAiB,CACnCtlO,MAAO,CACLm3F,MAAO5sN,KAAK4sN,MACZtoN,MAAOisV,EACPhR,QAAQ,GAEVrC,GAAI,CACFnsU,MAAO,kBAAM,EAAKivU,MAAM,SAAU52T,UAK1C4xU,WAfO,SAeKvlO,GACV,OAAOz1H,KAAKkgV,eAAe+Z,EAAU,CAAExkO,MAAAA,KAEzCwlO,gBAlBO,SAkBUhoQ,GAGf,GAFAA,EAAOA,GAAQ,IAEVjzF,KAAKy6V,aAAez6V,KAAKw6V,SAAU,OAAOU,EAAAA,EAAAA,GAAWjoQ,GAE1D,MAA+BjzF,KAAKm7V,oBAAoBloQ,GAAhD9L,EAAR,EAAQA,MAAOmzE,EAAf,EAAeA,OAAQlzE,EAAvB,EAAuBA,IAEvB,MAAO,GAAP,QAAU8zQ,EAAAA,EAAAA,GAAW/zQ,IAArB,OAA8BnnF,KAAKo7V,aAAa9gM,IAAhD,QAA0D4gM,EAAAA,EAAAA,GAAW9zQ,KAEvEkqQ,UA3BO,SA2BI77N,GACT,OAAOz1H,KAAKkgV,eAAega,EAAY,CAAEzkO,MAAAA,GAASA,EAAM1yH,SAE1Dq4V,aA9BO,SA8BOnoQ,GACZ,MAAO,mCAAP,QAA0CioQ,EAAAA,EAAAA,GAAWjoQ,GAArD,YAEFkoQ,oBAjCO,SAiCcloQ,GAKnB,IAAMwnQ,GAAez6V,KAAKy6V,aAAe,IAAIlsV,WAAW8sV,oBAClD/oT,EAAQ2gD,EAAKooQ,oBAAoBngV,QAAQu/U,GAE/C,GAAInoT,EAAQ,EAAG,MAAO,CAAE60C,MAAO8L,EAAMqnE,OAAQ,GAAIlzE,IAAK,IAEtD,IAAMD,EAAQ8L,EAAK1mD,MAAM,EAAG+F,GACtBgoH,EAASrnE,EAAK1mD,MAAM+F,EAAOA,EAAQmoT,EAAYp5V,QAC/C+lF,EAAM6L,EAAK1mD,MAAM+F,EAAQmoT,EAAYp5V,QAC3C,MAAO,CAAE8lF,MAAAA,EAAOmzE,OAAAA,EAAQlzE,IAAAA,IAE1Bk0Q,QAhDO,YAqDI,WAJTlyU,EAIS,EAJTA,KACAkpB,EAGS,EAHTA,MAGS,IAFTqsS,SAAAA,OAES,MAFE,KAEF,MADTr6U,MAAAA,OACS,SACJA,IAAOA,EAAQtE,KAAKu7V,QAAQnyU,IAE7BA,IAAS7pB,OAAO6pB,KAClBu1T,EAAwB,OAAbA,EACPA,EACA3+U,KAAKw7V,YAAYpyU,IAGvB,IAAMo1T,EAAO,CACXhC,MAAO,CAGL,gBAAiB7rU,OAAOrM,GACxB2hC,GAAI,aAAF,OAAejmC,KAAK6rV,KAApB,YAA4Bv5S,GAC9B8yS,KAAM,UAERlI,GAAI,CACFmQ,UAAY,SAAA3oV,GAEVA,EAAEq7D,kBAEJivK,MAAO,kBAAM2vG,GAAY,EAAKqB,MAAM,SAAU52T,KAEhDqsG,MAAO,CACLooN,YAAa79U,KAAK26V,gBAClBhc,SAAAA,EACAY,QAAQ,EACRgR,WAAYjsV,IAIhB,IAAKtE,KAAKsjV,aAAal6T,KACrB,OAAOppB,KAAKkgV,eAAeqR,EAAAA,EAAW/S,EAAM,CAC1Cx+U,KAAK8kH,SAAW9kH,KAAKm6V,cAAgBn6V,KAAKgvG,MAAM3tG,OAAS,EACrDrB,KAAK86V,UAAU1xU,EAAM9kB,GACrB,KACJtE,KAAK66V,eAAezxU,EAAMkpB,KAI9B,IAAMuM,EAAS7+C,KACTy7V,EAAaz7V,KAAKsjV,aAAal6T,KAAK,CACxCy1B,OAAAA,EACAz1B,KAAAA,EACAozT,OAAO,kBACFgC,EAAKhC,OACLgC,EAAK/oN,OAEVynN,GAAIsB,EAAKtB,KAGX,OAAOl9U,KAAK07V,UAAUD,GAClBz7V,KAAKkgV,eAAeqR,EAAAA,EAAW/S,EAAMid,GACrCA,GAENZ,eA7GO,SA6GSzxU,GAAoB,IAC5B6kL,EAAYjuM,KAAKi7V,gBAAgBj7V,KAAK27V,QAAQvyU,IAEpD,OAAOppB,KAAKkgV,eAAe2R,EAAAA,GACzB,CAAC7xV,KAAKkgV,eAAe4R,EAAAA,GAAgB,CACnCrV,SAAU,CAAExuI,UAAAA,QAIlBstJ,QAtHO,SAsHEnyU,GACP,OAAOppB,KAAK06V,YAAYx/U,QAAQlb,KAAK+yO,SAAS3pN,KAAU,GAE1DsyU,UAzHO,SAyHIjR,GACT,OAAwB,IAAjBA,EAAMppV,QACkB,MAA7BopV,EAAM,GAAGmR,kBACuC,gBAAhDnR,EAAM,GAAGmR,iBAAiB18F,KAAKt9P,QAAQyR,MAE3CmoV,YA9HO,SA8HMpyU,GACX,OAAOkuE,SAAQukQ,EAAAA,EAAAA,IAAoBzyU,EAAMppB,KAAKo6V,cAAc,KAE9DuB,QAjIO,SAiIEvyU,GACP,OAAOzY,QAAOkrV,EAAAA,EAAAA,IAAoBzyU,EAAMppB,KAAKq6V,SAAUjxU,KAEzD2pN,SApIO,SAoIG3pN,GACR,OAAOyyU,EAAAA,EAAAA,IAAoBzyU,EAAMppB,KAAKs6V,UAAWt6V,KAAK27V,QAAQvyU,MAIlE4/H,OArMiD,WAwM/C,IAFA,IAAMz0C,EAA0B,GAC1BgqE,EAAcv+K,KAAKgvG,MAAM3tG,OACtBixC,EAAQ,EAAGA,EAAQisI,EAAajsI,IAAS,CAChD,IAAMlpB,EAAOppB,KAAKgvG,MAAM18D,GAEpBtyC,KAAKm6V,cACPn6V,KAAKu7V,QAAQnyU,KAGH,MAARA,EAAcmrF,EAASvuG,KAAKhG,KAAKs7V,QAAQ,CAAElyU,KAAAA,EAAMkpB,MAAAA,KAC5ClpB,EAAKrmB,OAAQwxG,EAASvuG,KAAKhG,KAAKsxV,UAAUloU,IAC1CA,EAAK0yU,QAASvnP,EAASvuG,KAAKhG,KAAKg7V,WAAW5xU,IAChDmrF,EAASvuG,KAAKhG,KAAKs7V,QAAQ,CAAElyU,KAAAA,EAAMkpB,MAAAA,MAS1C,OANAiiE,EAASlzG,QAAUkzG,EAASvuG,KAAKhG,KAAKo8U,OAAO,YAAcp8U,KAAK46V,kBAEhE56V,KAAKo8U,OAAO,iBAAmB7nO,EAAS+6C,QAAQtvJ,KAAKo8U,OAAO,iBAE5Dp8U,KAAKo8U,OAAO,gBAAkB7nO,EAASvuG,KAAKhG,KAAKo8U,OAAO,gBAEjDp8U,KAAKkgV,eAAe8R,EAAAA,EAAO,CAChC7V,YAAa,gBACbE,MAAOr8U,KAAKu8U,aACZC,MAAO,CACL4I,KAAM,UACNr4G,UAAW,GAEbt3G,MAAO,CAAEkxN,MAAO3mV,KAAK2mV,QACpBpyO,M,gDClQP,QAAe8xO,EAAAA,EAAAA,OAAW,CACxBhzU,KAAM,aAENoiH,MAAO,CACL8kO,WAAY,CACVrtU,KAAMvc,OACN4rL,QAAS,0B,0BCuBFw/J,EAAmB,CAC9BhJ,cAAc,EACdC,qBAAqB,EACrBC,aAAa,EACb+I,aAAa,EACb9I,UAAW,KAIP5V,GAAazB,EAAAA,EAAAA,GACjBogB,EAAAA,EACAlO,EAAAA,EACA/L,EAAAA,EACAka,GAiBF,QAAe5e,EAAWnwL,SAAkBA,OAAO,CACjD95I,KAAM,WAEN0uU,WAAY,CACVO,aAAAA,EAAAA,GAGF7sN,MAAO,CACLu1N,WAAY,CACV99T,KAAMvc,OACN4rL,QAAS,aAEXspJ,OAAQ,CACN34T,KAAM,KACNqvK,SAAS,GAEX4/J,WAAY7kQ,QACZ8kQ,MAAO9kQ,QACP+kQ,UAAW/kQ,QACXglQ,eAAgBhlQ,QAChBilQ,cAAejlQ,QACfuxP,MAAOvxP,QACP6iQ,aAAc7iQ,QACd0X,MAAO,CACL9hF,KAAMxtB,MACN68L,QAAS,iBAAM,KAEjBigK,UAAW,CACTtvU,KAAMvc,OACN4rL,QAAS,WAEX69J,aAAc,CACZltU,KAAM,CAACvc,OAAQjR,MAAO4mJ,UACtBi2C,QAAS,YAEX89J,SAAU,CACRntU,KAAM,CAACvc,OAAQjR,MAAO4mJ,UACtBi2C,QAAS,QAEX+9J,UAAW,CACTptU,KAAM,CAACvc,OAAQjR,MAAO4mJ,UACtBi2C,QAAS,SAEXkgK,UAAW,CACTvvU,KAAM,CAACvc,OAAQjR,MAAOH,QACtBg9L,QAAS,kBAAMw/J,IAEjB7N,SAAU52P,QACVolQ,YAAaplQ,QACbqlQ,aAAcrlQ,QACdslQ,WAAYtlQ,SAGdlnF,KArDiD,WAsD/C,MAAO,CACLysV,YAAa78V,KAAKm8V,WAAan8V,KAAKgvG,MAAQ,GAC5C8tP,cAAc,EACdC,cAAc,EACdC,SAAU,GAIV/vG,eAA0B/mN,IAAflmC,KAAKsE,MACZtE,KAAKsE,MACLtE,KAAKkuV,SAAW,QAAKhoT,EACzBkoT,eAAgB,EAChBE,cAAe,GACf2O,qBAAsB,GACtBC,uBAAwB,IAI5BpvG,SAAU,CAERtsI,SAFQ,WAGN,OAAOxhH,KAAKm9V,iBAAiBn9V,KAAK68V,YAAYr2V,OAAOxG,KAAKgvG,SAE5D6tO,QALQ,WAMN,OAAO,kBACFof,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAyCj8V,OAD9C,IAEE,YAAY,EACZ,kBAAmBA,KAAKo9V,SACxB,yBAA0Bp9V,KAAK48V,WAC/B,2BAA4B58V,KAAK+8V,aACjC,qBAAsB/8V,KAAKkuV,YAI/BmP,cAhBQ,WAiBN,OAAOr9V,KAAKwhH,UAEd87O,aAnBQ,WAoBN,MAAO,QAAP,OAAet9V,KAAK6rV,OAEtB0R,qBAtBQ,WAuBN,IAAMj5V,EAAQtE,KAAKkuV,SACfluV,KAAKsuV,eACJtuV,KAAK27V,QAAQ37V,KAAKsuV,cAAc,KAAO,IAAI//U,WAEhD,MAAiC,oBAAtBvO,KAAKw9V,aACPx9V,KAAKw9V,aAAal5V,GAGpBA,EAAMjD,QAEf0gV,WAjCQ,WAiCE,WACR,OAAO/hV,KAAK0rV,UAAY,CAAC,CACvBr4U,KAAM,gBACN/O,MAAO,CACLo4G,QAAS18G,KAAK+/U,KACdmE,iBAAkBlkV,KAAKkkV,iBACvByB,QAAS,kBAAM,EAAKV,oCAEnB/+S,GAEPu3T,cA3CQ,WA4CN,MAAO,QAETL,SA9CQ,WA+CN,OAAOp9V,KAAKo8V,OAASp8V,KAAK48V,YAE5Bc,QAjDQ,WAkDN,OAAOpmQ,QAAQt3F,KAAKo9V,UAAYp9V,KAAKsjV,aAAaqa,YAEpDlS,QApDQ,WAqDN,OAAOzrV,KAAKsuV,cAAcjtV,OAAS,GAErCu8V,SAvDQ,WAwDN,IAAMx0M,EAAUppJ,KAAK0pJ,QAAW1pJ,KAAK0pJ,OAAOrzC,QAAS2zC,SAAoCP,SACnF+yL,EAAQpzL,GAAU,UACrBA,GAAU,GACT,GAEJ,MAAO,CACLozL,OAAO,kBACFA,GADA,IAEHv2S,GAAIjmC,KAAKs9V,eAEX7nO,MAAO,CACL3Q,OAAQ9kH,KAAKkuV,SACbthI,MAAO5sN,KAAKw8V,UACZ7V,MAAO3mV,KAAK2mV,MACZwT,aAAcn6V,KAAKm6V,aACnBnrP,MAAOhvG,KAAK69V,iBACZzD,aAAcp6V,KAAKo6V,aACnBC,SAAUr6V,KAAKq6V,SACfC,UAAWt6V,KAAKs6V,UAChBC,WAAYv6V,KAAKk8U,SAAS2F,KAAK7gV,EAAEhB,KAAKu6V,YACtCjM,cAAetuV,KAAKsuV,eAEtBpR,GAAI,CACF4gB,OAAQ99V,KAAK+9V,YAEfpQ,YAAa,CACXvkU,KAAMppB,KAAKsjV,aAAal6T,QAI9B40U,WAtFQ,WA2FN,OAJIh+V,KAAKo8U,OAAO,YAAcp8U,KAAKo8U,OAAO,iBAAmBp8U,KAAKo8U,OAAO,kBACvE6hB,EAAAA,EAAAA,IAAa,6DAGRj+V,KAAKkgV,eAAege,EAAal+V,KAAK49V,WAE/CC,iBA7FQ,WA8FN,OAAQ79V,KAAKm+V,YAAoBrL,KAC7B9yV,KAAKq9V,cACLr9V,KAAKq9V,cAAc9wT,MAAM,EAAGvsC,KAAKg9V,WAEvCoB,YAAa,kBAAM,GACnBD,YAnGQ,WAoGN,IAAIE,EAA4C,kBAAnBr+V,KAAKy8V,UAC9Bz8V,KAAKy8V,UAAUrlV,MAAM,KACrBpX,KAAKy8V,UAST,OAPI/8V,MAAM21E,QAAQgpR,KAChBA,EAAkBA,EAAgBtsU,QAAO,SAAC0vJ,EAAK5hL,GAE7C,OADA4hL,EAAI5hL,EAAE6b,SAAU,EACT+lK,IACN,MAGE,kBACFs6K,GADL,IAEElT,MAAO7oV,KAAK6oV,MACZvkV,MAAOtE,KAAKo+V,aAAep+V,KAAK+8V,aAChCuB,YAAaD,EAAgBjL,QAAU,EAAI,GACxCiL,KAKT9a,MAAO,CACL4I,cADK,SACUjtT,GAAG,WAChBl/B,KAAK86D,aAAe57B,EACpBl/B,KAAKu+V,mBAEDv+V,KAAKkuV,UACPluV,KAAK8jV,WAAU,WAAK,MAClB,WAAKM,MAAMoa,OAAX,EAAiBrJ,uBAIvB4H,aAXK,SAWS79T,GAAG,WACf/a,OAAOukB,YAAW,kBAAM,EAAK+1T,mBAAmBv/T,OAElD8vE,MAAO,CACL0vP,WAAW,EACXhiP,QAFK,SAEIx9E,GAAG,WACNl/B,KAAKm8V,YAIPn8V,KAAK8jV,WAAU,WACb,EAAK+Y,YAAc,EAAKM,iBAAiB,EAAKN,YAAYr2V,OAAO04B,OAIrEl/B,KAAKu+V,sBAKXrjR,QAAS,CAEP6kQ,KAFO,SAEDr7U,GACJu3V,EAAAA,EAAAA,QAAAA,QAAAA,KAAAA,KAAqCj8V,KAAM0E,GAC3C1E,KAAK+8V,cAAe,EACpB/8V,KAAK0rV,WAAY,EACjB1rV,KAAKouV,eAAiB,EACtBpuV,KAAK2+V,cAAc,IAGrBC,aAVO,WAYF5+V,KAAK6+V,gBACN7+V,KAAK+8V,eAGP/8V,KAAK+8V,cAAe,IAEtB+B,kBAlBO,WAkBU,WACf9+V,KAAK+hG,SAAS/hG,KAAKkuV,SAAW,GAAK,MACnCluV,KAAK2+V,cAAc,GACnB3+V,KAAK8jV,WAAU,kBAAM,EAAKM,MAAMrzU,OAAS,EAAKqzU,MAAMrzU,MAAMytD,WAEtDx+D,KAAK08V,cAAa18V,KAAK+8V,cAAe,IAE5C7Y,iBAzBO,SAyBWx/U,GAChB,OAAK1E,KAAK+8V,eAGP/8V,KAAKmkV,gBAIJnkV,KAAK++V,eACN/+V,KAAK++V,aAAaz/H,SAAS56N,EAAEihB,UAG9B3lB,KAAK8/U,MACJ9/U,KAAK8/U,IAAIxgH,SAAS56N,EAAEihB,SACrBjhB,EAAEihB,SAAW3lB,KAAK8/U,KAGtBqd,iBA1CO,SA0CWrhV,GAEhB,IADA,IAAMkjV,EAAe,IAAIt2U,IAChB4pB,EAAQ,EAAGA,EAAQx2B,EAAIza,SAAUixC,EAAO,CAC/C,IAAMlpB,EAAOtN,EAAIw2B,GAGjB,GAAY,MAARlpB,EAIJ,GAAIA,EAAKrmB,QAAUqmB,EAAK0yU,QACtBkD,EAAar2U,IAAIS,EAAMA,OADzB,CAKA,IAAM8V,EAAMl/B,KAAK+yO,SAAS3pN,IAGzB41U,EAAan2U,IAAIqW,IAAQ8/T,EAAar2U,IAAIuW,EAAK9V,IAElD,OAAO1pB,MAAMshG,KAAKg+P,EAAa5sT,WAEjC6sT,kBAhEO,SAgEY71U,GAAY,WACvBkxU,EAAYt6V,KAAK+yO,SAAS3pN,GAEhC,OAAQppB,KAAKmsV,eAAiB,IAAI9yL,WAAW,SAAAn4J,GAAD,OAAe,EAAKutV,gBAAgB,EAAK17G,SAAS7xO,GAAIo5V,OAEpGyE,WArEO,WAsEL,OAAO/+V,KAAKokV,MAAMoa,MAAQx+V,KAAKokV,MAAMoa,KAAKpa,MAAM5iV,SAElD09V,iBAxEO,SAwEW91U,EAAckpB,GAAa,WACrCkkG,EACJx2I,KAAKw2I,YACLx2I,KAAKw7V,YAAYpyU,GAEby1U,GAAiBroN,GAAcx2I,KAAK6+V,cAE1C,OAAO7+V,KAAKkgV,eAAeyZ,EAAO,CAChCxd,YAAa,iBACbK,MAAO,CAAEzvG,UAAW,GACpBt3G,MAAO,CACLzuG,MAAOhnB,KAAKs8V,gBAAkBuC,EAC9BlgB,SAAUnoM,EACV+5M,WAAYj+S,IAAUtyC,KAAKouV,cAC3BjkK,MAAOnqL,KAAK48V,YAEd1f,GAAI,CACFluG,MAAQ,SAAAtqO,GACDm6V,IAELn6V,EAAEo9U,kBAEF,EAAKsM,cAAgB97S,IAEvB,cAAe,kBAAM,EAAK6sT,YAAY/1U,KAExCxN,IAAKtB,KAAKC,UAAUva,KAAK+yO,SAAS3pN,KACjCppB,KAAK27V,QAAQvyU,KAElBg2U,kBArGO,SAqGYh2U,EAAckpB,EAAekrH,GAC9C,IAAMovD,EAAQt6K,IAAUtyC,KAAKouV,eAAiBpuV,KAAKq/V,cAC7C7oN,EACJx2I,KAAKw2I,YACLx2I,KAAKw7V,YAAYpyU,GAGnB,OAAOppB,KAAKkgV,eAAe,MAAOlgV,KAAKwgV,aAAa5zH,EAAO,CACzDuvH,YAAa,iDACbE,MAAO,CACL,gCAAiC7lM,GAEnC56H,IAAKtB,KAAKC,UAAUva,KAAK+yO,SAAS3pN,MAL7B,UAMAppB,KAAK27V,QAAQvyU,IANb,OAMqBo0I,EAAO,GAAK,QAE1CqvL,eApHO,WAqHL,IAAMyS,EAAat/V,KAAKu/V,gBAClBxuV,EAAQ/Q,KAAKw/V,WAYnB,OARI9/V,MAAM21E,QAAQiqR,GAChBA,EAAWt5V,KAAK+K,IAGhBuuV,EAAW/qP,SAAW+qP,EAAW/qP,UAAY,GAC7C+qP,EAAW/qP,SAASvuG,KAAK+K,IAGpB,CACL/Q,KAAKy/V,cACLz/V,KAAKkgV,eAAe,MAAO,CACzB/D,YAAa,iBACb4F,WAAY/hV,KAAK+hV,YAChB,CACD/hV,KAAK8sV,WACL9sV,KAAK69N,OAAS79N,KAAK0/V,SAAS,UAAY,KACxCJ,EACAt/V,KAAKgnM,OAAShnM,KAAK0/V,SAAS,UAAY,KACxC1/V,KAAK2/V,eACL3/V,KAAK4/V,cACL5/V,KAAK6/V,mBAEP7/V,KAAK8/V,UACL9/V,KAAK+gV,gBAGTgM,QApJO,SAqJL7/T,EACA4qF,EACAk1O,GAEA,IAAM9O,EAAO6hB,EAAAA,EAAAA,QAAAA,QAAAA,QAAAA,KAAoC//V,KAAMktB,EAAM4qF,EAAIk1O,GAajE,MAXa,WAAT9/T,IAEFgxT,EAAK3pO,SAAU,GAAGnkG,MAAOiyP,EAAAA,EAAAA,IAAU67E,EAAK3pO,SAAU,GAAGnkG,KAAO,CAC1DosU,MAAO,CACLzvG,SAAUmxG,EAAK3pO,SAAU,GAAGqnP,iBAAkB9xN,WAAa,KAC3D,cAAe,OACf,kBAAc5jG,MAKbg4S,GAETshB,SAxKO,WAyKL,IAAMzuV,EAAQkrV,EAAAA,EAAAA,QAAAA,QAAAA,SAAAA,KAAyCj8V,MAiBvD,cAfO+Q,EAAMX,KAAMosU,MAAOnpU,KAE1BtC,EAAMX,MAAOiyP,EAAAA,EAAAA,IAAUtxP,EAAMX,KAAO,CAClCqsU,SAAU,CAAEn4U,MAAO,MACnBk4U,MAAO,CACLwjB,UAAU,EACV9yU,KAAM,OACN,gBAAiBvc,OAAO3Q,KAAK2rV,YAC7B,yBAAyBsU,EAAAA,EAAAA,IAAqBjgW,KAAKokV,MAAMoa,KAAM,iBAC/D0B,cAAcD,EAAAA,EAAAA,IAAqBlvV,EAAMX,KAAO,qBAAsB,OACtEg4O,YAAepoP,KAAKyrV,UAAYzrV,KAAKmgW,wBAAyBngW,KAAK0rV,WAAc1rV,KAAKksV,cAAgChmT,EAAnBlmC,KAAKooP,aAE1G80F,GAAI,CAAEkjB,SAAUpgW,KAAKqgW,cAGhBtvV,GAET8uV,eA5LO,WA6LL,OAAO7/V,KAAKkgV,eAAe,QAAS,CAClCzD,SAAU,CAAEn4U,MAAOtE,KAAKitP,WACxBuvF,MAAO,CACLtvT,KAAM,SACN7Z,KAAMrT,KAAKynV,OAAOp0U,SAIxBs5U,aArMO,WAsML,IAAM3jM,EAASizM,EAAAA,EAAAA,QAAAA,QAAAA,aAAAA,KAA6Cj8V,MAU5D,OARAgpJ,EAAO54I,KAAMosU,OAAb,kBACKxzL,EAAO54I,KAAMosU,OADlB,IAEE4I,KAAM,SACN,gBAAiB,UACjB,gBAAiBz0U,OAAO3Q,KAAK+8V,cAC7B,YAAa/8V,KAAKs9V,eAGbt0M,GAETs3M,QAlNO,WAoNL,OAAItgW,KAAKo8U,OAAO,YAAcp8U,KAAKo8U,OAAO,iBAAmBp8U,KAAKo8U,OAAO,eAChEp8U,KAAKugW,kBAELvgW,KAAKg+V,YAGhBuC,gBA1NO,WA0NQ,WACPC,EAAQ,CAAC,eAAgB,UAAW,eACvCtkV,QAAO,SAAAukV,GAAQ,OAAI,EAAKrkB,OAAOqkB,MAC/B1kV,KAAI,SAAA0kV,GAAQ,OAAI,EAAKvgB,eAAe,WAAY,CAC/CuK,KAAMgW,GACL,EAAKrkB,OAAOqkB,OAIjB,OAAOzgW,KAAKkgV,eAAege,GAApB,UACFl+V,KAAK49V,UACP4C,IAELV,QAvOO,WAuOA,WACCrqO,EAAQz1H,KAAKm+V,YAgBnB,OAfA1oO,EAAM4tN,UAAYrjV,KAAKokV,MAAM,cAMX,KAAhBpkV,KAAK6lV,SACW,IAAhB7lV,KAAK6lV,QACW,WAAhB7lV,KAAK6lV,OAELpwN,EAAMowN,OAAS7lV,KAAK8/U,IAEpBrqN,EAAMowN,OAAS7lV,KAAK6lV,OAGf7lV,KAAKkgV,eAAe0Z,EAAO,CAChCpd,MAAO,CAAE4I,UAAMl/S,GACfuvF,MAAAA,EACAynN,GAAI,CACFnsU,MAAQ,SAAAmuB,GACN,EAAK69T,aAAe79T,EACpB,EAAKwsT,UAAYxsT,GAEnBu3T,OAAQz2V,KAAK0gW,UAEfnb,IAAK,QACJ,CAACvlV,KAAKsgW,aAEXf,cArQO,WAsQL,IAGIoB,EAHAt/V,EAASrB,KAAKsuV,cAAcjtV,OAC1BkzG,EAAW,IAAI70G,MAAM2B,GAIzBs/V,EADE3gW,KAAKsjV,aAAaqa,UACL39V,KAAK4gW,iBACX5gW,KAAKo9V,SACCp9V,KAAKk/V,iBAELl/V,KAAKo/V,kBAGtB,MAAO/9V,IACLkzG,EAASlzG,GAAUs/V,EACjB3gW,KAAKsuV,cAAcjtV,GACnBA,EACAA,IAAWkzG,EAASlzG,OAAS,GAIjC,OAAOrB,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,wBACZ5nO,IAELqsP,iBA9RO,SA8RWx3U,EAAckpB,GAAa,WAC3C,OAAOtyC,KAAKsjV,aAAaqa,UAAW,CAClCnhB,MAAO,CACLH,MAAO,kBAETx9R,OAAQ7+C,KACRopB,KAAAA,EACAkpB,MAAAA,EACAwrT,OAAS,SAAAp5V,GACPA,EAAEo9U,kBACF,EAAKsM,cAAgB97S,GAEvBuuT,SAAUvuT,IAAUtyC,KAAKouV,cACzBzP,UAAW3+U,KAAK6+V,iBAGpBiC,aA9SO,WA+SL,OAAO9gW,KAAKokV,MAAMoa,KAAQx+V,KAAKokV,MAAMoa,KAAgC/K,WAAa,GAEpF+H,YAjTO,SAiTMpyU,GACX,OAAOyyU,EAAAA,EAAAA,IAAoBzyU,EAAMppB,KAAKo6V,cAAc,IAEtDuB,QApTO,SAoTEvyU,GACP,OAAOyyU,EAAAA,EAAAA,IAAoBzyU,EAAMppB,KAAKq6V,SAAUjxU,IAElD2pN,SAvTO,SAuTG3pN,GACR,OAAOyyU,EAAAA,EAAAA,IAAoBzyU,EAAMppB,KAAKs6V,UAAWt6V,KAAK27V,QAAQvyU,KAEhE23U,OA1TO,SA0TCr8V,GACNA,GAAK1E,KAAKggV,MAAM,OAAQt7U,IAE1By6V,YA7TO,SA6TM/1U,GACPppB,KAAKkuV,SAAUluV,KAAK+9V,WAAW30U,GAC9BppB,KAAK+hG,SAAS,MAGe,IAA9B/hG,KAAKsuV,cAAcjtV,OACrBrB,KAAK+8V,cAAe,EAEpB/8V,KAAK+8V,cAAe,EAEtB/8V,KAAKouV,eAAiB,GAExBhB,QAzUO,SAyUE1oV,GACF1E,KAAK6+V,gBAEL7+V,KAAKghW,cAAct8V,EAAEihB,UACxB3lB,KAAK+8V,cAAe,GAGjB/8V,KAAK0rV,YACR1rV,KAAK0rV,WAAY,EACjB1rV,KAAKggV,MAAM,UAGbhgV,KAAKggV,MAAM,QAASt7U,KAEtBu8V,UAvVO,SAuVIv8V,GACTA,EAAEq7D,iBACE//D,KAAK+8V,eACPr4V,EAAEo9U,kBACF9hV,KAAK+8V,cAAe,IAGxBsD,WA9VO,SA8VK37V,GAAgB,WAC1B,IACE1E,KAAKkuV,UACJluV,KAAK6+V,gBACN7+V,KAAKu8V,cAHP,CAMA,IAAM2E,EAA4B,IAC5BxwU,EAAMs5C,YAAYt5C,MACpBA,EAAM1wB,KAAKk9V,uBAAyBgE,IACtClhW,KAAKi9V,qBAAuB,IAE9Bj9V,KAAKi9V,sBAAwBv4V,EAAEkX,IAAI4Y,cACnCx0B,KAAKk9V,uBAAyBxsU,EAE9B,IAAM4hB,EAAQtyC,KAAKwhH,SAAS63C,WAAU,SAAAjwI,GACpC,IAAM6pE,GAAQ,EAAK0oQ,QAAQvyU,IAAS,IAAI7a,WAExC,OAAO0kF,EAAKz+D,cAAcxZ,WAAW,EAAKiiV,yBAEtC7zU,EAAOppB,KAAKwhH,SAASlvE,IACZ,IAAXA,IACFtyC,KAAKg9V,SAAW/tV,KAAK4wD,IAAI7/D,KAAKg9V,SAAU1qT,EAAQ,GAChDtyC,KAAK+hG,SAAS/hG,KAAK28V,aAAevzU,EAAOppB,KAAK+yO,SAAS3pN,IACvDppB,KAAK8jV,WAAU,kBAAM,EAAKM,MAAMoa,KAAK3I,cACrCntT,YAAW,kBAAM,EAAKi2T,aAAarsT,SAGvC8jT,UA1XO,SA0XI1xV,GAAgB,WACzB,IAAI1E,KAAK2rV,YAAcjnV,EAAEmgV,UAAYC,EAAAA,GAAAA,IAArC,CAEA,IAAMD,EAAUngV,EAAEmgV,QACZ2Z,EAAOx+V,KAAKokV,MAAMoa,KAIxB,GAFAx+V,KAAKggV,MAAM,UAAWt7U,GAEjB85V,EAqBL,OAjBIx+V,KAAK+8V,cAAgB,CAACjY,EAAAA,GAAAA,GAAaA,EAAAA,GAAAA,KAAeA,EAAAA,GAAAA,KAAeA,EAAAA,GAAAA,IAAcA,EAAAA,GAAAA,OAAgBjsQ,SAASgsQ,IAC1G7kV,KAAK8jV,WAAU,WACb0a,EAAK5I,gBAAgBlxV,GACrB,EAAKs7U,MAAM,oBAAqBwe,EAAK/K,cAKrC,CACF3O,EAAAA,GAAAA,MACAA,EAAAA,GAAAA,OACAjsQ,SAASgsQ,IAAU7kV,KAAK4+V,gBAOvB5+V,KAAK+8V,cACN,CAACjY,EAAAA,GAAAA,GAAaA,EAAAA,GAAAA,KAAeA,EAAAA,GAAAA,KAAeA,EAAAA,GAAAA,KAAcjsQ,SAASgsQ,GAC5D7kV,KAAKmhW,SAASz8V,GAGnBmgV,IAAYC,EAAAA,GAAAA,IAAqB9kV,KAAKihW,UAAUv8V,GAGhDmgV,IAAYC,EAAAA,GAAAA,IAAqB9kV,KAAKohW,UAAU18V,GAGhDmgV,IAAYC,EAAAA,GAAAA,MAAuB9kV,KAAKqhW,YAAY38V,QAAxD,IAEF+5V,mBAraO,SAqaav/T,GAIlB,KACGl/B,KAAKkuV,WAAahvT,GACnBl/B,KAAK8gW,gBAAkB,GAFzB,CAKA,IAAMtC,EAAOx+V,KAAKokV,MAAMoa,KAExB,GAAKA,GAASx+V,KAAKyrV,QAAnB,CAGAzrV,KAAKokV,MAAMoa,KAAK3I,WAChB,IAAK,IAAI30V,EAAI,EAAGA,EAAIs9V,EAAK7K,MAAMtyV,OAAQH,IACrC,GAAoD,SAAhDs9V,EAAK7K,MAAMzyV,GAAGimM,aAAa,iBAA6B,CAC1DnnM,KAAK2+V,aAAaz9V,GAClB,UAINqsV,UA3bO,SA2bI7oV,GAAa,WAGpB1E,KAAKqrV,cACO,IAAZ3mV,EAAE48V,OACFthW,KAAK6+V,eAKD7+V,KAAKghW,cAAct8V,EAAEihB,SACvB3lB,KAAK8jV,WAAU,kBAAO,EAAKiZ,cAAgB,EAAKA,gBAIpDd,EAAAA,EAAAA,QAAAA,QAAAA,UAAAA,KAA0Cj8V,KAAM0E,IAElDg8V,SA5cO,WA4cC,WACN,GAAK1gW,KAAK+8V,aAEH,CACL,GAAI/8V,KAAKg9V,SAAWh9V,KAAKq9V,cAAch8V,OAAQ,OAE/C,IAAMkgW,EACJvhW,KAAK++V,aAAavJ,cACjBx1V,KAAK++V,aAAalK,UACnB70V,KAAK++V,aAAaz/R,cAChB,IAEAiiS,IACFvhW,KAAKg9V,UAAY,SAXnBtwE,uBAAsB,kBAAO,EAAKqyE,aAAalK,UAAY,MAe/DwM,YA7dO,SA6dM38V,GACXA,EAAEq7D,kBAEJqhS,UAheO,SAgeI18V,GACT,IAAM85V,EAAOx+V,KAAKokV,MAAMoa,KAExB,GAAKA,EAAL,CAEA,IAAM5K,EAAa4K,EAAK5K,YAKrB5zV,KAAKkuV,UACN0F,GACA5zV,KAAK+8V,cAELr4V,EAAEq7D,iBACFr7D,EAAEo9U,kBAEF8R,EAAW5kH,SAKXhvO,KAAK+/U,KAAKr7U,KAGdy8V,SAzfO,SAyfGz8V,GAAgB,WAClB85V,EAAOx+V,KAAKokV,MAAMoa,KAExB,GAAKA,EAAL,CAOA,GALA95V,EAAEq7D,iBAKE//D,KAAKkuV,SAAU,OAAOluV,KAAK4+V,eAE/B,IAAM/Z,EAAUngV,EAAEmgV,QAIlB2Z,EAAKza,UAAW,EAEhB5/T,OAAOuoQ,uBAAsB,WAG3B,GAFA8xE,EAAK3I,YAEA2I,EAAK9J,kBAAmB,OAAO,EAAKkK,eAEzC,OAAQ/Z,GACN,KAAKC,EAAAA,GAAAA,GACH0Z,EAAKzI,WACL,MACF,KAAKjR,EAAAA,GAAAA,KACH0Z,EAAK1I,WACL,MACF,KAAKhR,EAAAA,GAAAA,KACH0Z,EAAKvI,YACL,MACF,KAAKnR,EAAAA,GAAAA,IACH0Z,EAAKxI,WACL,MAEJ,EAAK+H,WAAW,EAAKv8O,SAAS,EAAKs/O,sBAGvC/C,WAjiBO,SAiiBK30U,GAAY,WACtB,GAAKppB,KAAKkuV,SAGH,CACL,IAAM/B,GAAiBnsV,KAAKmsV,eAAiB,IAAI5/S,QAC3CrrC,EAAIlB,KAAKi/V,kBAAkB71U,GASjC,IAPO,IAAPloB,EAAWirV,EAAc37O,OAAOtvG,EAAG,GAAKirV,EAAcnmV,KAAKojB,GAC3DppB,KAAK+hG,SAASoqP,EAAcpwU,KAAK,SAAA7a,GAC/B,OAAO,EAAKy7V,aAAez7V,EAAI,EAAK6xO,SAAS7xO,OAK3ClB,KAAKm6V,aACPn6V,KAAK2+V,cAAc,OACd,CACL,IAAMrsT,EAAQtyC,KAAKwhH,SAAStmG,QAAQkO,IAC/BkpB,IACHtyC,KAAK8jV,WAAU,kBAAM,EAAKM,MAAMoa,KAAK3I,cACrCntT,YAAW,kBAAM,EAAKi2T,aAAarsT,aAnBvCtyC,KAAK+hG,SAAS/hG,KAAK28V,aAAevzU,EAAOppB,KAAK+yO,SAAS3pN,IACvDppB,KAAK+8V,cAAe,GAuBxB4B,aA3jBO,SA2jBOrsT,GACZtyC,KAAKokV,MAAMoa,OAAUx+V,KAAKokV,MAAMoa,KAAgC/K,UAAYnhT,IAE9EisT,iBA9jBO,WA8jBS,aACRjQ,EAAgB,GAChBl8S,EAAUpyC,KAAKkuV,UAAaxuV,MAAM21E,QAAQr1E,KAAKmsV,eAEjDnsV,KAAKmsV,cADL,CAACnsV,KAAKmsV,eAHI,UAMM/5S,GANN,yBAMH9tC,EANG,QAONguC,EAAQ,EAAKkvE,SAAS63C,WAAU,SAAAzzJ,GAAC,OAAI,EAAK6oV,gBAC9C,EAAK17G,SAASntO,GACd,EAAKmtO,SAASzuO,OAGZguC,GAAS,GACXg8S,EAActoV,KAAK,EAAKw7G,SAASlvE,KAPrC,IAAK,EAAL,qBAA4B,IANd,8BAiBdtyC,KAAKsuV,cAAgBA,GAEvBvsP,SAjlBO,SAilBGz9F,GACHtE,KAAKyuV,gBAAgBnqV,EAAOtE,KAAKmsV,iBACpCnsV,KAAKmsV,cAAgB7nV,EACrBtE,KAAKggV,MAAM,SAAU17U,KAGzB08V,cAvlBO,SAulBQr7U,GAGb,IAAM67U,EAAcxhW,KAAKokV,MAAM,gBAE/B,OAAOod,IAAgBA,IAAgB77U,GAAU67U,EAAYliI,SAAS35M,S,yICx2B5E,SAAek2T,EAAAA,EAAAA,GACb6K,EAAAA,EACAhK,EAAAA,EACAyC,EAAAA,EACAxC,EAAAA,EACAC,EAAAA,EACAd,EAAAA,GACA3uL,OAAO,CACP95I,KAAM,UAENoiH,MAAO,CACL2oN,SAAU9mP,QACVmqQ,OAAQnqQ,QACR0kE,IAAK,CACH9uI,KAAMvc,OACN4rL,QAAS,QAIbuxD,SAAU,CACR+uF,QADQ,WAEN,OAAO,wBACL,WAAW,EACX,oBAAqB78U,KAAKo+U,SAC1B,kBAAmBp+U,KAAKyhW,QACrBzhW,KAAKu8U,cACLv8U,KAAKg/U,kBACLh/U,KAAK88U,iBAGZ/xC,OAXQ,WAYN,OAAO/qS,KAAKi9U,mBAIhBj0L,OA5BO,SA4BCxtC,GACN,IAAMprG,EAAO,CACXisU,MAAOr8U,KAAK68U,QACZryQ,MAAOxqE,KAAK+qS,OACZmyC,GAAIl9U,KAAK8mV,YAGX,OAAOtrO,EACLx7G,KAAKg8J,IACLh8J,KAAKo9U,mBAAmBp9U,KAAK4sN,MAAOx8M,GACpCpQ,KAAKo8U,OAAL,gB,6DC5DN,QAAemB,EAAf,G,8LCqBA,SAAe1B,EAAAA,EAAAA,GACbsD,EAAAA,EACAxC,EAAAA,EACAb,EAAAA,GACA3uL,OAAO,CACP95I,KAAM,kBAENoiH,MAAO,CACLisO,YAAapqQ,QACb6mP,QAAS7mP,QACTknP,KAAMlnP,QACNkiP,WAAY7oU,OACZuc,KAAMvc,OACNw0O,MAAO,CACLj4N,KAAM3tB,OACNg9L,QAAS,iBAAO,MAIpBuxD,SAAU,CACR0uF,MADQ,WAEN,OAAKx8U,KAAKopV,UAEFppV,KAAK0hW,YAKT,IALG,QACL,aAAa,EACb,YAAa,SACbtc,KAAM,SACHplV,KAAK2/U,QANkB3/U,KAAK2/U,QASnC9C,QAXQ,WAYN,OAAO,gBACL,iCAAkC78U,KAAK0hW,YACvC,gCAAiC1hW,KAAKopV,UACtC,0BAA2BppV,KAAKw+U,MAC7Bx+U,KAAKu8U,cACLv8U,KAAKg/U,mBAGZoK,UApBQ,WAqBN,QAAS,YAAappV,KAAKsjV,eAAiBtjV,KAAKm+U,SAEnDwjB,UAvBQ,WAwBN,OAAO,QACL1lG,QAAS,WACT2lG,QAAS,qBACTC,OAAQ,SACRxK,OAAQ,SACRyK,KAAM,sBACN,cAAe,0BACf,eAAgB,UAChBC,KAAM,OACN,cAAe,mFACf,sBAAuB,iBACvB,mBAAoB,YACpB/oE,QAAS,UACTmwD,MAAO,QACP,YAAa,OACb,mBAAoB,eACpB,qBAAsB,YACtB,4BAA6B,oBAC7B,uBAAwB,YACxB,8BAA+B,oBAC/B6Y,UAAW,SACXC,UAAW,SACXt1J,MAAO,uDACP,gBAAiB,gBACjB,cAAe,YACf,cAAe,sBACf,oBAAqB,qBACrB,YAAa,eACb,aAAc,OACd,cAAe,mBACf15G,KAAM,QACHjzF,KAAKmlP,SAKdjqK,QAAS,CACPgnR,QADO,SACEjvQ,EAAcshB,GACrB,OAAOv0G,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,sBAAF,OAAwBlpP,EAAxB,6BACVshB,IAEL4tP,SANO,SAMGC,GAAY,WAEpB,EAAuBA,EAAKhrV,MAAM,KAAlC,eAAO8V,EAAP,KAAa7rB,EAAb,KACM+C,EAAY,kBAAM,EAAKi+V,aAAan1U,IAI1C,OAAOxtB,MAAMshG,KAAK,CAAE3/F,OAAAA,IAAU0a,IAAI3X,IAIpCi+V,aAjBO,SAiBOn1U,GACZ,IAAIqnF,EAAW,GACfrnF,EAAOA,GAAQltB,KAAKktB,MAAQ,GAC5B,IAAMk1U,EAAOpiW,KAAK2hW,UAAUz0U,IAAS,GAIrC,GAAIA,IAASk1U,OAER,IAAIl1U,EAAKhS,QAAQ,MAAQ,EAAG,OAAOlb,KAAKsiW,SAASp1U,GAEjD,GAAIA,EAAKhS,QAAQ,MAAQ,EAAG,OAAOlb,KAAKmiW,SAASj1U,GAE7Ck1U,EAAKlnV,QAAQ,MAAQ,EAAGq5F,EAAWv0G,KAAKsiW,SAASF,GAEjDA,EAAKlnV,QAAQ,MAAQ,EAAGq5F,EAAWv0G,KAAKmiW,SAASC,GAEjDA,GAAM7tP,EAASvuG,KAAKhG,KAAKqiW,aAAaD,IAE/C,MAAO,CAACpiW,KAAKkiW,QAAQh1U,EAAMqnF,KAE7BguP,YAtCO,WAuCL,IAAMhuP,EAAW,GAMjB,OAJKv0G,KAAKopV,UACL70O,EAASvuG,KAAKhG,KAAKqiW,gBADH9tP,EAASvuG,MAAK0kV,EAAAA,EAAAA,IAAQ1qV,OAItCA,KAAKw5U,WAGHx5U,KAAKkgV,eAAe,aAAc,CACvCzqN,MAAO,CACLpiH,KAAMrT,KAAKw5U,YAIb0D,GAAI,CACFslB,WAAYxiW,KAAKyiW,YACjBC,YAAa1iW,KAAK2iW,cAClBC,YAAa5iW,KAAK6iW,cAClBC,eAAgB9iW,KAAKyiW,cAEtBluP,GAf0BA,GAiB/B+tP,SA9DO,SA8DGS,GAER,OAAOA,EAAM7xV,QAAQ,MAAO,IAAIkG,MAAM,KAAK2E,IAAI/b,KAAKqiW,eAEtDM,cAlEO,SAkEQnuM,GACbx0J,KAAKyiW,YAAYjuM,GAEZx0J,KAAKopV,YAEV50L,EAAGwuM,cAAgB,CACjB3xL,QAAS7c,EAAGhqF,MAAM6mG,QAClBmoK,WAAYhlL,EAAGhqF,MAAMgvQ,YAGvBhlL,EAAGhqF,MAAMy4R,YAAY,aAAc,OAAQ,eAE7CJ,cA9EO,SA8EQruM,GACbA,EAAGhqF,MAAMy4R,YAAY,UAAW,OAAQ,cAE1CR,YAjFO,SAiFMjuM,GACNA,EAAGwuM,gBAERxuM,EAAGhqF,MAAM6mG,QAAU7c,EAAGwuM,cAAc3xL,SAAW,GAC/C7c,EAAGhqF,MAAMgvQ,WAAahlL,EAAGwuM,cAAcxpB,kBAEhChlL,EAAGwuM,iBAIdh6M,OAtKO,SAsKCxtC,GACN,OAAOA,EAAE,MAAO,CACd2gO,YAAa,oBACbK,MAAOx8U,KAAKw8U,MACZU,GAAIl9U,KAAKm9U,WACTd,MAAOr8U,KAAK68U,QACZryQ,MAAOxqE,KAAKopV,UAAYppV,KAAKi9U,sBAAmB/2S,GAC/C,CAAClmC,KAAKuiW,oB,+KCrLb,SAAe1mB,EAAAA,EAAAA,GACb0B,EAAAA,EACAb,EAAAA,EACAqU,EAAAA,GACAmH,EAAAA,EAAAA,GAAoB,CAClB,WACA,SACA,OACA,QACA,SAGF/qM,OAAO,CACP95I,KAAM,aAENoiH,MAAO,CACLrC,IAAK97B,QACL4rQ,SAAU5rQ,QACV4rP,aAAc,CACZh2T,KAAMvc,OACN4rL,QAAS,IAEX4mK,UAAW7rQ,QACXrE,KAAMqE,QACNl0F,QAAS,CACP8pB,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,KAEXi9I,WAAY,CACVtsT,KAAM,CAACoqE,QAAS3mF,QAChB4rL,QAAS,qBACT9tC,UAAW,SAAA7oJ,GAAC,MAAiB,kBAANA,IAAwB,IAANA,IAE3CogV,SAAU1uP,SAGZlnF,KAAM,iBAAO,CACXgzV,eAAgB,IAGlBt1G,SAAU,CACR+uF,QADQ,WAEN,MAAO,CACL,oBAAqB78U,KAAK0+U,SAC1B,kBAAmB1+U,KAAKyhV,SACxB,kBAAmBzhV,KAAK6sN,SAAW7sN,KAAK0/D,IACxC,oBAAqB1/D,KAAKkjW,SAC1B,0BAA2BljW,KAAKqjW,cAChC,gBAAiBrjW,KAAK4/D,KACtB,sBAAuB5/D,KAAKmjW,YAAcnjW,KAAKgmV,SAC/C,iBAAkBhmV,KAAKkwG,MACvB,gBAAiBlwG,KAAKizF,KACtB,eAAgBjzF,KAAK0/D,IACrB,oBAAqB1/D,KAAKgmV,WAK9Bqd,cAlBQ,WAmBN,OACGrjW,KAAKizF,OACLjzF,KAAKo+U,UAKVnC,OA1BQ,WA2BN,OAAOj8U,KAAKqjW,eACPrjW,KAAKg8U,MACNF,EAAAA,EAAAA,QAAAA,SAAAA,OAAAA,KAAuC97U,OAE7C+qS,OA/BQ,WAgCN,GAAI/qS,KAAK0+U,WAAa1+U,KAAKozH,IAAK,MAAO,GAEvC,MAQIpzH,KAAKk8U,SAASjhS,YAPhB4+R,EADF,EACEA,IACAhtH,EAFF,EAEEA,OACAwlI,EAHF,EAGEA,OACAC,EAJF,EAIEA,YACA1yR,EALF,EAKEA,KACAswC,EANF,EAMEA,MACAxwC,EAPF,EAOEA,IAGF,MAAO,CACL+yR,eAAe1V,EAAAA,EAAAA,IAAclwH,EAASwlI,EAASC,GAC/CI,aAAa3V,EAAAA,EAAAA,IAAcn9Q,GAC3B4yR,cAAczV,EAAAA,EAAAA,IAAc7sO,GAC5BqiP,YAAYxV,EAAAA,EAAAA,IAAclD,EAAMn6Q,MAKtC6jR,MAAO,CACL9B,SAAU,aACVr+U,QAAS,cAGX4mV,QAtFO,WAuFDhqV,KAAKyhV,UAAUzhV,KAAK0oC,cAG1B+2S,QA1FO,WA4FDz/U,KAAK2/U,OAAO7/U,eAAe,iBAC7BqnI,EAAAA,EAAAA,IAAQ,cAAennI,MAKL,GAAhBA,KAAKoD,UACPkgW,EAAAA,EAAAA,IAAU,cAAe,KAAMtjW,OAInCk7E,QAAS,CACPqoR,WADO,WAEL,OAAOvjW,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,oBACZ,EACDuO,EAAAA,EAAAA,IAAQ1qV,KAAM,SAAU,CACtBw8U,MAAO,CAAEH,MAAO,qBAItB4D,WAVO,WAWL,OAAOjgV,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,mBACbE,OAAA,UACGr8U,KAAKkjV,cAAe,GAEvB1G,MAAO,CACL4I,KAAM,SACN,YAAa,WAEd,EAACsF,EAAAA,EAAAA,IAAQ1qV,SAEdwjW,WAtBO,WAsBG,WACFjjB,EAAWvgV,KAAKqjW,cAClBrjW,KAAKo9U,mBACLp9U,KAAKwgV,aAEHpwU,EAAOmwU,EAASvgV,KAAK4sN,MAAO,CAChCuvH,YAAa,mBACbE,MAAOkB,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAqCv9U,MAC5CwqE,MAAO+yQ,EAAAA,EAAAA,QAAAA,SAAAA,OAAAA,KAAoCv9U,MAC3C+hV,WAAY,CAAC,CACX1uU,KAAM,OACN/O,MAAOtE,KAAKyhV,WAEdvE,GAAI,CACFumB,aAAc,kBAAMt/U,OAAOoiD,aAAa,EAAK68R,gBAC7CM,aAAc1jW,KAAK0oC,cAIvB,OAAO1oC,KAAKkgV,eAAe,MAAO9vU,EAAM,CACtCpQ,KAAKigV,aACLjgV,KAAKujW,gBAGT/d,cA9CO,WA+CL,OAAOxlV,KAAKkgV,eAAe,aAAc,CACvCzqN,MAAO,CAAEpiH,KAAMrT,KAAKw5U,aACnB,CAACx5U,KAAKwjW,gBAEX96T,WAnDO,WAmDG,WACRvkB,OAAOoiD,aAAavmE,KAAKojW,eAEzB,IAAMhgW,EAAUglC,OAAOpoC,KAAKoD,SAGzBpD,KAAKyhV,WAEN,CAAC,GAAI,GAAG5oQ,SAASz1E,KAKnBpD,KAAKojW,cAAgBj/U,OAAOukB,YAAW,WACrC,EAAK+4S,UAAW,IACfr+U,MAIP4lJ,OA7KO,SA6KCxtC,GACN,OAAOA,EAAE,MAAO,CACd2gO,YAAa,UACbE,MAAOr8U,KAAK68U,QACZryQ,MAAOxqE,KAAK+qS,QACX,EACmB,IAApB/qS,KAAKw5U,WACDx5U,KAAKwlV,gBACLxlV,KAAKwjW,mB,kFC3Mf,SAAe3nB,EAAAA,EAAAA,GACbC,EAAAA,GAEA3uL,OAAO,CACP95I,KAAM,cAENoiH,MAAO,CACLswN,MAAOzuP,SAGT0xD,OAPO,SAOCxtC,GACN,OAAOA,EAAE,MAAO,CACd2gO,YAAa,cACbE,OAAA,QACE,qBAAsBr8U,KAAK+lV,OACxB/lV,KAAKu8U,cAEVC,MAAOx8U,KAAK2/U,OACZzC,GAAIl9U,KAAKm9U,YACRn9U,KAAKo8U,OAAL,gB,6ICdP,SAAeP,EAAAA,EAAAA,IACb8nB,EAAAA,EAAAA,GAAgB,MAAO,CACrB,SACA,WAEFjnB,EAAAA,EACAZ,EAAAA,GAEA3uL,OAAO,CACP95I,KAAM,eAENoiH,MAAO,CACLh2D,OAAQ,CAACr3B,OAAQz3B,QACjBizV,UAAWtsQ,QACXnzE,OAAQmzE,SAGVw2J,SAAU,CACR+uF,QADQ,WAEN,OAAO,QACL,2BAA4B78U,KAAK4jW,UACjC,yBAA0B5jW,KAAK0+U,SAC/B,uBAAwB1+U,KAAK0+U,WAAa1+U,KAAKozH,KAAOpzH,KAAKsoL,OAC3D,uBAAwBtoL,KAAKmkB,QAC1BnkB,KAAKu8U,eAGZsnB,eAVQ,WAWN,OAAI7jW,KAAKy/D,OACAod,MAAM53B,SAASjlD,KAAKy/D,SAAWz/D,KAAKy/D,OAASxa,SAASjlD,KAAKy/D,QAG7Dz/D,KAAKmkB,OAAS,GAAK,IAE5B4mR,OAjBQ,WAkBN,MAAO,CACLtrO,QAAQs9Q,EAAAA,EAAAA,IAAc/8U,KAAK6jW,mBAKjC3oR,QAAS,CACP4oR,kBADO,WAEL,OAAO9jW,KAAK8/U,IACR9/U,KAAK8/U,IAAIxgR,aACTt/D,KAAK6jW,iBAIb76M,OAzCO,SAyCCxtC,GACN,IAAMprG,EAAO,CACX+rU,YAAa,eACbE,MAAOr8U,KAAK68U,QACZryQ,MAAOxqE,KAAK+qS,OACZmyC,GAAIl9U,KAAKm9U,YAGX,OAAO3hO,EAAE,MAAOx7G,KAAKo9U,mBAAmBp9U,KAAK4sN,MAAOx8M,IAAOs6U,EAAAA,EAAAA,IAAQ1qV,W,2OC7DvE,SAAe67U,EAAAA,EAAAA,GAAOC,EAAAA,GAAW3uL,OAAO,CACtC95I,KAAM,YAENm2I,YAAY,EAEZ/zB,MAAO,CACLnxH,MAAO,CACL4oB,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,IAEX18H,IAAK,CAACz3B,OAAQz3B,SAGhBq4I,OAbsC,SAa9BxtC,EAAGnI,GACT,IAAQoiB,EAAUpiB,EAAVoiB,MACF51D,EAAM5a,SAASwwE,EAAM51D,IAAK,IAC1Bv7D,EAAQ2gD,SAASwwE,EAAMnxH,MAAO,IAC9B9C,EAAUq+D,EAAM,GAAH,OAAMv7D,EAAN,cAAiBu7D,GAAQlvD,OAAO8kH,EAAMnxH,OACnDy/V,EAAYlkS,GAAQv7D,EAAQu7D,EAElC,OAAO27C,EAAE,MAAO,CACd2gO,YAAa,YACbE,OAAA,QACE,cAAe0nB,IACZxU,EAAAA,EAAAA,GAAuBl8O,KAE3B7xG,MClCP,I,gDCMc,SAAUwiW,EAAepiW,GACrC,OAAOykV,EAAAA,EAAAA,OAAW,CAChBhzU,KAAM,gBAENjD,KAAM,iBAAO,CACX65U,gBAAgB,IAGlBD,QAPgB,WAQdia,EAAAA,EAAAA,SAAmBjkW,KAAK8/U,IAAoB,CAC1CzsU,KAAM,YACN/O,MAAOtE,KAAKi4V,WACXj4V,KAAK0pJ,SAGVu6E,UAdgB,WAedggI,EAAAA,EAAAA,OAAiBjkW,KAAK8/U,IAAoB,CACxCzsU,KAAM,YACN/O,MAAOtE,KAAKi4V,WACXj4V,KAAK0pJ,SAGVxuE,QAAS,CACP+8Q,UADO,SACI7+Q,EAAsCoB,EAAgCyvQ,GAG/E,GAFAjqV,KAAKiqV,eAAiBA,EAEjBA,EAEL,IAAK,IAAI/oV,EAAI,EAAGG,EAASO,EAAQsiW,UAAU7iW,OAAQH,EAAIG,EAAQH,IAAK,CAClE,IAAMmxB,EAAYryB,KAAa4B,EAAQsiW,UAAUhjW,IAEzB,oBAAbmxB,GAKXk4T,EAAAA,EAAAA,IAAY3oV,EAAQsiW,UAAUhjW,GAAK,0FAJjCmxB,S,+ECbNirT,GAAazB,EAAAA,EAAAA,GACjBkkB,EAAAA,EACAoE,EAAc,CACZD,UAAW,CACT,WACA,kBAGJzjB,EAAAA,GAYI2jB,EAAa,CAAC,QAAS,OAAQ,OAAQ,OAAQ,iBAAkB,OAAQ,SAG/E,QAAe9mB,EAAWnwL,SAAkBA,OAAO,CACjD95I,KAAM,eAEN0uU,WAAY,CACV94D,OAAAA,EAAAA,EACAs2D,OAAAA,EAAAA,GAGFwL,cAAc,EAEdt1N,MAAO,CACL4uO,gBAAiB1zV,OACjB2zV,UAAWhtQ,QACX+kQ,UAAW/kQ,QACXitQ,UAAW,CACTr3U,KAAMvc,OACN4rL,QAAS,UAEXvkB,QAAS,CAAC1gF,QAASlvD,OAAQz3B,QAC3B6sV,aAAcl3M,SACdk+M,OAAQltQ,QACRmlF,KAAMnlF,QACNmtQ,UAAWntQ,QACXjyF,MAAOsL,OACPytU,SAAU9mP,QACV8wJ,YAAaz3O,OACbktN,OAAQltN,OACR+zV,iBAAkB/zV,OAClBwvV,sBAAuB7oQ,QACvBypC,QAASzpC,QACTinP,QAASjnP,QACTmqQ,OAAQnqQ,QACRqtQ,WAAYrtQ,QACZstQ,KAAMttQ,QACNutQ,aAAcvtQ,QACd0vG,OAAQr2L,OACRuc,KAAM,CACJA,KAAMvc,OACN4rL,QAAS,SAIbnsL,KAAM,iBAAO,CACX00V,UAAU,EACVC,WAAY,EACZC,YAAa,EACbC,aAAc,EACdnqS,aAAc,KACdipR,UAAU,EACVmhB,YAAY,IAGdp3G,SAAU,CACR+uF,QADQ,WAEN,OAAO,kBACFkjB,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAqC//V,OAD1C,IAEE,gBAAgB,EAChB,2BAA4BA,KAAKykW,UACjC,uBAAwBzkW,KAAK69N,OAC7B,4BAA6B79N,KAAKmlW,SAClC,qBAAsBnlW,KAAKolW,OAC3B,8BAA+BplW,KAAK6kW,aACpC,0BAA2B7kW,KAAKy8K,KAChC,uBAAwBz8K,KAAKwkW,OAC7B,0BAA2BxkW,KAAK+jV,SAChC,yBAA0B/jV,KAAKqlW,WAC/B,wBAAyBrlW,KAAK+gI,QAC9B,yBAA0B/gI,KAAKo+U,SAC/B,4BAA6Bp+U,KAAKooP,YAClC,wBAAyBpoP,KAAKu+U,QAC9B,uBAAwBv+U,KAAKyhW,UAGjCpC,cArBQ,WAsBN,IAAMA,EAAgBvU,EAAAA,EAAAA,QAAAA,SAAAA,cAAAA,KAAgD9qV,MAEtE,OAAKA,KAAK6kW,cAAiB7kW,KAAK0rV,UAEzB1rV,KAAK4sN,OAAS,UAF6ByyI,GAIpD9B,qBA5BQ,WA6BN,MAAiC,oBAAtBv9V,KAAKw9V,aACPx9V,KAAKw9V,aAAax9V,KAAKmsV,gBAEzB,QAAKnsV,KAAKmsV,eAAiB,IAAI59U,YAAYlN,QAEpDikW,WAlCQ,WAmCN,OAAwB,IAAjBtlW,KAAKg4K,SAAqC,MAAhBh4K,KAAKg4K,SAExC8zK,WArCQ,WAsCN,OAAOiU,EAAAA,EAAAA,QAAAA,SAAAA,WAAAA,KAAwC//V,OAASA,KAAKslW,YAE/DnZ,cAAe,CACbzqV,IADa,WAEX,OAAO1B,KAAKitP,WAEdtkO,IAJa,SAIRuW,GACHl/B,KAAKitP,UAAY/tN,EACjBl/B,KAAKggV,MAAM,QAAShgV,KAAKitP,aAG7Bw+F,QAjDQ,WAiDD,MACL,OAAO,SAAAzrV,KAAKitP,gBAAL,IAAgB1+O,WAAWlN,QAAS,GAAKrB,KAAK8kW,UAEvDO,WApDQ,WAqDN,OACErlW,KAAKwkW,QACLxkW,KAAKolW,QACLplW,KAAKo+U,UAGToN,cA3DQ,WA4DN,OAAOxrV,KAAKyrV,SAAW2Y,EAAWvrR,SAAS74E,KAAKktB,OAElDi4U,SA9DQ,WA+DN,OACEnlW,KAAKolW,QACLplW,KAAK2kW,YACL3kW,KAAKykW,WAEJzkW,KAAKwkW,SAAWxkW,KAAKksV,UAG1BkZ,OAvEQ,WAwEN,OAAOplW,KAAK4kW,MAAQ5kW,KAAK6kW,cAE3BU,cA1EQ,WA2EN,IAAIr9T,EAAUloC,KAAK69N,SAAW79N,KAAKwlW,WAAcxlW,KAAKglW,YAAc,EAIpE,OAFIhlW,KAAKwlW,YAAcxlW,KAAKilW,eAAc/8T,GAAUloC,KAAKilW,cAEjDjlW,KAAKk8U,SAASI,MAAQt8U,KAAK+gI,QAAW,CAC5CnhE,KAAM13B,EACNgoE,MAAO,QACL,CACFtwC,KAAM,OACNswC,MAAOhoE,IAGXu9T,UAvFQ,WAwFN,OAAOzlW,KAAKksV,YAAclsV,KAAKmlW,UAAYnlW,KAAKwlW,aAElDA,WA1FQ,WA2FN,OAAOxlW,KAAK0rV,WAAa1rV,KAAKwrV,eAAiBxrV,KAAKmgW,wBAIxD5c,MAAO,CAELnF,SAAU,gBACV/4U,MAHK,WAIHrF,KAAK8jV,UAAU9jV,KAAK0lW,gBAEtB7nI,OANK,WAOH79N,KAAK8jV,UAAU9jV,KAAK2lW,iBAEtBja,UAAW,cACXpnV,MAVK,SAUE46B,GACLl/B,KAAKitP,UAAY/tN,IAIrBugT,QAlKiD,WAoK3Cz/U,KAAK2/U,OAAO7/U,eAAe,SAC7B8/U,EAAAA,EAAAA,IAAS,MAAO,SAAU5/U,MAIxBA,KAAK2/U,OAAO7/U,eAAe,0BAC7B8/U,EAAAA,EAAAA,IAAS,uBAAwB,eAAgB5/U,MAI/CA,KAAKyhW,UAAYzhW,KAAKwkW,QAAUxkW,KAAKo+U,UAAYp+U,KAAKolW,UACxD7a,EAAAA,EAAAA,IAAY,uDAAwDvqV,OAIxEgqV,QAnLiD,WAmL1C,WAELhqV,KAAK4lW,QAAO,kBAAM,EAAKJ,aAAYxlW,KAAK0lW,eACxC1lW,KAAKskW,WAAatkW,KAAK6lW,eACvBn5E,uBAAsB,WACpB,EAAKq3D,UAAW,EAChBr3D,uBAAsB,WACf,EAAKu9D,gBACR,EAAKiN,kBAMbh8Q,QAAS,CAEP1c,MAFO,WAGLx+D,KAAK8lW,WAGP/lB,KANO,SAMDr7U,GAAS,WAGbyf,OAAOuoQ,uBAAsB,WAC3B,EAAK03D,MAAMrzU,OAAS,EAAKqzU,MAAMrzU,MAAMgvU,WAGzC+e,kBAbO,WAaU,WACf9+V,KAAKokV,MAAMrzU,OAAS/Q,KAAKokV,MAAMrzU,MAAMytD,QACrCx+D,KAAK8jV,WAAU,kBAAM,EAAKqI,cAAgB,SAE5CO,cAjBO,WAkBL,IAAMjC,EAAO,GAQb,OANIzqV,KAAKo8U,OAAO,gBACdqO,EAAKzkV,KAAKhG,KAAKo8U,OAAO,iBACbp8U,KAAKqkW,iBACd5Z,EAAKzkV,KAAKhG,KAAK+sV,QAAQ,gBAGlB/sV,KAAK4tV,QAAQ,SAAU,QAASnD,IAEzCsb,oBA5BO,WA6BL,IAAMtb,EAAO,GAQb,OANIzqV,KAAKo8U,OAAO,iBACdqO,EAAKzkV,KAAKhG,KAAKo8U,OAAO,kBACbp8U,KAAK0kW,kBACdja,EAAKzkV,KAAKhG,KAAK+sV,QAAQ,iBAGlB/sV,KAAK4tV,QAAQ,UAAW,QAASnD,IAE1CmV,YAvCO,WAwCL,IAAMnV,EAAO,GAQb,OANIzqV,KAAKo8U,OAAOj/R,OACdstS,EAAKzkV,KAAKhG,KAAKo8U,OAAOj/R,QACbn9C,KAAKgrV,YACdP,EAAKzkV,KAAKhG,KAAK+sV,QAAQ,WAGlB/sV,KAAK4tV,QAAQ,SAAU,QAASnD,IAEzCkC,aAlDO,WAmDL,IAAM57U,EAAQgvV,EAAAA,EAAAA,QAAAA,QAAAA,aAAAA,KAAyC//V,MAEjD6tV,EAAU7tV,KAAK+lW,sBAOrB,OALIlY,IACF98U,EAAMwjG,SAAWxjG,EAAMwjG,UAAY,GACnCxjG,EAAMwjG,SAAS+6C,QAAQu+L,IAGlB98U,GAET4uV,aA9DO,WA+DL,OAAK3/V,KAAKq8V,UAILr8V,KAAKyrV,QAMHzrV,KAAK4tV,QAAQ,SAAU,QAAS,CACrC5tV,KAAK+sV,QAAQ,QAAS/sV,KAAK8+V,qBANpB9+V,KAAK4tV,QAAQ,SAAU,QAAS,CACrC5tV,KAAKkgV,eAAe,SANI,MAc9B8lB,WA7EO,WA6EG,UACR,IAAKhmW,KAAKslW,WAAY,OAAO,KAE7B,IAAMzlS,GAAuB,IAAjB7/D,KAAKg4K,QAAmBh4K,KAAKynV,OAAOwe,UAAYjmW,KAAKg4K,QAE3DviD,EAAQ,CACZsmN,KAAM/7U,KAAK+7U,KACXC,MAAOh8U,KAAKg8U,MACZn8Q,IAAAA,EACAv7D,MAAOtE,KAAKu9V,sBAGd,0BAAO,EAAAv9V,KAAKsjV,cAAatrK,cAAzB,EAAOkuL,EAAAA,KAAAA,EAA4B,CAAEzwO,MAAAA,KAArC,EAAiDz1H,KAAKkgV,eAAeimB,EAAU,CAAE1wO,MAAAA,KAEnFg3N,WA3FO,WA4FL,OAAOsT,EAAAA,EAAAA,QAAAA,QAAAA,WAAAA,KAAuC//V,OAEhD6sV,eA9FO,WA+FL,MAAO,CACL7sV,KAAKy/V,cACLz/V,KAAKomW,mBACLpmW,KAAK2/V,eACL3/V,KAAK4/V,cACL5/V,KAAK+gV,gBAGT0e,YAvGO,WAwGL,OAAKz/V,KAAKo+U,SAEHp+U,KAAKkgV,eAAe,WAAY,CACrC1D,MAAO,CACL,eAAe,IAEhB,CAACx8U,KAAKqmW,cANkB,MAQ7BvZ,SAhHO,WAiHL,IAAK9sV,KAAKylW,UAAW,OAAO,KAE5B,IAAMr1V,EAAO,CACXqlH,MAAO,CACLipN,UAAU,EACV9xH,MAAO5sN,KAAKktV,gBACZnR,KAAM/7U,KAAK+7U,KACX4C,SAAU3+U,KAAKw2I,WACfi3M,SAAUztV,KAAKmlW,WAAanlW,KAAK0rV,aAAe1rV,KAAKktV,iBACrDrrJ,IAAK7hM,KAAK4rV,WACVhsR,KAAM5/D,KAAKulW,cAAc3lS,KACzBo8Q,MAAOh8U,KAAKg8U,MACZ9rO,MAAOlwG,KAAKulW,cAAcr1P,MAC1B5rG,MAAOtE,KAAKwlW,aAIhB,OAAOxlW,KAAKkgV,eAAesN,EAAAA,EAAQp9U,EAAMpQ,KAAKo8U,OAAO/2U,OAASrF,KAAKqF,QAErEghW,UApIO,WAqIL,IAAM9mS,EAASv/D,KAAK2kW,aAAe3kW,KAAKwlW,aAAcxlW,KAAKyrV,QAA6B,EAAlBzrV,KAAK+kW,WACrE3oC,EAAOp8T,KAAKkgV,eAAe,OAAQ,CACvCzD,SAAU,CAAExuI,UAAW,WACvBkuI,YAAa,gBAGf,OAAOn8U,KAAKkgV,eAAe,SAAU,CACnC11Q,MAAO,CACLjL,MAAQv/D,KAAKmlW,cAAkCj/T,GAAvB62S,EAAAA,EAAAA,IAAcx9Q,KAEvC,CAAC68P,KAENojC,SAjJO,WAkJL,IAAM11N,EAAYvqI,OAAOwB,OAAO,GAAIf,KAAK8mV,mBAClCh9M,EAAUwvN,OACjB,MAAiCt5V,KAAKynV,OAApB6e,GAAlB,EAAQ7hS,OAAR,aAEA,OAAOzkE,KAAKkgV,eAAe,QAAS,CAClC11Q,MAAO,GACPiyQ,SAAU,CACRn4U,MAAsB,WAAdtE,KAAKktB,MAAqB3tB,OAAOy2K,GAAGh2K,KAAKitP,WAAY,GAAM,KAAOjtP,KAAKitP,WAEjFuvF,OAAO,kBACF8pB,GADA,IAEHhC,UAAWtkW,KAAKskW,UAChB3lB,SAAU3+U,KAAKw2I,WACfvwG,GAAIjmC,KAAK4rV,WACTxjG,YAAapoP,KAAKmgW,uBAAyBngW,KAAK0rV,YAAc1rV,KAAKksV,SAAWlsV,KAAKooP,iBAAcliN,EACjG85T,SAAUhgW,KAAK2rV,WACfz+T,KAAMltB,KAAKktB,OAEbgwT,GAAI39U,OAAOwB,OAAO+oI,EAAW,CAC3Bi2M,KAAM//U,KAAK+gW,OACXhwV,MAAO/Q,KAAKumW,QACZ/nS,MAAOx+D,KAAK8lW,QACZxgB,QAAStlV,KAAKo2V,YAEhB7Q,IAAK,QACLxD,WAAY,CAAC,CACX1uU,KAAM,SACNqzR,UAAW,CAAE8/D,OAAO,GACpBliW,MAAOtE,KAAKk3V,cAIlBtK,YAlLO,WAmLL,IAAK5sV,KAAKurV,YAAa,OAAO,KAE9B,IAAMkb,EAAe1G,EAAAA,EAAAA,QAAAA,QAAAA,YAAAA,KAAwC//V,MACvD0mW,EAAc1mW,KAAKgmW,aAEzB,OAAOhmW,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,yBACZ,CACDsqB,EACAC,KAGJN,iBA/LO,WAgML,OAAOpmW,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,sBACZ,CACDn8U,KAAK8sV,WACL9sV,KAAK69N,OAAS79N,KAAK0/V,SAAS,UAAY,KACxC1/V,KAAKw/V,WACLx/V,KAAKgnM,OAAShnM,KAAK0/V,SAAS,UAAY,QAG5CA,SAzMO,SAyMGxyU,GACR,OAAOltB,KAAKkgV,eAAe,MAAO,CAChC7D,MAAA,wBAAwBnvT,GACxBq4T,IAAKr4T,GACJltB,KAAKktB,KAEV6zU,OA/MO,SA+MCr8V,GAAS,WACf1E,KAAK0rV,WAAY,EACjBhnV,GAAK1E,KAAK8jV,WAAU,kBAAM,EAAK9D,MAAM,OAAQt7U,OAE/C0oV,QAnNO,WAoNDptV,KAAK0rV,WAAa1rV,KAAKw2I,aAAex2I,KAAKokV,MAAMrzU,OAErD/Q,KAAKokV,MAAMrzU,MAAMytD,SAEnBsnS,QAxNO,SAwNEphW,GACP,GAAK1E,KAAKokV,MAAMrzU,MAAhB,CAEA,IAAM02L,GAAOk/J,EAAAA,EAAAA,GAAa3mW,KAAK8/U,KAC/B,GAAKr4I,EAEL,OAAIA,EAAKg9I,gBAAkBzkV,KAAKokV,MAAMrzU,MAC7B/Q,KAAKokV,MAAMrzU,MAAMytD,aAGrBx+D,KAAK0rV,YACR1rV,KAAK0rV,WAAY,EACjBhnV,GAAK1E,KAAKggV,MAAM,QAASt7U,OAG7B6hW,QAvOO,SAuOE7hW,GACP,IAAMihB,EAASjhB,EAAEihB,OACjB3lB,KAAKmsV,cAAgBxmU,EAAOrhB,MAC5BtE,KAAK8kW,SAAWn/U,EAAOihV,UAAYjhV,EAAOihV,SAAS9B,UAErD1O,UA5OO,SA4OI1xV,GAEPA,EAAEmgV,UAAYC,EAAAA,GAAAA,OACd9kV,KAAKitP,YAAcjtP,KAAK86D,eAExB96D,KAAK86D,aAAe96D,KAAKitP,UACzBjtP,KAAKggV,MAAM,SAAUhgV,KAAK86D,eAG5B96D,KAAKggV,MAAM,UAAWt7U,IAExB4oV,YAvPO,SAuPM5oV,GAEPA,EAAEihB,SAAW3lB,KAAKokV,MAAMrzU,QAC1BrM,EAAEq7D,iBACFr7D,EAAEo9U,mBAGJie,EAAAA,EAAAA,QAAAA,QAAAA,YAAAA,KAAwC//V,KAAM0E,IAEhD6oV,UAhQO,SAgQI7oV,GACL1E,KAAKqrV,cAAcrrV,KAAKw+D,QAE5BuhS,EAAAA,EAAAA,QAAAA,QAAAA,UAAAA,KAAsC//V,KAAM0E,IAE9CghW,cArQO,WAsQA1lW,KAAKo+U,WAEVp+U,KAAK+kW,WAAa/kW,KAAKokV,MAAM/+U,MACzB4J,KAAKs2C,IAAmC,IAA/BvlD,KAAKokV,MAAM/+U,MAAMwhW,YAAqB,EAAI7mW,KAAK8/U,IAAoB7wC,YAAc,IAC1F,IAEN02D,eA5QO,WA6QA3lW,KAAKokV,MAAMvmH,SAEhB79N,KAAKglW,YAAchlW,KAAKokV,MAAMvmH,OAAOoxE,cAEvC63D,gBAjRO,WAkRA9mW,KAAKo+U,UAAap+U,KAAKokV,MAAM,mBAElCpkV,KAAKilW,aAAejlW,KAAKokV,MAAM,iBAAiBn1C,cAElD42D,aAtRO,WAuRL,IACG7lW,KAAKskW,WACc,qBAAb3uT,WACN31C,KAAKokV,MAAMrzU,MAAO,OAAO,EAE5B,IAAM02L,GAAOk/J,EAAAA,EAAAA,GAAa3mW,KAAK8/U,KAC/B,SAAKr4I,GAAQA,EAAKg9I,gBAAkBzkV,KAAKokV,MAAMrzU,SAE/C/Q,KAAKokV,MAAMrzU,MAAMytD,SAEV,IAETuoS,YAnSO,SAmSM7nU,GAEXl/B,KAAKgnW,SAAW9nU,EAEZA,EACFl/B,KAAK86D,aAAe96D,KAAKitP,UAChBjtP,KAAK86D,eAAiB96D,KAAKitP,WACpCjtP,KAAKggV,MAAM,SAAUhgV,KAAKitP,YAG9BiqG,SA7SO,WA8SLl3V,KAAK0lW,gBACL1lW,KAAK2lW,iBACL3lW,KAAK8mW,uB,+EC7hBX,QAAehrB,EAAAA,EAAAA,OAAiB,CAC9BzoU,KAAM,mBAENoiH,MAAO,CAAEgyE,KAAMnwG,SAEfw2J,SAAU,CACRmuF,OADQ,WAEN,OAAOj8U,KAAKynM,KACRznM,KAAKinW,WACLnrB,EAAAA,EAAAA,QAAAA,SAAAA,OAAAA,KAAuC97U,QAI/CgpJ,OAb8B,WAe5B,OACEhpJ,KAAKo8U,OAAL,YACAp8U,KAAKo8U,OAAL,WAAqB9zT,MAAK,SAAAqlJ,GAAI,OAAKA,EAAK+iL,WAA2B,MAAd/iL,EAAK16E,Y,yKCPhE,QAAesqP,EAAAA,EAAAA,OAAc,CAC3BlqU,KAAM,YAENoiH,MAAO,CACLipN,SAAUpnP,QACVu1H,OAAQv1H,QACR4vQ,SAAU5vQ,QACVqvP,MAAOrvP,QACP2M,SAAU3M,QACV6vQ,gBAAiB,CACf5qK,QAAS,GACTrvK,KAAM,CAACkb,OAAQz3B,SAEjB8rK,KAAMnlF,QACNq4K,SAAUr4K,QACV8vQ,UAAW9vQ,QACX+vQ,MAAO/vQ,QACPjtB,IAAK,CACHn9C,KAAM,CAACvc,OAAQpR,QACfg9L,QAAS,IAEXvgC,IAAK,CACH9uI,KAAMvc,OACN4rL,QAAS,WAIbnsL,KAAM,iBAAO,CACXk3V,YAAY,IAGdx5G,SAAU,CACR+1G,eADQ,WAEN,IAAMpkS,EAASz/D,KAAKunW,sBAEpB,IAAKvnW,KAAKsnW,WAAY,OAAO7nS,EAE7B,IAAM0nS,EAAkBliT,SAASjlD,KAAKmnW,iBAEtC,OAAOnnW,KAAKwnW,YACR/nS,EACAA,GAAWod,MAAMsqR,GAAqC,EAAlBA,IAE1CI,sBAZQ,WAaN,OAAIvnW,KAAKy/D,OAAexa,SAASjlD,KAAKy/D,QAClCz/D,KAAKynW,aAAeznW,KAAK2mV,MAAc,GACvC3mV,KAAKynW,aAAeznW,KAAA,SAAmB,IACvCA,KAAKynW,YAAoB,IACzBznW,KAAK2mV,MAAc,GACnB3mV,KAAA,UAAcA,KAAKk8U,SAASwrB,WAAWC,UAAkB,GACtD,IAET9qB,QArBQ,WAsBN,OAAO,kBACFU,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAqCv9U,OAD1C,IAEE,aAAa,EACb,sBAAuBA,KAAK0+U,SAC5B,oBAAqB1+U,KAAK6sN,OAC1B,sBAAuB7sN,KAAKknW,SAC5B,uBAAwBlnW,KAAKwnW,YAC7B,mBAAoBxnW,KAAK2mV,MACzB,sBAAuB3mV,KAAKsnW,WAC5B,kBAAmBtnW,KAAKy8K,KACxB,sBAAuBz8K,KAAK2vQ,SAC5B,uBAAwB3vQ,KAAKynW,eAGjCD,YApCQ,WAqCN,OAAOxnW,KAAKknW,UAEdO,YAvCQ,WAwCN,OAAOznW,KAAKonW,WAEdr8D,OA1CQ,WA2CN,OAAO,kBACF/qS,KAAKi9U,kBADV,IAEEx9Q,QAAQs9Q,EAAAA,EAAAA,IAAc/8U,KAAK6jW,oBAKjCpkB,QAjF2B,WAiFpB,WACCC,EAAgB,CACpB,CAAC,MAAO,mBACR,CAAC,gBAAiB,8BAClB,CAAC,eAAgB,4BACjB,CAAC,gBAAiB,6BAClB,CAAC,kBAAmB,+BACpB,CAAC,oBAAqB,iCACtB,CAAC,gBAAiB,6BAClB,CAAC,mBAAoB,gCACrB,CAAC,OAAQ,qBAIXA,EAAc58U,SAAQ,YAA4B,mBAA1B2kK,EAA0B,KAAhB6B,EAAgB,KAC5C,EAAKq2K,OAAO7/U,eAAe2nK,KAAWm4K,EAAAA,EAAAA,IAASn4K,EAAU6B,EAAa,OAI9EpuF,QAAS,CACP0sR,cADO,WAEL,IAAMnyO,EAAQ,CACZh2D,QAAQs9Q,EAAAA,EAAAA,IAAc/8U,KAAK6jW,gBAC3Bx5R,IAAKrqE,KAAKqqE,KAGN8+Q,EAAQnpV,KAAKsjV,aAAarhE,IAC5BjiR,KAAKsjV,aAAarhE,IAAI,CAAExsJ,MAAAA,IACxBz1H,KAAKkgV,eAAe2nB,EAAAA,EAAM,CAAEpyO,MAAAA,IAEhC,OAAOz1H,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,oBACZ,CAACgN,KAENlJ,WAfO,WAgBL,OAAOjgV,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,qBACb3xQ,MAAO,CACL/K,QAAQs9Q,EAAAA,EAAAA,IAAc/8U,KAAKunW,0BAE5B7c,EAAAA,EAAAA,IAAQ1qV,QAEb8nW,aAvBO,WAwBL,OAAO9nW,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,uBACb3xQ,MAAO,CACL/K,QAAQs9Q,EAAAA,EAAAA,IAAc/8U,KAAKmnW,oBAE5Bzc,EAAAA,EAAAA,IAAQ1qV,KAAM,gBAIrBgpJ,OArI2B,SAqInBxtC,GACNx7G,KAAKsnW,WAAatnW,KAAKikG,YAAcjkG,KAAKsjV,aAAajmQ,UAEvD,IAAMk3B,EAAW,CAACv0G,KAAKigV,cACjB7vU,EAAOpQ,KAAKo9U,mBAAmBp9U,KAAK4sN,MAAO,CAC/CyvH,MAAOr8U,KAAK68U,QACZryQ,MAAOxqE,KAAK+qS,OACZmyC,GAAIl9U,KAAKm9U,aAMX,OAHIn9U,KAAKsnW,YAAY/yP,EAASvuG,KAAKhG,KAAK8nW,iBACpC9nW,KAAKqqE,KAAOrqE,KAAKsjV,aAAarhE,MAAK1tK,EAAS+6C,QAAQtvJ,KAAK4nW,iBAEtDpsP,EAAEx7G,KAAKg8J,IAAK5rJ,EAAMmkG,O,wEC7JvBwzP,GAAgB5hB,EAAAA,EAAAA,IAAuB,oBACvC6hB,GAAgB7hB,EAAAA,EAAAA,IAAuB,oBAUzC8hB,EAAAA,G,sKCCJ,SAAepsB,EAAAA,EAAAA,GAAOa,EAAAA,EAAWiW,EAAAA,EAAW3Q,EAAAA,EAAW4Q,EAAAA,GAAUzlM,OAAO,CACtE95I,KAAM,YAENoiH,MAAO,CACLyyO,WAAY,CACVh7U,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,GAEXoiJ,SAAUrnP,QACV6wQ,UAAW,CACTj7U,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,GAEX82J,YAAa,CACXnmU,KAAMoqE,QACNilG,SAAS,GAEX6rK,YAAa,CACXl7U,KAAMoqE,QACNilG,SAAS,GAEXvgC,IAAK,CACH9uI,KAAMvc,OACN4rL,QAAS,QAEXi9I,WAAY7oU,QAGdP,KAAM,iBAAO,CACX2jV,mBAAoB,EACpBsU,iBAAiB,IAGnBv6G,SAAU,CACR+lG,eADQ,WAEN,MAA+B7zV,KAAKg4U,WAA5BqL,EAAR,EAAQA,UAAW7hV,EAAnB,EAAmBA,QACb8mW,GAAWtoW,KAAK6sN,SAAW7sN,KAAK4/D,OAAS5/D,KAAK0/D,MAAQ1/D,KAAKkwG,MAC3Dq4P,GAAgC,IAAhBvoW,KAAK6lV,OAAmBxC,EAAUmlB,WAAanlB,EAAUzjR,KAC3EA,EAAO,EAmBX,OAjBI5/D,KAAK0/D,KAAO1/D,KAAK6sN,QAAUy7I,EAC7B1oS,EACE2oS,EACCllB,EAAU9jR,MAAQ,EAClB/9D,EAAQ+9D,MAAQ,GAEVv/D,KAAK4/D,MAAQ5/D,KAAKkwG,SAC3BtwC,EACE2oS,GACCvoW,KAAKkwG,MAAQmzO,EAAU9jR,OAAS/9D,EAAQ+9D,QACxCv/D,KAAKkwG,MAAQ,IAAM,KAIpBlwG,KAAKyoW,YAAW7oS,GAAQ3a,SAASjlD,KAAKyoW,YACtCzoW,KAAK0oW,aAAY9oS,GAAQ3a,SAASjlD,KAAK0oW,aAEpC,GAAP,OAAU1oW,KAAKg0V,cAAcp0R,EAAM5/D,KAAKg4U,WAAWx2U,QAAQ+9D,OAA3D,OAEFg1R,cA1BQ,WA2BN,MAA+Bv0V,KAAKg4U,WAA5BqL,EAAR,EAAQA,UAAW7hV,EAAnB,EAAmBA,QACbmnW,GAA+B,IAAhB3oW,KAAK6lV,OAAmBxC,EAAU0R,UAAY1R,EAAU3jR,IACzEA,EAAM,EAoBV,OAlBI1/D,KAAK0/D,KAAO1/D,KAAK6sN,OACnBntJ,EACEipS,GACC3oW,KAAK6sN,OAASw2H,EAAU5jR,QAAUj+D,EAAQi+D,SAC1Cz/D,KAAK6sN,OAAS,IAAM,KAEd7sN,KAAK4/D,MAAQ5/D,KAAKkwG,SAC3BxwC,EACEipS,EACCtlB,EAAU5jR,OAAS,EACnBj+D,EAAQi+D,OAAS,GAIlBz/D,KAAK4oW,WAAUlpS,GAAOza,SAASjlD,KAAK4oW,WACpC5oW,KAAKs+V,cAAa5+R,GAAOza,SAASjlD,KAAKs+V,eACvB,IAAhBt+V,KAAK6lV,SAAkBnmR,GAAO1/D,KAAK6oW,aAEhC,GAAP,OAAU7oW,KAAKw0V,cAAc90R,GAA7B,OAEFm9Q,QAnDQ,WAoDN,MAAO,CACL,iBAAkB78U,KAAK0/D,IACvB,mBAAoB1/D,KAAKkwG,MACzB,oBAAqBlwG,KAAK6sN,OAC1B,kBAAmB7sN,KAAK4/D,KACxB,sBACkB,KAAhB5/D,KAAK6lV,SACW,IAAhB7lV,KAAK6lV,QACW,WAAhB7lV,KAAK6lV,SAGX6S,mBA/DQ,WAgEN,OAAI14V,KAAKw5U,WAAmBx5U,KAAKw5U,WAE1Bx5U,KAAKyhV,SAAW,mBAAqB,mBAE9C2R,QApEQ,WAqEN,OAAOpzV,KAAK0/D,KAAO1/D,KAAK6sN,QAE1BsmI,QAvEQ,WAwEN,OAAOnzV,KAAK4/D,MAAQ5/D,KAAKkwG,OAE3B66L,OA1EQ,WA2EN,MAAO,CACLnrO,KAAM5/D,KAAK6zV,eACXrR,UAAUzF,EAAAA,EAAAA,IAAc/8U,KAAKwiV,UAC7BxF,UAAUD,EAAAA,EAAAA,IAAc/8U,KAAKg9U,UAC7Bt9Q,IAAK1/D,KAAKu0V,cACVxnI,OAAQ/sN,KAAK+sN,QAAU/sN,KAAKskV,gBAKlCT,YAtHsE,WAsH3D,WACT7jV,KAAK8jV,WAAU,WACb,EAAKx/U,OAAS,EAAK4wV,mBAIvBlL,QA5HsE,WA6HvB,YAAzC8e,EAAAA,EAAAA,IAAY9oW,KAAM,aAAa,KACjCi+V,EAAAA,EAAAA,IAAa,uGAAqGj+V,OAItHk7E,QAAS,CACPqxM,SADO,WAILvsR,KAAKm1V,mBAELzoE,sBAAsB1sR,KAAKo1V,kBAE7B2T,WARO,WASL/oW,KAAK82V,SAAS,UAEhBX,sBAXO,WAWc,WACbrsN,EAAYu4M,EAAAA,EAAAA,QAAAA,QAAAA,sBAAAA,KAAuDriV,MAoBzE,OAlBIA,KAAKooW,cACPt+N,EAAUtrE,MAAS,SAAA95D,GACjB,EAAKsgV,aAAatgV,GAClB,EAAKoyV,SAAS,SAEhBhtN,EAAUi2M,KAAQ,SAAAr7U,GAChB,EAAKsgV,aAAatgV,GAClB,EAAKoyV,SAAS,WAIlBhtN,EAAUw7M,QAAW,SAAA5gV,GACfA,EAAEmgV,UAAYC,EAAAA,GAAAA,MAChB,EAAKE,aAAatgV,GAClB,EAAKoyV,SAAS,WAIXhtN,GAETosN,uBAlCO,WAmCL,MAAO,CACL,iBAAiB,EACjB,gBAAiBvlV,OAAO3Q,KAAKyhV,YAGjC+D,cAxCO,WAyCL,IAAMhkV,EAAUxB,KAAKigV,aAErB,OAAKjgV,KAAK04V,mBAEH14V,KAAKkgV,eAAe,aAAc,CACvCzqN,MAAO,CACLpiH,KAAMrT,KAAK04V,qBAEZ,CAACl3V,IANiCA,GAQvCy+U,WAnDO,WAmDG,MACR,OAAOjgV,KAAKkgV,eACV,MACAlgV,KAAKo9U,mBAAmBp9U,KAAK4sN,MAAO,CAClCuvH,YAAa,qBACbE,OAAA,eACGr8U,KAAKkjV,cAAe,IADvB,qCAE6BljV,KAAKyhV,WAFlC,SAGE,4BAA6BzhV,KAAKu2V,gBAHpC,GAKA/rR,MAAOxqE,KAAK+qS,OACZyxC,MAAOx8U,KAAKqlV,kBACZtD,WAAY,CAAC,CACX1uU,KAAM,OACN/O,MAAOtE,KAAK40V,kBAEdrP,IAAK,YAEPvlV,KAAK4lV,oBAKX58L,OA5MsE,SA4M9DxtC,GAAC,WACP,OAAOA,EAAEx7G,KAAKg8J,IAAK,CACjBmgL,YAAa,YACbE,MAAOr8U,KAAK68U,SACX,CACD78U,KAAKklV,iBAAgB,iBAAM,CAAC,EAAKM,oBACjCxlV,KAAK8lV,qB,qHCjNX,QAAenJ,EAAAA,EAAAA,OAAkB,CAC/BtpU,KAAM,mBAEN0uU,WAAY,CAAEinB,OAAAA,EAAAA,GAEdvzO,MAAO,CACLwzO,MAAO,CACL/7U,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,GAEX2sK,WAAY,CACVh8U,KAAM,CAACkb,OAAQz3B,QACf4pK,UAAU,GAEZvrE,MAAO,CACL9hF,KAAMxtB,MACN68L,QAAS,iBAAM,MAInBnsL,KAAM,iBAAO,CACXmtJ,MAAO,EACPC,KAAM,EACNq3L,UAAW,IAGb/mG,SAAU,CACRq7G,QADQ,WAEN,OAAOlkT,SAASjlD,KAAKipW,MAAO,KAE9BG,aAJQ,WAKN,OAAOnkT,SAASjlD,KAAKkpW,WAAY,KAEnCG,cAPQ,WAQN,OAAOp6V,KAAK4wD,IAAI,EAAG7/D,KAAKu9J,MAAQv9J,KAAKmpW,UAEvCG,aAVQ,WAWN,OAAOr6V,KAAKs2C,IAAIvlD,KAAKgvG,MAAM3tG,OAAQrB,KAAKw9J,KAAOx9J,KAAKmpW,WAIxD5lB,MAAO,CACL9jR,OAAQ,WACRypS,WAAY,YAGdlf,QA9C+B,WA+C7BhqV,KAAKw9J,KAAOx9J,KAAKupW,QAAQ,IAG3BruR,QAAS,CACPsuR,YADO,WAEL,OAAOxpW,KAAKgvG,MAAMziE,MAChBvsC,KAAKqpW,cACLrpW,KAAKspW,cACLvtV,IAAI/b,KAAKypW,WAEbA,SAPO,SAOGrgV,EAAWkpB,GACnBA,GAAStyC,KAAKqpW,cAEd,IAAM3pS,GAAMq9Q,EAAAA,EAAAA,IAAczqS,EAAQtyC,KAAKopW,cAEvC,OAAOppW,KAAKkgV,eAAe,MAAO,CAChC/D,YAAa,yBACb3xQ,MAAO,CAAE9K,IAAAA,GACT9jD,IAAK02B,IACJo4S,EAAAA,EAAAA,IAAQ1qV,KAAM,UAAW,CAAEsyC,MAAAA,EAAOlpB,KAAAA,MAEvCsgV,SAlBO,WAmBL,OAAOz6V,KAAKq2C,MAAMtlD,KAAK60V,UAAY70V,KAAKopW,eAE1CG,QArBO,SAqBEhsM,GACP,IAAM99F,EAASxa,SAASjlD,KAAKy/D,QAAU,EAAG,KAAOz/D,KAAK8/U,IAAIxgR,aAE1D,OAAOi+F,EAAQtuJ,KAAKqD,KAAKmtD,EAASz/D,KAAKopW,eAEzC1I,SA1BO,WA2BL1gW,KAAK60V,UAAY70V,KAAK8/U,IAAI+U,UAC1B70V,KAAKu9J,MAAQv9J,KAAK0pW,WAClB1pW,KAAKw9J,KAAOx9J,KAAKupW,QAAQvpW,KAAKu9J,SAIlCvU,OAnF+B,SAmFvBxtC,GACN,IAAMh6G,EAAUg6G,EAAE,MAAO,CACvB2gO,YAAa,8BACb3xQ,MAAO,CACL/K,QAAQs9Q,EAAAA,EAAAA,IAAe/8U,KAAKgvG,MAAM3tG,OAASrB,KAAKopW,gBAEjDppW,KAAKwpW,eAER,OAAOhuP,EAAE,MAAO,CACd2gO,YAAa,mBACb3xQ,MAAOxqE,KAAKi9U,iBACZ8E,WAAY,CAAC,CACX1uU,KAAM,SACNqzR,UAAW,CAAEhvN,MAAM,GACnBpzE,MAAOtE,KAAK0gW,WAEdxjB,GAAIl9U,KAAKm9U,YACR,CAAC37U,Q,+ICpHR,SAASmoW,IAEkC,UADzCC,EACyC,uDADX,GACW,mBAAtCC,EAAsC,iCAAtCA,EAAsC,kBAGzC,OAAO,EAAAnqW,SAAkB8G,OAAlB,SAAyBojW,GAAzB,OAAkCC,IAGrC,SAAUC,EACdz2V,GAEa,IADbmrC,EACa,uDADJ,eACTg4H,EAAa,uCAEb,MAAO,CACLnjK,KAAAA,EAEAm2I,YAAY,EAEZ/zB,MAAO,CACL0/C,MAAO,CACLjoJ,KAAMoqE,QACNilG,SAAS,GAEXwtK,YAAa,CACX78U,KAAMoqE,QACNilG,SAAS,GAEXytK,cAAe,CACb98U,KAAMoqE,QACNilG,SAAS,GAEX/lB,KAAM,CACJtpJ,KAAMvc,OACN4rL,QAAS/lB,GAEXh4H,OAAQ,CACNtxB,KAAMvc,OACN4rL,QAAS/9I,IAIbwqG,OA5BK,SA4BGxtC,EAAGnF,GACT,IAAM2lD,EAAM,aAAH,OAAgB3lD,EAAQof,MAAM0/C,MAAQ,SAAW,IACpD/kK,EAAkB,CACtBqlH,MAAO,CACLpiH,KAAAA,EACAmjK,KAAMngE,EAAQof,MAAM+gD,MAEtB0mK,GAAI,CACFwlB,YADE,SACWluM,GACXA,EAAGhqF,MAAMivM,gBAAkBpjK,EAAQof,MAAMj3E,OACzCg2G,EAAGhqF,MAAMkvM,sBAAwBrjK,EAAQof,MAAMj3E,UAuCrD,OAlCI63D,EAAQof,MAAMu0O,gBAChB55V,EAAK8sU,GAAI+sB,MAAQN,EAAiBv5V,EAAK8sU,GAAI+sB,OAAQ,SAAAz1M,GACjD,IAAQugM,EAAqDvgM,EAArDugM,UAAWyT,EAA0Ch0M,EAA1Cg0M,WAAYv5D,EAA8Bz6I,EAA9By6I,YAAayzB,EAAiBluK,EAAjBkuK,aAC5CluK,EAAG01M,yBAA2B,CAC5Bx/R,SAAU8pF,EAAGhqF,MAAME,SACnBhL,IAAK80F,EAAGhqF,MAAM9K,IACdE,KAAM40F,EAAGhqF,MAAM5K,KACfL,MAAOi1F,EAAGhqF,MAAMjL,MAChBE,OAAQ+0F,EAAGhqF,MAAM/K,QAEnB+0F,EAAGhqF,MAAME,SAAW,WACpB8pF,EAAGhqF,MAAM9K,IAAMq1R,EAAY,KAC3BvgM,EAAGhqF,MAAM5K,KAAO4oS,EAAa,KAC7Bh0M,EAAGhqF,MAAMjL,MAAQ0vO,EAAc,KAC/Bz6I,EAAGhqF,MAAM/K,OAASijQ,EAAe,QAEnCtyT,EAAK8sU,GAAIitB,WAAaR,EAAiBv5V,EAAK8sU,GAAIitB,YAAa,SAAA31M,GAC3D,GAAIA,GAAMA,EAAG01M,yBAA0B,CACrC,MAA+C11M,EAAG01M,yBAA1Cx/R,EAAR,EAAQA,SAAUhL,EAAlB,EAAkBA,IAAKE,EAAvB,EAAuBA,KAAML,EAA7B,EAA6BA,MAAOE,EAApC,EAAoCA,cAC7B+0F,EAAG01M,yBACV11M,EAAGhqF,MAAME,SAAWA,GAAY,GAChC8pF,EAAGhqF,MAAM9K,IAAMA,GAAO,GACtB80F,EAAGhqF,MAAM5K,KAAOA,GAAQ,GACxB40F,EAAGhqF,MAAMjL,MAAQA,GAAS,GAC1Bi1F,EAAGhqF,MAAM/K,OAASA,GAAU,QAI9B42C,EAAQof,MAAMs0O,cAChB35V,EAAK8sU,GAAI+sB,MAAQN,EAAiBv5V,EAAK8sU,GAAI+sB,OAAQ,SAAAz1M,GACjDA,EAAGhqF,MAAMy4R,YAAY,UAAW,OAAQ,iBAIrCznP,EAAEwgD,GAAKqmG,EAAAA,EAAAA,IAAUhsJ,EAAQjmG,KAAMA,GAAOimG,EAAQ9B,YAKrD,SAAU61P,EACd/2V,EACAm7P,GACe,IAAfh4F,EAAe,uDAAR,SAEP,MAAO,CACLnjK,KAAAA,EAEAm2I,YAAY,EAEZ/zB,MAAO,CACL+gD,KAAM,CACJtpJ,KAAMvc,OACN4rL,QAAS/lB,IAIbxtB,OAZK,SAYGxtC,EAAGnF,GACT,OAAOmF,EACL,cACA6mJ,EAAAA,EAAAA,IAAUhsJ,EAAQjmG,KAAM,CACtBqlH,MAAO,CAAEpiH,KAAAA,GACT6pU,GAAI1uE,IAENn4J,EAAQ9B,Y,yBC9GF,aAA8C,IAAnC81P,EAAmC,uDAAb,GAAI/8L,EAAS,wDACpDg9L,EAAeh9L,EAAI,QAAU,SAC7Bi9L,EAAiB,SAAH,QAAYvsH,EAAAA,EAAAA,IAAWssH,IAE3C,MAAO,CACL5H,YADK,SACQluM,GACXA,EAAGg2M,QAAUh2M,EAAGzpF,WAChBypF,EAAGwuM,eAAH,QACExpB,WAAYhlL,EAAGhqF,MAAMgvQ,WACrB7+Q,SAAU65F,EAAGhqF,MAAM7P,UAClB2vS,EAAe91M,EAAGhqF,MAAM8/R,KAI7Bh8L,MAVK,SAUE9Z,GACL,IAAMi2M,EAAej2M,EAAGwuM,cAExBxuM,EAAGhqF,MAAMy4R,YAAY,aAAc,OAAQ,aAE3CzuM,EAAGhqF,MAAM7P,SAAW,SACpB,IAAMzyB,EAAS,GAAH,OAAMssH,EAAG+1M,GAAT,MAEZ/1M,EAAGhqF,MAAM8/R,GAAgB,IAEpB91M,EAAGkuK,aAERluK,EAAGhqF,MAAMgvQ,WAAaixB,EAAajxB,WAE/B6wB,GAAuB71M,EAAGg2M,SAC5Bh2M,EAAGg2M,QAAQrlM,UAAUhoI,IAAIktU,GAG3B39E,uBAAsB,WACpBl4H,EAAGhqF,MAAM8/R,GAAgBpiU,MAI7Bs6T,WAAYC,EACZiI,eAAgBjI,EAEhBwH,MApCK,SAoCEz1M,GACLA,EAAGwuM,eAAH,QACExpB,WAAY,GACZ7+Q,SAAU65F,EAAGhqF,MAAM7P,UAClB2vS,EAAe91M,EAAGhqF,MAAM8/R,IAG3B91M,EAAGhqF,MAAM7P,SAAW,SACpB65F,EAAGhqF,MAAM8/R,GAAT,UAA4B91M,EAAG+1M,GAA/B,MACK/1M,EAAGkuK,aAERh2C,uBAAsB,kBAAOl4H,EAAGhqF,MAAM8/R,GAAgB,QAGxDH,WAAAA,EACArH,eAAgBqH,GAGlB,SAASA,EAAY31M,GACf61M,GAAuB71M,EAAGg2M,SAC5Bh2M,EAAGg2M,QAAQrlM,UAAUhhC,OAAOkmO,GAE9B5H,EAAYjuM,GAGd,SAASiuM,EAAajuM,GACpB,IAAM32H,EAAO22H,EAAGwuM,cAAesH,GAC/B91M,EAAGhqF,MAAM7P,SAAW65F,EAAGwuM,cAAeroS,SAC1B,MAAR98B,IAAc22H,EAAGhqF,MAAM8/R,GAAgBzsU,UACpC22H,EAAGwuM,eCzEqB8G,EAAuB,uBAChBA,EAAuB,+BAD1D,IAEMa,EAAiBb,EAAuB,kBACxCc,EAAwBd,EAAuB,0BAE/Ce,GADkBf,EAAuB,mBACxBA,EAAuB,iBAAkB,gBAAiB,WAM3E1Q,GAHoB0Q,EAAuB,qBACjBA,EAAuB,4BAC1BA,EAAuB,yBAC5BA,EAAuB,oBAIzCgB,GAHmBhB,EAAuB,oBACrBA,EAAuB,uBAChBA,EAAuB,+BAC9BA,EAAuB,wBAC5CiB,EAA4BjB,EAAuB,+BACnDzQ,EAAoByQ,EAAuB,sBAM3CnY,GAL2BmY,EAAuB,8BAC9BA,EAAuB,sBAChBA,EAAuB,8BAG9BM,EAA2B,oBAAqBY,MACpErpB,EAAqByoB,EAA2B,sBAAuBY,EAA0B,IAAI,K,mGClBlH,SAASC,IACP,OAAO,EAGT,SAASC,EAAYxmW,EAAiB8vJ,EAAiB6wF,GAKrD,IAAK3gP,IAAmC,IAA9BymW,EAAczmW,EAAG2gP,GAAoB,OAAO,EAKtD,IAAM59C,GAAOk/J,EAAAA,EAAAA,GAAanyM,GAC1B,GACwB,qBAAf42M,YACP3jK,aAAgB2jK,YAChB3jK,EAAK5jK,OAASn/B,EAAEihB,OAChB,OAAO,EAIT,IAAMymR,GAAsC,YAAzB,OAAO/mD,EAAQ/gP,QAAsB+gP,EAAQ/gP,MAAMqhV,SAAa,iBAAM,OASzF,OAPAv5C,EAASpmS,KAAKwuJ,IAON43I,EAAS94Q,MAAK,SAAAkhI,GAAE,OAAIA,EAAG8qE,SAAS56N,EAAEihB,WAG5C,SAASwlV,EAAezmW,EAAiB2gP,GACvC,IAAMo8F,EAAqC,YAAzB,OAAOp8F,EAAQ/gP,QAAsB+gP,EAAQ/gP,MAAM4/U,kBAAqB+mB,EAE1F,OAAOxpB,EAAS/8U,GAGlB,SAAS2mW,EAAW3mW,EAAiB8vJ,EAAiB6wF,EAAgCimH,GACpF,IAAM5uP,EAAmC,oBAAlB2oI,EAAQ/gP,MAAuB+gP,EAAQ/gP,MAAQ+gP,EAAQ/gP,MAAOo4G,QAErF83C,EAAG+2M,cAAeC,yBAA2BN,EAAWxmW,EAAG8vJ,EAAI6wF,IAAY38M,YAAW,WACpFyiU,EAAczmW,EAAG2gP,IAAY3oI,GAAWA,EAAQh4G,KAC/C,GAGL,SAAS+mW,EAAcj3M,EAAiBniI,GACtC,IAAMo1K,GAAOk/J,EAAAA,EAAAA,GAAanyM,GAE1BniI,EAASsjB,UAEiB,qBAAfy1T,YAA8B3jK,aAAgB2jK,YACvD/4U,EAASo1K,GAIN,IAAM66I,EAAe,CAM1BopB,SAN0B,SAMhBl3M,EAAiB6wF,EAAgCimH,GACzD,IAAMle,EAAW,SAAA1oV,GAAD,OAAc2mW,EAAU3mW,EAAmB8vJ,EAAI6wF,EAASimH,IAClEK,EAAe,SAAAjnW,GACnB8vJ,EAAG+2M,cAAeC,wBAA0BN,EAAWxmW,EAAmB8vJ,EAAI6wF,IAGhFomH,EAAaj3M,GAAK,SAAAphC,GAChBA,EAAI1tG,iBAAiB,QAAS0nU,GAAS,GACvCh6N,EAAI1tG,iBAAiB,YAAaimV,GAAa,MAG5Cn3M,EAAG+2M,gBACN/2M,EAAG+2M,cAAgB,CACjBC,yBAAyB,IAI7Bh3M,EAAG+2M,cAAcD,EAAMj1P,QAASw1O,MAAQ,CACtCuB,QAAAA,EACAue,YAAAA,IAIJjoB,OA7B0B,SA6BlBlvL,EAAiB6wF,EAAgCimH,GAClD92M,EAAG+2M,gBAERE,EAAaj3M,GAAK,SAAAphC,GAAoB,MACpC,GAAKA,GAAO,SAACohC,EAAG+2M,gBAAHK,EAAmBN,EAAMj1P,QAASw1O,MAA/C,CAEA,MAAiCr3L,EAAG+2M,cAAcD,EAAMj1P,QAASw1O,MAAzDuB,EAAR,EAAQA,QAASue,EAAjB,EAAiBA,YAEjBv4O,EAAI1vE,oBAAoB,QAAS0pS,GAAS,GAC1Ch6N,EAAI1vE,oBAAoB,YAAaioT,GAAa,cAG7Cn3M,EAAG+2M,cAAcD,EAAMj1P,QAASw1O,SAI3C,W,6ECrGA,SAAS6f,EAAUl3M,EAAiB6wF,EAAgCimH,GAClE,GAAsB,qBAAXnnV,QAA4B,yBAA0BA,OAAjE,CAEA,IAAMuiR,EAAYrhD,EAAQqhD,WAAa,GACjCpiS,EAAQ+gP,EAAQ/gP,MACtB,EAA8C,YAAjB,OAAOA,GAChCA,EACA,CAAEo4G,QAASp4G,EAAO1C,QAAS,IAFvB86G,EAAR,EAAQA,QAAS96G,EAAjB,EAAiBA,QAGX44E,EAAW,IAAIqxR,sBAAqB,WAGtC,MAFFzyR,EAEE,uDAFqC,GACvCoB,EACE,uCACIsxR,EAAQ,SAAGt3M,EAAGs3M,eAAN,EAAGC,EAAcT,EAAMj1P,QAASw1O,MAC9C,GAAKigB,EAAL,CAEA,IAAM7hB,EAAiB7wQ,EAAQ9lD,MAAK,SAAAtX,GAAK,OAAIA,EAAMiuU,mBAKjDvtO,GACGgqL,EAAU8/D,QACXsF,EAASvuO,MAERmpK,EAAU96B,OACXq+E,IACA6hB,EAASvuO,MAGX7gB,EAAQtjC,EAASoB,EAAUyvQ,GAGzBA,GAAkBvjD,EAAU96B,KAAM83E,EAAOlvL,EAAI6wF,EAASimH,GACrDQ,EAASvuO,MAAO,KACpB37H,GAEH4yJ,EAAGs3M,SAAWvsW,OAAOi1J,EAAGs3M,UACxBt3M,EAAGs3M,SAAUR,EAAMj1P,QAASw1O,MAAQ,CAAEtuN,MAAM,EAAO/iD,SAAAA,GAEnDA,EAASi0F,QAAQja,IAGnB,SAASkvL,EAAQlvL,EAAiB6wF,EAAgCimH,GAAY,MACtE78L,EAAO,SAAGja,EAAGs3M,eAAN,EAAGE,EAAcV,EAAMj1P,QAASw1O,MACxCp9K,IAELA,EAAQj0F,SAASyxR,UAAUz3M,UACpBA,EAAGs3M,SAAUR,EAAMj1P,QAASw1O,OAG9B,IAAMoY,EAAY,CACvByH,SAAAA,EACAhoB,OAAAA,GAGF,W,2BChEA,SAASgoB,EAAUl3M,EAAiB6wF,EAA+BimH,GACjE,IAAMj5U,EAAWgzN,EAAQ/gP,MACnB1C,EAAUyjP,EAAQzjP,SAAW,CAAEsqW,SAAS,GAE9C/nV,OAAOuB,iBAAiB,SAAU2M,EAAUzwB,GAE5C4yJ,EAAG23M,UAAY5sW,OAAOi1J,EAAG23M,WACzB33M,EAAG23M,UAAWb,EAAMj1P,QAASw1O,MAAQ,CACnCx5T,SAAAA,EACAzwB,QAAAA,GAGGyjP,EAAQqhD,WAAcrhD,EAAQqhD,UAAU8/D,OAC3Cn0U,IAIJ,SAASqxT,EAAQlvL,EAAiB6wF,EAA+BimH,GAAY,MAC3E,GAAI,SAAC92M,EAAG23M,YAAHC,EAAed,EAAMj1P,QAASw1O,MAAnC,CAEA,MAA8Br3L,EAAG23M,UAAUb,EAAMj1P,QAASw1O,MAAlDx5T,EAAR,EAAQA,SAAUzwB,EAAlB,EAAkBA,QAElBuiB,OAAOu/B,oBAAoB,SAAUrxB,EAAUzwB,UAExC4yJ,EAAG23M,UAAUb,EAAMj1P,QAASw1O,O,iBAG9B,IAAMgH,EAAS,CACpB6Y,SAAAA,EACAhoB,OAAAA,GAGF,W,+FC5BM2oB,EAAe,GAErB,SAAS3jH,EAAWl0F,EAAiBlwJ,GACnCkwJ,EAAGhqF,MAAMk+K,UAAYpkP,EACrBkwJ,EAAGhqF,MAAMw4P,gBAAkB1+T,EAS7B,SAASgoW,EAAc5nW,GACrB,MAA8B,eAAvBA,EAAEzE,YAAYoT,KAGvB,SAASk5V,EAAiB7nW,GACxB,MAA8B,kBAAvBA,EAAEzE,YAAYoT,KAGvB,IAAMm5V,EAAY,SAChB9nW,EACA8vJ,GAEE,IADFlwJ,EACE,uDADqB,GAEnBmoW,EAAS,EACTC,EAAS,EAEb,IAAKH,EAAgB7nW,GAAI,CACvB,IAAMwjC,EAASssH,EAAGglM,wBACZ7zU,EAAS2mV,EAAa5nW,GAAKA,EAAEioW,QAAQjoW,EAAEioW,QAAQtrW,OAAS,GAAKqD,EAEnE+nW,EAAS9mV,EAAOinV,QAAU1kU,EAAO03B,KACjC8sS,EAAS/mV,EAAOknV,QAAU3kU,EAAOw3B,IAGnC,IAAI47O,EAAS,EACT7Z,EAAQ,GACRjtI,EAAGs4M,SAAWt4M,EAAGs4M,QAAQxtB,QAC3B79C,EAAQ,IACR6Z,EAAS9mJ,EAAGr1F,YAAc,EAC1Bm8O,EAASh3S,EAAM4iU,OAAS5rB,EAASA,EAASrsS,KAAKwpQ,KAAK,SAACg0F,EAASnxD,EAAW,GAArB,SAA0BoxD,EAASpxD,EAAW,IAAK,GAEvGA,EAASrsS,KAAKwpQ,KAAK,SAAAjkH,EAAGr1F,YAAe,GAAlB,SAAsBq1F,EAAGl1F,aAAgB,IAAK,EAGnE,IAAMytS,EAAU,GAAH,QAAOv4M,EAAGr1F,YAAwB,EAATm8O,GAAe,EAAxC,MACP0xD,EAAU,GAAH,QAAOx4M,EAAGl1F,aAAyB,EAATg8O,GAAe,EAAzC,MAEPhuI,EAAIhpK,EAAM4iU,OAAS6lC,EAAf,UAA4BN,EAASnxD,EAArC,MACJp2S,EAAIZ,EAAM4iU,OAAS8lC,EAAf,UAA4BN,EAASpxD,EAArC,MAEV,MAAO,CAAEA,OAAAA,EAAQ7Z,MAAAA,EAAOn0H,EAAAA,EAAGpoK,EAAAA,EAAG6nW,QAAAA,EAASC,QAAAA,IAGnCC,EAAU,CAEd9hF,KAFc,SAGZzmR,EACA8vJ,GACyB,IAAzBlwJ,EAAyB,uDAAF,GAEvB,GAAKkwJ,EAAGs4M,SAAYt4M,EAAGs4M,QAAQv/Q,QAA/B,CAIA,IAAMmlD,EAAY/8F,SAAS40B,cAAc,QACnCi2M,EAAY7qO,SAAS40B,cAAc,QAEzCmoE,EAAU5nE,YAAY01M,GACtB9tI,EAAUuV,UAAY,sBAElB3jJ,EAAK,WACPouI,EAAUuV,WAAV,WAA2B3jJ,EAAK,WAGlC,MAAkDkoW,EAAU9nW,EAAG8vJ,EAAIlwJ,GAA3Dg3S,EAAR,EAAQA,OAAQ7Z,EAAhB,EAAgBA,MAAOn0H,EAAvB,EAAuBA,EAAGpoK,EAA1B,EAA0BA,EAAG6nW,EAA7B,EAA6BA,QAASC,EAAtC,EAAsCA,QAEhCnvU,EAAO,GAAH,OAAe,EAATy9Q,EAAN,MACV96B,EAAUv4H,UAAY,sBACtBu4H,EAAUh2M,MAAMjL,MAAQ1hC,EACxB2iP,EAAUh2M,MAAM/K,OAAS5hC,EAEzB22H,EAAG1pF,YAAY4nE,GAEf,IAAMo7G,EAAW3pO,OAAO+oV,iBAAiB14M,GACrCs5F,GAAkC,WAAtBA,EAASpjL,WACvB8pF,EAAGhqF,MAAME,SAAW,WACpB8pF,EAAG24M,QAAQC,iBAAmB,UAGhC5sF,EAAUr7G,UAAUhoI,IAAI,8BACxBqjP,EAAUr7G,UAAUhoI,IAAI,gCACxBurN,EAAU83B,EAAD,oBAAyBlzG,EAAzB,aAA+BpoK,EAA/B,qBAA6Cu8R,EAA7C,YAAsDA,EAAtD,YAA+DA,EAA/D,MACTjhB,EAAU2sF,QAAQE,UAAY18V,OAAOq5D,YAAYt5C,OAEjDgY,YAAW,WACT83O,EAAUr7G,UAAUhhC,OAAO,8BAC3Bq8I,EAAUr7G,UAAUhoI,IAAI,2BACxBurN,EAAU83B,EAAD,oBAAyBusF,EAAzB,aAAqCC,EAArC,uBACR,KAGL9hF,KAhDc,SAgDR12H,GACJ,GAAKA,GAAOA,EAAGs4M,SAAYt4M,EAAGs4M,QAAQv/Q,QAAtC,CAEA,IAAM0/Q,EAAUz4M,EAAGq4H,uBAAuB,uBAE1C,GAAuB,IAAnBogF,EAAQ5rW,OAAZ,CACA,IAAMm/Q,EAAYysF,EAAQA,EAAQ5rW,OAAS,GAE3C,IAAIm/Q,EAAU2sF,QAAQG,SAAtB,CACK9sF,EAAU2sF,QAAQG,SAAW,OAElC,IAAMpxK,EAAOlyH,YAAYt5C,MAAQ0X,OAAOo4O,EAAU2sF,QAAQE,WACpD5kU,EAAQx5B,KAAK4wD,IAAI,IAAMq8H,EAAM,GAEnCxzJ,YAAW,WACT83O,EAAUr7G,UAAUhhC,OAAO,2BAC3Bq8I,EAAUr7G,UAAUhoI,IAAI,4BAExBuL,YAAW,WACT,IAAMukU,EAAUz4M,EAAGq4H,uBAAuB,uBACnB,IAAnBogF,EAAQ5rW,QAAgBmzJ,EAAG24M,QAAQC,mBACrC54M,EAAGhqF,MAAME,SAAW8pF,EAAG24M,QAAQC,wBACxB54M,EAAG24M,QAAQC,kBAGpB5sF,EAAUz1M,YAAcypF,EAAGxpF,YAAYw1M,EAAUz1M,cAChD,OACFtiC,QAIP,SAAS8kU,EAAiBjpW,GACxB,MAAwB,qBAAVA,KAA2BA,EAG3C,SAASkpW,EAAY9oW,GACnB,IAAMJ,EAAuB,GACvBk2J,EAAU91J,EAAE+oW,cAElB,GAAKjzM,GAAYA,EAAQsyM,UAAWtyM,EAAQsyM,QAAQY,UAAWhpW,EAAEipW,WAAjE,CAKA,GAFAjpW,EAAEipW,YAAa,EAEXrB,EAAa5nW,GACf81J,EAAQsyM,QAAQY,SAAU,EAC1BlzM,EAAQsyM,QAAQc,SAAU,OAM1B,GAAIpzM,EAAQsyM,QAAQc,QAAS,OAO/B,GALAtpW,EAAM4iU,OAAS1sK,EAAQsyM,QAAQ5J,UAAYqJ,EAAgB7nW,GACvD81J,EAAQsyM,QAAR,WACFxoW,EAAK,SAASk2J,EAAQsyM,QAAR,UAGZR,EAAa5nW,GAAI,CAEnB,GAAI81J,EAAQsyM,QAAQe,gBAAiB,OAErCrzM,EAAQsyM,QAAQe,gBAAkB,WAChCZ,EAAQ9hF,KAAKzmR,EAAG81J,EAASl2J,IAE3Bk2J,EAAQsyM,QAAQgB,UAAY3pV,OAAOukB,YAAW,WACxC8xH,GAAWA,EAAQsyM,SAAWtyM,EAAQsyM,QAAQe,kBAChDrzM,EAAQsyM,QAAQe,kBAChBrzM,EAAQsyM,QAAQe,gBAAkB,QAEnCxB,QAEHY,EAAQ9hF,KAAKzmR,EAAG81J,EAASl2J,IAI7B,SAASypW,EAAYrpW,GACnB,IAAM81J,EAAU91J,EAAE+oW,cAClB,GAAKjzM,GAAYA,EAAQsyM,QAAzB,CAMA,GAJA3oV,OAAOoiD,aAAai0F,EAAQsyM,QAAQgB,WAIrB,aAAXppW,EAAEwoB,MAAuBstI,EAAQsyM,QAAQe,gBAQ3C,OAPArzM,EAAQsyM,QAAQe,kBAChBrzM,EAAQsyM,QAAQe,gBAAkB,UAGlCrzM,EAAQsyM,QAAQgB,UAAYplU,YAAW,WACrCqlU,EAAWrpW,OAKfyf,OAAOukB,YAAW,WACZ8xH,EAAQsyM,UACVtyM,EAAQsyM,QAAQY,SAAU,MAG9BT,EAAQ/hF,KAAK1wH,IAGf,SAASwzM,EAAkBtpW,GACzB,IAAM81J,EAAU91J,EAAE+oW,cAEbjzM,GAAYA,EAAQsyM,UAErBtyM,EAAQsyM,QAAQe,kBAClBrzM,EAAQsyM,QAAQe,gBAAkB,MAGpC1pV,OAAOoiD,aAAai0F,EAAQsyM,QAAQgB,YAGtC,IAAIG,GAAiB,EAErB,SAASC,EAAoBxpW,GACtBupW,GAAmBvpW,EAAEmgV,UAAYC,EAAAA,GAAAA,OAAkBpgV,EAAEmgV,UAAYC,EAAAA,GAAAA,QACpEmpB,GAAiB,EACjBT,EAAW9oW,IAIf,SAASypW,EAAoBzpW,GAC3BupW,GAAiB,EACjBF,EAAWrpW,GAGb,SAAS0pW,EAAiB1pW,IACD,IAAnBupW,IACFA,GAAiB,EACjBF,EAAWrpW,IAIf,SAAS2pW,EAAc75M,EAAiB6wF,EAAyBipH,GAC/D,IAAM/gR,EAAUggR,EAAgBloH,EAAQ/gP,OACnCipF,GACH0/Q,EAAQ/hF,KAAK12H,GAEfA,EAAGs4M,QAAUt4M,EAAGs4M,SAAW,GAC3Bt4M,EAAGs4M,QAAQv/Q,QAAUA,EACrB,IAAMjpF,EAAQ+gP,EAAQ/gP,OAAS,GAC3BA,EAAM4iU,SACR1yK,EAAGs4M,QAAQ5J,UAAW,GAEpB5+V,EAAK,WACPkwJ,EAAGs4M,QAAH,SAAmBznH,EAAQ/gP,MAAR,UAEjBA,EAAMg7U,SACR9qL,EAAGs4M,QAAQxtB,OAASh7U,EAAMg7U,QAExB/xP,IAAY+gR,GACd95M,EAAG9uI,iBAAiB,aAAc8nV,EAAY,CAAEtB,SAAS,IACzD13M,EAAG9uI,iBAAiB,WAAYqoV,EAAY,CAAE7B,SAAS,IACvD13M,EAAG9uI,iBAAiB,YAAasoV,EAAkB,CAAE9B,SAAS,IAC9D13M,EAAG9uI,iBAAiB,cAAeqoV,GAEnCv5M,EAAG9uI,iBAAiB,YAAa8nV,GACjCh5M,EAAG9uI,iBAAiB,UAAWqoV,GAC/Bv5M,EAAG9uI,iBAAiB,aAAcqoV,GAElCv5M,EAAG9uI,iBAAiB,UAAWwoV,GAC/B15M,EAAG9uI,iBAAiB,QAASyoV,GAE7B35M,EAAG9uI,iBAAiB,OAAQ0oV,GAG5B55M,EAAG9uI,iBAAiB,YAAaqoV,EAAY,CAAE7B,SAAS,MAC9C3+Q,GAAW+gR,GACrBC,EAAgB/5M,GAIpB,SAAS+5M,EAAiB/5M,GACxBA,EAAG9wG,oBAAoB,YAAa8pT,GACpCh5M,EAAG9wG,oBAAoB,aAAc8pT,GACrCh5M,EAAG9wG,oBAAoB,WAAYqqT,GACnCv5M,EAAG9wG,oBAAoB,YAAasqT,GACpCx5M,EAAG9wG,oBAAoB,cAAeqqT,GACtCv5M,EAAG9wG,oBAAoB,UAAWqqT,GAClCv5M,EAAG9wG,oBAAoB,aAAcqqT,GACrCv5M,EAAG9wG,oBAAoB,UAAWwqT,GAClC15M,EAAG9wG,oBAAoB,QAASyqT,GAChC35M,EAAG9wG,oBAAoB,YAAaqqT,GACpCv5M,EAAG9wG,oBAAoB,OAAQ0qT,GAGjC,SAAS/C,EAAW72M,EAAiB6wF,EAAyB13E,GAC5D0gM,EAAa75M,EAAI6wF,GAAS,GAc5B,SAASq+F,EAAQlvL,UACRA,EAAGs4M,QACVyB,EAAgB/5M,GAGlB,SAASn7C,EAAQm7C,EAAiB6wF,GAChC,GAAIA,EAAQ/gP,QAAU+gP,EAAQrhM,SAA9B,CAIA,IAAMsqT,EAAaf,EAAgBloH,EAAQrhM,UAC3CqqT,EAAa75M,EAAI6wF,EAASipH,IAGrB,IAAMre,EAAS,CACpB5sS,KAAMgoT,EACN3nB,OAAAA,EACArqO,OAAAA,GAGF,W,oECxUA,SAASqyP,EAAUl3M,EAAiB6wF,EAA+BimH,GACjE,MAAyBjmH,EAAQqhD,WAAa,GAA9C,IAAQhvN,KAAAA,OAAR,SACMpzE,EAAQ+gP,EAAQ/gP,MAChB1C,EAA4B,YAAjB,OAAO0C,IAAsBA,EAAM1C,SAAY,CAAEsqW,SAAS,GACrExvP,EAA2B,oBAAVp4G,GAAwB,gBAAiBA,EAAQA,EAAQA,EAAMo4G,QAEhF/2F,EAAS+xD,EACX88E,EACA6wF,EAAQjhJ,IACNzuD,SAASmkS,cAAcz0F,EAAQjhJ,KAC/BjgF,OAEDwB,IAELA,EAAOD,iBAAiB,SAAUg3F,EAAS96G,GAE3C4yJ,EAAGg6M,UAAYjvW,OAAOi1J,EAAGg6M,WACzBh6M,EAAGg6M,UAAWlD,EAAMj1P,QAASw1O,MAAQ,CACnCnvO,QAAAA,EACA96G,QAAAA,EAEA+jB,OAAQ+xD,OAAOxxC,EAAYvgB,IAI/B,SAAS+9T,EAAQlvL,EAAiB6wF,EAA+BimH,GAAY,MAC3E,GAAI,SAAC92M,EAAGg6M,YAAHC,EAAenD,EAAMj1P,QAASw1O,MAAnC,CAEA,MAA0Cr3L,EAAGg6M,UAAUlD,EAAMj1P,QAASw1O,MAA9DnvO,EAAR,EAAQA,QAAS96G,EAAjB,EAAiBA,QAAjB,IAA0B+jB,OAAAA,OAA1B,MAAmC6uI,EAAnC,EAEA7uI,EAAO+9B,oBAAoB,SAAUg5D,EAAS96G,UACvC4yJ,EAAGg6M,UAAUlD,EAAMj1P,QAASw1O,OAG9B,IAAMmd,EAAS,CACpB0C,SAAAA,EACAhoB,OAAAA,GAGF,W,8IChDM,SAAUgrB,EAASroB,GAAiD,IAA5Bj0P,EAA4B,uDAAF,GACtE,IAAKs8Q,EAAgBC,UAArB,CACCD,EAAgBC,WAAY,EAEzBC,EAAAA,IAAWvoB,IACb4X,EAAAA,EAAAA,IAAa,4JAMf,IAAMxvT,EAAa2jD,EAAK3jD,YAAc,GAChCszS,EAAa3vP,EAAK2vP,YAAc,GAEtC,IAAK,IAAM1uU,KAAQ0uU,EAAY,CAC7B,IAAMspB,EAAYtpB,EAAW1uU,GAE7BgzU,EAAIglB,UAAUh4V,EAAMg4V,IAGtB,SAAUwD,EAAoBpgU,GAC5B,GAAIA,EAAY,CACd,IAAK,IAAM7yB,KAAO6yB,EAAY,CAC5B,IAAM+jQ,EAAY/jQ,EAAW7yB,GACzB42R,IAAcq8D,EAAmBr8D,EAAUs8D,0BAC7CzoB,EAAI7zC,UAAU52R,EAAK42R,GAGvB,OAAO,EAET,OAAO,GAVT,CAWG/jQ,GAKC43S,EAAI0oB,sBACR1oB,EAAI0oB,qBAAsB,EAE1B1oB,EAAIh0E,MAAM,CACRhoH,aADQ,WAEN,IAAMzoJ,EAAU5B,KAAKgqJ,SAEjBpoJ,EAAQotW,SACVptW,EAAQotW,QAAQzxO,KAAKv9H,KAAMA,KAAKivW,aAChCjvW,KAAKk8U,SAAWmK,EAAI6oB,WAAWttW,EAAQotW,QAAQzjJ,YAE/CvrN,KAAKk8U,SAAYt6U,EAAQi9C,QAAUj9C,EAAQi9C,OAAOq9R,UAAal8U,MAGnE6jV,YAXQ,WAaF7jV,KAAKgqJ,SAASglN,SAAWhvW,KAAK8/U,KAAO9/U,KAAK8/U,IAAI54I,aAAa,0BAE7DlnM,KAAKk8U,SAASizB,aAAc,EAE5BnvW,KAAKk8U,SAASwrB,WAAWruP,QAAO,KAGpC2wO,QApBQ,WAsBFhqV,KAAKgqJ,SAASglN,SAAWhvW,KAAKk8U,SAASizB,cAEzCnvW,KAAKk8U,SAASizB,aAAc,EAE5BnvW,KAAKk8U,SAASwrB,WAAWruP,e,qCCrEjC,SACE+1P,MAAO,QACPpoV,MAAO,QACPqoV,aAAc,CACZC,cAAe,4BACfC,YAAa,oBAEfC,UAAW,CACTC,iBAAkB,iBAClB93C,UAAW,CACT+3C,eAAgB,qBAChBC,cAAe,oBACfC,SAAU,cACVC,aAAc,8BACdC,mBAAoB,+BACpBC,kBAAmB,+BAErB/lG,OAAQ,WAEVgmG,WAAY,CACVP,iBAAkB,kBAClBQ,gBAAiB,MACjBC,SAAU,YACVC,SAAU,gBACVC,UAAW,aACXC,SAAU,YACVC,SAAU,kBAEZC,WAAY,CACVC,cAAe,eACfC,mBAAoB,aACpBC,kBAAmB,YACnBC,mBAAoB,iBACpBC,kBAAmB,iBAErBrW,WAAY,oBACZsW,SAAU,CACRhzM,KAAM,kBACNp5J,KAAM,cACNkzT,UAAW,CACTngJ,UAAW,8BAGfs5L,SAAU,CACRC,WAAY,YAEdC,UAAW,CACTh5L,QAAS,YACTi5L,YAAa,4BAEfC,WAAY,CACVC,GAAI,KACJC,GAAI,MAENC,WAAY,CACV15C,UAAW,CACTx6J,QAAS,wBACT14J,KAAM,YACNutB,SAAU,gBACVs/U,KAAM,gBACNC,YAAa,2BAGjBC,OAAQ,CACN75C,UAAW,CACTumB,KAAM,uBCpDL,IAAMuzB,EAAwB,CACnC/J,WAAY,CAEVgK,iBAAkB,KAClBC,eAAgB,GAChBvxK,WAAY,CACVwxK,GAAI,IACJn/C,GAAI,IACJo/C,GAAI,KACJC,GAAI,OAGRC,MAAO,CAELC,SAAU,MACV5/T,OAAQ,IAEVyvS,KAAM,CACJ5vT,QAAS,KACTggV,QAAS,CAAE51K,GAAAA,GAEXr7L,OAAGklC,GAELo2S,KAAK,EACLv4G,MAAO,CACLg4G,MAAM,EACNx/I,QAAS,QACT21K,SAAS,EACTtwW,QAAS,CACPuwW,cAAUjsU,EACVmmE,sBAAkBnmE,EAClBksU,iBAAalsU,EACbmsU,gBAAYnsU,EACZosU,YAAY,GAEdC,OAAQ,CACNv2B,MAAO,CACLw2B,QAAS,UACTC,UAAW,UACXC,OAAQ,UACRpsW,MAAO,UACPwoB,KAAM,UACN/C,QAAS,UACT6C,QAAS,WAEXmtT,KAAM,CACJy2B,QAAS,UACTC,UAAW,UACXC,OAAQ,UACRpsW,MAAO,UACPwoB,KAAM,UACN/C,QAAS,UACT6C,QAAS,c,kCClDJ+jV,EAAb,0CAGE,WACEC,EACA/zT,GAAe,sBAEf,eAGA,IAAMg0T,GAAgBC,EAAAA,EAAAA,IAAU,GAAIC,GAE5BC,EAAen0T,EAAfm0T,WAER,EAGIA,EAFFvB,OAAQwB,OADV,MACyB,GADzB,EAEKxB,GAFL,OAGIuB,EAHJ,GATe,OAcY,MAAvBC,EAAaxB,SACflnB,EAAAA,EAAAA,IAAY,iFAGd1rS,EAAO4yT,QAASqB,EAAAA,EAAAA,KACdA,EAAAA,EAAAA,IAAUD,EAAeI,GACzBxB,GApBa,EALnB,kBAA6ByB,EAAAA,GACpBP,EAAAA,SAAsB,U,sBCVlBx5N,EAAb,mF,0BAGE,EAAA0gM,IAAM,EAEN,EAAAn6Q,IAAM,EAEN,EAAAE,KAAO,EAEP,EAAA0yR,YAAc,EAEd,EAAApiP,MAAQ,EAER,EAAA28G,OAAS,EAET,EAAAwlI,OAAS,EAET,EAAAp3S,YAA4C,CAC1C4+R,IAAK,GACLn6Q,IAAK,GACLE,KAAM,GACN0yR,YAAa,GACbpiP,MAAO,GACP28G,OAAQ,GACRwlI,OAAQ,IAxBZ,yCA2BE,SACEr+T,EACAqqB,EACAxgB,GAEA79B,KAAKi7C,YAAYoD,GAAUrqB,GAAO6J,EAElC79B,KAAKq5G,OAAOh7D,KAlChB,wBAqCE,SAAYrqB,EAAaqqB,GACgB,MAAnCr+C,KAAKi7C,YAAYoD,GAAUrqB,YAExBh0B,KAAKi7C,YAAYoD,GAAUrqB,GAClCh0B,KAAKq5G,OAAOh7D,MAzChB,oBA4CE,SAAQA,GACNr+C,KAAKq+C,GAAY9+C,OAAO6yC,OAAOpyC,KAAKi7C,YAAYoD,IAC7CtsB,QAAO,SAAC0vJ,EAAa0xL,GAAd,OAAuC1xL,EAAM0xL,IAAM,OA9CjE,GAAiCD,EAAAA,GACxB/5N,EAAAA,SAA0B,c,wCCAtBi6N,EAAb,0CAuDE,WAAa3B,GAAqB,sBAChC,eApDK,EAAAG,IAAK,EAEL,EAAAn/C,IAAK,EAEL,EAAAo/C,IAAK,EAEL,EAAAC,IAAK,EAEL,EAAAuB,IAAK,EAEL,EAAAC,QAAS,EAET,EAAAC,QAAS,EAET,EAAA5L,WAAY,EAEZ,EAAA6L,SAAU,EAEV,EAAAC,QAAS,EAET,EAAAC,WAAY,EAEZ,EAAAC,SAAU,EAEV,EAAAC,QAAS,EAET,EAAAC,WAAY,EAEZ,EAAAC,SAAU,EAEV,EAAAC,QAAS,EAGT,EAAA1gW,KAA4B,KAE5B,EAAAosD,OAAS,EAET,EAAAF,MAAQ,EAIR,EAAAy0S,QAAS,EAQR,EAAAtgB,cAAgB,EAKtB,MAII+d,EAAO2B,EAAWp8Q,UAHpB06Q,EADF,EACEA,iBACAC,EAFF,EAEEA,eACAvxK,EAHF,EAGEA,WAN8B,OAShC,EAAKsxK,iBAAmBA,EACxB,EAAKC,eAAiBA,EACtB,EAAKvxK,WAAaA,EAXc,EAvDpC,mCAqES,WACLpgM,KAAKq5G,SAGiB,qBAAXl1F,QAEXA,OAAOuB,iBACL,SACA1lB,KAAKk3V,SAAS7zS,KAAKrjD,MACnB,CAAEksW,SAAS,MA9EjB,oBAmFS,WAAmB,IAAX+H,EAAW,wDAClBx0S,EAASw0S,EAAM,EAAIj0W,KAAKk0W,kBACxB30S,EAAQ00S,EAAM,EAAIj0W,KAAKm0W,iBAEvBvC,EAAKryS,EAAQv/D,KAAKogM,WAAWwxK,GAC7Bn/C,EAAKlzP,EAAQv/D,KAAKogM,WAAWqyH,KAAOm/C,EACpCC,EAAKtyS,EAASv/D,KAAKogM,WAAWyxK,GAAK7xW,KAAK2xW,kBAAqBl/C,GAAMm/C,GACnEE,EAAKvyS,EAASv/D,KAAKogM,WAAW0xK,GAAK9xW,KAAK2xW,kBAAqBE,GAAMp/C,GAAMm/C,GACzEyB,EAAK9zS,GAAUv/D,KAAKogM,WAAW0xK,GAAK9xW,KAAK2xW,eAuB/C,OArBA3xW,KAAKy/D,OAASA,EACdz/D,KAAKu/D,MAAQA,EAEbv/D,KAAK4xW,GAAKA,EACV5xW,KAAKyyT,GAAKA,EACVzyT,KAAK6xW,GAAKA,EACV7xW,KAAK8xW,GAAKA,EACV9xW,KAAKqzW,GAAKA,EAEVrzW,KAAKszW,OAAS1B,EACd5xW,KAAKuzW,OAAS9gD,EACdzyT,KAAK2nW,WAAaiK,GAAMn/C,MAASo/C,GAAMC,GAAMuB,GAC7CrzW,KAAKwzW,SAAW5B,IAAOn/C,GAAMo/C,GAAMC,GAAMuB,GACzCrzW,KAAKyzW,OAAS5B,EACd7xW,KAAK0zW,WAAa9B,GAAMn/C,GAAMo/C,MAASC,GAAMuB,GAC7CrzW,KAAK2zW,UAAY/B,GAAMn/C,KAAQo/C,GAAMC,GAAMuB,GAC3CrzW,KAAK4zW,OAAS9B,EACd9xW,KAAK6zW,WAAajC,GAAMn/C,GAAMo/C,GAAMC,KAAQuB,EAC5CrzW,KAAK8zW,UAAYlC,GAAMn/C,GAAMo/C,KAAQC,GAAMuB,GAC3CrzW,KAAK+zW,OAASV,GAEN,GACN,KAAMzB,EACJ5xW,KAAKqT,KAAO,KACZ,MACF,KAAMo/S,EACJzyT,KAAKqT,KAAO,KACZ,MACF,KAAMw+V,EACJ7xW,KAAKqT,KAAO,KACZ,MACF,KAAMy+V,EACJ9xW,KAAKqT,KAAO,KACZ,MACF,QACErT,KAAKqT,KAAO,KACZ,MAGJ,GAAqC,kBAA1BrT,KAAK0xW,iBAAhB,CAMA,IAAM0C,EAAc,CAClBxC,GAAI,EACJn/C,GAAI,EACJo/C,GAAI,EACJC,GAAI,EACJuB,GAAI,GAGAphV,EAAUmiV,EAAYp0W,KAAKqT,MAC3BwsD,EAAMu0S,EAAYp0W,KAAK0xW,kBAE7B1xW,KAAKg0W,OAAS/hV,GAAW4tC,OAhBvB7/D,KAAKg0W,OAASz0S,EAAQta,SAASjlD,KAAK0xW,iBAAkB,MArI5D,sBAwJU,WACNnrS,aAAavmE,KAAK0zV,eAMlB1zV,KAAK0zV,cAAgBvvU,OAAOukB,WAAW1oC,KAAKq5G,OAAOh2D,KAAKrjD,MAAO,OA/JnE,4BAoKU,WAEN,MAAwB,qBAAb21C,SAAiC,EACrC1mC,KAAK4wD,IACVlqB,SAASupB,gBAAiBC,YAC1Bh7C,OAAO86C,YAAc,KAzK3B,6BA6KU,WAEN,MAAwB,qBAAbtpB,SAAiC,EACrC1mC,KAAK4wD,IACVlqB,SAASupB,gBAAiBI,aAC1Bn7C,OAAOk7C,aAAe,OAlL5B,GAAgC6zS,EAAAA,GAChBE,EAAAA,SAAyB,a,sBCNnCrB,EAAsB,CAC1Bt3R,SAAU,0DACVqyE,OAAQ,2MACR9lI,MAAO,gHACPhlB,OAAQ,2MACR8mB,MAAO,2MACPiD,QAAS,sHACT+C,KAAM,mOACNF,QAAS,4GACTtoB,MAAO,2MACPu3J,KAAM,gEACNp5J,KAAM,8DACN4vW,WAAY,iJACZC,YAAa,iHACbC,sBAAuB,gHACvB/8L,UAAW,+FACXpxJ,KAAM,yEACNwpU,OAAQ,6DACR4O,KAAM,iDACNgW,SAAU,uBACVC,SAAU,uBACVC,QAAS,sRACTC,SAAU,2LACVC,KAAM,sJACNC,YAAa,kNACbC,WAAY,uGACZC,WAAY,iKACZ52B,QAAS,uPACT5gL,MAAO,8EACPC,KAAM,2EACNw3M,OAAQ,oHACR/hL,KAAM,8WACN3E,KAAM,4CACN2mL,MAAO,sBAGT,UCpCA,IAAMlD,EAAsB,CAC1Bt3R,SAAU,QACVqyE,OAAQ,SACR9lI,MAAO,QACPhlB,OAAQ,SACR8mB,MAAO,QACPiD,QAAS,eACT+C,KAAM,OACNF,QAAS,gBACTtoB,MAAO,UACPu3J,KAAM,eACNp5J,KAAM,gBACN4vW,WAAY,YACZC,YAAa,0BACbC,sBAAuB,0BACvB/8L,UAAW,sBACXpxJ,KAAM,eACNwpU,OAAQ,sBACR4O,KAAM,OACNgW,SAAU,kBACVC,SAAU,kBACVC,QAAS,uBACTC,SAAU,yBACVC,KAAM,OACNC,YAAa,cACbC,WAAY,OACZC,WAAY,YACZ52B,QAAS,SACT5gL,MAAO,aACPC,KAAM,YACNw3M,OAAQ,cACR/hL,KAAM,cACN3E,KAAM,MACN2mL,MAAO,UAGT,UCpCA,IAAMlD,EAAsB,CAC1Bt3R,SAAU,YACVqyE,OAAQ,mBACR9lI,MAAO,YACPhlB,OAAQ,mBACR8mB,MAAO,YACPiD,QAAS,mBACT+C,KAAM,kBACNF,QAAS,kBACTtoB,MAAO,YACPu3J,KAAM,mBACNp5J,KAAM,oBACN4vW,WAAY,sBACZC,YAAa,6BACbC,sBAAuB,gBACvB/8L,UAAW,aACXpxJ,KAAM,eACNwpU,OAAQ,mBACR4O,KAAM,WACNgW,SAAU,gBACVC,SAAU,gBACVC,QAAS,sBACTC,SAAU,qBACVC,KAAM,aACNC,YAAa,mBACbC,WAAY,WACZC,WAAY,qBACZ52B,QAAS,aACT5gL,MAAO,iBACPC,KAAM,gBACNw3M,OAAQ,6BACR/hL,KAAM,gBACN3E,KAAM,WACN2mL,MAAO,aAGT,UCpCA,IAAMlD,EAAsB,CAC1Bt3R,SAAU,eACVqyE,OAAQ,sBACR9lI,MAAO,eACPhlB,OAAQ,sBACR8mB,MAAO,sBACPiD,QAAS,sBACT+C,KAAM,qBACNF,QAAS,qBACTtoB,MAAO,8BACPu3J,KAAM,sBACNp5J,KAAM,uBACN4vW,WAAY,sBACZC,YAAa,gBACbC,sBAAuB,sBACvB/8L,UAAW,gBACXpxJ,KAAM,iBACNwpU,OAAQ,sBACR4O,KAAM,cACNgW,SAAU,oBACVC,SAAU,oBACVC,QAAS,oBACTC,SAAU,gBACVC,KAAM,cACNC,YAAa,cACbC,WAAY,cACZC,WAAY,mBACZ52B,QAAS,cACT5gL,MAAO,uBACPC,KAAM,sBACNw3M,OAAQ,sBACR/hL,KAAM,mBACN3E,KAAM,cACN2mL,MAAO,gBAGT,UCpCA,IAAMlD,EAAsB,CAC1Bt3R,SAAU,cACVqyE,OAAQ,qBACR9lI,MAAO,cACPhlB,OAAQ,qBACR8mB,MAAO,qBACPiD,QAAS,qBACT+C,KAAM,oBACNF,QAAS,oBACTtoB,MAAO,6BACPu3J,KAAM,qBACNp5J,KAAM,sBACN4vW,WAAY,qBACZC,YAAa,iBACbC,sBAAuB,qBACvB/8L,UAAW,eACXpxJ,KAAM,gBACNwpU,OAAQ,qBACR4O,KAAM,aACNgW,SAAU,mBACVC,SAAU,mBACVC,QAAS,qBACTC,SAAU,iBACVC,KAAM,eACNC,YAAa,eACbC,WAAY,aACZC,WAAY,oBACZ52B,QAAS,gBACT5gL,MAAO,sBACPC,KAAM,qBACNw3M,OAAQ,0BACR/hL,KAAM,kBACN3E,KAAM,aACN2mL,MAAO,eAGT,U,kBClCM,SAAUC,EACd1iE,EACA2iE,GAEA,IAAMvwW,EAAgC,GAEtC,IAAK,IAAMgX,KAAOu5V,EAChBvwW,EAAOgX,GAAO,CACZ42R,UAAAA,EACA/8K,MAAO,CACLyoN,KAAOi3B,EAAQv5V,GAAgBxE,MAAM,UAK3C,OAAOxS,EAGT,QAAeswW,EAA+B,oBAAqBnD,GCfnE,EAAexyW,OAAO4iL,OAAO,CAC3BizL,OAAAA,EACAvD,GAAAA,EACAwD,IAAAA,EACAC,GAAAA,EACAC,IAAAA,EACAC,MAAAA,ICAK,IAAMC,EAAb,0CASE,WAAahE,GAAqB,sBAChC,eAEA,MAIIA,EAAOgE,EAAMz+Q,UAHfg7Q,EADF,EACEA,SACA5/T,EAFF,EAEEA,OACAogQ,EAHF,EAGEA,UAN8B,OAShC,EAAKA,UAAYA,EACjB,EAAKw/D,SAAWA,EAChB,EAAK5/T,QAAS0gU,EAAAA,EAAAA,IACZ4C,EAAQ1D,GACR5/T,GAb8B,EATpC,kBAA2B8gU,EAAAA,GAClBuC,EAAAA,SAAoB,Q,iDCAvBE,EAAc,YACdC,EAAWlwW,OAAO,iBAExB,SAASmwW,EACPx9K,EACAz8K,GAE4B,IAD5Bk6V,EAC4B,wDAA5BC,EAA4B,uCAEtBC,EAAWp6V,EAAI1K,QAAQykW,EAAa,IACtCpwC,GAAc06B,EAAAA,EAAAA,IAAqB5nK,EAAQ29K,EAAUJ,GAYzD,OAVIrwC,IAAgBqwC,IACdE,IACF7X,EAAAA,EAAAA,IAAa,oBAAD,OAAqB+X,EAArB,4BACZzwC,EAAc3pT,KAEd2uU,EAAAA,EAAAA,IAAY,oBAAD,OAAqByrB,EAArB,yCACXzwC,EAAcswC,EAAeE,EAAen6V,GAAK,EAAMm6V,KAIpDxwC,EAGF,IAAM0wC,EAAb,0CAWE,WAAaxE,GAAqB,sBAChC,eAPK,EAAAsE,cAAgB,KASrB,MAIItE,EAAOwE,EAAKj/Q,UAHd/kE,EADF,EACEA,QACAggV,EAFF,EAEEA,QACAjxW,EAHF,EAGEA,EAN8B,OAShC,EAAKixB,QAAUA,EACf,EAAKggV,QAAUA,EACf,EAAKiE,WAAal1W,GAAK,EAAKm1W,kBAXI,EAXpC,4CAyBS,SAAev6V,GACpB,IAAM2pT,EAAcvlU,KAAKiyW,QAAQjyW,KAAKiyB,SAChC8jV,EAAgB/1W,KAAKiyW,QAAQjyW,KAAK+1W,eAExC,OAAOF,EAAetwC,EAAa3pT,GAAK,EAAOm6V,KA7BnD,eAgCS,SAAGn6V,GAA6B,2BAAbL,EAAa,iCAAbA,EAAa,kBACrC,OAAKK,EAAIZ,WAAW26V,GAEb31W,KAAKk2W,WAAL,MAAAl2W,KAAA,CAAgB4b,GAAhB,OAAwBL,IAFUvb,KAAKkR,QAAQ0K,EAAKL,KAjC/D,+BAsCU,SAAmBK,GAA6B,2BAAbL,EAAa,iCAAbA,EAAa,kBACtD,OAAOvb,KAAKkR,QAAQlR,KAAKo2W,cAAcx6V,GAAML,KAvCjD,qBA0CU,SAASZ,EAAaY,GAC5B,OAAOZ,EAAIzJ,QAAQ,cAAc,SAACu+B,EAAe6C,GAE/C,OAAO3hC,OAAO4K,GAAQ+2B,WA7C5B,GAA0B4gU,EAAAA,GACjB+C,EAAAA,SAAmB,O,8ECpCtBI,EAAoB,CACxB,CAAC,QAAS,QAAS,OACnB,EAAE,MAAQ,OAAQ,OAClB,CAAC,OAAS,KAAQ,QAIdC,EAAwB,SAAAx7M,GAAD,OAC3BA,GAAK,SACG,MAAJA,EACA,MAAQ,KAAR,IAAQA,EAAM,EAAI,KAAO,MAIzBy7M,EAAoB,CACxB,CAAC,MAAQ,MAAQ,OACjB,CAAC,MAAQ,MAAQ,OACjB,CAAC,MAAQ,MAAQ,QAIbC,EAAwB,SAAA17M,GAAD,OAC3BA,GAAK,OACDA,EAAI,MADR,UAEMA,EAAI,MAAS,MAAU,MAGzB,SAAU27M,EAASC,GAMvB,IALA,IAAMC,EAAMj3W,MAAM,GACZgpP,EAAY4tH,EACZ5qE,EAAS2qE,EAGNn1W,EAAI,EAAGA,EAAI,IAAKA,EACvBy1W,EAAIz1W,GAAK+N,KAAKmiB,MAIT,KAJeq+O,EAAAA,EAAAA,IAAM/mB,EACxBgjD,EAAOxqS,GAAG,GAAKw1W,EAAI,GACnBhrE,EAAOxqS,GAAG,GAAKw1W,EAAI,GACnBhrE,EAAOxqS,GAAG,GAAKw1W,EAAI,MAKvB,OAAQC,EAAI,IAAM,KAAOA,EAAI,IAAM,IAAMA,EAAI,IAAM,GAG/C,SAAUC,EAAOD,GAWrB,IAVA,IAAMD,EAAW,CAAC,EAAG,EAAG,GAClBhuH,EAAY8tH,EACZ9qE,EAAS6qE,EAGTnwW,EAAIsiP,GAAWiuH,GAAO,GAAK,KAAQ,KACnCxxW,EAAIujP,GAAWiuH,GAAO,EAAI,KAAQ,KAClC/2W,EAAI8oP,GAAWiuH,GAAO,EAAI,KAAQ,KAG/Bz1W,EAAI,EAAGA,EAAI,IAAKA,EACvBw1W,EAAIx1W,GAAKwqS,EAAOxqS,GAAG,GAAKkF,EAAIslS,EAAOxqS,GAAG,GAAKiE,EAAIumS,EAAOxqS,GAAG,GAAKtB,EAGhE,OAAO82W,E,aC9DHr+L,EAAQ,mBAERw+L,EAA0B,SAAA71W,GAAD,OAC7BA,EAAI,KAAH,IAAGq3K,EAAS,GACTppK,KAAKyxK,KAAK1/K,GACTA,GAAK,EAAI,KAAJ,IAAIq3K,EAAS,IAAM,EAAI,IAG7By+L,EAA0B,SAAA91W,GAAD,OAC7BA,EAAIq3K,EAAJ,SACIr3K,EAAK,GACJ,EAAI,KAAJ,IAAIq3K,EAAS,IAAMr3K,EAAI,EAAI,KAG5B,SAAUy1W,EAASC,GACvB,IAAMhuH,EAAYmuH,EACZE,EAAeruH,EAAUguH,EAAI,IAEnC,MAAO,CACL,IAAMK,EAAe,GACrB,KAAOruH,EAAUguH,EAAI,GAAK,QAAWK,GACrC,KAAOA,EAAeruH,EAAUguH,EAAI,GAAK,WAIvC,SAAUE,EAAOI,GACrB,IAAMtuH,EAAYouH,EACZG,GAAMD,EAAI,GAAK,IAAM,IAC3B,MAAO,CAC0B,OAA/BtuH,EAAUuuH,EAAKD,EAAI,GAAK,KACxBtuH,EAAUuuH,GACqB,QAA/BvuH,EAAUuuH,EAAKD,EAAI,GAAK,M,8BCxBtB,SAAUj8V,GACdgpN,GAQA,IANiB,IADjBmzI,EACiB,wDAAjB5E,IAAiB,yDAETvqL,EAAuBg8C,EAAvBh8C,OAAWovL,GAAnB,OAA+BpzI,EAA/B,GACMqzI,EAAS73W,OAAOsD,KAAKs0W,GACrBE,EAAmB,GAEhBn2W,EAAI,EAAGA,EAAIk2W,EAAO/1W,SAAUH,EAAG,CACtC,IAAMmS,EAAO+jW,EAAOl2W,GACdoD,EAAQy/N,EAAM1wN,GAEP,MAAT/O,IAECguW,EAEM4E,GAEI,SAAT7jW,GAAmBA,EAAK2H,WAAW,YAAc3H,EAAK2H,WAAW,aACnEq8V,EAAYhkW,IAAQikW,EAAAA,EAAAA,IAAWhzW,IAEP,YAAjB,OAAOA,GAChB+yW,EAAYhkW,GAAQ0H,GAAMzW,GAAO,EAAMguW,GAEvC+E,EAAYhkW,GAAQkkW,GAAclkW,GAAMmkW,EAAAA,EAAAA,IAAWlzW,IATnD+yW,EAAYhkW,GAAQ,CAAE4jK,MAAMwgM,EAAAA,EAAAA,KAASD,EAAAA,EAAAA,IAAWlzW,MAiBpD,OAJK4yW,IACHG,EAAYtvL,OAASA,GAAUsvL,EAAYpgM,MAAQogM,EAAY7E,QAAQv7L,MAGlEogM,EAMT,IAAMK,GAAe,SAACrkW,EAAc/O,GAClC,MAAO,qBAAP,OACgB+O,EADhB,mCAEoB/O,EAFpB,yCAGgBA,EAHhB,4CAKgB+O,EALhB,8BAMS/O,EANT,wCAOeA,EAPf,oBAcIqzW,GAAkB,SAACtkW,EAAc8jW,EAAiB7yW,GACtD,MAAkB6yW,EAAQ//V,MAAM,OAAQ,GAAxC,eAAO8V,EAAP,KAAa/rB,EAAb,KACA,MAAO,qBAAP,OACgBkS,EADhB,YACwB6Z,EADxB,YACgC/rB,EADhC,mCAEoBmD,EAFpB,yCAGgBA,EAHhB,4CAKgB+O,EALhB,wBAKoC6Z,EALpC,YAK4C/rB,EAL5C,wBAMSmD,EANT,wCAOeA,EAPf,oBAWIszW,GAAuB,SAACvkW,GAAD,IAAe8jW,EAAf,uDAAyB,OAAzB,oBAAmD9jW,EAAnD,YAA2D8jW,IAElFU,GAAmB,SAACxkW,GAAD,IAAe8jW,EAAf,uDAAyB,OAAzB,oBAAmDS,GAAqBvkW,EAAM8jW,GAA9E,MAEnB,SAAUW,GAAW/zI,GAAyC,IAAdg0I,EAAc,wDAC1DhwL,EAAuBg8C,EAAvBh8C,OAAWovL,GAAnB,OAA+BpzI,EAA/B,GACMqzI,EAAS73W,OAAOsD,KAAKs0W,GAE3B,IAAKC,EAAO/1W,OAAQ,MAAO,GAE3B,IAAI22W,EAAe,GACfh+B,EAAM,GAEJi+B,EAASF,EAASF,GAAiB,UAAY9vL,EACrDiyJ,GAAO,6BAAJ,OAAiCi+B,EAAjC,OACHF,IAAWC,GAAgB,KAAJ,OAASJ,GAAqB,UAA9B,aAA4C7vL,EAA5C,QAEvB,IAAK,IAAI7mL,EAAI,EAAGA,EAAIk2W,EAAO/1W,SAAUH,EAAG,CACtC,IAAMmS,EAAO+jW,EAAOl2W,GACdoD,EAAQy/N,EAAM1wN,GAEpB2mU,GAAO09B,GAAarkW,EAAM0kW,EAASF,GAAiBxkW,GAAQ/O,EAAM2yK,MAClE8gM,IAAWC,GAAgB,KAAJ,OAASJ,GAAqBvkW,GAA9B,aAAwC/O,EAAM2yK,KAA9C,QAGvB,IADA,IAAMihM,GAAWr1W,EAAAA,EAAAA,IAAKyB,GACbpD,EAAI,EAAGA,EAAIg3W,EAAS72W,SAAUH,EAAG,CACxC,IAAMi2W,EAAUe,EAASh3W,GACnBi3W,EAAe7zW,EAAM6yW,GACX,SAAZA,IAEJn9B,GAAO29B,GAAgBtkW,EAAM8jW,EAASY,EAASF,GAAiBxkW,EAAM8jW,GAAWgB,GACjFJ,IAAWC,GAAgB,KAAJ,OAASJ,GAAqBvkW,EAAM8jW,GAApC,aAAiDgB,EAAjD,UAQ3B,OAJIJ,IACFC,EAAe,YAAH,OAAeA,EAAf,UAGPA,EAAeh+B,EAGlB,SAAUu9B,GAAelkW,EAAc/O,GAK3C,IAJA,IAAM8tC,EAAiC,CACrC6kI,MAAMwgM,EAAAA,EAAAA,IAASnzW,IAGRpD,EAAI,EAAGA,EAAI,IAAKA,EACvBkxC,EAAO,UAAD,OAAWlxC,KAAOu2W,EAAAA,EAAAA,IAASW,GAAQ9zW,EAAOpD,IAGlD,IAAK,IAAIA,EAAI,EAAGA,GAAK,IAAKA,EACxBkxC,EAAO,SAAD,OAAUlxC,KAAOu2W,EAAAA,EAAAA,IAASY,GAAO/zW,EAAOpD,IAGhD,OAAOkxC,EAGH,SAAUgmU,GAAS9zW,EAAiB0kS,GACxC,IAAMguE,EAAMsB,EAAYC,EAAWj0W,IAEnC,OADA0yW,EAAI,GAAKA,EAAI,GAAc,GAAThuE,EACXuvE,EAAaD,EAAUtB,IAG1B,SAAUqB,GAAQ/zW,EAAiB0kS,GACvC,IAAMguE,EAAMsB,EAAYC,EAAWj0W,IAEnC,OADA0yW,EAAI,GAAKA,EAAI,GAAc,GAAThuE,EACXuvE,EAAaD,EAAUtB,IC7HzB,IAAMwB,GAAb,0CAmBE,WAAa/G,GAAqB,sBAChC,eAjBK,EAAA9yB,UAAW,EAUV,EAAA1C,OAAS,KAET,EAAAw8B,QAAU,KAEV,EAAAC,QAAU,KAKhB,MAKIjH,EAAO+G,EAAMxhR,UAJf+kP,EADF,EACEA,KACAm2B,EAFF,EAEEA,QACAtwW,EAHF,EAGEA,QACA2wW,EAJF,EAIEA,OAOF,OAJA,EAAKx2B,KAAOzkP,QAAQykP,GACpB,EAAK34O,SAAW,EAAKmvQ,OAASA,EAC9B,EAAK3wW,QAAUA,EAEXswW,GACF,EAAKvzB,UAAW,GAEhB,YAGF,EAAK4zB,OAAS,CACZx2B,KAAM,EAAK48B,YAAYpG,EAAOx2B,MAAM,GACpCC,MAAO,EAAK28B,YAAYpG,EAAOv2B,OAAO,IAtBR,GAnBpC,gCA+CS,SAAE98S,GACHl/B,KAAK04W,QACH14W,KAAK44W,aACP54W,KAAK64W,iBAIT74W,KAAK84W,8BAAgC94W,KAAK+4W,QAAS9qK,UAAY/uK,KAtDnE,gBAkEU,WACN,OAAOo4D,QAAQt3F,KAAKi8U,SAnExB,IAyDU,SAAE/8S,GACR,IAAM85U,EAAUh5W,KAAKi8U,OAErBj8U,KAAKi8U,OAAS/8S,EAGH,MAAX85U,GAAmBh5W,KAAKi5W,eA/D5B,wBAwES,WACL,GAAIj5W,KAAK2+U,SAAU,OAAO3+U,KAAKk5W,WAE/Bl5W,KAAKg6U,IAAMh6U,KAAKm5W,kBA3EpB,sBA8ES,WACLn5W,KAAKg6U,IAAM,KA/Ef,kBAqFS,SAAMvyI,EAAW99C,GAClB3pJ,KAAK2+U,WAGJl3I,EAAa2xK,MAChBp5W,KAAKq5W,YAAY5xK,GACR99C,GACT3pJ,KAAKs5W,QAAQ3vN,GAGf3pJ,KAAKu5W,UAAU9xK,MA/FnB,sBAmGS,SAAUs8B,EAAyBz/N,GACxCtE,KAAKuyW,OAAOxuI,GAASxkO,OAAOwB,OAAOf,KAAKuyW,OAAOxuI,GAAQz/N,GACvDtE,KAAKi5W,eArGT,yBAyGS,WACLj5W,KAAKuyW,OAAOv2B,MAAQz8U,OAAOwB,OAAO,GAAIf,KAAKojG,SAAS44O,OACpDh8U,KAAKuyW,OAAOx2B,KAAOx8U,OAAOwB,OAAO,GAAIf,KAAKojG,SAAS24O,MACnD/7U,KAAKi5W,eA5GT,uCAgHU,WAIN,OAHAj5W,KAAK+4W,QAAUpjU,SAAS6sL,eAAe,8BAGnCxiO,KAAK+4W,UAET/4W,KAAKw5W,kBAEEliR,QAAQt3F,KAAK+4W,YAxHxB,yBA2HU,WAEO,IADbh1I,EACa,uDADyB,GACtCg4G,EAAa,uCAEP09B,EAAez5W,KAAKuyW,OAAOx2B,EAAO,OAAS,SAEjD,OAAOx8U,OAAOwB,OAAO,GACnB04W,EACA11I,KAnIN,6BAyIU,WAEkB,qBAAbpuL,WAGX31C,KAAK+4W,QAAUpjU,SAAS40B,cAAc,SACtCvqE,KAAK+4W,QAAQ7rV,KAAO,WACpBltB,KAAK+4W,QAAQ9yU,GAAK,2BAEdjmC,KAAK4B,QAAQuwW,UACfnyW,KAAK+4W,QAAQnuS,aAAa,QAAS5qE,KAAK4B,QAAQuwW,UAGlDx8T,SAAS63H,KAAK1iG,YAAY9qE,KAAK+4W,YAtJnC,yBAyJU,SAAatxK,GAAS,WAE5B,GADAznM,KAAK04W,QAAUjxK,EAAK2xK,QAChBp5W,KAAK44W,YAEPnxK,EAAKq8I,WAAU,WACb,EAAK+0B,wBAHT,CAQA,IAAMa,EAAiD,oBAA5B15W,KAAK04W,QAAQ59J,WAA4B96M,KAAK04W,QAAQ59J,aAAa6+J,QAAU,WAClGC,EAAWnyK,EAAKz9C,SAAS0vN,IAAgB,GAE/CjyK,EAAKz9C,SAAS0vN,GAAe,WAC3BE,EAASpvS,MAAQovS,EAASpvS,OAAS,GAEnC,IAAMqvS,EAAoBD,EAASpvS,MAAMliD,MAAM,SAAArnB,GAAD,MAAqB,6BAATA,EAAEglC,MAa5D,OAXK4zU,EAQHA,EAAkBC,QAAU,EAAKX,gBAPjCS,EAASpvS,MAAMxkE,KAAK,CAClB8zW,QAAS,EAAKX,gBACdjsV,KAAM,WACN+Y,GAAI,2BACJjO,OAAQ,EAAKp2B,SAAW,IAAIuwW,WAMzByH,MAtLb,4BA0LU,WACN,MAAgB55W,KAAK04W,QAAQqB,OAAO,WAA5BpxV,EAAR,EAAQA,IAERA,EAAI,CACF6hD,MAAO,CAAC,CACNsvS,QAAS95W,KAAKm5W,gBACdjsV,KAAM,WACN+Y,GAAI,2BACJjO,MAAOh4B,KAAK4B,QAAQuwW,eAlM5B,qBAuMU,SAASxoN,GAEf,IAAM3xH,EAAQh4B,KAAK4B,QAAQuwW,SAAb,kBAAmCnyW,KAAK4B,QAAQuwW,SAAhD,KAA8D,GAC5ExoN,EAAW6jB,KAAO7jB,EAAW6jB,MAAQ,GACrC7jB,EAAW6jB,MAAX,8DAA0Ex1I,EAA1E,YAAmFh4B,KAAKm5W,gBAAxF,cA3MJ,uBA8MU,SAAW1xK,GAAS,WAEF,qBAAb9xJ,WAIP31C,KAAKy4W,UACPz4W,KAAKy4W,UACLz4W,KAAKy4W,QAAU,MAKjBhxK,EAAKuyK,MAAM,gBAAgB,WACzB,IAAMC,EAAM5zB,EAAAA,EAAAA,WAAe,CAAEksB,OAAQ,EAAKA,SAC1C,EAAKkG,QAAUhxK,EAAKm+J,QAAO,kBAAMqU,EAAI1H,UAAQ,kBAAM,EAAK0G,eAAc,CAAE90Q,MAAM,OAEhFnkG,KAAKi5W,gBA/NT,wBAkOkB,WACd,IAAMtzV,EAAS3lB,KAAK+7U,KAAO,OAAS,QAEpC,OAAO/7U,KAAKuyW,OAAO5sV,KArOvB,2BAwOqB,WACjB,IAGIq0T,EAHEj2G,EAAQ/jO,KAAKq3W,YAEbz1W,EAAU5B,KAAK4B,SAAW,GAGhC,OAA0B,MAAtBA,EAAQywW,aACVr4B,EAAMp4U,EAAQywW,WAAW3wW,IAAIqiO,GAElB,MAAPi2G,KAGNA,EAAMkgC,GAAqBn2I,EAAOniO,EAAQyqG,kBAEf,MAAvBzqG,EAAQwwW,cACVp4B,EAAMp4U,EAAQwwW,YAAYp4B,IAGF,MAAtBp4U,EAAQywW,YACVzwW,EAAQywW,WAAW1pV,IAAIo7M,EAAOi2G,IAVNA,IAjP9B,uBAiQiB,WACb,OAAOkgC,GACLl6W,KAAKm6W,cAAgB,QACrBj0U,GACAk0U,EAAAA,EAAAA,IAAep6W,KAAK4B,QAAS,CAAC,eAAe,MArQnD,uBA2QyB,WACrB,MAAsC,oBAAxB5B,KAAK04W,QAAQqB,WA5Q/B,GAA2B7G,EAAAA,GAClBsF,GAAAA,SAAoB,Q,gBCHR6B,GAAAA,WAqBnB,aAA+C,IAAlCrH,EAAkC,uDAAF,IAAE,eAVxC,KAAAznJ,UAAgD,CACrD4jJ,aAAa,GAGR,KAAAR,UAAsB,GAEtB,KAAA8C,OAAS,GAET,KAAAuB,WAAgC,GAGrChzW,KAAKgzW,WAAaA,EAElBhzW,KAAKowJ,IAAIkqN,GACTt6W,KAAKowJ,IAAIkqN,GACTt6W,KAAKowJ,IAAIkqN,GACTt6W,KAAKowJ,IAAIkqN,GAAAA,GACTt6W,KAAKowJ,IAAIkqN,GACTt6W,KAAKowJ,IAAIkqN,GACTt6W,KAAKowJ,IAAIkqN,I,mCAMX,SAAM7yK,EAAW99C,GAAmB,WAClC3pJ,KAAK2uW,UAAU7rW,SAAQ,SAAAk0F,GACrB,IAAM7e,EAAU,EAAKozI,UAAUv0H,GAE/B7e,EAAQozI,UAAY,EAAKA,UAEzBpzI,EAAQolD,KAAKkqE,EAAM99C,MAMrB3pJ,KAAKurN,UAAU+wH,IAAMhlP,QAAQt3F,KAAKyxW,OAAOn1B,O,iBAI3C,SAAK42B,GACH,IAAMl8Q,EAAWk8Q,EAAQl8Q,SAErBh3F,KAAK2uW,UAAU91R,SAASme,KAG5Bh3F,KAAKurN,UAAUv0H,GAAY,IAAIk8Q,EAAQlzW,KAAKyxW,OAAQzxW,MACpDA,KAAK2uW,UAAU3oW,KAAKgxF,Q,EA3DHqjR,GACZA,GAAAA,QAAU3L,EAEV2L,GAAAA,WAAY,EAEZA,GAAAA,QAAAA,QAEAA,GAAAA,OAAS,CACdE,QAAQ,I,+JCVNj9B,GAAazB,EAAAA,EAAAA,GACjB8W,EAAAA,EACA5B,EAAAA,GAIF,QAAezT,EAAWnwL,OAAO,CAC/B95I,KAAM,cAENoiH,MAAO,CACL4tN,UAAW,CACT9mJ,QAAS,KACT9tC,UAAY,SAAAvvH,GACV,MAAO,CAAC,SAAU,UAAU25C,UAArB,OAAqC35C,MAGhDy/S,SAAUrnP,QACVkjR,kBAAmBljR,QACnB0kQ,YAAa,CACX9uU,KAAMoqE,QACNilG,SAAS,GAEX82J,YAAa/7P,QACb8wQ,YAAa9wQ,SAGflnF,KAAM,iBAAO,CAEXqqW,iBAAkB,KAClBC,cAAe,GACfloV,OAAQ,CAAC,QAAS,aAAc,aAAc,SAC9Cs3G,UAAW,KAGby5M,MAAO,CACLF,UAAW,iBACX+kB,YAAa,iBACb/U,YAAa,kBAGfrJ,QAlC+B,WAmC7B,IAAM2wB,GAAW7R,EAAAA,EAAAA,IAAY9oW,KAAM,aAAa,GAE5C26W,GAAY,CAAC,SAAU,UAAU9hS,SAAS8hS,KAC5C1c,EAAAA,EAAAA,IAAa,kGAAiGj+V,MAGhHA,KAAK46W,sBAGP52B,cA5C+B,WA6C7BhkV,KAAK66W,yBAGP3/R,QAAS,CACP0/R,mBADO,WAEL,GACG56W,KAAKqjV,YACNrjV,KAAK2+U,UACJ3+U,KAAKglV,eAHR,CAMAhlV,KAAK8pI,UAAY9pI,KAAKm2V,wBAGtB,IAFA,IAAMtzV,EAAOtD,OAAOsD,KAAK7C,KAAK8pI,WAE9B,MAAkBjnI,EAAlB,eAAwB,CAAnB,IAAM+Y,EAAX,KACE5b,KAAKglV,eAAgBt/T,iBAAiB9J,EAAK5b,KAAK8pI,UAAUluH,OAG9DkqU,aAfO,WAgBL,IAAMn4K,GAAO+8K,EAAAA,EAAAA,IAAQ1qV,KAAM,YAAaT,OAAOwB,OAAOf,KAAK86W,gBAAiB,CAC1E59B,GAAIl9U,KAAKm2V,wBACT3Z,MAAOx8U,KAAKk2V,6BACP,GAIP,OAFAl2V,KAAK06W,cAAgB/sM,EAEdA,GAETuoL,uBAzBO,WA0BL,MAAO,CACL9Q,KAAOplV,KAAKg8V,cAAgBh8V,KAAKqzV,YAAe,cAAWntT,EAC3D,iBAAiB,EACjB,gBAAiBv1B,OAAO3Q,KAAKyhV,YAGjC0U,sBAhCO,WAgCc,WACnB,GAAIn2V,KAAK2+U,SAAU,MAAO,GAE1B,IAAM70M,EAAuB,GAgC7B,OA9BI9pI,KAAKqzV,aACPvpN,EAAU4sN,WAAc,SAAAhyV,GACtB,EAAKsgV,aAAatgV,GAClB,EAAKoyV,SAAS,SAEhBhtN,EAAU8sN,WAAc,SAAAlyV,GACtB,EAAKsgV,aAAatgV,GAClB,EAAKoyV,SAAS,WAEP92V,KAAKg8V,cACdlyN,EAAUklG,MAAS,SAAAtqO,GACjB,IAAM2+U,EAAY,EAAK2B,aAAatgV,GAChC2+U,GAAWA,EAAU7kR,QAEzB95D,EAAEo9U,kBAEF,EAAKL,UAAY,EAAKA,WAItBzhV,KAAKooW,cACPt+N,EAAUtrE,MAAS,SAAA95D,GACjB,EAAKsgV,aAAatgV,GAElBA,EAAEo9U,kBAEF,EAAKL,UAAY,EAAKA,WAInB33M,GAETk7M,aArEO,SAqEOtgV,GAAS,MAErB,GAAI1E,KAAKy6W,iBAAkB,OAAOz6W,KAAKy6W,iBAEvC,IAAIp3B,EAAY,KAEhB,GAAIrjV,KAAKqjV,UAAW,CAClB,IAAM19T,EAAS3lB,KAAKw6W,kBAAoBx6W,KAAK8/U,IAAMnqS,SAIjD0tS,EAF4B,kBAAnBrjV,KAAKqjV,UAEF19T,EAAOm0T,cAAc95U,KAAKqjV,WAC5BrjV,KAAKqjV,UAAkBvD,IAEpB9/U,KAAKqjV,UAAkBvD,IAGxB9/U,KAAKqjV,eAEd,GAAkC,IAA9BrjV,KAAK06W,cAAcr5W,QAAiBrB,KAAK06W,cAAcr5W,SAAWqD,EAAI,CAI/E,IAAMq2W,EAAK/6W,KAAK06W,cAAc,GAAGM,kBAO/B33B,EALA03B,GACAA,EAAG/wN,SAAS6xL,QACZk/B,EAAG/wN,SAAS6xL,OAAOvoT,MAAM,SAAAntB,GAAD,OAAYA,EAAEvE,SAAW,CAAC,cAAe,YAAYi3E,SAAS1yE,EAAEvE,QAAQyR,SAGnF0nW,EAAW/1B,eAEZhlV,KAAK06W,cAAc,GAAGjsK,SAE3B/pM,IAET2+U,EAAa3+U,EAAE+oW,eAAiB/oW,EAAEihB,QAMpC,OAFA3lB,KAAKy6W,kBAA4B,OAAT,EAAAp3B,QAAA,IAAW37I,YAAaI,KAAKmzK,aAAe53B,EAAY,KAEzErjV,KAAKy6W,kBAEd70B,eAjHO,WAkHL,OAAO8E,EAAAA,EAAAA,IAAQ1qV,KAAM,UAAWA,KAAK86W,iBAAiB,IAExDA,cApHO,WAqHL,IAAMpjS,EAAO13E,KACb,MAAO,CACDsE,YACF,OAAOozE,EAAK+pQ,UAEVn9U,UAAOm9U,GACT/pQ,EAAK+pQ,SAAWA,KAItBo5B,sBA/HO,WAgIL,GACG76W,KAAKqjV,WACLrjV,KAAKy6W,iBAFR,CAOA,IAFA,IAAM53W,EAAOtD,OAAOsD,KAAK7C,KAAK8pI,WAE9B,MAAkBjnI,EAAlB,eAAwB,CAAnB,IAAM+Y,EAAX,KACG5b,KAAKy6W,iBAAyB/2T,oBAAoB9nC,EAAK5b,KAAK8pI,UAAUluH,IAGzE5b,KAAK8pI,UAAY,KAEnBoxO,eA7IO,WA8ILl7W,KAAK66W,wBACL76W,KAAKy6W,iBAAmB,KACxBz6W,KAAKglV,eACLhlV,KAAK46W,0B,uEC/MG,SAAUO,EAAiB72W,GAAwC,IAArBkuB,EAAqB,uDAAF,GAE7E,OAAOqpT,EAAAA,EAAAA,IAAOqc,EAAAA,EAAAA,GAAoB,CAAC,WAAY,WAAW/qM,OAAO,CAC/D95I,KAAM,kBAENoiH,MAAO,CACLrC,IAAK97B,SAGPw2J,SAAU,CACRstH,oBADQ,WAEN,OAAO92W,IAIXi/U,MAAO,CAGLnwN,IAHK,SAGAk6C,EAAYzP,GACfA,EACI79J,KAAKq7W,mBAAkB,GACvBr7W,KAAKs7W,cAEXF,oBARK,SAQgBG,EAAQC,GAC3Bx7W,KAAKk8U,SAASjhS,YAAY+zS,WAAWhvV,KAAK6rV,KAAM2vB,KAIpDnO,UA1B+D,WA2B7DrtW,KAAKs7W,cAGP77B,QA9B+D,WA+B7D,IAAK,IAAIv+U,EAAI,EAAGG,EAASmxB,EAAOnxB,OAAQH,EAAIG,EAAQH,IAClDlB,KAAK4lW,OAAOpzU,EAAOtxB,GAAIlB,KAAKs7W,YAE9Bt7W,KAAKs7W,cAGPtxB,QArC+D,WAsC7DhqV,KAAKs7W,cAGPG,YAzC+D,WA0C7Dz7W,KAAKq7W,qBAGPp3I,UA7C+D,WA8C7DjkO,KAAKq7W,qBAGPngS,QAAS,CACPogS,WADO,WAEAt7W,KAAKozH,KAEVpzH,KAAKk8U,SAASjhS,YAAY60L,SACxB9vO,KAAK6rV,KACL7rV,KAAKo7W,oBACLp7W,KAAK8jW,sBAGTuX,kBAVO,WAUyB,IAAb7iC,EAAa,yDACzBA,GAAUx4U,KAAKozH,MAEpBpzH,KAAKk8U,SAASjhS,YAAY+zS,WACxBhvV,KAAK6rV,KACL7rV,KAAKo7W,sBAGTtX,kBAAmB,kBAAM,Q,6DCpE/B,SAAS4X,EAAa1kR,GACpB,OAAO,SAAqB93D,EAAKs8U,GAC/B,IAAK,IAAM9rK,KAAQ8rK,EACZj8W,OAAOW,UAAUJ,eAAea,KAAKu+B,EAAKwwK,IAC7C1vM,KAAK27W,QAAQ37W,KAAK47W,MAAM5kR,GAAW04G,GAGvC,IAAK,IAAMA,KAAQxwK,EACjBl/B,KAAKw6L,KAAKx6L,KAAK47W,MAAM5kR,GAAW04G,EAAMxwK,EAAIwwK,KAKhD,QAAe22I,EAAAA,EAAAA,OAAW,CACxBj2U,KAAM,iBAAO,CACXq3U,OAAQ,GACRX,WAAY,KAGdrH,QANwB,WAStBz/U,KAAK4lW,OAAO,SAAU8V,EAAY,UAAW,CAAEhd,WAAW,IAC1D1+V,KAAK4lW,OAAO,aAAc8V,EAAY,cAAe,CAAEhd,WAAW,Q,wECZtE,QAAerY,EAAAA,EAAAA,SAA+Bl5L,OAAO,CACnD95I,KAAM,WAENoiH,MAAO,CACLozN,MAAOvxP,SAGTlnF,KAAM,iBAAO,CACX2zU,UAAU,IAGZj2F,SAAU,CACR+tH,WADQ,WAEN,OAAO77W,KAAK+jV,UAAY/jV,KAAK6oV,OAAS7oV,KAAKyhV,WAI/C8B,MAAO,CACL9B,SADK,WAEHzhV,KAAK+jV,UAAW,IAIpBtE,QAvBmD,WAyB7C,SAAUz/U,KAAK2/U,SACjBx4M,EAAAA,EAAAA,IAAQ,OAAQnnI,OAIpBk7E,QAAS,CACPgqQ,gBADO,SACU1jV,GACf,OAAQxB,KAAK67W,YAAcr6W,EAAWA,IAAY,CAACxB,KAAKkgV,uB,oLC7C9D,QAAemG,EAAAA,EAAAA,OAAW,CACxBhzU,KAAM,YAENoiH,MAAO,CACLm3F,MAAOj8M,QAGTuqE,QAAS,CACPkiQ,mBADO,SACaxwH,GAA4C,IAApBx8M,EAAoB,uDAAF,GAC5D,MAA0B,kBAAfA,EAAKo6D,QAEdyzR,EAAAA,EAAAA,IAAa,0BAA2Bj+V,MAEjCoQ,GAEiB,kBAAfA,EAAI,WAEb6tV,EAAAA,EAAAA,IAAa,0BAA2Bj+V,MAEjCoQ,KAEL0rW,EAAAA,EAAAA,IAAWlvJ,GACbx8M,EAAKo6D,OAAL,kBACKp6D,EAAKo6D,OADV,IAEE,mBAAoB,GAApB,OAAuBoiJ,GACvB,eAAgB,GAAhB,OAAmBA,KAEZA,IACTx8M,EAAI,UAAJ,kBACKA,EAAI,UADT,cAEGw8M,GAAQ,KAINx8M,IAGTowU,aA9BO,SA8BO5zH,GAA4C,IAApBx8M,EAAoB,uDAAF,GACtD,GAA0B,kBAAfA,EAAKo6D,MAId,OAFAyzR,EAAAA,EAAAA,IAAa,0BAA2Bj+V,MAEjCoQ,EAET,GAA0B,kBAAfA,EAAI,SAIb,OAFA6tV,EAAAA,EAAAA,IAAa,0BAA2Bj+V,MAEjCoQ,EAET,IAAI0rW,EAAAA,EAAAA,IAAWlvJ,GACbx8M,EAAKo6D,OAAL,kBACKp6D,EAAKo6D,OADV,IAEEoiJ,MAAO,GAAF,OAAKA,GACV,cAAe,GAAf,OAAkBA,UAEf,GAAIA,EAAO,CAChB,MAAmCA,EAAMr+M,WAAWmN,OAAOtE,MAAM,IAAK,GAAtE,eAAO2kW,EAAP,KAAkBC,EAAlB,KACA5rW,EAAI,UAAJ,kBACKA,EAAI,UADT,cAEG2rW,EAAY,UAAW,IAEtBC,IACF5rW,EAAI,SAAO,SAAW4rW,IAAiB,GAG3C,OAAO5rW,O,uECnEb,QAAei2U,EAAAA,EAAAA,OAAW,CACxBhzU,KAAM,aACNoiH,MAAO,CACLg5N,gBAAiB,CACfvhU,KAAMo5H,SACNi2C,QAAS7jH,EAAAA,Q,uFCAf,QAAe2tQ,EAAAA,EAAAA,SAA2Cl5L,OAAO,CAC/D95I,KAAM,YAENoiH,MAAO,CACL0yO,UAAW,CACTj7U,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,GAEX2rK,WAAY,CACVh7U,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,IAIbnsL,KAAM,iBAAO,CACX6rW,iBAAa/1U,EACbg2U,kBAAch2U,IAGhBg1C,QAAS,CAIPihS,WAJO,WAKL51S,aAAavmE,KAAKi8W,aAClB11S,aAAavmE,KAAKk8W,eAKpBplB,SAXO,SAWG5pU,EAAwB4qF,GAAe,WAC/C93G,KAAKm8W,aAEL,IAAM1zU,EAAQwc,SAAUjlD,KAAA,UAAgBktB,EAAhB,UAA8B,IAEpDltB,KAAA,UAAgBktB,EAAhB,YAAiCwb,WAAWovE,GAAO,WACnD,EAAK2pO,SAAW,CAAEh/U,MAAM,EAAMukB,OAAO,GAAQkG,IAC3Cub,Q,wEC5BV,SAAS2zU,EAAgB7nQ,GAEvB,IADA,IAAMrT,EAAU,GACP5uD,EAAQ,EAAGA,EAAQiiE,EAASlzG,OAAQixC,IAAS,CACpD,IAAM+pU,EAAQ9nQ,EAASjiE,GACnB+pU,EAAM56B,UAAY46B,EAAMC,YAC1Bp7Q,EAAQl7F,KAAKq2W,GAEbn7Q,EAAQl7F,KAAR,MAAAk7F,GAAO,OAASk7Q,EAAeC,EAAME,aAIzC,OAAOr7Q,EAIT,SAAe26O,EAAAA,EAAAA,KAAkB1uL,OAAO,CACtC95I,KAAM,YAENjD,KAHsC,WAIpC,MAAO,CACLi4V,iBAAiB,EACjB5mB,UAAU,EACV66B,aAAa,IAIjB/4B,MAAO,CACL9B,SADK,SACKviT,GACR,IAAIA,EAGJ,IADA,IAAMs9U,EAAiBx8W,KAAK+kV,oBACnBzyS,EAAQ,EAAGA,EAAQkqU,EAAen7W,OAAQixC,IACjDkqU,EAAelqU,GAAOmvS,UAAW,IAKvCvmQ,QAAS,CACP6pQ,kBADO,WAEL,OAAI/kV,KAAKqoW,gBAAwB+T,EAAep8W,KAAKu8W,WAE9C,IAETt3B,yBANO,WAUL,IAHA,IAAMrgV,EAAS,GACT43W,EAAiBx8W,KAAK+kV,oBAEnBzyS,EAAQ,EAAGA,EAAQkqU,EAAen7W,OAAQixC,IACjD1tC,EAAOoB,KAAP,MAAApB,GAAM,OAAS43W,EAAelqU,GAAOmqU,kCAGvC,OAAO73W,GAET63W,8BAhBO,WAiBL,IAAM73W,EAAS,CAAC5E,KAAK8/U,KAKrB,OAJI9/U,KAAKokV,MAAM5iV,SAASoD,EAAOoB,KAAKhG,KAAKokV,MAAM5iV,SAC3CxB,KAAKqkV,SAASz/U,EAAOoB,KAAKhG,KAAKqkV,QAAQvE,KAC3Cl7U,EAAOoB,KAAP,MAAApB,GAAM,OAAS5E,KAAKilV,6BAEbrgV,O,oMC1Db,SAAS83W,EAAsBx9U,GAC7B,IAAMhS,GAAO,OAAOgS,GAEpB,MAAa,YAAThS,GAA+B,WAATA,GAEnBgS,EAAIwoK,WAAaI,KAAKmzK,aAG/B,SAAS0B,EAAiBt5B,GACxBA,EAAUvgV,SAAQ,SAAA6qK,GAChBA,EAAK8gC,KACL9gC,EAAK8gC,IAAI1jI,YACT4iG,EAAK8gC,IAAI1jI,WAAWC,YAAY2iG,EAAK8gC,QAKzC,SAAeotI,EAAAA,EAAAA,GAIbgV,EAAAA,GAAU1jM,OAAO,CACjB95I,KAAM,aAENoiH,MAAO,CACLowN,OAAQ,CACNtpJ,SAAS,EACT9tC,UAAWiuN,GAEbx5B,aAAc,CACZh2T,KAAMvc,OACN4rL,QAAS,KAIbnsL,KAAM,iBAAO,CACXsqW,cAAe,KACfkC,aAAa,IAGfr5B,MAAO,CACLsC,OADK,WAEH7lV,KAAK48W,aAAc,EACnB58W,KAAK68W,cAEPhB,WALK,WAMH77W,KAAK8jV,UAAU9jV,KAAK68W,cAIxBh5B,YA7BiB,WA6BN,WACT7jV,KAAK8jV,WAAU,WACb,GAAI,EAAK42B,cAAe,CACtB,IAAMr3B,EAAY3jV,MAAM21E,QAAQ,EAAKqlS,eAAiB,EAAKA,cAAgB,CAAC,EAAKA,eAEjFr3B,EAAUvgV,SAAQ,SAAA6qK,GAChB,GAAKA,EAAK8gC,KACL,EAAKqxI,IAAI/0Q,WAAd,CAEA,IAAMplD,EAAS,EAAKm6T,MAAQ,EAAKA,IAAI/0Q,WAAW8lI,WAC5C,EAAKivI,IACL,EAAKA,IAAIg9B,YAEb,EAAKh9B,IAAI/0Q,WAAWmjI,aAAavgC,EAAK8gC,IAAK9oL,YAMnDqkU,QAhDiB,WAiDfhqV,KAAK67W,YAAc77W,KAAK68W,cAG1BpB,YApDiB,WAqDfz7W,KAAKyhV,UAAW,GAGlBuC,cAxDiB,WA0DbhkV,KAAKokV,MAAM5iV,SACXxB,KAAKokV,MAAM5iV,QAAQupE,YAEnB/qE,KAAKokV,MAAM5iV,QAAQupE,WAAWC,YAAYhrE,KAAKokV,MAAM5iV,UAIzDyiO,UAjEiB,WAiER,WACP,GAAIjkO,KAAK06W,cAAe,CACtB,IAAMr3B,EAAY3jV,MAAM21E,QAAQr1E,KAAK06W,eAAiB16W,KAAK06W,cAAgB,CAAC16W,KAAK06W,eACjF,GAAI16W,KAAK8/U,IAAIi9B,YAAa,CAGxB,IAAMviS,EAAW,IAAIyzF,kBAAiB,SAAAxF,GAElCA,EAAKn1I,MAAK,SAAA0pV,GAAM,OAAIt9W,MAAMshG,KAAKg8Q,EAAOC,cAAcpkS,SAAS,EAAKinQ,UAElEtlQ,EAAS0iS,aACTP,EAAgBt5B,OAGpB7oQ,EAASi0F,QAAQzuK,KAAK8/U,IAAI/0Q,WAAa,CAAEoyS,SAAS,EAAOC,WAAW,SAEpET,EAAgBt5B,KAKtBnoQ,QAAS,CACPmqQ,gBADO,WAEL,IAAMj8L,GAAU62M,EAAAA,EAAAA,IAAqBjgW,KAAK0pJ,OAAQ,6BAElD,OAAON,IAAW,UACfA,EAAU,KAGfyzN,WARO,WAmBL,IAAIl3V,EAVA3lB,KAAKmkV,eACNnkV,KAAKokV,MAAM5iV,SACZxB,KAAK48W,aAGW,KAAhB58W,KAAK6lV,SACW,IAAhB7lV,KAAK6lV,QACW,WAAhB7lV,KAAK6lV,SAMLlgU,GAFkB,IAAhB3lB,KAAK6lV,OAEElwS,SAASmkS,cAAc,cACA,kBAAhB95U,KAAK6lV,OAEZlwS,SAASmkS,cAAc95U,KAAK6lV,QAG5B7lV,KAAK6lV,OAGXlgU,GAKLA,EAAOmlD,YAAY9qE,KAAKokV,MAAM5iV,SAE9BxB,KAAK48W,aAAc,IANjBryB,EAAAA,EAAAA,IAAY,2BAAD,OAA4BvqV,KAAK6lV,QAAU,cAAgB7lV,Y,2FC5J9E,QAAeqmV,EAAAA,EAAAA,OAAW,CACxBhzU,KAAM,aAENoiH,MAAO,CACL+pN,UAAW,CAACp3S,OAAQz3B,SAGtBm9O,SAAU,CACRoxF,kBADQ,WAEN,OAAOl/U,KAAKw/U,WAEdR,iBAJQ,WAKN,IAAMQ,EAAYx/U,KAAKk/U,kBAEvB,OAAiB,MAAbM,GACA3iQ,MAAM53B,SAASu6R,IADW,IAEvB,8BAAgBx/U,KAAKw/U,YAAc,Q,wECF1C,SAAUx8I,EACdn6B,EACAwzM,EACAx9T,GAEA,OAAOiyS,EAAAA,EAAAA,GAAwBjoL,EAAWwzM,EAAOx9T,GAAQsuG,OAAO,CAC9D95I,KAAM,YAENoiH,MAAO,CACLooN,YAAa,CACX3wT,KAAMvc,OADK,mBAGT,GAAK3Q,KAAK6oK,GAEV,OAAO7oK,KAAK6oK,GAAWg1K,cAG3Bc,SAAUrnP,SAGZlnF,KAf8D,WAgB5D,MAAO,CACLqxU,UAAU,IAId3zF,SAAU,CACRixF,aADQ,WAEN,OAAK/+U,KAAK69U,aAEH,UACJ79U,KAAK69U,YAAc79U,KAAKyhV,UAHG,KAQlChC,QA/B8D,WAgC5Dz/U,KAAK6oK,IAAe7oK,KAAK6oK,GAAmBinE,SAAS9vO,OAGvDgkV,cAnC8D,WAoC5DhkV,KAAK6oK,IAAe7oK,KAAK6oK,GAAmBmmL,WAAWhvV,OAGzDk7E,QAAS,CACPwyF,OADO,WAEL1tK,KAAKggV,MAAM,cAODh9I,EAAQ,c,gFCpD1B,QAAeqjJ,EAAAA,EAAAA,SAAwBl5L,OAAO,CAC5C95I,KAAM,WAENoiH,MAAO,CACL0oN,QAAS,CACPjxT,KAAM,CAACoqE,QAAS3mF,QAChB4rL,SAAS,GAEXokJ,aAAc,CACZzzT,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,IAIbrhH,QAAS,CACP6lQ,YADO,WAEL,OAAqB,IAAjB/gV,KAAKm+U,QAA0B,KAE5Bn+U,KAAKo8U,OAAOxC,UAAY55U,KAAKkgV,eAAeuZ,EAAAA,EAAiB,CAClEhkO,MAAO,CACLipN,UAAU,EACV9xH,OAAyB,IAAjB5sN,KAAKm+U,SAAqC,KAAjBn+U,KAAKm+U,QACjCn+U,KAAK4sN,OAAS,UACf5sN,KAAKm+U,QACT1+Q,OAAQz/D,KAAK2gV,aACbN,eAAe,U,+EClCzB,QAAegG,EAAAA,EAAAA,OAAW,CACxBhzU,KAAM,aAENoiH,MAAO,CACLh2D,OAAQ,CAACr3B,OAAQz3B,QACjBuiV,UAAW,CAAC9qT,OAAQz3B,QACpB6xU,SAAU,CAACp6S,OAAQz3B,QACnB0sW,UAAW,CAACj1U,OAAQz3B,QACpBqsU,SAAU,CAAC50S,OAAQz3B,QACnB4uD,MAAO,CAACn3B,OAAQz3B,SAGlBm9O,SAAU,CACRmvF,iBADQ,WAEN,IAAMlyC,EAAiC,GAEjCtrO,GAASs9Q,EAAAA,EAAAA,IAAc/8U,KAAKy/D,QAC5B49S,GAAYtgC,EAAAA,EAAAA,IAAc/8U,KAAKq9W,WAC/BrgC,GAAWD,EAAAA,EAAAA,IAAc/8U,KAAKg9U,UAC9BkW,GAAYnW,EAAAA,EAAAA,IAAc/8U,KAAKkzV,WAC/B1Q,GAAWzF,EAAAA,EAAAA,IAAc/8U,KAAKwiV,UAC9BjjR,GAAQw9Q,EAAAA,EAAAA,IAAc/8U,KAAKu/D,OASjC,OAPIE,IAAQsrO,EAAOtrO,OAASA,GACxB49S,IAAWtyE,EAAOsyE,UAAYA,GAC9BrgC,IAAUjyC,EAAOiyC,SAAWA,GAC5BkW,IAAWnoD,EAAOmoD,UAAYA,GAC9B1Q,IAAUz3C,EAAOy3C,SAAWA,GAC5BjjR,IAAOwrO,EAAOxrO,MAAQA,GAEnBwrO,O,wJCzBPuyC,GAAazB,EAAAA,EAAAA,GACjBuG,EAAAA,GACAk7B,EAAAA,EAAAA,GAAoB,CAAC,MAAO,QAAS,SAAU,OAAQ,aACvDj7B,EAAAA,EACAJ,EAAAA,GA8BF,QAAe3E,EAAWnwL,SAAkBA,OAAO,CACjD95I,KAAM,WAENoiH,MAAO,CACL8nP,cAAejmR,QACf0kP,MAAO1kP,QACPykP,KAAMzkP,QACNkrP,SAAU,CACRt1T,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,QAEXygJ,SAAU,CAAC50S,OAAQz3B,QACnB2tV,YAAa,CACXpxU,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,GAEXksK,UAAW,CACTv7U,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,GAEXmsK,WAAY,CACVx7U,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,GAEXqsK,SAAU,CACR17U,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,GAEX83J,WAAY,CACVnnU,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,GAEXihL,eAAgBlmR,QAChB06O,UAAW,CACT9kT,KAAMkb,OACNm0J,QAAS,MAEX01I,UAAW,CACT/kT,KAAMkb,OACNm0J,QAAS,MAEXwwB,OAAQ,CACN7/L,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,OAIbnsL,KAAM,iBAAO,CACXsqW,cAAe,GACf+C,UAAW,EACXC,UAAW,EACX76B,YAAa,KACb0T,gBAAgB,EAChBve,WAAY,CACVqL,UAAW,CACT3jR,IAAK,EACLE,KAAM,EACNitJ,OAAQ,EACR38G,MAAO,EACP3wC,MAAO,EACPE,OAAQ,EACRs1R,UAAW,EACXS,aAAc,EACdgT,WAAY,GAEdhnW,QAAS,CACPk+D,IAAK,EACLE,KAAM,EACNitJ,OAAQ,EACR38G,MAAO,EACP3wC,MAAO,EACPE,OAAQ,EACRs1R,UAAW,EACXS,aAAc,IAGlBmoB,gBAAiB,EACjBnqB,gBAAgB,EAChBn8P,WAAW,EACXumR,gBAAgB,EAChBhpB,iBAAiB,EACjBN,UAAW,EACXuU,YAAa,EACbgV,WAAY,0BACZ76B,eAAgB,IAGlBl1F,SAAU,CACRgwH,aADQ,WAEN,IAAMl3W,EAAI5G,KAAKg4U,WAAWqL,UACpBpvQ,EAAIj0E,KAAKg4U,WAAWx2U,QACpB+mW,IAAiC,IAAhBvoW,KAAK6lV,OAAmBj/U,EAAE4hW,WAAa5hW,EAAEg5D,OAAS,EACnEo9Q,EAAW/tU,KAAK4wD,IAAIj5D,EAAE24D,MAAO0U,EAAE1U,OACjCK,EAAO,EAGX,GAFAA,GAAQ2oS,GACJvoW,KAAK4/D,MAAS5/D,KAAKk8U,SAASI,MAAQt8U,KAAKkwG,SAAQtwC,GAASo9Q,EAAWp2U,EAAE24D,OACvEv/D,KAAKmzV,QAAS,CAChB,IAAM3Q,EAAW3lQ,MAAMz0C,OAAOpoC,KAAKwiV,WAC/B57U,EAAE24D,MACFtwD,KAAKs2C,IAAI3+C,EAAE24D,MAAOn3B,OAAOpoC,KAAKwiV,WAElC5iR,GAAQ5/D,KAAK4/D,MAAQ4iR,EAAW57U,EAAE24D,MAKpC,OAHIv/D,KAAKyoW,YAAW7oS,GAAQ3a,SAASjlD,KAAKyoW,YACtCzoW,KAAK0oW,aAAY9oS,GAAQ3a,SAASjlD,KAAK0oW,aAEpC9oS,GAET61R,YArBQ,WAsBN,IAAM7uV,EAAI5G,KAAKg4U,WAAWqL,UACpBpvQ,EAAIj0E,KAAKg4U,WAAWx2U,QACtBk+D,EAAM,EASV,OAPI1/D,KAAK0/D,MAAKA,GAAO94D,EAAE64D,OAASwU,EAAExU,SACd,IAAhBz/D,KAAK6lV,OAAkBnmR,GAAO94D,EAAEmuV,UAC/Br1R,GAAO94D,EAAE84D,IAAM1/D,KAAK6oW,YACrB7oW,KAAKozV,UAAS1zR,GAAO1/D,KAAK0/D,KAAO94D,EAAE64D,OAAS74D,EAAE64D,QAC9Cz/D,KAAK4oW,WAAUlpS,GAAOza,SAASjlD,KAAK4oW,WACpC5oW,KAAKs+V,cAAa5+R,GAAOza,SAASjlD,KAAKs+V,cAEpC5+R,GAET0jR,aAnCQ,WAoCN,QAASpjV,KAAKo8U,OAAOiH,aAAerjV,KAAKsjV,aAAaD,aAAerjV,KAAKqjV,aAAerjV,KAAK49W,gBAEhGG,gBAtCQ,WAuCN,OAAO/9W,KAAK6oW,YAAc7oW,KAAK29W,kBAInCp6B,MAAO,CACL5E,SADK,SACKz/S,GACRA,GAAOl/B,KAAKi3V,kBAEdxV,SAJK,SAIKviT,GACJl/B,KAAK2+U,WAETz/S,EAAMl/B,KAAKk1V,eAAiBl1V,KAAKi3V,mBAEnCjlB,UAAW,mBACXC,UAAW,oBAGb4R,YA/IiD,WAgJ/C7jV,KAAKq3F,UAA8B,qBAAXlzE,OAEpBnkB,KAAKq3F,WACPlzE,OAAOuB,iBAAiB,SAAU1lB,KAAKm1V,kBAAkB,IAI7DnR,cAvJiD,WAwJ3ChkV,KAAKq3F,WACPlzE,OAAOu/B,oBAAoB,SAAU1jD,KAAKm1V,kBAAkB,IAIhEj6Q,QAAS,CACP8iS,iBADO,WAEL,MAAO,CACLjpB,UAAW/0V,KAAKiyU,WAAajyU,KAAK09W,UAClClV,WAAYxoW,KAAKgyU,WAAahyU,KAAKy9W,UACnCjoB,aAAc,EACd91R,IAAK1/D,KAAKiyU,WAAajyU,KAAK09W,UAC5B7wJ,OAAQ7sN,KAAKiyU,WAAajyU,KAAK09W,UAC/B99S,KAAM5/D,KAAKgyU,WAAahyU,KAAKy9W,UAC7BvtQ,MAAOlwG,KAAKgyU,WAAahyU,KAAKy9W,UAC9Bh+S,OAAQ,EACRF,MAAO,IAGXgtN,SAdO,aAeP2nE,SAfO,SAeGJ,GACR,OAAO/W,EAAAA,EAAAA,KAA8B,IAAhB/8U,KAAK6lV,OACtB7lV,KAAK89W,aACL99W,KAAKg0V,cAAch0V,KAAK89W,aAAchqB,KAE5CW,QApBO,WAqBL,OAAO1X,EAAAA,EAAAA,KAA8B,IAAhB/8U,KAAK6lV,OACtB7lV,KAAKy1V,YACLz1V,KAAKw0V,cAAcx0V,KAAKy1V,eAE9BzB,cAzBO,SAyBQp0R,EAAck0R,GAC3B,IAAMmqB,EAAYr+S,EAAOk0R,EAAY9zV,KAAKs0V,UAAY,GAQtD,OALE10R,IADI5/D,KAAK4/D,MAAQ5/D,KAAKkwG,QAAU+tQ,EAAY,EACrChvW,KAAK4wD,IAAID,EAAOq+S,EAAW,GAE3BhvW,KAAK4wD,IAAID,EAAM,IAGjBA,EAAO5/D,KAAKk+W,iBAErB1pB,cApCO,SAoCQ90R,GACb,IAAMy+S,EAAiBn+W,KAAKo+W,iBACtBC,EAAQr+W,KAAK+9W,gBAAkBI,EAC/B96B,EAAYrjV,KAAKg4U,WAAWqL,UAC5ByR,EAAgB90V,KAAKg4U,WAAWx2U,QAAQi+D,OACxC6+S,EAAc5+S,EAAMo1R,EACpBypB,EAAgBF,EAAQC,EAmB9B,OAfIC,GACFv+W,KAAKw9W,gBAGLn6B,EAAU3jR,IAAMo1R,EAEhBp1R,EAAM1/D,KAAK6oW,aAAexlB,EAAU3jR,IAAMo1R,GAEjCypB,IAAkBv+W,KAAKu9W,cAChC79S,EAAM2+S,EAAQvpB,EAAgB,GAErBp1R,EAAM1/D,KAAK+9W,kBAAoB/9W,KAAKu9W,gBAC7C79S,EAAM1/D,KAAK+9W,gBAAkB,IAGxBr+S,EAAM,GAAK,GAAKA,GAEzBw1R,aA/DO,WAgEAl1V,KAAKq3F,WAEVr3F,KAAKusR,YAEP0qE,eApEO,WAqELj3V,KAAK40V,iBAAkB,EAEvB50V,KAAK+oW,cAEPyV,oBAzEO,WA0EDx+W,KAAKq3F,YACPr3F,KAAK6oW,YAAc7oW,KAAKu2V,eAAiB,EAAIv2V,KAAKy+W,iBAGtDC,oBA9EO,WA+EL,IAAoB,IAAhB1+W,KAAK6lV,OAAT,CACA,IAAIrxL,EAAKx0J,KAAKglV,eACd,MAAOxwL,EAAI,CACT,GAA6C,UAAzCrwI,OAAO+oV,iBAAiB14M,GAAI9pF,SAE9B,YADA1qE,KAAKu2V,gBAAiB,GAGxB/hM,EAAKA,EAAGmqN,aAEV3+W,KAAKu2V,gBAAiB,IAExBwS,WA1FO,aA2FP5S,sBA3FO,WA2Fc,WACbrsN,EAAYu4M,EAAAA,EAAAA,QAAAA,QAAAA,sBAAAA,KAAuDriV,MAEnEotV,EAAUtjN,EAAUklG,MAa1B,OAXIo+G,IACFtjN,EAAUklG,MAAS,SAAAtqO,GACb,EAAKs3V,aACP5O,GAAWA,EAAQ1oV,GAGrB,EAAK+4W,UAAY/4W,EAAEkoW,QACnB,EAAK8Q,UAAYh5W,EAAEmoW,UAIhB/iO,GAETs0O,eA7GO,WA8GL,OAAKp+W,KAAKq3F,UAEHlzE,OAAOk7C,aACZ1pB,SAASupB,gBAAgBI,aAHC,GAK9B4+S,cAnHO,WAoHL,OAAKl+W,KAAKq3F,UAEHlzE,OAAOy6V,aACZjpU,SAASupB,gBAAgB2/S,WAHC,GAK9BJ,aAzHO,WA0HL,OAAKz+W,KAAKq3F,UAEHlzE,OAAO0kV,aACZlzT,SAASupB,gBAAgB21R,UAHC,GAK9BiqB,4BA/HO,SA+HsBtqN,GAC3B,IAAMgrJ,EAAOhrJ,EAAGglM,wBAChB,MAAO,CACL95R,IAAKzwD,KAAKmiB,MAAMouR,EAAK9/O,KACrBE,KAAM3wD,KAAKmiB,MAAMouR,EAAK5/O,MACtBitJ,OAAQ59M,KAAKmiB,MAAMouR,EAAK3yF,QACxB38G,MAAOjhG,KAAKmiB,MAAMouR,EAAKtvM,OACvB3wC,MAAOtwD,KAAKmiB,MAAMouR,EAAKjgP,OACvBE,OAAQxwD,KAAKmiB,MAAMouR,EAAK//O,UAG5BwO,QA1IO,SA0IEumF,GACP,IAAKA,IAAOx0J,KAAKq3F,UAAW,OAAO,KAEnC,IAAMmoN,EAAOx/S,KAAK8+W,4BAA4BtqN,GAG9C,IAAoB,IAAhBx0J,KAAK6lV,OAAkB,CACzB,IAAMr7Q,EAAQrmD,OAAO+oV,iBAAiB14M,GAEtCgrJ,EAAK5/O,KAAO3a,SAASulB,EAAMu0S,YAC3Bv/D,EAAK9/O,IAAMza,SAASulB,EAAMw0S,WAG5B,OAAOx/D,GAETy/D,UAzJO,SAyJInnQ,GAAc,WACvB40K,uBAAsB,WACpB,IAAMl4H,EAAK,EAAK4vL,MAAM5iV,QAEjBgzJ,GAA2B,SAArBA,EAAGhqF,MAAM6mG,SAKpB7c,EAAGhqF,MAAM6mG,QAAU,eACnBv5D,IACA08C,EAAGhqF,MAAM6mG,QAAU,QANjBv5D,QASNs9O,gBAvKO,WAuKQ,WACb,OAAO,IAAIhzV,SAAc,SAAAC,GAAO,OAAIqqR,uBAAsB,WACxD,EAAKkoE,gBAAkB,EAAKpB,eAAiB,EAAK/R,SAClDp/U,WAGJ8yV,iBA7KO,WA6KS,WACdn1V,KAAKq3F,UAA8B,qBAAXlzE,OACxBnkB,KAAK0+W,sBACL1+W,KAAKw+W,sBACLx+W,KAAKs0V,UAAY3+S,SAASupB,gBAAgBC,YAE1C,IAAM64Q,EAAkB,CACtBqL,WAAW,UAAKrjV,KAAKg4U,WAAWqL,WAChC7hV,SAAS,UAAKxB,KAAKg4U,WAAWx2U,UAIhC,IAAKxB,KAAKojV,cAAgBpjV,KAAK0+U,SAC7B1G,EAAWqL,UAAYrjV,KAAKg+W,uBACvB,CACL,IAAM36B,EAAYrjV,KAAKglV,eACvB,IAAK3B,EAAW,OAEhBrL,EAAWqL,UAAYrjV,KAAKiuE,QAAQo1Q,GACpCrL,EAAWqL,UAAUmlB,WAAanlB,EAAUmlB,YACxB,IAAhBxoW,KAAK6lV,OAGP7N,EAAWqL,UAAU0R,UAAY1R,EAAU0R,UAE3C/c,EAAWqL,UAAU0R,UAAY,EAKrC/0V,KAAKi/W,WAAU,WACb,GAAI,EAAK76B,MAAM5iV,QAAS,CACtB,GAAI,EAAK4iV,MAAM5iV,QAAQm9W,aAAc,CACnC,IAAMO,EAAa,EAAKJ,4BAA4B,EAAK16B,MAAM5iV,QAAQm9W,cAEvE,EAAKhB,gBAAkBx5V,OAAO0kV,YAAcqW,EAAWx/S,IACvDs4Q,EAAWqL,UAAU3jR,KAAO,EAAKi+S,gBACjC3lC,EAAWqL,UAAUzjR,MAAQz7C,OAAOy6V,YAAcM,EAAWt/S,KAG/Do4Q,EAAWx2U,QAAU,EAAKysE,QAAQ,EAAKm2Q,MAAM5iV,SAG/C,EAAKw2U,WAAaA,U,uFCha1B,QAAemnC,EAAf,E,yBC4BA,QAAe94B,EAAAA,EAAAA,SAAqDl5L,OAAO,CACzE95I,KAAM,cAENoiH,MAAO,CACL+uN,YAAaltP,QACb8nR,aAAczuW,OACd0uW,eAAgB,CAACj3U,OAAQz3B,SAG3BP,KATyE,WAUvE,MAAO,CACLkvW,eAAgB,EAChBj7B,QAAS,OAIbd,MAAO,CACLiB,YADK,SACQlgV,GACNtE,KAAKyhV,WAENn9U,EAAOtE,KAAKyjV,gBACXzjV,KAAK4jV,gBAIdI,cAzByE,WA0BvEhkV,KAAKyjV,iBAGPvoQ,QAAS,CACPqkS,cADO,WAEL,IAAMl7B,EAAU,IAAI86B,EAAS,CAC3BK,UAAW,CACT9gC,SAAU1+U,KAAK0+U,SACfp6U,OAAO,EACPsoN,MAAO5sN,KAAKo/W,aACZ7pE,QAASv1S,KAAKq/W,kBAIlBh7B,EAAQo7B,SAER,IAAM5gU,EAAS7+C,KAAK0+U,SAChB1+U,KAAK8/U,IAAI/0Q,WACTp1B,SAASmkS,cAAc,cAE3Bj7R,GAAUA,EAAOqvJ,aAAam2I,EAAQvE,IAAKjhS,EAAOgyJ,YAElD7wM,KAAKqkV,QAAUA,GAEjBT,WArBO,WAqBG,WAGR,GAFA5jV,KAAKwjV,cAEDxjV,KAAKwkV,YAgBT,OAdKxkV,KAAKqkV,SAASrkV,KAAKu/W,gBAExBv/W,KAAKs/W,eAAiB5yF,uBAAsB,WACrC,EAAK23D,eAEgBn+S,IAAtB,EAAKo+S,aACP,EAAKD,QAAQt3H,OAASp8M,OAAO,EAAK2zU,aAAe,GACxC,EAAKxE,MACd,EAAKuE,QAAQt3H,QAAS2yJ,EAAAA,EAAAA,IAAU,EAAK5/B,MAGvC,EAAKuE,QAAQ//U,OAAQ,OAGhB,GAGTm/U,cA3CO,WA2CyB,WAAjBE,IAAiB,yDAC1B3jV,KAAKqkV,WACPs7B,EAAAA,EAAAA,IAAqB3/W,KAAKqkV,QAAQvE,IAAK,iBAAiB,WAEnD,EAAKuE,SACL,EAAKA,QAAQvE,KACb,EAAKuE,QAAQvE,IAAI/0Q,aAClB,EAAKs5Q,QAAQ//U,QACb,EAAKm9U,WAGP,EAAK4C,QAAQvE,IAAI/0Q,WAAWC,YAAY,EAAKq5Q,QAAQvE,KACrD,EAAKuE,QAAQu7B,WACb,EAAKv7B,QAAU,SAMjBw7B,qBAAqB7/W,KAAKs/W,gBAE1Bt/W,KAAKqkV,QAAQ//U,OAAQ,GAGvBq/U,GAAc3jV,KAAK2jV,cAErBm8B,eArEO,SAqESp7W,GACd,GAAe,YAAXA,EAAEwoB,KAAoB,CACxB,GACE,CAAC,QAAS,WAAY,UAAU2rD,SAAUn0E,EAAEihB,OAAmBwnL,UAE9DzoM,EAAEihB,OAAuBo6V,kBAC1B,OAEF,IAAMC,EAAK,CAACl7B,EAAAA,GAAAA,GAAaA,EAAAA,GAAAA,QACnBm7B,EAAO,CAACn7B,EAAAA,GAAAA,KAAeA,EAAAA,GAAAA,UAE7B,GAAIk7B,EAAGnnS,SAASn0E,EAAEmgV,SACfngV,EAAUw7W,QAAU,MAChB,KAAID,EAAKpnS,SAASn0E,EAAEmgV,SAGzB,OAFCngV,EAAUw7W,OAAS,IAMpBx7W,EAAEihB,SAAW3lB,KAAKqkV,SACR,YAAX3/U,EAAEwoB,MAAsBxoB,EAAEihB,SAAWgwB,SAAS3wC,MAC/ChF,KAAKmgX,UAAUz7W,KAAIA,EAAEq7D,kBAEzBqgT,aA7FO,SA6FO5rN,GACZ,IAAKA,GAAMA,EAAGkzC,WAAaI,KAAKmzK,aAAc,OAAO,EAErD,IAAMzwS,EAAQrmD,OAAO+oV,iBAAiB14M,GACtC,OAAS,CAAC,OAAQ,UAAU37E,SAASrO,EAAM61S,YAA8B,WAAf7rN,EAAG24C,UAAyB34C,EAAGghM,aAAehhM,EAAGl1F,cACzG,CAAC,OAAQ,UAAUuZ,SAASrO,EAAM81S,YAAgB9rN,EAAGqyM,YAAcryM,EAAGr1F,aAE1EohT,aApGO,SAoGO/rN,EAAa9vJ,GACzB,GAAI8vJ,EAAG0yC,aAAa,YAAa,OAAO,EAExC,IAGIs5K,EACAC,EAJEvzH,EAAMxoP,EAAEg8W,UAAYh8W,EAAEi8W,OAAS,IAAM,IACrCtoM,EAAgB,MAAR60E,EAAcxoP,EAAEw7W,OAASx7W,EAAEi8W,QAAUj8W,EAAEw7W,OAIzC,MAARhzH,GACFszH,EAAkC,IAAjBhsN,EAAGqgM,UACpB4rB,EAAejsN,EAAGqgM,UAAYrgM,EAAGl1F,eAAiBk1F,EAAGghM,eAErDgrB,EAAmC,IAAlBhsN,EAAGqqN,WACpB4B,EAAejsN,EAAGqqN,WAAarqN,EAAGr1F,cAAgBq1F,EAAGqyM,aAGvD,IAAM+Z,EAAcvoM,EAAQ,EACtBwoM,EAAgBxoM,EAAQ,EAE9B,QAAKmoM,IAAkBI,OAClBH,IAAgBI,OAChBL,IAAkBC,IACdzgX,KAAKugX,aAAa/rN,EAAGzpF,WAAuBrmE,KAKvDo8W,SA/HO,SA+HGtsN,EAAa31G,GACrB,OAAI21G,IAAO31G,GAEO,OAAP21G,GAAeA,IAAO7+G,SAAS3wC,MAGjChF,KAAK8gX,SAAStsN,EAAGzpF,WAAuBlsB,IAGnDshU,UAxIO,SAwIIz7W,GACT,IAAM0oF,GAAO2zR,EAAAA,EAAAA,IAAar8W,GAE1B,GAAe,YAAXA,EAAEwoB,MAAsBkgE,EAAK,KAAOz3C,SAAS3wC,KAAM,CACrD,IAAMg8W,EAAShhX,KAAKokV,MAAM48B,OAEpBngB,EAAW18U,OAAO88V,eAAgBC,WACxC,QAAIF,GAAUhhX,KAAKogX,aAAaY,IAAWhhX,KAAK8gX,SAASjgB,EAAUmgB,MACzDhhX,KAAKugX,aAAaS,EAAQt8W,GAKtC,IAAK,IAAI4tC,EAAQ,EAAGA,EAAQ86C,EAAK/rF,OAAQixC,IAAS,CAChD,IAAMkiH,EAAKpnE,EAAK96C,GAEhB,GAAIkiH,IAAO7+G,SAAU,OAAO,EAC5B,GAAI6+G,IAAO7+G,SAASupB,gBAAiB,OAAO,EAC5C,GAAIs1F,IAAOx0J,KAAKokV,MAAM5iV,QAAS,OAAO,EAEtC,GAAIxB,KAAKogX,aAAa5rN,GAAgB,OAAQx0J,KAAKugX,aAAa/rN,EAAe9vJ,GAGjF,OAAO,GAET8+U,WAjKO,WAkKDxjV,KAAKk8U,SAASwrB,WAAWC,UAC3BhyT,SAASupB,gBAAiBimG,UAAUhoI,IAAI,uBAExCgkV,EAAAA,EAAAA,IAAwBh9V,OAAQ,QAASnkB,KAAK8/W,eAAuC,CAAE5T,SAAS,IAChG/nV,OAAOuB,iBAAiB,UAAW1lB,KAAK8/W,kBAG5Cn8B,WAzKO,WA0KLhuS,SAASupB,gBAAiBimG,UAAUhhC,OAAO,qBAC3ChgH,OAAOu/B,oBAAoB,QAAS1jD,KAAK8/W,gBACzC37V,OAAOu/B,oBAAoB,UAAW1jD,KAAK8/W,qB,+ECrO3CsB,EAAiB,CACrB1iC,SAAUpnP,QACVu1H,OAAQv1H,QACRgxF,MAAOhxF,QACP13B,KAAM03B,QACN4Y,MAAO5Y,QACP53B,IAAK43B,SAQD,SAAU0rG,IAA6B,IAApB69J,EAAoB,uDAAF,GACzC,OAAOxa,EAAAA,EAAAA,OAAW,CAChBhzU,KAAM,eACNoiH,MAAOorO,EAASx/V,QAASggX,EAAAA,EAAAA,IAAmBD,EAAgBvgB,GAAYugB,IAI5E,QAAep+K,K,wECjBT,SAAUA,IAEE,IADhBviH,EACgB,uDADT,QACP75D,EAAgB,uDAAR,SAER,OAAOy/T,EAAAA,EAAAA,OAAW,CAChBhzU,KAAM,YAENqgH,MAAO,CACLjzC,KAAAA,EACA75D,MAAAA,GAGF6uG,OAAO,UACJh1C,EAAO,CACN85F,UAAU,IAIdnqK,KAdgB,WAed,MAAO,CACL+9U,kBAAmBnuV,KAAKygF,KAI5BqtK,SAAU,CACRq+F,cAAe,CACbzqV,IADa,WAEX,OAAO1B,KAAKmuV,mBAEdxlU,IAJa,SAIRuW,GACCA,IAAQl/B,KAAKmuV,oBAEjBnuV,KAAKmuV,kBAAoBjvT,EAEzBl/B,KAAKggV,MAAMp5T,EAAOsY,OAKxBqkT,OAAO,UACJ9iQ,GADE,SACKvhD,GACNl/B,KAAKmuV,kBAAoBjvT,OAOjC,IAAM8uT,EAAYhrJ,IAElB,W,sGCtDA,SAASs+K,EAAiBjF,EAAex9T,GACvC,OAAO,kBAAM0rS,EAAAA,EAAAA,IAAY,OAAD,OAAQ8xB,EAAR,4CAAiDx9T,KAUrE,SAAU4wS,EAEb5mL,EAAcwzM,EAAgBx9T,GAC/B,IAAM0iU,EAAclF,GAASx9T,EAAS,CACpCixL,SAAUwxI,EAAgBjF,EAAOx9T,GACjCmwS,WAAYsyB,EAAgBjF,EAAOx9T,IACjC,KAEJ,OAAOwnS,EAAAA,EAAAA,OAAW,CAChBhzU,KAAM,qBAENo8U,QAAQ,UACL5mL,EAAY,CACX0zB,QAASglL,MAMX,SAAUlyB,EAASxmL,GAA+B,IAAZnxF,EAAY,wDACtD,OAAO2uQ,EAAAA,EAAAA,OAAW,CAChBhzU,KAAM,sBAENg8U,QAHgB,WAId,OAAO,UACJxmL,EAAYnxF,EAAO13E,KAAO,CACzB8vO,SAAW9vO,KAAa8vO,SACxBk/G,WAAahvV,KAAagvV,kB,sECvCpC,QAAe3I,EAAAA,EAAAA,OAAW,CACxBhzU,KAAM,aAENoiH,MAAO,CACL+rP,YAAa,MAGfpxW,KAAM,iBAAO,CACXqxU,UAAU,EACVggC,cAAe,OAGjBl+B,MAAO,CACL9B,SADK,SACKviT,GACJA,EACFl/B,KAAKyhX,cAAgBzhX,KAAKwhX,YAE1BxhX,KAAKggV,MAAM,sBAAuBhgV,KAAKyhX,iBAK7CvmS,QAAS,CACP6iP,KADO,SACDz5T,GAAU,WACdtE,KAAKyhX,cAAgBn9W,EACrBokC,YAAW,WACT,EAAK+4S,UAAW,U,gHC1BxB,QAAe4E,EAAAA,EAAAA,OAAW,CACxBhzU,KAAM,YAENoiH,MAAO,CACL8oN,QAAS,CAACjnP,QAAS3mF,QACnB6tU,KAAMlnP,SAGRw2J,SAAU,CACRgvF,eADQ,WAEN,IAAM4kC,EAAY,GACZnjC,EAAkC,kBAAjBv+U,KAAKu+U,QACxB5tU,OAAO3Q,KAAKu+U,UACK,IAAjBv+U,KAAKu+U,QAET,GAAIv+U,KAAKw+U,KACPkjC,EAAU17W,KAAK,kBACV,GAAuB,kBAAZu4U,EAAsB,CACtC,IADsC,EAChCnsS,EAASmsS,EAAQnnU,MAAM,KADS,UAGlBg7B,GAHkB,IAGtC,IAAK,EAAL,qBAA4B,KAAjB9tC,EAAiB,QAC1Bo9W,EAAU17W,KAAV,kBAA0B1B,KAJU,oCAM7Bi6U,GACTmjC,EAAU17W,KAAK,WAGjB,OAAO07W,EAAUrgX,OAAS,GAAnB,UACJqgX,EAAU17V,KAAK,MAAO,GACrB,Q,qJCxBV,QAAeqgU,EAAAA,EAAAA,OAAW,CACxBhzU,KAAM,WAEN0uU,WAAY,CACVkO,OAAAA,EAAAA,GAGFx6N,MAAO,CACLooN,YAAaltU,OACbwsC,OAAQm6C,QACRqnP,SAAUrnP,QACVqqR,MAAO,CACLz0V,KAAMoqE,QACNilG,aAASr2J,GAEX07U,UAAWtqR,QACXuqR,iBAAkBlxW,OAClB83K,KAAMnxF,QACNr4C,KAAM,CAACtuC,OAAQpR,QACfusG,GAAI,CAACn7F,OAAQpR,QACbuiX,KAAMxqR,QACNpmF,QAASomF,QACTioP,OAAQ,CACNryT,KAAM,CAACoqE,QAAS/3F,QAChBg9L,QAAS,MAEXvgC,IAAKrrJ,OACLgV,OAAQhV,QAGVP,KAAM,iBAAO,CACXqxU,UAAU,EACVhD,WAAY,KAGd3wF,SAAU,CACR+uF,QADQ,WAEN,IAAMA,EAAmC,GAEzC,OAAI78U,KAAK8rG,KAEL9rG,KAAK69U,cAAahB,EAAQ78U,KAAK69U,aAAe79U,KAAKyhV,UACnDzhV,KAAKy+U,aAAY5B,EAAQ78U,KAAKy+U,YAAcz+U,KAAKyhV,WAHjC5E,GAOtBuC,eAXQ,WAWM,MACZ,gBAAOp/U,KAAKu/U,QAAZ,GAAwBv/U,KAAK2+U,UAAY3+U,KAAK6gV,aAEhDA,YAdQ,WAeN,OAAI7gV,KAAK2+U,UAEFrnP,QACLt3F,KAAKshV,QACLthV,KAAKm9U,WAAWnuG,OAChBhvO,KAAKm9U,WAAW,WAChBn9U,KAAK2/U,OAAO5yG,WAGhBu0G,OAxBQ,WAyBN,OAAOthV,KAAK8rG,IAAM9rG,KAAKi/C,MAAQj/C,KAAKyoL,MAEtCsiH,OAAQ,iBAAO,KAGjBw4C,MAAO,CACL2N,OAAQ,iBAGVlH,QArEwB,WAsEtBhqV,KAAK0xV,iBAGPx2Q,QAAS,CACPolQ,kBADO,WACU,MAEXtkL,EADA2lN,EAAQ3hX,KAAK2hX,MAGXvxW,GAAI,GACRosU,MAAO,CACLzvG,SAAU,aAAc/sO,KAAK2/U,OAAS3/U,KAAK2/U,OAAO5yG,cAAW7mM,GAE/Dm2S,MAAOr8U,KAAK68U,QACZryQ,MAAOxqE,KAAK+qS,OACZt1K,MAAO,GACPssN,WAAY,CAAC,CACX1uU,KAAM,SACN/O,MAAOtE,KAAKo/U,mBATN,SAWPp/U,KAAK8rG,GAAK,WAAa,MAXhB,kBAYH9rG,KAAKm9U,YACJ,UAAWn9U,KAAO,CAAEgvO,MAAQhvO,KAAagvO,YAAU9oM,KAbjD,eAeH,QAfG,GAuBV,GAL0B,qBAAflmC,KAAK2hX,QACdA,EAAoB,MAAZ3hX,KAAK8rG,IACV9rG,KAAK8rG,KAAOvsG,OAAOS,KAAK8rG,KAAwB,MAAjB9rG,KAAK8rG,GAAG1e,MAGxCptF,KAAK8rG,GAAI,CAGX,IAAI+xO,EAAc79U,KAAK69U,YACnBgkC,EAAmB7hX,KAAK6hX,kBAAoBhkC,EAE5C79U,KAAKy+U,aACPZ,EAAc,UAAGA,EAAH,YAAkB79U,KAAKy+U,YAAa/iU,OAClDmmW,EAAmB,UAAGA,EAAH,YAAuB7hX,KAAKy+U,YAAa/iU,QAG9DsgJ,EAAMh8J,KAAK8hX,KAAO,YAAc,cAChCviX,OAAOwB,OAAOqP,EAAKqlH,MAAO,CACxB3pB,GAAI9rG,KAAK8rG,GACT61Q,MAAAA,EACAC,UAAW5hX,KAAK4hX,UAChB/jC,YAAAA,EACAgkC,iBAAAA,EACA1kU,OAAQn9C,KAAKm9C,OACbjsC,QAASlR,KAAKkR,eAGhB8qJ,GAAOh8J,KAAKi/C,KAAQ,IAAQj/C,KAAKg8J,MAAO,MAE5B,MAARA,GAAeh8J,KAAKi/C,OAAM7uC,EAAKosU,MAAOv9R,KAAOj/C,KAAKi/C,MAKxD,OAFIj/C,KAAK2lB,SAAQvV,EAAKosU,MAAO72T,OAAS3lB,KAAK2lB,QAEpC,CAAEq2I,IAAAA,EAAK5rJ,KAAAA,IAEhBshV,cA3DO,WA2DM,WACX,GAAK1xV,KAAK8rG,IAAO9rG,KAAKokV,MAAM37J,MAASzoL,KAAKkxV,OAA1C,CACA,IAAMrT,EAAc,UAAG79U,KAAK69U,aAAe,GAAvB,YAA6B79U,KAAKy+U,YAAc,IAAK/iU,OACnEmmW,EAAmB,UAAG7hX,KAAK6hX,kBAAoB,GAA5B,YAAkC7hX,KAAKy+U,YAAc,IAAK/iU,QAAUmiU,EAEvFzwP,EAAO,sBAAwBptF,KAAK2hX,MAAQE,EAAmBhkC,GAErE79U,KAAK8jV,WAAU,aAERmc,EAAAA,EAAAA,IAAqB,EAAK7b,MAAM37J,KAAMr7F,KAAU,EAAKq0P,UACxD,EAAK/zK,cAIXA,OAzEO,WA0EL1tK,KAAKyhV,UAAYzhV,KAAKyhV,c,sECzJ5B,QAAe4E,EAAAA,EAAAA,OAAW,CACxBhzU,KAAM,WAENoiH,MAAO,CACL4xN,MAAO/vP,QACP6yF,MAAO7yF,QACPgwP,OAAQhwP,QACR8vP,OAAQ9vP,SAGVw2J,SAAU,CACR84F,OADQ,WAEN,OAAOtvP,SACJt3F,KAAKonV,SACLpnV,KAAKmqL,QACLnqL,KAAKqnV,QACLrnV,KAAKsnV,SAGVrI,gBATQ,WAUN,MAAO,CACL,kBAAmBj/U,KAAKonV,OACxB,gBAAiBpnV,KAAKmqL,MACtB,kBAAmBnqL,KAAK4mV,OACxB,gBAAiB5mV,KAAKqnV,MACtB,kBAAmBrnV,KAAKsnV,a,6DCjBhC,QAAejB,EAAAA,EAAAA,OAAW,CACxBhzU,KAAM,eAENjD,KAAM,iBAAO,CACX2zU,UAAU,IAGZiG,QAPwB,WAOjB,WAIL7lU,OAAOuoQ,uBAAsB,WAC3B,EAAKozD,IAAIl1Q,aAAa,cAAe,QACrC,EAAKm5Q,UAAW,S,wHCZtB,QAAesC,EAAAA,EAAAA,SAAsBl5L,OAAO,CAC1C95I,KAAM,YAENjD,KAH0C,WAIxC,MAAO,CACL2xW,aAAc,KACdC,aAAc,KACdh/B,eAAgB,EAChBvB,UAAU,IAGd3zF,SAAU,CACRw2F,aADQ,WAEN,GAAsB,qBAAXngU,OAAwB,OAAO,EAE1C,IAAM3iB,EAAUxB,KAAK+hX,cAAgB/hX,KAAKokV,MAAM5iV,QAG1C8wC,EAAStyC,KAAKyhV,SAEhBzhV,KAAKukV,aAAavkV,KAAKgiX,cAAgB,CAACxgX,IAAY,GADpDk+W,EAAAA,EAAAA,IAAUl+W,GAGd,OAAa,MAAT8wC,EAAsBA,EAInB2S,SAAS3S,KAGpB4oC,QAAS,CACPqpQ,aADO,WAeL,IAdmC,IAAvB09B,EAAuB,uDAAF,GAC3BhrM,EAAOj3K,KAAK8/U,IAGZoiC,EAAM,CAACliX,KAAKgjV,gBAAgB08B,EAAAA,EAAAA,IAAUzoM,IAItCkrM,EAAiB,GAAH,eACfxsU,SAASk3O,uBAAuB,6BADjB,OAEfl3O,SAASk3O,uBAAuB,+BAI5Bv6O,EAAQ,EAAGA,EAAQ6vU,EAAe9gX,OAAQixC,IAC5C2vU,EAAQppS,SAASspS,EAAe7vU,KACnC4vU,EAAIl8W,MAAK05W,EAAAA,EAAAA,IAAUyC,EAAe7vU,KAItC,OAAOrjC,KAAK4wD,IAAL,MAAA5wD,KAAYizW,Q,+ECnDnBpmC,EAAYuK,EAAAA,EAAAA,SAAsBl5L,OAAO,CAC7C95I,KAAM,YAENg8U,QAH6C,WAI3C,MAAO,CACLtrH,MAAO/jO,KAAKoiX,mBAIhB3yB,OAAQ,CACN1rH,MAAO,CACLxnC,QAAS,CACP0/I,QAAQ,KAKdxmN,MAAO,CACLsmN,KAAM,CACJ7uT,KAAMoqE,QACNilG,QAAS,MAEXy/I,MAAO,CACL9uT,KAAMoqE,QACNilG,QAAS,OAIbnsL,KA5B6C,WA6B3C,MAAO,CACLgyW,iBAAkB,CAChBnmC,QAAQ,KAKdnuF,SAAU,CACRu0H,UADQ,WAEN,OAAOriX,KAAKk8U,SAASn4G,MAAMg4G,OAAQ,GAErCE,OAJQ,WAKN,OAAkB,IAAdj8U,KAAK+7U,OAGiB,IAAf/7U,KAAKg8U,OAKPh8U,KAAK+jO,MAAMk4G,QAGtBM,aAhBQ,WAiBN,MAAO,CACL,cAAev8U,KAAKi8U,OACpB,gBAAiBj8U,KAAKi8U,SAI1BgrB,WAvBQ,WAwBN,OAAkB,IAAdjnW,KAAK+7U,OAGiB,IAAf/7U,KAAKg8U,OAKPh8U,KAAKqiX,WAGhB/rB,iBAnCQ,WAoCN,MAAO,CACL,cAAet2V,KAAKinW,WACpB,gBAAiBjnW,KAAKinW,cAK5B1jB,MAAO,CACLtH,OAAQ,CACNv/N,QADM,SACG6+P,EAAQC,GACXD,IAAWC,IACbx7W,KAAKoiX,iBAAiBnmC,OAASj8U,KAAKi8U,SAGxCyiB,WAAW,MAKjB,UAEM,SAAUnP,EAAwBl5O,GACtC,IAAM0kQ,GAAK,kBACN1kQ,EAAQof,OACRpf,EAAQisQ,YAEPrmC,EAASH,EAAUl6U,QAAQksP,SAASmuF,OAAOt7U,KAAKo6W,GACtD,OAAOj/B,EAAUl6U,QAAQksP,SAASyuF,aAAa57U,KAAK,CAAEs7U,OAAAA,M,+ECxGlD,SAAUj5I,IAAwC,MAA/BviH,EAA+B,uDAAxB,QAAS75D,EAAe,uDAAP,QAC/C,OAAOy/T,EAAAA,EAAAA,OAAW,CAChBhzU,KAAM,aAENqgH,MAAO,CAAEjzC,KAAAA,EAAM75D,MAAAA,GAEf6uG,OAAO,UACJh1C,EAAO,CAAE85F,UAAU,IAGtBnqK,KATgB,WAUd,MAAO,CACLqxU,WAAYzhV,KAAKygF,KAIrB8iQ,OAAK,eACF9iQ,GADE,SACKvhD,GACNl/B,KAAKyhV,WAAaviT,MAFjB,8BAIOA,KACNA,IAAQl/B,KAAKygF,IAASzgF,KAAKggV,MAAMp5T,EAAOsY,MALzC,KAYT,IAAM6xT,EAAa/tJ,IAEnB,W,kKCrBMs6I,GAAazB,EAAAA,EAAAA,GACjBa,EAAAA,GACAoU,EAAAA,EAAAA,GAA+B,QAC/BhV,EAAAA,GAIF,QAAewB,EAAWnwL,OAAO,CAC/B95I,KAAM,cAENoiH,MAAO,CACLkpN,SAAUrnP,QACVhxF,MAAOgxF,QACP58B,WAAY,CACVxtC,KAAM,CAACkb,OAAQz3B,QACf4rL,QAAS,GAEXgmL,cAAe,CACbr1V,KAAM,CAACvc,OAAQjR,OACf68L,QAAS,iBAAM,KAEjBimL,SAAU,CACRt1V,KAAM,CAACvc,OAAQjR,OACf68L,QAAS,iBAAM,KAEjByjK,SAAU1oQ,QACVmrR,MAAO,CACLv1V,KAAMxtB,MACN68L,QAAS,iBAAM,KAEjBxwK,QAASurE,QACTorR,gBAAiB,CACfx1V,KAAM,CAACvc,OAAQjR,OACf68L,QAAS,iBAAM,KAEjBomL,eAAgBrrR,QAChBhzF,MAAO,CAAEi2K,UAAU,IAGrBnqK,KAhC+B,WAiC7B,MAAO,CACLwyW,YAAa,GACb5b,UAAU,EACV6b,YAAY,EACZC,UAAU,EACVp3B,WAAW,EACXq3B,aAAa,EACb91H,UAAWjtP,KAAKsE,MAChB0+W,OAAO,IAIXl1H,SAAU,CACRuxG,cADQ,WAEN,IAAIr/V,KAAKw2I,WACT,OAAIx2I,KAAK4sN,MAAc5sN,KAAK4sN,MAMxB5sN,KAAKi8U,SAAWj8U,KAAKqiX,UAAkB,QAC/B,WAEd94B,SAZQ,WAaN,OACEvpV,KAAKijX,sBAAsB5hX,OAAS,GACpCrB,KAAK4iX,YAAYvhX,OAAS,GAC1BrB,KAAKsG,OAKT48W,WArBQ,WAsBN,OACEljX,KAAKmjX,wBAAwB9hX,OAAS,GACtCrB,KAAK+rB,SAGTq3V,cA3BQ,WA4BN,OAAOpjX,KAAKijX,sBAAsB5hX,OAAS,GAAKrB,KAAKsG,OAEvD2lV,YA9BQ,WA+BN,OAAOjsV,KAAKqjX,iBAAiBhiX,OAAS,GAExCiqV,SAjCQ,WAkCN,OAAItrV,KAAKw2I,aAGPx2I,KAAKkjX,YACJljX,KAAKsjX,gBAAkBtjX,KAAKupV,WAGjC05B,sBAzCQ,WA0CN,OAAOjjX,KAAKujX,oBAAoBvjX,KAAKuiX,gBAEvCiB,iBA5CQ,WA6CN,OAAOxjX,KAAKujX,oBAAoBvjX,KAAKwiX,WAEvCW,wBA/CQ,WAgDN,OAAOnjX,KAAKujX,oBAAoBvjX,KAAK0iX,kBAEvCv2B,cAAe,CACbzqV,IADa,WAEX,OAAO1B,KAAKitP,WAEdtkO,IAJa,SAIRuW,GACHl/B,KAAKitP,UAAY/tN,EAEjBl/B,KAAKggV,MAAM,QAAS9gT,KAGxBs3G,WA5DQ,WA6DN,OAAOx2I,KAAK2+U,YACR3+U,KAAKyjX,MACPzjX,KAAKyjX,KAAK9kC,UAGdkgB,cAlEQ,WAmEN,OAAQ7+V,KAAKw2I,aAAex2I,KAAK2rV,YAEnCA,WArEQ,WAsEN,OAAO3rV,KAAKggW,YACRhgW,KAAKyjX,MACPzjX,KAAKyjX,KAAKzjB,UAGdsjB,eA3EQ,WA4EN,QAAItjX,KAAKojX,gBACLpjX,KAAK+iX,cAEF/iX,KAAK2iX,eACR3iX,KAAK6iX,aAAe7iX,KAAK0rV,UACxB1rV,KAAK8iX,UAAY9iX,KAAK6iX,aAE7Bx2B,YAnFQ,WAoFN,OAAOrsV,KAAKqjX,iBAAiB92U,MAAM,EAAGnE,OAAOpoC,KAAK06D,cAEpDwyR,gBAtFQ,WAuFN,IAAIltV,KAAKw2I,WACT,OAAIx2I,KAAKupV,UAAYvpV,KAAKsjX,eAAuB,QAC7CtjX,KAAKkjX,WAAmB,UACxBljX,KAAKgnW,SAAiBhnW,KAAKq/V,mBAA/B,GAGFgkB,iBA7FQ,WA8FN,OAAIrjX,KAAKijX,sBAAsB5hX,OAAS,EAC/BrB,KAAKijX,sBACHjjX,KAAK0iX,iBAAmB1iX,KAAK0iX,gBAAgBrhX,OAAS,EACxDrB,KAAKmjX,wBACHnjX,KAAKwiX,UAAYxiX,KAAKwiX,SAASnhX,OAAS,EAC1CrB,KAAKwjX,iBACHxjX,KAAKsjX,eACPtjX,KAAK4iX,YACA,KAIlBr/B,MAAO,CACLk/B,MAAO,CACL/lQ,QADK,SACI6+P,EAAQC,IACX9iS,EAAAA,EAAAA,IAAU6iS,EAAQC,IACtBx7W,KAAK0jX,YAEPv/Q,MAAM,GAERgoP,cARK,WAWHnsV,KAAK8iX,UAAW,EAChB9iX,KAAK2iX,gBAAkB3iX,KAAK8jV,UAAU9jV,KAAK0jX,WAE7Ch4B,UAdK,SAcMxsT,GAINA,GACAl/B,KAAKw2I,aAENx2I,KAAK6iX,YAAa,EAClB7iX,KAAK2iX,gBAAkB3iX,KAAK8jV,UAAU9jV,KAAK0jX,YAG/CX,YAzBK,WAyBM,WACTr6U,YAAW,WACT,EAAKo6U,UAAW,EAChB,EAAKD,YAAa,EAClB,EAAKE,aAAc,EACnB,EAAKW,aACJ,IAELn6B,SAjCK,SAiCKrqT,GACJl/B,KAAKsjX,gBACPtjX,KAAKggV,MAAM,eAAgB9gT,IAG/B56B,MAtCK,SAsCE46B,GACLl/B,KAAKitP,UAAY/tN,IAIrB2kT,YAlM+B,WAmM7B7jV,KAAK0jX,YAGPjkC,QAtM+B,WAuM7Bz/U,KAAKyjX,MAAQzjX,KAAKyjX,KAAK3zI,SAAS9vO,OAGlCgkV,cA1M+B,WA2M7BhkV,KAAKyjX,MAAQzjX,KAAKyjX,KAAKz0B,WAAWhvV,OAGpCk7E,QAAS,CACPqoS,oBADO,SACcf,GACnB,OAAKA,EACI9iX,MAAM21E,QAAQmtS,GAAkBA,EAC7B,CAACA,GAFS,IAKxBzjS,MAPO,WAQL/+E,KAAK+iX,aAAc,EACnB/iX,KAAKmsV,cAAgBzsV,MAAM21E,QAAQr1E,KAAKmsV,eACpC,GACA,MAGNw3B,gBAdO,WAeL3jX,KAAK+iX,aAAc,GAGrBW,SAlBO,WAkB6B,IAA1BlrC,EAA0B,wDAAXl0U,EAAW,uCAC5Bs+W,EAAc,GACpBt+W,EAAQA,GAAStE,KAAKmsV,cAElB3T,IAAOx4U,KAAK8iX,SAAW9iX,KAAK6iX,YAAa,GAE7C,IAAK,IAAIvwU,EAAQ,EAAGA,EAAQtyC,KAAKyiX,MAAMphX,OAAQixC,IAAS,CACtD,IAAMsxU,EAAO5jX,KAAKyiX,MAAMnwU,GAClB0wU,EAAwB,oBAATY,EAAsBA,EAAKt/W,GAASs/W,GAE3C,IAAVZ,GAAoC,kBAAVA,EAC5BJ,EAAY58W,KAAKg9W,GAAS,IACA,mBAAVA,IAChB/kB,EAAAA,EAAAA,IAAa,sDAAD,eAA8D+kB,GAA9D,aAAgFhjX,MAOhG,OAHAA,KAAK4iX,YAAcA,EACnB5iX,KAAKgjX,MAA+B,IAAvBJ,EAAYvhX,OAElBrB,KAAKgjX,W,8aCtQL/2C,EAAU,SAAAjrU,GAAD,OAAeA,GAExB6iX,EAAc,SAAA7iX,GAAD,gBAAeA,EAAK,IAEjC8iX,EAAe,SAAA9iX,GAAD,OAAeA,GAAK,EAAIA,IAEtC+iX,EAAiB,SAAA/iX,GAAD,OAAgBA,EAAI,GAAM,EAAI,KAAJ,IAAIA,EAAK,IAAU,EAAI,EAAIA,GAAKA,EAAlB,GAExDgjX,EAAe,SAAAhjX,GAAD,gBAAeA,EAAK,IAElCijX,EAAgB,SAAAjjX,GAAD,OAAe,WAAEA,EAAK,GAAI,GAEzCkjX,EAAkB,SAAAljX,GAAD,OAAeA,EAAI,GAAM,EAAI,KAAJ,IAAIA,EAAK,IAAKA,EAAI,IAAM,EAAIA,EAAI,IAAM,EAAIA,EAAI,GAAK,GAE7FmjX,EAAe,SAAAnjX,GAAD,gBAAeA,EAAK,IAElCojX,EAAgB,SAAApjX,GAAD,OAAe,EAAI,KAAJ,MAAMA,EAAK,IAEzCqjX,EAAkB,SAAArjX,GAAD,OAAgBA,EAAI,GAAM,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,IAAMA,EAAIA,EAAIA,EAAIA,GAErFsjX,EAAe,SAAAtjX,GAAD,gBAAeA,EAAK,IAElCujX,EAAgB,SAAAvjX,GAAD,OAAe,EAAI,KAAJ,MAAMA,EAAK,IAEzCwjX,EAAkB,SAAAxjX,GAAD,OAAeA,EAAI,GAAM,GAAK,KAAL,IAAKA,EAAK,GAAI,EAAI,GAAK,KAAL,MAAOA,EAAK,I,SCxB/E,SAAUyjX,EAAW9+V,GACzB,GAAsB,kBAAXA,EACT,OAAOA,EAGT,IAAI6uI,EAAK2J,EAAEx4I,GACX,IAAK6uI,EACH,KAAwB,kBAAX7uI,EACT,IAAI/kB,MAAJ,0BAA6B+kB,EAA7B,iBACA,IAAI7f,UAAJ,8EAAqFonB,EAAKvH,GAA1F,cAGN,IAAI++V,EAAc,EAClB,MAAOlwN,EACLkwN,GAAelwN,EAAGugM,UAClBvgM,EAAKA,EAAGmqN,aAGV,OAAO+F,EAGH,SAAUC,EAAcjyO,GAC5B,IAAM8hB,EAAK2J,EAAEzrB,GAEb,GAAI8hB,EAAI,OAAOA,EAEf,KAA2B,kBAAd9hB,EACT,IAAI9xI,MAAJ,6BAAgC8xI,EAAhC,iBACA,IAAI5sI,UAAJ,0EAAiFonB,EAAKwlH,GAAtF,cAGN,SAASxlH,EAAMsnI,GACb,OAAa,MAANA,EAAaA,EAAKA,EAAGv0J,YAAYoT,KAG1C,SAAS8qJ,EAAG3J,GACV,MAAkB,kBAAPA,EACF7+G,SAASmkS,cAA2BtlL,GAClCA,GAAMA,EAAGowN,OACVpwN,EAAWsrL,IACVtrL,aAAcqwN,YAChBrwN,EAEA,KC/BG,SAAUwgM,EACtB8vB,GAC2B,IAA3BC,EAA2B,uDAAF,GAEnBn8J,GAAQ,QACZl2E,UAAY/8F,SAASqvU,kBAA2CrvU,SAAS3wC,MAAQ2wC,SAASupB,gBAC1FoP,SAAU,IACVpmC,OAAQ,EACR2wS,OAAQ,iBACRoc,WAAW,GACR8vB,GAECryO,EAAYiyO,EAAa/7J,EAASl2E,WAGxC,GAAIk2E,EAASqsI,WAAaD,EAAKzpI,UAAUtwK,YAAa,CACpD,IAAMgqU,EAAWvyO,EAAUyyB,UAAUm6D,SAAS,uBACxC4lJ,EAAYxyO,EAAUyyB,UAAUm6D,SAAS,gCAC/C,EAAqB01H,EAAKzpI,UAAUtwK,YAA5B4+R,EAAR,EAAQA,IAAKn6Q,EAAb,EAAaA,IAEbkpJ,EAAS1gL,QAAU2xS,EAEdorC,IAAYC,IAAWt8J,EAAS1gL,QAAUw3B,GAGjD,IAEIylT,EAFE7hQ,EAAYt5C,YAAYt5C,MAI5By0V,EADqB,kBAAZL,EACQL,EAAUK,GAAWl8J,EAAS1gL,OAE9Bu8U,EAAUK,GAAWL,EAAU/xO,GAAak2E,EAAS1gL,OAGxE,IAAMk9U,EAAgB1yO,EAAUmiN,UAChC,GAAIswB,IAAmBC,EAAe,OAAOhjX,QAAQC,QAAQ8iX,GAE7D,IAAM71C,EAAkC,oBAApB1mH,EAASiwH,OACzBjwH,EAASiwH,OACTwsC,EAAez8J,EAASiwH,QAE5B,IAAKvJ,EAAM,MAAM,IAAIxpU,UAAJ,2BAAkC8iN,EAASiwH,OAA3C,iBAIjB,OAAO,IAAIz2U,SAAQ,SAAAC,GAAO,OAAIqqR,uBAAsB,SAASloR,EAAM0kC,GACjE,IAAMo8U,EAAcp8U,EAAco6E,EAC5Bs2N,EAAW3qU,KAAKgyF,IAAI2nH,EAASt6I,SAAWr/D,KAAKs2C,IAAI+/T,EAAc18J,EAASt6I,SAAU,GAAK,GAE7FokE,EAAUmiN,UAAY5lV,KAAKq2C,MAAM8/T,GAAiBD,EAAiBC,GAAiB91C,EAAKsK,IAEzF,IAAMt6Q,EAAeozE,IAAc/8F,SAAS3wC,KAAO2wC,SAASupB,gBAAgBI,aAAeozE,EAAUpzE,aAC/FimT,EAAcjmT,EAAeozE,EAAUmiN,WAAaniN,EAAU8iN,aACpE,GACe,IAAb5b,GAECurC,EAAiBzyO,EAAUmiN,WAAa0wB,EAEzC,OAAOljX,EAAQ8iX,GAGjBz4F,sBAAsBloR,SAI1BwwV,EAAKzpI,UAAY,GACjBypI,EAAKz3N,KAAO,aAEL,IAAMioP,EAAb,0CAGE,mBAGE,OAHF,eACE,gBAEO,SAAAxwB,GANX,kBAA0Bke,EAAAA,GACVsS,EAAAA,SAAmB,Q,wEC9EtBtS,EAAb,wCACE,KAAA3nJ,UAAY,GADd,mCAGE,SAAM9jB,EAAW99C,QAHnB,M,6RCeM,SAAUmyN,EAAYlvJ,GAC1B,QAASA,KAAWA,EAAMn9K,MAAM,8BAG5B,SAAU+nU,EAAY5qJ,GAC1B,IAAI+pJ,EAEJ,GAAqB,kBAAV/pJ,EACT+pJ,EAAM/pJ,MACD,IAAqB,kBAAVA,EAUhB,MAAM,IAAI9mN,UAAJ,0DAA0E,MAAT8mN,EAAgBA,EAAQA,EAAM3sN,YAAYoT,KAA3G,aATN,IAAI4gE,EAAiB,MAAb24I,EAAM,GAAaA,EAAMh7M,UAAU,GAAKg7M,EAC/B,IAAb34I,EAAE5yE,SACJ4yE,EAAIA,EAAE78D,MAAM,IAAI2E,KAAI,YAAI,OAAIo4N,EAAOA,KAAMnuN,KAAK,KAE/B,IAAbiuD,EAAE5yE,SACJkpV,EAAAA,EAAAA,IAAY,IAAD,OAAK39H,EAAL,+BAEb+pJ,EAAM1xT,SAASgvB,EAAG,IAapB,OARI0iS,EAAM,IACRpsB,EAAAA,EAAAA,IAAY,+BAAD,OAAgC39H,EAAhC,MACX+pJ,EAAM,IACGA,EAAM,UAAY95R,MAAM85R,OACjCpsB,EAAAA,EAAAA,IAAY,IAAD,OAAK39H,EAAL,+BACX+pJ,EAAM,UAGDA,EAyBH,SAAUc,EAAU7qJ,GACxB,IAAI64J,EAAmB74J,EAAMr+M,SAAS,IAItC,OAFIk3W,EAASpkX,OAAS,IAAGokX,EAAW,IAAIlkM,OAAO,EAAIkkM,EAASpkX,QAAUokX,GAE/D,IAAMA,EAGT,SAAUnO,EAAY1qJ,GAC1B,OAAO6qJ,EAASD,EAAW5qJ,M,oMClF7B,SAAS84J,EAAet5V,EAAiB2uV,EAAUl8T,GACjD,IAAIw7T,EAAAA,EAAAA,OAAAA,OAAJ,CAUA,GARIx7T,IACFk8T,EAAK,CACH6J,QAAQ,EACRe,QAAS9mU,EACTmrG,SAAU+wN,IAIVA,EAAI,CAGN,GADAA,EAAG6K,gBAAkB7K,EAAG6K,iBAAmB,GACvC7K,EAAG6K,gBAAgB/sS,SAASzsD,GAAU,OAC1C2uV,EAAG6K,gBAAgB5/W,KAAKomB,GAG1B,MAAO,oBAAaA,IAClB2uV,EAAK8K,EAAuB9K,GAAM,KAShC,SAAUxwB,EAAan+T,EAAiB2uV,EAAUl8T,GACtD,IAAMinU,EAAaJ,EAAct5V,EAAS2uV,EAAIl8T,GAChC,MAAdinU,GAAsBnvS,QAAQu+E,KAAK4wN,GAG/B,SAAU7nB,EAAc7xU,EAAiB2uV,EAAUl8T,GACvD,IAAMinU,EAAaJ,EAAct5V,EAAS2uV,EAAIl8T,GAChC,MAAdinU,GAAsBnvS,QAAQrwE,MAAMw/W,GAGhC,SAAUxiB,EAAW77L,EAAkB6B,EAAqByxM,EAAUl8T,GAC1E0rS,EAAY,cAAD,OAAe9iL,EAAf,iCAAgD6B,EAAhD,cAAyEyxM,EAAIl8T,GAEpF,SAAU+gS,EAAUn4K,EAAkB6B,EAAqByxM,EAAUl8T,GACzEo/S,EAAa,eAAD,OAAgBx2L,EAAhB,oCAAoD6B,EAApD,8IAA6MyxM,EAAIl8T,GAEzN,SAAUsoF,EAASsgC,EAAkBszM,EAAUl8T,GACnD0rS,EAAY,cAAD,OAAe9iL,EAAf,+CAAsEszM,EAAIl8T,GAOvF,IAAMknU,EAAa,kBACbC,EAAY,SAAArrW,GAAD,OAAiBA,EAC/BzJ,QAAQ60W,GAAY,SAAA9xS,GAAC,OAAIA,EAAEjlB,iBAC3B99C,QAAQ,QAAS,KAEpB,SAAS+0W,EAAqBlL,EAASmL,GACrC,GAAInL,EAAGhxN,QAAUgxN,EACf,MAAO,SAET,IAAMn5W,EAAwB,oBAAPm5W,GAA+B,MAAVA,EAAGoL,IAC3CpL,EAAGn5W,QACHm5W,EAAG6J,OACD7J,EAAG/wN,UAAY+wN,EAAG96W,YAAY2B,QAC9Bm5W,GAAM,GACR1nW,EAAOzR,EAAQyR,MAAQzR,EAAQwkX,cAC7BnzL,EAAOrxL,EAAQykX,OACrB,IAAKhzW,GAAQ4/K,EAAM,CACjB,IAAMxjJ,EAAQwjJ,EAAKxjJ,MAAM,mBACzBp8B,EAAOo8B,GAASA,EAAM,GAGxB,OACGp8B,EAAO,IAAH,OAAO2yW,EAAS3yW,GAAhB,qBACJ4/K,IAAwB,IAAhBizL,EAAR,cAAuCjzL,GAAS,IAIrD,SAAS4yL,EAAwB9K,GAC/B,GAAIA,EAAG6J,QAAU7J,EAAG4K,QAAS,CAC3B,IAAMW,EAAc,GAChBC,EAA2B,EAC/B,MAAOxL,EAAI,CACT,GAAIuL,EAAKjlX,OAAS,EAAG,CACnB,IAAMm8J,EAAY8oN,EAAKA,EAAKjlX,OAAS,GACrC,GAAIm8J,EAAKv9J,cAAgB86W,EAAG96W,YAAa,CACvCsmX,IACAxL,EAAKA,EAAG4K,QACR,SACSY,EAA2B,IACpCD,EAAKA,EAAKjlX,OAAS,GAAK,CAACm8J,EAAM+oN,GAC/BA,EAA2B,GAG/BD,EAAKtgX,KAAK+0W,GACVA,EAAKA,EAAG4K,QAEV,MAAO,mBAAqBW,EACzBvqW,KAAI,SAACg/V,EAAI75W,GAAL,gBACG,IAANA,EAAU,WAAU,IAAIqgL,OAAO,EAAQ,EAAJrgL,IADhC,OAGHxB,MAAM21E,QAAQ0lS,GAAd,UACOkL,EAAoBlL,EAAG,IAD9B,gBACyCA,EAAG,GAD5C,qBAEIkL,EAAoBlL,OAEzB/0V,KAAK,MAER,MAAO,iBAAP,OAAwBigW,EAAoBlL,GAA5C,O,6BC1GE,SAAUpU,EAAch5L,GAE5B,GAAgC,oBAArBA,EAAK64M,YAA4B,CAE1C,MAAO74M,EAAK5iG,WAAY4iG,EAAOA,EAAK5iG,WAGpC,OAAI4iG,IAASh4H,SAAiB,KAEvBA,SAGT,IAAM8xJ,EAAO95B,EAAK64M,cAGlB,OAAI/+K,IAAS9xJ,UAAY8xJ,EAAK++K,YAAY,CAAEC,UAAU,MAAY9wU,SAAiB,KAE5E8xJ,E,ulBCjBH,SAAU0+I,EACdlyQ,GAEa,IADbugF,EACa,uDADR,MACLnhJ,EAAa,uCAEb,OAAOgzU,EAAAA,EAAAA,OAAW,CAChBhzU,KAAMA,GAAQ4gE,EAAE/iE,QAAQ,MAAO,KAE/Bs4I,YAAY,EAEZ/zB,MAAO,CACLumC,IAAK,CACH9uI,KAAMvc,OACN4rL,QAAS/nC,IAIbxL,OAZgB,SAYRxtC,EAZQ,GAYoB,IAAvBprG,EAAuB,EAAvBA,KAAMqlH,EAAiB,EAAjBA,MAAOlhB,EAAU,EAAVA,SAGxB,OAFAnkG,EAAK+rU,YAAe,UAAGloQ,EAAH,YAAQ7jE,EAAK+rU,aAAe,IAAMzgU,OAE/C8/F,EAAEia,EAAMumC,IAAK5rJ,EAAMmkG,MAe1B,SAAUorQ,EACdnrN,EACA14E,EACAg8B,GACkD,IAAlDl2G,EAAkD,wDAE5CgqQ,EAAQ,SAARA,EAAQhlP,GACZkxF,EAAGlxF,GACH4tI,EAAG9wG,oBAAoBo4B,EAAW8vL,EAAMhqQ,IAG1C4yJ,EAAG9uI,iBAAiBo2D,EAAW8vL,EAAMhqQ,GAGvC,IAAI8kX,GAAmB,EACvB,IACE,GAAsB,qBAAXviW,OAAwB,CACjC,IAAMwiW,EAAmBpnX,OAAO6uC,eAAe,GAAI,UAAW,CAC5D1sC,IAAK,WACHglX,GAAmB,KAIvBviW,OAAOuB,iBAAiB,eAAgBihW,EAAkBA,GAC1DxiW,OAAOu/B,oBAAoB,eAAgBijU,EAAkBA,IAE/D,MAAOjiX,GAAKiyE,QAAQu+E,KAAKxwJ,GAGrB,SAAUy8W,EACd3sN,EACA5tI,EACAkxF,EACAl2G,GAEA4yJ,EAAG9uI,iBAAiBkB,EAAOkxF,IAAI4uQ,GAAmB9kX,GAG9C,SAAUw4W,EAAgBt/V,EAAUsyE,EAA2BwoR,GACnE,IAAMp4M,EAAOpwE,EAAK/rF,OAAS,EAE3B,GAAIm8J,EAAO,EAAG,YAAet3H,IAARprB,EAAoB86V,EAAW96V,EAEpD,IAAK,IAAI5Z,EAAI,EAAGA,EAAIs8J,EAAMt8J,IAAK,CAC7B,GAAW,MAAP4Z,EACF,OAAO86V,EAET96V,EAAMA,EAAIsyE,EAAKlsF,IAGjB,OAAW,MAAP4Z,QAEuBorB,IAApBprB,EAAIsyE,EAAKowE,IAFQo4M,EAE0B96V,EAAIsyE,EAAKowE,IAGvD,SAAU9kF,EAAW9xE,EAAQhH,GACjC,GAAIgH,IAAMhH,EAAG,OAAO,EAEpB,GACEgH,aAAa4nB,MACb5uB,aAAa4uB,MACb5nB,EAAEmhC,YAAcnoC,EAAEmoC,UAGlB,OAAO,EAGT,GAAInhC,IAAMrH,OAAOqH,IAAMhH,IAAML,OAAOK,GAElC,OAAO,EAGT,IAAM61H,EAAQl2H,OAAOsD,KAAK+D,GAE1B,OAAI6uH,EAAMp0H,SAAW9B,OAAOsD,KAAKjD,GAAGyB,QAK7Bo0H,EAAM13F,OAAM,SAAAl+B,GAAC,OAAI64E,EAAU9xE,EAAE/G,GAAID,EAAEC,OAGtC,SAAUogW,EAAsBnlV,EAAUsyE,EAAcwoR,GAE5D,OAAW,MAAP96V,GAAgBsyE,GAAwB,kBAATA,OACjBlnD,IAAdprB,EAAIsyE,GAA4BtyE,EAAIsyE,IACxCA,EAAOA,EAAKl8E,QAAQ,aAAc,OAClCk8E,EAAOA,EAAKl8E,QAAQ,MAAO,IACpBkpW,EAAet/V,EAAKsyE,EAAKh2E,MAAM,KAAMw+V,IAJiBA,EAOzD,SAAU/Z,EACdzyU,EACA4tE,EACA4+Q,GAEA,GAAgB,MAAZ5+Q,EAAkB,YAAgB9wD,IAAT9c,EAAqBwsV,EAAWxsV,EAE7D,GAAIA,IAAS7pB,OAAO6pB,GAAO,YAAoB8c,IAAb0vU,EAAyBxsV,EAAOwsV,EAElE,GAAwB,kBAAb5+Q,EAAuB,OAAOipQ,EAAqB72U,EAAM4tE,EAAU4+Q,GAE9E,GAAIl2W,MAAM21E,QAAQ2hB,GAAW,OAAOojR,EAAehxV,EAAM4tE,EAAU4+Q,GAEnE,GAAwB,oBAAb5+Q,EAAyB,OAAO4+Q,EAE3C,IAAMtxW,EAAQ0yF,EAAS5tE,EAAMwsV,GAE7B,MAAwB,qBAAVtxW,EAAwBsxW,EAAWtxW,EAG7C,SAAUi9P,EAAalgQ,GAC3B,OAAO3B,MAAMshG,KAAK,CAAE3/F,OAAAA,IAAU,SAACuE,EAAGe,GAAJ,OAAUA,KAGpC,SAAU+4W,EAAWlrN,GACzB,IAAKA,GAAMA,EAAGkzC,WAAaI,KAAKmzK,aAAc,OAAO,EAErD,IAAM3oU,GAASnuB,OAAO+oV,iBAAiB14M,GAAIoyN,iBAAiB,WAE5D,OAAKt0U,GAAcotU,EAAUlrN,EAAGzpF,YAIlC,IAAM87S,EAAgB,CACpB,IAAK,QACL,IAAK,OACL,IAAK,QAGD,SAAU3rB,EAAYvgV,GAC1B,OAAOA,EAAIzJ,QAAQ,UAAU,SAAA8qJ,GAAG,OAAI6qN,EAAc7qN,IAAQA,KAGtD,SAAUqlN,EAA0CvmW,EAAQjY,GAGhE,IAFA,IAAMikX,EAAW,GAER5lX,EAAI,EAAGA,EAAI2B,EAAKxB,OAAQH,IAAK,CACpC,IAAM0a,EAAM/Y,EAAK3B,GACO,qBAAb4Z,EAAIc,KACbkrW,EAASlrW,GAAOd,EAAIc,IAIxB,OAAOkrW,EAGH,SAAU/pC,EAAepiU,GAAoD,IAAXosW,EAAW,uDAAJ,KAC7E,OAAW,MAAPpsW,GAAuB,KAARA,OACjB,EACSkiE,OAAOliE,GACThK,OAAOgK,GAEP,GAAP,OAAUytB,OAAOztB,IAAjB,OAAwBosW,GAItB,SAAUj3G,EAAWn1P,GACzB,OAAQA,GAAO,IAAIzJ,QAAQ,kBAAmB,SAASsjB,cAGnD,SAAUwkD,EAAUl+D,GACxB,OAAe,OAARA,GAA+B,YAAf,OAAOA,GAIzB,IAAMgqU,EAAWvlV,OAAO4iL,OAAO,CACpC7T,MAAO,GACP04M,IAAK,EACLhlX,OAAQ,GACRilX,IAAK,GACL1mM,MAAO,GACPy/L,GAAI,GACJC,KAAM,GACNrgT,KAAM,GACNswC,MAAO,GACP9oB,IAAK,GACL8/R,KAAM,GACNx4R,IAAK,GACLy4R,UAAW,EACXC,OAAQ,GACRC,OAAQ,GACRC,SAAU,GACVtpU,MAAO,KAOH,SAAUipS,EAAmB8zB,EAAS/zB,GAE1C,IAAMx0C,EAAYuoE,EAAG7+B,SAAS61B,MAAMv/D,UAGpC,GAAIw0C,EAAShsU,WAAW,KAAM,CAE5B,IAAMusW,EAAW,yBAAH,OAA4BvgC,EAAS5vU,MAAM,KAAKrR,MAAOqR,MAAM,KAAKrR,OAI1EyhX,EAAWvnB,EAAqB8a,EAAIwM,EAAUvgC,GAEpD,GAAwB,kBAAbwgC,EACN,OAAOA,EADsBxgC,EAAWwgC,EAI/C,OAAiB,MAAbh1E,EACKw0C,EAGF,CACLx0C,UAAAA,EACA/8K,MAAO,CACLyoN,KAAM8I,IAKN,SAAUnkV,EAASqD,GACvB,OAAO3G,OAAOsD,KAAKqD,GAMrB,IAAMuhX,EAAa,SACNC,EAAY,SAAA/sW,GACvB,OAAOA,EAAIzJ,QAAQu2W,GAAY,SAACriX,EAAG6uE,GAAJ,OAAUA,EAAIA,EAAEjlB,cAAgB,OAiB3D,SAAUgvL,EAAYrjO,GAC1B,OAAOA,EAAIm7B,OAAO,GAAGkZ,cAAgBr0C,EAAI4xB,MAAM,GA0B3C,SAAUytT,EAAgBp0V,GAAsC,OAAY,MAALA,EAAYlG,MAAM21E,QAAQzvE,GAAKA,EAAI,CAACA,GAAK,GA0EhH,SAAUkjW,EAAwCiS,EAAS1nW,EAAc+D,GAC7E,OAAI2jW,EAAG3+B,OAAOt8U,eAAeuT,IAAS0nW,EAAGz3B,aAAaxjV,eAAeuT,IAAU0nW,EAAGz3B,aAAajwU,GAAcA,KACpG+D,EAAQ,SAAkB,SAE/B2jW,EAAG3+B,OAAOt8U,eAAeuT,GAAc,SACvC0nW,EAAGz3B,aAAaxjV,eAAeuT,GAAc,cAAjD,EAWI,SAAU64P,EAA6ClxL,EAAO4vG,GAClE,IAAI+8L,GAAa,EACjB,OAAO,WACL,IAAKA,EAGH,OAFAA,GAAa,EACbj/U,YAAW,kBAAMi/U,GAAa,IAAO/8L,GAC9B5vG,EAAE,WAAF,cAYP,SAAU0vQ,EAASqwB,GAA2E,IAAlE1nW,EAAkE,uDAA3D,UAAWjD,EAAgD,uCAAhBs7M,EAAgB,wDAClG,OAAIqvJ,EAAGz3B,aAAaxjV,eAAeuT,GAC1B0nW,EAAGz3B,aAAajwU,GAAOjD,aAAgBk2I,SAAWl2I,IAASA,IACzD2qW,EAAG3+B,OAAOt8U,eAAeuT,IAAWjD,IAAQs7M,OAAhD,EACEqvJ,EAAG3+B,OAAO/oU,GAKf,SAAUo8P,EAAOnrQ,GAA+B,IAAhBihD,EAAgB,uDAAV,EAAGsa,EAAO,uDAAD,EACnD,OAAO5wD,KAAK4wD,IAAIta,EAAKt2C,KAAKs2C,IAAIsa,EAAKv7D,IAyC/B,SAAUwuW,IAEc,IAD5BxsS,EAC4B,uDADF,GAC1B3gD,EAA4B,uDAAF,GAE1B,IAAK,IAAM/J,KAAO+J,EAAQ,CACxB,IAAMwgJ,EAAiB7/F,EAAO1qD,GACxBsqJ,EAAiBvgJ,EAAO/J,GAK5Bo9D,EAASmtF,IACTntF,EAASktF,GAET5/F,EAAO1qD,GAAOk3V,EAAU3sM,EAAgBD,GAK1C5/F,EAAO1qD,GAAOsqJ,EAGhB,OAAO5/F,EAQH,SAAUy6S,EAAcr8W,GAC5B,GAAIA,EAAEq8W,aAAc,OAAOr8W,EAAEq8W,eAE7B,IAAM3zR,EAAO,GACTonE,EAAK9vJ,EAAEihB,OAEX,MAAO6uI,EAAI,CAGT,GAFApnE,EAAKpnF,KAAKwuJ,GAES,SAAfA,EAAG24C,QAIL,OAHA//G,EAAKpnF,KAAK2vC,UACVy3C,EAAKpnF,KAAKme,QAEHipE,EAGTonE,EAAKA,EAAGozN,cAEV,OAAOx6R,I,qJC9fH/wE,EAAU,CACdwrW,UAAW,gBACXC,UAAW,SAGb,SAASC,EAAYv9S,GACnB,IADgC,EAC1Bw9S,EAA4B,GADF,UAGhBx9S,EAAMpzD,MAAMiF,EAAQwrW,YAHJ,IAGhC,IAAK,EAAL,qBAAgD,KAArC5mX,EAAqC,QAC9C,EAAiBA,EAAEmW,MAAMiF,EAAQyrW,WAAjC,eAAKlsW,EAAL,KAAUsjB,EAAV,KACAtjB,EAAMA,EAAIF,OACLE,IAIc,kBAARsjB,IACTA,EAAMA,EAAIxjB,QAEZssW,GAASN,EAAAA,EAAAA,IAAS9rW,IAAQsjB,IAbI,8BAgBhC,OAAO8oV,EASK,SAAU3lH,IACtB,IAEI5hL,EAFEwnS,EAA2C,GAC7C/mX,EAAYE,UAAUC,OAI1B,MAAOH,IAGL,IAAK,IAAL,MAAa3B,OAAOsD,KAAKzB,UAAUF,IAAnC,eACE,OADGu/E,EAAmC,KAC9BA,GAEN,IAAK,QACL,IAAK,aACCr/E,UAAUF,GAAGu/E,KACfwnS,EAAYxnS,GAAQynS,EAAaD,EAAYxnS,GAAOr/E,UAAUF,GAAGu/E,KAEnE,MACF,IAAK,QACCr/E,UAAUF,GAAGu/E,KACfwnS,EAAYxnS,GAAQ0nS,EAAYF,EAAYxnS,GAAOr/E,UAAUF,GAAGu/E,KAElE,MAEF,IAAK,cACH,IAAKr/E,UAAUF,GAAGu/E,GAChB,WAEwBv6C,IAAtB+hV,EAAYxnS,KACdwnS,EAAYxnS,GAAQ,IAElBwnS,EAAYxnS,KAEdwnS,EAAYxnS,IAAS,KAEvBwnS,EAAYxnS,IAASr/E,UAAUF,GAAGu/E,GAAM/kE,OACxC,MAMF,IAAK,KACL,IAAK,WACCta,UAAUF,GAAGu/E,KACfwnS,EAAYxnS,GAAQ2nS,EAAeH,EAAYxnS,GAAOr/E,UAAUF,GAAGu/E,KAErE,MAEF,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,cACL,IAAK,cACL,IAAK,OACL,IAAK,aACH,IAAKr/E,UAAUF,GAAGu/E,GAChB,MAEGwnS,EAAYxnS,KACfwnS,EAAYxnS,GAAQ,IAEtBwnS,EAAYxnS,IAAZ,kBAAyBr/E,UAAUF,GAAGu/E,IAAUwnS,EAAYxnS,IAC5D,MAEF,QACOwnS,EAAYxnS,KACfwnS,EAAYxnS,GAAQr/E,UAAUF,GAAGu/E,IAM3C,OAAOwnS,EAGH,SAAUE,EACdxiW,EACA2gD,GAEA,OAAK3gD,EACA2gD,GAEL3gD,GAASq0U,EAAAA,EAAAA,IAA8B,kBAAXr0U,EAAsBoiW,EAAWpiW,GAAUA,GAE/DA,EAAoBnf,OAAyB,kBAAX8/D,EAAsByhT,EAAWzhT,GAAUA,IAJjE3gD,EADA2gD,EAQhB,SAAU4hT,EAAcviW,EAAa2gD,GACzC,OAAKA,EACA3gD,GAEEA,GAASq0U,EAAAA,EAAAA,IAAYr0U,GAAQnf,OAAO8/D,GAFvBA,EADA3gD,EAMhB,SAAUyiW,IAId,KAAI,yCAAU,OAAO,UAAP,8BACd,KAAI,yCAAU,OAAO,UAAP,8BAId,IAFA,IAAMxe,EAAiD,GAE9C1oW,EAAI,EAAGA,KAAM,CACpB,IAAMkjG,EAAWljG,EAAR,qBAAQA,OAAR,YAAQA,GACjB,IAAK,IAAM0lB,KAASw9E,EACbA,EAAIx9E,KAELgjV,EAAKhjV,GAGPgjV,EAAKhjV,GAAU,GAAkBpgB,OAAO49F,EAAIx9E,GAAQgjV,EAAKhjV,IAGzDgjV,EAAKhjV,GAASw9E,EAAIx9E,IAKxB,OAAOgjV,I,6DC1JK,SAAU/tB,IAAiC,2BAAtBzpP,EAAsB,yBAAtBA,EAAsB,gBACvD,OAAOi0P,EAAAA,EAAAA,OAAW,CAAExK,OAAQzpP,M;;;;;;ACI9B,IAoSIi2R,EAAa,SAAU/jX,EAAOqX,GAC9B,IAAIuyU,QAAmB,IAAPvyU,EAAgB,GAAKA,GAAIuyU,SAErCjnL,EAAK,0JAMT,OALIinL,IAAaxuV,MAAM21E,QAAQ/wE,KAC3BA,EAAQqM,OAAOrM,GACV8S,MAAM,KACN2E,KAAI,SAAUusW,GAAY,OAAOA,EAAS5sW,WAE/Chc,MAAM21E,QAAQ/wE,GACPA,EAAMy5B,OAAM,SAAUmB,GAAO,OAAO+nI,EAAG33J,KAAKqB,OAAOuuB,OAEvD+nI,EAAG33J,KAAKqB,OAAOrM,KAEtBikX,EAAW,CACX,CACIl1W,KAAM,WACNkpL,SAAS,IAGb0hB,EAAQ,CACRylK,SAAU2E,EACV9sW,OAAQgtW,GAGZ,SAAS14R,EAAkBvrF,GACvB,OAAiB,OAAVA,QAA4B4hC,IAAV5hC,EAE7B,SAASkkX,EAAa1sW,GAClB,OAAOpc,MAAM21E,QAAQv5D,IAAuB,IAAfA,EAAIza,OA8BrC,IA2GIonX,EAAa,SAAUnkX,EAAOqX,GAC9B,IAAIta,EAASsa,EAAGta,OAChB,OAAIwuF,EAAkBvrF,GACXjD,GAAU,EAEjB3B,MAAM21E,QAAQ/wE,GACPA,EAAMy5B,OAAM,SAAUmB,GAAO,OAAOupV,EAAWvpV,EAAK,CAAE79B,OAAQA,OAElEsP,OAAOrM,GAAOjD,QAAUA,GAE/BqnX,EAAW,CACX,CACIr1W,KAAM,SACNs1W,KAAM,SAAUrkX,GACZ,OAAO8jC,OAAO9jC,MAItBu7D,EAAM,CACN6jT,SAAU+E,EACVltW,OAAQmtW,GA0HRE,EAAa,SAAUtkX,EAAOqX,GAC9B,IAAIktW,QAAqB,IAAPltW,EAAgB,CAAEktW,YAAY,GAASltW,GAAIktW,WACzDjkX,EAAS,CACTo+W,OAAO,EACPzoM,UAAU,GAEd,OAAI1qF,EAAkBvrF,IAAUkkX,EAAalkX,GAClCM,GAGG,IAAVN,GAAoBukX,GAGxBjkX,EAAOo+W,QAAUryW,OAAOrM,GAAOoX,OAAOra,OAC/BuD,GAHIA,GAKXkkX,GAAqB,EACrBC,EAAW,CACX,CACI11W,KAAM,aACNkpL,SAAS,IAGbhiB,EAAW,CACXmpM,SAAUkF,EACVrtW,OAAQwtW,EACRC,iBAAkBF,I,wECtmBlBhoX,EAAW,WAQX,OAPAA,EAAWvB,OAAOwB,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAIrB,KADToB,EAAIG,UAAUF,GACAD,EAAO1B,OAAOW,UAAUJ,eAAea,KAAKM,EAAGpB,KAAImB,EAAEnB,GAAKoB,EAAEpB,IAE9E,OAAOmB,GAEJF,EAASiD,MAAM/D,KAAMoB;;;;;;;;;;;;;;;;;;;gFAGhC,SAAS4C,EAAUC,EAASC,EAAYC,EAAGC,GACvC,SAASC,EAAMC,GAAS,OAAOA,aAAiBH,EAAIG,EAAQ,IAAIH,GAAE,SAAU9B,GAAWA,EAAQiC,MAC/F,OAAO,IAAKH,IAAMA,EAAI/B,WAAU,SAAUC,EAASC,GAC/C,SAASiC,EAAUD,GAAS,IAAME,EAAKJ,EAAUK,KAAKH,IAAW,MAAOI,GAAKpC,EAAOoC,IACpF,SAASC,EAASL,GAAS,IAAME,EAAKJ,EAAU,SAASE,IAAW,MAAOI,GAAKpC,EAAOoC,IACvF,SAASF,EAAKI,GAAUA,EAAOC,KAAOxC,EAAQuC,EAAON,OAASD,EAAMO,EAAON,OAAOQ,KAAKP,EAAWI,GAClGH,GAAMJ,EAAYA,EAAUL,MAAME,EAASC,GAAc,KAAKO,WAItE,SAASM,EAAYd,EAASe,GAC1B,IAAsGC,EAAGC,EAAGlE,EAAGmE,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPtE,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOuE,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEV,KAAMgB,EAAK,GAAI,MAASA,EAAK,GAAI,OAAUA,EAAK,IAAwB,oBAAXC,SAA0BP,EAAEO,OAAOC,UAAY,WAAa,OAAO3F,OAAUmF,EACvJ,SAASM,EAAKtE,GAAK,OAAO,SAAUyE,GAAK,OAAOpB,EAAK,CAACrD,EAAGyE,KACzD,SAASpB,EAAKqB,GACV,GAAIZ,EAAG,MAAM,IAAIa,UAAU,mCAC3B,MAAOV,MACH,GAAIH,EAAI,EAAGC,IAAMlE,EAAY,EAAR6E,EAAG,GAASX,EAAE,UAAYW,EAAG,GAAKX,EAAE,YAAclE,EAAIkE,EAAE,YAAclE,EAAEL,KAAKuE,GAAI,GAAKA,EAAET,SAAWzD,EAAIA,EAAEL,KAAKuE,EAAGW,EAAG,KAAKhB,KAAM,OAAO7D,EAE3J,OADIkE,EAAI,EAAGlE,IAAG6E,EAAK,CAAS,EAARA,EAAG,GAAQ7E,EAAEsD,QACzBuB,EAAG,IACP,KAAK,EAAG,KAAK,EAAG7E,EAAI6E,EAAI,MACxB,KAAK,EAAc,OAAXT,EAAEC,QAAgB,CAAEf,MAAOuB,EAAG,GAAIhB,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIW,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKT,EAAEI,IAAIO,MAAOX,EAAEG,KAAKQ,MAAO,SACxC,QACI,GAAM/E,EAAIoE,EAAEG,OAAMvE,EAAIA,EAAEK,OAAS,GAAKL,EAAEA,EAAEK,OAAS,MAAkB,IAAVwE,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAET,EAAI,EAAG,SACjG,GAAc,IAAVS,EAAG,MAAc7E,GAAM6E,EAAG,GAAK7E,EAAE,IAAM6E,EAAG,GAAK7E,EAAE,IAAM,CAAEoE,EAAEC,MAAQQ,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYT,EAAEC,MAAQrE,EAAE,GAAI,CAAEoE,EAAEC,MAAQrE,EAAE,GAAIA,EAAI6E,EAAI,MAC7D,GAAI7E,GAAKoE,EAAEC,MAAQrE,EAAE,GAAI,CAAEoE,EAAEC,MAAQrE,EAAE,GAAIoE,EAAEI,IAAIQ,KAAKH,GAAK,MACvD7E,EAAE,IAAIoE,EAAEI,IAAIO,MAChBX,EAAEG,KAAKQ,MAAO,SAEtBF,EAAKb,EAAKrE,KAAKsD,EAASmB,GAC1B,MAAOV,GAAKmB,EAAK,CAAC,EAAGnB,GAAIQ,EAAI,EAAK,QAAUD,EAAIjE,EAAI,EACtD,GAAY,EAAR6E,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEvB,MAAOuB,EAAG,GAAKA,EAAG,QAAK,EAAQhB,MAAM,IAIlF,SAAS4B,IACL,IAAK,IAAIxF,EAAI,EAAGC,EAAI,EAAGwF,EAAKtF,UAAUC,OAAQH,EAAIwF,EAAIxF,IAAKD,GAAKG,UAAUF,GAAGG,OACxE,IAAI+E,EAAI1G,MAAMuB,GAAI0F,EAAI,EAA3B,IAA8BzF,EAAI,EAAGA,EAAIwF,EAAIxF,IACzC,IAAK,IAAI0F,EAAIxF,UAAUF,GAAI2F,EAAI,EAAGC,EAAKF,EAAEvF,OAAQwF,EAAIC,EAAID,IAAKF,IAC1DP,EAAEO,GAAKC,EAAEC,GACjB,OAAOT,EAGX,SAASy2E,EAAMv4E,GAGX,OAAOA,IAAUA,EAErB,SAASurF,EAAkBvrF,GACvB,OAAiB,OAAVA,QAA4B4hC,IAAV5hC,EAE7B,SAASkkX,EAAa1sW,GAClB,OAAOpc,MAAM21E,QAAQv5D,IAAuB,IAAfA,EAAIza,OAErC,IAAI23E,EAAW,SAAUl+D,GACrB,OAAe,OAARA,GAAgBA,GAAsB,kBAARA,IAAqBpb,MAAM21E,QAAQv6D,IAK5E,SAASmuW,EAAWC,EAAKC,GACrB,SAAItsS,EAAMqsS,KAAQrsS,EAAMssS,KAGjBD,IAAQC,EAGnB,SAASC,EAAYlqV,GACjB,MAAY,KAARA,IAGI2wD,EAAkB3wD,GAG9B,SAASg3H,EAAWl7E,GAChB,MAAqB,oBAAPA,EAElB,SAASquS,EAAU/kX,GACf,OAAO4xJ,EAAW5xJ,MAAYA,EAAMglX,aAGxC,SAASjwN,EAAUtB,EAAWmuF,GAC1B,IAAIjnN,EAAQv/B,MAAM21E,QAAQ0iF,GAAaA,EAAYxD,EAAQwD,GAC3D,GAAI7B,EAAWj3H,EAAMo6H,WACjB,OAAOp6H,EAAMo6H,UAAU6sF,GAG3B,IAAK,IAAIhlP,EAAI,EAAGA,EAAI+9B,EAAM59B,OAAQH,IAC9B,GAAIglP,EAAUjnN,EAAM/9B,GAAIA,GACpB,OAAOA,EAIf,OAAQ,EAKZ,SAASonB,EAAKyvI,EAAWmuF,GACrB,IAAIjnN,EAAQv/B,MAAM21E,QAAQ0iF,GAAaA,EAAYxD,EAAQwD,GACvDnqE,EAAMyrE,EAAUp6H,EAAOinN,GAC3B,OAAgB,IAATt4J,OAAa1nD,EAAYjH,EAAM2uD,GAE1C,SAAS/U,EAAS2nG,EAAYp3J,GAC1B,OAAqC,IAA9Bo3J,EAAWtlK,QAAQkO,GAK9B,SAASmrI,EAAQwD,GACb,OAAI7B,EAAWx2J,MAAMshG,MACVthG,MAAMshG,KAAK+2D,GAGfwxN,EAAWxxN,GAGtB,SAASwxN,EAAWxxN,GAGhB,IAFA,IAAI94H,EAAQ,GACR59B,EAAS02J,EAAU12J,OACdH,EAAI,EAAGA,EAAIG,EAAQH,IACxB+9B,EAAMj5B,KAAK+xJ,EAAU72J,IAEzB,OAAO+9B,EAEX,SAASmT,EAAOt3B,GACZ,OAAIo7I,EAAW32J,OAAO6yC,QACX7yC,OAAO6yC,OAAOt3B,GAIlBvb,OAAOsD,KAAKiY,GAAKiB,KAAI,SAAUpV,GAAK,OAAOmU,EAAInU,MAE1D,SAASiqJ,EAAMjrI,EAAQ2gD,GAWnB,OAVA/mE,OAAOsD,KAAKyjE,GAAQxjE,SAAQ,SAAU8Y,GAClC,GAAIo9D,EAAS1S,EAAO1qD,IAKhB,OAJK+J,EAAO/J,KACR+J,EAAO/J,GAAO,SAElBg1I,EAAMjrI,EAAO/J,GAAM0qD,EAAO1qD,IAG9B+J,EAAO/J,GAAO0qD,EAAO1qD,MAElB+J,EAGX,SAAS6jW,IACL,MAAO,CACHC,WAAW,EACX/b,SAAS,EACT9/J,OAAO,EACP87K,UAAU,EACV1G,OAAO,EACP2G,SAAS,EACTC,WAAW,EACXhvC,SAAS,EACTrgK,UAAU,EACViqJ,SAAS,EACTlqJ,QAAQ,EACRz5C,QAAQ,GAOhB,SAASypI,EAAStvL,EAAI+3K,EAAMv5K,GAGxB,YAFa,IAATu5K,IAAmBA,EAAO,QAChB,IAAVv5K,IAAoBA,EAAQ,CAAEqwS,WAAW,IAChC,IAAT92H,EACO/3K,EAGJ,WAEH,IADA,IAAIoX,EAAO,GACFklB,EAAK,EAAGA,EAAKl2G,UAAUC,OAAQi2G,IACpCllB,EAAKklB,GAAMl2G,UAAUk2G,GAEzB,IAAIwyQ,EAAQ,WACR1mX,OAAU8iC,EAELszC,EAAMqwS,WACP7uS,EAAGj3E,WAAM,EAAQquF,IAGzB7rB,aAAanjE,GACbA,EAAUslC,WAAWohV,EAAO/2H,IAdhC,IAAI3vP,EAqBR,SAAS8xJ,EAAK9oI,GACVuqD,QAAQu+E,KAAK,kBAAoB9oI,GAKrC,SAASukP,EAAYr4L,EAAUlmC,GAC3B,OAAOkmC,EAASpnE,QAAQ,cAAc,SAAU9L,EAAGvF,GAC/C,OAAOA,KAAKuyC,EAASA,EAAOvyC,GAAK,IAAMA,EAAI,OAInD,IAAIkqX,EAAQ,GACZ,SAASC,EAAgBt1N,GACrB,IAAI/4I,EASJ,OAR6B,QAAxBA,EAAK+4I,EAAOn5I,cAA2B,IAAPI,OAAgB,EAASA,EAAGta,UAC7DqzJ,EAAOn5I,OAASm5I,EAAOn5I,OAAOQ,KAAI,SAAUkuW,GACxC,MAAqB,kBAAVA,EACA,CAAE52W,KAAM42W,GAEZA,MAGRv1N,EAEX,IAAIw1N,EAA+B,WAC/B,SAASA,KAsBT,OApBAA,EAAc/8N,OAAS,SAAU95I,EAAMqhJ,GAEnC,IAAIkvN,EAAOoG,EAAgBt1N,GACvBq1N,EAAM12W,GACN02W,EAAM12W,GAAQu9I,EAAMm5N,EAAM12W,GAAOqhJ,GAGrCq1N,EAAM12W,GAAQvS,EAAS,CAAEqpX,MAAM,EAAOnB,kBAAkB,GAASpF,IAErEsG,EAAct1G,OAAS,SAAUvhQ,GAC7B,IAAIsI,EACJ,SAAiC,QAAtBA,EAAKouW,EAAM12W,UAA0B,IAAPsI,OAAgB,EAASA,EAAGwuW,OAEzED,EAAcE,cAAgB,SAAU/2W,GACpC,IAAIsI,EACJ,SAAiC,QAAtBA,EAAKouW,EAAM12W,UAA0B,IAAPsI,OAAgB,EAASA,EAAGqtW,mBAEzEkB,EAAcG,kBAAoB,SAAUC,GACxC,OAAOP,EAAMO,IAEVJ,EAvBuB,GA4BlC,SAAS/8N,EAAO95I,EAAMqhJ,GAElB61N,EAAYl3W,EAAMqhJ,GAEI,kBAAXA,EAIXw1N,EAAc/8N,OAAO95I,EAAM,CACvBqwW,SAAUhvN,IAJVw1N,EAAc/8N,OAAO95I,EAAMqhJ,GAUnC,SAAS61N,EAAYl3W,EAAMo7I,GACvB,IAAIyH,EAAWzH,KAGXyH,EAAWzH,EAAUi1N,YAGrBwG,EAAcG,kBAAkBh3W,GAGpC,MAAM,IAAIzS,MAAM,mCAAqCyS,EAAO,qDAGhE,IAAIm3W,EAAiB,CACjBC,eAAgB,0BAChBC,cAAc,EACd7tC,QAAS,CACL6wB,QAAS,UACT+b,UAAW,YACXzG,MAAO,QACP2G,QAAS,UACTD,SAAU,WACV97K,MAAO,SAEX+8K,OAAO,EACPn0M,KAAM,aACNo0M,oBAAoB,GAEpBC,EAAgB/pX,EAAS,GAAI0pX,GAC7B7zQ,EAAY,WAAc,OAAOk0Q,GAWrC,SAASC,EAAerI,GAEpB,IAAIhhM,EAAM,GAOV,OANAliL,OAAO6uC,eAAeqzI,EAAK,kBAAmB,CAC1Cn9K,OAAO,EACP08J,UAAU,EACV3yH,YAAY,EACZC,cAAc,IAEbm0U,EAIDzpS,EAASypS,IAAUA,EAAMsI,gBAClBtI,EAEPzpS,EAASypS,GACFljX,OAAOsD,KAAK4/W,GAAO1wV,QAAO,SAAU8rI,EAAMmtN,GAC7C,IAAIzvW,EAAS,GAgBb,OAdIA,GADgB,IAAhBknW,EAAMuI,GACG,GAEJtrX,MAAM21E,QAAQotS,EAAMuI,KAGpBhyS,EAASypS,EAAMuI,IAFXvI,EAAMuI,GAMN,CAACvI,EAAMuI,KAEA,IAAhBvI,EAAMuI,KACNntN,EAAKmtN,GAAQC,EAAYD,EAAMzvW,IAE5BsiJ,IACR4jB,GAGc,kBAAVghM,GACPvtN,EAAK,+CACEusB,GAEJghM,EAAMrrW,MAAM,KAAK2a,QAAO,SAAU8rI,EAAM+lN,GAC3C,IAAIsH,EAAaC,EAAUvH,GAC3B,OAAKsH,EAAW73W,MAGhBwqJ,EAAKqtN,EAAW73W,MAAQ43W,EAAYC,EAAW73W,KAAM63W,EAAW3vW,QACzDsiJ,GAHIA,IAIZ4jB,GAvCQA,EAyCf,SAASwpM,EAAYX,EAAUc,GAC3B,IAAIC,EAAanB,EAAcG,kBAAkBC,GACjD,IAAKe,EACD,OAAOD,EAEX,IAQIE,EAGIC,EAXJhwW,EAAS,GACb,IAAK8vW,EAAW9vW,SAAW7b,MAAM21E,QAAQ+1S,GACrC,MAAM,IAAIxqX,MAAM,uEAGpB,GAAIlB,MAAM21E,QAAQ+1S,KAAcC,EAAW9vW,OACvC,OAAO6vW,GAINC,EAAW9vW,QAAW8vW,EAAW9vW,OAAOla,OAAS+pX,EAAS/pX,QAAU3B,MAAM21E,QAAQ+1S,GAGnFE,EAAgBF,EAASrvW,KAAI,SAAU3W,EAAGwoF,GACtC,IAAIjyE,EACAsuW,EAAqC,QAA5BtuW,EAAK0vW,EAAW9vW,cAA2B,IAAPI,OAAgB,EAASA,EAAGiyE,GAK7E,OAJA29R,EAAqBtB,GAASsB,EACzBtB,IACDA,EAAQsB,GAELtB,KAIXqB,EAAgBD,EAAW9vW,OAG/B,IAAK,IAAIra,EAAI,EAAGA,EAAIoqX,EAAcjqX,OAAQH,IAAK,CAC3C,IAAIU,EAAU0pX,EAAcpqX,GACxBoD,EAAQ1C,EAAQ26L,QAEhB78L,MAAM21E,QAAQ+1S,GACVlqX,KAAKkqX,IACL9mX,EAAQ8mX,EAASlqX,IAKjBU,EAAQyR,QAAQ+3W,EAChB9mX,EAAQ8mX,EAASxpX,EAAQyR,MAGK,IAAzBi4W,EAAcjqX,SACnBiD,EAAQ8mX,GAIZxpX,EAAQ4pX,WACRlnX,EAAQmnX,EAAcnnX,EAAO1C,EAAQ+mX,OAGpB,kBAAVrkX,GAAmC,MAAbA,EAAM,KACnCA,EAAQmnX,EAAcnnX,EAAMioC,MAAM,GAAI3qC,EAAQ+mX,QAG7CU,EAAU/kX,IAAU1C,EAAQ+mX,OAC7BrkX,EAAQ1C,EAAQ+mX,KAAKrkX,IAGrBiX,EAAO3Z,EAAQyR,OACfkI,EAAO3Z,EAAQyR,MAAQ3T,MAAM21E,QAAQ95D,EAAO3Z,EAAQyR,OAASkI,EAAO3Z,EAAQyR,MAAQ,CAACkI,EAAO3Z,EAAQyR,OACpGkI,EAAO3Z,EAAQyR,MAAMrN,KAAK1B,IAI1BiX,EAAO3Z,EAAQyR,MAAQ/O,EAG/B,OAAOiX,EAKX,IAAI4vW,EAAY,SAAUvH,GACtB,IAAIroW,EAAS,GACTlI,EAAOuwW,EAAKxsW,MAAM,KAAK,GAQ3B,OAPIyhE,EAAS+qS,EAAM,OACfroW,EAASqoW,EACJxsW,MAAM,KACNm1B,MAAM,GACNvmB,KAAK,KACL5O,MAAM,MAER,CAAE/D,KAAMA,EAAMkI,OAAQA,IAEjC,SAASkwW,EAAcnnX,EAAOonX,GAC1B,IAAIC,EAAU,SAAUC,GACpB,IAAI1sV,EAAM0sV,EAAWtnX,GACrB,OAAOonX,EAASA,EAAOxsV,GAAOA,GAGlC,OADAysV,EAAQrC,aAAehlX,EAChBqnX,EAEX,SAASE,EAAgBtwW,GACrB,OAAI7b,MAAM21E,QAAQ95D,GACPA,EAAOW,QAAO,SAAU+tW,GAC3B,OAAOZ,EAAUY,IAA4B,kBAAVA,GAAmC,MAAbA,EAAM,MAGhE1qX,OAAOsD,KAAK0Y,GACdW,QAAO,SAAUN,GAAO,OAAOytW,EAAU9tW,EAAOK,OAChDG,KAAI,SAAUH,GAAO,OAAOL,EAAOK,MAM5C,SAAS8nW,EAASp/W,EAAOm+W,EAAO7gX,GAE5B,YADgB,IAAZA,IAAsBA,EAAU,IAC7BoC,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAI8rX,EAAYC,EAAatsS,EAAO76E,EAAQslC,EAAQ8hV,EAAaC,EACjE,OAAOlnX,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAaD,OAZAymX,EAAyB,OAAZlqX,QAAgC,IAAZA,OAAqB,EAASA,EAAQ+oX,MACvEoB,EAA0B,OAAZnqX,QAAgC,IAAZA,OAAqB,EAASA,EAAQmqX,YACxEtsS,EAAQ,CACJpsE,MAAmB,OAAZzR,QAAgC,IAAZA,OAAqB,EAASA,EAAQyR,OAAS,UAC1EovW,MAAOqI,EAAerI,GACtBkI,MAAsB,OAAfmB,QAAsC,IAAfA,GAAwBA,EACtDC,YAA6B,OAAhBA,QAAwC,IAAhBA,GAAyBA,EAC9DG,eAAe,EACfN,YAAyB,OAAZhqX,QAAgC,IAAZA,OAAqB,EAASA,EAAQwwC,SAAW,GAClFqgI,OAAoB,OAAZ7wK,QAAgC,IAAZA,OAAqB,EAASA,EAAQ6wK,QAAU,GAC5E05M,gBAA6B,OAAZvqX,QAAgC,IAAZA,OAAqB,EAASA,EAAQuqX,iBAAmB,IAE3F,CAAC,EAAaC,EAAU3sS,EAAOn7E,EAAO1C,IACjD,KAAK,EAWD,OAVAgD,EAAS+W,EAAGrW,OACZ4kC,EAAS,GACT8hV,EAAc,GACdC,EAAgB,GAChBrnX,EAAOslC,OAAOpnC,SAAQ,SAAU4B,GAC5B,IAAI6uF,EAAM7uF,EAAE6uF,MACZrpD,EAAOlkC,KAAKutF,GACZy4R,EAAYtnX,EAAEk/W,MAAQrwR,EACtB04R,EAAcvnX,EAAEk/W,MAAQl/W,EAAE6uF,OAEvB,CAAC,EAAc,CACdyvR,MAAOp+W,EAAOo+W,MACdzoM,SAAU31K,EAAO21K,SACjBrwI,OAAQA,EACR8hV,YAAaA,EACbC,cAAeA,WAS3C,SAASG,EAAU3sS,EAAOn7E,EAAOqX,GAC7B,IAAIsP,QAAa,IAAPtP,EAAgB,GAAKA,GAAI0wW,UAAWA,OAAmB,IAAPphW,GAAwBA,EAClF,OAAOjnB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIm2B,EAAIm2V,EAAY/xM,EAAUrwI,EAAQu4U,EAAOphX,EAAQH,EAAG0iX,EAAMh/W,EAC9D,OAAOG,EAAY/E,MAAM,SAAUo2B,GAC/B,OAAQA,EAAG/wB,OACP,KAAK,EAAG,MAAO,CAAC,EAAaknX,EAAY9sS,EAAOn7E,IAChD,KAAK,EAED,GADA6xB,EAAKC,EAAG9wB,OAAQgnX,EAAan2V,EAAGm2V,WAAY/xM,EAAWpkJ,EAAGokJ,SAAUrwI,EAAS/T,EAAG+T,OAC5EoiV,EACA,MAAO,CAAC,EAAc,CACdtJ,OAAQ94U,EAAO7oC,OACfk5K,SAAUA,EACVrwI,OAAQA,IAGpBu4U,EAAQljX,OAAOsD,KAAK48E,EAAMgjS,OAAOvmW,QAAO,SAAU0nW,GAAQ,OAAQsG,EAAcE,cAAcxG,MAC9FviX,EAASohX,EAAMphX,OACfH,EAAI,EACJk1B,EAAG/wB,MAAQ,EACf,KAAK,EACD,OAAMnE,EAAIG,EACNgrX,GAAanC,EAAct1G,OAAO6tG,EAAMvhX,IACjC,CAAC,EAAa,IAEzB0iX,EAAOnB,EAAMvhX,GACN,CAAC,EAAasrX,EAAM/sS,EAAOn7E,EAAO,CACjC+O,KAAMuwW,EACNroW,OAAQkkE,EAAMgjS,MAAMmB,OAPF,CAAC,EAAa,GAS5C,KAAK,EAED,GADAh/W,EAASwxB,EAAG9wB,QACPV,EAAOo+W,OAASp+W,EAAO0B,QACxB4jC,EAAOlkC,KAAKpB,EAAO0B,OACfm5E,EAAMkrS,OACN,MAAO,CAAC,EAAc,CACd3H,OAAO,EACPzoM,SAAUA,EACVrwI,OAAQA,IAIxB9T,EAAG/wB,MAAQ,EACf,KAAK,EAED,OADAnE,IACO,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,EAAc,CACtB8hX,OAAQ94U,EAAO7oC,OACfk5K,SAAUA,EACVrwI,OAAQA,WAMhC,SAASqiV,EAAY9sS,EAAOn7E,GACxB,OAAON,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIysX,EAAcprX,EAAQ6oC,EAAQhwB,EAASwyW,EAAoB7zP,EAAY33H,EAAG0iX,EAAMh/W,EACpF,OAAOG,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EACDonX,EAAeltX,OAAOsD,KAAK48E,EAAMgjS,OAAOvmW,OAAOguW,EAAcE,eAC7D/oX,EAASorX,EAAaprX,OACtB6oC,EAAS,GACThwB,EAAU21E,EAAkBvrF,IAAoB,KAAVA,GAAgBkkX,EAAalkX,GACnEooX,EAAqBxyW,GAAWulE,EAAMssS,YACtC7qX,EAAI,EACJya,EAAGtW,MAAQ,EACf,KAAK,EACD,OAAMnE,EAAIG,GACVuiX,EAAO6I,EAAavrX,GACb,CAAC,EAAasrX,EAAM/sS,EAAOn7E,EAAO,CACjC+O,KAAMuwW,EACNroW,OAAQkkE,EAAMgjS,MAAMmB,OAJF,CAAC,EAAa,GAM5C,KAAK,EAED,GADAh/W,EAAS+W,EAAGrW,QACP0zE,EAASp0E,GACV,MAAM,IAAIhE,MAAM,oDAKpB,QAHwBslC,IAApBthC,EAAO21K,WACP1hD,EAAaj0H,EAAO21K,WAEnB31K,EAAOo+W,OAASp+W,EAAO0B,QACxB4jC,EAAOlkC,KAAKpB,EAAO0B,OAEfm5E,EAAMkrS,OACN,MAAO,CAAC,EAAc,CACd2B,YAAY,EACZ/xM,SAAU31K,EAAO21K,SACjBrwI,OAAQA,IAIxBvuB,EAAGtW,MAAQ,EACf,KAAK,EAED,OADAnE,IACO,CAAC,EAAa,GACzB,KAAK,EACD,QAAIgZ,GAAY2+G,GAAep5C,EAAMssS,eAQhCtsS,EAAMkrS,OAAU+B,GAQd,CAAC,EAAc,CACdJ,YAAazzP,GAAc3+G,EAC3BqgK,SAAU1hD,EACV3uF,OAAQA,IAlBL,CAAC,EAAc,CACdoiV,YAAY,EACZ/xM,SAAU1hD,EACV3uF,OAAQA,WAwBxC,SAASsiV,EAAM/sS,EAAOn7E,EAAOs/W,GACzB,OAAO5/W,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIqrX,EAAY7zB,EAAiBj8U,EAAQ3W,EAAQ+nX,EACjD,OAAO5nX,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAED,GADAgmX,EAAanB,EAAcG,kBAAkBzG,EAAKvwW,OAC7Cg4W,IAAeA,EAAW3H,SAC3B,MAAM,IAAI9iX,MAAM,sBAAwBgjX,EAAKvwW,KAAO,aAIxD,OAFAmkV,EAAkB6zB,EAAWuB,UAAYvB,EAAWuB,UAAUtoX,GAASA,EACvEiX,EAASsxW,EAAiBjJ,EAAKroW,OAAQkkE,EAAMmsS,YACtC,CAAC,EAAaP,EAAW3H,SAASlsB,EAAiBj8U,IAC9D,KAAK,EAED,OADA3W,EAAS+W,EAAGrW,OACU,kBAAXV,GACP+nX,EAAW7rX,EAASA,EAAS,GAAKya,GAAU,IAAM,CAAEuxW,QAASrtS,EAAMpsE,KAAM05W,QAASzoX,EAAO0oX,OAAQpJ,EAAKvwW,OAC/F,CAAC,EAAc,CACd2vW,OAAO,EACP18W,MAAO,CAAEs9W,KAAMA,EAAKvwW,KAAMkgF,IAAK,WAAc,OAAOo9K,EAAY/rQ,EAAQ+nX,SAG/E3zS,EAASp0E,KACVA,EAAS,CAAEo+W,MAAOp+W,IAEf,CAAC,EAAc,CACdo+W,MAAOp+W,EAAOo+W,MACdzoM,SAAU31K,EAAO21K,SACjBj0K,MAAO1B,EAAOo+W,WAAQ98U,EAAY+mV,EAAoBxtS,EAAOn7E,EAAO+mX,EAAYzH,EAAKvwW,KAAMkI,aASvH,SAAS0xW,EAAoBxtS,EAAOn7E,EAAO+mX,EAAYf,EAAU/uW,GAC7D,IAAII,EACAyQ,EAAoD,QAAzCzQ,EAAK8jE,EAAM0sS,eAAe7B,UAA8B,IAAP3uW,EAAgBA,EAAK0vW,EAAWj/V,QAC5F8gW,EAAcC,EAAgB1tS,EAAO4rS,EAAYf,GACjDr/V,EAAKmiW,EAAgB3tS,EAAO4rS,EAAYf,EAAUl+V,GAAUihW,EAAcpiW,EAAGoiW,YAAaC,EAAcriW,EAAGqiW,YAC3Gl7U,EAAStxC,EAASA,EAASA,EAASA,EAAS,GAAKya,GAAU,IAAM,CAAEuxW,QAASrtS,EAAMpsE,KAAM05W,QAASzoX,EAAO0oX,OAAQ1C,IAAa4C,GAAcG,GAChJ,MAAO,CACH95R,IAAK,WAAc,OAAOg6R,EAAkBD,GAAe32Q,IAAY8zQ,eAAgBhrS,EAAMpsE,KAAM++B,IACnGwxU,KAAM0G,GAGd,SAAS6C,EAAgB1tS,EAAO4rS,EAAYf,GACxC,IAAI/uW,EAAS8vW,EAAW9vW,OACxB,IAAKA,EACD,MAAO,GAEX,IAAIiyW,EAAajyW,EAAOW,QAAO,SAAU+tW,GAAS,OAAOA,EAAMuB,YAAanqX,OAC5E,GAAImsX,GAAc,EACd,MAAO,GAEX,IAAI/6M,EAAQ,GACRg7M,EAAahuS,EAAMgjS,MAAM6H,IACxB5qX,MAAM21E,QAAQo4S,IAAez0S,EAASy0S,KACvCA,EAAalyW,EAAOQ,KAAI,SAAUkuW,GAC9B,OAAOwD,EAAWxD,EAAM52W,UAGhC,IAAK,IAAIi/B,EAAQ,EAAGA,EAAQ/2B,EAAOla,OAAQixC,IAAS,CAChD,IAAI23U,EAAQ1uW,EAAO+2B,GACf12B,EAAM6xW,EAAWn7U,GACrB,GAAK+2U,EAAUztW,GAAf,CAGAA,EAAMA,EAAI0tW,aACV,IAAIprO,EAASz+D,EAAMgzF,MAAM72J,IAAQA,EACjC62J,EAAMw3M,EAAM52W,MAAQ6qI,EACpBu0B,EAAM,IAAMw3M,EAAM52W,KAAO,KAAOosE,EAAMmsS,WAAWhwW,IAErD,OAAO62J,EAEX,SAAS26M,EAAgB3tS,EAAO4rS,EAAYf,EAAUgD,GAClD,IAAID,EAAc,GACd5K,EAAQhjS,EAAMgjS,MAAM6H,GACpB/uW,EAAS8vW,EAAW9vW,QAAU,GAElC,OAAKknW,GAILljX,OAAOsD,KAAK4/W,GAAO3/W,SAAQ,SAAU8Y,EAAK02B,GAEtC,IAAIsxU,EAAOnB,EAAM7mW,GACjB,IAAKytW,EAAUzF,GACX,MAAO,GAGX,IAAIqG,EAAQ1uW,EAAO+2B,GACnB,IAAK23U,EACD,MAAO,GAGX,IAAI52W,EAAOuwW,EAAK0F,aAChB+D,EAAYpD,EAAM52W,MAAQosE,EAAMgzF,MAAMp/J,IAASA,EAC/Cg6W,EAAY,IAAMpD,EAAM52W,KAAO,KAAOosE,EAAMmsS,WAAWv4W,MAEpD,CACHg6W,YAAaA,EACbC,YAAaA,IArBN,GAwBf,SAASC,EAAkBj1S,EAAUmH,EAAOrtC,GACxC,MAAwB,oBAAbkmC,EACAA,EAASmH,EAAOrtC,GAEpBu+N,EAAYr4L,EAAUx3E,EAASA,EAAS,GAAIsxC,GAAS,CAAE06U,QAASrtS,KAE3E,SAASotS,EAAiBtxW,EAAQqwW,GAC9B,GAAIlsX,MAAM21E,QAAQ95D,GACd,OAAOA,EAAOQ,KAAI,SAAUkuW,GACxB,IAAIyD,EAA8B,kBAAVzD,GAAmC,MAAbA,EAAM,GAAaA,EAAM19U,MAAM,GAAK09U,EAClF,OAAIyD,KAAc9B,EACPA,EAAW8B,GAEfzD,KAGf,IAAI73U,EAAS,GACTy5H,EAAY,SAAUvnK,GACtB,OAAI+kX,EAAU/kX,GACHA,EAAMsnX,GAEVtnX,GAKX,OAHA/E,OAAOsD,KAAK0Y,GAAQzY,SAAQ,SAAUmnX,GAClC73U,EAAO63U,GAASp+M,EAAUtwJ,EAAO0uW,OAE9B73U,EAGX,IAAIu7U,EAAa,WAAc,MAAO,CAClCzwC,GAAI,CAAC,QAAS,UAEditC,EAAO,WAAc,MAAO,CAC5BjtC,GAAI,CAAC,SAAU,UAEf2L,EAAQ,SAAUltU,GAClB,IAAIuuB,EAASvuB,EAAGuuB,OAChB,OAAIA,EAAO7oC,OACA,CACH67U,GAAI,CAAC,QAAS,WAGf,CACHA,GAAI,CAAC,SAAU,UAGnBgvB,EAAU,WAAc,MAAO,CAC/BhvB,GAAI,KAEJ0wC,EAAQ,CACRD,WAAYA,EACZ9kC,MAAOA,EACPqjB,QAASA,EACTie,KAAMA,GAaN0D,GAAY,IAAI,KAKY,WAC5B,SAASC,EAAWz1L,EAAQ01L,GACxB/tX,KAAK0yI,UAAY,GACjB1yI,KAAKq4L,OAASA,EACdr4L,KAAK4wJ,MAAMm9N,GAEfD,EAAW5tX,UAAUmC,QAAU,SAAUo9E,EAAOmkS,EAAMxxU,GAClD,OAAOpyC,KAAK26L,OAAO36L,KAAKq4L,OAAQ54G,EAAOmkS,EAAMxxU,IAEjD07U,EAAW5tX,UAAUy6L,OAAS,SAAUtC,EAAQ54G,EAAOmkS,EAAMxxU,GACzD,IAAIz2B,EAAIsP,EAAIkL,EAAIC,EAAIC,EAAIC,EAAI6tL,EAAIC,EAC5Bh4L,EAEA4hW,EAA+J,QAA7I73V,EAA6F,QAAvFlL,EAAuC,QAAjCtP,EAAK3b,KAAK0yI,UAAU2lD,UAA4B,IAAP18K,OAAgB,EAASA,EAAG8lH,cAA2B,IAAPx2G,OAAgB,EAASA,EAAGw0D,UAA2B,IAAPtpD,OAAgB,EAASA,EAAGytV,GACnMqK,EAA6G,QAAzF53V,EAAuC,QAAjCD,EAAKp2B,KAAK0yI,UAAU2lD,UAA4B,IAAPjiK,OAAgB,EAASA,EAAGosV,gBAA6B,IAAPnsV,OAAgB,EAASA,EAAGutV,GAMrJ,OALAx3V,EAAU4hW,GAAkBC,GAAoB,GAC3C7hW,IACDA,EAAU,0BAEdqzD,EAAqJ,QAA5I2kI,EAA4F,QAAtFD,EAAuC,QAAjC7tL,EAAKt2B,KAAK0yI,UAAU2lD,UAA4B,IAAP/hK,OAAgB,EAASA,EAAGm8I,aAA0B,IAAP0xC,OAAgB,EAASA,EAAG1kI,UAA2B,IAAP2kI,EAAgBA,EAAK3kI,EAC3Ky2E,EAAW9pI,GAAWA,EAAQqzD,EAAOrtC,GAAUu+N,EAAYvkP,EAAStrB,EAASA,EAAS,GAAIsxC,GAAS,CAAE06U,QAASrtS,MAEzHquS,EAAW5tX,UAAU0wJ,MAAQ,SAAUm9N,GACnCn9N,EAAM5wJ,KAAK0yI,UAAWq7O,IAE1BD,EAAW5tX,UAAUguX,QAAU,SAAU76W,GACrC,IAAIsI,EAAIsP,EACR,SAAyG,QAA9FA,EAA4C,QAAtCtP,EAAK3b,KAAK0yI,UAAU1yI,KAAKq4L,eAA4B,IAAP18K,OAAgB,EAASA,EAAG6mW,gBAA6B,IAAPv3V,OAAgB,EAASA,EAAG5X,MA3BtH,GAyD/B,IAAI86W,GAAgB,SAASC,EAAMxnX,EAAGhH,GACpC,GAAIgH,IAAMhH,EAAG,OAAO,EAEpB,GAAIgH,GAAKhH,GAAiB,iBAALgH,GAA6B,iBAALhH,EAAe,CAC1D,GAAIgH,EAAE3G,cAAgBL,EAAEK,YAAa,OAAO,EAE5C,IAAIoB,EAAQH,EAAG2B,EACf,GAAInD,MAAM21E,QAAQzuE,GAAI,CAEpB,GADAvF,EAASuF,EAAEvF,OACPA,GAAUzB,EAAEyB,OAAQ,OAAO,EAC/B,IAAKH,EAAIG,EAAgB,IAARH,KACf,IAAKktX,EAAMxnX,EAAE1F,GAAItB,EAAEsB,IAAK,OAAO,EACjC,OAAO,EAKT,GAAI0F,EAAE3G,cAAgBsc,OAAQ,OAAO3V,EAAE0/D,SAAW1mE,EAAE0mE,QAAU1/D,EAAEsgG,QAAUtnG,EAAEsnG,MAC5E,GAAItgG,EAAEosK,UAAYzzK,OAAOW,UAAU8yK,QAAS,OAAOpsK,EAAEosK,YAAcpzK,EAAEozK,UACrE,GAAIpsK,EAAE2H,WAAahP,OAAOW,UAAUqO,SAAU,OAAO3H,EAAE2H,aAAe3O,EAAE2O,WAIxE,GAFA1L,EAAOtD,OAAOsD,KAAK+D,GACnBvF,EAASwB,EAAKxB,OACVA,IAAW9B,OAAOsD,KAAKjD,GAAGyB,OAAQ,OAAO,EAE7C,IAAKH,EAAIG,EAAgB,IAARH,KACf,IAAK3B,OAAOW,UAAUJ,eAAea,KAAKf,EAAGiD,EAAK3B,IAAK,OAAO,EAEhE,IAAKA,EAAIG,EAAgB,IAARH,KAAY,CAC3B,IAAI0a,EAAM/Y,EAAK3B,GAEf,IAAKktX,EAAMxnX,EAAEgV,GAAMhc,EAAEgc,IAAO,OAAO,EAGrC,OAAO,EAIT,OAAOhV,IAAIA,GAAKhH,IAAIA,GAGlByuX,GAAU,SAAU/wR,GACpB,QAAKA,OAGgB,qBAAVvhB,OAAyBm6E,EAAWn6E,QAAUuhB,aAAevhB,WAKpEuhB,IAAOA,EAAIgxR,cAKnB,SAASC,GAAoBjqX,GACzB,IAAIqX,EAAIsP,EACR,IAAKojW,GAAQ/pX,GACT,OAAOA,EAEX,IAAIyM,EAAQzM,EAAMqhB,OAClB,GAAmB,SAAf5U,EAAMmc,MAAmBnc,EAAMy9W,MAC/B,OAAOj6N,EAAQxjJ,EAAMy9W,OAGzB,GAAiC,QAA5B7yW,EAAK5K,EAAM09W,mBAAgC,IAAP9yW,OAAgB,EAASA,EAAG0qF,OAAQ,CAEzE,IAAIqoR,EAAgBv1P,WAAWpoH,EAAMzM,OACrC,OAAIu4E,EAAM6xS,GACC39W,EAAMzM,MAEVoqX,EAEX,GAAiC,QAA5BzjW,EAAKla,EAAM09W,mBAAgC,IAAPxjW,OAAgB,EAASA,EAAGvP,KAAM,CACvE,IAAIizW,EAAsC,kBAAhB59W,EAAMzM,MAAqByM,EAAMzM,MAAMoX,OAAS3K,EAAMzM,MAChF,OAAOqqX,EAEX,OAAO59W,EAAMzM,MAGjB,IAAIsqX,GAAc,SAAUtjB,GACxB,IAAI3vV,EACA6gU,GAA+B,QAArB7gU,EAAK2vV,EAAMl7V,YAAyB,IAAPuL,OAAgB,EAASA,EAAG6gU,QAAU8uB,EAAM78J,IAEvF,QAAkB,UAAd68J,EAAMtvM,KAAqBwgL,GAAUA,EAAMtvT,QAG7B,aAAdo+U,EAAMtvM,KAGHnjF,EAAS,CAAC,OAAQ,WAAY,SAAU,QAAS,MAAO,MAAO,UAAqB,OAAV2jQ,QAA4B,IAAVA,OAAmB,EAASA,EAAMtvT,QAOzI,SAAS2hW,GAAUvjB,GACf,GAAKA,EAAMl7V,KAAX,CAMA,IAAI0+W,EAAuBxjB,EAAMl7V,KACjC,GAAI,UAAW0+W,EACX,OAAOA,EAAqBp7P,MAEhC,GAAK43O,EAAMl7V,KAAK2xU,WAGhB,OAAOz5T,EAAKgjV,EAAMl7V,KAAK2xU,YAAY,SAAUpiV,GAAK,MAAkB,UAAXA,EAAE0T,SAE/D,SAAS07W,GAAUzjB,GACf,IAAI3vV,EAAIsP,EACJyoG,EAAQm7P,GAAUvjB,GACtB,GAAI53O,EACA,MAAO,CAAEpvH,MAAOovH,EAAMpvH,OAE1B,IAAI0hD,EAASgpU,GAAgB1jB,GACzB7qR,GAAmB,OAAXz6B,QAA8B,IAAXA,OAAoB,EAASA,EAAOy6B,OAAS,QAC5E,IAAuC,QAAjC9kE,EAAK2vV,EAAM1P,wBAAqC,IAAPjgV,OAAgB,EAASA,EAAG6jW,YAAc/+R,KAAQ6qR,EAAM1P,iBAAiB4jB,UAAW,CAC/H,IAAIyP,EAAqB3jB,EAAM1P,iBAAiB4jB,UAChD,MAAO,CAAEl7W,MAAO2qX,EAAmBxuS,IAEvC,OAA2B,QAArBx1D,EAAKqgV,EAAMl7V,YAAyB,IAAP6a,OAAgB,EAASA,EAAGwxT,WAAa,UAAW6uB,EAAMl7V,KAAKqsU,SACvF,CAAEn4U,MAAOgnW,EAAMl7V,KAAKqsU,SAASn4U,YADxC,EAKJ,SAAS4qX,GAAgB5jB,GACrB,OAAI5rW,MAAM21E,QAAQi2R,GACPA,EAEP5rW,MAAM21E,QAAQi2R,EAAM/2P,UACb+2P,EAAM/2P,SAGb+2P,EAAM1P,kBAAoBl8V,MAAM21E,QAAQi2R,EAAM1P,iBAAiBrnP,UACxD+2P,EAAM1P,iBAAiBrnP,SAE3B,GAEX,SAAS46Q,GAAe7jB,GACpB,IAAK5rW,MAAM21E,QAAQi2R,SAA+BplU,IAArB6oV,GAAUzjB,GACnC,MAAO,CAACA,GAEZ,IAAI/2P,EAAW26Q,GAAgB5jB,GAC/B,OAAO/2P,EAASxiF,QAAO,SAAU2tS,EAAO/xJ,GACpC,IAAIyhN,EAAaD,GAAexhN,GAIhC,OAHIyhN,EAAW/tX,QACXq+T,EAAM15T,KAAKjC,MAAM27T,EAAO0vD,GAErB1vD,IACR,IAGP,SAASsvD,GAAgB1jB,GAErB,OAAKA,EAAM1P,iBAGJ0P,EAAM1P,iBAAiB18F,KAAKt9P,QAAQ8xH,MAFhC,KAKf,SAAS27P,GAAoBv0W,EAAKghE,EAAW4gC,GAEzC,GAAI7sB,EAAkB/0E,EAAIghE,IACtBhhE,EAAIghE,GAAa,CAAC4gC,OADtB,CAKA,GAAIw5C,EAAWp7I,EAAIghE,KAAehhE,EAAIghE,GAAW41E,IAAK,CAClD,IAAI49N,EAAUx0W,EAAIghE,GAKlB,OAJAwzS,EAAQ59N,IAAMhyJ,MAAM21E,QAAQi6S,EAAQ59N,KAAO49N,EAAQ59N,IAAM,CAAC49N,EAAQ59N,UAC7D74E,EAASy2S,EAAQ59N,IAAKh1C,IACvB4yQ,EAAQ59N,IAAI1rJ,KAAK02G,IAIzB,GAAIw5C,EAAWp7I,EAAIghE,IAAa,CAC5B,IAAI+hF,EAAO/iJ,EAAIghE,GACfhhE,EAAIghE,GAAa,CAAC+hF,GAElBn+J,MAAM21E,QAAQv6D,EAAIghE,MAAgBjD,EAAS/9D,EAAIghE,GAAY4gC,IAC3D5hG,EAAIghE,GAAW91E,KAAK02G,IAI5B,SAAS6yQ,GAAsB5hN,EAAM7xF,EAAW4gC,GAEvCixD,EAAKv9J,OACNu9J,EAAKv9J,KAAO,IAEZy/E,EAAkB89E,EAAKv9J,KAAK8sU,MAC5BvvK,EAAKv9J,KAAK8sU,GAAK,IAEnBmyC,GAAoB1hN,EAAKv9J,KAAK8sU,GAAIphQ,EAAW4gC,GAGjD,SAAS8yQ,GAAyB7hN,EAAM7xF,EAAW4gC,GAE1CixD,EAAKiuL,mBAILjuL,EAAKiuL,iBAAiB9xN,YACvB6jC,EAAKiuL,iBAAiB9xN,UAAY,IAEtCulP,GAAoB1hN,EAAKiuL,iBAAiB9xN,UAAWhuD,EAAW4gC,IAEpE,SAAS+yQ,GAAiBnkB,EAAOxvR,EAAW4gC,GACpC4uP,EAAM1P,iBACN4zB,GAAyBlkB,EAAOxvR,EAAW4gC,GAG/C6yQ,GAAsBjkB,EAAOxvR,EAAW4gC,GAG5C,SAASgzQ,GAAkBpkB,EAAO53O,GAC9B,IAAI/3G,EAEJ,GAAI2vV,EAAM1P,iBAAkB,CACxB,IAAI+zB,GAAWX,GAAgB1jB,IAAU,CAAE1kV,MAAO,UAAWA,MAC7D,OAAO+oW,EAGX,OAA6E,QAAxEh0W,EAAe,OAAV+3G,QAA4B,IAAVA,OAAmB,EAASA,EAAMgzK,iBAA8B,IAAP/qR,OAAgB,EAASA,EAAGwuW,MACtG,SAGPyE,GAAYtjB,GACL,QAEJ,SAEX,SAASskB,GAAWjiN,GAChB,OAAO90F,EAAS,CAAC,QAAS,SAAU,YAAa80F,EAAK3R,KAkB1D,SAAS6zN,GAAoBvkB,GACzB,IAAI3vV,EACA6gU,EAA8B,QAArB7gU,EAAK2vV,EAAMl7V,YAAyB,IAAPuL,OAAgB,EAASA,EAAG6gU,MAClEimC,EAAQ,GACZ,OAAKjmC,GAEc,UAAfA,EAAMtvT,MAAoBg9V,EAAcG,kBAAkB,WAC1D5H,EAAMxkK,MAAQ,CAAC,aAAcu+H,IAE7BA,EAAMngU,SAAW6tW,EAAcG,kBAAkB,WACjD5H,EAAMnmW,MAAQkgU,EAAMngU,SAEpBmgU,EAAMypB,WAAa,GAAKikB,EAAcG,kBAAkB,SACxD5H,EAAM5iT,IAAM28Q,EAAMypB,WAElBzpB,EAAMszC,WAAa,GAAK5F,EAAcG,kBAAkB,SACxD5H,EAAMl9T,IAAMi3R,EAAMszC,WAEH,WAAftzC,EAAMtvT,OACFk8V,EAAY5sC,EAAMj3R,MAAQ2kU,EAAcG,kBAAkB,eAC1D5H,EAAMsN,UAAY3nV,OAAOo0S,EAAMj3R,MAE/B6jU,EAAY5sC,EAAM38Q,MAAQqqT,EAAcG,kBAAkB,eAC1D5H,EAAMuN,UAAY5nV,OAAOo0S,EAAM38Q,OAGhC4iT,GArBIA,EAuBf,SAASwN,GAAa3kB,GAClB,IAAI3vV,EACAu0W,EAAW,CAAC,QAAS,SAAU,YAC/B1zC,EAA8B,QAArB7gU,EAAK2vV,EAAMl7V,YAAyB,IAAPuL,OAAgB,EAASA,EAAG6gU,MACtE,IAAK3jQ,EAASq3S,EAAU5kB,EAAMtvM,OAASwgL,EACnC,MAAO,GAEX,IAAIimC,EAAQ,GAIZ,MAHI,aAAcjmC,IAA4B,IAAnBA,EAAMjiK,UAAsB2vM,EAAcG,kBAAkB,cACnF5H,EAAMloM,SAA0B,aAAfiiK,EAAMtvT,MAAsB,EAAC,IAE9C0hW,GAAYtjB,GACLwf,EAAehqX,EAASA,EAAS,GAAI2hX,GAAQoN,GAAoBvkB,KAErEwf,EAAerI,GAE1B,SAAS0N,GAAkB95Q,EAAS+5Q,GAChC,OAAI/5Q,EAAQitO,aAAa/mJ,QACdlmF,EAAQitO,aAAa/mJ,QAAQ6zL,IAAc,GAE/C/5Q,EAAQ+lO,OAAO7/I,SAAW,GAMrC,SAAS+mL,GAAejwQ,EAAK/uG,GAEzB,QAAK+uG,EAAIg9Q,mBAAoBh9Q,EAAIqrP,eAI5BuqB,EAAW51Q,EAAI/uG,MAAOA,KAAU+uG,EAAIi9Q,iBAAiBjvX,YAItDgyG,EAAIk9Q,mBAIHl9Q,EAAIrzD,kBAAyB9Z,IAAV5hC,IAK5B,SAASksX,GAAoBn9Q,GACzB,OAAOvyG,EAASA,EAAS,GAAIuyG,EAAInM,OAAQ,CAAEh9D,OAAQmpE,EAAInpE,OAAQ2yS,QAASxpO,EAAIwpO,QAASmvC,YAAa34Q,EAAI24Q,YAAajtS,MAAO,WAAc,OAAOs0B,EAAIt0B,SAAY2kS,SAAU,WAEjK,IADA,IAAItxR,EAAO,GACFklB,EAAK,EAAGA,EAAKl2G,UAAUC,OAAQi2G,IACpCllB,EAAKklB,GAAMl2G,UAAUk2G,GAEzB,OAAOjE,EAAIqwQ,SAAS3/W,MAAMsvG,EAAKjhB,IAChCq+R,UAAW,CACV,eAAgBp9Q,EAAInM,MAAMyiR,QAAU,OAAS,QAC7C,gBAAiBt2Q,EAAIwlB,WAAa,OAAS,QAC3C,oBAAqB,OAASxlB,EAAIptE,IACnCyqV,QAAS,CACRzqV,GAAI,OAASotE,EAAIptE,GACjB,YAAaotE,EAAInpE,OAAO7oC,OAAS,YAAc,SAG3D,SAASsvX,GAAe5V,EAAIz2W,GACnBy2W,EAAG/6T,cACJ+6T,EAAGjgT,aAAex2D,GAEtB,IAAIssX,EAActN,GAAevI,EAAIz2W,GAIrC,GAHAy2W,EAAGwV,kBAAmB,EACtBxV,EAAGz2W,MAAQA,EACXy2W,EAAGsV,kBAAmB,EACjBO,EAAL,CAGA,IAAIlN,EAAW,WACX,GAAI3I,EAAGrc,WAAaqc,EAAG7zQ,MAAM0iR,UACzB,OAAOiH,GAA4B9V,GAEvCA,EAAG+V,kBAEH/V,EAAG/6T,YACH0jU,IAGJ3I,EAAGf,MAAM,gBAAgB,WAAc,OAAO0J,QAElD,SAASqN,GAAmB19Q,GACxB,IAAI29Q,EAAW96N,EAAW7iD,EAAImjE,MAAQnjE,EAAImjE,KAAOo3M,EAAMv6Q,EAAImjE,MAC3D,OAAOw6M,EAAQ39Q,GAEnB,SAASw9Q,GAA4B9V,GACjC,IAAI1zI,EAAiB0zI,EAAG+V,iBAGxB,OADA/V,EAAGkW,mBAAqB5pJ,EACjBA,EAAeviO,MAAK,SAAUF,GAKjC,OAJIyiO,IAAmB0zI,EAAGkW,qBACtBlW,EAAGmW,YAAYtsX,GACfm2W,EAAGkW,wBAAqB/qV,GAErBthC,KAIf,SAASusX,GAAqBpW,GACrBA,EAAGqW,cACJrW,EAAGqW,YAAc,SAAU1sX,GACvBq2W,EAAGsW,UAAU3sX,GACbq2W,EAAGuW,SAAS,CAAE1jL,OAAO,EAAM87K,UAAU,MAG7C,IAAInjB,EAAUwU,EAAGqW,YACZrW,EAAGwW,aACJxW,EAAGwW,WAAa,WACZxW,EAAGuW,SAAS,CAAE5jB,SAAS,EAAM+b,WAAW,MAIhD,IAAI1oB,EAASga,EAAGwW,WACZC,EAAazW,EAAG0W,YAChBj7M,EAAOu6M,GAAmBhW,GAgB9B,OAdKyW,GAAczW,EAAG2W,eAAiB3W,EAAGzwG,WACtCknH,EAAalnH,GAAS,WAClBywG,EAAGj3B,WAAU,WACJi3B,EAAG4W,eACJd,GAA4B9V,GAEhCA,EAAG4W,eAAgB,OAExBn7M,EAAK8zF,UAAYywG,EAAGzwG,UAEvBywG,EAAG0W,YAAcD,EAEjBzW,EAAG2W,aAAe3W,EAAGzwG,UAElB,CAAEi8F,QAASA,EAASxF,OAAQA,EAAQywB,WAAYA,GAG3D,SAASI,GAAa7W,EAAIptM,GACtB,IAAIrpK,EAAQyqX,GAAUphN,GAEtBotM,EAAG8W,gBAAkB9W,EAAG8W,iBAAmBnC,GAAkB/hN,EAAMkhN,GAAUlhN,IAC7EgjN,GAAe5V,EAAc,OAAVz2W,QAA4B,IAAVA,OAAmB,EAASA,EAAMA,OACvE,IAAIqX,EAAKw1W,GAAqBpW,GAAKxU,EAAU5qV,EAAG4qV,QAASxF,EAASplV,EAAGolV,OAAQywB,EAAa71W,EAAG61W,WAC7F/B,GAAiB9hN,EAAMotM,EAAG8W,gBAAiBtrB,GAC3CkpB,GAAiB9hN,EAAM,OAAQozL,GAE/Bga,EAAGuV,iBAAiBxtX,SAAQ,SAAUw6F,GAClCmyR,GAAiB9hN,EAAMrwE,EAAKk0R,MAEhCzW,EAAG/6T,aAAc,EAGrB,IAAI8xU,GAAmB,EACvB,SAASC,KACL,IAAI7nV,EAAS,GACT8nV,EAAY,GACZC,EAAgB,CAChB/nV,OAAQA,EACR5lC,WAAO4hC,EACP8Z,aAAa,EACb8a,kBAAc50B,EACdghE,MAAOsiR,IACPwC,YAAa,GACbvqC,UAAU,EACVuwC,UAAWA,EACX/rV,GAAI,IAER,OAAOgsV,EAEX,IAAIC,GAAqB,WAAW,CAChC7+W,KAAM,qBACNo8U,OAAQ,CACJ0iC,cAAe,CACXnxR,KAAM,gBACNu7F,QAAS,WAIL,OAHKv8L,KAAK0pJ,OAAOrzC,QAAQ87Q,gBACrBnyX,KAAK0pJ,OAAOrzC,QAAQ87Q,cAAgBC,MAEjCpyX,KAAK0pJ,OAAOrzC,QAAQ87Q,iBAIvC18P,MAAO,CACH48P,IAAK,CACDnlW,KAAMvc,OACN4rL,QAAS,IAEblpL,KAAM,CACF6Z,KAAMvc,OACN4rL,QAAS,MAEb/lB,KAAM,CACFtpJ,KAAM,CAACvc,OAAQ21I,UACfi2C,QAAS,WACL,OAAO5lF,IAAY6/D,OAG3BisM,MAAO,CACHv1V,KAAM,CAAC3tB,OAAQoR,QACf4rL,QAAS,MAEbmiK,UAAW,CACPxxU,KAAMoqE,QACNilG,SAAS,GAEbouL,MAAO,CACHz9V,KAAMoqE,QACNilG,QAAS,WAAc,OAAO5lF,IAAYg0Q,QAE9CoB,YAAa,CACT7+V,KAAMoqE,QACNilG,QAAS,WAAc,OAAO5lF,IAAY+zQ,eAE9CpgH,SAAU,CACNp9O,KAAMkb,OACNm0J,QAAS,GAEbvgC,IAAK,CACD9uI,KAAMvc,OACN4rL,QAAS,QAEb+1L,KAAM,CACFplW,KAAMoqE,QACNilG,SAAS,GAEboiJ,SAAU,CACNzxT,KAAMoqE,QACNilG,SAAS,GAEb4vL,eAAgB,CACZj/V,KAAM3tB,OACNg9L,QAAS,WACL,MAAO,KAGfg2L,YAAa,CACTrlW,KAAMoqE,QACNilG,SAAS,IAGjBgnJ,MAAO,CACHk/B,MAAO,CACHt+Q,MAAM,EACNuY,QAAS,SAAUx9E,EAAKs8U,GACpBx7W,KAAKuwX,kBAAoBpC,GAAcjvV,EAAKs8U,MAIxDprW,KAAM2hX,GACNjkI,SAAU,CACN0kI,UAAW,WACP,IAAI/xX,EAAQT,KACZ,OAAOT,OAAOsD,KAAK7C,KAAKyyX,iBAAiB1gW,QAAO,SAAU0vJ,EAAKmiM,GAC3D,IAAIjpK,EAAOkxK,EAAgBprX,EAAMgyX,gBAAgB7O,IAAO7nW,KAAI,SAAU22W,GAClE,OAAOrJ,EAAUqJ,GAAOA,EAAIpJ,aAAeoJ,EAAInmV,MAAM,MAMzD,OAJAk1I,EAAIz7K,KAAKjC,MAAM09K,EAAKk5B,GACpBA,EAAK73M,SAAQ,SAAU6vX,GACnBC,GAAmBnyX,EAAOkyX,MAEvBlxM,IACR,KAEP6uM,iBAAkB,WACd,IAAI7vX,EAAQT,KACRk9U,EAAK6zC,GAAmB/wX,MAAMk9U,GAClC,OAAQA,GAAM,IAAInhU,KAAI,SAAUrX,GAC5B,MAAU,UAANA,EACOjE,EAAMoxX,gBAEVntX,MAGfm0H,WAAY,WACR,IAAI4pP,EAAQ3hX,EAASA,EAAS,GAAId,KAAK6yX,gBAAiB7yX,KAAKyyX,iBACzD55P,EAAat5H,OAAOsD,KAAK4/W,GAAOnvV,KAAK42V,EAAcE,eAEvD,OADApqX,KAAKknG,MAAMqzE,WAAa1hD,EACjBA,GAEXgkN,QAAS,WACL,IAAIpqK,EAAQ97D,IAAYkmO,QACxB,OAAOi2C,GAAgBrgN,EAAOzyK,KAAKknG,QAEvCurR,gBAAiB,WACb,OAAO3H,EAAe9qX,KAAKyiX,SAGnCz4B,QAAS,WACL,IAAIvpV,EAAQT,KACR+yX,EAAkB,WAClB,GAAKtyX,EAAMymG,MAAM0iR,UAAjB,CAGA,IAAIqC,EAAgBxrX,EAAMuyX,eAC1B,GAAI/G,EAAe,CACf,IAAIjrP,EAAW,GACXiyP,EAAgB,GAOpB,OANA1zX,OAAOsD,KAAKopX,GAAenpX,SAAQ,SAAU8gX,GACzC,IAAIrwR,EAAM04R,EAAcrI,KACxB5iP,EAASh7H,KAAKutF,GACd0/R,EAAcrP,GAAQrwR,UAE1B9yF,EAAMywX,YAAY,CAAEhnV,OAAQ82F,EAAUgrP,YAAaiH,EAAehH,cAAeA,IAGrFxrX,EAAMijX,aAEVmK,GAAUh/B,IAAI,gBAAiBkkC,GAC/B/yX,KAAK6uV,IAAI,sBAAsB,WAC3Bg/B,GAAUqF,KAAK,gBAAiBH,OAGxC/pO,OAAQ,SAAUxtC,GACd,IAAI/6G,EAAQT,KACZA,KAAKmzX,gBACL,IAAI9/Q,EAAMm9Q,GAAoBxwX,MAC1Bu0G,EAAW47Q,GAAkBnwX,KAAMqzG,GAEvC,GAAIrzG,KAAKuyX,YAAa,CAClB,IAAIa,EAASjE,GAAe56Q,GACxB6+Q,EAAO/xX,QACP+xX,EAAOtwX,SAAQ,SAAUiO,EAAO68E,GAC5B,IAAIjyE,EAAIsP,EAAIkL,EAAIC,EAAIC,EAAIC,EAExB,GAAKuiD,EAAS,CAAC,WAAY,SAAqF,QAA1E5tD,EAA2B,QAArBtP,EAAK5K,EAAMX,YAAyB,IAAPuL,OAAgB,EAASA,EAAG6gU,aAA0B,IAAPvxT,OAAgB,EAASA,EAAGiC,SAAS0gE,EAAM,GAAnK,CAGA,IAAIylS,EAAW18Q,IAAYi0Q,mBAAqBqF,GAAal/W,GAAS,GACjEo9W,GAAc1tX,EAAMoyX,eAAgBQ,KACrC5yX,EAAM8vX,kBAAmB,GAEzBX,GAAW7+W,KACXtQ,EAAMuxX,WAAwF,QAA1E57V,EAA2B,QAArBD,EAAKplB,EAAMX,YAAyB,IAAP+lB,OAAgB,EAASA,EAAGqmT,aAA0B,IAAPpmT,OAAgB,EAASA,EAAG/iB,QAAqF,QAA1EijB,EAA2B,QAArBD,EAAKtlB,EAAMX,YAAyB,IAAPimB,OAAgB,EAASA,EAAGmmT,aAA0B,IAAPlmT,OAAgB,EAASA,EAAG2P,KAE/PxlC,EAAMoyX,eAAiBQ,EACvBzB,GAAanxX,EAAOsQ,OAIhC,OAAO/Q,KAAKsyX,MAAQ/9Q,EAASlzG,QAAU,EAAIkzG,EAAS,GAAKiH,EAAEx7G,KAAKg8J,IAAKznD,IAEzEyvO,cAAe,WAEXhkV,KAAKmyX,cAAclmB,UAAUjsW,KAAKimC,KAEtConU,UAAW,WACPrtW,KAAKyhV,UAAW,GAEpBg6B,YAAa,WACTz7W,KAAKyhV,UAAW,GAEpBvmQ,QAAS,CACLo2S,SAAU,SAAUpqR,GAChB,IAAIzmG,EAAQT,KACZT,OAAOsD,KAAKqkG,GAAOpkG,SAAQ,SAAU0yQ,GACjC/0Q,EAAMymG,MAAMsuK,GAAQtuK,EAAMsuK,OAGlC67G,UAAW,SAAUzrX,GACjB,IAAItB,EAAQiqX,GAAoB3oX,GAChC5F,KAAKsE,MAAQA,EACbtE,KAAKknG,MAAMs9N,SAAW2pD,GAAcnuX,KAAK86D,aAAcx2D,IAE3Dy6E,MAAO,WACH,IAAIt+E,EAAQT,KACZA,KAAKkqC,OAAS,GACdlqC,KAAK86D,aAAe96D,KAAKsE,MACzB,IAAI4iG,EAAQsiR,IACZtiR,EAAMqzE,SAAWv6K,KAAK64H,WACtB74H,KAAKsxX,SAASpqR,GACdlnG,KAAKgsX,YAAc,GACnBhsX,KAAK8wX,iBACL9wX,KAAKixX,wBAAqB/qV,EAC1BlmC,KAAK2xX,eAAgB,EACrBjpV,YAAW,WACPjoC,EAAMkxX,eAAgB,IACvB3xX,KAAKsqQ,WAEZo5G,SAAU,WAEN,IADA,IAAItxR,EAAO,GACFklB,EAAK,EAAGA,EAAKl2G,UAAUC,OAAQi2G,IACpCllB,EAAKklB,GAAMl2G,UAAUk2G,GAEzB,OAAOtzG,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,OAAO+E,EAAY/E,MAAM,SAAU2b,GAI/B,OAHIy2E,EAAK/wF,OAAS,GACdrB,KAAKqxX,UAAUj/R,EAAK,IAEjB,CAAC,EAAcy+R,GAA4B7wX,cAI9D8wX,eAAgB,WACZ,OAAO9sX,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIyiX,EAAO79W,EACX,OAAOG,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EASD,OARArF,KAAKsxX,SAAS,CAAE12C,SAAS,IACzB6nC,EAAQ3hX,EAASA,EAAS,GAAId,KAAK6yX,gBAAiB7yX,KAAKyyX,iBACzDlzX,OAAO6uC,eAAeq0U,EAAO,kBAAmB,CAC5Cn+W,OAAO,EACP08J,UAAU,EACV3yH,YAAY,EACZC,cAAc,IAEX,CAAC,EAAao1U,EAAS1jX,KAAKsE,MAAOm+W,EAAO3hX,EAASA,EAAS,CAAEuS,KAAMrT,KAAKqT,MAAQrT,KAAKgyX,WAAasB,GAAatzX,OAAQ,CAAE2qX,MAAO3qX,KAAK2qX,MAAOoB,YAAa/rX,KAAK+rX,YAAaM,WAAYrsX,KAAKggD,YAAamsU,eAAgBnsX,KAAKmsX,mBAC1O,KAAK,EAYD,OAXAvnX,EAAS+W,EAAGrW,OACZtF,KAAKsxX,SAAS,CACV12C,SAAS,EACTooC,MAAOp+W,EAAOo+W,MACd2G,SAAU/kX,EAAOo+W,aAEG98U,IAApBthC,EAAO21K,UACPv6K,KAAKsxX,SAAS,CACV/2M,SAAU31K,EAAO21K,WAGlB,CAAC,EAAc31K,WAK1C2uX,UAAW,SAAUrpV,GACjBlqC,KAAKkxX,YAAY,CAAEhnV,OAAQA,EAAQ8hV,YAAa,MAEpDkF,YAAa,SAAUv1W,GACnB,IAAIuuB,EAASvuB,EAAGuuB,OAAQ8hV,EAAcrwW,EAAGqwW,YAAaC,EAAgBtwW,EAAGswW,cACzEjsX,KAAKkqC,OAASA,EACdlqC,KAAKgzX,eAAiB/G,EACtBjsX,KAAKgsX,YAAclrX,EAAS,GAAKkrX,GAAe,IAChDhsX,KAAKsxX,SAAS,CACVtO,OAAQ94U,EAAO7oC,OACfi5K,QAASpwI,EAAO7oC,OAChBsoX,UAAWz/U,EAAO7oC,OAClBw/H,SAAU32F,EAAO7oC,OACjBuoX,WAAW,EACXplD,SAAU2pD,GAAcnuX,KAAKsE,MAAOtE,KAAK86D,iBAGjDq4T,cAAe,WACXK,GAA2BxzX,OAE/ByzX,2BAA4B,WACxB,IAAIhR,EAAQ3hX,EAASA,EAAS,GAAId,KAAK6yX,gBAAiB7yX,KAAKyyX,iBACzD55P,EAAat5H,OAAOsD,KAAK4/W,GAAOnvV,KAAK42V,EAAcE,eACvD,OAAOvxP,MAInB,SAASi6P,GAAgBrgN,EAAOvrE,GAuB5B,IAtBA,IAAIu6E,EAAM,GACN5+K,EAAOtD,OAAOsD,KAAKqkG,GACnB7lG,EAASwB,EAAKxB,OACduhG,EAAU,SAAU1hG,GACpB,IAAIs0Q,EAAO3yQ,EAAK3B,GACZ+mJ,EAAawqB,GAASA,EAAM+iG,IAAUA,EACtClxQ,EAAQ4iG,EAAMsuK,GAClB,OAAI3lL,EAAkBvrF,GACX,WAEG,UAATkxQ,GAA6B,YAATA,GAAwBtuK,EAAM0iR,eAG9B,kBAAd3hO,EACPw5B,EAAIx5B,GAAa3jJ,EAEZ5E,MAAM21E,QAAQ4yE,IACnBA,EAAUnlJ,SAAQ,SAAU23M,GACxBh5B,EAAIg5B,GAAOn2M,MAPR,YAWNpD,EAAI,EAAGA,EAAIG,EAAQH,IACxB0hG,EAAQ1hG,GAEZ,OAAOugL,EAEX,SAAS6xM,GAAavY,GAClB,IAAIt4J,EAAYs4J,EAAGoX,cAAcuB,KAC7BC,EAAU,CACVlhN,MAAO,GACPrgI,OAAQ,IAEZ,OAAO2oU,EAAGyX,UAAUzgW,QAAO,SAAU0vJ,EAAKkxM,GACtC,OAAKlwK,EAAUkwK,IAGflxM,EAAIrvI,OAAOugV,GAAWlwK,EAAUkwK,GAASruX,MACzCm9K,EAAIhP,MAAMkgN,GAAWlwK,EAAUkwK,GAASt/W,KACjCouK,GAJIA,IAKZkyM,GAEP,SAASC,GAAU7Y,GACf,OAAIA,EAAGsX,IACItX,EAAGsX,IAEVtX,EAAG1nW,KACI0nW,EAAG1nW,KAEV0nW,EAAG90U,GACI80U,EAAG90U,GAEV80U,EAAGiX,UACIjX,EAAGiX,WAEdF,KACO,QAAUA,IAErB,SAAS0B,GAA2BzY,GAChC,IAAI8Y,EAAaD,GAAU7Y,GACvB90U,EAAK80U,EAAG90U,IAEP80U,EAAGt5B,UAAax7S,IAAO4tV,GAAc9Y,EAAGoX,cAAcuB,KAAKztV,KAI5DA,IAAO4tV,GAAc9Y,EAAGoX,cAAcuB,KAAKztV,KAAQ80U,GACnDA,EAAGoX,cAAclmB,UAAUhmU,GAE/B80U,EAAG90U,GAAK4tV,EACR9Y,EAAGoX,cAAc1jN,QAAQssM,IAE7B,SAASqX,KACL,MAAO,CACHsB,KAAM,GACNjlN,QAAS,SAAUssM,GACf/6W,KAAK0zX,KAAK3Y,EAAG90U,IAAM80U,GAEvB9O,UAAW,SAAUhmU,UACVjmC,KAAK0zX,KAAKztV,KAI7B,SAAS2sV,GAAmBv/Q,EAAKs/Q,EAASmB,QACpB,IAAdA,IAAwBA,GAAY,GACxC,IAAIrxK,EAAYpvG,EAAI8+Q,cAAcuB,KAIlC,GAHKrgR,EAAI0gR,eACL1gR,EAAI0gR,aAAe,KAElBtxK,EAAUkwK,IAAYmB,EACvB,OAAOzgR,EAAI2mQ,MAAM,gBAAgB,WAC7B4Y,GAAmBv/Q,EAAKs/Q,GAAS,OAGpCz8N,EAAW7iD,EAAI0gR,aAAapB,KAAalwK,EAAUkwK,KACpDt/Q,EAAI0gR,aAAapB,GAAWlwK,EAAUkwK,GAAS/sB,OAAO,SAAS,WAC3D,IAAIouB,EAAqB3gR,EAAIogR,6BACzBpgR,EAAInM,MAAM0iR,YACVv2Q,EAAIk9Q,kBAAmB,EACvBl9Q,EAAIqwQ,YAGJsQ,IAAuB3gR,EAAInM,MAAM0iR,WACjCv2Q,EAAIy9Q,qBAMpB,IAAImD,GAAmB,CACnB,CAAC,WAAY,SACb,CAAC,QAAS,QACV,CAAC,UAAW,QACZ,CAAC,YAAa,SACd,CAAC,QAAS,SACV,CAAC,UAAW,QACZ,CAAC,UAAW,QACZ,CAAC,YAAa,SACd,CAAC,UAAW,QACZ,CAAC,SAAU,SACX,CAAC,SAAU,SAEXC,GAAmB,EACvB,SAAS9jX,KACL,IAAIsjX,EAAO,GACPxpV,EAAS,GACTg9D,EAAQitR,KACR1yP,EAAS,GAETvnD,EAAY,GAChB,MAAO,CACHj0C,GAAI,GACJytV,KAAMA,EACNx5S,UAAWA,EACXhwC,OAAQA,EACRg9D,MAAOA,EACPu6B,OAAQA,GAGhB,SAAS2yP,KACL,MAAO,CACHjC,cAAenyX,MAGE,WAAW,CAChCqT,KAAM,qBACNg8U,QAAS+kC,GACT3kC,OAAQ,CACJ0iC,cAAe,CACXnxR,KAAM,gBACNu7F,QAAS,WACL,OAAKv8L,KAAK0pJ,OAAOrzC,QAAQ87Q,cAGlBnyX,KAAK0pJ,OAAOrzC,QAAQ87Q,cAFhB,QAMvB18P,MAAO,CACHumC,IAAK,CACD9uI,KAAMvc,OACN4rL,QAAS,QAEb81L,IAAK,CACDnlW,KAAMvc,OACN4rL,QAAS,WACL,MAAO,OAAS23L,OAGxB5B,KAAM,CACFplW,KAAMoqE,QACNilG,SAAS,GAEboiJ,SAAU,CACNzxT,KAAMoqE,QACNilG,SAAS,IAGjBnsL,KAAMA,GACNqvU,QAAS,WACL,IAAIh/U,EAAQT,KACZA,KAAKimC,GAAKjmC,KAAKqyX,IACfviJ,GAAS9vO,MACT,IAAIq0X,EAAW/pH,GAAS,SAAU3uP,GAC9B,IAAIuuB,EAASvuB,EAAGuuB,OAAQg9D,EAAQvrF,EAAGurF,MAAOu6B,EAAS9lH,EAAG8lH,OACtDhhI,EAAMypC,OAASA,EACfzpC,EAAMymG,MAAQA,EACdzmG,EAAMghI,OAASA,IAChB,IACHzhI,KAAK4lW,OAAO0uB,GAAsBD,IAEtChnB,UAAW,WACPv9H,GAAS9vO,OAEby7W,YAAa,WACTzsB,GAAWhvV,OAEfgkV,cAAe,WACXgL,GAAWhvV,OAEfgpJ,OAAQ,SAAUxtC,GACd,IAAIjH,EAAW47Q,GAAkBnwX,KAAMu0X,GAAiBv0X,OACxD,OAAOA,KAAKsyX,MAAQ/9Q,EAASlzG,QAAU,EAAIkzG,EAAS,GAAKiH,EAAEx7G,KAAKg8J,IAAK,CAAEkhL,GAAIl9U,KAAKm9U,YAAc5oO,IAElGr5B,QAAS,CACLuzF,QAAS,SAAU+lN,EAAYvnR,GAC3B,IAAItxF,OACS,IAATsxF,IAAmBA,EAAO,YACjB,aAATA,EAIJjtG,KAAK0zX,KAAO5yX,EAASA,EAAS,GAAId,KAAK0zX,OAAQ/3W,EAAK,GAAIA,EAAG64W,EAAWvuV,IAAMuuV,EAAY74W,IAHpF3b,KAAKk6E,UAAUl0E,KAAKwuX,IAK5BvoB,UAAW,SAAUhmU,EAAIgnE,GAErB,QADa,IAATA,IAAmBA,EAAO,YACjB,aAATA,EAAJ,CAQA,IAAIrf,EAAMyrE,EAAUr5J,KAAKk6E,WAAW,SAAUh0E,GAAK,OAAOA,EAAE+/B,KAAOA,MACtD,IAAT2nD,GACA5tF,KAAKk6E,UAAUs2B,OAAO5iB,EAAK,OAV/B,CACI,IAAI7qB,EAAW/iE,KAAK0zX,KAAKztV,GACzB,IAAK88B,EACD,OAEJ/iE,KAAK27W,QAAQ37W,KAAK0zX,KAAMztV,KAQhCwuV,iBAAkB,SAAU94W,GACxB,IAAIsP,QAAa,IAAPtP,EAAgB,GAAKA,GAAI4+V,OAAQA,OAAgB,IAAPtvV,GAAwBA,EAC5E,OAAOjnB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIkhG,EAAS+gB,EAAS9rF,EAAI+T,EAAQg9D,EAAOu6B,EACzC,OAAO18H,EAAY/E,MAAM,SAAUo2B,GAC/B,OAAQA,EAAG/wB,OACP,KAAK,EAAG,MAAO,CAAC,EAAajD,QAAQw/B,IAAIn7B,EAAe2rC,EAAOpyC,KAAK0zX,MAC3Dx3W,QAAO,SAAU9V,GAAK,OAAQA,EAAEu4U,YAChC5iU,KAAI,SAAUwpU,GAAO,OAAOA,EAAIg1B,EAAS,iBAAmB,cAAcz1W,MAAK,SAAUsB,GAAK,OAAOA,EAAE48W,YAAehjX,KAAKk6E,UAAUh+D,QAAO,SAAUhW,GAAK,OAAQA,EAAEy4U,YAAa5iU,KAAI,SAAUk+V,GAAO,OAAOA,EAAIyJ,SAAS,CAAEnJ,OAAQA,UAC9O,KAAK,EAOD,OANAr5Q,EAAU9qE,EAAG9wB,OACb28G,EAAU/gB,EAAQnjE,OAAM,SAAU33B,GAAK,OAAOA,KAC9C+vB,EAAKm+V,GAAqB3zX,KAAKX,MAAOkqC,EAAS/T,EAAG+T,OAAQg9D,EAAQ/wE,EAAG+wE,MAAOu6B,EAAStrG,EAAGsrG,OACxFzhI,KAAKkqC,OAASA,EACdlqC,KAAKknG,MAAQA,EACblnG,KAAKyhI,OAASA,EACP,CAAC,EAAc,CACdv3F,OAAQA,EACRg9D,MAAOA,EACPu6B,OAAQA,EACRxf,QAASA,YAMrCyhQ,SAAU,SAAU/nW,GAChB,IAAIsP,QAAa,IAAPtP,EAAgB,GAAKA,GAAI4+V,OAAQA,OAAgB,IAAPtvV,GAAwBA,EAC5E,OAAOjnB,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIiiH,EACJ,OAAOl9G,EAAY/E,MAAM,SAAUm2B,GAC/B,OAAQA,EAAG9wB,OACP,KAAK,EAAG,MAAO,CAAC,EAAarF,KAAKy0X,iBAAiB,CAAEla,OAAQA,KAC7D,KAAK,EAED,OADAt4P,EAAW9rF,EAAG7wB,OAAQ28G,QACf,CAAC,EAAcA,WAK1CyyQ,aAAc,SAAU58Q,GACpB,OAAO9zG,EAAUhE,UAAM,OAAQ,GAAQ,WACnC,IAAIiiH,EACJ,OAAOl9G,EAAY/E,MAAM,SAAU2b,GAC/B,OAAQA,EAAGtW,OACP,KAAK,EAAG,MAAO,CAAC,EAAarF,KAAK0jX,YAClC,KAAK,EAED,OADAzhQ,EAAUtmG,EAAGrW,OACR28G,GAAYnK,EAGV,CAAC,EAAcA,KAFX,CAAC,WAOhC/4B,MAAO,WACH,OAAOt4E,EAAe2rC,EAAOpyC,KAAK0zX,MAAO1zX,KAAKk6E,WAAWp3E,SAAQ,SAAUyiV,GAAO,OAAOA,EAAIxmQ,YAEjGw0S,UAAW,SAAUrpV,GACjB,IAAIzpC,EAAQT,KACZT,OAAOsD,KAAKqnC,GAAQpnC,SAAQ,SAAU8Y,GAClC,IAAImnD,EAAWtiE,EAAMizX,KAAK93W,GAC1B,GAAKmnD,EAAL,CAEA,IAAI4xT,EAAWzqV,EAAOtuB,IAAQ,GAC9B+4W,EAA+B,kBAAbA,EAAwB,CAACA,GAAYA,EACvD5xT,EAASwwT,UAAUoB,OAEvB30X,KAAKk6E,UAAUp3E,SAAQ,SAAU03E,GAC7BA,EAAS+4S,UAAUrpV,UAKnC,SAAS8kT,GAAW+rB,GACZA,EAAGoX,eACHpX,EAAGoX,cAAclmB,UAAU8O,EAAG90U,GAAI,YAG1C,SAAS6pM,GAASirI,GACVA,EAAGoX,eACHpX,EAAGoX,cAAc1jN,QAAQssM,EAAI,YAGrC,SAASwZ,GAAiBxZ,GACtB,OAAOj6W,EAASA,EAAS,GAAIi6W,EAAG7zQ,OAAQ,CAAEh9D,OAAQ6wU,EAAG7wU,OAAQu3F,OAAQs5O,EAAGt5O,OAAQiiP,SAAU3I,EAAG2I,SAAU+Q,iBAAkB1Z,EAAG0Z,iBAAkBG,OAAQ7Z,EAAG2Z,aAAcA,aAAc3Z,EAAG2Z,aAAc31S,MAAOg8R,EAAGh8R,QAGpN,SAASo1S,KACL,OAAOrzX,EAASA,EAAS,GAAI0oX,KAAgB,CAAExG,OAAO,EAAM2G,SAAS,IAEzE,SAAS2K,KAML,IALA,IAAIO,EAAMpuX,EAAe2rC,EAAOpyC,KAAK0zX,MAAO1zX,KAAKk6E,UAAUh+D,QAAO,SAAUhW,GAAK,OAAQA,EAAEy4U,aACvFz0S,EAAS,GACTg9D,EAAQitR,KACR1yP,EAAS,GACTpgI,EAASwzX,EAAIxzX,OACRH,EAAI,EAAGA,EAAIG,EAAQH,IAAK,CAC7B,IAAI65W,EAAK8Z,EAAI3zX,GAETxB,MAAM21E,QAAQ0lS,EAAG7wU,SACjBA,EAAO6wU,EAAG90U,IAAM80U,EAAG7wU,OACnBu3F,EAAOs5O,EAAG90U,IAAMnlC,EAAS,CAAEmlC,GAAI80U,EAAG90U,GAAI5yB,KAAM0nW,EAAG1nW,KAAM24W,YAAajR,EAAGiR,aAAejR,EAAG7zQ,SAI3Fh9D,EAASppC,EAASA,EAAS,GAAIopC,GAAS6wU,EAAG7wU,QAC3Cu3F,EAAS3gI,EAASA,EAAS,GAAI2gI,GAASs5O,EAAGt5O,SAM/C,OAJAwyP,GAAiBnxX,SAAQ,SAAU6Y,GAC/B,IAAI65P,EAAO75P,EAAG,GAAI7Z,EAAS6Z,EAAG,GAC9BurF,EAAMsuK,GAAQq/G,EAAI/yX,IAAQ,SAAUi5W,GAAM,OAAOA,EAAG7zQ,MAAMsuK,SAEvD,CAAEtrO,OAAQA,EAAQg9D,MAAOA,EAAOu6B,OAAQA,K;;;;;;ACt7DnD,IAAIqzP,EAAmB,CACrB,iBACA,WACA,kBACA,eACA,gBACA,WACA,kBACA,cACA,QACA,OACA,cACA,cACA,uBACA,wBACA,wBACA,2BACA,4BAOF,SAAS5/N,EAAM3hE,EAAKzkF,GACK,qBAAZ6nE,UACTA,QAAQu+E,KAAK,cAAgB3hE,GAEzBzkF,GACF6nE,QAAQu+E,KAAKpmJ,EAAIkqF,QAKvB,SAAS1yF,EAAOitF,EAAKzkF,GACI,qBAAZ6nE,UACTA,QAAQrwE,MAAM,cAAgBitF,GAE1BzkF,GACF6nE,QAAQrwE,MAAMwI,EAAIkqF,QAKxB,IAAI3jB,EAAU31E,MAAM21E,QAEpB,SAAS2D,EAAUl+D,GACjB,OAAe,OAARA,GAA+B,kBAARA,EAGhC,SAASm1E,EAAW/wD,GAClB,MAAsB,mBAARA,EAGhB,SAAS6wD,EAAU7wD,GACjB,MAAsB,kBAARA,EAGhB,IAAI3wB,EAAWhP,OAAOW,UAAUqO,SAC5BwmX,EAAgB,kBACpB,SAAS90R,EAAenlF,GACtB,OAAOvM,EAAS5N,KAAKma,KAASi6W,EAGhC,SAAS9nH,EAAQ/tO,GACf,OAAe,OAARA,QAAwBgH,IAARhH,EAGzB,SAAS4wD,EAAY5wD,GACnB,MAAsB,oBAARA,EAGhB,SAAS81V,IACP,IAAI5iS,EAAO,GAAIyO,EAAMz/F,UAAUC,OAC/B,MAAQw/F,IAAQzO,EAAMyO,GAAQz/F,UAAWy/F,GAEzC,IAAIw3F,EAAS,KACT98K,EAAS,KAiBb,OAhBoB,IAAhB62E,EAAK/wF,OACH23E,EAASoZ,EAAK,KAAO/c,EAAQ+c,EAAK,IACpC72E,EAAS62E,EAAK,GACc,kBAAZA,EAAK,KACrBimG,EAASjmG,EAAK,IAES,IAAhBA,EAAK/wF,SACS,kBAAZ+wF,EAAK,KACdimG,EAASjmG,EAAK,KAGZpZ,EAASoZ,EAAK,KAAO/c,EAAQ+c,EAAK,OACpC72E,EAAS62E,EAAK,KAIX,CAAEimG,OAAQA,EAAQ98K,OAAQA,GAGnC,SAAS05W,EAAYn6W,GACnB,OAAOR,KAAKS,MAAMT,KAAKC,UAAUO,IAGnC,SAASqpH,EAAQroH,EAAKsN,GACpB,GAAItN,EAAI9Z,OAAOonB,GACb,OAAOtN,EAIX,SAASk0K,EAAWl0K,GAClB,IAAI+0T,EAAM,GAEV,OADA/0T,EAAIhZ,SAAQ,SAAU8D,GAAK,OAAOiqU,EAAI7qU,KAAKY,MACpCiqU,EAGT,SAASh4P,EAAU/8D,EAAKsN,GACtB,SAAUtN,EAAIZ,QAAQkO,GAGxB,IAAItpB,EAAiBP,OAAOW,UAAUJ,eACtC,SAAS4/J,EAAQ5kJ,EAAKc,GACpB,OAAO9b,EAAea,KAAKma,EAAKc,GAGlC,SAASg1I,EAAOjrI,GAId,IAHA,IAAIuvW,EAAc9zX,UAEdo0E,EAASj2E,OAAOomB,GACXzkB,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CACzC,IAAIolE,EAAS4uT,EAAYh0X,GACzB,QAAeglC,IAAXogC,GAAmC,OAAXA,EAAiB,CAC3C,IAAI1qD,OAAM,EACV,IAAKA,KAAO0qD,EACNo5F,EAAOp5F,EAAQ1qD,KACbo9D,EAAS1S,EAAO1qD,IAClB45D,EAAO55D,GAAOg1I,EAAMp7E,EAAO55D,GAAM0qD,EAAO1qD,IAExC45D,EAAO55D,GAAO0qD,EAAO1qD,KAM/B,OAAO45D,EAGT,SAAS2/S,EAAYvuX,EAAGhH,GACtB,GAAIgH,IAAMhH,EAAK,OAAO,EACtB,IAAIw1X,EAAYp8S,EAASpyE,GACrByuX,EAAYr8S,EAASp5E,GACzB,IAAIw1X,IAAaC,EAsBV,OAAKD,IAAcC,GACjB1kX,OAAO/J,KAAO+J,OAAO/Q,GAtB5B,IACE,IAAI01X,EAAWjgT,EAAQzuE,GACnB2uX,EAAWlgT,EAAQz1E,GACvB,GAAI01X,GAAYC,EACd,OAAO3uX,EAAEvF,SAAWzB,EAAEyB,QAAUuF,EAAEm3B,OAAM,SAAUr5B,EAAGxD,GACnD,OAAOi0X,EAAWzwX,EAAG9E,EAAEsB,OAEpB,GAAKo0X,GAAaC,EAQvB,OAAO,EAPP,IAAIC,EAAQj2X,OAAOsD,KAAK+D,GACpB6uX,EAAQl2X,OAAOsD,KAAKjD,GACxB,OAAO41X,EAAMn0X,SAAWo0X,EAAMp0X,QAAUm0X,EAAMz3V,OAAM,SAAUniB,GAC5D,OAAOu5W,EAAWvuX,EAAEgV,GAAMhc,EAAEgc,OAMhC,MAAOlX,GAEP,OAAO,GAab,SAASgxX,EAAWC,GAClB,OAAOA,EACJzkX,QAAQ,KAAM,QACdA,QAAQ,KAAM,QACdA,QAAQ,KAAM,UACdA,QAAQ,KAAM,UAYnB,SAAS0kX,EAAar6W,GAQpB,OAPa,MAAVA,GACDhc,OAAOsD,KAAK0Y,GAAQzY,SAAQ,SAAU8Y,GACV,iBAAhBL,EAAOK,KACfL,EAAOK,GAAO85W,EAAWn6W,EAAOK,QAI/BL,EAKT,SAAS4xI,EAAQk5L,GACVA,EAAInmV,UAAUJ,eAAe,UAEhCP,OAAO6uC,eAAei4S,EAAInmV,UAAW,QAAS,CAC5CwB,IAAK,WAAkB,OAAO1B,KAAK61X,SAIvCxvC,EAAInmV,UAAU41X,GAAK,SAAUl6W,GAC3B,IAAIw2B,EAAS,GAAIyuD,EAAMz/F,UAAUC,OAAS,EAC1C,MAAQw/F,KAAQ,EAAIzuD,EAAQyuD,GAAQz/F,UAAWy/F,EAAM,GAErD,IAAIk1R,EAAO/1X,KAAKg2X,MAChB,OAAOD,EAAK70F,GAAGn9R,MAAMgyX,EAAM,CAAEn6W,EAAKm6W,EAAK19L,OAAQ09L,EAAKE,eAAgBj2X,MAAOwG,OAAQ4rC,KAGrFi0S,EAAInmV,UAAUg2X,IAAM,SAAUt6W,EAAKu6W,GACjC,IAAI/jV,EAAS,GAAIyuD,EAAMz/F,UAAUC,OAAS,EAC1C,MAAQw/F,KAAQ,EAAIzuD,EAAQyuD,GAAQz/F,UAAWy/F,EAAM,GAErD,IAAIk1R,EAAO/1X,KAAKg2X,MAChB,OAAOD,EAAKK,IAAIryX,MAAMgyX,EAAM,CAAEn6W,EAAKm6W,EAAK19L,OAAQ09L,EAAKE,eAAgBj2X,KAAMm2X,GAAS3vX,OAAQ4rC,KAG9Fi0S,EAAInmV,UAAUm2X,IAAM,SAAUz6W,EAAKy8K,GACjC,IAAI09L,EAAO/1X,KAAKg2X,MAChB,OAAOD,EAAKO,IAAI16W,EAAKm6W,EAAK19L,OAAQ09L,EAAKE,eAAgB59L,IAGzDguJ,EAAInmV,UAAUy4L,GAAK,SAAUr0L,GAC3B,IAAIihV,EAEAnzP,EAAO,GAAIyO,EAAMz/F,UAAUC,OAAS,EACxC,MAAQw/F,KAAQ,EAAIzO,EAAMyO,GAAQz/F,UAAWy/F,EAAM,GACnD,OAAQ0kP,EAAMvlV,KAAKg2X,OAAOr2X,EAAEoE,MAAMwhV,EAAK,CAAEjhV,GAAQkC,OAAQ4rF,KAG3Di0P,EAAInmV,UAAUq2X,GAAK,SAAUjyX,GAC3B,IAAIihV,EAEAnzP,EAAO,GAAIyO,EAAMz/F,UAAUC,OAAS,EACxC,MAAQw/F,KAAQ,EAAIzO,EAAMyO,GAAQz/F,UAAWy/F,EAAM,GACnD,OAAQ0kP,EAAMvlV,KAAKg2X,OAAO70X,EAAE4C,MAAMwhV,EAAK,CAAEjhV,GAAQkC,OAAQ4rF,KAY7D,SAASokS,EAAaC,GAGpB,SAASzsC,IACHhqV,OAASA,KAAK+pJ,OAAS/pJ,KAAKgqJ,SAAS0sO,kBAAoB12X,KAAK8/U,KAChE9/U,KAAK8/U,IAAIl1Q,aAAa,eAAgB5qE,KAAKgqJ,SAAS0sO,kBAIxD,YARgB,IAAXD,IAAoBA,GAAS,GAQ3BA,EACH,CAAEzsC,QAASA,GACX,CACF3/L,aAAc,WACZ,IAAIzoJ,EAAU5B,KAAKgqJ,SAGnB,GAFApoJ,EAAQm0X,KAAOn0X,EAAQm0X,OAAUn0X,EAAQ+0X,cAAgB/0X,EAAQg1X,OAAU,GAAK,MAE5Eh1X,EAAQm0X,KACV,GAAIn0X,EAAQm0X,gBAAgBc,GAAS,CAEnC,GAAKj1X,EAAQ+0X,cAAgB/0X,EAAQg1X,OACnC,IACE,IAAIE,EAAiBl1X,EAAQm0X,MAAQn0X,EAAQm0X,KAAKvT,SAAW5gX,EAAQm0X,KAAKvT,SAAW,GACjFqT,EAAQj0X,EAAQ+0X,cAAgB/0X,EAAQg1X,OAC5Cf,EAAM/yX,SAAQ,SAAUi0X,GACtBD,EAAiBlmO,EAAMkmO,EAAgBx8W,KAAKS,MAAMg8W,OAEpDx3X,OAAOsD,KAAKi0X,GAAgBh0X,SAAQ,SAAUu1L,GAC5Cz2L,EAAQm0X,KAAKiB,mBAAmB3+L,EAAQy+L,EAAez+L,OAEzD,MAAO3zL,GACH,EAKR1E,KAAK61X,MAAQj0X,EAAQm0X,KACrB/1X,KAAKi3X,aAAej3X,KAAK61X,MAAMqB,qBAC1B,GAAIj3R,EAAcr+F,EAAQm0X,MAAO,CACtC,IAAIoB,EAAWn3X,KAAK+pJ,OAAS/pJ,KAAK+pJ,MAAMisO,OAASh2X,KAAK+pJ,MAAMisO,iBAAiBa,GACzE72X,KAAK+pJ,MAAMisO,MACX,KAcJ,GAZImB,IACFv1X,EAAQm0X,KAAKtuL,KAAOznM,KAAK+pJ,MACzBnoJ,EAAQm0X,KAAKqB,UAAYD,EAASC,UAClCx1X,EAAQm0X,KAAKsB,eAAiBF,EAASE,eACvCz1X,EAAQm0X,KAAKuB,uBAAyBH,EAASG,uBAC/C11X,EAAQm0X,KAAKwB,sBAAwBJ,EAASI,sBAC9C31X,EAAQm0X,KAAKyB,mBAAqBL,EAASK,mBAC3C51X,EAAQm0X,KAAK0B,mBAAqBN,EAASM,mBAC3C71X,EAAQm0X,KAAK2B,yBAA2BP,EAASO,0BAI9C91X,EAAQ+0X,cAAgB/0X,EAAQg1X,OACnC,IACE,IAAIe,EAAmB/1X,EAAQm0X,MAAQn0X,EAAQm0X,KAAKvT,SAAW5gX,EAAQm0X,KAAKvT,SAAW,GACnFoV,EAAUh2X,EAAQ+0X,cAAgB/0X,EAAQg1X,OAC9CgB,EAAQ90X,SAAQ,SAAUi0X,GACxBY,EAAmB/mO,EAAM+mO,EAAkBr9W,KAAKS,MAAMg8W,OAExDn1X,EAAQm0X,KAAKvT,SAAWmV,EACxB,MAAOjzX,GACH,EAMR,IAAI6gV,EAAM3jV,EAAQm0X,KACd8B,EAAiBtyC,EAAIsyC,eACrBA,GAAkB53R,EAAc43R,KAClCj2X,EAAQm0X,KAAKvT,SAAW5xN,EAAMhvJ,EAAQm0X,KAAKvT,SAAUqV,IAGvD73X,KAAK61X,MAAQ,IAAIgB,GAAQj1X,EAAQm0X,MACjC/1X,KAAKi3X,aAAej3X,KAAK61X,MAAMqB,sBAELhxV,IAAtBtkC,EAAQm0X,KAAK+B,MAAwBl2X,EAAQm0X,KAAK+B,QACpD93X,KAAK+3X,eAAiB/3X,KAAKg2X,MAAMgC,eAG/Bb,GACFA,EAASc,2BAA2Bj4X,KAAK61X,YAGvC,OAIG71X,KAAK+pJ,OAAS/pJ,KAAK+pJ,MAAMisO,OAASh2X,KAAK+pJ,MAAMisO,iBAAiBa,GAEvE72X,KAAK61X,MAAQ71X,KAAK+pJ,MAAMisO,MACfp0X,EAAQi9C,QAAUj9C,EAAQi9C,OAAOm3U,OAASp0X,EAAQi9C,OAAOm3U,iBAAiBa,KAEnF72X,KAAK61X,MAAQj0X,EAAQi9C,OAAOm3U,QAIhCnyC,YAAa,WACX,IAAIjiV,EAAU5B,KAAKgqJ,SACnBpoJ,EAAQm0X,KAAOn0X,EAAQm0X,OAAUn0X,EAAQ+0X,cAAgB/0X,EAAQg1X,OAAU,GAAK,MAE5Eh1X,EAAQm0X,MACNn0X,EAAQm0X,gBAAgBc,IAIjB52R,EAAcr+F,EAAQm0X,SAF/B/1X,KAAK61X,MAAMqC,sBAAsBl4X,MACjCA,KAAKm4X,cAAe,IASbn4X,KAAK+pJ,OAAS/pJ,KAAK+pJ,MAAMisO,OAASh2X,KAAK+pJ,MAAMisO,iBAAiBa,IAG9Dj1X,EAAQi9C,QAAUj9C,EAAQi9C,OAAOm3U,OAASp0X,EAAQi9C,OAAOm3U,iBAAiBa,MAFnF72X,KAAK61X,MAAMqC,sBAAsBl4X,MACjCA,KAAKm4X,cAAe,IAOxBnuC,QAASA,EAEThG,cAAe,WACb,GAAKhkV,KAAK61X,MAAV,CAEA,IAAIn+S,EAAO13E,KACXA,KAAK8jV,WAAU,WACTpsQ,EAAKygT,eACPzgT,EAAKm+S,MAAMuC,wBAAwB1gT,UAC5BA,EAAKygT,cAGVzgT,EAAKu/S,eACPv/S,EAAKu/S,eACLv/S,EAAKm+S,MAAMwC,mBACJ3gT,EAAKu/S,cAGVv/S,EAAKqgT,iBACPrgT,EAAKqgT,wBACErgT,EAAKqgT,sBAStB,IAAIO,EAAyB,CAC3BjlX,KAAM,OACNm2I,YAAY,EACZ/zB,MAAO,CACLumC,IAAK,CACH9uI,KAAM,CAACvc,OAAQ2mF,QAAS/3F,QACxBg9L,QAAS,QAEXnvG,KAAM,CACJlgE,KAAMvc,OACN4pK,UAAU,GAEZ8d,OAAQ,CACNnrK,KAAMvc,QAER4nX,OAAQ,CACNrrW,KAAM,CAACxtB,MAAOH,UAGlBypJ,OAAQ,SAAiBxtC,EAAG+pO,GAC1B,IAAIn1U,EAAOm1U,EAAIn1U,KACXyuC,EAAS0mS,EAAI1mS,OACb42E,EAAQ8vN,EAAI9vN,MACZ+qO,EAAQjb,EAAIib,MAEZw1B,EAAQn3U,EAAOm3U,MACnB,GAAKA,EAAL,CAOA,IAAI5oS,EAAOqoC,EAAMroC,KACbirG,EAAS5iE,EAAM4iE,OACfkgM,EAAS9iQ,EAAM8iQ,OACfh9W,EAASilV,IACTjsP,EAAWyhR,EAAM90X,EACnBksF,EACAirG,EACAmgM,EAAoBj9W,IAAWg9W,EAC3BE,EAAgBl9W,EAAOghL,QAASg8L,GAChCh9W,GAGFygJ,EAASvmC,EAAMumC,MAAqB,IAAdvmC,EAAMumC,MAA+B,IAAdvmC,EAAMumC,IAAgBvmC,EAAMumC,IAAM,OACnF,OAAOA,EAAMxgD,EAAEwgD,EAAK5rJ,EAAMmkG,GAAYA,KAI1C,SAASikR,EAAqBj9W,GAC5B,IAAIklE,EACJ,IAAKA,KAAQllE,EACX,GAAa,YAATklE,EAAsB,OAAO,EAEnC,OAAO6W,QAAQ7W,GAGjB,SAASg4S,EAAiBlkR,EAAUgkR,GAClC,IAAIh9W,EAASg9W,EAASG,EAAuBH,GAAU,GAEvD,IAAKhkR,EAAY,OAAOh5F,EAGxBg5F,EAAWA,EAASr4F,QAAO,SAAUmgW,GACnC,OAAOA,EAAMrgN,KAA6B,KAAtBqgN,EAAMppR,KAAKv3E,UAGjC,IAAIi9W,EAAapkR,EAASx2E,MAAM66V,GAKhC,OAAOrkR,EAASxiF,OACd4mW,EAAaE,EAAmBC,EAChCv9W,GAIJ,SAASm9W,EAAwBH,GAK/B,OAAO74X,MAAM21E,QAAQkjT,GACjBA,EAAOxmW,OAAO+mW,EAAkB,IAChCv5X,OAAOwB,OAAO,GAAIw3X,GAGxB,SAASM,EAAkBt9W,EAAQ8gW,GAIjC,OAHIA,EAAMjsW,MAAQisW,EAAMjsW,KAAKosU,OAAS6/B,EAAMjsW,KAAKosU,MAAMu8C,QACrDx9W,EAAO8gW,EAAMjsW,KAAKosU,MAAMu8C,OAAS1c,GAE5B9gW,EAGT,SAASu9W,EAAkBv9W,EAAQ8gW,EAAO/pU,GAExC,OADA/2B,EAAO+2B,GAAS+pU,EACT9gW,EAGT,SAASq9W,EAAwBttB,GAC/B,OAAOh0Q,QAAQg0Q,EAAMl7V,MAAQk7V,EAAMl7V,KAAKosU,OAAS8uB,EAAMl7V,KAAKosU,MAAMu8C,OAKpE,IAgMI1yC,EAhMA2yC,EAAkB,CACpB3lX,KAAM,SACNm2I,YAAY,EACZ/zB,MAAO,CACLumC,IAAK,CACH9uI,KAAM,CAACvc,OAAQ2mF,QAAS/3F,QACxBg9L,QAAS,QAEXj4L,MAAO,CACL4oB,KAAMkb,OACNmyI,UAAU,GAEZogB,OAAQ,CACNztK,KAAM,CAACvc,OAAQpR,SAEjB84L,OAAQ,CACNnrK,KAAMvc,SAGVq4I,OAAQ,SAAiBxtC,EAAG+pO,GAC1B,IAAI9vN,EAAQ8vN,EAAI9vN,MACZ52E,EAAS0mS,EAAI1mS,OACbzuC,EAAOm1U,EAAIn1U,KAEX2lX,EAAOl3U,EAAOm3U,MAElB,IAAKD,EAIH,OAAO,KAGT,IAAIn6W,EAAM,KACNha,EAAU,KAEVmuF,EAAS0lC,EAAMklE,QACjB/+K,EAAM65G,EAAMklE,OACH3hH,EAASy8C,EAAMklE,UACpBllE,EAAMklE,OAAO/+K,MACfA,EAAM65G,EAAMklE,OAAO/+K,KAIrBha,EAAUrC,OAAOsD,KAAK4yH,EAAMklE,QAAQ5oK,QAAO,SAAU0vJ,EAAKhhG,GACxD,IAAI3lE,EAEJ,OAAI+9D,EAASi8S,EAAkBr0S,GACtBlhF,OAAOwB,OAAO,GAAI0gL,GAAO3mK,EAAM,GAAIA,EAAI2lE,GAAQg1C,EAAMklE,OAAOl6G,GAAO3lE,IAErE2mK,IACN,OAGL,IAAI4W,EAAS5iE,EAAM4iE,QAAU09L,EAAK19L,OAC9Bv6I,EAAQi4U,EAAKkD,KAAKxjQ,EAAMnxH,MAAO+zL,EAAQz8K,EAAKha,GAE5CwwC,EAAS0L,EAAM/hC,KAAI,SAAUy1K,EAAMl/I,GACrC,IAAIx3B,EAEA2vU,EAAOr6U,EAAKu9U,aAAev9U,EAAKu9U,YAAYn8J,EAAKtkK,MACrD,OAAOu9T,EAAOA,GAAO3vU,EAAM,GAAIA,EAAI02K,EAAKtkK,MAAQskK,EAAKltL,MAAOwW,EAAIw3B,MAAQA,EAAOx3B,EAAIgjC,MAAQA,EAAOhjC,IAAS02K,EAAKltL,SAG9G03J,EAASvmC,EAAMumC,MAAqB,IAAdvmC,EAAMumC,MAA+B,IAAdvmC,EAAMumC,IAAgBvmC,EAAMumC,IAAM,OACnF,OAAOA,EACHxgD,EAAEwgD,EAAK,CACPwgL,MAAOpsU,EAAKosU,MACZ,MAASpsU,EAAK,SACd+rU,YAAa/rU,EAAK+rU,aACjB/pS,GACDA,IAMR,SAASiR,EAAMmxG,EAAI6wF,EAASimH,GACrB4tB,EAAO1kO,EAAI82M,IAEhBtqW,EAAEwzJ,EAAI6wF,EAASimH,GAGjB,SAASjyP,EAAQm7C,EAAI6wF,EAASimH,EAAO6tB,GACnC,GAAKD,EAAO1kO,EAAI82M,GAAhB,CAEA,IAAIyqB,EAAOzqB,EAAMj1P,QAAQ2/Q,MACrBoD,EAAY5kO,EAAI82M,IACjB6pB,EAAW9vI,EAAQ/gP,MAAO+gP,EAAQrhM,WAClCmxU,EAAW3gO,EAAG6kO,eAAgBtD,EAAKuD,iBAAiBvD,EAAK19L,UAE5Dr3L,EAAEwzJ,EAAI6wF,EAASimH,IAGjB,SAAS5nB,EAAQlvL,EAAI6wF,EAASimH,EAAO6tB,GACnC,IAAIpe,EAAKzP,EAAMj1P,QACf,GAAK0kQ,EAAL,CAKA,IAAIgb,EAAOzqB,EAAMj1P,QAAQ2/Q,OAAS,GAC7B3wI,EAAQqhD,UAAU6yF,UAAaxD,EAAK2B,2BACvCljO,EAAGm6C,YAAc,IAEnBn6C,EAAGglO,SAAMtzV,SACFsuH,EAAG,OACVA,EAAGilO,aAAUvzV,SACNsuH,EAAG,WACVA,EAAG6kO,oBAAiBnzV,SACbsuH,EAAG,uBAbRU,EAAK,iDAgBT,SAASgkO,EAAQ1kO,EAAI82M,GACnB,IAAIyP,EAAKzP,EAAMj1P,QACf,OAAK0kQ,IAKAA,EAAGib,QACN9gO,EAAK,qDACE,IANPA,EAAK,kDACE,GAWX,SAASkkO,EAAa5kO,EAAI82M,GACxB,IAAIyP,EAAKzP,EAAMj1P,QACf,OAAOm+C,EAAGilO,UAAY1e,EAAGib,MAAM39L,OAGjC,SAASr3L,EAAGwzJ,EAAI6wF,EAASimH,GACvB,IAAIouB,EAAOC,EAEPr1X,EAAQ+gP,EAAQ/gP,MAEhBihV,EAAMq0C,EAAWt1X,GACjB8oF,EAAOm4P,EAAIn4P,KACXirG,EAASktJ,EAAIltJ,OACbjmG,EAAOmzP,EAAInzP,KACX+jS,EAAS5wC,EAAI4wC,OACjB,GAAK/oS,GAASirG,GAAWjmG,EAKzB,GAAKhF,EAAL,CAKA,IAAI2tR,EAAKzP,EAAMj1P,QAEbm+C,EAAGglO,IAAMhlO,EAAGm6C,YADA,MAAVwnL,GACyBuD,EAAQ3e,EAAGib,OAAO6D,GAAG91X,MAAM21X,EAAO,CAAEtsS,EAAM+oS,GAAS3vX,OAAQszX,EAAWzhM,EAAQjmG,MAE9EunS,EAAQ5e,EAAGib,OAAOh1X,EAAE+C,MAAM41X,EAAO,CAAEvsS,GAAO5mF,OAAQszX,EAAWzhM,EAAQjmG,KAElGoiE,EAAGilO,QAAU1e,EAAGib,MAAM39L,OACtB7jC,EAAG6kO,eAAiBte,EAAGib,MAAMsD,iBAAiBve,EAAGib,MAAM39L,aAXrDnjC,EAAK,4CALLA,EAAK,4BAmBT,SAAS0kO,EAAYt1X,GACnB,IAAI8oF,EACAirG,EACAjmG,EACA+jS,EAWJ,OATIpmS,EAASzrF,GACX8oF,EAAO9oF,EACE27F,EAAc37F,KACvB8oF,EAAO9oF,EAAM8oF,KACbirG,EAAS/zL,EAAM+zL,OACfjmG,EAAO9tF,EAAM8tF,KACb+jS,EAAS7xX,EAAM6xX,QAGV,CAAE/oS,KAAMA,EAAMirG,OAAQA,EAAQjmG,KAAMA,EAAM+jS,OAAQA,GAG3D,SAAS2D,EAAYzhM,EAAQjmG,GAC3B,IAAI72E,EAAS,GAOb,OALA88K,GAAU98K,EAAOvV,KAAKqyL,GAClBjmG,IAAS1yF,MAAM21E,QAAQ+c,IAAS6N,EAAc7N,KAChD72E,EAAOvV,KAAKosF,GAGP72E,EAKT,SAASmzV,EAASqrB,EAAMn4X,QACL,IAAZA,IAAqBA,EAAU,CAAE60X,QAAQ,IAO9C/nB,EAAQC,WAAY,EAEpBtoB,EAAM0zC,EAES1zC,EAAI9/T,SAAW6hB,OAAOi+S,EAAI9/T,QAAQnP,MAAM,KAAK,IAO5D+1I,EAAOk5L,GACPA,EAAIh0E,MAAMmkH,EAAY50X,EAAQ60X,SAC9BpwC,EAAIglB,UAAU,IAAK,CAAEhoT,KAAMA,EAAMg2D,OAAQA,EAAQqqO,OAAQA,IACzD2C,EAAI7zC,UAAU8lF,EAAuBjlX,KAAMilX,GAC3CjyC,EAAI7zC,UAAUwmF,EAAgB3lX,KAAM2lX,GAGpC,IAAIgB,EAAS3zC,EAAIrgS,OAAOi0U,sBACxBD,EAAOjE,KAAO,SAAUmE,EAAWC,GACjC,YAAoBj0V,IAAbi0V,EACHD,EACAC,GAMR,IAAIC,EAAgB,WAClBp6X,KAAKq6X,QAAU96X,OAAOY,OAAO,OAG/Bi6X,EAAcl6X,UAAUywQ,YAAc,SAAsBvkP,EAASgmB,GACnE,IAAKA,EACH,MAAO,CAAChmB,GAEV,IAAImtD,EAASv5E,KAAKq6X,QAAQjuW,GAK1B,OAJKmtD,IACHA,EAASx+D,EAAMqR,GACfpsB,KAAKq6X,QAAQjuW,GAAWmtD,GAEnB+gT,EAAQ/gT,EAAQnnC,IAKzB,IAAImoV,EAAsB,WACtBC,EAAuB,WAE3B,SAASz/W,EAAO4/K,GACd,IAAIphH,EAAS,GACT7O,EAAW,EAEXuoB,EAAO,GACX,MAAOvoB,EAAWiwH,EAAOt5L,OAAQ,CAC/B,IAAI8yO,EAAOx5C,EAAOjwH,KAClB,GAAa,MAATypK,EAAc,CACZlhJ,GACF1Z,EAAOvzE,KAAK,CAAEknB,KAAM,OAAQ5oB,MAAO2uF,IAGrCA,EAAO,GACP,IAAIp8D,EAAM,GACVs9M,EAAOx5C,EAAOjwH,KACd,WAAgBxkC,IAATiuM,GAA+B,MAATA,EAC3Bt9M,GAAOs9M,EACPA,EAAOx5C,EAAOjwH,KAEhB,IAAIioQ,EAAoB,MAATx+F,EAEXjnN,EAAOqtW,EAAoBjrX,KAAKunB,GAChC,OACA87S,GAAY6nD,EAAqBlrX,KAAKunB,GACpC,QACA,UACN0iD,EAAOvzE,KAAK,CAAE1B,MAAOuyB,EAAK3J,KAAMA,QACd,MAATinN,EAEkB,MAAvBx5C,EAAO,KACT1nG,GAAQkhJ,GAGVlhJ,GAAQkhJ,EAMZ,OAFAlhJ,GAAQ1Z,EAAOvzE,KAAK,CAAEknB,KAAM,OAAQ5oB,MAAO2uF,IAEpC1Z,EAGT,SAAS+gT,EAAS/gT,EAAQnnC,GACxB,IAAIqoV,EAAW,GACXnoV,EAAQ,EAERkkI,EAAO92K,MAAM21E,QAAQjjC,GACrB,OACA4mC,EAAS5mC,GACP,QACA,UACN,GAAa,YAATokI,EAAsB,OAAOikN,EAEjC,MAAOnoV,EAAQinC,EAAOl4E,OAAQ,CAC5B,IAAIm4E,EAAQD,EAAOjnC,GACnB,OAAQknC,EAAMtsD,MACZ,IAAK,OACHutW,EAASz0X,KAAKwzE,EAAMl1E,OACpB,MACF,IAAK,OACHm2X,EAASz0X,KAAKosC,EAAO6S,SAASu0B,EAAMl1E,MAAO,MAC3C,MACF,IAAK,QACU,UAATkyK,GACFikN,EAASz0X,KAAK,EAASwzE,EAAMl1E,QAM/B,MACF,IAAK,UACC,EAGJ,MAEJguC,IAGF,OAAOmoV,EAYT,IAAIC,EAAS,EACTC,EAAO,EACPC,EAAqB,EACrBC,GAAgB,EAGhBC,GAAc,EACdC,GAAU,EACVC,GAAe,EACfC,GAAW,EACXC,GAAc,EACdC,GAAkB,EAClBC,GAAkB,EAClBC,GAAa,EACbxpV,GAAQ,EAERypV,GAAmB,GAEvBA,GAAiBR,IAAe,CAC9B,GAAM,CAACA,IACP,MAAS,CAACG,GAAUP,GACpB,IAAK,CAACQ,IACN,IAAO,CAACG,KAGVC,GAAiBP,IAAW,CAC1B,GAAM,CAACA,IACP,IAAK,CAACC,IACN,IAAK,CAACE,IACN,IAAO,CAACG,KAGVC,GAAiBN,IAAgB,CAC/B,GAAM,CAACA,IACP,MAAS,CAACC,GAAUP,GACpB,EAAK,CAACO,GAAUP,GAChB,OAAU,CAACO,GAAUP,IAGvBY,GAAiBL,IAAY,CAC3B,MAAS,CAACA,GAAUP,GACpB,EAAK,CAACO,GAAUP,GAChB,OAAU,CAACO,GAAUP,GACrB,GAAM,CAACK,GAASJ,GAChB,IAAK,CAACK,GAAcL,GACpB,IAAK,CAACO,GAAaP,GACnB,IAAO,CAACU,GAAYV,IAGtBW,GAAiBJ,IAAe,CAC9B,IAAK,CAACC,GAAiBT,GACvB,IAAK,CAACU,GAAiBV,GACvB,IAAK,CAACQ,GAAaN,GACnB,IAAK,CAACG,GAASF,IACf,IAAOhpV,GACP,KAAQ,CAACqpV,GAAaR,IAGxBY,GAAiBH,IAAmB,CAClC,IAAK,CAACD,GAAaR,GACnB,IAAO7oV,GACP,KAAQ,CAACspV,GAAiBT,IAG5BY,GAAiBF,IAAmB,CAClC,IAAK,CAACF,GAAaR,GACnB,IAAO7oV,GACP,KAAQ,CAACupV,GAAiBV,IAO5B,IAAIa,GAAiB,kDACrB,SAASC,GAAW58K,GAClB,OAAO28K,GAAejsX,KAAKsvM,GAO7B,SAAS68K,GAAa9gX,GACpB,IAAI/T,EAAI+T,EAAI7K,WAAW,GACnBlQ,EAAI+a,EAAI7K,WAAW6K,EAAItZ,OAAS,GACpC,OAAOuF,IAAMhH,GAAY,KAANgH,GAAoB,KAANA,EAE7B+T,EADAA,EAAI4xB,MAAM,GAAI,GAQpB,SAASmvV,GAAiBjyN,GACxB,QAAWvjI,IAAPujI,GAA2B,OAAPA,EAAe,MAAO,MAE9C,IAAI32J,EAAO22J,EAAG35J,WAAW,GAEzB,OAAQgD,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACH,OAAO22J,EAET,KAAK,GACL,KAAK,GACL,KAAK,GACH,MAAO,QAET,KAAK,EACL,KAAK,GACL,KAAK,GACL,KAAK,IACL,KAAK,MACL,KAAK,KACL,KAAK,KACH,MAAO,KAGX,MAAO,QAST,SAASkyN,GAAevuS,GACtB,IAAIwuS,EAAUxuS,EAAK1xE,OAEnB,OAAuB,MAAnB0xE,EAAKt3C,OAAO,KAAc+mC,MAAMuQ,MAE7BouS,GAAUI,GAAWH,GAAYG,GAAW,IAAMA,GAO3D,SAASC,GAASzuS,GAChB,IAIInZ,EACAr4D,EACAkgX,EACA5uW,EACAssT,EACA10N,EACAyzN,EAVA11U,EAAO,GACPyvC,GAAS,EACTkkI,EAAOskN,GACPiB,EAAe,EAQf9/H,EAAU,GAuCd,SAAS+/H,IACP,IAAIC,EAAW7uS,EAAK96C,EAAQ,GAC5B,GAAKkkI,IAAS2kN,IAAgC,MAAbc,GAC9BzlN,IAAS4kN,IAAgC,MAAba,EAI7B,OAHA3pV,IACAwpV,EAAU,KAAOG,EACjBhgI,EAAQy+H,MACD,EA5CXz+H,EAAQ0+H,GAAQ,gBACFz0V,IAARtqB,IACF/Y,EAAKmD,KAAK4V,GACVA,OAAMsqB,IAIV+1N,EAAQy+H,GAAU,gBACJx0V,IAARtqB,EACFA,EAAMkgX,EAENlgX,GAAOkgX,GAIX7/H,EAAQ2+H,GAAsB,WAC5B3+H,EAAQy+H,KACRqB,KAGF9/H,EAAQ4+H,IAAiB,WACvB,GAAIkB,EAAe,EACjBA,IACAvlN,EAAO0kN,GACPj/H,EAAQy+H,SACH,CAEL,GADAqB,EAAe,OACH71V,IAARtqB,EAAqB,OAAO,EAEhC,GADAA,EAAM+/W,GAAc//W,IACR,IAARA,EACF,OAAO,EAEPqgP,EAAQ0+H,OAgBd,MAAgB,OAATnkN,EAIL,GAHAlkI,IACA2hC,EAAImZ,EAAK96C,GAEC,OAAN2hC,IAAc+nT,IAAlB,CAQA,GAJA9uW,EAAOwuW,GAAgBznT,GACvBskQ,EAAU+iD,GAAiB9kN,GAC3BgjK,EAAajB,EAAQrrT,IAASqrT,EAAQ,SAAW1mS,GAE7C2nS,IAAe3nS,GACjB,OAKF,GAFA2kI,EAAOgjK,EAAW,GAClB10N,EAASm3I,EAAQu9E,EAAW,IACxB10N,IACFg3Q,EAAUtiD,EAAW,GACrBsiD,OAAsB51V,IAAZ41V,EACN7nT,EACA6nT,GACa,IAAbh3Q,KACF,OAIJ,GAAI0xD,IAAS6kN,GACX,OAAOx4X,GASb,IAAIq5X,GAAW,WACbl8X,KAAKm8X,OAAS58X,OAAOY,OAAO,OAM9B+7X,GAASh8X,UAAUk8X,UAAY,SAAoBhvS,GACjD,IAAIivS,EAAMr8X,KAAKm8X,OAAO/uS,GAOtB,OANKivS,IACHA,EAAMR,GAAQzuS,GACVivS,IACFr8X,KAAKm8X,OAAO/uS,GAAQivS,IAGjBA,GAAO,IAMhBH,GAASh8X,UAAUo8X,aAAe,SAAuBxhX,EAAKsyE,GAC5D,IAAKpU,EAASl+D,GAAQ,OAAO,KAE7B,IAAIy2O,EAAQvxP,KAAKo8X,UAAUhvS,GAC3B,GAAqB,IAAjBmkK,EAAMlwP,OACR,OAAO,KAEP,IAAIA,EAASkwP,EAAMlwP,OACfm8J,EAAO1iJ,EACP5Z,EAAI,EACR,MAAOA,EAAIG,EAAQ,CACjB,IAAIiD,EAAQk5J,EAAK+zF,EAAMrwP,IACvB,QAAcglC,IAAV5hC,GAAiC,OAAVA,EACzB,OAAO,KAETk5J,EAAOl5J,EACPpD,IAGF,OAAOs8J,GAQX,IAijCI++N,GAjjCAC,GAAiB,0BACjBC,GAAiB,uDACjBC,GAAuB,qBACvBC,GAAkB,QAClBC,GAAmB,CACrB,MAAS,SAAUjiX,GAAO,OAAOA,EAAIkiX,qBACrC,MAAS,SAAUliX,GAAO,OAAOA,EAAI0gV,qBACrC,WAAc,SAAU1gV,GAAO,MAAQ,GAAMA,EAAIm7B,OAAO,GAAG+mV,oBAAwBliX,EAAIqmE,OAAO,KAG5F87S,GAAmB,IAAI1C,EAEvBvD,GAAU,SAAkBj1X,GAC9B,IAAIm7X,EAAS/8X,UACI,IAAZ4B,IAAqBA,EAAU,KAM/BykV,GAAyB,qBAAXliU,QAA0BA,OAAOkiU,KAClDqoB,EAAQvqV,OAAOkiU,KAGjB,IAAIhuJ,EAASz2L,EAAQy2L,QAAU,QAC3Bg/L,GAA4C,IAA3Bz1X,EAAQy1X,iBAEzBz1X,EAAQy1X,gBAAkB,SAC1B7U,EAAW5gX,EAAQ4gX,UAAY,GAC/Bwa,EAAkBp7X,EAAQo7X,iBAAmBp7X,EAAQq7X,iBAAmB,GACxEC,EAAgBt7X,EAAQs7X,eAAiB,GAE7Cl9X,KAAKm9X,IAAM,KACXn9X,KAAKo9X,WAAax7X,EAAQw1X,WAAa0F,GACvC98X,KAAKq9X,WAAaz7X,EAAQ8kS,WAAa,GACvC1mS,KAAKs9X,SAAW17X,EAAQ27X,SAAW,KACnCv9X,KAAKw9X,MAAQ57X,EAAQ6lM,MAAQ,KAC7BznM,KAAKy9X,WAAyBv3V,IAAjBtkC,EAAQk2X,QAA8Bl2X,EAAQk2X,KAC3D93X,KAAK09X,mBAAyCx3V,IAAzBtkC,EAAQ+7X,gBAEvB/7X,EAAQ+7X,aACd39X,KAAK49X,kCAAuE13V,IAAxCtkC,EAAQi8X,+BAEtCj8X,EAAQi8X,4BACd79X,KAAK89X,6BAA6D53V,IAAnCtkC,EAAQ01X,0BAEjC11X,EAAQ01X,uBACdt3X,KAAK+9X,4BAA2D73V,IAAlCtkC,EAAQ21X,uBAElC31X,EAAQ21X,sBACZv3X,KAAKg+X,yBAAqD93V,IAA/BtkC,EAAQ41X,sBAE7B51X,EAAQ41X,mBACdx3X,KAAKi+X,oBAAsB,GAC3Bj+X,KAAKk+X,kBAAoB,GACzBl+X,KAAKmtF,MAAQ,IAAI+uS,GACjBl8X,KAAKm+X,eAAiB,IAAIlhW,IAC1Bj9B,KAAKo+X,kCAAoCx8X,EAAQy8X,kCAAoC,KACrFr+X,KAAKs+X,+BAAiEp4V,IAArCtkC,EAAQ81X,4BAEnC91X,EAAQ81X,yBACd13X,KAAKy3X,mBAAqB71X,EAAQ61X,oBAAsB,GACxDz3X,KAAKu+X,mBAAqB38X,EAAQ48X,mBAAqB,MACvDx+X,KAAKy+X,iBAAmB78X,EAAQ88X,iBAAmB,KACnD1+X,KAAK2+X,qBAAuB/8X,EAAQg9X,sBAAuB,EAEvD,wBAAyBh9X,IAC3B5B,KAAK6+X,oBAAsBj9X,EAAQi9X,qBAQrC7+X,KAAK8+X,eAAiB,SAAU3I,EAAQ4I,GACtC,IAAIC,EAAgBz/X,OAAO+1J,eAAeynO,GAC1C,GAAIiC,GAAiBA,EAAcF,eAAgB,CACjD,IAAIG,EAA2BD,EAA4B,eAC3D,OAAO,EAA0Br+X,KAAKo8X,EAAQ5G,EAAQ4I,GAIxD,IAAIxd,EAAc,SAAU2d,EAASC,GAGnC,OAFAD,EAAUjwX,KAAKgyF,IAAIi+R,GAEI,IAAnBC,EACKD,EACHA,EAAU,EACR,EACA,EACF,EAGCA,EAAUjwX,KAAKs2C,IAAI25U,EAAS,GAAK,GAG1C,OAAInC,EAAO1kM,UAAU0kM,EAAOtF,mBACnBsF,EAAOtF,mBAAmBsF,EAAO1kM,QAAQt0L,MAAMg5X,EAAQ,CAAC5G,EAAQ4I,IAEhExd,EAAY4U,EAAQ4I,IAK/B/+X,KAAKo/X,OAAS,SAAUhzW,EAASxQ,GAC/B,SAAKwQ,IAAYxQ,MACZqxP,EAAO8vH,EAAO5vS,MAAMmvS,aAAalwW,EAASxQ,OAE3CwQ,EAAQxQ,KAIkB,SAA5B5b,KAAKu+X,oBAA6D,UAA5Bv+X,KAAKu+X,oBAC7Ch/X,OAAOsD,KAAK2/W,GAAU1/W,SAAQ,SAAUu1L,GACtC0kM,EAAOsC,oBAAoBhnM,EAAQ0kM,EAAOwB,mBAAoB/b,EAASnqL,OAI3Er4L,KAAKs/X,QAAQ,CACXjnM,OAAQA,EACRg/L,eAAgBA,EAChB7U,SAAUA,EACVwa,gBAAiBA,EACjBE,cAAeA,KAIfqC,GAAqB,CAAExkB,GAAI,CAAEzsU,cAAc,GAAOk0U,SAAU,CAAEl0U,cAAc,GAAO0uV,gBAAiB,CAAE1uV,cAAc,GAAO4uV,cAAe,CAAE5uV,cAAc,GAAOkxV,iBAAkB,CAAElxV,cAAc,GAAO+pJ,OAAQ,CAAE/pJ,cAAc,GAAO+oV,eAAgB,CAAE/oV,cAAc,GAAOgpV,uBAAwB,CAAEhpV,cAAc,GAAOivV,QAAS,CAAEjvV,cAAc,GAAO8oV,UAAW,CAAE9oV,cAAc,GAAOipV,sBAAuB,CAAEjpV,cAAc,GAAOkpV,mBAAoB,CAAElpV,cAAc,GAAOopV,yBAA0B,CAAEppV,cAAc,GAAOkwV,kBAAmB,CAAElwV,cAAc,GAAOowV,gBAAiB,CAAEpwV,cAAc,GAAOwpV,KAAM,CAAExpV,cAAc,IAEvnBuoV,GAAQ32X,UAAUm/X,oBAAsB,SAA8BhnM,EAAQzqK,EAAOxB,GACnF,IAAImlO,EAAQ,GAERv2K,EAAK,SAAUptD,EAAOyqK,EAAQjsK,EAASmlO,GACzC,GAAItxJ,EAAc7zE,GAChB7sB,OAAOsD,KAAKupB,GAAStpB,SAAQ,SAAU8Y,GACrC,IAAIsjB,EAAM9S,EAAQxQ,GACdqkF,EAAc/gE,IAChBqyN,EAAMvrP,KAAK4V,GACX21O,EAAMvrP,KAAK,KACXg1E,EAAGptD,EAAOyqK,EAAQn5J,EAAKqyN,GACvBA,EAAMxrP,MACNwrP,EAAMxrP,QAENwrP,EAAMvrP,KAAK4V,GACXo/D,EAAGptD,EAAOyqK,EAAQn5J,EAAKqyN,GACvBA,EAAMxrP,eAGL,GAAIsvE,EAAQjpD,GACjBA,EAAQtpB,SAAQ,SAAUsmB,EAAMkpB,GAC1B2tD,EAAc72E,IAChBmoO,EAAMvrP,KAAM,IAAMssC,EAAQ,KAC1Bi/M,EAAMvrP,KAAK,KACXg1E,EAAGptD,EAAOyqK,EAAQjvK,EAAMmoO,GACxBA,EAAMxrP,MACNwrP,EAAMxrP,QAENwrP,EAAMvrP,KAAM,IAAMssC,EAAQ,KAC1B0oC,EAAGptD,EAAOyqK,EAAQjvK,EAAMmoO,GACxBA,EAAMxrP,eAGL,GAAIgqF,EAAS3jE,GAAU,CAC5B,IAAIykT,EAAM2rD,GAAeltX,KAAK8c,GAC9B,GAAIykT,EAAK,CACP,IAAIt9O,EAAM,6BAA+BnnE,EAAU,iBAAoBmlO,EAAMvrO,KAAK,IAAO,SAAWqyK,EAAS,6FAC/F,SAAVzqK,EACFsnI,EAAK3hE,GACc,UAAV3lE,GACTtnB,EAAMitF,MAMdvY,EAAGptD,EAAOyqK,EAAQjsK,EAASmlO,IAG7BslI,GAAQ32X,UAAUo/X,QAAU,SAAkBlvX,GAC5C,IAAImqW,EAASl0B,EAAIrgS,OAAOu0T,OACxBl0B,EAAIrgS,OAAOu0T,QAAS,EACpBv6W,KAAKm9X,IAAM,IAAI92C,EAAI,CAAEj2U,KAAMA,EAAMqvX,sBAAsB,IACvDp5C,EAAIrgS,OAAOu0T,OAASA,GAGtBsc,GAAQ32X,UAAUm4X,UAAY,WAC5Br4X,KAAKm9X,IAAIvd,YAGXiX,GAAQ32X,UAAUg4X,sBAAwB,SAAgCnd,GACxE/6W,KAAKm+X,eAAehhW,IAAI49U,IAG1B8b,GAAQ32X,UAAUk4X,wBAA0B,SAAkCrd,GAC5E52O,EAAOnkI,KAAKm+X,eAAgBpjB,IAG9B8b,GAAQ32X,UAAUg3X,cAAgB,WAC9B,IAAI6F,EAAS/8X,KACf,OAAOA,KAAKm9X,IAAIv3B,OAAO,SAAS,WAC9B,IAAI97N,EAAYkmD,EAAU+sM,EAAOoB,gBAC7Bj9X,EAAI4oI,EAAUzoI,OAClB,MAAMH,IACJmlV,EAAI93K,UAAS,WACXzkC,EAAU5oI,IAAM4oI,EAAU5oI,GAAGw+X,oBAGhC,CAAEv7R,MAAM,KAGb0yR,GAAQ32X,UAAU83X,YAAc,SAAsB2H,GACpD,GAAKA,EAQE,CAEL,IAAK3/X,KAAK6+X,oBAAuB,OAAO,KACxC,IAAInnT,EAAO13E,KACP4/X,EAAW5/X,KAAKm9X,IACpB,OAAOn9X,KAAK+6W,GAAGnV,OAAO,UAAU,SAAU1mU,GACxC0gW,EAASplM,KAAKolM,EAAU,SAAU1gW,GAC9Bw4C,EAAKmnT,qBAAuBc,IAC9BA,EAAStnM,OAAO/zL,MAAQ46B,GAE1B0gW,EAASF,iBACR,CAAEhhC,WAAW,IAjBhB,IAAK1+V,KAAKy9X,QAAUz9X,KAAKw9X,MAAS,OAAO,KACzC,IAAI73W,EAAS3lB,KAAKm9X,IAClB,OAAOn9X,KAAKw9X,MAAMxH,MAAMjb,GAAGnV,OAAO,UAAU,SAAU1mU,GACpDvZ,EAAO60K,KAAK70K,EAAQ,SAAUuZ,GAC9BvZ,EAAO+5W,iBACN,CAAEhhC,WAAW,KAgBpBm4B,GAAQ32X,UAAU+3X,2BAA6B,SAAqC4H,GAC9E7/X,KAAKo+X,mCACPp+X,KAAKo+X,kCAAkCyB,EAAS7/X,OAIpDu/X,GAAmBxkB,GAAGr5W,IAAM,WAAc,OAAO1B,KAAKm9X,KAEtDoC,GAAmB/c,SAAS9gX,IAAM,WAAc,OAAOuzX,EAAWj1X,KAAKi2X,iBACvEsJ,GAAmBvC,gBAAgBt7X,IAAM,WAAc,OAAOuzX,EAAWj1X,KAAK8/X,wBAC9EP,GAAmBrC,cAAcx7X,IAAM,WAAc,OAAOuzX,EAAWj1X,KAAK+/X,sBAC5ER,GAAmBC,iBAAiB99X,IAAM,WAAc,OAAOnC,OAAOsD,KAAK7C,KAAKwiX,UAAUp8V,QAE1Fm5W,GAAmBlnM,OAAO32L,IAAM,WAAc,OAAO1B,KAAKm9X,IAAI9kM,QAC9DknM,GAAmBlnM,OAAO1vK,IAAM,SAAU0vK,GACxCr4L,KAAKm9X,IAAI3iM,KAAKx6L,KAAKm9X,IAAK,SAAU9kM,IAGpCknM,GAAmBlI,eAAe31X,IAAM,WAAc,OAAO1B,KAAKm9X,IAAI9F,gBACtEkI,GAAmBlI,eAAe1uW,IAAM,SAAU0vK,GAChDr4L,KAAKggY,kBAAoB,GACzBhgY,KAAKm9X,IAAI3iM,KAAKx6L,KAAKm9X,IAAK,iBAAkB9kM,IAG5CknM,GAAmBjI,uBAAuB51X,IAAM,WAAc,OAAO1B,KAAK89X,yBAC1EyB,GAAmBjI,uBAAuB3uW,IAAM,SAAUitV,GAAY51W,KAAK89X,wBAA0BloB,GAErG2pB,GAAmBhC,QAAQ77X,IAAM,WAAc,OAAO1B,KAAKs9X,UAC3DiC,GAAmBhC,QAAQ50W,IAAM,SAAU+zF,GAAW18G,KAAKs9X,SAAW5gR,GAEtE6iR,GAAmBnI,UAAU11X,IAAM,WAAc,OAAO1B,KAAKo9X,YAC7DmC,GAAmBnI,UAAUzuW,IAAM,SAAUyuW,GAAap3X,KAAKo9X,WAAahG,GAE5EmI,GAAmBhI,sBAAsB71X,IAAM,WAAc,OAAO1B,KAAK+9X,wBACzEwB,GAAmBhI,sBAAsB5uW,IAAM,SAAU4xV,GAAUv6W,KAAK+9X,uBAAyBxjB,GAEjGglB,GAAmB/H,mBAAmB91X,IAAM,WAAc,OAAO1B,KAAKg+X,qBACtEuB,GAAmB/H,mBAAmB7uW,IAAM,SAAU4xV,GAAUv6W,KAAKg+X,oBAAsBzjB,GAE3FglB,GAAmB7H,yBAAyBh2X,IAAM,WAAc,OAAO1B,KAAKs+X,2BAC5EiB,GAAmB7H,yBAAyB/uW,IAAM,SAAU4wW,GAAYv5X,KAAKs+X,0BAA4B/E,GAEzGgG,GAAmBf,kBAAkB98X,IAAM,WAAc,OAAO1B,KAAKu+X,oBACrEgB,GAAmBf,kBAAkB71W,IAAM,SAAUiF,GACjD,IAAImvW,EAAS/8X,KAEXigY,EAAWjgY,KAAKu+X,mBAEpB,GADAv+X,KAAKu+X,mBAAqB3wW,EACtBqyW,IAAaryW,IAAoB,SAAVA,GAA8B,UAAVA,GAAoB,CACjE,IAAI40V,EAAWxiX,KAAKi2X,eACpB12X,OAAOsD,KAAK2/W,GAAU1/W,SAAQ,SAAUu1L,GACtC0kM,EAAOsC,oBAAoBhnM,EAAQ0kM,EAAOwB,mBAAoB/b,EAASnqL,SAK7EknM,GAAmBb,gBAAgBh9X,IAAM,WAAc,OAAO1B,KAAKy+X,kBACnEc,GAAmBb,gBAAgB/1W,IAAM,SAAU+zF,GAAW18G,KAAKy+X,iBAAmB/hR,GAEtF6iR,GAAmBzH,KAAKp2X,IAAM,WAAc,OAAO1B,KAAKy9X,OACxD8B,GAAmBzH,KAAKnvW,IAAM,SAAUuW,GAAOl/B,KAAKy9X,MAAQv+V,GAE5D23V,GAAQ32X,UAAU+1X,aAAe,WAA2B,OAAOj2X,KAAKm9X,IAAI3a,UAC5EqU,GAAQ32X,UAAU4/X,oBAAsB,WAAkC,OAAO9/X,KAAKm9X,IAAIH,iBAC1FnG,GAAQ32X,UAAU6/X,kBAAoB,WAAgC,OAAO//X,KAAKm9X,IAAID,eAEtFrG,GAAQ32X,UAAUggY,aAAe,SAAuB7nM,EAAQz8K,EAAKhX,EAAQm2W,EAAI3oU,EAAQ+tV,GACvF,IAAKlzH,EAAOroQ,GAAW,OAAOA,EAC9B,GAAI5E,KAAKs9X,SAAU,CACjB,IAAI8C,EAAapgY,KAAKs9X,SAASv5X,MAAM,KAAM,CAACs0L,EAAQz8K,EAAKm/V,EAAI3oU,IAC7D,GAAI29C,EAASqwS,GACX,OAAOA,OAGL,EAQN,GAAIpgY,KAAK89X,wBAAyB,CAChC,IAAIuC,EAAarL,EAAUjxX,WAAM,EAAQquC,GACzC,OAAOpyC,KAAK0sS,QAAQ9wR,EAAKukX,EAAiBE,EAAW9kX,OAAQK,GAE7D,OAAOA,GAIXi7W,GAAQ32X,UAAUogY,gBAAkB,SAA0BphW,GAC5D,OAAQl/B,KAAK49X,8BAA+B1+V,EAAM+tO,EAAO/tO,MAAU+tO,EAAOjtQ,KAAKw9X,QAAUx9X,KAAK09X,eAGhG7G,GAAQ32X,UAAUqgY,sBAAwB,SAAgC3kX,GACxE,OAAO5b,KAAKg+X,+BAA+BzhX,OACvCvc,KAAKg+X,oBAAoB1uX,KAAKsM,GAC9B5b,KAAKg+X,qBAGXnH,GAAQ32X,UAAUsgY,kBAAoB,SAA4BnoM,EAAQz8K,GACxE,OAAO5b,KAAKugY,sBAAsB3kX,KAAS5b,KAAKsgY,mBAAqBjoM,IAAWr4L,KAAKq3X,iBAGvFR,GAAQ32X,UAAUugY,yBAA2B,SAAmC7kX,GAC9E,OAAO5b,KAAK+9X,kCAAkCxhX,OAC1Cvc,KAAK+9X,uBAAuBzuX,KAAKsM,GACjC5b,KAAK+9X,wBAGXlH,GAAQ32X,UAAUwgY,aAAe,SAC/BroM,EACAjsK,EACAxQ,EACAioB,EACAs8V,EACA/tV,EACAuuV,GAEA,IAAKv0W,EAAW,OAAO,KAEvB,IAGIykT,EAHA+vD,EAAU5gY,KAAKmtF,MAAMmvS,aAAalwW,EAASxQ,GAC/C,GAAIy5D,EAAQurT,IAAY3gS,EAAc2gS,GAAY,OAAOA,EAGzD,GAAI3zH,EAAO2zH,GAAU,CAEnB,IAAI3gS,EAAc7zE,GAShB,OAAO,KAPP,GADAykT,EAAMzkT,EAAQxQ,IACRm0E,EAAS8gP,KAAQ/gP,EAAW+gP,GAIhC,OAAO,SAKN,CAEL,IAAI9gP,EAAS6wS,KAAY9wS,EAAW8wS,GAMlC,OAAO,KALP/vD,EAAM+vD,EAcV,OAJI7wS,EAAS8gP,KAASA,EAAI31T,QAAQ,OAAS,GAAK21T,EAAI31T,QAAQ,OAAS,KACnE21T,EAAM7wU,KAAKmnO,MAAM9uC,EAAQjsK,EAASykT,EAAKhtS,EAAM,MAAOuO,EAAQuuV,IAGvD3gY,KAAK0sS,QAAQmkC,EAAKsvD,EAAiB/tV,EAAQx2B,IAGpDi7W,GAAQ32X,UAAUinO,MAAQ,SACxB9uC,EACAjsK,EACAzR,EACAkpB,EACAs8V,EACA/tV,EACAuuV,GAEA,IAAI9vD,EAAMl2T,EAKNP,EAAUy2T,EAAIphS,MAAMgtV,IAGxB,IAAK,IAAI7uS,KAAOxzE,EAGd,GAAKA,EAAQta,eAAe8tF,GAA5B,CAGA,IAAI66F,EAAOruK,EAAQwzE,GACfizS,EAAuBp4M,EAAKh5I,MAAMitV,IAClCoE,EAAaD,EAAqB,GAChCE,EAAgBF,EAAqB,GAGvCG,EAAkBv4M,EAAKv3K,QAAQ4vX,EAAY,IAAI5vX,QAAQyrX,GAAiB,IAE5E,GAAI9jT,EAAS8nT,EAAkBK,GAI7B,OAAOnwD,EAET8vD,EAAiB36X,KAAKg7X,GAGtB,IAAIC,EAAajhY,KAAK0gY,aACpBroM,EAAQjsK,EAAS40W,EAAiBn9V,EACd,QAApBs8V,EAA4B,SAAWA,EACnB,QAApBA,OAA4Bj6V,EAAYkM,EACxCuuV,GAGF,GAAI3gY,KAAKsgY,gBAAgBW,GAAa,CAKpC,IAAKjhY,KAAKw9X,MAAS,MAAM58X,MAAM,oBAC/B,IAAI6mM,EAAOznM,KAAKw9X,MAAMxH,MACtBiL,EAAax5L,EAAKy5L,WAChBz5L,EAAKwuL,eAAgBxuL,EAAKpP,OAAQoP,EAAK4vL,eACvC2J,EAAiBn9V,EAAMs8V,EAAiB/tV,GAG5C6uV,EAAajhY,KAAKkgY,aAChB7nM,EAAQ2oM,EAAiBC,EAAYp9V,EACrCwxC,EAAQjjC,GAAUA,EAAS,CAACA,GAC5B+tV,GAGEngY,KAAKq9X,WAAWv9X,eAAeihY,GACjCE,EAAajhY,KAAKq9X,WAAW0D,GAAeE,GACnCrE,GAAiB98X,eAAeihY,KACzCE,EAAarE,GAAiBmE,GAAeE,IAG/CN,EAAiB56X,MAGjB8qU,EAAOowD,EAAmBpwD,EAAI3/T,QAAQu3K,EAAMw4M,GAAxBpwD,EAGtB,OAAOA,GAGTgmD,GAAQ32X,UAAUihY,sBAAwB,SAAgC/uV,EAAQglV,EAAWhqS,EAAM+yS,GAC/F,IAAIpD,EAAS/8X,KAEXohY,EAAQ/rT,EAAQjjC,GAAUA,EAAS,GACnCivV,EAASroT,EAAS5mC,GAAUA,EAAS,GACrCq2H,EAAO,SAAUn2H,GAAS,OAAO8uV,EAAM9uV,IACvCs0I,EAAQ,SAAUhrK,GAAO,OAAOylX,EAAOzlX,IACvC4mW,EAAWxiX,KAAKi2X,eAChB59L,EAASr4L,KAAKq4L,OAElB,MAAO,CACL5vB,KAAMA,EACNme,MAAOA,EACPx0I,OAAQA,EACRglV,UAAWA,EACXhqS,KAAMA,EACNo1R,SAAUA,EACVnqL,OAAQA,EACRipM,OAAQ,SAAUC,GAAa,OAAOxE,EAAO2D,aAAaroM,EAAQmqL,EAASnqL,IAAW,GAAIkpM,EAAW,KAAMpB,OAAiBj6V,EAAW,CAACq7V,OAI5I1K,GAAQ32X,UAAUwsS,QAAU,SAAkBtgR,EAAS+zW,EAAiB/tV,EAAQg7C,GAC9E,GAAI0C,EAAW1jE,GACb,OAAOA,EACLpsB,KAAKmhY,sBAAsB/uV,EAAQpyC,KAAKo9X,YAAcN,GAAkB1vS,EAAM+yS,IAIlF,IAAItvD,EAAM7wU,KAAKo9X,WAAWzsH,YAAYvkP,EAASgmB,EAAQg7C,GASvD,OANKyjP,IACHA,EAAMisD,GAAiBnsH,YAAYvkP,EAASgmB,EAAQg7C,IAK3B,WAApB+yS,GAAiCpwS,EAAS8gP,GAAsBA,EAAfA,EAAI7qT,KAAK,KAGnE6wW,GAAQ32X,UAAUshY,mBAAqB,SAA6B/+P,EAAOr5G,EAAMq4W,GAC/E,IAAIC,GAAS,EAYb,OAXK7oT,EAAS4pD,EAAOr5G,KACnBs4W,GAAS,EACLt4W,IACFs4W,EAAmC,MAA1Bt4W,EAAKA,EAAK/nB,OAAS,GAC5B+nB,EAAOA,EAAKlY,QAAQ,KAAM,IAC1BuxH,EAAMz8H,KAAKojB,GACPq4W,GAAUA,EAAOr4W,KACnBs4W,EAASD,EAAOr4W,MAIfs4W,GAGT7K,GAAQ32X,UAAUyhY,qBAAuB,SAA+Bl/P,EAAO41D,EAAQopM,GACrF,IAAIC,EACAnoT,EAAS8+G,EAAOjhL,MAAM,KAC1B,EAAG,CACD,IAAIgS,EAAOmwD,EAAOvzD,KAAK,KACvB07W,EAAS1hY,KAAKwhY,mBAAmB/+P,EAAOr5G,EAAMq4W,GAC9CloT,EAAOi3B,QAAQ,EAAG,SACXj3B,EAAOl4E,SAAsB,IAAXqgY,GAC3B,OAAOA,GAGT7K,GAAQ32X,UAAU0hY,oBAAsB,SAA8Bn/P,EAAOs7M,EAAO0jD,GAElF,IADA,IAAIC,GAAS,EACJxgY,EAAI,EAAIA,EAAI68U,EAAM18U,QAAY4uF,EAAUyxS,GAAUxgY,IAAK,CAC9D,IAAIm3L,EAAS0lJ,EAAM78U,GACf6uF,EAASsoG,KACXqpM,EAAS1hY,KAAK2hY,qBAAqBl/P,EAAO41D,EAAQopM,IAGtD,OAAOC,GAGT7K,GAAQ32X,UAAU2hY,gBAAkB,SAA0B16S,EAAOkwS,GACnE,GAAc,KAAVlwS,EAAgB,MAAO,GAEtBnnF,KAAKggY,oBACRhgY,KAAKggY,kBAAoB,IAG3B,IAAIv9P,EAAQziI,KAAKggY,kBAAkB74S,GACnC,IAAKs7C,EAAO,CACL40P,IACHA,EAAiBr3X,KAAKq3X,gBAExB50P,EAAQ,GAGR,IAYIr/B,EAZA26O,EAAQ,CAAC52P,GAGb,MAAO9R,EAAQ0oQ,GACbA,EAAQ/9U,KAAK4hY,oBACXn/P,EACAs7M,EACAs5C,GAOFj0R,EADE/tB,EAAQgiT,GACCA,EACFr+S,EAASq+S,GAEdA,EAAe,WACNA,EAAe,WAEf,KAGFA,EAKXt5C,EADEhuP,EAASqT,GACH,CAACA,GAEDA,EAEN26O,GACF/9U,KAAK4hY,oBACHn/P,EACAs7M,EACA,MAGJ/9U,KAAKggY,kBAAkB74S,GAASs7C,EAElC,OAAOA,GAGTo0P,GAAQ32X,UAAUghY,WAAa,SAC7B1e,EACAnqL,EACAu9K,EACAh6V,EACAioB,EACAs8V,EACA/tS,GAIA,IAFA,IACIqpC,EADAgH,EAAQziI,KAAK6hY,gBAAgBxpM,EAAQu9K,GAEhC10W,EAAI,EAAGA,EAAIuhI,EAAMphI,OAAQH,IAAK,CACrC,IAAIsD,EAAOi+H,EAAMvhI,GAGjB,GAFAu6H,EACEz7H,KAAK0gY,aAAal8X,EAAMg+W,EAASh+W,GAAOoX,EAAKioB,EAAMs8V,EAAiB/tS,EAAM,CAACx2E,KACxEqxP,EAAOxxI,GAIV,OAAOA,EAGX,OAAO,MAGTo7P,GAAQ32X,UAAUghS,GAAK,SAAatlR,EAAK69W,EAASjX,EAAU3+U,GACxD,IAAI0hT,EAEAnzS,EAAS,GAAIyuD,EAAMz/F,UAAUC,OAAS,EAC1C,MAAQw/F,KAAQ,EAAIzuD,EAAQyuD,GAAQz/F,UAAWy/F,EAAM,GACvD,IAAKjlF,EAAO,MAAO,GAEnB,IAAIykX,EAAarL,EAAUjxX,WAAM,EAAQquC,GACtCpyC,KAAK2+X,uBACN0B,EAAW9kX,OAASq6W,EAAayK,EAAW9kX,SAG9C,IAAI88K,EAASgoM,EAAWhoM,QAAUohM,EAE9B5oD,EAAM7wU,KAAKkhY,WACb1e,EAAUnqL,EAAQr4L,KAAKq3X,eAAgBz7W,EACvCioB,EAAM,SAAUw8V,EAAW9kX,QAE7B,GAAIvb,KAAKsgY,gBAAgBzvD,GAAM,CAK7B,IAAK7wU,KAAKw9X,MAAS,MAAM58X,MAAM,oBAC/B,OAAQ2kV,EAAMvlV,KAAKw9X,OAAO1H,GAAG/xX,MAAMwhV,EAAK,CAAE3pU,GAAMpV,OAAQ4rC,IAMxD,OAJAy+R,EAAM7wU,KAAKkgY,aAAa7nM,EAAQz8K,EAAKi1T,EAAKhtS,EAAMuO,EAAQ,UACpDpyC,KAAKy+X,kBAA4B,OAAR5tD,QAAwB3qS,IAAR2qS,IAC3CA,EAAM7wU,KAAKy+X,iBAAiB5tD,EAAKj1T,IAE5Bi1T,GAIXgmD,GAAQ32X,UAAUc,EAAI,SAAY4a,GAC9B,IAAI2pU,EAEAnzS,EAAS,GAAIyuD,EAAMz/F,UAAUC,OAAS,EAC1C,MAAQw/F,KAAQ,EAAIzuD,EAAQyuD,GAAQz/F,UAAWy/F,EAAM,GACvD,OAAQ0kP,EAAMvlV,MAAMkhS,GAAGn9R,MAAMwhV,EAAK,CAAE3pU,EAAK5b,KAAKq4L,OAAQr4L,KAAKi2X,eAAgB,MAAOzvX,OAAQ4rC,KAG5FykV,GAAQ32X,UAAUo3G,GAAK,SAAa17F,EAAKy8K,EAAQmqL,EAAU3+U,EAAMuO,GAC/D,IAAIy+R,EACF7wU,KAAKkhY,WAAW1e,EAAUnqL,EAAQr4L,KAAKq3X,eAAgBz7W,EAAKioB,EAAM,MAAOuO,GAC3E,GAAIpyC,KAAKsgY,gBAAgBzvD,GAAM,CAI7B,IAAK7wU,KAAKw9X,MAAS,MAAM58X,MAAM,oBAC/B,OAAOZ,KAAKw9X,MAAMxH,MAAM90X,EAAE0a,EAAKy8K,EAAQjmJ,GAEvC,OAAOpyC,KAAKkgY,aAAa7nM,EAAQz8K,EAAKi1T,EAAKhtS,EAAM,CAACuO,GAAS,QAI/DykV,GAAQ32X,UAAUgB,EAAI,SAAY0a,EAAKy8K,EAAQjmJ,GAE7C,OAAKx2B,GAEAm0E,EAASsoG,KACZA,EAASr4L,KAAKq4L,QAGTr4L,KAAKs3G,GAAG17F,EAAKy8K,EAAQr4L,KAAKi2X,eAAgB,KAAM7jV,IANpC,IASrBykV,GAAQ32X,UAAUk2X,IAAM,SACtBx6W,EACA69W,EACAjX,EACA3+U,EACAsyV,GAEE,IAAI5wC,EAEAnzS,EAAS,GAAIyuD,EAAMz/F,UAAUC,OAAS,EAC1C,MAAQw/F,KAAQ,EAAIzuD,EAAQyuD,GAAQz/F,UAAWy/F,EAAM,GACvD,IAAKjlF,EAAO,MAAO,QACJsqB,IAAXiwV,IACFA,EAAS,GAGX,IAAI2L,EAAa,CAAE,MAAS3L,EAAQ,EAAKA,GACrCkK,EAAarL,EAAUjxX,WAAM,EAAQquC,GAGzC,OAFAiuV,EAAW9kX,OAAShc,OAAOwB,OAAO+gY,EAAYzB,EAAW9kX,QACzD62B,EAA+B,OAAtBiuV,EAAWhoM,OAAkB,CAACgoM,EAAW9kX,QAAU,CAAC8kX,EAAWhoM,OAAQgoM,EAAW9kX,QACpFvb,KAAK+hY,aAAax8C,EAAMvlV,MAAMkhS,GAAGn9R,MAAMwhV,EAAK,CAAE3pU,EAAK69W,EAASjX,EAAU3+U,GAAOr9B,OAAQ4rC,IAAW+jV,IAGzGU,GAAQ32X,UAAU6hY,YAAc,SAAsB31W,EAAS+pW,GAE7D,IAAK/pW,IAAY2jE,EAAS3jE,GAAY,OAAO,KAC7C,IAAI41W,EAAU51W,EAAQhV,MAAM,KAG5B,OADA++W,EAASn2X,KAAK8+X,eAAe3I,EAAQ6L,EAAQ3gY,QACxC2gY,EAAQ7L,GACN6L,EAAQ7L,GAAQz6W,OADQ0Q,GAIjCyqW,GAAQ32X,UAAU25X,GAAK,SAAaj+W,EAAKu6W,GACrC,IAAI5wC,EAEAnzS,EAAS,GAAIyuD,EAAMz/F,UAAUC,OAAS,EAC1C,MAAQw/F,KAAQ,EAAIzuD,EAAQyuD,GAAQz/F,UAAWy/F,EAAM,GACvD,OAAQ0kP,EAAMvlV,MAAMo2X,IAAIryX,MAAMwhV,EAAK,CAAE3pU,EAAK5b,KAAKq4L,OAAQr4L,KAAKi2X,eAAgB,KAAME,GAAS3vX,OAAQ4rC,KAGrGykV,GAAQ32X,UAAUo2X,IAAM,SAAc16W,EAAKy8K,EAAQmqL,GAC/C,IAAIpwR,EAAO,GAAIyO,EAAMz/F,UAAUC,OAAS,EACxC,MAAQw/F,KAAQ,EAAIzO,EAAMyO,GAAQz/F,UAAWy/F,EAAM,GAErD,IAAI44R,EAAUzE,EAAUjxX,WAAM,EAAQquF,GAAMimG,QAAUA,EACtD,OAAOr4L,KAAKo/X,OAAO5c,EAASiX,GAAU79W,IAGxCi7W,GAAQ32X,UAAU+hY,GAAK,SAAarmX,EAAKy8K,GACvC,OAAOr4L,KAAKs2X,IAAI16W,EAAK5b,KAAKq4L,OAAQr4L,KAAKi2X,eAAgB59L,IAGzDw+L,GAAQ32X,UAAUo5X,iBAAmB,SAA2BjhM,GAC9D,OAAO48L,EAAWj1X,KAAKm9X,IAAI3a,SAASnqL,IAAW,KAGjDw+L,GAAQ32X,UAAUgiY,iBAAmB,SAA2B7pM,EAAQjsK,GACtC,SAA5BpsB,KAAKu+X,oBAA6D,UAA5Bv+X,KAAKu+X,oBAC7Cv+X,KAAKq/X,oBAAoBhnM,EAAQr4L,KAAKu+X,mBAAoBnyW,GAE5DpsB,KAAKm9X,IAAI3iM,KAAKx6L,KAAKm9X,IAAI3a,SAAUnqL,EAAQjsK,IAG3CyqW,GAAQ32X,UAAU82X,mBAAqB,SAA6B3+L,EAAQjsK,GAC1C,SAA5BpsB,KAAKu+X,oBAA6D,UAA5Bv+X,KAAKu+X,oBAC7Cv+X,KAAKq/X,oBAAoBhnM,EAAQr4L,KAAKu+X,mBAAoBnyW,GAE5DpsB,KAAKm9X,IAAI3iM,KAAKx6L,KAAKm9X,IAAI3a,SAAUnqL,EAAQznC,EACF,qBAA9B5wJ,KAAKm9X,IAAI3a,SAASnqL,IAA2B94L,OAAOsD,KAAK7C,KAAKm9X,IAAI3a,SAASnqL,IAASh3L,OACvF9B,OAAOwB,OAAO,GAAIf,KAAKm9X,IAAI3a,SAASnqL,IACpC,GACJjsK,KAIJyqW,GAAQ32X,UAAUiiY,kBAAoB,SAA4B9pM,GAChE,OAAO48L,EAAWj1X,KAAKm9X,IAAIH,gBAAgB3kM,IAAW,KAGxDw+L,GAAQ32X,UAAUkiY,kBAAoB,SAA4B/pM,EAAQsC,GACxE36L,KAAKm9X,IAAI3iM,KAAKx6L,KAAKm9X,IAAIH,gBAAiB3kM,EAAQsC,GAChD36L,KAAKqiY,qBAAqBhqM,EAAQsC,IAGpCk8L,GAAQ32X,UAAUoiY,oBAAsB,SAA8BjqM,EAAQsC,GAC5E36L,KAAKm9X,IAAI3iM,KAAKx6L,KAAKm9X,IAAIH,gBAAiB3kM,EAAQznC,EAAM5wJ,KAAKm9X,IAAIH,gBAAgB3kM,IAAW,GAAIsC,IAC9F36L,KAAKqiY,qBAAqBhqM,EAAQsC,IAGpCk8L,GAAQ32X,UAAUmiY,qBAAuB,SAA+BhqM,EAAQsC,GAE9E,IAAK,IAAI/+K,KAAO++K,EAAQ,CACtB,IAAI10J,EAAKoyJ,EAAS,KAAOz8K,EAEpB5b,KAAKi+X,oBAAoBn+X,eAAemmC,WAItCjmC,KAAKi+X,oBAAoBh4V,KAIpC4wV,GAAQ32X,UAAUqiY,kBAAoB,SACpCj+X,EACA+zL,EACAu9K,EACAonB,EACAphX,GAMA,IAJA,IAAI69W,EAAUphM,EACVoE,EAAUugM,EAAgBvD,GAE1Bh3P,EAAQziI,KAAK6hY,gBAAgBxpM,EAAQu9K,GAChC10W,EAAI,EAAGA,EAAIuhI,EAAMphI,OAAQH,IAAK,CACrC,IACIsD,EAAOi+H,EAAMvhI,GAIjB,GAHAu7L,EAAUugM,EAAgBx4X,GAC1Bi1X,EAAUj1X,GAENyoQ,EAAOxwE,KAAYwwE,EAAOxwE,EAAQ7gL,IAKpC,MAIJ,GAAIqxP,EAAOxwE,IAAYwwE,EAAOxwE,EAAQ7gL,IACpC,OAAO,KAEP,IAAI++K,EAAS8B,EAAQ7gL,GACjBqqB,EAAKwzV,EAAU,KAAO79W,EACtBw7W,EAAYp3X,KAAKi+X,oBAAoBh4V,GAIzC,OAHKmxV,IACHA,EAAYp3X,KAAKi+X,oBAAoBh4V,GAAM,IAAIu6J,KAAKC,eAAeg5L,EAAS9+L,IAEvEy8L,EAAUz8L,OAAOr2L,IAI5BuyX,GAAQ32X,UAAUk2B,GAAK,SAAa9xB,EAAO+zL,EAAQz8K,GAOjD,IAAKA,EACH,OAAO,IAAI4kL,KAAKC,eAAepI,GAAQsC,OAAOr2L,GAGhD,IAAIusU,EACF7wU,KAAKuiY,kBAAkBj+X,EAAO+zL,EAAQr4L,KAAKq3X,eAAgBr3X,KAAK8/X,sBAAuBlkX,GACzF,GAAI5b,KAAKsgY,gBAAgBzvD,GAAM,CAK7B,IAAK7wU,KAAKw9X,MAAS,MAAM58X,MAAM,oBAC/B,OAAOZ,KAAKw9X,MAAMxH,MAAMr2X,EAAE2E,EAAOsX,EAAKy8K,GAEtC,OAAOw4I,GAAO,IAIlBgmD,GAAQ32X,UAAUP,EAAI,SAAY2E,GAC9B,IAAI8tF,EAAO,GAAIyO,EAAMz/F,UAAUC,OAAS,EACxC,MAAQw/F,KAAQ,EAAIzO,EAAMyO,GAAQz/F,UAAWy/F,EAAM,GAErD,IAAIw3F,EAASr4L,KAAKq4L,OACdz8K,EAAM,KAsBV,OApBoB,IAAhBw2E,EAAK/wF,OACH0uF,EAASqC,EAAK,IAChBx2E,EAAMw2E,EAAK,GACFpZ,EAASoZ,EAAK,MACnBA,EAAK,GAAGimG,SACVA,EAASjmG,EAAK,GAAGimG,QAEfjmG,EAAK,GAAGx2E,MACVA,EAAMw2E,EAAK,GAAGx2E,MAGO,IAAhBw2E,EAAK/wF,SACV0uF,EAASqC,EAAK,MAChBx2E,EAAMw2E,EAAK,IAETrC,EAASqC,EAAK,MAChBimG,EAASjmG,EAAK,KAIXpyF,KAAKo2B,GAAG9xB,EAAO+zL,EAAQz8K,IAGhCi7W,GAAQ32X,UAAUsiY,gBAAkB,SAA0BnqM,GAC5D,OAAO48L,EAAWj1X,KAAKm9X,IAAID,cAAc7kM,IAAW,KAGtDw+L,GAAQ32X,UAAUuiY,gBAAkB,SAA0BpqM,EAAQsC,GACpE36L,KAAKm9X,IAAI3iM,KAAKx6L,KAAKm9X,IAAID,cAAe7kM,EAAQsC,GAC9C36L,KAAK0iY,mBAAmBrqM,EAAQsC,IAGlCk8L,GAAQ32X,UAAUyiY,kBAAoB,SAA4BtqM,EAAQsC,GACxE36L,KAAKm9X,IAAI3iM,KAAKx6L,KAAKm9X,IAAID,cAAe7kM,EAAQznC,EAAM5wJ,KAAKm9X,IAAID,cAAc7kM,IAAW,GAAIsC,IAC1F36L,KAAK0iY,mBAAmBrqM,EAAQsC,IAGlCk8L,GAAQ32X,UAAUwiY,mBAAqB,SAA6BrqM,EAAQsC,GAE1E,IAAK,IAAI/+K,KAAO++K,EAAQ,CACtB,IAAI10J,EAAKoyJ,EAAS,KAAOz8K,EAEpB5b,KAAKk+X,kBAAkBp+X,eAAemmC,WAIpCjmC,KAAKk+X,kBAAkBj4V,KAIlC4wV,GAAQ32X,UAAU0iY,oBAAsB,SACtCt+X,EACA+zL,EACAu9K,EACAsnB,EACAthX,EACAha,GAMA,IAJA,IAAI63X,EAAUphM,EACVoE,EAAUygM,EAAczD,GAExBh3P,EAAQziI,KAAK6hY,gBAAgBxpM,EAAQu9K,GAChC10W,EAAI,EAAGA,EAAIuhI,EAAMphI,OAAQH,IAAK,CACrC,IACIsD,EAAOi+H,EAAMvhI,GAIjB,GAHAu7L,EAAUygM,EAAc14X,GACxBi1X,EAAUj1X,GAENyoQ,EAAOxwE,KAAYwwE,EAAOxwE,EAAQ7gL,IAKpC,MAIJ,GAAIqxP,EAAOxwE,IAAYwwE,EAAOxwE,EAAQ7gL,IACpC,OAAO,KAEP,IAEIw7W,EAFAz8L,EAAS8B,EAAQ7gL,GAGrB,GAAIha,EAEFw1X,EAAY,IAAI52L,KAAKqiM,aAAapJ,EAASl6X,OAAOwB,OAAO,GAAI45L,EAAQ/4L,QAChE,CACL,IAAIqkC,EAAKwzV,EAAU,KAAO79W,EAC1Bw7W,EAAYp3X,KAAKk+X,kBAAkBj4V,GAC9BmxV,IACHA,EAAYp3X,KAAKk+X,kBAAkBj4V,GAAM,IAAIu6J,KAAKqiM,aAAapJ,EAAS9+L,IAG5E,OAAOy8L,GAIXP,GAAQ32X,UAAU4iY,GAAK,SAAax+X,EAAO+zL,EAAQz8K,EAAKha,GAEtD,IAAKi1X,GAAQ0F,eAAewG,aAI1B,MAAO,GAGT,IAAKnnX,EAAK,CACR,IAAIonX,EAAMphY,EAA0C,IAAI4+L,KAAKqiM,aAAaxqM,EAAQz2L,GAA9D,IAAI4+L,KAAKqiM,aAAaxqM,GAC1C,OAAO2qM,EAAGroM,OAAOr2L,GAGnB,IAAI8yX,EAAYp3X,KAAK4iY,oBAAoBt+X,EAAO+zL,EAAQr4L,KAAKq3X,eAAgBr3X,KAAK+/X,oBAAqBnkX,EAAKha,GACxGivU,EAAMumD,GAAaA,EAAUz8L,OAAOr2L,GACxC,GAAItE,KAAKsgY,gBAAgBzvD,GAAM,CAK7B,IAAK7wU,KAAKw9X,MAAS,MAAM58X,MAAM,oBAC/B,OAAOZ,KAAKw9X,MAAMxH,MAAM70X,EAAEmD,EAAO/E,OAAOwB,OAAO,GAAI,CAAE6a,IAAKA,EAAKy8K,OAAQA,GAAUz2L,IAEjF,OAAOivU,GAAO,IAIlBgmD,GAAQ32X,UAAUiB,EAAI,SAAYmD,GAC9B,IAAI8tF,EAAO,GAAIyO,EAAMz/F,UAAUC,OAAS,EACxC,MAAQw/F,KAAQ,EAAIzO,EAAMyO,GAAQz/F,UAAWy/F,EAAM,GAErD,IAAIw3F,EAASr4L,KAAKq4L,OACdz8K,EAAM,KACNha,EAAU,KAgCd,OA9BoB,IAAhBwwF,EAAK/wF,OACH0uF,EAASqC,EAAK,IAChBx2E,EAAMw2E,EAAK,GACFpZ,EAASoZ,EAAK,MACnBA,EAAK,GAAGimG,SACVA,EAASjmG,EAAK,GAAGimG,QAEfjmG,EAAK,GAAGx2E,MACVA,EAAMw2E,EAAK,GAAGx2E,KAIhBha,EAAUrC,OAAOsD,KAAKuvF,EAAK,IAAIrgE,QAAO,SAAU0vJ,EAAK7lK,GACjD,IAAId,EAEN,OAAI+9D,EAASi8S,EAAkBl5W,GACtBrc,OAAOwB,OAAO,GAAI0gL,GAAO3mK,EAAM,GAAIA,EAAIc,GAAOw2E,EAAK,GAAGx2E,GAAMd,IAE9D2mK,IACN,OAEoB,IAAhBrvF,EAAK/wF,SACV0uF,EAASqC,EAAK,MAChBx2E,EAAMw2E,EAAK,IAETrC,EAASqC,EAAK,MAChBimG,EAASjmG,EAAK,KAIXpyF,KAAK8iY,GAAGx+X,EAAO+zL,EAAQz8K,EAAKha,IAGrCi1X,GAAQ32X,UAAU+4X,KAAO,SAAe30X,EAAO+zL,EAAQz8K,EAAKha,GAE1D,IAAKi1X,GAAQ0F,eAAewG,aAI1B,MAAO,GAGT,IAAKnnX,EAAK,CACR,IAAIonX,EAAMphY,EAA0C,IAAI4+L,KAAKqiM,aAAaxqM,EAAQz2L,GAA9D,IAAI4+L,KAAKqiM,aAAaxqM,GAC1C,OAAO2qM,EAAGpiM,cAAct8L,GAG1B,IAAI8yX,EAAYp3X,KAAK4iY,oBAAoBt+X,EAAO+zL,EAAQr4L,KAAKq3X,eAAgBr3X,KAAK+/X,oBAAqBnkX,EAAKha,GACxGivU,EAAMumD,GAAaA,EAAUx2L,cAAct8L,GAC/C,GAAItE,KAAKsgY,gBAAgBzvD,GAAM,CAK7B,IAAK7wU,KAAKw9X,MAAS,MAAM58X,MAAM,oBAC/B,OAAOZ,KAAKw9X,MAAMxH,MAAMiD,KAAK30X,EAAO+zL,EAAQz8K,EAAKha,GAEjD,OAAOivU,GAAO,IAIlBtxU,OAAOywJ,iBAAkB6mO,GAAQ32X,UAAWq/X,IAI5ChgY,OAAO6uC,eAAeyoV,GAAS,iBAAkB,CAC/Cn1X,IAAK,WACH,IAAK66X,GAAgB,CACnB,IAAI0G,EAA8B,qBAATziM,KACzB+7L,GAAiB,CACf2G,eAAgBD,GAA8C,qBAAxBziM,KAAKC,eAC3CsiM,aAAcE,GAA4C,qBAAtBziM,KAAKqiM,cAI7C,OAAOtG,MAIX1F,GAAQnoB,QAAUA,EAClBmoB,GAAQtwW,QAAU,SAElB,a,sEC5sEIA,EAAU,QAEd,SAAS08K,EAAQnoL,GAaf,OATEmoL,EADoB,oBAAXv9L,QAAoD,kBAApBA,OAAOC,SACtC,SAAUmV,GAClB,cAAcA,GAGN,SAAUA,GAClB,OAAOA,GAAyB,oBAAXpV,QAAyBoV,EAAI7a,cAAgByF,QAAUoV,IAAQpV,OAAOxF,UAAY,gBAAkB4a,GAItHmoL,EAAQnoL,GAGjB,SAASqoX,EAAgBroX,EAAKc,EAAKtX,GAYjC,OAXIsX,KAAOd,EACTvb,OAAO6uC,eAAetzB,EAAKc,EAAK,CAC9BtX,MAAOA,EACP+pC,YAAY,EACZC,cAAc,EACd0yH,UAAU,IAGZlmJ,EAAIc,GAAOtX,EAGNwW,EAGT,SAAS6kJ,EAAQ9mE,EAAQuqS,GACvB,IAAIvgY,EAAOtD,OAAOsD,KAAKg2F,GAEvB,GAAIt5F,OAAOsvK,sBAAuB,CAChC,IAAIrF,EAAUjqK,OAAOsvK,sBAAsBh2E,GACvCuqS,IAAgB55N,EAAUA,EAAQttJ,QAAO,SAAUmxK,GACrD,OAAO9tL,OAAOugK,yBAAyBjnE,EAAQw0F,GAAKh/I,eAEtDxrC,EAAKmD,KAAKjC,MAAMlB,EAAM2mK,GAGxB,OAAO3mK,EAGT,SAASwgY,EAAe19W,GACtB,IAAK,IAAIzkB,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CACzC,IAAIolE,EAAyB,MAAhBllE,UAAUF,GAAaE,UAAUF,GAAK,GAE/CA,EAAI,EACNy+J,EAAQpgK,OAAO+mE,IAAS,GAAMxjE,SAAQ,SAAU8Y,GAC9CunX,EAAgBx9W,EAAQ/J,EAAK0qD,EAAO1qD,OAE7Brc,OAAO8iL,0BAChB9iL,OAAOywJ,iBAAiBrqI,EAAQpmB,OAAO8iL,0BAA0B/7G,IAEjEq5F,EAAQpgK,OAAO+mE,IAASxjE,SAAQ,SAAU8Y,GACxCrc,OAAO6uC,eAAezoB,EAAQ/J,EAAKrc,OAAOugK,yBAAyBx5F,EAAQ1qD,OAKjF,OAAO+J,EAGT,SAAS69K,EAAmB1nL,GAC1B,OAAO2nL,EAAmB3nL,IAAQ4nL,EAAiB5nL,IAAQ6nL,EAA4B7nL,IAAQ8nL,IAGjG,SAASH,EAAmB3nL,GAC1B,GAAIpc,MAAM21E,QAAQv5D,GAAM,OAAO+nL,EAAkB/nL,GAGnD,SAAS4nL,EAAiBI,GACxB,GAAsB,qBAAXp+L,QAA0BA,OAAOC,YAAYpG,OAAOukM,GAAO,OAAOpkM,MAAMshG,KAAK8iG,GAG1F,SAASH,EAA4Bz9L,EAAG69L,GACtC,GAAK79L,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAO29L,EAAkB39L,EAAG69L,GACvD,IAAI5iM,EAAI5B,OAAOW,UAAUqO,SAAS5N,KAAKuF,GAAGqmC,MAAM,GAAI,GAEpD,MADU,WAANprC,GAAkB+E,EAAEjG,cAAakB,EAAI+E,EAAEjG,YAAYoT,MAC7C,QAANlS,GAAqB,QAANA,EAAoBzB,MAAMshG,KAAK96F,GACxC,cAAN/E,GAAqB,2CAA2CmO,KAAKnO,GAAW0iM,EAAkB39L,EAAG69L,QAAzG,GAGF,SAASF,EAAkB/nL,EAAK+kF,IACnB,MAAPA,GAAeA,EAAM/kF,EAAIza,UAAQw/F,EAAM/kF,EAAIza,QAE/C,IAAK,IAAIH,EAAI,EAAG8iM,EAAO,IAAItkM,MAAMmhG,GAAM3/F,EAAI2/F,EAAK3/F,IAAK8iM,EAAK9iM,GAAK4a,EAAI5a,GAEnE,OAAO8iM,EAGT,SAASJ,IACP,MAAM,IAAI99L,UAAU,wIAGtB,SAASw9X,EAA2Bp9X,EAAGq9X,GACrC,IAAIzsO,EAEJ,GAAsB,qBAAXpxJ,QAAgD,MAAtBQ,EAAER,OAAOC,UAAmB,CAC/D,GAAIjG,MAAM21E,QAAQnvE,KAAO4wJ,EAAK6sC,EAA4Bz9L,KAAOq9X,GAAkBr9X,GAAyB,kBAAbA,EAAE7E,OAAqB,CAChHy1J,IAAI5wJ,EAAI4wJ,GACZ,IAAI51J,EAAI,EAEJg/J,EAAI,aAER,MAAO,CACLj/J,EAAGi/J,EACH/+J,EAAG,WACD,OAAID,GAAKgF,EAAE7E,OAAe,CACxBwD,MAAM,GAED,CACLA,MAAM,EACNP,MAAO4B,EAAEhF,OAGbwD,EAAG,SAAUA,GACX,MAAMA,GAERO,EAAGi7J,GAIP,MAAM,IAAIp6J,UAAU,yIAGtB,IAEIgJ,EAFA00X,GAAmB,EACnBC,GAAS,EAEb,MAAO,CACLxiY,EAAG,WACD61J,EAAK5wJ,EAAER,OAAOC,aAEhBxE,EAAG,WACD,IAAIqD,EAAOsyJ,EAAGryJ,OAEd,OADA++X,EAAmBh/X,EAAKK,KACjBL,GAETE,EAAG,SAAUA,GACX++X,GAAS,EACT30X,EAAMpK,GAERO,EAAG,WACD,IACOu+X,GAAiC,MAAb1sO,EAAG4sO,QAAgB5sO,EAAG4sO,SAC/C,QACA,GAAID,EAAQ,MAAM30X,KAW1B,SAASumE,EAAQ+uB,GACf,OAAO1kG,MAAM21E,QAAQ+uB,GAEvB,SAASxU,EAAYwU,GACnB,MAAsB,qBAARA,EAEhB,SAASprB,EAASorB,GAChB,MAAwB,WAAjB6+F,EAAQ7+F,GAEjB,SAASu/R,EAAav/R,GACpB,MAAwB,WAAjB6+F,EAAQ7+F,IAA6B,OAARA,EAEtC,SAAStU,EAAWsU,GAClB,MAAsB,oBAARA,EAEhB,SAASrU,EAASqU,GAChB,MAAsB,kBAARA,EAGhB,SAASw/R,IACP,IACE,OAAQh0S,EAAYzrE,QACpB,MAAOzf,GACP,OAAO,GAGX,IAAIm/X,EAAkBD,IAElB7xP,EAAU8xP,EAAkB1/W,OAAS,EAAAhf,EAErCwxE,EAAUo7D,EAAQp7D,SAAW,GACjC,SAASu+E,EAAKv6I,GAEPg8D,GAAYA,EAAQu+E,MAIzBv+E,EAAQu+E,KAAKv6I,GAEf,IAAImpX,EAA0B,WAC5B,OAAO5uO,EAAK,yDAOV6uO,EAAc,CAChBt/T,WAAOv+B,EACP89V,WAAY,GACZC,cAAe,KACfC,UAAW,GACXC,UAAW,GACXC,UAAW,GACXntN,KAAM,GACNwR,KAAM,GACN18I,KAAM,GACNy+B,MAAO,GACP65T,OAAQ,GACRC,SAAU,GACVC,+BAAgC,GAChCC,sCAAuC,IAErCC,EAAgB,WAGhB9qB,EAAU,WAGVr5M,EAAY,gBAGZokO,EAAe,gCAKfC,EAAe,OAEfC,EAAsB,WAEtBC,EAAiB,UAEjBC,EAAW,MAEXC,EAAe,GAEfC,GAAkB,EAClBC,EAAiB,CACnBtrB,QAASA,EACTr5M,UAAWA,EACXokO,aAAcA,EACdC,aAAcA,EACdE,eAAgBA,EAChBD,oBAAqBA,EACrBI,gBAAiBA,EACjBD,aAAcA,EACdD,SAAUA,GAGRI,EAAkB3lY,OAAOsD,KAAKkhY,GAE9BoB,EAAoB,CAACD,EAAgB,IAAKA,EAAgB,KAE1DE,EAAqB,CAACF,EAAgB,GAAIA,EAAgB,GAAI,WAAW1+X,OAAO2+X,GAEhFE,EAAwB,CAACH,EAAgB,GAAIA,EAAgB,GAAIA,EAAgB,IAEjFI,EAAuB,CAAC,OAAQ,QAAS,UAGzCC,EAAoB,CAAC,OAAQ,OAAQ,QAErCC,EAAuB,CAAC,WAAY,SAAU,SAE9CC,EAA6B,CAAC,YAAa,UAAW,QACtDC,EAAgB,CAAC,OAAQ,OAAQ,YAEjCC,EAAuB,CAAC,OAAQ,SAEhCC,EAAwB,CAAC,kBAAmB,MAAO,kBAAmB,QAAS,YAAa,WAAY,UAAW,UAAW,WAAY,UAAW,UAAW,iBAAkB,eAAgB,kBAAmB,QAAS,WAAY,UAAW,iBAAkB,SAAU,gBAAiB,QAAS,QAAS,YAAa,OAAQ,WAAY,QAAS,SAAU,WAAY,UAAW,aAAc,SAAU,OAAQ,cAAe,WAAY,WAAY,WAAY,SAAU,WAAY,WAAY,WAAY,YAAa,gBAAiB,WAE9hBC,EAAU,KACd,SAASC,EAAc3hM,EAAM4hM,EAAQC,GACnC,IAAIjB,EAAe5gM,EAAK4gM,aAKnBgB,EAAOtB,GAAezkV,cAAgB+lV,EAAOtB,GAAewB,cAA6B,YAAbD,IAC/ED,EAAOtB,GAAezkV,YAAc,MAGlC+lV,EAAOtB,GAAezkV,cAAgB+lV,EAAOtB,GAAeyB,SAG9DC,IAAY,WACEJ,EAAO3sB,QAAQp2J,YAC1B+hL,GAWP,SAASoB,GAAY9zW,EAAUjvB,GAG7B,GAFAA,OAAsB8iC,IAAZ9iC,EAAwB,GAAKA,EAElCA,EASL,OAJAmjE,aAAas/T,GACbA,EAAUn9V,YAAW,WACnBrW,MACCjvB,GACIyiY,EARLxzW,IAmBJ,SAAS/J,GAAK2W,EAAOinN,EAAWjiP,GAC9B,GAAMvE,MAAMQ,UAAUooB,KAWtB,OAAO2W,EAAM3W,KAAK49N,EAAWjiP,GAT3B,IAAK,IAAI2pF,EAAM,EAAGA,EAAM3uD,EAAM59B,OAAQusF,IACpC,GAAIs4J,EAAUvlP,KAAKsD,EAASg7B,EAAM2uD,GAAMA,EAAK3uD,GAC3C,OAAOA,EAAM2uD,GASrB,SAASyrE,GAAUp6H,EAAOinN,EAAWjiP,GACnC,IAAMvE,MAAMQ,UAAUm5J,UAAW,CAE/B,IAAK,IAAIzrE,EAAM,EAAGA,EAAM3uD,EAAM59B,OAAQusF,IACpC,GAAIs4J,EAAUvlP,KAAKsD,EAASg7B,EAAM2uD,GAAMA,EAAK3uD,GAC3C,OAAO2uD,EAIX,OAAQ,EAGV,OAAO3uD,EAAMo6H,UAAU6sF,EAAWjiP,GAEpC,SAASswJ,GAAQnwD,GACf,OAAM1kG,MAAMshG,KAILthG,MAAMshG,KAAKoD,GAHT1kG,MAAMQ,UAAUqsC,MAAM5rC,KAAKyjG,GAKtC,SAASvrB,GAAS55C,EAAO36B,GACvB,IAAM5E,MAAMQ,UAAU24E,SAAU,CAC9B,IAAK,IAAI+U,KAAO3uD,EACd,GAAIA,EAAM2uD,KAAStpF,EACjB,OAAO,EAIX,OAAO,EAGT,OAAO26B,EAAM45C,SAASv0E,GAGxB,IAAIw1U,GAAgB,SAAuB11O,EAAKowD,GAC9C,OAAQA,GAAM7+G,UAAUg7P,iBAAiBvsM,IAE3C,SAAS6tJ,GAAOxlJ,EAAMuvD,GAKpB,OAJKvvD,EAAKuvD,KACRvvD,EAAKuvD,GAAOrmH,SAASk1B,qBAAqBmxF,GAAK,IAG1CvvD,EAAKuvD,GAEd,SAASoqO,GAAejiM,GACtB,IAAIn/L,EAAOm/L,EAAKn/L,KACZqhY,EAAQliM,EAAKkiM,MACjB,OAAOrhY,EAAO,OAASqhY,EAAQ,QAAU,OAE3C,SAASC,GAAcv7T,EAAYw7T,EAAOn3M,GACxC,IAAIxzD,EAAQ2qQ,EAAM3qQ,MACd0kC,EAAYimO,EAAMjmO,UAClBpzI,EAAOq5W,EAAMr5W,KACby3W,EAAe4B,EAAM5B,aACzBv1M,EAAaA,GAAc,GAC3B,IAAIo3M,EAAU,CAAC,GAAGhgY,OAAO0mB,EAAM,KAAK1mB,OAAO85J,EAAW,MAAO95J,OAAOo1H,EAAO,MAAQ,GAAGp1H,OAAO0mB,EAAM,UAAU1mB,OAAOm+X,EAAc,MAAM5oX,KAAI,SAAUT,GACpJ,IAAK,IAAIM,KAAOwzK,EAAY,CAC1B,IAAIlwJ,EAAMkwJ,EAAWxzK,GACjB6qX,EAAiBvnW,IAAe,IAARA,EAAe,KAAM14B,OAAO04B,EAAK,KAAQ,GACrE5jB,GAAS,SAAS9U,OAAOoV,GAAKpV,OAAOigY,EAAgB,KAGvD,OAAOnrX,KAET,OAAOi5I,GAAQulL,GAAc0sD,EAAQxgX,KAAK,MAAO+kD,IAEnD,SAAS27T,GAAsBC,EAAO/qQ,GACpC,IAAI0kC,EAAYqmO,EAAMrmO,UACtB/L,GAAQulL,GAAc,IAAItzU,OAAO85J,EAAW,MAAO95J,OAAOo1H,EAAO,QAAS7/G,KAAI,SAAUy4I,GACtF,OAAOA,EAAGrwB,YAGd,SAASupE,GAAgBl5C,EAAIoyO,GAC3BpyO,EAAGk5C,gBAAgBk5L,GAGrB,SAASC,GAAY9rB,GAEnB,OADAA,EAAKA,GAAM/6W,KACJ+6W,KAA6B,IAAtBA,EAAG0pB,IAA2BzrT,EAAS+hS,EAAG0pB,KAG1D,SAASqC,GAAiB/rB,GAExB,OADAA,EAAKA,GAAM/6W,KACJ+6W,IAAOnrR,EAAYmrR,EAAG0pB,IAG/B,SAASnlQ,GAAMymQ,EAAQ/iL,GAErB,OADA+iL,EAAOtB,GAAeyB,SAAU,EACzB,WACL,OAAO3mQ,GAAOwmQ,EAAQ/iL,IAG1B,SAASzjF,GAAOwmQ,EAAQ/iL,GAGtB,GAFA+iL,EAAOtB,GAAeyB,SAAU,EAE5BljL,QAAuB98K,IAAZ88K,EACb,OAAO+iL,EAAO3sB,QAAQp2J,UAI1B,SAAS+jL,GAAahB,GACpB,IAAIiB,EAASjB,EAAOkB,SAEhBlB,EAAOtB,GAAeyC,WAAcF,IAKxCjB,EAAOtB,GAAeyC,WAAY,EAClCF,EAAOG,YAAW,SAAUr7R,EAAI9K,EAAMv8F,GACpC66H,GAAMymQ,GACNthY,OAEFuiY,EAAOI,WAAU,WACfrB,EAAOjiD,WAAU,WACf,IAAIujD,EAAU9nQ,GAAOwmQ,GACjBnsB,EAAWytB,EAAQztB,SAEnBA,GAAY9pR,EAAW8pR,EAAS0tB,kBAClC1tB,EAAS0tB,gBAAgB1tB,UAMjC,IAAIh+O,GAAQ,EACZ,SAAS2rQ,GAAYlhD,EAAKzkV,GAExB,IAAI4lY,EAAwB,CAAC,YAAa,cAAe,eACrDC,GAAoB,EAExB,MAAO,CACLp9O,aAAc,WACZ,IAAIq9O,EAAS1nY,KAET2nY,EAAU,QACV59O,EAAQ/pJ,KAAK2nY,GACb39O,EAAWhqJ,KAAKgqJ,SAChB49O,EAAkBvhD,EAAIrgS,OAAO6hV,SAgCjC,GA/BAtoY,OAAO6uC,eAAepuC,KAAM,eAAgB,CAC1CsuC,cAAc,EACd5sC,IAAK,WAOH,OALIkmY,IAAoB79O,EAAM06O,GAAeqD,0BAC3C5yO,EAAK,4IACLnL,EAAM06O,GAAeqD,yBAA0B,GAG1CjB,GAAY7mY,SAInBA,OAAS+pJ,GACXA,EAAMiwN,MAAM,oBAAoB,WAO9B,GANAytB,EAAoBznY,KAAK8/U,KAA6B,IAAtB9/U,KAAK8/U,IAAIp4I,UAAkB1nM,KAAK8/U,IAAI54I,aAAa,yBAM5EugM,GAAqB19O,EAAM06O,IAAiD,IAA/B16O,EAAM06O,GAAe7oQ,MAAa,CAClF,IAAImsQ,EAAU91I,GAAO,GAAI,QACzBw1I,EAAoBM,GAAWA,EAAQ7gM,aAAatlM,EAAQ8iY,mBAQ9D90S,EAAYo6D,EAASpoJ,EAAQ+3W,WAA2C,OAA9B3vN,EAASpoJ,EAAQ+3W,SAA/D,CA2BA,GAvBK5vN,EAAM06O,KACT16O,EAAM06O,GAAiB,CACrB7oQ,MAAOA,IAETA,KAEIgsQ,GAAmB79O,EAAMC,SAASpoJ,EAAQ+3W,UAE5C35W,KAAK8jV,WAAU,WAEb,IAAIu4B,EAAQ/zV,GAAKyhI,EAAMwyN,WAAW,SAAUtoS,GAC1C,OAAOA,EAAEy1E,QAAUz1E,EAAEy1E,OAAOs+O,aAG1B3rB,GAASA,EAAM3yN,OAAOs+O,UAAUpmY,EAAQ+3W,UAC1CzkN,EAAK,6DAA6D1uJ,OAAO5E,EAAQ+3W,QAAS,kKAQ7F35W,KAAKykY,GAAgB,CACxBzkY,KAAKykY,IAAiB,EACtB,IAAI5lV,EAAS7+C,KAAK2lX,QAElB,MAAO9mU,GAAUA,IAAWkrG,EACtBn6D,EAAY/wC,EAAO4lV,MACrB5lV,EAAO4lV,IAAiB,GAG1B5lV,EAASA,EAAO8mU,QAMhB71R,EAAWk6D,EAASpoJ,EAAQ+3W,YAC9B3vN,EAAS8jG,SAAW9jG,EAAS8jG,UAAY,GACzC9jG,EAAS8jG,SAASm6I,UAAYj+O,EAASpoJ,EAAQ+3W,SAE1C35W,KAAKkoY,WAIRloY,KAAK6uV,IAAI,gBAAgB,WACvB7uV,KAAK4lW,OAAO,aAAa,WACvBkgC,EAAclkY,EAAS5B,KAAK2nY,GAAU,kBAU1C/3S,EAAYm6D,EAAM06O,GAAezkV,eACnC+pG,EAAM06O,GAAezkV,YAAchgD,KAAKkoY,UAEnCn+O,EAAM06O,GAAezkV,cACnB+pG,EAAM06O,GAAe0D,iBACxBp+O,EAAM06O,GAAe0D,gBAAiB,EACtCnoY,KAAK6uV,IAAI,oBAAoB,WAC3B,IAAI9kM,EAAQ/pJ,KAAK2nY,GAGbF,IACF19O,EAAM06O,GAAe7oQ,MAAQh6H,EAAQkjY,cAM3C9kY,KAAK6uV,IAAI,gBAAgB,WACvB,IAAI9kM,EAAQ/pJ,KAAK2nY,GAEb59O,EAAM06O,GAAezkV,cAMzB+pG,EAAM06O,GAAewB,cAAe,EAEpCjmY,KAAK8jV,WAAU,WACb,IAAIskD,EAAuBr+O,EAAMqvN,QAAQp2J,UACrCv2G,EAAO27R,EAAqB37R,KAC5BmtQ,EAAWwuB,EAAqBxuB,UAQvB,IAATntQ,GAAuD,OAArCs9C,EAAM06O,GAAezkV,aACzChgD,KAAK8jV,WAAU,WACb,OAAOgiD,EAAclkY,EAASmoJ,EAAO,WAIzCA,EAAM06O,GAAezkV,aAAc,SAC5B+pG,EAAM06O,GAAewB,cAGvBrkY,EAAQymY,yBAA2BzuB,EAAS0tB,iBAC/CP,GAAah9O,UAKfnoJ,EAAQymY,yBACVtB,GAAah9O,KAKnB/pJ,KAAK6uV,IAAI,kBAAkB,WACzB,IAAIpuV,EAAQT,KAMPA,KAAK2lX,SAAYkhB,GAAY7mY,eAI3BA,KAAKsoY,aACZtoY,KAAK8jV,WAAU,WACb,GAAKliV,EAAQojY,iBAAoBvkY,EAAMq/U,KAAQr/U,EAAMq/U,IAAI6+B,aAMzD,IAAI71O,EAAW3oE,aAAY,WACrB1/D,EAAMq/U,KAAkC,OAA3Br/U,EAAMq/U,IAAI6+B,eAK3Bt+S,cAAcyoE,GACdg9P,EAAclkY,EAASnB,EAAMspJ,MAAO,gBACnC,SAbD+7O,EAAclkY,EAASnB,EAAMspJ,MAAO,oBAiBtC/pJ,KAAKkoY,WAMTV,EAAsB1kY,SAAQ,SAAUylY,GACtCb,EAAO74C,IAAI,QAAQroV,OAAO+hY,IAAgB,WACxCzC,EAAclkY,EAAS5B,KAAK2nY,GAAUY,YAOhD,SAASC,GAAW5mY,GASlB,OAPAA,EAAUo3E,EAASp3E,GAAWA,EAAU,GAOjC,CACL+3W,QAAS/3W,EAAQ,YAAcqjY,EAAetrB,QAC9Cr5M,UAAW1+J,EAAQ,cAAgBqjY,EAAe3kO,UAClDokO,aAAc9iY,EAAQ,iBAAmBqjY,EAAeP,aACxDC,aAAc/iY,EAAQ,iBAAmBqjY,EAAeN,aACxDE,eAAgBjjY,EAAQ,mBAAqBqjY,EAAeJ,eAC5DD,oBAAqBhjY,EAAQ,wBAA0BqjY,EAAeL,oBACtEG,aAAcn1S,EAAYhuF,EAAQ,iBAAmBqjY,EAAeF,aAAenjY,EAAQ,gBAC3FojY,gBAAiBp1S,EAAYhuF,EAAQ,oBAAsBqjY,EAAeD,gBAAkBpjY,EAAQ,mBACpGkjY,SAAUljY,EAAQ,aAAeqjY,EAAeH,SAChDuD,0BAA2BzmY,EAAQ,4BAIvC,SAASk5M,GAAWl5M,GAClB,IAAI6mY,EAAc,GAElB,IAAK,IAAI7sX,KAAOha,EACd6mY,EAAY7sX,GAAOha,EAAQga,GAG7B,OAAO6sX,EAGT,SAASC,GAActkS,EAAKxoF,GAC1B,OAAKA,GAAQo9D,EAASorB,IAIjB/uB,EAAQ+uB,EAAIxoF,MACfwoF,EAAIxoF,GAAO,IAGNwoF,GAPE/uB,EAAQ+uB,GAAOA,EAAM,GAUhC,IAAIukS,GAAkB,CAAC,CAAC,KAAM,SAAU,CAAC,KAAM,QAAS,CAAC,KAAM,QAAS,CAAC,KAAM,UAAW,CAAC,KAAM,WAC7FC,GAAkB,CAAC,CAAC,KAAM,KAAM,CAAC,KAAM,KAAM,CAAC,KAAM,KAAM,CAAC,KAAM,KAAO,CAAC,KAAM,MAEnF,SAASh5H,GAAO9gP,EAAMltB,EAASinY,EAAeC,GAC5C,IAAInE,EAAe/iY,EAAQ+iY,aACvBoE,EAAwBF,EAAcG,SACtCA,OAAqC,IAA1BD,EAAmC,SAAUnjY,GAC1D,OAAOA,GACLmjY,EACAE,EAAU,GAEd,IAAK,IAAIrtX,KAAOkT,EAAM,CACpB,IAAIxqB,EAAQwqB,EAAKlT,GAEjB,GAAIi9D,GAASusT,EAAoBxpX,GAC/BqtX,EAAQrtX,GAAOtX,MADjB,CAOA,IAAI4kY,EAAa/D,EAAkB,GAEnC,GAAI0D,EAAcK,IAAerwT,GAASgwT,EAAcK,GAAattX,GAEnEqtX,EAAQrtX,GAAOtX,MAFjB,CAMA,IAAI6kY,EAAQr6W,EAAK61W,GAEjB,GAAIwE,IACFD,EAAa/D,EAAkB,GAE3B0D,EAAcK,IAAeL,EAAcK,GAAYC,IAAUtwT,GAASgwT,EAAcK,GAAYC,GAAQvtX,IAC9GqtX,EAAQrtX,GAAOtX,OAqBnB,GAhBIyrF,EAASzrF,GACX2kY,EAAQrtX,GAAOotX,EAAS1kY,GACf+wE,EAAQ/wE,GACjB2kY,EAAQrtX,GAAOtX,EAAMyX,KAAI,SAAUnW,GACjC,OAAI+9X,EAAa/9X,GACRgqQ,GAAOhqQ,EAAGhE,EAASinY,GAAe,GAGpCG,EAASpjY,MAET+9X,EAAar/X,GACtB2kY,EAAQrtX,GAAOg0P,GAAOtrQ,EAAO1C,EAASinY,GAAe,GAErDI,EAAQrtX,GAAOtX,EAGbwkY,EAAY,CACd,IAAIM,EAAaJ,EAASptX,GAEtBA,IAAQwtX,IACVH,EAAQG,GAAcH,EAAQrtX,UACvBqtX,EAAQrtX,OAKrB,OAAOqtX,EAET,SAASI,GAAeznY,EAASktB,EAAMw6W,GACrCA,EAAkBA,GAAmB,GAGrC,IAAIT,EAAgB,CAClBG,SAAU,SAAkB1kY,GAC1B,OAAOglY,EAAgBv3W,QAAO,SAAUmN,EAAKqqW,GAC3C,OAAOrqW,EAAIhuB,QAAQq4X,EAAI,GAAIA,EAAI,MAC9BjlY,KAeP,OAZA6gY,EAAkBriY,SAAQ,SAAUomY,EAAY52V,GAC9C,GAAc,IAAVA,EACFo2V,GAAc55W,EAAMo6W,QACf,GAAc,IAAV52V,EACT,IAAK,IAAI12B,KAAOkT,EAAKo6W,GACnBR,GAAc55W,EAAKo6W,GAAattX,GAIpCitX,EAAcK,GAAcp6W,EAAKo6W,MAG5Bt5H,GAAO9gP,EAAMltB,EAASinY,GAG/B,SAASW,GAAcrlM,EAAMslM,EAAYnxT,EAAU4sL,GACjD,IAAIstC,EAAYruG,EAAKquG,UACjBoyF,EAAsBzgM,EAAKygM,oBAC3BC,EAAiB1gM,EAAK0gM,eAE1B,OAAiB,IAAbvsT,IAAyD,IAApCmxT,EAAW7E,KAKhCh1S,EAAYtX,IAAamxT,EAAW7E,KACtCtsT,EAAWmxT,EAAW7E,GACtB6E,EAAW7E,IAAuB,GAI/BtsT,GAMDsX,EAAYs1K,KACdA,EAAQukI,EAAW5E,IAGrB4E,EAAW5E,GAAkB/0S,EAAWxX,GAAYA,EAAS33E,KAAK6xS,EAAWttC,GAAS5sL,EAASpnE,QAAQ,MAAOg0P,IACvG,WATEukI,EAAW7E,IACX,IAWX,SAAS8E,GAAYvlM,EAAMx+K,EAAQ2gD,GACjC,IAAIksO,EAAYruG,EAAKquG,UACjBmyF,EAAexgM,EAAKwgM,aACpBC,EAAsBzgM,EAAKygM,oBAC3BC,EAAiB1gM,EAAK0gM,eAItBniM,EAAc,GAElB,OAAK/8K,EAAOtkB,QAAWilE,EAAOjlE,QAI9BskB,EAAO7iB,SAAQ,SAAU6mY,EAAY7hO,GAEnC,GAAK6hO,EAAWhF,GAAhB,CAKA,IAAI58N,EAAc1O,GAAU/yF,GAAQ,SAAUl9C,GAC5C,OAAOA,EAAKu7W,KAAkBgF,EAAWhF,MAEvCiF,EAAatjU,EAAOyhG,GAExB,IAAqB,IAAjBA,EAAJ,CAQA,GAAI88N,KAAkB+E,QAA6C1jW,IAA/B0jW,EAAW/E,IAAiC,cAAe+E,QAAuC1jW,IAAzB0jW,EAAW37L,UAItH,OAHAvL,EAAY18L,KAAK2jY,QAEjBrjU,EAAOkqC,OAAOu3D,EAAa,GAM7B,GAAmC,OAA/B6hO,EAAW/E,IAAqD,OAAzB+E,EAAW37L,UAAtD,CAOA,IAAI47L,EAAiBF,EAAW/E,GAEhC,GAAKiF,EAAL,CAIA,IAAIC,EAAiBF,EAAWhF,GAEhC,IAAKkF,EASH,OAPAN,GAAc,CACZh3F,UAAWA,EACXoyF,oBAAqBA,EACrBC,eAAgBA,GACf+E,EAAYC,QAEfD,EAAWtxT,UAAW,GAInBsxT,EAAW/E,IAEd2E,GAAc,CACZh3F,UAAWA,EACXoyF,oBAAqBA,EACrBC,eAAgBA,GACf+E,OAAY1jW,EAAWyjW,EAAW9E,UA/BrCv+T,EAAOkqC,OAAOu3D,EAAa,QAlB3B26B,EAAY18L,KAAK2jY,QAVjBjnM,EAAY18L,KAAK2jY,MA8DdjnM,EAAYl8L,OAAO8/D,IApEjBo8H,EAsEX,IAAIqnM,IAAe,EACnB,SAASn5O,GAAMjrI,EAAQ2gD,EAAQ1kE,GAyB7B,OAxBAA,EAAUA,GAAW,QAIAskC,IAAjBogC,EAAO7B,cACF6B,EAAO7B,MAGhB4gU,EAAsBviY,SAAQ,SAAUknY,GACtC,GAAK1jU,EAAO0jU,GAIZ,IAAK,IAAIpuX,KAAO0qD,EAAO0jU,GACjBpuX,KAAO0qD,EAAO0jU,SAAqC9jW,IAAzBogC,EAAO0jU,GAASpuX,KACxCi9D,GAAS+sT,EAAuBhqX,KAASmuX,KAC3C70O,EAAK,8IACL60O,IAAe,UAGVzjU,EAAO0jU,GAASpuX,OAItB,IAAU+J,EAAQ2gD,EAAQ,CAC/Bq8H,WAAY,SAAoB3hM,EAAGC,GACjC,OAAOyoY,GAAY9nY,EAASZ,EAAGC,MAKrC,SAASgpY,GAAqBroY,EAAS4wS,GACrC,OAAO03F,GAAmBtoY,GAAW,GAAI4wS,EAAWuxF,GAiBtD,SAASmG,GAAmBtoY,EAAS4wS,EAAW5tS,GAG9C,GAFAA,EAASA,GAAU,GAEf4tS,EAAU23F,UACZ,OAAOvlY,EAGThD,EAAUA,GAAW,GACrB,IAAIwoY,EAAWxoY,EACX+3W,EAAUywB,EAASzwB,QACnBsuB,EAAYz1F,EAAUy1F,UACtBj+O,EAAWwoJ,EAAUxoJ,SACrBuyN,EAAY/pE,EAAU+pE,UAE1B,GAAIvyN,EAAS2vN,GAAU,CAKrB,IAAIvpW,EAAO63X,GAAaj+O,EAAS2vN,GAI7B3gS,EAAS5oE,KACXxL,EAASgsJ,GAAMhsJ,EAAQwL,EAAMxO,IAiBjC,OAZI26W,EAAUl7W,QACZk7W,EAAUz5W,SAAQ,SAAUunY,GAGrBvD,GAAiBuD,KAItBzlY,EAASslY,GAAmBtoY,EAASyoY,EAAgBzlY,OAIlDA,EAGT,IAAIgrB,GAAY,GAChB,SAAS06W,GAAc3qY,GACrB,MAAsC,cAA9BA,GAAKg2C,UAAU6qF,WAEzB,SAAS+pQ,GAAYjvX,EAAO+W,GACD,IAArBjxB,UAAUC,SACZgxB,EAAW/W,EACXA,EAAQ,IAGVsU,GAAU5pB,KAAK,CAACsV,EAAO+W,IAEzB,SAASm4W,GAAarmM,EAAMj3K,EAAMu/E,EAAMg+R,GACtC,IAAI9F,EAAexgM,EAAKwgM,aACpB+F,GAAmB,EAUvB,OATAj+R,EAAK3pG,SAAQ,SAAUk5J,GAChBA,EAAI2oO,IAAkB3oO,EAAI3pI,WAI/Bq4W,GAAmB,EACnBH,GAAY,GAAG/jY,OAAO0mB,EAAM,UAAU1mB,OAAOm+X,EAAc,MAAOn+X,OAAOw1J,EAAI2oO,GAAe,MAAQ3oO,EAAI3pI,cAGrGo4W,GAAqBC,EAInB9Y,KAHE8Y,EAKX,SAAS9Y,KACH0Y,KACFK,KAOFh1V,SAASinF,mBAAqB,WAC5B+tQ,MAGJ,SAASA,GAAeC,GACtBh7W,GAAU9sB,SAAQ,SAAUsvF,GAG1B,IAAI92E,EAAQ82E,EAAK,GACb//D,EAAW+/D,EAAK,GAChBy4S,EAAW,GAAGrkY,OAAO8U,EAAO,4BAC5B8wR,EAAW,GAEVw+F,IACHx+F,EAAW73I,GAAQulL,GAAc+wD,KAG/BD,GAAgBA,EAAaxwX,QAAQywX,KACvCz+F,EAAW,CAACw+F,IAGdx+F,EAAStpS,SAAQ,SAAU03J,GAKzB,IAAIA,EAAQswO,QAAZ,CAIA,IAAIznY,EAAS,WAIXm3J,EAAQswO,SAAU,EAMlBp9L,GAAgBlzC,EAAS,UACzBnoI,EAASmoI,IAWPA,EAAQuwO,OACV1nY,IAIGm3J,EAAQwwO,UACXxwO,EAAQwwO,SAAU,EAClBxwO,EAAQ90I,iBAAiB,OAAQriB,WAQzC,IAgTI4nY,GAhTAC,GAAe,GAQnB,SAASC,GAAgBvvQ,EAAOh6H,EAASsrB,EAAMsvT,EAAOxgL,GACpD,IAAImoC,EAAOviM,GAAW,GAClB0+J,EAAY6jC,EAAK7jC,UAEjB8qO,EAAoBpvO,EAAImrC,aAAa7mC,GAErC8qO,IACFF,GAAah+W,GAAQ5S,KAAKS,MAAMqjI,UAAUgtP,IAC1C19L,GAAgB1xC,EAAKsE,IAGvB,IAAIlwJ,EAAO86X,GAAah+W,IAAS,GAC7Bm+W,EAAW,GAGf,IAAK,IAAI37L,KAAQt/L,OACI81B,IAAf91B,EAAKs/L,IAAuB9zE,KAASxrH,EAAKs/L,KAC5C27L,EAASrlY,KAAK0pM,GAET8sI,EAAM9sI,WACFt/L,EAAKs/L,GAAM9zE,IAKxB,IAAK,IAAIo0E,KAASwsI,EAAO,CACvB,IAAI8uD,EAAWl7X,EAAK4/L,GAEfs7L,GAAYA,EAAS1vQ,KAAW4gN,EAAMxsI,KACzCq7L,EAASrlY,KAAKgqM,QAEO9pK,IAAjBs2S,EAAMxsI,KACR5/L,EAAK4/L,GAAS5/L,EAAK4/L,IAAU,GAC7B5/L,EAAK4/L,GAAOp0E,GAAS4gN,EAAMxsI,KAKjC,IAAK,IAAI14F,EAAK,EAAGi0R,EAAYF,EAAU/zR,EAAKi0R,EAAUlqY,OAAQi2G,IAAM,CAClE,IAAIk0R,EAASD,EAAUj0R,GACnBm0R,EAAYr7X,EAAKo7X,GACjBE,EAAa,GAEjB,IAAK,IAAIhwQ,KAAU+vQ,EACjB/rY,MAAMQ,UAAU8F,KAAKjC,MAAM2nY,EAAY,GAAGllY,OAAOilY,EAAU/vQ,KAG7D,GAAIgwQ,EAAWrqY,OAAQ,CACrB,IAAIwuM,EAAYh3H,GAAS+sT,EAAuB4F,IAAWE,EAAWp4W,KAAKgkE,SAAW,GAAKo0S,EAAWxvX,QAAO,SAAUtW,GACrH,YAAasgC,IAANtgC,KACNogB,KAAK,KACRg2I,EAAIpxF,aAAa4gU,EAAQ37L,QAEzBnC,GAAgB1xC,EAAKwvO,GAIzBN,GAAah+W,GAAQ9c,EAQvB,SAASu7X,GAAYlnU,IACdA,GAAmB,KAAVA,KAId9uB,SAAS8uB,MAAQA,GAYnB,SAASmnU,GAAUhwQ,EAAOh6H,EAASsrB,EAAMu/E,EAAM+gE,EAAMxoK,GACnD,IAAIm/L,EAAOviM,GAAW,GAClB0+J,EAAY6jC,EAAK7jC,UACjBqkO,EAAexgM,EAAKwgM,aAEpBkH,EAAiBlG,EAAqBp5V,QAC1Cs/V,EAAe7lY,KAAK2+X,GACpB,IAAIp4F,EAAc,GACdu/F,EAAe,CACjBlwQ,MAAOA,EACP0kC,UAAWA,EACXpzI,KAAMA,EACNy3W,aAAcA,GAEZoH,EAAkB,CACpBv+N,KAAM84N,GAAc94N,EAAMs+N,GAC1BzF,MAAOC,GAActhY,EAAM8mY,EAAc,CACvCzF,OAAO,IAETrhY,KAAMshY,GAActhY,EAAM8mY,EAAc,CACtC9mY,MAAM,KAIV,GAAIynG,EAAKprG,OAAS,EAAG,CAInB,IAAIouL,EAAQ,GACZhjF,EAAOA,EAAKvwF,QAAO,SAAUoxJ,GAC3B,IAAI3mK,EAAI2T,KAAKC,UAAU+yJ,GACnB7xC,GAAO5iD,GAAS42G,EAAO9oL,GAE3B,OADA8oL,EAAMzpL,KAAKW,GACJ80H,KAIXhvB,EAAK3pG,SAAQ,SAAUk5J,GACrB,IAAIA,EAAIw1F,KAAR,CAIA,IAAI4+B,EAAaz6O,SAAS40B,cAAcr9C,GAEnC8uI,EAAI4vG,MACPwkB,EAAWxlN,aAAa01F,EAAW1kC,GAGrCr8H,OAAOsD,KAAKm5J,GAAKl5J,SAAQ,SAAU4sM,GAEjC,IAAI72H,GAAS6sT,EAAeh2L,GAI5B,GAAa,cAATA,EAKJ,GAAa,SAATA,EAKJ,GAAa,YAATA,EAWJ,GAAa,aAATA,EAAJ,CAQA,IAAIM,EAAQn3H,GAASgzT,EAAgBn8L,GAAQ,QAAQlpM,OAAOkpM,GAAQA,EAEhEs8L,EAAqBnzT,GAAS+sT,EAAuBl2L,GAEzD,IAAIs8L,GAAuBhwO,EAAI0zC,GAA/B,CAIA,IAAIprM,EAAQ0nY,EAAqB,GAAKhwO,EAAI0zC,GAC1C0gF,EAAWxlN,aAAaolI,EAAO1rM,SAhB7B8rR,EAAW/sR,OAAS,WAClB,OAAO24J,EAAI0zC,GAAM0gF,SAZfA,EAAW67G,WAEb77G,EAAW67G,WAAWnyB,QAAU99M,EAAI89M,QAEpC1pF,EAAWtlN,YAAYn1B,SAAS64H,eAAexS,EAAI89M,eATrD1pF,EAAWniF,UAAY3zL,KAAKC,UAAUyhJ,EAAI/0H,WAL1CmpP,EAAWniF,UAAYjyC,EAAIiyC,aAuC/B,IAEIi+L,EAFAC,EAAcJ,EAAgB3F,GAAepqO,IAG7CowO,EAAkBD,EAAY74W,MAAK,SAAU+4W,EAAa/5V,GAE5D,OADA45V,EAAgB55V,EACT89O,EAAWk8G,YAAYD,MAG5BD,IAAoBF,GAAmC,IAAlBA,GACvCC,EAAY37R,OAAO07R,EAAe,GAElC3/F,EAAYvmS,KAAKoqR,OAGrB,IAAI+7G,EAAc,GAElB,IAAK,IAAII,KAASR,EAChBrsY,MAAMQ,UAAU8F,KAAKjC,MAAMooY,EAAaJ,EAAgBQ,IAqB1D,OAjBAJ,EAAYrpY,SAAQ,SAAU03J,GAC5BA,EAAQzvF,WAAWC,YAAYwvF,MAGjC+xI,EAAYzpS,SAAQ,SAAU03J,GACxBA,EAAQ0sC,aAAa,aACvBliM,EAAK8lE,YAAY0vF,GAIfA,EAAQ0sC,aAAa,cACvBliM,EAAKkpM,aAAa1zC,EAASx1J,EAAK6rM,YAIlCrjC,EAAK1iG,YAAY0vF,MAEZ,CACLgyO,QAASL,EACTM,QAASlgG,GAUb,SAASmgG,GAAqB9wQ,EAAOh6H,EAAS+qY,GAC5C/qY,EAAUA,GAAW,GACrB,IAAIwoY,EAAWxoY,EACX8iY,EAAe0F,EAAS1F,aACxBI,EAAWsF,EAAStF,SAEpBr4R,EAAO,GACPs7R,EAAU91I,GAAOxlJ,EAAM,QAE3B,GAAImvB,IAAUkpQ,GAAYiD,EAAQ7gM,aAAaw9L,GAAe,CAE5Dh3L,GAAgBq6L,EAASrD,GAEzB,IAAIkI,GAAmB,EAWvB,OAVAtH,EAAqBxiY,SAAQ,SAAUoqB,GACjCy/W,EAAQz/W,IAASs9W,GAAa5oY,EAASsrB,EAAMy/W,EAAQz/W,MACvD0/W,GAAmB,MAInBA,GACFhb,MAGK,EAIT,IAAIib,EAAY,GACZC,EAAc,GAElB,IAAK,IAAI5/W,KAAQy/W,EAEf,IAAI9zT,GAASusT,EAAoBl4W,GAIjC,GAAa,UAATA,GAMJ,GAAI2rD,GAASwsT,EAAuBn4W,GAApC,CACE,IAAIigL,EAAUjgL,EAAK8zD,OAAO,EAAG,GAC7BmqT,GAAgBvvQ,EAAOh6H,EAASsrB,EAAMy/W,EAAQz/W,GAAO+kO,GAAOxlJ,EAAM0gG,SAKpE,GAAK93H,EAAQs3T,EAAQz/W,IAArB,CAIA,IAAI6/W,EAAanB,GAAUhwQ,EAAOh6H,EAASsrB,EAAMy/W,EAAQz/W,GAAO+kO,GAAOxlJ,EAAM,QAASwlJ,GAAOxlJ,EAAM,SAC/F+/R,EAAUO,EAAWP,QACrBC,EAAUM,EAAWN,QAErBA,EAAQprY,SACVwrY,EAAU3/W,GAAQu/W,EAClBK,EAAY5/W,GAAQs/W,SArBpBb,GAAYgB,EAAQloU,OAyBxB,MAAO,CACLooU,UAAWA,EACXC,YAAaA,GAKjB,SAAS/yB,GAAOgsB,EAAQnqQ,EAAOh6H,GAC7B,MAAO,CACL+mB,IAAK,SAAaixV,GAChB,OAAOozB,GAAYjH,EAAQnqQ,EAAOh6H,EAASg4W,IAE7Cz1O,OAAQ,WACN,OAAO8oQ,GAAelH,EAAQnqQ,EAAOh6H,KAI3C,SAASorY,GAAYjH,EAAQnqQ,EAAOh6H,EAASg4W,GAE3C,GAAImsB,GAAUA,EAAOjmD,IACnB,OAAO4sD,GAAqB9wQ,EAAOh6H,EAASg4W,GAK9CqxB,GAAeA,IAAgB,GAC/BA,GAAarvQ,GAASg+O,EAExB,SAASqzB,GAAelH,EAAQnqQ,EAAOh6H,GACrC,GAAImkY,GAAUA,EAAOjmD,IAAK,CACxB,IAGIotD,EAHAzgS,EAAO,GAEP0gS,EAAY7J,EAA2B+B,GAG3C,IACE,IAAK8H,EAAUlsY,MAAOisY,EAAQC,EAAUhsY,KAAK0D,MAAO,CAClD,IAAIqoB,EAAOggX,EAAM5oY,MACb6oM,EAAUjgL,EAAK8zD,OAAO,EAAG,GAC7BmqT,GAAgBvvQ,EAAOh6H,EAASsrB,EAAM,GAAI+kO,GAAOxlJ,EAAM0gG,KAEzD,MAAOr+L,GACPq+X,EAAUzoY,EAAEoK,GACZ,QACAq+X,EAAUloY,IAGZ,OAAOyhY,GAAsB9kY,EAASg6H,GAGpCqvQ,GAAarvQ,YACRqvQ,GAAarvQ,GACpBwxQ,MAGJ,SAASC,KACP,OAAOpC,GAET,SAASmC,GAAkB50D,IACrBA,GAAUj5U,OAAOsD,KAAKooY,IAAc5pY,SACtC4pY,QAAe/kW,GAYnB,SAASonW,GAAY1rY,EAASktB,EAAMw6W,EAAiB92F,GACnD5wS,EAAUA,GAAW,GACrB0nY,EAAkBA,GAAmB,GACrC,IAAIc,EAAWxoY,EACX+iY,EAAeyF,EAASzF,aAyC5B,OAtCI71W,EAAK21C,QACP31C,EAAKk1W,WAAal1W,EAAK21C,OAIrB31C,EAAKm1W,eAAwC,OAAvBn1W,EAAKm1W,eAC7BuF,GAAc,CACZh3F,UAAWA,EACXqyF,eAAgB,SACf/1W,EAAMA,EAAKm1W,cAAen1W,EAAKk1W,YAAc,IAK9Cl1W,EAAKmoJ,OACPnoJ,EAAKmoJ,KAAO13K,OAAOsD,KAAKisB,EAAKmoJ,MAAM51K,OAAS,CAACytB,EAAKmoJ,MAAQ,IAGxDnoJ,EAAKid,OAEPjd,EAAKid,KAAOjd,EAAKid,KAAK7vB,QAAO,SAAUqxX,EAAUj7V,EAAOx2B,GACtD,IAAI0xX,IAAYD,EAAS5I,GAEzB,IAAK6I,EACH,OAAO,EAGT,IAAIC,EAAqBn7V,IAAU+mH,GAAUv9I,GAAK,SAAUsN,GAC1D,OAAOA,EAAKu7W,KAAkB4I,EAAS5I,MAEzC,OAAO8I,KAGT3+W,EAAKid,KAAKjpC,SAAQ,SAAU4qY,GAC1B,OAAOlE,GAAc5nY,EAAS8rY,OAI3BrE,GAAeznY,EAASktB,EAAMw6W,GAcvC,SAAStmL,GAAQ+iL,EAAQnkY,GAGvB,GAFAA,EAAUA,GAAW,IAEhBmkY,EAAOtB,GAEV,OADAX,IACO,GAIT,IAAI6J,EAAU1D,GAAqBroY,EAASmkY,GACxCnsB,EAAW0zB,GAAY1rY,EAAS+rY,EAAS/E,GAAiB7C,GAC1DnqQ,EAAQmqQ,EAAOtB,GAAe7oQ,MAC9BnvB,EAAOigS,GAAqB9wQ,EAAOh6H,EAASg4W,GAE5CntQ,GAAQ3c,EAAW8pR,EAASp1C,WAC9Bo1C,EAASp1C,QAAQo1C,EAAUntQ,EAAKogS,UAAWpgS,EAAKqgS,aAChDrgS,EAAO,CACLmhS,UAAWnhS,EAAKogS,UAChBgB,YAAaphS,EAAKqgS,cAItB,IAAI7B,EAAeoC,KAEnB,GAAIpC,EAAc,CAChB,IAAK,IAAI6C,KAAmB7C,EAC1ByB,GAAqBoB,EAAiBlsY,EAASqpY,EAAa6C,WACrD7C,EAAa6C,GAGtBV,IAAkB,GAGpB,MAAO,CACLryB,GAAIgrB,EACJnsB,SAAUA,EAEVntQ,KAAMA,GAYV,SAASshS,GAAmBnsY,EAASsrB,EAAM9c,EAAM+zL,GAC/C,IAAI6pM,EAAkB7pM,EAAK6pM,gBAEvBzH,EAAQ3kY,GAAW,GACnB0+J,EAAYimO,EAAMjmO,UAClBokO,EAAe6B,EAAM7B,aAErBuJ,EAAe,GAEnB,IAAK,IAAIv+L,KAAQt/L,EAAM,CACrB,IAAIk7X,EAAWl7X,EAAKs/L,GAChBg8L,EAAa,GAEjB,IAAK,IAAI9vQ,KAAS0vQ,EAChBI,EAAW1lY,KAAKjC,MAAM2nY,EAAYloM,EAAmB,GAAGh9L,OAAO8kY,EAAS1vQ,MAGtE8vQ,EAAWrqY,SACb4sY,GAAgBrI,EAAsB/sT,SAAS62H,IAASg8L,EAAWp4W,KAAKgkE,SAAW,GAAG9wF,OAAOkpM,GAAQ,GAAGlpM,OAAOkpM,EAAM,MAAOlpM,OAAOklY,EAAW1lX,KAAK,KAAM,KACzJioX,GAAgB,KAQpB,OAJIA,IACFA,GAAgB,GAAGznY,OAAO85J,EAAW,MAAO95J,OAAOk4I,UAAUpkI,KAAKC,UAAUnK,IAAQ,MAGzE,cAAT8c,GAAwB8gX,EACnB,GAAGxnY,OAAOk+X,GAAcl+X,OAAOynY,EAAe,IAAM,IAAIznY,OAAOynY,GAGjEA,EAUT,SAASC,GAAetsY,EAASsrB,EAAM9c,EAAM+9X,GAC3C,IAAIhqM,EAAOgqM,GAAoB,GAC3B1oF,EAAKthH,EAAKshH,GAEd,OAAKr1S,EAIE,IAAI5J,OAAO0mB,EAAM,KAAK1mB,OAAO4J,EAAM,MAAM5J,OAAO0mB,EAAM,KAAK1mB,OAAOi/S,EAAK,KAAO,IAH5E,GAcX,SAAS2oF,GAAaxsY,EAASsrB,EAAMu/E,EAAM0hS,GACzC,IAAIhqM,EAAOviM,GAAW,GAClBkjY,EAAW3gM,EAAK2gM,SAChBxkO,EAAY6jC,EAAK7jC,UACjBqkO,EAAexgM,EAAKwgM,aAEpB4B,EAAQ4H,GAAoB,GAC5BvyQ,EAAQ2qQ,EAAM3qQ,MACdyyQ,EAAc9H,EAAM+H,MACpBA,OAAwB,IAAhBD,GAAgCA,EACxCE,EAAahI,EAAMvhY,KACnBA,OAAsB,IAAfupY,GAAgCA,EACvCC,EAAcjI,EAAMF,MACpBA,OAAwB,IAAhBmI,GAAiCA,EACzCC,EAAWlI,EAAM9gF,GACjBA,OAAkB,IAAbgpF,GAA8BA,EAEnC5C,EAAiB,CAAClH,GAAcn+X,OAAOg9L,EAAmBmiM,IAE9D,OAAKl5R,GAASA,EAAKprG,OAKZorG,EAAK16E,QAAO,SAAU28W,EAAS1yO,GACpC,GAAIA,EAAIw1F,KACN,OAAOk9I,EAGT,IAAIC,EAAUpvY,OAAOsD,KAAKm5J,GAE1B,GAAuB,IAAnB2yO,EAAQttY,OACV,OAAOqtY,EAGT,GAAIp3S,QAAQ0kE,EAAIh3J,QAAUA,GAAQsyF,QAAQ0kE,EAAIqqO,SAAWA,EACvD,OAAOqI,EAGT,IAAIlyD,EAAQxgL,EAAI4vG,KAAO,GAAK,IAAIplQ,OAAO85J,EAAW,MAAO95J,OAAOo1H,KAAoB,IAAV0yQ,EAAkB,IAAMxJ,GAAW,KAE7G,IAAK,IAAIp1L,KAAQ1zC,EAEf,IAAIypO,EAA2B5sT,SAAS62H,KAASg2L,EAAc7sT,SAAS62H,GAIxE,GAAa,aAATA,EAAJ,CAMA,IAAImuB,EAAS,GAETguK,EAAehzT,SAAS62H,KAC1BmuB,EAAS,SAGX,IAAI+wK,GAAiB/wK,GAAU+nK,EAAsB/sT,SAAS62H,GAE1Dk/L,IAAkB5yO,EAAI0zC,KAI1B8sI,GAAS,IAAIh2U,OAAOq3N,GAAQr3N,OAAOkpM,IAASk/L,EAAgB,GAAK,KAAMpoY,OAAOw1J,EAAI0zC,GAAO,YAjBvF8sI,GAAS,0BAoBb,IAAIv1S,EAAO,GAEP+0H,EAAI/0H,OACNA,EAAO3sB,KAAKC,UAAUyhJ,EAAI/0H,OAI5B,IAAIzlC,EAAUw6J,EAAIiyC,WAAajyC,EAAI89M,SAAW7yU,EAG1C4nW,GAAatJ,EAAkB1sT,SAAS3rD,GAExC2uV,EAAagzB,GAAarJ,EAAqB3sT,SAAS3rD,GAE5D,MAAO,GAAG1mB,OAAOkoY,EAAS,KAAKloY,OAAO0mB,GAAM1mB,OAAOg2U,GAAOh2U,QAAQq1W,GAAcgzB,EAAY,IAAM,GAAI,MAAQhzB,EAAa,GAAGr1W,OAAOhF,EAAS,MAAMgF,OAAO0mB,EAAM,KAAO,KAAOu4R,EAAK,KAAO,MAC1L,IA/DM,GA0EX,SAASqpF,GAAuBltY,EAASg4W,EAAUm1B,GACjD,IAAIC,EAAiB,CACnB5+X,KAAMwpW,EACN5sB,eAAW9mT,EACX+oW,QAAS,SAAiBrzQ,EAAOg+O,GAC/B55W,KAAKgtV,UAAYhtV,KAAKgtV,WAAa,GACnChtV,KAAKgtV,UAAUpxN,GAASg+O,GAE1Bs1B,cAAe,SAAuBl6O,GACpC,IAAI7uJ,EAAInG,KAAKmvY,UAEb,OAAQn6O,EAAKhwJ,MAAQgwJ,EAAKqxO,MAAQ,GAAKlgY,EAAEs+D,MAAMwuB,KAAK+hE,IAAS7uJ,EAAE4lC,KAAKknD,KAAK+hE,GAAQ7uJ,EAAE8wK,KAAKhkF,KAAK+hE,GAAQ7uJ,EAAEsiL,KAAKx1F,KAAK+hE,GAAQ7uJ,EAAEqkE,MAAMyoB,KAAK+hE,GAAQ7uJ,EAAEk+X,OAAOpxS,KAAK+hE,GAAQ7uJ,EAAEm+X,SAASrxS,KAAK+hE,IAEtLm6O,UAAW,CACT3hO,KAAM,SAAci4I,GAClB,OAAOupF,EAAeE,cAAc7L,EAAeA,EAAe,GAAI0L,GAAsB,GAAI,CAC9FtpF,GAAIA,MAGR2pF,YAAa,SAAqB3pF,GAChC,OAAOupF,EAAeE,cAAc7L,EAAeA,EAAe,GAAI0L,GAAsB,GAAI,CAC9FtpF,GAAIA,EACJ4gF,OAAO,MAGXgJ,WAAY,SAAoB5pF,GAC9B,OAAOupF,EAAeE,cAAc7L,EAAeA,EAAe,GAAI0L,GAAsB,GAAI,CAC9FtpF,GAAIA,EACJzgT,MAAM,QAMVsqY,EAAQ,SAAepiX,GACzB,GAAIk4W,EAAmBvsT,SAAS3rD,GAC9B,MAAO,WAGT8hX,EAAeG,UAAUjiX,GAAQ,CAC/B+lE,KAAM,SAAcs8S,GAClB,IAAIvB,GAAoC,IAAlBuB,EAKtB,GAJAA,EAAgBlM,EAAeA,EAAe,CAC5C2K,gBAAiBA,GAChBe,GAAsBQ,GAEZ,UAATriX,EACF,OAAOghX,GAAetsY,EAASsrB,EAAM8hX,EAAe5+X,KAAK8c,GAAOqiX,GAGlE,GAAIlK,EAAsBxsT,SAAS3rD,GAAO,CACxC,IAAIsiX,EAAgB,GAChBp/X,EAAO4+X,EAAe5+X,KAAK8c,GAE/B,GAAI9c,EAAM,CACR,IAAIwrH,GAAgC,IAAxB2zQ,EAAcjB,MAAkB,IAAM1sY,EAAQkjY,SAE1D,IAAK,IAAIp1L,KAAQt/L,EACfo/X,EAAc9/L,GAAQyzL,EAAgB,GAAIvnQ,EAAOxrH,EAAKs/L,IAI1D,GAAIs/L,EAAehiD,UACjB,IAAK,IAAItxN,KAAUszQ,EAAehiD,UAAW,CAC3C,IAAItsH,EAAQsuK,EAAehiD,UAAUtxN,GAAQxuG,GAE7C,GAAIwzM,EACF,IAAK,IAAI1wB,KAAS0wB,EAChB8uK,EAAcx/L,GAASqzL,EAAeA,EAAe,GAAImM,EAAcx/L,IAAS,GAAImzL,EAAgB,GAAIznQ,EAAQglG,EAAM1wB,KAM9H,OAAO+9L,GAAmBnsY,EAASsrB,EAAMsiX,EAAeD,GAG1D,IAAI50X,EAAMyzX,GAAaxsY,EAASsrB,EAAM8hX,EAAe5+X,KAAK8c,GAAOqiX,GAEjE,GAAIP,EAAehiD,UACjB,IAAK,IAAIyiD,KAAWT,EAAehiD,UAAW,CAC5C,IAAI0iD,EAASV,EAAehiD,UAAUyiD,GAASviX,GAC3CyiX,EAAWvB,GAAaxsY,EAASsrB,EAAMwiX,EAAQrM,EAAe,CAChEznQ,MAAO6zQ,GACNF,IACH50X,EAAM,GAAGnU,OAAOmU,GAAKnU,OAAOmpY,GAIhC,OAAOh1X,KAKb,IAAK,IAAIuS,KAAQ62W,EACJuL,EAAMpiX,GAKnB,OAAO8hX,EAWT,SAASv/C,GAAOs2C,EAAQnkY,EAAS2tY,GAE/B,IAAKxJ,EAAOtB,GAEV,OADAX,IACO,GAIT,IAAI6J,EAAU1D,GAAqBroY,EAASmkY,GACxCnsB,EAAW0zB,GAAY1rY,EAAS+rY,EAAShF,GAAiB5C,GAE1DiJ,EAAiBF,GAAuBltY,EAASg4W,EAAU21B,GAE3DtE,EAAeoC,KAEnB,GAAIpC,EAAc,CAChB,IAAK,IAAI6C,KAAmB7C,EAC1B+D,EAAeC,QAAQnB,EAAiB7C,EAAa6C,WAC9C7C,EAAa6C,GAGtBV,IAAkB,GAGpB,OAAO4B,EAAeG,UAGxB,SAAS/1B,GAAMx3W,GACbA,EAAUA,GAAW,GAOrB,IAAImoJ,EAAQ/pJ,KAAK+pJ,MACjB,MAAO,CACL+wD,WAAY,WACV,OAAOA,GAAWl5M,IAEpB4mY,WAAY,SAAoBoH,GAC9B,IAAIC,EAAgB,0BAEhBD,GAAcA,EAAWC,KAC3BjuY,EAAQymY,0BAA4BuH,EAAWC,GAC/C9I,GAAah9O,IAGf,IAAI+lP,EAAkB,eAEtB,GAAIF,GAAcE,KAAmBF,EAAY,CAC/C,IAAI7K,EAAe9/U,SAAS2qV,EAAWE,IAElCjzT,MAAMkoT,KACTnjY,EAAQmjY,aAAeA,GAI3B,IAAIgL,EAAqB,kBAErBH,GAAcG,KAAsBH,IACtChuY,EAAQojY,kBAAoB4K,EAAWG,KAG3C/sL,QAAS,WACP,OAAOA,GAAQj5D,EAAOnoJ,IAExB6tV,OAAQ,SAAkB8/C,GACxB,OAAQ9/C,GAAO1lM,EAAOnoJ,EAAS2tY,IAEjCjwQ,MAAO,WACL,OAAOA,GAAMyqB,IAEfxqB,OAAQ,WACN,OAAOA,GAAOwqB,IAEhBgwN,OAAQ,SAAkBn+O,GACxB,OAAOm+O,GAAOhwN,EAAOnuB,EAAOh6H,KAKlC,SAASouY,GAASrC,EAAS/rY,GACzBA,EAAU4mY,GAAW5mY,GACrB,IAAIg4W,EAAW0zB,GAAY1rY,EAAS+rY,EAAShF,IACzCqG,EAAiBF,GAAuBltY,EAASg4W,GACrD,OAAOo1B,EAAeG,UAQxB,SAASzgC,GAAQroB,EAAKzkV,GAChBykV,EAAI4pD,sBAIR5pD,EAAI4pD,qBAAsB,EAC1BruY,EAAU4mY,GAAW5mY,GAErBykV,EAAInmV,UAAUk5W,MAAQ,WACpB,OAAOA,GAAMz4W,KAAKX,KAAM4B,IAG1BykV,EAAIh0E,MAAMk1H,GAAYlhD,EAAKzkV,KAG7B,IAAI0wC,GAAQ,CACV/rB,QAASA,EACTmoV,QAASA,GACTshC,SAAU,SAAoBp2B,EAAUh4W,GACtC,OAAQouY,GAASp2B,EAAUh4W,IAE7BilY,YAAaA,IAGf,a,sEC19DA,SAAS1D,EAAgBroX,EAAKc,EAAKtX,GAYjC,OAXIsX,KAAOd,EACTvb,OAAO6uC,eAAetzB,EAAKc,EAAK,CAC9BtX,MAAOA,EACP+pC,YAAY,EACZC,cAAc,EACd0yH,UAAU,IAGZlmJ,EAAIc,GAAOtX,EAGNwW,EAGT,SAAS0oL,EAAmB1nL,GAC1B,GAAIpc,MAAM21E,QAAQv5D,GAAM,CACtB,IAAK,IAAI5a,EAAI,EAAG8iM,EAAO,IAAItkM,MAAMoc,EAAIza,QAASH,EAAI4a,EAAIza,OAAQH,IAAK8iM,EAAK9iM,GAAK4a,EAAI5a,GAEjF,OAAO8iM,EAEP,OAAOtkM,MAAMshG,KAAKllF,GAItB,SAASo0X,EAAiC97B,GACxC,IAAIvxW,EAAOtD,OAAOsD,KAAKuxW,GACnBhiU,EAASvvC,EAAKkZ,KAAI,SAAUH,GAC9B,OAAOw4V,EAAYx4V,MAEjBu0X,EAAmB,CAAC,GAAG3pY,OAAOg9L,EAAmBpxJ,EAAO7F,MAAM,GAAI,KAClE6jW,EAAeD,EAAiBp+W,QAAO,SAAUgiP,EAAKzvQ,EAAOguC,GAC/D,IAAI1wC,EAAUrC,OAAOwB,OAAO,CAC1Bi8U,SAAU14U,GACTguC,EAAQzvC,EAAKxB,OAAS,EAAI,CAC3BmhV,SAAU2tD,EAAiB79V,EAAQ,GAAK,GACtC,IACA+9V,EAAa,IAAQzuY,GACzB,OAAOrC,OAAOwB,OAAOgzQ,EAAKovH,EAAgB,GAAItgY,EAAKyvC,GAAQ+9V,MAC1D,IACH,OAAOD,EAET,SAASE,EAA+Bl8B,EAAahiU,EAAQm+V,GAC3D,IAAIC,EAAmB,SAASA,EAAiBD,GAC/C,QAAkCrqW,IAA9BkM,EAAOm+V,GAAkC,OAAOn+V,EAAOm+V,GAC3D,IAAIj+V,EAAQ8hU,EAAY/6M,WAAU,SAAUz5J,GAC1C,OAAOA,IAAM2wY,KAEXE,GAA2B,IAAXn+V,GAA0B,IAAVA,EAAc8hU,EAAY9hU,EAAQ,GAAK,KAC3E,OAAKm+V,OAC4BvqW,IAA1BkM,EAAOq+V,GAA+Br+V,EAAOq+V,GAAiBD,EAAiBC,GAD3Dr+V,EAAOE,IAIpC,OAAOk+V,EAAiBD,GAE1B,SAASG,EAAkBt8B,EAAam8B,GACtC,IAAIj+V,EAAQ8hU,EAAY/6M,WAAU,SAAUz5J,GAC1C,OAAOA,IAAM2wY,KAEf,OAAOn8B,EAAY7nU,MAAM+F,GAE3B,SAASq+V,EAAsBN,EAAY/hO,GACzC,IAAIsiO,EAAMzsX,OAAO0sX,WAAWR,GAExBv4R,EAAK,SAAYqsF,GACnB,IAAI/pL,EAAU+pL,EAAK/pL,QACfA,GAASk0J,KAGfsiO,EAAIE,YAAYh5R,GAEhBA,EAAG84R,GAGL,SAASv7T,EAAQ+uB,GACf,MAA+C,mBAAxC7kG,OAAOW,UAAUqO,SAAS5N,KAAKyjG,GAMxC,IAAIouM,EAAY,CACd/8K,MAAO,CACL0iH,GAAI,CACF59D,UAAU,EACVrtJ,KAAM,CAACvc,OAAQjR,SAGnBouP,SAAU,CACRijJ,aAAc,WACZ,OAAQ17T,EAAQr1E,KAAKm4O,KAA6B,MAAtBn4O,KAAKm4O,GAAG5rM,OAAO,IAE7CykW,kBAAmB,WACjB,IAAI58B,EAAc70W,OAAOsD,KAAK7C,KAAKixY,yBAC/B94J,EAAKn4O,KAAK+wY,aAAe/wY,KAAKm4O,GAAG5rM,MAAM,GAAI,GAAK8oC,EAAQr1E,KAAKm4O,IAAMn4O,KAAKm4O,GAAK,CAACn4O,KAAKm4O,IACvF,OAAOn4O,KAAK+wY,aAAeL,EAAkBt8B,EAAaj8H,GAAMA,IAGpEnvF,OAAQ,SAAgBxtC,EAAGia,GACzB,IAAIy7Q,EAAuBlxY,KAAKgxY,kBAAkBn4T,SAAS74E,KAAKmxY,KAChE,OAAOD,EAAuB11R,EAAE,MAAOx7G,KAAKo8U,OAAO7/I,SAAW/gF,MAI9D41R,EAAqB,CACvB3+E,GAAI,IACJo/C,GAAI,KACJC,GAAIviM,KAGFm/L,EAAU,SAAiBroB,GAC7B,IAAIliJ,EAAO/iM,UAAUC,OAAS,QAAsB6kC,IAAjB9kC,UAAU,GAAmBA,UAAU,GAAK,GAC3EiwY,EAAmBltM,EAAKiwK,YACxBA,OAAmC,IAArBi9B,EAA8BD,EAAqBC,EACjEC,EAAwBntM,EAAKotM,kBAC7BA,OAA8C,IAA1BD,EAAmC,KAAOA,EAE9DE,GAAoB,EAEpBC,EAAmB,IAAIprD,EAAI,CAC7Bj2U,KAAM,WACJ,MAAO,CACLmgY,kBAAmBgB,MAIzBlrD,EAAInqU,OAAO,MAAM,SAAUq0X,EAAmBn+V,GAC5C,OAAOk+V,EAA+B/wY,OAAOsD,KAAKuxW,GAAchiU,EAAQm+V,MAE1ElqD,EAAIh0E,MAAM,CACRvkB,SAAU,CACRqjJ,IAAK,WACH,OAAOM,EAAiBlB,oBAG5B9wD,QAAS,WACHz/U,KAAKkoY,YAAWuJ,EAAiBlB,kBAAoBgB,IAE3DvnD,QAAS,WACP,IAAKwnD,EAAmB,CACtB,IAAIpB,EAAeF,EAAiC97B,GAEhDk7B,EAAQ,SAAe1zX,GACzB,IAAIy0X,EAAaD,EAAax0X,GAE1B0yJ,EAAQ,WACVmjO,EAAiBlB,kBAAoB30X,GAGvC+0X,EAAsBN,EAAY/hO,IAGpC,IAAK,IAAI1yJ,KAAOw0X,EACdd,EAAM1zX,GAGR41X,GAAoB,MAI1BnrD,EAAInmV,UAAU+wY,wBAA0B78B,EACxC/tB,EAAI7zC,UAAU,WAAYA,IAGxBlgQ,EAAQ,CACVo8T,QAASA,GAGX,W,6BCvJA,SAASvhN,EAAQvmJ,EAAGhH,GAClB,IAAK,IAAIgc,KAAOhc,EACdgH,EAAEgV,GAAOhc,EAAEgc,GAEb,OAAOhV,E,kBAKT,IAAI8qY,EAAkB,WAClBC,EAAwB,SAAU19T,GAAK,MAAO,IAAMA,EAAEnkE,WAAW,GAAGvB,SAAS,KAC7EqjY,EAAU,OAKV3gY,EAAS,SAAU0J,GAAO,OAAO3J,mBAAmB2J,GACnDzJ,QAAQwgY,EAAiBC,GACzBzgY,QAAQ0gY,EAAS,MAEtB,SAAS7/X,EAAQ4I,GACf,IACE,OAAOa,mBAAmBb,GAC1B,MAAO7L,GACH,EAIN,OAAO6L,EAGT,SAASk3X,EACPv2X,EACAw2X,EACAC,QAEoB,IAAfD,IAAwBA,EAAa,IAE1C,IACIE,EADAj3X,EAAQg3X,GAAe/iN,EAE3B,IACEgjN,EAAcj3X,EAAMO,GAAS,IAC7B,MAAO5W,GAEPstY,EAAc,GAEhB,IAAK,IAAIp2X,KAAOk2X,EAAY,CAC1B,IAAIxtY,EAAQwtY,EAAWl2X,GACvBo2X,EAAYp2X,GAAOlc,MAAM21E,QAAQ/wE,GAC7BA,EAAMyX,IAAIk2X,GACVA,EAAoB3tY,GAE1B,OAAO0tY,EAGT,IAAIC,EAAsB,SAAU3tY,GAAS,OAAiB,MAATA,GAAkC,kBAAVA,EAAqBA,EAAQqM,OAAOrM,IAEjH,SAAS0qL,EAAY1zK,GACnB,IAAImgH,EAAM,GAIV,OAFAngH,EAAQA,EAAMI,OAAOxK,QAAQ,YAAa,IAErCoK,GAILA,EAAMlE,MAAM,KAAKtU,SAAQ,SAAUmnX,GACjC,IAAInsU,EAAQmsU,EAAM/4W,QAAQ,MAAO,KAAKkG,MAAM,KACxCwE,EAAM7J,EAAO+rC,EAAME,SACnB9e,EAAM4e,EAAMz8C,OAAS,EAAI0Q,EAAO+rC,EAAM93B,KAAK,MAAQ,UAEtCkgB,IAAbu1F,EAAI7/G,GACN6/G,EAAI7/G,GAAOsjB,EACFx/B,MAAM21E,QAAQomD,EAAI7/G,IAC3B6/G,EAAI7/G,GAAK5V,KAAKk5B,GAEdu8F,EAAI7/G,GAAO,CAAC6/G,EAAI7/G,GAAMsjB,MAInBu8F,GAjBEA,EAoBX,SAASy2Q,EAAgBp3X,GACvB,IAAI2gH,EAAM3gH,EACNvb,OAAOsD,KAAKiY,GACXiB,KAAI,SAAUH,GACb,IAAIsjB,EAAMpkB,EAAIc,GAEd,QAAYsqB,IAARhH,EACF,MAAO,GAGT,GAAY,OAARA,EACF,OAAOjuB,EAAO2K,GAGhB,GAAIlc,MAAM21E,QAAQn2C,GAAM,CACtB,IAAIt6B,EAAS,GAWb,OAVAs6B,EAAIp8B,SAAQ,SAAUqsU,QACPjpS,IAATipS,IAGS,OAATA,EACFvqU,EAAOoB,KAAKiL,EAAO2K,IAEnBhX,EAAOoB,KAAKiL,EAAO2K,GAAO,IAAM3K,EAAOk+T,QAGpCvqU,EAAOohB,KAAK,KAGrB,OAAO/U,EAAO2K,GAAO,IAAM3K,EAAOiuB,MAEnChjB,QAAO,SAAUoxJ,GAAK,OAAOA,EAAEjsK,OAAS,KACxC2kB,KAAK,KACN,KACJ,OAAOy1G,EAAO,IAAMA,EAAO,GAK7B,IAAI02Q,EAAkB,OAEtB,SAASC,EACPp1B,EACA3+T,EACAg0V,EACArL,GAEA,IAAIkL,EAAiBlL,GAAUA,EAAOplY,QAAQswY,eAE1C52X,EAAQ+iC,EAAS/iC,OAAS,GAC9B,IACEA,EAAQ6S,EAAM7S,GACd,MAAO5W,IAET,IAAI4tY,EAAQ,CACVj/X,KAAMgrC,EAAShrC,MAAS2pW,GAAUA,EAAO3pW,KACzC04B,KAAOixU,GAAUA,EAAOjxU,MAAS,GACjCqhD,KAAM/uC,EAAS+uC,MAAQ,IACvBxpE,KAAMy6B,EAASz6B,MAAQ,GACvBtI,MAAOA,EACPC,OAAQ8iC,EAAS9iC,QAAU,GAC3BqwI,SAAU2mP,EAAYl0V,EAAU6zV,GAChC/oO,QAAS6zM,EAASw1B,EAAYx1B,GAAU,IAK1C,OAHIq1B,IACFC,EAAMD,eAAiBE,EAAYF,EAAgBH,IAE9C3yY,OAAO4iL,OAAOmwN,GAGvB,SAASnkX,EAAO7pB,GACd,GAAI5E,MAAM21E,QAAQ/wE,GAChB,OAAOA,EAAMyX,IAAIoS,GACZ,GAAI7pB,GAA0B,kBAAVA,EAAoB,CAC7C,IAAIm3H,EAAM,GACV,IAAK,IAAI7/G,KAAOtX,EACdm3H,EAAI7/G,GAAOuS,EAAM7pB,EAAMsX,IAEzB,OAAO6/G,EAEP,OAAOn3H,EAKX,IAAImuY,EAAQL,EAAY,KAAM,CAC5BhlT,KAAM,MAGR,SAASolT,EAAax1B,GACpB,IAAIvhP,EAAM,GACV,MAAOuhP,EACLvhP,EAAI6zB,QAAQ0tN,GACZA,EAASA,EAAOn+T,OAElB,OAAO48E,EAGT,SAAS82Q,EACPhtD,EACAmtD,GAEA,IAAItlT,EAAOm4P,EAAIn4P,KACX9xE,EAAQiqU,EAAIjqU,WAAsB,IAAVA,IAAmBA,EAAQ,IACvD,IAAIsI,EAAO2hU,EAAI3hU,UAAoB,IAATA,IAAkBA,EAAO,IAEnD,IAAIrJ,EAAYm4X,GAAmBR,EACnC,OAAQ9kT,GAAQ,KAAO7yE,EAAUe,GAASsI,EAG5C,SAAS+uX,EAAa/rY,EAAGhH,EAAGgzY,GAC1B,OAAIhzY,IAAM6yY,EACD7rY,IAAMhH,IACHA,IAEDgH,EAAEwmF,MAAQxtF,EAAEwtF,KACdxmF,EAAEwmF,KAAKl8E,QAAQihY,EAAiB,MAAQvyY,EAAEwtF,KAAKl8E,QAAQihY,EAAiB,MAAQS,GACrFhsY,EAAEgd,OAAShkB,EAAEgkB,MACbivX,EAAcjsY,EAAE0U,MAAO1b,EAAE0b,WAClB1U,EAAEyM,OAAQzT,EAAEyT,QAEnBzM,EAAEyM,OAASzT,EAAEyT,OACZu/X,GACChsY,EAAEgd,OAAShkB,EAAEgkB,MACfivX,EAAcjsY,EAAE0U,MAAO1b,EAAE0b,QACzBu3X,EAAcjsY,EAAE2U,OAAQ3b,EAAE2b,WAQhC,SAASs3X,EAAejsY,EAAGhH,GAKzB,QAJW,IAANgH,IAAeA,EAAI,SACb,IAANhH,IAAeA,EAAI,KAGnBgH,IAAMhH,EAAK,OAAOgH,IAAMhH,EAC7B,IAAI+4E,EAAQp5E,OAAOsD,KAAK+D,GAAGwf,OACvBwyD,EAAQr5E,OAAOsD,KAAKjD,GAAGwmB,OAC3B,OAAIuyD,EAAMt3E,SAAWu3E,EAAMv3E,QAGpBs3E,EAAM56C,OAAM,SAAUniB,EAAK1a,GAChC,IAAI4xY,EAAOlsY,EAAEgV,GACTm3X,EAAOn6T,EAAM13E,GACjB,GAAI6xY,IAASn3X,EAAO,OAAO,EAC3B,IAAIo3X,EAAOpzY,EAAEgc,GAEb,OAAY,MAARk3X,GAAwB,MAARE,EAAuBF,IAASE,EAEhC,kBAATF,GAAqC,kBAATE,EAC9BH,EAAcC,EAAME,GAEtBriY,OAAOmiY,KAAUniY,OAAOqiY,MAInC,SAASC,EAAiBhhX,EAAStM,GACjC,OAGQ,IAFNsM,EAAQm7D,KAAKl8E,QAAQihY,EAAiB,KAAKj3X,QACzCyK,EAAOynE,KAAKl8E,QAAQihY,EAAiB,SAErCxsX,EAAO/B,MAAQqO,EAAQrO,OAAS+B,EAAO/B,OACzCsvX,EAAcjhX,EAAQ3W,MAAOqK,EAAOrK,OAIxC,SAAS43X,EAAejhX,EAAStM,GAC/B,IAAK,IAAI/J,KAAO+J,EACd,KAAM/J,KAAOqW,GACX,OAAO,EAGX,OAAO,EAGT,SAASkhX,EAAoBb,GAC3B,IAAK,IAAIpxY,EAAI,EAAGA,EAAIoxY,EAAMnpO,QAAQ9nK,OAAQH,IAAK,CAC7C,IAAI87W,EAASs1B,EAAMnpO,QAAQjoK,GAC3B,IAAK,IAAImS,KAAQ2pW,EAAOo2B,UAAW,CACjC,IAAIlmP,EAAW8vN,EAAOo2B,UAAU//X,GAC5BggY,EAAMr2B,EAAOs2B,WAAWjgY,GAC5B,GAAK65I,GAAammP,EAAlB,QACOr2B,EAAOs2B,WAAWjgY,GACzB,IAAK,IAAIkgY,EAAM,EAAGA,EAAMF,EAAIhyY,OAAQkyY,IAC7BrmP,EAASsmP,mBAAqBH,EAAIE,GAAKrmP,MAMpD,IAAIumP,EAAO,CACTpgY,KAAM,aACNm2I,YAAY,EACZ/zB,MAAO,CACLpiH,KAAM,CACJ6Z,KAAMvc,OACN4rL,QAAS,YAGbvzC,OAAQ,SAAiB5jJ,EAAGmgV,GAC1B,IAAI9vN,EAAQ8vN,EAAI9vN,MACZlhB,EAAWgxO,EAAIhxO,SACf11D,EAAS0mS,EAAI1mS,OACbzuC,EAAOm1U,EAAIn1U,KAGfA,EAAKsjY,YAAa,EAIlB,IAAIl4R,EAAI38D,EAAOqhS,eACX7sU,EAAOoiH,EAAMpiH,KACbi/X,EAAQzzV,EAAOqyS,OACfzoU,EAAQo2B,EAAO80V,mBAAqB90V,EAAO80V,iBAAmB,IAI9DhsO,EAAQ,EACRyoL,GAAW,EACf,MAAOvxS,GAAUA,EAAO+0V,cAAgB/0V,EAAQ,CAC9C,IAAIg1V,EAAYh1V,EAAO6qG,OAAS7qG,EAAO6qG,OAAOt5I,KAAO,GACjDyjY,EAAUH,YACZ/rO,IAEEksO,EAAUC,WAAaj1V,EAAOk1V,iBAAmBl1V,EAAOsrV,YAC1D/5C,GAAW,GAEbvxS,EAASA,EAAO8mU,QAKlB,GAHAv1W,EAAK4jY,gBAAkBrsO,EAGnByoL,EAAU,CACZ,IAAI6jD,EAAaxrX,EAAMpV,GACnB6gY,EAAkBD,GAAcA,EAAWzhG,UAC/C,OAAI0hG,GAGED,EAAWE,aACbC,EAAgBF,EAAiB9jY,EAAM6jY,EAAW3B,MAAO2B,EAAWE,aAE/D34R,EAAE04R,EAAiB9jY,EAAMmkG,IAGzBiH,IAIX,IAAI2tD,EAAUmpO,EAAMnpO,QAAQxB,GACxB6qI,EAAYrpI,GAAWA,EAAQ16H,WAAWp7B,GAG9C,IAAK81J,IAAYqpI,EAEf,OADA/pR,EAAMpV,GAAQ,KACPmoG,IAIT/yF,EAAMpV,GAAQ,CAAEm/R,UAAWA,GAI3BpiS,EAAKikY,sBAAwB,SAAUt5B,EAAI77U,GAEzC,IAAIjN,EAAUk3I,EAAQiqO,UAAU//X,IAE7B6rB,GAAOjN,IAAY8oV,IAClB77U,GAAOjN,IAAY8oV,KAErB5xM,EAAQiqO,UAAU//X,GAAQ6rB,KAM5B9uB,EAAK4qG,OAAS5qG,EAAK4qG,KAAO,KAAKs5R,SAAW,SAAUlvY,EAAGkmW,GACvDniM,EAAQiqO,UAAU//X,GAAQi4V,EAAM0P,mBAKlC5qW,EAAK4qG,KAAKuiB,KAAO,SAAU+tO,GACrBA,EAAMl7V,KAAK0jY,WACbxoC,EAAM0P,mBACN1P,EAAM0P,oBAAsB7xM,EAAQiqO,UAAU//X,KAE9C81J,EAAQiqO,UAAU//X,GAAQi4V,EAAM0P,mBAMlCm4B,EAAmBb,IAGrB,IAAI6B,EAAchrO,EAAQ1zC,OAAS0zC,EAAQ1zC,MAAMpiH,GAUjD,OARI8gY,IACFhnP,EAAO1kI,EAAMpV,GAAO,CAClBi/X,MAAOA,EACP6B,YAAaA,IAEfC,EAAgB5hG,EAAWpiS,EAAMkiY,EAAO6B,IAGnC34R,EAAEg3L,EAAWpiS,EAAMmkG,KAI9B,SAAS6/R,EAAiB5hG,EAAWpiS,EAAMkiY,EAAO6B,GAEhD,IAAII,EAAcnkY,EAAKqlH,MAAQ++Q,EAAalC,EAAO6B,GACnD,GAAII,EAAa,CAEfA,EAAcnkY,EAAKqlH,MAAQ03B,EAAO,GAAIonP,GAEtC,IAAI/3D,EAAQpsU,EAAKosU,MAAQpsU,EAAKosU,OAAS,GACvC,IAAK,IAAI5gU,KAAO24X,EACT/hG,EAAU/8K,OAAW75G,KAAO42R,EAAU/8K,QACzC+mN,EAAM5gU,GAAO24X,EAAY34X,UAClB24X,EAAY34X,KAM3B,SAAS44X,EAAclC,EAAOtsV,GAC5B,cAAeA,GACb,IAAK,YACH,OACF,IAAK,SACH,OAAOA,EACT,IAAK,WACH,OAAOA,EAAOssV,GAChB,IAAK,UACH,OAAOtsV,EAASssV,EAAM/2X,YAAS2qB,EACjC,QACM,GAYV,SAASuuW,EACPC,EACAz9N,EACA95H,GAEA,IAAIw3V,EAAYD,EAAS5+V,OAAO,GAChC,GAAkB,MAAd6+V,EACF,OAAOD,EAGT,GAAkB,MAAdC,GAAmC,MAAdA,EACvB,OAAO19N,EAAOy9N,EAGhB,IAAI17S,EAAQi+E,EAAK7/J,MAAM,KAKlB+lC,GAAW67C,EAAMA,EAAM33F,OAAS,IACnC23F,EAAMjzF,MAKR,IADA,IAAIogR,EAAWuuH,EAASxjY,QAAQ,MAAO,IAAIkG,MAAM,KACxClW,EAAI,EAAGA,EAAIilR,EAAS9kR,OAAQH,IAAK,CACxC,IAAIwyL,EAAUyyF,EAASjlR,GACP,OAAZwyL,EACF16F,EAAMjzF,MACe,MAAZ2tL,GACT16F,EAAMhzF,KAAK0tL,GASf,MAJiB,KAAb16F,EAAM,IACRA,EAAMs2D,QAAQ,IAGTt2D,EAAMhzE,KAAK,KAGpB,SAASo2W,EAAWhvS,GAClB,IAAIxpE,EAAO,GACPtI,EAAQ,GAERs5X,EAAYxnT,EAAKlyE,QAAQ,KACzB05X,GAAa,IACfhxX,EAAOwpE,EAAK7gD,MAAMqoW,GAClBxnT,EAAOA,EAAK7gD,MAAM,EAAGqoW,IAGvB,IAAIC,EAAaznT,EAAKlyE,QAAQ,KAM9B,OALI25X,GAAc,IAChBv5X,EAAQ8xE,EAAK7gD,MAAMsoW,EAAa,GAChCznT,EAAOA,EAAK7gD,MAAM,EAAGsoW,IAGhB,CACLznT,KAAMA,EACN9xE,MAAOA,EACPsI,KAAMA,GAIV,SAASkxX,EAAW1nT,GAClB,OAAOA,EAAKl8E,QAAQ,gBAAiB,KAGvC,IAAI6jY,EAAUr1Y,MAAM21E,SAAW,SAAUv5D,GACvC,MAA8C,kBAAvCvc,OAAOW,UAAUqO,SAAS5N,KAAKmb,IAMpCk5X,EAAiBC,EACjBC,EAAUn6X,EACVo6X,EAAY7a,EACZ8a,EAAqBC,EACrBC,EAAmBC,EAOnBC,EAAc,IAAIj5X,OAAO,CAG3B,UAOA,0GACAyJ,KAAK,KAAM,KASb,SAASjL,EAAOJ,EAAK/Y,GACnB,IAKI65H,EALAliD,EAAS,GACT39D,EAAM,EACN02B,EAAQ,EACR86C,EAAO,GACPqoT,EAAmB7zY,GAAWA,EAAQ41K,WAAa,IAGvD,MAAwC,OAAhC/7C,EAAM+5Q,EAAYn7X,KAAKM,IAAe,CAC5C,IAAIxU,EAAIs1H,EAAI,GACRwtQ,EAAUxtQ,EAAI,GACdvzF,EAASuzF,EAAInpF,MAKjB,GAJA86C,GAAQzyE,EAAI4xB,MAAM+F,EAAOpK,GACzBoK,EAAQpK,EAAS/hC,EAAE9E,OAGf4nY,EACF77S,GAAQ67S,EAAQ,OADlB,CAKA,IAAIxkY,EAAOkW,EAAI23B,GACXurL,EAASpiG,EAAI,GACbpoH,EAAOooH,EAAI,GACX//B,EAAU+/B,EAAI,GACd05C,EAAQ15C,EAAI,GACZszL,EAAWtzL,EAAI,GACfi6Q,EAAWj6Q,EAAI,GAGfruC,IACF7T,EAAOvzE,KAAKonF,GACZA,EAAO,IAGT,IAAI2+K,EAAoB,MAAVluC,GAA0B,MAARp5N,GAAgBA,IAASo5N,EACrDt8C,EAAsB,MAAbwtI,GAAiC,MAAbA,EAC7BrjG,EAAwB,MAAbqjG,GAAiC,MAAbA,EAC/Bv3I,EAAY/7C,EAAI,IAAMg6Q,EACtBp5X,EAAUq/E,GAAWy5E,EAEzB57F,EAAOvzE,KAAK,CACVqN,KAAMA,GAAQuI,IACdiiN,OAAQA,GAAU,GAClBrmD,UAAWA,EACXk0C,SAAUA,EACVnqC,OAAQA,EACRwqF,QAASA,EACT2pI,WAAYA,EACZr5X,QAASA,EAAUs5X,EAAYt5X,GAAYq5X,EAAW,KAAO,KAAOE,EAAap+N,GAAa,SAclG,OATIllI,EAAQ33B,EAAItZ,SACd+rF,GAAQzyE,EAAIqmE,OAAO1uC,IAIjB86C,GACF7T,EAAOvzE,KAAKonF,GAGP7T,EAUT,SAAS+gT,EAAS3/W,EAAK/Y,GACrB,OAAOyzY,EAAiBt6X,EAAMJ,EAAK/Y,GAAUA,GAS/C,SAASi0Y,EAA0Bl7X,GACjC,OAAO+jI,UAAU/jI,GAAKzJ,QAAQ,WAAW,SAAU+iE,GACjD,MAAO,IAAMA,EAAEnkE,WAAW,GAAGvB,SAAS,IAAIygD,iBAU9C,SAAS8mV,EAAgBn7X,GACvB,OAAO+jI,UAAU/jI,GAAKzJ,QAAQ,SAAS,SAAU+iE,GAC/C,MAAO,IAAMA,EAAEnkE,WAAW,GAAGvB,SAAS,IAAIygD,iBAO9C,SAASqmV,EAAkB97T,EAAQ33E,GAKjC,IAHA,IAAIwY,EAAU,IAAI1a,MAAM65E,EAAOl4E,QAGtBH,EAAI,EAAGA,EAAIq4E,EAAOl4E,OAAQH,IACR,kBAAdq4E,EAAOr4E,KAChBkZ,EAAQlZ,GAAK,IAAIqb,OAAO,OAASg9D,EAAOr4E,GAAGmb,QAAU,KAAM6qF,EAAMtlG,KAIrE,OAAO,SAAUkZ,EAAKk6I,GAMpB,IALA,IAAI5nE,EAAO,GACPh9E,EAAO0K,GAAO,GACdlZ,EAAUozJ,GAAQ,GAClB/jJ,EAASrP,EAAQm0Y,OAASF,EAA2B7kY,mBAEhD9P,EAAI,EAAGA,EAAIq4E,EAAOl4E,OAAQH,IAAK,CACtC,IAAIs4E,EAAQD,EAAOr4E,GAEnB,GAAqB,kBAAVs4E,EAAX,CAMA,IACIk6G,EADApvL,EAAQ8L,EAAKopE,EAAMnmE,MAGvB,GAAa,MAAT/O,EAAe,CACjB,GAAIk1E,EAAMkyI,SAAU,CAEdlyI,EAAMuyL,UACR3+K,GAAQ5T,EAAMqkJ,QAGhB,SAEA,MAAM,IAAI/3N,UAAU,aAAe0zE,EAAMnmE,KAAO,mBAIpD,GAAI0hY,EAAQzwY,GAAZ,CACE,IAAKk1E,EAAM+nG,OACT,MAAM,IAAIz7K,UAAU,aAAe0zE,EAAMnmE,KAAO,kCAAoCiH,KAAKC,UAAUjW,GAAS,KAG9G,GAAqB,IAAjBA,EAAMjD,OAAc,CACtB,GAAIm4E,EAAMkyI,SACR,SAEA,MAAM,IAAI5lN,UAAU,aAAe0zE,EAAMnmE,KAAO,qBAIpD,IAAK,IAAIxM,EAAI,EAAGA,EAAIvC,EAAMjD,OAAQwF,IAAK,CAGrC,GAFA6sL,EAAUziL,EAAO3M,EAAMuC,KAElBuT,EAAQlZ,GAAGoO,KAAKokL,GACnB,MAAM,IAAI5tL,UAAU,iBAAmB0zE,EAAMnmE,KAAO,eAAiBmmE,EAAMn9D,QAAU,oBAAsB/B,KAAKC,UAAUm5K,GAAW,KAGvItmG,IAAe,IAANvmF,EAAU2yE,EAAMqkJ,OAASrkJ,EAAMg+F,WAAakc,OApBzD,CA4BA,GAFAA,EAAUl6G,EAAMk8T,SAAWI,EAAexxY,GAAS2M,EAAO3M,IAErD8V,EAAQlZ,GAAGoO,KAAKokL,GACnB,MAAM,IAAI5tL,UAAU,aAAe0zE,EAAMnmE,KAAO,eAAiBmmE,EAAMn9D,QAAU,oBAAsBq3K,EAAU,KAGnHtmG,GAAQ5T,EAAMqkJ,OAASnqC,QArDrBtmG,GAAQ5T,EAwDZ,OAAO4T,GAUX,SAASwoT,EAAcj7X,GACrB,OAAOA,EAAIzJ,QAAQ,6BAA8B,QASnD,SAASykY,EAAaxgO,GACpB,OAAOA,EAAMjkK,QAAQ,gBAAiB,QAUxC,SAAS8kY,EAAY/uO,EAAIpkK,GAEvB,OADAokK,EAAGpkK,KAAOA,EACHokK,EAST,SAAS//D,EAAOtlG,GACd,OAAOA,GAAWA,EAAQq0Y,UAAY,GAAK,IAU7C,SAASC,EAAgB9oT,EAAMvqF,GAE7B,IAAIwyK,EAASjoF,EAAK9mB,OAAO72B,MAAM,aAE/B,GAAI4lI,EACF,IAAK,IAAIn0K,EAAI,EAAGA,EAAIm0K,EAAOh0K,OAAQH,IACjC2B,EAAKmD,KAAK,CACRqN,KAAMnS,EACN28N,OAAQ,KACRrmD,UAAW,KACXk0C,UAAU,EACVnqC,QAAQ,EACRwqF,SAAS,EACT2pI,UAAU,EACVr5X,QAAS,OAKf,OAAO25X,EAAW5oT,EAAMvqF,GAW1B,SAASszY,EAAe/oT,EAAMvqF,EAAMjB,GAGlC,IAFA,IAAIk8C,EAAQ,GAEH58C,EAAI,EAAGA,EAAIksF,EAAK/rF,OAAQH,IAC/B48C,EAAM93C,KAAKivY,EAAa7nT,EAAKlsF,GAAI2B,EAAMjB,GAAS0kE,QAGlD,IAAI+4D,EAAS,IAAI9iH,OAAO,MAAQuhC,EAAM93B,KAAK,KAAO,IAAKkhF,EAAMtlG,IAE7D,OAAOo0Y,EAAW32Q,EAAQx8H,GAW5B,SAASuzY,EAAgBhpT,EAAMvqF,EAAMjB,GACnC,OAAO2zY,EAAex6X,EAAMqyE,EAAMxrF,GAAUiB,EAAMjB,GAWpD,SAAS2zY,EAAgBh8T,EAAQ12E,EAAMjB,GAChCmzY,EAAQlyY,KACXjB,EAAkCiB,GAAQjB,EAC1CiB,EAAO,IAGTjB,EAAUA,GAAW,GAOrB,IALA,IAAIy0Y,EAASz0Y,EAAQy0Y,OACjBjvT,GAAsB,IAAhBxlF,EAAQwlF,IACdkrT,EAAQ,GAGHpxY,EAAI,EAAGA,EAAIq4E,EAAOl4E,OAAQH,IAAK,CACtC,IAAIs4E,EAAQD,EAAOr4E,GAEnB,GAAqB,kBAAVs4E,EACT84T,GAASsD,EAAap8T,OACjB,CACL,IAAIqkJ,EAAS+3K,EAAap8T,EAAMqkJ,QAC5BniI,EAAU,MAAQliB,EAAMn9D,QAAU,IAEtCxZ,EAAKmD,KAAKwzE,GAENA,EAAM+nG,SACR7lF,GAAW,MAAQmiI,EAASniI,EAAU,MAOpCA,EAJAliB,EAAMkyI,SACHlyI,EAAMuyL,QAGCluC,EAAS,IAAMniI,EAAU,KAFzB,MAAQmiI,EAAS,IAAMniI,EAAU,MAKnCmiI,EAAS,IAAMniI,EAAU,IAGrC42S,GAAS52S,GAIb,IAAI87E,EAAYo+N,EAAah0Y,EAAQ41K,WAAa,KAC9C8+N,EAAoBhE,EAAM/lW,OAAOirI,EAAUn2K,UAAYm2K,EAkB3D,OAZK6+N,IACH/D,GAASgE,EAAoBhE,EAAM/lW,MAAM,GAAIirI,EAAUn2K,QAAUixY,GAAS,MAAQ96N,EAAY,WAI9F86N,GADElrT,EACO,IAIAivT,GAAUC,EAAoB,GAAK,MAAQ9+N,EAAY,MAG3Dw+N,EAAW,IAAIz5X,OAAO,IAAM+1X,EAAOprS,EAAMtlG,IAAWiB,GAe7D,SAASoyY,EAAc7nT,EAAMvqF,EAAMjB,GAQjC,OAPKmzY,EAAQlyY,KACXjB,EAAkCiB,GAAQjB,EAC1CiB,EAAO,IAGTjB,EAAUA,GAAW,GAEjBwrF,aAAgB7wE,OACX25X,EAAe9oT,EAA4B,GAGhD2nT,EAAQ3nT,GACH+oT,EAAoC,EAA8B,EAAQv0Y,GAG5Ew0Y,EAAqC,EAA8B,EAAQx0Y,GAEpFozY,EAAej6X,MAAQm6X,EACvBF,EAAe1a,QAAU6a,EACzBH,EAAeK,iBAAmBD,EAClCJ,EAAeO,eAAiBD,EAKhC,IAAIiB,EAAqBh3Y,OAAOY,OAAO,MAEvC,SAASq2Y,EACPppT,EACA7xE,EACAk7X,GAEAl7X,EAASA,GAAU,GACnB,IACE,IAAIm7X,EACFH,EAAmBnpT,KAClBmpT,EAAmBnpT,GAAQ4nT,EAAe1a,QAAQltS,IAMrD,MAFgC,kBAArB7xE,EAAOo7X,YAA0Bp7X,EAAO,GAAKA,EAAOo7X,WAExDD,EAAOn7X,EAAQ,CAAEw6X,QAAQ,IAChC,MAAOrxY,GAKP,MAAO,GACP,eAEO6W,EAAO,IAMlB,SAASq7X,EACPxhO,EACAnjJ,EACAkrB,EACA6pV,GAEA,IAAIviY,EAAsB,kBAAR2wK,EAAmB,CAAEhoF,KAAMgoF,GAAQA,EAErD,GAAI3wK,EAAKoyY,YACP,OAAOpyY,EACF,GAAIA,EAAK4O,KAAM,CACpB5O,EAAO0oJ,EAAO,GAAIioB,GAClB,IAAI75J,EAAS9W,EAAK8W,OAIlB,OAHIA,GAA4B,kBAAXA,IACnB9W,EAAK8W,OAAS4xI,EAAO,GAAI5xI,IAEpB9W,EAIT,IAAKA,EAAK2oF,MAAQ3oF,EAAK8W,QAAU0W,EAAS,CACxCxtB,EAAO0oJ,EAAO,GAAI1oJ,GAClBA,EAAKoyY,aAAc,EACnB,IAAIC,EAAW3pP,EAAOA,EAAO,GAAIl7H,EAAQ1W,QAAS9W,EAAK8W,QACvD,GAAI0W,EAAQ5e,KACV5O,EAAK4O,KAAO4e,EAAQ5e,KACpB5O,EAAK8W,OAASu7X,OACT,GAAI7kX,EAAQk3I,QAAQ9nK,OAAQ,CACjC,IAAI01Y,EAAU9kX,EAAQk3I,QAAQl3I,EAAQk3I,QAAQ9nK,OAAS,GAAG+rF,KAC1D3oF,EAAK2oF,KAAOopT,EAAWO,EAASD,EAAW,QAAW7kX,EAAY,WACzD,EAGX,OAAOxtB,EAGT,IAAIuyY,EAAa5a,EAAU33X,EAAK2oF,MAAQ,IACpC6pT,EAAYhlX,GAAWA,EAAQm7D,MAAS,IACxCA,EAAO4pT,EAAW5pT,KAClBqnT,EAAYuC,EAAW5pT,KAAM6pT,EAAU95V,GAAU14C,EAAK04C,QACtD85V,EAEA37X,EAAQu2X,EACVmF,EAAW17X,MACX7W,EAAK6W,MACL0rX,GAAUA,EAAOplY,QAAQotL,YAGvBprK,EAAOnf,EAAKmf,MAAQozX,EAAWpzX,KAKnC,OAJIA,GAA2B,MAAnBA,EAAKkyB,OAAO,KACtBlyB,EAAO,IAAMA,GAGR,CACLizX,aAAa,EACbzpT,KAAMA,EACN9xE,MAAOA,EACPsI,KAAMA,GAOV,IA4NIm2W,GA5NAmd,GAAU,CAACvmY,OAAQpR,QACnB43Y,GAAa,CAACxmY,OAAQjR,OAEtBk7E,GAAO,aAMPw8T,GAAO,CACT/jY,KAAM,aACNoiH,MAAO,CACL3pB,GAAI,CACF5+E,KAAMgqX,GACN38N,UAAU,GAEZve,IAAK,CACH9uI,KAAMvc,OACN4rL,QAAS,KAEX86M,OAAQ//S,QACRqqR,MAAOrqR,QACPsqR,UAAWtqR,QACXn6C,OAAQm6C,QACRpmF,QAASomF,QACTumP,YAAaltU,OACbkxW,iBAAkBlxW,OAClB2mY,iBAAkB,CAChBpqX,KAAMvc,OACN4rL,QAAS,QAEX31K,MAAO,CACLsG,KAAMiqX,GACN56M,QAAS,UAGbvzC,OAAQ,SAAiBxtC,GACvB,IAAIuhR,EAAS/8X,KAETgnY,EAAShnY,KAAKinY,QACdh1W,EAAUjyB,KAAKkxV,OACf3L,EAAMyhD,EAAO3kY,QACfrC,KAAK8rG,GACL75E,EACAjyB,KAAKm9C,QAEHkB,EAAWknS,EAAIlnS,SACfi0V,EAAQ/sD,EAAI+sD,MACZrzV,EAAOsmS,EAAItmS,KAEX49R,EAAU,GACV06D,EAAoBvQ,EAAOplY,QAAQ41Y,gBACnCC,EAAyBzQ,EAAOplY,QAAQ81Y,qBAExCC,EACmB,MAArBJ,EAA4B,qBAAuBA,EACjDK,EACwB,MAA1BH,EACI,2BACAA,EACF55D,EACkB,MAApB79U,KAAK69U,YAAsB85D,EAAsB33Y,KAAK69U,YACpDgkC,EACuB,MAAzB7hX,KAAK6hX,iBACD+1B,EACA53Y,KAAK6hX,iBAEPg2B,EAAgBvF,EAAMD,eACtBD,EAAY,KAAMwE,EAAkBtE,EAAMD,gBAAiB,KAAMrL,GACjEsL,EAEJz1D,EAAQglC,GAAoB8wB,EAAY1gX,EAAS4lX,EAAe73Y,KAAK4hX,WACrE/kC,EAAQgB,GAAe79U,KAAK2hX,OAAS3hX,KAAK4hX,UACtC/kC,EAAQglC,GACRoxB,EAAgBhhX,EAAS4lX,GAE7B,IAAIP,EAAmBz6D,EAAQglC,GAAoB7hX,KAAKs3Y,iBAAmB,KAEvE56R,EAAU,SAAUh4G,GAClBozY,GAAWpzY,KACTq4X,EAAO7rX,QACT81X,EAAO91X,QAAQmtC,EAAUu8B,IAEzBosT,EAAOhhY,KAAKq4C,EAAUu8B,MAKxBsiQ,EAAK,CAAEluG,MAAO8oK,IACdp4Y,MAAM21E,QAAQr1E,KAAK4mB,OACrB5mB,KAAK4mB,MAAM9jB,SAAQ,SAAU4B,GAC3Bw4U,EAAGx4U,GAAKg4G,KAGVwgO,EAAGl9U,KAAK4mB,OAAS81F,EAGnB,IAAItsG,EAAO,CAAEisU,MAAOQ,GAEhB4e,GACDz7V,KAAKsjV,aAAay0D,YACnB/3Y,KAAKsjV,aAAa/mJ,SAClBv8L,KAAKsjV,aAAa/mJ,QAAQ,CACxBt9I,KAAMA,EACNqzV,MAAOA,EACPhqU,SAAUo0C,EACV+kO,SAAU5E,EAAQgB,GAClBm6D,cAAen7D,EAAQglC,KAG3B,GAAIpmB,EAAY,CAKd,GAA0B,IAAtBA,EAAWp6V,OACb,OAAOo6V,EAAW,GACb,GAAIA,EAAWp6V,OAAS,IAAMo6V,EAAWp6V,OAO9C,OAA6B,IAAtBo6V,EAAWp6V,OAAem6G,IAAMA,EAAE,OAAQ,GAAIigP,GAqBzD,GAAiB,MAAbz7V,KAAKg8J,IACP5rJ,EAAK8sU,GAAKA,EACV9sU,EAAKosU,MAAQ,CAAEv9R,KAAMA,EAAM,eAAgBq4V,OACtC,CAEL,IAAI1wY,EAAIqxY,GAAWj4Y,KAAKo8U,OAAO7/I,SAC/B,GAAI31L,EAAG,CAELA,EAAEsxY,UAAW,EACb,IAAIC,EAASvxY,EAAEwJ,KAAO+8I,EAAO,GAAIvmJ,EAAEwJ,MAGnC,IAAK,IAAIwW,KAFTuxX,EAAMj7D,GAAKi7D,EAAMj7D,IAAM,GAELi7D,EAAMj7D,GAAI,CAC1B,IAAIk7D,EAAYD,EAAMj7D,GAAGt2T,GACrBA,KAASs2T,IACXi7D,EAAMj7D,GAAGt2T,GAASlnB,MAAM21E,QAAQ+iU,GAAaA,EAAY,CAACA,IAI9D,IAAK,IAAIC,KAAWn7D,EACdm7D,KAAWF,EAAMj7D,GAEnBi7D,EAAMj7D,GAAGm7D,GAASryY,KAAKk3U,EAAGm7D,IAE1BF,EAAMj7D,GAAGm7D,GAAW37R,EAIxB,IAAI47R,EAAU1xY,EAAEwJ,KAAKosU,MAAQrvL,EAAO,GAAIvmJ,EAAEwJ,KAAKosU,OAC/C87D,EAAOr5V,KAAOA,EACdq5V,EAAO,gBAAkBhB,OAGzBlnY,EAAK8sU,GAAKA,EAId,OAAO1hO,EAAEx7G,KAAKg8J,IAAK5rJ,EAAMpQ,KAAKo8U,OAAO7/I,WAIzC,SAASu7M,GAAYpzY,GAEnB,KAAIA,EAAE6zY,SAAW7zY,EAAE8zY,QAAU9zY,EAAE+zY,SAAW/zY,EAAEg8W,YAExCh8W,EAAEg0Y,wBAEWxyW,IAAbxhC,EAAE2yV,QAAqC,IAAb3yV,EAAE2yV,QAAhC,CAEA,GAAI3yV,EAAE+oW,eAAiB/oW,EAAE+oW,cAActmK,aAAc,CACnD,IAAIxhL,EAASjhB,EAAE+oW,cAActmK,aAAa,UAC1C,GAAI,cAAc73L,KAAKqW,GAAW,OAMpC,OAHIjhB,EAAEq7D,gBACJr7D,EAAEq7D,kBAEG,GAGT,SAASk4U,GAAY1jS,GACnB,GAAIA,EAEF,IADA,IAAI8nQ,EACKn7W,EAAI,EAAGA,EAAIqzG,EAASlzG,OAAQH,IAAK,CAExC,GADAm7W,EAAQ9nQ,EAASrzG,GACC,MAAdm7W,EAAMrgN,IACR,OAAOqgN,EAET,GAAIA,EAAM9nQ,WAAa8nQ,EAAQ47B,GAAW57B,EAAM9nQ,WAC9C,OAAO8nQ,GAQf,SAAS3N,GAASroB,GAChB,IAAIqoB,GAAQC,WAAaorB,KAAS1zC,EAAlC,CACAqoB,GAAQC,WAAY,EAEpBorB,GAAO1zC,EAEP,IAAIsyD,EAAQ,SAAU/yY,GAAK,YAAasgC,IAANtgC,GAE9BgzY,EAAmB,SAAU79B,EAAI89B,GACnC,IAAI33Y,EAAI65W,EAAG/wN,SAAS8uP,aAChBH,EAAMz3Y,IAAMy3Y,EAAMz3Y,EAAIA,EAAEkP,OAASuoY,EAAMz3Y,EAAIA,EAAEmzY,wBAC/CnzY,EAAE65W,EAAI89B,IAIVxyD,EAAIh0E,MAAM,CACRhoH,aAAc,WACRsuP,EAAM34Y,KAAKgqJ,SAASg9O,SACtBhnY,KAAK4zY,YAAc5zY,KACnBA,KAAK+4Y,QAAU/4Y,KAAKgqJ,SAASg9O,OAC7BhnY,KAAK+4Y,QAAQx7Q,KAAKv9H,MAClBqmV,EAAI2yD,KAAKC,eAAej5Y,KAAM,SAAUA,KAAK+4Y,QAAQz6V,QAAQrsB,UAE7DjyB,KAAK4zY,YAAe5zY,KAAK2lX,SAAW3lX,KAAK2lX,QAAQiuB,aAAgB5zY,KAEnE44Y,EAAiB54Y,KAAMA,OAEzBikO,UAAW,WACT20K,EAAiB54Y,SAIrBT,OAAO6uC,eAAei4S,EAAInmV,UAAW,UAAW,CAC9CwB,IAAK,WAAkB,OAAO1B,KAAK4zY,YAAYmF,WAGjDx5Y,OAAO6uC,eAAei4S,EAAInmV,UAAW,SAAU,CAC7CwB,IAAK,WAAkB,OAAO1B,KAAK4zY,YAAYsF,UAGjD7yD,EAAI7zC,UAAU,aAAcihG,GAC5BptD,EAAI7zC,UAAU,aAAc4kG,IAE5B,IAAIpd,EAAS3zC,EAAIrgS,OAAOi0U,sBAExBD,EAAOmf,iBAAmBnf,EAAOof,iBAAmBpf,EAAOqf,kBAAoBrf,EAAOv6C,SAKxF,IAAI55C,GAA8B,qBAAX1hR,OAIvB,SAASm1X,GACPC,EACAC,EACAC,EACAC,EACAC,GAGA,IAAIC,EAAWJ,GAAe,GAE1BK,EAAUJ,GAAcl6Y,OAAOY,OAAO,MAEtC25Y,EAAUJ,GAAcn6Y,OAAOY,OAAO,MAE1Co5Y,EAAOz2Y,SAAQ,SAAUwvY,GACvByH,GAAeH,EAAUC,EAASC,EAASxH,EAAOqH,MAIpD,IAAK,IAAIz4Y,EAAI,EAAG8sJ,EAAI4rP,EAASv4Y,OAAQH,EAAI8sJ,EAAG9sJ,IACtB,MAAhB04Y,EAAS14Y,KACX04Y,EAAS5zY,KAAK4zY,EAASppS,OAAOtvG,EAAG,GAAG,IACpC8sJ,IACA9sJ,KAgBJ,MAAO,CACL04Y,SAAUA,EACVC,QAASA,EACTC,QAASA,GAIb,SAASC,GACPH,EACAC,EACAC,EACAxH,EACAzzV,EACAm7V,GAEA,IAAI5sT,EAAOklT,EAAMllT,KACb/5E,EAAOi/X,EAAMj/X,KAmBjB,IAAI4mY,EACF3H,EAAM2H,qBAAuB,GAC3BC,EAAiBC,GAAc/sT,EAAMvuC,EAAQo7V,EAAoB5D,QAElC,mBAAxB/D,EAAM8H,gBACfH,EAAoBhE,UAAY3D,EAAM8H,eAGxC,IAAIp9B,EAAS,CACX5vR,KAAM8sT,EACN59X,MAAO+9X,GAAkBH,EAAgBD,GACzCxrW,WAAY6jW,EAAM7jW,YAAc,CAAE8tJ,QAAS+1M,EAAM9/F,WACjD8nG,MAAOhI,EAAMgI,MACc,kBAAhBhI,EAAMgI,MACX,CAAChI,EAAMgI,OACPhI,EAAMgI,MACR,GACJlH,UAAW,GACXE,WAAY,GACZjgY,KAAMA,EACNwrC,OAAQA,EACRm7V,QAASA,EACTp+D,SAAU02D,EAAM12D,SAChB8mB,YAAa4vC,EAAM5vC,YACnB32T,KAAMumW,EAAMvmW,MAAQ,GACpB0pF,MACiB,MAAf68Q,EAAM78Q,MACF,GACA68Q,EAAM7jW,WACJ6jW,EAAM78Q,MACN,CAAE8mE,QAAS+1M,EAAM78Q,QAoC3B,GAjCI68Q,EAAM/9R,UAoBR+9R,EAAM/9R,SAASzxG,SAAQ,SAAUu5W,GAC/B,IAAIk+B,EAAeP,EACflF,EAAWkF,EAAU,IAAO39B,EAAU,WACtCn2U,EACJ6zW,GAAeH,EAAUC,EAASC,EAASz9B,EAAOW,EAAQu9B,MAIzDV,EAAQ78B,EAAO5vR,QAClBwsT,EAAS5zY,KAAKg3W,EAAO5vR,MACrBysT,EAAQ78B,EAAO5vR,MAAQ4vR,QAGL92U,IAAhBosW,EAAMgI,MAER,IADA,IAAIp2W,EAAUxkC,MAAM21E,QAAQi9T,EAAMgI,OAAShI,EAAMgI,MAAQ,CAAChI,EAAMgI,OACvDp5Y,EAAI,EAAGA,EAAIgjC,EAAQ7iC,SAAUH,EAAG,CACvC,IAAIo5Y,EAAQp2W,EAAQhjC,GAChB,EASJ,IAAIs5Y,EAAa,CACfptT,KAAMktT,EACN/lS,SAAU+9R,EAAM/9R,UAElBwlS,GACEH,EACAC,EACAC,EACAU,EACA37V,EACAm+T,EAAO5vR,MAAQ,KAKjB/5E,IACGymY,EAAQzmY,KACXymY,EAAQzmY,GAAQ2pW,IAWtB,SAASq9B,GACPjtT,EACA6sT,GAEA,IAAI39X,EAAQ04X,EAAe5nT,EAAM,GAAI6sT,GAWrC,OAAO39X,EAGT,SAAS69X,GACP/sT,EACAvuC,EACAw3V,GAGA,OADKA,IAAUjpT,EAAOA,EAAKl8E,QAAQ,MAAO,KAC1B,MAAZk8E,EAAK,IACK,MAAVvuC,EAD0BuuC,EAEvB0nT,EAAYj2V,EAAW,KAAI,IAAMuuC,GAO1C,SAASqtT,GACPlB,EACAvS,GAEA,IAAIzhD,EAAM+zD,GAAeC,GACrBK,EAAWr0D,EAAIq0D,SACfC,EAAUt0D,EAAIs0D,QACdC,EAAUv0D,EAAIu0D,QAElB,SAASY,EAAWnB,GAClBD,GAAeC,EAAQK,EAAUC,EAASC,GAG5C,SAASa,EAAUC,EAAetI,GAChC,IAAIzzV,EAAmC,kBAAlB+7V,EAA8Bd,EAAQc,QAAiB10W,EAE5EozW,GAAe,CAAChH,GAASsI,GAAgBhB,EAAUC,EAASC,EAASj7V,GAGjEA,GAAUA,EAAOy7V,MAAMj5Y,QACzBi4Y,GAEEz6V,EAAOy7V,MAAMv+X,KAAI,SAAUu+X,GAAS,MAAO,CAAGltT,KAAMktT,EAAO/lS,SAAU,CAAC+9R,OACtEsH,EACAC,EACAC,EACAj7V,GAKN,SAASg8V,IACP,OAAOjB,EAAS79X,KAAI,SAAUqxE,GAAQ,OAAOysT,EAAQzsT,MAGvD,SAAS39C,EACP2lI,EACA0lO,EACAzI,GAEA,IAAIh0V,EAAWu4V,EAAkBxhO,EAAK0lO,GAAc,EAAO9T,GACvD3zX,EAAOgrC,EAAShrC,KAEpB,GAAIA,EAAM,CACR,IAAI2pW,EAAS88B,EAAQzmY,GAIrB,IAAK2pW,EAAU,OAAO+9B,EAAa,KAAM18V,GACzC,IAAI28V,EAAah+B,EAAO1gW,MAAMzZ,KAC3BqZ,QAAO,SAAUN,GAAO,OAAQA,EAAI8vM,YACpC3vM,KAAI,SAAUH,GAAO,OAAOA,EAAIvI,QAMnC,GAJ+B,kBAApBgrC,EAAS9iC,SAClB8iC,EAAS9iC,OAAS,IAGhBu/X,GAA+C,kBAAxBA,EAAav/X,OACtC,IAAK,IAAIK,KAAOk/X,EAAav/X,SACrBK,KAAOyiC,EAAS9iC,SAAWy/X,EAAW9/X,QAAQU,IAAQ,IAC1DyiC,EAAS9iC,OAAOK,GAAOk/X,EAAav/X,OAAOK,IAMjD,OADAyiC,EAAS+uC,KAAOopT,EAAWx5B,EAAO5vR,KAAM/uC,EAAS9iC,OAAS,gBAAmBlI,EAAO,KAC7E0nY,EAAa/9B,EAAQ3+T,EAAUg0V,GACjC,GAAIh0V,EAAS+uC,KAAM,CACxB/uC,EAAS9iC,OAAS,GAClB,IAAK,IAAIra,EAAI,EAAGA,EAAI04Y,EAASv4Y,OAAQH,IAAK,CACxC,IAAIksF,EAAOwsT,EAAS14Y,GAChB+5Y,EAAWpB,EAAQzsT,GACvB,GAAI+jQ,GAAW8pD,EAAS3+X,MAAO+hC,EAAS+uC,KAAM/uC,EAAS9iC,QACrD,OAAOw/X,EAAaE,EAAU58V,EAAUg0V,IAK9C,OAAO0I,EAAa,KAAM18V,GAG5B,SAASu9R,EACPohC,EACA3+T,GAEA,IAAI68V,EAAmBl+B,EAAOphC,SAC1BA,EAAuC,oBAArBs/D,EAClBA,EAAiB9I,EAAYp1B,EAAQ3+T,EAAU,KAAM2oV,IACrDkU,EAMJ,GAJwB,kBAAbt/D,IACTA,EAAW,CAAExuP,KAAMwuP,KAGhBA,GAAgC,kBAAbA,EAMtB,OAAOm/D,EAAa,KAAM18V,GAG5B,IAAI4oH,EAAK20K,EACLvoU,EAAO4zJ,EAAG5zJ,KACV+5E,EAAO65E,EAAG75E,KACV9xE,EAAQ+iC,EAAS/iC,MACjBsI,EAAOy6B,EAASz6B,KAChBrI,EAAS8iC,EAAS9iC,OAKtB,GAJAD,EAAQ2rJ,EAAGnnK,eAAe,SAAWmnK,EAAG3rJ,MAAQA,EAChDsI,EAAOqjJ,EAAGnnK,eAAe,QAAUmnK,EAAGrjJ,KAAOA,EAC7CrI,EAAS0rJ,EAAGnnK,eAAe,UAAYmnK,EAAG1rJ,OAASA,EAE/ClI,EAAM,CAEWymY,EAAQzmY,GAI3B,OAAOo8B,EAAM,CACXonW,aAAa,EACbxjY,KAAMA,EACNiI,MAAOA,EACPsI,KAAMA,EACNrI,OAAQA,QACP2qB,EAAWmY,GACT,GAAI+uC,EAAM,CAEf,IAAI2pT,EAAUoE,GAAkB/tT,EAAM4vR,GAElCo+B,EAAe5E,EAAWO,EAASx7X,EAAS,6BAAgCw7X,EAAU,KAE1F,OAAOtnW,EAAM,CACXonW,aAAa,EACbzpT,KAAMguT,EACN9/X,MAAOA,EACPsI,KAAMA,QACLsiB,EAAWmY,GAKd,OAAO08V,EAAa,KAAM18V,GAI9B,SAASi8V,EACPt9B,EACA3+T,EACA27V,GAEA,IAAIqB,EAAc7E,EAAWwD,EAAS37V,EAAS9iC,OAAS,4BAA+By+X,EAAU,KAC7FsB,EAAe7rW,EAAM,CACvBonW,aAAa,EACbzpT,KAAMiuT,IAER,GAAIC,EAAc,CAChB,IAAInyO,EAAUmyO,EAAanyO,QACvBoyO,EAAgBpyO,EAAQA,EAAQ9nK,OAAS,GAE7C,OADAg9C,EAAS9iC,OAAS+/X,EAAa//X,OACxBw/X,EAAaQ,EAAel9V,GAErC,OAAO08V,EAAa,KAAM18V,GAG5B,SAAS08V,EACP/9B,EACA3+T,EACAg0V,GAEA,OAAIr1B,GAAUA,EAAOphC,SACZA,EAASohC,EAAQq1B,GAAkBh0V,GAExC2+T,GAAUA,EAAOg9B,QACZM,EAAMt9B,EAAQ3+T,EAAU2+T,EAAOg9B,SAEjC5H,EAAYp1B,EAAQ3+T,EAAUg0V,EAAgBrL,GAGvD,MAAO,CACLv3V,MAAOA,EACPkrW,SAAUA,EACVE,UAAWA,EACXH,UAAWA,GAIf,SAASvpD,GACP70U,EACA8wE,EACA7xE,GAEA,IAAIpV,EAAIinF,EAAK39C,MAAMnzB,GAEnB,IAAKnW,EACH,OAAO,EACF,IAAKoV,EACV,OAAO,EAGT,IAAK,IAAIra,EAAI,EAAG2/F,EAAM16F,EAAE9E,OAAQH,EAAI2/F,IAAO3/F,EAAG,CAC5C,IAAI0a,EAAMU,EAAMzZ,KAAK3B,EAAI,GACrB0a,IAEFL,EAAOK,EAAIvI,MAAQ,aAA+B,kBAATlN,EAAEjF,GAAkB6Q,EAAO5L,EAAEjF,IAAMiF,EAAEjF,IAIlF,OAAO,EAGT,SAASi6Y,GAAmB/tT,EAAM4vR,GAChC,OAAOy3B,EAAYrnT,EAAM4vR,EAAOn+T,OAASm+T,EAAOn+T,OAAOuuC,KAAO,KAAK,GAMrE,IAAIouT,GACF31G,IAAa1hR,OAAO6lD,aAAe7lD,OAAO6lD,YAAYt5C,IAClDvM,OAAO6lD,YACPx7C,KAEN,SAASitX,KACP,OAAOD,GAAK9qX,MAAMkwE,QAAQ,GAG5B,IAAIukG,GAAOs2M,KAEX,SAASC,KACP,OAAOv2M,GAGT,SAASw2M,GAAa//X,GACpB,OAAQupL,GAAOvpL,EAKjB,IAAIggY,GAAgBr8Y,OAAOY,OAAO,MAElC,SAAS07Y,KAEH,sBAAuB13X,OAAOm6B,UAChCn6B,OAAOm6B,QAAQw9V,kBAAoB,UAOrC,IAAIC,EAAkB53X,OAAOk6B,SAASykC,SAAW,KAAO3+D,OAAOk6B,SAASxa,KACpEm4W,EAAe73X,OAAOk6B,SAASY,KAAK/tC,QAAQ6qY,EAAiB,IAE7DE,EAAY9uP,EAAO,GAAIhpI,OAAOm6B,QAAQjS,OAI1C,OAHA4vW,EAAUrgY,IAAM8/X,KAChBv3X,OAAOm6B,QAAQC,aAAa09V,EAAW,GAAID,GAC3C73X,OAAOuB,iBAAiB,WAAYw2X,IAC7B,WACL/3X,OAAOu/B,oBAAoB,WAAYw4V,KAI3C,SAASC,GACPnV,EACAl7R,EACA9K,EACAo7S,GAEA,GAAKpV,EAAO5zQ,IAAZ,CAIA,IAAIipR,EAAWrV,EAAOplY,QAAQ06Y,eACzBD,GASLrV,EAAO5zQ,IAAI0wN,WAAU,WACnB,IAAIp5Q,EAAW6xU,KACXh8B,EAAe87B,EAAS17Y,KAC1BqmY,EACAl7R,EACA9K,EACAo7S,EAAQ1xU,EAAW,MAGhB61S,IAI4B,oBAAtBA,EAAaz7W,KACtBy7W,EACGz7W,MAAK,SAAUy7W,GACdi8B,GAAiB,EAAgB9xU,MAElCjN,OAAM,SAAU3uD,GACX,KAKR0tY,GAAiBj8B,EAAc71S,QAKrC,SAAS+xU,KACP,IAAI7gY,EAAM8/X,KACN9/X,IACFggY,GAAchgY,GAAO,CACnB0xJ,EAAGnpJ,OAAOy6V,YACV15W,EAAGif,OAAO0kV,cAKhB,SAASqzC,GAAgBx3Y,GACvB+3Y,KACI/3Y,EAAE2nC,OAAS3nC,EAAE2nC,MAAMzwB,KACrB+/X,GAAYj3Y,EAAE2nC,MAAMzwB,KAIxB,SAAS2gY,KACP,IAAI3gY,EAAM8/X,KACV,GAAI9/X,EACF,OAAOggY,GAAchgY,GAIzB,SAAS8gY,GAAoBloP,EAAItsH,GAC/B,IAAIy0W,EAAQhnW,SAASupB,gBACjB09U,EAAUD,EAAMnjD,wBAChBqjD,EAASroP,EAAGglM,wBAChB,MAAO,CACLlsL,EAAGuvO,EAAOj9U,KAAOg9U,EAAQh9U,KAAO13B,EAAOolI,EACvCpoK,EAAG23Y,EAAOn9U,IAAMk9U,EAAQl9U,IAAMx3B,EAAOhjC,GAIzC,SAAS43Y,GAAiBhiY,GACxB,OAAOk1E,GAASl1E,EAAIwyJ,IAAMt9E,GAASl1E,EAAI5V,GAGzC,SAAS63Y,GAAmBjiY,GAC1B,MAAO,CACLwyJ,EAAGt9E,GAASl1E,EAAIwyJ,GAAKxyJ,EAAIwyJ,EAAInpJ,OAAOy6V,YACpC15W,EAAG8qF,GAASl1E,EAAI5V,GAAK4V,EAAI5V,EAAIif,OAAO0kV,aAIxC,SAASm0C,GAAiBliY,GACxB,MAAO,CACLwyJ,EAAGt9E,GAASl1E,EAAIwyJ,GAAKxyJ,EAAIwyJ,EAAI,EAC7BpoK,EAAG8qF,GAASl1E,EAAI5V,GAAK4V,EAAI5V,EAAI,GAIjC,SAAS8qF,GAAUpqF,GACjB,MAAoB,kBAANA,EAGhB,IAAIq3Y,GAAyB,OAE7B,SAAST,GAAkBj8B,EAAc71S,GACvC,IAAIsO,EAAmC,kBAAjBunS,EACtB,GAAIvnS,GAA6C,kBAA1BunS,EAAasqB,SAAuB,CAGzD,IAAIr2O,EAAKyoP,GAAuB3tY,KAAKixW,EAAasqB,UAC9Cl1V,SAAS6sL,eAAe+9I,EAAasqB,SAASt+V,MAAM,IACpDoJ,SAASmkS,cAAcymC,EAAasqB,UAExC,GAAIr2O,EAAI,CACN,IAAItsH,EACFq4U,EAAar4U,QAAyC,kBAAxBq4U,EAAar4U,OACvCq4U,EAAar4U,OACb,GACNA,EAAS80W,GAAgB90W,GACzBwiC,EAAWgyU,GAAmBloP,EAAItsH,QACzB40W,GAAgBv8B,KACzB71S,EAAWqyU,GAAkBx8B,SAEtBvnS,GAAY8jU,GAAgBv8B,KACrC71S,EAAWqyU,GAAkBx8B,IAG3B71S,IAEE,mBAAoB/0B,SAASupB,gBAAgBsL,MAC/CrmD,OAAO+4X,SAAS,CACdt9U,KAAM8K,EAAS4iG,EACf5tG,IAAKgL,EAASxlE,EAEdm3Y,SAAU97B,EAAa87B,WAGzBl4X,OAAO+4X,SAASxyU,EAAS4iG,EAAG5iG,EAASxlE,IAO3C,IAAIi4Y,GACFt3G,IACA,WACE,IAAI3lP,EAAK/7B,OAAOy4B,UAAUuD,UAE1B,QACiC,IAA9BD,EAAGhlC,QAAQ,gBAAuD,IAA/BglC,EAAGhlC,QAAQ,iBACd,IAAjCglC,EAAGhlC,QAAQ,mBACe,IAA1BglC,EAAGhlC,QAAQ,YACsB,IAAjCglC,EAAGhlC,QAAQ,oBAKNiJ,OAAOm6B,SAA+C,oBAA7Bn6B,OAAOm6B,QAAQkqE,WAZjD,GAeF,SAASA,GAAW7mH,EAAKuP,GACvBurY,KAGA,IAAIn+V,EAAUn6B,OAAOm6B,QACrB,IACE,GAAIptC,EAAS,CAEX,IAAI+qY,EAAY9uP,EAAO,GAAI7uG,EAAQjS,OACnC4vW,EAAUrgY,IAAM8/X,KAChBp9V,EAAQC,aAAa09V,EAAW,GAAIt6Y,QAEpC28C,EAAQkqE,UAAU,CAAE5sG,IAAK+/X,GAAYF,OAAkB,GAAI95Y,GAE7D,MAAO+C,GACPyf,OAAOk6B,SAASntC,EAAU,UAAY,UAAUvP,IAIpD,SAAS48C,GAAc58C,GACrB6mH,GAAU7mH,GAAK,GAKjB,SAASy7Y,GAAUrpT,EAAO/Y,EAAI88B,GAC5B,IAAItzG,EAAO,SAAU8tC,GACfA,GAASyhD,EAAM1yF,OACjBy2G,IAEI/jB,EAAMzhD,GACR0oC,EAAG+Y,EAAMzhD,IAAQ,WACf9tC,EAAK8tC,EAAQ,MAGf9tC,EAAK8tC,EAAQ,IAInB9tC,EAAK,GAIP,IAAI64Y,GAAwB,CAC1BC,WAAY,EACZttQ,QAAS,EACT65O,UAAW,EACX0zB,WAAY,IAGd,SAASC,GAAiCx8S,EAAM8K,GAC9C,OAAO2xS,GACLz8S,EACA8K,EACAuxS,GAAsBC,WACrB,+BAAmCt8S,EAAa,SAAI,SAAc08S,GACjE5xS,GACG,6BAIT,SAAS6xS,GAAiC38S,EAAM8K,GAC9C,IAAIxlG,EAAQm3Y,GACVz8S,EACA8K,EACAuxS,GAAsBE,WACrB,sDAA0Dv8S,EAAa,SAAI,MAI9E,OADA16F,EAAM+M,KAAO,uBACN/M,EAGT,SAASs3Y,GAAgC58S,EAAM8K,GAC7C,OAAO2xS,GACLz8S,EACA8K,EACAuxS,GAAsBxzB,UACrB,8BAAkC7oR,EAAa,SAAI,SAAc8K,EAAW,SAAI,4BAIrF,SAAS+xS,GAA8B78S,EAAM8K,GAC3C,OAAO2xS,GACLz8S,EACA8K,EACAuxS,GAAsBrtQ,QACrB,4BAAgChvC,EAAa,SAAI,SAAc8K,EAAW,SAAI,6BAInF,SAAS2xS,GAAmBz8S,EAAM8K,EAAI5+E,EAAMd,GAC1C,IAAI9lB,EAAQ,IAAI1F,MAAMwrB,GAMtB,OALA9lB,EAAMw3Y,WAAY,EAClBx3Y,EAAM06F,KAAOA,EACb16F,EAAMwlG,GAAKA,EACXxlG,EAAM4mB,KAAOA,EAEN5mB,EAGT,IAAIy3Y,GAAkB,CAAC,SAAU,QAAS,QAE1C,SAASL,GAAgB5xS,GACvB,GAAkB,kBAAPA,EAAmB,OAAOA,EACrC,GAAI,SAAUA,EAAM,OAAOA,EAAG1e,KAC9B,IAAI/uC,EAAW,GAIf,OAHA0/V,GAAgBj7Y,SAAQ,SAAU8Y,GAC5BA,KAAOkwF,IAAMztD,EAASziC,GAAOkwF,EAAGlwF,OAE/BtB,KAAKC,UAAU8jC,EAAU,KAAM,GAGxC,SAASmmC,GAAS11E,GAChB,OAAOvP,OAAOW,UAAUqO,SAAS5N,KAAKmO,GAAKoM,QAAQ,UAAY,EAGjE,SAAS8iY,GAAqBlvY,EAAK2/F,GACjC,OACEjqB,GAAQ11E,IACRA,EAAIgvY,YACU,MAAbrvS,GAAqB3/F,EAAIoe,OAASuhF,GAMvC,SAASwvS,GAAwB90O,GAC/B,OAAO,SAAUr9D,EAAI9K,EAAMv8F,GACzB,IAAIy5Y,GAAW,EACXtjE,EAAU,EACVt0U,EAAQ,KAEZ63Y,GAAkBh1O,GAAS,SAAUwmI,EAAKvqS,EAAGqqC,EAAO7zB,GAMlD,GAAmB,oBAAR+zR,QAAkCzpQ,IAAZypQ,EAAIw2E,IAAmB,CACtD+3B,GAAW,EACXtjE,IAEA,IA0BIn/M,EA1BAp5H,EAAUupQ,IAAK,SAAUwyI,GACvBC,GAAWD,KACbA,EAAcA,EAAY7hN,SAG5BozG,EAAI0jF,SAAkC,oBAAhB+qB,EAClBA,EACArkB,GAAK5sO,OAAOixP,GAChB3uW,EAAMhB,WAAW7yB,GAAOwiY,EACxBxjE,IACIA,GAAW,GACbn2U,OAIAnC,EAASspQ,IAAK,SAAUv8J,GAC1B,IAAI9b,EAAM,qCAAuC33E,EAAM,KAAOyzF,EAEzD/oG,IACHA,EAAQk+E,GAAQ6qB,GACZA,EACA,IAAIzuG,MAAM2yF,GACd9uF,EAAK6B,OAKT,IACEm1H,EAAMk0K,EAAIttS,EAASC,GACnB,MAAOoC,GACPpC,EAAOoC,GAET,GAAI+2H,EACF,GAAwB,oBAAbA,EAAI32H,KACb22H,EAAI32H,KAAKzC,EAASC,OACb,CAEL,IAAIg8Q,EAAO7iJ,EAAI+2K,UACXl0B,GAA6B,oBAAdA,EAAKx5Q,MACtBw5Q,EAAKx5Q,KAAKzC,EAASC,QAOxB47Y,GAAYz5Y,KAIrB,SAAS05Y,GACPh1O,EACAnuF,GAEA,OAAOuoL,GAAQp6F,EAAQptJ,KAAI,SAAU5V,GACnC,OAAO5G,OAAOsD,KAAKsD,EAAEsoC,YAAY1yB,KAAI,SAAUH,GAAO,OAAOo/D,EAC3D70E,EAAEsoC,WAAW7yB,GACbzV,EAAEitY,UAAUx3X,GACZzV,EAAGyV,UAKT,SAAS2nP,GAASznP,GAChB,OAAOpc,MAAMQ,UAAUsG,OAAOzC,MAAM,GAAI+X,GAG1C,IAAIwiY,GACgB,oBAAX54Y,QACuB,kBAAvBA,OAAOyzO,YAEhB,SAASklK,GAAYvjY,GACnB,OAAOA,EAAIyjY,YAAeD,IAAyC,WAA5BxjY,EAAIpV,OAAOyzO,aAOpD,SAASyyB,GAAM5wL,GACb,IAAIqgF,GAAS,EACb,OAAO,WACL,IAAIjpE,EAAO,GAAIyO,EAAMz/F,UAAUC,OAC/B,MAAQw/F,IAAQzO,EAAMyO,GAAQz/F,UAAWy/F,GAEzC,IAAIw6D,EAEJ,OADAA,GAAS,EACFrgF,EAAGj3E,MAAM/D,KAAMoyF,IAM1B,IAAIosT,GAAU,SAAkBxX,EAAQ/vN,GACtCj3K,KAAKgnY,OAASA,EACdhnY,KAAKi3K,KAAOwnO,GAAcxnO,GAE1Bj3K,KAAKiyB,QAAUwgX,EACfzyY,KAAK46U,QAAU,KACf56U,KAAKu+N,OAAQ,EACbv+N,KAAK0+Y,SAAW,GAChB1+Y,KAAK2+Y,cAAgB,GACrB3+Y,KAAK4+Y,SAAW,GAChB5+Y,KAAK8pI,UAAY,IAwNnB,SAAS20Q,GAAexnO,GACtB,IAAKA,EACH,GAAI4uH,GAAW,CAEb,IAAIg5G,EAASlpW,SAASmkS,cAAc,QACpC7iK,EAAQ4nO,GAAUA,EAAO13M,aAAa,SAAY,IAElDlwB,EAAOA,EAAK/lK,QAAQ,qBAAsB,SAE1C+lK,EAAO,IAQX,MAJuB,MAAnBA,EAAKnhI,OAAO,KACdmhI,EAAO,IAAMA,GAGRA,EAAK/lK,QAAQ,MAAO,IAG7B,SAAS4tY,GACP7sX,EACAxtB,GAEA,IAAIvD,EACA2+D,EAAM5wD,KAAK4wD,IAAI5tC,EAAQ5wB,OAAQoD,EAAKpD,QACxC,IAAKH,EAAI,EAAGA,EAAI2+D,EAAK3+D,IACnB,GAAI+wB,EAAQ/wB,KAAOuD,EAAKvD,GACtB,MAGJ,MAAO,CACLmuT,QAAS5qT,EAAK8nC,MAAM,EAAGrrC,GACvBmsW,UAAW5oW,EAAK8nC,MAAMrrC,GACtBu6W,YAAaxpV,EAAQsa,MAAMrrC,IAI/B,SAAS69Y,GACPC,EACA3rY,EACAgwC,EACA09E,GAEA,IAAIk+Q,EAASd,GAAkBa,GAAS,SAAUrvG,EAAKziJ,EAAUz9G,EAAO7zB,GACtE,IAAIkjP,EAAQogJ,GAAavvG,EAAKt8R,GAC9B,GAAIyrP,EACF,OAAOp/P,MAAM21E,QAAQypL,GACjBA,EAAM/iP,KAAI,SAAU+iP,GAAS,OAAOz7M,EAAKy7M,EAAO5xG,EAAUz9G,EAAO7zB,MACjEynC,EAAKy7M,EAAO5xG,EAAUz9G,EAAO7zB,MAGrC,OAAO2nP,GAAQxiI,EAAUk+Q,EAAOl+Q,UAAYk+Q,GAG9C,SAASC,GACPvvG,EACA/zR,GAMA,MAJmB,oBAAR+zR,IAETA,EAAMoqF,GAAK5sO,OAAOwiJ,IAEbA,EAAI/tS,QAAQga,GAGrB,SAASujY,GAAoB1jC,GAC3B,OAAOsjC,GAActjC,EAAa,mBAAoB2jC,IAAW,GAGnE,SAASC,GAAoBhwF,GAC3B,OAAO0vF,GAAc1vF,EAAS,oBAAqB+vF,IAGrD,SAASA,GAAWtgJ,EAAO5xG,GACzB,GAAIA,EACF,OAAO,WACL,OAAO4xG,EAAM/6P,MAAMmpJ,EAAU9rJ,YAKnC,SAASk+Y,GACPjyC,GAEA,OAAO0xC,GACL1xC,EACA,oBACA,SAAUvuG,EAAO15P,EAAGqqC,EAAO7zB,GACzB,OAAO2jY,GAAezgJ,EAAOrvN,EAAO7zB,MAK1C,SAAS2jY,GACPzgJ,EACArvN,EACA7zB,GAEA,OAAO,SAA0BkwF,EAAI9K,EAAMv8F,GACzC,OAAOq6P,EAAMhzJ,EAAI9K,GAAM,SAAU8W,GACb,oBAAPA,IACJroE,EAAM6jW,WAAW13X,KACpB6zB,EAAM6jW,WAAW13X,GAAO,IAE1B6zB,EAAM6jW,WAAW13X,GAAK5V,KAAK8xG,IAE7BrzG,EAAKqzG,OAhUX0mS,GAAQt+Y,UAAUs/Y,OAAS,SAAiB1nS,GAC1C93G,KAAK83G,GAAKA,GAGZ0mS,GAAQt+Y,UAAUu/Y,QAAU,SAAkB3nS,EAAI4nS,GAC5C1/Y,KAAKu+N,MACPzmH,KAEA93G,KAAK0+Y,SAAS14Y,KAAK8xG,GACf4nS,GACF1/Y,KAAK2+Y,cAAc34Y,KAAK05Y,KAK9BlB,GAAQt+Y,UAAUynO,QAAU,SAAkB+3K,GAC5C1/Y,KAAK4+Y,SAAS54Y,KAAK05Y,IAGrBlB,GAAQt+Y,UAAUy/Y,aAAe,SAC/BthW,EACA84D,EACAqwG,GAEE,IAEE8qL,EAFEvV,EAAS/8X,KAIf,IACEsyY,EAAQtyY,KAAKgnY,OAAOv3V,MAAM4O,EAAUr+C,KAAKiyB,SACzC,MAAOvtB,GAKP,MAJA1E,KAAK4+Y,SAAS97Y,SAAQ,SAAUg1G,GAC9BA,EAAGpzG,MAGCA,EAER,IAAIm5J,EAAO79J,KAAKiyB,QAChBjyB,KAAK4/Y,kBACHtN,GACA,WACEvV,EAAO8iB,YAAYvN,GACnBn7R,GAAcA,EAAWm7R,GACzBvV,EAAO+iB,YACP/iB,EAAOiK,OAAO+Y,WAAWj9Y,SAAQ,SAAUk4G,GACzCA,GAAQA,EAAKs3R,EAAOz0O,MAIjBk/N,EAAOx+J,QACVw+J,EAAOx+J,OAAQ,EACfw+J,EAAO2hB,SAAS57Y,SAAQ,SAAUg1G,GAChCA,EAAGw6R,UAIT,SAAUxjY,GACJ04M,GACFA,EAAQ14M,GAENA,IAAQiuX,EAAOx+J,QAKZy/K,GAAoBlvY,EAAKuuY,GAAsBC,aAAez/O,IAAS40O,IAC1E1V,EAAOx+J,OAAQ,EACfw+J,EAAO4hB,cAAc77Y,SAAQ,SAAUg1G,GACrCA,EAAGhpG,YAQf0vY,GAAQt+Y,UAAU0/Y,kBAAoB,SAA4BtN,EAAOn7R,EAAYqwG,GACjF,IAAIu1K,EAAS/8X,KAEXiyB,EAAUjyB,KAAKiyB,QACnBjyB,KAAK46U,QAAU03D,EACf,IAAInvY,EAAQ,SAAU2L,IAIfkvY,GAAoBlvY,IAAQ01E,GAAQ11E,KACnCiuX,EAAO6hB,SAASv9Y,OAClB07X,EAAO6hB,SAAS97Y,SAAQ,SAAUg1G,GAChCA,EAAGhpG,MAML6nE,QAAQrwE,MAAMwI,IAGlB04M,GAAWA,EAAQ14M,IAEjBkxY,EAAiB1N,EAAMnpO,QAAQ9nK,OAAS,EACxC4+Y,EAAmBhuX,EAAQk3I,QAAQ9nK,OAAS,EAChD,GACEsxY,EAAYL,EAAOrgX,IAEnB+tX,IAAmBC,GACnB3N,EAAMnpO,QAAQ62O,KAAoB/tX,EAAQk3I,QAAQ82O,GAMlD,OAJAjgZ,KAAK8/Y,YACDxN,EAAM1uX,MACRu4X,GAAan8Y,KAAKgnY,OAAQ/0W,EAASqgX,GAAO,GAErCnvY,EAAMw6Y,GAAgC1rX,EAASqgX,IAGxD,IAAI/sD,EAAMu5D,GACR9+Y,KAAKiyB,QAAQk3I,QACbmpO,EAAMnpO,SAEFkmJ,EAAUk2B,EAAIl2B,QACdosD,EAAcl2B,EAAIk2B,YAClBpO,EAAY9nB,EAAI8nB,UAElBt5Q,EAAQ,GAAGvtF,OAEb24Y,GAAmB1jC,GAEnBz7W,KAAKgnY,OAAOkZ,YAEZb,GAAmBhwF,GAEnBg+C,EAAUtxV,KAAI,SAAU5V,GAAK,OAAOA,EAAEu8V,eAEtCu7C,GAAuB5wC,IAGrB1nW,EAAW,SAAUq1G,EAAMv2G,GAC7B,GAAIs4X,EAAOniD,UAAY03D,EACrB,OAAOnvY,EAAMy6Y,GAA+B3rX,EAASqgX,IAEvD,IACEt3R,EAAKs3R,EAAOrgX,GAAS,SAAU65E,IAClB,IAAPA,GAEFixR,EAAO+iB,WAAU,GACjB38Y,EAAM06Y,GAA6B5rX,EAASqgX,KACnC9tT,GAAQsnB,IACjBixR,EAAO+iB,WAAU,GACjB38Y,EAAM2oG,IAEQ,kBAAPA,GACQ,kBAAPA,IACc,kBAAZA,EAAG1e,MAAwC,kBAAZ0e,EAAGz4F,OAG5ClQ,EAAMq6Y,GAAgCvrX,EAASqgX,IAC7B,kBAAPxmS,GAAmBA,EAAG56F,QAC/B6rX,EAAO7rX,QAAQ46F,GAEfixR,EAAO/2X,KAAK8lG,IAIdrnG,EAAKqnG,MAGT,MAAOpnG,GACPvB,EAAMuB,KAIV04Y,GAASrpT,EAAOpuF,GAAU,WAGxB,IAAIw6Y,EAAcb,GAAmBjyC,GACjCt5Q,EAAQosT,EAAY35Y,OAAOu2X,EAAOiK,OAAOoZ,cAC7ChD,GAASrpT,EAAOpuF,GAAU,WACxB,GAAIo3X,EAAOniD,UAAY03D,EACrB,OAAOnvY,EAAMy6Y,GAA+B3rX,EAASqgX,IAEvDvV,EAAOniD,QAAU,KACjBzjO,EAAWm7R,GACPvV,EAAOiK,OAAO5zQ,KAChB2pQ,EAAOiK,OAAO5zQ,IAAI0wN,WAAU,WAC1BqvD,EAAmBb,aAO7BkM,GAAQt+Y,UAAU2/Y,YAAc,SAAsBvN,GACpDtyY,KAAKiyB,QAAUqgX,EACftyY,KAAK83G,IAAM93G,KAAK83G,GAAGw6R,IAGrBkM,GAAQt+Y,UAAUmgZ,eAAiB,aAInC7B,GAAQt+Y,UAAUgiH,SAAW,WAG3BliH,KAAK8pI,UAAUhnI,SAAQ,SAAUw9Y,GAC/BA,OAEFtgZ,KAAK8pI,UAAY,GAIjB9pI,KAAKiyB,QAAUwgX,EACfzyY,KAAK46U,QAAU,MAqHjB,IAAI2lE,GAA6B,SAAU/B,GACzC,SAAS+B,EAAcvZ,EAAQ/vN,GAC7BunO,EAAQ79Y,KAAKX,KAAMgnY,EAAQ/vN,GAE3Bj3K,KAAKwgZ,eAAiB1oT,GAAY93F,KAAKi3K,MAmFzC,OAhFKunO,IAAU+B,EAAa9gZ,UAAY++Y,GACxC+B,EAAargZ,UAAYX,OAAOY,OAAQq+Y,GAAWA,EAAQt+Y,WAC3DqgZ,EAAargZ,UAAUD,YAAcsgZ,EAErCA,EAAargZ,UAAUmgZ,eAAiB,WACtC,IAAItjB,EAAS/8X,KAEb,KAAIA,KAAK8pI,UAAUzoI,OAAS,GAA5B,CAIA,IAAI2lY,EAAShnY,KAAKgnY,OACdyZ,EAAezZ,EAAOplY,QAAQ06Y,eAC9BoE,EAAiBvD,IAAqBsD,EAEtCC,GACF1gZ,KAAK8pI,UAAU9jI,KAAK61Y,MAGtB,IAAI8E,EAAqB,WACvB,IAAI1uX,EAAU8qW,EAAO9qW,QAIjBosB,EAAWy5C,GAAYilS,EAAO9lN,MAC9B8lN,EAAO9qW,UAAYwgX,GAASp0V,IAAa0+U,EAAOyjB,gBAIpDzjB,EAAO4iB,aAAathW,GAAU,SAAUi0V,GAClCoO,GACFvE,GAAanV,EAAQsL,EAAOrgX,GAAS,OAI3C9N,OAAOuB,iBAAiB,WAAYi7X,GACpC3gZ,KAAK8pI,UAAU9jI,MAAK,WAClBme,OAAOu/B,oBAAoB,WAAYi9V,QAI3CJ,EAAargZ,UAAUmyO,GAAK,SAAalxO,GACvCgjB,OAAOm6B,QAAQ+zL,GAAGlxO,IAGpBo/Y,EAAargZ,UAAU8F,KAAO,SAAeq4C,EAAU84D,EAAYqwG,GACjE,IAAIu1K,EAAS/8X,KAETulV,EAAMvlV,KACN4gZ,EAAYr7D,EAAItzT,QACpBjyB,KAAK2/Y,aAAathW,GAAU,SAAUi0V,GACpC9pR,GAAUssR,EAAU/X,EAAO9lN,KAAOq7N,EAAM1mP,WACxCuwP,GAAapf,EAAOiK,OAAQsL,EAAOsO,GAAW,GAC9CzpS,GAAcA,EAAWm7R,KACxB9qL,IAGL+4L,EAAargZ,UAAUgR,QAAU,SAAkBmtC,EAAU84D,EAAYqwG,GACvE,IAAIu1K,EAAS/8X,KAETulV,EAAMvlV,KACN4gZ,EAAYr7D,EAAItzT,QACpBjyB,KAAK2/Y,aAAathW,GAAU,SAAUi0V,GACpC/zV,GAAau2V,EAAU/X,EAAO9lN,KAAOq7N,EAAM1mP,WAC3CuwP,GAAapf,EAAOiK,OAAQsL,EAAOsO,GAAW,GAC9CzpS,GAAcA,EAAWm7R,KACxB9qL,IAGL+4L,EAAargZ,UAAU4/Y,UAAY,SAAoB95Y,GACrD,GAAI8xF,GAAY93F,KAAKi3K,QAAUj3K,KAAKiyB,QAAQ25H,SAAU,CACpD,IAAI35H,EAAU6iX,EAAU90Y,KAAKi3K,KAAOj3K,KAAKiyB,QAAQ25H,UACjD5lJ,EAAOwiH,GAAUv2F,GAAWssB,GAAatsB,KAI7CsuX,EAAargZ,UAAU2gZ,mBAAqB,WAC1C,OAAO/oT,GAAY93F,KAAKi3K,OAGnBspO,EAvFuB,CAwF9B/B,IAEF,SAAS1mT,GAAam/E,GACpB,IAAI7pF,EAAOjpE,OAAOk6B,SAASI,SACvBqiW,EAAgB1zT,EAAK54D,cACrBusX,EAAgB9pO,EAAKziJ,cAQzB,OAJIyiJ,GAAU6pO,IAAkBC,GAC6B,IAA1DD,EAAc5lY,QAAQ45X,EAAUiM,EAAgB,QACjD3zT,EAAOA,EAAK7gD,MAAM0qI,EAAK51K,UAEjB+rF,GAAQ,KAAOjpE,OAAOk6B,SAASpjC,OAASkJ,OAAOk6B,SAASz6B,KAKlE,IAAIo9X,GAA4B,SAAUxC,GACxC,SAASwC,EAAaha,EAAQ/vN,EAAM2+L,GAClC4oC,EAAQ79Y,KAAKX,KAAMgnY,EAAQ/vN,GAEvB2+L,GAAYqrC,GAAcjhZ,KAAKi3K,OAGnCiqO,KA+FF,OA5FK1C,IAAUwC,EAAYvhZ,UAAY++Y,GACvCwC,EAAY9gZ,UAAYX,OAAOY,OAAQq+Y,GAAWA,EAAQt+Y,WAC1D8gZ,EAAY9gZ,UAAUD,YAAc+gZ,EAIpCA,EAAY9gZ,UAAUmgZ,eAAiB,WACrC,IAAItjB,EAAS/8X,KAEb,KAAIA,KAAK8pI,UAAUzoI,OAAS,GAA5B,CAIA,IAAI2lY,EAAShnY,KAAKgnY,OACdyZ,EAAezZ,EAAOplY,QAAQ06Y,eAC9BoE,EAAiBvD,IAAqBsD,EAEtCC,GACF1gZ,KAAK8pI,UAAU9jI,KAAK61Y,MAGtB,IAAI8E,EAAqB,WACvB,IAAI1uX,EAAU8qW,EAAO9qW,QAChBivX,MAGLnkB,EAAO4iB,aAAazxW,MAAW,SAAUokW,GACnCoO,GACFvE,GAAapf,EAAOiK,OAAQsL,EAAOrgX,GAAS,GAEzCkrX,IACHz+V,GAAY4zV,EAAM1mP,cAIpBhoG,EAAYu5V,GAAoB,WAAa,aACjDh5X,OAAOuB,iBACLk+B,EACA+8V,GAEF3gZ,KAAK8pI,UAAU9jI,MAAK,WAClBme,OAAOu/B,oBAAoBE,EAAW+8V,QAI1CK,EAAY9gZ,UAAU8F,KAAO,SAAeq4C,EAAU84D,EAAYqwG,GAChE,IAAIu1K,EAAS/8X,KAETulV,EAAMvlV,KACN4gZ,EAAYr7D,EAAItzT,QACpBjyB,KAAK2/Y,aACHthW,GACA,SAAUi0V,GACR6O,GAAS7O,EAAM1mP,UACfuwP,GAAapf,EAAOiK,OAAQsL,EAAOsO,GAAW,GAC9CzpS,GAAcA,EAAWm7R,KAE3B9qL,IAIJw5L,EAAY9gZ,UAAUgR,QAAU,SAAkBmtC,EAAU84D,EAAYqwG,GACtE,IAAIu1K,EAAS/8X,KAETulV,EAAMvlV,KACN4gZ,EAAYr7D,EAAItzT,QACpBjyB,KAAK2/Y,aACHthW,GACA,SAAUi0V,GACR5zV,GAAY4zV,EAAM1mP,UAClBuwP,GAAapf,EAAOiK,OAAQsL,EAAOsO,GAAW,GAC9CzpS,GAAcA,EAAWm7R,KAE3B9qL,IAIJw5L,EAAY9gZ,UAAUmyO,GAAK,SAAalxO,GACtCgjB,OAAOm6B,QAAQ+zL,GAAGlxO,IAGpB6/Y,EAAY9gZ,UAAU4/Y,UAAY,SAAoB95Y,GACpD,IAAIisB,EAAUjyB,KAAKiyB,QAAQ25H,SACvB19G,OAAcjc,IAChBjsB,EAAOm7Y,GAASlvX,GAAWysB,GAAYzsB,KAI3C+uX,EAAY9gZ,UAAU2gZ,mBAAqB,WACzC,OAAO3yW,MAGF8yW,EAtGsB,CAuG7BxC,IAEF,SAASyC,GAAehqO,GACtB,IAAI54H,EAAWy5C,GAAYm/E,GAC3B,IAAK,OAAO3nK,KAAK+uC,GAEf,OADAl6B,OAAOk6B,SAASntC,QAAQ4jY,EAAU79N,EAAO,KAAO54H,KACzC,EAIX,SAAS6iW,KACP,IAAI9zT,EAAOl/C,KACX,MAAuB,MAAnBk/C,EAAKt3C,OAAO,KAGhB4I,GAAY,IAAM0uC,IACX,GAGT,SAASl/C,KAGP,IAAI+Q,EAAO96B,OAAOk6B,SAASY,KACvB3M,EAAQ2M,EAAK/jC,QAAQ,KAEzB,OAAIo3B,EAAQ,EAAY,IAExB2M,EAAOA,EAAK1S,MAAM+F,EAAQ,GAEnB2M,GAGT,SAASmiW,GAAQh0T,GACf,IAAInuC,EAAO96B,OAAOk6B,SAASY,KACvB/9C,EAAI+9C,EAAK/jC,QAAQ,KACjB+7J,EAAO/1K,GAAK,EAAI+9C,EAAK1S,MAAM,EAAGrrC,GAAK+9C,EACvC,OAAQg4H,EAAO,IAAM7pF,EAGvB,SAAS+zT,GAAU/zT,GACb+vT,GACF30R,GAAU44R,GAAOh0T,IAEjBjpE,OAAOk6B,SAASz6B,KAAOwpE,EAI3B,SAAS1uC,GAAa0uC,GAChB+vT,GACF5+V,GAAa6iW,GAAOh0T,IAEpBjpE,OAAOk6B,SAASntC,QAAQkwY,GAAOh0T,IAMnC,IAAIi0T,GAAgC,SAAU7C,GAC5C,SAAS6C,EAAiBra,EAAQ/vN,GAChCunO,EAAQ79Y,KAAKX,KAAMgnY,EAAQ/vN,GAC3Bj3K,KAAKg5F,MAAQ,GACbh5F,KAAKsyC,OAAS,EAqEhB,OAlEKksW,IAAU6C,EAAgB5hZ,UAAY++Y,GAC3C6C,EAAgBnhZ,UAAYX,OAAOY,OAAQq+Y,GAAWA,EAAQt+Y,WAC9DmhZ,EAAgBnhZ,UAAUD,YAAcohZ,EAExCA,EAAgBnhZ,UAAU8F,KAAO,SAAeq4C,EAAU84D,EAAYqwG,GACpE,IAAIu1K,EAAS/8X,KAEbA,KAAK2/Y,aACHthW,GACA,SAAUi0V,GACRvV,EAAO/jS,MAAQ+jS,EAAO/jS,MAAMzsD,MAAM,EAAGwwV,EAAOzqV,MAAQ,GAAG9rC,OAAO8rY,GAC9DvV,EAAOzqV,QACP6kE,GAAcA,EAAWm7R,KAE3B9qL,IAIJ65L,EAAgBnhZ,UAAUgR,QAAU,SAAkBmtC,EAAU84D,EAAYqwG,GAC1E,IAAIu1K,EAAS/8X,KAEbA,KAAK2/Y,aACHthW,GACA,SAAUi0V,GACRvV,EAAO/jS,MAAQ+jS,EAAO/jS,MAAMzsD,MAAM,EAAGwwV,EAAOzqV,OAAO9rC,OAAO8rY,GAC1Dn7R,GAAcA,EAAWm7R,KAE3B9qL,IAIJ65L,EAAgBnhZ,UAAUmyO,GAAK,SAAalxO,GAC1C,IAAI47X,EAAS/8X,KAET8nK,EAAc9nK,KAAKsyC,MAAQnxC,EAC/B,KAAI2mK,EAAc,GAAKA,GAAe9nK,KAAKg5F,MAAM33F,QAAjD,CAGA,IAAIixY,EAAQtyY,KAAKg5F,MAAM8uE,GACvB9nK,KAAK4/Y,kBACHtN,GACA,WACE,IAAIz0O,EAAOk/N,EAAO9qW,QAClB8qW,EAAOzqV,MAAQw1H,EACfi1N,EAAO8iB,YAAYvN,GACnBvV,EAAOiK,OAAO+Y,WAAWj9Y,SAAQ,SAAUk4G,GACzCA,GAAQA,EAAKs3R,EAAOz0O,SAGxB,SAAU/uJ,GACJkvY,GAAoBlvY,EAAKuuY,GAAsBE,cACjDxgB,EAAOzqV,MAAQw1H,QAMvBu5O,EAAgBnhZ,UAAU2gZ,mBAAqB,WAC7C,IAAI5uX,EAAUjyB,KAAKg5F,MAAMh5F,KAAKg5F,MAAM33F,OAAS,GAC7C,OAAO4wB,EAAUA,EAAQ25H,SAAW,KAGtCy1P,EAAgBnhZ,UAAU4/Y,UAAY,aAI/BuB,EAzE0B,CA0EjC7C,IAIE8C,GAAY,SAAoB1/Y,QACjB,IAAZA,IAAqBA,EAAU,IAKpC5B,KAAKozH,IAAM,KACXpzH,KAAKuhZ,KAAO,GACZvhZ,KAAK4B,QAAUA,EACf5B,KAAKkgZ,YAAc,GACnBlgZ,KAAKogZ,aAAe,GACpBpgZ,KAAK+/Y,WAAa,GAClB//Y,KAAK8oL,QAAU2xN,GAAc74Y,EAAQ23Y,QAAU,GAAIv5Y,MAEnD,IAAIw2K,EAAO50K,EAAQ40K,MAAQ,OAW3B,OAVAx2K,KAAK41W,SACM,YAATp/L,IAAuB2mO,KAA0C,IAArBv7Y,EAAQg0W,SAClD51W,KAAK41W,WACPp/L,EAAO,QAEJqvH,KACHrvH,EAAO,YAETx2K,KAAKw2K,KAAOA,EAEJA,GACN,IAAK,UACHx2K,KAAKs+C,QAAU,IAAIiiW,GAAavgZ,KAAM4B,EAAQq1K,MAC9C,MACF,IAAK,OACHj3K,KAAKs+C,QAAU,IAAI0iW,GAAYhhZ,KAAM4B,EAAQq1K,KAAMj3K,KAAK41W,UACxD,MACF,IAAK,WACH51W,KAAKs+C,QAAU,IAAI+iW,GAAgBrhZ,KAAM4B,EAAQq1K,MACjD,MACF,QACM,IAMNsoN,GAAqB,CAAEub,aAAc,CAAExsW,cAAc,IAkMzD,SAASkzW,GAAc/4O,EAAMztF,GAE3B,OADAytF,EAAKziK,KAAKg1E,GACH,WACL,IAAI95E,EAAIunK,EAAKvtJ,QAAQ8/D,GACjB95E,GAAK,GAAKunK,EAAKj4D,OAAOtvG,EAAG,IAIjC,SAASugZ,GAAYxqO,EAAMrrB,EAAU4qB,GACnC,IAAIppF,EAAgB,SAATopF,EAAkB,IAAM5qB,EAAWA,EAC9C,OAAOqrB,EAAO69N,EAAU79N,EAAO,IAAM7pF,GAAQA,EA1M/Ck0T,GAAUphZ,UAAUuvC,MAAQ,SAAgB2lI,EAAKnjJ,EAASogX,GACxD,OAAOryY,KAAK8oL,QAAQr5I,MAAM2lI,EAAKnjJ,EAASogX,IAG1C9S,GAAmBub,aAAap5Y,IAAM,WACpC,OAAO1B,KAAKs+C,SAAWt+C,KAAKs+C,QAAQrsB,SAGtCqvX,GAAUphZ,UAAUq9H,KAAO,SAAenK,GACtC,IAAI2pQ,EAAS/8X,KA0Bf,GAjBAA,KAAKuhZ,KAAKv7Y,KAAKotH,GAIfA,EAAI4mP,MAAM,kBAAkB,WAE1B,IAAI1nU,EAAQyqV,EAAOwkB,KAAKrmY,QAAQk4G,GAC5B9gF,GAAS,GAAKyqV,EAAOwkB,KAAK/wS,OAAOl+D,EAAO,GAGxCyqV,EAAO3pQ,MAAQA,IAAO2pQ,EAAO3pQ,IAAM2pQ,EAAOwkB,KAAK,IAAM,MAEpDxkB,EAAO3pQ,KAAO2pQ,EAAOz+U,QAAQ4jE,eAKhCliH,KAAKozH,IAAT,CAIApzH,KAAKozH,IAAMA,EAEX,IAAI90E,EAAUt+C,KAAKs+C,QAEnB,GAAIA,aAAmBiiW,IAAgBjiW,aAAmB0iW,GAAa,CACrE,IAAIU,EAAsB,SAAUC,GAClC,IAAI3gT,EAAO1iD,EAAQrsB,QACfwuX,EAAe1jB,EAAOn7X,QAAQ06Y,eAC9BoE,EAAiBvD,IAAqBsD,EAEtCC,GAAkB,aAAciB,GAClCxF,GAAapf,EAAQ4kB,EAAc3gT,GAAM,IAGzCq/S,EAAiB,SAAUsB,GAC7BrjW,EAAQ+hW,iBACRqB,EAAoBC,IAEtBrjW,EAAQqhW,aACNrhW,EAAQuiW,qBACRR,EACAA,GAIJ/hW,EAAQkhW,QAAO,SAAUlN,GACvBvV,EAAOwkB,KAAKz+Y,SAAQ,SAAUswH,GAC5BA,EAAI8lR,OAAS5G,UAKnBgP,GAAUphZ,UAAUinY,WAAa,SAAqBnsT,GACpD,OAAOwmU,GAAaxhZ,KAAKkgZ,YAAallU,IAGxCsmU,GAAUphZ,UAAU0hZ,cAAgB,SAAwB5mU,GAC1D,OAAOwmU,GAAaxhZ,KAAKogZ,aAAcplU,IAGzCsmU,GAAUphZ,UAAUknY,UAAY,SAAoBpsT,GAClD,OAAOwmU,GAAaxhZ,KAAK+/Y,WAAY/kU,IAGvCsmU,GAAUphZ,UAAUu/Y,QAAU,SAAkB3nS,EAAI4nS,GAClD1/Y,KAAKs+C,QAAQmhW,QAAQ3nS,EAAI4nS,IAG3B4B,GAAUphZ,UAAUynO,QAAU,SAAkB+3K,GAC9C1/Y,KAAKs+C,QAAQqpL,QAAQ+3K,IAGvB4B,GAAUphZ,UAAU8F,KAAO,SAAeq4C,EAAU84D,EAAYqwG,GAC5D,IAAIu1K,EAAS/8X,KAGf,IAAKm3G,IAAeqwG,GAA8B,qBAAZplN,QACpC,OAAO,IAAIA,SAAQ,SAAUC,EAASC,GACpCy6X,EAAOz+U,QAAQt4C,KAAKq4C,EAAUh8C,EAASC,MAGzCtC,KAAKs+C,QAAQt4C,KAAKq4C,EAAU84D,EAAYqwG,IAI5C85L,GAAUphZ,UAAUgR,QAAU,SAAkBmtC,EAAU84D,EAAYqwG,GAClE,IAAIu1K,EAAS/8X,KAGf,IAAKm3G,IAAeqwG,GAA8B,qBAAZplN,QACpC,OAAO,IAAIA,SAAQ,SAAUC,EAASC,GACpCy6X,EAAOz+U,QAAQptC,QAAQmtC,EAAUh8C,EAASC,MAG5CtC,KAAKs+C,QAAQptC,QAAQmtC,EAAU84D,EAAYqwG,IAI/C85L,GAAUphZ,UAAUmyO,GAAK,SAAalxO,GACpCnB,KAAKs+C,QAAQ+zL,GAAGlxO,IAGlBmgZ,GAAUphZ,UAAU2hZ,KAAO,WACzB7hZ,KAAKqyO,IAAI,IAGXivK,GAAUphZ,UAAU4hZ,QAAU,WAC5B9hZ,KAAKqyO,GAAG,IAGVivK,GAAUphZ,UAAU6hZ,qBAAuB,SAA+Bj2S,GACxE,IAAIwmS,EAAQxmS,EACRA,EAAGq9D,QACDr9D,EACA9rG,KAAKqC,QAAQypG,GAAIwmS,MACnBtyY,KAAK86Y,aACT,OAAKxI,EAGE,GAAG9rY,OAAOzC,MACf,GACAuuY,EAAMnpO,QAAQptJ,KAAI,SAAU5V,GAC1B,OAAO5G,OAAOsD,KAAKsD,EAAEsoC,YAAY1yB,KAAI,SAAUH,GAC7C,OAAOzV,EAAEsoC,WAAW7yB,UANjB,IAYX0lY,GAAUphZ,UAAUmC,QAAU,SAC5BypG,EACA75E,EACAkrB,GAEAlrB,EAAUA,GAAWjyB,KAAKs+C,QAAQrsB,QAClC,IAAIosB,EAAWu4V,EAAkB9qS,EAAI75E,EAASkrB,EAAQn9C,MAClDsyY,EAAQtyY,KAAKyvC,MAAM4O,EAAUpsB,GAC7B25H,EAAW0mP,EAAMD,gBAAkBC,EAAM1mP,SACzCqrB,EAAOj3K,KAAKs+C,QAAQ24H,KACpBh4H,EAAOwiW,GAAWxqO,EAAMrrB,EAAU5rJ,KAAKw2K,MAC3C,MAAO,CACLn4H,SAAUA,EACVi0V,MAAOA,EACPrzV,KAAMA,EAEN+iW,aAAc3jW,EACdg1U,SAAUif,IAIdgP,GAAUphZ,UAAU26Y,UAAY,WAC9B,OAAO76Y,KAAK8oL,QAAQ+xN,aAGtByG,GAAUphZ,UAAUy6Y,SAAW,SAAmBC,EAAetI,GAC/DtyY,KAAK8oL,QAAQ6xN,SAASC,EAAetI,GACjCtyY,KAAKs+C,QAAQrsB,UAAYwgX,GAC3BzyY,KAAKs+C,QAAQqhW,aAAa3/Y,KAAKs+C,QAAQuiW,uBAI3CS,GAAUphZ,UAAUw6Y,UAAY,SAAoBnB,GAIlDv5Y,KAAK8oL,QAAQ4xN,UAAUnB,GACnBv5Y,KAAKs+C,QAAQrsB,UAAYwgX,GAC3BzyY,KAAKs+C,QAAQqhW,aAAa3/Y,KAAKs+C,QAAQuiW,uBAI3CthZ,OAAOywJ,iBAAkBsxP,GAAUphZ,UAAWq/X,IAe9C+hB,GAAU5yC,QAAUA,GACpB4yC,GAAU/6X,QAAU,QACpB+6X,GAAUtD,oBAAsBA,GAChCsD,GAAUjE,sBAAwBA,GAClCiE,GAAUW,eAAiBxP,EAEvB5sG,IAAa1hR,OAAOkiU,KACtBliU,OAAOkiU,IAAIj2L,IAAIkxP,IAGjB,a,6DCpjGI3oP,EAQAupP,EASAC,E;;;;;;;;;;;;;;gFA3BJ,SAASn+Y,EAAUC,EAASC,EAAYC,EAAGC,GACvC,SAASC,EAAMC,GAAS,OAAOA,aAAiBH,EAAIG,EAAQ,IAAIH,GAAE,SAAU9B,GAAWA,EAAQiC,MAC/F,OAAO,IAAKH,IAAMA,EAAI/B,WAAU,SAAUC,EAASC,GAC/C,SAASiC,EAAUD,GAAS,IAAME,EAAKJ,EAAUK,KAAKH,IAAW,MAAOI,GAAKpC,EAAOoC,IACpF,SAASC,EAASL,GAAS,IAAME,EAAKJ,EAAU,SAASE,IAAW,MAAOI,GAAKpC,EAAOoC,IACvF,SAASF,EAAKI,GAAUA,EAAOC,KAAOxC,EAAQuC,EAAON,OAASD,EAAMO,EAAON,OAAOQ,KAAKP,EAAWI,GAClGH,GAAMJ,EAAYA,EAAUL,MAAME,EAASC,GAAc,KAAKO,YAKtE,SAAWk0J,GACPA,EAAK,WAAa,UAClBA,EAAK,SAAW,QAChBA,EAAK,WAAa,UAClBA,EAAK,QAAU,OACfA,EAAK,WAAa,WALtB,CAMGA,IAASA,EAAO,KAEnB,SAAWupP,GACPA,EAAS,YAAc,WACvBA,EAAS,cAAgB,aACzBA,EAAS,aAAe,YACxBA,EAAS,eAAiB,cAC1BA,EAAS,iBAAmB,gBAC5BA,EAAS,gBAAkB,eAN/B,CAOGA,IAAaA,EAAW,KAE3B,SAAWC,GACPA,EAAO,OAAS,MAChBA,EAAO,WAAa,UACpBA,EAAO,UAAY,SACnBA,EAAO,SAAW,QAClBA,EAAO,mBAAqB,kBALhC,CAMGA,IAAWA,EAAS,KACvB,MAAMC,EAAe,qBAEfhzW,EAAS,CACXliB,KAAM,CACFA,KAAMvc,OACN4rL,QAAS5jC,EAAK2J,SAElB+/O,WAAY,CACRn1X,KAAM,CAACvc,OAAQjR,OACf68L,QAAS,IAAM,IAEnB+lN,YAAa,CACTp1X,KAAMoqE,QACNilG,SAAS,IAGXgmN,EAAO,CACTr1X,KAAMkiB,EAAOliB,KACbs1X,WAAY,CACRt1X,KAAM,CAACvc,OAAQ2mF,QAAS/3F,OAAQ+mJ,UAChCi2C,SAAS,IAGXkmN,EAAe,CACjBjwG,UAAW,CACPtlR,KAAM,CAACvc,OAAQpR,OAAQ+mJ,SAAUhvD,SACjCilG,QAAS,UAEb8lN,WAAYjzW,EAAOizW,WACnBK,YAAaprT,QACbqgO,UAAW,CACPzqS,KAAMvc,OACN4rL,QAAS,UAGXomN,EAAe,CACjBv/Y,QAAS,CACL8pB,KAAM,CAACkb,OAAQkvD,SACfilG,QAAS,KAEbqmN,gBAAiBtrT,QACjByoH,UAAWzoH,SAETurT,EAAa,CACfrpE,WAAY,CACRtsT,KAAM,CAAC3tB,OAAQoR,QACf4rL,QAAS,GAAG6lN,aAEhBU,mBAAoB,CAChB51X,KAAM,CAACkb,OAAQ7oC,QACfg9L,QAAS,MAGXwmN,EAAa,CACfr4U,SAAU,CACNx9C,KAAMvc,OACN4rL,QAAS2lN,EAASc,WAEtB7hE,UAAW/xS,EAAOkzW,YAClBW,iBAAkB,CACd/1X,KAAMkb,OACNm0J,QAAS,IAEb2mN,iBAAkB9zW,EAAOkzW,YACzBa,aAAc/zW,EAAOkzW,YACrBvvD,aAAc3jT,EAAOkzW,YACrBl/Y,QAASu/Y,EAAav/Y,QACtBw/Y,gBAAiBD,EAAaC,gBAC9BQ,eAAgBh0W,EAAOizW,WACvBgB,cAAej0W,EAAOizW,WACtBnkE,KAAMqkE,EAAKC,WACXc,YAAab,EAAajwG,UAC1B+wG,qBAAsBd,EAAaJ,WACnCmB,uBAAwBf,EAAaC,YACrCe,cAAe,CACXv2X,KAAM3tB,OACNg9L,QAAS,KAAM,CACXmnN,UAAW,QACXC,iBAAkB,WAG1BrnE,IAAKhlP,QACLssT,SAAUrkZ,QAERskZ,EAAQ,CACV59W,GAAI,CACA/Y,KAAM,CAACvc,OAAQy3B,QACfmyI,UAAU,GAEdrtJ,KAAMkiB,EAAOliB,KACb1rB,QAAS,CACL0rB,KAAM,CAACvc,OAAQpR,OAAQ+mJ,UACvBi0B,UAAU,GAEd6yK,QAAS9mM,SACTw9P,QAASx9P,UAEPy9P,EAAY,CACdrxQ,UAAW,CACPxlH,UAAMgZ,EACNq2J,QAAS,IAAM5mJ,SAAS3wC,MAE5Bg/Y,YAAa50W,EAAOkzW,YACpB2B,UAAW,CACP/2X,KAAMkb,OACNm0J,QAAS,IAEbi9I,WAAYqpE,EAAWrpE,WACvBspE,mBAAoBD,EAAWC,mBAC/BoB,cAAe3kZ,OACf4kZ,mBAAoB,CAChBj3X,KAAMo5H,SACNi2C,QAAU6nN,GAAUA,GAExBC,aAAc,CACVn3X,KAAMo5H,SACNi2C,QAAU+nN,GAAWA,GAEzBC,mBAAoBn1W,EAAOizW,WAC3BmC,UAAWl+P,UAEf,IAAIm+P,EAAQ,CACR1B,aACAc,QACAE,YACApB,eACAJ,OACAM,aACAJ,gBAIJ,MAAM3yT,EAAcxrF,GAA2B,oBAAVA,EAC/ByrF,EAAYzrF,GAA2B,kBAAVA,EAC7BogZ,EAAoBpgZ,GAAUyrF,EAASzrF,IAAUA,EAAMoX,OAAOra,OAAS,EACvE2uF,EAAY1rF,GAA2B,kBAAVA,EAC7BsrF,EAAetrF,GAA2B,qBAAVA,EAChC00E,EAAY10E,GAA2B,kBAAVA,GAAgC,OAAVA,EACnDqgZ,EAAS7pY,GAAQ8pY,EAAQ9pY,EAAK,QAAU4pY,EAAiB5pY,EAAIkhJ,KAC7DswM,EAAgB1lV,GAAUzC,OAAO0gY,YAAcj+X,aAAiBi+X,WAChEC,EAAoBhqY,GAAQ8pY,EAAQ9pY,EAAK,cAAgBiqY,EAAejqY,EAAI03R,WAC5El8I,EAAiBriF,GACZ6b,EAAW7b,IAAM2wU,EAAQ3wU,EAAG,OAEjC+wU,EAAkB/wU,KAChBqiF,EAAcriF,MAGb+E,EAAS/E,QAGVA,EAAEgxU,UAAWhxU,EAAEixU,WAGfn1T,EAAS9b,EAAEqE,WAGR6sU,EAAkBlxU,KAEvBmxU,EAA4BtqY,GAAQA,aAAe,KAAOkqY,EAAelqY,GACzEiqY,EAAkBjqY,IAEvB80E,EAAY90E,KAERi1E,EAASj1E,IAENsqY,EAAyBtqY,IAEzBqqY,EAAkBrqY,IAElB6pY,EAAM7pY,IAENgqY,EAAiBhqY,IACnBuqY,EAAavqY,GAAQk+D,EAASl+D,IAChCk1E,EAASl1E,EAAI2kD,SACbuwB,EAASl1E,EAAIykD,QACbywB,EAASl1E,EAAIo1F,QACblgB,EAASl1E,EAAI8kD,OACbowB,EAASl1E,EAAI4kD,MACbswB,EAASl1E,EAAI+xM,QACX+3L,EAAU,CAAC9pY,EAAKwqY,IAAY/lZ,OAAOW,UAAUJ,eAAea,KAAKma,EAAKwqY,GACtEH,EAAqBrqY,GAEtB8pY,EAAQ9pY,EAAK,WAAag1E,EAAWh1E,EAAIkuI,QAIxCu8P,EAAQ,CAAErkZ,GAAM,IAAMA,IAAd,CAAmB,GACjC,SAASskZ,EAAK5+X,GACV,OAAO0lV,EAAa1lV,GAASA,EAAM6+X,cAAc,GAAG74C,QAAUhmV,EAAMgmV,QAExE,SAAS84C,EAAK9+X,GACV,OAAO0lV,EAAa1lV,GAASA,EAAM6+X,cAAc,GAAG54C,QAAUjmV,EAAMimV,QAExE,MAAMhhF,EAAiBr3H,IACd5kE,EAAY4kE,EAAGrwB,QAGXqwB,EAAGzpF,YACRypF,EAAGzpF,WAAWC,YAAYwpF,GAH1BA,EAAGrwB,UAMLwhR,EAA0B7qY,GACxBgqY,EAAiBhqY,GAEV6qY,EAAuB7qY,EAAI03R,WAElCmyG,EAAM7pY,GAEC,CACHkuI,SACI,OAAOluI,IAKZA,EAGX,IAAIupX,EAAS,WAAW,CACpB5uQ,MAAOgvR,EAAM9B,aACbvyY,OACI,MAAO,CACHgrU,UAAU,IAGlBttF,SAAU,CACNtjL,QACI,MAAO,CACHo7U,kBAAmB,GAAG5lZ,KAAKoD,YAC3ByiZ,mBAAoB7lZ,KAAK+/M,UAAY,UAAY,SACjDw1F,QAASv1S,KAAK4iZ,gBAAkB,EAAI,IAG5CkD,UACI,OAAO9lZ,KAAKo7U,SAAW,GAAGgnE,kBAA+B,KAGjEp4D,UACIhqV,KAAK8/U,IAAIp6T,iBAAiB,eAAgB1lB,KAAK+lZ,iBAEnD/hE,gBACIhkV,KAAK8/U,IAAIp8R,oBAAoB,eAAgB1jD,KAAK+lZ,iBAEtD7qU,QAAS,CACL6qU,iBACI/lZ,KAAKggV,MAAM,iBAGnBuD,MAAO,CACHngV,UACIpD,KAAKo7U,UAAW,EAChBp7U,KAAK8jV,WAAU,IAAO9jV,KAAKo7U,UAAW,QAKlD,SAAStyL,EAAmBxwE,EAAU9N,EAAO65T,EAAQj7O,EAAS48P,EAAsB38P,EAAoCC,EAAY28P,EAAgBC,EAAmBC,GACzI,mBAAf78P,IACP48P,EAAoBD,EACpBA,EAAiB38P,EACjBA,GAAa,GAGjB,MAAM1nJ,EAA4B,oBAAXyiY,EAAwBA,EAAOziY,QAAUyiY,EAehE,IAAIrpR,EAmCJ,GAhDI1iC,GAAYA,EAAS0wE,SACrBpnJ,EAAQonJ,OAAS1wE,EAAS0wE,OAC1BpnJ,EAAQqnJ,gBAAkB3wE,EAAS2wE,gBACnCrnJ,EAAQ2nJ,WAAY,EAEhBy8P,IACApkZ,EAAQ4nJ,YAAa,IAIzBJ,IACAxnJ,EAAQ6nJ,SAAWL,GAGnBC,GAEAruC,EAAO,SAAU3E,GAEbA,EACIA,GACKr2G,KAAK0pJ,QAAU1pJ,KAAK0pJ,OAAOC,YAC3B3pJ,KAAK6+C,QAAU7+C,KAAK6+C,OAAO6qG,QAAU1pJ,KAAK6+C,OAAO6qG,OAAOC,WAE5DtzC,GAA0C,qBAAxBuzC,sBACnBvzC,EAAUuzC,qBAGVp/E,GACAA,EAAM7pE,KAAKX,KAAMkmZ,EAAkB7vS,IAGnCA,GAAWA,EAAQwzC,uBACnBxzC,EAAQwzC,sBAAsB1sH,IAAIksH,IAK1CznJ,EAAQkoJ,aAAe9uC,GAElBxwC,IACLwwC,EAAOsuC,EACD,SAAUjzC,GACR7rC,EAAM7pE,KAAKX,KAAMmmZ,EAAqB9vS,EAASr2G,KAAK+pJ,MAAMC,SAASC,cAErE,SAAU5zC,GACR7rC,EAAM7pE,KAAKX,KAAMimZ,EAAe5vS,MAGxC2E,EACA,GAAIp5G,EAAQ4nJ,WAAY,CAEpB,MAAMW,EAAiBvoJ,EAAQonJ,OAC/BpnJ,EAAQonJ,OAAS,SAAkCxtC,EAAGnF,GAElD,OADA2E,EAAKr6G,KAAK01G,GACH8zC,EAAe3uC,EAAGnF,QAG5B,CAED,MAAM+zC,EAAWxoJ,EAAQyoJ,aACzBzoJ,EAAQyoJ,aAAeD,EAAW,GAAG5jJ,OAAO4jJ,EAAUpvC,GAAQ,CAACA,GAGvE,OAAOqpR,EAIX,MAAM+hB,EAAiB/hB,EAGvB,IAAIgiB,EAAiB,WACnB,IAAIlpB,EAAMn9X,KACNokN,EAAK+4K,EAAIj9C,eACT/pT,EAAKgnW,EAAI1pS,MAAMt9D,IAAMiuL,EACzB,OAAOjuL,EAAG,MAAO,CAAEkmT,MAAO8gD,EAAI2oB,QAASt7U,MAAO2yT,EAAI3yT,SAEhD87U,EAA0B,GAC9BD,EAAeE,eAAgB,EAG7B,MAAMC,OAAwBtgX,EAExBugX,OAAmBvgX,EAEnBwgX,OAA4BxgX,EAE5BygX,GAAiC,EASjCC,EAAiC99P,EACrC,CAAEE,OAAQq9P,EAAgBp9P,gBAAiBq9P,GAC3CE,EACAJ,EACAK,EACAE,EACAD,GACA,OACAxgX,OACAA,OACAA,GAGJ,IAAI2gX,EAAW,WAAW,CACtBpxR,MAAOgvR,EAAMhC,aACb30J,SAAU,CACNg5J,kBACI,OAAuB,IAAnB9mZ,KAAKwyS,UACEmzG,EAAuB3lZ,KAAKwyS,WAEhC,UAEXqqC,UACI,MAAMA,EAAU,CAAC,GAAGulE,mBAIpB,OAHIpiZ,KAAK0iZ,aACL7lE,EAAQ72U,KAAK,iBAEV62U,EAAQr2U,OAAOxG,KAAKqiZ,gBAMvC,MAAM0E,EAAmBF,EAGzB,IAAIG,EAAmB,WACrB,IAAI7pB,EAAMn9X,KACNokN,EAAK+4K,EAAIj9C,eACT/pT,EAAKgnW,EAAI1pS,MAAMt9D,IAAMiuL,EACzB,OAAOjuL,EACLgnW,EAAI2pB,gBACJ3pB,EAAIh5K,GACF,CACEnoD,IAAK,YACLqgL,MAAO8gD,EAAItgD,QACXL,MAAO,CAAE,aAAc2gD,EAAIxlE,YAE7BwlE,EAAIhgD,YAEN,CAACggD,EAAI3+F,GAAG,cAGRyoH,EAA4B,GAChCD,EAAiBT,eAAgB,EAG/B,MAAMW,OAA0BhhX,EAE1BihX,QAAqBjhX,EAErBkhX,QAA8BlhX,EAE9BmhX,IAAmC,EASnCC,GAAmCx+P,EACvC,CAAEE,OAAQg+P,EAAkB/9P,gBAAiBg+P,GAC7CC,EACAH,EACAI,GACAE,GACAD,IACA,OACAlhX,OACAA,OACAA,GAGJ,IAAIqhX,GAAW,GAGf,MAAMC,GAAmBD,GAGzB,IAAIE,GAAmB,WACrB,IAAItqB,EAAMn9X,KACNokN,EAAK+4K,EAAIj9C,eACT/pT,EAAKgnW,EAAI1pS,MAAMt9D,IAAMiuL,EACzB,OAAOjuL,EACL,MACA,CACEgmT,YAAa,yCACbK,MAAO,CACL,cAAe,OACfpkB,UAAW,QACX,cAAe,MACf,YAAa,eACbgtB,KAAM,MACN+C,MAAO,6BACPC,QAAS,gBAGb,CACEjyT,EAAG,OAAQ,CACTqmT,MAAO,CACLxgK,KAAM,eACNr8K,EACE,6WAMR+nZ,GAA4B,GAChCD,GAAiBlB,eAAgB,EAG/B,MAAMoB,QAA0BzhX,EAE1B0hX,QAAqB1hX,EAErB2hX,QAA8B3hX,EAE9B4hX,IAAmC,EASnCC,GAAmCj/P,EACvC,CAAEE,OAAQy+P,GAAkBx+P,gBAAiBy+P,IAC7CC,GACAH,GACAI,GACAE,GACAD,IACA,OACA3hX,OACAA,OACAA,GAGJ,IAAI8hX,GAAW,GAGf,MAAMC,GAAmBD,GAGzB,IAAIE,GAAmB,WACrB,IAAI/qB,EAAMn9X,KACNokN,EAAK+4K,EAAIj9C,eACT/pT,EAAKgnW,EAAI1pS,MAAMt9D,IAAMiuL,EACzB,OAAOjuL,EACL,MACA,CACEgmT,YAAa,wCACbK,MAAO,CACL,cAAe,OACfpkB,UAAW,QACX,cAAe,MACf,YAAa,cACbgtB,KAAM,MACN+C,MAAO,6BACPC,QAAS,gBAGb,CACEjyT,EAAG,OAAQ,CACTqmT,MAAO,CACLxgK,KAAM,eACNr8K,EACE,wZAMRwoZ,GAA4B,GAChCD,GAAiB3B,eAAgB,EAG/B,MAAM6B,QAA0BliX,EAE1BmiX,QAAqBniX,EAErBoiX,QAA8BpiX,EAE9BqiX,IAAmC,EASnCC,GAAmC1/P,EACvC,CAAEE,OAAQk/P,GAAkBj/P,gBAAiBk/P,IAC7CC,GACAH,GACAI,GACAE,GACAD,IACA,OACApiX,OACAA,OACAA,GAGJ,IAAIuiX,GAAW,GAGf,MAAMC,GAAmBD,GAGzB,IAAIE,GAAmB,WACrB,IAAIxrB,EAAMn9X,KACNokN,EAAK+4K,EAAIj9C,eACT/pT,EAAKgnW,EAAI1pS,MAAMt9D,IAAMiuL,EACzB,OAAOjuL,EACL,MACA,CACEgmT,YAAa,+CACbK,MAAO,CACL,cAAe,OACfpkB,UAAW,QACX,cAAe,MACf,YAAa,qBACbgtB,KAAM,MACN+C,MAAO,6BACPC,QAAS,gBAGb,CACEjyT,EAAG,OAAQ,CACTqmT,MAAO,CACLxgK,KAAM,eACNr8K,EACE,uYAMRipZ,GAA4B,GAChCD,GAAiBpC,eAAgB,EAG/B,MAAMsC,QAA0B3iX,EAE1B4iX,QAAqB5iX,EAErB6iX,QAA8B7iX,EAE9B8iX,IAAmC,EASnCC,GAAmCngQ,EACvC,CAAEE,OAAQ2/P,GAAkB1/P,gBAAiB2/P,IAC7CC,GACAH,GACAI,GACAE,GACAD,IACA,OACA7iX,OACAA,OACAA,GAGJ,IAAIgjX,GAAW,GAGf,MAAMC,GAAmBD,GAGzB,IAAIE,GAAmB,WACrB,IAAIjsB,EAAMn9X,KACNokN,EAAK+4K,EAAIj9C,eACT/pT,EAAKgnW,EAAI1pS,MAAMt9D,IAAMiuL,EACzB,OAAOjuL,EACL,MACA,CACEgmT,YAAa,iDACbK,MAAO,CACL,cAAe,OACfpkB,UAAW,QACX,cAAe,MACf,YAAa,uBACbgtB,KAAM,MACN+C,MAAO,6BACPC,QAAS,gBAGb,CACEjyT,EAAG,OAAQ,CACTqmT,MAAO,CACLxgK,KAAM,eACNr8K,EACE,ycAMR0pZ,GAA4B,GAChCD,GAAiB7C,eAAgB,EAG/B,MAAM+C,QAA0BpjX,EAE1BqjX,QAAqBrjX,EAErBsjX,QAA8BtjX,EAE9BujX,IAAmC,EASnCC,GAAmC5gQ,EACvC,CAAEE,OAAQogQ,GAAkBngQ,gBAAiBogQ,IAC7CC,GACAH,GACAI,GACAE,GACAD,IACA,OACAtjX,OACAA,OACAA,GAGJ,IAAIyjX,GAAW,WAAW,CACtBl0R,MAAOgvR,EAAMlC,KACbz0J,SAAU,CACN87J,qBACI,OAAOhF,EAAQ5kZ,KAAKwiZ,WAAY,gBAC1BxiZ,KAAK6pZ,UAAU7pZ,KAAKwiZ,WAAWsH,cAC/B,IAEVC,kBACI,OAAIh6T,EAAS/vF,KAAKwiZ,YACPxiZ,KAAK6pZ,UAAU7pZ,KAAKwiZ,YAEtBoC,EAAQ5kZ,KAAKwiZ,WAAY,aACvBxiZ,KAAK6pZ,UAAU7pZ,KAAKwiZ,WAAWwH,WAEnC,IAEXC,gBACI,OAAIrF,EAAQ5kZ,KAAKwiZ,WAAY,WAClBxiZ,KAAK6pZ,UAAU7pZ,KAAKwiZ,WAAW0H,QAAS,KAE5C,KAEXC,gBACI,OAAOnqZ,KAAK+pZ,gBAAgB1oZ,OAAS,GAEzCmxS,YACI,OAAIxyS,KAAKmqZ,cACEnqZ,KAAKiqZ,cAEZlF,EAAe/kZ,KAAKwiZ,YACbmD,EAAuB3lZ,KAAKwiZ,YAEhCxiZ,KAAKoqZ,mBAEhBA,oBACI,MAAMjlK,EAAQ,CACV,CAACxsF,EAAK2J,SAAUkmP,GAChB,CAAC7vP,EAAK0xP,MAAO7B,GACb,CAAC7vP,EAAK2xP,SAAUvC,GAChB,CAACpvP,EAAK9mH,OAAQ63W,GACd,CAAC/wP,EAAK4xP,SAAUtB,IAEpB,OAAO9jK,EAAMnlP,KAAKktB,OAEtBs9X,cACI,MAAM3tE,EAAU,CAAC,GAAGulE,WACpB,OAAIpiZ,KAAKmqZ,cACEttE,EAAQr2U,OAAOxG,KAAK+pZ,iBAExBltE,IAGf3hQ,QAAS,CACL2uU,UAAUvlZ,EAAOinK,EAAQ,IACrB,OAAOm5O,EAAiBpgZ,GAASA,EAAMoX,OAAS6vJ,MAM5D,MAAMk/O,GAAmBd,GAGzB,IAAIe,GAAmB,WACrB,IAAIvtB,EAAMn9X,KACNokN,EAAK+4K,EAAIj9C,eACT/pT,EAAKgnW,EAAI1pS,MAAMt9D,IAAMiuL,EACzB,OAAOjuL,EAAGgnW,EAAI3qF,UAAW,CAAEx2I,IAAK,YAAaqgL,MAAO8gD,EAAIqtB,aAAe,CACrErtB,EAAI3+F,GAAG2+F,EAAIl1F,GAAGk1F,EAAIysB,wBAGlBe,GAA4B,GAChCD,GAAiBnE,eAAgB,EAG/B,MAAMqE,QAA0B1kX,EAE1B2kX,QAAqB3kX,EAErB4kX,QAA8B5kX,EAE9B6kX,IAAmC,EASnCC,GAAmCliQ,EACvC,CAAEE,OAAQ0hQ,GAAkBzhQ,gBAAiB0hQ,IAC7CC,GACAH,GACAI,GACAE,GACAD,IACA,OACA5kX,OACAA,OACAA,GAGJ,IAAI+kX,GAAW,WAAW,CACtBx8W,WAAY,CAAEy8W,YAAatE,EAAmBuE,YAAa7D,GAAqB8D,KAAMJ,IACtFjgE,cAAc,EACdt1N,MAAOl2H,OAAOwB,OAAO,GAAI0jZ,EAAM1B,WAAY0B,EAAMZ,OACjDzzY,OACI,MAAMA,EAAO,CACT2vM,WAAW,EACXsrM,oBAAoB,EACpBC,cAAc,EACdC,UAAW,EACXC,QAAS,CAAEl+O,EAAG,EAAGpoK,EAAG,GACpBumZ,SAAU,IAEd,OAAOr7Y,GAEX09O,SAAU,CACN+uF,UACI,MAAMA,EAAU,CACZ,GAAGulE,WACH,GAAGA,aAAwBpiZ,KAAKktB,OAChC,GAAGltB,KAAK0qE,YACVlkE,OAAOxG,KAAKojZ,gBAOd,OANIpjZ,KAAKqrZ,oBACLxuE,EAAQ72U,KAAK,sBAEbhG,KAAKs8U,KACLO,EAAQ72U,KAAK,GAAGo8Y,iBAEbvlE,GAEX6uE,cACI,MAAM7uE,EAAU,CACZ,GAAGulE,YAAuBryT,EAAS/vF,KAAKwB,SAAW,OAAS,oBAC9DgF,OAAOxG,KAAKqjZ,eACd,OAAOxmE,GAEX8uE,iBACI,OAAI3rZ,KAAKurZ,YAAcvrZ,KAAKwrZ,QAAQl+O,EACzB,GAEPttK,KAAKsrZ,aACE,CACH5iK,UAAW,cAAc1oP,KAAK4rZ,eAC9Br2G,QAAS,EAAItmS,KAAKgyF,IAAIjhG,KAAK4rZ,UAAY5rZ,KAAK6rZ,kBAG7C,CACHryE,WAAY,+BACZ9wF,UAAW,gBACX6sD,QAAS,IAGjBq2G,YACI,OAAO5rZ,KAAKsrZ,aAAetrZ,KAAKwrZ,QAAQl+O,EAAIttK,KAAKurZ,UAAY,GAEjEM,kBACI,OAAIxG,EAAUrlZ,KAAKyrZ,WACNzrZ,KAAKyrZ,SAASv7S,MAAQlwG,KAAKyrZ,SAAS7rV,MAAQ5/D,KAAKijZ,iBAEvD,IAGfj5D,UACQhqV,KAAKmhV,WACLnhV,KAAK8rZ,iBAEL9rZ,KAAKkjZ,kBACLljZ,KAAK+rZ,cAGb/nE,gBACQhkV,KAAKmhV,WACLnhV,KAAKgsZ,mBAELhsZ,KAAKkjZ,kBACLljZ,KAAKisZ,gBAGbhoL,YACIv7L,YAAW,KACPmjP,EAAc7rR,KAAK8/U,OACpB,MAEP5kQ,QAAS,CACLyqU,yBACAuG,aACIlsZ,KAAK4jZ,SAAS5jE,MAAMmiE,EAAOgK,QAASnsZ,KAAKimC,KAE7Cs8L,eACQviO,KAAKotV,SACLptV,KAAKotV,QAAQptV,KAAKksZ,YAElBlsZ,KAAK+yV,eACA/yV,KAAKsrZ,cAAgBtrZ,KAAKurZ,YAAcvrZ,KAAKwrZ,QAAQl+O,GACtDttK,KAAKksZ,eAIjBE,iBACIpsZ,KAAKksZ,cAETG,aACQrsZ,KAAKmjZ,eACLnjZ,KAAK+/M,WAAY,IAGzBusM,YACQtsZ,KAAKmjZ,eACLnjZ,KAAK+/M,WAAY,IAGzBwsM,aACIvsZ,KAAK+/M,WAAY,GAErBysM,YACIxsZ,KAAK+/M,WAAY,GAErBgsM,aACIrmY,iBAAiB,OAAQ1lB,KAAKusZ,YAC9B7mY,iBAAiB,QAAS1lB,KAAKwsZ,YAEnCP,eACIvoW,oBAAoB,OAAQ1jD,KAAKusZ,YACjC7oW,oBAAoB,QAAS1jD,KAAKwsZ,YAEtCV,iBACI,MAAMtxP,EAAUx6J,KAAK8/U,IACrBtlL,EAAQ90I,iBAAiB,aAAc1lB,KAAKysZ,YAAa,CACrDvgD,SAAS,IAEb1xM,EAAQ90I,iBAAiB,YAAa1lB,KAAKysZ,aAC3C/mY,iBAAiB,YAAa1lB,KAAK0sZ,WAAY,CAAExgD,SAAS,IAC1DxmV,iBAAiB,YAAa1lB,KAAK0sZ,YACnChnY,iBAAiB,WAAY1lB,KAAK2sZ,WAClCjnY,iBAAiB,UAAW1lB,KAAK2sZ,YAErCX,mBACI,MAAMxxP,EAAUx6J,KAAK8/U,IACrBtlL,EAAQ92G,oBAAoB,aAAc1jD,KAAKysZ,aAC/CjyP,EAAQ92G,oBAAoB,YAAa1jD,KAAKysZ,aAC9C/oW,oBAAoB,YAAa1jD,KAAK0sZ,YACtChpW,oBAAoB,YAAa1jD,KAAK0sZ,YACtChpW,oBAAoB,WAAY1jD,KAAK2sZ,WACrCjpW,oBAAoB,UAAW1jD,KAAK2sZ,YAExCF,YAAY7lY,GACR5mB,KAAKsrZ,cAAe,EACpBtrZ,KAAKwrZ,QAAU,CAAEl+O,EAAGk4O,EAAK5+X,GAAQ1hB,EAAGwgZ,EAAK9+X,IACzC5mB,KAAKurZ,UAAY/F,EAAK5+X,GACtB5mB,KAAKyrZ,SAAWzrZ,KAAK8/U,IAAI0Z,yBAE7BkzD,WAAW9lY,GACH5mB,KAAKsrZ,eACL1kY,EAAMm5C,iBACF//D,KAAK+/M,YACL//M,KAAK+/M,WAAY,GAErB//M,KAAKwrZ,QAAU,CAAEl+O,EAAGk4O,EAAK5+X,GAAQ1hB,EAAGwgZ,EAAK9+X,MAGjD+lY,YACQ3sZ,KAAKsrZ,eACDr8Y,KAAKgyF,IAAIjhG,KAAK4rZ,YAAc5rZ,KAAK6rZ,iBACjC7rZ,KAAKqrZ,oBAAqB,EAC1BrrZ,KAAK8jV,WAAU,IAAM9jV,KAAKksZ,gBAG1BxjX,YAAW,KACP1oC,KAAKsrZ,cAAe,EAChBjG,EAAUrlZ,KAAKyrZ,WACfzrZ,KAAKmjZ,cACLnjZ,KAAKyrZ,SAAS5+L,QAAU7sN,KAAKwrZ,QAAQtmZ,GACrClF,KAAKwrZ,QAAQtmZ,GAAKlF,KAAKyrZ,SAAS/rV,KAChC1/D,KAAKyrZ,SAAS7rV,MAAQ5/D,KAAKwrZ,QAAQl+O,GACnCttK,KAAKwrZ,QAAQl+O,GAAKttK,KAAKyrZ,SAASv7S,MAChClwG,KAAK+/M,WAAY,EAGjB//M,KAAK+/M,WAAY,UAU7C,MAAM6sM,GAAmB3B,GAGzB,IAAI4B,GAAmB,WACrB,IAAI1vB,EAAMn9X,KACNokN,EAAK+4K,EAAIj9C,eACT/pT,EAAKgnW,EAAI1pS,MAAMt9D,IAAMiuL,EACzB,OAAOjuL,EACL,MACA,CACEkmT,MAAO8gD,EAAItgD,QACXryQ,MAAO2yT,EAAIwuB,eACXzuE,GAAI,CACFluG,MAAOmuJ,EAAI56J,aACXm0H,WAAYymC,EAAIkvB,WAChBz1D,WAAYumC,EAAImvB,YAGpB,CACEnvB,EAAIj/C,KACA/nT,EAAG,OAAQ,CAAEqmT,MAAO,CAAE,cAAe2gD,EAAIj/C,KAAMhxT,KAAMiwW,EAAIjwW,QACzDiwW,EAAI9mW,KACR8mW,EAAI3+F,GAAG,KACProQ,EACE,MACA,CACEkmT,MAAO8gD,EAAIuuB,YACXlvE,MAAO,CAAE4I,KAAM+3C,EAAIsmB,cAAcC,WAAa,UAEhD,CACyB,kBAAhBvmB,EAAI37X,QACP,CAAC27X,EAAI3+F,GAAG2+F,EAAIl1F,GAAGk1F,EAAI37X,WACnB20B,EACEgnW,EAAIwoB,uBAAuBxoB,EAAI37X,SAC/B27X,EAAIh5K,GACFg5K,EAAIlyW,GACF,CACE+wI,IAAK,YACLwgL,MAAO,CAAE,WAAY2gD,EAAIl3V,IACzBi3S,GAAI,CAAE,cAAeigD,EAAI+uB,aAE3B,YACA/uB,EAAI37X,QAAQi0H,OACZ,GAEF0nQ,EAAI37X,QAAQsoI,aAItB,GAEFqzP,EAAI3+F,GAAG,KACL2+F,EAAImmB,YACFntX,EAAG,cAAe,CAChBqmT,MAAO,CACLhqC,UAAW2qF,EAAImmB,YACf,cAAenmB,EAAIomB,qBACnB,gBAAiBpmB,EAAIqmB,uBACrB,aAAcrmB,EAAIsmB,cAAcE,kBAElCzmE,GAAI,CACFluG,MAAO,SAAS89K,GAEd,OADAA,EAAOhrE,kBACAq7C,EAAI+uB,WAAWY,OAI5B3vB,EAAI9mW,KACR8mW,EAAI3+F,GAAG,KACP2+F,EAAI/5X,QACA+yB,EAAG,cAAe,CAChBqmT,MAAO,CACL,aAAc2gD,EAAIp9K,UAClB,oBAAqBo9K,EAAIylB,gBACzBx/Y,QAAS+5X,EAAI/5X,SAEf85U,GAAI,CAAE,cAAeigD,EAAIivB,kBAE3BjvB,EAAI9mW,MAEV,IAGA02X,GAA4B,GAChCF,GAAiBtG,eAAgB,EAG/B,MAAMyG,QAA0B9mX,EAE1B+mX,QAAqB/mX,EAErBgnX,QAA8BhnX,EAE9BinX,IAAmC,EASnCC,GAAmCtkQ,EACvC,CAAEE,OAAQ6jQ,GAAkB5jQ,gBAAiB8jQ,IAC7CC,GACAJ,GACAK,GACAE,GACAD,IACA,OACAhnX,OACAA,OACAA,GAIJ,IAAImnX,GAAW,WAAW,CACtBtiE,cAAc,EACdt1N,MAAOgvR,EAAM5B,WACb3nU,QAAS,CACLwnR,YAAYluM,GACR,MAAM84P,EAAmD,kBAA5BttZ,KAAK8iZ,mBAC5B9iZ,KAAK8iZ,mBACL9iZ,KAAK8iZ,mBAAmBx0O,MAC9B9Z,EAAGhqF,MAAMo7U,kBAAoB,GAAG0H,MAChC94P,EAAGhqF,MAAM+iV,kBAAoB,OAC7BvtZ,KAAKggV,MAAM,eAAgBxrL,IAE/BguM,WAAWhuM,GACPx0J,KAAKwtZ,cAAch5P,GACnBx0J,KAAKggV,MAAM,cAAexrL,IAE9B21M,WAAW31M,GACPx0J,KAAKwtZ,cAAch5P,GACnBx0J,KAAKggV,MAAM,cAAexrL,IAE9BouM,YAAYpuM,GACR,MAAMi5P,EAAmD,kBAA5BztZ,KAAK8iZ,mBAC5B9iZ,KAAK8iZ,mBACL9iZ,KAAK8iZ,mBAAmB74C,MAC9Bz1M,EAAGhqF,MAAMo7U,kBAAoB,GAAG6H,MAChCj5P,EAAGhqF,MAAM+iV,kBAAoB,OAC7BvtZ,KAAKggV,MAAM,eAAgBxrL,IAG/By1M,MAAMz1M,EAAI3vJ,GACN7E,KAAK0tZ,oBAAoBl5P,GACzBx0J,KAAKggV,MAAM,QAASxrL,EAAI3vJ,IAE5B6oZ,oBAAoBl5P,GAChBA,EAAGhqF,MAAM5K,KAAO40F,EAAGg0M,WAAa,KAChCh0M,EAAGhqF,MAAM9K,IAAM80F,EAAGugM,UAAY,KAC9BvgM,EAAGhqF,MAAMjL,MAAQ2tS,iBAAiB14M,GAAIj1F,MACtCi1F,EAAGhqF,MAAM/K,OAASytS,iBAAiB14M,GAAI/0F,OACvC+0F,EAAGhqF,MAAME,SAAW,YAExB8iV,cAAch5P,GACVA,EAAGhqF,MAAM+iV,kBAAoB,GAC7B/4P,EAAGhqF,MAAMo7U,kBAAoB,OAMzC,MAAM+H,GAAmBN,GAGzB,IAAIO,GAAmB,WACrB,IAAIzwB,EAAMn9X,KACNokN,EAAK+4K,EAAIj9C,eACT/pT,EAAKgnW,EAAI1pS,MAAMt9D,IAAMiuL,EACzB,OAAOjuL,EACL,mBACA,CACEqmT,MAAO,CACLxgL,IAAK,MACL,qBAAsBmhO,EAAI3jD,WAAWlrK,MACjC6uN,EAAI3jD,WAAWlrK,MACf6uN,EAAI3jD,WAAa,gBACrB,aAAc2jD,EAAI3jD,WAAWq0E,KACzB1wB,EAAI3jD,WAAWq0E,KACf1wB,EAAI3jD,WAAa,QACrB,qBAAsB2jD,EAAI3jD,WAAWywB,MACjCkzB,EAAI3jD,WAAWywB,MACfkzB,EAAI3jD,WAAa,iBAEvB0D,GAAI,CACF+sB,MAAOkzB,EAAIlzB,MACX,eAAgBkzB,EAAIz6B,YACpB,eAAgBy6B,EAAIv6B,YACpB,cAAeu6B,EAAI36B,WACnB,cAAe26B,EAAIhzB,aAGvB,CAACgzB,EAAIj8F,GAAG,YACR,IAGA4sH,GAA4B,GAChCF,GAAiBrH,eAAgB,EAG/B,MAAMwH,QAA0B7nX,EAE1B8nX,QAAqB9nX,EAErB+nX,QAA8B/nX,EAE9BgoX,IAAmC,EASnCC,GAAmCrlQ,EACvC,CAAEE,OAAQ4kQ,GAAkB3kQ,gBAAiB6kQ,IAC7CC,GACAJ,GACAK,GACAE,GACAD,IACA,OACA/nX,OACAA,OACAA,GAGJ,IAAIkoX,GAAW,WAAW,CACtB3/W,WAAY,CAAE4/W,MAAOjB,GAAqBkB,aAAcH,IACxD14R,MAAOl2H,OAAOwB,OAAO,GAAI0jZ,EAAM1B,WAAY0B,EAAMV,UAAWU,EAAM5B,YAClEzyY,OACI,MAAMA,EAAO,CACT6X,MAAO,EACPsmY,UAAWhvZ,OAAO6yC,OAAO8vW,GACzBoC,OAAQ,GACRlhT,SAAU,IAEd,OAAOhzF,GAEX09O,SAAU,CACN0gK,aACI,OAAOjvZ,OAAO6yC,OAAOpyC,KAAKskZ,SAE9BmK,iBACI,OAAOzuZ,KAAKojG,SAASihT,aAAarkZ,KAAKwuZ,cAG/C3qE,cACI7jV,KAAK0lU,MAAM1lU,KAAK0yI,WAChB,MAAMlgH,EAASxyB,KAAK4jZ,SACpBpxX,EAAOq8T,IAAIszD,EAAOuM,IAAK1uZ,KAAK2uZ,UAC5Bn8X,EAAOq8T,IAAIszD,EAAOyM,MAAO5uZ,KAAK6uZ,aAC9Br8X,EAAOq8T,IAAIszD,EAAOgK,QAASnsZ,KAAK8uZ,cAChCt8X,EAAOq8T,IAAIszD,EAAO4M,OAAQ/uZ,KAAKgvZ,aAC/Bx8X,EAAOq8T,IAAIszD,EAAO8M,gBAAiBjvZ,KAAKkvZ,gBACxClvZ,KAAKojG,SAAWpjG,KAAKmvZ,QAEzBj0U,QAAS,CACLwqP,MAAMhzL,GACF,OAAO1uI,EAAUhE,UAAM,OAAQ,GAAQ,YAC/B8vF,EAAW4iD,KACXA,QAAkBA,KAEtBm5I,EAAc7rR,KAAK8/U,KACnBptM,EAAU5nE,YAAY9qE,KAAK8/U,SAGnCsvE,SAAS35R,GACA7lC,EAAY6lC,EAAMxvF,KACnBjmC,KAAKw6L,KAAKx6L,KAAKskZ,OAAQ7uR,EAAMxvF,GAAIwvF,IAGzCk5R,SAASpzY,GACL,MAAMk6G,EAAQl2H,OAAOwB,OAAO,GAAIf,KAAKojG,SAAU7nF,EAAO2R,MAClDltB,KAAKojG,SAAS8gT,eACdlkZ,KAAKojG,SAAS8gT,cAAc3oY,EAAO2R,MAAO3R,GACxC6oY,EAAQpkZ,KAAKojG,SAAS+gT,mBAAmB1uR,EAAOz1H,KAAKwuZ,YAC3DpK,GAASpkZ,KAAKovZ,SAAShL,IAE3B0K,aAAa7oX,GACT,MAAMm+W,EAAQpkZ,KAAKskZ,OAAOr+W,GACrB2pD,EAAYw0T,IAAWx0T,EAAYw0T,EAAMN,UAC1CM,EAAMN,UAEV9jZ,KAAK27W,QAAQ37W,KAAKskZ,OAAQr+W,IAE9B4oX,cACItvZ,OAAOsD,KAAK7C,KAAKskZ,QAAQxhZ,SAASmjC,IAC9BjmC,KAAK8uZ,aAAa7oX,OAG1BopX,kBAAkB3kV,GACd,MAAM45U,EAAStkZ,KAAKyuZ,eACfvyY,QAAQkoY,GAAUA,EAAM15U,WAAaA,IACrCn+B,MAAM,EAAGvsC,KAAKojG,SAAS6gT,WAC5B,OAAOjkZ,KAAKojG,SAAS4gT,YAAcM,EAAOvjR,UAAYujR,GAE1D4K,eAAe71S,GAENzpB,EAAYypB,EAAOq5B,YACpB1yI,KAAK0lU,MAAMrsN,EAAOq5B,WAEtB1yI,KAAKojG,SAAW7jG,OAAOwB,OAAO,GAAIf,KAAKojG,SAAUiW,IAErD21S,aAAY,GAAE/oX,EAAE,QAAErkC,EAAO,OAAEzB,IACnBH,KAAKskZ,OAAOr+W,IAGRrkC,EAAQwB,SAAWxB,EAAQwB,UAAYpD,KAAKskZ,OAAOr+W,GAAI7iC,SACvDxB,EAAQwB,UAEZpD,KAAKovZ,SAAS7vZ,OAAOwB,OAAO,GAAIf,KAAKskZ,OAAOr+W,GAAKrkC,KAE5CzB,GACLH,KAAK2uZ,SAASpvZ,OAAOwB,OAAO,GAAI,CAAEklC,MAAMrkC,KAGhD0tZ,WAAW5kV,GACP,MAAMmyQ,EAAU,CAAC,GAAGulE,eAA2B13U,GAC/C,OAAOmyQ,EAAQr2U,OAAOxG,KAAKojG,SAASmhT,wBAMhD,MAAMgL,GAAmBnB,GAGzB,IAAIoB,GAAmB,WACrB,IAAIryB,EAAMn9X,KACNokN,EAAK+4K,EAAIj9C,eACT/pT,EAAKgnW,EAAI1pS,MAAMt9D,IAAMiuL,EACzB,OAAOjuL,EACL,MACAgnW,EAAIsyB,GAAGtyB,EAAIoxB,WAAW,SAASn6U,GAC7B,OAAOj+C,EACL,MACA,CAAEva,IAAKw4D,GACP,CACEj+C,EACE,eACA,CACEkmT,MAAO8gD,EAAImyB,WAAWl7U,GACtBooQ,MAAO,CACLhD,WAAY2jD,EAAI/5R,SAASo2O,WACzB,sBAAuB2jD,EAAI/5R,SAAS0/S,qBAGxC3lB,EAAIsyB,GAAGtyB,EAAIkyB,kBAAkBj7U,IAAM,SAASgwU,GAC1C,OAAOjuX,EACL,QACAgnW,EAAIlyW,GAAG,CAAErP,IAAKwoY,EAAMn+W,IAAM,QAASm+W,GAAO,OAG9C,IAGJ,MAGJ,IAGAsL,GAA4B,GAChCF,GAAiBjJ,eAAgB,EAG/B,MAAMoJ,QAA0BzpX,EAE1B0pX,QAAqB1pX,EAErB2pX,QAA8B3pX,EAE9B4pX,IAAmC,EASnCC,GAAmCjnQ,EACvC,CAAEE,OAAQwmQ,GAAkBvmQ,gBAAiBymQ,IAC7CC,GACAJ,GACAK,GACAE,GACAD,IACA,OACA3pX,OACAA,OACAA,GAGE8pX,GAAiB,CAAC3pE,EAAK4pE,EAAgB,GAAIC,GAAiB,KAC9D,MAAM19X,EAAUy9X,EAAcrM,SAAWqM,EAAcrM,UAAY,IAAIv9D,EACvE,GAAI6pE,EAAgB,CAChB,MAAMC,EAAqB,IAAK9pE,EAAIl5L,OAAO4iQ,IAAhB,CAAsC,CAC7Dv7P,GAAI7+G,SAAS40B,cAAc,OAC3Bi1S,UAAWywC,IAETzL,EAAYyL,EAAczL,UAC3B50T,EAAY40T,IACbA,EAAU2L,GAMlB,MAAM/L,EAAQ,CAAC5iZ,EAASI,KACpB,MAAM6zH,EAAQl2H,OAAOwB,OAAO,GAAI,CAAEklC,GAAIs/W,IAASr4X,KAAMyrI,EAAK2J,SAAW1gK,EAAS,CAC1EJ,YAGJ,OADAgxB,EAAOwtT,MAAMmiE,EAAOuM,IAAKj5R,GAClBA,EAAMxvF,IAkBjB,SAAS+oX,EAAY/oX,GAAI,QAAEzkC,EAAO,QAAEI,GAAWzB,GAAS,GACpDqyB,EAAOwtT,MAAMmiE,EAAO4M,OAAQ,CACxB9oX,KACArkC,QAASrC,OAAOwB,OAAO,GAAIa,EAAS,CAAEJ,YACtCrB,WAoBR,OArCAikZ,EAAMt7X,MAAQ,IAAM0J,EAAOwtT,MAAMmiE,EAAOyM,OAIxCxK,EAAM8K,eAAkB71S,IACpB7mF,EAAOwtT,MAAMmiE,EAAO8M,gBAAiB51S,IAKzC+qS,EAAMgM,QAAWnqX,IACbzT,EAAOwtT,MAAMmiE,EAAOgK,QAASlmX,IASjCm+W,EAAM/qS,OAAS21S,EAIf5K,EAAMr4X,QAAU,CAACvqB,EAASI,IAAYwiZ,EAAM5iZ,EAASjC,OAAOwB,OAAO,GAAIa,EAAS,CAAEsrB,KAAMyrI,EAAK2xP,WAI7FlG,EAAMt1X,KAAO,CAACttB,EAASI,IAAYwiZ,EAAM5iZ,EAASjC,OAAOwB,OAAO,GAAIa,EAAS,CAAEsrB,KAAMyrI,EAAK0xP,QAI1FjG,EAAM99Y,MAAQ,CAAC9E,EAASI,IAAYwiZ,EAAM5iZ,EAASjC,OAAOwB,OAAO,GAAIa,EAAS,CAAEsrB,KAAMyrI,EAAK9mH,SAI3FuyW,EAAMx1X,QAAU,CAACptB,EAASI,IAAYwiZ,EAAM5iZ,EAASjC,OAAOwB,OAAO,GAAIa,EAAS,CAAEsrB,KAAMyrI,EAAK4xP,WACtFnG,GAGX,SAASiM,GAAqBC,EAAmBC,EAAQ,KACrD,MAAMC,EAAiB11Y,GAAQA,aAAey1Y,EAC9C,OAAIC,EAAcF,GACPN,GAAeO,EAAO,CAAE3M,SAAU0M,IAAqB,GAE3DN,GAAeO,EAAOD,GAAmB,GAEpD,MAAMG,GAA0B,CAACpqE,EAAKzkV,KAClC,MAAMwiZ,EAAQiM,GAAqBzuZ,EAASykV,GAC5CA,EAAIqqE,OAAStM,EACb/9D,EAAInmV,UAAUwwZ,OAAStM,GAG3B,O;;;;;;ACv/CA,IAAIuM,EAAcpxZ,OAAO4iL,OAAO,IAIhC,SAASyuO,EAAShrZ,GAChB,YAAasgC,IAANtgC,GAAyB,OAANA,EAG5B,SAAS+yY,EAAO/yY,GACd,YAAasgC,IAANtgC,GAAyB,OAANA,EAG5B,SAASirZ,EAAQjrZ,GACf,OAAa,IAANA,EAGT,SAASkrZ,EAASlrZ,GAChB,OAAa,IAANA,EAMT,SAASmrZ,EAAazsZ,GACpB,MACmB,kBAAVA,GACU,kBAAVA,GAEU,kBAAVA,GACU,mBAAVA,EASX,SAAS00E,EAAUl+D,GACjB,OAAe,OAARA,GAA+B,kBAARA,EAMhC,IAAIk2Y,EAAYzxZ,OAAOW,UAAUqO,SAUjC,SAAS0xF,EAAenlF,GACtB,MAA+B,oBAAxBk2Y,EAAUrwZ,KAAKma,GAGxB,SAASkxJ,EAAUpmK,GACjB,MAA6B,oBAAtBorZ,EAAUrwZ,KAAKiF,GAMxB,SAASqrZ,EAAmB/xX,GAC1B,IAAI/9B,EAAIg4H,WAAWxoH,OAAOuuB,IAC1B,OAAO/9B,GAAK,GAAK8N,KAAKq2C,MAAMnkD,KAAOA,GAAKwpP,SAASzrN,GAGnD,SAASgyX,EAAWhyX,GAClB,OACEy5W,EAAMz5W,IACc,oBAAbA,EAAIp6B,MACU,oBAAdo6B,EAAIu+B,MAOf,SAASlvD,EAAU2wB,GACjB,OAAc,MAAPA,EACH,GACAx/B,MAAM21E,QAAQn2C,IAAS+gE,EAAc/gE,IAAQA,EAAI3wB,WAAayiZ,EAC5D12Y,KAAKC,UAAU2kB,EAAK,KAAM,GAC1BvuB,OAAOuuB,GAOf,SAAS+hJ,EAAU/hJ,GACjB,IAAI/9B,EAAIg4H,WAAWj6F,GACnB,OAAO29C,MAAM17E,GAAK+9B,EAAM/9B,EAO1B,SAASgwZ,EACPx2Y,EACAy2Y,GAIA,IAFA,IAAIr1Y,EAAMxc,OAAOY,OAAO,MACpBsoK,EAAO9tJ,EAAIvD,MAAM,KACZlW,EAAI,EAAGA,EAAIunK,EAAKpnK,OAAQH,IAC/B6a,EAAI0sJ,EAAKvnK,KAAM,EAEjB,OAAOkwZ,EACH,SAAUlyX,GAAO,OAAOnjB,EAAImjB,EAAI1K,gBAChC,SAAU0K,GAAO,OAAOnjB,EAAImjB,IAMfiyX,EAAQ,kBAAkB,GAA7C,IAKIE,EAAsBF,EAAQ,8BAKlC,SAAShtR,EAAQroH,EAAKsN,GACpB,GAAItN,EAAIza,OAAQ,CACd,IAAIixC,EAAQx2B,EAAIZ,QAAQkO,GACxB,GAAIkpB,GAAS,EACX,OAAOx2B,EAAI00F,OAAOl+D,EAAO,IAQ/B,IAAIxyC,EAAiBP,OAAOW,UAAUJ,eACtC,SAAS4/J,EAAQ5kJ,EAAKc,GACpB,OAAO9b,EAAea,KAAKma,EAAKc,GAMlC,SAAS01Y,EAAQt2U,GACf,IAAIvyD,EAAQlpB,OAAOY,OAAO,MAC1B,OAAO,SAAoBwa,GACzB,IAAI0hX,EAAM5zW,EAAM9N,GAChB,OAAO0hX,IAAQ5zW,EAAM9N,GAAOqgE,EAAGrgE,KAOnC,IAAI8sW,EAAa,SACbC,EAAW4pC,GAAO,SAAU32Y,GAC9B,OAAOA,EAAIzJ,QAAQu2W,GAAY,SAAUriX,EAAG6uE,GAAK,OAAOA,EAAIA,EAAEjlB,cAAgB,SAM5E6uL,EAAayzK,GAAO,SAAU32Y,GAChC,OAAOA,EAAIm7B,OAAO,GAAGkZ,cAAgBr0C,EAAI4xB,MAAM,MAM7CglX,EAAc,aACdC,EAAYF,GAAO,SAAU32Y,GAC/B,OAAOA,EAAIzJ,QAAQqgZ,EAAa,OAAO/8X,iBAYzC,SAASi9X,EAAcz2U,EAAIq4B,GACzB,SAASq+S,EAAS9qZ,GAChB,IAAIonJ,EAAI5sJ,UAAUC,OAClB,OAAO2sJ,EACHA,EAAI,EACFhzE,EAAGj3E,MAAMsvG,EAAKjyG,WACd45E,EAAGr6E,KAAK0yG,EAAKzsG,GACfo0E,EAAGr6E,KAAK0yG,GAId,OADAq+S,EAAQzhI,QAAUj1M,EAAG35E,OACdqwZ,EAGT,SAASC,EAAY32U,EAAIq4B,GACvB,OAAOr4B,EAAG33B,KAAKgwD,GAGjB,IAAIhwD,EAAOijG,SAASpmJ,UAAUmjD,KAC1BsuW,EACAF,EAKJ,SAASl9P,EAASkU,EAAMthF,GACtBA,EAAQA,GAAS,EACjB,IAAIjmF,EAAIunK,EAAKpnK,OAAS8lF,EAClB0pP,EAAM,IAAInxU,MAAMwB,GACpB,MAAOA,IACL2vU,EAAI3vU,GAAKunK,EAAKvnK,EAAIimF,GAEpB,OAAO0pP,EAMT,SAAS1jL,EAAQrhD,EAAI8lT,GACnB,IAAK,IAAIh2Y,KAAOg2Y,EACd9lT,EAAGlwF,GAAOg2Y,EAAMh2Y,GAElB,OAAOkwF,EAMT,SAAS1rE,EAAUtkB,GAEjB,IADA,IAAI2/G,EAAM,GACDv6H,EAAI,EAAGA,EAAI4a,EAAIza,OAAQH,IAC1B4a,EAAI5a,IACNisJ,EAAO1xB,EAAK3/G,EAAI5a,IAGpB,OAAOu6H,EAUT,SAAS7gD,EAAMh0E,EAAGhH,EAAGq0E,IAKrB,IAAI49U,EAAK,SAAUjrZ,EAAGhH,EAAGq0E,GAAK,OAAO,GAOjCsjL,EAAW,SAAUnyP,GAAK,OAAOA,GAMrC,SAAS+vX,EAAYvuX,EAAGhH,GACtB,GAAIgH,IAAMhH,EAAK,OAAO,EACtB,IAAIw1X,EAAYp8S,EAASpyE,GACrByuX,EAAYr8S,EAASp5E,GACzB,IAAIw1X,IAAaC,EAwBV,OAAKD,IAAcC,GACjB1kX,OAAO/J,KAAO+J,OAAO/Q,GAxB5B,IACE,IAAI01X,EAAW51X,MAAM21E,QAAQzuE,GACzB2uX,EAAW71X,MAAM21E,QAAQz1E,GAC7B,GAAI01X,GAAYC,EACd,OAAO3uX,EAAEvF,SAAWzB,EAAEyB,QAAUuF,EAAEm3B,OAAM,SAAUr5B,EAAGxD,GACnD,OAAOi0X,EAAWzwX,EAAG9E,EAAEsB,OAEpB,GAAI0F,aAAa4nB,MAAQ5uB,aAAa4uB,KAC3C,OAAO5nB,EAAEmhC,YAAcnoC,EAAEmoC,UACpB,GAAKutV,GAAaC,EAQvB,OAAO,EAPP,IAAIC,EAAQj2X,OAAOsD,KAAK+D,GACpB6uX,EAAQl2X,OAAOsD,KAAKjD,GACxB,OAAO41X,EAAMn0X,SAAWo0X,EAAMp0X,QAAUm0X,EAAMz3V,OAAM,SAAUniB,GAC5D,OAAOu5W,EAAWvuX,EAAEgV,GAAMhc,EAAEgc,OAMhC,MAAOlX,GAEP,OAAO,GAcb,SAASotZ,EAAch2Y,EAAKojB,GAC1B,IAAK,IAAIh+B,EAAI,EAAGA,EAAI4a,EAAIza,OAAQH,IAC9B,GAAIi0X,EAAWr5W,EAAI5a,GAAIg+B,GAAQ,OAAOh+B,EAExC,OAAQ,EAMV,SAAS0qQ,EAAM5wL,GACb,IAAIqgF,GAAS,EACb,OAAO,WACAA,IACHA,GAAS,EACTrgF,EAAGj3E,MAAM/D,KAAMoB,aAKrB,IAAI2wZ,EAAW,uBAEXC,EAAc,CAChB,YACA,YACA,UAGEC,EAAkB,CACpB,eACA,UACA,cACA,UACA,eACA,UACA,gBACA,YACA,YACA,cACA,gBACA,kBAOEjsW,EAAS,CAKXi0U,sBAAuB16X,OAAOY,OAAO,MAKrCo6W,QAAQ,EAKR23C,eAAe,EAKfrqB,UAAU,EAKV79T,aAAa,EAKbmoV,aAAc,KAKdC,YAAa,KAKbC,gBAAiB,GAMjBvtE,SAAUvlV,OAAOY,OAAO,MAMxBmyZ,cAAeT,EAMfU,eAAgBV,EAMhBW,iBAAkBX,EAKlBY,gBAAiB73U,EAKjB83U,qBAAsBn7J,EAMtBo7J,YAAad,EAMbnxR,OAAO,EAKPkyR,gBAAiBX,GAUfY,EAAgB,8JAKpB,SAASC,EAAYn4Y,GACnB,IAAIs5D,GAAKt5D,EAAM,IAAI7K,WAAW,GAC9B,OAAa,KAANmkE,GAAoB,KAANA,EAMvB,SAAS07N,EAAK70R,EAAKc,EAAKsjB,EAAKmP,GAC3B9uC,OAAO6uC,eAAetzB,EAAKc,EAAK,CAC9BtX,MAAO46B,EACPmP,aAAcA,EACd2yH,UAAU,EACV1yH,cAAc,IAOlB,IAAIykX,EAAS,IAAIx2Y,OAAQ,KAAQs2Y,EAAoB,OAAI,WACzD,SAASz2B,EAAWhvS,GAClB,IAAI2lU,EAAOzjZ,KAAK89E,GAAhB,CAGA,IAAI+4L,EAAW/4L,EAAKh2E,MAAM,KAC1B,OAAO,SAAU0D,GACf,IAAK,IAAI5Z,EAAI,EAAGA,EAAIilR,EAAS9kR,OAAQH,IAAK,CACxC,IAAK4Z,EAAO,OACZA,EAAMA,EAAIqrQ,EAASjlR,IAErB,OAAO4Z,IAOX,IAmCIk4Y,EAnCAC,EAAW,aAAe,GAG1BptH,EAA8B,qBAAX1hR,OACnB+uY,EAAkC,qBAAlBC,iBAAmCA,cAAcC,SACjEC,EAAeH,GAAUC,cAAcC,SAAS5+X,cAChD+wI,GAAKsgI,GAAa1hR,OAAOy4B,UAAUuD,UAAU3rB,cAC7C+rB,GAAOglH,IAAM,eAAej2J,KAAKi2J,IACjC+tP,GAAQ/tP,IAAMA,GAAGrqJ,QAAQ,YAAc,EACvCslC,GAAS+kH,IAAMA,GAAGrqJ,QAAQ,SAAW,EAErCq4Y,IADahuP,IAAMA,GAAGrqJ,QAAQ,WACrBqqJ,IAAM,uBAAuBj2J,KAAKi2J,KAA0B,QAAjB8tP,GAGpDG,IAFWjuP,IAAM,cAAcj2J,KAAKi2J,IACtBA,IAAM,YAAYj2J,KAAKi2J,IAC9BA,IAAMA,GAAG91H,MAAM,mBAGtBgkX,GAAc,GAAKlwE,MAEnBmwE,IAAkB,EACtB,GAAI7tH,EACF,IACE,IAAI7wI,GAAO,GACXz1J,OAAO6uC,eAAe4mH,GAAM,UAAW,CACrCtzJ,IAAK,WAEHgyZ,IAAkB,KAGtBvvY,OAAOuB,iBAAiB,eAAgB,KAAMsvI,IAC9C,MAAOtwJ,KAMX,IAAIivZ,GAAoB,WAWtB,YAVkBztX,IAAd8sX,IAOAA,GALGntH,IAAcqtH,GAA4B,qBAAX,EAAA/tZ,IAGtB,EAAAA,EAAO,YAAgD,WAAlC,EAAAA,EAAO,WAAWqxB,IAAIo9X,UAKpDZ,GAILnrB,GAAWhiG,GAAa1hR,OAAO0vY,6BAGnC,SAAS7mJ,GAAU9N,GACjB,MAAuB,oBAATA,GAAuB,cAAc5vP,KAAK4vP,EAAK3wP,YAG/D,IAIIulZ,GAJAxV,GACgB,qBAAX54Y,QAA0BsnQ,GAAStnQ,SACvB,qBAAZ0iK,SAA2B4kG,GAAS5kG,QAAQzI,SAMnDm0P,GAFiB,qBAAR72X,KAAuB+vO,GAAS/vO,KAElCA,IAGc,WACnB,SAASA,IACPj9B,KAAK2oB,IAAMppB,OAAOY,OAAO,MAY3B,OAVA88B,EAAI/8B,UAAU2oB,IAAM,SAAcjN,GAChC,OAAyB,IAAlB5b,KAAK2oB,IAAI/M,IAElBqhB,EAAI/8B,UAAUi9B,IAAM,SAAcvhB,GAChC5b,KAAK2oB,IAAI/M,IAAO,GAElBqhB,EAAI/8B,UAAU4oB,MAAQ,WACpB9oB,KAAK2oB,IAAMppB,OAAOY,OAAO,OAGpB88B,EAdW,GAoBtB,IAAIi4H,GAAOt6E,EA8FP5mD,GAAM,EAMN+/X,GAAM,WACR/zZ,KAAKimC,GAAKjS,KACVh0B,KAAKg0Z,KAAO,IAGdD,GAAI7zZ,UAAU+zZ,OAAS,SAAiBp9X,GACtC72B,KAAKg0Z,KAAKhuZ,KAAK6wB,IAGjBk9X,GAAI7zZ,UAAUg0Z,UAAY,SAAoBr9X,GAC5CstG,EAAOnkI,KAAKg0Z,KAAMn9X,IAGpBk9X,GAAI7zZ,UAAUi0Z,OAAS,WACjBJ,GAAIpuY,QACNouY,GAAIpuY,OAAOyuY,OAAOp0Z,OAItB+zZ,GAAI7zZ,UAAUutK,OAAS,WAErB,IAAIumP,EAAOh0Z,KAAKg0Z,KAAKznX,QAOrB,IAAK,IAAIrrC,EAAI,EAAG8sJ,EAAIgmQ,EAAK3yZ,OAAQH,EAAI8sJ,EAAG9sJ,IACtC8yZ,EAAK9yZ,GAAGm4G,UAOZ06S,GAAIpuY,OAAS,KACb,IAAI0uY,GAAc,GAElB,SAASC,GAAY3uY,GACnB0uY,GAAYruZ,KAAK2f,GACjBouY,GAAIpuY,OAASA,EAGf,SAAS4uY,KACPF,GAAYtuZ,MACZguZ,GAAIpuY,OAAS0uY,GAAYA,GAAYhzZ,OAAS,GAKhD,IAAIovV,GAAQ,SACVz0L,EACA5rJ,EACAmkG,EACAthB,EACAw7G,EACAp4F,EACAulP,EACA44D,GAEAx0Z,KAAKg8J,IAAMA,EACXh8J,KAAKoQ,KAAOA,EACZpQ,KAAKu0G,SAAWA,EAChBv0G,KAAKizF,KAAOA,EACZjzF,KAAKyuM,IAAMA,EACXzuM,KAAKyyF,QAAKvsD,EACVlmC,KAAKq2G,QAAUA,EACfr2G,KAAKy0Z,eAAYvuX,EACjBlmC,KAAKgoY,eAAY9hW,EACjBlmC,KAAK00Z,eAAYxuX,EACjBlmC,KAAK4b,IAAMxL,GAAQA,EAAKwL,IACxB5b,KAAK47V,iBAAmBA,EACxB57V,KAAKg7W,uBAAoB90U,EACzBlmC,KAAK6+C,YAAS3Y,EACdlmC,KAAKo1K,KAAM,EACXp1K,KAAKk4Y,UAAW,EAChBl4Y,KAAK20Z,cAAe,EACpB30Z,KAAK0wV,WAAY,EACjB1wV,KAAK40Z,UAAW,EAChB50Z,KAAK60Z,QAAS,EACd70Z,KAAKw0Z,aAAeA,EACpBx0Z,KAAK80Z,eAAY5uX,EACjBlmC,KAAK+0Z,oBAAqB,GAGxBx1B,GAAqB,CAAEljB,MAAO,CAAE/tU,cAAc,IAIlDixV,GAAmBljB,MAAM36W,IAAM,WAC7B,OAAO1B,KAAKg7W,mBAGdz7W,OAAOywJ,iBAAkBygM,GAAMvwV,UAAWq/X,IAE1C,IAAIy1B,GAAmB,SAAU/hU,QACjB,IAATA,IAAkBA,EAAO,IAE9B,IAAI06E,EAAO,IAAI8iL,GAGf,OAFA9iL,EAAK16E,KAAOA,EACZ06E,EAAK+iL,WAAY,EACV/iL,GAGT,SAASsnP,GAAiB/1X,GACxB,OAAO,IAAIuxT,QAAMvqT,OAAWA,OAAWA,EAAWv1B,OAAOuuB,IAO3D,SAASg2X,GAAY5pD,GACnB,IAAI3uE,EAAS,IAAI8zD,GACf6a,EAAMtvM,IACNsvM,EAAMl7V,KAINk7V,EAAM/2P,UAAY+2P,EAAM/2P,SAAShoE,QACjC++T,EAAMr4Q,KACNq4Q,EAAM78J,IACN68J,EAAMj1P,QACNi1P,EAAM1P,iBACN0P,EAAMkpD,cAWR,OATA73H,EAAOlqM,GAAK64Q,EAAM74Q,GAClBkqM,EAAOu7G,SAAW5sC,EAAM4sC,SACxBv7G,EAAO/gR,IAAM0vV,EAAM1vV,IACnB+gR,EAAO+zD,UAAY4a,EAAM5a,UACzB/zD,EAAO83H,UAAYnpD,EAAMmpD,UACzB93H,EAAOqrG,UAAY18B,EAAM08B,UACzBrrG,EAAO+3H,UAAYppD,EAAMopD,UACzB/3H,EAAOm4H,UAAYxpD,EAAMwpD,UACzBn4H,EAAOi4H,UAAW,EACXj4H,EAQT,IAAIvzC,GAAa1pP,MAAMQ,UACnBi1Z,GAAe51Z,OAAOY,OAAOipP,IAE7BgsK,GAAiB,CACnB,OACA,MACA,QACA,UACA,SACA,OACA,WAMFA,GAAetyZ,SAAQ,SAAUhB,GAE/B,IAAI2lK,EAAW2hF,GAAWtnP,GAC1B6tS,EAAIwlH,GAAcrzZ,GAAQ,WACxB,IAAIswF,EAAO,GAAIyO,EAAMz/F,UAAUC,OAC/B,MAAQw/F,IAAQzO,EAAMyO,GAAQz/F,UAAWy/F,GAEzC,IAEI6qQ,EAFA9mW,EAAS6iK,EAAS1jK,MAAM/D,KAAMoyF,GAC9BkwL,EAAKtiR,KAAKq1Z,OAEd,OAAQvzZ,GACN,IAAK,OACL,IAAK,UACH4pW,EAAWt5Q,EACX,MACF,IAAK,SACHs5Q,EAAWt5Q,EAAK7lD,MAAM,GACtB,MAKJ,OAHIm/T,GAAYppF,EAAGgzI,aAAa5pD,GAEhCppF,EAAGowG,IAAIjlN,SACA7oK,QAMX,IAAI2wZ,GAAYh2Z,OAAOu2J,oBAAoBq/P,IAMvCK,IAAgB,EAEpB,SAASC,GAAiBnxZ,GACxBkxZ,GAAgBlxZ,EASlB,IAAIoxZ,GAAW,SAAmBpxZ,GAChCtE,KAAKsE,MAAQA,EACbtE,KAAK0yX,IAAM,IAAIqhC,GACf/zZ,KAAK21Z,QAAU,EACfhmH,EAAIrrS,EAAO,SAAUtE,MACjBN,MAAM21E,QAAQ/wE,IACZ2uZ,EACF2C,GAAatxZ,EAAO6wZ,IAEpBU,GAAYvxZ,EAAO6wZ,GAAcI,IAEnCv1Z,KAAKs1Z,aAAahxZ,IAElBtE,KAAK81Z,KAAKxxZ,IA+Bd,SAASsxZ,GAAcjwY,EAAQ0kD,GAE7B1kD,EAAOlmB,UAAY4qE,EASrB,SAASwrV,GAAalwY,EAAQ0kD,EAAKxnE,GACjC,IAAK,IAAI3B,EAAI,EAAG8sJ,EAAInrJ,EAAKxB,OAAQH,EAAI8sJ,EAAG9sJ,IAAK,CAC3C,IAAI0a,EAAM/Y,EAAK3B,GACfyuS,EAAIhqR,EAAQ/J,EAAKyuD,EAAIzuD,KASzB,SAAS6yJ,GAASnqK,EAAOyxZ,GAIvB,IAAIzzI,EAHJ,GAAKtpM,EAAS10E,MAAUA,aAAiBmsV,IAkBzC,OAdI/wL,EAAOp7J,EAAO,WAAaA,EAAM+wZ,kBAAkBK,GACrDpzI,EAAKh+Q,EAAM+wZ,OAEXG,KACC7B,OACAj0Z,MAAM21E,QAAQ/wE,IAAU27F,EAAc37F,KACvC/E,OAAOy3J,aAAa1yJ,KACnBA,EAAMsgX,SAEPtiG,EAAK,IAAIozI,GAASpxZ,IAEhByxZ,GAAczzI,GAChBA,EAAGqzI,UAEErzI,EAMT,SAAS0zI,GACPl7Y,EACAc,EACAsjB,EACA+2X,EACAC,GAEA,IAAIxjC,EAAM,IAAIqhC,GAEV/8T,EAAWz3F,OAAOugK,yBAAyBhlJ,EAAKc,GACpD,IAAIo7E,IAAsC,IAA1BA,EAAS1oD,aAAzB,CAKA,IAAI8yH,EAASpqE,GAAYA,EAASt1F,IAC9B2/J,EAASrqE,GAAYA,EAASruE,IAC5By4I,IAAUC,GAAgC,IAArBjgK,UAAUC,SACnC69B,EAAMpkB,EAAIc,IAGZ,IAAIu6Y,GAAWD,GAAWznP,GAAQvvI,GAClC3/B,OAAO6uC,eAAetzB,EAAKc,EAAK,CAC9ByyB,YAAY,EACZC,cAAc,EACd5sC,IAAK,WACH,IAAI4C,EAAQ88J,EAASA,EAAOzgK,KAAKma,GAAOokB,EAUxC,OATI60X,GAAIpuY,SACN+sW,EAAIyhC,SACAgC,IACFA,EAAQzjC,IAAIyhC,SACRz0Z,MAAM21E,QAAQ/wE,IAChB8xZ,GAAY9xZ,KAIXA,GAETqkB,IAAK,SAAyB4yV,GAC5B,IAAIj3W,EAAQ88J,EAASA,EAAOzgK,KAAKma,GAAOokB,EAEpCq8U,IAAWj3W,GAAUi3W,IAAWA,GAAUj3W,IAAUA,GAQpD88J,IAAWC,IACXA,EACFA,EAAO1gK,KAAKma,EAAKygW,GAEjBr8U,EAAMq8U,EAER46C,GAAWD,GAAWznP,GAAQ8sM,GAC9BmX,EAAIjlN,cAUV,SAAS9kJ,GAAKhD,EAAQ/J,EAAKsjB,GAMzB,GAAIx/B,MAAM21E,QAAQ1vD,IAAWsrY,EAAkBr1Y,GAG7C,OAFA+J,EAAOtkB,OAAS4N,KAAK4wD,IAAIl6C,EAAOtkB,OAAQua,GACxC+J,EAAO6qF,OAAO50F,EAAK,EAAGsjB,GACfA,EAET,GAAItjB,KAAO+J,KAAY/J,KAAOrc,OAAOW,WAEnC,OADAylB,EAAO/J,GAAOsjB,EACPA,EAET,IAAIojP,EAAK,EAAS+yI,OAClB,OAAI1vY,EAAOi/V,QAAWtiG,GAAMA,EAAGqzI,QAKtBz2X,EAEJojP,GAIL0zI,GAAkB1zI,EAAGh+Q,MAAOsX,EAAKsjB,GACjCojP,EAAGowG,IAAIjlN,SACAvuI,IALLvZ,EAAO/J,GAAOsjB,EACPA,GAUX,SAASwvD,GAAK/oE,EAAQ/J,GAMpB,GAAIlc,MAAM21E,QAAQ1vD,IAAWsrY,EAAkBr1Y,GAC7C+J,EAAO6qF,OAAO50F,EAAK,OADrB,CAIA,IAAI0mQ,EAAK,EAAS+yI,OACd1vY,EAAOi/V,QAAWtiG,GAAMA,EAAGqzI,SAO1Bj2P,EAAO/5I,EAAQ/J,YAGb+J,EAAO/J,GACT0mQ,GAGLA,EAAGowG,IAAIjlN,WAOT,SAAS2oP,GAAa9xZ,GACpB,IAAK,IAAII,OAAI,EAAUxD,EAAI,EAAG8sJ,EAAI1pJ,EAAMjD,OAAQH,EAAI8sJ,EAAG9sJ,IACrDwD,EAAIJ,EAAMpD,GACVwD,GAAKA,EAAE2wZ,QAAU3wZ,EAAE2wZ,OAAO3iC,IAAIyhC,SAC1Bz0Z,MAAM21E,QAAQ3wE,IAChB0xZ,GAAY1xZ,GAhNlBgxZ,GAASx1Z,UAAU41Z,KAAO,SAAeh7Y,GAEvC,IADA,IAAIjY,EAAOtD,OAAOsD,KAAKiY,GACd5Z,EAAI,EAAGA,EAAI2B,EAAKxB,OAAQH,IAC/B80Z,GAAkBl7Y,EAAKjY,EAAK3B,KAOhCw0Z,GAASx1Z,UAAUo1Z,aAAe,SAAuBtmT,GACvD,IAAK,IAAI9tG,EAAI,EAAG8sJ,EAAIh/C,EAAM3tG,OAAQH,EAAI8sJ,EAAG9sJ,IACvCutK,GAAQz/D,EAAM9tG,KAgNlB,IAAI84X,GAASh0U,EAAOi0U,sBAoBpB,SAAS53H,GAAWv2J,EAAI9K,GACtB,IAAKA,EAAQ,OAAO8K,EAOpB,IANA,IAAIlwF,EAAKy6Y,EAAOC,EAEZzzZ,EAAOy7Y,GACPl2O,QAAQzI,QAAQ3+D,GAChBzhG,OAAOsD,KAAKm+F,GAEP9/F,EAAI,EAAGA,EAAI2B,EAAKxB,OAAQH,IAC/B0a,EAAM/Y,EAAK3B,GAEC,WAAR0a,IACJy6Y,EAAQvqT,EAAGlwF,GACX06Y,EAAUt1T,EAAKplF,GACV8jJ,EAAO5zD,EAAIlwF,GAGdy6Y,IAAUC,GACVr2T,EAAco2T,IACdp2T,EAAcq2T,IAEdj0J,GAAUg0J,EAAOC,GANjB3tY,GAAImjF,EAAIlwF,EAAK06Y,IASjB,OAAOxqT,EAMT,SAASyqT,GACPr8B,EACAC,EACApf,GAEA,OAAKA,EAoBI,WAEL,IAAIy7C,EAAmC,oBAAbr8B,EACtBA,EAASx5X,KAAKo6W,EAAIA,GAClBof,EACAjnE,EAAmC,oBAAdgnE,EACrBA,EAAUv5X,KAAKo6W,EAAIA,GACnBmf,EACJ,OAAIs8B,EACKn0J,GAAUm0J,EAActjG,GAExBA,GA7BNinE,EAGAD,EAQE,WACL,OAAO73H,GACe,oBAAb83H,EAA0BA,EAASx5X,KAAKX,KAAMA,MAAQm6X,EACxC,oBAAdD,EAA2BA,EAAUv5X,KAAKX,KAAMA,MAAQk6X,IAV1DC,EAHAD,EA2Db,SAASu8B,GACPv8B,EACAC,GAEA,IAAI1+P,EAAM0+P,EACND,EACEA,EAAU1zX,OAAO2zX,GACjBz6X,MAAM21E,QAAQ8kT,GACZA,EACA,CAACA,GACLD,EACJ,OAAOz+P,EACHi7R,GAAYj7R,GACZA,EAGN,SAASi7R,GAAa97S,GAEpB,IADA,IAAI6gB,EAAM,GACDv6H,EAAI,EAAGA,EAAI05G,EAAMv5G,OAAQH,KACD,IAA3Bu6H,EAAIvgH,QAAQ0/F,EAAM15G,KACpBu6H,EAAIz1H,KAAK40G,EAAM15G,IAGnB,OAAOu6H,EAcT,SAASk7R,GACPz8B,EACAC,EACApf,EACAn/V,GAEA,IAAI6/G,EAAMl8H,OAAOY,OAAO+5X,GAAa,MACrC,OAAIC,EAEKhtO,EAAO1xB,EAAK0+P,GAEZ1+P,EAzEXu+P,GAAO5pX,KAAO,SACZ8pX,EACAC,EACApf,GAEA,OAAKA,EAcEw7C,GAAcr8B,EAAWC,EAAUpf,GAbpCof,GAAgC,oBAAbA,EAQdD,EAEFq8B,GAAcr8B,EAAWC,IAmCpC83B,EAAgBnvZ,SAAQ,SAAUk4G,GAChCg/Q,GAAOh/Q,GAAQy7S,MAyBjBzE,EAAYlvZ,SAAQ,SAAUoqB,GAC5B8sW,GAAO9sW,EAAO,KAAOypY,MASvB38B,GAAOz2C,MAAQ,SACb22C,EACAC,EACApf,EACAn/V,GAMA,GAHIs+W,IAAcu5B,KAAev5B,OAAYh0V,GACzCi0V,IAAas5B,KAAet5B,OAAWj0V,IAEtCi0V,EAAY,OAAO56X,OAAOY,OAAO+5X,GAAa,MAInD,IAAKA,EAAa,OAAOC,EACzB,IAAItpD,EAAM,GAEV,IAAK,IAAI+lF,KADTzpQ,EAAO0jL,EAAKqpD,GACMC,EAAU,CAC1B,IAAIt7U,EAASgyR,EAAI+lF,GACbv6C,EAAQ8d,EAASy8B,GACjB/3W,IAAWn/C,MAAM21E,QAAQx2B,KAC3BA,EAAS,CAACA,IAEZgyR,EAAI+lF,GAAS/3W,EACTA,EAAOr4C,OAAO61W,GACd38W,MAAM21E,QAAQgnS,GAASA,EAAQ,CAACA,GAEtC,OAAOxrC,GAMTmpD,GAAOvkQ,MACPukQ,GAAO9+S,QACP8+S,GAAOvqC,OACPuqC,GAAOlsI,SAAW,SAChBosI,EACAC,EACApf,EACAn/V,GAKA,IAAKs+W,EAAa,OAAOC,EACzB,IAAItpD,EAAMtxU,OAAOY,OAAO,MAGxB,OAFAgtJ,EAAO0jL,EAAKqpD,GACRC,GAAYhtO,EAAO0jL,EAAKspD,GACrBtpD,GAETmpD,GAAO3qC,QAAUknE,GAKjB,IAAIM,GAAe,SAAU38B,EAAWC,GACtC,YAAoBj0V,IAAbi0V,EACHD,EACAC,GA+BN,SAAS28B,GAAgBl1Z,EAASm5W,GAChC,IAAItlP,EAAQ7zH,EAAQ6zH,MACpB,GAAKA,EAAL,CACA,IACIv0H,EAAGg+B,EAAK7rB,EADRooH,EAAM,GAEV,GAAI/7H,MAAM21E,QAAQogD,GAAQ,CACxBv0H,EAAIu0H,EAAMp0H,OACV,MAAOH,IACLg+B,EAAMu2F,EAAMv0H,GACO,kBAARg+B,IACT7rB,EAAOq0W,EAASxoV,GAChBu8F,EAAIpoH,GAAQ,CAAE6Z,KAAM,YAKnB,GAAI+yE,EAAcw1B,GACvB,IAAK,IAAI75G,KAAO65G,EACdv2F,EAAMu2F,EAAM75G,GACZvI,EAAOq0W,EAAS9rW,GAChB6/G,EAAIpoH,GAAQ4sF,EAAc/gE,GACtBA,EACA,CAAEhS,KAAMgS,QAEL,EAOXt9B,EAAQ6zH,MAAQgG,GAMlB,SAASs7R,GAAiBn1Z,EAASm5W,GACjC,IAAItrB,EAAS7tV,EAAQ6tV,OACrB,GAAKA,EAAL,CACA,IAAIl8J,EAAa3xL,EAAQ6tV,OAAS,GAClC,GAAI/vV,MAAM21E,QAAQo6Q,GAChB,IAAK,IAAIvuV,EAAI,EAAGA,EAAIuuV,EAAOpuV,OAAQH,IACjCqyL,EAAWk8J,EAAOvuV,IAAM,CAAE8/F,KAAMyuP,EAAOvuV,SAEpC,GAAI++F,EAAcwvP,GACvB,IAAK,IAAI7zU,KAAO6zU,EAAQ,CACtB,IAAIvwT,EAAMuwT,EAAO7zU,GACjB23K,EAAW33K,GAAOqkF,EAAc/gE,GAC5BiuH,EAAO,CAAEnsD,KAAMplF,GAAOsjB,GACtB,CAAE8hE,KAAM9hE,QAEL,GAYb,SAAS83X,GAAqBp1Z,GAC5B,IAAIq1Z,EAAOr1Z,EAAQmgV,WACnB,GAAIk1E,EACF,IAAK,IAAIr7Y,KAAOq7Y,EAAM,CACpB,IAAIC,EAASD,EAAKr7Y,GACI,oBAAXs7Y,IACTD,EAAKr7Y,GAAO,CAAEynC,KAAM6zW,EAAQ79S,OAAQ69S,KAoB5C,SAASC,GACPt4W,EACAw9T,EACAtB,GAkBA,GAZqB,oBAAVsB,IACTA,EAAQA,EAAMz6W,SAGhBk1Z,GAAez6C,EAAOtB,GACtBg8C,GAAgB16C,EAAOtB,GACvBi8C,GAAoB36C,IAMfA,EAAMr1P,QACLq1P,EAAM4oC,UACRpmW,EAASs4W,GAAat4W,EAAQw9T,EAAM4oC,QAASlqC,IAE3CsB,EAAMxgC,QACR,IAAK,IAAI36U,EAAI,EAAG8sJ,EAAIquN,EAAMxgC,OAAOx6U,OAAQH,EAAI8sJ,EAAG9sJ,IAC9C29C,EAASs4W,GAAat4W,EAAQw9T,EAAMxgC,OAAO36U,GAAI65W,GAKrD,IACIn/V,EADAha,EAAU,GAEd,IAAKga,KAAOijC,EACVu4W,EAAWx7Y,GAEb,IAAKA,KAAOygW,EACL38M,EAAO7gH,EAAQjjC,IAClBw7Y,EAAWx7Y,GAGf,SAASw7Y,EAAYx7Y,GACnB,IAAIy7Y,EAAQr9B,GAAOp+W,IAAQi7Y,GAC3Bj1Z,EAAQga,GAAOy7Y,EAAMx4W,EAAOjjC,GAAMygW,EAAMzgW,GAAMm/V,EAAIn/V,GAEpD,OAAOha,EAQT,SAAS01Z,GACP11Z,EACAsrB,EACA+Y,EACAsxX,GAGA,GAAkB,kBAAPtxX,EAAX,CAGA,IAAIm4O,EAASx8Q,EAAQsrB,GAErB,GAAIwyI,EAAO0+G,EAAQn4O,GAAO,OAAOm4O,EAAOn4O,GACxC,IAAIuxX,EAAc9vC,EAASzhV,GAC3B,GAAIy5H,EAAO0+G,EAAQo5I,GAAgB,OAAOp5I,EAAOo5I,GACjD,IAAIC,EAAe55K,EAAW25K,GAC9B,GAAI93P,EAAO0+G,EAAQq5I,GAAiB,OAAOr5I,EAAOq5I,GAElD,IAAIh8R,EAAM2iJ,EAAOn4O,IAAOm4O,EAAOo5I,IAAgBp5I,EAAOq5I,GAOtD,OAAOh8R,GAOT,SAASi8R,GACP97Y,EACA+7Y,EACAn4C,EACAzE,GAEA,IAAIt6R,EAAOk3U,EAAY/7Y,GACnBg8Y,GAAUl4P,EAAO8/M,EAAW5jW,GAC5BtX,EAAQk7W,EAAU5jW,GAElBi8Y,EAAeC,GAAaxgU,QAAS7W,EAAKvzD,MAC9C,GAAI2qY,GAAgB,EAClB,GAAID,IAAWl4P,EAAOj/E,EAAM,WAC1Bn8E,GAAQ,OACH,GAAc,KAAVA,GAAgBA,IAAUktZ,EAAU51Y,GAAM,CAGnD,IAAIm8Y,EAAcD,GAAannZ,OAAQ8vE,EAAKvzD,OACxC6qY,EAAc,GAAKF,EAAeE,KACpCzzZ,GAAQ,GAKd,QAAc4hC,IAAV5hC,EAAqB,CACvBA,EAAQ0zZ,GAAoBj9C,EAAIt6R,EAAM7kE,GAGtC,IAAIq8Y,EAAoBzC,GACxBC,IAAgB,GAChBhnP,GAAQnqK,GACRmxZ,GAAgBwC,GASlB,OAAO3zZ,EAMT,SAAS0zZ,GAAqBj9C,EAAIt6R,EAAM7kE,GAEtC,GAAK8jJ,EAAOj/E,EAAM,WAAlB,CAGA,IAAIkvN,EAAMlvN,EAAK87G,QAYf,OAAIw+K,GAAMA,EAAG/wN,SAASw1N,gBACWt5U,IAA/B60U,EAAG/wN,SAASw1N,UAAU5jW,SACHsqB,IAAnB60U,EAAGm9C,OAAOt8Y,GAEHm/V,EAAGm9C,OAAOt8Y,GAIG,oBAAR+zR,GAA6C,aAAvBgO,GAAQl9N,EAAKvzD,MAC7CyiR,EAAIhvS,KAAKo6W,GACTprE,GAsFN,IAAIwoH,GAAsB,qBAO1B,SAASx6G,GAAS3iO,GAChB,IAAIvrC,EAAQurC,GAAMA,EAAGzsE,WAAWkhC,MAAM0oX,IACtC,OAAO1oX,EAAQA,EAAM,GAAK,GAG5B,SAAS2oX,GAAYxxZ,EAAGhH,GACtB,OAAO+9S,GAAQ/2S,KAAO+2S,GAAQ/9S,GAGhC,SAASk4Z,GAAc5qY,EAAMmrY,GAC3B,IAAK34Z,MAAM21E,QAAQgjV,GACjB,OAAOD,GAAWC,EAAenrY,GAAQ,GAAK,EAEhD,IAAK,IAAIhsB,EAAI,EAAG2/F,EAAMw3T,EAAch3Z,OAAQH,EAAI2/F,EAAK3/F,IACnD,GAAIk3Z,GAAWC,EAAcn3Z,GAAIgsB,GAC/B,OAAOhsB,EAGX,OAAQ,EAiDV,SAASo3Z,GAAaxpZ,EAAKisW,EAAIjsV,GAG7BwlY,KACA,IACE,GAAIv5C,EAAI,CACN,IAAI5H,EAAM4H,EACV,MAAQ5H,EAAMA,EAAIwS,QAAU,CAC1B,IAAI/qQ,EAAQu4P,EAAInpN,SAASuuQ,cACzB,GAAI39S,EACF,IAAK,IAAI15G,EAAI,EAAGA,EAAI05G,EAAMv5G,OAAQH,IAChC,IACE,IAAIw6F,GAAgD,IAAtCkf,EAAM15G,GAAGP,KAAKwyW,EAAKrkW,EAAKisW,EAAIjsV,GAC1C,GAAI4sE,EAAW,OACf,MAAOh3F,IACP8zZ,GAAkB9zZ,GAAGyuW,EAAK,wBAMpCqlD,GAAkB1pZ,EAAKisW,EAAIjsV,GAC3B,QACAylY,MAIJ,SAASkE,GACP/7S,EACArG,EACAjkB,EACA2oR,EACAjsV,GAEA,IAAI2sG,EACJ,IACEA,EAAMrpC,EAAOsqB,EAAQ34G,MAAMsyG,EAASjkB,GAAQsqB,EAAQ/7G,KAAK01G,GACrDolB,IAAQA,EAAImpP,QAAUssC,EAAUz1R,KAASA,EAAIi9R,WAC/Cj9R,EAAIh+D,OAAM,SAAU/4D,GAAK,OAAO4zZ,GAAY5zZ,EAAGq2W,EAAIjsV,EAAO,uBAG1D2sG,EAAIi9R,UAAW,GAEjB,MAAOh0Z,IACP4zZ,GAAY5zZ,GAAGq2W,EAAIjsV,GAErB,OAAO2sG,EAGT,SAAS+8R,GAAmB1pZ,EAAKisW,EAAIjsV,GACnC,GAAIk3B,EAAOmsW,aACT,IACE,OAAOnsW,EAAOmsW,aAAaxxZ,KAAK,KAAMmO,EAAKisW,EAAIjsV,GAC/C,MAAOpqB,IAGHA,KAAMoK,GACR6pZ,GAASj0Z,GAAG,KAAM,uBAIxBi0Z,GAAS7pZ,EAAKisW,EAAIjsV,GAGpB,SAAS6pY,GAAU7pZ,EAAKisW,EAAIjsV,GAK1B,IAAK+2Q,IAAaqtH,GAA8B,qBAAZv8U,QAGlC,MAAM7nE,EAFN6nE,QAAQrwE,MAAMwI,GAQlB,IAyBI8pZ,GAzBAC,IAAmB,EAEnBjpY,GAAY,GACZgrT,IAAU,EAEd,SAASk+E,KACPl+E,IAAU,EACV,IAAI9tC,EAASl9Q,GAAU2c,MAAM,GAC7B3c,GAAUvuB,OAAS,EACnB,IAAK,IAAIH,EAAI,EAAGA,EAAI4rS,EAAOzrS,OAAQH,IACjC4rS,EAAO5rS,KAwBX,GAAuB,qBAAZkB,SAA2B4qQ,GAAS5qQ,SAAU,CACvD,IAAIvC,GAAIuC,QAAQC,UAChBu2Z,GAAY,WACV/4Z,GAAEiF,KAAKg0Z,IAMHvF,IAAS7qX,WAAWkyC,IAE1Bi+U,IAAmB,OACd,GAAKt4W,IAAoC,qBAArB0tH,mBACzB++F,GAAS/+F,mBAEuB,yCAAhCA,iBAAiB1/J,WAoBjBqqZ,GAJiC,qBAAjBl/O,cAAgCszF,GAAStzF,cAI7C,WACVA,aAAao/O,KAIH,WACVpwX,WAAWowX,GAAgB,QAzB5B,CAID,IAAI9gP,GAAU,EACVx9F,GAAW,IAAIyzF,iBAAiB6qP,IAChCC,GAAWpjX,SAAS64H,eAAe79J,OAAOqnK,KAC9Cx9F,GAASi0F,QAAQsqP,GAAU,CACzBrqP,eAAe,IAEjBkqP,GAAY,WACV5gP,IAAWA,GAAU,GAAK,EAC1B+gP,GAAS3oZ,KAAOO,OAAOqnK,KAEzB6gP,IAAmB,EAerB,SAAStqP,GAAUz2D,EAAIzE,GACrB,IAAI66C,EAiBJ,GAhBAt+H,GAAU5pB,MAAK,WACb,GAAI8xG,EACF,IACEA,EAAGn3G,KAAK0yG,GACR,MAAO3uG,IACP4zZ,GAAY5zZ,GAAG2uG,EAAK,iBAEb66C,GACTA,EAAS76C,MAGRunO,KACHA,IAAU,EACVg+E,OAGG9gT,GAAyB,qBAAZ11G,QAChB,OAAO,IAAIA,SAAQ,SAAUC,GAC3B6rJ,EAAW7rJ,KAiGjB,IAAI22Z,GAAc,IAAIlF,GAOtB,SAASmF,GAAU/5X,GACjBg6X,GAAUh6X,EAAK85X,IACfA,GAAYlwY,QAGd,SAASowY,GAAWh6X,EAAKk2N,GACvB,IAAIl0P,EAAG2B,EACHs2Z,EAAMz5Z,MAAM21E,QAAQn2C,GACxB,MAAMi6X,IAAQngV,EAAS95C,IAAS3/B,OAAO0kM,SAAS/kK,IAAQA,aAAeuxT,IAAvE,CAGA,GAAIvxT,EAAIm2X,OAAQ,CACd,IAAI+D,EAAQl6X,EAAIm2X,OAAO3iC,IAAIzsV,GAC3B,GAAImvN,EAAKvsO,IAAIuwY,GACX,OAEFhkK,EAAKj4N,IAAIi8X,GAEX,GAAID,EAAK,CACPj4Z,EAAIg+B,EAAI79B,OACR,MAAOH,IAAOg4Z,GAAUh6X,EAAIh+B,GAAIk0P,OAC3B,CACLvyP,EAAOtD,OAAOsD,KAAKq8B,GACnBh+B,EAAI2B,EAAKxB,OACT,MAAOH,IAAOg4Z,GAAUh6X,EAAIr8B,EAAK3B,IAAKk0P,KA6B1C,IAAIikK,GAAiB/H,GAAO,SAAUj+Y,GACpC,IAAI64V,EAA6B,MAAnB74V,EAAKyiC,OAAO,GAC1BziC,EAAO64V,EAAU74V,EAAKk5B,MAAM,GAAKl5B,EACjC,IAAIimZ,EAA6B,MAAnBjmZ,EAAKyiC,OAAO,GAC1BziC,EAAOimZ,EAAUjmZ,EAAKk5B,MAAM,GAAKl5B,EACjC,IAAIqoF,EAA6B,MAAnBroF,EAAKyiC,OAAO,GAE1B,OADAziC,EAAOqoF,EAAUroF,EAAKk5B,MAAM,GAAKl5B,EAC1B,CACLA,KAAMA,EACNu4P,KAAM0tJ,EACN59T,QAASA,EACTwwQ,QAASA,MAIb,SAASqtD,GAAiB7nQ,EAAKqpN,GAC7B,SAASuU,IACP,IAAI4F,EAAc9zX,UAEdswJ,EAAM49N,EAAQ59N,IAClB,IAAIhyJ,MAAM21E,QAAQq8E,GAOhB,OAAO+mQ,GAAwB/mQ,EAAK,KAAMtwJ,UAAW25W,EAAI,gBALzD,IADA,IAAIp+E,EAASjrI,EAAInlH,QACRrrC,EAAI,EAAGA,EAAIy7R,EAAOt7R,OAAQH,IACjCu3Z,GAAwB97H,EAAOz7R,GAAI,KAAMg0X,EAAana,EAAI,gBAQhE,OADAuU,EAAQ59N,IAAMA,EACP49N,EAGT,SAASkqC,GACPt8E,EACAu8E,EACAt8X,EACAu8X,EACAC,EACA5+C,GAEA,IAAI1nW,EAAc8/V,EAAKymD,EAAKhzY,EAC5B,IAAKvT,KAAQ6pU,EACFi2B,EAAMj2B,EAAG7pU,GAClBumZ,EAAMH,EAAMpmZ,GACZuT,EAAQyyY,GAAehmZ,GACnBu9Y,EAAQz9C,KAKDy9C,EAAQgJ,IACbhJ,EAAQz9C,EAAIzhN,OACdyhN,EAAMj2B,EAAG7pU,GAAQkmZ,GAAgBpmD,EAAK4H,IAEpC81C,EAAOjqY,EAAMglP,QACfunG,EAAMj2B,EAAG7pU,GAAQsmZ,EAAkB/yY,EAAMvT,KAAM8/V,EAAKvsV,EAAM80E,UAE5Dv+D,EAAIvW,EAAMvT,KAAM8/V,EAAKvsV,EAAM80E,QAAS90E,EAAMslV,QAAStlV,EAAMrL,SAChD43V,IAAQymD,IACjBA,EAAIloQ,IAAMyhN,EACVj2B,EAAG7pU,GAAQumZ,IAGf,IAAKvmZ,KAAQomZ,EACP7I,EAAQ1zE,EAAG7pU,MACbuT,EAAQyyY,GAAehmZ,GACvBqmZ,EAAU9yY,EAAMvT,KAAMomZ,EAAMpmZ,GAAOuT,EAAM80E,UAO/C,SAASm+T,GAAgBlqH,EAAKmqH,EAAS9+S,GAIrC,IAAIs0Q,EAHA3/E,aAAe8gD,KACjB9gD,EAAMA,EAAIv/R,KAAK4qG,OAAS20L,EAAIv/R,KAAK4qG,KAAO,KAG1C,IAAI++S,EAAUpqH,EAAImqH,GAElB,SAASE,IACPh/S,EAAKj3G,MAAM/D,KAAMoB,WAGjB+iI,EAAOmrP,EAAQ59N,IAAKsoQ,GAGlBpJ,EAAQmJ,GAEVzqC,EAAUiqC,GAAgB,CAACS,IAGvBrhB,EAAMohB,EAAQroQ,MAAQm/P,EAAOkJ,EAAQlkQ,SAEvCy5N,EAAUyqC,EACVzqC,EAAQ59N,IAAI1rJ,KAAKg0Z,IAGjB1qC,EAAUiqC,GAAgB,CAACQ,EAASC,IAIxC1qC,EAAQz5N,QAAS,EACjB85I,EAAImqH,GAAWxqC,EAKjB,SAAS2qC,GACP7pZ,EACA8uP,EACAljG,GAKA,IAAI27P,EAAcz4J,EAAKt9P,QAAQ6zH,MAC/B,IAAIm7R,EAAQ+G,GAAZ,CAGA,IAAIl8R,EAAM,GACN+gN,EAAQpsU,EAAKosU,MACb/mN,EAAQrlH,EAAKqlH,MACjB,GAAIkjR,EAAMn8D,IAAUm8D,EAAMljR,GACxB,IAAK,IAAI75G,KAAO+7Y,EAAa,CAC3B,IAAInf,EAASgZ,EAAU51Y,GAiBvBs+Y,GAAUz+R,EAAKhG,EAAO75G,EAAK48X,GAAQ,IACnC0hB,GAAUz+R,EAAK+gN,EAAO5gU,EAAK48X,GAAQ,GAGvC,OAAO/8Q,GAGT,SAASy+R,GACPz+R,EACA73G,EACAhI,EACA48X,EACAjf,GAEA,GAAIof,EAAM/0X,GAAO,CACf,GAAI87I,EAAO97I,EAAMhI,GAKf,OAJA6/G,EAAI7/G,GAAOgI,EAAKhI,GACX29W,UACI31W,EAAKhI,IAEP,EACF,GAAI8jJ,EAAO97I,EAAM40X,GAKtB,OAJA/8Q,EAAI7/G,GAAOgI,EAAK40X,GACXjf,UACI31W,EAAK40X,IAEP,EAGX,OAAO,EAiBT,SAAS2hB,GAAyB5lT,GAChC,IAAK,IAAIrzG,EAAI,EAAGA,EAAIqzG,EAASlzG,OAAQH,IACnC,GAAIxB,MAAM21E,QAAQk/B,EAASrzG,IACzB,OAAOxB,MAAMQ,UAAUsG,OAAOzC,MAAM,GAAIwwG,GAG5C,OAAOA,EAOT,SAAS47Q,GAAmB57Q,GAC1B,OAAOw8S,EAAYx8S,GACf,CAAC0gT,GAAgB1gT,IACjB70G,MAAM21E,QAAQk/B,GACZ6lT,GAAuB7lT,QACvBruE,EAGR,SAASm0X,GAAY1sP,GACnB,OAAOgrO,EAAMhrO,IAASgrO,EAAMhrO,EAAK16E,OAAS69T,EAAQnjP,EAAK+iL,WAGzD,SAAS0pE,GAAwB7lT,EAAU+lT,GACzC,IACIp5Z,EAAG+yE,EAAG+hF,EAAWwH,EADjB/hC,EAAM,GAEV,IAAKv6H,EAAI,EAAGA,EAAIqzG,EAASlzG,OAAQH,IAC/B+yE,EAAIsgC,EAASrzG,GACT0vZ,EAAQ38U,IAAmB,mBAANA,IACzB+hF,EAAYv6B,EAAIp6H,OAAS,EACzBm8J,EAAO/hC,EAAIu6B,GAEPt2J,MAAM21E,QAAQpB,GACZA,EAAE5yE,OAAS,IACb4yE,EAAImmV,GAAuBnmV,GAAKqmV,GAAe,IAAM,IAAMp5Z,GAEvDm5Z,GAAWpmV,EAAE,KAAOomV,GAAW78P,KACjC/hC,EAAIu6B,GAAai/P,GAAgBz3P,EAAKvqE,KAAQhf,EAAE,GAAIgf,MACpDhf,EAAEj2B,SAEJy9E,EAAIz1H,KAAKjC,MAAM03H,EAAKxnD,IAEb88U,EAAY98U,GACjBomV,GAAW78P,GAIb/hC,EAAIu6B,GAAai/P,GAAgBz3P,EAAKvqE,KAAOhf,GAC9B,KAANA,GAETwnD,EAAIz1H,KAAKivZ,GAAgBhhV,IAGvBomV,GAAWpmV,IAAMomV,GAAW78P,GAE9B/hC,EAAIu6B,GAAai/P,GAAgBz3P,EAAKvqE,KAAOhf,EAAEgf,OAG3C49T,EAAOt8S,EAASgmT,WAClB5hB,EAAM1kU,EAAE+nF,MACR40P,EAAQ38U,EAAEr4D,MACV+8X,EAAM2hB,KACNrmV,EAAEr4D,IAAM,UAAY0+Y,EAAc,IAAMp5Z,EAAI,MAE9Cu6H,EAAIz1H,KAAKiuE,KAIf,OAAOwnD,EAKT,SAAS++R,GAAaz/C,GACpB,IAAI1rB,EAAU0rB,EAAG/wN,SAASqlM,QACtBA,IACF0rB,EAAG0/C,UAA+B,oBAAZprE,EAClBA,EAAQ1uV,KAAKo6W,GACb1rB,GAIR,SAASqrE,GAAgB3/C,GACvB,IAAIn2W,EAAS+1Z,GAAc5/C,EAAG/wN,SAASylM,OAAQsrB,GAC3Cn2W,IACF6wZ,IAAgB,GAChBl2Z,OAAOsD,KAAK+B,GAAQ9B,SAAQ,SAAU8Y,GAYlCo6Y,GAAkBj7C,EAAIn/V,EAAKhX,EAAOgX,OAGtC65Y,IAAgB,IAIpB,SAASkF,GAAelrE,EAAQsrB,GAC9B,GAAItrB,EAAQ,CAOV,IALA,IAAI7qV,EAASrF,OAAOY,OAAO,MACvB0C,EAAOy7Y,GACPl2O,QAAQzI,QAAQ8vL,GAChBlwV,OAAOsD,KAAK4sV,GAEPvuV,EAAI,EAAGA,EAAI2B,EAAKxB,OAAQH,IAAK,CACpC,IAAI0a,EAAM/Y,EAAK3B,GAEf,GAAY,WAAR0a,EAAJ,CACA,IAAIg/Y,EAAanrE,EAAO7zU,GAAKolF,KACzB16B,EAASy0S,EACb,MAAOz0S,EAAQ,CACb,GAAIA,EAAOm0V,WAAa/6P,EAAOp5F,EAAOm0V,UAAWG,GAAa,CAC5Dh2Z,EAAOgX,GAAO0qD,EAAOm0V,UAAUG,GAC/B,MAEFt0V,EAASA,EAAOq/S,QAElB,IAAKr/S,EACH,GAAI,YAAampR,EAAO7zU,GAAM,CAC5B,IAAIi/Y,EAAiBprE,EAAO7zU,GAAK2gL,QACjC33L,EAAOgX,GAAiC,oBAAnBi/Y,EACjBA,EAAel6Z,KAAKo6W,GACpB8/C,OACK,GAKf,OAAOj2Z,GAWX,SAASk2Z,GACPvmT,EACA8B,GAEA,IAAK9B,IAAaA,EAASlzG,OACzB,MAAO,GAGT,IADA,IAAIm/V,EAAQ,GACHt/V,EAAI,EAAG8sJ,EAAIz5C,EAASlzG,OAAQH,EAAI8sJ,EAAG9sJ,IAAK,CAC/C,IAAIm7W,EAAQ9nQ,EAASrzG,GACjBkP,EAAOisW,EAAMjsW,KAOjB,GALIA,GAAQA,EAAKosU,OAASpsU,EAAKosU,MAAMiO,aAC5Br6U,EAAKosU,MAAMiO,KAIf4xB,EAAMhmQ,UAAYA,GAAWgmQ,EAAMo4C,YAAcp+S,IACpDjmG,GAAqB,MAAbA,EAAKq6U,MAUZ+V,EAAMjkK,UAAYikK,EAAMjkK,QAAU,KAAKv2L,KAAKq2W,OAT7C,CACA,IAAIhpW,EAAOjD,EAAKq6U,KACZA,EAAQ+V,EAAMntV,KAAUmtV,EAAMntV,GAAQ,IACxB,aAAdgpW,EAAMrgN,IACRyuL,EAAKzkV,KAAKjC,MAAM0mV,EAAM4xB,EAAM9nQ,UAAY,IAExCk2O,EAAKzkV,KAAKq2W,IAOhB,IAAK,IAAI0+C,KAAUv6D,EACbA,EAAMu6D,GAAQh9X,MAAMi9X,YACfx6D,EAAMu6D,GAGjB,OAAOv6D,EAGT,SAASw6D,GAAcrtP,GACrB,OAAQA,EAAK+iL,YAAc/iL,EAAK6mP,cAA+B,MAAd7mP,EAAK16E,KAKxD,SAAS8hU,GAAoBpnP,GAC3B,OAAOA,EAAK+iL,WAAa/iL,EAAK6mP,aAKhC,SAASyG,GACPz6D,EACA06D,EACAC,GAEA,IAAI1/R,EACA2/R,EAAiB77Z,OAAOsD,KAAKq4Z,GAAa75Z,OAAS,EACnDg6Z,EAAW76D,IAAUA,EAAM86D,SAAWF,EACtCx/Y,EAAM4kV,GAASA,EAAM+6D,KACzB,GAAK/6D,EAEE,IAAIA,EAAMq2C,YAEf,OAAOr2C,EAAMq2C,YACR,GACLwkB,GACAF,GACAA,IAAcxK,GACd/0Y,IAAQu/Y,EAAUI,OACjBH,IACAD,EAAUpjB,WAIX,OAAOojB,EAGP,IAAK,IAAIvE,KADTn7R,EAAM,GACY+kO,EACZA,EAAMo2D,IAAuB,MAAbA,EAAM,KACxBn7R,EAAIm7R,GAAS4E,GAAoBN,EAAatE,EAAOp2D,EAAMo2D,UAnB/Dn7R,EAAM,GAwBR,IAAK,IAAIggS,KAASP,EACVO,KAAShgS,IACbA,EAAIggS,GAASC,GAAgBR,EAAaO,IAW9C,OANIj7D,GAASjhW,OAAOy3J,aAAawpM,KAC/B,EAAQq2C,YAAcp7Q,GAExBk0K,EAAIl0K,EAAK,UAAW4/R,GACpB1rH,EAAIl0K,EAAK,OAAQ7/G,GACjB+zR,EAAIl0K,EAAK,aAAc2/R,GAChB3/R,EAGT,SAAS+/R,GAAoBN,EAAat/Y,EAAKo/D,GAC7C,IAAIu4G,EAAa,WACf,IAAI93D,EAAMr6H,UAAUC,OAAS25E,EAAGj3E,MAAM,KAAM3C,WAAa45E,EAAG,IAC5DygD,EAAMA,GAAsB,kBAARA,IAAqB/7H,MAAM21E,QAAQomD,GACnD,CAACA,GACD00P,GAAkB10P,GACtB,IAAI6vO,EAAQ7vO,GAAOA,EAAI,GACvB,OAAOA,KACJ6vO,GACe,IAAf7vO,EAAIp6H,QAAgBiqW,EAAM5a,YAAcqkE,GAAmBzpD,SAC1DplU,EACAu1F,GAYN,OAPIzgD,EAAGjB,OACLx6E,OAAO6uC,eAAe8sX,EAAat/Y,EAAK,CACtCla,IAAK6xL,EACLllJ,YAAY,EACZC,cAAc,IAGXilJ,EAGT,SAASmoO,GAAgBl7D,EAAO5kV,GAC9B,OAAO,WAAc,OAAO4kV,EAAM5kV,IAQpC,SAAS+/Y,GACPz8X,EACA8pH,GAEA,IAAI6nL,EAAK3vU,EAAG8sJ,EAAGnrJ,EAAM+Y,EACrB,GAAIlc,MAAM21E,QAAQn2C,IAAuB,kBAARA,EAE/B,IADA2xS,EAAM,IAAInxU,MAAMw/B,EAAI79B,QACfH,EAAI,EAAG8sJ,EAAI9uH,EAAI79B,OAAQH,EAAI8sJ,EAAG9sJ,IACjC2vU,EAAI3vU,GAAK8nJ,EAAO9pH,EAAIh+B,GAAIA,QAErB,GAAmB,kBAARg+B,EAEhB,IADA2xS,EAAM,IAAInxU,MAAMw/B,GACXh+B,EAAI,EAAGA,EAAIg+B,EAAKh+B,IACnB2vU,EAAI3vU,GAAK8nJ,EAAO9nJ,EAAI,EAAGA,QAEpB,GAAI83E,EAAS95C,GAClB,GAAIo/W,IAAap/W,EAAIx5B,OAAOC,UAAW,CACrCkrU,EAAM,GACN,IAAIlrU,EAAWu5B,EAAIx5B,OAAOC,YACtBf,EAASe,EAASlB,OACtB,OAAQG,EAAOC,KACbgsU,EAAI7qU,KAAKgjJ,EAAOpkJ,EAAON,MAAOusU,EAAIxvU,SAClCuD,EAASe,EAASlB,YAKpB,IAFA5B,EAAOtD,OAAOsD,KAAKq8B,GACnB2xS,EAAM,IAAInxU,MAAMmD,EAAKxB,QAChBH,EAAI,EAAG8sJ,EAAInrJ,EAAKxB,OAAQH,EAAI8sJ,EAAG9sJ,IAClC0a,EAAM/Y,EAAK3B,GACX2vU,EAAI3vU,GAAK8nJ,EAAO9pH,EAAItjB,GAAMA,EAAK1a,GAQrC,OAJKy3Y,EAAM9nE,KACTA,EAAM,IAER,EAAM0pF,UAAW,EACV1pF,EAQT,SAAS+qF,GACPvoZ,EACAwoZ,EACApmS,EACAqmS,GAEA,IACIp8F,EADAq8F,EAAe/7Z,KAAKsjV,aAAajwU,GAEjC0oZ,GAEFtmS,EAAQA,GAAS,GACbqmS,IAIFrmS,EAAQ03B,EAAOA,EAAO,GAAI2uQ,GAAarmS,IAEzCiqM,EACEq8F,EAAatmS,KACc,oBAAnBomS,EAAgCA,IAAmBA,IAE7Dn8F,EACE1/T,KAAKo8U,OAAO/oU,KACe,oBAAnBwoZ,EAAgCA,IAAmBA,GAG/D,IAAIl2Y,EAAS8vG,GAASA,EAAMg1N,KAC5B,OAAI9kU,EACK3lB,KAAKkgV,eAAe,WAAY,CAAEuK,KAAM9kU,GAAU+5S,GAElDA,EASX,SAASs8F,GAAe/1X,GACtB,OAAOqxX,GAAat3Z,KAAKgqJ,SAAU,UAAW/jH,GAAI,IAASsxN,EAK7D,SAAS0kK,GAAeC,EAAQC,GAC9B,OAAIz8Z,MAAM21E,QAAQ6mV,IACmB,IAA5BA,EAAOhhZ,QAAQihZ,GAEfD,IAAWC,EAStB,SAASC,GACPC,EACAzgZ,EACA0gZ,EACAC,EACAC,GAEA,IAAIC,EAAgBz2W,EAAO8+R,SAASlpU,IAAQ0gZ,EAC5C,OAAIE,GAAkBD,IAAiBv2W,EAAO8+R,SAASlpU,GAC9CqgZ,GAAcO,EAAgBD,GAC5BE,EACFR,GAAcQ,EAAeJ,GAC3BE,EACF/K,EAAU+K,KAAkB3gZ,OAEbsqB,IAAjBm2X,EAQT,SAASK,GACPtsZ,EACA4rJ,EACA13J,EACAq4Z,EACAC,GAEA,GAAIt4Z,EACF,GAAK00E,EAAS10E,GAKP,CAIL,IAAIsf,EAHAlkB,MAAM21E,QAAQ/wE,KAChBA,EAAQ87B,EAAS97B,IAGnB,IAAIuhR,EAAO,SAAWjqQ,GACpB,GACU,UAARA,GACQ,UAARA,GACAy1Y,EAAoBz1Y,GAEpBgI,EAAOxT,MACF,CACL,IAAI8c,EAAO9c,EAAKosU,OAASpsU,EAAKosU,MAAMtvT,KACpCtJ,EAAO+4Y,GAAU32W,EAAO2sW,YAAY32P,EAAK9uI,EAAMtR,GAC3CxL,EAAKqsU,WAAarsU,EAAKqsU,SAAW,IAClCrsU,EAAKosU,QAAUpsU,EAAKosU,MAAQ,IAElC,IAAIqgF,EAAen1C,EAAS9rW,GACxBkhZ,EAAgBtL,EAAU51Y,GAC9B,KAAMihZ,KAAgBj5Y,MAAWk5Y,KAAiBl5Y,KAChDA,EAAKhI,GAAOtX,EAAMsX,GAEdghZ,GAAQ,CACV,IAAI1/E,EAAK9sU,EAAK8sU,KAAO9sU,EAAK8sU,GAAK,IAC/BA,EAAI,UAAYthU,GAAQ,SAAUkxY,GAChCxoZ,EAAMsX,GAAOkxY,KAMrB,IAAK,IAAIlxY,KAAOtX,EAAOuhR,EAAMjqQ,QAGjC,OAAOxL,EAQT,SAAS2sZ,GACPzqX,EACA0qX,GAEA,IAAI1L,EAAStxZ,KAAKi9Z,eAAiBj9Z,KAAKi9Z,aAAe,IACnD32C,EAAOgrC,EAAOh/W,GAGlB,OAAIg0U,IAAS02C,IAIb12C,EAAOgrC,EAAOh/W,GAAStyC,KAAKgqJ,SAASf,gBAAgB32G,GAAO3xC,KAC1DX,KAAKk9Z,aACL,KACAl9Z,MAEFm9Z,GAAW72C,EAAO,aAAeh0U,GAAQ,IARhCg0U,EAgBX,SAAS82C,GACP92C,EACAh0U,EACA12B,GAGA,OADAuhZ,GAAW72C,EAAO,WAAah0U,GAAS12B,EAAO,IAAMA,EAAO,KAAM,GAC3D0qW,EAGT,SAAS62C,GACP72C,EACA1qW,EACAi5Y,GAEA,GAAIn1Z,MAAM21E,QAAQixS,GAChB,IAAK,IAAIplX,EAAI,EAAGA,EAAIolX,EAAKjlX,OAAQH,IAC3BolX,EAAKplX,IAAyB,kBAAZolX,EAAKplX,IACzBm8Z,GAAe/2C,EAAKplX,GAAK0a,EAAM,IAAM1a,EAAI2zZ,QAI7CwI,GAAe/2C,EAAM1qW,EAAKi5Y,GAI9B,SAASwI,GAAgB1vP,EAAM/xJ,EAAKi5Y,GAClClnP,EAAKuqO,UAAW,EAChBvqO,EAAK/xJ,IAAMA,EACX+xJ,EAAKknP,OAASA,EAKhB,SAASyI,GAAqBltZ,EAAM9L,GAClC,GAAIA,EACF,GAAK27F,EAAc37F,GAKZ,CACL,IAAI44U,EAAK9sU,EAAK8sU,GAAK9sU,EAAK8sU,GAAK/vL,EAAO,GAAI/8I,EAAK8sU,IAAM,GACnD,IAAK,IAAIthU,KAAOtX,EAAO,CACrB,IAAI8lJ,EAAW8yL,EAAGthU,GACd2hZ,EAAOj5Z,EAAMsX,GACjBshU,EAAGthU,GAAOwuI,EAAW,GAAG5jJ,OAAO4jJ,EAAUmzQ,GAAQA,QAIvD,OAAOntZ,EAKT,SAASotZ,GACP9rQ,EACAj2B,EAEAgiS,EACAC,GAEAjiS,EAAMA,GAAO,CAAE6/R,SAAUmC,GACzB,IAAK,IAAIv8Z,EAAI,EAAGA,EAAIwwJ,EAAIrwJ,OAAQH,IAAK,CACnC,IAAIupV,EAAO/4L,EAAIxwJ,GACXxB,MAAM21E,QAAQo1Q,GAChB+yE,GAAmB/yE,EAAMhvN,EAAKgiS,GACrBhzE,IAELA,EAAK1wQ,QACP0wQ,EAAKzvQ,GAAGjB,OAAQ,GAElB0hD,EAAIgvN,EAAK7uU,KAAO6uU,EAAKzvQ,IAMzB,OAHI0iV,IACF,EAAMnC,KAAOmC,GAERjiS,EAKT,SAASkiS,GAAiBC,EAASxrX,GACjC,IAAK,IAAIlxC,EAAI,EAAGA,EAAIkxC,EAAO/wC,OAAQH,GAAK,EAAG,CACzC,IAAI0a,EAAMw2B,EAAOlxC,GACE,kBAAR0a,GAAoBA,IAC7BgiZ,EAAQxrX,EAAOlxC,IAAMkxC,EAAOlxC,EAAI,IASpC,OAAO08Z,EAMT,SAASC,GAAiBv5Z,EAAOwqK,GAC/B,MAAwB,kBAAVxqK,EAAqBwqK,EAASxqK,EAAQA,EAKtD,SAASw5Z,GAAsBn4Y,GAC7BA,EAAO0kS,GAAK+yG,GACZz3Y,EAAOm9W,GAAK7hN,EACZt7J,EAAOsiR,GAAK15R,EACZoX,EAAO8pY,GAAKkM,GACZh2Y,EAAOu7Q,GAAK06H,GACZj2Y,EAAOo4Y,GAAK5oC,EACZxvW,EAAO2xF,GAAKw6S,EACZnsY,EAAOq4Y,GAAKjB,GACZp3Y,EAAO2Q,GAAK0lY,GACZr2Y,EAAOs4Y,GAAK7B,GACZz2Y,EAAOsF,GAAKyxY,GACZ/2Y,EAAO64Q,GAAKy2H,GACZtvY,EAAO0Q,GAAK2+X,GACZrvY,EAAOu4Y,GAAKV,GACZ73Y,EAAOw+L,GAAKm5M,GACZ33Y,EAAOyQ,GAAKunY,GACZh4Y,EAAOkpQ,GAAKgvI,GAKd,SAASM,GACP/tZ,EACAqlH,EACAlhB,EACA11D,EACAqgN,GAEA,IAKIk/J,EALArhC,EAAS/8X,KAET4B,EAAUs9P,EAAKt9P,QAIf89J,EAAO7gH,EAAQ,SACjBu/W,EAAY7+Z,OAAOY,OAAO0+C,GAE1Bu/W,EAAUC,UAAYx/W,IAKtBu/W,EAAYv/W,EAEZA,EAASA,EAAOw/W,WAElB,IAAIC,EAAazN,EAAOjvZ,EAAQ2nJ,WAC5Bg1Q,GAAqBD,EAEzBt+Z,KAAKoQ,KAAOA,EACZpQ,KAAKy1H,MAAQA,EACbz1H,KAAKu0G,SAAWA,EAChBv0G,KAAK6+C,OAASA,EACd7+C,KAAK8pI,UAAY15H,EAAK8sU,IAAMyzE,EAC5B3wZ,KAAKsiX,WAAaq4C,GAAc/4Z,EAAQ6tV,OAAQ5wS,GAChD7+C,KAAKwgW,MAAQ,WAOX,OANKu8B,EAAO3gD,QACV6+E,GACE7qZ,EAAKu9U,YACLovC,EAAO3gD,OAAS0+E,GAAavmT,EAAU11D,IAGpCk+U,EAAO3gD,QAGhB78U,OAAO6uC,eAAepuC,KAAM,cAAe,CACzCquC,YAAY,EACZ3sC,IAAK,WACH,OAAOu5Z,GAAqB7qZ,EAAKu9U,YAAa3tV,KAAKwgW,YAKnD89D,IAEFt+Z,KAAKgqJ,SAAWpoJ,EAEhB5B,KAAKo8U,OAASp8U,KAAKwgW,QACnBxgW,KAAKsjV,aAAe23E,GAAqB7qZ,EAAKu9U,YAAa3tV,KAAKo8U,SAG9Dx6U,EAAQ6nJ,SACVzpJ,KAAKm2B,GAAK,SAAUvvB,EAAGhH,EAAGq0E,EAAGt0E,GAC3B,IAAI2rW,EAAQ/gS,GAAc6zV,EAAWx3Z,EAAGhH,EAAGq0E,EAAGt0E,EAAG4+Z,GAKjD,OAJIjzD,IAAU5rW,MAAM21E,QAAQi2R,KAC1BA,EAAMopD,UAAY9yZ,EAAQ6nJ,SAC1B6hN,EAAMmpD,UAAY51W,GAEbysT,GAGTtrW,KAAKm2B,GAAK,SAAUvvB,EAAGhH,EAAGq0E,EAAGt0E,GAAK,OAAO4qE,GAAc6zV,EAAWx3Z,EAAGhH,EAAGq0E,EAAGt0E,EAAG4+Z,IAMlF,SAASC,GACPt/J,EACAsgH,EACApvW,EACAguZ,EACA7pT,GAEA,IAAI3yG,EAAUs9P,EAAKt9P,QACf6zH,EAAQ,GACRkiS,EAAc/1Z,EAAQ6zH,MAC1B,GAAIkjR,EAAMgf,GACR,IAAK,IAAI/7Y,KAAO+7Y,EACdliS,EAAM75G,GAAO87Y,GAAa97Y,EAAK+7Y,EAAan4C,GAAamxC,QAGvDhY,EAAMvoY,EAAKosU,QAAUiiF,GAAWhpS,EAAOrlH,EAAKosU,OAC5Cm8D,EAAMvoY,EAAKqlH,QAAUgpS,GAAWhpS,EAAOrlH,EAAKqlH,OAGlD,IAAIipS,EAAgB,IAAIP,GACtB/tZ,EACAqlH,EACAlhB,EACA6pT,EACAl/J,GAGEosG,EAAQ1pW,EAAQonJ,OAAOroJ,KAAK,KAAM+9Z,EAAcvoY,GAAIuoY,GAExD,GAAIpzD,aAAiB7a,GACnB,OAAOkuE,GAA6BrzD,EAAOl7V,EAAMsuZ,EAAc7/W,OAAQj9C,EAAS88Z,GAC3E,GAAIh/Z,MAAM21E,QAAQi2R,GAAQ,CAG/B,IAFA,IAAIszD,EAASzuC,GAAkB7kB,IAAU,GACrC7vO,EAAM,IAAI/7H,MAAMk/Z,EAAOv9Z,QAClBH,EAAI,EAAGA,EAAI09Z,EAAOv9Z,OAAQH,IACjCu6H,EAAIv6H,GAAKy9Z,GAA6BC,EAAO19Z,GAAIkP,EAAMsuZ,EAAc7/W,OAAQj9C,EAAS88Z,GAExF,OAAOjjS,GAIX,SAASkjS,GAA8BrzD,EAAOl7V,EAAMguZ,EAAWx8Z,EAAS88Z,GAItE,IAAIvwY,EAAQ+mY,GAAW5pD,GASvB,OARAn9U,EAAMsmY,UAAY2J,EAClBjwY,EAAM65W,UAAYpmY,EAIdwO,EAAKq6U,QACNt8T,EAAM/d,OAAS+d,EAAM/d,KAAO,KAAKq6U,KAAOr6U,EAAKq6U,MAEzCt8T,EAGT,SAASswY,GAAY3yT,EAAI9K,GACvB,IAAK,IAAIplF,KAAOolF,EACd8K,EAAG47Q,EAAS9rW,IAAQolF,EAAKplF,GA7D7BkiZ,GAAqBK,GAAwBj+Z,WA0E7C,IAAI2+Z,GAAsB,CACxBthS,KAAM,SAAe+tO,EAAOwzD,GAC1B,GACExzD,EAAM0P,oBACL1P,EAAM0P,kBAAkB72B,cACzBmnB,EAAMl7V,KAAK0jY,UACX,CAEA,IAAIirB,EAAczzD,EAClBuzD,GAAoBvqB,SAASyqB,EAAaA,OACrC,CACL,IAAI1iD,EAAQ/Q,EAAM0P,kBAAoBgkD,GACpC1zD,EACA2zD,IAEF5iD,EAAMoD,OAAOq/C,EAAYxzD,EAAM78J,SAAMvoK,EAAW44X,KAIpDxqB,SAAU,SAAmB4qB,EAAU5zD,GACrC,IAAI1pW,EAAU0pW,EAAM1P,iBAChBygB,EAAQ/Q,EAAM0P,kBAAoBkkD,EAASlkD,kBAC/CmkD,GACE9iD,EACAz6W,EAAQ49W,UACR59W,EAAQkoI,UACRwhO,EACA1pW,EAAQ2yG,WAIZ6yQ,OAAQ,SAAiB9b,GACvB,IAAIj1P,EAAUi1P,EAAMj1P,QAChB2kQ,EAAoB1P,EAAM0P,kBACzBA,EAAkBokD,aACrBpkD,EAAkBokD,YAAa,EAC/BC,GAASrkD,EAAmB,YAE1B1P,EAAMl7V,KAAK0jY,YACTz9R,EAAQ+oT,WAMVE,GAAwBtkD,GAExBukD,GAAuBvkD,GAAmB,KAKhD73F,QAAS,SAAkBmoF,GACzB,IAAI0P,EAAoB1P,EAAM0P,kBACzBA,EAAkB72B,eAChBmnB,EAAMl7V,KAAK0jY,UAGd0rB,GAAyBxkD,GAAmB,GAF5CA,EAAkB4E,cAQtB6/C,GAAelga,OAAOsD,KAAKg8Z,IAE/B,SAASa,GACPxgK,EACA9uP,EACAimG,EACA9B,EACAynD,GAEA,IAAI40P,EAAQ1xJ,GAAZ,CAIA,IAAIygK,EAAWtpT,EAAQ2zC,SAAShjC,MAShC,GANIhuC,EAASkmL,KACXA,EAAOygK,EAASxyQ,OAAO+xG,IAKL,oBAATA,EAAX,CAQA,IAAIs1J,EACJ,GAAI5D,EAAQ1xJ,EAAKinH,OACfquC,EAAet1J,EACfA,EAAO0gK,GAAsBpL,EAAcmL,QAC9Bz5X,IAATg5N,GAIF,OAAO2gK,GACLrL,EACApkZ,EACAimG,EACA9B,EACAynD,GAKN5rJ,EAAOA,GAAQ,GAIf0vZ,GAA0B5gK,GAGtBy5I,EAAMvoY,EAAKsjH,QACbqsS,GAAe7gK,EAAKt9P,QAASwO,GAI/B,IAAIovW,EAAYy6C,GAA0B7pZ,EAAM8uP,EAAMljG,GAGtD,GAAI60P,EAAO3xJ,EAAKt9P,QAAQ4nJ,YACtB,OAAOg1Q,GAA0Bt/J,EAAMsgH,EAAWpvW,EAAMimG,EAAS9B,GAKnE,IAAIu1B,EAAY15H,EAAK8sU,GAKrB,GAFA9sU,EAAK8sU,GAAK9sU,EAAKk4U,SAEXuoE,EAAO3xJ,EAAKt9P,QAAQo+Z,UAAW,CAKjC,IAAIv1E,EAAOr6U,EAAKq6U,KAChBr6U,EAAO,GACHq6U,IACFr6U,EAAKq6U,KAAOA,GAKhBw1E,GAAsB7vZ,GAGtB,IAAIiD,EAAO6rP,EAAKt9P,QAAQyR,MAAQ2oJ,EAC5BsvM,EAAQ,IAAI7a,GACb,iBAAoBvxF,EAAQ,KAAK7rP,EAAQ,IAAMA,EAAQ,IACxDjD,OAAM81B,OAAWA,OAAWA,EAAWmwE,EACvC,CAAE6oJ,KAAMA,EAAMsgH,UAAWA,EAAW11O,UAAWA,EAAWkyB,IAAKA,EAAKznD,SAAUA,GAC9EigT,GAGF,OAAOlpD,IAGT,SAAS0zD,GAEP1zD,EAEAzsT,GAEA,IAAIj9C,EAAU,CACZs+Z,cAAc,EACdpnB,aAAcxtC,EACdzsT,OAAQA,GAGNshX,EAAiB70D,EAAMl7V,KAAK+vZ,eAKhC,OAJIxnB,EAAMwnB,KACRv+Z,EAAQonJ,OAASm3Q,EAAen3Q,OAChCpnJ,EAAQqnJ,gBAAkBk3Q,EAAel3Q,iBAEpC,IAAIqiN,EAAM1P,iBAAiB18F,KAAKt9P,GAGzC,SAASq+Z,GAAuB7vZ,GAE9B,IADA,IAAIwqG,EAAQxqG,EAAK4qG,OAAS5qG,EAAK4qG,KAAO,IAC7B95G,EAAI,EAAGA,EAAIu+Z,GAAap+Z,OAAQH,IAAK,CAC5C,IAAI0a,EAAM6jZ,GAAav+Z,GACnBkpJ,EAAWxvC,EAAMh/F,GACjBwkZ,EAAUvB,GAAoBjjZ,GAC9BwuI,IAAag2Q,GAAah2Q,GAAYA,EAASi2Q,UACjDzlT,EAAMh/F,GAAOwuI,EAAWk2Q,GAAYF,EAASh2Q,GAAYg2Q,IAK/D,SAASE,GAAap9H,EAAIhB,GACxB,IAAIrsI,EAAS,SAAUjvJ,EAAGhH,GAExBsjS,EAAGt8R,EAAGhH,GACNsiS,EAAGt7R,EAAGhH,IAGR,OADAi2J,EAAOwqQ,SAAU,EACVxqQ,EAKT,SAASkqQ,GAAgBn+Z,EAASwO,GAChC,IAAIqwE,EAAQ7+E,EAAQ8xH,OAAS9xH,EAAQ8xH,MAAMjzC,MAAS,QAChD75D,EAAShlB,EAAQ8xH,OAAS9xH,EAAQ8xH,MAAM9sG,OAAU,SACpDxW,EAAKosU,QAAUpsU,EAAKosU,MAAQ,KAAK/7P,GAAQrwE,EAAKsjH,MAAMpvH,MACtD,IAAI44U,EAAK9sU,EAAK8sU,KAAO9sU,EAAK8sU,GAAK,IAC3B9yL,EAAW8yL,EAAGt2T,GACdyL,EAAWjiB,EAAKsjH,MAAMrhG,SACtBsmX,EAAMvuP,IAEN1qJ,MAAM21E,QAAQ+0E,IACsB,IAAhCA,EAASlvI,QAAQmX,GACjB+3H,IAAa/3H,KAEjB6qT,EAAGt2T,GAAS,CAACyL,GAAU7rB,OAAO4jJ,IAGhC8yL,EAAGt2T,GAASyL,EAMhB,IAAIkuY,GAAmB,EACnBC,GAAmB,EAIvB,SAASj2V,GACP8rC,EACA2lD,EACA5rJ,EACAmkG,EACAksT,EACAC,GAUA,OARIhha,MAAM21E,QAAQjlE,IAAS2gZ,EAAY3gZ,MACrCqwZ,EAAoBlsT,EACpBA,EAAWnkG,EACXA,OAAO81B,GAEL2qX,EAAO6P,KACTD,EAAoBD,IAEfG,GAAetqT,EAAS2lD,EAAK5rJ,EAAMmkG,EAAUksT,GAGtD,SAASE,GACPtqT,EACA2lD,EACA5rJ,EACAmkG,EACAksT,GAEA,GAAI9nB,EAAMvoY,IAASuoY,EAAM,EAAO0c,QAM9B,OAAOL,KAMT,GAHIrc,EAAMvoY,IAASuoY,EAAMvoY,EAAK4lK,MAC5Bha,EAAM5rJ,EAAK4lK,KAERha,EAEH,OAAOg5P,KA2BT,IAAI1pD,EAAO74Q,EAELysK,GAdFx/P,MAAM21E,QAAQk/B,IACO,oBAAhBA,EAAS,KAEhBnkG,EAAOA,GAAQ,GACfA,EAAKu9U,YAAc,CAAEpxJ,QAAShoF,EAAS,IACvCA,EAASlzG,OAAS,GAEhBo/Z,IAAsBD,GACxBjsT,EAAW47Q,GAAkB57Q,GACpBksT,IAAsBF,KAC/BhsT,EAAW4lT,GAAwB5lT,IAGlB,kBAARynD,IAETvpE,EAAM4jB,EAAQqzC,QAAUrzC,EAAQqzC,OAAOj3D,IAAOzsC,EAAOysW,gBAAgBz2P,GASnEsvM,EAREtlT,EAAOssW,cAAct2P,GAQf,IAAIy0L,GACVzqS,EAAO0sW,qBAAqB12P,GAAM5rJ,EAAMmkG,OACxCruE,OAAWA,EAAWmwE,GAEbjmG,GAASA,EAAK65R,MAAQ0uG,EAAMz5I,EAAOo4J,GAAajhT,EAAQ2zC,SAAU,aAAcgS,IAOnF,IAAIy0L,GACVz0L,EAAK5rJ,EAAMmkG,OACXruE,OAAWA,EAAWmwE,GAPhBqpT,GAAgBxgK,EAAM9uP,EAAMimG,EAAS9B,EAAUynD,IAYzDsvM,EAAQo0D,GAAgB1jQ,EAAK5rJ,EAAMimG,EAAS9B,GAE9C,OAAI70G,MAAM21E,QAAQi2R,GACTA,EACEqtC,EAAMrtC,IACXqtC,EAAMlmT,IAAOmuU,GAAQt1D,EAAO74Q,GAC5BkmT,EAAMvoY,IAASywZ,GAAqBzwZ,GACjCk7V,GAEA0pD,KAIX,SAAS4L,GAASt1D,EAAO74Q,EAAI+lP,GAO3B,GANA8yB,EAAM74Q,GAAKA,EACO,kBAAd64Q,EAAMtvM,MAERvpE,OAAKvsD,EACLsyS,GAAQ,GAENmgE,EAAMrtC,EAAM/2P,UACd,IAAK,IAAIrzG,EAAI,EAAG8sJ,EAAIs9M,EAAM/2P,SAASlzG,OAAQH,EAAI8sJ,EAAG9sJ,IAAK,CACrD,IAAIm7W,EAAQ/Q,EAAM/2P,SAASrzG,GACvBy3Y,EAAMt8B,EAAMrgN,OACd40P,EAAQv0C,EAAM5pR,KAAQo+T,EAAOr4E,IAAwB,QAAd6jC,EAAMrgN,MAC7C4kQ,GAAQvkD,EAAO5pR,EAAI+lP,IAS3B,SAASqoF,GAAsBzwZ,GACzB4oE,EAAS5oE,EAAKo6D,QAChByuV,GAAS7oZ,EAAKo6D,OAEZwO,EAAS5oE,EAAKisU,QAChB48E,GAAS7oZ,EAAKisU,OAMlB,SAASykF,GAAY/lD,GACnBA,EAAGgmD,OAAS,KACZhmD,EAAGkiD,aAAe,KAClB,IAAIr7Z,EAAUm5W,EAAG/wN,SACbg3Q,EAAcjmD,EAAGrxN,OAAS9nJ,EAAQk3Y,aAClC4lB,EAAgBsC,GAAeA,EAAY3qT,QAC/C0kQ,EAAG3+B,OAAS0+E,GAAal5Z,EAAQq/Z,gBAAiBvC,GAClD3jD,EAAGz3B,aAAeqtE,EAKlB51C,EAAG5kV,GAAK,SAAUvvB,EAAGhH,EAAGq0E,EAAGt0E,GAAK,OAAO4qE,GAAcwwS,EAAIn0W,EAAGhH,EAAGq0E,EAAGt0E,GAAG,IAGrEo7W,EAAG76B,eAAiB,SAAUt5U,EAAGhH,EAAGq0E,EAAGt0E,GAAK,OAAO4qE,GAAcwwS,EAAIn0W,EAAGhH,EAAGq0E,EAAGt0E,GAAG,IAIjF,IAAIuha,EAAaF,GAAeA,EAAY5wZ,KAW1C4lZ,GAAkBj7C,EAAI,SAAUmmD,GAAcA,EAAW1kF,OAASm0E,EAAa,MAAM,GACrFqF,GAAkBj7C,EAAI,aAAcn5W,EAAQu/Z,kBAAoBxQ,EAAa,MAAM,GAIvF,IA4PIhrY,GA5PAy7Y,GAA2B,KAE/B,SAASC,GAAah7E,GAEpBy3E,GAAqBz3E,EAAInmV,WAEzBmmV,EAAInmV,UAAU4jV,UAAY,SAAU9oQ,GAClC,OAAOuzF,GAASvzF,EAAIh7E,OAGtBqmV,EAAInmV,UAAUwsS,QAAU,WACtB,IAiBI4+D,EAjBAyP,EAAK/6W,KACLulV,EAAMw1B,EAAG/wN,SACThB,EAASu8L,EAAIv8L,OACb8vP,EAAevzD,EAAIuzD,aAEnBA,IACF/9B,EAAGz3B,aAAe23E,GAChBniB,EAAa1oY,KAAKu9U,YAClBotB,EAAG3+B,OACH2+B,EAAGz3B,eAMPy3B,EAAGrxN,OAASovP,EAGZ,IAIEsoB,GAA2BrmD,EAC3BzP,EAAQtiN,EAAOroJ,KAAKo6W,EAAGmiD,aAAcniD,EAAG76B,gBACxC,MAAOx7U,IACP4zZ,GAAY5zZ,GAAGq2W,EAAI,UAYjBzP,EAAQyP,EAAGgmD,OAEb,QACAK,GAA2B,KAmB7B,OAhBI1ha,MAAM21E,QAAQi2R,IAA2B,IAAjBA,EAAMjqW,SAChCiqW,EAAQA,EAAM,IAGVA,aAAiB7a,KAQrB6a,EAAQ0pD,MAGV1pD,EAAMzsT,OAASi6V,EACRxtC,GAMX,SAASg2D,GAAYhjJ,EAAMrnG,GAOzB,OALEqnG,EAAKigI,YACJD,IAA0C,WAA7BhgI,EAAK54Q,OAAOyzO,gBAE1BmlC,EAAOA,EAAK/hF,SAEPvjH,EAASslM,GACZrnG,EAAK9pB,OAAOmxH,GACZA,EAGN,SAASuhJ,GACP78N,EACA5yL,EACAimG,EACA9B,EACAynD,GAEA,IAAI2R,EAAOqnP,KAGX,OAFArnP,EAAK6mP,aAAexxN,EACpBr1B,EAAKmnP,UAAY,CAAE1kZ,KAAMA,EAAMimG,QAASA,EAAS9B,SAAUA,EAAUynD,IAAKA,GACnE2R,EAGT,SAASiyP,GACP58N,EACA28N,GAEA,GAAI9O,EAAO7tN,EAAQ18L,QAAUqyY,EAAM31M,EAAQu+N,WACzC,OAAOv+N,EAAQu+N,UAGjB,GAAI5oB,EAAM31M,EAAQqwL,UAChB,OAAOrwL,EAAQqwL,SAGjB,IAAIt3Q,EAAQqlT,GAMZ,GALIrlT,GAAS48R,EAAM31M,EAAQw+N,UAA8C,IAAnCx+N,EAAQw+N,OAAOtmZ,QAAQ6gG,IAE3DinF,EAAQw+N,OAAOx7Z,KAAK+1G,GAGlB80S,EAAO7tN,EAAQm7I,UAAYw6D,EAAM31M,EAAQy+N,aAC3C,OAAOz+N,EAAQy+N,YAGjB,GAAI1lT,IAAU48R,EAAM31M,EAAQw+N,QAAS,CACnC,IAAIA,EAASx+N,EAAQw+N,OAAS,CAACzlT,GAC3B+7Q,GAAO,EACP4pC,EAAe,KACfC,EAAe,KAElB,EAAQ9yE,IAAI,kBAAkB,WAAc,OAAO1qN,EAAOq9R,EAAQzlT,MAEnE,IAAI+tL,EAAc,SAAU83H,GAC1B,IAAK,IAAI1ga,EAAI,EAAG8sJ,EAAIwzQ,EAAOnga,OAAQH,EAAI8sJ,EAAG9sJ,IACvCsga,EAAOtga,GAAIw+X,eAGVkiC,IACFJ,EAAOnga,OAAS,EACK,OAAjBqga,IACFn7V,aAAam7V,GACbA,EAAe,MAEI,OAAjBC,IACFp7V,aAAao7V,GACbA,EAAe,QAKjBt/Z,EAAUupQ,GAAK,SAAUnwI,GAE3BunE,EAAQqwL,SAAWiuC,GAAW7lS,EAAKkkS,GAG9B7nC,EAGH0pC,EAAOnga,OAAS,EAFhByoS,GAAY,MAMZxnS,EAASspQ,GAAK,SAAUv8J,GAKtBspS,EAAM31M,EAAQu+N,aAChBv+N,EAAQ18L,OAAQ,EAChBwjS,GAAY,OAIZruK,EAAMunE,EAAQ3gM,EAASC,GA+C3B,OA7CI02E,EAASyiD,KACPy1R,EAAUz1R,GAERm1R,EAAQ5tN,EAAQqwL,WAClB53P,EAAI32H,KAAKzC,EAASC,GAEX4uZ,EAAUz1R,EAAI+2K,aACvB/2K,EAAI+2K,UAAU1tS,KAAKzC,EAASC,GAExBq2Y,EAAMl9Q,EAAIn1H,SACZ08L,EAAQu+N,UAAYD,GAAW7lS,EAAIn1H,MAAOq5Z,IAGxChnB,EAAMl9Q,EAAI0iN,WACZn7I,EAAQy+N,YAAcH,GAAW7lS,EAAI0iN,QAASwhF,GAC5B,IAAdlkS,EAAIhzF,MACNu6J,EAAQm7I,SAAU,EAElBujF,EAAeh5X,YAAW,WACxBg5X,EAAe,KACX9Q,EAAQ5tN,EAAQqwL,WAAau9B,EAAQ5tN,EAAQ18L,SAC/C08L,EAAQm7I,SAAU,EAClBr0C,GAAY,MAEbruK,EAAIhzF,OAAS,MAIhBkwW,EAAMl9Q,EAAIr4H,WACZu+Z,EAAej5X,YAAW,WACxBi5X,EAAe,KACX/Q,EAAQ5tN,EAAQqwL,WAClB/wX,EAGM,QAGPm5H,EAAIr4H,YAKb00X,GAAO,EAEA90L,EAAQm7I,QACXn7I,EAAQy+N,YACRz+N,EAAQqwL,UAMhB,SAASwuC,GAAwBttT,GAC/B,GAAI70G,MAAM21E,QAAQk/B,GAChB,IAAK,IAAIrzG,EAAI,EAAGA,EAAIqzG,EAASlzG,OAAQH,IAAK,CACxC,IAAI+yE,EAAIsgC,EAASrzG,GACjB,GAAIy3Y,EAAM1kU,KAAO0kU,EAAM1kU,EAAE2nR,mBAAqBm5D,GAAmB9gV,IAC/D,OAAOA,GAUf,SAAS6tV,GAAY/mD,GACnBA,EAAGn2P,QAAUrlH,OAAOY,OAAO,MAC3B46W,EAAGgnD,eAAgB,EAEnB,IAAIj4R,EAAYixO,EAAG/wN,SAASm3Q,iBACxBr3R,GACFk4R,GAAyBjnD,EAAIjxO,GAMjC,SAAS3sG,GAAKvW,EAAOo0D,GACnBr1D,GAAOkpU,IAAIjoU,EAAOo0D,GAGpB,SAASinV,GAAUr7Y,EAAOo0D,GACxBr1D,GAAOutW,KAAKtsW,EAAOo0D,GAGrB,SAAS2+U,GAAmB/yY,EAAOo0D,GACjC,IAAI8pS,EAAUn/V,GACd,OAAO,SAASu8Y,IACd,IAAIzmS,EAAMzgD,EAAGj3E,MAAM,KAAM3C,WACb,OAARq6H,GACFqpP,EAAQoO,KAAKtsW,EAAOs7Y,IAK1B,SAASF,GACPjnD,EACAjxO,EACAq4R,GAEAx8Y,GAASo1V,EACTy+C,GAAgB1vR,EAAWq4R,GAAgB,GAAIhlY,GAAK8kY,GAAUtI,GAAmB5+C,GACjFp1V,QAASugB,EAGX,SAASk8X,GAAa/7E,GACpB,IAAIg8E,EAAS,SACbh8E,EAAInmV,UAAU2uV,IAAM,SAAUjoU,EAAOo0D,GACnC,IAAI+/R,EAAK/6W,KACT,GAAIN,MAAM21E,QAAQzuD,GAChB,IAAK,IAAI1lB,EAAI,EAAG8sJ,EAAIpnI,EAAMvlB,OAAQH,EAAI8sJ,EAAG9sJ,IACvC65W,EAAGlsB,IAAIjoU,EAAM1lB,GAAI85E,QAGlB+/R,EAAGn2P,QAAQh+F,KAAWm0V,EAAGn2P,QAAQh+F,GAAS,KAAK5gB,KAAKg1E,GAGjDqnV,EAAO/yZ,KAAKsX,KACdm0V,EAAGgnD,eAAgB,GAGvB,OAAOhnD,GAGT10B,EAAInmV,UAAU85W,MAAQ,SAAUpzV,EAAOo0D,GACrC,IAAI+/R,EAAK/6W,KACT,SAASk9U,IACP69B,EAAGmY,KAAKtsW,EAAOs2T,GACfliQ,EAAGj3E,MAAMg3W,EAAI35W,WAIf,OAFA87U,EAAGliQ,GAAKA,EACR+/R,EAAGlsB,IAAIjoU,EAAOs2T,GACP69B,GAGT10B,EAAInmV,UAAUgzX,KAAO,SAAUtsW,EAAOo0D,GACpC,IAAI+/R,EAAK/6W,KAET,IAAKoB,UAAUC,OAEb,OADA05W,EAAGn2P,QAAUrlH,OAAOY,OAAO,MACpB46W,EAGT,GAAIr7W,MAAM21E,QAAQzuD,GAAQ,CACxB,IAAK,IAAI2sX,EAAM,EAAGvlP,EAAIpnI,EAAMvlB,OAAQkyY,EAAMvlP,EAAGulP,IAC3Cx4B,EAAGmY,KAAKtsW,EAAM2sX,GAAMv4T,GAEtB,OAAO+/R,EAGT,IASIjjQ,EATAu7R,EAAMt4B,EAAGn2P,QAAQh+F,GACrB,IAAKysX,EACH,OAAOt4B,EAET,IAAK//R,EAEH,OADA+/R,EAAGn2P,QAAQh+F,GAAS,KACbm0V,EAIT,IAAI75W,EAAImyY,EAAIhyY,OACZ,MAAOH,IAEL,GADA42G,EAAKu7R,EAAInyY,GACL42G,IAAO98B,GAAM88B,EAAG98B,KAAOA,EAAI,CAC7Bq4T,EAAI7iS,OAAOtvG,EAAG,GACd,MAGJ,OAAO65W,GAGT10B,EAAInmV,UAAU8/U,MAAQ,SAAUp5T,GAC9B,IAAIm0V,EAAK/6W,KAaLqzY,EAAMt4B,EAAGn2P,QAAQh+F,GACrB,GAAIysX,EAAK,CACPA,EAAMA,EAAIhyY,OAAS,EAAIkzJ,EAAQ8+O,GAAOA,EAGtC,IAFA,IAAIjhT,EAAOmiE,EAAQnzJ,UAAW,GAC1B0tB,EAAO,sBAAyBlI,EAAQ,IACnC1lB,EAAI,EAAG8sJ,EAAIqlP,EAAIhyY,OAAQH,EAAI8sJ,EAAG9sJ,IACrCu3Z,GAAwBplB,EAAInyY,GAAI65W,EAAI3oR,EAAM2oR,EAAIjsV,GAGlD,OAAOisV,GAMX,IAAIkkD,GAAiB,KAGrB,SAASqD,GAAkBvnD,GACzB,IAAIwnD,EAAqBtD,GAEzB,OADAA,GAAiBlkD,EACV,WACLkkD,GAAiBsD,GAIrB,SAASC,GAAeznD,GACtB,IAAIn5W,EAAUm5W,EAAG/wN,SAGbnrG,EAASj9C,EAAQi9C,OACrB,GAAIA,IAAWj9C,EAAQo+Z,SAAU,CAC/B,MAAOnhX,EAAOmrG,SAASg2Q,UAAYnhX,EAAO8mU,QACxC9mU,EAASA,EAAO8mU,QAElB9mU,EAAO09T,UAAUv2W,KAAK+0W,GAGxBA,EAAG4K,QAAU9mU,EACbk8T,EAAGhxN,MAAQlrG,EAASA,EAAOkrG,MAAQgxN,EAEnCA,EAAGwB,UAAY,GACfxB,EAAG32B,MAAQ,GAEX22B,EAAG0nD,SAAW,KACd1nD,EAAGovB,UAAY,KACfpvB,EAAGg5B,iBAAkB,EACrBh5B,EAAGqkD,YAAa,EAChBrkD,EAAG52B,cAAe,EAClB42B,EAAGy4B,mBAAoB,EAGzB,SAASkvB,GAAgBr8E,GACvBA,EAAInmV,UAAUyia,QAAU,SAAUr3D,EAAOwzD,GACvC,IAAI/jD,EAAK/6W,KACL4ia,EAAS7nD,EAAGj7B,IACZ+iF,EAAY9nD,EAAGgmD,OACf+B,EAAwBR,GAAkBvnD,GAC9CA,EAAGgmD,OAASz1D,EAQVyP,EAAGj7B,IALA+iF,EAKM9nD,EAAGgoD,UAAUF,EAAWv3D,GAHxByP,EAAGgoD,UAAUhoD,EAAGj7B,IAAKwrB,EAAOwzD,GAAW,GAKlDgE,IAEIF,IACFA,EAAOI,QAAU,MAEfjoD,EAAGj7B,MACLi7B,EAAGj7B,IAAIkjF,QAAUjoD,GAGfA,EAAGrxN,QAAUqxN,EAAG4K,SAAW5K,EAAGrxN,SAAWqxN,EAAG4K,QAAQo7C,SACtDhmD,EAAG4K,QAAQ7lC,IAAMi7B,EAAGj7B,MAMxBuG,EAAInmV,UAAUw/X,aAAe,WAC3B,IAAI3kB,EAAK/6W,KACL+6W,EAAG0nD,UACL1nD,EAAG0nD,SAASppT,UAIhBgtO,EAAInmV,UAAU0/W,SAAW,WACvB,IAAI7E,EAAK/6W,KACT,IAAI+6W,EAAGy4B,kBAAP,CAGA6rB,GAAStkD,EAAI,iBACbA,EAAGy4B,mBAAoB,EAEvB,IAAI30V,EAASk8T,EAAG4K,SACZ9mU,GAAWA,EAAO20V,mBAAsBz4B,EAAG/wN,SAASg2Q,UACtD77R,EAAOtlF,EAAO09T,UAAWxB,GAGvBA,EAAG0nD,UACL1nD,EAAG0nD,SAASvgT,WAEd,IAAIhhH,EAAI65W,EAAGkoD,UAAU5ha,OACrB,MAAOH,IACL65W,EAAGkoD,UAAU/ha,GAAGghH,WAId64P,EAAGr6I,MAAM20L,QACXt6C,EAAGr6I,MAAM20L,OAAOM,UAGlB56C,EAAG52B,cAAe,EAElB42B,EAAGgoD,UAAUhoD,EAAGgmD,OAAQ,MAExB1B,GAAStkD,EAAI,aAEbA,EAAGmY,OAECnY,EAAGj7B,MACLi7B,EAAGj7B,IAAIkjF,QAAU,MAGfjoD,EAAGrxN,SACLqxN,EAAGrxN,OAAO7qG,OAAS,QAKzB,SAASqkX,GACPnoD,EACAvmN,EACAsqQ,GAyBA,IAAIqE,EA2CJ,OAlEApoD,EAAGj7B,IAAMtrL,EACJumN,EAAG/wN,SAAShB,SACf+xN,EAAG/wN,SAAShB,OAASgsQ,IAmBvBqK,GAAStkD,EAAI,eAsBXooD,EAAkB,WAChBpoD,EAAG4nD,QAAQ5nD,EAAGruE,UAAWoyH,IAO7B,IAAIsE,GAAQroD,EAAIooD,EAAiBvoV,EAAM,CACrCsvL,OAAQ,WACF6wG,EAAGqkD,aAAerkD,EAAG52B,cACvBk7E,GAAStkD,EAAI,mBAGhB,GACH+jD,GAAY,EAIK,MAAb/jD,EAAGrxN,SACLqxN,EAAGqkD,YAAa,EAChBC,GAAStkD,EAAI,YAERA,EAGT,SAASokD,GACPpkD,EACAyE,EACA11O,EACAk3R,EACAqC,GAYA,IAAIC,EAAiBtC,EAAY5wZ,KAAKu9U,YAClC41E,EAAiBxoD,EAAGz3B,aACpBkgF,KACDF,IAAmBA,EAAehI,SAClCiI,IAAmB5S,IAAgB4S,EAAejI,SAClDgI,GAAkBvoD,EAAGz3B,aAAai4E,OAAS+H,EAAe/H,OACzD+H,GAAkBvoD,EAAGz3B,aAAai4E,MAMlCkI,KACFJ,GACAtoD,EAAG/wN,SAASi3Q,iBACZuC,GAkBF,GAfAzoD,EAAG/wN,SAAS8uP,aAAekoB,EAC3BjmD,EAAGrxN,OAASs3Q,EAERjmD,EAAGgmD,SACLhmD,EAAGgmD,OAAOliX,OAASmiX,GAErBjmD,EAAG/wN,SAASi3Q,gBAAkBoC,EAK9BtoD,EAAGp7B,OAASqhF,EAAY5wZ,KAAKosU,OAASm0E,EACtC51C,EAAG59B,WAAarzM,GAAa6mR,EAGzBnxC,GAAazE,EAAG/wN,SAASv0B,MAAO,CAClCggS,IAAgB,GAGhB,IAFA,IAAIhgS,EAAQslP,EAAGm9C,OACXwL,EAAW3oD,EAAG/wN,SAAS25Q,WAAa,GAC/Bzia,EAAI,EAAGA,EAAIwia,EAASria,OAAQH,IAAK,CACxC,IAAI0a,EAAM8nZ,EAASxia,GACfy2Z,EAAc58C,EAAG/wN,SAASv0B,MAC9BA,EAAM75G,GAAO87Y,GAAa97Y,EAAK+7Y,EAAan4C,EAAWzE,GAEzD06C,IAAgB,GAEhB16C,EAAG/wN,SAASw1N,UAAYA,EAI1B11O,EAAYA,GAAa6mR,EACzB,IAAIwR,EAAepnD,EAAG/wN,SAASm3Q,iBAC/BpmD,EAAG/wN,SAASm3Q,iBAAmBr3R,EAC/Bk4R,GAAyBjnD,EAAIjxO,EAAWq4R,GAGpCsB,IACF1oD,EAAG3+B,OAAS0+E,GAAauI,EAAgBrC,EAAY3qT,SACrD0kQ,EAAG2kB,gBAQP,SAASkkC,GAAkB7oD,GACzB,MAAOA,IAAOA,EAAKA,EAAG4K,SACpB,GAAI5K,EAAGovB,UAAa,OAAO,EAE7B,OAAO,EAGT,SAASo1B,GAAwBxkD,EAAI8oD,GACnC,GAAIA,GAEF,GADA9oD,EAAGg5B,iBAAkB,EACjB6vB,GAAiB7oD,GACnB,YAEG,GAAIA,EAAGg5B,gBACZ,OAEF,GAAIh5B,EAAGovB,WAA8B,OAAjBpvB,EAAGovB,UAAoB,CACzCpvB,EAAGovB,WAAY,EACf,IAAK,IAAIjpY,EAAI,EAAGA,EAAI65W,EAAGwB,UAAUl7W,OAAQH,IACvCq+Z,GAAuBxkD,EAAGwB,UAAUr7W,IAEtCm+Z,GAAStkD,EAAI,cAIjB,SAASykD,GAA0BzkD,EAAI8oD,GACrC,KAAIA,IACF9oD,EAAGg5B,iBAAkB,GACjB6vB,GAAiB7oD,OAIlBA,EAAGovB,UAAW,CACjBpvB,EAAGovB,WAAY,EACf,IAAK,IAAIjpY,EAAI,EAAGA,EAAI65W,EAAGwB,UAAUl7W,OAAQH,IACvCs+Z,GAAyBzkD,EAAGwB,UAAUr7W,IAExCm+Z,GAAStkD,EAAI,gBAIjB,SAASskD,GAAUtkD,EAAI//P,GAErBs5S,KACA,IAAI93S,EAAWu+P,EAAG/wN,SAAShvC,GACvBlsF,EAAOksF,EAAO,QAClB,GAAIwB,EACF,IAAK,IAAIt7G,EAAI,EAAG2F,EAAI21G,EAASn7G,OAAQH,EAAI2F,EAAG3F,IAC1Cu3Z,GAAwBj8S,EAASt7G,GAAI65W,EAAI,KAAMA,EAAIjsV,GAGnDisV,EAAGgnD,eACLhnD,EAAG/6B,MAAM,QAAUhlO,GAErBu5S,KAKF,IAEIxgU,GAAQ,GACR+vU,GAAoB,GACpBj7Y,GAAM,GAENi6G,IAAU,EACVihS,IAAW,EACXzxX,GAAQ,EAKZ,SAAS0xX,KACP1xX,GAAQyhD,GAAM1yF,OAASyia,GAAkBzia,OAAS,EAClDwnB,GAAM,GAINi6G,GAAUihS,IAAW,EAQvB,IAAIE,GAAwB,EAGxBC,GAAS11Y,KAAKkC,IAQlB,GAAIm1Q,IAActlP,GAAM,CACtB,IAAIypB,GAAc7lD,OAAO6lD,YAEvBA,IAC2B,oBAApBA,GAAYt5C,KACnBwzY,KAAWvuX,SAASsmC,YAAY,SAASkoV,YAMzCD,GAAS,WAAc,OAAOl6V,GAAYt5C,QAO9C,SAAS0zY,KAGP,IAAIC,EAASp+X,EAcb,IAhBAg+X,GAAwBC,KACxBH,IAAW,EAWXhwU,GAAM3tE,MAAK,SAAUxf,EAAGhH,GAAK,OAAOgH,EAAEq/B,GAAKrmC,EAAEqmC,MAIxCqM,GAAQ,EAAGA,GAAQyhD,GAAM1yF,OAAQixC,KACpC+xX,EAAUtwU,GAAMzhD,IACZ+xX,EAAQn6J,QACVm6J,EAAQn6J,SAEVjkO,EAAKo+X,EAAQp+X,GACbpd,GAAIod,GAAM,KACVo+X,EAAQznT,MAmBV,IAAI0nT,EAAiBR,GAAkBv3X,QACnCg4X,EAAexwU,GAAMxnD,QAEzBy3X,KAGAQ,GAAmBF,GACnBG,GAAiBF,GAIb18B,IAAY7hV,EAAO6hV,UACrBA,GAAS1iN,KAAK,SAIlB,SAASs/O,GAAkB1wU,GACzB,IAAI7yF,EAAI6yF,EAAM1yF,OACd,MAAOH,IAAK,CACV,IAAImja,EAAUtwU,EAAM7yF,GAChB65W,EAAKspD,EAAQtpD,GACbA,EAAG0nD,WAAa4B,GAAWtpD,EAAGqkD,aAAerkD,EAAG52B,cAClDk7E,GAAStkD,EAAI,YASnB,SAASukD,GAAyBvkD,GAGhCA,EAAGovB,WAAY,EACf25B,GAAkB99Z,KAAK+0W,GAGzB,SAASypD,GAAoBzwU,GAC3B,IAAK,IAAI7yF,EAAI,EAAGA,EAAI6yF,EAAM1yF,OAAQH,IAChC6yF,EAAM7yF,GAAGipY,WAAY,EACrBo1B,GAAuBxrU,EAAM7yF,IAAI,GASrC,SAASwja,GAAcL,GACrB,IAAIp+X,EAAKo+X,EAAQp+X,GACjB,GAAe,MAAXpd,GAAIod,GAAa,CAEnB,GADApd,GAAIod,IAAM,EACL89X,GAEE,CAGL,IAAI7ia,EAAI6yF,GAAM1yF,OAAS,EACvB,MAAOH,EAAIoxC,IAASyhD,GAAM7yF,GAAG+kC,GAAKo+X,EAAQp+X,GACxC/kC,IAEF6yF,GAAMyc,OAAOtvG,EAAI,EAAG,EAAGmja,QARvBtwU,GAAM/tF,KAAKq+Z,GAWRvhS,KACHA,IAAU,EAMVyrC,GAAS61P,MASf,IAAIO,GAAQ,EAORvB,GAAU,SACZroD,EACA6pD,EACA9sT,EACAl2G,EACAija,GAEA7ka,KAAK+6W,GAAKA,EACN8pD,IACF9pD,EAAG0nD,SAAWzia,MAEhB+6W,EAAGkoD,UAAUj9Z,KAAKhG,MAEd4B,GACF5B,KAAKmkG,OAASviG,EAAQuiG,KACtBnkG,KAAKgzH,OAASpxH,EAAQoxH,KACtBhzH,KAAKmqX,OAASvoX,EAAQuoX,KACtBnqX,KAAK83X,OAASl2X,EAAQk2X,KACtB93X,KAAKkqQ,OAAStoQ,EAAQsoQ,QAEtBlqQ,KAAKmkG,KAAOnkG,KAAKgzH,KAAOhzH,KAAKmqX,KAAOnqX,KAAK83X,MAAO,EAElD93X,KAAK83G,GAAKA,EACV93G,KAAKimC,KAAO0+X,GACZ3ka,KAAKw+N,QAAS,EACdx+N,KAAK4tM,MAAQ5tM,KAAKmqX,KAClBnqX,KAAK26M,KAAO,GACZ36M,KAAK8ka,QAAU,GACf9ka,KAAK+ka,OAAS,IAAIjR,GAClB9zZ,KAAKgla,UAAY,IAAIlR,GACrB9zZ,KAAKmoU,WAED,GAEmB,oBAAZy8F,EACT5ka,KAAKohK,OAASwjQ,GAEd5ka,KAAKohK,OAASg7N,EAAUwoC,GACnB5ka,KAAKohK,SACRphK,KAAKohK,OAASxmF,IASlB56E,KAAKsE,MAAQtE,KAAKmqX,UACdjkV,EACAlmC,KAAK0B,OAMX0ha,GAAQlja,UAAUwB,IAAM,WAEtB,IAAI4C,EADJgwZ,GAAWt0Z,MAEX,IAAI+6W,EAAK/6W,KAAK+6W,GACd,IACEz2W,EAAQtE,KAAKohK,OAAOzgK,KAAKo6W,EAAIA,GAC7B,MAAOr2W,IACP,IAAI1E,KAAKgzH,KAGP,MAAMtuH,GAFN4zZ,GAAY5zZ,GAAGq2W,EAAK,uBAA2B/6W,KAAe,WAAI,KAIpE,QAGIA,KAAKmkG,MACP80T,GAAS30Z,GAEXiwZ,KACAv0Z,KAAKila,cAEP,OAAO3ga,GAMT8+Z,GAAQlja,UAAUk0Z,OAAS,SAAiB1hC,GAC1C,IAAIzsV,EAAKysV,EAAIzsV,GACRjmC,KAAKgla,UAAUn8Y,IAAIod,KACtBjmC,KAAKgla,UAAU7nY,IAAI8I,GACnBjmC,KAAK8ka,QAAQ9+Z,KAAK0sX,GACb1yX,KAAK+ka,OAAOl8Y,IAAIod,IACnBysV,EAAIuhC,OAAOj0Z,QAQjBoja,GAAQlja,UAAU+ka,YAAc,WAC9B,IAAI/ja,EAAIlB,KAAK26M,KAAKt5M,OAClB,MAAOH,IAAK,CACV,IAAIwxX,EAAM1yX,KAAK26M,KAAKz5M,GACflB,KAAKgla,UAAUn8Y,IAAI6pW,EAAIzsV,KAC1BysV,EAAIwhC,UAAUl0Z,MAGlB,IAAIsvF,EAAMtvF,KAAK+ka,OACf/ka,KAAK+ka,OAAS/ka,KAAKgla,UACnBhla,KAAKgla,UAAY11U,EACjBtvF,KAAKgla,UAAUl8Y,QACfwmE,EAAMtvF,KAAK26M,KACX36M,KAAK26M,KAAO36M,KAAK8ka,QACjB9ka,KAAK8ka,QAAUx1U,EACftvF,KAAK8ka,QAAQzja,OAAS,GAOxB+ha,GAAQlja,UAAUm5G,OAAS,WAErBr5G,KAAKmqX,KACPnqX,KAAK4tM,OAAQ,EACJ5tM,KAAK83X,KACd93X,KAAK48G,MAEL8nT,GAAa1ka,OAQjBoja,GAAQlja,UAAU08G,IAAM,WACtB,GAAI58G,KAAKw+N,OAAQ,CACf,IAAIl6N,EAAQtE,KAAK0B,MACjB,GACE4C,IAAUtE,KAAKsE,OAIf00E,EAAS10E,IACTtE,KAAKmkG,KACL,CAEA,IAAIngD,EAAWhkD,KAAKsE,MAEpB,GADAtE,KAAKsE,MAAQA,EACTtE,KAAKgzH,KAAM,CACb,IAAIlkG,EAAO,yBAA6B9uB,KAAe,WAAI,IAC3Dy4Z,GAAwBz4Z,KAAK83G,GAAI93G,KAAK+6W,GAAI,CAACz2W,EAAO0/C,GAAWhkD,KAAK+6W,GAAIjsV,QAEtE9uB,KAAK83G,GAAGn3G,KAAKX,KAAK+6W,GAAIz2W,EAAO0/C,MAUrCo/W,GAAQlja,UAAU2wQ,SAAW,WAC3B7wQ,KAAKsE,MAAQtE,KAAK0B,MAClB1B,KAAK4tM,OAAQ,GAMfw1N,GAAQlja,UAAUi0Z,OAAS,WACzB,IAAIjzZ,EAAIlB,KAAK26M,KAAKt5M,OAClB,MAAOH,IACLlB,KAAK26M,KAAKz5M,GAAGizZ,UAOjBiP,GAAQlja,UAAUgiH,SAAW,WAC3B,GAAIliH,KAAKw+N,OAAQ,CAIVx+N,KAAK+6W,GAAGy4B,mBACXrvQ,EAAOnkI,KAAK+6W,GAAGkoD,UAAWjja,MAE5B,IAAIkB,EAAIlB,KAAK26M,KAAKt5M,OAClB,MAAOH,IACLlB,KAAK26M,KAAKz5M,GAAGgzZ,UAAUl0Z,MAEzBA,KAAKw+N,QAAS,IAMlB,IAAI0mM,GAA2B,CAC7B72X,YAAY,EACZC,cAAc,EACd5sC,IAAKk5E,EACLjyD,IAAKiyD,GAGP,SAASb,GAAOp0D,EAAQw/Y,EAAWvpZ,GACjCspZ,GAAyBxja,IAAM,WAC7B,OAAO1B,KAAKmla,GAAWvpZ,IAEzBspZ,GAAyBv8Y,IAAM,SAAsBuW,GACnDl/B,KAAKmla,GAAWvpZ,GAAOsjB,GAEzB3/B,OAAO6uC,eAAezoB,EAAQ/J,EAAKspZ,IAGrC,SAASE,GAAWrqD,GAClBA,EAAGkoD,UAAY,GACf,IAAIjuQ,EAAO+lN,EAAG/wN,SACVgL,EAAKv/B,OAAS4vS,GAAUtqD,EAAI/lN,EAAKv/B,OACjCu/B,EAAK95E,SAAWoqV,GAAYvqD,EAAI/lN,EAAK95E,SACrC85E,EAAK5kJ,KACPm1Z,GAASxqD,GAETtsM,GAAQssM,EAAGr6I,MAAQ,IAAI,GAErB1rE,EAAK84F,UAAY03K,GAAazqD,EAAI/lN,EAAK84F,UACvC94F,EAAKuuL,OAASvuL,EAAKuuL,QAAUkwE,IAC/BgS,GAAU1qD,EAAI/lN,EAAKuuL,OAIvB,SAAS8hF,GAAWtqD,EAAI2qD,GACtB,IAAIlmD,EAAYzE,EAAG/wN,SAASw1N,WAAa,GACrC/pP,EAAQslP,EAAGm9C,OAAS,GAGpBr1Z,EAAOk4W,EAAG/wN,SAAS25Q,UAAY,GAC/BgC,GAAU5qD,EAAG4K,QAEZggD,GACHlQ,IAAgB,GAElB,IAAI5vI,EAAO,SAAWjqQ,GACpB/Y,EAAKmD,KAAK4V,GACV,IAAItX,EAAQozZ,GAAa97Y,EAAK8pZ,EAAclmD,EAAWzE,GAuBrDi7C,GAAkBvgS,EAAO75G,EAAKtX,GAK1BsX,KAAOm/V,GACXhhS,GAAMghS,EAAI,SAAUn/V,IAIxB,IAAK,IAAIA,KAAO8pZ,EAAc7/I,EAAMjqQ,GACpC65Y,IAAgB,GAGlB,SAAS8P,GAAUxqD,GACjB,IAAI3qW,EAAO2qW,EAAG/wN,SAAS55I,KACvBA,EAAO2qW,EAAGr6I,MAAwB,oBAATtwN,EACrB6vP,GAAQ7vP,EAAM2qW,GACd3qW,GAAQ,GACP6vF,EAAc7vF,KACjBA,EAAO,IAQT,IAAIvN,EAAOtD,OAAOsD,KAAKuN,GACnBqlH,EAAQslP,EAAG/wN,SAASv0B,MAEpBv0H,GADU65W,EAAG/wN,SAAS9uE,QAClBr4E,EAAKxB,QACb,MAAOH,IAAK,CACV,IAAI0a,EAAM/Y,EAAK3B,GACX,EAQAu0H,GAASiqC,EAAOjqC,EAAO75G,IAMfk3Y,EAAWl3Y,IACrBm+D,GAAMghS,EAAI,QAASn/V,GAIvB6yJ,GAAQr+J,GAAM,GAGhB,SAAS6vP,GAAS7vP,EAAM2qW,GAEtBu5C,KACA,IACE,OAAOlkZ,EAAKzP,KAAKo6W,EAAIA,GACrB,MAAOr2W,IAEP,OADA4zZ,GAAY5zZ,GAAGq2W,EAAI,UACZ,GACP,QACAw5C,MAIJ,IAAIqR,GAAyB,CAAEz7C,MAAM,GAErC,SAASq7C,GAAczqD,EAAIjtH,GAEzB,IAAI+3K,EAAW9qD,EAAG+qD,kBAAoBvma,OAAOY,OAAO,MAEhDmuY,EAAQqlB,KAEZ,IAAK,IAAI/3Y,KAAOkyO,EAAU,CACxB,IAAIi4K,EAAUj4K,EAASlyO,GACnBwlJ,EAA4B,oBAAZ2kQ,EAAyBA,EAAUA,EAAQrka,IAC3D,EAOC4sY,IAEHu3B,EAASjqZ,GAAO,IAAIwnZ,GAClBroD,EACA35M,GAAUxmF,EACVA,EACAgrV,KAOEhqZ,KAAOm/V,GACXirD,GAAejrD,EAAIn/V,EAAKmqZ,IAa9B,SAASC,GACPrgZ,EACA/J,EACAmqZ,GAEA,IAAIE,GAAetS,KACI,oBAAZoS,GACTb,GAAyBxja,IAAMuka,EAC3BC,GAAqBtqZ,GACrBuqZ,GAAoBJ,GACxBb,GAAyBv8Y,IAAMiyD,IAE/BsqV,GAAyBxja,IAAMqka,EAAQrka,IACnCuka,IAAiC,IAAlBF,EAAQt9Y,MACrBy9Y,GAAqBtqZ,GACrBuqZ,GAAoBJ,EAAQrka,KAC9Bk5E,EACJsqV,GAAyBv8Y,IAAMo9Y,EAAQp9Y,KAAOiyD,GAWhDr7E,OAAO6uC,eAAezoB,EAAQ/J,EAAKspZ,IAGrC,SAASgB,GAAsBtqZ,GAC7B,OAAO,WACL,IAAIyoZ,EAAUrka,KAAK8la,mBAAqB9la,KAAK8la,kBAAkBlqZ,GAC/D,GAAIyoZ,EAOF,OANIA,EAAQz2N,OACVy2N,EAAQxzJ,WAENkjJ,GAAIpuY,QACN0+Y,EAAQlQ,SAEHkQ,EAAQ//Z,OAKrB,SAAS6ha,GAAoBnrV,GAC3B,OAAO,WACL,OAAOA,EAAGr6E,KAAKX,KAAMA,OAIzB,SAASsla,GAAavqD,EAAI7/R,GACZ6/R,EAAG/wN,SAASv0B,MACxB,IAAK,IAAI75G,KAAOs/D,EAsBd6/R,EAAGn/V,GAA+B,oBAAjBs/D,EAAQt/D,GAAsBg/D,EAAOv3B,EAAK63B,EAAQt/D,GAAMm/V,GAI7E,SAAS0qD,GAAW1qD,EAAIx3B,GACtB,IAAK,IAAI3nU,KAAO2nU,EAAO,CACrB,IAAI7mO,EAAU6mO,EAAM3nU,GACpB,GAAIlc,MAAM21E,QAAQqnC,GAChB,IAAK,IAAIx7G,EAAI,EAAGA,EAAIw7G,EAAQr7G,OAAQH,IAClCkla,GAAcrrD,EAAIn/V,EAAK8gG,EAAQx7G,SAGjCkla,GAAcrrD,EAAIn/V,EAAK8gG,IAK7B,SAAS0pT,GACPrrD,EACA6pD,EACAloT,EACA96G,GASA,OAPIq+F,EAAcyc,KAChB96G,EAAU86G,EACVA,EAAUA,EAAQA,SAEG,kBAAZA,IACTA,EAAUq+P,EAAGr+P,IAERq+P,EAAGnV,OAAOg/D,EAASloT,EAAS96G,GAGrC,SAASyka,GAAYhgF,GAInB,IAAIigF,EAAU,CACdA,IAAc,WAAc,OAAOtma,KAAK0gO,QACpC6lM,EAAW,CACfA,IAAe,WAAc,OAAOvma,KAAKk4Z,SAazC34Z,OAAO6uC,eAAei4S,EAAInmV,UAAW,QAASoma,GAC9C/ma,OAAO6uC,eAAei4S,EAAInmV,UAAW,SAAUqma,GAE/ClgF,EAAInmV,UAAUs6L,KAAO7xK,GACrB09T,EAAInmV,UAAUy7W,QAAUjtR,GAExB23P,EAAInmV,UAAU0lW,OAAS,SACrBg/D,EACA9sT,EACAl2G,GAEA,IAAIm5W,EAAK/6W,KACT,GAAIigG,EAAc6X,GAChB,OAAOsuT,GAAcrrD,EAAI6pD,EAAS9sT,EAAIl2G,GAExCA,EAAUA,GAAW,GACrBA,EAAQoxH,MAAO,EACf,IAAIqxS,EAAU,IAAIjB,GAAQroD,EAAI6pD,EAAS9sT,EAAIl2G,GAC3C,GAAIA,EAAQ88V,UAAW,CACrB,IAAI5vU,EAAO,mCAAuCu1Y,EAAkB,WAAI,IACxE/P,KACAmE,GAAwB3gT,EAAIijQ,EAAI,CAACspD,EAAQ//Z,OAAQy2W,EAAIjsV,GACrDylY,KAEF,OAAO,WACL8P,EAAQniT,aAOd,IAAIskT,GAAQ,EAEZ,SAASC,GAAWpgF,GAClBA,EAAInmV,UAAUwma,MAAQ,SAAU9ka,GAC9B,IAAIm5W,EAAK/6W,KAET+6W,EAAGlvB,KAAO26E,KAWVzrD,EAAG6J,QAAS,EAERhjX,GAAWA,EAAQs+Z,aAIrByG,GAAsB5rD,EAAIn5W,GAE1Bm5W,EAAG/wN,SAAWmtQ,GACZ2I,GAA0B/kD,EAAG96W,aAC7B2B,GAAW,GACXm5W,GAOFA,EAAGmiD,aAAeniD,EAGpBA,EAAGtnR,MAAQsnR,EACXynD,GAAcznD,GACd+mD,GAAW/mD,GACX+lD,GAAW/lD,GACXskD,GAAStkD,EAAI,gBACb2/C,GAAe3/C,GACfqqD,GAAUrqD,GACVy/C,GAAYz/C,GACZskD,GAAStkD,EAAI,WASTA,EAAG/wN,SAASwK,IACdumN,EAAG0E,OAAO1E,EAAG/wN,SAASwK,KAK5B,SAASmyQ,GAAuB5rD,EAAIn5W,GAClC,IAAIozJ,EAAO+lN,EAAG/wN,SAAWzqJ,OAAOY,OAAO46W,EAAG96W,YAAY2B,SAElDo/Z,EAAcp/Z,EAAQk3Y,aAC1B9jP,EAAKn2G,OAASj9C,EAAQi9C,OACtBm2G,EAAK8jP,aAAekoB,EAEpB,IAAI4F,EAAwB5F,EAAYplE,iBACxC5mM,EAAKwqN,UAAYonD,EAAsBpnD,UACvCxqN,EAAKmsQ,iBAAmByF,EAAsB98R,UAC9CkrB,EAAKisQ,gBAAkB2F,EAAsBryT,SAC7CygD,EAAKoxN,cAAgBwgD,EAAsB5qQ,IAEvCp6J,EAAQonJ,SACVgM,EAAKhM,OAASpnJ,EAAQonJ,OACtBgM,EAAK/L,gBAAkBrnJ,EAAQqnJ,iBAInC,SAAS62Q,GAA2B5gK,GAClC,IAAIt9P,EAAUs9P,EAAKt9P,QACnB,GAAIs9P,EAAKlnL,MAAO,CACd,IAAI6uV,EAAe/G,GAA0B5gK,EAAKlnL,OAC9C8uV,EAAqB5nK,EAAK2nK,aAC9B,GAAIA,IAAiBC,EAAoB,CAGvC5nK,EAAK2nK,aAAeA,EAEpB,IAAIE,EAAkBC,GAAuB9nK,GAEzC6nK,GACF55Q,EAAO+xG,EAAK+nK,cAAeF,GAE7Bnla,EAAUs9P,EAAKt9P,QAAUu1Z,GAAa0P,EAAc3nK,EAAK+nK,eACrDrla,EAAQyR,OACVzR,EAAQ6sC,WAAW7sC,EAAQyR,MAAQ6rP,IAIzC,OAAOt9P,EAGT,SAASola,GAAwB9nK,GAC/B,IAAIgoK,EACAC,EAASjoK,EAAKt9P,QACdwla,EAASloK,EAAKmoK,cAClB,IAAK,IAAIzrZ,KAAOurZ,EACVA,EAAOvrZ,KAASwrZ,EAAOxrZ,KACpBsrZ,IAAYA,EAAW,IAC5BA,EAAStrZ,GAAOurZ,EAAOvrZ,IAG3B,OAAOsrZ,EAGT,SAAS7gF,GAAKzkV,GAMZ5B,KAAK0ma,MAAM9ka,GAWb,SAAS0la,GAASjhF,GAChBA,EAAIj2L,IAAM,SAAUz7C,GAClB,IAAI4yT,EAAoBvna,KAAKwna,oBAAsBxna,KAAKwna,kBAAoB,IAC5E,GAAID,EAAiBrsZ,QAAQy5F,IAAW,EACtC,OAAO30G,KAIT,IAAIoyF,EAAOmiE,EAAQnzJ,UAAW,GAQ9B,OAPAgxF,EAAKk9D,QAAQtvJ,MACiB,oBAAnB20G,EAAO+5P,QAChB/5P,EAAO+5P,QAAQ3qW,MAAM4wG,EAAQviB,GACF,oBAAXuiB,GAChBA,EAAO5wG,MAAM,KAAMquF,GAErBm1U,EAAiBvha,KAAK2uG,GACf30G,MAMX,SAASyna,GAAaphF,GACpBA,EAAIh0E,MAAQ,SAAUA,GAEpB,OADAryQ,KAAK4B,QAAUu1Z,GAAan3Z,KAAK4B,QAASywQ,GACnCryQ,MAMX,SAAS0na,GAAYrhF,GAMnBA,EAAI8/B,IAAM,EACV,IAAIA,EAAM,EAKV9/B,EAAIl5L,OAAS,SAAU85Q,GACrBA,EAAgBA,GAAiB,GACjC,IAAIU,EAAQ3na,KACR4na,EAAUD,EAAMxhD,IAChB0hD,EAAcZ,EAAc/hB,QAAU+hB,EAAc/hB,MAAQ,IAChE,GAAI2iB,EAAYD,GACd,OAAOC,EAAYD,GAGrB,IAAIv0Z,EAAO4zZ,EAAc5zZ,MAAQs0Z,EAAM/la,QAAQyR,KAK/C,IAAIy0Z,EAAM,SAAuBlma,GAC/B5B,KAAK0ma,MAAM9ka,IA6Cb,OA3CAkma,EAAI5na,UAAYX,OAAOY,OAAOwna,EAAMzna,WACpC4na,EAAI5na,UAAUD,YAAc6na,EAC5BA,EAAI3hD,IAAMA,IACV2hD,EAAIlma,QAAUu1Z,GACZwQ,EAAM/la,QACNqla,GAEFa,EAAI,SAAWH,EAKXG,EAAIlma,QAAQ6zH,OACdsyS,GAAYD,GAEVA,EAAIlma,QAAQksP,UACdk6K,GAAeF,GAIjBA,EAAI36Q,OAASw6Q,EAAMx6Q,OACnB26Q,EAAIz1J,MAAQs1J,EAAMt1J,MAClBy1J,EAAI13Q,IAAMu3Q,EAAMv3Q,IAIhB4hQ,EAAYlvZ,SAAQ,SAAUoqB,GAC5B46Y,EAAI56Y,GAAQy6Y,EAAMz6Y,MAGhB7Z,IACFy0Z,EAAIlma,QAAQ6sC,WAAWp7B,GAAQy0Z,GAMjCA,EAAIjB,aAAec,EAAM/la,QACzBkma,EAAIb,cAAgBA,EACpBa,EAAIT,cAAgBl6Q,EAAO,GAAI26Q,EAAIlma,SAGnCima,EAAYD,GAAWE,EAChBA,GAIX,SAASC,GAAaE,GACpB,IAAIxyS,EAAQwyS,EAAKrma,QAAQ6zH,MACzB,IAAK,IAAI75G,KAAO65G,EACd17C,GAAMkuV,EAAK/na,UAAW,SAAU0b,GAIpC,SAASosZ,GAAgBC,GACvB,IAAIn6K,EAAWm6K,EAAKrma,QAAQksP,SAC5B,IAAK,IAAIlyO,KAAOkyO,EACdk4K,GAAeiC,EAAK/na,UAAW0b,EAAKkyO,EAASlyO,IAMjD,SAASssZ,GAAoB7hF,GAI3B2rE,EAAYlvZ,SAAQ,SAAUoqB,GAC5Bm5T,EAAIn5T,GAAQ,SACV+Y,EACAkiY,GAEA,OAAKA,GAOU,cAATj7Y,GAAwB+yE,EAAckoU,KACxCA,EAAW90Z,KAAO80Z,EAAW90Z,MAAQ4yB,EACrCkiY,EAAanoa,KAAK4B,QAAQolH,MAAMmmC,OAAOg7Q,IAE5B,cAATj7Y,GAA8C,oBAAfi7Y,IACjCA,EAAa,CAAE9kX,KAAM8kX,EAAY9uT,OAAQ8uT,IAE3Cnoa,KAAK4B,QAAQsrB,EAAO,KAAK+Y,GAAMkiY,EACxBA,GAdAnoa,KAAK4B,QAAQsrB,EAAO,KAAK+Y,OA0BxC,SAASmiY,GAAkBpzQ,GACzB,OAAOA,IAASA,EAAKkqG,KAAKt9P,QAAQyR,MAAQ2hJ,EAAKgH,KAGjD,SAAS5hJ,GAASiC,EAAShJ,GACzB,OAAI3T,MAAM21E,QAAQh5D,GACTA,EAAQnB,QAAQ7H,IAAS,EACJ,kBAAZgJ,EACTA,EAAQjF,MAAM,KAAK8D,QAAQ7H,IAAS,IAClC24J,EAAS3vJ,IACXA,EAAQ/M,KAAK+D,GAMxB,SAASg1Z,GAAYC,EAAmBpsZ,GACtC,IAAIuM,EAAQ6/Y,EAAkB7/Y,MAC1B5lB,EAAOyla,EAAkBzla,KACzBk+Z,EAASuH,EAAkBvH,OAC/B,IAAK,IAAInlZ,KAAO6M,EAAO,CACrB,IAAIzM,EAAQyM,EAAM7M,GAClB,GAAII,EAAO,CACT,IAAI3I,EAAO2I,EAAM3I,KACbA,IAAS6I,EAAO7I,IAClBk1Z,GAAgB9/Y,EAAO7M,EAAK/Y,EAAMk+Z,KAM1C,SAASwH,GACP9/Y,EACA7M,EACA/Y,EACAovB,GAEA,IAAIjW,EAAQyM,EAAM7M,IACdI,GAAWiW,GAAWjW,EAAMggJ,MAAQ/pI,EAAQ+pI,KAC9ChgJ,EAAMg/V,kBAAkB4E,WAE1Bn3V,EAAM7M,GAAO,KACbuoH,EAAOthI,EAAM+Y,GAjNf6qZ,GAAUpgF,IACVggF,GAAWhgF,IACX+7E,GAAY/7E,IACZq8E,GAAer8E,IACfg7E,GAAYh7E,IAgNZ,IAAImiF,GAAe,CAAC73Z,OAAQ4L,OAAQ7c,OAEhC+oa,GAAY,CACdp1Z,KAAM,aACN2sZ,UAAU,EAEVvqS,MAAO,CACLkwN,QAAS6iF,GACTvmD,QAASumD,GACT3oW,IAAK,CAAClvD,OAAQy3B,SAGhB8yC,QAAS,CACPwtV,WAAY,WACV,IAAInjF,EAAMvlV,KACNyoB,EAAQ88T,EAAI98T,MACZ5lB,EAAO0iV,EAAI1iV,KACX8la,EAAepjF,EAAIojF,aACnBC,EAAarjF,EAAIqjF,WACrB,GAAID,EAAc,CAChB,IAAI3sQ,EAAM2sQ,EAAa3sQ,IACnBg/M,EAAoB2tD,EAAa3tD,kBACjCpf,EAAmB+sE,EAAa/sE,iBACpCnzU,EAAMmgZ,GAAc,CAClBv1Z,KAAM+0Z,GAAiBxsE,GACvB5/L,IAAKA,EACLg/M,kBAAmBA,GAErBn4W,EAAKmD,KAAK4ia,GAEN5oa,KAAK6/D,KAAOh9D,EAAKxB,OAAS4jD,SAASjlD,KAAK6/D,MAC1C0oW,GAAgB9/Y,EAAO5lB,EAAK,GAAIA,EAAM7C,KAAK+ga,QAE7C/ga,KAAK2oa,aAAe,QAK1BlpF,QAAS,WACPz/U,KAAKyoB,MAAQlpB,OAAOY,OAAO,MAC3BH,KAAK6C,KAAO,IAGdohO,UAAW,WACT,IAAK,IAAIroN,KAAO5b,KAAKyoB,MACnB8/Y,GAAgBvoa,KAAKyoB,MAAO7M,EAAK5b,KAAK6C,OAI1CmnV,QAAS,WACP,IAAI+yC,EAAS/8X,KAEbA,KAAK0oa,aACL1oa,KAAK4lW,OAAO,WAAW,SAAU1mU,GAC/BmpY,GAAWtrC,GAAQ,SAAU1pX,GAAQ,OAAO+G,GAAQ8kB,EAAK7rB,SAE3DrT,KAAK4lW,OAAO,WAAW,SAAU1mU,GAC/BmpY,GAAWtrC,GAAQ,SAAU1pX,GAAQ,OAAQ+G,GAAQ8kB,EAAK7rB,UAI9Dg8S,QAAS,WACPrvT,KAAK0oa,cAGP1/Q,OAAQ,WACN,IAAIyhM,EAAOzqV,KAAKo8U,OAAO7/I,QACnB+uK,EAAQu2D,GAAuBp3E,GAC/BmR,EAAmB0P,GAASA,EAAM1P,iBACtC,GAAIA,EAAkB,CAEpB,IAAIvoV,EAAO+0Z,GAAiBxsE,GACxBrW,EAAMvlV,KACN2lV,EAAUJ,EAAII,QACds8B,EAAU18B,EAAI08B,QAClB,GAEGt8B,KAAatyU,IAAS+G,GAAQurU,EAAStyU,KAEvC4uW,GAAW5uW,GAAQ+G,GAAQ6nW,EAAS5uW,GAErC,OAAOi4V,EAGT,IAAIouB,EAAQ15X,KACRyoB,EAAQixW,EAAMjxW,MACd5lB,EAAO62X,EAAM72X,KACb+Y,EAAmB,MAAb0vV,EAAM1vV,IAGZggV,EAAiB18F,KAAKinH,KAAOvqB,EAAiB5/L,IAAO,KAAQ4/L,EAAoB,IAAK,IACtF0P,EAAM1vV,IACN6M,EAAM7M,IACR0vV,EAAM0P,kBAAoBvyV,EAAM7M,GAAKo/V,kBAErC72O,EAAOthI,EAAM+Y,GACb/Y,EAAKmD,KAAK4V,KAGV5b,KAAK2oa,aAAer9D,EACpBtrW,KAAK4oa,WAAahtZ,GAGpB0vV,EAAMl7V,KAAK0jY,WAAY,EAEzB,OAAOxoC,GAAU7gB,GAAQA,EAAK,KAI9Bo+E,GAAoB,CACtBJ,UAAWA,IAKb,SAASK,GAAeziF,GAEtB,IAAI0iF,EAAY,CAChBA,IAAgB,WAAc,OAAO/iX,IAQrCzmD,OAAO6uC,eAAei4S,EAAK,SAAU0iF,GAKrC1iF,EAAI2yD,KAAO,CACT9jP,KAAMA,GACN/H,OAAQA,EACRgqQ,aAAcA,GACdle,eAAgB+c,IAGlB3vE,EAAI19T,IAAMA,GACV09T,EAAIrkV,OAAS0sF,GACb23P,EAAI93K,SAAWA,GAGf83K,EAAI6oB,WAAa,SAAUp0V,GAEzB,OADA2zJ,GAAQ3zJ,GACDA,GAGTurU,EAAIzkV,QAAUrC,OAAOY,OAAO,MAC5B6xZ,EAAYlvZ,SAAQ,SAAUoqB,GAC5Bm5T,EAAIzkV,QAAQsrB,EAAO,KAAO3tB,OAAOY,OAAO,SAK1CkmV,EAAIzkV,QAAQolH,MAAQq/N,EAEpBl5L,EAAOk5L,EAAIzkV,QAAQ6sC,WAAYo6X,IAE/BvB,GAAQjhF,GACRohF,GAAYphF,GACZqhF,GAAWrhF,GACX6hF,GAAmB7hF,GAGrByiF,GAAcziF,IAEd9mV,OAAO6uC,eAAei4S,GAAInmV,UAAW,YAAa,CAChDwB,IAAKiyZ,KAGPp0Z,OAAO6uC,eAAei4S,GAAInmV,UAAW,cAAe,CAClDwB,IAAK,WAEH,OAAO1B,KAAK0pJ,QAAU1pJ,KAAK0pJ,OAAOC,cAKtCpqJ,OAAO6uC,eAAei4S,GAAK,0BAA2B,CACpD/hV,MAAO65Z,KAGT93E,GAAI9/T,QAAU,SAMd,IAAIgsY,GAAiBpB,EAAQ,eAGzB6X,GAAc7X,EAAQ,yCACtBwB,GAAc,SAAU32P,EAAK9uI,EAAMwiL,GACrC,MACY,UAATA,GAAoBs5N,GAAYhtQ,IAAkB,WAAT9uI,GAChC,aAATwiL,GAA+B,WAAR1zC,GACd,YAAT0zC,GAA8B,UAAR1zC,GACb,UAAT0zC,GAA4B,UAAR1zC,GAIrBitQ,GAAmB9X,EAAQ,wCAE3B+X,GAA8B/X,EAAQ,sCAEtCgY,GAAyB,SAAUvtZ,EAAKtX,GAC1C,OAAO8ka,GAAiB9ka,IAAoB,UAAVA,EAC9B,QAEQ,oBAARsX,GAA6BstZ,GAA4B5ka,GACvDA,EACA,QAGJsqY,GAAgBuiB,EAClB,8XAQEkY,GAAU,+BAEVC,GAAU,SAAUj2Z,GACtB,MAA0B,MAAnBA,EAAKyiC,OAAO,IAAmC,UAArBziC,EAAKk5B,MAAM,EAAG,IAG7Cg9X,GAAe,SAAUl2Z,GAC3B,OAAOi2Z,GAAQj2Z,GAAQA,EAAKk5B,MAAM,EAAGl5B,EAAKhS,QAAU,IAGlD+na,GAAmB,SAAUlqY,GAC/B,OAAc,MAAPA,IAAuB,IAARA,GAKxB,SAASsqY,GAAkBl+D,GACzB,IAAIl7V,EAAOk7V,EAAMl7V,KACb26D,EAAaugS,EACbm+D,EAAYn+D,EAChB,MAAOqtC,EAAM8wB,EAAUzuD,mBACrByuD,EAAYA,EAAUzuD,kBAAkB+lD,OACpC0I,GAAaA,EAAUr5Z,OACzBA,EAAOs5Z,GAAeD,EAAUr5Z,KAAMA,IAG1C,MAAOuoY,EAAM5tU,EAAaA,EAAWlsB,QAC/BksB,GAAcA,EAAW36D,OAC3BA,EAAOs5Z,GAAet5Z,EAAM26D,EAAW36D,OAG3C,OAAOu5Z,GAAYv5Z,EAAK+rU,YAAa/rU,EAAKisU,OAG5C,SAASqtF,GAAgBrtD,EAAOx9T,GAC9B,MAAO,CACLs9R,YAAa31U,GAAO61W,EAAMlgC,YAAat9R,EAAOs9R,aAC9CE,MAAOs8D,EAAMt8B,EAAMhgC,OACf,CAACggC,EAAMhgC,MAAOx9R,EAAOw9R,OACrBx9R,EAAOw9R,OAIf,SAASstF,GACPxtF,EACAytF,GAEA,OAAIjxB,EAAMx8D,IAAgBw8D,EAAMixB,GACvBpja,GAAO21U,EAAa0tF,GAAeD,IAGrC,GAGT,SAASpja,GAAQI,EAAGhH,GAClB,OAAOgH,EAAIhH,EAAKgH,EAAI,IAAMhH,EAAKgH,EAAKhH,GAAK,GAG3C,SAASiqa,GAAgBvla,GACvB,OAAI5E,MAAM21E,QAAQ/wE,GACTwla,GAAexla,GAEpB00E,EAAS10E,GACJyla,GAAgBzla,GAEJ,kBAAVA,EACFA,EAGF,GAGT,SAASwla,GAAgBxla,GAGvB,IAFA,IACI0la,EADAvuS,EAAM,GAEDv6H,EAAI,EAAG8sJ,EAAI1pJ,EAAMjD,OAAQH,EAAI8sJ,EAAG9sJ,IACnCy3Y,EAAMqxB,EAAcH,GAAevla,EAAMpD,MAAwB,KAAhB8oa,IAC/CvuS,IAAOA,GAAO,KAClBA,GAAOuuS,GAGX,OAAOvuS,EAGT,SAASsuS,GAAiBzla,GACxB,IAAIm3H,EAAM,GACV,IAAK,IAAI7/G,KAAOtX,EACVA,EAAMsX,KACJ6/G,IAAOA,GAAO,KAClBA,GAAO7/G,GAGX,OAAO6/G,EAKT,IAAIwuS,GAAe,CACjB/jO,IAAK,6BACL2qF,KAAM,sCAGJq5I,GAAY/Y,EACd,snBAeEgZ,GAAQhZ,EACV,kNAGA,GAGEmB,GAAgB,SAAUt2P,GAC5B,OAAOkuQ,GAAUluQ,IAAQmuQ,GAAMnuQ,IAGjC,SAASy2P,GAAiBz2P,GACxB,OAAImuQ,GAAMnuQ,GACD,MAIG,SAARA,EACK,YADT,EAKF,IAAIouQ,GAAsB7qa,OAAOY,OAAO,MACxC,SAASqyZ,GAAkBx2P,GAEzB,IAAK6pI,EACH,OAAO,EAET,GAAIysH,GAAct2P,GAChB,OAAO,EAIT,GAFAA,EAAMA,EAAIxnI,cAEsB,MAA5B41Y,GAAoBpuQ,GACtB,OAAOouQ,GAAoBpuQ,GAE7B,IAAIxH,EAAK7+G,SAAS40B,cAAcyxF,GAChC,OAAIA,EAAI9gJ,QAAQ,MAAQ,EAEdkvZ,GAAoBpuQ,GAC1BxH,EAAGv0J,cAAgBkkB,OAAOkmZ,oBAC1B71Q,EAAGv0J,cAAgBkkB,OAAO0gW,YAGpBulD,GAAoBpuQ,GAAO,qBAAqB1sJ,KAAKklJ,EAAGjmJ,YAIpE,IAAI+7Z,GAAkBnZ,EAAQ,6CAO9B,SAAS71Y,GAAOk5I,GACd,GAAkB,kBAAPA,EAAiB,CAC1B,IAAIqsM,EAAWlrT,SAASmkS,cAActlL,GACtC,OAAKqsM,GAIIlrT,SAAS40B,cAAc,OAIhC,OAAOiqF,EAMX,SAAS+1Q,GAAiBp9N,EAASm+J,GACjC,IAAI78J,EAAM94J,SAAS40B,cAAc4iI,GACjC,MAAgB,WAAZA,GAIAm+J,EAAMl7V,MAAQk7V,EAAMl7V,KAAKosU,YAAuCt2S,IAA9BolU,EAAMl7V,KAAKosU,MAAM0R,UACrDz/I,EAAI7jI,aAAa,WAAY,YAJtB6jI,EASX,SAAS0tE,GAAiBtzG,EAAWskC,GACnC,OAAOx3J,SAASwmO,gBAAgB8tJ,GAAaphQ,GAAYskC,GAG3D,SAAS3+B,GAAgBv7E,GACvB,OAAOt9C,SAAS64H,eAAev7E,GAGjC,SAASu3U,GAAev3U,GACtB,OAAOt9C,SAAS60X,cAAcv3U,GAGhC,SAASi7G,GAAcnjI,EAAY0/V,EAASC,GAC1C3/V,EAAWmjI,aAAau8N,EAASC,GAGnC,SAAS1/V,GAAa2iG,EAAM0uM,GAC1B1uM,EAAK3iG,YAAYqxS,GAGnB,SAASvxS,GAAa6iG,EAAM0uM,GAC1B1uM,EAAK7iG,YAAYuxS,GAGnB,SAAStxS,GAAY4iG,GACnB,OAAOA,EAAK5iG,WAGd,SAAS+xS,GAAanvM,GACpB,OAAOA,EAAKmvM,YAGd,SAAS3vK,GAASx/B,GAChB,OAAOA,EAAKw/B,QAGd,SAASw9N,GAAgBh9P,EAAM16E,GAC7B06E,EAAKghC,YAAc17G,EAGrB,SAAS23U,GAAej9P,EAAMvkB,GAC5BukB,EAAK/iG,aAAaw+E,EAAS,IAG7B,IAAIyhR,GAAuBtra,OAAO4iL,OAAO,CACvC53G,cAAeggW,GACfpuJ,gBAAiBA,GACjB3tG,eAAgBA,GAChBg8P,cAAeA,GACft8N,aAAcA,GACdljI,YAAaA,GACbF,YAAaA,GACbC,WAAYA,GACZ+xS,YAAaA,GACb3vK,QAASA,GACTw9N,eAAgBA,GAChBC,cAAeA,KAKbrlF,GAAM,CACRplV,OAAQ,SAAiBiF,EAAGkmW,GAC1Bw/D,GAAYx/D,IAEdjyP,OAAQ,SAAiB6lT,EAAU5zD,GAC7B4zD,EAAS9uZ,KAAKm1U,MAAQ+lB,EAAMl7V,KAAKm1U,MACnCulF,GAAY5L,GAAU,GACtB4L,GAAYx/D,KAGhBnoF,QAAS,SAAkBmoF,GACzBw/D,GAAYx/D,GAAO,KAIvB,SAASw/D,GAAax/D,EAAOy/D,GAC3B,IAAInvZ,EAAM0vV,EAAMl7V,KAAKm1U,IACrB,GAAKozD,EAAM/8X,GAAX,CAEA,IAAIm/V,EAAKzP,EAAMj1P,QACXkvO,EAAM+lB,EAAM0P,mBAAqB1P,EAAM78J,IACvCilL,EAAO3Y,EAAG32B,MACV2mF,EACErra,MAAM21E,QAAQq+S,EAAK93W,IACrBuoH,EAAOuvP,EAAK93W,GAAM2pU,GACTmuC,EAAK93W,KAAS2pU,IACvBmuC,EAAK93W,QAAOsqB,GAGVolU,EAAMl7V,KAAK46Z,SACRtra,MAAM21E,QAAQq+S,EAAK93W,IAEb83W,EAAK93W,GAAKV,QAAQqqU,GAAO,GAElCmuC,EAAK93W,GAAK5V,KAAKu/U,GAHfmuC,EAAK93W,GAAO,CAAC2pU,GAMfmuC,EAAK93W,GAAO2pU,GAiBlB,IAAI0lF,GAAY,IAAIx6E,GAAM,GAAI,GAAI,IAE9B71O,GAAQ,CAAC,SAAU,WAAY,SAAU,SAAU,WAEvD,SAASswT,GAAWtka,EAAGhH,GACrB,OACEgH,EAAEgV,MAAQhc,EAAEgc,KACZhV,EAAE4tZ,eAAiB50Z,EAAE40Z,eAEjB5tZ,EAAEo1J,MAAQp8J,EAAEo8J,KACZp1J,EAAE8pV,YAAc9wV,EAAE8wV,WAClBioD,EAAM/xY,EAAEwJ,QAAUuoY,EAAM/4Y,EAAEwQ,OAC1B+6Z,GAAcvka,EAAGhH,IAEjBixZ,EAAOjqZ,EAAEmuZ,qBACTnE,EAAQhxZ,EAAE40Z,aAAaluZ,QAM/B,SAAS6ka,GAAevka,EAAGhH,GACzB,GAAc,UAAVgH,EAAEo1J,IAAmB,OAAO,EAChC,IAAI96J,EACAkqa,EAAQzyB,EAAMz3Y,EAAI0F,EAAEwJ,OAASuoY,EAAMz3Y,EAAIA,EAAEs7U,QAAUt7U,EAAEgsB,KACrDm+Y,EAAQ1yB,EAAMz3Y,EAAItB,EAAEwQ,OAASuoY,EAAMz3Y,EAAIA,EAAEs7U,QAAUt7U,EAAEgsB,KACzD,OAAOk+Y,IAAUC,GAASf,GAAgBc,IAAUd,GAAgBe,GAGtE,SAASC,GAAmB/2T,EAAUg3T,EAAUC,GAC9C,IAAItqa,EAAG0a,EACHG,EAAM,GACV,IAAK7a,EAAIqqa,EAAUrqa,GAAKsqa,IAAUtqa,EAChC0a,EAAM24F,EAASrzG,GAAG0a,IACd+8X,EAAM/8X,KAAQG,EAAIH,GAAO1a,GAE/B,OAAO6a,EAGT,SAAS0vZ,GAAqBC,GAC5B,IAAIxqa,EAAG2F,EACHwsY,EAAM,GAENs4B,EAAUD,EAAQC,QAClBd,EAAUa,EAAQb,QAEtB,IAAK3pa,EAAI,EAAGA,EAAI05G,GAAMv5G,SAAUH,EAE9B,IADAmyY,EAAIz4R,GAAM15G,IAAM,GACX2F,EAAI,EAAGA,EAAI8ka,EAAQtqa,SAAUwF,EAC5B8xY,EAAMgzB,EAAQ9ka,GAAG+zG,GAAM15G,MACzBmyY,EAAIz4R,GAAM15G,IAAI8E,KAAK2la,EAAQ9ka,GAAG+zG,GAAM15G,KAK1C,SAAS0qa,EAAan9N,GACpB,OAAO,IAAIgiJ,GAAMo6E,EAAQ19N,QAAQsB,GAAKj6K,cAAe,GAAI,QAAI0R,EAAWuoK,GAG1E,SAASo9N,EAAYC,EAAUhiS,GAC7B,SAAS4vR,IACuB,MAAxBA,EAAU5vR,WACdiiS,EAAWD,GAIf,OADApS,EAAU5vR,UAAYA,EACf4vR,EAGT,SAASqS,EAAYv3Q,GACnB,IAAI31G,EAASgsX,EAAQ9/V,WAAWypF,GAE5BmkP,EAAM95V,IACRgsX,EAAQ7/V,YAAYnsB,EAAQ21G,GAsBhC,SAASw3Q,EACP1gE,EACA2gE,EACAC,EACAC,EACA/xK,EACAgyK,EACA95X,GAYA,GAVIqmW,EAAMrtC,EAAM78J,MAAQkqM,EAAMyzB,KAM5B9gE,EAAQ8gE,EAAW95X,GAAS4iX,GAAW5pD,IAGzCA,EAAMqpD,cAAgBv6J,GAClBslK,EAAgBp0D,EAAO2gE,EAAoBC,EAAWC,GAA1D,CAIA,IAAI/7Z,EAAOk7V,EAAMl7V,KACbmkG,EAAW+2P,EAAM/2P,SACjBynD,EAAMsvM,EAAMtvM,IACZ28O,EAAM38O,IAeRsvM,EAAM78J,IAAM68J,EAAM74Q,GACdo4U,EAAQ1uJ,gBAAgBmvF,EAAM74Q,GAAIupE,GAClC6uQ,EAAQtgW,cAAcyxF,EAAKsvM,GAC/B+gE,EAAS/gE,GAIPghE,EAAehhE,EAAO/2P,EAAU03T,GAC5BtzB,EAAMvoY,IACRm8Z,EAAkBjhE,EAAO2gE,GAE3B7kD,EAAO8kD,EAAW5gE,EAAM78J,IAAK09N,IAMtBtb,EAAOvlD,EAAM5a,YACtB4a,EAAM78J,IAAMo8N,EAAQL,cAAcl/D,EAAMr4Q,MACxCm0R,EAAO8kD,EAAW5gE,EAAM78J,IAAK09N,KAE7B7gE,EAAM78J,IAAMo8N,EAAQr8P,eAAe88L,EAAMr4Q,MACzCm0R,EAAO8kD,EAAW5gE,EAAM78J,IAAK09N,KAIjC,SAASzM,EAAiBp0D,EAAO2gE,EAAoBC,EAAWC,GAC9D,IAAIjra,EAAIoqW,EAAMl7V,KACd,GAAIuoY,EAAMz3Y,GAAI,CACZ,IAAIsra,EAAgB7zB,EAAMrtC,EAAM0P,oBAAsB95W,EAAE4yY,UAQxD,GAPI6E,EAAMz3Y,EAAIA,EAAE85G,OAAS29R,EAAMz3Y,EAAIA,EAAEq8H,OACnCr8H,EAAEoqW,GAAO,GAMPqtC,EAAMrtC,EAAM0P,mBAMd,OALAyxD,EAAcnhE,EAAO2gE,GACrB7kD,EAAO8kD,EAAW5gE,EAAM78J,IAAK09N,GACzBtb,EAAO2b,IACTE,EAAoBphE,EAAO2gE,EAAoBC,EAAWC,IAErD,GAKb,SAASM,EAAenhE,EAAO2gE,GACzBtzB,EAAMrtC,EAAMl7V,KAAKu8Z,iBACnBV,EAAmBjma,KAAKjC,MAAMkoa,EAAoB3gE,EAAMl7V,KAAKu8Z,eAC7DrhE,EAAMl7V,KAAKu8Z,cAAgB,MAE7BrhE,EAAM78J,IAAM68J,EAAM0P,kBAAkBl7B,IAChC8sF,EAAYthE,IACdihE,EAAkBjhE,EAAO2gE,GACzBI,EAAS/gE,KAITw/D,GAAYx/D,GAEZ2gE,EAAmBjma,KAAKslW,IAI5B,SAASohE,EAAqBphE,EAAO2gE,EAAoBC,EAAWC,GAClE,IAAIjra,EAKA2ra,EAAYvhE,EAChB,MAAOuhE,EAAU7xD,kBAEf,GADA6xD,EAAYA,EAAU7xD,kBAAkB+lD,OACpCpoB,EAAMz3Y,EAAI2ra,EAAUz8Z,OAASuoY,EAAMz3Y,EAAIA,EAAEs4U,YAAa,CACxD,IAAKt4U,EAAI,EAAGA,EAAImyY,EAAI9mH,SAASlrR,SAAUH,EACrCmyY,EAAI9mH,SAASrrR,GAAG+pa,GAAW4B,GAE7BZ,EAAmBjma,KAAK6ma,GACxB,MAKJzlD,EAAO8kD,EAAW5gE,EAAM78J,IAAK09N,GAG/B,SAAS/kD,EAAQvoU,EAAQ4vJ,EAAKq+N,GACxBn0B,EAAM95V,KACJ85V,EAAMm0B,GACJjC,EAAQ9/V,WAAW+hW,KAAYjuX,GACjCgsX,EAAQ38N,aAAarvJ,EAAQ4vJ,EAAKq+N,GAGpCjC,EAAQ//V,YAAYjsB,EAAQ4vJ,IAKlC,SAAS69N,EAAgBhhE,EAAO/2P,EAAU03T,GACxC,GAAIvsa,MAAM21E,QAAQk/B,GAAW,CACvB,EAGJ,IAAK,IAAIrzG,EAAI,EAAGA,EAAIqzG,EAASlzG,SAAUH,EACrC8qa,EAAUz3T,EAASrzG,GAAI+qa,EAAoB3gE,EAAM78J,IAAK,MAAM,EAAMl6F,EAAUrzG,QAErE6vZ,EAAYzlD,EAAMr4Q,OAC3B43U,EAAQ//V,YAAYwgS,EAAM78J,IAAKo8N,EAAQr8P,eAAe79J,OAAO26V,EAAMr4Q,QAIvE,SAAS25U,EAAathE,GACpB,MAAOA,EAAM0P,kBACX1P,EAAQA,EAAM0P,kBAAkB+lD,OAElC,OAAOpoB,EAAMrtC,EAAMtvM,KAGrB,SAASuwQ,EAAmBjhE,EAAO2gE,GACjC,IAAK,IAAI14B,EAAM,EAAGA,EAAMF,EAAIlzY,OAAOkB,SAAUkyY,EAC3CF,EAAIlzY,OAAOozY,GAAK03B,GAAW3/D,GAE7BpqW,EAAIoqW,EAAMl7V,KAAK4qG,KACX29R,EAAMz3Y,KACJy3Y,EAAMz3Y,EAAEf,SAAWe,EAAEf,OAAO8qa,GAAW3/D,GACvCqtC,EAAMz3Y,EAAEkmX,SAAW6kD,EAAmBjma,KAAKslW,IAOnD,SAAS+gE,EAAU/gE,GACjB,IAAIpqW,EACJ,GAAIy3Y,EAAMz3Y,EAAIoqW,EAAMopD,WAClBmW,EAAQD,cAAct/D,EAAM78J,IAAKvtM,OAC5B,CACL,IAAI6ra,EAAWzhE,EACf,MAAOyhE,EACDp0B,EAAMz3Y,EAAI6ra,EAAS12T,UAAYsiS,EAAMz3Y,EAAIA,EAAE8oJ,SAASP,WACtDohR,EAAQD,cAAct/D,EAAM78J,IAAKvtM,GAEnC6ra,EAAWA,EAASluX,OAIpB85V,EAAMz3Y,EAAI+9Z,KACZ/9Z,IAAMoqW,EAAMj1P,SACZn1G,IAAMoqW,EAAMmpD,WACZ9b,EAAMz3Y,EAAIA,EAAE8oJ,SAASP,WAErBohR,EAAQD,cAAct/D,EAAM78J,IAAKvtM,GAIrC,SAAS8ra,EAAWd,EAAWC,EAAQvN,EAAQqO,EAAUzB,EAAQS,GAC/D,KAAOgB,GAAYzB,IAAUyB,EAC3BjB,EAAUpN,EAAOqO,GAAWhB,EAAoBC,EAAWC,GAAQ,EAAOvN,EAAQqO,GAItF,SAASC,EAAmB5hE,GAC1B,IAAIpqW,EAAG2F,EACHuJ,EAAOk7V,EAAMl7V,KACjB,GAAIuoY,EAAMvoY,GAER,IADIuoY,EAAMz3Y,EAAIkP,EAAK4qG,OAAS29R,EAAMz3Y,EAAIA,EAAEiiR,UAAYjiR,EAAEoqW,GACjDpqW,EAAI,EAAGA,EAAImyY,EAAIlwH,QAAQ9hR,SAAUH,EAAKmyY,EAAIlwH,QAAQjiR,GAAGoqW,GAE5D,GAAIqtC,EAAMz3Y,EAAIoqW,EAAM/2P,UAClB,IAAK1tG,EAAI,EAAGA,EAAIykW,EAAM/2P,SAASlzG,SAAUwF,EACvCqma,EAAkB5hE,EAAM/2P,SAAS1tG,IAKvC,SAASsma,EAAcvO,EAAQqO,EAAUzB,GACvC,KAAOyB,GAAYzB,IAAUyB,EAAU,CACrC,IAAIxjQ,EAAKm1P,EAAOqO,GACZt0B,EAAMlvO,KACJkvO,EAAMlvO,EAAGzN,MACXoxQ,EAA0B3jQ,GAC1ByjQ,EAAkBzjQ,IAElBsiQ,EAAWtiQ,EAAGglC,OAMtB,SAAS2+N,EAA2B9hE,EAAOjvP,GACzC,GAAIs8R,EAAMt8R,IAAOs8R,EAAMrtC,EAAMl7V,MAAO,CAClC,IAAIlP,EACA4oI,EAAYupQ,EAAIlvQ,OAAO9iI,OAAS,EAapC,IAZIs3Y,EAAMt8R,GAGRA,EAAGytB,WAAaA,EAGhBztB,EAAKwvT,EAAWvgE,EAAM78J,IAAK3kE,GAGzB6uQ,EAAMz3Y,EAAIoqW,EAAM0P,oBAAsB29B,EAAMz3Y,EAAIA,EAAE6/Z,SAAWpoB,EAAMz3Y,EAAEkP,OACvEg9Z,EAA0Blsa,EAAGm7G,GAE1Bn7G,EAAI,EAAGA,EAAImyY,EAAIlvQ,OAAO9iI,SAAUH,EACnCmyY,EAAIlvQ,OAAOjjI,GAAGoqW,EAAOjvP,GAEnBs8R,EAAMz3Y,EAAIoqW,EAAMl7V,KAAK4qG,OAAS29R,EAAMz3Y,EAAIA,EAAEijI,QAC5CjjI,EAAEoqW,EAAOjvP,GAETA,SAGF0vT,EAAWzgE,EAAM78J,KAIrB,SAAS4+N,EAAgBnB,EAAWoB,EAAOC,EAAOtB,EAAoBuB,GACpE,IAQIC,EAAaC,EAAUC,EAAaxB,EARpCyB,EAAc,EACdC,EAAc,EACdC,EAAYR,EAAMjsa,OAAS,EAC3B0sa,EAAgBT,EAAM,GACtBU,EAAcV,EAAMQ,GACpBG,EAAYV,EAAMlsa,OAAS,EAC3B6sa,EAAgBX,EAAM,GACtBY,EAAcZ,EAAMU,GAMpBG,GAAWZ,EAMf,MAAOI,GAAeE,GAAaD,GAAeI,EAC5Crd,EAAQmd,GACVA,EAAgBT,IAAQM,GACfhd,EAAQod,GACjBA,EAAcV,IAAQQ,GACb5C,GAAU6C,EAAeG,IAClCG,EAAWN,EAAeG,EAAejC,EAAoBsB,EAAOM,GACpEE,EAAgBT,IAAQM,GACxBM,EAAgBX,IAAQM,IACf3C,GAAU8C,EAAaG,IAChCE,EAAWL,EAAaG,EAAalC,EAAoBsB,EAAOU,GAChED,EAAcV,IAAQQ,GACtBK,EAAcZ,IAAQU,IACb/C,GAAU6C,EAAeI,IAClCE,EAAWN,EAAeI,EAAalC,EAAoBsB,EAAOU,GAClEG,GAAWvD,EAAQ38N,aAAag+N,EAAW6B,EAAct/N,IAAKo8N,EAAQ/tD,YAAYkxD,EAAYv/N,MAC9Fs/N,EAAgBT,IAAQM,GACxBO,EAAcZ,IAAQU,IACb/C,GAAU8C,EAAaE,IAChCG,EAAWL,EAAaE,EAAejC,EAAoBsB,EAAOM,GAClEO,GAAWvD,EAAQ38N,aAAag+N,EAAW8B,EAAYv/N,IAAKs/N,EAAct/N,KAC1Eu/N,EAAcV,IAAQQ,GACtBI,EAAgBX,IAAQM,KAEpBjd,EAAQ6c,KAAgBA,EAAcnC,GAAkBgC,EAAOM,EAAaE,IAChFJ,EAAW/0B,EAAMu1B,EAActyZ,KAC3B6xZ,EAAYS,EAActyZ,KAC1B0yZ,EAAaJ,EAAeZ,EAAOM,EAAaE,GAChDld,EAAQ8c,GACV1B,EAAUkC,EAAejC,EAAoBC,EAAW6B,EAAct/N,KAAK,EAAO8+N,EAAOM,IAEzFF,EAAcL,EAAMI,GAChBxC,GAAUyC,EAAaO,IACzBG,EAAWV,EAAaO,EAAejC,EAAoBsB,EAAOM,GAClEP,EAAMI,QAAYxnY,EAClBkoY,GAAWvD,EAAQ38N,aAAag+N,EAAWyB,EAAYl/N,IAAKs/N,EAAct/N,MAG1Eu9N,EAAUkC,EAAejC,EAAoBC,EAAW6B,EAAct/N,KAAK,EAAO8+N,EAAOM,IAG7FK,EAAgBX,IAAQM,IAGxBD,EAAcE,GAChB3B,EAASvb,EAAQ2c,EAAMU,EAAY,IAAM,KAAOV,EAAMU,EAAY,GAAGx/N,IACrEu+N,EAAUd,EAAWC,EAAQoB,EAAOM,EAAaI,EAAWhC,IACnD4B,EAAcI,GACvBd,EAAaG,EAAOM,EAAaE,GAsBrC,SAASQ,EAAc3gQ,EAAM2/P,EAAOnmV,EAAOC,GACzC,IAAK,IAAIlmF,EAAIimF,EAAOjmF,EAAIkmF,EAAKlmF,IAAK,CAChC,IAAI+yE,EAAIq5V,EAAMpsa,GACd,GAAIy3Y,EAAM1kU,IAAMi3V,GAAUv9P,EAAM15F,GAAM,OAAO/yE,GAIjD,SAASmta,EACPnP,EACA5zD,EACA2gE,EACAG,EACA95X,EACAk7X,GAEA,GAAItO,IAAa5zD,EAAjB,CAIIqtC,EAAMrtC,EAAM78J,MAAQkqM,EAAMyzB,KAE5B9gE,EAAQ8gE,EAAW95X,GAAS4iX,GAAW5pD,IAGzC,IAAI78J,EAAM68J,EAAM78J,IAAMywN,EAASzwN,IAE/B,GAAIoiN,EAAOqO,EAASnK,oBACdpc,EAAMrtC,EAAMkpD,aAAanhC,UAC3Bk7C,EAAQrP,EAASzwN,IAAK68J,EAAO2gE,GAE7B3gE,EAAMypD,oBAAqB,OAS/B,GAAIlE,EAAOvlD,EAAM4sC,WACf2Y,EAAOqO,EAAShnB,WAChB5sC,EAAM1vV,MAAQsjZ,EAAStjZ,MACtBi1Y,EAAOvlD,EAAMspD,WAAa/D,EAAOvlD,EAAMupD,SAExCvpD,EAAM0P,kBAAoBkkD,EAASlkD,sBALrC,CASA,IAAI95W,EACAkP,EAAOk7V,EAAMl7V,KACbuoY,EAAMvoY,IAASuoY,EAAMz3Y,EAAIkP,EAAK4qG,OAAS29R,EAAMz3Y,EAAIA,EAAEozY,WACrDpzY,EAAEg+Z,EAAU5zD,GAGd,IAAIgiE,EAAQpO,EAAS3qT,SACjBk1D,EAAK6hM,EAAM/2P,SACf,GAAIokS,EAAMvoY,IAASw8Z,EAAYthE,GAAQ,CACrC,IAAKpqW,EAAI,EAAGA,EAAImyY,EAAIh6R,OAAOh4G,SAAUH,EAAKmyY,EAAIh6R,OAAOn4G,GAAGg+Z,EAAU5zD,GAC9DqtC,EAAMz3Y,EAAIkP,EAAK4qG,OAAS29R,EAAMz3Y,EAAIA,EAAEm4G,SAAWn4G,EAAEg+Z,EAAU5zD,GAE7DslD,EAAQtlD,EAAMr4Q,MACZ0lT,EAAM20B,IAAU30B,EAAMlvO,GACpB6jQ,IAAU7jQ,GAAM4jQ,EAAe5+N,EAAK6+N,EAAO7jQ,EAAIwiQ,EAAoBuB,GAC9D70B,EAAMlvO,IAIXkvO,EAAMumB,EAASjsU,OAAS43U,EAAQF,eAAel8N,EAAK,IACxDu+N,EAAUv+N,EAAK,KAAMhlC,EAAI,EAAGA,EAAGpoK,OAAS,EAAG4qa,IAClCtzB,EAAM20B,GACfH,EAAaG,EAAO,EAAGA,EAAMjsa,OAAS,GAC7Bs3Y,EAAMumB,EAASjsU,OACxB43U,EAAQF,eAAel8N,EAAK,IAErBywN,EAASjsU,OAASq4Q,EAAMr4Q,MACjC43U,EAAQF,eAAel8N,EAAK68J,EAAMr4Q,MAEhC0lT,EAAMvoY,IACJuoY,EAAMz3Y,EAAIkP,EAAK4qG,OAAS29R,EAAMz3Y,EAAIA,EAAEsta,YAActta,EAAEg+Z,EAAU5zD,KAItE,SAASmjE,EAAkBnjE,EAAOv3Q,EAAOgyK,GAGvC,GAAI8qJ,EAAO9qJ,IAAY4yI,EAAMrtC,EAAMzsT,QACjCysT,EAAMzsT,OAAOzuC,KAAKu8Z,cAAgB54U,OAElC,IAAK,IAAI7yF,EAAI,EAAGA,EAAI6yF,EAAM1yF,SAAUH,EAClC6yF,EAAM7yF,GAAGkP,KAAK4qG,KAAKosQ,OAAOrzR,EAAM7yF,IAKtC,IAKIwta,EAAmBvd,EAAQ,2CAG/B,SAASod,EAAS9/N,EAAK68J,EAAO2gE,EAAoB0C,GAChD,IAAIzta,EACA86J,EAAMsvM,EAAMtvM,IACZ5rJ,EAAOk7V,EAAMl7V,KACbmkG,EAAW+2P,EAAM/2P,SAIrB,GAHAo6T,EAASA,GAAWv+Z,GAAQA,EAAK65R,IACjCqhE,EAAM78J,IAAMA,EAERoiN,EAAOvlD,EAAM5a,YAAcioD,EAAMrtC,EAAMkpD,cAEzC,OADAlpD,EAAMypD,oBAAqB,GACpB,EAQT,GAAIpc,EAAMvoY,KACJuoY,EAAMz3Y,EAAIkP,EAAK4qG,OAAS29R,EAAMz3Y,EAAIA,EAAEq8H,OAASr8H,EAAEoqW,GAAO,GACtDqtC,EAAMz3Y,EAAIoqW,EAAM0P,oBAGlB,OADAyxD,EAAcnhE,EAAO2gE,IACd,EAGX,GAAItzB,EAAM38O,GAAM,CACd,GAAI28O,EAAMpkS,GAER,GAAKk6F,EAAIS,gBAIP,GAAIypM,EAAMz3Y,EAAIkP,IAASuoY,EAAMz3Y,EAAIA,EAAEu7U,WAAak8D,EAAMz3Y,EAAIA,EAAE+sM,YAC1D,GAAI/sM,IAAMutM,EAAIR,UAWZ,OAAO,MAEJ,CAIL,IAFA,IAAI2gO,GAAgB,EAChBnF,EAAYh7N,EAAIoC,WACX0iM,EAAM,EAAGA,EAAMh/R,EAASlzG,OAAQkyY,IAAO,CAC9C,IAAKk2B,IAAc8E,EAAQ9E,EAAWl1T,EAASg/R,GAAM04B,EAAoB0C,GAAS,CAChFC,GAAgB,EAChB,MAEFnF,EAAYA,EAAU3sD,YAIxB,IAAK8xD,GAAiBnF,EAUpB,OAAO,OAxCX6C,EAAehhE,EAAO/2P,EAAU03T,GA6CpC,GAAItzB,EAAMvoY,GAAO,CACf,IAAIy+Z,GAAa,EACjB,IAAK,IAAIjzZ,KAAOxL,EACd,IAAKs+Z,EAAiB9yZ,GAAM,CAC1BizZ,GAAa,EACbtC,EAAkBjhE,EAAO2gE,GACzB,OAGC4C,GAAcz+Z,EAAK,UAEtB6oZ,GAAS7oZ,EAAK,gBAGTq+L,EAAIr+L,OAASk7V,EAAMr4Q,OAC5Bw7G,EAAIr+L,KAAOk7V,EAAMr4Q,MAEnB,OAAO,EAcT,OAAO,SAAgBisU,EAAU5zD,EAAOwzD,EAAW0O,GACjD,IAAI5c,EAAQtlD,GAAZ,CAKA,IAAIwjE,GAAiB,EACjB7C,EAAqB,GAEzB,GAAIrb,EAAQsO,GAEV4P,GAAiB,EACjB9C,EAAU1gE,EAAO2gE,OACZ,CACL,IAAI8C,EAAgBp2B,EAAMumB,EAASx3N,UACnC,IAAKqnO,GAAiB7D,GAAUhM,EAAU5zD,GAExC+iE,EAAWnP,EAAU5zD,EAAO2gE,EAAoB,KAAM,KAAMuB,OACvD,CACL,GAAIuB,EAAe,CAQjB,GAJ0B,IAAtB7P,EAASx3N,UAAkBw3N,EAASh4N,aAAa6qN,KACnDmN,EAASxxN,gBAAgBqkN,GACzB+M,GAAY,GAEVjO,EAAOiO,IACLyP,EAAQrP,EAAU5zD,EAAO2gE,GAE3B,OADAwC,EAAiBnjE,EAAO2gE,GAAoB,GACrC/M,EAaXA,EAAW0M,EAAY1M,GAIzB,IAAI8P,EAAS9P,EAASzwN,IAClBy9N,EAAYrB,EAAQ9/V,WAAWikW,GAcnC,GAXAhD,EACE1gE,EACA2gE,EAIA+C,EAAOC,SAAW,KAAO/C,EACzBrB,EAAQ/tD,YAAYkyD,IAIlBr2B,EAAMrtC,EAAMzsT,QAAS,CACvB,IAAIkuX,EAAWzhE,EAAMzsT,OACjBqwX,EAAYtC,EAAYthE,GAC5B,MAAOyhE,EAAU,CACf,IAAK,IAAI7ra,EAAI,EAAGA,EAAImyY,EAAIlwH,QAAQ9hR,SAAUH,EACxCmyY,EAAIlwH,QAAQjiR,GAAG6ra,GAGjB,GADAA,EAASt+N,IAAM68J,EAAM78J,IACjBygO,EAAW,CACb,IAAK,IAAI37B,EAAM,EAAGA,EAAMF,EAAIlzY,OAAOkB,SAAUkyY,EAC3CF,EAAIlzY,OAAOozY,GAAK03B,GAAW8B,GAK7B,IAAI3lD,EAAS2lD,EAAS38Z,KAAK4qG,KAAKosQ,OAChC,GAAIA,EAAOvxN,OAET,IAAK,IAAIs5Q,EAAM,EAAGA,EAAM/nD,EAAO11N,IAAIrwJ,OAAQ8ta,IACzC/nD,EAAO11N,IAAIy9Q,UAIfrE,GAAYiC,GAEdA,EAAWA,EAASluX,QAKpB85V,EAAMuzB,GACRiB,EAAa,CAACjO,GAAW,EAAG,GACnBvmB,EAAMumB,EAASljQ,MACxBkxQ,EAAkBhO,IAMxB,OADAuP,EAAiBnjE,EAAO2gE,EAAoB6C,GACrCxjE,EAAM78J,IAnGPkqM,EAAMumB,IAAagO,EAAkBhO,IAyG/C,IAAIn9E,GAAa,CACf5hV,OAAQiva,GACR/1T,OAAQ+1T,GACRjsJ,QAAS,SAA2BmoF,GAClC8jE,GAAiB9jE,EAAO2/D,MAI5B,SAASmE,GAAkBlQ,EAAU5zD,IAC/B4zD,EAAS9uZ,KAAK2xU,YAAcupB,EAAMl7V,KAAK2xU,aACzC4gF,GAAQzD,EAAU5zD,GAItB,SAASq3D,GAASzD,EAAU5zD,GAC1B,IAQI1vV,EAAKyzZ,EAAQniL,EARboiL,EAAWpQ,IAAa+L,GACxBsE,EAAYjkE,IAAU2/D,GACtBuE,EAAUC,GAAsBvQ,EAAS9uZ,KAAK2xU,WAAYm9E,EAAS7oT,SACnEq5T,EAAUD,GAAsBnkE,EAAMl7V,KAAK2xU,WAAYupB,EAAMj1P,SAE7Ds5T,EAAiB,GACjBC,EAAoB,GAGxB,IAAKh0Z,KAAO8zZ,EACVL,EAASG,EAAQ5zZ,GACjBsxO,EAAMwiL,EAAQ9zZ,GACTyzZ,GAQHniL,EAAIlpM,SAAWqrX,EAAO/qa,MACtB4oP,EAAI2iL,OAASR,EAAOjrU,IACpB0rU,GAAW5iL,EAAK,SAAUo+G,EAAO4zD,GAC7BhyK,EAAIyiD,KAAOziD,EAAIyiD,IAAIogI,kBACrBH,EAAkB5pa,KAAKknP,KAVzB4iL,GAAW5iL,EAAK,OAAQo+G,EAAO4zD,GAC3BhyK,EAAIyiD,KAAOziD,EAAIyiD,IAAI+7D,UACrBikE,EAAe3pa,KAAKknP,IAa1B,GAAIyiL,EAAetua,OAAQ,CACzB,IAAI2ua,EAAa,WACf,IAAK,IAAI9ua,EAAI,EAAGA,EAAIyua,EAAetua,OAAQH,IACzC4ua,GAAWH,EAAezua,GAAI,WAAYoqW,EAAO4zD,IAGjDoQ,EACFzV,GAAevuD,EAAO,SAAU0kE,GAEhCA,IAYJ,GARIJ,EAAkBvua,QACpBw4Z,GAAevuD,EAAO,aAAa,WACjC,IAAK,IAAIpqW,EAAI,EAAGA,EAAI0ua,EAAkBvua,OAAQH,IAC5C4ua,GAAWF,EAAkB1ua,GAAI,mBAAoBoqW,EAAO4zD,OAK7DoQ,EACH,IAAK1zZ,KAAO4zZ,EACLE,EAAQ9zZ,IAEXk0Z,GAAWN,EAAQ5zZ,GAAM,SAAUsjZ,EAAUA,EAAUqQ,GAM/D,IAAIU,GAAiB1wa,OAAOY,OAAO,MAEnC,SAASsva,GACPxY,EACAl8C,GAEA,IAKI75W,EAAGgsP,EALHzxH,EAAMl8H,OAAOY,OAAO,MACxB,IAAK82Z,EAEH,OAAOx7R,EAGT,IAAKv6H,EAAI,EAAGA,EAAI+1Z,EAAK51Z,OAAQH,IAC3BgsP,EAAM+pK,EAAK/1Z,GACNgsP,EAAIw5C,YAEPx5C,EAAIw5C,UAAYupI,IAElBx0S,EAAIy0S,GAAchjL,IAAQA,EAC1BA,EAAIyiD,IAAM2nH,GAAav8C,EAAG/wN,SAAU,aAAckjG,EAAI75O,MAAM,GAG9D,OAAOooH,EAGT,SAASy0S,GAAehjL,GACtB,OAAOA,EAAIijL,SAAajjL,EAAQ,KAAI,IAAO3tP,OAAOsD,KAAKqqP,EAAIw5C,WAAa,IAAI1gR,KAAK,KAGnF,SAAS8pZ,GAAY5iL,EAAKlyI,EAAMswP,EAAO4zD,EAAUqQ,GAC/C,IAAIv0V,EAAKkyK,EAAIyiD,KAAOziD,EAAIyiD,IAAI30L,GAC5B,GAAIhgC,EACF,IACEA,EAAGswR,EAAM78J,IAAKy+C,EAAKo+G,EAAO4zD,EAAUqQ,GACpC,MAAO7qa,IACP4zZ,GAAY5zZ,GAAG4mW,EAAMj1P,QAAU,aAAgB62I,EAAQ,KAAI,IAAMlyI,EAAO,UAK9E,IAAIo1T,GAAc,CAChB7qF,GACAxD,IAKF,SAASsuF,GAAanR,EAAU5zD,GAC9B,IAAIt2M,EAAOs2M,EAAM1P,iBACjB,KAAI+8C,EAAM3jP,KAA4C,IAAnCA,EAAKkqG,KAAKt9P,QAAQmpV,iBAGjC6lE,EAAQsO,EAAS9uZ,KAAKosU,SAAUo0E,EAAQtlD,EAAMl7V,KAAKosU,QAAvD,CAGA,IAAI5gU,EAAKu3V,EAAKymD,EACVnrN,EAAM68J,EAAM78J,IACZ6hO,EAAWpR,EAAS9uZ,KAAKosU,OAAS,GAClCA,EAAQ8uB,EAAMl7V,KAAKosU,OAAS,GAMhC,IAAK5gU,KAJD+8X,EAAMn8D,EAAM64E,UACd74E,EAAQ8uB,EAAMl7V,KAAKosU,MAAQrvL,EAAO,GAAIqvL,IAG5BA,EACV22B,EAAM32B,EAAM5gU,GACZg+Y,EAAM0W,EAAS10Z,GACXg+Y,IAAQzmD,GACVo9D,GAAQ9hO,EAAK7yL,EAAKu3V,EAAK7H,EAAMl7V,KAAK65R,KAStC,IAAKruR,KAHA2kC,IAAQC,KAAWg8R,EAAMl4U,QAAUgsa,EAAShsa,OAC/Cisa,GAAQ9hO,EAAK,QAAS+tI,EAAMl4U,OAElBgsa,EACN1f,EAAQp0E,EAAM5gU,MACZ0tZ,GAAQ1tZ,GACV6yL,EAAI+hO,kBAAkBnH,GAASE,GAAa3tZ,IAClCqtZ,GAAiBrtZ,IAC3B6yL,EAAIf,gBAAgB9xL,KAM5B,SAAS20Z,GAAS/7Q,EAAI54I,EAAKtX,EAAOmsa,GAC5BA,GAAWj8Q,EAAG24C,QAAQjyL,QAAQ,MAAQ,EACxCw1Z,GAAYl8Q,EAAI54I,EAAKtX,GACZsqY,GAAchzX,GAGnBwtZ,GAAiB9ka,GACnBkwJ,EAAGk5C,gBAAgB9xL,IAInBtX,EAAgB,oBAARsX,GAA4C,UAAf44I,EAAG24C,QACpC,OACAvxL,EACJ44I,EAAG5pF,aAAahvD,EAAKtX,IAEd2ka,GAAiBrtZ,GAC1B44I,EAAG5pF,aAAahvD,EAAKutZ,GAAuBvtZ,EAAKtX,IACxCgla,GAAQ1tZ,GACbwtZ,GAAiB9ka,GACnBkwJ,EAAGg8Q,kBAAkBnH,GAASE,GAAa3tZ,IAE3C44I,EAAG27C,eAAek5N,GAASztZ,EAAKtX,GAGlCosa,GAAYl8Q,EAAI54I,EAAKtX,GAIzB,SAASosa,GAAal8Q,EAAI54I,EAAKtX,GAC7B,GAAI8ka,GAAiB9ka,GACnBkwJ,EAAGk5C,gBAAgB9xL,OACd,CAKL,GACE2kC,KAAS+yW,IACM,aAAf9+P,EAAG24C,SACK,gBAARvxL,GAAmC,KAAVtX,IAAiBkwJ,EAAGm8Q,OAC7C,CACA,IAAIC,EAAU,SAAUlsa,GACtBA,EAAEmsa,2BACFr8Q,EAAG9wG,oBAAoB,QAASktX,IAElCp8Q,EAAG9uI,iBAAiB,QAASkrZ,GAE7Bp8Q,EAAGm8Q,QAAS,EAEdn8Q,EAAG5pF,aAAahvD,EAAKtX,IAIzB,IAAIk4U,GAAQ,CACVr8U,OAAQkwa,GACRh3T,OAAQg3T,IAKV,SAASS,GAAa5R,EAAU5zD,GAC9B,IAAI92M,EAAK82M,EAAM78J,IACXr+L,EAAOk7V,EAAMl7V,KACb2ga,EAAU7R,EAAS9uZ,KACvB,KACEwgZ,EAAQxgZ,EAAK+rU,cACby0E,EAAQxgZ,EAAKisU,SACXu0E,EAAQmgB,IACNngB,EAAQmgB,EAAQ50F,cAChBy0E,EAAQmgB,EAAQ10F,SALtB,CAYA,IAAI5hI,EAAM+uN,GAAiBl+D,GAGvB0lE,EAAkBx8Q,EAAGy8Q,mBACrBt4B,EAAMq4B,KACRv2N,EAAMj0M,GAAOi0M,EAAKovN,GAAemH,KAI/Bv2N,IAAQjmD,EAAG08Q,aACb18Q,EAAG5pF,aAAa,QAAS6vI,GACzBjmD,EAAG08Q,WAAaz2N,IAIpB,IAyCImlL,GAzCAuxC,GAAQ,CACVhxa,OAAQ2wa,GACRz3T,OAAQy3T,IAaNM,GAAc,MACdC,GAAuB,MAQ3B,SAASC,GAAiBp0F,GAExB,GAAIy7D,EAAMz7D,EAAGk0F,KAAe,CAE1B,IAAIxqZ,EAAQ25B,GAAO,SAAW,QAC9B28R,EAAGt2T,GAAS,GAAGpgB,OAAO02U,EAAGk0F,IAAcl0F,EAAGt2T,IAAU,WAC7Cs2T,EAAGk0F,IAKRz4B,EAAMz7D,EAAGm0F,OACXn0F,EAAGoc,OAAS,GAAG9yV,OAAO02U,EAAGm0F,IAAuBn0F,EAAGoc,QAAU,WACtDpc,EAAGm0F,KAMd,SAASE,GAAqB3qZ,EAAO81F,EAAShhB,GAC5C,IAAIopR,EAAU8a,GACd,OAAO,SAASsiC,IACd,IAAIzmS,EAAM/e,EAAQ34G,MAAM,KAAM3C,WAClB,OAARq6H,GACF+1S,GAAS5qZ,EAAOs7Y,EAAaxmU,EAASopR,IAQ5C,IAAI2sD,GAAkB5Y,MAAsBrF,IAAQprX,OAAOorX,GAAK,KAAO,IAEvE,SAASke,GACPr+Z,EACAqpG,EACAhhB,EACAwwQ,GAQA,GAAIulE,GAAiB,CACnB,IAAIE,EAAoB1N,GACpBx8P,EAAW/qD,EACfA,EAAU+qD,EAASmqQ,SAAW,SAAUlta,GACtC,GAIEA,EAAEihB,SAAWjhB,EAAE+oW,eAEf/oW,EAAEy/Z,WAAawN,GAIfjta,EAAEy/Z,WAAa,GAIfz/Z,EAAEihB,OAAO8iL,gBAAkB9yJ,SAE3B,OAAO8xH,EAAS1jK,MAAM/D,KAAMoB,YAIlCw+X,GAASl6W,iBACPrS,EACAqpG,EACAg3S,GACI,CAAEh4T,QAASA,EAASwwQ,QAASA,GAC7BxwQ,GAIR,SAAS81U,GACPn+Z,EACAqpG,EACAhhB,EACAopR,IAECA,GAAW8a,IAAUl8U,oBACpBrwC,EACAqpG,EAAQk1T,UAAYl1T,EACpBhhB,GAIJ,SAASm2U,GAAoB3S,EAAU5zD,GACrC,IAAIslD,EAAQsO,EAAS9uZ,KAAK8sU,MAAO0zE,EAAQtlD,EAAMl7V,KAAK8sU,IAApD,CAGA,IAAIA,EAAKouB,EAAMl7V,KAAK8sU,IAAM,GACtBu8E,EAAQyF,EAAS9uZ,KAAK8sU,IAAM,GAChC0iD,GAAWt0B,EAAM78J,IACjB6iO,GAAgBp0F,GAChBs8E,GAAgBt8E,EAAIu8E,EAAOiY,GAAOF,GAAUD,GAAqBjmE,EAAMj1P,SACvEupR,QAAW15V,GAGb,IAOI4rY,GAPAt/Y,GAAS,CACXryB,OAAQ0xa,GACRx4T,OAAQw4T,IAOV,SAASE,GAAgB7S,EAAU5zD,GACjC,IAAIslD,EAAQsO,EAAS9uZ,KAAKqsU,YAAam0E,EAAQtlD,EAAMl7V,KAAKqsU,UAA1D,CAGA,IAAI7gU,EAAKu3V,EACL1kK,EAAM68J,EAAM78J,IACZujO,EAAW9S,EAAS9uZ,KAAKqsU,UAAY,GACrChnN,EAAQ61O,EAAMl7V,KAAKqsU,UAAY,GAMnC,IAAK7gU,KAJD+8X,EAAMljR,EAAM4/R,UACd5/R,EAAQ61O,EAAMl7V,KAAKqsU,SAAWtvL,EAAO,GAAI13B,IAG/Bu8S,EACJp2Z,KAAO65G,IACXg5E,EAAI7yL,GAAO,IAIf,IAAKA,KAAO65G,EAAO,CAKjB,GAJA09O,EAAM19O,EAAM75G,GAIA,gBAARA,GAAiC,cAARA,EAAqB,CAEhD,GADI0vV,EAAM/2P,WAAY+2P,EAAM/2P,SAASlzG,OAAS,GAC1C8xW,IAAQ6+D,EAASp2Z,GAAQ,SAGC,IAA1B6yL,EAAIN,WAAW9sM,QACjBotM,EAAIzjI,YAAYyjI,EAAIN,WAAW,IAInC,GAAY,UAARvyL,GAAmC,aAAhB6yL,EAAItB,QAAwB,CAGjDsB,EAAIwhI,OAASkjC,EAEb,IAAI8+D,EAASrhB,EAAQz9C,GAAO,GAAKxiW,OAAOwiW,GACpC++D,GAAkBzjO,EAAKwjO,KACzBxjO,EAAInqM,MAAQ2ta,QAET,GAAY,cAARr2Z,GAAuBuuZ,GAAM17N,EAAItB,UAAYyjN,EAAQniN,EAAIR,WAAY,CAE9E6jO,GAAeA,IAAgBn8X,SAAS40B,cAAc,OACtDunW,GAAa7jO,UAAY,QAAUklK,EAAM,SACzC,IAAIjtK,EAAM4rO,GAAajhO,WACvB,MAAOpC,EAAIoC,WACTpC,EAAIzjI,YAAYyjI,EAAIoC,YAEtB,MAAO3K,EAAI2K,WACTpC,EAAI3jI,YAAYo7H,EAAI2K,iBAEjB,GAKLsiK,IAAQ6+D,EAASp2Z,GAIjB,IACE6yL,EAAI7yL,GAAOu3V,EACX,MAAOzuW,QAQf,SAASwta,GAAmBzjO,EAAK0jO,GAC/B,OAAS1jO,EAAI2jO,YACK,WAAhB3jO,EAAItB,SACJklO,GAAqB5jO,EAAK0jO,IAC1BG,GAAqB7jO,EAAK0jO,IAI9B,SAASE,GAAsB5jO,EAAK0jO,GAGlC,IAAII,GAAa,EAGjB,IAAMA,EAAa58X,SAAS8uS,gBAAkBh2I,EAAO,MAAO/pM,KAC5D,OAAO6ta,GAAc9jO,EAAInqM,QAAU6ta,EAGrC,SAASG,GAAsB7jO,EAAK8sK,GAClC,IAAIj3W,EAAQmqM,EAAInqM,MACZoiS,EAAYj4F,EAAIggL,YACpB,GAAIkqB,EAAMjyG,GAAY,CACpB,GAAIA,EAAUrgM,OACZ,OAAO46E,EAAS38K,KAAW28K,EAASs6L,GAEtC,GAAI70E,EAAUhrR,KACZ,OAAOpX,EAAMoX,SAAW6/V,EAAO7/V,OAGnC,OAAOpX,IAAUi3W,EAGnB,IAAI9+B,GAAW,CACbt8U,OAAQ4xa,GACR14T,OAAQ04T,IAKNS,GAAiBlhB,GAAO,SAAUx3C,GACpC,IAAIr+O,EAAM,GACNg3S,EAAgB,gBAChBC,EAAoB,QAOxB,OANA54D,EAAQ1iW,MAAMq7Z,GAAe3va,SAAQ,SAAUsmB,GAC7C,GAAIA,EAAM,CACR,IAAIkmE,EAAMlmE,EAAKhS,MAAMs7Z,GACrBpjV,EAAIjuF,OAAS,IAAMo6H,EAAInsC,EAAI,GAAG5zE,QAAU4zE,EAAI,GAAG5zE,YAG5C+/G,KAIT,SAASk3S,GAAoBvia,GAC3B,IAAIo6D,EAAQooW,GAAsBxia,EAAKo6D,OAGvC,OAAOp6D,EAAKyia,YACR1lR,EAAO/8I,EAAKyia,YAAaroW,GACzBA,EAIN,SAASooW,GAAuBE,GAC9B,OAAIpza,MAAM21E,QAAQy9V,GACT1yY,EAAS0yY,GAEU,kBAAjBA,EACFN,GAAeM,GAEjBA,EAOT,SAASC,GAAUznE,EAAO0nE,GACxB,IACI9nH,EADAzvL,EAAM,GAGV,GAAIu3S,EAAY,CACd,IAAIvJ,EAAYn+D,EAChB,MAAOm+D,EAAUzuD,kBACfyuD,EAAYA,EAAUzuD,kBAAkB+lD,OAEtC0I,GAAaA,EAAUr5Z,OACtB86S,EAAYynH,GAAmBlJ,EAAUr5Z,QAE1C+8I,EAAO1xB,EAAKyvL,IAKbA,EAAYynH,GAAmBrnE,EAAMl7V,QACxC+8I,EAAO1xB,EAAKyvL,GAGd,IAAIngP,EAAaugS,EACjB,MAAQvgS,EAAaA,EAAWlsB,OAC1BksB,EAAW36D,OAAS86S,EAAYynH,GAAmB5nW,EAAW36D,QAChE+8I,EAAO1xB,EAAKyvL,GAGhB,OAAOzvL,EAKT,IAyBIw3S,GAzBAC,GAAW,MACXC,GAAc,iBACd1xU,GAAU,SAAU+yD,EAAInhJ,EAAM6rB,GAEhC,GAAIg0Y,GAAS5ja,KAAK+D,GAChBmhJ,EAAGhqF,MAAMy4R,YAAY5vV,EAAM6rB,QACtB,GAAIi0Y,GAAY7ja,KAAK4vB,GAC1Bs1H,EAAGhqF,MAAMy4R,YAAYuuD,EAAUn+Y,GAAO6rB,EAAIhuB,QAAQiia,GAAa,IAAK,iBAC/D,CACL,IAAIp/Q,EAAiB8X,GAAUx4J,GAC/B,GAAI3T,MAAM21E,QAAQn2C,GAIhB,IAAK,IAAIh+B,EAAI,EAAG2/F,EAAM3hE,EAAI79B,OAAQH,EAAI2/F,EAAK3/F,IACzCszJ,EAAGhqF,MAAMupF,GAAkB70H,EAAIh+B,QAGjCszJ,EAAGhqF,MAAMupF,GAAkB70H,IAK7Bk0Y,GAAc,CAAC,SAAU,MAAO,MAGhCvnQ,GAAYylP,GAAO,SAAU7wU,GAG/B,GAFAwyV,GAAaA,IAAct9X,SAAS40B,cAAc,OAAOC,MACzDiW,EAAOinS,EAASjnS,GACH,WAATA,GAAsBA,KAAQwyV,GAChC,OAAOxyV,EAGT,IADA,IAAIw6P,EAAUx6P,EAAK3qC,OAAO,GAAGkZ,cAAgByxB,EAAKl0C,MAAM,GAC/CrrC,EAAI,EAAGA,EAAIkya,GAAY/xa,OAAQH,IAAK,CAC3C,IAAImS,EAAO+/Z,GAAYlya,GAAK+5U,EAC5B,GAAI5nU,KAAQ4/Z,GACV,OAAO5/Z,MAKb,SAASgga,GAAanU,EAAU5zD,GAC9B,IAAIl7V,EAAOk7V,EAAMl7V,KACb2ga,EAAU7R,EAAS9uZ,KAEvB,KAAIwgZ,EAAQxgZ,EAAKyia,cAAgBjiB,EAAQxgZ,EAAKo6D,QAC5ComV,EAAQmgB,EAAQ8B,cAAgBjiB,EAAQmgB,EAAQvmW,QADlD,CAMA,IAAI2oS,EAAK9/V,EACLmhJ,EAAK82M,EAAM78J,IACX6kO,EAAiBvC,EAAQ8B,YACzBU,EAAkBxC,EAAQyC,iBAAmBzC,EAAQvmW,OAAS,GAG9DipW,EAAWH,GAAkBC,EAE7B/oW,EAAQooW,GAAsBtnE,EAAMl7V,KAAKo6D,QAAU,GAKvD8gS,EAAMl7V,KAAKoja,gBAAkB76B,EAAMnuU,EAAM6qV,QACrCloQ,EAAO,GAAI3iF,GACXA,EAEJ,IAAIkpW,EAAWX,GAASznE,GAAO,GAE/B,IAAKj4V,KAAQoga,EACP7iB,EAAQ8iB,EAASrga,KACnBouF,GAAQ+yD,EAAInhJ,EAAM,IAGtB,IAAKA,KAAQqga,EACXvgE,EAAMugE,EAASrga,GACX8/V,IAAQsgE,EAASpga,IAEnBouF,GAAQ+yD,EAAInhJ,EAAa,MAAP8/V,EAAc,GAAKA,IAK3C,IAAI3oS,GAAQ,CACVrqE,OAAQkza,GACRh6T,OAAQg6T,IAKNM,GAAe,MAMnB,SAASp5F,GAAU/lL,EAAIimD,GAErB,GAAKA,IAASA,EAAMA,EAAI/+L,QAKxB,GAAI84I,EAAG2Q,UACDs1C,EAAIv/L,QAAQ,MAAQ,EACtBu/L,EAAIrjM,MAAMu8Z,IAAc7wa,SAAQ,SAAUmxE,GAAK,OAAOugF,EAAG2Q,UAAUhoI,IAAI82C,MAEvEugF,EAAG2Q,UAAUhoI,IAAIs9K,OAEd,CACL,IAAI04J,EAAM,KAAO3+M,EAAG2yC,aAAa,UAAY,IAAM,IAC/CgsK,EAAIj4V,QAAQ,IAAMu/L,EAAM,KAAO,GACjCjmD,EAAG5pF,aAAa,SAAUuoS,EAAM14J,GAAK/+L,SAS3C,SAAS++T,GAAajmL,EAAIimD,GAExB,GAAKA,IAASA,EAAMA,EAAI/+L,QAKxB,GAAI84I,EAAG2Q,UACDs1C,EAAIv/L,QAAQ,MAAQ,EACtBu/L,EAAIrjM,MAAMu8Z,IAAc7wa,SAAQ,SAAUmxE,GAAK,OAAOugF,EAAG2Q,UAAUhhC,OAAOlwD,MAE1EugF,EAAG2Q,UAAUhhC,OAAOs2E,GAEjBjmD,EAAG2Q,UAAU9jK,QAChBmzJ,EAAGk5C,gBAAgB,aAEhB,CACL,IAAIylK,EAAM,KAAO3+M,EAAG2yC,aAAa,UAAY,IAAM,IAC/CysO,EAAM,IAAMn5N,EAAM,IACtB,MAAO04J,EAAIj4V,QAAQ04Z,IAAQ,EACzBzgE,EAAMA,EAAIjiW,QAAQ0ia,EAAK,KAEzBzgE,EAAMA,EAAIz3V,OACNy3V,EACF3+M,EAAG5pF,aAAa,QAASuoS,GAEzB3+M,EAAGk5C,gBAAgB,UAOzB,SAASmmO,GAAmB3c,GAC1B,GAAKA,EAAL,CAIA,GAAsB,kBAAXA,EAAqB,CAC9B,IAAIz7R,EAAM,GAKV,OAJmB,IAAfy7R,EAAOl9E,KACT7sL,EAAO1xB,EAAKq4S,GAAkB5c,EAAO7jZ,MAAQ,MAE/C85I,EAAO1xB,EAAKy7R,GACLz7R,EACF,MAAsB,kBAAXy7R,EACT4c,GAAkB5c,QADpB,GAKT,IAAI4c,GAAoBxiB,GAAO,SAAUj+Y,GACvC,MAAO,CACL0ga,WAAa1ga,EAAO,SACpB2ga,aAAe3ga,EAAO,YACtB4ga,iBAAmB5ga,EAAO,gBAC1B6ga,WAAa7ga,EAAO,SACpB8ga,aAAe9ga,EAAO,YACtB+ga,iBAAmB/ga,EAAO,oBAI1Bgha,GAAgBxuI,IAAcytH,GAC9BzQ,GAAa,aACbyxB,GAAY,YAGZC,GAAiB,aACjBC,GAAqB,gBACrBC,GAAgB,YAChBC,GAAoB,eACpBL,UAE6BnuY,IAA3B/hB,OAAOwwZ,sBACwBzuY,IAAjC/hB,OAAOywZ,wBAEPL,GAAiB,mBACjBC,GAAqB,4BAEOtuY,IAA1B/hB,OAAO0wZ,qBACuB3uY,IAAhC/hB,OAAO2wZ,uBAEPL,GAAgB,kBAChBC,GAAoB,uBAKxB,IAAIK,GAAMlvI,EACN1hR,OAAOuoQ,sBACLvoQ,OAAOuoQ,sBAAsBrpO,KAAKl/B,QAClCukB,WACyB,SAAUsyC,GAAM,OAAOA,KAEtD,SAASg6V,GAAWh6V,GAClB+5V,IAAI,WACFA,GAAI/5V,MAIR,SAASi6V,GAAoBzgR,EAAIimD,GAC/B,IAAIy6N,EAAoB1gR,EAAGy8Q,qBAAuBz8Q,EAAGy8Q,mBAAqB,IACtEiE,EAAkBh6Z,QAAQu/L,GAAO,IACnCy6N,EAAkBlva,KAAKy0M,GACvB8/H,GAAS/lL,EAAIimD,IAIjB,SAAS06N,GAAuB3gR,EAAIimD,GAC9BjmD,EAAGy8Q,oBACL9sS,EAAOqwB,EAAGy8Q,mBAAoBx2N,GAEhCggI,GAAYjmL,EAAIimD,GAGlB,SAAS26N,GACP5gR,EACAt7B,EACAphB,GAEA,IAAIytO,EAAM8vF,GAAkB7gR,EAAIt7B,GAC5BhsG,EAAOq4T,EAAIr4T,KACX9pB,EAAUmiV,EAAIniV,QACdkya,EAAY/vF,EAAI+vF,UACpB,IAAKpoZ,EAAQ,OAAO4qF,IACpB,IAAIlxF,EAAQsG,IAAS21X,GAAa2xB,GAAqBE,GACnDa,EAAQ,EACRnuV,EAAM,WACRotE,EAAG9wG,oBAAoB98B,EAAO4uZ,GAC9B19T,KAEE09T,EAAQ,SAAU9wa,GAChBA,EAAEihB,SAAW6uI,KACT+gR,GAASD,GACbluV,KAIN1+C,YAAW,WACL6sY,EAAQD,GACVluV,MAEDhkF,EAAU,GACboxJ,EAAG9uI,iBAAiBkB,EAAO4uZ,GAG7B,IAAIC,GAAc,yBAElB,SAASJ,GAAmB7gR,EAAIt7B,GAC9B,IASIhsG,EATA69Q,EAAS5mR,OAAO+oV,iBAAiB14M,GAEjCkhR,GAAoB3qI,EAAOwpI,GAAiB,UAAY,IAAIn9Z,MAAM,MAClEu+Z,GAAuB5qI,EAAOwpI,GAAiB,aAAe,IAAIn9Z,MAAM,MACxEw+Z,EAAoBC,GAAWH,EAAkBC,GACjDG,GAAmB/qI,EAAO0pI,GAAgB,UAAY,IAAIr9Z,MAAM,MAChE2+Z,GAAsBhrI,EAAO0pI,GAAgB,aAAe,IAAIr9Z,MAAM,MACtE4+Z,EAAmBH,GAAWC,EAAiBC,GAG/C3ya,EAAU,EACVkya,EAAY,EAEZp8S,IAAiB2pR,GACf+yB,EAAoB,IACtB1oZ,EAAO21X,GACPz/Y,EAAUwya,EACVN,EAAYK,EAAoBt0a,QAEzB63H,IAAiBo7S,GACtB0B,EAAmB,IACrB9oZ,EAAOonZ,GACPlxa,EAAU4ya,EACVV,EAAYS,EAAmB10a,SAGjC+B,EAAU6L,KAAK4wD,IAAI+1W,EAAmBI,GACtC9oZ,EAAO9pB,EAAU,EACbwya,EAAoBI,EAClBnzB,GACAyxB,GACF,KACJgB,EAAYpoZ,EACRA,IAAS21X,GACP8yB,EAAoBt0a,OACpB00a,EAAmB10a,OACrB,GAEN,IAAI40a,EACF/oZ,IAAS21X,IACT4yB,GAAYnma,KAAKy7R,EAAOwpI,GAAiB,aAC3C,MAAO,CACLrnZ,KAAMA,EACN9pB,QAASA,EACTkya,UAAWA,EACXW,aAAcA,GAIlB,SAASJ,GAAYK,EAAQpzT,GAE3B,MAAOozT,EAAO70a,OAASyhH,EAAUzhH,OAC/B60a,EAASA,EAAO1va,OAAO0va,GAGzB,OAAOjna,KAAK4wD,IAAI97D,MAAM,KAAM++G,EAAU/mG,KAAI,SAAUpc,EAAGuB,GACrD,OAAOi1a,GAAKx2a,GAAKw2a,GAAKD,EAAOh1a,QAQjC,SAASi1a,GAAMl1a,GACb,OAAkD,IAA3CmnC,OAAOnnC,EAAEsrC,MAAM,GAAI,GAAGr7B,QAAQ,IAAK,MAK5C,SAASo9J,GAAOg9L,EAAO8qE,GACrB,IAAI5hR,EAAK82M,EAAM78J,IAGXkqM,EAAMnkP,EAAGy6Q,YACXz6Q,EAAGy6Q,SAASplD,WAAY,EACxBr1N,EAAGy6Q,YAGL,IAAI7+Z,EAAOyja,GAAkBvoE,EAAMl7V,KAAKopU,YACxC,IAAIo3E,EAAQxgZ,KAKRuoY,EAAMnkP,EAAG6hR,WAA6B,IAAhB7hR,EAAGkzC,SAA7B,CAIA,IAAIsyI,EAAM5pU,EAAK4pU,IACX9sT,EAAO9c,EAAK8c,KACZ6mZ,EAAa3ja,EAAK2ja,WAClBC,EAAe5ja,EAAK4ja,aACpBC,EAAmB7ja,EAAK6ja,iBACxBqC,EAAclma,EAAKkma,YACnBC,EAAgBnma,EAAKmma,cACrBC,EAAoBpma,EAAKoma,kBACzB9zE,EAActyV,EAAKsyV,YACnBp0L,EAAQl+J,EAAKk+J,MACbk0L,EAAapyV,EAAKoyV,WAClBkI,EAAiBt6V,EAAKs6V,eACtB+rE,EAAerma,EAAKqma,aACpB/wF,EAASt1U,EAAKs1U,OACdgxF,EAActma,EAAKsma,YACnBC,EAAkBvma,EAAKuma,gBACvBroW,EAAWl+D,EAAKk+D,SAMhB+nC,EAAU4oT,GACV2X,EAAiB3X,GAAev1Q,OACpC,MAAOktR,GAAkBA,EAAe/3X,OACtCw3D,EAAUugU,EAAevgU,QACzBugU,EAAiBA,EAAe/3X,OAGlC,IAAIg4X,GAAYxgU,EAAQ+oT,aAAe9zD,EAAMqpD,aAE7C,IAAIkiB,GAAanxF,GAAqB,KAAXA,EAA3B,CAIA,IAAIoxF,EAAaD,GAAYP,EACzBA,EACAvC,EACAl2F,EAAcg5F,GAAYL,EAC1BA,EACAvC,EACA8C,EAAUF,GAAYN,EACtBA,EACAvC,EAEAgD,EAAkBH,GACjBJ,GACD/zE,EACAu0E,EAAYJ,GACO,oBAAXnxF,EAAwBA,EAChCp3K,EACA4oQ,EAAiBL,GAChBH,GACDl0E,EACA20E,EAAqBN,GACpBF,GACDjsE,EAEA0sE,EAAwBn2P,EAC1BjoG,EAAS1K,GACLA,EAASggG,MACThgG,GAGF,EAIJ,IAAI+oW,GAAqB,IAARr9F,IAAkBs5E,GAC/BgkB,EAAmBC,GAAuBN,GAE1Cn/T,EAAK08C,EAAG6hR,SAAWzqK,GAAK,WACtByrK,IACFlC,GAAsB3gR,EAAIuiR,GAC1B5B,GAAsB3gR,EAAIqpL,IAExB/lO,EAAG+xQ,WACDwtD,GACFlC,GAAsB3gR,EAAIsiR,GAE5BK,GAAsBA,EAAmB3iR,IAEzC0iR,GAAkBA,EAAe1iR,GAEnCA,EAAG6hR,SAAW,QAGX/qE,EAAMl7V,KAAK+6Q,MAEd0uI,GAAevuD,EAAO,UAAU,WAC9B,IAAIzsT,EAAS21G,EAAGzpF,WACZysW,EAAc34X,GAAUA,EAAO44X,UAAY54X,EAAO44X,SAASnsE,EAAM1vV,KACjE47Z,GACFA,EAAYx7Q,MAAQsvM,EAAMtvM,KAC1Bw7Q,EAAY/oO,IAAIwgO,UAEhBuI,EAAY/oO,IAAIwgO,WAElBgI,GAAaA,EAAUziR,EAAI18C,MAK/Bk/T,GAAmBA,EAAgBxiR,GAC/B6iR,IACFpC,GAAmBzgR,EAAIsiR,GACvB7B,GAAmBzgR,EAAIqpL,GACvBm3F,IAAU,WACRG,GAAsB3gR,EAAIsiR,GACrBh/T,EAAG+xQ,YACNorD,GAAmBzgR,EAAIuiR,GAClBO,IACCI,GAAgBN,GAClB1uY,WAAWovE,EAAIs/T,GAEfhC,GAAmB5gR,EAAItnI,EAAM4qF,SAOnCwzP,EAAMl7V,KAAK+6Q,OACbirJ,GAAiBA,IACjBa,GAAaA,EAAUziR,EAAI18C,IAGxBu/T,GAAeC,GAClBx/T,MAIJ,SAASmyP,GAAOqB,EAAOjvP,GACrB,IAAIm4C,EAAK82M,EAAM78J,IAGXkqM,EAAMnkP,EAAG6hR,YACX7hR,EAAG6hR,SAASxsD,WAAY,EACxBr1N,EAAG6hR,YAGL,IAAIjma,EAAOyja,GAAkBvoE,EAAMl7V,KAAKopU,YACxC,GAAIo3E,EAAQxgZ,IAAyB,IAAhBokJ,EAAGkzC,SACtB,OAAOrrF,IAIT,IAAIs8R,EAAMnkP,EAAGy6Q,UAAb,CAIA,IAAIj1F,EAAM5pU,EAAK4pU,IACX9sT,EAAO9c,EAAK8c,KACZgnZ,EAAa9ja,EAAK8ja,WAClBC,EAAe/ja,EAAK+ja,aACpBC,EAAmBhka,EAAKgka,iBACxBxxE,EAAcxyV,EAAKwyV,YACnBqH,EAAQ75V,EAAK65V,MACbE,EAAa/5V,EAAK+5V,WAClBrH,EAAiB1yV,EAAK0yV,eACtB60E,EAAavna,EAAKuna,WAClBrpW,EAAWl+D,EAAKk+D,SAEhB+oW,GAAqB,IAARr9F,IAAkBs5E,GAC/BgkB,EAAmBC,GAAuBttE,GAE1C2tE,EAAwB32P,EAC1BjoG,EAAS1K,GACLA,EAAS27R,MACT37R,GAGF,EAIJ,IAAIwpC,EAAK08C,EAAGy6Q,SAAWrjK,GAAK,WACtBp3G,EAAGzpF,YAAcypF,EAAGzpF,WAAW0sW,WACjCjjR,EAAGzpF,WAAW0sW,SAASnsE,EAAM1vV,KAAO,MAElCy7Z,IACFlC,GAAsB3gR,EAAI2/Q,GAC1BgB,GAAsB3gR,EAAI4/Q,IAExBt8T,EAAG+xQ,WACDwtD,GACFlC,GAAsB3gR,EAAI0/Q,GAE5BpxE,GAAkBA,EAAetuM,KAEjCn4C,IACA8tP,GAAcA,EAAW31M,IAE3BA,EAAGy6Q,SAAW,QAGZ0I,EACFA,EAAWE,GAEXA,IAGF,SAASA,IAEH//T,EAAG+xQ,aAIFve,EAAMl7V,KAAK+6Q,MAAQ32H,EAAGzpF,cACxBypF,EAAGzpF,WAAW0sW,WAAajjR,EAAGzpF,WAAW0sW,SAAW,KAAMnsE,EAAS,KAAKA,GAE3E1I,GAAeA,EAAYpuM,GACvB6iR,IACFpC,GAAmBzgR,EAAI0/Q,GACvBe,GAAmBzgR,EAAI4/Q,GACvBY,IAAU,WACRG,GAAsB3gR,EAAI0/Q,GACrBp8T,EAAG+xQ,YACNorD,GAAmBzgR,EAAI2/Q,GAClBmD,IACCI,GAAgBE,GAClBlvY,WAAWovE,EAAI8/T,GAEfxC,GAAmB5gR,EAAItnI,EAAM4qF,SAMvCmyP,GAASA,EAAMz1M,EAAI18C,GACdu/T,GAAeC,GAClBx/T,MAsBN,SAAS4/T,GAAiBx4Y,GACxB,MAAsB,kBAARA,IAAqB29C,MAAM39C,GAS3C,SAASq4Y,GAAwBv8V,GAC/B,GAAI41U,EAAQ51U,GACV,OAAO,EAET,IAAI88V,EAAa98V,EAAG02E,IACpB,OAAIinP,EAAMm/B,GAEDP,GACL73a,MAAM21E,QAAQyiW,GACVA,EAAW,GACXA,IAGE98V,EAAGi1M,SAAWj1M,EAAG35E,QAAU,EAIvC,SAAS02a,GAAQ3ya,EAAGkmW,IACM,IAApBA,EAAMl7V,KAAK+6Q,MACb78G,GAAMg9L,GAIV,IAAI9xB,GAAa3zC,EAAY,CAC3B1lS,OAAQ43a,GACRxrJ,SAAUwrJ,GACV5zS,OAAQ,SAAoBmnO,EAAOjvP,IAET,IAApBivP,EAAMl7V,KAAK+6Q,KACb8+E,GAAMqB,EAAOjvP,GAEbA,MAGF,GAEA27T,GAAkB,CACpBx7F,GACA20F,GACA3+Y,GACAiqT,GACAjyQ,GACAgvQ,IAOEmyF,GAAUqM,GAAgBxxa,OAAO4pa,IAEjC6H,GAAQxM,GAAoB,CAAEZ,QAASA,GAASc,QAASA,KAQzDrY,IAEF39W,SAASjwB,iBAAiB,mBAAmB,WAC3C,IAAI8uI,EAAK7+G,SAAS8uS,cACdjwL,GAAMA,EAAG0jR,QACX3wJ,GAAQ/yH,EAAI,YAKlB,IAAI62M,GAAY,CACdK,SAAU,SAAmBl3M,EAAI6wF,EAASimH,EAAO4zD,GAC7B,WAAd5zD,EAAMtvM,KAEJkjQ,EAASzwN,MAAQywN,EAASzwN,IAAI0pO,UAChCte,GAAevuD,EAAO,aAAa,WACjCD,GAAU0kE,iBAAiBv7Q,EAAI6wF,EAASimH,MAG1C8sE,GAAY5jR,EAAI6wF,EAASimH,EAAMj1P,SAEjCm+C,EAAG2jR,UAAY,GAAGp8Z,IAAIpb,KAAK6zJ,EAAG5yJ,QAASmxO,MAChB,aAAdu4H,EAAMtvM,KAAsBsuQ,GAAgB91Q,EAAGtnI,SACxDsnI,EAAGi6N,YAAcppI,EAAQqhD,UACpBrhD,EAAQqhD,UAAUyjF,OACrB31N,EAAG9uI,iBAAiB,mBAAoB2yZ,IACxC7jR,EAAG9uI,iBAAiB,iBAAkB4yZ,IAKtC9jR,EAAG9uI,iBAAiB,SAAU4yZ,IAE1BhlB,KACF9+P,EAAG0jR,QAAS,MAMpBnI,iBAAkB,SAA2Bv7Q,EAAI6wF,EAASimH,GACxD,GAAkB,WAAdA,EAAMtvM,IAAkB,CAC1Bo8Q,GAAY5jR,EAAI6wF,EAASimH,EAAMj1P,SAK/B,IAAIkiU,EAAc/jR,EAAG2jR,UACjBK,EAAahkR,EAAG2jR,UAAY,GAAGp8Z,IAAIpb,KAAK6zJ,EAAG5yJ,QAASmxO,IACxD,GAAIylM,EAAWllZ,MAAK,SAAUptB,EAAGhF,GAAK,OAAQi0X,EAAWjvX,EAAGqya,EAAYr3a,OAAS,CAG/E,IAAIu3a,EAAYjkR,EAAG05L,SACf7oG,EAAQ/gP,MAAMgvB,MAAK,SAAU1tB,GAAK,OAAO8ya,GAAoB9ya,EAAG4ya,MAChEnzL,EAAQ/gP,QAAU+gP,EAAQrhM,UAAY00X,GAAoBrzL,EAAQ/gP,MAAOk0a,GACzEC,GACFlxJ,GAAQ/yH,EAAI,cAOtB,SAAS4jR,GAAa5jR,EAAI6wF,EAAS01H,GACjC49D,GAAoBnkR,EAAI6wF,EAAS01H,IAE7Bx6T,IAAQC,KACV9X,YAAW,WACTiwY,GAAoBnkR,EAAI6wF,EAAS01H,KAChC,GAIP,SAAS49D,GAAqBnkR,EAAI6wF,EAAS01H,GACzC,IAAIz2W,EAAQ+gP,EAAQ/gP,MAChBs0a,EAAapkR,EAAG05L,SACpB,IAAI0qF,GAAel5a,MAAM21E,QAAQ/wE,GAAjC,CASA,IADA,IAAIu8V,EAAUg4E,EACL33a,EAAI,EAAG8sJ,EAAIwG,EAAG5yJ,QAAQP,OAAQH,EAAI8sJ,EAAG9sJ,IAE5C,GADA23a,EAASrkR,EAAG5yJ,QAAQV,GAChB03a,EACF/3E,EAAWixD,EAAaxtZ,EAAOyuO,GAAS8lM,KAAY,EAChDA,EAAOh4E,WAAaA,IACtBg4E,EAAOh4E,SAAWA,QAGpB,GAAIs0B,EAAWpiJ,GAAS8lM,GAASv0a,GAI/B,YAHIkwJ,EAAG45L,gBAAkBltV,IACvBszJ,EAAG45L,cAAgBltV,IAMtB03a,IACHpkR,EAAG45L,eAAiB,IAIxB,SAASsqF,GAAqBp0a,EAAO1C,GACnC,OAAOA,EAAQm8B,OAAM,SAAU73B,GAAK,OAAQivX,EAAWjvX,EAAG5B,MAG5D,SAASyuO,GAAU8lM,GACjB,MAAO,WAAYA,EACfA,EAAO5oG,OACP4oG,EAAOv0a,MAGb,SAAS+za,GAAoB3za,GAC3BA,EAAEihB,OAAOysZ,WAAY,EAGvB,SAASkG,GAAkB5za,GAEpBA,EAAEihB,OAAOysZ,YACd1ta,EAAEihB,OAAOysZ,WAAY,EACrB7qJ,GAAQ7iR,EAAEihB,OAAQ,UAGpB,SAAS4hQ,GAAS/yH,EAAItnI,GACpB,IAAIxoB,EAAIixC,SAASsmC,YAAY,cAC7Bv3E,EAAEw3E,UAAUhvD,GAAM,GAAM,GACxBsnI,EAAGtvC,cAAcxgH,GAMnB,SAASo0a,GAAYxtE,GACnB,OAAOA,EAAM0P,mBAAuB1P,EAAMl7V,MAASk7V,EAAMl7V,KAAKopU,WAE1D8xB,EADAwtE,GAAWxtE,EAAM0P,kBAAkB+lD,QAIzC,IAAI51I,GAAO,CACT9nO,KAAM,SAAemxG,EAAI+wL,EAAK+lB,GAC5B,IAAIhnW,EAAQihV,EAAIjhV,MAEhBgnW,EAAQwtE,GAAWxtE,GACnB,IAAIytE,EAAgBztE,EAAMl7V,MAAQk7V,EAAMl7V,KAAKopU,WACzCw/F,EAAkBxkR,EAAGykR,mBACF,SAArBzkR,EAAGhqF,MAAM6mG,QAAqB,GAAK7c,EAAGhqF,MAAM6mG,QAC1C/sK,GAASy0a,GACXztE,EAAMl7V,KAAK+6Q,MAAO,EAClB78G,GAAMg9L,GAAO,WACX92M,EAAGhqF,MAAM6mG,QAAU2nQ,MAGrBxkR,EAAGhqF,MAAM6mG,QAAU/sK,EAAQ00a,EAAkB,QAIjD3/T,OAAQ,SAAiBm7C,EAAI+wL,EAAK+lB,GAChC,IAAIhnW,EAAQihV,EAAIjhV,MACZ0/C,EAAWuhS,EAAIvhS,SAGnB,IAAK1/C,KAAW0/C,EAAhB,CACAsnT,EAAQwtE,GAAWxtE,GACnB,IAAIytE,EAAgBztE,EAAMl7V,MAAQk7V,EAAMl7V,KAAKopU,WACzCu/F,GACFztE,EAAMl7V,KAAK+6Q,MAAO,EACd7mR,EACFgqK,GAAMg9L,GAAO,WACX92M,EAAGhqF,MAAM6mG,QAAU7c,EAAGykR,sBAGxBhvE,GAAMqB,GAAO,WACX92M,EAAGhqF,MAAM6mG,QAAU,WAIvB7c,EAAGhqF,MAAM6mG,QAAU/sK,EAAQkwJ,EAAGykR,mBAAqB,SAIvDv1F,OAAQ,SACNlvL,EACA6wF,EACAimH,EACA4zD,EACAqQ,GAEKA,IACH/6Q,EAAGhqF,MAAM6mG,QAAU7c,EAAGykR,sBAKxBC,GAAqB,CACvBxlT,MAAO23O,GACPlgF,KAAMA,IAKJguJ,GAAkB,CACpB9la,KAAM1C,OACN+0U,OAAQpuP,QACR0iP,IAAK1iP,QACLk/E,KAAM7lK,OACNuc,KAAMvc,OACNoja,WAAYpja,OACZuja,WAAYvja,OACZqja,aAAcrja,OACdwja,aAAcxja,OACdsja,iBAAkBtja,OAClByja,iBAAkBzja,OAClB2la,YAAa3la,OACb6la,kBAAmB7la,OACnB4la,cAAe5la,OACf29D,SAAU,CAAClmC,OAAQz3B,OAAQpR,SAK7B,SAAS65a,GAAc9tE,GACrB,IAAI+tE,EAAc/tE,GAASA,EAAM1P,iBACjC,OAAIy9E,GAAeA,EAAYn6K,KAAKt9P,QAAQo+Z,SACnCoZ,GAAavX,GAAuBwX,EAAY9kU,WAEhD+2P,EAIX,SAASguE,GAAuBh7J,GAC9B,IAAIluQ,EAAO,GACPxO,EAAU08Q,EAAKt0H,SAEnB,IAAK,IAAIpuI,KAAOha,EAAQ49W,UACtBpvW,EAAKwL,GAAO0iQ,EAAK1iQ,GAInB,IAAIkuH,EAAYloI,EAAQu/Z,iBACxB,IAAK,IAAIvK,KAAS9sR,EAChB15H,EAAKs3W,EAASkvC,IAAU9sR,EAAU8sR,GAEpC,OAAOxmZ,EAGT,SAASg4O,GAAa5sI,EAAG+9T,GACvB,GAAI,iBAAiBjqa,KAAKiqa,EAASv9Q,KACjC,OAAOxgD,EAAE,aAAc,CACrBia,MAAO8jT,EAAS39E,iBAAiB4jB,YAKvC,SAASg6D,GAAqBluE,GAC5B,MAAQA,EAAQA,EAAMzsT,OACpB,GAAIysT,EAAMl7V,KAAKopU,WACb,OAAO,EAKb,SAASigG,GAAap9D,EAAOq9D,GAC3B,OAAOA,EAAS99Z,MAAQygW,EAAMzgW,KAAO89Z,EAAS19Q,MAAQqgN,EAAMrgN,IAG9D,IAAI29Q,GAAgB,SAAU1lW,GAAK,OAAOA,EAAE+nF,KAAO+4P,GAAmB9gV,IAElE2lW,GAAmB,SAAUj6a,GAAK,MAAkB,SAAXA,EAAE0T,MAE3Cwma,GAAa,CACfxma,KAAM,aACNoiH,MAAO0jT,GACPnZ,UAAU,EAEVh3Q,OAAQ,SAAiBxtC,GACvB,IAAIuhR,EAAS/8X,KAETu0G,EAAWv0G,KAAKo8U,OAAO7/I,QAC3B,GAAKhoF,IAKLA,EAAWA,EAASr4F,OAAOy9Z,IAEtBplU,EAASlzG,QAAd,CAKI,EAQJ,IAAIm1K,EAAOx2K,KAAKw2K,KAGZ,EASJ,IAAI+iQ,EAAWhlU,EAAS,GAIxB,GAAIilU,GAAoBx5a,KAAK0pJ,QAC3B,OAAO6vR,EAKT,IAAIl9D,EAAQ+8D,GAAaG,GAEzB,IAAKl9D,EACH,OAAOk9D,EAGT,GAAIv5a,KAAK85a,SACP,OAAO1xL,GAAY5sI,EAAG+9T,GAMxB,IAAItzY,EAAK,gBAAmBjmC,KAAS,KAAI,IACzCq8W,EAAMzgW,IAAmB,MAAbygW,EAAMzgW,IACdygW,EAAM3rB,UACJzqT,EAAK,UACLA,EAAKo2U,EAAMrgN,IACb+0P,EAAY10C,EAAMzgW,KACmB,IAAlCjL,OAAO0rW,EAAMzgW,KAAKV,QAAQ+qB,GAAYo2U,EAAMzgW,IAAMqqB,EAAKo2U,EAAMzgW,IAC9DygW,EAAMzgW,IAEZ,IAAIxL,GAAQisW,EAAMjsW,OAASisW,EAAMjsW,KAAO,KAAKopU,WAAa8/F,GAAsBt5a,MAC5E+5a,EAAc/5a,KAAK+ga,OACnB2Y,EAAWN,GAAaW,GAQ5B,GAJI19D,EAAMjsW,KAAK2xU,YAAcs6B,EAAMjsW,KAAK2xU,WAAWzuT,KAAKsmZ,MACtDv9D,EAAMjsW,KAAK+6Q,MAAO,GAIlBuuJ,GACAA,EAAStpa,OACRqpa,GAAYp9D,EAAOq9D,KACnB3kB,GAAmB2kB,MAElBA,EAAS1+D,oBAAqB0+D,EAAS1+D,kBAAkB+lD,OAAOrwE,WAClE,CAGA,IAAIqgF,EAAU2I,EAAStpa,KAAKopU,WAAarsL,EAAO,GAAI/8I,GAEpD,GAAa,WAATomK,EAOF,OALAx2K,KAAK85a,UAAW,EAChBjgB,GAAekX,EAAS,cAAc,WACpCh0C,EAAO+8C,UAAW,EAClB/8C,EAAO2C,kBAEFt3I,GAAY5sI,EAAG+9T,GACjB,GAAa,WAAT/iQ,EAAmB,CAC5B,GAAIu+O,GAAmB14C,GACrB,OAAO09D,EAET,IAAIC,EACAnC,EAAe,WAAcmC,KACjCngB,GAAezpZ,EAAM,aAAcyna,GACnChe,GAAezpZ,EAAM,iBAAkByna,GACvChe,GAAekX,EAAS,cAAc,SAAU9mE,GAAS+vE,EAAe/vE,MAI5E,OAAOsvE,KAMP9jT,GAAQ03B,EAAO,CACjB6O,IAAKrrJ,OACLspa,UAAWtpa,QACVwoa,WAEI1jT,GAAM+gD,KAEb,IAAI0jQ,GAAkB,CACpBzkT,MAAOA,GAEPouN,YAAa,WACX,IAAIk5C,EAAS/8X,KAETq5G,EAASr5G,KAAK2ia,QAClB3ia,KAAK2ia,QAAU,SAAUr3D,EAAOwzD,GAC9B,IAAIgE,EAAwBR,GAAkBvlC,GAE9CA,EAAOgmC,UACLhmC,EAAOgkC,OACPhkC,EAAOo9C,MACP,GACA,GAEFp9C,EAAOgkC,OAAShkC,EAAOo9C,KACvBrX,IACAzpT,EAAO14G,KAAKo8X,EAAQzxB,EAAOwzD,KAI/B91Q,OAAQ,SAAiBxtC,GAQvB,IAPA,IAAIwgD,EAAMh8J,KAAKg8J,KAAOh8J,KAAK0pJ,OAAOt5I,KAAK4rJ,KAAO,OAC1CjgJ,EAAMxc,OAAOY,OAAO,MACpBi6a,EAAep6a,KAAKo6a,aAAep6a,KAAKu0G,SACxC8lU,EAAcr6a,KAAKo8U,OAAO7/I,SAAW,GACrChoF,EAAWv0G,KAAKu0G,SAAW,GAC3B+lU,EAAiBhB,GAAsBt5a,MAElCkB,EAAI,EAAGA,EAAIm5a,EAAYh5a,OAAQH,IAAK,CAC3C,IAAI+yE,EAAIomW,EAAYn5a,GACpB,GAAI+yE,EAAE+nF,IACJ,GAAa,MAAT/nF,EAAEr4D,KAAoD,IAArCjL,OAAOsjE,EAAEr4D,KAAKV,QAAQ,WACzCq5F,EAASvuG,KAAKiuE,GACdl4D,EAAIk4D,EAAEr4D,KAAOq4D,GACXA,EAAE7jE,OAAS6jE,EAAE7jE,KAAO,KAAKopU,WAAa8gG,QAS9C,GAAIF,EAAc,CAGhB,IAFA,IAAID,EAAO,GACPhzS,EAAU,GACLosQ,EAAM,EAAGA,EAAM6mC,EAAa/4a,OAAQkyY,IAAO,CAClD,IAAIgnC,EAAMH,EAAa7mC,GACvBgnC,EAAInqa,KAAKopU,WAAa8gG,EACtBC,EAAInqa,KAAKgkE,IAAMmmW,EAAI9rO,IAAI+qJ,wBACnBz9U,EAAIw+Z,EAAI3+Z,KACVu+Z,EAAKn0a,KAAKu0a,GAEVpzS,EAAQnhI,KAAKu0a,GAGjBv6a,KAAKm6a,KAAO3+T,EAAEwgD,EAAK,KAAMm+Q,GACzBn6a,KAAKmnI,QAAUA,EAGjB,OAAO3rB,EAAEwgD,EAAK,KAAMznD,IAGtB86M,QAAS,WACP,IAAI96M,EAAWv0G,KAAKo6a,aAChBH,EAAYj6a,KAAKi6a,YAAej6a,KAAKqT,MAAQ,KAAO,QACnDkhG,EAASlzG,QAAWrB,KAAKw6a,QAAQjmU,EAAS,GAAGk6F,IAAKwrO,KAMvD1lU,EAASzxG,QAAQ23a,IACjBlmU,EAASzxG,QAAQ43a,IACjBnmU,EAASzxG,QAAQ63a,IAKjB36a,KAAK46a,QAAUjlY,SAAS3wC,KAAK09T,aAE7BnuN,EAASzxG,SAAQ,SAAUmxE,GACzB,GAAIA,EAAE7jE,KAAKyqa,MAAO,CAChB,IAAIrmR,EAAKvgF,EAAEw6H,IACPxtM,EAAIuzJ,EAAGhqF,MACXyqW,GAAmBzgR,EAAIylR,GACvBh5a,EAAEynP,UAAYznP,EAAE65a,gBAAkB75a,EAAE6hZ,mBAAqB,GACzDtuP,EAAG9uI,iBAAiB8uZ,GAAoBhgR,EAAGumR,QAAU,SAASjjU,EAAIpzG,GAC5DA,GAAKA,EAAEihB,SAAW6uI,GAGjB9vJ,IAAK,aAAa4K,KAAK5K,EAAEwiC,gBAC5BstH,EAAG9wG,oBAAoB8wX,GAAoB18T,GAC3C08C,EAAGumR,QAAU,KACb5F,GAAsB3gR,EAAIylR,YAOpC/+V,QAAS,CACPs/V,QAAS,SAAkBhmR,EAAIylR,GAE7B,IAAK5F,GACH,OAAO,EAGT,GAAIr0a,KAAKg7a,SACP,OAAOh7a,KAAKg7a,SAOd,IAAI7sZ,EAAQqmI,EAAG6zC,YACX7zC,EAAGy8Q,oBACLz8Q,EAAGy8Q,mBAAmBnua,SAAQ,SAAU23M,GAAOggI,GAAYtsT,EAAOssL,MAEpE8/H,GAASpsT,EAAO8rZ,GAChB9rZ,EAAMq8C,MAAM6mG,QAAU,OACtBrxK,KAAK8/U,IAAIh1Q,YAAY38C,GACrB,IAAIW,EAAOumZ,GAAkBlnZ,GAE7B,OADAnuB,KAAK8/U,IAAI90Q,YAAY78C,GACbnuB,KAAKg7a,SAAWlsZ,EAAKmnZ,gBAKnC,SAASwE,GAAgBxmW,GAEnBA,EAAEw6H,IAAIssO,SACR9mW,EAAEw6H,IAAIssO,UAGJ9mW,EAAEw6H,IAAI4nO,UACRpiW,EAAEw6H,IAAI4nO,WAIV,SAASqE,GAAgBzmW,GACvBA,EAAE7jE,KAAK6qa,OAAShnW,EAAEw6H,IAAI+qJ,wBAGxB,SAASmhF,GAAkB1mW,GACzB,IAAIinW,EAASjnW,EAAE7jE,KAAKgkE,IAChB6mW,EAAShnW,EAAE7jE,KAAK6qa,OAChBE,EAAKD,EAAOt7W,KAAOq7W,EAAOr7W,KAC1Bw7W,EAAKF,EAAOx7W,IAAMu7W,EAAOv7W,IAC7B,GAAIy7W,GAAMC,EAAI,CACZnnW,EAAE7jE,KAAKyqa,OAAQ,EACf,IAAI55a,EAAIgzE,EAAEw6H,IAAIjkI,MACdvpE,EAAEynP,UAAYznP,EAAE65a,gBAAkB,aAAeK,EAAK,MAAQC,EAAK,MACnEn6a,EAAE6hZ,mBAAqB,MAI3B,IAAIu4B,GAAqB,CACvBxB,WAAYA,GACZK,gBAAiBA,IAMnB7zF,GAAIrgS,OAAO2sW,YAAcA,GACzBtsE,GAAIrgS,OAAOssW,cAAgBA,GAC3BjsE,GAAIrgS,OAAOusW,eAAiBA,GAC5BlsE,GAAIrgS,OAAOysW,gBAAkBA,GAC7BpsE,GAAIrgS,OAAOwsW,iBAAmBA,GAG9BrlQ,EAAOk5L,GAAIzkV,QAAQmgV,WAAYm3F,IAC/B/rR,EAAOk5L,GAAIzkV,QAAQ6sC,WAAY4sY,IAG/Bh1F,GAAInmV,UAAU6ia,UAAYl9H,EAAYoyI,GAAQr9V,EAG9CyrQ,GAAInmV,UAAUu/W,OAAS,SACrBjrN,EACAsqQ,GAGA,OADAtqQ,EAAKA,GAAMqxI,EAAYvqR,GAAMk5I,QAAMtuH,EAC5Bg9X,GAAelja,KAAMw0J,EAAIsqQ,IAK9Bj5H,GACFn9P,YAAW,WACLsd,EAAO6hV,UACLA,IACFA,GAAS1iN,KAAK,OAAQkhK,MAsBzB,GAKL,a,UC1yQA97L,EAAOD,QAAU,SAA4BkoJ,EAAW/jQ,GACtD,IAAI7sC,EAAuC,oBAAtB4wS,EAAUloJ,QAC3BkoJ,EAAUloJ,QAAQ28Q,cAClBz0H,EAAU5wS,QAQd,IAAK,IAAIV,IANwB,oBAAtBsxS,EAAUloJ,UACnB1oJ,EAAQ6sC,WAAa+jQ,EAAUloJ,QAAQ1oJ,QAAQ6sC,YAGjD7sC,EAAQ6sC,WAAa7sC,EAAQ6sC,YAAc,GAE7BA,EACZ7sC,EAAQ6sC,WAAWvtC,GAAKU,EAAQ6sC,WAAWvtC,IAAMutC,EAAWvtC,K;;;;;;ACXhE,SAASo6a,EAAYj1F,GACnB,IAAI9/T,EAAU6hB,OAAOi+S,EAAI9/T,QAAQnP,MAAM,KAAK,IAE5C,GAAImP,GAAW,EACb8/T,EAAIh0E,MAAM,CAAEhoH,aAAckxR,QACrB,CAGL,IAAI7U,EAAQrgF,EAAInmV,UAAUwma,MAC1BrgF,EAAInmV,UAAUwma,MAAQ,SAAU9ka,QACb,IAAZA,IAAqBA,EAAU,IAEpCA,EAAQ27H,KAAO37H,EAAQ27H,KACnB,CAACg+S,GAAU/0a,OAAO5E,EAAQ27H,MAC1Bg+S,EACJ7U,EAAM/la,KAAKX,KAAM4B,IAQrB,SAAS25a,IACP,IAAI35a,EAAU5B,KAAKgqJ,SAEfpoJ,EAAQkoK,MACV9pK,KAAKw7a,OAAkC,oBAAlB55a,EAAQkoK,MACzBloK,EAAQkoK,QACRloK,EAAQkoK,MACHloK,EAAQi9C,QAAUj9C,EAAQi9C,OAAO28X,SAC1Cx7a,KAAKw7a,OAAS55a,EAAQi9C,OAAO28X,S,6CAKnC,IAAI71Z,EAA2B,qBAAXxB,OAChBA,OACkB,qBAAX,EAAAhf,EACL,EAAAA,EACA,GACFs2a,EAAc91Z,EAAOkuY,6BAEzB,SAAS6nB,EAAe5xQ,GACjB2xQ,IAEL3xQ,EAAM6xQ,aAAeF,EAErBA,EAAYt2P,KAAK,YAAarb,GAE9B2xQ,EAAYv+F,GAAG,wBAAwB,SAAU0+F,GAC/C9xQ,EAAMvrH,aAAaq9X,MAGrB9xQ,EAAM7vF,WAAU,SAAU4hW,EAAUxvY,GAClCovY,EAAYt2P,KAAK,gBAAiB02P,EAAUxvY,KAC3C,CAAEwhT,SAAS,IAEd/jL,EAAMgyQ,iBAAgB,SAAUh3T,EAAQz4E,GACtCovY,EAAYt2P,KAAK,cAAergE,EAAQz4E,KACvC,CAAEwhT,SAAS,KAWhB,SAASvlU,EAAMmgJ,EAAMxjK,GACnB,OAAOwjK,EAAKvsJ,OAAOjX,GAAG,GAYxB,SAAS82a,EAAUjha,EAAK2N,GAItB,QAHe,IAAVA,IAAmBA,EAAQ,IAGpB,OAAR3N,GAA+B,kBAARA,EACzB,OAAOA,EAIT,IAAIuhX,EAAM/zW,EAAKG,GAAO,SAAUwrD,GAAK,OAAOA,EAAEwzF,WAAa3sJ,KAC3D,GAAIuhX,EACF,OAAOA,EAAI3/H,KAGb,IAAIA,EAAOh9P,MAAM21E,QAAQv6D,GAAO,GAAK,GAYrC,OATA2N,EAAMziB,KAAK,CACTyhK,SAAU3sJ,EACV4hP,KAAMA,IAGRn9P,OAAOsD,KAAKiY,GAAKhY,SAAQ,SAAU8Y,GACjC8gP,EAAK9gP,GAAOmga,EAASjha,EAAIc,GAAM6M,MAG1Bi0O,EAMT,SAASs/K,EAAclha,EAAKkgE,GAC1Bz7E,OAAOsD,KAAKiY,GAAKhY,SAAQ,SAAU8Y,GAAO,OAAOo/D,EAAGlgE,EAAIc,GAAMA,MAGhE,SAASo9D,EAAUl+D,GACjB,OAAe,OAARA,GAA+B,kBAARA,EAGhC,SAASo2Y,EAAWhyX,GAClB,OAAOA,GAA2B,oBAAbA,EAAIp6B,KAO3B,SAASinQ,EAAS/wL,EAAIopB,GACpB,OAAO,WACL,OAAOppB,EAAGopB,IAKd,IAAI63U,EAAS,SAAiBC,EAAWhlW,GACvCl3E,KAAKk3E,QAAUA,EAEfl3E,KAAKm8a,UAAY58a,OAAOY,OAAO,MAE/BH,KAAKo8a,WAAaF,EAClB,IAAIG,EAAWH,EAAU7vY,MAGzBrsC,KAAKqsC,OAA6B,oBAAbgwY,EAA0BA,IAAaA,IAAa,IAGvE98C,EAAqB,CAAE+8C,WAAY,CAAEhuY,cAAc,IAEvDixV,EAAmB+8C,WAAW56a,IAAM,WAClC,QAAS1B,KAAKo8a,WAAWE,YAG3BL,EAAO/7a,UAAUq8a,SAAW,SAAmB3ga,EAAK2uI,GAClDvqJ,KAAKm8a,UAAUvga,GAAO2uI,GAGxB0xR,EAAO/7a,UAAU8qE,YAAc,SAAsBpvD,UAC5C5b,KAAKm8a,UAAUvga,IAGxBqga,EAAO/7a,UAAUs8a,SAAW,SAAmB5ga,GAC7C,OAAO5b,KAAKm8a,UAAUvga,IAGxBqga,EAAO/7a,UAAUu8a,SAAW,SAAmB7ga,GAC7C,OAAOA,KAAO5b,KAAKm8a,WAGrBF,EAAO/7a,UAAUm5G,OAAS,SAAiB6iU,GACzCl8a,KAAKo8a,WAAWE,WAAaJ,EAAUI,WACnCJ,EAAUjgL,UACZj8P,KAAKo8a,WAAWngL,QAAUigL,EAAUjgL,SAElCigL,EAAUQ,YACZ18a,KAAKo8a,WAAWM,UAAYR,EAAUQ,WAEpCR,EAAUS,UACZ38a,KAAKo8a,WAAWO,QAAUT,EAAUS,UAIxCV,EAAO/7a,UAAU08a,aAAe,SAAuB5hW,GACrDghW,EAAah8a,KAAKm8a,UAAWnhW,IAG/BihW,EAAO/7a,UAAU28a,cAAgB,SAAwB7hW,GACnDh7E,KAAKo8a,WAAWO,SAClBX,EAAah8a,KAAKo8a,WAAWO,QAAS3hW,IAI1CihW,EAAO/7a,UAAU48a,cAAgB,SAAwB9hW,GACnDh7E,KAAKo8a,WAAWngL,SAClB+/K,EAAah8a,KAAKo8a,WAAWngL,QAASjhL,IAI1CihW,EAAO/7a,UAAU68a,gBAAkB,SAA0B/hW,GACvDh7E,KAAKo8a,WAAWM,WAClBV,EAAah8a,KAAKo8a,WAAWM,UAAW1hW,IAI5Cz7E,OAAOywJ,iBAAkBisR,EAAO/7a,UAAWq/X,GAE3C,IAAIy9C,EAAmB,SAA2BC,GAEhDj9a,KAAK8vO,SAAS,GAAImtM,GAAe,IA8EnC,SAAS5jU,EAAQjsB,EAAM8vV,EAAcC,GASnC,GAHAD,EAAa7jU,OAAO8jU,GAGhBA,EAAUxR,QACZ,IAAK,IAAI/vZ,KAAOuha,EAAUxR,QAAS,CACjC,IAAKuR,EAAaV,SAAS5ga,GAOzB,cAEFy9F,EACEjsB,EAAK5mF,OAAOoV,GACZsha,EAAaV,SAAS5ga,GACtBuha,EAAUxR,QAAQ/vZ,KAlG1Boha,EAAiB98a,UAAUwB,IAAM,SAAc0rF,GAC7C,OAAOA,EAAKr7D,QAAO,SAAUw4H,EAAQ3uI,GACnC,OAAO2uI,EAAOiyR,SAAS5ga,KACtB5b,KAAKynM,OAGVu1O,EAAiB98a,UAAUk9a,aAAe,SAAuBhwV,GAC/D,IAAIm9D,EAASvqJ,KAAKynM,KAClB,OAAOr6G,EAAKr7D,QAAO,SAAU82I,EAAWjtJ,GAEtC,OADA2uI,EAASA,EAAOiyR,SAAS5ga,GAClBitJ,GAAate,EAAO+xR,WAAa1ga,EAAM,IAAM,MACnD,KAGLoha,EAAiB98a,UAAUm5G,OAAS,SAAmB4jU,GACrD5jU,EAAO,GAAIr5G,KAAKynM,KAAMw1O,IAGxBD,EAAiB98a,UAAU4vO,SAAW,SAAmB1iJ,EAAM8uV,EAAWhlW,GACtE,IAAI6lT,EAAS/8X,UACI,IAAZk3E,IAAqBA,GAAU,GAMtC,IAAIimW,EAAY,IAAIlB,EAAOC,EAAWhlW,GACtC,GAAoB,IAAhBkW,EAAK/rF,OACPrB,KAAKynM,KAAO01O,MACP,CACL,IAAIt+X,EAAS7+C,KAAK0B,IAAI0rF,EAAK7gD,MAAM,GAAI,IACrCsS,EAAO09X,SAASnvV,EAAKA,EAAK/rF,OAAS,GAAI87a,GAIrCjB,EAAUvQ,SACZqQ,EAAaE,EAAUvQ,SAAS,SAAU0R,EAAgBzha,GACxDmhX,EAAOjtJ,SAAS1iJ,EAAK5mF,OAAOoV,GAAMyha,EAAgBnmW,OAKxD8lW,EAAiB98a,UAAU8uV,WAAa,SAAqB5hQ,GAC3D,IAAIvuC,EAAS7+C,KAAK0B,IAAI0rF,EAAK7gD,MAAM,GAAI,IACjC3wB,EAAMwxE,EAAKA,EAAK/rF,OAAS,GACzBg7W,EAAQx9T,EAAO29X,SAAS5ga,GAEvBygW,GAUAA,EAAMnlS,SAIXr4B,EAAOmsB,YAAYpvD,IAGrBoha,EAAiB98a,UAAUo9a,aAAe,SAAuBlwV,GAC/D,IAAIvuC,EAAS7+C,KAAK0B,IAAI0rF,EAAK7gD,MAAM,GAAI,IACjC3wB,EAAMwxE,EAAKA,EAAK/rF,OAAS,GAE7B,QAAIw9C,GACKA,EAAO49X,SAAS7ga,IAmC3B,IAyCIyqU,EAEJ,IAAIk3F,EAAQ,SAAgB37a,GAC1B,IAAIm7X,EAAS/8X,UACI,IAAZ4B,IAAqBA,EAAU,KAK/BykV,GAAyB,qBAAXliU,QAA0BA,OAAOkiU,KAClDqoB,EAAQvqV,OAAOkiU,KASjB,IAAIhxO,EAAUzzG,EAAQyzG,aAA0B,IAAZA,IAAqBA,EAAU,IACnE,IAAIghS,EAASz0Y,EAAQy0Y,YAAwB,IAAXA,IAAoBA,GAAS,GAG/Dr2Y,KAAKw9a,aAAc,EACnBx9a,KAAKy9a,SAAWl+a,OAAOY,OAAO,MAC9BH,KAAK09a,mBAAqB,GAC1B19a,KAAK29a,WAAap+a,OAAOY,OAAO,MAChCH,KAAK49a,gBAAkBr+a,OAAOY,OAAO,MACrCH,KAAK69a,SAAW,IAAIb,EAAiBp7a,GACrC5B,KAAK89a,qBAAuBv+a,OAAOY,OAAO,MAC1CH,KAAK+9a,aAAe,GACpB/9a,KAAKg+a,WAAa,IAAI33F,EACtBrmV,KAAKi+a,uBAAyB1+a,OAAOY,OAAO,MAG5C,IAAI2pK,EAAQ9pK,KACRulV,EAAMvlV,KACNk+a,EAAW34F,EAAI24F,SACfhpK,EAASqwE,EAAIrwE,OACjBl1Q,KAAKk+a,SAAW,SAAwBhxZ,EAAM3F,GAC5C,OAAO22Z,EAASv9a,KAAKmpK,EAAO58I,EAAM3F,IAEpCvnB,KAAKk1Q,OAAS,SAAsBhoP,EAAM3F,EAAS3lB,GACjD,OAAOszQ,EAAOv0Q,KAAKmpK,EAAO58I,EAAM3F,EAAS3lB,IAI3C5B,KAAKq2Y,OAASA,EAEd,IAAIhqW,EAAQrsC,KAAK69a,SAASp2O,KAAKp7J,MAK/B8xY,EAAcn+a,KAAMqsC,EAAO,GAAIrsC,KAAK69a,SAASp2O,MAI7C22O,EAAap+a,KAAMqsC,GAGnBgpE,EAAQvyG,SAAQ,SAAU6xG,GAAU,OAAOA,EAAOooR,MAElD,IAAIshD,OAAmCn4Y,IAArBtkC,EAAQimY,SAAyBjmY,EAAQimY,SAAWxhD,EAAIrgS,OAAO6hV,SAC7Ew2C,GACF3C,EAAc17a,OAIds+a,EAAuB,CAAEjyY,MAAO,CAAEiC,cAAc,IAmMpD,SAASiwY,EAAkBvjW,EAAIg5U,EAAMpyZ,GAMnC,OALIoyZ,EAAK94Y,QAAQ8/D,GAAM,IACrBp5E,GAAWA,EAAQisV,QACfmmE,EAAK1kQ,QAAQt0E,GACbg5U,EAAKhuZ,KAAKg1E,IAET,WACL,IAAI95E,EAAI8yZ,EAAK94Y,QAAQ8/D,GACjB95E,GAAK,GACP8yZ,EAAKxjT,OAAOtvG,EAAG,IAKrB,SAASs9a,EAAY10Q,EAAO20Q,GAC1B30Q,EAAM2zQ,SAAWl+a,OAAOY,OAAO,MAC/B2pK,EAAM6zQ,WAAap+a,OAAOY,OAAO,MACjC2pK,EAAM8zQ,gBAAkBr+a,OAAOY,OAAO,MACtC2pK,EAAMg0Q,qBAAuBv+a,OAAOY,OAAO,MAC3C,IAAIksC,EAAQy9H,EAAMz9H,MAElB8xY,EAAcr0Q,EAAOz9H,EAAO,GAAIy9H,EAAM+zQ,SAASp2O,MAAM,GAErD22O,EAAat0Q,EAAOz9H,EAAOoyY,GAG7B,SAASL,EAAct0Q,EAAOz9H,EAAOoyY,GACnC,IAAIC,EAAQ50Q,EAAMqzN,IAGlBrzN,EAAM6yQ,QAAU,GAEhB7yQ,EAAMm0Q,uBAAyB1+a,OAAOY,OAAO,MAC7C,IAAIw+a,EAAiB70Q,EAAM8zQ,gBACvB9vL,EAAW,GACfkuL,EAAa2C,GAAgB,SAAU3jW,EAAIp/D,GAIzCkyO,EAASlyO,GAAOmwP,EAAQ/wL,EAAI8uF,GAC5BvqK,OAAO6uC,eAAe07H,EAAM6yQ,QAAS/ga,EAAK,CACxCla,IAAK,WAAc,OAAOooK,EAAMqzN,IAAIvhX,IACpCyyB,YAAY,OAOhB,IAAIksU,EAASl0B,EAAIrgS,OAAOu0T,OACxBl0B,EAAIrgS,OAAOu0T,QAAS,EACpBzwM,EAAMqzN,IAAM,IAAI92C,EAAI,CAClBj2U,KAAM,CACJwua,QAASvyY,GAEXyhN,SAAUA,IAEZu4F,EAAIrgS,OAAOu0T,OAASA,EAGhBzwM,EAAMusO,QACRwoC,EAAiB/0Q,GAGf40Q,IACED,GAGF30Q,EAAMg1Q,aAAY,WAChBJ,EAAMh+M,MAAMk+M,QAAU,QAG1Bv4F,EAAI93K,UAAS,WAAc,OAAOmwQ,EAAM9+D,eAI5C,SAASu+D,EAAer0Q,EAAOi1Q,EAAW3xV,EAAMm9D,EAAQk0R,GACtD,IAAI9Y,GAAUv4U,EAAK/rF,OACfwnK,EAAYiB,EAAM+zQ,SAAST,aAAahwV,GAW5C,GARIm9D,EAAO+xR,aACLxyQ,EAAMg0Q,qBAAqBj1Q,GAG/BiB,EAAMg0Q,qBAAqBj1Q,GAAate,IAIrCo7Q,IAAW8Y,EAAK,CACnB,IAAIO,EAAcC,EAAeF,EAAW3xV,EAAK7gD,MAAM,GAAI,IACvD2yY,EAAa9xV,EAAKA,EAAK/rF,OAAS,GACpCyoK,EAAMg1Q,aAAY,WAQhBz4F,EAAI19T,IAAIq2Z,EAAaE,EAAY30R,EAAOl+G,UAI5C,IAAI80J,EAAQ52C,EAAOl0C,QAAU8oU,EAAiBr1Q,EAAOjB,EAAWz7E,GAEhEm9D,EAAOwyR,iBAAgB,SAAUlB,EAAUjga,GACzC,IAAIwja,EAAiBv2Q,EAAYjtJ,EACjCyja,EAAiBv1Q,EAAOs1Q,EAAgBvD,EAAU16O,MAGpD52C,EAAOuyR,eAAc,SAAUh4T,EAAQlpG,GACrC,IAAIsR,EAAO43F,EAAO2iF,KAAO7rL,EAAMitJ,EAAYjtJ,EACvC8gG,EAAUoI,EAAOpI,SAAWoI,EAChCw6T,EAAex1Q,EAAO58I,EAAMwvF,EAASykF,MAGvC52C,EAAOsyR,eAAc,SAAUz7Q,EAAQxlJ,GACrC,IAAIwja,EAAiBv2Q,EAAYjtJ,EACjC2ja,EAAez1Q,EAAOs1Q,EAAgBh+Q,EAAQ+/B,MAGhD52C,EAAOqyR,cAAa,SAAUvgE,EAAOzgW,GACnCuia,EAAcr0Q,EAAOi1Q,EAAW3xV,EAAK5mF,OAAOoV,GAAMygW,EAAOoiE,MAQ7D,SAASU,EAAkBr1Q,EAAOjB,EAAWz7E,GAC3C,IAAIoyV,EAA4B,KAAd32Q,EAEds4B,EAAQ,CACV+8O,SAAUsB,EAAc11Q,EAAMo0Q,SAAW,SAAU3xC,EAAOkzC,EAAUr1C,GAClE,IAAIh4S,EAAOstV,EAAiBnzC,EAAOkzC,EAAUr1C,GACzC7iX,EAAU6qE,EAAK7qE,QACf3lB,EAAUwwF,EAAKxwF,QACfsrB,EAAOklE,EAAKllE,KAUhB,OARKtrB,GAAYA,EAAQ6lM,OACvBv6K,EAAO27I,EAAY37I,GAOd48I,EAAMo0Q,SAAShxZ,EAAM3F,IAG9B2tP,OAAQsqK,EAAc11Q,EAAMorG,OAAS,SAAUq3H,EAAOkzC,EAAUr1C,GAC9D,IAAIh4S,EAAOstV,EAAiBnzC,EAAOkzC,EAAUr1C,GACzC7iX,EAAU6qE,EAAK7qE,QACf3lB,EAAUwwF,EAAKxwF,QACfsrB,EAAOklE,EAAKllE,KAEXtrB,GAAYA,EAAQ6lM,OACvBv6K,EAAO27I,EAAY37I,GAOrB48I,EAAMorG,OAAOhoP,EAAM3F,EAAS3lB,KAiBhC,OAXArC,OAAOywJ,iBAAiBmxC,EAAO,CAC7Bw7O,QAAS,CACPj7a,IAAK89a,EACD,WAAc,OAAO11Q,EAAM6yQ,SAC3B,WAAc,OAAOgD,EAAiB71Q,EAAOjB,KAEnDx8H,MAAO,CACL3qC,IAAK,WAAc,OAAOu9a,EAAen1Q,EAAMz9H,MAAO+gD,OAInD+zG,EAGT,SAASw+O,EAAkB71Q,EAAOjB,GAChC,IAAKiB,EAAMm0Q,uBAAuBp1Q,GAAY,CAC5C,IAAI+2Q,EAAe,GACfC,EAAWh3Q,EAAUxnK,OACzB9B,OAAOsD,KAAKinK,EAAM6yQ,SAAS75a,SAAQ,SAAUoqB,GAE3C,GAAIA,EAAKqf,MAAM,EAAGszY,KAAch3Q,EAAhC,CAGA,IAAIi3Q,EAAY5yZ,EAAKqf,MAAMszY,GAK3Btgb,OAAO6uC,eAAewxY,EAAcE,EAAW,CAC7Cp+a,IAAK,WAAc,OAAOooK,EAAM6yQ,QAAQzvZ,IACxCmhB,YAAY,QAGhBy7H,EAAMm0Q,uBAAuBp1Q,GAAa+2Q,EAG5C,OAAO91Q,EAAMm0Q,uBAAuBp1Q,GAGtC,SAASw2Q,EAAkBv1Q,EAAO58I,EAAMwvF,EAASykF,GAC/C,IAAInlL,EAAQ8tJ,EAAM6zQ,WAAWzwZ,KAAU48I,EAAM6zQ,WAAWzwZ,GAAQ,IAChElR,EAAMhW,MAAK,SAAiCuhB,GAC1Cm1F,EAAQ/7G,KAAKmpK,EAAOq3B,EAAM90J,MAAO9kB,MAIrC,SAAS+3Z,EAAgBx1Q,EAAO58I,EAAMwvF,EAASykF,GAC7C,IAAInlL,EAAQ8tJ,EAAM2zQ,SAASvwZ,KAAU48I,EAAM2zQ,SAASvwZ,GAAQ,IAC5DlR,EAAMhW,MAAK,SAA+BuhB,GACxC,IAAIk0G,EAAM/e,EAAQ/7G,KAAKmpK,EAAO,CAC5Bo0Q,SAAU/8O,EAAM+8O,SAChBhpK,OAAQ/zE,EAAM+zE,OACdynK,QAASx7O,EAAMw7O,QACftwY,MAAO80J,EAAM90J,MACb0zY,YAAaj2Q,EAAM6yQ,QACnBoC,UAAWj1Q,EAAMz9H,OAChB9kB,GAIH,OAHK2pY,EAAUz1R,KACbA,EAAMr5H,QAAQC,QAAQo5H,IAEpBquC,EAAM6xQ,aACDlgT,EAAIh+D,OAAM,SAAU3uD,GAEzB,MADAg7J,EAAM6xQ,aAAax2P,KAAK,aAAcr2K,GAChCA,KAGD2sH,KAKb,SAAS8jT,EAAgBz1Q,EAAO58I,EAAM8yZ,EAAW7+O,GAC3Cr3B,EAAM8zQ,gBAAgB1wZ,KAM1B48I,EAAM8zQ,gBAAgB1wZ,GAAQ,SAAwB48I,GACpD,OAAOk2Q,EACL7+O,EAAM90J,MACN80J,EAAMw7O,QACN7yQ,EAAMz9H,MACNy9H,EAAM6yQ,WAKZ,SAASkC,EAAkB/0Q,GACzBA,EAAMqzN,IAAIv3B,QAAO,WAAc,OAAO5lW,KAAK0gO,MAAMk+M,WAAW,WACtD,IAGH,CAAEz6U,MAAM,EAAM2zR,MAAM,IAGzB,SAASmnD,EAAgB5yY,EAAO+gD,GAC9B,OAAOA,EAAKr7D,QAAO,SAAUsa,EAAOzwB,GAAO,OAAOywB,EAAMzwB,KAASywB,GAGnE,SAASqzY,EAAkBxyZ,EAAM3F,EAAS3lB,GAWxC,OAVIo3E,EAAS9rD,IAASA,EAAKA,OACzBtrB,EAAU2lB,EACVA,EAAU2F,EACVA,EAAOA,EAAKA,MAOP,CAAEA,KAAMA,EAAM3F,QAASA,EAAS3lB,QAASA,GAGlD,SAAS8sW,EAASqrB,GACZ1zC,GAAO0zC,IAAS1zC,IAQpBA,EAAM0zC,EACNuhD,EAAWj1F,IAzebi4F,EAAqBjyY,MAAM3qC,IAAM,WAC/B,OAAO1B,KAAKm9X,IAAIz8J,MAAMk+M,SAGxBN,EAAqBjyY,MAAM1jB,IAAM,SAAU/iB,GACrC,GAKN23a,EAAMr9a,UAAUg1Q,OAAS,SAAiBq3H,EAAOkzC,EAAUr1C,GACvD,IAAIrN,EAAS/8X,KAGXulV,EAAMm6F,EAAiBnzC,EAAOkzC,EAAUr1C,GACtCl9W,EAAOq4T,EAAIr4T,KACX3F,EAAUg+T,EAAIh+T,QAGhBs0Z,GAFYt2F,EAAI3jV,QAEL,CAAEsrB,KAAMA,EAAM3F,QAASA,IAClCvL,EAAQhc,KAAK29a,WAAWzwZ,GACvBlR,IAMLhc,KAAK8+a,aAAY,WACf9ia,EAAMlZ,SAAQ,SAAyB45G,GACrCA,EAAQn1F,SAIZvnB,KAAK+9a,aACFxxY,QACAzpC,SAAQ,SAAU+zB,GAAO,OAAOA,EAAIglZ,EAAU9+C,EAAO1wV,YAa1DkxY,EAAMr9a,UAAUg+a,SAAW,SAAmB3xC,EAAOkzC,GACjD,IAAI1iD,EAAS/8X,KAGXulV,EAAMm6F,EAAiBnzC,EAAOkzC,GAC5BvyZ,EAAOq4T,EAAIr4T,KACX3F,EAAUg+T,EAAIh+T,QAEhBu9F,EAAS,CAAE53F,KAAMA,EAAM3F,QAASA,GAChCvL,EAAQhc,KAAKy9a,SAASvwZ,GAC1B,GAAKlR,EAAL,CAOA,IACEhc,KAAK09a,mBACFnxY,QACArwB,QAAO,SAAU2a,GAAO,OAAOA,EAAIqzO,UACnCpnQ,SAAQ,SAAU+zB,GAAO,OAAOA,EAAIqzO,OAAOplJ,EAAQi4Q,EAAO1wV,UAC7D,MAAO3nC,GACH,EAMN,IAAIE,EAASoX,EAAM3a,OAAS,EACxBe,QAAQw/B,IAAI5lB,EAAMD,KAAI,SAAU2gG,GAAW,OAAOA,EAAQn1F,OAC1DvL,EAAM,GAAGuL,GAEb,OAAO,IAAInlB,SAAQ,SAAUC,EAASC,GACpCsC,EAAOE,MAAK,SAAU22H,GACpB,IACEshQ,EAAO2gD,mBACJxha,QAAO,SAAU2a,GAAO,OAAOA,EAAIozO,SACnCnnQ,SAAQ,SAAU+zB,GAAO,OAAOA,EAAIozO,MAAMnlJ,EAAQi4Q,EAAO1wV,UAC5D,MAAO3nC,GACH,EAKNrC,EAAQo5H,MACP,SAAUn1H,GACX,IACEy2X,EAAO2gD,mBACJxha,QAAO,SAAU2a,GAAO,OAAOA,EAAIvwB,SACnCxD,SAAQ,SAAU+zB,GAAO,OAAOA,EAAIvwB,MAAMw+G,EAAQi4Q,EAAO1wV,MAAO/lC,MACnE,MAAO5B,GACH,EAKNpC,EAAOgE,WAKbi3a,EAAMr9a,UAAU+5E,UAAY,SAAoBe,EAAIp5E,GAClD,OAAO28a,EAAiBvjW,EAAIh7E,KAAK+9a,aAAcn8a,IAGjD27a,EAAMr9a,UAAU47a,gBAAkB,SAA0B9gW,EAAIp5E,GAC9D,IAAIoyZ,EAAqB,oBAAPh5U,EAAoB,CAAEkvL,OAAQlvL,GAAOA,EACvD,OAAOujW,EAAiBvqB,EAAMh0Z,KAAK09a,mBAAoB97a,IAGzD27a,EAAMr9a,UAAUqjV,MAAQ,SAAgBniL,EAAQtpD,EAAIl2G,GAChD,IAAIm7X,EAAS/8X,KAKf,OAAOA,KAAKg+a,WAAWp4E,QAAO,WAAc,OAAOxkM,EAAO27N,EAAO1wV,MAAO0wV,EAAO4/C,WAAa7kU,EAAIl2G,IAGlG27a,EAAMr9a,UAAUq+C,aAAe,SAAuBlS,GAClD,IAAI0wV,EAAS/8X,KAEfA,KAAK8+a,aAAY,WACf/hD,EAAOI,IAAIz8J,MAAMk+M,QAAUvyY,MAI/BkxY,EAAMr9a,UAAU+/a,eAAiB,SAAyB7yV,EAAM8uV,EAAWt6a,QACtD,IAAZA,IAAqBA,EAAU,IAElB,kBAATwrF,IAAqBA,EAAO,CAACA,IAOxCptF,KAAK69a,SAAS/tM,SAAS1iJ,EAAM8uV,GAC7BiC,EAAcn+a,KAAMA,KAAKqsC,MAAO+gD,EAAMptF,KAAK69a,SAASn8a,IAAI0rF,GAAOxrF,EAAQs+a,eAEvE9B,EAAap+a,KAAMA,KAAKqsC,QAG1BkxY,EAAMr9a,UAAUigb,iBAAmB,SAA2B/yV,GAC1D,IAAI2vS,EAAS/8X,KAEK,kBAATotF,IAAqBA,EAAO,CAACA,IAMxCptF,KAAK69a,SAAS7uF,WAAW5hQ,GACzBptF,KAAK8+a,aAAY,WACf,IAAIE,EAAcC,EAAeliD,EAAO1wV,MAAO+gD,EAAK7gD,MAAM,GAAI,IAC9D85S,EAAIrkV,OAAOg9a,EAAa5xV,EAAKA,EAAK/rF,OAAS,OAE7Cm9a,EAAWx+a,OAGbu9a,EAAMr9a,UAAUkgb,UAAY,SAAoBhzV,GAO9C,MANoB,kBAATA,IAAqBA,EAAO,CAACA,IAMjCptF,KAAK69a,SAASP,aAAalwV,IAGpCmwV,EAAMr9a,UAAUmgb,UAAY,SAAoBzwC,GAC9C5vY,KAAK69a,SAASxkU,OAAOu2R,GACrB4uC,EAAWx+a,MAAM,IAGnBu9a,EAAMr9a,UAAU4+a,YAAc,SAAsB9jW,GAClD,IAAIslW,EAAatgb,KAAKw9a,YACtBx9a,KAAKw9a,aAAc,EACnBxiW,IACAh7E,KAAKw9a,YAAc8C,GAGrB/gb,OAAOywJ,iBAAkButR,EAAMr9a,UAAWo+a,GAmT1C,IAAIiC,EAAWC,GAAmB,SAAU33Q,EAAW43Q,GACrD,IAAIhlT,EAAM,GA0BV,OAtBAilT,EAAaD,GAAQ39a,SAAQ,SAAUyiV,GACrC,IAAI3pU,EAAM2pU,EAAI3pU,IACVsjB,EAAMqmT,EAAIrmT,IAEdu8F,EAAI7/G,GAAO,WACT,IAAIywB,EAAQrsC,KAAKw7a,OAAOnvY,MACpBswY,EAAU38a,KAAKw7a,OAAOmB,QAC1B,GAAI9zQ,EAAW,CACb,IAAIte,EAASo2R,EAAqB3gb,KAAKw7a,OAAQ,WAAY3yQ,GAC3D,IAAKte,EACH,OAEFl+G,EAAQk+G,EAAOl0C,QAAQhqE,MACvBswY,EAAUpyR,EAAOl0C,QAAQsmU,QAE3B,MAAsB,oBAARz9Y,EACVA,EAAIv+B,KAAKX,KAAMqsC,EAAOswY,GACtBtwY,EAAMnN,IAGZu8F,EAAI7/G,GAAKgla,MAAO,KAEXnlT,KASLolT,EAAeL,GAAmB,SAAU33Q,EAAW6zQ,GACzD,IAAIjhT,EAAM,GA0BV,OAtBAilT,EAAahE,GAAW55a,SAAQ,SAAUyiV,GACxC,IAAI3pU,EAAM2pU,EAAI3pU,IACVsjB,EAAMqmT,EAAIrmT,IAEdu8F,EAAI7/G,GAAO,WACT,IAAIw2E,EAAO,GAAIyO,EAAMz/F,UAAUC,OAC/B,MAAQw/F,IAAQzO,EAAMyO,GAAQz/F,UAAWy/F,GAGzC,IAAIq0K,EAASl1Q,KAAKw7a,OAAOtmK,OACzB,GAAIrsG,EAAW,CACb,IAAIte,EAASo2R,EAAqB3gb,KAAKw7a,OAAQ,eAAgB3yQ,GAC/D,IAAKte,EACH,OAEF2qH,EAAS3qH,EAAOl0C,QAAQ6+J,OAE1B,MAAsB,oBAARh2O,EACVA,EAAIn7B,MAAM/D,KAAM,CAACk1Q,GAAQ1uQ,OAAO4rF,IAChC8iL,EAAOnxQ,MAAM/D,KAAKw7a,OAAQ,CAACt8Y,GAAK14B,OAAO4rF,QAGxCqpC,KASLqlT,EAAaN,GAAmB,SAAU33Q,EAAW8zQ,GACvD,IAAIlhT,EAAM,GAuBV,OAnBAilT,EAAa/D,GAAS75a,SAAQ,SAAUyiV,GACtC,IAAI3pU,EAAM2pU,EAAI3pU,IACVsjB,EAAMqmT,EAAIrmT,IAGdA,EAAM2pI,EAAY3pI,EAClBu8F,EAAI7/G,GAAO,WACT,IAAIitJ,GAAc83Q,EAAqB3gb,KAAKw7a,OAAQ,aAAc3yQ,GAOlE,OAAO7oK,KAAKw7a,OAAOmB,QAAQz9Y,IAG7Bu8F,EAAI7/G,GAAKgla,MAAO,KAEXnlT,KASLslT,EAAaP,GAAmB,SAAU33Q,EAAWozF,GACvD,IAAIxgI,EAAM,GA0BV,OAtBAilT,EAAazkL,GAASn5P,SAAQ,SAAUyiV,GACtC,IAAI3pU,EAAM2pU,EAAI3pU,IACVsjB,EAAMqmT,EAAIrmT,IAEdu8F,EAAI7/G,GAAO,WACT,IAAIw2E,EAAO,GAAIyO,EAAMz/F,UAAUC,OAC/B,MAAQw/F,IAAQzO,EAAMyO,GAAQz/F,UAAWy/F,GAGzC,IAAIq9U,EAAWl+a,KAAKw7a,OAAO0C,SAC3B,GAAIr1Q,EAAW,CACb,IAAIte,EAASo2R,EAAqB3gb,KAAKw7a,OAAQ,aAAc3yQ,GAC7D,IAAKte,EACH,OAEF2zR,EAAW3zR,EAAOl0C,QAAQ6nU,SAE5B,MAAsB,oBAARh/Y,EACVA,EAAIn7B,MAAM/D,KAAM,CAACk+a,GAAU13a,OAAO4rF,IAClC8rV,EAASn6a,MAAM/D,KAAKw7a,OAAQ,CAACt8Y,GAAK14B,OAAO4rF,QAG1CqpC,KAQLulT,EAA0B,SAAUn4Q,GAAa,MAAO,CAC1D03Q,SAAUA,EAASl9X,KAAK,KAAMwlH,GAC9Bi4Q,WAAYA,EAAWz9X,KAAK,KAAMwlH,GAClCg4Q,aAAcA,EAAax9X,KAAK,KAAMwlH,GACtCk4Q,WAAYA,EAAW19X,KAAK,KAAMwlH,KAUpC,SAAS63Q,EAAc3ka,GACrB,OAAKkla,EAAWlla,GAGTrc,MAAM21E,QAAQt5D,GACjBA,EAAIA,KAAI,SAAUH,GAAO,MAAO,CAAGA,IAAKA,EAAKsjB,IAAKtjB,MAClDrc,OAAOsD,KAAKkZ,GAAKA,KAAI,SAAUH,GAAO,MAAO,CAAGA,IAAKA,EAAKsjB,IAAKnjB,EAAIH,OAJ9D,GAYX,SAASqla,EAAYlla,GACnB,OAAOrc,MAAM21E,QAAQt5D,IAAQi9D,EAASj9D,GAQxC,SAASyka,EAAoBxlW,GAC3B,OAAO,SAAU6tF,EAAW9sJ,GAO1B,MANyB,kBAAd8sJ,GACT9sJ,EAAM8sJ,EACNA,EAAY,IACwC,MAA3CA,EAAU/yH,OAAO+yH,EAAUxnK,OAAS,KAC7CwnK,GAAa,KAER7tF,EAAG6tF,EAAW9sJ,IAWzB,SAAS4ka,EAAsB72Q,EAAO8lI,EAAQ/mI,GAC5C,IAAIte,EAASuf,EAAMg0Q,qBAAqBj1Q,GAIxC,OAAOte,EAKT,SAAS22R,EAAc37F,QACR,IAARA,IAAiBA,EAAM,IAC5B,IAAI47F,EAAY57F,EAAI47F,eAA8B,IAAdA,IAAuBA,GAAY,GACvE,IAAIjla,EAASqpU,EAAIrpU,YAAwB,IAAXA,IAAoBA,EAAS,SAAU2/Z,EAAUuF,EAAaC,GAAc,OAAO,IACjH,IAAIC,EAAc/7F,EAAI+7F,iBAAkC,IAAhBA,IAAyBA,EAAc,SAAUj1Y,GAAS,OAAOA,IACzG,IAAIk1Y,EAAsBh8F,EAAIg8F,yBAAkD,IAAxBA,IAAiCA,EAAsB,SAAUC,GAAO,OAAOA,IACvI,IAAIC,EAAel8F,EAAIk8F,kBAAoC,IAAjBA,IAA0BA,EAAe,SAAU38T,EAAQz4E,GAAS,OAAO,IACrH,IAAIq1Y,EAAoBn8F,EAAIm8F,uBAA8C,IAAtBA,IAA+BA,EAAoB,SAAUC,GAAO,OAAOA,IAC/H,IAAIC,EAAer8F,EAAIq8F,kBAAoC,IAAjBA,IAA0BA,GAAe,GACnF,IAAIC,EAAat8F,EAAIs8F,gBAAgC,IAAfA,IAAwBA,GAAa,GAC3E,IAAI3/a,EAASqjV,EAAIrjV,OAEjB,YAFyC,IAAXA,IAAoBA,EAASy0E,SAEpD,SAAUmzF,GACf,IAAIg4Q,EAAY/F,EAASjyQ,EAAMz9H,OAET,qBAAXnqC,IAIP0/a,GACF93Q,EAAM7vF,WAAU,SAAU4hW,EAAUxvY,GAClC,IAAI01Y,EAAYhG,EAAS1vY,GAEzB,GAAInwB,EAAO2/Z,EAAUiG,EAAWC,GAAY,CAC1C,IAAIC,EAAgBC,IAChBC,EAAoBX,EAAoB1F,GACxCzvZ,EAAU,YAAeyvZ,EAAa,KAAImG,EAE9CG,EAAajgb,EAAQkqB,EAAS+0Z,GAC9Bj/a,EAAOwB,IAAI,gBAAiB,oCAAqC49a,EAAYQ,IAC7E5/a,EAAOwB,IAAI,cAAe,oCAAqCw+a,GAC/Dhgb,EAAOwB,IAAI,gBAAiB,oCAAqC49a,EAAYS,IAC7EK,EAAWlgb,GAGb4/a,EAAYC,KAIZF,GACF/3Q,EAAMgyQ,iBAAgB,SAAUh3T,EAAQz4E,GACtC,GAAIo1Y,EAAa38T,EAAQz4E,GAAQ,CAC/B,IAAI21Y,EAAgBC,IAChBI,EAAkBX,EAAkB58T,GACpC14F,EAAU,UAAa04F,EAAW,KAAIk9T,EAE1CG,EAAajgb,EAAQkqB,EAAS+0Z,GAC9Bj/a,EAAOwB,IAAI,YAAa,oCAAqC2+a,GAC7DD,EAAWlgb,SAOrB,SAASigb,EAAcjgb,EAAQkqB,EAAS+0Z,GACtC,IAAIgB,EAAehB,EACfj/a,EAAOogb,eACPpgb,EAAOizK,MAGX,IACEgtQ,EAAaxhb,KAAKuB,EAAQkqB,GAC1B,MAAO1nB,GACPxC,EAAOwB,IAAI0oB,IAIf,SAASg2Z,EAAYlgb,GACnB,IACEA,EAAOqgb,WACP,MAAO79a,GACPxC,EAAOwB,IAAI,kBAIf,SAASu+a,IACP,IAAI78X,EAAO,IAAI52B,KACf,MAAQ,MAAS6xE,EAAIj7C,EAAKk0I,WAAY,GAAM,IAAOj5F,EAAIj7C,EAAKo0I,aAAc,GAAM,IAAOn5F,EAAIj7C,EAAKs0I,aAAc,GAAM,IAAOr5F,EAAIj7C,EAAKw0I,kBAAmB,GAGzJ,SAASrY,EAAQ5mK,EAAKs4P,GACpB,OAAO,IAAKvzQ,MAAMuzQ,EAAQ,GAAIjtP,KAAKrL,GAGrC,SAAS0lF,EAAKhyF,EAAK0xE,GACjB,OAAOwhG,EAAO,IAAKxhG,EAAY1xE,EAAIE,WAAWlN,QAAUgN,EAG1D,IAAIikC,EAAQ,CACVirY,MAAOA,EACP7uE,QAASA,EACTnoV,QAAS,QACTg6Z,SAAUA,EACVM,aAAcA,EACdC,WAAYA,EACZC,WAAYA,EACZC,wBAAyBA,EACzBE,aAAcA,GAGhB,W,sICztCA,MAAMsB,EAAgB,CAAC3pV,EAAQ4pV,IAAiBA,EAAanvZ,MAAM2gD,GAAM4kB,aAAkB5kB,IAE3F,IAAIyuW,EACAC,EAEJ,SAASC,IACL,OAAQF,IACHA,EAAoB,CACjBG,YACAC,eACAC,SACAC,UACAC,iBAIZ,SAASC,IACL,OAAQP,IACHA,EAAuB,CACpBK,UAAU9ib,UAAUijb,QACpBH,UAAU9ib,UAAUkjb,SACpBJ,UAAU9ib,UAAUmjb,qBAGhC,MAAMC,EAAmB,IAAIr4Q,QACvBs4Q,EAAqB,IAAIt4Q,QACzBu4Q,EAA2B,IAAIv4Q,QAC/Bw4Q,EAAiB,IAAIx4Q,QACrBy4Q,EAAwB,IAAIz4Q,QAClC,SAAS04Q,EAAiBxhb,GACtB,MAAM00E,EAAU,IAAIz0E,SAAQ,CAACC,EAASC,KAClC,MAAMshb,EAAW,KACbzhb,EAAQuhD,oBAAoB,UAAW33B,GACvC5pB,EAAQuhD,oBAAoB,QAASp9C,IAEnCylB,EAAU,KACZ1pB,EAAQ,EAAKF,EAAQyC,SACrBg/a,KAEEt9a,EAAQ,KACVhE,EAAOH,EAAQmE,OACfs9a,KAEJzhb,EAAQujB,iBAAiB,UAAWqG,GACpC5pB,EAAQujB,iBAAiB,QAASpf,MAetC,OAbAuwE,EACK/xE,MAAMR,IAGHA,aAAiB0+a,WACjBM,EAAiB36Z,IAAIrkB,EAAOnC,MAI/Bs7D,OAAM,SAGXimX,EAAsB/6Z,IAAIkuD,EAAS10E,GAC5B00E,EAEX,SAASgtW,EAA+BhiJ,GAEpC,GAAI0hJ,EAAmB16Z,IAAIg5Q,GACvB,OACJ,MAAMh9R,EAAO,IAAIzC,SAAQ,CAACC,EAASC,KAC/B,MAAMshb,EAAW,KACb/hJ,EAAGn+O,oBAAoB,WAAY+2B,GACnConN,EAAGn+O,oBAAoB,QAASp9C,GAChCu7R,EAAGn+O,oBAAoB,QAASp9C,IAE9Bm0E,EAAW,KACbp4E,IACAuhb,KAEEt9a,EAAQ,KACVhE,EAAOu/R,EAAGv7R,OAAS,IAAIw9a,aAAa,aAAc,eAClDF,KAEJ/hJ,EAAGn8Q,iBAAiB,WAAY+0D,GAChConN,EAAGn8Q,iBAAiB,QAASpf,GAC7Bu7R,EAAGn8Q,iBAAiB,QAASpf,MAGjCi9a,EAAmB56Z,IAAIk5Q,EAAIh9R,GAE/B,IAAIk/a,EAAgB,CAChBrib,IAAIikB,EAAQ86D,EAAM48I,GACd,GAAI13M,aAAkBs9Z,eAAgB,CAElC,GAAa,SAATxiW,EACA,OAAO8iW,EAAmB7hb,IAAIikB,GAElC,GAAa,qBAAT86D,EACA,OAAO96D,EAAO05M,kBAAoBmkN,EAAyB9hb,IAAIikB,GAGnE,GAAa,UAAT86D,EACA,OAAO48I,EAASgC,iBAAiB,QAC3Bn5L,EACAm3L,EAASj2M,YAAYi2M,EAASgC,iBAAiB,IAI7D,OAAO,EAAK15M,EAAO86D,KAEvB93D,IAAIhD,EAAQ86D,EAAMn8E,GAEd,OADAqhB,EAAO86D,GAAQn8E,GACR,GAEXukB,IAAIlD,EAAQ86D,GACR,OAAI96D,aAAkBs9Z,iBACR,SAATxiW,GAA4B,UAATA,IAGjBA,KAAQ96D,IAGvB,SAASq+Z,EAAa3xZ,GAClB0xZ,EAAgB1xZ,EAAS0xZ,GAE7B,SAASE,EAAal1V,GAIlB,OAAIA,IAAS8zV,YAAY3ib,UAAUinB,aAC7B,qBAAsB87Z,eAAe/ib,UAYvCgjb,IAA0BrqW,SAASkW,GAC5B,YAAaqD,GAIhB,OADArD,EAAKhrF,MAAMqhL,EAAOplL,MAAOoyF,GAClB,EAAKkxV,EAAiB5hb,IAAI1B,QAGlC,YAAaoyF,GAGhB,OAAO,EAAKrD,EAAKhrF,MAAMqhL,EAAOplL,MAAOoyF,KAtB9B,SAAU8xV,KAAe9xV,GAC5B,MAAMyvM,EAAK9yM,EAAKpuF,KAAKykL,EAAOplL,MAAOkkb,KAAe9xV,GAElD,OADAoxV,EAAyB76Z,IAAIk5Q,EAAIqiJ,EAAW99Z,KAAO89Z,EAAW99Z,OAAS,CAAC89Z,IACjE,EAAKriJ,IAsBxB,SAASsiJ,EAAuB7/a,GAC5B,MAAqB,oBAAVA,EACA2/a,EAAa3/a,IAGpBA,aAAiB2+a,gBACjBY,EAA+Bv/a,GAC/Bk+a,EAAcl+a,EAAOs+a,KACd,IAAIx/O,MAAM9+L,EAAOy/a,GAErBz/a,GAEX,SAAS,EAAKA,GAGV,GAAIA,aAAiB8/a,WACjB,OAAOT,EAAiBr/a,GAG5B,GAAIm/a,EAAe56Z,IAAIvkB,GACnB,OAAOm/a,EAAe/hb,IAAI4C,GAC9B,MAAMy/C,EAAWogY,EAAuB7/a,GAOxC,OAJIy/C,IAAaz/C,IACbm/a,EAAe96Z,IAAIrkB,EAAOy/C,GAC1B2/X,EAAsB/6Z,IAAIo7B,EAAUz/C,IAEjCy/C,EAEX,MAAMqhI,EAAU9gL,GAAUo/a,EAAsBhib,IAAI4C,GC5KpD,SAASoiB,EAAOrT,EAAMkT,GAAS,QAAE89Z,EAAO,QAAEC,EAAO,SAAEC,EAAQ,WAAEC,GAAe,IACxE,MAAMrib,EAAUwkB,UAAUlkB,KAAK4Q,EAAMkT,GAC/Bk+Z,EAAc,EAAKtib,GAgBzB,OAfImib,GACAnib,EAAQujB,iBAAiB,iBAAkBkB,IACvC09Z,EAAQ,EAAKnib,EAAQyC,QAASgiB,EAAM89Z,WAAY99Z,EAAM+9Z,WAAY,EAAKxib,EAAQglB,iBAGnFk9Z,GACAlib,EAAQujB,iBAAiB,WAAW,IAAM2+Z,MAC9CI,EACK3/a,MAAMgiB,IACH09Z,GACA19Z,EAAGpB,iBAAiB,SAAS,IAAM8+Z,MACnCD,GACAz9Z,EAAGpB,iBAAiB,iBAAiB,IAAM6+Z,SAE9C9mX,OAAM,SACJgnX,EAcX,MAAMG,EAAc,CAAC,MAAO,SAAU,SAAU,aAAc,SACxDC,EAAe,CAAC,MAAO,MAAO,SAAU,SACxCC,EAAgB,IAAIp8Z,IAC1B,SAASogJ,EAAUnjJ,EAAQ86D,GACvB,KAAM96D,aAAkBk9Z,cAClBpiW,KAAQ96D,GACM,kBAAT86D,EACP,OAEJ,GAAIqkW,EAAcpjb,IAAI++E,GAClB,OAAOqkW,EAAcpjb,IAAI++E,GAC7B,MAAMskW,EAAiBtkW,EAAKvvE,QAAQ,aAAc,IAC5C8za,EAAWvkW,IAASskW,EACpBE,EAAUJ,EAAahsW,SAASksW,GACtC,KAEEA,KAAmBC,EAAWjC,SAAWD,gBAAgB5ib,aACrD+kb,IAAWL,EAAY/rW,SAASksW,GAClC,OAEJ,MAAMjjb,EAAS4+H,eAAgB13G,KAAcopE,GAEzC,MAAMyvM,EAAK7hS,KAAKmnB,YAAY6B,EAAWi8Z,EAAU,YAAc,YAC/D,IAAIt/Z,EAASk8Q,EAAG/3H,MAQhB,OAPIk7Q,IACAr/Z,EAASA,EAAO2sB,MAAM8/C,EAAKp0C,iBAMjB57C,QAAQw/B,IAAI,CACtBjc,EAAOo/Z,MAAmB3yV,GAC1B6yV,GAAWpjJ,EAAGh9R,QACd,IAGR,OADAigb,EAAcn8Z,IAAI83D,EAAM3+E,GACjBA,EAEXkib,GAAckB,IAAa,IACpBA,EACHxjb,IAAK,CAACikB,EAAQ86D,EAAM48I,IAAav0D,EAAUnjJ,EAAQ86D,IAASykW,EAASxjb,IAAIikB,EAAQ86D,EAAM48I,GACvFx0M,IAAK,CAAClD,EAAQ86D,MAAWqoF,EAAUnjJ,EAAQ86D,IAASykW,EAASr8Z,IAAIlD,EAAQ86D;;;;;;;;;;;;;;;;;AC9D7E,MAAM0kW,EACFllb,YAAYyyI,GACR1yI,KAAK0yI,UAAYA,EAIrB0yS,wBACI,MAAM3iO,EAAYziN,KAAK0yI,UAAU2yS,eAGjC,OAAO5iO,EACF1mM,KAAIgnD,IACL,GAAIuiX,EAAyBviX,GAAW,CACpC,MAAMoV,EAAUpV,EAAS63I,eACzB,MAAO,GAAGziI,EAAQotW,WAAWptW,EAAQ5xD,UAGrC,OAAO,QAGVrK,QAAOspa,GAAaA,IACpBx/Z,KAAK,MAWlB,SAASs/Z,EAAyBviX,GAC9B,MAAMyvO,EAAYzvO,EAAS0iX,eAC3B,MAAkF,aAA5D,OAAdjzI,QAAoC,IAAdA,OAAuB,EAASA,EAAUtlR,MAG5E,MAAMw4Z,EAAS,gBACTC,EAAY,SAkBZzjb,EAAS,IAAI,KAAO,iBAEpB0jb,EAAS,uBAETC,EAAS,6BAETC,EAAS,sBAETC,EAAS,6BAETC,EAAS,sBAETC,EAAS,iBAETC,EAAS,wBAETC,EAAS,qBAETC,EAAS,4BAETC,EAAS,sBAETC,EAAS,6BAETC,EAAS,0BAETC,EAAS,iCAETC,EAAS,sBAETC,EAAS,6BAETC,EAAS,wBAETC,EAAS,+BAETC,EAAS,0BAETC,EAAS,iCAETC,EAAS,oBAETC,GAAS,2BAETC,GAAS,sBAETlsB,GAAS,6BAET,GAAO,WACPx0Y,GAAU,QAuBV2ga,GAAqB,YACrBC,GAAsB,CACxB,CAACzB,GAAS,YACV,CAACE,GAAS,mBACV,CAACE,GAAS,iBACV,CAACD,GAAS,wBACV,CAACG,GAAS,iBACV,CAACD,GAAS,wBACV,CAACE,GAAS,YACV,CAACC,GAAS,mBACV,CAACC,GAAS,YACV,CAACC,GAAS,mBACV,CAACC,GAAS,UACV,CAACC,GAAS,iBACV,CAACC,GAAS,WACV,CAACC,GAAS,kBACV,CAACC,GAAS,WACV,CAACC,GAAS,kBACV,CAACC,GAAS,YACV,CAACC,GAAS,mBACV,CAACC,GAAS,UACV,CAACC,GAAS,iBACV,CAACC,GAAS,WACV,CAACC,IAAS,kBACV,CAACC,IAAS,WACV,CAAClsB,IAAS,kBACV,UAAW,UACX,CAAC,IAAO,eAsBNqsB,GAAQ,IAAI1+Z,IAOZ2+Z,GAAc,IAAI3+Z,IAMxB,SAAS4+Z,GAAcl0T,EAAKo/K,GACxB,IACIp/K,EAAIsf,UAAU60S,aAAa/0I,GAE/B,MAAO9tS,GACHxC,EAAOslb,MAAM,aAAah1I,EAAUn/R,4CAA4C+/G,EAAI//G,OAAQ3O,IAiBpG,SAAS+ib,GAAmBj1I,GACxB,MAAMk1I,EAAgBl1I,EAAUn/R,KAChC,GAAIg0a,GAAYx+Z,IAAI6+Z,GAEhB,OADAxlb,EAAOslb,MAAM,sDAAsDE,OAC5D,EAEXL,GAAY1+Z,IAAI++Z,EAAel1I,GAE/B,IAAK,MAAMp/K,KAAOg0T,GAAMh1Y,SACpBk1Y,GAAcl0T,EAAKo/K,GAEvB,OAAO,EAWX,SAASm1I,GAAav0T,EAAK//G,GACvB,MAAMu0a,EAAsBx0T,EAAIsf,UAC3By+F,YAAY,aACZv2B,aAAa,CAAE8Q,UAAU,IAI9B,OAHIk8N,GACKA,EAAoBC,mBAEtBz0T,EAAIsf,UAAUy+F,YAAY99N;;;;;;;;;;;;;;;;;AAsCrC,MAAMy0a,GAAS,CACX,CAAC,UAAwB,oFAEzB,CAAC,gBAAoC,gCACrC,CAAC,iBAAsC,kFACvC,CAAC,eAAkC,kDACnC,CAAC,wBAAoD,6EAErD,CAAC,wBAAoD,wDACrD,CAAC,gBAAoC,8EACrC,CAAC,eAAkC,mFACnC,CAAC,eAAoC,iFACrC,CAAC,kBAAwC,qFAEvCC,GAAgB,IAAI,KAAa,MAAO,WAAYD;;;;;;;;;;;;;;;;;AAkB1D,MAAME,GACF/nb,YAAY2B,EAASokD,EAAQ0sF,GACzB1yI,KAAKiob,YAAa,EAClBjob,KAAKoqY,SAAW7qY,OAAOwB,OAAO,GAAIa,GAClC5B,KAAKulI,QAAUhmI,OAAOwB,OAAO,GAAIilD,GACjChmD,KAAKy3S,MAAQzxP,EAAO3yC,KACpBrT,KAAKkob,gCACDliY,EAAOmiY,+BACXnob,KAAKoob,WAAa11S,EAClB1yI,KAAK0yI,UAAU60S,aAAa,IAAI,KAAU,OAAO,IAAMvnb,MAAM,WAE7Dmob,qCAEA,OADAnob,KAAKqob,iBACErob,KAAKkob,gCAEZC,mCAA+BjpZ,GAC/Bl/B,KAAKqob,iBACLrob,KAAKkob,gCAAkChpZ,EAEvC7rB,WAEA,OADArT,KAAKqob,iBACErob,KAAKy3S,MAEZ71S,cAEA,OADA5B,KAAKqob,iBACErob,KAAKoqY,SAEZpkV,aAEA,OADAhmD,KAAKqob,iBACErob,KAAKulI,QAEZmN,gBACA,OAAO1yI,KAAKoob,WAEZE,gBACA,OAAOtob,KAAKiob,WAEZK,cAAUppZ,GACVl/B,KAAKiob,WAAa/oZ,EAMtBmpZ,iBACI,GAAIrob,KAAKsob,UACL,MAAMP,GAAc5nb,OAAO,cAAiC,CAAEowB,QAASvwB,KAAKy3S;;;;;;;;;;;;;;;;GA0BxF,MAAM8wI,GAAchia,GACpB,SAASiia,GAAc5mb,EAAS6mb,EAAY,IACxC,GAAyB,kBAAdA,EAAwB,CAC/B,MAAMp1a,EAAOo1a,EACbA,EAAY,CAAEp1a,QAElB,MAAM2yC,EAASzmD,OAAOwB,OAAO,CAAEsS,KAAM6za,GAAoBiB,gCAAgC,GAASM,GAC5Fp1a,EAAO2yC,EAAO3yC,KACpB,GAAoB,kBAATA,IAAsBA,EAC7B,MAAM00a,GAAc5nb,OAAO,eAAmC,CAC1DowB,QAAS5f,OAAO0C,KAGxB,MAAMq1a,EAActB,GAAM1lb,IAAI2R,GAC9B,GAAIq1a,EAAa,CAEb,IAAI,QAAU9mb,EAAS8mb,EAAY9mb,WAC/B,QAAUokD,EAAQ0iY,EAAY1iY,QAC9B,OAAO0iY,EAGP,MAAMX,GAAc5nb,OAAO,gBAAqC,CAAEowB,QAASld,IAGnF,MAAMq/H,EAAY,IAAI,KAAmBr/H,GACzC,IAAK,MAAMm/R,KAAa60I,GAAYj1Y,SAChCsgG,EAAU60S,aAAa/0I,GAE3B,MAAMm2I,EAAS,IAAIX,GAAgBpmb,EAASokD,EAAQ0sF,GAEpD,OADA00S,GAAMz+Z,IAAItV,EAAMs1a,GACTA,EA+BX,SAASC,GAAOv1a,EAAO6za,IACnB,MAAM9zT,EAAMg0T,GAAM1lb,IAAI2R,GACtB,IAAK+/G,EACD,MAAM20T,GAAc5nb,OAAO,SAAuB,CAAEowB,QAASld,IAEjE,OAAO+/G,EA4CX,SAASy1T,GAAgBC,EAAkBvia,EAAS4wV,GAChD,IAAIx7V,EAGJ,IAAI4pa,EAA2D,QAAhD5pa,EAAKwra,GAAoB2B,UAAsC,IAAPnta,EAAgBA,EAAKmta,EACxF3xE,IACAouE,GAAW,IAAIpuE,KAEnB,MAAM4xE,EAAkBxD,EAAQ91Y,MAAM,SAChCu5Y,EAAkBzia,EAAQkpB,MAAM,SACtC,GAAIs5Y,GAAmBC,EAAiB,CACpC,MAAMp6Z,EAAU,CACZ,+BAA+B22Z,oBAA0Bh/Z,OAY7D,OAVIwia,GACAn6Z,EAAQ5oB,KAAK,iBAAiBu/a,sDAE9BwD,GAAmBC,GACnBp6Z,EAAQ5oB,KAAK,OAEbgjb,GACAp6Z,EAAQ5oB,KAAK,iBAAiBugB,2DAElCrkB,EAAOgzJ,KAAKtmI,EAAQ5I,KAAK,MAG7Byha,GAAmB,IAAI,KAAU,GAAGlC,aAAmB,KAAM,CAAGA,UAASh/Z,aAAY;;;;;;;;;;;;;;;;;AA4CzF,MAAMvY,GAAU,8BACVC,GAAa,EACbg7a,GAAa,2BACnB,IAAIC,GAAY,KAChB,SAASC,KAoBL,OAnBKD,KACDA,GAAYxia,EAAO1Y,GAASC,GAAY,CACpCq2a,QAAS,CAACx9Z,EAAI49Z,KAMV,OAAQA,GACJ,KAAK,EACD59Z,EAAGD,kBAAkBoia,QAGlCxrX,OAAM/4D,IACL,MAAMqjb,GAAc5nb,OAAO,eAAmC,CAC1Dipb,qBAAsB1kb,EAAE0nB,cAI7B88Z,GAEXxoT,eAAe2oT,GAA4Bj2T,GACvC,IACI,MAAMtsG,QAAWqia,KACjB,OAAOria,EACFK,YAAY8ha,IACZ7ha,YAAY6ha,IACZvnb,IAAI4nb,GAAWl2T,IAExB,MAAO1uH,GACH,MAAMqjb,GAAc5nb,OAAO,cAAiC,CACxDipb,qBAAsB1kb,EAAE0nB,WAIpCs0G,eAAe6oT,GAA2Bn2T,EAAKo2T,GAC3C,IACI,MAAM1ia,QAAWqia,KACXtnJ,EAAK/6Q,EAAGK,YAAY8ha,GAAY,aAChC7ha,EAAcy6Q,EAAGz6Q,YAAY6ha,IAEnC,aADM7ha,EAAYK,IAAI+ha,EAAiBF,GAAWl2T,IAC3CyuK,EAAGh9R,KAEd,MAAOH,GACH,MAAMqjb,GAAc5nb,OAAO,cAAmC,CAC1Dipb,qBAAsB1kb,EAAE0nB,WAIpC,SAASk9Z,GAAWl2T,GAChB,MAAO,GAAGA,EAAI//G,QAAQ+/G,EAAIxxH,QAAQg6H;;;;;;;;;;;;;;;;GAmBtC,MAAM6tT,GAAmB,KAEnBC,GAAwC,OAC9C,MAAMC,GACF1pb,YAAYyyI,GACR1yI,KAAK0yI,UAAYA,EAUjB1yI,KAAK4pb,iBAAmB,KACxB,MAAMx2T,EAAMpzH,KAAK0yI,UAAUy+F,YAAY,OAAOv2B,eAC9C56M,KAAK6pb,SAAW,IAAIC,GAAqB12T,GACzCpzH,KAAK+pb,wBAA0B/pb,KAAK6pb,SAASp9R,OAAO3nJ,MAAKF,IACrD5E,KAAK4pb,iBAAmBhlb,EACjBA,KAUf87H,yBACI,MAAMspT,EAAiBhqb,KAAK0yI,UACvBy+F,YAAY,mBACZv2B,eAGCqvO,EAAQD,EAAe5E,wBACvBllV,EAAOgqV,KAMb,GAL8B,OAA1Blqb,KAAK4pb,mBACL5pb,KAAK4pb,uBAAyB5pb,KAAK+pb,yBAInC/pb,KAAK4pb,iBAAiBO,wBAA0BjqV,IAChDlgG,KAAK4pb,iBAAiBQ,WAAW92Z,MAAK+2Z,GAAuBA,EAAoBnqV,OAASA,IAa9F,OARIlgG,KAAK4pb,iBAAiBQ,WAAWpkb,KAAK,CAAEk6F,OAAM+pV,UAGlDjqb,KAAK4pb,iBAAiBQ,WAAapqb,KAAK4pb,iBAAiBQ,WAAWlua,QAAOmua,IACvE,MAAMC,EAAc,IAAI97Z,KAAK67Z,EAAoBnqV,MAAM8yE,UACjDtiJ,EAAMlC,KAAKkC,MACjB,OAAOA,EAAM45Z,GAAeZ,MAEzB1pb,KAAK6pb,SAASU,UAAUvqb,KAAK4pb,kBASxClpT,4BAKI,GAJ8B,OAA1B1gI,KAAK4pb,wBACC5pb,KAAK+pb,wBAGe,OAA1B/pb,KAAK4pb,kBACuC,IAA5C5pb,KAAK4pb,iBAAiBQ,WAAW/ob,OACjC,MAAO,GAEX,MAAM6+F,EAAOgqV,MAEP,iBAAEM,EAAgB,cAAEC,GAAkBC,GAA2B1qb,KAAK4pb,iBAAiBQ,YACvFzsY,GAAe,OAA8BrjC,KAAKC,UAAU,CAAEgM,QAAS,EAAG6ja,WAAYI,KAgB5F,OAdAxqb,KAAK4pb,iBAAiBO,sBAAwBjqV,EAC1CuqV,EAAcppb,OAAS,GAEvBrB,KAAK4pb,iBAAiBQ,WAAaK,QAI7Bzqb,KAAK6pb,SAASU,UAAUvqb,KAAK4pb,oBAGnC5pb,KAAK4pb,iBAAiBQ,WAAa,GAE9Bpqb,KAAK6pb,SAASU,UAAUvqb,KAAK4pb,mBAE/BjsY,GAGf,SAASusY,KACL,MAAM/zY,EAAQ,IAAI3nB,KAElB,OAAO2nB,EAAM+5C,cAAct+E,UAAU,EAAG,IAE5C,SAAS84a,GAA2BC,EAAiBC,EAAUnB,IAG3D,MAAMe,EAAmB,GAEzB,IAAIC,EAAgBE,EAAgBp+Y,QACpC,IAAK,MAAM89Y,KAAuBM,EAAiB,CAE/C,MAAME,EAAiBL,EAAiBlia,MAAKwia,GAAMA,EAAGb,QAAUI,EAAoBJ,QACpF,GAAKY,GAiBD,GAHAA,EAAeE,MAAM/kb,KAAKqkb,EAAoBnqV,MAG1C8qV,GAAWR,GAAoBI,EAAS,CACxCC,EAAeE,MAAMhlb,MACrB,YAbJ,GAJAykb,EAAiBxkb,KAAK,CAClBikb,MAAOI,EAAoBJ,MAC3Bc,MAAO,CAACV,EAAoBnqV,QAE5B8qV,GAAWR,GAAoBI,EAAS,CAGxCJ,EAAiBzkb,MACjB,MAcR0kb,EAAgBA,EAAcl+Y,MAAM,GAExC,MAAO,CACHi+Y,mBACAC,iBAGR,MAAMX,GACF7pb,YAAYmzH,GACRpzH,KAAKozH,IAAMA,EACXpzH,KAAKirb,wBAA0Bjrb,KAAKkrb,+BAExCxqT,qCACI,SAAK,YAIM,UACF57H,MAAK,KAAM,IACX24D,OAAM,KAAM,IAMzBijE,aACI,MAAMyqT,QAAwBnrb,KAAKirb,wBACnC,GAAKE,EAGA,CACD,MAAMC,QAA2B/B,GAA4Brpb,KAAKozH,KAClE,OAAOg4T,GAAsB,CAAEhB,WAAY,IAJ3C,MAAO,CAAEA,WAAY,IAQ7B1pT,gBAAgB2qT,GACZ,IAAI1va,EACJ,MAAMwva,QAAwBnrb,KAAKirb,wBACnC,GAAKE,EAGA,CACD,MAAMG,QAAiCtrb,KAAKysJ,OAC5C,OAAO88R,GAA2Bvpb,KAAKozH,IAAK,CACxC+2T,sBAAyE,QAAjDxua,EAAK0va,EAAiBlB,6BAA0C,IAAPxua,EAAgBA,EAAK2va,EAAyBnB,sBAC/HC,WAAYiB,EAAiBjB,cAKzC1pT,UAAU2qT,GACN,IAAI1va,EACJ,MAAMwva,QAAwBnrb,KAAKirb,wBACnC,GAAKE,EAGA,CACD,MAAMG,QAAiCtrb,KAAKysJ,OAC5C,OAAO88R,GAA2Bvpb,KAAKozH,IAAK,CACxC+2T,sBAAyE,QAAjDxua,EAAK0va,EAAiBlB,6BAA0C,IAAPxua,EAAgBA,EAAK2va,EAAyBnB,sBAC/HC,WAAY,IACLkB,EAAyBlB,cACzBiB,EAAiBjB,gBAWxC,SAASY,GAAWL,GAEhB,OAAO,OAEPrwa,KAAKC,UAAU,CAAEgM,QAAS,EAAG6ja,WAAYO,KAAoBtpb;;;;;;;;;;;;;;;;GAmBjE,SAASkqb,GAAuBp0E,GAC5BswE,GAAmB,IAAI,KAAU,mBAAmB/0S,GAAa,IAAIyyS,EAA0BzyS,IAAY,YAC3G+0S,GAAmB,IAAI,KAAU,aAAa/0S,GAAa,IAAIi3S,GAAqBj3S,IAAY,YAEhGm2S,GAAgBnD,EAAQC,EAAWxuE,GAEnC0xE,GAAgBnD,EAAQC,EAAW,WAEnCkD,GAAgB,UAAW,IAS/B0C,GAAuB,K,sECv4BvB,MAAMC,EAOFvrb,YAAYoT,EAAMo4a,EAAiBv+Z,GAC/BltB,KAAKqT,KAAOA,EACZrT,KAAKyrb,gBAAkBA,EACvBzrb,KAAKktB,KAAOA,EACZltB,KAAK0rb,mBAAoB,EAIzB1rb,KAAK2rb,aAAe,GACpB3rb,KAAK4rb,kBAAoB,OACzB5rb,KAAK6rb,kBAAoB,KAE7Bx6M,qBAAqB76D,GAEjB,OADAx2K,KAAK4rb,kBAAoBp1Q,EAClBx2K,KAEX8rb,qBAAqBJ,GAEjB,OADA1rb,KAAK0rb,kBAAoBA,EAClB1rb,KAEX+rb,gBAAgBt2T,GAEZ,OADAz1H,KAAK2rb,aAAel2T,EACbz1H,KAEXsxO,2BAA2Bj/M,GAEvB,OADAryB,KAAK6rb,kBAAoBx5Z,EAClBryB;;;;;;;;;;;;;;;;GAoBf,MAAMknb,EAAqB;;;;;;;;;;;;;;;;GAsB3B,MAAM8E,EACF/rb,YAAYoT,EAAMq/H,GACd1yI,KAAKqT,KAAOA,EACZrT,KAAK0yI,UAAYA,EACjB1yI,KAAKwyS,UAAY,KACjBxyS,KAAKozY,UAAY,IAAI1qX,IACrB1oB,KAAKisb,kBAAoB,IAAIvja,IAC7B1oB,KAAKksb,iBAAmB,IAAIxja,IAC5B1oB,KAAKmsb,gBAAkB,IAAIzja,IAM/BhnB,IAAI07E,GAEA,MAAMgvW,EAAuBpsb,KAAKqsb,4BAA4BjvW,GAC9D,IAAKp9E,KAAKisb,kBAAkBpja,IAAIuja,GAAuB,CACnD,MAAME,EAAW,IAAI,KAErB,GADAtsb,KAAKisb,kBAAkBtja,IAAIyja,EAAsBE,GAC7Ctsb,KAAKk1G,cAAck3U,IACnBpsb,KAAKusb,uBAEL,IACI,MAAMr/R,EAAWltJ,KAAKwsb,uBAAuB,CACzCC,mBAAoBL,IAEpBl/R,GACAo/R,EAASjqb,QAAQ6qJ,GAGzB,MAAOxoJ,KAMf,OAAO1E,KAAKisb,kBAAkBvqb,IAAI0qb,GAAsBv1W,QAE5D+jI,aAAah5M,GACT,IAAI+Z,EAEJ,MAAMywa,EAAuBpsb,KAAKqsb,4BAAwC,OAAZzqb,QAAgC,IAAZA,OAAqB,EAASA,EAAQw7E,YAClHsuI,EAAyF,QAA7E/vM,EAAiB,OAAZ/Z,QAAgC,IAAZA,OAAqB,EAASA,EAAQ8pN,gBAA6B,IAAP/vM,GAAgBA,EACvH,IAAI3b,KAAKk1G,cAAck3U,KACnBpsb,KAAKusb,uBAeJ,CAED,GAAI7gO,EACA,OAAO,KAGP,MAAM9qN,MAAM,WAAWZ,KAAKqT,yBApBhC,IACI,OAAOrT,KAAKwsb,uBAAuB,CAC/BC,mBAAoBL,IAG5B,MAAO1nb,GACH,GAAIgnN,EACA,OAAO,KAGP,MAAMhnN,GActB+gb,eACI,OAAOzlb,KAAKwyS,UAEhBk6I,aAAal6I,GACT,GAAIA,EAAUn/R,OAASrT,KAAKqT,KACxB,MAAMzS,MAAM,yBAAyB4xS,EAAUn/R,qBAAqBrT,KAAKqT,SAE7E,GAAIrT,KAAKwyS,UACL,MAAM5xS,MAAM,iBAAiBZ,KAAKqT,kCAItC,GAFArT,KAAKwyS,UAAYA,EAEZxyS,KAAKusb,uBAAV,CAIA,GAAII,EAAiBn6I,GACjB,IACIxyS,KAAKwsb,uBAAuB,CAAEC,mBAAoBvF,IAEtD,MAAOxib,IAUX,IAAK,MAAO+nb,EAAoBG,KAAqB5sb,KAAKisb,kBAAkB7yW,UAAW,CACnF,MAAMgzW,EAAuBpsb,KAAKqsb,4BAA4BI,GAC9D,IAEI,MAAMv/R,EAAWltJ,KAAKwsb,uBAAuB,CACzCC,mBAAoBL,IAExBQ,EAAiBvqb,QAAQ6qJ,GAE7B,MAAOxoJ,OAMfmob,cAAczvW,EAAa8pW,GACvBlnb,KAAKisb,kBAAkBjqb,OAAOo7E,GAC9Bp9E,KAAKksb,iBAAiBlqb,OAAOo7E,GAC7Bp9E,KAAKozY,UAAUpxY,OAAOo7E,GAI1BsjD,eACI,MAAM45O,EAAW56W,MAAMshG,KAAKhhG,KAAKozY,UAAUhhW,gBACrChwC,QAAQw/B,IAAI,IACX04U,EACEp+V,QAAOi8D,GAAW,aAAcA,IAEhCp8D,KAAIo8D,GAAWA,EAAQ20W,SAAS9qb,cAClCs4W,EACEp+V,QAAOi8D,GAAW,YAAaA,IAE/Bp8D,KAAIo8D,GAAWA,EAAQ40W,cAGpCC,iBACI,OAAyB,MAAlBhtb,KAAKwyS,UAEhBt9L,cAAc93B,EAAa8pW,GACvB,OAAOlnb,KAAKozY,UAAUvqX,IAAIu0D,GAE9B09H,WAAW19H,EAAa8pW,GACpB,OAAOlnb,KAAKksb,iBAAiBxqb,IAAI07E,IAAe,GAEpDrO,WAAWimF,EAAO,IACd,MAAM,QAAEpzJ,EAAU,IAAOozJ,EACnBo3R,EAAuBpsb,KAAKqsb,4BAA4Br3R,EAAKy3R,oBACnE,GAAIzsb,KAAKk1G,cAAck3U,GACnB,MAAMxrb,MAAM,GAAGZ,KAAKqT,QAAQ+4a,mCAEhC,IAAKpsb,KAAKgtb,iBACN,MAAMpsb,MAAM,aAAaZ,KAAKqT,oCAElC,MAAM65I,EAAWltJ,KAAKwsb,uBAAuB,CACzCC,mBAAoBL,EACpBxqb,YAGJ,IAAK,MAAO6qb,EAAoBG,KAAqB5sb,KAAKisb,kBAAkB7yW,UAAW,CACnF,MAAM6zW,EAA+Bjtb,KAAKqsb,4BAA4BI,GAClEL,IAAyBa,GACzBL,EAAiBvqb,QAAQ6qJ,GAGjC,OAAOA,EAUXggS,OAAO76Z,EAAU+qD,GACb,IAAIzhE,EACJ,MAAMywa,EAAuBpsb,KAAKqsb,4BAA4BjvW,GACxD+vW,EAA8E,QAAzDxxa,EAAK3b,KAAKmsb,gBAAgBzqb,IAAI0qb,UAA0C,IAAPzwa,EAAgBA,EAAK,IAAIshB,IACrHkwZ,EAAkBhwZ,IAAI9K,GACtBryB,KAAKmsb,gBAAgBxja,IAAIyja,EAAsBe,GAC/C,MAAMhwN,EAAmBn9N,KAAKozY,UAAU1xY,IAAI0qb,GAI5C,OAHIjvN,GACA9qM,EAAS8qM,EAAkBivN,GAExB,KACHe,EAAkBnrb,OAAOqwB,IAOjC+6Z,sBAAsBlgS,EAAU9vE,GAC5B,MAAMxtD,EAAY5vB,KAAKmsb,gBAAgBzqb,IAAI07E,GAC3C,GAAKxtD,EAGL,IAAK,MAAMyC,KAAYzC,EACnB,IACIyC,EAAS66H,EAAU9vE,GAEvB,MAAOzhE,KAKf6wa,wBAAuB,mBAAEC,EAAkB,QAAE7qb,EAAU,KACnD,IAAIsrJ,EAAWltJ,KAAKozY,UAAU1xY,IAAI+qb,GAClC,IAAKv/R,GAAYltJ,KAAKwyS,YAClBtlJ,EAAWltJ,KAAKwyS,UAAUi5I,gBAAgBzrb,KAAK0yI,UAAW,CACtD+5S,mBAAoBY,EAA8BZ,GAClD7qb,YAEJ5B,KAAKozY,UAAUzqX,IAAI8ja,EAAoBv/R,GACvCltJ,KAAKksb,iBAAiBvja,IAAI8ja,EAAoB7qb,GAM9C5B,KAAKotb,sBAAsBlgS,EAAUu/R,GAMjCzsb,KAAKwyS,UAAUq5I,mBACf,IACI7rb,KAAKwyS,UAAUq5I,kBAAkB7rb,KAAK0yI,UAAW+5S,EAAoBv/R,GAEzE,MAAOvxI,IAKf,OAAOuxI,GAAY,KAEvBm/R,4BAA4BjvW,EAAa8pW,GACrC,OAAIlnb,KAAKwyS,UACExyS,KAAKwyS,UAAUk5I,kBAAoBtuW,EAAa8pW,EAGhD9pW,EAGfmvW,uBACI,QAAUvsb,KAAKwyS,WAC0B,aAArCxyS,KAAKwyS,UAAUo5I,mBAI3B,SAASyB,EAA8BjwW,GACnC,OAAOA,IAAe8pW,OAAqBhhZ,EAAYk3C,EAE3D,SAASuvW,EAAiBn6I,GACtB,MAAuC,UAAhCA,EAAUo5I;;;;;;;;;;;;;;;;GAsBrB,MAAM0B,EACFrtb,YAAYoT,GACRrT,KAAKqT,KAAOA,EACZrT,KAAKyiN,UAAY,IAAI/5L,IAWzB6+Z,aAAa/0I,GACT,MAAMzvO,EAAW/iE,KAAKmxO,YAAYqhE,EAAUn/R,MAC5C,GAAI0vD,EAASiqX,iBACT,MAAM,IAAIpsb,MAAM,aAAa4xS,EAAUn/R,yCAAyCrT,KAAKqT,QAEzF0vD,EAAS2pX,aAAal6I,GAE1B+6I,wBAAwB/6I,GACpB,MAAMzvO,EAAW/iE,KAAKmxO,YAAYqhE,EAAUn/R,MACxC0vD,EAASiqX,kBAEThtb,KAAKyiN,UAAUzgN,OAAOwwS,EAAUn/R,MAEpCrT,KAAKunb,aAAa/0I,GAStBrhE,YAAY99N,GACR,GAAIrT,KAAKyiN,UAAU55L,IAAIxV,GACnB,OAAOrT,KAAKyiN,UAAU/gN,IAAI2R,GAG9B,MAAM0vD,EAAW,IAAIipX,EAAS34a,EAAMrT,MAEpC,OADAA,KAAKyiN,UAAU95L,IAAItV,EAAM0vD,GAClBA,EAEXsiX,eACI,OAAO3lb,MAAMshG,KAAKhhG,KAAKyiN,UAAUrwK,a;;;;;;;;;;;;;;;;;AChYzC,MAAMghW,EAAY,GAYlB,IAAIh0Y,GACJ,SAAWA,GACPA,EAASA,EAAS,SAAW,GAAK,QAClCA,EAASA,EAAS,WAAa,GAAK,UACpCA,EAASA,EAAS,QAAU,GAAK,OACjCA,EAASA,EAAS,QAAU,GAAK,OACjCA,EAASA,EAAS,SAAW,GAAK,QAClCA,EAASA,EAAS,UAAY,GAAK,UANvC,CAOGA,IAAaA,EAAW,KAC3B,MAAMoub,EAAoB,CACtB,MAASpub,EAASqub,MAClB,QAAWrub,EAASsub,QACpB,KAAQtub,EAASirZ,KACjB,KAAQjrZ,EAASuub,KACjB,MAASvub,EAASyyC,MAClB,OAAUzyC,EAASwub,QAKjBC,EAAkBzub,EAASirZ,KAO3ByjC,EAAgB,CAClB,CAAC1ub,EAASqub,OAAQ,MAClB,CAACrub,EAASsub,SAAU,MACpB,CAACtub,EAASirZ,MAAO,OACjB,CAACjrZ,EAASuub,MAAO,OACjB,CAACvub,EAASyyC,OAAQ,SAOhBk8Y,EAAoB,CAAC7gS,EAAU8gS,KAAY57V,KAC7C,GAAI47V,EAAU9gS,EAASh/H,SACnB,OAEJ,MAAMwC,GAAM,IAAIlC,MAAO0hE,cACjBpuF,EAASgsb,EAAcE,GAC7B,IAAIlsb,EAIA,MAAM,IAAIlB,MAAM,8DAA8Dotb,MAH9Er3W,QAAQ70E,GAAQ,IAAI4uB,OAASw8H,EAAS75I,WAAY++E,IAM1D,MAAM5kE,EAOFvtB,YAAYoT,GACRrT,KAAKqT,KAAOA,EAIZrT,KAAKiub,UAAYJ,EAKjB7tb,KAAKkub,YAAcH,EAInB/tb,KAAKmub,gBAAkB,KAIvB/6C,EAAUptY,KAAKhG,MAEfkuB,eACA,OAAOluB,KAAKiub,UAEZ//Z,aAASgR,GACT,KAAMA,KAAO9/B,GACT,MAAM,IAAI0G,UAAU,kBAAkBo5B,+BAE1Cl/B,KAAKiub,UAAY/uZ,EAGrBkvZ,YAAYlvZ,GACRl/B,KAAKiub,UAA2B,kBAAR/uZ,EAAmBsuZ,EAAkBtuZ,GAAOA,EAEpEmvZ,iBACA,OAAOrub,KAAKkub,YAEZG,eAAWnvZ,GACX,GAAmB,oBAARA,EACP,MAAM,IAAIp5B,UAAU,qDAExB9F,KAAKkub,YAAchvZ,EAEnBovZ,qBACA,OAAOtub,KAAKmub,gBAEZG,mBAAepvZ,GACfl/B,KAAKmub,gBAAkBjvZ,EAK3BsoZ,SAASp1V,GACLpyF,KAAKmub,iBAAmBnub,KAAKmub,gBAAgBnub,KAAMZ,EAASqub,SAAUr7V,GACtEpyF,KAAKkub,YAAYlub,KAAMZ,EAASqub,SAAUr7V,GAE9C1uF,OAAO0uF,GACHpyF,KAAKmub,iBACDnub,KAAKmub,gBAAgBnub,KAAMZ,EAASsub,WAAYt7V,GACpDpyF,KAAKkub,YAAYlub,KAAMZ,EAASsub,WAAYt7V,GAEhDtjE,QAAQsjE,GACJpyF,KAAKmub,iBAAmBnub,KAAKmub,gBAAgBnub,KAAMZ,EAASirZ,QAASj4T,GACrEpyF,KAAKkub,YAAYlub,KAAMZ,EAASirZ,QAASj4T,GAE7C8iE,QAAQ9iE,GACJpyF,KAAKmub,iBAAmBnub,KAAKmub,gBAAgBnub,KAAMZ,EAASuub,QAASv7V,GACrEpyF,KAAKkub,YAAYlub,KAAMZ,EAASuub,QAASv7V,GAE7C9rF,SAAS8rF,GACLpyF,KAAKmub,iBAAmBnub,KAAKmub,gBAAgBnub,KAAMZ,EAASyyC,SAAUugD,GACtEpyF,KAAKkub,YAAYlub,KAAMZ,EAASyyC,SAAUugD,M,+CC/JlD,IAkBIm8V,EAAS,CAAC1wZ,EAAO,KACnBzZ,OAAOvV,gBAAgB,IAAID,WAAWivB,IAAO9L,QAAO,CAACkU,EAAIuoZ,KACvDA,GAAQ,GAENvoZ,GADEuoZ,EAAO,GACHA,EAAKjgb,SAAS,IACXigb,EAAO,IACTA,EAAO,IAAIjgb,SAAS,IAAIygD,cACtBw/X,EAAO,GACV,IAEA,IAEDvoZ,IACN,K,6BChCU,SAAS49J,EAAkB/nL,EAAK+kF,IAClC,MAAPA,GAAeA,EAAM/kF,EAAIza,UAAQw/F,EAAM/kF,EAAIza,QAE/C,IAAK,IAAIH,EAAI,EAAG8iM,EAAO,IAAItkM,MAAMmhG,GAAM3/F,EAAI2/F,EAAK3/F,IAC9C8iM,EAAK9iM,GAAK4a,EAAI5a,GAGhB,OAAO8iM,E,yECPT,SAASyqP,EAAmBC,EAAKrsb,EAASC,EAAQg0G,EAAOq4U,EAAQ/ya,EAAKwoF,GACpE,IACE,IAAIt1E,EAAO4/Z,EAAI9ya,GAAKwoF,GAChB9/F,EAAQwqB,EAAKxqB,MACjB,MAAOgC,GAEP,YADAhE,EAAOgE,GAILwoB,EAAKjqB,KACPxC,EAAQiC,GAERlC,QAAQC,QAAQiC,GAAOQ,KAAKwxG,EAAOq4U,GAIxB,SAASC,EAAkB5zW,GACxC,OAAO,WACL,IAAItD,EAAO13E,KACPoyF,EAAOhxF,UACX,OAAO,IAAIgB,SAAQ,SAAUC,EAASC,GACpC,IAAIosb,EAAM1zW,EAAGj3E,MAAM2zE,EAAM0a,GAEzB,SAASkkB,EAAMhyG,GACbmqb,EAAmBC,EAAKrsb,EAASC,EAAQg0G,EAAOq4U,EAAQ,OAAQrqb,GAGlE,SAASqqb,EAAO7/a,GACd2/a,EAAmBC,EAAKrsb,EAASC,EAAQg0G,EAAOq4U,EAAQ,QAAS7/a,GAGnEwnG,OAAMpwE,S,gEC/BG,SAAS2oZ,EAAgB3hS,EAAUpI,GAChD,KAAMoI,aAAoBpI,GACxB,MAAM,IAAIh/I,UAAU,uC,uDCFxB,SAASgpb,EAAkBnpa,EAAQ8vG,GACjC,IAAK,IAAIv0H,EAAI,EAAGA,EAAIu0H,EAAMp0H,OAAQH,IAAK,CACrC,IAAIwgG,EAAa+zB,EAAMv0H,GACvBwgG,EAAWrzD,WAAaqzD,EAAWrzD,aAAc,EACjDqzD,EAAWpzD,cAAe,EACtB,UAAWozD,IAAYA,EAAWs/D,UAAW,GACjDzhK,OAAO6uC,eAAezoB,EAAQ+7E,EAAW9lF,IAAK8lF,IAInC,SAASqtV,EAAajqS,EAAakqS,EAAYC,GAM5D,OALID,GAAYF,EAAkBhqS,EAAY5kJ,UAAW8ub,GACrDC,GAAaH,EAAkBhqS,EAAamqS,GAChD1vb,OAAO6uC,eAAe02G,EAAa,YAAa,CAC9Ckc,UAAU,IAELlc,I,8ICfM,SAASw+O,EAA2Bp9X,EAAGq9X,GACpD,IAAIzsO,EAAuB,qBAAXpxJ,QAA0BQ,EAAER,OAAOC,WAAaO,EAAE,cAElE,IAAK4wJ,EAAI,CACP,GAAIp3J,MAAM21E,QAAQnvE,KAAO4wJ,GAAKo4R,EAAAA,EAAAA,GAA2Bhpb,KAAOq9X,GAAkBr9X,GAAyB,kBAAbA,EAAE7E,OAAqB,CAC/Gy1J,IAAI5wJ,EAAI4wJ,GACZ,IAAI51J,EAAI,EAEJg/J,EAAI,aAER,MAAO,CACLj/J,EAAGi/J,EACH/+J,EAAG,WACD,OAAID,GAAKgF,EAAE7E,OAAe,CACxBwD,MAAM,GAED,CACLA,MAAM,EACNP,MAAO4B,EAAEhF,OAGbwD,EAAG,SAAW2xB,GACZ,MAAMA,GAERpxB,EAAGi7J,GAIP,MAAM,IAAIp6J,UAAU,yIAGtB,IAEIgJ,EAFA00X,GAAmB,EACnBC,GAAS,EAEb,MAAO,CACLxiY,EAAG,WACD61J,EAAKA,EAAGn2J,KAAKuF,IAEf/E,EAAG,WACD,IAAIqD,EAAOsyJ,EAAGryJ,OAEd,OADA++X,EAAmBh/X,EAAKK,KACjBL,GAETE,EAAG,SAAWyqb,GACZ1rD,GAAS,EACT30X,EAAMqgb,GAERlqb,EAAG,WACD,IACOu+X,GAAoC,MAAhB1sO,EAAG,WAAmBA,EAAG,YADpD,QAGE,GAAI2sO,EAAQ,MAAM30X,O,6GCjDX,SAASsgb,EAAaC,GACnC,IAAIC,GAA4BC,EAAAA,EAAAA,KAChC,OAAO,WACL,IACI3qb,EADA+ia,GAAQryQ,EAAAA,EAAAA,GAAe+5R,GAG3B,GAAIC,EAA2B,CAC7B,IAAI1lR,GAAYtU,EAAAA,EAAAA,GAAet1J,MAAMC,YACrC2E,EAASwjK,QAAQG,UAAUo/P,EAAOvma,UAAWwoK,QAE7ChlK,EAAS+ia,EAAM5ja,MAAM/D,KAAMoB,WAG7B,OAAOoub,EAAAA,EAAAA,GAA0Bxvb,KAAM4E,M,uDChB5B,SAASu+X,EAAgBroX,EAAKc,EAAKtX,GAYhD,OAXIsX,KAAOd,EACTvb,OAAO6uC,eAAetzB,EAAKc,EAAK,CAC9BtX,MAAOA,EACP+pC,YAAY,EACZC,cAAc,EACd0yH,UAAU,IAGZlmJ,EAAIc,GAAOtX,EAGNwW,I,yECZM,SAAS20a,EAAgBvpb,GAItC,OAHAupb,EAAkBlwb,OAAOC,eAAiBD,OAAO+1J,eAAejyG,OAAS,SAAyBn9C,GAChG,OAAOA,EAAEzG,WAAaF,OAAO+1J,eAAepvJ,IAEvCupb,EAAgBvpb,K,iGCHV,SAASwpb,EAAUC,EAAUC,GAC1C,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAI9pb,UAAU,sDAGtB6pb,EAASzvb,UAAYX,OAAOY,OAAOyvb,GAAcA,EAAW1vb,UAAW,CACrED,YAAa,CACXqE,MAAOqrb,EACP3uR,UAAU,EACV1yH,cAAc,KAGlB/uC,OAAO6uC,eAAeuhZ,EAAU,YAAa,CAC3C3uR,UAAU,IAER4uR,IAAYpwb,EAAAA,EAAAA,GAAemwb,EAAUC,K,wEChB5B,SAASzsP,IACtB,GAAuB,qBAAZ/6B,UAA4BA,QAAQG,UAAW,OAAO,EACjE,GAAIH,QAAQG,UAAU9B,KAAM,OAAO,EACnC,GAAqB,oBAAV28B,MAAsB,OAAO,EAExC,IAEE,OADA9rG,QAAQp3F,UAAU8yK,QAAQryK,KAAKynK,QAAQG,UAAUjxE,QAAS,IAAI,iBACvD,EACP,MAAO5yF,GACP,OAAO,K,sJCPX,SAASi7J,EAAQ9mE,EAAQuqS,GACvB,IAAIvgY,EAAOtD,OAAOsD,KAAKg2F,GAEvB,GAAIt5F,OAAOsvK,sBAAuB,CAChC,IAAIrF,EAAUjqK,OAAOsvK,sBAAsBh2E,GAC3CuqS,IAAmB55N,EAAUA,EAAQttJ,QAAO,SAAUmxK,GACpD,OAAO9tL,OAAOugK,yBAAyBjnE,EAAQw0F,GAAKh/I,eACjDxrC,EAAKmD,KAAKjC,MAAMlB,EAAM2mK,GAG7B,OAAO3mK,EAGM,SAASwgY,EAAe19W,GACrC,IAAK,IAAIzkB,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CACzC,IAAIolE,EAAS,MAAQllE,UAAUF,GAAKE,UAAUF,GAAK,GACnDA,EAAI,EAAIy+J,EAAQpgK,OAAO+mE,IAAS,GAAIxjE,SAAQ,SAAU8Y,IACpDwyB,EAAAA,EAAAA,GAAezoB,EAAQ/J,EAAK0qD,EAAO1qD,OAChCrc,OAAO8iL,0BAA4B9iL,OAAOywJ,iBAAiBrqI,EAAQpmB,OAAO8iL,0BAA0B/7G,IAAWq5F,EAAQpgK,OAAO+mE,IAASxjE,SAAQ,SAAU8Y,GAC5Jrc,OAAO6uC,eAAezoB,EAAQ/J,EAAKrc,OAAOugK,yBAAyBx5F,EAAQ1qD,OAI/E,OAAO+J,I,yECzBM,SAASkqa,EAA8BvpX,EAAQwpX,GAC5D,GAAc,MAAVxpX,EAAgB,MAAO,GAC3B,IAEI1qD,EAAK1a,EAFLykB,EAAS,GACToqa,EAAaxwb,OAAOsD,KAAKyjE,GAG7B,IAAKplE,EAAI,EAAGA,EAAI6ub,EAAW1ub,OAAQH,IACjC0a,EAAMm0a,EAAW7ub,GACb4ub,EAAS50a,QAAQU,IAAQ,IAC7B+J,EAAO/J,GAAO0qD,EAAO1qD,IAGvB,OAAO+J,ECXM,SAASqqa,EAAyB1pX,EAAQwpX,GACvD,GAAc,MAAVxpX,EAAgB,MAAO,GAC3B,IACI1qD,EAAK1a,EADLykB,EAASsqa,EAA6B3pX,EAAQwpX,GAGlD,GAAIvwb,OAAOsvK,sBAAuB,CAChC,IAAIqhR,EAAmB3wb,OAAOsvK,sBAAsBvoG,GAEpD,IAAKplE,EAAI,EAAGA,EAAIgvb,EAAiB7ub,OAAQH,IACvC0a,EAAMs0a,EAAiBhvb,GACnB4ub,EAAS50a,QAAQU,IAAQ,GACxBrc,OAAOW,UAAUkhG,qBAAqBzgG,KAAK2lE,EAAQ1qD,KACxD+J,EAAO/J,GAAO0qD,EAAO1qD,IAIzB,OAAO+J,I,8ECjBM,SAASwqa,EAAuBz4W,GAC7C,QAAa,IAATA,EACF,MAAM,IAAI04W,eAAe,6DAG3B,OAAO14W,ECHM,SAAS24W,EAA2B34W,EAAM/2E,GACvD,GAAIA,IAA2B,YAAlBsiM,EAAAA,EAAAA,GAAQtiM,IAAsC,oBAATA,GAChD,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAImF,UAAU,4DAGtB,OAAOwqb,EAAsB54W,K,yPCRhB,SAAS64W;;AAItBA,EAAsB,WACpB,OAAOjmS,GAGT,IAAIA,EAAU,GACVkmS,EAAKjxb,OAAOW,UACZw/J,EAAS8wR,EAAG1wb,eACZosK,EAAU,mBAAqBxmK,OAASA,OAAS,GACjD+qb,EAAiBvkR,EAAQvmK,UAAY,aACrC+qb,EAAsBxkR,EAAQykR,eAAiB,kBAC/CC,EAAoB1kR,EAAQitE,aAAe,gBAE/C,SAASx7E,EAAO7iJ,EAAKc,EAAKtX,GACxB,OAAO/E,OAAO6uC,eAAetzB,EAAKc,EAAK,CACrCtX,MAAOA,EACP+pC,YAAY,EACZC,cAAc,EACd0yH,UAAU,IACRlmJ,EAAIc,GAGV,IACE+hJ,EAAO,GAAI,IACX,MAAO7uJ,GACP6uJ,EAAS,SAAgB7iJ,EAAKc,EAAKtX,GACjC,OAAOwW,EAAIc,GAAOtX,GAItB,SAAS6xK,EAAK06Q,EAASC,EAASp5W,EAAMq5W,GACpC,IAAIC,EAAiBF,GAAWA,EAAQ5wb,qBAAqB+wb,EAAYH,EAAUG,EAC/E7sb,EAAY7E,OAAOY,OAAO6wb,EAAe9wb,WACzCm2G,EAAU,IAAI66U,EAAQH,GAAe,IACzC,OAAO3sb,EAAU+sb,QAAU,SAAUN,EAASn5W,EAAM2+B,GAClD,IAAIhqE,EAAQ,iBACZ,OAAO,SAAUvqC,EAAQsiG,GACvB,GAAI,cAAgB/3D,EAAO,MAAM,IAAIzrC,MAAM,gCAE3C,GAAI,cAAgByrC,EAAO,CACzB,GAAI,UAAYvqC,EAAQ,MAAMsiG,EAC9B,OAAOgtV,IAGT,IAAK/6U,EAAQv0G,OAASA,EAAQu0G,EAAQjS,IAAMA,IAAO,CACjD,IAAIitV,EAAWh7U,EAAQg7U,SAEvB,GAAIA,EAAU,CACZ,IAAIC,EAAiBC,EAAoBF,EAAUh7U,GAEnD,GAAIi7U,EAAgB,CAClB,GAAIA,IAAmBE,EAAkB,SACzC,OAAOF,GAIX,GAAI,SAAWj7U,EAAQv0G,OAAQu0G,EAAQ/wG,KAAO+wG,EAAQo7U,MAAQp7U,EAAQjS,SAAS,GAAI,UAAYiS,EAAQv0G,OAAQ,CAC7G,GAAI,mBAAqBuqC,EAAO,MAAMA,EAAQ,YAAagqE,EAAQjS,IACnEiS,EAAQq7U,kBAAkBr7U,EAAQjS,SAC7B,WAAaiS,EAAQv0G,QAAUu0G,EAAQs7U,OAAO,SAAUt7U,EAAQjS,KACvE/3D,EAAQ,YACR,IAAI2wU,EAAS40E,EAASf,EAASn5W,EAAM2+B,GAErC,GAAI,WAAa2mQ,EAAO9vV,KAAM,CAC5B,GAAImf,EAAQgqE,EAAQxxG,KAAO,YAAc,iBAAkBm4W,EAAO54Q,MAAQotV,EAAkB,SAC5F,MAAO,CACLltb,MAAO04W,EAAO54Q,IACdv/F,KAAMwxG,EAAQxxG,MAIlB,UAAYm4W,EAAO9vV,OAASmf,EAAQ,YAAagqE,EAAQv0G,OAAS,QAASu0G,EAAQjS,IAAM44Q,EAAO54Q,OArC3E,CAwCzBysV,EAASn5W,EAAM2+B,GAAUjyG,EAG7B,SAASwtb,EAAS52W,EAAIlgE,EAAKspF,GACzB,IACE,MAAO,CACLl3E,KAAM,SACNk3E,IAAKppB,EAAGr6E,KAAKma,EAAKspF,IAEpB,MAAOt1F,GACP,MAAO,CACLoe,KAAM,QACNk3E,IAAKt1F,IAKXw7I,EAAQ6rB,KAAOA,EACf,IAAIq7Q,EAAmB,GAEvB,SAASP,KAET,SAASY,KAET,SAASC,KAET,IAAItxR,EAAoB,GACxB7C,EAAO6C,EAAmBiwR,GAAgB,WACxC,OAAOzwb,QAET,IAAI+xb,EAAWxyb,OAAO+1J,eAClB08R,EAA0BD,GAAYA,EAASA,EAAS3/Y,EAAO,MACnE4/Y,GAA2BA,IAA4BxB,GAAM9wR,EAAO/+J,KAAKqxb,EAAyBvB,KAAoBjwR,EAAoBwxR,GAC1I,IAAIC,EAAKH,EAA2B5xb,UAAY+wb,EAAU/wb,UAAYX,OAAOY,OAAOqgK,GAEpF,SAAS0xR,EAAsBhyb,GAC7B,CAAC,OAAQ,QAAS,UAAU4C,SAAQ,SAAUhB,GAC5C67J,EAAOz9J,EAAW4B,GAAQ,SAAUsiG,GAClC,OAAOpkG,KAAKmxb,QAAQrvb,EAAQsiG,SAKlC,SAAS+tV,EAAc/tb,EAAWgub,GAChC,SAASxjL,EAAO9sQ,EAAQsiG,EAAK/hG,EAASC,GACpC,IAAI06W,EAAS40E,EAASxtb,EAAUtC,GAASsC,EAAWggG,GAEpD,GAAI,UAAY44Q,EAAO9vV,KAAM,CAC3B,IAAItoB,EAASo4W,EAAO54Q,IAChB9/F,EAAQM,EAAON,MACnB,OAAOA,GAAS,WAAY2+L,EAAAA,EAAAA,GAAQ3+L,IAAUo7J,EAAO/+J,KAAK2D,EAAO,WAAa8tb,EAAY/vb,QAAQiC,EAAM+tb,SAASvtb,MAAK,SAAUR,GAC9HsqQ,EAAO,OAAQtqQ,EAAOjC,EAASC,MAC9B,SAAUwM,GACX8/P,EAAO,QAAS9/P,EAAKzM,EAASC,MAC3B8vb,EAAY/vb,QAAQiC,GAAOQ,MAAK,SAAUwtb,GAC7C1tb,EAAON,MAAQgub,EAAWjwb,EAAQuC,MACjC,SAAU0B,GACX,OAAOsoQ,EAAO,QAAStoQ,EAAOjE,EAASC,MAI3CA,EAAO06W,EAAO54Q,KAGhB,IAAImuV,EAEJvyb,KAAKmxb,QAAU,SAAUrvb,EAAQsiG,GAC/B,SAASouV,IACP,OAAO,IAAIJ,GAAY,SAAU/vb,EAASC,GACxCssQ,EAAO9sQ,EAAQsiG,EAAK/hG,EAASC,MAIjC,OAAOiwb,EAAkBA,EAAkBA,EAAgBztb,KAAK0tb,EAA4BA,GAA8BA,KAI9H,SAASjB,EAAoBF,EAAUh7U,GACrC,IAAIv0G,EAASuvb,EAAS1rb,SAAS0wG,EAAQv0G,QAEvC,QAAIokC,IAAcpkC,EAAQ,CACxB,GAAIu0G,EAAQg7U,SAAW,KAAM,UAAYh7U,EAAQv0G,OAAQ,CACvD,GAAIuvb,EAAS1rb,SAAS,YAAc0wG,EAAQv0G,OAAS,SAAUu0G,EAAQjS,SAAMl+D,EAAWqrZ,EAAoBF,EAAUh7U,GAAU,UAAYA,EAAQv0G,QAAS,OAAO0vb,EACpKn7U,EAAQv0G,OAAS,QAASu0G,EAAQjS,IAAM,IAAIt+F,UAAU,kDAGxD,OAAO0rb,EAGT,IAAIx0E,EAAS40E,EAAS9vb,EAAQuvb,EAAS1rb,SAAU0wG,EAAQjS,KACzD,GAAI,UAAY44Q,EAAO9vV,KAAM,OAAOmpF,EAAQv0G,OAAS,QAASu0G,EAAQjS,IAAM44Q,EAAO54Q,IAAKiS,EAAQg7U,SAAW,KAAMG,EACjH,IAAI1ia,EAAOkuV,EAAO54Q,IAClB,OAAOt1E,EAAOA,EAAKjqB,MAAQwxG,EAAQg7U,EAASoB,YAAc3ja,EAAKxqB,MAAO+xG,EAAQ5xG,KAAO4sb,EAASqB,QAAS,WAAar8U,EAAQv0G,SAAWu0G,EAAQv0G,OAAS,OAAQu0G,EAAQjS,SAAMl+D,GAAYmwE,EAAQg7U,SAAW,KAAMG,GAAoB1ia,GAAQunF,EAAQv0G,OAAS,QAASu0G,EAAQjS,IAAM,IAAIt+F,UAAU,oCAAqCuwG,EAAQg7U,SAAW,KAAMG,GAGrW,SAASmB,EAAaC,GACpB,IAAI52a,EAAQ,CACV62a,OAAQD,EAAK,IAEf,KAAKA,IAAS52a,EAAM82a,SAAWF,EAAK,IAAK,KAAKA,IAAS52a,EAAM+2a,WAAaH,EAAK,GAAI52a,EAAMg3a,SAAWJ,EAAK,IAAK5yb,KAAKizb,WAAWjtb,KAAKgW,GAGrI,SAASk3a,EAAcl3a,GACrB,IAAIghW,EAAShhW,EAAMm3a,YAAc,GACjCn2E,EAAO9vV,KAAO,gBAAiB8vV,EAAO54Q,IAAKpoF,EAAMm3a,WAAan2E,EAGhE,SAASk0E,EAAQH,GACf/wb,KAAKizb,WAAa,CAAC,CACjBJ,OAAQ,SACN9B,EAAYjub,QAAQ6vb,EAAc3yb,MAAOA,KAAK++E,OAAM,GAG1D,SAAS3sC,EAAOkrH,GACd,GAAIA,EAAU,CACZ,IAAInF,EAAiBmF,EAASmzR,GAC9B,GAAIt4R,EAAgB,OAAOA,EAAex3J,KAAK28J,GAC/C,GAAI,mBAAqBA,EAAS74J,KAAM,OAAO64J,EAE/C,IAAKzgF,MAAMygF,EAASj8J,QAAS,CAC3B,IAAIH,GAAK,EACLuD,EAAO,SAASA,IAClB,OAASvD,EAAIo8J,EAASj8J,QACpB,GAAIq+J,EAAO/+J,KAAK28J,EAAUp8J,GAAI,OAAOuD,EAAKH,MAAQg5J,EAASp8J,GAAIuD,EAAKI,MAAO,EAAIJ,EAGjF,OAAOA,EAAKH,WAAQ4hC,EAAWzhC,EAAKI,MAAO,EAAIJ,GAGjD,OAAOA,EAAKA,KAAOA,GAIvB,MAAO,CACLA,KAAM2sb,GAIV,SAASA,IACP,MAAO,CACL9sb,WAAO4hC,EACPrhC,MAAM,GAIV,OAAOgtb,EAAkB3xb,UAAY4xb,EAA4Bn0R,EAAOs0R,EAAI,cAAeH,GAA6Bn0R,EAAOm0R,EAA4B,cAAeD,GAAoBA,EAAkB9vO,YAAcpkD,EAAOm0R,EAA4BlB,EAAmB,qBAAsBtmS,EAAQ8oS,oBAAsB,SAAUC,GAChV,IAAIC,EAAO,mBAAqBD,GAAUA,EAAOpzb,YACjD,QAASqzb,IAASA,IAASzB,GAAqB,uBAAyByB,EAAKvxO,aAAeuxO,EAAKjgb,QACjGi3I,EAAQt8E,KAAO,SAAUqlX,GAC1B,OAAO9zb,OAAOC,eAAiBD,OAAOC,eAAe6zb,EAAQvB,IAA+BuB,EAAO5zb,UAAYqyb,EAA4Bn0R,EAAO01R,EAAQzC,EAAmB,sBAAuByC,EAAOnzb,UAAYX,OAAOY,OAAO8xb,GAAKoB,GACzO/oS,EAAQipS,MAAQ,SAAUnvV,GAC3B,MAAO,CACLiuV,QAASjuV,IAEV8tV,EAAsBC,EAAcjyb,WAAYy9J,EAAOw0R,EAAcjyb,UAAWwwb,GAAqB,WACtG,OAAO1wb,QACLsqJ,EAAQ6nS,cAAgBA,EAAe7nS,EAAQ5pB,MAAQ,SAAUmwT,EAASC,EAASp5W,EAAMq5W,EAAaqB,QACxG,IAAWA,IAAgBA,EAAchwb,SACzC,IAAI0hM,EAAO,IAAIquP,EAAch8Q,EAAK06Q,EAASC,EAASp5W,EAAMq5W,GAAcqB,GACxE,OAAO9nS,EAAQ8oS,oBAAoBtC,GAAWhtP,EAAOA,EAAKr/L,OAAOK,MAAK,SAAUF,GAC9E,OAAOA,EAAOC,KAAOD,EAAON,MAAQw/L,EAAKr/L,WAE1Cytb,EAAsBD,GAAKt0R,EAAOs0R,EAAIrB,EAAmB,aAAcjzR,EAAOs0R,EAAIxB,GAAgB,WACnG,OAAOzwb,QACL29J,EAAOs0R,EAAI,YAAY,WACzB,MAAO,wBACL3nS,EAAQznJ,KAAO,SAAUg2F,GAC3B,IAAIh2F,EAAO,GAEX,IAAK,IAAI+Y,KAAOi9E,EACdh2F,EAAKmD,KAAK4V,GAGZ,OAAO/Y,EAAKk+H,UAAW,SAASt8H,IAC9B,KAAO5B,EAAKxB,QAAS,CACnB,IAAIua,EAAM/Y,EAAKkD,MACf,GAAI6V,KAAOi9E,EAAQ,OAAOp0F,EAAKH,MAAQsX,EAAKnX,EAAKI,MAAO,EAAIJ,EAG9D,OAAOA,EAAKI,MAAO,EAAIJ,IAExB6lJ,EAAQl4G,OAASA,EAAQ8+Y,EAAQhxb,UAAY,CAC9CD,YAAaixb,EACbnyW,MAAO,SAAey0W,GACpB,GAAIxzb,KAAK69J,KAAO,EAAG79J,KAAKyE,KAAO,EAAGzE,KAAKsF,KAAOtF,KAAKyxb,WAAQvrZ,EAAWlmC,KAAK6E,MAAO,EAAI7E,KAAKqxb,SAAW,KAAMrxb,KAAK8B,OAAS,OAAQ9B,KAAKokG,SAAMl+D,EAAWlmC,KAAKizb,WAAWnwb,QAAQowb,IAAiBM,EAAe,IAAK,IAAIngb,KAAQrT,KAC/N,MAAQqT,EAAKyiC,OAAO,IAAM4pH,EAAO/+J,KAAKX,KAAMqT,KAAUwpE,OAAOxpE,EAAKk5B,MAAM,MAAQvsC,KAAKqT,QAAQ6yB,IAGjG2+E,KAAM,WACJ7kH,KAAK6E,MAAO,EACZ,IAAI4ub,EAAazzb,KAAKizb,WAAW,GAAGE,WACpC,GAAI,UAAYM,EAAWvma,KAAM,MAAMuma,EAAWrvV,IAClD,OAAOpkG,KAAK0zb,MAEdhC,kBAAmB,SAA2BhzW,GAC5C,GAAI1+E,KAAK6E,KAAM,MAAM65E,EACrB,IAAI23B,EAAUr2G,KAEd,SAAS2zb,EAAO3pU,EAAK4pU,GACnB,OAAO52E,EAAO9vV,KAAO,QAAS8vV,EAAO54Q,IAAM1lB,EAAW23B,EAAQ5xG,KAAOulH,EAAK4pU,IAAWv9U,EAAQv0G,OAAS,OAAQu0G,EAAQjS,SAAMl+D,KAAc0tZ,EAG5I,IAAK,IAAI1yb,EAAIlB,KAAKizb,WAAW5xb,OAAS,EAAGH,GAAK,IAAKA,EAAG,CACpD,IAAI8a,EAAQhc,KAAKizb,WAAW/xb,GACxB87W,EAAShhW,EAAMm3a,WACnB,GAAI,SAAWn3a,EAAM62a,OAAQ,OAAOc,EAAO,OAE3C,GAAI33a,EAAM62a,QAAU7yb,KAAK69J,KAAM,CAC7B,IAAIg2R,EAAWn0R,EAAO/+J,KAAKqb,EAAO,YAC9B83a,EAAap0R,EAAO/+J,KAAKqb,EAAO,cAEpC,GAAI63a,GAAYC,EAAY,CAC1B,GAAI9zb,KAAK69J,KAAO7hJ,EAAM82a,SAAU,OAAOa,EAAO33a,EAAM82a,UAAU,GAC9D,GAAI9yb,KAAK69J,KAAO7hJ,EAAM+2a,WAAY,OAAOY,EAAO33a,EAAM+2a,iBACjD,GAAIc,GACT,GAAI7zb,KAAK69J,KAAO7hJ,EAAM82a,SAAU,OAAOa,EAAO33a,EAAM82a,UAAU,OACzD,CACL,IAAKgB,EAAY,MAAM,IAAIlzb,MAAM,0CACjC,GAAIZ,KAAK69J,KAAO7hJ,EAAM+2a,WAAY,OAAOY,EAAO33a,EAAM+2a,gBAK9DpB,OAAQ,SAAgBzka,EAAMk3E,GAC5B,IAAK,IAAIljG,EAAIlB,KAAKizb,WAAW5xb,OAAS,EAAGH,GAAK,IAAKA,EAAG,CACpD,IAAI8a,EAAQhc,KAAKizb,WAAW/xb,GAE5B,GAAI8a,EAAM62a,QAAU7yb,KAAK69J,MAAQ6B,EAAO/+J,KAAKqb,EAAO,eAAiBhc,KAAK69J,KAAO7hJ,EAAM+2a,WAAY,CACjG,IAAIgB,EAAe/3a,EACnB,OAIJ+3a,IAAiB,UAAY7ma,GAAQ,aAAeA,IAAS6ma,EAAalB,QAAUzuV,GAAOA,GAAO2vV,EAAahB,aAAegB,EAAe,MAC7I,IAAI/2E,EAAS+2E,EAAeA,EAAaZ,WAAa,GACtD,OAAOn2E,EAAO9vV,KAAOA,EAAM8vV,EAAO54Q,IAAMA,EAAK2vV,GAAgB/zb,KAAK8B,OAAS,OAAQ9B,KAAKyE,KAAOsvb,EAAahB,WAAYvB,GAAoBxxb,KAAKy6E,SAASuiS,IAE5JviS,SAAU,SAAkBuiS,EAAQg2E,GAClC,GAAI,UAAYh2E,EAAO9vV,KAAM,MAAM8vV,EAAO54Q,IAC1C,MAAO,UAAY44Q,EAAO9vV,MAAQ,aAAe8vV,EAAO9vV,KAAOltB,KAAKyE,KAAOu4W,EAAO54Q,IAAM,WAAa44Q,EAAO9vV,MAAQltB,KAAK0zb,KAAO1zb,KAAKokG,IAAM44Q,EAAO54Q,IAAKpkG,KAAK8B,OAAS,SAAU9B,KAAKyE,KAAO,OAAS,WAAau4W,EAAO9vV,MAAQ8la,IAAahzb,KAAKyE,KAAOuub,GAAWxB,GAEtQwC,OAAQ,SAAgBjB,GACtB,IAAK,IAAI7xb,EAAIlB,KAAKizb,WAAW5xb,OAAS,EAAGH,GAAK,IAAKA,EAAG,CACpD,IAAI8a,EAAQhc,KAAKizb,WAAW/xb,GAC5B,GAAI8a,EAAM+2a,aAAeA,EAAY,OAAO/yb,KAAKy6E,SAASz+D,EAAMm3a,WAAYn3a,EAAMg3a,UAAWE,EAAcl3a,GAAQw1a,IAGvH,MAAS,SAAgBqB,GACvB,IAAK,IAAI3xb,EAAIlB,KAAKizb,WAAW5xb,OAAS,EAAGH,GAAK,IAAKA,EAAG,CACpD,IAAI8a,EAAQhc,KAAKizb,WAAW/xb,GAE5B,GAAI8a,EAAM62a,SAAWA,EAAQ,CAC3B,IAAI71E,EAAShhW,EAAMm3a,WAEnB,GAAI,UAAYn2E,EAAO9vV,KAAM,CAC3B,IAAI+ma,EAASj3E,EAAO54Q,IACpB8uV,EAAcl3a,GAGhB,OAAOi4a,GAIX,MAAM,IAAIrzb,MAAM,0BAElBszb,cAAe,SAAuB52R,EAAUm1R,EAAYC,GAC1D,OAAO1yb,KAAKqxb,SAAW,CACrB1rb,SAAUysC,EAAOkrH,GACjBm1R,WAAYA,EACZC,QAASA,GACR,SAAW1yb,KAAK8B,SAAW9B,KAAKokG,SAAMl+D,GAAYsrZ,IAEtDlnS,I,gEC9VU,SAAS44C,EAAgBh9L,EAAGrG,GAKzC,OAJAqjM,EAAkB3jM,OAAOC,eAAiBD,OAAOC,eAAe6jD,OAAS,SAAyBn9C,EAAGrG,GAEnG,OADAqG,EAAEzG,UAAYI,EACPqG,GAEFg9L,EAAgBh9L,EAAGrG,K,uDCLb,SAASs0b,EAAgBr4a,GACtC,GAAIpc,MAAM21E,QAAQv5D,GAAM,OAAOA,E,sDCDlB,SAASs4a,EAAsBt4a,EAAK5a,GACjD,IAAIo2G,EAAY,MAAPx7F,EAAc,KAAyB,qBAAXpW,QAA0BoW,EAAIpW,OAAOC,WAAamW,EAAI,cAE3F,GAAU,MAANw7F,EAAJ,CACA,IAII2wL,EAAI5xQ,EAJJg+Z,EAAO,GACPvxD,GAAK,EACL1sW,GAAK,EAIT,IACE,IAAKkhF,EAAKA,EAAG32G,KAAKmb,KAAQgnX,GAAM76F,EAAK3wL,EAAG7yG,QAAQI,MAAOi+X,GAAK,EAG1D,GAFAuxD,EAAKrub,KAAKiiS,EAAG3jS,OAETpD,GAAKmzb,EAAKhzb,SAAWH,EAAG,MAE9B,MAAO4N,GACPsnB,GAAK,EACLC,EAAKvnB,EARP,QAUE,IACOg0X,GAAsB,MAAhBxrR,EAAG,WAAmBA,EAAG,YADtC,QAGE,GAAIlhF,EAAI,MAAMC,GAIlB,OAAOg+Z,G,iCC3BM,SAASC,IACtB,MAAM,IAAIxub,UAAU,6ICGP,SAASyub,EAAez4a,EAAK5a,GAC1C,OAAOszb,EAAe14a,IAAQ24a,EAAqB34a,EAAK5a,KAAMgub,EAAAA,EAAAA,GAA2Bpza,EAAK5a,IAAMwzb,M,sECJvF,SAASjxP,EAAmB3nL,GACzC,GAAIpc,MAAM21E,QAAQv5D,GAAM,OAAO64a,EAAAA,EAAAA,GAAiB74a,G,+DCFnC,SAAS4nL,EAAiBI,GACvC,GAAsB,qBAAXp+L,QAAmD,MAAzBo+L,EAAKp+L,OAAOC,WAA2C,MAAtBm+L,EAAK,cAAuB,OAAOpkM,MAAMshG,KAAK8iG,G,iCCDvG,SAASF,IACtB,MAAM,IAAI99L,UAAU,wICGP,SAAS09L,EAAmB1nL,GACzC,OAAO84a,EAAkB94a,IAAQ+4a,EAAgB/4a,KAAQoza,EAAAA,EAAAA,GAA2Bpza,IAAQg5a,M,mGCL/E,SAAS7xP,EAAQnoL,GAG9B,OAAOmoL,EAAU,mBAAqBv9L,QAAU,iBAAmBA,OAAOC,SAAW,SAAUmV,GAC7F,cAAcA,GACZ,SAAUA,GACZ,OAAOA,GAAO,mBAAqBpV,QAAUoV,EAAI7a,cAAgByF,QAAUoV,IAAQpV,OAAOxF,UAAY,gBAAkB4a,GACvHmoL,EAAQnoL,K,4HCNE,SAAS6oL,EAA4Bz9L,EAAG69L,GACrD,GAAK79L,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAOyub,EAAAA,EAAAA,GAAiBzub,EAAG69L,GACtD,IAAI5iM,EAAI5B,OAAOW,UAAUqO,SAAS5N,KAAKuF,GAAGqmC,MAAM,GAAI,GAEpD,MADU,WAANprC,GAAkB+E,EAAEjG,cAAakB,EAAI+E,EAAEjG,YAAYoT,MAC7C,QAANlS,GAAqB,QAANA,EAAoBzB,MAAMshG,KAAK96F,GACxC,cAAN/E,GAAqB,2CAA2CmO,KAAKnO,IAAWwzb,EAAAA,EAAAA,GAAiBzub,EAAG69L,QAAxG,K,kKCPa,SAASgxP,EAAkB/5W,GACxC,OAAgE,IAAzDsrE,SAAS/3I,SAAS5N,KAAKq6E,GAAI9/D,QAAQ,iB,yCCC7B,SAASmoL,EAAWC,EAAQlxG,EAAMmxG,GAc/C,OAZEF,GADEksP,EAAAA,EAAAA,KACWnnR,QAAQG,UAAUllH,OAElB,SAAoBigJ,EAAQlxG,EAAMmxG,GAC7C,IAAI38L,EAAI,CAAC,MACTA,EAAEZ,KAAKjC,MAAM6C,EAAGwrF,GAChB,IAAI0yD,EAAcwB,SAASjjG,KAAKt/C,MAAMu/L,EAAQ18L,GAC1CsmJ,EAAW,IAAIpI,EAEnB,OADIy+C,IAAO/jM,EAAAA,EAAAA,GAAe0tJ,EAAUq2C,EAAMrjM,WACnCgtJ,GAIJm2C,EAAWt/L,MAAM,KAAM3C,WCZjB,SAAS4zb,EAAiBzxP,GACvC,IAAI44L,EAAwB,oBAARzzW,IAAqB,IAAIA,SAAQwd,EA8BrD,OA5BA8uZ,EAAmB,SAA0BzxP,GAC3C,GAAc,OAAVA,IAAmB0xP,EAAiB1xP,GAAQ,OAAOA,EAEvD,GAAqB,oBAAVA,EACT,MAAM,IAAIz9L,UAAU,sDAGtB,GAAsB,qBAAXq2X,EAAwB,CACjC,GAAIA,EAAOtzW,IAAI06K,GAAQ,OAAO44L,EAAOz6X,IAAI6hM,GAEzC44L,EAAOxzW,IAAI46K,EAAO55B,GAGpB,SAASA,IACP,OAAOpB,EAAUg7B,EAAOniM,WAAWk0J,EAAAA,EAAAA,GAAet1J,MAAMC,aAW1D,OARA0pK,EAAQzpK,UAAYX,OAAOY,OAAOojM,EAAMrjM,UAAW,CACjDD,YAAa,CACXqE,MAAOqlK,EACPt7H,YAAY,EACZ2yH,UAAU,EACV1yH,cAAc,MAGX9uC,EAAAA,EAAAA,GAAemqK,EAAS45B,IAG1ByxP,EAAiBzxP,K","sources":["webpack://ready-2-work/./node_modules/@aspnet/signalr/dist/esm/Errors.js","webpack://ready-2-work/./node_modules/@aspnet/signalr/dist/esm/ILogger.js","webpack://ready-2-work/./node_modules/@aspnet/signalr/dist/esm/HttpClient.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/_virtual/_tslib.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceEvent.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/_virtual/_tslib.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/utils/Constants.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/utils/BrowserConstants.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/crypto/CryptoOps.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/utils/MathUtils.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/crypto/GuidGenerator.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/utils/BrowserStringUtils.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/encode/Base64Encode.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/encode/Base64Decode.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/error/AuthError.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/error/ClientAuthError.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/utils/StringUtils.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/error/BrowserAuthError.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/crypto/PkceGenerator.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/crypto/BrowserCrypto.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/cache/DatabaseStorage.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/cache/MemoryStorage.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/cache/AsyncMemoryStorage.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/logger/Logger.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/authority/AuthorityType.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/telemetry/performance/PerformanceClient.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/telemetry/performance/StubPerformanceClient.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/crypto/ICrypto.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/error/ServerError.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/error/InteractionRequiredAuthError.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/account/ClientInfo.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/cache/entities/AccountEntity.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/account/CcsCredential.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/cache/entities/CredentialEntity.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/error/ClientConfigurationError.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/request/ScopeSet.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/account/AuthToken.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/cache/CacheManager.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/cache/entities/IdTokenEntity.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/utils/TimeUtils.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/cache/entities/AccessTokenEntity.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/cache/entities/RefreshTokenEntity.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/cache/entities/AppMetadataEntity.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/cache/entities/ServerTelemetryEntity.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/cache/entities/AuthorityMetadataEntity.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/cache/entities/ThrottlingEntity.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/utils/ProtocolUtils.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/error/BrowserConfigurationAuthError.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/authority/ProtocolMode.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/authority/AuthorityOptions.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/cache/BrowserStorage.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/url/UrlString.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/utils/BrowserProtocolUtils.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/cache/BrowserCacheManager.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/packageMetadata.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/config/ClientConfiguration.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/network/INetworkModule.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/network/FetchClient.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/network/XhrClient.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/utils/BrowserUtils.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/navigation/NavigationClient.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/config/Configuration.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/packageMetadata.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/event/EventType.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/event/EventHandler.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/crypto/PopTokenGenerator.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/network/ThrottlingUtils.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/network/NetworkManager.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/client/BaseClient.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/request/RequestValidator.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/request/RequestParameterBuilder.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/cache/entities/CacheRecord.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/cache/persistence/TokenCacheContext.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/response/ResponseHandler.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/client/AuthorizationCodeClient.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/authority/OpenIdConfigResponse.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/authority/CloudInstanceDiscoveryResponse.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/authority/RegionDiscovery.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/error/NativeAuthError.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/authority/Authority.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/authority/AuthorityFactory.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/telemetry/server/ServerTelemetryManager.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/interaction_client/BaseInteractionClient.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/interaction_client/StandardInteractionClient.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/utils/PopupUtils.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/interaction_handler/InteractionHandler.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/interaction_handler/PopupHandler.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/interaction_client/NativeInteractionClient.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/broker/nativeBroker/NativeMessageHandler.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/interaction_client/PopupClient.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/interaction_handler/RedirectHandler.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/interaction_client/RedirectClient.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/interaction_handler/SilentHandler.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/interaction_client/SilentIframeClient.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/client/RefreshTokenClient.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/interaction_client/SilentRefreshClient.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/cache/TokenCache.js","webpack://ready-2-work/./node_modules/@azure/msal-common/dist/client/SilentFlowClient.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/interaction_client/SilentCacheClient.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/interaction_client/HybridSpaAuthorizationCodeClient.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/interaction_client/SilentAuthCodeClient.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceMeasurement.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/telemetry/BrowserPerformanceClient.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/app/ClientApplication.js","webpack://ready-2-work/./node_modules/@azure/msal-browser/dist/app/PublicClientApplication.js","webpack://ready-2-work/./node_modules/@firebase/util/dist/index.esm2017.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/Constants.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/DomHelperFuncs.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/Enums.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/HelperFuncs.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/RequestResponseHeaders.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/StorageHelperFuncs.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/DataSanitizer.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/UrlHelperFuncs.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/Util.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/__DynamicConstants.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK.Enums/EnumHelperFuncs.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/CookieMgr.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/CoreUtils.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/DataCacheHelper.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/DbgExtensionUtils.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/DiagnosticLogger.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/EnvUtils.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/EventHelpers.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/HelperFuncs.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/InternalConstants.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/RandomHelper.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/W3cTraceParent.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/__DynamicConstants.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-shims/dist-esm/Constants.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-shims/dist-esm/Helpers.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-shims/dist-esm/TsLibShims.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/applicationinsights-common.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/TelemetryItemCreator.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Event.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Trace.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/DataPoint.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Metric.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/PageView.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/PageViewPerformance.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Exception.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/RemoteDependencyData.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/PerfManager.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/TelemetryHelpers.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/ProcessTelemetryContext.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/InstrumentHooks.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/UnloadHandlerContainer.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/BaseTelemetryPlugin.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/__DynamicConstants.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageViewManager.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageViewPerformanceManager.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Telemetry/PageVisitTimeManager.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/Timing.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-analytics-js/dist-esm/JavaScriptSDK/AnalyticsPlugin.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/ContextTagKeys.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/PartAExtensions.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/Envelope.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/Telemetry/Common/Data.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/InternalConstants.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/__DynamicConstants.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/EnvelopeCreator.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Offline.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/SendBuffer.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Sender.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/Serializer.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/SamplingScoreGenerators/HashCodeScoreGenerator.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/SamplingScoreGenerators/SamplingScoreGenerator.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-channel-js/dist-esm/TelemetryProcessors/Sample.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/ConnectionStringParser.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/Contracts/SeverityLevel.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-common/dist-esm/Interfaces/IConfig.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/ChannelController.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/TelemetryInitializerPlugin.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/BaseCore.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/NotificationManager.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-core-js/dist-esm/JavaScriptSDK/AppInsightsCore.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/InternalConstants.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/__DynamicConstants.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/ajaxRecord.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-dependencies-js/dist-esm/ajax.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Application.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Device.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/__DynamicConstants.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Internal.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Location.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/Session.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/TelemetryTrace.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/Context/User.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/TelemetryContext.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-properties-js/dist-esm/PropertiesPlugin.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-web/dist-esm/InternalConstants.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-web/dist-esm/Initialization.js","webpack://ready-2-work/./node_modules/@microsoft/applicationinsights-web/dist-esm/__DynamicConstants.js","webpack://ready-2-work/./node_modules/@microsoft/dynamicproto-js/lib/dist/esm/dynamicproto-js.js","webpack://ready-2-work/./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","webpack://ready-2-work/./node_modules/axios/index.js","webpack://ready-2-work/./node_modules/axios/lib/adapters/xhr.js","webpack://ready-2-work/./node_modules/axios/lib/axios.js","webpack://ready-2-work/./node_modules/axios/lib/cancel/CancelToken.js","webpack://ready-2-work/./node_modules/axios/lib/cancel/CanceledError.js","webpack://ready-2-work/./node_modules/axios/lib/cancel/isCancel.js","webpack://ready-2-work/./node_modules/axios/lib/core/Axios.js","webpack://ready-2-work/./node_modules/axios/lib/core/AxiosError.js","webpack://ready-2-work/./node_modules/axios/lib/core/InterceptorManager.js","webpack://ready-2-work/./node_modules/axios/lib/core/buildFullPath.js","webpack://ready-2-work/./node_modules/axios/lib/core/dispatchRequest.js","webpack://ready-2-work/./node_modules/axios/lib/core/mergeConfig.js","webpack://ready-2-work/./node_modules/axios/lib/core/settle.js","webpack://ready-2-work/./node_modules/axios/lib/core/transformData.js","webpack://ready-2-work/./node_modules/axios/lib/defaults/index.js","webpack://ready-2-work/./node_modules/axios/lib/defaults/transitional.js","webpack://ready-2-work/./node_modules/axios/lib/env/data.js","webpack://ready-2-work/./node_modules/axios/lib/helpers/bind.js","webpack://ready-2-work/./node_modules/axios/lib/helpers/buildURL.js","webpack://ready-2-work/./node_modules/axios/lib/helpers/combineURLs.js","webpack://ready-2-work/./node_modules/axios/lib/helpers/cookies.js","webpack://ready-2-work/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://ready-2-work/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://ready-2-work/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://ready-2-work/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://ready-2-work/./node_modules/axios/lib/helpers/null.js","webpack://ready-2-work/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://ready-2-work/./node_modules/axios/lib/helpers/parseProtocol.js","webpack://ready-2-work/./node_modules/axios/lib/helpers/spread.js","webpack://ready-2-work/./node_modules/axios/lib/helpers/toFormData.js","webpack://ready-2-work/./node_modules/axios/lib/helpers/validator.js","webpack://ready-2-work/./node_modules/axios/lib/utils.js","webpack://ready-2-work/./node_modules/core-js/internals/a-callable.js","webpack://ready-2-work/./node_modules/core-js/internals/a-constructor.js","webpack://ready-2-work/./node_modules/core-js/internals/a-possible-prototype.js","webpack://ready-2-work/./node_modules/core-js/internals/add-to-unscopables.js","webpack://ready-2-work/./node_modules/core-js/internals/advance-string-index.js","webpack://ready-2-work/./node_modules/core-js/internals/an-instance.js","webpack://ready-2-work/./node_modules/core-js/internals/an-object.js","webpack://ready-2-work/./node_modules/core-js/internals/array-buffer-non-extensible.js","webpack://ready-2-work/./node_modules/core-js/internals/array-fill.js","webpack://ready-2-work/./node_modules/core-js/internals/array-for-each.js","webpack://ready-2-work/./node_modules/core-js/internals/array-from.js","webpack://ready-2-work/./node_modules/core-js/internals/array-includes.js","webpack://ready-2-work/./node_modules/core-js/internals/array-iteration.js","webpack://ready-2-work/./node_modules/core-js/internals/array-last-index-of.js","webpack://ready-2-work/./node_modules/core-js/internals/array-method-has-species-support.js","webpack://ready-2-work/./node_modules/core-js/internals/array-method-is-strict.js","webpack://ready-2-work/./node_modules/core-js/internals/array-reduce.js","webpack://ready-2-work/./node_modules/core-js/internals/array-slice-simple.js","webpack://ready-2-work/./node_modules/core-js/internals/array-slice.js","webpack://ready-2-work/./node_modules/core-js/internals/array-sort.js","webpack://ready-2-work/./node_modules/core-js/internals/array-species-constructor.js","webpack://ready-2-work/./node_modules/core-js/internals/array-species-create.js","webpack://ready-2-work/./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack://ready-2-work/./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack://ready-2-work/./node_modules/core-js/internals/classof-raw.js","webpack://ready-2-work/./node_modules/core-js/internals/classof.js","webpack://ready-2-work/./node_modules/core-js/internals/clear-error-stack.js","webpack://ready-2-work/./node_modules/core-js/internals/collection-strong.js","webpack://ready-2-work/./node_modules/core-js/internals/collection.js","webpack://ready-2-work/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://ready-2-work/./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack://ready-2-work/./node_modules/core-js/internals/correct-prototype-getter.js","webpack://ready-2-work/./node_modules/core-js/internals/create-html.js","webpack://ready-2-work/./node_modules/core-js/internals/create-iterator-constructor.js","webpack://ready-2-work/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://ready-2-work/./node_modules/core-js/internals/create-property-descriptor.js","webpack://ready-2-work/./node_modules/core-js/internals/create-property.js","webpack://ready-2-work/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://ready-2-work/./node_modules/core-js/internals/define-built-in.js","webpack://ready-2-work/./node_modules/core-js/internals/define-built-ins.js","webpack://ready-2-work/./node_modules/core-js/internals/define-global-property.js","webpack://ready-2-work/./node_modules/core-js/internals/define-iterator.js","webpack://ready-2-work/./node_modules/core-js/internals/define-well-known-symbol.js","webpack://ready-2-work/./node_modules/core-js/internals/delete-property-or-throw.js","webpack://ready-2-work/./node_modules/core-js/internals/descriptors.js","webpack://ready-2-work/./node_modules/core-js/internals/document-create-element.js","webpack://ready-2-work/./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://ready-2-work/./node_modules/core-js/internals/dom-iterables.js","webpack://ready-2-work/./node_modules/core-js/internals/dom-token-list-prototype.js","webpack://ready-2-work/./node_modules/core-js/internals/engine-ff-version.js","webpack://ready-2-work/./node_modules/core-js/internals/engine-is-browser.js","webpack://ready-2-work/./node_modules/core-js/internals/engine-is-ie-or-edge.js","webpack://ready-2-work/./node_modules/core-js/internals/engine-is-ios-pebble.js","webpack://ready-2-work/./node_modules/core-js/internals/engine-is-ios.js","webpack://ready-2-work/./node_modules/core-js/internals/engine-is-node.js","webpack://ready-2-work/./node_modules/core-js/internals/engine-is-webos-webkit.js","webpack://ready-2-work/./node_modules/core-js/internals/engine-user-agent.js","webpack://ready-2-work/./node_modules/core-js/internals/engine-v8-version.js","webpack://ready-2-work/./node_modules/core-js/internals/engine-webkit-version.js","webpack://ready-2-work/./node_modules/core-js/internals/enum-bug-keys.js","webpack://ready-2-work/./node_modules/core-js/internals/error-stack-installable.js","webpack://ready-2-work/./node_modules/core-js/internals/error-to-string.js","webpack://ready-2-work/./node_modules/core-js/internals/export.js","webpack://ready-2-work/./node_modules/core-js/internals/fails.js","webpack://ready-2-work/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://ready-2-work/./node_modules/core-js/internals/flatten-into-array.js","webpack://ready-2-work/./node_modules/core-js/internals/freezing.js","webpack://ready-2-work/./node_modules/core-js/internals/function-apply.js","webpack://ready-2-work/./node_modules/core-js/internals/function-bind-context.js","webpack://ready-2-work/./node_modules/core-js/internals/function-bind-native.js","webpack://ready-2-work/./node_modules/core-js/internals/function-bind.js","webpack://ready-2-work/./node_modules/core-js/internals/function-call.js","webpack://ready-2-work/./node_modules/core-js/internals/function-name.js","webpack://ready-2-work/./node_modules/core-js/internals/function-uncurry-this.js","webpack://ready-2-work/./node_modules/core-js/internals/get-built-in.js","webpack://ready-2-work/./node_modules/core-js/internals/get-iterator-method.js","webpack://ready-2-work/./node_modules/core-js/internals/get-iterator.js","webpack://ready-2-work/./node_modules/core-js/internals/get-method.js","webpack://ready-2-work/./node_modules/core-js/internals/get-substitution.js","webpack://ready-2-work/./node_modules/core-js/internals/global.js","webpack://ready-2-work/./node_modules/core-js/internals/has-own-property.js","webpack://ready-2-work/./node_modules/core-js/internals/hidden-keys.js","webpack://ready-2-work/./node_modules/core-js/internals/host-report-errors.js","webpack://ready-2-work/./node_modules/core-js/internals/html.js","webpack://ready-2-work/./node_modules/core-js/internals/ie8-dom-define.js","webpack://ready-2-work/./node_modules/core-js/internals/indexed-object.js","webpack://ready-2-work/./node_modules/core-js/internals/inherit-if-required.js","webpack://ready-2-work/./node_modules/core-js/internals/inspect-source.js","webpack://ready-2-work/./node_modules/core-js/internals/install-error-cause.js","webpack://ready-2-work/./node_modules/core-js/internals/internal-metadata.js","webpack://ready-2-work/./node_modules/core-js/internals/internal-state.js","webpack://ready-2-work/./node_modules/core-js/internals/is-array-iterator-method.js","webpack://ready-2-work/./node_modules/core-js/internals/is-array.js","webpack://ready-2-work/./node_modules/core-js/internals/is-callable.js","webpack://ready-2-work/./node_modules/core-js/internals/is-constructor.js","webpack://ready-2-work/./node_modules/core-js/internals/is-forced.js","webpack://ready-2-work/./node_modules/core-js/internals/is-object.js","webpack://ready-2-work/./node_modules/core-js/internals/is-pure.js","webpack://ready-2-work/./node_modules/core-js/internals/is-regexp.js","webpack://ready-2-work/./node_modules/core-js/internals/is-symbol.js","webpack://ready-2-work/./node_modules/core-js/internals/iterate.js","webpack://ready-2-work/./node_modules/core-js/internals/iterator-close.js","webpack://ready-2-work/./node_modules/core-js/internals/iterators-core.js","webpack://ready-2-work/./node_modules/core-js/internals/iterators.js","webpack://ready-2-work/./node_modules/core-js/internals/length-of-array-like.js","webpack://ready-2-work/./node_modules/core-js/internals/make-built-in.js","webpack://ready-2-work/./node_modules/core-js/internals/math-sign.js","webpack://ready-2-work/./node_modules/core-js/internals/math-trunc.js","webpack://ready-2-work/./node_modules/core-js/internals/microtask.js","webpack://ready-2-work/./node_modules/core-js/internals/native-symbol-registry.js","webpack://ready-2-work/./node_modules/core-js/internals/native-symbol.js","webpack://ready-2-work/./node_modules/core-js/internals/native-url.js","webpack://ready-2-work/./node_modules/core-js/internals/native-weak-map.js","webpack://ready-2-work/./node_modules/core-js/internals/new-promise-capability.js","webpack://ready-2-work/./node_modules/core-js/internals/normalize-string-argument.js","webpack://ready-2-work/./node_modules/core-js/internals/not-a-regexp.js","webpack://ready-2-work/./node_modules/core-js/internals/number-parse-float.js","webpack://ready-2-work/./node_modules/core-js/internals/number-parse-int.js","webpack://ready-2-work/./node_modules/core-js/internals/object-assign.js","webpack://ready-2-work/./node_modules/core-js/internals/object-create.js","webpack://ready-2-work/./node_modules/core-js/internals/object-define-properties.js","webpack://ready-2-work/./node_modules/core-js/internals/object-define-property.js","webpack://ready-2-work/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://ready-2-work/./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack://ready-2-work/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://ready-2-work/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://ready-2-work/./node_modules/core-js/internals/object-get-prototype-of.js","webpack://ready-2-work/./node_modules/core-js/internals/object-is-extensible.js","webpack://ready-2-work/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://ready-2-work/./node_modules/core-js/internals/object-keys-internal.js","webpack://ready-2-work/./node_modules/core-js/internals/object-keys.js","webpack://ready-2-work/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://ready-2-work/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://ready-2-work/./node_modules/core-js/internals/object-to-array.js","webpack://ready-2-work/./node_modules/core-js/internals/object-to-string.js","webpack://ready-2-work/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://ready-2-work/./node_modules/core-js/internals/own-keys.js","webpack://ready-2-work/./node_modules/core-js/internals/path.js","webpack://ready-2-work/./node_modules/core-js/internals/perform.js","webpack://ready-2-work/./node_modules/core-js/internals/promise-constructor-detection.js","webpack://ready-2-work/./node_modules/core-js/internals/promise-native-constructor.js","webpack://ready-2-work/./node_modules/core-js/internals/promise-resolve.js","webpack://ready-2-work/./node_modules/core-js/internals/promise-statics-incorrect-iteration.js","webpack://ready-2-work/./node_modules/core-js/internals/proxy-accessor.js","webpack://ready-2-work/./node_modules/core-js/internals/queue.js","webpack://ready-2-work/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://ready-2-work/./node_modules/core-js/internals/regexp-exec.js","webpack://ready-2-work/./node_modules/core-js/internals/regexp-flags.js","webpack://ready-2-work/./node_modules/core-js/internals/regexp-get-flags.js","webpack://ready-2-work/./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://ready-2-work/./node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack://ready-2-work/./node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack://ready-2-work/./node_modules/core-js/internals/require-object-coercible.js","webpack://ready-2-work/./node_modules/core-js/internals/same-value.js","webpack://ready-2-work/./node_modules/core-js/internals/schedulers-fix.js","webpack://ready-2-work/./node_modules/core-js/internals/set-species.js","webpack://ready-2-work/./node_modules/core-js/internals/set-to-string-tag.js","webpack://ready-2-work/./node_modules/core-js/internals/shared-key.js","webpack://ready-2-work/./node_modules/core-js/internals/shared-store.js","webpack://ready-2-work/./node_modules/core-js/internals/shared.js","webpack://ready-2-work/./node_modules/core-js/internals/species-constructor.js","webpack://ready-2-work/./node_modules/core-js/internals/string-html-forced.js","webpack://ready-2-work/./node_modules/core-js/internals/string-multibyte.js","webpack://ready-2-work/./node_modules/core-js/internals/string-punycode-to-ascii.js","webpack://ready-2-work/./node_modules/core-js/internals/string-repeat.js","webpack://ready-2-work/./node_modules/core-js/internals/string-trim-forced.js","webpack://ready-2-work/./node_modules/core-js/internals/string-trim.js","webpack://ready-2-work/./node_modules/core-js/internals/symbol-define-to-primitive.js","webpack://ready-2-work/./node_modules/core-js/internals/task.js","webpack://ready-2-work/./node_modules/core-js/internals/this-number-value.js","webpack://ready-2-work/./node_modules/core-js/internals/to-absolute-index.js","webpack://ready-2-work/./node_modules/core-js/internals/to-indexed-object.js","webpack://ready-2-work/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://ready-2-work/./node_modules/core-js/internals/to-length.js","webpack://ready-2-work/./node_modules/core-js/internals/to-object.js","webpack://ready-2-work/./node_modules/core-js/internals/to-primitive.js","webpack://ready-2-work/./node_modules/core-js/internals/to-property-key.js","webpack://ready-2-work/./node_modules/core-js/internals/to-string-tag-support.js","webpack://ready-2-work/./node_modules/core-js/internals/to-string.js","webpack://ready-2-work/./node_modules/core-js/internals/try-to-string.js","webpack://ready-2-work/./node_modules/core-js/internals/uid.js","webpack://ready-2-work/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://ready-2-work/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://ready-2-work/./node_modules/core-js/internals/validate-arguments-length.js","webpack://ready-2-work/./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack://ready-2-work/./node_modules/core-js/internals/well-known-symbol.js","webpack://ready-2-work/./node_modules/core-js/internals/whitespaces.js","webpack://ready-2-work/./node_modules/core-js/internals/wrap-error-constructor-with-cause.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.concat.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.every.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.fill.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.filter.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.find-index.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.find.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.flat.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.for-each.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.from.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.includes.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.index-of.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.is-array.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.iterator.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.join.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.last-index-of.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.map.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.reduce.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.reverse.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.slice.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.some.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.sort.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.splice.js","webpack://ready-2-work/./node_modules/core-js/modules/es.array.unscopables.flat.js","webpack://ready-2-work/./node_modules/core-js/modules/es.date.to-string.js","webpack://ready-2-work/./node_modules/core-js/modules/es.error.cause.js","webpack://ready-2-work/./node_modules/core-js/modules/es.error.to-string.js","webpack://ready-2-work/./node_modules/core-js/modules/es.function.bind.js","webpack://ready-2-work/./node_modules/core-js/modules/es.function.name.js","webpack://ready-2-work/./node_modules/core-js/modules/es.json.stringify.js","webpack://ready-2-work/./node_modules/core-js/modules/es.json.to-string-tag.js","webpack://ready-2-work/./node_modules/core-js/modules/es.map.constructor.js","webpack://ready-2-work/./node_modules/core-js/modules/es.map.js","webpack://ready-2-work/./node_modules/core-js/modules/es.math.cbrt.js","webpack://ready-2-work/./node_modules/core-js/modules/es.math.to-string-tag.js","webpack://ready-2-work/./node_modules/core-js/modules/es.number.constructor.js","webpack://ready-2-work/./node_modules/core-js/modules/es.number.to-fixed.js","webpack://ready-2-work/./node_modules/core-js/modules/es.object.assign.js","webpack://ready-2-work/./node_modules/core-js/modules/es.object.create.js","webpack://ready-2-work/./node_modules/core-js/modules/es.object.define-properties.js","webpack://ready-2-work/./node_modules/core-js/modules/es.object.define-property.js","webpack://ready-2-work/./node_modules/core-js/modules/es.object.entries.js","webpack://ready-2-work/./node_modules/core-js/modules/es.object.freeze.js","webpack://ready-2-work/./node_modules/core-js/modules/es.object.get-own-property-descriptor.js","webpack://ready-2-work/./node_modules/core-js/modules/es.object.get-own-property-descriptors.js","webpack://ready-2-work/./node_modules/core-js/modules/es.object.get-own-property-symbols.js","webpack://ready-2-work/./node_modules/core-js/modules/es.object.get-prototype-of.js","webpack://ready-2-work/./node_modules/core-js/modules/es.object.has-own.js","webpack://ready-2-work/./node_modules/core-js/modules/es.object.is.js","webpack://ready-2-work/./node_modules/core-js/modules/es.object.keys.js","webpack://ready-2-work/./node_modules/core-js/modules/es.object.set-prototype-of.js","webpack://ready-2-work/./node_modules/core-js/modules/es.object.to-string.js","webpack://ready-2-work/./node_modules/core-js/modules/es.object.values.js","webpack://ready-2-work/./node_modules/core-js/modules/es.parse-float.js","webpack://ready-2-work/./node_modules/core-js/modules/es.parse-int.js","webpack://ready-2-work/./node_modules/core-js/modules/es.promise.all.js","webpack://ready-2-work/./node_modules/core-js/modules/es.promise.catch.js","webpack://ready-2-work/./node_modules/core-js/modules/es.promise.constructor.js","webpack://ready-2-work/./node_modules/core-js/modules/es.promise.finally.js","webpack://ready-2-work/./node_modules/core-js/modules/es.promise.js","webpack://ready-2-work/./node_modules/core-js/modules/es.promise.race.js","webpack://ready-2-work/./node_modules/core-js/modules/es.promise.reject.js","webpack://ready-2-work/./node_modules/core-js/modules/es.promise.resolve.js","webpack://ready-2-work/./node_modules/core-js/modules/es.reflect.construct.js","webpack://ready-2-work/./node_modules/core-js/modules/es.reflect.to-string-tag.js","webpack://ready-2-work/./node_modules/core-js/modules/es.regexp.constructor.js","webpack://ready-2-work/./node_modules/core-js/modules/es.regexp.dot-all.js","webpack://ready-2-work/./node_modules/core-js/modules/es.regexp.exec.js","webpack://ready-2-work/./node_modules/core-js/modules/es.regexp.flags.js","webpack://ready-2-work/./node_modules/core-js/modules/es.regexp.sticky.js","webpack://ready-2-work/./node_modules/core-js/modules/es.regexp.test.js","webpack://ready-2-work/./node_modules/core-js/modules/es.regexp.to-string.js","webpack://ready-2-work/./node_modules/core-js/modules/es.string.anchor.js","webpack://ready-2-work/./node_modules/core-js/modules/es.string.ends-with.js","webpack://ready-2-work/./node_modules/core-js/modules/es.string.fixed.js","webpack://ready-2-work/./node_modules/core-js/modules/es.string.includes.js","webpack://ready-2-work/./node_modules/core-js/modules/es.string.iterator.js","webpack://ready-2-work/./node_modules/core-js/modules/es.string.link.js","webpack://ready-2-work/./node_modules/core-js/modules/es.string.match.js","webpack://ready-2-work/./node_modules/core-js/modules/es.string.repeat.js","webpack://ready-2-work/./node_modules/core-js/modules/es.string.replace-all.js","webpack://ready-2-work/./node_modules/core-js/modules/es.string.replace.js","webpack://ready-2-work/./node_modules/core-js/modules/es.string.small.js","webpack://ready-2-work/./node_modules/core-js/modules/es.string.split.js","webpack://ready-2-work/./node_modules/core-js/modules/es.string.starts-with.js","webpack://ready-2-work/./node_modules/core-js/modules/es.string.substr.js","webpack://ready-2-work/./node_modules/core-js/modules/es.string.trim.js","webpack://ready-2-work/./node_modules/core-js/modules/es.symbol.async-iterator.js","webpack://ready-2-work/./node_modules/core-js/modules/es.symbol.constructor.js","webpack://ready-2-work/./node_modules/core-js/modules/es.symbol.description.js","webpack://ready-2-work/./node_modules/core-js/modules/es.symbol.for.js","webpack://ready-2-work/./node_modules/core-js/modules/es.symbol.iterator.js","webpack://ready-2-work/./node_modules/core-js/modules/es.symbol.js","webpack://ready-2-work/./node_modules/core-js/modules/es.symbol.key-for.js","webpack://ready-2-work/./node_modules/core-js/modules/es.symbol.to-string-tag.js","webpack://ready-2-work/./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack://ready-2-work/./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack://ready-2-work/./node_modules/core-js/modules/web.set-interval.js","webpack://ready-2-work/./node_modules/core-js/modules/web.set-timeout.js","webpack://ready-2-work/./node_modules/core-js/modules/web.timers.js","webpack://ready-2-work/./node_modules/core-js/modules/web.url-search-params.constructor.js","webpack://ready-2-work/./node_modules/core-js/modules/web.url-search-params.js","webpack://ready-2-work/./node_modules/core-js/modules/web.url.constructor.js","webpack://ready-2-work/./node_modules/core-js/modules/web.url.js","webpack://ready-2-work/./node_modules/dayjs/dayjs.min.js","webpack://ready-2-work/./node_modules/dayjs/locale/en-au.js","webpack://ready-2-work/./node_modules/dayjs/locale/en-ca.js","webpack://ready-2-work/./node_modules/dayjs/locale/en-gb.js","webpack://ready-2-work/./node_modules/dayjs/locale/en-nz.js","webpack://ready-2-work/./node_modules/dayjs/plugin/advancedFormat.js","webpack://ready-2-work/./node_modules/dayjs/plugin/customParseFormat.js","webpack://ready-2-work/./node_modules/dayjs/plugin/duration.js","webpack://ready-2-work/./node_modules/dayjs/plugin/isBetween.js","webpack://ready-2-work/./node_modules/dayjs/plugin/isSameOrBefore.js","webpack://ready-2-work/./node_modules/dayjs/plugin/isToday.js","webpack://ready-2-work/./node_modules/dayjs/plugin/isTomorrow.js","webpack://ready-2-work/./node_modules/dayjs/plugin/isYesterday.js","webpack://ready-2-work/./node_modules/dayjs/plugin/isoWeek.js","webpack://ready-2-work/./node_modules/dayjs/plugin/localeData.js","webpack://ready-2-work/./node_modules/dayjs/plugin/localizedFormat.js","webpack://ready-2-work/./node_modules/dayjs/plugin/objectSupport.js","webpack://ready-2-work/./node_modules/dayjs/plugin/relativeTime.js","webpack://ready-2-work/./node_modules/dayjs/plugin/timezone.js","webpack://ready-2-work/./node_modules/dayjs/plugin/utc.js","webpack://ready-2-work/./node_modules/dayjs/plugin/weekday.js","webpack://ready-2-work/./node_modules/deepmerge/dist/cjs.js","webpack://ready-2-work/./node_modules/dompurify/dist/purify.js","webpack://ready-2-work/./node_modules/firebase/app/dist/index.esm.js","webpack://ready-2-work/./node_modules/tslib/tslib.es6.js","webpack://ready-2-work/./node_modules/@firebase/auth/dist/esm2017/index-ccf9d100.js","webpack://ready-2-work/./node_modules/fuzzysort/fuzzysort.js","webpack://ready-2-work/./node_modules/json2mq/index.js","webpack://ready-2-work/./node_modules/lodash/_Symbol.js","webpack://ready-2-work/./node_modules/lodash/_arrayMap.js","webpack://ready-2-work/./node_modules/lodash/_arrayReduce.js","webpack://ready-2-work/./node_modules/lodash/_asciiToArray.js","webpack://ready-2-work/./node_modules/lodash/_asciiWords.js","webpack://ready-2-work/./node_modules/lodash/_baseGetTag.js","webpack://ready-2-work/./node_modules/lodash/_basePropertyOf.js","webpack://ready-2-work/./node_modules/lodash/_baseSlice.js","webpack://ready-2-work/./node_modules/lodash/_baseToString.js","webpack://ready-2-work/./node_modules/lodash/_castSlice.js","webpack://ready-2-work/./node_modules/lodash/_createCaseFirst.js","webpack://ready-2-work/./node_modules/lodash/_createCompounder.js","webpack://ready-2-work/./node_modules/lodash/_deburrLetter.js","webpack://ready-2-work/./node_modules/lodash/_freeGlobal.js","webpack://ready-2-work/./node_modules/lodash/_getRawTag.js","webpack://ready-2-work/./node_modules/lodash/_hasUnicode.js","webpack://ready-2-work/./node_modules/lodash/_hasUnicodeWord.js","webpack://ready-2-work/./node_modules/lodash/_objectToString.js","webpack://ready-2-work/./node_modules/lodash/_root.js","webpack://ready-2-work/./node_modules/lodash/_stringToArray.js","webpack://ready-2-work/./node_modules/lodash/_unicodeToArray.js","webpack://ready-2-work/./node_modules/lodash/_unicodeWords.js","webpack://ready-2-work/./node_modules/lodash/camelCase.js","webpack://ready-2-work/./node_modules/lodash/capitalize.js","webpack://ready-2-work/./node_modules/lodash/deburr.js","webpack://ready-2-work/./node_modules/lodash/isArray.js","webpack://ready-2-work/./node_modules/lodash/isObjectLike.js","webpack://ready-2-work/./node_modules/lodash/isSymbol.js","webpack://ready-2-work/./node_modules/lodash/lodash.js","webpack://ready-2-work/./node_modules/lodash/toString.js","webpack://ready-2-work/./node_modules/lodash/upperFirst.js","webpack://ready-2-work/./node_modules/lodash/words.js","webpack://ready-2-work/./node_modules/lottie-web/build/player/lottie.js","webpack://ready-2-work/./node_modules/mime/Mime.js","webpack://ready-2-work/./node_modules/mime/index.js","webpack://ready-2-work/./node_modules/mime/types/other.js","webpack://ready-2-work/./node_modules/mime/types/standard.js","webpack://ready-2-work/./node_modules/nprogress/nprogress.js","webpack://ready-2-work/./node_modules/statuses/index.js","webpack://ready-2-work/./node_modules/string-convert/camel2hyphen.js","webpack://ready-2-work/../../../src/components/VApp/VApp.ts","webpack://ready-2-work/../../../src/components/VAvatar/VAvatar.ts","webpack://ready-2-work/../../../src/components/VProgressCircular/index.ts","webpack://ready-2-work/../../../src/components/VBtn/VBtn.ts","webpack://ready-2-work/../../../src/components/VCard/VCard.ts","webpack://ready-2-work/../../../src/components/VChip/VChip.ts","webpack://ready-2-work/../../../src/components/VDialog/VDialog.ts","webpack://ready-2-work/../../../src/components/VDivider/VDivider.ts","webpack://ready-2-work/../../../src/components/VGrid/VContainer.ts","webpack://ready-2-work/../../../src/components/VGrid/VFlex.ts","webpack://ready-2-work/../../../src/components/VGrid/VLayout.ts","webpack://ready-2-work/../../../src/components/VGrid/VSpacer.ts","webpack://ready-2-work/../../../src/components/VGrid/grid.ts","webpack://ready-2-work/../../../src/components/VIcon/VIcon.ts","webpack://ready-2-work/../../../src/components/VIcon/index.ts","webpack://ready-2-work/../../../src/components/VResponsive/index.ts","webpack://ready-2-work/../../../src/components/VImg/VImg.ts","webpack://ready-2-work/../../../src/components/VMessages/VMessages.ts","webpack://ready-2-work/../../../src/components/VMessages/index.ts","webpack://ready-2-work/../../../src/components/VInput/VInput.ts","webpack://ready-2-work/../../../src/components/VInput/index.ts","webpack://ready-2-work/../../../src/components/VItemGroup/VItemGroup.ts","webpack://ready-2-work/../../../src/components/VLabel/VLabel.ts","webpack://ready-2-work/../../../src/components/VLabel/index.ts","webpack://ready-2-work/../../../src/components/VList/VList.ts","webpack://ready-2-work/../../../src/components/VList/VListItem.ts","webpack://ready-2-work/../../../src/components/VList/VListItemAction.ts","webpack://ready-2-work/../../../src/components/VAvatar/index.ts","webpack://ready-2-work/../../../src/components/VList/VListItemAvatar.ts","webpack://ready-2-work/../../../src/components/VList/VListItemGroup.ts","webpack://ready-2-work/../../../src/components/VList/VListItemIcon.ts","webpack://ready-2-work/../../../src/components/VList/VListGroup.ts","webpack://ready-2-work/../../../src/components/VList/index.ts","webpack://ready-2-work/../../../src/components/VMain/VMain.ts","webpack://ready-2-work/../../../src/components/VMenu/VMenu.ts","webpack://ready-2-work/../../../src/components/VOverlay/VOverlay.ts","webpack://ready-2-work/../../../src/components/VProgressCircular/VProgressCircular.ts","webpack://ready-2-work/../../../src/components/VProgressLinear/VProgressLinear.ts","webpack://ready-2-work/../../../src/components/VProgressLinear/index.ts","webpack://ready-2-work/../../../src/components/VResponsive/VResponsive.ts","webpack://ready-2-work/../../../src/components/VChip/index.ts","webpack://ready-2-work/../../../src/components/VMenu/index.ts","webpack://ready-2-work/../../../src/components/VCheckbox/VSimpleCheckbox.ts","webpack://ready-2-work/../../../src/components/VDivider/index.ts","webpack://ready-2-work/../../../src/components/VSubheader/index.ts","webpack://ready-2-work/../../../src/components/VSelect/VSelectList.ts","webpack://ready-2-work/../../../src/mixins/filterable/index.ts","webpack://ready-2-work/../../../src/components/VSelect/VSelect.ts","webpack://ready-2-work/../../../src/components/VSheet/VSheet.ts","webpack://ready-2-work/../../../src/components/VSheet/index.ts","webpack://ready-2-work/../../../src/components/VSkeletonLoader/VSkeletonLoader.ts","webpack://ready-2-work/../../../src/components/VSnackbar/VSnackbar.ts","webpack://ready-2-work/../../../src/components/VSubheader/VSubheader.ts","webpack://ready-2-work/../../../src/components/VSystemBar/VSystemBar.ts","webpack://ready-2-work/../../../src/components/VCounter/VCounter.ts","webpack://ready-2-work/../../../src/components/VCounter/index.ts","webpack://ready-2-work/../../../src/mixins/intersectable/index.ts","webpack://ready-2-work/../../../src/components/VTextField/VTextField.ts","webpack://ready-2-work/../../../src/components/VThemeProvider/VThemeProvider.ts","webpack://ready-2-work/../../../src/components/VToolbar/VToolbar.ts","webpack://ready-2-work/../../../src/components/VToolbar/index.ts","webpack://ready-2-work/../../../src/components/VTooltip/VTooltip.ts","webpack://ready-2-work/../../../src/components/VVirtualScroll/VVirtualScroll.ts","webpack://ready-2-work/../../../src/components/transitions/createTransition.ts","webpack://ready-2-work/../../../src/components/transitions/expand-transition.ts","webpack://ready-2-work/../../../src/components/transitions/index.ts","webpack://ready-2-work/../../../src/directives/click-outside/index.ts","webpack://ready-2-work/../../../src/directives/intersect/index.ts","webpack://ready-2-work/../../../src/directives/resize/index.ts","webpack://ready-2-work/../../../src/directives/ripple/index.ts","webpack://ready-2-work/../../../src/directives/scroll/index.ts","webpack://ready-2-work/../src/install.ts","webpack://ready-2-work/../../src/locale/en.ts","webpack://ready-2-work/../../../src/presets/default/index.ts","webpack://ready-2-work/../../../src/services/presets/index.ts","webpack://ready-2-work/../../../src/services/application/index.ts","webpack://ready-2-work/../../../src/services/breakpoint/index.ts","webpack://ready-2-work/../../../src/services/icons/presets/mdi-svg.ts","webpack://ready-2-work/../../../src/services/icons/presets/md.ts","webpack://ready-2-work/../../../src/services/icons/presets/mdi.ts","webpack://ready-2-work/../../../src/services/icons/presets/fa.ts","webpack://ready-2-work/../../../src/services/icons/presets/fa4.ts","webpack://ready-2-work/../../../src/services/icons/presets/fa-svg.ts","webpack://ready-2-work/../../../src/services/icons/presets/index.ts","webpack://ready-2-work/../../../src/services/icons/index.ts","webpack://ready-2-work/../../../src/services/lang/index.ts","webpack://ready-2-work/../../../src/util/color/transformSRGB.ts","webpack://ready-2-work/../../../src/util/color/transformCIELAB.ts","webpack://ready-2-work/../../../src/services/theme/utils.ts","webpack://ready-2-work/../../../src/services/theme/index.ts","webpack://ready-2-work/../src/framework.ts","webpack://ready-2-work/../../../src/mixins/activatable/index.ts","webpack://ready-2-work/../../../src/mixins/applicationable/index.ts","webpack://ready-2-work/../../../src/mixins/binds-attrs/index.ts","webpack://ready-2-work/../../../src/mixins/bootable/index.ts","webpack://ready-2-work/../../../src/mixins/colorable/index.ts","webpack://ready-2-work/../../../src/mixins/comparable/index.ts","webpack://ready-2-work/../../../src/mixins/delayable/index.ts","webpack://ready-2-work/../../../src/mixins/dependent/index.ts","webpack://ready-2-work/../../../src/mixins/detachable/index.ts","webpack://ready-2-work/../../../src/mixins/elevatable/index.ts","webpack://ready-2-work/../../../src/mixins/groupable/index.ts","webpack://ready-2-work/../../../src/mixins/loadable/index.ts","webpack://ready-2-work/../../../src/mixins/measurable/index.ts","webpack://ready-2-work/../../../src/mixins/menuable/index.ts","webpack://ready-2-work/../../../src/components/VOverlay/index.ts","webpack://ready-2-work/../../../src/mixins/overlayable/index.ts","webpack://ready-2-work/../../../src/mixins/positionable/index.ts","webpack://ready-2-work/../../../src/mixins/proxyable/index.ts","webpack://ready-2-work/../../../src/mixins/registrable/index.ts","webpack://ready-2-work/../../../src/mixins/returnable/index.ts","webpack://ready-2-work/../../../src/mixins/roundable/index.ts","webpack://ready-2-work/../../../src/mixins/routable/index.ts","webpack://ready-2-work/../../../src/mixins/sizeable/index.ts","webpack://ready-2-work/../../../src/mixins/ssr-bootable/index.ts","webpack://ready-2-work/../../../src/mixins/stackable/index.ts","webpack://ready-2-work/../../../src/mixins/themeable/index.ts","webpack://ready-2-work/../../../src/mixins/toggleable/index.ts","webpack://ready-2-work/../../../src/mixins/validatable/index.ts","webpack://ready-2-work/../../../src/services/goto/easing-patterns.ts","webpack://ready-2-work/../../../src/services/goto/util.ts","webpack://ready-2-work/../../../src/services/goto/index.ts","webpack://ready-2-work/../../../src/services/service/index.ts","webpack://ready-2-work/../../src/util/colorUtils.ts","webpack://ready-2-work/../../src/util/console.ts","webpack://ready-2-work/../../src/util/dom.ts","webpack://ready-2-work/../../src/util/helpers.ts","webpack://ready-2-work/../../src/util/mergeData.ts","webpack://ready-2-work/../../src/util/mixins.ts","webpack://ready-2-work/./node_modules/vee-validate/dist/rules.js","webpack://ready-2-work/./node_modules/vee-validate/dist/vee-validate.esm.js","webpack://ready-2-work/./node_modules/vue-i18n/dist/vue-i18n.esm.js","webpack://ready-2-work/./node_modules/vue-meta/dist/vue-meta.esm.js","webpack://ready-2-work/./node_modules/vue-mq/dist/vue-mq.es.js","webpack://ready-2-work/./node_modules/vue-router/dist/vue-router.esm.js","webpack://ready-2-work/./node_modules/vue-toastification/dist/esm/index.js","webpack://ready-2-work/./node_modules/vue/dist/vue.runtime.esm.js","webpack://ready-2-work/./node_modules/vuetify-loader/lib/runtime/installComponents.js","webpack://ready-2-work/./node_modules/vuex/dist/vuex.esm.js","webpack://ready-2-work/./node_modules/idb/build/wrap-idb-value.js","webpack://ready-2-work/./node_modules/idb/build/index.js","webpack://ready-2-work/./node_modules/@firebase/app/dist/esm/index.esm2017.js","webpack://ready-2-work/./node_modules/@firebase/component/dist/esm/index.esm2017.js","webpack://ready-2-work/./node_modules/@firebase/logger/dist/esm/index.esm2017.js","webpack://ready-2-work/./node_modules/nanoid/index.browser.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/createSuper.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/construct.js","webpack://ready-2-work/./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js"],"sourcesContent":["// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var 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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\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\n/** Error thrown when an HTTP request fails. */\r\nvar HttpError = /** @class */ (function (_super) {\r\n __extends(HttpError, _super);\r\n /** Constructs a new instance of {@link @aspnet/signalr.HttpError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n * @param {number} statusCode The HTTP status code represented by this error.\r\n */\r\n function HttpError(errorMessage, statusCode) {\r\n var _newTarget = this.constructor;\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n _this.statusCode = statusCode;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return HttpError;\r\n}(Error));\r\nexport { HttpError };\r\n/** Error thrown when a timeout elapses. */\r\nvar TimeoutError = /** @class */ (function (_super) {\r\n __extends(TimeoutError, _super);\r\n /** Constructs a new instance of {@link @aspnet/signalr.TimeoutError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n function TimeoutError(errorMessage) {\r\n var _newTarget = this.constructor;\r\n if (errorMessage === void 0) { errorMessage = \"A timeout occurred.\"; }\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return TimeoutError;\r\n}(Error));\r\nexport { TimeoutError };\r\n//# sourceMappingURL=Errors.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\r\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\r\nexport var LogLevel;\r\n(function (LogLevel) {\r\n /** Log level for very low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Trace\"] = 0] = \"Trace\";\r\n /** Log level for low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n /** Log level for informational diagnostic messages. */\r\n LogLevel[LogLevel[\"Information\"] = 2] = \"Information\";\r\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\r\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\r\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\r\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\r\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\r\n LogLevel[LogLevel[\"Critical\"] = 5] = \"Critical\";\r\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\r\n LogLevel[LogLevel[\"None\"] = 6] = \"None\";\r\n})(LogLevel || (LogLevel = {}));\r\n//# sourceMappingURL=ILogger.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var 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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\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\nvar __assign = (this && this.__assign) || Object.assign || function(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))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\r\n/** Represents an HTTP response. */\r\nvar HttpResponse = /** @class */ (function () {\r\n function HttpResponse(statusCode, statusText, content) {\r\n this.statusCode = statusCode;\r\n this.statusText = statusText;\r\n this.content = content;\r\n }\r\n return HttpResponse;\r\n}());\r\nexport { HttpResponse };\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nvar HttpClient = /** @class */ (function () {\r\n function HttpClient() {\r\n }\r\n HttpClient.prototype.get = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"GET\", url: url }));\r\n };\r\n HttpClient.prototype.post = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"POST\", url: url }));\r\n };\r\n HttpClient.prototype.delete = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"DELETE\", url: url }));\r\n };\r\n return HttpClient;\r\n}());\r\nexport { HttpClient };\r\n/** Default implementation of {@link @aspnet/signalr.HttpClient}. */\r\nvar DefaultHttpClient = /** @class */ (function (_super) {\r\n __extends(DefaultHttpClient, _super);\r\n /** Creates a new instance of the {@link @aspnet/signalr.DefaultHttpClient}, using the provided {@link @aspnet/signalr.ILogger} to log messages. */\r\n function DefaultHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n _this.logger = logger;\r\n return _this;\r\n }\r\n /** @inheritDoc */\r\n DefaultHttpClient.prototype.send = function (request) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(request.method, request.url, true);\r\n xhr.withCredentials = true;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n if (request.headers) {\r\n Object.keys(request.headers)\r\n .forEach(function (header) { return xhr.setRequestHeader(header, request.headers[header]); });\r\n }\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = function () {\r\n xhr.abort();\r\n };\r\n }\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n xhr.onload = function () {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n }\r\n else {\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n }\r\n };\r\n xhr.onerror = function () {\r\n _this.logger.log(LogLevel.Warning, \"Error from HTTP request. \" + xhr.status + \": \" + xhr.statusText);\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n };\r\n xhr.ontimeout = function () {\r\n _this.logger.log(LogLevel.Warning, \"Timeout from HTTP request.\");\r\n reject(new TimeoutError());\r\n };\r\n xhr.send(request.content || \"\");\r\n });\r\n };\r\n return DefaultHttpClient;\r\n}(HttpClient));\r\nexport { DefaultHttpClient };\r\n//# sourceMappingURL=HttpClient.js.map","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\n/*! *****************************************************************************\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\nfunction __extends(d, b) {\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\nvar __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\nfunction __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\nfunction __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 (_) 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\nfunction __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\nfunction __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}\n\nexport { __assign, __awaiter, __extends, __generator, __read, __spread };\n//# sourceMappingURL=_tslib.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nvar PerformanceEvents;\r\n(function (PerformanceEvents) {\r\n /**\r\n * acquireTokenByCode API (msal-browser and msal-node).\r\n * Used to acquire tokens by trading an authorization code against the token endpoint.\r\n */\r\n PerformanceEvents[\"AcquireTokenByCode\"] = \"acquireTokenByCode\";\r\n /**\r\n * acquireTokenByRefreshToken API (msal-browser and msal-node).\r\n * Used to renew an access token using a refresh token against the token endpoint.\r\n */\r\n PerformanceEvents[\"AcquireTokenByRefreshToken\"] = \"acquireTokenByRefreshToken\";\r\n /**\r\n * acquireTokenSilent API (msal-browser and msal-node).\r\n * Used to silently acquire a new access token (from the cache or the network).\r\n */\r\n PerformanceEvents[\"AcquireTokenSilent\"] = \"acquireTokenSilent\";\r\n /**\r\n * acquireTokenSilentAsync (msal-browser).\r\n * Internal API for acquireTokenSilent.\r\n */\r\n PerformanceEvents[\"AcquireTokenSilentAsync\"] = \"acquireTokenSilentAsync\";\r\n /**\r\n * acquireTokenPopup (msal-browser).\r\n * Used to acquire a new access token interactively through pop ups\r\n */\r\n PerformanceEvents[\"AcquireTokenPopup\"] = \"acquireTokenPopup\";\r\n /**\r\n * getPublicKeyThumbprint API in CryptoOpts class (msal-browser).\r\n * Used to generate a public/private keypair and generate a public key thumbprint for pop requests.\r\n */\r\n PerformanceEvents[\"CryptoOptsGetPublicKeyThumbprint\"] = \"cryptoOptsGetPublicKeyThumbprint\";\r\n /**\r\n * signJwt API in CryptoOpts class (msal-browser).\r\n * Used to signed a pop token.\r\n */\r\n PerformanceEvents[\"CryptoOptsSignJwt\"] = \"cryptoOptsSignJwt\";\r\n /**\r\n * acquireToken API in the SilentCacheClient class (msal-browser).\r\n * Used to read access tokens from the cache.\r\n */\r\n PerformanceEvents[\"SilentCacheClientAcquireToken\"] = \"silentCacheClientAcquireToken\";\r\n /**\r\n * acquireToken API in the SilentIframeClient class (msal-browser).\r\n * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe.\r\n */\r\n PerformanceEvents[\"SilentIframeClientAcquireToken\"] = \"silentIframeClientAcquireToken\";\r\n /**\r\n * acquireToken API in SilentRereshClient (msal-browser).\r\n * Used to acquire a new set of tokens from the token endpoint using a refresh token.\r\n */\r\n PerformanceEvents[\"SilentRefreshClientAcquireToken\"] = \"silentRefreshClientAcquireToken\";\r\n /**\r\n * ssoSilent API (msal-browser).\r\n * Used to silently acquire an authorization code and set of tokens using a hidden iframe.\r\n */\r\n PerformanceEvents[\"SsoSilent\"] = \"ssoSilent\";\r\n /**\r\n * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser).\r\n * Used to load authority metadata for a request.\r\n */\r\n PerformanceEvents[\"StandardInteractionClientGetDiscoveredAuthority\"] = \"standardInteractionClientGetDiscoveredAuthority\";\r\n /**\r\n * acquireToken APIs in msal-browser.\r\n * Used to make an /authorize endpoint call with native brokering enabled.\r\n */\r\n PerformanceEvents[\"FetchAccountIdWithNativeBroker\"] = \"fetchAccountIdWithNativeBroker\";\r\n /**\r\n * acquireToken API in NativeInteractionClient class (msal-browser).\r\n * Used to acquire a token from Native component when native brokering is enabled.\r\n */\r\n PerformanceEvents[\"NativeInteractionClientAcquireToken\"] = \"nativeInteractionClientAcquireToken\";\r\n})(PerformanceEvents || (PerformanceEvents = {}));\r\n/**\r\n * State of the performance event.\r\n *\r\n * @export\r\n * @enum {number}\r\n */\r\nvar PerformanceEventStatus;\r\n(function (PerformanceEventStatus) {\r\n PerformanceEventStatus[PerformanceEventStatus[\"NotStarted\"] = 0] = \"NotStarted\";\r\n PerformanceEventStatus[PerformanceEventStatus[\"InProgress\"] = 1] = \"InProgress\";\r\n PerformanceEventStatus[PerformanceEventStatus[\"Completed\"] = 2] = \"Completed\";\r\n})(PerformanceEventStatus || (PerformanceEventStatus = {}));\n\nexport { PerformanceEventStatus, PerformanceEvents };\n//# sourceMappingURL=PerformanceEvent.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\n/*! *****************************************************************************\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\nfunction __extends(d, b) {\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\nvar __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\nfunction __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\nfunction __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 (_) 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\nfunction __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}\n\nexport { __assign, __awaiter, __extends, __generator, __spreadArrays };\n//# sourceMappingURL=_tslib.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __spreadArrays } from '../_virtual/_tslib.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar Constants = {\r\n LIBRARY_NAME: \"MSAL.JS\",\r\n SKU: \"msal.js.common\",\r\n // Prefix for all library cache entries\r\n CACHE_PREFIX: \"msal\",\r\n // default authority\r\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\r\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\r\n DEFAULT_COMMON_TENANT: \"common\",\r\n // ADFS String\r\n ADFS: \"adfs\",\r\n // Default AAD Instance Discovery Endpoint\r\n AAD_INSTANCE_DISCOVERY_ENDPT: \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\r\n // Resource delimiter - used for certain cache entries\r\n RESOURCE_DELIM: \"|\",\r\n // Placeholder for non-existent account ids/objects\r\n NO_ACCOUNT: \"NO_ACCOUNT\",\r\n // Claims\r\n CLAIMS: \"claims\",\r\n // Consumer UTID\r\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\r\n // Default scopes\r\n OPENID_SCOPE: \"openid\",\r\n PROFILE_SCOPE: \"profile\",\r\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\r\n EMAIL_SCOPE: \"email\",\r\n // Default response type for authorization code flow\r\n CODE_RESPONSE_TYPE: \"code\",\r\n CODE_GRANT_TYPE: \"authorization_code\",\r\n RT_GRANT_TYPE: \"refresh_token\",\r\n FRAGMENT_RESPONSE_MODE: \"fragment\",\r\n S256_CODE_CHALLENGE_METHOD: \"S256\",\r\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\r\n AUTHORIZATION_PENDING: \"authorization_pending\",\r\n NOT_DEFINED: \"not_defined\",\r\n EMPTY_STRING: \"\",\r\n FORWARD_SLASH: \"/\",\r\n IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\r\n IMDS_VERSION: \"2020-06-01\",\r\n IMDS_TIMEOUT: 2000,\r\n AZURE_REGION_AUTO_DISCOVER_FLAG: \"TryAutoDetect\",\r\n REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\r\n KNOWN_PUBLIC_CLOUDS: [\"login.microsoftonline.com\", \"login.windows.net\", \"login.microsoft.com\", \"sts.windows.net\"],\r\n TOKEN_RESPONSE_TYPE: \"token\",\r\n ID_TOKEN_RESPONSE_TYPE: \"id_token\"\r\n};\r\nvar OIDC_DEFAULT_SCOPES = [\r\n Constants.OPENID_SCOPE,\r\n Constants.PROFILE_SCOPE,\r\n Constants.OFFLINE_ACCESS_SCOPE\r\n];\r\nvar OIDC_SCOPES = __spreadArrays(OIDC_DEFAULT_SCOPES, [\r\n Constants.EMAIL_SCOPE\r\n]);\r\n/**\r\n * Request header names\r\n */\r\nvar HeaderNames;\r\n(function (HeaderNames) {\r\n HeaderNames[\"CONTENT_TYPE\"] = \"Content-Type\";\r\n HeaderNames[\"RETRY_AFTER\"] = \"Retry-After\";\r\n HeaderNames[\"CCS_HEADER\"] = \"X-AnchorMailbox\";\r\n HeaderNames[\"WWWAuthenticate\"] = \"WWW-Authenticate\";\r\n HeaderNames[\"AuthenticationInfo\"] = \"Authentication-Info\";\r\n})(HeaderNames || (HeaderNames = {}));\r\n/**\r\n * Persistent cache keys MSAL which stay while user is logged in.\r\n */\r\nvar PersistentCacheKeys;\r\n(function (PersistentCacheKeys) {\r\n PersistentCacheKeys[\"ID_TOKEN\"] = \"idtoken\";\r\n PersistentCacheKeys[\"CLIENT_INFO\"] = \"client.info\";\r\n PersistentCacheKeys[\"ADAL_ID_TOKEN\"] = \"adal.idtoken\";\r\n PersistentCacheKeys[\"ERROR\"] = \"error\";\r\n PersistentCacheKeys[\"ERROR_DESC\"] = \"error.description\";\r\n PersistentCacheKeys[\"ACTIVE_ACCOUNT\"] = \"active-account\";\r\n})(PersistentCacheKeys || (PersistentCacheKeys = {}));\r\n/**\r\n * String constants related to AAD Authority\r\n */\r\nvar AADAuthorityConstants;\r\n(function (AADAuthorityConstants) {\r\n AADAuthorityConstants[\"COMMON\"] = \"common\";\r\n AADAuthorityConstants[\"ORGANIZATIONS\"] = \"organizations\";\r\n AADAuthorityConstants[\"CONSUMERS\"] = \"consumers\";\r\n})(AADAuthorityConstants || (AADAuthorityConstants = {}));\r\n/**\r\n * Keys in the hashParams sent by AAD Server\r\n */\r\nvar AADServerParamKeys;\r\n(function (AADServerParamKeys) {\r\n AADServerParamKeys[\"CLIENT_ID\"] = \"client_id\";\r\n AADServerParamKeys[\"REDIRECT_URI\"] = \"redirect_uri\";\r\n AADServerParamKeys[\"RESPONSE_TYPE\"] = \"response_type\";\r\n AADServerParamKeys[\"RESPONSE_MODE\"] = \"response_mode\";\r\n AADServerParamKeys[\"GRANT_TYPE\"] = \"grant_type\";\r\n AADServerParamKeys[\"CLAIMS\"] = \"claims\";\r\n AADServerParamKeys[\"SCOPE\"] = \"scope\";\r\n AADServerParamKeys[\"ERROR\"] = \"error\";\r\n AADServerParamKeys[\"ERROR_DESCRIPTION\"] = \"error_description\";\r\n AADServerParamKeys[\"ACCESS_TOKEN\"] = \"access_token\";\r\n AADServerParamKeys[\"ID_TOKEN\"] = \"id_token\";\r\n AADServerParamKeys[\"REFRESH_TOKEN\"] = \"refresh_token\";\r\n AADServerParamKeys[\"EXPIRES_IN\"] = \"expires_in\";\r\n AADServerParamKeys[\"STATE\"] = \"state\";\r\n AADServerParamKeys[\"NONCE\"] = \"nonce\";\r\n AADServerParamKeys[\"PROMPT\"] = \"prompt\";\r\n AADServerParamKeys[\"SESSION_STATE\"] = \"session_state\";\r\n AADServerParamKeys[\"CLIENT_INFO\"] = \"client_info\";\r\n AADServerParamKeys[\"CODE\"] = \"code\";\r\n AADServerParamKeys[\"CODE_CHALLENGE\"] = \"code_challenge\";\r\n AADServerParamKeys[\"CODE_CHALLENGE_METHOD\"] = \"code_challenge_method\";\r\n AADServerParamKeys[\"CODE_VERIFIER\"] = \"code_verifier\";\r\n AADServerParamKeys[\"CLIENT_REQUEST_ID\"] = \"client-request-id\";\r\n AADServerParamKeys[\"X_CLIENT_SKU\"] = \"x-client-SKU\";\r\n AADServerParamKeys[\"X_CLIENT_VER\"] = \"x-client-VER\";\r\n AADServerParamKeys[\"X_CLIENT_OS\"] = \"x-client-OS\";\r\n AADServerParamKeys[\"X_CLIENT_CPU\"] = \"x-client-CPU\";\r\n AADServerParamKeys[\"X_CLIENT_CURR_TELEM\"] = \"x-client-current-telemetry\";\r\n AADServerParamKeys[\"X_CLIENT_LAST_TELEM\"] = \"x-client-last-telemetry\";\r\n AADServerParamKeys[\"X_MS_LIB_CAPABILITY\"] = \"x-ms-lib-capability\";\r\n AADServerParamKeys[\"X_APP_NAME\"] = \"x-app-name\";\r\n AADServerParamKeys[\"X_APP_VER\"] = \"x-app-ver\";\r\n AADServerParamKeys[\"POST_LOGOUT_URI\"] = \"post_logout_redirect_uri\";\r\n AADServerParamKeys[\"ID_TOKEN_HINT\"] = \"id_token_hint\";\r\n AADServerParamKeys[\"DEVICE_CODE\"] = \"device_code\";\r\n AADServerParamKeys[\"CLIENT_SECRET\"] = \"client_secret\";\r\n AADServerParamKeys[\"CLIENT_ASSERTION\"] = \"client_assertion\";\r\n AADServerParamKeys[\"CLIENT_ASSERTION_TYPE\"] = \"client_assertion_type\";\r\n AADServerParamKeys[\"TOKEN_TYPE\"] = \"token_type\";\r\n AADServerParamKeys[\"REQ_CNF\"] = \"req_cnf\";\r\n AADServerParamKeys[\"OBO_ASSERTION\"] = \"assertion\";\r\n AADServerParamKeys[\"REQUESTED_TOKEN_USE\"] = \"requested_token_use\";\r\n AADServerParamKeys[\"ON_BEHALF_OF\"] = \"on_behalf_of\";\r\n AADServerParamKeys[\"FOCI\"] = \"foci\";\r\n AADServerParamKeys[\"CCS_HEADER\"] = \"X-AnchorMailbox\";\r\n AADServerParamKeys[\"RETURN_SPA_CODE\"] = \"return_spa_code\";\r\n AADServerParamKeys[\"NATIVE_BROKER\"] = \"nativebroker\";\r\n AADServerParamKeys[\"LOGOUT_HINT\"] = \"logout_hint\";\r\n})(AADServerParamKeys || (AADServerParamKeys = {}));\r\n/**\r\n * Claims request keys\r\n */\r\nvar ClaimsRequestKeys;\r\n(function (ClaimsRequestKeys) {\r\n ClaimsRequestKeys[\"ACCESS_TOKEN\"] = \"access_token\";\r\n ClaimsRequestKeys[\"XMS_CC\"] = \"xms_cc\";\r\n})(ClaimsRequestKeys || (ClaimsRequestKeys = {}));\r\n/**\r\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\r\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\r\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\r\n */\r\nvar PromptValue = {\r\n LOGIN: \"login\",\r\n SELECT_ACCOUNT: \"select_account\",\r\n CONSENT: \"consent\",\r\n NONE: \"none\",\r\n CREATE: \"create\"\r\n};\r\n/**\r\n * SSO Types - generated to populate hints\r\n */\r\nvar SSOTypes;\r\n(function (SSOTypes) {\r\n SSOTypes[\"ACCOUNT\"] = \"account\";\r\n SSOTypes[\"SID\"] = \"sid\";\r\n SSOTypes[\"LOGIN_HINT\"] = \"login_hint\";\r\n SSOTypes[\"ID_TOKEN\"] = \"id_token\";\r\n SSOTypes[\"DOMAIN_HINT\"] = \"domain_hint\";\r\n SSOTypes[\"ORGANIZATIONS\"] = \"organizations\";\r\n SSOTypes[\"CONSUMERS\"] = \"consumers\";\r\n SSOTypes[\"ACCOUNT_ID\"] = \"accountIdentifier\";\r\n SSOTypes[\"HOMEACCOUNT_ID\"] = \"homeAccountIdentifier\";\r\n})(SSOTypes || (SSOTypes = {}));\r\n/**\r\n * allowed values for codeVerifier\r\n */\r\nvar CodeChallengeMethodValues = {\r\n PLAIN: \"plain\",\r\n S256: \"S256\"\r\n};\r\n/**\r\n * allowed values for response_mode\r\n */\r\nvar ResponseMode;\r\n(function (ResponseMode) {\r\n ResponseMode[\"QUERY\"] = \"query\";\r\n ResponseMode[\"FRAGMENT\"] = \"fragment\";\r\n ResponseMode[\"FORM_POST\"] = \"form_post\";\r\n})(ResponseMode || (ResponseMode = {}));\r\n/**\r\n * allowed grant_type\r\n */\r\nvar GrantType;\r\n(function (GrantType) {\r\n GrantType[\"IMPLICIT_GRANT\"] = \"implicit\";\r\n GrantType[\"AUTHORIZATION_CODE_GRANT\"] = \"authorization_code\";\r\n GrantType[\"CLIENT_CREDENTIALS_GRANT\"] = \"client_credentials\";\r\n GrantType[\"RESOURCE_OWNER_PASSWORD_GRANT\"] = \"password\";\r\n GrantType[\"REFRESH_TOKEN_GRANT\"] = \"refresh_token\";\r\n GrantType[\"DEVICE_CODE_GRANT\"] = \"device_code\";\r\n GrantType[\"JWT_BEARER\"] = \"urn:ietf:params:oauth:grant-type:jwt-bearer\";\r\n})(GrantType || (GrantType = {}));\r\n/**\r\n * Account types in Cache\r\n */\r\nvar CacheAccountType;\r\n(function (CacheAccountType) {\r\n CacheAccountType[\"MSSTS_ACCOUNT_TYPE\"] = \"MSSTS\";\r\n CacheAccountType[\"ADFS_ACCOUNT_TYPE\"] = \"ADFS\";\r\n CacheAccountType[\"MSAV1_ACCOUNT_TYPE\"] = \"MSA\";\r\n CacheAccountType[\"GENERIC_ACCOUNT_TYPE\"] = \"Generic\"; // NTLM, Kerberos, FBA, Basic etc\r\n})(CacheAccountType || (CacheAccountType = {}));\r\n/**\r\n * Separators used in cache\r\n */\r\nvar Separators;\r\n(function (Separators) {\r\n Separators[\"CACHE_KEY_SEPARATOR\"] = \"-\";\r\n Separators[\"CLIENT_INFO_SEPARATOR\"] = \".\";\r\n})(Separators || (Separators = {}));\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nvar CredentialType;\r\n(function (CredentialType) {\r\n CredentialType[\"ID_TOKEN\"] = \"IdToken\";\r\n CredentialType[\"ACCESS_TOKEN\"] = \"AccessToken\";\r\n CredentialType[\"ACCESS_TOKEN_WITH_AUTH_SCHEME\"] = \"AccessToken_With_AuthScheme\";\r\n CredentialType[\"REFRESH_TOKEN\"] = \"RefreshToken\";\r\n})(CredentialType || (CredentialType = {}));\r\n/**\r\n * Credential Type stored in the cache\r\n */\r\nvar CacheSchemaType;\r\n(function (CacheSchemaType) {\r\n CacheSchemaType[\"ACCOUNT\"] = \"Account\";\r\n CacheSchemaType[\"CREDENTIAL\"] = \"Credential\";\r\n CacheSchemaType[\"ID_TOKEN\"] = \"IdToken\";\r\n CacheSchemaType[\"ACCESS_TOKEN\"] = \"AccessToken\";\r\n CacheSchemaType[\"REFRESH_TOKEN\"] = \"RefreshToken\";\r\n CacheSchemaType[\"APP_METADATA\"] = \"AppMetadata\";\r\n CacheSchemaType[\"TEMPORARY\"] = \"TempCache\";\r\n CacheSchemaType[\"TELEMETRY\"] = \"Telemetry\";\r\n CacheSchemaType[\"UNDEFINED\"] = \"Undefined\";\r\n CacheSchemaType[\"THROTTLING\"] = \"Throttling\";\r\n})(CacheSchemaType || (CacheSchemaType = {}));\r\n/**\r\n * Combine all cache types\r\n */\r\nvar CacheType;\r\n(function (CacheType) {\r\n CacheType[CacheType[\"ADFS\"] = 1001] = \"ADFS\";\r\n CacheType[CacheType[\"MSA\"] = 1002] = \"MSA\";\r\n CacheType[CacheType[\"MSSTS\"] = 1003] = \"MSSTS\";\r\n CacheType[CacheType[\"GENERIC\"] = 1004] = \"GENERIC\";\r\n CacheType[CacheType[\"ACCESS_TOKEN\"] = 2001] = \"ACCESS_TOKEN\";\r\n CacheType[CacheType[\"REFRESH_TOKEN\"] = 2002] = \"REFRESH_TOKEN\";\r\n CacheType[CacheType[\"ID_TOKEN\"] = 2003] = \"ID_TOKEN\";\r\n CacheType[CacheType[\"APP_METADATA\"] = 3001] = \"APP_METADATA\";\r\n CacheType[CacheType[\"UNDEFINED\"] = 9999] = \"UNDEFINED\";\r\n})(CacheType || (CacheType = {}));\r\n/**\r\n * More Cache related constants\r\n */\r\nvar APP_METADATA = \"appmetadata\";\r\nvar CLIENT_INFO = \"client_info\";\r\nvar THE_FAMILY_ID = \"1\";\r\nvar AUTHORITY_METADATA_CONSTANTS = {\r\n CACHE_KEY: \"authority-metadata\",\r\n REFRESH_TIME_SECONDS: 3600 * 24 // 24 Hours\r\n};\r\nvar AuthorityMetadataSource;\r\n(function (AuthorityMetadataSource) {\r\n AuthorityMetadataSource[\"CONFIG\"] = \"config\";\r\n AuthorityMetadataSource[\"CACHE\"] = \"cache\";\r\n AuthorityMetadataSource[\"NETWORK\"] = \"network\";\r\n})(AuthorityMetadataSource || (AuthorityMetadataSource = {}));\r\nvar SERVER_TELEM_CONSTANTS = {\r\n SCHEMA_VERSION: 5,\r\n MAX_CUR_HEADER_BYTES: 80,\r\n MAX_LAST_HEADER_BYTES: 330,\r\n MAX_CACHED_ERRORS: 50,\r\n CACHE_KEY: \"server-telemetry\",\r\n CATEGORY_SEPARATOR: \"|\",\r\n VALUE_SEPARATOR: \",\",\r\n OVERFLOW_TRUE: \"1\",\r\n OVERFLOW_FALSE: \"0\",\r\n UNKNOWN_ERROR: \"unknown_error\"\r\n};\r\n/**\r\n * Type of the authentication request\r\n */\r\nvar AuthenticationScheme;\r\n(function (AuthenticationScheme) {\r\n AuthenticationScheme[\"BEARER\"] = \"Bearer\";\r\n AuthenticationScheme[\"POP\"] = \"pop\";\r\n AuthenticationScheme[\"SSH\"] = \"ssh-cert\";\r\n})(AuthenticationScheme || (AuthenticationScheme = {}));\r\n/**\r\n * Constants related to throttling\r\n */\r\nvar ThrottlingConstants = {\r\n // Default time to throttle RequestThumbprint in seconds\r\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\r\n // Default maximum time to throttle in seconds, overrides what the server sends back\r\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\r\n // Prefix for storing throttling entries\r\n THROTTLING_PREFIX: \"throttling\",\r\n // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\r\n X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\"\r\n};\r\nvar Errors = {\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\r\n};\r\n/**\r\n * Password grant parameters\r\n */\r\nvar PasswordGrantConstants;\r\n(function (PasswordGrantConstants) {\r\n PasswordGrantConstants[\"username\"] = \"username\";\r\n PasswordGrantConstants[\"password\"] = \"password\";\r\n})(PasswordGrantConstants || (PasswordGrantConstants = {}));\r\n/**\r\n * Response codes\r\n */\r\nvar ResponseCodes;\r\n(function (ResponseCodes) {\r\n ResponseCodes[ResponseCodes[\"httpSuccess\"] = 200] = \"httpSuccess\";\r\n ResponseCodes[ResponseCodes[\"httpBadRequest\"] = 400] = \"httpBadRequest\";\r\n})(ResponseCodes || (ResponseCodes = {}));\r\n/**\r\n * Region Discovery Sources\r\n */\r\nvar RegionDiscoverySources;\r\n(function (RegionDiscoverySources) {\r\n RegionDiscoverySources[\"FAILED_AUTO_DETECTION\"] = \"1\";\r\n RegionDiscoverySources[\"INTERNAL_CACHE\"] = \"2\";\r\n RegionDiscoverySources[\"ENVIRONMENT_VARIABLE\"] = \"3\";\r\n RegionDiscoverySources[\"IMDS\"] = \"4\";\r\n})(RegionDiscoverySources || (RegionDiscoverySources = {}));\r\n/**\r\n * Region Discovery Outcomes\r\n */\r\nvar RegionDiscoveryOutcomes;\r\n(function (RegionDiscoveryOutcomes) {\r\n RegionDiscoveryOutcomes[\"CONFIGURED_MATCHES_DETECTED\"] = \"1\";\r\n RegionDiscoveryOutcomes[\"CONFIGURED_NO_AUTO_DETECTION\"] = \"2\";\r\n RegionDiscoveryOutcomes[\"CONFIGURED_NOT_DETECTED\"] = \"3\";\r\n RegionDiscoveryOutcomes[\"AUTO_DETECTION_REQUESTED_SUCCESSFUL\"] = \"4\";\r\n RegionDiscoveryOutcomes[\"AUTO_DETECTION_REQUESTED_FAILED\"] = \"5\";\r\n})(RegionDiscoveryOutcomes || (RegionDiscoveryOutcomes = {}));\r\nvar CacheOutcome;\r\n(function (CacheOutcome) {\r\n CacheOutcome[\"NO_CACHE_HIT\"] = \"0\";\r\n CacheOutcome[\"FORCE_REFRESH\"] = \"1\";\r\n CacheOutcome[\"NO_CACHED_ACCESS_TOKEN\"] = \"2\";\r\n CacheOutcome[\"CACHED_ACCESS_TOKEN_EXPIRED\"] = \"3\";\r\n CacheOutcome[\"REFRESH_CACHED_ACCESS_TOKEN\"] = \"4\";\r\n})(CacheOutcome || (CacheOutcome = {}));\n\nexport { AADAuthorityConstants, AADServerParamKeys, APP_METADATA, AUTHORITY_METADATA_CONSTANTS, AuthenticationScheme, AuthorityMetadataSource, CLIENT_INFO, CacheAccountType, CacheOutcome, CacheSchemaType, CacheType, ClaimsRequestKeys, CodeChallengeMethodValues, Constants, CredentialType, Errors, GrantType, HeaderNames, OIDC_DEFAULT_SCOPES, OIDC_SCOPES, PasswordGrantConstants, PersistentCacheKeys, PromptValue, RegionDiscoveryOutcomes, RegionDiscoverySources, ResponseCodes, ResponseMode, SERVER_TELEM_CONSTANTS, SSOTypes, Separators, THE_FAMILY_ID, ThrottlingConstants };\n//# sourceMappingURL=Constants.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { OIDC_DEFAULT_SCOPES } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Constants\r\n */\r\nvar BrowserConstants = {\r\n /**\r\n * Interaction in progress cache value\r\n */\r\n INTERACTION_IN_PROGRESS_VALUE: \"interaction_in_progress\",\r\n /**\r\n * Invalid grant error code\r\n */\r\n INVALID_GRANT_ERROR: \"invalid_grant\",\r\n /**\r\n * Default popup window width\r\n */\r\n POPUP_WIDTH: 483,\r\n /**\r\n * Default popup window height\r\n */\r\n POPUP_HEIGHT: 600,\r\n /**\r\n * Name of the popup window starts with\r\n */\r\n POPUP_NAME_PREFIX: \"msal\",\r\n /**\r\n * Default popup monitor poll interval in milliseconds\r\n */\r\n POLL_INTERVAL_MS: 50,\r\n /**\r\n * Msal-browser SKU\r\n */\r\n MSAL_SKU: \"msal.js.browser\",\r\n};\r\nvar NativeConstants = {\r\n CHANNEL_ID: \"53ee284d-920a-4b59-9d30-a60315b26836\",\r\n PREFERRED_EXTENSION_ID: \"ppnbnpeolgkicgegkbkbjmhlideopiji\"\r\n};\r\nvar NativeExtensionMethod;\r\n(function (NativeExtensionMethod) {\r\n NativeExtensionMethod[\"HandshakeRequest\"] = \"Handshake\";\r\n NativeExtensionMethod[\"HandshakeResponse\"] = \"HandshakeResponse\";\r\n NativeExtensionMethod[\"GetToken\"] = \"GetToken\";\r\n NativeExtensionMethod[\"Response\"] = \"Response\";\r\n})(NativeExtensionMethod || (NativeExtensionMethod = {}));\r\nvar BrowserCacheLocation;\r\n(function (BrowserCacheLocation) {\r\n BrowserCacheLocation[\"LocalStorage\"] = \"localStorage\";\r\n BrowserCacheLocation[\"SessionStorage\"] = \"sessionStorage\";\r\n BrowserCacheLocation[\"MemoryStorage\"] = \"memoryStorage\";\r\n})(BrowserCacheLocation || (BrowserCacheLocation = {}));\r\n/**\r\n * HTTP Request types supported by MSAL.\r\n */\r\nvar HTTP_REQUEST_TYPE;\r\n(function (HTTP_REQUEST_TYPE) {\r\n HTTP_REQUEST_TYPE[\"GET\"] = \"GET\";\r\n HTTP_REQUEST_TYPE[\"POST\"] = \"POST\";\r\n})(HTTP_REQUEST_TYPE || (HTTP_REQUEST_TYPE = {}));\r\n/**\r\n * Temporary cache keys for MSAL, deleted after any request.\r\n */\r\nvar TemporaryCacheKeys;\r\n(function (TemporaryCacheKeys) {\r\n TemporaryCacheKeys[\"AUTHORITY\"] = \"authority\";\r\n TemporaryCacheKeys[\"ACQUIRE_TOKEN_ACCOUNT\"] = \"acquireToken.account\";\r\n TemporaryCacheKeys[\"SESSION_STATE\"] = \"session.state\";\r\n TemporaryCacheKeys[\"REQUEST_STATE\"] = \"request.state\";\r\n TemporaryCacheKeys[\"NONCE_IDTOKEN\"] = \"nonce.id_token\";\r\n TemporaryCacheKeys[\"ORIGIN_URI\"] = \"request.origin\";\r\n TemporaryCacheKeys[\"RENEW_STATUS\"] = \"token.renew.status\";\r\n TemporaryCacheKeys[\"URL_HASH\"] = \"urlHash\";\r\n TemporaryCacheKeys[\"REQUEST_PARAMS\"] = \"request.params\";\r\n TemporaryCacheKeys[\"SCOPES\"] = \"scopes\";\r\n TemporaryCacheKeys[\"INTERACTION_STATUS_KEY\"] = \"interaction.status\";\r\n TemporaryCacheKeys[\"CCS_CREDENTIAL\"] = \"ccs.credential\";\r\n TemporaryCacheKeys[\"CORRELATION_ID\"] = \"request.correlationId\";\r\n TemporaryCacheKeys[\"NATIVE_REQUEST\"] = \"request.native\";\r\n})(TemporaryCacheKeys || (TemporaryCacheKeys = {}));\r\n/**\r\n * Cache keys stored in-memory\r\n */\r\nvar InMemoryCacheKeys;\r\n(function (InMemoryCacheKeys) {\r\n InMemoryCacheKeys[\"WRAPPER_SKU\"] = \"wrapper.sku\";\r\n InMemoryCacheKeys[\"WRAPPER_VER\"] = \"wrapper.version\";\r\n})(InMemoryCacheKeys || (InMemoryCacheKeys = {}));\r\n/**\r\n * API Codes for Telemetry purposes.\r\n * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs\r\n * 0-99 Silent Flow\r\n * 800-899 Auth Code Flow\r\n */\r\nvar ApiId;\r\n(function (ApiId) {\r\n ApiId[ApiId[\"acquireTokenRedirect\"] = 861] = \"acquireTokenRedirect\";\r\n ApiId[ApiId[\"acquireTokenPopup\"] = 862] = \"acquireTokenPopup\";\r\n ApiId[ApiId[\"ssoSilent\"] = 863] = \"ssoSilent\";\r\n ApiId[ApiId[\"acquireTokenSilent_authCode\"] = 864] = \"acquireTokenSilent_authCode\";\r\n ApiId[ApiId[\"handleRedirectPromise\"] = 865] = \"handleRedirectPromise\";\r\n ApiId[ApiId[\"acquireTokenByCode\"] = 866] = \"acquireTokenByCode\";\r\n ApiId[ApiId[\"acquireTokenSilent_silentFlow\"] = 61] = \"acquireTokenSilent_silentFlow\";\r\n ApiId[ApiId[\"logout\"] = 961] = \"logout\";\r\n ApiId[ApiId[\"logoutPopup\"] = 962] = \"logoutPopup\";\r\n})(ApiId || (ApiId = {}));\r\n/*\r\n * Interaction type of the API - used for state and telemetry\r\n */\r\nvar InteractionType;\r\n(function (InteractionType) {\r\n InteractionType[\"Redirect\"] = \"redirect\";\r\n InteractionType[\"Popup\"] = \"popup\";\r\n InteractionType[\"Silent\"] = \"silent\";\r\n InteractionType[\"None\"] = \"none\";\r\n})(InteractionType || (InteractionType = {}));\r\n/**\r\n * Types of interaction currently in progress.\r\n * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete.\r\n */\r\nvar InteractionStatus;\r\n(function (InteractionStatus) {\r\n /**\r\n * Initial status before interaction occurs\r\n */\r\n InteractionStatus[\"Startup\"] = \"startup\";\r\n /**\r\n * Status set when all login calls occuring\r\n */\r\n InteractionStatus[\"Login\"] = \"login\";\r\n /**\r\n * Status set when logout call occuring\r\n */\r\n InteractionStatus[\"Logout\"] = \"logout\";\r\n /**\r\n * Status set for acquireToken calls\r\n */\r\n InteractionStatus[\"AcquireToken\"] = \"acquireToken\";\r\n /**\r\n * Status set for ssoSilent calls\r\n */\r\n InteractionStatus[\"SsoSilent\"] = \"ssoSilent\";\r\n /**\r\n * Status set when handleRedirect in progress\r\n */\r\n InteractionStatus[\"HandleRedirect\"] = \"handleRedirect\";\r\n /**\r\n * Status set when interaction is complete\r\n */\r\n InteractionStatus[\"None\"] = \"none\";\r\n})(InteractionStatus || (InteractionStatus = {}));\r\nvar DEFAULT_REQUEST = {\r\n scopes: OIDC_DEFAULT_SCOPES\r\n};\r\n/**\r\n * JWK Key Format string (Type MUST be defined for window crypto APIs)\r\n */\r\nvar KEY_FORMAT_JWK = \"jwk\";\r\n// Supported wrapper SKUs\r\nvar WrapperSKU;\r\n(function (WrapperSKU) {\r\n WrapperSKU[\"React\"] = \"@azure/msal-react\";\r\n WrapperSKU[\"Angular\"] = \"@azure/msal-angular\";\r\n})(WrapperSKU || (WrapperSKU = {}));\r\n// DatabaseStorage Constants\r\nvar DB_NAME = \"msal.db\";\r\nvar DB_VERSION = 1;\r\nvar DB_TABLE_NAME = DB_NAME + \".keys\";\n\nexport { ApiId, BrowserCacheLocation, BrowserConstants, DB_NAME, DB_TABLE_NAME, DB_VERSION, DEFAULT_REQUEST, HTTP_REQUEST_TYPE, InMemoryCacheKeys, InteractionStatus, InteractionType, KEY_FORMAT_JWK, NativeConstants, NativeExtensionMethod, TemporaryCacheKeys, WrapperSKU };\n//# sourceMappingURL=BrowserConstants.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { PerformanceEvents } from '@azure/msal-common';\nimport { GuidGenerator } from './GuidGenerator.js';\nimport { Base64Encode } from '../encode/Base64Encode.js';\nimport { Base64Decode } from '../encode/Base64Decode.js';\nimport { PkceGenerator } from './PkceGenerator.js';\nimport { BrowserCrypto } from './BrowserCrypto.js';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\nimport { KEY_FORMAT_JWK } from '../utils/BrowserConstants.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { AsyncMemoryStorage } from '../cache/AsyncMemoryStorage.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar CryptoKeyStoreNames;\r\n(function (CryptoKeyStoreNames) {\r\n CryptoKeyStoreNames[\"asymmetricKeys\"] = \"asymmetricKeys\";\r\n CryptoKeyStoreNames[\"symmetricKeys\"] = \"symmetricKeys\";\r\n})(CryptoKeyStoreNames || (CryptoKeyStoreNames = {}));\r\n/**\r\n * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and\r\n * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).\r\n */\r\nvar CryptoOps = /** @class */ (function () {\r\n function CryptoOps(logger, performanceClient) {\r\n this.logger = logger;\r\n // Browser crypto needs to be validated first before any other classes can be set.\r\n this.browserCrypto = new BrowserCrypto(this.logger);\r\n this.b64Encode = new Base64Encode();\r\n this.b64Decode = new Base64Decode();\r\n this.guidGenerator = new GuidGenerator(this.browserCrypto);\r\n this.pkceGenerator = new PkceGenerator(this.browserCrypto);\r\n this.cache = {\r\n asymmetricKeys: new AsyncMemoryStorage(this.logger, CryptoKeyStoreNames.asymmetricKeys),\r\n symmetricKeys: new AsyncMemoryStorage(this.logger, CryptoKeyStoreNames.symmetricKeys)\r\n };\r\n this.performanceClient = performanceClient;\r\n }\r\n /**\r\n * Creates a new random GUID - used to populate state and nonce.\r\n * @returns string (GUID)\r\n */\r\n CryptoOps.prototype.createNewGuid = function () {\r\n return this.guidGenerator.generateGuid();\r\n };\r\n /**\r\n * Encodes input string to base64.\r\n * @param input\r\n */\r\n CryptoOps.prototype.base64Encode = function (input) {\r\n return this.b64Encode.encode(input);\r\n };\r\n /**\r\n * Decodes input string from base64.\r\n * @param input\r\n */\r\n CryptoOps.prototype.base64Decode = function (input) {\r\n return this.b64Decode.decode(input);\r\n };\r\n /**\r\n * Generates PKCE codes used in Authorization Code Flow.\r\n */\r\n CryptoOps.prototype.generatePkceCodes = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.pkceGenerator.generateCodes()];\r\n });\r\n });\r\n };\r\n /**\r\n * Generates a keypair, stores it and returns a thumbprint\r\n * @param request\r\n */\r\n CryptoOps.prototype.getPublicKeyThumbprint = function (request) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var publicKeyThumbMeasurement, keyPair, publicKeyJwk, pubKeyThumprintObj, publicJwkString, publicJwkHash, privateKeyJwk, unextractablePrivateKey;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n publicKeyThumbMeasurement = (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.startMeasurement(PerformanceEvents.CryptoOptsGetPublicKeyThumbprint, request.correlationId);\r\n return [4 /*yield*/, this.browserCrypto.generateKeyPair(CryptoOps.EXTRACTABLE, CryptoOps.POP_KEY_USAGES)];\r\n case 1:\r\n keyPair = _b.sent();\r\n return [4 /*yield*/, this.browserCrypto.exportJwk(keyPair.publicKey)];\r\n case 2:\r\n publicKeyJwk = _b.sent();\r\n pubKeyThumprintObj = {\r\n e: publicKeyJwk.e,\r\n kty: publicKeyJwk.kty,\r\n n: publicKeyJwk.n\r\n };\r\n publicJwkString = BrowserCrypto.getJwkString(pubKeyThumprintObj);\r\n return [4 /*yield*/, this.hashString(publicJwkString)];\r\n case 3:\r\n publicJwkHash = _b.sent();\r\n return [4 /*yield*/, this.browserCrypto.exportJwk(keyPair.privateKey)];\r\n case 4:\r\n privateKeyJwk = _b.sent();\r\n return [4 /*yield*/, this.browserCrypto.importJwk(privateKeyJwk, false, [\"sign\"])];\r\n case 5:\r\n unextractablePrivateKey = _b.sent();\r\n // Store Keypair data in keystore\r\n return [4 /*yield*/, this.cache.asymmetricKeys.setItem(publicJwkHash, {\r\n privateKey: unextractablePrivateKey,\r\n publicKey: keyPair.publicKey,\r\n requestMethod: request.resourceRequestMethod,\r\n requestUri: request.resourceRequestUri\r\n })];\r\n case 6:\r\n // Store Keypair data in keystore\r\n _b.sent();\r\n if (publicKeyThumbMeasurement) {\r\n publicKeyThumbMeasurement.endMeasurement({\r\n success: true\r\n });\r\n }\r\n return [2 /*return*/, publicJwkHash];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes cryptographic keypair from key store matching the keyId passed in\r\n * @param kid\r\n */\r\n CryptoOps.prototype.removeTokenBindingKey = function (kid) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var keyFound;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.cache.asymmetricKeys.removeItem(kid)];\r\n case 1:\r\n _a.sent();\r\n return [4 /*yield*/, this.cache.asymmetricKeys.containsKey(kid)];\r\n case 2:\r\n keyFound = _a.sent();\r\n return [2 /*return*/, !keyFound];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes all cryptographic keys from IndexedDB storage\r\n */\r\n CryptoOps.prototype.clearKeystore = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 3, , 4]);\r\n this.logger.verbose(\"Deleting in-memory and persistent asymmetric key stores\");\r\n return [4 /*yield*/, this.cache.asymmetricKeys.clear()];\r\n case 1:\r\n _a.sent();\r\n this.logger.verbose(\"Successfully deleted asymmetric key stores\");\r\n this.logger.verbose(\"Deleting in-memory and persistent symmetric key stores\");\r\n return [4 /*yield*/, this.cache.symmetricKeys.clear()];\r\n case 2:\r\n _a.sent();\r\n this.logger.verbose(\"Successfully deleted symmetric key stores\");\r\n return [2 /*return*/, true];\r\n case 3:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof Error) {\r\n this.logger.error(\"Clearing keystore failed with error: \" + e_1.message);\r\n }\r\n else {\r\n this.logger.error(\"Clearing keystore failed with unknown error\");\r\n }\r\n return [2 /*return*/, false];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Signs the given object as a jwt payload with private key retrieved by given kid.\r\n * @param payload\r\n * @param kid\r\n */\r\n CryptoOps.prototype.signJwt = function (payload, kid, correlationId) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var signJwtMeasurement, cachedKeyPair, publicKeyJwk, publicKeyJwkString, header, encodedHeader, encodedPayload, tokenString, tokenBuffer, signatureBuffer, encodedSignature, signedJwt;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n signJwtMeasurement = (_a = this.performanceClient) === null || _a === void 0 ? void 0 : _a.startMeasurement(PerformanceEvents.CryptoOptsSignJwt, correlationId);\r\n return [4 /*yield*/, this.cache.asymmetricKeys.getItem(kid)];\r\n case 1:\r\n cachedKeyPair = _b.sent();\r\n if (!cachedKeyPair) {\r\n throw BrowserAuthError.createSigningKeyNotFoundInStorageError(kid);\r\n }\r\n return [4 /*yield*/, this.browserCrypto.exportJwk(cachedKeyPair.publicKey)];\r\n case 2:\r\n publicKeyJwk = _b.sent();\r\n publicKeyJwkString = BrowserCrypto.getJwkString(publicKeyJwk);\r\n header = {\r\n alg: publicKeyJwk.alg,\r\n type: KEY_FORMAT_JWK\r\n };\r\n encodedHeader = this.b64Encode.urlEncode(JSON.stringify(header));\r\n // Generate payload\r\n payload.cnf = {\r\n jwk: JSON.parse(publicKeyJwkString)\r\n };\r\n encodedPayload = this.b64Encode.urlEncode(JSON.stringify(payload));\r\n tokenString = encodedHeader + \".\" + encodedPayload;\r\n tokenBuffer = BrowserStringUtils.stringToArrayBuffer(tokenString);\r\n return [4 /*yield*/, this.browserCrypto.sign(cachedKeyPair.privateKey, tokenBuffer)];\r\n case 3:\r\n signatureBuffer = _b.sent();\r\n encodedSignature = this.b64Encode.urlEncodeArr(new Uint8Array(signatureBuffer));\r\n signedJwt = tokenString + \".\" + encodedSignature;\r\n if (signJwtMeasurement) {\r\n signJwtMeasurement.endMeasurement({\r\n success: true\r\n });\r\n }\r\n return [2 /*return*/, signedJwt];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns the SHA-256 hash of an input string\r\n * @param plainText\r\n */\r\n CryptoOps.prototype.hashString = function (plainText) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var hashBuffer, hashBytes;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.browserCrypto.sha256Digest(plainText)];\r\n case 1:\r\n hashBuffer = _a.sent();\r\n hashBytes = new Uint8Array(hashBuffer);\r\n return [2 /*return*/, this.b64Encode.urlEncodeArr(hashBytes)];\r\n }\r\n });\r\n });\r\n };\r\n CryptoOps.POP_KEY_USAGES = [\"sign\", \"verify\"];\r\n CryptoOps.EXTRACTABLE = true;\r\n return CryptoOps;\r\n}());\n\nexport { CryptoKeyStoreNames, CryptoOps };\n//# sourceMappingURL=CryptoOps.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility class for math specific functions in browser.\r\n */\r\nvar MathUtils = /** @class */ (function () {\r\n function MathUtils() {\r\n }\r\n /**\r\n * Decimal to Hex\r\n *\r\n * @param num\r\n */\r\n MathUtils.decimalToHex = function (num) {\r\n var hex = num.toString(16);\r\n while (hex.length < 2) {\r\n hex = \"0\" + hex;\r\n }\r\n return hex;\r\n };\r\n return MathUtils;\r\n}());\n\nexport { MathUtils };\n//# sourceMappingURL=MathUtils.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { Constants } from '@azure/msal-common';\nimport { MathUtils } from '../utils/MathUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar GuidGenerator = /** @class */ (function () {\r\n function GuidGenerator(cryptoObj) {\r\n this.cryptoObj = cryptoObj;\r\n }\r\n /*\r\n * RFC4122: The version 4 UUID is meant for generating UUIDs from truly-random or\r\n * pseudo-random numbers.\r\n * The algorithm is as follows:\r\n * Set the two most significant bits (bits 6 and 7) of the\r\n * clock_seq_hi_and_reserved to zero and one, respectively.\r\n * Set the four most significant bits (bits 12 through 15) of the\r\n * time_hi_and_version field to the 4-bit version number from\r\n * Section 4.1.3. Version4\r\n * Set all the other bits to randomly (or pseudo-randomly) chosen\r\n * values.\r\n * UUID = time-low \"-\" time-mid \"-\"time-high-and-version \"-\"clock-seq-reserved and low(2hexOctet)\"-\" node\r\n * time-low = 4hexOctet\r\n * time-mid = 2hexOctet\r\n * time-high-and-version = 2hexOctet\r\n * clock-seq-and-reserved = hexOctet:\r\n * clock-seq-low = hexOctet\r\n * node = 6hexOctet\r\n * Format: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\r\n * y could be 1000, 1001, 1010, 1011 since most significant two bits needs to be 10\r\n * y values are 8, 9, A, B\r\n */\r\n GuidGenerator.prototype.generateGuid = function () {\r\n try {\r\n var buffer = new Uint8Array(16);\r\n this.cryptoObj.getRandomValues(buffer);\r\n // buffer[6] and buffer[7] represents the time_hi_and_version field. We will set the four most significant bits (4 through 7) of buffer[6] to represent decimal number 4 (UUID version number).\r\n buffer[6] |= 0x40; // buffer[6] | 01000000 will set the 6 bit to 1.\r\n buffer[6] &= 0x4f; // buffer[6] & 01001111 will set the 4, 5, and 7 bit to 0 such that bits 4-7 == 0100 = \"4\".\r\n // buffer[8] represents the clock_seq_hi_and_reserved field. We will set the two most significant bits (6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively.\r\n buffer[8] |= 0x80; // buffer[8] | 10000000 will set the 7 bit to 1.\r\n buffer[8] &= 0xbf; // buffer[8] & 10111111 will set the 6 bit to 0.\r\n return MathUtils.decimalToHex(buffer[0]) + MathUtils.decimalToHex(buffer[1])\r\n + MathUtils.decimalToHex(buffer[2]) + MathUtils.decimalToHex(buffer[3])\r\n + \"-\" + MathUtils.decimalToHex(buffer[4]) + MathUtils.decimalToHex(buffer[5])\r\n + \"-\" + MathUtils.decimalToHex(buffer[6]) + MathUtils.decimalToHex(buffer[7])\r\n + \"-\" + MathUtils.decimalToHex(buffer[8]) + MathUtils.decimalToHex(buffer[9])\r\n + \"-\" + MathUtils.decimalToHex(buffer[10]) + MathUtils.decimalToHex(buffer[11])\r\n + MathUtils.decimalToHex(buffer[12]) + MathUtils.decimalToHex(buffer[13])\r\n + MathUtils.decimalToHex(buffer[14]) + MathUtils.decimalToHex(buffer[15]);\r\n }\r\n catch (err) {\r\n var guidHolder = \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\";\r\n var hex = \"0123456789abcdef\";\r\n var r = 0;\r\n var guidResponse = Constants.EMPTY_STRING;\r\n for (var i = 0; i < 36; i++) {\r\n if (guidHolder[i] !== \"-\" && guidHolder[i] !== \"4\") {\r\n // each x and y needs to be random\r\n r = Math.random() * 16 | 0;\r\n }\r\n if (guidHolder[i] === \"x\") {\r\n guidResponse += hex[r];\r\n }\r\n else if (guidHolder[i] === \"y\") {\r\n // clock-seq-and-reserved first hex is filtered and remaining hex values are random\r\n r &= 0x3; // bit and with 0011 to set pos 2 to zero ?0??\r\n r |= 0x8; // set pos 3 to 1 as 1???\r\n guidResponse += hex[r];\r\n }\r\n else {\r\n guidResponse += guidHolder[i];\r\n }\r\n }\r\n return guidResponse;\r\n }\r\n };\r\n /**\r\n * verifies if a string is GUID\r\n * @param guid\r\n */\r\n GuidGenerator.prototype.isGuid = function (guid) {\r\n var regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\r\n return regexGuid.test(guid);\r\n };\r\n return GuidGenerator;\r\n}());\n\nexport { GuidGenerator };\n//# sourceMappingURL=GuidGenerator.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { Constants } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility functions for strings in a browser. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nvar BrowserStringUtils = /** @class */ (function () {\r\n function BrowserStringUtils() {\r\n }\r\n /**\r\n * Converts string to Uint8Array\r\n * @param sDOMStr\r\n */\r\n BrowserStringUtils.stringToUtf8Arr = function (sDOMStr) {\r\n var nChr;\r\n var nArrLen = 0;\r\n var nStrLen = sDOMStr.length;\r\n /* mapping... */\r\n for (var nMapIdx = 0; nMapIdx < nStrLen; nMapIdx++) {\r\n nChr = sDOMStr.charCodeAt(nMapIdx);\r\n nArrLen += nChr < 0x80 ? 1 : nChr < 0x800 ? 2 : nChr < 0x10000 ? 3 : nChr < 0x200000 ? 4 : nChr < 0x4000000 ? 5 : 6;\r\n }\r\n var aBytes = new Uint8Array(nArrLen);\r\n /* transcription... */\r\n for (var nIdx = 0, nChrIdx = 0; nIdx < nArrLen; nChrIdx++) {\r\n nChr = sDOMStr.charCodeAt(nChrIdx);\r\n if (nChr < 128) {\r\n /* one byte */\r\n aBytes[nIdx++] = nChr;\r\n }\r\n else if (nChr < 0x800) {\r\n /* two bytes */\r\n aBytes[nIdx++] = 192 + (nChr >>> 6);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n else if (nChr < 0x10000) {\r\n /* three bytes */\r\n aBytes[nIdx++] = 224 + (nChr >>> 12);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n else if (nChr < 0x200000) {\r\n /* four bytes */\r\n aBytes[nIdx++] = 240 + (nChr >>> 18);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n else if (nChr < 0x4000000) {\r\n /* five bytes */\r\n aBytes[nIdx++] = 248 + (nChr >>> 24);\r\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n else /* if (nChr <= 0x7fffffff) */ {\r\n /* six bytes */\r\n aBytes[nIdx++] = 252 + (nChr >>> 30);\r\n aBytes[nIdx++] = 128 + (nChr >>> 24 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\r\n aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\r\n aBytes[nIdx++] = 128 + (nChr & 63);\r\n }\r\n }\r\n return aBytes;\r\n };\r\n /**\r\n * Converst string to ArrayBuffer\r\n * @param dataString\r\n */\r\n BrowserStringUtils.stringToArrayBuffer = function (dataString) {\r\n var data = new ArrayBuffer(dataString.length);\r\n var dataView = new Uint8Array(data);\r\n for (var i = 0; i < dataString.length; i++) {\r\n dataView[i] = dataString.charCodeAt(i);\r\n }\r\n return data;\r\n };\r\n /**\r\n * Converts Uint8Array to a string\r\n * @param aBytes\r\n */\r\n BrowserStringUtils.utf8ArrToString = function (aBytes) {\r\n var sView = Constants.EMPTY_STRING;\r\n for (var nPart = void 0, nLen = aBytes.length, nIdx = 0; nIdx < nLen; nIdx++) {\r\n nPart = aBytes[nIdx];\r\n sView += String.fromCharCode(nPart > 251 && nPart < 254 && nIdx + 5 < nLen ? /* six bytes */\r\n /* (nPart - 252 << 30) may be not so safe in ECMAScript! So...: */\r\n (nPart - 252) * 1073741824 + (aBytes[++nIdx] - 128 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 247 && nPart < 252 && nIdx + 4 < nLen ? /* five bytes */\r\n (nPart - 248 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 239 && nPart < 248 && nIdx + 3 < nLen ? /* four bytes */\r\n (nPart - 240 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 223 && nPart < 240 && nIdx + 2 < nLen ? /* three bytes */\r\n (nPart - 224 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\r\n : nPart > 191 && nPart < 224 && nIdx + 1 < nLen ? /* two bytes */\r\n (nPart - 192 << 6) + aBytes[++nIdx] - 128\r\n : /* nPart < 127 ? */ /* one byte */\r\n nPart);\r\n }\r\n return sView;\r\n };\r\n return BrowserStringUtils;\r\n}());\n\nexport { BrowserStringUtils };\n//# sourceMappingURL=BrowserStringUtils.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { Constants } from '@azure/msal-common';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nvar Base64Encode = /** @class */ (function () {\r\n function Base64Encode() {\r\n }\r\n /**\r\n * Returns URL Safe b64 encoded string from a plaintext string.\r\n * @param input\r\n */\r\n Base64Encode.prototype.urlEncode = function (input) {\r\n return encodeURIComponent(this.encode(input)\r\n .replace(/=/g, Constants.EMPTY_STRING)\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\"));\r\n };\r\n /**\r\n * Returns URL Safe b64 encoded string from an int8Array.\r\n * @param inputArr\r\n */\r\n Base64Encode.prototype.urlEncodeArr = function (inputArr) {\r\n return this.base64EncArr(inputArr)\r\n .replace(/=/g, Constants.EMPTY_STRING)\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\");\r\n };\r\n /**\r\n * Returns b64 encoded string from plaintext string.\r\n * @param input\r\n */\r\n Base64Encode.prototype.encode = function (input) {\r\n var inputUtf8Arr = BrowserStringUtils.stringToUtf8Arr(input);\r\n return this.base64EncArr(inputUtf8Arr);\r\n };\r\n /**\r\n * Base64 encode byte array\r\n * @param aBytes\r\n */\r\n Base64Encode.prototype.base64EncArr = function (aBytes) {\r\n var eqLen = (3 - (aBytes.length % 3)) % 3;\r\n var sB64Enc = Constants.EMPTY_STRING;\r\n for (var nMod3 = void 0, nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {\r\n nMod3 = nIdx % 3;\r\n /* Uncomment the following line in order to split the output in lines 76-character long: */\r\n /*\r\n *if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) { sB64Enc += \"\\r\\n\"; }\r\n */\r\n nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);\r\n if (nMod3 === 2 || aBytes.length - nIdx === 1) {\r\n sB64Enc += String.fromCharCode(this.uint6ToB64(nUint24 >>> 18 & 63), this.uint6ToB64(nUint24 >>> 12 & 63), this.uint6ToB64(nUint24 >>> 6 & 63), this.uint6ToB64(nUint24 & 63));\r\n nUint24 = 0;\r\n }\r\n }\r\n return eqLen === 0 ? sB64Enc : sB64Enc.substring(0, sB64Enc.length - eqLen) + (eqLen === 1 ? \"=\" : \"==\");\r\n };\r\n /**\r\n * Base64 string to array encoding helper\r\n * @param nUint6\r\n */\r\n Base64Encode.prototype.uint6ToB64 = function (nUint6) {\r\n return nUint6 < 26 ?\r\n nUint6 + 65\r\n : nUint6 < 52 ?\r\n nUint6 + 71\r\n : nUint6 < 62 ?\r\n nUint6 - 4\r\n : nUint6 === 62 ?\r\n 43\r\n : nUint6 === 63 ?\r\n 47\r\n :\r\n 65;\r\n };\r\n return Base64Encode;\r\n}());\n\nexport { Base64Encode };\n//# sourceMappingURL=Base64Encode.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { Constants } from '@azure/msal-common';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details:\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\r\n */\r\nvar Base64Decode = /** @class */ (function () {\r\n function Base64Decode() {\r\n }\r\n /**\r\n * Returns a URL-safe plaintext decoded string from b64 encoded input.\r\n * @param input\r\n */\r\n Base64Decode.prototype.decode = function (input) {\r\n var encodedString = input.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n switch (encodedString.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n encodedString += \"==\";\r\n break;\r\n case 3:\r\n encodedString += \"=\";\r\n break;\r\n default:\r\n throw new Error(\"Invalid base64 string\");\r\n }\r\n var inputUtf8Arr = this.base64DecToArr(encodedString);\r\n return BrowserStringUtils.utf8ArrToString(inputUtf8Arr);\r\n };\r\n /**\r\n * Decodes base64 into Uint8Array\r\n * @param base64String\r\n * @param nBlockSize\r\n */\r\n Base64Decode.prototype.base64DecToArr = function (base64String, nBlockSize) {\r\n var sB64Enc = base64String.replace(/[^A-Za-z0-9\\+\\/]/g, Constants.EMPTY_STRING);\r\n var nInLen = sB64Enc.length;\r\n var nOutLen = nBlockSize ? Math.ceil((nInLen * 3 + 1 >>> 2) / nBlockSize) * nBlockSize : nInLen * 3 + 1 >>> 2;\r\n var aBytes = new Uint8Array(nOutLen);\r\n for (var nMod3 = void 0, nMod4 = void 0, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {\r\n nMod4 = nInIdx & 3;\r\n nUint24 |= this.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;\r\n if (nMod4 === 3 || nInLen - nInIdx === 1) {\r\n for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {\r\n aBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;\r\n }\r\n nUint24 = 0;\r\n }\r\n }\r\n return aBytes;\r\n };\r\n /**\r\n * Base64 string to array decoding helper\r\n * @param charNum\r\n */\r\n Base64Decode.prototype.b64ToUint6 = function (charNum) {\r\n return charNum > 64 && charNum < 91 ?\r\n charNum - 65\r\n : charNum > 96 && charNum < 123 ?\r\n charNum - 71\r\n : charNum > 47 && charNum < 58 ?\r\n charNum + 4\r\n : charNum === 43 ?\r\n 62\r\n : charNum === 47 ?\r\n 63\r\n :\r\n 0;\r\n };\r\n return Base64Decode;\r\n}());\n\nexport { Base64Decode };\n//# sourceMappingURL=Base64Decode.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * AuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar AuthErrorMessage = {\r\n unexpectedError: {\r\n code: \"unexpected_error\",\r\n desc: \"Unexpected error in authentication.\"\r\n }\r\n};\r\n/**\r\n * General error class thrown by the MSAL.js library.\r\n */\r\nvar AuthError = /** @class */ (function (_super) {\r\n __extends(AuthError, _super);\r\n function AuthError(errorCode, errorMessage, suberror) {\r\n var _this = this;\r\n var errorString = errorMessage ? errorCode + \": \" + errorMessage : errorCode;\r\n _this = _super.call(this, errorString) || this;\r\n Object.setPrototypeOf(_this, AuthError.prototype);\r\n _this.errorCode = errorCode || Constants.EMPTY_STRING;\r\n _this.errorMessage = errorMessage || Constants.EMPTY_STRING;\r\n _this.subError = suberror || Constants.EMPTY_STRING;\r\n _this.name = \"AuthError\";\r\n return _this;\r\n }\r\n AuthError.prototype.setCorrelationId = function (correlationId) {\r\n this.correlationId = correlationId;\r\n };\r\n /**\r\n * Creates an error that is thrown when something unexpected happens in the library.\r\n * @param errDesc\r\n */\r\n AuthError.createUnexpectedError = function (errDesc) {\r\n return new AuthError(AuthErrorMessage.unexpectedError.code, AuthErrorMessage.unexpectedError.desc + \": \" + errDesc);\r\n };\r\n return AuthError;\r\n}(Error));\n\nexport { AuthError, AuthErrorMessage };\n//# sourceMappingURL=AuthError.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthError } from './AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar ClientAuthErrorMessage = {\r\n clientInfoDecodingError: {\r\n code: \"client_info_decoding_error\",\r\n desc: \"The client info could not be parsed/decoded correctly. Please review the trace to determine the root cause.\"\r\n },\r\n clientInfoEmptyError: {\r\n code: \"client_info_empty_error\",\r\n desc: \"The client info was empty. Please review the trace to determine the root cause.\"\r\n },\r\n tokenParsingError: {\r\n code: \"token_parsing_error\",\r\n desc: \"Token cannot be parsed. Please review stack trace to determine root cause.\"\r\n },\r\n nullOrEmptyToken: {\r\n code: \"null_or_empty_token\",\r\n desc: \"The token is null or empty. Please review the trace to determine the root cause.\"\r\n },\r\n endpointResolutionError: {\r\n code: \"endpoints_resolution_error\",\r\n desc: \"Error: could not resolve endpoints. Please check network and try again.\"\r\n },\r\n networkError: {\r\n code: \"network_error\",\r\n desc: \"Network request failed. Please check network trace to determine root cause.\"\r\n },\r\n unableToGetOpenidConfigError: {\r\n code: \"openid_config_error\",\r\n desc: \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\"\r\n },\r\n hashNotDeserialized: {\r\n code: \"hash_not_deserialized\",\r\n desc: \"The hash parameters could not be deserialized. Please review the trace to determine the root cause.\"\r\n },\r\n blankGuidGenerated: {\r\n code: \"blank_guid_generated\",\r\n desc: \"The guid generated was blank. Please review the trace to determine the root cause.\"\r\n },\r\n invalidStateError: {\r\n code: \"invalid_state\",\r\n desc: \"State was not the expected format. Please check the logs to determine whether the request was sent using ProtocolUtils.setRequestState().\"\r\n },\r\n stateMismatchError: {\r\n code: \"state_mismatch\",\r\n desc: \"State mismatch error. Please check your network. Continued requests may cause cache overflow.\"\r\n },\r\n stateNotFoundError: {\r\n code: \"state_not_found\",\r\n desc: \"State not found\"\r\n },\r\n nonceMismatchError: {\r\n code: \"nonce_mismatch\",\r\n desc: \"Nonce mismatch error. This may be caused by a race condition in concurrent requests.\"\r\n },\r\n nonceNotFoundError: {\r\n code: \"nonce_not_found\",\r\n desc: \"nonce not found\"\r\n },\r\n noTokensFoundError: {\r\n code: \"no_tokens_found\",\r\n desc: \"No tokens were found for the given scopes, and no authorization code was passed to acquireToken. You must retrieve an authorization code before making a call to acquireToken().\"\r\n },\r\n multipleMatchingTokens: {\r\n code: \"multiple_matching_tokens\",\r\n desc: \"The cache contains multiple tokens satisfying the requirements. \" +\r\n \"Call AcquireToken again providing more requirements such as authority or account.\"\r\n },\r\n multipleMatchingAccounts: {\r\n code: \"multiple_matching_accounts\",\r\n desc: \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\"\r\n },\r\n multipleMatchingAppMetadata: {\r\n code: \"multiple_matching_appMetadata\",\r\n desc: \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\"\r\n },\r\n tokenRequestCannotBeMade: {\r\n code: \"request_cannot_be_made\",\r\n desc: \"Token request cannot be made without authorization code or refresh token.\"\r\n },\r\n appendEmptyScopeError: {\r\n code: \"cannot_append_empty_scope\",\r\n desc: \"Cannot append null or empty scope to ScopeSet. Please check the stack trace for more info.\"\r\n },\r\n removeEmptyScopeError: {\r\n code: \"cannot_remove_empty_scope\",\r\n desc: \"Cannot remove null or empty scope from ScopeSet. Please check the stack trace for more info.\"\r\n },\r\n appendScopeSetError: {\r\n code: \"cannot_append_scopeset\",\r\n desc: \"Cannot append ScopeSet due to error.\"\r\n },\r\n emptyInputScopeSetError: {\r\n code: \"empty_input_scopeset\",\r\n desc: \"Empty input ScopeSet cannot be processed.\"\r\n },\r\n DeviceCodePollingCancelled: {\r\n code: \"device_code_polling_cancelled\",\r\n desc: \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\"\r\n },\r\n DeviceCodeExpired: {\r\n code: \"device_code_expired\",\r\n desc: \"Device code is expired.\"\r\n },\r\n DeviceCodeUnknownError: {\r\n code: \"device_code_unknown_error\",\r\n desc: \"Device code stopped polling for unknown reasons.\"\r\n },\r\n NoAccountInSilentRequest: {\r\n code: \"no_account_in_silent_request\",\r\n desc: \"Please pass an account object, silent flow is not supported without account information\"\r\n },\r\n invalidCacheRecord: {\r\n code: \"invalid_cache_record\",\r\n desc: \"Cache record object was null or undefined.\"\r\n },\r\n invalidCacheEnvironment: {\r\n code: \"invalid_cache_environment\",\r\n desc: \"Invalid environment when attempting to create cache entry\"\r\n },\r\n noAccountFound: {\r\n code: \"no_account_found\",\r\n desc: \"No account found in cache for given key.\"\r\n },\r\n CachePluginError: {\r\n code: \"no cache plugin set on CacheManager\",\r\n desc: \"ICachePlugin needs to be set before using readFromStorage or writeFromStorage\"\r\n },\r\n noCryptoObj: {\r\n code: \"no_crypto_object\",\r\n desc: \"No crypto object detected. This is required for the following operation: \"\r\n },\r\n invalidCacheType: {\r\n code: \"invalid_cache_type\",\r\n desc: \"Invalid cache type\"\r\n },\r\n unexpectedAccountType: {\r\n code: \"unexpected_account_type\",\r\n desc: \"Unexpected account type.\"\r\n },\r\n unexpectedCredentialType: {\r\n code: \"unexpected_credential_type\",\r\n desc: \"Unexpected credential type.\"\r\n },\r\n invalidAssertion: {\r\n code: \"invalid_assertion\",\r\n desc: \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\"\r\n },\r\n invalidClientCredential: {\r\n code: \"invalid_client_credential\",\r\n desc: \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\"\r\n },\r\n tokenRefreshRequired: {\r\n code: \"token_refresh_required\",\r\n desc: \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\"\r\n },\r\n userTimeoutReached: {\r\n code: \"user_timeout_reached\",\r\n desc: \"User defined timeout for device code polling reached\",\r\n },\r\n tokenClaimsRequired: {\r\n code: \"token_claims_cnf_required_for_signedjwt\",\r\n desc: \"Cannot generate a POP jwt if the token_claims are not populated\"\r\n },\r\n noAuthorizationCodeFromServer: {\r\n code: \"authorization_code_missing_from_server_response\",\r\n desc: \"Server response does not contain an authorization code to proceed\"\r\n },\r\n noAzureRegionDetected: {\r\n code: \"no_azure_region_detected\",\r\n desc: \"No azure region was detected and no fallback was made available\"\r\n },\r\n accessTokenEntityNullError: {\r\n code: \"access_token_entity_null\",\r\n desc: \"Access token entity is null, please check logs and cache to ensure a valid access token is present.\"\r\n },\r\n bindingKeyNotRemovedError: {\r\n code: \"binding_key_not_removed\",\r\n desc: \"Could not remove the credential's binding key from storage.\"\r\n },\r\n logoutNotSupported: {\r\n code: \"end_session_endpoint_not_supported\",\r\n desc: \"Provided authority does not support logout.\"\r\n }\r\n};\r\n/**\r\n * Error thrown when there is an error in the client code running on the browser.\r\n */\r\nvar ClientAuthError = /** @class */ (function (_super) {\r\n __extends(ClientAuthError, _super);\r\n function ClientAuthError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"ClientAuthError\";\r\n Object.setPrototypeOf(_this, ClientAuthError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when client info object doesn't decode correctly.\r\n * @param caughtError\r\n */\r\n ClientAuthError.createClientInfoDecodingError = function (caughtError) {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoDecodingError.code, ClientAuthErrorMessage.clientInfoDecodingError.desc + \" Failed with error: \" + caughtError);\r\n };\r\n /**\r\n * Creates an error thrown if the client info is empty.\r\n * @param rawClientInfo\r\n */\r\n ClientAuthError.createClientInfoEmptyError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.clientInfoEmptyError.code, \"\" + ClientAuthErrorMessage.clientInfoEmptyError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the id token extraction errors out.\r\n * @param err\r\n */\r\n ClientAuthError.createTokenParsingError = function (caughtExtractionError) {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenParsingError.code, ClientAuthErrorMessage.tokenParsingError.desc + \" Failed with error: \" + caughtExtractionError);\r\n };\r\n /**\r\n * Creates an error thrown when the id token string is null or empty.\r\n * @param invalidRawTokenString\r\n */\r\n ClientAuthError.createTokenNullOrEmptyError = function (invalidRawTokenString) {\r\n return new ClientAuthError(ClientAuthErrorMessage.nullOrEmptyToken.code, ClientAuthErrorMessage.nullOrEmptyToken.desc + \" Raw Token Value: \" + invalidRawTokenString);\r\n };\r\n /**\r\n * Creates an error thrown when the endpoint discovery doesn't complete correctly.\r\n */\r\n ClientAuthError.createEndpointDiscoveryIncompleteError = function (errDetail) {\r\n return new ClientAuthError(ClientAuthErrorMessage.endpointResolutionError.code, ClientAuthErrorMessage.endpointResolutionError.desc + \" Detail: \" + errDetail);\r\n };\r\n /**\r\n * Creates an error thrown when the fetch client throws\r\n */\r\n ClientAuthError.createNetworkError = function (endpoint, errDetail) {\r\n return new ClientAuthError(ClientAuthErrorMessage.networkError.code, ClientAuthErrorMessage.networkError.desc + \" | Fetch client threw: \" + errDetail + \" | Attempted to reach: \" + endpoint.split(\"?\")[0]);\r\n };\r\n /**\r\n * Creates an error thrown when the openid-configuration endpoint cannot be reached or does not contain the required data\r\n */\r\n ClientAuthError.createUnableToGetOpenidConfigError = function (errDetail) {\r\n return new ClientAuthError(ClientAuthErrorMessage.unableToGetOpenidConfigError.code, ClientAuthErrorMessage.unableToGetOpenidConfigError.desc + \" Attempted to retrieve endpoints from: \" + errDetail);\r\n };\r\n /**\r\n * Creates an error thrown when the hash cannot be deserialized.\r\n * @param hashParamObj\r\n */\r\n ClientAuthError.createHashNotDeserializedError = function (hashParamObj) {\r\n return new ClientAuthError(ClientAuthErrorMessage.hashNotDeserialized.code, ClientAuthErrorMessage.hashNotDeserialized.desc + \" Given Object: \" + hashParamObj);\r\n };\r\n /**\r\n * Creates an error thrown when the state cannot be parsed.\r\n * @param invalidState\r\n */\r\n ClientAuthError.createInvalidStateError = function (invalidState, errorString) {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidStateError.code, ClientAuthErrorMessage.invalidStateError.desc + \" Invalid State: \" + invalidState + \", Root Err: \" + errorString);\r\n };\r\n /**\r\n * Creates an error thrown when two states do not match.\r\n */\r\n ClientAuthError.createStateMismatchError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.stateMismatchError.code, ClientAuthErrorMessage.stateMismatchError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the state is not present\r\n * @param missingState\r\n */\r\n ClientAuthError.createStateNotFoundError = function (missingState) {\r\n return new ClientAuthError(ClientAuthErrorMessage.stateNotFoundError.code, ClientAuthErrorMessage.stateNotFoundError.desc + \": \" + missingState);\r\n };\r\n /**\r\n * Creates an error thrown when the nonce does not match.\r\n */\r\n ClientAuthError.createNonceMismatchError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.nonceMismatchError.code, ClientAuthErrorMessage.nonceMismatchError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the mnonce is not present\r\n * @param missingNonce\r\n */\r\n ClientAuthError.createNonceNotFoundError = function (missingNonce) {\r\n return new ClientAuthError(ClientAuthErrorMessage.nonceNotFoundError.code, ClientAuthErrorMessage.nonceNotFoundError.desc + \": \" + missingNonce);\r\n };\r\n /**\r\n * Throws error when multiple tokens are in cache.\r\n */\r\n ClientAuthError.createMultipleMatchingTokensInCacheError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingTokens.code, ClientAuthErrorMessage.multipleMatchingTokens.desc + \".\");\r\n };\r\n /**\r\n * Throws error when multiple accounts are in cache for the given params\r\n */\r\n ClientAuthError.createMultipleMatchingAccountsInCacheError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAccounts.code, ClientAuthErrorMessage.multipleMatchingAccounts.desc);\r\n };\r\n /**\r\n * Throws error when multiple appMetada are in cache for the given clientId.\r\n */\r\n ClientAuthError.createMultipleMatchingAppMetadataInCacheError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.multipleMatchingAppMetadata.code, ClientAuthErrorMessage.multipleMatchingAppMetadata.desc);\r\n };\r\n /**\r\n * Throws error when no auth code or refresh token is given to ServerTokenRequestParameters.\r\n */\r\n ClientAuthError.createTokenRequestCannotBeMadeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenRequestCannotBeMade.code, ClientAuthErrorMessage.tokenRequestCannotBeMade.desc);\r\n };\r\n /**\r\n * Throws error when attempting to append a null, undefined or empty scope to a set\r\n * @param givenScope\r\n */\r\n ClientAuthError.createAppendEmptyScopeToSetError = function (givenScope) {\r\n return new ClientAuthError(ClientAuthErrorMessage.appendEmptyScopeError.code, ClientAuthErrorMessage.appendEmptyScopeError.desc + \" Given Scope: \" + givenScope);\r\n };\r\n /**\r\n * Throws error when attempting to append a null, undefined or empty scope to a set\r\n * @param givenScope\r\n */\r\n ClientAuthError.createRemoveEmptyScopeFromSetError = function (givenScope) {\r\n return new ClientAuthError(ClientAuthErrorMessage.removeEmptyScopeError.code, ClientAuthErrorMessage.removeEmptyScopeError.desc + \" Given Scope: \" + givenScope);\r\n };\r\n /**\r\n * Throws error when attempting to append null or empty ScopeSet.\r\n * @param appendError\r\n */\r\n ClientAuthError.createAppendScopeSetError = function (appendError) {\r\n return new ClientAuthError(ClientAuthErrorMessage.appendScopeSetError.code, ClientAuthErrorMessage.appendScopeSetError.desc + \" Detail Error: \" + appendError);\r\n };\r\n /**\r\n * Throws error if ScopeSet is null or undefined.\r\n * @param givenScopeSet\r\n */\r\n ClientAuthError.createEmptyInputScopeSetError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.emptyInputScopeSetError.code, \"\" + ClientAuthErrorMessage.emptyInputScopeSetError.desc);\r\n };\r\n /**\r\n * Throws error if user sets CancellationToken.cancel = true during polling of token endpoint during device code flow\r\n */\r\n ClientAuthError.createDeviceCodeCancelledError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodePollingCancelled.code, \"\" + ClientAuthErrorMessage.DeviceCodePollingCancelled.desc);\r\n };\r\n /**\r\n * Throws error if device code is expired\r\n */\r\n ClientAuthError.createDeviceCodeExpiredError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeExpired.code, \"\" + ClientAuthErrorMessage.DeviceCodeExpired.desc);\r\n };\r\n /**\r\n * Throws error if device code is expired\r\n */\r\n ClientAuthError.createDeviceCodeUnknownError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.DeviceCodeUnknownError.code, \"\" + ClientAuthErrorMessage.DeviceCodeUnknownError.desc);\r\n };\r\n /**\r\n * Throws error when silent requests are made without an account object\r\n */\r\n ClientAuthError.createNoAccountInSilentRequestError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.NoAccountInSilentRequest.code, \"\" + ClientAuthErrorMessage.NoAccountInSilentRequest.desc);\r\n };\r\n /**\r\n * Throws error when cache record is null or undefined.\r\n */\r\n ClientAuthError.createNullOrUndefinedCacheRecord = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheRecord.code, ClientAuthErrorMessage.invalidCacheRecord.desc);\r\n };\r\n /**\r\n * Throws error when provided environment is not part of the CloudDiscoveryMetadata object\r\n */\r\n ClientAuthError.createInvalidCacheEnvironmentError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheEnvironment.code, ClientAuthErrorMessage.invalidCacheEnvironment.desc);\r\n };\r\n /**\r\n * Throws error when account is not found in cache.\r\n */\r\n ClientAuthError.createNoAccountFoundError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.noAccountFound.code, ClientAuthErrorMessage.noAccountFound.desc);\r\n };\r\n /**\r\n * Throws error if ICachePlugin not set on CacheManager.\r\n */\r\n ClientAuthError.createCachePluginError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.CachePluginError.code, \"\" + ClientAuthErrorMessage.CachePluginError.desc);\r\n };\r\n /**\r\n * Throws error if crypto object not found.\r\n * @param operationName\r\n */\r\n ClientAuthError.createNoCryptoObjectError = function (operationName) {\r\n return new ClientAuthError(ClientAuthErrorMessage.noCryptoObj.code, \"\" + ClientAuthErrorMessage.noCryptoObj.desc + operationName);\r\n };\r\n /**\r\n * Throws error if cache type is invalid.\r\n */\r\n ClientAuthError.createInvalidCacheTypeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidCacheType.code, \"\" + ClientAuthErrorMessage.invalidCacheType.desc);\r\n };\r\n /**\r\n * Throws error if unexpected account type.\r\n */\r\n ClientAuthError.createUnexpectedAccountTypeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedAccountType.code, \"\" + ClientAuthErrorMessage.unexpectedAccountType.desc);\r\n };\r\n /**\r\n * Throws error if unexpected credential type.\r\n */\r\n ClientAuthError.createUnexpectedCredentialTypeError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.unexpectedCredentialType.code, \"\" + ClientAuthErrorMessage.unexpectedCredentialType.desc);\r\n };\r\n /**\r\n * Throws error if client assertion is not valid.\r\n */\r\n ClientAuthError.createInvalidAssertionError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidAssertion.code, \"\" + ClientAuthErrorMessage.invalidAssertion.desc);\r\n };\r\n /**\r\n * Throws error if client assertion is not valid.\r\n */\r\n ClientAuthError.createInvalidCredentialError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.invalidClientCredential.code, \"\" + ClientAuthErrorMessage.invalidClientCredential.desc);\r\n };\r\n /**\r\n * Throws error if token cannot be retrieved from cache due to refresh being required.\r\n */\r\n ClientAuthError.createRefreshRequiredError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenRefreshRequired.code, ClientAuthErrorMessage.tokenRefreshRequired.desc);\r\n };\r\n /**\r\n * Throws error if the user defined timeout is reached.\r\n */\r\n ClientAuthError.createUserTimeoutReachedError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.userTimeoutReached.code, ClientAuthErrorMessage.userTimeoutReached.desc);\r\n };\r\n /*\r\n * Throws error if token claims are not populated for a signed jwt generation\r\n */\r\n ClientAuthError.createTokenClaimsRequiredError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.tokenClaimsRequired.code, ClientAuthErrorMessage.tokenClaimsRequired.desc);\r\n };\r\n /**\r\n * Throws error when the authorization code is missing from the server response\r\n */\r\n ClientAuthError.createNoAuthCodeInServerResponseError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.noAuthorizationCodeFromServer.code, ClientAuthErrorMessage.noAuthorizationCodeFromServer.desc);\r\n };\r\n ClientAuthError.createBindingKeyNotRemovedError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.bindingKeyNotRemovedError.code, ClientAuthErrorMessage.bindingKeyNotRemovedError.desc);\r\n };\r\n /**\r\n * Thrown when logout is attempted for an authority that doesnt have an end_session_endpoint\r\n */\r\n ClientAuthError.createLogoutNotSupportedError = function () {\r\n return new ClientAuthError(ClientAuthErrorMessage.logoutNotSupported.code, ClientAuthErrorMessage.logoutNotSupported.desc);\r\n };\r\n return ClientAuthError;\r\n}(AuthError));\n\nexport { ClientAuthError, ClientAuthErrorMessage };\n//# sourceMappingURL=ClientAuthError.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * @hidden\r\n */\r\nvar StringUtils = /** @class */ (function () {\r\n function StringUtils() {\r\n }\r\n /**\r\n * decode a JWT\r\n *\r\n * @param authToken\r\n */\r\n StringUtils.decodeAuthToken = function (authToken) {\r\n if (StringUtils.isEmpty(authToken)) {\r\n throw ClientAuthError.createTokenNullOrEmptyError(authToken);\r\n }\r\n var tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\r\n var matches = tokenPartsRegex.exec(authToken);\r\n if (!matches || matches.length < 4) {\r\n throw ClientAuthError.createTokenParsingError(\"Given token is malformed: \" + JSON.stringify(authToken));\r\n }\r\n var crackedToken = {\r\n header: matches[1],\r\n JWSPayload: matches[2],\r\n JWSSig: matches[3]\r\n };\r\n return crackedToken;\r\n };\r\n /**\r\n * Check if a string is empty.\r\n *\r\n * @param str\r\n */\r\n StringUtils.isEmpty = function (str) {\r\n return (typeof str === \"undefined\" || !str || 0 === str.length);\r\n };\r\n /**\r\n * Check if stringified object is empty\r\n * @param strObj\r\n */\r\n StringUtils.isEmptyObj = function (strObj) {\r\n if (strObj && !StringUtils.isEmpty(strObj)) {\r\n try {\r\n var obj = JSON.parse(strObj);\r\n return Object.keys(obj).length === 0;\r\n }\r\n catch (e) { }\r\n }\r\n return true;\r\n };\r\n StringUtils.startsWith = function (str, search) {\r\n return str.indexOf(search) === 0;\r\n };\r\n StringUtils.endsWith = function (str, search) {\r\n return (str.length >= search.length) && (str.lastIndexOf(search) === (str.length - search.length));\r\n };\r\n /**\r\n * Parses string into an object.\r\n *\r\n * @param query\r\n */\r\n StringUtils.queryStringToObject = function (query) {\r\n var obj = {};\r\n var params = query.split(\"&\");\r\n var decode = function (s) { return decodeURIComponent(s.replace(/\\+/g, \" \")); };\r\n params.forEach(function (pair) {\r\n if (pair.trim()) {\r\n var _a = pair.split(/=(.+)/g, 2), key = _a[0], value = _a[1]; // Split on the first occurence of the '=' character\r\n if (key && value) {\r\n obj[decode(key)] = decode(value);\r\n }\r\n }\r\n });\r\n return obj;\r\n };\r\n /**\r\n * Trims entries in an array.\r\n *\r\n * @param arr\r\n */\r\n StringUtils.trimArrayEntries = function (arr) {\r\n return arr.map(function (entry) { return entry.trim(); });\r\n };\r\n /**\r\n * Removes empty strings from array\r\n * @param arr\r\n */\r\n StringUtils.removeEmptyStringsFromArray = function (arr) {\r\n return arr.filter(function (entry) {\r\n return !StringUtils.isEmpty(entry);\r\n });\r\n };\r\n /**\r\n * Attempts to parse a string into JSON\r\n * @param str\r\n */\r\n StringUtils.jsonParseHelper = function (str) {\r\n try {\r\n return JSON.parse(str);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n };\r\n /**\r\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\r\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\r\n * @param input String to match against\r\n */\r\n StringUtils.matchPattern = function (pattern, input) {\r\n /**\r\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\r\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\r\n */\r\n var regex = new RegExp(pattern.replace(/\\\\/g, \"\\\\\\\\\").replace(/\\*/g, \"[^ ]*\").replace(/\\?/g, \"\\\\\\?\")); // eslint-disable-line security/detect-non-literal-regexp\r\n return regex.test(input);\r\n };\r\n return StringUtils;\r\n}());\n\nexport { StringUtils };\n//# sourceMappingURL=StringUtils.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { StringUtils, AuthError } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar BrowserAuthErrorMessage = {\r\n pkceNotGenerated: {\r\n code: \"pkce_not_created\",\r\n desc: \"The PKCE code challenge and verifier could not be generated.\"\r\n },\r\n cryptoDoesNotExist: {\r\n code: \"crypto_nonexistent\",\r\n desc: \"The crypto object or function is not available.\"\r\n },\r\n httpMethodNotImplementedError: {\r\n code: \"http_method_not_implemented\",\r\n desc: \"The HTTP method given has not been implemented in this library.\"\r\n },\r\n emptyNavigateUriError: {\r\n code: \"empty_navigate_uri\",\r\n desc: \"Navigation URI is empty. Please check stack trace for more info.\"\r\n },\r\n hashEmptyError: {\r\n code: \"hash_empty_error\",\r\n desc: \"Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash.\"\r\n },\r\n hashDoesNotContainStateError: {\r\n code: \"no_state_in_hash\",\r\n desc: \"Hash does not contain state. Please verify that the request originated from msal.\"\r\n },\r\n hashDoesNotContainKnownPropertiesError: {\r\n code: \"hash_does_not_contain_known_properties\",\r\n desc: \"Hash does not contain known properites. Please verify that your redirectUri is not changing the hash.\"\r\n },\r\n unableToParseStateError: {\r\n code: \"unable_to_parse_state\",\r\n desc: \"Unable to parse state. Please verify that the request originated from msal.\"\r\n },\r\n stateInteractionTypeMismatchError: {\r\n code: \"state_interaction_type_mismatch\",\r\n desc: \"Hash contains state but the interaction type does not match the caller.\"\r\n },\r\n interactionInProgress: {\r\n code: \"interaction_in_progress\",\r\n desc: \"Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n popupWindowError: {\r\n code: \"popup_window_error\",\r\n desc: \"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.\"\r\n },\r\n emptyWindowError: {\r\n code: \"empty_window_error\",\r\n desc: \"window.open returned null or undefined window object.\"\r\n },\r\n userCancelledError: {\r\n code: \"user_cancelled\",\r\n desc: \"User cancelled the flow.\"\r\n },\r\n monitorPopupTimeoutError: {\r\n code: \"monitor_window_timeout\",\r\n desc: \"Token acquisition in popup failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n monitorIframeTimeoutError: {\r\n code: \"monitor_window_timeout\",\r\n desc: \"Token acquisition in iframe failed due to timeout. For more visit: aka.ms/msaljs/browser-errors.\"\r\n },\r\n redirectInIframeError: {\r\n code: \"redirect_in_iframe\",\r\n desc: \"Code flow is not supported inside an iframe. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.\"\r\n },\r\n blockTokenRequestsInHiddenIframeError: {\r\n code: \"block_iframe_reload\",\r\n desc: \"Request was blocked inside an iframe because MSAL detected an authentication response. For more visit: aka.ms/msaljs/browser-errors\"\r\n },\r\n blockAcquireTokenInPopupsError: {\r\n code: \"block_nested_popups\",\r\n desc: \"Request was blocked inside a popup because MSAL detected it was running in a popup.\"\r\n },\r\n iframeClosedPrematurelyError: {\r\n code: \"iframe_closed_prematurely\",\r\n desc: \"The iframe being monitored was closed prematurely.\"\r\n },\r\n silentLogoutUnsupportedError: {\r\n code: \"silent_logout_unsupported\",\r\n desc: \"Silent logout not supported. Please call logoutRedirect or logoutPopup instead.\"\r\n },\r\n noAccountError: {\r\n code: \"no_account_error\",\r\n desc: \"No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.\"\r\n },\r\n silentPromptValueError: {\r\n code: \"silent_prompt_value_error\",\r\n desc: \"The value given for the prompt value is not valid for silent requests - must be set to 'none'.\"\r\n },\r\n noTokenRequestCacheError: {\r\n code: \"no_token_request_cache_error\",\r\n desc: \"No token request found in cache.\"\r\n },\r\n unableToParseTokenRequestCacheError: {\r\n code: \"unable_to_parse_token_request_cache_error\",\r\n desc: \"The cached token request could not be parsed.\"\r\n },\r\n noCachedAuthorityError: {\r\n code: \"no_cached_authority_error\",\r\n desc: \"No cached authority found.\"\r\n },\r\n authRequestNotSet: {\r\n code: \"auth_request_not_set_error\",\r\n desc: \"Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler\"\r\n },\r\n invalidCacheType: {\r\n code: \"invalid_cache_type\",\r\n desc: \"Invalid cache type\"\r\n },\r\n notInBrowserEnvironment: {\r\n code: \"non_browser_environment\",\r\n desc: \"Login and token requests are not supported in non-browser environments.\"\r\n },\r\n databaseNotOpen: {\r\n code: \"database_not_open\",\r\n desc: \"Database is not open!\"\r\n },\r\n noNetworkConnectivity: {\r\n code: \"no_network_connectivity\",\r\n desc: \"No network connectivity. Check your internet connection.\"\r\n },\r\n postRequestFailed: {\r\n code: \"post_request_failed\",\r\n desc: \"Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'\"\r\n },\r\n getRequestFailed: {\r\n code: \"get_request_failed\",\r\n desc: \"Network request failed. Please check the network trace to determine root cause.\"\r\n },\r\n failedToParseNetworkResponse: {\r\n code: \"failed_to_parse_response\",\r\n desc: \"Failed to parse network response. Check network trace.\"\r\n },\r\n unableToLoadTokenError: {\r\n code: \"unable_to_load_token\",\r\n desc: \"Error loading token to cache.\"\r\n },\r\n signingKeyNotFoundInStorage: {\r\n code: \"crypto_key_not_found\",\r\n desc: \"Cryptographic Key or Keypair not found in browser storage.\"\r\n },\r\n authCodeRequired: {\r\n code: \"auth_code_required\",\r\n desc: \"An authorization code must be provided (as the `code` property on the request) to this flow.\"\r\n },\r\n authCodeOrNativeAccountRequired: {\r\n code: \"auth_code_or_nativeAccountId_required\",\r\n desc: \"An authorization code or nativeAccountId must be provided to this flow.\"\r\n },\r\n databaseUnavailable: {\r\n code: \"database_unavailable\",\r\n desc: \"IndexedDB, which is required for persistent cryptographic key storage, is unavailable. This may be caused by browser privacy features which block persistent storage in third-party contexts.\"\r\n },\r\n unableToAcquireTokenFromNativePlatform: {\r\n code: \"unable_to_acquire_token_from_native_platform\",\r\n desc: \"Unable to acquire token from native platform. For a list of possible reasons visit aka.ms/msaljs/browser-errors.\"\r\n },\r\n nativeHandshakeTimeout: {\r\n code: \"native_handshake_timeout\",\r\n desc: \"Timed out while attempting to establish connection to browser extension\"\r\n },\r\n nativeExtensionNotInstalled: {\r\n code: \"native_extension_not_installed\",\r\n desc: \"Native extension is not installed. If you think this is a mistake call the initialize function.\"\r\n },\r\n nativeConnectionNotEstablished: {\r\n code: \"native_connection_not_established\",\r\n desc: \"Connection to native platform has not been established. Please install a compatible browser extension and run initialize(). For more please visit aka.ms/msaljs/browser-errors.\"\r\n },\r\n nativeBrokerCalledBeforeInitialize: {\r\n code: \"native_broker_called_before_initialize\",\r\n desc: \"You must call and await the initialize function before attempting to call any other MSAL API when native brokering is enabled. For more please visit aka.ms/msaljs/browser-errors.\"\r\n },\r\n nativePromptNotSupported: {\r\n code: \"native_prompt_not_supported\",\r\n desc: \"The provided prompt is not supported by the native platform. This request should be routed to the web based flow.\"\r\n }\r\n};\r\n/**\r\n * Browser library error class thrown by the MSAL.js library for SPAs\r\n */\r\nvar BrowserAuthError = /** @class */ (function (_super) {\r\n __extends(BrowserAuthError, _super);\r\n function BrowserAuthError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n Object.setPrototypeOf(_this, BrowserAuthError.prototype);\r\n _this.name = \"BrowserAuthError\";\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when PKCE is not implemented.\r\n * @param errDetail\r\n */\r\n BrowserAuthError.createPkceNotGeneratedError = function (errDetail) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.pkceNotGenerated.code, BrowserAuthErrorMessage.pkceNotGenerated.desc + \" Detail:\" + errDetail);\r\n };\r\n /**\r\n * Creates an error thrown when the crypto object is unavailable.\r\n * @param errDetail\r\n */\r\n BrowserAuthError.createCryptoNotAvailableError = function (errDetail) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.cryptoDoesNotExist.code, BrowserAuthErrorMessage.cryptoDoesNotExist.desc + \" Detail:\" + errDetail);\r\n };\r\n /**\r\n * Creates an error thrown when an HTTP method hasn't been implemented by the browser class.\r\n * @param method\r\n */\r\n BrowserAuthError.createHttpMethodNotImplementedError = function (method) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.httpMethodNotImplementedError.code, BrowserAuthErrorMessage.httpMethodNotImplementedError.desc + \" Given Method: \" + method);\r\n };\r\n /**\r\n * Creates an error thrown when the navigation URI is empty.\r\n */\r\n BrowserAuthError.createEmptyNavigationUriError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyNavigateUriError.code, BrowserAuthErrorMessage.emptyNavigateUriError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n * @param hashValue\r\n */\r\n BrowserAuthError.createEmptyHashError = function (hashValue) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashEmptyError.code, BrowserAuthErrorMessage.hashEmptyError.desc + \" Given Url: \" + hashValue);\r\n };\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n */\r\n BrowserAuthError.createHashDoesNotContainStateError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainStateError.code, BrowserAuthErrorMessage.hashDoesNotContainStateError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the hash string value does not contain known properties\r\n */\r\n BrowserAuthError.createHashDoesNotContainKnownPropertiesError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.code, BrowserAuthErrorMessage.hashDoesNotContainKnownPropertiesError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the hash string value is unexpectedly empty.\r\n */\r\n BrowserAuthError.createUnableToParseStateError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseStateError.code, BrowserAuthErrorMessage.unableToParseStateError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the state value in the hash does not match the interaction type of the API attempting to consume it.\r\n */\r\n BrowserAuthError.createStateInteractionTypeMismatchError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.stateInteractionTypeMismatchError.code, BrowserAuthErrorMessage.stateInteractionTypeMismatchError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when a browser interaction (redirect or popup) is in progress.\r\n */\r\n BrowserAuthError.createInteractionInProgressError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.interactionInProgress.code, BrowserAuthErrorMessage.interactionInProgress.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the popup window could not be opened.\r\n * @param errDetail\r\n */\r\n BrowserAuthError.createPopupWindowError = function (errDetail) {\r\n var errorMessage = BrowserAuthErrorMessage.popupWindowError.desc;\r\n errorMessage = !StringUtils.isEmpty(errDetail) ? errorMessage + \" Details: \" + errDetail : errorMessage;\r\n return new BrowserAuthError(BrowserAuthErrorMessage.popupWindowError.code, errorMessage);\r\n };\r\n /**\r\n * Creates an error thrown when window.open returns an empty window object.\r\n * @param errDetail\r\n */\r\n BrowserAuthError.createEmptyWindowCreatedError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.emptyWindowError.code, BrowserAuthErrorMessage.emptyWindowError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the user closes a popup.\r\n */\r\n BrowserAuthError.createUserCancelledError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.userCancelledError.code, BrowserAuthErrorMessage.userCancelledError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when monitorPopupFromHash times out for a given popup.\r\n */\r\n BrowserAuthError.createMonitorPopupTimeoutError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorPopupTimeoutError.code, BrowserAuthErrorMessage.monitorPopupTimeoutError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when monitorIframeFromHash times out for a given iframe.\r\n */\r\n BrowserAuthError.createMonitorIframeTimeoutError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.monitorIframeTimeoutError.code, BrowserAuthErrorMessage.monitorIframeTimeoutError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when navigateWindow is called inside an iframe.\r\n * @param windowParentCheck\r\n */\r\n BrowserAuthError.createRedirectInIframeError = function (windowParentCheck) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.redirectInIframeError.code, BrowserAuthErrorMessage.redirectInIframeError.desc + \" (window.parent !== window) => \" + windowParentCheck);\r\n };\r\n /**\r\n * Creates an error thrown when an auth reload is done inside an iframe.\r\n */\r\n BrowserAuthError.createBlockReloadInHiddenIframeError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.code, BrowserAuthErrorMessage.blockTokenRequestsInHiddenIframeError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when a popup attempts to call an acquireToken API\r\n * @returns\r\n */\r\n BrowserAuthError.createBlockAcquireTokenInPopupsError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.code, BrowserAuthErrorMessage.blockAcquireTokenInPopupsError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when an iframe is found to be closed before the timeout is reached.\r\n */\r\n BrowserAuthError.createIframeClosedPrematurelyError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.iframeClosedPrematurelyError.code, BrowserAuthErrorMessage.iframeClosedPrematurelyError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the logout API is called on any of the silent interaction clients\r\n */\r\n BrowserAuthError.createSilentLogoutUnsupportedError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.silentLogoutUnsupportedError.code, BrowserAuthErrorMessage.silentLogoutUnsupportedError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the account object is not provided in the acquireTokenSilent API.\r\n */\r\n BrowserAuthError.createNoAccountError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noAccountError.code, BrowserAuthErrorMessage.noAccountError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when a given prompt value is invalid for silent requests.\r\n */\r\n BrowserAuthError.createSilentPromptValueError = function (givenPrompt) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.silentPromptValueError.code, BrowserAuthErrorMessage.silentPromptValueError.desc + \" Given value: \" + givenPrompt);\r\n };\r\n /**\r\n * Creates an error thrown when the cached token request could not be retrieved from the cache\r\n */\r\n BrowserAuthError.createUnableToParseTokenRequestCacheError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.code, BrowserAuthErrorMessage.unableToParseTokenRequestCacheError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the token request could not be retrieved from the cache\r\n */\r\n BrowserAuthError.createNoTokenRequestCacheError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noTokenRequestCacheError.code, BrowserAuthErrorMessage.noTokenRequestCacheError.desc);\r\n };\r\n /**\r\n * Creates an error thrown when handleCodeResponse is called before initiateAuthRequest (InteractionHandler)\r\n */\r\n BrowserAuthError.createAuthRequestNotSetError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authRequestNotSet.code, BrowserAuthErrorMessage.authRequestNotSet.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the authority could not be retrieved from the cache\r\n */\r\n BrowserAuthError.createNoCachedAuthorityError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noCachedAuthorityError.code, BrowserAuthErrorMessage.noCachedAuthorityError.desc);\r\n };\r\n /**\r\n * Creates an error thrown if cache type is invalid.\r\n */\r\n BrowserAuthError.createInvalidCacheTypeError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.invalidCacheType.code, \"\" + BrowserAuthErrorMessage.invalidCacheType.desc);\r\n };\r\n /**\r\n * Create an error thrown when login and token requests are made from a non-browser environment\r\n */\r\n BrowserAuthError.createNonBrowserEnvironmentError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.notInBrowserEnvironment.code, BrowserAuthErrorMessage.notInBrowserEnvironment.desc);\r\n };\r\n /**\r\n * Create an error thrown when indexDB database is not open\r\n */\r\n BrowserAuthError.createDatabaseNotOpenError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseNotOpen.code, BrowserAuthErrorMessage.databaseNotOpen.desc);\r\n };\r\n /**\r\n * Create an error thrown when token fetch fails due to no internet\r\n */\r\n BrowserAuthError.createNoNetworkConnectivityError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.noNetworkConnectivity.code, BrowserAuthErrorMessage.noNetworkConnectivity.desc);\r\n };\r\n /**\r\n * Create an error thrown when token fetch fails due to reasons other than internet connectivity\r\n */\r\n BrowserAuthError.createPostRequestFailedError = function (errorDesc, endpoint) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.postRequestFailed.code, BrowserAuthErrorMessage.postRequestFailed.desc + \" | Network client threw: \" + errorDesc + \" | Attempted to reach: \" + endpoint.split(\"?\")[0]);\r\n };\r\n /**\r\n * Create an error thrown when get request fails due to reasons other than internet connectivity\r\n */\r\n BrowserAuthError.createGetRequestFailedError = function (errorDesc, endpoint) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.getRequestFailed.code, BrowserAuthErrorMessage.getRequestFailed.desc + \" | Network client threw: \" + errorDesc + \" | Attempted to reach: \" + endpoint.split(\"?\")[0]);\r\n };\r\n /**\r\n * Create an error thrown when network client fails to parse network response\r\n */\r\n BrowserAuthError.createFailedToParseNetworkResponseError = function (endpoint) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.failedToParseNetworkResponse.code, BrowserAuthErrorMessage.failedToParseNetworkResponse.desc + \" | Attempted to reach: \" + endpoint.split(\"?\")[0]);\r\n };\r\n /**\r\n * Create an error thrown when the necessary information is not available to sideload tokens\r\n */\r\n BrowserAuthError.createUnableToLoadTokenError = function (errorDetail) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToLoadTokenError.code, BrowserAuthErrorMessage.unableToLoadTokenError.desc + \" | \" + errorDetail);\r\n };\r\n /**\r\n * Create an error thrown when the queried cryptographic key is not found in IndexedDB\r\n */\r\n BrowserAuthError.createSigningKeyNotFoundInStorageError = function (keyId) {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code, BrowserAuthErrorMessage.signingKeyNotFoundInStorage.desc + \" | No match found for KeyId: \" + keyId);\r\n };\r\n /**\r\n * Create an error when an authorization code is required but not provided\r\n */\r\n BrowserAuthError.createAuthCodeRequiredError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authCodeRequired.code, BrowserAuthErrorMessage.authCodeRequired.desc);\r\n };\r\n /**\r\n * Create an error when an authorization code or native account ID is required but not provided\r\n */\r\n BrowserAuthError.createAuthCodeOrNativeAccountIdRequiredError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.code, BrowserAuthErrorMessage.authCodeOrNativeAccountRequired.desc);\r\n };\r\n /**\r\n * Create an error when IndexedDB is unavailable\r\n */\r\n BrowserAuthError.createDatabaseUnavailableError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.databaseUnavailable.code, BrowserAuthErrorMessage.databaseUnavailable.desc);\r\n };\r\n /**\r\n * Create an error when native token acquisition is not possible\r\n */\r\n BrowserAuthError.createUnableToAcquireTokenFromNativePlatformError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.code, BrowserAuthErrorMessage.unableToAcquireTokenFromNativePlatform.desc);\r\n };\r\n /**\r\n * Create an error thrown when Handshake with browser extension times out\r\n */\r\n BrowserAuthError.createNativeHandshakeTimeoutError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeHandshakeTimeout.code, BrowserAuthErrorMessage.nativeHandshakeTimeout.desc);\r\n };\r\n /**\r\n * Create an error thrown when browser extension is not installed\r\n */\r\n BrowserAuthError.createNativeExtensionNotInstalledError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeExtensionNotInstalled.code, BrowserAuthErrorMessage.nativeExtensionNotInstalled.desc);\r\n };\r\n /**\r\n * Create an error when native connection has not been established\r\n * @returns\r\n */\r\n BrowserAuthError.createNativeConnectionNotEstablishedError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeConnectionNotEstablished.code, BrowserAuthErrorMessage.nativeConnectionNotEstablished.desc);\r\n };\r\n /**\r\n * Create an error thrown when the initialize function hasn't been called\r\n */\r\n BrowserAuthError.createNativeBrokerCalledBeforeInitialize = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.code, BrowserAuthErrorMessage.nativeBrokerCalledBeforeInitialize.desc);\r\n };\r\n /**\r\n * Create an error thrown when requesting a token directly from the native platform with an unsupported prompt parameter e.g. select_account, login or create\r\n * These requests must go through eSTS to ensure eSTS is aware of the new account\r\n */\r\n BrowserAuthError.createNativePromptParameterNotSupportedError = function () {\r\n return new BrowserAuthError(BrowserAuthErrorMessage.nativePromptNotSupported.code, BrowserAuthErrorMessage.nativePromptNotSupported.desc);\r\n };\r\n return BrowserAuthError;\r\n}(AuthError));\n\nexport { BrowserAuthError, BrowserAuthErrorMessage };\n//# sourceMappingURL=BrowserAuthError.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { Base64Encode } from '../encode/Base64Encode.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Constant byte array length\r\nvar RANDOM_BYTE_ARR_LENGTH = 32;\r\n/**\r\n * Class which exposes APIs to generate PKCE codes and code verifiers.\r\n */\r\nvar PkceGenerator = /** @class */ (function () {\r\n function PkceGenerator(cryptoObj) {\r\n this.base64Encode = new Base64Encode();\r\n this.cryptoObj = cryptoObj;\r\n }\r\n /**\r\n * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636\r\n */\r\n PkceGenerator.prototype.generateCodes = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var codeVerifier, codeChallenge;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n codeVerifier = this.generateCodeVerifier();\r\n return [4 /*yield*/, this.generateCodeChallengeFromVerifier(codeVerifier)];\r\n case 1:\r\n codeChallenge = _a.sent();\r\n return [2 /*return*/, {\r\n verifier: codeVerifier,\r\n challenge: codeChallenge\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Generates a random 32 byte buffer and returns the base64\r\n * encoded string to be used as a PKCE Code Verifier\r\n */\r\n PkceGenerator.prototype.generateCodeVerifier = function () {\r\n try {\r\n // Generate random values as utf-8\r\n var buffer = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);\r\n this.cryptoObj.getRandomValues(buffer);\r\n // encode verifier as base64\r\n var pkceCodeVerifierB64 = this.base64Encode.urlEncodeArr(buffer);\r\n return pkceCodeVerifierB64;\r\n }\r\n catch (e) {\r\n throw BrowserAuthError.createPkceNotGeneratedError(e);\r\n }\r\n };\r\n /**\r\n * Creates a base64 encoded PKCE Code Challenge string from the\r\n * hash created from the PKCE Code Verifier supplied\r\n */\r\n PkceGenerator.prototype.generateCodeChallengeFromVerifier = function (pkceCodeVerifier) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pkceHashedCodeVerifier, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.cryptoObj.sha256Digest(pkceCodeVerifier)];\r\n case 1:\r\n pkceHashedCodeVerifier = _a.sent();\r\n // encode hash as base64\r\n return [2 /*return*/, this.base64Encode.urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier))];\r\n case 2:\r\n e_1 = _a.sent();\r\n throw BrowserAuthError.createPkceNotGeneratedError(e_1);\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return PkceGenerator;\r\n}());\n\nexport { PkceGenerator };\n//# sourceMappingURL=PkceGenerator.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserStringUtils } from '../utils/BrowserStringUtils.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { KEY_FORMAT_JWK } from '../utils/BrowserConstants.js';\nimport { Constants } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams\r\n */\r\n// RSA KeyGen Algorithm\r\nvar PKCS1_V15_KEYGEN_ALG = \"RSASSA-PKCS1-v1_5\";\r\n// SHA-256 hashing algorithm\r\nvar S256_HASH_ALG = \"SHA-256\";\r\n// MOD length for PoP tokens\r\nvar MODULUS_LENGTH = 2048;\r\n// Public Exponent\r\nvar PUBLIC_EXPONENT = new Uint8Array([0x01, 0x00, 0x01]);\r\n/**\r\n * This class implements functions used by the browser library to perform cryptography operations such as\r\n * hashing and encoding. It also has helper functions to validate the availability of specific APIs.\r\n */\r\nvar BrowserCrypto = /** @class */ (function () {\r\n function BrowserCrypto(logger) {\r\n this.logger = logger;\r\n if (!(this.hasCryptoAPI())) {\r\n throw BrowserAuthError.createCryptoNotAvailableError(\"Browser crypto or msCrypto object not available.\");\r\n }\r\n this._keygenAlgorithmOptions = {\r\n name: PKCS1_V15_KEYGEN_ALG,\r\n hash: S256_HASH_ALG,\r\n modulusLength: MODULUS_LENGTH,\r\n publicExponent: PUBLIC_EXPONENT\r\n };\r\n }\r\n /**\r\n * Returns a sha-256 hash of the given dataString as an ArrayBuffer.\r\n * @param dataString\r\n */\r\n BrowserCrypto.prototype.sha256Digest = function (dataString) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var data;\r\n return __generator(this, function (_a) {\r\n data = BrowserStringUtils.stringToUtf8Arr(dataString);\r\n return [2 /*return*/, this.hasIECrypto() ? this.getMSCryptoDigest(S256_HASH_ALG, data) : this.getSubtleCryptoDigest(S256_HASH_ALG, data)];\r\n });\r\n });\r\n };\r\n /**\r\n * Populates buffer with cryptographically random values.\r\n * @param dataBuffer\r\n */\r\n BrowserCrypto.prototype.getRandomValues = function (dataBuffer) {\r\n var cryptoObj = window[\"msCrypto\"] || window.crypto;\r\n if (!cryptoObj.getRandomValues) {\r\n throw BrowserAuthError.createCryptoNotAvailableError(\"getRandomValues does not exist.\");\r\n }\r\n cryptoObj.getRandomValues(dataBuffer);\r\n };\r\n /**\r\n * Generates a keypair based on current keygen algorithm config.\r\n * @param extractable\r\n * @param usages\r\n */\r\n BrowserCrypto.prototype.generateKeyPair = function (extractable, usages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, (this.hasIECrypto() ?\r\n this.msCryptoGenerateKey(extractable, usages)\r\n : window.crypto.subtle.generateKey(this._keygenAlgorithmOptions, extractable, usages))];\r\n });\r\n });\r\n };\r\n /**\r\n * Export key as Json Web Key (JWK)\r\n * @param key\r\n * @param format\r\n */\r\n BrowserCrypto.prototype.exportJwk = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.hasIECrypto() ? this.msCryptoExportJwk(key) : window.crypto.subtle.exportKey(KEY_FORMAT_JWK, key)];\r\n });\r\n });\r\n };\r\n /**\r\n * Imports key as Json Web Key (JWK), can set extractable and usages.\r\n * @param key\r\n * @param format\r\n * @param extractable\r\n * @param usages\r\n */\r\n BrowserCrypto.prototype.importJwk = function (key, extractable, usages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var keyString, keyBuffer;\r\n return __generator(this, function (_a) {\r\n keyString = BrowserCrypto.getJwkString(key);\r\n keyBuffer = BrowserStringUtils.stringToArrayBuffer(keyString);\r\n return [2 /*return*/, this.hasIECrypto() ?\r\n this.msCryptoImportKey(keyBuffer, extractable, usages)\r\n : window.crypto.subtle.importKey(KEY_FORMAT_JWK, key, this._keygenAlgorithmOptions, extractable, usages)];\r\n });\r\n });\r\n };\r\n /**\r\n * Signs given data with given key\r\n * @param key\r\n * @param data\r\n */\r\n BrowserCrypto.prototype.sign = function (key, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.hasIECrypto() ?\r\n this.msCryptoSign(key, data)\r\n : window.crypto.subtle.sign(this._keygenAlgorithmOptions, key, data)];\r\n });\r\n });\r\n };\r\n /**\r\n * Check whether IE crypto or other browser cryptography is available.\r\n */\r\n BrowserCrypto.prototype.hasCryptoAPI = function () {\r\n return this.hasIECrypto() || this.hasBrowserCrypto();\r\n };\r\n /**\r\n * Checks whether IE crypto (AKA msCrypto) is available.\r\n */\r\n BrowserCrypto.prototype.hasIECrypto = function () {\r\n return \"msCrypto\" in window;\r\n };\r\n /**\r\n * Check whether browser crypto is available.\r\n */\r\n BrowserCrypto.prototype.hasBrowserCrypto = function () {\r\n return \"crypto\" in window;\r\n };\r\n /**\r\n * Helper function for SHA digest.\r\n * @param algorithm\r\n * @param data\r\n */\r\n BrowserCrypto.prototype.getSubtleCryptoDigest = function (algorithm, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, window.crypto.subtle.digest(algorithm, data)];\r\n });\r\n });\r\n };\r\n /**\r\n * IE Helper function for SHA digest.\r\n * @param algorithm\r\n * @param data\r\n */\r\n BrowserCrypto.prototype.getMSCryptoDigest = function (algorithm, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var digestOperation = window[\"msCrypto\"].subtle.digest(algorithm, data.buffer);\r\n digestOperation.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n digestOperation.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * IE Helper function for generating a keypair\r\n * @param extractable\r\n * @param usages\r\n */\r\n BrowserCrypto.prototype.msCryptoGenerateKey = function (extractable, usages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msGenerateKey = window[\"msCrypto\"].subtle.generateKey(_this._keygenAlgorithmOptions, extractable, usages);\r\n msGenerateKey.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n msGenerateKey.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * IE Helper function for exportKey\r\n * @param key\r\n * @param format\r\n */\r\n BrowserCrypto.prototype.msCryptoExportJwk = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msExportKey = window[\"msCrypto\"].subtle.exportKey(KEY_FORMAT_JWK, key);\r\n msExportKey.addEventListener(\"complete\", function (e) {\r\n var resultBuffer = e.target.result;\r\n var resultString = BrowserStringUtils.utf8ArrToString(new Uint8Array(resultBuffer))\r\n .replace(/\\r/g, Constants.EMPTY_STRING)\r\n .replace(/\\n/g, Constants.EMPTY_STRING)\r\n .replace(/\\t/g, Constants.EMPTY_STRING)\r\n .split(\" \").join(Constants.EMPTY_STRING)\r\n .replace(\"\\u0000\", Constants.EMPTY_STRING);\r\n try {\r\n resolve(JSON.parse(resultString));\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n });\r\n msExportKey.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * IE Helper function for importKey\r\n * @param key\r\n * @param format\r\n * @param extractable\r\n * @param usages\r\n */\r\n BrowserCrypto.prototype.msCryptoImportKey = function (keyBuffer, extractable, usages) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msImportKey = window[\"msCrypto\"].subtle.importKey(KEY_FORMAT_JWK, keyBuffer, _this._keygenAlgorithmOptions, extractable, usages);\r\n msImportKey.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n msImportKey.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * IE Helper function for sign JWT\r\n * @param key\r\n * @param data\r\n */\r\n BrowserCrypto.prototype.msCryptoSign = function (key, data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var msSign = window[\"msCrypto\"].subtle.sign(_this._keygenAlgorithmOptions, key, data);\r\n msSign.addEventListener(\"complete\", function (e) {\r\n resolve(e.target.result);\r\n });\r\n msSign.addEventListener(\"error\", function (error) {\r\n reject(error);\r\n });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * Returns stringified jwk.\r\n * @param jwk\r\n */\r\n BrowserCrypto.getJwkString = function (jwk) {\r\n return JSON.stringify(jwk, Object.keys(jwk).sort());\r\n };\r\n return BrowserCrypto;\r\n}());\n\nexport { BrowserCrypto };\n//# sourceMappingURL=BrowserCrypto.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { DB_NAME, DB_VERSION, DB_TABLE_NAME } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API\r\n */\r\nvar DatabaseStorage = /** @class */ (function () {\r\n function DatabaseStorage() {\r\n this.dbName = DB_NAME;\r\n this.version = DB_VERSION;\r\n this.tableName = DB_TABLE_NAME;\r\n this.dbOpen = false;\r\n }\r\n /**\r\n * Opens IndexedDB instance.\r\n */\r\n DatabaseStorage.prototype.open = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var openDB = window.indexedDB.open(_this.dbName, _this.version);\r\n openDB.addEventListener(\"upgradeneeded\", function (e) {\r\n var event = e;\r\n event.target.result.createObjectStore(_this.tableName);\r\n });\r\n openDB.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n _this.db = event.target.result;\r\n _this.dbOpen = true;\r\n resolve();\r\n });\r\n openDB.addEventListener(\"error\", function () { return reject(BrowserAuthError.createDatabaseUnavailableError()); });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * Closes the connection to IndexedDB database when all pending transactions\r\n * complete.\r\n */\r\n DatabaseStorage.prototype.closeConnection = function () {\r\n var db = this.db;\r\n if (db && this.dbOpen) {\r\n db.close();\r\n this.dbOpen = false;\r\n }\r\n };\r\n /**\r\n * Opens database if it's not already open\r\n */\r\n DatabaseStorage.prototype.validateDbIsOpen = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!!this.dbOpen) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.open()];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Retrieves item from IndexedDB instance.\r\n * @param key\r\n */\r\n DatabaseStorage.prototype.getItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n // TODO: Add timeouts?\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readonly\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbGet = objectStore.get(key);\r\n dbGet.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n _this.closeConnection();\r\n resolve(event.target.result);\r\n });\r\n dbGet.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Adds item to IndexedDB under given key\r\n * @param key\r\n * @param payload\r\n */\r\n DatabaseStorage.prototype.setItem = function (key, payload) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n // TODO: Add timeouts?\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readwrite\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbPut = objectStore.put(payload, key);\r\n dbPut.addEventListener(\"success\", function () {\r\n _this.closeConnection();\r\n resolve();\r\n });\r\n dbPut.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes item from IndexedDB under given key\r\n * @param key\r\n */\r\n DatabaseStorage.prototype.removeItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readwrite\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbDelete = objectStore.delete(key);\r\n dbDelete.addEventListener(\"success\", function () {\r\n _this.closeConnection();\r\n resolve();\r\n });\r\n dbDelete.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get all the keys from the storage object as an iterable array of strings.\r\n */\r\n DatabaseStorage.prototype.getKeys = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readonly\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbGetKeys = objectStore.getAllKeys();\r\n dbGetKeys.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n _this.closeConnection();\r\n resolve(event.target.result);\r\n });\r\n dbGetKeys.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n *\r\n * Checks whether there is an object under the search key in the object store\r\n */\r\n DatabaseStorage.prototype.containsKey = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validateDbIsOpen()];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n if (!_this.db) {\r\n return reject(BrowserAuthError.createDatabaseNotOpenError());\r\n }\r\n var transaction = _this.db.transaction([_this.tableName], \"readonly\");\r\n var objectStore = transaction.objectStore(_this.tableName);\r\n var dbContainsKey = objectStore.count(key);\r\n dbContainsKey.addEventListener(\"success\", function (e) {\r\n var event = e;\r\n _this.closeConnection();\r\n resolve(event.target.result === 1);\r\n });\r\n dbContainsKey.addEventListener(\"error\", function (e) {\r\n _this.closeConnection();\r\n reject(e);\r\n });\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Deletes the MSAL database. The database is deleted rather than cleared to make it possible\r\n * for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues\r\n * with IndexedDB database versions.\r\n */\r\n DatabaseStorage.prototype.deleteDatabase = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var existingDatabases, database;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // Check if database being deleted exists\r\n if (this.db && this.dbOpen) {\r\n this.closeConnection();\r\n }\r\n return [4 /*yield*/, window.indexedDB.databases()];\r\n case 1:\r\n existingDatabases = _a.sent();\r\n database = existingDatabases.find(function (database) { return database.name === DB_NAME; });\r\n // If database exists, delete it\r\n if (database) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var deleteDbRequest = window.indexedDB.deleteDatabase(DB_NAME);\r\n deleteDbRequest.addEventListener(\"success\", function () { return resolve(true); });\r\n deleteDbRequest.addEventListener(\"error\", function () { return reject(false); });\r\n })];\r\n }\r\n // Database doesn't exist, return true\r\n return [2 /*return*/, true];\r\n }\r\n });\r\n });\r\n };\r\n return DatabaseStorage;\r\n}());\n\nexport { DatabaseStorage };\n//# sourceMappingURL=DatabaseStorage.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar MemoryStorage = /** @class */ (function () {\r\n function MemoryStorage() {\r\n this.cache = new Map();\r\n }\r\n MemoryStorage.prototype.getItem = function (key) {\r\n return this.cache.get(key) || null;\r\n };\r\n MemoryStorage.prototype.setItem = function (key, value) {\r\n this.cache.set(key, value);\r\n };\r\n MemoryStorage.prototype.removeItem = function (key) {\r\n this.cache.delete(key);\r\n };\r\n MemoryStorage.prototype.getKeys = function () {\r\n var cacheKeys = [];\r\n this.cache.forEach(function (value, key) {\r\n cacheKeys.push(key);\r\n });\r\n return cacheKeys;\r\n };\r\n MemoryStorage.prototype.containsKey = function (key) {\r\n return this.cache.has(key);\r\n };\r\n MemoryStorage.prototype.clear = function () {\r\n this.cache.clear();\r\n };\r\n return MemoryStorage;\r\n}());\n\nexport { MemoryStorage };\n//# sourceMappingURL=MemoryStorage.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';\nimport { DatabaseStorage } from './DatabaseStorage.js';\nimport { MemoryStorage } from './MemoryStorage.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class allows MSAL to store artifacts asynchronously using the DatabaseStorage IndexedDB wrapper,\r\n * backed up with the more volatile MemoryStorage object for cases in which IndexedDB may be unavailable.\r\n */\r\nvar AsyncMemoryStorage = /** @class */ (function () {\r\n function AsyncMemoryStorage(logger, storeName) {\r\n this.inMemoryCache = new MemoryStorage();\r\n this.indexedDBCache = new DatabaseStorage();\r\n this.logger = logger;\r\n this.storeName = storeName;\r\n }\r\n AsyncMemoryStorage.prototype.handleDatabaseAccessError = function (error) {\r\n if (error instanceof BrowserAuthError && error.errorCode === BrowserAuthErrorMessage.databaseUnavailable.code) {\r\n this.logger.error(\"Could not access persistent storage. This may be caused by browser privacy features which block persistent storage in third-party contexts.\");\r\n }\r\n else {\r\n throw error;\r\n }\r\n };\r\n /**\r\n * Get the item matching the given key. Tries in-memory cache first, then in the asynchronous\r\n * storage object if item isn't found in-memory.\r\n * @param key\r\n */\r\n AsyncMemoryStorage.prototype.getItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var item, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n item = this.inMemoryCache.getItem(key);\r\n if (!!item) return [3 /*break*/, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n this.logger.verbose(\"Queried item not found in in-memory cache, now querying persistent storage.\");\r\n return [4 /*yield*/, this.indexedDBCache.getItem(key)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n e_1 = _a.sent();\r\n this.handleDatabaseAccessError(e_1);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/, item];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Sets the item in the in-memory cache and then tries to set it in the asynchronous\r\n * storage object with the given key.\r\n * @param key\r\n * @param value\r\n */\r\n AsyncMemoryStorage.prototype.setItem = function (key, value) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.inMemoryCache.setItem(key, value);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.indexedDBCache.setItem(key, value)];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_2 = _a.sent();\r\n this.handleDatabaseAccessError(e_2);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes the item matching the key from the in-memory cache, then tries to remove it from the asynchronous storage object.\r\n * @param key\r\n */\r\n AsyncMemoryStorage.prototype.removeItem = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.inMemoryCache.removeItem(key);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.indexedDBCache.removeItem(key)];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_3 = _a.sent();\r\n this.handleDatabaseAccessError(e_3);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get all the keys from the in-memory cache as an iterable array of strings. If no keys are found, query the keys in the\r\n * asynchronous storage object.\r\n */\r\n AsyncMemoryStorage.prototype.getKeys = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cacheKeys, e_4;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n cacheKeys = this.inMemoryCache.getKeys();\r\n if (!(cacheKeys.length === 0)) return [3 /*break*/, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n this.logger.verbose(\"In-memory cache is empty, now querying persistent storage.\");\r\n return [4 /*yield*/, this.indexedDBCache.getKeys()];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n e_4 = _a.sent();\r\n this.handleDatabaseAccessError(e_4);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/, cacheKeys];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns true or false if the given key is present in the cache.\r\n * @param key\r\n */\r\n AsyncMemoryStorage.prototype.containsKey = function (key) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var containsKey, e_5;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n containsKey = this.inMemoryCache.containsKey(key);\r\n if (!!containsKey) return [3 /*break*/, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n this.logger.verbose(\"Key not found in in-memory cache, now querying persistent storage.\");\r\n return [4 /*yield*/, this.indexedDBCache.containsKey(key)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n case 3:\r\n e_5 = _a.sent();\r\n this.handleDatabaseAccessError(e_5);\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/, containsKey];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Clears in-memory Map and tries to delete the IndexedDB database.\r\n */\r\n AsyncMemoryStorage.prototype.clear = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var dbDeleted, e_6;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // InMemory cache is a Map instance, clear is straightforward\r\n this.logger.verbose(\"Deleting in-memory keystore \" + this.storeName);\r\n this.inMemoryCache.clear();\r\n this.logger.verbose(\"In-memory keystore \" + this.storeName + \" deleted\");\r\n this.logger.verbose(\"Deleting persistent keystore \" + this.storeName);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.indexedDBCache.deleteDatabase()];\r\n case 2:\r\n dbDeleted = _a.sent();\r\n if (dbDeleted) {\r\n this.logger.verbose(\"Persistent keystore \" + this.storeName + \" deleted\");\r\n }\r\n return [2 /*return*/, dbDeleted];\r\n case 3:\r\n e_6 = _a.sent();\r\n this.handleDatabaseAccessError(e_6);\r\n return [2 /*return*/, false];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return AsyncMemoryStorage;\r\n}());\n\nexport { AsyncMemoryStorage };\n//# sourceMappingURL=AsyncMemoryStorage.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Log message level.\r\n */\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"Error\"] = 0] = \"Error\";\r\n LogLevel[LogLevel[\"Warning\"] = 1] = \"Warning\";\r\n LogLevel[LogLevel[\"Info\"] = 2] = \"Info\";\r\n LogLevel[LogLevel[\"Verbose\"] = 3] = \"Verbose\";\r\n LogLevel[LogLevel[\"Trace\"] = 4] = \"Trace\";\r\n})(LogLevel || (LogLevel = {}));\r\n/**\r\n * Class which facilitates logging of messages to a specific place.\r\n */\r\nvar Logger = /** @class */ (function () {\r\n function Logger(loggerOptions, packageName, packageVersion) {\r\n // Current log level, defaults to info.\r\n this.level = LogLevel.Info;\r\n var defaultLoggerCallback = function () {\r\n return;\r\n };\r\n this.localCallback = loggerOptions.loggerCallback || defaultLoggerCallback;\r\n this.piiLoggingEnabled = loggerOptions.piiLoggingEnabled || false;\r\n this.level = typeof (loggerOptions.logLevel) === \"number\" ? loggerOptions.logLevel : LogLevel.Info;\r\n this.correlationId = loggerOptions.correlationId || Constants.EMPTY_STRING;\r\n this.packageName = packageName || Constants.EMPTY_STRING;\r\n this.packageVersion = packageVersion || Constants.EMPTY_STRING;\r\n }\r\n /**\r\n * Create new Logger with existing configurations.\r\n */\r\n Logger.prototype.clone = function (packageName, packageVersion, correlationId) {\r\n return new Logger({ loggerCallback: this.localCallback, piiLoggingEnabled: this.piiLoggingEnabled, logLevel: this.level, correlationId: correlationId || this.correlationId }, packageName, packageVersion);\r\n };\r\n /**\r\n * Log message with required options.\r\n */\r\n Logger.prototype.logMessage = function (logMessage, options) {\r\n if ((options.logLevel > this.level) || (!this.piiLoggingEnabled && options.containsPii)) {\r\n return;\r\n }\r\n var timestamp = new Date().toUTCString();\r\n // Add correlationId to logs if set, correlationId provided on log messages take precedence\r\n var logHeader;\r\n if (!StringUtils.isEmpty(options.correlationId)) {\r\n logHeader = \"[\" + timestamp + \"] : [\" + options.correlationId + \"]\";\r\n }\r\n else if (!StringUtils.isEmpty(this.correlationId)) {\r\n logHeader = \"[\" + timestamp + \"] : [\" + this.correlationId + \"]\";\r\n }\r\n else {\r\n logHeader = \"[\" + timestamp + \"]\";\r\n }\r\n var log = logHeader + \" : \" + this.packageName + \"@\" + this.packageVersion + \" : \" + LogLevel[options.logLevel] + \" - \" + logMessage;\r\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\r\n this.executeCallback(options.logLevel, log, options.containsPii || false);\r\n };\r\n /**\r\n * Execute callback with message.\r\n */\r\n Logger.prototype.executeCallback = function (level, message, containsPii) {\r\n if (this.localCallback) {\r\n this.localCallback(level, message, containsPii);\r\n }\r\n };\r\n /**\r\n * Logs error messages.\r\n */\r\n Logger.prototype.error = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs error messages with PII.\r\n */\r\n Logger.prototype.errorPii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Error,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs warning messages.\r\n */\r\n Logger.prototype.warning = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs warning messages with PII.\r\n */\r\n Logger.prototype.warningPii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Warning,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs info messages.\r\n */\r\n Logger.prototype.info = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs info messages with PII.\r\n */\r\n Logger.prototype.infoPii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Info,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs verbose messages.\r\n */\r\n Logger.prototype.verbose = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs verbose messages with PII.\r\n */\r\n Logger.prototype.verbosePii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Verbose,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs trace messages.\r\n */\r\n Logger.prototype.trace = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: false,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Logs trace messages with PII.\r\n */\r\n Logger.prototype.tracePii = function (message, correlationId) {\r\n this.logMessage(message, {\r\n logLevel: LogLevel.Trace,\r\n containsPii: true,\r\n correlationId: correlationId || Constants.EMPTY_STRING\r\n });\r\n };\r\n /**\r\n * Returns whether PII Logging is enabled or not.\r\n */\r\n Logger.prototype.isPiiLoggingEnabled = function () {\r\n return this.piiLoggingEnabled || false;\r\n };\r\n return Logger;\r\n}());\n\nexport { LogLevel, Logger };\n//# sourceMappingURL=Logger.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Authority types supported by MSAL.\r\n */\r\nvar AuthorityType;\r\n(function (AuthorityType) {\r\n AuthorityType[AuthorityType[\"Default\"] = 0] = \"Default\";\r\n AuthorityType[AuthorityType[\"Adfs\"] = 1] = \"Adfs\";\r\n})(AuthorityType || (AuthorityType = {}));\n\nexport { AuthorityType };\n//# sourceMappingURL=AuthorityType.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __assign } from '../../_virtual/_tslib.js';\nimport { PerformanceEventStatus } from './PerformanceEvent.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar PerformanceClient = /** @class */ (function () {\r\n /**\r\n * Creates an instance of PerformanceClient,\r\n * an abstract class containing core performance telemetry logic.\r\n *\r\n * @constructor\r\n * @param {string} clientId Client ID of the application\r\n * @param {string} authority Authority used by the application\r\n * @param {Logger} logger Logger used by the application\r\n * @param {string} libraryName Name of the library\r\n * @param {string} libraryVersion Version of the library\r\n */\r\n function PerformanceClient(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry) {\r\n this.authority = authority;\r\n this.libraryName = libraryName;\r\n this.libraryVersion = libraryVersion;\r\n this.applicationTelemetry = applicationTelemetry;\r\n this.clientId = clientId;\r\n this.logger = logger;\r\n this.callbacks = new Map();\r\n this.eventsByCorrelationId = new Map();\r\n this.measurementsById = new Map();\r\n }\r\n /**\r\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {?string} [correlationId]\r\n * @returns {InProgressPerformanceEvent}\r\n */\r\n PerformanceClient.prototype.startMeasurement = function (measureName, correlationId) {\r\n var _this = this;\r\n var _a, _b;\r\n // Generate a placeholder correlation if the request does not provide one\r\n var eventCorrelationId = correlationId || this.generateId();\r\n if (!correlationId) {\r\n this.logger.info(\"PerformanceClient: No correlation id provided for \" + measureName + \", generating\", eventCorrelationId);\r\n }\r\n this.logger.trace(\"PerformanceClient: Performance measurement started for \" + measureName, eventCorrelationId);\r\n var performanceMeasurement = this.startPerformanceMeasuremeant(measureName, eventCorrelationId);\r\n performanceMeasurement.startMeasurement();\r\n var inProgressEvent = {\r\n eventId: this.generateId(),\r\n status: PerformanceEventStatus.InProgress,\r\n authority: this.authority,\r\n libraryName: this.libraryName,\r\n libraryVersion: this.libraryVersion,\r\n appName: (_a = this.applicationTelemetry) === null || _a === void 0 ? void 0 : _a.appName,\r\n appVersion: (_b = this.applicationTelemetry) === null || _b === void 0 ? void 0 : _b.appVersion,\r\n clientId: this.clientId,\r\n name: measureName,\r\n startTimeMs: Date.now(),\r\n correlationId: eventCorrelationId\r\n };\r\n // Store in progress events so they can be discarded if not ended properly\r\n this.cacheEventByCorrelationId(inProgressEvent);\r\n this.cacheMeasurement(inProgressEvent, performanceMeasurement);\r\n // Return the event and functions the caller can use to properly end/flush the measurement\r\n return {\r\n endMeasurement: function (event) {\r\n var completedEvent = _this.endMeasurement(__assign(__assign({}, inProgressEvent), event));\r\n if (completedEvent) {\r\n // Cache event so that submeasurements can be added downstream\r\n _this.cacheEventByCorrelationId(completedEvent);\r\n }\r\n return completedEvent;\r\n },\r\n flushMeasurement: function () {\r\n return _this.flushMeasurements(inProgressEvent.name, inProgressEvent.correlationId);\r\n },\r\n discardMeasurement: function () {\r\n return _this.discardMeasurements(inProgressEvent.correlationId);\r\n },\r\n measurement: performanceMeasurement,\r\n event: inProgressEvent\r\n };\r\n };\r\n /**\r\n * Stops measuring the performance for an operation. Should only be called directly by PerformanceClient classes,\r\n * as consumers should instead use the function returned by startMeasurement.\r\n *\r\n * @param {PerformanceEvent} event\r\n * @returns {(PerformanceEvent | null)}\r\n */\r\n PerformanceClient.prototype.endMeasurement = function (event) {\r\n var performanceMeasurement = this.measurementsById.get(event.eventId);\r\n if (performanceMeasurement) {\r\n // Immediately delete so that the same event isnt ended twice\r\n this.measurementsById.delete(event.eventId);\r\n performanceMeasurement.endMeasurement();\r\n var durationMs = performanceMeasurement.flushMeasurement();\r\n // null indicates no measurement was taken (e.g. needed performance APIs not present)\r\n if (durationMs !== null) {\r\n this.logger.trace(\"PerformanceClient: Performance measurement ended for \" + event.name + \": \" + durationMs + \" ms\", event.correlationId);\r\n var completedEvent = __assign(__assign({ \r\n // Allow duration to be overwritten when event ends (e.g. testing), but not status\r\n durationMs: Math.round(durationMs) }, event), { status: PerformanceEventStatus.Completed });\r\n return completedEvent;\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Performance measurement not taken\", event.correlationId);\r\n }\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Measurement not found for \" + event.eventId, event.correlationId);\r\n }\r\n return null;\r\n };\r\n /**\r\n * Upserts event into event cache.\r\n * First key is the correlation id, second key is the event id.\r\n * Allows for events to be grouped by correlation id,\r\n * and to easily allow for properties on them to be updated.\r\n *\r\n * @private\r\n * @param {PerformanceEvent} event\r\n */\r\n PerformanceClient.prototype.cacheEventByCorrelationId = function (event) {\r\n var existingEvents = this.eventsByCorrelationId.get(event.correlationId);\r\n if (existingEvents) {\r\n this.logger.trace(\"PerformanceClient: Performance measurement for \" + event.name + \" added/updated\", event.correlationId);\r\n existingEvents.set(event.eventId, event);\r\n }\r\n else {\r\n this.logger.trace(\"PerformanceClient: Performance measurement for \" + event.name + \" started\", event.correlationId);\r\n this.eventsByCorrelationId.set(event.correlationId, new Map().set(event.eventId, event));\r\n }\r\n };\r\n /**\r\n * Cache measurements by their id.\r\n *\r\n * @private\r\n * @param {PerformanceEvent} event\r\n * @param {IPerformanceMeasurement} measurement\r\n */\r\n PerformanceClient.prototype.cacheMeasurement = function (event, measurement) {\r\n this.measurementsById.set(event.eventId, measurement);\r\n };\r\n /**\r\n * Gathers and emits performance events for measurements taked for the given top-level API and correlation ID.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {string} correlationId\r\n */\r\n PerformanceClient.prototype.flushMeasurements = function (measureName, correlationId) {\r\n var _this = this;\r\n this.logger.trace(\"PerformanceClient: Performance measurements flushed for \" + measureName, correlationId);\r\n var eventsForCorrelationId = this.eventsByCorrelationId.get(correlationId);\r\n if (eventsForCorrelationId) {\r\n this.discardMeasurements(correlationId);\r\n /*\r\n * Manually end incomplete submeasurements to ensure there arent orphaned/never ending events.\r\n * Incomplete submeasurements are likely an instrumentation bug that should be fixed.\r\n * IE only supports Map.forEach.\r\n */\r\n var completedEvents_1 = [];\r\n eventsForCorrelationId.forEach(function (event) {\r\n if (event.name !== measureName && event.status !== PerformanceEventStatus.Completed) {\r\n _this.logger.trace(\"PerformanceClient: Incomplete submeasurement \" + event.name + \" found for \" + measureName, correlationId);\r\n var completedEvent = _this.endMeasurement(event);\r\n if (completedEvent) {\r\n completedEvents_1.push(completedEvent);\r\n }\r\n }\r\n completedEvents_1.push(event);\r\n });\r\n // Sort events by start time (earliest first)\r\n var sortedCompletedEvents = completedEvents_1.sort(function (eventA, eventB) { return eventA.startTimeMs - eventB.startTimeMs; });\r\n // Take completed top level event and add completed submeasurements durations as properties\r\n var topLevelEvents = sortedCompletedEvents.filter(function (event) { return event.name === measureName && event.status === PerformanceEventStatus.Completed; });\r\n if (topLevelEvents.length > 0) {\r\n /*\r\n * Only take the first top-level event if there are multiple events with the same correlation id.\r\n * This greatly simplifies logic for submeasurements.\r\n */\r\n if (topLevelEvents.length > 1) {\r\n this.logger.verbose(\"PerformanceClient: Multiple distinct top-level performance events found, using the first\", correlationId);\r\n }\r\n var topLevelEvent = topLevelEvents[0];\r\n this.logger.verbose(\"PerformanceClient: Measurement found for \" + measureName, correlationId);\r\n // Build event object with top level and sub measurements\r\n var eventToEmit = sortedCompletedEvents.reduce(function (previous, current) {\r\n if (current.name !== measureName) {\r\n _this.logger.trace(\"PerformanceClient: Complete submeasurement found for \" + current.name, correlationId);\r\n // TODO: Emit additional properties for each subMeasurement\r\n var subMeasurementName = current.name + \"DurationMs\";\r\n /*\r\n * Some code paths, such as resolving an authority, can occur multiple times.\r\n * Only take the first measurement, since the second could be read from the cache,\r\n * or due to the same correlation id being used for two distinct requests.\r\n */\r\n if (!previous[subMeasurementName]) {\r\n previous[subMeasurementName] = current.durationMs;\r\n }\r\n else {\r\n _this.logger.verbose(\"PerformanceClient: Submeasurement for \" + measureName + \" already exists for \" + current.name + \", ignoring\", correlationId);\r\n }\r\n }\r\n return previous;\r\n }, topLevelEvent);\r\n this.emitEvents([eventToEmit], eventToEmit.correlationId);\r\n }\r\n else {\r\n this.logger.verbose(\"PerformanceClient: No completed top-level measurements found for \" + measureName, correlationId);\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"PerformanceClient: No measurements found\", correlationId);\r\n }\r\n };\r\n /**\r\n * Removes measurements for a given correlation id.\r\n *\r\n * @param {string} correlationId\r\n */\r\n PerformanceClient.prototype.discardMeasurements = function (correlationId) {\r\n this.logger.trace(\"PerformanceClient: Performance measurements discarded\", correlationId);\r\n this.eventsByCorrelationId.delete(correlationId);\r\n };\r\n /**\r\n * Registers a callback function to receive performance events.\r\n *\r\n * @param {PerformanceCallbackFunction} callback\r\n * @returns {string}\r\n */\r\n PerformanceClient.prototype.addPerformanceCallback = function (callback) {\r\n var callbackId = this.generateId();\r\n this.callbacks.set(callbackId, callback);\r\n this.logger.verbose(\"PerformanceClient: Performance callback registered with id: \" + callbackId);\r\n return callbackId;\r\n };\r\n /**\r\n * Removes a callback registered with addPerformanceCallback.\r\n *\r\n * @param {string} callbackId\r\n * @returns {boolean}\r\n */\r\n PerformanceClient.prototype.removePerformanceCallback = function (callbackId) {\r\n var result = this.callbacks.delete(callbackId);\r\n if (result) {\r\n this.logger.verbose(\"PerformanceClient: Performance callback \" + callbackId + \" removed.\");\r\n }\r\n else {\r\n this.logger.verbose(\"PerformanceClient: Performance callback \" + callbackId + \" not removed.\");\r\n }\r\n return result;\r\n };\r\n /**\r\n * Emits events to all registered callbacks.\r\n *\r\n * @param {PerformanceEvent[]} events\r\n * @param {?string} [correlationId]\r\n */\r\n PerformanceClient.prototype.emitEvents = function (events, correlationId) {\r\n var _this = this;\r\n this.logger.verbose(\"PerformanceClient: Emitting performance events\", correlationId);\r\n this.callbacks.forEach(function (callback, callbackId) {\r\n _this.logger.trace(\"PerformanceClient: Emitting event to callback \" + callbackId, correlationId);\r\n callback.apply(null, [events]);\r\n });\r\n };\r\n return PerformanceClient;\r\n}());\n\nexport { PerformanceClient };\n//# sourceMappingURL=PerformanceClient.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __extends } from '../../_virtual/_tslib.js';\nimport { PerformanceClient } from './PerformanceClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar StubPerformanceMeasurement = /** @class */ (function () {\r\n function StubPerformanceMeasurement() {\r\n }\r\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\r\n StubPerformanceMeasurement.prototype.startMeasurement = function () { };\r\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\r\n StubPerformanceMeasurement.prototype.endMeasurement = function () { };\r\n StubPerformanceMeasurement.prototype.flushMeasurement = function () {\r\n return null;\r\n };\r\n return StubPerformanceMeasurement;\r\n}());\r\nvar StubPerformanceClient = /** @class */ (function (_super) {\r\n __extends(StubPerformanceClient, _super);\r\n function StubPerformanceClient() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n StubPerformanceClient.prototype.generateId = function () {\r\n return \"callback-id\";\r\n };\r\n StubPerformanceClient.prototype.startPerformanceMeasuremeant = function () {\r\n return new StubPerformanceMeasurement();\r\n };\r\n return StubPerformanceClient;\r\n}(PerformanceClient));\n\nexport { StubPerformanceClient, StubPerformanceMeasurement };\n//# sourceMappingURL=StubPerformanceClient.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { AuthError } from '../error/AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar DEFAULT_CRYPTO_IMPLEMENTATION = {\r\n createNewGuid: function () {\r\n var notImplErr = \"Crypto interface - createNewGuid() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n base64Decode: function () {\r\n var notImplErr = \"Crypto interface - base64Decode() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n base64Encode: function () {\r\n var notImplErr = \"Crypto interface - base64Encode() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n },\r\n generatePkceCodes: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - generatePkceCodes() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n getPublicKeyThumbprint: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - getPublicKeyThumbprint() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n removeTokenBindingKey: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - removeTokenBindingKey() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n clearKeystore: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - clearKeystore() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n signJwt: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - signJwt() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n hashString: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Crypto interface - hashString() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n }\r\n};\n\nexport { DEFAULT_CRYPTO_IMPLEMENTATION };\n//# sourceMappingURL=ICrypto.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthError } from './AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Error thrown when there is an error with the server code, for example, unavailability.\r\n */\r\nvar ServerError = /** @class */ (function (_super) {\r\n __extends(ServerError, _super);\r\n function ServerError(errorCode, errorMessage, subError) {\r\n var _this = _super.call(this, errorCode, errorMessage, subError) || this;\r\n _this.name = \"ServerError\";\r\n Object.setPrototypeOf(_this, ServerError.prototype);\r\n return _this;\r\n }\r\n return ServerError;\r\n}(AuthError));\n\nexport { ServerError };\n//# sourceMappingURL=ServerError.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthError } from './AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required\r\n */\r\nvar InteractionRequiredServerErrorMessage = [\r\n \"interaction_required\",\r\n \"consent_required\",\r\n \"login_required\"\r\n];\r\nvar InteractionRequiredAuthSubErrorMessage = [\r\n \"message_only\",\r\n \"additional_action\",\r\n \"basic_action\",\r\n \"user_password_expired\",\r\n \"consent_required\"\r\n];\r\n/**\r\n * Interaction required errors defined by the SDK\r\n */\r\nvar InteractionRequiredAuthErrorMessage = {\r\n noTokensFoundError: {\r\n code: \"no_tokens_found\",\r\n desc: \"No refresh token found in the cache. Please sign-in.\"\r\n }\r\n};\r\n/**\r\n * Error thrown when user interaction is required.\r\n */\r\nvar InteractionRequiredAuthError = /** @class */ (function (_super) {\r\n __extends(InteractionRequiredAuthError, _super);\r\n function InteractionRequiredAuthError(errorCode, errorMessage, subError) {\r\n var _this = _super.call(this, errorCode, errorMessage, subError) || this;\r\n _this.name = \"InteractionRequiredAuthError\";\r\n Object.setPrototypeOf(_this, InteractionRequiredAuthError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Helper function used to determine if an error thrown by the server requires interaction to resolve\r\n * @param errorCode\r\n * @param errorString\r\n * @param subError\r\n */\r\n InteractionRequiredAuthError.isInteractionRequiredError = function (errorCode, errorString, subError) {\r\n var isInteractionRequiredErrorCode = !!errorCode && InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1;\r\n var isInteractionRequiredSubError = !!subError && InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\r\n var isInteractionRequiredErrorDesc = !!errorString && InteractionRequiredServerErrorMessage.some(function (irErrorCode) {\r\n return errorString.indexOf(irErrorCode) > -1;\r\n });\r\n return isInteractionRequiredErrorCode || isInteractionRequiredErrorDesc || isInteractionRequiredSubError;\r\n };\r\n /**\r\n * Creates an error thrown when the authorization code required for a token request is null or empty.\r\n */\r\n InteractionRequiredAuthError.createNoTokensFoundError = function () {\r\n return new InteractionRequiredAuthError(InteractionRequiredAuthErrorMessage.noTokensFoundError.code, InteractionRequiredAuthErrorMessage.noTokensFoundError.desc);\r\n };\r\n return InteractionRequiredAuthError;\r\n}(AuthError));\n\nexport { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage, InteractionRequiredAuthSubErrorMessage, InteractionRequiredServerErrorMessage };\n//# sourceMappingURL=InteractionRequiredAuthError.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { Constants, Separators } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Function to build a client info object from server clientInfo string\r\n * @param rawClientInfo\r\n * @param crypto\r\n */\r\nfunction buildClientInfo(rawClientInfo, crypto) {\r\n if (StringUtils.isEmpty(rawClientInfo)) {\r\n throw ClientAuthError.createClientInfoEmptyError();\r\n }\r\n try {\r\n var decodedClientInfo = crypto.base64Decode(rawClientInfo);\r\n return JSON.parse(decodedClientInfo);\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createClientInfoDecodingError(e);\r\n }\r\n}\r\n/**\r\n * Function to build a client info object from cached homeAccountId string\r\n * @param homeAccountId\r\n */\r\nfunction buildClientInfoFromHomeAccountId(homeAccountId) {\r\n if (StringUtils.isEmpty(homeAccountId)) {\r\n throw ClientAuthError.createClientInfoDecodingError(\"Home account ID was empty.\");\r\n }\r\n var clientInfoParts = homeAccountId.split(Separators.CLIENT_INFO_SEPARATOR, 2);\r\n return {\r\n uid: clientInfoParts[0],\r\n utid: clientInfoParts.length < 2 ? Constants.EMPTY_STRING : clientInfoParts[1]\r\n };\r\n}\n\nexport { buildClientInfo, buildClientInfoFromHomeAccountId };\n//# sourceMappingURL=ClientInfo.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { Separators, CacheAccountType, CacheType, Constants } from '../../utils/Constants.js';\nimport { buildClientInfo } from '../../account/ClientInfo.js';\nimport { StringUtils } from '../../utils/StringUtils.js';\nimport { ClientAuthError } from '../../error/ClientAuthError.js';\nimport { AuthorityType } from '../../authority/AuthorityType.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\r\n *\r\n * Key : Value Schema\r\n *\r\n * Key: <home_account_id>-<environment>-<realm*>\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\r\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\r\n * authorityType: Accounts authority type as a string\r\n * name: Full name for the account, including given name and family name,\r\n * clientInfo: Full base64 encoded client info received from ESTS\r\n * lastModificationTime: last time this entity was modified in the cache\r\n * lastModificationApp:\r\n * oboAssertion: access token passed in as part of OBO request\r\n * idTokenClaims: Object containing claims parsed from ID token\r\n * nativeAccountId: Account identifier on the native device\r\n * }\r\n */\r\nvar AccountEntity = /** @class */ (function () {\r\n function AccountEntity() {\r\n }\r\n /**\r\n * Generate Account Id key component as per the schema: <home_account_id>-<environment>\r\n */\r\n AccountEntity.prototype.generateAccountId = function () {\r\n var accountId = [this.homeAccountId, this.environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Generate Account Cache Key as per the schema: <home_account_id>-<environment>-<realm*>\r\n */\r\n AccountEntity.prototype.generateAccountKey = function () {\r\n return AccountEntity.generateAccountCacheKey({\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId\r\n });\r\n };\r\n /**\r\n * returns the type of the cache (in this case account)\r\n */\r\n AccountEntity.prototype.generateType = function () {\r\n switch (this.authorityType) {\r\n case CacheAccountType.ADFS_ACCOUNT_TYPE:\r\n return CacheType.ADFS;\r\n case CacheAccountType.MSAV1_ACCOUNT_TYPE:\r\n return CacheType.MSA;\r\n case CacheAccountType.MSSTS_ACCOUNT_TYPE:\r\n return CacheType.MSSTS;\r\n case CacheAccountType.GENERIC_ACCOUNT_TYPE:\r\n return CacheType.GENERIC;\r\n default: {\r\n throw ClientAuthError.createUnexpectedAccountTypeError();\r\n }\r\n }\r\n };\r\n /**\r\n * Returns the AccountInfo interface for this account.\r\n */\r\n AccountEntity.prototype.getAccountInfo = function () {\r\n return {\r\n homeAccountId: this.homeAccountId,\r\n environment: this.environment,\r\n tenantId: this.realm,\r\n username: this.username,\r\n localAccountId: this.localAccountId,\r\n name: this.name,\r\n idTokenClaims: this.idTokenClaims,\r\n nativeAccountId: this.nativeAccountId\r\n };\r\n };\r\n /**\r\n * Generates account key from interface\r\n * @param accountInterface\r\n */\r\n AccountEntity.generateAccountCacheKey = function (accountInterface) {\r\n var accountKey = [\r\n accountInterface.homeAccountId,\r\n accountInterface.environment || Constants.EMPTY_STRING,\r\n accountInterface.tenantId || Constants.EMPTY_STRING,\r\n ];\r\n return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\r\n * @param clientInfo\r\n * @param authority\r\n * @param idToken\r\n * @param policy\r\n */\r\n AccountEntity.createAccount = function (clientInfo, homeAccountId, idToken, authority, oboAssertion, cloudGraphHostName, msGraphHost, environment, nativeAccountId) {\r\n var _a, _b, _c, _d, _e, _f;\r\n var account = new AccountEntity();\r\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\r\n account.clientInfo = clientInfo;\r\n account.homeAccountId = homeAccountId;\r\n account.nativeAccountId = nativeAccountId;\r\n var env = environment || (authority && authority.getPreferredCache());\r\n if (!env) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n account.environment = env;\r\n // non AAD scenarios can have empty realm\r\n account.realm = ((_a = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _a === void 0 ? void 0 : _a.tid) || Constants.EMPTY_STRING;\r\n account.oboAssertion = oboAssertion;\r\n if (idToken) {\r\n account.idTokenClaims = idToken.claims;\r\n // How do you account for MSA CID here?\r\n account.localAccountId = ((_b = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _b === void 0 ? void 0 : _b.oid) || ((_c = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _c === void 0 ? void 0 : _c.sub) || Constants.EMPTY_STRING;\r\n /*\r\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array. In most cases it will contain a single email.\r\n * This field should not be relied upon if a custom policy is configured to return more than 1 email.\r\n */\r\n account.username = ((_d = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _d === void 0 ? void 0 : _d.preferred_username) || (((_e = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _e === void 0 ? void 0 : _e.emails) ? idToken.claims.emails[0] : Constants.EMPTY_STRING);\r\n account.name = (_f = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _f === void 0 ? void 0 : _f.name;\r\n }\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n return account;\r\n };\r\n /**\r\n * Builds non-AAD/ADFS account.\r\n * @param authority\r\n * @param idToken\r\n */\r\n AccountEntity.createGenericAccount = function (homeAccountId, idToken, authority, oboAssertion, cloudGraphHostName, msGraphHost, environment) {\r\n var _a, _b, _c, _d;\r\n var account = new AccountEntity();\r\n account.authorityType = (authority && authority.authorityType === AuthorityType.Adfs) ? CacheAccountType.ADFS_ACCOUNT_TYPE : CacheAccountType.GENERIC_ACCOUNT_TYPE;\r\n account.homeAccountId = homeAccountId;\r\n // non AAD scenarios can have empty realm\r\n account.realm = Constants.EMPTY_STRING;\r\n account.oboAssertion = oboAssertion;\r\n var env = environment || authority && authority.getPreferredCache();\r\n if (!env) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n if (idToken) {\r\n // How do you account for MSA CID here?\r\n account.localAccountId = ((_a = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _a === void 0 ? void 0 : _a.oid) || ((_b = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _b === void 0 ? void 0 : _b.sub) || Constants.EMPTY_STRING;\r\n // upn claim for most ADFS scenarios\r\n account.username = ((_c = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _c === void 0 ? void 0 : _c.upn) || Constants.EMPTY_STRING;\r\n account.name = ((_d = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _d === void 0 ? void 0 : _d.name) || Constants.EMPTY_STRING;\r\n account.idTokenClaims = idToken === null || idToken === void 0 ? void 0 : idToken.claims;\r\n }\r\n account.environment = env;\r\n account.cloudGraphHostName = cloudGraphHostName;\r\n account.msGraphHost = msGraphHost;\r\n /*\r\n * add uniqueName to claims\r\n * account.name = idToken.claims.uniqueName;\r\n */\r\n return account;\r\n };\r\n /**\r\n * Generate HomeAccountId from server response\r\n * @param serverClientInfo\r\n * @param authType\r\n */\r\n AccountEntity.generateHomeAccountId = function (serverClientInfo, authType, logger, cryptoObj, idToken) {\r\n var _a;\r\n var accountId = ((_a = idToken === null || idToken === void 0 ? void 0 : idToken.claims) === null || _a === void 0 ? void 0 : _a.sub) ? idToken.claims.sub : Constants.EMPTY_STRING;\r\n // since ADFS does not have tid and does not set client_info\r\n if (authType === AuthorityType.Adfs) {\r\n return accountId;\r\n }\r\n // for cases where there is clientInfo\r\n if (serverClientInfo) {\r\n try {\r\n var clientInfo = buildClientInfo(serverClientInfo, cryptoObj);\r\n if (!StringUtils.isEmpty(clientInfo.uid) && !StringUtils.isEmpty(clientInfo.utid)) {\r\n return \"\" + clientInfo.uid + Separators.CLIENT_INFO_SEPARATOR + clientInfo.utid;\r\n }\r\n }\r\n catch (e) { }\r\n }\r\n // default to \"sub\" claim\r\n logger.verbose(\"No client info in response\");\r\n return accountId;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AccountEntity.isAccountEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"localAccountId\") &&\r\n entity.hasOwnProperty(\"username\") &&\r\n entity.hasOwnProperty(\"authorityType\"));\r\n };\r\n /**\r\n * Helper function to determine whether 2 accountInfo objects represent the same account\r\n * @param accountA\r\n * @param accountB\r\n * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\r\n */\r\n AccountEntity.accountInfoIsEqual = function (accountA, accountB, compareClaims) {\r\n if (!accountA || !accountB) {\r\n return false;\r\n }\r\n var claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\r\n if (compareClaims) {\r\n var accountAClaims = (accountA.idTokenClaims || {});\r\n var accountBClaims = (accountB.idTokenClaims || {});\r\n // issued at timestamp and nonce are expected to change each time a new id token is acquired\r\n claimsMatch = (accountAClaims.iat === accountBClaims.iat) &&\r\n (accountAClaims.nonce === accountBClaims.nonce);\r\n }\r\n return (accountA.homeAccountId === accountB.homeAccountId) &&\r\n (accountA.localAccountId === accountB.localAccountId) &&\r\n (accountA.username === accountB.username) &&\r\n (accountA.tenantId === accountB.tenantId) &&\r\n (accountA.environment === accountB.environment) &&\r\n (accountA.nativeAccountId === accountB.nativeAccountId) &&\r\n claimsMatch;\r\n };\r\n return AccountEntity;\r\n}());\n\nexport { AccountEntity };\n//# sourceMappingURL=AccountEntity.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar CcsCredentialType;\r\n(function (CcsCredentialType) {\r\n CcsCredentialType[\"HOME_ACCOUNT_ID\"] = \"home_account_id\";\r\n CcsCredentialType[\"UPN\"] = \"UPN\";\r\n})(CcsCredentialType || (CcsCredentialType = {}));\n\nexport { CcsCredentialType };\n//# sourceMappingURL=CcsCredential.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { CredentialType, CacheType, Constants, Separators, AuthenticationScheme } from '../../utils/Constants.js';\nimport { ClientAuthError } from '../../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Base type for credentials to be stored in the cache: eg: ACCESS_TOKEN, ID_TOKEN etc\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key: <home_account_id*>-<environment>-<credential_type>-<client_id>-<realm*>-<target*>-<requestedClaims*>-<scheme*>\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, usually only used for refresh tokens\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * oboAssertion: access token passed in as part of OBO request\r\n * tokenType: Matches the authentication scheme for which the token was issued (i.e. Bearer or pop)\r\n * requestedClaimsHash: Matches the SHA 256 hash of the claims object included in the token request\r\n * }\r\n */\r\nvar CredentialEntity = /** @class */ (function () {\r\n function CredentialEntity() {\r\n }\r\n /**\r\n * Generate Account Id key component as per the schema: <home_account_id>-<environment>\r\n */\r\n CredentialEntity.prototype.generateAccountId = function () {\r\n return CredentialEntity.generateAccountIdForCacheKey(this.homeAccountId, this.environment);\r\n };\r\n /**\r\n * Generate Credential Id key component as per the schema: <credential_type>-<client_id>-<realm>\r\n */\r\n CredentialEntity.prototype.generateCredentialId = function () {\r\n return CredentialEntity.generateCredentialIdForCacheKey(this.credentialType, this.clientId, this.realm, this.familyId);\r\n };\r\n /**\r\n * Generate target key component as per schema: <target>\r\n */\r\n CredentialEntity.prototype.generateTarget = function () {\r\n return CredentialEntity.generateTargetForCacheKey(this.target);\r\n };\r\n /**\r\n * generates credential key\r\n */\r\n CredentialEntity.prototype.generateCredentialKey = function () {\r\n return CredentialEntity.generateCredentialCacheKey(this.homeAccountId, this.environment, this.credentialType, this.clientId, this.realm, this.target, this.familyId, this.tokenType, this.requestedClaimsHash);\r\n };\r\n /**\r\n * returns the type of the cache (in this case credential)\r\n */\r\n CredentialEntity.prototype.generateType = function () {\r\n switch (this.credentialType) {\r\n case CredentialType.ID_TOKEN:\r\n return CacheType.ID_TOKEN;\r\n case CredentialType.ACCESS_TOKEN:\r\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\r\n return CacheType.ACCESS_TOKEN;\r\n case CredentialType.REFRESH_TOKEN:\r\n return CacheType.REFRESH_TOKEN;\r\n default: {\r\n throw ClientAuthError.createUnexpectedCredentialTypeError();\r\n }\r\n }\r\n };\r\n /**\r\n * helper function to return `CredentialType`\r\n * @param key\r\n */\r\n CredentialEntity.getCredentialType = function (key) {\r\n // First keyword search will match all \"AccessToken\" and \"AccessToken_With_AuthScheme\" credentials\r\n if (key.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) !== -1) {\r\n // Perform second search to differentiate between \"AccessToken\" and \"AccessToken_With_AuthScheme\" credential types\r\n if (key.indexOf(CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()) !== -1) {\r\n return CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n }\r\n return CredentialType.ACCESS_TOKEN;\r\n }\r\n else if (key.indexOf(CredentialType.ID_TOKEN.toLowerCase()) !== -1) {\r\n return CredentialType.ID_TOKEN;\r\n }\r\n else if (key.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) !== -1) {\r\n return CredentialType.REFRESH_TOKEN;\r\n }\r\n return Constants.NOT_DEFINED;\r\n };\r\n /**\r\n * generates credential key\r\n * <home_account_id*>-\\<environment>-<credential_type>-<client_id>-<realm\\*>-<target\\*>-<scheme\\*>\r\n */\r\n CredentialEntity.generateCredentialCacheKey = function (homeAccountId, environment, credentialType, clientId, realm, target, familyId, tokenType, requestedClaimsHash) {\r\n var credentialKey = [\r\n this.generateAccountIdForCacheKey(homeAccountId, environment),\r\n this.generateCredentialIdForCacheKey(credentialType, clientId, realm, familyId),\r\n this.generateTargetForCacheKey(target),\r\n this.generateClaimsHashForCacheKey(requestedClaimsHash),\r\n this.generateSchemeForCacheKey(tokenType)\r\n ];\r\n return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * generates Account Id for keys\r\n * @param homeAccountId\r\n * @param environment\r\n */\r\n CredentialEntity.generateAccountIdForCacheKey = function (homeAccountId, environment) {\r\n var accountId = [homeAccountId, environment];\r\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Generates Credential Id for keys\r\n * @param credentialType\r\n * @param realm\r\n * @param clientId\r\n * @param familyId\r\n */\r\n CredentialEntity.generateCredentialIdForCacheKey = function (credentialType, clientId, realm, familyId) {\r\n var clientOrFamilyId = credentialType === CredentialType.REFRESH_TOKEN\r\n ? familyId || clientId\r\n : clientId;\r\n var credentialId = [\r\n credentialType,\r\n clientOrFamilyId,\r\n realm || Constants.EMPTY_STRING,\r\n ];\r\n return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Generate target key component as per schema: <target>\r\n */\r\n CredentialEntity.generateTargetForCacheKey = function (scopes) {\r\n return (scopes || Constants.EMPTY_STRING).toLowerCase();\r\n };\r\n /**\r\n * Generate requested claims key component as per schema: <requestedClaims>\r\n */\r\n CredentialEntity.generateClaimsHashForCacheKey = function (requestedClaimsHash) {\r\n return (requestedClaimsHash || Constants.EMPTY_STRING).toLowerCase();\r\n };\r\n /**\r\n * Generate scheme key componenet as per schema: <scheme>\r\n */\r\n CredentialEntity.generateSchemeForCacheKey = function (tokenType) {\r\n /*\r\n * PoP Tokens and SSH certs include scheme in cache key\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n return (tokenType && tokenType.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? tokenType.toLowerCase() : Constants.EMPTY_STRING;\r\n };\r\n return CredentialEntity;\r\n}());\n\nexport { CredentialEntity };\n//# sourceMappingURL=CredentialEntity.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { ClientAuthError } from './ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar ClientConfigurationErrorMessage = {\r\n redirectUriNotSet: {\r\n code: \"redirect_uri_empty\",\r\n desc: \"A redirect URI is required for all calls, and none has been set.\"\r\n },\r\n postLogoutUriNotSet: {\r\n code: \"post_logout_uri_empty\",\r\n desc: \"A post logout redirect has not been set.\"\r\n },\r\n claimsRequestParsingError: {\r\n code: \"claims_request_parsing_error\",\r\n desc: \"Could not parse the given claims request object.\"\r\n },\r\n authorityUriInsecure: {\r\n code: \"authority_uri_insecure\",\r\n desc: \"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\"\r\n },\r\n urlParseError: {\r\n code: \"url_parse_error\",\r\n desc: \"URL could not be parsed into appropriate segments.\"\r\n },\r\n urlEmptyError: {\r\n code: \"empty_url_error\",\r\n desc: \"URL was empty or null.\"\r\n },\r\n emptyScopesError: {\r\n code: \"empty_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\"\r\n },\r\n nonArrayScopesError: {\r\n code: \"nonarray_input_scopes_error\",\r\n desc: \"Scopes cannot be passed as non-array.\"\r\n },\r\n clientIdSingleScopeError: {\r\n code: \"clientid_input_scopes_error\",\r\n desc: \"Client ID can only be provided as a single scope.\"\r\n },\r\n invalidPrompt: {\r\n code: \"invalid_prompt_value\",\r\n desc: \"Supported prompt values are 'login', 'select_account', 'consent', 'create' and 'none'. Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest\",\r\n },\r\n invalidClaimsRequest: {\r\n code: \"invalid_claims\",\r\n desc: \"Given claims parameter must be a stringified JSON object.\"\r\n },\r\n tokenRequestEmptyError: {\r\n code: \"token_request_empty\",\r\n desc: \"Token request was empty and not found in cache.\"\r\n },\r\n logoutRequestEmptyError: {\r\n code: \"logout_request_empty\",\r\n desc: \"The logout request was null or undefined.\"\r\n },\r\n invalidCodeChallengeMethod: {\r\n code: \"invalid_code_challenge_method\",\r\n desc: \"code_challenge_method passed is invalid. Valid values are \\\"plain\\\" and \\\"S256\\\".\"\r\n },\r\n invalidCodeChallengeParams: {\r\n code: \"pkce_params_missing\",\r\n desc: \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\"\r\n },\r\n invalidCloudDiscoveryMetadata: {\r\n code: \"invalid_cloud_discovery_metadata\",\r\n desc: \"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields\"\r\n },\r\n invalidAuthorityMetadata: {\r\n code: \"invalid_authority_metadata\",\r\n desc: \"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.\"\r\n },\r\n untrustedAuthority: {\r\n code: \"untrusted_authority\",\r\n desc: \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\"\r\n },\r\n invalidAzureCloudInstance: {\r\n code: \"invalid_azure_cloud_instance\",\r\n desc: \"Invalid AzureCloudInstance provided. Please refer MSAL JS docs: aks.ms/msaljs/azure_cloud_instance for valid values\"\r\n },\r\n missingSshJwk: {\r\n code: \"missing_ssh_jwk\",\r\n desc: \"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.\"\r\n },\r\n missingSshKid: {\r\n code: \"missing_ssh_kid\",\r\n desc: \"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.\"\r\n },\r\n missingNonceAuthenticationHeader: {\r\n code: \"missing_nonce_authentication_header\",\r\n desc: \"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.\"\r\n },\r\n invalidAuthenticationHeader: {\r\n code: \"invalid_authentication_header\",\r\n desc: \"Invalid authentication header provided\"\r\n }\r\n};\r\n/**\r\n * Error thrown when there is an error in configuration of the MSAL.js library.\r\n */\r\nvar ClientConfigurationError = /** @class */ (function (_super) {\r\n __extends(ClientConfigurationError, _super);\r\n function ClientConfigurationError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"ClientConfigurationError\";\r\n Object.setPrototypeOf(_this, ClientConfigurationError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when the redirect uri is empty (not set by caller)\r\n */\r\n ClientConfigurationError.createRedirectUriEmptyError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.redirectUriNotSet.code, ClientConfigurationErrorMessage.redirectUriNotSet.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\r\n */\r\n ClientConfigurationError.createPostLogoutRedirectUriEmptyError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.postLogoutUriNotSet.code, ClientConfigurationErrorMessage.postLogoutUriNotSet.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the claims request could not be successfully parsed\r\n */\r\n ClientConfigurationError.createClaimsRequestParsingError = function (claimsRequestParseError) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.claimsRequestParsingError.code, ClientConfigurationErrorMessage.claimsRequestParsingError.desc + \" Given value: \" + claimsRequestParseError);\r\n };\r\n /**\r\n * Creates an error thrown if authority uri is given an insecure protocol.\r\n * @param urlString\r\n */\r\n ClientConfigurationError.createInsecureAuthorityUriError = function (urlString) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.authorityUriInsecure.code, ClientConfigurationErrorMessage.authorityUriInsecure.desc + \" Given URI: \" + urlString);\r\n };\r\n /**\r\n * Creates an error thrown if URL string does not parse into separate segments.\r\n * @param urlString\r\n */\r\n ClientConfigurationError.createUrlParseError = function (urlParseError) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlParseError.code, ClientConfigurationErrorMessage.urlParseError.desc + \" Given Error: \" + urlParseError);\r\n };\r\n /**\r\n * Creates an error thrown if URL string is empty or null.\r\n * @param urlString\r\n */\r\n ClientConfigurationError.createUrlEmptyError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.urlEmptyError.code, ClientConfigurationErrorMessage.urlEmptyError.desc);\r\n };\r\n /**\r\n * Error thrown when scopes are empty.\r\n * @param scopesValue\r\n */\r\n ClientConfigurationError.createEmptyScopesArrayError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.emptyScopesError.code, \"\" + ClientConfigurationErrorMessage.emptyScopesError.desc);\r\n };\r\n /**\r\n * Error thrown when client id scope is not provided as single scope.\r\n * @param inputScopes\r\n */\r\n ClientConfigurationError.createClientIdSingleScopeError = function (inputScopes) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.clientIdSingleScopeError.code, ClientConfigurationErrorMessage.clientIdSingleScopeError.desc + \" Given Scopes: \" + inputScopes);\r\n };\r\n /**\r\n * Error thrown when prompt is not an allowed type.\r\n * @param promptValue\r\n */\r\n ClientConfigurationError.createInvalidPromptError = function (promptValue) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidPrompt.code, ClientConfigurationErrorMessage.invalidPrompt.desc + \" Given value: \" + promptValue);\r\n };\r\n /**\r\n * Creates error thrown when claims parameter is not a stringified JSON object\r\n */\r\n ClientConfigurationError.createInvalidClaimsRequestError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidClaimsRequest.code, ClientConfigurationErrorMessage.invalidClaimsRequest.desc);\r\n };\r\n /**\r\n * Throws error when token request is empty and nothing cached in storage.\r\n */\r\n ClientConfigurationError.createEmptyLogoutRequestError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.logoutRequestEmptyError.code, ClientConfigurationErrorMessage.logoutRequestEmptyError.desc);\r\n };\r\n /**\r\n * Throws error when token request is empty and nothing cached in storage.\r\n */\r\n ClientConfigurationError.createEmptyTokenRequestError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.tokenRequestEmptyError.code, ClientConfigurationErrorMessage.tokenRequestEmptyError.desc);\r\n };\r\n /**\r\n * Throws error when an invalid code_challenge_method is passed by the user\r\n */\r\n ClientConfigurationError.createInvalidCodeChallengeMethodError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCodeChallengeMethod.code, ClientConfigurationErrorMessage.invalidCodeChallengeMethod.desc);\r\n };\r\n /**\r\n * Throws error when both params: code_challenge and code_challenge_method are not passed together\r\n */\r\n ClientConfigurationError.createInvalidCodeChallengeParamsError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCodeChallengeParams.code, ClientConfigurationErrorMessage.invalidCodeChallengeParams.desc);\r\n };\r\n /**\r\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\r\n */\r\n ClientConfigurationError.createInvalidCloudDiscoveryMetadataError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.code, ClientConfigurationErrorMessage.invalidCloudDiscoveryMetadata.desc);\r\n };\r\n /**\r\n * Throws an error when the user passes invalid cloudDiscoveryMetadata\r\n */\r\n ClientConfigurationError.createInvalidAuthorityMetadataError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthorityMetadata.code, ClientConfigurationErrorMessage.invalidAuthorityMetadata.desc);\r\n };\r\n /**\r\n * Throws error when provided authority is not a member of the trusted host list\r\n */\r\n ClientConfigurationError.createUntrustedAuthorityError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.untrustedAuthority.code, ClientConfigurationErrorMessage.untrustedAuthority.desc);\r\n };\r\n /**\r\n * Throws error when the AzureCloudInstance is set to an invalid value\r\n */\r\n ClientConfigurationError.createInvalidAzureCloudInstanceError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAzureCloudInstance.code, ClientConfigurationErrorMessage.invalidAzureCloudInstance.desc);\r\n };\r\n /**\r\n * Throws an error when the authentication scheme is set to SSH but the SSH public key is omitted from the request\r\n */\r\n ClientConfigurationError.createMissingSshJwkError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingSshJwk.code, ClientConfigurationErrorMessage.missingSshJwk.desc);\r\n };\r\n /**\r\n * Throws an error when the authentication scheme is set to SSH but the SSH public key ID is omitted from the request\r\n */\r\n ClientConfigurationError.createMissingSshKidError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingSshKid.code, ClientConfigurationErrorMessage.missingSshKid.desc);\r\n };\r\n /**\r\n * Throws error when provided headers don't contain a header that a server nonce can be extracted from\r\n */\r\n ClientConfigurationError.createMissingNonceAuthenticationHeadersError = function () {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.missingNonceAuthenticationHeader.code, ClientConfigurationErrorMessage.missingNonceAuthenticationHeader.desc);\r\n };\r\n /**\r\n * Throws error when a provided header is invalid in any way\r\n */\r\n ClientConfigurationError.createInvalidAuthenticationHeaderError = function (invalidHeaderName, details) {\r\n return new ClientConfigurationError(ClientConfigurationErrorMessage.invalidAuthenticationHeader.code, ClientConfigurationErrorMessage.invalidAuthenticationHeader.desc + \". Invalid header: \" + invalidHeaderName + \". Details: \" + details);\r\n };\r\n return ClientConfigurationError;\r\n}(ClientAuthError));\n\nexport { ClientConfigurationError, ClientConfigurationErrorMessage };\n//# sourceMappingURL=ClientConfigurationError.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __spreadArrays } from '../_virtual/_tslib.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { OIDC_SCOPES, Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\r\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\r\n * to ensure uniqueness of strings.\r\n */\r\nvar ScopeSet = /** @class */ (function () {\r\n function ScopeSet(inputScopes) {\r\n var _this = this;\r\n // Filter empty string and null/undefined array items\r\n var scopeArr = inputScopes ? StringUtils.trimArrayEntries(__spreadArrays(inputScopes)) : [];\r\n var filteredInput = scopeArr ? StringUtils.removeEmptyStringsFromArray(scopeArr) : [];\r\n // Validate and filter scopes (validate function throws if validation fails)\r\n this.validateInputScopes(filteredInput);\r\n this.scopes = new Set(); // Iterator in constructor not supported by IE11\r\n filteredInput.forEach(function (scope) { return _this.scopes.add(scope); });\r\n }\r\n /**\r\n * Factory method to create ScopeSet from space-delimited string\r\n * @param inputScopeString\r\n * @param appClientId\r\n * @param scopesRequired\r\n */\r\n ScopeSet.fromString = function (inputScopeString) {\r\n var scopeString = inputScopeString || Constants.EMPTY_STRING;\r\n var inputScopes = scopeString.split(\" \");\r\n return new ScopeSet(inputScopes);\r\n };\r\n /**\r\n * Used to validate the scopes input parameter requested by the developer.\r\n * @param {Array<string>} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned.\r\n * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not\r\n */\r\n ScopeSet.prototype.validateInputScopes = function (inputScopes) {\r\n // Check if scopes are required but not given or is an empty array\r\n if (!inputScopes || inputScopes.length < 1) {\r\n throw ClientConfigurationError.createEmptyScopesArrayError();\r\n }\r\n };\r\n /**\r\n * Check if a given scope is present in this set of scopes.\r\n * @param scope\r\n */\r\n ScopeSet.prototype.containsScope = function (scope) {\r\n var lowerCaseScopes = this.printScopesLowerCase().split(\" \");\r\n var lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\r\n // compare lowercase scopes\r\n return !StringUtils.isEmpty(scope) ? lowerCaseScopesSet.scopes.has(scope.toLowerCase()) : false;\r\n };\r\n /**\r\n * Check if a set of scopes is present in this set of scopes.\r\n * @param scopeSet\r\n */\r\n ScopeSet.prototype.containsScopeSet = function (scopeSet) {\r\n var _this = this;\r\n if (!scopeSet || scopeSet.scopes.size <= 0) {\r\n return false;\r\n }\r\n return (this.scopes.size >= scopeSet.scopes.size && scopeSet.asArray().every(function (scope) { return _this.containsScope(scope); }));\r\n };\r\n /**\r\n * Check if set of scopes contains only the defaults\r\n */\r\n ScopeSet.prototype.containsOnlyOIDCScopes = function () {\r\n var _this = this;\r\n var defaultScopeCount = 0;\r\n OIDC_SCOPES.forEach(function (defaultScope) {\r\n if (_this.containsScope(defaultScope)) {\r\n defaultScopeCount += 1;\r\n }\r\n });\r\n return this.scopes.size === defaultScopeCount;\r\n };\r\n /**\r\n * Appends single scope if passed\r\n * @param newScope\r\n */\r\n ScopeSet.prototype.appendScope = function (newScope) {\r\n if (!StringUtils.isEmpty(newScope)) {\r\n this.scopes.add(newScope.trim());\r\n }\r\n };\r\n /**\r\n * Appends multiple scopes if passed\r\n * @param newScopes\r\n */\r\n ScopeSet.prototype.appendScopes = function (newScopes) {\r\n var _this = this;\r\n try {\r\n newScopes.forEach(function (newScope) { return _this.appendScope(newScope); });\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createAppendScopeSetError(e);\r\n }\r\n };\r\n /**\r\n * Removes element from set of scopes.\r\n * @param scope\r\n */\r\n ScopeSet.prototype.removeScope = function (scope) {\r\n if (StringUtils.isEmpty(scope)) {\r\n throw ClientAuthError.createRemoveEmptyScopeFromSetError(scope);\r\n }\r\n this.scopes.delete(scope.trim());\r\n };\r\n /**\r\n * Removes default scopes from set of scopes\r\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\r\n */\r\n ScopeSet.prototype.removeOIDCScopes = function () {\r\n var _this = this;\r\n OIDC_SCOPES.forEach(function (defaultScope) {\r\n _this.scopes.delete(defaultScope);\r\n });\r\n };\r\n /**\r\n * Combines an array of scopes with the current set of scopes.\r\n * @param otherScopes\r\n */\r\n ScopeSet.prototype.unionScopeSets = function (otherScopes) {\r\n if (!otherScopes) {\r\n throw ClientAuthError.createEmptyInputScopeSetError();\r\n }\r\n var unionScopes = new Set(); // Iterator in constructor not supported in IE11\r\n otherScopes.scopes.forEach(function (scope) { return unionScopes.add(scope.toLowerCase()); });\r\n this.scopes.forEach(function (scope) { return unionScopes.add(scope.toLowerCase()); });\r\n return unionScopes;\r\n };\r\n /**\r\n * Check if scopes intersect between this set and another.\r\n * @param otherScopes\r\n */\r\n ScopeSet.prototype.intersectingScopeSets = function (otherScopes) {\r\n if (!otherScopes) {\r\n throw ClientAuthError.createEmptyInputScopeSetError();\r\n }\r\n // Do not allow OIDC scopes to be the only intersecting scopes\r\n if (!otherScopes.containsOnlyOIDCScopes()) {\r\n otherScopes.removeOIDCScopes();\r\n }\r\n var unionScopes = this.unionScopeSets(otherScopes);\r\n var sizeOtherScopes = otherScopes.getScopeCount();\r\n var sizeThisScopes = this.getScopeCount();\r\n var sizeUnionScopes = unionScopes.size;\r\n return sizeUnionScopes < (sizeThisScopes + sizeOtherScopes);\r\n };\r\n /**\r\n * Returns size of set of scopes.\r\n */\r\n ScopeSet.prototype.getScopeCount = function () {\r\n return this.scopes.size;\r\n };\r\n /**\r\n * Returns the scopes as an array of string values\r\n */\r\n ScopeSet.prototype.asArray = function () {\r\n var array = [];\r\n this.scopes.forEach(function (val) { return array.push(val); });\r\n return array;\r\n };\r\n /**\r\n * Prints scopes into a space-delimited string\r\n */\r\n ScopeSet.prototype.printScopes = function () {\r\n if (this.scopes) {\r\n var scopeArr = this.asArray();\r\n return scopeArr.join(\" \");\r\n }\r\n return Constants.EMPTY_STRING;\r\n };\r\n /**\r\n * Prints scopes into a space-delimited lower-case string (used for caching)\r\n */\r\n ScopeSet.prototype.printScopesLowerCase = function () {\r\n return this.printScopes().toLowerCase();\r\n };\r\n return ScopeSet;\r\n}());\n\nexport { ScopeSet };\n//# sourceMappingURL=ScopeSet.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * JWT Token representation class. Parses token string and generates claims object.\r\n */\r\nvar AuthToken = /** @class */ (function () {\r\n function AuthToken(rawToken, crypto) {\r\n if (StringUtils.isEmpty(rawToken)) {\r\n throw ClientAuthError.createTokenNullOrEmptyError(rawToken);\r\n }\r\n this.rawToken = rawToken;\r\n this.claims = AuthToken.extractTokenClaims(rawToken, crypto);\r\n }\r\n /**\r\n * Extract token by decoding the rawToken\r\n *\r\n * @param encodedToken\r\n */\r\n AuthToken.extractTokenClaims = function (encodedToken, crypto) {\r\n var decodedToken = StringUtils.decodeAuthToken(encodedToken);\r\n // token will be decoded to get the username\r\n try {\r\n var base64TokenPayload = decodedToken.JWSPayload;\r\n // base64Decode() should throw an error if there is an issue\r\n var base64Decoded = crypto.base64Decode(base64TokenPayload);\r\n return JSON.parse(base64Decoded);\r\n }\r\n catch (err) {\r\n throw ClientAuthError.createTokenParsingError(err);\r\n }\r\n };\r\n return AuthToken;\r\n}());\n\nexport { AuthToken };\n//# sourceMappingURL=AuthToken.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator, __extends } from '../_virtual/_tslib.js';\nimport { Constants, CredentialType, AuthenticationScheme, CacheSchemaType, THE_FAMILY_ID, APP_METADATA, AUTHORITY_METADATA_CONSTANTS } from '../utils/Constants.js';\nimport { CredentialEntity } from './entities/CredentialEntity.js';\nimport { ScopeSet } from '../request/ScopeSet.js';\nimport { AccountEntity } from './entities/AccountEntity.js';\nimport { AuthError } from '../error/AuthError.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { AuthToken } from '../account/AuthToken.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\r\n */\r\nvar CacheManager = /** @class */ (function () {\r\n function CacheManager(clientId, cryptoImpl) {\r\n this.clientId = clientId;\r\n this.cryptoImpl = cryptoImpl;\r\n }\r\n /**\r\n * Returns all accounts in cache\r\n */\r\n CacheManager.prototype.getAllAccounts = function () {\r\n var _this = this;\r\n var currentAccounts = this.getAccountsFilteredBy();\r\n var accountValues = Object.keys(currentAccounts).map(function (accountKey) { return currentAccounts[accountKey]; });\r\n var numAccounts = accountValues.length;\r\n if (numAccounts < 1) {\r\n return [];\r\n }\r\n else {\r\n var allAccounts = accountValues.map(function (value) {\r\n var accountEntity = CacheManager.toObject(new AccountEntity(), value);\r\n var accountInfo = accountEntity.getAccountInfo();\r\n var idToken = _this.readIdTokenFromCache(_this.clientId, accountInfo);\r\n if (idToken && !accountInfo.idTokenClaims) {\r\n accountInfo.idTokenClaims = new AuthToken(idToken.secret, _this.cryptoImpl).claims;\r\n }\r\n return accountInfo;\r\n });\r\n return allAccounts;\r\n }\r\n };\r\n /**\r\n * saves a cache record\r\n * @param cacheRecord\r\n */\r\n CacheManager.prototype.saveCacheRecord = function (cacheRecord) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!cacheRecord) {\r\n throw ClientAuthError.createNullOrUndefinedCacheRecord();\r\n }\r\n if (!!cacheRecord.account) {\r\n this.setAccount(cacheRecord.account);\r\n }\r\n if (!!cacheRecord.idToken) {\r\n this.setIdTokenCredential(cacheRecord.idToken);\r\n }\r\n if (!!!cacheRecord.accessToken) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.saveAccessToken(cacheRecord.accessToken)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n if (!!cacheRecord.refreshToken) {\r\n this.setRefreshTokenCredential(cacheRecord.refreshToken);\r\n }\r\n if (!!cacheRecord.appMetadata) {\r\n this.setAppMetadata(cacheRecord.appMetadata);\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * saves access token credential\r\n * @param credential\r\n */\r\n CacheManager.prototype.saveAccessToken = function (credential) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var currentTokenCache, currentScopes, currentAccessTokens, removedAccessTokens_1;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n currentTokenCache = this.getCredentialsFilteredBy({\r\n clientId: credential.clientId,\r\n credentialType: credential.credentialType,\r\n environment: credential.environment,\r\n homeAccountId: credential.homeAccountId,\r\n realm: credential.realm,\r\n tokenType: credential.tokenType,\r\n requestedClaimsHash: credential.requestedClaimsHash\r\n });\r\n currentScopes = ScopeSet.fromString(credential.target);\r\n currentAccessTokens = Object.keys(currentTokenCache.accessTokens).map(function (key) { return currentTokenCache.accessTokens[key]; });\r\n if (!currentAccessTokens) return [3 /*break*/, 2];\r\n removedAccessTokens_1 = [];\r\n currentAccessTokens.forEach(function (tokenEntity) {\r\n var tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\r\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\r\n removedAccessTokens_1.push(_this.removeCredential(tokenEntity));\r\n }\r\n });\r\n return [4 /*yield*/, Promise.all(removedAccessTokens_1)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n this.setAccessTokenCredential(credential);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\r\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param homeAccountId\r\n * @param environment\r\n * @param realm\r\n */\r\n CacheManager.prototype.getAccountsFilteredBy = function (accountFilter) {\r\n return this.getAccountsFilteredByInternal(accountFilter ? accountFilter.homeAccountId : Constants.EMPTY_STRING, accountFilter ? accountFilter.environment : Constants.EMPTY_STRING, accountFilter ? accountFilter.realm : Constants.EMPTY_STRING);\r\n };\r\n /**\r\n * retrieve accounts matching all provided filters; if no filter is set, get all accounts\r\n * not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\r\n * @param homeAccountId\r\n * @param environment\r\n * @param realm\r\n */\r\n CacheManager.prototype.getAccountsFilteredByInternal = function (homeAccountId, environment, realm) {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n var matchingAccounts = {};\r\n allCacheKeys.forEach(function (cacheKey) {\r\n var entity = _this.getAccount(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!homeAccountId && !_this.matchHomeAccountId(entity, homeAccountId)) {\r\n return;\r\n }\r\n if (!!environment && !_this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n if (!!realm && !_this.matchRealm(entity, realm)) {\r\n return;\r\n }\r\n matchingAccounts[cacheKey] = entity;\r\n });\r\n return matchingAccounts;\r\n };\r\n /**\r\n * retrieve credentails matching all provided filters; if no filter is set, get all credentials\r\n * @param homeAccountId\r\n * @param environment\r\n * @param credentialType\r\n * @param clientId\r\n * @param realm\r\n * @param target\r\n */\r\n CacheManager.prototype.getCredentialsFilteredBy = function (filter) {\r\n return this.getCredentialsFilteredByInternal(filter.homeAccountId, filter.environment, filter.credentialType, filter.clientId, filter.familyId, filter.realm, filter.target, filter.oboAssertion, filter.tokenType, filter.keyId, filter.requestedClaimsHash);\r\n };\r\n /**\r\n * Support function to help match credentials\r\n * @param homeAccountId\r\n * @param environment\r\n * @param credentialType\r\n * @param clientId\r\n * @param realm\r\n * @param target\r\n * @param oboAssertion\r\n * @param tokenType\r\n */\r\n CacheManager.prototype.getCredentialsFilteredByInternal = function (homeAccountId, environment, credentialType, clientId, familyId, realm, target, oboAssertion, tokenType, keyId, requestedClaimsHash) {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n var matchingCredentials = {\r\n idTokens: {},\r\n accessTokens: {},\r\n refreshTokens: {},\r\n };\r\n allCacheKeys.forEach(function (cacheKey) {\r\n // don't parse any non-credential type cache entities\r\n var credType = CredentialEntity.getCredentialType(cacheKey);\r\n if (credType === Constants.NOT_DEFINED) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n var entity = _this.getSpecificCredential(cacheKey, credType);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!oboAssertion && !_this.matchOboAssertion(entity, oboAssertion)) {\r\n return;\r\n }\r\n if (!!homeAccountId && !_this.matchHomeAccountId(entity, homeAccountId)) {\r\n return;\r\n }\r\n if (!!environment && !_this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n if (!!realm && !_this.matchRealm(entity, realm)) {\r\n return;\r\n }\r\n if (!!credentialType && !_this.matchCredentialType(entity, credentialType)) {\r\n return;\r\n }\r\n if (!!clientId && !_this.matchClientId(entity, clientId)) {\r\n return;\r\n }\r\n if (!!familyId && !_this.matchFamilyId(entity, familyId)) {\r\n return;\r\n }\r\n /*\r\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\r\n * Resource specific refresh tokens case will be added when the support is deemed necessary\r\n */\r\n if (!!target && !_this.matchTarget(entity, target)) {\r\n return;\r\n }\r\n // If request OR cached entity has requested Claims Hash, check if they match\r\n if (requestedClaimsHash || entity.requestedClaimsHash) {\r\n // Don't match if either is undefined or they are different\r\n if (entity.requestedClaimsHash !== requestedClaimsHash) {\r\n return;\r\n }\r\n }\r\n // Access Token with Auth Scheme specific matching\r\n if (credentialType === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME) {\r\n if (!!tokenType && !_this.matchTokenType(entity, tokenType)) {\r\n return;\r\n }\r\n // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\r\n if (tokenType === AuthenticationScheme.SSH) {\r\n if (keyId && !_this.matchKeyId(entity, keyId)) {\r\n return;\r\n }\r\n }\r\n }\r\n // At this point, the entity matches the request, update cache key if key schema has changed\r\n var updatedCacheKey = _this.updateCredentialCacheKey(cacheKey, entity);\r\n switch (credType) {\r\n case CredentialType.ID_TOKEN:\r\n matchingCredentials.idTokens[updatedCacheKey] = entity;\r\n break;\r\n case CredentialType.ACCESS_TOKEN:\r\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\r\n matchingCredentials.accessTokens[updatedCacheKey] = entity;\r\n break;\r\n case CredentialType.REFRESH_TOKEN:\r\n matchingCredentials.refreshTokens[updatedCacheKey] = entity;\r\n break;\r\n }\r\n });\r\n return matchingCredentials;\r\n };\r\n /**\r\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\r\n * @param filter\r\n */\r\n CacheManager.prototype.getAppMetadataFilteredBy = function (filter) {\r\n return this.getAppMetadataFilteredByInternal(filter.environment, filter.clientId);\r\n };\r\n /**\r\n * Support function to help match appMetadata\r\n * @param environment\r\n * @param clientId\r\n */\r\n CacheManager.prototype.getAppMetadataFilteredByInternal = function (environment, clientId) {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n var matchingAppMetadata = {};\r\n allCacheKeys.forEach(function (cacheKey) {\r\n // don't parse any non-appMetadata type cache entities\r\n if (!_this.isAppMetadata(cacheKey)) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n var entity = _this.getAppMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (!!environment && !_this.matchEnvironment(entity, environment)) {\r\n return;\r\n }\r\n if (!!clientId && !_this.matchClientId(entity, clientId)) {\r\n return;\r\n }\r\n matchingAppMetadata[cacheKey] = entity;\r\n });\r\n return matchingAppMetadata;\r\n };\r\n /**\r\n * retrieve authorityMetadata that contains a matching alias\r\n * @param filter\r\n */\r\n CacheManager.prototype.getAuthorityMetadataByAlias = function (host) {\r\n var _this = this;\r\n var allCacheKeys = this.getAuthorityMetadataKeys();\r\n var matchedEntity = null;\r\n allCacheKeys.forEach(function (cacheKey) {\r\n // don't parse any non-authorityMetadata type cache entities\r\n if (!_this.isAuthorityMetadata(cacheKey) || cacheKey.indexOf(_this.clientId) === -1) {\r\n return;\r\n }\r\n // Attempt retrieval\r\n var entity = _this.getAuthorityMetadata(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n if (entity.aliases.indexOf(host) === -1) {\r\n return;\r\n }\r\n matchedEntity = entity;\r\n });\r\n return matchedEntity;\r\n };\r\n /**\r\n * Removes all accounts and related tokens from cache.\r\n */\r\n CacheManager.prototype.removeAllAccounts = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var allCacheKeys, removedAccounts;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n allCacheKeys = this.getKeys();\r\n removedAccounts = [];\r\n allCacheKeys.forEach(function (cacheKey) {\r\n var entity = _this.getAccount(cacheKey);\r\n if (!entity) {\r\n return;\r\n }\r\n removedAccounts.push(_this.removeAccount(cacheKey));\r\n });\r\n return [4 /*yield*/, Promise.all(removedAccounts)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, true];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * returns a boolean if the given account is removed\r\n * @param account\r\n */\r\n CacheManager.prototype.removeAccount = function (accountKey) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var account;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n account = this.getAccount(accountKey);\r\n if (!account) {\r\n throw ClientAuthError.createNoAccountFoundError();\r\n }\r\n return [4 /*yield*/, this.removeAccountContext(account)];\r\n case 1: return [2 /*return*/, ((_a.sent()) && this.removeItem(accountKey, CacheSchemaType.ACCOUNT))];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes credentials associated with the provided account\r\n * @param account\r\n */\r\n CacheManager.prototype.removeAccountContext = function (account) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var allCacheKeys, accountId, removedCredentials;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n allCacheKeys = this.getKeys();\r\n accountId = account.generateAccountId();\r\n removedCredentials = [];\r\n allCacheKeys.forEach(function (cacheKey) {\r\n // don't parse any non-credential type cache entities\r\n var credType = CredentialEntity.getCredentialType(cacheKey);\r\n if (credType === Constants.NOT_DEFINED) {\r\n return;\r\n }\r\n var cacheEntity = _this.getSpecificCredential(cacheKey, credType);\r\n if (!!cacheEntity && accountId === cacheEntity.generateAccountId()) {\r\n removedCredentials.push(_this.removeCredential(cacheEntity));\r\n }\r\n });\r\n return [4 /*yield*/, Promise.all(removedCredentials)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/, true];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * returns a boolean if the given credential is removed\r\n * @param credential\r\n */\r\n CacheManager.prototype.removeCredential = function (credential) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var key, accessTokenWithAuthSchemeEntity, kid;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n key = credential.generateCredentialKey();\r\n if (!(credential.credentialType.toLowerCase() === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase())) return [3 /*break*/, 4];\r\n if (!(credential.tokenType === AuthenticationScheme.POP)) return [3 /*break*/, 4];\r\n accessTokenWithAuthSchemeEntity = credential;\r\n kid = accessTokenWithAuthSchemeEntity.keyId;\r\n if (!kid) return [3 /*break*/, 4];\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.cryptoImpl.removeTokenBindingKey(kid)];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a.sent();\r\n throw ClientAuthError.createBindingKeyNotRemovedError();\r\n case 4: return [2 /*return*/, this.removeItem(key, CacheSchemaType.CREDENTIAL)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Removes all app metadata objects from cache.\r\n */\r\n CacheManager.prototype.removeAppMetadata = function () {\r\n var _this = this;\r\n var allCacheKeys = this.getKeys();\r\n allCacheKeys.forEach(function (cacheKey) {\r\n if (_this.isAppMetadata(cacheKey)) {\r\n _this.removeItem(cacheKey, CacheSchemaType.APP_METADATA);\r\n }\r\n });\r\n return true;\r\n };\r\n /**\r\n * Retrieve the cached credentials into a cacherecord\r\n * @param account\r\n * @param clientId\r\n * @param scopes\r\n * @param environment\r\n * @param authScheme\r\n */\r\n CacheManager.prototype.readCacheRecord = function (account, clientId, request, environment) {\r\n var cachedAccount = this.readAccountFromCache(account);\r\n var cachedIdToken = this.readIdTokenFromCache(clientId, account);\r\n var cachedAccessToken = this.readAccessTokenFromCache(clientId, account, request);\r\n var cachedRefreshToken = this.readRefreshTokenFromCache(clientId, account, false);\r\n var cachedAppMetadata = this.readAppMetadataFromCache(environment, clientId);\r\n if (cachedAccount && cachedIdToken) {\r\n cachedAccount.idTokenClaims = new AuthToken(cachedIdToken.secret, this.cryptoImpl).claims;\r\n }\r\n return {\r\n account: cachedAccount,\r\n idToken: cachedIdToken,\r\n accessToken: cachedAccessToken,\r\n refreshToken: cachedRefreshToken,\r\n appMetadata: cachedAppMetadata,\r\n };\r\n };\r\n /**\r\n * Retrieve AccountEntity from cache\r\n * @param account\r\n */\r\n CacheManager.prototype.readAccountFromCache = function (account) {\r\n var accountKey = AccountEntity.generateAccountCacheKey(account);\r\n return this.getAccount(accountKey);\r\n };\r\n /**\r\n * Retrieve IdTokenEntity from cache\r\n * @param clientId\r\n * @param account\r\n * @param inputRealm\r\n */\r\n CacheManager.prototype.readIdTokenFromCache = function (clientId, account) {\r\n var idTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.ID_TOKEN,\r\n clientId: clientId,\r\n realm: account.tenantId,\r\n };\r\n var credentialCache = this.getCredentialsFilteredBy(idTokenFilter);\r\n var idTokens = Object.keys(credentialCache.idTokens).map(function (key) { return credentialCache.idTokens[key]; });\r\n var numIdTokens = idTokens.length;\r\n if (numIdTokens < 1) {\r\n return null;\r\n }\r\n else if (numIdTokens > 1) {\r\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\r\n }\r\n return idTokens[0];\r\n };\r\n /**\r\n * Retrieve AccessTokenEntity from cache\r\n * @param clientId\r\n * @param account\r\n * @param scopes\r\n * @param authScheme\r\n */\r\n CacheManager.prototype.readAccessTokenFromCache = function (clientId, account, request) {\r\n var scopes = new ScopeSet(request.scopes || []);\r\n var authScheme = request.authenticationScheme || AuthenticationScheme.BEARER;\r\n /*\r\n * Distinguish between Bearer and PoP/SSH token cache types\r\n * Cast to lowercase to handle \"bearer\" from ADFS\r\n */\r\n var credentialType = (authScheme && authScheme.toLowerCase() !== AuthenticationScheme.BEARER.toLowerCase()) ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME : CredentialType.ACCESS_TOKEN;\r\n var accessTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: credentialType,\r\n clientId: clientId,\r\n realm: account.tenantId,\r\n target: scopes.printScopesLowerCase(),\r\n tokenType: authScheme,\r\n keyId: request.sshKid,\r\n requestedClaimsHash: request.requestedClaimsHash\r\n };\r\n var credentialCache = this.getCredentialsFilteredBy(accessTokenFilter);\r\n var accessTokens = Object.keys(credentialCache.accessTokens).map(function (key) { return credentialCache.accessTokens[key]; });\r\n var numAccessTokens = accessTokens.length;\r\n if (numAccessTokens < 1) {\r\n return null;\r\n }\r\n else if (numAccessTokens > 1) {\r\n throw ClientAuthError.createMultipleMatchingTokensInCacheError();\r\n }\r\n return accessTokens[0];\r\n };\r\n /**\r\n * Helper to retrieve the appropriate refresh token from cache\r\n * @param clientId\r\n * @param account\r\n * @param familyRT\r\n */\r\n CacheManager.prototype.readRefreshTokenFromCache = function (clientId, account, familyRT) {\r\n var id = familyRT ? THE_FAMILY_ID : undefined;\r\n var refreshTokenFilter = {\r\n homeAccountId: account.homeAccountId,\r\n environment: account.environment,\r\n credentialType: CredentialType.REFRESH_TOKEN,\r\n clientId: clientId,\r\n familyId: id\r\n };\r\n var credentialCache = this.getCredentialsFilteredBy(refreshTokenFilter);\r\n var refreshTokens = Object.keys(credentialCache.refreshTokens).map(function (key) { return credentialCache.refreshTokens[key]; });\r\n var numRefreshTokens = refreshTokens.length;\r\n if (numRefreshTokens < 1) {\r\n return null;\r\n }\r\n // address the else case after remove functions address environment aliases\r\n return refreshTokens[0];\r\n };\r\n /**\r\n * Retrieve AppMetadataEntity from cache\r\n */\r\n CacheManager.prototype.readAppMetadataFromCache = function (environment, clientId) {\r\n var appMetadataFilter = {\r\n environment: environment,\r\n clientId: clientId,\r\n };\r\n var appMetadata = this.getAppMetadataFilteredBy(appMetadataFilter);\r\n var appMetadataEntries = Object.keys(appMetadata).map(function (key) { return appMetadata[key]; });\r\n var numAppMetadata = appMetadataEntries.length;\r\n if (numAppMetadata < 1) {\r\n return null;\r\n }\r\n else if (numAppMetadata > 1) {\r\n throw ClientAuthError.createMultipleMatchingAppMetadataInCacheError();\r\n }\r\n return appMetadataEntries[0];\r\n };\r\n /**\r\n * Return the family_id value associated with FOCI\r\n * @param environment\r\n * @param clientId\r\n */\r\n CacheManager.prototype.isAppMetadataFOCI = function (environment, clientId) {\r\n var appMetadata = this.readAppMetadataFromCache(environment, clientId);\r\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\r\n };\r\n /**\r\n * helper to match account ids\r\n * @param value\r\n * @param homeAccountId\r\n */\r\n CacheManager.prototype.matchHomeAccountId = function (entity, homeAccountId) {\r\n return !!(entity.homeAccountId && homeAccountId === entity.homeAccountId);\r\n };\r\n /**\r\n * helper to match assertion\r\n * @param value\r\n * @param oboAssertion\r\n */\r\n CacheManager.prototype.matchOboAssertion = function (entity, oboAssertion) {\r\n return !!(entity.oboAssertion && oboAssertion === entity.oboAssertion);\r\n };\r\n /**\r\n * helper to match environment\r\n * @param value\r\n * @param environment\r\n */\r\n CacheManager.prototype.matchEnvironment = function (entity, environment) {\r\n var cloudMetadata = this.getAuthorityMetadataByAlias(environment);\r\n if (cloudMetadata && cloudMetadata.aliases.indexOf(entity.environment) > -1) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n /**\r\n * helper to match credential type\r\n * @param entity\r\n * @param credentialType\r\n */\r\n CacheManager.prototype.matchCredentialType = function (entity, credentialType) {\r\n return (entity.credentialType && credentialType.toLowerCase() === entity.credentialType.toLowerCase());\r\n };\r\n /**\r\n * helper to match client ids\r\n * @param entity\r\n * @param clientId\r\n */\r\n CacheManager.prototype.matchClientId = function (entity, clientId) {\r\n return !!(entity.clientId && clientId === entity.clientId);\r\n };\r\n /**\r\n * helper to match family ids\r\n * @param entity\r\n * @param familyId\r\n */\r\n CacheManager.prototype.matchFamilyId = function (entity, familyId) {\r\n return !!(entity.familyId && familyId === entity.familyId);\r\n };\r\n /**\r\n * helper to match realm\r\n * @param entity\r\n * @param realm\r\n */\r\n CacheManager.prototype.matchRealm = function (entity, realm) {\r\n return !!(entity.realm && realm === entity.realm);\r\n };\r\n /**\r\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\r\n * @param entity\r\n * @param target\r\n */\r\n CacheManager.prototype.matchTarget = function (entity, target) {\r\n var isNotAccessTokenCredential = (entity.credentialType !== CredentialType.ACCESS_TOKEN && entity.credentialType !== CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME);\r\n if (isNotAccessTokenCredential || !entity.target) {\r\n return false;\r\n }\r\n var entityScopeSet = ScopeSet.fromString(entity.target);\r\n var requestTargetScopeSet = ScopeSet.fromString(target);\r\n if (!requestTargetScopeSet.containsOnlyOIDCScopes()) {\r\n requestTargetScopeSet.removeOIDCScopes(); // ignore OIDC scopes\r\n }\r\n else {\r\n requestTargetScopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\r\n }\r\n return entityScopeSet.containsScopeSet(requestTargetScopeSet);\r\n };\r\n /**\r\n * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\r\n * @param entity\r\n * @param tokenType\r\n */\r\n CacheManager.prototype.matchTokenType = function (entity, tokenType) {\r\n return !!(entity.tokenType && entity.tokenType === tokenType);\r\n };\r\n /**\r\n * Returns true if the credential's keyId matches the one in the request, false otherwise\r\n * @param entity\r\n * @param tokenType\r\n */\r\n CacheManager.prototype.matchKeyId = function (entity, keyId) {\r\n return !!(entity.keyId && entity.keyId === keyId);\r\n };\r\n /**\r\n * returns if a given cache entity is of the type appmetadata\r\n * @param key\r\n */\r\n CacheManager.prototype.isAppMetadata = function (key) {\r\n return key.indexOf(APP_METADATA) !== -1;\r\n };\r\n /**\r\n * returns if a given cache entity is of the type authoritymetadata\r\n * @param key\r\n */\r\n CacheManager.prototype.isAuthorityMetadata = function (key) {\r\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\r\n };\r\n /**\r\n * returns cache key used for cloud instance metadata\r\n */\r\n CacheManager.prototype.generateAuthorityMetadataCacheKey = function (authority) {\r\n return AUTHORITY_METADATA_CONSTANTS.CACHE_KEY + \"-\" + this.clientId + \"-\" + authority;\r\n };\r\n /**\r\n * Returns the specific credential (IdToken/AccessToken/RefreshToken) from the cache\r\n * @param key\r\n * @param credType\r\n */\r\n CacheManager.prototype.getSpecificCredential = function (key, credType) {\r\n switch (credType) {\r\n case CredentialType.ID_TOKEN: {\r\n return this.getIdTokenCredential(key);\r\n }\r\n case CredentialType.ACCESS_TOKEN:\r\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME: {\r\n return this.getAccessTokenCredential(key);\r\n }\r\n case CredentialType.REFRESH_TOKEN: {\r\n return this.getRefreshTokenCredential(key);\r\n }\r\n default:\r\n return null;\r\n }\r\n };\r\n /**\r\n * Helper to convert serialized data to object\r\n * @param obj\r\n * @param json\r\n */\r\n CacheManager.toObject = function (obj, json) {\r\n for (var propertyName in json) {\r\n obj[propertyName] = json[propertyName];\r\n }\r\n return obj;\r\n };\r\n return CacheManager;\r\n}());\r\nvar DefaultStorageClass = /** @class */ (function (_super) {\r\n __extends(DefaultStorageClass, _super);\r\n function DefaultStorageClass() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n DefaultStorageClass.prototype.setAccount = function () {\r\n var notImplErr = \"Storage interface - setAccount() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAccount = function () {\r\n var notImplErr = \"Storage interface - getAccount() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setIdTokenCredential = function () {\r\n var notImplErr = \"Storage interface - setIdTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getIdTokenCredential = function () {\r\n var notImplErr = \"Storage interface - getIdTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setAccessTokenCredential = function () {\r\n var notImplErr = \"Storage interface - setAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAccessTokenCredential = function () {\r\n var notImplErr = \"Storage interface - getAccessTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setRefreshTokenCredential = function () {\r\n var notImplErr = \"Storage interface - setRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getRefreshTokenCredential = function () {\r\n var notImplErr = \"Storage interface - getRefreshTokenCredential() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setAppMetadata = function () {\r\n var notImplErr = \"Storage interface - setAppMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAppMetadata = function () {\r\n var notImplErr = \"Storage interface - getAppMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setServerTelemetry = function () {\r\n var notImplErr = \"Storage interface - setServerTelemetry() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getServerTelemetry = function () {\r\n var notImplErr = \"Storage interface - getServerTelemetry() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setAuthorityMetadata = function () {\r\n var notImplErr = \"Storage interface - setAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAuthorityMetadata = function () {\r\n var notImplErr = \"Storage interface - getAuthorityMetadata() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getAuthorityMetadataKeys = function () {\r\n var notImplErr = \"Storage interface - getAuthorityMetadataKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.setThrottlingCache = function () {\r\n var notImplErr = \"Storage interface - setThrottlingCache() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getThrottlingCache = function () {\r\n var notImplErr = \"Storage interface - getThrottlingCache() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.removeItem = function () {\r\n var notImplErr = \"Storage interface - removeItem() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.containsKey = function () {\r\n var notImplErr = \"Storage interface - containsKey() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.getKeys = function () {\r\n var notImplErr = \"Storage interface - getKeys() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n DefaultStorageClass.prototype.clear = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Storage interface - clear() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n };\r\n DefaultStorageClass.prototype.updateCredentialCacheKey = function () {\r\n var notImplErr = \"Storage interface - updateCredentialCacheKey() has not been implemented for the cacheStorage interface.\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n };\r\n return DefaultStorageClass;\r\n}(CacheManager));\n\nexport { CacheManager, DefaultStorageClass };\n//# sourceMappingURL=CacheManager.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __extends } from '../../_virtual/_tslib.js';\nimport { CredentialEntity } from './CredentialEntity.js';\nimport { CredentialType } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ID_TOKEN Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-idtoken-clientId-contoso.com-\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * }\r\n */\r\nvar IdTokenEntity = /** @class */ (function (_super) {\r\n __extends(IdTokenEntity, _super);\r\n function IdTokenEntity() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Create IdTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\n IdTokenEntity.createIdTokenEntity = function (homeAccountId, environment, idToken, clientId, tenantId, oboAssertion) {\r\n var idTokenEntity = new IdTokenEntity();\r\n idTokenEntity.credentialType = CredentialType.ID_TOKEN;\r\n idTokenEntity.homeAccountId = homeAccountId;\r\n idTokenEntity.environment = environment;\r\n idTokenEntity.clientId = clientId;\r\n idTokenEntity.secret = idToken;\r\n idTokenEntity.realm = tenantId;\r\n idTokenEntity.oboAssertion = oboAssertion;\r\n return idTokenEntity;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n IdTokenEntity.isIdTokenEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity[\"credentialType\"] === CredentialType.ID_TOKEN);\r\n };\r\n return IdTokenEntity;\r\n}(CredentialEntity));\n\nexport { IdTokenEntity };\n//# sourceMappingURL=IdTokenEntity.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility class which exposes functions for managing date and time operations.\r\n */\r\nvar TimeUtils = /** @class */ (function () {\r\n function TimeUtils() {\r\n }\r\n /**\r\n * return the current time in Unix time (seconds).\r\n */\r\n TimeUtils.nowSeconds = function () {\r\n // Date.getTime() returns in milliseconds.\r\n return Math.round(new Date().getTime() / 1000.0);\r\n };\r\n /**\r\n * check if a token is expired based on given UTC time in seconds.\r\n * @param expiresOn\r\n */\r\n TimeUtils.isTokenExpired = function (expiresOn, offset) {\r\n // check for access token expiry\r\n var expirationSec = Number(expiresOn) || 0;\r\n var offsetCurrentTimeSec = TimeUtils.nowSeconds() + offset;\r\n // If current time + offset is greater than token expiration time, then token is expired.\r\n return (offsetCurrentTimeSec > expirationSec);\r\n };\r\n /**\r\n * If the current time is earlier than the time that a token was cached at, we must discard the token\r\n * i.e. The system clock was turned back after acquiring the cached token\r\n * @param cachedAt\r\n * @param offset\r\n */\r\n TimeUtils.wasClockTurnedBack = function (cachedAt) {\r\n var cachedAtSec = Number(cachedAt);\r\n return cachedAtSec > TimeUtils.nowSeconds();\r\n };\r\n /**\r\n * Waits for t number of milliseconds\r\n * @param t number\r\n * @param value T\r\n */\r\n TimeUtils.delay = function (t, value) {\r\n return new Promise(function (resolve) { return setTimeout(function () { return resolve(value); }, t); });\r\n };\r\n return TimeUtils;\r\n}());\n\nexport { TimeUtils };\n//# sourceMappingURL=TimeUtils.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __extends } from '../../_virtual/_tslib.js';\nimport { CredentialEntity } from './CredentialEntity.js';\nimport { CredentialType, AuthenticationScheme } from '../../utils/Constants.js';\nimport { TimeUtils } from '../../utils/TimeUtils.js';\nimport { StringUtils } from '../../utils/StringUtils.js';\nimport { AuthToken } from '../../account/AuthToken.js';\nimport { ClientAuthError } from '../../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * ACCESS_TOKEN Credential Type\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-accesstoken-clientId-contoso.com-user.read\r\n *\r\n * Value Schema:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, usually only used for refresh tokens\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * cachedAt: Absolute device time when entry was created in the cache.\r\n * expiresOn: Token expiry time, calculated based on current UTC time in seconds. Represented as a string.\r\n * extendedExpiresOn: Additional extended expiry time until when token is valid in case of server-side outage. Represented as string in UTC seconds.\r\n * keyId: used for POP and SSH tokenTypes\r\n * tokenType: Type of the token issued. Usually \"Bearer\"\r\n * }\r\n */\r\nvar AccessTokenEntity = /** @class */ (function (_super) {\r\n __extends(AccessTokenEntity, _super);\r\n function AccessTokenEntity() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Create AccessTokenEntity\r\n * @param homeAccountId\r\n * @param environment\r\n * @param accessToken\r\n * @param clientId\r\n * @param tenantId\r\n * @param scopes\r\n * @param expiresOn\r\n * @param extExpiresOn\r\n */\r\n AccessTokenEntity.createAccessTokenEntity = function (homeAccountId, environment, accessToken, clientId, tenantId, scopes, expiresOn, extExpiresOn, cryptoUtils, refreshOn, tokenType, oboAssertion, keyId, requestedClaims, requestedClaimsHash) {\r\n var _a, _b;\r\n var atEntity = new AccessTokenEntity();\r\n atEntity.homeAccountId = homeAccountId;\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN;\r\n atEntity.secret = accessToken;\r\n var currentTime = TimeUtils.nowSeconds();\r\n atEntity.cachedAt = currentTime.toString();\r\n /*\r\n * Token expiry time.\r\n * This value should be  calculated based on the current UTC time measured locally and the value  expires_in Represented as a string in JSON.\r\n */\r\n atEntity.expiresOn = expiresOn.toString();\r\n atEntity.extendedExpiresOn = extExpiresOn.toString();\r\n if (refreshOn) {\r\n atEntity.refreshOn = refreshOn.toString();\r\n }\r\n atEntity.environment = environment;\r\n atEntity.clientId = clientId;\r\n atEntity.realm = tenantId;\r\n atEntity.target = scopes;\r\n atEntity.oboAssertion = oboAssertion;\r\n atEntity.tokenType = StringUtils.isEmpty(tokenType) ? AuthenticationScheme.BEARER : tokenType;\r\n if (requestedClaims) {\r\n atEntity.requestedClaims = requestedClaims;\r\n atEntity.requestedClaimsHash = requestedClaimsHash;\r\n }\r\n /*\r\n * Create Access Token With Auth Scheme instead of regular access token\r\n * Cast to lower to handle \"bearer\" from ADFS\r\n */\r\n if (((_a = atEntity.tokenType) === null || _a === void 0 ? void 0 : _a.toLowerCase()) !== AuthenticationScheme.BEARER.toLowerCase()) {\r\n atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\r\n switch (atEntity.tokenType) {\r\n case AuthenticationScheme.POP:\r\n // Make sure keyId is present and add it to credential\r\n var tokenClaims = AuthToken.extractTokenClaims(accessToken, cryptoUtils);\r\n if (!((_b = tokenClaims === null || tokenClaims === void 0 ? void 0 : tokenClaims.cnf) === null || _b === void 0 ? void 0 : _b.kid)) {\r\n throw ClientAuthError.createTokenClaimsRequiredError();\r\n }\r\n atEntity.keyId = tokenClaims.cnf.kid;\r\n break;\r\n case AuthenticationScheme.SSH:\r\n atEntity.keyId = keyId;\r\n }\r\n }\r\n return atEntity;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AccessTokenEntity.isAccessTokenEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"realm\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity.hasOwnProperty(\"target\") &&\r\n (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN || entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME));\r\n };\r\n return AccessTokenEntity;\r\n}(CredentialEntity));\n\nexport { AccessTokenEntity };\n//# sourceMappingURL=AccessTokenEntity.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __extends } from '../../_virtual/_tslib.js';\nimport { CredentialEntity } from './CredentialEntity.js';\nimport { CredentialType } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * REFRESH_TOKEN Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key Example: uid.utid-login.microsoftonline.com-refreshtoken-clientId--\r\n *\r\n * Value:\r\n * {\r\n * homeAccountId: home account identifier for the auth scheme,\r\n * environment: entity that issued the token, represented as a full host\r\n * credentialType: Type of credential as a string, can be one of the following: RefreshToken, AccessToken, IdToken, Password, Cookie, Certificate, Other\r\n * clientId: client ID of the application\r\n * secret: Actual credential as a string\r\n * familyId: Family ID identifier, '1' represents Microsoft Family\r\n * realm: Full tenant or organizational identifier that the account belongs to\r\n * target: Permissions that are included in the token, or for refresh tokens, the resource identifier.\r\n * }\r\n */\r\nvar RefreshTokenEntity = /** @class */ (function (_super) {\r\n __extends(RefreshTokenEntity, _super);\r\n function RefreshTokenEntity() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Create RefreshTokenEntity\r\n * @param homeAccountId\r\n * @param authenticationResult\r\n * @param clientId\r\n * @param authority\r\n */\r\n RefreshTokenEntity.createRefreshTokenEntity = function (homeAccountId, environment, refreshToken, clientId, familyId, oboAssertion) {\r\n var rtEntity = new RefreshTokenEntity();\r\n rtEntity.clientId = clientId;\r\n rtEntity.credentialType = CredentialType.REFRESH_TOKEN;\r\n rtEntity.environment = environment;\r\n rtEntity.homeAccountId = homeAccountId;\r\n rtEntity.secret = refreshToken;\r\n rtEntity.oboAssertion = oboAssertion;\r\n if (familyId)\r\n rtEntity.familyId = familyId;\r\n return rtEntity;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n RefreshTokenEntity.isRefreshTokenEntity = function (entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (entity.hasOwnProperty(\"homeAccountId\") &&\r\n entity.hasOwnProperty(\"environment\") &&\r\n entity.hasOwnProperty(\"credentialType\") &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"secret\") &&\r\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN);\r\n };\r\n return RefreshTokenEntity;\r\n}(CredentialEntity));\n\nexport { RefreshTokenEntity };\n//# sourceMappingURL=RefreshTokenEntity.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { Separators, APP_METADATA } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * APP_METADATA Cache\r\n *\r\n * Key:Value Schema:\r\n *\r\n * Key: appmetadata-<environment>-<client_id>\r\n *\r\n * Value:\r\n * {\r\n * clientId: client ID of the application\r\n * environment: entity that issued the token, represented as a full host\r\n * familyId: Family ID identifier, '1' represents Microsoft Family\r\n * }\r\n */\r\nvar AppMetadataEntity = /** @class */ (function () {\r\n function AppMetadataEntity() {\r\n }\r\n /**\r\n * Generate AppMetadata Cache Key as per the schema: appmetadata-<environment>-<client_id>\r\n */\r\n AppMetadataEntity.prototype.generateAppMetadataKey = function () {\r\n return AppMetadataEntity.generateAppMetadataCacheKey(this.environment, this.clientId);\r\n };\r\n /**\r\n * Generate AppMetadata Cache Key\r\n */\r\n AppMetadataEntity.generateAppMetadataCacheKey = function (environment, clientId) {\r\n var appMetaDataKeyArray = [\r\n APP_METADATA,\r\n environment,\r\n clientId,\r\n ];\r\n return appMetaDataKeyArray.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\r\n };\r\n /**\r\n * Creates AppMetadataEntity\r\n * @param clientId\r\n * @param environment\r\n * @param familyId\r\n */\r\n AppMetadataEntity.createAppMetadataEntity = function (clientId, environment, familyId) {\r\n var appMetadata = new AppMetadataEntity();\r\n appMetadata.clientId = clientId;\r\n appMetadata.environment = environment;\r\n if (familyId) {\r\n appMetadata.familyId = familyId;\r\n }\r\n return appMetadata;\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AppMetadataEntity.isAppMetadataEntity = function (key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(APP_METADATA) === 0 &&\r\n entity.hasOwnProperty(\"clientId\") &&\r\n entity.hasOwnProperty(\"environment\"));\r\n };\r\n return AppMetadataEntity;\r\n}());\n\nexport { AppMetadataEntity };\n//# sourceMappingURL=AppMetadataEntity.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { SERVER_TELEM_CONSTANTS } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ServerTelemetryEntity = /** @class */ (function () {\r\n function ServerTelemetryEntity() {\r\n this.failedRequests = [];\r\n this.errors = [];\r\n this.cacheHits = 0;\r\n }\r\n /**\r\n * validates if a given cache entry is \"Telemetry\", parses <key,value>\r\n * @param key\r\n * @param entity\r\n */\r\n ServerTelemetryEntity.isServerTelemetryEntity = function (key, entity) {\r\n var validateKey = key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\r\n var validateEntity = true;\r\n if (entity) {\r\n validateEntity =\r\n entity.hasOwnProperty(\"failedRequests\") &&\r\n entity.hasOwnProperty(\"errors\") &&\r\n entity.hasOwnProperty(\"cacheHits\");\r\n }\r\n return validateKey && validateEntity;\r\n };\r\n return ServerTelemetryEntity;\r\n}());\n\nexport { ServerTelemetryEntity };\n//# sourceMappingURL=ServerTelemetryEntity.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { AUTHORITY_METADATA_CONSTANTS } from '../../utils/Constants.js';\nimport { TimeUtils } from '../../utils/TimeUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar AuthorityMetadataEntity = /** @class */ (function () {\r\n function AuthorityMetadataEntity() {\r\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\r\n }\r\n /**\r\n * Update the entity with new aliases, preferred_cache and preferred_network values\r\n * @param metadata\r\n * @param fromNetwork\r\n */\r\n AuthorityMetadataEntity.prototype.updateCloudDiscoveryMetadata = function (metadata, fromNetwork) {\r\n this.aliases = metadata.aliases;\r\n this.preferred_cache = metadata.preferred_cache;\r\n this.preferred_network = metadata.preferred_network;\r\n this.aliasesFromNetwork = fromNetwork;\r\n };\r\n /**\r\n * Update the entity with new endpoints\r\n * @param metadata\r\n * @param fromNetwork\r\n */\r\n AuthorityMetadataEntity.prototype.updateEndpointMetadata = function (metadata, fromNetwork) {\r\n this.authorization_endpoint = metadata.authorization_endpoint;\r\n this.token_endpoint = metadata.token_endpoint;\r\n this.end_session_endpoint = metadata.end_session_endpoint;\r\n this.issuer = metadata.issuer;\r\n this.endpointsFromNetwork = fromNetwork;\r\n };\r\n /**\r\n * Save the authority that was used to create this cache entry\r\n * @param authority\r\n */\r\n AuthorityMetadataEntity.prototype.updateCanonicalAuthority = function (authority) {\r\n this.canonical_authority = authority;\r\n };\r\n /**\r\n * Reset the exiresAt value\r\n */\r\n AuthorityMetadataEntity.prototype.resetExpiresAt = function () {\r\n this.expiresAt = TimeUtils.nowSeconds() + AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS;\r\n };\r\n /**\r\n * Returns whether or not the data needs to be refreshed\r\n */\r\n AuthorityMetadataEntity.prototype.isExpired = function () {\r\n return this.expiresAt <= TimeUtils.nowSeconds();\r\n };\r\n /**\r\n * Validates an entity: checks for all expected params\r\n * @param entity\r\n */\r\n AuthorityMetadataEntity.isAuthorityMetadataEntity = function (key, entity) {\r\n if (!entity) {\r\n return false;\r\n }\r\n return (key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\r\n entity.hasOwnProperty(\"aliases\") &&\r\n entity.hasOwnProperty(\"preferred_cache\") &&\r\n entity.hasOwnProperty(\"preferred_network\") &&\r\n entity.hasOwnProperty(\"canonical_authority\") &&\r\n entity.hasOwnProperty(\"authorization_endpoint\") &&\r\n entity.hasOwnProperty(\"token_endpoint\") &&\r\n entity.hasOwnProperty(\"issuer\") &&\r\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\r\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\r\n entity.hasOwnProperty(\"expiresAt\"));\r\n };\r\n return AuthorityMetadataEntity;\r\n}());\n\nexport { AuthorityMetadataEntity };\n//# sourceMappingURL=AuthorityMetadataEntity.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { ThrottlingConstants } from '../../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ThrottlingEntity = /** @class */ (function () {\r\n function ThrottlingEntity() {\r\n }\r\n /**\r\n * validates if a given cache entry is \"Throttling\", parses <key,value>\r\n * @param key\r\n * @param entity\r\n */\r\n ThrottlingEntity.isThrottlingEntity = function (key, entity) {\r\n var validateKey = false;\r\n if (key) {\r\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\r\n }\r\n var validateEntity = true;\r\n if (entity) {\r\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\r\n }\r\n return validateKey && validateEntity;\r\n };\r\n return ThrottlingEntity;\r\n}());\n\nexport { ThrottlingEntity };\n//# sourceMappingURL=ThrottlingEntity.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { StringUtils } from './StringUtils.js';\nimport { Constants } from './Constants.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class which provides helpers for OAuth 2.0 protocol specific values\r\n */\r\nvar ProtocolUtils = /** @class */ (function () {\r\n function ProtocolUtils() {\r\n }\r\n /**\r\n * Appends user state with random guid, or returns random guid.\r\n * @param userState\r\n * @param randomGuid\r\n */\r\n ProtocolUtils.setRequestState = function (cryptoObj, userState, meta) {\r\n var libraryState = ProtocolUtils.generateLibraryState(cryptoObj, meta);\r\n return !StringUtils.isEmpty(userState) ? \"\" + libraryState + Constants.RESOURCE_DELIM + userState : libraryState;\r\n };\r\n /**\r\n * Generates the state value used by the common library.\r\n * @param randomGuid\r\n * @param cryptoObj\r\n */\r\n ProtocolUtils.generateLibraryState = function (cryptoObj, meta) {\r\n if (!cryptoObj) {\r\n throw ClientAuthError.createNoCryptoObjectError(\"generateLibraryState\");\r\n }\r\n // Create a state object containing a unique id and the timestamp of the request creation\r\n var stateObj = {\r\n id: cryptoObj.createNewGuid()\r\n };\r\n if (meta) {\r\n stateObj.meta = meta;\r\n }\r\n var stateString = JSON.stringify(stateObj);\r\n return cryptoObj.base64Encode(stateString);\r\n };\r\n /**\r\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\r\n * @param state\r\n * @param cryptoObj\r\n */\r\n ProtocolUtils.parseRequestState = function (cryptoObj, state) {\r\n if (!cryptoObj) {\r\n throw ClientAuthError.createNoCryptoObjectError(\"parseRequestState\");\r\n }\r\n if (StringUtils.isEmpty(state)) {\r\n throw ClientAuthError.createInvalidStateError(state, \"Null, undefined or empty state\");\r\n }\r\n try {\r\n // Split the state between library state and user passed state and decode them separately\r\n var splitState = state.split(Constants.RESOURCE_DELIM);\r\n var libraryState = splitState[0];\r\n var userState = splitState.length > 1 ? splitState.slice(1).join(Constants.RESOURCE_DELIM) : Constants.EMPTY_STRING;\r\n var libraryStateString = cryptoObj.base64Decode(libraryState);\r\n var libraryStateObj = JSON.parse(libraryStateString);\r\n return {\r\n userRequestState: !StringUtils.isEmpty(userState) ? userState : Constants.EMPTY_STRING,\r\n libraryState: libraryStateObj\r\n };\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createInvalidStateError(state, e);\r\n }\r\n };\r\n return ProtocolUtils;\r\n}());\n\nexport { ProtocolUtils };\n//# sourceMappingURL=ProtocolUtils.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthError } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\r\n */\r\nvar BrowserConfigurationAuthErrorMessage = {\r\n redirectUriNotSet: {\r\n code: \"redirect_uri_empty\",\r\n desc: \"A redirect URI is required for all calls, and none has been set.\"\r\n },\r\n postLogoutUriNotSet: {\r\n code: \"post_logout_uri_empty\",\r\n desc: \"A post logout redirect has not been set.\"\r\n },\r\n storageNotSupportedError: {\r\n code: \"storage_not_supported\",\r\n desc: \"Given storage configuration option was not supported.\"\r\n },\r\n noRedirectCallbacksSet: {\r\n code: \"no_redirect_callbacks\",\r\n desc: \"No redirect callbacks have been set. Please call setRedirectCallbacks() with the appropriate function arguments before continuing. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n invalidCallbackObject: {\r\n code: \"invalid_callback_object\",\r\n desc: \"The object passed for the callback was invalid. \" +\r\n \"More information is available here: https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL-basics.\"\r\n },\r\n stubPcaInstanceCalled: {\r\n code: \"stubbed_public_client_application_called\",\r\n desc: \"Stub instance of Public Client Application was called. If using msal-react, please ensure context is not used without a provider. For more visit: aka.ms/msaljs/browser-errors\"\r\n },\r\n inMemRedirectUnavailable: {\r\n code: \"in_mem_redirect_unavailable\",\r\n desc: \"Redirect cannot be supported. In-memory storage was selected and storeAuthStateInCookie=false, which would cause the library to be unable to handle the incoming hash. If you would like to use the redirect API, please use session/localStorage or set storeAuthStateInCookie=true.\"\r\n }\r\n};\r\n/**\r\n * Browser library error class thrown by the MSAL.js library for SPAs\r\n */\r\nvar BrowserConfigurationAuthError = /** @class */ (function (_super) {\r\n __extends(BrowserConfigurationAuthError, _super);\r\n function BrowserConfigurationAuthError(errorCode, errorMessage) {\r\n var _this = _super.call(this, errorCode, errorMessage) || this;\r\n _this.name = \"BrowserConfigurationAuthError\";\r\n Object.setPrototypeOf(_this, BrowserConfigurationAuthError.prototype);\r\n return _this;\r\n }\r\n /**\r\n * Creates an error thrown when the redirect uri is empty (not set by caller)\r\n */\r\n BrowserConfigurationAuthError.createRedirectUriEmptyError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.redirectUriNotSet.code, BrowserConfigurationAuthErrorMessage.redirectUriNotSet.desc);\r\n };\r\n /**\r\n * Creates an error thrown when the post-logout redirect uri is empty (not set by caller)\r\n */\r\n BrowserConfigurationAuthError.createPostLogoutRedirectUriEmptyError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.code, BrowserConfigurationAuthErrorMessage.postLogoutUriNotSet.desc);\r\n };\r\n /**\r\n * Creates error thrown when given storage location is not supported.\r\n * @param givenStorageLocation\r\n */\r\n BrowserConfigurationAuthError.createStorageNotSupportedError = function (givenStorageLocation) {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.storageNotSupportedError.code, BrowserConfigurationAuthErrorMessage.storageNotSupportedError.desc + \" Given Location: \" + givenStorageLocation);\r\n };\r\n /**\r\n * Creates error thrown when redirect callbacks are not set before calling loginRedirect() or acquireTokenRedirect().\r\n */\r\n BrowserConfigurationAuthError.createRedirectCallbacksNotSetError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.code, BrowserConfigurationAuthErrorMessage.noRedirectCallbacksSet.desc);\r\n };\r\n /**\r\n * Creates error thrown when the stub instance of PublicClientApplication is called.\r\n */\r\n BrowserConfigurationAuthError.createStubPcaInstanceCalledError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.code, BrowserConfigurationAuthErrorMessage.stubPcaInstanceCalled.desc);\r\n };\r\n /*\r\n * Create an error thrown when in-memory storage is used and storeAuthStateInCookie=false.\r\n */\r\n BrowserConfigurationAuthError.createInMemoryRedirectUnavailableError = function () {\r\n return new BrowserConfigurationAuthError(BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.code, BrowserConfigurationAuthErrorMessage.inMemRedirectUnavailable.desc);\r\n };\r\n return BrowserConfigurationAuthError;\r\n}(AuthError));\n\nexport { BrowserConfigurationAuthError, BrowserConfigurationAuthErrorMessage };\n//# sourceMappingURL=BrowserConfigurationAuthError.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Protocol modes supported by MSAL.\r\n */\r\nvar ProtocolMode;\r\n(function (ProtocolMode) {\r\n ProtocolMode[\"AAD\"] = \"AAD\";\r\n ProtocolMode[\"OIDC\"] = \"OIDC\";\r\n})(ProtocolMode || (ProtocolMode = {}));\n\nexport { ProtocolMode };\n//# sourceMappingURL=ProtocolMode.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar AzureCloudInstance;\r\n(function (AzureCloudInstance) {\r\n // AzureCloudInstance is not specified.\r\n AzureCloudInstance[AzureCloudInstance[\"None\"] = 0] = \"None\";\r\n // Microsoft Azure public cloud\r\n AzureCloudInstance[\"AzurePublic\"] = \"https://login.microsoftonline.com\";\r\n // Microsoft PPE\r\n AzureCloudInstance[\"AzurePpe\"] = \"https://login.windows-ppe.net\";\r\n // Microsoft Chinese national cloud\r\n AzureCloudInstance[\"AzureChina\"] = \"https://login.chinacloudapi.cn\";\r\n // Microsoft German national cloud (\"Black Forest\")\r\n AzureCloudInstance[\"AzureGermany\"] = \"https://login.microsoftonline.de\";\r\n // US Government cloud\r\n AzureCloudInstance[\"AzureUsGovernment\"] = \"https://login.microsoftonline.us\";\r\n})(AzureCloudInstance || (AzureCloudInstance = {}));\n\nexport { AzureCloudInstance };\n//# sourceMappingURL=AuthorityOptions.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { BrowserConfigurationAuthError } from '../error/BrowserConfigurationAuthError.js';\nimport { BrowserCacheLocation } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BrowserStorage = /** @class */ (function () {\r\n function BrowserStorage(cacheLocation) {\r\n this.validateWindowStorage(cacheLocation);\r\n this.windowStorage = window[cacheLocation];\r\n }\r\n BrowserStorage.prototype.validateWindowStorage = function (cacheLocation) {\r\n if (cacheLocation !== BrowserCacheLocation.LocalStorage && cacheLocation !== BrowserCacheLocation.SessionStorage) {\r\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\r\n }\r\n var storageSupported = !!window[cacheLocation];\r\n if (!storageSupported) {\r\n throw BrowserConfigurationAuthError.createStorageNotSupportedError(cacheLocation);\r\n }\r\n };\r\n BrowserStorage.prototype.getItem = function (key) {\r\n return this.windowStorage.getItem(key);\r\n };\r\n BrowserStorage.prototype.setItem = function (key, value) {\r\n this.windowStorage.setItem(key, value);\r\n };\r\n BrowserStorage.prototype.removeItem = function (key) {\r\n this.windowStorage.removeItem(key);\r\n };\r\n BrowserStorage.prototype.getKeys = function () {\r\n return Object.keys(this.windowStorage);\r\n };\r\n BrowserStorage.prototype.containsKey = function (key) {\r\n return this.windowStorage.hasOwnProperty(key);\r\n };\r\n return BrowserStorage;\r\n}());\n\nexport { BrowserStorage };\n//# sourceMappingURL=BrowserStorage.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { AADAuthorityConstants, Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Url object class which can perform various transformations on url strings.\r\n */\r\nvar UrlString = /** @class */ (function () {\r\n function UrlString(url) {\r\n this._urlString = url;\r\n if (StringUtils.isEmpty(this._urlString)) {\r\n // Throws error if url is empty\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n if (StringUtils.isEmpty(this.getHash())) {\r\n this._urlString = UrlString.canonicalizeUri(url);\r\n }\r\n }\r\n Object.defineProperty(UrlString.prototype, \"urlString\", {\r\n get: function () {\r\n return this._urlString;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Ensure urls are lower case and end with a / character.\r\n * @param url\r\n */\r\n UrlString.canonicalizeUri = function (url) {\r\n if (url) {\r\n var lowerCaseUrl = url.toLowerCase();\r\n if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -1);\r\n }\r\n else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\r\n lowerCaseUrl = lowerCaseUrl.slice(0, -2);\r\n }\r\n if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\r\n lowerCaseUrl += \"/\";\r\n }\r\n return lowerCaseUrl;\r\n }\r\n return url;\r\n };\r\n /**\r\n * Throws if urlString passed is not a valid authority URI string.\r\n */\r\n UrlString.prototype.validateAsUri = function () {\r\n // Attempts to parse url for uri components\r\n var components;\r\n try {\r\n components = this.getUrlComponents();\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createUrlParseError(e);\r\n }\r\n // Throw error if URI or path segments are not parseable.\r\n if (!components.HostNameAndPort || !components.PathSegments) {\r\n throw ClientConfigurationError.createUrlParseError(\"Given url string: \" + this.urlString);\r\n }\r\n // Throw error if uri is insecure.\r\n if (!components.Protocol || components.Protocol.toLowerCase() !== \"https:\") {\r\n throw ClientConfigurationError.createInsecureAuthorityUriError(this.urlString);\r\n }\r\n };\r\n /**\r\n * Given a url and a query string return the url with provided query string appended\r\n * @param url\r\n * @param queryString\r\n */\r\n UrlString.appendQueryString = function (url, queryString) {\r\n if (StringUtils.isEmpty(queryString)) {\r\n return url;\r\n }\r\n return url.indexOf(\"?\") < 0 ? url + \"?\" + queryString : url + \"&\" + queryString;\r\n };\r\n /**\r\n * Returns a url with the hash removed\r\n * @param url\r\n */\r\n UrlString.removeHashFromUrl = function (url) {\r\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\r\n };\r\n /**\r\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\r\n * @param href The url\r\n * @param tenantId The tenant id to replace\r\n */\r\n UrlString.prototype.replaceTenantPath = function (tenantId) {\r\n var urlObject = this.getUrlComponents();\r\n var pathArray = urlObject.PathSegments;\r\n if (tenantId && (pathArray.length !== 0 && (pathArray[0] === AADAuthorityConstants.COMMON || pathArray[0] === AADAuthorityConstants.ORGANIZATIONS))) {\r\n pathArray[0] = tenantId;\r\n }\r\n return UrlString.constructAuthorityUriFromObject(urlObject);\r\n };\r\n /**\r\n * Returns the anchor part(#) of the URL\r\n */\r\n UrlString.prototype.getHash = function () {\r\n return UrlString.parseHash(this.urlString);\r\n };\r\n /**\r\n * Parses out the components from a url string.\r\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\r\n */\r\n UrlString.prototype.getUrlComponents = function () {\r\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\r\n var regEx = RegExp(\"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\");\r\n // If url string does not match regEx, we throw an error\r\n var match = this.urlString.match(regEx);\r\n if (!match) {\r\n throw ClientConfigurationError.createUrlParseError(\"Given url string: \" + this.urlString);\r\n }\r\n // Url component object\r\n var urlComponents = {\r\n Protocol: match[1],\r\n HostNameAndPort: match[4],\r\n AbsolutePath: match[5],\r\n QueryString: match[7]\r\n };\r\n var pathSegments = urlComponents.AbsolutePath.split(\"/\");\r\n pathSegments = pathSegments.filter(function (val) { return val && val.length > 0; }); // remove empty elements\r\n urlComponents.PathSegments = pathSegments;\r\n if (!StringUtils.isEmpty(urlComponents.QueryString) && urlComponents.QueryString.endsWith(\"/\")) {\r\n urlComponents.QueryString = urlComponents.QueryString.substring(0, urlComponents.QueryString.length - 1);\r\n }\r\n return urlComponents;\r\n };\r\n UrlString.getDomainFromUrl = function (url) {\r\n var regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\r\n var match = url.match(regEx);\r\n if (!match) {\r\n throw ClientConfigurationError.createUrlParseError(\"Given url string: \" + url);\r\n }\r\n return match[2];\r\n };\r\n UrlString.getAbsoluteUrl = function (relativeUrl, baseUrl) {\r\n if (relativeUrl[0] === Constants.FORWARD_SLASH) {\r\n var url = new UrlString(baseUrl);\r\n var baseComponents = url.getUrlComponents();\r\n return baseComponents.Protocol + \"//\" + baseComponents.HostNameAndPort + relativeUrl;\r\n }\r\n return relativeUrl;\r\n };\r\n /**\r\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\r\n * @param hashString\r\n */\r\n UrlString.parseHash = function (hashString) {\r\n var hashIndex1 = hashString.indexOf(\"#\");\r\n var hashIndex2 = hashString.indexOf(\"#/\");\r\n if (hashIndex2 > -1) {\r\n return hashString.substring(hashIndex2 + 2);\r\n }\r\n else if (hashIndex1 > -1) {\r\n return hashString.substring(hashIndex1 + 1);\r\n }\r\n return Constants.EMPTY_STRING;\r\n };\r\n UrlString.constructAuthorityUriFromObject = function (urlObject) {\r\n return new UrlString(urlObject.Protocol + \"//\" + urlObject.HostNameAndPort + \"/\" + urlObject.PathSegments.join(\"/\"));\r\n };\r\n /**\r\n * Returns URL hash as server auth code response object.\r\n */\r\n UrlString.getDeserializedHash = function (hash) {\r\n // Check if given hash is empty\r\n if (StringUtils.isEmpty(hash)) {\r\n return {};\r\n }\r\n // Strip the # symbol if present\r\n var parsedHash = UrlString.parseHash(hash);\r\n // If # symbol was not present, above will return empty string, so give original hash value\r\n var deserializedHash = StringUtils.queryStringToObject(StringUtils.isEmpty(parsedHash) ? hash : parsedHash);\r\n // Check if deserialization didn't work\r\n if (!deserializedHash) {\r\n throw ClientAuthError.createHashNotDeserializedError(JSON.stringify(deserializedHash));\r\n }\r\n return deserializedHash;\r\n };\r\n /**\r\n * Check if the hash of the URL string contains known properties\r\n */\r\n UrlString.hashContainsKnownProperties = function (hash) {\r\n if (StringUtils.isEmpty(hash) || hash.indexOf(\"=\") < 0) {\r\n // Hash doesn't contain key/value pairs\r\n return false;\r\n }\r\n var parameters = UrlString.getDeserializedHash(hash);\r\n return !!(parameters.code ||\r\n parameters.error_description ||\r\n parameters.error ||\r\n parameters.state);\r\n };\r\n return UrlString;\r\n}());\n\nexport { UrlString };\n//# sourceMappingURL=UrlString.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { StringUtils, ProtocolUtils, ClientAuthError, UrlString } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BrowserProtocolUtils = /** @class */ (function () {\r\n function BrowserProtocolUtils() {\r\n }\r\n /**\r\n * Extracts the BrowserStateObject from the state string.\r\n * @param browserCrypto\r\n * @param state\r\n */\r\n BrowserProtocolUtils.extractBrowserRequestState = function (browserCrypto, state) {\r\n if (StringUtils.isEmpty(state)) {\r\n return null;\r\n }\r\n try {\r\n var requestStateObj = ProtocolUtils.parseRequestState(browserCrypto, state);\r\n return requestStateObj.libraryState.meta;\r\n }\r\n catch (e) {\r\n throw ClientAuthError.createInvalidStateError(state, e);\r\n }\r\n };\r\n /**\r\n * Parses properties of server response from url hash\r\n * @param locationHash Hash from url\r\n */\r\n BrowserProtocolUtils.parseServerResponseFromHash = function (locationHash) {\r\n if (!locationHash) {\r\n return {};\r\n }\r\n var hashUrlString = new UrlString(locationHash);\r\n return UrlString.getDeserializedHash(hashUrlString.getHash());\r\n };\r\n return BrowserProtocolUtils;\r\n}());\n\nexport { BrowserProtocolUtils };\n//# sourceMappingURL=BrowserProtocolUtils.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __extends, __spread, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { AccountEntity, CacheManager, IdTokenEntity, AccessTokenEntity, RefreshTokenEntity, AppMetadataEntity, ServerTelemetryEntity, AuthorityMetadataEntity, Constants, PersistentCacheKeys, ClientAuthError, ThrottlingEntity, StringUtils, ProtocolUtils, CcsCredentialType, IdToken, DEFAULT_CRYPTO_IMPLEMENTATION } from '@azure/msal-common';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { BrowserCacheLocation, InMemoryCacheKeys, TemporaryCacheKeys } from '../utils/BrowserConstants.js';\nimport { BrowserStorage } from './BrowserStorage.js';\nimport { MemoryStorage } from './MemoryStorage.js';\nimport { BrowserProtocolUtils } from '../utils/BrowserProtocolUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class implements the cache storage interface for MSAL through browser local or session storage.\r\n * Cookies are only used if storeAuthStateInCookie is true, and are only used for\r\n * parameters such as state and nonce, generally.\r\n */\r\nvar BrowserCacheManager = /** @class */ (function (_super) {\r\n __extends(BrowserCacheManager, _super);\r\n function BrowserCacheManager(clientId, cacheConfig, cryptoImpl, logger) {\r\n var _this = _super.call(this, clientId, cryptoImpl) || this;\r\n // Cookie life calculation (hours * minutes * seconds * ms)\r\n _this.COOKIE_LIFE_MULTIPLIER = 24 * 60 * 60 * 1000;\r\n _this.cacheConfig = cacheConfig;\r\n _this.logger = logger;\r\n _this.internalStorage = new MemoryStorage();\r\n _this.browserStorage = _this.setupBrowserStorage(_this.cacheConfig.cacheLocation);\r\n _this.temporaryCacheStorage = _this.setupTemporaryCacheStorage(_this.cacheConfig.cacheLocation);\r\n // Migrate any cache entries from older versions of MSAL.\r\n _this.migrateCacheEntries();\r\n return _this;\r\n }\r\n /**\r\n * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured cacheLocation.\r\n * @param cacheLocation\r\n */\r\n BrowserCacheManager.prototype.setupBrowserStorage = function (cacheLocation) {\r\n switch (cacheLocation) {\r\n case BrowserCacheLocation.LocalStorage:\r\n case BrowserCacheLocation.SessionStorage:\r\n try {\r\n // Temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\r\n return new BrowserStorage(cacheLocation);\r\n }\r\n catch (e) {\r\n this.logger.verbose(e);\r\n break;\r\n }\r\n }\r\n this.cacheConfig.cacheLocation = BrowserCacheLocation.MemoryStorage;\r\n return new MemoryStorage();\r\n };\r\n /**\r\n *\r\n * @param cacheLocation\r\n */\r\n BrowserCacheManager.prototype.setupTemporaryCacheStorage = function (cacheLocation) {\r\n switch (cacheLocation) {\r\n case BrowserCacheLocation.LocalStorage:\r\n case BrowserCacheLocation.SessionStorage:\r\n try {\r\n // Temporary cache items will always be stored in session storage to mitigate problems caused by multiple tabs\r\n return new BrowserStorage(BrowserCacheLocation.SessionStorage);\r\n }\r\n catch (e) {\r\n this.logger.verbose(e);\r\n return this.internalStorage;\r\n }\r\n case BrowserCacheLocation.MemoryStorage:\r\n default:\r\n return this.internalStorage;\r\n }\r\n };\r\n /**\r\n * Migrate all old cache entries to new schema. No rollback supported.\r\n * @param storeAuthStateInCookie\r\n */\r\n BrowserCacheManager.prototype.migrateCacheEntries = function () {\r\n var _this = this;\r\n var idTokenKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.ID_TOKEN;\r\n var clientInfoKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.CLIENT_INFO;\r\n var errorKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.ERROR;\r\n var errorDescKey = Constants.CACHE_PREFIX + \".\" + PersistentCacheKeys.ERROR_DESC;\r\n var idTokenValue = this.browserStorage.getItem(idTokenKey);\r\n var clientInfoValue = this.browserStorage.getItem(clientInfoKey);\r\n var errorValue = this.browserStorage.getItem(errorKey);\r\n var errorDescValue = this.browserStorage.getItem(errorDescKey);\r\n var values = [idTokenValue, clientInfoValue, errorValue, errorDescValue];\r\n var keysToMigrate = [PersistentCacheKeys.ID_TOKEN, PersistentCacheKeys.CLIENT_INFO, PersistentCacheKeys.ERROR, PersistentCacheKeys.ERROR_DESC];\r\n keysToMigrate.forEach(function (cacheKey, index) { return _this.migrateCacheEntry(cacheKey, values[index]); });\r\n };\r\n /**\r\n * Utility function to help with migration.\r\n * @param newKey\r\n * @param value\r\n * @param storeAuthStateInCookie\r\n */\r\n BrowserCacheManager.prototype.migrateCacheEntry = function (newKey, value) {\r\n if (value) {\r\n this.setTemporaryCache(newKey, value, true);\r\n }\r\n };\r\n /**\r\n * Parses passed value as JSON object, JSON.parse() will throw an error.\r\n * @param input\r\n */\r\n BrowserCacheManager.prototype.validateAndParseJson = function (jsonValue) {\r\n try {\r\n var parsedJson = JSON.parse(jsonValue);\r\n /**\r\n * There are edge cases in which JSON.parse will successfully parse a non-valid JSON object\r\n * (e.g. JSON.parse will parse an escaped string into an unescaped string), so adding a type check\r\n * of the parsed value is necessary in order to be certain that the string represents a valid JSON object.\r\n *\r\n */\r\n return (parsedJson && typeof parsedJson === \"object\") ? parsedJson : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n };\r\n /**\r\n * fetches the entry from the browser storage based off the key\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.getItem = function (key) {\r\n return this.browserStorage.getItem(key);\r\n };\r\n /**\r\n * sets the entry in the browser storage\r\n * @param key\r\n * @param value\r\n */\r\n BrowserCacheManager.prototype.setItem = function (key, value) {\r\n this.browserStorage.setItem(key, value);\r\n };\r\n /**\r\n * fetch the account entity from the platform cache\r\n * @param accountKey\r\n */\r\n BrowserCacheManager.prototype.getAccount = function (accountKey) {\r\n var account = this.getItem(accountKey);\r\n if (!account) {\r\n return null;\r\n }\r\n var parsedAccount = this.validateAndParseJson(account);\r\n if (!parsedAccount || !AccountEntity.isAccountEntity(parsedAccount)) {\r\n return null;\r\n }\r\n return CacheManager.toObject(new AccountEntity(), parsedAccount);\r\n };\r\n /**\r\n * set account entity in the platform cache\r\n * @param key\r\n * @param value\r\n */\r\n BrowserCacheManager.prototype.setAccount = function (account) {\r\n this.logger.trace(\"BrowserCacheManager.setAccount called\");\r\n var key = account.generateAccountKey();\r\n this.setItem(key, JSON.stringify(account));\r\n };\r\n /**\r\n * generates idToken entity from a string\r\n * @param idTokenKey\r\n */\r\n BrowserCacheManager.prototype.getIdTokenCredential = function (idTokenKey) {\r\n var value = this.getItem(idTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedIdToken = this.validateAndParseJson(value);\r\n if (!parsedIdToken || !IdTokenEntity.isIdTokenEntity(parsedIdToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getIdTokenCredential: cache hit\");\r\n return CacheManager.toObject(new IdTokenEntity(), parsedIdToken);\r\n };\r\n /**\r\n * set IdToken credential to the platform cache\r\n * @param idToken\r\n */\r\n BrowserCacheManager.prototype.setIdTokenCredential = function (idToken) {\r\n this.logger.trace(\"BrowserCacheManager.setIdTokenCredential called\");\r\n var idTokenKey = idToken.generateCredentialKey();\r\n this.setItem(idTokenKey, JSON.stringify(idToken));\r\n };\r\n /**\r\n * generates accessToken entity from a string\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.getAccessTokenCredential = function (accessTokenKey) {\r\n var value = this.getItem(accessTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedAccessToken = this.validateAndParseJson(value);\r\n if (!parsedAccessToken || !AccessTokenEntity.isAccessTokenEntity(parsedAccessToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getAccessTokenCredential: cache hit\");\r\n return CacheManager.toObject(new AccessTokenEntity(), parsedAccessToken);\r\n };\r\n /**\r\n * set accessToken credential to the platform cache\r\n * @param accessToken\r\n */\r\n BrowserCacheManager.prototype.setAccessTokenCredential = function (accessToken) {\r\n this.logger.trace(\"BrowserCacheManager.setAccessTokenCredential called\");\r\n var accessTokenKey = accessToken.generateCredentialKey();\r\n this.setItem(accessTokenKey, JSON.stringify(accessToken));\r\n };\r\n /**\r\n * generates refreshToken entity from a string\r\n * @param refreshTokenKey\r\n */\r\n BrowserCacheManager.prototype.getRefreshTokenCredential = function (refreshTokenKey) {\r\n var value = this.getItem(refreshTokenKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedRefreshToken = this.validateAndParseJson(value);\r\n if (!parsedRefreshToken || !RefreshTokenEntity.isRefreshTokenEntity(parsedRefreshToken)) {\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getRefreshTokenCredential: cache hit\");\r\n return CacheManager.toObject(new RefreshTokenEntity(), parsedRefreshToken);\r\n };\r\n /**\r\n * set refreshToken credential to the platform cache\r\n * @param refreshToken\r\n */\r\n BrowserCacheManager.prototype.setRefreshTokenCredential = function (refreshToken) {\r\n this.logger.trace(\"BrowserCacheManager.setRefreshTokenCredential called\");\r\n var refreshTokenKey = refreshToken.generateCredentialKey();\r\n this.setItem(refreshTokenKey, JSON.stringify(refreshToken));\r\n };\r\n /**\r\n * fetch appMetadata entity from the platform cache\r\n * @param appMetadataKey\r\n */\r\n BrowserCacheManager.prototype.getAppMetadata = function (appMetadataKey) {\r\n var value = this.getItem(appMetadataKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedMetadata = this.validateAndParseJson(value);\r\n if (!parsedMetadata || !AppMetadataEntity.isAppMetadataEntity(appMetadataKey, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: cache hit\");\r\n return CacheManager.toObject(new AppMetadataEntity(), parsedMetadata);\r\n };\r\n /**\r\n * set appMetadata entity to the platform cache\r\n * @param appMetadata\r\n */\r\n BrowserCacheManager.prototype.setAppMetadata = function (appMetadata) {\r\n this.logger.trace(\"BrowserCacheManager.setAppMetadata called\");\r\n var appMetadataKey = appMetadata.generateAppMetadataKey();\r\n this.setItem(appMetadataKey, JSON.stringify(appMetadata));\r\n };\r\n /**\r\n * fetch server telemetry entity from the platform cache\r\n * @param serverTelemetryKey\r\n */\r\n BrowserCacheManager.prototype.getServerTelemetry = function (serverTelemetryKey) {\r\n var value = this.getItem(serverTelemetryKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedMetadata = this.validateAndParseJson(value);\r\n if (!parsedMetadata || !ServerTelemetryEntity.isServerTelemetryEntity(serverTelemetryKey, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: cache hit\");\r\n return CacheManager.toObject(new ServerTelemetryEntity(), parsedMetadata);\r\n };\r\n /**\r\n * set server telemetry entity to the platform cache\r\n * @param serverTelemetryKey\r\n * @param serverTelemetry\r\n */\r\n BrowserCacheManager.prototype.setServerTelemetry = function (serverTelemetryKey, serverTelemetry) {\r\n this.logger.trace(\"BrowserCacheManager.setServerTelemetry called\");\r\n this.setItem(serverTelemetryKey, JSON.stringify(serverTelemetry));\r\n };\r\n /**\r\n *\r\n */\r\n BrowserCacheManager.prototype.getAuthorityMetadata = function (key) {\r\n var value = this.internalStorage.getItem(key);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedMetadata = this.validateAndParseJson(value);\r\n if (parsedMetadata && AuthorityMetadataEntity.isAuthorityMetadataEntity(key, parsedMetadata)) {\r\n this.logger.trace(\"BrowserCacheManager.getAuthorityMetadata: cache hit\");\r\n return CacheManager.toObject(new AuthorityMetadataEntity(), parsedMetadata);\r\n }\r\n return null;\r\n };\r\n /**\r\n *\r\n */\r\n BrowserCacheManager.prototype.getAuthorityMetadataKeys = function () {\r\n var _this = this;\r\n var allKeys = this.internalStorage.getKeys();\r\n return allKeys.filter(function (key) {\r\n return _this.isAuthorityMetadata(key);\r\n });\r\n };\r\n /**\r\n * Sets wrapper metadata in memory\r\n * @param wrapperSKU\r\n * @param wrapperVersion\r\n */\r\n BrowserCacheManager.prototype.setWrapperMetadata = function (wrapperSKU, wrapperVersion) {\r\n this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_SKU, wrapperSKU);\r\n this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_VER, wrapperVersion);\r\n };\r\n /**\r\n * Returns wrapper metadata from in-memory storage\r\n */\r\n BrowserCacheManager.prototype.getWrapperMetadata = function () {\r\n var sku = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_SKU) || Constants.EMPTY_STRING;\r\n var version = this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_VER) || Constants.EMPTY_STRING;\r\n return [sku, version];\r\n };\r\n /**\r\n *\r\n * @param entity\r\n */\r\n BrowserCacheManager.prototype.setAuthorityMetadata = function (key, entity) {\r\n this.logger.trace(\"BrowserCacheManager.setAuthorityMetadata called\");\r\n this.internalStorage.setItem(key, JSON.stringify(entity));\r\n };\r\n /**\r\n * Gets the active account\r\n */\r\n BrowserCacheManager.prototype.getActiveAccount = function () {\r\n var activeAccountIdKey = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\r\n var activeAccountId = this.browserStorage.getItem(activeAccountIdKey);\r\n if (!activeAccountId) {\r\n return null;\r\n }\r\n return this.getAccountInfoByFilter({ localAccountId: activeAccountId })[0] || null;\r\n };\r\n /**\r\n * Sets the active account's localAccountId in cache\r\n * @param account\r\n */\r\n BrowserCacheManager.prototype.setActiveAccount = function (account) {\r\n var activeAccountIdKey = this.generateCacheKey(PersistentCacheKeys.ACTIVE_ACCOUNT);\r\n if (account) {\r\n this.logger.verbose(\"setActiveAccount: Active account set\");\r\n this.browserStorage.setItem(activeAccountIdKey, account.localAccountId);\r\n }\r\n else {\r\n this.logger.verbose(\"setActiveAccount: No account passed, active account not set\");\r\n this.browserStorage.removeItem(activeAccountIdKey);\r\n }\r\n };\r\n /**\r\n * Gets a list of accounts that match all of the filters provided\r\n * @param account\r\n */\r\n BrowserCacheManager.prototype.getAccountInfoByFilter = function (accountFilter) {\r\n var allAccounts = this.getAllAccounts();\r\n return allAccounts.filter(function (accountObj) {\r\n if (accountFilter.username && accountFilter.username.toLowerCase() !== accountObj.username.toLowerCase()) {\r\n return false;\r\n }\r\n if (accountFilter.homeAccountId && accountFilter.homeAccountId !== accountObj.homeAccountId) {\r\n return false;\r\n }\r\n if (accountFilter.localAccountId && accountFilter.localAccountId !== accountObj.localAccountId) {\r\n return false;\r\n }\r\n if (accountFilter.tenantId && accountFilter.tenantId !== accountObj.tenantId) {\r\n return false;\r\n }\r\n if (accountFilter.environment && accountFilter.environment !== accountObj.environment) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n };\r\n /**\r\n * Checks the cache for accounts matching loginHint or SID\r\n * @param loginHint\r\n * @param sid\r\n */\r\n BrowserCacheManager.prototype.getAccountInfoByHints = function (loginHint, sid) {\r\n var matchingAccounts = this.getAllAccounts().filter(function (accountInfo) {\r\n if (sid) {\r\n var accountSid = accountInfo.idTokenClaims && accountInfo.idTokenClaims[\"sid\"];\r\n return sid === accountSid;\r\n }\r\n if (loginHint) {\r\n return loginHint === accountInfo.username;\r\n }\r\n return false;\r\n });\r\n if (matchingAccounts.length === 1) {\r\n return matchingAccounts[0];\r\n }\r\n else if (matchingAccounts.length > 1) {\r\n throw ClientAuthError.createMultipleMatchingAccountsInCacheError();\r\n }\r\n return null;\r\n };\r\n /**\r\n * fetch throttling entity from the platform cache\r\n * @param throttlingCacheKey\r\n */\r\n BrowserCacheManager.prototype.getThrottlingCache = function (throttlingCacheKey) {\r\n var value = this.getItem(throttlingCacheKey);\r\n if (!value) {\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\r\n return null;\r\n }\r\n var parsedThrottlingCache = this.validateAndParseJson(value);\r\n if (!parsedThrottlingCache || !ThrottlingEntity.isThrottlingEntity(throttlingCacheKey, parsedThrottlingCache)) {\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: called, no cache hit\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: cache hit\");\r\n return CacheManager.toObject(new ThrottlingEntity(), parsedThrottlingCache);\r\n };\r\n /**\r\n * set throttling entity to the platform cache\r\n * @param throttlingCacheKey\r\n * @param throttlingCache\r\n */\r\n BrowserCacheManager.prototype.setThrottlingCache = function (throttlingCacheKey, throttlingCache) {\r\n this.logger.trace(\"BrowserCacheManager.setThrottlingCache called\");\r\n this.setItem(throttlingCacheKey, JSON.stringify(throttlingCache));\r\n };\r\n /**\r\n * Gets cache item with given key.\r\n * Will retrieve from cookies if storeAuthStateInCookie is set to true.\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.getTemporaryCache = function (cacheKey, generateKey) {\r\n var key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n var itemCookie = this.getItemCookie(key);\r\n if (itemCookie) {\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: storeAuthStateInCookies set to true, retrieving from cookies\");\r\n return itemCookie;\r\n }\r\n }\r\n var value = this.temporaryCacheStorage.getItem(key);\r\n if (!value) {\r\n // If temp cache item not found in session/memory, check local storage for items set by old versions\r\n if (this.cacheConfig.cacheLocation === BrowserCacheLocation.LocalStorage) {\r\n var item = this.browserStorage.getItem(key);\r\n if (item) {\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item found in local storage\");\r\n return item;\r\n }\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: No cache item found in local storage\");\r\n return null;\r\n }\r\n this.logger.trace(\"BrowserCacheManager.getTemporaryCache: Temporary cache item returned\");\r\n return value;\r\n };\r\n /**\r\n * Sets the cache item with the key and value given.\r\n * Stores in cookie if storeAuthStateInCookie is set to true.\r\n * This can cause cookie overflow if used incorrectly.\r\n * @param key\r\n * @param value\r\n */\r\n BrowserCacheManager.prototype.setTemporaryCache = function (cacheKey, value, generateKey) {\r\n var key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\r\n this.temporaryCacheStorage.setItem(key, value);\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n this.logger.trace(\"BrowserCacheManager.setTemporaryCache: storeAuthStateInCookie set to true, setting item cookie\");\r\n this.setItemCookie(key, value);\r\n }\r\n };\r\n /**\r\n * Removes the cache item with the given key.\r\n * Will also clear the cookie item if storeAuthStateInCookie is set to true.\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.removeItem = function (key) {\r\n this.browserStorage.removeItem(key);\r\n this.temporaryCacheStorage.removeItem(key);\r\n if (this.cacheConfig.storeAuthStateInCookie) {\r\n this.logger.trace(\"BrowserCacheManager.removeItem: storeAuthStateInCookie is true, clearing item cookie\");\r\n this.clearItemCookie(key);\r\n }\r\n return true;\r\n };\r\n /**\r\n * Checks whether key is in cache.\r\n * @param key\r\n */\r\n BrowserCacheManager.prototype.containsKey = function (key) {\r\n return this.browserStorage.containsKey(key) || this.temporaryCacheStorage.containsKey(key);\r\n };\r\n /**\r\n * Gets all keys in window.\r\n */\r\n BrowserCacheManager.prototype.getKeys = function () {\r\n return __spread(this.browserStorage.getKeys(), this.temporaryCacheStorage.getKeys());\r\n };\r\n /**\r\n * Clears all cache entries created by MSAL.\r\n */\r\n BrowserCacheManager.prototype.clear = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: \r\n // Removes all accounts and their credentials\r\n return [4 /*yield*/, this.removeAllAccounts()];\r\n case 1:\r\n // Removes all accounts and their credentials\r\n _a.sent();\r\n this.removeAppMetadata();\r\n // Removes all remaining MSAL cache items\r\n this.getKeys().forEach(function (cacheKey) {\r\n // Check if key contains msal prefix; For now, we are clearing all the cache items created by MSAL.js\r\n if ((_this.browserStorage.containsKey(cacheKey) || _this.temporaryCacheStorage.containsKey(cacheKey)) && ((cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1) || (cacheKey.indexOf(_this.clientId) !== -1))) {\r\n _this.removeItem(cacheKey);\r\n }\r\n });\r\n this.internalStorage.clear();\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Add value to cookies\r\n * @param cookieName\r\n * @param cookieValue\r\n * @param expires\r\n */\r\n BrowserCacheManager.prototype.setItemCookie = function (cookieName, cookieValue, expires) {\r\n var cookieStr = encodeURIComponent(cookieName) + \"=\" + encodeURIComponent(cookieValue) + \";path=/;\";\r\n if (expires) {\r\n var expireTime = this.getCookieExpirationTime(expires);\r\n cookieStr += \"expires=\" + expireTime + \";\";\r\n }\r\n if (this.cacheConfig.secureCookies) {\r\n cookieStr += \"Secure;\";\r\n }\r\n document.cookie = cookieStr;\r\n };\r\n /**\r\n * Get one item by key from cookies\r\n * @param cookieName\r\n */\r\n BrowserCacheManager.prototype.getItemCookie = function (cookieName) {\r\n var name = encodeURIComponent(cookieName) + \"=\";\r\n var cookieList = document.cookie.split(\";\");\r\n for (var i = 0; i < cookieList.length; i++) {\r\n var cookie = cookieList[i];\r\n while (cookie.charAt(0) === \" \") {\r\n cookie = cookie.substring(1);\r\n }\r\n if (cookie.indexOf(name) === 0) {\r\n return decodeURIComponent(cookie.substring(name.length, cookie.length));\r\n }\r\n }\r\n return Constants.EMPTY_STRING;\r\n };\r\n /**\r\n * Clear all msal-related cookies currently set in the browser. Should only be used to clear temporary cache items.\r\n */\r\n BrowserCacheManager.prototype.clearMsalCookies = function () {\r\n var _this = this;\r\n var cookiePrefix = Constants.CACHE_PREFIX + \".\" + this.clientId;\r\n var cookieList = document.cookie.split(\";\");\r\n cookieList.forEach(function (cookie) {\r\n while (cookie.charAt(0) === \" \") {\r\n // eslint-disable-next-line no-param-reassign\r\n cookie = cookie.substring(1);\r\n }\r\n if (cookie.indexOf(cookiePrefix) === 0) {\r\n var cookieKey = cookie.split(\"=\")[0];\r\n _this.clearItemCookie(cookieKey);\r\n }\r\n });\r\n };\r\n /**\r\n * Clear an item in the cookies by key\r\n * @param cookieName\r\n */\r\n BrowserCacheManager.prototype.clearItemCookie = function (cookieName) {\r\n this.setItemCookie(cookieName, Constants.EMPTY_STRING, -1);\r\n };\r\n /**\r\n * Get cookie expiration time\r\n * @param cookieLifeDays\r\n */\r\n BrowserCacheManager.prototype.getCookieExpirationTime = function (cookieLifeDays) {\r\n var today = new Date();\r\n var expr = new Date(today.getTime() + cookieLifeDays * this.COOKIE_LIFE_MULTIPLIER);\r\n return expr.toUTCString();\r\n };\r\n /**\r\n * Gets the cache object referenced by the browser\r\n */\r\n BrowserCacheManager.prototype.getCache = function () {\r\n return this.browserStorage;\r\n };\r\n /**\r\n * interface compat, we cannot overwrite browser cache; Functionality is supported by individual entities in browser\r\n */\r\n BrowserCacheManager.prototype.setCache = function () {\r\n // sets nothing\r\n };\r\n /**\r\n * Prepend msal.<client-id> to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema)\r\n * @param key\r\n * @param addInstanceId\r\n */\r\n BrowserCacheManager.prototype.generateCacheKey = function (key) {\r\n var generatedKey = this.validateAndParseJson(key);\r\n if (!generatedKey) {\r\n if (StringUtils.startsWith(key, Constants.CACHE_PREFIX) || StringUtils.startsWith(key, PersistentCacheKeys.ADAL_ID_TOKEN)) {\r\n return key;\r\n }\r\n return Constants.CACHE_PREFIX + \".\" + this.clientId + \".\" + key;\r\n }\r\n return JSON.stringify(key);\r\n };\r\n /**\r\n * Create authorityKey to cache authority\r\n * @param state\r\n */\r\n BrowserCacheManager.prototype.generateAuthorityKey = function (stateString) {\r\n var stateId = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString).libraryState.id;\r\n return this.generateCacheKey(TemporaryCacheKeys.AUTHORITY + \".\" + stateId);\r\n };\r\n /**\r\n * Create Nonce key to cache nonce\r\n * @param state\r\n */\r\n BrowserCacheManager.prototype.generateNonceKey = function (stateString) {\r\n var stateId = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString).libraryState.id;\r\n return this.generateCacheKey(TemporaryCacheKeys.NONCE_IDTOKEN + \".\" + stateId);\r\n };\r\n /**\r\n * Creates full cache key for the request state\r\n * @param stateString State string for the request\r\n */\r\n BrowserCacheManager.prototype.generateStateKey = function (stateString) {\r\n // Use the library state id to key temp storage for uniqueness for multiple concurrent requests\r\n var stateId = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString).libraryState.id;\r\n return this.generateCacheKey(TemporaryCacheKeys.REQUEST_STATE + \".\" + stateId);\r\n };\r\n /**\r\n * Gets the cached authority based on the cached state. Returns empty if no cached state found.\r\n */\r\n BrowserCacheManager.prototype.getCachedAuthority = function (cachedState) {\r\n var stateCacheKey = this.generateStateKey(cachedState);\r\n var state = this.getTemporaryCache(stateCacheKey);\r\n if (!state) {\r\n return null;\r\n }\r\n var authorityCacheKey = this.generateAuthorityKey(state);\r\n return this.getTemporaryCache(authorityCacheKey);\r\n };\r\n /**\r\n * Updates account, authority, and state in cache\r\n * @param serverAuthenticationRequest\r\n * @param account\r\n */\r\n BrowserCacheManager.prototype.updateCacheEntries = function (state, nonce, authorityInstance, loginHint, account) {\r\n this.logger.trace(\"BrowserCacheManager.updateCacheEntries called\");\r\n // Cache the request state\r\n var stateCacheKey = this.generateStateKey(state);\r\n this.setTemporaryCache(stateCacheKey, state, false);\r\n // Cache the nonce\r\n var nonceCacheKey = this.generateNonceKey(state);\r\n this.setTemporaryCache(nonceCacheKey, nonce, false);\r\n // Cache authorityKey\r\n var authorityCacheKey = this.generateAuthorityKey(state);\r\n this.setTemporaryCache(authorityCacheKey, authorityInstance, false);\r\n if (account) {\r\n var ccsCredential = {\r\n credential: account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n };\r\n this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\r\n }\r\n else if (!StringUtils.isEmpty(loginHint)) {\r\n var ccsCredential = {\r\n credential: loginHint,\r\n type: CcsCredentialType.UPN\r\n };\r\n this.setTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, JSON.stringify(ccsCredential), true);\r\n }\r\n };\r\n /**\r\n * Reset all temporary cache items\r\n * @param state\r\n */\r\n BrowserCacheManager.prototype.resetRequestCache = function (state) {\r\n var _this = this;\r\n this.logger.trace(\"BrowserCacheManager.resetRequestCache called\");\r\n // check state and remove associated cache items\r\n if (!StringUtils.isEmpty(state)) {\r\n this.getKeys().forEach(function (key) {\r\n if (key.indexOf(state) !== -1) {\r\n _this.removeItem(key);\r\n }\r\n });\r\n }\r\n // delete generic interactive request parameters\r\n if (state) {\r\n this.removeItem(this.generateStateKey(state));\r\n this.removeItem(this.generateNonceKey(state));\r\n this.removeItem(this.generateAuthorityKey(state));\r\n }\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.ORIGIN_URI));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.URL_HASH));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CORRELATION_ID));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.CCS_CREDENTIAL));\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\r\n this.setInteractionInProgress(false);\r\n };\r\n /**\r\n * Removes temporary cache for the provided state\r\n * @param stateString\r\n */\r\n BrowserCacheManager.prototype.cleanRequestByState = function (stateString) {\r\n this.logger.trace(\"BrowserCacheManager.cleanRequestByState called\");\r\n // Interaction is completed - remove interaction status.\r\n if (stateString) {\r\n var stateKey = this.generateStateKey(stateString);\r\n var cachedState = this.temporaryCacheStorage.getItem(stateKey);\r\n this.logger.infoPii(\"BrowserCacheManager.cleanRequestByState: Removing temporary cache items for state: \" + cachedState);\r\n this.resetRequestCache(cachedState || Constants.EMPTY_STRING);\r\n }\r\n this.clearMsalCookies();\r\n };\r\n /**\r\n * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state\r\n * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button.\r\n * @param interactionType\r\n */\r\n BrowserCacheManager.prototype.cleanRequestByInteractionType = function (interactionType) {\r\n var _this = this;\r\n this.logger.trace(\"BrowserCacheManager.cleanRequestByInteractionType called\");\r\n // Loop through all keys to find state key\r\n this.getKeys().forEach(function (key) {\r\n // If this key is not the state key, move on\r\n if (key.indexOf(TemporaryCacheKeys.REQUEST_STATE) === -1) {\r\n return;\r\n }\r\n // Retrieve state value, return if not a valid value\r\n var stateValue = _this.temporaryCacheStorage.getItem(key);\r\n if (!stateValue) {\r\n return;\r\n }\r\n // Extract state and ensure it matches given InteractionType, then clean request cache\r\n var parsedState = BrowserProtocolUtils.extractBrowserRequestState(_this.cryptoImpl, stateValue);\r\n if (parsedState && parsedState.interactionType === interactionType) {\r\n _this.logger.infoPii(\"BrowserCacheManager.cleanRequestByInteractionType: Removing temporary cache items for state: \" + stateValue);\r\n _this.resetRequestCache(stateValue);\r\n }\r\n });\r\n this.clearMsalCookies();\r\n this.setInteractionInProgress(false);\r\n };\r\n BrowserCacheManager.prototype.cacheCodeRequest = function (authCodeRequest, browserCrypto) {\r\n this.logger.trace(\"BrowserCacheManager.cacheCodeRequest called\");\r\n var encodedValue = browserCrypto.base64Encode(JSON.stringify(authCodeRequest));\r\n this.setTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, encodedValue, true);\r\n };\r\n /**\r\n * Gets the token exchange parameters from the cache. Throws an error if nothing is found.\r\n */\r\n BrowserCacheManager.prototype.getCachedRequest = function (state, browserCrypto) {\r\n this.logger.trace(\"BrowserCacheManager.getCachedRequest called\");\r\n // Get token request from cache and parse as TokenExchangeParameters.\r\n var encodedTokenRequest = this.getTemporaryCache(TemporaryCacheKeys.REQUEST_PARAMS, true);\r\n if (!encodedTokenRequest) {\r\n throw BrowserAuthError.createNoTokenRequestCacheError();\r\n }\r\n var parsedRequest = this.validateAndParseJson(browserCrypto.base64Decode(encodedTokenRequest));\r\n if (!parsedRequest) {\r\n throw BrowserAuthError.createUnableToParseTokenRequestCacheError();\r\n }\r\n this.removeItem(this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS));\r\n // Get cached authority and use if no authority is cached with request.\r\n if (StringUtils.isEmpty(parsedRequest.authority)) {\r\n var authorityCacheKey = this.generateAuthorityKey(state);\r\n var cachedAuthority = this.getTemporaryCache(authorityCacheKey);\r\n if (!cachedAuthority) {\r\n throw BrowserAuthError.createNoCachedAuthorityError();\r\n }\r\n parsedRequest.authority = cachedAuthority;\r\n }\r\n return parsedRequest;\r\n };\r\n /**\r\n * Gets cached native request for redirect flows\r\n */\r\n BrowserCacheManager.prototype.getCachedNativeRequest = function () {\r\n this.logger.trace(\"BrowserCacheManager.getCachedNativeRequest called\");\r\n var cachedRequest = this.getTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, true);\r\n if (!cachedRequest) {\r\n this.logger.trace(\"BrowserCacheManager.getCachedNativeRequest: No cached native request found\");\r\n return null;\r\n }\r\n var parsedRequest = this.validateAndParseJson(cachedRequest);\r\n if (!parsedRequest) {\r\n this.logger.error(\"BrowserCacheManager.getCachedNativeRequest: Unable to parse native request\");\r\n return null;\r\n }\r\n return parsedRequest;\r\n };\r\n BrowserCacheManager.prototype.isInteractionInProgress = function (matchClientId) {\r\n var clientId = this.getInteractionInProgress();\r\n if (matchClientId) {\r\n return clientId === this.clientId;\r\n }\r\n else {\r\n return !!clientId;\r\n }\r\n };\r\n BrowserCacheManager.prototype.getInteractionInProgress = function () {\r\n var key = Constants.CACHE_PREFIX + \".\" + TemporaryCacheKeys.INTERACTION_STATUS_KEY;\r\n return this.getTemporaryCache(key, false);\r\n };\r\n BrowserCacheManager.prototype.setInteractionInProgress = function (inProgress) {\r\n // Ensure we don't overwrite interaction in progress for a different clientId\r\n var key = Constants.CACHE_PREFIX + \".\" + TemporaryCacheKeys.INTERACTION_STATUS_KEY;\r\n if (inProgress) {\r\n if (this.getInteractionInProgress()) {\r\n throw BrowserAuthError.createInteractionInProgressError();\r\n }\r\n else {\r\n // No interaction is in progress\r\n this.setTemporaryCache(key, this.clientId, false);\r\n }\r\n }\r\n else if (!inProgress && this.getInteractionInProgress() === this.clientId) {\r\n this.removeItem(key);\r\n }\r\n };\r\n /**\r\n * Returns username retrieved from ADAL or MSAL v1 idToken\r\n */\r\n BrowserCacheManager.prototype.getLegacyLoginHint = function () {\r\n // Only check for adal/msal token if no SSO params are being used\r\n var adalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ADAL_ID_TOKEN);\r\n if (adalIdTokenString) {\r\n this.browserStorage.removeItem(PersistentCacheKeys.ADAL_ID_TOKEN);\r\n this.logger.verbose(\"Cached ADAL id token retrieved.\");\r\n }\r\n // Check for cached MSAL v1 id token\r\n var msalIdTokenString = this.getTemporaryCache(PersistentCacheKeys.ID_TOKEN, true);\r\n if (msalIdTokenString) {\r\n this.removeItem(this.generateCacheKey(PersistentCacheKeys.ID_TOKEN));\r\n this.logger.verbose(\"Cached MSAL.js v1 id token retrieved\");\r\n }\r\n var cachedIdTokenString = msalIdTokenString || adalIdTokenString;\r\n if (cachedIdTokenString) {\r\n var cachedIdToken = new IdToken(cachedIdTokenString, this.cryptoImpl);\r\n if (cachedIdToken.claims && cachedIdToken.claims.preferred_username) {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 preferred_username as loginHint\");\r\n return cachedIdToken.claims.preferred_username;\r\n }\r\n else if (cachedIdToken.claims && cachedIdToken.claims.upn) {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 upn as loginHint\");\r\n return cachedIdToken.claims.upn;\r\n }\r\n else {\r\n this.logger.verbose(\"No SSO params used and ADAL/MSAL v1 token retrieved, however, no account hint claim found. Enable preferred_username or upn id token claim to get SSO.\");\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Updates a credential's cache key if the current cache key is outdated\r\n */\r\n BrowserCacheManager.prototype.updateCredentialCacheKey = function (currentCacheKey, credential) {\r\n var updatedCacheKey = credential.generateCredentialKey();\r\n if (currentCacheKey !== updatedCacheKey) {\r\n var cacheItem = this.getItem(currentCacheKey);\r\n if (cacheItem) {\r\n this.removeItem(currentCacheKey);\r\n this.setItem(updatedCacheKey, cacheItem);\r\n this.logger.verbose(\"Updated an outdated \" + credential.credentialType + \" cache key\");\r\n return updatedCacheKey;\r\n }\r\n else {\r\n this.logger.error(\"Attempted to update an outdated \" + credential.credentialType + \" cache key but no item matching the outdated key was found in storage\");\r\n }\r\n }\r\n return currentCacheKey;\r\n };\r\n return BrowserCacheManager;\r\n}(CacheManager));\r\nvar DEFAULT_BROWSER_CACHE_MANAGER = function (clientId, logger) {\r\n var cacheOptions = {\r\n cacheLocation: BrowserCacheLocation.MemoryStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false\r\n };\r\n return new BrowserCacheManager(clientId, cacheOptions, DEFAULT_CRYPTO_IMPLEMENTATION, logger);\r\n};\n\nexport { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER };\n//# sourceMappingURL=BrowserCacheManager.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\n/* eslint-disable header/header */\r\nvar name = \"@azure/msal-common\";\r\nvar version = \"6.3.0\";\n\nexport { name, version };\n//# sourceMappingURL=packageMetadata.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __assign, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { DEFAULT_CRYPTO_IMPLEMENTATION } from '../crypto/ICrypto.js';\nimport { AuthError } from '../error/AuthError.js';\nimport { LogLevel } from '../logger/Logger.js';\nimport { Constants } from '../utils/Constants.js';\nimport { version } from '../packageMetadata.js';\nimport { AzureCloudInstance } from '../authority/AuthorityOptions.js';\nimport { DefaultStorageClass } from '../cache/CacheManager.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Token renewal offset default in seconds\r\nvar DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\r\nvar DEFAULT_SYSTEM_OPTIONS = {\r\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\r\n preventCorsPreflight: false,\r\n proxyUrl: Constants.EMPTY_STRING\r\n};\r\nvar DEFAULT_LOGGER_IMPLEMENTATION = {\r\n loggerCallback: function () {\r\n // allow users to not set loggerCallback\r\n },\r\n piiLoggingEnabled: false,\r\n logLevel: LogLevel.Info,\r\n correlationId: Constants.EMPTY_STRING\r\n};\r\nvar DEFAULT_NETWORK_IMPLEMENTATION = {\r\n sendGetRequestAsync: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n },\r\n sendPostRequestAsync: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var notImplErr;\r\n return __generator(this, function (_a) {\r\n notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented\";\r\n throw AuthError.createUnexpectedError(notImplErr);\r\n });\r\n });\r\n }\r\n};\r\nvar DEFAULT_LIBRARY_INFO = {\r\n sku: Constants.SKU,\r\n version: version,\r\n cpu: Constants.EMPTY_STRING,\r\n os: Constants.EMPTY_STRING\r\n};\r\nvar DEFAULT_CLIENT_CREDENTIALS = {\r\n clientSecret: Constants.EMPTY_STRING,\r\n clientAssertion: undefined\r\n};\r\nvar DEFAULT_AZURE_CLOUD_OPTIONS = {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: \"\" + Constants.DEFAULT_COMMON_TENANT\r\n};\r\nvar DEFAULT_TELEMETRY_OPTIONS = {\r\n application: {\r\n appName: \"\",\r\n appVersion: \"\"\r\n }\r\n};\r\n/**\r\n * Function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param Configuration\r\n *\r\n * @returns Configuration\r\n */\r\nfunction buildClientConfiguration(_a) {\r\n var userAuthOptions = _a.authOptions, userSystemOptions = _a.systemOptions, userLoggerOption = _a.loggerOptions, storageImplementation = _a.storageInterface, networkImplementation = _a.networkInterface, cryptoImplementation = _a.cryptoInterface, clientCredentials = _a.clientCredentials, libraryInfo = _a.libraryInfo, telemetry = _a.telemetry, serverTelemetryManager = _a.serverTelemetryManager, persistencePlugin = _a.persistencePlugin, serializableCache = _a.serializableCache;\r\n var loggerOptions = __assign(__assign({}, DEFAULT_LOGGER_IMPLEMENTATION), userLoggerOption);\r\n return {\r\n authOptions: buildAuthOptions(userAuthOptions),\r\n systemOptions: __assign(__assign({}, DEFAULT_SYSTEM_OPTIONS), userSystemOptions),\r\n loggerOptions: loggerOptions,\r\n storageInterface: storageImplementation || new DefaultStorageClass(userAuthOptions.clientId, DEFAULT_CRYPTO_IMPLEMENTATION),\r\n networkInterface: networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\r\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\r\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\r\n libraryInfo: __assign(__assign({}, DEFAULT_LIBRARY_INFO), libraryInfo),\r\n telemetry: __assign(__assign({}, DEFAULT_TELEMETRY_OPTIONS), telemetry),\r\n serverTelemetryManager: serverTelemetryManager || null,\r\n persistencePlugin: persistencePlugin || null,\r\n serializableCache: serializableCache || null\r\n };\r\n}\r\n/**\r\n * Construct authoptions from the client and platform passed values\r\n * @param authOptions\r\n */\r\nfunction buildAuthOptions(authOptions) {\r\n return __assign({ clientCapabilities: [], azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS }, authOptions);\r\n}\n\nexport { DEFAULT_SYSTEM_OPTIONS, buildClientConfiguration };\n//# sourceMappingURL=ClientConfiguration.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { AuthError } from '../error/AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar StubbedNetworkModule = {\r\n sendGetRequestAsync: function () {\r\n var notImplErr = \"Network interface - sendGetRequestAsync() has not been implemented for the Network interface.\";\r\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\r\n },\r\n sendPostRequestAsync: function () {\r\n var notImplErr = \"Network interface - sendPostRequestAsync() has not been implemented for the Network interface.\";\r\n return Promise.reject(AuthError.createUnexpectedError(notImplErr));\r\n }\r\n};\n\nexport { StubbedNetworkModule };\n//# sourceMappingURL=INetworkModule.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { Constants } from '@azure/msal-common';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { HTTP_REQUEST_TYPE } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API\r\n */\r\nvar FetchClient = /** @class */ (function () {\r\n function FetchClient() {\r\n }\r\n /**\r\n * Fetch Client for REST endpoints - Get request\r\n * @param url\r\n * @param headers\r\n * @param body\r\n */\r\n FetchClient.prototype.sendGetRequestAsync = function (url, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, e_1, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _b.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, fetch(url, {\r\n method: HTTP_REQUEST_TYPE.GET,\r\n headers: this.getFetchHeaders(options)\r\n })];\r\n case 1:\r\n response = _b.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n e_1 = _b.sent();\r\n if (window.navigator.onLine) {\r\n throw BrowserAuthError.createGetRequestFailedError(e_1, url);\r\n }\r\n else {\r\n throw BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n case 3:\r\n _b.trys.push([3, 5, , 6]);\r\n _a = {\r\n headers: this.getHeaderDict(response.headers)\r\n };\r\n return [4 /*yield*/, response.json()];\r\n case 4: return [2 /*return*/, (_a.body = (_b.sent()),\r\n _a.status = response.status,\r\n _a)];\r\n case 5:\r\n _b.sent();\r\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Fetch Client for REST endpoints - Post request\r\n * @param url\r\n * @param headers\r\n * @param body\r\n */\r\n FetchClient.prototype.sendPostRequestAsync = function (url, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reqBody, response, e_3, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n reqBody = (options && options.body) || Constants.EMPTY_STRING;\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, fetch(url, {\r\n method: HTTP_REQUEST_TYPE.POST,\r\n headers: this.getFetchHeaders(options),\r\n body: reqBody\r\n })];\r\n case 2:\r\n response = _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_3 = _b.sent();\r\n if (window.navigator.onLine) {\r\n throw BrowserAuthError.createPostRequestFailedError(e_3, url);\r\n }\r\n else {\r\n throw BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n case 4:\r\n _b.trys.push([4, 6, , 7]);\r\n _a = {\r\n headers: this.getHeaderDict(response.headers)\r\n };\r\n return [4 /*yield*/, response.json()];\r\n case 5: return [2 /*return*/, (_a.body = (_b.sent()),\r\n _a.status = response.status,\r\n _a)];\r\n case 6:\r\n _b.sent();\r\n throw BrowserAuthError.createFailedToParseNetworkResponseError(url);\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Get Fetch API Headers object from string map\r\n * @param inputHeaders\r\n */\r\n FetchClient.prototype.getFetchHeaders = function (options) {\r\n var headers = new Headers();\r\n if (!(options && options.headers)) {\r\n return headers;\r\n }\r\n var optionsHeaders = options.headers;\r\n Object.keys(optionsHeaders).forEach(function (key) {\r\n headers.append(key, optionsHeaders[key]);\r\n });\r\n return headers;\r\n };\r\n FetchClient.prototype.getHeaderDict = function (headers) {\r\n var headerDict = {};\r\n headers.forEach(function (value, key) {\r\n headerDict[key] = value;\r\n });\r\n return headerDict;\r\n };\r\n return FetchClient;\r\n}());\n\nexport { FetchClient };\n//# sourceMappingURL=FetchClient.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { HTTP_REQUEST_TYPE } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This client implements the XMLHttpRequest class to send GET and POST requests.\r\n */\r\nvar XhrClient = /** @class */ (function () {\r\n function XhrClient() {\r\n }\r\n /**\r\n * XhrClient for REST endpoints - Get request\r\n * @param url\r\n * @param headers\r\n * @param body\r\n */\r\n XhrClient.prototype.sendGetRequestAsync = function (url, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.sendRequestAsync(url, HTTP_REQUEST_TYPE.GET, options)];\r\n });\r\n });\r\n };\r\n /**\r\n * XhrClient for REST endpoints - Post request\r\n * @param url\r\n * @param headers\r\n * @param body\r\n */\r\n XhrClient.prototype.sendPostRequestAsync = function (url, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.sendRequestAsync(url, HTTP_REQUEST_TYPE.POST, options)];\r\n });\r\n });\r\n };\r\n /**\r\n * Helper for XhrClient requests.\r\n * @param url\r\n * @param method\r\n * @param options\r\n */\r\n XhrClient.prototype.sendRequestAsync = function (url, method, options) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(method, url, /* async: */ true);\r\n _this.setXhrHeaders(xhr, options);\r\n xhr.onload = function () {\r\n if (xhr.status < 200 || xhr.status >= 300) {\r\n if (method === HTTP_REQUEST_TYPE.POST) {\r\n reject(BrowserAuthError.createPostRequestFailedError(\"Failed with status \" + xhr.status, url));\r\n }\r\n else {\r\n reject(BrowserAuthError.createGetRequestFailedError(\"Failed with status \" + xhr.status, url));\r\n }\r\n }\r\n try {\r\n var jsonResponse = JSON.parse(xhr.responseText);\r\n var networkResponse = {\r\n headers: _this.getHeaderDict(xhr),\r\n body: jsonResponse,\r\n status: xhr.status\r\n };\r\n resolve(networkResponse);\r\n }\r\n catch (e) {\r\n reject(BrowserAuthError.createFailedToParseNetworkResponseError(url));\r\n }\r\n };\r\n xhr.onerror = function () {\r\n if (window.navigator.onLine) {\r\n if (method === HTTP_REQUEST_TYPE.POST) {\r\n reject(BrowserAuthError.createPostRequestFailedError(\"Failed with status \" + xhr.status, url));\r\n }\r\n else {\r\n reject(BrowserAuthError.createGetRequestFailedError(\"Failed with status \" + xhr.status, url));\r\n }\r\n }\r\n else {\r\n reject(BrowserAuthError.createNoNetworkConnectivityError());\r\n }\r\n };\r\n if (method === HTTP_REQUEST_TYPE.POST && options && options.body) {\r\n xhr.send(options.body);\r\n }\r\n else if (method === HTTP_REQUEST_TYPE.GET) {\r\n xhr.send();\r\n }\r\n else {\r\n throw BrowserAuthError.createHttpMethodNotImplementedError(method);\r\n }\r\n });\r\n };\r\n /**\r\n * Helper to set XHR headers for request.\r\n * @param xhr\r\n * @param options\r\n */\r\n XhrClient.prototype.setXhrHeaders = function (xhr, options) {\r\n if (options && options.headers) {\r\n var headers_1 = options.headers;\r\n Object.keys(headers_1).forEach(function (key) {\r\n xhr.setRequestHeader(key, headers_1[key]);\r\n });\r\n }\r\n };\r\n /**\r\n * Gets a string map of the headers received in the response.\r\n *\r\n * Algorithm comes from https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders\r\n * @param xhr\r\n */\r\n XhrClient.prototype.getHeaderDict = function (xhr) {\r\n var headerString = xhr.getAllResponseHeaders();\r\n var headerArr = headerString.trim().split(/[\\r\\n]+/);\r\n var headerDict = {};\r\n headerArr.forEach(function (value) {\r\n var parts = value.split(\": \");\r\n var headerName = parts.shift();\r\n var headerVal = parts.join(\": \");\r\n if (headerName && headerVal) {\r\n headerDict[headerName] = headerVal;\r\n }\r\n });\r\n return headerDict;\r\n };\r\n return XhrClient;\r\n}());\n\nexport { XhrClient };\n//# sourceMappingURL=XhrClient.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { Constants, UrlString } from '@azure/msal-common';\nimport { FetchClient } from '../network/FetchClient.js';\nimport { XhrClient } from '../network/XhrClient.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { BrowserConstants, InteractionType } from './BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Utility class for browser specific functions\r\n */\r\nvar BrowserUtils = /** @class */ (function () {\r\n function BrowserUtils() {\r\n }\r\n // #region Window Navigation and URL management\r\n /**\r\n * Clears hash from window url.\r\n */\r\n BrowserUtils.clearHash = function (contentWindow) {\r\n // Office.js sets history.replaceState to null\r\n contentWindow.location.hash = Constants.EMPTY_STRING;\r\n if (typeof contentWindow.history.replaceState === \"function\") {\r\n // Full removes \"#\" from url\r\n contentWindow.history.replaceState(null, Constants.EMPTY_STRING, \"\" + contentWindow.location.origin + contentWindow.location.pathname + contentWindow.location.search);\r\n }\r\n };\r\n /**\r\n * Replaces current hash with hash from provided url\r\n */\r\n BrowserUtils.replaceHash = function (url) {\r\n var urlParts = url.split(\"#\");\r\n urlParts.shift(); // Remove part before the hash\r\n window.location.hash = urlParts.length > 0 ? urlParts.join(\"#\") : Constants.EMPTY_STRING;\r\n };\r\n /**\r\n * Returns boolean of whether the current window is in an iframe or not.\r\n */\r\n BrowserUtils.isInIframe = function () {\r\n return window.parent !== window;\r\n };\r\n /**\r\n * Returns boolean of whether or not the current window is a popup opened by msal\r\n */\r\n BrowserUtils.isInPopup = function () {\r\n return typeof window !== \"undefined\" && !!window.opener &&\r\n window.opener !== window &&\r\n typeof window.name === \"string\" &&\r\n window.name.indexOf(BrowserConstants.POPUP_NAME_PREFIX + \".\") === 0;\r\n };\r\n // #endregion\r\n /**\r\n * Returns current window URL as redirect uri\r\n */\r\n BrowserUtils.getCurrentUri = function () {\r\n return window.location.href.split(\"?\")[0].split(\"#\")[0];\r\n };\r\n /**\r\n * Gets the homepage url for the current window location.\r\n */\r\n BrowserUtils.getHomepage = function () {\r\n var currentUrl = new UrlString(window.location.href);\r\n var urlComponents = currentUrl.getUrlComponents();\r\n return urlComponents.Protocol + \"//\" + urlComponents.HostNameAndPort + \"/\";\r\n };\r\n /**\r\n * Returns best compatible network client object.\r\n */\r\n BrowserUtils.getBrowserNetworkClient = function () {\r\n if (window.fetch && window.Headers) {\r\n return new FetchClient();\r\n }\r\n else {\r\n return new XhrClient();\r\n }\r\n };\r\n /**\r\n * Throws error if we have completed an auth and are\r\n * attempting another auth request inside an iframe.\r\n */\r\n BrowserUtils.blockReloadInHiddenIframes = function () {\r\n var isResponseHash = UrlString.hashContainsKnownProperties(window.location.hash);\r\n // return an error if called from the hidden iframe created by the msal js silent calls\r\n if (isResponseHash && BrowserUtils.isInIframe()) {\r\n throw BrowserAuthError.createBlockReloadInHiddenIframeError();\r\n }\r\n };\r\n /**\r\n * Block redirect operations in iframes unless explicitly allowed\r\n * @param interactionType Interaction type for the request\r\n * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe\r\n */\r\n BrowserUtils.blockRedirectInIframe = function (interactionType, allowRedirectInIframe) {\r\n var isIframedApp = BrowserUtils.isInIframe();\r\n if (interactionType === InteractionType.Redirect && isIframedApp && !allowRedirectInIframe) {\r\n // If we are not in top frame, we shouldn't redirect. This is also handled by the service.\r\n throw BrowserAuthError.createRedirectInIframeError(isIframedApp);\r\n }\r\n };\r\n /**\r\n * Block redirectUri loaded in popup from calling AcquireToken APIs\r\n */\r\n BrowserUtils.blockAcquireTokenInPopups = function () {\r\n // Popups opened by msal popup APIs are given a name that starts with \"msal.\"\r\n if (BrowserUtils.isInPopup()) {\r\n throw BrowserAuthError.createBlockAcquireTokenInPopupsError();\r\n }\r\n };\r\n /**\r\n * Throws error if token requests are made in non-browser environment\r\n * @param isBrowserEnvironment Flag indicating if environment is a browser.\r\n */\r\n BrowserUtils.blockNonBrowserEnvironment = function (isBrowserEnvironment) {\r\n if (!isBrowserEnvironment) {\r\n throw BrowserAuthError.createNonBrowserEnvironmentError();\r\n }\r\n };\r\n /**\r\n * Throws error if native brokering is enabled but initialize hasn't been called\r\n * @param allowNativeBroker\r\n * @param initialized\r\n */\r\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized = function (allowNativeBroker, initialized) {\r\n if (allowNativeBroker && !initialized) {\r\n throw BrowserAuthError.createNativeBrokerCalledBeforeInitialize();\r\n }\r\n };\r\n /**\r\n * Returns boolean of whether current browser is an Internet Explorer or Edge browser.\r\n */\r\n BrowserUtils.detectIEOrEdge = function () {\r\n var ua = window.navigator.userAgent;\r\n var msie = ua.indexOf(\"MSIE \");\r\n var msie11 = ua.indexOf(\"Trident/\");\r\n var msedge = ua.indexOf(\"Edge/\");\r\n var isIE = msie > 0 || msie11 > 0;\r\n var isEdge = msedge > 0;\r\n return isIE || isEdge;\r\n };\r\n return BrowserUtils;\r\n}());\n\nexport { BrowserUtils };\n//# sourceMappingURL=BrowserUtils.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NavigationClient = /** @class */ (function () {\r\n function NavigationClient() {\r\n }\r\n /**\r\n * Navigates to other pages within the same web application\r\n * @param url\r\n * @param options\r\n */\r\n NavigationClient.prototype.navigateInternal = function (url, options) {\r\n return NavigationClient.defaultNavigateWindow(url, options);\r\n };\r\n /**\r\n * Navigates to other pages outside the web application i.e. the Identity Provider\r\n * @param url\r\n * @param options\r\n */\r\n NavigationClient.prototype.navigateExternal = function (url, options) {\r\n return NavigationClient.defaultNavigateWindow(url, options);\r\n };\r\n /**\r\n * Default navigation implementation invoked by the internal and external functions\r\n * @param url\r\n * @param options\r\n */\r\n NavigationClient.defaultNavigateWindow = function (url, options) {\r\n if (options.noHistory) {\r\n window.location.replace(url);\r\n }\r\n else {\r\n window.location.assign(url);\r\n }\r\n return new Promise(function (resolve) {\r\n setTimeout(function () {\r\n resolve(true);\r\n }, options.timeout);\r\n });\r\n };\r\n return NavigationClient;\r\n}());\n\nexport { NavigationClient };\n//# sourceMappingURL=NavigationClient.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __assign } from '../_virtual/_tslib.js';\nimport { DEFAULT_SYSTEM_OPTIONS, StubbedNetworkModule, Constants, ProtocolMode, AzureCloudInstance, LogLevel } from '@azure/msal-common';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\nimport { BrowserCacheLocation } from '../utils/BrowserConstants.js';\nimport { NavigationClient } from '../navigation/NavigationClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n// Default timeout for popup windows and iframes in milliseconds\r\nvar DEFAULT_POPUP_TIMEOUT_MS = 60000;\r\nvar DEFAULT_IFRAME_TIMEOUT_MS = 6000;\r\nvar DEFAULT_REDIRECT_TIMEOUT_MS = 30000;\r\nvar DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS = 2000;\r\n/**\r\n * MSAL function that sets the default options when not explicitly configured from app developer\r\n *\r\n * @param auth\r\n * @param cache\r\n * @param system\r\n *\r\n * @returns Configuration object\r\n */\r\nfunction buildConfiguration(_a, isBrowserEnvironment) {\r\n var userInputAuth = _a.auth, userInputCache = _a.cache, userInputSystem = _a.system, userInputTelemetry = _a.telemetry;\r\n // Default auth options for browser\r\n var DEFAULT_AUTH_OPTIONS = {\r\n clientId: Constants.EMPTY_STRING,\r\n authority: \"\" + Constants.DEFAULT_AUTHORITY,\r\n knownAuthorities: [],\r\n cloudDiscoveryMetadata: Constants.EMPTY_STRING,\r\n authorityMetadata: Constants.EMPTY_STRING,\r\n redirectUri: Constants.EMPTY_STRING,\r\n postLogoutRedirectUri: Constants.EMPTY_STRING,\r\n navigateToLoginRequestUrl: true,\r\n clientCapabilities: [],\r\n protocolMode: ProtocolMode.AAD,\r\n azureCloudOptions: {\r\n azureCloudInstance: AzureCloudInstance.None,\r\n tenant: Constants.EMPTY_STRING\r\n },\r\n };\r\n // Default cache options for browser\r\n var DEFAULT_CACHE_OPTIONS = {\r\n cacheLocation: BrowserCacheLocation.SessionStorage,\r\n storeAuthStateInCookie: false,\r\n secureCookies: false\r\n };\r\n // Default logger options for browser\r\n var DEFAULT_LOGGER_OPTIONS = {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n loggerCallback: function () { },\r\n logLevel: LogLevel.Info,\r\n piiLoggingEnabled: false\r\n };\r\n // Default system options for browser\r\n var DEFAULT_BROWSER_SYSTEM_OPTIONS = __assign(__assign({}, DEFAULT_SYSTEM_OPTIONS), { loggerOptions: DEFAULT_LOGGER_OPTIONS, networkClient: isBrowserEnvironment ? BrowserUtils.getBrowserNetworkClient() : StubbedNetworkModule, navigationClient: new NavigationClient(), loadFrameTimeout: 0, \r\n // If loadFrameTimeout is provided, use that as default.\r\n windowHashTimeout: (userInputSystem === null || userInputSystem === void 0 ? void 0 : userInputSystem.loadFrameTimeout) || DEFAULT_POPUP_TIMEOUT_MS, iframeHashTimeout: (userInputSystem === null || userInputSystem === void 0 ? void 0 : userInputSystem.loadFrameTimeout) || DEFAULT_IFRAME_TIMEOUT_MS, navigateFrameWait: isBrowserEnvironment && BrowserUtils.detectIEOrEdge() ? 500 : 0, redirectNavigationTimeout: DEFAULT_REDIRECT_TIMEOUT_MS, asyncPopups: false, allowRedirectInIframe: false, allowNativeBroker: false, nativeBrokerHandshakeTimeout: (userInputSystem === null || userInputSystem === void 0 ? void 0 : userInputSystem.nativeBrokerHandshakeTimeout) || DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS });\r\n var DEFAULT_TELEMETRY_OPTIONS = {\r\n application: {\r\n appName: Constants.EMPTY_STRING,\r\n appVersion: Constants.EMPTY_STRING\r\n }\r\n };\r\n var overlayedConfig = {\r\n auth: __assign(__assign({}, DEFAULT_AUTH_OPTIONS), userInputAuth),\r\n cache: __assign(__assign({}, DEFAULT_CACHE_OPTIONS), userInputCache),\r\n system: __assign(__assign({}, DEFAULT_BROWSER_SYSTEM_OPTIONS), userInputSystem),\r\n telemetry: __assign(__assign({}, DEFAULT_TELEMETRY_OPTIONS), userInputTelemetry)\r\n };\r\n return overlayedConfig;\r\n}\n\nexport { DEFAULT_IFRAME_TIMEOUT_MS, DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS, DEFAULT_POPUP_TIMEOUT_MS, DEFAULT_REDIRECT_TIMEOUT_MS, buildConfiguration };\n//# sourceMappingURL=Configuration.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\n/* eslint-disable header/header */\r\nvar name = \"@azure/msal-browser\";\r\nvar version = \"2.24.0\";\n\nexport { name, version };\n//# sourceMappingURL=packageMetadata.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar EventType;\r\n(function (EventType) {\r\n EventType[\"INITIALIZE_START\"] = \"msal:initializeStart\";\r\n EventType[\"INITIALIZE_END\"] = \"msal:initializeEnd\";\r\n EventType[\"ACCOUNT_ADDED\"] = \"msal:accountAdded\";\r\n EventType[\"ACCOUNT_REMOVED\"] = \"msal:accountRemoved\";\r\n EventType[\"LOGIN_START\"] = \"msal:loginStart\";\r\n EventType[\"LOGIN_SUCCESS\"] = \"msal:loginSuccess\";\r\n EventType[\"LOGIN_FAILURE\"] = \"msal:loginFailure\";\r\n EventType[\"ACQUIRE_TOKEN_START\"] = \"msal:acquireTokenStart\";\r\n EventType[\"ACQUIRE_TOKEN_SUCCESS\"] = \"msal:acquireTokenSuccess\";\r\n EventType[\"ACQUIRE_TOKEN_FAILURE\"] = \"msal:acquireTokenFailure\";\r\n EventType[\"ACQUIRE_TOKEN_NETWORK_START\"] = \"msal:acquireTokenFromNetworkStart\";\r\n EventType[\"SSO_SILENT_START\"] = \"msal:ssoSilentStart\";\r\n EventType[\"SSO_SILENT_SUCCESS\"] = \"msal:ssoSilentSuccess\";\r\n EventType[\"SSO_SILENT_FAILURE\"] = \"msal:ssoSilentFailure\";\r\n EventType[\"ACQUIRE_TOKEN_BY_CODE_START\"] = \"msal:acquireTokenByCodeStart\";\r\n EventType[\"ACQUIRE_TOKEN_BY_CODE_SUCCESS\"] = \"msal:acquireTokenByCodeSuccess\";\r\n EventType[\"ACQUIRE_TOKEN_BY_CODE_FAILURE\"] = \"msal:acquireTokenByCodeFailure\";\r\n EventType[\"HANDLE_REDIRECT_START\"] = \"msal:handleRedirectStart\";\r\n EventType[\"HANDLE_REDIRECT_END\"] = \"msal:handleRedirectEnd\";\r\n EventType[\"POPUP_OPENED\"] = \"msal:popupOpened\";\r\n EventType[\"LOGOUT_START\"] = \"msal:logoutStart\";\r\n EventType[\"LOGOUT_SUCCESS\"] = \"msal:logoutSuccess\";\r\n EventType[\"LOGOUT_FAILURE\"] = \"msal:logoutFailure\";\r\n EventType[\"LOGOUT_END\"] = \"msal:logoutEnd\";\r\n})(EventType || (EventType = {}));\n\nexport { EventType };\n//# sourceMappingURL=EventType.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { AccountEntity, CacheManager } from '@azure/msal-common';\nimport { EventType } from './EventType.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar EventHandler = /** @class */ (function () {\r\n function EventHandler(logger, browserCrypto) {\r\n this.eventCallbacks = new Map();\r\n this.logger = logger;\r\n this.browserCrypto = browserCrypto;\r\n this.listeningToStorageEvents = false;\r\n this.handleAccountCacheChange = this.handleAccountCacheChange.bind(this);\r\n }\r\n /**\r\n * Adds event callbacks to array\r\n * @param callback\r\n */\r\n EventHandler.prototype.addEventCallback = function (callback) {\r\n if (typeof window !== \"undefined\") {\r\n var callbackId = this.browserCrypto.createNewGuid();\r\n this.eventCallbacks.set(callbackId, callback);\r\n this.logger.verbose(\"Event callback registered with id: \" + callbackId);\r\n return callbackId;\r\n }\r\n return null;\r\n };\r\n /**\r\n * Removes callback with provided id from callback array\r\n * @param callbackId\r\n */\r\n EventHandler.prototype.removeEventCallback = function (callbackId) {\r\n this.eventCallbacks.delete(callbackId);\r\n this.logger.verbose(\"Event callback \" + callbackId + \" removed.\");\r\n };\r\n /**\r\n * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n EventHandler.prototype.enableAccountStorageEvents = function () {\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n if (!this.listeningToStorageEvents) {\r\n this.logger.verbose(\"Adding account storage listener.\");\r\n this.listeningToStorageEvents = true;\r\n window.addEventListener(\"storage\", this.handleAccountCacheChange);\r\n }\r\n else {\r\n this.logger.verbose(\"Account storage listener already registered.\");\r\n }\r\n };\r\n /**\r\n * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n EventHandler.prototype.disableAccountStorageEvents = function () {\r\n if (typeof window === \"undefined\") {\r\n return;\r\n }\r\n if (this.listeningToStorageEvents) {\r\n this.logger.verbose(\"Removing account storage listener.\");\r\n window.removeEventListener(\"storage\", this.handleAccountCacheChange);\r\n this.listeningToStorageEvents = false;\r\n }\r\n else {\r\n this.logger.verbose(\"No account storage listener registered.\");\r\n }\r\n };\r\n /**\r\n * Emits events by calling callback with event message\r\n * @param eventType\r\n * @param interactionType\r\n * @param payload\r\n * @param error\r\n */\r\n EventHandler.prototype.emitEvent = function (eventType, interactionType, payload, error) {\r\n var _this = this;\r\n if (typeof window !== \"undefined\") {\r\n var message_1 = {\r\n eventType: eventType,\r\n interactionType: interactionType || null,\r\n payload: payload || null,\r\n error: error || null,\r\n timestamp: Date.now()\r\n };\r\n this.logger.info(\"Emitting event: \" + eventType);\r\n this.eventCallbacks.forEach(function (callback, callbackId) {\r\n _this.logger.verbose(\"Emitting event to callback \" + callbackId + \": \" + eventType);\r\n callback.apply(null, [message_1]);\r\n });\r\n }\r\n };\r\n /**\r\n * Emit account added/removed events when cached accounts are changed in a different tab or frame\r\n */\r\n EventHandler.prototype.handleAccountCacheChange = function (e) {\r\n try {\r\n var cacheValue = e.newValue || e.oldValue;\r\n if (!cacheValue) {\r\n return;\r\n }\r\n var parsedValue = JSON.parse(cacheValue);\r\n if (typeof parsedValue !== \"object\" || !AccountEntity.isAccountEntity(parsedValue)) {\r\n return;\r\n }\r\n var accountEntity = CacheManager.toObject(new AccountEntity(), parsedValue);\r\n var accountInfo = accountEntity.getAccountInfo();\r\n if (!e.oldValue && e.newValue) {\r\n this.logger.info(\"Account was added to cache in a different window\");\r\n this.emitEvent(EventType.ACCOUNT_ADDED, undefined, accountInfo);\r\n }\r\n else if (!e.newValue && e.oldValue) {\r\n this.logger.info(\"Account was removed from cache in a different window\");\r\n this.emitEvent(EventType.ACCOUNT_REMOVED, undefined, accountInfo);\r\n }\r\n }\r\n catch (e) {\r\n return;\r\n }\r\n };\r\n return EventHandler;\r\n}());\n\nexport { EventHandler };\n//# sourceMappingURL=EventHandler.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { AuthToken } from '../account/AuthToken.js';\nimport { TimeUtils } from '../utils/TimeUtils.js';\nimport { UrlString } from '../url/UrlString.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar KeyLocation;\r\n(function (KeyLocation) {\r\n KeyLocation[\"SW\"] = \"sw\";\r\n KeyLocation[\"UHW\"] = \"uhw\";\r\n})(KeyLocation || (KeyLocation = {}));\r\nvar PopTokenGenerator = /** @class */ (function () {\r\n function PopTokenGenerator(cryptoUtils) {\r\n this.cryptoUtils = cryptoUtils;\r\n }\r\n /**\r\n * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters\r\n * @param request\r\n * @returns\r\n */\r\n PopTokenGenerator.prototype.generateCnf = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reqCnf;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.generateKid(request)];\r\n case 1:\r\n reqCnf = _a.sent();\r\n return [2 /*return*/, this.cryptoUtils.base64Encode(JSON.stringify(reqCnf))];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Generates the hash of the req_cnf\r\n * @param cnf\r\n * @returns\r\n */\r\n PopTokenGenerator.prototype.generateCnfHash = function (cnf) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.cryptoUtils.hashString(cnf)];\r\n });\r\n });\r\n };\r\n /**\r\n * Generates key_id for a SHR token request\r\n * @param request\r\n * @returns\r\n */\r\n PopTokenGenerator.prototype.generateKid = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var kidThumbprint;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.cryptoUtils.getPublicKeyThumbprint(request)];\r\n case 1:\r\n kidThumbprint = _a.sent();\r\n return [2 /*return*/, {\r\n kid: kidThumbprint,\r\n xms_ksl: KeyLocation.SW\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Signs the POP access_token with the local generated key-pair\r\n * @param accessToken\r\n * @param request\r\n * @returns\r\n */\r\n PopTokenGenerator.prototype.signPopToken = function (accessToken, request) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var tokenClaims;\r\n return __generator(this, function (_b) {\r\n tokenClaims = AuthToken.extractTokenClaims(accessToken, this.cryptoUtils);\r\n if (!((_a = tokenClaims === null || tokenClaims === void 0 ? void 0 : tokenClaims.cnf) === null || _a === void 0 ? void 0 : _a.kid)) {\r\n throw ClientAuthError.createTokenClaimsRequiredError();\r\n }\r\n return [2 /*return*/, this.signPayload(accessToken, tokenClaims.cnf.kid, request)];\r\n });\r\n });\r\n };\r\n /**\r\n * Utility function to generate the signed JWT for an access_token\r\n * @param payload\r\n * @param kid\r\n * @param request\r\n * @param claims\r\n * @returns\r\n */\r\n PopTokenGenerator.prototype.signPayload = function (payload, kid, request, claims) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var resourceRequestMethod, resourceRequestUri, shrClaims, shrNonce, resourceUrlString, resourceUrlComponents;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n resourceRequestMethod = request.resourceRequestMethod, resourceRequestUri = request.resourceRequestUri, shrClaims = request.shrClaims, shrNonce = request.shrNonce;\r\n resourceUrlString = (resourceRequestUri) ? new UrlString(resourceRequestUri) : undefined;\r\n resourceUrlComponents = resourceUrlString === null || resourceUrlString === void 0 ? void 0 : resourceUrlString.getUrlComponents();\r\n return [4 /*yield*/, this.cryptoUtils.signJwt(__assign({ at: payload, ts: TimeUtils.nowSeconds(), m: resourceRequestMethod === null || resourceRequestMethod === void 0 ? void 0 : resourceRequestMethod.toUpperCase(), u: resourceUrlComponents === null || resourceUrlComponents === void 0 ? void 0 : resourceUrlComponents.HostNameAndPort, nonce: shrNonce || this.cryptoUtils.createNewGuid(), p: resourceUrlComponents === null || resourceUrlComponents === void 0 ? void 0 : resourceUrlComponents.AbsolutePath, q: (resourceUrlComponents === null || resourceUrlComponents === void 0 ? void 0 : resourceUrlComponents.QueryString) ? [[], resourceUrlComponents.QueryString] : undefined, client_claims: shrClaims || undefined }, claims), kid, request.correlationId)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n return PopTokenGenerator;\r\n}());\n\nexport { PopTokenGenerator };\n//# sourceMappingURL=PopTokenGenerator.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { ThrottlingConstants, CacheSchemaType, Constants, HeaderNames } from '../utils/Constants.js';\nimport { ServerError } from '../error/ServerError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ThrottlingUtils = /** @class */ (function () {\r\n function ThrottlingUtils() {\r\n }\r\n /**\r\n * Prepares a RequestThumbprint to be stored as a key.\r\n * @param thumbprint\r\n */\r\n ThrottlingUtils.generateThrottlingStorageKey = function (thumbprint) {\r\n return ThrottlingConstants.THROTTLING_PREFIX + \".\" + JSON.stringify(thumbprint);\r\n };\r\n /**\r\n * Performs necessary throttling checks before a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n */\r\n ThrottlingUtils.preProcess = function (cacheManager, thumbprint) {\r\n var _a;\r\n var key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\r\n var value = cacheManager.getThrottlingCache(key);\r\n if (value) {\r\n if (value.throttleTime < Date.now()) {\r\n cacheManager.removeItem(key, CacheSchemaType.THROTTLING);\r\n return;\r\n }\r\n throw new ServerError(((_a = value.errorCodes) === null || _a === void 0 ? void 0 : _a.join(\" \")) || Constants.EMPTY_STRING, value.errorMessage, value.subError);\r\n }\r\n };\r\n /**\r\n * Performs necessary throttling checks after a network request.\r\n * @param cacheManager\r\n * @param thumbprint\r\n * @param response\r\n */\r\n ThrottlingUtils.postProcess = function (cacheManager, thumbprint, response) {\r\n if (ThrottlingUtils.checkResponseStatus(response) || ThrottlingUtils.checkResponseForRetryAfter(response)) {\r\n var thumbprintValue = {\r\n throttleTime: ThrottlingUtils.calculateThrottleTime(parseInt(response.headers[HeaderNames.RETRY_AFTER])),\r\n error: response.body.error,\r\n errorCodes: response.body.error_codes,\r\n errorMessage: response.body.error_description,\r\n subError: response.body.suberror\r\n };\r\n cacheManager.setThrottlingCache(ThrottlingUtils.generateThrottlingStorageKey(thumbprint), thumbprintValue);\r\n }\r\n };\r\n /**\r\n * Checks a NetworkResponse object's status codes against 429 or 5xx\r\n * @param response\r\n */\r\n ThrottlingUtils.checkResponseStatus = function (response) {\r\n return response.status === 429 || response.status >= 500 && response.status < 600;\r\n };\r\n /**\r\n * Checks a NetworkResponse object's RetryAfter header\r\n * @param response\r\n */\r\n ThrottlingUtils.checkResponseForRetryAfter = function (response) {\r\n if (response.headers) {\r\n return response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) && (response.status < 200 || response.status >= 300);\r\n }\r\n return false;\r\n };\r\n /**\r\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\r\n * @param throttleTime\r\n */\r\n ThrottlingUtils.calculateThrottleTime = function (throttleTime) {\r\n var time = throttleTime <= 0 ? 0 : throttleTime;\r\n var currentSeconds = Date.now() / 1000;\r\n return Math.floor(Math.min(currentSeconds + (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS), currentSeconds + ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS) * 1000);\r\n };\r\n ThrottlingUtils.removeThrottle = function (cacheManager, clientId, request, homeAccountIdentifier) {\r\n var thumbprint = {\r\n clientId: clientId,\r\n authority: request.authority,\r\n scopes: request.scopes,\r\n homeAccountIdentifier: homeAccountIdentifier,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n var key = this.generateThrottlingStorageKey(thumbprint);\r\n return cacheManager.removeItem(key, CacheSchemaType.THROTTLING);\r\n };\r\n return ThrottlingUtils;\r\n}());\n\nexport { ThrottlingUtils };\n//# sourceMappingURL=ThrottlingUtils.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { ThrottlingUtils } from './ThrottlingUtils.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { AuthError } from '../error/AuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NetworkManager = /** @class */ (function () {\r\n function NetworkManager(networkClient, cacheManager) {\r\n this.networkClient = networkClient;\r\n this.cacheManager = cacheManager;\r\n }\r\n /**\r\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\r\n * @param thumbprint\r\n * @param tokenEndpoint\r\n * @param options\r\n */\r\n NetworkManager.prototype.sendPostRequest = function (thumbprint, tokenEndpoint, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ThrottlingUtils.preProcess(this.cacheManager, thumbprint);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.networkClient.sendPostRequestAsync(tokenEndpoint, options)];\r\n case 2:\r\n response = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof AuthError) {\r\n throw e_1;\r\n }\r\n else {\r\n throw ClientAuthError.createNetworkError(tokenEndpoint, e_1);\r\n }\r\n case 4:\r\n ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response);\r\n return [2 /*return*/, response];\r\n }\r\n });\r\n });\r\n };\r\n return NetworkManager;\r\n}());\n\nexport { NetworkManager };\n//# sourceMappingURL=NetworkManager.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { buildClientConfiguration } from '../config/ClientConfiguration.js';\nimport { NetworkManager } from '../network/NetworkManager.js';\nimport { Logger } from '../logger/Logger.js';\nimport { HeaderNames, Constants } from '../utils/Constants.js';\nimport { name, version } from '../packageMetadata.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { CcsCredentialType } from '../account/CcsCredential.js';\nimport { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\r\n */\r\nvar BaseClient = /** @class */ (function () {\r\n function BaseClient(configuration) {\r\n // Set the configuration\r\n this.config = buildClientConfiguration(configuration);\r\n // Initialize the logger\r\n this.logger = new Logger(this.config.loggerOptions, name, version);\r\n // Initialize crypto\r\n this.cryptoUtils = this.config.cryptoInterface;\r\n // Initialize storage interface\r\n this.cacheManager = this.config.storageInterface;\r\n // Set the network interface\r\n this.networkClient = this.config.networkInterface;\r\n // Set the NetworkManager\r\n this.networkManager = new NetworkManager(this.networkClient, this.cacheManager);\r\n // Set TelemetryManager\r\n this.serverTelemetryManager = this.config.serverTelemetryManager;\r\n // set Authority\r\n this.authority = this.config.authOptions.authority;\r\n }\r\n /**\r\n * Creates default headers for requests to token endpoint\r\n */\r\n BaseClient.prototype.createTokenRequestHeaders = function (ccsCred) {\r\n var headers = {};\r\n headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\r\n if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n var clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n headers[HeaderNames.CCS_HEADER] = \"Oid:\" + clientInfo.uid + \"@\" + clientInfo.utid;\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n headers[HeaderNames.CCS_HEADER] = \"UPN: \" + ccsCred.credential;\r\n break;\r\n }\r\n }\r\n return headers;\r\n };\r\n /**\r\n * Http post to token endpoint\r\n * @param tokenEndpoint\r\n * @param queryString\r\n * @param headers\r\n * @param thumbprint\r\n */\r\n BaseClient.prototype.executePostToTokenEndpoint = function (tokenEndpoint, queryString, headers, thumbprint) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.networkManager.sendPostRequest(thumbprint, tokenEndpoint, { body: queryString, headers: headers, proxyUrl: this.config.systemOptions.proxyUrl })];\r\n case 1:\r\n response = _a.sent();\r\n if (this.config.serverTelemetryManager && response.status < 500 && response.status !== 429) {\r\n // Telemetry data successfully logged by server, clear Telemetry cache\r\n this.config.serverTelemetryManager.clearTelemetryCache();\r\n }\r\n return [2 /*return*/, response];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates the authority object of the client. Endpoint discovery must be completed.\r\n * @param updatedAuthority\r\n */\r\n BaseClient.prototype.updateAuthority = function (updatedAuthority) {\r\n if (!updatedAuthority.discoveryComplete()) {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Updated authority has not completed endpoint discovery.\");\r\n }\r\n this.authority = updatedAuthority;\r\n };\r\n return BaseClient;\r\n}());\n\nexport { BaseClient };\n//# sourceMappingURL=BaseClient.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { CodeChallengeMethodValues, PromptValue } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Validates server consumable params from the \"request\" objects\r\n */\r\nvar RequestValidator = /** @class */ (function () {\r\n function RequestValidator() {\r\n }\r\n /**\r\n * Utility to check if the `redirectUri` in the request is a non-null value\r\n * @param redirectUri\r\n */\r\n RequestValidator.validateRedirectUri = function (redirectUri) {\r\n if (StringUtils.isEmpty(redirectUri)) {\r\n throw ClientConfigurationError.createRedirectUriEmptyError();\r\n }\r\n };\r\n /**\r\n * Utility to validate prompt sent by the user in the request\r\n * @param prompt\r\n */\r\n RequestValidator.validatePrompt = function (prompt) {\r\n var promptValues = [];\r\n for (var value in PromptValue) {\r\n promptValues.push(PromptValue[value]);\r\n }\r\n if (promptValues.indexOf(prompt) < 0) {\r\n throw ClientConfigurationError.createInvalidPromptError(prompt);\r\n }\r\n };\r\n RequestValidator.validateClaims = function (claims) {\r\n try {\r\n JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createInvalidClaimsRequestError();\r\n }\r\n };\r\n /**\r\n * Utility to validate code_challenge and code_challenge_method\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n RequestValidator.validateCodeChallengeParams = function (codeChallenge, codeChallengeMethod) {\r\n if (StringUtils.isEmpty(codeChallenge) || StringUtils.isEmpty(codeChallengeMethod)) {\r\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\r\n }\r\n else {\r\n this.validateCodeChallengeMethod(codeChallengeMethod);\r\n }\r\n };\r\n /**\r\n * Utility to validate code_challenge_method\r\n * @param codeChallengeMethod\r\n */\r\n RequestValidator.validateCodeChallengeMethod = function (codeChallengeMethod) {\r\n if ([\r\n CodeChallengeMethodValues.PLAIN,\r\n CodeChallengeMethodValues.S256\r\n ].indexOf(codeChallengeMethod) < 0) {\r\n throw ClientConfigurationError.createInvalidCodeChallengeMethodError();\r\n }\r\n };\r\n /**\r\n * Removes unnecessary or duplicate query parameters from extraQueryParameters\r\n * @param request\r\n */\r\n RequestValidator.sanitizeEQParams = function (eQParams, queryParams) {\r\n if (!eQParams) {\r\n return {};\r\n }\r\n // Remove any query parameters already included in SSO params\r\n queryParams.forEach(function (value, key) {\r\n if (eQParams[key]) {\r\n delete eQParams[key];\r\n }\r\n });\r\n return eQParams;\r\n };\r\n return RequestValidator;\r\n}());\n\nexport { RequestValidator };\n//# sourceMappingURL=RequestValidator.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __spreadArrays } from '../_virtual/_tslib.js';\nimport { AADServerParamKeys, Constants, ResponseMode, OIDC_DEFAULT_SCOPES, SSOTypes, HeaderNames, CLIENT_INFO, ClaimsRequestKeys, PasswordGrantConstants, AuthenticationScheme, ThrottlingConstants } from '../utils/Constants.js';\nimport { ScopeSet } from './ScopeSet.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { RequestValidator } from './RequestValidator.js';\nimport { StringUtils } from '../utils/StringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar RequestParameterBuilder = /** @class */ (function () {\r\n function RequestParameterBuilder() {\r\n this.parameters = new Map();\r\n }\r\n /**\r\n * add response_type = code\r\n */\r\n RequestParameterBuilder.prototype.addResponseTypeCode = function () {\r\n this.parameters.set(AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(Constants.CODE_RESPONSE_TYPE));\r\n };\r\n /**\r\n * add response_type = token id_token\r\n */\r\n RequestParameterBuilder.prototype.addResponseTypeForTokenAndIdToken = function () {\r\n this.parameters.set(AADServerParamKeys.RESPONSE_TYPE, encodeURIComponent(Constants.TOKEN_RESPONSE_TYPE + \" \" + Constants.ID_TOKEN_RESPONSE_TYPE));\r\n };\r\n /**\r\n * add response_mode. defaults to query.\r\n * @param responseMode\r\n */\r\n RequestParameterBuilder.prototype.addResponseMode = function (responseMode) {\r\n this.parameters.set(AADServerParamKeys.RESPONSE_MODE, encodeURIComponent((responseMode) ? responseMode : ResponseMode.QUERY));\r\n };\r\n /**\r\n * Add flag to indicate STS should attempt to use WAM if available\r\n */\r\n RequestParameterBuilder.prototype.addNativeBroker = function () {\r\n this.parameters.set(AADServerParamKeys.NATIVE_BROKER, encodeURIComponent(\"1\"));\r\n };\r\n /**\r\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\r\n * @param scopeSet\r\n * @param addOidcScopes\r\n */\r\n RequestParameterBuilder.prototype.addScopes = function (scopes, addOidcScopes) {\r\n if (addOidcScopes === void 0) { addOidcScopes = true; }\r\n var requestScopes = addOidcScopes ? __spreadArrays(scopes || [], OIDC_DEFAULT_SCOPES) : scopes || [];\r\n var scopeSet = new ScopeSet(requestScopes);\r\n this.parameters.set(AADServerParamKeys.SCOPE, encodeURIComponent(scopeSet.printScopes()));\r\n };\r\n /**\r\n * add clientId\r\n * @param clientId\r\n */\r\n RequestParameterBuilder.prototype.addClientId = function (clientId) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ID, encodeURIComponent(clientId));\r\n };\r\n /**\r\n * add redirect_uri\r\n * @param redirectUri\r\n */\r\n RequestParameterBuilder.prototype.addRedirectUri = function (redirectUri) {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(AADServerParamKeys.REDIRECT_URI, encodeURIComponent(redirectUri));\r\n };\r\n /**\r\n * add post logout redirectUri\r\n * @param redirectUri\r\n */\r\n RequestParameterBuilder.prototype.addPostLogoutRedirectUri = function (redirectUri) {\r\n RequestValidator.validateRedirectUri(redirectUri);\r\n this.parameters.set(AADServerParamKeys.POST_LOGOUT_URI, encodeURIComponent(redirectUri));\r\n };\r\n /**\r\n * add id_token_hint to logout request\r\n * @param idTokenHint\r\n */\r\n RequestParameterBuilder.prototype.addIdTokenHint = function (idTokenHint) {\r\n this.parameters.set(AADServerParamKeys.ID_TOKEN_HINT, encodeURIComponent(idTokenHint));\r\n };\r\n /**\r\n * add domain_hint\r\n * @param domainHint\r\n */\r\n RequestParameterBuilder.prototype.addDomainHint = function (domainHint) {\r\n this.parameters.set(SSOTypes.DOMAIN_HINT, encodeURIComponent(domainHint));\r\n };\r\n /**\r\n * add login_hint\r\n * @param loginHint\r\n */\r\n RequestParameterBuilder.prototype.addLoginHint = function (loginHint) {\r\n this.parameters.set(SSOTypes.LOGIN_HINT, encodeURIComponent(loginHint));\r\n };\r\n /**\r\n * Adds the CCS (Cache Credential Service) query parameter for login_hint\r\n * @param loginHint\r\n */\r\n RequestParameterBuilder.prototype.addCcsUpn = function (loginHint) {\r\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(\"UPN:\" + loginHint));\r\n };\r\n /**\r\n * Adds the CCS (Cache Credential Service) query parameter for account object\r\n * @param loginHint\r\n */\r\n RequestParameterBuilder.prototype.addCcsOid = function (clientInfo) {\r\n this.parameters.set(HeaderNames.CCS_HEADER, encodeURIComponent(\"Oid:\" + clientInfo.uid + \"@\" + clientInfo.utid));\r\n };\r\n /**\r\n * add sid\r\n * @param sid\r\n */\r\n RequestParameterBuilder.prototype.addSid = function (sid) {\r\n this.parameters.set(SSOTypes.SID, encodeURIComponent(sid));\r\n };\r\n /**\r\n * add claims\r\n * @param claims\r\n */\r\n RequestParameterBuilder.prototype.addClaims = function (claims, clientCapabilities) {\r\n var mergedClaims = this.addClientCapabilitiesToClaims(claims, clientCapabilities);\r\n RequestValidator.validateClaims(mergedClaims);\r\n this.parameters.set(AADServerParamKeys.CLAIMS, encodeURIComponent(mergedClaims));\r\n };\r\n /**\r\n * add correlationId\r\n * @param correlationId\r\n */\r\n RequestParameterBuilder.prototype.addCorrelationId = function (correlationId) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_REQUEST_ID, encodeURIComponent(correlationId));\r\n };\r\n /**\r\n * add library info query params\r\n * @param libraryInfo\r\n */\r\n RequestParameterBuilder.prototype.addLibraryInfo = function (libraryInfo) {\r\n // Telemetry Info\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_SKU, libraryInfo.sku);\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_VER, libraryInfo.version);\r\n if (libraryInfo.os) {\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_OS, libraryInfo.os);\r\n }\r\n if (libraryInfo.cpu) {\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_CPU, libraryInfo.cpu);\r\n }\r\n };\r\n /**\r\n * Add client telemetry parameters\r\n * @param appTelemetry\r\n */\r\n RequestParameterBuilder.prototype.addApplicationTelemetry = function (appTelemetry) {\r\n if (appTelemetry === null || appTelemetry === void 0 ? void 0 : appTelemetry.appName) {\r\n this.parameters.set(AADServerParamKeys.X_APP_NAME, appTelemetry.appName);\r\n }\r\n if (appTelemetry === null || appTelemetry === void 0 ? void 0 : appTelemetry.appVersion) {\r\n this.parameters.set(AADServerParamKeys.X_APP_VER, appTelemetry.appVersion);\r\n }\r\n };\r\n /**\r\n * add prompt\r\n * @param prompt\r\n */\r\n RequestParameterBuilder.prototype.addPrompt = function (prompt) {\r\n RequestValidator.validatePrompt(prompt);\r\n this.parameters.set(\"\" + AADServerParamKeys.PROMPT, encodeURIComponent(prompt));\r\n };\r\n /**\r\n * add state\r\n * @param state\r\n */\r\n RequestParameterBuilder.prototype.addState = function (state) {\r\n if (!StringUtils.isEmpty(state)) {\r\n this.parameters.set(AADServerParamKeys.STATE, encodeURIComponent(state));\r\n }\r\n };\r\n /**\r\n * add nonce\r\n * @param nonce\r\n */\r\n RequestParameterBuilder.prototype.addNonce = function (nonce) {\r\n this.parameters.set(AADServerParamKeys.NONCE, encodeURIComponent(nonce));\r\n };\r\n /**\r\n * add code_challenge and code_challenge_method\r\n * - throw if either of them are not passed\r\n * @param codeChallenge\r\n * @param codeChallengeMethod\r\n */\r\n RequestParameterBuilder.prototype.addCodeChallengeParams = function (codeChallenge, codeChallengeMethod) {\r\n RequestValidator.validateCodeChallengeParams(codeChallenge, codeChallengeMethod);\r\n if (codeChallenge && codeChallengeMethod) {\r\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE, encodeURIComponent(codeChallenge));\r\n this.parameters.set(AADServerParamKeys.CODE_CHALLENGE_METHOD, encodeURIComponent(codeChallengeMethod));\r\n }\r\n else {\r\n throw ClientConfigurationError.createInvalidCodeChallengeParamsError();\r\n }\r\n };\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n RequestParameterBuilder.prototype.addAuthorizationCode = function (code) {\r\n this.parameters.set(AADServerParamKeys.CODE, encodeURIComponent(code));\r\n };\r\n /**\r\n * add the `authorization_code` passed by the user to exchange for a token\r\n * @param code\r\n */\r\n RequestParameterBuilder.prototype.addDeviceCode = function (code) {\r\n this.parameters.set(AADServerParamKeys.DEVICE_CODE, encodeURIComponent(code));\r\n };\r\n /**\r\n * add the `refreshToken` passed by the user\r\n * @param refreshToken\r\n */\r\n RequestParameterBuilder.prototype.addRefreshToken = function (refreshToken) {\r\n this.parameters.set(AADServerParamKeys.REFRESH_TOKEN, encodeURIComponent(refreshToken));\r\n };\r\n /**\r\n * add the `code_verifier` passed by the user to exchange for a token\r\n * @param codeVerifier\r\n */\r\n RequestParameterBuilder.prototype.addCodeVerifier = function (codeVerifier) {\r\n this.parameters.set(AADServerParamKeys.CODE_VERIFIER, encodeURIComponent(codeVerifier));\r\n };\r\n /**\r\n * add client_secret\r\n * @param clientSecret\r\n */\r\n RequestParameterBuilder.prototype.addClientSecret = function (clientSecret) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_SECRET, encodeURIComponent(clientSecret));\r\n };\r\n /**\r\n * add clientAssertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n RequestParameterBuilder.prototype.addClientAssertion = function (clientAssertion) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION, encodeURIComponent(clientAssertion));\r\n };\r\n /**\r\n * add clientAssertionType for confidential client flows\r\n * @param clientAssertionType\r\n */\r\n RequestParameterBuilder.prototype.addClientAssertionType = function (clientAssertionType) {\r\n this.parameters.set(AADServerParamKeys.CLIENT_ASSERTION_TYPE, encodeURIComponent(clientAssertionType));\r\n };\r\n /**\r\n * add OBO assertion for confidential client flows\r\n * @param clientAssertion\r\n */\r\n RequestParameterBuilder.prototype.addOboAssertion = function (oboAssertion) {\r\n this.parameters.set(AADServerParamKeys.OBO_ASSERTION, encodeURIComponent(oboAssertion));\r\n };\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n RequestParameterBuilder.prototype.addRequestTokenUse = function (tokenUse) {\r\n this.parameters.set(AADServerParamKeys.REQUESTED_TOKEN_USE, encodeURIComponent(tokenUse));\r\n };\r\n /**\r\n * add grant type\r\n * @param grantType\r\n */\r\n RequestParameterBuilder.prototype.addGrantType = function (grantType) {\r\n this.parameters.set(AADServerParamKeys.GRANT_TYPE, encodeURIComponent(grantType));\r\n };\r\n /**\r\n * add client info\r\n *\r\n */\r\n RequestParameterBuilder.prototype.addClientInfo = function () {\r\n this.parameters.set(CLIENT_INFO, \"1\");\r\n };\r\n /**\r\n * add extraQueryParams\r\n * @param eQparams\r\n */\r\n RequestParameterBuilder.prototype.addExtraQueryParameters = function (eQparams) {\r\n var _this = this;\r\n RequestValidator.sanitizeEQParams(eQparams, this.parameters);\r\n Object.keys(eQparams).forEach(function (key) {\r\n _this.parameters.set(key, eQparams[key]);\r\n });\r\n };\r\n RequestParameterBuilder.prototype.addClientCapabilitiesToClaims = function (claims, clientCapabilities) {\r\n var mergedClaims;\r\n // Parse provided claims into JSON object or initialize empty object\r\n if (!claims) {\r\n mergedClaims = {};\r\n }\r\n else {\r\n try {\r\n mergedClaims = JSON.parse(claims);\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createInvalidClaimsRequestError();\r\n }\r\n }\r\n if (clientCapabilities && clientCapabilities.length > 0) {\r\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) {\r\n // Add access_token key to claims object\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\r\n }\r\n // Add xms_cc claim with provided clientCapabilities to access_token key\r\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][ClaimsRequestKeys.XMS_CC] = {\r\n values: clientCapabilities\r\n };\r\n }\r\n return JSON.stringify(mergedClaims);\r\n };\r\n /**\r\n * adds `username` for Password Grant flow\r\n * @param username\r\n */\r\n RequestParameterBuilder.prototype.addUsername = function (username) {\r\n this.parameters.set(PasswordGrantConstants.username, username);\r\n };\r\n /**\r\n * adds `password` for Password Grant flow\r\n * @param password\r\n */\r\n RequestParameterBuilder.prototype.addPassword = function (password) {\r\n this.parameters.set(PasswordGrantConstants.password, password);\r\n };\r\n /**\r\n * add pop_jwk to query params\r\n * @param cnfString\r\n */\r\n RequestParameterBuilder.prototype.addPopToken = function (cnfString) {\r\n if (!StringUtils.isEmpty(cnfString)) {\r\n this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.POP);\r\n this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(cnfString));\r\n }\r\n };\r\n /**\r\n * add SSH JWK and key ID to query params\r\n */\r\n RequestParameterBuilder.prototype.addSshJwk = function (sshJwkString) {\r\n if (!StringUtils.isEmpty(sshJwkString)) {\r\n this.parameters.set(AADServerParamKeys.TOKEN_TYPE, AuthenticationScheme.SSH);\r\n this.parameters.set(AADServerParamKeys.REQ_CNF, encodeURIComponent(sshJwkString));\r\n }\r\n };\r\n /**\r\n * add server telemetry fields\r\n * @param serverTelemetryManager\r\n */\r\n RequestParameterBuilder.prototype.addServerTelemetry = function (serverTelemetryManager) {\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_CURR_TELEM, serverTelemetryManager.generateCurrentRequestHeaderValue());\r\n this.parameters.set(AADServerParamKeys.X_CLIENT_LAST_TELEM, serverTelemetryManager.generateLastRequestHeaderValue());\r\n };\r\n /**\r\n * Adds parameter that indicates to the server that throttling is supported\r\n */\r\n RequestParameterBuilder.prototype.addThrottling = function () {\r\n this.parameters.set(AADServerParamKeys.X_MS_LIB_CAPABILITY, ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE);\r\n };\r\n /**\r\n * Adds logout_hint parameter for \"silent\" logout which prevent server account picker\r\n */\r\n RequestParameterBuilder.prototype.addLogoutHint = function (logoutHint) {\r\n this.parameters.set(AADServerParamKeys.LOGOUT_HINT, encodeURIComponent(logoutHint));\r\n };\r\n /**\r\n * Utility to create a URL from the params map\r\n */\r\n RequestParameterBuilder.prototype.createQueryString = function () {\r\n var queryParameterArray = new Array();\r\n this.parameters.forEach(function (value, key) {\r\n queryParameterArray.push(key + \"=\" + value);\r\n });\r\n return queryParameterArray.join(\"&\");\r\n };\r\n return RequestParameterBuilder;\r\n}());\n\nexport { RequestParameterBuilder };\n//# sourceMappingURL=RequestParameterBuilder.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar CacheRecord = /** @class */ (function () {\r\n function CacheRecord(accountEntity, idTokenEntity, accessTokenEntity, refreshTokenEntity, appMetadataEntity) {\r\n this.account = accountEntity || null;\r\n this.idToken = idTokenEntity || null;\r\n this.accessToken = accessTokenEntity || null;\r\n this.refreshToken = refreshTokenEntity || null;\r\n this.appMetadata = appMetadataEntity || null;\r\n }\r\n return CacheRecord;\r\n}());\n\nexport { CacheRecord };\n//# sourceMappingURL=CacheRecord.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class instance helps track the memory changes facilitating\r\n * decisions to read from and write to the persistent cache\r\n */ var TokenCacheContext = /** @class */ (function () {\r\n function TokenCacheContext(tokenCache, hasChanged) {\r\n this.cache = tokenCache;\r\n this.hasChanged = hasChanged;\r\n }\r\n Object.defineProperty(TokenCacheContext.prototype, \"cacheHasChanged\", {\r\n /**\r\n * boolean which indicates the changes in cache\r\n */\r\n get: function () {\r\n return this.hasChanged;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(TokenCacheContext.prototype, \"tokenCache\", {\r\n /**\r\n * function to retrieve the token cache\r\n */\r\n get: function () {\r\n return this.cache;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return TokenCacheContext;\r\n}());\n\nexport { TokenCacheContext };\n//# sourceMappingURL=TokenCacheContext.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { buildClientInfo } from '../account/ClientInfo.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ServerError } from '../error/ServerError.js';\nimport { AuthToken } from '../account/AuthToken.js';\nimport { ScopeSet } from '../request/ScopeSet.js';\nimport { AccountEntity } from '../cache/entities/AccountEntity.js';\nimport { AuthorityType } from '../authority/AuthorityType.js';\nimport { IdTokenEntity } from '../cache/entities/IdTokenEntity.js';\nimport { AccessTokenEntity } from '../cache/entities/AccessTokenEntity.js';\nimport { RefreshTokenEntity } from '../cache/entities/RefreshTokenEntity.js';\nimport { InteractionRequiredAuthError } from '../error/InteractionRequiredAuthError.js';\nimport { CacheRecord } from '../cache/entities/CacheRecord.js';\nimport { ProtocolUtils } from '../utils/ProtocolUtils.js';\nimport { Constants, AuthenticationScheme, THE_FAMILY_ID } from '../utils/Constants.js';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.js';\nimport { AppMetadataEntity } from '../cache/entities/AppMetadataEntity.js';\nimport { TokenCacheContext } from '../cache/persistence/TokenCacheContext.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Class that handles response parsing.\r\n */\r\nvar ResponseHandler = /** @class */ (function () {\r\n function ResponseHandler(clientId, cacheStorage, cryptoObj, logger, serializableCache, persistencePlugin) {\r\n this.clientId = clientId;\r\n this.cacheStorage = cacheStorage;\r\n this.cryptoObj = cryptoObj;\r\n this.logger = logger;\r\n this.serializableCache = serializableCache;\r\n this.persistencePlugin = persistencePlugin;\r\n }\r\n /**\r\n * Function which validates server authorization code response.\r\n * @param serverResponseHash\r\n * @param cachedState\r\n * @param cryptoObj\r\n */\r\n ResponseHandler.prototype.validateServerAuthorizationCodeResponse = function (serverResponseHash, cachedState, cryptoObj) {\r\n if (!serverResponseHash.state || !cachedState) {\r\n throw !serverResponseHash.state ? ClientAuthError.createStateNotFoundError(\"Server State\") : ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n if (decodeURIComponent(serverResponseHash.state) !== decodeURIComponent(cachedState)) {\r\n throw ClientAuthError.createStateMismatchError();\r\n }\r\n // Check for error\r\n if (serverResponseHash.error || serverResponseHash.error_description || serverResponseHash.suberror) {\r\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponseHash.error, serverResponseHash.error_description, serverResponseHash.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\r\n }\r\n throw new ServerError(serverResponseHash.error || Constants.EMPTY_STRING, serverResponseHash.error_description, serverResponseHash.suberror);\r\n }\r\n if (serverResponseHash.client_info) {\r\n buildClientInfo(serverResponseHash.client_info, cryptoObj);\r\n }\r\n };\r\n /**\r\n * Function which validates server authorization token response.\r\n * @param serverResponse\r\n */\r\n ResponseHandler.prototype.validateTokenResponse = function (serverResponse) {\r\n // Check for error\r\n if (serverResponse.error || serverResponse.error_description || serverResponse.suberror) {\r\n if (InteractionRequiredAuthError.isInteractionRequiredError(serverResponse.error, serverResponse.error_description, serverResponse.suberror)) {\r\n throw new InteractionRequiredAuthError(serverResponse.error, serverResponse.error_description, serverResponse.suberror);\r\n }\r\n var errString = serverResponse.error_codes + \" - [\" + serverResponse.timestamp + \"]: \" + serverResponse.error_description + \" - Correlation ID: \" + serverResponse.correlation_id + \" - Trace ID: \" + serverResponse.trace_id;\r\n throw new ServerError(serverResponse.error, errString, serverResponse.suberror);\r\n }\r\n };\r\n /**\r\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\r\n * @param serverTokenResponse\r\n * @param authority\r\n */\r\n ResponseHandler.prototype.handleServerTokenResponse = function (serverTokenResponse, authority, reqTimestamp, request, authCodePayload, oboAssertion, handlingRefreshTokenResponse) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var idTokenObj, requestStateObj, cacheRecord, cacheContext, key, account;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (serverTokenResponse.id_token) {\r\n idTokenObj = new AuthToken(serverTokenResponse.id_token || Constants.EMPTY_STRING, this.cryptoObj);\r\n // token nonce check (TODO: Add a warning if no nonce is given?)\r\n if (authCodePayload && !StringUtils.isEmpty(authCodePayload.nonce)) {\r\n if (idTokenObj.claims.nonce !== authCodePayload.nonce) {\r\n throw ClientAuthError.createNonceMismatchError();\r\n }\r\n }\r\n }\r\n // generate homeAccountId\r\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(serverTokenResponse.client_info || Constants.EMPTY_STRING, authority.authorityType, this.logger, this.cryptoObj, idTokenObj);\r\n if (!!authCodePayload && !!authCodePayload.state) {\r\n requestStateObj = ProtocolUtils.parseRequestState(this.cryptoObj, authCodePayload.state);\r\n }\r\n // Add keyId from request to serverTokenResponse if defined\r\n serverTokenResponse.key_id = serverTokenResponse.key_id || request.sshKid || undefined;\r\n cacheRecord = this.generateCacheRecord(serverTokenResponse, authority, reqTimestamp, request, idTokenObj, oboAssertion, authCodePayload);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 5, 8]);\r\n if (!(this.persistencePlugin && this.serializableCache)) return [3 /*break*/, 3];\r\n this.logger.verbose(\"Persistence enabled, calling beforeCacheAccess\");\r\n cacheContext = new TokenCacheContext(this.serializableCache, true);\r\n return [4 /*yield*/, this.persistencePlugin.beforeCacheAccess(cacheContext)];\r\n case 2:\r\n _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n /*\r\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\r\n * If not present, we should return null, as it's the case that another application called removeAccount in between\r\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal.\r\n */\r\n if (handlingRefreshTokenResponse && cacheRecord.account) {\r\n key = cacheRecord.account.generateAccountKey();\r\n account = this.cacheStorage.getAccount(key);\r\n if (!account) {\r\n this.logger.warning(\"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\");\r\n return [2 /*return*/, ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj)];\r\n }\r\n }\r\n return [4 /*yield*/, this.cacheStorage.saveCacheRecord(cacheRecord)];\r\n case 4:\r\n _a.sent();\r\n return [3 /*break*/, 8];\r\n case 5:\r\n if (!(this.persistencePlugin && this.serializableCache && cacheContext)) return [3 /*break*/, 7];\r\n this.logger.verbose(\"Persistence enabled, calling afterCacheAccess\");\r\n return [4 /*yield*/, this.persistencePlugin.afterCacheAccess(cacheContext)];\r\n case 6:\r\n _a.sent();\r\n _a.label = 7;\r\n case 7: return [7 /*endfinally*/];\r\n case 8: return [2 /*return*/, ResponseHandler.generateAuthenticationResult(this.cryptoObj, authority, cacheRecord, false, request, idTokenObj, requestStateObj, serverTokenResponse.spa_code)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Generates CacheRecord\r\n * @param serverTokenResponse\r\n * @param idTokenObj\r\n * @param authority\r\n */\r\n ResponseHandler.prototype.generateCacheRecord = function (serverTokenResponse, authority, reqTimestamp, request, idTokenObj, oboAssertion, authCodePayload) {\r\n var env = authority.getPreferredCache();\r\n if (StringUtils.isEmpty(env)) {\r\n throw ClientAuthError.createInvalidCacheEnvironmentError();\r\n }\r\n // IdToken: non AAD scenarios can have empty realm\r\n var cachedIdToken;\r\n var cachedAccount;\r\n if (!StringUtils.isEmpty(serverTokenResponse.id_token) && !!idTokenObj) {\r\n cachedIdToken = IdTokenEntity.createIdTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.id_token || Constants.EMPTY_STRING, this.clientId, idTokenObj.claims.tid || Constants.EMPTY_STRING, oboAssertion);\r\n cachedAccount = this.generateAccountEntity(serverTokenResponse, idTokenObj, authority, oboAssertion, authCodePayload);\r\n }\r\n // AccessToken\r\n var cachedAccessToken = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.access_token)) {\r\n // If scopes not returned in server response, use request scopes\r\n var responseScopes = serverTokenResponse.scope ? ScopeSet.fromString(serverTokenResponse.scope) : new ScopeSet(request.scopes || []);\r\n /*\r\n * Use timestamp calculated before request\r\n * Server may return timestamps as strings, parse to numbers if so.\r\n */\r\n var expiresIn = (typeof serverTokenResponse.expires_in === \"string\" ? parseInt(serverTokenResponse.expires_in, 10) : serverTokenResponse.expires_in) || 0;\r\n var extExpiresIn = (typeof serverTokenResponse.ext_expires_in === \"string\" ? parseInt(serverTokenResponse.ext_expires_in, 10) : serverTokenResponse.ext_expires_in) || 0;\r\n var refreshIn = (typeof serverTokenResponse.refresh_in === \"string\" ? parseInt(serverTokenResponse.refresh_in, 10) : serverTokenResponse.refresh_in) || undefined;\r\n var tokenExpirationSeconds = reqTimestamp + expiresIn;\r\n var extendedTokenExpirationSeconds = tokenExpirationSeconds + extExpiresIn;\r\n var refreshOnSeconds = refreshIn && refreshIn > 0 ? reqTimestamp + refreshIn : undefined;\r\n // non AAD scenarios can have empty realm\r\n cachedAccessToken = AccessTokenEntity.createAccessTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.access_token || Constants.EMPTY_STRING, this.clientId, idTokenObj ? idTokenObj.claims.tid || Constants.EMPTY_STRING : authority.tenant, responseScopes.printScopes(), tokenExpirationSeconds, extendedTokenExpirationSeconds, this.cryptoObj, refreshOnSeconds, serverTokenResponse.token_type, oboAssertion, serverTokenResponse.key_id, request.claims, request.requestedClaimsHash);\r\n }\r\n // refreshToken\r\n var cachedRefreshToken = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.refresh_token)) {\r\n cachedRefreshToken = RefreshTokenEntity.createRefreshTokenEntity(this.homeAccountIdentifier, env, serverTokenResponse.refresh_token || Constants.EMPTY_STRING, this.clientId, serverTokenResponse.foci, oboAssertion);\r\n }\r\n // appMetadata\r\n var cachedAppMetadata = null;\r\n if (!StringUtils.isEmpty(serverTokenResponse.foci)) {\r\n cachedAppMetadata = AppMetadataEntity.createAppMetadataEntity(this.clientId, env, serverTokenResponse.foci);\r\n }\r\n return new CacheRecord(cachedAccount, cachedIdToken, cachedAccessToken, cachedRefreshToken, cachedAppMetadata);\r\n };\r\n /**\r\n * Generate Account\r\n * @param serverTokenResponse\r\n * @param idToken\r\n * @param authority\r\n */\r\n ResponseHandler.prototype.generateAccountEntity = function (serverTokenResponse, idToken, authority, oboAssertion, authCodePayload) {\r\n var authorityType = authority.authorityType;\r\n var cloudGraphHostName = authCodePayload ? authCodePayload.cloud_graph_host_name : Constants.EMPTY_STRING;\r\n var msGraphhost = authCodePayload ? authCodePayload.msgraph_host : Constants.EMPTY_STRING;\r\n // ADFS does not require client_info in the response\r\n if (authorityType === AuthorityType.Adfs) {\r\n this.logger.verbose(\"Authority type is ADFS, creating ADFS account\");\r\n return AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, oboAssertion, cloudGraphHostName, msGraphhost);\r\n }\r\n // This fallback applies to B2C as well as they fall under an AAD account type.\r\n if (StringUtils.isEmpty(serverTokenResponse.client_info) && authority.protocolMode === \"AAD\") {\r\n throw ClientAuthError.createClientInfoEmptyError();\r\n }\r\n return serverTokenResponse.client_info ?\r\n AccountEntity.createAccount(serverTokenResponse.client_info, this.homeAccountIdentifier, idToken, authority, oboAssertion, cloudGraphHostName, msGraphhost) :\r\n AccountEntity.createGenericAccount(this.homeAccountIdentifier, idToken, authority, oboAssertion, cloudGraphHostName, msGraphhost);\r\n };\r\n /**\r\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\r\n *\r\n * Optionally takes a state string that is set as-is in the response.\r\n *\r\n * @param cacheRecord\r\n * @param idTokenObj\r\n * @param fromTokenCache\r\n * @param stateString\r\n */\r\n ResponseHandler.generateAuthenticationResult = function (cryptoObj, authority, cacheRecord, fromTokenCache, request, idTokenObj, requestState, code) {\r\n var _a, _b, _c;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var accessToken, responseScopes, expiresOn, extExpiresOn, familyId, popTokenGenerator, uid, tid;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n accessToken = Constants.EMPTY_STRING;\r\n responseScopes = [];\r\n expiresOn = null;\r\n familyId = Constants.EMPTY_STRING;\r\n if (!cacheRecord.accessToken) return [3 /*break*/, 4];\r\n if (!(cacheRecord.accessToken.tokenType === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n popTokenGenerator = new PopTokenGenerator(cryptoObj);\r\n return [4 /*yield*/, popTokenGenerator.signPopToken(cacheRecord.accessToken.secret, request)];\r\n case 1:\r\n accessToken = _d.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n accessToken = cacheRecord.accessToken.secret;\r\n _d.label = 3;\r\n case 3:\r\n responseScopes = ScopeSet.fromString(cacheRecord.accessToken.target).asArray();\r\n expiresOn = new Date(Number(cacheRecord.accessToken.expiresOn) * 1000);\r\n extExpiresOn = new Date(Number(cacheRecord.accessToken.extendedExpiresOn) * 1000);\r\n _d.label = 4;\r\n case 4:\r\n if (cacheRecord.appMetadata) {\r\n familyId = cacheRecord.appMetadata.familyId === THE_FAMILY_ID ? THE_FAMILY_ID : Constants.EMPTY_STRING;\r\n }\r\n uid = (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.oid) || (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.sub) || Constants.EMPTY_STRING;\r\n tid = (idTokenObj === null || idTokenObj === void 0 ? void 0 : idTokenObj.claims.tid) || Constants.EMPTY_STRING;\r\n return [2 /*return*/, {\r\n authority: authority.canonicalAuthority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes,\r\n account: cacheRecord.account ? cacheRecord.account.getAccountInfo() : null,\r\n idToken: idTokenObj ? idTokenObj.rawToken : Constants.EMPTY_STRING,\r\n idTokenClaims: idTokenObj ? idTokenObj.claims : {},\r\n accessToken: accessToken,\r\n fromCache: fromTokenCache,\r\n expiresOn: expiresOn,\r\n correlationId: request.correlationId,\r\n extExpiresOn: extExpiresOn,\r\n familyId: familyId,\r\n tokenType: ((_a = cacheRecord.accessToken) === null || _a === void 0 ? void 0 : _a.tokenType) || Constants.EMPTY_STRING,\r\n state: requestState ? requestState.userRequestState : Constants.EMPTY_STRING,\r\n cloudGraphHostName: ((_b = cacheRecord.account) === null || _b === void 0 ? void 0 : _b.cloudGraphHostName) || Constants.EMPTY_STRING,\r\n msGraphHost: ((_c = cacheRecord.account) === null || _c === void 0 ? void 0 : _c.msGraphHost) || Constants.EMPTY_STRING,\r\n code: code,\r\n fromNativeBroker: false\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n return ResponseHandler;\r\n}());\n\nexport { ResponseHandler };\n//# sourceMappingURL=ResponseHandler.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign, __spreadArrays } from '../_virtual/_tslib.js';\nimport { BaseClient } from './BaseClient.js';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.js';\nimport { Separators, AADServerParamKeys, AuthenticationScheme, GrantType, PromptValue } from '../utils/Constants.js';\nimport { ResponseHandler } from '../response/ResponseHandler.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { UrlString } from '../url/UrlString.js';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.js';\nimport { TimeUtils } from '../utils/TimeUtils.js';\nimport { buildClientInfo, buildClientInfoFromHomeAccountId } from '../account/ClientInfo.js';\nimport { CcsCredentialType } from '../account/CcsCredential.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { RequestValidator } from '../request/RequestValidator.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Oauth2.0 Authorization Code client\r\n */\r\nvar AuthorizationCodeClient = /** @class */ (function (_super) {\r\n __extends(AuthorizationCodeClient, _super);\r\n function AuthorizationCodeClient(configuration) {\r\n var _this = _super.call(this, configuration) || this;\r\n // Flag to indicate if client is for hybrid spa auth code redemption\r\n _this.includeRedirectUri = true;\r\n return _this;\r\n }\r\n /**\r\n * Creates the URL of the authorization request letting the user input credentials and consent to the\r\n * application. The URL target the /authorize endpoint of the authority configured in the\r\n * application object.\r\n *\r\n * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\r\n * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\r\n * acquireToken(AuthorizationCodeRequest)\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.getAuthCodeUrl = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var queryString;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.createAuthCodeUrlQueryString(request)];\r\n case 1:\r\n queryString = _a.sent();\r\n return [2 /*return*/, UrlString.appendQueryString(this.authority.authorizationEndpoint, queryString)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\r\n * authorization_code_grant\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.acquireToken = function (request, authCodePayload) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reqTimestamp, response, responseHandler;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.info(\"in acquireToken call\");\r\n if (!request || StringUtils.isEmpty(request.code)) {\r\n throw ClientAuthError.createTokenRequestCannotBeMadeError();\r\n }\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n return [4 /*yield*/, this.executeTokenRequest(this.authority, request)];\r\n case 1:\r\n response = _a.sent();\r\n responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n // Validate response. This function throws a server error if an error is returned by the server.\r\n responseHandler.validateTokenResponse(response.body);\r\n return [4 /*yield*/, responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, authCodePayload)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Handles the hash fragment response from public client code request. Returns a code response used by\r\n * the client to exchange for a token in acquireToken.\r\n * @param hashFragment\r\n */\r\n AuthorizationCodeClient.prototype.handleFragmentResponse = function (hashFragment, cachedState) {\r\n // Handle responses.\r\n var responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, null, null);\r\n // Deserialize hash fragment response parameters.\r\n var hashUrlString = new UrlString(hashFragment);\r\n // Deserialize hash fragment response parameters.\r\n var serverParams = UrlString.getDeserializedHash(hashUrlString.getHash());\r\n // Get code response\r\n responseHandler.validateServerAuthorizationCodeResponse(serverParams, cachedState, this.cryptoUtils);\r\n // throw when there is no auth code in the response\r\n if (!serverParams.code) {\r\n throw ClientAuthError.createNoAuthCodeInServerResponseError();\r\n }\r\n return __assign(__assign({}, serverParams), { \r\n // Code param is optional in ServerAuthorizationCodeResponse but required in AuthorizationCodePaylod\r\n code: serverParams.code });\r\n };\r\n /**\r\n * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param authorityUri\r\n */\r\n AuthorizationCodeClient.prototype.getLogoutUri = function (logoutRequest) {\r\n // Throw error if logoutRequest is null/undefined\r\n if (!logoutRequest) {\r\n throw ClientConfigurationError.createEmptyLogoutRequestError();\r\n }\r\n var queryString = this.createLogoutUrlQueryString(logoutRequest);\r\n // Construct logout URI.\r\n return UrlString.appendQueryString(this.authority.endSessionEndpoint, queryString);\r\n };\r\n /**\r\n * Executes POST request to token endpoint\r\n * @param authority\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.executeTokenRequest = function (authority, request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var thumbprint, requestBody, queryParameters, ccsCredential, clientInfo, headers, endpoint;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n return [4 /*yield*/, this.createTokenRequestBody(request)];\r\n case 1:\r\n requestBody = _a.sent();\r\n queryParameters = this.createTokenQueryParameters(request);\r\n ccsCredential = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils);\r\n ccsCredential = {\r\n credential: \"\" + clientInfo.uid + Separators.CLIENT_INFO_SEPARATOR + clientInfo.utid,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n headers = this.createTokenRequestHeaders(ccsCredential || request.ccsCredential);\r\n endpoint = StringUtils.isEmpty(queryParameters) ? authority.tokenEndpoint : authority.tokenEndpoint + \"?\" + queryParameters;\r\n return [2 /*return*/, this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Creates query string for the /token request\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.createTokenQueryParameters = function (request) {\r\n var parameterBuilder = new RequestParameterBuilder();\r\n if (request.tokenQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\r\n }\r\n return parameterBuilder.createQueryString();\r\n };\r\n /**\r\n * Generates a map for all the params to be sent to the service\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.createTokenRequestBody = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var parameterBuilder, clientAssertion, popTokenGenerator, cnfString, correlationId, ccsCred, clientInfo, clientInfo;\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n parameterBuilder = new RequestParameterBuilder();\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n /*\r\n * For hybrid spa flow, there will be a code but no verifier\r\n * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI\r\n */\r\n if (!this.includeRedirectUri) {\r\n // Just validate\r\n RequestValidator.validateRedirectUri(request.redirectUri);\r\n }\r\n else {\r\n // Validate and include redirect uri\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n }\r\n // Add scope array, parameter builder will add default scopes and dedupe\r\n parameterBuilder.addScopes(request.scopes);\r\n // add code: user set, not validated\r\n parameterBuilder.addAuthorizationCode(request.code);\r\n // Add library metadata\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n parameterBuilder.addThrottling();\r\n if (this.serverTelemetryManager) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n // add code_verifier if passed\r\n if (request.codeVerifier) {\r\n parameterBuilder.addCodeVerifier(request.codeVerifier);\r\n }\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT);\r\n parameterBuilder.addClientInfo();\r\n if (!(request.authenticationScheme === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n return [4 /*yield*/, popTokenGenerator.generateCnf(request)];\r\n case 1:\r\n cnfString = _b.sent();\r\n parameterBuilder.addPopToken(cnfString);\r\n return [3 /*break*/, 3];\r\n case 2:\r\n if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n parameterBuilder.addSshJwk(request.sshJwk);\r\n }\r\n else {\r\n throw ClientConfigurationError.createMissingSshJwkError();\r\n }\r\n }\r\n _b.label = 3;\r\n case 3:\r\n correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n ccsCred = undefined;\r\n if (request.clientInfo) {\r\n try {\r\n clientInfo = buildClientInfo(request.clientInfo, this.cryptoUtils);\r\n ccsCred = {\r\n credential: \"\" + clientInfo.uid + Separators.CLIENT_INFO_SEPARATOR + clientInfo.utid,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n };\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse client info for CCS Header: \" + e);\r\n }\r\n }\r\n else {\r\n ccsCred = request.ccsCredential;\r\n }\r\n // Adds these as parameters in the request instead of headers to prevent CORS preflight request\r\n if (this.config.systemOptions.preventCorsPreflight && ccsCred) {\r\n switch (ccsCred.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n clientInfo = buildClientInfoFromHomeAccountId(ccsCred.credential);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n parameterBuilder.addCcsUpn(ccsCred.credential);\r\n break;\r\n }\r\n }\r\n if (request.tokenBodyParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenBodyParameters);\r\n }\r\n // Add hybrid spa parameters if not already provided\r\n if (request.enableSpaAuthorizationCode && (!request.tokenBodyParameters || !request.tokenBodyParameters[AADServerParamKeys.RETURN_SPA_CODE])) {\r\n parameterBuilder.addExtraQueryParameters((_a = {},\r\n _a[AADServerParamKeys.RETURN_SPA_CODE] = \"1\",\r\n _a));\r\n }\r\n return [2 /*return*/, parameterBuilder.createQueryString()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * This API validates the `AuthorizationCodeUrlRequest` and creates a URL\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.createAuthCodeUrlQueryString = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var parameterBuilder, requestScopes, correlationId, accountSid, clientInfo, clientInfo, popTokenGenerator, cnf, cnfHash;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n parameterBuilder = new RequestParameterBuilder();\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n requestScopes = __spreadArrays(request.scopes || [], request.extraScopesToConsent || []);\r\n parameterBuilder.addScopes(requestScopes);\r\n // validate the redirectUri (to be a non null value)\r\n parameterBuilder.addRedirectUri(request.redirectUri);\r\n correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n // add response_mode. If not passed in it defaults to query.\r\n parameterBuilder.addResponseMode(request.responseMode);\r\n // add response_type = code\r\n parameterBuilder.addResponseTypeCode();\r\n // add library info parameters\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n // add client_info=1\r\n parameterBuilder.addClientInfo();\r\n if (request.codeChallenge && request.codeChallengeMethod) {\r\n parameterBuilder.addCodeChallengeParams(request.codeChallenge, request.codeChallengeMethod);\r\n }\r\n if (request.prompt) {\r\n parameterBuilder.addPrompt(request.prompt);\r\n }\r\n if (request.domainHint) {\r\n parameterBuilder.addDomainHint(request.domainHint);\r\n }\r\n // Add sid or loginHint with preference for sid -> loginHint -> username of AccountInfo object\r\n if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\r\n // AAD will throw if prompt=select_account is passed with an account hint\r\n if (request.sid && request.prompt === PromptValue.NONE) {\r\n // SessionID is only used in silent calls\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\");\r\n parameterBuilder.addSid(request.sid);\r\n }\r\n else if (request.account) {\r\n accountSid = this.extractAccountSid(request.account);\r\n // If account and loginHint are provided, we will check account first for sid before adding loginHint\r\n if (accountSid && request.prompt === PromptValue.NONE) {\r\n // SessionId is only used in silent calls\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\");\r\n parameterBuilder.addSid(accountSid);\r\n try {\r\n clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n }\r\n else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n parameterBuilder.addCcsUpn(request.loginHint);\r\n }\r\n else if (request.account.username) {\r\n // Fallback to account username if provided\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Adding login_hint from account\");\r\n parameterBuilder.addLoginHint(request.account.username);\r\n try {\r\n clientInfo = buildClientInfoFromHomeAccountId(request.account.homeAccountId);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n }\r\n }\r\n else if (request.loginHint) {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: No account, adding login_hint from request\");\r\n parameterBuilder.addLoginHint(request.loginHint);\r\n parameterBuilder.addCcsUpn(request.loginHint);\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\");\r\n }\r\n if (request.nonce) {\r\n parameterBuilder.addNonce(request.nonce);\r\n }\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n if (!StringUtils.isEmpty(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (request.extraQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\r\n }\r\n if (!request.nativeBroker) return [3 /*break*/, 3];\r\n // signal ests that this is a WAM call\r\n parameterBuilder.addNativeBroker();\r\n if (!(request.authenticationScheme === AuthenticationScheme.POP)) return [3 /*break*/, 3];\r\n popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n return [4 /*yield*/, popTokenGenerator.generateCnf(request)];\r\n case 1:\r\n cnf = _a.sent();\r\n return [4 /*yield*/, popTokenGenerator.generateCnfHash(cnf)];\r\n case 2:\r\n cnfHash = _a.sent();\r\n parameterBuilder.addPopToken(cnfHash);\r\n _a.label = 3;\r\n case 3: return [2 /*return*/, parameterBuilder.createQueryString()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * This API validates the `EndSessionRequest` and creates a URL\r\n * @param request\r\n */\r\n AuthorizationCodeClient.prototype.createLogoutUrlQueryString = function (request) {\r\n var parameterBuilder = new RequestParameterBuilder();\r\n if (request.postLogoutRedirectUri) {\r\n parameterBuilder.addPostLogoutRedirectUri(request.postLogoutRedirectUri);\r\n }\r\n if (request.correlationId) {\r\n parameterBuilder.addCorrelationId(request.correlationId);\r\n }\r\n if (request.idTokenHint) {\r\n parameterBuilder.addIdTokenHint(request.idTokenHint);\r\n }\r\n if (request.state) {\r\n parameterBuilder.addState(request.state);\r\n }\r\n if (request.logoutHint) {\r\n parameterBuilder.addLogoutHint(request.logoutHint);\r\n }\r\n if (request.extraQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.extraQueryParameters);\r\n }\r\n return parameterBuilder.createQueryString();\r\n };\r\n /**\r\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\r\n * @param account\r\n */\r\n AuthorizationCodeClient.prototype.extractAccountSid = function (account) {\r\n if (account.idTokenClaims) {\r\n var tokenClaims = account.idTokenClaims;\r\n return tokenClaims.sid || null;\r\n }\r\n return null;\r\n };\r\n return AuthorizationCodeClient;\r\n}(BaseClient));\n\nexport { AuthorizationCodeClient };\n//# sourceMappingURL=AuthorizationCodeClient.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isOpenIdConfigResponse(response) {\r\n return (response.hasOwnProperty(\"authorization_endpoint\") &&\r\n response.hasOwnProperty(\"token_endpoint\") &&\r\n response.hasOwnProperty(\"issuer\"));\r\n}\n\nexport { isOpenIdConfigResponse };\n//# sourceMappingURL=OpenIdConfigResponse.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nfunction isCloudInstanceDiscoveryResponse(response) {\r\n return (response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\r\n response.hasOwnProperty(\"metadata\"));\r\n}\n\nexport { isCloudInstanceDiscoveryResponse };\n//# sourceMappingURL=CloudInstanceDiscoveryResponse.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { RegionDiscoverySources, ResponseCodes, Constants } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar RegionDiscovery = /** @class */ (function () {\r\n function RegionDiscovery(networkInterface) {\r\n this.networkInterface = networkInterface;\r\n }\r\n /**\r\n * Detect the region from the application's environment.\r\n *\r\n * @returns Promise<string | null>\r\n */\r\n RegionDiscovery.prototype.detectRegion = function (environmentRegion, regionDiscoveryMetadata, proxyUrl) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var autodetectedRegionName, options, localIMDSVersionResponse, currentIMDSVersion, currentIMDSVersionResponse;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n autodetectedRegionName = environmentRegion;\r\n if (!!autodetectedRegionName) return [3 /*break*/, 8];\r\n options = RegionDiscovery.IMDS_OPTIONS;\r\n if (proxyUrl) {\r\n options.proxyUrl = proxyUrl;\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, , 7]);\r\n return [4 /*yield*/, this.getRegionFromIMDS(Constants.IMDS_VERSION, options)];\r\n case 2:\r\n localIMDSVersionResponse = _a.sent();\r\n if (localIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\r\n autodetectedRegionName = localIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\r\n }\r\n if (!(localIMDSVersionResponse.status === ResponseCodes.httpBadRequest)) return [3 /*break*/, 5];\r\n return [4 /*yield*/, this.getCurrentVersion(options)];\r\n case 3:\r\n currentIMDSVersion = _a.sent();\r\n if (!currentIMDSVersion) {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return [2 /*return*/, null];\r\n }\r\n return [4 /*yield*/, this.getRegionFromIMDS(currentIMDSVersion, options)];\r\n case 4:\r\n currentIMDSVersionResponse = _a.sent();\r\n if (currentIMDSVersionResponse.status === ResponseCodes.httpSuccess) {\r\n autodetectedRegionName = currentIMDSVersionResponse.body;\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.IMDS;\r\n }\r\n _a.label = 5;\r\n case 5: return [3 /*break*/, 7];\r\n case 6:\r\n _a.sent();\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n return [2 /*return*/, null];\r\n case 7: return [3 /*break*/, 9];\r\n case 8:\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.ENVIRONMENT_VARIABLE;\r\n _a.label = 9;\r\n case 9:\r\n // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\r\n if (!autodetectedRegionName) {\r\n regionDiscoveryMetadata.region_source = RegionDiscoverySources.FAILED_AUTO_DETECTION;\r\n }\r\n return [2 /*return*/, autodetectedRegionName || null];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Make the call to the IMDS endpoint\r\n *\r\n * @param imdsEndpointUrl\r\n * @returns Promise<NetworkResponse<string>>\r\n */\r\n RegionDiscovery.prototype.getRegionFromIMDS = function (version, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.networkInterface.sendGetRequestAsync(Constants.IMDS_ENDPOINT + \"?api-version=\" + version + \"&format=text\", options, Constants.IMDS_TIMEOUT)];\r\n });\r\n });\r\n };\r\n /**\r\n * Get the most recent version of the IMDS endpoint available\r\n *\r\n * @returns Promise<string | null>\r\n */\r\n RegionDiscovery.prototype.getCurrentVersion = function (options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.networkInterface.sendGetRequestAsync(Constants.IMDS_ENDPOINT + \"?format=json\", options)];\r\n case 1:\r\n response = _a.sent();\r\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\r\n if (response.status === ResponseCodes.httpBadRequest && response.body && response.body[\"newest-versions\"] && response.body[\"newest-versions\"].length > 0) {\r\n return [2 /*return*/, response.body[\"newest-versions\"][0]];\r\n }\r\n return [2 /*return*/, null];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, null];\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n // Options for the IMDS endpoint request\r\n RegionDiscovery.IMDS_OPTIONS = {\r\n headers: {\r\n Metadata: \"true\",\r\n },\r\n };\r\n return RegionDiscovery;\r\n}());\n\nexport { RegionDiscovery };\n//# sourceMappingURL=RegionDiscovery.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { InteractionRequiredAuthError, AuthError } from '@azure/msal-common';\nimport { BrowserAuthError } from './BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NativeStatusCode;\r\n(function (NativeStatusCode) {\r\n NativeStatusCode[\"USER_INTERACTION_REQUIRED\"] = \"USER_INTERACTION_REQUIRED\";\r\n NativeStatusCode[\"USER_CANCEL\"] = \"USER_CANCEL\";\r\n NativeStatusCode[\"NO_NETWORK\"] = \"NO_NETWORK\";\r\n NativeStatusCode[\"TRANSIENT_ERROR\"] = \"TRANSIENT_ERROR\";\r\n NativeStatusCode[\"PERSISTENT_ERROR\"] = \"PERSISTENT_ERROR\";\r\n})(NativeStatusCode || (NativeStatusCode = {}));\r\nvar NativeAuthErrorMessage = {\r\n extensionError: {\r\n code: \"ContentError\"\r\n },\r\n userSwitch: {\r\n code: \"user_switch\",\r\n desc: \"User attempted to switch accounts in the native broker, which is not allowed. All new accounts must sign-in through the standard web flow first, please try again.\"\r\n }\r\n};\r\nvar NativeAuthError = /** @class */ (function (_super) {\r\n __extends(NativeAuthError, _super);\r\n function NativeAuthError(errorCode, description, ext) {\r\n var _this = _super.call(this, errorCode, description) || this;\r\n Object.setPrototypeOf(_this, NativeAuthError.prototype);\r\n _this.name = \"NativeAuthError\";\r\n _this.ext = ext;\r\n return _this;\r\n }\r\n /**\r\n * These errors should result in a fallback to the 'standard' browser based auth flow.\r\n */\r\n NativeAuthError.prototype.isFatal = function () {\r\n if (this.ext && this.ext.status && this.ext.status === NativeStatusCode.PERSISTENT_ERROR) {\r\n return true;\r\n }\r\n switch (this.errorCode) {\r\n case NativeAuthErrorMessage.extensionError.code:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n };\r\n /**\r\n * Create the appropriate error object based on the WAM status code.\r\n * @param code\r\n * @param description\r\n * @param ext\r\n * @returns\r\n */\r\n NativeAuthError.createError = function (code, description, ext) {\r\n if (ext && ext.status) {\r\n switch (ext.status) {\r\n case NativeStatusCode.USER_INTERACTION_REQUIRED:\r\n return new InteractionRequiredAuthError(code, description);\r\n case NativeStatusCode.USER_CANCEL:\r\n return BrowserAuthError.createUserCancelledError();\r\n case NativeStatusCode.NO_NETWORK:\r\n return BrowserAuthError.createNoNetworkConnectivityError();\r\n }\r\n }\r\n return new NativeAuthError(code, description, ext);\r\n };\r\n /**\r\n * Creates user switch error when the user chooses a different account in the native broker prompt\r\n * @returns\r\n */\r\n NativeAuthError.createUserSwitchError = function () {\r\n return new NativeAuthError(NativeAuthErrorMessage.userSwitch.code, NativeAuthErrorMessage.userSwitch.desc);\r\n };\r\n return NativeAuthError;\r\n}(AuthError));\n\nexport { NativeAuthError, NativeAuthErrorMessage, NativeStatusCode };\n//# sourceMappingURL=NativeAuthError.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { AuthorityType } from './AuthorityType.js';\nimport { isOpenIdConfigResponse } from './OpenIdConfigResponse.js';\nimport { UrlString } from '../url/UrlString.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { Constants, AuthorityMetadataSource, RegionDiscoveryOutcomes } from '../utils/Constants.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { ProtocolMode } from './ProtocolMode.js';\nimport { AuthorityMetadataEntity } from '../cache/entities/AuthorityMetadataEntity.js';\nimport { AzureCloudInstance } from './AuthorityOptions.js';\nimport { isCloudInstanceDiscoveryResponse } from './CloudInstanceDiscoveryResponse.js';\nimport { RegionDiscovery } from './RegionDiscovery.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\r\n * endpoint. It will store the pertinent config data in this object for use during token calls.\r\n */\r\nvar Authority = /** @class */ (function () {\r\n function Authority(authority, networkInterface, cacheManager, authorityOptions, proxyUrl) {\r\n this.canonicalAuthority = authority;\r\n this._canonicalAuthority.validateAsUri();\r\n this.networkInterface = networkInterface;\r\n this.cacheManager = cacheManager;\r\n this.authorityOptions = authorityOptions;\r\n this.regionDiscovery = new RegionDiscovery(networkInterface);\r\n this.regionDiscoveryMetadata = { region_used: undefined, region_source: undefined, region_outcome: undefined };\r\n this.proxyUrl = proxyUrl || Constants.EMPTY_STRING;\r\n }\r\n Object.defineProperty(Authority.prototype, \"authorityType\", {\r\n // See above for AuthorityType\r\n get: function () {\r\n var pathSegments = this.canonicalAuthorityUrlComponents.PathSegments;\r\n if (pathSegments.length && pathSegments[0].toLowerCase() === Constants.ADFS) {\r\n return AuthorityType.Adfs;\r\n }\r\n return AuthorityType.Default;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"protocolMode\", {\r\n /**\r\n * ProtocolMode enum representing the way endpoints are constructed.\r\n */\r\n get: function () {\r\n return this.authorityOptions.protocolMode;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"options\", {\r\n /**\r\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\r\n */\r\n get: function () {\r\n return this.authorityOptions;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"canonicalAuthority\", {\r\n /**\r\n * A URL that is the authority set by the developer\r\n */\r\n get: function () {\r\n return this._canonicalAuthority.urlString;\r\n },\r\n /**\r\n * Sets canonical authority.\r\n */\r\n set: function (url) {\r\n this._canonicalAuthority = new UrlString(url);\r\n this._canonicalAuthority.validateAsUri();\r\n this._canonicalAuthorityUrlComponents = null;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"canonicalAuthorityUrlComponents\", {\r\n /**\r\n * Get authority components.\r\n */\r\n get: function () {\r\n if (!this._canonicalAuthorityUrlComponents) {\r\n this._canonicalAuthorityUrlComponents = this._canonicalAuthority.getUrlComponents();\r\n }\r\n return this._canonicalAuthorityUrlComponents;\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"hostnameAndPort\", {\r\n /**\r\n * Get hostname and port i.e. login.microsoftonline.com\r\n */\r\n get: function () {\r\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"tenant\", {\r\n /**\r\n * Get tenant for authority.\r\n */\r\n get: function () {\r\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"authorizationEndpoint\", {\r\n /**\r\n * OAuth /authorize endpoint for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n var endpoint = this.replacePath(this.metadata.authorization_endpoint);\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"tokenEndpoint\", {\r\n /**\r\n * OAuth /token endpoint for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n var endpoint = this.replacePath(this.metadata.token_endpoint);\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"deviceCodeEndpoint\", {\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n var endpoint = this.replacePath(this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\"));\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"endSessionEndpoint\", {\r\n /**\r\n * OAuth logout endpoint for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n // ROPC policies may not have end_session_endpoint set\r\n if (!this.metadata.end_session_endpoint) {\r\n throw ClientAuthError.createLogoutNotSupportedError();\r\n }\r\n var endpoint = this.replacePath(this.metadata.end_session_endpoint);\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n Object.defineProperty(Authority.prototype, \"selfSignedJwtAudience\", {\r\n /**\r\n * OAuth issuer for requests\r\n */\r\n get: function () {\r\n if (this.discoveryComplete()) {\r\n var endpoint = this.replacePath(this.metadata.issuer);\r\n return this.replaceTenant(endpoint);\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Replaces tenant in url path with current tenant. Defaults to common.\r\n * @param urlString\r\n */\r\n Authority.prototype.replaceTenant = function (urlString) {\r\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\r\n };\r\n /**\r\n * Replaces path such as tenant or policy with the current tenant or policy.\r\n * @param urlString\r\n */\r\n Authority.prototype.replacePath = function (urlString) {\r\n var endpoint = urlString;\r\n var cachedAuthorityUrl = new UrlString(this.metadata.canonical_authority);\r\n var cachedAuthorityParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n var currentAuthorityParts = this.canonicalAuthorityUrlComponents.PathSegments;\r\n currentAuthorityParts.forEach(function (currentPart, index) {\r\n var cachedPart = cachedAuthorityParts[index];\r\n if (currentPart !== cachedPart) {\r\n endpoint = endpoint.replace(\"/\" + cachedPart + \"/\", \"/\" + currentPart + \"/\");\r\n }\r\n });\r\n return endpoint;\r\n };\r\n Object.defineProperty(Authority.prototype, \"defaultOpenIdConfigurationEndpoint\", {\r\n /**\r\n * The default open id configuration endpoint for any canonical authority.\r\n */\r\n get: function () {\r\n if (this.authorityType === AuthorityType.Adfs || this.protocolMode === ProtocolMode.OIDC) {\r\n return this.canonicalAuthority + \".well-known/openid-configuration\";\r\n }\r\n return this.canonicalAuthority + \"v2.0/.well-known/openid-configuration\";\r\n },\r\n enumerable: false,\r\n configurable: true\r\n });\r\n /**\r\n * Boolean that returns whethr or not tenant discovery has been completed.\r\n */\r\n Authority.prototype.discoveryComplete = function () {\r\n return !!this.metadata;\r\n };\r\n /**\r\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\r\n * and the /authorize, /token and logout endpoints.\r\n */\r\n Authority.prototype.resolveEndpointsAsync = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var metadataEntity, cloudDiscoverySource, endpointSource, cacheKey;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metadataEntity = this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\r\n if (!metadataEntity) {\r\n metadataEntity = new AuthorityMetadataEntity();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n return [4 /*yield*/, this.updateCloudDiscoveryMetadata(metadataEntity)];\r\n case 1:\r\n cloudDiscoverySource = _a.sent();\r\n this.canonicalAuthority = this.canonicalAuthority.replace(this.hostnameAndPort, metadataEntity.preferred_network);\r\n return [4 /*yield*/, this.updateEndpointMetadata(metadataEntity)];\r\n case 2:\r\n endpointSource = _a.sent();\r\n if (cloudDiscoverySource !== AuthorityMetadataSource.CACHE && endpointSource !== AuthorityMetadataSource.CACHE) {\r\n // Reset the expiration time unless both values came from a successful cache lookup\r\n metadataEntity.resetExpiresAt();\r\n metadataEntity.updateCanonicalAuthority(this.canonicalAuthority);\r\n }\r\n cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(metadataEntity.preferred_cache);\r\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\r\n this.metadata = metadataEntity;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\r\n * @param metadataEntity\r\n */\r\n Authority.prototype.updateEndpointMetadata = function (metadataEntity) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var metadata, autodetectedRegionName, azureRegion;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n metadata = this.getEndpointMetadataFromConfig();\r\n if (metadata) {\r\n metadataEntity.updateEndpointMetadata(metadata, false);\r\n return [2 /*return*/, AuthorityMetadataSource.CONFIG];\r\n }\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.endpointsFromNetwork && !metadataEntity.isExpired()) {\r\n // No need to update\r\n return [2 /*return*/, AuthorityMetadataSource.CACHE];\r\n }\r\n return [4 /*yield*/, this.getEndpointMetadataFromNetwork()];\r\n case 1:\r\n metadata = _b.sent();\r\n if (!metadata) return [3 /*break*/, 4];\r\n if (!((_a = this.authorityOptions.azureRegionConfiguration) === null || _a === void 0 ? void 0 : _a.azureRegion)) return [3 /*break*/, 3];\r\n return [4 /*yield*/, this.regionDiscovery.detectRegion(this.authorityOptions.azureRegionConfiguration.environmentRegion, this.regionDiscoveryMetadata, this.proxyUrl)];\r\n case 2:\r\n autodetectedRegionName = _b.sent();\r\n azureRegion = this.authorityOptions.azureRegionConfiguration.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG\r\n ? autodetectedRegionName\r\n : this.authorityOptions.azureRegionConfiguration.azureRegion;\r\n if (this.authorityOptions.azureRegionConfiguration.azureRegion === Constants.AZURE_REGION_AUTO_DISCOVER_FLAG) {\r\n this.regionDiscoveryMetadata.region_outcome = autodetectedRegionName ?\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL :\r\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\r\n }\r\n else {\r\n if (autodetectedRegionName) {\r\n this.regionDiscoveryMetadata.region_outcome = (this.authorityOptions.azureRegionConfiguration.azureRegion === autodetectedRegionName) ?\r\n RegionDiscoveryOutcomes.CONFIGURED_MATCHES_DETECTED :\r\n RegionDiscoveryOutcomes.CONFIGURED_NOT_DETECTED;\r\n }\r\n else {\r\n this.regionDiscoveryMetadata.region_outcome = RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\r\n }\r\n }\r\n if (azureRegion) {\r\n this.regionDiscoveryMetadata.region_used = azureRegion;\r\n metadata = Authority.replaceWithRegionalInformation(metadata, azureRegion);\r\n }\r\n _b.label = 3;\r\n case 3:\r\n metadataEntity.updateEndpointMetadata(metadata, true);\r\n return [2 /*return*/, AuthorityMetadataSource.NETWORK];\r\n case 4: throw ClientAuthError.createUnableToGetOpenidConfigError(this.defaultOpenIdConfigurationEndpoint);\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Compares the number of url components after the domain to determine if the cached authority metadata can be used for the requested authority\r\n * Protects against same domain different authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\r\n * @param metadataEntity\r\n */\r\n Authority.prototype.isAuthoritySameType = function (metadataEntity) {\r\n var cachedAuthorityUrl = new UrlString(metadataEntity.canonical_authority);\r\n var cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\r\n return cachedParts.length === this.canonicalAuthorityUrlComponents.PathSegments.length;\r\n };\r\n /**\r\n * Parse authorityMetadata config option\r\n */\r\n Authority.prototype.getEndpointMetadataFromConfig = function () {\r\n if (this.authorityOptions.authorityMetadata) {\r\n try {\r\n return JSON.parse(this.authorityOptions.authorityMetadata);\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createInvalidAuthorityMetadataError();\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\r\n */\r\n Authority.prototype.getEndpointMetadataFromNetwork = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var options, response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n options = {};\r\n if (this.proxyUrl) {\r\n options.proxyUrl = this.proxyUrl;\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.networkInterface.sendGetRequestAsync(this.defaultOpenIdConfigurationEndpoint, options)];\r\n case 2:\r\n response = _a.sent();\r\n return [2 /*return*/, isOpenIdConfigResponse(response.body) ? response.body : null];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/, null];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache and returns where the information was retrived from\r\n * @param cachedMetadata\r\n * @param newMetadata\r\n */\r\n Authority.prototype.updateCloudDiscoveryMetadata = function (metadataEntity) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var metadata;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n metadata = this.getCloudDiscoveryMetadataFromConfig();\r\n if (metadata) {\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, false);\r\n return [2 /*return*/, AuthorityMetadataSource.CONFIG];\r\n }\r\n // If The cached metadata came from config but that config was not passed to this instance, we must go to the network\r\n if (this.isAuthoritySameType(metadataEntity) && metadataEntity.aliasesFromNetwork && !metadataEntity.isExpired()) {\r\n // No need to update\r\n return [2 /*return*/, AuthorityMetadataSource.CACHE];\r\n }\r\n return [4 /*yield*/, this.getCloudDiscoveryMetadataFromNetwork()];\r\n case 1:\r\n metadata = _a.sent();\r\n if (metadata) {\r\n metadataEntity.updateCloudDiscoveryMetadata(metadata, true);\r\n return [2 /*return*/, AuthorityMetadataSource.NETWORK];\r\n }\r\n else {\r\n // Metadata could not be obtained from config, cache or network\r\n throw ClientConfigurationError.createUntrustedAuthorityError();\r\n }\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\r\n */\r\n Authority.prototype.getCloudDiscoveryMetadataFromConfig = function () {\r\n // Check if network response was provided in config\r\n if (this.authorityOptions.cloudDiscoveryMetadata) {\r\n try {\r\n var parsedResponse = JSON.parse(this.authorityOptions.cloudDiscoveryMetadata);\r\n var metadata = Authority.getCloudDiscoveryMetadataFromNetworkResponse(parsedResponse.metadata, this.hostnameAndPort);\r\n if (metadata) {\r\n return metadata;\r\n }\r\n }\r\n catch (e) {\r\n throw ClientConfigurationError.createInvalidCloudDiscoveryMetadataError();\r\n }\r\n }\r\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\r\n if (this.isInKnownAuthorities()) {\r\n return Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return null;\r\n };\r\n /**\r\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\r\n * @param networkInterface\r\n */\r\n Authority.prototype.getCloudDiscoveryMetadataFromNetwork = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var instanceDiscoveryEndpoint, options, match, response, metadata;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n instanceDiscoveryEndpoint = \"\" + Constants.AAD_INSTANCE_DISCOVERY_ENDPT + this.canonicalAuthority + \"oauth2/v2.0/authorize\";\r\n options = {};\r\n if (this.proxyUrl) {\r\n options.proxyUrl = this.proxyUrl;\r\n }\r\n match = null;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.networkInterface.sendGetRequestAsync(instanceDiscoveryEndpoint, options)];\r\n case 2:\r\n response = _a.sent();\r\n metadata = isCloudInstanceDiscoveryResponse(response.body) ? response.body.metadata : [];\r\n if (metadata.length === 0) {\r\n // If no metadata is returned, authority is untrusted\r\n return [2 /*return*/, null];\r\n }\r\n match = Authority.getCloudDiscoveryMetadataFromNetworkResponse(metadata, this.hostnameAndPort);\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/, null];\r\n case 4:\r\n if (!match) {\r\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\r\n match = Authority.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort);\r\n }\r\n return [2 /*return*/, match];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Helper function to determine if this host is included in the knownAuthorities config option\r\n */\r\n Authority.prototype.isInKnownAuthorities = function () {\r\n var _this = this;\r\n var matches = this.authorityOptions.knownAuthorities.filter(function (authority) {\r\n return UrlString.getDomainFromUrl(authority).toLowerCase() === _this.hostnameAndPort;\r\n });\r\n return matches.length > 0;\r\n };\r\n /**\r\n * helper function to populate the authority based on azureCloudOptions\r\n * @param authorityString\r\n * @param azureCloudOptions\r\n */\r\n Authority.generateAuthority = function (authorityString, azureCloudOptions) {\r\n var authorityAzureCloudInstance;\r\n if (azureCloudOptions && azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None) {\r\n var tenant = azureCloudOptions.tenant ? azureCloudOptions.tenant : Constants.DEFAULT_COMMON_TENANT;\r\n authorityAzureCloudInstance = azureCloudOptions.azureCloudInstance + \"/\" + tenant + \"/\";\r\n }\r\n return authorityAzureCloudInstance ? authorityAzureCloudInstance : authorityString;\r\n };\r\n /**\r\n * Creates cloud discovery metadata object from a given host\r\n * @param host\r\n */\r\n Authority.createCloudDiscoveryMetadataFromHost = function (host) {\r\n return {\r\n preferred_network: host,\r\n preferred_cache: host,\r\n aliases: [host]\r\n };\r\n };\r\n /**\r\n * Searches instance discovery network response for the entry that contains the host in the aliases list\r\n * @param response\r\n * @param authority\r\n */\r\n Authority.getCloudDiscoveryMetadataFromNetworkResponse = function (response, authority) {\r\n for (var i = 0; i < response.length; i++) {\r\n var metadata = response[i];\r\n if (metadata.aliases.indexOf(authority) > -1) {\r\n return metadata;\r\n }\r\n }\r\n return null;\r\n };\r\n /**\r\n * helper function to generate environment from authority object\r\n */\r\n Authority.prototype.getPreferredCache = function () {\r\n if (this.discoveryComplete()) {\r\n return this.metadata.preferred_cache;\r\n }\r\n else {\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(\"Discovery incomplete.\");\r\n }\r\n };\r\n /**\r\n * Returns whether or not the provided host is an alias of this authority instance\r\n * @param host\r\n */\r\n Authority.prototype.isAlias = function (host) {\r\n return this.metadata.aliases.indexOf(host) > -1;\r\n };\r\n /**\r\n * Checks whether the provided host is that of a public cloud authority\r\n *\r\n * @param authority string\r\n * @returns bool\r\n */\r\n Authority.isPublicCloudAuthority = function (host) {\r\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\r\n };\r\n /**\r\n * Rebuild the authority string with the region\r\n *\r\n * @param host string\r\n * @param region string\r\n */\r\n Authority.buildRegionalAuthorityString = function (host, region, queryString) {\r\n // Create and validate a Url string object with the initial authority string\r\n var authorityUrlInstance = new UrlString(host);\r\n authorityUrlInstance.validateAsUri();\r\n var authorityUrlParts = authorityUrlInstance.getUrlComponents();\r\n var hostNameAndPort = region + \".\" + authorityUrlParts.HostNameAndPort;\r\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\r\n hostNameAndPort = region + \".\" + Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX;\r\n }\r\n // Include the query string portion of the url\r\n var url = UrlString.constructAuthorityUriFromObject(__assign(__assign({}, authorityUrlInstance.getUrlComponents()), { HostNameAndPort: hostNameAndPort })).urlString;\r\n // Add the query string if a query string was provided\r\n if (queryString)\r\n return url + \"?\" + queryString;\r\n return url;\r\n };\r\n /**\r\n * Replace the endpoints in the metadata object with their regional equivalents.\r\n *\r\n * @param metadata OpenIdConfigResponse\r\n * @param azureRegion string\r\n */\r\n Authority.replaceWithRegionalInformation = function (metadata, azureRegion) {\r\n metadata.authorization_endpoint = Authority.buildRegionalAuthorityString(metadata.authorization_endpoint, azureRegion);\r\n // TODO: Enquire on whether we should leave the query string or remove it before releasing the feature\r\n metadata.token_endpoint = Authority.buildRegionalAuthorityString(metadata.token_endpoint, azureRegion, \"allowestsrnonmsi=true\");\r\n if (metadata.end_session_endpoint) {\r\n metadata.end_session_endpoint = Authority.buildRegionalAuthorityString(metadata.end_session_endpoint, azureRegion);\r\n }\r\n return metadata;\r\n };\r\n return Authority;\r\n}());\n\nexport { Authority };\n//# sourceMappingURL=Authority.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { Authority } from './Authority.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar AuthorityFactory = /** @class */ (function () {\r\n function AuthorityFactory() {\r\n }\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Also performs endpoint discovery.\r\n *\r\n * @param authorityUri\r\n * @param networkClient\r\n * @param protocolMode\r\n */\r\n AuthorityFactory.createDiscoveredInstance = function (authorityUri, networkClient, cacheManager, authorityOptions, proxyUrl) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var acquireTokenAuthority, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n acquireTokenAuthority = AuthorityFactory.createInstance(authorityUri, networkClient, cacheManager, authorityOptions, proxyUrl);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, acquireTokenAuthority.resolveEndpointsAsync()];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, acquireTokenAuthority];\r\n case 3:\r\n e_1 = _a.sent();\r\n throw ClientAuthError.createEndpointDiscoveryIncompleteError(e_1);\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Create an authority object of the correct type based on the url\r\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\r\n *\r\n * Does not perform endpoint discovery.\r\n *\r\n * @param authorityUrl\r\n * @param networkInterface\r\n * @param protocolMode\r\n */\r\n AuthorityFactory.createInstance = function (authorityUrl, networkInterface, cacheManager, authorityOptions, proxyUrl) {\r\n // Throw error if authority url is empty\r\n if (StringUtils.isEmpty(authorityUrl)) {\r\n throw ClientConfigurationError.createUrlEmptyError();\r\n }\r\n return new Authority(authorityUrl, networkInterface, cacheManager, authorityOptions, proxyUrl);\r\n };\r\n return AuthorityFactory;\r\n}());\n\nexport { AuthorityFactory };\n//# sourceMappingURL=AuthorityFactory.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { SERVER_TELEM_CONSTANTS, CacheOutcome, Constants, Separators } from '../../utils/Constants.js';\nimport { ServerTelemetryEntity } from '../../cache/entities/ServerTelemetryEntity.js';\nimport { StringUtils } from '../../utils/StringUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ServerTelemetryManager = /** @class */ (function () {\r\n function ServerTelemetryManager(telemetryRequest, cacheManager) {\r\n this.cacheOutcome = CacheOutcome.NO_CACHE_HIT;\r\n this.cacheManager = cacheManager;\r\n this.apiId = telemetryRequest.apiId;\r\n this.correlationId = telemetryRequest.correlationId;\r\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\r\n this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\r\n this.telemetryCacheKey = SERVER_TELEM_CONSTANTS.CACHE_KEY + Separators.CACHE_KEY_SEPARATOR + telemetryRequest.clientId;\r\n }\r\n /**\r\n * API to add MSER Telemetry to request\r\n */\r\n ServerTelemetryManager.prototype.generateCurrentRequestHeaderValue = function () {\r\n var request = \"\" + this.apiId + SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR + this.cacheOutcome;\r\n var platformFields = [this.wrapperSKU, this.wrapperVer].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n var regionDiscoveryFields = this.getRegionDiscoveryFields();\r\n var requestWithRegionDiscoveryFields = [request, regionDiscoveryFields].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, requestWithRegionDiscoveryFields, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n };\r\n /**\r\n * API to add MSER Telemetry for the last failed request\r\n */\r\n ServerTelemetryManager.prototype.generateLastRequestHeaderValue = function () {\r\n var lastRequests = this.getLastRequests();\r\n var maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n var failedRequests = lastRequests.failedRequests.slice(0, 2 * maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n var errors = lastRequests.errors.slice(0, maxErrors).join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n var errorCount = lastRequests.errors.length;\r\n // Indicate whether this header contains all data or partial data\r\n var overflow = maxErrors < errorCount ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\r\n var platformFields = [errorCount, overflow].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\r\n return [SERVER_TELEM_CONSTANTS.SCHEMA_VERSION, lastRequests.cacheHits, failedRequests, errors, platformFields].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\r\n };\r\n /**\r\n * API to cache token failures for MSER data capture\r\n * @param error\r\n */\r\n ServerTelemetryManager.prototype.cacheFailedRequest = function (error) {\r\n var lastRequests = this.getLastRequests();\r\n if (lastRequests.errors.length >= SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS) {\r\n // Remove a cached error to make room, first in first out\r\n lastRequests.failedRequests.shift(); // apiId\r\n lastRequests.failedRequests.shift(); // correlationId\r\n lastRequests.errors.shift();\r\n }\r\n lastRequests.failedRequests.push(this.apiId, this.correlationId);\r\n if (!StringUtils.isEmpty(error.subError)) {\r\n lastRequests.errors.push(error.subError);\r\n }\r\n else if (!StringUtils.isEmpty(error.errorCode)) {\r\n lastRequests.errors.push(error.errorCode);\r\n }\r\n else if (!!error && error.toString()) {\r\n lastRequests.errors.push(error.toString());\r\n }\r\n else {\r\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\r\n }\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return;\r\n };\r\n /**\r\n * Update server telemetry cache entry by incrementing cache hit counter\r\n */\r\n ServerTelemetryManager.prototype.incrementCacheHits = function () {\r\n var lastRequests = this.getLastRequests();\r\n lastRequests.cacheHits += 1;\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, lastRequests);\r\n return lastRequests.cacheHits;\r\n };\r\n /**\r\n * Get the server telemetry entity from cache or initialize a new one\r\n */\r\n ServerTelemetryManager.prototype.getLastRequests = function () {\r\n var initialValue = new ServerTelemetryEntity();\r\n var lastRequests = this.cacheManager.getServerTelemetry(this.telemetryCacheKey);\r\n return lastRequests || initialValue;\r\n };\r\n /**\r\n * Remove server telemetry cache entry\r\n */\r\n ServerTelemetryManager.prototype.clearTelemetryCache = function () {\r\n var lastRequests = this.getLastRequests();\r\n var numErrorsFlushed = ServerTelemetryManager.maxErrorsToSend(lastRequests);\r\n var errorCount = lastRequests.errors.length;\r\n if (numErrorsFlushed === errorCount) {\r\n // All errors were sent on last request, clear Telemetry cache\r\n this.cacheManager.removeItem(this.telemetryCacheKey);\r\n }\r\n else {\r\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\r\n var serverTelemEntity = new ServerTelemetryEntity();\r\n serverTelemEntity.failedRequests = lastRequests.failedRequests.slice(numErrorsFlushed * 2); // failedRequests contains 2 items for each error\r\n serverTelemEntity.errors = lastRequests.errors.slice(numErrorsFlushed);\r\n this.cacheManager.setServerTelemetry(this.telemetryCacheKey, serverTelemEntity);\r\n }\r\n };\r\n /**\r\n * Returns the maximum number of errors that can be flushed to the server in the next network request\r\n * @param serverTelemetryEntity\r\n */\r\n ServerTelemetryManager.maxErrorsToSend = function (serverTelemetryEntity) {\r\n var i;\r\n var maxErrors = 0;\r\n var dataSize = 0;\r\n var errorCount = serverTelemetryEntity.errors.length;\r\n for (i = 0; i < errorCount; i++) {\r\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\r\n var apiId = serverTelemetryEntity.failedRequests[2 * i] || Constants.EMPTY_STRING;\r\n var correlationId = serverTelemetryEntity.failedRequests[2 * i + 1] || Constants.EMPTY_STRING;\r\n var errorCode = serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\r\n // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\r\n dataSize += apiId.toString().length + correlationId.toString().length + errorCode.length + 3;\r\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\r\n // Adding this entry to the header would still keep header size below the limit\r\n maxErrors += 1;\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n return maxErrors;\r\n };\r\n /**\r\n * Get the region discovery fields\r\n *\r\n * @returns string\r\n */\r\n ServerTelemetryManager.prototype.getRegionDiscoveryFields = function () {\r\n var regionDiscoveryFields = [];\r\n regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING);\r\n regionDiscoveryFields.push(this.regionOutcome || Constants.EMPTY_STRING);\r\n return regionDiscoveryFields.join(\",\");\r\n };\r\n /**\r\n * Update the region discovery metadata\r\n *\r\n * @param regionDiscoveryMetadata\r\n * @returns void\r\n */\r\n ServerTelemetryManager.prototype.updateRegionDiscoveryMetadata = function (regionDiscoveryMetadata) {\r\n this.regionUsed = regionDiscoveryMetadata.region_used;\r\n this.regionSource = regionDiscoveryMetadata.region_source;\r\n this.regionOutcome = regionDiscoveryMetadata.region_outcome;\r\n };\r\n /**\r\n * Set cache outcome\r\n */\r\n ServerTelemetryManager.prototype.setCacheOutcome = function (cacheOutcome) {\r\n this.cacheOutcome = cacheOutcome;\r\n };\r\n return ServerTelemetryManager;\r\n}());\n\nexport { ServerTelemetryManager };\n//# sourceMappingURL=ServerTelemetryManager.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator, __spread, __assign } from '../_virtual/_tslib.js';\nimport { AccountEntity, AuthenticationScheme, ClientConfigurationError, StringUtils, UrlString, ServerTelemetryManager, AuthorityFactory } from '@azure/msal-common';\nimport { version } from '../packageMetadata.js';\nimport { BrowserConstants } from '../utils/BrowserConstants.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BaseInteractionClient = /** @class */ (function () {\r\n function BaseInteractionClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) {\r\n this.config = config;\r\n this.browserStorage = storageImpl;\r\n this.browserCrypto = browserCrypto;\r\n this.networkClient = this.config.system.networkClient;\r\n this.eventHandler = eventHandler;\r\n this.navigationClient = navigationClient;\r\n this.nativeMessageHandler = nativeMessageHandler;\r\n this.correlationId = correlationId || this.browserCrypto.createNewGuid();\r\n this.logger = logger.clone(BrowserConstants.MSAL_SKU, version, this.correlationId);\r\n this.performanceClient = performanceClient;\r\n }\r\n BaseInteractionClient.prototype.clearCacheOnLogout = function (account) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!account) return [3 /*break*/, 5];\r\n if (AccountEntity.accountInfoIsEqual(account, this.browserStorage.getActiveAccount(), false)) {\r\n this.logger.verbose(\"Setting active account to null\");\r\n this.browserStorage.setActiveAccount(null);\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.browserStorage.removeAccount(AccountEntity.generateAccountCacheKey(account))];\r\n case 2:\r\n _a.sent();\r\n this.logger.verbose(\"Cleared cache items belonging to the account provided in the logout request.\");\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a.sent();\r\n this.logger.error(\"Account provided in logout request was not found. Local cache unchanged.\");\r\n return [3 /*break*/, 4];\r\n case 4: return [3 /*break*/, 9];\r\n case 5:\r\n _a.trys.push([5, 8, , 9]);\r\n this.logger.verbose(\"No account provided in logout request, clearing all cache items.\", this.correlationId);\r\n // Clear all accounts and tokens\r\n return [4 /*yield*/, this.browserStorage.clear()];\r\n case 6:\r\n // Clear all accounts and tokens\r\n _a.sent();\r\n // Clear any stray keys from IndexedDB\r\n return [4 /*yield*/, this.browserCrypto.clearKeystore()];\r\n case 7:\r\n // Clear any stray keys from IndexedDB\r\n _a.sent();\r\n return [3 /*break*/, 9];\r\n case 8:\r\n _a.sent();\r\n this.logger.error(\"Attempted to clear all MSAL cache items and failed. Local cache unchanged.\");\r\n return [3 /*break*/, 9];\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Initializer function for all request APIs\r\n * @param request\r\n */\r\n BaseInteractionClient.prototype.initializeBaseRequest = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authority, scopes, validatedRequest, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.logger.verbose(\"Initializing BaseAuthRequest\");\r\n authority = request.authority || this.config.auth.authority;\r\n scopes = __spread(((request && request.scopes) || []));\r\n validatedRequest = __assign(__assign({}, request), { correlationId: this.correlationId, authority: authority,\r\n scopes: scopes });\r\n // Set authenticationScheme to BEARER if not explicitly set in the request\r\n if (!validatedRequest.authenticationScheme) {\r\n validatedRequest.authenticationScheme = AuthenticationScheme.BEARER;\r\n this.logger.verbose(\"Authentication Scheme wasn't explicitly set in request, defaulting to \\\"Bearer\\\" request\");\r\n }\r\n else {\r\n if (validatedRequest.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (!request.sshJwk) {\r\n throw ClientConfigurationError.createMissingSshJwkError();\r\n }\r\n if (!request.sshKid) {\r\n throw ClientConfigurationError.createMissingSshKidError();\r\n }\r\n }\r\n this.logger.verbose(\"Authentication Scheme set to \\\"\" + validatedRequest.authenticationScheme + \"\\\" as configured in Auth request\");\r\n }\r\n if (!(request.claims && !StringUtils.isEmpty(request.claims))) return [3 /*break*/, 2];\r\n _a = validatedRequest;\r\n return [4 /*yield*/, this.browserCrypto.hashString(request.claims)];\r\n case 1:\r\n _a.requestedClaimsHash = _b.sent();\r\n _b.label = 2;\r\n case 2: return [2 /*return*/, validatedRequest];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n *\r\n * Use to get the redirect uri configured in MSAL or null.\r\n * @param requestRedirectUri\r\n * @returns Redirect URL\r\n *\r\n */\r\n BaseInteractionClient.prototype.getRedirectUri = function (requestRedirectUri) {\r\n this.logger.verbose(\"getRedirectUri called\");\r\n var redirectUri = requestRedirectUri || this.config.auth.redirectUri || BrowserUtils.getCurrentUri();\r\n return UrlString.getAbsoluteUrl(redirectUri, BrowserUtils.getCurrentUri());\r\n };\r\n /**\r\n *\r\n * @param apiId\r\n * @param correlationId\r\n * @param forceRefresh\r\n */\r\n BaseInteractionClient.prototype.initializeServerTelemetryManager = function (apiId, forceRefresh) {\r\n this.logger.verbose(\"initializeServerTelemetryManager called\");\r\n var telemetryPayload = {\r\n clientId: this.config.auth.clientId,\r\n correlationId: this.correlationId,\r\n apiId: apiId,\r\n forceRefresh: forceRefresh || false,\r\n wrapperSKU: this.browserStorage.getWrapperMetadata()[0],\r\n wrapperVer: this.browserStorage.getWrapperMetadata()[1]\r\n };\r\n return new ServerTelemetryManager(telemetryPayload, this.browserStorage);\r\n };\r\n /**\r\n * Used to get a discovered version of the default authority.\r\n * @param requestAuthority\r\n * @param requestCorrelationId\r\n */\r\n BaseInteractionClient.prototype.getDiscoveredAuthority = function (requestAuthority) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authorityOptions;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"getDiscoveredAuthority called\");\r\n authorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata\r\n };\r\n if (!requestAuthority) return [3 /*break*/, 2];\r\n this.logger.verbose(\"Creating discovered authority with request authority\");\r\n return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(requestAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2:\r\n this.logger.verbose(\"Creating discovered authority with configured authority\");\r\n return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(this.config.auth.authority, this.config.system.networkClient, this.browserStorage, authorityOptions)];\r\n case 3: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n return BaseInteractionClient;\r\n}());\n\nexport { BaseInteractionClient };\n//# sourceMappingURL=BaseInteractionClient.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { UrlString, Constants, AuthorizationCodeClient, PerformanceEvents, Authority, AuthorityFactory, ResponseMode, StringUtils, ProtocolUtils } from '@azure/msal-common';\nimport { BaseInteractionClient } from './BaseInteractionClient.js';\nimport { BrowserConstants } from '../utils/BrowserConstants.js';\nimport { version } from '../packageMetadata.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { BrowserProtocolUtils } from '../utils/BrowserProtocolUtils.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Defines the class structure and helper functions used by the \"standard\", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))\r\n */\r\nvar StandardInteractionClient = /** @class */ (function (_super) {\r\n __extends(StandardInteractionClient, _super);\r\n function StandardInteractionClient() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Generates an auth code request tied to the url request.\r\n * @param request\r\n */\r\n StandardInteractionClient.prototype.initializeAuthorizationCodeRequest = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var generatedPkceParams, authCodeRequest;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"initializeAuthorizationRequest called\", request.correlationId);\r\n return [4 /*yield*/, this.browserCrypto.generatePkceCodes()];\r\n case 1:\r\n generatedPkceParams = _a.sent();\r\n authCodeRequest = __assign(__assign({}, request), { redirectUri: request.redirectUri, code: Constants.EMPTY_STRING, codeVerifier: generatedPkceParams.verifier });\r\n request.codeChallenge = generatedPkceParams.challenge;\r\n request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;\r\n return [2 /*return*/, authCodeRequest];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Initializer for the logout request.\r\n * @param logoutRequest\r\n */\r\n StandardInteractionClient.prototype.initializeLogoutRequest = function (logoutRequest) {\r\n this.logger.verbose(\"initializeLogoutRequest called\", logoutRequest === null || logoutRequest === void 0 ? void 0 : logoutRequest.correlationId);\r\n var validLogoutRequest = __assign({ correlationId: this.correlationId || this.browserCrypto.createNewGuid() }, logoutRequest);\r\n /**\r\n * Set logout_hint to be login_hint from ID Token Claims if present\r\n * and logoutHint attribute wasn't manually set in logout request\r\n */\r\n if (logoutRequest) {\r\n // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims\r\n if (!logoutRequest.logoutHint) {\r\n if (logoutRequest.account) {\r\n var logoutHint = this.getLogoutHintFromIdTokenClaims(logoutRequest.account);\r\n if (logoutHint) {\r\n this.logger.verbose(\"Setting logoutHint to login_hint ID Token Claim value for the account provided\");\r\n validLogoutRequest.logoutHint = logoutHint;\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"logoutHint was not set and account was not passed into logout request, logoutHint will not be set\");\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"logoutHint has already been set in logoutRequest\");\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"logoutHint will not be set since no logout request was configured\");\r\n }\r\n /*\r\n * Only set redirect uri if logout request isn't provided or the set uri isn't null.\r\n * Otherwise, use passed uri, config, or current page.\r\n */\r\n if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {\r\n if (logoutRequest && logoutRequest.postLogoutRedirectUri) {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to uri set on logout request\", validLogoutRequest.correlationId);\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(logoutRequest.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\r\n }\r\n else if (this.config.auth.postLogoutRedirectUri === null) {\r\n this.logger.verbose(\"postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect\", validLogoutRequest.correlationId);\r\n }\r\n else if (this.config.auth.postLogoutRedirectUri) {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to configured uri\", validLogoutRequest.correlationId);\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri, BrowserUtils.getCurrentUri());\r\n }\r\n else {\r\n this.logger.verbose(\"Setting postLogoutRedirectUri to current page\", validLogoutRequest.correlationId);\r\n validLogoutRequest.postLogoutRedirectUri = UrlString.getAbsoluteUrl(BrowserUtils.getCurrentUri(), BrowserUtils.getCurrentUri());\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"postLogoutRedirectUri passed as null, not setting post logout redirect uri\", validLogoutRequest.correlationId);\r\n }\r\n return validLogoutRequest;\r\n };\r\n /**\r\n * Parses login_hint ID Token Claim out of AccountInfo object to be used as\r\n * logout_hint in end session request.\r\n * @param account\r\n */\r\n StandardInteractionClient.prototype.getLogoutHintFromIdTokenClaims = function (account) {\r\n var idTokenClaims = account.idTokenClaims;\r\n if (idTokenClaims) {\r\n if (idTokenClaims.login_hint) {\r\n return idTokenClaims.login_hint;\r\n }\r\n else {\r\n this.logger.verbose(\"The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request\");\r\n }\r\n }\r\n else {\r\n this.logger.verbose(\"The provided account does not contain ID Token Claims, logoutHint will not be added to logout request\");\r\n }\r\n return null;\r\n };\r\n /**\r\n * Creates an Authorization Code Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n StandardInteractionClient.prototype.createAuthCodeClient = function (serverTelemetryManager, authorityUrl, requestAzureCloudOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var clientConfig;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.getClientConfiguration(serverTelemetryManager, authorityUrl, requestAzureCloudOptions)];\r\n case 1:\r\n clientConfig = _a.sent();\r\n return [2 /*return*/, new AuthorizationCodeClient(clientConfig)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Creates a Client Configuration object with the given request authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param requestAuthority\r\n * @param requestCorrelationId\r\n */\r\n StandardInteractionClient.prototype.getClientConfiguration = function (serverTelemetryManager, requestAuthority, requestAzureCloudOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var discoveredAuthority;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"getClientConfiguration called\", this.correlationId);\r\n return [4 /*yield*/, this.getDiscoveredAuthority(requestAuthority, requestAzureCloudOptions)];\r\n case 1:\r\n discoveredAuthority = _a.sent();\r\n return [2 /*return*/, {\r\n authOptions: {\r\n clientId: this.config.auth.clientId,\r\n authority: discoveredAuthority,\r\n clientCapabilities: this.config.auth.clientCapabilities\r\n },\r\n systemOptions: {\r\n tokenRenewalOffsetSeconds: this.config.system.tokenRenewalOffsetSeconds,\r\n preventCorsPreflight: true\r\n },\r\n loggerOptions: {\r\n loggerCallback: this.config.system.loggerOptions.loggerCallback,\r\n piiLoggingEnabled: this.config.system.loggerOptions.piiLoggingEnabled,\r\n logLevel: this.config.system.loggerOptions.logLevel,\r\n correlationId: this.correlationId\r\n },\r\n cryptoInterface: this.browserCrypto,\r\n networkInterface: this.networkClient,\r\n storageInterface: this.browserStorage,\r\n serverTelemetryManager: serverTelemetryManager,\r\n libraryInfo: {\r\n sku: BrowserConstants.MSAL_SKU,\r\n version: version,\r\n cpu: Constants.EMPTY_STRING,\r\n os: Constants.EMPTY_STRING\r\n },\r\n telemetry: this.config.telemetry\r\n }];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * @param hash\r\n * @param interactionType\r\n */\r\n StandardInteractionClient.prototype.validateAndExtractStateFromHash = function (serverParams, interactionType, requestCorrelationId) {\r\n this.logger.verbose(\"validateAndExtractStateFromHash called\", requestCorrelationId);\r\n if (!serverParams.state) {\r\n throw BrowserAuthError.createHashDoesNotContainStateError();\r\n }\r\n var platformStateObj = BrowserProtocolUtils.extractBrowserRequestState(this.browserCrypto, serverParams.state);\r\n if (!platformStateObj) {\r\n throw BrowserAuthError.createUnableToParseStateError();\r\n }\r\n if (platformStateObj.interactionType !== interactionType) {\r\n throw BrowserAuthError.createStateInteractionTypeMismatchError();\r\n }\r\n this.logger.verbose(\"Returning state from hash\", requestCorrelationId);\r\n return serverParams.state;\r\n };\r\n /**\r\n * Used to get a discovered version of the default authority.\r\n * @param requestAuthority\r\n * @param requestCorrelationId\r\n */\r\n StandardInteractionClient.prototype.getDiscoveredAuthority = function (requestAuthority, requestAzureCloudOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var getAuthorityMeasurement, authorityOptions, userAuthority, builtAuthority;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"getDiscoveredAuthority called\", this.correlationId);\r\n getAuthorityMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority, this.correlationId);\r\n authorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata,\r\n };\r\n userAuthority = requestAuthority ? requestAuthority : this.config.auth.authority;\r\n builtAuthority = Authority.generateAuthority(userAuthority, requestAzureCloudOptions || this.config.auth.azureCloudOptions);\r\n this.logger.verbose(\"Creating discovered authority with configured authority\", this.correlationId);\r\n return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(builtAuthority, this.config.system.networkClient, this.browserStorage, authorityOptions)\r\n .then(function (result) {\r\n getAuthorityMeasurement.endMeasurement({\r\n success: true\r\n });\r\n return result;\r\n })\r\n .catch(function (error) {\r\n getAuthorityMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw error;\r\n })];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Helper to initialize required request parameters for interactive APIs and ssoSilent()\r\n * @param request\r\n * @param interactionType\r\n */\r\n StandardInteractionClient.prototype.initializeAuthorizationRequest = function (request, interactionType) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var redirectUri, browserState, state, validatedRequest, _a, account, legacyLoginHint;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.logger.verbose(\"initializeAuthorizationRequest called\", this.correlationId);\r\n redirectUri = this.getRedirectUri(request.redirectUri);\r\n browserState = {\r\n interactionType: interactionType\r\n };\r\n state = ProtocolUtils.setRequestState(this.browserCrypto, (request && request.state) || Constants.EMPTY_STRING, browserState);\r\n _a = [{}];\r\n return [4 /*yield*/, this.initializeBaseRequest(request)];\r\n case 1:\r\n validatedRequest = __assign.apply(void 0, [__assign.apply(void 0, _a.concat([_b.sent()])), { redirectUri: redirectUri, state: state, nonce: request.nonce || this.browserCrypto.createNewGuid(), responseMode: ResponseMode.FRAGMENT }]);\r\n account = request.account || this.browserStorage.getActiveAccount();\r\n if (account) {\r\n this.logger.verbose(\"Setting validated request account\", this.correlationId);\r\n this.logger.verbosePii(\"Setting validated request account: \" + account.homeAccountId, this.correlationId);\r\n validatedRequest.account = account;\r\n }\r\n // Check for ADAL/MSAL v1 SSO\r\n if (StringUtils.isEmpty(validatedRequest.loginHint) && !account) {\r\n legacyLoginHint = this.browserStorage.getLegacyLoginHint();\r\n if (legacyLoginHint) {\r\n validatedRequest.loginHint = legacyLoginHint;\r\n }\r\n }\r\n return [2 /*return*/, validatedRequest];\r\n }\r\n });\r\n });\r\n };\r\n return StandardInteractionClient;\r\n}(BaseInteractionClient));\n\nexport { StandardInteractionClient };\n//# sourceMappingURL=StandardInteractionClient.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { StringUtils, Constants } from '@azure/msal-common';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { BrowserConstants, InteractionType } from './BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar PopupUtils = /** @class */ (function () {\r\n function PopupUtils(storageImpl, logger) {\r\n this.browserStorage = storageImpl;\r\n this.logger = logger;\r\n // Properly sets this reference for the unload event.\r\n this.unloadWindow = this.unloadWindow.bind(this);\r\n }\r\n /**\r\n * @hidden\r\n *\r\n * Configures popup window for login.\r\n *\r\n * @param urlNavigate\r\n * @param title\r\n * @param popUpWidth\r\n * @param popUpHeight\r\n * @param popupWindowAttributes\r\n * @ignore\r\n * @hidden\r\n */\r\n PopupUtils.prototype.openPopup = function (urlNavigate, popupParams) {\r\n try {\r\n var popupWindow = void 0;\r\n // Popup window passed in, setting url to navigate to\r\n if (popupParams.popup) {\r\n popupWindow = popupParams.popup;\r\n this.logger.verbosePii(\"Navigating popup window to: \" + urlNavigate);\r\n popupWindow.location.assign(urlNavigate);\r\n }\r\n else if (typeof popupParams.popup === \"undefined\") {\r\n // Popup will be undefined if it was not passed in\r\n this.logger.verbosePii(\"Opening popup window to: \" + urlNavigate);\r\n popupWindow = PopupUtils.openSizedPopup(urlNavigate, popupParams.popupName, popupParams.popupWindowAttributes, this.logger);\r\n }\r\n // Popup will be null if popups are blocked\r\n if (!popupWindow) {\r\n throw BrowserAuthError.createEmptyWindowCreatedError();\r\n }\r\n if (popupWindow.focus) {\r\n popupWindow.focus();\r\n }\r\n this.currentWindow = popupWindow;\r\n window.addEventListener(\"beforeunload\", this.unloadWindow);\r\n return popupWindow;\r\n }\r\n catch (e) {\r\n this.logger.error(\"error opening popup \" + e.message);\r\n this.browserStorage.setInteractionInProgress(false);\r\n throw BrowserAuthError.createPopupWindowError(e.toString());\r\n }\r\n };\r\n /**\r\n * Helper function to set popup window dimensions and position\r\n * @param urlNavigate\r\n * @param popupName\r\n * @param popupWindowAttributes\r\n * @returns\r\n */\r\n PopupUtils.openSizedPopup = function (urlNavigate, popupName, popupWindowAttributes, logger) {\r\n var _a, _b, _c, _d;\r\n /**\r\n * adding winLeft and winTop to account for dual monitor\r\n * using screenLeft and screenTop for IE8 and earlier\r\n */\r\n var winLeft = window.screenLeft ? window.screenLeft : window.screenX;\r\n var winTop = window.screenTop ? window.screenTop : window.screenY;\r\n /**\r\n * window.innerWidth displays browser window\"s height and width excluding toolbars\r\n * using document.documentElement.clientWidth for IE8 and earlier\r\n */\r\n var winWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\r\n var winHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\r\n var width = (_a = popupWindowAttributes.popupSize) === null || _a === void 0 ? void 0 : _a.width;\r\n var height = (_b = popupWindowAttributes.popupSize) === null || _b === void 0 ? void 0 : _b.height;\r\n var top = (_c = popupWindowAttributes.popupPosition) === null || _c === void 0 ? void 0 : _c.top;\r\n var left = (_d = popupWindowAttributes.popupPosition) === null || _d === void 0 ? void 0 : _d.left;\r\n if (!width || width < 0 || width > winWidth) {\r\n logger.verbose(\"Default popup window width used. Window width not configured or invalid.\");\r\n width = BrowserConstants.POPUP_WIDTH;\r\n }\r\n if (!height || height < 0 || height > winHeight) {\r\n logger.verbose(\"Default popup window height used. Window height not configured or invalid.\");\r\n height = BrowserConstants.POPUP_HEIGHT;\r\n }\r\n if (!top || top < 0 || top > winHeight) {\r\n logger.verbose(\"Default popup window top position used. Window top not configured or invalid.\");\r\n top = Math.max(0, ((winHeight / 2) - (BrowserConstants.POPUP_HEIGHT / 2)) + winTop);\r\n }\r\n if (!left || left < 0 || left > winWidth) {\r\n logger.verbose(\"Default popup window left position used. Window left not configured or invalid.\");\r\n left = Math.max(0, ((winWidth / 2) - (BrowserConstants.POPUP_WIDTH / 2)) + winLeft);\r\n }\r\n return window.open(urlNavigate, popupName, \"width=\" + width + \", height=\" + height + \", top=\" + top + \", left=\" + left + \", scrollbars=yes\");\r\n };\r\n /**\r\n * Event callback to unload main window.\r\n */\r\n PopupUtils.prototype.unloadWindow = function (e) {\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Popup);\r\n if (this.currentWindow) {\r\n this.currentWindow.close();\r\n }\r\n // Guarantees browser unload will happen, so no other errors will be thrown.\r\n e.preventDefault();\r\n };\r\n /**\r\n * Closes popup, removes any state vars created during popup calls.\r\n * @param popupWindow\r\n */\r\n PopupUtils.prototype.cleanPopup = function (popupWindow) {\r\n if (popupWindow) {\r\n // Close window.\r\n popupWindow.close();\r\n }\r\n // Remove window unload function\r\n window.removeEventListener(\"beforeunload\", this.unloadWindow);\r\n // Interaction is completed - remove interaction status.\r\n this.browserStorage.setInteractionInProgress(false);\r\n };\r\n /**\r\n * Monitors a window until it loads a url with the same origin.\r\n * @param popupWindow - window that is being monitored\r\n */\r\n PopupUtils.prototype.monitorPopupForSameOrigin = function (popupWindow) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n var intervalId = setInterval(function () {\r\n if (popupWindow.closed) {\r\n // Window is closed\r\n _this.cleanPopup();\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createUserCancelledError());\r\n return;\r\n }\r\n var href = Constants.EMPTY_STRING;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = popupWindow.location.href;\r\n }\r\n catch (e) { }\r\n // Don't process blank pages or cross domain\r\n if (StringUtils.isEmpty(href) || href === \"about:blank\") {\r\n return;\r\n }\r\n clearInterval(intervalId);\r\n resolve();\r\n }, BrowserConstants.POLL_INTERVAL_MS);\r\n });\r\n };\r\n /**\r\n * Generates the name for the popup based on the client id and request\r\n * @param clientId\r\n * @param request\r\n */\r\n PopupUtils.generatePopupName = function (clientId, scopes, authority, correlationId) {\r\n return BrowserConstants.POPUP_NAME_PREFIX + \".\" + clientId + \".\" + scopes.join(\"-\") + \".\" + authority + \".\" + correlationId;\r\n };\r\n /**\r\n * Generates the name for the popup based on the client id and request for logouts\r\n * @param clientId\r\n * @param request\r\n */\r\n PopupUtils.generateLogoutPopupName = function (clientId, request) {\r\n var homeAccountId = request.account && request.account.homeAccountId;\r\n return BrowserConstants.POPUP_NAME_PREFIX + \".\" + clientId + \".\" + homeAccountId + \".\" + request.correlationId;\r\n };\r\n return PopupUtils;\r\n}());\n\nexport { PopupUtils };\n//# sourceMappingURL=PopupUtils.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { StringUtils, ClientAuthError, ServerError, AuthorityFactory } from '@azure/msal-common';\nimport { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';\nimport { TemporaryCacheKeys } from '../utils/BrowserConstants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Abstract class which defines operations for a browser interaction handling class.\r\n */\r\nvar InteractionHandler = /** @class */ (function () {\r\n function InteractionHandler(authCodeModule, storageImpl, authCodeRequest, browserRequestLogger) {\r\n this.authModule = authCodeModule;\r\n this.browserStorage = storageImpl;\r\n this.authCodeRequest = authCodeRequest;\r\n this.browserRequestLogger = browserRequestLogger;\r\n }\r\n /**\r\n * Function to handle response parameters from hash.\r\n * @param locationHash\r\n */\r\n InteractionHandler.prototype.handleCodeResponseFromHash = function (locationHash, state, authority, networkModule) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var stateKey, requestState, authCodeResponse;\r\n return __generator(this, function (_a) {\r\n this.browserRequestLogger.verbose(\"InteractionHandler.handleCodeResponse called\");\r\n // Check that location hash isn't empty.\r\n if (StringUtils.isEmpty(locationHash)) {\r\n throw BrowserAuthError.createEmptyHashError(locationHash);\r\n }\r\n stateKey = this.browserStorage.generateStateKey(state);\r\n requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n try {\r\n authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\r\n }\r\n catch (e) {\r\n if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\r\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\r\n throw BrowserAuthError.createUserCancelledError();\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n return [2 /*return*/, this.handleCodeResponseFromServer(authCodeResponse, state, authority, networkModule)];\r\n });\r\n });\r\n };\r\n /**\r\n * Process auth code response from AAD\r\n * @param authCodeResponse\r\n * @param state\r\n * @param authority\r\n * @param networkModule\r\n * @returns\r\n */\r\n InteractionHandler.prototype.handleCodeResponseFromServer = function (authCodeResponse, state, authority, networkModule, validateNonce) {\r\n if (validateNonce === void 0) { validateNonce = true; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var stateKey, requestState, nonceKey, cachedNonce, cachedCcsCred, tokenResponse;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.browserRequestLogger.trace(\"InteractionHandler.handleCodeResponseFromServer called\");\r\n stateKey = this.browserStorage.generateStateKey(state);\r\n requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n nonceKey = this.browserStorage.generateNonceKey(requestState);\r\n cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\r\n // Assign code to request\r\n this.authCodeRequest.code = authCodeResponse.code;\r\n if (!authCodeResponse.cloud_instance_host_name) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n // Nonce validation not needed when redirect not involved (e.g. hybrid spa, renewing token via rt)\r\n if (validateNonce) {\r\n authCodeResponse.nonce = cachedNonce || undefined;\r\n }\r\n authCodeResponse.state = requestState;\r\n // Add CCS parameters if available\r\n if (authCodeResponse.client_info) {\r\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\r\n }\r\n else {\r\n cachedCcsCred = this.checkCcsCredentials();\r\n if (cachedCcsCred) {\r\n this.authCodeRequest.ccsCredential = cachedCcsCred;\r\n }\r\n }\r\n return [4 /*yield*/, this.authModule.acquireToken(this.authCodeRequest, authCodeResponse)];\r\n case 3:\r\n tokenResponse = _a.sent();\r\n this.browserStorage.cleanRequestByState(state);\r\n return [2 /*return*/, tokenResponse];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Updates authority based on cloudInstanceHostname\r\n * @param cloudInstanceHostname\r\n * @param authority\r\n * @param networkModule\r\n */\r\n InteractionHandler.prototype.updateTokenEndpointAuthority = function (cloudInstanceHostname, authority, networkModule) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cloudInstanceAuthorityUri, cloudInstanceAuthority;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n cloudInstanceAuthorityUri = \"https://\" + cloudInstanceHostname + \"/\" + authority.tenant + \"/\";\r\n return [4 /*yield*/, AuthorityFactory.createDiscoveredInstance(cloudInstanceAuthorityUri, networkModule, this.browserStorage, authority.options)];\r\n case 1:\r\n cloudInstanceAuthority = _a.sent();\r\n this.authModule.updateAuthority(cloudInstanceAuthority);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Looks up ccs creds in the cache\r\n */\r\n InteractionHandler.prototype.checkCcsCredentials = function () {\r\n // Look up ccs credential in temp cache\r\n var cachedCcsCred = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CCS_CREDENTIAL, true);\r\n if (cachedCcsCred) {\r\n try {\r\n return JSON.parse(cachedCcsCred);\r\n }\r\n catch (e) {\r\n this.authModule.logger.error(\"Cache credential could not be parsed\");\r\n this.authModule.logger.errorPii(\"Cache credential could not be parsed: \" + cachedCcsCred);\r\n }\r\n }\r\n return null;\r\n };\r\n return InteractionHandler;\r\n}());\n\nexport { InteractionHandler };\n//# sourceMappingURL=InteractionHandler.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { StringUtils, UrlString } from '@azure/msal-common';\nimport { InteractionHandler } from './InteractionHandler.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { PopupUtils } from '../utils/PopupUtils.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * This class implements the interaction handler base class for browsers. It is written specifically for handling\r\n * popup window scenarios. It includes functions for monitoring the popup window for a hash.\r\n */\r\nvar PopupHandler = /** @class */ (function (_super) {\r\n __extends(PopupHandler, _super);\r\n function PopupHandler(authCodeModule, storageImpl, authCodeRequest, browserRequestLogger) {\r\n var _this = _super.call(this, authCodeModule, storageImpl, authCodeRequest, browserRequestLogger) || this;\r\n // Properly sets this reference for the unload event.\r\n _this.popupUtils = new PopupUtils(storageImpl, browserRequestLogger);\r\n return _this;\r\n }\r\n /**\r\n * Opens a popup window with given request Url.\r\n * @param requestUrl\r\n */\r\n PopupHandler.prototype.initiateAuthRequest = function (requestUrl, params) {\r\n // Check that request url is not empty.\r\n if (!StringUtils.isEmpty(requestUrl)) {\r\n this.browserRequestLogger.infoPii(\"Navigate to: \" + requestUrl);\r\n // Open the popup window to requestUrl.\r\n return this.popupUtils.openPopup(requestUrl, params);\r\n }\r\n else {\r\n // Throw error if request URL is empty.\r\n this.browserRequestLogger.error(\"Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n };\r\n /**\r\n * Monitors a window until it loads a url with a known hash, or hits a specified timeout.\r\n * @param popupWindow - window that is being monitored\r\n * @param timeout - milliseconds until timeout\r\n */\r\n PopupHandler.prototype.monitorPopupForHash = function (popupWindow) {\r\n var _this = this;\r\n return this.popupUtils.monitorPopupForSameOrigin(popupWindow).then(function () {\r\n var contentHash = popupWindow.location.hash;\r\n BrowserUtils.clearHash(popupWindow);\r\n _this.popupUtils.cleanPopup(popupWindow);\r\n if (!contentHash) {\r\n throw BrowserAuthError.createEmptyHashError(popupWindow.location.href);\r\n }\r\n if (UrlString.hashContainsKnownProperties(contentHash)) {\r\n return contentHash;\r\n }\r\n else {\r\n throw BrowserAuthError.createHashDoesNotContainKnownPropertiesError();\r\n }\r\n });\r\n };\r\n return PopupHandler;\r\n}(InteractionHandler));\n\nexport { PopupHandler };\n//# sourceMappingURL=PopupHandler.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { TimeUtils, PerformanceEvents, AuthenticationScheme, PopTokenGenerator, AccountEntity, Constants, AuthorityType, ScopeSet, AuthToken, PromptValue, UrlString, OIDC_DEFAULT_SCOPES } from '@azure/msal-common';\nimport { BaseInteractionClient } from './BaseInteractionClient.js';\nimport { TemporaryCacheKeys, NativeExtensionMethod, ApiId } from '../utils/BrowserConstants.js';\nimport { NativeAuthError } from '../error/NativeAuthError.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NativeInteractionClient = /** @class */ (function (_super) {\r\n __extends(NativeInteractionClient, _super);\r\n function NativeInteractionClient(config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, provider, accountId, correlationId) {\r\n var _this = _super.call(this, config, browserStorage, browserCrypto, logger, eventHandler, navigationClient, performanceClient, provider, correlationId) || this;\r\n _this.apiId = apiId;\r\n _this.accountId = accountId;\r\n _this.nativeMessageHandler = provider;\r\n return _this;\r\n }\r\n /**\r\n * Acquire token from native platform via browser extension\r\n * @param request\r\n */\r\n NativeInteractionClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var nativeATMeasurement, nativeRequest, messageBody, reqTimestamp, response, validatedResponse;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - acquireToken called.\");\r\n nativeATMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.NativeInteractionClientAcquireToken, request.correlationId);\r\n return [4 /*yield*/, this.initializeNativeRequest(request)];\r\n case 1:\r\n nativeRequest = _a.sent();\r\n messageBody = {\r\n method: NativeExtensionMethod.GetToken,\r\n request: nativeRequest\r\n };\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n return [4 /*yield*/, this.nativeMessageHandler.sendMessage(messageBody)];\r\n case 2:\r\n response = _a.sent();\r\n validatedResponse = this.validateNativeResponse(response);\r\n return [2 /*return*/, this.handleNativeResponse(validatedResponse, nativeRequest, reqTimestamp)\r\n .then(function (result) {\r\n nativeATMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: true\r\n });\r\n return result;\r\n })\r\n .catch(function (error) {\r\n nativeATMeasurement.endMeasurement({\r\n success: false,\r\n isNativeBroker: true\r\n });\r\n throw error;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Acquires a token from native platform then redirects to the redirectUri instead of returning the response\r\n * @param request\r\n */\r\n NativeInteractionClient.prototype.acquireTokenRedirect = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var nativeRequest, messageBody, response, e_1, navigationOptions, redirectUri;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - acquireTokenRedirect called.\");\r\n return [4 /*yield*/, this.initializeNativeRequest(request)];\r\n case 1:\r\n nativeRequest = _a.sent();\r\n messageBody = {\r\n method: NativeExtensionMethod.GetToken,\r\n request: nativeRequest\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, this.nativeMessageHandler.sendMessage(messageBody)];\r\n case 3:\r\n response = _a.sent();\r\n this.validateNativeResponse(response);\r\n return [3 /*break*/, 5];\r\n case 4:\r\n e_1 = _a.sent();\r\n // Only throw fatal errors here to allow application to fallback to regular redirect. Otherwise proceed and the error will be thrown in handleRedirectPromise\r\n if (e_1 instanceof NativeAuthError && e_1.isFatal()) {\r\n throw e_1;\r\n }\r\n return [3 /*break*/, 5];\r\n case 5:\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.NATIVE_REQUEST, JSON.stringify(nativeRequest), true);\r\n navigationOptions = {\r\n apiId: ApiId.acquireTokenRedirect,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n redirectUri = this.config.auth.navigateToLoginRequestUrl ? window.location.href : this.getRedirectUri(request.redirectUri);\r\n return [4 /*yield*/, this.navigationClient.navigateExternal(redirectUri, navigationOptions)];\r\n case 6:\r\n _a.sent(); // Need to treat this as external to ensure handleRedirectPromise is run again\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * If the previous page called native platform for a token using redirect APIs, send the same request again and return the response\r\n */\r\n NativeInteractionClient.prototype.handleRedirectPromise = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cachedRequest, messageBody, reqTimestamp, response, result, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - handleRedirectPromise called.\");\r\n if (!this.browserStorage.isInteractionInProgress(true)) {\r\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\r\n return [2 /*return*/, null];\r\n }\r\n cachedRequest = this.browserStorage.getCachedNativeRequest();\r\n if (!cachedRequest) {\r\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise called but there is no cached request, returning null.\");\r\n return [2 /*return*/, null];\r\n }\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST));\r\n messageBody = {\r\n method: NativeExtensionMethod.GetToken,\r\n request: cachedRequest\r\n };\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n this.logger.verbose(\"NativeInteractionClient - handleRedirectPromise sending message to native broker.\");\r\n return [4 /*yield*/, this.nativeMessageHandler.sendMessage(messageBody)];\r\n case 2:\r\n response = _a.sent();\r\n this.validateNativeResponse(response);\r\n result = this.handleNativeResponse(response, cachedRequest, reqTimestamp);\r\n this.browserStorage.setInteractionInProgress(false);\r\n return [2 /*return*/, result];\r\n case 3:\r\n e_2 = _a.sent();\r\n this.browserStorage.setInteractionInProgress(false);\r\n throw e_2;\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Logout from native platform via browser extension\r\n * @param request\r\n */\r\n NativeInteractionClient.prototype.logout = function () {\r\n this.logger.trace(\"NativeInteractionClient - logout called.\");\r\n return Promise.reject(\"Logout not implemented yet\");\r\n };\r\n /**\r\n * Transform response from native platform into AuthenticationResult object which will be returned to the end user\r\n * @param response\r\n * @param request\r\n * @param reqTimestamp\r\n */\r\n NativeInteractionClient.prototype.handleNativeResponse = function (response, request, reqTimestamp) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var idTokenObj, authority, authorityPreferredCache, homeAccountIdentifier, accountEntity, responseScopes, accountProperties, uid, tid, responseAccessToken, responseTokenType, _a, popTokenGenerator, shrParameters, result;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - handleNativeResponse called.\");\r\n if (response.account.id !== request.accountId) {\r\n // User switch in native broker prompt is not supported. All users must first sign in through web flow to ensure server state is in sync\r\n throw NativeAuthError.createUserSwitchError();\r\n }\r\n idTokenObj = new AuthToken(response.id_token || Constants.EMPTY_STRING, this.browserCrypto);\r\n return [4 /*yield*/, this.getDiscoveredAuthority(request.authority)];\r\n case 1:\r\n authority = _b.sent();\r\n authorityPreferredCache = authority.getPreferredCache();\r\n homeAccountIdentifier = AccountEntity.generateHomeAccountId(response.client_info || Constants.EMPTY_STRING, AuthorityType.Default, this.logger, this.browserCrypto, idTokenObj);\r\n accountEntity = AccountEntity.createAccount(response.client_info, homeAccountIdentifier, idTokenObj, undefined, undefined, undefined, undefined, authorityPreferredCache, response.account.id);\r\n this.browserStorage.setAccount(accountEntity);\r\n responseScopes = response.scopes ? ScopeSet.fromString(response.scopes) : ScopeSet.fromString(request.scopes);\r\n accountProperties = response.account.properties || {};\r\n uid = accountProperties[\"UID\"] || idTokenObj.claims.oid || idTokenObj.claims.sub || Constants.EMPTY_STRING;\r\n tid = accountProperties[\"TenantId\"] || idTokenObj.claims.tid || Constants.EMPTY_STRING;\r\n responseTokenType = AuthenticationScheme.BEARER;\r\n _a = request.token_type;\r\n switch (_a) {\r\n case AuthenticationScheme.POP: return [3 /*break*/, 2];\r\n }\r\n return [3 /*break*/, 4];\r\n case 2:\r\n // Set the token type to POP in the response\r\n responseTokenType = AuthenticationScheme.POP;\r\n // Check if native layer returned an SHR token\r\n if (response.shr) {\r\n this.logger.trace(\"handleNativeServerResponse: SHR is enabled in native layer\");\r\n responseAccessToken = response.shr;\r\n return [3 /*break*/, 5];\r\n }\r\n popTokenGenerator = new PopTokenGenerator(this.browserCrypto);\r\n shrParameters = {\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n shrNonce: request.shrNonce\r\n };\r\n return [4 /*yield*/, popTokenGenerator.signPopToken(response.access_token, shrParameters)];\r\n case 3:\r\n responseAccessToken = _b.sent();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n {\r\n responseAccessToken = response.access_token;\r\n }\r\n _b.label = 5;\r\n case 5:\r\n result = {\r\n authority: authority.canonicalAuthority,\r\n uniqueId: uid,\r\n tenantId: tid,\r\n scopes: responseScopes.asArray(),\r\n account: accountEntity.getAccountInfo(),\r\n idToken: response.id_token,\r\n idTokenClaims: idTokenObj.claims,\r\n accessToken: responseAccessToken,\r\n fromCache: false,\r\n expiresOn: new Date(Number(reqTimestamp + response.expires_in) * 1000),\r\n tokenType: responseTokenType,\r\n correlationId: this.correlationId,\r\n state: response.state,\r\n fromNativeBroker: true\r\n };\r\n // Remove any existing cached tokens for this account\r\n this.browserStorage.removeAccountContext(accountEntity).catch(function (e) {\r\n _this.logger.error(\"Error occurred while removing account context from browser storage. \" + e);\r\n });\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Validates native platform response before processing\r\n * @param response\r\n */\r\n NativeInteractionClient.prototype.validateNativeResponse = function (response) {\r\n if (response.hasOwnProperty(\"access_token\") &&\r\n response.hasOwnProperty(\"id_token\") &&\r\n response.hasOwnProperty(\"client_info\") &&\r\n response.hasOwnProperty(\"account\") &&\r\n response.hasOwnProperty(\"scopes\") &&\r\n response.hasOwnProperty(\"expires_in\")) {\r\n return response;\r\n }\r\n else {\r\n throw NativeAuthError.createUnexpectedError(\"Response missing expected properties.\");\r\n }\r\n };\r\n /**\r\n * Translates developer provided request object into NativeRequest object\r\n * @param request\r\n */\r\n NativeInteractionClient.prototype.initializeNativeRequest = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authority, canonicalAuthority, scopes, scopeSet, instanceAware, validatedRequest, shrParameters, popTokenGenerator, cnf, _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.logger.trace(\"NativeInteractionClient - initializeNativeRequest called\");\r\n authority = request.authority || this.config.auth.authority;\r\n canonicalAuthority = new UrlString(authority);\r\n canonicalAuthority.validateAsUri();\r\n scopes = request && request.scopes || [];\r\n scopeSet = new ScopeSet(scopes);\r\n scopeSet.appendScopes(OIDC_DEFAULT_SCOPES);\r\n if (request.prompt) {\r\n switch (request.prompt) {\r\n case PromptValue.NONE:\r\n case PromptValue.CONSENT:\r\n this.logger.trace(\"initializeNativeRequest: prompt is compatible with native flow\");\r\n break;\r\n default:\r\n this.logger.trace(\"initializeNativeRequest: prompt = \" + request.prompt + \" is not compatible with native flow\");\r\n throw BrowserAuthError.createNativePromptParameterNotSupportedError();\r\n }\r\n }\r\n instanceAware = !!(request.extraQueryParameters && request.extraQueryParameters.instance_aware);\r\n validatedRequest = __assign(__assign({}, request), { accountId: this.accountId, clientId: this.config.auth.clientId, authority: canonicalAuthority.urlString, scopes: scopeSet.printScopes(), redirectUri: this.getRedirectUri(request.redirectUri), correlationId: this.correlationId, instance_aware: instanceAware, token_type: request.authenticationScheme, windowTitleSubstring: document.title, extraParameters: __assign(__assign({}, request.extraQueryParameters), request.tokenQueryParameters), extendedExpiryToken: false // Make this configurable?\r\n });\r\n if (!(request.authenticationScheme === AuthenticationScheme.POP)) return [3 /*break*/, 3];\r\n shrParameters = {\r\n resourceRequestUri: request.resourceRequestUri,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n shrClaims: request.shrClaims,\r\n shrNonce: request.shrNonce\r\n };\r\n popTokenGenerator = new PopTokenGenerator(this.browserCrypto);\r\n return [4 /*yield*/, popTokenGenerator.generateCnf(shrParameters)];\r\n case 1:\r\n cnf = _b.sent();\r\n // to reduce the URL length, it is recommended to send the hash of the req_cnf instead of the whole string\r\n _a = validatedRequest;\r\n return [4 /*yield*/, popTokenGenerator.generateCnfHash(cnf)];\r\n case 2:\r\n // to reduce the URL length, it is recommended to send the hash of the req_cnf instead of the whole string\r\n _a.req_cnf = _b.sent();\r\n _b.label = 3;\r\n case 3:\r\n if (this.apiId === ApiId.ssoSilent || this.apiId === ApiId.acquireTokenSilent_silentFlow) {\r\n validatedRequest.prompt = PromptValue.NONE;\r\n }\r\n return [2 /*return*/, validatedRequest];\r\n }\r\n });\r\n });\r\n };\r\n return NativeInteractionClient;\r\n}(BaseInteractionClient));\n\nexport { NativeInteractionClient };\n//# sourceMappingURL=NativeInteractionClient.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator } from '../../_virtual/_tslib.js';\nimport { NativeConstants, NativeExtensionMethod } from '../../utils/BrowserConstants.js';\nimport { AuthError, AuthenticationScheme } from '@azure/msal-common';\nimport { NativeAuthError } from '../../error/NativeAuthError.js';\nimport { BrowserAuthError } from '../../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar NativeMessageHandler = /** @class */ (function () {\r\n function NativeMessageHandler(logger, handshakeTimeoutMs, extensionId) {\r\n this.logger = logger;\r\n this.handshakeTimeoutMs = handshakeTimeoutMs;\r\n this.extensionId = extensionId;\r\n this.resolvers = new Map(); // Used for non-handshake messages\r\n this.handshakeResolvers = new Map(); // Used for handshake messages\r\n this.responseId = 0;\r\n this.messageChannel = new MessageChannel();\r\n this.windowListener = this.onWindowMessage.bind(this); // Window event callback doesn't have access to 'this' unless it's bound\r\n }\r\n /**\r\n * Sends a given message to the extension and resolves with the extension response\r\n * @param body\r\n */\r\n NativeMessageHandler.prototype.sendMessage = function (body) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var req;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n this.logger.trace(\"NativeMessageHandler - sendMessage called.\");\r\n req = {\r\n channel: NativeConstants.CHANNEL_ID,\r\n extensionId: this.extensionId,\r\n responseId: this.responseId++,\r\n body: body\r\n };\r\n this.logger.trace(\"NativeMessageHandler - Sending request to browser extension\");\r\n this.logger.tracePii(\"NativeMessageHandler - Sending request to browser extension: \" + JSON.stringify(req));\r\n this.messageChannel.port1.postMessage(req);\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n _this.resolvers.set(req.responseId, { resolve: resolve, reject: reject });\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * Returns an instance of the MessageHandler that has successfully established a connection with an extension\r\n * @param logger\r\n * @param handshakeTimeoutMs\r\n */\r\n NativeMessageHandler.createProvider = function (logger, handshakeTimeoutMs) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var preferredProvider, backupProvider;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n logger.trace(\"NativeMessageHandler - createProvider called.\");\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 5]);\r\n preferredProvider = new NativeMessageHandler(logger, handshakeTimeoutMs, NativeConstants.PREFERRED_EXTENSION_ID);\r\n return [4 /*yield*/, preferredProvider.sendHandshakeRequest()];\r\n case 2:\r\n _a.sent();\r\n return [2 /*return*/, preferredProvider];\r\n case 3:\r\n _a.sent();\r\n backupProvider = new NativeMessageHandler(logger, handshakeTimeoutMs);\r\n return [4 /*yield*/, backupProvider.sendHandshakeRequest()];\r\n case 4:\r\n _a.sent();\r\n return [2 /*return*/, backupProvider];\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Send handshake request helper.\r\n */\r\n NativeMessageHandler.prototype.sendHandshakeRequest = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var req;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n this.logger.trace(\"NativeMessageHandler - sendHandshakeRequest called.\");\r\n // Register this event listener before sending handshake\r\n window.addEventListener(\"message\", this.windowListener, false); // false is important, because content script message processing should work first\r\n req = {\r\n channel: NativeConstants.CHANNEL_ID,\r\n extensionId: this.extensionId,\r\n responseId: this.responseId++,\r\n body: {\r\n method: NativeExtensionMethod.HandshakeRequest\r\n }\r\n };\r\n this.messageChannel.port1.onmessage = function (event) {\r\n _this.onChannelMessage(event);\r\n };\r\n window.postMessage(req, window.origin, [this.messageChannel.port2]);\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n _this.handshakeResolvers.set(req.responseId, { resolve: resolve, reject: reject });\r\n _this.timeoutId = window.setTimeout(function () {\r\n /*\r\n * Throw an error if neither HandshakeResponse nor original Handshake request are received in a reasonable timeframe.\r\n * This typically suggests an event handler stopped propagation of the Handshake request but did not respond to it on the MessageChannel port\r\n */\r\n window.removeEventListener(\"message\", _this.windowListener, false);\r\n _this.messageChannel.port1.close();\r\n _this.messageChannel.port2.close();\r\n reject(BrowserAuthError.createNativeHandshakeTimeoutError());\r\n _this.handshakeResolvers.delete(req.responseId);\r\n }, _this.handshakeTimeoutMs); // Use a reasonable timeout in milliseconds here\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * Invoked when a message is posted to the window. If a handshake request is received it means the extension is not installed.\r\n * @param event\r\n */\r\n NativeMessageHandler.prototype.onWindowMessage = function (event) {\r\n this.logger.trace(\"NativeMessageHandler - onWindowMessage called\");\r\n // We only accept messages from ourselves\r\n if (event.source !== window) {\r\n return;\r\n }\r\n var request = event.data;\r\n if (!request.channel || request.channel !== NativeConstants.CHANNEL_ID) {\r\n return;\r\n }\r\n if (request.extensionId && request.extensionId !== this.extensionId) {\r\n return;\r\n }\r\n if (request.body.method === NativeExtensionMethod.HandshakeRequest) {\r\n // If we receive this message back it means no extension intercepted the request, meaning no extension supporting handshake protocol is installed\r\n this.logger.verbose(request.extensionId ? \"Extension with id: \" + request.extensionId + \" not installed\" : \"No extension installed\");\r\n clearTimeout(this.timeoutId);\r\n this.messageChannel.port1.close();\r\n this.messageChannel.port2.close();\r\n window.removeEventListener(\"message\", this.windowListener, false);\r\n var handshakeResolver = this.handshakeResolvers.get(request.responseId);\r\n if (handshakeResolver) {\r\n handshakeResolver.reject(BrowserAuthError.createNativeExtensionNotInstalledError());\r\n }\r\n }\r\n };\r\n /**\r\n * Invoked when a message is received from the extension on the MessageChannel port\r\n * @param event\r\n */\r\n NativeMessageHandler.prototype.onChannelMessage = function (event) {\r\n this.logger.trace(\"NativeMessageHandler - onChannelMessage called.\");\r\n var request = event.data;\r\n var resolver = this.resolvers.get(request.responseId);\r\n var handshakeResolver = this.handshakeResolvers.get(request.responseId);\r\n try {\r\n var method = request.body.method;\r\n if (method === NativeExtensionMethod.Response) {\r\n if (!resolver) {\r\n return;\r\n }\r\n var response = request.body.response;\r\n this.logger.trace(\"NativeMessageHandler - Received response from browser extension\");\r\n this.logger.tracePii(\"NativeMessageHandler - Received response from browser extension: \" + JSON.stringify(response));\r\n if (response.status !== \"Success\") {\r\n resolver.reject(NativeAuthError.createError(response.code, response.description, response.ext));\r\n }\r\n else if (response.result) {\r\n if (response.result[\"code\"] && response.result[\"description\"]) {\r\n resolver.reject(NativeAuthError.createError(response.result[\"code\"], response.result[\"description\"], response.result[\"ext\"]));\r\n }\r\n else {\r\n resolver.resolve(response.result);\r\n }\r\n }\r\n else {\r\n throw AuthError.createUnexpectedError(\"Event does not contain result.\");\r\n }\r\n this.resolvers.delete(request.responseId);\r\n }\r\n else if (method === NativeExtensionMethod.HandshakeResponse) {\r\n if (!handshakeResolver) {\r\n return;\r\n }\r\n clearTimeout(this.timeoutId); // Clear setTimeout\r\n window.removeEventListener(\"message\", this.windowListener, false); // Remove 'No extension' listener\r\n this.extensionId = request.extensionId;\r\n this.logger.verbose(\"NativeMessageHandler - Received HandshakeResponse from extension: \" + this.extensionId);\r\n handshakeResolver.resolve();\r\n this.handshakeResolvers.delete(request.responseId);\r\n }\r\n // Do nothing if method is not Response or HandshakeResponse\r\n }\r\n catch (err) {\r\n this.logger.error(\"Error parsing response from WAM Extension\");\r\n this.logger.errorPii(\"Error parsing response from WAM Extension: \" + err.toString());\r\n this.logger.errorPii(\"Unable to parse \" + event);\r\n if (resolver) {\r\n resolver.reject(err);\r\n }\r\n else if (handshakeResolver) {\r\n handshakeResolver.reject(err);\r\n }\r\n }\r\n };\r\n /**\r\n * Returns boolean indicating whether or not the request should attempt to use native broker\r\n * @param logger\r\n * @param config\r\n * @param nativeExtensionProvider\r\n * @param authenticationScheme\r\n */\r\n NativeMessageHandler.isNativeAvailable = function (config, logger, nativeExtensionProvider, authenticationScheme) {\r\n logger.trace(\"isNativeAvailable called\");\r\n if (!config.system.allowNativeBroker) {\r\n logger.trace(\"isNativeAvailable: allowNativeBroker is not enabled, returning false\");\r\n // Developer disabled WAM\r\n return false;\r\n }\r\n if (!nativeExtensionProvider) {\r\n logger.trace(\"isNativeAvailable: WAM extension provider is not initialized, returning false\");\r\n // Extension is not available\r\n return false;\r\n }\r\n if (authenticationScheme) {\r\n switch (authenticationScheme) {\r\n case AuthenticationScheme.BEARER:\r\n case AuthenticationScheme.POP:\r\n logger.trace(\"isNativeAvailable: authenticationScheme is supported, returning true\");\r\n return true;\r\n default:\r\n logger.trace(\"isNativeAvailable: authenticationScheme is not supported, returning false\");\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n return NativeMessageHandler;\r\n}());\n\nexport { NativeMessageHandler };\n//# sourceMappingURL=NativeMessageHandler.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { OIDC_DEFAULT_SCOPES, AuthError, UrlString, ThrottlingUtils, ProtocolUtils, PerformanceEvents, Constants } from '@azure/msal-common';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { PopupUtils } from '../utils/PopupUtils.js';\nimport { EventType } from '../event/EventType.js';\nimport { InteractionType, ApiId } from '../utils/BrowserConstants.js';\nimport { PopupHandler } from '../interaction_handler/PopupHandler.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\nimport { NativeInteractionClient } from './NativeInteractionClient.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar PopupClient = /** @class */ (function (_super) {\r\n __extends(PopupClient, _super);\r\n function PopupClient() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Acquires tokens by opening a popup window to the /authorize endpoint of the authority\r\n * @param request\r\n */\r\n PopupClient.prototype.acquireToken = function (request) {\r\n try {\r\n var popupName = PopupUtils.generatePopupName(this.config.auth.clientId, request.scopes || OIDC_DEFAULT_SCOPES, request.authority || this.config.auth.authority, this.correlationId);\r\n var popupWindowAttributes = request.popupWindowAttributes || {};\r\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\r\n if (this.config.system.asyncPopups) {\r\n this.logger.verbose(\"asyncPopups set to true, acquiring token\");\r\n // Passes on popup position and dimensions if in request\r\n return this.acquireTokenPopupAsync(request, popupName, popupWindowAttributes);\r\n }\r\n else {\r\n // asyncPopups flag is set to false. Opens popup before acquiring token.\r\n this.logger.verbose(\"asyncPopup set to false, opening popup before acquiring token\");\r\n var popup = PopupUtils.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes, this.logger);\r\n return this.acquireTokenPopupAsync(request, popupName, popupWindowAttributes, popup);\r\n }\r\n }\r\n catch (e) {\r\n return Promise.reject(e);\r\n }\r\n };\r\n /**\r\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\r\n * @param logoutRequest\r\n */\r\n PopupClient.prototype.logout = function (logoutRequest) {\r\n try {\r\n this.logger.verbose(\"logoutPopup called\");\r\n var validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\r\n var popupName = PopupUtils.generateLogoutPopupName(this.config.auth.clientId, validLogoutRequest);\r\n var authority = logoutRequest && logoutRequest.authority;\r\n var mainWindowRedirectUri = logoutRequest && logoutRequest.mainWindowRedirectUri;\r\n var popupWindowAttributes = (logoutRequest === null || logoutRequest === void 0 ? void 0 : logoutRequest.popupWindowAttributes) || {};\r\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\r\n if (this.config.system.asyncPopups) {\r\n this.logger.verbose(\"asyncPopups set to true\");\r\n // Passes on popup position and dimensions if in request\r\n return this.logoutPopupAsync(validLogoutRequest, popupName, popupWindowAttributes, authority, undefined, mainWindowRedirectUri);\r\n }\r\n else {\r\n // asyncPopups flag is set to false. Opens popup before logging out.\r\n this.logger.verbose(\"asyncPopup set to false, opening popup\");\r\n var popup = PopupUtils.openSizedPopup(\"about:blank\", popupName, popupWindowAttributes, this.logger);\r\n return this.logoutPopupAsync(validLogoutRequest, popupName, popupWindowAttributes, authority, popup, mainWindowRedirectUri);\r\n }\r\n }\r\n catch (e) {\r\n // Since this function is synchronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n };\r\n /**\r\n * Helper which obtains an access_token for your API via opening a popup window in the user's browser\r\n * @param validRequest\r\n * @param popupName\r\n * @param popup\r\n * @param popupWindowAttributes\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n PopupClient.prototype.acquireTokenPopupAsync = function (request, popupName, popupWindowAttributes, popup) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var serverTelemetryManager, validRequest, authCodeRequest, authClient, isNativeBroker, fetchNativeAccountIdMeasurement, navigateUrl, interactionHandler, popupParameters, popupWindow, hash, serverParams, state_1, nativeInteractionClient, userRequestState, result, e_1;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"acquireTokenPopupAsync called\");\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenPopup);\r\n return [4 /*yield*/, this.initializeAuthorizationRequest(request, InteractionType.Popup)];\r\n case 1:\r\n validRequest = _a.sent();\r\n this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || Constants.EMPTY_STRING, validRequest.account || null);\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 8, , 9]);\r\n return [4 /*yield*/, this.initializeAuthorizationCodeRequest(validRequest)];\r\n case 3:\r\n authCodeRequest = _a.sent();\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions)];\r\n case 4:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n isNativeBroker = NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme);\r\n fetchNativeAccountIdMeasurement = void 0;\r\n if (isNativeBroker) {\r\n fetchNativeAccountIdMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.FetchAccountIdWithNativeBroker, request.correlationId);\r\n }\r\n return [4 /*yield*/, authClient.getAuthCodeUrl(__assign(__assign({}, validRequest), { nativeBroker: isNativeBroker }))];\r\n case 5:\r\n navigateUrl = _a.sent();\r\n interactionHandler = new PopupHandler(authClient, this.browserStorage, authCodeRequest, this.logger);\r\n popupParameters = {\r\n popup: popup,\r\n popupName: popupName,\r\n popupWindowAttributes: popupWindowAttributes\r\n };\r\n popupWindow = interactionHandler.initiateAuthRequest(navigateUrl, popupParameters);\r\n this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, { popupWindow: popupWindow }, null);\r\n return [4 /*yield*/, interactionHandler.monitorPopupForHash(popupWindow)];\r\n case 6:\r\n hash = _a.sent();\r\n serverParams = UrlString.getDeserializedHash(hash);\r\n state_1 = this.validateAndExtractStateFromHash(serverParams, InteractionType.Popup, validRequest.correlationId);\r\n // Remove throttle if it exists\r\n ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, authCodeRequest);\r\n if (serverParams.accountId) {\r\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\r\n // end measurement for server call with native brokering enabled\r\n if (fetchNativeAccountIdMeasurement) {\r\n fetchNativeAccountIdMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: true\r\n });\r\n }\r\n if (!this.nativeMessageHandler) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, validRequest.correlationId);\r\n userRequestState = ProtocolUtils.parseRequestState(this.browserCrypto, state_1).userRequestState;\r\n return [2 /*return*/, nativeInteractionClient.acquireToken(__assign(__assign({}, validRequest), { state: userRequestState, prompt: undefined // Server should handle the prompt, ideally native broker can do this part silently\r\n })).finally(function () {\r\n _this.browserStorage.cleanRequestByState(state_1);\r\n })];\r\n }\r\n return [4 /*yield*/, interactionHandler.handleCodeResponseFromHash(hash, state_1, authClient.authority, this.networkClient)];\r\n case 7:\r\n result = _a.sent();\r\n return [2 /*return*/, result];\r\n case 8:\r\n e_1 = _a.sent();\r\n if (popup) {\r\n // Close the synchronous popup if an error is thrown before the window unload event is registered\r\n popup.close();\r\n }\r\n if (e_1 instanceof AuthError) {\r\n e_1.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_1);\r\n this.browserStorage.cleanRequestByState(validRequest.state);\r\n throw e_1;\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n *\r\n * @param validRequest\r\n * @param popupName\r\n * @param requestAuthority\r\n * @param popup\r\n * @param mainWindowRedirectUri\r\n * @param popupWindowAttributes\r\n */\r\n PopupClient.prototype.logoutPopupAsync = function (validRequest, popupName, popupWindowAttributes, requestAuthority, popup, mainWindowRedirectUri) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var serverTelemetryManager, authClient, logoutUri, popupUtils, popupWindow, e_2, navigationOptions, absoluteUrl, e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"logoutPopupAsync called\");\r\n this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Popup, validRequest);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logoutPopup);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 8, , 9]);\r\n // Clear cache on logout\r\n return [4 /*yield*/, this.clearCacheOnLogout(validRequest.account)];\r\n case 2:\r\n // Clear cache on logout\r\n _a.sent();\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, requestAuthority)];\r\n case 3:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n logoutUri = authClient.getLogoutUri(validRequest);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Popup, validRequest);\r\n popupUtils = new PopupUtils(this.browserStorage, this.logger);\r\n popupWindow = popupUtils.openPopup(logoutUri, { popupName: popupName, popupWindowAttributes: popupWindowAttributes, popup: popup });\r\n this.eventHandler.emitEvent(EventType.POPUP_OPENED, InteractionType.Popup, { popupWindow: popupWindow }, null);\r\n _a.label = 4;\r\n case 4:\r\n _a.trys.push([4, 6, , 7]);\r\n // Don't care if this throws an error (User Cancelled)\r\n return [4 /*yield*/, popupUtils.monitorPopupForSameOrigin(popupWindow)];\r\n case 5:\r\n // Don't care if this throws an error (User Cancelled)\r\n _a.sent();\r\n this.logger.verbose(\"Popup successfully redirected to postLogoutRedirectUri\");\r\n return [3 /*break*/, 7];\r\n case 6:\r\n e_2 = _a.sent();\r\n this.logger.verbose(\"Error occurred while monitoring popup for same origin. Session on server may remain active. Error: \" + e_2);\r\n return [3 /*break*/, 7];\r\n case 7:\r\n popupUtils.cleanPopup(popupWindow);\r\n if (mainWindowRedirectUri) {\r\n navigationOptions = {\r\n apiId: ApiId.logoutPopup,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n absoluteUrl = UrlString.getAbsoluteUrl(mainWindowRedirectUri, BrowserUtils.getCurrentUri());\r\n this.logger.verbose(\"Redirecting main window to url specified in the request\");\r\n this.logger.verbosePii(\"Redirecting main window to: \" + absoluteUrl);\r\n this.navigationClient.navigateInternal(absoluteUrl, navigationOptions);\r\n }\r\n else {\r\n this.logger.verbose(\"No main window navigation requested\");\r\n }\r\n return [3 /*break*/, 9];\r\n case 8:\r\n e_3 = _a.sent();\r\n if (popup) {\r\n // Close the synchronous popup if an error is thrown before the window unload event is registered\r\n popup.close();\r\n }\r\n if (e_3 instanceof AuthError) {\r\n e_3.setCorrelationId(this.correlationId);\r\n }\r\n this.browserStorage.setInteractionInProgress(false);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Popup, null, e_3);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\r\n serverTelemetryManager.cacheFailedRequest(e_3);\r\n throw e_3;\r\n case 9:\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Popup);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n return PopupClient;\r\n}(StandardInteractionClient));\n\nexport { PopupClient };\n//# sourceMappingURL=PopupClient.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { StringUtils, ClientAuthError, ServerError } from '@azure/msal-common';\nimport { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';\nimport { TemporaryCacheKeys, ApiId } from '../utils/BrowserConstants.js';\nimport { InteractionHandler } from './InteractionHandler.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar RedirectHandler = /** @class */ (function (_super) {\r\n __extends(RedirectHandler, _super);\r\n function RedirectHandler(authCodeModule, storageImpl, authCodeRequest, browserRequestLogger, browserCrypto) {\r\n var _this = _super.call(this, authCodeModule, storageImpl, authCodeRequest, browserRequestLogger) || this;\r\n _this.browserCrypto = browserCrypto;\r\n return _this;\r\n }\r\n /**\r\n * Redirects window to given URL.\r\n * @param urlNavigate\r\n */\r\n RedirectHandler.prototype.initiateAuthRequest = function (requestUrl, params) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var navigationOptions, navigate;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest called\");\r\n if (!!StringUtils.isEmpty(requestUrl)) return [3 /*break*/, 7];\r\n // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true\r\n if (params.redirectStartPage) {\r\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page\");\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, params.redirectStartPage, true);\r\n }\r\n // Set interaction status in the library.\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, this.authCodeRequest.correlationId, true);\r\n this.browserStorage.cacheCodeRequest(this.authCodeRequest, this.browserCrypto);\r\n this.browserRequestLogger.infoPii(\"RedirectHandler.initiateAuthRequest: Navigate to: \" + requestUrl);\r\n navigationOptions = {\r\n apiId: ApiId.acquireTokenRedirect,\r\n timeout: params.redirectTimeout,\r\n noHistory: false\r\n };\r\n if (!(typeof params.onRedirectNavigate === \"function\")) return [3 /*break*/, 4];\r\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback\");\r\n navigate = params.onRedirectNavigate(requestUrl);\r\n if (!(navigate !== false)) return [3 /*break*/, 2];\r\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating\");\r\n return [4 /*yield*/, params.navigationClient.navigateExternal(requestUrl, navigationOptions)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n case 2:\r\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation\");\r\n return [2 /*return*/];\r\n case 3: return [3 /*break*/, 6];\r\n case 4:\r\n // Navigate window to request URL\r\n this.browserRequestLogger.verbose(\"RedirectHandler.initiateAuthRequest: Navigating window to navigate url\");\r\n return [4 /*yield*/, params.navigationClient.navigateExternal(requestUrl, navigationOptions)];\r\n case 5:\r\n _a.sent();\r\n return [2 /*return*/];\r\n case 6: return [3 /*break*/, 8];\r\n case 7:\r\n // Throw error if request URL is empty.\r\n this.browserRequestLogger.info(\"RedirectHandler.initiateAuthRequest: Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Handle authorization code response in the window.\r\n * @param hash\r\n */\r\n RedirectHandler.prototype.handleCodeResponseFromHash = function (locationHash, state, authority, networkModule) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var stateKey, requestState, authCodeResponse, nonceKey, cachedNonce, cachedCcsCred, tokenResponse;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.browserRequestLogger.verbose(\"RedirectHandler.handleCodeResponse called\");\r\n // Check that location hash isn't empty.\r\n if (StringUtils.isEmpty(locationHash)) {\r\n throw BrowserAuthError.createEmptyHashError(locationHash);\r\n }\r\n // Interaction is completed - remove interaction status.\r\n this.browserStorage.setInteractionInProgress(false);\r\n stateKey = this.browserStorage.generateStateKey(state);\r\n requestState = this.browserStorage.getTemporaryCache(stateKey);\r\n if (!requestState) {\r\n throw ClientAuthError.createStateNotFoundError(\"Cached State\");\r\n }\r\n try {\r\n authCodeResponse = this.authModule.handleFragmentResponse(locationHash, requestState);\r\n }\r\n catch (e) {\r\n if (e instanceof ServerError && e.subError === BrowserAuthErrorMessage.userCancelledError.code) {\r\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\r\n throw BrowserAuthError.createUserCancelledError();\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n nonceKey = this.browserStorage.generateNonceKey(requestState);\r\n cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\r\n // Assign code to request\r\n this.authCodeRequest.code = authCodeResponse.code;\r\n if (!authCodeResponse.cloud_instance_host_name) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.updateTokenEndpointAuthority(authCodeResponse.cloud_instance_host_name, authority, networkModule)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2:\r\n authCodeResponse.nonce = cachedNonce || undefined;\r\n authCodeResponse.state = requestState;\r\n // Add CCS parameters if available\r\n if (authCodeResponse.client_info) {\r\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\r\n }\r\n else {\r\n cachedCcsCred = this.checkCcsCredentials();\r\n if (cachedCcsCred) {\r\n this.authCodeRequest.ccsCredential = cachedCcsCred;\r\n }\r\n }\r\n return [4 /*yield*/, this.authModule.acquireToken(this.authCodeRequest, authCodeResponse)];\r\n case 3:\r\n tokenResponse = _a.sent();\r\n this.browserStorage.cleanRequestByState(state);\r\n return [2 /*return*/, tokenResponse];\r\n }\r\n });\r\n });\r\n };\r\n return RedirectHandler;\r\n}(InteractionHandler));\n\nexport { RedirectHandler };\n//# sourceMappingURL=RedirectHandler.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { UrlString, AuthError, Constants, ThrottlingUtils, ProtocolUtils } from '@azure/msal-common';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { TemporaryCacheKeys, ApiId, InteractionType } from '../utils/BrowserConstants.js';\nimport { RedirectHandler } from '../interaction_handler/RedirectHandler.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\nimport { EventType } from '../event/EventType.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { NativeInteractionClient } from './NativeInteractionClient.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar RedirectClient = /** @class */ (function (_super) {\r\n __extends(RedirectClient, _super);\r\n function RedirectClient() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Redirects the page to the /authorize endpoint of the IDP\r\n * @param request\r\n */\r\n RedirectClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var validRequest, serverTelemetryManager, handleBackButton, authCodeRequest, authClient, interactionHandler, navigateUrl, redirectStartPage, e_1;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.initializeAuthorizationRequest(request, InteractionType.Redirect)];\r\n case 1:\r\n validRequest = _a.sent();\r\n this.browserStorage.updateCacheEntries(validRequest.state, validRequest.nonce, validRequest.authority, validRequest.loginHint || Constants.EMPTY_STRING, validRequest.account || null);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenRedirect);\r\n handleBackButton = function (event) {\r\n // Clear temporary cache if the back button is clicked during the redirect flow.\r\n if (event.persisted) {\r\n _this.logger.verbose(\"Page was restored from back/forward cache. Clearing temporary cache.\");\r\n _this.browserStorage.cleanRequestByState(validRequest.state);\r\n }\r\n };\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 7, , 8]);\r\n return [4 /*yield*/, this.initializeAuthorizationCodeRequest(validRequest)];\r\n case 3:\r\n authCodeRequest = _a.sent();\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, validRequest.authority, validRequest.azureCloudOptions)];\r\n case 4:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n interactionHandler = new RedirectHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.browserCrypto);\r\n return [4 /*yield*/, authClient.getAuthCodeUrl(__assign(__assign({}, validRequest), { nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, request.authenticationScheme) }))];\r\n case 5:\r\n navigateUrl = _a.sent();\r\n redirectStartPage = this.getRedirectStartPage(request.redirectStartPage);\r\n this.logger.verbosePii(\"Redirect start page: \" + redirectStartPage);\r\n // Clear temporary cache if the back button is clicked during the redirect flow.\r\n window.addEventListener(\"pageshow\", handleBackButton);\r\n return [4 /*yield*/, interactionHandler.initiateAuthRequest(navigateUrl, {\r\n navigationClient: this.navigationClient,\r\n redirectTimeout: this.config.system.redirectNavigationTimeout,\r\n redirectStartPage: redirectStartPage,\r\n onRedirectNavigate: request.onRedirectNavigate\r\n })];\r\n case 6: \r\n // Show the UI once the url has been created. Response will come back in the hash, which will be handled in the handleRedirectCallback function.\r\n return [2 /*return*/, _a.sent()];\r\n case 7:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof AuthError) {\r\n e_1.setCorrelationId(this.correlationId);\r\n }\r\n window.removeEventListener(\"pageshow\", handleBackButton);\r\n serverTelemetryManager.cacheFailedRequest(e_1);\r\n this.browserStorage.cleanRequestByState(validRequest.state);\r\n throw e_1;\r\n case 8: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Checks if navigateToLoginRequestUrl is set, and:\r\n * - if true, performs logic to cache and navigate\r\n * - if false, handles hash string and parses response\r\n * @param hash\r\n */\r\n RedirectClient.prototype.handleRedirectPromise = function (hash) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var serverTelemetryManager, responseHash, state, serverParams, loginRequestUrl, loginRequestUrlNormalized, currentUrlNormalized, handleHashResult, navigationOptions, processHashOnRedirect, homepage, e_2;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.handleRedirectPromise);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 10, , 11]);\r\n if (!this.browserStorage.isInteractionInProgress(true)) {\r\n this.logger.info(\"handleRedirectPromise called but there is no interaction in progress, returning null.\");\r\n return [2 /*return*/, null];\r\n }\r\n responseHash = this.getRedirectResponseHash(hash || window.location.hash);\r\n if (!responseHash) {\r\n // Not a recognized server response hash or hash not associated with a redirect request\r\n this.logger.info(\"handleRedirectPromise did not detect a response hash as a result of a redirect. Cleaning temporary cache.\");\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n return [2 /*return*/, null];\r\n }\r\n state = void 0;\r\n try {\r\n serverParams = UrlString.getDeserializedHash(responseHash);\r\n state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Redirect);\r\n this.logger.verbose(\"State extracted from hash\");\r\n }\r\n catch (e) {\r\n this.logger.info(\"handleRedirectPromise was unable to extract state due to: \" + e);\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n return [2 /*return*/, null];\r\n }\r\n loginRequestUrl = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, true) || Constants.EMPTY_STRING;\r\n loginRequestUrlNormalized = UrlString.removeHashFromUrl(loginRequestUrl);\r\n currentUrlNormalized = UrlString.removeHashFromUrl(window.location.href);\r\n if (!(loginRequestUrlNormalized === currentUrlNormalized && this.config.auth.navigateToLoginRequestUrl)) return [3 /*break*/, 3];\r\n // We are on the page we need to navigate to - handle hash\r\n this.logger.verbose(\"Current page is loginRequestUrl, handling hash\");\r\n return [4 /*yield*/, this.handleHash(responseHash, state, serverTelemetryManager)];\r\n case 2:\r\n handleHashResult = _a.sent();\r\n if (loginRequestUrl.indexOf(\"#\") > -1) {\r\n // Replace current hash with non-msal hash, if present\r\n BrowserUtils.replaceHash(loginRequestUrl);\r\n }\r\n return [2 /*return*/, handleHashResult];\r\n case 3:\r\n if (!!this.config.auth.navigateToLoginRequestUrl) return [3 /*break*/, 4];\r\n this.logger.verbose(\"NavigateToLoginRequestUrl set to false, handling hash\");\r\n return [2 /*return*/, this.handleHash(responseHash, state, serverTelemetryManager)];\r\n case 4:\r\n if (!(!BrowserUtils.isInIframe() || this.config.system.allowRedirectInIframe)) return [3 /*break*/, 9];\r\n /*\r\n * Returned from authority using redirect - need to perform navigation before processing response\r\n * Cache the hash to be retrieved after the next redirect\r\n */\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.URL_HASH, responseHash, true);\r\n navigationOptions = {\r\n apiId: ApiId.handleRedirectPromise,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: true\r\n };\r\n processHashOnRedirect = true;\r\n if (!(!loginRequestUrl || loginRequestUrl === \"null\")) return [3 /*break*/, 6];\r\n homepage = BrowserUtils.getHomepage();\r\n // Cache the homepage under ORIGIN_URI to ensure cached hash is processed on homepage\r\n this.browserStorage.setTemporaryCache(TemporaryCacheKeys.ORIGIN_URI, homepage, true);\r\n this.logger.warning(\"Unable to get valid login request url from cache, redirecting to home page\");\r\n return [4 /*yield*/, this.navigationClient.navigateInternal(homepage, navigationOptions)];\r\n case 5:\r\n processHashOnRedirect = _a.sent();\r\n return [3 /*break*/, 8];\r\n case 6:\r\n // Navigate to page that initiated the redirect request\r\n this.logger.verbose(\"Navigating to loginRequestUrl: \" + loginRequestUrl);\r\n return [4 /*yield*/, this.navigationClient.navigateInternal(loginRequestUrl, navigationOptions)];\r\n case 7:\r\n processHashOnRedirect = _a.sent();\r\n _a.label = 8;\r\n case 8:\r\n // If navigateInternal implementation returns false, handle the hash now\r\n if (!processHashOnRedirect) {\r\n return [2 /*return*/, this.handleHash(responseHash, state, serverTelemetryManager)];\r\n }\r\n _a.label = 9;\r\n case 9: return [2 /*return*/, null];\r\n case 10:\r\n e_2 = _a.sent();\r\n if (e_2 instanceof AuthError) {\r\n e_2.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_2);\r\n this.browserStorage.cleanRequestByInteractionType(InteractionType.Redirect);\r\n throw e_2;\r\n case 11: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Gets the response hash for a redirect request\r\n * Returns null if interactionType in the state value is not \"redirect\" or the hash does not contain known properties\r\n * @param hash\r\n */\r\n RedirectClient.prototype.getRedirectResponseHash = function (hash) {\r\n this.logger.verbose(\"getRedirectResponseHash called\");\r\n // Get current location hash from window or cache.\r\n var isResponseHash = UrlString.hashContainsKnownProperties(hash);\r\n if (isResponseHash) {\r\n BrowserUtils.clearHash(window);\r\n this.logger.verbose(\"Hash contains known properties, returning response hash\");\r\n return hash;\r\n }\r\n var cachedHash = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.URL_HASH, true);\r\n this.browserStorage.removeItem(this.browserStorage.generateCacheKey(TemporaryCacheKeys.URL_HASH));\r\n this.logger.verbose(\"Hash does not contain known properties, returning cached hash\");\r\n return cachedHash;\r\n };\r\n /**\r\n * Checks if hash exists and handles in window.\r\n * @param hash\r\n * @param state\r\n */\r\n RedirectClient.prototype.handleHash = function (hash, state, serverTelemetryManager) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cachedRequest, serverParams, nativeInteractionClient, userRequestState, currentAuthority, authClient, interactionHandler;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n cachedRequest = this.browserStorage.getCachedRequest(state, this.browserCrypto);\r\n this.logger.verbose(\"handleHash called, retrieved cached request\");\r\n serverParams = UrlString.getDeserializedHash(hash);\r\n if (serverParams.accountId) {\r\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\r\n if (!this.nativeMessageHandler) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenPopup, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, cachedRequest.correlationId);\r\n userRequestState = ProtocolUtils.parseRequestState(this.browserCrypto, state).userRequestState;\r\n return [2 /*return*/, nativeInteractionClient.acquireToken(__assign(__assign({}, cachedRequest), { state: userRequestState, prompt: undefined // Server should handle the prompt, ideally native broker can do this part silently\r\n })).finally(function () {\r\n _this.browserStorage.cleanRequestByState(state);\r\n })];\r\n }\r\n currentAuthority = this.browserStorage.getCachedAuthority(state);\r\n if (!currentAuthority) {\r\n throw BrowserAuthError.createNoCachedAuthorityError();\r\n }\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, currentAuthority)];\r\n case 1:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n ThrottlingUtils.removeThrottle(this.browserStorage, this.config.auth.clientId, cachedRequest);\r\n interactionHandler = new RedirectHandler(authClient, this.browserStorage, cachedRequest, this.logger, this.browserCrypto);\r\n return [4 /*yield*/, interactionHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient)];\r\n case 2: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param logoutRequest\r\n */\r\n RedirectClient.prototype.logout = function (logoutRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var validLogoutRequest, serverTelemetryManager, navigationOptions, authClient, logoutUri, navigate, e_3;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"logoutRedirect called\");\r\n validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.logout);\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 10, , 11]);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_START, InteractionType.Redirect, logoutRequest);\r\n // Clear cache on logout\r\n return [4 /*yield*/, this.clearCacheOnLogout(validLogoutRequest.account)];\r\n case 2:\r\n // Clear cache on logout\r\n _a.sent();\r\n navigationOptions = {\r\n apiId: ApiId.logout,\r\n timeout: this.config.system.redirectNavigationTimeout,\r\n noHistory: false\r\n };\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, logoutRequest && logoutRequest.authority)];\r\n case 3:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n logoutUri = authClient.getLogoutUri(validLogoutRequest);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_SUCCESS, InteractionType.Redirect, validLogoutRequest);\r\n if (!(logoutRequest && typeof logoutRequest.onRedirectNavigate === \"function\")) return [3 /*break*/, 7];\r\n navigate = logoutRequest.onRedirectNavigate(logoutUri);\r\n if (!(navigate !== false)) return [3 /*break*/, 5];\r\n this.logger.verbose(\"Logout onRedirectNavigate did not return false, navigating\");\r\n // Ensure interaction is in progress\r\n if (!this.browserStorage.getInteractionInProgress()) {\r\n this.browserStorage.setInteractionInProgress(true);\r\n }\r\n return [4 /*yield*/, this.navigationClient.navigateExternal(logoutUri, navigationOptions)];\r\n case 4:\r\n _a.sent();\r\n return [2 /*return*/];\r\n case 5:\r\n // Ensure interaction is not in progress\r\n this.browserStorage.setInteractionInProgress(false);\r\n this.logger.verbose(\"Logout onRedirectNavigate returned false, stopping navigation\");\r\n _a.label = 6;\r\n case 6: return [3 /*break*/, 9];\r\n case 7:\r\n // Ensure interaction is in progress\r\n if (!this.browserStorage.getInteractionInProgress()) {\r\n this.browserStorage.setInteractionInProgress(true);\r\n }\r\n return [4 /*yield*/, this.navigationClient.navigateExternal(logoutUri, navigationOptions)];\r\n case 8:\r\n _a.sent();\r\n return [2 /*return*/];\r\n case 9: return [3 /*break*/, 11];\r\n case 10:\r\n e_3 = _a.sent();\r\n if (e_3 instanceof AuthError) {\r\n e_3.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_3);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_FAILURE, InteractionType.Redirect, null, e_3);\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\r\n throw e_3;\r\n case 11:\r\n this.eventHandler.emitEvent(EventType.LOGOUT_END, InteractionType.Redirect);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Use to get the redirectStartPage either from request or use current window\r\n * @param requestStartPage\r\n */\r\n RedirectClient.prototype.getRedirectStartPage = function (requestStartPage) {\r\n var redirectStartPage = requestStartPage || window.location.href;\r\n return UrlString.getAbsoluteUrl(redirectStartPage, BrowserUtils.getCurrentUri());\r\n };\r\n return RedirectClient;\r\n}(StandardInteractionClient));\n\nexport { RedirectClient };\n//# sourceMappingURL=RedirectClient.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { StringUtils, Constants, UrlString } from '@azure/msal-common';\nimport { InteractionHandler } from './InteractionHandler.js';\nimport { BrowserConstants } from '../utils/BrowserConstants.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { DEFAULT_IFRAME_TIMEOUT_MS } from '../config/Configuration.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentHandler = /** @class */ (function (_super) {\r\n __extends(SilentHandler, _super);\r\n function SilentHandler(authCodeModule, storageImpl, authCodeRequest, browserRequestLogger, navigateFrameWait) {\r\n var _this = _super.call(this, authCodeModule, storageImpl, authCodeRequest, browserRequestLogger) || this;\r\n _this.navigateFrameWait = navigateFrameWait;\r\n return _this;\r\n }\r\n /**\r\n * Creates a hidden iframe to given URL using user-requested scopes as an id.\r\n * @param urlNavigate\r\n * @param userRequestScopes\r\n */\r\n SilentHandler.prototype.initiateAuthRequest = function (requestUrl) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (StringUtils.isEmpty(requestUrl)) {\r\n // Throw error if request URL is empty.\r\n this.browserRequestLogger.info(\"Navigate url is empty\");\r\n throw BrowserAuthError.createEmptyNavigationUriError();\r\n }\r\n if (!this.navigateFrameWait) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.loadFrame(requestUrl)];\r\n case 1:\r\n _a = _b.sent();\r\n return [3 /*break*/, 3];\r\n case 2:\r\n _a = this.loadFrameSync(requestUrl);\r\n _b.label = 3;\r\n case 3: return [2 /*return*/, _a];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout.\r\n * @param iframe\r\n * @param timeout\r\n */\r\n SilentHandler.prototype.monitorIframeForHash = function (iframe, timeout) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {\r\n _this.browserRequestLogger.warning(\"system.loadFrameTimeout or system.iframeHashTimeout set to lower (\" + timeout + \"ms) than the default (\" + DEFAULT_IFRAME_TIMEOUT_MS + \"ms). This may result in timeouts.\");\r\n }\r\n /*\r\n * Polling for iframes can be purely timing based,\r\n * since we don't need to account for interaction.\r\n */\r\n var nowMark = window.performance.now();\r\n var timeoutMark = nowMark + timeout;\r\n var intervalId = setInterval(function () {\r\n if (window.performance.now() > timeoutMark) {\r\n _this.removeHiddenIframe(iframe);\r\n clearInterval(intervalId);\r\n reject(BrowserAuthError.createMonitorIframeTimeoutError());\r\n return;\r\n }\r\n var href = Constants.EMPTY_STRING;\r\n var contentWindow = iframe.contentWindow;\r\n try {\r\n /*\r\n * Will throw if cross origin,\r\n * which should be caught and ignored\r\n * since we need the interval to keep running while on STS UI.\r\n */\r\n href = contentWindow ? contentWindow.location.href : Constants.EMPTY_STRING;\r\n }\r\n catch (e) { }\r\n if (StringUtils.isEmpty(href)) {\r\n return;\r\n }\r\n var contentHash = contentWindow ? contentWindow.location.hash : Constants.EMPTY_STRING;\r\n if (UrlString.hashContainsKnownProperties(contentHash)) {\r\n // Success case\r\n _this.removeHiddenIframe(iframe);\r\n clearInterval(intervalId);\r\n resolve(contentHash);\r\n return;\r\n }\r\n }, BrowserConstants.POLL_INTERVAL_MS);\r\n });\r\n };\r\n /**\r\n * @hidden\r\n * Loads iframe with authorization endpoint URL\r\n * @ignore\r\n */\r\n SilentHandler.prototype.loadFrame = function (urlNavigate) {\r\n /*\r\n * This trick overcomes iframe navigation in IE\r\n * IE does not load the page consistently in iframe\r\n */\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n var frameHandle = _this.createHiddenIframe();\r\n setTimeout(function () {\r\n if (!frameHandle) {\r\n reject(\"Unable to load iframe\");\r\n return;\r\n }\r\n frameHandle.src = urlNavigate;\r\n resolve(frameHandle);\r\n }, _this.navigateFrameWait);\r\n });\r\n };\r\n /**\r\n * @hidden\r\n * Loads the iframe synchronously when the navigateTimeFrame is set to `0`\r\n * @param urlNavigate\r\n * @param frameName\r\n * @param logger\r\n */\r\n SilentHandler.prototype.loadFrameSync = function (urlNavigate) {\r\n var frameHandle = this.createHiddenIframe();\r\n frameHandle.src = urlNavigate;\r\n return frameHandle;\r\n };\r\n /**\r\n * @hidden\r\n * Creates a new hidden iframe or gets an existing one for silent token renewal.\r\n * @ignore\r\n */\r\n SilentHandler.prototype.createHiddenIframe = function () {\r\n var authFrame = document.createElement(\"iframe\");\r\n authFrame.style.visibility = \"hidden\";\r\n authFrame.style.position = \"absolute\";\r\n authFrame.style.width = authFrame.style.height = \"0\";\r\n authFrame.style.border = \"0\";\r\n authFrame.setAttribute(\"sandbox\", \"allow-scripts allow-same-origin allow-forms\");\r\n document.getElementsByTagName(\"body\")[0].appendChild(authFrame);\r\n return authFrame;\r\n };\r\n /**\r\n * @hidden\r\n * Removes a hidden iframe from the page.\r\n * @ignore\r\n */\r\n SilentHandler.prototype.removeHiddenIframe = function (iframe) {\r\n if (document.body === iframe.parentNode) {\r\n document.body.removeChild(iframe);\r\n }\r\n };\r\n return SilentHandler;\r\n}(InteractionHandler));\n\nexport { SilentHandler };\n//# sourceMappingURL=SilentHandler.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { AuthError, Constants, PerformanceEvents, StringUtils, PromptValue, UrlString, ProtocolUtils } from '@azure/msal-common';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { InteractionType } from '../utils/BrowserConstants.js';\nimport { SilentHandler } from '../interaction_handler/SilentHandler.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\nimport { NativeInteractionClient } from './NativeInteractionClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentIframeClient = /** @class */ (function (_super) {\r\n __extends(SilentIframeClient, _super);\r\n function SilentIframeClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, nativeMessageHandler, correlationId) {\r\n var _this = _super.call(this, config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) || this;\r\n _this.apiId = apiId;\r\n return _this;\r\n }\r\n /**\r\n * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none\r\n * @param request\r\n */\r\n SilentIframeClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var acquireTokenMeasurement, silentRequest, serverTelemetryManager, authClient, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.verbose(\"acquireTokenByIframe called\");\r\n acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentIframeClientAcquireToken, request.correlationId);\r\n // Check that we have some SSO data\r\n if (StringUtils.isEmpty(request.loginHint) && StringUtils.isEmpty(request.sid) && (!request.account || StringUtils.isEmpty(request.account.username))) {\r\n this.logger.warning(\"No user hint provided. The authorization server may need more information to complete this request.\");\r\n }\r\n // Check that prompt is set to none, throw error if it is set to anything else.\r\n if (request.prompt && request.prompt !== PromptValue.NONE) {\r\n acquireTokenMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw BrowserAuthError.createSilentPromptValueError(request.prompt);\r\n }\r\n return [4 /*yield*/, this.initializeAuthorizationRequest(__assign(__assign({}, request), { prompt: PromptValue.NONE }), InteractionType.Silent)];\r\n case 1:\r\n silentRequest = _a.sent();\r\n this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 5, , 6]);\r\n return [4 /*yield*/, this.createAuthCodeClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions)];\r\n case 3:\r\n authClient = _a.sent();\r\n this.logger.verbose(\"Auth code client created\");\r\n return [4 /*yield*/, this.silentTokenHelper(authClient, silentRequest).then(function (result) {\r\n acquireTokenMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: false\r\n });\r\n return result;\r\n })];\r\n case 4: return [2 /*return*/, _a.sent()];\r\n case 5:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof AuthError) {\r\n e_1.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_1);\r\n this.browserStorage.cleanRequestByState(silentRequest.state);\r\n acquireTokenMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw e_1;\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Currently Unsupported\r\n */\r\n SilentIframeClient.prototype.logout = function () {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n };\r\n /**\r\n * Helper which acquires an authorization code silently using a hidden iframe from given url\r\n * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens.\r\n * @param navigateUrl\r\n * @param userRequestScopes\r\n */\r\n SilentIframeClient.prototype.silentTokenHelper = function (authClient, silentRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var authCodeRequest, navigateUrl, silentHandler, msalFrame, hash, serverParams, state, nativeInteractionClient, userRequestState;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.initializeAuthorizationCodeRequest(silentRequest)];\r\n case 1:\r\n authCodeRequest = _a.sent();\r\n return [4 /*yield*/, authClient.getAuthCodeUrl(__assign(__assign({}, silentRequest), { nativeBroker: NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeMessageHandler, silentRequest.authenticationScheme) }))];\r\n case 2:\r\n navigateUrl = _a.sent();\r\n silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system.navigateFrameWait);\r\n return [4 /*yield*/, silentHandler.initiateAuthRequest(navigateUrl)];\r\n case 3:\r\n msalFrame = _a.sent();\r\n return [4 /*yield*/, silentHandler.monitorIframeForHash(msalFrame, this.config.system.iframeHashTimeout)];\r\n case 4:\r\n hash = _a.sent();\r\n serverParams = UrlString.getDeserializedHash(hash);\r\n state = this.validateAndExtractStateFromHash(serverParams, InteractionType.Silent, authCodeRequest.correlationId);\r\n if (serverParams.accountId) {\r\n this.logger.verbose(\"Account id found in hash, calling WAM for token\");\r\n if (!this.nativeMessageHandler) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n nativeInteractionClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.apiId, this.performanceClient, this.nativeMessageHandler, serverParams.accountId, this.correlationId);\r\n userRequestState = ProtocolUtils.parseRequestState(this.browserCrypto, state).userRequestState;\r\n return [2 /*return*/, nativeInteractionClient.acquireToken(__assign(__assign({}, silentRequest), { state: userRequestState, prompt: PromptValue.NONE })).finally(function () {\r\n _this.browserStorage.cleanRequestByState(state);\r\n })];\r\n }\r\n // Handle response from hash string\r\n return [2 /*return*/, silentHandler.handleCodeResponseFromHash(hash, state, authClient.authority, this.networkClient)];\r\n }\r\n });\r\n });\r\n };\r\n return SilentIframeClient;\r\n}(StandardInteractionClient));\n\nexport { SilentIframeClient };\n//# sourceMappingURL=SilentIframeClient.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { BaseClient } from './BaseClient.js';\nimport { RequestParameterBuilder } from '../request/RequestParameterBuilder.js';\nimport { AuthenticationScheme, GrantType, Errors } from '../utils/Constants.js';\nimport { ResponseHandler } from '../response/ResponseHandler.js';\nimport { PopTokenGenerator } from '../crypto/PopTokenGenerator.js';\nimport { StringUtils } from '../utils/StringUtils.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { ClientAuthError } from '../error/ClientAuthError.js';\nimport { ServerError } from '../error/ServerError.js';\nimport { TimeUtils } from '../utils/TimeUtils.js';\nimport { UrlString } from '../url/UrlString.js';\nimport { CcsCredentialType } from '../account/CcsCredential.js';\nimport { buildClientInfoFromHomeAccountId } from '../account/ClientInfo.js';\nimport { InteractionRequiredAuthError, InteractionRequiredAuthErrorMessage } from '../error/InteractionRequiredAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * OAuth2.0 refresh token client\r\n */\r\nvar RefreshTokenClient = /** @class */ (function (_super) {\r\n __extends(RefreshTokenClient, _super);\r\n function RefreshTokenClient(configuration) {\r\n return _super.call(this, configuration) || this;\r\n }\r\n RefreshTokenClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var reqTimestamp, response, responseHandler;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n reqTimestamp = TimeUtils.nowSeconds();\r\n return [4 /*yield*/, this.executeTokenRequest(request, this.authority)];\r\n case 1:\r\n response = _a.sent();\r\n responseHandler = new ResponseHandler(this.config.authOptions.clientId, this.cacheManager, this.cryptoUtils, this.logger, this.config.serializableCache, this.config.persistencePlugin);\r\n responseHandler.validateTokenResponse(response.body);\r\n return [2 /*return*/, responseHandler.handleServerTokenResponse(response.body, this.authority, reqTimestamp, request, undefined, undefined, true)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Gets cached refresh token and attaches to request, then calls acquireToken API\r\n * @param request\r\n */\r\n RefreshTokenClient.prototype.acquireTokenByRefreshToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var isFOCI, noFamilyRTInCache, clientMismatchErrorWithFamilyRT;\r\n return __generator(this, function (_a) {\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw ClientConfigurationError.createEmptyTokenRequestError();\r\n }\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw ClientAuthError.createNoAccountInSilentRequestError();\r\n }\r\n isFOCI = this.cacheManager.isAppMetadataFOCI(request.account.environment, this.config.authOptions.clientId);\r\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\r\n if (isFOCI) {\r\n try {\r\n return [2 /*return*/, this.acquireTokenWithCachedRefreshToken(request, true)];\r\n }\r\n catch (e) {\r\n noFamilyRTInCache = e instanceof InteractionRequiredAuthError && e.errorCode === InteractionRequiredAuthErrorMessage.noTokensFoundError.code;\r\n clientMismatchErrorWithFamilyRT = e instanceof ServerError && e.errorCode === Errors.INVALID_GRANT_ERROR && e.subError === Errors.CLIENT_MISMATCH_ERROR;\r\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\r\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\r\n return [2 /*return*/, this.acquireTokenWithCachedRefreshToken(request, false)];\r\n // throw in all other cases\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n // fall back to application refresh token acquisition\r\n return [2 /*return*/, this.acquireTokenWithCachedRefreshToken(request, false)];\r\n });\r\n });\r\n };\r\n /**\r\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\r\n * @param request\r\n */\r\n RefreshTokenClient.prototype.acquireTokenWithCachedRefreshToken = function (request, foci) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var refreshToken, refreshTokenRequest;\r\n return __generator(this, function (_a) {\r\n refreshToken = this.cacheManager.readRefreshTokenFromCache(this.config.authOptions.clientId, request.account, foci);\r\n // no refresh Token\r\n if (!refreshToken) {\r\n throw InteractionRequiredAuthError.createNoTokensFoundError();\r\n }\r\n refreshTokenRequest = __assign(__assign({}, request), { refreshToken: refreshToken.secret, authenticationScheme: request.authenticationScheme || AuthenticationScheme.BEARER, ccsCredential: {\r\n credential: request.account.homeAccountId,\r\n type: CcsCredentialType.HOME_ACCOUNT_ID\r\n } });\r\n return [2 /*return*/, this.acquireToken(refreshTokenRequest)];\r\n });\r\n });\r\n };\r\n /**\r\n * Constructs the network message and makes a NW call to the underlying secure token service\r\n * @param request\r\n * @param authority\r\n */\r\n RefreshTokenClient.prototype.executeTokenRequest = function (request, authority) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requestBody, queryParameters, headers, thumbprint, endpoint;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.createTokenRequestBody(request)];\r\n case 1:\r\n requestBody = _a.sent();\r\n queryParameters = this.createTokenQueryParameters(request);\r\n headers = this.createTokenRequestHeaders(request.ccsCredential);\r\n thumbprint = {\r\n clientId: this.config.authOptions.clientId,\r\n authority: authority.canonicalAuthority,\r\n scopes: request.scopes,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n endpoint = UrlString.appendQueryString(authority.tokenEndpoint, queryParameters);\r\n return [2 /*return*/, this.executePostToTokenEndpoint(endpoint, requestBody, headers, thumbprint)];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Creates query string for the /token request\r\n * @param request\r\n */\r\n RefreshTokenClient.prototype.createTokenQueryParameters = function (request) {\r\n var parameterBuilder = new RequestParameterBuilder();\r\n if (request.tokenQueryParameters) {\r\n parameterBuilder.addExtraQueryParameters(request.tokenQueryParameters);\r\n }\r\n return parameterBuilder.createQueryString();\r\n };\r\n /**\r\n * Helper function to create the token request body\r\n * @param request\r\n */\r\n RefreshTokenClient.prototype.createTokenRequestBody = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var parameterBuilder, correlationId, clientAssertion, popTokenGenerator, cnfString, clientInfo;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n parameterBuilder = new RequestParameterBuilder();\r\n parameterBuilder.addClientId(this.config.authOptions.clientId);\r\n parameterBuilder.addScopes(request.scopes);\r\n parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT);\r\n parameterBuilder.addClientInfo();\r\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\r\n parameterBuilder.addApplicationTelemetry(this.config.telemetry.application);\r\n parameterBuilder.addThrottling();\r\n if (this.serverTelemetryManager) {\r\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\r\n }\r\n correlationId = request.correlationId || this.config.cryptoInterface.createNewGuid();\r\n parameterBuilder.addCorrelationId(correlationId);\r\n parameterBuilder.addRefreshToken(request.refreshToken);\r\n if (this.config.clientCredentials.clientSecret) {\r\n parameterBuilder.addClientSecret(this.config.clientCredentials.clientSecret);\r\n }\r\n if (this.config.clientCredentials.clientAssertion) {\r\n clientAssertion = this.config.clientCredentials.clientAssertion;\r\n parameterBuilder.addClientAssertion(clientAssertion.assertion);\r\n parameterBuilder.addClientAssertionType(clientAssertion.assertionType);\r\n }\r\n if (!(request.authenticationScheme === AuthenticationScheme.POP)) return [3 /*break*/, 2];\r\n popTokenGenerator = new PopTokenGenerator(this.cryptoUtils);\r\n return [4 /*yield*/, popTokenGenerator.generateCnf(request)];\r\n case 1:\r\n cnfString = _a.sent();\r\n parameterBuilder.addPopToken(cnfString);\r\n return [3 /*break*/, 3];\r\n case 2:\r\n if (request.authenticationScheme === AuthenticationScheme.SSH) {\r\n if (request.sshJwk) {\r\n parameterBuilder.addSshJwk(request.sshJwk);\r\n }\r\n else {\r\n throw ClientConfigurationError.createMissingSshJwkError();\r\n }\r\n }\r\n _a.label = 3;\r\n case 3:\r\n if (!StringUtils.isEmptyObj(request.claims) || this.config.authOptions.clientCapabilities && this.config.authOptions.clientCapabilities.length > 0) {\r\n parameterBuilder.addClaims(request.claims, this.config.authOptions.clientCapabilities);\r\n }\r\n if (this.config.systemOptions.preventCorsPreflight && request.ccsCredential) {\r\n switch (request.ccsCredential.type) {\r\n case CcsCredentialType.HOME_ACCOUNT_ID:\r\n try {\r\n clientInfo = buildClientInfoFromHomeAccountId(request.ccsCredential.credential);\r\n parameterBuilder.addCcsOid(clientInfo);\r\n }\r\n catch (e) {\r\n this.logger.verbose(\"Could not parse home account ID for CCS Header: \" + e);\r\n }\r\n break;\r\n case CcsCredentialType.UPN:\r\n parameterBuilder.addCcsUpn(request.ccsCredential.credential);\r\n break;\r\n }\r\n }\r\n return [2 /*return*/, parameterBuilder.createQueryString()];\r\n }\r\n });\r\n });\r\n };\r\n return RefreshTokenClient;\r\n}(BaseClient));\n\nexport { RefreshTokenClient };\n//# sourceMappingURL=RefreshTokenClient.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { AuthError, PerformanceEvents, RefreshTokenClient } from '@azure/msal-common';\nimport { ApiId } from '../utils/BrowserConstants.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentRefreshClient = /** @class */ (function (_super) {\r\n __extends(SilentRefreshClient, _super);\r\n function SilentRefreshClient() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Exchanges the refresh token for new tokens\r\n * @param request\r\n */\r\n SilentRefreshClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var silentRequest, _a, acquireTokenMeasurement, serverTelemetryManager, refreshTokenClient;\r\n var _this = this;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _a = [__assign({}, request)];\r\n return [4 /*yield*/, this.initializeBaseRequest(request)];\r\n case 1:\r\n silentRequest = __assign.apply(void 0, _a.concat([_b.sent()]));\r\n acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentRefreshClientAcquireToken, silentRequest.correlationId);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\r\n return [4 /*yield*/, this.createRefreshTokenClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions)];\r\n case 2:\r\n refreshTokenClient = _b.sent();\r\n this.logger.verbose(\"Refresh token client created\");\r\n // Send request to renew token. Auth module will throw errors if token cannot be renewed.\r\n return [2 /*return*/, refreshTokenClient.acquireTokenByRefreshToken(silentRequest)\r\n .then(function (result) {\r\n acquireTokenMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: result.fromCache\r\n });\r\n return result;\r\n })\r\n .catch(function (e) {\r\n if (e instanceof AuthError) {\r\n e.setCorrelationId(_this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e);\r\n acquireTokenMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw e;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Currently Unsupported\r\n */\r\n SilentRefreshClient.prototype.logout = function () {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n };\r\n /**\r\n * Creates a Refresh Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n SilentRefreshClient.prototype.createRefreshTokenClient = function (serverTelemetryManager, authorityUrl, azureCloudOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var clientConfig;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions)];\r\n case 1:\r\n clientConfig = _a.sent();\r\n return [2 /*return*/, new RefreshTokenClient(clientConfig)];\r\n }\r\n });\r\n });\r\n };\r\n return SilentRefreshClient;\r\n}(StandardInteractionClient));\n\nexport { SilentRefreshClient };\n//# sourceMappingURL=SilentRefreshClient.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { Authority, IdTokenEntity, AuthToken, AccountEntity, ScopeSet, AccessTokenEntity } from '@azure/msal-common';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * Token cache manager\r\n */\r\nvar TokenCache = /** @class */ (function () {\r\n function TokenCache(configuration, storage, logger, cryptoObj) {\r\n this.isBrowserEnvironment = typeof window !== \"undefined\";\r\n this.config = configuration;\r\n this.storage = storage;\r\n this.logger = logger;\r\n this.cryptoObj = cryptoObj;\r\n }\r\n // Move getAllAccounts here and cache utility APIs\r\n /**\r\n * API to load tokens to msal-browser cache.\r\n * @param request\r\n * @param response\r\n * @param options\r\n */\r\n TokenCache.prototype.loadExternalTokens = function (request, response, options) {\r\n this.logger.info(\"TokenCache - loadExternalTokens called\");\r\n if (!response.id_token) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes id token.\");\r\n }\r\n if (request.account) {\r\n this.loadIdToken(response.id_token, request.account.homeAccountId, request.account.environment, request.account.tenantId, options);\r\n this.loadAccessToken(request, response, request.account.homeAccountId, request.account.environment, request.account.tenantId, options);\r\n }\r\n else if (request.authority) {\r\n var authorityUrl = Authority.generateAuthority(request.authority, request.azureCloudOptions);\r\n var authorityOptions = {\r\n protocolMode: this.config.auth.protocolMode,\r\n knownAuthorities: this.config.auth.knownAuthorities,\r\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\r\n authorityMetadata: this.config.auth.authorityMetadata,\r\n };\r\n var authority = new Authority(authorityUrl, this.config.system.networkClient, this.storage, authorityOptions);\r\n // \"clientInfo\" from options takes precedence over \"clientInfo\" in response\r\n if (options.clientInfo) {\r\n this.logger.trace(\"TokenCache - homeAccountId from options\");\r\n this.loadIdToken(response.id_token, options.clientInfo, authority.hostnameAndPort, authority.tenant, options);\r\n this.loadAccessToken(request, response, options.clientInfo, authority.hostnameAndPort, authority.tenant, options);\r\n }\r\n else if (response.client_info) {\r\n this.logger.trace(\"TokenCache - homeAccountId from response\");\r\n this.loadIdToken(response.id_token, response.client_info, authority.hostnameAndPort, authority.tenant, options);\r\n this.loadAccessToken(request, response, response.client_info, authority.hostnameAndPort, authority.tenant, options);\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide clientInfo in the response or options.\");\r\n }\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide a request with an account or a request with authority.\");\r\n }\r\n };\r\n /**\r\n * Helper function to load id tokens to msal-browser cache\r\n * @param idToken\r\n * @param homeAccountId\r\n * @param environment\r\n * @param tenantId\r\n * @param options\r\n */\r\n TokenCache.prototype.loadIdToken = function (idToken, homeAccountId, environment, tenantId, options) {\r\n var idTokenEntity = IdTokenEntity.createIdTokenEntity(homeAccountId, environment, idToken, this.config.auth.clientId, tenantId);\r\n var idAuthToken = new AuthToken(idToken, this.cryptoObj);\r\n var accountEntity = options.clientInfo ?\r\n AccountEntity.createAccount(options.clientInfo, homeAccountId, idAuthToken, undefined, undefined, undefined, undefined, environment) :\r\n AccountEntity.createGenericAccount(homeAccountId, idAuthToken, undefined, undefined, undefined, undefined, environment);\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading id token\");\r\n this.storage.setAccount(accountEntity);\r\n this.storage.setIdTokenCredential(idTokenEntity);\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n };\r\n /**\r\n * Helper function to load access tokens to msal-browser cache\r\n * @param request\r\n * @param response\r\n * @param options\r\n * @param homeAccountId\r\n * @param environment\r\n * @param tenantId\r\n * @returns\r\n */\r\n TokenCache.prototype.loadAccessToken = function (request, response, homeAccountId, environment, tenantId, options) {\r\n if (!response.access_token) {\r\n this.logger.verbose(\"TokenCache - No access token provided for caching\");\r\n return;\r\n }\r\n if (!response.expires_in) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please ensure server response includes expires_in value.\");\r\n }\r\n if (!options.extendedExpiresOn) {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"Please provide an extendedExpiresOn value in the options.\");\r\n }\r\n var scopes = new ScopeSet(request.scopes).printScopes();\r\n var expiresOn = response.expires_in;\r\n var extendedExpiresOn = options.extendedExpiresOn;\r\n var accessTokenEntity = AccessTokenEntity.createAccessTokenEntity(homeAccountId, environment, response.access_token, this.config.auth.clientId, tenantId, scopes, expiresOn, extendedExpiresOn, this.cryptoObj);\r\n if (this.isBrowserEnvironment) {\r\n this.logger.verbose(\"TokenCache - loading access token\");\r\n this.storage.setAccessTokenCredential(accessTokenEntity);\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToLoadTokenError(\"loadExternalTokens is designed to work in browser environments only.\");\r\n }\r\n };\r\n return TokenCache;\r\n}());\n\nexport { TokenCache };\n//# sourceMappingURL=TokenCache.js.map\n","/*! @azure/msal-common v6.3.0 2022-05-02 */\n'use strict';\nimport { __extends, __awaiter, __generator } from '../_virtual/_tslib.js';\nimport { BaseClient } from './BaseClient.js';\nimport { AuthToken } from '../account/AuthToken.js';\nimport { TimeUtils } from '../utils/TimeUtils.js';\nimport { RefreshTokenClient } from './RefreshTokenClient.js';\nimport { ClientAuthError, ClientAuthErrorMessage } from '../error/ClientAuthError.js';\nimport { ClientConfigurationError } from '../error/ClientConfigurationError.js';\nimport { ResponseHandler } from '../response/ResponseHandler.js';\nimport { CacheOutcome } from '../utils/Constants.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentFlowClient = /** @class */ (function (_super) {\r\n __extends(SilentFlowClient, _super);\r\n function SilentFlowClient(configuration) {\r\n return _super.call(this, configuration) || this;\r\n }\r\n /**\r\n * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew\r\n * the given token and returns the renewed token\r\n * @param request\r\n */\r\n SilentFlowClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1, refreshTokenClient;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.acquireCachedToken(request)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof ClientAuthError && e_1.errorCode === ClientAuthErrorMessage.tokenRefreshRequired.code) {\r\n refreshTokenClient = new RefreshTokenClient(this.config);\r\n return [2 /*return*/, refreshTokenClient.acquireTokenByRefreshToken(request)];\r\n }\r\n else {\r\n throw e_1;\r\n }\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Retrieves token from cache or throws an error if it must be refreshed.\r\n * @param request\r\n */\r\n SilentFlowClient.prototype.acquireCachedToken = function (request) {\r\n var _a, _b, _c, _d;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var environment, cacheRecord;\r\n return __generator(this, function (_e) {\r\n switch (_e.label) {\r\n case 0:\r\n // Cannot renew token if no request object is given.\r\n if (!request) {\r\n throw ClientConfigurationError.createEmptyTokenRequestError();\r\n }\r\n if (request.forceRefresh) {\r\n // Must refresh due to present force_refresh flag.\r\n (_a = this.serverTelemetryManager) === null || _a === void 0 ? void 0 : _a.setCacheOutcome(CacheOutcome.FORCE_REFRESH);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Skipping cache because forceRefresh is true.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\r\n if (!request.account) {\r\n throw ClientAuthError.createNoAccountInSilentRequestError();\r\n }\r\n environment = request.authority || this.authority.getPreferredCache();\r\n cacheRecord = this.cacheManager.readCacheRecord(request.account, this.config.authOptions.clientId, request, environment);\r\n if (!cacheRecord.accessToken) {\r\n // Must refresh due to non-existent access_token.\r\n (_b = this.serverTelemetryManager) === null || _b === void 0 ? void 0 : _b.setCacheOutcome(CacheOutcome.NO_CACHED_ACCESS_TOKEN);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - No access token found in cache for the given properties.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n else if (TimeUtils.wasClockTurnedBack(cacheRecord.accessToken.cachedAt) ||\r\n TimeUtils.isTokenExpired(cacheRecord.accessToken.expiresOn, this.config.systemOptions.tokenRenewalOffsetSeconds)) {\r\n // Must refresh due to expired access_token.\r\n (_c = this.serverTelemetryManager) === null || _c === void 0 ? void 0 : _c.setCacheOutcome(CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Cached access token is expired or will expire within \" + this.config.systemOptions.tokenRenewalOffsetSeconds + \" seconds.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n else if (cacheRecord.accessToken.refreshOn && TimeUtils.isTokenExpired(cacheRecord.accessToken.refreshOn, 0)) {\r\n // Must refresh due to the refresh_in value.\r\n (_d = this.serverTelemetryManager) === null || _d === void 0 ? void 0 : _d.setCacheOutcome(CacheOutcome.REFRESH_CACHED_ACCESS_TOKEN);\r\n this.logger.info(\"SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'.\");\r\n throw ClientAuthError.createRefreshRequiredError();\r\n }\r\n if (this.config.serverTelemetryManager) {\r\n this.config.serverTelemetryManager.incrementCacheHits();\r\n }\r\n return [4 /*yield*/, this.generateResultFromCacheRecord(cacheRecord, request)];\r\n case 1: return [2 /*return*/, _e.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Helper function to build response object from the CacheRecord\r\n * @param cacheRecord\r\n */\r\n SilentFlowClient.prototype.generateResultFromCacheRecord = function (cacheRecord, request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var idTokenObj;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (cacheRecord.idToken) {\r\n idTokenObj = new AuthToken(cacheRecord.idToken.secret, this.config.cryptoInterface);\r\n }\r\n return [4 /*yield*/, ResponseHandler.generateAuthenticationResult(this.cryptoUtils, this.authority, cacheRecord, true, request, idTokenObj)];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n return SilentFlowClient;\r\n}(BaseClient));\n\nexport { SilentFlowClient };\n//# sourceMappingURL=SilentFlowClient.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { PerformanceEvents, SilentFlowClient } from '@azure/msal-common';\nimport { ApiId } from '../utils/BrowserConstants.js';\nimport { BrowserAuthError, BrowserAuthErrorMessage } from '../error/BrowserAuthError.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentCacheClient = /** @class */ (function (_super) {\r\n __extends(SilentCacheClient, _super);\r\n function SilentCacheClient() {\r\n return _super !== null && _super.apply(this, arguments) || this;\r\n }\r\n /**\r\n * Returns unexpired tokens from the cache, if available\r\n * @param silentRequest\r\n */\r\n SilentCacheClient.prototype.acquireToken = function (silentRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var acquireTokenMeasurement, serverTelemetryManager, silentAuthClient, cachedToken, error_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n acquireTokenMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SilentCacheClientAcquireToken, silentRequest.correlationId);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(ApiId.acquireTokenSilent_silentFlow);\r\n return [4 /*yield*/, this.createSilentFlowClient(serverTelemetryManager, silentRequest.authority, silentRequest.azureCloudOptions)];\r\n case 1:\r\n silentAuthClient = _a.sent();\r\n this.logger.verbose(\"Silent auth client created\");\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, silentAuthClient.acquireCachedToken(silentRequest)];\r\n case 3:\r\n cachedToken = _a.sent();\r\n acquireTokenMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: true\r\n });\r\n return [2 /*return*/, cachedToken];\r\n case 4:\r\n error_1 = _a.sent();\r\n if (error_1 instanceof BrowserAuthError && error_1.errorCode === BrowserAuthErrorMessage.signingKeyNotFoundInStorage.code) {\r\n this.logger.verbose(\"Signing keypair for bound access token not found. Refreshing bound access token and generating a new crypto keypair.\");\r\n }\r\n acquireTokenMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw error_1;\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Currently Unsupported\r\n */\r\n SilentCacheClient.prototype.logout = function () {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n };\r\n /**\r\n * Creates an Silent Flow Client with the given authority, or the default authority.\r\n * @param serverTelemetryManager\r\n * @param authorityUrl\r\n */\r\n SilentCacheClient.prototype.createSilentFlowClient = function (serverTelemetryManager, authorityUrl, azureCloudOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var clientConfig;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.getClientConfiguration(serverTelemetryManager, authorityUrl, azureCloudOptions)];\r\n case 1:\r\n clientConfig = _a.sent();\r\n return [2 /*return*/, new SilentFlowClient(clientConfig)];\r\n }\r\n });\r\n });\r\n };\r\n SilentCacheClient.prototype.initializeSilentRequest = function (request, account) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n _a = [__assign({}, request)];\r\n return [4 /*yield*/, this.initializeBaseRequest(request)];\r\n case 1: return [2 /*return*/, __assign.apply(void 0, [__assign.apply(void 0, _a.concat([_b.sent()])), { account: account, forceRefresh: request.forceRefresh || false }])];\r\n }\r\n });\r\n });\r\n };\r\n return SilentCacheClient;\r\n}(StandardInteractionClient));\n\nexport { SilentCacheClient };\n//# sourceMappingURL=SilentCacheClient.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __extends } from '../_virtual/_tslib.js';\nimport { AuthorizationCodeClient } from '@azure/msal-common';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar HybridSpaAuthorizationCodeClient = /** @class */ (function (_super) {\r\n __extends(HybridSpaAuthorizationCodeClient, _super);\r\n function HybridSpaAuthorizationCodeClient(config) {\r\n var _this = _super.call(this, config) || this;\r\n _this.includeRedirectUri = false;\r\n return _this;\r\n }\r\n return HybridSpaAuthorizationCodeClient;\r\n}(AuthorizationCodeClient));\n\nexport { HybridSpaAuthorizationCodeClient };\n//# sourceMappingURL=HybridSpaAuthorizationCodeClient.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { AuthError, Constants } from '@azure/msal-common';\nimport { StandardInteractionClient } from './StandardInteractionClient.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { InteractionType } from '../utils/BrowserConstants.js';\nimport { SilentHandler } from '../interaction_handler/SilentHandler.js';\nimport { HybridSpaAuthorizationCodeClient } from './HybridSpaAuthorizationCodeClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar SilentAuthCodeClient = /** @class */ (function (_super) {\r\n __extends(SilentAuthCodeClient, _super);\r\n function SilentAuthCodeClient(config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, apiId, performanceClient, nativeMessageHandler, correlationId) {\r\n var _this = _super.call(this, config, storageImpl, browserCrypto, logger, eventHandler, navigationClient, performanceClient, nativeMessageHandler, correlationId) || this;\r\n _this.apiId = apiId;\r\n return _this;\r\n }\r\n /**\r\n * Acquires a token silently by redeeming an authorization code against the /token endpoint\r\n * @param request\r\n */\r\n SilentAuthCodeClient.prototype.acquireToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var silentRequest, serverTelemetryManager, authCodeRequest, clientConfig, authClient, silentHandler, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"SilentAuthCodeClient.acquireToken called\");\r\n // Auth code payload is required\r\n if (!request.code) {\r\n throw BrowserAuthError.createAuthCodeRequiredError();\r\n }\r\n return [4 /*yield*/, this.initializeAuthorizationRequest(request, InteractionType.Silent)];\r\n case 1:\r\n silentRequest = _a.sent();\r\n this.browserStorage.updateCacheEntries(silentRequest.state, silentRequest.nonce, silentRequest.authority, silentRequest.loginHint || Constants.EMPTY_STRING, silentRequest.account || null);\r\n serverTelemetryManager = this.initializeServerTelemetryManager(this.apiId);\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n authCodeRequest = __assign(__assign({}, silentRequest), { code: request.code });\r\n return [4 /*yield*/, this.getClientConfiguration(serverTelemetryManager, silentRequest.authority)];\r\n case 3:\r\n clientConfig = _a.sent();\r\n authClient = new HybridSpaAuthorizationCodeClient(clientConfig);\r\n this.logger.verbose(\"Auth code client created\");\r\n silentHandler = new SilentHandler(authClient, this.browserStorage, authCodeRequest, this.logger, this.config.system.navigateFrameWait);\r\n // Handle auth code parameters from request\r\n return [2 /*return*/, silentHandler.handleCodeResponseFromServer({\r\n code: request.code,\r\n msgraph_host: request.msGraphHost,\r\n cloud_graph_host_name: request.cloudGraphHostName,\r\n cloud_instance_host_name: request.cloudInstanceHostName\r\n }, silentRequest.state, authClient.authority, this.networkClient, false)];\r\n case 4:\r\n e_1 = _a.sent();\r\n if (e_1 instanceof AuthError) {\r\n e_1.setCorrelationId(this.correlationId);\r\n }\r\n serverTelemetryManager.cacheFailedRequest(e_1);\r\n this.browserStorage.cleanRequestByState(silentRequest.state);\r\n throw e_1;\r\n case 5: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Currently Unsupported\r\n */\r\n SilentAuthCodeClient.prototype.logout = function () {\r\n // Synchronous so we must reject\r\n return Promise.reject(BrowserAuthError.createSilentLogoutUnsupportedError());\r\n };\r\n return SilentAuthCodeClient;\r\n}(StandardInteractionClient));\n\nexport { SilentAuthCodeClient };\n//# sourceMappingURL=SilentAuthCodeClient.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BrowserPerformanceMeasurement = /** @class */ (function () {\r\n function BrowserPerformanceMeasurement(name, correlationId) {\r\n this.correlationId = correlationId;\r\n this.measureName = \"msal.measure.\" + name + \".\" + this.correlationId;\r\n this.startMark = \"msal.start.\" + name + \".\" + this.correlationId;\r\n this.endMark = \"msal.end.\" + name + \".\" + this.correlationId;\r\n }\r\n BrowserPerformanceMeasurement.supportsBrowserPerformance = function () {\r\n return typeof window !== \"undefined\" &&\r\n typeof window.performance !== \"undefined\" &&\r\n typeof window.performance.mark === \"function\" &&\r\n typeof window.performance.measure === \"function\" &&\r\n typeof window.performance.clearMarks === \"function\" &&\r\n typeof window.performance.clearMeasures === \"function\" &&\r\n typeof window.performance.getEntriesByName === \"function\";\r\n };\r\n BrowserPerformanceMeasurement.prototype.startMeasurement = function () {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n window.performance.mark(this.startMark);\r\n }\r\n catch (e) {\r\n // Silently catch\r\n }\r\n }\r\n };\r\n BrowserPerformanceMeasurement.prototype.endMeasurement = function () {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n window.performance.mark(this.endMark);\r\n window.performance.measure(this.measureName, this.startMark, this.endMark);\r\n }\r\n catch (e) {\r\n // Silently catch\r\n }\r\n }\r\n };\r\n BrowserPerformanceMeasurement.prototype.flushMeasurement = function () {\r\n if (BrowserPerformanceMeasurement.supportsBrowserPerformance()) {\r\n try {\r\n var entriesForMeasurement = window.performance.getEntriesByName(this.measureName, \"measure\");\r\n if (entriesForMeasurement.length > 0) {\r\n var durationMs = entriesForMeasurement[0].duration;\r\n window.performance.clearMeasures(this.measureName);\r\n window.performance.clearMarks(this.startMark);\r\n window.performance.clearMarks(this.endMark);\r\n return durationMs;\r\n }\r\n }\r\n catch (e) {\r\n // Silently catch and return null\r\n }\r\n }\r\n return null;\r\n };\r\n return BrowserPerformanceMeasurement;\r\n}());\n\nexport { BrowserPerformanceMeasurement };\n//# sourceMappingURL=BrowserPerformanceMeasurement.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __extends, __assign } from '../_virtual/_tslib.js';\nimport { PerformanceClient } from '@azure/msal-common';\nimport { BrowserCrypto } from '../crypto/BrowserCrypto.js';\nimport { GuidGenerator } from '../crypto/GuidGenerator.js';\nimport { BrowserPerformanceMeasurement } from './BrowserPerformanceMeasurement.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar BrowserPerformanceClient = /** @class */ (function (_super) {\r\n __extends(BrowserPerformanceClient, _super);\r\n function BrowserPerformanceClient(clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry) {\r\n var _this = _super.call(this, clientId, authority, logger, libraryName, libraryVersion, applicationTelemetry) || this;\r\n _this.browserCrypto = new BrowserCrypto(_this.logger);\r\n _this.guidGenerator = new GuidGenerator(_this.browserCrypto);\r\n return _this;\r\n }\r\n BrowserPerformanceClient.prototype.startPerformanceMeasuremeant = function (measureName, correlationId) {\r\n return new BrowserPerformanceMeasurement(measureName, correlationId);\r\n };\r\n BrowserPerformanceClient.prototype.generateId = function () {\r\n return this.guidGenerator.generateGuid();\r\n };\r\n BrowserPerformanceClient.prototype.getPageVisibility = function () {\r\n var _a;\r\n return ((_a = document.visibilityState) === null || _a === void 0 ? void 0 : _a.toString()) || null;\r\n };\r\n /**\r\n * Starts measuring performance for a given operation. Returns a function that should be used to end the measurement.\r\n * Also captures browser page visibilityState.\r\n *\r\n * @param {PerformanceEvents} measureName\r\n * @param {?string} [correlationId]\r\n * @returns {((event?: Partial<PerformanceEvent>) => PerformanceEvent| null)}\r\n */\r\n BrowserPerformanceClient.prototype.startMeasurement = function (measureName, correlationId) {\r\n var _this = this;\r\n // Capture page visibilityState and then invoke start/end measurement\r\n var startPageVisibility = this.getPageVisibility();\r\n var inProgressEvent = _super.prototype.startMeasurement.call(this, measureName, correlationId);\r\n return __assign(__assign({}, inProgressEvent), { endMeasurement: function (event) {\r\n return inProgressEvent.endMeasurement(__assign({ startPageVisibility: startPageVisibility, endPageVisibility: _this.getPageVisibility() }, event));\r\n } });\r\n };\r\n return BrowserPerformanceClient;\r\n}(PerformanceClient));\n\nexport { BrowserPerformanceClient };\n//# sourceMappingURL=BrowserPerformanceClient.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { CryptoOps } from '../crypto/CryptoOps.js';\nimport { Constants, PerformanceEvents, PromptValue, StringUtils, Logger, StubPerformanceClient, DEFAULT_CRYPTO_IMPLEMENTATION, ServerError, InteractionRequiredAuthError } from '@azure/msal-common';\nimport { BrowserCacheManager, DEFAULT_BROWSER_CACHE_MANAGER } from '../cache/BrowserCacheManager.js';\nimport { buildConfiguration } from '../config/Configuration.js';\nimport { InteractionType, ApiId, TemporaryCacheKeys, BrowserCacheLocation, BrowserConstants } from '../utils/BrowserConstants.js';\nimport { BrowserUtils } from '../utils/BrowserUtils.js';\nimport { name, version } from '../packageMetadata.js';\nimport { EventType } from '../event/EventType.js';\nimport { BrowserConfigurationAuthError } from '../error/BrowserConfigurationAuthError.js';\nimport { EventHandler } from '../event/EventHandler.js';\nimport { PopupClient } from '../interaction_client/PopupClient.js';\nimport { RedirectClient } from '../interaction_client/RedirectClient.js';\nimport { SilentIframeClient } from '../interaction_client/SilentIframeClient.js';\nimport { SilentRefreshClient } from '../interaction_client/SilentRefreshClient.js';\nimport { TokenCache } from '../cache/TokenCache.js';\nimport { NativeInteractionClient } from '../interaction_client/NativeInteractionClient.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\nimport { NativeAuthError } from '../error/NativeAuthError.js';\nimport { SilentCacheClient } from '../interaction_client/SilentCacheClient.js';\nimport { SilentAuthCodeClient } from '../interaction_client/SilentAuthCodeClient.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { BrowserPerformanceClient } from '../telemetry/BrowserPerformanceClient.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\nvar ClientApplication = /** @class */ (function () {\r\n /**\r\n * @constructor\r\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\r\n *\r\n * Important attributes in the Configuration object for auth are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\r\n * - authority: the authority URL for your application.\r\n * - redirect_uri: the uri of your application registered in the portal.\r\n *\r\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\r\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\r\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param configuration Object for the MSAL PublicClientApplication instance\r\n */\r\n function ClientApplication(configuration) {\r\n /*\r\n * If loaded in an environment where window is not available,\r\n * set internal flag to false so that further requests fail.\r\n * This is to support server-side rendering environments.\r\n */\r\n this.isBrowserEnvironment = typeof window !== \"undefined\";\r\n // Set the configuration.\r\n this.config = buildConfiguration(configuration, this.isBrowserEnvironment);\r\n this.initialized = false;\r\n // Initialize logger\r\n this.logger = new Logger(this.config.system.loggerOptions, name, version);\r\n // Initialize the network module class.\r\n this.networkClient = this.config.system.networkClient;\r\n // Initialize the navigation client class.\r\n this.navigationClient = this.config.system.navigationClient;\r\n // Initialize redirectResponse Map\r\n this.redirectResponse = new Map();\r\n // Initial hybrid spa map\r\n this.hybridAuthCodeResponses = new Map();\r\n // Initialize performance client\r\n this.performanceClient = this.isBrowserEnvironment ?\r\n new BrowserPerformanceClient(this.config.auth.clientId, this.config.auth.authority, this.logger, name, version, this.config.telemetry.application) :\r\n new StubPerformanceClient(this.config.auth.clientId, this.config.auth.authority, this.logger, name, version, this.config.telemetry.application);\r\n // Initialize the crypto class.\r\n this.browserCrypto = this.isBrowserEnvironment ? new CryptoOps(this.logger, this.performanceClient) : DEFAULT_CRYPTO_IMPLEMENTATION;\r\n this.eventHandler = new EventHandler(this.logger, this.browserCrypto);\r\n // Initialize the browser storage class.\r\n this.browserStorage = this.isBrowserEnvironment ?\r\n new BrowserCacheManager(this.config.auth.clientId, this.config.cache, this.browserCrypto, this.logger) :\r\n DEFAULT_BROWSER_CACHE_MANAGER(this.config.auth.clientId, this.logger);\r\n // Initialize the token cache\r\n this.tokenCache = new TokenCache(this.config, this.browserStorage, this.logger, this.browserCrypto);\r\n }\r\n /**\r\n * Initializer function to perform async startup tasks such as connecting to WAM extension\r\n */\r\n ClientApplication.prototype.initialize = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, e_1;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n this.logger.trace(\"initialize called\");\r\n if (this.initialized) {\r\n this.logger.warning(\"initialize has already been called. This function only needs to be run once.\");\r\n return [2 /*return*/];\r\n }\r\n this.eventHandler.emitEvent(EventType.INITIALIZE_START);\r\n if (!this.config.system.allowNativeBroker) return [3 /*break*/, 4];\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n _a = this;\r\n return [4 /*yield*/, NativeMessageHandler.createProvider(this.logger, this.config.system.nativeBrokerHandshakeTimeout)];\r\n case 2:\r\n _a.nativeExtensionProvider = _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _b.sent();\r\n this.logger.verbose(e_1);\r\n return [3 /*break*/, 4];\r\n case 4:\r\n this.initialized = true;\r\n this.eventHandler.emitEvent(EventType.INITIALIZE_END);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n // #region Redirect Flow\r\n /**\r\n * Event handler function which allows users to fire events after the PublicClientApplication object\r\n * has loaded during redirect flows. This should be invoked on all page loads involved in redirect\r\n * auth flows.\r\n * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value.\r\n * @returns Token response or null. If the return value is null, then no auth redirect was detected.\r\n */\r\n ClientApplication.prototype.handleRedirectPromise = function (hash) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var loggedInAccounts, redirectResponseKey, response, request, redirectResponse, nativeClient, correlationId, redirectClient;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n this.logger.verbose(\"handleRedirectPromise called\");\r\n // Block token acquisition before initialize has been called if native brokering is enabled\r\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized(this.config.system.allowNativeBroker, this.initialized);\r\n loggedInAccounts = this.getAllAccounts();\r\n if (this.isBrowserEnvironment) {\r\n redirectResponseKey = hash || Constants.EMPTY_STRING;\r\n response = this.redirectResponse.get(redirectResponseKey);\r\n if (typeof response === \"undefined\") {\r\n this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_START, InteractionType.Redirect);\r\n this.logger.verbose(\"handleRedirectPromise has been called for the first time, storing the promise\");\r\n request = this.browserStorage.getCachedNativeRequest();\r\n redirectResponse = void 0;\r\n if (request && NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider) && this.nativeExtensionProvider && !hash) {\r\n this.logger.trace(\"handleRedirectPromise - acquiring token from native platform\");\r\n nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.handleRedirectPromise, this.performanceClient, this.nativeExtensionProvider, request.accountId, request.correlationId);\r\n redirectResponse = nativeClient.handleRedirectPromise();\r\n }\r\n else {\r\n this.logger.trace(\"handleRedirectPromise - acquiring token from web flow\");\r\n correlationId = this.browserStorage.getTemporaryCache(TemporaryCacheKeys.CORRELATION_ID, true) || Constants.EMPTY_STRING;\r\n redirectClient = this.createRedirectClient(correlationId);\r\n redirectResponse = redirectClient.handleRedirectPromise(hash);\r\n }\r\n response = redirectResponse.then(function (result) {\r\n if (result) {\r\n // Emit login event if number of accounts change\r\n var isLoggingIn = loggedInAccounts.length < _this.getAllAccounts().length;\r\n if (isLoggingIn) {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Redirect, result);\r\n _this.logger.verbose(\"handleRedirectResponse returned result, login success\");\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Redirect, result);\r\n _this.logger.verbose(\"handleRedirectResponse returned result, acquire token success\");\r\n }\r\n }\r\n _this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\r\n return result;\r\n }).catch(function (e) {\r\n // Emit login event if there is an account\r\n if (loggedInAccounts.length > 0) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n _this.eventHandler.emitEvent(EventType.HANDLE_REDIRECT_END, InteractionType.Redirect);\r\n throw e;\r\n });\r\n this.redirectResponse.set(redirectResponseKey, response);\r\n }\r\n else {\r\n this.logger.verbose(\"handleRedirectPromise has been called previously, returning the result from the first call\");\r\n }\r\n return [2 /*return*/, response];\r\n }\r\n this.logger.verbose(\"handleRedirectPromise returns null, not browser environment\");\r\n return [2 /*return*/, null];\r\n });\r\n });\r\n };\r\n /**\r\n * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects\r\n * the page, so any code that follows this function will not execute.\r\n *\r\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\r\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\r\n *\r\n * @param request\r\n */\r\n ClientApplication.prototype.acquireTokenRedirect = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, isLoggedIn, result, nativeClient, redirectClient;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n this.logger.verbose(\"acquireTokenRedirect called\", correlationId);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\r\n isLoggedIn = this.getAllAccounts().length > 0;\r\n if (isLoggedIn) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Redirect, request);\r\n }\r\n else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Redirect, request);\r\n }\r\n if (this.nativeExtensionProvider && this.canUseNative(request)) {\r\n nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenRedirect, this.performanceClient, this.nativeExtensionProvider, this.getNativeAccountId(request), request.correlationId);\r\n result = nativeClient.acquireTokenRedirect(request).catch(function (e) {\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n _this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n var redirectClient = _this.createRedirectClient(request.correlationId);\r\n return redirectClient.acquireToken(request);\r\n }\r\n throw e;\r\n });\r\n }\r\n else {\r\n redirectClient = this.createRedirectClient(request.correlationId);\r\n result = redirectClient.acquireToken(request);\r\n }\r\n return [2 /*return*/, result.catch(function (e) {\r\n // If logged in, emit acquire token events\r\n if (isLoggedIn) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Redirect, null, e);\r\n }\r\n throw e;\r\n })];\r\n });\r\n });\r\n };\r\n // #endregion\r\n // #region Popup Flow\r\n /**\r\n * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser\r\n *\r\n * @param request\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n ClientApplication.prototype.acquireTokenPopup = function (request) {\r\n var _this = this;\r\n var correlationId = this.getRequestCorrelationId(request);\r\n var atPopupMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenPopup, correlationId);\r\n try {\r\n this.logger.verbose(\"acquireTokenPopup called\", correlationId);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\r\n }\r\n catch (e) {\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n // If logged in, emit acquire token events\r\n var loggedInAccounts = this.getAllAccounts();\r\n if (loggedInAccounts.length > 0) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Popup, request);\r\n }\r\n else {\r\n this.eventHandler.emitEvent(EventType.LOGIN_START, InteractionType.Popup, request);\r\n }\r\n var result;\r\n if (this.canUseNative(request)) {\r\n result = this.acquireTokenNative(request, ApiId.acquireTokenPopup).then(function (response) {\r\n _this.browserStorage.setInteractionInProgress(false);\r\n atPopupMeasurement.endMeasurement({\r\n success: true,\r\n isNativeBroker: true\r\n });\r\n atPopupMeasurement.flushMeasurement();\r\n return response;\r\n }).catch(function (e) {\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n _this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n var popupClient = _this.createPopupClient(request.correlationId);\r\n return popupClient.acquireToken(request);\r\n }\r\n throw e;\r\n });\r\n }\r\n else {\r\n var popupClient = this.createPopupClient(request.correlationId);\r\n result = popupClient.acquireToken(request);\r\n }\r\n return result.then(function (result) {\r\n // If logged in, emit acquire token events\r\n var isLoggingIn = loggedInAccounts.length < _this.getAllAccounts().length;\r\n if (isLoggingIn) {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_SUCCESS, InteractionType.Popup, result);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Popup, result);\r\n }\r\n atPopupMeasurement.endMeasurement({\r\n success: true\r\n });\r\n atPopupMeasurement.flushMeasurement();\r\n return result;\r\n }).catch(function (e) {\r\n if (loggedInAccounts.length > 0) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Popup, null, e);\r\n }\r\n else {\r\n _this.eventHandler.emitEvent(EventType.LOGIN_FAILURE, InteractionType.Popup, null, e);\r\n }\r\n atPopupMeasurement.endMeasurement({\r\n success: false\r\n });\r\n atPopupMeasurement.flushMeasurement();\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n });\r\n };\r\n // #endregion\r\n // #region Silent Flow\r\n /**\r\n * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work:\r\n * - Any browser using a form of Intelligent Tracking Prevention\r\n * - If there is not an established session with the service\r\n *\r\n * In these cases, the request must be done inside a popup or full frame redirect.\r\n *\r\n * For the cases where interaction is required, you cannot send a request with prompt=none.\r\n *\r\n * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as\r\n * you session on the server still exists.\r\n * @param request {@link SsoSilentRequest}\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n ClientApplication.prototype.ssoSilent = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, validRequest, ssoSilentMeasurement, result, silentIframeClient;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n validRequest = __assign(__assign({}, request), { prompt: PromptValue.NONE, correlationId: correlationId });\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n ssoSilentMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.SsoSilent, correlationId);\r\n this.logger.verbose(\"ssoSilent called\", correlationId);\r\n this.eventHandler.emitEvent(EventType.SSO_SILENT_START, InteractionType.Silent, validRequest);\r\n if (this.canUseNative(validRequest)) {\r\n result = this.acquireTokenNative(validRequest, ApiId.ssoSilent).catch(function (e) {\r\n // If native token acquisition fails for availability reasons fallback to standard flow\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n _this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n var silentIframeClient = _this.createSilentIframeClient(validRequest.correlationId);\r\n return silentIframeClient.acquireToken(validRequest);\r\n }\r\n throw e;\r\n });\r\n }\r\n else {\r\n silentIframeClient = this.createSilentIframeClient(validRequest.correlationId);\r\n result = silentIframeClient.acquireToken(validRequest);\r\n }\r\n return [2 /*return*/, result.then(function (response) {\r\n _this.eventHandler.emitEvent(EventType.SSO_SILENT_SUCCESS, InteractionType.Silent, response);\r\n ssoSilentMeasurement.endMeasurement({\r\n success: true\r\n });\r\n ssoSilentMeasurement.flushMeasurement();\r\n return response;\r\n }).catch(function (e) {\r\n _this.eventHandler.emitEvent(EventType.SSO_SILENT_FAILURE, InteractionType.Silent, null, e);\r\n ssoSilentMeasurement.endMeasurement({\r\n success: false\r\n });\r\n ssoSilentMeasurement.flushMeasurement();\r\n throw e;\r\n })];\r\n });\r\n });\r\n };\r\n /**\r\n * This function redeems an authorization code (passed as code) from the eSTS token endpoint.\r\n * This authorization code should be acquired server-side using a confidential client to acquire a spa_code.\r\n * This API is not indended for normal authorization code acquisition and redemption.\r\n *\r\n * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client.\r\n *\r\n * @param request {@link AuthorizationCodeRequest}\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n ClientApplication.prototype.acquireTokenByCode = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, atbcMeasurement, hybridAuthCode_1, response;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.logger.trace(\"acquireTokenByCode called\", correlationId);\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_START, InteractionType.Silent, request);\r\n atbcMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByCode, request.correlationId);\r\n try {\r\n if (request.code) {\r\n hybridAuthCode_1 = request.code;\r\n response = this.hybridAuthCodeResponses.get(hybridAuthCode_1);\r\n if (!response) {\r\n this.logger.verbose(\"Initiating new acquireTokenByCode request\", correlationId);\r\n response = this.acquireTokenByCodeAsync(__assign(__assign({}, request), { correlationId: correlationId }))\r\n .then(function (result) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_SUCCESS, InteractionType.Silent, result);\r\n _this.hybridAuthCodeResponses.delete(hybridAuthCode_1);\r\n atbcMeasurement.endMeasurement({\r\n success: true\r\n });\r\n atbcMeasurement.flushMeasurement();\r\n return result;\r\n })\r\n .catch(function (error) {\r\n _this.hybridAuthCodeResponses.delete(hybridAuthCode_1);\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, error);\r\n atbcMeasurement.endMeasurement({\r\n success: false\r\n });\r\n atbcMeasurement.flushMeasurement();\r\n throw error;\r\n });\r\n this.hybridAuthCodeResponses.set(hybridAuthCode_1, response);\r\n }\r\n else {\r\n this.logger.verbose(\"Existing acquireTokenByCode request found\", request.correlationId);\r\n atbcMeasurement.endMeasurement({\r\n success: true\r\n });\r\n atbcMeasurement.discardMeasurement();\r\n }\r\n return [2 /*return*/, response];\r\n }\r\n else if (request.nativeAccountId) {\r\n if (this.canUseNative(request, request.nativeAccountId)) {\r\n return [2 /*return*/, this.acquireTokenNative(request, ApiId.acquireTokenByCode, request.nativeAccountId).catch(function (e) {\r\n // If native token acquisition fails for availability reasons fallback to standard flow\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n _this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\r\n }\r\n throw e;\r\n })];\r\n }\r\n else {\r\n throw BrowserAuthError.createUnableToAcquireTokenFromNativePlatformError();\r\n }\r\n }\r\n else {\r\n throw BrowserAuthError.createAuthCodeOrNativeAccountIdRequiredError();\r\n }\r\n }\r\n catch (e) {\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE, InteractionType.Silent, null, e);\r\n atbcMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw e;\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n /**\r\n * Creates a SilentAuthCodeClient to redeem an authorization code.\r\n * @param request\r\n * @returns Result of the operation to redeem the authorization code\r\n */\r\n ClientApplication.prototype.acquireTokenByCodeAsync = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var silentAuthCodeClient, silentTokenResult;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.trace(\"acquireTokenByCodeAsync called\", request.correlationId);\r\n silentAuthCodeClient = this.createSilentAuthCodeClient(request.correlationId);\r\n return [4 /*yield*/, silentAuthCodeClient.acquireToken(request)];\r\n case 1:\r\n silentTokenResult = _a.sent();\r\n return [2 /*return*/, silentTokenResult];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Use this function to obtain a token before every call to the API / resource provider\r\n *\r\n * MSAL return's a cached token when available\r\n * Or it send's a request to the STS to obtain a new token using a refresh token.\r\n *\r\n * @param {@link SilentRequest}\r\n *\r\n * To renew idToken, please pass clientId as the only scope in the Authentication Parameters\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n ClientApplication.prototype.acquireTokenByRefreshToken = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var atbrtMeasurement, silentRefreshClient;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n // block the reload if it occurred inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n atbrtMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenByRefreshToken, request.correlationId);\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_NETWORK_START, InteractionType.Silent, request);\r\n silentRefreshClient = this.createSilentRefreshClient(request.correlationId);\r\n return [2 /*return*/, silentRefreshClient.acquireToken(request)\r\n .then(function (result) {\r\n atbrtMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: result.fromCache\r\n });\r\n return result;\r\n })\r\n .catch(function (e) {\r\n var isServerError = e instanceof ServerError;\r\n var isInteractionRequiredError = e instanceof InteractionRequiredAuthError;\r\n var isInvalidGrantError = (e.errorCode === BrowserConstants.INVALID_GRANT_ERROR);\r\n if (isServerError && isInvalidGrantError && !isInteractionRequiredError) {\r\n _this.logger.verbose(\"Refresh token expired or invalid, attempting acquire token by iframe\", request.correlationId);\r\n var silentIframeClient = _this.createSilentIframeClient(request.correlationId);\r\n return silentIframeClient.acquireToken(request)\r\n .then(function (result) {\r\n atbrtMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: result.fromCache\r\n });\r\n return result;\r\n })\r\n .catch(function (error) {\r\n atbrtMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw error;\r\n });\r\n }\r\n atbrtMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw e;\r\n })];\r\n });\r\n });\r\n };\r\n // #endregion\r\n // #region Logout\r\n /**\r\n * Deprecated logout function. Use logoutRedirect or logoutPopup instead\r\n * @param logoutRequest\r\n * @deprecated\r\n */\r\n ClientApplication.prototype.logout = function (logoutRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(logoutRequest);\r\n this.logger.warning(\"logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.\", correlationId);\r\n return [2 /*return*/, this.logoutRedirect(__assign({ correlationId: correlationId }, logoutRequest))];\r\n });\r\n });\r\n };\r\n /**\r\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\r\n * Default behaviour is to redirect the user to `window.location.href`.\r\n * @param logoutRequest\r\n */\r\n ClientApplication.prototype.logoutRedirect = function (logoutRequest) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, redirectClient;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(logoutRequest);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Redirect);\r\n redirectClient = this.createRedirectClient(correlationId);\r\n return [2 /*return*/, redirectClient.logout(logoutRequest)];\r\n });\r\n });\r\n };\r\n /**\r\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\r\n * @param logoutRequest\r\n */\r\n ClientApplication.prototype.logoutPopup = function (logoutRequest) {\r\n try {\r\n var correlationId = this.getRequestCorrelationId(logoutRequest);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Popup);\r\n var popupClient = this.createPopupClient(correlationId);\r\n return popupClient.logout(logoutRequest);\r\n }\r\n catch (e) {\r\n // Since this function is syncronous we need to reject\r\n return Promise.reject(e);\r\n }\r\n };\r\n // #endregion\r\n // #region Account APIs\r\n /**\r\n * Returns all accounts that MSAL currently has data for.\r\n * (the account object is created at the time of successful login)\r\n * or empty array when no accounts are found\r\n * @returns Array of account objects in cache\r\n */\r\n ClientApplication.prototype.getAllAccounts = function () {\r\n this.logger.verbose(\"getAllAccounts called\");\r\n return this.isBrowserEnvironment ? this.browserStorage.getAllAccounts() : [];\r\n };\r\n /**\r\n * Returns the signed in account matching username.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found.\r\n * This API is provided for convenience but getAccountById should be used for best reliability\r\n * @param userName\r\n * @returns The account object stored in MSAL\r\n */\r\n ClientApplication.prototype.getAccountByUsername = function (userName) {\r\n var allAccounts = this.getAllAccounts();\r\n if (!StringUtils.isEmpty(userName) && allAccounts && allAccounts.length) {\r\n this.logger.verbose(\"Account matching username found, returning\");\r\n this.logger.verbosePii(\"Returning signed-in accounts matching username: \" + userName);\r\n return allAccounts.filter(function (accountObj) { return accountObj.username.toLowerCase() === userName.toLowerCase(); })[0] || null;\r\n }\r\n else {\r\n this.logger.verbose(\"getAccountByUsername: No matching account found, returning null\");\r\n return null;\r\n }\r\n };\r\n /**\r\n * Returns the signed in account matching homeAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param homeAccountId\r\n * @returns The account object stored in MSAL\r\n */\r\n ClientApplication.prototype.getAccountByHomeId = function (homeAccountId) {\r\n var allAccounts = this.getAllAccounts();\r\n if (!StringUtils.isEmpty(homeAccountId) && allAccounts && allAccounts.length) {\r\n this.logger.verbose(\"Account matching homeAccountId found, returning\");\r\n this.logger.verbosePii(\"Returning signed-in accounts matching homeAccountId: \" + homeAccountId);\r\n return allAccounts.filter(function (accountObj) { return accountObj.homeAccountId === homeAccountId; })[0] || null;\r\n }\r\n else {\r\n this.logger.verbose(\"getAccountByHomeId: No matching account found, returning null\");\r\n return null;\r\n }\r\n };\r\n /**\r\n * Returns the signed in account matching localAccountId.\r\n * (the account object is created at the time of successful login)\r\n * or null when no matching account is found\r\n * @param localAccountId\r\n * @returns The account object stored in MSAL\r\n */\r\n ClientApplication.prototype.getAccountByLocalId = function (localAccountId) {\r\n var allAccounts = this.getAllAccounts();\r\n if (!StringUtils.isEmpty(localAccountId) && allAccounts && allAccounts.length) {\r\n this.logger.verbose(\"Account matching localAccountId found, returning\");\r\n this.logger.verbosePii(\"Returning signed-in accounts matching localAccountId: \" + localAccountId);\r\n return allAccounts.filter(function (accountObj) { return accountObj.localAccountId === localAccountId; })[0] || null;\r\n }\r\n else {\r\n this.logger.verbose(\"getAccountByLocalId: No matching account found, returning null\");\r\n return null;\r\n }\r\n };\r\n /**\r\n * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account.\r\n * @param account\r\n */\r\n ClientApplication.prototype.setActiveAccount = function (account) {\r\n this.browserStorage.setActiveAccount(account);\r\n };\r\n /**\r\n * Gets the currently active account\r\n */\r\n ClientApplication.prototype.getActiveAccount = function () {\r\n return this.browserStorage.getActiveAccount();\r\n };\r\n // #endregion\r\n // #region Helpers\r\n /**\r\n * Helper to validate app environment before making an auth request\r\n * * @param interactionType\r\n */\r\n ClientApplication.prototype.preflightBrowserEnvironmentCheck = function (interactionType) {\r\n this.logger.verbose(\"preflightBrowserEnvironmentCheck started\");\r\n // Block request if not in browser environment\r\n BrowserUtils.blockNonBrowserEnvironment(this.isBrowserEnvironment);\r\n // Block redirects if in an iframe\r\n BrowserUtils.blockRedirectInIframe(interactionType, this.config.system.allowRedirectInIframe);\r\n // Block auth requests inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n // Block redirectUri opened in a popup from calling MSAL APIs\r\n BrowserUtils.blockAcquireTokenInPopups();\r\n // Block token acquisition before initialize has been called if native brokering is enabled\r\n BrowserUtils.blockNativeBrokerCalledBeforeInitialized(this.config.system.allowNativeBroker, this.initialized);\r\n // Block redirects if memory storage is enabled but storeAuthStateInCookie is not\r\n if (interactionType === InteractionType.Redirect &&\r\n this.config.cache.cacheLocation === BrowserCacheLocation.MemoryStorage &&\r\n !this.config.cache.storeAuthStateInCookie) {\r\n throw BrowserConfigurationAuthError.createInMemoryRedirectUnavailableError();\r\n }\r\n if (interactionType === InteractionType.Redirect || interactionType === InteractionType.Popup) {\r\n this.preflightInteractiveRequest();\r\n }\r\n };\r\n /**\r\n * Helper to validate app environment before making a request.\r\n * @param request\r\n * @param interactionType\r\n */\r\n ClientApplication.prototype.preflightInteractiveRequest = function () {\r\n this.logger.verbose(\"preflightInteractiveRequest called, validating app environment\");\r\n // block the reload if it occurred inside a hidden iframe\r\n BrowserUtils.blockReloadInHiddenIframes();\r\n // Set interaction in progress temporary cache or throw if alread set.\r\n this.browserStorage.setInteractionInProgress(true);\r\n };\r\n /**\r\n * Acquire a token from native device (e.g. WAM)\r\n * @param request\r\n */\r\n ClientApplication.prototype.acquireTokenNative = function (request, apiId, accountId) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var nativeClient;\r\n return __generator(this, function (_a) {\r\n this.logger.trace(\"acquireTokenNative called\");\r\n if (!this.nativeExtensionProvider) {\r\n throw BrowserAuthError.createNativeConnectionNotEstablishedError();\r\n }\r\n nativeClient = new NativeInteractionClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, apiId, this.performanceClient, this.nativeExtensionProvider, accountId || this.getNativeAccountId(request), request.correlationId);\r\n return [2 /*return*/, nativeClient.acquireToken(request)];\r\n });\r\n });\r\n };\r\n /**\r\n * Returns boolean indicating if this request can use the native broker\r\n * @param request\r\n */\r\n ClientApplication.prototype.canUseNative = function (request, accountId) {\r\n this.logger.trace(\"canUseNative called\");\r\n if (!NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme)) {\r\n this.logger.trace(\"canUseNative: isNativeAvailable returned false, returning false\");\r\n return false;\r\n }\r\n if (request.prompt) {\r\n switch (request.prompt) {\r\n case PromptValue.NONE:\r\n case PromptValue.CONSENT:\r\n this.logger.trace(\"canUseNative: prompt is compatible with native flow\");\r\n break;\r\n default:\r\n this.logger.trace(\"canUseNative: prompt = \" + request.prompt + \" is not compatible with native flow, returning false\");\r\n return false;\r\n }\r\n }\r\n if (!accountId && !this.getNativeAccountId(request)) {\r\n this.logger.trace(\"canUseNative: nativeAccountId is not available, returning false\");\r\n return false;\r\n }\r\n return true;\r\n };\r\n /**\r\n * Get the native accountId from the account\r\n * @param request\r\n * @returns\r\n */\r\n ClientApplication.prototype.getNativeAccountId = function (request) {\r\n var account = request.account || this.browserStorage.getAccountInfoByHints(request.loginHint, request.sid) || this.getActiveAccount();\r\n return account && account.nativeAccountId || \"\";\r\n };\r\n /**\r\n * Returns new instance of the Popup Interaction Client\r\n * @param correlationId\r\n */\r\n ClientApplication.prototype.createPopupClient = function (correlationId) {\r\n return new PopupClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Popup Interaction Client\r\n * @param correlationId\r\n */\r\n ClientApplication.prototype.createRedirectClient = function (correlationId) {\r\n return new RedirectClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Silent Iframe Interaction Client\r\n * @param correlationId\r\n */\r\n ClientApplication.prototype.createSilentIframeClient = function (correlationId) {\r\n return new SilentIframeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.ssoSilent, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Silent Cache Interaction Client\r\n */\r\n ClientApplication.prototype.createSilentCacheClient = function (correlationId) {\r\n return new SilentCacheClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Silent Refresh Interaction Client\r\n */\r\n ClientApplication.prototype.createSilentRefreshClient = function (correlationId) {\r\n return new SilentRefreshClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Returns new instance of the Silent AuthCode Interaction Client\r\n */\r\n ClientApplication.prototype.createSilentAuthCodeClient = function (correlationId) {\r\n return new SilentAuthCodeClient(this.config, this.browserStorage, this.browserCrypto, this.logger, this.eventHandler, this.navigationClient, ApiId.acquireTokenByCode, this.performanceClient, this.nativeExtensionProvider, correlationId);\r\n };\r\n /**\r\n * Adds event callbacks to array\r\n * @param callback\r\n */\r\n ClientApplication.prototype.addEventCallback = function (callback) {\r\n return this.eventHandler.addEventCallback(callback);\r\n };\r\n /**\r\n * Removes callback with provided id from callback array\r\n * @param callbackId\r\n */\r\n ClientApplication.prototype.removeEventCallback = function (callbackId) {\r\n this.eventHandler.removeEventCallback(callbackId);\r\n };\r\n /**\r\n * Registers a callback to receive performance events.\r\n *\r\n * @param {PerformanceCallbackFunction} callback\r\n * @returns {string}\r\n */\r\n ClientApplication.prototype.addPerformanceCallback = function (callback) {\r\n return this.performanceClient.addPerformanceCallback(callback);\r\n };\r\n /**\r\n * Removes a callback registered with addPerformanceCallback.\r\n *\r\n * @param {string} callbackId\r\n * @returns {boolean}\r\n */\r\n ClientApplication.prototype.removePerformanceCallback = function (callbackId) {\r\n return this.performanceClient.removePerformanceCallback(callbackId);\r\n };\r\n /**\r\n * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n ClientApplication.prototype.enableAccountStorageEvents = function () {\r\n this.eventHandler.enableAccountStorageEvents();\r\n };\r\n /**\r\n * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\r\n */\r\n ClientApplication.prototype.disableAccountStorageEvents = function () {\r\n this.eventHandler.disableAccountStorageEvents();\r\n };\r\n /**\r\n * Gets the token cache for the application.\r\n */\r\n ClientApplication.prototype.getTokenCache = function () {\r\n return this.tokenCache;\r\n };\r\n /**\r\n * Returns the logger instance\r\n */\r\n ClientApplication.prototype.getLogger = function () {\r\n return this.logger;\r\n };\r\n /**\r\n * Replaces the default logger set in configurations with new Logger with new configurations\r\n * @param logger Logger instance\r\n */\r\n ClientApplication.prototype.setLogger = function (logger) {\r\n this.logger = logger;\r\n };\r\n /**\r\n * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc.\r\n * @param sku\r\n * @param version\r\n */\r\n ClientApplication.prototype.initializeWrapperLibrary = function (sku, version) {\r\n // Validate the SKU passed in is one we expect\r\n this.browserStorage.setWrapperMetadata(sku, version);\r\n };\r\n /**\r\n * Sets navigation client\r\n * @param navigationClient\r\n */\r\n ClientApplication.prototype.setNavigationClient = function (navigationClient) {\r\n this.navigationClient = navigationClient;\r\n };\r\n /**\r\n * Returns the configuration object\r\n */\r\n ClientApplication.prototype.getConfiguration = function () {\r\n return this.config;\r\n };\r\n /**\r\n * Generates a correlation id for a request if none is provided.\r\n *\r\n * @protected\r\n * @param {?Partial<BaseAuthRequest>} [request]\r\n * @returns {string}\r\n */\r\n ClientApplication.prototype.getRequestCorrelationId = function (request) {\r\n if (request === null || request === void 0 ? void 0 : request.correlationId) {\r\n return request.correlationId;\r\n }\r\n if (this.isBrowserEnvironment) {\r\n return this.browserCrypto.createNewGuid();\r\n }\r\n /*\r\n * Included for fallback for non-browser environments,\r\n * and to ensure this method always returns a string.\r\n */\r\n return Constants.EMPTY_STRING;\r\n };\r\n return ClientApplication;\r\n}());\n\nexport { ClientApplication };\n//# sourceMappingURL=ClientApplication.js.map\n","/*! @azure/msal-browser v2.24.0 2022-05-02 */\n'use strict';\nimport { __extends, __awaiter, __generator, __assign } from '../_virtual/_tslib.js';\nimport { PerformanceEvents, Constants } from '@azure/msal-common';\nimport { DEFAULT_REQUEST, InteractionType, ApiId } from '../utils/BrowserConstants.js';\nimport { ClientApplication } from './ClientApplication.js';\nimport { EventType } from '../event/EventType.js';\nimport { BrowserAuthError } from '../error/BrowserAuthError.js';\nimport { NativeAuthError } from '../error/NativeAuthError.js';\nimport { NativeMessageHandler } from '../broker/nativeBroker/NativeMessageHandler.js';\n\n/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n/**\r\n * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications\r\n * to obtain JWT tokens as described in the OAuth 2.0 Authorization Code Flow with PKCE specification.\r\n */\r\nvar PublicClientApplication = /** @class */ (function (_super) {\r\n __extends(PublicClientApplication, _super);\r\n /**\r\n * @constructor\r\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\r\n *\r\n * Important attributes in the Configuration object for auth are:\r\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\r\n * - authority: the authority URL for your application.\r\n * - redirect_uri: the uri of your application registered in the portal.\r\n *\r\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\r\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\r\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\r\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\r\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\r\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\r\n *\r\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\r\n * Full B2C functionality will be available in this library in future versions.\r\n *\r\n * @param configuration object for the MSAL PublicClientApplication instance\r\n */\r\n function PublicClientApplication(configuration) {\r\n var _this = _super.call(this, configuration) || this;\r\n _this.activeSilentTokenRequests = new Map();\r\n return _this;\r\n }\r\n /**\r\n * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so\r\n * any code that follows this function will not execute.\r\n *\r\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\r\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\r\n *\r\n * @param request\r\n */\r\n PublicClientApplication.prototype.loginRedirect = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n this.logger.verbose(\"loginRedirect called\", correlationId);\r\n return [2 /*return*/, this.acquireTokenRedirect(__assign({ correlationId: correlationId }, (request || DEFAULT_REQUEST)))];\r\n });\r\n });\r\n };\r\n /**\r\n * Use when initiating the login process via opening a popup window in the user's browser\r\n *\r\n * @param request\r\n *\r\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\r\n */\r\n PublicClientApplication.prototype.loginPopup = function (request) {\r\n var correlationId = this.getRequestCorrelationId(request);\r\n this.logger.verbose(\"loginPopup called\", correlationId);\r\n return this.acquireTokenPopup(__assign({ correlationId: correlationId }, (request || DEFAULT_REQUEST)));\r\n };\r\n /**\r\n * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made.\r\n *\r\n * @param {@link (SilentRequest:type)}\r\n * @returns {Promise.<AuthenticationResult>} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object\r\n */\r\n PublicClientApplication.prototype.acquireTokenSilent = function (request) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var correlationId, atsMeasurement, account, thumbprint, silentRequestKey, cachedResponse, response;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n correlationId = this.getRequestCorrelationId(request);\r\n atsMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilent, correlationId);\r\n this.preflightBrowserEnvironmentCheck(InteractionType.Silent);\r\n this.logger.verbose(\"acquireTokenSilent called\", correlationId);\r\n account = request.account || this.getActiveAccount();\r\n if (!account) {\r\n throw BrowserAuthError.createNoAccountError();\r\n }\r\n thumbprint = {\r\n clientId: this.config.auth.clientId,\r\n authority: request.authority || Constants.EMPTY_STRING,\r\n scopes: request.scopes,\r\n homeAccountIdentifier: account.homeAccountId,\r\n claims: request.claims,\r\n authenticationScheme: request.authenticationScheme,\r\n resourceRequestMethod: request.resourceRequestMethod,\r\n resourceRequestUri: request.resourceRequestUri,\r\n shrClaims: request.shrClaims,\r\n sshKid: request.sshKid\r\n };\r\n silentRequestKey = JSON.stringify(thumbprint);\r\n cachedResponse = this.activeSilentTokenRequests.get(silentRequestKey);\r\n if (typeof cachedResponse === \"undefined\") {\r\n this.logger.verbose(\"acquireTokenSilent called for the first time, storing active request\", correlationId);\r\n response = this.acquireTokenSilentAsync(__assign(__assign({}, request), { correlationId: correlationId }), account)\r\n .then(function (result) {\r\n _this.activeSilentTokenRequests.delete(silentRequestKey);\r\n atsMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: result.fromCache\r\n });\r\n atsMeasurement.flushMeasurement();\r\n return result;\r\n })\r\n .catch(function (error) {\r\n _this.activeSilentTokenRequests.delete(silentRequestKey);\r\n atsMeasurement.endMeasurement({\r\n success: false\r\n });\r\n atsMeasurement.flushMeasurement();\r\n throw error;\r\n });\r\n this.activeSilentTokenRequests.set(silentRequestKey, response);\r\n return [2 /*return*/, response];\r\n }\r\n else {\r\n this.logger.verbose(\"acquireTokenSilent has been called previously, returning the result from the first call\", correlationId);\r\n atsMeasurement.endMeasurement({\r\n success: true\r\n });\r\n // Discard measurements for memoized calls, as they are usually only a couple of ms and will artificially deflate metrics\r\n atsMeasurement.discardMeasurement();\r\n return [2 /*return*/, cachedResponse];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Silently acquire an access token for a given set of scopes. Will use cached token if available, otherwise will attempt to acquire a new token from the network via refresh token.\r\n * @param {@link (SilentRequest:type)}\r\n * @param {@link (AccountInfo:type)}\r\n * @returns {Promise.<AuthenticationResult>} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse}\r\n */\r\n PublicClientApplication.prototype.acquireTokenSilentAsync = function (request, account) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var astsAsyncMeasurement, result, silentRequest, silentCacheClient, silentRequest_1;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_START, InteractionType.Silent, request);\r\n astsAsyncMeasurement = this.performanceClient.startMeasurement(PerformanceEvents.AcquireTokenSilentAsync, request.correlationId);\r\n if (!(NativeMessageHandler.isNativeAvailable(this.config, this.logger, this.nativeExtensionProvider, request.authenticationScheme) && account.nativeAccountId)) return [3 /*break*/, 1];\r\n this.logger.verbose(\"acquireTokenSilent - attempting to acquire token from native platform\");\r\n silentRequest = __assign(__assign({}, request), { account: account });\r\n result = this.acquireTokenNative(silentRequest, ApiId.acquireTokenSilent_silentFlow).catch(function (e) { return __awaiter(_this, void 0, void 0, function () {\r\n var silentIframeClient;\r\n return __generator(this, function (_a) {\r\n // If native token acquisition fails for availability reasons fallback to web flow\r\n if (e instanceof NativeAuthError && e.isFatal()) {\r\n this.logger.verbose(\"acquireTokenSilent - native platform unavailable, falling back to web flow\");\r\n this.nativeExtensionProvider = undefined; // Prevent future requests from continuing to attempt \r\n silentIframeClient = this.createSilentIframeClient(request.correlationId);\r\n return [2 /*return*/, silentIframeClient.acquireToken(request)];\r\n }\r\n throw e;\r\n });\r\n }); });\r\n return [3 /*break*/, 3];\r\n case 1:\r\n this.logger.verbose(\"acquireTokenSilent - attempting to acquire token from web flow\");\r\n silentCacheClient = this.createSilentCacheClient(request.correlationId);\r\n return [4 /*yield*/, silentCacheClient.initializeSilentRequest(request, account)];\r\n case 2:\r\n silentRequest_1 = _a.sent();\r\n result = silentCacheClient.acquireToken(silentRequest_1).catch(function () { return __awaiter(_this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, this.acquireTokenByRefreshToken(silentRequest_1)];\r\n });\r\n }); });\r\n _a.label = 3;\r\n case 3: return [2 /*return*/, result.then(function (response) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_SUCCESS, InteractionType.Silent, response);\r\n astsAsyncMeasurement.endMeasurement({\r\n success: true,\r\n fromCache: response.fromCache\r\n });\r\n return response;\r\n }).catch(function (tokenRenewalError) {\r\n _this.eventHandler.emitEvent(EventType.ACQUIRE_TOKEN_FAILURE, InteractionType.Silent, null, tokenRenewalError);\r\n astsAsyncMeasurement.endMeasurement({\r\n success: false\r\n });\r\n throw tokenRenewalError;\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n return PublicClientApplication;\r\n}(ClientApplication));\n\nexport { PublicClientApplication };\n//# sourceMappingURL=PublicClientApplication.js.map\n","/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Firebase constants. Some of these (@defines) can be overridden at compile-time.\r\n */\r\nconst CONSTANTS = {\r\n /**\r\n * @define {boolean} Whether this is the client Node.js SDK.\r\n */\r\n NODE_CLIENT: false,\r\n /**\r\n * @define {boolean} Whether this is the Admin Node.js SDK.\r\n */\r\n NODE_ADMIN: false,\r\n /**\r\n * Firebase SDK Version\r\n */\r\n SDK_VERSION: '${JSCORE_VERSION}'\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Throws an error if the provided assertion is falsy\r\n */\r\nconst assert = function (assertion, message) {\r\n if (!assertion) {\r\n throw assertionError(message);\r\n }\r\n};\r\n/**\r\n * Returns an Error object suitable for throwing.\r\n */\r\nconst assertionError = function (message) {\r\n return new Error('Firebase Database (' +\r\n CONSTANTS.SDK_VERSION +\r\n ') INTERNAL ASSERT FAILED: ' +\r\n message);\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst stringToByteArray$1 = function (str) {\r\n // TODO(user): Use native implementations if/when available\r\n const out = [];\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n let c = str.charCodeAt(i);\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if ((c & 0xfc00) === 0xd800 &&\r\n i + 1 < str.length &&\r\n (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\r\n // Surrogate Pair\r\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Turns an array of numbers into the string given by the concatenation of the\r\n * characters to which the numbers correspond.\r\n * @param bytes Array of numbers representing characters.\r\n * @return Stringification of the array.\r\n */\r\nconst byteArrayToString = function (bytes) {\r\n // TODO(user): Use native implementations if/when available\r\n const out = [];\r\n let pos = 0, c = 0;\r\n while (pos < bytes.length) {\r\n const c1 = bytes[pos++];\r\n if (c1 < 128) {\r\n out[c++] = String.fromCharCode(c1);\r\n }\r\n else if (c1 > 191 && c1 < 224) {\r\n const c2 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\r\n }\r\n else if (c1 > 239 && c1 < 365) {\r\n // Surrogate Pair\r\n const c2 = bytes[pos++];\r\n const c3 = bytes[pos++];\r\n const c4 = bytes[pos++];\r\n const u = (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\r\n 0x10000;\r\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\r\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\r\n }\r\n else {\r\n const c2 = bytes[pos++];\r\n const c3 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\r\n }\r\n }\r\n return out.join('');\r\n};\r\n// We define it as an object literal instead of a class because a class compiled down to es5 can't\r\n// be treeshaked. https://github.com/rollup/rollup/issues/1691\r\n// Static lookup maps, lazily populated by init_()\r\nconst base64 = {\r\n /**\r\n * Maps bytes to characters.\r\n */\r\n byteToCharMap_: null,\r\n /**\r\n * Maps characters to bytes.\r\n */\r\n charToByteMap_: null,\r\n /**\r\n * Maps bytes to websafe characters.\r\n * @private\r\n */\r\n byteToCharMapWebSafe_: null,\r\n /**\r\n * Maps websafe characters to bytes.\r\n * @private\r\n */\r\n charToByteMapWebSafe_: null,\r\n /**\r\n * Our default alphabet, shared between\r\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\r\n */\r\n ENCODED_VALS_BASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\r\n /**\r\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\r\n */\r\n get ENCODED_VALS() {\r\n return this.ENCODED_VALS_BASE + '+/=';\r\n },\r\n /**\r\n * Our websafe alphabet.\r\n */\r\n get ENCODED_VALS_WEBSAFE() {\r\n return this.ENCODED_VALS_BASE + '-_.';\r\n },\r\n /**\r\n * Whether this browser supports the atob and btoa functions. This extension\r\n * started at Mozilla but is now implemented by many browsers. We use the\r\n * ASSUME_* variables to avoid pulling in the full useragent detection library\r\n * but still allowing the standard per-browser compilations.\r\n *\r\n */\r\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\r\n /**\r\n * Base64-encode an array of bytes.\r\n *\r\n * @param input An array of bytes (numbers with\r\n * value in [0, 255]) to encode.\r\n * @param webSafe Boolean indicating we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeByteArray(input, webSafe) {\r\n if (!Array.isArray(input)) {\r\n throw Error('encodeByteArray takes an array as a parameter');\r\n }\r\n this.init_();\r\n const byteToCharMap = webSafe\r\n ? this.byteToCharMapWebSafe_\r\n : this.byteToCharMap_;\r\n const output = [];\r\n for (let i = 0; i < input.length; i += 3) {\r\n const byte1 = input[i];\r\n const haveByte2 = i + 1 < input.length;\r\n const byte2 = haveByte2 ? input[i + 1] : 0;\r\n const haveByte3 = i + 2 < input.length;\r\n const byte3 = haveByte3 ? input[i + 2] : 0;\r\n const outByte1 = byte1 >> 2;\r\n const outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\r\n let outByte3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6);\r\n let outByte4 = byte3 & 0x3f;\r\n if (!haveByte3) {\r\n outByte4 = 64;\r\n if (!haveByte2) {\r\n outByte3 = 64;\r\n }\r\n }\r\n output.push(byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4]);\r\n }\r\n return output.join('');\r\n },\r\n /**\r\n * Base64-encode a string.\r\n *\r\n * @param input A string to encode.\r\n * @param webSafe If true, we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeString(input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return btoa(input);\r\n }\r\n return this.encodeByteArray(stringToByteArray$1(input), webSafe);\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * @param input to decode.\r\n * @param webSafe True if we should use the\r\n * alternative alphabet.\r\n * @return string representing the decoded value.\r\n */\r\n decodeString(input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return atob(input);\r\n }\r\n return byteArrayToString(this.decodeStringToByteArray(input, webSafe));\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * In base-64 decoding, groups of four characters are converted into three\r\n * bytes. If the encoder did not apply padding, the input length may not\r\n * be a multiple of 4.\r\n *\r\n * In this case, the last group will have fewer than 4 characters, and\r\n * padding will be inferred. If the group has one or two characters, it decodes\r\n * to one byte. If the group has three characters, it decodes to two bytes.\r\n *\r\n * @param input Input to decode.\r\n * @param webSafe True if we should use the web-safe alphabet.\r\n * @return bytes representing the decoded value.\r\n */\r\n decodeStringToByteArray(input, webSafe) {\r\n this.init_();\r\n const charToByteMap = webSafe\r\n ? this.charToByteMapWebSafe_\r\n : this.charToByteMap_;\r\n const output = [];\r\n for (let i = 0; i < input.length;) {\r\n const byte1 = charToByteMap[input.charAt(i++)];\r\n const haveByte2 = i < input.length;\r\n const byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\r\n ++i;\r\n const haveByte3 = i < input.length;\r\n const byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n const haveByte4 = i < input.length;\r\n const byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\r\n throw Error();\r\n }\r\n const outByte1 = (byte1 << 2) | (byte2 >> 4);\r\n output.push(outByte1);\r\n if (byte3 !== 64) {\r\n const outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\r\n output.push(outByte2);\r\n if (byte4 !== 64) {\r\n const outByte3 = ((byte3 << 6) & 0xc0) | byte4;\r\n output.push(outByte3);\r\n }\r\n }\r\n }\r\n return output;\r\n },\r\n /**\r\n * Lazy static initialization function. Called before\r\n * accessing any of the static map variables.\r\n * @private\r\n */\r\n init_() {\r\n if (!this.byteToCharMap_) {\r\n this.byteToCharMap_ = {};\r\n this.charToByteMap_ = {};\r\n this.byteToCharMapWebSafe_ = {};\r\n this.charToByteMapWebSafe_ = {};\r\n // We want quick mappings back and forth, so we precompute two maps.\r\n for (let i = 0; i < this.ENCODED_VALS.length; i++) {\r\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\r\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\r\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\r\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i;\r\n // Be forgiving when decoding and correctly decode both encodings.\r\n if (i >= this.ENCODED_VALS_BASE.length) {\r\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\r\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n/**\r\n * URL-safe base64 encoding\r\n */\r\nconst base64Encode = function (str) {\r\n const utf8Bytes = stringToByteArray$1(str);\r\n return base64.encodeByteArray(utf8Bytes, true);\r\n};\r\n/**\r\n * URL-safe base64 encoding (without \".\" padding in the end).\r\n * e.g. Used in JSON Web Token (JWT) parts.\r\n */\r\nconst base64urlEncodeWithoutPadding = function (str) {\r\n // Use base64url encoding and remove padding in the end (dot characters).\r\n return base64Encode(str).replace(/\\./g, '');\r\n};\r\n/**\r\n * URL-safe base64 decoding\r\n *\r\n * NOTE: DO NOT use the global atob() function - it does NOT support the\r\n * base64Url variant encoding.\r\n *\r\n * @param str To be decoded\r\n * @return Decoded result, if possible\r\n */\r\nconst base64Decode = function (str) {\r\n try {\r\n return base64.decodeString(str, true);\r\n }\r\n catch (e) {\r\n console.error('base64Decode failed: ', e);\r\n }\r\n return null;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Do a deep-copy of basic JavaScript Objects or Arrays.\r\n */\r\nfunction deepCopy(value) {\r\n return deepExtend(undefined, value);\r\n}\r\n/**\r\n * Copy properties from source to target (recursively allows extension\r\n * of Objects and Arrays). Scalar values in the target are over-written.\r\n * If target is undefined, an object of the appropriate type will be created\r\n * (and returned).\r\n *\r\n * We recursively copy all child properties of plain Objects in the source- so\r\n * that namespace- like dictionaries are merged.\r\n *\r\n * Note that the target can be a function, in which case the properties in\r\n * the source Object are copied onto it as static properties of the Function.\r\n *\r\n * Note: we don't merge __proto__ to prevent prototype pollution\r\n */\r\nfunction deepExtend(target, source) {\r\n if (!(source instanceof Object)) {\r\n return source;\r\n }\r\n switch (source.constructor) {\r\n case Date:\r\n // Treat Dates like scalars; if the target date object had any child\r\n // properties - they will be lost!\r\n const dateValue = source;\r\n return new Date(dateValue.getTime());\r\n case Object:\r\n if (target === undefined) {\r\n target = {};\r\n }\r\n break;\r\n case Array:\r\n // Always copy the array source and overwrite the target.\r\n target = [];\r\n break;\r\n default:\r\n // Not a plain Object - treat it as a scalar.\r\n return source;\r\n }\r\n for (const prop in source) {\r\n // use isValidKey to guard against prototype pollution. See https://snyk.io/vuln/SNYK-JS-LODASH-450202\r\n if (!source.hasOwnProperty(prop) || !isValidKey(prop)) {\r\n continue;\r\n }\r\n target[prop] = deepExtend(target[prop], source[prop]);\r\n }\r\n return target;\r\n}\r\nfunction isValidKey(key) {\r\n return key !== '__proto__';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass Deferred {\r\n constructor() {\r\n this.reject = () => { };\r\n this.resolve = () => { };\r\n this.promise = new Promise((resolve, reject) => {\r\n this.resolve = resolve;\r\n this.reject = reject;\r\n });\r\n }\r\n /**\r\n * Our API internals are not promiseified and cannot because our callback APIs have subtle expectations around\r\n * invoking promises inline, which Promises are forbidden to do. This method accepts an optional node-style callback\r\n * and returns a node-style callback which will resolve or reject the Deferred's promise.\r\n */\r\n wrapCallback(callback) {\r\n return (error, value) => {\r\n if (error) {\r\n this.reject(error);\r\n }\r\n else {\r\n this.resolve(value);\r\n }\r\n if (typeof callback === 'function') {\r\n // Attaching noop handler just in case developer wasn't expecting\r\n // promises\r\n this.promise.catch(() => { });\r\n // Some of our callbacks don't expect a value and our own tests\r\n // assert that the parameter length is 1\r\n if (callback.length === 1) {\r\n callback(error);\r\n }\r\n else {\r\n callback(error, value);\r\n }\r\n }\r\n };\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction createMockUserToken(token, projectId) {\r\n if (token.uid) {\r\n throw new Error('The \"uid\" field is no longer supported by mockUserToken. Please use \"sub\" instead for Firebase Auth User ID.');\r\n }\r\n // Unsecured JWTs use \"none\" as the algorithm.\r\n const header = {\r\n alg: 'none',\r\n type: 'JWT'\r\n };\r\n const project = projectId || 'demo-project';\r\n const iat = token.iat || 0;\r\n const sub = token.sub || token.user_id;\r\n if (!sub) {\r\n throw new Error(\"mockUserToken must contain 'sub' or 'user_id' field!\");\r\n }\r\n const payload = Object.assign({ \r\n // Set all required fields to decent defaults\r\n iss: `https://securetoken.google.com/${project}`, aud: project, iat, exp: iat + 3600, auth_time: iat, sub, user_id: sub, firebase: {\r\n sign_in_provider: 'custom',\r\n identities: {}\r\n } }, token);\r\n // Unsecured JWTs use the empty string as a signature.\r\n const signature = '';\r\n return [\r\n base64urlEncodeWithoutPadding(JSON.stringify(header)),\r\n base64urlEncodeWithoutPadding(JSON.stringify(payload)),\r\n signature\r\n ].join('.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns navigator.userAgent string or '' if it's not defined.\r\n * @return user agent string\r\n */\r\nfunction getUA() {\r\n if (typeof navigator !== 'undefined' &&\r\n typeof navigator['userAgent'] === 'string') {\r\n return navigator['userAgent'];\r\n }\r\n else {\r\n return '';\r\n }\r\n}\r\n/**\r\n * Detect Cordova / PhoneGap / Ionic frameworks on a mobile device.\r\n *\r\n * Deliberately does not rely on checking `file://` URLs (as this fails PhoneGap\r\n * in the Ripple emulator) nor Cordova `onDeviceReady`, which would normally\r\n * wait for a callback.\r\n */\r\nfunction isMobileCordova() {\r\n return (typeof window !== 'undefined' &&\r\n // @ts-ignore Setting up an broadly applicable index signature for Window\r\n // just to deal with this case would probably be a bad idea.\r\n !!(window['cordova'] || window['phonegap'] || window['PhoneGap']) &&\r\n /ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(getUA()));\r\n}\r\n/**\r\n * Detect Node.js.\r\n *\r\n * @return true if Node.js environment is detected.\r\n */\r\n// Node detection logic from: https://github.com/iliakan/detect-node/\r\nfunction isNode() {\r\n try {\r\n return (Object.prototype.toString.call(global.process) === '[object process]');\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Detect Browser Environment\r\n */\r\nfunction isBrowser() {\r\n return typeof self === 'object' && self.self === self;\r\n}\r\nfunction isBrowserExtension() {\r\n const runtime = typeof chrome === 'object'\r\n ? chrome.runtime\r\n : typeof browser === 'object'\r\n ? browser.runtime\r\n : undefined;\r\n return typeof runtime === 'object' && runtime.id !== undefined;\r\n}\r\n/**\r\n * Detect React Native.\r\n *\r\n * @return true if ReactNative environment is detected.\r\n */\r\nfunction isReactNative() {\r\n return (typeof navigator === 'object' && navigator['product'] === 'ReactNative');\r\n}\r\n/** Detects Electron apps. */\r\nfunction isElectron() {\r\n return getUA().indexOf('Electron/') >= 0;\r\n}\r\n/** Detects Internet Explorer. */\r\nfunction isIE() {\r\n const ua = getUA();\r\n return ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\r\n}\r\n/** Detects Universal Windows Platform apps. */\r\nfunction isUWP() {\r\n return getUA().indexOf('MSAppHost/') >= 0;\r\n}\r\n/**\r\n * Detect whether the current SDK build is the Node version.\r\n *\r\n * @return true if it's the Node SDK build.\r\n */\r\nfunction isNodeSdk() {\r\n return CONSTANTS.NODE_CLIENT === true || CONSTANTS.NODE_ADMIN === true;\r\n}\r\n/** Returns true if we are running in Safari. */\r\nfunction isSafari() {\r\n return (!isNode() &&\r\n navigator.userAgent.includes('Safari') &&\r\n !navigator.userAgent.includes('Chrome'));\r\n}\r\n/**\r\n * This method checks if indexedDB is supported by current browser/service worker context\r\n * @return true if indexedDB is supported by current browser/service worker context\r\n */\r\nfunction isIndexedDBAvailable() {\r\n return typeof indexedDB === 'object';\r\n}\r\n/**\r\n * This method validates browser/sw context for indexedDB by opening a dummy indexedDB database and reject\r\n * if errors occur during the database open operation.\r\n *\r\n * @throws exception if current browser/sw context can't run idb.open (ex: Safari iframe, Firefox\r\n * private browsing)\r\n */\r\nfunction validateIndexedDBOpenable() {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n let preExist = true;\r\n const DB_CHECK_NAME = 'validate-browser-context-for-indexeddb-analytics-module';\r\n const request = self.indexedDB.open(DB_CHECK_NAME);\r\n request.onsuccess = () => {\r\n request.result.close();\r\n // delete database only when it doesn't pre-exist\r\n if (!preExist) {\r\n self.indexedDB.deleteDatabase(DB_CHECK_NAME);\r\n }\r\n resolve(true);\r\n };\r\n request.onupgradeneeded = () => {\r\n preExist = false;\r\n };\r\n request.onerror = () => {\r\n var _a;\r\n reject(((_a = request.error) === null || _a === void 0 ? void 0 : _a.message) || '');\r\n };\r\n }\r\n catch (error) {\r\n reject(error);\r\n }\r\n });\r\n}\r\n/**\r\n *\r\n * This method checks whether cookie is enabled within current browser\r\n * @return true if cookie is enabled within current browser\r\n */\r\nfunction areCookiesEnabled() {\r\n if (typeof navigator === 'undefined' || !navigator.cookieEnabled) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n/**\r\n * Polyfill for `globalThis` object.\r\n * @returns the `globalThis` object for the given environment.\r\n */\r\nfunction getGlobal() {\r\n if (typeof self !== 'undefined') {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined') {\r\n return window;\r\n }\r\n if (typeof global !== 'undefined') {\r\n return global;\r\n }\r\n throw new Error('Unable to locate global object.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Standardized Firebase Error.\r\n *\r\n * Usage:\r\n *\r\n * // Typescript string literals for type-safe codes\r\n * type Err =\r\n * 'unknown' |\r\n * 'object-not-found'\r\n * ;\r\n *\r\n * // Closure enum for type-safe error codes\r\n * // at-enum {string}\r\n * var Err = {\r\n * UNKNOWN: 'unknown',\r\n * OBJECT_NOT_FOUND: 'object-not-found',\r\n * }\r\n *\r\n * let errors: Map<Err, string> = {\r\n * 'generic-error': \"Unknown error\",\r\n * 'file-not-found': \"Could not find file: {$file}\",\r\n * };\r\n *\r\n * // Type-safe function - must pass a valid error code as param.\r\n * let error = new ErrorFactory<Err>('service', 'Service', errors);\r\n *\r\n * ...\r\n * throw error.create(Err.GENERIC);\r\n * ...\r\n * throw error.create(Err.FILE_NOT_FOUND, {'file': fileName});\r\n * ...\r\n * // Service: Could not file file: foo.txt (service/file-not-found).\r\n *\r\n * catch (e) {\r\n * assert(e.message === \"Could not find file: foo.txt.\");\r\n * if (e.code === 'service/file-not-found') {\r\n * console.log(\"Could not read file: \" + e['file']);\r\n * }\r\n * }\r\n */\r\nconst ERROR_NAME = 'FirebaseError';\r\n// Based on code from:\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types\r\nclass FirebaseError extends Error {\r\n constructor(\r\n /** The error code for this error. */\r\n code, message, \r\n /** Custom data for this error. */\r\n customData) {\r\n super(message);\r\n this.code = code;\r\n this.customData = customData;\r\n /** The custom name for all FirebaseErrors. */\r\n this.name = ERROR_NAME;\r\n // Fix For ES5\r\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\n Object.setPrototypeOf(this, FirebaseError.prototype);\r\n // Maintains proper stack trace for where our error was thrown.\r\n // Only available on V8.\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, ErrorFactory.prototype.create);\r\n }\r\n }\r\n}\r\nclass ErrorFactory {\r\n constructor(service, serviceName, errors) {\r\n this.service = service;\r\n this.serviceName = serviceName;\r\n this.errors = errors;\r\n }\r\n create(code, ...data) {\r\n const customData = data[0] || {};\r\n const fullCode = `${this.service}/${code}`;\r\n const template = this.errors[code];\r\n const message = template ? replaceTemplate(template, customData) : 'Error';\r\n // Service Name: Error message (service/code).\r\n const fullMessage = `${this.serviceName}: ${message} (${fullCode}).`;\r\n const error = new FirebaseError(fullCode, fullMessage, customData);\r\n return error;\r\n }\r\n}\r\nfunction replaceTemplate(template, data) {\r\n return template.replace(PATTERN, (_, key) => {\r\n const value = data[key];\r\n return value != null ? String(value) : `<${key}?>`;\r\n });\r\n}\r\nconst PATTERN = /\\{\\$([^}]+)}/g;\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Evaluates a JSON string into a javascript object.\r\n *\r\n * @param {string} str A string containing JSON.\r\n * @return {*} The javascript object representing the specified JSON.\r\n */\r\nfunction jsonEval(str) {\r\n return JSON.parse(str);\r\n}\r\n/**\r\n * Returns JSON representing a javascript object.\r\n * @param {*} data Javascript object to be stringified.\r\n * @return {string} The JSON contents of the object.\r\n */\r\nfunction stringify(data) {\r\n return JSON.stringify(data);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Decodes a Firebase auth. token into constituent parts.\r\n *\r\n * Notes:\r\n * - May return with invalid / incomplete claims if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst decode = function (token) {\r\n let header = {}, claims = {}, data = {}, signature = '';\r\n try {\r\n const parts = token.split('.');\r\n header = jsonEval(base64Decode(parts[0]) || '');\r\n claims = jsonEval(base64Decode(parts[1]) || '');\r\n signature = parts[2];\r\n data = claims['d'] || {};\r\n delete claims['d'];\r\n }\r\n catch (e) { }\r\n return {\r\n header,\r\n claims,\r\n data,\r\n signature\r\n };\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its time-based claims. Will return true if the\r\n * token is within the time window authorized by the 'nbf' (not-before) and 'iat' (issued-at) claims.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isValidTimestamp = function (token) {\r\n const claims = decode(token).claims;\r\n const now = Math.floor(new Date().getTime() / 1000);\r\n let validSince = 0, validUntil = 0;\r\n if (typeof claims === 'object') {\r\n if (claims.hasOwnProperty('nbf')) {\r\n validSince = claims['nbf'];\r\n }\r\n else if (claims.hasOwnProperty('iat')) {\r\n validSince = claims['iat'];\r\n }\r\n if (claims.hasOwnProperty('exp')) {\r\n validUntil = claims['exp'];\r\n }\r\n else {\r\n // token will expire after 24h by default\r\n validUntil = validSince + 86400;\r\n }\r\n }\r\n return (!!now &&\r\n !!validSince &&\r\n !!validUntil &&\r\n now >= validSince &&\r\n now <= validUntil);\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and returns its issued at time if valid, null otherwise.\r\n *\r\n * Notes:\r\n * - May return null if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst issuedAtTime = function (token) {\r\n const claims = decode(token).claims;\r\n if (typeof claims === 'object' && claims.hasOwnProperty('iat')) {\r\n return claims['iat'];\r\n }\r\n return null;\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its format. Expects a valid issued-at time.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isValidFormat = function (token) {\r\n const decoded = decode(token), claims = decoded.claims;\r\n return !!claims && typeof claims === 'object' && claims.hasOwnProperty('iat');\r\n};\r\n/**\r\n * Attempts to peer into an auth token and determine if it's an admin auth token by looking at the claims portion.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isAdmin = function (token) {\r\n const claims = decode(token).claims;\r\n return typeof claims === 'object' && claims['admin'] === true;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction contains(obj, key) {\r\n return Object.prototype.hasOwnProperty.call(obj, key);\r\n}\r\nfunction safeGet(obj, key) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return obj[key];\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\nfunction isEmpty(obj) {\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction map(obj, fn, contextObj) {\r\n const res = {};\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n res[key] = fn.call(contextObj, obj[key], key, obj);\r\n }\r\n }\r\n return res;\r\n}\r\n/**\r\n * Deep equal two objects. Support Arrays and Objects.\r\n */\r\nfunction deepEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n const aKeys = Object.keys(a);\r\n const bKeys = Object.keys(b);\r\n for (const k of aKeys) {\r\n if (!bKeys.includes(k)) {\r\n return false;\r\n }\r\n const aProp = a[k];\r\n const bProp = b[k];\r\n if (isObject(aProp) && isObject(bProp)) {\r\n if (!deepEqual(aProp, bProp)) {\r\n return false;\r\n }\r\n }\r\n else if (aProp !== bProp) {\r\n return false;\r\n }\r\n }\r\n for (const k of bKeys) {\r\n if (!aKeys.includes(k)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isObject(thing) {\r\n return thing !== null && typeof thing === 'object';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a querystring-formatted string (e.g. &arg=val&arg2=val2) from a\r\n * params object (e.g. {arg: 'val', arg2: 'val2'})\r\n * Note: You must prepend it with ? when adding it to a URL.\r\n */\r\nfunction querystring(querystringParams) {\r\n const params = [];\r\n for (const [key, value] of Object.entries(querystringParams)) {\r\n if (Array.isArray(value)) {\r\n value.forEach(arrayVal => {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(arrayVal));\r\n });\r\n }\r\n else {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\r\n }\r\n }\r\n return params.length ? '&' + params.join('&') : '';\r\n}\r\n/**\r\n * Decodes a querystring (e.g. ?arg=val&arg2=val2) into a params object\r\n * (e.g. {arg: 'val', arg2: 'val2'})\r\n */\r\nfunction querystringDecode(querystring) {\r\n const obj = {};\r\n const tokens = querystring.replace(/^\\?/, '').split('&');\r\n tokens.forEach(token => {\r\n if (token) {\r\n const [key, value] = token.split('=');\r\n obj[decodeURIComponent(key)] = decodeURIComponent(value);\r\n }\r\n });\r\n return obj;\r\n}\r\n/**\r\n * Extract the query string part of a URL, including the leading question mark (if present).\r\n */\r\nfunction extractQuerystring(url) {\r\n const queryStart = url.indexOf('?');\r\n if (!queryStart) {\r\n return '';\r\n }\r\n const fragmentStart = url.indexOf('#', queryStart);\r\n return url.substring(queryStart, fragmentStart > 0 ? fragmentStart : undefined);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview SHA-1 cryptographic hash.\r\n * Variable names follow the notation in FIPS PUB 180-3:\r\n * http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf.\r\n *\r\n * Usage:\r\n * var sha1 = new sha1();\r\n * sha1.update(bytes);\r\n * var hash = sha1.digest();\r\n *\r\n * Performance:\r\n * Chrome 23: ~400 Mbit/s\r\n * Firefox 16: ~250 Mbit/s\r\n *\r\n */\r\n/**\r\n * SHA-1 cryptographic hash constructor.\r\n *\r\n * The properties declared here are discussed in the above algorithm document.\r\n * @constructor\r\n * @final\r\n * @struct\r\n */\r\nclass Sha1 {\r\n constructor() {\r\n /**\r\n * Holds the previous values of accumulated variables a-e in the compress_\r\n * function.\r\n * @private\r\n */\r\n this.chain_ = [];\r\n /**\r\n * A buffer holding the partially computed hash result.\r\n * @private\r\n */\r\n this.buf_ = [];\r\n /**\r\n * An array of 80 bytes, each a part of the message to be hashed. Referred to\r\n * as the message schedule in the docs.\r\n * @private\r\n */\r\n this.W_ = [];\r\n /**\r\n * Contains data needed to pad messages less than 64 bytes.\r\n * @private\r\n */\r\n this.pad_ = [];\r\n /**\r\n * @private {number}\r\n */\r\n this.inbuf_ = 0;\r\n /**\r\n * @private {number}\r\n */\r\n this.total_ = 0;\r\n this.blockSize = 512 / 8;\r\n this.pad_[0] = 128;\r\n for (let i = 1; i < this.blockSize; ++i) {\r\n this.pad_[i] = 0;\r\n }\r\n this.reset();\r\n }\r\n reset() {\r\n this.chain_[0] = 0x67452301;\r\n this.chain_[1] = 0xefcdab89;\r\n this.chain_[2] = 0x98badcfe;\r\n this.chain_[3] = 0x10325476;\r\n this.chain_[4] = 0xc3d2e1f0;\r\n this.inbuf_ = 0;\r\n this.total_ = 0;\r\n }\r\n /**\r\n * Internal compress helper function.\r\n * @param buf Block to compress.\r\n * @param offset Offset of the block in the buffer.\r\n * @private\r\n */\r\n compress_(buf, offset) {\r\n if (!offset) {\r\n offset = 0;\r\n }\r\n const W = this.W_;\r\n // get 16 big endian words\r\n if (typeof buf === 'string') {\r\n for (let i = 0; i < 16; i++) {\r\n // TODO(user): [bug 8140122] Recent versions of Safari for Mac OS and iOS\r\n // have a bug that turns the post-increment ++ operator into pre-increment\r\n // during JIT compilation. We have code that depends heavily on SHA-1 for\r\n // correctness and which is affected by this bug, so I've removed all uses\r\n // of post-increment ++ in which the result value is used. We can revert\r\n // this change once the Safari bug\r\n // (https://bugs.webkit.org/show_bug.cgi?id=109036) has been fixed and\r\n // most clients have been updated.\r\n W[i] =\r\n (buf.charCodeAt(offset) << 24) |\r\n (buf.charCodeAt(offset + 1) << 16) |\r\n (buf.charCodeAt(offset + 2) << 8) |\r\n buf.charCodeAt(offset + 3);\r\n offset += 4;\r\n }\r\n }\r\n else {\r\n for (let i = 0; i < 16; i++) {\r\n W[i] =\r\n (buf[offset] << 24) |\r\n (buf[offset + 1] << 16) |\r\n (buf[offset + 2] << 8) |\r\n buf[offset + 3];\r\n offset += 4;\r\n }\r\n }\r\n // expand to 80 words\r\n for (let i = 16; i < 80; i++) {\r\n const t = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\r\n W[i] = ((t << 1) | (t >>> 31)) & 0xffffffff;\r\n }\r\n let a = this.chain_[0];\r\n let b = this.chain_[1];\r\n let c = this.chain_[2];\r\n let d = this.chain_[3];\r\n let e = this.chain_[4];\r\n let f, k;\r\n // TODO(user): Try to unroll this loop to speed up the computation.\r\n for (let i = 0; i < 80; i++) {\r\n if (i < 40) {\r\n if (i < 20) {\r\n f = d ^ (b & (c ^ d));\r\n k = 0x5a827999;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0x6ed9eba1;\r\n }\r\n }\r\n else {\r\n if (i < 60) {\r\n f = (b & c) | (d & (b | c));\r\n k = 0x8f1bbcdc;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0xca62c1d6;\r\n }\r\n }\r\n const t = (((a << 5) | (a >>> 27)) + f + e + k + W[i]) & 0xffffffff;\r\n e = d;\r\n d = c;\r\n c = ((b << 30) | (b >>> 2)) & 0xffffffff;\r\n b = a;\r\n a = t;\r\n }\r\n this.chain_[0] = (this.chain_[0] + a) & 0xffffffff;\r\n this.chain_[1] = (this.chain_[1] + b) & 0xffffffff;\r\n this.chain_[2] = (this.chain_[2] + c) & 0xffffffff;\r\n this.chain_[3] = (this.chain_[3] + d) & 0xffffffff;\r\n this.chain_[4] = (this.chain_[4] + e) & 0xffffffff;\r\n }\r\n update(bytes, length) {\r\n // TODO(johnlenz): tighten the function signature and remove this check\r\n if (bytes == null) {\r\n return;\r\n }\r\n if (length === undefined) {\r\n length = bytes.length;\r\n }\r\n const lengthMinusBlock = length - this.blockSize;\r\n let n = 0;\r\n // Using local instead of member variables gives ~5% speedup on Firefox 16.\r\n const buf = this.buf_;\r\n let inbuf = this.inbuf_;\r\n // The outer while loop should execute at most twice.\r\n while (n < length) {\r\n // When we have no data in the block to top up, we can directly process the\r\n // input buffer (assuming it contains sufficient data). This gives ~25%\r\n // speedup on Chrome 23 and ~15% speedup on Firefox 16, but requires that\r\n // the data is provided in large chunks (or in multiples of 64 bytes).\r\n if (inbuf === 0) {\r\n while (n <= lengthMinusBlock) {\r\n this.compress_(bytes, n);\r\n n += this.blockSize;\r\n }\r\n }\r\n if (typeof bytes === 'string') {\r\n while (n < length) {\r\n buf[inbuf] = bytes.charCodeAt(n);\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n while (n < length) {\r\n buf[inbuf] = bytes[n];\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n this.inbuf_ = inbuf;\r\n this.total_ += length;\r\n }\r\n /** @override */\r\n digest() {\r\n const digest = [];\r\n let totalBits = this.total_ * 8;\r\n // Add pad 0x80 0x00*.\r\n if (this.inbuf_ < 56) {\r\n this.update(this.pad_, 56 - this.inbuf_);\r\n }\r\n else {\r\n this.update(this.pad_, this.blockSize - (this.inbuf_ - 56));\r\n }\r\n // Add # bits.\r\n for (let i = this.blockSize - 1; i >= 56; i--) {\r\n this.buf_[i] = totalBits & 255;\r\n totalBits /= 256; // Don't use bit-shifting here!\r\n }\r\n this.compress_(this.buf_);\r\n let n = 0;\r\n for (let i = 0; i < 5; i++) {\r\n for (let j = 24; j >= 0; j -= 8) {\r\n digest[n] = (this.chain_[i] >> j) & 255;\r\n ++n;\r\n }\r\n }\r\n return digest;\r\n }\r\n}\n\n/**\r\n * Helper to make a Subscribe function (just like Promise helps make a\r\n * Thenable).\r\n *\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\nfunction createSubscribe(executor, onNoObservers) {\r\n const proxy = new ObserverProxy(executor, onNoObservers);\r\n return proxy.subscribe.bind(proxy);\r\n}\r\n/**\r\n * Implement fan-out for any number of Observers attached via a subscribe\r\n * function.\r\n */\r\nclass ObserverProxy {\r\n /**\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\n constructor(executor, onNoObservers) {\r\n this.observers = [];\r\n this.unsubscribes = [];\r\n this.observerCount = 0;\r\n // Micro-task scheduling by calling task.then().\r\n this.task = Promise.resolve();\r\n this.finalized = false;\r\n this.onNoObservers = onNoObservers;\r\n // Call the executor asynchronously so subscribers that are called\r\n // synchronously after the creation of the subscribe function\r\n // can still receive the very first value generated in the executor.\r\n this.task\r\n .then(() => {\r\n executor(this);\r\n })\r\n .catch(e => {\r\n this.error(e);\r\n });\r\n }\r\n next(value) {\r\n this.forEachObserver((observer) => {\r\n observer.next(value);\r\n });\r\n }\r\n error(error) {\r\n this.forEachObserver((observer) => {\r\n observer.error(error);\r\n });\r\n this.close(error);\r\n }\r\n complete() {\r\n this.forEachObserver((observer) => {\r\n observer.complete();\r\n });\r\n this.close();\r\n }\r\n /**\r\n * Subscribe function that can be used to add an Observer to the fan-out list.\r\n *\r\n * - We require that no event is sent to a subscriber sychronously to their\r\n * call to subscribe().\r\n */\r\n subscribe(nextOrObserver, error, complete) {\r\n let observer;\r\n if (nextOrObserver === undefined &&\r\n error === undefined &&\r\n complete === undefined) {\r\n throw new Error('Missing Observer.');\r\n }\r\n // Assemble an Observer object when passed as callback functions.\r\n if (implementsAnyMethods(nextOrObserver, [\r\n 'next',\r\n 'error',\r\n 'complete'\r\n ])) {\r\n observer = nextOrObserver;\r\n }\r\n else {\r\n observer = {\r\n next: nextOrObserver,\r\n error,\r\n complete\r\n };\r\n }\r\n if (observer.next === undefined) {\r\n observer.next = noop;\r\n }\r\n if (observer.error === undefined) {\r\n observer.error = noop;\r\n }\r\n if (observer.complete === undefined) {\r\n observer.complete = noop;\r\n }\r\n const unsub = this.unsubscribeOne.bind(this, this.observers.length);\r\n // Attempt to subscribe to a terminated Observable - we\r\n // just respond to the Observer with the final error or complete\r\n // event.\r\n if (this.finalized) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n try {\r\n if (this.finalError) {\r\n observer.error(this.finalError);\r\n }\r\n else {\r\n observer.complete();\r\n }\r\n }\r\n catch (e) {\r\n // nothing\r\n }\r\n return;\r\n });\r\n }\r\n this.observers.push(observer);\r\n return unsub;\r\n }\r\n // Unsubscribe is synchronous - we guarantee that no events are sent to\r\n // any unsubscribed Observer.\r\n unsubscribeOne(i) {\r\n if (this.observers === undefined || this.observers[i] === undefined) {\r\n return;\r\n }\r\n delete this.observers[i];\r\n this.observerCount -= 1;\r\n if (this.observerCount === 0 && this.onNoObservers !== undefined) {\r\n this.onNoObservers(this);\r\n }\r\n }\r\n forEachObserver(fn) {\r\n if (this.finalized) {\r\n // Already closed by previous event....just eat the additional values.\r\n return;\r\n }\r\n // Since sendOne calls asynchronously - there is no chance that\r\n // this.observers will become undefined.\r\n for (let i = 0; i < this.observers.length; i++) {\r\n this.sendOne(i, fn);\r\n }\r\n }\r\n // Call the Observer via one of it's callback function. We are careful to\r\n // confirm that the observe has not been unsubscribed since this asynchronous\r\n // function had been queued.\r\n sendOne(i, fn) {\r\n // Execute the callback asynchronously\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n if (this.observers !== undefined && this.observers[i] !== undefined) {\r\n try {\r\n fn(this.observers[i]);\r\n }\r\n catch (e) {\r\n // Ignore exceptions raised in Observers or missing methods of an\r\n // Observer.\r\n // Log error to console. b/31404806\r\n if (typeof console !== 'undefined' && console.error) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n close(err) {\r\n if (this.finalized) {\r\n return;\r\n }\r\n this.finalized = true;\r\n if (err !== undefined) {\r\n this.finalError = err;\r\n }\r\n // Proxy is no longer needed - garbage collect references\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n this.observers = undefined;\r\n this.onNoObservers = undefined;\r\n });\r\n }\r\n}\r\n/** Turn synchronous function into one called asynchronously. */\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction async(fn, onError) {\r\n return (...args) => {\r\n Promise.resolve(true)\r\n .then(() => {\r\n fn(...args);\r\n })\r\n .catch((error) => {\r\n if (onError) {\r\n onError(error);\r\n }\r\n });\r\n };\r\n}\r\n/**\r\n * Return true if the object passed in implements any of the named methods.\r\n */\r\nfunction implementsAnyMethods(obj, methods) {\r\n if (typeof obj !== 'object' || obj === null) {\r\n return false;\r\n }\r\n for (const method of methods) {\r\n if (method in obj && typeof obj[method] === 'function') {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction noop() {\r\n // do nothing\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Check to make sure the appropriate number of arguments are provided for a public function.\r\n * Throws an error if it fails.\r\n *\r\n * @param fnName The function name\r\n * @param minCount The minimum number of arguments to allow for the function call\r\n * @param maxCount The maximum number of argument to allow for the function call\r\n * @param argCount The actual number of arguments provided.\r\n */\r\nconst validateArgCount = function (fnName, minCount, maxCount, argCount) {\r\n let argError;\r\n if (argCount < minCount) {\r\n argError = 'at least ' + minCount;\r\n }\r\n else if (argCount > maxCount) {\r\n argError = maxCount === 0 ? 'none' : 'no more than ' + maxCount;\r\n }\r\n if (argError) {\r\n const error = fnName +\r\n ' failed: Was called with ' +\r\n argCount +\r\n (argCount === 1 ? ' argument.' : ' arguments.') +\r\n ' Expects ' +\r\n argError +\r\n '.';\r\n throw new Error(error);\r\n }\r\n};\r\n/**\r\n * Generates a string to prefix an error message about failed argument validation\r\n *\r\n * @param fnName The function name\r\n * @param argName The name of the argument\r\n * @return The prefix to add to the error thrown for validation.\r\n */\r\nfunction errorPrefix(fnName, argName) {\r\n return `${fnName} failed: ${argName} argument `;\r\n}\r\n/**\r\n * @param fnName\r\n * @param argumentNumber\r\n * @param namespace\r\n * @param optional\r\n */\r\nfunction validateNamespace(fnName, namespace, optional) {\r\n if (optional && !namespace) {\r\n return;\r\n }\r\n if (typeof namespace !== 'string') {\r\n //TODO: I should do more validation here. We only allow certain chars in namespaces.\r\n throw new Error(errorPrefix(fnName, 'namespace') + 'must be a valid firebase namespace.');\r\n }\r\n}\r\nfunction validateCallback(fnName, argumentName, \r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\ncallback, optional) {\r\n if (optional && !callback) {\r\n return;\r\n }\r\n if (typeof callback !== 'function') {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid function.');\r\n }\r\n}\r\nfunction validateContextObject(fnName, argumentName, context, optional) {\r\n if (optional && !context) {\r\n return;\r\n }\r\n if (typeof context !== 'object' || context === null) {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid context object.');\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Code originally came from goog.crypt.stringToUtf8ByteArray, but for some reason they\r\n// automatically replaced '\\r\\n' with '\\n', and they didn't handle surrogate pairs,\r\n// so it's been modified.\r\n// Note that not all Unicode characters appear as single characters in JavaScript strings.\r\n// fromCharCode returns the UTF-16 encoding of a character - so some Unicode characters\r\n// use 2 characters in Javascript. All 4-byte UTF-8 characters begin with a first\r\n// character in the range 0xD800 - 0xDBFF (the first character of a so-called surrogate\r\n// pair).\r\n// See http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.3\r\n/**\r\n * @param {string} str\r\n * @return {Array}\r\n */\r\nconst stringToByteArray = function (str) {\r\n const out = [];\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n let c = str.charCodeAt(i);\r\n // Is this the lead surrogate in a surrogate pair?\r\n if (c >= 0xd800 && c <= 0xdbff) {\r\n const high = c - 0xd800; // the high 10 bits.\r\n i++;\r\n assert(i < str.length, 'Surrogate pair missing trail surrogate.');\r\n const low = str.charCodeAt(i) - 0xdc00; // the low 10 bits.\r\n c = 0x10000 + (high << 10) + low;\r\n }\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if (c < 65536) {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Calculate length without actually converting; useful for doing cheaper validation.\r\n * @param {string} str\r\n * @return {number}\r\n */\r\nconst stringLength = function (str) {\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n const c = str.charCodeAt(i);\r\n if (c < 128) {\r\n p++;\r\n }\r\n else if (c < 2048) {\r\n p += 2;\r\n }\r\n else if (c >= 0xd800 && c <= 0xdbff) {\r\n // Lead surrogate of a surrogate pair. The pair together will take 4 bytes to represent.\r\n p += 4;\r\n i++; // skip trail surrogate.\r\n }\r\n else {\r\n p += 3;\r\n }\r\n }\r\n return p;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The amount of milliseconds to exponentially increase.\r\n */\r\nconst DEFAULT_INTERVAL_MILLIS = 1000;\r\n/**\r\n * The factor to backoff by.\r\n * Should be a number greater than 1.\r\n */\r\nconst DEFAULT_BACKOFF_FACTOR = 2;\r\n/**\r\n * The maximum milliseconds to increase to.\r\n *\r\n * <p>Visible for testing\r\n */\r\nconst MAX_VALUE_MILLIS = 4 * 60 * 60 * 1000; // Four hours, like iOS and Android.\r\n/**\r\n * The percentage of backoff time to randomize by.\r\n * See\r\n * http://go/safe-client-behavior#step-1-determine-the-appropriate-retry-interval-to-handle-spike-traffic\r\n * for context.\r\n *\r\n * <p>Visible for testing\r\n */\r\nconst RANDOM_FACTOR = 0.5;\r\n/**\r\n * Based on the backoff method from\r\n * https://github.com/google/closure-library/blob/master/closure/goog/math/exponentialbackoff.js.\r\n * Extracted here so we don't need to pass metadata and a stateful ExponentialBackoff object around.\r\n */\r\nfunction calculateBackoffMillis(backoffCount, intervalMillis = DEFAULT_INTERVAL_MILLIS, backoffFactor = DEFAULT_BACKOFF_FACTOR) {\r\n // Calculates an exponentially increasing value.\r\n // Deviation: calculates value from count and a constant interval, so we only need to save value\r\n // and count to restore state.\r\n const currBaseValue = intervalMillis * Math.pow(backoffFactor, backoffCount);\r\n // A random \"fuzz\" to avoid waves of retries.\r\n // Deviation: randomFactor is required.\r\n const randomWait = Math.round(\r\n // A fraction of the backoff value to add/subtract.\r\n // Deviation: changes multiplication order to improve readability.\r\n RANDOM_FACTOR *\r\n currBaseValue *\r\n // A random float (rounded to int by Math.round above) in the range [-1, 1]. Determines\r\n // if we add or subtract.\r\n (Math.random() - 0.5) *\r\n 2);\r\n // Limits backoff to max to avoid effectively permanent backoff.\r\n return Math.min(MAX_VALUE_MILLIS, currBaseValue + randomWait);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provide English ordinal letters after a number\r\n */\r\nfunction ordinal(i) {\r\n if (!Number.isFinite(i)) {\r\n return `${i}`;\r\n }\r\n return i + indicator(i);\r\n}\r\nfunction indicator(i) {\r\n i = Math.abs(i);\r\n const cent = i % 100;\r\n if (cent >= 10 && cent <= 20) {\r\n return 'th';\r\n }\r\n const dec = i % 10;\r\n if (dec === 1) {\r\n return 'st';\r\n }\r\n if (dec === 2) {\r\n return 'nd';\r\n }\r\n if (dec === 3) {\r\n return 'rd';\r\n }\r\n return 'th';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getModularInstance(service) {\r\n if (service && service._delegate) {\r\n return service._delegate;\r\n }\r\n else {\r\n return service;\r\n }\r\n}\n\nexport { CONSTANTS, Deferred, ErrorFactory, FirebaseError, MAX_VALUE_MILLIS, RANDOM_FACTOR, Sha1, areCookiesEnabled, assert, assertionError, async, base64, base64Decode, base64Encode, base64urlEncodeWithoutPadding, calculateBackoffMillis, contains, createMockUserToken, createSubscribe, decode, deepCopy, deepEqual, deepExtend, errorPrefix, extractQuerystring, getGlobal, getModularInstance, getUA, isAdmin, isBrowser, isBrowserExtension, isElectron, isEmpty, isIE, isIndexedDBAvailable, isMobileCordova, isNode, isNodeSdk, isReactNative, isSafari, isUWP, isValidFormat, isValidTimestamp, issuedAtTime, jsonEval, map, ordinal, querystring, querystringDecode, safeGet, stringLength, stringToByteArray, stringify, validateArgCount, validateCallback, validateContextObject, validateIndexedDBOpenable, validateNamespace };\n//# sourceMappingURL=index.esm2017.js.map\n","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n/**\r\n * This is an internal property used to cause internal (reporting) requests to be ignored from reporting\r\n * additional telemetry, to handle polyfil implementations ALL urls used with a disabled request will\r\n * also be ignored for future requests even when this property is not provided.\r\n * Tagging as Ignore as this is an internal value and is not expected to be used outside of the SDK\r\n * @ignore\r\n */\r\nexport var DisabledPropertyName = \"Microsoft_ApplicationInsights_BypassAjaxInstrumentation\";\r\nexport var SampleRate = \"sampleRate\";\r\nexport var ProcessLegacy = \"ProcessLegacy\";\r\nexport var HttpMethod = \"http.method\";\r\nexport var DEFAULT_BREEZE_ENDPOINT = \"https://dc.services.visualstudio.com\";\r\nexport var DEFAULT_BREEZE_PATH = \"/v2/track\";\r\nexport var strNotSpecified = \"not_specified\";\r\nexport var strIkey = \"iKey\";\r\n//# sourceMappingURL=Constants.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { isFunction, getDocument } from \"@microsoft/applicationinsights-core-js\";\r\nexport function createDomEvent(eventName) {\r\n var event = null;\r\n if (isFunction(Event)) { // Use Event constructor when available\r\n event = new Event(eventName);\r\n }\r\n else { // Event has no constructor in IE\r\n var doc = getDocument();\r\n if (doc && doc.createEvent) {\r\n event = doc.createEvent(\"Event\");\r\n event.initEvent(eventName, true, true);\r\n }\r\n }\r\n return event;\r\n}\r\n//# sourceMappingURL=DomHelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createEnumStyle } from \"@microsoft/applicationinsights-core-js\";\r\nexport var StorageType = createEnumStyle({\r\n LocalStorage: 0 /* eStorageType.LocalStorage */,\r\n SessionStorage: 1 /* eStorageType.SessionStorage */\r\n});\r\nexport var DistributedTracingModes = createEnumStyle({\r\n AI: 0 /* eDistributedTracingModes.AI */,\r\n AI_AND_W3C: 1 /* eDistributedTracingModes.AI_AND_W3C */,\r\n W3C: 2 /* eDistributedTracingModes.W3C */\r\n});\r\n//# sourceMappingURL=Enums.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar strEmpty = \"\";\r\nexport function stringToBoolOrDefault(str, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n if (str === undefined || str === null) {\r\n return defaultValue;\r\n }\r\n return str.toString()[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === \"true\";\r\n}\r\n/**\r\n * Convert ms to c# time span format\r\n */\r\nexport function msToTimeSpan(totalms) {\r\n if (isNaN(totalms) || totalms < 0) {\r\n totalms = 0;\r\n }\r\n totalms = Math.round(totalms);\r\n var ms = strEmpty + totalms % 1000;\r\n var sec = strEmpty + Math.floor(totalms / 1000) % 60;\r\n var min = strEmpty + Math.floor(totalms / (1000 * 60)) % 60;\r\n var hour = strEmpty + Math.floor(totalms / (1000 * 60 * 60)) % 24;\r\n var days = Math.floor(totalms / (1000 * 60 * 60 * 24));\r\n ms = ms[_DYN_LENGTH /* @min:%2elength */] === 1 ? \"00\" + ms : ms[_DYN_LENGTH /* @min:%2elength */] === 2 ? \"0\" + ms : ms;\r\n sec = sec[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + sec : sec;\r\n min = min[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + min : min;\r\n hour = hour[_DYN_LENGTH /* @min:%2elength */] < 2 ? \"0\" + hour : hour;\r\n return (days > 0 ? days + \".\" : strEmpty) + hour + \":\" + min + \":\" + sec + \".\" + ms;\r\n}\r\nexport function getExtensionByName(extensions, identifier) {\r\n var extension = null;\r\n arrForEach(extensions, function (value) {\r\n if (value.identifier === identifier) {\r\n extension = value;\r\n return -1;\r\n }\r\n });\r\n return extension;\r\n}\r\nexport function isCrossOriginError(message, url, lineNumber, columnNumber, error) {\r\n return !error && isString(message) && (message === \"Script error.\" || message === \"Script error\");\r\n}\r\n//# sourceMappingURL=HelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createValueMap } from \"@microsoft/applicationinsights-core-js\";\r\nexport var RequestHeaders = createValueMap({\r\n requestContextHeader: [0 /* eRequestHeaders.requestContextHeader */, \"Request-Context\"],\r\n requestContextTargetKey: [1 /* eRequestHeaders.requestContextTargetKey */, \"appId\"],\r\n requestContextAppIdFormat: [2 /* eRequestHeaders.requestContextAppIdFormat */, \"appId=cid-v1:\"],\r\n requestIdHeader: [3 /* eRequestHeaders.requestIdHeader */, \"Request-Id\"],\r\n traceParentHeader: [4 /* eRequestHeaders.traceParentHeader */, \"traceparent\"],\r\n traceStateHeader: [5 /* eRequestHeaders.traceStateHeader */, \"tracestate\"],\r\n sdkContextHeader: [6 /* eRequestHeaders.sdkContextHeader */, \"Sdk-Context\"],\r\n sdkContextHeaderAppIdRequest: [7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */, \"appId\"],\r\n requestContextHeaderLowerCase: [8 /* eRequestHeaders.requestContextHeaderLowerCase */, \"request-context\"]\r\n});\r\n//# sourceMappingURL=RequestResponseHeaders.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _throwInternal, dumpObj, getExceptionName, getGlobal, getGlobalInst, isNullOrUndefined, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { StorageType } from \"./Enums\";\r\nimport { _DYN_REMOVE_ITEM, _DYN_TO_STRING } from \"./__DynamicConstants\";\r\nvar _canUseLocalStorage = undefined;\r\nvar _canUseSessionStorage = undefined;\r\n/**\r\n * Gets the localStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getLocalStorageObject() {\r\n if (utlCanUseLocalStorage()) {\r\n return _getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Tests storage object (localStorage or sessionStorage) to verify that it is usable\r\n * More details here: https://mathiasbynens.be/notes/localstorage-pattern\r\n * @param storageType Type of storage\r\n * @return {Storage} Returns storage object verified that it is usable\r\n */\r\nfunction _getVerifiedStorageObject(storageType) {\r\n try {\r\n if (isNullOrUndefined(getGlobal())) {\r\n return null;\r\n }\r\n var uid = (new Date)[_DYN_TO_STRING /* @min:%2etoString */]();\r\n var storage = getGlobalInst(storageType === StorageType.LocalStorage ? \"localStorage\" : \"sessionStorage\");\r\n storage.setItem(uid, uid);\r\n var fail = storage.getItem(uid) !== uid;\r\n storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](uid);\r\n if (!fail) {\r\n return storage;\r\n }\r\n }\r\n catch (exception) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return null;\r\n}\r\n/**\r\n * Gets the sessionStorage object if available\r\n * @return {Storage} - Returns the storage object if available else returns null\r\n */\r\nfunction _getSessionStorageObject() {\r\n if (utlCanUseSessionStorage()) {\r\n return _getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Disables the global SDK usage of local or session storage if available\r\n */\r\nexport function utlDisableStorage() {\r\n _canUseLocalStorage = false;\r\n _canUseSessionStorage = false;\r\n}\r\n/**\r\n * Re-enables the global SDK usage of local or session storage if available\r\n */\r\nexport function utlEnableStorage() {\r\n _canUseLocalStorage = utlCanUseLocalStorage(true);\r\n _canUseSessionStorage = utlCanUseSessionStorage(true);\r\n}\r\n/**\r\n * Returns whether LocalStorage can be used, if the reset parameter is passed a true this will override\r\n * any previous disable calls.\r\n * @param reset - Should the usage be reset and determined only based on whether LocalStorage is available\r\n */\r\nexport function utlCanUseLocalStorage(reset) {\r\n if (reset || _canUseLocalStorage === undefined) {\r\n _canUseLocalStorage = !!_getVerifiedStorageObject(StorageType.LocalStorage);\r\n }\r\n return _canUseLocalStorage;\r\n}\r\nexport function utlGetLocalStorage(logger, name) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 1 /* _eInternalMessageId.BrowserCannotReadLocalStorage */, \"Browser failed read of local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return null;\r\n}\r\nexport function utlSetLocalStorage(logger, name, data) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 3 /* _eInternalMessageId.BrowserCannotWriteLocalStorage */, \"Browser failed write to local storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlRemoveStorage(logger, name) {\r\n var storage = _getLocalStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseLocalStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 5 /* _eInternalMessageId.BrowserFailedRemovalFromLocalStorage */, \"Browser failed removal of local storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlCanUseSessionStorage(reset) {\r\n if (reset || _canUseSessionStorage === undefined) {\r\n _canUseSessionStorage = !!_getVerifiedStorageObject(StorageType.SessionStorage);\r\n }\r\n return _canUseSessionStorage;\r\n}\r\nexport function utlGetSessionStorageKeys() {\r\n var keys = [];\r\n if (utlCanUseSessionStorage()) {\r\n objForEachKey(getGlobalInst(\"sessionStorage\"), function (key) {\r\n keys.push(key);\r\n });\r\n }\r\n return keys;\r\n}\r\nexport function utlGetSessionStorage(logger, name) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n return storage.getItem(name);\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 2 /* _eInternalMessageId.BrowserCannotReadSessionStorage */, \"Browser failed read of session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return null;\r\n}\r\nexport function utlSetSessionStorage(logger, name, data) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage.setItem(name, data);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 4 /* _eInternalMessageId.BrowserCannotWriteSessionStorage */, \"Browser failed write to session storage. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\nexport function utlRemoveSessionStorage(logger, name) {\r\n var storage = _getSessionStorageObject();\r\n if (storage !== null) {\r\n try {\r\n storage[_DYN_REMOVE_ITEM /* @min:%2eremoveItem */](name);\r\n return true;\r\n }\r\n catch (e) {\r\n _canUseSessionStorage = false;\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 6 /* _eInternalMessageId.BrowserFailedRemovalFromSessionStorage */, \"Browser failed removal of session storage item. \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=StorageHelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar _a;\r\nimport { _throwInternal, getJSON, hasJSON, isObject, objForEachKey, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_SANITIZE_EXCEPTION, _DYN_SANITIZE_KEY_AND_ADD2, _DYN_SANITIZE_MEASUREMENT3, _DYN_SANITIZE_PROPERTIES, _DYN_STRINGIFY, _DYN_SUBSTRING, _DYN_TO_STRING } from \"../../__DynamicConstants\";\r\nexport function dataSanitizeKeyAndAddUniqueness(logger, key, map) {\r\n var origLength = key[_DYN_LENGTH /* @min:%2elength */];\r\n var field = dataSanitizeKey(logger, key);\r\n // validation truncated the length. We need to add uniqueness\r\n if (field[_DYN_LENGTH /* @min:%2elength */] !== origLength) {\r\n var i = 0;\r\n var uniqueField = field;\r\n while (map[uniqueField] !== undefined) {\r\n i++;\r\n uniqueField = field[_DYN_SUBSTRING /* @min:%2esubstring */](0, 150 /* DataSanitizerValues.MAX_NAME_LENGTH */ - 3) + dsPadNumber(i);\r\n }\r\n field = uniqueField;\r\n }\r\n return field;\r\n}\r\nexport function dataSanitizeKey(logger, name) {\r\n var nameTrunc;\r\n if (name) {\r\n // Remove any leading or trailing whitespace\r\n name = strTrim(name[_DYN_TO_STRING /* @min:%2etoString */]());\r\n // truncate the string to 150 chars\r\n if (name[_DYN_LENGTH /* @min:%2elength */] > 150 /* DataSanitizerValues.MAX_NAME_LENGTH */) {\r\n nameTrunc = name[_DYN_SUBSTRING /* @min:%2esubstring */](0, 150 /* DataSanitizerValues.MAX_NAME_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 57 /* _eInternalMessageId.NameTooLong */, \"name is too long. It has been truncated to \" + 150 /* DataSanitizerValues.MAX_NAME_LENGTH */ + \" characters.\", { name: name }, true);\r\n }\r\n }\r\n return nameTrunc || name;\r\n}\r\nexport function dataSanitizeString(logger, value, maxLength) {\r\n if (maxLength === void 0) { maxLength = 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */; }\r\n var valueTrunc;\r\n if (value) {\r\n maxLength = maxLength ? maxLength : 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */; // in case default parameters dont work\r\n value = strTrim(value);\r\n if (value.toString()[_DYN_LENGTH /* @min:%2elength */] > maxLength) {\r\n valueTrunc = value[_DYN_TO_STRING /* @min:%2etoString */]()[_DYN_SUBSTRING /* @min:%2esubstring */](0, maxLength);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 61 /* _eInternalMessageId.StringValueTooLong */, \"string value is too long. It has been truncated to \" + maxLength + \" characters.\", { value: value }, true);\r\n }\r\n }\r\n return valueTrunc || value;\r\n}\r\nexport function dataSanitizeUrl(logger, url) {\r\n return dataSanitizeInput(logger, url, 2048 /* DataSanitizerValues.MAX_URL_LENGTH */, 66 /* _eInternalMessageId.UrlTooLong */);\r\n}\r\nexport function dataSanitizeMessage(logger, message) {\r\n var messageTrunc;\r\n if (message) {\r\n if (message[_DYN_LENGTH /* @min:%2elength */] > 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */) {\r\n messageTrunc = message[_DYN_SUBSTRING /* @min:%2esubstring */](0, 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 56 /* _eInternalMessageId.MessageTruncated */, \"message is too long, it has been truncated to \" + 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */ + \" characters.\", { message: message }, true);\r\n }\r\n }\r\n return messageTrunc || message;\r\n}\r\nexport function dataSanitizeException(logger, exception) {\r\n var exceptionTrunc;\r\n if (exception) {\r\n // Make surte its a string\r\n var value = \"\" + exception;\r\n if (value[_DYN_LENGTH /* @min:%2elength */] > 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */) {\r\n exceptionTrunc = value[_DYN_SUBSTRING /* @min:%2esubstring */](0, 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 52 /* _eInternalMessageId.ExceptionTruncated */, \"exception is too long, it has been truncated to \" + 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */ + \" characters.\", { exception: exception }, true);\r\n }\r\n }\r\n return exceptionTrunc || exception;\r\n}\r\nexport function dataSanitizeProperties(logger, properties) {\r\n if (properties) {\r\n var tempProps_1 = {};\r\n objForEachKey(properties, function (prop, value) {\r\n if (isObject(value) && hasJSON()) {\r\n // Stringify any part C properties\r\n try {\r\n value = getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 49 /* _eInternalMessageId.CannotSerializeObjectNonSerializable */, \"custom property is not valid\", { exception: e }, true);\r\n }\r\n }\r\n value = dataSanitizeString(logger, value, 8192 /* DataSanitizerValues.MAX_PROPERTY_LENGTH */);\r\n prop = dataSanitizeKeyAndAddUniqueness(logger, prop, tempProps_1);\r\n tempProps_1[prop] = value;\r\n });\r\n properties = tempProps_1;\r\n }\r\n return properties;\r\n}\r\nexport function dataSanitizeMeasurements(logger, measurements) {\r\n if (measurements) {\r\n var tempMeasurements_1 = {};\r\n objForEachKey(measurements, function (measure, value) {\r\n measure = dataSanitizeKeyAndAddUniqueness(logger, measure, tempMeasurements_1);\r\n tempMeasurements_1[measure] = value;\r\n });\r\n measurements = tempMeasurements_1;\r\n }\r\n return measurements;\r\n}\r\nexport function dataSanitizeId(logger, id) {\r\n return id ? dataSanitizeInput(logger, id, 128 /* DataSanitizerValues.MAX_ID_LENGTH */, 69 /* _eInternalMessageId.IdTooLong */)[_DYN_TO_STRING /* @min:%2etoString */]() : id;\r\n}\r\nexport function dataSanitizeInput(logger, input, maxLength, _msgId) {\r\n var inputTrunc;\r\n if (input) {\r\n input = strTrim(input);\r\n if (input[_DYN_LENGTH /* @min:%2elength */] > maxLength) {\r\n inputTrunc = input[_DYN_SUBSTRING /* @min:%2esubstring */](0, maxLength);\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, _msgId, \"input is too long, it has been truncated to \" + maxLength + \" characters.\", { data: input }, true);\r\n }\r\n }\r\n return inputTrunc || input;\r\n}\r\nexport function dsPadNumber(num) {\r\n var s = \"00\" + num;\r\n return s.substr(s[_DYN_LENGTH /* @min:%2elength */] - 3);\r\n}\r\n/**\r\n * Provides the DataSanitizer functions within the previous namespace.\r\n */\r\nexport var DataSanitizer = (_a = {\r\n MAX_NAME_LENGTH: 150 /* DataSanitizerValues.MAX_NAME_LENGTH */,\r\n MAX_ID_LENGTH: 128 /* DataSanitizerValues.MAX_ID_LENGTH */,\r\n MAX_PROPERTY_LENGTH: 8192 /* DataSanitizerValues.MAX_PROPERTY_LENGTH */,\r\n MAX_STRING_LENGTH: 1024 /* DataSanitizerValues.MAX_STRING_LENGTH */,\r\n MAX_URL_LENGTH: 2048 /* DataSanitizerValues.MAX_URL_LENGTH */,\r\n MAX_MESSAGE_LENGTH: 32768 /* DataSanitizerValues.MAX_MESSAGE_LENGTH */,\r\n MAX_EXCEPTION_LENGTH: 32768 /* DataSanitizerValues.MAX_EXCEPTION_LENGTH */\r\n },\r\n _a[_DYN_SANITIZE_KEY_AND_ADD2 /* @min:sanitizeKeyAndAddUniqueness */] = dataSanitizeKeyAndAddUniqueness,\r\n _a.sanitizeKey = dataSanitizeKey,\r\n _a.sanitizeString = dataSanitizeString,\r\n _a.sanitizeUrl = dataSanitizeUrl,\r\n _a.sanitizeMessage = dataSanitizeMessage,\r\n _a[_DYN_SANITIZE_EXCEPTION /* @min:sanitizeException */] = dataSanitizeException,\r\n _a[_DYN_SANITIZE_PROPERTIES /* @min:sanitizeProperties */] = dataSanitizeProperties,\r\n _a[_DYN_SANITIZE_MEASUREMENT3 /* @min:sanitizeMeasurements */] = dataSanitizeMeasurements,\r\n _a.sanitizeId = dataSanitizeId,\r\n _a.sanitizeInput = dataSanitizeInput,\r\n _a.padNumber = dsPadNumber,\r\n _a.trim = strTrim,\r\n _a);\r\n//# sourceMappingURL=DataSanitizer.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { getDocument, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_PATHNAME, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar _document = getDocument() || {};\r\nvar _htmlAnchorIdx = 0;\r\n// Use an array of temporary values as it's possible for multiple calls to parseUrl() will be called with different URLs\r\n// Using a cache size of 5 for now as it current depth usage is at least 2, so adding a minor buffer to handle future updates\r\nvar _htmlAnchorElement = [null, null, null, null, null];\r\nexport function urlParseUrl(url) {\r\n var anchorIdx = _htmlAnchorIdx;\r\n var anchorCache = _htmlAnchorElement;\r\n var tempAnchor = anchorCache[anchorIdx];\r\n if (!_document.createElement) {\r\n // Always create the temp instance if createElement is not available\r\n tempAnchor = { host: urlParseHost(url, true) };\r\n }\r\n else if (!anchorCache[anchorIdx]) {\r\n // Create and cache the unattached anchor instance\r\n tempAnchor = anchorCache[anchorIdx] = _document.createElement(\"a\");\r\n }\r\n tempAnchor.href = url;\r\n // Move the cache index forward\r\n anchorIdx++;\r\n if (anchorIdx >= anchorCache[_DYN_LENGTH /* @min:%2elength */]) {\r\n anchorIdx = 0;\r\n }\r\n _htmlAnchorIdx = anchorIdx;\r\n return tempAnchor;\r\n}\r\nexport function urlGetAbsoluteUrl(url) {\r\n var result;\r\n var a = urlParseUrl(url);\r\n if (a) {\r\n result = a.href;\r\n }\r\n return result;\r\n}\r\nexport function urlGetPathName(url) {\r\n var result;\r\n var a = urlParseUrl(url);\r\n if (a) {\r\n result = a[_DYN_PATHNAME /* @min:%2epathname */];\r\n }\r\n return result;\r\n}\r\nexport function urlGetCompleteUrl(method, absoluteUrl) {\r\n if (method) {\r\n return method.toUpperCase() + \" \" + absoluteUrl;\r\n }\r\n return absoluteUrl;\r\n}\r\n// Fallback method to grab host from url if document.createElement method is not available\r\nexport function urlParseHost(url, inclPort) {\r\n var fullHost = urlParseFullHost(url, inclPort) || \"\";\r\n if (fullHost) {\r\n var match = fullHost.match(/(www\\d{0,5}\\.)?([^\\/:]{1,256})(:\\d{1,20})?/i);\r\n if (match != null && match[_DYN_LENGTH /* @min:%2elength */] > 3 && isString(match[2]) && match[2][_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n return match[2] + (match[3] || \"\");\r\n }\r\n }\r\n return fullHost;\r\n}\r\nexport function urlParseFullHost(url, inclPort) {\r\n var result = null;\r\n if (url) {\r\n var match = url.match(/(\\w{1,150}):\\/\\/([^\\/:]{1,256})(:\\d{1,20})?/i);\r\n if (match != null && match[_DYN_LENGTH /* @min:%2elength */] > 2 && isString(match[2]) && match[2][_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n result = match[2] || \"\";\r\n if (inclPort && match[_DYN_LENGTH /* @min:%2elength */] > 2) {\r\n var protocol = (match[1] || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n var port = match[3] || \"\";\r\n // IE includes the standard port so pass it off if it's the same as the protocol\r\n if (protocol === \"http\" && port === \":80\") {\r\n port = \"\";\r\n }\r\n else if (protocol === \"https\" && port === \":443\") {\r\n port = \"\";\r\n }\r\n result += port;\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n//# sourceMappingURL=UrlHelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrForEach, arrIndexOf, attachEvent, canUseCookies as coreCanUseCookies, dateNow, deleteCookie as coreDeleteCookie, disableCookies as coreDisableCookies, dumpObj, generateW3CId, getCookie as coreGetCookie, getExceptionName as coreGetExceptionName, getIEVersion, getPerformance, isArray, isBeaconsSupported, isDate, isError, isNullOrUndefined, isValidSpanId, isValidTraceId, newId, random32, setCookie as coreSetCookie, strTrim, toISOString, uaDisallowsSameSiteNone } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, strNotSpecified } from \"./Constants\";\r\nimport { createDomEvent } from \"./DomHelperFuncs\";\r\nimport { getExtensionByName, isCrossOriginError, msToTimeSpan, stringToBoolOrDefault } from \"./HelperFuncs\";\r\nimport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nimport { utlCanUseLocalStorage, utlCanUseSessionStorage, utlDisableStorage, utlGetLocalStorage, utlGetSessionStorage, utlGetSessionStorageKeys, utlRemoveSessionStorage, utlRemoveStorage, utlSetLocalStorage, utlSetSessionStorage } from \"./StorageHelperFuncs\";\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { urlGetAbsoluteUrl, urlGetCompleteUrl, urlGetPathName, urlParseFullHost, urlParseHost, urlParseUrl } from \"./UrlHelperFuncs\";\r\nimport { _DYN_CORRELATION_HEADER_E0, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_NAME, _DYN_PATHNAME, _DYN_SPLIT, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\n// listing only non-geo specific locations\r\nvar _internalEndpoints = [\r\n DEFAULT_BREEZE_ENDPOINT + DEFAULT_BREEZE_PATH,\r\n \"https://breeze.aimon.applicationinsights.io\" + DEFAULT_BREEZE_PATH,\r\n \"https://dc-int.services.visualstudio.com\" + DEFAULT_BREEZE_PATH\r\n];\r\nexport function isInternalApplicationInsightsEndpoint(endpointUrl) {\r\n return arrIndexOf(_internalEndpoints, endpointUrl[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()) !== -1;\r\n}\r\nexport var Util = {\r\n NotSpecified: strNotSpecified,\r\n createDomEvent: createDomEvent,\r\n disableStorage: utlDisableStorage,\r\n isInternalApplicationInsightsEndpoint: isInternalApplicationInsightsEndpoint,\r\n canUseLocalStorage: utlCanUseLocalStorage,\r\n getStorage: utlGetLocalStorage,\r\n setStorage: utlSetLocalStorage,\r\n removeStorage: utlRemoveStorage,\r\n canUseSessionStorage: utlCanUseSessionStorage,\r\n getSessionStorageKeys: utlGetSessionStorageKeys,\r\n getSessionStorage: utlGetSessionStorage,\r\n setSessionStorage: utlSetSessionStorage,\r\n removeSessionStorage: utlRemoveSessionStorage,\r\n disableCookies: coreDisableCookies,\r\n canUseCookies: coreCanUseCookies,\r\n disallowsSameSiteNone: uaDisallowsSameSiteNone,\r\n setCookie: coreSetCookie,\r\n stringToBoolOrDefault: stringToBoolOrDefault,\r\n getCookie: coreGetCookie,\r\n deleteCookie: coreDeleteCookie,\r\n trim: strTrim,\r\n newId: newId,\r\n random32: function () {\r\n return random32(true);\r\n },\r\n generateW3CId: generateW3CId,\r\n isArray: isArray,\r\n isError: isError,\r\n isDate: isDate,\r\n toISOStringForIE8: toISOString,\r\n getIEVersion: getIEVersion,\r\n msToTimeSpan: msToTimeSpan,\r\n isCrossOriginError: isCrossOriginError,\r\n dump: dumpObj,\r\n getExceptionName: coreGetExceptionName,\r\n addEventHandler: attachEvent,\r\n IsBeaconApiSupported: isBeaconsSupported,\r\n getExtension: getExtensionByName\r\n};\r\nexport var UrlHelper = {\r\n parseUrl: urlParseUrl,\r\n getAbsoluteUrl: urlGetAbsoluteUrl,\r\n getPathName: urlGetPathName,\r\n getCompleteUrl: urlGetCompleteUrl,\r\n parseHost: urlParseHost,\r\n parseFullHost: urlParseFullHost\r\n};\r\nexport var CorrelationIdHelper = {\r\n correlationIdPrefix: \"cid-v1:\",\r\n /**\r\n * Checks if a request url is not on a excluded domain list and if it is safe to add correlation headers.\r\n * Headers are always included if the current domain matches the request domain. If they do not match (CORS),\r\n * they are regex-ed across correlationHeaderDomains and correlationHeaderExcludedDomains to determine if headers are included.\r\n * Some environments don't give information on currentHost via window.location.host (e.g. Cordova). In these cases, the user must\r\n * manually supply domains to include correlation headers on. Else, no headers will be included at all.\r\n */\r\n canIncludeCorrelationHeader: function (config, requestUrl, currentHost) {\r\n if (!requestUrl || (config && config.disableCorrelationHeaders)) {\r\n return false;\r\n }\r\n if (config && config[_DYN_CORRELATION_HEADER_E0 /* @min:%2ecorrelationHeaderExcludePatterns */]) {\r\n for (var i = 0; i < config.correlationHeaderExcludePatterns[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n if (config[_DYN_CORRELATION_HEADER_E0 /* @min:%2ecorrelationHeaderExcludePatterns */][i].test(requestUrl)) {\r\n return false;\r\n }\r\n }\r\n }\r\n var requestHost = urlParseUrl(requestUrl).host[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n if (requestHost && (requestHost[_DYN_INDEX_OF /* @min:%2eindexOf */](\":443\") !== -1 || requestHost[_DYN_INDEX_OF /* @min:%2eindexOf */](\":80\") !== -1)) {\r\n // [Bug #1260] IE can include the port even for http and https URLs so if present\r\n // try and parse it to remove if it matches the default protocol port\r\n requestHost = (urlParseFullHost(requestUrl, true) || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n }\r\n if ((!config || !config.enableCorsCorrelation) && (requestHost && requestHost !== currentHost)) {\r\n return false;\r\n }\r\n var includedDomains = config && config.correlationHeaderDomains;\r\n if (includedDomains) {\r\n var matchExists_1;\r\n arrForEach(includedDomains, function (domain) {\r\n var regex = new RegExp(domain.toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n matchExists_1 = matchExists_1 || regex.test(requestHost);\r\n });\r\n if (!matchExists_1) {\r\n return false;\r\n }\r\n }\r\n var excludedDomains = config && config.correlationHeaderExcludedDomains;\r\n if (!excludedDomains || excludedDomains[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n return true;\r\n }\r\n for (var i = 0; i < excludedDomains[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n var regex = new RegExp(excludedDomains[i].toLowerCase().replace(/\\\\/g, \"\\\\\\\\\").replace(/\\./g, \"\\\\.\").replace(/\\*/g, \".*\"));\r\n if (regex.test(requestHost)) {\r\n return false;\r\n }\r\n }\r\n // if we don't know anything about the requestHost, require the user to use included/excludedDomains.\r\n // Previously we always returned false for a falsy requestHost\r\n return requestHost && requestHost[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n },\r\n /**\r\n * Combines target appId and target role name from response header.\r\n */\r\n getCorrelationContext: function (responseHeader) {\r\n if (responseHeader) {\r\n var correlationId = CorrelationIdHelper.getCorrelationContextValue(responseHeader, RequestHeaders[1 /* eRequestHeaders.requestContextTargetKey */]);\r\n if (correlationId && correlationId !== CorrelationIdHelper.correlationIdPrefix) {\r\n return correlationId;\r\n }\r\n }\r\n },\r\n /**\r\n * Gets key from correlation response header\r\n */\r\n getCorrelationContextValue: function (responseHeader, key) {\r\n if (responseHeader) {\r\n var keyValues = responseHeader[_DYN_SPLIT /* @min:%2esplit */](\",\");\r\n for (var i = 0; i < keyValues[_DYN_LENGTH /* @min:%2elength */]; ++i) {\r\n var keyValue = keyValues[i][_DYN_SPLIT /* @min:%2esplit */](\"=\");\r\n if (keyValue[_DYN_LENGTH /* @min:%2elength */] === 2 && keyValue[0] === key) {\r\n return keyValue[1];\r\n }\r\n }\r\n }\r\n }\r\n};\r\nexport function AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName) {\r\n var target, name = commandName, data = commandName;\r\n if (absoluteUrl && absoluteUrl[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var parsedUrl = urlParseUrl(absoluteUrl);\r\n target = parsedUrl.host;\r\n if (!name) {\r\n if (parsedUrl[_DYN_PATHNAME /* @min:%2epathname */] != null) {\r\n var pathName = (parsedUrl.pathname[_DYN_LENGTH /* @min:%2elength */] === 0) ? \"/\" : parsedUrl[_DYN_PATHNAME /* @min:%2epathname */];\r\n if (pathName.charAt(0) !== \"/\") {\r\n pathName = \"/\" + pathName;\r\n }\r\n data = parsedUrl[_DYN_PATHNAME /* @min:%2epathname */];\r\n name = dataSanitizeString(logger, method ? method + \" \" + pathName : pathName);\r\n }\r\n else {\r\n name = dataSanitizeString(logger, absoluteUrl);\r\n }\r\n }\r\n }\r\n else {\r\n target = commandName;\r\n name = commandName;\r\n }\r\n return {\r\n target: target,\r\n name: name,\r\n data: data\r\n };\r\n}\r\nexport function dateTimeUtilsNow() {\r\n // returns the window or webworker performance object\r\n var perf = getPerformance();\r\n if (perf && perf.now && perf.timing) {\r\n var now = perf.now() + perf.timing.navigationStart;\r\n // Known issue with IE where this calculation can be negative, so if it is then ignore and fallback\r\n if (now > 0) {\r\n return now;\r\n }\r\n }\r\n return dateNow();\r\n}\r\nexport function dateTimeUtilsDuration(start, end) {\r\n var result = null;\r\n if (start !== 0 && end !== 0 && !isNullOrUndefined(start) && !isNullOrUndefined(end)) {\r\n result = end - start;\r\n }\r\n return result;\r\n}\r\n/**\r\n * A utility class that helps getting time related parameters\r\n */\r\nexport var DateTimeUtils = {\r\n Now: dateTimeUtilsNow,\r\n GetDuration: dateTimeUtilsDuration\r\n};\r\n/**\r\n * Creates a IDistributedTraceContext from an optional telemetryTrace\r\n * @param telemetryTrace - The telemetryTrace instance that is being wrapped\r\n * @param parentCtx - An optional parent distributed trace instance, almost always undefined as this scenario is only used in the case of multiple property handlers.\r\n * @returns A new IDistributedTraceContext instance that is backed by the telemetryTrace or temporary object\r\n */\r\nexport function createDistributedTraceContextFromTrace(telemetryTrace, parentCtx) {\r\n var trace = telemetryTrace || {};\r\n return {\r\n getName: function () {\r\n return trace[_DYN_NAME /* @min:%2ename */];\r\n },\r\n setName: function (newValue) {\r\n parentCtx && parentCtx.setName(newValue);\r\n trace[_DYN_NAME /* @min:%2ename */] = newValue;\r\n },\r\n getTraceId: function () {\r\n return trace.traceID;\r\n },\r\n setTraceId: function (newValue) {\r\n parentCtx && parentCtx.setTraceId(newValue);\r\n if (isValidTraceId(newValue)) {\r\n trace.traceID = newValue;\r\n }\r\n },\r\n getSpanId: function () {\r\n return trace.parentID;\r\n },\r\n setSpanId: function (newValue) {\r\n parentCtx && parentCtx.setSpanId(newValue);\r\n if (isValidSpanId(newValue)) {\r\n trace.parentID = newValue;\r\n }\r\n },\r\n getTraceFlags: function () {\r\n return trace.traceFlags;\r\n },\r\n setTraceFlags: function (newTraceFlags) {\r\n parentCtx && parentCtx.setTraceFlags(newTraceFlags);\r\n trace.traceFlags = newTraceFlags;\r\n }\r\n };\r\n}\r\n//# sourceMappingURL=Util.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_SPLIT = \"split\"; // Count: 6\r\nexport var _DYN_LENGTH = \"length\"; // Count: 41\r\nexport var _DYN_TO_LOWER_CASE = \"toLowerCase\"; // Count: 6\r\nexport var _DYN_INGESTIONENDPOINT = \"ingestionendpoint\"; // Count: 4\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 12\r\nexport var _DYN_REMOVE_ITEM = \"removeItem\"; // Count: 3\r\nexport var _DYN_NAME = \"name\"; // Count: 11\r\nexport var _DYN_MESSAGE = \"message\"; // Count: 10\r\nexport var _DYN_COUNT = \"count\"; // Count: 8\r\nexport var _DYN_PRE_TRIGGER_DATE = \"preTriggerDate\"; // Count: 4\r\nexport var _DYN_DISABLED = \"disabled\"; // Count: 3\r\nexport var _DYN_DATE = \"date\"; // Count: 5\r\nexport var _DYN_GET_UTCDATE = \"getUTCDate\"; // Count: 3\r\nexport var _DYN_MAX_TIMES_PER_MONTH = \"maxTimesPerMonth\"; // Count: 2\r\nexport var _DYN_STRINGIFY = \"stringify\"; // Count: 4\r\nexport var _DYN_PATHNAME = \"pathname\"; // Count: 4\r\nexport var _DYN_CORRELATION_HEADER_E0 = \"correlationHeaderExcludePatterns\"; // Count: 2\r\nexport var _DYN_INDEX_OF = \"indexOf\"; // Count: 4\r\nexport var _DYN_EXTENSION_CONFIG = \"extensionConfig\"; // Count: 4\r\nexport var _DYN_EXCEPTIONS = \"exceptions\"; // Count: 6\r\nexport var _DYN_PARSED_STACK = \"parsedStack\"; // Count: 11\r\nexport var _DYN_PROPERTIES = \"properties\"; // Count: 9\r\nexport var _DYN_MEASUREMENTS = \"measurements\"; // Count: 9\r\nexport var _DYN_SIZE_IN_BYTES = \"sizeInBytes\"; // Count: 11\r\nexport var _DYN_TYPE_NAME = \"typeName\"; // Count: 11\r\nexport var _DYN_SEVERITY_LEVEL = \"severityLevel\"; // Count: 5\r\nexport var _DYN_PROBLEM_GROUP = \"problemGroup\"; // Count: 3\r\nexport var _DYN_IS_MANUAL = \"isManual\"; // Count: 3\r\nexport var _DYN__CREATE_FROM_INTERFA1 = \"CreateFromInterface\"; // Count: 2\r\nexport var _DYN_HAS_FULL_STACK = \"hasFullStack\"; // Count: 6\r\nexport var _DYN_LEVEL = \"level\"; // Count: 5\r\nexport var _DYN_METHOD = \"method\"; // Count: 7\r\nexport var _DYN_ASSEMBLY = \"assembly\"; // Count: 5\r\nexport var _DYN_FILE_NAME = \"fileName\"; // Count: 6\r\nexport var _DYN_LINE = \"line\"; // Count: 6\r\nexport var _DYN_DURATION = \"duration\"; // Count: 4\r\nexport var _DYN_RECEIVED_RESPONSE = \"receivedResponse\"; // Count: 2\r\nexport var _DYN_SUBSTRING = \"substring\"; // Count: 6\r\nexport var _DYN_SANITIZE_KEY_AND_ADD2 = \"sanitizeKeyAndAddUniqueness\"; // Count: 2\r\nexport var _DYN_SANITIZE_EXCEPTION = \"sanitizeException\"; // Count: 2\r\nexport var _DYN_SANITIZE_PROPERTIES = \"sanitizeProperties\"; // Count: 2\r\nexport var _DYN_SANITIZE_MEASUREMENT3 = \"sanitizeMeasurements\"; // Count: 2\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { objForEachKey, deepFreeze } from \"../JavaScriptSDK/HelperFuncs\";\r\n/**\r\n * Create an enum style object which has both the key => value and value => key mappings\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createEnumStyle(values) {\r\n var enumClass = {};\r\n objForEachKey(values, function (field, value) {\r\n enumClass[field] = value;\r\n enumClass[value] = field;\r\n });\r\n return deepFreeze(enumClass);\r\n}\r\n/**\r\n * Create a 2 index map that maps an enum's key as both the key and value, X[\"key\"] => \"key\" and X[0] => \"keyof 0\".\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createEnumMap(values) {\r\n var mapClass = {};\r\n objForEachKey(values, function (field, value) {\r\n mapClass[field] = field;\r\n mapClass[value] = field;\r\n });\r\n return deepFreeze(mapClass);\r\n}\r\n/**\r\n * Create a 2 index map that maps an enum's key and value to the defined map value, X[\"key\"] => mapValue and X[0] => mapValue.\r\n * Generic values\r\n * - E = the const enum type (typeof eRequestHeaders);\r\n * - V = Identifies the valid values for the keys, this should include both the enum numeric and string key of the type. The\r\n * resulting \"Value\" of each entry identifies the valid values withing the assignments.\r\n * @param values - The values to populate on the new object\r\n * @returns\r\n */\r\nexport function createValueMap(values) {\r\n var mapClass = {};\r\n objForEachKey(values, function (field, value) {\r\n mapClass[field] = value[1];\r\n mapClass[value[0]] = value[1];\r\n });\r\n return deepFreeze(mapClass);\r\n}\r\n//# sourceMappingURL=EnumHelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { _DYN_COOKIE_CFG, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_LOGGER, _DYN_SET_ENABLED, _DYN_SPLIT, _DYN_SUBSTRING, _DYN_USER_AGENT } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj, getDocument, getLocation, getNavigator, isIE } from \"./EnvUtils\";\r\nimport { arrForEach, dateNow, getExceptionName, isArray, isFunction, isNotNullOrUndefined, isNullOrUndefined, isString, isTruthy, isUndefined, objForEachKey, setValue, strContains, strEndsWith, strTrim } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nvar strToGMTString = \"toGMTString\";\r\nvar strToUTCString = \"toUTCString\";\r\nvar strCookie = \"cookie\";\r\nvar strExpires = \"expires\";\r\nvar strEnabled = \"enabled\";\r\nvar strIsCookieUseDisabled = \"isCookieUseDisabled\";\r\nvar strDisableCookiesUsage = \"disableCookiesUsage\";\r\nvar strConfigCookieMgr = \"_ckMgr\";\r\nvar _supportsCookies = null;\r\nvar _allowUaSameSite = null;\r\nvar _parsedCookieValue = null;\r\nvar _doc = getDocument();\r\nvar _cookieCache = {};\r\nvar _globalCookieConfig = {};\r\n/**\r\n * @ignore\r\n * DO NOT USE or export from the module, this is exposed as public to support backward compatibility of previous static utility methods only.\r\n * If you want to manager cookies either use the ICookieMgr available from the core instance via getCookieMgr() or create\r\n * your own instance of the CookieMgr and use that.\r\n * Using this directly for enabling / disabling cookie handling will not only affect your usage but EVERY user of cookies.\r\n * Example, if you are using a shared component that is also using Application Insights you will affect their cookie handling.\r\n * @param logger - The DiagnosticLogger to use for reporting errors.\r\n */\r\nexport function _gblCookieMgr(config, logger) {\r\n // Stash the global instance against the BaseCookieMgr class\r\n var inst = createCookieMgr[strConfigCookieMgr] || _globalCookieConfig[strConfigCookieMgr];\r\n if (!inst) {\r\n // Note: not using the getSetValue() helper as that would require always creating a temporary cookieMgr\r\n // that ultimately is never used\r\n inst = createCookieMgr[strConfigCookieMgr] = createCookieMgr(config, logger);\r\n _globalCookieConfig[strConfigCookieMgr] = inst;\r\n }\r\n return inst;\r\n}\r\nfunction _isMgrEnabled(cookieMgr) {\r\n if (cookieMgr) {\r\n return cookieMgr.isEnabled();\r\n }\r\n return true;\r\n}\r\nfunction _createCookieMgrConfig(rootConfig) {\r\n var cookieMgrCfg = rootConfig[_DYN_COOKIE_CFG /* @min:%2ecookieCfg */] = rootConfig[_DYN_COOKIE_CFG /* @min:%2ecookieCfg */] || {};\r\n // Sets the values from the root config if not already present on the cookieMgrCfg\r\n setValue(cookieMgrCfg, \"domain\", rootConfig.cookieDomain, isNotNullOrUndefined, isNullOrUndefined);\r\n setValue(cookieMgrCfg, \"path\", rootConfig.cookiePath || \"/\", null, isNullOrUndefined);\r\n if (isNullOrUndefined(cookieMgrCfg[strEnabled])) {\r\n // Set the enabled from the provided setting or the legacy root values\r\n var cookieEnabled = void 0;\r\n if (!isUndefined(rootConfig[strIsCookieUseDisabled])) {\r\n cookieEnabled = !rootConfig[strIsCookieUseDisabled];\r\n }\r\n if (!isUndefined(rootConfig[strDisableCookiesUsage])) {\r\n cookieEnabled = !rootConfig[strDisableCookiesUsage];\r\n }\r\n cookieMgrCfg[strEnabled] = cookieEnabled;\r\n }\r\n return cookieMgrCfg;\r\n}\r\nfunction _isIgnoredCookie(cookieMgrCfg, name) {\r\n if (name && cookieMgrCfg && isArray(cookieMgrCfg.ignoreCookies)) {\r\n return cookieMgrCfg.ignoreCookies[_DYN_INDEX_OF /* @min:%2eindexOf */](name) !== -1;\r\n }\r\n return false;\r\n}\r\nfunction _isBlockedCookie(cookieMgrCfg, name) {\r\n if (name && cookieMgrCfg && isArray(cookieMgrCfg.blockedCookies)) {\r\n if (cookieMgrCfg.blockedCookies[_DYN_INDEX_OF /* @min:%2eindexOf */](name) !== -1) {\r\n return true;\r\n }\r\n }\r\n return _isIgnoredCookie(cookieMgrCfg, name);\r\n}\r\n/**\r\n * Helper to return the ICookieMgr from the core (if not null/undefined) or a default implementation\r\n * associated with the configuration or a legacy default.\r\n * @param core\r\n * @param config\r\n * @returns\r\n */\r\nexport function safeGetCookieMgr(core, config) {\r\n var cookieMgr;\r\n if (core) {\r\n // Always returns an instance\r\n cookieMgr = core.getCookieMgr();\r\n }\r\n else if (config) {\r\n var cookieCfg = config[_DYN_COOKIE_CFG /* @min:%2ecookieCfg */];\r\n if (cookieCfg[strConfigCookieMgr]) {\r\n cookieMgr = cookieCfg[strConfigCookieMgr];\r\n }\r\n else {\r\n cookieMgr = createCookieMgr(config);\r\n }\r\n }\r\n if (!cookieMgr) {\r\n // Get or initialize the default global (legacy) cookie manager if we couldn't find one\r\n cookieMgr = _gblCookieMgr(config, (core || {})[_DYN_LOGGER /* @min:%2elogger */]);\r\n }\r\n return cookieMgr;\r\n}\r\nexport function createCookieMgr(rootConfig, logger) {\r\n var _a;\r\n var cookieMgrConfig = _createCookieMgrConfig(rootConfig || _globalCookieConfig);\r\n var _path = cookieMgrConfig.path || \"/\";\r\n var _domain = cookieMgrConfig.domain;\r\n // Explicitly checking against false, so that setting to undefined will === true\r\n var _enabled = cookieMgrConfig[strEnabled] !== false;\r\n var cookieMgr = (_a = {\r\n isEnabled: function () {\r\n var enabled = _enabled && areCookiesSupported(logger);\r\n // Using an indirect lookup for any global cookie manager to support tree shaking for SDK's\r\n // that don't use the \"applicationinsights-core\" version of the default cookie function\r\n var gblManager = _globalCookieConfig[strConfigCookieMgr];\r\n if (enabled && gblManager && cookieMgr !== gblManager) {\r\n // Make sure the GlobalCookie Manager instance (if not this instance) is also enabled.\r\n // As the global (deprecated) functions may have been called (for backward compatibility)\r\n enabled = _isMgrEnabled(gblManager);\r\n }\r\n return enabled;\r\n }\r\n },\r\n _a[_DYN_SET_ENABLED /* @min:setEnabled */] = function (value) {\r\n // Explicitly checking against false, so that setting to undefined will === true\r\n _enabled = value !== false;\r\n },\r\n _a.set = function (name, value, maxAgeSec, domain, path) {\r\n var result = false;\r\n if (_isMgrEnabled(cookieMgr) && !_isBlockedCookie(cookieMgrConfig, name)) {\r\n var values = {};\r\n var theValue = strTrim(value || STR_EMPTY);\r\n var idx = theValue[_DYN_INDEX_OF /* @min:%2eindexOf */](\";\");\r\n if (idx !== -1) {\r\n theValue = strTrim(value[_DYN_SUBSTRING /* @min:%2esubstring */](0, idx));\r\n values = _extractParts(value[_DYN_SUBSTRING /* @min:%2esubstring */](idx + 1));\r\n }\r\n // Only update domain if not already present (isUndefined) and the value is truthy (not null, undefined or empty string)\r\n setValue(values, \"domain\", domain || _domain, isTruthy, isUndefined);\r\n if (!isNullOrUndefined(maxAgeSec)) {\r\n var _isIE = isIE();\r\n if (isUndefined(values[strExpires])) {\r\n var nowMs = dateNow();\r\n // Only add expires if not already present\r\n var expireMs = nowMs + (maxAgeSec * 1000);\r\n // Sanity check, if zero or -ve then ignore\r\n if (expireMs > 0) {\r\n var expiry = new Date();\r\n expiry.setTime(expireMs);\r\n setValue(values, strExpires, _formatDate(expiry, !_isIE ? strToUTCString : strToGMTString) || _formatDate(expiry, _isIE ? strToGMTString : strToUTCString) || STR_EMPTY, isTruthy);\r\n }\r\n }\r\n if (!_isIE) {\r\n // Only replace if not already present\r\n setValue(values, \"max-age\", STR_EMPTY + maxAgeSec, null, isUndefined);\r\n }\r\n }\r\n var location_1 = getLocation();\r\n if (location_1 && location_1.protocol === \"https:\") {\r\n setValue(values, \"secure\", null, null, isUndefined);\r\n // Only set same site if not also secure\r\n if (_allowUaSameSite === null) {\r\n _allowUaSameSite = !uaDisallowsSameSiteNone((getNavigator() || {})[_DYN_USER_AGENT /* @min:%2euserAgent */]);\r\n }\r\n if (_allowUaSameSite) {\r\n setValue(values, \"SameSite\", \"None\", null, isUndefined);\r\n }\r\n }\r\n setValue(values, \"path\", path || _path, null, isUndefined);\r\n var setCookieFn = cookieMgrConfig.setCookie || _setCookieValue;\r\n setCookieFn(name, _formatCookieValue(theValue, values));\r\n result = true;\r\n }\r\n return result;\r\n },\r\n _a.get = function (name) {\r\n var value = STR_EMPTY;\r\n if (_isMgrEnabled(cookieMgr) && !_isIgnoredCookie(cookieMgrConfig, name)) {\r\n value = (cookieMgrConfig.getCookie || _getCookieValue)(name);\r\n }\r\n return value;\r\n },\r\n _a.del = function (name, path) {\r\n var result = false;\r\n if (_isMgrEnabled(cookieMgr)) {\r\n // Only remove the cookie if the manager and cookie support has not been disabled\r\n result = cookieMgr.purge(name, path);\r\n }\r\n return result;\r\n },\r\n _a.purge = function (name, path) {\r\n var _a;\r\n var result = false;\r\n if (areCookiesSupported(logger)) {\r\n // Setting the expiration date in the past immediately removes the cookie\r\n var values = (_a = {},\r\n _a[\"path\"] = path ? path : \"/\",\r\n _a[strExpires] = \"Thu, 01 Jan 1970 00:00:01 GMT\",\r\n _a);\r\n if (!isIE()) {\r\n // Set max age to expire now\r\n values[\"max-age\"] = \"0\";\r\n }\r\n var delCookie = cookieMgrConfig.delCookie || _setCookieValue;\r\n delCookie(name, _formatCookieValue(STR_EMPTY, values));\r\n result = true;\r\n }\r\n return result;\r\n },\r\n _a);\r\n // Associated this cookie manager with the config\r\n cookieMgr[strConfigCookieMgr] = cookieMgr;\r\n return cookieMgr;\r\n}\r\n/*\r\n* Helper method to tell if document.cookie object is supported by the runtime\r\n*/\r\nexport function areCookiesSupported(logger) {\r\n if (_supportsCookies === null) {\r\n _supportsCookies = false;\r\n try {\r\n var doc = _doc || {};\r\n _supportsCookies = doc[strCookie] !== undefined;\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 68 /* _eInternalMessageId.CannotAccessCookie */, \"Cannot access document.cookie - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return _supportsCookies;\r\n}\r\nfunction _extractParts(theValue) {\r\n var values = {};\r\n if (theValue && theValue[_DYN_LENGTH /* @min:%2elength */]) {\r\n var parts = strTrim(theValue)[_DYN_SPLIT /* @min:%2esplit */](\";\");\r\n arrForEach(parts, function (thePart) {\r\n thePart = strTrim(thePart || STR_EMPTY);\r\n if (thePart) {\r\n var idx = thePart[_DYN_INDEX_OF /* @min:%2eindexOf */](\"=\");\r\n if (idx === -1) {\r\n values[thePart] = null;\r\n }\r\n else {\r\n values[strTrim(thePart[_DYN_SUBSTRING /* @min:%2esubstring */](0, idx))] = strTrim(thePart[_DYN_SUBSTRING /* @min:%2esubstring */](idx + 1));\r\n }\r\n }\r\n });\r\n }\r\n return values;\r\n}\r\nfunction _formatDate(theDate, func) {\r\n if (isFunction(theDate[func])) {\r\n return theDate[func]();\r\n }\r\n return null;\r\n}\r\nfunction _formatCookieValue(value, values) {\r\n var cookieValue = value || STR_EMPTY;\r\n objForEachKey(values, function (name, theValue) {\r\n cookieValue += \"; \" + name + (!isNullOrUndefined(theValue) ? \"=\" + theValue : STR_EMPTY);\r\n });\r\n return cookieValue;\r\n}\r\nfunction _getCookieValue(name) {\r\n var cookieValue = STR_EMPTY;\r\n if (_doc) {\r\n var theCookie = _doc[strCookie] || STR_EMPTY;\r\n if (_parsedCookieValue !== theCookie) {\r\n _cookieCache = _extractParts(theCookie);\r\n _parsedCookieValue = theCookie;\r\n }\r\n cookieValue = strTrim(_cookieCache[name] || STR_EMPTY);\r\n }\r\n return cookieValue;\r\n}\r\nfunction _setCookieValue(name, cookieValue) {\r\n if (_doc) {\r\n _doc[strCookie] = name + \"=\" + cookieValue;\r\n }\r\n}\r\nexport function uaDisallowsSameSiteNone(userAgent) {\r\n if (!isString(userAgent)) {\r\n return false;\r\n }\r\n // Cover all iOS based browsers here. This includes:\r\n // - Safari on iOS 12 for iPhone, iPod Touch, iPad\r\n // - WkWebview on iOS 12 for iPhone, iPod Touch, iPad\r\n // - Chrome on iOS 12 for iPhone, iPod Touch, iPad\r\n // All of which are broken by SameSite=None, because they use the iOS networking stack\r\n if (strContains(userAgent, \"CPU iPhone OS 12\") || strContains(userAgent, \"iPad; CPU OS 12\")) {\r\n return true;\r\n }\r\n // Cover Mac OS X based browsers that use the Mac OS networking stack. This includes:\r\n // - Safari on Mac OS X\r\n // This does not include:\r\n // - Internal browser on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strContains(userAgent, \"Version/\") && strContains(userAgent, \"Safari\")) {\r\n return true;\r\n }\r\n // Cover Mac OS X internal browsers that use the Mac OS networking stack. This includes:\r\n // - Internal browser on Mac OS X\r\n // This does not include:\r\n // - Safari on Mac OS X\r\n // - Chrome on Mac OS X\r\n // - Chromium on Mac OS X\r\n // Because they do not use the Mac OS networking stack.\r\n if (strContains(userAgent, \"Macintosh; Intel Mac OS X 10_14\") && strEndsWith(userAgent, \"AppleWebKit/605.1.15 (KHTML, like Gecko)\")) {\r\n return true;\r\n }\r\n // Cover Chrome 50-69, because some versions are broken by SameSite=None, and none in this range require it.\r\n // Note: this covers some pre-Chromium Edge versions, but pre-Chromim Edge does not require SameSite=None, so this is fine.\r\n // Note: this regex applies to Windows, Mac OS X, and Linux, deliberately.\r\n if (strContains(userAgent, \"Chrome/5\") || strContains(userAgent, \"Chrome/6\")) {\r\n return true;\r\n }\r\n // Unreal Engine runs Chromium 59, but does not advertise as Chrome until 4.23. Treat versions of Unreal\r\n // that don't specify their Chrome version as lacking support for SameSite=None.\r\n if (strContains(userAgent, \"UnrealEngine\") && !strContains(userAgent, \"Chrome\")) {\r\n return true;\r\n }\r\n // UCBrowser < 12.13.2 ignores Set-Cookie headers with SameSite=None\r\n // NB: this rule isn't complete - you need regex to make a complete rule.\r\n // See: https://www.chromium.org/updates/same-site/incompatible-clients\r\n if (strContains(userAgent, \"UCBrowser/12\") || strContains(userAgent, \"UCBrowser/11\")) {\r\n return true;\r\n }\r\n return false;\r\n}\r\n//# sourceMappingURL=CookieMgr.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { objCreateFn, strShimUndefined } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_LENGTH, _DYN_PUSH, _DYN_SET_ENABLED, _DYN_SUBSTR, _DYN_SUBSTRING } from \"../__DynamicConstants\";\r\nimport { _gblCookieMgr } from \"./CookieMgr\";\r\nimport { getPerformance, isIE } from \"./EnvUtils\";\r\nimport { addEventHandler, attachEvent, detachEvent } from \"./EventHelpers\";\r\nimport { arrForEach, arrIndexOf, arrMap, arrReduce, dateNow, hasOwnProperty, isArray, isBoolean, isDate, isError, isFunction, isNullOrUndefined, isNumber, isObject, isString, isTypeof, isUndefined, objDefineAccessors, objKeys, strTrim, toISOString } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nimport { mwcRandom32, mwcRandomSeed, newId, random32, randomValue } from \"./RandomHelper\";\r\nvar _cookieMgrs = null;\r\nvar _canUseCookies; // legacy supported config\r\n// Added to help with minfication\r\nexport var Undefined = strShimUndefined;\r\nexport function newGuid() {\r\n var uuid = generateW3CId();\r\n return uuid[_DYN_SUBSTRING /* @min:%2esubstring */](0, 8) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](8, 12) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](12, 16) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](16, 20) + \"-\" + uuid[_DYN_SUBSTRING /* @min:%2esubstring */](20);\r\n}\r\n/**\r\n * Return the current value of the Performance Api now() function (if available) and fallback to dateNow() if it is unavailable (IE9 or less)\r\n * https://caniuse.com/#search=performance.now\r\n */\r\nexport function perfNow() {\r\n var perf = getPerformance();\r\n if (perf && perf.now) {\r\n return perf.now();\r\n }\r\n return dateNow();\r\n}\r\n/**\r\n * The strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function strEndsWith(value, search) {\r\n if (value && search) {\r\n var len = value[_DYN_LENGTH /* @min:%2elength */];\r\n var start = len - search[_DYN_LENGTH /* @min:%2elength */];\r\n return value[_DYN_SUBSTRING /* @min:%2esubstring */](start >= 0 ? start : 0, len) === search;\r\n }\r\n return false;\r\n}\r\n/**\r\n * generate W3C trace id\r\n */\r\nexport function generateW3CId() {\r\n var hexValues = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\"];\r\n // rfc4122 version 4 UUID without dashes and with lowercase letters\r\n var oct = STR_EMPTY, tmp;\r\n for (var a = 0; a < 4; a++) {\r\n tmp = random32();\r\n oct +=\r\n hexValues[tmp & 0xF] +\r\n hexValues[tmp >> 4 & 0xF] +\r\n hexValues[tmp >> 8 & 0xF] +\r\n hexValues[tmp >> 12 & 0xF] +\r\n hexValues[tmp >> 16 & 0xF] +\r\n hexValues[tmp >> 20 & 0xF] +\r\n hexValues[tmp >> 24 & 0xF] +\r\n hexValues[tmp >> 28 & 0xF];\r\n }\r\n // \"Set the two most significant bits (bits 6 and 7) of the clock_seq_hi_and_reserved to zero and one, respectively\"\r\n var clockSequenceHi = hexValues[8 + (random32() & 0x03) | 0];\r\n return oct[_DYN_SUBSTR /* @min:%2esubstr */](0, 8) + oct[_DYN_SUBSTR /* @min:%2esubstr */](9, 4) + \"4\" + oct[_DYN_SUBSTR /* @min:%2esubstr */](13, 3) + clockSequenceHi + oct[_DYN_SUBSTR /* @min:%2esubstr */](16, 3) + oct[_DYN_SUBSTR /* @min:%2esubstr */](19, 12);\r\n}\r\n/**\r\n * Provides a collection of utility functions, included for backward compatibility with previous releases.\r\n * @deprecated Marking this instance as deprecated in favor of direct usage of the helper functions\r\n * as direct usage provides better tree-shaking and minification by avoiding the inclusion of the unused items\r\n * in your resulting code.\r\n */\r\nexport var CoreUtils = {\r\n _canUseCookies: undefined,\r\n isTypeof: isTypeof,\r\n isUndefined: isUndefined,\r\n isNullOrUndefined: isNullOrUndefined,\r\n hasOwnProperty: hasOwnProperty,\r\n isFunction: isFunction,\r\n isObject: isObject,\r\n isDate: isDate,\r\n isArray: isArray,\r\n isError: isError,\r\n isString: isString,\r\n isNumber: isNumber,\r\n isBoolean: isBoolean,\r\n toISOString: toISOString,\r\n arrForEach: arrForEach,\r\n arrIndexOf: arrIndexOf,\r\n arrMap: arrMap,\r\n arrReduce: arrReduce,\r\n strTrim: strTrim,\r\n objCreate: objCreateFn,\r\n objKeys: objKeys,\r\n objDefineAccessors: objDefineAccessors,\r\n addEventHandler: addEventHandler,\r\n dateNow: dateNow,\r\n isIE: isIE,\r\n disableCookies: disableCookies,\r\n newGuid: newGuid,\r\n perfNow: perfNow,\r\n newId: newId,\r\n randomValue: randomValue,\r\n random32: random32,\r\n mwcRandomSeed: mwcRandomSeed,\r\n mwcRandom32: mwcRandom32,\r\n generateW3CId: generateW3CId\r\n};\r\nvar GuidRegex = /[xy]/g;\r\nexport var EventHelper = {\r\n Attach: attachEvent,\r\n AttachEvent: attachEvent,\r\n Detach: detachEvent,\r\n DetachEvent: detachEvent\r\n};\r\n/**\r\n * Helper to support backward compatibility for users that use the legacy cookie handling functions and the use the internal\r\n * CoreUtils._canUseCookies global flag to enable/disable cookies usage.\r\n * Note: This has the following deliberate side-effects\r\n * - Creates the global (legacy) cookie manager if it does not already exist\r\n * - Attempts to add \"listeners\" to the CoreUtils._canUseCookies property to support the legacy usage\r\n * @param config\r\n * @param logger\r\n * @returns\r\n */\r\nexport function _legacyCookieMgr(config, logger) {\r\n var cookieMgr = _gblCookieMgr(config, logger);\r\n var legacyCanUseCookies = CoreUtils._canUseCookies;\r\n if (_cookieMgrs === null) {\r\n _cookieMgrs = [];\r\n _canUseCookies = legacyCanUseCookies;\r\n // Dynamically create get/set property accessors for backward compatibility for enabling / disabling cookies\r\n // this WILL NOT work for ES3 browsers (< IE8)\r\n objDefineAccessors(CoreUtils, \"_canUseCookies\", function () {\r\n return _canUseCookies;\r\n }, function (value) {\r\n _canUseCookies = value;\r\n arrForEach(_cookieMgrs, function (mgr) {\r\n mgr[_DYN_SET_ENABLED /* @min:%2esetEnabled */](value);\r\n });\r\n });\r\n }\r\n if (arrIndexOf(_cookieMgrs, cookieMgr) === -1) {\r\n _cookieMgrs[_DYN_PUSH /* @min:%2epush */](cookieMgr);\r\n }\r\n if (isBoolean(legacyCanUseCookies)) {\r\n cookieMgr[_DYN_SET_ENABLED /* @min:%2esetEnabled */](legacyCanUseCookies);\r\n }\r\n if (isBoolean(_canUseCookies)) {\r\n cookieMgr[_DYN_SET_ENABLED /* @min:%2esetEnabled */](_canUseCookies);\r\n }\r\n return cookieMgr;\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().disable()\r\n * Force the SDK not to store and read any data from cookies.\r\n */\r\nexport function disableCookies() {\r\n _legacyCookieMgr()[_DYN_SET_ENABLED /* @min:%2esetEnabled */](false);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().isEnabled()\r\n * Helper method to tell if document.cookie object is available and whether it can be used.\r\n */\r\nexport function canUseCookies(logger) {\r\n return _legacyCookieMgr(null, logger).isEnabled();\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().get()\r\n * helper method to access userId and sessionId cookie\r\n */\r\nexport function getCookie(logger, name) {\r\n return _legacyCookieMgr(null, logger).get(name);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().set()\r\n * helper method to set userId and sessionId cookie\r\n */\r\nexport function setCookie(logger, name, value, domain) {\r\n _legacyCookieMgr(null, logger).set(name, value, null, domain);\r\n}\r\n/**\r\n * @deprecated - Use the core.getCookieMgr().del()\r\n * Deletes a cookie by setting it's expiration time in the past.\r\n * @param name - The name of the cookie to delete.\r\n */\r\nexport function deleteCookie(logger, name) {\r\n return _legacyCookieMgr(null, logger).del(name);\r\n}\r\n//# sourceMappingURL=CoreUtils.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { ObjDefineProperty } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_NODE_TYPE } from \"../__DynamicConstants\";\r\nimport { normalizeJsName } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nimport { newId } from \"./RandomHelper\";\r\nvar _objDefineProperty = ObjDefineProperty;\r\nvar version = '2.8.9';\r\nvar instanceName = \".\" + newId(6);\r\nvar _dataUid = 0;\r\nfunction _createAccessor(target, prop, value) {\r\n if (_objDefineProperty) {\r\n try {\r\n _objDefineProperty(target, prop, {\r\n value: value,\r\n enumerable: false,\r\n configurable: true\r\n });\r\n return true;\r\n }\r\n catch (e) {\r\n // IE8 Defines a defineProperty on Object but it's only supported for DOM elements so it will throw\r\n // We will just ignore this here.\r\n }\r\n }\r\n return false;\r\n}\r\n// Accepts only:\r\n// - Node\r\n// - Node.ELEMENT_NODE\r\n// - Node.DOCUMENT_NODE\r\n// - Object\r\n// - Any\r\nfunction _canAcceptData(target) {\r\n return target[_DYN_NODE_TYPE /* @min:%2enodeType */] === 1 || target[_DYN_NODE_TYPE /* @min:%2enodeType */] === 9 || !(+target[_DYN_NODE_TYPE /* @min:%2enodeType */]);\r\n}\r\nfunction _getCache(data, target) {\r\n var theCache = target[data.id];\r\n if (!theCache) {\r\n theCache = {};\r\n try {\r\n if (_canAcceptData(target)) {\r\n if (!_createAccessor(target, data.id, theCache)) {\r\n // Environment doesn't support accessor, so just use direct assignment\r\n target[data.id] = theCache;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // Not all environments allow extending all objects, so just ignore the cache in those cases\r\n }\r\n }\r\n return theCache;\r\n}\r\nexport function createUniqueNamespace(name, includeVersion) {\r\n if (includeVersion === void 0) { includeVersion = false; }\r\n return normalizeJsName(name + (_dataUid++) + (includeVersion ? \".\" + version : STR_EMPTY) + instanceName);\r\n}\r\nexport function createElmNodeData(name) {\r\n var data = {\r\n id: createUniqueNamespace(\"_aiData-\" + (name || STR_EMPTY) + \".\" + version),\r\n accept: function (target) {\r\n return _canAcceptData(target);\r\n },\r\n get: function (target, name, defValue, addDefault) {\r\n var theCache = target[data.id];\r\n if (!theCache) {\r\n if (addDefault) {\r\n // Side effect is adds the cache\r\n theCache = _getCache(data, target);\r\n theCache[normalizeJsName(name)] = defValue;\r\n }\r\n return defValue;\r\n }\r\n return theCache[normalizeJsName(name)];\r\n },\r\n kill: function (target, name) {\r\n if (target && target[name]) {\r\n try {\r\n delete target[name];\r\n }\r\n catch (e) {\r\n // Just cleaning up, so if this fails -- ignore\r\n }\r\n }\r\n }\r\n };\r\n return data;\r\n}\r\n//# sourceMappingURL=DataCacheHelper.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_APPLY, _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { getGlobalInst } from \"./EnvUtils\";\r\nvar listenerFuncs = [\"eventsSent\", \"eventsDiscarded\", \"eventsSendRequest\", \"perfEvent\"];\r\nvar _aiNamespace = null;\r\nvar _debugListener;\r\nfunction _listenerProxyFunc(name, config) {\r\n return function () {\r\n var args = arguments;\r\n var dbgExt = getDebugExt(config);\r\n if (dbgExt) {\r\n var listener = dbgExt.listener;\r\n if (listener && listener[name]) {\r\n listener[name][_DYN_APPLY /* @min:%2eapply */](listener, args);\r\n }\r\n }\r\n };\r\n}\r\nfunction _getExtensionNamespace() {\r\n // Cache the lookup of the global namespace object\r\n var target = getGlobalInst(\"Microsoft\");\r\n if (target) {\r\n _aiNamespace = target[\"ApplicationInsights\"];\r\n }\r\n return _aiNamespace;\r\n}\r\nexport function getDebugExt(config) {\r\n var ns = _aiNamespace;\r\n if (!ns && config.disableDbgExt !== true) {\r\n ns = _aiNamespace || _getExtensionNamespace();\r\n }\r\n return ns ? ns[\"ChromeDbgExt\"] : null;\r\n}\r\nexport function getDebugListener(config) {\r\n if (!_debugListener) {\r\n _debugListener = {};\r\n for (var lp = 0; lp < listenerFuncs[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n _debugListener[listenerFuncs[lp]] = _listenerProxyFunc(listenerFuncs[lp], config);\r\n }\r\n }\r\n return _debugListener;\r\n}\r\n//# sourceMappingURL=DbgExtensionUtils.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_DIAG_LOG, _DYN_ENABLE_DEBUG_EXCEPTI4, _DYN_LOGGER, _DYN_LOG_INTERNAL_MESSAGE, _DYN_MESSAGE, _DYN_MESSAGE_ID, _DYN_PUSH, _DYN_REPLACE } from \"../__DynamicConstants\";\r\nimport { getDebugExt } from \"./DbgExtensionUtils\";\r\nimport { dumpObj, getConsole, getJSON, hasJSON } from \"./EnvUtils\";\r\nimport { getCfgValue, isFunction, isUndefined } from \"./HelperFuncs\";\r\nimport { STR_EMPTY, STR_ERROR_TO_CONSOLE, STR_WARN_TO_CONSOLE } from \"./InternalConstants\";\r\n/**\r\n * For user non actionable traces use AI Internal prefix.\r\n */\r\nvar AiNonUserActionablePrefix = \"AI (Internal): \";\r\n/**\r\n * Prefix of the traces in portal.\r\n */\r\nvar AiUserActionablePrefix = \"AI: \";\r\n/**\r\n * Session storage key for the prefix for the key indicating message type already logged\r\n */\r\nvar AIInternalMessagePrefix = \"AITR_\";\r\nfunction _sanitizeDiagnosticText(text) {\r\n if (text) {\r\n return \"\\\"\" + text[_DYN_REPLACE /* @min:%2ereplace */](/\\\"/g, STR_EMPTY) + \"\\\"\";\r\n }\r\n return STR_EMPTY;\r\n}\r\nfunction _logToConsole(func, message) {\r\n var theConsole = getConsole();\r\n if (!!theConsole) {\r\n var logFunc = \"log\";\r\n if (theConsole[func]) {\r\n logFunc = func;\r\n }\r\n if (isFunction(theConsole[logFunc])) {\r\n theConsole[logFunc](message);\r\n }\r\n }\r\n}\r\nvar _InternalLogMessage = /** @class */ (function () {\r\n function _InternalLogMessage(msgId, msg, isUserAct, properties) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n var _self = this;\r\n _self[_DYN_MESSAGE_ID /* @min:%2emessageId */] = msgId;\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] =\r\n (isUserAct ? AiUserActionablePrefix : AiNonUserActionablePrefix) +\r\n msgId;\r\n var strProps = STR_EMPTY;\r\n if (hasJSON()) {\r\n strProps = getJSON().stringify(properties);\r\n }\r\n var diagnosticText = (msg ? \" message:\" + _sanitizeDiagnosticText(msg) : STR_EMPTY) +\r\n (properties ? \" props:\" + _sanitizeDiagnosticText(strProps) : STR_EMPTY);\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] += diagnosticText;\r\n }\r\n _InternalLogMessage.dataType = \"MessageData\";\r\n return _InternalLogMessage;\r\n}());\r\nexport { _InternalLogMessage };\r\nexport function safeGetLogger(core, config) {\r\n return (core || {})[_DYN_LOGGER /* @min:%2elogger */] || new DiagnosticLogger(config);\r\n}\r\nvar DiagnosticLogger = /** @class */ (function () {\r\n function DiagnosticLogger(config) {\r\n this.identifier = \"DiagnosticLogger\";\r\n /**\r\n * The internal logging queue\r\n */\r\n this.queue = [];\r\n /**\r\n * Count of internal messages sent\r\n */\r\n var _messageCount = 0;\r\n /**\r\n * Holds information about what message types were already logged to console or sent to server.\r\n */\r\n var _messageLogged = {};\r\n var _loggingLevelConsole;\r\n var _loggingLevelTelemetry;\r\n var _maxInternalMessageLimit;\r\n var _enableDebugExceptions;\r\n dynamicProto(DiagnosticLogger, this, function (_self) {\r\n _setDefaultsFromConfig(config || {});\r\n _self.consoleLoggingLevel = function () { return _loggingLevelConsole; };\r\n _self.telemetryLoggingLevel = function () { return _loggingLevelTelemetry; };\r\n _self.maxInternalMessageLimit = function () { return _maxInternalMessageLimit; };\r\n _self[_DYN_ENABLE_DEBUG_EXCEPTI4 /* @min:%2eenableDebugExceptions */] = function () { return _enableDebugExceptions; };\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\n _self.throwInternal = function (severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n var message = new _InternalLogMessage(msgId, msg, isUserAct, properties);\r\n if (_enableDebugExceptions) {\r\n throw dumpObj(message);\r\n }\r\n else {\r\n // Get the logging function and fallback to warnToConsole of for some reason errorToConsole doesn't exist\r\n var logFunc = severity === 1 /* eLoggingSeverity.CRITICAL */ ? STR_ERROR_TO_CONSOLE : STR_WARN_TO_CONSOLE;\r\n if (!isUndefined(message[_DYN_MESSAGE /* @min:%2emessage */])) {\r\n if (isUserAct) {\r\n // check if this message type was already logged to console for this page view and if so, don't log it again\r\n var messageKey = +message[_DYN_MESSAGE_ID /* @min:%2emessageId */];\r\n if (!_messageLogged[messageKey] && _loggingLevelConsole >= severity) {\r\n _self[logFunc](message[_DYN_MESSAGE /* @min:%2emessage */]);\r\n _messageLogged[messageKey] = true;\r\n }\r\n }\r\n else {\r\n // Only log traces if the console Logging Level is >= the throwInternal severity level\r\n if (_loggingLevelConsole >= severity) {\r\n _self[logFunc](message[_DYN_MESSAGE /* @min:%2emessage */]);\r\n }\r\n }\r\n _logInternalMessage(severity, message);\r\n }\r\n else {\r\n _debugExtMsg(\"throw\" + (severity === 1 /* eLoggingSeverity.CRITICAL */ ? \"Critical\" : \"Warning\"), message);\r\n }\r\n }\r\n };\r\n /**\r\n * This will write a warning to the console if possible\r\n * @param message {string} - The warning message\r\n */\r\n _self[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */] = function (message) {\r\n _logToConsole(\"warn\", message);\r\n _debugExtMsg(\"warning\", message);\r\n };\r\n /**\r\n * This will write an error to the console if possible\r\n * @param message {string} - The error message\r\n */\r\n _self[STR_ERROR_TO_CONSOLE /* @min:%2eerrorToConsole */] = function (message) {\r\n _logToConsole(\"error\", message);\r\n _debugExtMsg(\"error\", message);\r\n };\r\n /**\r\n * Resets the internal message count\r\n */\r\n _self.resetInternalMessageCount = function () {\r\n _messageCount = 0;\r\n _messageLogged = {};\r\n };\r\n /**\r\n * Logs a message to the internal queue.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The message to log.\r\n */\r\n _self[_DYN_LOG_INTERNAL_MESSAGE /* @min:%2elogInternalMessage */] = _logInternalMessage;\r\n function _logInternalMessage(severity, message) {\r\n if (_areInternalMessagesThrottled()) {\r\n return;\r\n }\r\n // check if this message type was already logged for this session and if so, don't log it again\r\n var logMessage = true;\r\n var messageKey = AIInternalMessagePrefix + message[_DYN_MESSAGE_ID /* @min:%2emessageId */];\r\n // if the session storage is not available, limit to only one message type per page view\r\n if (_messageLogged[messageKey]) {\r\n logMessage = false;\r\n }\r\n else {\r\n _messageLogged[messageKey] = true;\r\n }\r\n if (logMessage) {\r\n // Push the event in the internal queue\r\n if (severity <= _loggingLevelTelemetry) {\r\n _self.queue[_DYN_PUSH /* @min:%2epush */](message);\r\n _messageCount++;\r\n _debugExtMsg((severity === 1 /* eLoggingSeverity.CRITICAL */ ? \"error\" : \"warn\"), message);\r\n }\r\n // When throttle limit reached, send a special event\r\n if (_messageCount === _maxInternalMessageLimit) {\r\n var throttleLimitMessage = \"Internal events throttle limit per PageView reached for this app.\";\r\n var throttleMessage = new _InternalLogMessage(23 /* _eInternalMessageId.MessageLimitPerPVExceeded */, throttleLimitMessage, false);\r\n _self.queue[_DYN_PUSH /* @min:%2epush */](throttleMessage);\r\n if (severity === 1 /* eLoggingSeverity.CRITICAL */) {\r\n _self[STR_ERROR_TO_CONSOLE /* @min:%2eerrorToConsole */](throttleLimitMessage);\r\n }\r\n else {\r\n _self[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](throttleLimitMessage);\r\n }\r\n }\r\n }\r\n }\r\n function _setDefaultsFromConfig(config) {\r\n _loggingLevelConsole = getCfgValue(config.loggingLevelConsole, 0);\r\n _loggingLevelTelemetry = getCfgValue(config.loggingLevelTelemetry, 1);\r\n _maxInternalMessageLimit = getCfgValue(config.maxMessageLimit, 25);\r\n _enableDebugExceptions = getCfgValue(config[_DYN_ENABLE_DEBUG_EXCEPTI4 /* @min:%2eenableDebugExceptions */], false);\r\n }\r\n function _areInternalMessagesThrottled() {\r\n return _messageCount >= _maxInternalMessageLimit;\r\n }\r\n function _debugExtMsg(name, data) {\r\n var dbgExt = getDebugExt(config || {});\r\n if (dbgExt && dbgExt[_DYN_DIAG_LOG /* @min:%2ediagLog */]) {\r\n dbgExt[_DYN_DIAG_LOG /* @min:%2ediagLog */](name, data);\r\n }\r\n }\r\n });\r\n }\r\n// Removed Stub for DiagnosticLogger.prototype.enableDebugExceptions.\r\n// Removed Stub for DiagnosticLogger.prototype.consoleLoggingLevel.\r\n// Removed Stub for DiagnosticLogger.prototype.telemetryLoggingLevel.\r\n// Removed Stub for DiagnosticLogger.prototype.maxInternalMessageLimit.\r\n// Removed Stub for DiagnosticLogger.prototype.throwInternal.\r\n// Removed Stub for DiagnosticLogger.prototype.warnToConsole.\r\n// Removed Stub for DiagnosticLogger.prototype.errorToConsole.\r\n// Removed Stub for DiagnosticLogger.prototype.resetInternalMessageCount.\r\n// Removed Stub for DiagnosticLogger.prototype.logInternalMessage.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n DiagnosticLogger.__ieDyn=1;\n\n return DiagnosticLogger;\r\n}());\r\nexport { DiagnosticLogger };\r\nfunction _getLogger(logger) {\r\n return (logger || new DiagnosticLogger());\r\n}\r\n/**\r\n * This is a helper method which will call throwInternal on the passed logger, will throw exceptions in\r\n * debug mode or attempt to log the error as a console warning. This helper is provided mostly to better\r\n * support minification as logger.throwInternal() will not compress the publish \"throwInternal\" used throughout\r\n * the code.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\nexport function _throwInternal(logger, severity, msgId, msg, properties, isUserAct) {\r\n if (isUserAct === void 0) { isUserAct = false; }\r\n _getLogger(logger).throwInternal(severity, msgId, msg, properties, isUserAct);\r\n}\r\n/**\r\n * This is a helper method which will call warnToConsole on the passed logger with the provided message.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\nexport function _warnToConsole(logger, message) {\r\n _getLogger(logger)[STR_WARN_TO_CONSOLE /* @min:%2ewarnToConsole */](message);\r\n}\r\n/**\r\n * Logs a message to the internal queue.\r\n * @param logger - The Diagnostic Logger instance to use.\r\n * @param severity {LoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The message to log.\r\n */\r\nexport function _logInternalMessage(logger, severity, message) {\r\n _getLogger(logger)[_DYN_LOG_INTERNAL_MESSAGE /* @min:%2elogInternalMessage */](severity, message);\r\n}\r\n//# sourceMappingURL=DiagnosticLogger.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { getGlobal, strShimObject, strShimPrototype, strShimUndefined } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_CALL, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_NAME, _DYN_SPLIT, _DYN_TO_LOWER_CASE, _DYN_USER_AGENT } from \"../__DynamicConstants\";\r\nimport { isString, isUndefined, strContains } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n/**\r\n * This file exists to hold environment utilities that are required to check and\r\n * validate the current operating environment. Unless otherwise required, please\r\n * only use defined methods (functions) in this class so that users of these\r\n * functions/properties only need to include those that are used within their own modules.\r\n */\r\nvar strWindow = \"window\";\r\nvar strDocument = \"document\";\r\nvar strDocumentMode = \"documentMode\";\r\nvar strNavigator = \"navigator\";\r\nvar strHistory = \"history\";\r\nvar strLocation = \"location\";\r\nvar strConsole = \"console\";\r\nvar strPerformance = \"performance\";\r\nvar strJSON = \"JSON\";\r\nvar strCrypto = \"crypto\";\r\nvar strMsCrypto = \"msCrypto\";\r\nvar strReactNative = \"ReactNative\";\r\nvar strMsie = \"msie\";\r\nvar strTrident = \"trident/\";\r\nvar strXMLHttpRequest = \"XMLHttpRequest\";\r\nvar _isTrident = null;\r\nvar _navUserAgentCheck = null;\r\nvar _enableMocks = false;\r\nvar _useXDomainRequest = null;\r\nvar _beaconsSupported = null;\r\nfunction _hasProperty(theClass, property) {\r\n var supported = false;\r\n if (theClass) {\r\n try {\r\n supported = property in theClass;\r\n if (!supported) {\r\n var proto = theClass[strShimPrototype];\r\n if (proto) {\r\n supported = property in proto;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // Do Nothing\r\n }\r\n if (!supported) {\r\n try {\r\n var tmp = new theClass();\r\n supported = !isUndefined(tmp[property]);\r\n }\r\n catch (e) {\r\n // Do Nothing\r\n }\r\n }\r\n }\r\n return supported;\r\n}\r\n/**\r\n * Enable the lookup of test mock objects if requested\r\n * @param enabled\r\n */\r\nexport function setEnableEnvMocks(enabled) {\r\n _enableMocks = enabled;\r\n}\r\n/**\r\n * Return the named global object if available, will return null if the object is not available.\r\n * @param name The globally named object\r\n */\r\nexport function getGlobalInst(name) {\r\n var gbl = getGlobal();\r\n if (gbl && gbl[name]) {\r\n return gbl[name];\r\n }\r\n // Test workaround, for environments where <global>.window (when global == window) doesn't return the base window\r\n if (name === strWindow && hasWindow()) {\r\n // tslint:disable-next-line: no-angle-bracket-type-assertion\r\n return window;\r\n }\r\n return null;\r\n}\r\n/**\r\n * Checks if window object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a window\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: window is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasWindow() {\r\n return Boolean(typeof window === strShimObject && window);\r\n}\r\n/**\r\n * Returns the global window object if it is present otherwise null.\r\n * This helper is used to access the window object without causing an exception\r\n * \"Uncaught ReferenceError: window is not defined\"\r\n */\r\nexport function getWindow() {\r\n if (hasWindow()) {\r\n return window;\r\n }\r\n // Return the global instance or null\r\n return getGlobalInst(strWindow);\r\n}\r\n/**\r\n * Checks if document object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a document\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: document is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasDocument() {\r\n return Boolean(typeof document === strShimObject && document);\r\n}\r\n/**\r\n * Returns the global document object if it is present otherwise null.\r\n * This helper is used to access the document object without causing an exception\r\n * \"Uncaught ReferenceError: document is not defined\"\r\n */\r\nexport function getDocument() {\r\n if (hasDocument()) {\r\n return document;\r\n }\r\n return getGlobalInst(strDocument);\r\n}\r\n/**\r\n * Checks if navigator object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a navigator\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: navigator is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasNavigator() {\r\n return Boolean(typeof navigator === strShimObject && navigator);\r\n}\r\n/**\r\n * Returns the global navigator object if it is present otherwise null.\r\n * This helper is used to access the navigator object without causing an exception\r\n * \"Uncaught ReferenceError: navigator is not defined\"\r\n */\r\nexport function getNavigator() {\r\n if (hasNavigator()) {\r\n return navigator;\r\n }\r\n return getGlobalInst(strNavigator);\r\n}\r\n/**\r\n * Checks if history object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: history is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasHistory() {\r\n return Boolean(typeof history === strShimObject && history);\r\n}\r\n/**\r\n * Returns the global history object if it is present otherwise null.\r\n * This helper is used to access the history object without causing an exception\r\n * \"Uncaught ReferenceError: history is not defined\"\r\n */\r\nexport function getHistory() {\r\n if (hasHistory()) {\r\n return history;\r\n }\r\n return getGlobalInst(strHistory);\r\n}\r\n/**\r\n * Returns the global location object if it is present otherwise null.\r\n * This helper is used to access the location object without causing an exception\r\n * \"Uncaught ReferenceError: location is not defined\"\r\n */\r\nexport function getLocation(checkForMock) {\r\n if (checkForMock && _enableMocks) {\r\n var mockLocation = getGlobalInst(\"__mockLocation\");\r\n if (mockLocation) {\r\n return mockLocation;\r\n }\r\n }\r\n if (typeof location === strShimObject && location) {\r\n return location;\r\n }\r\n return getGlobalInst(strLocation);\r\n}\r\n/**\r\n * Returns the global console object\r\n */\r\nexport function getConsole() {\r\n if (typeof console !== strShimUndefined) {\r\n return console;\r\n }\r\n return getGlobalInst(strConsole);\r\n}\r\n/**\r\n * Returns the performance object if it is present otherwise null.\r\n * This helper is used to access the performance object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getPerformance() {\r\n return getGlobalInst(strPerformance);\r\n}\r\n/**\r\n * Checks if JSON object is available, this is required as we support the API running without a\r\n * window /document (eg. Node server, electron webworkers) and if we attempt to assign a history\r\n * object to a local variable or pass as an argument an \"Uncaught ReferenceError: JSON is not defined\"\r\n * exception will be thrown.\r\n * Defined as a function to support lazy / late binding environments.\r\n */\r\nexport function hasJSON() {\r\n return Boolean((typeof JSON === strShimObject && JSON) || getGlobalInst(strJSON) !== null);\r\n}\r\n/**\r\n * Returns the global JSON object if it is present otherwise null.\r\n * This helper is used to access the JSON object without causing an exception\r\n * \"Uncaught ReferenceError: JSON is not defined\"\r\n */\r\nexport function getJSON() {\r\n if (hasJSON()) {\r\n return JSON || getGlobalInst(strJSON);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getCrypto() {\r\n return getGlobalInst(strCrypto);\r\n}\r\n/**\r\n * Returns the crypto object if it is present otherwise null.\r\n * This helper is used to access the crypto object from the current\r\n * global instance which could be window or globalThis for a web worker\r\n */\r\nexport function getMsCrypto() {\r\n return getGlobalInst(strMsCrypto);\r\n}\r\n/**\r\n * Returns whether the environment is reporting that we are running in a React Native Environment\r\n */\r\nexport function isReactNative() {\r\n // If running in React Native, navigator.product will be populated\r\n var nav = getNavigator();\r\n if (nav && nav.product) {\r\n return nav.product === strReactNative;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Identifies whether the current environment appears to be IE\r\n */\r\nexport function isIE() {\r\n var nav = getNavigator();\r\n if (nav && (nav[_DYN_USER_AGENT /* @min:%2euserAgent */] !== _navUserAgentCheck || _isTrident === null)) {\r\n // Added to support test mocking of the user agent\r\n _navUserAgentCheck = nav[_DYN_USER_AGENT /* @min:%2euserAgent */];\r\n var userAgent = (_navUserAgentCheck || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n _isTrident = (strContains(userAgent, strMsie) || strContains(userAgent, strTrident));\r\n }\r\n return _isTrident;\r\n}\r\n/**\r\n * Gets IE version returning the document emulation mode if we are running on IE, or null otherwise\r\n */\r\nexport function getIEVersion(userAgentStr) {\r\n if (userAgentStr === void 0) { userAgentStr = null; }\r\n if (!userAgentStr) {\r\n var navigator_1 = getNavigator() || {};\r\n userAgentStr = navigator_1 ? (navigator_1[_DYN_USER_AGENT /* @min:%2euserAgent */] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() : STR_EMPTY;\r\n }\r\n var ua = (userAgentStr || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n // Also check for documentMode in case X-UA-Compatible meta tag was included in HTML.\r\n if (strContains(ua, strMsie)) {\r\n var doc = getDocument() || {};\r\n return Math.max(parseInt(ua[_DYN_SPLIT /* @min:%2esplit */](strMsie)[1]), (doc[strDocumentMode] || 0));\r\n }\r\n else if (strContains(ua, strTrident)) {\r\n var tridentVer = parseInt(ua[_DYN_SPLIT /* @min:%2esplit */](strTrident)[1]);\r\n if (tridentVer) {\r\n return tridentVer + 4;\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Returns string representation of an object suitable for diagnostics logging.\r\n */\r\nexport function dumpObj(object) {\r\n var objectTypeDump = Object[strShimPrototype].toString[_DYN_CALL /* @min:%2ecall */](object);\r\n var propertyValueDump = STR_EMPTY;\r\n if (objectTypeDump === \"[object Error]\") {\r\n propertyValueDump = \"{ stack: '\" + object.stack + \"', message: '\" + object.message + \"', name: '\" + object[_DYN_NAME /* @min:%2ename */] + \"'\";\r\n }\r\n else if (hasJSON()) {\r\n propertyValueDump = getJSON().stringify(object);\r\n }\r\n return objectTypeDump + propertyValueDump;\r\n}\r\nexport function isSafari(userAgentStr) {\r\n if (!userAgentStr || !isString(userAgentStr)) {\r\n var navigator_2 = getNavigator() || {};\r\n userAgentStr = navigator_2 ? (navigator_2[_DYN_USER_AGENT /* @min:%2euserAgent */] || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() : STR_EMPTY;\r\n }\r\n var ua = (userAgentStr || STR_EMPTY)[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n return (ua[_DYN_INDEX_OF /* @min:%2eindexOf */](\"safari\") >= 0);\r\n}\r\n/**\r\n * Checks if HTML5 Beacons are supported in the current environment.\r\n * @returns True if supported, false otherwise.\r\n */\r\nexport function isBeaconsSupported() {\r\n if (_beaconsSupported === null) {\r\n _beaconsSupported = hasNavigator() && Boolean(getNavigator().sendBeacon);\r\n }\r\n return _beaconsSupported;\r\n}\r\n/**\r\n * Checks if the Fetch API is supported in the current environment.\r\n * @param withKeepAlive - [Optional] If True, check if fetch is available and it supports the keepalive feature, otherwise only check if fetch is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isFetchSupported(withKeepAlive) {\r\n var isSupported = false;\r\n try {\r\n isSupported = !!getGlobalInst(\"fetch\");\r\n var request = getGlobalInst(\"Request\");\r\n if (isSupported && withKeepAlive && request) {\r\n isSupported = _hasProperty(request, \"keepalive\");\r\n }\r\n }\r\n catch (e) {\r\n // Just Swallow any failure during availability checks\r\n }\r\n return isSupported;\r\n}\r\nexport function useXDomainRequest() {\r\n if (_useXDomainRequest === null) {\r\n _useXDomainRequest = (typeof XDomainRequest !== strShimUndefined);\r\n if (_useXDomainRequest && isXhrSupported()) {\r\n _useXDomainRequest = _useXDomainRequest && !_hasProperty(getGlobalInst(strXMLHttpRequest), \"withCredentials\");\r\n }\r\n }\r\n return _useXDomainRequest;\r\n}\r\n/**\r\n * Checks if XMLHttpRequest is supported\r\n * @returns True if supported, otherwise false\r\n */\r\nexport function isXhrSupported() {\r\n var isSupported = false;\r\n try {\r\n var xmlHttpRequest = getGlobalInst(strXMLHttpRequest);\r\n isSupported = !!xmlHttpRequest;\r\n }\r\n catch (e) {\r\n // Just Swallow any failure during availability checks\r\n }\r\n return isSupported;\r\n}\r\nfunction _getNamedValue(values, name) {\r\n if (values) {\r\n for (var i = 0; i < values[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n var value = values[i];\r\n if (value[_DYN_NAME /* @min:%2ename */]) {\r\n if (value[_DYN_NAME /* @min:%2ename */] === name) {\r\n return value;\r\n }\r\n }\r\n }\r\n }\r\n return {};\r\n}\r\n/**\r\n * Helper function to fetch the named meta-tag from the page.\r\n * @param name\r\n */\r\nexport function findMetaTag(name) {\r\n var doc = getDocument();\r\n if (doc && name) {\r\n // Look for a meta-tag\r\n return _getNamedValue(doc.querySelectorAll(\"meta\"), name).content;\r\n }\r\n return null;\r\n}\r\n/**\r\n * Helper function to fetch the named server timing value from the page response (first navigation event).\r\n * @param name\r\n */\r\nexport function findNamedServerTiming(name) {\r\n var value;\r\n var perf = getPerformance();\r\n if (perf) {\r\n // Try looking for a server-timing header\r\n var navPerf = perf.getEntriesByType(\"navigation\") || [];\r\n value = _getNamedValue((navPerf[_DYN_LENGTH /* @min:%2elength */] > 0 ? navPerf[0] : {}).serverTiming, name).description;\r\n }\r\n return value;\r\n}\r\n//# sourceMappingURL=EnvUtils.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_HANDLER, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_REPLACE, _DYN_SPLICE, _DYN_SPLIT, _DYN_TYPE } from \"../__DynamicConstants\";\r\nimport { createElmNodeData, createUniqueNamespace } from \"./DataCacheHelper\";\r\nimport { getDocument, getWindow } from \"./EnvUtils\";\r\nimport { arrForEach, arrIndexOf, isArray, objForEachKey, objKeys } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n// Added to help with minfication\r\nvar strOnPrefix = \"on\";\r\nvar strAttachEvent = \"attachEvent\";\r\nvar strAddEventHelper = \"addEventListener\";\r\nvar strDetachEvent = \"detachEvent\";\r\nvar strRemoveEventListener = \"removeEventListener\";\r\nvar strEvents = \"events\";\r\nvar strVisibilityChangeEvt = \"visibilitychange\";\r\nvar strPageHide = \"pagehide\";\r\nvar strPageShow = \"pageshow\";\r\nvar strUnload = \"unload\";\r\nvar strBeforeUnload = \"beforeunload\";\r\nvar strPageHideNamespace = createUniqueNamespace(\"aiEvtPageHide\");\r\nvar strPageShowNamespace = createUniqueNamespace(\"aiEvtPageShow\");\r\nvar rRemoveEmptyNs = /\\.[\\.]+/g;\r\nvar rRemoveTrailingEmptyNs = /[\\.]+$/;\r\nvar _guid = 1;\r\nvar elmNodeData = createElmNodeData(\"events\");\r\nvar eventNamespace = /^([^.]*)(?:\\.(.+)|)/;\r\nfunction _normalizeNamespace(name) {\r\n if (name && name[_DYN_REPLACE /* @min:%2ereplace */]) {\r\n return name[_DYN_REPLACE /* @min:%2ereplace */](/^[\\s\\.]+|(?=[\\s\\.])[\\.\\s]+$/g, STR_EMPTY);\r\n }\r\n return name;\r\n}\r\nfunction _getEvtNamespace(eventName, evtNamespace) {\r\n var _a;\r\n if (evtNamespace) {\r\n var theNamespace_1 = STR_EMPTY;\r\n if (isArray(evtNamespace)) {\r\n theNamespace_1 = STR_EMPTY;\r\n arrForEach(evtNamespace, function (name) {\r\n name = _normalizeNamespace(name);\r\n if (name) {\r\n if (name[0] !== \".\") {\r\n name = \".\" + name;\r\n }\r\n theNamespace_1 += name;\r\n }\r\n });\r\n }\r\n else {\r\n theNamespace_1 = _normalizeNamespace(evtNamespace);\r\n }\r\n if (theNamespace_1) {\r\n if (theNamespace_1[0] !== \".\") {\r\n theNamespace_1 = \".\" + theNamespace_1;\r\n }\r\n // We may only have the namespace and not an eventName\r\n eventName = (eventName || STR_EMPTY) + theNamespace_1;\r\n }\r\n }\r\n var parsedEvent = (eventNamespace.exec(eventName || STR_EMPTY) || []);\r\n return _a = {},\r\n _a[_DYN_TYPE /* @min:type */] = parsedEvent[1],\r\n _a.ns = ((parsedEvent[2] || STR_EMPTY).replace(rRemoveEmptyNs, \".\").replace(rRemoveTrailingEmptyNs, STR_EMPTY)[_DYN_SPLIT /* @min:%2esplit */](\".\").sort()).join(\".\"),\r\n _a;\r\n}\r\n/**\r\n * Get all of the registered events on the target object, this is primarily used for testing cleanup but may also be used by\r\n * applications to remove their own events\r\n * @param target - The EventTarget that has registered events\r\n * @param eventName - [Optional] The name of the event to return the registered handlers and full name (with namespaces)\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n */\r\nexport function __getRegisteredEvents(target, eventName, evtNamespace) {\r\n var theEvents = [];\r\n var eventCache = elmNodeData.get(target, strEvents, {}, false);\r\n var evtName = _getEvtNamespace(eventName, evtNamespace);\r\n objForEachKey(eventCache, function (evtType, registeredEvents) {\r\n arrForEach(registeredEvents, function (value) {\r\n var _a;\r\n if (!evtName[_DYN_TYPE /* @min:%2etype */] || evtName[_DYN_TYPE /* @min:%2etype */] === value.evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n if (!evtName.ns || evtName.ns === evtName.ns) {\r\n theEvents[_DYN_PUSH /* @min:%2epush */]((_a = {},\r\n _a[_DYN_NAME /* @min:name */] = value.evtName[_DYN_TYPE /* @min:%2etype */] + (value.evtName.ns ? \".\" + value.evtName.ns : STR_EMPTY),\r\n _a.handler = value[_DYN_HANDLER /* @min:%2ehandler */],\r\n _a));\r\n }\r\n }\r\n });\r\n });\r\n return theEvents;\r\n}\r\n// Exported for internal unit testing only\r\nfunction _getRegisteredEvents(target, evtName, addDefault) {\r\n if (addDefault === void 0) { addDefault = true; }\r\n var aiEvts = elmNodeData.get(target, strEvents, {}, addDefault);\r\n var registeredEvents = aiEvts[evtName];\r\n if (!registeredEvents) {\r\n registeredEvents = aiEvts[evtName] = [];\r\n }\r\n return registeredEvents;\r\n}\r\nfunction _doDetach(obj, evtName, handlerRef, useCapture) {\r\n if (obj && evtName && evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n if (obj[strRemoveEventListener]) {\r\n obj[strRemoveEventListener](evtName[_DYN_TYPE /* @min:%2etype */], handlerRef, useCapture);\r\n }\r\n else if (obj[strDetachEvent]) {\r\n obj[strDetachEvent](strOnPrefix + evtName[_DYN_TYPE /* @min:%2etype */], handlerRef);\r\n }\r\n }\r\n}\r\nfunction _doAttach(obj, evtName, handlerRef, useCapture) {\r\n var result = false;\r\n if (obj && evtName && evtName[_DYN_TYPE /* @min:%2etype */] && handlerRef) {\r\n if (obj[strAddEventHelper]) {\r\n // all browsers except IE before version 9\r\n obj[strAddEventHelper](evtName[_DYN_TYPE /* @min:%2etype */], handlerRef, useCapture);\r\n result = true;\r\n }\r\n else if (obj[strAttachEvent]) {\r\n // IE before version 9\r\n obj[strAttachEvent](strOnPrefix + evtName[_DYN_TYPE /* @min:%2etype */], handlerRef);\r\n result = true;\r\n }\r\n }\r\n return result;\r\n}\r\nfunction _doUnregister(target, events, evtName, unRegFn) {\r\n var idx = events[_DYN_LENGTH /* @min:%2elength */];\r\n while (idx--) {\r\n var theEvent = events[idx];\r\n if (theEvent) {\r\n if (!evtName.ns || evtName.ns === theEvent.evtName.ns) {\r\n if (!unRegFn || unRegFn(theEvent)) {\r\n _doDetach(target, theEvent.evtName, theEvent[_DYN_HANDLER /* @min:%2ehandler */], theEvent.capture);\r\n // Remove the registered event\r\n events[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n }\r\n }\r\n }\r\n }\r\n}\r\nfunction _unregisterEvents(target, evtName, unRegFn) {\r\n if (evtName[_DYN_TYPE /* @min:%2etype */]) {\r\n _doUnregister(target, _getRegisteredEvents(target, evtName[_DYN_TYPE /* @min:%2etype */]), evtName, unRegFn);\r\n }\r\n else {\r\n var eventCache = elmNodeData.get(target, strEvents, {});\r\n objForEachKey(eventCache, function (evtType, events) {\r\n _doUnregister(target, events, evtName, unRegFn);\r\n });\r\n // Cleanup\r\n if (objKeys(eventCache)[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n elmNodeData.kill(target, strEvents);\r\n }\r\n }\r\n}\r\nexport function mergeEvtNamespace(theNamespace, namespaces) {\r\n var newNamespaces;\r\n if (namespaces) {\r\n if (isArray(namespaces)) {\r\n newNamespaces = [theNamespace].concat(namespaces);\r\n }\r\n else {\r\n newNamespaces = [theNamespace, namespaces];\r\n }\r\n // resort the namespaces so they are always in order\r\n newNamespaces = (_getEvtNamespace(\"xx\", newNamespaces).ns)[_DYN_SPLIT /* @min:%2esplit */](\".\");\r\n }\r\n else {\r\n newNamespaces = theNamespace;\r\n }\r\n return newNamespaces;\r\n}\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj Object to add the event too.\r\n * @param eventName String that specifies any of the standard DHTML Events without \"on\" prefix, if may also include an optional (dot \".\" prefixed)\r\n * namespaces \"click\" \"click.mynamespace\" in addition to specific namespaces.\r\n * @param handlerRef Pointer that specifies the function to call when event fires\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n * @param useCapture [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function eventOn(target, eventName, handlerRef, evtNamespace, useCapture) {\r\n var _a;\r\n if (useCapture === void 0) { useCapture = false; }\r\n var result = false;\r\n if (target) {\r\n try {\r\n var evtName = _getEvtNamespace(eventName, evtNamespace);\r\n result = _doAttach(target, evtName, handlerRef, useCapture);\r\n if (result && elmNodeData.accept(target)) {\r\n var registeredEvent = (_a = {\r\n guid: _guid++,\r\n evtName: evtName\r\n },\r\n _a[_DYN_HANDLER /* @min:handler */] = handlerRef,\r\n _a.capture = useCapture,\r\n _a);\r\n _getRegisteredEvents(target, evtName.type)[_DYN_PUSH /* @min:%2epush */](registeredEvent);\r\n }\r\n }\r\n catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object to remove the event from\r\n * @param eventName {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param handlerRef {any} - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param evtNamespace - [Optional] Additional namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace,\r\n * if the eventName also includes a namespace the namespace(s) are merged into a single namespace\r\n * @param useCapture [Optional] Defaults to false\r\n */\r\nexport function eventOff(target, eventName, handlerRef, evtNamespace, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n if (target) {\r\n try {\r\n var evtName_1 = _getEvtNamespace(eventName, evtNamespace);\r\n var found_1 = false;\r\n _unregisterEvents(target, evtName_1, function (regEvent) {\r\n if ((evtName_1.ns && !handlerRef) || regEvent[_DYN_HANDLER /* @min:%2ehandler */] === handlerRef) {\r\n found_1 = true;\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (!found_1) {\r\n // fallback to try and remove as requested\r\n _doDetach(target, evtName_1, handlerRef, useCapture);\r\n }\r\n }\r\n catch (e) {\r\n // Just Ignore any error so that we don't break any execution path\r\n }\r\n }\r\n}\r\n/**\r\n * Binds the specified function to an event, so that the function gets called whenever the event fires on the object\r\n * @param obj Object to add the event too.\r\n * @param eventNameWithoutOn String that specifies any of the standard DHTML Events without \"on\" prefix and optional (dot \".\" prefixed) namespaces \"click\" \"click.mynamespace\".\r\n * @param handlerRef Pointer that specifies the function to call when event fires\r\n * @param useCapture [Optional] Defaults to false\r\n * @returns True if the function was bound successfully to the event, otherwise false\r\n */\r\nexport function attachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n return eventOn(obj, eventNameWithoutOn, handlerRef, null, useCapture);\r\n}\r\n/**\r\n * Removes an event handler for the specified event\r\n * @param Object to remove the event from\r\n * @param eventNameWithoutOn {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param handlerRef {any} - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param useCapture [Optional] Defaults to false\r\n */\r\nexport function detachEvent(obj, eventNameWithoutOn, handlerRef, useCapture) {\r\n if (useCapture === void 0) { useCapture = false; }\r\n eventOff(obj, eventNameWithoutOn, handlerRef, null, useCapture);\r\n}\r\n/**\r\n * Trys to add an event handler for the specified event to the window, body and document\r\n * @param eventName {string} - The name of the event\r\n * @param callback {any} - The callback function that needs to be executed for the given event\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @return {boolean} - true if the handler was successfully added\r\n */\r\nexport function addEventHandler(eventName, callback, evtNamespace) {\r\n var result = false;\r\n var w = getWindow();\r\n if (w) {\r\n result = eventOn(w, eventName, callback, evtNamespace);\r\n result = eventOn(w[\"body\"], eventName, callback, evtNamespace) || result;\r\n }\r\n var doc = getDocument();\r\n if (doc) {\r\n result = eventOn(doc, eventName, callback, evtNamespace) || result;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Trys to remove event handler(s) for the specified event/namespace to the window, body and document\r\n * @param eventName {string} - The name of the event, with optional namespaces or just the namespaces,\r\n * such as \"click\", \"click.mynamespace\" or \".mynamespace\"\r\n * @param callback {any} - - The callback function that needs to be removed from the given event, when using a\r\n * namespace (with or without a qualifying event) this may be null to remove all previously attached event handlers\r\n * otherwise this will only remove events with this specific handler.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n */\r\nexport function removeEventHandler(eventName, callback, evtNamespace) {\r\n var w = getWindow();\r\n if (w) {\r\n eventOff(w, eventName, callback, evtNamespace);\r\n eventOff(w[\"body\"], eventName, callback, evtNamespace);\r\n }\r\n var doc = getDocument();\r\n if (doc) {\r\n eventOff(doc, eventName, callback, evtNamespace);\r\n }\r\n}\r\n/**\r\n * Bind the listener to the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nfunction _addEventListeners(events, listener, excludeEvents, evtNamespace) {\r\n var added = false;\r\n if (listener && events && events[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(events, function (name) {\r\n if (name) {\r\n if (!excludeEvents || arrIndexOf(excludeEvents, name) === -1) {\r\n added = addEventHandler(name, listener, evtNamespace) || added;\r\n }\r\n }\r\n });\r\n }\r\n return added;\r\n}\r\n/**\r\n * Bind the listener to the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addEventListeners(events, listener, excludeEvents, evtNamespace) {\r\n var added = false;\r\n if (listener && events && isArray(events)) {\r\n added = _addEventListeners(events, listener, excludeEvents, evtNamespace);\r\n if (!added && excludeEvents && excludeEvents[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // Failed to add any listeners and we excluded some, so just attempt to add the excluded events\r\n added = _addEventListeners(events, listener, null, evtNamespace);\r\n }\r\n }\r\n return added;\r\n}\r\n/**\r\n * Remove the listener from the array of events\r\n * @param events An string array of event names to bind the listener to\r\n * @param listener The event callback to call when the event is triggered\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n */\r\nexport function removeEventListeners(events, listener, evtNamespace) {\r\n if (events && isArray(events)) {\r\n arrForEach(events, function (name) {\r\n if (name) {\r\n removeEventHandler(name, listener, evtNamespace);\r\n }\r\n });\r\n }\r\n}\r\n/**\r\n * Listen to the 'beforeunload', 'unload' and 'pagehide' events which indicates a page unload is occurring,\r\n * this does NOT listen to the 'visibilitychange' event as while it does indicate that the page is being hidden\r\n * it does not *necessarily* mean that the page is being completely unloaded, it can mean that the user is\r\n * just navigating to a different Tab and may come back (without unloading the page). As such you may also\r\n * need to listen to the 'addPageHideEventListener' and 'addPageShowEventListener' events.\r\n * @param listener - The event callback to call when a page unload event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked, unless no other events can be.\r\n * @param evtNamespace - [Optional] Namespace(s) to append to the event listeners so they can be uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageUnloadEventListener(listener, excludeEvents, evtNamespace) {\r\n // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n return addEventListeners([strBeforeUnload, strUnload, strPageHide], listener, excludeEvents, evtNamespace);\r\n}\r\n/**\r\n * Remove any matching 'beforeunload', 'unload' and 'pagehide' events that may have been added via addEventListener,\r\n * addEventListeners, addPageUnloadEventListener or addPageHideEventListener.\r\n * @param listener - The specific event callback to to be removed\r\n * @param evtNamespace - [Optional] Namespace(s) uniquely identified and removed based on this namespace.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function removePageUnloadEventListener(listener, evtNamespace) {\r\n removeEventListeners([strBeforeUnload, strUnload, strPageHide], listener, evtNamespace);\r\n}\r\n/**\r\n * Listen to the pagehide and visibility changing to 'hidden' events, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when if you plan to call\r\n * removePageShowEventListener as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The event callback to call when a page hide event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional] A Namespace to append to the event listeners so they can be uniquely identified and removed\r\n * based on this namespace. This call also adds an additional unique \"pageshow\" namespace to the events\r\n * so that only the matching \"removePageHideEventListener\" can remove these events.\r\n * Suggestion: pass as true if you are also calling addPageUnloadEventListener as that also hooks pagehide\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageHideEventListener(listener, excludeEvents, evtNamespace) {\r\n function _handlePageVisibility(evt) {\r\n var doc = getDocument();\r\n if (listener && doc && doc.visibilityState === \"hidden\") {\r\n listener(evt);\r\n }\r\n }\r\n // add the unique page show namespace to any provided namespace so we can only remove the ones added by \"pagehide\"\r\n var newNamespaces = mergeEvtNamespace(strPageHideNamespace, evtNamespace);\r\n var pageUnloadAdded = _addEventListeners([strPageHide], listener, excludeEvents, newNamespaces);\r\n if (!excludeEvents || arrIndexOf(excludeEvents, strVisibilityChangeEvt) === -1) {\r\n pageUnloadAdded = _addEventListeners([strVisibilityChangeEvt], _handlePageVisibility, excludeEvents, newNamespaces) || pageUnloadAdded;\r\n }\r\n if (!pageUnloadAdded && excludeEvents) {\r\n // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n pageUnloadAdded = addPageHideEventListener(listener, null, evtNamespace);\r\n }\r\n return pageUnloadAdded;\r\n}\r\n/**\r\n * Removes the pageHide event listeners added by addPageHideEventListener, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when calling addPageHideEventListener\r\n * as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The specific listener to remove for the 'pageshow' event only (ignored for 'visibilitychange')\r\n * @param evtNamespace - The unique namespace used when calling addPageShowEventListener\r\n */\r\nexport function removePageHideEventListener(listener, evtNamespace) {\r\n // add the unique page show namespace to any provided namespace so we only remove the ones added by \"pagehide\"\r\n var newNamespaces = mergeEvtNamespace(strPageHideNamespace, evtNamespace);\r\n removeEventListeners([strPageHide], listener, newNamespaces);\r\n removeEventListeners([strVisibilityChangeEvt], null, newNamespaces);\r\n}\r\n/**\r\n * Listen to the pageshow and visibility changing to 'visible' events, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when if you plan to call\r\n * removePageShowEventListener as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The event callback to call when a page is show event is triggered\r\n * @param excludeEvents - [Optional] An array of events that should not be hooked (if possible), unless no other events can be.\r\n * @param evtNamespace - [Optional/Recommended] A Namespace to append to the event listeners so they can be uniquely\r\n * identified and removed based on this namespace. This call also adds an additional unique \"pageshow\" namespace to the events\r\n * so that only the matching \"removePageShowEventListener\" can remove these events.\r\n * @returns true - when at least one of the events was registered otherwise false\r\n */\r\nexport function addPageShowEventListener(listener, excludeEvents, evtNamespace) {\r\n function _handlePageVisibility(evt) {\r\n var doc = getDocument();\r\n if (listener && doc && doc.visibilityState === \"visible\") {\r\n listener(evt);\r\n }\r\n }\r\n // add the unique page show namespace to any provided namespace so we can only remove the ones added by \"pageshow\"\r\n var newNamespaces = mergeEvtNamespace(strPageShowNamespace, evtNamespace);\r\n var pageShowAdded = _addEventListeners([strPageShow], listener, excludeEvents, newNamespaces);\r\n pageShowAdded = _addEventListeners([strVisibilityChangeEvt], _handlePageVisibility, excludeEvents, newNamespaces) || pageShowAdded;\r\n if (!pageShowAdded && excludeEvents) {\r\n // Failed to add any listeners and we where requested to exclude some, so just call again without excluding anything\r\n pageShowAdded = addPageShowEventListener(listener, null, evtNamespace);\r\n }\r\n return pageShowAdded;\r\n}\r\n/**\r\n * Removes the pageShow event listeners added by addPageShowEventListener, because the 'visibilitychange' uses\r\n * an internal proxy to detect the visibility state you SHOULD use a unique namespace when calling addPageShowEventListener\r\n * as the remove ignores the listener argument for the 'visibilitychange' event.\r\n * @param listener - The specific listener to remove for the 'pageshow' event only (ignored for 'visibilitychange')\r\n * @param evtNamespace - The unique namespace used when calling addPageShowEventListener\r\n */\r\nexport function removePageShowEventListener(listener, evtNamespace) {\r\n // add the unique page show namespace to any provided namespace so we only remove the ones added by \"pageshow\"\r\n var newNamespaces = mergeEvtNamespace(strPageShowNamespace, evtNamespace);\r\n removeEventListeners([strPageShow], listener, newNamespaces);\r\n removeEventListeners([strVisibilityChangeEvt], null, newNamespaces);\r\n}\r\n//# sourceMappingURL=EventHelpers.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { ObjAssign, ObjClass, ObjDefineProperty, ObjHasOwnProperty, ObjProto, strShimFunction, strShimObject, strShimPrototype, strShimUndefined, throwTypeError } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_APPLY, _DYN_CALL, _DYN_INDEX_OF, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_REPLACE } from \"../__DynamicConstants\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\n// RESTRICT and AVOID circular dependencies you should not import other contained modules or export the contents of this file directly\r\n// Added to help with minfication\r\nvar strToISOString = \"toISOString\";\r\nvar cStrEndsWith = \"endsWith\";\r\nvar cStrStartsWith = \"startsWith\";\r\nvar strIndexOf = \"indexOf\";\r\nvar strMap = \"map\";\r\nvar strReduce = \"reduce\";\r\nvar cStrTrim = \"trim\";\r\nvar strToString = \"toString\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strConstructor = \"constructor\";\r\nvar _objDefineProperty = ObjDefineProperty;\r\nvar _objFreeze = ObjClass.freeze;\r\nvar _objSeal = ObjClass.seal;\r\nvar _objKeys = ObjClass.keys;\r\nvar StringProto = String[strShimPrototype];\r\nvar _strTrim = StringProto[cStrTrim];\r\nvar _strEndsWith = StringProto[cStrEndsWith];\r\nvar _strStartsWith = StringProto[cStrStartsWith];\r\nvar DateProto = Date[strShimPrototype];\r\nvar _dataToISOString = DateProto[strToISOString];\r\nvar _isArray = Array.isArray;\r\nvar _objToString = ObjProto[strToString];\r\nvar _fnToString = ObjHasOwnProperty[strToString];\r\n// Cache what this browser reports as the object function constructor (as a string)\r\nvar _objFunctionString = _fnToString[_DYN_CALL /* @min:%2ecall */](ObjClass);\r\nvar rCamelCase = /-([a-z])/g;\r\nvar rNormalizeInvalid = /([^\\w\\d_$])/g;\r\nvar rLeadingNumeric = /^(\\d+[\\w\\d_$])/;\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Object[\"getPrototypeOf\"];\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nexport function _getObjProto(target) {\r\n if (target) {\r\n // This method doesn't existing in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n return _objGetPrototypeOf(target);\r\n }\r\n // target[Constructor] May break if the constructor has been changed or removed\r\n var newProto = target[str__Proto] || target[strShimPrototype] || target[strConstructor];\r\n if (newProto) {\r\n return newProto;\r\n }\r\n }\r\n return null;\r\n}\r\nexport function objToString(obj) {\r\n return _objToString[_DYN_CALL /* @min:%2ecall */](obj);\r\n}\r\nexport function isTypeof(value, theType) {\r\n return typeof value === theType;\r\n}\r\nexport function isUndefined(value) {\r\n return value === undefined || typeof value === strShimUndefined;\r\n}\r\nexport function isNotUndefined(value) {\r\n return !isUndefined(value);\r\n}\r\nexport function isNullOrUndefined(value) {\r\n return (value === null || isUndefined(value));\r\n}\r\nexport function isNotNullOrUndefined(value) {\r\n return !isNullOrUndefined(value);\r\n}\r\nexport function hasOwnProperty(obj, prop) {\r\n return !!(obj && ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](obj, prop));\r\n}\r\nexport function isObject(value) {\r\n // Changing to inline for performance\r\n return !!(value && typeof value === strShimObject);\r\n}\r\nexport function isFunction(value) {\r\n // Changing to inline for performance\r\n return !!(value && typeof value === strShimFunction);\r\n}\r\nexport function isPromiseLike(value) {\r\n return value && isFunction(value.then);\r\n}\r\n/**\r\n * Validates that the string name conforms to the JS IdentifierName specification and if not\r\n * normalizes the name so that it would. This method does not identify or change any keywords\r\n * meaning that if you pass in a known keyword the same value will be returned.\r\n * This is a simplified version\r\n * @param name The name to validate\r\n */\r\nexport function normalizeJsName(name) {\r\n var value = name;\r\n if (value && isString(value)) {\r\n // CamelCase everything after the \"-\" and remove the dash\r\n value = value[_DYN_REPLACE /* @min:%2ereplace */](rCamelCase, function (_all, letter) {\r\n return letter.toUpperCase();\r\n });\r\n value = value[_DYN_REPLACE /* @min:%2ereplace */](rNormalizeInvalid, \"_\");\r\n value = value[_DYN_REPLACE /* @min:%2ereplace */](rLeadingNumeric, function (_all, match) {\r\n return \"_\" + match;\r\n });\r\n }\r\n return value;\r\n}\r\n/**\r\n * This is a helper function for the equivalent of arForEach(objKeys(target), callbackFn), this is a\r\n * performance optimization to avoid the creation of a new array for large objects\r\n * @param target The target object to find and process the keys\r\n * @param callbackfn The function to call with the details\r\n */\r\nexport function objForEachKey(target, callbackfn) {\r\n if (target) {\r\n for (var prop in target) {\r\n if (ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](target, prop)) {\r\n callbackfn[_DYN_CALL /* @min:%2ecall */](target, prop, target[prop]);\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * The strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function strEndsWith(value, search) {\r\n var result = false;\r\n if (value && search && !(result = value === search)) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n result = _strEndsWith ? value[cStrEndsWith](search) : _strEndsWithPoly(value, search);\r\n }\r\n return result;\r\n}\r\n/**\r\n * The _strEndsWith() method determines whether a string ends with the characters of a specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param search - The characters to be searched for at the end of the value.\r\n * @returns true if the given search value is found at the end of the string, otherwise false.\r\n */\r\nexport function _strEndsWithPoly(value, search) {\r\n var result = false;\r\n var searchLen = search ? search[_DYN_LENGTH /* @min:%2elength */] : 0;\r\n var valLen = value ? value[_DYN_LENGTH /* @min:%2elength */] : 0;\r\n if (searchLen && valLen && valLen >= searchLen && !(result = value === search)) {\r\n var pos = valLen - 1;\r\n for (var lp = searchLen - 1; lp >= 0; lp--) {\r\n if (value[pos] != search[lp]) {\r\n return false;\r\n }\r\n pos--;\r\n }\r\n result = true;\r\n }\r\n return result;\r\n}\r\n/**\r\n * The strStartsWith() method determines whether a string starts with the characters of the specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param checkValue - The characters to be searched for at the start of the value.\r\n * @returns true if the given search value is found at the start of the string, otherwise false.\r\n */\r\nexport function strStartsWith(value, checkValue) {\r\n var result = false;\r\n if (value && checkValue && !(result = value === checkValue)) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n result = _strStartsWith ? value[cStrStartsWith](checkValue) : _strStartsWithPoly(value, checkValue);\r\n }\r\n return result;\r\n}\r\n/**\r\n * The strStartsWith() method determines whether a string starts with the characters of the specified string, returning true or false as appropriate.\r\n * @param value - The value to check whether it ends with the search value.\r\n * @param checkValue - The characters to be searched for at the start of the value.\r\n * @returns true if the given search value is found at the start of the string, otherwise false.\r\n */\r\nexport function _strStartsWithPoly(value, checkValue) {\r\n // Using helper for performance and because string startsWith() is not available on IE\r\n var result = false;\r\n var chkLen = checkValue ? checkValue[_DYN_LENGTH /* @min:%2elength */] : 0;\r\n if (value && chkLen && value[_DYN_LENGTH /* @min:%2elength */] >= chkLen && !(result = value === checkValue)) {\r\n for (var lp = 0; lp < chkLen; lp++) {\r\n if (value[lp] !== checkValue[lp]) {\r\n return false;\r\n }\r\n }\r\n result = true;\r\n }\r\n return result;\r\n}\r\n/**\r\n * A simple wrapper (for minification support) to check if the value contains the search string.\r\n * @param value - The string value to check for the existence of the search value\r\n * @param search - The value search within the value\r\n */\r\nexport function strContains(value, search) {\r\n if (value && search) {\r\n return value[_DYN_INDEX_OF /* @min:%2eindexOf */](search) !== -1;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Check if an object is of type Date\r\n */\r\nexport function isDate(obj) {\r\n return !!(obj && _objToString[_DYN_CALL /* @min:%2ecall */](obj) === \"[object Date]\");\r\n}\r\n/**\r\n * Check if an object is of type Array with optional generic T, the generic type is not validated\r\n * and exists to help with TypeScript validation only.\r\n */\r\nexport var isArray = _isArray || _isArrayPoly;\r\nfunction _isArrayPoly(obj) {\r\n return !!(obj && _objToString[_DYN_CALL /* @min:%2ecall */](obj) === \"[object Array]\");\r\n}\r\n/**\r\n * Check if an object is of type Error\r\n */\r\nexport function isError(obj) {\r\n return !!(obj && _objToString[_DYN_CALL /* @min:%2ecall */](obj) === \"[object Error]\");\r\n}\r\n/**\r\n * Checks if the type of value is a string.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a string, false otherwise.\r\n */\r\nexport function isString(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"string\";\r\n}\r\n/**\r\n * Checks if the type of value is a number.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a number, false otherwise.\r\n */\r\nexport function isNumber(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"number\";\r\n}\r\n/**\r\n * Checks if the type of value is a boolean.\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a boolean, false otherwise.\r\n */\r\nexport function isBoolean(value) {\r\n // Changing to inline for performance\r\n return typeof value === \"boolean\";\r\n}\r\n/**\r\n * Checks if the type of value is a Symbol.\r\n * This only returns a boolean as returning value is Symbol will cause issues for older TypeScript consumers\r\n * @param {any} value - Value to be checked.\r\n * @return {boolean} True if the value is a Symbol, false otherwise.\r\n */\r\nexport function isSymbol(value) {\r\n return typeof value === \"symbol\";\r\n}\r\n/**\r\n * Checks if the type of the value is a normal plain object (not a null or data)\r\n * @param value\r\n */\r\nexport function isPlainObject(value) {\r\n var result = false;\r\n if (value && typeof value === \"object\") {\r\n // Inlining _objGetPrototypeOf for performance to avoid an additional function call\r\n var proto = _objGetPrototypeOf ? _objGetPrototypeOf(value) : _getObjProto(value);\r\n if (!proto) {\r\n // No prototype found so this is a plain Object eg. 'Object.create(null)'\r\n result = true;\r\n }\r\n else {\r\n // Objects that have a prototype are plain only if they were created using the Object global (native) function\r\n if (proto[strConstructor] && ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](proto, strConstructor)) {\r\n proto = proto[strConstructor];\r\n }\r\n result = typeof proto === strShimFunction && _fnToString[_DYN_CALL /* @min:%2ecall */](proto) === _objFunctionString;\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Convert a date to I.S.O. format in IE8\r\n */\r\nexport function toISOString(date) {\r\n if (date) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n return _dataToISOString ? date[strToISOString]() : _toISOStringPoly(date);\r\n }\r\n}\r\n/**\r\n * Convert a date to I.S.O. format in IE8\r\n */\r\nexport function _toISOStringPoly(date) {\r\n if (date && date.getUTCFullYear) {\r\n var pad = function (num) {\r\n var r = String(num);\r\n if (r[_DYN_LENGTH /* @min:%2elength */] === 1) {\r\n r = \"0\" + r;\r\n }\r\n return r;\r\n };\r\n return date.getUTCFullYear()\r\n + \"-\" + pad(date.getUTCMonth() + 1)\r\n + \"-\" + pad(date.getUTCDate())\r\n + \"T\" + pad(date.getUTCHours())\r\n + \":\" + pad(date.getUTCMinutes())\r\n + \":\" + pad(date.getUTCSeconds())\r\n + \".\" + String((date.getUTCMilliseconds() / 1000).toFixed(3)).slice(2, 5)\r\n + \"Z\";\r\n }\r\n}\r\n/**\r\n * Performs the specified action for each element in an array. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype\r\n * implementation. Note: For consistency this will not use the Array.prototype.xxxx implementation if it exists as this would\r\n * cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array. It can return -1 to break out of the loop\r\n * @param thisArg [Optional] An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\r\n */\r\nexport function arrForEach(arr, callbackfn, thisArg) {\r\n var len = arr[_DYN_LENGTH /* @min:%2elength */];\r\n try {\r\n for (var idx = 0; idx < len; idx++) {\r\n if (idx in arr) {\r\n if (callbackfn[_DYN_CALL /* @min:%2ecall */](thisArg || arr, arr[idx], idx, arr) === -1) {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n}\r\n/**\r\n * Returns the index of the first occurrence of a value in an array. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype\r\n * implementation. Note: For consistency this will not use the Array.prototype.xxxx implementation if it exists as this would\r\n * cause a testing requirement to test with and without the implementations\r\n * @param searchElement The value to locate in the array.\r\n * @param fromIndex The array index at which to begin the search. If fromIndex is omitted, the search starts at index 0.\r\n */\r\nexport function arrIndexOf(arr, searchElement, fromIndex) {\r\n if (arr) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (arr[strIndexOf]) {\r\n return arr[strIndexOf](searchElement, fromIndex);\r\n }\r\n var len = arr[_DYN_LENGTH /* @min:%2elength */];\r\n var from = fromIndex || 0;\r\n try {\r\n for (var lp = Math.max(from >= 0 ? from : len - Math.abs(from), 0); lp < len; lp++) {\r\n if (lp in arr && arr[lp] === searchElement) {\r\n return lp;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n }\r\n return -1;\r\n}\r\n/**\r\n * Calls a defined callback function on each element of an array, and returns an array that contains the results. This helper exists\r\n * to avoid adding a polyfil for older browsers that do not define Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page\r\n * checks for presence/absence of the prototype implementation. Note: For consistency this will not use the Array.prototype.xxxx\r\n * implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.\r\n * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.\r\n */\r\nexport function arrMap(arr, callbackfn, thisArg) {\r\n var results;\r\n if (arr) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (arr[strMap]) {\r\n return arr[strMap](callbackfn, thisArg);\r\n }\r\n var len = arr[_DYN_LENGTH /* @min:%2elength */];\r\n var _this = thisArg || arr;\r\n results = new Array(len);\r\n try {\r\n for (var lp = 0; lp < len; lp++) {\r\n if (lp in arr) {\r\n results[lp] = callbackfn[_DYN_CALL /* @min:%2ecall */](_this, arr[lp], arr);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n }\r\n return results;\r\n}\r\n/**\r\n * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is\r\n * provided as an argument in the next call to the callback function. This helper exists to avoid adding a polyfil for older browsers that do not define\r\n * Array.prototype.xxxx (eg. ES3 only, IE8) just in case any page checks for presence/absence of the prototype implementation. Note: For consistency\r\n * this will not use the Array.prototype.xxxx implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.\r\n * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.\r\n */\r\nexport function arrReduce(arr, callbackfn, initialValue) {\r\n var value;\r\n if (arr) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (arr[strReduce]) {\r\n return arr[strReduce](callbackfn, initialValue);\r\n }\r\n var len = arr[_DYN_LENGTH /* @min:%2elength */];\r\n var lp = 0;\r\n // Specifically checking the number of passed arguments as the value could be anything\r\n if (arguments[_DYN_LENGTH /* @min:%2elength */] >= 3) {\r\n value = arguments[2];\r\n }\r\n else {\r\n while (lp < len && !(lp in arr)) {\r\n lp++;\r\n }\r\n value = arr[lp++];\r\n }\r\n while (lp < len) {\r\n if (lp in arr) {\r\n value = callbackfn(value, arr[lp], lp, arr);\r\n }\r\n lp++;\r\n }\r\n }\r\n return value;\r\n}\r\n/**\r\n * helper method to trim strings (IE8 does not implement String.prototype.trim)\r\n */\r\nexport function strTrim(str) {\r\n if (str) {\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n str = (_strTrim && str[cStrTrim]) ? str[cStrTrim]() : (str[_DYN_REPLACE /* @min:%2ereplace */] ? str[_DYN_REPLACE /* @min:%2ereplace */](/^\\s+|(?=\\s)\\s+$/g, STR_EMPTY) : str);\r\n }\r\n return str;\r\n}\r\nvar _objKeysHasDontEnumBug = !({ toString: null }).propertyIsEnumerable(\"toString\");\r\nvar _objKeysDontEnums = [\r\n \"toString\",\r\n \"toLocaleString\",\r\n \"valueOf\",\r\n \"hasOwnProperty\",\r\n \"isPrototypeOf\",\r\n \"propertyIsEnumerable\",\r\n \"constructor\"\r\n];\r\n/**\r\n * Returns the names of the enumerable string properties and methods of an object. This helper exists to avoid adding a polyfil for older browsers\r\n * that do not define Object.keys eg. ES3 only, IE8 just in case any page checks for presence/absence of the prototype implementation.\r\n * Note: For consistency this will not use the Object.keys implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param obj Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\r\n */\r\nexport function objKeys(obj) {\r\n var objType = typeof obj;\r\n if (objType !== strShimFunction && (objType !== strShimObject || obj === null)) {\r\n throwTypeError(\"objKeys called on non-object\");\r\n }\r\n // For Performance try and use the native instance, using string lookup of the function to easily pass the ES3 build checks and minification\r\n if (!_objKeysHasDontEnumBug && _objKeys) {\r\n return _objKeys(obj);\r\n }\r\n var result = [];\r\n for (var prop in obj) {\r\n if (obj && ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](obj, prop)) {\r\n result[_DYN_PUSH /* @min:%2epush */](prop);\r\n }\r\n }\r\n if (_objKeysHasDontEnumBug) {\r\n var dontEnumsLength = _objKeysDontEnums[_DYN_LENGTH /* @min:%2elength */];\r\n for (var lp = 0; lp < dontEnumsLength; lp++) {\r\n if (obj && ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](obj, _objKeysDontEnums[lp])) {\r\n result[_DYN_PUSH /* @min:%2epush */](_objKeysDontEnums[lp]);\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n/**\r\n * Try to define get/set object property accessors for the target object/prototype, this will provide compatibility with\r\n * existing API definition when run within an ES5+ container that supports accessors but still enable the code to be loaded\r\n * and executed in an ES3 container, providing basic IE8 compatibility.\r\n * @param target The object on which to define the property.\r\n * @param prop The name of the property to be defined or modified.\r\n * @param getProp The getter function to wire against the getter.\r\n * @param setProp The setter function to wire against the setter.\r\n * @returns True if it was able to create the accessors otherwise false\r\n */\r\nexport function objDefineAccessors(target, prop, getProp, setProp) {\r\n if (_objDefineProperty) {\r\n try {\r\n var descriptor = {\r\n enumerable: true,\r\n configurable: true\r\n };\r\n if (getProp) {\r\n descriptor.get = getProp;\r\n }\r\n if (setProp) {\r\n descriptor.set = setProp;\r\n }\r\n _objDefineProperty(target, prop, descriptor);\r\n return true;\r\n }\r\n catch (e) {\r\n // IE8 Defines a defineProperty on Object but it's only supported for DOM elements so it will throw\r\n // We will just ignore this here.\r\n }\r\n }\r\n return false;\r\n}\r\nfunction _doNothing(value) {\r\n return value;\r\n}\r\nexport function deepFreeze(obj) {\r\n if (_objFreeze) {\r\n objForEachKey(obj, function (name, value) {\r\n if (isArray(value) || isObject(value)) {\r\n _objFreeze(value);\r\n }\r\n });\r\n }\r\n return objFreeze(obj);\r\n}\r\nexport var objFreeze = _objFreeze || _doNothing;\r\nexport var objSeal = _objSeal || _doNothing;\r\n/**\r\n * Return the current time via the Date now() function (if available) and falls back to (new Date()).getTime() if now() is unavailable (IE8 or less)\r\n * https://caniuse.com/#search=Date.now\r\n */\r\nexport function dateNow() {\r\n var dt = Date;\r\n return dt.now ? dt.now() : new dt().getTime();\r\n}\r\n/**\r\n * Returns the name of object if it's an Error. Otherwise, returns empty string.\r\n */\r\nexport function getExceptionName(object) {\r\n if (isError(object)) {\r\n return object[_DYN_NAME /* @min:%2ename */];\r\n }\r\n return STR_EMPTY;\r\n}\r\n/**\r\n * Sets the provided value on the target instance using the field name when the provided chk function returns true, the chk\r\n * function will only be called if the new value is no equal to the original value.\r\n * @param target - The target object\r\n * @param field - The key of the target\r\n * @param value - The value to set\r\n * @param valChk - [Optional] Callback to check the value that if supplied will be called check if the new value can be set\r\n * @param srcChk - [Optional] Callback to check to original value that if supplied will be called if the new value should be set (if allowed)\r\n * @returns The existing or new value, depending what was set\r\n */\r\nexport function setValue(target, field, value, valChk, srcChk) {\r\n var theValue = value;\r\n if (target) {\r\n theValue = target[field];\r\n if (theValue !== value && (!srcChk || srcChk(theValue)) && (!valChk || valChk(value))) {\r\n theValue = value;\r\n target[field] = theValue;\r\n }\r\n }\r\n return theValue;\r\n}\r\n/**\r\n * Returns the current value from the target object if not null or undefined otherwise sets the new value and returns it\r\n * @param target - The target object to return or set the default value\r\n * @param field - The key for the field to set on the target\r\n * @param defValue - [Optional] The value to set if not already present, when not provided a empty object will be added\r\n */\r\nexport function getSetValue(target, field, defValue) {\r\n var theValue;\r\n if (target) {\r\n theValue = target[field];\r\n if (!theValue && isNullOrUndefined(theValue)) {\r\n // Supports having the default as null\r\n theValue = !isUndefined(defValue) ? defValue : {};\r\n target[field] = theValue;\r\n }\r\n }\r\n else {\r\n // Expanded for performance so we only check defValue if required\r\n theValue = !isUndefined(defValue) ? defValue : {};\r\n }\r\n return theValue;\r\n}\r\n/**\r\n * Get the mapped config value, if null or undefined any supplied defaultValue will be returned.\r\n * @param field - The name of the field as the named enum value (number) or the string name.\r\n * @param defaultValue - The default value to return if the config field is not present, null or undefined.\r\n */\r\nexport function getCfgValue(theValue, defaultValue) {\r\n return !isNullOrUndefined(theValue) ? theValue : defaultValue;\r\n}\r\nexport function isNotTruthy(value) {\r\n return !value;\r\n}\r\nexport function isTruthy(value) {\r\n return !!value;\r\n}\r\nexport function throwError(message) {\r\n throw new Error(message);\r\n}\r\nfunction _createProxyFunction(source, funcName) {\r\n var srcFunc = null;\r\n var src = null;\r\n if (isFunction(source)) {\r\n srcFunc = source;\r\n }\r\n else {\r\n src = source;\r\n }\r\n return function () {\r\n // Capture the original arguments passed to the method\r\n var originalArguments = arguments;\r\n if (srcFunc) {\r\n src = srcFunc();\r\n }\r\n if (src) {\r\n return src[funcName][_DYN_APPLY /* @min:%2eapply */](src, originalArguments);\r\n }\r\n };\r\n}\r\n/**\r\n * Effectively assigns all enumerable properties (not just own properties) and functions (including inherited prototype) from\r\n * the source object to the target, it attempts to use proxy getters / setters (if possible) and proxy functions to avoid potential\r\n * implementation issues by assigning prototype functions as instance ones\r\n *\r\n * This method is the primary method used to \"update\" the snippet proxy with the ultimate implementations.\r\n *\r\n * Special ES3 Notes:\r\n * Updates (setting) of direct property values on the target or indirectly on the source object WILL NOT WORK PROPERLY, updates to the\r\n * properties of \"referenced\" object will work (target.context.newValue = 10 => will be reflected in the source.context as it's the\r\n * same object). ES3 Failures: assigning target.myProp = 3 -> Won't change source.myProp = 3, likewise the reverse would also fail.\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param chkSet - An optional callback to determine whether a specific property/function should be proxied\r\n */\r\nexport function proxyAssign(target, source, chkSet) {\r\n if (target && source && isObject(target) && isObject(source)) {\r\n var _loop_1 = function (field) {\r\n if (isString(field)) {\r\n var value = source[field];\r\n if (isFunction(value)) {\r\n if (!chkSet || chkSet(field, true, source, target)) {\r\n // Create a proxy function rather than just copying the (possible) prototype to the new object as an instance function\r\n target[field] = _createProxyFunction(source, field);\r\n }\r\n }\r\n else if (!chkSet || chkSet(field, false, source, target)) {\r\n if (hasOwnProperty(target, field)) {\r\n // Remove any previous instance property\r\n delete target[field];\r\n }\r\n if (!objDefineAccessors(target, field, function () {\r\n return source[field];\r\n }, function (theValue) {\r\n source[field] = theValue;\r\n })) {\r\n // Unable to create an accessor, so just assign the values as a fallback\r\n // -- this will (mostly) work for objects\r\n // -- but will fail for accessing primitives (if the source changes it) and all types of \"setters\" as the source won't be modified\r\n target[field] = value;\r\n }\r\n }\r\n }\r\n };\r\n // effectively apply/proxy full source to the target instance\r\n for (var field in source) {\r\n _loop_1(field);\r\n }\r\n }\r\n return target;\r\n}\r\n/**\r\n * Creates a proxy function on the target which internally will call the source version with all arguments passed to the target method.\r\n *\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param name - The function name that will be added on the target\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param theFunc - The function name on the source that will be proxied on the target\r\n * @param overwriteTarget - If `false` this will not replace any pre-existing name otherwise (the default) it will overwrite any existing name\r\n */\r\nexport function proxyFunctionAs(target, name, source, theFunc, overwriteTarget) {\r\n if (target && name && source) {\r\n if (overwriteTarget !== false || isUndefined(target[name])) {\r\n target[name] = _createProxyFunction(source, theFunc);\r\n }\r\n }\r\n}\r\n/**\r\n * Creates proxy functions on the target which internally will call the source version with all arguments passed to the target method.\r\n *\r\n * @param target - The target object to be assigned with the source properties and functions\r\n * @param source - The source object which will be assigned / called by setting / calling the targets proxies\r\n * @param functionsToProxy - An array of function names that will be proxied on the target\r\n * @param overwriteTarget - If false this will not replace any pre-existing name otherwise (the default) it will overwrite any existing name\r\n */\r\nexport function proxyFunctions(target, source, functionsToProxy, overwriteTarget) {\r\n if (target && source && isObject(target) && isArray(functionsToProxy)) {\r\n arrForEach(functionsToProxy, function (theFuncName) {\r\n if (isString(theFuncName)) {\r\n proxyFunctionAs(target, theFuncName, source, theFuncName, overwriteTarget);\r\n }\r\n });\r\n }\r\n return target;\r\n}\r\n/**\r\n * Simpler helper to create a dynamic class that implements the interface and populates the values with the defaults.\r\n * Only instance properties (hasOwnProperty) values are copied from the defaults to the new instance\r\n * @param defaults Simple helper\r\n */\r\nexport function createClassFromInterface(defaults) {\r\n return /** @class */ (function () {\r\n function class_1() {\r\n var _this_1 = this;\r\n if (defaults) {\r\n objForEachKey(defaults, function (field, value) {\r\n _this_1[field] = value;\r\n });\r\n }\r\n }\r\n return class_1;\r\n }());\r\n}\r\n/**\r\n * A helper function to assist with JIT performance for objects that have properties added / removed dynamically\r\n * this is primarily for chromium based browsers and has limited effects on Firefox and none of IE. Only call this\r\n * function after you have finished \"updating\" the object, calling this within loops reduces or defeats the benefits.\r\n * This helps when iterating using for..in, objKeys() and objForEach()\r\n * @param theObject - The object to be optimized if possible\r\n */\r\nexport function optimizeObject(theObject) {\r\n // V8 Optimization to cause the JIT compiler to create a new optimized object for looking up the own properties\r\n // primarily for object with <= 19 properties for >= 20 the effect is reduced or non-existent\r\n if (theObject && ObjAssign) {\r\n theObject = ObjClass(ObjAssign({}, theObject));\r\n }\r\n return theObject;\r\n}\r\nexport function objExtend(obj1, obj2, obj3, obj4, obj5, obj6) {\r\n // Variables\r\n var theArgs = arguments;\r\n var extended = theArgs[0] || {};\r\n var argLen = theArgs[_DYN_LENGTH /* @min:%2elength */];\r\n var deep = false;\r\n var idx = 1;\r\n // Check for \"Deep\" flag\r\n if (argLen > 0 && isBoolean(extended)) {\r\n deep = extended;\r\n extended = theArgs[idx] || {};\r\n idx++;\r\n }\r\n // Handle case when target is a string or something (possible in deep copy)\r\n if (!isObject(extended)) {\r\n extended = {};\r\n }\r\n // Loop through each remaining object and conduct a merge\r\n for (; idx < argLen; idx++) {\r\n var arg = theArgs[idx];\r\n var isArgArray = isArray(arg);\r\n var isArgObj = isObject(arg);\r\n for (var prop in arg) {\r\n var propOk = (isArgArray && (prop in arg)) || (isArgObj && (ObjHasOwnProperty[_DYN_CALL /* @min:%2ecall */](arg, prop)));\r\n if (!propOk) {\r\n continue;\r\n }\r\n var newValue = arg[prop];\r\n var isNewArray = void 0;\r\n // If deep merge and property is an object, merge properties\r\n if (deep && newValue && ((isNewArray = isArray(newValue)) || isPlainObject(newValue))) {\r\n // Grab the current value of the extended object\r\n var clone = extended[prop];\r\n if (isNewArray) {\r\n if (!isArray(clone)) {\r\n // We can't \"merge\" an array with a non-array so overwrite the original\r\n clone = [];\r\n }\r\n }\r\n else if (!isPlainObject(clone)) {\r\n // We can't \"merge\" an object with a non-object\r\n clone = {};\r\n }\r\n // Never move the original objects always clone them\r\n newValue = objExtend(deep, clone, newValue);\r\n }\r\n // Assign the new (or previous) value (unless undefined)\r\n if (newValue !== undefined) {\r\n extended[prop] = newValue;\r\n }\r\n }\r\n }\r\n return extended;\r\n}\r\n//# sourceMappingURL=HelperFuncs.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var STR_EMPTY = \"\";\r\nexport var STR_CHANNELS = \"channels\";\r\nexport var STR_CORE = \"core\";\r\nexport var STR_CREATE_PERF_MGR = \"createPerfMgr\";\r\nexport var STR_DISABLED = \"disabled\";\r\nexport var STR_EXTENSION_CONFIG = \"extensionConfig\";\r\nexport var STR_EXTENSIONS = \"extensions\";\r\nexport var STR_PROCESS_TELEMETRY = \"processTelemetry\";\r\nexport var STR_PRIORITY = \"priority\";\r\nexport var STR_EVENTS_SENT = \"eventsSent\";\r\nexport var STR_EVENTS_DISCARDED = \"eventsDiscarded\";\r\nexport var STR_EVENTS_SEND_REQUEST = \"eventsSendRequest\";\r\nexport var STR_PERF_EVENT = \"perfEvent\";\r\nexport var STR_ERROR_TO_CONSOLE = \"errorToConsole\";\r\nexport var STR_WARN_TO_CONSOLE = \"warnToConsole\";\r\nexport var STR_GET_PERF_MGR = \"getPerfMgr\";\r\n//# sourceMappingURL=InternalConstants.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_LENGTH } from \"../__DynamicConstants\";\r\nimport { getCrypto, getMsCrypto, isIE } from \"./EnvUtils\";\r\nimport { dateNow } from \"./HelperFuncs\";\r\nimport { STR_EMPTY } from \"./InternalConstants\";\r\nvar UInt32Mask = 0x100000000;\r\nvar MaxUInt32 = 0xffffffff;\r\n// MWC based Random generator (for IE)\r\nvar _mwcSeeded = false;\r\nvar _mwcW = 123456789;\r\nvar _mwcZ = 987654321;\r\n// Takes any integer\r\nfunction _mwcSeed(seedValue) {\r\n if (seedValue < 0) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n seedValue >>>= 0;\r\n }\r\n _mwcW = (123456789 + seedValue) & MaxUInt32;\r\n _mwcZ = (987654321 - seedValue) & MaxUInt32;\r\n _mwcSeeded = true;\r\n}\r\nfunction _autoSeedMwc() {\r\n // Simple initialization using default Math.random() - So we inherit any entropy from the browser\r\n // and bitwise XOR with the current milliseconds\r\n try {\r\n var now = dateNow() & 0x7fffffff;\r\n _mwcSeed(((Math.random() * UInt32Mask) ^ now) + now);\r\n }\r\n catch (e) {\r\n // Don't crash if something goes wrong\r\n }\r\n}\r\n/**\r\n * Generate a random value between 0 and maxValue, max value should be limited to a 32-bit maximum.\r\n * So maxValue(16) will produce a number from 0..16 (range of 17)\r\n * @param maxValue\r\n */\r\nexport function randomValue(maxValue) {\r\n if (maxValue > 0) {\r\n return Math.floor((random32() / MaxUInt32) * (maxValue + 1)) >>> 0;\r\n }\r\n return 0;\r\n}\r\n/**\r\n * generate a random 32-bit number (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), defaults un-unsigned.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function random32(signed) {\r\n var value = 0;\r\n var c = getCrypto() || getMsCrypto();\r\n if (c && c.getRandomValues) {\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = c.getRandomValues(new Uint32Array(1))[0] & MaxUInt32;\r\n }\r\n if (value === 0 && isIE()) {\r\n // For IE 6, 7, 8 (especially on XP) Math.random is not very random\r\n if (!_mwcSeeded) {\r\n // Set the seed for the Mwc algorithm\r\n _autoSeedMwc();\r\n }\r\n // Don't use Math.random for IE\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = mwcRandom32() & MaxUInt32;\r\n }\r\n if (value === 0) {\r\n // Make sure the number is converted into the specified range (-0x80000000..0x7FFFFFFF)\r\n value = Math.floor((UInt32Mask * Math.random()) | 0);\r\n }\r\n if (!signed) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n value >>>= 0;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Seed the MWC random number generator with the specified seed or a random value\r\n * @param value - optional the number to used as the seed, if undefined, null or zero a random value will be chosen\r\n */\r\nexport function mwcRandomSeed(value) {\r\n if (!value) {\r\n _autoSeedMwc();\r\n }\r\n else {\r\n _mwcSeed(value);\r\n }\r\n}\r\n/**\r\n * Generate a random 32-bit number between (0x000000..0xFFFFFFFF) or (-0x80000000..0x7FFFFFFF), using MWC (Multiply with carry)\r\n * instead of Math.random() defaults to un-signed.\r\n * Used as a replacement random generator for IE to avoid issues with older IE instances.\r\n * @param signed - True to return a signed 32-bit number (-0x80000000..0x7FFFFFFF) otherwise an unsigned one (0x000000..0xFFFFFFFF)\r\n */\r\nexport function mwcRandom32(signed) {\r\n _mwcZ = (36969 * (_mwcZ & 0xFFFF) + (_mwcZ >> 16)) & MaxUInt32;\r\n _mwcW = (18000 * (_mwcW & 0xFFFF) + (_mwcW >> 16)) & MaxUInt32;\r\n var value = (((_mwcZ << 16) + (_mwcW & 0xFFFF)) >>> 0) & MaxUInt32 | 0;\r\n if (!signed) {\r\n // Make sure we end up with a positive number and not -ve one.\r\n value >>>= 0;\r\n }\r\n return value;\r\n}\r\n/**\r\n * Generate random base64 id string.\r\n * The default length is 22 which is 132-bits so almost the same as a GUID but as base64 (the previous default was 5)\r\n * @param maxLength - Optional value to specify the length of the id to be generated, defaults to 22\r\n */\r\nexport function newId(maxLength) {\r\n if (maxLength === void 0) { maxLength = 22; }\r\n var base64chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n // Start with an initial random number, consuming the value in reverse byte order\r\n var number = random32() >>> 0; // Make sure it's a +ve number\r\n var chars = 0;\r\n var result = STR_EMPTY;\r\n while (result[_DYN_LENGTH /* @min:%2elength */] < maxLength) {\r\n chars++;\r\n result += base64chars.charAt(number & 0x3F);\r\n number >>>= 6; // Zero fill with right shift\r\n if (chars === 5) {\r\n // 5 base64 characters === 30 bits so we don't have enough bits for another base64 char\r\n // So add on another 30 bits and make sure it's +ve\r\n number = (((random32() << 2) & 0xFFFFFFFF) | (number & 0x03)) >>> 0;\r\n chars = 0; // We need to reset the number every 5 chars (30 bits)\r\n }\r\n }\r\n return result;\r\n}\r\n//# sourceMappingURL=RandomHelper.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { _DYN_LENGTH, _DYN_SPAN_ID, _DYN_SUBSTR, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_VERSION } from \"../__DynamicConstants\";\r\nimport { generateW3CId } from \"./CoreUtils\";\r\nimport { findMetaTag, findNamedServerTiming } from \"./EnvUtils\";\r\nimport { isArray, isString, strTrim } from \"./HelperFuncs\";\r\n// using {0,16} for leading and trailing whitespace just to constrain the possible runtime of a random string\r\nvar TRACE_PARENT_REGEX = /^([\\da-f]{2})-([\\da-f]{32})-([\\da-f]{16})-([\\da-f]{2})(-[^\\s]*)?$/;\r\nvar DEFAULT_VERSION = \"00\";\r\nvar INVALID_VERSION = \"ff\";\r\nvar INVALID_TRACE_ID = \"00000000000000000000000000000000\";\r\nvar INVALID_SPAN_ID = \"0000000000000000\";\r\nvar SAMPLED_FLAG = 0x01;\r\nfunction _isValid(value, len, invalidValue) {\r\n if (value && value[_DYN_LENGTH /* @min:%2elength */] === len && value !== invalidValue) {\r\n return !!value.match(/^[\\da-f]*$/);\r\n }\r\n return false;\r\n}\r\nfunction _formatValue(value, len, defValue) {\r\n if (_isValid(value, len)) {\r\n return value;\r\n }\r\n return defValue;\r\n}\r\nfunction _formatFlags(value) {\r\n if (isNaN(value) || value < 0 || value > 255) {\r\n value = 0x01;\r\n }\r\n var result = value.toString(16);\r\n while (result[_DYN_LENGTH /* @min:%2elength */] < 2) {\r\n result = \"0\" + result;\r\n }\r\n return result;\r\n}\r\n/**\r\n * Create a new ITraceParent instance using the provided values.\r\n * @param traceId - The traceId to use, when invalid a new random W3C id will be generated.\r\n * @param spanId - The parent/span id to use, a new random value will be generated if it is invalid.\r\n * @param flags - The traceFlags to use, defaults to zero (0) if not supplied or invalid\r\n * @param version - The version to used, defaults to version \"01\" if not supplied or invalid.\r\n * @returns\r\n */\r\nexport function createTraceParent(traceId, spanId, flags, version) {\r\n var _a;\r\n return _a = {},\r\n _a[_DYN_VERSION /* @min:version */] = _isValid(version, 2, INVALID_VERSION) ? version : DEFAULT_VERSION,\r\n _a[_DYN_TRACE_ID /* @min:traceId */] = isValidTraceId(traceId) ? traceId : generateW3CId(),\r\n _a.spanId = isValidSpanId(spanId) ? spanId : generateW3CId()[_DYN_SUBSTR /* @min:%2esubstr */](0, 16),\r\n _a.traceFlags = flags >= 0 && flags <= 0xFF ? flags : 1,\r\n _a;\r\n}\r\n/**\r\n * Attempt to parse the provided string as a W3C TraceParent header value (https://www.w3.org/TR/trace-context/#traceparent-header)\r\n *\r\n * @param value\r\n * @returns\r\n */\r\nexport function parseTraceParent(value) {\r\n var _a;\r\n if (!value) {\r\n // Don't pass a null/undefined or empty string\r\n return null;\r\n }\r\n if (isArray(value)) {\r\n // The value may have been encoded on the page into an array so handle this automatically\r\n value = value[0] || \"\";\r\n }\r\n if (!value || !isString(value) || value[_DYN_LENGTH /* @min:%2elength */] > 8192) {\r\n // limit potential processing based on total length\r\n return null;\r\n }\r\n // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent\r\n var match = TRACE_PARENT_REGEX.exec(strTrim(value));\r\n if (!match || // No match\r\n match[1] === INVALID_VERSION || // version ff is forbidden\r\n match[2] === INVALID_TRACE_ID || // All zeros is considered to be invalid\r\n match[3] === INVALID_SPAN_ID) { // All zeros is considered to be invalid\r\n return null;\r\n }\r\n return _a = {},\r\n _a[_DYN_VERSION /* @min:version */] = match[1],\r\n _a[_DYN_TRACE_ID /* @min:traceId */] = match[2],\r\n _a[_DYN_SPAN_ID /* @min:spanId */] = match[3],\r\n _a[_DYN_TRACE_FLAGS /* @min:traceFlags */] = parseInt(match[4], 16),\r\n _a;\r\n}\r\n/**\r\n * Is the provided W3c Trace Id a valid string representation, it must be a 32-character string\r\n * of lowercase hexadecimal characters for example, 4bf92f3577b34da6a3ce929d0e0e4736.\r\n * If all characters as zero (00000000000000000000000000000000) it will be considered an invalid value.\r\n * @param value - The W3c trace Id to be validated\r\n * @returns true if valid otherwise false\r\n */\r\nexport function isValidTraceId(value) {\r\n return _isValid(value, 32, INVALID_TRACE_ID);\r\n}\r\n/**\r\n * Is the provided W3c span id (aka. parent id) a valid string representation, it must be a 16-character\r\n * string of lowercase hexadecimal characters, for example, 00f067aa0ba902b7.\r\n * If all characters are zero (0000000000000000) this is considered an invalid value.\r\n * @param value - The W3c span id to be validated\r\n * @returns true if valid otherwise false\r\n */\r\nexport function isValidSpanId(value) {\r\n return _isValid(value, 16, INVALID_SPAN_ID);\r\n}\r\n/**\r\n * Validates that the provided ITraceParent instance conforms to the currently supported specifications\r\n * @param value\r\n * @returns\r\n */\r\nexport function isValidTraceParent(value) {\r\n if (!value ||\r\n !_isValid(value[_DYN_VERSION /* @min:%2eversion */], 2, INVALID_VERSION) ||\r\n !_isValid(value[_DYN_TRACE_ID /* @min:%2etraceId */], 32, INVALID_TRACE_ID) ||\r\n !_isValid(value[_DYN_SPAN_ID /* @min:%2espanId */], 16, INVALID_SPAN_ID) ||\r\n !_isValid(_formatFlags(value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */]), 2)) {\r\n // Each known field must contain a valid value\r\n return false;\r\n }\r\n return true;\r\n}\r\n/**\r\n * Is the parsed traceParent indicating that the trace is currently sampled.\r\n * @param value - The parsed traceParent value\r\n * @returns\r\n */\r\nexport function isSampledFlag(value) {\r\n if (isValidTraceParent(value)) {\r\n return (value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] & SAMPLED_FLAG) === SAMPLED_FLAG;\r\n }\r\n return false;\r\n}\r\n/**\r\n * Format the ITraceParent value as a string using the supported and know version formats.\r\n * So even if the passed traceParent is a later version the string value returned from this\r\n * function will convert it to only the known version formats.\r\n * This currently only supports version \"00\" and invalid \"ff\"\r\n * @param value - The parsed traceParent value\r\n * @returns\r\n */\r\nexport function formatTraceParent(value) {\r\n if (value) {\r\n // Special Note: This only supports formatting as version 00, future versions should encode any known supported version\r\n // So parsing a future version will populate the correct version value but reformatting will reduce it to version 00.\r\n var flags = _formatFlags(value[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */]);\r\n if (!_isValid(flags, 2)) {\r\n flags = \"01\";\r\n }\r\n var version = value[_DYN_VERSION /* @min:%2eversion */] || DEFAULT_VERSION;\r\n if (version !== \"00\" && version !== \"ff\") {\r\n // Reduce version to \"00\"\r\n version = DEFAULT_VERSION;\r\n }\r\n // Format as version 00\r\n return \"\".concat(version, \"-\").concat(_formatValue(value.traceId, 32, INVALID_TRACE_ID), \"-\").concat(_formatValue(value.spanId, 16, INVALID_SPAN_ID), \"-\").concat(flags);\r\n }\r\n return \"\";\r\n}\r\n/**\r\n * Helper function to fetch the passed traceparent from the page, looking for it as a meta-tag or a Server-Timing header.\r\n * @returns\r\n */\r\nexport function findW3cTraceParent() {\r\n var name = \"traceparent\";\r\n var traceParent = parseTraceParent(findMetaTag(name));\r\n if (!traceParent) {\r\n traceParent = parseTraceParent(findNamedServerTiming(name));\r\n }\r\n return traceParent;\r\n}\r\n//# sourceMappingURL=W3cTraceParent.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_INITIALIZE = \"initialize\"; // Count: 8\r\nexport var _DYN_NAME = \"name\"; // Count: 11\r\nexport var _DYN_GET_NOTIFY_MGR = \"getNotifyMgr\"; // Count: 3\r\nexport var _DYN_IDENTIFIER = \"identifier\"; // Count: 8\r\nexport var _DYN_PUSH = \"push\"; // Count: 30\r\nexport var _DYN_IS_INITIALIZED = \"isInitialized\"; // Count: 10\r\nexport var _DYN_CONFIG = \"config\"; // Count: 7\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 3\r\nexport var _DYN_LOGGER = \"logger\"; // Count: 9\r\nexport var _DYN_LENGTH = \"length\"; // Count: 43\r\nexport var _DYN_TIME = \"time\"; // Count: 5\r\nexport var _DYN_PROCESS_NEXT = \"processNext\"; // Count: 21\r\nexport var _DYN_GET_PROCESS_TEL_CONT0 = \"getProcessTelContext\"; // Count: 2\r\nexport var _DYN_ADD_NOTIFICATION_LIS1 = \"addNotificationListener\"; // Count: 5\r\nexport var _DYN_REMOVE_NOTIFICATION_2 = \"removeNotificationListener\"; // Count: 5\r\nexport var _DYN_STOP_POLLING_INTERNA3 = \"stopPollingInternalLogs\"; // Count: 2\r\nexport var _DYN_ON_COMPLETE = \"onComplete\"; // Count: 4\r\nexport var _DYN_GET_PLUGIN = \"getPlugin\"; // Count: 5\r\nexport var _DYN_FLUSH = \"flush\"; // Count: 5\r\nexport var _DYN__EXTENSIONS = \"_extensions\"; // Count: 4\r\nexport var _DYN_SPLICE = \"splice\"; // Count: 6\r\nexport var _DYN_TEARDOWN = \"teardown\"; // Count: 10\r\nexport var _DYN_MESSAGE_ID = \"messageId\"; // Count: 4\r\nexport var _DYN_MESSAGE = \"message\"; // Count: 7\r\nexport var _DYN_IS_ASYNC = \"isAsync\"; // Count: 7\r\nexport var _DYN__DO_TEARDOWN = \"_doTeardown\"; // Count: 4\r\nexport var _DYN_UPDATE = \"update\"; // Count: 7\r\nexport var _DYN_GET_NEXT = \"getNext\"; // Count: 12\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 8\r\nexport var _DYN_SET_NEXT_PLUGIN = \"setNextPlugin\"; // Count: 5\r\nexport var _DYN_CREATE_NEW = \"createNew\"; // Count: 6\r\nexport var _DYN_COOKIE_CFG = \"cookieCfg\"; // Count: 3\r\nexport var _DYN_INDEX_OF = \"indexOf\"; // Count: 6\r\nexport var _DYN_SUBSTRING = \"substring\"; // Count: 10\r\nexport var _DYN_USER_AGENT = \"userAgent\"; // Count: 5\r\nexport var _DYN_SPLIT = \"split\"; // Count: 5\r\nexport var _DYN_SET_ENABLED = \"setEnabled\"; // Count: 5\r\nexport var _DYN_SUBSTR = \"substr\"; // Count: 6\r\nexport var _DYN_NODE_TYPE = \"nodeType\"; // Count: 3\r\nexport var _DYN_APPLY = \"apply\"; // Count: 6\r\nexport var _DYN_REPLACE = \"replace\"; // Count: 10\r\nexport var _DYN_ENABLE_DEBUG_EXCEPTI4 = \"enableDebugExceptions\"; // Count: 2\r\nexport var _DYN_LOG_INTERNAL_MESSAGE = \"logInternalMessage\"; // Count: 2\r\nexport var _DYN_TO_LOWER_CASE = \"toLowerCase\"; // Count: 5\r\nexport var _DYN_CALL = \"call\"; // Count: 18\r\nexport var _DYN_TYPE = \"type\"; // Count: 14\r\nexport var _DYN_HANDLER = \"handler\"; // Count: 5\r\nexport var _DYN_LISTENERS = \"listeners\"; // Count: 6\r\nexport var _DYN_IS_CHILD_EVT = \"isChildEvt\"; // Count: 3\r\nexport var _DYN_GET_CTX = \"getCtx\"; // Count: 6\r\nexport var _DYN_SET_CTX = \"setCtx\"; // Count: 10\r\nexport var _DYN_COMPLETE = \"complete\"; // Count: 3\r\nexport var _DYN_TRACE_ID = \"traceId\"; // Count: 5\r\nexport var _DYN_SPAN_ID = \"spanId\"; // Count: 5\r\nexport var _DYN_TRACE_FLAGS = \"traceFlags\"; // Count: 6\r\nexport var _DYN_VERSION = \"version\"; // Count: 4\r\n//# sourceMappingURL=__DynamicConstants.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nexport var strShimFunction = \"function\";\r\nexport var strShimObject = \"object\";\r\nexport var strShimUndefined = \"undefined\";\r\nexport var strShimPrototype = \"prototype\";\r\nexport var strShimHasOwnProperty = \"hasOwnProperty\";\r\nexport var strDefault = \"default\";\r\nexport var ObjClass = Object;\r\nexport var ObjProto = ObjClass[strShimPrototype];\r\nexport var ObjAssign = ObjClass[\"assign\"];\r\nexport var ObjCreate = ObjClass[\"create\"];\r\nexport var ObjDefineProperty = ObjClass[\"defineProperty\"];\r\nexport var ObjHasOwnProperty = ObjProto[strShimHasOwnProperty];\r\n//# sourceMappingURL=Constants.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { ObjCreate, strShimFunction, strShimObject, strShimPrototype, strShimUndefined } from \"./Constants\";\r\nvar _cachedGlobal = null;\r\n/**\r\n * Returns the current global scope object, for a normal web page this will be the current\r\n * window, for a Web Worker this will be current worker global scope via \"self\". The internal\r\n * implementation returns the first available instance object in the following order\r\n * - globalThis (New standard)\r\n * - self (Will return the current window instance for supported browsers)\r\n * - window (fallback for older browser implementations)\r\n * - global (NodeJS standard)\r\n * - <null> (When all else fails)\r\n * While the return type is a Window for the normal case, not all environments will support all\r\n * of the properties or functions.\r\n */\r\nexport function getGlobal(useCached) {\r\n if (useCached === void 0) { useCached = true; }\r\n var result = useCached === false ? null : _cachedGlobal;\r\n if (!result) {\r\n if (typeof globalThis !== strShimUndefined) {\r\n result = globalThis;\r\n }\r\n if (!result && typeof self !== strShimUndefined) {\r\n result = self;\r\n }\r\n if (!result && typeof window !== strShimUndefined) {\r\n result = window;\r\n }\r\n if (!result && typeof global !== strShimUndefined) {\r\n result = global;\r\n }\r\n _cachedGlobal = result;\r\n }\r\n return result;\r\n}\r\nexport function throwTypeError(message) {\r\n throw new TypeError(message);\r\n}\r\n/**\r\n * Creates an object that has the specified prototype, and that optionally contains specified properties. This helper exists to avoid adding a polyfil\r\n * for older browsers that do not define Object.create eg. ES3 only, IE8 just in case any page checks for presence/absence of the prototype implementation.\r\n * Note: For consistency this will not use the Object.create implementation if it exists as this would cause a testing requirement to test with and without the implementations\r\n * @param obj Object to use as a prototype. May be null\r\n */\r\nexport function objCreateFn(obj) {\r\n var func = ObjCreate;\r\n // Use build in Object.create\r\n if (func) {\r\n // Use Object create method if it exists\r\n return func(obj);\r\n }\r\n if (obj == null) {\r\n return {};\r\n }\r\n var type = typeof obj;\r\n if (type !== strShimObject && type !== strShimFunction) {\r\n throwTypeError(\"Object prototype may only be an Object:\" + obj);\r\n }\r\n function tmpFunc() { }\r\n tmpFunc[strShimPrototype] = obj;\r\n return new tmpFunc();\r\n}\r\n//# sourceMappingURL=Helpers.js.map","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\nimport { ObjAssign, ObjClass, ObjCreate, ObjDefineProperty, ObjHasOwnProperty, ObjProto, strDefault, strShimFunction, strShimHasOwnProperty, strShimPrototype } from \"./Constants\";\r\nimport { getGlobal, objCreateFn, throwTypeError } from \"./Helpers\";\r\n// Most of these functions have been directly shamelessly \"lifted\" from the https://github.com/@microsoft/tslib and\r\n// modified to be ES3 compatible and applying several minification and tree-shaking techniques so that Application Insights\r\n// can successfully use TypeScript \"importHelpers\" which imports tslib during compilation but it will use these at runtime\r\n// Which is also why all of the functions have not been included as Application Insights currently doesn't use or require\r\n// them.\r\nexport var SymbolObj = (getGlobal() || {})[\"Symbol\"];\r\nexport var ReflectObj = (getGlobal() || {})[\"Reflect\"];\r\nexport var __hasSymbol = !!SymbolObj;\r\nexport var __hasReflect = !!ReflectObj;\r\nvar strDecorate = \"decorate\";\r\nvar strMetadata = \"metadata\";\r\nvar strGetOwnPropertySymbols = \"getOwnPropertySymbols\";\r\nvar strIterator = \"iterator\";\r\nexport var __objAssignFnImpl = function (t) {\r\n // tslint:disable-next-line: ban-comma-operator\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) {\r\n if (ObjProto[strShimHasOwnProperty].call(s, p)) {\r\n t[p] = s[p];\r\n }\r\n }\r\n }\r\n return t;\r\n};\r\nexport var __assignFn = ObjAssign || __objAssignFnImpl;\r\n// tslint:disable-next-line: only-arrow-functions\r\nvar extendStaticsFn = function (d, b) {\r\n extendStaticsFn = ObjClass[\"setPrototypeOf\"] ||\r\n // tslint:disable-next-line: only-arrow-functions\r\n ({ __proto__: [] } instanceof Array && function (d, b) {\r\n d.__proto__ = b;\r\n }) ||\r\n // tslint:disable-next-line: only-arrow-functions\r\n function (d, b) {\r\n for (var p in b) {\r\n if (b[strShimHasOwnProperty](p)) {\r\n d[p] = b[p];\r\n }\r\n }\r\n };\r\n return extendStaticsFn(d, b);\r\n};\r\nexport function __extendsFn(d, b) {\r\n if (typeof b !== strShimFunction && b !== null) {\r\n throwTypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n }\r\n extendStaticsFn(d, b);\r\n function __() {\r\n this.constructor = d;\r\n }\r\n // tslint:disable-next-line: ban-comma-operator\r\n d[strShimPrototype] = b === null ? objCreateFn(b) : (__[strShimPrototype] = b[strShimPrototype], new __());\r\n}\r\nexport function __restFn(s, e) {\r\n var t = {};\r\n for (var k in s) {\r\n if (ObjHasOwnProperty.call(s, k) && e.indexOf(k) < 0) {\r\n t[k] = s[k];\r\n }\r\n }\r\n if (s != null && typeof ObjClass[strGetOwnPropertySymbols] === strShimFunction) {\r\n for (var i = 0, p = ObjClass[strGetOwnPropertySymbols](s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && ObjProto[\"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\nexport function __decorateFn(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = ObjClass[\"getOwnPropertyDescriptor\"](target, key) : desc, d;\r\n if (__hasReflect && typeof ReflectObj[strDecorate] === strShimFunction) {\r\n r = ReflectObj[strDecorate](decorators, target, key, desc);\r\n }\r\n else {\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n // eslint-disable-next-line no-cond-assign\r\n if (d = decorators[i]) {\r\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n }\r\n }\r\n }\r\n // tslint:disable-next-line:ban-comma-operator\r\n return c > 3 && r && ObjDefineProperty(target, key, r), r;\r\n}\r\nexport function __paramFn(paramIndex, decorator) {\r\n return function (target, key) {\r\n decorator(target, key, paramIndex);\r\n };\r\n}\r\nexport function __metadataFn(metadataKey, metadataValue) {\r\n if (__hasReflect && ReflectObj[strMetadata] === strShimFunction) {\r\n return ReflectObj[strMetadata](metadataKey, metadataValue);\r\n }\r\n}\r\nexport function __exportStarFn(m, o) {\r\n for (var p in m) {\r\n if (p !== strDefault && !ObjHasOwnProperty.call(o, p)) {\r\n __createBindingFn(o, m, p);\r\n }\r\n }\r\n}\r\nexport function __createBindingFn(o, m, k, k2) {\r\n if (k2 === undefined) {\r\n k2 = k;\r\n }\r\n if (!!ObjCreate) {\r\n ObjDefineProperty(o, k2, {\r\n enumerable: true,\r\n get: function () {\r\n return m[k];\r\n }\r\n });\r\n }\r\n else {\r\n o[k2] = m[k];\r\n }\r\n}\r\nexport function __valuesFn(o) {\r\n var s = typeof SymbolObj === strShimFunction && SymbolObj[strIterator], m = s && o[s], i = 0;\r\n if (m) {\r\n return m.call(o);\r\n }\r\n if (o && typeof o.length === \"number\") {\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) {\r\n o = void 0;\r\n }\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n }\r\n throwTypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\nexport function __readFn(o, n) {\r\n var m = typeof SymbolObj === strShimFunction && o[SymbolObj[strIterator]];\r\n if (!m) {\r\n return o;\r\n }\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) {\r\n ar.push(r.value);\r\n }\r\n }\r\n catch (error) {\r\n e = {\r\n error: error\r\n };\r\n }\r\n finally {\r\n try {\r\n // tslint:disable-next-line:no-conditional-assignment\r\n if (r && !r.done && (m = i[\"return\"])) {\r\n m.call(i);\r\n }\r\n }\r\n finally {\r\n if (e) {\r\n // eslint-disable-next-line no-unsafe-finally\r\n throw e.error;\r\n }\r\n }\r\n }\r\n return ar;\r\n}\r\n/** @deprecated */\r\nexport function __spreadArraysFn() {\r\n var theArgs = arguments;\r\n // Calculate new total size\r\n for (var s = 0, i = 0, il = theArgs.length; i < il; i++) {\r\n s += theArgs[i].length;\r\n }\r\n // Create new full array\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\r\n for (var a = theArgs[i], j = 0, jl = a.length; j < jl; j++, k++) {\r\n r[k] = a[j];\r\n }\r\n }\r\n return r;\r\n}\r\nexport function __spreadArrayFn(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {\r\n to[j] = from[i];\r\n }\r\n return to;\r\n}\r\nexport function __makeTemplateObjectFn(cooked, raw) {\r\n if (ObjDefineProperty) {\r\n ObjDefineProperty(cooked, \"raw\", { value: raw });\r\n }\r\n else {\r\n cooked.raw = raw;\r\n }\r\n return cooked;\r\n}\r\nexport function __importStarFn(mod) {\r\n if (mod && mod.__esModule) {\r\n return mod;\r\n }\r\n var result = {};\r\n if (mod != null) {\r\n for (var k in mod) {\r\n if (k !== strDefault && Object.prototype.hasOwnProperty.call(mod, k)) {\r\n __createBindingFn(result, mod, k);\r\n }\r\n }\r\n }\r\n // Set default module\r\n if (!!ObjCreate) {\r\n ObjDefineProperty(result, strDefault, { enumerable: true, value: mod });\r\n }\r\n else {\r\n result[strDefault] = mod;\r\n }\r\n return result;\r\n}\r\nexport function __importDefaultFn(mod) {\r\n return (mod && mod.__esModule) ? mod : { strDefault: mod };\r\n}\r\n//# sourceMappingURL=TsLibShims.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n// Licensed under the\r\nexport { Util, CorrelationIdHelper, DateTimeUtils, dateTimeUtilsNow, dateTimeUtilsDuration, UrlHelper, isInternalApplicationInsightsEndpoint, createDistributedTraceContextFromTrace } from \"./Util\";\r\nexport { ThrottleMgr } from \"./ThrottleMgr\";\r\nexport { parseConnectionString, ConnectionStringParser } from \"./ConnectionStringParser\";\r\nexport { RequestHeaders } from \"./RequestResponseHeaders\";\r\nexport { DisabledPropertyName, ProcessLegacy, SampleRate, HttpMethod, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, strNotSpecified } from \"./Constants\";\r\nexport { Envelope } from \"./Telemetry/Common/Envelope\";\r\nexport { Event } from \"./Telemetry/Event\";\r\nexport { Exception } from \"./Telemetry/Exception\";\r\nexport { Metric } from \"./Telemetry/Metric\";\r\nexport { PageView } from \"./Telemetry/PageView\";\r\nexport { RemoteDependencyData } from \"./Telemetry/RemoteDependencyData\";\r\nexport { Trace } from \"./Telemetry/Trace\";\r\nexport { PageViewPerformance } from \"./Telemetry/PageViewPerformance\";\r\nexport { Data } from \"./Telemetry/Common/Data\";\r\nexport { SeverityLevel } from \"./Interfaces/Contracts/SeverityLevel\";\r\nexport { ConfigurationManager } from \"./Interfaces/IConfig\";\r\nexport { ContextTagKeys } from \"./Interfaces/Contracts/ContextTagKeys\";\r\nexport { DataSanitizer, dataSanitizeKeyAndAddUniqueness, dataSanitizeKey, dataSanitizeString, dataSanitizeUrl, dataSanitizeMessage, dataSanitizeException, dataSanitizeProperties, dataSanitizeMeasurements, dataSanitizeId, dataSanitizeInput, dsPadNumber } from \"./Telemetry/Common/DataSanitizer\";\r\nexport { TelemetryItemCreator, createTelemetryItem } from \"./TelemetryItemCreator\";\r\nexport { CtxTagKeys, Extensions } from \"./Interfaces/PartAExtensions\";\r\nexport { DistributedTracingModes } from \"./Enums\";\r\nexport { stringToBoolOrDefault, msToTimeSpan, getExtensionByName, isCrossOriginError } from \"./HelperFuncs\";\r\nexport { isBeaconsSupported as isBeaconApiSupported, createTraceParent, parseTraceParent, isValidTraceId, isValidSpanId, isValidTraceParent, isSampledFlag, formatTraceParent, findW3cTraceParent } from \"@microsoft/applicationinsights-core-js\";\r\nexport { createDomEvent } from \"./DomHelperFuncs\";\r\nexport { utlDisableStorage, utlEnableStorage, utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage, utlRemoveStorage, utlCanUseSessionStorage, utlGetSessionStorageKeys, utlGetSessionStorage, utlSetSessionStorage, utlRemoveSessionStorage } from \"./StorageHelperFuncs\";\r\nexport { urlParseUrl, urlGetAbsoluteUrl, urlGetPathName, urlGetCompleteUrl, urlParseHost, urlParseFullHost } from \"./UrlHelperFuncs\";\r\nexport var PropertiesPluginIdentifier = \"AppInsightsPropertiesPlugin\";\r\nexport var BreezeChannelIdentifier = \"AppInsightsChannelPlugin\";\r\nexport var AnalyticsPluginIdentifier = \"ApplicationInsightsAnalytics\";\r\n//# sourceMappingURL=applicationinsights-common.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { isNullOrUndefined, objForEachKey, throwError, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strIkey, strNotSpecified } from \"./Constants\";\r\nimport { dataSanitizeString } from \"./Telemetry/Common/DataSanitizer\";\r\nimport { _DYN_NAME } from \"./__DynamicConstants\";\r\n/**\r\n * Create a telemetry item that the 1DS channel understands\r\n * @param item domain specific properties; part B\r\n * @param baseType telemetry item type. ie PageViewData\r\n * @param envelopeName name of the envelope. ie Microsoft.ApplicationInsights.<instrumentation key>.PageView\r\n * @param customProperties user defined custom properties; part C\r\n * @param systemProperties system properties that are added to the context; part A\r\n * @returns ITelemetryItem that is sent to channel\r\n */\r\nexport function createTelemetryItem(item, baseType, envelopeName, logger, customProperties, systemProperties) {\r\n var _a;\r\n envelopeName = dataSanitizeString(logger, envelopeName) || strNotSpecified;\r\n if (isNullOrUndefined(item) ||\r\n isNullOrUndefined(baseType) ||\r\n isNullOrUndefined(envelopeName)) {\r\n throwError(\"Input doesn't contain all required fields\");\r\n }\r\n var iKey = \"\";\r\n if (item[strIkey]) {\r\n iKey = item[strIkey];\r\n delete item[strIkey];\r\n }\r\n var telemetryItem = (_a = {},\r\n _a[_DYN_NAME /* @min:name */] = envelopeName,\r\n _a.time = toISOString(new Date()),\r\n _a.iKey = iKey,\r\n _a.ext = systemProperties ? systemProperties : {},\r\n _a.tags = [],\r\n _a.data = {},\r\n _a.baseType = baseType,\r\n _a.baseData = item // Part B\r\n ,\r\n _a);\r\n // Part C\r\n if (!isNullOrUndefined(customProperties)) {\r\n objForEachKey(customProperties, function (prop, value) {\r\n telemetryItem.data[prop] = value;\r\n });\r\n }\r\n return telemetryItem;\r\n}\r\nvar TelemetryItemCreator = /** @class */ (function () {\r\n function TelemetryItemCreator() {\r\n }\r\n /**\r\n * Create a telemetry item that the 1DS channel understands\r\n * @param item domain specific properties; part B\r\n * @param baseType telemetry item type. ie PageViewData\r\n * @param envelopeName name of the envelope. ie Microsoft.ApplicationInsights.<instrumentation key>.PageView\r\n * @param customProperties user defined custom properties; part C\r\n * @param systemProperties system properties that are added to the context; part A\r\n * @returns ITelemetryItem that is sent to channel\r\n */\r\n TelemetryItemCreator.create = createTelemetryItem;\r\n return TelemetryItemCreator;\r\n}());\r\nexport { TelemetryItemCreator };\r\n//# sourceMappingURL=TelemetryItemCreator.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar Event = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the EventTelemetry object\r\n */\r\n function Event(logger, name, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 1 /* FieldType.Required */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n Event.envelopeType = \"Microsoft.ApplicationInsights.{0}.Event\";\r\n Event.dataType = \"EventData\";\r\n return Event;\r\n}());\r\nexport { Event };\r\n//# sourceMappingURL=Event.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_MEASUREMENTS, _DYN_MESSAGE, _DYN_PROPERTIES, _DYN_SEVERITY_LEVEL } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeMessage, dataSanitizeProperties } from \"./Common/DataSanitizer\";\r\nvar Trace = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the TraceTelemetry object\r\n */\r\n function Trace(logger, message, severityLevel, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n message: 1 /* FieldType.Required */,\r\n severityLevel: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n message = message || strNotSpecified;\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] = dataSanitizeMessage(logger, message);\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n if (severityLevel) {\r\n _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = severityLevel;\r\n }\r\n }\r\n Trace.envelopeType = \"Microsoft.ApplicationInsights.{0}.Message\";\r\n Trace.dataType = \"MessageData\";\r\n return Trace;\r\n}());\r\nexport { Trace };\r\n//# sourceMappingURL=Trace.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar DataPoint = /** @class */ (function () {\r\n function DataPoint() {\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n this.aiDataContract = {\r\n name: 1 /* FieldType.Required */,\r\n kind: 0 /* FieldType.Default */,\r\n value: 1 /* FieldType.Required */,\r\n count: 0 /* FieldType.Default */,\r\n min: 0 /* FieldType.Default */,\r\n max: 0 /* FieldType.Default */,\r\n stdDev: 0 /* FieldType.Default */\r\n };\r\n /**\r\n * Metric type. Single measurement or the aggregated value.\r\n */\r\n this.kind = 0 /* DataPointType.Measurement */;\r\n }\r\n return DataPoint;\r\n}());\r\nexport { DataPoint };\r\n//# sourceMappingURL=DataPoint.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_COUNT, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { DataPoint } from \"./Common/DataPoint\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar Metric = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the MetricTelemetry object\r\n */\r\n function Metric(logger, name, value, count, min, max, stdDev, properties, measurements) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n metrics: 1 /* FieldType.Required */,\r\n properties: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n var dataPoint = new DataPoint();\r\n dataPoint[_DYN_COUNT /* @min:%2ecount */] = count > 0 ? count : undefined;\r\n dataPoint.max = isNaN(max) || max === null ? undefined : max;\r\n dataPoint.min = isNaN(min) || min === null ? undefined : min;\r\n dataPoint[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n dataPoint.value = value;\r\n dataPoint.stdDev = isNaN(stdDev) || stdDev === null ? undefined : stdDev;\r\n _self.metrics = [dataPoint];\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n Metric.envelopeType = \"Microsoft.ApplicationInsights.{0}.Metric\";\r\n Metric.dataType = \"MetricData\";\r\n return Metric;\r\n}());\r\nexport { Metric };\r\n//# sourceMappingURL=Metric.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeId, dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar PageView = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n function PageView(logger, name, url, durationMs, properties, measurements, id) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n url: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */,\r\n id: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.id = dataSanitizeId(logger, id);\r\n _self.url = dataSanitizeUrl(logger, url);\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n if (!isNaN(durationMs)) {\r\n _self[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(durationMs);\r\n }\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n PageView.envelopeType = \"Microsoft.ApplicationInsights.{0}.Pageview\";\r\n PageView.dataType = \"PageviewData\";\r\n return PageView;\r\n}());\r\nexport { PageView };\r\n//# sourceMappingURL=PageView.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES, _DYN_RECEIVED_RESPONSE } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar PageViewPerformance = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the PageEventTelemetry object\r\n */\r\n function PageViewPerformance(logger, name, url, unused, properties, measurements, cs4BaseData) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n url: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n perfTotal: 0 /* FieldType.Default */,\r\n networkConnect: 0 /* FieldType.Default */,\r\n sentRequest: 0 /* FieldType.Default */,\r\n receivedResponse: 0 /* FieldType.Default */,\r\n domProcessing: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.url = dataSanitizeUrl(logger, url);\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n if (cs4BaseData) {\r\n _self.domProcessing = cs4BaseData.domProcessing;\r\n _self[_DYN_DURATION /* @min:%2eduration */] = cs4BaseData[_DYN_DURATION /* @min:%2eduration */];\r\n _self.networkConnect = cs4BaseData.networkConnect;\r\n _self.perfTotal = cs4BaseData.perfTotal;\r\n _self[_DYN_RECEIVED_RESPONSE /* @min:%2ereceivedResponse */] = cs4BaseData[_DYN_RECEIVED_RESPONSE /* @min:%2ereceivedResponse */];\r\n _self.sentRequest = cs4BaseData.sentRequest;\r\n }\r\n }\r\n PageViewPerformance.envelopeType = \"Microsoft.ApplicationInsights.{0}.PageviewPerformance\";\r\n PageViewPerformance.dataType = \"PageviewPerformanceData\";\r\n return PageViewPerformance;\r\n}());\r\nexport { PageViewPerformance };\r\n//# sourceMappingURL=PageViewPerformance.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __assignFn as __assign } from \"@microsoft/applicationinsights-shims\";\r\nimport { arrForEach, arrMap, isArray, isError, isFunction, isNullOrUndefined, isObject, isString, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified } from \"../Constants\";\r\nimport { _DYN_ASSEMBLY, _DYN_EXCEPTIONS, _DYN_FILE_NAME, _DYN_HAS_FULL_STACK, _DYN_INDEX_OF, _DYN_IS_MANUAL, _DYN_LENGTH, _DYN_LEVEL, _DYN_LINE, _DYN_MEASUREMENTS, _DYN_MESSAGE, _DYN_METHOD, _DYN_NAME, _DYN_PARSED_STACK, _DYN_PROBLEM_GROUP, _DYN_PROPERTIES, _DYN_SEVERITY_LEVEL, _DYN_SIZE_IN_BYTES, _DYN_SPLIT, _DYN_STRINGIFY, _DYN_TO_STRING, _DYN_TYPE_NAME, _DYN__CREATE_FROM_INTERFA1 } from \"../__DynamicConstants\";\r\nimport { dataSanitizeException, dataSanitizeMeasurements, dataSanitizeMessage, dataSanitizeProperties, dataSanitizeString } from \"./Common/DataSanitizer\";\r\nvar NoMethod = \"<no_method>\";\r\nvar strError = \"error\";\r\nvar strStack = \"stack\";\r\nvar strStackDetails = \"stackDetails\";\r\nvar strErrorSrc = \"errorSrc\";\r\nvar strMessage = \"message\";\r\nvar strDescription = \"description\";\r\nfunction _stringify(value, convertToString) {\r\n var result = value;\r\n if (result && !isString(result)) {\r\n if (JSON && JSON[_DYN_STRINGIFY /* @min:%2estringify */]) {\r\n result = JSON[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n if (convertToString && (!result || result === \"{}\")) {\r\n if (isFunction(value[_DYN_TO_STRING /* @min:%2etoString */])) {\r\n result = value[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n else {\r\n result = \"\" + value;\r\n }\r\n }\r\n }\r\n else {\r\n result = \"\" + value + \" - (Missing JSON.stringify)\";\r\n }\r\n }\r\n return result || \"\";\r\n}\r\nfunction _formatMessage(theEvent, errorType) {\r\n var evtMessage = theEvent;\r\n if (theEvent) {\r\n if (evtMessage && !isString(evtMessage)) {\r\n evtMessage = theEvent[strMessage] || theEvent[strDescription] || evtMessage;\r\n }\r\n // Make sure the message is a string\r\n if (evtMessage && !isString(evtMessage)) {\r\n // tslint:disable-next-line: prefer-conditional-expression\r\n evtMessage = _stringify(evtMessage, true);\r\n }\r\n if (theEvent[\"filename\"]) {\r\n // Looks like an event object with filename\r\n evtMessage = evtMessage + \" @\" + (theEvent[\"filename\"] || \"\") + \":\" + (theEvent[\"lineno\"] || \"?\") + \":\" + (theEvent[\"colno\"] || \"?\");\r\n }\r\n }\r\n // Automatically add the error type to the message if it does already appear to be present\r\n if (errorType && errorType !== \"String\" && errorType !== \"Object\" && errorType !== \"Error\" && (evtMessage || \"\")[_DYN_INDEX_OF /* @min:%2eindexOf */](errorType) === -1) {\r\n evtMessage = errorType + \": \" + evtMessage;\r\n }\r\n return evtMessage || \"\";\r\n}\r\nfunction _isExceptionDetailsInternal(value) {\r\n try {\r\n if (isObject(value)) {\r\n return \"hasFullStack\" in value && \"typeName\" in value;\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n return false;\r\n}\r\nfunction _isExceptionInternal(value) {\r\n try {\r\n if (isObject(value)) {\r\n return (\"ver\" in value && \"exceptions\" in value && \"properties\" in value);\r\n }\r\n }\r\n catch (e) {\r\n // This can happen with some native browser objects, but should not happen for the type we are checking for\r\n }\r\n return false;\r\n}\r\nfunction _isStackDetails(details) {\r\n return details && details.src && isString(details.src) && details.obj && isArray(details.obj);\r\n}\r\nfunction _convertStackObj(errorStack) {\r\n var src = errorStack || \"\";\r\n if (!isString(src)) {\r\n if (isString(src[strStack])) {\r\n src = src[strStack];\r\n }\r\n else {\r\n src = \"\" + src;\r\n }\r\n }\r\n var items = src[_DYN_SPLIT /* @min:%2esplit */](\"\\n\");\r\n return {\r\n src: src,\r\n obj: items\r\n };\r\n}\r\nfunction _getOperaStack(errorMessage) {\r\n var stack = [];\r\n var lines = errorMessage[_DYN_SPLIT /* @min:%2esplit */](\"\\n\");\r\n for (var lp = 0; lp < lines[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var entry = lines[lp];\r\n if (lines[lp + 1]) {\r\n entry += \"@\" + lines[lp + 1];\r\n lp++;\r\n }\r\n stack.push(entry);\r\n }\r\n return {\r\n src: errorMessage,\r\n obj: stack\r\n };\r\n}\r\nfunction _getStackFromErrorObj(errorObj) {\r\n var details = null;\r\n if (errorObj) {\r\n try {\r\n /* Using bracket notation is support older browsers (IE 7/8 -- dont remember the version) that throw when using dot\r\n notation for undefined objects and we don't want to loose the error from being reported */\r\n if (errorObj[strStack]) {\r\n // Chrome/Firefox\r\n details = _convertStackObj(errorObj[strStack]);\r\n }\r\n else if (errorObj[strError] && errorObj[strError][strStack]) {\r\n // Edge error event provides the stack and error object\r\n details = _convertStackObj(errorObj[strError][strStack]);\r\n }\r\n else if (errorObj[\"exception\"] && errorObj.exception[strStack]) {\r\n details = _convertStackObj(errorObj.exception[strStack]);\r\n }\r\n else if (_isStackDetails(errorObj)) {\r\n details = errorObj;\r\n }\r\n else if (_isStackDetails(errorObj[strStackDetails])) {\r\n details = errorObj[strStackDetails];\r\n }\r\n else if (window && window[\"opera\"] && errorObj[strMessage]) {\r\n // Opera\r\n details = _getOperaStack(errorObj[_DYN_MESSAGE /* @min:%2emessage */]);\r\n }\r\n else if (errorObj[\"reason\"] && errorObj.reason[strStack]) {\r\n // UnhandledPromiseRejection\r\n details = _convertStackObj(errorObj.reason[strStack]);\r\n }\r\n else if (isString(errorObj)) {\r\n details = _convertStackObj(errorObj);\r\n }\r\n else {\r\n var evtMessage = errorObj[strMessage] || errorObj[strDescription] || \"\";\r\n if (isString(errorObj[strErrorSrc])) {\r\n if (evtMessage) {\r\n evtMessage += \"\\n\";\r\n }\r\n evtMessage += \" from \" + errorObj[strErrorSrc];\r\n }\r\n if (evtMessage) {\r\n details = _convertStackObj(evtMessage);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // something unexpected happened so to avoid failing to report any error lets swallow the exception\r\n // and fallback to the callee/caller method\r\n details = _convertStackObj(e);\r\n }\r\n }\r\n return details || {\r\n src: \"\",\r\n obj: null\r\n };\r\n}\r\nfunction _formatStackTrace(stackDetails) {\r\n var stack = \"\";\r\n if (stackDetails) {\r\n if (stackDetails.obj) {\r\n arrForEach(stackDetails.obj, function (entry) {\r\n stack += entry + \"\\n\";\r\n });\r\n }\r\n else {\r\n stack = stackDetails.src || \"\";\r\n }\r\n }\r\n return stack;\r\n}\r\nfunction _parseStack(stack) {\r\n var parsedStack;\r\n var frames = stack.obj;\r\n if (frames && frames[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n parsedStack = [];\r\n var level_1 = 0;\r\n var totalSizeInBytes_1 = 0;\r\n arrForEach(frames, function (frame) {\r\n var theFrame = frame[_DYN_TO_STRING /* @min:%2etoString */]();\r\n if (_StackFrame.regex.test(theFrame)) {\r\n var parsedFrame = new _StackFrame(theFrame, level_1++);\r\n totalSizeInBytes_1 += parsedFrame[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n parsedStack.push(parsedFrame);\r\n }\r\n });\r\n // DP Constraint - exception parsed stack must be < 32KB\r\n // remove frames from the middle to meet the threshold\r\n var exceptionParsedStackThreshold = 32 * 1024;\r\n if (totalSizeInBytes_1 > exceptionParsedStackThreshold) {\r\n var left = 0;\r\n var right = parsedStack[_DYN_LENGTH /* @min:%2elength */] - 1;\r\n var size = 0;\r\n var acceptedLeft = left;\r\n var acceptedRight = right;\r\n while (left < right) {\r\n // check size\r\n var lSize = parsedStack[left][_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n var rSize = parsedStack[right][_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */];\r\n size += lSize + rSize;\r\n if (size > exceptionParsedStackThreshold) {\r\n // remove extra frames from the middle\r\n var howMany = acceptedRight - acceptedLeft + 1;\r\n parsedStack.splice(acceptedLeft, howMany);\r\n break;\r\n }\r\n // update pointers\r\n acceptedLeft = left;\r\n acceptedRight = right;\r\n left++;\r\n right--;\r\n }\r\n }\r\n }\r\n return parsedStack;\r\n}\r\nfunction _getErrorType(errorType) {\r\n // Gets the Error Type by passing the constructor (used to get the true type of native error object).\r\n var typeName = \"\";\r\n if (errorType) {\r\n typeName = errorType.typeName || errorType[_DYN_NAME /* @min:%2ename */] || \"\";\r\n if (!typeName) {\r\n try {\r\n var funcNameRegex = /function (.{1,200})\\(/;\r\n var results = (funcNameRegex).exec((errorType).constructor[_DYN_TO_STRING /* @min:%2etoString */]());\r\n typeName = (results && results[_DYN_LENGTH /* @min:%2elength */] > 1) ? results[1] : \"\";\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n }\r\n }\r\n }\r\n return typeName;\r\n}\r\n/**\r\n * Formats the provided errorObj for display and reporting, it may be a String, Object, integer or undefined depending on the browser.\r\n * @param errorObj The supplied errorObj\r\n */\r\nexport function _formatErrorCode(errorObj) {\r\n if (errorObj) {\r\n try {\r\n if (!isString(errorObj)) {\r\n var errorType = _getErrorType(errorObj);\r\n var result = _stringify(errorObj, false);\r\n if (!result || result === \"{}\") {\r\n if (errorObj[strError]) {\r\n // Looks like an MS Error Event\r\n errorObj = errorObj[strError];\r\n errorType = _getErrorType(errorObj);\r\n }\r\n result = _stringify(errorObj, true);\r\n }\r\n if (result[_DYN_INDEX_OF /* @min:%2eindexOf */](errorType) !== 0 && errorType !== \"String\") {\r\n return errorType + \":\" + result;\r\n }\r\n return result;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty -- Ignoring any failures as nothing we can do\r\n }\r\n }\r\n // Fallback to just letting the object format itself into a string\r\n return \"\" + (errorObj || \"\");\r\n}\r\nvar Exception = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the ExceptionTelemetry object\r\n */\r\n function Exception(logger, exception, properties, measurements, severityLevel, id) {\r\n this.aiDataContract = {\r\n ver: 1 /* FieldType.Required */,\r\n exceptions: 1 /* FieldType.Required */,\r\n severityLevel: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2; // TODO: handle the CS\"4.0\" ==> breeze 2 conversion in a better way\r\n if (!_isExceptionInternal(exception)) {\r\n if (!properties) {\r\n properties = {};\r\n }\r\n _self[_DYN_EXCEPTIONS /* @min:%2eexceptions */] = [new _ExceptionDetails(logger, exception, properties)];\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n if (severityLevel) {\r\n _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = severityLevel;\r\n }\r\n if (id) {\r\n _self.id = id;\r\n }\r\n }\r\n else {\r\n _self[_DYN_EXCEPTIONS /* @min:%2eexceptions */] = exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */] || [];\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = exception[_DYN_PROPERTIES /* @min:%2eproperties */];\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = exception[_DYN_MEASUREMENTS /* @min:%2emeasurements */];\r\n if (exception[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */]) {\r\n _self[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */] = exception[_DYN_SEVERITY_LEVEL /* @min:%2eseverityLevel */];\r\n }\r\n if (exception.id) {\r\n _self.id = exception.id;\r\n }\r\n if (exception[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */]) {\r\n _self[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */] = exception[_DYN_PROBLEM_GROUP /* @min:%2eproblemGroup */];\r\n }\r\n // bool/int types, use isNullOrUndefined\r\n if (!isNullOrUndefined(exception[_DYN_IS_MANUAL /* @min:%2eisManual */])) {\r\n _self[_DYN_IS_MANUAL /* @min:%2eisManual */] = exception[_DYN_IS_MANUAL /* @min:%2eisManual */];\r\n }\r\n }\r\n }\r\n Exception.CreateAutoException = function (message, url, lineNumber, columnNumber, error, evt, stack, errorSrc) {\r\n var _a;\r\n var errorType = _getErrorType(error || evt || message);\r\n return _a = {},\r\n _a[_DYN_MESSAGE /* @min:message */] = _formatMessage(message, errorType),\r\n _a.url = url,\r\n _a.lineNumber = lineNumber,\r\n _a.columnNumber = columnNumber,\r\n _a.error = _formatErrorCode(error || evt || message),\r\n _a.evt = _formatErrorCode(evt || message),\r\n _a[_DYN_TYPE_NAME /* @min:typeName */] = errorType,\r\n _a.stackDetails = _getStackFromErrorObj(stack || error || evt),\r\n _a.errorSrc = errorSrc,\r\n _a;\r\n };\r\n Exception.CreateFromInterface = function (logger, exception, properties, measurements) {\r\n var exceptions = exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */]\r\n && arrMap(exception[_DYN_EXCEPTIONS /* @min:%2eexceptions */], function (ex) { return _ExceptionDetails[_DYN__CREATE_FROM_INTERFA1 /* @min:%2eCreateFromInterface */](logger, ex); });\r\n var exceptionData = new Exception(logger, __assign(__assign({}, exception), { exceptions: exceptions }), properties, measurements);\r\n return exceptionData;\r\n };\r\n Exception.prototype.toInterface = function () {\r\n var _a;\r\n var _b = this, exceptions = _b.exceptions, properties = _b.properties, measurements = _b.measurements, severityLevel = _b.severityLevel, problemGroup = _b.problemGroup, id = _b.id, isManual = _b.isManual;\r\n var exceptionDetailsInterface = exceptions instanceof Array\r\n && arrMap(exceptions, function (exception) { return exception.toInterface(); })\r\n || undefined;\r\n return _a = {\r\n ver: \"4.0\"\r\n },\r\n _a[_DYN_EXCEPTIONS /* @min:exceptions */] = exceptionDetailsInterface,\r\n _a.severityLevel = severityLevel,\r\n _a.properties = properties,\r\n _a.measurements = measurements,\r\n _a.problemGroup = problemGroup,\r\n _a.id = id,\r\n _a.isManual = isManual,\r\n _a;\r\n };\r\n /**\r\n * Creates a simple exception with 1 stack frame. Useful for manual constracting of exception.\r\n */\r\n Exception.CreateSimpleException = function (message, typeName, assembly, fileName, details, line) {\r\n var _a;\r\n return {\r\n exceptions: [\r\n (_a = {},\r\n _a[_DYN_HAS_FULL_STACK /* @min:hasFullStack */] = true,\r\n _a.message = message,\r\n _a.stack = details,\r\n _a.typeName = typeName,\r\n _a)\r\n ]\r\n };\r\n };\r\n Exception.envelopeType = \"Microsoft.ApplicationInsights.{0}.Exception\";\r\n Exception.dataType = \"ExceptionData\";\r\n Exception.formatError = _formatErrorCode;\r\n return Exception;\r\n}());\r\nexport { Exception };\r\nvar _ExceptionDetails = /** @class */ (function () {\r\n function _ExceptionDetails(logger, exception, properties) {\r\n this.aiDataContract = {\r\n id: 0 /* FieldType.Default */,\r\n outerId: 0 /* FieldType.Default */,\r\n typeName: 1 /* FieldType.Required */,\r\n message: 1 /* FieldType.Required */,\r\n hasFullStack: 0 /* FieldType.Default */,\r\n stack: 0 /* FieldType.Default */,\r\n parsedStack: 2 /* FieldType.Array */\r\n };\r\n var _self = this;\r\n if (!_isExceptionDetailsInternal(exception)) {\r\n var error = exception;\r\n var evt = error && error.evt;\r\n if (!isError(error)) {\r\n error = error[strError] || evt || error;\r\n }\r\n _self[_DYN_TYPE_NAME /* @min:%2etypeName */] = dataSanitizeString(logger, _getErrorType(error)) || strNotSpecified;\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] = dataSanitizeMessage(logger, _formatMessage(exception || error, _self[_DYN_TYPE_NAME /* @min:%2etypeName */])) || strNotSpecified;\r\n var stack = exception[strStackDetails] || _getStackFromErrorObj(exception);\r\n _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] = _parseStack(stack);\r\n _self[strStack] = dataSanitizeException(logger, _formatStackTrace(stack));\r\n _self.hasFullStack = isArray(_self.parsedStack) && _self.parsedStack[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n if (properties) {\r\n properties[_DYN_TYPE_NAME /* @min:%2etypeName */] = properties[_DYN_TYPE_NAME /* @min:%2etypeName */] || _self[_DYN_TYPE_NAME /* @min:%2etypeName */];\r\n }\r\n }\r\n else {\r\n _self[_DYN_TYPE_NAME /* @min:%2etypeName */] = exception[_DYN_TYPE_NAME /* @min:%2etypeName */];\r\n _self[_DYN_MESSAGE /* @min:%2emessage */] = exception[_DYN_MESSAGE /* @min:%2emessage */];\r\n _self[strStack] = exception[strStack];\r\n _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] = exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */] || [];\r\n _self[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */] = exception[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */];\r\n }\r\n }\r\n _ExceptionDetails.prototype.toInterface = function () {\r\n var _a;\r\n var _self = this;\r\n var parsedStack = _self[_DYN_PARSED_STACK /* @min:%2eparsedStack */] instanceof Array\r\n && arrMap(_self[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) { return frame.toInterface(); });\r\n var exceptionDetailsInterface = (_a = {\r\n id: _self.id,\r\n outerId: _self.outerId,\r\n typeName: _self[_DYN_TYPE_NAME /* @min:%2etypeName */],\r\n message: _self[_DYN_MESSAGE /* @min:%2emessage */],\r\n hasFullStack: _self[_DYN_HAS_FULL_STACK /* @min:%2ehasFullStack */],\r\n stack: _self[strStack]\r\n },\r\n _a[_DYN_PARSED_STACK /* @min:parsedStack */] = parsedStack || undefined,\r\n _a);\r\n return exceptionDetailsInterface;\r\n };\r\n _ExceptionDetails.CreateFromInterface = function (logger, exception) {\r\n var parsedStack = (exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */] instanceof Array\r\n && arrMap(exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */], function (frame) { return _StackFrame[_DYN__CREATE_FROM_INTERFA1 /* @min:%2eCreateFromInterface */](frame); }))\r\n || exception[_DYN_PARSED_STACK /* @min:%2eparsedStack */];\r\n var exceptionDetails = new _ExceptionDetails(logger, __assign(__assign({}, exception), { parsedStack: parsedStack }));\r\n return exceptionDetails;\r\n };\r\n return _ExceptionDetails;\r\n}());\r\nexport { _ExceptionDetails };\r\nvar _StackFrame = /** @class */ (function () {\r\n function _StackFrame(sourceFrame, level) {\r\n this.aiDataContract = {\r\n level: 1 /* FieldType.Required */,\r\n method: 1 /* FieldType.Required */,\r\n assembly: 0 /* FieldType.Default */,\r\n fileName: 0 /* FieldType.Default */,\r\n line: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] = 0;\r\n // Not converting this to isString() as typescript uses this logic to \"understand\" the different\r\n // types for the 2 different code paths\r\n if (typeof sourceFrame === \"string\") {\r\n var frame = sourceFrame;\r\n _self[_DYN_LEVEL /* @min:%2elevel */] = level;\r\n _self[_DYN_METHOD /* @min:%2emethod */] = NoMethod;\r\n _self[_DYN_ASSEMBLY /* @min:%2eassembly */] = strTrim(frame);\r\n _self[_DYN_FILE_NAME /* @min:%2efileName */] = \"\";\r\n _self[_DYN_LINE /* @min:%2eline */] = 0;\r\n var matches = frame.match(_StackFrame.regex);\r\n if (matches && matches[_DYN_LENGTH /* @min:%2elength */] >= 5) {\r\n _self[_DYN_METHOD /* @min:%2emethod */] = strTrim(matches[2]) || _self[_DYN_METHOD /* @min:%2emethod */];\r\n _self[_DYN_FILE_NAME /* @min:%2efileName */] = strTrim(matches[4]);\r\n _self[_DYN_LINE /* @min:%2eline */] = parseInt(matches[5]) || 0;\r\n }\r\n }\r\n else {\r\n _self[_DYN_LEVEL /* @min:%2elevel */] = sourceFrame[_DYN_LEVEL /* @min:%2elevel */];\r\n _self[_DYN_METHOD /* @min:%2emethod */] = sourceFrame[_DYN_METHOD /* @min:%2emethod */];\r\n _self[_DYN_ASSEMBLY /* @min:%2eassembly */] = sourceFrame[_DYN_ASSEMBLY /* @min:%2eassembly */];\r\n _self[_DYN_FILE_NAME /* @min:%2efileName */] = sourceFrame[_DYN_FILE_NAME /* @min:%2efileName */];\r\n _self[_DYN_LINE /* @min:%2eline */] = sourceFrame[_DYN_LINE /* @min:%2eline */];\r\n _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] = 0;\r\n }\r\n _self.sizeInBytes += _self.method[_DYN_LENGTH /* @min:%2elength */];\r\n _self.sizeInBytes += _self.fileName[_DYN_LENGTH /* @min:%2elength */];\r\n _self.sizeInBytes += _self.assembly[_DYN_LENGTH /* @min:%2elength */];\r\n // todo: these might need to be removed depending on how the back-end settles on their size calculation\r\n _self[_DYN_SIZE_IN_BYTES /* @min:%2esizeInBytes */] += _StackFrame.baseSize;\r\n _self.sizeInBytes += _self.level.toString()[_DYN_LENGTH /* @min:%2elength */];\r\n _self.sizeInBytes += _self.line.toString()[_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n _StackFrame.CreateFromInterface = function (frame) {\r\n return new _StackFrame(frame, null /* level is available in frame interface */);\r\n };\r\n _StackFrame.prototype.toInterface = function () {\r\n var _self = this;\r\n return {\r\n level: _self[_DYN_LEVEL /* @min:%2elevel */],\r\n method: _self[_DYN_METHOD /* @min:%2emethod */],\r\n assembly: _self[_DYN_ASSEMBLY /* @min:%2eassembly */],\r\n fileName: _self[_DYN_FILE_NAME /* @min:%2efileName */],\r\n line: _self[_DYN_LINE /* @min:%2eline */]\r\n };\r\n };\r\n // regex to match stack frames from ie/chrome/ff\r\n // methodName=$2, fileName=$4, lineNo=$5, column=$6\r\n _StackFrame.regex = /^([\\s]+at)?[\\s]{0,50}([^\\@\\()]+?)[\\s]{0,50}(\\@|\\()([^\\(\\n]+):([0-9]+):([0-9]+)(\\)?)$/;\r\n _StackFrame.baseSize = 58; // '{\"method\":\"\",\"level\":,\"assembly\":\"\",\"fileName\":\"\",\"line\":}'.length\r\n return _StackFrame;\r\n}());\r\nexport { _StackFrame };\r\n//# sourceMappingURL=Exception.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { msToTimeSpan } from \"../HelperFuncs\";\r\nimport { AjaxHelperParseDependencyPath } from \"../Util\";\r\nimport { _DYN_DURATION, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_PROPERTIES } from \"../__DynamicConstants\";\r\nimport { dataSanitizeMeasurements, dataSanitizeProperties, dataSanitizeString, dataSanitizeUrl } from \"./Common/DataSanitizer\";\r\nvar RemoteDependencyData = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the RemoteDependencyData object\r\n */\r\n function RemoteDependencyData(logger, id, absoluteUrl, commandName, value, success, resultCode, method, requestAPI, correlationContext, properties, measurements) {\r\n if (requestAPI === void 0) { requestAPI = \"Ajax\"; }\r\n this.aiDataContract = {\r\n id: 1 /* FieldType.Required */,\r\n ver: 1 /* FieldType.Required */,\r\n name: 0 /* FieldType.Default */,\r\n resultCode: 0 /* FieldType.Default */,\r\n duration: 0 /* FieldType.Default */,\r\n success: 0 /* FieldType.Default */,\r\n data: 0 /* FieldType.Default */,\r\n target: 0 /* FieldType.Default */,\r\n type: 0 /* FieldType.Default */,\r\n properties: 0 /* FieldType.Default */,\r\n measurements: 0 /* FieldType.Default */,\r\n kind: 0 /* FieldType.Default */,\r\n value: 0 /* FieldType.Default */,\r\n count: 0 /* FieldType.Default */,\r\n min: 0 /* FieldType.Default */,\r\n max: 0 /* FieldType.Default */,\r\n stdDev: 0 /* FieldType.Default */,\r\n dependencyKind: 0 /* FieldType.Default */,\r\n dependencySource: 0 /* FieldType.Default */,\r\n commandName: 0 /* FieldType.Default */,\r\n dependencyTypeName: 0 /* FieldType.Default */\r\n };\r\n var _self = this;\r\n _self.ver = 2;\r\n _self.id = id;\r\n _self[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(value);\r\n _self.success = success;\r\n _self.resultCode = resultCode + \"\";\r\n _self.type = dataSanitizeString(logger, requestAPI);\r\n var dependencyFields = AjaxHelperParseDependencyPath(logger, absoluteUrl, method, commandName);\r\n _self.data = dataSanitizeUrl(logger, commandName) || dependencyFields.data; // get a value from hosturl if commandName not available\r\n _self.target = dataSanitizeString(logger, dependencyFields.target);\r\n if (correlationContext) {\r\n _self.target = \"\".concat(_self.target, \" | \").concat(correlationContext);\r\n }\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, dependencyFields[_DYN_NAME /* @min:%2ename */]);\r\n _self[_DYN_PROPERTIES /* @min:%2eproperties */] = dataSanitizeProperties(logger, properties);\r\n _self[_DYN_MEASUREMENTS /* @min:%2emeasurements */] = dataSanitizeMeasurements(logger, measurements);\r\n }\r\n RemoteDependencyData.envelopeType = \"Microsoft.ApplicationInsights.{0}.RemoteDependency\";\r\n RemoteDependencyData.dataType = \"RemoteDependencyData\";\r\n return RemoteDependencyData;\r\n}());\r\nexport { RemoteDependencyData };\r\n//# sourceMappingURL=RemoteDependencyData.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_COMPLETE, _DYN_GET_CTX, _DYN_IS_ASYNC, _DYN_IS_CHILD_EVT, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SET_CTX, _DYN_TIME } from \"../__DynamicConstants\";\r\nimport { dateNow, isArray, isFunction, objDefineAccessors } from \"./HelperFuncs\";\r\nimport { STR_GET_PERF_MGR, STR_PERF_EVENT } from \"./InternalConstants\";\r\nvar strExecutionContextKey = \"ctx\";\r\nvar strParentContextKey = \"ParentContextKey\";\r\nvar strChildrenContextKey = \"ChildrenContextKey\";\r\nvar _defaultPerfManager = null;\r\nvar PerfEvent = /** @class */ (function () {\r\n function PerfEvent(name, payloadDetails, isAsync) {\r\n var _self = this;\r\n var accessorDefined = false;\r\n _self.start = dateNow();\r\n _self[_DYN_NAME /* @min:%2ename */] = name;\r\n _self[_DYN_IS_ASYNC /* @min:%2eisAsync */] = isAsync;\r\n _self[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */] = function () { return false; };\r\n if (isFunction(payloadDetails)) {\r\n // Create an accessor to minimize the potential performance impact of executing the payloadDetails callback\r\n var theDetails_1;\r\n accessorDefined = objDefineAccessors(_self, \"payload\", function () {\r\n // Delay the execution of the payloadDetails until needed\r\n if (!theDetails_1 && isFunction(payloadDetails)) {\r\n theDetails_1 = payloadDetails();\r\n // clear it out now so the referenced objects can be garbage collected\r\n payloadDetails = null;\r\n }\r\n return theDetails_1;\r\n });\r\n }\r\n _self[_DYN_GET_CTX /* @min:%2egetCtx */] = function (key) {\r\n if (key) {\r\n // The parent and child links are located directly on the object (for better viewing in the DebugPlugin)\r\n if (key === PerfEvent[strParentContextKey] || key === PerfEvent[strChildrenContextKey]) {\r\n return _self[key];\r\n }\r\n return (_self[strExecutionContextKey] || {})[key];\r\n }\r\n return null;\r\n };\r\n _self[_DYN_SET_CTX /* @min:%2esetCtx */] = function (key, value) {\r\n if (key) {\r\n // Put the parent and child links directly on the object (for better viewing in the DebugPlugin)\r\n if (key === PerfEvent[strParentContextKey]) {\r\n // Simple assumption, if we are setting a parent then we must be a child\r\n if (!_self[key]) {\r\n _self[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */] = function () { return true; };\r\n }\r\n _self[key] = value;\r\n }\r\n else if (key === PerfEvent[strChildrenContextKey]) {\r\n _self[key] = value;\r\n }\r\n else {\r\n var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n ctx[key] = value;\r\n }\r\n }\r\n };\r\n _self[_DYN_COMPLETE /* @min:%2ecomplete */] = function () {\r\n var childTime = 0;\r\n var childEvts = _self[_DYN_GET_CTX /* @min:%2egetCtx */](PerfEvent[strChildrenContextKey]);\r\n if (isArray(childEvts)) {\r\n for (var lp = 0; lp < childEvts[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var childEvt = childEvts[lp];\r\n if (childEvt) {\r\n childTime += childEvt[_DYN_TIME /* @min:%2etime */];\r\n }\r\n }\r\n }\r\n _self[_DYN_TIME /* @min:%2etime */] = dateNow() - _self.start;\r\n _self.exTime = _self[_DYN_TIME /* @min:%2etime */] - childTime;\r\n _self[_DYN_COMPLETE /* @min:%2ecomplete */] = function () { };\r\n if (!accessorDefined && isFunction(payloadDetails)) {\r\n // If we couldn't define the property set during complete -- to minimize the perf impact until after the time\r\n _self.payload = payloadDetails();\r\n }\r\n };\r\n }\r\n PerfEvent.ParentContextKey = \"parent\";\r\n PerfEvent.ChildrenContextKey = \"childEvts\";\r\n return PerfEvent;\r\n}());\r\nexport { PerfEvent };\r\nvar PerfManager = /** @class */ (function () {\r\n function PerfManager(manager) {\r\n /**\r\n * General bucket used for execution context set and retrieved via setCtx() and getCtx.\r\n * Defined as private so it can be visualized via the DebugPlugin\r\n */\r\n this.ctx = {};\r\n dynamicProto(PerfManager, this, function (_self) {\r\n _self.create = function (src, payloadDetails, isAsync) {\r\n // TODO (@MSNev): at some point we will want to add additional configuration to \"select\" which events to instrument\r\n // for now this is just a simple do everything.\r\n return new PerfEvent(src, payloadDetails, isAsync);\r\n };\r\n _self.fire = function (perfEvent) {\r\n if (perfEvent) {\r\n perfEvent[_DYN_COMPLETE /* @min:%2ecomplete */]();\r\n if (manager && isFunction(manager[STR_PERF_EVENT /* @min:%2eperfEvent */])) {\r\n manager[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent);\r\n }\r\n }\r\n };\r\n _self[_DYN_SET_CTX /* @min:%2esetCtx */] = function (key, value) {\r\n if (key) {\r\n var ctx = _self[strExecutionContextKey] = _self[strExecutionContextKey] || {};\r\n ctx[key] = value;\r\n }\r\n };\r\n _self[_DYN_GET_CTX /* @min:%2egetCtx */] = function (key) {\r\n return (_self[strExecutionContextKey] || {})[key];\r\n };\r\n });\r\n }\r\n// Removed Stub for PerfManager.prototype.create.\r\n// Removed Stub for PerfManager.prototype.fire.\r\n// Removed Stub for PerfManager.prototype.setCtx.\r\n// Removed Stub for PerfManager.prototype.getCtx.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n PerfManager.__ieDyn=1;\n\n return PerfManager;\r\n}());\r\nexport { PerfManager };\r\nvar doPerfActiveKey = \"CoreUtils.doPerf\";\r\n/**\r\n * Helper function to wrap a function with a perf event\r\n * @param mgrSource - The Performance Manager or a Performance provider source (may be null)\r\n * @param getSource - The callback to create the source name for the event (if perf monitoring is enabled)\r\n * @param func - The function to call and measure\r\n * @param details - A function to return the payload details\r\n * @param isAsync - Is the event / function being call asynchronously or synchronously\r\n */\r\nexport function doPerf(mgrSource, getSource, func, details, isAsync) {\r\n if (mgrSource) {\r\n var perfMgr = mgrSource;\r\n if (perfMgr[STR_GET_PERF_MGR]) {\r\n // Looks like a perf manager provider object\r\n perfMgr = perfMgr[STR_GET_PERF_MGR]();\r\n }\r\n if (perfMgr) {\r\n var perfEvt = void 0;\r\n var currentActive = perfMgr[_DYN_GET_CTX /* @min:%2egetCtx */](doPerfActiveKey);\r\n try {\r\n perfEvt = perfMgr.create(getSource(), details, isAsync);\r\n if (perfEvt) {\r\n if (currentActive && perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */](PerfEvent[strParentContextKey], currentActive);\r\n if (currentActive[_DYN_GET_CTX /* @min:%2egetCtx */] && currentActive[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n var children = currentActive[_DYN_GET_CTX /* @min:%2egetCtx */](PerfEvent[strChildrenContextKey]);\r\n if (!children) {\r\n children = [];\r\n currentActive[_DYN_SET_CTX /* @min:%2esetCtx */](PerfEvent[strChildrenContextKey], children);\r\n }\r\n children[_DYN_PUSH /* @min:%2epush */](perfEvt);\r\n }\r\n }\r\n // Set this event as the active event now\r\n perfMgr[_DYN_SET_CTX /* @min:%2esetCtx */](doPerfActiveKey, perfEvt);\r\n return func(perfEvt);\r\n }\r\n }\r\n catch (ex) {\r\n if (perfEvt && perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */]) {\r\n perfEvt[_DYN_SET_CTX /* @min:%2esetCtx */](\"exception\", ex);\r\n }\r\n }\r\n finally {\r\n // fire the perf event\r\n if (perfEvt) {\r\n perfMgr.fire(perfEvt);\r\n }\r\n // Reset the active event to the previous value\r\n perfMgr[_DYN_SET_CTX /* @min:%2esetCtx */](doPerfActiveKey, currentActive);\r\n }\r\n }\r\n }\r\n return func();\r\n}\r\n/**\r\n * Set the global performance manager to use when there is no core instance or it has not been initialized yet.\r\n * @param perfManager - The IPerfManager instance to use when no performance manager is supplied.\r\n */\r\nexport function setGblPerfMgr(perfManager) {\r\n _defaultPerfManager = perfManager;\r\n}\r\n/**\r\n * Get the current global performance manager that will be used with no performance manager is supplied.\r\n * @returns - The current default manager\r\n */\r\nexport function getGblPerfMgr() {\r\n return _defaultPerfManager;\r\n}\r\n//# sourceMappingURL=PerfManager.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { _DYN_CALL, _DYN_GET_NEXT, _DYN_GET_PLUGIN, _DYN_INITIALIZE, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_SPAN_ID, _DYN_TEARDOWN, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { createElmNodeData } from \"./DataCacheHelper\";\r\nimport { arrForEach, isFunction } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_PRIORITY, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { isValidSpanId, isValidTraceId } from \"./W3cTraceParent\";\r\nvar pluginStateData = createElmNodeData(\"plugin\");\r\nexport function _getPluginState(plugin) {\r\n return pluginStateData.get(plugin, \"state\", {}, true);\r\n}\r\n/**\r\n * Initialize the queue of plugins\r\n * @param plugins - The array of plugins to initialize and setting of the next plugin\r\n * @param config The current config for the instance\r\n * @param core THe current core instance\r\n * @param extensions The extensions\r\n */\r\nexport function initializePlugins(processContext, extensions) {\r\n // Set the next plugin and identified the uninitialized plugins\r\n var initPlugins = [];\r\n var lastPlugin = null;\r\n var proxy = processContext[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n var pluginState;\r\n while (proxy) {\r\n var thePlugin = proxy[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]();\r\n if (thePlugin) {\r\n if (lastPlugin &&\r\n isFunction(lastPlugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */]) &&\r\n isFunction(thePlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n // Set this plugin as the next for the previous one\r\n lastPlugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */](thePlugin);\r\n }\r\n var isInitialized = false;\r\n if (isFunction(thePlugin[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */])) {\r\n isInitialized = thePlugin[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]();\r\n }\r\n else {\r\n pluginState = _getPluginState(thePlugin);\r\n isInitialized = pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */];\r\n }\r\n if (!isInitialized) {\r\n initPlugins[_DYN_PUSH /* @min:%2epush */](thePlugin);\r\n }\r\n lastPlugin = thePlugin;\r\n proxy = proxy[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n }\r\n }\r\n // Now initialize the plugins\r\n arrForEach(initPlugins, function (thePlugin) {\r\n var core = processContext[STR_CORE]();\r\n thePlugin[_DYN_INITIALIZE /* @min:%2einitialize */](processContext.getCfg(), core, extensions, processContext[_DYN_GET_NEXT /* @min:%2egetNext */]());\r\n pluginState = _getPluginState(thePlugin);\r\n // Only add the core to the state if the plugin didn't set it (doesn't extent from BaseTelemetryPlugin)\r\n if (!thePlugin[STR_CORE] && !pluginState[STR_CORE]) {\r\n pluginState[STR_CORE] = core;\r\n }\r\n pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = true;\r\n delete pluginState[_DYN_TEARDOWN /* @min:%2eteardown */];\r\n });\r\n}\r\nexport function sortPlugins(plugins) {\r\n // Sort by priority\r\n return plugins.sort(function (extA, extB) {\r\n var result = 0;\r\n if (extB) {\r\n var bHasProcess = isFunction(extB[STR_PROCESS_TELEMETRY]);\r\n if (isFunction(extA[STR_PROCESS_TELEMETRY])) {\r\n result = bHasProcess ? extA[STR_PRIORITY] - extB[STR_PRIORITY] : 1;\r\n }\r\n else if (bHasProcess) {\r\n result = -1;\r\n }\r\n }\r\n else {\r\n result = extA ? 1 : -1;\r\n }\r\n return result;\r\n });\r\n // sort complete\r\n}\r\n/**\r\n * Teardown / Unload helper to perform teardown/unloading operations for the provided components synchronously or asynchronously, this will call any\r\n * _doTeardown() or _doUnload() functions on the provided components to allow them to finish removal.\r\n * @param components - The components you want to unload\r\n * @param unloadCtx - This is the context that should be used during unloading.\r\n * @param unloadState - The details / state of the unload process, it holds details like whether it should be unloaded synchronously or asynchronously and the reason for the unload.\r\n * @param asyncCallback - An optional callback that the plugin must call if it returns true to inform the caller that it has completed any async unload/teardown operations.\r\n * @returns boolean - true if the plugin has or will call asyncCallback, this allows the plugin to perform any asynchronous operations.\r\n */\r\nexport function unloadComponents(components, unloadCtx, unloadState, asyncCallback) {\r\n var idx = 0;\r\n function _doUnload() {\r\n while (idx < components[_DYN_LENGTH /* @min:%2elength */]) {\r\n var component = components[idx++];\r\n if (component) {\r\n var func = component._doUnload || component[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */];\r\n if (isFunction(func)) {\r\n if (func[_DYN_CALL /* @min:%2ecall */](component, unloadCtx, unloadState, _doUnload) === true) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return _doUnload();\r\n}\r\n/**\r\n * Creates a IDistributedTraceContext which optionally also \"sets\" the value on a parent\r\n * @param parentCtx - An optional parent distributed trace instance\r\n * @returns A new IDistributedTraceContext instance that uses an internal temporary object\r\n */\r\nexport function createDistributedTraceContext(parentCtx) {\r\n var trace = {};\r\n return {\r\n getName: function () {\r\n return trace[_DYN_NAME /* @min:%2ename */];\r\n },\r\n setName: function (newValue) {\r\n parentCtx && parentCtx.setName(newValue);\r\n trace[_DYN_NAME /* @min:%2ename */] = newValue;\r\n },\r\n getTraceId: function () {\r\n return trace[_DYN_TRACE_ID /* @min:%2etraceId */];\r\n },\r\n setTraceId: function (newValue) {\r\n parentCtx && parentCtx.setTraceId(newValue);\r\n if (isValidTraceId(newValue)) {\r\n trace[_DYN_TRACE_ID /* @min:%2etraceId */] = newValue;\r\n }\r\n },\r\n getSpanId: function () {\r\n return trace[_DYN_SPAN_ID /* @min:%2espanId */];\r\n },\r\n setSpanId: function (newValue) {\r\n parentCtx && parentCtx.setSpanId(newValue);\r\n if (isValidSpanId(newValue)) {\r\n trace[_DYN_SPAN_ID /* @min:%2espanId */] = newValue;\r\n }\r\n },\r\n getTraceFlags: function () {\r\n return trace[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n },\r\n setTraceFlags: function (newTraceFlags) {\r\n parentCtx && parentCtx.setTraceFlags(newTraceFlags);\r\n trace[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = newTraceFlags;\r\n }\r\n };\r\n}\r\n//# sourceMappingURL=TelemetryHelpers.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { _DYN_CALL, _DYN_CONFIG, _DYN_CREATE_NEW, _DYN_DIAG_LOG, _DYN_GET_NEXT, _DYN_GET_PLUGIN, _DYN_IDENTIFIER, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_LOGGER, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_TEARDOWN, _DYN_UPDATE } from \"../__DynamicConstants\";\r\nimport { _throwInternal, safeGetLogger } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach, isArray, isFunction, isNullOrUndefined, isObject, isUndefined, objExtend, objForEachKey, objFreeze, objKeys, proxyFunctions } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_DISABLED, STR_EMPTY, STR_EXTENSION_CONFIG, STR_PRIORITY, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { doPerf } from \"./PerfManager\";\r\nimport { _getPluginState } from \"./TelemetryHelpers\";\r\nvar strTelemetryPluginChain = \"TelemetryPluginChain\";\r\nvar strHasRunFlags = \"_hasRun\";\r\nvar strGetTelCtx = \"_getTelCtx\";\r\nvar _chainId = 0;\r\nfunction _getNextProxyStart(proxy, core, startAt) {\r\n while (proxy) {\r\n if (proxy[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]() === startAt) {\r\n return proxy;\r\n }\r\n proxy = proxy[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n }\r\n // This wasn't found in the existing chain so create an isolated one with just this plugin\r\n return createTelemetryProxyChain([startAt], core[_DYN_CONFIG /* @min:%2econfig */] || {}, core);\r\n}\r\n/**\r\n * @ignore\r\n * @param telemetryChain\r\n * @param config\r\n * @param core\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n * @returns\r\n */\r\nfunction _createInternalContext(telemetryChain, config, core, startAt) {\r\n // We have a special case where we want to start execution from this specific plugin\r\n // or we simply reuse the existing telemetry plugin chain (normal execution case)\r\n var _nextProxy = null; // By Default set as no next plugin\r\n var _onComplete = [];\r\n if (startAt !== null) {\r\n // There is no next element (null) vs not defined (undefined) so use the full chain\r\n _nextProxy = startAt ? _getNextProxyStart(telemetryChain, core, startAt) : telemetryChain;\r\n }\r\n var context = {\r\n _next: _moveNext,\r\n ctx: {\r\n core: function () {\r\n return core;\r\n },\r\n diagLog: function () {\r\n return safeGetLogger(core, config);\r\n },\r\n getCfg: function () {\r\n return config;\r\n },\r\n getExtCfg: _getExtCfg,\r\n getConfig: _getConfig,\r\n hasNext: function () {\r\n return !!_nextProxy;\r\n },\r\n getNext: function () {\r\n return _nextProxy;\r\n },\r\n setNext: function (nextPlugin) {\r\n _nextProxy = nextPlugin;\r\n },\r\n iterate: _iterateChain,\r\n onComplete: _addOnComplete\r\n }\r\n };\r\n function _addOnComplete(onComplete, that) {\r\n var args = [];\r\n for (var _i = 2; _i < arguments.length; _i++) {\r\n args[_i - 2] = arguments[_i];\r\n }\r\n if (onComplete) {\r\n _onComplete[_DYN_PUSH /* @min:%2epush */]({\r\n func: onComplete,\r\n self: !isUndefined(that) ? that : context.ctx,\r\n args: args\r\n });\r\n }\r\n }\r\n function _moveNext() {\r\n var nextProxy = _nextProxy;\r\n // Automatically move to the next plugin\r\n _nextProxy = nextProxy ? nextProxy[_DYN_GET_NEXT /* @min:%2egetNext */]() : null;\r\n if (!nextProxy) {\r\n var onComplete = _onComplete;\r\n if (onComplete && onComplete[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(onComplete, function (completeDetails) {\r\n try {\r\n completeDetails.func[_DYN_CALL /* @min:%2ecall */](completeDetails.self, completeDetails.args);\r\n }\r\n catch (e) {\r\n _throwInternal(core[_DYN_LOGGER /* @min:%2elogger */], 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unexpected Exception during onComplete - \" + dumpObj(e));\r\n }\r\n });\r\n _onComplete = [];\r\n }\r\n }\r\n return nextProxy;\r\n }\r\n function _getExtCfg(identifier, defaultValue, mergeDefault) {\r\n if (defaultValue === void 0) { defaultValue = {}; }\r\n if (mergeDefault === void 0) { mergeDefault = 0 /* GetExtCfgMergeType.None */; }\r\n var theConfig;\r\n if (config) {\r\n var extConfig = config[STR_EXTENSION_CONFIG /* @min:%2eextensionConfig */];\r\n if (extConfig && identifier) {\r\n theConfig = extConfig[identifier];\r\n }\r\n }\r\n if (!theConfig) {\r\n // Just use the defaults\r\n theConfig = defaultValue;\r\n }\r\n else if (isObject(defaultValue)) {\r\n if (mergeDefault !== 0 /* GetExtCfgMergeType.None */) {\r\n // Merge the defaults and configured values\r\n var newConfig_1 = objExtend(true, defaultValue, theConfig);\r\n if (config && mergeDefault === 2 /* GetExtCfgMergeType.MergeDefaultFromRootOrDefault */) {\r\n // Enumerate over the defaultValues and if not already populated attempt to\r\n // find a value from the root config\r\n objForEachKey(defaultValue, function (field) {\r\n // for each unspecified field, set the default value\r\n if (isNullOrUndefined(newConfig_1[field])) {\r\n var cfgValue = config[field];\r\n if (!isNullOrUndefined(cfgValue)) {\r\n newConfig_1[field] = cfgValue;\r\n }\r\n }\r\n });\r\n }\r\n theConfig = newConfig_1;\r\n }\r\n }\r\n return theConfig;\r\n }\r\n function _getConfig(identifier, field, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n var theValue;\r\n var extConfig = _getExtCfg(identifier, null);\r\n if (extConfig && !isNullOrUndefined(extConfig[field])) {\r\n theValue = extConfig[field];\r\n }\r\n else if (config && !isNullOrUndefined(config[field])) {\r\n theValue = config[field];\r\n }\r\n return !isNullOrUndefined(theValue) ? theValue : defaultValue;\r\n }\r\n function _iterateChain(cb) {\r\n // Keep processing until we reach the end of the chain\r\n var nextPlugin;\r\n while (!!(nextPlugin = context._next())) {\r\n var plugin = nextPlugin[_DYN_GET_PLUGIN /* @min:%2egetPlugin */]();\r\n if (plugin) {\r\n // callback with the current on\r\n cb(plugin);\r\n }\r\n }\r\n }\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryContext(telemetryChain, config, core, startAt) {\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(env) {\r\n var nextPlugin = internalContext._next();\r\n // Run the next plugin which will call \"processNext()\"\r\n nextPlugin && nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, context);\r\n return !nextPlugin;\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n }\r\n return createProcessTelemetryContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), config, core, startAt);\r\n }\r\n context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain for handling the unloading of the chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryUnloadContext(telemetryChain, core, startAt) {\r\n var config = core[_DYN_CONFIG /* @min:%2econfig */] || {};\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(unloadState) {\r\n var nextPlugin = internalContext._next();\r\n nextPlugin && nextPlugin.unload(context, unloadState);\r\n return !nextPlugin;\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n }\r\n return createProcessTelemetryUnloadContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), core, startAt);\r\n }\r\n context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain for updating the configuration\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n * @param startAt - Identifies the next plugin to execute, if null there is no \"next\" plugin and if undefined it should assume the start of the chain\r\n */\r\nexport function createProcessTelemetryUpdateContext(telemetryChain, core, startAt) {\r\n var config = core[_DYN_CONFIG /* @min:%2econfig */] || {};\r\n var internalContext = _createInternalContext(telemetryChain, config, core, startAt);\r\n var context = internalContext.ctx;\r\n function _processNext(updateState) {\r\n return context.iterate(function (plugin) {\r\n if (isFunction(plugin[_DYN_UPDATE /* @min:%2eupdate */])) {\r\n plugin[_DYN_UPDATE /* @min:%2eupdate */](context, updateState);\r\n }\r\n });\r\n }\r\n function _createNew(plugins, startAt) {\r\n if (plugins === void 0) { plugins = null; }\r\n if (isArray(plugins)) {\r\n plugins = createTelemetryProxyChain(plugins, config, core, startAt);\r\n }\r\n return createProcessTelemetryUpdateContext(plugins || context[_DYN_GET_NEXT /* @min:%2egetNext */](), core, startAt);\r\n }\r\n context[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = _processNext;\r\n context[_DYN_CREATE_NEW /* @min:%2ecreateNew */] = _createNew;\r\n return context;\r\n}\r\n/**\r\n * Creates an execution chain from the array of plugins\r\n * @param plugins - The array of plugins that will be executed in this order\r\n * @param defItemCtx - The default execution context to use when no telemetry context is passed to processTelemetry(), this\r\n * should be for legacy plugins only. Currently, only used for passing the current core instance and to provide better error\r\n * reporting (hasRun) when errors occur.\r\n */\r\nexport function createTelemetryProxyChain(plugins, config, core, startAt) {\r\n var firstProxy = null;\r\n var add = startAt ? false : true;\r\n if (isArray(plugins) && plugins[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // Create the proxies and wire up the next plugin chain\r\n var lastProxy_1 = null;\r\n arrForEach(plugins, function (thePlugin) {\r\n if (!add && startAt === thePlugin) {\r\n add = true;\r\n }\r\n if (add && thePlugin && isFunction(thePlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n // Only add plugins that are processors\r\n var newProxy = createTelemetryPluginProxy(thePlugin, config, core);\r\n if (!firstProxy) {\r\n firstProxy = newProxy;\r\n }\r\n if (lastProxy_1) {\r\n // Set this new proxy as the next for the previous one\r\n lastProxy_1._setNext(newProxy);\r\n }\r\n lastProxy_1 = newProxy;\r\n }\r\n });\r\n }\r\n if (startAt && !firstProxy) {\r\n // Special case where the \"startAt\" was not in the original list of plugins\r\n return createTelemetryProxyChain([startAt], config, core);\r\n }\r\n return firstProxy;\r\n}\r\n/**\r\n * Create the processing telemetry proxy instance, the proxy is used to abstract the current plugin to allow monitoring and\r\n * execution plugins while passing around the dynamic execution state (IProcessTelemetryContext), the proxy instance no longer\r\n * contains any execution state and can be reused between requests (this was not the case for 2.7.2 and earlier with the\r\n * TelemetryPluginChain class).\r\n * @param plugin - The plugin instance to proxy\r\n * @param config - The default execution context to use when no telemetry context is passed to processTelemetry(), this\r\n * should be for legacy plugins only. Currently, only used for passing the current core instance and to provide better error\r\n * reporting (hasRun) when errors occur.\r\n * @returns\r\n */\r\nexport function createTelemetryPluginProxy(plugin, config, core) {\r\n var nextProxy = null;\r\n var hasProcessTelemetry = isFunction(plugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */]);\r\n var hasSetNext = isFunction(plugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */]);\r\n var chainId;\r\n if (plugin) {\r\n chainId = plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] + \"-\" + plugin[STR_PRIORITY /* @min:%2epriority */] + \"-\" + _chainId++;\r\n }\r\n else {\r\n chainId = \"Unknown-0-\" + _chainId++;\r\n }\r\n var proxyChain = {\r\n getPlugin: function () {\r\n return plugin;\r\n },\r\n getNext: function () {\r\n return nextProxy;\r\n },\r\n processTelemetry: _processTelemetry,\r\n unload: _unloadPlugin,\r\n update: _updatePlugin,\r\n _id: chainId,\r\n _setNext: function (nextPlugin) {\r\n nextProxy = nextPlugin;\r\n }\r\n };\r\n function _getTelCtx() {\r\n var itemCtx;\r\n // Looks like a plugin didn't pass the (optional) context, so create a new one\r\n if (plugin && isFunction(plugin[strGetTelCtx])) {\r\n // This plugin extends from the BaseTelemetryPlugin so lets use it\r\n itemCtx = plugin[strGetTelCtx]();\r\n }\r\n if (!itemCtx) {\r\n // Create a temporary one\r\n itemCtx = createProcessTelemetryContext(proxyChain, config, core);\r\n }\r\n return itemCtx;\r\n }\r\n function _processChain(itemCtx, processPluginFn, name, details, isAsync) {\r\n var hasRun = false;\r\n var identifier = plugin ? plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] : strTelemetryPluginChain;\r\n var hasRunContext = itemCtx[strHasRunFlags];\r\n if (!hasRunContext) {\r\n // Assign and populate\r\n hasRunContext = itemCtx[strHasRunFlags] = {};\r\n }\r\n // Ensure that we keep the context in sync\r\n itemCtx.setNext(nextProxy);\r\n if (plugin) {\r\n doPerf(itemCtx[STR_CORE /* @min:%2ecore */](), function () { return identifier + \":\" + name; }, function () {\r\n // Mark this component as having run\r\n hasRunContext[chainId] = true;\r\n try {\r\n // Set a flag on the next plugin so we know if it was attempted to be executed\r\n var nextId = nextProxy ? nextProxy._id : STR_EMPTY;\r\n if (nextId) {\r\n hasRunContext[nextId] = false;\r\n }\r\n hasRun = processPluginFn(itemCtx);\r\n }\r\n catch (error) {\r\n var hasNextRun = nextProxy ? hasRunContext[nextProxy._id] : true;\r\n if (hasNextRun) {\r\n // The next plugin after us has already run so set this one as complete\r\n hasRun = true;\r\n }\r\n if (!nextProxy || !hasNextRun) {\r\n // Either we have no next plugin or the current one did not attempt to call the next plugin\r\n // Which means the current one is the root of the failure so log/report this failure\r\n _throwInternal(itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 73 /* _eInternalMessageId.PluginException */, \"Plugin [\" + identifier + \"] failed during \" + name + \" - \" + dumpObj(error) + \", run flags: \" + dumpObj(hasRunContext));\r\n }\r\n }\r\n }, details, isAsync);\r\n }\r\n return hasRun;\r\n }\r\n function _processTelemetry(env, itemCtx) {\r\n itemCtx = itemCtx || _getTelCtx();\r\n function _callProcessTelemetry(itemCtx) {\r\n if (!plugin || !hasProcessTelemetry) {\r\n return false;\r\n }\r\n var pluginState = _getPluginState(plugin);\r\n if (pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] || pluginState[STR_DISABLED]) {\r\n return false;\r\n }\r\n // Ensure that we keep the context in sync (for processNext()), just in case a plugin\r\n // doesn't calls processTelemetry() instead of itemContext.processNext() or some\r\n // other form of error occurred\r\n if (hasSetNext) {\r\n // Backward compatibility setting the next plugin on the instance\r\n plugin[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */](nextProxy);\r\n }\r\n plugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, itemCtx);\r\n // Process Telemetry is expected to call itemCtx.processNext() or nextPlugin.processTelemetry()\r\n return true;\r\n }\r\n if (!_processChain(itemCtx, _callProcessTelemetry, \"processTelemetry\", function () { return ({ item: env }); }, !(env.sync))) {\r\n // The underlying plugin is either not defined, not enabled or does not have a processTelemetry implementation\r\n // so we still want the next plugin to be executed.\r\n itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](env);\r\n }\r\n }\r\n function _unloadPlugin(unloadCtx, unloadState) {\r\n function _callTeardown() {\r\n // Setting default of hasRun as false so the proxyProcessFn() is called as teardown() doesn't have to exist or call unloadNext().\r\n var hasRun = false;\r\n if (plugin) {\r\n var pluginState = _getPluginState(plugin);\r\n var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE /* @min:%2ecore */];\r\n // Only teardown the plugin if it was initialized by the current core (i.e. It's not a shared plugin)\r\n if (plugin && (!pluginCore || pluginCore === unloadCtx.core()) && !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */]) {\r\n // Handle plugins that don't extend from the BaseTelemetryPlugin\r\n pluginState[STR_CORE /* @min:%2ecore */] = null;\r\n pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] = true;\r\n pluginState[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = false;\r\n if (plugin[_DYN_TEARDOWN /* @min:%2eteardown */] && plugin[_DYN_TEARDOWN /* @min:%2eteardown */](unloadCtx, unloadState) === true) {\r\n // plugin told us that it was going to (or has) call unloadCtx.processNext()\r\n hasRun = true;\r\n }\r\n }\r\n }\r\n return hasRun;\r\n }\r\n if (!_processChain(unloadCtx, _callTeardown, \"unload\", function () { }, unloadState[_DYN_IS_ASYNC /* @min:%2eisAsync */])) {\r\n // Only called if we hasRun was not true\r\n unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n }\r\n }\r\n function _updatePlugin(updateCtx, updateState) {\r\n function _callUpdate() {\r\n // Setting default of hasRun as false so the proxyProcessFn() is called as teardown() doesn't have to exist or call unloadNext().\r\n var hasRun = false;\r\n if (plugin) {\r\n var pluginState = _getPluginState(plugin);\r\n var pluginCore = plugin[STR_CORE] || pluginState[STR_CORE /* @min:%2ecore */];\r\n // Only update the plugin if it was initialized by the current core (i.e. It's not a shared plugin)\r\n if (plugin && (!pluginCore || pluginCore === updateCtx.core()) && !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */]) {\r\n if (plugin[_DYN_UPDATE /* @min:%2eupdate */] && plugin[_DYN_UPDATE /* @min:%2eupdate */](updateCtx, updateState) === true) {\r\n // plugin told us that it was going to (or has) call unloadCtx.processNext()\r\n hasRun = true;\r\n }\r\n }\r\n }\r\n return hasRun;\r\n }\r\n if (!_processChain(updateCtx, _callUpdate, \"update\", function () { }, false)) {\r\n // Only called if we hasRun was not true\r\n updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](updateState);\r\n }\r\n }\r\n return objFreeze(proxyChain);\r\n}\r\n/**\r\n * This class will be removed!\r\n * @deprecated use createProcessTelemetryContext() instead\r\n */\r\nvar ProcessTelemetryContext = /** @class */ (function () {\r\n /**\r\n * Creates a new Telemetry Item context with the current config, core and plugin execution chain\r\n * @param plugins - The plugin instances that will be executed\r\n * @param config - The current config\r\n * @param core - The current core instance\r\n */\r\n function ProcessTelemetryContext(pluginChain, config, core, startAt) {\r\n var _self = this;\r\n var context = createProcessTelemetryContext(pluginChain, config, core, startAt);\r\n // Proxy all functions of the context to this object\r\n proxyFunctions(_self, context, objKeys(context));\r\n }\r\n return ProcessTelemetryContext;\r\n}());\r\nexport { ProcessTelemetryContext };\r\n//# sourceMappingURL=ProcessTelemetryContext.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { strShimFunction, strShimPrototype } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_APPLY, _DYN_LENGTH, _DYN_NAME, _DYN_PUSH, _DYN_SPLICE } from \"../__DynamicConstants\";\r\nimport { getGlobalInst } from \"./EnvUtils\";\r\nimport { _getObjProto, hasOwnProperty } from \"./HelperFuncs\";\r\nvar aiInstrumentHooks = \"_aiHooks\";\r\nvar cbNames = [\r\n \"req\", \"rsp\", \"hkErr\", \"fnErr\"\r\n];\r\n/** @ignore */\r\nfunction _arrLoop(arr, fn) {\r\n if (arr) {\r\n for (var lp = 0; lp < arr[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n if (fn(arr[lp], lp)) {\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n/** @ignore */\r\nfunction _doCallbacks(hooks, callDetails, cbArgs, hookCtx, type) {\r\n if (type >= 0 /* CallbackType.Request */ && type <= 2 /* CallbackType.HookError */) {\r\n _arrLoop(hooks, function (hook, idx) {\r\n var cbks = hook.cbks;\r\n var cb = cbks[cbNames[type]];\r\n if (cb) {\r\n // Set the specific hook context implementation using a lazy creation pattern\r\n callDetails.ctx = function () {\r\n var ctx = hookCtx[idx] = (hookCtx[idx] || {});\r\n return ctx;\r\n };\r\n try {\r\n cb[_DYN_APPLY /* @min:%2eapply */](callDetails.inst, cbArgs);\r\n }\r\n catch (err) {\r\n var orgEx = callDetails.err;\r\n try {\r\n // Report Hook error via the callback\r\n var hookErrorCb = cbks[cbNames[2 /* CallbackType.HookError */]];\r\n if (hookErrorCb) {\r\n callDetails.err = err;\r\n hookErrorCb[_DYN_APPLY /* @min:%2eapply */](callDetails.inst, cbArgs);\r\n }\r\n }\r\n catch (e) {\r\n // Not much we can do here -- swallowing the exception to avoid crashing the hosting app\r\n }\r\n finally {\r\n // restore the original exception (if any)\r\n callDetails.err = orgEx;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n}\r\n/** @ignore */\r\nfunction _createFunctionHook(aiHook) {\r\n // Define a temporary method that queues-up a the real method call\r\n return function () {\r\n var _a;\r\n var funcThis = this;\r\n // Capture the original arguments passed to the method\r\n var orgArgs = arguments;\r\n var hooks = aiHook.h;\r\n var funcArgs = (_a = {},\r\n _a[_DYN_NAME /* @min:name */] = aiHook.n,\r\n _a.inst = funcThis,\r\n _a.ctx = null,\r\n _a.set = _replaceArg,\r\n _a);\r\n var hookCtx = [];\r\n var cbArgs = _createArgs([funcArgs], orgArgs);\r\n funcArgs.evt = getGlobalInst(\"event\");\r\n function _createArgs(target, theArgs) {\r\n _arrLoop(theArgs, function (arg) {\r\n target[_DYN_PUSH /* @min:%2epush */](arg);\r\n });\r\n return target;\r\n }\r\n function _replaceArg(idx, value) {\r\n orgArgs = _createArgs([], orgArgs);\r\n orgArgs[idx] = value;\r\n cbArgs = _createArgs([funcArgs], orgArgs);\r\n }\r\n // Call the pre-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 0 /* CallbackType.Request */);\r\n // Call the original function was called\r\n var theFunc = aiHook.f;\r\n if (theFunc) {\r\n try {\r\n funcArgs.rslt = theFunc[_DYN_APPLY /* @min:%2eapply */](funcThis, orgArgs);\r\n }\r\n catch (err) {\r\n // Report the request callback\r\n funcArgs.err = err;\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 3 /* CallbackType.FunctionError */);\r\n // rethrow the original exception so anyone listening for it can catch the exception\r\n throw err;\r\n }\r\n }\r\n // Call the post-request hooks\r\n _doCallbacks(hooks, funcArgs, cbArgs, hookCtx, 1 /* CallbackType.Response */);\r\n return funcArgs.rslt;\r\n };\r\n}\r\n/** @ignore */\r\nfunction _getOwner(target, name, checkPrototype) {\r\n var owner = null;\r\n if (target) {\r\n if (hasOwnProperty(target, name)) {\r\n owner = target;\r\n }\r\n else if (checkPrototype) {\r\n owner = _getOwner(_getObjProto(target), name, false);\r\n }\r\n }\r\n return owner;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProto(target, funcName, callbacks) {\r\n if (target) {\r\n return InstrumentFunc(target[strShimPrototype], funcName, callbacks, false);\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n */\r\nexport function InstrumentProtos(target, funcNames, callbacks) {\r\n if (target) {\r\n return InstrumentFuncs(target[strShimPrototype], funcNames, callbacks, false);\r\n }\r\n return null;\r\n}\r\nfunction _createInstrumentHook(owner, funcName, fn, callbacks) {\r\n var aiHook = fn && fn[aiInstrumentHooks];\r\n if (!aiHook) {\r\n // Only hook the function once\r\n aiHook = {\r\n i: 0,\r\n n: funcName,\r\n f: fn,\r\n h: []\r\n };\r\n // Override (hook) the original function\r\n var newFunc = _createFunctionHook(aiHook);\r\n newFunc[aiInstrumentHooks] = aiHook; // Tag and store the function hooks\r\n owner[funcName] = newFunc;\r\n }\r\n var theHook = {\r\n // tslint:disable:object-literal-shorthand\r\n id: aiHook.i,\r\n cbks: callbacks,\r\n rm: function () {\r\n // DO NOT Use () => { shorthand for the function as the this gets replaced\r\n // with the outer this and not the this for theHook instance.\r\n var id = this.id;\r\n _arrLoop(aiHook.h, function (hook, idx) {\r\n if (hook.id === id) {\r\n aiHook.h[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n return 1;\r\n }\r\n });\r\n }\r\n // tslint:enable:object-literal-shorthand\r\n };\r\n aiHook.i++;\r\n aiHook.h[_DYN_PUSH /* @min:%2epush */](theHook);\r\n return theHook;\r\n}\r\n/**\r\n * Intercept the named prototype functions for the target class / object\r\n * @param target - The target object\r\n * @param funcName - The function name\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentFunc(target, funcName, callbacks, checkPrototype) {\r\n if (checkPrototype === void 0) { checkPrototype = true; }\r\n if (target && funcName && callbacks) {\r\n var owner = _getOwner(target, funcName, checkPrototype);\r\n if (owner) {\r\n var fn = owner[funcName];\r\n if (typeof fn === strShimFunction) {\r\n return _createInstrumentHook(owner, funcName, fn, callbacks);\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n/**\r\n * Intercept the named functions for the target class / object\r\n * @param target - The target object\r\n * @param funcNames - The function names to intercept and call\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentFuncs(target, funcNames, callbacks, checkPrototype) {\r\n if (checkPrototype === void 0) { checkPrototype = true; }\r\n var hooks = null;\r\n _arrLoop(funcNames, function (funcName) {\r\n var hook = InstrumentFunc(target, funcName, callbacks, checkPrototype);\r\n if (hook) {\r\n if (!hooks) {\r\n hooks = [];\r\n }\r\n hooks[_DYN_PUSH /* @min:%2epush */](hook);\r\n }\r\n });\r\n return hooks;\r\n}\r\n/**\r\n * Add an instrumentation hook to the provided named \"event\" for the target class / object, this doesn't check whether the\r\n * named \"event\" is in fact a function and just assigns the instrumentation hook to the target[evtName]\r\n * @param target - The target object\r\n * @param evtName - The name of the event\r\n * @param callbacks - The callbacks to configure and call whenever the function is called\r\n * @param checkPrototype - If the function doesn't exist on the target should it attempt to hook the prototype function\r\n */\r\nexport function InstrumentEvent(target, evtName, callbacks, checkPrototype) {\r\n if (target && evtName && callbacks) {\r\n var owner = _getOwner(target, evtName, checkPrototype) || target;\r\n if (owner) {\r\n return _createInstrumentHook(owner, evtName, owner[evtName], callbacks);\r\n }\r\n }\r\n return null;\r\n}\r\n//# sourceMappingURL=InstrumentHooks.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_DIAG_LOG, _DYN_PUSH } from \"../__DynamicConstants\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach } from \"./HelperFuncs\";\r\nexport function createUnloadHandlerContainer() {\r\n var handlers = [];\r\n function _addHandler(handler) {\r\n if (handler) {\r\n handlers[_DYN_PUSH /* @min:%2epush */](handler);\r\n }\r\n }\r\n function _runHandlers(unloadCtx, unloadState) {\r\n arrForEach(handlers, function (handler) {\r\n try {\r\n handler(unloadCtx, unloadState);\r\n }\r\n catch (e) {\r\n _throwInternal(unloadCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, \"Unexpected error calling unload handler - \" + dumpObj(e));\r\n }\r\n });\r\n handlers = [];\r\n }\r\n return {\r\n add: _addHandler,\r\n run: _runHandlers\r\n };\r\n}\r\n//# sourceMappingURL=UnloadHandlerContainer.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_CREATE_NEW, _DYN_DIAG_LOG, _DYN_GET_NEXT, _DYN_GET_PROCESS_TEL_CONT0, _DYN_INITIALIZE, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SET_NEXT_PLUGIN, _DYN_TEARDOWN, _DYN_UPDATE, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { arrForEach, isArray, isFunction, isNullOrUndefined, proxyFunctionAs, setValue } from \"./HelperFuncs\";\r\nimport { STR_CORE, STR_EXTENSION_CONFIG, STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nimport { createProcessTelemetryContext, createProcessTelemetryUnloadContext, createProcessTelemetryUpdateContext } from \"./ProcessTelemetryContext\";\r\nimport { createUnloadHandlerContainer } from \"./UnloadHandlerContainer\";\r\nvar strGetPlugin = \"getPlugin\";\r\n/**\r\n * BaseTelemetryPlugin provides a basic implementation of the ITelemetryPlugin interface so that plugins\r\n * can avoid implementation the same set of boiler plate code as well as provide a base\r\n * implementation so that new default implementations can be added without breaking all plugins.\r\n */\r\nvar BaseTelemetryPlugin = /** @class */ (function () {\r\n function BaseTelemetryPlugin() {\r\n var _self = this; // Setting _self here as it's used outside of the dynamicProto as well\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _isinitialized;\r\n var _rootCtx; // Used as the root context, holding the current config and initialized core\r\n var _nextPlugin; // Used for backward compatibility where plugins don't call the main pipeline\r\n var _unloadHandlerContainer;\r\n var _hooks;\r\n _initDefaults();\r\n dynamicProto(BaseTelemetryPlugin, _self, function (_self) {\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, core, extensions, pluginChain) {\r\n _setDefaults(config, core, pluginChain);\r\n _isinitialized = true;\r\n };\r\n _self[_DYN_TEARDOWN /* @min:%2eteardown */] = function (unloadCtx, unloadState) {\r\n var _a;\r\n // If this plugin has already been torn down (not operational) or is not initialized (core is not set)\r\n // or the core being used for unload was not the same core used for initialization.\r\n var core = _self[STR_CORE /* @min:%2ecore */];\r\n if (!core || (unloadCtx && core !== unloadCtx[STR_CORE /* @min:%2ecore */]())) {\r\n // Do Nothing as either the plugin is not initialized or was not initialized by the current core\r\n return;\r\n }\r\n var result;\r\n var unloadDone = false;\r\n var theUnloadCtx = unloadCtx || createProcessTelemetryUnloadContext(null, core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);\r\n var theUnloadState = unloadState || (_a = {\r\n reason: 0 /* TelemetryUnloadReason.ManualTeardown */\r\n },\r\n _a[_DYN_IS_ASYNC /* @min:isAsync */] = false,\r\n _a);\r\n function _unloadCallback() {\r\n if (!unloadDone) {\r\n unloadDone = true;\r\n _unloadHandlerContainer.run(theUnloadCtx, unloadState);\r\n var oldHooks = _hooks;\r\n _hooks = [];\r\n // Remove all instrumentation hooks\r\n arrForEach(oldHooks, function (fn) {\r\n fn.rm();\r\n });\r\n if (result === true) {\r\n theUnloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n }\r\n _initDefaults();\r\n }\r\n }\r\n if (!_self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */] || _self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */](theUnloadCtx, theUnloadState, _unloadCallback) !== true) {\r\n _unloadCallback();\r\n }\r\n else {\r\n // Tell the caller that we will be calling processNext()\r\n result = true;\r\n }\r\n return result;\r\n };\r\n _self[_DYN_UPDATE /* @min:%2eupdate */] = function (updateCtx, updateState) {\r\n // If this plugin has already been torn down (not operational) or is not initialized (core is not set)\r\n // or the core being used for unload was not the same core used for initialization.\r\n var core = _self[STR_CORE /* @min:%2ecore */];\r\n if (!core || (updateCtx && core !== updateCtx[STR_CORE /* @min:%2ecore */]())) {\r\n // Do Nothing\r\n return;\r\n }\r\n var result;\r\n var updateDone = false;\r\n var theUpdateCtx = updateCtx || createProcessTelemetryUpdateContext(null, core, _nextPlugin && _nextPlugin[strGetPlugin] ? _nextPlugin[strGetPlugin]() : _nextPlugin);\r\n var theUpdateState = updateState || {\r\n reason: 0 /* TelemetryUpdateReason.Unknown */\r\n };\r\n function _updateCallback() {\r\n if (!updateDone) {\r\n updateDone = true;\r\n _setDefaults(theUpdateCtx.getCfg(), theUpdateCtx.core(), theUpdateCtx[_DYN_GET_NEXT /* @min:%2egetNext */]());\r\n }\r\n }\r\n if (!_self._doUpdate || _self._doUpdate(theUpdateCtx, theUpdateState, _updateCallback) !== true) {\r\n _updateCallback();\r\n }\r\n else {\r\n result = true;\r\n }\r\n return result;\r\n };\r\n _self._addHook = function (hooks) {\r\n if (hooks) {\r\n if (isArray(hooks)) {\r\n _hooks = _hooks.concat(hooks);\r\n }\r\n else {\r\n _hooks[_DYN_PUSH /* @min:%2epush */](hooks);\r\n }\r\n }\r\n };\r\n proxyFunctionAs(_self, \"_addUnloadCb\", function () { return _unloadHandlerContainer; }, \"add\");\r\n });\r\n // These are added after the dynamicProto so that are not moved to the prototype\r\n _self[_DYN_DIAG_LOG /* @min:%2ediagLog */] = function (itemCtx) {\r\n return _getTelCtx(itemCtx)[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n };\r\n _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = function () {\r\n return _isinitialized;\r\n };\r\n _self.setInitialized = function (isInitialized) {\r\n _isinitialized = isInitialized;\r\n };\r\n // _self.getNextPlugin = () => DO NOT IMPLEMENT\r\n // Sub-classes of this base class *should* not be relying on this value and instead\r\n // should use processNext() function. If you require access to the plugin use the\r\n // IProcessTelemetryContext.getNext().getPlugin() while in the pipeline, Note getNext() may return null.\r\n _self[_DYN_SET_NEXT_PLUGIN /* @min:%2esetNextPlugin */] = function (next) {\r\n _nextPlugin = next;\r\n };\r\n _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */] = function (env, itemCtx) {\r\n if (itemCtx) {\r\n // Normal core execution sequence\r\n itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](env);\r\n }\r\n else if (_nextPlugin && isFunction(_nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */])) {\r\n // Looks like backward compatibility or out of band processing. And as it looks\r\n // like a ITelemetryPlugin or ITelemetryPluginChain, just call processTelemetry\r\n _nextPlugin[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */](env, null);\r\n }\r\n };\r\n _self._getTelCtx = _getTelCtx;\r\n function _getTelCtx(currentCtx) {\r\n if (currentCtx === void 0) { currentCtx = null; }\r\n var itemCtx = currentCtx;\r\n if (!itemCtx) {\r\n var rootCtx = _rootCtx || createProcessTelemetryContext(null, {}, _self[STR_CORE /* @min:%2ecore */]);\r\n // tslint:disable-next-line: prefer-conditional-expression\r\n if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n // Looks like a chain object\r\n itemCtx = rootCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](null, _nextPlugin[strGetPlugin]);\r\n }\r\n else {\r\n itemCtx = rootCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](null, _nextPlugin);\r\n }\r\n }\r\n return itemCtx;\r\n }\r\n function _setDefaults(config, core, pluginChain) {\r\n if (config) {\r\n // Make sure the extensionConfig exists\r\n setValue(config, STR_EXTENSION_CONFIG, [], null, isNullOrUndefined);\r\n }\r\n if (!pluginChain && core) {\r\n // Get the first plugin from the core\r\n pluginChain = core[_DYN_GET_PROCESS_TEL_CONT0 /* @min:%2egetProcessTelContext */]()[_DYN_GET_NEXT /* @min:%2egetNext */]();\r\n }\r\n var nextPlugin = _nextPlugin;\r\n if (_nextPlugin && _nextPlugin[strGetPlugin]) {\r\n // If it looks like a proxy/chain then get the plugin\r\n nextPlugin = _nextPlugin[strGetPlugin]();\r\n }\r\n // Support legacy plugins where core was defined as a property\r\n _self[STR_CORE /* @min:%2ecore */] = core;\r\n _rootCtx = createProcessTelemetryContext(pluginChain, config, core, nextPlugin);\r\n }\r\n function _initDefaults() {\r\n _isinitialized = false;\r\n _self[STR_CORE /* @min:%2ecore */] = null;\r\n _rootCtx = null;\r\n _nextPlugin = null;\r\n _hooks = [];\r\n _unloadHandlerContainer = createUnloadHandlerContainer();\r\n }\r\n }\r\n// Removed Stub for BaseTelemetryPlugin.prototype.initialize.\r\n// Removed Stub for BaseTelemetryPlugin.prototype.teardown.\r\n// Removed Stub for BaseTelemetryPlugin.prototype.update.\r\n// Removed Stub for BaseTelemetryPlugin.prototype._addUnloadCb.\r\n// Removed Stub for BaseTelemetryPlugin.prototype._addHook.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n BaseTelemetryPlugin.__ieDyn=1;\n\n return BaseTelemetryPlugin;\r\n}());\r\nexport { BaseTelemetryPlugin };\r\n//# sourceMappingURL=BaseTelemetryPlugin.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 4\r\nexport var _DYN_DISABLE_EXCEPTION_TR0 = \"disableExceptionTracking\"; // Count: 3\r\nexport var _DYN_AUTO_TRACK_PAGE_VISI1 = \"autoTrackPageVisitTime\"; // Count: 4\r\nexport var _DYN_OVERRIDE_PAGE_VIEW_D2 = \"overridePageViewDuration\"; // Count: 3\r\nexport var _DYN_ENABLE_UNHANDLED_PRO3 = \"enableUnhandledPromiseRejectionTracking\"; // Count: 3\r\nexport var _DYN_SAMPLING_PERCENTAGE = \"samplingPercentage\"; // Count: 4\r\nexport var _DYN_IS_STORAGE_USE_DISAB4 = \"isStorageUseDisabled\"; // Count: 4\r\nexport var _DYN_IS_BROWSER_LINK_TRAC5 = \"isBrowserLinkTrackingEnabled\"; // Count: 4\r\nexport var _DYN_ENABLE_AUTO_ROUTE_TR6 = \"enableAutoRouteTracking\"; // Count: 3\r\nexport var _DYN_NAME_PREFIX = \"namePrefix\"; // Count: 3\r\nexport var _DYN_DISABLE_FLUSH_ON_BEF7 = \"disableFlushOnBeforeUnload\"; // Count: 3\r\nexport var _DYN_DISABLE_FLUSH_ON_UNL8 = \"disableFlushOnUnload\"; // Count: 2\r\nexport var _DYN_CORE = \"core\"; // Count: 7\r\nexport var _DYN_DATA_TYPE = \"dataType\"; // Count: 8\r\nexport var _DYN_ENVELOPE_TYPE = \"envelopeType\"; // Count: 7\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 13\r\nexport var _DYN_TRACK = \"track\"; // Count: 7\r\nexport var _DYN_TRACK_PAGE_VIEW = \"trackPageView\"; // Count: 4\r\nexport var _DYN_TRACK_PREVIOUS_PAGE_9 = \"trackPreviousPageVisit\"; // Count: 3\r\nexport var _DYN_SEND_PAGE_VIEW_INTER10 = \"sendPageViewInternal\"; // Count: 7\r\nexport var _DYN_SEND_PAGE_VIEW_PERFO11 = \"sendPageViewPerformanceInternal\"; // Count: 3\r\nexport var _DYN_POPULATE_PAGE_VIEW_P12 = \"populatePageViewPerformanceEvent\"; // Count: 3\r\nexport var _DYN_HREF = \"href\"; // Count: 6\r\nexport var _DYN_SEND_EXCEPTION_INTER13 = \"sendExceptionInternal\"; // Count: 2\r\nexport var _DYN_EXCEPTION = \"exception\"; // Count: 3\r\nexport var _DYN_ERROR = \"error\"; // Count: 5\r\nexport var _DYN__ONERROR = \"_onerror\"; // Count: 3\r\nexport var _DYN_ERROR_SRC = \"errorSrc\"; // Count: 3\r\nexport var _DYN_LINE_NUMBER = \"lineNumber\"; // Count: 5\r\nexport var _DYN_COLUMN_NUMBER = \"columnNumber\"; // Count: 5\r\nexport var _DYN_MESSAGE = \"message\"; // Count: 4\r\nexport var _DYN__CREATE_AUTO_EXCEPTI14 = \"CreateAutoException\"; // Count: 3\r\nexport var _DYN_ADD_TELEMETRY_INITIA15 = \"addTelemetryInitializer\"; // Count: 4\r\nexport var _DYN_DURATION = \"duration\"; // Count: 10\r\nexport var _DYN_LENGTH = \"length\"; // Count: 5\r\nexport var _DYN_IS_PERFORMANCE_TIMIN16 = \"isPerformanceTimingSupported\"; // Count: 2\r\nexport var _DYN_GET_PERFORMANCE_TIMI17 = \"getPerformanceTiming\"; // Count: 2\r\nexport var _DYN_NAVIGATION_START = \"navigationStart\"; // Count: 4\r\nexport var _DYN_SHOULD_COLLECT_DURAT18 = \"shouldCollectDuration\"; // Count: 3\r\nexport var _DYN_IS_PERFORMANCE_TIMIN19 = \"isPerformanceTimingDataReady\"; // Count: 2\r\nexport var _DYN_GET_ENTRIES_BY_TYPE = \"getEntriesByType\"; // Count: 3\r\nexport var _DYN_RESPONSE_START = \"responseStart\"; // Count: 5\r\nexport var _DYN_REQUEST_START = \"requestStart\"; // Count: 3\r\nexport var _DYN_LOAD_EVENT_END = \"loadEventEnd\"; // Count: 4\r\nexport var _DYN_RESPONSE_END = \"responseEnd\"; // Count: 5\r\nexport var _DYN_CONNECT_END = \"connectEnd\"; // Count: 4\r\nexport var _DYN_PAGE_VISIT_START_TIM20 = \"pageVisitStartTime\"; // Count: 2\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dateTimeUtilsDuration } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, arrForEach, dumpObj, getDocument, getExceptionName, getLocation, isNullOrUndefined } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_DURATION, _DYN_GET_PERFORMANCE_TIMI17, _DYN_HREF, _DYN_IS_PERFORMANCE_TIMIN16, _DYN_IS_PERFORMANCE_TIMIN19, _DYN_LENGTH, _DYN_NAVIGATION_START, _DYN_POPULATE_PAGE_VIEW_P12, _DYN_SEND_PAGE_VIEW_INTER10, _DYN_SEND_PAGE_VIEW_PERFO11, _DYN_SHOULD_COLLECT_DURAT18, _DYN_TRACK_PAGE_VIEW } from \"../../__DynamicConstants\";\r\n/**\r\n * Class encapsulates sending page views and page view performance telemetry.\r\n */\r\nvar PageViewManager = /** @class */ (function () {\r\n function PageViewManager(appInsights, overridePageViewDuration, core, pageViewPerformanceManager) {\r\n dynamicProto(PageViewManager, this, function (_self) {\r\n var intervalHandle = null;\r\n var itemQueue = [];\r\n var pageViewPerformanceSent = false;\r\n var _logger;\r\n if (core) {\r\n _logger = core.logger;\r\n }\r\n function _flushChannels(isAsync) {\r\n if (core) {\r\n core.flush(isAsync);\r\n }\r\n }\r\n function _addQueue(cb) {\r\n itemQueue.push(cb);\r\n if (!intervalHandle) {\r\n intervalHandle = setInterval((function () {\r\n var allItems = itemQueue.slice(0);\r\n var doFlush = false;\r\n itemQueue = [];\r\n arrForEach(allItems, function (item) {\r\n if (!item()) {\r\n // Not processed so rescheduled\r\n itemQueue.push(item);\r\n }\r\n else {\r\n doFlush = true;\r\n }\r\n });\r\n if (itemQueue[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n clearInterval(intervalHandle);\r\n intervalHandle = null;\r\n }\r\n if (doFlush) {\r\n // We process at least one item so flush the queue\r\n _flushChannels(true);\r\n }\r\n }), 100);\r\n }\r\n }\r\n _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */] = function (pageView, customProperties) {\r\n var name = pageView.name;\r\n if (isNullOrUndefined(name) || typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = pageView.name = doc && doc.title || \"\";\r\n }\r\n var uri = pageView.uri;\r\n if (isNullOrUndefined(uri) || typeof uri !== \"string\") {\r\n var location_1 = getLocation();\r\n uri = pageView.uri = location_1 && location_1[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n // case 1a. if performance timing is not supported by the browser, send the page view telemetry with the duration provided by the user. If the user\r\n // do not provide the duration, set duration to undefined\r\n // Also this is case 4\r\n if (!pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN16 /* @min:%2eisPerformanceTimingSupported */]()) {\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n _flushChannels(true);\r\n // no navigation timing (IE 8, iOS Safari 8.4, Opera Mini 8 - see http://caniuse.com/#feat=nav-timing)\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 25 /* _eInternalMessageId.NavigationTimingNotSupported */, \"trackPageView: navigation timing API used for calculation of page duration is not supported in this browser. This page view will be collected without duration and timing info.\");\r\n return;\r\n }\r\n var pageViewSent = false;\r\n var customDuration;\r\n // if the performance timing is supported by the browser, calculate the custom duration\r\n var start = pageViewPerformanceManager[_DYN_GET_PERFORMANCE_TIMI17 /* @min:%2egetPerformanceTiming */]()[_DYN_NAVIGATION_START /* @min:%2enavigationStart */];\r\n if (start > 0) {\r\n customDuration = dateTimeUtilsDuration(start, +new Date);\r\n if (!pageViewPerformanceManager[_DYN_SHOULD_COLLECT_DURAT18 /* @min:%2eshouldCollectDuration */](customDuration)) {\r\n customDuration = undefined;\r\n }\r\n }\r\n // if the user has provided duration, send a page view telemetry with the provided duration. Otherwise, if\r\n // overridePageViewDuration is set to true, send a page view telemetry with the custom duration calculated earlier\r\n var duration;\r\n if (!isNullOrUndefined(customProperties) &&\r\n !isNullOrUndefined(customProperties[_DYN_DURATION /* @min:%2eduration */])) {\r\n duration = customProperties[_DYN_DURATION /* @min:%2eduration */];\r\n }\r\n if (overridePageViewDuration || !isNaN(duration)) {\r\n if (isNaN(duration)) {\r\n // case 3\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = customDuration;\r\n }\r\n // case 2\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n _flushChannels(true);\r\n pageViewSent = true;\r\n }\r\n // now try to send the page view performance telemetry\r\n var maxDurationLimit = 60000;\r\n if (!customProperties) {\r\n customProperties = {};\r\n }\r\n // Queue the event for processing\r\n _addQueue(function () {\r\n var processed = false;\r\n try {\r\n if (pageViewPerformanceManager[_DYN_IS_PERFORMANCE_TIMIN19 /* @min:%2eisPerformanceTimingDataReady */]()) {\r\n processed = true;\r\n var pageViewPerformance = {\r\n name: name,\r\n uri: uri\r\n };\r\n pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P12 /* @min:%2epopulatePageViewPerformanceEvent */](pageViewPerformance);\r\n if (!pageViewPerformance.isValid && !pageViewSent) {\r\n // If navigation timing gives invalid numbers, then go back to \"override page view duration\" mode.\r\n // That's the best value we can get that makes sense.\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = customDuration;\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n }\r\n else {\r\n if (!pageViewSent) {\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = pageViewPerformance.durationMs;\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n }\r\n if (!pageViewPerformanceSent) {\r\n appInsights[_DYN_SEND_PAGE_VIEW_PERFO11 /* @min:%2esendPageViewPerformanceInternal */](pageViewPerformance, customProperties);\r\n pageViewPerformanceSent = true;\r\n }\r\n }\r\n }\r\n else if (start > 0 && dateTimeUtilsDuration(start, +new Date) > maxDurationLimit) {\r\n // if performance timings are not ready but we exceeded the maximum duration limit, just log a page view telemetry\r\n // with the maximum duration limit. Otherwise, keep waiting until performance timings are ready\r\n processed = true;\r\n if (!pageViewSent) {\r\n customProperties[_DYN_DURATION /* @min:%2eduration */] = maxDurationLimit;\r\n appInsights[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageView, customProperties);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 38 /* _eInternalMessageId.TrackPVFailedCalc */, \"trackPageView failed on page load calculation: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n return processed;\r\n });\r\n };\r\n _self.teardown = function (unloadCtx, unloadState) {\r\n if (intervalHandle) {\r\n clearInterval(intervalHandle);\r\n intervalHandle = null;\r\n var allItems = itemQueue.slice(0);\r\n var doFlush_1 = false;\r\n itemQueue = [];\r\n arrForEach(allItems, function (item) {\r\n if (item()) {\r\n doFlush_1 = true;\r\n }\r\n });\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for PageViewManager.prototype.trackPageView.\r\n// Removed Stub for PageViewManager.prototype.teardown.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n PageViewManager.__ieDyn=1;\n\n return PageViewManager;\r\n}());\r\nexport { PageViewManager };\r\n//# sourceMappingURL=PageViewManager.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { dateTimeUtilsDuration, msToTimeSpan } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, getNavigator, getPerformance, safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_CONNECT_END, _DYN_DURATION, _DYN_GET_ENTRIES_BY_TYPE, _DYN_GET_PERFORMANCE_TIMI17, _DYN_IS_PERFORMANCE_TIMIN16, _DYN_IS_PERFORMANCE_TIMIN19, _DYN_LENGTH, _DYN_LOAD_EVENT_END, _DYN_NAVIGATION_START, _DYN_POPULATE_PAGE_VIEW_P12, _DYN_REQUEST_START, _DYN_RESPONSE_END, _DYN_RESPONSE_START, _DYN_SHOULD_COLLECT_DURAT18 } from \"../../__DynamicConstants\";\r\nvar MAX_DURATION_ALLOWED = 3600000; // 1h\r\nvar botAgentNames = [\"googlebot\", \"adsbot-google\", \"apis-google\", \"mediapartners-google\"];\r\nfunction _isPerformanceTimingSupported() {\r\n var perf = getPerformance();\r\n return perf && !!perf.timing;\r\n}\r\nfunction _isPerformanceNavigationTimingSupported() {\r\n var perf = getPerformance();\r\n return perf && perf.getEntriesByType && perf.getEntriesByType(\"navigation\")[_DYN_LENGTH /* @min:%2elength */] > 0;\r\n}\r\nfunction _isPerformanceTimingDataReady() {\r\n var perf = getPerformance();\r\n var timing = perf ? perf.timing : 0;\r\n return timing\r\n && timing.domainLookupStart > 0\r\n && timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */] > 0\r\n && timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */] > 0\r\n && timing[_DYN_REQUEST_START /* @min:%2erequestStart */] > 0\r\n && timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */] > 0\r\n && timing[_DYN_RESPONSE_END /* @min:%2eresponseEnd */] > 0\r\n && timing[_DYN_CONNECT_END /* @min:%2econnectEnd */] > 0\r\n && timing.domLoading > 0;\r\n}\r\nfunction _getPerformanceTiming() {\r\n if (_isPerformanceTimingSupported()) {\r\n return getPerformance().timing;\r\n }\r\n return null;\r\n}\r\nfunction _getPerformanceNavigationTiming() {\r\n if (_isPerformanceNavigationTimingSupported()) {\r\n return getPerformance()[_DYN_GET_ENTRIES_BY_TYPE /* @min:%2egetEntriesByType */](\"navigation\")[0];\r\n }\r\n return null;\r\n}\r\n/**\r\n* This method tells if given durations should be excluded from collection.\r\n*/\r\nfunction _shouldCollectDuration() {\r\n var durations = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n durations[_i] = arguments[_i];\r\n }\r\n var _navigator = getNavigator() || {};\r\n // a full list of Google crawlers user agent strings - https://support.google.com/webmasters/answer/1061943?hl=en\r\n var userAgent = _navigator.userAgent;\r\n var isGoogleBot = false;\r\n if (userAgent) {\r\n for (var i = 0; i < botAgentNames[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n isGoogleBot = isGoogleBot || userAgent.toLowerCase().indexOf(botAgentNames[i]) !== -1;\r\n }\r\n }\r\n if (isGoogleBot) {\r\n // Don't report durations for GoogleBot, it is returning invalid values in performance.timing API.\r\n return false;\r\n }\r\n else {\r\n // for other page views, don't report if it's outside of a reasonable range\r\n for (var i = 0; i < durations[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n if (durations[i] < 0 || durations[i] >= MAX_DURATION_ALLOWED) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Class encapsulates sending page view performance telemetry.\r\n */\r\nvar PageViewPerformanceManager = /** @class */ (function () {\r\n function PageViewPerformanceManager(core) {\r\n var _this = this;\r\n var _logger = safeGetLogger(core);\r\n dynamicProto(PageViewPerformanceManager, this, function (_self) {\r\n _self[_DYN_POPULATE_PAGE_VIEW_P12 /* @min:%2epopulatePageViewPerformanceEvent */] = function (pageViewPerformance) {\r\n pageViewPerformance.isValid = false;\r\n /*\r\n * http://www.w3.org/TR/navigation-timing/#processing-model\r\n * |-navigationStart\r\n * | |-connectEnd\r\n * | ||-requestStart\r\n * | || |-responseStart\r\n * | || | |-responseEnd\r\n * | || | |\r\n * | || | | |-loadEventEnd\r\n * |---network---||---request---|---response---|---dom---|\r\n * |--------------------------total----------------------|\r\n *\r\n * total = The difference between the load event of the current document is completed and the first recorded timestamp of the performance entry : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#duration\r\n * network = Redirect time + App Cache + DNS lookup time + TCP connection time\r\n * request = Request time : https://developer.mozilla.org/en-US/docs/Web/Performance/Navigation_and_resource_timings#request_time\r\n * response = Response time\r\n * dom = Document load time : https://html.spec.whatwg.org/multipage/dom.html#document-load-timing-info\r\n * = Document processing time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#document_processing\r\n * + Loading time : https://developers.google.com/web/fundamentals/performance/navigation-and-resource-timing/#loading\r\n */\r\n var navigationTiming = _getPerformanceNavigationTiming();\r\n var timing = _getPerformanceTiming();\r\n var total = 0;\r\n var network = 0;\r\n var request = 0;\r\n var response = 0;\r\n var dom = 0;\r\n if (navigationTiming || timing) {\r\n if (navigationTiming) {\r\n total = navigationTiming[_DYN_DURATION /* @min:%2eduration */];\r\n /**\r\n * support both cases:\r\n * - startTime is always zero: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming\r\n * - for older browsers where the startTime is not zero\r\n */\r\n network = navigationTiming.startTime === 0 ? navigationTiming[_DYN_CONNECT_END /* @min:%2econnectEnd */] : dateTimeUtilsDuration(navigationTiming.startTime, navigationTiming[_DYN_CONNECT_END /* @min:%2econnectEnd */]);\r\n request = dateTimeUtilsDuration(navigationTiming.requestStart, navigationTiming[_DYN_RESPONSE_START /* @min:%2eresponseStart */]);\r\n response = dateTimeUtilsDuration(navigationTiming[_DYN_RESPONSE_START /* @min:%2eresponseStart */], navigationTiming[_DYN_RESPONSE_END /* @min:%2eresponseEnd */]);\r\n dom = dateTimeUtilsDuration(navigationTiming.responseEnd, navigationTiming[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n }\r\n else {\r\n total = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */], timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n network = dateTimeUtilsDuration(timing[_DYN_NAVIGATION_START /* @min:%2enavigationStart */], timing[_DYN_CONNECT_END /* @min:%2econnectEnd */]);\r\n request = dateTimeUtilsDuration(timing.requestStart, timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */]);\r\n response = dateTimeUtilsDuration(timing[_DYN_RESPONSE_START /* @min:%2eresponseStart */], timing[_DYN_RESPONSE_END /* @min:%2eresponseEnd */]);\r\n dom = dateTimeUtilsDuration(timing.responseEnd, timing[_DYN_LOAD_EVENT_END /* @min:%2eloadEventEnd */]);\r\n }\r\n if (total === 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 10 /* _eInternalMessageId.ErrorPVCalc */, \"error calculating page view performance.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (!_this[_DYN_SHOULD_COLLECT_DURAT18 /* @min:%2eshouldCollectDuration */](total, network, request, response, dom)) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 45 /* _eInternalMessageId.InvalidDurationValue */, \"Invalid page load duration value. Browser perf data won't be sent.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else if (total < Math.floor(network) + Math.floor(request) + Math.floor(response) + Math.floor(dom)) {\r\n // some browsers may report individual components incorrectly so that the sum of the parts will be bigger than total PLT\r\n // in this case, don't report client performance from this page\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 8 /* _eInternalMessageId.ClientPerformanceMathError */, \"client performance math error.\", { total: total, network: network, request: request, response: response, dom: dom });\r\n }\r\n else {\r\n pageViewPerformance.durationMs = total;\r\n // // convert to timespans\r\n pageViewPerformance.perfTotal = pageViewPerformance[_DYN_DURATION /* @min:%2eduration */] = msToTimeSpan(total);\r\n pageViewPerformance.networkConnect = msToTimeSpan(network);\r\n pageViewPerformance.sentRequest = msToTimeSpan(request);\r\n pageViewPerformance.receivedResponse = msToTimeSpan(response);\r\n pageViewPerformance.domProcessing = msToTimeSpan(dom);\r\n pageViewPerformance.isValid = true;\r\n }\r\n }\r\n };\r\n _self[_DYN_GET_PERFORMANCE_TIMI17 /* @min:%2egetPerformanceTiming */] = _getPerformanceTiming;\r\n _self[_DYN_IS_PERFORMANCE_TIMIN16 /* @min:%2eisPerformanceTimingSupported */] = _isPerformanceTimingSupported;\r\n _self[_DYN_IS_PERFORMANCE_TIMIN19 /* @min:%2eisPerformanceTimingDataReady */] = _isPerformanceTimingDataReady;\r\n _self[_DYN_SHOULD_COLLECT_DURAT18 /* @min:%2eshouldCollectDuration */] = _shouldCollectDuration;\r\n });\r\n }\r\n// Removed Stub for PageViewPerformanceManager.prototype.populatePageViewPerformanceEvent.\r\n// Removed Stub for PageViewPerformanceManager.prototype.getPerformanceTiming.\r\n// Removed Stub for PageViewPerformanceManager.prototype.isPerformanceTimingSupported.\r\n// Removed Stub for PageViewPerformanceManager.prototype.isPerformanceTimingDataReady.\r\n// Removed Stub for PageViewPerformanceManager.prototype.shouldCollectDuration.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n PageViewPerformanceManager.__ieDyn=1;\n\n return PageViewPerformanceManager;\r\n}());\r\nexport { PageViewPerformanceManager };\r\n//# sourceMappingURL=PageViewPerformanceManager.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlCanUseSessionStorage, utlGetSessionStorage, utlRemoveSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _warnToConsole, dateNow, dumpObj, getJSON, hasJSON, objDefineAccessors, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_PAGE_VISIT_START_TIM20, _DYN_TRACK_PREVIOUS_PAGE_9 } from \"../../__DynamicConstants\";\r\n/**\r\n * Used to track page visit durations\r\n */\r\nvar PageVisitTimeManager = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of PageVisitTimeManager\r\n * @param pageVisitTimeTrackingHandler Delegate that will be called to send telemetry data to AI (when trackPreviousPageVisit is called)\r\n * @returns {}\r\n */\r\n function PageVisitTimeManager(logger, pageVisitTimeTrackingHandler) {\r\n var prevPageVisitDataKeyName = \"prevPageVisitData\";\r\n dynamicProto(PageVisitTimeManager, this, function (_self) {\r\n _self[_DYN_TRACK_PREVIOUS_PAGE_9 /* @min:%2etrackPreviousPageVisit */] = function (currentPageName, currentPageUrl) {\r\n try {\r\n // Restart timer for new page view\r\n var prevPageVisitTimeData = restartPageVisitTimer(currentPageName, currentPageUrl);\r\n // If there was a page already being timed, track the visit time for it now.\r\n if (prevPageVisitTimeData) {\r\n pageVisitTimeTrackingHandler(prevPageVisitTimeData.pageName, prevPageVisitTimeData.pageUrl, prevPageVisitTimeData.pageVisitTime);\r\n }\r\n }\r\n catch (e) {\r\n _warnToConsole(logger, \"Auto track page visit time failed, metric will not be collected: \" + dumpObj(e));\r\n }\r\n };\r\n /**\r\n * Stops timing of current page (if exists) and starts timing for duration of visit to pageName\r\n * @param pageName Name of page to begin timing visit duration\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from last call to start or restart, if exists. Null if not.\r\n */\r\n function restartPageVisitTimer(pageName, pageUrl) {\r\n var prevPageVisitData = null;\r\n try {\r\n prevPageVisitData = stopPageVisitTimer();\r\n startPageVisitTimer(pageName, pageUrl);\r\n }\r\n catch (e) {\r\n _warnToConsole(logger, \"Call to restart failed: \" + dumpObj(e));\r\n prevPageVisitData = null;\r\n }\r\n return prevPageVisitData;\r\n }\r\n /**\r\n * Starts timing visit duration of pageName\r\n * @param pageName\r\n * @returns {}\r\n */\r\n function startPageVisitTimer(pageName, pageUrl) {\r\n try {\r\n if (utlCanUseSessionStorage()) {\r\n if (utlGetSessionStorage(logger, prevPageVisitDataKeyName) != null) {\r\n throwError(\"Cannot call startPageVisit consecutively without first calling stopPageVisit\");\r\n }\r\n var currPageVisitData = new PageVisitData(pageName, pageUrl);\r\n var currPageVisitDataStr = getJSON().stringify(currPageVisitData);\r\n utlSetSessionStorage(logger, prevPageVisitDataKeyName, currPageVisitDataStr);\r\n }\r\n }\r\n catch (e) {\r\n // TODO: Remove this catch in next phase, since if start is called twice in a row the exception needs to be propagated out\r\n _warnToConsole(logger, \"Call to start failed: \" + dumpObj(e));\r\n }\r\n }\r\n /**\r\n * Stops timing of current page, if exists.\r\n * @returns {PageVisitData} Page visit data (including duration) of pageName from call to start, if exists. Null if not.\r\n */\r\n function stopPageVisitTimer() {\r\n var prevPageVisitData = null;\r\n try {\r\n if (utlCanUseSessionStorage()) {\r\n // Define end time of page's visit\r\n var pageVisitEndTime = dateNow();\r\n // Try to retrieve page name and start time from session storage\r\n var pageVisitDataJsonStr = utlGetSessionStorage(logger, prevPageVisitDataKeyName);\r\n if (pageVisitDataJsonStr && hasJSON()) {\r\n // if previous page data exists, set end time of visit\r\n prevPageVisitData = getJSON().parse(pageVisitDataJsonStr);\r\n prevPageVisitData.pageVisitTime = pageVisitEndTime - prevPageVisitData[_DYN_PAGE_VISIT_START_TIM20 /* @min:%2epageVisitStartTime */];\r\n // Remove data from storage since we already used it\r\n utlRemoveSessionStorage(logger, prevPageVisitDataKeyName);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _warnToConsole(logger, \"Stop page visit timer failed: \" + dumpObj(e));\r\n prevPageVisitData = null;\r\n }\r\n return prevPageVisitData;\r\n }\r\n // For backward compatibility\r\n objDefineAccessors(_self, \"_logger\", function () { return logger; });\r\n objDefineAccessors(_self, \"pageVisitTimeTrackingHandler\", function () { return pageVisitTimeTrackingHandler; });\r\n });\r\n }\r\n// Removed Stub for PageVisitTimeManager.prototype.trackPreviousPageVisit.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n PageVisitTimeManager.__ieDyn=1;\n\n return PageVisitTimeManager;\r\n}());\r\nexport { PageVisitTimeManager };\r\nvar PageVisitData = /** @class */ (function () {\r\n function PageVisitData(pageName, pageUrl) {\r\n this[_DYN_PAGE_VISIT_START_TIM20 /* @min:%2epageVisitStartTime */] = dateNow();\r\n this.pageName = pageName;\r\n this.pageUrl = pageUrl;\r\n }\r\n return PageVisitData;\r\n}());\r\nexport { PageVisitData };\r\n//# sourceMappingURL=PageVisitTimeManager.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dateTimeUtilsDuration } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal } from \"@microsoft/applicationinsights-core-js\";\r\n/**\r\n * Used to record timed events and page views.\r\n */\r\nvar Timing = /** @class */ (function () {\r\n function Timing(logger, name) {\r\n var _self = this;\r\n var _events = {};\r\n _self.start = function (name) {\r\n if (typeof _events[name] !== \"undefined\") {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 62 /* _eInternalMessageId.StartCalledMoreThanOnce */, \"start was called more than once for this event without calling stop.\", { name: name, key: name }, true);\r\n }\r\n _events[name] = +new Date;\r\n };\r\n _self.stop = function (name, url, properties, measurements) {\r\n var start = _events[name];\r\n if (isNaN(start)) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 63 /* _eInternalMessageId.StopCalledWithoutStart */, \"stop was called without a corresponding start.\", { name: name, key: name }, true);\r\n }\r\n else {\r\n var end = +new Date;\r\n var duration = dateTimeUtilsDuration(start, end);\r\n _self.action(name, url, duration, properties, measurements);\r\n }\r\n delete _events[name];\r\n _events[name] = undefined;\r\n };\r\n }\r\n return Timing;\r\n}());\r\nexport { Timing };\r\n//# sourceMappingURL=Timing.js.map","/*\n * Application Insights JavaScript SDK - Web Analytics, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n* ApplicationInsights.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { AnalyticsPluginIdentifier, Event as EventTelemetry, Exception, Metric, PageView, PageViewPerformance, PropertiesPluginIdentifier, RemoteDependencyData, Trace, createDistributedTraceContextFromTrace, createDomEvent, createTelemetryItem, dataSanitizeString, isCrossOriginError, strNotSpecified, stringToBoolOrDefault, utlDisableStorage, utlEnableStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, InstrumentEvent, arrForEach, createProcessTelemetryContext, createUniqueNamespace, dumpObj, eventOff, eventOn, generateW3CId, getDocument, getExceptionName, getHistory, getLocation, getWindow, hasHistory, hasWindow, isFunction, isNullOrUndefined, isString, isUndefined, mergeEvtNamespace, objDefineAccessors, objForEachKey, safeGetCookieMgr, strUndefined, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ADD_TELEMETRY_INITIA15, _DYN_AUTO_TRACK_PAGE_VISI1, _DYN_COLUMN_NUMBER, _DYN_CORE, _DYN_DATA_TYPE, _DYN_DIAG_LOG, _DYN_DISABLE_EXCEPTION_TR0, _DYN_DISABLE_FLUSH_ON_BEF7, _DYN_ENABLE_AUTO_ROUTE_TR6, _DYN_ENABLE_UNHANDLED_PRO3, _DYN_ENVELOPE_TYPE, _DYN_ERROR, _DYN_ERROR_SRC, _DYN_EXCEPTION, _DYN_HREF, _DYN_IS_BROWSER_LINK_TRAC5, _DYN_IS_STORAGE_USE_DISAB4, _DYN_LENGTH, _DYN_LINE_NUMBER, _DYN_MESSAGE, _DYN_NAME_PREFIX, _DYN_OVERRIDE_PAGE_VIEW_D2, _DYN_POPULATE_PAGE_VIEW_P12, _DYN_SAMPLING_PERCENTAGE, _DYN_SEND_EXCEPTION_INTER13, _DYN_SEND_PAGE_VIEW_INTER10, _DYN_SEND_PAGE_VIEW_PERFO11, _DYN_TO_STRING, _DYN_TRACK, _DYN_TRACK_PAGE_VIEW, _DYN_TRACK_PREVIOUS_PAGE_9, _DYN__CREATE_AUTO_EXCEPTI14, _DYN__ONERROR } from \"../__DynamicConstants\";\r\nimport { PageViewManager } from \"./Telemetry/PageViewManager\";\r\nimport { PageViewPerformanceManager } from \"./Telemetry/PageViewPerformanceManager\";\r\nimport { PageVisitTimeManager } from \"./Telemetry/PageVisitTimeManager\";\r\nimport { Timing } from \"./Timing\";\r\nvar strEvent = \"event\";\r\nfunction _dispatchEvent(target, evnt) {\r\n if (target && target.dispatchEvent && evnt) {\r\n target.dispatchEvent(evnt);\r\n }\r\n}\r\nfunction _getReason(error) {\r\n if (error && error.reason) {\r\n var reason = error.reason;\r\n if (!isString(reason) && isFunction(reason[_DYN_TO_STRING /* @min:%2etoString */])) {\r\n return reason[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n return dumpObj(reason);\r\n }\r\n // Pass the original object down which will eventually get evaluated for any message or description\r\n return error || \"\";\r\n}\r\nvar MinMilliSeconds = 60000;\r\nfunction _configMilliseconds(value, defValue) {\r\n value = value || defValue;\r\n if (value < MinMilliSeconds) {\r\n value = MinMilliSeconds;\r\n }\r\n return value;\r\n}\r\nfunction _getDefaultConfig(config) {\r\n if (!config) {\r\n config = {};\r\n }\r\n // set default values\r\n config.sessionRenewalMs = _configMilliseconds(config.sessionRenewalMs, 30 * 60 * 1000);\r\n config.sessionExpirationMs = _configMilliseconds(config.sessionExpirationMs, 24 * 60 * 60 * 1000);\r\n config[_DYN_DISABLE_EXCEPTION_TR0 /* @min:%2edisableExceptionTracking */] = stringToBoolOrDefault(config[_DYN_DISABLE_EXCEPTION_TR0 /* @min:%2edisableExceptionTracking */]);\r\n config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */] = stringToBoolOrDefault(config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */]);\r\n config[_DYN_OVERRIDE_PAGE_VIEW_D2 /* @min:%2eoverridePageViewDuration */] = stringToBoolOrDefault(config[_DYN_OVERRIDE_PAGE_VIEW_D2 /* @min:%2eoverridePageViewDuration */]);\r\n config[_DYN_ENABLE_UNHANDLED_PRO3 /* @min:%2eenableUnhandledPromiseRejectionTracking */] = stringToBoolOrDefault(config[_DYN_ENABLE_UNHANDLED_PRO3 /* @min:%2eenableUnhandledPromiseRejectionTracking */]);\r\n if (isNaN(config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */]) || config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */] <= 0 || config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */] >= 100) {\r\n config[_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */] = 100;\r\n }\r\n config[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */] = stringToBoolOrDefault(config[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */]);\r\n config[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */] = stringToBoolOrDefault(config[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */]);\r\n config[_DYN_ENABLE_AUTO_ROUTE_TR6 /* @min:%2eenableAutoRouteTracking */] = stringToBoolOrDefault(config[_DYN_ENABLE_AUTO_ROUTE_TR6 /* @min:%2eenableAutoRouteTracking */]);\r\n config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] || \"\";\r\n config.enableDebug = stringToBoolOrDefault(config.enableDebug);\r\n config[_DYN_DISABLE_FLUSH_ON_BEF7 /* @min:%2edisableFlushOnBeforeUnload */] = stringToBoolOrDefault(config[_DYN_DISABLE_FLUSH_ON_BEF7 /* @min:%2edisableFlushOnBeforeUnload */]);\r\n config.disableFlushOnUnload = stringToBoolOrDefault(config.disableFlushOnUnload, config[_DYN_DISABLE_FLUSH_ON_BEF7 /* @min:%2edisableFlushOnBeforeUnload */]);\r\n return config;\r\n}\r\nfunction _updateStorageUsage(extConfig) {\r\n // Not resetting the storage usage as someone may have manually called utlDisableStorage, so this will only\r\n // reset based if the configuration option is provided\r\n if (!isUndefined(extConfig[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */])) {\r\n if (extConfig[_DYN_IS_STORAGE_USE_DISAB4 /* @min:%2eisStorageUseDisabled */]) {\r\n utlDisableStorage();\r\n }\r\n else {\r\n utlEnableStorage();\r\n }\r\n }\r\n}\r\nvar AnalyticsPlugin = /** @class */ (function (_super) {\r\n __extends(AnalyticsPlugin, _super);\r\n function AnalyticsPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AnalyticsPluginIdentifier; // do not change name or priority\r\n _this.priority = 180; // take from reserved priority range 100- 200\r\n _this.autoRoutePVDelay = 500; // ms; Time to wait after a route change before triggering a pageview to allow DOM changes to take place\r\n var _eventTracking;\r\n var _pageTracking;\r\n var _pageViewManager;\r\n var _pageViewPerformanceManager;\r\n var _pageVisitTimeManager;\r\n var _preInitTelemetryInitializers;\r\n var _isBrowserLinkTrackingEnabled;\r\n var _browserLinkInitializerAdded;\r\n var _enableAutoRouteTracking;\r\n var _historyListenerAdded;\r\n var _disableExceptionTracking;\r\n var _autoExceptionInstrumented;\r\n var _enableUnhandledPromiseRejectionTracking;\r\n var _autoUnhandledPromiseInstrumented;\r\n // Counts number of trackAjax invocations.\r\n // By default we only monitor X ajax call per view to avoid too much load.\r\n // Default value is set in config.\r\n // This counter keeps increasing even after the limit is reached.\r\n var _trackAjaxAttempts = 0;\r\n // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n var _prevUri; // Assigned in the constructor\r\n var _currUri;\r\n var _evtNamespace;\r\n dynamicProto(AnalyticsPlugin, _this, function (_self, _base) {\r\n var _addHook = _base._addHook;\r\n _initDefaults();\r\n _self.getCookieMgr = function () {\r\n return safeGetCookieMgr(_self[_DYN_CORE /* @min:%2ecore */]);\r\n };\r\n _self.processTelemetry = function (env, itemCtx) {\r\n _self.processNext(env, itemCtx);\r\n };\r\n _self.trackEvent = function (event, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(event, EventTelemetry[_DYN_DATA_TYPE /* @min:%2edataType */], EventTelemetry[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(2 /* eLoggingSeverity.WARNING */, 39 /* _eInternalMessageId.TrackTraceFailed */, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Start timing an extended event. Call `stopTrackEvent` to log the event when it ends.\r\n * @param name A string that identifies this event uniquely within the document.\r\n */\r\n _self.startTrackEvent = function (name) {\r\n try {\r\n _eventTracking.start(name);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 29 /* _eInternalMessageId.StartTrackEventFailed */, \"startTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Log an extended event that you started timing with `startTrackEvent`.\r\n * @param name The string you used to identify this event in `startTrackEvent`.\r\n * @param properties map[string, string] - additional data used to filter events and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this event, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n _self.stopTrackEvent = function (name, properties, measurements) {\r\n try {\r\n _eventTracking.stop(name, undefined, properties, measurements);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 30 /* _eInternalMessageId.StopTrackEventFailed */, \"stopTrackEvent failed, event will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a diagnostic message\r\n * @param {ITraceTelemetry} trace\r\n * @param ICustomProperties.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackTrace = function (trace, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(trace, Trace[_DYN_DATA_TYPE /* @min:%2edataType */], Trace[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(2 /* eLoggingSeverity.WARNING */, 39 /* _eInternalMessageId.TrackTraceFailed */, \"trackTrace failed, trace will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Log a numeric value that is not associated with a specific event. Typically\r\n * used to send regular reports of performance indicators. To send single measurement, just\r\n * use the name and average fields of {@link IMetricTelemetry}. If you take measurements\r\n * frequently, you can reduce the telemetry bandwidth by aggregating multiple measurements\r\n * and sending the resulting average at intervals\r\n * @param {IMetricTelemetry} metric input object argument. Only name and average are mandatory.\r\n * @param {{[key: string]: any}} customProperties additional data used to filter metrics in the\r\n * portal. Defaults to empty.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackMetric = function (metric, customProperties) {\r\n try {\r\n var telemetryItem = createTelemetryItem(metric, Metric[_DYN_DATA_TYPE /* @min:%2edataType */], Metric[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 36 /* _eInternalMessageId.TrackMetricFailed */, \"trackMetric failed, metric will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Logs that a page or other item was viewed.\r\n * @param IPageViewTelemetry The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param customProperties Additional data used to filter events and metrics. Defaults to empty.\r\n * If a user wants to provide duration for pageLoad, it'll have to be in pageView.properties.duration\r\n */\r\n _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */] = function (pageView, customProperties) {\r\n try {\r\n var inPv = pageView || {};\r\n _pageViewManager[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */](inPv, __assign(__assign(__assign({}, inPv.properties), inPv.measurements), customProperties));\r\n if (_self.config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */]) {\r\n _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_9 /* @min:%2etrackPreviousPageVisit */](inPv.name, inPv.uri);\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 37 /* _eInternalMessageId.TrackPVFailed */, \"trackPageView failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Create a page view telemetry item and send it to the SDK pipeline through the core.track API\r\n * @param pageView Page view item to be sent\r\n * @param properties Custom properties (Part C) that a user can add to the telemetry item\r\n * @param systemProperties System level properties (Part A) that a user can add to the telemetry item\r\n */\r\n _self[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */] = function (pageView, properties, systemProperties) {\r\n var doc = getDocument();\r\n if (doc) {\r\n pageView.refUri = pageView.refUri === undefined ? doc.referrer : pageView.refUri;\r\n }\r\n var telemetryItem = createTelemetryItem(pageView, PageView[_DYN_DATA_TYPE /* @min:%2edataType */], PageView[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n // reset ajaxes counter\r\n _trackAjaxAttempts = 0;\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param pageViewPerformance\r\n * @param properties\r\n */\r\n _self[_DYN_SEND_PAGE_VIEW_PERFO11 /* @min:%2esendPageViewPerformanceInternal */] = function (pageViewPerformance, properties, systemProperties) {\r\n var telemetryItem = createTelemetryItem(pageViewPerformance, PageViewPerformance[_DYN_DATA_TYPE /* @min:%2edataType */], PageViewPerformance[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n };\r\n /**\r\n * Send browser performance metrics.\r\n * @param pageViewPerformance\r\n * @param customProperties\r\n */\r\n _self.trackPageViewPerformance = function (pageViewPerformance, customProperties) {\r\n var inPvp = pageViewPerformance || {};\r\n try {\r\n _pageViewPerformanceManager[_DYN_POPULATE_PAGE_VIEW_P12 /* @min:%2epopulatePageViewPerformanceEvent */](inPvp);\r\n _self[_DYN_SEND_PAGE_VIEW_PERFO11 /* @min:%2esendPageViewPerformanceInternal */](inPvp, customProperties);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 37 /* _eInternalMessageId.TrackPVFailed */, \"trackPageViewPerformance failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Starts the timer for tracking a page load time. Use this instead of `trackPageView` if you want to control when the page view timer starts and stops,\r\n * but don't want to calculate the duration yourself. This method doesn't send any telemetry. Call `stopTrackPage` to log the end of the page view\r\n * and send the event.\r\n * @param name A string that idenfities this item, unique within this HTML document. Defaults to the document title.\r\n */\r\n _self.startTrackPage = function (name) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n _pageTracking.start(name);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 31 /* _eInternalMessageId.StartTrackFailed */, \"startTrackPage failed, page view may not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * Stops the timer that was started by calling `startTrackPage` and sends the pageview load time telemetry with the specified properties and measurements.\r\n * The duration of the page view will be the time between calling `startTrackPage` and `stopTrackPage`.\r\n * @param name The string you used as the name in startTrackPage. Defaults to the document title.\r\n * @param url String - a relative or absolute URL that identifies the page or other item. Defaults to the window location.\r\n * @param properties map[string, string] - additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n * @param measurements map[string, number] - metrics associated with this page, displayed in Metrics Explorer on the portal. Defaults to empty.\r\n */\r\n _self.stopTrackPage = function (name, url, properties, measurement) {\r\n try {\r\n if (typeof name !== \"string\") {\r\n var doc = getDocument();\r\n name = doc && doc.title || \"\";\r\n }\r\n if (typeof url !== \"string\") {\r\n var loc = getLocation();\r\n url = loc && loc[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n _pageTracking.stop(name, url, properties, measurement);\r\n if (_self.config[_DYN_AUTO_TRACK_PAGE_VISI1 /* @min:%2eautoTrackPageVisitTime */]) {\r\n _pageVisitTimeManager[_DYN_TRACK_PREVIOUS_PAGE_9 /* @min:%2etrackPreviousPageVisit */](name, url);\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 32 /* _eInternalMessageId.StopTrackFailed */, \"stopTrackPage failed, page view will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @ignore INTERNAL ONLY\r\n * @param exception\r\n * @param properties\r\n * @param systemProperties\r\n */\r\n _self[_DYN_SEND_EXCEPTION_INTER13 /* @min:%2esendExceptionInternal */] = function (exception, customProperties, systemProperties) {\r\n var theError = exception[_DYN_EXCEPTION /* @min:%2eexception */] || exception[_DYN_ERROR /* @min:%2eerror */] || new Error(strNotSpecified);\r\n var exceptionPartB = new Exception(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), theError, exception.properties || customProperties, exception.measurements, exception.severityLevel, exception.id).toInterface();\r\n var telemetryItem = createTelemetryItem(exceptionPartB, Exception[_DYN_DATA_TYPE /* @min:%2edataType */], Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), customProperties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n };\r\n /**\r\n * Log an exception you have caught.\r\n *\r\n * @param {IExceptionTelemetry} exception Object which contains exception to be sent\r\n * @param {{[key: string]: any}} customProperties Additional data used to filter pages and metrics in the portal. Defaults to empty.\r\n *\r\n * Any property of type double will be considered a measurement, and will be treated by Application Insights as a metric.\r\n * @memberof ApplicationInsights\r\n */\r\n _self.trackException = function (exception, customProperties) {\r\n if (exception && !exception[_DYN_EXCEPTION /* @min:%2eexception */] && exception[_DYN_ERROR /* @min:%2eerror */]) {\r\n exception[_DYN_EXCEPTION /* @min:%2eexception */] = exception[_DYN_ERROR /* @min:%2eerror */];\r\n }\r\n try {\r\n _self[_DYN_SEND_EXCEPTION_INTER13 /* @min:%2esendExceptionInternal */](exception, customProperties);\r\n }\r\n catch (e) {\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 35 /* _eInternalMessageId.TrackExceptionFailed */, \"trackException failed, exception will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n };\r\n /**\r\n * @description Custom error handler for Application Insights Analytics\r\n * @param {IAutoExceptionTelemetry} exception\r\n * @memberof ApplicationInsights\r\n */\r\n _self[_DYN__ONERROR /* @min:%2e_onerror */] = function (exception) {\r\n var error = exception && exception[_DYN_ERROR /* @min:%2eerror */];\r\n var evt = exception && exception.evt;\r\n try {\r\n if (!evt) {\r\n var _window = getWindow();\r\n if (_window) {\r\n evt = _window[strEvent];\r\n }\r\n }\r\n var url = (exception && exception.url) || (getDocument() || {}).URL;\r\n // If no error source is provided assume the default window.onerror handler\r\n var errorSrc = exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */] || \"window.onerror@\" + url + \":\" + (exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0) + \":\" + (exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0);\r\n var properties = {\r\n errorSrc: errorSrc,\r\n url: url,\r\n lineNumber: exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0,\r\n columnNumber: exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0,\r\n message: exception[_DYN_MESSAGE /* @min:%2emessage */]\r\n };\r\n if (isCrossOriginError(exception.message, exception.url, exception.lineNumber, exception.columnNumber, exception[_DYN_ERROR /* @min:%2eerror */])) {\r\n _sendCORSException(Exception[_DYN__CREATE_AUTO_EXCEPTI14 /* @min:%2eCreateAutoException */](\"Script error: The browser's same-origin policy prevents us from getting the details of this exception. Consider using the 'crossorigin' attribute.\", url, exception[_DYN_LINE_NUMBER /* @min:%2elineNumber */] || 0, exception[_DYN_COLUMN_NUMBER /* @min:%2ecolumnNumber */] || 0, error, evt, null, errorSrc), properties);\r\n }\r\n else {\r\n if (!exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */]) {\r\n exception[_DYN_ERROR_SRC /* @min:%2eerrorSrc */] = errorSrc;\r\n }\r\n _self.trackException({ exception: exception, severityLevel: 3 /* eSeverityLevel.Error */ }, properties);\r\n }\r\n }\r\n catch (e) {\r\n var errorString = error ? (error.name + \", \" + error[_DYN_MESSAGE /* @min:%2emessage */]) : \"null\";\r\n _throwInternal(1 /* eLoggingSeverity.CRITICAL */, 11 /* _eInternalMessageId.ExceptionWhileLoggingError */, \"_onError threw exception while logging error, error will not be collected: \"\r\n + getExceptionName(e), { exception: dumpObj(e), errorString: errorString });\r\n }\r\n };\r\n _self[_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */] = function (telemetryInitializer) {\r\n if (_self[_DYN_CORE /* @min:%2ecore */]) {\r\n // Just add to the core\r\n return _self[_DYN_CORE /* @min:%2ecore */][_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */](telemetryInitializer);\r\n }\r\n // Handle \"pre-initialization\" telemetry initializers (for backward compatibility)\r\n if (!_preInitTelemetryInitializers) {\r\n _preInitTelemetryInitializers = [];\r\n }\r\n _preInitTelemetryInitializers.push(telemetryInitializer);\r\n };\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (_self.isInitialized()) {\r\n return;\r\n }\r\n if (isNullOrUndefined(core)) {\r\n throwError(\"Error initializing\");\r\n }\r\n _base.initialize(config, core, extensions, pluginChain);\r\n try {\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(_self.identifier), core.evtNamespace && core.evtNamespace());\r\n if (_preInitTelemetryInitializers) {\r\n arrForEach(_preInitTelemetryInitializers, function (initializer) {\r\n core[_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */](initializer);\r\n });\r\n _preInitTelemetryInitializers = null;\r\n }\r\n var extConfig = _populateDefaults(config);\r\n _updateStorageUsage(extConfig);\r\n _pageViewPerformanceManager = new PageViewPerformanceManager(_self[_DYN_CORE /* @min:%2ecore */]);\r\n _pageViewManager = new PageViewManager(_this, extConfig[_DYN_OVERRIDE_PAGE_VIEW_D2 /* @min:%2eoverridePageViewDuration */], _self[_DYN_CORE /* @min:%2ecore */], _pageViewPerformanceManager);\r\n _pageVisitTimeManager = new PageVisitTimeManager(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), function (pageName, pageUrl, pageVisitTime) { return trackPageVisitTime(pageName, pageUrl, pageVisitTime); });\r\n _updateBrowserLinkTracking(extConfig, config);\r\n _eventTracking = new Timing(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), \"trackEvent\");\r\n _eventTracking.action =\r\n function (name, url, duration, properties, measurements) {\r\n if (!properties) {\r\n properties = {};\r\n }\r\n if (!measurements) {\r\n measurements = {};\r\n }\r\n properties.duration = duration[_DYN_TO_STRING /* @min:%2etoString */]();\r\n _self.trackEvent({ name: name, properties: properties, measurements: measurements });\r\n };\r\n // initialize page view timing\r\n _pageTracking = new Timing(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), \"trackPageView\");\r\n _pageTracking.action = function (name, url, duration, properties, measurements) {\r\n // duration must be a custom property in order for the collector to extract it\r\n if (isNullOrUndefined(properties)) {\r\n properties = {};\r\n }\r\n properties.duration = duration[_DYN_TO_STRING /* @min:%2etoString */]();\r\n var pageViewItem = {\r\n name: name,\r\n uri: url,\r\n properties: properties,\r\n measurements: measurements\r\n };\r\n _self[_DYN_SEND_PAGE_VIEW_INTER10 /* @min:%2esendPageViewInternal */](pageViewItem, properties);\r\n };\r\n if (hasWindow()) {\r\n _updateExceptionTracking(extConfig);\r\n _updateLocationChange(extConfig);\r\n }\r\n }\r\n catch (e) {\r\n // resetting the initialized state because of failure\r\n _self.setInitialized(false);\r\n throw e;\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n _pageViewManager && _pageViewManager.teardown(unloadCtx, unloadState);\r\n // Just register to remove all events associated with this namespace\r\n eventOff(window, null, null, _evtNamespace);\r\n _initDefaults();\r\n };\r\n function _populateDefaults(config) {\r\n var ctx = createProcessTelemetryContext(null, config, _self[_DYN_CORE /* @min:%2ecore */]);\r\n var identifier = _self.identifier;\r\n // load default values if specified\r\n var defaults = _getDefaultConfig(config);\r\n var extConfig = _self.config = ctx.getExtCfg(identifier);\r\n if (defaults !== undefined) {\r\n objForEachKey(defaults, function (field, value) {\r\n // for each unspecified field, set the default value\r\n extConfig[field] = ctx.getConfig(identifier, field, value);\r\n if (extConfig[field] === undefined) {\r\n extConfig = value;\r\n }\r\n });\r\n }\r\n return extConfig;\r\n }\r\n function _updateBrowserLinkTracking(extConfig, config) {\r\n _isBrowserLinkTrackingEnabled = extConfig[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */] || config[_DYN_IS_BROWSER_LINK_TRAC5 /* @min:%2eisBrowserLinkTrackingEnabled */];\r\n _addDefaultTelemetryInitializers();\r\n }\r\n /**\r\n * Log a page visit time\r\n * @param pageName Name of page\r\n * @param pageVisitDuration Duration of visit to the page in milleseconds\r\n */\r\n function trackPageVisitTime(pageName, pageUrl, pageVisitTime) {\r\n var properties = { PageName: pageName, PageUrl: pageUrl };\r\n _self.trackMetric({\r\n name: \"PageVisitTime\",\r\n average: pageVisitTime,\r\n max: pageVisitTime,\r\n min: pageVisitTime,\r\n sampleCount: 1\r\n }, properties);\r\n }\r\n function _addDefaultTelemetryInitializers() {\r\n if (!_browserLinkInitializerAdded && _isBrowserLinkTrackingEnabled) {\r\n var browserLinkPaths_1 = [\"/browserLinkSignalR/\", \"/__browserLink/\"];\r\n var dropBrowserLinkRequests = function (envelope) {\r\n if (_isBrowserLinkTrackingEnabled && envelope.baseType === RemoteDependencyData[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n var remoteData = envelope.baseData;\r\n if (remoteData) {\r\n for (var i = 0; i < browserLinkPaths_1[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n if (remoteData.target && remoteData.target.indexOf(browserLinkPaths_1[i]) >= 0) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n };\r\n _self[_DYN_ADD_TELEMETRY_INITIA15 /* @min:%2eaddTelemetryInitializer */](dropBrowserLinkRequests);\r\n _browserLinkInitializerAdded = true;\r\n }\r\n }\r\n function _sendCORSException(exception, properties) {\r\n var telemetryItem = createTelemetryItem(exception, Exception[_DYN_DATA_TYPE /* @min:%2edataType */], Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], _self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), properties);\r\n _self[_DYN_CORE /* @min:%2ecore */][_DYN_TRACK /* @min:%2etrack */](telemetryItem);\r\n }\r\n function _updateExceptionTracking(extConfig) {\r\n var _window = getWindow();\r\n var locn = getLocation(true);\r\n _disableExceptionTracking = extConfig[_DYN_DISABLE_EXCEPTION_TR0 /* @min:%2edisableExceptionTracking */];\r\n if (!_disableExceptionTracking && !_autoExceptionInstrumented && !extConfig.autoExceptionInstrumented) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n _addHook(InstrumentEvent(_window, \"onerror\", {\r\n ns: _evtNamespace,\r\n rsp: function (callDetails, message, url, lineNumber, columnNumber, error) {\r\n if (!_disableExceptionTracking && callDetails.rslt !== true) {\r\n _self[_DYN__ONERROR /* @min:%2e_onerror */](Exception[_DYN__CREATE_AUTO_EXCEPTI14 /* @min:%2eCreateAutoException */](message, url, lineNumber, columnNumber, error, callDetails.evt));\r\n }\r\n }\r\n }, false));\r\n _autoExceptionInstrumented = true;\r\n }\r\n _addUnhandledPromiseRejectionTracking(extConfig, _window, locn);\r\n }\r\n function _updateLocationChange(extConfig) {\r\n var win = getWindow();\r\n var locn = getLocation(true);\r\n _enableAutoRouteTracking = extConfig[_DYN_ENABLE_AUTO_ROUTE_TR6 /* @min:%2eenableAutoRouteTracking */] === true;\r\n /**\r\n * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n */\r\n if (win && _enableAutoRouteTracking && hasHistory()) {\r\n var _history = getHistory();\r\n if (isFunction(_history.pushState) && isFunction(_history.replaceState) && typeof Event !== strUndefined) {\r\n _addHistoryListener(extConfig, win, _history, locn);\r\n }\r\n }\r\n }\r\n function _getDistributedTraceCtx() {\r\n var distributedTraceCtx = null;\r\n if (_self[_DYN_CORE /* @min:%2ecore */] && _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx) {\r\n distributedTraceCtx = _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx(false);\r\n }\r\n if (!distributedTraceCtx) {\r\n // Fallback when using an older Core and PropertiesPlugin\r\n var properties = _self[_DYN_CORE /* @min:%2ecore */].getPlugin(PropertiesPluginIdentifier);\r\n if (properties) {\r\n var context = properties.plugin.context;\r\n if (context) {\r\n distributedTraceCtx = createDistributedTraceContextFromTrace(context.telemetryTrace);\r\n }\r\n }\r\n }\r\n return distributedTraceCtx;\r\n }\r\n /**\r\n * Create a custom \"locationchange\" event which is triggered each time the history object is changed\r\n */\r\n function _addHistoryListener(extConfig, win, history, locn) {\r\n var namePrefix = extConfig[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] || \"\";\r\n function _popstateHandler() {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n }\r\n }\r\n function _locationChangeHandler() {\r\n // We always track the changes (if the handler is installed) to handle the feature being disabled between location changes\r\n if (_currUri) {\r\n _prevUri = _currUri;\r\n _currUri = locn && locn[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n else {\r\n _currUri = locn && locn[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n }\r\n if (_enableAutoRouteTracking) {\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n if (distributedTraceCtx) {\r\n distributedTraceCtx.setTraceId(generateW3CId());\r\n var traceLocationName = \"_unknown_\";\r\n if (locn && locn.pathname) {\r\n traceLocationName = locn.pathname + (locn.hash || \"\");\r\n }\r\n // This populates the ai.operation.name which has a maximum size of 1024 so we need to sanitize it\r\n distributedTraceCtx.setName(dataSanitizeString(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), traceLocationName));\r\n }\r\n setTimeout((function (uri) {\r\n // todo: override start time so that it is not affected by autoRoutePVDelay\r\n _self[_DYN_TRACK_PAGE_VIEW /* @min:%2etrackPageView */]({ refUri: uri, properties: { duration: 0 } }); // SPA route change loading durations are undefined, so send 0\r\n }).bind(this, _prevUri), _self.autoRoutePVDelay);\r\n }\r\n }\r\n if (!_historyListenerAdded) {\r\n _addHook(InstrumentEvent(history, \"pushState\", {\r\n ns: _evtNamespace,\r\n rsp: function () {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"pushState\"));\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n }\r\n }\r\n }, true));\r\n _addHook(InstrumentEvent(history, \"replaceState\", {\r\n ns: _evtNamespace,\r\n rsp: function () {\r\n if (_enableAutoRouteTracking) {\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"replaceState\"));\r\n _dispatchEvent(win, createDomEvent(namePrefix + \"locationchange\"));\r\n }\r\n }\r\n }, true));\r\n eventOn(win, namePrefix + \"popstate\", _popstateHandler, _evtNamespace);\r\n eventOn(win, namePrefix + \"locationchange\", _locationChangeHandler, _evtNamespace);\r\n _historyListenerAdded = true;\r\n }\r\n }\r\n function _addUnhandledPromiseRejectionTracking(extConfig, _window, _location) {\r\n _enableUnhandledPromiseRejectionTracking = extConfig[_DYN_ENABLE_UNHANDLED_PRO3 /* @min:%2eenableUnhandledPromiseRejectionTracking */] === true;\r\n if (_enableUnhandledPromiseRejectionTracking && !_autoUnhandledPromiseInstrumented) {\r\n // We want to enable exception auto collection and it has not been done so yet\r\n _addHook(InstrumentEvent(_window, \"onunhandledrejection\", {\r\n ns: _evtNamespace,\r\n rsp: function (callDetails, error) {\r\n if (_enableUnhandledPromiseRejectionTracking && callDetails.rslt !== true) { // handled could be typeof function\r\n _self[_DYN__ONERROR /* @min:%2e_onerror */](Exception[_DYN__CREATE_AUTO_EXCEPTI14 /* @min:%2eCreateAutoException */](_getReason(error), _location ? _location[_DYN_HREF /* @min:%2ehref */] : \"\", 0, 0, error, callDetails.evt));\r\n }\r\n }\r\n }, false));\r\n _autoUnhandledPromiseInstrumented = true;\r\n extConfig.autoUnhandledPromiseInstrumented = _autoUnhandledPromiseInstrumented;\r\n }\r\n }\r\n /**\r\n * This method will throw exceptions in debug mode or attempt to log the error as a console warning.\r\n * @param severity {eLoggingSeverity} - The severity of the log message\r\n * @param message {_InternalLogMessage} - The log message.\r\n */\r\n function _throwInternal(severity, msgId, msg, properties, isUserAct) {\r\n _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]().throwInternal(severity, msgId, msg, properties, isUserAct);\r\n }\r\n function _initDefaults() {\r\n _eventTracking = null;\r\n _pageTracking = null;\r\n _pageViewManager = null;\r\n _pageViewPerformanceManager = null;\r\n _pageVisitTimeManager = null;\r\n _preInitTelemetryInitializers = null;\r\n _isBrowserLinkTrackingEnabled = false;\r\n _browserLinkInitializerAdded = false;\r\n _enableAutoRouteTracking = false;\r\n _historyListenerAdded = false;\r\n _disableExceptionTracking = false;\r\n _autoExceptionInstrumented = false;\r\n _enableUnhandledPromiseRejectionTracking = false;\r\n _autoUnhandledPromiseInstrumented = false;\r\n // Counts number of trackAjax invocations.\r\n // By default we only monitor X ajax call per view to avoid too much load.\r\n // Default value is set in config.\r\n // This counter keeps increasing even after the limit is reached.\r\n _trackAjaxAttempts = 0;\r\n // array with max length of 2 that store current url and previous url for SPA page route change trackPageview use.\r\n var location = getLocation(true);\r\n _prevUri = location && location[_DYN_HREF /* @min:%2ehref */] || \"\";\r\n _currUri = null;\r\n _evtNamespace = null;\r\n }\r\n // For backward compatibility\r\n objDefineAccessors(_self, \"_pageViewManager\", function () { return _pageViewManager; });\r\n objDefineAccessors(_self, \"_pageViewPerformanceManager\", function () { return _pageViewPerformanceManager; });\r\n objDefineAccessors(_self, \"_pageVisitTimeManager\", function () { return _pageVisitTimeManager; });\r\n objDefineAccessors(_self, \"_evtNamespace\", function () { return \".\" + _evtNamespace; });\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for AnalyticsPlugin.prototype.getCookieMgr.\r\n// Removed Stub for AnalyticsPlugin.prototype.processTelemetry.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackEvent.\r\n// Removed Stub for AnalyticsPlugin.prototype.startTrackEvent.\r\n// Removed Stub for AnalyticsPlugin.prototype.stopTrackEvent.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackTrace.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackMetric.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackPageView.\r\n// Removed Stub for AnalyticsPlugin.prototype.sendPageViewInternal.\r\n// Removed Stub for AnalyticsPlugin.prototype.sendPageViewPerformanceInternal.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackPageViewPerformance.\r\n// Removed Stub for AnalyticsPlugin.prototype.startTrackPage.\r\n// Removed Stub for AnalyticsPlugin.prototype.stopTrackPage.\r\n// Removed Stub for AnalyticsPlugin.prototype.sendExceptionInternal.\r\n// Removed Stub for AnalyticsPlugin.prototype.trackException.\r\n// Removed Stub for AnalyticsPlugin.prototype._onerror.\r\n// Removed Stub for AnalyticsPlugin.prototype.addTelemetryInitializer.\r\n// Removed Stub for AnalyticsPlugin.prototype.initialize.\r\n AnalyticsPlugin.Version = '2.8.9'; // Not currently used anywhere\r\n AnalyticsPlugin.getDefaultConfig = _getDefaultConfig;\r\n return AnalyticsPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { AnalyticsPlugin };\r\n//# sourceMappingURL=AnalyticsPlugin.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport { createClassFromInterface } from \"@microsoft/applicationinsights-core-js\";\r\nfunction _aiNameFunc(baseName) {\r\n var aiName = \"ai.\" + baseName + \".\";\r\n return function (name) {\r\n return aiName + name;\r\n };\r\n}\r\nvar _aiApplication = _aiNameFunc(\"application\");\r\nvar _aiDevice = _aiNameFunc(\"device\");\r\nvar _aiLocation = _aiNameFunc(\"location\");\r\nvar _aiOperation = _aiNameFunc(\"operation\");\r\nvar _aiSession = _aiNameFunc(\"session\");\r\nvar _aiUser = _aiNameFunc(\"user\");\r\nvar _aiCloud = _aiNameFunc(\"cloud\");\r\nvar _aiInternal = _aiNameFunc(\"internal\");\r\nvar ContextTagKeys = /** @class */ (function (_super) {\r\n __extends(ContextTagKeys, _super);\r\n function ContextTagKeys() {\r\n return _super.call(this) || this;\r\n }\r\n return ContextTagKeys;\r\n}(createClassFromInterface({\r\n applicationVersion: _aiApplication(\"ver\"),\r\n applicationBuild: _aiApplication(\"build\"),\r\n applicationTypeId: _aiApplication(\"typeId\"),\r\n applicationId: _aiApplication(\"applicationId\"),\r\n applicationLayer: _aiApplication(\"layer\"),\r\n deviceId: _aiDevice(\"id\"),\r\n deviceIp: _aiDevice(\"ip\"),\r\n deviceLanguage: _aiDevice(\"language\"),\r\n deviceLocale: _aiDevice(\"locale\"),\r\n deviceModel: _aiDevice(\"model\"),\r\n deviceFriendlyName: _aiDevice(\"friendlyName\"),\r\n deviceNetwork: _aiDevice(\"network\"),\r\n deviceNetworkName: _aiDevice(\"networkName\"),\r\n deviceOEMName: _aiDevice(\"oemName\"),\r\n deviceOS: _aiDevice(\"os\"),\r\n deviceOSVersion: _aiDevice(\"osVersion\"),\r\n deviceRoleInstance: _aiDevice(\"roleInstance\"),\r\n deviceRoleName: _aiDevice(\"roleName\"),\r\n deviceScreenResolution: _aiDevice(\"screenResolution\"),\r\n deviceType: _aiDevice(\"type\"),\r\n deviceMachineName: _aiDevice(\"machineName\"),\r\n deviceVMName: _aiDevice(\"vmName\"),\r\n deviceBrowser: _aiDevice(\"browser\"),\r\n deviceBrowserVersion: _aiDevice(\"browserVersion\"),\r\n locationIp: _aiLocation(\"ip\"),\r\n locationCountry: _aiLocation(\"country\"),\r\n locationProvince: _aiLocation(\"province\"),\r\n locationCity: _aiLocation(\"city\"),\r\n operationId: _aiOperation(\"id\"),\r\n operationName: _aiOperation(\"name\"),\r\n operationParentId: _aiOperation(\"parentId\"),\r\n operationRootId: _aiOperation(\"rootId\"),\r\n operationSyntheticSource: _aiOperation(\"syntheticSource\"),\r\n operationCorrelationVector: _aiOperation(\"correlationVector\"),\r\n sessionId: _aiSession(\"id\"),\r\n sessionIsFirst: _aiSession(\"isFirst\"),\r\n sessionIsNew: _aiSession(\"isNew\"),\r\n userAccountAcquisitionDate: _aiUser(\"accountAcquisitionDate\"),\r\n userAccountId: _aiUser(\"accountId\"),\r\n userAgent: _aiUser(\"userAgent\"),\r\n userId: _aiUser(\"id\"),\r\n userStoreRegion: _aiUser(\"storeRegion\"),\r\n userAuthUserId: _aiUser(\"authUserId\"),\r\n userAnonymousUserAcquisitionDate: _aiUser(\"anonUserAcquisitionDate\"),\r\n userAuthenticatedUserAcquisitionDate: _aiUser(\"authUserAcquisitionDate\"),\r\n cloudName: _aiCloud(\"name\"),\r\n cloudRole: _aiCloud(\"role\"),\r\n cloudRoleVer: _aiCloud(\"roleVer\"),\r\n cloudRoleInstance: _aiCloud(\"roleInstance\"),\r\n cloudEnvironment: _aiCloud(\"environment\"),\r\n cloudLocation: _aiCloud(\"location\"),\r\n cloudDeploymentUnit: _aiCloud(\"deploymentUnit\"),\r\n internalNodeName: _aiInternal(\"nodeName\"),\r\n internalSdkVersion: _aiInternal(\"sdkVersion\"),\r\n internalAgentVersion: _aiInternal(\"agentVersion\"),\r\n internalSnippet: _aiInternal(\"snippet\"),\r\n internalSdkSrc: _aiInternal(\"sdkSrc\")\r\n})));\r\nexport { ContextTagKeys };\r\n//# sourceMappingURL=ContextTagKeys.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { ContextTagKeys } from \"./Contracts/ContextTagKeys\";\r\nexport var Extensions = {\r\n UserExt: \"user\",\r\n DeviceExt: \"device\",\r\n TraceExt: \"trace\",\r\n WebExt: \"web\",\r\n AppExt: \"app\",\r\n OSExt: \"os\",\r\n SessionExt: \"ses\",\r\n SDKExt: \"sdk\"\r\n};\r\nexport var CtxTagKeys = new ContextTagKeys();\r\n//# sourceMappingURL=PartAExtensions.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { strNotSpecified } from \"../../Constants\";\r\nimport { _DYN_NAME } from \"../../__DynamicConstants\";\r\nimport { dataSanitizeString } from \"./DataSanitizer\";\r\nvar Envelope = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n function Envelope(logger, data, name) {\r\n var _this = this;\r\n var _self = this;\r\n _self.ver = 1;\r\n _self.sampleRate = 100.0;\r\n _self.tags = {};\r\n _self[_DYN_NAME /* @min:%2ename */] = dataSanitizeString(logger, name) || strNotSpecified;\r\n _self.data = data;\r\n _self.time = toISOString(new Date());\r\n _self.aiDataContract = {\r\n time: 1 /* FieldType.Required */,\r\n iKey: 1 /* FieldType.Required */,\r\n name: 1 /* FieldType.Required */,\r\n sampleRate: function () {\r\n return (_this.sampleRate === 100) ? 4 /* FieldType.Hidden */ : 1 /* FieldType.Required */;\r\n },\r\n tags: 1 /* FieldType.Required */,\r\n data: 1 /* FieldType.Required */\r\n };\r\n }\r\n return Envelope;\r\n}());\r\nexport { Envelope };\r\n//# sourceMappingURL=Envelope.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Data = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of telemetry data.\r\n */\r\n function Data(baseType, data) {\r\n /**\r\n * The data contract for serializing this object.\r\n */\r\n this.aiDataContract = {\r\n baseType: 1 /* FieldType.Required */,\r\n baseData: 1 /* FieldType.Required */\r\n };\r\n this.baseType = baseType;\r\n this.baseData = data;\r\n }\r\n return Data;\r\n}());\r\nexport { Data };\r\n//# sourceMappingURL=Data.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Generally you should only put values that are used more than 2 times and then only if not already exposed as a constant (such as SdkCoreNames)\r\n// as when using \"short\" named values from here they will be will be minified smaller than the SdkCoreNames[eSdkCoreNames.xxxx] value.\r\nexport var STR_DURATION = \"duration\";\r\n//# sourceMappingURL=InternalConstants.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_TAGS = \"tags\"; // Count: 17\r\nexport var _DYN_DEVICE_TYPE = \"deviceType\"; // Count: 3\r\nexport var _DYN_DATA = \"data\"; // Count: 13\r\nexport var _DYN_NAME = \"name\"; // Count: 8\r\nexport var _DYN_TRACE_ID = \"traceID\"; // Count: 5\r\nexport var _DYN_LENGTH = \"length\"; // Count: 36\r\nexport var _DYN_STRINGIFY = \"stringify\"; // Count: 5\r\nexport var _DYN_MEASUREMENTS = \"measurements\"; // Count: 7\r\nexport var _DYN_DATA_TYPE = \"dataType\"; // Count: 10\r\nexport var _DYN_ENVELOPE_TYPE = \"envelopeType\"; // Count: 7\r\nexport var _DYN_TO_STRING = \"toString\"; // Count: 7\r\nexport var _DYN_ON_LINE = \"onLine\"; // Count: 4\r\nexport var _DYN_ENQUEUE = \"enqueue\"; // Count: 5\r\nexport var _DYN_COUNT = \"count\"; // Count: 6\r\nexport var _DYN_PUSH = \"push\"; // Count: 6\r\nexport var _DYN_EMIT_LINE_DELIMITED_0 = \"emitLineDelimitedJson\"; // Count: 3\r\nexport var _DYN_CLEAR = \"clear\"; // Count: 6\r\nexport var _DYN_BATCH_PAYLOADS = \"batchPayloads\"; // Count: 5\r\nexport var _DYN_MARK_AS_SENT = \"markAsSent\"; // Count: 6\r\nexport var _DYN_CLEAR_SENT = \"clearSent\"; // Count: 5\r\nexport var _DYN__BUFFER__KEY = \"BUFFER_KEY\"; // Count: 5\r\nexport var _DYN__SENT__BUFFER__KEY = \"SENT_BUFFER_KEY\"; // Count: 7\r\nexport var _DYN__MAX__BUFFER__SIZE = \"MAX_BUFFER_SIZE\"; // Count: 5\r\nexport var _DYN_NAME_PREFIX = \"namePrefix\"; // Count: 6\r\nexport var _DYN_MAX_BATCH_SIZE_IN_BY1 = \"maxBatchSizeInBytes\"; // Count: 3\r\nexport var _DYN_TRIGGER_SEND = \"triggerSend\"; // Count: 6\r\nexport var _DYN_DIAG_LOG = \"diagLog\"; // Count: 15\r\nexport var _DYN_ONUNLOAD_DISABLE_BEA2 = \"onunloadDisableBeacon\"; // Count: 2\r\nexport var _DYN_IS_BEACON_API_DISABL3 = \"isBeaconApiDisabled\"; // Count: 3\r\nexport var _DYN__SENDER = \"_sender\"; // Count: 5\r\nexport var _DYN__SENDER_CONFIG = \"_senderConfig\"; // Count: 4\r\nexport var _DYN__BUFFER = \"_buffer\"; // Count: 7\r\nexport var _DYN_ENABLE_SESSION_STORA4 = \"enableSessionStorageBuffer\"; // Count: 2\r\nexport var _DYN_SAMPLING_PERCENTAGE = \"samplingPercentage\"; // Count: 2\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 4\r\nexport var _DYN_ENDPOINT_URL = \"endpointUrl\"; // Count: 8\r\nexport var _DYN_CUSTOM_HEADERS = \"customHeaders\"; // Count: 4\r\nexport var _DYN_DISABLE_XHR = \"disableXhr\"; // Count: 5\r\nexport var _DYN_ONUNLOAD_DISABLE_FET5 = \"onunloadDisableFetch\"; // Count: 2\r\nexport var _DYN_DISABLE_TELEMETRY = \"disableTelemetry\"; // Count: 2\r\nexport var _DYN_BASE_TYPE = \"baseType\"; // Count: 4\r\nexport var _DYN_SAMPLE_RATE = \"sampleRate\"; // Count: 4\r\nexport var _DYN_CONVERT_UNDEFINED = \"convertUndefined\"; // Count: 2\r\nexport var _DYN__XHR_READY_STATE_CHA6 = \"_xhrReadyStateChange\"; // Count: 2\r\nexport var _DYN__ON_ERROR = \"_onError\"; // Count: 11\r\nexport var _DYN__ON_PARTIAL_SUCCESS = \"_onPartialSuccess\"; // Count: 3\r\nexport var _DYN__ON_SUCCESS = \"_onSuccess\"; // Count: 6\r\nexport var _DYN_ITEMS_ACCEPTED = \"itemsAccepted\"; // Count: 5\r\nexport var _DYN_ITEMS_RECEIVED = \"itemsReceived\"; // Count: 6\r\nexport var _DYN_IS_RETRY_DISABLED = \"isRetryDisabled\"; // Count: 5\r\nexport var _DYN_SET_REQUEST_HEADER = \"setRequestHeader\"; // Count: 3\r\nexport var _DYN_MAX_BATCH_INTERVAL = \"maxBatchInterval\"; // Count: 2\r\nexport var _DYN_EVENTS_SEND_REQUEST = \"eventsSendRequest\"; // Count: 2\r\nexport var _DYN_DISABLE_INSTRUMENTAT7 = \"disableInstrumentationKeyValidation\"; // Count: 2\r\nexport var _DYN_GET_SAMPLING_SCORE = \"getSamplingScore\"; // Count: 2\r\nexport var _DYN_GET_HASH_CODE_SCORE = \"getHashCodeScore\"; // Count: 4\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { __assignFn as __assign } from \"@microsoft/applicationinsights-shims\";\r\nimport { CtxTagKeys, Data, Envelope, Event, Exception, HttpMethod, Metric, PageView, PageViewPerformance, RemoteDependencyData, SampleRate, Trace, dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, _warnToConsole, getJSON, hasJSON, isNullOrUndefined, isNumber, isString, isTruthy, objForEachKey, optimizeObject, setValue, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_DURATION } from \"./InternalConstants\";\r\nimport { _DYN_DATA, _DYN_DATA_TYPE, _DYN_DEVICE_TYPE, _DYN_ENVELOPE_TYPE, _DYN_LENGTH, _DYN_MEASUREMENTS, _DYN_NAME, _DYN_STRINGIFY, _DYN_TAGS, _DYN_TO_STRING, _DYN_TRACE_ID } from \"./__DynamicConstants\";\r\n// these two constants are used to filter out properties not needed when trying to extract custom properties and measurements from the incoming payload\r\nvar strBaseType = \"baseType\";\r\nvar strBaseData = \"baseData\";\r\nvar strProperties = \"properties\";\r\nvar strTrue = \"true\";\r\nfunction _setValueIf(target, field, value) {\r\n return setValue(target, field, value, isTruthy);\r\n}\r\n/*\r\n * Maps Part A data from CS 4.0\r\n */\r\nfunction _extractPartAExtensions(logger, item, env) {\r\n // todo: switch to keys from common in this method\r\n var envTags = env[_DYN_TAGS /* @min:%2etags */] = env[_DYN_TAGS /* @min:%2etags */] || {};\r\n var itmExt = item.ext = item.ext || {};\r\n var itmTags = item[_DYN_TAGS /* @min:%2etags */] = item[_DYN_TAGS /* @min:%2etags */] || [];\r\n var extUser = itmExt.user;\r\n if (extUser) {\r\n _setValueIf(envTags, CtxTagKeys.userAuthUserId, extUser.authId);\r\n _setValueIf(envTags, CtxTagKeys.userId, extUser.id || extUser.localId);\r\n }\r\n var extApp = itmExt.app;\r\n if (extApp) {\r\n _setValueIf(envTags, CtxTagKeys.sessionId, extApp.sesId);\r\n }\r\n var extDevice = itmExt.device;\r\n if (extDevice) {\r\n _setValueIf(envTags, CtxTagKeys.deviceId, extDevice.id || extDevice.localId);\r\n _setValueIf(envTags, CtxTagKeys[_DYN_DEVICE_TYPE /* @min:%2edeviceType */], extDevice.deviceClass);\r\n _setValueIf(envTags, CtxTagKeys.deviceIp, extDevice.ip);\r\n _setValueIf(envTags, CtxTagKeys.deviceModel, extDevice.model);\r\n _setValueIf(envTags, CtxTagKeys[_DYN_DEVICE_TYPE /* @min:%2edeviceType */], extDevice[_DYN_DEVICE_TYPE /* @min:%2edeviceType */]);\r\n }\r\n var web = item.ext.web;\r\n if (web) {\r\n _setValueIf(envTags, CtxTagKeys.deviceLanguage, web.browserLang);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowserVersion, web.browserVer);\r\n _setValueIf(envTags, CtxTagKeys.deviceBrowser, web.browser);\r\n var envData = env[_DYN_DATA /* @min:%2edata */] = env[_DYN_DATA /* @min:%2edata */] || {};\r\n var envBaseData = envData[strBaseData] = envData[strBaseData] || {};\r\n var envProps = envBaseData[strProperties] = envBaseData[strProperties] || {};\r\n _setValueIf(envProps, \"domain\", web.domain);\r\n _setValueIf(envProps, \"isManual\", web.isManual ? strTrue : null);\r\n _setValueIf(envProps, \"screenRes\", web.screenRes);\r\n _setValueIf(envProps, \"userConsent\", web.userConsent ? strTrue : null);\r\n }\r\n var extOs = itmExt.os;\r\n if (extOs) {\r\n _setValueIf(envTags, CtxTagKeys.deviceOS, extOs[_DYN_NAME /* @min:%2ename */]);\r\n }\r\n // No support for mapping Trace.traceState to 2.0 as it is currently empty\r\n var extTrace = itmExt.trace;\r\n if (extTrace) {\r\n _setValueIf(envTags, CtxTagKeys.operationParentId, extTrace.parentID);\r\n _setValueIf(envTags, CtxTagKeys.operationName, dataSanitizeString(logger, extTrace[_DYN_NAME /* @min:%2ename */]));\r\n _setValueIf(envTags, CtxTagKeys.operationId, extTrace[_DYN_TRACE_ID /* @min:%2etraceID */]);\r\n }\r\n // Sample 4.0 schema\r\n // {\r\n // \"time\" : \"2018-09-05T22:51:22.4936Z\",\r\n // \"name\" : \"MetricWithNamespace\",\r\n // \"iKey\" : \"ABC-5a4cbd20-e601-4ef5-a3c6-5d6577e4398e\",\r\n // \"ext\": { \"cloud\": {\r\n // \"role\": \"WATSON3\",\r\n // \"roleInstance\": \"CO4AEAP00000260\"\r\n // },\r\n // \"device\": {}, \"correlation\": {} },\r\n // \"tags\": [\r\n // { \"amazon.region\" : \"east2\" },\r\n // { \"os.expid\" : \"wp:02df239\" }\r\n // ]\r\n // }\r\n var tgs = {};\r\n // deals with tags.push({object})\r\n for (var i = itmTags[_DYN_LENGTH /* @min:%2elength */] - 1; i >= 0; i--) {\r\n var tg = itmTags[i];\r\n objForEachKey(tg, function (key, value) {\r\n tgs[key] = value;\r\n });\r\n itmTags.splice(i, 1);\r\n }\r\n // deals with tags[key]=value (and handles hasOwnProperty)\r\n objForEachKey(itmTags, function (tg, value) {\r\n tgs[tg] = value;\r\n });\r\n var theTags = __assign(__assign({}, envTags), tgs);\r\n if (!theTags[CtxTagKeys.internalSdkVersion]) {\r\n // Append a version in case it is not already set\r\n theTags[CtxTagKeys.internalSdkVersion] = \"javascript:\".concat(EnvelopeCreator.Version);\r\n }\r\n env[_DYN_TAGS /* @min:%2etags */] = optimizeObject(theTags);\r\n}\r\nfunction _extractPropsAndMeasurements(data, properties, measurements) {\r\n if (!isNullOrUndefined(data)) {\r\n objForEachKey(data, function (key, value) {\r\n if (isNumber(value)) {\r\n measurements[key] = value;\r\n }\r\n else if (isString(value)) {\r\n properties[key] = value;\r\n }\r\n else if (hasJSON()) {\r\n properties[key] = getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](value);\r\n }\r\n });\r\n }\r\n}\r\nfunction _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue) {\r\n if (!isNullOrUndefined(properties)) {\r\n objForEachKey(properties, function (key, value) {\r\n properties[key] = value || customUndefinedValue;\r\n });\r\n }\r\n}\r\n// TODO: Do we want this to take logger as arg or use this._logger as nonstatic?\r\nfunction _createEnvelope(logger, envelopeType, telemetryItem, data) {\r\n var envelope = new Envelope(logger, data, envelopeType);\r\n _setValueIf(envelope, \"sampleRate\", telemetryItem[SampleRate]);\r\n if ((telemetryItem[strBaseData] || {}).startTime) {\r\n envelope.time = toISOString(telemetryItem[strBaseData].startTime);\r\n }\r\n envelope.iKey = telemetryItem.iKey;\r\n var iKeyNoDashes = telemetryItem.iKey.replace(/-/g, \"\");\r\n envelope[_DYN_NAME /* @min:%2ename */] = envelope[_DYN_NAME /* @min:%2ename */].replace(\"{0}\", iKeyNoDashes);\r\n // extract all extensions from ctx\r\n _extractPartAExtensions(logger, telemetryItem, envelope);\r\n // loop through the envelope tags (extension of Part A) and pick out the ones that should go in outgoing envelope tags\r\n telemetryItem[_DYN_TAGS /* @min:%2etags */] = telemetryItem[_DYN_TAGS /* @min:%2etags */] || [];\r\n return optimizeObject(envelope);\r\n}\r\nfunction EnvelopeCreatorInit(logger, telemetryItem) {\r\n if (isNullOrUndefined(telemetryItem[strBaseData])) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 46 /* _eInternalMessageId.TelemetryEnvelopeInvalid */, \"telemetryItem.baseData cannot be null.\");\r\n }\r\n}\r\nexport var EnvelopeCreator = {\r\n Version: '2.8.9'\r\n};\r\nexport function DependencyEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n if (isNullOrUndefined(bd)) {\r\n _warnToConsole(logger, \"Invalid input for dependency data\");\r\n return null;\r\n }\r\n var method = bd[strProperties] && bd[strProperties][HttpMethod] ? bd[strProperties][HttpMethod] : \"GET\";\r\n var remoteDepData = new RemoteDependencyData(logger, bd.id, bd.target, bd[_DYN_NAME /* @min:%2ename */], bd[STR_DURATION /* @min:%2eduration */], bd.success, bd.responseCode, method, bd.type, bd.correlationContext, customProperties, customMeasurements);\r\n var data = new Data(RemoteDependencyData[_DYN_DATA_TYPE /* @min:%2edataType */], remoteDepData);\r\n return _createEnvelope(logger, RemoteDependencyData[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function EventEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var customProperties = {};\r\n var customMeasurements = {};\r\n if (telemetryItem[strBaseType] !== Event[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n customProperties[\"baseTypeSource\"] = telemetryItem[strBaseType]; // save the passed in base type as a property\r\n }\r\n if (telemetryItem[strBaseType] === Event[_DYN_DATA_TYPE /* @min:%2edataType */]) { // take collection\r\n customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n }\r\n else { // if its not a known type, convert to custom event\r\n if (telemetryItem[strBaseData]) {\r\n _extractPropsAndMeasurements(telemetryItem[strBaseData], customProperties, customMeasurements);\r\n }\r\n }\r\n // Extract root level properties from part C telemetryItem.data\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var eventName = telemetryItem[strBaseData][_DYN_NAME /* @min:%2ename */];\r\n var eventData = new Event(logger, eventName, customProperties, customMeasurements);\r\n var data = new Data(Event[_DYN_DATA_TYPE /* @min:%2edataType */], eventData);\r\n return _createEnvelope(logger, Event[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function ExceptionEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Extract root level properties from part C telemetryItem.data\r\n var customMeasurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n var customProperties = telemetryItem[strBaseData][strProperties] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], customProperties, customMeasurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(customProperties, customUndefinedValue);\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n var exData = Exception.CreateFromInterface(logger, bd, customProperties, customMeasurements);\r\n var data = new Data(Exception[_DYN_DATA_TYPE /* @min:%2edataType */], exData);\r\n return _createEnvelope(logger, Exception[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function MetricEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var baseData = telemetryItem[strBaseData];\r\n var props = baseData[strProperties] || {};\r\n var measurements = baseData[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseMetricData = new Metric(logger, baseData[_DYN_NAME /* @min:%2ename */], baseData.average, baseData.sampleCount, baseData.min, baseData.max, baseData.stdDev, props, measurements);\r\n var data = new Data(Metric[_DYN_DATA_TYPE /* @min:%2edataType */], baseMetricData);\r\n return _createEnvelope(logger, Metric[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function PageViewEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n // Since duration is not part of the domain properties in Common Schema, extract it from part C\r\n var duration;\r\n var baseData = telemetryItem[strBaseData];\r\n if (!isNullOrUndefined(baseData) &&\r\n !isNullOrUndefined(baseData[strProperties]) &&\r\n !isNullOrUndefined(baseData[strProperties][STR_DURATION])) { // from part B properties\r\n duration = baseData[strProperties][STR_DURATION];\r\n delete baseData[strProperties][STR_DURATION];\r\n }\r\n else if (!isNullOrUndefined(telemetryItem[_DYN_DATA /* @min:%2edata */]) &&\r\n !isNullOrUndefined(telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION])) { // from custom properties\r\n duration = telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION];\r\n delete telemetryItem[_DYN_DATA /* @min:%2edata */][STR_DURATION];\r\n }\r\n var bd = telemetryItem[strBaseData];\r\n // special case: pageview.id is grabbed from current operation id. Analytics plugin is decoupled from properties plugin, so this is done here instead. This can be made a default telemetry intializer instead if needed to be decoupled from channel\r\n var currentContextId;\r\n if (((telemetryItem.ext || {}).trace || {})[_DYN_TRACE_ID /* @min:%2etraceID */]) {\r\n currentContextId = telemetryItem.ext.trace[_DYN_TRACE_ID /* @min:%2etraceID */];\r\n }\r\n var id = bd.id || currentContextId;\r\n var name = bd[_DYN_NAME /* @min:%2ename */];\r\n var url = bd.uri;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n // refUri is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.refUri)) {\r\n properties[\"refUri\"] = bd.refUri;\r\n }\r\n // pageType is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.pageType)) {\r\n properties[\"pageType\"] = bd.pageType;\r\n }\r\n // isLoggedIn is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd.isLoggedIn)) {\r\n properties[\"isLoggedIn\"] = bd.isLoggedIn[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n // pageTags is a field that Breeze still does not recognize as part of Part B. For now, put it in Part C until it supports it as a domain property\r\n if (!isNullOrUndefined(bd[strProperties])) {\r\n var pageTags = bd[strProperties];\r\n objForEachKey(pageTags, function (key, value) {\r\n properties[key] = value;\r\n });\r\n }\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var pageViewData = new PageView(logger, name, url, duration, properties, measurements, id);\r\n var data = new Data(PageView[_DYN_DATA_TYPE /* @min:%2edataType */], pageViewData);\r\n return _createEnvelope(logger, PageView[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function PageViewPerformanceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var bd = telemetryItem[strBaseData];\r\n var name = bd[_DYN_NAME /* @min:%2ename */];\r\n var url = bd.uri || bd.url;\r\n var properties = bd[strProperties] || {};\r\n var measurements = bd[_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], properties, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(properties, customUndefinedValue);\r\n }\r\n var baseData = new PageViewPerformance(logger, name, url, undefined, properties, measurements, bd);\r\n var data = new Data(PageViewPerformance[_DYN_DATA_TYPE /* @min:%2edataType */], baseData);\r\n return _createEnvelope(logger, PageViewPerformance[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\nexport function TraceEnvelopeCreator(logger, telemetryItem, customUndefinedValue) {\r\n EnvelopeCreatorInit(logger, telemetryItem);\r\n var message = telemetryItem[strBaseData].message;\r\n var severityLevel = telemetryItem[strBaseData].severityLevel;\r\n var props = telemetryItem[strBaseData][strProperties] || {};\r\n var measurements = telemetryItem[strBaseData][_DYN_MEASUREMENTS /* @min:%2emeasurements */] || {};\r\n _extractPropsAndMeasurements(telemetryItem[_DYN_DATA /* @min:%2edata */], props, measurements);\r\n if (!isNullOrUndefined(customUndefinedValue)) {\r\n _convertPropsUndefinedToCustomDefinedValue(props, customUndefinedValue);\r\n }\r\n var baseData = new Trace(logger, message, severityLevel, props, measurements);\r\n var data = new Data(Trace[_DYN_DATA_TYPE /* @min:%2edataType */], baseData);\r\n return _createEnvelope(logger, Trace[_DYN_ENVELOPE_TYPE /* @min:%2eenvelopeType */], telemetryItem, data);\r\n}\r\n//# sourceMappingURL=EnvelopeCreator.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { createUniqueNamespace, eventOff, eventOn, getDocument, getNavigator, getWindow, isNullOrUndefined, isUndefined, mergeEvtNamespace } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ON_LINE } from \"./__DynamicConstants\";\r\nfunction _disableEvents(target, evtNamespace) {\r\n eventOff(target, null, null, evtNamespace);\r\n}\r\n/**\r\n * Create a new OfflineListener instance to monitor browser online / offline events\r\n * @param parentEvtNamespace - The parent event namespace to append to any specific events for this instance\r\n */\r\nexport function createOfflineListener(parentEvtNamespace) {\r\n var _document = getDocument();\r\n var _navigator = getNavigator(); // Gets the window.navigator or workerNavigator depending on the global\r\n var _isListening = false;\r\n var _onlineStatus = true;\r\n var _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"OfflineListener\"), parentEvtNamespace);\r\n try {\r\n if (_enableEvents(getWindow())) {\r\n _isListening = true;\r\n }\r\n if (_document) {\r\n // Also attach to the document.body or document\r\n var target = _document.body || _document;\r\n if (target.ononline) {\r\n if (_enableEvents(target)) {\r\n _isListening = true;\r\n }\r\n }\r\n }\r\n if (_isListening) {\r\n // We are listening to events so lets set the current status rather than assuming we are online #1538\r\n if (_navigator && !isNullOrUndefined(_navigator[_DYN_ON_LINE /* @min:%2eonLine */])) { // navigator.onLine is undefined in react-native\r\n _onlineStatus = _navigator[_DYN_ON_LINE /* @min:%2eonLine */];\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // this makes react-native less angry\r\n _isListening = false;\r\n }\r\n function _enableEvents(target) {\r\n var enabled = false;\r\n if (target) {\r\n enabled = eventOn(target, \"online\", _setOnline, _evtNamespace);\r\n if (enabled) {\r\n eventOn(target, \"offline\", _setOffline, _evtNamespace);\r\n }\r\n }\r\n return enabled;\r\n }\r\n function _setOnline() {\r\n _onlineStatus = true;\r\n }\r\n function _setOffline() {\r\n _onlineStatus = false;\r\n }\r\n function _isOnline() {\r\n var result = true;\r\n if (_isListening) {\r\n result = _onlineStatus;\r\n }\r\n else if (_navigator && !isNullOrUndefined(_navigator[_DYN_ON_LINE /* @min:%2eonLine */])) { // navigator.onLine is undefined in react-native\r\n result = _navigator[_DYN_ON_LINE /* @min:%2eonLine */];\r\n }\r\n return result;\r\n }\r\n function _unload() {\r\n var win = getWindow();\r\n if (win && _isListening) {\r\n _disableEvents(win, _evtNamespace);\r\n if (_document) {\r\n // Also attach to the document.body or document\r\n var target = _document.body || _document;\r\n if (!isUndefined(target.ononline)) {\r\n _disableEvents(target, _evtNamespace);\r\n }\r\n }\r\n _isListening = false;\r\n }\r\n }\r\n return {\r\n isOnline: _isOnline,\r\n isListening: function () { return _isListening; },\r\n unload: _unload\r\n };\r\n}\r\n//# sourceMappingURL=Offline.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlGetSessionStorage, utlSetSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, arrForEach, arrIndexOf, dumpObj, getExceptionName, getJSON, isArray, isFunction, isString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_BATCH_PAYLOADS, _DYN_CLEAR, _DYN_CLEAR_SENT, _DYN_COUNT, _DYN_EMIT_LINE_DELIMITED_0, _DYN_ENQUEUE, _DYN_LENGTH, _DYN_MARK_AS_SENT, _DYN_NAME_PREFIX, _DYN_PUSH, _DYN_STRINGIFY, _DYN__BUFFER__KEY, _DYN__MAX__BUFFER__SIZE, _DYN__SENT__BUFFER__KEY } from \"./__DynamicConstants\";\r\nvar BaseSendBuffer = /** @class */ (function () {\r\n function BaseSendBuffer(logger, config) {\r\n var _buffer = [];\r\n var _bufferFullMessageSent = false;\r\n this._get = function () {\r\n return _buffer;\r\n };\r\n this._set = function (buffer) {\r\n _buffer = buffer;\r\n return _buffer;\r\n };\r\n dynamicProto(BaseSendBuffer, this, function (_self) {\r\n _self[_DYN_ENQUEUE /* @min:%2eenqueue */] = function (payload) {\r\n if (_self[_DYN_COUNT /* @min:%2ecount */]() >= config.eventsLimitInMem()) {\r\n // sent internal log only once per page view\r\n if (!_bufferFullMessageSent) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 105 /* _eInternalMessageId.InMemoryStorageBufferFull */, \"Maximum in-memory buffer size reached: \" + _self[_DYN_COUNT /* @min:%2ecount */](), true);\r\n _bufferFullMessageSent = true;\r\n }\r\n return;\r\n }\r\n _buffer[_DYN_PUSH /* @min:%2epush */](payload);\r\n };\r\n _self[_DYN_COUNT /* @min:%2ecount */] = function () {\r\n return _buffer[_DYN_LENGTH /* @min:%2elength */];\r\n };\r\n _self.size = function () {\r\n var size = _buffer[_DYN_LENGTH /* @min:%2elength */];\r\n for (var lp = 0; lp < _buffer[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n size += _buffer[lp][_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n if (!config[_DYN_EMIT_LINE_DELIMITED_0 /* @min:%2eemitLineDelimitedJson */]()) {\r\n size += 2;\r\n }\r\n return size;\r\n };\r\n _self[_DYN_CLEAR /* @min:%2eclear */] = function () {\r\n _buffer = [];\r\n _bufferFullMessageSent = false;\r\n };\r\n _self.getItems = function () {\r\n return _buffer.slice(0);\r\n };\r\n _self[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */] = function (payload) {\r\n if (payload && payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var batch = config[_DYN_EMIT_LINE_DELIMITED_0 /* @min:%2eemitLineDelimitedJson */]() ?\r\n payload.join(\"\\n\") :\r\n \"[\" + payload.join(\",\") + \"]\";\r\n return batch;\r\n }\r\n return null;\r\n };\r\n });\r\n }\r\n// Removed Stub for BaseSendBuffer.prototype.enqueue.\r\n// Removed Stub for BaseSendBuffer.prototype.count.\r\n// Removed Stub for BaseSendBuffer.prototype.size.\r\n// Removed Stub for BaseSendBuffer.prototype.clear.\r\n// Removed Stub for BaseSendBuffer.prototype.getItems.\r\n// Removed Stub for BaseSendBuffer.prototype.batchPayloads.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n BaseSendBuffer.__ieDyn=1;\n\n return BaseSendBuffer;\r\n}());\r\n/*\r\n * An array based send buffer.\r\n */\r\nvar ArraySendBuffer = /** @class */ (function (_super) {\r\n __extends(ArraySendBuffer, _super);\r\n function ArraySendBuffer(logger, config) {\r\n var _this = _super.call(this, logger, config) || this;\r\n dynamicProto(ArraySendBuffer, _this, function (_self, _base) {\r\n _self[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */] = function (payload) {\r\n _base[_DYN_CLEAR /* @min:%2eclear */]();\r\n };\r\n _self[_DYN_CLEAR_SENT /* @min:%2eclearSent */] = function (payload) {\r\n // not supported\r\n };\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for ArraySendBuffer.prototype.markAsSent.\r\n// Removed Stub for ArraySendBuffer.prototype.clearSent.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n ArraySendBuffer.__ieDyn=1;\n\n return ArraySendBuffer;\r\n}(BaseSendBuffer));\r\nexport { ArraySendBuffer };\r\n/*\r\n * Session storage buffer holds a copy of all unsent items in the browser session storage.\r\n */\r\nvar SessionStorageSendBuffer = /** @class */ (function (_super) {\r\n __extends(SessionStorageSendBuffer, _super);\r\n function SessionStorageSendBuffer(logger, config) {\r\n var _this = _super.call(this, logger, config) || this;\r\n var _bufferFullMessageSent = false;\r\n dynamicProto(SessionStorageSendBuffer, _this, function (_self, _base) {\r\n var bufferItems = _getBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */]);\r\n var notDeliveredItems = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n var buffer = _self._set(bufferItems.concat(notDeliveredItems));\r\n // If the buffer has too many items, drop items from the end.\r\n if (buffer[_DYN_LENGTH /* @min:%2elength */] > SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n buffer[_DYN_LENGTH /* @min:%2elength */] = SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */];\r\n }\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], []);\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], buffer);\r\n _self[_DYN_ENQUEUE /* @min:%2eenqueue */] = function (payload) {\r\n if (_self[_DYN_COUNT /* @min:%2ecount */]() >= SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n // sent internal log only once per page view\r\n if (!_bufferFullMessageSent) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 67 /* _eInternalMessageId.SessionStorageBufferFull */, \"Maximum buffer size reached: \" + _self[_DYN_COUNT /* @min:%2ecount */](), true);\r\n _bufferFullMessageSent = true;\r\n }\r\n return;\r\n }\r\n _base[_DYN_ENQUEUE /* @min:%2eenqueue */](payload);\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._get());\r\n };\r\n _self[_DYN_CLEAR /* @min:%2eclear */] = function () {\r\n _base[_DYN_CLEAR /* @min:%2eclear */]();\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._get());\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], []);\r\n _bufferFullMessageSent = false;\r\n };\r\n _self[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */] = function (payload) {\r\n _setBuffer(SessionStorageSendBuffer[_DYN__BUFFER__KEY /* @min:%2eBUFFER_KEY */], _self._set(_removePayloadsFromBuffer(payload, _self._get())));\r\n var sentElements = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n if (sentElements instanceof Array && payload instanceof Array) {\r\n sentElements = sentElements.concat(payload);\r\n if (sentElements[_DYN_LENGTH /* @min:%2elength */] > SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */]) {\r\n // We send telemetry normally. If the SENT_BUFFER is too big we don't add new elements\r\n // until we receive a response from the backend and the buffer has free space again (see clearSent method)\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 67 /* _eInternalMessageId.SessionStorageBufferFull */, \"Sent buffer reached its maximum size: \" + sentElements[_DYN_LENGTH /* @min:%2elength */], true);\r\n sentElements[_DYN_LENGTH /* @min:%2elength */] = SessionStorageSendBuffer[_DYN__MAX__BUFFER__SIZE /* @min:%2eMAX_BUFFER_SIZE */];\r\n }\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], sentElements);\r\n }\r\n };\r\n _self[_DYN_CLEAR_SENT /* @min:%2eclearSent */] = function (payload) {\r\n var sentElements = _getBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */]);\r\n sentElements = _removePayloadsFromBuffer(payload, sentElements);\r\n _setBuffer(SessionStorageSendBuffer[_DYN__SENT__BUFFER__KEY /* @min:%2eSENT_BUFFER_KEY */], sentElements);\r\n };\r\n function _removePayloadsFromBuffer(payloads, buffer) {\r\n var remaining = [];\r\n arrForEach(buffer, function (value) {\r\n if (!isFunction(value) && arrIndexOf(payloads, value) === -1) {\r\n remaining[_DYN_PUSH /* @min:%2epush */](value);\r\n }\r\n });\r\n return remaining;\r\n }\r\n function _getBuffer(key) {\r\n var prefixedKey = key;\r\n try {\r\n prefixedKey = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() ? config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() + \"_\" + prefixedKey : prefixedKey;\r\n var bufferJson = utlGetSessionStorage(logger, prefixedKey);\r\n if (bufferJson) {\r\n var buffer_1 = getJSON().parse(bufferJson);\r\n if (isString(buffer_1)) {\r\n // When using some version prototype.js the stringify / parse cycle does not decode array's correctly\r\n buffer_1 = getJSON().parse(buffer_1);\r\n }\r\n if (buffer_1 && isArray(buffer_1)) {\r\n return buffer_1;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 42 /* _eInternalMessageId.FailedToRestoreStorageBuffer */, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n return [];\r\n }\r\n function _setBuffer(key, buffer) {\r\n var prefixedKey = key;\r\n try {\r\n prefixedKey = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() ? config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() + \"_\" + prefixedKey : prefixedKey;\r\n var bufferJson = JSON[_DYN_STRINGIFY /* @min:%2estringify */](buffer);\r\n utlSetSessionStorage(logger, prefixedKey, bufferJson);\r\n }\r\n catch (e) {\r\n // if there was an error, clear the buffer\r\n // telemetry is stored in the _buffer array so we won't loose any items\r\n utlSetSessionStorage(logger, prefixedKey, JSON[_DYN_STRINGIFY /* @min:%2estringify */]([]));\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 41 /* _eInternalMessageId.FailedToSetStorageBuffer */, \" storage key: \" + prefixedKey + \", \" + getExceptionName(e) + \". Buffer cleared\", { exception: dumpObj(e) });\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for SessionStorageSendBuffer.prototype.enqueue.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.clear.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.markAsSent.\r\n// Removed Stub for SessionStorageSendBuffer.prototype.clearSent.\r\n SessionStorageSendBuffer.BUFFER_KEY = \"AI_buffer\";\r\n SessionStorageSendBuffer.SENT_BUFFER_KEY = \"AI_sentBuffer\";\r\n // Maximum number of payloads stored in the buffer. If the buffer is full, new elements will be dropped.\r\n SessionStorageSendBuffer.MAX_BUFFER_SIZE = 2000;\r\n return SessionStorageSendBuffer;\r\n}(BaseSendBuffer));\r\nexport { SessionStorageSendBuffer };\r\n//# sourceMappingURL=SendBuffer.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nvar _a;\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BreezeChannelIdentifier, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, DisabledPropertyName, Event, Exception, Metric, PageView, PageViewPerformance, ProcessLegacy, RemoteDependencyData, RequestHeaders, SampleRate, Trace, isInternalApplicationInsightsEndpoint, utlCanUseSessionStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, _throwInternal, _warnToConsole, arrForEach, createUniqueNamespace, dateNow, dumpObj, getExceptionName, getIEVersion, getJSON, getNavigator, getWindow, isArray, isBeaconsSupported, isFetchSupported, isNullOrUndefined, isXhrSupported, mergeEvtNamespace, objForEachKey, objKeys, useXDomainRequest } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DependencyEnvelopeCreator, EventEnvelopeCreator, ExceptionEnvelopeCreator, MetricEnvelopeCreator, PageViewEnvelopeCreator, PageViewPerformanceEnvelopeCreator, TraceEnvelopeCreator } from \"./EnvelopeCreator\";\r\nimport { createOfflineListener } from \"./Offline\";\r\nimport { ArraySendBuffer, SessionStorageSendBuffer } from \"./SendBuffer\";\r\nimport { Serializer } from \"./Serializer\";\r\nimport { Sample } from \"./TelemetryProcessors/Sample\";\r\nimport { _DYN_BASE_TYPE, _DYN_BATCH_PAYLOADS, _DYN_CLEAR, _DYN_CLEAR_SENT, _DYN_CONVERT_UNDEFINED, _DYN_COUNT, _DYN_CUSTOM_HEADERS, _DYN_DIAG_LOG, _DYN_DISABLE_INSTRUMENTAT7, _DYN_DISABLE_TELEMETRY, _DYN_DISABLE_XHR, _DYN_EMIT_LINE_DELIMITED_0, _DYN_ENABLE_SESSION_STORA4, _DYN_ENDPOINT_URL, _DYN_ENQUEUE, _DYN_EVENTS_SEND_REQUEST, _DYN_INSTRUMENTATION_KEY, _DYN_IS_BEACON_API_DISABL3, _DYN_IS_RETRY_DISABLED, _DYN_ITEMS_ACCEPTED, _DYN_ITEMS_RECEIVED, _DYN_LENGTH, _DYN_MARK_AS_SENT, _DYN_MAX_BATCH_INTERVAL, _DYN_MAX_BATCH_SIZE_IN_BY1, _DYN_NAME_PREFIX, _DYN_ONUNLOAD_DISABLE_BEA2, _DYN_ONUNLOAD_DISABLE_FET5, _DYN_PUSH, _DYN_SAMPLE_RATE, _DYN_SAMPLING_PERCENTAGE, _DYN_SET_REQUEST_HEADER, _DYN_TAGS, _DYN_TRIGGER_SEND, _DYN__BUFFER, _DYN__ON_ERROR, _DYN__ON_PARTIAL_SUCCESS, _DYN__ON_SUCCESS, _DYN__SENDER, _DYN__SENDER_CONFIG, _DYN__XHR_READY_STATE_CHA6 } from \"./__DynamicConstants\";\r\nvar FetchSyncRequestSizeLimitBytes = 65000; // approx 64kb (the current Edge, Firefox and Chrome max limit)\r\nfunction _getResponseText(xhr) {\r\n try {\r\n return xhr.responseText;\r\n }\r\n catch (e) {\r\n // Best effort, as XHR may throw while XDR wont so just ignore\r\n }\r\n return null;\r\n}\r\nfunction _getDefaultAppInsightsChannelConfig() {\r\n var _a;\r\n var defaultValue;\r\n var defaultCustomHeaders;\r\n // set default values\r\n return _a = {\r\n endpointUrl: function () { return DEFAULT_BREEZE_ENDPOINT + DEFAULT_BREEZE_PATH; }\r\n },\r\n _a[_DYN_EMIT_LINE_DELIMITED_0 /* @min:emitLineDelimitedJson */] = function () { return false; },\r\n _a[_DYN_MAX_BATCH_INTERVAL /* @min:maxBatchInterval */] = function () { return 15000; },\r\n _a[_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:maxBatchSizeInBytes */] = function () { return 102400; },\r\n _a[_DYN_DISABLE_TELEMETRY /* @min:disableTelemetry */] = function () { return false; },\r\n _a[_DYN_ENABLE_SESSION_STORA4 /* @min:enableSessionStorageBuffer */] = function () { return true; },\r\n _a[_DYN_IS_RETRY_DISABLED /* @min:isRetryDisabled */] = function () { return false; },\r\n _a[_DYN_IS_BEACON_API_DISABL3 /* @min:isBeaconApiDisabled */] = function () { return true; },\r\n _a[_DYN_DISABLE_XHR /* @min:disableXhr */] = function () { return false; },\r\n _a[_DYN_ONUNLOAD_DISABLE_FET5 /* @min:onunloadDisableFetch */] = function () { return false; },\r\n _a[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:onunloadDisableBeacon */] = function () { return false; },\r\n _a[_DYN_INSTRUMENTATION_KEY /* @min:instrumentationKey */] = function () { return defaultValue; },\r\n _a[_DYN_NAME_PREFIX /* @min:namePrefix */] = function () { return defaultValue; },\r\n _a[_DYN_SAMPLING_PERCENTAGE /* @min:samplingPercentage */] = function () { return 100; },\r\n _a[_DYN_CUSTOM_HEADERS /* @min:customHeaders */] = function () { return defaultCustomHeaders; },\r\n _a[_DYN_CONVERT_UNDEFINED /* @min:convertUndefined */] = function () { return defaultValue; },\r\n _a.eventsLimitInMem = function () { return 10000; },\r\n _a;\r\n}\r\nvar EnvelopeTypeCreator = (_a = {},\r\n _a[Event.dataType] = EventEnvelopeCreator,\r\n _a[Trace.dataType] = TraceEnvelopeCreator,\r\n _a[PageView.dataType] = PageViewEnvelopeCreator,\r\n _a[PageViewPerformance.dataType] = PageViewPerformanceEnvelopeCreator,\r\n _a[Exception.dataType] = ExceptionEnvelopeCreator,\r\n _a[Metric.dataType] = MetricEnvelopeCreator,\r\n _a[RemoteDependencyData.dataType] = DependencyEnvelopeCreator,\r\n _a);\r\nvar Sender = /** @class */ (function (_super) {\r\n __extends(Sender, _super);\r\n function Sender() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 1001;\r\n _this.identifier = BreezeChannelIdentifier;\r\n /**\r\n * The configuration for this sender instance\r\n */\r\n _this._senderConfig = _getDefaultAppInsightsChannelConfig();\r\n // Don't set the defaults here, set them in the _initDefaults() as this is also called during unload\r\n var _consecutiveErrors; // How many times in a row a retryable error condition has occurred.\r\n var _retryAt; // The time to retry at in milliseconds from 1970/01/01 (this makes the timer calculation easy).\r\n var _lastSend; // The time of the last send operation.\r\n var _paused; // Flag indicating that the sending should be paused\r\n var _timeoutHandle; // Handle to the timer for delayed sending of batches of data.\r\n var _serializer;\r\n var _stamp_specific_redirects;\r\n var _headers;\r\n var _syncFetchPayload = 0; // Keep track of the outstanding sync fetch payload total (as sync fetch has limits)\r\n var _fallbackSender; // The sender to use if the payload size is too large\r\n var _syncUnloadSender; // The identified sender to use for the synchronous unload stage\r\n var _offlineListener;\r\n var _evtNamespace;\r\n dynamicProto(Sender, _this, function (_self, _base) {\r\n _initDefaults();\r\n _self.pause = function () {\r\n _clearScheduledTimer();\r\n _paused = true;\r\n };\r\n _self.resume = function () {\r\n if (_paused) {\r\n _paused = false;\r\n _retryAt = null;\r\n // flush if we have exceeded the max-size already\r\n if (_self._buffer.size() > _self._senderConfig[_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:%2emaxBatchSizeInBytes */]()) {\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 10 /* SendRequestReason.MaxBatchSize */);\r\n }\r\n _setupTimer();\r\n }\r\n };\r\n _self.flush = function (isAsync, callBack, sendReason) {\r\n if (isAsync === void 0) { isAsync = true; }\r\n if (!_paused) {\r\n // Clear the normal schedule timer as we are going to try and flush ASAP\r\n _clearScheduledTimer();\r\n try {\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](isAsync, null, sendReason || 1 /* SendRequestReason.ManualFlush */);\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 22 /* _eInternalMessageId.FlushFailed */, \"flush failed, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n };\r\n _self.onunloadFlush = function () {\r\n if (!_paused) {\r\n if ((_self._senderConfig[_DYN_ONUNLOAD_DISABLE_BEA2 /* @min:%2eonunloadDisableBeacon */]() === false || _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */]() === false) && isBeaconsSupported()) {\r\n try {\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, _doUnloadSend, 2 /* SendRequestReason.Unload */);\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 20 /* _eInternalMessageId.FailedToSendQueuedTelemetry */, \"failed to flush with beacon sender on page unload, telemetry will not be collected: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n else {\r\n _self.flush();\r\n }\r\n }\r\n };\r\n _self.addHeader = function (name, value) {\r\n _headers[name] = value;\r\n };\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (_self.isInitialized()) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender is already initialized\");\r\n }\r\n _base.initialize(config, core, extensions, pluginChain);\r\n var ctx = _self._getTelCtx();\r\n var identifier = _self.identifier;\r\n _serializer = new Serializer(core.logger);\r\n _consecutiveErrors = 0;\r\n _retryAt = null;\r\n _lastSend = 0;\r\n _self[_DYN__SENDER /* @min:%2e_sender */] = null;\r\n _stamp_specific_redirects = 0;\r\n var diagLog = _self[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"Sender\"), core.evtNamespace && core.evtNamespace());\r\n _offlineListener = createOfflineListener(_evtNamespace);\r\n // TODO v3.x: Change the ISenderConfig to not be function calls\r\n var defaultConfig = _getDefaultAppInsightsChannelConfig();\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][field] = function () {\r\n var theValue = ctx.getConfig(identifier, field, value());\r\n if (!theValue && field === \"endpointUrl\") {\r\n // Use the default value (handles empty string in the configuration)\r\n theValue = value();\r\n }\r\n return theValue;\r\n };\r\n });\r\n _self._buffer = (_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENABLE_SESSION_STORA4 /* @min:%2eenableSessionStorageBuffer */]() && utlCanUseSessionStorage())\r\n ? new SessionStorageSendBuffer(diagLog, _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */]) : new ArraySendBuffer(diagLog, _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */]);\r\n _self._sample = new Sample(_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_SAMPLING_PERCENTAGE /* @min:%2esamplingPercentage */](), diagLog);\r\n if (!_validateInstrumentationKey(config)) {\r\n _throwInternal(diagLog, 1 /* eLoggingSeverity.CRITICAL */, 100 /* _eInternalMessageId.InvalidInstrumentationKey */, \"Invalid Instrumentation key \" + config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]);\r\n }\r\n if (!isInternalApplicationInsightsEndpoint(_self._senderConfig.endpointUrl()) && _self._senderConfig.customHeaders() && _self._senderConfig.customHeaders()[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_CUSTOM_HEADERS /* @min:%2ecustomHeaders */](), function (customHeader) {\r\n _this.addHeader(customHeader.header, customHeader.value);\r\n });\r\n }\r\n var senderConfig = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */];\r\n var sendPostFunc = null;\r\n if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && useXDomainRequest()) {\r\n sendPostFunc = _xdrSender; // IE 8 and 9\r\n }\r\n else if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && isXhrSupported()) {\r\n sendPostFunc = _xhrSender;\r\n }\r\n if (!sendPostFunc && isFetchSupported()) {\r\n sendPostFunc = _fetchSender;\r\n }\r\n // always fallback to XHR\r\n _fallbackSender = sendPostFunc || _xhrSender;\r\n if (!senderConfig[_DYN_IS_BEACON_API_DISABL3 /* @min:%2eisBeaconApiDisabled */]() && isBeaconsSupported()) {\r\n // Config is set to always used beacon sending\r\n sendPostFunc = _beaconSender;\r\n }\r\n _self[_DYN__SENDER /* @min:%2e_sender */] = sendPostFunc || _xhrSender;\r\n if (!senderConfig[_DYN_ONUNLOAD_DISABLE_FET5 /* @min:%2eonunloadDisableFetch */]() && isFetchSupported(true)) {\r\n // Try and use the fetch with keepalive\r\n _syncUnloadSender = _fetchKeepAliveSender;\r\n }\r\n else if (isBeaconsSupported()) {\r\n // Try and use sendBeacon\r\n _syncUnloadSender = _beaconSender;\r\n }\r\n else if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && useXDomainRequest()) {\r\n _syncUnloadSender = _xdrSender; // IE 8 and 9\r\n }\r\n else if (!senderConfig[_DYN_DISABLE_XHR /* @min:%2edisableXhr */]() && isXhrSupported()) {\r\n _syncUnloadSender = _xhrSender;\r\n }\r\n else {\r\n _syncUnloadSender = _fallbackSender;\r\n }\r\n };\r\n _self.processTelemetry = function (telemetryItem, itemCtx) {\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n var diagLogger = itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */]();\r\n try {\r\n // if master off switch is set, don't send any data\r\n if (_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_DISABLE_TELEMETRY /* @min:%2edisableTelemetry */]()) {\r\n // Do not send/save data\r\n return;\r\n }\r\n // validate input\r\n if (!telemetryItem) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 7 /* _eInternalMessageId.CannotSendEmptyTelemetry */, \"Cannot send empty telemetry\");\r\n return;\r\n }\r\n // validate event\r\n if (telemetryItem.baseData && !telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */]) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 70 /* _eInternalMessageId.InvalidEvent */, \"Cannot send telemetry without baseData and baseType\");\r\n return;\r\n }\r\n if (!telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */]) {\r\n // Default\r\n telemetryItem[_DYN_BASE_TYPE /* @min:%2ebaseType */] = \"EventData\";\r\n }\r\n // ensure a sender was constructed\r\n if (!_self[_DYN__SENDER /* @min:%2e_sender */]) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 28 /* _eInternalMessageId.SenderNotInitialized */, \"Sender was not initialized\");\r\n return;\r\n }\r\n // check if this item should be sampled in, else add sampleRate tag\r\n if (!_isSampledIn(telemetryItem)) {\r\n // Item is sampled out, do not send it\r\n _throwInternal(diagLogger, 2 /* eLoggingSeverity.WARNING */, 33 /* _eInternalMessageId.TelemetrySampledAndNotSent */, \"Telemetry item was sampled out and not sent\", { SampleRate: _self._sample[_DYN_SAMPLE_RATE /* @min:%2esampleRate */] });\r\n return;\r\n }\r\n else {\r\n telemetryItem[SampleRate] = _self._sample[_DYN_SAMPLE_RATE /* @min:%2esampleRate */];\r\n }\r\n var convertUndefined = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_CONVERT_UNDEFINED /* @min:%2econvertUndefined */]() || undefined;\r\n // construct an envelope that Application Insights endpoint can understand\r\n // if ikey of telemetry is provided and not empty, envelope will use this iKey instead of senderConfig iKey\r\n var defaultEnvelopeIkey = telemetryItem.iKey || _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]();\r\n var aiEnvelope_1 = Sender.constructEnvelope(telemetryItem, defaultEnvelopeIkey, diagLogger, convertUndefined);\r\n if (!aiEnvelope_1) {\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 47 /* _eInternalMessageId.CreateEnvelopeError */, \"Unable to create an AppInsights envelope\");\r\n return;\r\n }\r\n var doNotSendItem_1 = false;\r\n // this is for running in legacy mode, where customer may already have a custom initializer present\r\n if (telemetryItem[_DYN_TAGS /* @min:%2etags */] && telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy]) {\r\n arrForEach(telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy], function (callBack) {\r\n try {\r\n if (callBack && callBack(aiEnvelope_1) === false) {\r\n doNotSendItem_1 = true;\r\n _warnToConsole(diagLogger, \"Telemetry processor check returns false\");\r\n }\r\n }\r\n catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n _throwInternal(diagLogger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n });\r\n delete telemetryItem[_DYN_TAGS /* @min:%2etags */][ProcessLegacy];\r\n }\r\n if (doNotSendItem_1) {\r\n return; // do not send, no need to execute next plugin\r\n }\r\n // check if the incoming payload is too large, truncate if necessary\r\n var payload = _serializer.serialize(aiEnvelope_1);\r\n // flush if we would exceed the max-size limit by adding this item\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n var bufferSize = buffer.size();\r\n if ((bufferSize + payload[_DYN_LENGTH /* @min:%2elength */]) > _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_MAX_BATCH_SIZE_IN_BY1 /* @min:%2emaxBatchSizeInBytes */]()) {\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 10 /* SendRequestReason.MaxBatchSize */);\r\n }\r\n // enqueue the payload\r\n buffer[_DYN_ENQUEUE /* @min:%2eenqueue */](payload);\r\n // ensure an invocation timeout is set\r\n _setupTimer();\r\n }\r\n catch (e) {\r\n _throwInternal(diagLogger, 2 /* eLoggingSeverity.WARNING */, 12 /* _eInternalMessageId.FailedAddingTelemetryToBuffer */, \"Failed adding telemetry to the sender's buffer, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n // hand off the telemetry item to the next plugin\r\n _self.processNext(telemetryItem, itemCtx);\r\n };\r\n /**\r\n * xhr state changes\r\n */\r\n _self[_DYN__XHR_READY_STATE_CHA6 /* @min:%2e_xhrReadyStateChange */] = function (xhr, payload, countOfItemsInPayload) {\r\n if (xhr.readyState === 4) {\r\n _checkResponsStatus(xhr.status, payload, xhr.responseURL, countOfItemsInPayload, _formatErrorMessageXhr(xhr), _getResponseText(xhr) || xhr.response);\r\n }\r\n };\r\n /**\r\n * Immediately send buffered data\r\n * @param async {boolean} - Indicates if the events should be sent asynchronously\r\n * @param forcedSender {SenderFunction} - Indicates the forcedSender, undefined if not passed\r\n */\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */] = function (async, forcedSender, sendReason) {\r\n if (async === void 0) { async = true; }\r\n if (!_paused) {\r\n try {\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n // Send data only if disableTelemetry is false\r\n if (!_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_DISABLE_TELEMETRY /* @min:%2edisableTelemetry */]()) {\r\n if (buffer[_DYN_COUNT /* @min:%2ecount */]() > 0) {\r\n var payload = buffer.getItems();\r\n _notifySendRequest(sendReason || 0 /* SendRequestReason.Undefined */, async);\r\n // invoke send\r\n if (forcedSender) {\r\n forcedSender.call(_this, payload, async);\r\n }\r\n else {\r\n _self[_DYN__SENDER /* @min:%2e_sender */](payload, async);\r\n }\r\n }\r\n // update lastSend time to enable throttling\r\n _lastSend = +new Date;\r\n }\r\n else {\r\n buffer[_DYN_CLEAR /* @min:%2eclear */]();\r\n }\r\n _clearScheduledTimer();\r\n }\r\n catch (e) {\r\n /* Ignore this error for IE under v10 */\r\n var ieVer = getIEVersion();\r\n if (!ieVer || ieVer > 9) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 40 /* _eInternalMessageId.TransmissionFailed */, \"Telemetry transmission failed, some telemetry will be lost: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n _self.onunloadFlush();\r\n _offlineListener.unload();\r\n _initDefaults();\r\n };\r\n /**\r\n * error handler\r\n */\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */] = function (payload, message, event) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 26 /* _eInternalMessageId.OnError */, \"Failed to send telemetry.\", { message: message });\r\n _self._buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n };\r\n /**\r\n * partial success handler\r\n */\r\n _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */] = function (payload, results) {\r\n var failed = [];\r\n var retry = [];\r\n // Iterate through the reversed array of errors so that splicing doesn't have invalid indexes after the first item.\r\n var errors = results.errors.reverse();\r\n for (var _i = 0, errors_1 = errors; _i < errors_1.length; _i++) {\r\n var error = errors_1[_i];\r\n var extracted = payload.splice(error.index, 1)[0];\r\n if (_isRetriable(error.statusCode)) {\r\n retry[_DYN_PUSH /* @min:%2epush */](extracted);\r\n }\r\n else {\r\n // All other errors, including: 402 (Monthly quota exceeded) and 439 (Too many requests and refresh cache).\r\n failed[_DYN_PUSH /* @min:%2epush */](extracted);\r\n }\r\n }\r\n if (payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */]);\r\n }\r\n if (failed[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](failed, _formatErrorMessageXhr(null, [\"partial success\", results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */], \"of\", results.itemsReceived].join(\" \")));\r\n }\r\n if (retry[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _resendPayload(retry);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \"Partial success. \" +\r\n \"Delivered: \" + payload[_DYN_LENGTH /* @min:%2elength */] + \", Failed: \" + failed[_DYN_LENGTH /* @min:%2elength */] +\r\n \". Will retry to send \" + retry[_DYN_LENGTH /* @min:%2elength */] + \" our of \" + results[_DYN_ITEMS_RECEIVED /* @min:%2eitemsReceived */] + \" items\");\r\n }\r\n };\r\n /**\r\n * success handler\r\n */\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */] = function (payload, countOfItemsInPayload) {\r\n _self._buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n };\r\n /**\r\n * xdr state changes\r\n */\r\n _self._xdrOnLoad = function (xdr, payload) {\r\n var responseText = _getResponseText(xdr);\r\n if (xdr && (responseText + \"\" === \"200\" || responseText === \"\")) {\r\n _consecutiveErrors = 0;\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, 0);\r\n }\r\n else {\r\n var results = _parseResponse(responseText);\r\n if (results && results.itemsReceived && results.itemsReceived > results[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */]\r\n && !_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]()) {\r\n _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */](payload, results);\r\n }\r\n else {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, _formatErrorMessageXdr(xdr));\r\n }\r\n }\r\n };\r\n function _isSampledIn(envelope) {\r\n return _self._sample.isSampledIn(envelope);\r\n }\r\n function _checkResponsStatus(status, payload, responseUrl, countOfItemsInPayload, errorMessage, res) {\r\n var response = null;\r\n if (!_self._appId) {\r\n response = _parseResponse(res);\r\n if (response && response.appId) {\r\n _self._appId = response.appId;\r\n }\r\n }\r\n if ((status < 200 || status >= 300) && status !== 0) {\r\n // Update End Point url if permanent redirect or moved permanently\r\n // Updates the end point url before retry\r\n if (status === 301 || status === 307 || status === 308) {\r\n if (!_checkAndUpdateEndPointUrl(responseUrl)) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n return;\r\n }\r\n }\r\n if (!_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]() && _isRetriable(status)) {\r\n _resendPayload(payload);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" +\r\n \"Response code \" + status + \". Will retry to send \" + payload[_DYN_LENGTH /* @min:%2elength */] + \" items.\");\r\n }\r\n else {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n }\r\n }\r\n else if (_offlineListener && !_offlineListener.isOnline()) { // offline\r\n // Note: Don't check for status == 0, since adblock gives this code\r\n if (!_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]()) {\r\n var offlineBackOffMultiplier = 10; // arbritrary number\r\n _resendPayload(payload, offlineBackOffMultiplier);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". Offline - Response Code: \".concat(status, \". Offline status: \").concat(!_offlineListener.isOnline(), \". Will retry to send \").concat(payload.length, \" items.\"));\r\n }\r\n }\r\n else {\r\n // check if the xhr's responseURL or fetch's response.url is same as endpoint url\r\n // TODO after 10 redirects force send telemetry with 'redirect=false' as query parameter.\r\n _checkAndUpdateEndPointUrl(responseUrl);\r\n if (status === 206) {\r\n if (!response) {\r\n response = _parseResponse(res);\r\n }\r\n if (response && !_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_IS_RETRY_DISABLED /* @min:%2eisRetryDisabled */]()) {\r\n _self[_DYN__ON_PARTIAL_SUCCESS /* @min:%2e_onPartialSuccess */](payload, response);\r\n }\r\n else {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, errorMessage);\r\n }\r\n }\r\n else {\r\n _consecutiveErrors = 0;\r\n _self[_DYN__ON_SUCCESS /* @min:%2e_onSuccess */](payload, countOfItemsInPayload);\r\n }\r\n }\r\n }\r\n function _checkAndUpdateEndPointUrl(responseUrl) {\r\n // Maximum stamp specific redirects allowed(uncomment this when breeze is ready with not allowing redirects feature)\r\n if (_stamp_specific_redirects >= 10) {\r\n // _self._senderConfig.endpointUrl = () => Sender._getDefaultAppInsightsChannelConfig().endpointUrl()+\"/?redirect=false\";\r\n // _stamp_specific_redirects = 0;\r\n return false;\r\n }\r\n if (!isNullOrUndefined(responseUrl) && responseUrl !== \"\") {\r\n if (responseUrl !== _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]()) {\r\n _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */] = function () { return responseUrl; };\r\n ++_stamp_specific_redirects;\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n function _doUnloadSend(payload, isAsync) {\r\n if (_syncUnloadSender) {\r\n // We are unloading so always call the sender with sync set to false\r\n _syncUnloadSender(payload, false);\r\n }\r\n else {\r\n // Fallback to the previous beacon Sender (which causes a CORB warning on chrome now)\r\n _beaconSender(payload, isAsync);\r\n }\r\n }\r\n function _doBeaconSend(payload) {\r\n var nav = getNavigator();\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n var url = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]();\r\n var batch = _self._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n // Chrome only allows CORS-safelisted values for the sendBeacon data argument\r\n // see: https://bugs.chromium.org/p/chromium/issues/detail?id=720283\r\n var plainTextBatch = new Blob([batch], { type: \"text/plain;charset=UTF-8\" });\r\n // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n var queued = nav.sendBeacon(url, plainTextBatch);\r\n if (queued) {\r\n buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n // no response from beaconSender, clear buffer\r\n _self._onSuccess(payload, payload[_DYN_LENGTH /* @min:%2elength */]);\r\n }\r\n return queued;\r\n }\r\n /**\r\n * Send Beacon API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - not used\r\n * Note: Beacon API does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n function _beaconSender(payload, isAsync) {\r\n if (isArray(payload) && payload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // The sendBeacon method returns true if the user agent is able to successfully queue the data for transfer. Otherwise it returns false.\r\n if (!_doBeaconSend(payload)) {\r\n // Failed to send entire payload so try and split data and try to send as much events as possible\r\n var droppedPayload = [];\r\n for (var lp = 0; lp < payload[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n var thePayload = payload[lp];\r\n if (!_doBeaconSend([thePayload])) {\r\n // Can't send anymore, so split the batch and drop the rest\r\n droppedPayload[_DYN_PUSH /* @min:%2epush */](thePayload);\r\n }\r\n }\r\n if (droppedPayload[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _fallbackSender && _fallbackSender(droppedPayload, true);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with normal sender.\");\r\n }\r\n }\r\n }\r\n }\r\n /**\r\n * Send XMLHttpRequest\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n */\r\n function _xhrSender(payload, isAsync) {\r\n var xhr = new XMLHttpRequest();\r\n var endPointUrl = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]();\r\n try {\r\n xhr[DisabledPropertyName] = true;\r\n }\r\n catch (e) {\r\n // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n // cause the request to fail and we no telemetry would be sent\r\n }\r\n xhr.open(\"POST\", endPointUrl, isAsync);\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](\"Content-type\", \"application/json\");\r\n // append Sdk-Context request header only in case of breeze endpoint\r\n if (isInternalApplicationInsightsEndpoint(endPointUrl)) {\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[6 /* eRequestHeaders.sdkContextHeader */], RequestHeaders[7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */]);\r\n }\r\n arrForEach(objKeys(_headers), function (headerName) {\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](headerName, _headers[headerName]);\r\n });\r\n xhr.onreadystatechange = function () { return _self._xhrReadyStateChange(xhr, payload, payload[_DYN_LENGTH /* @min:%2elength */]); };\r\n xhr.onerror = function (event) { return _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, _formatErrorMessageXhr(xhr), event); };\r\n // compose an array of payloads\r\n var batch = _self._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n xhr.send(batch);\r\n _self._buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n }\r\n function _fetchKeepAliveSender(payload, isAsync) {\r\n if (isArray(payload)) {\r\n var payloadSize = payload[_DYN_LENGTH /* @min:%2elength */];\r\n for (var lp = 0; lp < payload[_DYN_LENGTH /* @min:%2elength */]; lp++) {\r\n payloadSize += payload[lp][_DYN_LENGTH /* @min:%2elength */];\r\n }\r\n if ((_syncFetchPayload + payloadSize) <= FetchSyncRequestSizeLimitBytes) {\r\n _doFetchSender(payload, false);\r\n }\r\n else if (isBeaconsSupported()) {\r\n // Fallback to beacon sender as we at least get told which events can't be scheduled\r\n _beaconSender(payload, isAsync);\r\n }\r\n else {\r\n // Payload is going to be too big so just try and send via XHR\r\n _fallbackSender && _fallbackSender(payload, true);\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" + \"Failed to send telemetry with Beacon API, retried with xhrSender.\");\r\n }\r\n }\r\n }\r\n /**\r\n * Send fetch API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - not used\r\n */\r\n function _fetchSender(payload, isAsync) {\r\n _doFetchSender(payload, true);\r\n }\r\n /**\r\n * Send fetch API request\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - For fetch this identifies whether we are \"unloading\" (false) or a normal request\r\n */\r\n function _doFetchSender(payload, isAsync) {\r\n var _a;\r\n var endPointUrl = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]();\r\n var batch = _self._buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n var plainTextBatch = new Blob([batch], { type: \"application/json\" });\r\n var requestHeaders = new Headers();\r\n var batchLength = batch[_DYN_LENGTH /* @min:%2elength */];\r\n var ignoreResponse = false;\r\n var responseHandled = false;\r\n // append Sdk-Context request header only in case of breeze endpoint\r\n if (isInternalApplicationInsightsEndpoint(endPointUrl)) {\r\n requestHeaders.append(RequestHeaders[6 /* eRequestHeaders.sdkContextHeader */], RequestHeaders[7 /* eRequestHeaders.sdkContextHeaderAppIdRequest */]);\r\n }\r\n arrForEach(objKeys(_headers), function (headerName) {\r\n requestHeaders.append(headerName, _headers[headerName]);\r\n });\r\n var init = (_a = {\r\n method: \"POST\",\r\n headers: requestHeaders,\r\n body: plainTextBatch\r\n },\r\n _a[DisabledPropertyName] = true // Mark so we don't attempt to track this request\r\n ,\r\n _a);\r\n if (!isAsync) {\r\n init.keepalive = true;\r\n // As a sync request (during unload), it is unlikely that we will get a chance to process the response so\r\n // just like beacon send assume that the events have been accepted and processed\r\n ignoreResponse = true;\r\n _syncFetchPayload += batchLength;\r\n }\r\n var request = new Request(endPointUrl, init);\r\n try {\r\n // Also try and tag the request (just in case the value in init is not copied over)\r\n request[DisabledPropertyName] = true;\r\n }\r\n catch (e) {\r\n // If the environment has locked down the XMLHttpRequest (preventExtensions and/or freeze), this would\r\n // cause the request to fail and we no telemetry would be sent\r\n }\r\n _self._buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n try {\r\n fetch(request).then(function (response) {\r\n if (!isAsync) {\r\n _syncFetchPayload -= batchLength;\r\n batchLength = 0;\r\n }\r\n if (!responseHandled) {\r\n responseHandled = true;\r\n /**\r\n * The Promise returned from fetch() won’t reject on HTTP error status even if the response is an HTTP 404 or 500.\r\n * Instead, it will resolve normally (with ok status set to false), and it will only reject on network failure\r\n * or if anything prevented the request from completing.\r\n */\r\n if (!response.ok) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, response.statusText);\r\n }\r\n else {\r\n response.text().then(function (text) {\r\n _checkResponsStatus(response.status, payload, response.url, payload[_DYN_LENGTH /* @min:%2elength */], response.statusText, text);\r\n });\r\n }\r\n }\r\n })[\"catch\"](function (error) {\r\n if (!isAsync) {\r\n _syncFetchPayload -= batchLength;\r\n batchLength = 0;\r\n }\r\n if (!responseHandled) {\r\n responseHandled = true;\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, error.message);\r\n }\r\n });\r\n }\r\n catch (e) {\r\n if (!responseHandled) {\r\n _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, dumpObj(e));\r\n }\r\n }\r\n if (ignoreResponse && !responseHandled) {\r\n // Assume success during unload processing as we most likely won't get the response\r\n responseHandled = true;\r\n _self._onSuccess(payload, payload[_DYN_LENGTH /* @min:%2elength */]);\r\n }\r\n }\r\n /**\r\n * Parses the response from the backend.\r\n * @param response - XMLHttpRequest or XDomainRequest response\r\n */\r\n function _parseResponse(response) {\r\n try {\r\n if (response && response !== \"\") {\r\n var result = getJSON().parse(response);\r\n if (result && result.itemsReceived && result.itemsReceived >= result[_DYN_ITEMS_ACCEPTED /* @min:%2eitemsAccepted */] &&\r\n result.itemsReceived - result.itemsAccepted === result.errors[_DYN_LENGTH /* @min:%2elength */]) {\r\n return result;\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 43 /* _eInternalMessageId.InvalidBackendResponse */, \"Cannot parse the response. \" + getExceptionName(e), {\r\n response: response\r\n });\r\n }\r\n return null;\r\n }\r\n /**\r\n * Resend payload. Adds payload back to the send buffer and setup a send timer (with exponential backoff).\r\n * @param payload\r\n */\r\n function _resendPayload(payload, linearFactor) {\r\n if (linearFactor === void 0) { linearFactor = 1; }\r\n if (!payload || payload[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n return;\r\n }\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n buffer[_DYN_CLEAR_SENT /* @min:%2eclearSent */](payload);\r\n _consecutiveErrors++;\r\n for (var _i = 0, payload_1 = payload; _i < payload_1.length; _i++) {\r\n var item = payload_1[_i];\r\n buffer[_DYN_ENQUEUE /* @min:%2eenqueue */](item);\r\n }\r\n // setup timer\r\n _setRetryTime(linearFactor);\r\n _setupTimer();\r\n }\r\n /**\r\n * Calculates the time to wait before retrying in case of an error based on\r\n * http://en.wikipedia.org/wiki/Exponential_backoff\r\n */\r\n function _setRetryTime(linearFactor) {\r\n var SlotDelayInSeconds = 10;\r\n var delayInSeconds;\r\n if (_consecutiveErrors <= 1) {\r\n delayInSeconds = SlotDelayInSeconds;\r\n }\r\n else {\r\n var backOffSlot = (Math.pow(2, _consecutiveErrors) - 1) / 2;\r\n // tslint:disable-next-line:insecure-random\r\n var backOffDelay = Math.floor(Math.random() * backOffSlot * SlotDelayInSeconds) + 1;\r\n backOffDelay = linearFactor * backOffDelay;\r\n delayInSeconds = Math.max(Math.min(backOffDelay, 3600), SlotDelayInSeconds);\r\n }\r\n // TODO: Log the backoff time like the C# version does.\r\n var retryAfterTimeSpan = dateNow() + (delayInSeconds * 1000);\r\n // TODO: Log the retry at time like the C# version does.\r\n _retryAt = retryAfterTimeSpan;\r\n }\r\n /**\r\n * Sets up the timer which triggers actually sending the data.\r\n */\r\n function _setupTimer() {\r\n if (!_timeoutHandle && !_paused) {\r\n var retryInterval = _retryAt ? Math.max(0, _retryAt - dateNow()) : 0;\r\n var timerValue = Math.max(_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_MAX_BATCH_INTERVAL /* @min:%2emaxBatchInterval */](), retryInterval);\r\n _timeoutHandle = setTimeout(function () {\r\n _timeoutHandle = null;\r\n _self[_DYN_TRIGGER_SEND /* @min:%2etriggerSend */](true, null, 1 /* SendRequestReason.NormalSchedule */);\r\n }, timerValue);\r\n }\r\n }\r\n function _clearScheduledTimer() {\r\n clearTimeout(_timeoutHandle);\r\n _timeoutHandle = null;\r\n _retryAt = null;\r\n }\r\n /**\r\n * Checks if the SDK should resend the payload after receiving this status code from the backend.\r\n * @param statusCode\r\n */\r\n function _isRetriable(statusCode) {\r\n return statusCode === 401 // Unauthorized\r\n || statusCode === 403 // Forbidden\r\n || statusCode === 408 // Timeout\r\n || statusCode === 429 // Too many requests.\r\n || statusCode === 500 // Internal server error.\r\n || statusCode === 502 // Bad Gateway.\r\n || statusCode === 503 // Service unavailable.\r\n || statusCode === 504; // Gateway timeout.\r\n }\r\n function _formatErrorMessageXhr(xhr, message) {\r\n if (xhr) {\r\n return \"XMLHttpRequest,Status:\" + xhr.status + \",Response:\" + _getResponseText(xhr) || xhr.response || \"\";\r\n }\r\n return message;\r\n }\r\n /**\r\n * Send XDomainRequest\r\n * @param payload {string} - The data payload to be sent.\r\n * @param isAsync {boolean} - Indicates if the request should be sent asynchronously\r\n *\r\n * Note: XDomainRequest does not support sync requests. This 'isAsync' parameter is added\r\n * to maintain consistency with the xhrSender's contract\r\n * Note: XDomainRequest does not support custom headers and we are not able to get\r\n * appId from the backend for the correct correlation.\r\n */\r\n function _xdrSender(payload, isAsync) {\r\n var buffer = _self[_DYN__BUFFER /* @min:%2e_buffer */];\r\n var _window = getWindow();\r\n var xdr = new XDomainRequest();\r\n xdr.onload = function () { return _self._xdrOnLoad(xdr, payload); };\r\n xdr.onerror = function (event) { return _self[_DYN__ON_ERROR /* @min:%2e_onError */](payload, _formatErrorMessageXdr(xdr), event); };\r\n // XDomainRequest requires the same protocol as the hosting page.\r\n // If the protocol doesn't match, we can't send the telemetry :(.\r\n var hostingProtocol = _window && _window.location && _window.location.protocol || \"\";\r\n if (_self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]().lastIndexOf(hostingProtocol, 0) !== 0) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 2 /* eLoggingSeverity.WARNING */, 40 /* _eInternalMessageId.TransmissionFailed */, \". \" +\r\n \"Cannot send XDomain request. The endpoint URL protocol doesn't match the hosting page protocol.\");\r\n buffer[_DYN_CLEAR /* @min:%2eclear */]();\r\n return;\r\n }\r\n var endpointUrl = _self[_DYN__SENDER_CONFIG /* @min:%2e_senderConfig */][_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]().replace(/^(https?:)/, \"\");\r\n xdr.open(\"POST\", endpointUrl);\r\n // compose an array of payloads\r\n var batch = buffer[_DYN_BATCH_PAYLOADS /* @min:%2ebatchPayloads */](payload);\r\n xdr.send(batch);\r\n buffer[_DYN_MARK_AS_SENT /* @min:%2emarkAsSent */](payload);\r\n }\r\n function _formatErrorMessageXdr(xdr, message) {\r\n if (xdr) {\r\n return \"XDomainRequest,Response:\" + _getResponseText(xdr) || \"\";\r\n }\r\n return message;\r\n }\r\n // Using function lookups for backward compatibility as the getNotifyMgr() did not exist until after v2.5.6\r\n function _getNotifyMgr() {\r\n var func = \"getNotifyMgr\";\r\n if (_self.core[func]) {\r\n return _self.core[func]();\r\n }\r\n // using _self.core['_notificationManager'] for backward compatibility\r\n return _self.core[\"_notificationManager\"];\r\n }\r\n function _notifySendRequest(sendRequest, isAsync) {\r\n var manager = _getNotifyMgr();\r\n if (manager && manager[_DYN_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */]) {\r\n try {\r\n manager[_DYN_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */](sendRequest, isAsync);\r\n }\r\n catch (e) {\r\n _throwInternal(_self[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 74 /* _eInternalMessageId.NotificationException */, \"send request notification failed: \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n }\r\n /**\r\n * Validate UUID Format\r\n * Specs taken from https://tools.ietf.org/html/rfc4122 and breeze repo\r\n */\r\n function _validateInstrumentationKey(config) {\r\n var disableIKeyValidationFlag = isNullOrUndefined(config[_DYN_DISABLE_INSTRUMENTAT7 /* @min:%2edisableInstrumentationKeyValidation */]) ? false : config[_DYN_DISABLE_INSTRUMENTAT7 /* @min:%2edisableInstrumentationKeyValidation */];\r\n if (disableIKeyValidationFlag) {\r\n return true;\r\n }\r\n var UUID_Regex = \"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\";\r\n var regexp = new RegExp(UUID_Regex);\r\n return regexp.test(config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]);\r\n }\r\n function _initDefaults() {\r\n _self[_DYN__SENDER /* @min:%2e_sender */] = null;\r\n _self[_DYN__BUFFER /* @min:%2e_buffer */] = null;\r\n _self._appId = null;\r\n _self._sample = null;\r\n _headers = {};\r\n _offlineListener = null;\r\n _consecutiveErrors = 0;\r\n _retryAt = null;\r\n _lastSend = null;\r\n _paused = false;\r\n _timeoutHandle = null;\r\n _serializer = null;\r\n _stamp_specific_redirects = 0;\r\n _syncFetchPayload = 0;\r\n _fallbackSender = null;\r\n _syncUnloadSender = null;\r\n _evtNamespace = null;\r\n }\r\n });\r\n return _this;\r\n }\r\n Sender.constructEnvelope = function (orig, iKey, logger, convertUndefined) {\r\n var envelope;\r\n if (iKey !== orig.iKey && !isNullOrUndefined(iKey)) {\r\n envelope = __assign(__assign({}, orig), { iKey: iKey });\r\n }\r\n else {\r\n envelope = orig;\r\n }\r\n var creator = EnvelopeTypeCreator[envelope.baseType] || EventEnvelopeCreator;\r\n return creator(logger, envelope, convertUndefined);\r\n };\r\n// Removed Stub for Sender.prototype.pause.\r\n// Removed Stub for Sender.prototype.resume.\r\n// Removed Stub for Sender.prototype.flush.\r\n// Removed Stub for Sender.prototype.onunloadFlush.\r\n// Removed Stub for Sender.prototype.initialize.\r\n// Removed Stub for Sender.prototype.processTelemetry.\r\n// Removed Stub for Sender.prototype._xhrReadyStateChange.\r\n// Removed Stub for Sender.prototype.triggerSend.\r\n// Removed Stub for Sender.prototype._onError.\r\n// Removed Stub for Sender.prototype._onPartialSuccess.\r\n// Removed Stub for Sender.prototype._onSuccess.\r\n// Removed Stub for Sender.prototype._xdrOnLoad.\r\n// Removed Stub for Sender.prototype.addHeader.\r\n return Sender;\r\n}(BaseTelemetryPlugin));\r\nexport { Sender };\r\n//# sourceMappingURL=Sender.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _throwInternal, getJSON, isArray, isFunction, isObject, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_LENGTH, _DYN_PUSH, _DYN_STRINGIFY, _DYN_TO_STRING } from \"./__DynamicConstants\";\r\nvar Serializer = /** @class */ (function () {\r\n function Serializer(logger) {\r\n dynamicProto(Serializer, this, function (_self) {\r\n /**\r\n * Serializes the current object to a JSON string.\r\n */\r\n _self.serialize = function (input) {\r\n var output = _serializeObject(input, \"root\");\r\n try {\r\n return getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](output);\r\n }\r\n catch (e) {\r\n // if serialization fails return an empty string\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, (e && isFunction(e[_DYN_TO_STRING /* @min:%2etoString */])) ? e[_DYN_TO_STRING /* @min:%2etoString */]() : \"Error serializing object\", null, true);\r\n }\r\n };\r\n function _serializeObject(source, name) {\r\n var circularReferenceCheck = \"__aiCircularRefCheck\";\r\n var output = {};\r\n if (!source) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, \"cannot serialize object because it is null or undefined\", { name: name }, true);\r\n return output;\r\n }\r\n if (source[circularReferenceCheck]) {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 50 /* _eInternalMessageId.CircularReferenceDetected */, \"Circular reference detected while serializing object\", { name: name }, true);\r\n return output;\r\n }\r\n if (!source.aiDataContract) {\r\n // special case for measurements/properties/tags\r\n if (name === \"measurements\") {\r\n output = _serializeStringMap(source, \"number\", name);\r\n }\r\n else if (name === \"properties\") {\r\n output = _serializeStringMap(source, \"string\", name);\r\n }\r\n else if (name === \"tags\") {\r\n output = _serializeStringMap(source, \"string\", name);\r\n }\r\n else if (isArray(source)) {\r\n output = _serializeArray(source, name);\r\n }\r\n else {\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 49 /* _eInternalMessageId.CannotSerializeObjectNonSerializable */, \"Attempting to serialize an object which does not implement ISerializable\", { name: name }, true);\r\n try {\r\n // verify that the object can be stringified\r\n getJSON()[_DYN_STRINGIFY /* @min:%2estringify */](source);\r\n output = source;\r\n }\r\n catch (e) {\r\n // if serialization fails return an empty string\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 48 /* _eInternalMessageId.CannotSerializeObject */, (e && isFunction(e[_DYN_TO_STRING /* @min:%2etoString */])) ? e[_DYN_TO_STRING /* @min:%2etoString */]() : \"Error serializing object\", null, true);\r\n }\r\n }\r\n return output;\r\n }\r\n source[circularReferenceCheck] = true;\r\n objForEachKey(source.aiDataContract, function (field, contract) {\r\n var isRequired = (isFunction(contract)) ? (contract() & 1 /* FieldType.Required */) : (contract & 1 /* FieldType.Required */);\r\n var isHidden = (isFunction(contract)) ? (contract() & 4 /* FieldType.Hidden */) : (contract & 4 /* FieldType.Hidden */);\r\n var isArray = contract & 2 /* FieldType.Array */;\r\n var isPresent = source[field] !== undefined;\r\n var isObj = isObject(source[field]) && source[field] !== null;\r\n if (isRequired && !isPresent && !isArray) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 24 /* _eInternalMessageId.MissingRequiredFieldSpecification */, \"Missing required field specification. The field is required but not present on source\", { field: field, name: name });\r\n // If not in debug mode, continue and hope the error is permissible\r\n }\r\n else if (!isHidden) { // Don't serialize hidden fields\r\n var value = void 0;\r\n if (isObj) {\r\n if (isArray) {\r\n // special case; recurse on each object in the source array\r\n value = _serializeArray(source[field], field);\r\n }\r\n else {\r\n // recurse on the source object in this field\r\n value = _serializeObject(source[field], field);\r\n }\r\n }\r\n else {\r\n // assign the source field to the output even if undefined or required\r\n value = source[field];\r\n }\r\n // only emit this field if the value is defined\r\n if (value !== undefined) {\r\n output[field] = value;\r\n }\r\n }\r\n });\r\n delete source[circularReferenceCheck];\r\n return output;\r\n }\r\n function _serializeArray(sources, name) {\r\n var output;\r\n if (!!sources) {\r\n if (!isArray(sources)) {\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, 54 /* _eInternalMessageId.ItemNotInArray */, \"This field was specified as an array in the contract but the item is not an array.\\r\\n\", { name: name }, true);\r\n }\r\n else {\r\n output = [];\r\n for (var i = 0; i < sources[_DYN_LENGTH /* @min:%2elength */]; i++) {\r\n var source = sources[i];\r\n var item = _serializeObject(source, name + \"[\" + i + \"]\");\r\n output[_DYN_PUSH /* @min:%2epush */](item);\r\n }\r\n }\r\n }\r\n return output;\r\n }\r\n function _serializeStringMap(map, expectedType, name) {\r\n var output;\r\n if (map) {\r\n output = {};\r\n objForEachKey(map, function (field, value) {\r\n if (expectedType === \"string\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n }\r\n else if (value === null) {\r\n output[field] = \"null\";\r\n }\r\n else if (!value[_DYN_TO_STRING /* @min:%2etoString */]) {\r\n output[field] = \"invalid field: toString() is not defined.\";\r\n }\r\n else {\r\n output[field] = value[_DYN_TO_STRING /* @min:%2etoString */]();\r\n }\r\n }\r\n else if (expectedType === \"number\") {\r\n if (value === undefined) {\r\n output[field] = \"undefined\";\r\n }\r\n else if (value === null) {\r\n output[field] = \"null\";\r\n }\r\n else {\r\n var num = parseFloat(value);\r\n if (isNaN(num)) {\r\n output[field] = \"NaN\";\r\n }\r\n else {\r\n output[field] = num;\r\n }\r\n }\r\n }\r\n else {\r\n output[field] = \"invalid field: \" + name + \" is of unknown type.\";\r\n _throwInternal(logger, 1 /* eLoggingSeverity.CRITICAL */, output[field], null, true);\r\n }\r\n });\r\n }\r\n return output;\r\n }\r\n });\r\n }\r\n// Removed Stub for Serializer.prototype.serialize.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n Serializer.__ieDyn=1;\n\n return Serializer;\r\n}());\r\nexport { Serializer };\r\n//# sourceMappingURL=Serializer.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_LENGTH } from \"../../__DynamicConstants\";\r\n// (Magic number) DJB algorithm can't work on shorter strings (results in poor distribution\r\nvar MIN_INPUT_LENGTH = 8;\r\nvar HashCodeScoreGenerator = /** @class */ (function () {\r\n function HashCodeScoreGenerator() {\r\n }\r\n HashCodeScoreGenerator.prototype.getHashCodeScore = function (key) {\r\n var score = this.getHashCode(key) / HashCodeScoreGenerator.INT_MAX_VALUE;\r\n return score * 100;\r\n };\r\n HashCodeScoreGenerator.prototype.getHashCode = function (input) {\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n while (input[_DYN_LENGTH /* @min:%2elength */] < MIN_INPUT_LENGTH) {\r\n input = input.concat(input);\r\n }\r\n // 5381 is a magic number: http://stackoverflow.com/questions/10696223/reason-for-5381-number-in-djb-hash-function\r\n var hash = 5381;\r\n for (var i = 0; i < input[_DYN_LENGTH /* @min:%2elength */]; ++i) {\r\n hash = ((hash << 5) + hash) + input.charCodeAt(i);\r\n // 'hash' is of number type which means 53 bit integer (http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types-number-type)\r\n // 'hash & hash' will keep it 32 bit integer - just to make it clearer what the result is.\r\n hash = hash & hash;\r\n }\r\n return Math.abs(hash);\r\n };\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n HashCodeScoreGenerator.INT_MAX_VALUE = 2147483647;\r\n return HashCodeScoreGenerator;\r\n}());\r\nexport { HashCodeScoreGenerator };\r\n//# sourceMappingURL=HashCodeScoreGenerator.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { ContextTagKeys } from \"@microsoft/applicationinsights-common\";\r\nimport { _DYN_GET_HASH_CODE_SCORE, _DYN_GET_SAMPLING_SCORE, _DYN_TAGS, _DYN_TRACE_ID } from \"../../__DynamicConstants\";\r\nimport { HashCodeScoreGenerator } from \"./HashCodeScoreGenerator\";\r\nvar SamplingScoreGenerator = /** @class */ (function () {\r\n function SamplingScoreGenerator() {\r\n var _self = this;\r\n var hashCodeGenerator = new HashCodeScoreGenerator();\r\n var keys = new ContextTagKeys();\r\n _self[_DYN_GET_SAMPLING_SCORE /* @min:%2egetSamplingScore */] = function (item) {\r\n var score = 0;\r\n if (item[_DYN_TAGS /* @min:%2etags */] && item[_DYN_TAGS /* @min:%2etags */][keys.userId]) { // search in tags first, then ext\r\n score = hashCodeGenerator.getHashCodeScore(item[_DYN_TAGS /* @min:%2etags */][keys.userId]);\r\n }\r\n else if (item.ext && item.ext.user && item.ext.user.id) {\r\n score = hashCodeGenerator[_DYN_GET_HASH_CODE_SCORE /* @min:%2egetHashCodeScore */](item.ext.user.id);\r\n }\r\n else if (item[_DYN_TAGS /* @min:%2etags */] && item[_DYN_TAGS /* @min:%2etags */][keys.operationId]) { // search in tags first, then ext\r\n score = hashCodeGenerator.getHashCodeScore(item[_DYN_TAGS /* @min:%2etags */][keys.operationId]);\r\n }\r\n else if (item.ext && item.ext.telemetryTrace && item.ext.telemetryTrace[_DYN_TRACE_ID /* @min:%2etraceID */]) {\r\n score = hashCodeGenerator.getHashCodeScore(item.ext.telemetryTrace[_DYN_TRACE_ID /* @min:%2etraceID */]);\r\n }\r\n else {\r\n // tslint:disable-next-line:insecure-random\r\n score = (Math.random() * 100);\r\n }\r\n return score;\r\n };\r\n }\r\n return SamplingScoreGenerator;\r\n}());\r\nexport { SamplingScoreGenerator };\r\n//# sourceMappingURL=SamplingScoreGenerator.js.map","/*\n * Application Insights JavaScript SDK - Channel, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { Metric } from \"@microsoft/applicationinsights-common\";\r\nimport { safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_DATA_TYPE, _DYN_GET_SAMPLING_SCORE, _DYN_SAMPLE_RATE } from \"../__DynamicConstants\";\r\nimport { SamplingScoreGenerator } from \"./SamplingScoreGenerators/SamplingScoreGenerator\";\r\nvar Sample = /** @class */ (function () {\r\n function Sample(sampleRate, logger) {\r\n // We're using 32 bit math, hence max value is (2^31 - 1)\r\n this.INT_MAX_VALUE = 2147483647;\r\n var _logger = logger || safeGetLogger(null);\r\n if (sampleRate > 100 || sampleRate < 0) {\r\n _logger.throwInternal(2 /* eLoggingSeverity.WARNING */, 58 /* _eInternalMessageId.SampleRateOutOfRange */, \"Sampling rate is out of range (0..100). Sampling will be disabled, you may be sending too much data which may affect your AI service level.\", { samplingRate: sampleRate }, true);\r\n sampleRate = 100;\r\n }\r\n this[_DYN_SAMPLE_RATE /* @min:%2esampleRate */] = sampleRate;\r\n this.samplingScoreGenerator = new SamplingScoreGenerator();\r\n }\r\n /**\r\n * Determines if an envelope is sampled in (i.e. will be sent) or not (i.e. will be dropped).\r\n */\r\n Sample.prototype.isSampledIn = function (envelope) {\r\n var samplingPercentage = this[_DYN_SAMPLE_RATE /* @min:%2esampleRate */]; // 0 - 100\r\n var isSampledIn = false;\r\n if (samplingPercentage === null || samplingPercentage === undefined || samplingPercentage >= 100) {\r\n return true;\r\n }\r\n else if (envelope.baseType === Metric[_DYN_DATA_TYPE /* @min:%2edataType */]) {\r\n // exclude MetricData telemetry from sampling\r\n return true;\r\n }\r\n isSampledIn = this.samplingScoreGenerator[_DYN_GET_SAMPLING_SCORE /* @min:%2egetSamplingScore */](envelope) < samplingPercentage;\r\n return isSampledIn;\r\n };\r\n return Sample;\r\n}());\r\nexport { Sample };\r\n//# sourceMappingURL=Sample.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { arrReduce, objKeys } from \"@microsoft/applicationinsights-core-js\";\r\nimport { DEFAULT_BREEZE_ENDPOINT } from \"./Constants\";\r\nimport { _DYN_INGESTIONENDPOINT, _DYN_LENGTH, _DYN_SPLIT, _DYN_TO_LOWER_CASE } from \"./__DynamicConstants\";\r\nvar _FIELDS_SEPARATOR = \";\";\r\nvar _FIELD_KEY_VALUE_SEPARATOR = \"=\";\r\nexport function parseConnectionString(connectionString) {\r\n if (!connectionString) {\r\n return {};\r\n }\r\n var kvPairs = connectionString[_DYN_SPLIT /* @min:%2esplit */](_FIELDS_SEPARATOR);\r\n var result = arrReduce(kvPairs, function (fields, kv) {\r\n var kvParts = kv[_DYN_SPLIT /* @min:%2esplit */](_FIELD_KEY_VALUE_SEPARATOR);\r\n if (kvParts[_DYN_LENGTH /* @min:%2elength */] === 2) { // only save fields with valid formats\r\n var key = kvParts[0][_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n var value = kvParts[1];\r\n fields[key] = value;\r\n }\r\n return fields;\r\n }, {});\r\n if (objKeys(result)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n // this is a valid connection string, so parse the results\r\n if (result.endpointsuffix) {\r\n // use endpoint suffix where overrides are not provided\r\n var locationPrefix = result.location ? result.location + \".\" : \"\";\r\n result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] || (\"https://\" + locationPrefix + \"dc.\" + result.endpointsuffix);\r\n }\r\n // apply the default endpoints\r\n result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] = result[_DYN_INGESTIONENDPOINT /* @min:%2eingestionendpoint */] || DEFAULT_BREEZE_ENDPOINT;\r\n }\r\n return result;\r\n}\r\nexport var ConnectionStringParser = {\r\n parse: parseConnectionString\r\n};\r\n//# sourceMappingURL=ConnectionStringParser.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { createEnumStyle } from \"@microsoft/applicationinsights-core-js\";\r\n/**\r\n * Defines the level of severity for the event.\r\n */\r\nexport var SeverityLevel = createEnumStyle({\r\n Verbose: 0 /* eSeverityLevel.Verbose */,\r\n Information: 1 /* eSeverityLevel.Information */,\r\n Warning: 2 /* eSeverityLevel.Warning */,\r\n Error: 3 /* eSeverityLevel.Error */,\r\n Critical: 4 /* eSeverityLevel.Critical */\r\n});\r\n//# sourceMappingURL=SeverityLevel.js.map","/*\n * Application Insights JavaScript SDK - Common, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { isNullOrUndefined } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_EXTENSION_CONFIG } from \"../__DynamicConstants\";\r\nvar ConfigurationManager = /** @class */ (function () {\r\n function ConfigurationManager() {\r\n }\r\n ConfigurationManager.getConfig = function (config, field, identifier, defaultValue) {\r\n if (defaultValue === void 0) { defaultValue = false; }\r\n var configValue;\r\n if (identifier && config[_DYN_EXTENSION_CONFIG /* @min:%2eextensionConfig */] && config[_DYN_EXTENSION_CONFIG /* @min:%2eextensionConfig */][identifier] && !isNullOrUndefined(config[_DYN_EXTENSION_CONFIG /* @min:%2eextensionConfig */][identifier][field])) {\r\n configValue = config[_DYN_EXTENSION_CONFIG /* @min:%2eextensionConfig */][identifier][field];\r\n }\r\n else {\r\n configValue = config[field];\r\n }\r\n return !isNullOrUndefined(configValue) ? configValue : defaultValue;\r\n };\r\n return ConfigurationManager;\r\n}());\r\nexport { ConfigurationManager };\r\n//# sourceMappingURL=IConfig.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n// \r\nimport { _DYN_CONFIG, _DYN_CREATE_NEW, _DYN_FLUSH, _DYN_IDENTIFIER, _DYN_LENGTH, _DYN_ON_COMPLETE, _DYN_PROCESS_NEXT, _DYN_PUSH } from \"../__DynamicConstants\";\r\nimport { arrForEach, isArray, objFreeze, throwError } from \"./HelperFuncs\";\r\nimport { STR_PRIORITY } from \"./InternalConstants\";\r\nimport { createProcessTelemetryContext, createTelemetryProxyChain } from \"./ProcessTelemetryContext\";\r\nimport { initializePlugins } from \"./TelemetryHelpers\";\r\nexport var ChannelControllerPriority = 500;\r\nvar ChannelValidationMessage = \"Channel has invalid priority - \";\r\nfunction _addChannelQueue(channelQueue, queue, core) {\r\n if (queue && isArray(queue) && queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n queue = queue.sort(function (a, b) {\r\n return a[STR_PRIORITY /* @min:%2epriority */] - b[STR_PRIORITY /* @min:%2epriority */];\r\n });\r\n arrForEach(queue, function (queueItem) {\r\n if (queueItem[STR_PRIORITY /* @min:%2epriority */] < ChannelControllerPriority) {\r\n throwError(ChannelValidationMessage + queueItem[_DYN_IDENTIFIER /* @min:%2eidentifier */]);\r\n }\r\n });\r\n channelQueue[_DYN_PUSH /* @min:%2epush */]({\r\n queue: objFreeze(queue),\r\n chain: createTelemetryProxyChain(queue, core[_DYN_CONFIG /* @min:%2econfig */], core)\r\n });\r\n }\r\n}\r\nexport function createChannelControllerPlugin(channelQueue, core) {\r\n function _getTelCtx() {\r\n return createProcessTelemetryContext(null, core[_DYN_CONFIG /* @min:%2econfig */], core, null);\r\n }\r\n function _processChannelQueue(theChannels, itemCtx, processFn, onComplete) {\r\n var waiting = theChannels ? (theChannels[_DYN_LENGTH /* @min:%2elength */] + 1) : 1;\r\n function _runChainOnComplete() {\r\n waiting--;\r\n if (waiting === 0) {\r\n onComplete && onComplete();\r\n onComplete = null;\r\n }\r\n }\r\n if (waiting > 0) {\r\n arrForEach(theChannels, function (channels) {\r\n // pass on to first item in queue\r\n if (channels && channels.queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var channelChain = channels.chain;\r\n var chainCtx = itemCtx[_DYN_CREATE_NEW /* @min:%2ecreateNew */](channelChain);\r\n chainCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](_runChainOnComplete);\r\n // Cause this chain to start processing\r\n processFn(chainCtx);\r\n }\r\n else {\r\n waiting--;\r\n }\r\n });\r\n }\r\n _runChainOnComplete();\r\n }\r\n function _doUpdate(updateCtx, updateState) {\r\n var theUpdateState = updateState || {\r\n reason: 0 /* TelemetryUpdateReason.Unknown */\r\n };\r\n _processChannelQueue(channelQueue, updateCtx, function (chainCtx) {\r\n chainCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUpdateState);\r\n }, function () {\r\n updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUpdateState);\r\n });\r\n return true;\r\n }\r\n function _doTeardown(unloadCtx, unloadState) {\r\n var theUnloadState = unloadState || {\r\n reason: 0 /* TelemetryUnloadReason.ManualTeardown */,\r\n isAsync: false\r\n };\r\n _processChannelQueue(channelQueue, unloadCtx, function (chainCtx) {\r\n chainCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n }, function () {\r\n unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](theUnloadState);\r\n isInitialized = false;\r\n });\r\n return true;\r\n }\r\n function _getChannel(pluginIdentifier) {\r\n var thePlugin = null;\r\n if (channelQueue && channelQueue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(channelQueue, function (channels) {\r\n // pass on to first item in queue\r\n if (channels && channels.queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n arrForEach(channels.queue, function (ext) {\r\n if (ext[_DYN_IDENTIFIER /* @min:%2eidentifier */] === pluginIdentifier) {\r\n thePlugin = ext;\r\n // Cause arrForEach to stop iterating\r\n return -1;\r\n }\r\n });\r\n if (thePlugin) {\r\n // Cause arrForEach to stop iterating\r\n return -1;\r\n }\r\n }\r\n });\r\n }\r\n return thePlugin;\r\n }\r\n var isInitialized = false;\r\n var channelController = {\r\n identifier: \"ChannelControllerPlugin\",\r\n priority: ChannelControllerPriority,\r\n initialize: function (config, core, extensions, pluginChain) {\r\n isInitialized = true;\r\n arrForEach(channelQueue, function (channels) {\r\n if (channels && channels.queue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n initializePlugins(createProcessTelemetryContext(channels.chain, config, core), extensions);\r\n }\r\n });\r\n },\r\n isInitialized: function () {\r\n return isInitialized;\r\n },\r\n processTelemetry: function (item, itemCtx) {\r\n _processChannelQueue(channelQueue, itemCtx || _getTelCtx(), function (chainCtx) {\r\n chainCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item);\r\n }, function () {\r\n itemCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item);\r\n });\r\n },\r\n update: _doUpdate,\r\n pause: function () {\r\n _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n chainCtx.iterate(function (plugin) {\r\n plugin.pause && plugin.pause();\r\n });\r\n }, null);\r\n },\r\n resume: function () {\r\n _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n chainCtx.iterate(function (plugin) {\r\n plugin.resume && plugin.resume();\r\n });\r\n }, null);\r\n },\r\n teardown: _doTeardown,\r\n getChannel: _getChannel,\r\n flush: function (isAsync, callBack, sendReason, cbTimeout) {\r\n // Setting waiting to one so that we don't call the callBack until we finish iterating\r\n var waiting = 1;\r\n var doneIterating = false;\r\n var cbTimer = null;\r\n cbTimeout = cbTimeout || 5000;\r\n function doCallback() {\r\n waiting--;\r\n if (doneIterating && waiting === 0) {\r\n if (cbTimer) {\r\n clearTimeout(cbTimer);\r\n cbTimer = null;\r\n }\r\n callBack && callBack(doneIterating);\r\n callBack = null;\r\n }\r\n }\r\n _processChannelQueue(channelQueue, _getTelCtx(), function (chainCtx) {\r\n chainCtx.iterate(function (plugin) {\r\n if (plugin[_DYN_FLUSH /* @min:%2eflush */]) {\r\n waiting++;\r\n var handled_1 = false;\r\n // Not all channels will call this callback for every scenario\r\n if (!plugin[_DYN_FLUSH /* @min:%2eflush */](isAsync, function () {\r\n handled_1 = true;\r\n doCallback();\r\n }, sendReason)) {\r\n if (!handled_1) {\r\n // If any channel doesn't return true and it didn't call the callback, then we should assume that the callback\r\n // will never be called, so use a timeout to allow the channel(s) some time to \"finish\" before triggering any\r\n // followup function (such as unloading)\r\n if (isAsync && cbTimer == null) {\r\n cbTimer = setTimeout(function () {\r\n cbTimer = null;\r\n doCallback();\r\n }, cbTimeout);\r\n }\r\n else {\r\n doCallback();\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }, function () {\r\n doneIterating = true;\r\n doCallback();\r\n });\r\n return true;\r\n },\r\n _setQueue: function (queue) {\r\n channelQueue = queue;\r\n }\r\n };\r\n return channelController;\r\n}\r\nexport function createChannelQueues(channels, extensions, core) {\r\n var channelQueue = [];\r\n if (channels) {\r\n // Add and sort the configuration channel queues\r\n arrForEach(channels, function (queue) { return _addChannelQueue(channelQueue, queue, core); });\r\n }\r\n if (extensions) {\r\n // Create a new channel queue for any extensions with a priority > the ChannelControllerPriority\r\n var extensionQueue_1 = [];\r\n arrForEach(extensions, function (plugin) {\r\n if (plugin[STR_PRIORITY /* @min:%2epriority */] > ChannelControllerPriority) {\r\n extensionQueue_1[_DYN_PUSH /* @min:%2epush */](plugin);\r\n }\r\n });\r\n _addChannelQueue(channelQueue, extensionQueue_1, core);\r\n }\r\n return channelQueue;\r\n}\r\n//# sourceMappingURL=ChannelController.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n// \r\n// \r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_APPLY, _DYN_DIAG_LOG, _DYN_LENGTH, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_SPLICE, _DYN__DO_TEARDOWN } from \"../__DynamicConstants\";\r\nimport { BaseTelemetryPlugin } from \"./BaseTelemetryPlugin\";\r\nimport { _throwInternal } from \"./DiagnosticLogger\";\r\nimport { dumpObj } from \"./EnvUtils\";\r\nimport { arrForEach, getExceptionName } from \"./HelperFuncs\";\r\nimport { STR_PROCESS_TELEMETRY } from \"./InternalConstants\";\r\nvar TelemetryInitializerPlugin = /** @class */ (function (_super) {\r\n __extends(TelemetryInitializerPlugin, _super);\r\n function TelemetryInitializerPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = \"TelemetryInitializerPlugin\";\r\n _this.priority = 199;\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _id;\r\n var _initializers;\r\n _initDefaults();\r\n dynamicProto(TelemetryInitializerPlugin, _this, function (_self, _base) {\r\n _self.addTelemetryInitializer = function (telemetryInitializer) {\r\n var theInitializer = {\r\n id: _id++,\r\n fn: telemetryInitializer\r\n };\r\n _initializers[_DYN_PUSH /* @min:%2epush */](theInitializer);\r\n var handler = {\r\n remove: function () {\r\n arrForEach(_initializers, function (initializer, idx) {\r\n if (initializer.id === theInitializer.id) {\r\n _initializers[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n return -1;\r\n }\r\n });\r\n }\r\n };\r\n return handler;\r\n };\r\n _self[STR_PROCESS_TELEMETRY /* @min:%2eprocessTelemetry */] = function (item, itemCtx) {\r\n var doNotSendItem = false;\r\n var telemetryInitializersCount = _initializers[_DYN_LENGTH /* @min:%2elength */];\r\n for (var i = 0; i < telemetryInitializersCount; ++i) {\r\n var telemetryInitializer = _initializers[i];\r\n if (telemetryInitializer) {\r\n try {\r\n if (telemetryInitializer.fn[_DYN_APPLY /* @min:%2eapply */](null, [item]) === false) {\r\n doNotSendItem = true;\r\n break;\r\n }\r\n }\r\n catch (e) {\r\n // log error but dont stop executing rest of the telemetry initializers\r\n // doNotSendItem = true;\r\n _throwInternal(itemCtx[_DYN_DIAG_LOG /* @min:%2ediagLog */](), 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"One of telemetry initializers failed, telemetry item will not be sent: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n }\r\n }\r\n if (!doNotSendItem) {\r\n _self[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](item, itemCtx);\r\n }\r\n };\r\n _self[_DYN__DO_TEARDOWN /* @min:%2e_doTeardown */] = function () {\r\n _initDefaults();\r\n };\r\n });\r\n function _initDefaults() {\r\n _id = 0;\r\n _initializers = [];\r\n }\r\n return _this;\r\n }\r\n// Removed Stub for TelemetryInitializerPlugin.prototype.addTelemetryInitializer.\r\n// Removed Stub for TelemetryInitializerPlugin.prototype.processTelemetry.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n TelemetryInitializerPlugin.__ieDyn=1;\n\n return TelemetryInitializerPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport { TelemetryInitializerPlugin };\r\n//# sourceMappingURL=TelemetryInitializerPlugin.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport { __spreadArrayFn as __spreadArray } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { objCreateFn } from \"@microsoft/applicationinsights-shims\";\r\nimport { _DYN_ADD_NOTIFICATION_LIS1, _DYN_CONFIG, _DYN_FLUSH, _DYN_GET_NOTIFY_MGR, _DYN_GET_PLUGIN, _DYN_GET_PROCESS_TEL_CONT0, _DYN_IDENTIFIER, _DYN_INITIALIZE, _DYN_INSTRUMENTATION_KEY, _DYN_IS_ASYNC, _DYN_IS_INITIALIZED, _DYN_LENGTH, _DYN_LOGGER, _DYN_MESSAGE, _DYN_MESSAGE_ID, _DYN_NAME, _DYN_ON_COMPLETE, _DYN_PROCESS_NEXT, _DYN_PUSH, _DYN_REMOVE_NOTIFICATION_2, _DYN_SET_ENABLED, _DYN_SPLICE, _DYN_STOP_POLLING_INTERNA3, _DYN_TEARDOWN, _DYN_TIME, _DYN__EXTENSIONS } from \"../__DynamicConstants\";\r\nimport { ChannelControllerPriority, createChannelControllerPlugin, createChannelQueues } from \"./ChannelController\";\r\nimport { createCookieMgr } from \"./CookieMgr\";\r\nimport { createUniqueNamespace } from \"./DataCacheHelper\";\r\nimport { getDebugListener } from \"./DbgExtensionUtils\";\r\nimport { DiagnosticLogger, _InternalLogMessage, _throwInternal, _warnToConsole } from \"./DiagnosticLogger\";\r\nimport { arrForEach, arrIndexOf, getCfgValue, getSetValue, isFunction, isNullOrUndefined, objExtend, objFreeze, proxyFunctionAs, proxyFunctions, throwError, toISOString } from \"./HelperFuncs\";\r\nimport { STR_CHANNELS, STR_CORE, STR_CREATE_PERF_MGR, STR_DISABLED, STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_EVENTS_SENT, STR_EXTENSIONS, STR_EXTENSION_CONFIG, STR_GET_PERF_MGR, STR_PRIORITY } from \"./InternalConstants\";\r\nimport { PerfManager, getGblPerfMgr } from \"./PerfManager\";\r\nimport { createProcessTelemetryContext, createProcessTelemetryUnloadContext, createProcessTelemetryUpdateContext, createTelemetryProxyChain } from \"./ProcessTelemetryContext\";\r\nimport { _getPluginState, createDistributedTraceContext, initializePlugins, sortPlugins } from \"./TelemetryHelpers\";\r\nimport { TelemetryInitializerPlugin } from \"./TelemetryInitializerPlugin\";\r\nimport { createUnloadHandlerContainer } from \"./UnloadHandlerContainer\";\r\nvar strValidationError = \"Plugins must provide initialize method\";\r\nvar strNotificationManager = \"_notificationManager\";\r\nvar strSdkUnloadingError = \"SDK is still unloading...\";\r\nvar strSdkNotInitialized = \"SDK is not initialized\";\r\n// const strPluginUnloadFailed = \"Failed to unload plugin\";\r\nvar defaultInitConfig = {\r\n // Have the Diagnostic Logger default to log critical errors to the console\r\n loggingLevelConsole: 1 /* eLoggingSeverity.CRITICAL */\r\n};\r\n/**\r\n * Helper to create the default performance manager\r\n * @param core\r\n * @param notificationMgr\r\n */\r\nfunction _createPerfManager(core, notificationMgr) {\r\n return new PerfManager(notificationMgr);\r\n}\r\nfunction _validateExtensions(logger, channelPriority, allExtensions) {\r\n var _a;\r\n // Concat all available extensions\r\n var coreExtensions = [];\r\n // Check if any two extensions have the same priority, then warn to console\r\n // And extract the local extensions from the\r\n var extPriorities = {};\r\n // Extension validation\r\n arrForEach(allExtensions, function (ext) {\r\n // Check for ext.initialize\r\n if (isNullOrUndefined(ext) || isNullOrUndefined(ext[_DYN_INITIALIZE /* @min:%2einitialize */])) {\r\n throwError(strValidationError);\r\n }\r\n var extPriority = ext[STR_PRIORITY /* @min:%2epriority */];\r\n var identifier = ext[_DYN_IDENTIFIER /* @min:%2eidentifier */];\r\n if (ext && extPriority) {\r\n if (!isNullOrUndefined(extPriorities[extPriority])) {\r\n _warnToConsole(logger, \"Two extensions have same priority #\" + extPriority + \" - \" + extPriorities[extPriority] + \", \" + identifier);\r\n }\r\n else {\r\n // set a value\r\n extPriorities[extPriority] = identifier;\r\n }\r\n }\r\n // Split extensions to core and channelController\r\n if (!extPriority || extPriority < channelPriority) {\r\n // Add to core extension that will be managed by BaseCore\r\n coreExtensions[_DYN_PUSH /* @min:%2epush */](ext);\r\n }\r\n });\r\n return _a = {\r\n all: allExtensions\r\n },\r\n _a[STR_CORE /* @min:core */] = coreExtensions,\r\n _a;\r\n}\r\nfunction _isPluginPresent(thePlugin, plugins) {\r\n var exists = false;\r\n arrForEach(plugins, function (plugin) {\r\n if (plugin === thePlugin) {\r\n exists = true;\r\n return -1;\r\n }\r\n });\r\n return exists;\r\n}\r\nfunction _createDummyNotificationManager() {\r\n var _a;\r\n return objCreateFn((_a = {},\r\n _a[_DYN_ADD_NOTIFICATION_LIS1 /* @min:addNotificationListener */] = function (listener) { },\r\n _a[_DYN_REMOVE_NOTIFICATION_2 /* @min:removeNotificationListener */] = function (listener) { },\r\n _a[STR_EVENTS_SENT /* @min:eventsSent */] = function (events) { },\r\n _a[STR_EVENTS_DISCARDED /* @min:eventsDiscarded */] = function (events, reason) { },\r\n _a[STR_EVENTS_SEND_REQUEST /* @min:eventsSendRequest */] = function (sendReason, isAsync) { },\r\n _a));\r\n}\r\nvar BaseCore = /** @class */ (function () {\r\n function BaseCore() {\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var _config;\r\n var _isInitialized;\r\n var _eventQueue;\r\n var _notificationManager;\r\n var _perfManager;\r\n var _cfgPerfManager;\r\n var _cookieManager;\r\n var _pluginChain;\r\n var _configExtensions;\r\n var _coreExtensions;\r\n var _channelControl;\r\n var _channelConfig;\r\n var _channelQueue;\r\n var _isUnloading;\r\n var _telemetryInitializerPlugin;\r\n var _internalLogsEventName;\r\n var _evtNamespace;\r\n var _unloadHandlers;\r\n var _debugListener;\r\n var _traceCtx;\r\n /**\r\n * Internal log poller\r\n */\r\n var _internalLogPoller = 0;\r\n dynamicProto(BaseCore, this, function (_self) {\r\n // Set the default values (also called during teardown)\r\n _initDefaults();\r\n _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */] = function () { return _isInitialized; };\r\n // Creating the self.initialize = ()\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, extensions, logger, notificationManager) {\r\n if (_isUnloading) {\r\n throwError(strSdkUnloadingError);\r\n }\r\n // Make sure core is only initialized once\r\n if (_self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]()) {\r\n throwError(\"Core should not be initialized more than once\");\r\n }\r\n _config = config || {};\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = _config;\r\n if (isNullOrUndefined(config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */])) {\r\n throwError(\"Please provide instrumentation key\");\r\n }\r\n _notificationManager = notificationManager;\r\n // For backward compatibility only\r\n _self[strNotificationManager] = notificationManager;\r\n _initDebugListener();\r\n _initPerfManager();\r\n // add notification to the extensions in the config so other plugins can access it\r\n _initExtConfig();\r\n if (logger) {\r\n _self[_DYN_LOGGER /* @min:%2elogger */] = logger;\r\n }\r\n var cfgExtensions = getSetValue(_config, STR_EXTENSIONS, []);\r\n // Extension validation\r\n _configExtensions = [];\r\n _configExtensions[_DYN_PUSH /* @min:%2epush */].apply(_configExtensions, __spreadArray(__spreadArray([], extensions, false), cfgExtensions, false));\r\n _channelConfig = getSetValue(_config, STR_CHANNELS, []);\r\n _initPluginChain(null);\r\n if (!_channelQueue || _channelQueue[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n throwError(\"No \" + STR_CHANNELS + \" available\");\r\n }\r\n _isInitialized = true;\r\n _self.releaseQueue();\r\n };\r\n _self.getTransmissionControls = function () {\r\n var controls = [];\r\n if (_channelQueue) {\r\n arrForEach(_channelQueue, function (channels) {\r\n controls[_DYN_PUSH /* @min:%2epush */](channels.queue);\r\n });\r\n }\r\n return objFreeze(controls);\r\n };\r\n _self.track = function (telemetryItem) {\r\n // setup default iKey if not passed in\r\n telemetryItem.iKey = telemetryItem.iKey || _config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n // add default timestamp if not passed in\r\n telemetryItem[_DYN_TIME /* @min:%2etime */] = telemetryItem[_DYN_TIME /* @min:%2etime */] || toISOString(new Date());\r\n // Common Schema 4.0\r\n telemetryItem.ver = telemetryItem.ver || \"4.0\";\r\n if (!_isUnloading && _self[_DYN_IS_INITIALIZED /* @min:%2eisInitialized */]()) {\r\n // Process the telemetry plugin chain\r\n _createTelCtx()[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](telemetryItem);\r\n }\r\n else {\r\n // Queue events until all extensions are initialized\r\n _eventQueue[_DYN_PUSH /* @min:%2epush */](telemetryItem);\r\n }\r\n };\r\n _self[_DYN_GET_PROCESS_TEL_CONT0 /* @min:%2egetProcessTelContext */] = _createTelCtx;\r\n _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */] = function () {\r\n if (!_notificationManager) {\r\n // Create Dummy notification manager\r\n _notificationManager = _createDummyNotificationManager();\r\n // For backward compatibility only\r\n _self[strNotificationManager] = _notificationManager;\r\n }\r\n return _notificationManager;\r\n };\r\n /**\r\n * Adds a notification listener. The SDK calls methods on the listener when an appropriate notification is raised.\r\n * The added plugins must raise notifications. If the plugins do not implement the notifications, then no methods will be\r\n * called.\r\n * @param {INotificationListener} listener - An INotificationListener object.\r\n */\r\n _self[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */] = function (listener) {\r\n if (_notificationManager) {\r\n _notificationManager[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */](listener);\r\n }\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - INotificationListener to remove.\r\n */\r\n _self[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */] = function (listener) {\r\n if (_notificationManager) {\r\n _notificationManager[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */](listener);\r\n }\r\n };\r\n _self.getCookieMgr = function () {\r\n if (!_cookieManager) {\r\n _cookieManager = createCookieMgr(_config, _self[_DYN_LOGGER /* @min:%2elogger */]);\r\n }\r\n return _cookieManager;\r\n };\r\n _self.setCookieMgr = function (cookieMgr) {\r\n _cookieManager = cookieMgr;\r\n };\r\n _self[STR_GET_PERF_MGR /* @min:%2egetPerfMgr */] = function () {\r\n if (!_perfManager && !_cfgPerfManager) {\r\n if (getCfgValue(_config.enablePerfMgr)) {\r\n var createPerfMgr = getCfgValue(_config[STR_CREATE_PERF_MGR /* @min:%2ecreatePerfMgr */]);\r\n if (isFunction(createPerfMgr)) {\r\n _cfgPerfManager = createPerfMgr(_self, _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */]());\r\n }\r\n }\r\n }\r\n return _perfManager || _cfgPerfManager || getGblPerfMgr();\r\n };\r\n _self.setPerfMgr = function (perfMgr) {\r\n _perfManager = perfMgr;\r\n };\r\n _self.eventCnt = function () {\r\n return _eventQueue[_DYN_LENGTH /* @min:%2elength */];\r\n };\r\n _self.releaseQueue = function () {\r\n if (_isInitialized && _eventQueue[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var eventQueue = _eventQueue;\r\n _eventQueue = [];\r\n arrForEach(eventQueue, function (event) {\r\n _createTelCtx()[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](event);\r\n });\r\n }\r\n };\r\n /**\r\n * Periodically check logger.queue for log messages to be flushed\r\n */\r\n _self.pollInternalLogs = function (eventName) {\r\n _internalLogsEventName = eventName || null;\r\n var interval = getCfgValue(_config.diagnosticLogInterval);\r\n if (!interval || !(interval > 0)) {\r\n interval = 10000;\r\n }\r\n if (_internalLogPoller) {\r\n clearInterval(_internalLogPoller);\r\n }\r\n _internalLogPoller = setInterval(function () {\r\n _flushInternalLogs();\r\n }, interval);\r\n return _internalLogPoller;\r\n };\r\n /**\r\n * Stop polling log messages from logger.queue\r\n */\r\n _self[_DYN_STOP_POLLING_INTERNA3 /* @min:%2estopPollingInternalLogs */] = function () {\r\n if (_internalLogPoller) {\r\n clearInterval(_internalLogPoller);\r\n _internalLogPoller = 0;\r\n _flushInternalLogs();\r\n }\r\n };\r\n // Add addTelemetryInitializer\r\n proxyFunctions(_self, function () { return _telemetryInitializerPlugin; }, [\"addTelemetryInitializer\"]);\r\n _self.unload = function (isAsync, unloadComplete, cbTimeout) {\r\n var _a;\r\n if (isAsync === void 0) { isAsync = true; }\r\n if (!_isInitialized) {\r\n // The SDK is not initialized\r\n throwError(strSdkNotInitialized);\r\n }\r\n // Check if the SDK still unloading so throw\r\n if (_isUnloading) {\r\n // The SDK is already unloading\r\n throwError(strSdkUnloadingError);\r\n }\r\n var unloadState = (_a = {\r\n reason: 50 /* TelemetryUnloadReason.SdkUnload */\r\n },\r\n _a[_DYN_IS_ASYNC /* @min:isAsync */] = isAsync,\r\n _a.flushComplete = false,\r\n _a);\r\n var processUnloadCtx = createProcessTelemetryUnloadContext(_getPluginChain(), _self);\r\n processUnloadCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](function () {\r\n _initDefaults();\r\n unloadComplete && unloadComplete(unloadState);\r\n }, _self);\r\n function _doUnload(flushComplete) {\r\n unloadState.flushComplete = flushComplete;\r\n _isUnloading = true;\r\n // Run all of the unload handlers first (before unloading the plugins)\r\n _unloadHandlers.run(processUnloadCtx, unloadState);\r\n // Stop polling the internal logs\r\n _self[_DYN_STOP_POLLING_INTERNA3 /* @min:%2estopPollingInternalLogs */]();\r\n // Start unloading the components, from this point onwards the SDK should be considered to be in an unstable state\r\n processUnloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n }\r\n if (!_flushChannels(isAsync, _doUnload, 6 /* SendRequestReason.SdkUnload */, cbTimeout)) {\r\n _doUnload(false);\r\n }\r\n };\r\n _self[_DYN_GET_PLUGIN /* @min:%2egetPlugin */] = _getPlugin;\r\n _self.addPlugin = function (plugin, replaceExisting, isAsync, addCb) {\r\n if (!plugin) {\r\n addCb && addCb(false);\r\n _logOrThrowError(strValidationError);\r\n return;\r\n }\r\n var existingPlugin = _getPlugin(plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */]);\r\n if (existingPlugin && !replaceExisting) {\r\n addCb && addCb(false);\r\n _logOrThrowError(\"Plugin [\" + plugin[_DYN_IDENTIFIER /* @min:%2eidentifier */] + \"] is already loaded!\");\r\n return;\r\n }\r\n var updateState = {\r\n reason: 16 /* TelemetryUpdateReason.PluginAdded */\r\n };\r\n function _addPlugin(removed) {\r\n _configExtensions[_DYN_PUSH /* @min:%2epush */](plugin);\r\n updateState.added = [plugin];\r\n // Re-Initialize the plugin chain\r\n _initPluginChain(updateState);\r\n addCb && addCb(true);\r\n }\r\n if (existingPlugin) {\r\n var removedPlugins_1 = [existingPlugin.plugin];\r\n var unloadState = {\r\n reason: 2 /* TelemetryUnloadReason.PluginReplace */,\r\n isAsync: !!isAsync\r\n };\r\n _removePlugins(removedPlugins_1, unloadState, function (removed) {\r\n if (!removed) {\r\n // Previous plugin was successfully removed or was not installed\r\n addCb && addCb(false);\r\n }\r\n else {\r\n updateState.removed = removedPlugins_1;\r\n updateState.reason |= 32 /* TelemetryUpdateReason.PluginRemoved */;\r\n _addPlugin(true);\r\n }\r\n });\r\n }\r\n else {\r\n _addPlugin(false);\r\n }\r\n };\r\n _self.evtNamespace = function () {\r\n return _evtNamespace;\r\n };\r\n _self[_DYN_FLUSH /* @min:%2eflush */] = _flushChannels;\r\n _self.getTraceCtx = function (createNew) {\r\n if (!_traceCtx) {\r\n _traceCtx = createDistributedTraceContext();\r\n }\r\n return _traceCtx;\r\n };\r\n _self.setTraceCtx = function (traceCtx) {\r\n _traceCtx = traceCtx || null;\r\n };\r\n // Create the addUnloadCb\r\n proxyFunctionAs(_self, \"addUnloadCb\", function () { return _unloadHandlers; }, \"add\");\r\n function _initDefaults() {\r\n _isInitialized = false;\r\n // Use a default logger so initialization errors are not dropped on the floor with full logging\r\n _config = objExtend(true, {}, defaultInitConfig);\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = _config;\r\n _self[_DYN_LOGGER /* @min:%2elogger */] = new DiagnosticLogger(_config);\r\n _self[_DYN__EXTENSIONS /* @min:%2e_extensions */] = [];\r\n _telemetryInitializerPlugin = new TelemetryInitializerPlugin();\r\n _eventQueue = [];\r\n _notificationManager = null;\r\n _perfManager = null;\r\n _cfgPerfManager = null;\r\n _cookieManager = null;\r\n _pluginChain = null;\r\n _coreExtensions = null;\r\n _configExtensions = [];\r\n _channelControl = null;\r\n _channelConfig = null;\r\n _channelQueue = null;\r\n _isUnloading = false;\r\n _internalLogsEventName = null;\r\n _evtNamespace = createUniqueNamespace(\"AIBaseCore\", true);\r\n _unloadHandlers = createUnloadHandlerContainer();\r\n _traceCtx = null;\r\n }\r\n function _createTelCtx() {\r\n return createProcessTelemetryContext(_getPluginChain(), _config, _self);\r\n }\r\n // Initialize or Re-initialize the plugins\r\n function _initPluginChain(updateState) {\r\n // Extension validation\r\n var theExtensions = _validateExtensions(_self[_DYN_LOGGER /* @min:%2elogger */], ChannelControllerPriority, _configExtensions);\r\n _coreExtensions = theExtensions[STR_CORE /* @min:%2ecore */];\r\n _pluginChain = null;\r\n // Sort the complete set of extensions by priority\r\n var allExtensions = theExtensions.all;\r\n // Initialize the Channel Queues and the channel plugins first\r\n _channelQueue = objFreeze(createChannelQueues(_channelConfig, allExtensions, _self));\r\n if (_channelControl) {\r\n // During add / remove of a plugin this may get called again, so don't re-add if already present\r\n // But we also want the controller as the last, so remove if already present\r\n // And reusing the existing instance, just in case an installed plugin has a reference and\r\n // is using it.\r\n var idx = arrIndexOf(allExtensions, _channelControl);\r\n if (idx !== -1) {\r\n allExtensions[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n }\r\n idx = arrIndexOf(_coreExtensions, _channelControl);\r\n if (idx !== -1) {\r\n _coreExtensions[_DYN_SPLICE /* @min:%2esplice */](idx, 1);\r\n }\r\n _channelControl._setQueue(_channelQueue);\r\n }\r\n else {\r\n _channelControl = createChannelControllerPlugin(_channelQueue, _self);\r\n }\r\n // Add on \"channelController\" as the last \"plugin\"\r\n allExtensions[_DYN_PUSH /* @min:%2epush */](_channelControl);\r\n _coreExtensions[_DYN_PUSH /* @min:%2epush */](_channelControl);\r\n // Required to allow plugins to call core.getPlugin() during their own initialization\r\n _self[_DYN__EXTENSIONS /* @min:%2e_extensions */] = sortPlugins(allExtensions);\r\n // Initialize the controls\r\n _channelControl[_DYN_INITIALIZE /* @min:%2einitialize */](_config, _self, allExtensions);\r\n initializePlugins(_createTelCtx(), allExtensions);\r\n // Now reset the extensions to just those being managed by Basecore\r\n _self[_DYN__EXTENSIONS /* @min:%2e_extensions */] = objFreeze(sortPlugins(_coreExtensions || [])).slice();\r\n if (updateState) {\r\n _doUpdate(updateState);\r\n }\r\n }\r\n function _getPlugin(pluginIdentifier) {\r\n var _a;\r\n var theExt = null;\r\n var thePlugin = null;\r\n arrForEach(_self[_DYN__EXTENSIONS /* @min:%2e_extensions */], function (ext) {\r\n if (ext[_DYN_IDENTIFIER /* @min:%2eidentifier */] === pluginIdentifier && ext !== _channelControl && ext !== _telemetryInitializerPlugin) {\r\n thePlugin = ext;\r\n return -1;\r\n }\r\n });\r\n if (!thePlugin && _channelControl) {\r\n // Check the channel Controller\r\n thePlugin = _channelControl.getChannel(pluginIdentifier);\r\n }\r\n if (thePlugin) {\r\n theExt = (_a = {\r\n plugin: thePlugin\r\n },\r\n _a[_DYN_SET_ENABLED /* @min:setEnabled */] = function (enabled) {\r\n _getPluginState(thePlugin)[STR_DISABLED] = !enabled;\r\n },\r\n _a.isEnabled = function () {\r\n var pluginState = _getPluginState(thePlugin);\r\n return !pluginState[_DYN_TEARDOWN /* @min:%2eteardown */] && !pluginState[STR_DISABLED];\r\n },\r\n _a.remove = function (isAsync, removeCb) {\r\n var _a;\r\n if (isAsync === void 0) { isAsync = true; }\r\n var pluginsToRemove = [thePlugin];\r\n var unloadState = (_a = {\r\n reason: 1 /* TelemetryUnloadReason.PluginUnload */\r\n },\r\n _a[_DYN_IS_ASYNC /* @min:isAsync */] = isAsync,\r\n _a);\r\n _removePlugins(pluginsToRemove, unloadState, function (removed) {\r\n if (removed) {\r\n // Re-Initialize the plugin chain\r\n _initPluginChain({\r\n reason: 32 /* TelemetryUpdateReason.PluginRemoved */,\r\n removed: pluginsToRemove\r\n });\r\n }\r\n removeCb && removeCb(removed);\r\n });\r\n },\r\n _a);\r\n }\r\n return theExt;\r\n }\r\n function _getPluginChain() {\r\n if (!_pluginChain) {\r\n // copy the collection of extensions\r\n var extensions = (_coreExtensions || []).slice();\r\n // During add / remove this may get called again, so don't readd if already present\r\n if (arrIndexOf(extensions, _telemetryInitializerPlugin) === -1) {\r\n extensions[_DYN_PUSH /* @min:%2epush */](_telemetryInitializerPlugin);\r\n }\r\n _pluginChain = createTelemetryProxyChain(sortPlugins(extensions), _config, _self);\r\n }\r\n return _pluginChain;\r\n }\r\n function _removePlugins(thePlugins, unloadState, removeComplete) {\r\n if (thePlugins && thePlugins[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var unloadChain = createTelemetryProxyChain(thePlugins, _config, _self);\r\n var unloadCtx = createProcessTelemetryUnloadContext(unloadChain, _self);\r\n unloadCtx[_DYN_ON_COMPLETE /* @min:%2eonComplete */](function () {\r\n var removed = false;\r\n // Remove the listed config extensions\r\n var newConfigExtensions = [];\r\n arrForEach(_configExtensions, function (plugin, idx) {\r\n if (!_isPluginPresent(plugin, thePlugins)) {\r\n newConfigExtensions[_DYN_PUSH /* @min:%2epush */](plugin);\r\n }\r\n else {\r\n removed = true;\r\n }\r\n });\r\n _configExtensions = newConfigExtensions;\r\n // Re-Create the channel config\r\n var newChannelConfig = [];\r\n if (_channelConfig) {\r\n arrForEach(_channelConfig, function (queue, idx) {\r\n var newQueue = [];\r\n arrForEach(queue, function (channel) {\r\n if (!_isPluginPresent(channel, thePlugins)) {\r\n newQueue[_DYN_PUSH /* @min:%2epush */](channel);\r\n }\r\n else {\r\n removed = true;\r\n }\r\n });\r\n newChannelConfig[_DYN_PUSH /* @min:%2epush */](newQueue);\r\n });\r\n _channelConfig = newChannelConfig;\r\n }\r\n removeComplete && removeComplete(removed);\r\n });\r\n unloadCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](unloadState);\r\n }\r\n else {\r\n removeComplete(false);\r\n }\r\n }\r\n function _flushInternalLogs() {\r\n var queue = _self[_DYN_LOGGER /* @min:%2elogger */] ? _self[_DYN_LOGGER /* @min:%2elogger */].queue : [];\r\n if (queue) {\r\n arrForEach(queue, function (logMessage) {\r\n var _a;\r\n var item = (_a = {},\r\n _a[_DYN_NAME /* @min:name */] = _internalLogsEventName ? _internalLogsEventName : \"InternalMessageId: \" + logMessage[_DYN_MESSAGE_ID /* @min:%2emessageId */],\r\n _a.iKey = getCfgValue(_config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */]),\r\n _a.time = toISOString(new Date()),\r\n _a.baseType = _InternalLogMessage.dataType,\r\n _a.baseData = { message: logMessage[_DYN_MESSAGE /* @min:%2emessage */] },\r\n _a);\r\n _self.track(item);\r\n });\r\n queue[_DYN_LENGTH /* @min:%2elength */] = 0;\r\n }\r\n }\r\n function _flushChannels(isAsync, callBack, sendReason, cbTimeout) {\r\n if (_channelControl) {\r\n return _channelControl[_DYN_FLUSH /* @min:%2eflush */](isAsync, callBack, sendReason || 6 /* SendRequestReason.SdkUnload */, cbTimeout);\r\n }\r\n callBack && callBack(false);\r\n return true;\r\n }\r\n function _initDebugListener() {\r\n var disableDbgExt = getCfgValue(_config.disableDbgExt);\r\n if (disableDbgExt === true && _debugListener) {\r\n // Remove any previously loaded debug listener\r\n _notificationManager[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */](_debugListener);\r\n _debugListener = null;\r\n }\r\n if (_notificationManager && !_debugListener && disableDbgExt !== true) {\r\n _debugListener = getDebugListener(_config);\r\n _notificationManager[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */](_debugListener);\r\n }\r\n }\r\n function _initPerfManager() {\r\n var enablePerfMgr = getCfgValue(_config.enablePerfMgr);\r\n if (!enablePerfMgr && _cfgPerfManager) {\r\n // Remove any existing config based performance manager\r\n _cfgPerfManager = null;\r\n }\r\n if (enablePerfMgr) {\r\n // Set the performance manager creation function if not defined\r\n getSetValue(_config, STR_CREATE_PERF_MGR, _createPerfManager);\r\n }\r\n }\r\n function _initExtConfig() {\r\n var extConfig = getSetValue(_config, STR_EXTENSION_CONFIG, {});\r\n extConfig.NotificationManager = _notificationManager;\r\n }\r\n function _doUpdate(updateState) {\r\n var updateCtx = createProcessTelemetryUpdateContext(_getPluginChain(), _self);\r\n if (!_self._updateHook || _self._updateHook(updateCtx, updateState) !== true) {\r\n updateCtx[_DYN_PROCESS_NEXT /* @min:%2eprocessNext */](updateState);\r\n }\r\n }\r\n function _logOrThrowError(message) {\r\n var logger = _self[_DYN_LOGGER /* @min:%2elogger */];\r\n if (logger) {\r\n // there should always be a logger\r\n _throwInternal(logger, 2 /* eLoggingSeverity.WARNING */, 73 /* _eInternalMessageId.PluginException */, message);\r\n }\r\n else {\r\n throwError(message);\r\n }\r\n }\r\n });\r\n }\r\n// Removed Stub for BaseCore.prototype.initialize.\r\n// Removed Stub for BaseCore.prototype.getTransmissionControls.\r\n// Removed Stub for BaseCore.prototype.track.\r\n// Removed Stub for BaseCore.prototype.getProcessTelContext.\r\n// Removed Stub for BaseCore.prototype.getNotifyMgr.\r\n// Removed Stub for BaseCore.prototype.addNotificationListener.\r\n// Removed Stub for BaseCore.prototype.removeNotificationListener.\r\n// Removed Stub for BaseCore.prototype.getCookieMgr.\r\n// Removed Stub for BaseCore.prototype.setCookieMgr.\r\n// Removed Stub for BaseCore.prototype.getPerfMgr.\r\n// Removed Stub for BaseCore.prototype.setPerfMgr.\r\n// Removed Stub for BaseCore.prototype.eventCnt.\r\n// Removed Stub for BaseCore.prototype.pollInternalLogs.\r\n// Removed Stub for BaseCore.prototype.stopPollingInternalLogs.\r\n// Removed Stub for BaseCore.prototype.addTelemetryInitializer.\r\n// Removed Stub for BaseCore.prototype.unload.\r\n// Removed Stub for BaseCore.prototype.getPlugin.\r\n// Removed Stub for BaseCore.prototype.addPlugin.\r\n// Removed Stub for BaseCore.prototype.evtNamespace.\r\n// Removed Stub for BaseCore.prototype.addUnloadCb.\r\n// Removed Stub for BaseCore.prototype.flush.\r\n// Removed Stub for BaseCore.prototype.getTraceCtx.\r\n// Removed Stub for BaseCore.prototype.setTraceCtx.\r\n// Removed Stub for BaseCore.prototype.releaseQueue.\r\n// Removed Stub for BaseCore.prototype._updateHook.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n BaseCore.__ieDyn=1;\n\n return BaseCore;\r\n}());\r\nexport { BaseCore };\r\n//# sourceMappingURL=BaseCore.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_ADD_NOTIFICATION_LIS1, _DYN_IS_ASYNC, _DYN_IS_CHILD_EVT, _DYN_LISTENERS, _DYN_PUSH, _DYN_REMOVE_NOTIFICATION_2, _DYN_SPLICE } from \"../__DynamicConstants\";\r\nimport { arrForEach, arrIndexOf } from \"./HelperFuncs\";\r\nimport { STR_EVENTS_DISCARDED, STR_EVENTS_SEND_REQUEST, STR_EVENTS_SENT, STR_PERF_EVENT } from \"./InternalConstants\";\r\nfunction _runListeners(listeners, name, isAsync, callback) {\r\n arrForEach(listeners, function (listener) {\r\n if (listener && listener[name]) {\r\n if (isAsync) {\r\n setTimeout(function () { return callback(listener); }, 0);\r\n }\r\n else {\r\n try {\r\n callback(listener);\r\n }\r\n catch (e) {\r\n // Catch errors to ensure we don't block sending the requests\r\n }\r\n }\r\n }\r\n });\r\n}\r\n/**\r\n * Class to manage sending notifications to all the listeners.\r\n */\r\nvar NotificationManager = /** @class */ (function () {\r\n function NotificationManager(config) {\r\n this.listeners = [];\r\n var perfEvtsSendAll = !!(config || {}).perfEvtsSendAll;\r\n dynamicProto(NotificationManager, this, function (_self) {\r\n _self[_DYN_ADD_NOTIFICATION_LIS1 /* @min:%2eaddNotificationListener */] = function (listener) {\r\n _self.listeners[_DYN_PUSH /* @min:%2epush */](listener);\r\n };\r\n /**\r\n * Removes all instances of the listener.\r\n * @param {INotificationListener} listener - AWTNotificationListener to remove.\r\n */\r\n _self[_DYN_REMOVE_NOTIFICATION_2 /* @min:%2eremoveNotificationListener */] = function (listener) {\r\n var index = arrIndexOf(_self[_DYN_LISTENERS /* @min:%2elisteners */], listener);\r\n while (index > -1) {\r\n _self.listeners[_DYN_SPLICE /* @min:%2esplice */](index, 1);\r\n index = arrIndexOf(_self[_DYN_LISTENERS /* @min:%2elisteners */], listener);\r\n }\r\n };\r\n /**\r\n * Notification for events sent.\r\n * @param {ITelemetryItem[]} events - The array of events that have been sent.\r\n */\r\n _self[STR_EVENTS_SENT /* @min:%2eeventsSent */] = function (events) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_EVENTS_SENT, true, function (listener) {\r\n listener[STR_EVENTS_SENT /* @min:%2eeventsSent */](events);\r\n });\r\n };\r\n /**\r\n * Notification for events being discarded.\r\n * @param {ITelemetryItem[]} events - The array of events that have been discarded by the SDK.\r\n * @param {number} reason - The reason for which the SDK discarded the events. The EventsDiscardedReason\r\n * constant should be used to check the different values.\r\n */\r\n _self[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */] = function (events, reason) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_EVENTS_DISCARDED, true, function (listener) {\r\n listener[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */](events, reason);\r\n });\r\n };\r\n /**\r\n * [Optional] A function called when the events have been requested to be sent to the sever.\r\n * @param {number} sendReason - The reason why the event batch is being sent.\r\n * @param {boolean} isAsync - A flag which identifies whether the requests are being sent in an async or sync manner.\r\n */\r\n _self[STR_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */] = function (sendReason, isAsync) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_EVENTS_SEND_REQUEST, isAsync, function (listener) {\r\n listener[STR_EVENTS_SEND_REQUEST /* @min:%2eeventsSendRequest */](sendReason, isAsync);\r\n });\r\n };\r\n _self[STR_PERF_EVENT /* @min:%2eperfEvent */] = function (perfEvent) {\r\n if (perfEvent) {\r\n // Send all events or only parent events\r\n if (perfEvtsSendAll || !perfEvent[_DYN_IS_CHILD_EVT /* @min:%2eisChildEvt */]()) {\r\n _runListeners(_self[_DYN_LISTENERS /* @min:%2elisteners */], STR_PERF_EVENT, false, function (listener) {\r\n if (perfEvent[_DYN_IS_ASYNC /* @min:%2eisAsync */]) {\r\n setTimeout(function () { return listener[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent); }, 0);\r\n }\r\n else {\r\n listener[STR_PERF_EVENT /* @min:%2eperfEvent */](perfEvent);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for NotificationManager.prototype.addNotificationListener.\r\n// Removed Stub for NotificationManager.prototype.removeNotificationListener.\r\n// Removed Stub for NotificationManager.prototype.eventsSent.\r\n// Removed Stub for NotificationManager.prototype.eventsDiscarded.\r\n// Removed Stub for NotificationManager.prototype.eventsSendRequest.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n NotificationManager.__ieDyn=1;\n\n return NotificationManager;\r\n}());\r\nexport { NotificationManager };\r\n//# sourceMappingURL=NotificationManager.js.map","/*\n * Application Insights JavaScript SDK - Core, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { _DYN_GET_NOTIFY_MGR, _DYN_INITIALIZE, _DYN_NAME } from \"../__DynamicConstants\";\r\nimport { BaseCore } from \"./BaseCore\";\r\nimport { DiagnosticLogger } from \"./DiagnosticLogger\";\r\nimport { isNullOrUndefined, throwError } from \"./HelperFuncs\";\r\nimport { STR_EVENTS_DISCARDED, STR_GET_PERF_MGR } from \"./InternalConstants\";\r\nimport { NotificationManager } from \"./NotificationManager\";\r\nimport { doPerf } from \"./PerfManager\";\r\nvar AppInsightsCore = /** @class */ (function (_super) {\r\n __extends(AppInsightsCore, _super);\r\n function AppInsightsCore() {\r\n var _this = _super.call(this) || this;\r\n dynamicProto(AppInsightsCore, _this, function (_self, _base) {\r\n _self[_DYN_INITIALIZE /* @min:%2einitialize */] = function (config, extensions, logger, notificationManager) {\r\n _base[_DYN_INITIALIZE /* @min:%2einitialize */](config, extensions, logger || new DiagnosticLogger(config), notificationManager || new NotificationManager(config));\r\n };\r\n _self.track = function (telemetryItem) {\r\n doPerf(_self[STR_GET_PERF_MGR /* @min:%2egetPerfMgr */](), function () { return \"AppInsightsCore:track\"; }, function () {\r\n if (telemetryItem === null) {\r\n _notifyInvalidEvent(telemetryItem);\r\n // throw error\r\n throwError(\"Invalid telemetry item\");\r\n }\r\n // do basic validation before sending it through the pipeline\r\n _validateTelemetryItem(telemetryItem);\r\n _base.track(telemetryItem);\r\n }, function () { return ({ item: telemetryItem }); }, !(telemetryItem.sync));\r\n };\r\n function _validateTelemetryItem(telemetryItem) {\r\n if (isNullOrUndefined(telemetryItem[_DYN_NAME /* @min:%2ename */])) {\r\n _notifyInvalidEvent(telemetryItem);\r\n throwError(\"telemetry name required\");\r\n }\r\n }\r\n function _notifyInvalidEvent(telemetryItem) {\r\n var manager = _self[_DYN_GET_NOTIFY_MGR /* @min:%2egetNotifyMgr */]();\r\n if (manager) {\r\n manager[STR_EVENTS_DISCARDED /* @min:%2eeventsDiscarded */]([telemetryItem], 2 /* eEventsDiscardedReason.InvalidEvent */);\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for AppInsightsCore.prototype.initialize.\r\n// Removed Stub for AppInsightsCore.prototype.track.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n AppInsightsCore.__ieDyn=1;\n\n return AppInsightsCore;\r\n}(BaseCore));\r\nexport { AppInsightsCore };\r\n//# sourceMappingURL=AppInsightsCore.js.map","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Generally you should only put values that are used more than 2 times and then only if not already exposed as a constant (such as SdkCoreNames)\r\n// as when using \"short\" named values from here they will be will be minified smaller than the SdkCoreNames[eSdkCoreNames.xxxx] value.\r\nexport var STR_DURATION = \"duration\";\r\nexport var STR_PROPERTIES = \"properties\";\r\n//# sourceMappingURL=InternalConstants.js.map","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_REQUEST_URL = \"requestUrl\"; // Count: 12\r\nexport var _DYN_INST = \"inst\"; // Count: 5\r\nexport var _DYN_LENGTH = \"length\"; // Count: 10\r\nexport var _DYN_TRACE_ID = \"traceID\"; // Count: 9\r\nexport var _DYN_SPAN_ID = \"spanID\"; // Count: 8\r\nexport var _DYN_TRACE_FLAGS = \"traceFlags\"; // Count: 13\r\nexport var _DYN_CONTEXT = \"context\"; // Count: 7\r\nexport var _DYN_TRACE_ID0 = \"traceId\"; // Count: 5\r\nexport var _DYN_SPAN_ID1 = \"spanId\"; // Count: 5\r\nexport var _DYN_CORE = \"core\"; // Count: 8\r\nexport var _DYN_INCLUDE_CORRELATION_2 = \"includeCorrelationHeaders\"; // Count: 4\r\nexport var _DYN_CAN_INCLUDE_CORRELAT3 = \"canIncludeCorrelationHeader\"; // Count: 2\r\nexport var _DYN_GET_ABSOLUTE_URL = \"getAbsoluteUrl\"; // Count: 3\r\nexport var _DYN_HEADERS = \"headers\"; // Count: 6\r\nexport var _DYN_REQUEST_HEADERS = \"requestHeaders\"; // Count: 13\r\nexport var _DYN_APP_ID = \"appId\"; // Count: 5\r\nexport var _DYN_SET_REQUEST_HEADER = \"setRequestHeader\"; // Count: 3\r\nexport var _DYN_TRACK_DEPENDENCY_DAT4 = \"trackDependencyDataInternal\"; // Count: 2\r\nexport var _DYN_DISTRIBUTED_TRACING_5 = \"distributedTracingMode\"; // Count: 3\r\nexport var _DYN_START_TIME = \"startTime\"; // Count: 6\r\nexport var _DYN_TO_LOWER_CASE = \"toLowerCase\"; // Count: 6\r\nexport var _DYN_ENABLE_REQUEST_HEADE6 = \"enableRequestHeaderTracking\"; // Count: 2\r\nexport var _DYN_ENABLE_AJAX_ERROR_ST7 = \"enableAjaxErrorStatusText\"; // Count: 2\r\nexport var _DYN_ENABLE_AJAX_PERF_TRA8 = \"enableAjaxPerfTracking\"; // Count: 2\r\nexport var _DYN_MAX_AJAX_CALLS_PER_V9 = \"maxAjaxCallsPerView\"; // Count: 2\r\nexport var _DYN_ENABLE_RESPONSE_HEAD10 = \"enableResponseHeaderTracking\"; // Count: 2\r\nexport var _DYN_EXCLUDE_REQUEST_FROM11 = \"excludeRequestFromAutoTrackingPatterns\"; // Count: 2\r\nexport var _DYN_ADD_REQUEST_CONTEXT = \"addRequestContext\"; // Count: 2\r\nexport var _DYN_DISABLE_AJAX_TRACKIN12 = \"disableAjaxTracking\"; // Count: 2\r\nexport var _DYN_DISABLE_FETCH_TRACKI13 = \"disableFetchTracking\"; // Count: 2\r\nexport var _DYN_STATUS = \"status\"; // Count: 10\r\nexport var _DYN_STATUS_TEXT = \"statusText\"; // Count: 8\r\nexport var _DYN_HEADER_MAP = \"headerMap\"; // Count: 8\r\nexport var _DYN_OPEN_DONE = \"openDone\"; // Count: 3\r\nexport var _DYN_SEND_DONE = \"sendDone\"; // Count: 3\r\nexport var _DYN_REQUEST_SENT_TIME = \"requestSentTime\"; // Count: 9\r\nexport var _DYN_ABORT_DONE = \"abortDone\"; // Count: 3\r\nexport var _DYN_GET_TRACE_ID = \"getTraceId\"; // Count: 3\r\nexport var _DYN_GET_TRACE_FLAGS = \"getTraceFlags\"; // Count: 3\r\nexport var _DYN_METHOD = \"method\"; // Count: 10\r\nexport var _DYN_ERROR_STATUS_TEXT = \"errorStatusText\"; // Count: 3\r\nexport var _DYN_STATE_CHANGE_ATTACHE14 = \"stateChangeAttached\"; // Count: 2\r\nexport var _DYN_RESPONSE_TEXT = \"responseText\"; // Count: 5\r\nexport var _DYN_RESPONSE_FINISHED_TI15 = \"responseFinishedTime\"; // Count: 7\r\nexport var _DYN__CREATE_TRACK_ITEM = \"CreateTrackItem\"; // Count: 3\r\nexport var _DYN_RESPONSE = \"response\"; // Count: 4\r\nexport var _DYN_GET_ALL_RESPONSE_HEA16 = \"getAllResponseHeaders\"; // Count: 2\r\nexport var _DYN_GET_PART_APROPS = \"getPartAProps\"; // Count: 3\r\nexport var _DYN_GET_CORRELATION_CONT17 = \"getCorrelationContext\"; // Count: 2\r\nexport var _DYN_PERF_MARK = \"perfMark\"; // Count: 4\r\nexport var _DYN_AJAX_PERF_LOOKUP_DEL18 = \"ajaxPerfLookupDelay\"; // Count: 2\r\nexport var _DYN_NAME = \"name\"; // Count: 6\r\nexport var _DYN_PERF_TIMING = \"perfTiming\"; // Count: 3\r\nexport var _DYN_AJAX_DIAGNOSTICS_MES19 = \"ajaxDiagnosticsMessage\"; // Count: 3\r\nexport var _DYN_CORRELATION_CONTEXT = \"correlationContext\"; // Count: 3\r\nexport var _DYN_AJAX_TOTAL_DURATION = \"ajaxTotalDuration\"; // Count: 3\r\nexport var _DYN_EVENT_TRACE_CTX = \"eventTraceCtx\"; // Count: 3\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { Extensions, dataSanitizeUrl, dateTimeUtilsDuration, msToTimeSpan, urlGetAbsoluteUrl, urlGetCompleteUrl } from \"@microsoft/applicationinsights-common\";\r\nimport { arrForEach, isNullOrUndefined, isNumber, isString, normalizeJsName, objForEachKey, objKeys } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_DURATION, STR_PROPERTIES } from \"./InternalConstants\";\r\nimport { _DYN_ABORT_DONE, _DYN_AJAX_TOTAL_DURATION, _DYN_CORRELATION_CONTEXT, _DYN_EVENT_TRACE_CTX, _DYN_GET_ABSOLUTE_URL, _DYN_GET_PART_APROPS, _DYN_GET_TRACE_FLAGS, _DYN_GET_TRACE_ID, _DYN_HEADER_MAP, _DYN_LENGTH, _DYN_METHOD, _DYN_NAME, _DYN_OPEN_DONE, _DYN_PERF_MARK, _DYN_PERF_TIMING, _DYN_REQUEST_HEADERS, _DYN_REQUEST_SENT_TIME, _DYN_REQUEST_URL, _DYN_RESPONSE, _DYN_RESPONSE_FINISHED_TI15, _DYN_SEND_DONE, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE14, _DYN_STATUS, _DYN_STATUS_TEXT, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_TRACE_ID0, _DYN__CREATE_TRACK_ITEM } from \"./__DynamicConstants\";\r\n/** @ignore */\r\nfunction _calcPerfDuration(resourceEntry, start, end) {\r\n var result = 0;\r\n var from = resourceEntry[start];\r\n var to = resourceEntry[end];\r\n if (from && to) {\r\n result = dateTimeUtilsDuration(from, to);\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfDuration(props, name, resourceEntry, start, end) {\r\n var result = 0;\r\n var value = _calcPerfDuration(resourceEntry, start, end);\r\n if (value) {\r\n result = _setPerfValue(props, name, msToTimeSpan(value));\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _setPerfValue(props, name, value) {\r\n var strPerf = \"ajaxPerf\";\r\n var result = 0;\r\n if (props && name && value) {\r\n var perfData = props[strPerf] = (props[strPerf] || {});\r\n perfData[name] = value;\r\n result = 1;\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _populatePerfData(ajaxData, dependency) {\r\n /*\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Resource_Timing_API/Using_the_Resource_Timing_API\r\n * | -startTime\r\n * | -redirectStart\r\n * | | -redirectEnd\r\n * | | | -fetchStart\r\n * | | | | -domainLookupStart\r\n * | | | | |- domainLookupEnd\r\n * | | | | | | -connectStart\r\n * | | | | | | | -secureConnectionStart\r\n * | | | | | | | | -connectEnd\r\n * | | | | | | | | | -requestStart\r\n * | | | | | | | | | | | -responseStart\r\n * | | | | | | | | | | | | | -responseEnd\r\n * +------------+-+---+----------------+-+--+--------+-+-----------+-+------------+-+\r\n * |--redirect--| |---|--domainLookup--| |--connect--| |--request--| |--response--| |\r\n * |-------------------networkConnect----------------|\r\n * | |---------sentRequest--------|\r\n * |------------------------------------perfTotal-----------------------------------|\r\n */\r\n var resourceEntry = ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */];\r\n var props = dependency[STR_PROPERTIES /* @min:%2eproperties */] || {};\r\n var propsSet = 0;\r\n var strName = \"name\";\r\n var strStart = \"Start\";\r\n var strEnd = \"End\";\r\n var strDomainLookup = \"domainLookup\";\r\n var strConnect = \"connect\";\r\n var strRedirect = \"redirect\";\r\n var strRequest = \"request\";\r\n var strResponse = \"response\";\r\n var strStartTime = \"startTime\";\r\n var strDomainLookupStart = strDomainLookup + strStart;\r\n var strDomainLookupEnd = strDomainLookup + strEnd;\r\n var strConnectStart = strConnect + strStart;\r\n var strConnectEnd = strConnect + strEnd;\r\n var strRequestStart = strRequest + strStart;\r\n var strRequestEnd = strRequest + strEnd;\r\n var strResponseStart = strResponse + strStart;\r\n var strResponseEnd = strResponse + strEnd;\r\n var strRedirectStart = strRedirect + strStart;\r\n var strRedirectEnd = strRedirect = strEnd;\r\n var strTransferSize = \"transferSize\";\r\n var strEncodedBodySize = \"encodedBodySize\";\r\n var strDecodedBodySize = \"decodedBodySize\";\r\n var strServerTiming = \"serverTiming\";\r\n if (resourceEntry) {\r\n // redirect\r\n propsSet |= _setPerfDuration(props, strRedirect, resourceEntry, strRedirectStart, strRedirectEnd);\r\n // domainLookup\r\n propsSet |= _setPerfDuration(props, strDomainLookup, resourceEntry, strDomainLookupStart, strDomainLookupEnd);\r\n // connect\r\n propsSet |= _setPerfDuration(props, strConnect, resourceEntry, strConnectStart, strConnectEnd);\r\n // request\r\n propsSet |= _setPerfDuration(props, strRequest, resourceEntry, strRequestStart, strRequestEnd);\r\n // response\r\n propsSet |= _setPerfDuration(props, strResponse, resourceEntry, strResponseStart, strResponseEnd);\r\n // Network connection time\r\n propsSet |= _setPerfDuration(props, \"networkConnect\", resourceEntry, strStartTime, strConnectEnd);\r\n // Sent Request\r\n propsSet |= _setPerfDuration(props, \"sentRequest\", resourceEntry, strRequestStart, strResponseEnd);\r\n // PerfTotal / Duration\r\n var duration = resourceEntry[STR_DURATION /* @min:%2eduration */];\r\n if (!duration) {\r\n duration = _calcPerfDuration(resourceEntry, strStartTime, strResponseEnd) || 0;\r\n }\r\n propsSet |= _setPerfValue(props, STR_DURATION, duration);\r\n propsSet |= _setPerfValue(props, \"perfTotal\", duration);\r\n var serverTiming = resourceEntry[strServerTiming];\r\n if (serverTiming) {\r\n var server_1 = {};\r\n arrForEach(serverTiming, function (value, idx) {\r\n var name = normalizeJsName(value[strName] || \"\" + idx);\r\n var newValue = server_1[name] || {};\r\n objForEachKey(value, function (key, val) {\r\n if (key !== strName && isString(val) || isNumber(val)) {\r\n if (newValue[key]) {\r\n val = newValue[key] + \";\" + val;\r\n }\r\n if (val || !isString(val)) {\r\n // Only set the value if it has a value and it's not an empty string\r\n newValue[key] = val;\r\n }\r\n }\r\n });\r\n server_1[name] = newValue;\r\n });\r\n propsSet |= _setPerfValue(props, strServerTiming, server_1);\r\n }\r\n propsSet |= _setPerfValue(props, strTransferSize, resourceEntry[strTransferSize]);\r\n propsSet |= _setPerfValue(props, strEncodedBodySize, resourceEntry[strEncodedBodySize]);\r\n propsSet |= _setPerfValue(props, strDecodedBodySize, resourceEntry[strDecodedBodySize]);\r\n }\r\n else {\r\n if (ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */]) {\r\n propsSet |= _setPerfValue(props, \"missing\", ajaxData.perfAttempts);\r\n }\r\n }\r\n if (propsSet) {\r\n dependency[STR_PROPERTIES /* @min:%2eproperties */] = props;\r\n }\r\n}\r\nvar XHRMonitoringState = /** @class */ (function () {\r\n function XHRMonitoringState() {\r\n var self = this;\r\n self[_DYN_OPEN_DONE /* @min:%2eopenDone */] = false;\r\n self.setRequestHeaderDone = false;\r\n self[_DYN_SEND_DONE /* @min:%2esendDone */] = false;\r\n self[_DYN_ABORT_DONE /* @min:%2eabortDone */] = false;\r\n // <summary>True, if onreadyStateChangeCallback function attached to xhr, otherwise false</summary>\r\n self[_DYN_STATE_CHANGE_ATTACHE14 /* @min:%2estateChangeAttached */] = false;\r\n }\r\n return XHRMonitoringState;\r\n}());\r\nexport { XHRMonitoringState };\r\nvar ajaxRecord = /** @class */ (function () {\r\n function ajaxRecord(traceId, spanId, logger, traceCtx) {\r\n var _a;\r\n var self = this;\r\n var _logger = logger;\r\n var strResponseText = \"responseText\";\r\n // Assigning the initial/default values within the constructor to avoid typescript from creating a bunch of\r\n // this.XXXX = null\r\n self[_DYN_PERF_MARK /* @min:%2eperfMark */] = null;\r\n self.completed = false;\r\n self.requestHeadersSize = null;\r\n self[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = null;\r\n self.responseReceivingDuration = null;\r\n self.callbackDuration = null;\r\n self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */] = null;\r\n self.aborted = 0;\r\n self.pageUrl = null;\r\n self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = null;\r\n self.requestSize = 0;\r\n self[_DYN_METHOD /* @min:%2emethod */] = null;\r\n self[_DYN_STATUS /* @min:%2estatus */] = null;\r\n self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = null;\r\n self.responseStartedTime = null;\r\n self[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */] = null;\r\n self.callbackFinishedTime = null;\r\n self.endTime = null;\r\n self.xhrMonitoringState = new XHRMonitoringState();\r\n self.clientFailure = 0;\r\n self[_DYN_TRACE_ID /* @min:%2etraceID */] = traceId;\r\n self[_DYN_SPAN_ID /* @min:%2espanID */] = spanId;\r\n self[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = traceCtx === null || traceCtx === void 0 ? void 0 : traceCtx.getTraceFlags();\r\n if (traceCtx) {\r\n self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */] = (_a = {},\r\n _a[_DYN_TRACE_ID0 /* @min:traceId */] = traceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */](),\r\n _a[_DYN_SPAN_ID1 /* @min:spanId */] = traceCtx.getSpanId(),\r\n _a[_DYN_TRACE_FLAGS /* @min:traceFlags */] = traceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */](),\r\n _a);\r\n }\r\n else {\r\n self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */] = null;\r\n }\r\n dynamicProto(ajaxRecord, self, function (self) {\r\n self.getAbsoluteUrl = function () {\r\n return self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] ? urlGetAbsoluteUrl(self[_DYN_REQUEST_URL /* @min:%2erequestUrl */]) : null;\r\n };\r\n self.getPathName = function () {\r\n return self[_DYN_REQUEST_URL /* @min:%2erequestUrl */] ? dataSanitizeUrl(_logger, urlGetCompleteUrl(self[_DYN_METHOD /* @min:%2emethod */], self[_DYN_REQUEST_URL /* @min:%2erequestUrl */])) : null;\r\n };\r\n self[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */] = function (ajaxType, enableRequestHeaderTracking, getResponse) {\r\n var _a;\r\n // round to 3 decimal points\r\n self.ajaxTotalDuration = Math.round(dateTimeUtilsDuration(self.requestSentTime, self.responseFinishedTime) * 1000) / 1000;\r\n if (self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */] < 0) {\r\n return null;\r\n }\r\n var dependency = (_a = {\r\n id: \"|\" + self[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + self[_DYN_SPAN_ID /* @min:%2espanID */],\r\n target: self[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */]()\r\n },\r\n _a[_DYN_NAME /* @min:name */] = self.getPathName(),\r\n _a.type = ajaxType,\r\n _a[_DYN_START_TIME /* @min:startTime */] = null,\r\n _a.duration = self[_DYN_AJAX_TOTAL_DURATION /* @min:%2eajaxTotalDuration */],\r\n _a.success = (+(self[_DYN_STATUS /* @min:%2estatus */])) >= 200 && (+(self[_DYN_STATUS /* @min:%2estatus */])) < 400,\r\n _a.responseCode = (+(self[_DYN_STATUS /* @min:%2estatus */])),\r\n _a.method = self[_DYN_METHOD /* @min:%2emethod */],\r\n _a[STR_PROPERTIES] = { HttpMethod: self[_DYN_METHOD /* @min:%2emethod */] },\r\n _a);\r\n if (self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */]) {\r\n // Set the correct dependency start time\r\n dependency[_DYN_START_TIME /* @min:%2estartTime */] = new Date();\r\n dependency[_DYN_START_TIME /* @min:%2estartTime */].setTime(self[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */]);\r\n }\r\n // Add Ajax perf details if available\r\n _populatePerfData(self, dependency);\r\n if (enableRequestHeaderTracking) {\r\n if (objKeys(self.requestHeaders)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var props = dependency[STR_PROPERTIES /* @min:%2eproperties */] = dependency[STR_PROPERTIES /* @min:%2eproperties */] || {};\r\n props[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = self[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */];\r\n }\r\n }\r\n if (getResponse) {\r\n var response = getResponse();\r\n if (response) {\r\n // enrich dependency target with correlation context from the server\r\n var correlationContext = response[_DYN_CORRELATION_CONTEXT /* @min:%2ecorrelationContext */];\r\n if (correlationContext) {\r\n dependency.correlationContext = /* dependency.target + \" | \" + */ correlationContext;\r\n }\r\n if (response[_DYN_HEADER_MAP /* @min:%2eheaderMap */]) {\r\n if (objKeys(response.headerMap)[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n var props = dependency[STR_PROPERTIES /* @min:%2eproperties */] = dependency[STR_PROPERTIES /* @min:%2eproperties */] || {};\r\n props.responseHeaders = response[_DYN_HEADER_MAP /* @min:%2eheaderMap */];\r\n }\r\n }\r\n if (self.errorStatusText && self[_DYN_STATUS /* @min:%2estatus */] >= 400) {\r\n var responseType = response.type;\r\n var props = dependency[STR_PROPERTIES /* @min:%2eproperties */] = dependency[STR_PROPERTIES /* @min:%2eproperties */] || {};\r\n if (responseType === \"\" || responseType === \"text\") {\r\n props.responseText = response.responseText ? response[_DYN_STATUS_TEXT /* @min:%2estatusText */] + \" - \" + response[strResponseText] : response[_DYN_STATUS_TEXT /* @min:%2estatusText */];\r\n }\r\n if (responseType === \"json\") {\r\n props.responseText = response.response ? response[_DYN_STATUS_TEXT /* @min:%2estatusText */] + \" - \" + JSON.stringify(response[_DYN_RESPONSE /* @min:%2eresponse */]) : response[_DYN_STATUS_TEXT /* @min:%2estatusText */];\r\n }\r\n }\r\n }\r\n }\r\n return dependency;\r\n };\r\n self[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */] = function () {\r\n var _a;\r\n var partA = null;\r\n var traceCtx = self[_DYN_EVENT_TRACE_CTX /* @min:%2eeventTraceCtx */];\r\n if (traceCtx && (traceCtx[_DYN_TRACE_ID0 /* @min:%2etraceId */] || traceCtx[_DYN_SPAN_ID1 /* @min:%2espanId */])) {\r\n partA = {};\r\n var traceExt = partA[Extensions.TraceExt] = (_a = {},\r\n _a[_DYN_TRACE_ID /* @min:traceID */] = traceCtx[_DYN_TRACE_ID0 /* @min:%2etraceId */],\r\n _a.parentID = traceCtx[_DYN_SPAN_ID1 /* @min:%2espanId */],\r\n _a);\r\n if (!isNullOrUndefined(traceCtx[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */])) {\r\n traceExt[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = traceCtx[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n }\r\n }\r\n return partA;\r\n };\r\n });\r\n }\r\n// Removed Stub for ajaxRecord.prototype.getAbsoluteUrl.\r\n// Removed Stub for ajaxRecord.prototype.getPathName.\r\n// Removed Stub for ajaxRecord.prototype.CreateTrackItem.\r\n// Removed Stub for ajaxRecord.prototype.getPartAProps.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n ajaxRecord.__ieDyn=1;\n\n return ajaxRecord;\r\n}());\r\nexport { ajaxRecord };\r\n//# sourceMappingURL=ajaxRecord.js.map","/*\n * Application Insights JavaScript SDK - Dependencies Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { __assignFn as __assign, __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { CorrelationIdHelper, DisabledPropertyName, PropertiesPluginIdentifier, RemoteDependencyData, RequestHeaders, createDistributedTraceContextFromTrace, createTelemetryItem, createTraceParent, dateTimeUtilsNow, formatTraceParent, isInternalApplicationInsightsEndpoint } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, InstrumentFunc, InstrumentProto, _throwInternal, arrForEach, createProcessTelemetryContext, createUniqueNamespace, deepFreeze, dumpObj, eventOn, generateW3CId, getExceptionName, getGlobal, getIEVersion, getLocation, getPerformance, isFunction, isNullOrUndefined, isString, isXhrSupported, mergeEvtNamespace, objForEachKey, strPrototype, strTrim } from \"@microsoft/applicationinsights-core-js\";\r\nimport { STR_PROPERTIES } from \"./InternalConstants\";\r\nimport { _DYN_ABORT_DONE, _DYN_ADD_REQUEST_CONTEXT, _DYN_AJAX_DIAGNOSTICS_MES19, _DYN_AJAX_PERF_LOOKUP_DEL18, _DYN_APP_ID, _DYN_CAN_INCLUDE_CORRELAT3, _DYN_CONTEXT, _DYN_CORE, _DYN_CORRELATION_CONTEXT, _DYN_DISABLE_AJAX_TRACKIN12, _DYN_DISABLE_FETCH_TRACKI13, _DYN_DISTRIBUTED_TRACING_5, _DYN_ENABLE_AJAX_ERROR_ST7, _DYN_ENABLE_AJAX_PERF_TRA8, _DYN_ENABLE_REQUEST_HEADE6, _DYN_ENABLE_RESPONSE_HEAD10, _DYN_ERROR_STATUS_TEXT, _DYN_EXCLUDE_REQUEST_FROM11, _DYN_GET_ABSOLUTE_URL, _DYN_GET_ALL_RESPONSE_HEA16, _DYN_GET_CORRELATION_CONT17, _DYN_GET_PART_APROPS, _DYN_GET_TRACE_FLAGS, _DYN_GET_TRACE_ID, _DYN_HEADERS, _DYN_HEADER_MAP, _DYN_INCLUDE_CORRELATION_2, _DYN_INST, _DYN_LENGTH, _DYN_MAX_AJAX_CALLS_PER_V9, _DYN_METHOD, _DYN_NAME, _DYN_OPEN_DONE, _DYN_PERF_MARK, _DYN_PERF_TIMING, _DYN_REQUEST_HEADERS, _DYN_REQUEST_SENT_TIME, _DYN_REQUEST_URL, _DYN_RESPONSE, _DYN_RESPONSE_FINISHED_TI15, _DYN_RESPONSE_TEXT, _DYN_SEND_DONE, _DYN_SET_REQUEST_HEADER, _DYN_SPAN_ID, _DYN_SPAN_ID1, _DYN_START_TIME, _DYN_STATE_CHANGE_ATTACHE14, _DYN_STATUS, _DYN_STATUS_TEXT, _DYN_TO_LOWER_CASE, _DYN_TRACE_FLAGS, _DYN_TRACE_ID, _DYN_TRACE_ID0, _DYN_TRACK_DEPENDENCY_DAT4, _DYN__CREATE_TRACK_ITEM } from \"./__DynamicConstants\";\r\nimport { ajaxRecord } from \"./ajaxRecord\";\r\nvar AJAX_MONITOR_PREFIX = \"ai.ajxmn.\";\r\nvar strDiagLog = \"diagLog\";\r\nvar strAjaxData = \"ajaxData\";\r\nvar strFetch = \"fetch\";\r\nvar ERROR_HEADER = \"Failed to monitor XMLHttpRequest\";\r\nvar ERROR_PREFIX = \", monitoring data for this ajax call \";\r\nvar ERROR_POSTFIX = ERROR_PREFIX + \"may be incorrect.\";\r\nvar ERROR_NOT_SENT = ERROR_PREFIX + \"won't be sent.\";\r\nvar CORRELATION_HEADER_ERROR = \"Failed to get Request-Context correlation header as it may be not included in the response or not accessible.\";\r\nvar CUSTOM_REQUEST_CONTEXT_ERROR = \"Failed to add custom defined request context as configured call back may missing a null check.\";\r\nvar FAILED_TO_CALCULATE_DURATION_ERROR = \"Failed to calculate the duration of the \";\r\n// Using a global value so that to handle same iKey with multiple app insights instances (mostly for testing)\r\nvar _markCount = 0;\r\n/** @Ignore */\r\nfunction _supportsFetch() {\r\n var _global = getGlobal();\r\n if (!_global ||\r\n isNullOrUndefined(_global.Request) ||\r\n isNullOrUndefined(_global.Request[strPrototype]) ||\r\n isNullOrUndefined(_global[strFetch])) {\r\n return null;\r\n }\r\n return _global[strFetch];\r\n}\r\n/**\r\n * Determines whether ajax monitoring can be enabled on this document\r\n * @returns True if Ajax monitoring is supported on this page, otherwise false\r\n * @ignore\r\n */\r\nfunction _supportsAjaxMonitoring(ajaxMonitorInstance) {\r\n var result = false;\r\n if (isXhrSupported()) {\r\n var proto = XMLHttpRequest[strPrototype];\r\n result = !isNullOrUndefined(proto) &&\r\n !isNullOrUndefined(proto.open) && // eslint-disable-line security/detect-non-literal-fs-filename -- false positive\r\n !isNullOrUndefined(proto.send) &&\r\n !isNullOrUndefined(proto.abort);\r\n }\r\n var ieVer = getIEVersion();\r\n if (ieVer && ieVer < 9) {\r\n result = false;\r\n }\r\n if (result) {\r\n // Disable if the XmlHttpRequest can't be extended or hooked\r\n try {\r\n var xhr = new XMLHttpRequest();\r\n xhr[strAjaxData] = {};\r\n // Check that we can update the prototype\r\n var theOpen = XMLHttpRequest[strPrototype].open;\r\n XMLHttpRequest[strPrototype].open = theOpen;\r\n }\r\n catch (e) {\r\n // We can't decorate the xhr object so disable monitoring\r\n result = false;\r\n _throwInternalCritical(ajaxMonitorInstance, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to enable XMLHttpRequest monitoring, extension is not supported\", {\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n return result;\r\n}\r\n/** @Ignore */\r\nfunction _getFailedAjaxDiagnosticsMessage(xhr) {\r\n var result = \"\";\r\n try {\r\n if (xhr && xhr[strAjaxData] && xhr[strAjaxData][_DYN_REQUEST_URL /* @min:%2erequestUrl */]) {\r\n result += \"(url: '\" + xhr[strAjaxData][_DYN_REQUEST_URL /* @min:%2erequestUrl */] + \"')\";\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n return result;\r\n}\r\n/** @ignore */\r\nfunction _throwInternalCritical(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n _throwInternal(ajaxMonitorInstance[strDiagLog](), 1 /* eLoggingSeverity.CRITICAL */, msgId, message, properties, isUserAct);\r\n}\r\n/** @ignore */\r\nfunction _throwInternalWarning(ajaxMonitorInstance, msgId, message, properties, isUserAct) {\r\n _throwInternal(ajaxMonitorInstance[strDiagLog](), 2 /* eLoggingSeverity.WARNING */, msgId, message, properties, isUserAct);\r\n}\r\n/** @Ignore */\r\nfunction _createErrorCallbackFunc(ajaxMonitorInstance, internalMessage, message) {\r\n // tslint:disable-next-line\r\n return function (args) {\r\n _throwInternalCritical(ajaxMonitorInstance, internalMessage, message, {\r\n ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(args[_DYN_INST /* @min:%2einst */]),\r\n exception: dumpObj(args.err)\r\n });\r\n };\r\n}\r\nfunction _indexOf(value, match) {\r\n if (value && match) {\r\n return value.indexOf(match);\r\n }\r\n return -1;\r\n}\r\nfunction _addHandler(container, id, theFunc) {\r\n var theHandler = {\r\n id: id,\r\n fn: theFunc\r\n };\r\n container.push(theHandler);\r\n return {\r\n remove: function () {\r\n arrForEach(container, function (initializer, idx) {\r\n if (initializer.id === theHandler.id) {\r\n container.splice(idx, 1);\r\n return -1;\r\n }\r\n });\r\n }\r\n };\r\n}\r\nfunction _processDependencyContainer(core, container, details, message) {\r\n var result = true;\r\n arrForEach(container, function (theFunc, idx) {\r\n try {\r\n if (theFunc.fn.call(null, details) === false) {\r\n result = false;\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(core && core.logger, 1 /* eLoggingSeverity.CRITICAL */, 64 /* _eInternalMessageId.TelemetryInitializerFailed */, \"Dependency \" + message + \" [#\" + idx + \"] failed: \" + getExceptionName(e), { exception: dumpObj(e) }, true);\r\n }\r\n });\r\n return result;\r\n}\r\nfunction _processDependencyListeners(listeners, core, ajaxData, xhr, input, init) {\r\n var _a;\r\n var initializersCount = listeners[_DYN_LENGTH /* @min:%2elength */];\r\n if (initializersCount > 0) {\r\n var details = (_a = {},\r\n _a[_DYN_CORE /* @min:core */] = core,\r\n _a.xhr = xhr,\r\n _a.input = input,\r\n _a.init = init,\r\n _a.traceId = ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */],\r\n _a.spanId = ajaxData[_DYN_SPAN_ID /* @min:%2espanID */],\r\n _a.traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */],\r\n _a.context = ajaxData[_DYN_CONTEXT /* @min:%2econtext */] || {},\r\n _a);\r\n _processDependencyContainer(core, listeners, details, \"listener\");\r\n ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] = details[_DYN_TRACE_ID0 /* @min:%2etraceId */];\r\n ajaxData[_DYN_SPAN_ID /* @min:%2espanID */] = details[_DYN_SPAN_ID1 /* @min:%2espanId */];\r\n ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = details[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n ajaxData[_DYN_CONTEXT /* @min:%2econtext */] = details[_DYN_CONTEXT /* @min:%2econtext */];\r\n }\r\n}\r\nvar BLOB_CORE = \"*.blob.core.\";\r\nexport var DfltAjaxCorrelationHeaderExDomains = deepFreeze([\r\n BLOB_CORE + \"windows.net\",\r\n BLOB_CORE + \"chinacloudapi.cn\",\r\n BLOB_CORE + \"cloudapi.de\",\r\n BLOB_CORE + \"usgovcloudapi.net\"\r\n]);\r\nvar _internalExcludeEndpoints = [\r\n /https:\\/\\/[^\\/]*(\\.pipe\\.aria|aria\\.pipe|events\\.data|collector\\.azure)\\.[^\\/]+\\/(OneCollector\\/1|Collector\\/3)\\.0/i\r\n];\r\nfunction _getDefaultConfig() {\r\n var _a;\r\n var config = (_a = {},\r\n _a[_DYN_MAX_AJAX_CALLS_PER_V9 /* @min:maxAjaxCallsPerView */] = 500,\r\n _a[_DYN_DISABLE_AJAX_TRACKIN12 /* @min:disableAjaxTracking */] = false,\r\n _a[_DYN_DISABLE_FETCH_TRACKI13 /* @min:disableFetchTracking */] = false,\r\n _a[_DYN_EXCLUDE_REQUEST_FROM11 /* @min:excludeRequestFromAutoTrackingPatterns */] = undefined,\r\n _a.disableCorrelationHeaders = false,\r\n _a.distributedTracingMode = 1 /* eDistributedTracingModes.AI_AND_W3C */,\r\n _a.correlationHeaderExcludedDomains = DfltAjaxCorrelationHeaderExDomains,\r\n _a.correlationHeaderDomains = undefined,\r\n _a.correlationHeaderExcludePatterns = undefined,\r\n _a[_DYN_APP_ID /* @min:appId */] = undefined,\r\n _a.enableCorsCorrelation = false,\r\n _a[_DYN_ENABLE_REQUEST_HEADE6 /* @min:enableRequestHeaderTracking */] = false,\r\n _a[_DYN_ENABLE_RESPONSE_HEAD10 /* @min:enableResponseHeaderTracking */] = false,\r\n _a[_DYN_ENABLE_AJAX_ERROR_ST7 /* @min:enableAjaxErrorStatusText */] = false,\r\n _a[_DYN_ENABLE_AJAX_PERF_TRA8 /* @min:enableAjaxPerfTracking */] = false,\r\n _a.maxAjaxPerfLookupAttempts = 3,\r\n _a[_DYN_AJAX_PERF_LOOKUP_DEL18 /* @min:ajaxPerfLookupDelay */] = 25,\r\n _a.ignoreHeaders = [\r\n \"Authorization\",\r\n \"X-API-Key\",\r\n \"WWW-Authenticate\"\r\n ],\r\n _a[_DYN_ADD_REQUEST_CONTEXT /* @min:addRequestContext */] = undefined,\r\n _a.addIntEndpoints = true,\r\n _a);\r\n return config;\r\n}\r\nfunction _getEmptyConfig() {\r\n var emptyConfig = _getDefaultConfig();\r\n objForEachKey(emptyConfig, function (value) {\r\n emptyConfig[value] = undefined;\r\n });\r\n return emptyConfig;\r\n}\r\nvar AjaxMonitor = /** @class */ (function (_super) {\r\n __extends(AjaxMonitor, _super);\r\n function AjaxMonitor() {\r\n var _this = _super.call(this) || this;\r\n _this.identifier = AjaxMonitor.identifier;\r\n _this.priority = 120;\r\n var _fetchInitialized; // fetch monitoring initialized\r\n var _xhrInitialized; // XHR monitoring initialized\r\n var _currentWindowHost;\r\n var _config;\r\n var _enableRequestHeaderTracking;\r\n var _enableAjaxErrorStatusText;\r\n var _trackAjaxAttempts;\r\n var _context;\r\n var _isUsingW3CHeaders;\r\n var _isUsingAIHeaders;\r\n var _markPrefix;\r\n var _enableAjaxPerfTracking;\r\n var _maxAjaxCallsPerView;\r\n var _enableResponseHeaderTracking;\r\n var _disabledUrls;\r\n var _disableAjaxTracking;\r\n var _disableFetchTracking;\r\n var _excludeRequestFromAutoTrackingPatterns;\r\n var _addRequestContext;\r\n var _evtNamespace;\r\n var _dependencyHandlerId;\r\n var _dependencyListeners;\r\n var _dependencyInitializers;\r\n dynamicProto(AjaxMonitor, _this, function (_self, _base) {\r\n var _addHook = _base._addHook;\r\n _initDefaults();\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n if (!_self.isInitialized()) {\r\n _base.initialize(config, core, extensions, pluginChain);\r\n _evtNamespace = mergeEvtNamespace(createUniqueNamespace(\"ajax\"), core && core.evtNamespace && core.evtNamespace());\r\n _populateDefaults(config);\r\n _instrumentXhr();\r\n _instrumentFetch();\r\n _populateContext();\r\n }\r\n };\r\n _self._doTeardown = function () {\r\n _initDefaults();\r\n };\r\n _self.trackDependencyData = function (dependency, properties) {\r\n _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], null, dependency, properties);\r\n };\r\n _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */] = function (ajaxData, input, init, xhr) {\r\n // Test Hook to allow the overriding of the location host\r\n var currentWindowHost = _self[\"_currentWindowHost\"] || _currentWindowHost;\r\n _processDependencyListeners(_dependencyListeners, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, xhr, input, init);\r\n if (input) { // Fetch\r\n if (CorrelationIdHelper[_DYN_CAN_INCLUDE_CORRELAT3 /* @min:%2ecanIncludeCorrelationHeader */](_config, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {\r\n if (!init) {\r\n init = {};\r\n }\r\n // init headers override original request headers\r\n // so, if they exist use only them, otherwise use request's because they should have been applied in the first place\r\n // not using original request headers will result in them being lost\r\n var headers = new Headers(init[_DYN_HEADERS /* @min:%2eheaders */] || (input instanceof Request ? (input[_DYN_HEADERS /* @min:%2eheaders */] || {}) : {}));\r\n if (_isUsingAIHeaders) {\r\n var id = \"|\" + ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + ajaxData[_DYN_SPAN_ID /* @min:%2espanID */];\r\n headers.set(RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;\r\n }\r\n }\r\n var appId = _config[_DYN_APP_ID /* @min:%2eappId */] || (_context && _context[_DYN_APP_ID /* @min:%2eappId */]());\r\n if (appId) {\r\n headers.set(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n if (isNullOrUndefined(traceFlags)) {\r\n traceFlags = 0x01;\r\n }\r\n var traceParent = formatTraceParent(createTraceParent(ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */], ajaxData[_DYN_SPAN_ID /* @min:%2espanID */], traceFlags));\r\n headers.set(RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;\r\n }\r\n }\r\n init[_DYN_HEADERS /* @min:%2eheaders */] = headers;\r\n }\r\n return init;\r\n }\r\n else if (xhr) { // XHR\r\n if (CorrelationIdHelper[_DYN_CAN_INCLUDE_CORRELAT3 /* @min:%2ecanIncludeCorrelationHeader */](_config, ajaxData[_DYN_GET_ABSOLUTE_URL /* @min:%2egetAbsoluteUrl */](), currentWindowHost)) {\r\n if (_isUsingAIHeaders) {\r\n var id = \"|\" + ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */] + \".\" + ajaxData[_DYN_SPAN_ID /* @min:%2espanID */];\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[3 /* eRequestHeaders.requestIdHeader */], id);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[3 /* eRequestHeaders.requestIdHeader */]] = id;\r\n }\r\n }\r\n var appId = _config[_DYN_APP_ID /* @min:%2eappId */] || (_context && _context[_DYN_APP_ID /* @min:%2eappId */]());\r\n if (appId) {\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[0 /* eRequestHeaders.requestContextHeader */], RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]] = RequestHeaders[2 /* eRequestHeaders.requestContextAppIdFormat */] + appId;\r\n }\r\n }\r\n if (_isUsingW3CHeaders) {\r\n var traceFlags = ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */];\r\n if (isNullOrUndefined(traceFlags)) {\r\n traceFlags = 0x01;\r\n }\r\n var traceParent = formatTraceParent(createTraceParent(ajaxData[_DYN_TRACE_ID /* @min:%2etraceID */], ajaxData[_DYN_SPAN_ID /* @min:%2espanID */], traceFlags));\r\n xhr[_DYN_SET_REQUEST_HEADER /* @min:%2esetRequestHeader */](RequestHeaders[4 /* eRequestHeaders.traceParentHeader */], traceParent);\r\n if (_enableRequestHeaderTracking) {\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][RequestHeaders[4 /* eRequestHeaders.traceParentHeader */]] = traceParent;\r\n }\r\n }\r\n }\r\n return xhr;\r\n }\r\n return undefined;\r\n };\r\n _self[_DYN_TRACK_DEPENDENCY_DAT4 /* @min:%2etrackDependencyDataInternal */] = function (dependency, properties, systemProperties) {\r\n if (_maxAjaxCallsPerView === -1 || _trackAjaxAttempts < _maxAjaxCallsPerView) {\r\n // Hack since expected format in w3c mode is |abc.def.\r\n // Non-w3c format is |abc.def\r\n // @todo Remove if better solution is available, e.g. handle in portal\r\n if ((_config[_DYN_DISTRIBUTED_TRACING_5 /* @min:%2edistributedTracingMode */] === 2 /* eDistributedTracingModes.W3C */\r\n || _config[_DYN_DISTRIBUTED_TRACING_5 /* @min:%2edistributedTracingMode */] === 1 /* eDistributedTracingModes.AI_AND_W3C */)\r\n && typeof dependency.id === \"string\" && dependency.id[dependency.id[_DYN_LENGTH /* @min:%2elength */] - 1] !== \".\") {\r\n dependency.id += \".\";\r\n }\r\n if (isNullOrUndefined(dependency[_DYN_START_TIME /* @min:%2estartTime */])) {\r\n dependency[_DYN_START_TIME /* @min:%2estartTime */] = new Date();\r\n }\r\n var item = createTelemetryItem(dependency, RemoteDependencyData.dataType, RemoteDependencyData.envelopeType, _self[strDiagLog](), properties, systemProperties);\r\n _self[_DYN_CORE /* @min:%2ecore */].track(item);\r\n }\r\n else if (_trackAjaxAttempts === _maxAjaxCallsPerView) {\r\n _throwInternalCritical(_self, 55 /* _eInternalMessageId.MaxAjaxPerPVExceeded */, \"Maximum ajax per page view limit reached, ajax monitoring is paused until the next trackPageView(). In order to increase the limit set the maxAjaxCallsPerView configuration parameter.\", true);\r\n }\r\n ++_trackAjaxAttempts;\r\n };\r\n _self.addDependencyListener = function (dependencyListener) {\r\n return _addHandler(_dependencyListeners, _dependencyHandlerId++, dependencyListener);\r\n };\r\n _self.addDependencyInitializer = function (dependencyInitializer) {\r\n return _addHandler(_dependencyInitializers, _dependencyHandlerId++, dependencyInitializer);\r\n };\r\n function _initDefaults() {\r\n var location = getLocation();\r\n _fetchInitialized = false; // fetch monitoring initialized\r\n _xhrInitialized = false; // XHR monitoring initialized\r\n _currentWindowHost = location && location.host && location.host[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n _config = AjaxMonitor.getEmptyConfig();\r\n _enableRequestHeaderTracking = false;\r\n _enableAjaxErrorStatusText = false;\r\n _trackAjaxAttempts = 0;\r\n _context = null;\r\n _isUsingW3CHeaders = false;\r\n _isUsingAIHeaders = false;\r\n _markPrefix = null;\r\n _enableAjaxPerfTracking = false;\r\n _maxAjaxCallsPerView = 0;\r\n _enableResponseHeaderTracking = false;\r\n _disabledUrls = {};\r\n _disableAjaxTracking = false;\r\n _disableFetchTracking = false;\r\n _excludeRequestFromAutoTrackingPatterns = null;\r\n _addRequestContext = null;\r\n _evtNamespace = null;\r\n _dependencyHandlerId = 0;\r\n _dependencyListeners = [];\r\n _dependencyInitializers = [];\r\n }\r\n function _populateDefaults(config) {\r\n var ctx = createProcessTelemetryContext(null, config, _self[_DYN_CORE /* @min:%2ecore */]);\r\n // Reset to the empty config\r\n _config = _getEmptyConfig();\r\n var defaultConfig = _getDefaultConfig();\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _config[field] = ctx.getConfig(AjaxMonitor.identifier, field, value);\r\n });\r\n var distributedTracingMode = _config[_DYN_DISTRIBUTED_TRACING_5 /* @min:%2edistributedTracingMode */];\r\n _enableRequestHeaderTracking = _config[_DYN_ENABLE_REQUEST_HEADE6 /* @min:%2eenableRequestHeaderTracking */];\r\n _enableAjaxErrorStatusText = _config[_DYN_ENABLE_AJAX_ERROR_ST7 /* @min:%2eenableAjaxErrorStatusText */];\r\n _enableAjaxPerfTracking = _config[_DYN_ENABLE_AJAX_PERF_TRA8 /* @min:%2eenableAjaxPerfTracking */];\r\n _maxAjaxCallsPerView = _config[_DYN_MAX_AJAX_CALLS_PER_V9 /* @min:%2emaxAjaxCallsPerView */];\r\n _enableResponseHeaderTracking = _config[_DYN_ENABLE_RESPONSE_HEAD10 /* @min:%2eenableResponseHeaderTracking */];\r\n _excludeRequestFromAutoTrackingPatterns = [].concat(_config[_DYN_EXCLUDE_REQUEST_FROM11 /* @min:%2eexcludeRequestFromAutoTrackingPatterns */] || [], _config.addIntEndpoints !== false ? _internalExcludeEndpoints : []);\r\n _addRequestContext = _config[_DYN_ADD_REQUEST_CONTEXT /* @min:%2eaddRequestContext */];\r\n _isUsingAIHeaders = distributedTracingMode === 0 /* eDistributedTracingModes.AI */ || distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */;\r\n _isUsingW3CHeaders = distributedTracingMode === 1 /* eDistributedTracingModes.AI_AND_W3C */ || distributedTracingMode === 2 /* eDistributedTracingModes.W3C */;\r\n if (_enableAjaxPerfTracking) {\r\n var iKey = config.instrumentationKey || \"unkwn\";\r\n if (iKey[_DYN_LENGTH /* @min:%2elength */] > 5) {\r\n _markPrefix = AJAX_MONITOR_PREFIX + iKey.substring(iKey[_DYN_LENGTH /* @min:%2elength */] - 5) + \".\";\r\n }\r\n else {\r\n _markPrefix = AJAX_MONITOR_PREFIX + iKey + \".\";\r\n }\r\n }\r\n _disableAjaxTracking = !!_config[_DYN_DISABLE_AJAX_TRACKIN12 /* @min:%2edisableAjaxTracking */];\r\n _disableFetchTracking = !!_config[_DYN_DISABLE_FETCH_TRACKI13 /* @min:%2edisableFetchTracking */];\r\n }\r\n function _populateContext() {\r\n var propExt = _self[_DYN_CORE /* @min:%2ecore */].getPlugin(PropertiesPluginIdentifier);\r\n if (propExt) {\r\n _context = propExt.plugin[_DYN_CONTEXT /* @min:%2econtext */]; // we could move IPropertiesPlugin to common as well\r\n }\r\n }\r\n // discard the header if it's defined as ignoreHeaders in ICorrelationConfig\r\n function _canIncludeHeaders(header) {\r\n var rlt = true;\r\n if (header || _config.ignoreHeaders) {\r\n arrForEach(_config.ignoreHeaders, (function (key) {\r\n if (key[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]() === header[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]()) {\r\n rlt = false;\r\n return -1;\r\n }\r\n }));\r\n }\r\n return rlt;\r\n }\r\n // Fetch Stuff\r\n function _instrumentFetch() {\r\n var fetch = _supportsFetch();\r\n if (!fetch) {\r\n return;\r\n }\r\n var global = getGlobal();\r\n var isPolyfill = fetch.polyfill;\r\n if (!_disableFetchTracking && !_fetchInitialized) {\r\n _addHook(InstrumentFunc(global, strFetch, {\r\n ns: _evtNamespace,\r\n // Add request hook\r\n req: function (callDetails, input, init) {\r\n var fetchData;\r\n if (!_disableFetchTracking && _fetchInitialized &&\r\n !_isDisabledRequest(null, input, init) &&\r\n // If we have a polyfil and XHR instrumented then let XHR report otherwise we get duplicates\r\n !(isPolyfill && _xhrInitialized)) {\r\n var ctx = callDetails.ctx();\r\n fetchData = _createFetchRecord(input, init);\r\n var newInit = _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](fetchData, input, init);\r\n if (newInit !== init) {\r\n callDetails.set(1, newInit);\r\n }\r\n ctx.data = fetchData;\r\n }\r\n },\r\n rsp: function (callDetails, input) {\r\n if (!_disableFetchTracking) {\r\n var fetchData_1 = callDetails.ctx().data;\r\n if (fetchData_1) {\r\n // Replace the result with the new promise from this code\r\n callDetails.rslt = callDetails.rslt.then(function (response) {\r\n _reportFetchMetrics(callDetails, (response || {})[_DYN_STATUS /* @min:%2estatus */], input, response, fetchData_1, function () {\r\n var _a;\r\n var ajaxResponse = (_a = {\r\n statusText: response[_DYN_STATUS_TEXT /* @min:%2estatusText */]\r\n },\r\n _a[_DYN_HEADER_MAP /* @min:headerMap */] = null,\r\n _a[_DYN_CORRELATION_CONTEXT /* @min:correlationContext */] = _getFetchCorrelationContext(response),\r\n _a);\r\n if (_enableResponseHeaderTracking) {\r\n var responseHeaderMap_1 = {};\r\n response.headers.forEach(function (value, name) {\r\n if (_canIncludeHeaders(name)) {\r\n responseHeaderMap_1[name] = value;\r\n }\r\n });\r\n ajaxResponse[_DYN_HEADER_MAP /* @min:%2eheaderMap */] = responseHeaderMap_1;\r\n }\r\n return ajaxResponse;\r\n });\r\n return response;\r\n })[\"catch\"](function (reason) {\r\n _reportFetchMetrics(callDetails, 0, input, null, fetchData_1, null, { error: reason.message });\r\n throw reason;\r\n });\r\n }\r\n }\r\n },\r\n // Create an error callback to report any hook errors\r\n hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to monitor Window.fetch\" + ERROR_POSTFIX)\r\n }));\r\n _fetchInitialized = true;\r\n }\r\n else if (isPolyfill) {\r\n // If fetch is a polyfill we need to capture the request to ensure that we correctly track\r\n // disabled request URLS (i.e. internal urls) to ensure we don't end up in a constant loop\r\n // of reporting ourselves, for example React Native uses a polyfill for fetch\r\n // Note: Polyfill implementations that don't support the \"poyyfill\" tag are not supported\r\n // the workaround is to add a polyfill property to your fetch implementation before initializing\r\n // App Insights\r\n _addHook(InstrumentFunc(global, strFetch, {\r\n ns: _evtNamespace,\r\n req: function (callDetails, input, init) {\r\n // Just call so that we record any disabled URL\r\n _isDisabledRequest(null, input, init);\r\n }\r\n }));\r\n }\r\n if (isPolyfill) {\r\n // retag the instrumented fetch with the same polyfill settings this is mostly for testing\r\n // But also supports multiple App Insights usages\r\n global[strFetch].polyfill = isPolyfill;\r\n }\r\n }\r\n function _hookProto(target, funcName, callbacks) {\r\n _addHook(InstrumentProto(target, funcName, callbacks));\r\n }\r\n function _instrumentXhr() {\r\n if (_supportsAjaxMonitoring(_self) && !_disableAjaxTracking && !_xhrInitialized) {\r\n // Instrument open\r\n _hookProto(XMLHttpRequest, \"open\", {\r\n ns: _evtNamespace,\r\n req: function (args, method, url, async) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = args[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = xhr[strAjaxData];\r\n if (!_isDisabledRequest(xhr, url) && _isMonitoredXhrInstance(xhr, true)) {\r\n if (!ajaxData || !ajaxData.xhrMonitoringState[_DYN_OPEN_DONE /* @min:%2eopenDone */]) {\r\n // Only create a single ajaxData (even when multiple AI instances are running)\r\n _openHandler(xhr, method, url, async);\r\n }\r\n // always attach to the on ready state change (required for handling multiple instances)\r\n _attachToOnReadyStateChange(xhr);\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, ERROR_HEADER + \".open\" + ERROR_POSTFIX)\r\n });\r\n // Instrument send\r\n _hookProto(XMLHttpRequest, \"send\", {\r\n ns: _evtNamespace,\r\n req: function (args, context) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = args[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = xhr[strAjaxData];\r\n if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */]) {\r\n _createMarkId(\"xhr\", ajaxData);\r\n ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = dateTimeUtilsNow();\r\n _self[_DYN_INCLUDE_CORRELATION_2 /* @min:%2eincludeCorrelationHeaders */](ajaxData, undefined, undefined, xhr);\r\n ajaxData.xhrMonitoringState[_DYN_SEND_DONE /* @min:%2esendDone */] = true;\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 17 /* _eInternalMessageId.FailedMonitorAjaxSend */, ERROR_HEADER + ERROR_POSTFIX)\r\n });\r\n // Instrument abort\r\n _hookProto(XMLHttpRequest, \"abort\", {\r\n ns: _evtNamespace,\r\n req: function (args) {\r\n if (!_disableAjaxTracking) {\r\n var xhr = args[_DYN_INST /* @min:%2einst */];\r\n var ajaxData = xhr[strAjaxData];\r\n if (_isMonitoredXhrInstance(xhr) && !ajaxData.xhrMonitoringState[_DYN_ABORT_DONE /* @min:%2eabortDone */]) {\r\n ajaxData.aborted = 1;\r\n ajaxData.xhrMonitoringState[_DYN_ABORT_DONE /* @min:%2eabortDone */] = true;\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 13 /* _eInternalMessageId.FailedMonitorAjaxAbort */, ERROR_HEADER + \".abort\" + ERROR_POSTFIX)\r\n });\r\n // Instrument setRequestHeader\r\n _hookProto(XMLHttpRequest, \"setRequestHeader\", {\r\n ns: _evtNamespace,\r\n req: function (args, header, value) {\r\n if (!_disableAjaxTracking && _enableRequestHeaderTracking) {\r\n var xhr = args[_DYN_INST /* @min:%2einst */];\r\n if (_isMonitoredXhrInstance(xhr) && _canIncludeHeaders(header)) {\r\n xhr[strAjaxData][_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */][header] = value;\r\n }\r\n }\r\n },\r\n hkErr: _createErrorCallbackFunc(_self, 71 /* _eInternalMessageId.FailedMonitorAjaxSetRequestHeader */, ERROR_HEADER + \".setRequestHeader\" + ERROR_POSTFIX)\r\n });\r\n _xhrInitialized = true;\r\n }\r\n }\r\n function _isDisabledRequest(xhr, request, init) {\r\n var isDisabled = false;\r\n var theUrl = ((!isString(request) ? (request || {}).url || \"\" : request) || \"\")[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */]();\r\n // check excludeRequestFromAutoTrackingPatterns before stripping off any query string\r\n arrForEach(_excludeRequestFromAutoTrackingPatterns, function (regex) {\r\n var theRegex = regex;\r\n if (isString(regex)) {\r\n theRegex = new RegExp(regex);\r\n }\r\n if (!isDisabled) {\r\n isDisabled = theRegex.test(theUrl);\r\n }\r\n });\r\n // if request url matches with exclude regex pattern, return true and no need to check for headers\r\n if (isDisabled) {\r\n return isDisabled;\r\n }\r\n var idx = _indexOf(theUrl, \"?\");\r\n var idx2 = _indexOf(theUrl, \"#\");\r\n if (idx === -1 || (idx2 !== -1 && idx2 < idx)) {\r\n idx = idx2;\r\n }\r\n if (idx !== -1) {\r\n // Strip off any Query string\r\n theUrl = theUrl.substring(0, idx);\r\n }\r\n // check that this instance is not not used by ajax call performed inside client side monitoring to send data to collector\r\n if (!isNullOrUndefined(xhr)) {\r\n // Look on the XMLHttpRequest of the URL string value\r\n isDisabled = xhr[DisabledPropertyName] === true || theUrl[DisabledPropertyName] === true;\r\n }\r\n else if (!isNullOrUndefined(request)) { // fetch\r\n // Look for DisabledPropertyName in either Request or RequestInit\r\n isDisabled = (typeof request === \"object\" ? request[DisabledPropertyName] === true : false) ||\r\n (init ? init[DisabledPropertyName] === true : false);\r\n }\r\n // Also add extra check just in case the XHR or fetch objects where not decorated with the DisableProperty due to sealing or freezing\r\n if (!isDisabled && theUrl && isInternalApplicationInsightsEndpoint(theUrl)) {\r\n isDisabled = true;\r\n }\r\n if (isDisabled) {\r\n // Add the disabled url if not present\r\n if (!_disabledUrls[theUrl]) {\r\n _disabledUrls[theUrl] = 1;\r\n }\r\n }\r\n else {\r\n // Check to see if the url is listed as disabled\r\n if (_disabledUrls[theUrl]) {\r\n isDisabled = true;\r\n }\r\n }\r\n return isDisabled;\r\n }\r\n /// <summary>Verifies that particalar instance of XMLHttpRequest needs to be monitored</summary>\r\n /// <param name=\"excludeAjaxDataValidation\">Optional parameter. True if ajaxData must be excluded from verification</param>\r\n /// <returns type=\"bool\">True if instance needs to be monitored, otherwise false</returns>\r\n function _isMonitoredXhrInstance(xhr, excludeAjaxDataValidation) {\r\n var ajaxValidation = true;\r\n var initialized = _xhrInitialized;\r\n if (!isNullOrUndefined(xhr)) {\r\n ajaxValidation = excludeAjaxDataValidation === true || !isNullOrUndefined(xhr[strAjaxData]);\r\n }\r\n // checking to see that all interested functions on xhr were instrumented\r\n return initialized\r\n // checking on ajaxData to see that it was not removed in user code\r\n && ajaxValidation;\r\n }\r\n function _getDistributedTraceCtx() {\r\n var distributedTraceCtx = null;\r\n if (_self[_DYN_CORE /* @min:%2ecore */] && _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx) {\r\n distributedTraceCtx = _self[_DYN_CORE /* @min:%2ecore */].getTraceCtx(false);\r\n }\r\n // Fall back\r\n if (!distributedTraceCtx && _context && _context.telemetryTrace) {\r\n distributedTraceCtx = createDistributedTraceContextFromTrace(_context.telemetryTrace);\r\n }\r\n return distributedTraceCtx;\r\n }\r\n function _openHandler(xhr, method, url, async) {\r\n var _a;\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n var traceID = (distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */]()) || generateW3CId();\r\n var spanID = generateW3CId().substr(0, 16);\r\n var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog](), (_a = _self.core) === null || _a === void 0 ? void 0 : _a.getTraceCtx());\r\n ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */]();\r\n ajaxData[_DYN_METHOD /* @min:%2emethod */] = method;\r\n ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = url;\r\n ajaxData.xhrMonitoringState[_DYN_OPEN_DONE /* @min:%2eopenDone */] = true;\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = {};\r\n ajaxData.async = async;\r\n ajaxData[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */] = _enableAjaxErrorStatusText;\r\n xhr[strAjaxData] = ajaxData;\r\n }\r\n function _attachToOnReadyStateChange(xhr) {\r\n xhr[strAjaxData].xhrMonitoringState[_DYN_STATE_CHANGE_ATTACHE14 /* @min:%2estateChangeAttached */] = eventOn(xhr, \"readystatechange\", function () {\r\n var _a;\r\n try {\r\n if (xhr && xhr.readyState === 4 && _isMonitoredXhrInstance(xhr)) {\r\n _onAjaxComplete(xhr);\r\n }\r\n }\r\n catch (e) {\r\n var exceptionText = dumpObj(e);\r\n // ignore messages with c00c023f, as this a known IE9 XHR abort issue\r\n if (!exceptionText || _indexOf(exceptionText[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](), \"c00c023f\") === -1) {\r\n _throwInternalCritical(_self, 16 /* _eInternalMessageId.FailedMonitorAjaxRSC */, ERROR_HEADER + \" 'readystatechange' event handler\" + ERROR_POSTFIX, (_a = {},\r\n _a[_DYN_AJAX_DIAGNOSTICS_MES19 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr),\r\n _a.exception = exceptionText,\r\n _a));\r\n }\r\n }\r\n }, _evtNamespace);\r\n }\r\n function _getResponseText(xhr) {\r\n try {\r\n var responseType = xhr.responseType;\r\n if (responseType === \"\" || responseType === \"text\") {\r\n // As per the specification responseText is only valid if the type is an empty string or \"text\"\r\n return xhr[_DYN_RESPONSE_TEXT /* @min:%2eresponseText */];\r\n }\r\n }\r\n catch (e) {\r\n // This shouldn't happen because of the above check -- but just in case, so just ignore\r\n }\r\n return null;\r\n }\r\n function _onAjaxComplete(xhr) {\r\n var ajaxData = xhr[strAjaxData];\r\n ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */] = dateTimeUtilsNow();\r\n ajaxData[_DYN_STATUS /* @min:%2estatus */] = xhr[_DYN_STATUS /* @min:%2estatus */];\r\n function _reportXhrError(e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"ajaxDiagnosticsMessage\"] = _getFailedAjaxDiagnosticsMessage(xhr);\r\n if (e) {\r\n errorProps[\"exception\"] = dumpObj(e);\r\n }\r\n _throwInternalWarning(_self, 14 /* _eInternalMessageId.FailedMonitorAjaxDur */, FAILED_TO_CALCULATE_DURATION_ERROR + \"ajax call\" + ERROR_NOT_SENT, errorProps);\r\n }\r\n _findPerfResourceEntry(\"xmlhttprequest\", ajaxData, function () {\r\n try {\r\n var dependency = ajaxData[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */](\"Ajax\", _enableRequestHeaderTracking, function () {\r\n var _a;\r\n var ajaxResponse = (_a = {\r\n statusText: xhr[_DYN_STATUS_TEXT /* @min:%2estatusText */]\r\n },\r\n _a[_DYN_HEADER_MAP /* @min:headerMap */] = null,\r\n _a[_DYN_CORRELATION_CONTEXT /* @min:correlationContext */] = _getAjaxCorrelationContext(xhr),\r\n _a.type = xhr.responseType,\r\n _a[_DYN_RESPONSE_TEXT /* @min:responseText */] = _getResponseText(xhr),\r\n _a.response = xhr[_DYN_RESPONSE /* @min:%2eresponse */],\r\n _a);\r\n if (_enableResponseHeaderTracking) {\r\n var headers = xhr[_DYN_GET_ALL_RESPONSE_HEA16 /* @min:%2egetAllResponseHeaders */]();\r\n if (headers) {\r\n // xhr.getAllResponseHeaders() method returns all the response headers, separated by CRLF, as a string or null\r\n // the regex converts the header string into an array of individual headers\r\n var arr = strTrim(headers).split(/[\\r\\n]+/);\r\n var responseHeaderMap_2 = {};\r\n arrForEach(arr, function (line) {\r\n var parts = line.split(\": \");\r\n var header = parts.shift();\r\n var value = parts.join(\": \");\r\n if (_canIncludeHeaders(header)) {\r\n responseHeaderMap_2[header] = value;\r\n }\r\n });\r\n ajaxResponse[_DYN_HEADER_MAP /* @min:%2eheaderMap */] = responseHeaderMap_2;\r\n }\r\n }\r\n return ajaxResponse;\r\n });\r\n var properties = void 0;\r\n try {\r\n if (!!_addRequestContext) {\r\n properties = _addRequestContext({ status: xhr[_DYN_STATUS /* @min:%2estatus */], xhr: xhr });\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);\r\n }\r\n if (dependency) {\r\n if (properties !== undefined) {\r\n dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);\r\n }\r\n var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();\r\n _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);\r\n }\r\n else {\r\n _reportXhrError(null, {\r\n requestSentTime: ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */],\r\n responseFinishedTime: ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */]\r\n });\r\n }\r\n }\r\n finally {\r\n // cleanup telemetry data\r\n try {\r\n xhr[strAjaxData] = null;\r\n }\r\n catch (e) {\r\n // May throw in environments that prevent extension or freeze xhr\r\n }\r\n }\r\n }, function (e) {\r\n _reportXhrError(e, null);\r\n });\r\n }\r\n function _getAjaxCorrelationContext(xhr) {\r\n var _a;\r\n try {\r\n var responseHeadersString = xhr[_DYN_GET_ALL_RESPONSE_HEA16 /* @min:%2egetAllResponseHeaders */]();\r\n if (responseHeadersString !== null) {\r\n var index = _indexOf(responseHeadersString[_DYN_TO_LOWER_CASE /* @min:%2etoLowerCase */](), RequestHeaders[8 /* eRequestHeaders.requestContextHeaderLowerCase */]);\r\n if (index !== -1) {\r\n var responseHeader = xhr.getResponseHeader(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);\r\n return CorrelationIdHelper[_DYN_GET_CORRELATION_CONT17 /* @min:%2egetCorrelationContext */](responseHeader);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, (_a = {},\r\n _a[_DYN_AJAX_DIAGNOSTICS_MES19 /* @min:ajaxDiagnosticsMessage */] = _getFailedAjaxDiagnosticsMessage(xhr),\r\n _a.exception = dumpObj(e),\r\n _a));\r\n }\r\n }\r\n function _createMarkId(type, ajaxData) {\r\n if (ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] && _markPrefix && _enableAjaxPerfTracking) {\r\n var performance_1 = getPerformance();\r\n if (performance_1 && isFunction(performance_1.mark)) {\r\n _markCount++;\r\n var markId = _markPrefix + type + \"#\" + _markCount;\r\n performance_1.mark(markId);\r\n var entries = performance_1.getEntriesByName(markId);\r\n if (entries && entries[_DYN_LENGTH /* @min:%2elength */] === 1) {\r\n ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */] = entries[0];\r\n }\r\n }\r\n }\r\n }\r\n function _findPerfResourceEntry(initiatorType, ajaxData, trackCallback, reportError) {\r\n var perfMark = ajaxData[_DYN_PERF_MARK /* @min:%2eperfMark */];\r\n var performance = getPerformance();\r\n var maxAttempts = _config.maxAjaxPerfLookupAttempts;\r\n var retryDelay = _config[_DYN_AJAX_PERF_LOOKUP_DEL18 /* @min:%2eajaxPerfLookupDelay */];\r\n var requestUrl = ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */];\r\n var attempt = 0;\r\n (function locateResourceTiming() {\r\n try {\r\n if (performance && perfMark) {\r\n attempt++;\r\n var perfTiming = null;\r\n var entries = performance.getEntries();\r\n for (var lp = entries[_DYN_LENGTH /* @min:%2elength */] - 1; lp >= 0; lp--) {\r\n var entry = entries[lp];\r\n if (entry) {\r\n if (entry.entryType === \"resource\") {\r\n if (entry.initiatorType === initiatorType &&\r\n (_indexOf(entry[_DYN_NAME /* @min:%2ename */], requestUrl) !== -1 || _indexOf(requestUrl, entry[_DYN_NAME /* @min:%2ename */]) !== -1)) {\r\n perfTiming = entry;\r\n }\r\n }\r\n else if (entry.entryType === \"mark\" && entry[_DYN_NAME /* @min:%2ename */] === perfMark[_DYN_NAME /* @min:%2ename */]) {\r\n // We hit the start event\r\n ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */] = perfTiming;\r\n break;\r\n }\r\n if (entry[_DYN_START_TIME /* @min:%2estartTime */] < perfMark[_DYN_START_TIME /* @min:%2estartTime */] - 1000) {\r\n // Fallback to try and reduce the time spent looking for the perf entry\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if (!perfMark || // - we don't have a perfMark or\r\n ajaxData[_DYN_PERF_TIMING /* @min:%2eperfTiming */] || // - we have not found the perf entry or\r\n attempt >= maxAttempts || // - we have tried too many attempts or\r\n ajaxData.async === false) { // - this is a sync request\r\n if (perfMark && isFunction(performance.clearMarks)) {\r\n // Remove the mark so we don't fill up the performance resources too much\r\n performance.clearMarks(perfMark[_DYN_NAME /* @min:%2ename */]);\r\n }\r\n ajaxData.perfAttempts = attempt;\r\n // just continue and report the track event\r\n trackCallback();\r\n }\r\n else {\r\n // We need to wait for the browser to populate the window.performance entry\r\n // This needs to be at least 1ms as waiting <= 1 (on firefox) is not enough time for fetch or xhr,\r\n // this is a scheduling issue for the browser implementation\r\n setTimeout(locateResourceTiming, retryDelay);\r\n }\r\n }\r\n catch (e) {\r\n reportError(e);\r\n }\r\n })();\r\n }\r\n function _createFetchRecord(input, init) {\r\n var _a;\r\n var distributedTraceCtx = _getDistributedTraceCtx();\r\n var traceID = (distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_ID /* @min:%2egetTraceId */]()) || generateW3CId();\r\n var spanID = generateW3CId().substr(0, 16);\r\n var ajaxData = new ajaxRecord(traceID, spanID, _self[strDiagLog](), (_a = _self.core) === null || _a === void 0 ? void 0 : _a.getTraceCtx());\r\n ajaxData[_DYN_TRACE_FLAGS /* @min:%2etraceFlags */] = distributedTraceCtx && distributedTraceCtx[_DYN_GET_TRACE_FLAGS /* @min:%2egetTraceFlags */]();\r\n ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */] = dateTimeUtilsNow();\r\n ajaxData[_DYN_ERROR_STATUS_TEXT /* @min:%2eerrorStatusText */] = _enableAjaxErrorStatusText;\r\n if (input instanceof Request) {\r\n ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = input ? input.url : \"\";\r\n }\r\n else {\r\n ajaxData[_DYN_REQUEST_URL /* @min:%2erequestUrl */] = input;\r\n }\r\n var method = \"GET\";\r\n if (init && init[_DYN_METHOD /* @min:%2emethod */]) {\r\n method = init[_DYN_METHOD /* @min:%2emethod */];\r\n }\r\n else if (input && input instanceof Request) {\r\n method = input[_DYN_METHOD /* @min:%2emethod */];\r\n }\r\n ajaxData[_DYN_METHOD /* @min:%2emethod */] = method;\r\n var requestHeaders = {};\r\n if (_enableRequestHeaderTracking) {\r\n var headers = new Headers((init ? init[_DYN_HEADERS /* @min:%2eheaders */] : 0) || (input instanceof Request ? (input[_DYN_HEADERS /* @min:%2eheaders */] || {}) : {}));\r\n headers.forEach(function (value, key) {\r\n if (_canIncludeHeaders(key)) {\r\n requestHeaders[key] = value;\r\n }\r\n });\r\n }\r\n ajaxData[_DYN_REQUEST_HEADERS /* @min:%2erequestHeaders */] = requestHeaders;\r\n _createMarkId(\"fetch\", ajaxData);\r\n return ajaxData;\r\n }\r\n function _getFailedFetchDiagnosticsMessage(input) {\r\n var result = \"\";\r\n try {\r\n if (!isNullOrUndefined(input)) {\r\n if (typeof (input) === \"string\") {\r\n result += \"(url: '\".concat(input, \"')\");\r\n }\r\n else {\r\n result += \"(url: '\".concat(input.url, \"')\");\r\n }\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalCritical(_self, 15 /* _eInternalMessageId.FailedMonitorAjaxOpen */, \"Failed to grab failed fetch diagnostics message\", { exception: dumpObj(e) });\r\n }\r\n return result;\r\n }\r\n function _reportFetchMetrics(callDetails, status, input, response, ajaxData, getResponse, properties) {\r\n if (!ajaxData) {\r\n return;\r\n }\r\n function _reportFetchError(msgId, e, failedProps) {\r\n var errorProps = failedProps || {};\r\n errorProps[\"fetchDiagnosticsMessage\"] = _getFailedFetchDiagnosticsMessage(input);\r\n if (e) {\r\n errorProps[\"exception\"] = dumpObj(e);\r\n }\r\n _throwInternalWarning(_self, msgId, FAILED_TO_CALCULATE_DURATION_ERROR + \"fetch call\" + ERROR_NOT_SENT, errorProps);\r\n }\r\n ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */] = dateTimeUtilsNow();\r\n ajaxData[_DYN_STATUS /* @min:%2estatus */] = status;\r\n _findPerfResourceEntry(\"fetch\", ajaxData, function () {\r\n var dependency = ajaxData[_DYN__CREATE_TRACK_ITEM /* @min:%2eCreateTrackItem */](\"Fetch\", _enableRequestHeaderTracking, getResponse);\r\n var properties;\r\n try {\r\n if (!!_addRequestContext) {\r\n properties = _addRequestContext({ status: status, request: input, response: response });\r\n }\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 104 /* _eInternalMessageId.FailedAddingCustomDefinedRequestContext */, CUSTOM_REQUEST_CONTEXT_ERROR);\r\n }\r\n if (dependency) {\r\n if (properties !== undefined) {\r\n dependency[STR_PROPERTIES /* @min:%2eproperties */] = __assign(__assign({}, dependency.properties), properties);\r\n }\r\n var sysProperties = ajaxData[_DYN_GET_PART_APROPS /* @min:%2egetPartAProps */]();\r\n _reportDependencyInternal(_dependencyInitializers, _self[_DYN_CORE /* @min:%2ecore */], ajaxData, dependency, null, sysProperties);\r\n }\r\n else {\r\n _reportFetchError(14 /* _eInternalMessageId.FailedMonitorAjaxDur */, null, {\r\n requestSentTime: ajaxData[_DYN_REQUEST_SENT_TIME /* @min:%2erequestSentTime */],\r\n responseFinishedTime: ajaxData[_DYN_RESPONSE_FINISHED_TI15 /* @min:%2eresponseFinishedTime */]\r\n });\r\n }\r\n }, function (e) {\r\n _reportFetchError(18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, e, null);\r\n });\r\n }\r\n function _getFetchCorrelationContext(response) {\r\n if (response && response[_DYN_HEADERS /* @min:%2eheaders */]) {\r\n try {\r\n var responseHeader = response[_DYN_HEADERS /* @min:%2eheaders */].get(RequestHeaders[0 /* eRequestHeaders.requestContextHeader */]);\r\n return CorrelationIdHelper[_DYN_GET_CORRELATION_CONT17 /* @min:%2egetCorrelationContext */](responseHeader);\r\n }\r\n catch (e) {\r\n _throwInternalWarning(_self, 18 /* _eInternalMessageId.FailedMonitorAjaxGetCorrelationHeader */, CORRELATION_HEADER_ERROR, {\r\n fetchDiagnosticsMessage: _getFailedFetchDiagnosticsMessage(response),\r\n exception: dumpObj(e)\r\n });\r\n }\r\n }\r\n }\r\n function _reportDependencyInternal(initializers, core, ajaxData, dependency, properties, systemProperties) {\r\n var _a;\r\n var result = true;\r\n var initializersCount = initializers[_DYN_LENGTH /* @min:%2elength */];\r\n if (initializersCount > 0) {\r\n var details = (_a = {\r\n item: dependency\r\n },\r\n _a[STR_PROPERTIES /* @min:properties */] = properties,\r\n _a.sysProperties = systemProperties,\r\n _a.context = ajaxData ? ajaxData[_DYN_CONTEXT /* @min:%2econtext */] : null,\r\n _a);\r\n result = _processDependencyContainer(core, initializers, details, \"initializer\");\r\n }\r\n if (result) {\r\n _self[_DYN_TRACK_DEPENDENCY_DAT4 /* @min:%2etrackDependencyDataInternal */](dependency, properties, systemProperties);\r\n }\r\n }\r\n });\r\n return _this;\r\n }\r\n// Removed Stub for AjaxMonitor.prototype.initialize.\r\n AjaxMonitor.prototype.processTelemetry = function (item, itemCtx) {\r\n this.processNext(item, itemCtx);\r\n };\r\n// Removed Stub for AjaxMonitor.prototype.trackDependencyData.\r\n// Removed Stub for AjaxMonitor.prototype.includeCorrelationHeaders.\r\n// Removed Stub for AjaxMonitor.prototype.addDependencyListener.\r\n /**\r\n * Add an dependency telemetry initializer callback function to allow populating additional properties or drop the request.\r\n * It is called after the dependency call has completed and any available performance details are available. A dependency\r\n * initializer is similar to the TelemetryInitializer function but it allows you to block the reporting of the dependency\r\n * request so that it doesn't count against the `maxAjaxCallsPerView`.\r\n * @param dependencyInitializer - The Dependency Telemetry Initializer function\r\n * @returns - A IDependencyInitializerHandler to enable the initializer to be removed\r\n */\r\n AjaxMonitor.prototype.addDependencyInitializer = function (dependencyInitializer) {\r\n return null;\r\n };\r\n// Removed Stub for AjaxMonitor.prototype.trackDependencyDataInternal.\r\n AjaxMonitor.identifier = \"AjaxDependencyPlugin\";\r\n AjaxMonitor.getDefaultConfig = _getDefaultConfig;\r\n AjaxMonitor.getEmptyConfig = _getEmptyConfig;\r\n return AjaxMonitor;\r\n}(BaseTelemetryPlugin));\r\nexport { AjaxMonitor };\r\n//# sourceMappingURL=ajax.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Application = /** @class */ (function () {\r\n function Application() {\r\n }\r\n return Application;\r\n}());\r\nexport { Application };\r\n//# sourceMappingURL=Application.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Device = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the Device class\r\n */\r\n function Device() {\r\n // don't attempt to fingerprint browsers\r\n this.id = \"browser\";\r\n // Device type is a dimension in our data platform\r\n // Setting it to 'Browser' allows to separate client and server dependencies/exceptions\r\n this.deviceClass = \"Browser\";\r\n }\r\n return Device;\r\n}());\r\nexport { Device };\r\n//# sourceMappingURL=Device.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_SESSION_MANAGER = \"sessionManager\"; // Count: 3\r\nexport var _DYN_UPDATE = \"update\"; // Count: 4\r\nexport var _DYN_IS_USER_COOKIE_SET = \"isUserCookieSet\"; // Count: 4\r\nexport var _DYN_IS_NEW_USER = \"isNewUser\"; // Count: 4\r\nexport var _DYN_GET_TRACE_CTX = \"getTraceCtx\"; // Count: 3\r\nexport var _DYN_TELEMETRY_TRACE = \"telemetryTrace\"; // Count: 3\r\nexport var _DYN_APPLY_SESSION_CONTEX0 = \"applySessionContext\"; // Count: 2\r\nexport var _DYN_APPLY_APPLICATION_CO1 = \"applyApplicationContext\"; // Count: 2\r\nexport var _DYN_APPLY_DEVICE_CONTEXT = \"applyDeviceContext\"; // Count: 2\r\nexport var _DYN_APPLY_OPERATION_CONT2 = \"applyOperationContext\"; // Count: 2\r\nexport var _DYN_APPLY_USER_CONTEXT = \"applyUserContext\"; // Count: 2\r\nexport var _DYN_APPLY_OPERATING_SYST3 = \"applyOperatingSystemContxt\"; // Count: 2\r\nexport var _DYN_APPLY_LOCATION_CONTE4 = \"applyLocationContext\"; // Count: 2\r\nexport var _DYN_APPLY_INTERNAL_CONTE5 = \"applyInternalContext\"; // Count: 2\r\nexport var _DYN_ACCOUNT_ID = \"accountId\"; // Count: 8\r\nexport var _DYN_SDK_EXTENSION = \"sdkExtension\"; // Count: 4\r\nexport var _DYN_GET_SESSION_ID = \"getSessionId\"; // Count: 4\r\nexport var _DYN_NAME_PREFIX = \"namePrefix\"; // Count: 7\r\nexport var _DYN_SESSION_COOKIE_POSTF6 = \"sessionCookiePostfix\"; // Count: 4\r\nexport var _DYN_USER_COOKIE_POSTFIX = \"userCookiePostfix\"; // Count: 4\r\nexport var _DYN_ID_LENGTH = \"idLength\"; // Count: 5\r\nexport var _DYN_GET_NEW_ID = \"getNewId\"; // Count: 6\r\nexport var _DYN_LENGTH = \"length\"; // Count: 4\r\nexport var _DYN_AUTOMATIC_SESSION = \"automaticSession\"; // Count: 5\r\nexport var _DYN_AUTHENTICATED_ID = \"authenticatedId\"; // Count: 6\r\nexport var _DYN_SESSION_EXPIRATION_M7 = \"sessionExpirationMs\"; // Count: 5\r\nexport var _DYN_SESSION_RENEWAL_MS = \"sessionRenewalMs\"; // Count: 4\r\nexport var _DYN_CONFIG = \"config\"; // Count: 4\r\nexport var _DYN_ACQUISITION_DATE = \"acquisitionDate\"; // Count: 5\r\nexport var _DYN_RENEWAL_DATE = \"renewalDate\"; // Count: 4\r\nexport var _DYN_COOKIE_DOMAIN = \"cookieDomain\"; // Count: 3\r\nexport var _DYN_JOIN = \"join\"; // Count: 5\r\nexport var _DYN_COOKIE_SEPARATOR = \"cookieSeparator\"; // Count: 5\r\nexport var _DYN_AUTH_USER_COOKIE_NAM8 = \"authUserCookieName\"; // Count: 3\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { _DYN_SDK_EXTENSION } from \"../__DynamicConstants\";\r\nvar Version = '2.8.9';\r\nvar Internal = /** @class */ (function () {\r\n /**\r\n * Constructs a new instance of the internal telemetry data class.\r\n */\r\n function Internal(config) {\r\n this.sdkVersion = (config[_DYN_SDK_EXTENSION /* @min:%2esdkExtension */] && config[_DYN_SDK_EXTENSION /* @min:%2esdkExtension */]() ? config[_DYN_SDK_EXTENSION /* @min:%2esdkExtension */]() + \"_\" : \"\") + \"javascript:\" + Version;\r\n }\r\n return Internal;\r\n}());\r\nexport { Internal };\r\n//# sourceMappingURL=Internal.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nvar Location = /** @class */ (function () {\r\n function Location() {\r\n }\r\n return Location;\r\n}());\r\nexport { Location };\r\n//# sourceMappingURL=Location.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlCanUseLocalStorage, utlGetLocalStorage, utlSetLocalStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, dateNow, dumpObj, getExceptionName, isFunction, newId, safeGetCookieMgr, safeGetLogger } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ACQUISITION_DATE, _DYN_AUTOMATIC_SESSION, _DYN_CONFIG, _DYN_COOKIE_DOMAIN, _DYN_GET_NEW_ID, _DYN_ID_LENGTH, _DYN_JOIN, _DYN_LENGTH, _DYN_NAME_PREFIX, _DYN_RENEWAL_DATE, _DYN_SESSION_COOKIE_POSTF6, _DYN_SESSION_EXPIRATION_M7, _DYN_SESSION_RENEWAL_MS, _DYN_UPDATE } from \"../__DynamicConstants\";\r\nvar cookieNameConst = \"ai_session\";\r\nvar Session = /** @class */ (function () {\r\n function Session() {\r\n }\r\n return Session;\r\n}());\r\nexport { Session };\r\nvar _SessionManager = /** @class */ (function () {\r\n function _SessionManager(config, core) {\r\n var self = this;\r\n var _storageNamePrefix;\r\n var _cookieUpdatedTimestamp;\r\n var _logger = safeGetLogger(core);\r\n var _cookieManager = safeGetCookieMgr(core);\r\n dynamicProto(_SessionManager, self, function (_self) {\r\n if (!config) {\r\n config = {};\r\n }\r\n if (!isFunction(config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */])) {\r\n config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */] = function () { return _SessionManager.acquisitionSpan; };\r\n }\r\n if (!isFunction(config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */])) {\r\n config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */] = function () { return _SessionManager.renewalSpan; };\r\n }\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = config;\r\n // sessionCookiePostfix takes the preference if it is configured, otherwise takes namePrefix if configured.\r\n var sessionCookiePostfix = (_self.config[_DYN_SESSION_COOKIE_POSTF6 /* @min:%2esessionCookiePostfix */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_SESSION_COOKIE_POSTF6 /* @min:%2esessionCookiePostfix */]()) ?\r\n _self.config[_DYN_SESSION_COOKIE_POSTF6 /* @min:%2esessionCookiePostfix */]() :\r\n ((_self.config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_NAME_PREFIX /* @min:%2enamePrefix */]()) ? _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() : \"\");\r\n _storageNamePrefix = function () { return cookieNameConst + sessionCookiePostfix; };\r\n _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */] = new Session();\r\n _self[_DYN_UPDATE /* @min:%2eupdate */] = function () {\r\n // Always using Date getTime() as there is a bug in older IE instances that causes the performance timings to have the hi-bit set eg 0x800000000 causing\r\n // the number to be incorrect.\r\n var nowMs = dateNow();\r\n var isExpired = false;\r\n var session = _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n if (!session.id) {\r\n isExpired = !_initializeAutomaticSession(session, nowMs);\r\n }\r\n var sessionExpirationMs = _self.config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */]();\r\n if (!isExpired && sessionExpirationMs > 0) {\r\n var sessionRenewalMs = _self.config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */]();\r\n var timeSinceAcqMs = nowMs - session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */];\r\n var timeSinceRenewalMs = nowMs - session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */];\r\n isExpired = timeSinceAcqMs < 0 || timeSinceRenewalMs < 0; // expired if the acquisition or last renewal are in the future\r\n isExpired = isExpired || timeSinceAcqMs > sessionExpirationMs; // expired if the time since acquisition is more than session Expiration\r\n isExpired = isExpired || timeSinceRenewalMs > sessionRenewalMs; // expired if the time since last renewal is more than renewal period\r\n }\r\n // renew if acquisitionSpan or renewalSpan has elapsed\r\n if (isExpired) {\r\n // update automaticSession so session state has correct id\r\n _renew(nowMs);\r\n }\r\n else {\r\n // do not update the cookie more often than cookieUpdateInterval\r\n if (!_cookieUpdatedTimestamp || nowMs - _cookieUpdatedTimestamp > _SessionManager.cookieUpdateInterval) {\r\n _setCookie(session, nowMs);\r\n }\r\n }\r\n };\r\n /**\r\n * Record the current state of the automatic session and store it in our cookie string format\r\n * into the browser's local storage. This is used to restore the session data when the cookie\r\n * expires.\r\n */\r\n _self.backup = function () {\r\n var session = _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n _setStorage(session.id, session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */], session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */]);\r\n };\r\n /**\r\n * Use config.namePrefix + ai_session cookie data or local storage data (when the cookie is unavailable) to\r\n * initialize the automatic session.\r\n * @returns true if values set otherwise false\r\n */\r\n function _initializeAutomaticSession(session, now) {\r\n var isValid = false;\r\n var cookieValue = _cookieManager.get(_storageNamePrefix());\r\n if (cookieValue && isFunction(cookieValue.split)) {\r\n isValid = _initializeAutomaticSessionWithData(session, cookieValue);\r\n }\r\n else {\r\n // There's no cookie, but we might have session data in local storage\r\n // This can happen if the session expired or the user actively deleted the cookie\r\n // We only want to recover data if the cookie is missing from expiry. We should respect the user's wishes if the cookie was deleted actively.\r\n // The User class handles this for us and deletes our local storage object if the persistent user cookie was removed.\r\n var storageValue = utlGetLocalStorage(_logger, _storageNamePrefix());\r\n if (storageValue) {\r\n isValid = _initializeAutomaticSessionWithData(session, storageValue);\r\n }\r\n }\r\n return isValid || !!session.id;\r\n }\r\n /**\r\n * Extract id, acquisitionDate, and renewalDate from an ai_session payload string and\r\n * use this data to initialize automaticSession.\r\n *\r\n * @param {string} sessionData - The string stored in an ai_session cookie or local storage backup\r\n * @returns true if values set otherwise false\r\n */\r\n function _initializeAutomaticSessionWithData(session, sessionData) {\r\n var isValid = false;\r\n var sessionReset = \", session will be reset\";\r\n var tokens = sessionData.split(\"|\");\r\n if (tokens[_DYN_LENGTH /* @min:%2elength */] >= 2) {\r\n try {\r\n var acqMs = +tokens[1] || 0;\r\n var renewalMs = +tokens[2] || 0;\r\n if (isNaN(acqMs) || acqMs <= 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 27 /* _eInternalMessageId.SessionRenewalDateIsZero */, \"AI session acquisition date is 0\" + sessionReset);\r\n }\r\n else if (isNaN(renewalMs) || renewalMs <= 0) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 27 /* _eInternalMessageId.SessionRenewalDateIsZero */, \"AI session renewal date is 0\" + sessionReset);\r\n }\r\n else if (tokens[0]) {\r\n // Everything looks valid so set the values\r\n session.id = tokens[0];\r\n session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */] = acqMs;\r\n session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */] = renewalMs;\r\n isValid = true;\r\n }\r\n }\r\n catch (e) {\r\n _throwInternal(_logger, 1 /* eLoggingSeverity.CRITICAL */, 9 /* _eInternalMessageId.ErrorParsingAISessionCookie */, \"Error parsing ai_session value [\" + (sessionData || \"\") + \"]\" + sessionReset + \" - \" + getExceptionName(e), { exception: dumpObj(e) });\r\n }\r\n }\r\n return isValid;\r\n }\r\n function _renew(nowMs) {\r\n var theConfig = (_self[_DYN_CONFIG /* @min:%2econfig */] || {});\r\n var getNewId = (theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */] ? theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */]() : null) || newId;\r\n _self.automaticSession.id = getNewId(theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */] ? theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */]() : 22);\r\n _self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */][_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */] = nowMs;\r\n _setCookie(_self[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */], nowMs);\r\n // If this browser does not support local storage, fire an internal log to keep track of it at this point\r\n if (!utlCanUseLocalStorage()) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 0 /* _eInternalMessageId.BrowserDoesNotSupportLocalStorage */, \"Browser does not support local storage. Session durations will be inaccurate.\");\r\n }\r\n }\r\n function _setCookie(session, nowMs) {\r\n var acq = session[_DYN_ACQUISITION_DATE /* @min:%2eacquisitionDate */];\r\n session[_DYN_RENEWAL_DATE /* @min:%2erenewalDate */] = nowMs;\r\n var config = _self[_DYN_CONFIG /* @min:%2econfig */];\r\n var renewalPeriodMs = config[_DYN_SESSION_RENEWAL_MS /* @min:%2esessionRenewalMs */]();\r\n // Set cookie to expire after the session expiry time passes or the session renewal deadline, whichever is sooner\r\n // Expiring the cookie will cause the session to expire even if the user isn't on the page\r\n var acqTimeLeftMs = (acq + config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */]()) - nowMs;\r\n var cookie = [session.id, acq, nowMs];\r\n var maxAgeSec = 0;\r\n if (acqTimeLeftMs < renewalPeriodMs) {\r\n maxAgeSec = acqTimeLeftMs / 1000;\r\n }\r\n else {\r\n maxAgeSec = renewalPeriodMs / 1000;\r\n }\r\n var cookieDomain = config[_DYN_COOKIE_DOMAIN /* @min:%2ecookieDomain */] ? config[_DYN_COOKIE_DOMAIN /* @min:%2ecookieDomain */]() : null;\r\n // if sessionExpirationMs is set to 0, it means the expiry is set to 0 for this session cookie\r\n // A cookie with 0 expiry in the session cookie will never expire for that browser session. If the browser is closed the cookie expires.\r\n // Depending on the browser, another instance does not inherit this cookie, however, another tab will\r\n _cookieManager.set(_storageNamePrefix(), cookie.join(\"|\"), config[_DYN_SESSION_EXPIRATION_M7 /* @min:%2esessionExpirationMs */]() > 0 ? maxAgeSec : null, cookieDomain);\r\n _cookieUpdatedTimestamp = nowMs;\r\n }\r\n function _setStorage(guid, acq, renewal) {\r\n // Keep data in local storage to retain the last session id, allowing us to cleanly end the session when it expires\r\n // Browsers that don't support local storage won't be able to end sessions cleanly from the client\r\n // The server will notice this and end the sessions itself, with loss of accurate session duration\r\n utlSetLocalStorage(_logger, _storageNamePrefix(), [guid, acq, renewal][_DYN_JOIN /* @min:%2ejoin */](\"|\"));\r\n }\r\n });\r\n }\r\n// Removed Stub for _SessionManager.prototype.update.\r\n// Removed Stub for _SessionManager.prototype.backup.\r\n _SessionManager.acquisitionSpan = 86400000; // 24 hours in ms\r\n _SessionManager.renewalSpan = 1800000; // 30 minutes in ms\r\n _SessionManager.cookieUpdateInterval = 60000; // 1 minute in ms\r\n return _SessionManager;\r\n}());\r\nexport { _SessionManager };\r\n//# sourceMappingURL=Session.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport { dataSanitizeString } from \"@microsoft/applicationinsights-common\";\r\nimport { generateW3CId, getLocation } from \"@microsoft/applicationinsights-core-js\";\r\nvar TelemetryTrace = /** @class */ (function () {\r\n function TelemetryTrace(id, parentId, name, logger) {\r\n var _self = this;\r\n _self.traceID = id || generateW3CId();\r\n _self.parentID = parentId;\r\n var location = getLocation();\r\n if (!name && location && location.pathname) {\r\n name = location.pathname;\r\n }\r\n _self.name = dataSanitizeString(logger, name);\r\n }\r\n return TelemetryTrace;\r\n}());\r\nexport { TelemetryTrace };\r\n//# sourceMappingURL=TelemetryTrace.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { utlRemoveStorage } from \"@microsoft/applicationinsights-common\";\r\nimport { _throwInternal, newId, safeGetCookieMgr, safeGetLogger, toISOString } from \"@microsoft/applicationinsights-core-js\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_AUTHENTICATED_ID, _DYN_AUTH_USER_COOKIE_NAM8, _DYN_CONFIG, _DYN_COOKIE_SEPARATOR, _DYN_GET_NEW_ID, _DYN_ID_LENGTH, _DYN_IS_NEW_USER, _DYN_IS_USER_COOKIE_SET, _DYN_JOIN, _DYN_LENGTH, _DYN_NAME_PREFIX, _DYN_UPDATE, _DYN_USER_COOKIE_POSTFIX } from \"../__DynamicConstants\";\r\nfunction _validateUserInput(id) {\r\n // Validate:\r\n // 1. Id is a non-empty string.\r\n // 2. It does not contain special characters for cookies.\r\n if (typeof id !== \"string\" ||\r\n !id ||\r\n id.match(/,|;|=| |\\|/)) {\r\n return false;\r\n }\r\n return true;\r\n}\r\nvar User = /** @class */ (function () {\r\n function User(config, core) {\r\n /**\r\n * A flag indicating whether this represents a new user\r\n */\r\n this.isNewUser = false;\r\n /**\r\n * A flag indicating whether the user cookie has been set\r\n */\r\n this.isUserCookieSet = false;\r\n var _logger = safeGetLogger(core);\r\n var _cookieManager = safeGetCookieMgr(core);\r\n var _storageNamePrefix;\r\n dynamicProto(User, this, function (_self) {\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = config;\r\n var userCookiePostfix = (_self.config[_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */]()) ? _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_USER_COOKIE_POSTFIX /* @min:%2euserCookiePostfix */]() : \"\";\r\n _storageNamePrefix = function () { return User.userCookieName + userCookiePostfix; };\r\n // get userId or create new one if none exists\r\n var cookie = _cookieManager.get(_storageNamePrefix());\r\n if (cookie) {\r\n _self[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = false;\r\n var params = cookie.split(User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n if (params[_DYN_LENGTH /* @min:%2elength */] > 0) {\r\n _self.id = params[0];\r\n // we already have a cookie\r\n _self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */] = !!_self.id;\r\n }\r\n }\r\n function _generateNewId() {\r\n var theConfig = (config || {});\r\n var getNewId = (theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */] ? theConfig[_DYN_GET_NEW_ID /* @min:%2egetNewId */]() : null) || newId;\r\n var id = getNewId(theConfig[_DYN_ID_LENGTH /* @min:%2eidLength */] ? config[_DYN_ID_LENGTH /* @min:%2eidLength */]() : 22);\r\n return id;\r\n }\r\n function _generateNewCookie(userId) {\r\n var acqStr = toISOString(new Date());\r\n _self.accountAcquisitionDate = acqStr;\r\n _self[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = true;\r\n var newCookie = [userId, acqStr];\r\n return newCookie;\r\n }\r\n function _setUserCookie(cookie) {\r\n // without expiration, cookies expire at the end of the session\r\n // set it to 365 days from now\r\n // 365 * 24 * 60 * 60 = 31536000\r\n var oneYear = 31536000;\r\n _self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */] = _cookieManager.set(_storageNamePrefix(), cookie, oneYear);\r\n }\r\n if (!_self.id) {\r\n _self.id = _generateNewId();\r\n var newCookie = _generateNewCookie(_self.id);\r\n _setUserCookie(newCookie[_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]));\r\n // If we have an config.namePrefix() + ai_session in local storage this means the user actively removed our cookies.\r\n // We should respect their wishes and clear ourselves from local storage\r\n var name_1 = config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */] && config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() ? config[_DYN_NAME_PREFIX /* @min:%2enamePrefix */]() + \"ai_session\" : \"ai_session\";\r\n utlRemoveStorage(_logger, name_1);\r\n }\r\n // We still take the account id from the ctor param for backward compatibility.\r\n // But if the the customer set the accountId through the newer setAuthenticatedUserContext API, we will override it.\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = config[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] ? config[_DYN_ACCOUNT_ID /* @min:%2eaccountId */]() : undefined;\r\n // Get the auth user id and account id from the cookie if exists\r\n // Cookie is in the pattern: <authenticatedId>|<accountId>\r\n var authCookie = _cookieManager.get(User[_DYN_AUTH_USER_COOKIE_NAM8 /* @min:%2eauthUserCookieName */]);\r\n if (authCookie) {\r\n authCookie = decodeURI(authCookie);\r\n var authCookieString = authCookie.split(User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n if (authCookieString[0]) {\r\n _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = authCookieString[0];\r\n }\r\n if (authCookieString[_DYN_LENGTH /* @min:%2elength */] > 1 && authCookieString[1]) {\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = authCookieString[1];\r\n }\r\n }\r\n _self.setAuthenticatedUserContext = function (authenticatedUserId, accountId, storeInCookie) {\r\n if (storeInCookie === void 0) { storeInCookie = false; }\r\n // Validate inputs to ensure no cookie control characters.\r\n var isInvalidInput = !_validateUserInput(authenticatedUserId) || (accountId && !_validateUserInput(accountId));\r\n if (isInvalidInput) {\r\n _throwInternal(_logger, 2 /* eLoggingSeverity.WARNING */, 60 /* _eInternalMessageId.SetAuthContextFailedAccountName */, \"Setting auth user context failed. \" +\r\n \"User auth/account id should be of type string, and not contain commas, semi-colons, equal signs, spaces, or vertical-bars.\", true);\r\n return;\r\n }\r\n // Create cookie string.\r\n _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = authenticatedUserId;\r\n var authCookie = _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */];\r\n if (accountId) {\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = accountId;\r\n authCookie = [_self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */], _self.accountId][_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]);\r\n }\r\n if (storeInCookie) {\r\n // Set the cookie. No expiration date because this is a session cookie (expires when browser closed).\r\n // Encoding the cookie to handle unexpected unicode characters.\r\n _cookieManager.set(User[_DYN_AUTH_USER_COOKIE_NAM8 /* @min:%2eauthUserCookieName */], encodeURI(authCookie));\r\n }\r\n };\r\n /**\r\n * Clears the authenticated user id and the account id from the user context.\r\n * @returns {}\r\n */\r\n _self.clearAuthenticatedUserContext = function () {\r\n _self[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */] = null;\r\n _self[_DYN_ACCOUNT_ID /* @min:%2eaccountId */] = null;\r\n _cookieManager.del(User[_DYN_AUTH_USER_COOKIE_NAM8 /* @min:%2eauthUserCookieName */]);\r\n };\r\n _self[_DYN_UPDATE /* @min:%2eupdate */] = function (userId) {\r\n // Optimizations to avoid setting and processing the cookie when not needed\r\n if (_self.id !== userId || !_self[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */]) {\r\n var user_id = userId ? userId : _generateNewId();\r\n var user_cookie = _generateNewCookie(user_id);\r\n _setUserCookie(user_cookie[_DYN_JOIN /* @min:%2ejoin */](User[_DYN_COOKIE_SEPARATOR /* @min:%2ecookieSeparator */]));\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for User.prototype.setAuthenticatedUserContext.\r\n// Removed Stub for User.prototype.clearAuthenticatedUserContext.\r\n// Removed Stub for User.prototype.update.\r\n User.cookieSeparator = \"|\";\r\n User.userCookieName = \"ai_user\";\r\n User.authUserCookieName = \"ai_authUser\";\r\n return User;\r\n}());\r\nexport { User };\r\n//# sourceMappingURL=User.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n* TelemetryContext.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { CtxTagKeys, Extensions, PageView } from \"@microsoft/applicationinsights-common\";\r\nimport { _InternalLogMessage, getSetValue, hasWindow, isNullOrUndefined, isString, objKeys, setValue } from \"@microsoft/applicationinsights-core-js\";\r\nimport { Application } from \"./Context/Application\";\r\nimport { Device } from \"./Context/Device\";\r\nimport { Internal } from \"./Context/Internal\";\r\nimport { Location } from \"./Context/Location\";\r\nimport { Session, _SessionManager } from \"./Context/Session\";\r\nimport { TelemetryTrace } from \"./Context/TelemetryTrace\";\r\nimport { User } from \"./Context/User\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_APPLY_APPLICATION_CO1, _DYN_APPLY_DEVICE_CONTEXT, _DYN_APPLY_INTERNAL_CONTE5, _DYN_APPLY_LOCATION_CONTE4, _DYN_APPLY_OPERATING_SYST3, _DYN_APPLY_OPERATION_CONT2, _DYN_APPLY_SESSION_CONTEX0, _DYN_APPLY_USER_CONTEXT, _DYN_AUTHENTICATED_ID, _DYN_AUTOMATIC_SESSION, _DYN_GET_SESSION_ID, _DYN_LENGTH, _DYN_SESSION_MANAGER, _DYN_TELEMETRY_TRACE } from \"./__DynamicConstants\";\r\nvar strExt = \"ext\";\r\nvar strTags = \"tags\";\r\nfunction _removeEmpty(target, name) {\r\n if (target && target[name] && objKeys(target[name])[_DYN_LENGTH /* @min:%2elength */] === 0) {\r\n delete target[name];\r\n }\r\n}\r\nvar TelemetryContext = /** @class */ (function () {\r\n function TelemetryContext(core, defaultConfig, previousTraceCtx) {\r\n var _this = this;\r\n var logger = core.logger;\r\n this.appId = function () { return null; };\r\n this[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */] = function () { return null; };\r\n dynamicProto(TelemetryContext, this, function (_self) {\r\n _self.application = new Application();\r\n _self.internal = new Internal(defaultConfig);\r\n if (hasWindow()) {\r\n _self[_DYN_SESSION_MANAGER /* @min:%2esessionManager */] = new _SessionManager(defaultConfig, core);\r\n _self.device = new Device();\r\n _self.location = new Location();\r\n _self.user = new User(defaultConfig, core);\r\n var traceId = void 0;\r\n var parentId = void 0;\r\n var name_1;\r\n if (previousTraceCtx) {\r\n traceId = previousTraceCtx.getTraceId();\r\n parentId = previousTraceCtx.getSpanId();\r\n name_1 = previousTraceCtx.getName();\r\n }\r\n _self[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */] = new TelemetryTrace(traceId, parentId, name_1, logger);\r\n _self.session = new Session();\r\n }\r\n _self[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */] = function () {\r\n var session = _self.session;\r\n var sesId = null;\r\n // If customer set session info, apply their context; otherwise apply context automatically generated\r\n if (session && isString(session.id)) {\r\n sesId = session.id;\r\n }\r\n else {\r\n // Gets the automatic session if it exists or an empty object\r\n var autoSession = (_self[_DYN_SESSION_MANAGER /* @min:%2esessionManager */] || {})[_DYN_AUTOMATIC_SESSION /* @min:%2eautomaticSession */];\r\n sesId = autoSession && isString(autoSession.id) ? autoSession.id : null;\r\n }\r\n return sesId;\r\n };\r\n _self[_DYN_APPLY_SESSION_CONTEX0 /* @min:%2eapplySessionContext */] = function (evt, itemCtx) {\r\n setValue(getSetValue(evt.ext, Extensions.AppExt), \"sesId\", _self[_DYN_GET_SESSION_ID /* @min:%2egetSessionId */](), isString);\r\n };\r\n _self[_DYN_APPLY_OPERATING_SYST3 /* @min:%2eapplyOperatingSystemContxt */] = function (evt, itemCtx) {\r\n setValue(evt.ext, Extensions.OSExt, _self.os);\r\n };\r\n _self[_DYN_APPLY_APPLICATION_CO1 /* @min:%2eapplyApplicationContext */] = function (evt, itemCtx) {\r\n var application = _self.application;\r\n if (application) {\r\n // evt.ext.app\r\n var tags = getSetValue(evt, strTags);\r\n setValue(tags, CtxTagKeys.applicationVersion, application.ver, isString);\r\n setValue(tags, CtxTagKeys.applicationBuild, application.build, isString);\r\n }\r\n };\r\n _self[_DYN_APPLY_DEVICE_CONTEXT /* @min:%2eapplyDeviceContext */] = function (evt, itemCtx) {\r\n var device = _self.device;\r\n if (device) {\r\n // evt.ext.device\r\n var extDevice = getSetValue(getSetValue(evt, strExt), Extensions.DeviceExt);\r\n setValue(extDevice, \"localId\", device.id, isString);\r\n setValue(extDevice, \"ip\", device.ip, isString);\r\n setValue(extDevice, \"model\", device.model, isString);\r\n setValue(extDevice, \"deviceClass\", device.deviceClass, isString);\r\n }\r\n };\r\n _self[_DYN_APPLY_INTERNAL_CONTE5 /* @min:%2eapplyInternalContext */] = function (evt, itemCtx) {\r\n var internal = _self.internal;\r\n if (internal) {\r\n var tags = getSetValue(evt, strTags);\r\n setValue(tags, CtxTagKeys.internalAgentVersion, internal.agentVersion, isString); // not mapped in CS 4.0\r\n setValue(tags, CtxTagKeys.internalSdkVersion, internal.sdkVersion, isString);\r\n if (evt.baseType === _InternalLogMessage.dataType || evt.baseType === PageView.dataType) {\r\n setValue(tags, CtxTagKeys.internalSnippet, internal.snippetVer, isString);\r\n setValue(tags, CtxTagKeys.internalSdkSrc, internal.sdkSrc, isString);\r\n }\r\n }\r\n };\r\n _self[_DYN_APPLY_LOCATION_CONTE4 /* @min:%2eapplyLocationContext */] = function (evt, itemCtx) {\r\n var location = _this.location;\r\n if (location) {\r\n setValue(getSetValue(evt, strTags, []), CtxTagKeys.locationIp, location.ip, isString);\r\n }\r\n };\r\n _self[_DYN_APPLY_OPERATION_CONT2 /* @min:%2eapplyOperationContext */] = function (evt, itemCtx) {\r\n var telemetryTrace = _self[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */];\r\n if (telemetryTrace) {\r\n var extTrace = getSetValue(getSetValue(evt, strExt), Extensions.TraceExt, { traceID: undefined, parentID: undefined });\r\n setValue(extTrace, \"traceID\", telemetryTrace.traceID, isString, isNullOrUndefined);\r\n setValue(extTrace, \"name\", telemetryTrace.name, isString, isNullOrUndefined);\r\n setValue(extTrace, \"parentID\", telemetryTrace.parentID, isString, isNullOrUndefined);\r\n }\r\n };\r\n _self.applyWebContext = function (evt, itemCtx) {\r\n var web = _this.web;\r\n if (web) {\r\n setValue(getSetValue(evt, strExt), Extensions.WebExt, web);\r\n }\r\n };\r\n _self[_DYN_APPLY_USER_CONTEXT /* @min:%2eapplyUserContext */] = function (evt, itemCtx) {\r\n var user = _self.user;\r\n if (user) {\r\n var tags = getSetValue(evt, strTags, []);\r\n // stays in tags\r\n setValue(tags, CtxTagKeys.userAccountId, user[_DYN_ACCOUNT_ID /* @min:%2eaccountId */], isString);\r\n // CS 4.0\r\n var extUser = getSetValue(getSetValue(evt, strExt), Extensions.UserExt);\r\n setValue(extUser, \"id\", user.id, isString);\r\n setValue(extUser, \"authId\", user[_DYN_AUTHENTICATED_ID /* @min:%2eauthenticatedId */], isString);\r\n }\r\n };\r\n _self.cleanUp = function (evt, itemCtx) {\r\n var ext = evt.ext;\r\n if (ext) {\r\n _removeEmpty(ext, Extensions.DeviceExt);\r\n _removeEmpty(ext, Extensions.UserExt);\r\n _removeEmpty(ext, Extensions.WebExt);\r\n _removeEmpty(ext, Extensions.OSExt);\r\n _removeEmpty(ext, Extensions.AppExt);\r\n _removeEmpty(ext, Extensions.TraceExt);\r\n }\r\n };\r\n });\r\n }\r\n// Removed Stub for TelemetryContext.prototype.applySessionContext.\r\n// Removed Stub for TelemetryContext.prototype.applyOperatingSystemContxt.\r\n// Removed Stub for TelemetryContext.prototype.applyApplicationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyDeviceContext.\r\n// Removed Stub for TelemetryContext.prototype.applyInternalContext.\r\n// Removed Stub for TelemetryContext.prototype.applyLocationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyOperationContext.\r\n// Removed Stub for TelemetryContext.prototype.applyWebContext.\r\n// Removed Stub for TelemetryContext.prototype.applyUserContext.\r\n// Removed Stub for TelemetryContext.prototype.cleanUp.\r\n // This is a workaround for an IE8 bug when using dynamicProto() with classes that don't have any\n // non-dynamic functions or static properties/functions when using uglify-js to minify the resulting code.\n // this will be removed when ES3 support is dropped.\n TelemetryContext.__ieDyn=1;\n\n return TelemetryContext;\r\n}());\r\nexport { TelemetryContext };\r\n//# sourceMappingURL=TelemetryContext.js.map","/*\n * Application Insights JavaScript SDK - Properties Plugin, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n/**\r\n* PropertiesPlugin.ts\r\n* @copyright Microsoft 2018\r\n*/\r\nimport { __extendsFn as __extends } from \"@microsoft/applicationinsights-shims\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { BreezeChannelIdentifier, PageView, PropertiesPluginIdentifier, createDistributedTraceContextFromTrace } from \"@microsoft/applicationinsights-common\";\r\nimport { BaseTelemetryPlugin, _InternalLogMessage, _logInternalMessage, createProcessTelemetryContext, getNavigator, getSetValue, isNullOrUndefined, objForEachKey } from \"@microsoft/applicationinsights-core-js\";\r\nimport { TelemetryContext } from \"./TelemetryContext\";\r\nimport { _DYN_ACCOUNT_ID, _DYN_APPLY_APPLICATION_CO1, _DYN_APPLY_DEVICE_CONTEXT, _DYN_APPLY_INTERNAL_CONTE5, _DYN_APPLY_LOCATION_CONTE4, _DYN_APPLY_OPERATING_SYST3, _DYN_APPLY_OPERATION_CONT2, _DYN_APPLY_SESSION_CONTEX0, _DYN_APPLY_USER_CONTEXT, _DYN_COOKIE_DOMAIN, _DYN_GET_NEW_ID, _DYN_GET_SESSION_ID, _DYN_GET_TRACE_CTX, _DYN_ID_LENGTH, _DYN_IS_NEW_USER, _DYN_IS_USER_COOKIE_SET, _DYN_NAME_PREFIX, _DYN_SDK_EXTENSION, _DYN_SESSION_COOKIE_POSTF6, _DYN_SESSION_MANAGER, _DYN_TELEMETRY_TRACE, _DYN_UPDATE, _DYN_USER_COOKIE_POSTFIX } from \"./__DynamicConstants\";\r\nvar PropertiesPlugin = /** @class */ (function (_super) {\r\n __extends(PropertiesPlugin, _super);\r\n function PropertiesPlugin() {\r\n var _this = _super.call(this) || this;\r\n _this.priority = 110;\r\n _this.identifier = PropertiesPluginIdentifier;\r\n var _extensionConfig;\r\n var _distributedTraceCtx;\r\n var _previousTraceCtx;\r\n dynamicProto(PropertiesPlugin, _this, function (_self, _base) {\r\n _initDefaults();\r\n _self.initialize = function (config, core, extensions, pluginChain) {\r\n _base.initialize(config, core, extensions, pluginChain);\r\n _populateDefaults(config);\r\n };\r\n /**\r\n * Add Part A fields to the event\r\n * @param event The event that needs to be processed\r\n */\r\n _self.processTelemetry = function (event, itemCtx) {\r\n if (isNullOrUndefined(event)) {\r\n // TODO(barustum): throw an internal event once we have support for internal logging\r\n }\r\n else {\r\n itemCtx = _self._getTelCtx(itemCtx);\r\n // If the envelope is PageView, reset the internal message count so that we can send internal telemetry for the new page.\r\n if (event.name === PageView.envelopeType) {\r\n itemCtx.diagLog().resetInternalMessageCount();\r\n }\r\n var theContext = (_self.context || {});\r\n if (theContext.session) {\r\n // If customer did not provide custom session id update the session manager\r\n if (typeof _self.context.session.id !== \"string\" && theContext[_DYN_SESSION_MANAGER /* @min:%2esessionManager */]) {\r\n theContext[_DYN_SESSION_MANAGER /* @min:%2esessionManager */][_DYN_UPDATE /* @min:%2eupdate */]();\r\n }\r\n }\r\n var userCtx = theContext.user;\r\n if (userCtx && !userCtx[_DYN_IS_USER_COOKIE_SET /* @min:%2eisUserCookieSet */]) {\r\n userCtx[_DYN_UPDATE /* @min:%2eupdate */](theContext.user.id);\r\n }\r\n _processTelemetryInternal(event, itemCtx);\r\n if (userCtx && userCtx[_DYN_IS_NEW_USER /* @min:%2eisNewUser */]) {\r\n userCtx[_DYN_IS_NEW_USER /* @min:%2eisNewUser */] = false;\r\n var message = new _InternalLogMessage(72 /* _eInternalMessageId.SendBrowserInfoOnUserInit */, ((getNavigator() || {}).userAgent || \"\"));\r\n _logInternalMessage(itemCtx.diagLog(), 1 /* eLoggingSeverity.CRITICAL */, message);\r\n }\r\n _self.processNext(event, itemCtx);\r\n }\r\n };\r\n _self._doTeardown = function (unloadCtx, unloadState) {\r\n var core = (unloadCtx || {}).core();\r\n if (core && core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */]) {\r\n var traceCtx = core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */](false);\r\n if (traceCtx === _distributedTraceCtx) {\r\n core.setTraceCtx(_previousTraceCtx);\r\n }\r\n }\r\n _initDefaults();\r\n };\r\n function _initDefaults() {\r\n _extensionConfig = null;\r\n _distributedTraceCtx = null;\r\n _previousTraceCtx = null;\r\n }\r\n function _populateDefaults(config) {\r\n var identifier = _self.identifier;\r\n var core = _self.core;\r\n var ctx = createProcessTelemetryContext(null, config, core);\r\n var defaultConfig = PropertiesPlugin.getDefaultConfig();\r\n _extensionConfig = _extensionConfig || {};\r\n objForEachKey(defaultConfig, function (field, value) {\r\n _extensionConfig[field] = function () { return ctx.getConfig(identifier, field, value()); };\r\n });\r\n _previousTraceCtx = core[_DYN_GET_TRACE_CTX /* @min:%2egetTraceCtx */](false);\r\n _self.context = new TelemetryContext(core, _extensionConfig, _previousTraceCtx);\r\n _distributedTraceCtx = createDistributedTraceContextFromTrace(_self.context[_DYN_TELEMETRY_TRACE /* @min:%2etelemetryTrace */], _previousTraceCtx);\r\n core.setTraceCtx(_distributedTraceCtx);\r\n _self.context.appId = function () {\r\n var breezeChannel = core.getPlugin(BreezeChannelIdentifier);\r\n return breezeChannel ? breezeChannel.plugin[\"_appId\"] : null;\r\n };\r\n // Test hook to allow accessing the internal values -- explicitly not defined as an available property on the class\r\n _self[\"_extConfig\"] = _extensionConfig;\r\n }\r\n function _processTelemetryInternal(evt, itemCtx) {\r\n // Set Part A fields\r\n getSetValue(evt, \"tags\", []);\r\n getSetValue(evt, \"ext\", {});\r\n var ctx = _self.context;\r\n ctx[_DYN_APPLY_SESSION_CONTEX0 /* @min:%2eapplySessionContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_APPLICATION_CO1 /* @min:%2eapplyApplicationContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_DEVICE_CONTEXT /* @min:%2eapplyDeviceContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_OPERATION_CONT2 /* @min:%2eapplyOperationContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_USER_CONTEXT /* @min:%2eapplyUserContext */](evt, itemCtx);\r\n ctx[_DYN_APPLY_OPERATING_SYST3 /* @min:%2eapplyOperatingSystemContxt */](evt, itemCtx);\r\n ctx.applyWebContext(evt, itemCtx);\r\n ctx[_DYN_APPLY_LOCATION_CONTE4 /* @min:%2eapplyLocationContext */](evt, itemCtx); // legacy tags\r\n ctx[_DYN_APPLY_INTERNAL_CONTE5 /* @min:%2eapplyInternalContext */](evt, itemCtx); // legacy tags\r\n ctx.cleanUp(evt, itemCtx);\r\n }\r\n });\r\n return _this;\r\n }\r\n PropertiesPlugin.getDefaultConfig = function () {\r\n var _a;\r\n var defaultValue;\r\n var nullValue = null;\r\n var defaultConfig = (_a = {\r\n instrumentationKey: function () { return defaultValue; }\r\n },\r\n _a[_DYN_ACCOUNT_ID /* @min:accountId */] = function () { return nullValue; },\r\n _a.sessionRenewalMs = function () { return 30 * 60 * 1000; },\r\n _a.samplingPercentage = function () { return 100; },\r\n _a.sessionExpirationMs = function () { return 24 * 60 * 60 * 1000; },\r\n _a[_DYN_COOKIE_DOMAIN /* @min:cookieDomain */] = function () { return nullValue; },\r\n _a[_DYN_SDK_EXTENSION /* @min:sdkExtension */] = function () { return nullValue; },\r\n _a.isBrowserLinkTrackingEnabled = function () { return false; },\r\n _a.appId = function () { return nullValue; },\r\n _a[_DYN_GET_SESSION_ID /* @min:getSessionId */] = function () { return nullValue; },\r\n _a[_DYN_NAME_PREFIX /* @min:namePrefix */] = function () { return defaultValue; },\r\n _a[_DYN_SESSION_COOKIE_POSTF6 /* @min:sessionCookiePostfix */] = function () { return defaultValue; },\r\n _a[_DYN_USER_COOKIE_POSTFIX /* @min:userCookiePostfix */] = function () { return defaultValue; },\r\n _a[_DYN_ID_LENGTH /* @min:idLength */] = function () { return 22; },\r\n _a[_DYN_GET_NEW_ID /* @min:getNewId */] = function () { return nullValue; },\r\n _a);\r\n return defaultConfig;\r\n };\r\n// Removed Stub for PropertiesPlugin.prototype.initialize.\r\n// Removed Stub for PropertiesPlugin.prototype.processTelemetry.\r\n return PropertiesPlugin;\r\n}(BaseTelemetryPlugin));\r\nexport default PropertiesPlugin;\r\n//# sourceMappingURL=PropertiesPlugin.js.map","/*\n * Application Insights JavaScript SDK - Web, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Generally you should only put values that are used more than 2 times and then only if not already exposed as a constant (such as SdkCoreNames)\r\n// as when using \"short\" named values from here they will be will be minified smaller than the SdkCoreNames[eSdkCoreNames.xxxx] value.\r\nvar _AUTHENTICATED_USER_CONTEXT = \"AuthenticatedUserContext\";\r\nvar _TRACK = \"track\";\r\nexport var STR_EMPTY = \"\";\r\nexport var STR_SNIPPET = \"snippet\";\r\nexport var STR_GET_COOKIE_MGR = \"getCookieMgr\";\r\nexport var STR_START_TRACK_PAGE = \"startTrackPage\";\r\nexport var STR_STOP_TRACK_PAGE = \"stopTrackPage\";\r\nexport var STR_FLUSH = \"flush\";\r\nexport var STR_START_TRACK_EVENT = \"startTrackEvent\";\r\nexport var STR_STOP_TRACK_EVENT = \"stopTrackEvent\";\r\nexport var STR_ADD_TELEMETRY_INITIALIZER = \"addTelemetryInitializer\";\r\nexport var STR_ADD_TELEMETRY_INITIALIZERS = STR_ADD_TELEMETRY_INITIALIZER + \"s\";\r\nexport var STR_POLL_INTERNAL_LOGS = \"pollInternalLogs\";\r\nexport var STR_GET_PLUGIN = \"getPlugin\";\r\nexport var STR_EVT_NAMESPACE = \"evtNamespace\";\r\nexport var STR_TRACK_EVENT = _TRACK + \"Event\";\r\nexport var STR_TRACK_TRACE = _TRACK + \"Trace\";\r\nexport var STR_TRACK_METRIC = _TRACK + \"Metric\";\r\nexport var STR_TRACK_PAGE_VIEW = _TRACK + \"PageView\";\r\nexport var STR_TRACK_EXCEPTION = _TRACK + \"Exception\";\r\nexport var STR_TRACK_DEPENDENCY_DATA = _TRACK + \"DependencyData\";\r\nexport var STR_SET_AUTHENTICATED_USER_CONTEXT = \"set\" + _AUTHENTICATED_USER_CONTEXT;\r\nexport var STR_CLEAR_AUTHENTICATED_USER_CONTEXT = \"clear\" + _AUTHENTICATED_USER_CONTEXT;\r\n//# sourceMappingURL=InternalConstants.js.map","/*\n * Application Insights JavaScript SDK - Web, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n\"use strict\";\r\nimport dynamicProto from \"@microsoft/dynamicproto-js\";\r\nimport { AnalyticsPlugin } from \"@microsoft/applicationinsights-analytics-js\";\r\nimport { Sender } from \"@microsoft/applicationinsights-channel-js\";\r\nimport { AnalyticsPluginIdentifier, BreezeChannelIdentifier, ConfigurationManager, ConnectionStringParser, ContextTagKeys, CorrelationIdHelper, CtxTagKeys, DEFAULT_BREEZE_ENDPOINT, DEFAULT_BREEZE_PATH, Data, DataSanitizer, DateTimeUtils, DisabledPropertyName, DistributedTracingModes, Envelope, Event, Exception, Extensions, HttpMethod, Metric, PageView, PageViewPerformance, ProcessLegacy, PropertiesPluginIdentifier, RemoteDependencyData, RequestHeaders, SampleRate, SeverityLevel, TelemetryItemCreator, Trace, UrlHelper, Util, parseConnectionString } from \"@microsoft/applicationinsights-common\";\r\nimport { AppInsightsCore, _throwInternal, addPageHideEventListener, addPageUnloadEventListener, arrForEach, arrIndexOf, createUniqueNamespace, doPerf, hasDocument, hasWindow, isArray, isFunction, isNullOrUndefined, isReactNative, isString, mergeEvtNamespace, objForEachKey, proxyAssign, proxyFunctions, removePageHideEventListener, removePageUnloadEventListener, throwError } from \"@microsoft/applicationinsights-core-js\";\r\nimport { AjaxPlugin as DependenciesPlugin } from \"@microsoft/applicationinsights-dependencies-js\";\r\nimport { PropertiesPlugin } from \"@microsoft/applicationinsights-properties-js\";\r\nimport { STR_ADD_TELEMETRY_INITIALIZER, STR_CLEAR_AUTHENTICATED_USER_CONTEXT, STR_EVT_NAMESPACE, STR_FLUSH, STR_GET_COOKIE_MGR, STR_GET_PLUGIN, STR_POLL_INTERNAL_LOGS, STR_SET_AUTHENTICATED_USER_CONTEXT, STR_SNIPPET, STR_START_TRACK_EVENT, STR_START_TRACK_PAGE, STR_STOP_TRACK_EVENT, STR_STOP_TRACK_PAGE, STR_TRACK_DEPENDENCY_DATA, STR_TRACK_EVENT, STR_TRACK_EXCEPTION, STR_TRACK_METRIC, STR_TRACK_PAGE_VIEW, STR_TRACK_TRACE } from \"./InternalConstants\";\r\nimport { _DYN_ADD_HOUSEKEEPING_BEF20, _DYN_APP_INSIGHTS, _DYN_CONFIG, _DYN_CONNECTION_STRING, _DYN_CONTEXT, _DYN_DIAGNOSTIC_LOG_INTER4, _DYN_DISABLE_FLUSH_ON_BEF11, _DYN_DISABLE_FLUSH_ON_UNL12, _DYN_DISABLE_IKEY_DEPRECA18, _DYN_ENDPOINT_URL, _DYN_GET_TRANSMISSION_CON19, _DYN_INDEX_OF, _DYN_INSTRUMENTATION_KEY, _DYN_LOAD_APP_INSIGHTS, _DYN_ONUNLOAD_FLUSH, _DYN_PUSH, _DYN_QUEUE, _DYN_UPDATE_SNIPPET_DEFIN0, _DYN_VERSION } from \"./__DynamicConstants\";\r\nvar _internalSdkSrc;\r\n// This is an exclude list of properties that should not be updated during initialization\r\n// They include a combination of private and internal property names\r\nvar _ignoreUpdateSnippetProperties = [\r\n STR_SNIPPET, \"dependencies\", \"properties\", \"_snippetVersion\", \"appInsightsNew\", \"getSKUDefaults\"\r\n];\r\n// Re-exposing the Common classes as Telemetry, the list was taken by reviewing the generated code for the build while using\r\n// the previous configuration :-\r\n// import * as Common from \"@microsoft/applicationinsights-common\"\r\n// export const Telemetry = Common;\r\nvar fieldType = {\r\n Default: 0 /* FieldType.Default */,\r\n Required: 1 /* FieldType.Required */,\r\n Array: 2 /* FieldType.Array */,\r\n Hidden: 4 /* FieldType.Hidden */\r\n};\r\n/**\r\n * Telemetry type classes, e.g. PageView, Exception, etc\r\n */\r\nexport var Telemetry = {\r\n __proto__: null,\r\n PropertiesPluginIdentifier: PropertiesPluginIdentifier,\r\n BreezeChannelIdentifier: BreezeChannelIdentifier,\r\n AnalyticsPluginIdentifier: AnalyticsPluginIdentifier,\r\n Util: Util,\r\n CorrelationIdHelper: CorrelationIdHelper,\r\n UrlHelper: UrlHelper,\r\n DateTimeUtils: DateTimeUtils,\r\n ConnectionStringParser: ConnectionStringParser,\r\n FieldType: fieldType,\r\n RequestHeaders: RequestHeaders,\r\n DisabledPropertyName: DisabledPropertyName,\r\n ProcessLegacy: ProcessLegacy,\r\n SampleRate: SampleRate,\r\n HttpMethod: HttpMethod,\r\n DEFAULT_BREEZE_ENDPOINT: DEFAULT_BREEZE_ENDPOINT,\r\n Envelope: Envelope,\r\n Event: Event,\r\n Exception: Exception,\r\n Metric: Metric,\r\n PageView: PageView,\r\n RemoteDependencyData: RemoteDependencyData,\r\n Trace: Trace,\r\n PageViewPerformance: PageViewPerformance,\r\n Data: Data,\r\n SeverityLevel: SeverityLevel,\r\n ConfigurationManager: ConfigurationManager,\r\n ContextTagKeys: ContextTagKeys,\r\n DataSanitizer: DataSanitizer,\r\n TelemetryItemCreator: TelemetryItemCreator,\r\n CtxTagKeys: CtxTagKeys,\r\n Extensions: Extensions,\r\n DistributedTracingModes: DistributedTracingModes\r\n};\r\n/**\r\n * Application Insights API\r\n * @class Initialization\r\n * @implements {IApplicationInsights}\r\n */\r\nvar Initialization = /** @class */ (function () {\r\n function Initialization(snippet) {\r\n var _this = this;\r\n // NOTE!: DON'T set default values here, instead set them in the _initDefaults() function as it is also called during teardown()\r\n var dependencies;\r\n var properties;\r\n var _sender;\r\n var _snippetVersion;\r\n var _evtNamespace;\r\n var _houseKeepingNamespace;\r\n var _core;\r\n dynamicProto(Initialization, this, function (_self) {\r\n _initDefaults();\r\n // initialize the queue and config in case they are undefined\r\n _snippetVersion = \"\" + (snippet.sv || snippet[_DYN_VERSION /* @min:%2eversion */] || \"\");\r\n snippet[_DYN_QUEUE /* @min:%2equeue */] = snippet[_DYN_QUEUE /* @min:%2equeue */] || [];\r\n snippet[_DYN_VERSION /* @min:%2eversion */] = snippet[_DYN_VERSION /* @min:%2eversion */] || 2.0; // Default to new version\r\n var config = snippet[_DYN_CONFIG /* @min:%2econfig */] || {};\r\n if (config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */]) {\r\n var cs = parseConnectionString(config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */]);\r\n var ingest = cs.ingestionendpoint;\r\n config[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */] = ingest ? (ingest + DEFAULT_BREEZE_PATH) : config[_DYN_ENDPOINT_URL /* @min:%2eendpointUrl */]; // only add /v2/track when from connectionstring\r\n config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */] = cs.instrumentationkey || config[_DYN_INSTRUMENTATION_KEY /* @min:%2einstrumentationKey */];\r\n }\r\n _self[_DYN_APP_INSIGHTS /* @min:%2eappInsights */] = new AnalyticsPlugin();\r\n properties = new PropertiesPlugin();\r\n dependencies = new DependenciesPlugin();\r\n _sender = new Sender();\r\n _core = new AppInsightsCore();\r\n _self.core = _core;\r\n var isErrMessageDisabled = isNullOrUndefined(config[_DYN_DISABLE_IKEY_DEPRECA18 /* @min:%2edisableIkeyDeprecationMessage */]) ? true : config[_DYN_DISABLE_IKEY_DEPRECA18 /* @min:%2edisableIkeyDeprecationMessage */];\r\n if (!config[_DYN_CONNECTION_STRING /* @min:%2econnectionString */] && !isErrMessageDisabled) {\r\n _throwInternal(_core.logger, 1 /* eLoggingSeverity.CRITICAL */, 106 /* _eInternalMessageId.InstrumentationKeyDeprecation */, \"Instrumentation key support will end soon, see aka.ms/IkeyMigrate\");\r\n }\r\n _self[STR_SNIPPET /* @min:%2esnippet */] = snippet;\r\n _self[_DYN_CONFIG /* @min:%2econfig */] = config;\r\n _getSKUDefaults();\r\n _self[STR_FLUSH /* @min:%2eflush */] = function (async) {\r\n if (async === void 0) { async = true; }\r\n doPerf(_core, function () { return \"AISKU.flush\"; }, function () {\r\n arrForEach(_core[_DYN_GET_TRANSMISSION_CON19 /* @min:%2egetTransmissionControls */](), function (channels) {\r\n arrForEach(channels, function (channel) {\r\n channel[STR_FLUSH /* @min:%2eflush */](async);\r\n });\r\n });\r\n }, null, async);\r\n };\r\n _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */] = function (async) {\r\n if (async === void 0) { async = true; }\r\n arrForEach(_core[_DYN_GET_TRANSMISSION_CON19 /* @min:%2egetTransmissionControls */](), function (channels) {\r\n arrForEach(channels, function (channel) {\r\n if (channel[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]) {\r\n channel[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */]();\r\n }\r\n else {\r\n channel[STR_FLUSH /* @min:%2eflush */](async);\r\n }\r\n });\r\n });\r\n };\r\n _self[_DYN_LOAD_APP_INSIGHTS /* @min:%2eloadAppInsights */] = function (legacyMode, logger, notificationManager) {\r\n if (legacyMode === void 0) { legacyMode = false; }\r\n function _updateSnippetProperties(snippet) {\r\n if (snippet) {\r\n var snippetVer = \"\";\r\n if (!isNullOrUndefined(_snippetVersion)) {\r\n snippetVer += _snippetVersion;\r\n }\r\n if (legacyMode) {\r\n snippetVer += \".lg\";\r\n }\r\n if (_self[_DYN_CONTEXT /* @min:%2econtext */] && _self[_DYN_CONTEXT /* @min:%2econtext */].internal) {\r\n _self[_DYN_CONTEXT /* @min:%2econtext */].internal.snippetVer = snippetVer || \"-\";\r\n }\r\n // apply updated properties to the global instance (snippet)\r\n objForEachKey(_self, function (field, value) {\r\n if (isString(field) &&\r\n !isFunction(value) &&\r\n field && field[0] !== \"_\" && // Don't copy \"internal\" values\r\n arrIndexOf(_ignoreUpdateSnippetProperties, field) === -1) {\r\n snippet[field] = value;\r\n }\r\n });\r\n }\r\n }\r\n // dont allow additional channels/other extensions for legacy mode; legacy mode is only to allow users to switch with no code changes!\r\n if (legacyMode && _self[_DYN_CONFIG /* @min:%2econfig */].extensions && _self[_DYN_CONFIG /* @min:%2econfig */].extensions.length > 0) {\r\n throwError(\"Extensions not allowed in legacy mode\");\r\n }\r\n doPerf(_self.core, function () { return \"AISKU.loadAppInsights\"; }, function () {\r\n var extensions = [];\r\n extensions[_DYN_PUSH /* @min:%2epush */](_sender);\r\n extensions[_DYN_PUSH /* @min:%2epush */](properties);\r\n extensions[_DYN_PUSH /* @min:%2epush */](dependencies);\r\n extensions[_DYN_PUSH /* @min:%2epush */](_self[_DYN_APP_INSIGHTS /* @min:%2eappInsights */]);\r\n // initialize core\r\n _core.initialize(_self[_DYN_CONFIG /* @min:%2econfig */], extensions, logger, notificationManager);\r\n _self[_DYN_CONTEXT /* @min:%2econtext */] = properties[_DYN_CONTEXT /* @min:%2econtext */];\r\n if (_internalSdkSrc && _self[_DYN_CONTEXT /* @min:%2econtext */]) {\r\n _self[_DYN_CONTEXT /* @min:%2econtext */].internal.sdkSrc = _internalSdkSrc;\r\n }\r\n _updateSnippetProperties(_self[STR_SNIPPET /* @min:%2esnippet */]);\r\n // Empty queue of all api calls logged prior to sdk download\r\n _self.emptyQueue();\r\n _self[STR_POLL_INTERNAL_LOGS /* @min:%2epollInternalLogs */]();\r\n _self[_DYN_ADD_HOUSEKEEPING_BEF20 /* @min:%2eaddHousekeepingBeforeUnload */](_this);\r\n });\r\n return _self;\r\n };\r\n _self[_DYN_UPDATE_SNIPPET_DEFIN0 /* @min:%2eupdateSnippetDefinitions */] = function (snippet) {\r\n // apply full appInsights to the global instance\r\n // Note: This must be called before loadAppInsights is called\r\n proxyAssign(snippet, _self, function (name) {\r\n // Not excluding names prefixed with \"_\" as we need to proxy some functions like _onError\r\n return name && arrIndexOf(_ignoreUpdateSnippetProperties, name) === -1;\r\n });\r\n };\r\n _self.emptyQueue = function () {\r\n // call functions that were queued before the main script was loaded\r\n try {\r\n if (isArray(_self.snippet[_DYN_QUEUE /* @min:%2equeue */])) {\r\n // note: do not check length in the for-loop conditional in case something goes wrong and the stub methods are not overridden.\r\n var length_1 = _self.snippet[_DYN_QUEUE /* @min:%2equeue */].length;\r\n for (var i = 0; i < length_1; i++) {\r\n var call = _self.snippet[_DYN_QUEUE /* @min:%2equeue */][i];\r\n call();\r\n }\r\n _self.snippet[_DYN_QUEUE /* @min:%2equeue */] = undefined;\r\n delete _self.snippet[_DYN_QUEUE /* @min:%2equeue */];\r\n }\r\n }\r\n catch (exception) {\r\n var properties_1 = {};\r\n if (exception && isFunction(exception.toString)) {\r\n properties_1.exception = exception.toString();\r\n }\r\n // need from core\r\n // Microsoft.ApplicationInsights._InternalLogging.throwInternal(\r\n // eLoggingSeverity.WARNING,\r\n // _eInternalMessageId.FailedToSendQueuedTelemetry,\r\n // \"Failed to send queued telemetry\",\r\n // properties);\r\n }\r\n };\r\n _self[_DYN_ADD_HOUSEKEEPING_BEF20 /* @min:%2eaddHousekeepingBeforeUnload */] = function (appInsightsInstance) {\r\n // Add callback to push events when the user navigates away\r\n if (hasWindow() || hasDocument()) {\r\n var performHousekeeping = function () {\r\n // Adds the ability to flush all data before the page unloads.\r\n // Note: This approach tries to push a sync request with all the pending events onbeforeunload.\r\n // Firefox does not respect this.Other browsers DO push out the call with < 100% hit rate.\r\n // Telemetry here will help us analyze how effective this approach is.\r\n // Another approach would be to make this call sync with a acceptable timeout to reduce the\r\n // impact on user experience.\r\n // appInsightsInstance.context._sender.triggerSend();\r\n appInsightsInstance[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */](false);\r\n // Back up the current session to local storage\r\n // This lets us close expired sessions after the cookies themselves expire\r\n if (isFunction(_this.core[STR_GET_PLUGIN /* @min:%2egetPlugin */])) {\r\n var loadedPlugin = _this.core[STR_GET_PLUGIN /* @min:%2egetPlugin */](PropertiesPluginIdentifier);\r\n if (loadedPlugin) {\r\n var propertiesPlugin = loadedPlugin.plugin;\r\n if (propertiesPlugin && propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */] && propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */]._sessionManager) {\r\n propertiesPlugin[_DYN_CONTEXT /* @min:%2econtext */]._sessionManager.backup();\r\n }\r\n }\r\n }\r\n };\r\n var added = false;\r\n var excludePageUnloadEvents = appInsightsInstance.appInsights[_DYN_CONFIG /* @min:%2econfig */].disablePageUnloadEvents;\r\n if (!_houseKeepingNamespace) {\r\n _houseKeepingNamespace = mergeEvtNamespace(_evtNamespace, _core[STR_EVT_NAMESPACE /* @min:%2eevtNamespace */] && _core[STR_EVT_NAMESPACE /* @min:%2eevtNamespace */]());\r\n }\r\n if (!appInsightsInstance.appInsights.config[_DYN_DISABLE_FLUSH_ON_BEF11 /* @min:%2edisableFlushOnBeforeUnload */]) {\r\n // Hook the unload event for the document, window and body to ensure that the client events are flushed to the server\r\n // As just hooking the window does not always fire (on chrome) for page navigation's.\r\n if (addPageUnloadEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace)) {\r\n added = true;\r\n }\r\n // We also need to hook the pagehide and visibilitychange events as not all versions of Safari support load/unload events.\r\n if (addPageHideEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace)) {\r\n added = true;\r\n }\r\n // A reactNative app may not have a window and therefore the beforeunload/pagehide events -- so don't\r\n // log the failure in this case\r\n if (!added && !isReactNative()) {\r\n _throwInternal(appInsightsInstance[_DYN_APP_INSIGHTS /* @min:%2eappInsights */].core.logger, 1 /* eLoggingSeverity.CRITICAL */, 19 /* _eInternalMessageId.FailedToAddHandlerForOnBeforeUnload */, \"Could not add handler for beforeunload and pagehide\");\r\n }\r\n }\r\n if (!added && !appInsightsInstance.appInsights.config[_DYN_DISABLE_FLUSH_ON_UNL12 /* @min:%2edisableFlushOnUnload */]) {\r\n // If we didn't add the normal set then attempt to add the pagehide and visibilitychange only\r\n addPageHideEventListener(performHousekeeping, excludePageUnloadEvents, _houseKeepingNamespace);\r\n }\r\n }\r\n };\r\n _self.getSender = function () {\r\n return _sender;\r\n };\r\n _self.unload = function (isAsync, unloadComplete, cbTimeout) {\r\n _self[_DYN_ONUNLOAD_FLUSH /* @min:%2eonunloadFlush */](isAsync);\r\n // Remove any registered event handlers\r\n if (_houseKeepingNamespace) {\r\n removePageUnloadEventListener(null, _houseKeepingNamespace);\r\n removePageHideEventListener(null, _houseKeepingNamespace);\r\n }\r\n _core.unload && _core.unload(isAsync, unloadComplete, cbTimeout);\r\n };\r\n proxyFunctions(_self, _self[_DYN_APP_INSIGHTS /* @min:%2eappInsights */], [\r\n STR_GET_COOKIE_MGR,\r\n STR_TRACK_EVENT,\r\n STR_TRACK_PAGE_VIEW,\r\n \"trackPageViewPerformance\",\r\n STR_TRACK_EXCEPTION,\r\n \"_onerror\",\r\n STR_TRACK_TRACE,\r\n STR_TRACK_METRIC,\r\n STR_START_TRACK_PAGE,\r\n STR_STOP_TRACK_PAGE,\r\n STR_START_TRACK_EVENT,\r\n STR_STOP_TRACK_EVENT\r\n ]);\r\n proxyFunctions(_self, _getCurrentDependencies, [\r\n STR_TRACK_DEPENDENCY_DATA,\r\n \"addDependencyListener\",\r\n \"addDependencyInitializer\"\r\n ]);\r\n proxyFunctions(_self, _core, [\r\n STR_ADD_TELEMETRY_INITIALIZER,\r\n STR_POLL_INTERNAL_LOGS,\r\n \"stopPollingInternalLogs\",\r\n STR_GET_PLUGIN,\r\n \"addPlugin\",\r\n STR_EVT_NAMESPACE,\r\n \"addUnloadCb\",\r\n \"getTraceCtx\"\r\n ]);\r\n proxyFunctions(_self, function () {\r\n var context = properties[_DYN_CONTEXT /* @min:%2econtext */];\r\n return context ? context.user : null;\r\n }, [\r\n STR_SET_AUTHENTICATED_USER_CONTEXT,\r\n STR_CLEAR_AUTHENTICATED_USER_CONTEXT\r\n ]);\r\n function _getSKUDefaults() {\r\n _self.config[_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] =\r\n _self.config[_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] && _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] > 0 ? _self[_DYN_CONFIG /* @min:%2econfig */][_DYN_DIAGNOSTIC_LOG_INTER4 /* @min:%2ediagnosticLogInterval */] : 10000;\r\n }\r\n // Using a function to support the dynamic adding / removal of plugins, so this will always return the current value\r\n function _getCurrentDependencies() {\r\n return dependencies;\r\n }\r\n function _initDefaults() {\r\n _evtNamespace = createUniqueNamespace(\"AISKU\");\r\n _houseKeepingNamespace = null;\r\n dependencies = null;\r\n properties = null;\r\n _sender = null;\r\n _snippetVersion = null;\r\n }\r\n });\r\n }\r\n // Analytics Plugin\r\n// Removed Stub for Initialization.prototype.getCookieMgr.\r\n// Removed Stub for Initialization.prototype.trackEvent.\r\n// Removed Stub for Initialization.prototype.trackPageView.\r\n// Removed Stub for Initialization.prototype.trackPageViewPerformance.\r\n// Removed Stub for Initialization.prototype.trackException.\r\n// Removed Stub for Initialization.prototype._onerror.\r\n// Removed Stub for Initialization.prototype.trackTrace.\r\n// Removed Stub for Initialization.prototype.trackMetric.\r\n// Removed Stub for Initialization.prototype.startTrackPage.\r\n// Removed Stub for Initialization.prototype.stopTrackPage.\r\n// Removed Stub for Initialization.prototype.startTrackEvent.\r\n// Removed Stub for Initialization.prototype.stopTrackEvent.\r\n// Removed Stub for Initialization.prototype.addTelemetryInitializer.\r\n // Properties Plugin\r\n// Removed Stub for Initialization.prototype.setAuthenticatedUserContext.\r\n// Removed Stub for Initialization.prototype.clearAuthenticatedUserContext.\r\n // Dependencies Plugin\r\n// Removed Stub for Initialization.prototype.trackDependencyData.\r\n // Misc\r\n// Removed Stub for Initialization.prototype.flush.\r\n// Removed Stub for Initialization.prototype.onunloadFlush.\r\n// Removed Stub for Initialization.prototype.loadAppInsights.\r\n// Removed Stub for Initialization.prototype.updateSnippetDefinitions.\r\n// Removed Stub for Initialization.prototype.emptyQueue.\r\n// Removed Stub for Initialization.prototype.pollInternalLogs.\r\n// Removed Stub for Initialization.prototype.stopPollingInternalLogs.\r\n// Removed Stub for Initialization.prototype.addHousekeepingBeforeUnload.\r\n// Removed Stub for Initialization.prototype.getSender.\r\n// Removed Stub for Initialization.prototype.unload.\r\n// Removed Stub for Initialization.prototype.getPlugin.\r\n// Removed Stub for Initialization.prototype.addPlugin.\r\n// Removed Stub for Initialization.prototype.evtNamespace.\r\n// Removed Stub for Initialization.prototype.addUnloadCb.\r\n// Removed Stub for Initialization.prototype.addDependencyListener.\r\n /**\r\n * Add an dependency telemetry initializer callback function to allow populating additional properties or drop the request.\r\n * It is called after the dependency call has completed and any available performance details are available. A dependency\r\n * initializer is similar to the TelemetryInitializer function but it allows you to block the reporting of the dependency\r\n * request so that it doesn't count against the `maxAjaxCallsPerView`.\r\n * @param dependencyInitializer - The Dependency Telemetry Initializer function\r\n * @returns - A IDependencyInitializerHandler to enable the initializer to be removed\r\n */\r\n Initialization.prototype.addDependencyInitializer = function (dependencyInitializer) {\r\n return null;\r\n };\r\n// Removed Stub for Initialization.prototype.getTraceCtx.\r\n return Initialization;\r\n}());\r\nexport { Initialization };\r\n// tslint:disable-next-line\r\n(function () {\r\n var sdkSrc = null;\r\n var isModule = false;\r\n var cdns = [\r\n \"://js.monitor.azure.com/\",\r\n \"://az416426.vo.msecnd.net/\"\r\n ];\r\n try {\r\n // Try and determine whether the sdk is being loaded from the CDN\r\n // currentScript is only valid during initial processing\r\n var scrpt = (document || {}).currentScript;\r\n if (scrpt) {\r\n sdkSrc = scrpt.src;\r\n // } else {\r\n // // We need to update to at least typescript 2.9 for this to work :-(\r\n // // Leaving as a stub for now so after we upgrade this breadcrumb is available\r\n // let meta = import.meta;\r\n // sdkSrc = (meta || {}).url;\r\n // isModule = true;\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n if (sdkSrc) {\r\n try {\r\n var url = sdkSrc.toLowerCase();\r\n if (url) {\r\n var src = \"\";\r\n for (var idx = 0; idx < cdns.length; idx++) {\r\n if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](cdns[idx]) !== -1) {\r\n src = \"cdn\" + (idx + 1);\r\n if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](\"/scripts/\") === -1) {\r\n if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](\"/next/\") !== -1) {\r\n src += \"-next\";\r\n }\r\n else if (url[_DYN_INDEX_OF /* @min:%2eindexOf */](\"/beta/\") !== -1) {\r\n src += \"-beta\";\r\n }\r\n }\r\n _internalSdkSrc = src + (isModule ? \".mod\" : \"\");\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // eslint-disable-next-line no-empty\r\n }\r\n }\r\n})();\r\n//# sourceMappingURL=Initialization.js.map","/*\n * Application Insights JavaScript SDK - Web, 2.8.9\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\n\r\n\r\n// @skip-file-minify\r\n// ##############################################################\r\n// AUTO GENERATED FILE: This file is Auto Generated during build.\r\n// ##############################################################\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n// Note: DON'T Export these const from the package as we are still targeting ES3 this will export a mutable variables that someone could change!!!\r\n// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\nexport var _DYN_UPDATE_SNIPPET_DEFIN0 = \"updateSnippetDefinitions\"; // Count: 4\r\nexport var _DYN_LOAD_APP_INSIGHTS = \"loadAppInsights\"; // Count: 4\r\nexport var _DYN_ENDPOINT_URL = \"endpointUrl\"; // Count: 4\r\nexport var _DYN_MAX_BATCH_SIZE_IN_BY1 = \"maxBatchSizeInBytes\"; // Count: 3\r\nexport var _DYN_MAX_BATCH_INTERVAL = \"maxBatchInterval\"; // Count: 3\r\nexport var _DYN_DISABLE_EXCEPTION_TR2 = \"disableExceptionTracking\"; // Count: 2\r\nexport var _DYN_DISABLE_TELEMETRY = \"disableTelemetry\"; // Count: 2\r\nexport var _DYN_EMIT_LINE_DELIMITED_3 = \"emitLineDelimitedJson\"; // Count: 2\r\nexport var _DYN_DIAGNOSTIC_LOG_INTER4 = \"diagnosticLogInterval\"; // Count: 6\r\nexport var _DYN_AUTO_TRACK_PAGE_VISI5 = \"autoTrackPageVisitTime\"; // Count: 2\r\nexport var _DYN_SAMPLING_PERCENTAGE = \"samplingPercentage\"; // Count: 4\r\nexport var _DYN_DISABLE_AJAX_TRACKIN6 = \"disableAjaxTracking\"; // Count: 2\r\nexport var _DYN_MAX_AJAX_CALLS_PER_V7 = \"maxAjaxCallsPerView\"; // Count: 3\r\nexport var _DYN_IS_BEACON_API_DISABL8 = \"isBeaconApiDisabled\"; // Count: 2\r\nexport var _DYN_DISABLE_CORRELATION_9 = \"disableCorrelationHeaders\"; // Count: 2\r\nexport var _DYN_CORRELATION_HEADER_E10 = \"correlationHeaderExcludedDomains\"; // Count: 2\r\nexport var _DYN_DISABLE_FLUSH_ON_BEF11 = \"disableFlushOnBeforeUnload\"; // Count: 4\r\nexport var _DYN_DISABLE_FLUSH_ON_UNL12 = \"disableFlushOnUnload\"; // Count: 3\r\nexport var _DYN_ENABLE_SESSION_STORA13 = \"enableSessionStorageBuffer\"; // Count: 2\r\nexport var _DYN_IS_COOKIE_USE_DISABL14 = \"isCookieUseDisabled\"; // Count: 2\r\nexport var _DYN_IS_STORAGE_USE_DISAB15 = \"isStorageUseDisabled\"; // Count: 2\r\nexport var _DYN_IS_BROWSER_LINK_TRAC16 = \"isBrowserLinkTrackingEnabled\"; // Count: 2\r\nexport var _DYN_ENABLE_CORS_CORRELAT17 = \"enableCorsCorrelation\"; // Count: 2\r\nexport var _DYN_CONFIG = \"config\"; // Count: 6\r\nexport var _DYN_CONTEXT = \"context\"; // Count: 8\r\nexport var _DYN_PUSH = \"push\"; // Count: 5\r\nexport var _DYN_VERSION = \"version\"; // Count: 6\r\nexport var _DYN_QUEUE = \"queue\"; // Count: 6\r\nexport var _DYN_CONNECTION_STRING = \"connectionString\"; // Count: 3\r\nexport var _DYN_INSTRUMENTATION_KEY = \"instrumentationKey\"; // Count: 2\r\nexport var _DYN_APP_INSIGHTS = \"appInsights\"; // Count: 3\r\nexport var _DYN_DISABLE_IKEY_DEPRECA18 = \"disableIkeyDeprecationMessage\"; // Count: 2\r\nexport var _DYN_GET_TRANSMISSION_CON19 = \"getTransmissionControls\"; // Count: 2\r\nexport var _DYN_ONUNLOAD_FLUSH = \"onunloadFlush\"; // Count: 6\r\nexport var _DYN_ADD_HOUSEKEEPING_BEF20 = \"addHousekeepingBeforeUnload\"; // Count: 2\r\nexport var _DYN_INDEX_OF = \"indexOf\"; // Count: 4\r\n//# sourceMappingURL=__DynamicConstants.js.map","/*!\n * Microsoft Dynamic Proto Utility, 1.1.7\n * Copyright (c) Microsoft and contributors. All rights reserved.\n */\nvar _a;\r\nvar UNDEFINED = \"undefined\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Constructor = 'constructor';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar Prototype = 'prototype';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strFunction = 'function';\r\n/**\r\n * Used to define the name of the instance function lookup table\r\n * @ignore\r\n */\r\nvar DynInstFuncTable = '_dynInstFuncs';\r\n/**\r\n * Name used to tag the dynamic prototype function\r\n * @ignore\r\n */\r\nvar DynProxyTag = '_isDynProxy';\r\n/**\r\n * Name added to a prototype to define the dynamic prototype \"class\" name used to lookup the function table\r\n * @ignore\r\n */\r\nvar DynClassName = '_dynClass';\r\n/**\r\n * Prefix added to the classname to avoid any name clashes with other instance level properties\r\n * @ignore\r\n */\r\nvar DynClassNamePrefix = '_dynCls$';\r\n/**\r\n * A tag which is used to check if we have already to attempted to set the instance function if one is not present\r\n * @ignore\r\n */\r\nvar DynInstChkTag = '_dynInstChk';\r\n/**\r\n * A tag which is used to check if we are allows to try and set an instance function is one is not present. Using the same\r\n * tag name as the function level but a different const name for readability only.\r\n */\r\nvar DynAllowInstChkTag = DynInstChkTag;\r\n/**\r\n * The global (imported) instances where the global performance options are stored\r\n */\r\nvar DynProtoDefaultOptions = '_dfOpts';\r\n/**\r\n * Value used as the name of a class when it cannot be determined\r\n * @ignore\r\n */\r\nvar UnknownValue = '_unknown_';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar str__Proto = \"__proto__\";\r\n/**\r\n * The polyfill version of __proto__ so that it doesn't cause issues for anyone not expecting it to exist\r\n */\r\nvar DynProtoBaseProto = \"_dyn\" + str__Proto;\r\n/**\r\n * Runtime Global holder for dynamicProto settings\r\n */\r\nvar DynProtoGlobalSettings = \"__dynProto$Gbl\";\r\n/**\r\n * Track the current prototype for IE8 as you can't look back to get the prototype\r\n */\r\nvar DynProtoCurrent = \"_dynInstProto\";\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strUseBaseInst = 'useBaseInst';\r\n/**\r\n * Constant string defined to support minimization\r\n * @ignore\r\n */\r\nvar strSetInstFuncs = 'setInstFuncs';\r\nvar Obj = Object;\r\n/**\r\n * Pre-lookup to check if we are running on a modern browser (i.e. not IE8)\r\n * @ignore\r\n */\r\nvar _objGetPrototypeOf = Obj[\"getPrototypeOf\"];\r\n/**\r\n * Pre-lookup to check for the existence of this function\r\n */\r\nvar _objGetOwnProps = Obj[\"getOwnPropertyNames\"];\r\n/**\r\n * Gets the runtime global reference\r\n * @returns\r\n */\r\nfunction _getGlobal() {\r\n var result;\r\n if (typeof globalThis !== UNDEFINED) {\r\n result = globalThis;\r\n }\r\n if (!result && typeof self !== UNDEFINED) {\r\n result = self;\r\n }\r\n if (!result && typeof window !== UNDEFINED) {\r\n result = window;\r\n }\r\n if (!result && typeof global !== UNDEFINED) {\r\n result = global;\r\n }\r\n return result || {};\r\n}\r\n// Since 1.1.7 moving these to the runtime global to work around mixed version and module issues\r\n// See Issue https://github.com/microsoft/DynamicProto-JS/issues/57 for details\r\nvar _gbl = _getGlobal();\r\nvar _gblInst = _gbl[DynProtoGlobalSettings] || (_gbl[DynProtoGlobalSettings] = {\r\n o: (_a = {},\r\n _a[strSetInstFuncs] = true,\r\n _a[strUseBaseInst] = true,\r\n _a),\r\n n: 1000 // Start new global index @ 1000 so we \"fix\" some cases when mixed with 1.1.6 or earlier\r\n});\r\n/**\r\n * Helper to check if the object contains a property of the name\r\n * @ignore\r\n */\r\nfunction _hasOwnProperty(obj, prop) {\r\n return obj && Obj[Prototype].hasOwnProperty.call(obj, prop);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype or Array prototype\r\n * @ignore\r\n */\r\nfunction _isObjectOrArrayPrototype(target) {\r\n return target && (target === Obj[Prototype] || target === Array[Prototype]);\r\n}\r\n/**\r\n * Helper used to check whether the target is an Object prototype, Array prototype or Function prototype\r\n * @ignore\r\n */\r\nfunction _isObjectArrayOrFunctionPrototype(target) {\r\n return _isObjectOrArrayPrototype(target) || target === Function[Prototype];\r\n}\r\n/**\r\n * Helper used to get the prototype of the target object as getPrototypeOf is not available in an ES3 environment.\r\n * @ignore\r\n */\r\nfunction _getObjProto(target) {\r\n var newProto;\r\n if (target) {\r\n // This method doesn't exist in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n return _objGetPrototypeOf(target);\r\n }\r\n var curProto = target[str__Proto] || target[Prototype] || (target[Constructor] ? target[Constructor][Prototype] : null);\r\n // Using the pre-calculated value as IE8 doesn't support looking up the prototype of a prototype and thus fails for more than 1 base class\r\n newProto = target[DynProtoBaseProto] || curProto;\r\n if (!_hasOwnProperty(target, DynProtoBaseProto)) {\r\n // As this prototype doesn't have this property then this is from an inherited class so newProto is the base to return so save it\r\n // so we can look it up value (which for a multiple hierarchy dynamicProto will be the base class)\r\n delete target[DynProtoCurrent]; // Delete any current value allocated to this instance so we pick up the value from prototype hierarchy\r\n newProto = target[DynProtoBaseProto] = target[DynProtoCurrent] || target[DynProtoBaseProto];\r\n target[DynProtoCurrent] = curProto;\r\n }\r\n }\r\n return newProto;\r\n}\r\n/**\r\n * Helper to get the properties of an object, including none enumerable ones as functions on a prototype in ES6\r\n * are not enumerable.\r\n * @param target\r\n */\r\nfunction _forEachProp(target, func) {\r\n var props = [];\r\n if (_objGetOwnProps) {\r\n props = _objGetOwnProps(target);\r\n }\r\n else {\r\n for (var name_1 in target) {\r\n if (typeof name_1 === \"string\" && _hasOwnProperty(target, name_1)) {\r\n props.push(name_1);\r\n }\r\n }\r\n }\r\n if (props && props.length > 0) {\r\n for (var lp = 0; lp < props.length; lp++) {\r\n func(props[lp]);\r\n }\r\n }\r\n}\r\n/**\r\n * Helper function to check whether the provided function name is a potential candidate for dynamic\r\n * callback and prototype generation.\r\n * @param target The target object, may be a prototype or class object\r\n * @param funcName The function name\r\n * @param skipOwn Skips the check for own property\r\n * @ignore\r\n */\r\nfunction _isDynamicCandidate(target, funcName, skipOwn) {\r\n return (funcName !== Constructor && typeof target[funcName] === strFunction && (skipOwn || _hasOwnProperty(target, funcName)));\r\n}\r\n/**\r\n * Helper to throw a TypeError exception\r\n * @param message the message\r\n * @ignore\r\n */\r\nfunction _throwTypeError(message) {\r\n throw new TypeError(\"DynamicProto: \" + message);\r\n}\r\n/**\r\n * Returns a collection of the instance functions that are defined directly on the thisTarget object, it does\r\n * not return any inherited functions\r\n * @param thisTarget The object to get the instance functions from\r\n * @ignore\r\n */\r\nfunction _getInstanceFuncs(thisTarget) {\r\n // Get the base proto\r\n var instFuncs = {};\r\n // Save any existing instance functions\r\n _forEachProp(thisTarget, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n if (!instFuncs[name] && _isDynamicCandidate(thisTarget, name, false)) {\r\n // Create an instance callback for passing the base function to the caller\r\n instFuncs[name] = thisTarget[name];\r\n }\r\n });\r\n return instFuncs;\r\n}\r\n/**\r\n * Returns whether the value is included in the array\r\n * @param values The array of values\r\n * @param value The value\r\n */\r\nfunction _hasVisited(values, value) {\r\n for (var lp = values.length - 1; lp >= 0; lp--) {\r\n if (values[lp] === value) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n/**\r\n * Returns an object that contains callback functions for all \"base/super\" functions, this is used to \"save\"\r\n * enabling calling super.xxx() functions without requiring that the base \"class\" has defined a prototype references\r\n * @param target The current instance\r\n * @ignore\r\n */\r\nfunction _getBaseFuncs(classProto, thisTarget, instFuncs, useBaseInst) {\r\n function _instFuncProxy(target, funcHost, funcName) {\r\n var theFunc = funcHost[funcName];\r\n if (theFunc[DynProxyTag] && useBaseInst) {\r\n // grab and reuse the hosted looking function (if available) otherwise the original passed function\r\n var instFuncTable = target[DynInstFuncTable] || {};\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n theFunc = (instFuncTable[funcHost[DynClassName]] || {})[funcName] || theFunc;\r\n }\r\n }\r\n return function () {\r\n // eslint-disable-next-line prefer-rest-params\r\n return theFunc.apply(target, arguments);\r\n };\r\n }\r\n // Start creating a new baseFuncs by creating proxies for the instance functions (as they may get replaced)\r\n var baseFuncs = {};\r\n _forEachProp(instFuncs, function (name) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, instFuncs, name);\r\n });\r\n // Get the base prototype functions\r\n var baseProto = _getObjProto(classProto);\r\n var visited = [];\r\n // Don't include base object functions for Object, Array or Function\r\n while (baseProto && !_isObjectArrayOrFunctionPrototype(baseProto) && !_hasVisited(visited, baseProto)) {\r\n // look for prototype functions\r\n _forEachProp(baseProto, function (name) {\r\n // Don't include any dynamic prototype instances - as we only want the real functions\r\n // For IE 7/8 the prototype lookup doesn't provide the full chain so we need to bypass the \r\n // hasOwnProperty check we get all of the methods, main difference is that IE7/8 doesn't return\r\n // the Object prototype methods while bypassing the check\r\n if (!baseFuncs[name] && _isDynamicCandidate(baseProto, name, !_objGetPrototypeOf)) {\r\n // Create an instance callback for passing the base function to the caller\r\n baseFuncs[name] = _instFuncProxy(thisTarget, baseProto, name);\r\n }\r\n });\r\n // We need to find all possible functions that might be overloaded by walking the entire prototype chain\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(baseProto);\r\n baseProto = _getObjProto(baseProto);\r\n }\r\n return baseFuncs;\r\n}\r\nfunction _getInstFunc(target, funcName, proto, currentDynProtoProxy) {\r\n var instFunc = null;\r\n // We need to check whether the class name is defined directly on this prototype otherwise\r\n // it will walk the proto chain and return any parent proto classname.\r\n if (target && _hasOwnProperty(proto, DynClassName)) {\r\n var instFuncTable = target[DynInstFuncTable] || {};\r\n instFunc = (instFuncTable[proto[DynClassName]] || {})[funcName];\r\n if (!instFunc) {\r\n // Avoid stack overflow from recursive calling the same function\r\n _throwTypeError(\"Missing [\" + funcName + \"] \" + strFunction);\r\n }\r\n // We have the instance function, lets check it we can speed up further calls\r\n // by adding the instance function back directly on the instance (avoiding the dynamic func lookup)\r\n if (!instFunc[DynInstChkTag] && instFuncTable[DynAllowInstChkTag] !== false) {\r\n // If the instance already has an instance function we can't replace it\r\n var canAddInst = !_hasOwnProperty(target, funcName);\r\n // Get current prototype\r\n var objProto = _getObjProto(target);\r\n var visited = [];\r\n // Lookup the function starting at the top (instance level prototype) and traverse down, if the first matching function\r\n // if nothing is found or if the first hit is a dynamic proto instance then we can safely add an instance shortcut\r\n while (canAddInst && objProto && !_isObjectArrayOrFunctionPrototype(objProto) && !_hasVisited(visited, objProto)) {\r\n var protoFunc = objProto[funcName];\r\n if (protoFunc) {\r\n canAddInst = (protoFunc === currentDynProtoProxy);\r\n break;\r\n }\r\n // We need to find all possible initial functions to ensure that we don't bypass a valid override function\r\n visited.push(objProto);\r\n objProto = _getObjProto(objProto);\r\n }\r\n try {\r\n if (canAddInst) {\r\n // This instance doesn't have an instance func and the class hierarchy does have a higher level prototype version\r\n // so it's safe to directly assign for any subsequent calls (for better performance)\r\n target[funcName] = instFunc;\r\n }\r\n // Block further attempts to set the instance function for any\r\n instFunc[DynInstChkTag] = 1;\r\n }\r\n catch (e) {\r\n // Don't crash if the object is readonly or the runtime doesn't allow changing this\r\n // And set a flag so we don't try again for any function\r\n instFuncTable[DynAllowInstChkTag] = false;\r\n }\r\n }\r\n }\r\n return instFunc;\r\n}\r\nfunction _getProtoFunc(funcName, proto, currentDynProtoProxy) {\r\n var protoFunc = proto[funcName];\r\n // Check that the prototype function is not a self reference -- try to avoid stack overflow!\r\n if (protoFunc === currentDynProtoProxy) {\r\n // It is so lookup the base prototype\r\n protoFunc = _getObjProto(proto)[funcName];\r\n }\r\n if (typeof protoFunc !== strFunction) {\r\n _throwTypeError(\"[\" + funcName + \"] is not a \" + strFunction);\r\n }\r\n return protoFunc;\r\n}\r\n/**\r\n * Add the required dynamic prototype methods to the the class prototype\r\n * @param proto - The class prototype\r\n * @param className - The instance classname\r\n * @param target - The target instance\r\n * @param baseInstFuncs - The base instance functions\r\n * @param setInstanceFunc - Flag to allow prototype function to reset the instance function if one does not exist\r\n * @ignore\r\n */\r\nfunction _populatePrototype(proto, className, target, baseInstFuncs, setInstanceFunc) {\r\n function _createDynamicPrototype(proto, funcName) {\r\n var dynProtoProxy = function () {\r\n // Use the instance or prototype function\r\n var instFunc = _getInstFunc(this, funcName, proto, dynProtoProxy) || _getProtoFunc(funcName, proto, dynProtoProxy);\r\n // eslint-disable-next-line prefer-rest-params\r\n return instFunc.apply(this, arguments);\r\n };\r\n // Tag this function as a proxy to support replacing dynamic proxy elements (primary use case is for unit testing\r\n // via which can dynamically replace the prototype function reference)\r\n dynProtoProxy[DynProxyTag] = 1;\r\n return dynProtoProxy;\r\n }\r\n if (!_isObjectOrArrayPrototype(proto)) {\r\n var instFuncTable = target[DynInstFuncTable] = target[DynInstFuncTable] || {};\r\n var instFuncs_1 = instFuncTable[className] = (instFuncTable[className] || {}); // fetch and assign if as it may not exist yet\r\n // Set whether we are allow to lookup instances, if someone has set to false then do not re-enable\r\n if (instFuncTable[DynAllowInstChkTag] !== false) {\r\n instFuncTable[DynAllowInstChkTag] = !!setInstanceFunc;\r\n }\r\n _forEachProp(target, function (name) {\r\n // Only add overridden functions\r\n if (_isDynamicCandidate(target, name, false) && target[name] !== baseInstFuncs[name]) {\r\n // Save the instance Function to the lookup table and remove it from the instance as it's not a dynamic proto function\r\n instFuncs_1[name] = target[name];\r\n delete target[name];\r\n // Add a dynamic proto if one doesn't exist or if a prototype function exists and it's not a dynamic one\r\n if (!_hasOwnProperty(proto, name) || (proto[name] && !proto[name][DynProxyTag])) {\r\n proto[name] = _createDynamicPrototype(proto, name);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n/**\r\n * Checks whether the passed prototype object appears to be correct by walking the prototype hierarchy of the instance\r\n * @param classProto The class prototype instance\r\n * @param thisTarget The current instance that will be checked whether the passed prototype instance is in the hierarchy\r\n * @ignore\r\n */\r\nfunction _checkPrototype(classProto, thisTarget) {\r\n // This method doesn't existing in older browsers (e.g. IE8)\r\n if (_objGetPrototypeOf) {\r\n // As this is primarily a coding time check, don't bother checking if running in IE8 or lower\r\n var visited = [];\r\n var thisProto = _getObjProto(thisTarget);\r\n while (thisProto && !_isObjectArrayOrFunctionPrototype(thisProto) && !_hasVisited(visited, thisProto)) {\r\n if (thisProto === classProto) {\r\n return true;\r\n }\r\n // This avoids the caller from needing to check whether it's direct base class implements the function or not\r\n // by walking the entire chain it simplifies the usage and issues from upgrading any of the base classes.\r\n visited.push(thisProto);\r\n thisProto = _getObjProto(thisProto);\r\n }\r\n return false;\r\n }\r\n // If objGetPrototypeOf doesn't exist then just assume everything is ok.\r\n return true;\r\n}\r\n/**\r\n * Gets the current prototype name using the ES6 name if available otherwise falling back to a use unknown as the name.\r\n * It's not critical for this to return a name, it's used to decorate the generated unique name for easier debugging only.\r\n * @param target\r\n * @param unknownValue\r\n * @ignore\r\n */\r\nfunction _getObjName(target, unknownValue) {\r\n if (_hasOwnProperty(target, Prototype)) {\r\n // Look like a prototype\r\n return target.name || unknownValue || UnknownValue;\r\n }\r\n return (((target || {})[Constructor]) || {}).name || unknownValue || UnknownValue;\r\n}\r\n/**\r\n * Helper function when creating dynamic (inline) functions for classes, this helper performs the following tasks :-\r\n * - Saves references to all defined base class functions\r\n * - Calls the delegateFunc with the current target (this) and a base object reference that can be used to call all \"super\" functions.\r\n * - Will populate the class prototype for all overridden functions to support class extension that call the prototype instance.\r\n * Callers should use this helper when declaring all function within the constructor of a class, as mentioned above the delegateFunc is\r\n * passed both the target \"this\" and an object that can be used to call any base (super) functions, using this based object in place of\r\n * super.XXX() (which gets expanded to _super.prototype.XXX()) provides a better minification outcome and also ensures the correct \"this\"\r\n * context is maintained as TypeScript creates incorrect references using super.XXXX() for dynamically defined functions i.e. Functions\r\n * defined in the constructor or some other function (rather than declared as complete typescript functions).\r\n * ### Usage\r\n * ```typescript\r\n * import dynamicProto from \"@microsoft/dynamicproto-js\";\r\n * class ExampleClass extends BaseClass {\r\n * constructor() {\r\n * dynamicProto(ExampleClass, this, (_self, base) => {\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.newFunc = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * ...\r\n * }\r\n * }\r\n * // This will define a function that will be converted to a prototype function\r\n * _self.myFunction = () => {\r\n * // Access any \"this\" instance property\r\n * if (_self.someProperty) {\r\n * // Call the base version of the function that we are overriding\r\n * base.myFunction();\r\n * }\r\n * ...\r\n * }\r\n * _self.initialize = () => {\r\n * ...\r\n * }\r\n * // Warnings: While the following will work as _self is simply a reference to\r\n * // this, if anyone overrides myFunction() the overridden will be called first\r\n * // as the normal JavaScript method resolution will occur and the defined\r\n * // _self.initialize() function is actually gets removed from the instance and\r\n * // a proxy prototype version is created to reference the created method.\r\n * _self.initialize();\r\n * });\r\n * }\r\n * }\r\n * ```\r\n * @typeparam DPType This is the generic type of the class, used to keep intellisense valid\r\n * @typeparam DPCls The type that contains the prototype of the current class\r\n * @param theClass - This is the current class instance which contains the prototype for the current class\r\n * @param target - The current \"this\" (target) reference, when the class has been extended this.prototype will not be the 'theClass' value.\r\n * @param delegateFunc - The callback function (closure) that will create the dynamic function\r\n * @param options - Additional options to configure how the dynamic prototype operates\r\n */\r\nfunction dynamicProto(theClass, target, delegateFunc, options) {\r\n // Make sure that the passed theClass argument looks correct\r\n if (!_hasOwnProperty(theClass, Prototype)) {\r\n _throwTypeError(\"theClass is an invalid class definition.\");\r\n }\r\n // Quick check to make sure that the passed theClass argument looks correct (this is a common copy/paste error)\r\n var classProto = theClass[Prototype];\r\n if (!_checkPrototype(classProto, target)) {\r\n _throwTypeError(\"[\" + _getObjName(theClass) + \"] not in hierarchy of [\" + _getObjName(target) + \"]\");\r\n }\r\n var className = null;\r\n if (_hasOwnProperty(classProto, DynClassName)) {\r\n // Only grab the class name if it's defined on this prototype (i.e. don't walk the prototype chain)\r\n className = classProto[DynClassName];\r\n }\r\n else {\r\n // As not all browser support name on the prototype creating a unique dynamic one if we have not already\r\n // assigned one, so we can use a simple string as the lookup rather than an object for the dynamic instance\r\n // function table lookup.\r\n className = DynClassNamePrefix + _getObjName(theClass, \"_\") + \"$\" + _gblInst.n;\r\n _gblInst.n++;\r\n classProto[DynClassName] = className;\r\n }\r\n var perfOptions = dynamicProto[DynProtoDefaultOptions];\r\n var useBaseInst = !!perfOptions[strUseBaseInst];\r\n if (useBaseInst && options && options[strUseBaseInst] !== undefined) {\r\n useBaseInst = !!options[strUseBaseInst];\r\n }\r\n // Get the current instance functions\r\n var instFuncs = _getInstanceFuncs(target);\r\n // Get all of the functions for any base instance (before they are potentially overridden)\r\n var baseFuncs = _getBaseFuncs(classProto, target, instFuncs, useBaseInst);\r\n // Execute the delegate passing in both the current target \"this\" and \"base\" function references\r\n // Note casting the same type as we don't actually have the base class here and this will provide some intellisense support\r\n delegateFunc(target, baseFuncs);\r\n // Don't allow setting instance functions for older IE instances\r\n var setInstanceFunc = !!_objGetPrototypeOf && !!perfOptions[strSetInstFuncs];\r\n if (setInstanceFunc && options) {\r\n setInstanceFunc = !!options[strSetInstFuncs];\r\n }\r\n // Populate the Prototype for any overridden instance functions\r\n _populatePrototype(classProto, className, target, instFuncs, setInstanceFunc !== false);\r\n}\r\n/**\r\n * Exposes the default global options to allow global configuration, if the global values are disabled these will override\r\n * any passed values. This is primarily exposed to support unit-testing without the need for individual classes to expose\r\n * their internal usage of dynamic proto.\r\n */\r\ndynamicProto[DynProtoDefaultOptions] = _gblInst.o;\n\nexport { dynamicProto as default };\n//# sourceMappingURL=dynamicproto-js.js.map\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var 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) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var 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 var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: 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, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var 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 (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\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', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : 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 if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].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);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\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\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/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};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(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) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function 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\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var 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 */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(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 {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function 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 // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\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 // filter out skipped interceptors\n var requestInterceptorChain = [];\n var 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 var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\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: method,\n url: 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: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\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 * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\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: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar 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// eslint-disable-next-line func-names\n].forEach(function(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 = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\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 */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: 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 */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\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 */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\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 * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\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();\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 * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = 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 response.data,\n response.headers,\n config.transformResponse\n );\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 reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\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 * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(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(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var 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 };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\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 */\nmodule.exports = function settle(resolve, reject, response) {\n var 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\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\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\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n 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 setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\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: require('./env/FormData')\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\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\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 * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return 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 * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.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 var 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 var 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);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = 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\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.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 var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var 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 var 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 var 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);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\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} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\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 * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\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 * @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 function(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 * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\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 var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var 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\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\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 && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var 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 {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar 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 * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\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 */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\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 */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\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 (var 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 for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\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 * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n 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 * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\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 * @return {string} content value without BOM\n */\nfunction 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\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\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} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.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 * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction 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 var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","var isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a constructor');\n};\n","var isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n defineProperty(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","var isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw $TypeError('Incorrect invocation');\n};\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = require('../internals/fails');\n\nmodule.exports = fails(function () {\n if (typeof ArrayBuffer == 'function') {\n var buffer = new ArrayBuffer(8);\n // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-defineproperty -- safe\n if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n }\n});\n","'use strict';\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.fill` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.fill\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = lengthOfArrayLike(O);\n var argumentsLength = arguments.length;\n var index = toAbsoluteIndex(argumentsLength > 1 ? arguments[1] : undefined, length);\n var end = argumentsLength > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es-x/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar isConstructor = require('../internals/is-constructor');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $Array = Array;\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var IS_CONSTRUCTOR = isConstructor(this);\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod && !(this === $Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = getIterator(O, iteratorMethod);\n next = iterator.next;\n result = IS_CONSTRUCTOR ? new this() : [];\n for (;!(step = call(next, iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = lengthOfArrayLike(O);\n result = IS_CONSTRUCTOR ? new this(length) : $Array(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that);\n var length = lengthOfArrayLike(self);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","'use strict';\n/* eslint-disable es-x/no-array-prototype-lastindexof -- safe */\nvar apply = require('../internals/function-apply');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar min = Math.min;\nvar $lastIndexOf = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$lastIndexOf && 1 / [1].lastIndexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('lastIndexOf');\nvar FORCED = NEGATIVE_ZERO || !STRICT_METHOD;\n\n// `Array.prototype.lastIndexOf` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\nmodule.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var index = length - 1;\n if (arguments.length > 1) index = min(index, toIntegerOrInfinity(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O && O[index] === searchElement) return index || 0;\n return -1;\n} : $lastIndexOf;\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n","var aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar $TypeError = TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aCallable(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(O);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw $TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","var toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n var result = $Array(max(fin - k, 0));\n for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","var arraySlice = require('../internals/array-slice-simple');\n\nvar floor = Math.floor;\n\nvar mergeSort = function (array, comparefn) {\n var length = array.length;\n var middle = floor(length / 2);\n return length < 8 ? insertionSort(array, comparefn) : merge(\n array,\n mergeSort(arraySlice(array, 0, middle), comparefn),\n mergeSort(arraySlice(array, middle), comparefn),\n comparefn\n );\n};\n\nvar insertionSort = function (array, comparefn) {\n var length = array.length;\n var i = 1;\n var element, j;\n\n while (i < length) {\n j = i;\n element = array[i];\n while (j && comparefn(array[j - 1], element) > 0) {\n array[j] = array[--j];\n }\n if (j !== i++) array[j] = element;\n } return array;\n};\n\nvar merge = function (array, left, right, comparefn) {\n var llength = left.length;\n var rlength = right.length;\n var lindex = 0;\n var rindex = 0;\n\n while (lindex < llength || rindex < rlength) {\n array[lindex + rindex] = (lindex < llength && rindex < rlength)\n ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]\n : lindex < llength ? left[lindex++] : right[rindex++];\n } return array;\n};\n\nmodule.exports = mergeSort;\n","var isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es-x/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\nvar create = require('../internals/object-create');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/define-iterator');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n var Constructor = wrapper(function (that, iterable) {\n anInstance(that, Prototype);\n setInternalState(that, {\n type: CONSTRUCTOR_NAME,\n index: create(null),\n first: undefined,\n last: undefined,\n size: 0\n });\n if (!DESCRIPTORS) that.size = 0;\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n });\n\n var Prototype = Constructor.prototype;\n\n var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n var define = function (that, key, value) {\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n var previous, index;\n // change existing entry\n if (entry) {\n entry.value = value;\n // create new entry\n } else {\n state.last = entry = {\n index: index = fastKey(key, true),\n key: key,\n value: value,\n previous: previous = state.last,\n next: undefined,\n removed: false\n };\n if (!state.first) state.first = entry;\n if (previous) previous.next = entry;\n if (DESCRIPTORS) state.size++;\n else that.size++;\n // add to index\n if (index !== 'F') state.index[index] = entry;\n } return that;\n };\n\n var getEntry = function (that, key) {\n var state = getInternalState(that);\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return state.index[index];\n // frozen object case\n for (entry = state.first; entry; entry = entry.next) {\n if (entry.key == key) return entry;\n }\n };\n\n defineBuiltIns(Prototype, {\n // `{ Map, Set }.prototype.clear()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.clear\n // https://tc39.es/ecma262/#sec-set.prototype.clear\n clear: function clear() {\n var that = this;\n var state = getInternalState(that);\n var data = state.index;\n var entry = state.first;\n while (entry) {\n entry.removed = true;\n if (entry.previous) entry.previous = entry.previous.next = undefined;\n delete data[entry.index];\n entry = entry.next;\n }\n state.first = state.last = undefined;\n if (DESCRIPTORS) state.size = 0;\n else that.size = 0;\n },\n // `{ Map, Set }.prototype.delete(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.delete\n // https://tc39.es/ecma262/#sec-set.prototype.delete\n 'delete': function (key) {\n var that = this;\n var state = getInternalState(that);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.next;\n var prev = entry.previous;\n delete state.index[entry.index];\n entry.removed = true;\n if (prev) prev.next = next;\n if (next) next.previous = prev;\n if (state.first == entry) state.first = next;\n if (state.last == entry) state.last = prev;\n if (DESCRIPTORS) state.size--;\n else that.size--;\n } return !!entry;\n },\n // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.foreach\n // https://tc39.es/ecma262/#sec-set.prototype.foreach\n forEach: function forEach(callbackfn /* , that = undefined */) {\n var state = getInternalState(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var entry;\n while (entry = entry ? entry.next : state.first) {\n boundFunction(entry.value, entry.key, this);\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n }\n },\n // `{ Map, Set}.prototype.has(key)` methods\n // https://tc39.es/ecma262/#sec-map.prototype.has\n // https://tc39.es/ecma262/#sec-set.prototype.has\n has: function has(key) {\n return !!getEntry(this, key);\n }\n });\n\n defineBuiltIns(Prototype, IS_MAP ? {\n // `Map.prototype.get(key)` method\n // https://tc39.es/ecma262/#sec-map.prototype.get\n get: function get(key) {\n var entry = getEntry(this, key);\n return entry && entry.value;\n },\n // `Map.prototype.set(key, value)` method\n // https://tc39.es/ecma262/#sec-map.prototype.set\n set: function set(key, value) {\n return define(this, key === 0 ? 0 : key, value);\n }\n } : {\n // `Set.prototype.add(value)` method\n // https://tc39.es/ecma262/#sec-set.prototype.add\n add: function add(value) {\n return define(this, value = value === 0 ? 0 : value, value);\n }\n });\n if (DESCRIPTORS) defineProperty(Prototype, 'size', {\n get: function () {\n return getInternalState(this).size;\n }\n });\n return Constructor;\n },\n setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n // https://tc39.es/ecma262/#sec-map.prototype.entries\n // https://tc39.es/ecma262/#sec-map.prototype.keys\n // https://tc39.es/ecma262/#sec-map.prototype.values\n // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n // https://tc39.es/ecma262/#sec-set.prototype.entries\n // https://tc39.es/ecma262/#sec-set.prototype.keys\n // https://tc39.es/ecma262/#sec-set.prototype.values\n // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n setInternalState(this, {\n type: ITERATOR_NAME,\n target: iterated,\n state: getInternalCollectionState(iterated),\n kind: kind,\n last: undefined\n });\n }, function () {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var entry = state.last;\n // revert to the last existing entry\n while (entry && entry.removed) entry = entry.previous;\n // get next entry\n if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n // or finish the iteration\n state.target = undefined;\n return { value: undefined, done: true };\n }\n // return step by kind\n if (kind == 'keys') return { value: entry.key, done: false };\n if (kind == 'values') return { value: entry.value, done: false };\n return { value: [entry.key, entry.value], done: false };\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // `{ Map, Set }.prototype[@@species]` accessors\n // https://tc39.es/ecma262/#sec-get-map-@@species\n // https://tc39.es/ecma262/#sec-get-set-@@species\n setSpecies(CONSTRUCTOR_NAME);\n }\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n var ADDER = IS_MAP ? 'set' : 'add';\n var NativeConstructor = global[CONSTRUCTOR_NAME];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n var Constructor = NativeConstructor;\n var exported = {};\n\n var fixMethod = function (KEY) {\n var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n defineBuiltIn(NativePrototype, KEY,\n KEY == 'add' ? function add(value) {\n uncurriedNativeMethod(this, value === 0 ? 0 : value);\n return this;\n } : KEY == 'delete' ? function (key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'get' ? function get(key) {\n return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : KEY == 'has' ? function has(key) {\n return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n } : function set(key, value) {\n uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n return this;\n }\n );\n };\n\n var REPLACE = isForced(\n CONSTRUCTOR_NAME,\n !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n new NativeConstructor().entries().next();\n }))\n );\n\n if (REPLACE) {\n // create collection constructor\n Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n InternalMetadataModule.enable();\n } else if (isForced(CONSTRUCTOR_NAME, true)) {\n var instance = new Constructor();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n // eslint-disable-next-line no-new -- required for testing\n var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new NativeConstructor();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n\n if (!ACCEPT_ITERABLES) {\n Constructor = wrapper(function (dummy, iterable) {\n anInstance(dummy, NativePrototype);\n var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n return that;\n });\n Constructor.prototype = NativePrototype;\n NativePrototype.constructor = Constructor;\n }\n\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n // weak collections should not contains .clear method\n if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n }\n\n exported[CONSTRUCTOR_NAME] = Constructor;\n $({ global: true, constructor: true, forced: Constructor != NativeConstructor }, exported);\n\n setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n return Constructor;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es-x/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\n\nvar quot = /\"/g;\nvar replace = uncurryThis(''.replace);\n\n// `CreateHTML` abstract operation\n// https://tc39.es/ecma262/#sec-createhtml\nmodule.exports = function (string, tag, attribute, value) {\n var S = toString(requireObjectCoercible(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + replace(toString(value), quot, '"') + '\"';\n return p1 + '>' + S + '</' + tag + '>';\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","var makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","var isCallable = require('../internals/is-callable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n } return O;\n};\n","var defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) defineBuiltIn(target, key, src[key], options);\n return target;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","var path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","var userAgent = require('../internals/engine-user-agent');\n\nvar firefox = userAgent.match(/firefox\\/(\\d+)/i);\n\nmodule.exports = !!firefox && +firefox[1];\n","module.exports = typeof window == 'object' && typeof Deno != 'object';\n","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","var userAgent = require('../internals/engine-user-agent');\n\nvar webkit = userAgent.match(/AppleWebKit\\/(\\d+)\\./);\n\nmodule.exports = !!webkit && +webkit[1];\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es-x/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar create = require('../internals/object-create');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\n\nvar nativeErrorToString = Error.prototype.toString;\n\nvar INCORRECT_TO_STRING = fails(function () {\n if (DESCRIPTORS) {\n // Chrome 32- incorrectly call accessor\n // eslint-disable-next-line es-x/no-object-defineproperty -- safe\n var object = create(Object.defineProperty({}, 'name', { get: function () {\n return this === object;\n } }));\n if (nativeErrorToString.call(object) !== 'true') return true;\n }\n // FF10- does not properly handle non-strings\n return nativeErrorToString.call({ message: 1, name: 2 }) !== '2: 1'\n // IE8 does not properly handle defaults\n || nativeErrorToString.call({}) !== 'Error';\n});\n\nmodule.exports = INCORRECT_TO_STRING ? function toString() {\n var O = anObject(this);\n var name = normalizeStringArgument(O.name, 'Error');\n var message = normalizeStringArgument(O.message);\n return !name ? message : !message ? name : name + ': ' + message;\n} : nativeErrorToString;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var uncurriedNativeMethod = uncurryThis(nativeMethod);\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n }\n return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n defineBuiltIn(String.prototype, KEY, methods[0]);\n defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg) : false;\n var element, elementLen;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n elementLen = lengthOfArrayLike(element);\n targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;\n } else {\n doesNotExceedSafeInteger(targetIndex + 1);\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-isextensible, es-x/no-object-preventextensions -- required for testing\n return Object.isExtensible(Object.preventExtensions({}));\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es-x/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar $Function = Function;\nvar concat = uncurryThis([].concat);\nvar join = uncurryThis([].join);\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!hasOwn(factories, argsLength)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) {\n var F = aCallable(this);\n var Prototype = F.prototype;\n var partArgs = arraySlice(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = concat(partArgs, arraySlice(arguments));\n return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args);\n };\n if (isObject(Prototype)) boundFunction.prototype = Prototype;\n return boundFunction;\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","var call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw $TypeError(tryToString(argument) + ' is not iterable');\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es-x/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es-x/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","module.exports = {};\n","var global = require('../internals/global');\n\nmodule.exports = function (a, b) {\n var console = global.console;\n if (console && console.error) {\n arguments.length == 1 ? console.error(a) : console.error(a, b);\n }\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n","var $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar isExtensible = require('../internals/object-is-extensible');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = uncurryThis([].splice);\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es-x/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = false;\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es-x/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n defineProperty(value, 'name', { value: name, configurable: true });\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","// `Math.sign` method implementation\n// https://tc39.es/ecma262/#sec-math.sign\n// eslint-disable-next-line es-x/no-math-sign -- safe\nmodule.exports = Math.sign || function sign(x) {\n var n = +x;\n // eslint-disable-next-line no-self-compare -- NaN check\n return n == 0 || n != n ? n : n < 0 ? -1 : 1;\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es-x/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\n\nvar flush, head, last, notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!queueMicrotask) {\n flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (error) {\n if (head) notify();\n else last = undefined;\n throw error;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessage\n // - onreadystatechange\n // - setTimeout\n } else {\n // strange IE + webpack dev server bug - use .bind(global)\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n}\n\nmodule.exports = queueMicrotask || function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n};\n","var NATIVE_SYMBOL = require('../internals/native-symbol');\n\n/* eslint-disable es-x/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line unicorn/relative-url-style -- required for testing\n var url = new URL('b?a=1&b=2&c=3', 'http://a');\n var searchParams = url.searchParams;\n var result = '';\n url.pathname = 'c%20d';\n searchParams.forEach(function (value, key) {\n searchParams['delete']('b');\n result += key + value;\n });\n return (IS_PURE && !url.toJSON)\n || !searchParams.sort\n || url.href !== 'http://a/c%20d?a=1&c=3'\n || searchParams.get('c') !== '3'\n || String(new URLSearchParams('?a=1')) !== 'a=1'\n || !searchParams[ITERATOR]\n // throws in Edge\n || new URL('https://a@b').username !== 'a'\n || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n // not punycoded in Edge\n || new URL('http://теÑÑ‚').host !== 'xn--e1aybc'\n // not escaped in Chrome 62-\n || new URL('http://a#б').hash !== '#%D0%B1'\n // fails in Chrome 66-\n || result !== 'a1c3'\n // throws in Safari\n || new URL('http://x', undefined).host !== 'x';\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","var isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw $TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar charAt = uncurryThis(''.charAt);\nvar n$ParseFloat = global.parseFloat;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar FORCED = 1 / n$ParseFloat(whitespaces + '-0') !== -Infinity\n // MS Edge 18- broken with boxed symbols\n || (ITERATOR && !fails(function () { n$ParseFloat(Object(ITERATOR)); }));\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\nmodule.exports = FORCED ? function parseFloat(string) {\n var trimmedString = trim(toString(string));\n var result = n$ParseFloat(trimmedString);\n return result === 0 && charAt(trimmedString, 0) == '-' ? -0 : result;\n} : n$ParseFloat;\n","var global = require('../internals/global');\nvar fails = require('../internals/fails');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar Symbol = global.Symbol;\nvar ITERATOR = Symbol && Symbol.iterator;\nvar hex = /^[+-]?0x/i;\nvar exec = uncurryThis(hex.exec);\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22\n // MS Edge 18- broken with boxed symbols\n || (ITERATOR && !fails(function () { $parseInt(Object(ITERATOR)); }));\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(toString(string));\n return $parseInt(S, (radix >>> 0) || (exec(hex, S) ? 16 : 10));\n} : $parseInt;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es-x/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es-x/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es-x/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","/* eslint-disable es-x/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) == 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es-x/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es-x/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","var fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es-x/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n if (!isObject(it)) return false;\n if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false;\n return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es-x/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es-x/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar objectKeys = require('../internals/object-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $propertyIsEnumerable = require('../internals/object-property-is-enumerable').f;\n\nvar propertyIsEnumerable = uncurryThis($propertyIsEnumerable);\nvar push = uncurryThis([].push);\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!DESCRIPTORS || propertyIsEnumerable(O, key)) {\n push(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nmodule.exports = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod(false)\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var global = require('../internals/global');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n SUBCLASSING: SUBCLASSING\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n","var defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (Target, Source, key) {\n key in Target || defineProperty(Target, key, {\n configurable: true,\n get: function () { return Source[key]; },\n set: function (it) { Source[key] = it; }\n });\n};\n","var Queue = function () {\n this.head = null;\n this.tail = null;\n};\n\nQueue.prototype = {\n add: function (item) {\n var entry = { item: item, next: null };\n if (this.head) this.tail.next = entry;\n else this.head = entry;\n this.tail = entry;\n },\n get: function () {\n var entry = this.head;\n if (entry) {\n this.head = entry.next;\n if (this.tail === entry) this.tail = null;\n return entry.item;\n }\n }\n};\n\nmodule.exports = Queue;\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar $TypeError = TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = call(exec, R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n throw $TypeError('RegExp#exec called on incompatible receiver');\n};\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n call(nativeExec, re1, 'a');\n call(nativeExec, re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = call(patchedExec, raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = call(regexpFlags, re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = replace(flags, 'y', '');\n if (indexOf(flags, 'g') === -1) {\n flags += 'g';\n }\n\n strCopy = stringSlice(str, re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = stringSlice(match.input, charsAdded);\n match[0] = stringSlice(match[0], charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n call(nativeReplace, match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","var call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n var flags = R.flags;\n return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n ? call(regExpFlags, R) : flags;\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\n\nmodule.exports = {\n BROKEN_CARET: BROKEN_CARET,\n MISSED_STICKY: MISSED_STICKY,\n UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?<a>b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$<a>c') !== 'bc';\n});\n","var $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\n// eslint-disable-next-line es-x/no-object-is -- safe\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar userAgent = require('../internals/engine-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar Function = global.Function;\n\nvar wrap = function (scheduler) {\n return MSIE ? function (handler, timeout /* , ...arguments */) {\n var boundArgs = validateArgumentsLength(arguments.length, 1) > 2;\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = boundArgs ? arraySlice(arguments, 2) : undefined;\n return scheduler(boundArgs ? function () {\n apply(fn, this, args);\n } : fn, timeout);\n } : scheduler;\n};\n\n// ie9- setTimeout & setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\nmodule.exports = {\n // `setTimeout` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n setTimeout: wrap(global.setTimeout),\n // `setInterval` method\n // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n setInterval: wrap(global.setInterval)\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar definePropertyModule = require('../internals/object-define-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = definePropertyModule.f;\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.22.8',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.22.8/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aConstructor(S);\n};\n","var fails = require('../internals/fails');\n\n// check the existence of a method, lowercase\n// of a tag and escaping quotes in arguments\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n var test = ''[METHOD_NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n });\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\n// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\nvar regexNonASCII = /[^\\0-\\u007E]/; // non-ASCII chars\nvar regexSeparators = /[.\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\nvar OVERFLOW_ERROR = 'Overflow: input needs wider integers to process';\nvar baseMinusTMin = base - tMin;\n\nvar $RangeError = RangeError;\nvar exec = uncurryThis(regexSeparators.exec);\nvar floor = Math.floor;\nvar fromCharCode = String.fromCharCode;\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar split = uncurryThis(''.split);\nvar toLowerCase = uncurryThis(''.toLowerCase);\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n */\nvar ucs2decode = function (string) {\n var output = [];\n var counter = 0;\n var length = string.length;\n while (counter < length) {\n var value = charCodeAt(string, counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // It's a high surrogate, and there is a next character.\n var extra = charCodeAt(string, counter++);\n if ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n push(output, ((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // It's an unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair.\n push(output, value);\n counter--;\n }\n } else {\n push(output, value);\n }\n }\n return output;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n */\nvar digitToBasic = function (digit) {\n // 0..25 map to ASCII a..z or A..Z\n // 26..35 map to ASCII 0..9\n return digit + 22 + 75 * (digit < 26);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n */\nvar adapt = function (delta, numPoints, firstTime) {\n var k = 0;\n delta = firstTime ? floor(delta / damp) : delta >> 1;\n delta += floor(delta / numPoints);\n while (delta > baseMinusTMin * tMax >> 1) {\n delta = floor(delta / baseMinusTMin);\n k += base;\n }\n return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n */\nvar encode = function (input) {\n var output = [];\n\n // Convert the input in UCS-2 to an array of Unicode code points.\n input = ucs2decode(input);\n\n // Cache the length.\n var inputLength = input.length;\n\n // Initialize the state.\n var n = initialN;\n var delta = 0;\n var bias = initialBias;\n var i, currentValue;\n\n // Handle the basic code points.\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < 0x80) {\n push(output, fromCharCode(currentValue));\n }\n }\n\n var basicLength = output.length; // number of basic code points.\n var handledCPCount = basicLength; // number of code points that have been handled;\n\n // Finish the basic string with a delimiter unless it's empty.\n if (basicLength) {\n push(output, delimiter);\n }\n\n // Main encoding loop:\n while (handledCPCount < inputLength) {\n // All non-basic code points < n have been handled already. Find the next larger one:\n var m = maxInt;\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue >= n && currentValue < m) {\n m = currentValue;\n }\n }\n\n // Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.\n var handledCPCountPlusOne = handledCPCount + 1;\n if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n throw $RangeError(OVERFLOW_ERROR);\n }\n\n delta += (m - n) * handledCPCountPlusOne;\n n = m;\n\n for (i = 0; i < input.length; i++) {\n currentValue = input[i];\n if (currentValue < n && ++delta > maxInt) {\n throw $RangeError(OVERFLOW_ERROR);\n }\n if (currentValue == n) {\n // Represent delta as a generalized variable-length integer.\n var q = delta;\n var k = base;\n while (true) {\n var t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n if (q < t) break;\n var qMinusT = q - t;\n var baseMinusT = base - t;\n push(output, fromCharCode(digitToBasic(t + qMinusT % baseMinusT)));\n q = floor(qMinusT / baseMinusT);\n k += base;\n }\n\n push(output, fromCharCode(digitToBasic(q)));\n bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n delta = 0;\n handledCPCount++;\n }\n }\n\n delta++;\n n++;\n }\n return join(output, '');\n};\n\nmodule.exports = function (input) {\n var encoded = [];\n var labels = split(replace(toLowerCase(input), regexSeparators, '\\u002E'), '.');\n var i, label;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n push(encoded, exec(regexNonASCII, label) ? 'xn--' + encode(label) : label);\n }\n return join(encoded, '.');\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $RangeError = RangeError;\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n var str = toString(requireObjectCoercible(this));\n var result = '';\n var n = toIntegerOrInfinity(count);\n if (n < 0 || n == Infinity) throw $RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]()\n || non[METHOD_NAME]() !== non\n || (PROPER_FUNCTION_NAME && whitespaces[METHOD_NAME].name !== METHOD_NAME);\n });\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = replace(string, ltrim, '');\n if (TYPE & 2) string = replace(string, rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n var Symbol = getBuiltIn('Symbol');\n var SymbolPrototype = Symbol && Symbol.prototype;\n var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n // `Symbol.prototype[@@toPrimitive]` method\n // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n // eslint-disable-next-line no-unused-vars -- required for .length\n defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n return call(valueOf, this);\n }, { arity: 1 });\n }\n};\n","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar location, defer, channel, port;\n\ntry {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n location = global.location;\n} catch (error) { /* empty */ }\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function (event) {\n run(event.data);\n};\n\nvar post = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), location.protocol + '//' + location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n location && location.protocol !== 'file:' &&\n !fails(post)\n ) {\n defer = post;\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw $TypeError('Not enough arguments');\n return passed;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar installErrorCause = require('../internals/install-error-cause');\nvar clearErrorStack = require('../internals/clear-error-stack');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\n var STACK_TRACE_LIMIT = 'stackTraceLimit';\n var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\n var path = FULL_NAME.split('.');\n var ERROR_NAME = path[path.length - 1];\n var OriginalError = getBuiltIn.apply(null, path);\n\n if (!OriginalError) return;\n\n var OriginalErrorPrototype = OriginalError.prototype;\n\n // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\n if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\n\n if (!FORCED) return OriginalError;\n\n var BaseError = getBuiltIn('Error');\n\n var WrappedError = wrapper(function (a, b) {\n var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\n var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\n if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\n if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(result, 'stack', clearErrorStack(result.stack, 2));\n if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\n if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\n return result;\n });\n\n WrappedError.prototype = OriginalErrorPrototype;\n\n if (ERROR_NAME !== 'Error') {\n if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\n else copyConstructorProperties(WrappedError, BaseError, { name: true });\n } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {\n proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);\n proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');\n }\n\n copyConstructorProperties(WrappedError, OriginalError);\n\n if (!IS_PURE) try {\n // Safari 13- bug: WebAssembly errors does not have a proper `.name`\n if (OriginalErrorPrototype.name !== ERROR_NAME) {\n createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\n }\n OriginalErrorPrototype.constructor = WrappedError;\n } catch (error) { /* empty */ }\n\n return WrappedError;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n doesNotExceedSafeInteger(n + len);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n doesNotExceedSafeInteger(n + 1);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $every = require('../internals/array-iteration').every;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('every');\n\n// `Array.prototype.every` method\n// https://tc39.es/ecma262/#sec-array.prototype.every\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $findIndex = require('../internals/array-iteration').findIndex;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND_INDEX = 'findIndex';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.findIndex` method\n// https://tc39.es/ecma262/#sec-array.prototype.findindex\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND_INDEX);\n","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flat` method\n// https://tc39.es/ecma262/#sec-array.prototype.flat\n$({ target: 'Array', proto: true }, {\n flat: function flat(/* depthArg = 1 */) {\n var depthArg = arguments.length ? arguments[0] : undefined;\n var O = toObject(this);\n var sourceLen = lengthOfArrayLike(O);\n var A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n// eslint-disable-next-line es-x/no-array-prototype-foreach -- safe\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es-x/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\n/* eslint-disable es-x/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar $IndexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$IndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!un$IndexOf && 1 / un$IndexOf([1], 1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? un$IndexOf(this, searchElement, fromIndex) || 0\n : $IndexOf(this, searchElement, fromIndex);\n }\n});\n","var $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\n\n// `Array.isArray` method\n// https://tc39.es/ecma262/#sec-array.isarray\n$({ target: 'Array', stat: true }, {\n isArray: isArray\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/define-iterator');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar un$Join = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return un$Join(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","var $ = require('../internals/export');\nvar lastIndexOf = require('../internals/array-last-index-of');\n\n// `Array.prototype.lastIndexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.lastindexof\n// eslint-disable-next-line es-x/no-array-prototype-lastindexof -- required for testing\n$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, {\n lastIndexOf: lastIndexOf\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n var length = arguments.length;\n return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isArray = require('../internals/is-array');\n\nvar un$Reverse = uncurryThis([].reverse);\nvar test = [1, 2];\n\n// `Array.prototype.reverse` method\n// https://tc39.es/ecma262/#sec-array.prototype.reverse\n// fix for Safari 12.0 bug\n// https://bugs.webkit.org/show_bug.cgi?id=188794\n$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {\n reverse: function reverse() {\n // eslint-disable-next-line no-self-assign -- dirty hack\n if (isArray(this)) this.length = this.length;\n return un$Reverse(this);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === $Array || Constructor === undefined) {\n return un$Slice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $some = require('../internals/array-iteration').some;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('some');\n\n// `Array.prototype.some` method\n// https://tc39.es/ecma262/#sec-array.prototype.some\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD }, {\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar internalSort = require('../internals/array-sort');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar FF = require('../internals/engine-ff-version');\nvar IE_OR_EDGE = require('../internals/engine-is-ie-or-edge');\nvar V8 = require('../internals/engine-v8-version');\nvar WEBKIT = require('../internals/engine-webkit-version');\n\nvar test = [];\nvar un$Sort = uncurryThis(test.sort);\nvar push = uncurryThis(test.push);\n\n// IE8-\nvar FAILS_ON_UNDEFINED = fails(function () {\n test.sort(undefined);\n});\n// V8 bug\nvar FAILS_ON_NULL = fails(function () {\n test.sort(null);\n});\n// Old WebKit\nvar STRICT_METHOD = arrayMethodIsStrict('sort');\n\nvar STABLE_SORT = !fails(function () {\n // feature detection can be too slow, so check engines versions\n if (V8) return V8 < 70;\n if (FF && FF > 3) return;\n if (IE_OR_EDGE) return true;\n if (WEBKIT) return WEBKIT < 603;\n\n var result = '';\n var code, chr, value, index;\n\n // generate an array with more 512 elements (Chakra and old V8 fails only in this case)\n for (code = 65; code < 76; code++) {\n chr = String.fromCharCode(code);\n\n switch (code) {\n case 66: case 69: case 70: case 72: value = 3; break;\n case 68: case 71: value = 4; break;\n default: value = 2;\n }\n\n for (index = 0; index < 47; index++) {\n test.push({ k: chr + index, v: value });\n }\n }\n\n test.sort(function (a, b) { return b.v - a.v; });\n\n for (index = 0; index < test.length; index++) {\n chr = test[index].k.charAt(0);\n if (result.charAt(result.length - 1) !== chr) result += chr;\n }\n\n return result !== 'DGBEFHACIJK';\n});\n\nvar FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD || !STABLE_SORT;\n\nvar getSortCompare = function (comparefn) {\n return function (x, y) {\n if (y === undefined) return -1;\n if (x === undefined) return 1;\n if (comparefn !== undefined) return +comparefn(x, y) || 0;\n return toString(x) > toString(y) ? 1 : -1;\n };\n};\n\n// `Array.prototype.sort` method\n// https://tc39.es/ecma262/#sec-array.prototype.sort\n$({ target: 'Array', proto: true, forced: FORCED }, {\n sort: function sort(comparefn) {\n if (comparefn !== undefined) aCallable(comparefn);\n\n var array = toObject(this);\n\n if (STABLE_SORT) return comparefn === undefined ? un$Sort(array) : un$Sort(array, comparefn);\n\n var items = [];\n var arrayLength = lengthOfArrayLike(array);\n var itemsLength, index;\n\n for (index = 0; index < arrayLength; index++) {\n if (index in array) push(items, array[index]);\n }\n\n internalSort(items, getSortCompare(comparefn));\n\n itemsLength = items.length;\n index = 0;\n\n while (index < itemsLength) array[index] = items[index++];\n while (index < arrayLength) deletePropertyOrThrow(array, index++);\n\n return array;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n splice: function splice(start, deleteCount /* , ...items */) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var actualStart = toAbsoluteIndex(start, len);\n var argumentsLength = arguments.length;\n var insertCount, actualDeleteCount, A, k, from, to;\n if (argumentsLength === 0) {\n insertCount = actualDeleteCount = 0;\n } else if (argumentsLength === 1) {\n insertCount = 0;\n actualDeleteCount = len - actualStart;\n } else {\n insertCount = argumentsLength - 2;\n actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n }\n doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else deletePropertyOrThrow(O, to);\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow(O, k - 1);\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else deletePropertyOrThrow(O, to);\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flat');\n","// TODO: Remove from `core-js@4`\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar DatePrototype = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar un$DateToString = uncurryThis(DatePrototype[TO_STRING]);\nvar getTime = uncurryThis(DatePrototype.getTime);\n\n// `Date.prototype.toString` method\n// https://tc39.es/ecma262/#sec-date.prototype.tostring\nif (String(new Date(NaN)) != INVALID_DATE) {\n defineBuiltIn(DatePrototype, TO_STRING, function toString() {\n var value = getTime(this);\n // eslint-disable-next-line no-self-compare -- NaN check\n return value === value ? un$DateToString(this) : INVALID_DATE;\n });\n}\n","/* eslint-disable no-unused-vars -- required for functions `.length` */\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar wrapErrorConstructorWithCause = require('../internals/wrap-error-constructor-with-cause');\n\nvar WEB_ASSEMBLY = 'WebAssembly';\nvar WebAssembly = global[WEB_ASSEMBLY];\n\nvar FORCED = Error('e', { cause: 7 }).cause !== 7;\n\nvar exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);\n $({ global: true, constructor: true, arity: 1, forced: FORCED }, O);\n};\n\nvar exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n if (WebAssembly && WebAssembly[ERROR_NAME]) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);\n $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);\n }\n};\n\n// https://github.com/tc39/proposal-error-cause\nexportGlobalErrorCauseWrapper('Error', function (init) {\n return function Error(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('EvalError', function (init) {\n return function EvalError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('RangeError', function (init) {\n return function RangeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('ReferenceError', function (init) {\n return function ReferenceError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('SyntaxError', function (init) {\n return function SyntaxError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('TypeError', function (init) {\n return function TypeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('URIError', function (init) {\n return function URIError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('CompileError', function (init) {\n return function CompileError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('LinkError', function (init) {\n return function LinkError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {\n return function RuntimeError(message) { return apply(init, this, arguments); };\n});\n","var defineBuiltIn = require('../internals/define-built-in');\nvar errorToString = require('../internals/error-to-string');\n\nvar ErrorPrototype = Error.prototype;\n\n// `Error.prototype.toString` method fix\n// https://tc39.es/ecma262/#sec-error.prototype.tostring\nif (ErrorPrototype.toString !== errorToString) {\n defineBuiltIn(ErrorPrototype, 'toString', errorToString);\n}\n","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind');\n\n// `Function.prototype.bind` method\n// https://tc39.es/ecma262/#sec-function.prototype.bind\n$({ target: 'Function', proto: true, forced: Function.bind !== bind }, {\n bind: bind\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return regExpExec(nameRE, functionToString(this))[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n var symbol = getBuiltIn('Symbol')();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n var args = arraySlice(arguments);\n var $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (isCallable($replacer)) value = call($replacer, this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n }\n });\n}\n","var global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(global.JSON, 'JSON', true);\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Map` constructor\n// https://tc39.es/ecma262/#sec-map-objects\ncollection('Map', function (init) {\n return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.map.constructor');\n","var $ = require('../internals/export');\nvar sign = require('../internals/math-sign');\n\nvar abs = Math.abs;\nvar pow = Math.pow;\n\n// `Math.cbrt` method\n// https://tc39.es/ecma262/#sec-math.cbrt\n$({ target: 'Math', stat: true }, {\n cbrt: function cbrt(x) {\n var n = +x;\n return sign(n) * pow(abs(n), 1 / 3);\n }\n});\n","var setToStringTag = require('../internals/set-to-string-tag');\n\n// Math[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-math-@@tostringtag\nsetToStringTag(Math, 'Math', true);\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = global.TypeError;\nvar arraySlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n var primValue = toPrimitive(value, 'number');\n return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, 'number');\n var first, third, radix, maxCode, digits, length, index, code;\n if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = charCodeAt(it, 0);\n if (first === 43 || first === 45) {\n third = charCodeAt(it, 2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (charCodeAt(it, 1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = arraySlice(it, 2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = charCodeAt(digits, index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n var dummy = this;\n // check on 1..constructor(foo) case\n return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); })\n ? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n defineBuiltIn(global, NUMBER, NumberWrapper, { constructor: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar thisNumberValue = require('../internals/this-number-value');\nvar $repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar $RangeError = RangeError;\nvar $String = String;\nvar floor = Math.floor;\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar un$ToFixed = uncurryThis(1.0.toFixed);\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar multiply = function (data, n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\n\nvar divide = function (data, n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\n\nvar dataToString = function (data) {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = $String(data[index]);\n s = s === '' ? t : s + repeat('0', 7 - t.length) + t;\n }\n } return s;\n};\n\nvar FORCED = fails(function () {\n return un$ToFixed(0.00008, 3) !== '0.000' ||\n un$ToFixed(0.9, 0) !== '1' ||\n un$ToFixed(1.255, 2) !== '1.25' ||\n un$ToFixed(1000000000000000128.0, 0) !== '1000000000000000128';\n}) || !fails(function () {\n // V8 ~ Android 4.3-\n un$ToFixed({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toIntegerOrInfinity(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\n if (fractDigits < 0 || fractDigits > 20) throw $RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number != number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return $String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(data, 0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(data, 1e7, 0);\n j -= 7;\n }\n multiply(data, pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(data, 1 << 23);\n j -= 23;\n }\n divide(data, 1 << j);\n multiply(data, 1, 1);\n divide(data, 2);\n result = dataToString(data);\n } else {\n multiply(data, 0, z);\n multiply(data, 1 << -e, 0);\n result = dataToString(data) + repeat('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat('0', fractDigits - k) + result\n : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es-x/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n assign: assign\n});\n","// TODO: Remove from `core-js@4`\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar create = require('../internals/object-create');\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n create: create\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperties = require('../internals/object-define-properties').f;\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es-x/no-object-defineproperties -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperties !== defineProperties, sham: !DESCRIPTORS }, {\n defineProperties: defineProperties\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n defineProperty: defineProperty\n});\n","var $ = require('../internals/export');\nvar $entries = require('../internals/object-to-array').entries;\n\n// `Object.entries` method\n// https://tc39.es/ecma262/#sec-object.entries\n$({ target: 'Object', stat: true }, {\n entries: function entries(O) {\n return $entries(O);\n }\n});\n","var $ = require('../internals/export');\nvar FREEZING = require('../internals/freezing');\nvar fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar onFreeze = require('../internals/internal-metadata').onFreeze;\n\n// eslint-disable-next-line es-x/no-object-freeze -- safe\nvar $freeze = Object.freeze;\nvar FAILS_ON_PRIMITIVES = fails(function () { $freeze(1); });\n\n// `Object.freeze` method\n// https://tc39.es/ecma262/#sec-object.freeze\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, {\n freeze: function freeze(it) {\n return $freeze && isObject(it) ? $freeze(onFreeze(it)) : it;\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","var $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n }\n});\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toObject = require('../internals/to-object');\nvar nativeGetPrototypeOf = require('../internals/object-get-prototype-of');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); });\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, {\n getPrototypeOf: function getPrototypeOf(it) {\n return nativeGetPrototypeOf(toObject(it));\n }\n});\n\n","var $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\n\n// `Object.hasOwn` method\n// https://github.com/tc39/proposal-accessible-object-hasownproperty\n$({ target: 'Object', stat: true }, {\n hasOwn: hasOwn\n});\n","var $ = require('../internals/export');\nvar is = require('../internals/same-value');\n\n// `Object.is` method\n// https://tc39.es/ecma262/#sec-object.is\n$({ target: 'Object', stat: true }, {\n is: is\n});\n","var $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","var $ = require('../internals/export');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n$({ target: 'Object', stat: true }, {\n setPrototypeOf: setPrototypeOf\n});\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","var $ = require('../internals/export');\nvar $parseFloat = require('../internals/number-parse-float');\n\n// `parseFloat` method\n// https://tc39.es/ecma262/#sec-parsefloat-string\n$({ global: true, forced: parseFloat != $parseFloat }, {\n parseFloat: $parseFloat\n});\n","var $ = require('../internals/export');\nvar $parseInt = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != $parseInt }, {\n parseInt: $parseInt\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['catch'];\n if (NativePromisePrototype['catch'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/engine-is-node');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n microtask(function () {\n var reactions = state.reactions;\n var reaction;\n while (reaction = reactions.get()) {\n callReaction(reaction, state);\n }\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalPromiseState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n\n PromisePrototype = PromiseConstructor.prototype;\n\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: new Queue(),\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n state.parent = true;\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n if (state.state == PENDING) state.reactions.add(reaction);\n else microtask(function () {\n callReaction(reaction, state);\n });\n return reaction.promise;\n });\n\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalPromiseState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!NATIVE_PROMISE_SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromisePrototype['finally'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n }\n}\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.promise.constructor');\nrequire('../modules/es.promise.all');\nrequire('../modules/es.promise.catch');\nrequire('../modules/es.promise.race');\nrequire('../modules/es.promise.reject');\nrequire('../modules/es.promise.resolve');\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n reject: function reject(r) {\n var capability = newPromiseCapabilityModule.f(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n resolve: function resolve(x) {\n return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n }\n});\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind');\nvar aConstructor = require('../internals/a-constructor');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\nvar ObjectPrototype = Object.prototype;\nvar push = [].push;\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\n\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\n\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aConstructor(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aConstructor(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n apply(push, $args, args);\n return new (apply(bind, Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : ObjectPrototype);\n var result = apply(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n$({ global: true }, { Reflect: {} });\n\n// Reflect[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\nsetToStringTag(global.Reflect, 'Reflect', true);\n","var DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar enforceInternalState = require('../internals/internal-state').enforce;\nvar setSpecies = require('../internals/set-species');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar MATCH = wellKnownSymbol('match');\nvar NativeRegExp = global.RegExp;\nvar RegExpPrototype = NativeRegExp.prototype;\nvar SyntaxError = global.SyntaxError;\nvar exec = uncurryThis(RegExpPrototype.exec);\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n// TODO: Use only propper RegExpIdentifierName\nvar IS_NCG = /^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/;\nvar re1 = /a/g;\nvar re2 = /a/g;\n\n// \"new\" should create a new object, old webkit bug\nvar CORRECT_NEW = new NativeRegExp(re1) !== re1;\n\nvar MISSED_STICKY = stickyHelpers.MISSED_STICKY;\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\n\nvar BASE_FORCED = DESCRIPTORS &&\n (!CORRECT_NEW || MISSED_STICKY || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG || fails(function () {\n re2[MATCH] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';\n }));\n\nvar handleDotAll = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var brackets = false;\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n result += chr + charAt(string, ++index);\n continue;\n }\n if (!brackets && chr === '.') {\n result += '[\\\\s\\\\S]';\n } else {\n if (chr === '[') {\n brackets = true;\n } else if (chr === ']') {\n brackets = false;\n } result += chr;\n }\n } return result;\n};\n\nvar handleNCG = function (string) {\n var length = string.length;\n var index = 0;\n var result = '';\n var named = [];\n var names = {};\n var brackets = false;\n var ncg = false;\n var groupid = 0;\n var groupname = '';\n var chr;\n for (; index <= length; index++) {\n chr = charAt(string, index);\n if (chr === '\\\\') {\n chr = chr + charAt(string, ++index);\n } else if (chr === ']') {\n brackets = false;\n } else if (!brackets) switch (true) {\n case chr === '[':\n brackets = true;\n break;\n case chr === '(':\n if (exec(IS_NCG, stringSlice(string, index + 1))) {\n index += 2;\n ncg = true;\n }\n result += chr;\n groupid++;\n continue;\n case chr === '>' && ncg:\n if (groupname === '' || hasOwn(names, groupname)) {\n throw new SyntaxError('Invalid capture group name');\n }\n names[groupname] = true;\n named[named.length] = [groupname, groupid];\n ncg = false;\n groupname = '';\n continue;\n }\n if (ncg) groupname += chr;\n else result += chr;\n } return [result, named];\n};\n\n// `RegExp` constructor\n// https://tc39.es/ecma262/#sec-regexp-constructor\nif (isForced('RegExp', BASE_FORCED)) {\n var RegExpWrapper = function RegExp(pattern, flags) {\n var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);\n var patternIsRegExp = isRegExp(pattern);\n var flagsAreUndefined = flags === undefined;\n var groups = [];\n var rawPattern = pattern;\n var rawFlags, dotAll, sticky, handled, result, state;\n\n if (!thisIsRegExp && patternIsRegExp && flagsAreUndefined && pattern.constructor === RegExpWrapper) {\n return pattern;\n }\n\n if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {\n pattern = pattern.source;\n if (flagsAreUndefined) flags = getRegExpFlags(rawPattern);\n }\n\n pattern = pattern === undefined ? '' : toString(pattern);\n flags = flags === undefined ? '' : toString(flags);\n rawPattern = pattern;\n\n if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {\n dotAll = !!flags && stringIndexOf(flags, 's') > -1;\n if (dotAll) flags = replace(flags, /s/g, '');\n }\n\n rawFlags = flags;\n\n if (MISSED_STICKY && 'sticky' in re1) {\n sticky = !!flags && stringIndexOf(flags, 'y') > -1;\n if (sticky && UNSUPPORTED_Y) flags = replace(flags, /y/g, '');\n }\n\n if (UNSUPPORTED_NCG) {\n handled = handleNCG(pattern);\n pattern = handled[0];\n groups = handled[1];\n }\n\n result = inheritIfRequired(NativeRegExp(pattern, flags), thisIsRegExp ? this : RegExpPrototype, RegExpWrapper);\n\n if (dotAll || sticky || groups.length) {\n state = enforceInternalState(result);\n if (dotAll) {\n state.dotAll = true;\n state.raw = RegExpWrapper(handleDotAll(pattern), rawFlags);\n }\n if (sticky) state.sticky = true;\n if (groups.length) state.groups = groups;\n }\n\n if (pattern !== rawPattern) try {\n // fails in old engines, but we have no alternatives for unsupported regex syntax\n createNonEnumerableProperty(result, 'source', rawPattern === '' ? '(?:)' : rawPattern);\n } catch (error) { /* empty */ }\n\n return result;\n };\n\n for (var keys = getOwnPropertyNames(NativeRegExp), index = 0; keys.length > index;) {\n proxyAccessor(RegExpWrapper, NativeRegExp, keys[index++]);\n }\n\n RegExpPrototype.constructor = RegExpWrapper;\n RegExpWrapper.prototype = RegExpPrototype;\n defineBuiltIn(global, 'RegExp', RegExpWrapper, { constructor: true });\n}\n\n// https://tc39.es/ecma262/#sec-get-regexp-@@species\nsetSpecies('RegExp');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar classof = require('../internals/classof-raw');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar getInternalState = require('../internals/internal-state').get;\n\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\n\n// `RegExp.prototype.dotAll` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall\nif (DESCRIPTORS && UNSUPPORTED_DOT_ALL) {\n defineBuiltInAccessor(RegExpPrototype, 'dotAll', {\n configurable: true,\n get: function dotAll() {\n if (this === RegExpPrototype) return undefined;\n // We can't use InternalStateModule.getterFor because\n // we don't add metadata for regexps created by a literal.\n if (classof(this) === 'RegExp') {\n return !!getInternalState(this).dotAll;\n }\n throw $TypeError('Incompatible receiver, RegExp required');\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\n return Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call({ dotAll: true, sticky: true }) !== 'sy';\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n configurable: true,\n get: regExpFlags\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar MISSED_STICKY = require('../internals/regexp-sticky-helpers').MISSED_STICKY;\nvar classof = require('../internals/classof-raw');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar getInternalState = require('../internals/internal-state').get;\n\nvar RegExpPrototype = RegExp.prototype;\nvar $TypeError = TypeError;\n\n// `RegExp.prototype.sticky` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.sticky\nif (DESCRIPTORS && MISSED_STICKY) {\n defineBuiltInAccessor(RegExpPrototype, 'sticky', {\n configurable: true,\n get: function sticky() {\n if (this === RegExpPrototype) return undefined;\n // We can't use InternalStateModule.getterFor because\n // we don't add metadata for regexps created by a literal.\n if (classof(this) === 'RegExp') {\n return !!getInternalState(this).sticky;\n }\n throw $TypeError('Incompatible receiver, RegExp required');\n }\n });\n}\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar DELEGATES_TO_EXEC = function () {\n var execCalled = false;\n var re = /[ac]/;\n re.exec = function () {\n execCalled = true;\n return /./.exec.apply(this, arguments);\n };\n return re.test('abc') === true && execCalled;\n}();\n\nvar $TypeError = TypeError;\nvar un$Test = uncurryThis(/./.test);\n\n// `RegExp.prototype.test` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.test\n$({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {\n test: function (str) {\n var exec = this.exec;\n if (!isCallable(exec)) return un$Test(this, str);\n var result = call(exec, this, str);\n if (result !== null && !isObject(result)) {\n throw new $TypeError('RegExp exec method returned something other than an Object or null');\n }\n return !!result;\n }\n});\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar defineBuiltIn = require('../internals/define-built-in');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar n$ToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return n$ToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && n$ToString.name != TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n defineBuiltIn(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var pattern = $toString(R.source);\n var flags = $toString(getRegExpFlags(R));\n return '/' + pattern + '/' + flags;\n }, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.anchor` method\n// https://tc39.es/ecma262/#sec-string.prototype.anchor\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, {\n anchor: function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es-x/no-string-prototype-endswith -- safe\nvar un$EndsWith = uncurryThis(''.endsWith);\nvar slice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.endsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.endswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = that.length;\n var end = endPosition === undefined ? len : min(toLength(endPosition), len);\n var search = toString(searchString);\n return un$EndsWith\n ? un$EndsWith(that, search, end)\n : slice(that, end - search.length, end) === search;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.fixed` method\n// https://tc39.es/ecma262/#sec-string.prototype.fixed\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, {\n fixed: function fixed() {\n return createHTML(this, 'tt', '', '');\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~stringIndexOf(\n toString(requireObjectCoercible(this)),\n toString(notARegExp(searchString)),\n arguments.length > 1 ? arguments[1] : undefined\n );\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.link` method\n// https://tc39.es/ecma262/#sec-string.prototype.link\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {\n link: function link(url) {\n return createHTML(this, 'a', 'href', url);\n }\n});\n","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = regexp == undefined ? undefined : getMethod(regexp, MATCH);\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","var $ = require('../internals/export');\nvar repeat = require('../internals/string-repeat');\n\n// `String.prototype.repeat` method\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\n$({ target: 'String', proto: true }, {\n repeat: repeat\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar isCallable = require('../internals/is-callable');\nvar isRegExp = require('../internals/is-regexp');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\nvar getSubstitution = require('../internals/get-substitution');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar $TypeError = TypeError;\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\n\nvar stringIndexOf = function (string, searchValue, fromIndex) {\n if (fromIndex > string.length) return -1;\n if (searchValue === '') return fromIndex;\n return indexOf(string, searchValue, fromIndex);\n};\n\n// `String.prototype.replaceAll` method\n// https://tc39.es/ecma262/#sec-string.prototype.replaceall\n$({ target: 'String', proto: true }, {\n replaceAll: function replaceAll(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var IS_REG_EXP, flags, replacer, string, searchString, functionalReplace, searchLength, advanceBy, replacement;\n var position = 0;\n var endOfLastMatch = 0;\n var result = '';\n if (searchValue != null) {\n IS_REG_EXP = isRegExp(searchValue);\n if (IS_REG_EXP) {\n flags = toString(requireObjectCoercible(getRegExpFlags(searchValue)));\n if (!~indexOf(flags, 'g')) throw $TypeError('`.replaceAll` does not allow non-global regexes');\n }\n replacer = getMethod(searchValue, REPLACE);\n if (replacer) {\n return call(replacer, searchValue, O, replaceValue);\n } else if (IS_PURE && IS_REG_EXP) {\n return replace(toString(O), searchValue, replaceValue);\n }\n }\n string = toString(O);\n searchString = toString(searchValue);\n functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n searchLength = searchString.length;\n advanceBy = max(1, searchLength);\n position = stringIndexOf(string, searchString, 0);\n while (position !== -1) {\n replacement = functionalReplace\n ? toString(replaceValue(searchString, position, string))\n : getSubstitution(searchString, string, position, [], undefined, replaceValue);\n result += stringSlice(string, endOfLastMatch, position) + replacement;\n endOfLastMatch = position + searchLength;\n position = stringIndexOf(string, searchString, position + advanceBy);\n }\n if (endOfLastMatch < string.length) {\n result += stringSlice(string, endOfLastMatch);\n }\n return result;\n }\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$<a>') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : getMethod(searchValue, REPLACE);\n return replacer\n ? call(replacer, searchValue, O, replaceValue)\n : call(nativeReplace, toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue == 'string' &&\n stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n stringIndexOf(replaceValue, '$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n push(results, result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = concat([matched], captures, position, S);\n if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n var replacement = toString(apply(replaceValue, undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + stringSlice(S, nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","'use strict';\nvar $ = require('../internals/export');\nvar createHTML = require('../internals/create-html');\nvar forcedStringHTMLMethod = require('../internals/string-html-forced');\n\n// `String.prototype.small` method\n// https://tc39.es/ecma262/#sec-string.prototype.small\n$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, {\n small: function small() {\n return createHTML(this, 'small', '', '');\n }\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar isRegExp = require('../internals/is-regexp');\nvar anObject = require('../internals/an-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar arraySlice = require('../internals/array-slice-simple');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis($push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] == 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length != 4 ||\n 'ab'.split(/(?:ab)*/).length != 2 ||\n '.'.split(/(.?)(.?)/).length != 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return call(nativeSplit, string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = call(regexpExec, separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n push(output, stringSlice(string, lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !exec(separatorCopy, '')) push(output, '');\n } else push(output, stringSlice(string, lastLastIndex));\n return output.length > lim ? arraySlice(output, 0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : getMethod(separator, SPLIT);\n return splitter\n ? call(splitter, separator, O, limit)\n : call(internalSplit, toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n push(A, stringSlice(S, p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n push(A, z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n push(A, stringSlice(S, p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\nvar IS_PURE = require('../internals/is-pure');\n\n// eslint-disable-next-line es-x/no-string-prototype-startswith -- safe\nvar un$StartsWith = uncurryThis(''.startsWith);\nvar stringSlice = uncurryThis(''.slice);\nvar min = Math.min;\n\nvar CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');\n// https://github.com/zloirock/core-js/pull/702\nvar MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () {\n var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith');\n return descriptor && !descriptor.writable;\n}();\n\n// `String.prototype.startsWith` method\n// https://tc39.es/ecma262/#sec-string.prototype.startswith\n$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = toString(requireObjectCoercible(this));\n notARegExp(searchString);\n var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = toString(searchString);\n return un$StartsWith\n ? un$StartsWith(that, search, index)\n : stringSlice(that, index, index + search.length) === search;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\n\nvar stringSlice = uncurryThis(''.slice);\nvar max = Math.max;\nvar min = Math.min;\n\n// eslint-disable-next-line unicorn/prefer-string-slice, es-x/no-string-prototype-substr -- required for testing\nvar FORCED = !''.substr || 'ab'.substr(-1) !== 'b';\n\n// `String.prototype.substr` method\n// https://tc39.es/ecma262/#sec-string.prototype.substr\n$({ target: 'String', proto: true, forced: FORCED }, {\n substr: function substr(start, length) {\n var that = toString(requireObjectCoercible(this));\n var size = that.length;\n var intStart = toIntegerOrInfinity(start);\n var intLength, intEnd;\n if (intStart === Infinity) intStart = 0;\n if (intStart < 0) intStart = max(size + intStart, 0);\n intLength = length === undefined ? size : toIntegerOrInfinity(length);\n if (intLength <= 0 || intLength === Infinity) return '';\n intEnd = min(intStart + intLength, size);\n return intStart >= intEnd ? '' : stringSlice(that, intStart, intEnd);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar TypeError = global.TypeError;\nvar QObject = global.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (isPrototypeOf(SymbolPrototype, this)) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn(this, HIDDEN) && hasOwn(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n SymbolPrototype = $Symbol[PROTOTYPE];\n\n defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n definePropertiesModule.f = $defineProperties;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar toString = require('../internals/to-string');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n var result = isPrototypeOf(SymbolPrototype, this)\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n SymbolWrapper.prototype = SymbolPrototype;\n SymbolPrototype.constructor = SymbolWrapper;\n\n var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\n var symbolToString = uncurryThis(SymbolPrototype.toString);\n var symbolValueOf = uncurryThis(SymbolPrototype.valueOf);\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n var replace = uncurryThis(''.replace);\n var stringSlice = uncurryThis(''.slice);\n\n defineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = symbolValueOf(this);\n var string = symbolToString(symbol);\n if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, constructor: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/native-symbol-registry');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n 'for': function (key) {\n var string = toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = getBuiltIn('Symbol')(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n }\n});\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.symbol.constructor');\nrequire('../modules/es.symbol.for');\nrequire('../modules/es.symbol.key-for');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.object.get-own-property-symbols');\n","var $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/native-symbol-registry');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(tryToString(sym) + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n }\n});\n","var getBuiltIn = require('../internals/get-built-in');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n if (DOMIterables[COLLECTION_NAME]) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setInterval = require('../internals/schedulers-fix').setInterval;\n\n// ie9- setInterval additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval\n$({ global: true, bind: true, forced: global.setInterval !== setInterval }, {\n setInterval: setInterval\n});\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setTimeout = require('../internals/schedulers-fix').setTimeout;\n\n// ie9- setTimeout additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout\n$({ global: true, bind: true, forced: global.setTimeout !== setTimeout }, {\n setTimeout: setTimeout\n});\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.set-interval');\nrequire('../modules/web.set-timeout');\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.array.iterator');\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar InternalStateModule = require('../internals/internal-state');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar bind = require('../internals/function-bind-context');\nvar classof = require('../internals/classof');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar $toString = require('../internals/to-string');\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arraySort = require('../internals/array-sort');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar URL_SEARCH_PARAMS = 'URLSearchParams';\nvar URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS);\nvar getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR);\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Avoid NodeJS experimental warning\nvar safeGetBuiltIn = function (name) {\n if (!DESCRIPTORS) return global[name];\n var descriptor = getOwnPropertyDescriptor(global, name);\n return descriptor && descriptor.value;\n};\n\nvar nativeFetch = safeGetBuiltIn('fetch');\nvar NativeRequest = safeGetBuiltIn('Request');\nvar Headers = safeGetBuiltIn('Headers');\nvar RequestPrototype = NativeRequest && NativeRequest.prototype;\nvar HeadersPrototype = Headers && Headers.prototype;\nvar RegExp = global.RegExp;\nvar TypeError = global.TypeError;\nvar decodeURIComponent = global.decodeURIComponent;\nvar encodeURIComponent = global.encodeURIComponent;\nvar charAt = uncurryThis(''.charAt);\nvar join = uncurryThis([].join);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar splice = uncurryThis([].splice);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\n\nvar plus = /\\+/g;\nvar sequences = Array(4);\n\nvar percentSequence = function (bytes) {\n return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\\\da-f]{2}){' + bytes + '})', 'gi'));\n};\n\nvar percentDecode = function (sequence) {\n try {\n return decodeURIComponent(sequence);\n } catch (error) {\n return sequence;\n }\n};\n\nvar deserialize = function (it) {\n var result = replace(it, plus, ' ');\n var bytes = 4;\n try {\n return decodeURIComponent(result);\n } catch (error) {\n while (bytes) {\n result = replace(result, percentSequence(bytes--), percentDecode);\n }\n return result;\n }\n};\n\nvar find = /[!'()~]|%20/g;\n\nvar replacements = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+'\n};\n\nvar replacer = function (match) {\n return replacements[match];\n};\n\nvar serialize = function (it) {\n return replace(encodeURIComponent(it), find, replacer);\n};\n\nvar URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) {\n setInternalState(this, {\n type: URL_SEARCH_PARAMS_ITERATOR,\n iterator: getIterator(getInternalParamsState(params).entries),\n kind: kind\n });\n}, 'Iterator', function next() {\n var state = getInternalIteratorState(this);\n var kind = state.kind;\n var step = state.iterator.next();\n var entry = step.value;\n if (!step.done) {\n step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value];\n } return step;\n}, true);\n\nvar URLSearchParamsState = function (init) {\n this.entries = [];\n this.url = null;\n\n if (init !== undefined) {\n if (isObject(init)) this.parseObject(init);\n else this.parseQuery(typeof init == 'string' ? charAt(init, 0) === '?' ? stringSlice(init, 1) : init : $toString(init));\n }\n};\n\nURLSearchParamsState.prototype = {\n type: URL_SEARCH_PARAMS,\n bindURL: function (url) {\n this.url = url;\n this.update();\n },\n parseObject: function (object) {\n var iteratorMethod = getIteratorMethod(object);\n var iterator, next, step, entryIterator, entryNext, first, second;\n\n if (iteratorMethod) {\n iterator = getIterator(object, iteratorMethod);\n next = iterator.next;\n while (!(step = call(next, iterator)).done) {\n entryIterator = getIterator(anObject(step.value));\n entryNext = entryIterator.next;\n if (\n (first = call(entryNext, entryIterator)).done ||\n (second = call(entryNext, entryIterator)).done ||\n !call(entryNext, entryIterator).done\n ) throw TypeError('Expected sequence with length 2');\n push(this.entries, { key: $toString(first.value), value: $toString(second.value) });\n }\n } else for (var key in object) if (hasOwn(object, key)) {\n push(this.entries, { key: key, value: $toString(object[key]) });\n }\n },\n parseQuery: function (query) {\n if (query) {\n var attributes = split(query, '&');\n var index = 0;\n var attribute, entry;\n while (index < attributes.length) {\n attribute = attributes[index++];\n if (attribute.length) {\n entry = split(attribute, '=');\n push(this.entries, {\n key: deserialize(shift(entry)),\n value: deserialize(join(entry, '='))\n });\n }\n }\n }\n },\n serialize: function () {\n var entries = this.entries;\n var result = [];\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n push(result, serialize(entry.key) + '=' + serialize(entry.value));\n } return join(result, '&');\n },\n update: function () {\n this.entries.length = 0;\n this.parseQuery(this.url.query);\n },\n updateURL: function () {\n if (this.url) this.url.update();\n }\n};\n\n// `URLSearchParams` constructor\n// https://url.spec.whatwg.org/#interface-urlsearchparams\nvar URLSearchParamsConstructor = function URLSearchParams(/* init */) {\n anInstance(this, URLSearchParamsPrototype);\n var init = arguments.length > 0 ? arguments[0] : undefined;\n setInternalState(this, new URLSearchParamsState(init));\n};\n\nvar URLSearchParamsPrototype = URLSearchParamsConstructor.prototype;\n\ndefineBuiltIns(URLSearchParamsPrototype, {\n // `URLSearchParams.prototype.append` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-append\n append: function append(name, value) {\n validateArgumentsLength(arguments.length, 2);\n var state = getInternalParamsState(this);\n push(state.entries, { key: $toString(name), value: $toString(value) });\n state.updateURL();\n },\n // `URLSearchParams.prototype.delete` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-delete\n 'delete': function (name) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var key = $toString(name);\n var index = 0;\n while (index < entries.length) {\n if (entries[index].key === key) splice(entries, index, 1);\n else index++;\n }\n state.updateURL();\n },\n // `URLSearchParams.prototype.get` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-get\n get: function get(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) return entries[index].value;\n }\n return null;\n },\n // `URLSearchParams.prototype.getAll` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-getall\n getAll: function getAll(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var result = [];\n var index = 0;\n for (; index < entries.length; index++) {\n if (entries[index].key === key) push(result, entries[index].value);\n }\n return result;\n },\n // `URLSearchParams.prototype.has` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-has\n has: function has(name) {\n validateArgumentsLength(arguments.length, 1);\n var entries = getInternalParamsState(this).entries;\n var key = $toString(name);\n var index = 0;\n while (index < entries.length) {\n if (entries[index++].key === key) return true;\n }\n return false;\n },\n // `URLSearchParams.prototype.set` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-set\n set: function set(name, value) {\n validateArgumentsLength(arguments.length, 1);\n var state = getInternalParamsState(this);\n var entries = state.entries;\n var found = false;\n var key = $toString(name);\n var val = $toString(value);\n var index = 0;\n var entry;\n for (; index < entries.length; index++) {\n entry = entries[index];\n if (entry.key === key) {\n if (found) splice(entries, index--, 1);\n else {\n found = true;\n entry.value = val;\n }\n }\n }\n if (!found) push(entries, { key: key, value: val });\n state.updateURL();\n },\n // `URLSearchParams.prototype.sort` method\n // https://url.spec.whatwg.org/#dom-urlsearchparams-sort\n sort: function sort() {\n var state = getInternalParamsState(this);\n arraySort(state.entries, function (a, b) {\n return a.key > b.key ? 1 : -1;\n });\n state.updateURL();\n },\n // `URLSearchParams.prototype.forEach` method\n forEach: function forEach(callback /* , thisArg */) {\n var entries = getInternalParamsState(this).entries;\n var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined);\n var index = 0;\n var entry;\n while (index < entries.length) {\n entry = entries[index++];\n boundFunction(entry.value, entry.key, this);\n }\n },\n // `URLSearchParams.prototype.keys` method\n keys: function keys() {\n return new URLSearchParamsIterator(this, 'keys');\n },\n // `URLSearchParams.prototype.values` method\n values: function values() {\n return new URLSearchParamsIterator(this, 'values');\n },\n // `URLSearchParams.prototype.entries` method\n entries: function entries() {\n return new URLSearchParamsIterator(this, 'entries');\n }\n}, { enumerable: true });\n\n// `URLSearchParams.prototype[@@iterator]` method\ndefineBuiltIn(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries, { name: 'entries' });\n\n// `URLSearchParams.prototype.toString` method\n// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior\ndefineBuiltIn(URLSearchParamsPrototype, 'toString', function toString() {\n return getInternalParamsState(this).serialize();\n}, { enumerable: true });\n\nsetToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS);\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL }, {\n URLSearchParams: URLSearchParamsConstructor\n});\n\n// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`\nif (!USE_NATIVE_URL && isCallable(Headers)) {\n var headersHas = uncurryThis(HeadersPrototype.has);\n var headersSet = uncurryThis(HeadersPrototype.set);\n\n var wrapRequestOptions = function (init) {\n if (isObject(init)) {\n var body = init.body;\n var headers;\n if (classof(body) === URL_SEARCH_PARAMS) {\n headers = init.headers ? new Headers(init.headers) : new Headers();\n if (!headersHas(headers, 'content-type')) {\n headersSet(headers, 'content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n return create(init, {\n body: createPropertyDescriptor(0, $toString(body)),\n headers: createPropertyDescriptor(0, headers)\n });\n }\n } return init;\n };\n\n if (isCallable(nativeFetch)) {\n $({ global: true, enumerable: true, dontCallGetSet: true, forced: true }, {\n fetch: function fetch(input /* , init */) {\n return nativeFetch(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n }\n });\n }\n\n if (isCallable(NativeRequest)) {\n var RequestConstructor = function Request(input /* , init */) {\n anInstance(this, RequestPrototype);\n return new NativeRequest(input, arguments.length > 1 ? wrapRequestOptions(arguments[1]) : {});\n };\n\n RequestPrototype.constructor = RequestConstructor;\n RequestConstructor.prototype = RequestPrototype;\n\n $({ global: true, constructor: true, dontCallGetSet: true, forced: true }, {\n Request: RequestConstructor\n });\n }\n}\n\nmodule.exports = {\n URLSearchParams: URLSearchParamsConstructor,\n getState: getInternalParamsState\n};\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url-search-params.constructor');\n","'use strict';\n// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`\nrequire('../modules/es.string.iterator');\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar USE_NATIVE_URL = require('../internals/native-url');\nvar global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar anInstance = require('../internals/an-instance');\nvar hasOwn = require('../internals/has-own-property');\nvar assign = require('../internals/object-assign');\nvar arrayFrom = require('../internals/array-from');\nvar arraySlice = require('../internals/array-slice-simple');\nvar codeAt = require('../internals/string-multibyte').codeAt;\nvar toASCII = require('../internals/string-punycode-to-ascii');\nvar $toString = require('../internals/to-string');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar URLSearchParamsModule = require('../modules/web.url-search-params.constructor');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalURLState = InternalStateModule.getterFor('URL');\nvar URLSearchParams = URLSearchParamsModule.URLSearchParams;\nvar getInternalSearchParamsState = URLSearchParamsModule.getState;\n\nvar NativeURL = global.URL;\nvar TypeError = global.TypeError;\nvar parseInt = global.parseInt;\nvar floor = Math.floor;\nvar pow = Math.pow;\nvar charAt = uncurryThis(''.charAt);\nvar exec = uncurryThis(/./.exec);\nvar join = uncurryThis([].join);\nvar numberToString = uncurryThis(1.0.toString);\nvar pop = uncurryThis([].pop);\nvar push = uncurryThis([].push);\nvar replace = uncurryThis(''.replace);\nvar shift = uncurryThis([].shift);\nvar split = uncurryThis(''.split);\nvar stringSlice = uncurryThis(''.slice);\nvar toLowerCase = uncurryThis(''.toLowerCase);\nvar unshift = uncurryThis([].unshift);\n\nvar INVALID_AUTHORITY = 'Invalid authority';\nvar INVALID_SCHEME = 'Invalid scheme';\nvar INVALID_HOST = 'Invalid host';\nvar INVALID_PORT = 'Invalid port';\n\nvar ALPHA = /[a-z]/i;\n// eslint-disable-next-line regexp/no-obscure-range -- safe\nvar ALPHANUMERIC = /[\\d+-.a-z]/i;\nvar DIGIT = /\\d/;\nvar HEX_START = /^0x/i;\nvar OCT = /^[0-7]+$/;\nvar DEC = /^\\d+$/;\nvar HEX = /^[\\da-f]+$/i;\n/* eslint-disable regexp/no-control-character -- safe */\nvar FORBIDDEN_HOST_CODE_POINT = /[\\0\\t\\n\\r #%/:<>?@[\\\\\\]^|]/;\nvar FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\\0\\t\\n\\r #/:<>?@[\\\\\\]^|]/;\nvar LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\\u0000-\\u0020]+|[\\u0000-\\u0020]+$/g;\nvar TAB_AND_NEW_LINE = /[\\t\\n\\r]/g;\n/* eslint-enable regexp/no-control-character -- safe */\nvar EOF;\n\n// https://url.spec.whatwg.org/#ipv4-number-parser\nvar parseIPv4 = function (input) {\n var parts = split(input, '.');\n var partsLength, numbers, index, part, radix, number, ipv4;\n if (parts.length && parts[parts.length - 1] == '') {\n parts.length--;\n }\n partsLength = parts.length;\n if (partsLength > 4) return input;\n numbers = [];\n for (index = 0; index < partsLength; index++) {\n part = parts[index];\n if (part == '') return input;\n radix = 10;\n if (part.length > 1 && charAt(part, 0) == '0') {\n radix = exec(HEX_START, part) ? 16 : 8;\n part = stringSlice(part, radix == 8 ? 1 : 2);\n }\n if (part === '') {\n number = 0;\n } else {\n if (!exec(radix == 10 ? DEC : radix == 8 ? OCT : HEX, part)) return input;\n number = parseInt(part, radix);\n }\n push(numbers, number);\n }\n for (index = 0; index < partsLength; index++) {\n number = numbers[index];\n if (index == partsLength - 1) {\n if (number >= pow(256, 5 - partsLength)) return null;\n } else if (number > 255) return null;\n }\n ipv4 = pop(numbers);\n for (index = 0; index < numbers.length; index++) {\n ipv4 += numbers[index] * pow(256, 3 - index);\n }\n return ipv4;\n};\n\n// https://url.spec.whatwg.org/#concept-ipv6-parser\n// eslint-disable-next-line max-statements -- TODO\nvar parseIPv6 = function (input) {\n var address = [0, 0, 0, 0, 0, 0, 0, 0];\n var pieceIndex = 0;\n var compress = null;\n var pointer = 0;\n var value, length, numbersSeen, ipv4Piece, number, swaps, swap;\n\n var chr = function () {\n return charAt(input, pointer);\n };\n\n if (chr() == ':') {\n if (charAt(input, 1) != ':') return;\n pointer += 2;\n pieceIndex++;\n compress = pieceIndex;\n }\n while (chr()) {\n if (pieceIndex == 8) return;\n if (chr() == ':') {\n if (compress !== null) return;\n pointer++;\n pieceIndex++;\n compress = pieceIndex;\n continue;\n }\n value = length = 0;\n while (length < 4 && exec(HEX, chr())) {\n value = value * 16 + parseInt(chr(), 16);\n pointer++;\n length++;\n }\n if (chr() == '.') {\n if (length == 0) return;\n pointer -= length;\n if (pieceIndex > 6) return;\n numbersSeen = 0;\n while (chr()) {\n ipv4Piece = null;\n if (numbersSeen > 0) {\n if (chr() == '.' && numbersSeen < 4) pointer++;\n else return;\n }\n if (!exec(DIGIT, chr())) return;\n while (exec(DIGIT, chr())) {\n number = parseInt(chr(), 10);\n if (ipv4Piece === null) ipv4Piece = number;\n else if (ipv4Piece == 0) return;\n else ipv4Piece = ipv4Piece * 10 + number;\n if (ipv4Piece > 255) return;\n pointer++;\n }\n address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece;\n numbersSeen++;\n if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++;\n }\n if (numbersSeen != 4) return;\n break;\n } else if (chr() == ':') {\n pointer++;\n if (!chr()) return;\n } else if (chr()) return;\n address[pieceIndex++] = value;\n }\n if (compress !== null) {\n swaps = pieceIndex - compress;\n pieceIndex = 7;\n while (pieceIndex != 0 && swaps > 0) {\n swap = address[pieceIndex];\n address[pieceIndex--] = address[compress + swaps - 1];\n address[compress + --swaps] = swap;\n }\n } else if (pieceIndex != 8) return;\n return address;\n};\n\nvar findLongestZeroSequence = function (ipv6) {\n var maxIndex = null;\n var maxLength = 1;\n var currStart = null;\n var currLength = 0;\n var index = 0;\n for (; index < 8; index++) {\n if (ipv6[index] !== 0) {\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n currStart = null;\n currLength = 0;\n } else {\n if (currStart === null) currStart = index;\n ++currLength;\n }\n }\n if (currLength > maxLength) {\n maxIndex = currStart;\n maxLength = currLength;\n }\n return maxIndex;\n};\n\n// https://url.spec.whatwg.org/#host-serializing\nvar serializeHost = function (host) {\n var result, index, compress, ignore0;\n // ipv4\n if (typeof host == 'number') {\n result = [];\n for (index = 0; index < 4; index++) {\n unshift(result, host % 256);\n host = floor(host / 256);\n } return join(result, '.');\n // ipv6\n } else if (typeof host == 'object') {\n result = '';\n compress = findLongestZeroSequence(host);\n for (index = 0; index < 8; index++) {\n if (ignore0 && host[index] === 0) continue;\n if (ignore0) ignore0 = false;\n if (compress === index) {\n result += index ? ':' : '::';\n ignore0 = true;\n } else {\n result += numberToString(host[index], 16);\n if (index < 7) result += ':';\n }\n }\n return '[' + result + ']';\n } return host;\n};\n\nvar C0ControlPercentEncodeSet = {};\nvar fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, {\n ' ': 1, '\"': 1, '<': 1, '>': 1, '`': 1\n});\nvar pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, {\n '#': 1, '?': 1, '{': 1, '}': 1\n});\nvar userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, {\n '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\\\': 1, ']': 1, '^': 1, '|': 1\n});\n\nvar percentEncode = function (chr, set) {\n var code = codeAt(chr, 0);\n return code > 0x20 && code < 0x7F && !hasOwn(set, chr) ? chr : encodeURIComponent(chr);\n};\n\n// https://url.spec.whatwg.org/#special-scheme\nvar specialSchemes = {\n ftp: 21,\n file: null,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443\n};\n\n// https://url.spec.whatwg.org/#windows-drive-letter\nvar isWindowsDriveLetter = function (string, normalized) {\n var second;\n return string.length == 2 && exec(ALPHA, charAt(string, 0))\n && ((second = charAt(string, 1)) == ':' || (!normalized && second == '|'));\n};\n\n// https://url.spec.whatwg.org/#start-with-a-windows-drive-letter\nvar startsWithWindowsDriveLetter = function (string) {\n var third;\n return string.length > 1 && isWindowsDriveLetter(stringSlice(string, 0, 2)) && (\n string.length == 2 ||\n ((third = charAt(string, 2)) === '/' || third === '\\\\' || third === '?' || third === '#')\n );\n};\n\n// https://url.spec.whatwg.org/#single-dot-path-segment\nvar isSingleDot = function (segment) {\n return segment === '.' || toLowerCase(segment) === '%2e';\n};\n\n// https://url.spec.whatwg.org/#double-dot-path-segment\nvar isDoubleDot = function (segment) {\n segment = toLowerCase(segment);\n return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e';\n};\n\n// States:\nvar SCHEME_START = {};\nvar SCHEME = {};\nvar NO_SCHEME = {};\nvar SPECIAL_RELATIVE_OR_AUTHORITY = {};\nvar PATH_OR_AUTHORITY = {};\nvar RELATIVE = {};\nvar RELATIVE_SLASH = {};\nvar SPECIAL_AUTHORITY_SLASHES = {};\nvar SPECIAL_AUTHORITY_IGNORE_SLASHES = {};\nvar AUTHORITY = {};\nvar HOST = {};\nvar HOSTNAME = {};\nvar PORT = {};\nvar FILE = {};\nvar FILE_SLASH = {};\nvar FILE_HOST = {};\nvar PATH_START = {};\nvar PATH = {};\nvar CANNOT_BE_A_BASE_URL_PATH = {};\nvar QUERY = {};\nvar FRAGMENT = {};\n\nvar URLState = function (url, isBase, base) {\n var urlString = $toString(url);\n var baseState, failure, searchParams;\n if (isBase) {\n failure = this.parse(urlString);\n if (failure) throw TypeError(failure);\n this.searchParams = null;\n } else {\n if (base !== undefined) baseState = new URLState(base, true);\n failure = this.parse(urlString, null, baseState);\n if (failure) throw TypeError(failure);\n searchParams = getInternalSearchParamsState(new URLSearchParams());\n searchParams.bindURL(this);\n this.searchParams = searchParams;\n }\n};\n\nURLState.prototype = {\n type: 'URL',\n // https://url.spec.whatwg.org/#url-parsing\n // eslint-disable-next-line max-statements -- TODO\n parse: function (input, stateOverride, base) {\n var url = this;\n var state = stateOverride || SCHEME_START;\n var pointer = 0;\n var buffer = '';\n var seenAt = false;\n var seenBracket = false;\n var seenPasswordToken = false;\n var codePoints, chr, bufferCodePoints, failure;\n\n input = $toString(input);\n\n if (!stateOverride) {\n url.scheme = '';\n url.username = '';\n url.password = '';\n url.host = null;\n url.port = null;\n url.path = [];\n url.query = null;\n url.fragment = null;\n url.cannotBeABaseURL = false;\n input = replace(input, LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, '');\n }\n\n input = replace(input, TAB_AND_NEW_LINE, '');\n\n codePoints = arrayFrom(input);\n\n while (pointer <= codePoints.length) {\n chr = codePoints[pointer];\n switch (state) {\n case SCHEME_START:\n if (chr && exec(ALPHA, chr)) {\n buffer += toLowerCase(chr);\n state = SCHEME;\n } else if (!stateOverride) {\n state = NO_SCHEME;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case SCHEME:\n if (chr && (exec(ALPHANUMERIC, chr) || chr == '+' || chr == '-' || chr == '.')) {\n buffer += toLowerCase(chr);\n } else if (chr == ':') {\n if (stateOverride && (\n (url.isSpecial() != hasOwn(specialSchemes, buffer)) ||\n (buffer == 'file' && (url.includesCredentials() || url.port !== null)) ||\n (url.scheme == 'file' && !url.host)\n )) return;\n url.scheme = buffer;\n if (stateOverride) {\n if (url.isSpecial() && specialSchemes[url.scheme] == url.port) url.port = null;\n return;\n }\n buffer = '';\n if (url.scheme == 'file') {\n state = FILE;\n } else if (url.isSpecial() && base && base.scheme == url.scheme) {\n state = SPECIAL_RELATIVE_OR_AUTHORITY;\n } else if (url.isSpecial()) {\n state = SPECIAL_AUTHORITY_SLASHES;\n } else if (codePoints[pointer + 1] == '/') {\n state = PATH_OR_AUTHORITY;\n pointer++;\n } else {\n url.cannotBeABaseURL = true;\n push(url.path, '');\n state = CANNOT_BE_A_BASE_URL_PATH;\n }\n } else if (!stateOverride) {\n buffer = '';\n state = NO_SCHEME;\n pointer = 0;\n continue;\n } else return INVALID_SCHEME;\n break;\n\n case NO_SCHEME:\n if (!base || (base.cannotBeABaseURL && chr != '#')) return INVALID_SCHEME;\n if (base.cannotBeABaseURL && chr == '#') {\n url.scheme = base.scheme;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n url.cannotBeABaseURL = true;\n state = FRAGMENT;\n break;\n }\n state = base.scheme == 'file' ? FILE : RELATIVE;\n continue;\n\n case SPECIAL_RELATIVE_OR_AUTHORITY:\n if (chr == '/' && codePoints[pointer + 1] == '/') {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n pointer++;\n } else {\n state = RELATIVE;\n continue;\n } break;\n\n case PATH_OR_AUTHORITY:\n if (chr == '/') {\n state = AUTHORITY;\n break;\n } else {\n state = PATH;\n continue;\n }\n\n case RELATIVE:\n url.scheme = base.scheme;\n if (chr == EOF) {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n } else if (chr == '/' || (chr == '\\\\' && url.isSpecial())) {\n state = RELATIVE_SLASH;\n } else if (chr == '?') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n url.path = arraySlice(base.path);\n url.path.length--;\n state = PATH;\n continue;\n } break;\n\n case RELATIVE_SLASH:\n if (url.isSpecial() && (chr == '/' || chr == '\\\\')) {\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n } else if (chr == '/') {\n state = AUTHORITY;\n } else {\n url.username = base.username;\n url.password = base.password;\n url.host = base.host;\n url.port = base.port;\n state = PATH;\n continue;\n } break;\n\n case SPECIAL_AUTHORITY_SLASHES:\n state = SPECIAL_AUTHORITY_IGNORE_SLASHES;\n if (chr != '/' || charAt(buffer, pointer + 1) != '/') continue;\n pointer++;\n break;\n\n case SPECIAL_AUTHORITY_IGNORE_SLASHES:\n if (chr != '/' && chr != '\\\\') {\n state = AUTHORITY;\n continue;\n } break;\n\n case AUTHORITY:\n if (chr == '@') {\n if (seenAt) buffer = '%40' + buffer;\n seenAt = true;\n bufferCodePoints = arrayFrom(buffer);\n for (var i = 0; i < bufferCodePoints.length; i++) {\n var codePoint = bufferCodePoints[i];\n if (codePoint == ':' && !seenPasswordToken) {\n seenPasswordToken = true;\n continue;\n }\n var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet);\n if (seenPasswordToken) url.password += encodedCodePoints;\n else url.username += encodedCodePoints;\n }\n buffer = '';\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial())\n ) {\n if (seenAt && buffer == '') return INVALID_AUTHORITY;\n pointer -= arrayFrom(buffer).length + 1;\n buffer = '';\n state = HOST;\n } else buffer += chr;\n break;\n\n case HOST:\n case HOSTNAME:\n if (stateOverride && url.scheme == 'file') {\n state = FILE_HOST;\n continue;\n } else if (chr == ':' && !seenBracket) {\n if (buffer == '') return INVALID_HOST;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PORT;\n if (stateOverride == HOSTNAME) return;\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial())\n ) {\n if (url.isSpecial() && buffer == '') return INVALID_HOST;\n if (stateOverride && buffer == '' && (url.includesCredentials() || url.port !== null)) return;\n failure = url.parseHost(buffer);\n if (failure) return failure;\n buffer = '';\n state = PATH_START;\n if (stateOverride) return;\n continue;\n } else {\n if (chr == '[') seenBracket = true;\n else if (chr == ']') seenBracket = false;\n buffer += chr;\n } break;\n\n case PORT:\n if (exec(DIGIT, chr)) {\n buffer += chr;\n } else if (\n chr == EOF || chr == '/' || chr == '?' || chr == '#' ||\n (chr == '\\\\' && url.isSpecial()) ||\n stateOverride\n ) {\n if (buffer != '') {\n var port = parseInt(buffer, 10);\n if (port > 0xFFFF) return INVALID_PORT;\n url.port = (url.isSpecial() && port === specialSchemes[url.scheme]) ? null : port;\n buffer = '';\n }\n if (stateOverride) return;\n state = PATH_START;\n continue;\n } else return INVALID_PORT;\n break;\n\n case FILE:\n url.scheme = 'file';\n if (chr == '/' || chr == '\\\\') state = FILE_SLASH;\n else if (base && base.scheme == 'file') {\n if (chr == EOF) {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n } else if (chr == '?') {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.query = base.query;\n url.fragment = '';\n state = FRAGMENT;\n } else {\n if (!startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n url.host = base.host;\n url.path = arraySlice(base.path);\n url.shortenPath();\n }\n state = PATH;\n continue;\n }\n } else {\n state = PATH;\n continue;\n } break;\n\n case FILE_SLASH:\n if (chr == '/' || chr == '\\\\') {\n state = FILE_HOST;\n break;\n }\n if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(join(arraySlice(codePoints, pointer), ''))) {\n if (isWindowsDriveLetter(base.path[0], true)) push(url.path, base.path[0]);\n else url.host = base.host;\n }\n state = PATH;\n continue;\n\n case FILE_HOST:\n if (chr == EOF || chr == '/' || chr == '\\\\' || chr == '?' || chr == '#') {\n if (!stateOverride && isWindowsDriveLetter(buffer)) {\n state = PATH;\n } else if (buffer == '') {\n url.host = '';\n if (stateOverride) return;\n state = PATH_START;\n } else {\n failure = url.parseHost(buffer);\n if (failure) return failure;\n if (url.host == 'localhost') url.host = '';\n if (stateOverride) return;\n buffer = '';\n state = PATH_START;\n } continue;\n } else buffer += chr;\n break;\n\n case PATH_START:\n if (url.isSpecial()) {\n state = PATH;\n if (chr != '/' && chr != '\\\\') continue;\n } else if (!stateOverride && chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (!stateOverride && chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n state = PATH;\n if (chr != '/') continue;\n } break;\n\n case PATH:\n if (\n chr == EOF || chr == '/' ||\n (chr == '\\\\' && url.isSpecial()) ||\n (!stateOverride && (chr == '?' || chr == '#'))\n ) {\n if (isDoubleDot(buffer)) {\n url.shortenPath();\n if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else if (isSingleDot(buffer)) {\n if (chr != '/' && !(chr == '\\\\' && url.isSpecial())) {\n push(url.path, '');\n }\n } else {\n if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) {\n if (url.host) url.host = '';\n buffer = charAt(buffer, 0) + ':'; // normalize windows drive letter\n }\n push(url.path, buffer);\n }\n buffer = '';\n if (url.scheme == 'file' && (chr == EOF || chr == '?' || chr == '#')) {\n while (url.path.length > 1 && url.path[0] === '') {\n shift(url.path);\n }\n }\n if (chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n }\n } else {\n buffer += percentEncode(chr, pathPercentEncodeSet);\n } break;\n\n case CANNOT_BE_A_BASE_URL_PATH:\n if (chr == '?') {\n url.query = '';\n state = QUERY;\n } else if (chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n url.path[0] += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case QUERY:\n if (!stateOverride && chr == '#') {\n url.fragment = '';\n state = FRAGMENT;\n } else if (chr != EOF) {\n if (chr == \"'\" && url.isSpecial()) url.query += '%27';\n else if (chr == '#') url.query += '%23';\n else url.query += percentEncode(chr, C0ControlPercentEncodeSet);\n } break;\n\n case FRAGMENT:\n if (chr != EOF) url.fragment += percentEncode(chr, fragmentPercentEncodeSet);\n break;\n }\n\n pointer++;\n }\n },\n // https://url.spec.whatwg.org/#host-parsing\n parseHost: function (input) {\n var result, codePoints, index;\n if (charAt(input, 0) == '[') {\n if (charAt(input, input.length - 1) != ']') return INVALID_HOST;\n result = parseIPv6(stringSlice(input, 1, -1));\n if (!result) return INVALID_HOST;\n this.host = result;\n // opaque host\n } else if (!this.isSpecial()) {\n if (exec(FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT, input)) return INVALID_HOST;\n result = '';\n codePoints = arrayFrom(input);\n for (index = 0; index < codePoints.length; index++) {\n result += percentEncode(codePoints[index], C0ControlPercentEncodeSet);\n }\n this.host = result;\n } else {\n input = toASCII(input);\n if (exec(FORBIDDEN_HOST_CODE_POINT, input)) return INVALID_HOST;\n result = parseIPv4(input);\n if (result === null) return INVALID_HOST;\n this.host = result;\n }\n },\n // https://url.spec.whatwg.org/#cannot-have-a-username-password-port\n cannotHaveUsernamePasswordPort: function () {\n return !this.host || this.cannotBeABaseURL || this.scheme == 'file';\n },\n // https://url.spec.whatwg.org/#include-credentials\n includesCredentials: function () {\n return this.username != '' || this.password != '';\n },\n // https://url.spec.whatwg.org/#is-special\n isSpecial: function () {\n return hasOwn(specialSchemes, this.scheme);\n },\n // https://url.spec.whatwg.org/#shorten-a-urls-path\n shortenPath: function () {\n var path = this.path;\n var pathSize = path.length;\n if (pathSize && (this.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) {\n path.length--;\n }\n },\n // https://url.spec.whatwg.org/#concept-url-serializer\n serialize: function () {\n var url = this;\n var scheme = url.scheme;\n var username = url.username;\n var password = url.password;\n var host = url.host;\n var port = url.port;\n var path = url.path;\n var query = url.query;\n var fragment = url.fragment;\n var output = scheme + ':';\n if (host !== null) {\n output += '//';\n if (url.includesCredentials()) {\n output += username + (password ? ':' + password : '') + '@';\n }\n output += serializeHost(host);\n if (port !== null) output += ':' + port;\n } else if (scheme == 'file') output += '//';\n output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n if (query !== null) output += '?' + query;\n if (fragment !== null) output += '#' + fragment;\n return output;\n },\n // https://url.spec.whatwg.org/#dom-url-href\n setHref: function (href) {\n var failure = this.parse(href);\n if (failure) throw TypeError(failure);\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-origin\n getOrigin: function () {\n var scheme = this.scheme;\n var port = this.port;\n if (scheme == 'blob') try {\n return new URLConstructor(scheme.path[0]).origin;\n } catch (error) {\n return 'null';\n }\n if (scheme == 'file' || !this.isSpecial()) return 'null';\n return scheme + '://' + serializeHost(this.host) + (port !== null ? ':' + port : '');\n },\n // https://url.spec.whatwg.org/#dom-url-protocol\n getProtocol: function () {\n return this.scheme + ':';\n },\n setProtocol: function (protocol) {\n this.parse($toString(protocol) + ':', SCHEME_START);\n },\n // https://url.spec.whatwg.org/#dom-url-username\n getUsername: function () {\n return this.username;\n },\n setUsername: function (username) {\n var codePoints = arrayFrom($toString(username));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.username = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.username += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-password\n getPassword: function () {\n return this.password;\n },\n setPassword: function (password) {\n var codePoints = arrayFrom($toString(password));\n if (this.cannotHaveUsernamePasswordPort()) return;\n this.password = '';\n for (var i = 0; i < codePoints.length; i++) {\n this.password += percentEncode(codePoints[i], userinfoPercentEncodeSet);\n }\n },\n // https://url.spec.whatwg.org/#dom-url-host\n getHost: function () {\n var host = this.host;\n var port = this.port;\n return host === null ? ''\n : port === null ? serializeHost(host)\n : serializeHost(host) + ':' + port;\n },\n setHost: function (host) {\n if (this.cannotBeABaseURL) return;\n this.parse(host, HOST);\n },\n // https://url.spec.whatwg.org/#dom-url-hostname\n getHostname: function () {\n var host = this.host;\n return host === null ? '' : serializeHost(host);\n },\n setHostname: function (hostname) {\n if (this.cannotBeABaseURL) return;\n this.parse(hostname, HOSTNAME);\n },\n // https://url.spec.whatwg.org/#dom-url-port\n getPort: function () {\n var port = this.port;\n return port === null ? '' : $toString(port);\n },\n setPort: function (port) {\n if (this.cannotHaveUsernamePasswordPort()) return;\n port = $toString(port);\n if (port == '') this.port = null;\n else this.parse(port, PORT);\n },\n // https://url.spec.whatwg.org/#dom-url-pathname\n getPathname: function () {\n var path = this.path;\n return this.cannotBeABaseURL ? path[0] : path.length ? '/' + join(path, '/') : '';\n },\n setPathname: function (pathname) {\n if (this.cannotBeABaseURL) return;\n this.path = [];\n this.parse(pathname, PATH_START);\n },\n // https://url.spec.whatwg.org/#dom-url-search\n getSearch: function () {\n var query = this.query;\n return query ? '?' + query : '';\n },\n setSearch: function (search) {\n search = $toString(search);\n if (search == '') {\n this.query = null;\n } else {\n if ('?' == charAt(search, 0)) search = stringSlice(search, 1);\n this.query = '';\n this.parse(search, QUERY);\n }\n this.searchParams.update();\n },\n // https://url.spec.whatwg.org/#dom-url-searchparams\n getSearchParams: function () {\n return this.searchParams.facade;\n },\n // https://url.spec.whatwg.org/#dom-url-hash\n getHash: function () {\n var fragment = this.fragment;\n return fragment ? '#' + fragment : '';\n },\n setHash: function (hash) {\n hash = $toString(hash);\n if (hash == '') {\n this.fragment = null;\n return;\n }\n if ('#' == charAt(hash, 0)) hash = stringSlice(hash, 1);\n this.fragment = '';\n this.parse(hash, FRAGMENT);\n },\n update: function () {\n this.query = this.searchParams.serialize() || null;\n }\n};\n\n// `URL` constructor\n// https://url.spec.whatwg.org/#url-class\nvar URLConstructor = function URL(url /* , base */) {\n var that = anInstance(this, URLPrototype);\n var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;\n var state = setInternalState(that, new URLState(url, false, base));\n if (!DESCRIPTORS) {\n that.href = state.serialize();\n that.origin = state.getOrigin();\n that.protocol = state.getProtocol();\n that.username = state.getUsername();\n that.password = state.getPassword();\n that.host = state.getHost();\n that.hostname = state.getHostname();\n that.port = state.getPort();\n that.pathname = state.getPathname();\n that.search = state.getSearch();\n that.searchParams = state.getSearchParams();\n that.hash = state.getHash();\n }\n};\n\nvar URLPrototype = URLConstructor.prototype;\n\nvar accessorDescriptor = function (getter, setter) {\n return {\n get: function () {\n return getInternalURLState(this)[getter]();\n },\n set: setter && function (value) {\n return getInternalURLState(this)[setter](value);\n },\n configurable: true,\n enumerable: true\n };\n};\n\nif (DESCRIPTORS) {\n // `URL.prototype.href` accessors pair\n // https://url.spec.whatwg.org/#dom-url-href\n defineBuiltInAccessor(URLPrototype, 'href', accessorDescriptor('serialize', 'setHref'));\n // `URL.prototype.origin` getter\n // https://url.spec.whatwg.org/#dom-url-origin\n defineBuiltInAccessor(URLPrototype, 'origin', accessorDescriptor('getOrigin'));\n // `URL.prototype.protocol` accessors pair\n // https://url.spec.whatwg.org/#dom-url-protocol\n defineBuiltInAccessor(URLPrototype, 'protocol', accessorDescriptor('getProtocol', 'setProtocol'));\n // `URL.prototype.username` accessors pair\n // https://url.spec.whatwg.org/#dom-url-username\n defineBuiltInAccessor(URLPrototype, 'username', accessorDescriptor('getUsername', 'setUsername'));\n // `URL.prototype.password` accessors pair\n // https://url.spec.whatwg.org/#dom-url-password\n defineBuiltInAccessor(URLPrototype, 'password', accessorDescriptor('getPassword', 'setPassword'));\n // `URL.prototype.host` accessors pair\n // https://url.spec.whatwg.org/#dom-url-host\n defineBuiltInAccessor(URLPrototype, 'host', accessorDescriptor('getHost', 'setHost'));\n // `URL.prototype.hostname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hostname\n defineBuiltInAccessor(URLPrototype, 'hostname', accessorDescriptor('getHostname', 'setHostname'));\n // `URL.prototype.port` accessors pair\n // https://url.spec.whatwg.org/#dom-url-port\n defineBuiltInAccessor(URLPrototype, 'port', accessorDescriptor('getPort', 'setPort'));\n // `URL.prototype.pathname` accessors pair\n // https://url.spec.whatwg.org/#dom-url-pathname\n defineBuiltInAccessor(URLPrototype, 'pathname', accessorDescriptor('getPathname', 'setPathname'));\n // `URL.prototype.search` accessors pair\n // https://url.spec.whatwg.org/#dom-url-search\n defineBuiltInAccessor(URLPrototype, 'search', accessorDescriptor('getSearch', 'setSearch'));\n // `URL.prototype.searchParams` getter\n // https://url.spec.whatwg.org/#dom-url-searchparams\n defineBuiltInAccessor(URLPrototype, 'searchParams', accessorDescriptor('getSearchParams'));\n // `URL.prototype.hash` accessors pair\n // https://url.spec.whatwg.org/#dom-url-hash\n defineBuiltInAccessor(URLPrototype, 'hash', accessorDescriptor('getHash', 'setHash'));\n}\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\ndefineBuiltIn(URLPrototype, 'toJSON', function toJSON() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\n// `URL.prototype.toString` method\n// https://url.spec.whatwg.org/#URL-stringification-behavior\ndefineBuiltIn(URLPrototype, 'toString', function toString() {\n return getInternalURLState(this).serialize();\n}, { enumerable: true });\n\nif (NativeURL) {\n var nativeCreateObjectURL = NativeURL.createObjectURL;\n var nativeRevokeObjectURL = NativeURL.revokeObjectURL;\n // `URL.createObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL\n if (nativeCreateObjectURL) defineBuiltIn(URLConstructor, 'createObjectURL', bind(nativeCreateObjectURL, NativeURL));\n // `URL.revokeObjectURL` method\n // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL\n if (nativeRevokeObjectURL) defineBuiltIn(URLConstructor, 'revokeObjectURL', bind(nativeRevokeObjectURL, NativeURL));\n}\n\nsetToStringTag(URLConstructor, 'URL');\n\n$({ global: true, constructor: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, {\n URL: URLConstructor\n});\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/web.url.constructor');\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",$=\"Invalid Date\",l=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},g={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,f),s=n-i<0,u=e.clone().add(r+(s?-1:1),f);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:f,y:c,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:h}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},v=\"en\",D={};D[v]=M;var p=function(t){return t instanceof _},S=function t(e,n,r){var i;if(!e)return v;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(v=i),i||!r&&v},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=g;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match(l);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===$)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<w(t)},m.$g=function(t,e,n){return O.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!O.u(e)||e,h=O.p(t),$=function(t,e){var i=O.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},l=function(t,e){return O.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,g=\"set\"+(this.$u?\"UTC\":\"\");switch(h){case c:return r?$(1,0):$(31,11);case f:return r?$(1,M):$(0,M+1);case o:var v=this.$locale().weekStart||0,D=(y<v?y+7:y)-v;return $(r?m-D:m+(6-D),M);case a:case d:return l(g+\"Hours\",0);case u:return l(g+\"Minutes\",1);case s:return l(g+\"Seconds\",2);case i:return l(g+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=O.p(t),h=\"set\"+(this.$u?\"UTC\":\"\"),$=(n={},n[a]=h+\"Date\",n[d]=h+\"Date\",n[f]=h+\"Month\",n[c]=h+\"FullYear\",n[u]=h+\"Hours\",n[s]=h+\"Minutes\",n[i]=h+\"Seconds\",n[r]=h+\"Milliseconds\",n)[o],l=o===a?this.$D+(e-this.$W):e;if(o===f||o===c){var y=this.clone().set(d,1);y.$d[$](l),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else $&&this.$d[$](l);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[O.p(t)]()},m.add=function(r,h){var d,$=this;r=Number(r);var l=O.p(h),y=function(t){var e=w($);return O.w(e.date(e.date()+Math.round(t*r)),$)};if(l===f)return this.set(f,this.$M+r);if(l===c)return this.set(c,this.$y+r);if(l===a)return y(1);if(l===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[l]||1,m=this.$d.getTime()+r*M;return O.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||$;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=O.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,f=n.months,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},c=function(t){return O.s(s%12||12,t,\"0\")},d=n.meridiem||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r},l={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:O.s(a+1,2,\"0\"),MMM:h(n.monthsShort,a,f,3),MMMM:h(f,a),D:this.$D,DD:O.s(this.$D,2,\"0\"),d:String(this.$W),dd:h(n.weekdaysMin,this.$W,o,2),ddd:h(n.weekdaysShort,this.$W,o,3),dddd:o[this.$W],H:String(s),HH:O.s(s,2,\"0\"),h:c(1),hh:c(2),a:d(s,u,!0),A:d(s,u,!1),m:String(u),mm:O.s(u,2,\"0\"),s:String(this.$s),ss:O.s(this.$s,2,\"0\"),SSS:O.s(this.$ms,3,\"0\"),Z:i};return r.replace(y,(function(t,e){return e||l[t]||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,$){var l,y=O.p(d),M=w(r),m=(M.utcOffset()-this.utcOffset())*e,g=this-M,v=O.m(this,M);return v=(l={},l[c]=v/12,l[f]=v,l[h]=v/3,l[o]=(g-m)/6048e5,l[a]=(g-m)/864e5,l[u]=g/n,l[s]=g/e,l[i]=g/t,l)[y]||g,$?v:O.a(v)},m.daysInMonth=function(){return this.endOf(f).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=S(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return O.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),T=_.prototype;return w.prototype=T,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",f],[\"$y\",c],[\"$D\",d]].forEach((function(t){T[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),w.extend=function(t,e){return t.$i||(t(e,_,w),t.$i=!0),w},w.locale=S,w.isDayjs=p,w.unix=function(t){return w(1e3*t)},w.en=D[v],w.Ls=D,w.p={},w}));","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],a):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_au=a(e.dayjs)}(this,(function(e){\"use strict\";function a(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var t=a(e),_={name:\"en-au\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),weekStart:1,weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),ordinal:function(e){return e},formats:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"}};return t.default.locale(_,null,!0),_}));","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],a):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_ca=a(e.dayjs)}(this,(function(e){\"use strict\";function a(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var _=a(e),t={name:\"en-ca\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),ordinal:function(e){return e},formats:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"YYYY-MM-DD\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"}};return _.default.locale(t,null,!0),t}));","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],a):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_gb=a(e.dayjs)}(this,(function(e){\"use strict\";function a(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var t=a(e),_={name:\"en-gb\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekStart:1,yearStart:4,relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},formats:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},ordinal:function(e){var a=[\"th\",\"st\",\"nd\",\"rd\"],t=e%100;return\"[\"+e+(a[(t-20)%10]||a[t]||a[0])+\"]\"}};return t.default.locale(_,null,!0),_}));","!function(e,a){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=a(require(\"dayjs\")):\"function\"==typeof define&&define.amd?define([\"dayjs\"],a):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_locale_en_nz=a(e.dayjs)}(this,(function(e){\"use strict\";function a(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var t=a(e),n={name:\"en-nz\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),weekStart:1,weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),ordinal:function(e){var a=[\"th\",\"st\",\"nd\",\"rd\"],t=e%100;return\"[\"+e+(a[(t-20)%10]||a[t]||a[0])+\"]\"},formats:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"}};return t.default.locale(n,null,!0),n}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_advancedFormat=t()}(this,(function(){\"use strict\";return function(e,t,r){var n=t.prototype,s=n.format;r.en.ordinal=function(e){var t=[\"th\",\"st\",\"nd\",\"rd\"],r=e%100;return\"[\"+e+(t[(r-20)%10]||t[r]||t[0])+\"]\"},n.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return s.bind(this)(e);var n=this.$utils(),a=(e||\"YYYY-MM-DDTHH:mm:ssZ\").replace(/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case\"Q\":return Math.ceil((t.$M+1)/3);case\"Do\":return r.ordinal(t.$D);case\"gggg\":return t.weekYear();case\"GGGG\":return t.isoWeekYear();case\"wo\":return r.ordinal(t.week(),\"W\");case\"w\":case\"ww\":return n.s(t.week(),\"w\"===e?1:2,\"0\");case\"W\":case\"WW\":return n.s(t.isoWeek(),\"W\"===e?1:2,\"0\");case\"k\":case\"kk\":return n.s(String(0===t.$H?24:t.$H),\"k\"===e?1:2,\"0\");case\"X\":return Math.floor(t.$d.getTime()/1e3);case\"x\":return t.$d.getTime();case\"z\":return\"[\"+t.offsetName()+\"]\";case\"zzz\":return\"[\"+t.offsetName(\"long\")+\"]\";default:return e}}));return s.bind(this)(a)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-:/.()\\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d\\d/,r=/\\d\\d?/,i=/\\d*[^\\s\\d-_:/()]+/,o={},s=function(e){return(e=+e)+(e>68?1900:2e3)};var a=function(e){return function(t){this[e]=+t}},f=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],h=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},u=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},d={A:[i,function(e){this.afternoon=u(e,!1)}],a:[i,function(e){this.afternoon=u(e,!0)}],S:[/\\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[r,a(\"seconds\")],ss:[r,a(\"seconds\")],m:[r,a(\"minutes\")],mm:[r,a(\"minutes\")],H:[r,a(\"hours\")],h:[r,a(\"hours\")],HH:[r,a(\"hours\")],hh:[r,a(\"hours\")],D:[r,a(\"day\")],DD:[n,a(\"day\")],Do:[i,function(e){var t=o.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],M:[r,a(\"month\")],MM:[n,a(\"month\")],MMM:[i,function(e){var t=h(\"months\"),n=(h(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(e){var t=h(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,a(\"year\")],YY:[n,function(e){this.year=s(e)}],YYYY:[/\\d{4}/,a(\"year\")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=s.length,f=0;f<a;f+=1){var h=s[f],u=d[h],c=u&&u[0],l=u&&u[1];s[f]=l?{regex:c,parser:l}:h.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=s[n];if(\"string\"==typeof i)r+=i.length;else{var o=i.regex,f=i.parser,h=e.slice(r),u=o.exec(h)[0];f.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(s=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,s=e.args;this.$u=r;var a=s[1];if(\"string\"==typeof a){var f=!0===s[2],h=!0===s[3],u=f||h,d=s[2];h&&(d=s[2]),o=this.$locale(),!f&&d&&(o=n.Ls[d]),this.$d=function(e,t,n){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var r=c(t)(e),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,h=r.seconds,u=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=h||0,g=u||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(e){return new Date(\"\")}}(t,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),o={}}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","!function(t,s){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=s():\"function\"==typeof define&&define.amd?define(s):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_duration=s()}(this,(function(){\"use strict\";var t,s,n=1e3,i=6e4,e=36e5,r=864e5,o=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,u=31536e6,h=2592e6,a=/^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/,d={years:u,months:h,days:r,hours:e,minutes:i,seconds:n,milliseconds:1,weeks:6048e5},c=function(t){return t instanceof p},f=function(t,s,n){return new p(t,n,s.$l)},m=function(t){return s.p(t)+\"s\"},l=function(t){return t<0},$=function(t){return l(t)?Math.ceil(t):Math.floor(t)},y=function(t){return Math.abs(t)},g=function(t,s){return t?l(t)?{negative:!0,format:\"\"+y(t)+s}:{negative:!1,format:\"\"+t+s}:{negative:!1,format:\"\"}},p=function(){function l(t,s,n){var i=this;if(this.$d={},this.$l=n,void 0===t&&(this.$ms=0,this.parseFromMilliseconds()),s)return f(t*d[m(s)],this);if(\"number\"==typeof t)return this.$ms=t,this.parseFromMilliseconds(),this;if(\"object\"==typeof t)return Object.keys(t).forEach((function(s){i.$d[m(s)]=t[s]})),this.calMilliseconds(),this;if(\"string\"==typeof t){var e=t.match(a);if(e){var r=e.slice(2).map((function(t){return null!=t?Number(t):0}));return this.$d.years=r[0],this.$d.months=r[1],this.$d.weeks=r[2],this.$d.days=r[3],this.$d.hours=r[4],this.$d.minutes=r[5],this.$d.seconds=r[6],this.calMilliseconds(),this}}return this}var y=l.prototype;return y.calMilliseconds=function(){var t=this;this.$ms=Object.keys(this.$d).reduce((function(s,n){return s+(t.$d[n]||0)*d[n]}),0)},y.parseFromMilliseconds=function(){var t=this.$ms;this.$d.years=$(t/u),t%=u,this.$d.months=$(t/h),t%=h,this.$d.days=$(t/r),t%=r,this.$d.hours=$(t/e),t%=e,this.$d.minutes=$(t/i),t%=i,this.$d.seconds=$(t/n),t%=n,this.$d.milliseconds=t},y.toISOString=function(){var t=g(this.$d.years,\"Y\"),s=g(this.$d.months,\"M\"),n=+this.$d.days||0;this.$d.weeks&&(n+=7*this.$d.weeks);var i=g(n,\"D\"),e=g(this.$d.hours,\"H\"),r=g(this.$d.minutes,\"M\"),o=this.$d.seconds||0;this.$d.milliseconds&&(o+=this.$d.milliseconds/1e3);var u=g(o,\"S\"),h=t.negative||s.negative||i.negative||e.negative||r.negative||u.negative,a=e.format||r.format||u.format?\"T\":\"\",d=(h?\"-\":\"\")+\"P\"+t.format+s.format+i.format+a+e.format+r.format+u.format;return\"P\"===d||\"-P\"===d?\"P0D\":d},y.toJSON=function(){return this.toISOString()},y.format=function(t){var n=t||\"YYYY-MM-DDTHH:mm:ss\",i={Y:this.$d.years,YY:s.s(this.$d.years,2,\"0\"),YYYY:s.s(this.$d.years,4,\"0\"),M:this.$d.months,MM:s.s(this.$d.months,2,\"0\"),D:this.$d.days,DD:s.s(this.$d.days,2,\"0\"),H:this.$d.hours,HH:s.s(this.$d.hours,2,\"0\"),m:this.$d.minutes,mm:s.s(this.$d.minutes,2,\"0\"),s:this.$d.seconds,ss:s.s(this.$d.seconds,2,\"0\"),SSS:s.s(this.$d.milliseconds,3,\"0\")};return n.replace(o,(function(t,s){return s||String(i[t])}))},y.as=function(t){return this.$ms/d[m(t)]},y.get=function(t){var s=this.$ms,n=m(t);return\"milliseconds\"===n?s%=1e3:s=\"weeks\"===n?$(s/d[n]):this.$d[n],0===s?0:s},y.add=function(t,s,n){var i;return i=s?t*d[m(s)]:c(t)?t.$ms:f(t,this).$ms,f(this.$ms+i*(n?-1:1),this)},y.subtract=function(t,s){return this.add(t,s,!0)},y.locale=function(t){var s=this.clone();return s.$l=t,s},y.clone=function(){return f(this.$ms,this)},y.humanize=function(s){return t().add(this.$ms,\"ms\").locale(this.$l).fromNow(!s)},y.milliseconds=function(){return this.get(\"milliseconds\")},y.asMilliseconds=function(){return this.as(\"milliseconds\")},y.seconds=function(){return this.get(\"seconds\")},y.asSeconds=function(){return this.as(\"seconds\")},y.minutes=function(){return this.get(\"minutes\")},y.asMinutes=function(){return this.as(\"minutes\")},y.hours=function(){return this.get(\"hours\")},y.asHours=function(){return this.as(\"hours\")},y.days=function(){return this.get(\"days\")},y.asDays=function(){return this.as(\"days\")},y.weeks=function(){return this.get(\"weeks\")},y.asWeeks=function(){return this.as(\"weeks\")},y.months=function(){return this.get(\"months\")},y.asMonths=function(){return this.as(\"months\")},y.years=function(){return this.get(\"years\")},y.asYears=function(){return this.as(\"years\")},l}();return function(n,i,e){t=e,s=e().$utils(),e.duration=function(t,s){var n=e.locale();return f(t,{$l:n},s)},e.isDuration=c;var r=i.prototype.add,o=i.prototype.subtract;i.prototype.add=function(t,s){return c(t)&&(t=t.asMilliseconds()),r.bind(this)(t,s)},i.prototype.subtract=function(t,s){return c(t)&&(t=t.asMilliseconds()),o.bind(this)(t,s)}}}));","!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isBetween=i()}(this,(function(){\"use strict\";return function(e,i,t){i.prototype.isBetween=function(e,i,s,f){var n=t(e),o=t(i),r=\"(\"===(f=f||\"()\")[0],u=\")\"===f[1];return(r?this.isAfter(n,s):!this.isBefore(n,s))&&(u?this.isBefore(o,s):!this.isAfter(o,s))||(r?this.isBefore(n,s):!this.isAfter(n,s))&&(u?this.isAfter(o,s):!this.isBefore(o,s))}}}));","!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrBefore=i()}(this,(function(){\"use strict\";return function(e,i){i.prototype.isSameOrBefore=function(e,i){return this.isSame(e,i)||this.isBefore(e,i)}}}));","!function(e,o){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=o():\"function\"==typeof define&&define.amd?define(o):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isToday=o()}(this,(function(){\"use strict\";return function(e,o,t){o.prototype.isToday=function(){var e=\"YYYY-MM-DD\",o=t();return this.format(e)===o.format(e)}}}));","!function(o,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(o=\"undefined\"!=typeof globalThis?globalThis:o||self).dayjs_plugin_isTomorrow=e()}(this,(function(){\"use strict\";return function(o,e,t){e.prototype.isTomorrow=function(){var o=\"YYYY-MM-DD\",e=t().add(1,\"day\");return this.format(o)===e.format(o)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isYesterday=t()}(this,(function(){\"use strict\";return function(e,t,n){t.prototype.isYesterday=function(){var e=\"YYYY-MM-DD\",t=n().subtract(1,\"day\");return this.format(e)===t.format(e)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isoWeek=t()}(this,(function(){\"use strict\";var e=\"day\";return function(t,i,s){var a=function(t){return t.add(4-t.isoWeekday(),e)},d=i.prototype;d.isoWeekYear=function(){return a(this).year()},d.isoWeek=function(t){if(!this.$utils().u(t))return this.add(7*(t-this.isoWeek()),e);var i,d,n,o,r=a(this),u=(i=this.isoWeekYear(),d=this.$u,n=(d?s.utc:s)().year(i).startOf(\"year\"),o=4-n.isoWeekday(),n.isoWeekday()>4&&(o+=7),n.add(o,e));return r.diff(u,\"week\")+1},d.isoWeekday=function(e){return this.$utils().u(e)?this.day()||7:this.day(this.day()%7?e:e-7)};var n=d.startOf;d.startOf=function(e,t){var i=this.$utils(),s=!!i.u(t)||t;return\"isoweek\"===i.p(e)?s?this.date(this.date()-(this.isoWeekday()-1)).startOf(\"day\"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf(\"day\"):n.bind(this)(e,t)}}}));","!function(n,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(n=\"undefined\"!=typeof globalThis?globalThis:n||self).dayjs_plugin_localeData=e()}(this,(function(){\"use strict\";return function(n,e,t){var r=e.prototype,o=function(n){return n&&(n.indexOf?n:n.s)},u=function(n,e,t,r,u){var i=n.name?n:n.$locale(),a=o(i[e]),s=o(i[t]),f=a||s.map((function(n){return n.slice(0,r)}));if(!u)return f;var d=i.weekStart;return f.map((function(n,e){return f[(e+(d||0))%7]}))},i=function(){return t.Ls[t.locale()]},a=function(n,e){return n.formats[e]||function(n){return n.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(n,e,t){return e||t.slice(1)}))}(n.formats[e.toUpperCase()])},s=function(){var n=this;return{months:function(e){return e?e.format(\"MMMM\"):u(n,\"months\")},monthsShort:function(e){return e?e.format(\"MMM\"):u(n,\"monthsShort\",\"months\",3)},firstDayOfWeek:function(){return n.$locale().weekStart||0},weekdays:function(e){return e?e.format(\"dddd\"):u(n,\"weekdays\")},weekdaysMin:function(e){return e?e.format(\"dd\"):u(n,\"weekdaysMin\",\"weekdays\",2)},weekdaysShort:function(e){return e?e.format(\"ddd\"):u(n,\"weekdaysShort\",\"weekdays\",3)},longDateFormat:function(e){return a(n.$locale(),e)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};r.localeData=function(){return s.bind(this)()},t.localeData=function(){var n=i();return{firstDayOfWeek:function(){return n.weekStart||0},weekdays:function(){return t.weekdays()},weekdaysShort:function(){return t.weekdaysShort()},weekdaysMin:function(){return t.weekdaysMin()},months:function(){return t.months()},monthsShort:function(){return t.monthsShort()},longDateFormat:function(e){return a(n,e)},meridiem:n.meridiem,ordinal:n.ordinal}},t.months=function(){return u(i(),\"months\")},t.monthsShort=function(){return u(i(),\"monthsShort\",\"months\",3)},t.weekdays=function(n){return u(i(),\"weekdays\",null,null,n)},t.weekdaysShort=function(n){return u(i(),\"weekdaysShort\",\"weekdays\",3,n)},t.weekdaysMin=function(n){return u(i(),\"weekdaysMin\",\"weekdays\",2,n)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_localizedFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"};return function(t,o,n){var r=o.prototype,i=r.format;n.en.formats=e,r.format=function(t){void 0===t&&(t=\"YYYY-MM-DDTHH:mm:ssZ\");var o=this.$locale().formats,n=function(t,o){return t.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var i=r&&r.toUpperCase();return n||o[r]||e[r]||o[i].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,o){return t||o.slice(1)}))}))}(t,void 0===o?{}:o);return i.call(this,n)}}}));","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_objectSupport=n()}(this,(function(){\"use strict\";return function(t,n,e){var i=n.prototype,r=function(t){var n,r=t.date,o=t.utc,a={};if(!((n=r)instanceof Date)&&!(n instanceof Array)&&n instanceof Object){if(!Object.keys(r).length)return new Date;var u=o?e.utc():e();Object.keys(r).forEach((function(t){var n,e;a[(n=t,e=i.$utils().p(n),\"date\"===e?\"day\":e)]=r[t]}));var d=a.day||(a.year||a.month>=0?1:u.date()),c=a.year||u.year(),f=a.month>=0?a.month:a.year||a.day?0:u.month(),s=a.hour||0,h=a.minute||0,b=a.second||0,y=a.millisecond||0;return o?new Date(Date.UTC(c,f,d,s,h,b,y)):new Date(c,f,d,s,h,b,y)}return r},o=i.parse;i.parse=function(t){t.date=r.bind(this)(t),o.bind(this)(t)};var a=i.set,u=i.add,d=function(t,n,e,i){if(void 0===i&&(i=1),n instanceof Object){var r=Object.keys(n),o=this;return r.forEach((function(e){o=t.bind(o)(n[e]*i,e)})),o}return t.bind(this)(n*i,e)};i.set=function(t,n){return n=void 0===n?t:n,d.bind(this)((function(t,n){return a.bind(this)(n,t)}),n,t)},i.add=function(t,n){return d.bind(this)(u,t,n)},i.subtract=function(t,n){return d.bind(this)(u,t,n,-1)}}}));","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_timezone=e()}(this,(function(){\"use strict\";var t={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(n,i,o){var r,a=function(t,n,i){void 0===i&&(i={});var o=new Date(t),r=function(t,n){void 0===n&&(n={});var i=n.timeZoneName||\"short\",o=t+\"|\"+i,r=e[o];return r||(r=new Intl.DateTimeFormat(\"en-US\",{hour12:!1,timeZone:t,year:\"numeric\",month:\"2-digit\",day:\"2-digit\",hour:\"2-digit\",minute:\"2-digit\",second:\"2-digit\",timeZoneName:i}),e[o]=r),r}(n,i);return r.formatToParts(o)},u=function(e,n){for(var i=a(e,n),r=[],u=0;u<i.length;u+=1){var f=i[u],s=f.type,m=f.value,c=t[s];c>=0&&(r[c]=parseInt(m,10))}var d=r[3],l=24===d?0:d,v=r[0]+\"-\"+r[1]+\"-\"+r[2]+\" \"+l+\":\"+r[4]+\":\"+r[5]+\":000\",h=+e;return(o.utc(v).valueOf()-(h-=h%1e3))/6e4},f=i.prototype;f.tz=function(t,e){void 0===t&&(t=r);var n=this.utcOffset(),i=this.toDate(),a=i.toLocaleString(\"en-US\",{timeZone:t}),u=Math.round((i-new Date(a))/1e3/60),f=o(a).$set(\"millisecond\",this.$ms).utcOffset(15*-Math.round(i.getTimezoneOffset()/15)-u,!0);if(e){var s=f.utcOffset();f=f.add(n-s,\"minute\")}return f.$x.$timezone=t,f},f.offsetName=function(t){var e=this.$x.$timezone||o.tz.guess(),n=a(this.valueOf(),e,{timeZoneName:t}).find((function(t){return\"timezonename\"===t.type.toLowerCase()}));return n&&n.value};var s=f.startOf;f.startOf=function(t,e){if(!this.$x||!this.$x.$timezone)return s.call(this,t,e);var n=o(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\"));return s.call(n,t,e).tz(this.$x.$timezone,!0)},o.tz=function(t,e,n){var i=n&&e,a=n||e||r,f=u(+o(),a);if(\"string\"!=typeof t)return o(t).tz(a);var s=function(t,e,n){var i=t-60*e*1e3,o=u(i,n);if(e===o)return[i,e];var r=u(i-=60*(o-e)*1e3,n);return o===r?[i,o]:[t-60*Math.min(o,r)*1e3,Math.max(o,r)]}(o.utc(t,i).valueOf(),f,a),m=s[0],c=s[1],d=o(m).utcOffset(c);return d.$x.$timezone=a,d},o.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},o.tz.setDefault=function(t){r=t}}}));","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_utc=i()}(this,(function(){\"use strict\";var t=\"minute\",i=/[+-]\\d\\d(?::?\\d\\d)?/g,e=/([+-]|\\d\\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var o=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),o.call(this,t)};var r=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else r.call(this)};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if(\"string\"==typeof s&&(s=function(t){void 0===t&&(t=\"\");var s=t.match(i);if(!s)return null;var f=(\"\"+s[0]).match(e)||[\"-\",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:\"+\"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s,o=this;if(f)return o.$offset=u,o.$u=0===s,o;if(0!==s){var r=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(o=this.local().add(u+r,t)).$offset=u,o.$x.$localOffset=r}else o=this.utc();return o};var h=u.format;u.format=function(t){var i=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return\"s\"===t&&this.$offset?n(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekday=t()}(this,(function(){\"use strict\";return function(e,t){t.prototype.weekday=function(e){var t=this.$locale().weekStart||0,i=this.$W,n=(i<t?i+7:i)-t;return this.$utils().u(e)?n:this.subtract(n,\"day\").add(e,\"day\")}}}));","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/*! @license DOMPurify 2.4.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.4.0/LICENSE */\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 = typeof globalThis !== 'undefined' ? globalThis : global || self, global.DOMPurify = factory());\n})(this, (function () { 'use strict';\n\n 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 }\n\n function _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\n 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\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\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\n return _construct.apply(null, arguments);\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n }\n\n function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n }\n\n 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 }\n\n function _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\n 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 }\n\n var hasOwnProperty = Object.hasOwnProperty,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\n\n var _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\n\n if (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n }\n\n if (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n }\n\n if (!seal) {\n seal = function seal(x) {\n return x;\n };\n }\n\n if (!construct) {\n construct = function construct(Func, args) {\n return _construct(Func, _toConsumableArray(args));\n };\n }\n\n var arrayForEach = unapply(Array.prototype.forEach);\n var arrayPop = unapply(Array.prototype.pop);\n var arrayPush = unapply(Array.prototype.push);\n var stringToLowerCase = unapply(String.prototype.toLowerCase);\n var stringMatch = unapply(String.prototype.match);\n var stringReplace = unapply(String.prototype.replace);\n var stringIndexOf = unapply(String.prototype.indexOf);\n var stringTrim = unapply(String.prototype.trim);\n var regExpTest = unapply(RegExp.prototype.test);\n var typeErrorCreate = unconstruct(TypeError);\n function unapply(func) {\n return function (thisArg) {\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 apply(func, thisArg, args);\n };\n }\n function unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n }\n /* Add properties to a lookup table */\n\n function addToSet(set, array, transformCaseFunc) {\n transformCaseFunc = transformCaseFunc ? transformCaseFunc : stringToLowerCase;\n\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n\n while (l--) {\n var element = array[l];\n\n if (typeof element === 'string') {\n var lcElement = transformCaseFunc(element);\n\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n }\n /* Shallow clone an object */\n\n function clone(object) {\n var newObject = create(null);\n var property;\n\n for (property in object) {\n if (apply(hasOwnProperty, object, [property])) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n }\n /* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\n\n function lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n }\n\n var html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']); // SVG\n\n var svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n var svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']); // List of SVG elements that are disallowed by default.\n // We still need to know them so that we can do namespace\n // checks properly in case one wants to add them to\n // allow-list.\n\n var svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n var mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']); // Similarly to SVG, we want to know all MathML elements,\n // even those that we disallow by default.\n\n var mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n var text = freeze(['#text']);\n\n var html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n var svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n var mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n var xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n var MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n\n var ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\n var DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n\n var ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n\n var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n );\n var IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n var ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n );\n var DOCTYPE_NAME = seal(/^html$/i);\n\n var getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n };\n /**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\n\n\n var _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if (_typeof(trustedTypes) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n } // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n\n\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html) {\n return html;\n },\n createScriptURL: function createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n };\n\n function createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n\n\n DOMPurify.version = '2.4.0';\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === void 0 ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n HTMLFormElement = window.HTMLFormElement,\n DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n var ElementPrototype = Element.prototype;\n var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n var getParentNode = lookupGetter(ElementPrototype, 'parentNode'); // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n\n var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment,\n getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n var documentMode = {};\n\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n var hooks = {};\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n\n DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n var MUSTACHE_EXPR$1 = MUSTACHE_EXPR,\n ERB_EXPR$1 = ERB_EXPR,\n DATA_ATTR$1 = DATA_ATTR,\n ARIA_ATTR$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$1 = IS_ALLOWED_URI;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(svgFilters), _toConsumableArray(mathMl$1), _toConsumableArray(text)));\n /* Allowed attribute names */\n\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(mathMl), _toConsumableArray(xml)));\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n\n var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n\n var FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n\n var FORBID_ATTR = null;\n /* Decide if ARIA attributes are okay */\n\n var ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n\n var ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n\n var SAFE_FOR_TEMPLATES = false;\n /* Decide if document with <html>... should be returned */\n\n var WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n\n var SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n\n var FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n\n var RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n\n var RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n\n var RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n\n var SANITIZE_DOM = true;\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n\n var SANITIZE_NAMED_PROPS = false;\n var SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n /* Keep element content when removing element? */\n\n var KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n\n var IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n\n var USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n\n var FORBID_CONTENTS = null;\n var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n /* Parsing of strict XHTML documents */\n\n var PARSER_MEDIA_TYPE;\n var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n var transformCaseFunc;\n /* Keep a reference to config to pass to hooks */\n\n var CONFIG = null;\n /* Ideally, do not touch anything below this line */\n\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n var isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n\n\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n\n\n if (!cfg || _typeof(cfg) !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n\n\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE; // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? function (x) {\n return x;\n } : stringToLowerCase;\n /* Set configuration parameters */\n\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n\n\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, _toConsumableArray(text));\n ALLOWED_ATTR = [];\n\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n\n\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n\n\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n\n\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n\n\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n } // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n\n\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']); // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n\n var COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n\n var ALL_SVG_TAGS = addToSet({}, svg$1);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n var ALL_MATHML_TAGS = addToSet({}, mathMl$1);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n\n var _checkValidNamespace = function _checkValidNamespace(element) {\n var parent = getParentNode(element); // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: HTML_NAMESPACE,\n tagName: 'template'\n };\n }\n\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via <svg>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n } // The only way to switch from MathML to SVG is via\n // svg if parent is either <annotation-xml> or MathML\n // text integration points.\n\n\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n } // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n\n\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via <math>. If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n } // The only way to switch from SVG to MathML is via\n // <math> and HTML integration points\n\n\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n } // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n\n\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n } // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n\n\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n } // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG or MathML). Return false just in case.\n\n\n return false;\n };\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n\n\n var _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n\n\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name); // We void attribute values for unremovable \"is\"\" attributes\n\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n\n\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc;\n var leadingWhitespace;\n\n if (FORCE_BODY) {\n dirty = '<remove></remove>' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml') {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n }\n\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n\n\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? '' : dirtyPayload;\n } catch (_) {// Syntax error if dirtyPayload is invalid xml\n }\n }\n\n var body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n\n\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n\n\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n\n\n var _isClobbered = function _isClobbered(elm) {\n return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function');\n };\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n\n\n var _isNode = function _isNode(object) {\n return _typeof(Node) === 'object' ? object instanceof Node : object && _typeof(object) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n\n\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n\n\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content;\n /* Execute a hook if present */\n\n _executeHook('beforeSanitizeElements', currentNode, null);\n /* Check if element is clobbered or can clobber */\n\n\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Check if tagname contains Unicode */\n\n\n if (regExpTest(/[\\u0080-\\uFFFF]/, currentNode.nodeName)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Now let's check the element's type and name */\n\n\n var tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n\n\n if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Mitigate a problem with templates inside select */\n\n\n if (tagName === 'select' && regExpTest(/<template/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Remove element if anything forbids its presence */\n\n\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;\n if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) return false;\n }\n /* Keep content except for bad-listed elements */\n\n\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n var parentNode = getParentNode(currentNode) || currentNode.parentNode;\n var childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n var childCount = childNodes.length;\n\n for (var i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n }\n }\n }\n\n _forceRemove(currentNode);\n\n return true;\n }\n /* Check whether element has a valid namespace */\n\n\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n\n return true;\n }\n\n if ((tagName === 'noscript' || tagName === 'noembed') && regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Sanitize element content to be template-safe */\n\n\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n /* Get the element's text content */\n content = currentNode.textContent;\n content = stringReplace(content, MUSTACHE_EXPR$1, ' ');\n content = stringReplace(content, ERB_EXPR$1, ' ');\n\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, {\n element: currentNode.cloneNode()\n });\n currentNode.textContent = content;\n }\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n\n\n var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n return false;\n }\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n\n\n if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$1, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if ( // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n _basicCustomElementTest(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n\n } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if (!value) ; else {\n return false;\n }\n\n return true;\n };\n /**\n * _basicCustomElementCheck\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n * @param {string} tagName name of the tag of the node to sanitize\n */\n\n\n var _basicCustomElementTest = function _basicCustomElementTest(tagName) {\n return tagName.indexOf('-') > 0;\n };\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n\n\n var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n var attr;\n var value;\n var lcName;\n var l;\n /* Execute a hook if present */\n\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n var attributes = currentNode.attributes;\n /* Check if we have attributes; if not we might have a text node */\n\n if (!attributes) {\n return;\n }\n\n var hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR\n };\n l = attributes.length;\n /* Go backwards over all attributes; safely remove bad ones */\n\n while (l--) {\n attr = attributes[l];\n var _attr = attr,\n name = _attr.name,\n namespaceURI = _attr.namespaceURI;\n value = name === 'value' ? attr.value : stringTrim(attr.value);\n lcName = transformCaseFunc(name);\n /* Execute a hook if present */\n\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n\n value = hookEvent.attrValue;\n /* Did the hooks approve of the attribute? */\n\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n /* Remove attribute */\n\n\n _removeAttribute(name, currentNode);\n /* Did the hooks approve of the attribute? */\n\n\n if (!hookEvent.keepAttr) {\n continue;\n }\n /* Work around a security issue in jQuery 3.0 */\n\n\n if (regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n\n continue;\n }\n /* Sanitize attribute content to be template-safe */\n\n\n if (SAFE_FOR_TEMPLATES) {\n value = stringReplace(value, MUSTACHE_EXPR$1, ' ');\n value = stringReplace(value, ERB_EXPR$1, ' ');\n }\n /* Is `value` valid for this attribute? */\n\n\n var lcTag = transformCaseFunc(currentNode.nodeName);\n\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n\n\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode); // Prefix the value and later re-create the attribute with the sanitized value\n\n\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n /* Handle attributes that require Trusted Types */\n\n\n if (trustedTypesPolicy && _typeof(trustedTypes) === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n if (namespaceURI) ; else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML':\n value = trustedTypesPolicy.createHTML(value);\n break;\n\n case 'TrustedScriptURL':\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n }\n }\n /* Handle invalid data-* attribute set by try-catching it */\n\n\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n arrayPop(DOMPurify.removed);\n } catch (_) {}\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n\n\n var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n var shadowNode;\n\n var shadowIterator = _createIterator(fragment);\n /* Execute a hook if present */\n\n\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while (shadowNode = shadowIterator.nextNode()) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n /* Sanitize tags and elements */\n\n\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n /* Deep shadow DOM detected */\n\n\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n /* Check attributes, sanitize if necessary */\n\n\n _sanitizeAttributes(shadowNode);\n }\n /* Execute a hook if present */\n\n\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} configuration object\n */\n // eslint-disable-next-line complexity\n\n\n DOMPurify.sanitize = function (dirty) {\n var cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var body;\n var importedNode;\n var currentNode;\n var oldNode;\n var returnNode;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n\n IS_EMPTY_INPUT = !dirty;\n\n if (IS_EMPTY_INPUT) {\n dirty = '<!-->';\n }\n /* Stringify, in case dirty is an object */\n\n\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n // eslint-disable-next-line no-negated-condition\n if (typeof dirty.toString !== 'function') {\n throw typeErrorCreate('toString is not a function');\n } else {\n dirty = dirty.toString();\n\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n }\n }\n /* Check we can run. Otherwise fall back or ignore */\n\n\n if (!DOMPurify.isSupported) {\n if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {\n if (typeof dirty === 'string') {\n return window.toStaticHTML(dirty);\n }\n\n if (_isNode(dirty)) {\n return window.toStaticHTML(dirty.outerHTML);\n }\n }\n\n return dirty;\n }\n /* Assign config vars */\n\n\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n /* Clean up removed elements */\n\n\n DOMPurify.removed = [];\n /* Check if dirty is correctly typed for IN_PLACE */\n\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n var tagName = transformCaseFunc(dirty.nodeName);\n\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('<!---->');\n importedNode = body.ownerDocument.importNode(dirty, true);\n\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n }\n /* Initialize the document to work on */\n\n\n body = _initDocument(dirty);\n /* Check we have a DOM node from the data */\n\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n /* Remove first element node (ours) if FORCE_BODY is set */\n\n\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n /* Get node iterator */\n\n\n var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n /* Now start iterating over the created document */\n\n\n while (currentNode = nodeIterator.nextNode()) {\n /* Fix IE's strange behavior with manipulated textNodes #89 */\n if (currentNode.nodeType === 3 && currentNode === oldNode) {\n continue;\n }\n /* Sanitize tags and elements */\n\n\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n /* Shadow DOM detected, sanitize it */\n\n\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n /* Check attributes, sanitize if necessary */\n\n\n _sanitizeAttributes(currentNode);\n\n oldNode = currentNode;\n }\n\n oldNode = null;\n /* If we sanitized `dirty` in-place, return it. */\n\n if (IN_PLACE) {\n return dirty;\n }\n /* Return sanitized string or DOM */\n\n\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n /* Serialize doctype if allowed */\n\n if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n }\n /* Sanitize final string template-safe */\n\n\n if (SAFE_FOR_TEMPLATES) {\n serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$1, ' ');\n serializedHTML = stringReplace(serializedHTML, ERB_EXPR$1, ' ');\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n };\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n\n\n DOMPurify.setConfig = function (cfg) {\n _parseConfig(cfg);\n\n SET_CONFIG = true;\n };\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n\n\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {string} tag Tag name of containing element.\n * @param {string} attr Attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n\n\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n var lcTag = transformCaseFunc(tag);\n var lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n\n\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n * @return {Function} removed(popped) hook\n */\n\n\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n return arrayPop(hooks[entryPoint]);\n }\n };\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n\n\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n *\n */\n\n\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n }\n\n var purify = createDOMPurify();\n\n return purify;\n\n}));\n//# sourceMappingURL=purify.js.map\n","import { registerVersion } from '@firebase/app';\nexport * from '@firebase/app';\n\nvar name = \"firebase\";\nvar version = \"9.8.2\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nregisterVersion(name, version, 'app');\n//# sourceMappingURL=index.esm.js.map\n","/******************************************************************************\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 __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 (_) 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: n === \"return\" } : 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","import { ErrorFactory, deepEqual, isBrowserExtension, isMobileCordova, isReactNative, FirebaseError, querystring, getModularInstance, base64Decode, getUA, isIE, createSubscribe, querystringDecode, extractQuerystring, isEmpty } from '@firebase/util';\nimport { SDK_VERSION, _getProvider, _registerComponent, registerVersion, getApp } from '@firebase/app';\nimport { __rest } from 'tslib';\nimport { Logger, LogLevel } from '@firebase/logger';\nimport { Component } from '@firebase/component';\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * An enum of factors that may be used for multifactor authentication.\r\n *\r\n * @public\r\n */\r\nconst FactorId = {\r\n /** Phone as second factor */\r\n PHONE: 'phone'\r\n};\r\n/**\r\n * Enumeration of supported providers.\r\n *\r\n * @public\r\n */\r\nconst ProviderId = {\r\n /** Facebook provider ID */\r\n FACEBOOK: 'facebook.com',\r\n /** GitHub provider ID */\r\n GITHUB: 'github.com',\r\n /** Google provider ID */\r\n GOOGLE: 'google.com',\r\n /** Password provider */\r\n PASSWORD: 'password',\r\n /** Phone provider */\r\n PHONE: 'phone',\r\n /** Twitter provider ID */\r\n TWITTER: 'twitter.com'\r\n};\r\n/**\r\n * Enumeration of supported sign-in methods.\r\n *\r\n * @public\r\n */\r\nconst SignInMethod = {\r\n /** Email link sign in method */\r\n EMAIL_LINK: 'emailLink',\r\n /** Email/password sign in method */\r\n EMAIL_PASSWORD: 'password',\r\n /** Facebook sign in method */\r\n FACEBOOK: 'facebook.com',\r\n /** GitHub sign in method */\r\n GITHUB: 'github.com',\r\n /** Google sign in method */\r\n GOOGLE: 'google.com',\r\n /** Phone sign in method */\r\n PHONE: 'phone',\r\n /** Twitter sign in method */\r\n TWITTER: 'twitter.com'\r\n};\r\n/**\r\n * Enumeration of supported operation types.\r\n *\r\n * @public\r\n */\r\nconst OperationType = {\r\n /** Operation involving linking an additional provider to an already signed-in user. */\r\n LINK: 'link',\r\n /** Operation involving using a provider to reauthenticate an already signed-in user. */\r\n REAUTHENTICATE: 'reauthenticate',\r\n /** Operation involving signing in a user. */\r\n SIGN_IN: 'signIn'\r\n};\r\n/**\r\n * An enumeration of the possible email action types.\r\n *\r\n * @public\r\n */\r\nconst ActionCodeOperation = {\r\n /** The email link sign-in action. */\r\n EMAIL_SIGNIN: 'EMAIL_SIGNIN',\r\n /** The password reset action. */\r\n PASSWORD_RESET: 'PASSWORD_RESET',\r\n /** The email revocation action. */\r\n RECOVER_EMAIL: 'RECOVER_EMAIL',\r\n /** The revert second factor addition email action. */\r\n REVERT_SECOND_FACTOR_ADDITION: 'REVERT_SECOND_FACTOR_ADDITION',\r\n /** The revert second factor addition email action. */\r\n VERIFY_AND_CHANGE_EMAIL: 'VERIFY_AND_CHANGE_EMAIL',\r\n /** The email verification action. */\r\n VERIFY_EMAIL: 'VERIFY_EMAIL'\r\n};\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction _debugErrorMap() {\r\n return {\r\n [\"admin-restricted-operation\" /* ADMIN_ONLY_OPERATION */]: 'This operation is restricted to administrators only.',\r\n [\"argument-error\" /* ARGUMENT_ERROR */]: '',\r\n [\"app-not-authorized\" /* APP_NOT_AUTHORIZED */]: \"This app, identified by the domain where it's hosted, is not \" +\r\n 'authorized to use Firebase Authentication with the provided API key. ' +\r\n 'Review your key configuration in the Google API console.',\r\n [\"app-not-installed\" /* APP_NOT_INSTALLED */]: 'The requested mobile application corresponding to the identifier (' +\r\n 'Android package name or iOS bundle ID) provided is not installed on ' +\r\n 'this device.',\r\n [\"captcha-check-failed\" /* CAPTCHA_CHECK_FAILED */]: 'The reCAPTCHA response token provided is either invalid, expired, ' +\r\n 'already used or the domain associated with it does not match the list ' +\r\n 'of whitelisted domains.',\r\n [\"code-expired\" /* CODE_EXPIRED */]: 'The SMS code has expired. Please re-send the verification code to try ' +\r\n 'again.',\r\n [\"cordova-not-ready\" /* CORDOVA_NOT_READY */]: 'Cordova framework is not ready.',\r\n [\"cors-unsupported\" /* CORS_UNSUPPORTED */]: 'This browser is not supported.',\r\n [\"credential-already-in-use\" /* CREDENTIAL_ALREADY_IN_USE */]: 'This credential is already associated with a different user account.',\r\n [\"custom-token-mismatch\" /* CREDENTIAL_MISMATCH */]: 'The custom token corresponds to a different audience.',\r\n [\"requires-recent-login\" /* CREDENTIAL_TOO_OLD_LOGIN_AGAIN */]: 'This operation is sensitive and requires recent authentication. Log in ' +\r\n 'again before retrying this request.',\r\n [\"dependent-sdk-initialized-before-auth\" /* DEPENDENT_SDK_INIT_BEFORE_AUTH */]: 'Another Firebase SDK was initialized and is trying to use Auth before Auth is ' +\r\n 'initialized. Please be sure to call `initializeAuth` or `getAuth` before ' +\r\n 'starting any other Firebase SDK.',\r\n [\"dynamic-link-not-activated\" /* DYNAMIC_LINK_NOT_ACTIVATED */]: 'Please activate Dynamic Links in the Firebase Console and agree to the terms and ' +\r\n 'conditions.',\r\n [\"email-change-needs-verification\" /* EMAIL_CHANGE_NEEDS_VERIFICATION */]: 'Multi-factor users must always have a verified email.',\r\n [\"email-already-in-use\" /* EMAIL_EXISTS */]: 'The email address is already in use by another account.',\r\n [\"emulator-config-failed\" /* EMULATOR_CONFIG_FAILED */]: 'Auth instance has already been used to make a network call. Auth can ' +\r\n 'no longer be configured to use the emulator. Try calling ' +\r\n '\"connectAuthEmulator()\" sooner.',\r\n [\"expired-action-code\" /* EXPIRED_OOB_CODE */]: 'The action code has expired.',\r\n [\"cancelled-popup-request\" /* EXPIRED_POPUP_REQUEST */]: 'This operation has been cancelled due to another conflicting popup being opened.',\r\n [\"internal-error\" /* INTERNAL_ERROR */]: 'An internal AuthError has occurred.',\r\n [\"invalid-app-credential\" /* INVALID_APP_CREDENTIAL */]: 'The phone verification request contains an invalid application verifier.' +\r\n ' The reCAPTCHA token response is either invalid or expired.',\r\n [\"invalid-app-id\" /* INVALID_APP_ID */]: 'The mobile app identifier is not registed for the current project.',\r\n [\"invalid-user-token\" /* INVALID_AUTH */]: \"This user's credential isn't valid for this project. This can happen \" +\r\n \"if the user's token has been tampered with, or if the user isn't for \" +\r\n 'the project associated with this API key.',\r\n [\"invalid-auth-event\" /* INVALID_AUTH_EVENT */]: 'An internal AuthError has occurred.',\r\n [\"invalid-verification-code\" /* INVALID_CODE */]: 'The SMS verification code used to create the phone auth credential is ' +\r\n 'invalid. Please resend the verification code sms and be sure to use the ' +\r\n 'verification code provided by the user.',\r\n [\"invalid-continue-uri\" /* INVALID_CONTINUE_URI */]: 'The continue URL provided in the request is invalid.',\r\n [\"invalid-cordova-configuration\" /* INVALID_CORDOVA_CONFIGURATION */]: 'The following Cordova plugins must be installed to enable OAuth sign-in: ' +\r\n 'cordova-plugin-buildinfo, cordova-universal-links-plugin, ' +\r\n 'cordova-plugin-browsertab, cordova-plugin-inappbrowser and ' +\r\n 'cordova-plugin-customurlscheme.',\r\n [\"invalid-custom-token\" /* INVALID_CUSTOM_TOKEN */]: 'The custom token format is incorrect. Please check the documentation.',\r\n [\"invalid-dynamic-link-domain\" /* INVALID_DYNAMIC_LINK_DOMAIN */]: 'The provided dynamic link domain is not configured or authorized for the current project.',\r\n [\"invalid-email\" /* INVALID_EMAIL */]: 'The email address is badly formatted.',\r\n [\"invalid-emulator-scheme\" /* INVALID_EMULATOR_SCHEME */]: 'Emulator URL must start with a valid scheme (http:// or https://).',\r\n [\"invalid-api-key\" /* INVALID_API_KEY */]: 'Your API key is invalid, please check you have copied it correctly.',\r\n [\"invalid-cert-hash\" /* INVALID_CERT_HASH */]: 'The SHA-1 certificate hash provided is invalid.',\r\n [\"invalid-credential\" /* INVALID_IDP_RESPONSE */]: 'The supplied auth credential is malformed or has expired.',\r\n [\"invalid-message-payload\" /* INVALID_MESSAGE_PAYLOAD */]: 'The email template corresponding to this action contains invalid characters in its message. ' +\r\n 'Please fix by going to the Auth email templates section in the Firebase Console.',\r\n [\"invalid-multi-factor-session\" /* INVALID_MFA_SESSION */]: 'The request does not contain a valid proof of first factor successful sign-in.',\r\n [\"invalid-oauth-provider\" /* INVALID_OAUTH_PROVIDER */]: 'EmailAuthProvider is not supported for this operation. This operation ' +\r\n 'only supports OAuth providers.',\r\n [\"invalid-oauth-client-id\" /* INVALID_OAUTH_CLIENT_ID */]: 'The OAuth client ID provided is either invalid or does not match the ' +\r\n 'specified API key.',\r\n [\"unauthorized-domain\" /* INVALID_ORIGIN */]: 'This domain is not authorized for OAuth operations for your Firebase ' +\r\n 'project. Edit the list of authorized domains from the Firebase console.',\r\n [\"invalid-action-code\" /* INVALID_OOB_CODE */]: 'The action code is invalid. This can happen if the code is malformed, ' +\r\n 'expired, or has already been used.',\r\n [\"wrong-password\" /* INVALID_PASSWORD */]: 'The password is invalid or the user does not have a password.',\r\n [\"invalid-persistence-type\" /* INVALID_PERSISTENCE */]: 'The specified persistence type is invalid. It can only be local, session or none.',\r\n [\"invalid-phone-number\" /* INVALID_PHONE_NUMBER */]: 'The format of the phone number provided is incorrect. Please enter the ' +\r\n 'phone number in a format that can be parsed into E.164 format. E.164 ' +\r\n 'phone numbers are written in the format [+][country code][subscriber ' +\r\n 'number including area code].',\r\n [\"invalid-provider-id\" /* INVALID_PROVIDER_ID */]: 'The specified provider ID is invalid.',\r\n [\"invalid-recipient-email\" /* INVALID_RECIPIENT_EMAIL */]: 'The email corresponding to this action failed to send as the provided ' +\r\n 'recipient email address is invalid.',\r\n [\"invalid-sender\" /* INVALID_SENDER */]: 'The email template corresponding to this action contains an invalid sender email or name. ' +\r\n 'Please fix by going to the Auth email templates section in the Firebase Console.',\r\n [\"invalid-verification-id\" /* INVALID_SESSION_INFO */]: 'The verification ID used to create the phone auth credential is invalid.',\r\n [\"invalid-tenant-id\" /* INVALID_TENANT_ID */]: \"The Auth instance's tenant ID is invalid.\",\r\n [\"login-blocked\" /* LOGIN_BLOCKED */]: \"Login blocked by user-provided method: {$originalMessage}\",\r\n [\"missing-android-pkg-name\" /* MISSING_ANDROID_PACKAGE_NAME */]: 'An Android Package Name must be provided if the Android App is required to be installed.',\r\n [\"auth-domain-config-required\" /* MISSING_AUTH_DOMAIN */]: 'Be sure to include authDomain when calling firebase.initializeApp(), ' +\r\n 'by following the instructions in the Firebase console.',\r\n [\"missing-app-credential\" /* MISSING_APP_CREDENTIAL */]: 'The phone verification request is missing an application verifier ' +\r\n 'assertion. A reCAPTCHA response token needs to be provided.',\r\n [\"missing-verification-code\" /* MISSING_CODE */]: 'The phone auth credential was created with an empty SMS verification code.',\r\n [\"missing-continue-uri\" /* MISSING_CONTINUE_URI */]: 'A continue URL must be provided in the request.',\r\n [\"missing-iframe-start\" /* MISSING_IFRAME_START */]: 'An internal AuthError has occurred.',\r\n [\"missing-ios-bundle-id\" /* MISSING_IOS_BUNDLE_ID */]: 'An iOS Bundle ID must be provided if an App Store ID is provided.',\r\n [\"missing-or-invalid-nonce\" /* MISSING_OR_INVALID_NONCE */]: 'The request does not contain a valid nonce. This can occur if the ' +\r\n 'SHA-256 hash of the provided raw nonce does not match the hashed nonce ' +\r\n 'in the ID token payload.',\r\n [\"missing-multi-factor-info\" /* MISSING_MFA_INFO */]: 'No second factor identifier is provided.',\r\n [\"missing-multi-factor-session\" /* MISSING_MFA_SESSION */]: 'The request is missing proof of first factor successful sign-in.',\r\n [\"missing-phone-number\" /* MISSING_PHONE_NUMBER */]: 'To send verification codes, provide a phone number for the recipient.',\r\n [\"missing-verification-id\" /* MISSING_SESSION_INFO */]: 'The phone auth credential was created with an empty verification ID.',\r\n [\"app-deleted\" /* MODULE_DESTROYED */]: 'This instance of FirebaseApp has been deleted.',\r\n [\"multi-factor-info-not-found\" /* MFA_INFO_NOT_FOUND */]: 'The user does not have a second factor matching the identifier provided.',\r\n [\"multi-factor-auth-required\" /* MFA_REQUIRED */]: 'Proof of ownership of a second factor is required to complete sign-in.',\r\n [\"account-exists-with-different-credential\" /* NEED_CONFIRMATION */]: 'An account already exists with the same email address but different ' +\r\n 'sign-in credentials. Sign in using a provider associated with this ' +\r\n 'email address.',\r\n [\"network-request-failed\" /* NETWORK_REQUEST_FAILED */]: 'A network AuthError (such as timeout, interrupted connection or unreachable host) has occurred.',\r\n [\"no-auth-event\" /* NO_AUTH_EVENT */]: 'An internal AuthError has occurred.',\r\n [\"no-such-provider\" /* NO_SUCH_PROVIDER */]: 'User was not linked to an account with the given provider.',\r\n [\"null-user\" /* NULL_USER */]: 'A null user object was provided as the argument for an operation which ' +\r\n 'requires a non-null user object.',\r\n [\"operation-not-allowed\" /* OPERATION_NOT_ALLOWED */]: 'The given sign-in provider is disabled for this Firebase project. ' +\r\n 'Enable it in the Firebase console, under the sign-in method tab of the ' +\r\n 'Auth section.',\r\n [\"operation-not-supported-in-this-environment\" /* OPERATION_NOT_SUPPORTED */]: 'This operation is not supported in the environment this application is ' +\r\n 'running on. \"location.protocol\" must be http, https or chrome-extension' +\r\n ' and web storage must be enabled.',\r\n [\"popup-blocked\" /* POPUP_BLOCKED */]: 'Unable to establish a connection with the popup. It may have been blocked by the browser.',\r\n [\"popup-closed-by-user\" /* POPUP_CLOSED_BY_USER */]: 'The popup has been closed by the user before finalizing the operation.',\r\n [\"provider-already-linked\" /* PROVIDER_ALREADY_LINKED */]: 'User can only be linked to one identity for the given provider.',\r\n [\"quota-exceeded\" /* QUOTA_EXCEEDED */]: \"The project's quota for this operation has been exceeded.\",\r\n [\"redirect-cancelled-by-user\" /* REDIRECT_CANCELLED_BY_USER */]: 'The redirect operation has been cancelled by the user before finalizing.',\r\n [\"redirect-operation-pending\" /* REDIRECT_OPERATION_PENDING */]: 'A redirect sign-in operation is already pending.',\r\n [\"rejected-credential\" /* REJECTED_CREDENTIAL */]: 'The request contains malformed or mismatching credentials.',\r\n [\"second-factor-already-in-use\" /* SECOND_FACTOR_ALREADY_ENROLLED */]: 'The second factor is already enrolled on this account.',\r\n [\"maximum-second-factor-count-exceeded\" /* SECOND_FACTOR_LIMIT_EXCEEDED */]: 'The maximum allowed number of second factors on a user has been exceeded.',\r\n [\"tenant-id-mismatch\" /* TENANT_ID_MISMATCH */]: \"The provided tenant ID does not match the Auth instance's tenant ID\",\r\n [\"timeout\" /* TIMEOUT */]: 'The operation has timed out.',\r\n [\"user-token-expired\" /* TOKEN_EXPIRED */]: \"The user's credential is no longer valid. The user must sign in again.\",\r\n [\"too-many-requests\" /* TOO_MANY_ATTEMPTS_TRY_LATER */]: 'We have blocked all requests from this device due to unusual activity. ' +\r\n 'Try again later.',\r\n [\"unauthorized-continue-uri\" /* UNAUTHORIZED_DOMAIN */]: 'The domain of the continue URL is not whitelisted. Please whitelist ' +\r\n 'the domain in the Firebase console.',\r\n [\"unsupported-first-factor\" /* UNSUPPORTED_FIRST_FACTOR */]: 'Enrolling a second factor or signing in with a multi-factor account requires sign-in with a supported first factor.',\r\n [\"unsupported-persistence-type\" /* UNSUPPORTED_PERSISTENCE */]: 'The current environment does not support the specified persistence type.',\r\n [\"unsupported-tenant-operation\" /* UNSUPPORTED_TENANT_OPERATION */]: 'This operation is not supported in a multi-tenant context.',\r\n [\"unverified-email\" /* UNVERIFIED_EMAIL */]: 'The operation requires a verified email.',\r\n [\"user-cancelled\" /* USER_CANCELLED */]: 'The user did not grant your application the permissions it requested.',\r\n [\"user-not-found\" /* USER_DELETED */]: 'There is no user record corresponding to this identifier. The user may ' +\r\n 'have been deleted.',\r\n [\"user-disabled\" /* USER_DISABLED */]: 'The user account has been disabled by an administrator.',\r\n [\"user-mismatch\" /* USER_MISMATCH */]: 'The supplied credentials do not correspond to the previously signed in user.',\r\n [\"user-signed-out\" /* USER_SIGNED_OUT */]: '',\r\n [\"weak-password\" /* WEAK_PASSWORD */]: 'The password must be 6 characters long or more.',\r\n [\"web-storage-unsupported\" /* WEB_STORAGE_UNSUPPORTED */]: 'This browser is not supported or 3rd party cookies and data may be disabled.',\r\n [\"already-initialized\" /* ALREADY_INITIALIZED */]: 'initializeAuth() has already been called with ' +\r\n 'different options. To avoid this error, call initializeAuth() with the ' +\r\n 'same options as when it was originally called, or call getAuth() to return the' +\r\n ' already initialized instance.'\r\n };\r\n}\r\nfunction _prodErrorMap() {\r\n // We will include this one message in the prod error map since by the very\r\n // nature of this error, developers will never be able to see the message\r\n // using the debugErrorMap (which is installed during auth initialization).\r\n return {\r\n [\"dependent-sdk-initialized-before-auth\" /* DEPENDENT_SDK_INIT_BEFORE_AUTH */]: 'Another Firebase SDK was initialized and is trying to use Auth before Auth is ' +\r\n 'initialized. Please be sure to call `initializeAuth` or `getAuth` before ' +\r\n 'starting any other Firebase SDK.'\r\n };\r\n}\r\n/**\r\n * A verbose error map with detailed descriptions for most error codes.\r\n *\r\n * See discussion at {@link AuthErrorMap}\r\n *\r\n * @public\r\n */\r\nconst debugErrorMap = _debugErrorMap;\r\n/**\r\n * A minimal error map with all verbose error messages stripped.\r\n *\r\n * See discussion at {@link AuthErrorMap}\r\n *\r\n * @public\r\n */\r\nconst prodErrorMap = _prodErrorMap;\r\nconst _DEFAULT_AUTH_ERROR_FACTORY = new ErrorFactory('auth', 'Firebase', _prodErrorMap());\r\n/**\r\n * A map of potential `Auth` error codes, for easier comparison with errors\r\n * thrown by the SDK.\r\n *\r\n * @remarks\r\n * Note that you can't tree-shake individual keys\r\n * in the map, so by using the map you might substantially increase your\r\n * bundle size.\r\n *\r\n * @public\r\n */\r\nconst AUTH_ERROR_CODES_MAP_DO_NOT_USE_INTERNALLY = {\r\n ADMIN_ONLY_OPERATION: 'auth/admin-restricted-operation',\r\n ARGUMENT_ERROR: 'auth/argument-error',\r\n APP_NOT_AUTHORIZED: 'auth/app-not-authorized',\r\n APP_NOT_INSTALLED: 'auth/app-not-installed',\r\n CAPTCHA_CHECK_FAILED: 'auth/captcha-check-failed',\r\n CODE_EXPIRED: 'auth/code-expired',\r\n CORDOVA_NOT_READY: 'auth/cordova-not-ready',\r\n CORS_UNSUPPORTED: 'auth/cors-unsupported',\r\n CREDENTIAL_ALREADY_IN_USE: 'auth/credential-already-in-use',\r\n CREDENTIAL_MISMATCH: 'auth/custom-token-mismatch',\r\n CREDENTIAL_TOO_OLD_LOGIN_AGAIN: 'auth/requires-recent-login',\r\n DEPENDENT_SDK_INIT_BEFORE_AUTH: 'auth/dependent-sdk-initialized-before-auth',\r\n DYNAMIC_LINK_NOT_ACTIVATED: 'auth/dynamic-link-not-activated',\r\n EMAIL_CHANGE_NEEDS_VERIFICATION: 'auth/email-change-needs-verification',\r\n EMAIL_EXISTS: 'auth/email-already-in-use',\r\n EMULATOR_CONFIG_FAILED: 'auth/emulator-config-failed',\r\n EXPIRED_OOB_CODE: 'auth/expired-action-code',\r\n EXPIRED_POPUP_REQUEST: 'auth/cancelled-popup-request',\r\n INTERNAL_ERROR: 'auth/internal-error',\r\n INVALID_API_KEY: 'auth/invalid-api-key',\r\n INVALID_APP_CREDENTIAL: 'auth/invalid-app-credential',\r\n INVALID_APP_ID: 'auth/invalid-app-id',\r\n INVALID_AUTH: 'auth/invalid-user-token',\r\n INVALID_AUTH_EVENT: 'auth/invalid-auth-event',\r\n INVALID_CERT_HASH: 'auth/invalid-cert-hash',\r\n INVALID_CODE: 'auth/invalid-verification-code',\r\n INVALID_CONTINUE_URI: 'auth/invalid-continue-uri',\r\n INVALID_CORDOVA_CONFIGURATION: 'auth/invalid-cordova-configuration',\r\n INVALID_CUSTOM_TOKEN: 'auth/invalid-custom-token',\r\n INVALID_DYNAMIC_LINK_DOMAIN: 'auth/invalid-dynamic-link-domain',\r\n INVALID_EMAIL: 'auth/invalid-email',\r\n INVALID_EMULATOR_SCHEME: 'auth/invalid-emulator-scheme',\r\n INVALID_IDP_RESPONSE: 'auth/invalid-credential',\r\n INVALID_MESSAGE_PAYLOAD: 'auth/invalid-message-payload',\r\n INVALID_MFA_SESSION: 'auth/invalid-multi-factor-session',\r\n INVALID_OAUTH_CLIENT_ID: 'auth/invalid-oauth-client-id',\r\n INVALID_OAUTH_PROVIDER: 'auth/invalid-oauth-provider',\r\n INVALID_OOB_CODE: 'auth/invalid-action-code',\r\n INVALID_ORIGIN: 'auth/unauthorized-domain',\r\n INVALID_PASSWORD: 'auth/wrong-password',\r\n INVALID_PERSISTENCE: 'auth/invalid-persistence-type',\r\n INVALID_PHONE_NUMBER: 'auth/invalid-phone-number',\r\n INVALID_PROVIDER_ID: 'auth/invalid-provider-id',\r\n INVALID_RECIPIENT_EMAIL: 'auth/invalid-recipient-email',\r\n INVALID_SENDER: 'auth/invalid-sender',\r\n INVALID_SESSION_INFO: 'auth/invalid-verification-id',\r\n INVALID_TENANT_ID: 'auth/invalid-tenant-id',\r\n MFA_INFO_NOT_FOUND: 'auth/multi-factor-info-not-found',\r\n MFA_REQUIRED: 'auth/multi-factor-auth-required',\r\n MISSING_ANDROID_PACKAGE_NAME: 'auth/missing-android-pkg-name',\r\n MISSING_APP_CREDENTIAL: 'auth/missing-app-credential',\r\n MISSING_AUTH_DOMAIN: 'auth/auth-domain-config-required',\r\n MISSING_CODE: 'auth/missing-verification-code',\r\n MISSING_CONTINUE_URI: 'auth/missing-continue-uri',\r\n MISSING_IFRAME_START: 'auth/missing-iframe-start',\r\n MISSING_IOS_BUNDLE_ID: 'auth/missing-ios-bundle-id',\r\n MISSING_OR_INVALID_NONCE: 'auth/missing-or-invalid-nonce',\r\n MISSING_MFA_INFO: 'auth/missing-multi-factor-info',\r\n MISSING_MFA_SESSION: 'auth/missing-multi-factor-session',\r\n MISSING_PHONE_NUMBER: 'auth/missing-phone-number',\r\n MISSING_SESSION_INFO: 'auth/missing-verification-id',\r\n MODULE_DESTROYED: 'auth/app-deleted',\r\n NEED_CONFIRMATION: 'auth/account-exists-with-different-credential',\r\n NETWORK_REQUEST_FAILED: 'auth/network-request-failed',\r\n NULL_USER: 'auth/null-user',\r\n NO_AUTH_EVENT: 'auth/no-auth-event',\r\n NO_SUCH_PROVIDER: 'auth/no-such-provider',\r\n OPERATION_NOT_ALLOWED: 'auth/operation-not-allowed',\r\n OPERATION_NOT_SUPPORTED: 'auth/operation-not-supported-in-this-environment',\r\n POPUP_BLOCKED: 'auth/popup-blocked',\r\n POPUP_CLOSED_BY_USER: 'auth/popup-closed-by-user',\r\n PROVIDER_ALREADY_LINKED: 'auth/provider-already-linked',\r\n QUOTA_EXCEEDED: 'auth/quota-exceeded',\r\n REDIRECT_CANCELLED_BY_USER: 'auth/redirect-cancelled-by-user',\r\n REDIRECT_OPERATION_PENDING: 'auth/redirect-operation-pending',\r\n REJECTED_CREDENTIAL: 'auth/rejected-credential',\r\n SECOND_FACTOR_ALREADY_ENROLLED: 'auth/second-factor-already-in-use',\r\n SECOND_FACTOR_LIMIT_EXCEEDED: 'auth/maximum-second-factor-count-exceeded',\r\n TENANT_ID_MISMATCH: 'auth/tenant-id-mismatch',\r\n TIMEOUT: 'auth/timeout',\r\n TOKEN_EXPIRED: 'auth/user-token-expired',\r\n TOO_MANY_ATTEMPTS_TRY_LATER: 'auth/too-many-requests',\r\n UNAUTHORIZED_DOMAIN: 'auth/unauthorized-continue-uri',\r\n UNSUPPORTED_FIRST_FACTOR: 'auth/unsupported-first-factor',\r\n UNSUPPORTED_PERSISTENCE: 'auth/unsupported-persistence-type',\r\n UNSUPPORTED_TENANT_OPERATION: 'auth/unsupported-tenant-operation',\r\n UNVERIFIED_EMAIL: 'auth/unverified-email',\r\n USER_CANCELLED: 'auth/user-cancelled',\r\n USER_DELETED: 'auth/user-not-found',\r\n USER_DISABLED: 'auth/user-disabled',\r\n USER_MISMATCH: 'auth/user-mismatch',\r\n USER_SIGNED_OUT: 'auth/user-signed-out',\r\n WEAK_PASSWORD: 'auth/weak-password',\r\n WEB_STORAGE_UNSUPPORTED: 'auth/web-storage-unsupported',\r\n ALREADY_INITIALIZED: 'auth/already-initialized'\r\n};\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst logClient = new Logger('@firebase/auth');\r\nfunction _logError(msg, ...args) {\r\n if (logClient.logLevel <= LogLevel.ERROR) {\r\n logClient.error(`Auth (${SDK_VERSION}): ${msg}`, ...args);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction _fail(authOrCode, ...rest) {\r\n throw createErrorInternal(authOrCode, ...rest);\r\n}\r\nfunction _createError(authOrCode, ...rest) {\r\n return createErrorInternal(authOrCode, ...rest);\r\n}\r\nfunction _errorWithCustomMessage(auth, code, message) {\r\n const errorMap = Object.assign(Object.assign({}, prodErrorMap()), { [code]: message });\r\n const factory = new ErrorFactory('auth', 'Firebase', errorMap);\r\n return factory.create(code, {\r\n appName: auth.name,\r\n });\r\n}\r\nfunction _assertInstanceOf(auth, object, instance) {\r\n const constructorInstance = instance;\r\n if (!(object instanceof constructorInstance)) {\r\n if (constructorInstance.name !== object.constructor.name) {\r\n _fail(auth, \"argument-error\" /* ARGUMENT_ERROR */);\r\n }\r\n throw _errorWithCustomMessage(auth, \"argument-error\" /* ARGUMENT_ERROR */, `Type of ${object.constructor.name} does not match expected instance.` +\r\n `Did you pass a reference from a different Auth SDK?`);\r\n }\r\n}\r\nfunction createErrorInternal(authOrCode, ...rest) {\r\n if (typeof authOrCode !== 'string') {\r\n const code = rest[0];\r\n const fullParams = [...rest.slice(1)];\r\n if (fullParams[0]) {\r\n fullParams[0].appName = authOrCode.name;\r\n }\r\n return authOrCode._errorFactory.create(code, ...fullParams);\r\n }\r\n return _DEFAULT_AUTH_ERROR_FACTORY.create(authOrCode, ...rest);\r\n}\r\nfunction _assert(assertion, authOrCode, ...rest) {\r\n if (!assertion) {\r\n throw createErrorInternal(authOrCode, ...rest);\r\n }\r\n}\r\n/**\r\n * Unconditionally fails, throwing an internal error with the given message.\r\n *\r\n * @param failure type of failure encountered\r\n * @throws Error\r\n */\r\nfunction debugFail(failure) {\r\n // Log the failure in addition to throw an exception, just in case the\r\n // exception is swallowed.\r\n const message = `INTERNAL ASSERTION FAILED: ` + failure;\r\n _logError(message);\r\n // NOTE: We don't use FirebaseError here because these are internal failures\r\n // that cannot be handled by the user. (Also it would create a circular\r\n // dependency between the error and assert modules which doesn't work.)\r\n throw new Error(message);\r\n}\r\n/**\r\n * Fails if the given assertion condition is false, throwing an Error with the\r\n * given message if it did.\r\n *\r\n * @param assertion\r\n * @param message\r\n */\r\nfunction debugAssert(assertion, message) {\r\n if (!assertion) {\r\n debugFail(message);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst instanceCache = new Map();\r\nfunction _getInstance(cls) {\r\n debugAssert(cls instanceof Function, 'Expected a class definition');\r\n let instance = instanceCache.get(cls);\r\n if (instance) {\r\n debugAssert(instance instanceof cls, 'Instance stored in cache mismatched with class');\r\n return instance;\r\n }\r\n instance = new cls();\r\n instanceCache.set(cls, instance);\r\n return instance;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Initializes an {@link Auth} instance with fine-grained control over\r\n * {@link Dependencies}.\r\n *\r\n * @remarks\r\n *\r\n * This function allows more control over the {@link Auth} instance than\r\n * {@link getAuth}. `getAuth` uses platform-specific defaults to supply\r\n * the {@link Dependencies}. In general, `getAuth` is the easiest way to\r\n * initialize Auth and works for most use cases. Use `initializeAuth` if you\r\n * need control over which persistence layer is used, or to minimize bundle\r\n * size if you're not using either `signInWithPopup` or `signInWithRedirect`.\r\n *\r\n * For example, if your app only uses anonymous accounts and you only want\r\n * accounts saved for the current session, initialize `Auth` with:\r\n *\r\n * ```js\r\n * const auth = initializeAuth(app, {\r\n * persistence: browserSessionPersistence,\r\n * popupRedirectResolver: undefined,\r\n * });\r\n * ```\r\n *\r\n * @public\r\n */\r\nfunction initializeAuth(app, deps) {\r\n const provider = _getProvider(app, 'auth');\r\n if (provider.isInitialized()) {\r\n const auth = provider.getImmediate();\r\n const initialOptions = provider.getOptions();\r\n if (deepEqual(initialOptions, deps !== null && deps !== void 0 ? deps : {})) {\r\n return auth;\r\n }\r\n else {\r\n _fail(auth, \"already-initialized\" /* ALREADY_INITIALIZED */);\r\n }\r\n }\r\n const auth = provider.initialize({ options: deps });\r\n return auth;\r\n}\r\nfunction _initializeAuthInstance(auth, deps) {\r\n const persistence = (deps === null || deps === void 0 ? void 0 : deps.persistence) || [];\r\n const hierarchy = (Array.isArray(persistence) ? persistence : [persistence]).map(_getInstance);\r\n if (deps === null || deps === void 0 ? void 0 : deps.errorMap) {\r\n auth._updateErrorMap(deps.errorMap);\r\n }\r\n // This promise is intended to float; auth initialization happens in the\r\n // background, meanwhile the auth object may be used by the app.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n auth._initializeWithPersistence(hierarchy, deps === null || deps === void 0 ? void 0 : deps.popupRedirectResolver);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction _getCurrentUrl() {\r\n var _a;\r\n return (typeof self !== 'undefined' && ((_a = self.location) === null || _a === void 0 ? void 0 : _a.href)) || '';\r\n}\r\nfunction _isHttpOrHttps() {\r\n return _getCurrentScheme() === 'http:' || _getCurrentScheme() === 'https:';\r\n}\r\nfunction _getCurrentScheme() {\r\n var _a;\r\n return (typeof self !== 'undefined' && ((_a = self.location) === null || _a === void 0 ? void 0 : _a.protocol)) || null;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Determine whether the browser is working online\r\n */\r\nfunction _isOnline() {\r\n if (typeof navigator !== 'undefined' &&\r\n navigator &&\r\n 'onLine' in navigator &&\r\n typeof navigator.onLine === 'boolean' &&\r\n // Apply only for traditional web apps and Chrome extensions.\r\n // This is especially true for Cordova apps which have unreliable\r\n // navigator.onLine behavior unless cordova-plugin-network-information is\r\n // installed which overwrites the native navigator.onLine value and\r\n // defines navigator.connection.\r\n (_isHttpOrHttps() || isBrowserExtension() || 'connection' in navigator)) {\r\n return navigator.onLine;\r\n }\r\n // If we can't determine the state, assume it is online.\r\n return true;\r\n}\r\nfunction _getUserLanguage() {\r\n if (typeof navigator === 'undefined') {\r\n return null;\r\n }\r\n const navigatorLanguage = navigator;\r\n return (\r\n // Most reliable, but only supported in Chrome/Firefox.\r\n (navigatorLanguage.languages && navigatorLanguage.languages[0]) ||\r\n // Supported in most browsers, but returns the language of the browser\r\n // UI, not the language set in browser settings.\r\n navigatorLanguage.language ||\r\n // Couldn't determine language.\r\n null);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A structure to help pick between a range of long and short delay durations\r\n * depending on the current environment. In general, the long delay is used for\r\n * mobile environments whereas short delays are used for desktop environments.\r\n */\r\nclass Delay {\r\n constructor(shortDelay, longDelay) {\r\n this.shortDelay = shortDelay;\r\n this.longDelay = longDelay;\r\n // Internal error when improperly initialized.\r\n debugAssert(longDelay > shortDelay, 'Short delay should be less than long delay!');\r\n this.isMobile = isMobileCordova() || isReactNative();\r\n }\r\n get() {\r\n if (!_isOnline()) {\r\n // Pick the shorter timeout.\r\n return Math.min(5000 /* OFFLINE */, this.shortDelay);\r\n }\r\n // If running in a mobile environment, return the long delay, otherwise\r\n // return the short delay.\r\n // This could be improved in the future to dynamically change based on other\r\n // variables instead of just reading the current environment.\r\n return this.isMobile ? this.longDelay : this.shortDelay;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction _emulatorUrl(config, path) {\r\n debugAssert(config.emulator, 'Emulator should always be set here');\r\n const { url } = config.emulator;\r\n if (!path) {\r\n return url;\r\n }\r\n return `${url}${path.startsWith('/') ? path.slice(1) : path}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass FetchProvider {\r\n static initialize(fetchImpl, headersImpl, responseImpl) {\r\n this.fetchImpl = fetchImpl;\r\n if (headersImpl) {\r\n this.headersImpl = headersImpl;\r\n }\r\n if (responseImpl) {\r\n this.responseImpl = responseImpl;\r\n }\r\n }\r\n static fetch() {\r\n if (this.fetchImpl) {\r\n return this.fetchImpl;\r\n }\r\n if (typeof self !== 'undefined' && 'fetch' in self) {\r\n return self.fetch;\r\n }\r\n debugFail('Could not find fetch implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill');\r\n }\r\n static headers() {\r\n if (this.headersImpl) {\r\n return this.headersImpl;\r\n }\r\n if (typeof self !== 'undefined' && 'Headers' in self) {\r\n return self.Headers;\r\n }\r\n debugFail('Could not find Headers implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill');\r\n }\r\n static response() {\r\n if (this.responseImpl) {\r\n return this.responseImpl;\r\n }\r\n if (typeof self !== 'undefined' && 'Response' in self) {\r\n return self.Response;\r\n }\r\n debugFail('Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill');\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Map from errors returned by the server to errors to developer visible errors\r\n */\r\nconst SERVER_ERROR_MAP = {\r\n // Custom token errors.\r\n [\"CREDENTIAL_MISMATCH\" /* CREDENTIAL_MISMATCH */]: \"custom-token-mismatch\" /* CREDENTIAL_MISMATCH */,\r\n // This can only happen if the SDK sends a bad request.\r\n [\"MISSING_CUSTOM_TOKEN\" /* MISSING_CUSTOM_TOKEN */]: \"internal-error\" /* INTERNAL_ERROR */,\r\n // Create Auth URI errors.\r\n [\"INVALID_IDENTIFIER\" /* INVALID_IDENTIFIER */]: \"invalid-email\" /* INVALID_EMAIL */,\r\n // This can only happen if the SDK sends a bad request.\r\n [\"MISSING_CONTINUE_URI\" /* MISSING_CONTINUE_URI */]: \"internal-error\" /* INTERNAL_ERROR */,\r\n // Sign in with email and password errors (some apply to sign up too).\r\n [\"INVALID_PASSWORD\" /* INVALID_PASSWORD */]: \"wrong-password\" /* INVALID_PASSWORD */,\r\n // This can only happen if the SDK sends a bad request.\r\n [\"MISSING_PASSWORD\" /* MISSING_PASSWORD */]: \"internal-error\" /* INTERNAL_ERROR */,\r\n // Sign up with email and password errors.\r\n [\"EMAIL_EXISTS\" /* EMAIL_EXISTS */]: \"email-already-in-use\" /* EMAIL_EXISTS */,\r\n [\"PASSWORD_LOGIN_DISABLED\" /* PASSWORD_LOGIN_DISABLED */]: \"operation-not-allowed\" /* OPERATION_NOT_ALLOWED */,\r\n // Verify assertion for sign in with credential errors:\r\n [\"INVALID_IDP_RESPONSE\" /* INVALID_IDP_RESPONSE */]: \"invalid-credential\" /* INVALID_IDP_RESPONSE */,\r\n [\"INVALID_PENDING_TOKEN\" /* INVALID_PENDING_TOKEN */]: \"invalid-credential\" /* INVALID_IDP_RESPONSE */,\r\n [\"FEDERATED_USER_ID_ALREADY_LINKED\" /* FEDERATED_USER_ID_ALREADY_LINKED */]: \"credential-already-in-use\" /* CREDENTIAL_ALREADY_IN_USE */,\r\n // This can only happen if the SDK sends a bad request.\r\n [\"MISSING_REQ_TYPE\" /* MISSING_REQ_TYPE */]: \"internal-error\" /* INTERNAL_ERROR */,\r\n // Send Password reset email errors:\r\n [\"EMAIL_NOT_FOUND\" /* EMAIL_NOT_FOUND */]: \"user-not-found\" /* USER_DELETED */,\r\n [\"RESET_PASSWORD_EXCEED_LIMIT\" /* RESET_PASSWORD_EXCEED_LIMIT */]: \"too-many-requests\" /* TOO_MANY_ATTEMPTS_TRY_LATER */,\r\n [\"EXPIRED_OOB_CODE\" /* EXPIRED_OOB_CODE */]: \"expired-action-code\" /* EXPIRED_OOB_CODE */,\r\n [\"INVALID_OOB_CODE\" /* INVALID_OOB_CODE */]: \"invalid-action-code\" /* INVALID_OOB_CODE */,\r\n // This can only happen if the SDK sends a bad request.\r\n [\"MISSING_OOB_CODE\" /* MISSING_OOB_CODE */]: \"internal-error\" /* INTERNAL_ERROR */,\r\n // Operations that require ID token in request:\r\n [\"CREDENTIAL_TOO_OLD_LOGIN_AGAIN\" /* CREDENTIAL_TOO_OLD_LOGIN_AGAIN */]: \"requires-recent-login\" /* CREDENTIAL_TOO_OLD_LOGIN_AGAIN */,\r\n [\"INVALID_ID_TOKEN\" /* INVALID_ID_TOKEN */]: \"invalid-user-token\" /* INVALID_AUTH */,\r\n [\"TOKEN_EXPIRED\" /* TOKEN_EXPIRED */]: \"user-token-expired\" /* TOKEN_EXPIRED */,\r\n [\"USER_NOT_FOUND\" /* USER_NOT_FOUND */]: \"user-token-expired\" /* TOKEN_EXPIRED */,\r\n // Other errors.\r\n [\"TOO_MANY_ATTEMPTS_TRY_LATER\" /* TOO_MANY_ATTEMPTS_TRY_LATER */]: \"too-many-requests\" /* TOO_MANY_ATTEMPTS_TRY_LATER */,\r\n // Phone Auth related errors.\r\n [\"INVALID_CODE\" /* INVALID_CODE */]: \"invalid-verification-code\" /* INVALID_CODE */,\r\n [\"INVALID_SESSION_INFO\" /* INVALID_SESSION_INFO */]: \"invalid-verification-id\" /* INVALID_SESSION_INFO */,\r\n [\"INVALID_TEMPORARY_PROOF\" /* INVALID_TEMPORARY_PROOF */]: \"invalid-credential\" /* INVALID_IDP_RESPONSE */,\r\n [\"MISSING_SESSION_INFO\" /* MISSING_SESSION_INFO */]: \"missing-verification-id\" /* MISSING_SESSION_INFO */,\r\n [\"SESSION_EXPIRED\" /* SESSION_EXPIRED */]: \"code-expired\" /* CODE_EXPIRED */,\r\n // Other action code errors when additional settings passed.\r\n // MISSING_CONTINUE_URI is getting mapped to INTERNAL_ERROR above.\r\n // This is OK as this error will be caught by client side validation.\r\n [\"MISSING_ANDROID_PACKAGE_NAME\" /* MISSING_ANDROID_PACKAGE_NAME */]: \"missing-android-pkg-name\" /* MISSING_ANDROID_PACKAGE_NAME */,\r\n [\"UNAUTHORIZED_DOMAIN\" /* UNAUTHORIZED_DOMAIN */]: \"unauthorized-continue-uri\" /* UNAUTHORIZED_DOMAIN */,\r\n // getProjectConfig errors when clientId is passed.\r\n [\"INVALID_OAUTH_CLIENT_ID\" /* INVALID_OAUTH_CLIENT_ID */]: \"invalid-oauth-client-id\" /* INVALID_OAUTH_CLIENT_ID */,\r\n // User actions (sign-up or deletion) disabled errors.\r\n [\"ADMIN_ONLY_OPERATION\" /* ADMIN_ONLY_OPERATION */]: \"admin-restricted-operation\" /* ADMIN_ONLY_OPERATION */,\r\n // Multi factor related errors.\r\n [\"INVALID_MFA_PENDING_CREDENTIAL\" /* INVALID_MFA_PENDING_CREDENTIAL */]: \"invalid-multi-factor-session\" /* INVALID_MFA_SESSION */,\r\n [\"MFA_ENROLLMENT_NOT_FOUND\" /* MFA_ENROLLMENT_NOT_FOUND */]: \"multi-factor-info-not-found\" /* MFA_INFO_NOT_FOUND */,\r\n [\"MISSING_MFA_ENROLLMENT_ID\" /* MISSING_MFA_ENROLLMENT_ID */]: \"missing-multi-factor-info\" /* MISSING_MFA_INFO */,\r\n [\"MISSING_MFA_PENDING_CREDENTIAL\" /* MISSING_MFA_PENDING_CREDENTIAL */]: \"missing-multi-factor-session\" /* MISSING_MFA_SESSION */,\r\n [\"SECOND_FACTOR_EXISTS\" /* SECOND_FACTOR_EXISTS */]: \"second-factor-already-in-use\" /* SECOND_FACTOR_ALREADY_ENROLLED */,\r\n [\"SECOND_FACTOR_LIMIT_EXCEEDED\" /* SECOND_FACTOR_LIMIT_EXCEEDED */]: \"maximum-second-factor-count-exceeded\" /* SECOND_FACTOR_LIMIT_EXCEEDED */,\r\n // Blocking functions related errors.\r\n [\"BLOCKING_FUNCTION_ERROR_RESPONSE\" /* BLOCKING_FUNCTION_ERROR_RESPONSE */]: \"internal-error\" /* INTERNAL_ERROR */,\r\n};\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DEFAULT_API_TIMEOUT_MS = new Delay(30000, 60000);\r\nfunction _addTidIfNecessary(auth, request) {\r\n if (auth.tenantId && !request.tenantId) {\r\n return Object.assign(Object.assign({}, request), { tenantId: auth.tenantId });\r\n }\r\n return request;\r\n}\r\nasync function _performApiRequest(auth, method, path, request, customErrorMap = {}) {\r\n return _performFetchWithErrorHandling(auth, customErrorMap, async () => {\r\n let body = {};\r\n let params = {};\r\n if (request) {\r\n if (method === \"GET\" /* GET */) {\r\n params = request;\r\n }\r\n else {\r\n body = {\r\n body: JSON.stringify(request)\r\n };\r\n }\r\n }\r\n const query = querystring(Object.assign({ key: auth.config.apiKey }, params)).slice(1);\r\n const headers = await auth._getAdditionalHeaders();\r\n headers[\"Content-Type\" /* CONTENT_TYPE */] = 'application/json';\r\n if (auth.languageCode) {\r\n headers[\"X-Firebase-Locale\" /* X_FIREBASE_LOCALE */] = auth.languageCode;\r\n }\r\n return FetchProvider.fetch()(_getFinalTarget(auth, auth.config.apiHost, path, query), Object.assign({ method,\r\n headers, referrerPolicy: 'no-referrer' }, body));\r\n });\r\n}\r\nasync function _performFetchWithErrorHandling(auth, customErrorMap, fetchFn) {\r\n auth._canInitEmulator = false;\r\n const errorMap = Object.assign(Object.assign({}, SERVER_ERROR_MAP), customErrorMap);\r\n try {\r\n const networkTimeout = new NetworkTimeout(auth);\r\n const response = await Promise.race([\r\n fetchFn(),\r\n networkTimeout.promise\r\n ]);\r\n // If we've reached this point, the fetch succeeded and the networkTimeout\r\n // didn't throw; clear the network timeout delay so that Node won't hang\r\n networkTimeout.clearNetworkTimeout();\r\n const json = await response.json();\r\n if ('needConfirmation' in json) {\r\n throw _makeTaggedError(auth, \"account-exists-with-different-credential\" /* NEED_CONFIRMATION */, json);\r\n }\r\n if (response.ok && !('errorMessage' in json)) {\r\n return json;\r\n }\r\n else {\r\n const errorMessage = response.ok ? json.errorMessage : json.error.message;\r\n const [serverErrorCode, serverErrorMessage] = errorMessage.split(' : ');\r\n if (serverErrorCode === \"FEDERATED_USER_ID_ALREADY_LINKED\" /* FEDERATED_USER_ID_ALREADY_LINKED */) {\r\n throw _makeTaggedError(auth, \"credential-already-in-use\" /* CREDENTIAL_ALREADY_IN_USE */, json);\r\n }\r\n else if (serverErrorCode === \"EMAIL_EXISTS\" /* EMAIL_EXISTS */) {\r\n throw _makeTaggedError(auth, \"email-already-in-use\" /* EMAIL_EXISTS */, json);\r\n }\r\n else if (serverErrorCode === \"USER_DISABLED\" /* USER_DISABLED */) {\r\n throw _makeTaggedError(auth, \"user-disabled\" /* USER_DISABLED */, json);\r\n }\r\n const authError = errorMap[serverErrorCode] ||\r\n serverErrorCode\r\n .toLowerCase()\r\n .replace(/[_\\s]+/g, '-');\r\n if (serverErrorMessage) {\r\n throw _errorWithCustomMessage(auth, authError, serverErrorMessage);\r\n }\r\n else {\r\n _fail(auth, authError);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n if (e instanceof FirebaseError) {\r\n throw e;\r\n }\r\n _fail(auth, \"network-request-failed\" /* NETWORK_REQUEST_FAILED */);\r\n }\r\n}\r\nasync function _performSignInRequest(auth, method, path, request, customErrorMap = {}) {\r\n const serverResponse = (await _performApiRequest(auth, method, path, request, customErrorMap));\r\n if ('mfaPendingCredential' in serverResponse) {\r\n _fail(auth, \"multi-factor-auth-required\" /* MFA_REQUIRED */, {\r\n _serverResponse: serverResponse\r\n });\r\n }\r\n return serverResponse;\r\n}\r\nfunction _getFinalTarget(auth, host, path, query) {\r\n const base = `${host}${path}?${query}`;\r\n if (!auth.config.emulator) {\r\n return `${auth.config.apiScheme}://${base}`;\r\n }\r\n return _emulatorUrl(auth.config, base);\r\n}\r\nclass NetworkTimeout {\r\n constructor(auth) {\r\n this.auth = auth;\r\n // Node timers and browser timers are fundamentally incompatible, but we\r\n // don't care about the value here\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.timer = null;\r\n this.promise = new Promise((_, reject) => {\r\n this.timer = setTimeout(() => {\r\n return reject(_createError(this.auth, \"network-request-failed\" /* NETWORK_REQUEST_FAILED */));\r\n }, DEFAULT_API_TIMEOUT_MS.get());\r\n });\r\n }\r\n clearNetworkTimeout() {\r\n clearTimeout(this.timer);\r\n }\r\n}\r\nfunction _makeTaggedError(auth, code, response) {\r\n const errorParams = {\r\n appName: auth.name\r\n };\r\n if (response.email) {\r\n errorParams.email = response.email;\r\n }\r\n if (response.phoneNumber) {\r\n errorParams.phoneNumber = response.phoneNumber;\r\n }\r\n const error = _createError(auth, code, errorParams);\r\n // We know customData is defined on error because errorParams is defined\r\n error.customData._tokenResponse = response;\r\n return error;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function deleteAccount(auth, request) {\r\n return _performApiRequest(auth, \"POST\" /* POST */, \"/v1/accounts:delete\" /* DELETE_ACCOUNT */, request);\r\n}\r\nasync function deleteLinkedAccounts(auth, request) {\r\n return _performApiRequest(auth, \"POST\" /* POST */, \"/v1/accounts:update\" /* SET_ACCOUNT_INFO */, request);\r\n}\r\nasync function getAccountInfo(auth, request) {\r\n return _performApiRequest(auth, \"POST\" /* POST */, \"/v1/accounts:lookup\" /* GET_ACCOUNT_INFO */, request);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction utcTimestampToDateString(utcTimestamp) {\r\n if (!utcTimestamp) {\r\n return undefined;\r\n }\r\n try {\r\n // Convert to date object.\r\n const date = new Date(Number(utcTimestamp));\r\n // Test date is valid.\r\n if (!isNaN(date.getTime())) {\r\n // Convert to UTC date string.\r\n return date.toUTCString();\r\n }\r\n }\r\n catch (e) {\r\n // Do nothing. undefined will be returned.\r\n }\r\n return undefined;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a JSON Web Token (JWT) used to identify the user to a Firebase service.\r\n *\r\n * @remarks\r\n * Returns the current token if it has not expired or if it will not expire in the next five\r\n * minutes. Otherwise, this will refresh the token and return a new one.\r\n *\r\n * @param user - The user.\r\n * @param forceRefresh - Force refresh regardless of token expiration.\r\n *\r\n * @public\r\n */\r\nfunction getIdToken(user, forceRefresh = false) {\r\n return getModularInstance(user).getIdToken(forceRefresh);\r\n}\r\n/**\r\n * Returns a deserialized JSON Web Token (JWT) used to identitfy the user to a Firebase service.\r\n *\r\n * @remarks\r\n * Returns the current token if it has not expired or if it will not expire in the next five\r\n * minutes. Otherwise, this will refresh the token and return a new one.\r\n *\r\n * @param user - The user.\r\n * @param forceRefresh - Force refresh regardless of token expiration.\r\n *\r\n * @public\r\n */\r\nasync function getIdTokenResult(user, forceRefresh = false) {\r\n const userInternal = getModularInstance(user);\r\n const token = await userInternal.getIdToken(forceRefresh);\r\n const claims = _parseToken(token);\r\n _assert(claims && claims.exp && claims.auth_time && claims.iat, userInternal.auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n const firebase = typeof claims.firebase === 'object' ? claims.firebase : undefined;\r\n const signInProvider = firebase === null || firebase === void 0 ? void 0 : firebase['sign_in_provider'];\r\n return {\r\n claims,\r\n token,\r\n authTime: utcTimestampToDateString(secondsStringToMilliseconds(claims.auth_time)),\r\n issuedAtTime: utcTimestampToDateString(secondsStringToMilliseconds(claims.iat)),\r\n expirationTime: utcTimestampToDateString(secondsStringToMilliseconds(claims.exp)),\r\n signInProvider: signInProvider || null,\r\n signInSecondFactor: (firebase === null || firebase === void 0 ? void 0 : firebase['sign_in_second_factor']) || null\r\n };\r\n}\r\nfunction secondsStringToMilliseconds(seconds) {\r\n return Number(seconds) * 1000;\r\n}\r\nfunction _parseToken(token) {\r\n const [algorithm, payload, signature] = token.split('.');\r\n if (algorithm === undefined ||\r\n payload === undefined ||\r\n signature === undefined) {\r\n _logError('JWT malformed, contained fewer than 3 sections');\r\n return null;\r\n }\r\n try {\r\n const decoded = base64Decode(payload);\r\n if (!decoded) {\r\n _logError('Failed to decode base64 JWT payload');\r\n return null;\r\n }\r\n return JSON.parse(decoded);\r\n }\r\n catch (e) {\r\n _logError('Caught error parsing JWT payload as JSON', e);\r\n return null;\r\n }\r\n}\r\n/**\r\n * Extract expiresIn TTL from a token by subtracting the expiration from the issuance.\r\n */\r\nfunction _tokenExpiresIn(token) {\r\n const parsedToken = _parseToken(token);\r\n _assert(parsedToken, \"internal-error\" /* INTERNAL_ERROR */);\r\n _assert(typeof parsedToken.exp !== 'undefined', \"internal-error\" /* INTERNAL_ERROR */);\r\n _assert(typeof parsedToken.iat !== 'undefined', \"internal-error\" /* INTERNAL_ERROR */);\r\n return Number(parsedToken.exp) - Number(parsedToken.iat);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function _logoutIfInvalidated(user, promise, bypassAuthState = false) {\r\n if (bypassAuthState) {\r\n return promise;\r\n }\r\n try {\r\n return await promise;\r\n }\r\n catch (e) {\r\n if (e instanceof FirebaseError && isUserInvalidated(e)) {\r\n if (user.auth.currentUser === user) {\r\n await user.auth.signOut();\r\n }\r\n }\r\n throw e;\r\n }\r\n}\r\nfunction isUserInvalidated({ code }) {\r\n return (code === `auth/${\"user-disabled\" /* USER_DISABLED */}` ||\r\n code === `auth/${\"user-token-expired\" /* TOKEN_EXPIRED */}`);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass ProactiveRefresh {\r\n constructor(user) {\r\n this.user = user;\r\n this.isRunning = false;\r\n // Node timers and browser timers return fundamentally different types.\r\n // We don't actually care what the value is but TS won't accept unknown and\r\n // we can't cast properly in both environments.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.timerId = null;\r\n this.errorBackoff = 30000 /* RETRY_BACKOFF_MIN */;\r\n }\r\n _start() {\r\n if (this.isRunning) {\r\n return;\r\n }\r\n this.isRunning = true;\r\n this.schedule();\r\n }\r\n _stop() {\r\n if (!this.isRunning) {\r\n return;\r\n }\r\n this.isRunning = false;\r\n if (this.timerId !== null) {\r\n clearTimeout(this.timerId);\r\n }\r\n }\r\n getInterval(wasError) {\r\n var _a;\r\n if (wasError) {\r\n const interval = this.errorBackoff;\r\n this.errorBackoff = Math.min(this.errorBackoff * 2, 960000 /* RETRY_BACKOFF_MAX */);\r\n return interval;\r\n }\r\n else {\r\n // Reset the error backoff\r\n this.errorBackoff = 30000 /* RETRY_BACKOFF_MIN */;\r\n const expTime = (_a = this.user.stsTokenManager.expirationTime) !== null && _a !== void 0 ? _a : 0;\r\n const interval = expTime - Date.now() - 300000 /* OFFSET */;\r\n return Math.max(0, interval);\r\n }\r\n }\r\n schedule(wasError = false) {\r\n if (!this.isRunning) {\r\n // Just in case...\r\n return;\r\n }\r\n const interval = this.getInterval(wasError);\r\n this.timerId = setTimeout(async () => {\r\n await this.iteration();\r\n }, interval);\r\n }\r\n async iteration() {\r\n try {\r\n await this.user.getIdToken(true);\r\n }\r\n catch (e) {\r\n // Only retry on network errors\r\n if (e.code === `auth/${\"network-request-failed\" /* NETWORK_REQUEST_FAILED */}`) {\r\n this.schedule(/* wasError */ true);\r\n }\r\n return;\r\n }\r\n this.schedule();\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass UserMetadata {\r\n constructor(createdAt, lastLoginAt) {\r\n this.createdAt = createdAt;\r\n this.lastLoginAt = lastLoginAt;\r\n this._initializeTime();\r\n }\r\n _initializeTime() {\r\n this.lastSignInTime = utcTimestampToDateString(this.lastLoginAt);\r\n this.creationTime = utcTimestampToDateString(this.createdAt);\r\n }\r\n _copy(metadata) {\r\n this.createdAt = metadata.createdAt;\r\n this.lastLoginAt = metadata.lastLoginAt;\r\n this._initializeTime();\r\n }\r\n toJSON() {\r\n return {\r\n createdAt: this.createdAt,\r\n lastLoginAt: this.lastLoginAt\r\n };\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function _reloadWithoutSaving(user) {\r\n var _a;\r\n const auth = user.auth;\r\n const idToken = await user.getIdToken();\r\n const response = await _logoutIfInvalidated(user, getAccountInfo(auth, { idToken }));\r\n _assert(response === null || response === void 0 ? void 0 : response.users.length, auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n const coreAccount = response.users[0];\r\n user._notifyReloadListener(coreAccount);\r\n const newProviderData = ((_a = coreAccount.providerUserInfo) === null || _a === void 0 ? void 0 : _a.length)\r\n ? extractProviderData(coreAccount.providerUserInfo)\r\n : [];\r\n const providerData = mergeProviderData(user.providerData, newProviderData);\r\n // Preserves the non-nonymous status of the stored user, even if no more\r\n // credentials (federated or email/password) are linked to the user. If\r\n // the user was previously anonymous, then use provider data to update.\r\n // On the other hand, if it was not anonymous before, it should never be\r\n // considered anonymous now.\r\n const oldIsAnonymous = user.isAnonymous;\r\n const newIsAnonymous = !(user.email && coreAccount.passwordHash) && !(providerData === null || providerData === void 0 ? void 0 : providerData.length);\r\n const isAnonymous = !oldIsAnonymous ? false : newIsAnonymous;\r\n const updates = {\r\n uid: coreAccount.localId,\r\n displayName: coreAccount.displayName || null,\r\n photoURL: coreAccount.photoUrl || null,\r\n email: coreAccount.email || null,\r\n emailVerified: coreAccount.emailVerified || false,\r\n phoneNumber: coreAccount.phoneNumber || null,\r\n tenantId: coreAccount.tenantId || null,\r\n providerData,\r\n metadata: new UserMetadata(coreAccount.createdAt, coreAccount.lastLoginAt),\r\n isAnonymous\r\n };\r\n Object.assign(user, updates);\r\n}\r\n/**\r\n * Reloads user account data, if signed in.\r\n *\r\n * @param user - The user.\r\n *\r\n * @public\r\n */\r\nasync function reload(user) {\r\n const userInternal = getModularInstance(user);\r\n await _reloadWithoutSaving(userInternal);\r\n // Even though the current user hasn't changed, update\r\n // current user will trigger a persistence update w/ the\r\n // new info.\r\n await userInternal.auth._persistUserIfCurrent(userInternal);\r\n userInternal.auth._notifyListenersIfCurrent(userInternal);\r\n}\r\nfunction mergeProviderData(original, newData) {\r\n const deduped = original.filter(o => !newData.some(n => n.providerId === o.providerId));\r\n return [...deduped, ...newData];\r\n}\r\nfunction extractProviderData(providers) {\r\n return providers.map((_a) => {\r\n var { providerId } = _a, provider = __rest(_a, [\"providerId\"]);\r\n return {\r\n providerId,\r\n uid: provider.rawId || '',\r\n displayName: provider.displayName || null,\r\n email: provider.email || null,\r\n phoneNumber: provider.phoneNumber || null,\r\n photoURL: provider.photoUrl || null\r\n };\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function requestStsToken(auth, refreshToken) {\r\n const response = await _performFetchWithErrorHandling(auth, {}, async () => {\r\n const body = querystring({\r\n 'grant_type': 'refresh_token',\r\n 'refresh_token': refreshToken\r\n }).slice(1);\r\n const { tokenApiHost, apiKey } = auth.config;\r\n const url = _getFinalTarget(auth, tokenApiHost, \"/v1/token\" /* TOKEN */, `key=${apiKey}`);\r\n const headers = await auth._getAdditionalHeaders();\r\n headers[\"Content-Type\" /* CONTENT_TYPE */] = 'application/x-www-form-urlencoded';\r\n return FetchProvider.fetch()(url, {\r\n method: \"POST\" /* POST */,\r\n headers,\r\n body\r\n });\r\n });\r\n // The response comes back in snake_case. Convert to camel:\r\n return {\r\n accessToken: response.access_token,\r\n expiresIn: response.expires_in,\r\n refreshToken: response.refresh_token\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * We need to mark this class as internal explicitly to exclude it in the public typings, because\r\n * it references AuthInternal which has a circular dependency with UserInternal.\r\n *\r\n * @internal\r\n */\r\nclass StsTokenManager {\r\n constructor() {\r\n this.refreshToken = null;\r\n this.accessToken = null;\r\n this.expirationTime = null;\r\n }\r\n get isExpired() {\r\n return (!this.expirationTime ||\r\n Date.now() > this.expirationTime - 30000 /* TOKEN_REFRESH */);\r\n }\r\n updateFromServerResponse(response) {\r\n _assert(response.idToken, \"internal-error\" /* INTERNAL_ERROR */);\r\n _assert(typeof response.idToken !== 'undefined', \"internal-error\" /* INTERNAL_ERROR */);\r\n _assert(typeof response.refreshToken !== 'undefined', \"internal-error\" /* INTERNAL_ERROR */);\r\n const expiresIn = 'expiresIn' in response && typeof response.expiresIn !== 'undefined'\r\n ? Number(response.expiresIn)\r\n : _tokenExpiresIn(response.idToken);\r\n this.updateTokensAndExpiration(response.idToken, response.refreshToken, expiresIn);\r\n }\r\n async getToken(auth, forceRefresh = false) {\r\n _assert(!this.accessToken || this.refreshToken, auth, \"user-token-expired\" /* TOKEN_EXPIRED */);\r\n if (!forceRefresh && this.accessToken && !this.isExpired) {\r\n return this.accessToken;\r\n }\r\n if (this.refreshToken) {\r\n await this.refresh(auth, this.refreshToken);\r\n return this.accessToken;\r\n }\r\n return null;\r\n }\r\n clearRefreshToken() {\r\n this.refreshToken = null;\r\n }\r\n async refresh(auth, oldToken) {\r\n const { accessToken, refreshToken, expiresIn } = await requestStsToken(auth, oldToken);\r\n this.updateTokensAndExpiration(accessToken, refreshToken, Number(expiresIn));\r\n }\r\n updateTokensAndExpiration(accessToken, refreshToken, expiresInSec) {\r\n this.refreshToken = refreshToken || null;\r\n this.accessToken = accessToken || null;\r\n this.expirationTime = Date.now() + expiresInSec * 1000;\r\n }\r\n static fromJSON(appName, object) {\r\n const { refreshToken, accessToken, expirationTime } = object;\r\n const manager = new StsTokenManager();\r\n if (refreshToken) {\r\n _assert(typeof refreshToken === 'string', \"internal-error\" /* INTERNAL_ERROR */, {\r\n appName\r\n });\r\n manager.refreshToken = refreshToken;\r\n }\r\n if (accessToken) {\r\n _assert(typeof accessToken === 'string', \"internal-error\" /* INTERNAL_ERROR */, {\r\n appName\r\n });\r\n manager.accessToken = accessToken;\r\n }\r\n if (expirationTime) {\r\n _assert(typeof expirationTime === 'number', \"internal-error\" /* INTERNAL_ERROR */, {\r\n appName\r\n });\r\n manager.expirationTime = expirationTime;\r\n }\r\n return manager;\r\n }\r\n toJSON() {\r\n return {\r\n refreshToken: this.refreshToken,\r\n accessToken: this.accessToken,\r\n expirationTime: this.expirationTime\r\n };\r\n }\r\n _assign(stsTokenManager) {\r\n this.accessToken = stsTokenManager.accessToken;\r\n this.refreshToken = stsTokenManager.refreshToken;\r\n this.expirationTime = stsTokenManager.expirationTime;\r\n }\r\n _clone() {\r\n return Object.assign(new StsTokenManager(), this.toJSON());\r\n }\r\n _performRefresh() {\r\n return debugFail('not implemented');\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction assertStringOrUndefined(assertion, appName) {\r\n _assert(typeof assertion === 'string' || typeof assertion === 'undefined', \"internal-error\" /* INTERNAL_ERROR */, { appName });\r\n}\r\nclass UserImpl {\r\n constructor(_a) {\r\n var { uid, auth, stsTokenManager } = _a, opt = __rest(_a, [\"uid\", \"auth\", \"stsTokenManager\"]);\r\n // For the user object, provider is always Firebase.\r\n this.providerId = \"firebase\" /* FIREBASE */;\r\n this.proactiveRefresh = new ProactiveRefresh(this);\r\n this.reloadUserInfo = null;\r\n this.reloadListener = null;\r\n this.uid = uid;\r\n this.auth = auth;\r\n this.stsTokenManager = stsTokenManager;\r\n this.accessToken = stsTokenManager.accessToken;\r\n this.displayName = opt.displayName || null;\r\n this.email = opt.email || null;\r\n this.emailVerified = opt.emailVerified || false;\r\n this.phoneNumber = opt.phoneNumber || null;\r\n this.photoURL = opt.photoURL || null;\r\n this.isAnonymous = opt.isAnonymous || false;\r\n this.tenantId = opt.tenantId || null;\r\n this.providerData = opt.providerData ? [...opt.providerData] : [];\r\n this.metadata = new UserMetadata(opt.createdAt || undefined, opt.lastLoginAt || undefined);\r\n }\r\n async getIdToken(forceRefresh) {\r\n const accessToken = await _logoutIfInvalidated(this, this.stsTokenManager.getToken(this.auth, forceRefresh));\r\n _assert(accessToken, this.auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n if (this.accessToken !== accessToken) {\r\n this.accessToken = accessToken;\r\n await this.auth._persistUserIfCurrent(this);\r\n this.auth._notifyListenersIfCurrent(this);\r\n }\r\n return accessToken;\r\n }\r\n getIdTokenResult(forceRefresh) {\r\n return getIdTokenResult(this, forceRefresh);\r\n }\r\n reload() {\r\n return reload(this);\r\n }\r\n _assign(user) {\r\n if (this === user) {\r\n return;\r\n }\r\n _assert(this.uid === user.uid, this.auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n this.displayName = user.displayName;\r\n this.photoURL = user.photoURL;\r\n this.email = user.email;\r\n this.emailVerified = user.emailVerified;\r\n this.phoneNumber = user.phoneNumber;\r\n this.isAnonymous = user.isAnonymous;\r\n this.tenantId = user.tenantId;\r\n this.providerData = user.providerData.map(userInfo => (Object.assign({}, userInfo)));\r\n this.metadata._copy(user.metadata);\r\n this.stsTokenManager._assign(user.stsTokenManager);\r\n }\r\n _clone(auth) {\r\n return new UserImpl(Object.assign(Object.assign({}, this), { auth, stsTokenManager: this.stsTokenManager._clone() }));\r\n }\r\n _onReload(callback) {\r\n // There should only ever be one listener, and that is a single instance of MultiFactorUser\r\n _assert(!this.reloadListener, this.auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n this.reloadListener = callback;\r\n if (this.reloadUserInfo) {\r\n this._notifyReloadListener(this.reloadUserInfo);\r\n this.reloadUserInfo = null;\r\n }\r\n }\r\n _notifyReloadListener(userInfo) {\r\n if (this.reloadListener) {\r\n this.reloadListener(userInfo);\r\n }\r\n else {\r\n // If no listener is subscribed yet, save the result so it's available when they do subscribe\r\n this.reloadUserInfo = userInfo;\r\n }\r\n }\r\n _startProactiveRefresh() {\r\n this.proactiveRefresh._start();\r\n }\r\n _stopProactiveRefresh() {\r\n this.proactiveRefresh._stop();\r\n }\r\n async _updateTokensIfNecessary(response, reload = false) {\r\n let tokensRefreshed = false;\r\n if (response.idToken &&\r\n response.idToken !== this.stsTokenManager.accessToken) {\r\n this.stsTokenManager.updateFromServerResponse(response);\r\n tokensRefreshed = true;\r\n }\r\n if (reload) {\r\n await _reloadWithoutSaving(this);\r\n }\r\n await this.auth._persistUserIfCurrent(this);\r\n if (tokensRefreshed) {\r\n this.auth._notifyListenersIfCurrent(this);\r\n }\r\n }\r\n async delete() {\r\n const idToken = await this.getIdToken();\r\n await _logoutIfInvalidated(this, deleteAccount(this.auth, { idToken }));\r\n this.stsTokenManager.clearRefreshToken();\r\n // TODO: Determine if cancellable-promises are necessary to use in this class so that delete()\r\n // cancels pending actions...\r\n return this.auth.signOut();\r\n }\r\n toJSON() {\r\n return Object.assign(Object.assign({ uid: this.uid, email: this.email || undefined, emailVerified: this.emailVerified, displayName: this.displayName || undefined, isAnonymous: this.isAnonymous, photoURL: this.photoURL || undefined, phoneNumber: this.phoneNumber || undefined, tenantId: this.tenantId || undefined, providerData: this.providerData.map(userInfo => (Object.assign({}, userInfo))), stsTokenManager: this.stsTokenManager.toJSON(), \r\n // Redirect event ID must be maintained in case there is a pending\r\n // redirect event.\r\n _redirectEventId: this._redirectEventId }, this.metadata.toJSON()), { \r\n // Required for compatibility with the legacy SDK (go/firebase-auth-sdk-persistence-parsing):\r\n apiKey: this.auth.config.apiKey, appName: this.auth.name });\r\n }\r\n get refreshToken() {\r\n return this.stsTokenManager.refreshToken || '';\r\n }\r\n static _fromJSON(auth, object) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h;\r\n const displayName = (_a = object.displayName) !== null && _a !== void 0 ? _a : undefined;\r\n const email = (_b = object.email) !== null && _b !== void 0 ? _b : undefined;\r\n const phoneNumber = (_c = object.phoneNumber) !== null && _c !== void 0 ? _c : undefined;\r\n const photoURL = (_d = object.photoURL) !== null && _d !== void 0 ? _d : undefined;\r\n const tenantId = (_e = object.tenantId) !== null && _e !== void 0 ? _e : undefined;\r\n const _redirectEventId = (_f = object._redirectEventId) !== null && _f !== void 0 ? _f : undefined;\r\n const createdAt = (_g = object.createdAt) !== null && _g !== void 0 ? _g : undefined;\r\n const lastLoginAt = (_h = object.lastLoginAt) !== null && _h !== void 0 ? _h : undefined;\r\n const { uid, emailVerified, isAnonymous, providerData, stsTokenManager: plainObjectTokenManager } = object;\r\n _assert(uid && plainObjectTokenManager, auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n const stsTokenManager = StsTokenManager.fromJSON(this.name, plainObjectTokenManager);\r\n _assert(typeof uid === 'string', auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n assertStringOrUndefined(displayName, auth.name);\r\n assertStringOrUndefined(email, auth.name);\r\n _assert(typeof emailVerified === 'boolean', auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n _assert(typeof isAnonymous === 'boolean', auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n assertStringOrUndefined(phoneNumber, auth.name);\r\n assertStringOrUndefined(photoURL, auth.name);\r\n assertStringOrUndefined(tenantId, auth.name);\r\n assertStringOrUndefined(_redirectEventId, auth.name);\r\n assertStringOrUndefined(createdAt, auth.name);\r\n assertStringOrUndefined(lastLoginAt, auth.name);\r\n const user = new UserImpl({\r\n uid,\r\n auth,\r\n email,\r\n emailVerified,\r\n displayName,\r\n isAnonymous,\r\n photoURL,\r\n phoneNumber,\r\n tenantId,\r\n stsTokenManager,\r\n createdAt,\r\n lastLoginAt\r\n });\r\n if (providerData && Array.isArray(providerData)) {\r\n user.providerData = providerData.map(userInfo => (Object.assign({}, userInfo)));\r\n }\r\n if (_redirectEventId) {\r\n user._redirectEventId = _redirectEventId;\r\n }\r\n return user;\r\n }\r\n /**\r\n * Initialize a User from an idToken server response\r\n * @param auth\r\n * @param idTokenResponse\r\n */\r\n static async _fromIdTokenResponse(auth, idTokenResponse, isAnonymous = false) {\r\n const stsTokenManager = new StsTokenManager();\r\n stsTokenManager.updateFromServerResponse(idTokenResponse);\r\n // Initialize the Firebase Auth user.\r\n const user = new UserImpl({\r\n uid: idTokenResponse.localId,\r\n auth,\r\n stsTokenManager,\r\n isAnonymous\r\n });\r\n // Updates the user info and data and resolves with a user instance.\r\n await _reloadWithoutSaving(user);\r\n return user;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass InMemoryPersistence {\r\n constructor() {\r\n this.type = \"NONE\" /* NONE */;\r\n this.storage = {};\r\n }\r\n async _isAvailable() {\r\n return true;\r\n }\r\n async _set(key, value) {\r\n this.storage[key] = value;\r\n }\r\n async _get(key) {\r\n const value = this.storage[key];\r\n return value === undefined ? null : value;\r\n }\r\n async _remove(key) {\r\n delete this.storage[key];\r\n }\r\n _addListener(_key, _listener) {\r\n // Listeners are not supported for in-memory storage since it cannot be shared across windows/workers\r\n return;\r\n }\r\n _removeListener(_key, _listener) {\r\n // Listeners are not supported for in-memory storage since it cannot be shared across windows/workers\r\n return;\r\n }\r\n}\r\nInMemoryPersistence.type = 'NONE';\r\n/**\r\n * An implementation of {@link Persistence} of type 'NONE'.\r\n *\r\n * @public\r\n */\r\nconst inMemoryPersistence = InMemoryPersistence;\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction _persistenceKeyName(key, apiKey, appName) {\r\n return `${\"firebase\" /* PERSISTENCE */}:${key}:${apiKey}:${appName}`;\r\n}\r\nclass PersistenceUserManager {\r\n constructor(persistence, auth, userKey) {\r\n this.persistence = persistence;\r\n this.auth = auth;\r\n this.userKey = userKey;\r\n const { config, name } = this.auth;\r\n this.fullUserKey = _persistenceKeyName(this.userKey, config.apiKey, name);\r\n this.fullPersistenceKey = _persistenceKeyName(\"persistence\" /* PERSISTENCE_USER */, config.apiKey, name);\r\n this.boundEventHandler = auth._onStorageEvent.bind(auth);\r\n this.persistence._addListener(this.fullUserKey, this.boundEventHandler);\r\n }\r\n setCurrentUser(user) {\r\n return this.persistence._set(this.fullUserKey, user.toJSON());\r\n }\r\n async getCurrentUser() {\r\n const blob = await this.persistence._get(this.fullUserKey);\r\n return blob ? UserImpl._fromJSON(this.auth, blob) : null;\r\n }\r\n removeCurrentUser() {\r\n return this.persistence._remove(this.fullUserKey);\r\n }\r\n savePersistenceForRedirect() {\r\n return this.persistence._set(this.fullPersistenceKey, this.persistence.type);\r\n }\r\n async setPersistence(newPersistence) {\r\n if (this.persistence === newPersistence) {\r\n return;\r\n }\r\n const currentUser = await this.getCurrentUser();\r\n await this.removeCurrentUser();\r\n this.persistence = newPersistence;\r\n if (currentUser) {\r\n return this.setCurrentUser(currentUser);\r\n }\r\n }\r\n delete() {\r\n this.persistence._removeListener(this.fullUserKey, this.boundEventHandler);\r\n }\r\n static async create(auth, persistenceHierarchy, userKey = \"authUser\" /* AUTH_USER */) {\r\n if (!persistenceHierarchy.length) {\r\n return new PersistenceUserManager(_getInstance(inMemoryPersistence), auth, userKey);\r\n }\r\n // Eliminate any persistences that are not available\r\n const availablePersistences = (await Promise.all(persistenceHierarchy.map(async (persistence) => {\r\n if (await persistence._isAvailable()) {\r\n return persistence;\r\n }\r\n return undefined;\r\n }))).filter(persistence => persistence);\r\n // Fall back to the first persistence listed, or in memory if none available\r\n let selectedPersistence = availablePersistences[0] ||\r\n _getInstance(inMemoryPersistence);\r\n const key = _persistenceKeyName(userKey, auth.config.apiKey, auth.name);\r\n // Pull out the existing user, setting the chosen persistence to that\r\n // persistence if the user exists.\r\n let userToMigrate = null;\r\n // Note, here we check for a user in _all_ persistences, not just the\r\n // ones deemed available. If we can migrate a user out of a broken\r\n // persistence, we will (but only if that persistence supports migration).\r\n for (const persistence of persistenceHierarchy) {\r\n try {\r\n const blob = await persistence._get(key);\r\n if (blob) {\r\n const user = UserImpl._fromJSON(auth, blob); // throws for unparsable blob (wrong format)\r\n if (persistence !== selectedPersistence) {\r\n userToMigrate = user;\r\n }\r\n selectedPersistence = persistence;\r\n break;\r\n }\r\n }\r\n catch (_a) { }\r\n }\r\n // If we find the user in a persistence that does support migration, use\r\n // that migration path (of only persistences that support migration)\r\n const migrationHierarchy = availablePersistences.filter(p => p._shouldAllowMigration);\r\n // If the persistence does _not_ allow migration, just finish off here\r\n if (!selectedPersistence._shouldAllowMigration ||\r\n !migrationHierarchy.length) {\r\n return new PersistenceUserManager(selectedPersistence, auth, userKey);\r\n }\r\n selectedPersistence = migrationHierarchy[0];\r\n if (userToMigrate) {\r\n // This normally shouldn't throw since chosenPersistence.isAvailable() is true, but if it does\r\n // we'll just let it bubble to surface the error.\r\n await selectedPersistence._set(key, userToMigrate.toJSON());\r\n }\r\n // Attempt to clear the key in other persistences but ignore errors. This helps prevent issues\r\n // such as users getting stuck with a previous account after signing out and refreshing the tab.\r\n await Promise.all(persistenceHierarchy.map(async (persistence) => {\r\n if (persistence !== selectedPersistence) {\r\n try {\r\n await persistence._remove(key);\r\n }\r\n catch (_a) { }\r\n }\r\n }));\r\n return new PersistenceUserManager(selectedPersistence, auth, userKey);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Determine the browser for the purposes of reporting usage to the API\r\n */\r\nfunction _getBrowserName(userAgent) {\r\n const ua = userAgent.toLowerCase();\r\n if (ua.includes('opera/') || ua.includes('opr/') || ua.includes('opios/')) {\r\n return \"Opera\" /* OPERA */;\r\n }\r\n else if (_isIEMobile(ua)) {\r\n // Windows phone IEMobile browser.\r\n return \"IEMobile\" /* IEMOBILE */;\r\n }\r\n else if (ua.includes('msie') || ua.includes('trident/')) {\r\n return \"IE\" /* IE */;\r\n }\r\n else if (ua.includes('edge/')) {\r\n return \"Edge\" /* EDGE */;\r\n }\r\n else if (_isFirefox(ua)) {\r\n return \"Firefox\" /* FIREFOX */;\r\n }\r\n else if (ua.includes('silk/')) {\r\n return \"Silk\" /* SILK */;\r\n }\r\n else if (_isBlackBerry(ua)) {\r\n // Blackberry browser.\r\n return \"Blackberry\" /* BLACKBERRY */;\r\n }\r\n else if (_isWebOS(ua)) {\r\n // WebOS default browser.\r\n return \"Webos\" /* WEBOS */;\r\n }\r\n else if (_isSafari(ua)) {\r\n return \"Safari\" /* SAFARI */;\r\n }\r\n else if ((ua.includes('chrome/') || _isChromeIOS(ua)) &&\r\n !ua.includes('edge/')) {\r\n return \"Chrome\" /* CHROME */;\r\n }\r\n else if (_isAndroid(ua)) {\r\n // Android stock browser.\r\n return \"Android\" /* ANDROID */;\r\n }\r\n else {\r\n // Most modern browsers have name/version at end of user agent string.\r\n const re = /([a-zA-Z\\d\\.]+)\\/[a-zA-Z\\d\\.]*$/;\r\n const matches = userAgent.match(re);\r\n if ((matches === null || matches === void 0 ? void 0 : matches.length) === 2) {\r\n return matches[1];\r\n }\r\n }\r\n return \"Other\" /* OTHER */;\r\n}\r\nfunction _isFirefox(ua = getUA()) {\r\n return /firefox\\//i.test(ua);\r\n}\r\nfunction _isSafari(userAgent = getUA()) {\r\n const ua = userAgent.toLowerCase();\r\n return (ua.includes('safari/') &&\r\n !ua.includes('chrome/') &&\r\n !ua.includes('crios/') &&\r\n !ua.includes('android'));\r\n}\r\nfunction _isChromeIOS(ua = getUA()) {\r\n return /crios\\//i.test(ua);\r\n}\r\nfunction _isIEMobile(ua = getUA()) {\r\n return /iemobile/i.test(ua);\r\n}\r\nfunction _isAndroid(ua = getUA()) {\r\n return /android/i.test(ua);\r\n}\r\nfunction _isBlackBerry(ua = getUA()) {\r\n return /blackberry/i.test(ua);\r\n}\r\nfunction _isWebOS(ua = getUA()) {\r\n return /webos/i.test(ua);\r\n}\r\nfunction _isIOS(ua = getUA()) {\r\n return /iphone|ipad|ipod/i.test(ua);\r\n}\r\nfunction _isIOS7Or8(ua = getUA()) {\r\n return (/(iPad|iPhone|iPod).*OS 7_\\d/i.test(ua) ||\r\n /(iPad|iPhone|iPod).*OS 8_\\d/i.test(ua));\r\n}\r\nfunction _isIOSStandalone(ua = getUA()) {\r\n var _a;\r\n return _isIOS(ua) && !!((_a = window.navigator) === null || _a === void 0 ? void 0 : _a.standalone);\r\n}\r\nfunction _isIE10() {\r\n return isIE() && document.documentMode === 10;\r\n}\r\nfunction _isMobileBrowser(ua = getUA()) {\r\n // TODO: implement getBrowserName equivalent for OS.\r\n return (_isIOS(ua) ||\r\n _isAndroid(ua) ||\r\n _isWebOS(ua) ||\r\n _isBlackBerry(ua) ||\r\n /windows phone/i.test(ua) ||\r\n _isIEMobile(ua));\r\n}\r\nfunction _isIframe() {\r\n try {\r\n // Check that the current window is not the top window.\r\n // If so, return true.\r\n return !!(window && window !== window.top);\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/*\r\n * Determine the SDK version string\r\n */\r\nfunction _getClientVersion(clientPlatform, frameworks = []) {\r\n let reportedPlatform;\r\n switch (clientPlatform) {\r\n case \"Browser\" /* BROWSER */:\r\n // In a browser environment, report the browser name.\r\n reportedPlatform = _getBrowserName(getUA());\r\n break;\r\n case \"Worker\" /* WORKER */:\r\n // Technically a worker runs from a browser but we need to differentiate a\r\n // worker from a browser.\r\n // For example: Chrome-Worker/JsCore/4.9.1/FirebaseCore-web.\r\n reportedPlatform = `${_getBrowserName(getUA())}-${clientPlatform}`;\r\n break;\r\n default:\r\n reportedPlatform = clientPlatform;\r\n }\r\n const reportedFrameworks = frameworks.length\r\n ? frameworks.join(',')\r\n : 'FirebaseCore-web'; /* default value if no other framework is used */\r\n return `${reportedPlatform}/${\"JsCore\" /* CORE */}/${SDK_VERSION}/${reportedFrameworks}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2022 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass AuthMiddlewareQueue {\r\n constructor(auth) {\r\n this.auth = auth;\r\n this.queue = [];\r\n }\r\n pushCallback(callback, onAbort) {\r\n // The callback could be sync or async. Wrap it into a\r\n // function that is always async.\r\n const wrappedCallback = (user) => new Promise((resolve, reject) => {\r\n try {\r\n const result = callback(user);\r\n // Either resolve with existing promise or wrap a non-promise\r\n // return value into a promise.\r\n resolve(result);\r\n }\r\n catch (e) {\r\n // Sync callback throws.\r\n reject(e);\r\n }\r\n });\r\n // Attach the onAbort if present\r\n wrappedCallback.onAbort = onAbort;\r\n this.queue.push(wrappedCallback);\r\n const index = this.queue.length - 1;\r\n return () => {\r\n // Unsubscribe. Replace with no-op. Do not remove from array, or it will disturb\r\n // indexing of other elements.\r\n this.queue[index] = () => Promise.resolve();\r\n };\r\n }\r\n async runMiddleware(nextUser) {\r\n if (this.auth.currentUser === nextUser) {\r\n return;\r\n }\r\n // While running the middleware, build a temporary stack of onAbort\r\n // callbacks to call if one middleware callback rejects.\r\n const onAbortStack = [];\r\n try {\r\n for (const beforeStateCallback of this.queue) {\r\n await beforeStateCallback(nextUser);\r\n // Only push the onAbort if the callback succeeds\r\n if (beforeStateCallback.onAbort) {\r\n onAbortStack.push(beforeStateCallback.onAbort);\r\n }\r\n }\r\n }\r\n catch (e) {\r\n // Run all onAbort, with separate try/catch to ignore any errors and\r\n // continue\r\n onAbortStack.reverse();\r\n for (const onAbort of onAbortStack) {\r\n try {\r\n onAbort();\r\n }\r\n catch (_) { /* swallow error */ }\r\n }\r\n throw this.auth._errorFactory.create(\"login-blocked\" /* LOGIN_BLOCKED */, { originalMessage: e.message });\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass AuthImpl {\r\n constructor(app, heartbeatServiceProvider, config) {\r\n this.app = app;\r\n this.heartbeatServiceProvider = heartbeatServiceProvider;\r\n this.config = config;\r\n this.currentUser = null;\r\n this.emulatorConfig = null;\r\n this.operations = Promise.resolve();\r\n this.authStateSubscription = new Subscription(this);\r\n this.idTokenSubscription = new Subscription(this);\r\n this.beforeStateQueue = new AuthMiddlewareQueue(this);\r\n this.redirectUser = null;\r\n this.isProactiveRefreshEnabled = false;\r\n // Any network calls will set this to true and prevent subsequent emulator\r\n // initialization\r\n this._canInitEmulator = true;\r\n this._isInitialized = false;\r\n this._deleted = false;\r\n this._initializationPromise = null;\r\n this._popupRedirectResolver = null;\r\n this._errorFactory = _DEFAULT_AUTH_ERROR_FACTORY;\r\n // Tracks the last notified UID for state change listeners to prevent\r\n // repeated calls to the callbacks. Undefined means it's never been\r\n // called, whereas null means it's been called with a signed out user\r\n this.lastNotifiedUid = undefined;\r\n this.languageCode = null;\r\n this.tenantId = null;\r\n this.settings = { appVerificationDisabledForTesting: false };\r\n this.frameworks = [];\r\n this.name = app.name;\r\n this.clientVersion = config.sdkClientVersion;\r\n }\r\n _initializeWithPersistence(persistenceHierarchy, popupRedirectResolver) {\r\n if (popupRedirectResolver) {\r\n this._popupRedirectResolver = _getInstance(popupRedirectResolver);\r\n }\r\n // Have to check for app deletion throughout initialization (after each\r\n // promise resolution)\r\n this._initializationPromise = this.queue(async () => {\r\n var _a, _b;\r\n if (this._deleted) {\r\n return;\r\n }\r\n this.persistenceManager = await PersistenceUserManager.create(this, persistenceHierarchy);\r\n if (this._deleted) {\r\n return;\r\n }\r\n // Initialize the resolver early if necessary (only applicable to web:\r\n // this will cause the iframe to load immediately in certain cases)\r\n if ((_a = this._popupRedirectResolver) === null || _a === void 0 ? void 0 : _a._shouldInitProactively) {\r\n // If this fails, don't halt auth loading\r\n try {\r\n await this._popupRedirectResolver._initialize(this);\r\n }\r\n catch (e) { /* Ignore the error */ }\r\n }\r\n await this.initializeCurrentUser(popupRedirectResolver);\r\n this.lastNotifiedUid = ((_b = this.currentUser) === null || _b === void 0 ? void 0 : _b.uid) || null;\r\n if (this._deleted) {\r\n return;\r\n }\r\n this._isInitialized = true;\r\n });\r\n return this._initializationPromise;\r\n }\r\n /**\r\n * If the persistence is changed in another window, the user manager will let us know\r\n */\r\n async _onStorageEvent() {\r\n if (this._deleted) {\r\n return;\r\n }\r\n const user = await this.assertedPersistence.getCurrentUser();\r\n if (!this.currentUser && !user) {\r\n // No change, do nothing (was signed out and remained signed out).\r\n return;\r\n }\r\n // If the same user is to be synchronized.\r\n if (this.currentUser && user && this.currentUser.uid === user.uid) {\r\n // Data update, simply copy data changes.\r\n this._currentUser._assign(user);\r\n // If tokens changed from previous user tokens, this will trigger\r\n // notifyAuthListeners_.\r\n await this.currentUser.getIdToken();\r\n return;\r\n }\r\n // Update current Auth state. Either a new login or logout.\r\n // Skip blocking callbacks, they should not apply to a change in another tab.\r\n await this._updateCurrentUser(user, /* skipBeforeStateCallbacks */ true);\r\n }\r\n async initializeCurrentUser(popupRedirectResolver) {\r\n var _a;\r\n // First check to see if we have a pending redirect event.\r\n const previouslyStoredUser = (await this.assertedPersistence.getCurrentUser());\r\n let futureCurrentUser = previouslyStoredUser;\r\n let needsTocheckMiddleware = false;\r\n if (popupRedirectResolver && this.config.authDomain) {\r\n await this.getOrInitRedirectPersistenceManager();\r\n const redirectUserEventId = (_a = this.redirectUser) === null || _a === void 0 ? void 0 : _a._redirectEventId;\r\n const storedUserEventId = futureCurrentUser === null || futureCurrentUser === void 0 ? void 0 : futureCurrentUser._redirectEventId;\r\n const result = await this.tryRedirectSignIn(popupRedirectResolver);\r\n // If the stored user (i.e. the old \"currentUser\") has a redirectId that\r\n // matches the redirect user, then we want to initially sign in with the\r\n // new user object from result.\r\n // TODO(samgho): More thoroughly test all of this\r\n if ((!redirectUserEventId || redirectUserEventId === storedUserEventId) &&\r\n (result === null || result === void 0 ? void 0 : result.user)) {\r\n futureCurrentUser = result.user;\r\n needsTocheckMiddleware = true;\r\n }\r\n }\r\n // If no user in persistence, there is no current user. Set to null.\r\n if (!futureCurrentUser) {\r\n return this.directlySetCurrentUser(null);\r\n }\r\n if (!futureCurrentUser._redirectEventId) {\r\n // This isn't a redirect link operation, we can reload and bail.\r\n // First though, ensure that we check the middleware is happy.\r\n if (needsTocheckMiddleware) {\r\n try {\r\n await this.beforeStateQueue.runMiddleware(futureCurrentUser);\r\n }\r\n catch (e) {\r\n futureCurrentUser = previouslyStoredUser;\r\n // We know this is available since the bit is only set when the\r\n // resolver is available\r\n this._popupRedirectResolver._overrideRedirectResult(this, () => Promise.reject(e));\r\n }\r\n }\r\n if (futureCurrentUser) {\r\n return this.reloadAndSetCurrentUserOrClear(futureCurrentUser);\r\n }\r\n else {\r\n return this.directlySetCurrentUser(null);\r\n }\r\n }\r\n _assert(this._popupRedirectResolver, this, \"argument-error\" /* ARGUMENT_ERROR */);\r\n await this.getOrInitRedirectPersistenceManager();\r\n // If the redirect user's event ID matches the current user's event ID,\r\n // DO NOT reload the current user, otherwise they'll be cleared from storage.\r\n // This is important for the reauthenticateWithRedirect() flow.\r\n if (this.redirectUser &&\r\n this.redirectUser._redirectEventId === futureCurrentUser._redirectEventId) {\r\n return this.directlySetCurrentUser(futureCurrentUser);\r\n }\r\n return this.reloadAndSetCurrentUserOrClear(futureCurrentUser);\r\n }\r\n async tryRedirectSignIn(redirectResolver) {\r\n // The redirect user needs to be checked (and signed in if available)\r\n // during auth initialization. All of the normal sign in and link/reauth\r\n // flows call back into auth and push things onto the promise queue. We\r\n // need to await the result of the redirect sign in *inside the promise\r\n // queue*. This presents a problem: we run into deadlock. See:\r\n // ┌> [Initialization] ─────â”\r\n // ┌> [<other queue tasks>] │\r\n // └─ [getRedirectResult] <─┘\r\n // where [] are tasks on the queue and arrows denote awaits\r\n // Initialization will never complete because it's waiting on something\r\n // that's waiting for initialization to complete!\r\n //\r\n // Instead, this method calls getRedirectResult() (stored in\r\n // _completeRedirectFn) with an optional parameter that instructs all of\r\n // the underlying auth operations to skip anything that mutates auth state.\r\n let result = null;\r\n try {\r\n // We know this._popupRedirectResolver is set since redirectResolver\r\n // is passed in. The _completeRedirectFn expects the unwrapped extern.\r\n result = await this._popupRedirectResolver._completeRedirectFn(this, redirectResolver, true);\r\n }\r\n catch (e) {\r\n // Swallow any errors here; the code can retrieve them in\r\n // getRedirectResult().\r\n await this._setRedirectUser(null);\r\n }\r\n return result;\r\n }\r\n async reloadAndSetCurrentUserOrClear(user) {\r\n try {\r\n await _reloadWithoutSaving(user);\r\n }\r\n catch (e) {\r\n if (e.code !== `auth/${\"network-request-failed\" /* NETWORK_REQUEST_FAILED */}`) {\r\n // Something's wrong with the user's token. Log them out and remove\r\n // them from storage\r\n return this.directlySetCurrentUser(null);\r\n }\r\n }\r\n return this.directlySetCurrentUser(user);\r\n }\r\n useDeviceLanguage() {\r\n this.languageCode = _getUserLanguage();\r\n }\r\n async _delete() {\r\n this._deleted = true;\r\n }\r\n async updateCurrentUser(userExtern) {\r\n // The public updateCurrentUser method needs to make a copy of the user,\r\n // and also check that the project matches\r\n const user = userExtern\r\n ? getModularInstance(userExtern)\r\n : null;\r\n if (user) {\r\n _assert(user.auth.config.apiKey === this.config.apiKey, this, \"invalid-user-token\" /* INVALID_AUTH */);\r\n }\r\n return this._updateCurrentUser(user && user._clone(this));\r\n }\r\n async _updateCurrentUser(user, skipBeforeStateCallbacks = false) {\r\n if (this._deleted) {\r\n return;\r\n }\r\n if (user) {\r\n _assert(this.tenantId === user.tenantId, this, \"tenant-id-mismatch\" /* TENANT_ID_MISMATCH */);\r\n }\r\n if (!skipBeforeStateCallbacks) {\r\n await this.beforeStateQueue.runMiddleware(user);\r\n }\r\n return this.queue(async () => {\r\n await this.directlySetCurrentUser(user);\r\n this.notifyAuthListeners();\r\n });\r\n }\r\n async signOut() {\r\n // Run first, to block _setRedirectUser() if any callbacks fail.\r\n await this.beforeStateQueue.runMiddleware(null);\r\n // Clear the redirect user when signOut is called\r\n if (this.redirectPersistenceManager || this._popupRedirectResolver) {\r\n await this._setRedirectUser(null);\r\n }\r\n // Prevent callbacks from being called again in _updateCurrentUser, as\r\n // they were already called in the first line.\r\n return this._updateCurrentUser(null, /* skipBeforeStateCallbacks */ true);\r\n }\r\n setPersistence(persistence) {\r\n return this.queue(async () => {\r\n await this.assertedPersistence.setPersistence(_getInstance(persistence));\r\n });\r\n }\r\n _getPersistence() {\r\n return this.assertedPersistence.persistence.type;\r\n }\r\n _updateErrorMap(errorMap) {\r\n this._errorFactory = new ErrorFactory('auth', 'Firebase', errorMap());\r\n }\r\n onAuthStateChanged(nextOrObserver, error, completed) {\r\n return this.registerStateListener(this.authStateSubscription, nextOrObserver, error, completed);\r\n }\r\n beforeAuthStateChanged(callback, onAbort) {\r\n return this.beforeStateQueue.pushCallback(callback, onAbort);\r\n }\r\n onIdTokenChanged(nextOrObserver, error, completed) {\r\n return this.registerStateListener(this.idTokenSubscription, nextOrObserver, error, completed);\r\n }\r\n toJSON() {\r\n var _a;\r\n return {\r\n apiKey: this.config.apiKey,\r\n authDomain: this.config.authDomain,\r\n appName: this.name,\r\n currentUser: (_a = this._currentUser) === null || _a === void 0 ? void 0 : _a.toJSON()\r\n };\r\n }\r\n async _setRedirectUser(user, popupRedirectResolver) {\r\n const redirectManager = await this.getOrInitRedirectPersistenceManager(popupRedirectResolver);\r\n return user === null\r\n ? redirectManager.removeCurrentUser()\r\n : redirectManager.setCurrentUser(user);\r\n }\r\n async getOrInitRedirectPersistenceManager(popupRedirectResolver) {\r\n if (!this.redirectPersistenceManager) {\r\n const resolver = (popupRedirectResolver && _getInstance(popupRedirectResolver)) ||\r\n this._popupRedirectResolver;\r\n _assert(resolver, this, \"argument-error\" /* ARGUMENT_ERROR */);\r\n this.redirectPersistenceManager = await PersistenceUserManager.create(this, [_getInstance(resolver._redirectPersistence)], \"redirectUser\" /* REDIRECT_USER */);\r\n this.redirectUser =\r\n await this.redirectPersistenceManager.getCurrentUser();\r\n }\r\n return this.redirectPersistenceManager;\r\n }\r\n async _redirectUserForId(id) {\r\n var _a, _b;\r\n // Make sure we've cleared any pending persistence actions if we're not in\r\n // the initializer\r\n if (this._isInitialized) {\r\n await this.queue(async () => { });\r\n }\r\n if (((_a = this._currentUser) === null || _a === void 0 ? void 0 : _a._redirectEventId) === id) {\r\n return this._currentUser;\r\n }\r\n if (((_b = this.redirectUser) === null || _b === void 0 ? void 0 : _b._redirectEventId) === id) {\r\n return this.redirectUser;\r\n }\r\n return null;\r\n }\r\n async _persistUserIfCurrent(user) {\r\n if (user === this.currentUser) {\r\n return this.queue(async () => this.directlySetCurrentUser(user));\r\n }\r\n }\r\n /** Notifies listeners only if the user is current */\r\n _notifyListenersIfCurrent(user) {\r\n if (user === this.currentUser) {\r\n this.notifyAuthListeners();\r\n }\r\n }\r\n _key() {\r\n return `${this.config.authDomain}:${this.config.apiKey}:${this.name}`;\r\n }\r\n _startProactiveRefresh() {\r\n this.isProactiveRefreshEnabled = true;\r\n if (this.currentUser) {\r\n this._currentUser._startProactiveRefresh();\r\n }\r\n }\r\n _stopProactiveRefresh() {\r\n this.isProactiveRefreshEnabled = false;\r\n if (this.currentUser) {\r\n this._currentUser._stopProactiveRefresh();\r\n }\r\n }\r\n /** Returns the current user cast as the internal type */\r\n get _currentUser() {\r\n return this.currentUser;\r\n }\r\n notifyAuthListeners() {\r\n var _a, _b;\r\n if (!this._isInitialized) {\r\n return;\r\n }\r\n this.idTokenSubscription.next(this.currentUser);\r\n const currentUid = (_b = (_a = this.currentUser) === null || _a === void 0 ? void 0 : _a.uid) !== null && _b !== void 0 ? _b : null;\r\n if (this.lastNotifiedUid !== currentUid) {\r\n this.lastNotifiedUid = currentUid;\r\n this.authStateSubscription.next(this.currentUser);\r\n }\r\n }\r\n registerStateListener(subscription, nextOrObserver, error, completed) {\r\n if (this._deleted) {\r\n return () => { };\r\n }\r\n const cb = typeof nextOrObserver === 'function'\r\n ? nextOrObserver\r\n : nextOrObserver.next.bind(nextOrObserver);\r\n const promise = this._isInitialized\r\n ? Promise.resolve()\r\n : this._initializationPromise;\r\n _assert(promise, this, \"internal-error\" /* INTERNAL_ERROR */);\r\n // The callback needs to be called asynchronously per the spec.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n promise.then(() => cb(this.currentUser));\r\n if (typeof nextOrObserver === 'function') {\r\n return subscription.addObserver(nextOrObserver, error, completed);\r\n }\r\n else {\r\n return subscription.addObserver(nextOrObserver);\r\n }\r\n }\r\n /**\r\n * Unprotected (from race conditions) method to set the current user. This\r\n * should only be called from within a queued callback. This is necessary\r\n * because the queue shouldn't rely on another queued callback.\r\n */\r\n async directlySetCurrentUser(user) {\r\n if (this.currentUser && this.currentUser !== user) {\r\n this._currentUser._stopProactiveRefresh();\r\n if (user && this.isProactiveRefreshEnabled) {\r\n user._startProactiveRefresh();\r\n }\r\n }\r\n this.currentUser = user;\r\n if (user) {\r\n await this.assertedPersistence.setCurrentUser(user);\r\n }\r\n else {\r\n await this.assertedPersistence.removeCurrentUser();\r\n }\r\n }\r\n queue(action) {\r\n // In case something errors, the callback still should be called in order\r\n // to keep the promise chain alive\r\n this.operations = this.operations.then(action, action);\r\n return this.operations;\r\n }\r\n get assertedPersistence() {\r\n _assert(this.persistenceManager, this, \"internal-error\" /* INTERNAL_ERROR */);\r\n return this.persistenceManager;\r\n }\r\n _logFramework(framework) {\r\n if (!framework || this.frameworks.includes(framework)) {\r\n return;\r\n }\r\n this.frameworks.push(framework);\r\n // Sort alphabetically so that \"FirebaseCore-web,FirebaseUI-web\" and\r\n // \"FirebaseUI-web,FirebaseCore-web\" aren't viewed as different.\r\n this.frameworks.sort();\r\n this.clientVersion = _getClientVersion(this.config.clientPlatform, this._getFrameworks());\r\n }\r\n _getFrameworks() {\r\n return this.frameworks;\r\n }\r\n async _getAdditionalHeaders() {\r\n var _a;\r\n // Additional headers on every request\r\n const headers = {\r\n [\"X-Client-Version\" /* X_CLIENT_VERSION */]: this.clientVersion,\r\n };\r\n if (this.app.options.appId) {\r\n headers[\"X-Firebase-gmpid\" /* X_FIREBASE_GMPID */] = this.app.options.appId;\r\n }\r\n // If the heartbeat service exists, add the heartbeat string\r\n const heartbeatsHeader = await ((_a = this.heartbeatServiceProvider.getImmediate({\r\n optional: true,\r\n })) === null || _a === void 0 ? void 0 : _a.getHeartbeatsHeader());\r\n if (heartbeatsHeader) {\r\n headers[\"X-Firebase-Client\" /* X_FIREBASE_CLIENT */] = heartbeatsHeader;\r\n }\r\n return headers;\r\n }\r\n}\r\n/**\r\n * Method to be used to cast down to our private implmentation of Auth.\r\n * It will also handle unwrapping from the compat type if necessary\r\n *\r\n * @param auth Auth object passed in from developer\r\n */\r\nfunction _castAuth(auth) {\r\n return getModularInstance(auth);\r\n}\r\n/** Helper class to wrap subscriber logic */\r\nclass Subscription {\r\n constructor(auth) {\r\n this.auth = auth;\r\n this.observer = null;\r\n this.addObserver = createSubscribe(observer => (this.observer = observer));\r\n }\r\n get next() {\r\n _assert(this.observer, this.auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n return this.observer.next.bind(this.observer);\r\n }\r\n}\n\n/**\r\n * Changes the {@link Auth} instance to communicate with the Firebase Auth Emulator, instead of production\r\n * Firebase Auth services.\r\n *\r\n * @remarks\r\n * This must be called synchronously immediately following the first call to\r\n * {@link initializeAuth}. Do not use with production credentials as emulator\r\n * traffic is not encrypted.\r\n *\r\n *\r\n * @example\r\n * ```javascript\r\n * connectAuthEmulator(auth, 'http://127.0.0.1:9099', { disableWarnings: true });\r\n * ```\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param url - The URL at which the emulator is running (eg, 'http://localhost:9099').\r\n * @param options - Optional. `options.disableWarnings` defaults to `false`. Set it to\r\n * `true` to disable the warning banner attached to the DOM.\r\n *\r\n * @public\r\n */\r\nfunction connectAuthEmulator(auth, url, options) {\r\n const authInternal = _castAuth(auth);\r\n _assert(authInternal._canInitEmulator, authInternal, \"emulator-config-failed\" /* EMULATOR_CONFIG_FAILED */);\r\n _assert(/^https?:\\/\\//.test(url), authInternal, \"invalid-emulator-scheme\" /* INVALID_EMULATOR_SCHEME */);\r\n const disableWarnings = !!(options === null || options === void 0 ? void 0 : options.disableWarnings);\r\n const protocol = extractProtocol(url);\r\n const { host, port } = extractHostAndPort(url);\r\n const portStr = port === null ? '' : `:${port}`;\r\n // Always replace path with \"/\" (even if input url had no path at all, or had a different one).\r\n authInternal.config.emulator = { url: `${protocol}//${host}${portStr}/` };\r\n authInternal.settings.appVerificationDisabledForTesting = true;\r\n authInternal.emulatorConfig = Object.freeze({\r\n host,\r\n port,\r\n protocol: protocol.replace(':', ''),\r\n options: Object.freeze({ disableWarnings })\r\n });\r\n if (!disableWarnings) {\r\n emitEmulatorWarning();\r\n }\r\n}\r\nfunction extractProtocol(url) {\r\n const protocolEnd = url.indexOf(':');\r\n return protocolEnd < 0 ? '' : url.substr(0, protocolEnd + 1);\r\n}\r\nfunction extractHostAndPort(url) {\r\n const protocol = extractProtocol(url);\r\n const authority = /(\\/\\/)?([^?#/]+)/.exec(url.substr(protocol.length)); // Between // and /, ? or #.\r\n if (!authority) {\r\n return { host: '', port: null };\r\n }\r\n const hostAndPort = authority[2].split('@').pop() || ''; // Strip out \"username:password@\".\r\n const bracketedIPv6 = /^(\\[[^\\]]+\\])(:|$)/.exec(hostAndPort);\r\n if (bracketedIPv6) {\r\n const host = bracketedIPv6[1];\r\n return { host, port: parsePort(hostAndPort.substr(host.length + 1)) };\r\n }\r\n else {\r\n const [host, port] = hostAndPort.split(':');\r\n return { host, port: parsePort(port) };\r\n }\r\n}\r\nfunction parsePort(portStr) {\r\n if (!portStr) {\r\n return null;\r\n }\r\n const port = Number(portStr);\r\n if (isNaN(port)) {\r\n return null;\r\n }\r\n return port;\r\n}\r\nfunction emitEmulatorWarning() {\r\n function attachBanner() {\r\n const el = document.createElement('p');\r\n const sty = el.style;\r\n el.innerText =\r\n 'Running in emulator mode. Do not use with production credentials.';\r\n sty.position = 'fixed';\r\n sty.width = '100%';\r\n sty.backgroundColor = '#ffffff';\r\n sty.border = '.1em solid #000000';\r\n sty.color = '#b50000';\r\n sty.bottom = '0px';\r\n sty.left = '0px';\r\n sty.margin = '0px';\r\n sty.zIndex = '10000';\r\n sty.textAlign = 'center';\r\n el.classList.add('firebase-emulator-warning');\r\n document.body.appendChild(el);\r\n }\r\n if (typeof console !== 'undefined' && typeof console.info === 'function') {\r\n console.info('WARNING: You are using the Auth Emulator,' +\r\n ' which is intended for local testing only. Do not use with' +\r\n ' production credentials.');\r\n }\r\n if (typeof window !== 'undefined' &&\r\n typeof document !== 'undefined') {\r\n if (document.readyState === 'loading') {\r\n window.addEventListener('DOMContentLoaded', attachBanner);\r\n }\r\n else {\r\n attachBanner();\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Interface that represents the credentials returned by an {@link AuthProvider}.\r\n *\r\n * @remarks\r\n * Implementations specify the details about each auth provider's credential requirements.\r\n *\r\n * @public\r\n */\r\nclass AuthCredential {\r\n /** @internal */\r\n constructor(\r\n /**\r\n * The authentication provider ID for the credential.\r\n *\r\n * @remarks\r\n * For example, 'facebook.com', or 'google.com'.\r\n */\r\n providerId, \r\n /**\r\n * The authentication sign in method for the credential.\r\n *\r\n * @remarks\r\n * For example, {@link SignInMethod}.EMAIL_PASSWORD, or\r\n * {@link SignInMethod}.EMAIL_LINK. This corresponds to the sign-in method\r\n * identifier as returned in {@link fetchSignInMethodsForEmail}.\r\n */\r\n signInMethod) {\r\n this.providerId = providerId;\r\n this.signInMethod = signInMethod;\r\n }\r\n /**\r\n * Returns a JSON-serializable representation of this object.\r\n *\r\n * @returns a JSON-serializable representation of this object.\r\n */\r\n toJSON() {\r\n return debugFail('not implemented');\r\n }\r\n /** @internal */\r\n _getIdTokenResponse(_auth) {\r\n return debugFail('not implemented');\r\n }\r\n /** @internal */\r\n _linkToIdToken(_auth, _idToken) {\r\n return debugFail('not implemented');\r\n }\r\n /** @internal */\r\n _getReauthenticationResolver(_auth) {\r\n return debugFail('not implemented');\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function resetPassword(auth, request) {\r\n return _performApiRequest(auth, \"POST\" /* POST */, \"/v1/accounts:resetPassword\" /* RESET_PASSWORD */, _addTidIfNecessary(auth, request));\r\n}\r\nasync function updateEmailPassword(auth, request) {\r\n return _performApiRequest(auth, \"POST\" /* POST */, \"/v1/accounts:update\" /* SET_ACCOUNT_INFO */, request);\r\n}\r\nasync function applyActionCode$1(auth, request) {\r\n return _performApiRequest(auth, \"POST\" /* POST */, \"/v1/accounts:update\" /* SET_ACCOUNT_INFO */, _addTidIfNecessary(auth, request));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function signInWithPassword(auth, request) {\r\n return _performSignInRequest(auth, \"POST\" /* POST */, \"/v1/accounts:signInWithPassword\" /* SIGN_IN_WITH_PASSWORD */, _addTidIfNecessary(auth, request));\r\n}\r\nasync function sendOobCode(auth, request) {\r\n return _performApiRequest(auth, \"POST\" /* POST */, \"/v1/accounts:sendOobCode\" /* SEND_OOB_CODE */, _addTidIfNecessary(auth, request));\r\n}\r\nasync function sendEmailVerification$1(auth, request) {\r\n return sendOobCode(auth, request);\r\n}\r\nasync function sendPasswordResetEmail$1(auth, request) {\r\n return sendOobCode(auth, request);\r\n}\r\nasync function sendSignInLinkToEmail$1(auth, request) {\r\n return sendOobCode(auth, request);\r\n}\r\nasync function verifyAndChangeEmail(auth, request) {\r\n return sendOobCode(auth, request);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function signInWithEmailLink$1(auth, request) {\r\n return _performSignInRequest(auth, \"POST\" /* POST */, \"/v1/accounts:signInWithEmailLink\" /* SIGN_IN_WITH_EMAIL_LINK */, _addTidIfNecessary(auth, request));\r\n}\r\nasync function signInWithEmailLinkForLinking(auth, request) {\r\n return _performSignInRequest(auth, \"POST\" /* POST */, \"/v1/accounts:signInWithEmailLink\" /* SIGN_IN_WITH_EMAIL_LINK */, _addTidIfNecessary(auth, request));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Interface that represents the credentials returned by {@link EmailAuthProvider} for\r\n * {@link ProviderId}.PASSWORD\r\n *\r\n * @remarks\r\n * Covers both {@link SignInMethod}.EMAIL_PASSWORD and\r\n * {@link SignInMethod}.EMAIL_LINK.\r\n *\r\n * @public\r\n */\r\nclass EmailAuthCredential extends AuthCredential {\r\n /** @internal */\r\n constructor(\r\n /** @internal */\r\n _email, \r\n /** @internal */\r\n _password, signInMethod, \r\n /** @internal */\r\n _tenantId = null) {\r\n super(\"password\" /* PASSWORD */, signInMethod);\r\n this._email = _email;\r\n this._password = _password;\r\n this._tenantId = _tenantId;\r\n }\r\n /** @internal */\r\n static _fromEmailAndPassword(email, password) {\r\n return new EmailAuthCredential(email, password, \"password\" /* EMAIL_PASSWORD */);\r\n }\r\n /** @internal */\r\n static _fromEmailAndCode(email, oobCode, tenantId = null) {\r\n return new EmailAuthCredential(email, oobCode, \"emailLink\" /* EMAIL_LINK */, tenantId);\r\n }\r\n /** {@inheritdoc AuthCredential.toJSON} */\r\n toJSON() {\r\n return {\r\n email: this._email,\r\n password: this._password,\r\n signInMethod: this.signInMethod,\r\n tenantId: this._tenantId\r\n };\r\n }\r\n /**\r\n * Static method to deserialize a JSON representation of an object into an {@link AuthCredential}.\r\n *\r\n * @param json - Either `object` or the stringified representation of the object. When string is\r\n * provided, `JSON.parse` would be called first.\r\n *\r\n * @returns If the JSON input does not represent an {@link AuthCredential}, null is returned.\r\n */\r\n static fromJSON(json) {\r\n const obj = typeof json === 'string' ? JSON.parse(json) : json;\r\n if ((obj === null || obj === void 0 ? void 0 : obj.email) && (obj === null || obj === void 0 ? void 0 : obj.password)) {\r\n if (obj.signInMethod === \"password\" /* EMAIL_PASSWORD */) {\r\n return this._fromEmailAndPassword(obj.email, obj.password);\r\n }\r\n else if (obj.signInMethod === \"emailLink\" /* EMAIL_LINK */) {\r\n return this._fromEmailAndCode(obj.email, obj.password, obj.tenantId);\r\n }\r\n }\r\n return null;\r\n }\r\n /** @internal */\r\n async _getIdTokenResponse(auth) {\r\n switch (this.signInMethod) {\r\n case \"password\" /* EMAIL_PASSWORD */:\r\n return signInWithPassword(auth, {\r\n returnSecureToken: true,\r\n email: this._email,\r\n password: this._password\r\n });\r\n case \"emailLink\" /* EMAIL_LINK */:\r\n return signInWithEmailLink$1(auth, {\r\n email: this._email,\r\n oobCode: this._password\r\n });\r\n default:\r\n _fail(auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n }\r\n }\r\n /** @internal */\r\n async _linkToIdToken(auth, idToken) {\r\n switch (this.signInMethod) {\r\n case \"password\" /* EMAIL_PASSWORD */:\r\n return updateEmailPassword(auth, {\r\n idToken,\r\n returnSecureToken: true,\r\n email: this._email,\r\n password: this._password\r\n });\r\n case \"emailLink\" /* EMAIL_LINK */:\r\n return signInWithEmailLinkForLinking(auth, {\r\n idToken,\r\n email: this._email,\r\n oobCode: this._password\r\n });\r\n default:\r\n _fail(auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n }\r\n }\r\n /** @internal */\r\n _getReauthenticationResolver(auth) {\r\n return this._getIdTokenResponse(auth);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function signInWithIdp(auth, request) {\r\n return _performSignInRequest(auth, \"POST\" /* POST */, \"/v1/accounts:signInWithIdp\" /* SIGN_IN_WITH_IDP */, _addTidIfNecessary(auth, request));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst IDP_REQUEST_URI$1 = 'http://localhost';\r\n/**\r\n * Represents the OAuth credentials returned by an {@link OAuthProvider}.\r\n *\r\n * @remarks\r\n * Implementations specify the details about each auth provider's credential requirements.\r\n *\r\n * @public\r\n */\r\nclass OAuthCredential extends AuthCredential {\r\n constructor() {\r\n super(...arguments);\r\n this.pendingToken = null;\r\n }\r\n /** @internal */\r\n static _fromParams(params) {\r\n const cred = new OAuthCredential(params.providerId, params.signInMethod);\r\n if (params.idToken || params.accessToken) {\r\n // OAuth 2 and either ID token or access token.\r\n if (params.idToken) {\r\n cred.idToken = params.idToken;\r\n }\r\n if (params.accessToken) {\r\n cred.accessToken = params.accessToken;\r\n }\r\n // Add nonce if available and no pendingToken is present.\r\n if (params.nonce && !params.pendingToken) {\r\n cred.nonce = params.nonce;\r\n }\r\n if (params.pendingToken) {\r\n cred.pendingToken = params.pendingToken;\r\n }\r\n }\r\n else if (params.oauthToken && params.oauthTokenSecret) {\r\n // OAuth 1 and OAuth token with token secret\r\n cred.accessToken = params.oauthToken;\r\n cred.secret = params.oauthTokenSecret;\r\n }\r\n else {\r\n _fail(\"argument-error\" /* ARGUMENT_ERROR */);\r\n }\r\n return cred;\r\n }\r\n /** {@inheritdoc AuthCredential.toJSON} */\r\n toJSON() {\r\n return {\r\n idToken: this.idToken,\r\n accessToken: this.accessToken,\r\n secret: this.secret,\r\n nonce: this.nonce,\r\n pendingToken: this.pendingToken,\r\n providerId: this.providerId,\r\n signInMethod: this.signInMethod\r\n };\r\n }\r\n /**\r\n * Static method to deserialize a JSON representation of an object into an\r\n * {@link AuthCredential}.\r\n *\r\n * @param json - Input can be either Object or the stringified representation of the object.\r\n * When string is provided, JSON.parse would be called first.\r\n *\r\n * @returns If the JSON input does not represent an {@link AuthCredential}, null is returned.\r\n */\r\n static fromJSON(json) {\r\n const obj = typeof json === 'string' ? JSON.parse(json) : json;\r\n const { providerId, signInMethod } = obj, rest = __rest(obj, [\"providerId\", \"signInMethod\"]);\r\n if (!providerId || !signInMethod) {\r\n return null;\r\n }\r\n const cred = new OAuthCredential(providerId, signInMethod);\r\n cred.idToken = rest.idToken || undefined;\r\n cred.accessToken = rest.accessToken || undefined;\r\n cred.secret = rest.secret;\r\n cred.nonce = rest.nonce;\r\n cred.pendingToken = rest.pendingToken || null;\r\n return cred;\r\n }\r\n /** @internal */\r\n _getIdTokenResponse(auth) {\r\n const request = this.buildRequest();\r\n return signInWithIdp(auth, request);\r\n }\r\n /** @internal */\r\n _linkToIdToken(auth, idToken) {\r\n const request = this.buildRequest();\r\n request.idToken = idToken;\r\n return signInWithIdp(auth, request);\r\n }\r\n /** @internal */\r\n _getReauthenticationResolver(auth) {\r\n const request = this.buildRequest();\r\n request.autoCreate = false;\r\n return signInWithIdp(auth, request);\r\n }\r\n buildRequest() {\r\n const request = {\r\n requestUri: IDP_REQUEST_URI$1,\r\n returnSecureToken: true\r\n };\r\n if (this.pendingToken) {\r\n request.pendingToken = this.pendingToken;\r\n }\r\n else {\r\n const postBody = {};\r\n if (this.idToken) {\r\n postBody['id_token'] = this.idToken;\r\n }\r\n if (this.accessToken) {\r\n postBody['access_token'] = this.accessToken;\r\n }\r\n if (this.secret) {\r\n postBody['oauth_token_secret'] = this.secret;\r\n }\r\n postBody['providerId'] = this.providerId;\r\n if (this.nonce && !this.pendingToken) {\r\n postBody['nonce'] = this.nonce;\r\n }\r\n request.postBody = querystring(postBody);\r\n }\r\n return request;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function sendPhoneVerificationCode(auth, request) {\r\n return _performApiRequest(auth, \"POST\" /* POST */, \"/v1/accounts:sendVerificationCode\" /* SEND_VERIFICATION_CODE */, _addTidIfNecessary(auth, request));\r\n}\r\nasync function signInWithPhoneNumber$1(auth, request) {\r\n return _performSignInRequest(auth, \"POST\" /* POST */, \"/v1/accounts:signInWithPhoneNumber\" /* SIGN_IN_WITH_PHONE_NUMBER */, _addTidIfNecessary(auth, request));\r\n}\r\nasync function linkWithPhoneNumber$1(auth, request) {\r\n const response = await _performSignInRequest(auth, \"POST\" /* POST */, \"/v1/accounts:signInWithPhoneNumber\" /* SIGN_IN_WITH_PHONE_NUMBER */, _addTidIfNecessary(auth, request));\r\n if (response.temporaryProof) {\r\n throw _makeTaggedError(auth, \"account-exists-with-different-credential\" /* NEED_CONFIRMATION */, response);\r\n }\r\n return response;\r\n}\r\nconst VERIFY_PHONE_NUMBER_FOR_EXISTING_ERROR_MAP_ = {\r\n [\"USER_NOT_FOUND\" /* USER_NOT_FOUND */]: \"user-not-found\" /* USER_DELETED */\r\n};\r\nasync function verifyPhoneNumberForExisting(auth, request) {\r\n const apiRequest = Object.assign(Object.assign({}, request), { operation: 'REAUTH' });\r\n return _performSignInRequest(auth, \"POST\" /* POST */, \"/v1/accounts:signInWithPhoneNumber\" /* SIGN_IN_WITH_PHONE_NUMBER */, _addTidIfNecessary(auth, apiRequest), VERIFY_PHONE_NUMBER_FOR_EXISTING_ERROR_MAP_);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Represents the credentials returned by {@link PhoneAuthProvider}.\r\n *\r\n * @public\r\n */\r\nclass PhoneAuthCredential extends AuthCredential {\r\n constructor(params) {\r\n super(\"phone\" /* PHONE */, \"phone\" /* PHONE */);\r\n this.params = params;\r\n }\r\n /** @internal */\r\n static _fromVerification(verificationId, verificationCode) {\r\n return new PhoneAuthCredential({ verificationId, verificationCode });\r\n }\r\n /** @internal */\r\n static _fromTokenResponse(phoneNumber, temporaryProof) {\r\n return new PhoneAuthCredential({ phoneNumber, temporaryProof });\r\n }\r\n /** @internal */\r\n _getIdTokenResponse(auth) {\r\n return signInWithPhoneNumber$1(auth, this._makeVerificationRequest());\r\n }\r\n /** @internal */\r\n _linkToIdToken(auth, idToken) {\r\n return linkWithPhoneNumber$1(auth, Object.assign({ idToken }, this._makeVerificationRequest()));\r\n }\r\n /** @internal */\r\n _getReauthenticationResolver(auth) {\r\n return verifyPhoneNumberForExisting(auth, this._makeVerificationRequest());\r\n }\r\n /** @internal */\r\n _makeVerificationRequest() {\r\n const { temporaryProof, phoneNumber, verificationId, verificationCode } = this.params;\r\n if (temporaryProof && phoneNumber) {\r\n return { temporaryProof, phoneNumber };\r\n }\r\n return {\r\n sessionInfo: verificationId,\r\n code: verificationCode\r\n };\r\n }\r\n /** {@inheritdoc AuthCredential.toJSON} */\r\n toJSON() {\r\n const obj = {\r\n providerId: this.providerId\r\n };\r\n if (this.params.phoneNumber) {\r\n obj.phoneNumber = this.params.phoneNumber;\r\n }\r\n if (this.params.temporaryProof) {\r\n obj.temporaryProof = this.params.temporaryProof;\r\n }\r\n if (this.params.verificationCode) {\r\n obj.verificationCode = this.params.verificationCode;\r\n }\r\n if (this.params.verificationId) {\r\n obj.verificationId = this.params.verificationId;\r\n }\r\n return obj;\r\n }\r\n /** Generates a phone credential based on a plain object or a JSON string. */\r\n static fromJSON(json) {\r\n if (typeof json === 'string') {\r\n json = JSON.parse(json);\r\n }\r\n const { verificationId, verificationCode, phoneNumber, temporaryProof } = json;\r\n if (!verificationCode &&\r\n !verificationId &&\r\n !phoneNumber &&\r\n !temporaryProof) {\r\n return null;\r\n }\r\n return new PhoneAuthCredential({\r\n verificationId,\r\n verificationCode,\r\n phoneNumber,\r\n temporaryProof\r\n });\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Maps the mode string in action code URL to Action Code Info operation.\r\n *\r\n * @param mode\r\n */\r\nfunction parseMode(mode) {\r\n switch (mode) {\r\n case 'recoverEmail':\r\n return \"RECOVER_EMAIL\" /* RECOVER_EMAIL */;\r\n case 'resetPassword':\r\n return \"PASSWORD_RESET\" /* PASSWORD_RESET */;\r\n case 'signIn':\r\n return \"EMAIL_SIGNIN\" /* EMAIL_SIGNIN */;\r\n case 'verifyEmail':\r\n return \"VERIFY_EMAIL\" /* VERIFY_EMAIL */;\r\n case 'verifyAndChangeEmail':\r\n return \"VERIFY_AND_CHANGE_EMAIL\" /* VERIFY_AND_CHANGE_EMAIL */;\r\n case 'revertSecondFactorAddition':\r\n return \"REVERT_SECOND_FACTOR_ADDITION\" /* REVERT_SECOND_FACTOR_ADDITION */;\r\n default:\r\n return null;\r\n }\r\n}\r\n/**\r\n * Helper to parse FDL links\r\n *\r\n * @param url\r\n */\r\nfunction parseDeepLink(url) {\r\n const link = querystringDecode(extractQuerystring(url))['link'];\r\n // Double link case (automatic redirect).\r\n const doubleDeepLink = link\r\n ? querystringDecode(extractQuerystring(link))['deep_link_id']\r\n : null;\r\n // iOS custom scheme links.\r\n const iOSDeepLink = querystringDecode(extractQuerystring(url))['deep_link_id'];\r\n const iOSDoubleDeepLink = iOSDeepLink\r\n ? querystringDecode(extractQuerystring(iOSDeepLink))['link']\r\n : null;\r\n return iOSDoubleDeepLink || iOSDeepLink || doubleDeepLink || link || url;\r\n}\r\n/**\r\n * A utility class to parse email action URLs such as password reset, email verification,\r\n * email link sign in, etc.\r\n *\r\n * @public\r\n */\r\nclass ActionCodeURL {\r\n /**\r\n * @param actionLink - The link from which to extract the URL.\r\n * @returns The {@link ActionCodeURL} object, or null if the link is invalid.\r\n *\r\n * @internal\r\n */\r\n constructor(actionLink) {\r\n var _a, _b, _c, _d, _e, _f;\r\n const searchParams = querystringDecode(extractQuerystring(actionLink));\r\n const apiKey = (_a = searchParams[\"apiKey\" /* API_KEY */]) !== null && _a !== void 0 ? _a : null;\r\n const code = (_b = searchParams[\"oobCode\" /* CODE */]) !== null && _b !== void 0 ? _b : null;\r\n const operation = parseMode((_c = searchParams[\"mode\" /* MODE */]) !== null && _c !== void 0 ? _c : null);\r\n // Validate API key, code and mode.\r\n _assert(apiKey && code && operation, \"argument-error\" /* ARGUMENT_ERROR */);\r\n this.apiKey = apiKey;\r\n this.operation = operation;\r\n this.code = code;\r\n this.continueUrl = (_d = searchParams[\"continueUrl\" /* CONTINUE_URL */]) !== null && _d !== void 0 ? _d : null;\r\n this.languageCode = (_e = searchParams[\"languageCode\" /* LANGUAGE_CODE */]) !== null && _e !== void 0 ? _e : null;\r\n this.tenantId = (_f = searchParams[\"tenantId\" /* TENANT_ID */]) !== null && _f !== void 0 ? _f : null;\r\n }\r\n /**\r\n * Parses the email action link string and returns an {@link ActionCodeURL} if the link is valid,\r\n * otherwise returns null.\r\n *\r\n * @param link - The email action link string.\r\n * @returns The {@link ActionCodeURL} object, or null if the link is invalid.\r\n *\r\n * @public\r\n */\r\n static parseLink(link) {\r\n const actionLink = parseDeepLink(link);\r\n try {\r\n return new ActionCodeURL(actionLink);\r\n }\r\n catch (_a) {\r\n return null;\r\n }\r\n }\r\n}\r\n/**\r\n * Parses the email action link string and returns an {@link ActionCodeURL} if\r\n * the link is valid, otherwise returns null.\r\n *\r\n * @public\r\n */\r\nfunction parseActionCodeURL(link) {\r\n return ActionCodeURL.parseLink(link);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provider for generating {@link EmailAuthCredential}.\r\n *\r\n * @public\r\n */\r\nclass EmailAuthProvider {\r\n constructor() {\r\n /**\r\n * Always set to {@link ProviderId}.PASSWORD, even for email link.\r\n */\r\n this.providerId = EmailAuthProvider.PROVIDER_ID;\r\n }\r\n /**\r\n * Initialize an {@link AuthCredential} using an email and password.\r\n *\r\n * @example\r\n * ```javascript\r\n * const authCredential = EmailAuthProvider.credential(email, password);\r\n * const userCredential = await signInWithCredential(auth, authCredential);\r\n * ```\r\n *\r\n * @example\r\n * ```javascript\r\n * const userCredential = await signInWithEmailAndPassword(auth, email, password);\r\n * ```\r\n *\r\n * @param email - Email address.\r\n * @param password - User account password.\r\n * @returns The auth provider credential.\r\n */\r\n static credential(email, password) {\r\n return EmailAuthCredential._fromEmailAndPassword(email, password);\r\n }\r\n /**\r\n * Initialize an {@link AuthCredential} using an email and an email link after a sign in with\r\n * email link operation.\r\n *\r\n * @example\r\n * ```javascript\r\n * const authCredential = EmailAuthProvider.credentialWithLink(auth, email, emailLink);\r\n * const userCredential = await signInWithCredential(auth, authCredential);\r\n * ```\r\n *\r\n * @example\r\n * ```javascript\r\n * await sendSignInLinkToEmail(auth, email);\r\n * // Obtain emailLink from user.\r\n * const userCredential = await signInWithEmailLink(auth, email, emailLink);\r\n * ```\r\n *\r\n * @param auth - The {@link Auth} instance used to verify the link.\r\n * @param email - Email address.\r\n * @param emailLink - Sign-in email link.\r\n * @returns - The auth provider credential.\r\n */\r\n static credentialWithLink(email, emailLink) {\r\n const actionCodeUrl = ActionCodeURL.parseLink(emailLink);\r\n _assert(actionCodeUrl, \"argument-error\" /* ARGUMENT_ERROR */);\r\n return EmailAuthCredential._fromEmailAndCode(email, actionCodeUrl.code, actionCodeUrl.tenantId);\r\n }\r\n}\r\n/**\r\n * Always set to {@link ProviderId}.PASSWORD, even for email link.\r\n */\r\nEmailAuthProvider.PROVIDER_ID = \"password\" /* PASSWORD */;\r\n/**\r\n * Always set to {@link SignInMethod}.EMAIL_PASSWORD.\r\n */\r\nEmailAuthProvider.EMAIL_PASSWORD_SIGN_IN_METHOD = \"password\" /* EMAIL_PASSWORD */;\r\n/**\r\n * Always set to {@link SignInMethod}.EMAIL_LINK.\r\n */\r\nEmailAuthProvider.EMAIL_LINK_SIGN_IN_METHOD = \"emailLink\" /* EMAIL_LINK */;\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The base class for all Federated providers (OAuth (including OIDC), SAML).\r\n *\r\n * This class is not meant to be instantiated directly.\r\n *\r\n * @public\r\n */\r\nclass FederatedAuthProvider {\r\n /**\r\n * Constructor for generic OAuth providers.\r\n *\r\n * @param providerId - Provider for which credentials should be generated.\r\n */\r\n constructor(providerId) {\r\n this.providerId = providerId;\r\n /** @internal */\r\n this.defaultLanguageCode = null;\r\n /** @internal */\r\n this.customParameters = {};\r\n }\r\n /**\r\n * Set the language gode.\r\n *\r\n * @param languageCode - language code\r\n */\r\n setDefaultLanguage(languageCode) {\r\n this.defaultLanguageCode = languageCode;\r\n }\r\n /**\r\n * Sets the OAuth custom parameters to pass in an OAuth request for popup and redirect sign-in\r\n * operations.\r\n *\r\n * @remarks\r\n * For a detailed list, check the reserved required OAuth 2.0 parameters such as `client_id`,\r\n * `redirect_uri`, `scope`, `response_type`, and `state` are not allowed and will be ignored.\r\n *\r\n * @param customOAuthParameters - The custom OAuth parameters to pass in the OAuth request.\r\n */\r\n setCustomParameters(customOAuthParameters) {\r\n this.customParameters = customOAuthParameters;\r\n return this;\r\n }\r\n /**\r\n * Retrieve the current list of {@link CustomParameters}.\r\n */\r\n getCustomParameters() {\r\n return this.customParameters;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Common code to all OAuth providers. This is separate from the\r\n * {@link OAuthProvider} so that child providers (like\r\n * {@link GoogleAuthProvider}) don't inherit the `credential` instance method.\r\n * Instead, they rely on a static `credential` method.\r\n */\r\nclass BaseOAuthProvider extends FederatedAuthProvider {\r\n constructor() {\r\n super(...arguments);\r\n /** @internal */\r\n this.scopes = [];\r\n }\r\n /**\r\n * Add an OAuth scope to the credential.\r\n *\r\n * @param scope - Provider OAuth scope to add.\r\n */\r\n addScope(scope) {\r\n // If not already added, add scope to list.\r\n if (!this.scopes.includes(scope)) {\r\n this.scopes.push(scope);\r\n }\r\n return this;\r\n }\r\n /**\r\n * Retrieve the current list of OAuth scopes.\r\n */\r\n getScopes() {\r\n return [...this.scopes];\r\n }\r\n}\r\n/**\r\n * Provider for generating generic {@link OAuthCredential}.\r\n *\r\n * @example\r\n * ```javascript\r\n * // Sign in using a redirect.\r\n * const provider = new OAuthProvider('google.com');\r\n * // Start a sign in process for an unauthenticated user.\r\n * provider.addScope('profile');\r\n * provider.addScope('email');\r\n * await signInWithRedirect(auth, provider);\r\n * // This will trigger a full page redirect away from your app\r\n *\r\n * // After returning from the redirect when your app initializes you can obtain the result\r\n * const result = await getRedirectResult(auth);\r\n * if (result) {\r\n * // This is the signed-in user\r\n * const user = result.user;\r\n * // This gives you a OAuth Access Token for the provider.\r\n * const credential = provider.credentialFromResult(auth, result);\r\n * const token = credential.accessToken;\r\n * }\r\n * ```\r\n *\r\n * @example\r\n * ```javascript\r\n * // Sign in using a popup.\r\n * const provider = new OAuthProvider('google.com');\r\n * provider.addScope('profile');\r\n * provider.addScope('email');\r\n * const result = await signInWithPopup(auth, provider);\r\n *\r\n * // The signed-in user info.\r\n * const user = result.user;\r\n * // This gives you a OAuth Access Token for the provider.\r\n * const credential = provider.credentialFromResult(auth, result);\r\n * const token = credential.accessToken;\r\n * ```\r\n * @public\r\n */\r\nclass OAuthProvider extends BaseOAuthProvider {\r\n /**\r\n * Creates an {@link OAuthCredential} from a JSON string or a plain object.\r\n * @param json - A plain object or a JSON string\r\n */\r\n static credentialFromJSON(json) {\r\n const obj = typeof json === 'string' ? JSON.parse(json) : json;\r\n _assert('providerId' in obj && 'signInMethod' in obj, \"argument-error\" /* ARGUMENT_ERROR */);\r\n return OAuthCredential._fromParams(obj);\r\n }\r\n /**\r\n * Creates a {@link OAuthCredential} from a generic OAuth provider's access token or ID token.\r\n *\r\n * @remarks\r\n * The raw nonce is required when an ID token with a nonce field is provided. The SHA-256 hash of\r\n * the raw nonce must match the nonce field in the ID token.\r\n *\r\n * @example\r\n * ```javascript\r\n * // `googleUser` from the onsuccess Google Sign In callback.\r\n * // Initialize a generate OAuth provider with a `google.com` providerId.\r\n * const provider = new OAuthProvider('google.com');\r\n * const credential = provider.credential({\r\n * idToken: googleUser.getAuthResponse().id_token,\r\n * });\r\n * const result = await signInWithCredential(credential);\r\n * ```\r\n *\r\n * @param params - Either the options object containing the ID token, access token and raw nonce\r\n * or the ID token string.\r\n */\r\n credential(params) {\r\n return this._credential(Object.assign(Object.assign({}, params), { nonce: params.rawNonce }));\r\n }\r\n /** An internal credential method that accepts more permissive options */\r\n _credential(params) {\r\n _assert(params.idToken || params.accessToken, \"argument-error\" /* ARGUMENT_ERROR */);\r\n // For OAuthCredential, sign in method is same as providerId.\r\n return OAuthCredential._fromParams(Object.assign(Object.assign({}, params), { providerId: this.providerId, signInMethod: this.providerId }));\r\n }\r\n /**\r\n * Used to extract the underlying {@link OAuthCredential} from a {@link UserCredential}.\r\n *\r\n * @param userCredential - The user credential.\r\n */\r\n static credentialFromResult(userCredential) {\r\n return OAuthProvider.oauthCredentialFromTaggedObject(userCredential);\r\n }\r\n /**\r\n * Used to extract the underlying {@link OAuthCredential} from a {@link AuthError} which was\r\n * thrown during a sign-in, link, or reauthenticate operation.\r\n *\r\n * @param userCredential - The user credential.\r\n */\r\n static credentialFromError(error) {\r\n return OAuthProvider.oauthCredentialFromTaggedObject((error.customData || {}));\r\n }\r\n static oauthCredentialFromTaggedObject({ _tokenResponse: tokenResponse }) {\r\n if (!tokenResponse) {\r\n return null;\r\n }\r\n const { oauthIdToken, oauthAccessToken, oauthTokenSecret, pendingToken, nonce, providerId } = tokenResponse;\r\n if (!oauthAccessToken &&\r\n !oauthTokenSecret &&\r\n !oauthIdToken &&\r\n !pendingToken) {\r\n return null;\r\n }\r\n if (!providerId) {\r\n return null;\r\n }\r\n try {\r\n return new OAuthProvider(providerId)._credential({\r\n idToken: oauthIdToken,\r\n accessToken: oauthAccessToken,\r\n nonce,\r\n pendingToken\r\n });\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provider for generating an {@link OAuthCredential} for {@link ProviderId}.FACEBOOK.\r\n *\r\n * @example\r\n * ```javascript\r\n * // Sign in using a redirect.\r\n * const provider = new FacebookAuthProvider();\r\n * // Start a sign in process for an unauthenticated user.\r\n * provider.addScope('user_birthday');\r\n * await signInWithRedirect(auth, provider);\r\n * // This will trigger a full page redirect away from your app\r\n *\r\n * // After returning from the redirect when your app initializes you can obtain the result\r\n * const result = await getRedirectResult(auth);\r\n * if (result) {\r\n * // This is the signed-in user\r\n * const user = result.user;\r\n * // This gives you a Facebook Access Token.\r\n * const credential = FacebookAuthProvider.credentialFromResult(result);\r\n * const token = credential.accessToken;\r\n * }\r\n * ```\r\n *\r\n * @example\r\n * ```javascript\r\n * // Sign in using a popup.\r\n * const provider = new FacebookAuthProvider();\r\n * provider.addScope('user_birthday');\r\n * const result = await signInWithPopup(auth, provider);\r\n *\r\n * // The signed-in user info.\r\n * const user = result.user;\r\n * // This gives you a Facebook Access Token.\r\n * const credential = FacebookAuthProvider.credentialFromResult(result);\r\n * const token = credential.accessToken;\r\n * ```\r\n *\r\n * @public\r\n */\r\nclass FacebookAuthProvider extends BaseOAuthProvider {\r\n constructor() {\r\n super(\"facebook.com\" /* FACEBOOK */);\r\n }\r\n /**\r\n * Creates a credential for Facebook.\r\n *\r\n * @example\r\n * ```javascript\r\n * // `event` from the Facebook auth.authResponseChange callback.\r\n * const credential = FacebookAuthProvider.credential(event.authResponse.accessToken);\r\n * const result = await signInWithCredential(credential);\r\n * ```\r\n *\r\n * @param accessToken - Facebook access token.\r\n */\r\n static credential(accessToken) {\r\n return OAuthCredential._fromParams({\r\n providerId: FacebookAuthProvider.PROVIDER_ID,\r\n signInMethod: FacebookAuthProvider.FACEBOOK_SIGN_IN_METHOD,\r\n accessToken\r\n });\r\n }\r\n /**\r\n * Used to extract the underlying {@link OAuthCredential} from a {@link UserCredential}.\r\n *\r\n * @param userCredential - The user credential.\r\n */\r\n static credentialFromResult(userCredential) {\r\n return FacebookAuthProvider.credentialFromTaggedObject(userCredential);\r\n }\r\n /**\r\n * Used to extract the underlying {@link OAuthCredential} from a {@link AuthError} which was\r\n * thrown during a sign-in, link, or reauthenticate operation.\r\n *\r\n * @param userCredential - The user credential.\r\n */\r\n static credentialFromError(error) {\r\n return FacebookAuthProvider.credentialFromTaggedObject((error.customData || {}));\r\n }\r\n static credentialFromTaggedObject({ _tokenResponse: tokenResponse }) {\r\n if (!tokenResponse || !('oauthAccessToken' in tokenResponse)) {\r\n return null;\r\n }\r\n if (!tokenResponse.oauthAccessToken) {\r\n return null;\r\n }\r\n try {\r\n return FacebookAuthProvider.credential(tokenResponse.oauthAccessToken);\r\n }\r\n catch (_a) {\r\n return null;\r\n }\r\n }\r\n}\r\n/** Always set to {@link SignInMethod}.FACEBOOK. */\r\nFacebookAuthProvider.FACEBOOK_SIGN_IN_METHOD = \"facebook.com\" /* FACEBOOK */;\r\n/** Always set to {@link ProviderId}.FACEBOOK. */\r\nFacebookAuthProvider.PROVIDER_ID = \"facebook.com\" /* FACEBOOK */;\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provider for generating an an {@link OAuthCredential} for {@link ProviderId}.GOOGLE.\r\n *\r\n * @example\r\n * ```javascript\r\n * // Sign in using a redirect.\r\n * const provider = new GoogleAuthProvider();\r\n * // Start a sign in process for an unauthenticated user.\r\n * provider.addScope('profile');\r\n * provider.addScope('email');\r\n * await signInWithRedirect(auth, provider);\r\n * // This will trigger a full page redirect away from your app\r\n *\r\n * // After returning from the redirect when your app initializes you can obtain the result\r\n * const result = await getRedirectResult(auth);\r\n * if (result) {\r\n * // This is the signed-in user\r\n * const user = result.user;\r\n * // This gives you a Google Access Token.\r\n * const credential = GoogleAuthProvider.credentialFromResult(result);\r\n * const token = credential.accessToken;\r\n * }\r\n * ```\r\n *\r\n * @example\r\n * ```javascript\r\n * // Sign in using a popup.\r\n * const provider = new GoogleAuthProvider();\r\n * provider.addScope('profile');\r\n * provider.addScope('email');\r\n * const result = await signInWithPopup(auth, provider);\r\n *\r\n * // The signed-in user info.\r\n * const user = result.user;\r\n * // This gives you a Google Access Token.\r\n * const credential = GoogleAuthProvider.credentialFromResult(result);\r\n * const token = credential.accessToken;\r\n * ```\r\n *\r\n * @public\r\n */\r\nclass GoogleAuthProvider extends BaseOAuthProvider {\r\n constructor() {\r\n super(\"google.com\" /* GOOGLE */);\r\n this.addScope('profile');\r\n }\r\n /**\r\n * Creates a credential for Google. At least one of ID token and access token is required.\r\n *\r\n * @example\r\n * ```javascript\r\n * // \\`googleUser\\` from the onsuccess Google Sign In callback.\r\n * const credential = GoogleAuthProvider.credential(googleUser.getAuthResponse().id_token);\r\n * const result = await signInWithCredential(credential);\r\n * ```\r\n *\r\n * @param idToken - Google ID token.\r\n * @param accessToken - Google access token.\r\n */\r\n static credential(idToken, accessToken) {\r\n return OAuthCredential._fromParams({\r\n providerId: GoogleAuthProvider.PROVIDER_ID,\r\n signInMethod: GoogleAuthProvider.GOOGLE_SIGN_IN_METHOD,\r\n idToken,\r\n accessToken\r\n });\r\n }\r\n /**\r\n * Used to extract the underlying {@link OAuthCredential} from a {@link UserCredential}.\r\n *\r\n * @param userCredential - The user credential.\r\n */\r\n static credentialFromResult(userCredential) {\r\n return GoogleAuthProvider.credentialFromTaggedObject(userCredential);\r\n }\r\n /**\r\n * Used to extract the underlying {@link OAuthCredential} from a {@link AuthError} which was\r\n * thrown during a sign-in, link, or reauthenticate operation.\r\n *\r\n * @param userCredential - The user credential.\r\n */\r\n static credentialFromError(error) {\r\n return GoogleAuthProvider.credentialFromTaggedObject((error.customData || {}));\r\n }\r\n static credentialFromTaggedObject({ _tokenResponse: tokenResponse }) {\r\n if (!tokenResponse) {\r\n return null;\r\n }\r\n const { oauthIdToken, oauthAccessToken } = tokenResponse;\r\n if (!oauthIdToken && !oauthAccessToken) {\r\n // This could be an oauth 1 credential or a phone credential\r\n return null;\r\n }\r\n try {\r\n return GoogleAuthProvider.credential(oauthIdToken, oauthAccessToken);\r\n }\r\n catch (_a) {\r\n return null;\r\n }\r\n }\r\n}\r\n/** Always set to {@link SignInMethod}.GOOGLE. */\r\nGoogleAuthProvider.GOOGLE_SIGN_IN_METHOD = \"google.com\" /* GOOGLE */;\r\n/** Always set to {@link ProviderId}.GOOGLE. */\r\nGoogleAuthProvider.PROVIDER_ID = \"google.com\" /* GOOGLE */;\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provider for generating an {@link OAuthCredential} for {@link ProviderId}.GITHUB.\r\n *\r\n * @remarks\r\n * GitHub requires an OAuth 2.0 redirect, so you can either handle the redirect directly, or use\r\n * the {@link signInWithPopup} handler:\r\n *\r\n * @example\r\n * ```javascript\r\n * // Sign in using a redirect.\r\n * const provider = new GithubAuthProvider();\r\n * // Start a sign in process for an unauthenticated user.\r\n * provider.addScope('repo');\r\n * await signInWithRedirect(auth, provider);\r\n * // This will trigger a full page redirect away from your app\r\n *\r\n * // After returning from the redirect when your app initializes you can obtain the result\r\n * const result = await getRedirectResult(auth);\r\n * if (result) {\r\n * // This is the signed-in user\r\n * const user = result.user;\r\n * // This gives you a Github Access Token.\r\n * const credential = GithubAuthProvider.credentialFromResult(result);\r\n * const token = credential.accessToken;\r\n * }\r\n * ```\r\n *\r\n * @example\r\n * ```javascript\r\n * // Sign in using a popup.\r\n * const provider = new GithubAuthProvider();\r\n * provider.addScope('repo');\r\n * const result = await signInWithPopup(auth, provider);\r\n *\r\n * // The signed-in user info.\r\n * const user = result.user;\r\n * // This gives you a Github Access Token.\r\n * const credential = GithubAuthProvider.credentialFromResult(result);\r\n * const token = credential.accessToken;\r\n * ```\r\n * @public\r\n */\r\nclass GithubAuthProvider extends BaseOAuthProvider {\r\n constructor() {\r\n super(\"github.com\" /* GITHUB */);\r\n }\r\n /**\r\n * Creates a credential for Github.\r\n *\r\n * @param accessToken - Github access token.\r\n */\r\n static credential(accessToken) {\r\n return OAuthCredential._fromParams({\r\n providerId: GithubAuthProvider.PROVIDER_ID,\r\n signInMethod: GithubAuthProvider.GITHUB_SIGN_IN_METHOD,\r\n accessToken\r\n });\r\n }\r\n /**\r\n * Used to extract the underlying {@link OAuthCredential} from a {@link UserCredential}.\r\n *\r\n * @param userCredential - The user credential.\r\n */\r\n static credentialFromResult(userCredential) {\r\n return GithubAuthProvider.credentialFromTaggedObject(userCredential);\r\n }\r\n /**\r\n * Used to extract the underlying {@link OAuthCredential} from a {@link AuthError} which was\r\n * thrown during a sign-in, link, or reauthenticate operation.\r\n *\r\n * @param userCredential - The user credential.\r\n */\r\n static credentialFromError(error) {\r\n return GithubAuthProvider.credentialFromTaggedObject((error.customData || {}));\r\n }\r\n static credentialFromTaggedObject({ _tokenResponse: tokenResponse }) {\r\n if (!tokenResponse || !('oauthAccessToken' in tokenResponse)) {\r\n return null;\r\n }\r\n if (!tokenResponse.oauthAccessToken) {\r\n return null;\r\n }\r\n try {\r\n return GithubAuthProvider.credential(tokenResponse.oauthAccessToken);\r\n }\r\n catch (_a) {\r\n return null;\r\n }\r\n }\r\n}\r\n/** Always set to {@link SignInMethod}.GITHUB. */\r\nGithubAuthProvider.GITHUB_SIGN_IN_METHOD = \"github.com\" /* GITHUB */;\r\n/** Always set to {@link ProviderId}.GITHUB. */\r\nGithubAuthProvider.PROVIDER_ID = \"github.com\" /* GITHUB */;\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst IDP_REQUEST_URI = 'http://localhost';\r\n/**\r\n * @public\r\n */\r\nclass SAMLAuthCredential extends AuthCredential {\r\n /** @internal */\r\n constructor(providerId, pendingToken) {\r\n super(providerId, providerId);\r\n this.pendingToken = pendingToken;\r\n }\r\n /** @internal */\r\n _getIdTokenResponse(auth) {\r\n const request = this.buildRequest();\r\n return signInWithIdp(auth, request);\r\n }\r\n /** @internal */\r\n _linkToIdToken(auth, idToken) {\r\n const request = this.buildRequest();\r\n request.idToken = idToken;\r\n return signInWithIdp(auth, request);\r\n }\r\n /** @internal */\r\n _getReauthenticationResolver(auth) {\r\n const request = this.buildRequest();\r\n request.autoCreate = false;\r\n return signInWithIdp(auth, request);\r\n }\r\n /** {@inheritdoc AuthCredential.toJSON} */\r\n toJSON() {\r\n return {\r\n signInMethod: this.signInMethod,\r\n providerId: this.providerId,\r\n pendingToken: this.pendingToken\r\n };\r\n }\r\n /**\r\n * Static method to deserialize a JSON representation of an object into an\r\n * {@link AuthCredential}.\r\n *\r\n * @param json - Input can be either Object or the stringified representation of the object.\r\n * When string is provided, JSON.parse would be called first.\r\n *\r\n * @returns If the JSON input does not represent an {@link AuthCredential}, null is returned.\r\n */\r\n static fromJSON(json) {\r\n const obj = typeof json === 'string' ? JSON.parse(json) : json;\r\n const { providerId, signInMethod, pendingToken } = obj;\r\n if (!providerId ||\r\n !signInMethod ||\r\n !pendingToken ||\r\n providerId !== signInMethod) {\r\n return null;\r\n }\r\n return new SAMLAuthCredential(providerId, pendingToken);\r\n }\r\n /**\r\n * Helper static method to avoid exposing the constructor to end users.\r\n *\r\n * @internal\r\n */\r\n static _create(providerId, pendingToken) {\r\n return new SAMLAuthCredential(providerId, pendingToken);\r\n }\r\n buildRequest() {\r\n return {\r\n requestUri: IDP_REQUEST_URI,\r\n returnSecureToken: true,\r\n pendingToken: this.pendingToken\r\n };\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst SAML_PROVIDER_PREFIX = 'saml.';\r\n/**\r\n * An {@link AuthProvider} for SAML.\r\n *\r\n * @public\r\n */\r\nclass SAMLAuthProvider extends FederatedAuthProvider {\r\n /**\r\n * Constructor. The providerId must start with \"saml.\"\r\n * @param providerId - SAML provider ID.\r\n */\r\n constructor(providerId) {\r\n _assert(providerId.startsWith(SAML_PROVIDER_PREFIX), \"argument-error\" /* ARGUMENT_ERROR */);\r\n super(providerId);\r\n }\r\n /**\r\n * Generates an {@link AuthCredential} from a {@link UserCredential} after a\r\n * successful SAML flow completes.\r\n *\r\n * @remarks\r\n *\r\n * For example, to get an {@link AuthCredential}, you could write the\r\n * following code:\r\n *\r\n * ```js\r\n * const userCredential = await signInWithPopup(auth, samlProvider);\r\n * const credential = SAMLAuthProvider.credentialFromResult(userCredential);\r\n * ```\r\n *\r\n * @param userCredential - The user credential.\r\n */\r\n static credentialFromResult(userCredential) {\r\n return SAMLAuthProvider.samlCredentialFromTaggedObject(userCredential);\r\n }\r\n /**\r\n * Used to extract the underlying {@link OAuthCredential} from a {@link AuthError} which was\r\n * thrown during a sign-in, link, or reauthenticate operation.\r\n *\r\n * @param userCredential - The user credential.\r\n */\r\n static credentialFromError(error) {\r\n return SAMLAuthProvider.samlCredentialFromTaggedObject((error.customData || {}));\r\n }\r\n /**\r\n * Creates an {@link AuthCredential} from a JSON string or a plain object.\r\n * @param json - A plain object or a JSON string\r\n */\r\n static credentialFromJSON(json) {\r\n const credential = SAMLAuthCredential.fromJSON(json);\r\n _assert(credential, \"argument-error\" /* ARGUMENT_ERROR */);\r\n return credential;\r\n }\r\n static samlCredentialFromTaggedObject({ _tokenResponse: tokenResponse }) {\r\n if (!tokenResponse) {\r\n return null;\r\n }\r\n const { pendingToken, providerId } = tokenResponse;\r\n if (!pendingToken || !providerId) {\r\n return null;\r\n }\r\n try {\r\n return SAMLAuthCredential._create(providerId, pendingToken);\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provider for generating an {@link OAuthCredential} for {@link ProviderId}.TWITTER.\r\n *\r\n * @example\r\n * ```javascript\r\n * // Sign in using a redirect.\r\n * const provider = new TwitterAuthProvider();\r\n * // Start a sign in process for an unauthenticated user.\r\n * await signInWithRedirect(auth, provider);\r\n * // This will trigger a full page redirect away from your app\r\n *\r\n * // After returning from the redirect when your app initializes you can obtain the result\r\n * const result = await getRedirectResult(auth);\r\n * if (result) {\r\n * // This is the signed-in user\r\n * const user = result.user;\r\n * // This gives you a Twitter Access Token and Secret.\r\n * const credential = TwitterAuthProvider.credentialFromResult(result);\r\n * const token = credential.accessToken;\r\n * const secret = credential.secret;\r\n * }\r\n * ```\r\n *\r\n * @example\r\n * ```javascript\r\n * // Sign in using a popup.\r\n * const provider = new TwitterAuthProvider();\r\n * const result = await signInWithPopup(auth, provider);\r\n *\r\n * // The signed-in user info.\r\n * const user = result.user;\r\n * // This gives you a Twitter Access Token and Secret.\r\n * const credential = TwitterAuthProvider.credentialFromResult(result);\r\n * const token = credential.accessToken;\r\n * const secret = credential.secret;\r\n * ```\r\n *\r\n * @public\r\n */\r\nclass TwitterAuthProvider extends BaseOAuthProvider {\r\n constructor() {\r\n super(\"twitter.com\" /* TWITTER */);\r\n }\r\n /**\r\n * Creates a credential for Twitter.\r\n *\r\n * @param token - Twitter access token.\r\n * @param secret - Twitter secret.\r\n */\r\n static credential(token, secret) {\r\n return OAuthCredential._fromParams({\r\n providerId: TwitterAuthProvider.PROVIDER_ID,\r\n signInMethod: TwitterAuthProvider.TWITTER_SIGN_IN_METHOD,\r\n oauthToken: token,\r\n oauthTokenSecret: secret\r\n });\r\n }\r\n /**\r\n * Used to extract the underlying {@link OAuthCredential} from a {@link UserCredential}.\r\n *\r\n * @param userCredential - The user credential.\r\n */\r\n static credentialFromResult(userCredential) {\r\n return TwitterAuthProvider.credentialFromTaggedObject(userCredential);\r\n }\r\n /**\r\n * Used to extract the underlying {@link OAuthCredential} from a {@link AuthError} which was\r\n * thrown during a sign-in, link, or reauthenticate operation.\r\n *\r\n * @param userCredential - The user credential.\r\n */\r\n static credentialFromError(error) {\r\n return TwitterAuthProvider.credentialFromTaggedObject((error.customData || {}));\r\n }\r\n static credentialFromTaggedObject({ _tokenResponse: tokenResponse }) {\r\n if (!tokenResponse) {\r\n return null;\r\n }\r\n const { oauthAccessToken, oauthTokenSecret } = tokenResponse;\r\n if (!oauthAccessToken || !oauthTokenSecret) {\r\n return null;\r\n }\r\n try {\r\n return TwitterAuthProvider.credential(oauthAccessToken, oauthTokenSecret);\r\n }\r\n catch (_a) {\r\n return null;\r\n }\r\n }\r\n}\r\n/** Always set to {@link SignInMethod}.TWITTER. */\r\nTwitterAuthProvider.TWITTER_SIGN_IN_METHOD = \"twitter.com\" /* TWITTER */;\r\n/** Always set to {@link ProviderId}.TWITTER. */\r\nTwitterAuthProvider.PROVIDER_ID = \"twitter.com\" /* TWITTER */;\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function signUp(auth, request) {\r\n return _performSignInRequest(auth, \"POST\" /* POST */, \"/v1/accounts:signUp\" /* SIGN_UP */, _addTidIfNecessary(auth, request));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass UserCredentialImpl {\r\n constructor(params) {\r\n this.user = params.user;\r\n this.providerId = params.providerId;\r\n this._tokenResponse = params._tokenResponse;\r\n this.operationType = params.operationType;\r\n }\r\n static async _fromIdTokenResponse(auth, operationType, idTokenResponse, isAnonymous = false) {\r\n const user = await UserImpl._fromIdTokenResponse(auth, idTokenResponse, isAnonymous);\r\n const providerId = providerIdForResponse(idTokenResponse);\r\n const userCred = new UserCredentialImpl({\r\n user,\r\n providerId,\r\n _tokenResponse: idTokenResponse,\r\n operationType\r\n });\r\n return userCred;\r\n }\r\n static async _forOperation(user, operationType, response) {\r\n await user._updateTokensIfNecessary(response, /* reload */ true);\r\n const providerId = providerIdForResponse(response);\r\n return new UserCredentialImpl({\r\n user,\r\n providerId,\r\n _tokenResponse: response,\r\n operationType\r\n });\r\n }\r\n}\r\nfunction providerIdForResponse(response) {\r\n if (response.providerId) {\r\n return response.providerId;\r\n }\r\n if ('phoneNumber' in response) {\r\n return \"phone\" /* PHONE */;\r\n }\r\n return null;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Asynchronously signs in as an anonymous user.\r\n *\r\n * @remarks\r\n * If there is already an anonymous user signed in, that user will be returned; otherwise, a\r\n * new anonymous user identity will be created and returned.\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n *\r\n * @public\r\n */\r\nasync function signInAnonymously(auth) {\r\n var _a;\r\n const authInternal = _castAuth(auth);\r\n await authInternal._initializationPromise;\r\n if ((_a = authInternal.currentUser) === null || _a === void 0 ? void 0 : _a.isAnonymous) {\r\n // If an anonymous user is already signed in, no need to sign them in again.\r\n return new UserCredentialImpl({\r\n user: authInternal.currentUser,\r\n providerId: null,\r\n operationType: \"signIn\" /* SIGN_IN */\r\n });\r\n }\r\n const response = await signUp(authInternal, {\r\n returnSecureToken: true\r\n });\r\n const userCredential = await UserCredentialImpl._fromIdTokenResponse(authInternal, \"signIn\" /* SIGN_IN */, response, true);\r\n await authInternal._updateCurrentUser(userCredential.user);\r\n return userCredential;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass MultiFactorError extends FirebaseError {\r\n constructor(auth, error, operationType, user) {\r\n var _a;\r\n super(error.code, error.message);\r\n this.operationType = operationType;\r\n this.user = user;\r\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\n Object.setPrototypeOf(this, MultiFactorError.prototype);\r\n this.customData = {\r\n appName: auth.name,\r\n tenantId: (_a = auth.tenantId) !== null && _a !== void 0 ? _a : undefined,\r\n _serverResponse: error.customData._serverResponse,\r\n operationType,\r\n };\r\n }\r\n static _fromErrorAndOperation(auth, error, operationType, user) {\r\n return new MultiFactorError(auth, error, operationType, user);\r\n }\r\n}\r\nfunction _processCredentialSavingMfaContextIfNecessary(auth, operationType, credential, user) {\r\n const idTokenProvider = operationType === \"reauthenticate\" /* REAUTHENTICATE */\r\n ? credential._getReauthenticationResolver(auth)\r\n : credential._getIdTokenResponse(auth);\r\n return idTokenProvider.catch(error => {\r\n if (error.code === `auth/${\"multi-factor-auth-required\" /* MFA_REQUIRED */}`) {\r\n throw MultiFactorError._fromErrorAndOperation(auth, error, operationType, user);\r\n }\r\n throw error;\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Takes a set of UserInfo provider data and converts it to a set of names\r\n */\r\nfunction providerDataAsNames(providerData) {\r\n return new Set(providerData\r\n .map(({ providerId }) => providerId)\r\n .filter(pid => !!pid));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Unlinks a provider from a user account.\r\n *\r\n * @param user - The user.\r\n * @param providerId - The provider to unlink.\r\n *\r\n * @public\r\n */\r\nasync function unlink(user, providerId) {\r\n const userInternal = getModularInstance(user);\r\n await _assertLinkedStatus(true, userInternal, providerId);\r\n const { providerUserInfo } = await deleteLinkedAccounts(userInternal.auth, {\r\n idToken: await userInternal.getIdToken(),\r\n deleteProvider: [providerId]\r\n });\r\n const providersLeft = providerDataAsNames(providerUserInfo || []);\r\n userInternal.providerData = userInternal.providerData.filter(pd => providersLeft.has(pd.providerId));\r\n if (!providersLeft.has(\"phone\" /* PHONE */)) {\r\n userInternal.phoneNumber = null;\r\n }\r\n await userInternal.auth._persistUserIfCurrent(userInternal);\r\n return userInternal;\r\n}\r\nasync function _link$1(user, credential, bypassAuthState = false) {\r\n const response = await _logoutIfInvalidated(user, credential._linkToIdToken(user.auth, await user.getIdToken()), bypassAuthState);\r\n return UserCredentialImpl._forOperation(user, \"link\" /* LINK */, response);\r\n}\r\nasync function _assertLinkedStatus(expected, user, provider) {\r\n await _reloadWithoutSaving(user);\r\n const providerIds = providerDataAsNames(user.providerData);\r\n const code = expected === false\r\n ? \"provider-already-linked\" /* PROVIDER_ALREADY_LINKED */\r\n : \"no-such-provider\" /* NO_SUCH_PROVIDER */;\r\n _assert(providerIds.has(provider) === expected, user.auth, code);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function _reauthenticate(user, credential, bypassAuthState = false) {\r\n const { auth } = user;\r\n const operationType = \"reauthenticate\" /* REAUTHENTICATE */;\r\n try {\r\n const response = await _logoutIfInvalidated(user, _processCredentialSavingMfaContextIfNecessary(auth, operationType, credential, user), bypassAuthState);\r\n _assert(response.idToken, auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n const parsed = _parseToken(response.idToken);\r\n _assert(parsed, auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n const { sub: localId } = parsed;\r\n _assert(user.uid === localId, auth, \"user-mismatch\" /* USER_MISMATCH */);\r\n return UserCredentialImpl._forOperation(user, operationType, response);\r\n }\r\n catch (e) {\r\n // Convert user deleted error into user mismatch\r\n if ((e === null || e === void 0 ? void 0 : e.code) === `auth/${\"user-not-found\" /* USER_DELETED */}`) {\r\n _fail(auth, \"user-mismatch\" /* USER_MISMATCH */);\r\n }\r\n throw e;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function _signInWithCredential(auth, credential, bypassAuthState = false) {\r\n const operationType = \"signIn\" /* SIGN_IN */;\r\n const response = await _processCredentialSavingMfaContextIfNecessary(auth, operationType, credential);\r\n const userCredential = await UserCredentialImpl._fromIdTokenResponse(auth, operationType, response);\r\n if (!bypassAuthState) {\r\n await auth._updateCurrentUser(userCredential.user);\r\n }\r\n return userCredential;\r\n}\r\n/**\r\n * Asynchronously signs in with the given credentials.\r\n *\r\n * @remarks\r\n * An {@link AuthProvider} can be used to generate the credential.\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param credential - The auth credential.\r\n *\r\n * @public\r\n */\r\nasync function signInWithCredential(auth, credential) {\r\n return _signInWithCredential(_castAuth(auth), credential);\r\n}\r\n/**\r\n * Links the user account with the given credentials.\r\n *\r\n * @remarks\r\n * An {@link AuthProvider} can be used to generate the credential.\r\n *\r\n * @param user - The user.\r\n * @param credential - The auth credential.\r\n *\r\n * @public\r\n */\r\nasync function linkWithCredential(user, credential) {\r\n const userInternal = getModularInstance(user);\r\n await _assertLinkedStatus(false, userInternal, credential.providerId);\r\n return _link$1(userInternal, credential);\r\n}\r\n/**\r\n * Re-authenticates a user using a fresh credential.\r\n *\r\n * @remarks\r\n * Use before operations such as {@link updatePassword} that require tokens from recent sign-in\r\n * attempts. This method can be used to recover from a `CREDENTIAL_TOO_OLD_LOGIN_AGAIN` error.\r\n *\r\n * @param user - The user.\r\n * @param credential - The auth credential.\r\n *\r\n * @public\r\n */\r\nasync function reauthenticateWithCredential(user, credential) {\r\n return _reauthenticate(getModularInstance(user), credential);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function signInWithCustomToken$1(auth, request) {\r\n return _performSignInRequest(auth, \"POST\" /* POST */, \"/v1/accounts:signInWithCustomToken\" /* SIGN_IN_WITH_CUSTOM_TOKEN */, _addTidIfNecessary(auth, request));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Asynchronously signs in using a custom token.\r\n *\r\n * @remarks\r\n * Custom tokens are used to integrate Firebase Auth with existing auth systems, and must\r\n * be generated by an auth backend using the\r\n * {@link https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#createcustomtoken | createCustomToken}\r\n * method in the {@link https://firebase.google.com/docs/auth/admin | Admin SDK} .\r\n *\r\n * Fails with an error if the token is invalid, expired, or not accepted by the Firebase Auth service.\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param customToken - The custom token to sign in with.\r\n *\r\n * @public\r\n */\r\nasync function signInWithCustomToken(auth, customToken) {\r\n const authInternal = _castAuth(auth);\r\n const response = await signInWithCustomToken$1(authInternal, {\r\n token: customToken,\r\n returnSecureToken: true\r\n });\r\n const cred = await UserCredentialImpl._fromIdTokenResponse(authInternal, \"signIn\" /* SIGN_IN */, response);\r\n await authInternal._updateCurrentUser(cred.user);\r\n return cred;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass MultiFactorInfoImpl {\r\n constructor(factorId, response) {\r\n this.factorId = factorId;\r\n this.uid = response.mfaEnrollmentId;\r\n this.enrollmentTime = new Date(response.enrolledAt).toUTCString();\r\n this.displayName = response.displayName;\r\n }\r\n static _fromServerResponse(auth, enrollment) {\r\n if ('phoneInfo' in enrollment) {\r\n return PhoneMultiFactorInfoImpl._fromServerResponse(auth, enrollment);\r\n }\r\n return _fail(auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n }\r\n}\r\nclass PhoneMultiFactorInfoImpl extends MultiFactorInfoImpl {\r\n constructor(response) {\r\n super(\"phone\" /* PHONE */, response);\r\n this.phoneNumber = response.phoneInfo;\r\n }\r\n static _fromServerResponse(_auth, enrollment) {\r\n return new PhoneMultiFactorInfoImpl(enrollment);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction _setActionCodeSettingsOnRequest(auth, request, actionCodeSettings) {\r\n var _a;\r\n _assert(((_a = actionCodeSettings.url) === null || _a === void 0 ? void 0 : _a.length) > 0, auth, \"invalid-continue-uri\" /* INVALID_CONTINUE_URI */);\r\n _assert(typeof actionCodeSettings.dynamicLinkDomain === 'undefined' ||\r\n actionCodeSettings.dynamicLinkDomain.length > 0, auth, \"invalid-dynamic-link-domain\" /* INVALID_DYNAMIC_LINK_DOMAIN */);\r\n request.continueUrl = actionCodeSettings.url;\r\n request.dynamicLinkDomain = actionCodeSettings.dynamicLinkDomain;\r\n request.canHandleCodeInApp = actionCodeSettings.handleCodeInApp;\r\n if (actionCodeSettings.iOS) {\r\n _assert(actionCodeSettings.iOS.bundleId.length > 0, auth, \"missing-ios-bundle-id\" /* MISSING_IOS_BUNDLE_ID */);\r\n request.iOSBundleId = actionCodeSettings.iOS.bundleId;\r\n }\r\n if (actionCodeSettings.android) {\r\n _assert(actionCodeSettings.android.packageName.length > 0, auth, \"missing-android-pkg-name\" /* MISSING_ANDROID_PACKAGE_NAME */);\r\n request.androidInstallApp = actionCodeSettings.android.installApp;\r\n request.androidMinimumVersionCode =\r\n actionCodeSettings.android.minimumVersion;\r\n request.androidPackageName = actionCodeSettings.android.packageName;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Sends a password reset email to the given email address.\r\n *\r\n * @remarks\r\n * To complete the password reset, call {@link confirmPasswordReset} with the code supplied in\r\n * the email sent to the user, along with the new password specified by the user.\r\n *\r\n * @example\r\n * ```javascript\r\n * const actionCodeSettings = {\r\n * url: 'https://www.example.com/?email=user@example.com',\r\n * iOS: {\r\n * bundleId: 'com.example.ios'\r\n * },\r\n * android: {\r\n * packageName: 'com.example.android',\r\n * installApp: true,\r\n * minimumVersion: '12'\r\n * },\r\n * handleCodeInApp: true\r\n * };\r\n * await sendPasswordResetEmail(auth, 'user@example.com', actionCodeSettings);\r\n * // Obtain code from user.\r\n * await confirmPasswordReset('user@example.com', code);\r\n * ```\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param email - The user's email address.\r\n * @param actionCodeSettings - The {@link ActionCodeSettings}.\r\n *\r\n * @public\r\n */\r\nasync function sendPasswordResetEmail(auth, email, actionCodeSettings) {\r\n const authModular = getModularInstance(auth);\r\n const request = {\r\n requestType: \"PASSWORD_RESET\" /* PASSWORD_RESET */,\r\n email\r\n };\r\n if (actionCodeSettings) {\r\n _setActionCodeSettingsOnRequest(authModular, request, actionCodeSettings);\r\n }\r\n await sendPasswordResetEmail$1(authModular, request);\r\n}\r\n/**\r\n * Completes the password reset process, given a confirmation code and new password.\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param oobCode - A confirmation code sent to the user.\r\n * @param newPassword - The new password.\r\n *\r\n * @public\r\n */\r\nasync function confirmPasswordReset(auth, oobCode, newPassword) {\r\n await resetPassword(getModularInstance(auth), {\r\n oobCode,\r\n newPassword\r\n });\r\n // Do not return the email.\r\n}\r\n/**\r\n * Applies a verification code sent to the user by email or other out-of-band mechanism.\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param oobCode - A verification code sent to the user.\r\n *\r\n * @public\r\n */\r\nasync function applyActionCode(auth, oobCode) {\r\n await applyActionCode$1(getModularInstance(auth), { oobCode });\r\n}\r\n/**\r\n * Checks a verification code sent to the user by email or other out-of-band mechanism.\r\n *\r\n * @returns metadata about the code.\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param oobCode - A verification code sent to the user.\r\n *\r\n * @public\r\n */\r\nasync function checkActionCode(auth, oobCode) {\r\n const authModular = getModularInstance(auth);\r\n const response = await resetPassword(authModular, { oobCode });\r\n // Email could be empty only if the request type is EMAIL_SIGNIN or\r\n // VERIFY_AND_CHANGE_EMAIL.\r\n // New email should not be empty if the request type is\r\n // VERIFY_AND_CHANGE_EMAIL.\r\n // Multi-factor info could not be empty if the request type is\r\n // REVERT_SECOND_FACTOR_ADDITION.\r\n const operation = response.requestType;\r\n _assert(operation, authModular, \"internal-error\" /* INTERNAL_ERROR */);\r\n switch (operation) {\r\n case \"EMAIL_SIGNIN\" /* EMAIL_SIGNIN */:\r\n break;\r\n case \"VERIFY_AND_CHANGE_EMAIL\" /* VERIFY_AND_CHANGE_EMAIL */:\r\n _assert(response.newEmail, authModular, \"internal-error\" /* INTERNAL_ERROR */);\r\n break;\r\n case \"REVERT_SECOND_FACTOR_ADDITION\" /* REVERT_SECOND_FACTOR_ADDITION */:\r\n _assert(response.mfaInfo, authModular, \"internal-error\" /* INTERNAL_ERROR */);\r\n // fall through\r\n default:\r\n _assert(response.email, authModular, \"internal-error\" /* INTERNAL_ERROR */);\r\n }\r\n // The multi-factor info for revert second factor addition\r\n let multiFactorInfo = null;\r\n if (response.mfaInfo) {\r\n multiFactorInfo = MultiFactorInfoImpl._fromServerResponse(_castAuth(authModular), response.mfaInfo);\r\n }\r\n return {\r\n data: {\r\n email: (response.requestType === \"VERIFY_AND_CHANGE_EMAIL\" /* VERIFY_AND_CHANGE_EMAIL */\r\n ? response.newEmail\r\n : response.email) || null,\r\n previousEmail: (response.requestType === \"VERIFY_AND_CHANGE_EMAIL\" /* VERIFY_AND_CHANGE_EMAIL */\r\n ? response.email\r\n : response.newEmail) || null,\r\n multiFactorInfo\r\n },\r\n operation\r\n };\r\n}\r\n/**\r\n * Checks a password reset code sent to the user by email or other out-of-band mechanism.\r\n *\r\n * @returns the user's email address if valid.\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param code - A verification code sent to the user.\r\n *\r\n * @public\r\n */\r\nasync function verifyPasswordResetCode(auth, code) {\r\n const { data } = await checkActionCode(getModularInstance(auth), code);\r\n // Email should always be present since a code was sent to it\r\n return data.email;\r\n}\r\n/**\r\n * Creates a new user account associated with the specified email address and password.\r\n *\r\n * @remarks\r\n * On successful creation of the user account, this user will also be signed in to your application.\r\n *\r\n * User account creation can fail if the account already exists or the password is invalid.\r\n *\r\n * Note: The email address acts as a unique identifier for the user and enables an email-based\r\n * password reset. This function will create a new user account and set the initial user password.\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param email - The user's email address.\r\n * @param password - The user's chosen password.\r\n *\r\n * @public\r\n */\r\nasync function createUserWithEmailAndPassword(auth, email, password) {\r\n const authInternal = _castAuth(auth);\r\n const response = await signUp(authInternal, {\r\n returnSecureToken: true,\r\n email,\r\n password\r\n });\r\n const userCredential = await UserCredentialImpl._fromIdTokenResponse(authInternal, \"signIn\" /* SIGN_IN */, response);\r\n await authInternal._updateCurrentUser(userCredential.user);\r\n return userCredential;\r\n}\r\n/**\r\n * Asynchronously signs in using an email and password.\r\n *\r\n * @remarks\r\n * Fails with an error if the email address and password do not match.\r\n *\r\n * Note: The user's password is NOT the password used to access the user's email account. The\r\n * email address serves as a unique identifier for the user, and the password is used to access\r\n * the user's account in your Firebase project. See also: {@link createUserWithEmailAndPassword}.\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param email - The users email address.\r\n * @param password - The users password.\r\n *\r\n * @public\r\n */\r\nfunction signInWithEmailAndPassword(auth, email, password) {\r\n return signInWithCredential(getModularInstance(auth), EmailAuthProvider.credential(email, password));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Sends a sign-in email link to the user with the specified email.\r\n *\r\n * @remarks\r\n * The sign-in operation has to always be completed in the app unlike other out of band email\r\n * actions (password reset and email verifications). This is because, at the end of the flow,\r\n * the user is expected to be signed in and their Auth state persisted within the app.\r\n *\r\n * To complete sign in with the email link, call {@link signInWithEmailLink} with the email\r\n * address and the email link supplied in the email sent to the user.\r\n *\r\n * @example\r\n * ```javascript\r\n * const actionCodeSettings = {\r\n * url: 'https://www.example.com/?email=user@example.com',\r\n * iOS: {\r\n * bundleId: 'com.example.ios'\r\n * },\r\n * android: {\r\n * packageName: 'com.example.android',\r\n * installApp: true,\r\n * minimumVersion: '12'\r\n * },\r\n * handleCodeInApp: true\r\n * };\r\n * await sendSignInLinkToEmail(auth, 'user@example.com', actionCodeSettings);\r\n * // Obtain emailLink from the user.\r\n * if(isSignInWithEmailLink(auth, emailLink)) {\r\n * await signInWithEmailLink(auth, 'user@example.com', emailLink);\r\n * }\r\n * ```\r\n *\r\n * @param authInternal - The {@link Auth} instance.\r\n * @param email - The user's email address.\r\n * @param actionCodeSettings - The {@link ActionCodeSettings}.\r\n *\r\n * @public\r\n */\r\nasync function sendSignInLinkToEmail(auth, email, actionCodeSettings) {\r\n const authModular = getModularInstance(auth);\r\n const request = {\r\n requestType: \"EMAIL_SIGNIN\" /* EMAIL_SIGNIN */,\r\n email\r\n };\r\n _assert(actionCodeSettings.handleCodeInApp, authModular, \"argument-error\" /* ARGUMENT_ERROR */);\r\n if (actionCodeSettings) {\r\n _setActionCodeSettingsOnRequest(authModular, request, actionCodeSettings);\r\n }\r\n await sendSignInLinkToEmail$1(authModular, request);\r\n}\r\n/**\r\n * Checks if an incoming link is a sign-in with email link suitable for {@link signInWithEmailLink}.\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param emailLink - The link sent to the user's email address.\r\n *\r\n * @public\r\n */\r\nfunction isSignInWithEmailLink(auth, emailLink) {\r\n const actionCodeUrl = ActionCodeURL.parseLink(emailLink);\r\n return (actionCodeUrl === null || actionCodeUrl === void 0 ? void 0 : actionCodeUrl.operation) === \"EMAIL_SIGNIN\" /* EMAIL_SIGNIN */;\r\n}\r\n/**\r\n * Asynchronously signs in using an email and sign-in email link.\r\n *\r\n * @remarks\r\n * If no link is passed, the link is inferred from the current URL.\r\n *\r\n * Fails with an error if the email address is invalid or OTP in email link expires.\r\n *\r\n * Note: Confirm the link is a sign-in email link before calling this method firebase.auth.Auth.isSignInWithEmailLink.\r\n *\r\n * @example\r\n * ```javascript\r\n * const actionCodeSettings = {\r\n * url: 'https://www.example.com/?email=user@example.com',\r\n * iOS: {\r\n * bundleId: 'com.example.ios'\r\n * },\r\n * android: {\r\n * packageName: 'com.example.android',\r\n * installApp: true,\r\n * minimumVersion: '12'\r\n * },\r\n * handleCodeInApp: true\r\n * };\r\n * await sendSignInLinkToEmail(auth, 'user@example.com', actionCodeSettings);\r\n * // Obtain emailLink from the user.\r\n * if(isSignInWithEmailLink(auth, emailLink)) {\r\n * await signInWithEmailLink(auth, 'user@example.com', emailLink);\r\n * }\r\n * ```\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param email - The user's email address.\r\n * @param emailLink - The link sent to the user's email address.\r\n *\r\n * @public\r\n */\r\nasync function signInWithEmailLink(auth, email, emailLink) {\r\n const authModular = getModularInstance(auth);\r\n const credential = EmailAuthProvider.credentialWithLink(email, emailLink || _getCurrentUrl());\r\n // Check if the tenant ID in the email link matches the tenant ID on Auth\r\n // instance.\r\n _assert(credential._tenantId === (authModular.tenantId || null), authModular, \"tenant-id-mismatch\" /* TENANT_ID_MISMATCH */);\r\n return signInWithCredential(authModular, credential);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function createAuthUri(auth, request) {\r\n return _performApiRequest(auth, \"POST\" /* POST */, \"/v1/accounts:createAuthUri\" /* CREATE_AUTH_URI */, _addTidIfNecessary(auth, request));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Gets the list of possible sign in methods for the given email address.\r\n *\r\n * @remarks\r\n * This is useful to differentiate methods of sign-in for the same provider, eg.\r\n * {@link EmailAuthProvider} which has 2 methods of sign-in,\r\n * {@link SignInMethod}.EMAIL_PASSWORD and\r\n * {@link SignInMethod}.EMAIL_LINK.\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param email - The user's email address.\r\n *\r\n * @public\r\n */\r\nasync function fetchSignInMethodsForEmail(auth, email) {\r\n // createAuthUri returns an error if continue URI is not http or https.\r\n // For environments like Cordova, Chrome extensions, native frameworks, file\r\n // systems, etc, use http://localhost as continue URL.\r\n const continueUri = _isHttpOrHttps() ? _getCurrentUrl() : 'http://localhost';\r\n const request = {\r\n identifier: email,\r\n continueUri\r\n };\r\n const { signinMethods } = await createAuthUri(getModularInstance(auth), request);\r\n return signinMethods || [];\r\n}\r\n/**\r\n * Sends a verification email to a user.\r\n *\r\n * @remarks\r\n * The verification process is completed by calling {@link applyActionCode}.\r\n *\r\n * @example\r\n * ```javascript\r\n * const actionCodeSettings = {\r\n * url: 'https://www.example.com/?email=user@example.com',\r\n * iOS: {\r\n * bundleId: 'com.example.ios'\r\n * },\r\n * android: {\r\n * packageName: 'com.example.android',\r\n * installApp: true,\r\n * minimumVersion: '12'\r\n * },\r\n * handleCodeInApp: true\r\n * };\r\n * await sendEmailVerification(user, actionCodeSettings);\r\n * // Obtain code from the user.\r\n * await applyActionCode(auth, code);\r\n * ```\r\n *\r\n * @param user - The user.\r\n * @param actionCodeSettings - The {@link ActionCodeSettings}.\r\n *\r\n * @public\r\n */\r\nasync function sendEmailVerification(user, actionCodeSettings) {\r\n const userInternal = getModularInstance(user);\r\n const idToken = await user.getIdToken();\r\n const request = {\r\n requestType: \"VERIFY_EMAIL\" /* VERIFY_EMAIL */,\r\n idToken\r\n };\r\n if (actionCodeSettings) {\r\n _setActionCodeSettingsOnRequest(userInternal.auth, request, actionCodeSettings);\r\n }\r\n const { email } = await sendEmailVerification$1(userInternal.auth, request);\r\n if (email !== user.email) {\r\n await user.reload();\r\n }\r\n}\r\n/**\r\n * Sends a verification email to a new email address.\r\n *\r\n * @remarks\r\n * The user's email will be updated to the new one after being verified.\r\n *\r\n * If you have a custom email action handler, you can complete the verification process by calling\r\n * {@link applyActionCode}.\r\n *\r\n * @example\r\n * ```javascript\r\n * const actionCodeSettings = {\r\n * url: 'https://www.example.com/?email=user@example.com',\r\n * iOS: {\r\n * bundleId: 'com.example.ios'\r\n * },\r\n * android: {\r\n * packageName: 'com.example.android',\r\n * installApp: true,\r\n * minimumVersion: '12'\r\n * },\r\n * handleCodeInApp: true\r\n * };\r\n * await verifyBeforeUpdateEmail(user, 'newemail@example.com', actionCodeSettings);\r\n * // Obtain code from the user.\r\n * await applyActionCode(auth, code);\r\n * ```\r\n *\r\n * @param user - The user.\r\n * @param newEmail - The new email address to be verified before update.\r\n * @param actionCodeSettings - The {@link ActionCodeSettings}.\r\n *\r\n * @public\r\n */\r\nasync function verifyBeforeUpdateEmail(user, newEmail, actionCodeSettings) {\r\n const userInternal = getModularInstance(user);\r\n const idToken = await user.getIdToken();\r\n const request = {\r\n requestType: \"VERIFY_AND_CHANGE_EMAIL\" /* VERIFY_AND_CHANGE_EMAIL */,\r\n idToken,\r\n newEmail\r\n };\r\n if (actionCodeSettings) {\r\n _setActionCodeSettingsOnRequest(userInternal.auth, request, actionCodeSettings);\r\n }\r\n const { email } = await verifyAndChangeEmail(userInternal.auth, request);\r\n if (email !== user.email) {\r\n // If the local copy of the email on user is outdated, reload the\r\n // user.\r\n await user.reload();\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function updateProfile$1(auth, request) {\r\n return _performApiRequest(auth, \"POST\" /* POST */, \"/v1/accounts:update\" /* SET_ACCOUNT_INFO */, request);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Updates a user's profile data.\r\n *\r\n * @param user - The user.\r\n * @param profile - The profile's `displayName` and `photoURL` to update.\r\n *\r\n * @public\r\n */\r\nasync function updateProfile(user, { displayName, photoURL: photoUrl }) {\r\n if (displayName === undefined && photoUrl === undefined) {\r\n return;\r\n }\r\n const userInternal = getModularInstance(user);\r\n const idToken = await userInternal.getIdToken();\r\n const profileRequest = {\r\n idToken,\r\n displayName,\r\n photoUrl,\r\n returnSecureToken: true\r\n };\r\n const response = await _logoutIfInvalidated(userInternal, updateProfile$1(userInternal.auth, profileRequest));\r\n userInternal.displayName = response.displayName || null;\r\n userInternal.photoURL = response.photoUrl || null;\r\n // Update the password provider as well\r\n const passwordProvider = userInternal.providerData.find(({ providerId }) => providerId === \"password\" /* PASSWORD */);\r\n if (passwordProvider) {\r\n passwordProvider.displayName = userInternal.displayName;\r\n passwordProvider.photoURL = userInternal.photoURL;\r\n }\r\n await userInternal._updateTokensIfNecessary(response);\r\n}\r\n/**\r\n * Updates the user's email address.\r\n *\r\n * @remarks\r\n * An email will be sent to the original email address (if it was set) that allows to revoke the\r\n * email address change, in order to protect them from account hijacking.\r\n *\r\n * Important: this is a security sensitive operation that requires the user to have recently signed\r\n * in. If this requirement isn't met, ask the user to authenticate again and then call\r\n * {@link reauthenticateWithCredential}.\r\n *\r\n * @param user - The user.\r\n * @param newEmail - The new email address.\r\n *\r\n * @public\r\n */\r\nfunction updateEmail(user, newEmail) {\r\n return updateEmailOrPassword(getModularInstance(user), newEmail, null);\r\n}\r\n/**\r\n * Updates the user's password.\r\n *\r\n * @remarks\r\n * Important: this is a security sensitive operation that requires the user to have recently signed\r\n * in. If this requirement isn't met, ask the user to authenticate again and then call\r\n * {@link reauthenticateWithCredential}.\r\n *\r\n * @param user - The user.\r\n * @param newPassword - The new password.\r\n *\r\n * @public\r\n */\r\nfunction updatePassword(user, newPassword) {\r\n return updateEmailOrPassword(getModularInstance(user), null, newPassword);\r\n}\r\nasync function updateEmailOrPassword(user, email, password) {\r\n const { auth } = user;\r\n const idToken = await user.getIdToken();\r\n const request = {\r\n idToken,\r\n returnSecureToken: true\r\n };\r\n if (email) {\r\n request.email = email;\r\n }\r\n if (password) {\r\n request.password = password;\r\n }\r\n const response = await _logoutIfInvalidated(user, updateEmailPassword(auth, request));\r\n await user._updateTokensIfNecessary(response, /* reload */ true);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Parse the `AdditionalUserInfo` from the ID token response.\r\n *\r\n */\r\nfunction _fromIdTokenResponse(idTokenResponse) {\r\n var _a, _b;\r\n if (!idTokenResponse) {\r\n return null;\r\n }\r\n const { providerId } = idTokenResponse;\r\n const profile = idTokenResponse.rawUserInfo\r\n ? JSON.parse(idTokenResponse.rawUserInfo)\r\n : {};\r\n const isNewUser = idTokenResponse.isNewUser ||\r\n idTokenResponse.kind === \"identitytoolkit#SignupNewUserResponse\" /* SignupNewUser */;\r\n if (!providerId && (idTokenResponse === null || idTokenResponse === void 0 ? void 0 : idTokenResponse.idToken)) {\r\n const signInProvider = (_b = (_a = _parseToken(idTokenResponse.idToken)) === null || _a === void 0 ? void 0 : _a.firebase) === null || _b === void 0 ? void 0 : _b['sign_in_provider'];\r\n if (signInProvider) {\r\n const filteredProviderId = signInProvider !== \"anonymous\" /* ANONYMOUS */ &&\r\n signInProvider !== \"custom\" /* CUSTOM */\r\n ? signInProvider\r\n : null;\r\n // Uses generic class in accordance with the legacy SDK.\r\n return new GenericAdditionalUserInfo(isNewUser, filteredProviderId);\r\n }\r\n }\r\n if (!providerId) {\r\n return null;\r\n }\r\n switch (providerId) {\r\n case \"facebook.com\" /* FACEBOOK */:\r\n return new FacebookAdditionalUserInfo(isNewUser, profile);\r\n case \"github.com\" /* GITHUB */:\r\n return new GithubAdditionalUserInfo(isNewUser, profile);\r\n case \"google.com\" /* GOOGLE */:\r\n return new GoogleAdditionalUserInfo(isNewUser, profile);\r\n case \"twitter.com\" /* TWITTER */:\r\n return new TwitterAdditionalUserInfo(isNewUser, profile, idTokenResponse.screenName || null);\r\n case \"custom\" /* CUSTOM */:\r\n case \"anonymous\" /* ANONYMOUS */:\r\n return new GenericAdditionalUserInfo(isNewUser, null);\r\n default:\r\n return new GenericAdditionalUserInfo(isNewUser, providerId, profile);\r\n }\r\n}\r\nclass GenericAdditionalUserInfo {\r\n constructor(isNewUser, providerId, profile = {}) {\r\n this.isNewUser = isNewUser;\r\n this.providerId = providerId;\r\n this.profile = profile;\r\n }\r\n}\r\nclass FederatedAdditionalUserInfoWithUsername extends GenericAdditionalUserInfo {\r\n constructor(isNewUser, providerId, profile, username) {\r\n super(isNewUser, providerId, profile);\r\n this.username = username;\r\n }\r\n}\r\nclass FacebookAdditionalUserInfo extends GenericAdditionalUserInfo {\r\n constructor(isNewUser, profile) {\r\n super(isNewUser, \"facebook.com\" /* FACEBOOK */, profile);\r\n }\r\n}\r\nclass GithubAdditionalUserInfo extends FederatedAdditionalUserInfoWithUsername {\r\n constructor(isNewUser, profile) {\r\n super(isNewUser, \"github.com\" /* GITHUB */, profile, typeof (profile === null || profile === void 0 ? void 0 : profile.login) === 'string' ? profile === null || profile === void 0 ? void 0 : profile.login : null);\r\n }\r\n}\r\nclass GoogleAdditionalUserInfo extends GenericAdditionalUserInfo {\r\n constructor(isNewUser, profile) {\r\n super(isNewUser, \"google.com\" /* GOOGLE */, profile);\r\n }\r\n}\r\nclass TwitterAdditionalUserInfo extends FederatedAdditionalUserInfoWithUsername {\r\n constructor(isNewUser, profile, screenName) {\r\n super(isNewUser, \"twitter.com\" /* TWITTER */, profile, screenName);\r\n }\r\n}\r\n/**\r\n * Extracts provider specific {@link AdditionalUserInfo} for the given credential.\r\n *\r\n * @param userCredential - The user credential.\r\n *\r\n * @public\r\n */\r\nfunction getAdditionalUserInfo(userCredential) {\r\n const { user, _tokenResponse } = userCredential;\r\n if (user.isAnonymous && !_tokenResponse) {\r\n // Handle the special case where signInAnonymously() gets called twice.\r\n // No network call is made so there's nothing to actually fill this in\r\n return {\r\n providerId: null,\r\n isNewUser: false,\r\n profile: null\r\n };\r\n }\r\n return _fromIdTokenResponse(_tokenResponse);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Non-optional auth methods.\r\n/**\r\n * Changes the type of persistence on the {@link Auth} instance for the currently saved\r\n * `Auth` session and applies this type of persistence for future sign-in requests, including\r\n * sign-in with redirect requests.\r\n *\r\n * @remarks\r\n * This makes it easy for a user signing in to specify whether their session should be\r\n * remembered or not. It also makes it easier to never persist the `Auth` state for applications\r\n * that are shared by other users or have sensitive data.\r\n *\r\n * @example\r\n * ```javascript\r\n * setPersistence(auth, browserSessionPersistence);\r\n * ```\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param persistence - The {@link Persistence} to use.\r\n * @returns A `Promise` that resolves once the persistence change has completed\r\n *\r\n * @public\r\n */\r\nfunction setPersistence(auth, persistence) {\r\n return getModularInstance(auth).setPersistence(persistence);\r\n}\r\n/**\r\n * Adds an observer for changes to the signed-in user's ID token.\r\n *\r\n * @remarks\r\n * This includes sign-in, sign-out, and token refresh events.\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param nextOrObserver - callback triggered on change.\r\n * @param error - Deprecated. This callback is never triggered. Errors\r\n * on signing in/out can be caught in promises returned from\r\n * sign-in/sign-out functions.\r\n * @param completed - Deprecated. This callback is never triggered.\r\n *\r\n * @public\r\n */\r\nfunction onIdTokenChanged(auth, nextOrObserver, error, completed) {\r\n return getModularInstance(auth).onIdTokenChanged(nextOrObserver, error, completed);\r\n}\r\n/**\r\n * Adds a blocking callback that runs before an auth state change\r\n * sets a new user.\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param callback - callback triggered before new user value is set.\r\n * If this throws, it blocks the user from being set.\r\n * @param onAbort - callback triggered if a later `beforeAuthStateChanged()`\r\n * callback throws, allowing you to undo any side effects.\r\n */\r\nfunction beforeAuthStateChanged(auth, callback, onAbort) {\r\n return getModularInstance(auth).beforeAuthStateChanged(callback, onAbort);\r\n}\r\n/**\r\n * Adds an observer for changes to the user's sign-in state.\r\n *\r\n * @remarks\r\n * To keep the old behavior, see {@link onIdTokenChanged}.\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param nextOrObserver - callback triggered on change.\r\n * @param error - Deprecated. This callback is never triggered. Errors\r\n * on signing in/out can be caught in promises returned from\r\n * sign-in/sign-out functions.\r\n * @param completed - Deprecated. This callback is never triggered.\r\n *\r\n * @public\r\n */\r\nfunction onAuthStateChanged(auth, nextOrObserver, error, completed) {\r\n return getModularInstance(auth).onAuthStateChanged(nextOrObserver, error, completed);\r\n}\r\n/**\r\n * Sets the current language to the default device/browser preference.\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n *\r\n * @public\r\n */\r\nfunction useDeviceLanguage(auth) {\r\n getModularInstance(auth).useDeviceLanguage();\r\n}\r\n/**\r\n * Asynchronously sets the provided user as {@link Auth.currentUser} on the\r\n * {@link Auth} instance.\r\n *\r\n * @remarks\r\n * A new instance copy of the user provided will be made and set as currentUser.\r\n *\r\n * This will trigger {@link onAuthStateChanged} and {@link onIdTokenChanged} listeners\r\n * like other sign in methods.\r\n *\r\n * The operation fails with an error if the user to be updated belongs to a different Firebase\r\n * project.\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param user - The new {@link User}.\r\n *\r\n * @public\r\n */\r\nfunction updateCurrentUser(auth, user) {\r\n return getModularInstance(auth).updateCurrentUser(user);\r\n}\r\n/**\r\n * Signs out the current user.\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n *\r\n * @public\r\n */\r\nfunction signOut(auth) {\r\n return getModularInstance(auth).signOut();\r\n}\r\n/**\r\n * Deletes and signs out the user.\r\n *\r\n * @remarks\r\n * Important: this is a security-sensitive operation that requires the user to have recently\r\n * signed in. If this requirement isn't met, ask the user to authenticate again and then call\r\n * {@link reauthenticateWithCredential}.\r\n *\r\n * @param user - The user.\r\n *\r\n * @public\r\n */\r\nasync function deleteUser(user) {\r\n return getModularInstance(user).delete();\r\n}\n\nclass MultiFactorSessionImpl {\r\n constructor(type, credential) {\r\n this.type = type;\r\n this.credential = credential;\r\n }\r\n static _fromIdtoken(idToken) {\r\n return new MultiFactorSessionImpl(\"enroll\" /* ENROLL */, idToken);\r\n }\r\n static _fromMfaPendingCredential(mfaPendingCredential) {\r\n return new MultiFactorSessionImpl(\"signin\" /* SIGN_IN */, mfaPendingCredential);\r\n }\r\n toJSON() {\r\n const key = this.type === \"enroll\" /* ENROLL */\r\n ? 'idToken'\r\n : 'pendingCredential';\r\n return {\r\n multiFactorSession: {\r\n [key]: this.credential\r\n }\r\n };\r\n }\r\n static fromJSON(obj) {\r\n var _a, _b;\r\n if (obj === null || obj === void 0 ? void 0 : obj.multiFactorSession) {\r\n if ((_a = obj.multiFactorSession) === null || _a === void 0 ? void 0 : _a.pendingCredential) {\r\n return MultiFactorSessionImpl._fromMfaPendingCredential(obj.multiFactorSession.pendingCredential);\r\n }\r\n else if ((_b = obj.multiFactorSession) === null || _b === void 0 ? void 0 : _b.idToken) {\r\n return MultiFactorSessionImpl._fromIdtoken(obj.multiFactorSession.idToken);\r\n }\r\n }\r\n return null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass MultiFactorResolverImpl {\r\n constructor(session, hints, signInResolver) {\r\n this.session = session;\r\n this.hints = hints;\r\n this.signInResolver = signInResolver;\r\n }\r\n /** @internal */\r\n static _fromError(authExtern, error) {\r\n const auth = _castAuth(authExtern);\r\n const serverResponse = error.customData._serverResponse;\r\n const hints = (serverResponse.mfaInfo || []).map(enrollment => MultiFactorInfoImpl._fromServerResponse(auth, enrollment));\r\n _assert(serverResponse.mfaPendingCredential, auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n const session = MultiFactorSessionImpl._fromMfaPendingCredential(serverResponse.mfaPendingCredential);\r\n return new MultiFactorResolverImpl(session, hints, async (assertion) => {\r\n const mfaResponse = await assertion._process(auth, session);\r\n // Clear out the unneeded fields from the old login response\r\n delete serverResponse.mfaInfo;\r\n delete serverResponse.mfaPendingCredential;\r\n // Use in the new token & refresh token in the old response\r\n const idTokenResponse = Object.assign(Object.assign({}, serverResponse), { idToken: mfaResponse.idToken, refreshToken: mfaResponse.refreshToken });\r\n // TODO: we should collapse this switch statement into UserCredentialImpl._forOperation and have it support the SIGN_IN case\r\n switch (error.operationType) {\r\n case \"signIn\" /* SIGN_IN */:\r\n const userCredential = await UserCredentialImpl._fromIdTokenResponse(auth, error.operationType, idTokenResponse);\r\n await auth._updateCurrentUser(userCredential.user);\r\n return userCredential;\r\n case \"reauthenticate\" /* REAUTHENTICATE */:\r\n _assert(error.user, auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n return UserCredentialImpl._forOperation(error.user, error.operationType, idTokenResponse);\r\n default:\r\n _fail(auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n }\r\n });\r\n }\r\n async resolveSignIn(assertionExtern) {\r\n const assertion = assertionExtern;\r\n return this.signInResolver(assertion);\r\n }\r\n}\r\n/**\r\n * Provides a {@link MultiFactorResolver} suitable for completion of a\r\n * multi-factor flow.\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param error - The {@link MultiFactorError} raised during a sign-in, or\r\n * reauthentication operation.\r\n *\r\n * @public\r\n */\r\nfunction getMultiFactorResolver(auth, error) {\r\n var _a;\r\n const authModular = getModularInstance(auth);\r\n const errorInternal = error;\r\n _assert(error.customData.operationType, authModular, \"argument-error\" /* ARGUMENT_ERROR */);\r\n _assert((_a = errorInternal.customData._serverResponse) === null || _a === void 0 ? void 0 : _a.mfaPendingCredential, authModular, \"argument-error\" /* ARGUMENT_ERROR */);\r\n return MultiFactorResolverImpl._fromError(authModular, errorInternal);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction startEnrollPhoneMfa(auth, request) {\r\n return _performApiRequest(auth, \"POST\" /* POST */, \"/v2/accounts/mfaEnrollment:start\" /* START_PHONE_MFA_ENROLLMENT */, _addTidIfNecessary(auth, request));\r\n}\r\nfunction finalizeEnrollPhoneMfa(auth, request) {\r\n return _performApiRequest(auth, \"POST\" /* POST */, \"/v2/accounts/mfaEnrollment:finalize\" /* FINALIZE_PHONE_MFA_ENROLLMENT */, _addTidIfNecessary(auth, request));\r\n}\r\nfunction withdrawMfa(auth, request) {\r\n return _performApiRequest(auth, \"POST\" /* POST */, \"/v2/accounts/mfaEnrollment:withdraw\" /* WITHDRAW_MFA */, _addTidIfNecessary(auth, request));\r\n}\n\nclass MultiFactorUserImpl {\r\n constructor(user) {\r\n this.user = user;\r\n this.enrolledFactors = [];\r\n user._onReload(userInfo => {\r\n if (userInfo.mfaInfo) {\r\n this.enrolledFactors = userInfo.mfaInfo.map(enrollment => MultiFactorInfoImpl._fromServerResponse(user.auth, enrollment));\r\n }\r\n });\r\n }\r\n static _fromUser(user) {\r\n return new MultiFactorUserImpl(user);\r\n }\r\n async getSession() {\r\n return MultiFactorSessionImpl._fromIdtoken(await this.user.getIdToken());\r\n }\r\n async enroll(assertionExtern, displayName) {\r\n const assertion = assertionExtern;\r\n const session = (await this.getSession());\r\n const finalizeMfaResponse = await _logoutIfInvalidated(this.user, assertion._process(this.user.auth, session, displayName));\r\n // New tokens will be issued after enrollment of the new second factors.\r\n // They need to be updated on the user.\r\n await this.user._updateTokensIfNecessary(finalizeMfaResponse);\r\n // The user needs to be reloaded to get the new multi-factor information\r\n // from server. USER_RELOADED event will be triggered and `enrolledFactors`\r\n // will be updated.\r\n return this.user.reload();\r\n }\r\n async unenroll(infoOrUid) {\r\n const mfaEnrollmentId = typeof infoOrUid === 'string' ? infoOrUid : infoOrUid.uid;\r\n const idToken = await this.user.getIdToken();\r\n const idTokenResponse = await _logoutIfInvalidated(this.user, withdrawMfa(this.user.auth, {\r\n idToken,\r\n mfaEnrollmentId\r\n }));\r\n // Remove the second factor from the user's list.\r\n this.enrolledFactors = this.enrolledFactors.filter(({ uid }) => uid !== mfaEnrollmentId);\r\n // Depending on whether the backend decided to revoke the user's session,\r\n // the tokenResponse may be empty. If the tokens were not updated (and they\r\n // are now invalid), reloading the user will discover this and invalidate\r\n // the user's state accordingly.\r\n await this.user._updateTokensIfNecessary(idTokenResponse);\r\n try {\r\n await this.user.reload();\r\n }\r\n catch (e) {\r\n if (e.code !== `auth/${\"user-token-expired\" /* TOKEN_EXPIRED */}`) {\r\n throw e;\r\n }\r\n }\r\n }\r\n}\r\nconst multiFactorUserCache = new WeakMap();\r\n/**\r\n * The {@link MultiFactorUser} corresponding to the user.\r\n *\r\n * @remarks\r\n * This is used to access all multi-factor properties and operations related to the user.\r\n *\r\n * @param user - The user.\r\n *\r\n * @public\r\n */\r\nfunction multiFactor(user) {\r\n const userModular = getModularInstance(user);\r\n if (!multiFactorUserCache.has(userModular)) {\r\n multiFactorUserCache.set(userModular, MultiFactorUserImpl._fromUser(userModular));\r\n }\r\n return multiFactorUserCache.get(userModular);\r\n}\n\nconst STORAGE_AVAILABLE_KEY = '__sak';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// There are two different browser persistence types: local and session.\r\n// Both have the same implementation but use a different underlying storage\r\n// object.\r\nclass BrowserPersistenceClass {\r\n constructor(storageRetriever, type) {\r\n this.storageRetriever = storageRetriever;\r\n this.type = type;\r\n }\r\n _isAvailable() {\r\n try {\r\n if (!this.storage) {\r\n return Promise.resolve(false);\r\n }\r\n this.storage.setItem(STORAGE_AVAILABLE_KEY, '1');\r\n this.storage.removeItem(STORAGE_AVAILABLE_KEY);\r\n return Promise.resolve(true);\r\n }\r\n catch (_a) {\r\n return Promise.resolve(false);\r\n }\r\n }\r\n _set(key, value) {\r\n this.storage.setItem(key, JSON.stringify(value));\r\n return Promise.resolve();\r\n }\r\n _get(key) {\r\n const json = this.storage.getItem(key);\r\n return Promise.resolve(json ? JSON.parse(json) : null);\r\n }\r\n _remove(key) {\r\n this.storage.removeItem(key);\r\n return Promise.resolve();\r\n }\r\n get storage() {\r\n return this.storageRetriever();\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction _iframeCannotSyncWebStorage() {\r\n const ua = getUA();\r\n return _isSafari(ua) || _isIOS(ua);\r\n}\r\n// The polling period in case events are not supported\r\nconst _POLLING_INTERVAL_MS$1 = 1000;\r\n// The IE 10 localStorage cross tab synchronization delay in milliseconds\r\nconst IE10_LOCAL_STORAGE_SYNC_DELAY = 10;\r\nclass BrowserLocalPersistence extends BrowserPersistenceClass {\r\n constructor() {\r\n super(() => window.localStorage, \"LOCAL\" /* LOCAL */);\r\n this.boundEventHandler = (event, poll) => this.onStorageEvent(event, poll);\r\n this.listeners = {};\r\n this.localCache = {};\r\n // setTimeout return value is platform specific\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.pollTimer = null;\r\n // Safari or iOS browser and embedded in an iframe.\r\n this.safariLocalStorageNotSynced = _iframeCannotSyncWebStorage() && _isIframe();\r\n // Whether to use polling instead of depending on window events\r\n this.fallbackToPolling = _isMobileBrowser();\r\n this._shouldAllowMigration = true;\r\n }\r\n forAllChangedKeys(cb) {\r\n // Check all keys with listeners on them.\r\n for (const key of Object.keys(this.listeners)) {\r\n // Get value from localStorage.\r\n const newValue = this.storage.getItem(key);\r\n const oldValue = this.localCache[key];\r\n // If local map value does not match, trigger listener with storage event.\r\n // Differentiate this simulated event from the real storage event.\r\n if (newValue !== oldValue) {\r\n cb(key, oldValue, newValue);\r\n }\r\n }\r\n }\r\n onStorageEvent(event, poll = false) {\r\n // Key would be null in some situations, like when localStorage is cleared\r\n if (!event.key) {\r\n this.forAllChangedKeys((key, _oldValue, newValue) => {\r\n this.notifyListeners(key, newValue);\r\n });\r\n return;\r\n }\r\n const key = event.key;\r\n // Check the mechanism how this event was detected.\r\n // The first event will dictate the mechanism to be used.\r\n if (poll) {\r\n // Environment detects storage changes via polling.\r\n // Remove storage event listener to prevent possible event duplication.\r\n this.detachListener();\r\n }\r\n else {\r\n // Environment detects storage changes via storage event listener.\r\n // Remove polling listener to prevent possible event duplication.\r\n this.stopPolling();\r\n }\r\n // Safari embedded iframe. Storage event will trigger with the delta\r\n // changes but no changes will be applied to the iframe localStorage.\r\n if (this.safariLocalStorageNotSynced) {\r\n // Get current iframe page value.\r\n const storedValue = this.storage.getItem(key);\r\n // Value not synchronized, synchronize manually.\r\n if (event.newValue !== storedValue) {\r\n if (event.newValue !== null) {\r\n // Value changed from current value.\r\n this.storage.setItem(key, event.newValue);\r\n }\r\n else {\r\n // Current value deleted.\r\n this.storage.removeItem(key);\r\n }\r\n }\r\n else if (this.localCache[key] === event.newValue && !poll) {\r\n // Already detected and processed, do not trigger listeners again.\r\n return;\r\n }\r\n }\r\n const triggerListeners = () => {\r\n // Keep local map up to date in case storage event is triggered before\r\n // poll.\r\n const storedValue = this.storage.getItem(key);\r\n if (!poll && this.localCache[key] === storedValue) {\r\n // Real storage event which has already been detected, do nothing.\r\n // This seems to trigger in some IE browsers for some reason.\r\n return;\r\n }\r\n this.notifyListeners(key, storedValue);\r\n };\r\n const storedValue = this.storage.getItem(key);\r\n if (_isIE10() &&\r\n storedValue !== event.newValue &&\r\n event.newValue !== event.oldValue) {\r\n // IE 10 has this weird bug where a storage event would trigger with the\r\n // correct key, oldValue and newValue but localStorage.getItem(key) does\r\n // not yield the updated value until a few milliseconds. This ensures\r\n // this recovers from that situation.\r\n setTimeout(triggerListeners, IE10_LOCAL_STORAGE_SYNC_DELAY);\r\n }\r\n else {\r\n triggerListeners();\r\n }\r\n }\r\n notifyListeners(key, value) {\r\n this.localCache[key] = value;\r\n const listeners = this.listeners[key];\r\n if (listeners) {\r\n for (const listener of Array.from(listeners)) {\r\n listener(value ? JSON.parse(value) : value);\r\n }\r\n }\r\n }\r\n startPolling() {\r\n this.stopPolling();\r\n this.pollTimer = setInterval(() => {\r\n this.forAllChangedKeys((key, oldValue, newValue) => {\r\n this.onStorageEvent(new StorageEvent('storage', {\r\n key,\r\n oldValue,\r\n newValue\r\n }), \r\n /* poll */ true);\r\n });\r\n }, _POLLING_INTERVAL_MS$1);\r\n }\r\n stopPolling() {\r\n if (this.pollTimer) {\r\n clearInterval(this.pollTimer);\r\n this.pollTimer = null;\r\n }\r\n }\r\n attachListener() {\r\n window.addEventListener('storage', this.boundEventHandler);\r\n }\r\n detachListener() {\r\n window.removeEventListener('storage', this.boundEventHandler);\r\n }\r\n _addListener(key, listener) {\r\n if (Object.keys(this.listeners).length === 0) {\r\n // Whether browser can detect storage event when it had already been pushed to the background.\r\n // This may happen in some mobile browsers. A localStorage change in the foreground window\r\n // will not be detected in the background window via the storage event.\r\n // This was detected in iOS 7.x mobile browsers\r\n if (this.fallbackToPolling) {\r\n this.startPolling();\r\n }\r\n else {\r\n this.attachListener();\r\n }\r\n }\r\n if (!this.listeners[key]) {\r\n this.listeners[key] = new Set();\r\n // Populate the cache to avoid spuriously triggering on first poll.\r\n this.localCache[key] = this.storage.getItem(key);\r\n }\r\n this.listeners[key].add(listener);\r\n }\r\n _removeListener(key, listener) {\r\n if (this.listeners[key]) {\r\n this.listeners[key].delete(listener);\r\n if (this.listeners[key].size === 0) {\r\n delete this.listeners[key];\r\n }\r\n }\r\n if (Object.keys(this.listeners).length === 0) {\r\n this.detachListener();\r\n this.stopPolling();\r\n }\r\n }\r\n // Update local cache on base operations:\r\n async _set(key, value) {\r\n await super._set(key, value);\r\n this.localCache[key] = JSON.stringify(value);\r\n }\r\n async _get(key) {\r\n const value = await super._get(key);\r\n this.localCache[key] = JSON.stringify(value);\r\n return value;\r\n }\r\n async _remove(key) {\r\n await super._remove(key);\r\n delete this.localCache[key];\r\n }\r\n}\r\nBrowserLocalPersistence.type = 'LOCAL';\r\n/**\r\n * An implementation of {@link Persistence} of type `LOCAL` using `localStorage`\r\n * for the underlying storage.\r\n *\r\n * @public\r\n */\r\nconst browserLocalPersistence = BrowserLocalPersistence;\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass BrowserSessionPersistence extends BrowserPersistenceClass {\r\n constructor() {\r\n super(() => window.sessionStorage, \"SESSION\" /* SESSION */);\r\n }\r\n _addListener(_key, _listener) {\r\n // Listeners are not supported for session storage since it cannot be shared across windows\r\n return;\r\n }\r\n _removeListener(_key, _listener) {\r\n // Listeners are not supported for session storage since it cannot be shared across windows\r\n return;\r\n }\r\n}\r\nBrowserSessionPersistence.type = 'SESSION';\r\n/**\r\n * An implementation of {@link Persistence} of `SESSION` using `sessionStorage`\r\n * for the underlying storage.\r\n *\r\n * @public\r\n */\r\nconst browserSessionPersistence = BrowserSessionPersistence;\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Shim for Promise.allSettled, note the slightly different format of `fulfilled` vs `status`.\r\n *\r\n * @param promises - Array of promises to wait on.\r\n */\r\nfunction _allSettled(promises) {\r\n return Promise.all(promises.map(async (promise) => {\r\n try {\r\n const value = await promise;\r\n return {\r\n fulfilled: true,\r\n value\r\n };\r\n }\r\n catch (reason) {\r\n return {\r\n fulfilled: false,\r\n reason\r\n };\r\n }\r\n }));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Interface class for receiving messages.\r\n *\r\n */\r\nclass Receiver {\r\n constructor(eventTarget) {\r\n this.eventTarget = eventTarget;\r\n this.handlersMap = {};\r\n this.boundEventHandler = this.handleEvent.bind(this);\r\n }\r\n /**\r\n * Obtain an instance of a Receiver for a given event target, if none exists it will be created.\r\n *\r\n * @param eventTarget - An event target (such as window or self) through which the underlying\r\n * messages will be received.\r\n */\r\n static _getInstance(eventTarget) {\r\n // The results are stored in an array since objects can't be keys for other\r\n // objects. In addition, setting a unique property on an event target as a\r\n // hash map key may not be allowed due to CORS restrictions.\r\n const existingInstance = this.receivers.find(receiver => receiver.isListeningto(eventTarget));\r\n if (existingInstance) {\r\n return existingInstance;\r\n }\r\n const newInstance = new Receiver(eventTarget);\r\n this.receivers.push(newInstance);\r\n return newInstance;\r\n }\r\n isListeningto(eventTarget) {\r\n return this.eventTarget === eventTarget;\r\n }\r\n /**\r\n * Fans out a MessageEvent to the appropriate listeners.\r\n *\r\n * @remarks\r\n * Sends an {@link Status.ACK} upon receipt and a {@link Status.DONE} once all handlers have\r\n * finished processing.\r\n *\r\n * @param event - The MessageEvent.\r\n *\r\n */\r\n async handleEvent(event) {\r\n const messageEvent = event;\r\n const { eventId, eventType, data } = messageEvent.data;\r\n const handlers = this.handlersMap[eventType];\r\n if (!(handlers === null || handlers === void 0 ? void 0 : handlers.size)) {\r\n return;\r\n }\r\n messageEvent.ports[0].postMessage({\r\n status: \"ack\" /* ACK */,\r\n eventId,\r\n eventType\r\n });\r\n const promises = Array.from(handlers).map(async (handler) => handler(messageEvent.origin, data));\r\n const response = await _allSettled(promises);\r\n messageEvent.ports[0].postMessage({\r\n status: \"done\" /* DONE */,\r\n eventId,\r\n eventType,\r\n response\r\n });\r\n }\r\n /**\r\n * Subscribe an event handler for a particular event.\r\n *\r\n * @param eventType - Event name to subscribe to.\r\n * @param eventHandler - The event handler which should receive the events.\r\n *\r\n */\r\n _subscribe(eventType, eventHandler) {\r\n if (Object.keys(this.handlersMap).length === 0) {\r\n this.eventTarget.addEventListener('message', this.boundEventHandler);\r\n }\r\n if (!this.handlersMap[eventType]) {\r\n this.handlersMap[eventType] = new Set();\r\n }\r\n this.handlersMap[eventType].add(eventHandler);\r\n }\r\n /**\r\n * Unsubscribe an event handler from a particular event.\r\n *\r\n * @param eventType - Event name to unsubscribe from.\r\n * @param eventHandler - Optinoal event handler, if none provided, unsubscribe all handlers on this event.\r\n *\r\n */\r\n _unsubscribe(eventType, eventHandler) {\r\n if (this.handlersMap[eventType] && eventHandler) {\r\n this.handlersMap[eventType].delete(eventHandler);\r\n }\r\n if (!eventHandler || this.handlersMap[eventType].size === 0) {\r\n delete this.handlersMap[eventType];\r\n }\r\n if (Object.keys(this.handlersMap).length === 0) {\r\n this.eventTarget.removeEventListener('message', this.boundEventHandler);\r\n }\r\n }\r\n}\r\nReceiver.receivers = [];\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction _generateEventId(prefix = '', digits = 10) {\r\n let random = '';\r\n for (let i = 0; i < digits; i++) {\r\n random += Math.floor(Math.random() * 10);\r\n }\r\n return prefix + random;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Interface for sending messages and waiting for a completion response.\r\n *\r\n */\r\nclass Sender {\r\n constructor(target) {\r\n this.target = target;\r\n this.handlers = new Set();\r\n }\r\n /**\r\n * Unsubscribe the handler and remove it from our tracking Set.\r\n *\r\n * @param handler - The handler to unsubscribe.\r\n */\r\n removeMessageHandler(handler) {\r\n if (handler.messageChannel) {\r\n handler.messageChannel.port1.removeEventListener('message', handler.onMessage);\r\n handler.messageChannel.port1.close();\r\n }\r\n this.handlers.delete(handler);\r\n }\r\n /**\r\n * Send a message to the Receiver located at {@link target}.\r\n *\r\n * @remarks\r\n * We'll first wait a bit for an ACK , if we get one we will wait significantly longer until the\r\n * receiver has had a chance to fully process the event.\r\n *\r\n * @param eventType - Type of event to send.\r\n * @param data - The payload of the event.\r\n * @param timeout - Timeout for waiting on an ACK from the receiver.\r\n *\r\n * @returns An array of settled promises from all the handlers that were listening on the receiver.\r\n */\r\n async _send(eventType, data, timeout = 50 /* ACK */) {\r\n const messageChannel = typeof MessageChannel !== 'undefined' ? new MessageChannel() : null;\r\n if (!messageChannel) {\r\n throw new Error(\"connection_unavailable\" /* CONNECTION_UNAVAILABLE */);\r\n }\r\n // Node timers and browser timers return fundamentally different types.\r\n // We don't actually care what the value is but TS won't accept unknown and\r\n // we can't cast properly in both environments.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n let completionTimer;\r\n let handler;\r\n return new Promise((resolve, reject) => {\r\n const eventId = _generateEventId('', 20);\r\n messageChannel.port1.start();\r\n const ackTimer = setTimeout(() => {\r\n reject(new Error(\"unsupported_event\" /* UNSUPPORTED_EVENT */));\r\n }, timeout);\r\n handler = {\r\n messageChannel,\r\n onMessage(event) {\r\n const messageEvent = event;\r\n if (messageEvent.data.eventId !== eventId) {\r\n return;\r\n }\r\n switch (messageEvent.data.status) {\r\n case \"ack\" /* ACK */:\r\n // The receiver should ACK first.\r\n clearTimeout(ackTimer);\r\n completionTimer = setTimeout(() => {\r\n reject(new Error(\"timeout\" /* TIMEOUT */));\r\n }, 3000 /* COMPLETION */);\r\n break;\r\n case \"done\" /* DONE */:\r\n // Once the receiver's handlers are finished we will get the results.\r\n clearTimeout(completionTimer);\r\n resolve(messageEvent.data.response);\r\n break;\r\n default:\r\n clearTimeout(ackTimer);\r\n clearTimeout(completionTimer);\r\n reject(new Error(\"invalid_response\" /* INVALID_RESPONSE */));\r\n break;\r\n }\r\n }\r\n };\r\n this.handlers.add(handler);\r\n messageChannel.port1.addEventListener('message', handler.onMessage);\r\n this.target.postMessage({\r\n eventType,\r\n eventId,\r\n data\r\n }, [messageChannel.port2]);\r\n }).finally(() => {\r\n if (handler) {\r\n this.removeMessageHandler(handler);\r\n }\r\n });\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Lazy accessor for window, since the compat layer won't tree shake this out,\r\n * we need to make sure not to mess with window unless we have to\r\n */\r\nfunction _window() {\r\n return window;\r\n}\r\nfunction _setWindowLocation(url) {\r\n _window().location.href = url;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction _isWorker() {\r\n return (typeof _window()['WorkerGlobalScope'] !== 'undefined' &&\r\n typeof _window()['importScripts'] === 'function');\r\n}\r\nasync function _getActiveServiceWorker() {\r\n if (!(navigator === null || navigator === void 0 ? void 0 : navigator.serviceWorker)) {\r\n return null;\r\n }\r\n try {\r\n const registration = await navigator.serviceWorker.ready;\r\n return registration.active;\r\n }\r\n catch (_a) {\r\n return null;\r\n }\r\n}\r\nfunction _getServiceWorkerController() {\r\n var _a;\r\n return ((_a = navigator === null || navigator === void 0 ? void 0 : navigator.serviceWorker) === null || _a === void 0 ? void 0 : _a.controller) || null;\r\n}\r\nfunction _getWorkerGlobalScope() {\r\n return _isWorker() ? self : null;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DB_NAME = 'firebaseLocalStorageDb';\r\nconst DB_VERSION = 1;\r\nconst DB_OBJECTSTORE_NAME = 'firebaseLocalStorage';\r\nconst DB_DATA_KEYPATH = 'fbase_key';\r\n/**\r\n * Promise wrapper for IDBRequest\r\n *\r\n * Unfortunately we can't cleanly extend Promise<T> since promises are not callable in ES6\r\n *\r\n */\r\nclass DBPromise {\r\n constructor(request) {\r\n this.request = request;\r\n }\r\n toPromise() {\r\n return new Promise((resolve, reject) => {\r\n this.request.addEventListener('success', () => {\r\n resolve(this.request.result);\r\n });\r\n this.request.addEventListener('error', () => {\r\n reject(this.request.error);\r\n });\r\n });\r\n }\r\n}\r\nfunction getObjectStore(db, isReadWrite) {\r\n return db\r\n .transaction([DB_OBJECTSTORE_NAME], isReadWrite ? 'readwrite' : 'readonly')\r\n .objectStore(DB_OBJECTSTORE_NAME);\r\n}\r\nfunction _deleteDatabase() {\r\n const request = indexedDB.deleteDatabase(DB_NAME);\r\n return new DBPromise(request).toPromise();\r\n}\r\nfunction _openDatabase() {\r\n const request = indexedDB.open(DB_NAME, DB_VERSION);\r\n return new Promise((resolve, reject) => {\r\n request.addEventListener('error', () => {\r\n reject(request.error);\r\n });\r\n request.addEventListener('upgradeneeded', () => {\r\n const db = request.result;\r\n try {\r\n db.createObjectStore(DB_OBJECTSTORE_NAME, { keyPath: DB_DATA_KEYPATH });\r\n }\r\n catch (e) {\r\n reject(e);\r\n }\r\n });\r\n request.addEventListener('success', async () => {\r\n const db = request.result;\r\n // Strange bug that occurs in Firefox when multiple tabs are opened at the\r\n // same time. The only way to recover seems to be deleting the database\r\n // and re-initializing it.\r\n // https://github.com/firebase/firebase-js-sdk/issues/634\r\n if (!db.objectStoreNames.contains(DB_OBJECTSTORE_NAME)) {\r\n // Need to close the database or else you get a `blocked` event\r\n db.close();\r\n await _deleteDatabase();\r\n resolve(await _openDatabase());\r\n }\r\n else {\r\n resolve(db);\r\n }\r\n });\r\n });\r\n}\r\nasync function _putObject(db, key, value) {\r\n const request = getObjectStore(db, true).put({\r\n [DB_DATA_KEYPATH]: key,\r\n value\r\n });\r\n return new DBPromise(request).toPromise();\r\n}\r\nasync function getObject(db, key) {\r\n const request = getObjectStore(db, false).get(key);\r\n const data = await new DBPromise(request).toPromise();\r\n return data === undefined ? null : data.value;\r\n}\r\nfunction _deleteObject(db, key) {\r\n const request = getObjectStore(db, true).delete(key);\r\n return new DBPromise(request).toPromise();\r\n}\r\nconst _POLLING_INTERVAL_MS = 800;\r\nconst _TRANSACTION_RETRY_COUNT = 3;\r\nclass IndexedDBLocalPersistence {\r\n constructor() {\r\n this.type = \"LOCAL\" /* LOCAL */;\r\n this._shouldAllowMigration = true;\r\n this.listeners = {};\r\n this.localCache = {};\r\n // setTimeout return value is platform specific\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n this.pollTimer = null;\r\n this.pendingWrites = 0;\r\n this.receiver = null;\r\n this.sender = null;\r\n this.serviceWorkerReceiverAvailable = false;\r\n this.activeServiceWorker = null;\r\n // Fire & forget the service worker registration as it may never resolve\r\n this._workerInitializationPromise =\r\n this.initializeServiceWorkerMessaging().then(() => { }, () => { });\r\n }\r\n async _openDb() {\r\n if (this.db) {\r\n return this.db;\r\n }\r\n this.db = await _openDatabase();\r\n return this.db;\r\n }\r\n async _withRetries(op) {\r\n let numAttempts = 0;\r\n while (true) {\r\n try {\r\n const db = await this._openDb();\r\n return await op(db);\r\n }\r\n catch (e) {\r\n if (numAttempts++ > _TRANSACTION_RETRY_COUNT) {\r\n throw e;\r\n }\r\n if (this.db) {\r\n this.db.close();\r\n this.db = undefined;\r\n }\r\n // TODO: consider adding exponential backoff\r\n }\r\n }\r\n }\r\n /**\r\n * IndexedDB events do not propagate from the main window to the worker context. We rely on a\r\n * postMessage interface to send these events to the worker ourselves.\r\n */\r\n async initializeServiceWorkerMessaging() {\r\n return _isWorker() ? this.initializeReceiver() : this.initializeSender();\r\n }\r\n /**\r\n * As the worker we should listen to events from the main window.\r\n */\r\n async initializeReceiver() {\r\n this.receiver = Receiver._getInstance(_getWorkerGlobalScope());\r\n // Refresh from persistence if we receive a KeyChanged message.\r\n this.receiver._subscribe(\"keyChanged\" /* KEY_CHANGED */, async (_origin, data) => {\r\n const keys = await this._poll();\r\n return {\r\n keyProcessed: keys.includes(data.key)\r\n };\r\n });\r\n // Let the sender know that we are listening so they give us more timeout.\r\n this.receiver._subscribe(\"ping\" /* PING */, async (_origin, _data) => {\r\n return [\"keyChanged\" /* KEY_CHANGED */];\r\n });\r\n }\r\n /**\r\n * As the main window, we should let the worker know when keys change (set and remove).\r\n *\r\n * @remarks\r\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/ready | ServiceWorkerContainer.ready}\r\n * may not resolve.\r\n */\r\n async initializeSender() {\r\n var _a, _b;\r\n // Check to see if there's an active service worker.\r\n this.activeServiceWorker = await _getActiveServiceWorker();\r\n if (!this.activeServiceWorker) {\r\n return;\r\n }\r\n this.sender = new Sender(this.activeServiceWorker);\r\n // Ping the service worker to check what events they can handle.\r\n const results = await this.sender._send(\"ping\" /* PING */, {}, 800 /* LONG_ACK */);\r\n if (!results) {\r\n return;\r\n }\r\n if (((_a = results[0]) === null || _a === void 0 ? void 0 : _a.fulfilled) &&\r\n ((_b = results[0]) === null || _b === void 0 ? void 0 : _b.value.includes(\"keyChanged\" /* KEY_CHANGED */))) {\r\n this.serviceWorkerReceiverAvailable = true;\r\n }\r\n }\r\n /**\r\n * Let the worker know about a changed key, the exact key doesn't technically matter since the\r\n * worker will just trigger a full sync anyway.\r\n *\r\n * @remarks\r\n * For now, we only support one service worker per page.\r\n *\r\n * @param key - Storage key which changed.\r\n */\r\n async notifyServiceWorker(key) {\r\n if (!this.sender ||\r\n !this.activeServiceWorker ||\r\n _getServiceWorkerController() !== this.activeServiceWorker) {\r\n return;\r\n }\r\n try {\r\n await this.sender._send(\"keyChanged\" /* KEY_CHANGED */, { key }, \r\n // Use long timeout if receiver has previously responded to a ping from us.\r\n this.serviceWorkerReceiverAvailable\r\n ? 800 /* LONG_ACK */\r\n : 50 /* ACK */);\r\n }\r\n catch (_a) {\r\n // This is a best effort approach. Ignore errors.\r\n }\r\n }\r\n async _isAvailable() {\r\n try {\r\n if (!indexedDB) {\r\n return false;\r\n }\r\n const db = await _openDatabase();\r\n await _putObject(db, STORAGE_AVAILABLE_KEY, '1');\r\n await _deleteObject(db, STORAGE_AVAILABLE_KEY);\r\n return true;\r\n }\r\n catch (_a) { }\r\n return false;\r\n }\r\n async _withPendingWrite(write) {\r\n this.pendingWrites++;\r\n try {\r\n await write();\r\n }\r\n finally {\r\n this.pendingWrites--;\r\n }\r\n }\r\n async _set(key, value) {\r\n return this._withPendingWrite(async () => {\r\n await this._withRetries((db) => _putObject(db, key, value));\r\n this.localCache[key] = value;\r\n return this.notifyServiceWorker(key);\r\n });\r\n }\r\n async _get(key) {\r\n const obj = (await this._withRetries((db) => getObject(db, key)));\r\n this.localCache[key] = obj;\r\n return obj;\r\n }\r\n async _remove(key) {\r\n return this._withPendingWrite(async () => {\r\n await this._withRetries((db) => _deleteObject(db, key));\r\n delete this.localCache[key];\r\n return this.notifyServiceWorker(key);\r\n });\r\n }\r\n async _poll() {\r\n // TODO: check if we need to fallback if getAll is not supported\r\n const result = await this._withRetries((db) => {\r\n const getAllRequest = getObjectStore(db, false).getAll();\r\n return new DBPromise(getAllRequest).toPromise();\r\n });\r\n if (!result) {\r\n return [];\r\n }\r\n // If we have pending writes in progress abort, we'll get picked up on the next poll\r\n if (this.pendingWrites !== 0) {\r\n return [];\r\n }\r\n const keys = [];\r\n const keysInResult = new Set();\r\n for (const { fbase_key: key, value } of result) {\r\n keysInResult.add(key);\r\n if (JSON.stringify(this.localCache[key]) !== JSON.stringify(value)) {\r\n this.notifyListeners(key, value);\r\n keys.push(key);\r\n }\r\n }\r\n for (const localKey of Object.keys(this.localCache)) {\r\n if (this.localCache[localKey] && !keysInResult.has(localKey)) {\r\n // Deleted\r\n this.notifyListeners(localKey, null);\r\n keys.push(localKey);\r\n }\r\n }\r\n return keys;\r\n }\r\n notifyListeners(key, newValue) {\r\n this.localCache[key] = newValue;\r\n const listeners = this.listeners[key];\r\n if (listeners) {\r\n for (const listener of Array.from(listeners)) {\r\n listener(newValue);\r\n }\r\n }\r\n }\r\n startPolling() {\r\n this.stopPolling();\r\n this.pollTimer = setInterval(async () => this._poll(), _POLLING_INTERVAL_MS);\r\n }\r\n stopPolling() {\r\n if (this.pollTimer) {\r\n clearInterval(this.pollTimer);\r\n this.pollTimer = null;\r\n }\r\n }\r\n _addListener(key, listener) {\r\n if (Object.keys(this.listeners).length === 0) {\r\n this.startPolling();\r\n }\r\n if (!this.listeners[key]) {\r\n this.listeners[key] = new Set();\r\n // Populate the cache to avoid spuriously triggering on first poll.\r\n void this._get(key); // This can happen in the background async and we can return immediately.\r\n }\r\n this.listeners[key].add(listener);\r\n }\r\n _removeListener(key, listener) {\r\n if (this.listeners[key]) {\r\n this.listeners[key].delete(listener);\r\n if (this.listeners[key].size === 0) {\r\n delete this.listeners[key];\r\n }\r\n }\r\n if (Object.keys(this.listeners).length === 0) {\r\n this.stopPolling();\r\n }\r\n }\r\n}\r\nIndexedDBLocalPersistence.type = 'LOCAL';\r\n/**\r\n * An implementation of {@link Persistence} of type `LOCAL` using `indexedDB`\r\n * for the underlying storage.\r\n *\r\n * @public\r\n */\r\nconst indexedDBLocalPersistence = IndexedDBLocalPersistence;\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction startSignInPhoneMfa(auth, request) {\r\n return _performApiRequest(auth, \"POST\" /* POST */, \"/v2/accounts/mfaSignIn:start\" /* START_PHONE_MFA_SIGN_IN */, _addTidIfNecessary(auth, request));\r\n}\r\nfunction finalizeSignInPhoneMfa(auth, request) {\r\n return _performApiRequest(auth, \"POST\" /* POST */, \"/v2/accounts/mfaSignIn:finalize\" /* FINALIZE_PHONE_MFA_SIGN_IN */, _addTidIfNecessary(auth, request));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function getRecaptchaParams(auth) {\r\n return ((await _performApiRequest(auth, \"GET\" /* GET */, \"/v1/recaptchaParams\" /* GET_RECAPTCHA_PARAM */)).recaptchaSiteKey || '');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getScriptParentElement() {\r\n var _a, _b;\r\n return (_b = (_a = document.getElementsByTagName('head')) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : document;\r\n}\r\nfunction _loadJS(url) {\r\n // TODO: consider adding timeout support & cancellation\r\n return new Promise((resolve, reject) => {\r\n const el = document.createElement('script');\r\n el.setAttribute('src', url);\r\n el.onload = resolve;\r\n el.onerror = e => {\r\n const error = _createError(\"internal-error\" /* INTERNAL_ERROR */);\r\n error.customData = e;\r\n reject(error);\r\n };\r\n el.type = 'text/javascript';\r\n el.charset = 'UTF-8';\r\n getScriptParentElement().appendChild(el);\r\n });\r\n}\r\nfunction _generateCallbackName(prefix) {\r\n return `__${prefix}${Math.floor(Math.random() * 1000000)}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst _SOLVE_TIME_MS = 500;\r\nconst _EXPIRATION_TIME_MS = 60000;\r\nconst _WIDGET_ID_START = 1000000000000;\r\nclass MockReCaptcha {\r\n constructor(auth) {\r\n this.auth = auth;\r\n this.counter = _WIDGET_ID_START;\r\n this._widgets = new Map();\r\n }\r\n render(container, parameters) {\r\n const id = this.counter;\r\n this._widgets.set(id, new MockWidget(container, this.auth.name, parameters || {}));\r\n this.counter++;\r\n return id;\r\n }\r\n reset(optWidgetId) {\r\n var _a;\r\n const id = optWidgetId || _WIDGET_ID_START;\r\n void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.delete());\r\n this._widgets.delete(id);\r\n }\r\n getResponse(optWidgetId) {\r\n var _a;\r\n const id = optWidgetId || _WIDGET_ID_START;\r\n return ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.getResponse()) || '';\r\n }\r\n async execute(optWidgetId) {\r\n var _a;\r\n const id = optWidgetId || _WIDGET_ID_START;\r\n void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.execute());\r\n return '';\r\n }\r\n}\r\nclass MockWidget {\r\n constructor(containerOrId, appName, params) {\r\n this.params = params;\r\n this.timerId = null;\r\n this.deleted = false;\r\n this.responseToken = null;\r\n this.clickHandler = () => {\r\n this.execute();\r\n };\r\n const container = typeof containerOrId === 'string'\r\n ? document.getElementById(containerOrId)\r\n : containerOrId;\r\n _assert(container, \"argument-error\" /* ARGUMENT_ERROR */, { appName });\r\n this.container = container;\r\n this.isVisible = this.params.size !== 'invisible';\r\n if (this.isVisible) {\r\n this.execute();\r\n }\r\n else {\r\n this.container.addEventListener('click', this.clickHandler);\r\n }\r\n }\r\n getResponse() {\r\n this.checkIfDeleted();\r\n return this.responseToken;\r\n }\r\n delete() {\r\n this.checkIfDeleted();\r\n this.deleted = true;\r\n if (this.timerId) {\r\n clearTimeout(this.timerId);\r\n this.timerId = null;\r\n }\r\n this.container.removeEventListener('click', this.clickHandler);\r\n }\r\n execute() {\r\n this.checkIfDeleted();\r\n if (this.timerId) {\r\n return;\r\n }\r\n this.timerId = window.setTimeout(() => {\r\n this.responseToken = generateRandomAlphaNumericString(50);\r\n const { callback, 'expired-callback': expiredCallback } = this.params;\r\n if (callback) {\r\n try {\r\n callback(this.responseToken);\r\n }\r\n catch (e) { }\r\n }\r\n this.timerId = window.setTimeout(() => {\r\n this.timerId = null;\r\n this.responseToken = null;\r\n if (expiredCallback) {\r\n try {\r\n expiredCallback();\r\n }\r\n catch (e) { }\r\n }\r\n if (this.isVisible) {\r\n this.execute();\r\n }\r\n }, _EXPIRATION_TIME_MS);\r\n }, _SOLVE_TIME_MS);\r\n }\r\n checkIfDeleted() {\r\n if (this.deleted) {\r\n throw new Error('reCAPTCHA mock was already deleted!');\r\n }\r\n }\r\n}\r\nfunction generateRandomAlphaNumericString(len) {\r\n const chars = [];\r\n const allowedChars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n for (let i = 0; i < len; i++) {\r\n chars.push(allowedChars.charAt(Math.floor(Math.random() * allowedChars.length)));\r\n }\r\n return chars.join('');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// ReCaptcha will load using the same callback, so the callback function needs\r\n// to be kept around\r\nconst _JSLOAD_CALLBACK = _generateCallbackName('rcb');\r\nconst NETWORK_TIMEOUT_DELAY = new Delay(30000, 60000);\r\nconst RECAPTCHA_BASE = 'https://www.google.com/recaptcha/api.js?';\r\n/**\r\n * Loader for the GReCaptcha library. There should only ever be one of this.\r\n */\r\nclass ReCaptchaLoaderImpl {\r\n constructor() {\r\n this.hostLanguage = '';\r\n this.counter = 0;\r\n this.librarySeparatelyLoaded = !!_window().grecaptcha;\r\n }\r\n load(auth, hl = '') {\r\n _assert(isHostLanguageValid(hl), auth, \"argument-error\" /* ARGUMENT_ERROR */);\r\n if (this.shouldResolveImmediately(hl)) {\r\n return Promise.resolve(_window().grecaptcha);\r\n }\r\n return new Promise((resolve, reject) => {\r\n const networkTimeout = _window().setTimeout(() => {\r\n reject(_createError(auth, \"network-request-failed\" /* NETWORK_REQUEST_FAILED */));\r\n }, NETWORK_TIMEOUT_DELAY.get());\r\n _window()[_JSLOAD_CALLBACK] = () => {\r\n _window().clearTimeout(networkTimeout);\r\n delete _window()[_JSLOAD_CALLBACK];\r\n const recaptcha = _window().grecaptcha;\r\n if (!recaptcha) {\r\n reject(_createError(auth, \"internal-error\" /* INTERNAL_ERROR */));\r\n return;\r\n }\r\n // Wrap the greptcha render function so that we know if the developer has\r\n // called it separately\r\n const render = recaptcha.render;\r\n recaptcha.render = (container, params) => {\r\n const widgetId = render(container, params);\r\n this.counter++;\r\n return widgetId;\r\n };\r\n this.hostLanguage = hl;\r\n resolve(recaptcha);\r\n };\r\n const url = `${RECAPTCHA_BASE}?${querystring({\r\n onload: _JSLOAD_CALLBACK,\r\n render: 'explicit',\r\n hl\r\n })}`;\r\n _loadJS(url).catch(() => {\r\n clearTimeout(networkTimeout);\r\n reject(_createError(auth, \"internal-error\" /* INTERNAL_ERROR */));\r\n });\r\n });\r\n }\r\n clearedOneInstance() {\r\n this.counter--;\r\n }\r\n shouldResolveImmediately(hl) {\r\n // We can resolve immediately if:\r\n // • grecaptcha is already defined AND (\r\n // 1. the requested language codes are the same OR\r\n // 2. there exists already a ReCaptcha on the page\r\n // 3. the library was already loaded by the app\r\n // In cases (2) and (3), we _can't_ reload as it would break the recaptchas\r\n // that are already in the page\r\n return (!!_window().grecaptcha &&\r\n (hl === this.hostLanguage ||\r\n this.counter > 0 ||\r\n this.librarySeparatelyLoaded));\r\n }\r\n}\r\nfunction isHostLanguageValid(hl) {\r\n return hl.length <= 6 && /^\\s*[a-zA-Z0-9\\-]*\\s*$/.test(hl);\r\n}\r\nclass MockReCaptchaLoaderImpl {\r\n async load(auth) {\r\n return new MockReCaptcha(auth);\r\n }\r\n clearedOneInstance() { }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst RECAPTCHA_VERIFIER_TYPE = 'recaptcha';\r\nconst DEFAULT_PARAMS = {\r\n theme: 'light',\r\n type: 'image'\r\n};\r\n/**\r\n * An {@link https://www.google.com/recaptcha/ | reCAPTCHA}-based application verifier.\r\n *\r\n * @public\r\n */\r\nclass RecaptchaVerifier {\r\n /**\r\n *\r\n * @param containerOrId - The reCAPTCHA container parameter.\r\n *\r\n * @remarks\r\n * This has different meaning depending on whether the reCAPTCHA is hidden or visible. For a\r\n * visible reCAPTCHA the container must be empty. If a string is used, it has to correspond to\r\n * an element ID. The corresponding element must also must be in the DOM at the time of\r\n * initialization.\r\n *\r\n * @param parameters - The optional reCAPTCHA parameters.\r\n *\r\n * @remarks\r\n * Check the reCAPTCHA docs for a comprehensive list. All parameters are accepted except for\r\n * the sitekey. Firebase Auth backend provisions a reCAPTCHA for each project and will\r\n * configure this upon rendering. For an invisible reCAPTCHA, a size key must have the value\r\n * 'invisible'.\r\n *\r\n * @param authExtern - The corresponding Firebase {@link Auth} instance.\r\n *\r\n * @remarks\r\n * If none is provided, the default Firebase {@link Auth} instance is used. A Firebase {@link Auth} instance\r\n * must be initialized with an API key, otherwise an error will be thrown.\r\n */\r\n constructor(containerOrId, parameters = Object.assign({}, DEFAULT_PARAMS), authExtern) {\r\n this.parameters = parameters;\r\n /**\r\n * The application verifier type.\r\n *\r\n * @remarks\r\n * For a reCAPTCHA verifier, this is 'recaptcha'.\r\n */\r\n this.type = RECAPTCHA_VERIFIER_TYPE;\r\n this.destroyed = false;\r\n this.widgetId = null;\r\n this.tokenChangeListeners = new Set();\r\n this.renderPromise = null;\r\n this.recaptcha = null;\r\n this.auth = _castAuth(authExtern);\r\n this.isInvisible = this.parameters.size === 'invisible';\r\n _assert(typeof document !== 'undefined', this.auth, \"operation-not-supported-in-this-environment\" /* OPERATION_NOT_SUPPORTED */);\r\n const container = typeof containerOrId === 'string'\r\n ? document.getElementById(containerOrId)\r\n : containerOrId;\r\n _assert(container, this.auth, \"argument-error\" /* ARGUMENT_ERROR */);\r\n this.container = container;\r\n this.parameters.callback = this.makeTokenCallback(this.parameters.callback);\r\n this._recaptchaLoader = this.auth.settings.appVerificationDisabledForTesting\r\n ? new MockReCaptchaLoaderImpl()\r\n : new ReCaptchaLoaderImpl();\r\n this.validateStartingState();\r\n // TODO: Figure out if sdk version is needed\r\n }\r\n /**\r\n * Waits for the user to solve the reCAPTCHA and resolves with the reCAPTCHA token.\r\n *\r\n * @returns A Promise for the reCAPTCHA token.\r\n */\r\n async verify() {\r\n this.assertNotDestroyed();\r\n const id = await this.render();\r\n const recaptcha = this.getAssertedRecaptcha();\r\n const response = recaptcha.getResponse(id);\r\n if (response) {\r\n return response;\r\n }\r\n return new Promise(resolve => {\r\n const tokenChange = (token) => {\r\n if (!token) {\r\n return; // Ignore token expirations.\r\n }\r\n this.tokenChangeListeners.delete(tokenChange);\r\n resolve(token);\r\n };\r\n this.tokenChangeListeners.add(tokenChange);\r\n if (this.isInvisible) {\r\n recaptcha.execute(id);\r\n }\r\n });\r\n }\r\n /**\r\n * Renders the reCAPTCHA widget on the page.\r\n *\r\n * @returns A Promise that resolves with the reCAPTCHA widget ID.\r\n */\r\n render() {\r\n try {\r\n this.assertNotDestroyed();\r\n }\r\n catch (e) {\r\n // This method returns a promise. Since it's not async (we want to return the\r\n // _same_ promise if rendering is still occurring), the API surface should\r\n // reject with the error rather than just throw\r\n return Promise.reject(e);\r\n }\r\n if (this.renderPromise) {\r\n return this.renderPromise;\r\n }\r\n this.renderPromise = this.makeRenderPromise().catch(e => {\r\n this.renderPromise = null;\r\n throw e;\r\n });\r\n return this.renderPromise;\r\n }\r\n /** @internal */\r\n _reset() {\r\n this.assertNotDestroyed();\r\n if (this.widgetId !== null) {\r\n this.getAssertedRecaptcha().reset(this.widgetId);\r\n }\r\n }\r\n /**\r\n * Clears the reCAPTCHA widget from the page and destroys the instance.\r\n */\r\n clear() {\r\n this.assertNotDestroyed();\r\n this.destroyed = true;\r\n this._recaptchaLoader.clearedOneInstance();\r\n if (!this.isInvisible) {\r\n this.container.childNodes.forEach(node => {\r\n this.container.removeChild(node);\r\n });\r\n }\r\n }\r\n validateStartingState() {\r\n _assert(!this.parameters.sitekey, this.auth, \"argument-error\" /* ARGUMENT_ERROR */);\r\n _assert(this.isInvisible || !this.container.hasChildNodes(), this.auth, \"argument-error\" /* ARGUMENT_ERROR */);\r\n _assert(typeof document !== 'undefined', this.auth, \"operation-not-supported-in-this-environment\" /* OPERATION_NOT_SUPPORTED */);\r\n }\r\n makeTokenCallback(existing) {\r\n return token => {\r\n this.tokenChangeListeners.forEach(listener => listener(token));\r\n if (typeof existing === 'function') {\r\n existing(token);\r\n }\r\n else if (typeof existing === 'string') {\r\n const globalFunc = _window()[existing];\r\n if (typeof globalFunc === 'function') {\r\n globalFunc(token);\r\n }\r\n }\r\n };\r\n }\r\n assertNotDestroyed() {\r\n _assert(!this.destroyed, this.auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n }\r\n async makeRenderPromise() {\r\n await this.init();\r\n if (!this.widgetId) {\r\n let container = this.container;\r\n if (!this.isInvisible) {\r\n const guaranteedEmpty = document.createElement('div');\r\n container.appendChild(guaranteedEmpty);\r\n container = guaranteedEmpty;\r\n }\r\n this.widgetId = this.getAssertedRecaptcha().render(container, this.parameters);\r\n }\r\n return this.widgetId;\r\n }\r\n async init() {\r\n _assert(_isHttpOrHttps() && !_isWorker(), this.auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n await domReady();\r\n this.recaptcha = await this._recaptchaLoader.load(this.auth, this.auth.languageCode || undefined);\r\n const siteKey = await getRecaptchaParams(this.auth);\r\n _assert(siteKey, this.auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n this.parameters.sitekey = siteKey;\r\n }\r\n getAssertedRecaptcha() {\r\n _assert(this.recaptcha, this.auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n return this.recaptcha;\r\n }\r\n}\r\nfunction domReady() {\r\n let resolver = null;\r\n return new Promise(resolve => {\r\n if (document.readyState === 'complete') {\r\n resolve();\r\n return;\r\n }\r\n // Document not ready, wait for load before resolving.\r\n // Save resolver, so we can remove listener in case it was externally\r\n // cancelled.\r\n resolver = () => resolve();\r\n window.addEventListener('load', resolver);\r\n }).catch(e => {\r\n if (resolver) {\r\n window.removeEventListener('load', resolver);\r\n }\r\n throw e;\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass ConfirmationResultImpl {\r\n constructor(verificationId, onConfirmation) {\r\n this.verificationId = verificationId;\r\n this.onConfirmation = onConfirmation;\r\n }\r\n confirm(verificationCode) {\r\n const authCredential = PhoneAuthCredential._fromVerification(this.verificationId, verificationCode);\r\n return this.onConfirmation(authCredential);\r\n }\r\n}\r\n/**\r\n * Asynchronously signs in using a phone number.\r\n *\r\n * @remarks\r\n * This method sends a code via SMS to the given\r\n * phone number, and returns a {@link ConfirmationResult}. After the user\r\n * provides the code sent to their phone, call {@link ConfirmationResult.confirm}\r\n * with the code to sign the user in.\r\n *\r\n * For abuse prevention, this method also requires a {@link ApplicationVerifier}.\r\n * This SDK includes a reCAPTCHA-based implementation, {@link RecaptchaVerifier}.\r\n * This function can work on other platforms that do not support the\r\n * {@link RecaptchaVerifier} (like React Native), but you need to use a\r\n * third-party {@link ApplicationVerifier} implementation.\r\n *\r\n * @example\r\n * ```javascript\r\n * // 'recaptcha-container' is the ID of an element in the DOM.\r\n * const applicationVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-container');\r\n * const confirmationResult = await signInWithPhoneNumber(auth, phoneNumber, applicationVerifier);\r\n * // Obtain a verificationCode from the user.\r\n * const credential = await confirmationResult.confirm(verificationCode);\r\n * ```\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param phoneNumber - The user's phone number in E.164 format (e.g. +16505550101).\r\n * @param appVerifier - The {@link ApplicationVerifier}.\r\n *\r\n * @public\r\n */\r\nasync function signInWithPhoneNumber(auth, phoneNumber, appVerifier) {\r\n const authInternal = _castAuth(auth);\r\n const verificationId = await _verifyPhoneNumber(authInternal, phoneNumber, getModularInstance(appVerifier));\r\n return new ConfirmationResultImpl(verificationId, cred => signInWithCredential(authInternal, cred));\r\n}\r\n/**\r\n * Links the user account with the given phone number.\r\n *\r\n * @param user - The user.\r\n * @param phoneNumber - The user's phone number in E.164 format (e.g. +16505550101).\r\n * @param appVerifier - The {@link ApplicationVerifier}.\r\n *\r\n * @public\r\n */\r\nasync function linkWithPhoneNumber(user, phoneNumber, appVerifier) {\r\n const userInternal = getModularInstance(user);\r\n await _assertLinkedStatus(false, userInternal, \"phone\" /* PHONE */);\r\n const verificationId = await _verifyPhoneNumber(userInternal.auth, phoneNumber, getModularInstance(appVerifier));\r\n return new ConfirmationResultImpl(verificationId, cred => linkWithCredential(userInternal, cred));\r\n}\r\n/**\r\n * Re-authenticates a user using a fresh phone credential.\r\n *\r\n * @remarks Use before operations such as {@link updatePassword} that require tokens from recent sign-in attempts.\r\n *\r\n * @param user - The user.\r\n * @param phoneNumber - The user's phone number in E.164 format (e.g. +16505550101).\r\n * @param appVerifier - The {@link ApplicationVerifier}.\r\n *\r\n * @public\r\n */\r\nasync function reauthenticateWithPhoneNumber(user, phoneNumber, appVerifier) {\r\n const userInternal = getModularInstance(user);\r\n const verificationId = await _verifyPhoneNumber(userInternal.auth, phoneNumber, getModularInstance(appVerifier));\r\n return new ConfirmationResultImpl(verificationId, cred => reauthenticateWithCredential(userInternal, cred));\r\n}\r\n/**\r\n * Returns a verification ID to be used in conjunction with the SMS code that is sent.\r\n *\r\n */\r\nasync function _verifyPhoneNumber(auth, options, verifier) {\r\n var _a;\r\n const recaptchaToken = await verifier.verify();\r\n try {\r\n _assert(typeof recaptchaToken === 'string', auth, \"argument-error\" /* ARGUMENT_ERROR */);\r\n _assert(verifier.type === RECAPTCHA_VERIFIER_TYPE, auth, \"argument-error\" /* ARGUMENT_ERROR */);\r\n let phoneInfoOptions;\r\n if (typeof options === 'string') {\r\n phoneInfoOptions = {\r\n phoneNumber: options\r\n };\r\n }\r\n else {\r\n phoneInfoOptions = options;\r\n }\r\n if ('session' in phoneInfoOptions) {\r\n const session = phoneInfoOptions.session;\r\n if ('phoneNumber' in phoneInfoOptions) {\r\n _assert(session.type === \"enroll\" /* ENROLL */, auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n const response = await startEnrollPhoneMfa(auth, {\r\n idToken: session.credential,\r\n phoneEnrollmentInfo: {\r\n phoneNumber: phoneInfoOptions.phoneNumber,\r\n recaptchaToken\r\n }\r\n });\r\n return response.phoneSessionInfo.sessionInfo;\r\n }\r\n else {\r\n _assert(session.type === \"signin\" /* SIGN_IN */, auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n const mfaEnrollmentId = ((_a = phoneInfoOptions.multiFactorHint) === null || _a === void 0 ? void 0 : _a.uid) ||\r\n phoneInfoOptions.multiFactorUid;\r\n _assert(mfaEnrollmentId, auth, \"missing-multi-factor-info\" /* MISSING_MFA_INFO */);\r\n const response = await startSignInPhoneMfa(auth, {\r\n mfaPendingCredential: session.credential,\r\n mfaEnrollmentId,\r\n phoneSignInInfo: {\r\n recaptchaToken\r\n }\r\n });\r\n return response.phoneResponseInfo.sessionInfo;\r\n }\r\n }\r\n else {\r\n const { sessionInfo } = await sendPhoneVerificationCode(auth, {\r\n phoneNumber: phoneInfoOptions.phoneNumber,\r\n recaptchaToken\r\n });\r\n return sessionInfo;\r\n }\r\n }\r\n finally {\r\n verifier._reset();\r\n }\r\n}\r\n/**\r\n * Updates the user's phone number.\r\n *\r\n * @example\r\n * ```\r\n * // 'recaptcha-container' is the ID of an element in the DOM.\r\n * const applicationVerifier = new RecaptchaVerifier('recaptcha-container');\r\n * const provider = new PhoneAuthProvider(auth);\r\n * const verificationId = await provider.verifyPhoneNumber('+16505550101', applicationVerifier);\r\n * // Obtain the verificationCode from the user.\r\n * const phoneCredential = PhoneAuthProvider.credential(verificationId, verificationCode);\r\n * await updatePhoneNumber(user, phoneCredential);\r\n * ```\r\n *\r\n * @param user - The user.\r\n * @param credential - A credential authenticating the new phone number.\r\n *\r\n * @public\r\n */\r\nasync function updatePhoneNumber(user, credential) {\r\n await _link$1(getModularInstance(user), credential);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provider for generating an {@link PhoneAuthCredential}.\r\n *\r\n * @example\r\n * ```javascript\r\n * // 'recaptcha-container' is the ID of an element in the DOM.\r\n * const applicationVerifier = new RecaptchaVerifier('recaptcha-container');\r\n * const provider = new PhoneAuthProvider(auth);\r\n * const verificationId = await provider.verifyPhoneNumber('+16505550101', applicationVerifier);\r\n * // Obtain the verificationCode from the user.\r\n * const phoneCredential = PhoneAuthProvider.credential(verificationId, verificationCode);\r\n * const userCredential = await signInWithCredential(auth, phoneCredential);\r\n * ```\r\n *\r\n * @public\r\n */\r\nclass PhoneAuthProvider {\r\n /**\r\n * @param auth - The Firebase {@link Auth} instance in which sign-ins should occur.\r\n *\r\n */\r\n constructor(auth) {\r\n /** Always set to {@link ProviderId}.PHONE. */\r\n this.providerId = PhoneAuthProvider.PROVIDER_ID;\r\n this.auth = _castAuth(auth);\r\n }\r\n /**\r\n *\r\n * Starts a phone number authentication flow by sending a verification code to the given phone\r\n * number.\r\n *\r\n * @example\r\n * ```javascript\r\n * const provider = new PhoneAuthProvider(auth);\r\n * const verificationId = await provider.verifyPhoneNumber(phoneNumber, applicationVerifier);\r\n * // Obtain verificationCode from the user.\r\n * const authCredential = PhoneAuthProvider.credential(verificationId, verificationCode);\r\n * const userCredential = await signInWithCredential(auth, authCredential);\r\n * ```\r\n *\r\n * @example\r\n * An alternative flow is provided using the `signInWithPhoneNumber` method.\r\n * ```javascript\r\n * const confirmationResult = signInWithPhoneNumber(auth, phoneNumber, applicationVerifier);\r\n * // Obtain verificationCode from the user.\r\n * const userCredential = confirmationResult.confirm(verificationCode);\r\n * ```\r\n *\r\n * @param phoneInfoOptions - The user's {@link PhoneInfoOptions}. The phone number should be in\r\n * E.164 format (e.g. +16505550101).\r\n * @param applicationVerifier - For abuse prevention, this method also requires a\r\n * {@link ApplicationVerifier}. This SDK includes a reCAPTCHA-based implementation,\r\n * {@link RecaptchaVerifier}.\r\n *\r\n * @returns A Promise for a verification ID that can be passed to\r\n * {@link PhoneAuthProvider.credential} to identify this flow..\r\n */\r\n verifyPhoneNumber(phoneOptions, applicationVerifier) {\r\n return _verifyPhoneNumber(this.auth, phoneOptions, getModularInstance(applicationVerifier));\r\n }\r\n /**\r\n * Creates a phone auth credential, given the verification ID from\r\n * {@link PhoneAuthProvider.verifyPhoneNumber} and the code that was sent to the user's\r\n * mobile device.\r\n *\r\n * @example\r\n * ```javascript\r\n * const provider = new PhoneAuthProvider(auth);\r\n * const verificationId = provider.verifyPhoneNumber(phoneNumber, applicationVerifier);\r\n * // Obtain verificationCode from the user.\r\n * const authCredential = PhoneAuthProvider.credential(verificationId, verificationCode);\r\n * const userCredential = signInWithCredential(auth, authCredential);\r\n * ```\r\n *\r\n * @example\r\n * An alternative flow is provided using the `signInWithPhoneNumber` method.\r\n * ```javascript\r\n * const confirmationResult = await signInWithPhoneNumber(auth, phoneNumber, applicationVerifier);\r\n * // Obtain verificationCode from the user.\r\n * const userCredential = await confirmationResult.confirm(verificationCode);\r\n * ```\r\n *\r\n * @param verificationId - The verification ID returned from {@link PhoneAuthProvider.verifyPhoneNumber}.\r\n * @param verificationCode - The verification code sent to the user's mobile device.\r\n *\r\n * @returns The auth provider credential.\r\n */\r\n static credential(verificationId, verificationCode) {\r\n return PhoneAuthCredential._fromVerification(verificationId, verificationCode);\r\n }\r\n /**\r\n * Generates an {@link AuthCredential} from a {@link UserCredential}.\r\n * @param userCredential - The user credential.\r\n */\r\n static credentialFromResult(userCredential) {\r\n const credential = userCredential;\r\n return PhoneAuthProvider.credentialFromTaggedObject(credential);\r\n }\r\n /**\r\n * Returns an {@link AuthCredential} when passed an error.\r\n *\r\n * @remarks\r\n *\r\n * This method works for errors like\r\n * `auth/account-exists-with-different-credentials`. This is useful for\r\n * recovering when attempting to set a user's phone number but the number\r\n * in question is already tied to another account. For example, the following\r\n * code tries to update the current user's phone number, and if that\r\n * fails, links the user with the account associated with that number:\r\n *\r\n * ```js\r\n * const provider = new PhoneAuthProvider(auth);\r\n * const verificationId = await provider.verifyPhoneNumber(number, verifier);\r\n * try {\r\n * const code = ''; // Prompt the user for the verification code\r\n * await updatePhoneNumber(\r\n * auth.currentUser,\r\n * PhoneAuthProvider.credential(verificationId, code));\r\n * } catch (e) {\r\n * if (e.code === 'auth/account-exists-with-different-credential') {\r\n * const cred = PhoneAuthProvider.credentialFromError(e);\r\n * await linkWithCredential(auth.currentUser, cred);\r\n * }\r\n * }\r\n *\r\n * // At this point, auth.currentUser.phoneNumber === number.\r\n * ```\r\n *\r\n * @param error - The error to generate a credential from.\r\n */\r\n static credentialFromError(error) {\r\n return PhoneAuthProvider.credentialFromTaggedObject((error.customData || {}));\r\n }\r\n static credentialFromTaggedObject({ _tokenResponse: tokenResponse }) {\r\n if (!tokenResponse) {\r\n return null;\r\n }\r\n const { phoneNumber, temporaryProof } = tokenResponse;\r\n if (phoneNumber && temporaryProof) {\r\n return PhoneAuthCredential._fromTokenResponse(phoneNumber, temporaryProof);\r\n }\r\n return null;\r\n }\r\n}\r\n/** Always set to {@link ProviderId}.PHONE. */\r\nPhoneAuthProvider.PROVIDER_ID = \"phone\" /* PHONE */;\r\n/** Always set to {@link SignInMethod}.PHONE. */\r\nPhoneAuthProvider.PHONE_SIGN_IN_METHOD = \"phone\" /* PHONE */;\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Chooses a popup/redirect resolver to use. This prefers the override (which\r\n * is directly passed in), and falls back to the property set on the auth\r\n * object. If neither are available, this function errors w/ an argument error.\r\n */\r\nfunction _withDefaultResolver(auth, resolverOverride) {\r\n if (resolverOverride) {\r\n return _getInstance(resolverOverride);\r\n }\r\n _assert(auth._popupRedirectResolver, auth, \"argument-error\" /* ARGUMENT_ERROR */);\r\n return auth._popupRedirectResolver;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass IdpCredential extends AuthCredential {\r\n constructor(params) {\r\n super(\"custom\" /* CUSTOM */, \"custom\" /* CUSTOM */);\r\n this.params = params;\r\n }\r\n _getIdTokenResponse(auth) {\r\n return signInWithIdp(auth, this._buildIdpRequest());\r\n }\r\n _linkToIdToken(auth, idToken) {\r\n return signInWithIdp(auth, this._buildIdpRequest(idToken));\r\n }\r\n _getReauthenticationResolver(auth) {\r\n return signInWithIdp(auth, this._buildIdpRequest());\r\n }\r\n _buildIdpRequest(idToken) {\r\n const request = {\r\n requestUri: this.params.requestUri,\r\n sessionId: this.params.sessionId,\r\n postBody: this.params.postBody,\r\n tenantId: this.params.tenantId,\r\n pendingToken: this.params.pendingToken,\r\n returnSecureToken: true,\r\n returnIdpCredential: true\r\n };\r\n if (idToken) {\r\n request.idToken = idToken;\r\n }\r\n return request;\r\n }\r\n}\r\nfunction _signIn(params) {\r\n return _signInWithCredential(params.auth, new IdpCredential(params), params.bypassAuthState);\r\n}\r\nfunction _reauth(params) {\r\n const { auth, user } = params;\r\n _assert(user, auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n return _reauthenticate(user, new IdpCredential(params), params.bypassAuthState);\r\n}\r\nasync function _link(params) {\r\n const { auth, user } = params;\r\n _assert(user, auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n return _link$1(user, new IdpCredential(params), params.bypassAuthState);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Popup event manager. Handles the popup's entire lifecycle; listens to auth\r\n * events\r\n */\r\nclass AbstractPopupRedirectOperation {\r\n constructor(auth, filter, resolver, user, bypassAuthState = false) {\r\n this.auth = auth;\r\n this.resolver = resolver;\r\n this.user = user;\r\n this.bypassAuthState = bypassAuthState;\r\n this.pendingPromise = null;\r\n this.eventManager = null;\r\n this.filter = Array.isArray(filter) ? filter : [filter];\r\n }\r\n execute() {\r\n return new Promise(async (resolve, reject) => {\r\n this.pendingPromise = { resolve, reject };\r\n try {\r\n this.eventManager = await this.resolver._initialize(this.auth);\r\n await this.onExecution();\r\n this.eventManager.registerConsumer(this);\r\n }\r\n catch (e) {\r\n this.reject(e);\r\n }\r\n });\r\n }\r\n async onAuthEvent(event) {\r\n const { urlResponse, sessionId, postBody, tenantId, error, type } = event;\r\n if (error) {\r\n this.reject(error);\r\n return;\r\n }\r\n const params = {\r\n auth: this.auth,\r\n requestUri: urlResponse,\r\n sessionId: sessionId,\r\n tenantId: tenantId || undefined,\r\n postBody: postBody || undefined,\r\n user: this.user,\r\n bypassAuthState: this.bypassAuthState\r\n };\r\n try {\r\n this.resolve(await this.getIdpTask(type)(params));\r\n }\r\n catch (e) {\r\n this.reject(e);\r\n }\r\n }\r\n onError(error) {\r\n this.reject(error);\r\n }\r\n getIdpTask(type) {\r\n switch (type) {\r\n case \"signInViaPopup\" /* SIGN_IN_VIA_POPUP */:\r\n case \"signInViaRedirect\" /* SIGN_IN_VIA_REDIRECT */:\r\n return _signIn;\r\n case \"linkViaPopup\" /* LINK_VIA_POPUP */:\r\n case \"linkViaRedirect\" /* LINK_VIA_REDIRECT */:\r\n return _link;\r\n case \"reauthViaPopup\" /* REAUTH_VIA_POPUP */:\r\n case \"reauthViaRedirect\" /* REAUTH_VIA_REDIRECT */:\r\n return _reauth;\r\n default:\r\n _fail(this.auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n }\r\n }\r\n resolve(cred) {\r\n debugAssert(this.pendingPromise, 'Pending promise was never set');\r\n this.pendingPromise.resolve(cred);\r\n this.unregisterAndCleanUp();\r\n }\r\n reject(error) {\r\n debugAssert(this.pendingPromise, 'Pending promise was never set');\r\n this.pendingPromise.reject(error);\r\n this.unregisterAndCleanUp();\r\n }\r\n unregisterAndCleanUp() {\r\n if (this.eventManager) {\r\n this.eventManager.unregisterConsumer(this);\r\n }\r\n this.pendingPromise = null;\r\n this.cleanUp();\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst _POLL_WINDOW_CLOSE_TIMEOUT = new Delay(2000, 10000);\r\n/**\r\n * Authenticates a Firebase client using a popup-based OAuth authentication flow.\r\n *\r\n * @remarks\r\n * If succeeds, returns the signed in user along with the provider's credential. If sign in was\r\n * unsuccessful, returns an error object containing additional information about the error.\r\n *\r\n * @example\r\n * ```javascript\r\n * // Sign in using a popup.\r\n * const provider = new FacebookAuthProvider();\r\n * const result = await signInWithPopup(auth, provider);\r\n *\r\n * // The signed-in user info.\r\n * const user = result.user;\r\n * // This gives you a Facebook Access Token.\r\n * const credential = provider.credentialFromResult(auth, result);\r\n * const token = credential.accessToken;\r\n * ```\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.\r\n * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.\r\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\r\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\r\n *\r\n *\r\n * @public\r\n */\r\nasync function signInWithPopup(auth, provider, resolver) {\r\n const authInternal = _castAuth(auth);\r\n _assertInstanceOf(auth, provider, FederatedAuthProvider);\r\n const resolverInternal = _withDefaultResolver(authInternal, resolver);\r\n const action = new PopupOperation(authInternal, \"signInViaPopup\" /* SIGN_IN_VIA_POPUP */, provider, resolverInternal);\r\n return action.executeNotNull();\r\n}\r\n/**\r\n * Reauthenticates the current user with the specified {@link OAuthProvider} using a pop-up based\r\n * OAuth flow.\r\n *\r\n * @remarks\r\n * If the reauthentication is successful, the returned result will contain the user and the\r\n * provider's credential.\r\n *\r\n * @example\r\n * ```javascript\r\n * // Sign in using a popup.\r\n * const provider = new FacebookAuthProvider();\r\n * const result = await signInWithPopup(auth, provider);\r\n * // Reauthenticate using a popup.\r\n * await reauthenticateWithPopup(result.user, provider);\r\n * ```\r\n *\r\n * @param user - The user.\r\n * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.\r\n * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.\r\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\r\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\r\n *\r\n * @public\r\n */\r\nasync function reauthenticateWithPopup(user, provider, resolver) {\r\n const userInternal = getModularInstance(user);\r\n _assertInstanceOf(userInternal.auth, provider, FederatedAuthProvider);\r\n const resolverInternal = _withDefaultResolver(userInternal.auth, resolver);\r\n const action = new PopupOperation(userInternal.auth, \"reauthViaPopup\" /* REAUTH_VIA_POPUP */, provider, resolverInternal, userInternal);\r\n return action.executeNotNull();\r\n}\r\n/**\r\n * Links the authenticated provider to the user account using a pop-up based OAuth flow.\r\n *\r\n * @remarks\r\n * If the linking is successful, the returned result will contain the user and the provider's credential.\r\n *\r\n *\r\n * @example\r\n * ```javascript\r\n * // Sign in using some other provider.\r\n * const result = await signInWithEmailAndPassword(auth, email, password);\r\n * // Link using a popup.\r\n * const provider = new FacebookAuthProvider();\r\n * await linkWithPopup(result.user, provider);\r\n * ```\r\n *\r\n * @param user - The user.\r\n * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.\r\n * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.\r\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\r\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\r\n *\r\n * @public\r\n */\r\nasync function linkWithPopup(user, provider, resolver) {\r\n const userInternal = getModularInstance(user);\r\n _assertInstanceOf(userInternal.auth, provider, FederatedAuthProvider);\r\n const resolverInternal = _withDefaultResolver(userInternal.auth, resolver);\r\n const action = new PopupOperation(userInternal.auth, \"linkViaPopup\" /* LINK_VIA_POPUP */, provider, resolverInternal, userInternal);\r\n return action.executeNotNull();\r\n}\r\n/**\r\n * Popup event manager. Handles the popup's entire lifecycle; listens to auth\r\n * events\r\n *\r\n */\r\nclass PopupOperation extends AbstractPopupRedirectOperation {\r\n constructor(auth, filter, provider, resolver, user) {\r\n super(auth, filter, resolver, user);\r\n this.provider = provider;\r\n this.authWindow = null;\r\n this.pollId = null;\r\n if (PopupOperation.currentPopupAction) {\r\n PopupOperation.currentPopupAction.cancel();\r\n }\r\n PopupOperation.currentPopupAction = this;\r\n }\r\n async executeNotNull() {\r\n const result = await this.execute();\r\n _assert(result, this.auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n return result;\r\n }\r\n async onExecution() {\r\n debugAssert(this.filter.length === 1, 'Popup operations only handle one event');\r\n const eventId = _generateEventId();\r\n this.authWindow = await this.resolver._openPopup(this.auth, this.provider, this.filter[0], // There's always one, see constructor\r\n eventId);\r\n this.authWindow.associatedEvent = eventId;\r\n // Check for web storage support and origin validation _after_ the popup is\r\n // loaded. These operations are slow (~1 second or so) Rather than\r\n // waiting on them before opening the window, optimistically open the popup\r\n // and check for storage support at the same time. If storage support is\r\n // not available, this will cause the whole thing to reject properly. It\r\n // will also close the popup, but since the promise has already rejected,\r\n // the popup closed by user poll will reject into the void.\r\n this.resolver._originValidation(this.auth).catch(e => {\r\n this.reject(e);\r\n });\r\n this.resolver._isIframeWebStorageSupported(this.auth, isSupported => {\r\n if (!isSupported) {\r\n this.reject(_createError(this.auth, \"web-storage-unsupported\" /* WEB_STORAGE_UNSUPPORTED */));\r\n }\r\n });\r\n // Handle user closure. Notice this does *not* use await\r\n this.pollUserCancellation();\r\n }\r\n get eventId() {\r\n var _a;\r\n return ((_a = this.authWindow) === null || _a === void 0 ? void 0 : _a.associatedEvent) || null;\r\n }\r\n cancel() {\r\n this.reject(_createError(this.auth, \"cancelled-popup-request\" /* EXPIRED_POPUP_REQUEST */));\r\n }\r\n cleanUp() {\r\n if (this.authWindow) {\r\n this.authWindow.close();\r\n }\r\n if (this.pollId) {\r\n window.clearTimeout(this.pollId);\r\n }\r\n this.authWindow = null;\r\n this.pollId = null;\r\n PopupOperation.currentPopupAction = null;\r\n }\r\n pollUserCancellation() {\r\n const poll = () => {\r\n var _a, _b;\r\n if ((_b = (_a = this.authWindow) === null || _a === void 0 ? void 0 : _a.window) === null || _b === void 0 ? void 0 : _b.closed) {\r\n // Make sure that there is sufficient time for whatever action to\r\n // complete. The window could have closed but the sign in network\r\n // call could still be in flight.\r\n this.pollId = window.setTimeout(() => {\r\n this.pollId = null;\r\n this.reject(_createError(this.auth, \"popup-closed-by-user\" /* POPUP_CLOSED_BY_USER */));\r\n }, 2000 /* AUTH_EVENT */);\r\n return;\r\n }\r\n this.pollId = window.setTimeout(poll, _POLL_WINDOW_CLOSE_TIMEOUT.get());\r\n };\r\n poll();\r\n }\r\n}\r\n// Only one popup is ever shown at once. The lifecycle of the current popup\r\n// can be managed / cancelled by the constructor.\r\nPopupOperation.currentPopupAction = null;\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst PENDING_REDIRECT_KEY = 'pendingRedirect';\r\n// We only get one redirect outcome for any one auth, so just store it\r\n// in here.\r\nconst redirectOutcomeMap = new Map();\r\nclass RedirectAction extends AbstractPopupRedirectOperation {\r\n constructor(auth, resolver, bypassAuthState = false) {\r\n super(auth, [\r\n \"signInViaRedirect\" /* SIGN_IN_VIA_REDIRECT */,\r\n \"linkViaRedirect\" /* LINK_VIA_REDIRECT */,\r\n \"reauthViaRedirect\" /* REAUTH_VIA_REDIRECT */,\r\n \"unknown\" /* UNKNOWN */\r\n ], resolver, undefined, bypassAuthState);\r\n this.eventId = null;\r\n }\r\n /**\r\n * Override the execute function; if we already have a redirect result, then\r\n * just return it.\r\n */\r\n async execute() {\r\n let readyOutcome = redirectOutcomeMap.get(this.auth._key());\r\n if (!readyOutcome) {\r\n try {\r\n const hasPendingRedirect = await _getAndClearPendingRedirectStatus(this.resolver, this.auth);\r\n const result = hasPendingRedirect ? await super.execute() : null;\r\n readyOutcome = () => Promise.resolve(result);\r\n }\r\n catch (e) {\r\n readyOutcome = () => Promise.reject(e);\r\n }\r\n redirectOutcomeMap.set(this.auth._key(), readyOutcome);\r\n }\r\n // If we're not bypassing auth state, the ready outcome should be set to\r\n // null.\r\n if (!this.bypassAuthState) {\r\n redirectOutcomeMap.set(this.auth._key(), () => Promise.resolve(null));\r\n }\r\n return readyOutcome();\r\n }\r\n async onAuthEvent(event) {\r\n if (event.type === \"signInViaRedirect\" /* SIGN_IN_VIA_REDIRECT */) {\r\n return super.onAuthEvent(event);\r\n }\r\n else if (event.type === \"unknown\" /* UNKNOWN */) {\r\n // This is a sentinel value indicating there's no pending redirect\r\n this.resolve(null);\r\n return;\r\n }\r\n if (event.eventId) {\r\n const user = await this.auth._redirectUserForId(event.eventId);\r\n if (user) {\r\n this.user = user;\r\n return super.onAuthEvent(event);\r\n }\r\n else {\r\n this.resolve(null);\r\n }\r\n }\r\n }\r\n async onExecution() { }\r\n cleanUp() { }\r\n}\r\nasync function _getAndClearPendingRedirectStatus(resolver, auth) {\r\n const key = pendingRedirectKey(auth);\r\n const persistence = resolverPersistence(resolver);\r\n if (!(await persistence._isAvailable())) {\r\n return false;\r\n }\r\n const hasPendingRedirect = (await persistence._get(key)) === 'true';\r\n await persistence._remove(key);\r\n return hasPendingRedirect;\r\n}\r\nasync function _setPendingRedirectStatus(resolver, auth) {\r\n return resolverPersistence(resolver)._set(pendingRedirectKey(auth), 'true');\r\n}\r\nfunction _clearRedirectOutcomes() {\r\n redirectOutcomeMap.clear();\r\n}\r\nfunction _overrideRedirectResult(auth, result) {\r\n redirectOutcomeMap.set(auth._key(), result);\r\n}\r\nfunction resolverPersistence(resolver) {\r\n return _getInstance(resolver._redirectPersistence);\r\n}\r\nfunction pendingRedirectKey(auth) {\r\n return _persistenceKeyName(PENDING_REDIRECT_KEY, auth.config.apiKey, auth.name);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Authenticates a Firebase client using a full-page redirect flow.\r\n *\r\n * @remarks\r\n * To handle the results and errors for this operation, refer to {@link getRedirectResult}.\r\n *\r\n * @example\r\n * ```javascript\r\n * // Sign in using a redirect.\r\n * const provider = new FacebookAuthProvider();\r\n * // You can add additional scopes to the provider:\r\n * provider.addScope('user_birthday');\r\n * // Start a sign in process for an unauthenticated user.\r\n * await signInWithRedirect(auth, provider);\r\n * // This will trigger a full page redirect away from your app\r\n *\r\n * // After returning from the redirect when your app initializes you can obtain the result\r\n * const result = await getRedirectResult(auth);\r\n * if (result) {\r\n * // This is the signed-in user\r\n * const user = result.user;\r\n * // This gives you a Facebook Access Token.\r\n * const credential = provider.credentialFromResult(auth, result);\r\n * const token = credential.accessToken;\r\n * }\r\n * // As this API can be used for sign-in, linking and reauthentication,\r\n * // check the operationType to determine what triggered this redirect\r\n * // operation.\r\n * const operationType = result.operationType;\r\n * ```\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.\r\n * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.\r\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\r\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\r\n *\r\n * @public\r\n */\r\nfunction signInWithRedirect(auth, provider, resolver) {\r\n return _signInWithRedirect(auth, provider, resolver);\r\n}\r\nasync function _signInWithRedirect(auth, provider, resolver) {\r\n const authInternal = _castAuth(auth);\r\n _assertInstanceOf(auth, provider, FederatedAuthProvider);\r\n const resolverInternal = _withDefaultResolver(authInternal, resolver);\r\n await _setPendingRedirectStatus(resolverInternal, authInternal);\r\n return resolverInternal._openRedirect(authInternal, provider, \"signInViaRedirect\" /* SIGN_IN_VIA_REDIRECT */);\r\n}\r\n/**\r\n * Reauthenticates the current user with the specified {@link OAuthProvider} using a full-page redirect flow.\r\n *\r\n * @example\r\n * ```javascript\r\n * // Sign in using a redirect.\r\n * const provider = new FacebookAuthProvider();\r\n * const result = await signInWithRedirect(auth, provider);\r\n * // This will trigger a full page redirect away from your app\r\n *\r\n * // After returning from the redirect when your app initializes you can obtain the result\r\n * const result = await getRedirectResult(auth);\r\n * // Link using a redirect.\r\n * await linkWithRedirect(result.user, provider);\r\n * // This will again trigger a full page redirect away from your app\r\n *\r\n * // After returning from the redirect when your app initializes you can obtain the result\r\n * const result = await getRedirectResult(auth);\r\n * ```\r\n *\r\n * @param user - The user.\r\n * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.\r\n * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.\r\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\r\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\r\n *\r\n * @public\r\n */\r\nfunction reauthenticateWithRedirect(user, provider, resolver) {\r\n return _reauthenticateWithRedirect(user, provider, resolver);\r\n}\r\nasync function _reauthenticateWithRedirect(user, provider, resolver) {\r\n const userInternal = getModularInstance(user);\r\n _assertInstanceOf(userInternal.auth, provider, FederatedAuthProvider);\r\n // Allow the resolver to error before persisting the redirect user\r\n const resolverInternal = _withDefaultResolver(userInternal.auth, resolver);\r\n await _setPendingRedirectStatus(resolverInternal, userInternal.auth);\r\n const eventId = await prepareUserForRedirect(userInternal);\r\n return resolverInternal._openRedirect(userInternal.auth, provider, \"reauthViaRedirect\" /* REAUTH_VIA_REDIRECT */, eventId);\r\n}\r\n/**\r\n * Links the {@link OAuthProvider} to the user account using a full-page redirect flow.\r\n *\r\n * @example\r\n * ```javascript\r\n * // Sign in using some other provider.\r\n * const result = await signInWithEmailAndPassword(auth, email, password);\r\n * // Link using a redirect.\r\n * const provider = new FacebookAuthProvider();\r\n * await linkWithRedirect(result.user, provider);\r\n * // This will trigger a full page redirect away from your app\r\n *\r\n * // After returning from the redirect when your app initializes you can obtain the result\r\n * const result = await getRedirectResult(auth);\r\n * ```\r\n *\r\n * @param user - The user.\r\n * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.\r\n * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.\r\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\r\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\r\n *\r\n *\r\n * @public\r\n */\r\nfunction linkWithRedirect(user, provider, resolver) {\r\n return _linkWithRedirect(user, provider, resolver);\r\n}\r\nasync function _linkWithRedirect(user, provider, resolver) {\r\n const userInternal = getModularInstance(user);\r\n _assertInstanceOf(userInternal.auth, provider, FederatedAuthProvider);\r\n // Allow the resolver to error before persisting the redirect user\r\n const resolverInternal = _withDefaultResolver(userInternal.auth, resolver);\r\n await _assertLinkedStatus(false, userInternal, provider.providerId);\r\n await _setPendingRedirectStatus(resolverInternal, userInternal.auth);\r\n const eventId = await prepareUserForRedirect(userInternal);\r\n return resolverInternal._openRedirect(userInternal.auth, provider, \"linkViaRedirect\" /* LINK_VIA_REDIRECT */, eventId);\r\n}\r\n/**\r\n * Returns a {@link UserCredential} from the redirect-based sign-in flow.\r\n *\r\n * @remarks\r\n * If sign-in succeeded, returns the signed in user. If sign-in was unsuccessful, fails with an\r\n * error. If no redirect operation was called, returns a {@link UserCredential}\r\n * with a null `user`.\r\n *\r\n * @example\r\n * ```javascript\r\n * // Sign in using a redirect.\r\n * const provider = new FacebookAuthProvider();\r\n * // You can add additional scopes to the provider:\r\n * provider.addScope('user_birthday');\r\n * // Start a sign in process for an unauthenticated user.\r\n * await signInWithRedirect(auth, provider);\r\n * // This will trigger a full page redirect away from your app\r\n *\r\n * // After returning from the redirect when your app initializes you can obtain the result\r\n * const result = await getRedirectResult(auth);\r\n * if (result) {\r\n * // This is the signed-in user\r\n * const user = result.user;\r\n * // This gives you a Facebook Access Token.\r\n * const credential = provider.credentialFromResult(auth, result);\r\n * const token = credential.accessToken;\r\n * }\r\n * // As this API can be used for sign-in, linking and reauthentication,\r\n * // check the operationType to determine what triggered this redirect\r\n * // operation.\r\n * const operationType = result.operationType;\r\n * ```\r\n *\r\n * @param auth - The {@link Auth} instance.\r\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\r\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\r\n *\r\n * @public\r\n */\r\nasync function getRedirectResult(auth, resolver) {\r\n await _castAuth(auth)._initializationPromise;\r\n return _getRedirectResult(auth, resolver, false);\r\n}\r\nasync function _getRedirectResult(auth, resolverExtern, bypassAuthState = false) {\r\n const authInternal = _castAuth(auth);\r\n const resolver = _withDefaultResolver(authInternal, resolverExtern);\r\n const action = new RedirectAction(authInternal, resolver, bypassAuthState);\r\n const result = await action.execute();\r\n if (result && !bypassAuthState) {\r\n delete result.user._redirectEventId;\r\n await authInternal._persistUserIfCurrent(result.user);\r\n await authInternal._setRedirectUser(null, resolverExtern);\r\n }\r\n return result;\r\n}\r\nasync function prepareUserForRedirect(user) {\r\n const eventId = _generateEventId(`${user.uid}:::`);\r\n user._redirectEventId = eventId;\r\n await user.auth._setRedirectUser(user);\r\n await user.auth._persistUserIfCurrent(user);\r\n return eventId;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// The amount of time to store the UIDs of seen events; this is\r\n// set to 10 min by default\r\nconst EVENT_DUPLICATION_CACHE_DURATION_MS = 10 * 60 * 1000;\r\nclass AuthEventManager {\r\n constructor(auth) {\r\n this.auth = auth;\r\n this.cachedEventUids = new Set();\r\n this.consumers = new Set();\r\n this.queuedRedirectEvent = null;\r\n this.hasHandledPotentialRedirect = false;\r\n this.lastProcessedEventTime = Date.now();\r\n }\r\n registerConsumer(authEventConsumer) {\r\n this.consumers.add(authEventConsumer);\r\n if (this.queuedRedirectEvent &&\r\n this.isEventForConsumer(this.queuedRedirectEvent, authEventConsumer)) {\r\n this.sendToConsumer(this.queuedRedirectEvent, authEventConsumer);\r\n this.saveEventToCache(this.queuedRedirectEvent);\r\n this.queuedRedirectEvent = null;\r\n }\r\n }\r\n unregisterConsumer(authEventConsumer) {\r\n this.consumers.delete(authEventConsumer);\r\n }\r\n onEvent(event) {\r\n // Check if the event has already been handled\r\n if (this.hasEventBeenHandled(event)) {\r\n return false;\r\n }\r\n let handled = false;\r\n this.consumers.forEach(consumer => {\r\n if (this.isEventForConsumer(event, consumer)) {\r\n handled = true;\r\n this.sendToConsumer(event, consumer);\r\n this.saveEventToCache(event);\r\n }\r\n });\r\n if (this.hasHandledPotentialRedirect || !isRedirectEvent(event)) {\r\n // If we've already seen a redirect before, or this is a popup event,\r\n // bail now\r\n return handled;\r\n }\r\n this.hasHandledPotentialRedirect = true;\r\n // If the redirect wasn't handled, hang on to it\r\n if (!handled) {\r\n this.queuedRedirectEvent = event;\r\n handled = true;\r\n }\r\n return handled;\r\n }\r\n sendToConsumer(event, consumer) {\r\n var _a;\r\n if (event.error && !isNullRedirectEvent(event)) {\r\n const code = ((_a = event.error.code) === null || _a === void 0 ? void 0 : _a.split('auth/')[1]) ||\r\n \"internal-error\" /* INTERNAL_ERROR */;\r\n consumer.onError(_createError(this.auth, code));\r\n }\r\n else {\r\n consumer.onAuthEvent(event);\r\n }\r\n }\r\n isEventForConsumer(event, consumer) {\r\n const eventIdMatches = consumer.eventId === null ||\r\n (!!event.eventId && event.eventId === consumer.eventId);\r\n return consumer.filter.includes(event.type) && eventIdMatches;\r\n }\r\n hasEventBeenHandled(event) {\r\n if (Date.now() - this.lastProcessedEventTime >=\r\n EVENT_DUPLICATION_CACHE_DURATION_MS) {\r\n this.cachedEventUids.clear();\r\n }\r\n return this.cachedEventUids.has(eventUid(event));\r\n }\r\n saveEventToCache(event) {\r\n this.cachedEventUids.add(eventUid(event));\r\n this.lastProcessedEventTime = Date.now();\r\n }\r\n}\r\nfunction eventUid(e) {\r\n return [e.type, e.eventId, e.sessionId, e.tenantId].filter(v => v).join('-');\r\n}\r\nfunction isNullRedirectEvent({ type, error }) {\r\n return (type === \"unknown\" /* UNKNOWN */ &&\r\n (error === null || error === void 0 ? void 0 : error.code) === `auth/${\"no-auth-event\" /* NO_AUTH_EVENT */}`);\r\n}\r\nfunction isRedirectEvent(event) {\r\n switch (event.type) {\r\n case \"signInViaRedirect\" /* SIGN_IN_VIA_REDIRECT */:\r\n case \"linkViaRedirect\" /* LINK_VIA_REDIRECT */:\r\n case \"reauthViaRedirect\" /* REAUTH_VIA_REDIRECT */:\r\n return true;\r\n case \"unknown\" /* UNKNOWN */:\r\n return isNullRedirectEvent(event);\r\n default:\r\n return false;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function _getProjectConfig(auth, request = {}) {\r\n return _performApiRequest(auth, \"GET\" /* GET */, \"/v1/projects\" /* GET_PROJECT_CONFIG */, request);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst IP_ADDRESS_REGEX = /^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/;\r\nconst HTTP_REGEX = /^https?/;\r\nasync function _validateOrigin(auth) {\r\n // Skip origin validation if we are in an emulated environment\r\n if (auth.config.emulator) {\r\n return;\r\n }\r\n const { authorizedDomains } = await _getProjectConfig(auth);\r\n for (const domain of authorizedDomains) {\r\n try {\r\n if (matchDomain(domain)) {\r\n return;\r\n }\r\n }\r\n catch (_a) {\r\n // Do nothing if there's a URL error; just continue searching\r\n }\r\n }\r\n // In the old SDK, this error also provides helpful messages.\r\n _fail(auth, \"unauthorized-domain\" /* INVALID_ORIGIN */);\r\n}\r\nfunction matchDomain(expected) {\r\n const currentUrl = _getCurrentUrl();\r\n const { protocol, hostname } = new URL(currentUrl);\r\n if (expected.startsWith('chrome-extension://')) {\r\n const ceUrl = new URL(expected);\r\n if (ceUrl.hostname === '' && hostname === '') {\r\n // For some reason we're not parsing chrome URLs properly\r\n return (protocol === 'chrome-extension:' &&\r\n expected.replace('chrome-extension://', '') ===\r\n currentUrl.replace('chrome-extension://', ''));\r\n }\r\n return protocol === 'chrome-extension:' && ceUrl.hostname === hostname;\r\n }\r\n if (!HTTP_REGEX.test(protocol)) {\r\n return false;\r\n }\r\n if (IP_ADDRESS_REGEX.test(expected)) {\r\n // The domain has to be exactly equal to the pattern, as an IP domain will\r\n // only contain the IP, no extra character.\r\n return hostname === expected;\r\n }\r\n // Dots in pattern should be escaped.\r\n const escapedDomainPattern = expected.replace(/\\./g, '\\\\.');\r\n // Non ip address domains.\r\n // domain.com = *.domain.com OR domain.com\r\n const re = new RegExp('^(.+\\\\.' + escapedDomainPattern + '|' + escapedDomainPattern + ')$', 'i');\r\n return re.test(hostname);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst NETWORK_TIMEOUT = new Delay(30000, 60000);\r\n/**\r\n * Reset unlaoded GApi modules. If gapi.load fails due to a network error,\r\n * it will stop working after a retrial. This is a hack to fix this issue.\r\n */\r\nfunction resetUnloadedGapiModules() {\r\n // Clear last failed gapi.load state to force next gapi.load to first\r\n // load the failed gapi.iframes module.\r\n // Get gapix.beacon context.\r\n const beacon = _window().___jsl;\r\n // Get current hint.\r\n if (beacon === null || beacon === void 0 ? void 0 : beacon.H) {\r\n // Get gapi hint.\r\n for (const hint of Object.keys(beacon.H)) {\r\n // Requested modules.\r\n beacon.H[hint].r = beacon.H[hint].r || [];\r\n // Loaded modules.\r\n beacon.H[hint].L = beacon.H[hint].L || [];\r\n // Set requested modules to a copy of the loaded modules.\r\n beacon.H[hint].r = [...beacon.H[hint].L];\r\n // Clear pending callbacks.\r\n if (beacon.CP) {\r\n for (let i = 0; i < beacon.CP.length; i++) {\r\n // Remove all failed pending callbacks.\r\n beacon.CP[i] = null;\r\n }\r\n }\r\n }\r\n }\r\n}\r\nfunction loadGapi(auth) {\r\n return new Promise((resolve, reject) => {\r\n var _a, _b, _c;\r\n // Function to run when gapi.load is ready.\r\n function loadGapiIframe() {\r\n // The developer may have tried to previously run gapi.load and failed.\r\n // Run this to fix that.\r\n resetUnloadedGapiModules();\r\n gapi.load('gapi.iframes', {\r\n callback: () => {\r\n resolve(gapi.iframes.getContext());\r\n },\r\n ontimeout: () => {\r\n // The above reset may be sufficient, but having this reset after\r\n // failure ensures that if the developer calls gapi.load after the\r\n // connection is re-established and before another attempt to embed\r\n // the iframe, it would work and would not be broken because of our\r\n // failed attempt.\r\n // Timeout when gapi.iframes.Iframe not loaded.\r\n resetUnloadedGapiModules();\r\n reject(_createError(auth, \"network-request-failed\" /* NETWORK_REQUEST_FAILED */));\r\n },\r\n timeout: NETWORK_TIMEOUT.get()\r\n });\r\n }\r\n if ((_b = (_a = _window().gapi) === null || _a === void 0 ? void 0 : _a.iframes) === null || _b === void 0 ? void 0 : _b.Iframe) {\r\n // If gapi.iframes.Iframe available, resolve.\r\n resolve(gapi.iframes.getContext());\r\n }\r\n else if (!!((_c = _window().gapi) === null || _c === void 0 ? void 0 : _c.load)) {\r\n // Gapi loader ready, load gapi.iframes.\r\n loadGapiIframe();\r\n }\r\n else {\r\n // Create a new iframe callback when this is called so as not to overwrite\r\n // any previous defined callback. This happens if this method is called\r\n // multiple times in parallel and could result in the later callback\r\n // overwriting the previous one. This would end up with a iframe\r\n // timeout.\r\n const cbName = _generateCallbackName('iframefcb');\r\n // GApi loader not available, dynamically load platform.js.\r\n _window()[cbName] = () => {\r\n // GApi loader should be ready.\r\n if (!!gapi.load) {\r\n loadGapiIframe();\r\n }\r\n else {\r\n // Gapi loader failed, throw error.\r\n reject(_createError(auth, \"network-request-failed\" /* NETWORK_REQUEST_FAILED */));\r\n }\r\n };\r\n // Load GApi loader.\r\n return _loadJS(`https://apis.google.com/js/api.js?onload=${cbName}`).catch(e => reject(e));\r\n }\r\n }).catch(error => {\r\n // Reset cached promise to allow for retrial.\r\n cachedGApiLoader = null;\r\n throw error;\r\n });\r\n}\r\nlet cachedGApiLoader = null;\r\nfunction _loadGapi(auth) {\r\n cachedGApiLoader = cachedGApiLoader || loadGapi(auth);\r\n return cachedGApiLoader;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst PING_TIMEOUT = new Delay(5000, 15000);\r\nconst IFRAME_PATH = '__/auth/iframe';\r\nconst EMULATED_IFRAME_PATH = 'emulator/auth/iframe';\r\nconst IFRAME_ATTRIBUTES = {\r\n style: {\r\n position: 'absolute',\r\n top: '-100px',\r\n width: '1px',\r\n height: '1px'\r\n },\r\n 'aria-hidden': 'true',\r\n tabindex: '-1'\r\n};\r\n// Map from apiHost to endpoint ID for passing into iframe. In current SDK, apiHost can be set to\r\n// anything (not from a list of endpoints with IDs as in legacy), so this is the closest we can get.\r\nconst EID_FROM_APIHOST = new Map([\r\n [\"identitytoolkit.googleapis.com\" /* API_HOST */, 'p'],\r\n ['staging-identitytoolkit.sandbox.googleapis.com', 's'],\r\n ['test-identitytoolkit.sandbox.googleapis.com', 't'] // test\r\n]);\r\nfunction getIframeUrl(auth) {\r\n const config = auth.config;\r\n _assert(config.authDomain, auth, \"auth-domain-config-required\" /* MISSING_AUTH_DOMAIN */);\r\n const url = config.emulator\r\n ? _emulatorUrl(config, EMULATED_IFRAME_PATH)\r\n : `https://${auth.config.authDomain}/${IFRAME_PATH}`;\r\n const params = {\r\n apiKey: config.apiKey,\r\n appName: auth.name,\r\n v: SDK_VERSION\r\n };\r\n const eid = EID_FROM_APIHOST.get(auth.config.apiHost);\r\n if (eid) {\r\n params.eid = eid;\r\n }\r\n const frameworks = auth._getFrameworks();\r\n if (frameworks.length) {\r\n params.fw = frameworks.join(',');\r\n }\r\n return `${url}?${querystring(params).slice(1)}`;\r\n}\r\nasync function _openIframe(auth) {\r\n const context = await _loadGapi(auth);\r\n const gapi = _window().gapi;\r\n _assert(gapi, auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n return context.open({\r\n where: document.body,\r\n url: getIframeUrl(auth),\r\n messageHandlersFilter: gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER,\r\n attributes: IFRAME_ATTRIBUTES,\r\n dontclear: true\r\n }, (iframe) => new Promise(async (resolve, reject) => {\r\n await iframe.restyle({\r\n // Prevent iframe from closing on mouse out.\r\n setHideOnLeave: false\r\n });\r\n const networkError = _createError(auth, \"network-request-failed\" /* NETWORK_REQUEST_FAILED */);\r\n // Confirm iframe is correctly loaded.\r\n // To fallback on failure, set a timeout.\r\n const networkErrorTimer = _window().setTimeout(() => {\r\n reject(networkError);\r\n }, PING_TIMEOUT.get());\r\n // Clear timer and resolve pending iframe ready promise.\r\n function clearTimerAndResolve() {\r\n _window().clearTimeout(networkErrorTimer);\r\n resolve(iframe);\r\n }\r\n // This returns an IThenable. However the reject part does not call\r\n // when the iframe is not loaded.\r\n iframe.ping(clearTimerAndResolve).then(clearTimerAndResolve, () => {\r\n reject(networkError);\r\n });\r\n }));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst BASE_POPUP_OPTIONS = {\r\n location: 'yes',\r\n resizable: 'yes',\r\n statusbar: 'yes',\r\n toolbar: 'no'\r\n};\r\nconst DEFAULT_WIDTH = 500;\r\nconst DEFAULT_HEIGHT = 600;\r\nconst TARGET_BLANK = '_blank';\r\nconst FIREFOX_EMPTY_URL = 'http://localhost';\r\nclass AuthPopup {\r\n constructor(window) {\r\n this.window = window;\r\n this.associatedEvent = null;\r\n }\r\n close() {\r\n if (this.window) {\r\n try {\r\n this.window.close();\r\n }\r\n catch (e) { }\r\n }\r\n }\r\n}\r\nfunction _open(auth, url, name, width = DEFAULT_WIDTH, height = DEFAULT_HEIGHT) {\r\n const top = Math.max((window.screen.availHeight - height) / 2, 0).toString();\r\n const left = Math.max((window.screen.availWidth - width) / 2, 0).toString();\r\n let target = '';\r\n const options = Object.assign(Object.assign({}, BASE_POPUP_OPTIONS), { width: width.toString(), height: height.toString(), top,\r\n left });\r\n // Chrome iOS 7 and 8 is returning an undefined popup win when target is\r\n // specified, even though the popup is not necessarily blocked.\r\n const ua = getUA().toLowerCase();\r\n if (name) {\r\n target = _isChromeIOS(ua) ? TARGET_BLANK : name;\r\n }\r\n if (_isFirefox(ua)) {\r\n // Firefox complains when invalid URLs are popped out. Hacky way to bypass.\r\n url = url || FIREFOX_EMPTY_URL;\r\n // Firefox disables by default scrolling on popup windows, which can create\r\n // issues when the user has many Google accounts, for instance.\r\n options.scrollbars = 'yes';\r\n }\r\n const optionsString = Object.entries(options).reduce((accum, [key, value]) => `${accum}${key}=${value},`, '');\r\n if (_isIOSStandalone(ua) && target !== '_self') {\r\n openAsNewWindowIOS(url || '', target);\r\n return new AuthPopup(null);\r\n }\r\n // about:blank getting sanitized causing browsers like IE/Edge to display\r\n // brief error message before redirecting to handler.\r\n const newWin = window.open(url || '', target, optionsString);\r\n _assert(newWin, auth, \"popup-blocked\" /* POPUP_BLOCKED */);\r\n // Flaky on IE edge, encapsulate with a try and catch.\r\n try {\r\n newWin.focus();\r\n }\r\n catch (e) { }\r\n return new AuthPopup(newWin);\r\n}\r\nfunction openAsNewWindowIOS(url, target) {\r\n const el = document.createElement('a');\r\n el.href = url;\r\n el.target = target;\r\n const click = document.createEvent('MouseEvent');\r\n click.initMouseEvent('click', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 1, null);\r\n el.dispatchEvent(click);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * URL for Authentication widget which will initiate the OAuth handshake\r\n *\r\n * @internal\r\n */\r\nconst WIDGET_PATH = '__/auth/handler';\r\n/**\r\n * URL for emulated environment\r\n *\r\n * @internal\r\n */\r\nconst EMULATOR_WIDGET_PATH = 'emulator/auth/handler';\r\nfunction _getRedirectUrl(auth, provider, authType, redirectUrl, eventId, additionalParams) {\r\n _assert(auth.config.authDomain, auth, \"auth-domain-config-required\" /* MISSING_AUTH_DOMAIN */);\r\n _assert(auth.config.apiKey, auth, \"invalid-api-key\" /* INVALID_API_KEY */);\r\n const params = {\r\n apiKey: auth.config.apiKey,\r\n appName: auth.name,\r\n authType,\r\n redirectUrl,\r\n v: SDK_VERSION,\r\n eventId\r\n };\r\n if (provider instanceof FederatedAuthProvider) {\r\n provider.setDefaultLanguage(auth.languageCode);\r\n params.providerId = provider.providerId || '';\r\n if (!isEmpty(provider.getCustomParameters())) {\r\n params.customParameters = JSON.stringify(provider.getCustomParameters());\r\n }\r\n // TODO set additionalParams from the provider as well?\r\n for (const [key, value] of Object.entries(additionalParams || {})) {\r\n params[key] = value;\r\n }\r\n }\r\n if (provider instanceof BaseOAuthProvider) {\r\n const scopes = provider.getScopes().filter(scope => scope !== '');\r\n if (scopes.length > 0) {\r\n params.scopes = scopes.join(',');\r\n }\r\n }\r\n if (auth.tenantId) {\r\n params.tid = auth.tenantId;\r\n }\r\n // TODO: maybe set eid as endipointId\r\n // TODO: maybe set fw as Frameworks.join(\",\")\r\n const paramsDict = params;\r\n for (const key of Object.keys(paramsDict)) {\r\n if (paramsDict[key] === undefined) {\r\n delete paramsDict[key];\r\n }\r\n }\r\n return `${getHandlerBase(auth)}?${querystring(paramsDict).slice(1)}`;\r\n}\r\nfunction getHandlerBase({ config }) {\r\n if (!config.emulator) {\r\n return `https://${config.authDomain}/${WIDGET_PATH}`;\r\n }\r\n return _emulatorUrl(config, EMULATOR_WIDGET_PATH);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The special web storage event\r\n *\r\n */\r\nconst WEB_STORAGE_SUPPORT_KEY = 'webStorageSupport';\r\nclass BrowserPopupRedirectResolver {\r\n constructor() {\r\n this.eventManagers = {};\r\n this.iframes = {};\r\n this.originValidationPromises = {};\r\n this._redirectPersistence = browserSessionPersistence;\r\n this._completeRedirectFn = _getRedirectResult;\r\n this._overrideRedirectResult = _overrideRedirectResult;\r\n }\r\n // Wrapping in async even though we don't await anywhere in order\r\n // to make sure errors are raised as promise rejections\r\n async _openPopup(auth, provider, authType, eventId) {\r\n var _a;\r\n debugAssert((_a = this.eventManagers[auth._key()]) === null || _a === void 0 ? void 0 : _a.manager, '_initialize() not called before _openPopup()');\r\n const url = _getRedirectUrl(auth, provider, authType, _getCurrentUrl(), eventId);\r\n return _open(auth, url, _generateEventId());\r\n }\r\n async _openRedirect(auth, provider, authType, eventId) {\r\n await this._originValidation(auth);\r\n _setWindowLocation(_getRedirectUrl(auth, provider, authType, _getCurrentUrl(), eventId));\r\n return new Promise(() => { });\r\n }\r\n _initialize(auth) {\r\n const key = auth._key();\r\n if (this.eventManagers[key]) {\r\n const { manager, promise } = this.eventManagers[key];\r\n if (manager) {\r\n return Promise.resolve(manager);\r\n }\r\n else {\r\n debugAssert(promise, 'If manager is not set, promise should be');\r\n return promise;\r\n }\r\n }\r\n const promise = this.initAndGetManager(auth);\r\n this.eventManagers[key] = { promise };\r\n // If the promise is rejected, the key should be removed so that the\r\n // operation can be retried later.\r\n promise.catch(() => {\r\n delete this.eventManagers[key];\r\n });\r\n return promise;\r\n }\r\n async initAndGetManager(auth) {\r\n const iframe = await _openIframe(auth);\r\n const manager = new AuthEventManager(auth);\r\n iframe.register('authEvent', (iframeEvent) => {\r\n _assert(iframeEvent === null || iframeEvent === void 0 ? void 0 : iframeEvent.authEvent, auth, \"invalid-auth-event\" /* INVALID_AUTH_EVENT */);\r\n // TODO: Consider splitting redirect and popup events earlier on\r\n const handled = manager.onEvent(iframeEvent.authEvent);\r\n return { status: handled ? \"ACK\" /* ACK */ : \"ERROR\" /* ERROR */ };\r\n }, gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER);\r\n this.eventManagers[auth._key()] = { manager };\r\n this.iframes[auth._key()] = iframe;\r\n return manager;\r\n }\r\n _isIframeWebStorageSupported(auth, cb) {\r\n const iframe = this.iframes[auth._key()];\r\n iframe.send(WEB_STORAGE_SUPPORT_KEY, { type: WEB_STORAGE_SUPPORT_KEY }, result => {\r\n var _a;\r\n const isSupported = (_a = result === null || result === void 0 ? void 0 : result[0]) === null || _a === void 0 ? void 0 : _a[WEB_STORAGE_SUPPORT_KEY];\r\n if (isSupported !== undefined) {\r\n cb(!!isSupported);\r\n }\r\n _fail(auth, \"internal-error\" /* INTERNAL_ERROR */);\r\n }, gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER);\r\n }\r\n _originValidation(auth) {\r\n const key = auth._key();\r\n if (!this.originValidationPromises[key]) {\r\n this.originValidationPromises[key] = _validateOrigin(auth);\r\n }\r\n return this.originValidationPromises[key];\r\n }\r\n get _shouldInitProactively() {\r\n // Mobile browsers and Safari need to optimistically initialize\r\n return _isMobileBrowser() || _isSafari() || _isIOS();\r\n }\r\n}\r\n/**\r\n * An implementation of {@link PopupRedirectResolver} suitable for browser\r\n * based applications.\r\n *\r\n * @public\r\n */\r\nconst browserPopupRedirectResolver = BrowserPopupRedirectResolver;\n\nclass MultiFactorAssertionImpl {\r\n constructor(factorId) {\r\n this.factorId = factorId;\r\n }\r\n _process(auth, session, displayName) {\r\n switch (session.type) {\r\n case \"enroll\" /* ENROLL */:\r\n return this._finalizeEnroll(auth, session.credential, displayName);\r\n case \"signin\" /* SIGN_IN */:\r\n return this._finalizeSignIn(auth, session.credential);\r\n default:\r\n return debugFail('unexpected MultiFactorSessionType');\r\n }\r\n }\r\n}\n\n/**\r\n * {@inheritdoc PhoneMultiFactorAssertion}\r\n *\r\n * @public\r\n */\r\nclass PhoneMultiFactorAssertionImpl extends MultiFactorAssertionImpl {\r\n constructor(credential) {\r\n super(\"phone\" /* PHONE */);\r\n this.credential = credential;\r\n }\r\n /** @internal */\r\n static _fromCredential(credential) {\r\n return new PhoneMultiFactorAssertionImpl(credential);\r\n }\r\n /** @internal */\r\n _finalizeEnroll(auth, idToken, displayName) {\r\n return finalizeEnrollPhoneMfa(auth, {\r\n idToken,\r\n displayName,\r\n phoneVerificationInfo: this.credential._makeVerificationRequest()\r\n });\r\n }\r\n /** @internal */\r\n _finalizeSignIn(auth, mfaPendingCredential) {\r\n return finalizeSignInPhoneMfa(auth, {\r\n mfaPendingCredential,\r\n phoneVerificationInfo: this.credential._makeVerificationRequest()\r\n });\r\n }\r\n}\r\n/**\r\n * Provider for generating a {@link PhoneMultiFactorAssertion}.\r\n *\r\n * @public\r\n */\r\nclass PhoneMultiFactorGenerator {\r\n constructor() { }\r\n /**\r\n * Provides a {@link PhoneMultiFactorAssertion} to confirm ownership of the phone second factor.\r\n *\r\n * @param phoneAuthCredential - A credential provided by {@link PhoneAuthProvider.credential}.\r\n * @returns A {@link PhoneMultiFactorAssertion} which can be used with\r\n * {@link MultiFactorResolver.resolveSignIn}\r\n */\r\n static assertion(credential) {\r\n return PhoneMultiFactorAssertionImpl._fromCredential(credential);\r\n }\r\n}\r\n/**\r\n * The identifier of the phone second factor: `phone`.\r\n */\r\nPhoneMultiFactorGenerator.FACTOR_ID = 'phone';\n\nvar name = \"@firebase/auth\";\nvar version = \"0.20.2\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass AuthInterop {\r\n constructor(auth) {\r\n this.auth = auth;\r\n this.internalListeners = new Map();\r\n }\r\n getUid() {\r\n var _a;\r\n this.assertAuthConfigured();\r\n return ((_a = this.auth.currentUser) === null || _a === void 0 ? void 0 : _a.uid) || null;\r\n }\r\n async getToken(forceRefresh) {\r\n this.assertAuthConfigured();\r\n await this.auth._initializationPromise;\r\n if (!this.auth.currentUser) {\r\n return null;\r\n }\r\n const accessToken = await this.auth.currentUser.getIdToken(forceRefresh);\r\n return { accessToken };\r\n }\r\n addAuthTokenListener(listener) {\r\n this.assertAuthConfigured();\r\n if (this.internalListeners.has(listener)) {\r\n return;\r\n }\r\n const unsubscribe = this.auth.onIdTokenChanged(user => {\r\n var _a;\r\n listener(((_a = user) === null || _a === void 0 ? void 0 : _a.stsTokenManager.accessToken) || null);\r\n });\r\n this.internalListeners.set(listener, unsubscribe);\r\n this.updateProactiveRefresh();\r\n }\r\n removeAuthTokenListener(listener) {\r\n this.assertAuthConfigured();\r\n const unsubscribe = this.internalListeners.get(listener);\r\n if (!unsubscribe) {\r\n return;\r\n }\r\n this.internalListeners.delete(listener);\r\n unsubscribe();\r\n this.updateProactiveRefresh();\r\n }\r\n assertAuthConfigured() {\r\n _assert(this.auth._initializationPromise, \"dependent-sdk-initialized-before-auth\" /* DEPENDENT_SDK_INIT_BEFORE_AUTH */);\r\n }\r\n updateProactiveRefresh() {\r\n if (this.internalListeners.size > 0) {\r\n this.auth._startProactiveRefresh();\r\n }\r\n else {\r\n this.auth._stopProactiveRefresh();\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getVersionForPlatform(clientPlatform) {\r\n switch (clientPlatform) {\r\n case \"Node\" /* NODE */:\r\n return 'node';\r\n case \"ReactNative\" /* REACT_NATIVE */:\r\n return 'rn';\r\n case \"Worker\" /* WORKER */:\r\n return 'webworker';\r\n case \"Cordova\" /* CORDOVA */:\r\n return 'cordova';\r\n default:\r\n return undefined;\r\n }\r\n}\r\n/** @internal */\r\nfunction registerAuth(clientPlatform) {\r\n _registerComponent(new Component(\"auth\" /* AUTH */, (container, { options: deps }) => {\r\n const app = container.getProvider('app').getImmediate();\r\n const heartbeatServiceProvider = container.getProvider('heartbeat');\r\n const { apiKey, authDomain } = app.options;\r\n return ((app, heartbeatServiceProvider) => {\r\n _assert(apiKey && !apiKey.includes(':'), \"invalid-api-key\" /* INVALID_API_KEY */, { appName: app.name });\r\n // Auth domain is optional if IdP sign in isn't being used\r\n _assert(!(authDomain === null || authDomain === void 0 ? void 0 : authDomain.includes(':')), \"argument-error\" /* ARGUMENT_ERROR */, {\r\n appName: app.name\r\n });\r\n const config = {\r\n apiKey,\r\n authDomain,\r\n clientPlatform,\r\n apiHost: \"identitytoolkit.googleapis.com\" /* API_HOST */,\r\n tokenApiHost: \"securetoken.googleapis.com\" /* TOKEN_API_HOST */,\r\n apiScheme: \"https\" /* API_SCHEME */,\r\n sdkClientVersion: _getClientVersion(clientPlatform)\r\n };\r\n const authInstance = new AuthImpl(app, heartbeatServiceProvider, config);\r\n _initializeAuthInstance(authInstance, deps);\r\n return authInstance;\r\n })(app, heartbeatServiceProvider);\r\n }, \"PUBLIC\" /* PUBLIC */)\r\n /**\r\n * Auth can only be initialized by explicitly calling getAuth() or initializeAuth()\r\n * For why we do this, See go/firebase-next-auth-init\r\n */\r\n .setInstantiationMode(\"EXPLICIT\" /* EXPLICIT */)\r\n /**\r\n * Because all firebase products that depend on auth depend on auth-internal directly,\r\n * we need to initialize auth-internal after auth is initialized to make it available to other firebase products.\r\n */\r\n .setInstanceCreatedCallback((container, _instanceIdentifier, _instance) => {\r\n const authInternalProvider = container.getProvider(\"auth-internal\" /* AUTH_INTERNAL */);\r\n authInternalProvider.initialize();\r\n }));\r\n _registerComponent(new Component(\"auth-internal\" /* AUTH_INTERNAL */, container => {\r\n const auth = _castAuth(container.getProvider(\"auth\" /* AUTH */).getImmediate());\r\n return (auth => new AuthInterop(auth))(auth);\r\n }, \"PRIVATE\" /* PRIVATE */).setInstantiationMode(\"EXPLICIT\" /* EXPLICIT */));\r\n registerVersion(name, version, getVersionForPlatform(clientPlatform));\r\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\n registerVersion(name, version, 'esm2017');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns the Auth instance associated with the provided {@link @firebase/app#FirebaseApp}.\r\n * If no instance exists, initializes an Auth instance with platform-specific default dependencies.\r\n *\r\n * @param app - The Firebase App.\r\n *\r\n * @public\r\n */\r\nfunction getAuth(app = getApp()) {\r\n const provider = _getProvider(app, 'auth');\r\n if (provider.isInitialized()) {\r\n return provider.getImmediate();\r\n }\r\n return initializeAuth(app, {\r\n popupRedirectResolver: browserPopupRedirectResolver,\r\n persistence: [\r\n indexedDBLocalPersistence,\r\n browserLocalPersistence,\r\n browserSessionPersistence\r\n ]\r\n });\r\n}\r\nregisterAuth(\"Browser\" /* BROWSER */);\n\nexport { signInWithCustomToken as $, ActionCodeOperation as A, debugErrorMap as B, prodErrorMap as C, AUTH_ERROR_CODES_MAP_DO_NOT_USE_INTERNALLY as D, initializeAuth as E, FactorId as F, connectAuthEmulator as G, AuthCredential as H, EmailAuthCredential as I, OAuthCredential as J, PhoneAuthCredential as K, inMemoryPersistence as L, EmailAuthProvider as M, FacebookAuthProvider as N, OperationType as O, PhoneAuthProvider as P, GoogleAuthProvider as Q, RecaptchaVerifier as R, SignInMethod as S, GithubAuthProvider as T, OAuthProvider as U, SAMLAuthProvider as V, TwitterAuthProvider as W, signInAnonymously as X, signInWithCredential as Y, linkWithCredential as Z, reauthenticateWithCredential as _, browserSessionPersistence as a, sendPasswordResetEmail as a0, confirmPasswordReset as a1, applyActionCode as a2, checkActionCode as a3, verifyPasswordResetCode as a4, createUserWithEmailAndPassword as a5, signInWithEmailAndPassword as a6, sendSignInLinkToEmail as a7, isSignInWithEmailLink as a8, signInWithEmailLink as a9, AuthEventManager as aA, _getRedirectResult as aB, _overrideRedirectResult as aC, _clearRedirectOutcomes as aD, _castAuth as aE, UserImpl as aF, AuthImpl as aG, _getClientVersion as aH, _generateEventId as aI, AuthPopup as aJ, FetchProvider as aK, SAMLAuthCredential as aL, fetchSignInMethodsForEmail as aa, sendEmailVerification as ab, verifyBeforeUpdateEmail as ac, ActionCodeURL as ad, parseActionCodeURL as ae, updateProfile as af, updateEmail as ag, updatePassword as ah, getIdToken as ai, getIdTokenResult as aj, unlink as ak, getAdditionalUserInfo as al, reload as am, getMultiFactorResolver as an, multiFactor as ao, _isIOS7Or8 as ap, debugAssert as aq, _isIOS as ar, _isAndroid as as, _fail as at, _getRedirectUrl as au, _getProjectConfig as av, _createError as aw, _assert as ax, _getInstance as ay, _persistenceKeyName as az, browserLocalPersistence as b, signInWithPopup as c, linkWithPopup as d, reauthenticateWithPopup as e, signInWithRedirect as f, linkWithRedirect as g, reauthenticateWithRedirect as h, indexedDBLocalPersistence as i, getRedirectResult as j, browserPopupRedirectResolver as k, linkWithPhoneNumber as l, PhoneMultiFactorGenerator as m, getAuth as n, ProviderId as o, setPersistence as p, onIdTokenChanged as q, reauthenticateWithPhoneNumber as r, signInWithPhoneNumber as s, beforeAuthStateChanged as t, updatePhoneNumber as u, onAuthStateChanged as v, useDeviceLanguage as w, updateCurrentUser as x, signOut as y, deleteUser as z };\n//# sourceMappingURL=index-ccf9d100.js.map\n","// https://github.com/farzher/fuzzysort v2.0.0\r\n/*\r\n SublimeText-like Fuzzy Search\r\n\r\n fuzzysort.single('fs', 'Fuzzy Search') // {score: -16}\r\n fuzzysort.single('test', 'test') // {score: 0}\r\n fuzzysort.single('doesnt exist', 'target') // null\r\n\r\n fuzzysort.go('mr', [{file:'Monitor.cpp'}, {file:'MeshRenderer.cpp'}], {key:'file'})\r\n // [{score:-18, obj:{file:'MeshRenderer.cpp'}}, {score:-6009, obj:{file:'Monitor.cpp'}}]\r\n\r\n fuzzysort.go('mr', ['Monitor.cpp', 'MeshRenderer.cpp'])\r\n // [{score: -18, target: \"MeshRenderer.cpp\"}, {score: -6009, target: \"Monitor.cpp\"}]\r\n\r\n fuzzysort.highlight(fuzzysort.single('fs', 'Fuzzy Search'), '<b>', '</b>')\r\n // <b>F</b>uzzy <b>S</b>earch\r\n*/\r\n\r\n// UMD (Universal Module Definition) for fuzzysort\r\n;((root, UMD) => {\r\n if(typeof define === 'function' && define.amd) define([], UMD)\r\n else if(typeof module === 'object' && module.exports) module.exports = UMD()\r\n else root['fuzzysort'] = UMD()\r\n})(this, _ => {\r\n\r\n\r\n var single = (search, target) => { if(search=='farzher')return{target:\"farzher was here (^-^*)/\",score:0,_indexes:[0]}\r\n if(!search || !target) return NULL\r\n\r\n var preparedSearch = getPreparedSearch(search)\r\n if(!isObj(target)) target = getPrepared(target)\r\n\r\n var searchBitflags = preparedSearch.bitflags\r\n if((searchBitflags & target._bitflags) !== searchBitflags) return NULL\r\n\r\n return algorithm(preparedSearch, target)\r\n }\r\n\r\n\r\n var go = (search, targets, options) => { if(search=='farzher')return[{target:\"farzher was here (^-^*)/\",score:0,_indexes:[0],obj:targets?targets[0]:NULL}]\r\n if(!search) return options&&options.all ? all(search, targets, options) : noResults\r\n\r\n var preparedSearch = getPreparedSearch(search)\r\n var searchBitflags = preparedSearch.bitflags\r\n var containsSpace = preparedSearch.containsSpace\r\n\r\n var threshold = options&&options.threshold || INT_MIN\r\n var limit = options&&options['limit'] || INT_MAX // for some reason only limit breaks when minified\r\n\r\n var resultsLen = 0; var limitedCount = 0\r\n var targetsLen = targets.length\r\n\r\n // This code is copy/pasted 3 times for performance reasons [options.keys, options.key, no keys]\r\n\r\n // options.key\r\n if(options && options.key) {\r\n var key = options.key\r\n for(var i = 0; i < targetsLen; ++i) { var obj = targets[i]\r\n var target = getValue(obj, key)\r\n if(!target) continue\r\n if(!isObj(target)) target = getPrepared(target)\r\n\r\n if((searchBitflags & target._bitflags) !== searchBitflags) continue\r\n var result = algorithm(preparedSearch, target)\r\n if(result === NULL) continue\r\n if(result.score < threshold) continue\r\n\r\n // have to clone result so duplicate targets from different obj can each reference the correct obj\r\n result = {target:result.target, _targetLower:'', _targetLowerCodes:NULL, _nextBeginningIndexes:NULL, _bitflags:0, score:result.score, _indexes:result._indexes, obj:obj} // hidden\r\n\r\n if(resultsLen < limit) { q.add(result); ++resultsLen }\r\n else {\r\n ++limitedCount\r\n if(result.score > q.peek().score) q.replaceTop(result)\r\n }\r\n }\r\n\r\n // options.keys\r\n } else if(options && options.keys) {\r\n var scoreFn = options['scoreFn'] || defaultScoreFn\r\n var keys = options.keys\r\n var keysLen = keys.length\r\n for(var i = 0; i < targetsLen; ++i) { var obj = targets[i]\r\n var objResults = new Array(keysLen)\r\n for (var keyI = 0; keyI < keysLen; ++keyI) {\r\n var key = keys[keyI]\r\n var target = getValue(obj, key)\r\n if(!target) { objResults[keyI] = NULL; continue }\r\n if(!isObj(target)) target = getPrepared(target)\r\n\r\n if((searchBitflags & target._bitflags) !== searchBitflags) objResults[keyI] = NULL\r\n else objResults[keyI] = algorithm(preparedSearch, target)\r\n }\r\n objResults.obj = obj // before scoreFn so scoreFn can use it\r\n var score = scoreFn(objResults)\r\n if(score === NULL) continue\r\n if(score < threshold) continue\r\n objResults.score = score\r\n if(resultsLen < limit) { q.add(objResults); ++resultsLen }\r\n else {\r\n ++limitedCount\r\n if(score > q.peek().score) q.replaceTop(objResults)\r\n }\r\n }\r\n\r\n // no keys\r\n } else {\r\n for(var i = 0; i < targetsLen; ++i) { var target = targets[i]\r\n if(!target) continue\r\n if(!isObj(target)) target = getPrepared(target)\r\n\r\n if((searchBitflags & target._bitflags) !== searchBitflags) continue\r\n var result = algorithm(preparedSearch, target)\r\n if(result === NULL) continue\r\n if(result.score < threshold) continue\r\n if(resultsLen < limit) { q.add(result); ++resultsLen }\r\n else {\r\n ++limitedCount\r\n if(result.score > q.peek().score) q.replaceTop(result)\r\n }\r\n }\r\n }\r\n\r\n if(resultsLen === 0) return noResults\r\n var results = new Array(resultsLen)\r\n for(var i = resultsLen - 1; i >= 0; --i) results[i] = q.poll()\r\n results.total = resultsLen + limitedCount\r\n return results\r\n }\r\n\r\n\r\n var highlight = (result, hOpen, hClose) => {\r\n if(typeof hOpen === 'function') return highlightCallback(result, hOpen)\r\n if(result === NULL) return NULL\r\n if(hOpen === undefined) hOpen = '<b>'\r\n if(hClose === undefined) hClose = '</b>'\r\n var highlighted = ''\r\n var matchesIndex = 0\r\n var opened = false\r\n var target = result.target\r\n var targetLen = target.length\r\n var indexes = result._indexes\r\n indexes = indexes.slice(0, indexes.len).sort((a,b)=>a-b)\r\n for(var i = 0; i < targetLen; ++i) { var char = target[i]\r\n if(indexes[matchesIndex] === i) {\r\n ++matchesIndex\r\n if(!opened) { opened = true\r\n highlighted += hOpen\r\n }\r\n\r\n if(matchesIndex === indexes.length) {\r\n highlighted += char + hClose + target.substr(i+1)\r\n break\r\n }\r\n } else {\r\n if(opened) { opened = false\r\n highlighted += hClose\r\n }\r\n }\r\n highlighted += char\r\n }\r\n\r\n return highlighted\r\n }\r\n var highlightCallback = (result, cb) => {\r\n if(result === NULL) return NULL\r\n var target = result.target\r\n var targetLen = target.length\r\n var indexes = result._indexes\r\n indexes = indexes.slice(0, indexes.len).sort((a,b)=>a-b)\r\n var highlighted = ''\r\n var matchI = 0\r\n var indexesI = 0\r\n var opened = false\r\n var result = []\r\n for(var i = 0; i < targetLen; ++i) { var char = target[i]\r\n if(indexes[indexesI] === i) {\r\n ++indexesI\r\n if(!opened) { opened = true\r\n result.push(highlighted); highlighted = ''\r\n }\r\n\r\n if(indexesI === indexes.length) {\r\n highlighted += char\r\n result.push(cb(highlighted, matchI++)); highlighted = ''\r\n result.push(target.substr(i+1))\r\n break\r\n }\r\n } else {\r\n if(opened) { opened = false\r\n result.push(cb(highlighted, matchI++)); highlighted = ''\r\n }\r\n }\r\n highlighted += char\r\n }\r\n return result\r\n }\r\n\r\n\r\n var indexes = result => result._indexes.slice(0, result._indexes.len).sort((a,b)=>a-b)\r\n\r\n\r\n var prepare = (target) => {\r\n if(typeof target !== 'string') target = ''\r\n var info = prepareLowerInfo(target)\r\n return {'target':target, _targetLower:info._lower, _targetLowerCodes:info.lowerCodes, _nextBeginningIndexes:NULL, _bitflags:info.bitflags, 'score':NULL, _indexes:[0], 'obj':NULL} // hidden\r\n }\r\n\r\n\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n // Below this point is only internal code\r\n\r\n\r\n var prepareSearch = (search) => {\r\n if(typeof search !== 'string') search = ''\r\n search = search.trim()\r\n var info = prepareLowerInfo(search)\r\n\r\n var spaceSearches = []\r\n if(info.containsSpace) {\r\n var searches = search.split(/\\s+/)\r\n searches = [...new Set(searches)] // distinct\r\n for(var i=0; i<searches.length; i++) {\r\n if(searches[i] === '') continue\r\n var _info = prepareLowerInfo(searches[i])\r\n spaceSearches.push({lowerCodes:_info.lowerCodes, _lower:searches[i].toLowerCase(), containsSpace:false})\r\n }\r\n }\r\n\r\n return {lowerCodes: info.lowerCodes, bitflags: info.bitflags, containsSpace: info.containsSpace, _lower: info._lower, spaceSearches: spaceSearches}\r\n }\r\n\r\n\r\n\r\n var getPrepared = (target) => {\r\n if(target.length > 999) return prepare(target) // don't cache huge targets\r\n var targetPrepared = preparedCache.get(target)\r\n if(targetPrepared !== undefined) return targetPrepared\r\n targetPrepared = prepare(target)\r\n preparedCache.set(target, targetPrepared)\r\n return targetPrepared\r\n }\r\n var getPreparedSearch = (search) => {\r\n if(search.length > 999) return prepareSearch(search) // don't cache huge searches\r\n var searchPrepared = preparedSearchCache.get(search)\r\n if(searchPrepared !== undefined) return searchPrepared\r\n searchPrepared = prepareSearch(search)\r\n preparedSearchCache.set(search, searchPrepared)\r\n return searchPrepared\r\n }\r\n\r\n\r\n var all = (search, targets, options) => {\r\n var results = []; results.total = targets.length\r\n\r\n var limit = options && options.limit || INT_MAX\r\n\r\n if(options && options.key) {\r\n for(var i=0;i<targets.length;i++) { var obj = targets[i]\r\n var target = getValue(obj, options.key)\r\n if(!target) continue\r\n if(!isObj(target)) target = getPrepared(target)\r\n target.score = INT_MIN\r\n target._indexes.len = 0\r\n var result = target\r\n result = {target:result.target, _targetLower:'', _targetLowerCodes:NULL, _nextBeginningIndexes:NULL, _bitflags:0, score:target.score, _indexes:NULL, obj:obj} // hidden\r\n results.push(result); if(results.length >= limit) return results\r\n }\r\n } else if(options && options.keys) {\r\n for(var i=0;i<targets.length;i++) { var obj = targets[i]\r\n var objResults = new Array(options.keys.length)\r\n for (var keyI = options.keys.length - 1; keyI >= 0; --keyI) {\r\n var target = getValue(obj, options.keys[keyI])\r\n if(!target) { objResults[keyI] = NULL; continue }\r\n if(!isObj(target)) target = getPrepared(target)\r\n target.score = INT_MIN\r\n target._indexes.len = 0\r\n objResults[keyI] = target\r\n }\r\n objResults.obj = obj\r\n objResults.score = INT_MIN\r\n results.push(objResults); if(results.length >= limit) return results\r\n }\r\n } else {\r\n for(var i=0;i<targets.length;i++) { var target = targets[i]\r\n if(!target) continue\r\n if(!isObj(target)) target = getPrepared(target)\r\n target.score = INT_MIN\r\n target._indexes.len = 0\r\n results.push(target); if(results.length >= limit) return results\r\n }\r\n }\r\n\r\n return results\r\n }\r\n\r\n\r\n var algorithm = (preparedSearch, prepared) => {\r\n if(preparedSearch.containsSpace) return algorithmSpaces(preparedSearch, prepared)\r\n\r\n var searchLower = preparedSearch._lower\r\n var searchLowerCodes = preparedSearch.lowerCodes\r\n var searchLowerCode = searchLowerCodes[0]\r\n var targetLowerCodes = prepared._targetLowerCodes\r\n var searchLen = searchLowerCodes.length\r\n var targetLen = targetLowerCodes.length\r\n var searchI = 0 // where we at\r\n var targetI = 0 // where you at\r\n var matchesSimpleLen = 0\r\n\r\n // very basic fuzzy match; to remove non-matching targets ASAP!\r\n // walk through target. find sequential matches.\r\n // if all chars aren't found then exit\r\n for(;;) {\r\n var isMatch = searchLowerCode === targetLowerCodes[targetI]\r\n if(isMatch) {\r\n matchesSimple[matchesSimpleLen++] = targetI\r\n ++searchI; if(searchI === searchLen) break\r\n searchLowerCode = searchLowerCodes[searchI]\r\n }\r\n ++targetI; if(targetI >= targetLen) return NULL // Failed to find searchI\r\n }\r\n\r\n var searchI = 0\r\n var successStrict = false\r\n var matchesStrictLen = 0\r\n\r\n var nextBeginningIndexes = prepared._nextBeginningIndexes\r\n if(nextBeginningIndexes === NULL) nextBeginningIndexes = prepared._nextBeginningIndexes = prepareNextBeginningIndexes(prepared.target)\r\n var firstPossibleI = targetI = matchesSimple[0]===0 ? 0 : nextBeginningIndexes[matchesSimple[0]-1]\r\n\r\n // Our target string successfully matched all characters in sequence!\r\n // Let's try a more advanced and strict test to improve the score\r\n // only count it as a match if it's consecutive or a beginning character!\r\n var backtrackCount = 0\r\n if(targetI !== targetLen) for(;;) {\r\n if(targetI >= targetLen) {\r\n // We failed to find a good spot for this search char, go back to the previous search char and force it forward\r\n if(searchI <= 0) break // We failed to push chars forward for a better match\r\n\r\n ++backtrackCount; if(backtrackCount > 200) break // exponential backtracking is taking too long, just give up and return a bad match\r\n\r\n --searchI\r\n var lastMatch = matchesStrict[--matchesStrictLen]\r\n targetI = nextBeginningIndexes[lastMatch]\r\n\r\n } else {\r\n var isMatch = searchLowerCodes[searchI] === targetLowerCodes[targetI]\r\n if(isMatch) {\r\n matchesStrict[matchesStrictLen++] = targetI\r\n ++searchI; if(searchI === searchLen) { successStrict = true; break }\r\n ++targetI\r\n } else {\r\n targetI = nextBeginningIndexes[targetI]\r\n }\r\n }\r\n }\r\n\r\n // check if it's a substring match\r\n var substringIndex = prepared._targetLower.indexOf(searchLower, matchesSimple[0]) // perf: this is slow\r\n var isSubstring = ~substringIndex\r\n if(isSubstring && !successStrict) { // rewrite the indexes from basic to the substring\r\n for(var i=0; i<matchesSimpleLen; ++i) matchesSimple[i] = substringIndex+i\r\n }\r\n var isSubstringBeginning = false\r\n if(isSubstring) {\r\n isSubstringBeginning = prepared._nextBeginningIndexes[substringIndex-1] === substringIndex\r\n }\r\n\r\n { // tally up the score & keep track of matches for highlighting later\r\n if(successStrict) { var matchesBest = matchesStrict; var matchesBestLen = matchesStrictLen }\r\n else { var matchesBest = matchesSimple; var matchesBestLen = matchesSimpleLen }\r\n\r\n var score = 0\r\n\r\n var extraMatchGroupCount = 0\r\n for(var i = 1; i < searchLen; ++i) {\r\n if(matchesBest[i] - matchesBest[i-1] !== 1) {score -= matchesBest[i]; ++extraMatchGroupCount}\r\n }\r\n var unmatchedDistance = matchesBest[searchLen-1] - matchesBest[0] - (searchLen-1)\r\n\r\n score -= (12+unmatchedDistance) * extraMatchGroupCount // penality for more groups\r\n\r\n if(matchesBest[0] !== 0) score -= matchesBest[0]*10 // penality for not starting near the beginning\r\n\r\n if(!successStrict) {\r\n score *= 1000\r\n } else {\r\n // successStrict on a target with too many beginning indexes loses points for being a bad target\r\n var uniqueBeginningIndexes = 1\r\n for(var i = nextBeginningIndexes[0]; i < targetLen; i=nextBeginningIndexes[i]) ++uniqueBeginningIndexes\r\n\r\n if(uniqueBeginningIndexes > 24) score *= (uniqueBeginningIndexes-24)*10 // quite arbitrary numbers here ...\r\n }\r\n\r\n if(isSubstring) score /= 10 // bonus for being a full substring\r\n if(isSubstringBeginning) score /= 10 // bonus for substring starting on a beginningIndex\r\n\r\n score -= targetLen - searchLen // penality for longer targets\r\n prepared.score = score\r\n\r\n for(var i = 0; i < matchesBestLen; ++i) prepared._indexes[i] = matchesBest[i]\r\n prepared._indexes.len = matchesBestLen\r\n\r\n return prepared\r\n }\r\n }\r\n var algorithmSpaces = (preparedSearch, target) => {\r\n var seen_indexes = new Set()\r\n var score = 0\r\n var result = NULL\r\n\r\n var first_seen_index_last_search = 0\r\n var searches = preparedSearch.spaceSearches\r\n for(var i=0; i<searches.length; ++i) {\r\n var search = searches[i]\r\n\r\n result = algorithm(search, target)\r\n if(result === NULL) return NULL\r\n\r\n score += result.score\r\n\r\n // dock points based on order otherwise \"c man\" returns Manifest.cpp instead of CheatManager.h\r\n if(result._indexes[0] < first_seen_index_last_search) {\r\n score -= first_seen_index_last_search - result._indexes[0]\r\n }\r\n first_seen_index_last_search = result._indexes[0]\r\n\r\n for(var j=0; j<result._indexes.len; ++j) seen_indexes.add(result._indexes[j])\r\n }\r\n\r\n result.score = score\r\n\r\n var i = 0\r\n for (let index of seen_indexes) result._indexes[i++] = index\r\n result._indexes.len = i\r\n\r\n return result\r\n }\r\n\r\n\r\n var prepareLowerInfo = (str) => {\r\n var strLen = str.length\r\n var lower = str.toLowerCase()\r\n var lowerCodes = [] // new Array(strLen) sparse array is too slow\r\n var bitflags = 0\r\n var containsSpace = false // space isn't stored in bitflags because of how searching with a space works\r\n\r\n for(var i = 0; i < strLen; ++i) {\r\n var lowerCode = lowerCodes[i] = lower.charCodeAt(i)\r\n\r\n if(lowerCode === 32) {\r\n containsSpace = true\r\n continue // it's important that we don't set any bitflags for space\r\n }\r\n\r\n var bit = lowerCode>=97&&lowerCode<=122 ? lowerCode-97 // alphabet\r\n : lowerCode>=48&&lowerCode<=57 ? 26 // numbers\r\n // 3 bits available\r\n : lowerCode<=127 ? 30 // other ascii\r\n : 31 // other utf8\r\n bitflags |= 1<<bit\r\n }\r\n\r\n return {lowerCodes:lowerCodes, bitflags:bitflags, containsSpace:containsSpace, _lower:lower}\r\n }\r\n var prepareBeginningIndexes = (target) => {\r\n var targetLen = target.length\r\n var beginningIndexes = []; var beginningIndexesLen = 0\r\n var wasUpper = false\r\n var wasAlphanum = false\r\n for(var i = 0; i < targetLen; ++i) {\r\n var targetCode = target.charCodeAt(i)\r\n var isUpper = targetCode>=65&&targetCode<=90\r\n var isAlphanum = isUpper || targetCode>=97&&targetCode<=122 || targetCode>=48&&targetCode<=57\r\n var isBeginning = isUpper && !wasUpper || !wasAlphanum || !isAlphanum\r\n wasUpper = isUpper\r\n wasAlphanum = isAlphanum\r\n if(isBeginning) beginningIndexes[beginningIndexesLen++] = i\r\n }\r\n return beginningIndexes\r\n }\r\n var prepareNextBeginningIndexes = (target) => {\r\n var targetLen = target.length\r\n var beginningIndexes = prepareBeginningIndexes(target)\r\n var nextBeginningIndexes = [] // new Array(targetLen) sparse array is too slow\r\n var lastIsBeginning = beginningIndexes[0]\r\n var lastIsBeginningI = 0\r\n for(var i = 0; i < targetLen; ++i) {\r\n if(lastIsBeginning > i) {\r\n nextBeginningIndexes[i] = lastIsBeginning\r\n } else {\r\n lastIsBeginning = beginningIndexes[++lastIsBeginningI]\r\n nextBeginningIndexes[i] = lastIsBeginning===undefined ? targetLen : lastIsBeginning\r\n }\r\n }\r\n return nextBeginningIndexes\r\n }\r\n\r\n\r\n var cleanup = () => { preparedCache.clear(); preparedSearchCache.clear(); matchesSimple = []; matchesStrict = [] }\r\n\r\n var preparedCache = new Map()\r\n var preparedSearchCache = new Map()\r\n var matchesSimple = []; var matchesStrict = []\r\n\r\n\r\n // for use with keys. just returns the maximum score\r\n var defaultScoreFn = (a) => {\r\n var max = INT_MIN\r\n var len = a.length\r\n for (var i = 0; i < len; ++i) {\r\n var result = a[i]; if(result === NULL) continue\r\n var score = result.score\r\n if(score > max) max = score\r\n }\r\n if(max === INT_MIN) return NULL\r\n return max\r\n }\r\n\r\n // prop = 'key' 2.5ms optimized for this case, seems to be about as fast as direct obj[prop]\r\n // prop = 'key1.key2' 10ms\r\n // prop = ['key1', 'key2'] 27ms\r\n var getValue = (obj, prop) => {\r\n var tmp = obj[prop]; if(tmp !== undefined) return tmp\r\n var segs = prop\r\n if(!Array.isArray(prop)) segs = prop.split('.')\r\n var len = segs.length\r\n var i = -1\r\n while (obj && (++i < len)) obj = obj[segs[i]]\r\n return obj\r\n }\r\n\r\n var isObj = (x) => { return typeof x === 'object' } // faster as a function\r\n // var INT_MAX = 9007199254740991; var INT_MIN = -INT_MAX\r\n var INT_MAX = Infinity; var INT_MIN = -INT_MAX\r\n var noResults = []; noResults.total = 0\r\n var NULL = null\r\n\r\n\r\n // Hacked version of https://github.com/lemire/FastPriorityQueue.js\r\n var fastpriorityqueue=r=>{var e=[],o=0,a={},v=r=>{for(var a=0,v=e[a],c=1;c<o;){var s=c+1;a=c,s<o&&e[s].score<e[c].score&&(a=s),e[a-1>>1]=e[a],c=1+(a<<1)}for(var f=a-1>>1;a>0&&v.score<e[f].score;f=(a=f)-1>>1)e[a]=e[f];e[a]=v};return a.add=(r=>{var a=o;e[o++]=r;for(var v=a-1>>1;a>0&&r.score<e[v].score;v=(a=v)-1>>1)e[a]=e[v];e[a]=r}),a.poll=(r=>{if(0!==o){var a=e[0];return e[0]=e[--o],v(),a}}),a.peek=(r=>{if(0!==o)return e[0]}),a.replaceTop=(r=>{e[0]=r,v()}),a}\r\n var q = fastpriorityqueue() // reuse this\r\n\r\n\r\n // fuzzysort is written this way for minification. all names are mangeled unless quoted\r\n return {'single':single, 'go':go, 'highlight':highlight, 'prepare':prepare, 'indexes':indexes, 'cleanup':cleanup}\r\n}) // UMD\r\n\r\n// TODO: (feature) frecency\r\n// TODO: (perf) use different sorting algo depending on the # of results?\r\n// TODO: (perf) preparedCache is a memory leak\r\n// TODO: (like sublime) backslash === forwardslash\r\n// TODO: (perf) prepareSearch seems slow\r\n","var camel2hyphen = require('string-convert/camel2hyphen');\n\nvar isDimension = function (feature) {\n var re = /[height|width]$/;\n return re.test(feature);\n};\n\nvar obj2mq = function (obj) {\n var mq = '';\n var features = Object.keys(obj);\n features.forEach(function (feature, index) {\n var value = obj[feature];\n feature = camel2hyphen(feature);\n // Add px to dimension features\n if (isDimension(feature) && typeof value === 'number') {\n value = value + 'px';\n }\n if (value === true) {\n mq += feature;\n } else if (value === false) {\n mq += 'not ' + feature;\n } else {\n mq += '(' + feature + ': ' + value + ')';\n }\n if (index < features.length-1) {\n mq += ' and '\n }\n });\n return mq;\n};\n\nvar json2mq = function (query) {\n var mq = '';\n if (typeof query === 'string') {\n return query;\n }\n // Handling array of media queries\n if (query instanceof Array) {\n query.forEach(function (q, index) {\n mq += obj2mq(q);\n if (index < query.length-1) {\n mq += ', '\n }\n });\n return mq;\n }\n // Handling single media query\n return obj2mq(query);\n};\n\nmodule.exports = json2mq;","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == 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\nmodule.exports = arrayMap;\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 */\nfunction 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\nmodule.exports = arrayReduce;\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 */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\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 */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\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 */\nfunction 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\nmodule.exports = baseGetTag;\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 */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\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 */\nfunction 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\nmodule.exports = baseSlice;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (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\nmodule.exports = baseToString;\n","var baseSlice = require('./_baseSlice');\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 */\nfunction 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\nmodule.exports = castSlice;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\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 */\nfunction 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\nmodule.exports = createCaseFirst;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\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 */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar 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/**\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 */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\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 */\nfunction 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\nmodule.exports = getRawTag;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\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/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\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 */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar 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/**\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 */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\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 */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\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 */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\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 rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\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 */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","/** Used to compose unicode character classes. */\nvar 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. */\nvar rsApos = \"['\\u2019]\",\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. */\nvar 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\n/** Used to match complex or compound words. */\nvar 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/**\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 */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var capitalize = require('./capitalize'),\n createCompounder = require('./_createCompounder');\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 */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\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 */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\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 */\nvar reComboMark = RegExp(rsCombo, 'g');\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 */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\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","var baseToString = require('./_baseToString');\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 */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var createCaseFirst = require('./_createCaseFirst');\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 */\nvar upperFirst = createCaseFirst('toUpperCase');\n\nmodule.exports = upperFirst;\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\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 */\nfunction 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\nmodule.exports = words;\n","(typeof navigator !== \"undefined\") && (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n var svgNS = 'http://www.w3.org/2000/svg';\n var locationHref = '';\n var _useWebWorker = false;\n var initialDefaultFrame = -999999;\n\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\n\n var getLocationHref = function getLocationHref() {\n return locationHref;\n };\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type);\n }\n\n function extendPrototype(sources, destination) {\n var i;\n var len = sources.length;\n var sourcePrototype;\n\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n var audioControllerFactory = function () {\n function AudioController(audioFactory) {\n this.audios = [];\n this.audioFactory = audioFactory;\n this._volume = 1;\n this._isMuted = false;\n }\n\n AudioController.prototype = {\n addAudio: function addAudio(audio) {\n this.audios.push(audio);\n },\n pause: function pause() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause();\n }\n },\n resume: function resume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume();\n }\n },\n setRate: function setRate(rateValue) {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue);\n }\n },\n createAudio: function createAudio(assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath);\n }\n\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\n }\n\n return {\n isPlaying: false,\n play: function play() {\n this.isPlaying = true;\n },\n seek: function seek() {\n this.isPlaying = false;\n },\n playing: function playing() {},\n rate: function rate() {},\n setVolume: function setVolume() {}\n };\n },\n setAudioFactory: function setAudioFactory(audioFactory) {\n this.audioFactory = audioFactory;\n },\n setVolume: function setVolume(value) {\n this._volume = value;\n\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n\n this._updateVolume();\n },\n getVolume: function getVolume() {\n return this._volume;\n },\n _updateVolume: function _updateVolume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n }\n }\n };\n return function () {\n return new AudioController();\n };\n }();\n\n var createTypedArray = function () {\n function createRegularArray(type, len) {\n var i = 0;\n var arr = [];\n var value;\n\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n\n default:\n value = 1.1;\n break;\n }\n\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n\n return arr;\n }\n\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n\n if (type === 'int16') {\n return new Int16Array(len);\n }\n\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n\n return createRegularArray(type, len);\n }\n\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n\n return createRegularArray;\n }();\n\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\n var subframeEnabled = true;\n var expressionsPlugin = null;\n var idPrefix$1 = '';\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n var _shouldRoundValues = false;\n var bmPow = Math.pow;\n var bmSqrt = Math.sqrt;\n var bmFloor = Math.floor;\n var bmMax = Math.max;\n var bmMin = Math.min;\n var BMMath = {};\n\n (function () {\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n var i;\n var len = propertyNames.length;\n\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n\n function ProjectInterface$1() {\n return {};\n }\n\n BMMath.random = Math.random;\n\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n\n return absArr;\n }\n\n return Math.abs(val);\n };\n\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n\n return value;\n }\n\n function styleDiv(element) {\n element.style.position = 'absolute';\n element.style.top = 0;\n element.style.left = 0;\n element.style.display = 'block';\n element.style.transformOrigin = '0 0';\n element.style.webkitTransformOrigin = '0 0';\n element.style.backfaceVisibility = 'visible';\n element.style.webkitBackfaceVisibility = 'visible';\n element.style.transformStyle = 'preserve-3d';\n element.style.webkitTransformStyle = 'preserve-3d';\n element.style.mozTransformStyle = 'preserve-3d';\n }\n\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type;\n this.currentTime = currentTime;\n this.totalTime = totalTime;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type;\n this.currentLoop = currentLoop;\n this.totalLoops = totalLoops;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\n\n var createElementID = function () {\n var _count = 0;\n return function createID() {\n _count += 1;\n return idPrefix$1 + '__lottie_element_' + _count;\n };\n }();\n\n function HSVtoRGB(h, s, v) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n\n default:\n break;\n }\n\n return [r, g, b];\n }\n\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var d = max - min;\n var h;\n var s = max === 0 ? 0 : d / max;\n var v = max / 255;\n\n switch (max) {\n case min:\n h = 0;\n break;\n\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n\n default:\n break;\n }\n\n return [h, s, v];\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[0] += offset / 360;\n\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n\n if (g < 0) {\n g = 0;\n }\n\n if (b < 0) {\n b = 0;\n }\n\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\n };\n\n var getIdPrefix = function getIdPrefix() {\n return idPrefix$1;\n };\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type);\n }\n\n function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\n var dataManager = function () {\n var _counterId = 1;\n var processes = [];\n var workerFn;\n var workerInstance;\n var workerProxy = {\n onmessage: function onmessage() {},\n postMessage: function postMessage(path) {\n workerFn({\n data: path\n });\n }\n };\n var _workerSelf = {\n postMessage: function postMessage(data) {\n workerProxy.onmessage({\n data: data\n });\n }\n };\n\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n type: 'text/javascript'\n }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n\n workerFn = fn;\n return workerProxy;\n }\n\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n\n if (layerData.tt) {\n layers[i - 1].td = layerData.tt;\n }\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n }\n\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\n }\n }\n }\n }\n\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps);\n completeLayers(layerData.layers, comps);\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes);\n } else if (layerData.ty === 5) {\n completeText(layerData);\n }\n }\n }\n }\n\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n\n return JSON.parse(JSON.stringify(comp.layers));\n }\n\n return null;\n }\n\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k);\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n }\n\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it);\n }\n }\n }\n\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0];\n path.i[i][1] += path.v[i][1];\n path.o[i][0] += path.v[i][0];\n path.o[i][1] += path.v[i][1];\n }\n }\n\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n\n return null;\n }\n\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d;\n textLayer.t.d = {\n k: [{\n s: documentData,\n t: 0\n }]\n };\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkChars = function () {\n var minimumVersion = [4, 7, 99];\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i;\n var len = animationData.chars.length;\n\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes);\n charData.data.ip = 0;\n charData.data.op = 99999;\n charData.data.st = 0;\n charData.data.sr = 1;\n charData.data.ks = {\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n }\n };\n\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no'\n });\n charData.data.shapes[0].it.push({\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n },\n sk: {\n k: 0,\n a: 0\n },\n sa: {\n k: 0,\n a: 0\n },\n ty: 'tr'\n });\n }\n }\n }\n }\n };\n }();\n\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it);\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255;\n shapes[i].c.k[j].s[1] /= 255;\n shapes[i].c.k[j].s[2] /= 255;\n shapes[i].c.k[j].s[3] /= 255;\n }\n\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255;\n shapes[i].c.k[j].e[1] /= 255;\n shapes[i].c.k[j].e[2] /= 255;\n shapes[i].c.k[j].e[3] /= 255;\n }\n }\n } else {\n shapes[i].c.k[0] /= 255;\n shapes[i].c.k[1] /= 255;\n shapes[i].c.k[2] /= 255;\n shapes[i].c.k[3] /= 255;\n }\n }\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed;\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed;\n }\n\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed;\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it);\n }\n }\n }\n\n function iterateLayers(layers) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl;\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n }\n\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n }\n }\n }\n }\n }\n\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\n\n checkColors(animationData);\n checkText(animationData);\n checkChars(animationData);\n checkPathProperties(animationData);\n checkShapes(animationData);\n completeLayers(animationData.layers, animationData.assets);\n completeChars(animationData.chars, animationData.assets);\n animationData.__complete = true;\n }\n\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n }\n }\n\n var moduleOb = {};\n moduleOb.completeData = completeData;\n moduleOb.checkColors = checkColors;\n moduleOb.checkChars = checkChars;\n moduleOb.checkPathProperties = checkPathProperties;\n moduleOb.checkShapes = checkShapes;\n moduleOb.completeLayers = completeLayers;\n return moduleOb;\n }\n\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\n\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type');\n\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n\n return null;\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr);\n callback(response);\n } else {\n try {\n response = formatResponse(xhr);\n callback(response);\n } catch (err) {\n if (errorCallback) {\n errorCallback(err);\n }\n }\n }\n }\n };\n\n try {\n xhr.open('GET', path, true);\n } catch (error) {\n xhr.open('GET', fullPath + '/' + path, true);\n }\n\n xhr.send();\n }\n\n return {\n load: loadAsset\n };\n }();\n }\n\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.dataManager.completeData(data);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation;\n\n _workerSelf.dataManager.completeData(animation);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success'\n });\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n }\n });\n\n workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\n };\n }\n }\n\n function createProcess(onComplete, onError) {\n _counterId += 1;\n var id = 'processId_' + _counterId;\n processes[id] = {\n onComplete: onComplete,\n onError: onError\n };\n return id;\n }\n\n function loadAnimation(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function loadData(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function completeAnimation(anim, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId\n });\n }\n\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation\n };\n }();\n\n var ImagePreloader = function () {\n var proxyImage = function () {\n var canvas = createTag('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return canvas;\n }();\n\n function imageLoaded() {\n this.loadedAssets += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n }\n\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n\n if (box.width || _count > 500) {\n this._imageLoaded();\n\n clearInterval(intervalId);\n }\n\n _count += 1;\n }.bind(this), 50);\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createTag('img');\n img.crossOrigin = 'anonymous';\n img.addEventListener('load', this._imageLoaded, false);\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.src = path;\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createFootageData(data) {\n var ob = {\n assetData: data\n };\n var path = getAssetsPath(data, this.assetsPath, this.path);\n dataManager.loadData(path, function (footageData) {\n ob.img = footageData;\n\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1;\n this.images.push(this._createImageData(assets[i]));\n } else if (assets[i].t === 3) {\n this.totalFootages += 1;\n this.images.push(this.createFootageData(assets[i]));\n }\n }\n }\n }\n\n function setPath(path) {\n this.path = path || '';\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\n\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper;\n this._createImageData = this.createImageData.bind(this);\n } else {\n this._createImageData = this.createImgData.bind(this);\n }\n }\n\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this);\n this._footageLoaded = footageLoaded.bind(this);\n this.testImageLoaded = testImageLoaded.bind(this);\n this.createFootageData = createFootageData.bind(this);\n this.assetsPath = '';\n this.path = '';\n this.totalImages = 0;\n this.totalFootages = 0;\n this.loadedAssets = 0;\n this.loadedFootagesCount = 0;\n this.imagesLoadedCb = null;\n this.images = [];\n }\n\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType\n };\n return ImagePreloaderFactory;\n }();\n\n function BaseEvent() {}\n\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args);\n }\n }\n },\n addEventListener: function addEventListener(eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = [];\n }\n\n this._cbs[eventName].push(callback);\n\n return function () {\n this.removeEventListener(eventName, callback);\n }.bind(this);\n },\n removeEventListener: function removeEventListener(eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null;\n } else if (this._cbs[eventName]) {\n var i = 0;\n var len = this._cbs[eventName].length;\n\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n\n i -= 1;\n len -= 1;\n }\n\n i += 1;\n }\n\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null;\n }\n }\n }\n };\n\n var markerParser = function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n');\n var keys = {};\n var line;\n var keysCount = 0;\n\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n\n if (keysCount === 0) {\n throw new Error();\n }\n\n return keys;\n }\n\n return function (_markers) {\n var markers = [];\n\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i];\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr\n };\n\n try {\n markerData.payload = JSON.parse(_markers[i].cm);\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm);\n } catch (__) {\n markerData.payload = {\n name: _markers[i].cm\n };\n }\n }\n\n markers.push(markerData);\n }\n\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame);\n }\n\n return this.compositions[i].compInterface;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n\n function getRenderer(key) {\n return renderers[key];\n }\n\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\n var AnimationItem = function AnimationItem() {\n this._cbs = [];\n this.name = '';\n this.path = '';\n this.isLoaded = false;\n this.currentFrame = 0;\n this.currentRawFrame = 0;\n this.firstFrame = 0;\n this.totalFrames = 0;\n this.frameRate = 0;\n this.frameMult = 0;\n this.playSpeed = 1;\n this.playDirection = 1;\n this.playCount = 0;\n this.animationData = {};\n this.assets = [];\n this.isPaused = true;\n this.autoplay = false;\n this.loop = true;\n this.renderer = null;\n this.animationID = createElementID();\n this.assetsPath = '';\n this.timeCompleted = 0;\n this.segmentPos = 0;\n this.isSubframeEnabled = getSubframeEnabled();\n this.segments = [];\n this._idle = true;\n this._completedLoop = false;\n this.projectInterface = ProjectInterface();\n this.imagePreloader = new ImagePreloader();\n this.audioController = audioControllerFactory();\n this.markers = [];\n this.configAnimation = this.configAnimation.bind(this);\n this.onSetupError = this.onSetupError.bind(this);\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n };\n\n extendPrototype([BaseEvent], AnimationItem);\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n\n var animType = 'svg';\n\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\n\n var RendererClass = getRenderer(animType);\n this.renderer = new RendererClass(this, params.rendererSettings);\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n this.renderer.setProjectInterface(this.projectInterface);\n this.animType = animType;\n\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true;\n } else if (params.loop === false) {\n this.loop = false;\n } else {\n this.loop = parseInt(params.loop, 10);\n }\n\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\n this.name = params.name ? params.name : '';\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n this.assetsPath = params.assetsPath;\n this.initialSegment = params.initialSegment;\n\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\n\n if (params.animationData) {\n this.setupAnimation(params.animationData);\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n }\n\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n }\n };\n\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\n\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (_typeof$4(animationData) !== 'object') {\n animationData = JSON.parse(animationData);\n }\n }\n\n var params = {\n wrapper: wrapper,\n animationData: animationData\n };\n var wrapperAttributes = wrapper.attributes;\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : 'canvas';\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n\n if (loop === 'false') {\n params.loop = false;\n } else if (loop === 'true') {\n params.loop = true;\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10);\n }\n\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n params.autoplay = autoplay !== 'false';\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n\n if (prerender === 'false') {\n params.prerender = false;\n }\n\n this.setParams(params);\n };\n\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op;\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\n }\n\n var layers = this.animationData.layers;\n var i;\n var len = layers.length;\n var newLayers = data.layers;\n var j;\n var jLen = newLayers.length;\n\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n\n i += 1;\n }\n }\n\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars);\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n }\n\n if (data.assets) {\n len = data.assets.length;\n\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\n\n var segment = segments.shift();\n this.timeCompleted = segment.time * this.frameRate;\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n this.segmentPos += 1;\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n this.trigger('data_failed');\n }.bind(this));\n };\n\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\n\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath);\n this.imagePreloader.setPath(this.path);\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n };\n\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n\n try {\n this.animationData = animData;\n\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n this.firstFrame = Math.round(this.initialSegment[0]);\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n this.firstFrame = Math.round(this.animationData.ip);\n }\n\n this.renderer.configAnimation(animData);\n\n if (!animData.assets) {\n animData.assets = [];\n }\n\n this.assets = this.animationData.assets;\n this.frameRate = this.animationData.fr;\n this.frameMult = this.animationData.fr / 1000;\n this.renderer.searchExtraCompositions(animData.assets);\n this.markers = markerParser(animData.markers || []);\n this.trigger('config_ready');\n this.preloadImages();\n this.loadSegments();\n this.updaFrameModifier();\n this.waitForFontsLoaded();\n\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\n };\n\n AnimationItem.prototype.checkLoaded = function () {\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n this.isLoaded = true;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n\n if (this.autoplay) {\n this.play();\n }\n }\n };\n\n AnimationItem.prototype.resize = function () {\n this.renderer.updateContainerSize();\n };\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\n\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted;\n }\n\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n\n try {\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_pause');\n this.audioController.resume();\n\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === false) {\n this.isPaused = true;\n this.trigger('_play');\n this._idle = true;\n this.trigger('_idle');\n this.audioController.pause();\n }\n };\n\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n\n return null;\n };\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n this.goToAndStop(marker.time, true);\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value);\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier);\n }\n\n this.pause();\n };\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true);\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true);\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name);\n }\n\n this.play();\n };\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true;\n nextValue = this.totalFrames - 1;\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1;\n\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n this._completedLoop = true;\n this.trigger('loopComplete');\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n\n if (!this._completedLoop) {\n this._completedLoop = true;\n } else {\n this.trigger('loopComplete');\n }\n } else {\n _isComplete = true;\n nextValue = 0;\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(-1);\n }\n }\n\n this.totalFrames = arr[0] - arr[1];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[1];\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(1);\n }\n }\n\n this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n\n this.trigger('segmentStart');\n };\n\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init;\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init;\n }\n }\n\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n\n if (this.isPaused) {\n this.play();\n }\n };\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n\n if (forceFlag) {\n this.checkSegments(0);\n }\n };\n\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset);\n return true;\n }\n\n return false;\n };\n\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\n\n this.renderer.destroy();\n this.imagePreloader.destroy();\n this.trigger('destroy');\n this._cbs = null;\n this.onEnterFrame = null;\n this.onLoopComplete = null;\n this.onComplete = null;\n this.onSegmentStart = null;\n this.onDestroy = null;\n this.renderer = null;\n this.renderer = null;\n this.imagePreloader = null;\n this.projectInterface = null;\n };\n\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.setVolume(val);\n };\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.mute();\n };\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.unmute();\n };\n\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n this.audioController.setRate(this.playSpeed * this.playDirection);\n };\n\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n };\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\n\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path);\n element.updateDocumentData(documentData, index);\n } catch (error) {// TODO: decide how to handle catch case\n }\n };\n\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n break;\n\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame;\n this.drawnFrameEvent.totalTime = this.totalFrames;\n this.drawnFrameEvent.direction = this.frameModifier;\n this.triggerEvent(name, this.drawnFrameEvent);\n break;\n\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n\n default:\n this.triggerEvent(name);\n }\n }\n\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n var animationManager = function () {\n var moduleOb = {};\n var registeredAnimations = [];\n var initTime = 0;\n var len = 0;\n var playingAnimationsNum = 0;\n var _stopped = true;\n var _isFrozen = false;\n\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n\n i += 1;\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n\n var i = 0;\n\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n\n i += 1;\n }\n\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n\n return animations;\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\n\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement);\n animItem.addEventListener('_active', addPlayingCount);\n animItem.addEventListener('_idle', subtractPlayingCount);\n registeredAnimations.push({\n elem: element,\n animation: animItem\n });\n len += 1;\n }\n\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n\n function setSpeed(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n\n function setDirection(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n\n function play(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n\n initTime = nowTime;\n\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n\n function pause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n\n function stop(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n\n function togglePause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n\n function destroy(animation) {\n var i;\n\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\n }\n\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n var i;\n var lenAnims = animElements.length;\n\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n\n registerAnimation(animElements[i], animationData);\n }\n\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\n\n var body = document.getElementsByTagName('body')[0];\n body.innerText = '';\n var div = createTag('div');\n div.style.width = '100%';\n div.style.height = '100%';\n div.setAttribute('data-bm-type', renderer);\n body.appendChild(div);\n registerAnimation(div, animationData);\n }\n }\n\n function resize() {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n\n function freeze() {\n _isFrozen = true;\n }\n\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n\n function setVolume(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n\n function mute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n\n function unmute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\n }\n\n moduleOb.registerAnimation = registerAnimation;\n moduleOb.loadAnimation = loadAnimation;\n moduleOb.setSpeed = setSpeed;\n moduleOb.setDirection = setDirection;\n moduleOb.play = play;\n moduleOb.pause = pause;\n moduleOb.stop = stop;\n moduleOb.togglePause = togglePause;\n moduleOb.searchAnimations = searchAnimations;\n moduleOb.resize = resize; // moduleOb.start = start;\n\n moduleOb.goToAndStop = goToAndStop;\n moduleOb.destroy = destroy;\n moduleOb.freeze = freeze;\n moduleOb.unfreeze = unfreeze;\n moduleOb.setVolume = setVolume;\n moduleOb.mute = mute;\n moduleOb.unmute = unmute;\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n return moduleOb;\n }();\n\n /* eslint-disable */\n var BezierFactory = function () {\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n if (beziers[str]) {\n return beziers[str];\n }\n\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) return aGuessT;\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\n\n\n function BezierEasing(points) {\n this._p = points;\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n this._precomputed = false;\n this.get = this.get.bind(this);\n }\n\n BezierEasing.prototype = {\n get: function get(x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n if (!this._precomputed) this._precompute();\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n _precompute: function _precompute() {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n this._precomputed = true;\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues();\n }\n },\n _calcSampleValues: function _calcSampleValues() {\n var mX1 = this._p[0],\n mX2 = this._p[2];\n\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\n _getTForX: function _getTForX(aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues;\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample; // Interpolate to provide an initial guess for t\n\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n\n if (initialSlope === 0.0) {\n return guessForT;\n }\n\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n };\n return ob;\n }();\n\n var pooling = function () {\n function _double(arr) {\n return arr.concat(createSizedArray(arr.length));\n }\n\n return {\n \"double\": _double\n };\n }();\n\n var poolFactory = function () {\n return function (initialLength, _create, _release) {\n var _length = 0;\n var _maxLength = initialLength;\n var pool = createSizedArray(_maxLength);\n var ob = {\n newElement: newElement,\n release: release\n };\n\n function newElement() {\n var element;\n\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n\n return element;\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n if (_release) {\n _release(element);\n }\n\n pool[_length] = element;\n _length += 1;\n }\n\n return ob;\n };\n }();\n\n var bezierLengthPool = function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments())\n };\n }\n\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n\n function release(element) {\n var i;\n var len = element.lengths.length;\n\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n\n element.lengths.length = 0;\n }\n\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n return det1 > -0.001 && det1 < 0.001;\n }\n\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n }\n\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n var diffDist;\n\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3;\n } else {\n diffDist = dist3 - dist2 - dist1;\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1;\n } else {\n diffDist = dist2 - dist1 - dist3;\n }\n\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\n\n var getBezierLength = function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point = [];\n var lastPoint = [];\n var lengthData = bezierLengthPool.newElement();\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n\n lastPoint[i] = point[i];\n }\n\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n\n lengthData.addedLength = addedLength;\n return lengthData;\n };\n }();\n\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement();\n var closed = shapeData.c;\n var pathV = shapeData.v;\n var pathO = shapeData.o;\n var pathI = shapeData.i;\n var i;\n var len = shapeData._length;\n var lengths = segmentsLength.lengths;\n var totalLength = 0;\n\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n totalLength += lengths[i].addedLength;\n }\n\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\n\n var buildBezierData = function () {\n var storedData = {};\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point;\n var lastPoint = null;\n\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n curveSegments = 2;\n }\n\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n\n return storedData[bezierName];\n };\n }();\n\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents;\n var lengths = bezierData.lengths;\n var len = percents.length;\n var initPos = bmFloor((len - 1) * perc);\n var lengthPos = perc * bezierData.addedLength;\n var lPerc = 0;\n\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n flag = false;\n } else {\n initPos += dir;\n }\n\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos];\n }\n\n flag = false;\n }\n }\n\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\n\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData);\n var u1 = 1 - t1;\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n return [ptX, ptY];\n }\n\n var bezierSegmentPoints = createTypedArray('float32', 8);\n\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0;\n } else if (startPerc > 1) {\n startPerc = 1;\n }\n\n var t0 = getDistancePerc(startPerc, bezierData);\n endPerc = endPerc > 1 ? 1 : endPerc;\n var t1 = getDistancePerc(endPerc, bezierData);\n var i;\n var len = pt1.length;\n var u0 = 1 - t0;\n var u1 = 1 - t1;\n var u0u0u0 = u0 * u0 * u0;\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0t0 = t0 * t0 * t0; //\n\n var u0u0u1 = u0 * u0 * u1;\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0t1 = t0 * t0 * t1; //\n\n var u0u1u1 = u0 * u1 * u1;\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1t1 = t0 * t1 * t1; //\n\n var u1u1u1 = u1 * u1 * u1;\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1t1 = t1 * t1 * t1;\n\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n }\n\n return bezierSegmentPoints;\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n\n var bez = bezFunction();\n\n var PropertyFactory = function () {\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\n\n var iterationIndex = caching.lastIndex;\n var i = iterationIndex;\n var len = this.keyframes.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n\n iterationIndex = 0;\n break;\n }\n\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n var k;\n var kLen;\n var perc;\n var jLen;\n var j;\n var fnc;\n var nextKeyTime = nextKeyData.t - offsetTime;\n var keyTime = keyData.t - offsetTime;\n var endValue;\n\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n\n var bezierData = keyframeMetadata.bezierData;\n\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n } // caching._lastKeyframeIndex = -1;\n\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n var distanceInLine = bezierData.segmentLength * perc;\n var segmentPerc;\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n flag = true;\n jLen = bezierData.points.length;\n\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\n\n break;\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n }\n\n break;\n }\n\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\n }\n\n caching._lastPoint = j;\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n caching._lastKeyframeIndex = i;\n }\n } else {\n var outX;\n var outY;\n var inX;\n var inY;\n var keyValue;\n len = keyData.s.length;\n endValue = nextKeyData.s || keyData.e;\n\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0];\n newValue[1] = endValue[1];\n newValue[2] = endValue[2];\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0];\n newValue[1] = keyData.s[1];\n newValue[2] = keyData.s[2];\n } else {\n var quatStart = createQuaternion(keyData.s);\n var quatEnd = createQuaternion(endValue);\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1;\n } else if (frameNum < keyTime) {\n perc = 0;\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = [];\n }\n\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyframeMetadata.__fnct[i] = fnc;\n } else {\n fnc = keyframeMetadata.__fnct[i];\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x;\n outY = keyData.o.y;\n inX = keyData.i.x;\n inY = keyData.i.y;\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyData.keyframeMetadata = fnc;\n } else {\n fnc = keyframeMetadata.__fnct;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\n }\n\n endValue = nextKeyData.s || keyData.e;\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n\n caching.lastIndex = iterationIndex;\n return newValue;\n } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\n function slerp(a, b, t) {\n var out = [];\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n var bx = b[0];\n var by = b[1];\n var bz = b[2];\n var bw = b[3];\n var omega;\n var cosom;\n var sinom;\n var scale0;\n var scale1;\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n scale0 = 1.0 - t;\n scale1 = t;\n }\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n }\n\n function quaternionToEuler(out, quat) {\n var qx = quat[0];\n var qy = quat[1];\n var qz = quat[2];\n var qw = quat[3];\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n out[0] = heading / degToRads;\n out[1] = attitude / degToRads;\n out[2] = bank / degToRads;\n }\n\n function createQuaternion(values) {\n var heading = values[0] * degToRads;\n var attitude = values[1] * degToRads;\n var bank = values[2] * degToRads;\n var c1 = Math.cos(heading / 2);\n var c2 = Math.cos(attitude / 2);\n var c3 = Math.cos(bank / 2);\n var s1 = Math.sin(heading / 2);\n var s2 = Math.sin(attitude / 2);\n var s3 = Math.sin(bank / 2);\n var w = c1 * c2 * c3 - s1 * s2 * s3;\n var x = s1 * s2 * c3 + c1 * c2 * s3;\n var y = s1 * c2 * c3 + c1 * s2 * s3;\n var z = c1 * s2 * c3 - s1 * c2 * s3;\n return [x, y, z, w];\n }\n\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1;\n this._caching.lastIndex = 0;\n }\n\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function setVValue(val) {\n var multipliedValue;\n\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue;\n this._mdf = true;\n }\n } else {\n var i = 0;\n var len = this.v.length;\n\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n\n i += 1;\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = this._isFirstFrame;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = this.kf ? this.pv : this.data.k;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.mult = mult || 1;\n this.data = data;\n this.v = mult ? data.k * mult : data.k;\n this.pv = data.k;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.vel = 0;\n this.effectsSequence = [];\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n this.mult = mult || 1;\n this.data = data;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.frameId = -1;\n var i;\n var len = data.k.length;\n this.v = createTypedArray('float32', len);\n this.pv = createTypedArray('float32', len);\n this.vel = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult;\n this.pv[i] = data.k[i];\n }\n\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.frameId = -1;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1\n };\n this.k = true;\n this.kf = true;\n this.data = data;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.v = initFrame;\n this.pv = initFrame;\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.addEffect = addEffect;\n }\n\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n var i;\n var len = data.k.length;\n var s;\n var e;\n var to;\n var ti;\n\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s;\n e = data.k[i + 1].s;\n to = data.k[i].to;\n ti = data.k[i].ti;\n\n if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n }\n }\n }\n\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.data = data;\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.k = true;\n this.kf = true;\n this._isFirstFrame = true;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.frameId = -1;\n var arrLen = data.k[0].s.length;\n this.v = createTypedArray('float32', arrLen);\n this.pv = createTypedArray('float32', arrLen);\n\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\n\n function getProp(elem, data, type, mult, container) {\n var p;\n\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container);\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container);\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container);\n break;\n\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n\n default:\n break;\n }\n }\n\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n\n return p;\n }\n\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n this.container.addDynamicProperty(this);\n this._isAnimated = true;\n }\n },\n iterateDynamicProperties: function iterateDynamicProperties() {\n this._mdf = false;\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true;\n }\n }\n },\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n this.container = container;\n this.dynamicProperties = [];\n this._mdf = false;\n this._isAnimated = false;\n }\n };\n\n var pointPool = function () {\n function create() {\n return createTypedArray('float32', 2);\n }\n\n return poolFactory(8, create);\n }();\n\n function ShapePath() {\n this.c = false;\n this._length = 0;\n this._maxLength = 8;\n this.v = createSizedArray(this._maxLength);\n this.o = createSizedArray(this._maxLength);\n this.i = createSizedArray(this._maxLength);\n }\n\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n\n while (i < len) {\n this.v[i] = pointPool.newElement();\n this.o[i] = pointPool.newElement();\n this.i[i] = pointPool.newElement();\n i += 1;\n }\n };\n\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n\n this._length = len;\n };\n\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength));\n this.i = this.i.concat(createSizedArray(this._maxLength));\n this.o = this.o.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n };\n\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n\n case 'i':\n arr = this.i;\n break;\n\n case 'o':\n arr = this.o;\n break;\n\n default:\n arr = [];\n break;\n }\n\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\n\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace);\n this.setXYAt(oX, oY, 'o', pos, replace);\n this.setXYAt(iX, iY, 'i', pos, replace);\n };\n\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath();\n newPath.setPathData(this.c, this._length);\n var vertices = this.v;\n var outPoints = this.o;\n var inPoints = this.i;\n var init = 0;\n\n if (this.c) {\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n init = 1;\n }\n\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n cnt -= 1;\n }\n\n return newPath;\n };\n\n var shapePool = function () {\n function create() {\n return new ShapePath();\n }\n\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i]);\n pointPool.release(shapePath.i[i]);\n pointPool.release(shapePath.o[i]);\n shapePath.v[i] = null;\n shapePath.i[i] = null;\n shapePath.o[i] = null;\n }\n\n shapePath._length = 0;\n shapePath.c = false;\n }\n\n function clone(shape) {\n var cloned = factory.newElement();\n var i;\n var len = shape._length === undefined ? shape.v.length : shape._length;\n cloned.setLength(len);\n cloned.c = shape.c;\n\n for (i = 0; i < len; i += 1) {\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n }\n\n return cloned;\n }\n\n var factory = poolFactory(4, create, release);\n factory.clone = clone;\n return factory;\n }();\n\n function ShapeCollection() {\n this._length = 0;\n this._maxLength = 4;\n this.shapes = createSizedArray(this._maxLength);\n }\n\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n }\n\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\n\n this._length = 0;\n };\n\n var shapeCollectionPool = function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release\n };\n var _length = 0;\n var _maxLength = 4;\n var pool = createSizedArray(_maxLength);\n\n function newShapeCollection() {\n var shapeCollection;\n\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n\n return shapeCollection;\n }\n\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n\n shapeCollection._length = 0;\n\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n pool[_length] = shapeCollection;\n _length += 1;\n }\n\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex;\n var keyPropS;\n var keyPropE;\n var isHold;\n var j;\n var k;\n var jLen;\n var kLen;\n var perc;\n var vertexValue;\n var kf = this.keyframes;\n\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0];\n isHold = true;\n iterationIndex = 0;\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\n\n isHold = true;\n } else {\n var i = iterationIndex;\n var len = kf.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1;\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0;\n } else {\n var fnc;\n\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n\n keyPropS = keyData.s[0];\n }\n\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n previousValue.i[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n previousValue.o[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n previousValue.v[j][k] = vertexValue;\n }\n }\n }\n\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n var lastFrame = this._caching.lastFrame;\n\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n this.interpolateShape(frameNum, this.pv, this._caching); /// /\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n\n var i;\n var len = shape1._length;\n\n for (i = 0; i < len; i += 1) {\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n return false;\n }\n }\n\n return true;\n }\n\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath);\n this.localShapeCollection.releaseShapes();\n this.localShapeCollection.addShape(this.v);\n this._mdf = true;\n this.paths = this.localShapeCollection;\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var finalValue;\n\n if (this.kf) {\n finalValue = this.pv;\n } else if (this.data.ks) {\n finalValue = this.data.ks.k;\n } else {\n finalValue = this.data.pt.k;\n }\n\n var i;\n var len = this.effectsSequence.length;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.container = elem;\n this.elem = elem;\n this.data = data;\n this.k = false;\n this.kf = false;\n this._mdf = false;\n var pathData = type === 3 ? data.pt.k : data.ks.k;\n this.v = shapePool.clone(pathData);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.reset = resetShape;\n this.effectsSequence = [];\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.elem = elem;\n this.container = elem;\n this.offsetTime = elem.data.st;\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n this.keyframesMetadata = [];\n this.k = true;\n this.kf = true;\n var len = this.keyframes[0].s[0].i.length;\n this.v = shapePool.newElement();\n this.v.setPathData(this.keyframes[0].s[0].c, len);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.lastFrame = initFrame;\n this.reset = resetShape;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0\n };\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n }\n\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 4);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.localShapeCollection.addShape(this.v);\n this.d = data.d;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertEllToPath();\n }\n },\n convertEllToPath: function convertEllToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var s0 = this.s.v[0] / 2;\n var s1 = this.s.v[1] / 2;\n\n var _cw = this.d !== 3;\n\n var _v = this.v;\n _v.v[0][0] = p0;\n _v.v[0][1] = p1 - s1;\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.v[1][1] = p1;\n _v.v[2][0] = p0;\n _v.v[2][1] = p1 + s1;\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.v[3][1] = p1;\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.i[0][1] = p1 - s1;\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.i[1][1] = p1 - s1 * cPoint;\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.i[2][1] = p1 + s1;\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.i[3][1] = p1 + s1 * cPoint;\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.o[0][1] = p1 - s1;\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.o[1][1] = p1 + s1 * cPoint;\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.o[2][1] = p1 + s1;\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.o[3][1] = p1 - s1 * cPoint;\n }\n };\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n return EllShapePropertyFactory;\n }();\n\n var StarShapeProperty = function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 0);\n this.elem = elem;\n this.comp = elem.comp;\n this.data = data;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n this.convertToPath = this.convertStarToPath;\n } else {\n this.convertToPath = this.convertPolygonToPath;\n }\n\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertToPath();\n }\n },\n convertStarToPath: function convertStarToPath() {\n var numPts = Math.floor(this.pt.v) * 2;\n var angle = Math.PI * 2 / numPts;\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\n\n var longFlag = true;\n var longRad = this.or.v;\n var shortRad = this.ir.v;\n var longRound = this.os.v;\n var shortRound = this.is.v;\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n var i;\n var rad;\n var roundness;\n var perimSegment;\n var currentAng = -Math.PI / 2;\n currentAng += this.r.v;\n var dir = this.data.d === 3 ? -1 : 1;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad;\n roundness = longFlag ? longRound : shortRound;\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\n\n longFlag = !longFlag;\n currentAng += angle * dir;\n }\n },\n convertPolygonToPath: function convertPolygonToPath() {\n var numPts = Math.floor(this.pt.v);\n var angle = Math.PI * 2 / numPts;\n var rad = this.or.v;\n var roundness = this.os.v;\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n var i;\n var currentAng = -Math.PI * 0.5;\n var dir = this.data.d === 3 ? -1 : 1;\n currentAng += this.r.v;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n currentAng += angle * dir;\n }\n\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\n\n var RectShapeProperty = function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.c = true;\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\n }\n\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function convertRectToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var v0 = this.s.v[0] / 2;\n var v1 = this.s.v[1] / 2;\n var round = bmMin(v0, v1, this.r.v);\n var cPoint = round * (1 - roundCorner);\n this.v._length = 0;\n\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n }\n }\n },\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n\n function getShapeProp(elem, data, type) {\n var prop;\n\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type);\n } else {\n prop = new ShapeProperty(elem, data, type);\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data);\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data);\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n }\n\n function getConstructorFunction() {\n return ShapeProperty;\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\n\n /**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\n\n var Matrix = function () {\n var _cos = Math.cos;\n var _sin = Math.sin;\n var _tan = Math.tan;\n var _rnd = Math.round;\n\n function reset() {\n this.props[0] = 1;\n this.props[1] = 0;\n this.props[2] = 0;\n this.props[3] = 0;\n this.props[4] = 0;\n this.props[5] = 1;\n this.props[6] = 0;\n this.props[7] = 0;\n this.props[8] = 0;\n this.props[9] = 0;\n this.props[10] = 1;\n this.props[11] = 0;\n this.props[12] = 0;\n this.props[13] = 0;\n this.props[14] = 0;\n this.props[15] = 1;\n return this;\n }\n\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n }\n\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\n\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a;\n this.props[1] = b;\n this.props[2] = c;\n this.props[3] = d;\n this.props[4] = e;\n this.props[5] = f;\n this.props[6] = g;\n this.props[7] = h;\n this.props[8] = i;\n this.props[9] = j;\n this.props[10] = k;\n this.props[11] = l;\n this.props[12] = m;\n this.props[13] = n;\n this.props[14] = o;\n this.props[15] = p;\n return this;\n }\n\n function translate(tx, ty, tz) {\n tz = tz || 0;\n\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n }\n\n return this;\n }\n\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props;\n\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2;\n _p[13] = _p[13] * f2 + _p[15] * n2;\n _p[14] = _p[14] * k2 + _p[15] * o2;\n _p[15] *= p2; // }\n\n this._identityCalculated = false;\n return this;\n }\n\n var a1 = _p[0];\n var b1 = _p[1];\n var c1 = _p[2];\n var d1 = _p[3];\n var e1 = _p[4];\n var f1 = _p[5];\n var g1 = _p[6];\n var h1 = _p[7];\n var i1 = _p[8];\n var j1 = _p[9];\n var k1 = _p[10];\n var l1 = _p[11];\n var m1 = _p[12];\n var n1 = _p[13];\n var o1 = _p[14];\n var p1 = _p[15];\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\n\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n this._identityCalculated = false;\n return this;\n }\n\n function isIdentity() {\n if (!this._identityCalculated) {\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n this._identityCalculated = true;\n }\n\n return this._identity;\n }\n\n function equals(matr) {\n var i = 0;\n\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n }\n\n function clone(matr) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n\n return matr;\n }\n\n function cloneFromProps(props) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\n }\n\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n };\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\n }\n\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n }\n\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n }\n\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n }\n\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n var a = this.props[5] / determinant;\n var b = -this.props[1] / determinant;\n var c = -this.props[4] / determinant;\n var d = this.props[0] / determinant;\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n var inverseMatrix = new Matrix();\n inverseMatrix.props[0] = a;\n inverseMatrix.props[1] = b;\n inverseMatrix.props[4] = c;\n inverseMatrix.props[5] = d;\n inverseMatrix.props[12] = e;\n inverseMatrix.props[13] = f;\n return inverseMatrix;\n }\n\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n\n return retPts;\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n\n if (this.isIdentity()) {\n arr[0] = pt1[0];\n arr[1] = pt1[1];\n arr[2] = pt2[0];\n arr[3] = pt2[1];\n arr[4] = pt3[0];\n arr[5] = pt3[1];\n } else {\n var p0 = this.props[0];\n var p1 = this.props[1];\n var p4 = this.props[4];\n var p5 = this.props[5];\n var p12 = this.props[12];\n var p13 = this.props[13];\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n }\n\n return arr;\n }\n\n function applyToPointArray(x, y, z) {\n var arr;\n\n if (this.isIdentity()) {\n arr = [x, y, z];\n } else {\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n }\n\n return arr;\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\n\n var _p = this.props;\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n }\n\n function toCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n\n return cssValue;\n }\n\n function roundMatrixProperty(val) {\n var v = 10000;\n\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n\n return val;\n }\n\n function to2dCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var props = this.props;\n\n var _a = roundMatrixProperty(props[0]);\n\n var _b = roundMatrixProperty(props[1]);\n\n var _c = roundMatrixProperty(props[4]);\n\n var _d = roundMatrixProperty(props[5]);\n\n var _e = roundMatrixProperty(props[12]);\n\n var _f = roundMatrixProperty(props[13]);\n\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\n\n return function () {\n this.reset = reset;\n this.rotate = rotate;\n this.rotateX = rotateX;\n this.rotateY = rotateY;\n this.rotateZ = rotateZ;\n this.skew = skew;\n this.skewFromAxis = skewFromAxis;\n this.shear = shear;\n this.scale = scale;\n this.setTransform = setTransform;\n this.translate = translate;\n this.transform = transform;\n this.applyToPoint = applyToPoint;\n this.applyToX = applyToX;\n this.applyToY = applyToY;\n this.applyToZ = applyToZ;\n this.applyToPointArray = applyToPointArray;\n this.applyToTriplePoints = applyToTriplePoints;\n this.applyToPointStringified = applyToPointStringified;\n this.toCSS = toCSS;\n this.to2dCSS = to2dCSS;\n this.clone = clone;\n this.cloneFromProps = cloneFromProps;\n this.equals = equals;\n this.inversePoints = inversePoints;\n this.inversePoint = inversePoint;\n this.getInverseMatrix = getInverseMatrix;\n this._t = this.transform;\n this.isIdentity = isIdentity;\n this._identity = true;\n this._identityCalculated = false;\n this.props = createTypedArray('float32', 16);\n this.reset();\n };\n }();\n\n function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n\n function setLocation(href) {\n setLocationHref(href);\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n\n return animationManager.loadAnimation(params);\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n\n case 'matrix':\n return Matrix;\n\n default:\n return null;\n }\n }\n\n lottie.play = animationManager.play;\n lottie.pause = animationManager.pause;\n lottie.setLocationHref = setLocation;\n lottie.togglePause = animationManager.togglePause;\n lottie.setSpeed = animationManager.setSpeed;\n lottie.setDirection = animationManager.setDirection;\n lottie.stop = animationManager.stop;\n lottie.searchAnimations = searchAnimations;\n lottie.registerAnimation = animationManager.registerAnimation;\n lottie.loadAnimation = loadAnimation;\n lottie.setSubframeRendering = setSubframeRendering;\n lottie.resize = animationManager.resize; // lottie.start = start;\n\n lottie.goToAndStop = animationManager.goToAndStop;\n lottie.destroy = animationManager.destroy;\n lottie.setQuality = setQuality;\n lottie.inBrowser = inBrowser;\n lottie.installPlugin = installPlugin;\n lottie.freeze = animationManager.freeze;\n lottie.unfreeze = animationManager.unfreeze;\n lottie.setVolume = animationManager.setVolume;\n lottie.mute = animationManager.mute;\n lottie.unmute = animationManager.unmute;\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n lottie.useWebWorker = setWebWorker;\n lottie.setIDPrefix = setPrefix;\n lottie.__getFactory = getFactory;\n lottie.version = '5.9.4';\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n\n return null;\n }\n\n var queryString = '';\n\n if (standalone) {\n var scripts = document.getElementsByTagName('script');\n var index = scripts.length - 1;\n var myScript = scripts[index] || {\n src: ''\n };\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n\n renderer = getQueryVariable('renderer');\n }\n\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\n try {\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie;\n }\n } catch (err) {//\n }\n\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n\n return ob;\n }();\n\n function ShapeModifier() {}\n\n ShapeModifier.prototype.initModifierProperties = function () {};\n\n ShapeModifier.prototype.addShapeToModifier = function () {};\n\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n data.sh.container.addDynamicProperty(data.sh);\n var shapeData = {\n shape: data.sh,\n data: data,\n localShapeCollection: shapeCollectionPool.newShapeCollection()\n };\n this.shapes.push(shapeData);\n this.addShapeToModifier(shapeData);\n\n if (this._isAnimated) {\n data.setAsAnimated();\n }\n }\n };\n\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = [];\n this.elem = elem;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, data);\n this.frameId = initialDefaultFrame;\n this.closed = false;\n this.k = false;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n\n extendPrototype([ShapeModifier], TrimModifier);\n\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n this.sValue = 0;\n this.eValue = 0;\n this.getValue = this.processKeys;\n this.m = data.m;\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n };\n\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n\n if (e <= 1) {\n segments.push({\n s: s,\n e: e\n });\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1\n });\n } else {\n segments.push({\n s: s,\n e: 1\n });\n segments.push({\n s: 0,\n e: e - 1\n });\n }\n\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n\n return shapeSegments;\n };\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n\n pathsData.length = 0;\n return pathsData;\n };\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n\n if (o < 0) {\n o += 1;\n }\n\n if (this.s.v > 1) {\n s = 1 + o;\n } else if (this.s.v < 0) {\n s = 0 + o;\n } else {\n s = this.s.v + o;\n }\n\n if (this.e.v > 1) {\n e = 1 + o;\n } else if (this.e.v < 0) {\n e = 0 + o;\n } else {\n e = this.e.v + o;\n }\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n s = Math.round(s * 10000) * 0.0001;\n e = Math.round(e * 10000) * 0.0001;\n this.sValue = s;\n this.eValue = e;\n } else {\n s = this.sValue;\n e = this.eValue;\n }\n\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var pathsData;\n var pathData;\n var totalShapeLength;\n var totalModifierLength = 0;\n\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes();\n this.shapes[i].shape._mdf = true;\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0;\n }\n }\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n var segments = [];\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection;\n } else {\n shapePaths = shapeData.shape.paths;\n jLen = shapePaths._length;\n totalShapeLength = 0;\n\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n pathsData.push(pathData);\n totalShapeLength += pathData.totalLength;\n }\n\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n addedLength += shapeData.totalShapeLength;\n } else {\n edges = [[shapeS, shapeE]];\n }\n\n jLen = edges.length;\n\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE\n });\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength\n });\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n }\n\n var newShapesData = this.addShapes(shapeData, segments[0]);\n\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop();\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n } else {\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1]);\n }\n }\n\n this.addPaths(newShapesData, localShapeCollection);\n }\n }\n\n shapeData.shape.paths = localShapeCollection;\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0;\n this.shapes[i].shape._mdf = true;\n }\n }\n };\n\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\n };\n\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos);\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData;\n var shapePaths = shapeData.shape.paths.shapes;\n var i;\n var len = shapeData.shape.paths._length;\n var j;\n var jLen;\n var addedLength = 0;\n var currentLengthData;\n var segmentCount;\n var lengths;\n var segment;\n var shapes = [];\n var initPos;\n var newShape = true;\n\n if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n\n shapes.push(shapePath);\n\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths;\n shapePath.c = shapePaths[i].c;\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength;\n shapePath.c = false;\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false;\n break;\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n }\n\n if (addedLength > shapeSegment.e) {\n break;\n }\n\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this._isAnimated = !!this.amount.effectsSequence.length;\n };\n\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100;\n var centerPoint = [0, 0];\n var pathLength = path._length;\n var i = 0;\n\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\n\n centerPoint[0] /= pathLength;\n centerPoint[1] /= pathLength;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n }\n\n return clonedPath;\n };\n\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r) {\n mat.rotate(-this.r.v);\n } else {\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n mat.translate(this.px.v, this.py.v, 0);\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n\n this.iterateDynamicProperties();\n\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v);\n } else if (!this.r && this.appliedTransformations < 4) {\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n } else {\n v1 = this.p.pv;\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n }\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n v1 = [];\n v2 = [];\n var px = this.px;\n var py = this.py;\n\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n } else {\n v1 = [px.pv, py.pv];\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n }\n } else {\n v2 = defaultVector;\n v1 = v2;\n }\n\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\n\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n this.v.translate(this.px.v, this.py.v, 0);\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n this.frameId = this.elem.globalData.frameId;\n }\n\n function precalculateMatrix() {\n if (!this.a.k) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n this.appliedTransformations = 1;\n } else {\n return;\n }\n\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n this.appliedTransformations = 2;\n } else {\n return;\n }\n\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n this.appliedTransformations = 3;\n } else {\n return;\n }\n }\n\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v);\n this.appliedTransformations = 4;\n }\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n this.appliedTransformations = 4;\n }\n }\n\n function autoOrient() {//\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\n\n function TransformProperty(elem, data, container) {\n this.elem = elem;\n this.frameId = -1;\n this.propType = 'transform';\n this.data = data;\n this.v = new Matrix(); // Precalculated matrix with non animated properties\n\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || {\n k: [0, 0, 0]\n }, 1, 0, this);\n }\n\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null;\n data.or.k[i].ti = null;\n }\n }\n\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\n\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n }\n\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: [0, 0, 0]\n }, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: [100, 100, 100]\n }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n } else {\n this.o = {\n _mdf: false,\n v: 1\n };\n }\n\n this._isDirty = true;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n }\n\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient\n };\n extendPrototype([DynamicPropertyContainer], TransformProperty);\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n\n extendPrototype([ShapeModifier], RepeaterModifier);\n\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n this.data = data;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n\n this._isAnimated = !!this.dynamicProperties.length;\n this.pMatrix = new Matrix();\n this.rMatrix = new Matrix();\n this.sMatrix = new Matrix();\n this.tMatrix = new Matrix();\n this.matrix = new Matrix();\n };\n\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1;\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n rMatrix.rotate(-transform.r.v * dir * perc);\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n };\n\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem;\n this.arr = arr;\n this.pos = pos;\n this.elemsData = elemsData;\n this._currentCopies = 0;\n this._elements = [];\n this._groups = [];\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, arr[pos]);\n\n while (pos > 0) {\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n this._elements.unshift(arr[pos]);\n }\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\n }\n };\n\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements));\n this.resetElements(newElements);\n return newElements;\n };\n\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\n }\n };\n\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items;\n var itemsTransform;\n var i;\n var dir;\n var cont;\n var hasReloaded = false;\n\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr'\n };\n group.it.push({\n a: {\n a: 0,\n ix: 1,\n k: [0, 0]\n },\n nm: 'Transform',\n o: {\n a: 0,\n ix: 7,\n k: 100\n },\n p: {\n a: 0,\n ix: 2,\n k: [0, 0]\n },\n r: {\n a: 1,\n ix: 6,\n k: [{\n s: 0,\n e: 0,\n t: 0\n }, {\n s: 0,\n e: 0,\n t: 1\n }]\n },\n s: {\n a: 0,\n ix: 3,\n k: [100, 100]\n },\n sa: {\n a: 0,\n ix: 5,\n k: 0\n },\n sk: {\n a: 0,\n ix: 4,\n k: 0\n },\n ty: 'tr'\n });\n this.arr.splice(0, 0, group);\n\n this._groups.splice(0, 0, group);\n\n this._currentCopies += 1;\n }\n\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n\n cont = 0;\n var renderFlag;\n\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies;\n this._groups[i]._render = renderFlag;\n this.changeGroupRender(this._groups[i].it, renderFlag);\n\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true;\n transformData.transform.op.v = 0;\n } else {\n transformData.transform.op._mdf = false;\n }\n }\n\n cont += 1;\n }\n\n this._currentCopies = copies; /// /\n\n var offset = this.o.v;\n var offsetModulo = offset % 1;\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n var pProps = this.pMatrix.props;\n var rProps = this.rMatrix.props;\n var sProps = this.sMatrix.props;\n this.pMatrix.reset();\n this.rMatrix.reset();\n this.sMatrix.reset();\n this.tMatrix.reset();\n this.matrix.reset();\n var iteration = 0;\n\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n iteration += 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n iteration += offsetModulo;\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n iteration -= 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\n }\n\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n dir = this.data.m === 1 ? 1 : -1;\n cont = this._currentCopies;\n var j;\n var jLen;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n jLen = itemsTransform.length;\n items[items.length - 1].transform.mProps._mdf = true;\n items[items.length - 1].transform.op._mdf = true;\n items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n\n if (iteration !== 0) {\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n }\n\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n\n this.matrix.reset();\n } else {\n this.matrix.reset();\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n }\n\n iteration += 1;\n cont -= 1;\n i += dir;\n }\n } else {\n cont = this._currentCopies;\n i = 0;\n dir = 1;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n items[items.length - 1].transform.mProps._mdf = false;\n items[items.length - 1].transform.op._mdf = false;\n cont -= 1;\n i += dir;\n }\n }\n\n return hasReloaded;\n };\n\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n\n extendPrototype([ShapeModifier], RoundCornersModifier);\n\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this._isAnimated = !!this.rd.effectsSequence.length;\n };\n\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var i;\n var len = path._length;\n var currentV;\n var currentI;\n var currentO;\n var closerV;\n var distance;\n var newPosPerc;\n var index = 0;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\n\n index += 1;\n } else {\n if (i === 0) {\n closerV = path.v[len - 1];\n } else {\n closerV = path.v[i - 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = iX;\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n vY = iY;\n oX = vX - (vX - currentV[0]) * roundCorner;\n oY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = oX;\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n vY = oY;\n iX = vX - (vX - currentV[0]) * roundCorner;\n iY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n }\n } else {\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n index += 1;\n }\n }\n\n return clonedPath;\n };\n\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var rd = this.rd.v;\n\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n var fWeight = 'normal';\n var fStyle = 'normal';\n var len = styles.length;\n var styleName;\n\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n\n case 'bold':\n fWeight = '700';\n break;\n\n case 'black':\n fWeight = '900';\n break;\n\n case 'medium':\n fWeight = '500';\n break;\n\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n\n default:\n break;\n }\n }\n\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight\n };\n }\n\n var FontManager = function () {\n var maxWaitingTime = 5000;\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: []\n }\n };\n var combinedCharacters = []; // Hindi characters\n\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n var zeroWidthJoiner = [65039, 8205];\n\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i]);\n }\n }\n\n return enabledFamilies.join(',');\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span'); // Characters that vary significantly among different fonts\n\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n parentNode.style.fontSize = '300px'; // Reset any font properties\n\n parentNode.style.fontVariant = 'normal';\n parentNode.style.fontStyle = 'normal';\n parentNode.style.fontWeight = 'normal';\n parentNode.style.letterSpacing = '0';\n parentNode.appendChild(node);\n document.body.appendChild(parentNode); // Remember width with no applied web font\n\n var width = node.offsetWidth;\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n return {\n node: node,\n w: width,\n parent: parentNode\n };\n }\n\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1;\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].monoCase.node;\n w = this.fonts[i].monoCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].sansCase.node;\n w = this.fonts[i].sansCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\n }\n\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n }\n }\n }\n\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\n tHelper.setAttribute('font-family', fontData.fFamily);\n tHelper.setAttribute('font-style', fontProps.style);\n tHelper.setAttribute('font-weight', fontProps.weight);\n tHelper.textContent = '1';\n\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\n }\n\n def.appendChild(tHelper);\n helper = tHelper;\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n helper = tCanvasHelper;\n }\n\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n\n return helper.measureText(text).width;\n }\n\n return {\n measureText: measure\n };\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\n\n if (!document.body) {\n this.isLoaded = true;\n fontData.list.forEach(function (data) {\n data.helper = createHelper(data);\n data.cache = {};\n });\n this.fonts = fontData.list;\n return;\n }\n\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true;\n var loadedSelector;\n var j;\n fontArr[i].loaded = false;\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true;\n _pendingFonts -= 1;\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\n\n if (shouldLoadFont) {\n var s = createTag('style');\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\n s.setAttribute('f-origin', fontArr[i].origin);\n s.setAttribute('f-family', fontArr[i].fFamily);\n s.type = 'text/css';\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n defs.appendChild(s);\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var l = createTag('link');\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\n l.setAttribute('f-origin', fontArr[i].origin);\n l.type = 'text/css';\n l.rel = 'stylesheet';\n l.href = fontArr[i].fPath;\n document.body.appendChild(l);\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var sc = createTag('link');\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n sc.setAttribute('f-origin', fontArr[i].origin);\n sc.setAttribute('rel', 'stylesheet');\n sc.setAttribute('href', fontArr[i].fPath);\n defs.appendChild(sc);\n }\n }\n\n fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\n\n if (_pendingFonts === 0) {\n this.isLoaded = true;\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100);\n }\n }\n\n function addChars(chars) {\n if (!chars) {\n return;\n }\n\n if (!this.chars) {\n this.chars = [];\n }\n\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n\n while (j < jLen) {\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n found = true;\n }\n\n j += 1;\n }\n\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n\n while (i < len) {\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i];\n }\n\n i += 1;\n }\n\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n && !this._warned) {\n this._warned = true;\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n }\n\n return emptyChar;\n }\n\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName);\n\n var index = _char2.charCodeAt(0);\n\n if (!fontData.cache[index + 1]) {\n var tHelper = fontData.helper;\n\n if (_char2 === ' ') {\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\n var singleSize = tHelper.measureText('||');\n fontData.cache[index + 1] = (doubleSize - singleSize) / 100;\n } else {\n fontData.cache[index + 1] = tHelper.measureText(_char2) / 100;\n }\n }\n\n return fontData.cache[index + 1] * size;\n }\n\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n\n i += 1;\n }\n\n return this.fonts[0];\n }\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n\n function isZeroWidthJoiner(firstCharCode, secondCharCode) {\n if (!secondCharCode) {\n return firstCharCode === zeroWidthJoiner[1];\n }\n\n return firstCharCode === zeroWidthJoiner[0] && secondCharCode === zeroWidthJoiner[1];\n }\n\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n }\n\n function setIsLoaded() {\n this.isLoaded = true;\n }\n\n var Font = function Font() {\n this.fonts = [];\n this.chars = null;\n this.typekitLoaded = 0;\n this.isLoaded = false;\n this._warned = false;\n this.initTime = Date.now();\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n };\n\n Font.isModifier = isModifier;\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\n Font.isCombinedCharacter = isCombinedCharacter;\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded\n };\n Font.prototype = fontPrototype;\n return Font;\n }();\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false; // layer's display state\n\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n this.isTransparent = false; // list of animated components\n\n this.renderableComponents = [];\n },\n addRenderableComponent: function addRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component);\n }\n },\n removeRenderableComponent: function removeRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n }\n },\n prepareRenderableFrame: function prepareRenderableFrame(num) {\n this.checkLayerLimits(num);\n },\n checkTransparency: function checkTransparency() {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true;\n this.hide();\n }\n } else if (this.isTransparent) {\n this.isTransparent = false;\n this.show();\n }\n },\n\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\n checkLayerLimits: function checkLayerLimits(num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true;\n this._mdf = true;\n this.isInRange = true;\n this.show();\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true;\n this.isInRange = false;\n this.hide();\n }\n },\n renderRenderable: function renderRenderable() {\n var i;\n var len = this.renderableComponents.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\n },\n sourceRectAtTime: function sourceRectAtTime() {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100\n };\n },\n getLayerSize: function getLayerSize() {\n if (this.data.ty === 5) {\n return {\n w: this.data.textData.width,\n h: this.data.textData.height\n };\n }\n\n return {\n w: this.data.width,\n h: this.data.height\n };\n }\n };\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\n\n return this._mask.prop;\n }\n });\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function get() {\n if (this._mask.op.k) {\n this._mask.op.getValue();\n }\n\n return this._mask.op.v * 100;\n }\n });\n\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n var i;\n var len = maskManager.viewData.length;\n\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n\n var maskFunction = function maskFunction(name) {\n i = 0;\n\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n return maskFunction;\n };\n\n return MaskManager;\n }();\n\n var ExpressionPropertyInterface = function () {\n var defaultUnidimensionalValue = {\n pv: 0,\n v: 0,\n mult: 1\n };\n var defaultMultidimensionalValue = {\n pv: [0, 0, 0],\n v: [0, 0, 0],\n mult: 1\n };\n\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function get() {\n return property.getVelocityAtTime(property.comp.currentFrame);\n }\n });\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n\n var value = '';\n\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s;\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e;\n } else {\n value = property.keyframes[pos - 2].s;\n }\n\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n valueProp.value = type === 'unidimensional' ? value[0] : value;\n return valueProp;\n };\n\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var val = property.pv * mult;\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n val = property.v * mult;\n\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n\n return expressionValue;\n };\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var len = property.data && property.data.l || property.pv.length;\n var expressionValue = createTypedArray('float32', len);\n var arrValue = createTypedArray('float32', len);\n expressionValue.value = arrValue;\n completeProperty(expressionValue, property, 'multidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n\n return expressionValue;\n };\n } // TODO: try to avoid using this getter\n\n\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\n\n return MultidimensionalPropertyInterface(property);\n };\n }();\n\n var TransformExpressionInterface = function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale;\n\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz)\n });\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r)\n });\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx)\n });\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry)\n });\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s)\n });\n\n var _px;\n\n var _py;\n\n var _pz;\n\n var _transformFactory;\n\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\n\n return [_px(), _py(), _pz ? _pz() : 0];\n }\n });\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px)\n });\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py)\n });\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz)\n });\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a)\n });\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o)\n });\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk)\n });\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa)\n });\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or)\n });\n return _thisFunction;\n };\n }();\n\n var LayerExpressionInterface = function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix();\n\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat;\n }\n\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.applyPoint(toWorldMat, arr);\n }\n\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\n\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.invertPoint(toWorldMat, arr);\n }\n\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\n\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\n\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.inversePoint(arr);\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n\n return function (elem) {\n var transformInterface;\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface;\n\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n\n default:\n return null;\n }\n }\n\n _thisLayerFunction.getMatrix = getMatrix;\n _thisLayerFunction.invertPoint = invertPoint;\n _thisLayerFunction.applyPoint = applyPoint;\n _thisLayerFunction.toWorld = toWorld;\n _thisLayerFunction.toWorldVec = toWorldVec;\n _thisLayerFunction.fromWorld = fromWorld;\n _thisLayerFunction.fromWorldVec = fromWorldVec;\n _thisLayerFunction.toComp = toWorld;\n _thisLayerFunction.fromComp = fromComp;\n _thisLayerFunction.sampleImage = sampleImage;\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n _thisLayerFunction._elem = elem;\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function get() {\n return elem.hierarchy.length;\n }\n },\n parent: {\n get: function get() {\n return elem.hierarchy[0].layerInterface;\n }\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function get() {\n return transformInterface;\n }\n },\n active: {\n get: function get() {\n return elem.isInRange;\n }\n }\n });\n _thisLayerFunction.startTime = elem.data.st;\n _thisLayerFunction.index = elem.data.ind;\n _thisLayerFunction.source = elem.data.refId;\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n _thisLayerFunction._name = elem.data.nm;\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n return _thisLayerFunction;\n };\n }();\n\n var propertyGroupFactory = function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return parentPropertyGroup(val - 1);\n };\n };\n }();\n\n var PropertyInterface = function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName\n };\n\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return propertyGroup(val - 1);\n }\n\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\n\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = [];\n var effectsData = elem.data.ef;\n var i;\n var len = elem.effectsManager.effectElements.length;\n\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n\n var effects = elem.data.ef || [];\n\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n\n return null;\n }\n\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef;\n var i = 0;\n var len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i];\n }\n\n return effectElements[i]();\n }\n\n i += 1;\n }\n\n throw new Error();\n }\n\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n var effectElements = [];\n var i;\n var len = data.ef.length;\n\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n }\n }\n\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\n });\n }\n\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function get() {\n return data.np;\n }\n },\n _name: {\n value: data.nm\n },\n propertyGroup: {\n value: _propertyGroup\n }\n });\n groupInterface.enabled = data.en !== 0;\n groupInterface.active = groupInterface.enabled;\n return groupInterface;\n }\n\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n\n return expressionProperty();\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n\n return interfaceFunction;\n }\n\n return ob;\n }();\n\n var CompExpressionInterface = function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0;\n var len = comp.layers.length;\n\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n\n i += 1;\n }\n\n return null; // return {active:false};\n }\n\n Object.defineProperty(_thisLayerFunction, '_name', {\n value: comp.data.nm\n });\n _thisLayerFunction.layer = _thisLayerFunction;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n _thisLayerFunction.displayStartTime = 0;\n _thisLayerFunction.numLayers = comp.layers.length;\n return _thisLayerFunction;\n };\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n\n function interfaceFunction(val) {\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n return interfaceFunction.path;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n _name: {\n value: shape.nm\n },\n ix: {\n value: shape.ix\n },\n propertyIndex: {\n value: shape.ix\n },\n mn: {\n value: shape.mn\n },\n propertyGroup: {\n value: propertyGroup\n }\n });\n return interfaceFunction;\n };\n }();\n\n var ShapeExpressionInterface = function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = [];\n var i;\n var len = shapes ? shapes.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n }\n }\n\n return arr;\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n\n return null;\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n interfaceFunction.numProperties = interfaces.length;\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.transform = transformInterface;\n interfaceFunction.propertyIndex = shape.cix;\n interfaceFunction._name = shape.nm;\n return interfaceFunction;\n }\n\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content;\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n\n default:\n return interfaceFunction.transform;\n }\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.content = content;\n interfaceFunction.transform = transformInterface;\n Object.defineProperty(interfaceFunction, '_name', {\n get: function get() {\n return shape.nm;\n }\n }); // interfaceFunction.content = interfaceFunction;\n\n interfaceFunction.numProperties = shape.np;\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.nm = shape.nm;\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s)\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n type: {\n get: function get() {\n return 'a';\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n\n return interfaceFunction;\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w)\n },\n dash: {\n get: function get() {\n return dashOb;\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n return interfaceFunction;\n }\n\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end;\n }\n\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.propertyGroup = propertyGroup;\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s)\n },\n end: {\n get: ExpressionPropertyInterface(view.e)\n },\n offset: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n }\n\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o)\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p)\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a)\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s)\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r)\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.ty = 'tr';\n interfaceFunction.mn = shape.mn;\n interfaceFunction.propertyGroup = propertyGroup;\n return interfaceFunction;\n }\n\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r)\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt)\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or)\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os)\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir)\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r)\n },\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c)\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n return function (shapes, view, propertyGroup) {\n var interfaces;\n\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n\n if (value === 0) {\n return propertyGroup;\n }\n\n return interfaces[value - 1];\n }\n\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function parentGroupWrapper() {\n return propertyGroup;\n }\n\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n _interfaceFunction.numProperties = interfaces.length;\n _interfaceFunction._name = 'Contents';\n return _interfaceFunction;\n };\n }();\n\n var TextExpressionInterface = function () {\n return function (elem) {\n var _prevValue;\n\n var _sourceText;\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n\n if (stringValue !== _prevValue) {\n elem.textProperty.currentData.t = _prevValue;\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n var getBlendMode = function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity'\n };\n return function (mode) {\n return blendModeEnums[mode] || '';\n };\n }();\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function NoValueEffect() {\n this.p = {};\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || [];\n this.effectElements = [];\n var i;\n var len = effects.length;\n var effectItem;\n\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\n GroupEffect.prototype.init = function (data, element) {\n this.data = data;\n this.effectElements = [];\n this.initDynamicPropertyContainer(element);\n var i;\n var len = this.data.ef.length;\n var eff;\n var effects = this.data.ef;\n\n for (i = 0; i < len; i += 1) {\n eff = null;\n\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n\n var i = 0;\n var len = this.data.masksProperties.length;\n\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n initExpressions: function initExpressions() {\n this.layerInterface = LayerExpressionInterface(this);\n\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this);\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n this.layerInterface.content = this.layerInterface.shapeInterface;\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this);\n this.layerInterface.text = this.layerInterface.textInterface;\n }\n },\n setBlendMode: function setBlendMode() {\n var blendModeValue = getBlendMode(this.data.bm);\n var elem = this.baseElement || this.layerElement;\n elem.style['mix-blend-mode'] = blendModeValue;\n },\n initBaseData: function initBaseData(data, globalData, comp) {\n this.globalData = globalData;\n this.comp = comp;\n this.data = data;\n this.layerId = createElementID(); // Stretch factor for old animations missing this property.\n\n if (!this.data.sr) {\n this.data.sr = 1;\n } // effects manager\n\n\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n },\n getType: function getType() {\n return this.type;\n },\n sourceRectAtTime: function sourceRectAtTime() {}\n };\n\n /**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false; // list of animated properties\n\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n this._mdf = false;\n },\n\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true;\n this._mdf = true;\n }\n }\n }\n },\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n }\n }\n };\n\n function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n\n if (_typeof$2(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n var propertyNameIndex = value.indexOf(currentPropertyName);\n\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n\n if (_typeof$2(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n return '';\n }\n\n return init;\n };\n\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n\n return null;\n }\n\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n\n return null;\n }\n\n _interfaceFunction._name = 'Data';\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n return _interfaceFunction;\n };\n }();\n\n function FootageElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\n this.initBaseData(data, globalData, comp);\n }\n\n FootageElement.prototype.prepareFrame = function () {};\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n\n FootageElement.prototype.renderFrame = function () {};\n\n FootageElement.prototype.destroy = function () {};\n\n FootageElement.prototype.initExpressions = function () {\n this.layerInterface = FootageInterface(this);\n };\n\n FootageElement.prototype.getFootageData = function () {\n return this.footageData;\n };\n\n function AudioElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.initBaseData(data, globalData, comp);\n this._isPlaying = false;\n this._canPlay = false;\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.audio = this.globalData.audioController.createAudio(assetPath);\n this._currentTime = 0;\n this.globalData.audioController.addAudio(this);\n this._volumeMultiplier = 1;\n this._volume = 1;\n this._previousVolume = null;\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n k: [100]\n }, 1, 0.01, this);\n }\n\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n this._currentTime = timeRemapped;\n } else {\n this._currentTime = num / this.data.sr;\n }\n\n this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play();\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n this._isPlaying = true;\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n }\n }\n };\n\n AudioElement.prototype.show = function () {// this.audio.play()\n };\n\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\n\n AudioElement.prototype.volume = function (volumeValue) {\n this._volumeMultiplier = volumeValue;\n this._previousVolume = volumeValue * this._volume;\n this.audio.volume(this._previousVolume);\n };\n\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n\n AudioElement.prototype.destroy = function () {};\n\n AudioElement.prototype.sourceRectAtTime = function () {};\n\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i);\n }\n }\n\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n\n case 0:\n return this.createComp(layer);\n\n case 1:\n return this.createSolid(layer);\n\n case 3:\n return this.createNull(layer);\n\n case 4:\n return this.createShape(layer);\n\n case 5:\n return this.createText(layer);\n\n case 6:\n return this.createAudio(layer);\n\n case 13:\n return this.createCamera(layer);\n\n case 15:\n return this.createFootage(layer);\n\n default:\n return this.createNull(layer);\n }\n };\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false;\n var i;\n var len = newLayers.length;\n var j;\n var jLen = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n\n j += 1;\n }\n }\n };\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\n };\n\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements;\n var layers = this.layers;\n var i = 0;\n var len = layers.length;\n\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i);\n this.addPendingElement(element);\n } else {\n hierarchy.push(elements[i]);\n elements[i].setAsParent();\n\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n\n i += 1;\n }\n };\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i]);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i];\n break;\n }\n }\n }\n\n if (path.length === 0) {\n return element;\n }\n\n return element.getElementByPath(path);\n };\n\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager();\n this.globalData.fontManager.addChars(animData.chars);\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n this.globalData.imageLoader = this.animationItem.imagePreloader;\n this.globalData.audioController = this.animationItem.audioController;\n this.globalData.frameId = 0;\n this.globalData.frameRate = animData.fr;\n this.globalData.nm = animData.nm;\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h\n };\n };\n\n function TransformElement() {}\n\n TransformElement.prototype = {\n initTransform: function initTransform() {\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n o: 0\n },\n _matMdf: false,\n _opMdf: false,\n mat: new Matrix()\n };\n\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n } // TODO: check TYPE 11: Guided elements\n\n\n if (this.data.ty !== 11) {// this.createElements();\n }\n },\n renderTransform: function renderTransform() {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true;\n break;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n\n for (i = 0; i < len; i += 1) {\n mat = this.hierarchy[i].finalTransform.mProp.v.props;\n finalMat.transform(mat[0], mat[1], mat[2], mat[3], mat[4], mat[5], mat[6], mat[7], mat[8], mat[9], mat[10], mat[11], mat[12], mat[13], mat[14], mat[15]);\n }\n }\n }\n },\n globalToLocal: function globalToLocal(pt) {\n var transforms = [];\n transforms.push(this.finalTransform);\n var flag = true;\n var comp = this.comp;\n\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n\n var i;\n var len = transforms.length;\n var ptNew;\n\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\n\n return pt;\n },\n mHelper: new Matrix()\n };\n\n function MaskElement(data, element, globalData) {\n this.data = data;\n this.element = element;\n this.globalData = globalData;\n this.storedData = [];\n this.masksProperties = this.data.masksProperties || [];\n this.maskElement = null;\n var defs = this.globalData.defs;\n var i;\n var len = this.masksProperties ? this.masksProperties.length : 0;\n this.viewData = createSizedArray(len);\n this.solidPath = '';\n var path;\n var properties = this.masksProperties;\n var count = 0;\n var currentMasks = [];\n var j;\n var jLen;\n var layerId = createElementID();\n var rect;\n var expansor;\n var feMorph;\n var x;\n var maskType = 'clipPath';\n var maskRef = 'clip-path';\n\n for (i = 0; i < len; i += 1) {\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n maskType = 'mask';\n maskRef = 'mask';\n }\n\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect');\n rect.setAttribute('fill', '#ffffff');\n rect.setAttribute('width', this.element.comp.data.w || 0);\n rect.setAttribute('height', this.element.comp.data.h || 0);\n currentMasks.push(rect);\n } else {\n rect = null;\n }\n\n path = createNS('path');\n\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: ''\n };\n defs.appendChild(path);\n } else {\n count += 1;\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n path.setAttribute('clip-rule', 'nonzero');\n var filterID;\n\n if (properties[i].x.k !== 0) {\n maskType = 'mask';\n maskRef = 'mask';\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n filterID = createElementID();\n expansor = createNS('filter');\n expansor.setAttribute('id', filterID);\n feMorph = createNS('feMorphology');\n feMorph.setAttribute('operator', 'erode');\n feMorph.setAttribute('in', 'SourceGraphic');\n feMorph.setAttribute('radius', '0');\n expansor.appendChild(feMorph);\n defs.appendChild(expansor);\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n } else {\n feMorph = null;\n x = null;\n } // TODO move this to a factory or to a constructor\n\n\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0\n };\n\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\n\n var mask = createNS('mask');\n mask.setAttribute('mask-type', 'alpha');\n mask.setAttribute('id', layerId + '_' + count);\n mask.appendChild(path);\n defs.appendChild(mask);\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n currentMasks.length = 0;\n currentMasks.push(g);\n } else {\n currentMasks.push(path);\n }\n\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n } // TODO move this to a factory or to a constructor\n\n\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect\n };\n\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\n\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId);\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n defs.appendChild(this.maskElement);\n }\n\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\n\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n }\n\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode';\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n }\n\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate';\n this.storedData[i].elem.setAttribute('filter', null);\n }\n\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\n\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 ';\n path += ' h' + this.globalData.compSize.w;\n path += ' v' + this.globalData.compSize.h;\n path += ' h-' + this.globalData.compSize.w;\n path += ' v-' + this.globalData.compSize.h + ' ';\n return path;\n };\n\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n var i;\n var len;\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n\n\n if (pathNodes.c && len > 1) {\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n } // pathNodes.__renderedString = pathString;\n\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n\n viewData.lastPath = pathString;\n }\n };\n\n MaskElement.prototype.destroy = function () {\n this.element = null;\n this.globalData = null;\n this.maskElement = null;\n this.data = null;\n this.masksProperties = null;\n };\n\n var filtersFactory = function () {\n var ob = {};\n ob.createFilter = createFilter;\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox');\n fil.setAttribute('x', '0%');\n fil.setAttribute('y', '0%');\n fil.setAttribute('width', '100%');\n fil.setAttribute('height', '100%');\n }\n\n return fil;\n }\n\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\n return feColorMatrix;\n }\n\n return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true\n };\n\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n ob.maskType = false;\n }\n\n return ob;\n }();\n\n var registeredEffects = {};\n var idPrefix = 'filter_result_';\n\n function SVGEffects(elem) {\n var i;\n var source = 'SourceGraphic';\n var len = elem.data.ef ? elem.data.ef.length : 0;\n var filId = createElementID();\n var fil = filtersFactory.createFilter(filId, true);\n var count = 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n source = idPrefix + count;\n\n if (registeredEffects[type].countsAsEffect) {\n count += 1;\n }\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n function registerEffect(id, effect, countsAsEffect) {\n registeredEffects[id] = {\n effect: effect,\n countsAsEffect: countsAsEffect\n };\n }\n\n function SVGBaseElement() {}\n\n SVGBaseElement.prototype = {\n initRendererElement: function initRendererElement() {\n this.layerElement = createNS('g');\n },\n createContainerElements: function createContainerElements() {\n this.matteElement = createNS('g');\n this.transformedElement = this.layerElement;\n this.maskedElement = this.layerElement;\n this._sizeChanged = false;\n var layerElementParent = null; // If this layer acts as a mask for the following layer\n\n var filId;\n var fil;\n var gg;\n\n if (this.data.td) {\n if (this.data.td == 3 || this.data.td == 1) {\n // eslint-disable-line eqeqeq\n var masker = createNS('mask');\n masker.setAttribute('id', this.layerId);\n masker.setAttribute('mask-type', this.data.td == 3 ? 'luminance' : 'alpha'); // eslint-disable-line eqeqeq\n\n masker.appendChild(this.layerElement);\n layerElementParent = masker;\n this.globalData.defs.appendChild(masker); // This is only for IE and Edge when mask if of type alpha\n\n if (!featureSupport.maskType && this.data.td == 1) {\n // eslint-disable-line eqeqeq\n masker.setAttribute('mask-type', 'luminance');\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n this.globalData.defs.appendChild(fil);\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n masker.appendChild(gg);\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n } else if (this.data.td == 2) {\n // eslint-disable-line eqeqeq\n var maskGroup = createNS('mask');\n maskGroup.setAttribute('id', this.layerId);\n maskGroup.setAttribute('mask-type', 'alpha');\n var maskGrouper = createNS('g');\n maskGroup.appendChild(maskGrouper);\n filId = createElementID();\n fil = filtersFactory.createFilter(filId); /// /\n // This solution doesn't work on Android when meta tag with viewport attribute is set\n\n /* var feColorMatrix = createNS('feColorMatrix');\r\n feColorMatrix.setAttribute('type', 'matrix');\r\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\r\n feColorMatrix.setAttribute('values','1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 -1 1');\r\n fil.appendChild(feColorMatrix); */\n /// /\n\n var feCTr = createNS('feComponentTransfer');\n feCTr.setAttribute('in', 'SourceGraphic');\n fil.appendChild(feCTr);\n var feFunc = createNS('feFuncA');\n feFunc.setAttribute('type', 'table');\n feFunc.setAttribute('tableValues', '1.0 0.0');\n feCTr.appendChild(feFunc); /// /\n\n this.globalData.defs.appendChild(fil);\n var alphaRect = createNS('rect');\n alphaRect.setAttribute('width', this.comp.data.w);\n alphaRect.setAttribute('height', this.comp.data.h);\n alphaRect.setAttribute('x', '0');\n alphaRect.setAttribute('y', '0');\n alphaRect.setAttribute('fill', '#ffffff');\n alphaRect.setAttribute('opacity', '0');\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n maskGrouper.appendChild(alphaRect);\n maskGrouper.appendChild(this.layerElement);\n layerElementParent = maskGrouper;\n\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance');\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n maskGrouper.appendChild(alphaRect);\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n maskGrouper.appendChild(gg);\n }\n\n this.globalData.defs.appendChild(maskGroup);\n }\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement);\n layerElementParent = this.matteElement;\n this.baseElement = this.matteElement;\n } else {\n this.baseElement = this.layerElement;\n }\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath');\n var pt = createNS('path');\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n var clipId = createElementID();\n cp.setAttribute('id', clipId);\n cp.appendChild(pt);\n this.globalData.defs.appendChild(cp);\n\n if (this.checkMasks()) {\n var cpGroup = createNS('g');\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n cpGroup.appendChild(this.layerElement);\n this.transformedElement = cpGroup;\n\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement);\n } else {\n this.baseElement = this.transformedElement;\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n }\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n if (this.finalTransform._matMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.mat.to2dCSS());\n }\n\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.mProp.o.v);\n }\n },\n destroyBaseElement: function destroyBaseElement() {\n this.layerElement = null;\n this.matteElement = null;\n this.maskManager.destroy();\n },\n getBaseElement: function getBaseElement() {\n if (this.data.hd) {\n return null;\n }\n\n return this.baseElement;\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n this.renderableEffectsManager = new SVGEffects(this);\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n this._isParent = false;\n this.checkParenting();\n },\n\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\n checkParenting: function checkParenting() {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, []);\n }\n }\n };\n\n function RenderableDOMElement() {}\n\n (function () {\n var _prototype = {\n initElement: function initElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n },\n hide: function hide() {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'none';\n this.hidden = true;\n }\n },\n show: function show() {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'block';\n }\n\n this.hidden = false;\n this._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n renderInnerContent: function renderInnerContent() {},\n prepareFrame: function prepareFrame(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n this.checkTransparency();\n },\n destroy: function destroy() {\n this.innerElem = null;\n this.destroyBaseElement();\n }\n };\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n })();\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h\n };\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.innerElem = createNS('image');\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.innerElem);\n };\n\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect;\n };\n\n function ProcessedElement(element, position) {\n this.elem = element;\n this.pos = position;\n }\n\n function IShapeElement() {}\n\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data);\n }\n },\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n var i = 0;\n var len = this.shapeModifiers.length;\n\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n\n var i;\n var len = this.shapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n\n if (shouldBreakProcess) {\n break;\n }\n }\n },\n searchProcessedElement: function searchProcessedElement(elem) {\n var elements = this.processedElements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n\n i += 1;\n }\n\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n\n while (i) {\n i -= 1;\n\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\n }\n\n elements.push(new ProcessedElement(elem, pos));\n },\n prepareFrame: function prepareFrame(num) {\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n }\n };\n\n var lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square'\n };\n var lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel'\n };\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = [];\n this.styles = [];\n this.transformers = transformers;\n this.lStr = '';\n this.sh = shape;\n this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n var i = 0;\n var len = transformers.length;\n\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n\n i += 1;\n }\n }\n\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true;\n };\n\n function SVGStyleData(data, level) {\n this.data = data;\n this.type = data.ty;\n this.d = '';\n this.lvl = level;\n this._mdf = false;\n this.closed = data.hd === true;\n this.pElem = createNS('path');\n this.msElem = null;\n }\n\n SVGStyleData.prototype.reset = function () {\n this.d = '';\n this._mdf = false;\n };\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem;\n this.frameId = -1;\n this.dataProps = createSizedArray(data.length);\n this.renderer = renderer;\n this.k = false;\n this.dashStr = '';\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n this.dashoffset = createTypedArray('float32', 1);\n this.initDynamicPropertyContainer(container);\n var i;\n var len = data.length || 0;\n var prop;\n\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n this.k = prop.k || this.k;\n this.dataProps[i] = {\n n: data[i].n,\n p: prop\n };\n }\n\n if (!this.k) {\n this.getValue(true);\n }\n\n this._isAnimated = this.k;\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v;\n } else {\n this.dashArray[i] = this.dataProps[i].p.v;\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v;\n }\n }\n }\n };\n\n extendPrototype([DynamicPropertyContainer], DashProperty);\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n function GradientProperty(elem, data, container) {\n this.data = data;\n this.c = createTypedArray('uint8c', data.p * 4);\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n this.o = createTypedArray('float32', cLength);\n this._cmdf = false;\n this._omdf = false;\n this._collapsable = this.checkCollapsable();\n this._hasOpacity = cLength;\n this.initDynamicPropertyContainer(container);\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n this.k = this.prop.k;\n this.getValue(true);\n }\n\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n if (diff > 0.01) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n };\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n\n return true;\n };\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255;\n val = Math.round(this.prop.v[i] * mult);\n\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n\n if (this.o.length) {\n len = this.prop.v.length;\n\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1;\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val;\n this._omdf = !forceRender;\n }\n }\n }\n\n this._mdf = !forceRender;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.initGradientData(elem, data, styleOb);\n }\n\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n this.h = PropertyFactory.getProp(elem, data.h || {\n k: 0\n }, 0, 0.01, this);\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: 0\n }, 0, degToRads, this);\n this.g = new GradientProperty(elem, data.g, this);\n this.style = styleOb;\n this.stops = [];\n this.setGradientData(styleOb.pElem, data);\n this.setGradientOpacity(data, styleOb);\n this._isAnimated = !!this._isAnimated;\n };\n\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID();\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n gfill.setAttribute('id', gradientId);\n gfill.setAttribute('spreadMethod', 'pad');\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n var stops = [];\n var stop;\n var j;\n var jLen;\n jLen = data.g.p * 4;\n\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\n\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop;\n var j;\n var jLen;\n var mask = createNS('mask');\n var maskElement = createNS('path');\n mask.appendChild(maskElement);\n var opacityId = createElementID();\n var maskId = createElementID();\n mask.setAttribute('id', maskId);\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n opFill.setAttribute('id', opacityId);\n opFill.setAttribute('spreadMethod', 'pad');\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n var stops = this.stops;\n\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop');\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\n opFill.appendChild(stop);\n stops.push(stop);\n }\n\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n this.of = opFill;\n this.ms = mask;\n this.ost = stops;\n this.maskId = maskId;\n styleOb.msElem = maskElement;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.initGradientData(elem, data, styleOb);\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n function ShapeGroupData() {\n this.it = [];\n this.prevViewData = [];\n this.gr = createNS('g');\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container\n };\n this.elements = [];\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n }\n\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n if (length === 0) {\n return '';\n }\n\n var _o = pathNodes.o;\n var _i = pathNodes.i;\n var _v = pathNodes.v;\n var i;\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n\n for (i = 1; i < length; i += 1) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n }\n\n if (closed && length) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n shapeString += 'z';\n }\n\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n\n var _matrixHelper = new Matrix();\n\n var ob = {\n createRenderFunction: createRenderFunction\n };\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n\n case 'gf':\n return renderGradient;\n\n case 'gs':\n return renderGradientStroke;\n\n case 'st':\n return renderStroke;\n\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n\n case 'tr':\n return renderContentTransform;\n\n case 'no':\n return renderNoop;\n\n default:\n return null;\n }\n }\n\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n }\n\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n\n function renderNoop() {}\n\n function renderPath(styleData, itemData, isFirstFrame) {\n var j;\n var jLen;\n var pathStringTransformed;\n var redraw;\n var pathNodes;\n var l;\n var lLen = itemData.styles.length;\n var lvl = itemData.lvl;\n var paths;\n var mat;\n var props;\n var iterations;\n var k;\n\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset();\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (iterations > 0) {\n props = itemData.transformers[k].mProps.v.props;\n mat.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\n iterations -= 1;\n k -= 1;\n }\n }\n } else {\n mat = _identityMatrix;\n }\n\n paths = itemData.sh.paths;\n jLen = paths._length;\n\n if (redraw) {\n pathStringTransformed = '';\n\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\n\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf;\n var hasOpacity = itemData.g._hasOpacity;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\n }\n\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n gfill.setAttribute(attr1, pt1[0]);\n gfill.setAttribute(attr2, pt1[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n\n var stops;\n var i;\n var len;\n var stop;\n\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n stop.setAttribute('offset', cValues[i * 4] + '%');\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n }\n }\n\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\n }\n\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0]);\n gfill.setAttribute('y2', pt2[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0]);\n itemData.of.setAttribute('y2', pt2[1]);\n }\n }\n } else {\n var rad;\n\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n gfill.setAttribute('r', rad);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n }\n\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n gfill.setAttribute('fx', x);\n gfill.setAttribute('fy', y);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n } // gfill.setAttribute('fy','200');\n\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n }\n\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\n\n\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i;\n var len = this.shapes.length;\n var shape;\n var j;\n var jLen = this.stylesList.length;\n var style;\n var tempShapes = [];\n var areAnimated = false;\n\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\n };\n\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData;\n var styleOb = new SVGStyleData(data, level);\n var pathElement = styleOb.pElem;\n\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb);\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb);\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n elementData = new GradientConstructor(this, data, styleOb);\n this.globalData.defs.appendChild(elementData.gf);\n\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms);\n this.globalData.defs.appendChild(elementData.of);\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb);\n }\n\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n pathElement.setAttribute('fill-opacity', '0');\n\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n return elementData;\n };\n\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n\n i += 1;\n }\n\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n };\n\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n var ownTransformers = [].concat(transformers);\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var currentTransform;\n var modifier;\n var processedPos;\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level);\n } else {\n itemsData[i].style.closed = false;\n }\n\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr);\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container);\n }\n\n currentTransform = itemsData[i].transform;\n ownTransformers.push(currentTransform);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n }\n\n this.setElementStyles(itemsData[i]);\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n render = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n len = ownStyles.length;\n\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n\n this.renderShape();\n\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\n\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\n }\n };\n\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement();\n this.shapesData = null;\n this.itemsData = null;\n };\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o;\n this.sw = sw;\n this.sc = sc;\n this.fc = fc;\n this.m = m;\n this.p = p;\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true\n };\n }\n\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false;\n this._mdf.sw = false;\n this._mdf.sc = false;\n this._mdf.fc = false;\n this._mdf.m = false;\n this._mdf.p = false;\n var updated = false;\n\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\n\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n this.p = p;\n this._mdf.p = true;\n updated = true;\n }\n\n return updated;\n };\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame;\n this.pv = '';\n this.v = '';\n this.kf = false;\n this._isFirstFrame = true;\n this._mdf = false;\n this.data = data;\n this.elem = elem;\n this.comp = this.elem.comp;\n this.keysIndex = 0;\n this.canResize = false;\n this.minimumFontSize = 1;\n this.effectsSequence = [];\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false\n };\n this.copyData(this.currentData, this.data.d.k[0].s);\n\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s];\n }\n }\n\n return obj;\n };\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n\n return this.kf;\n };\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n }\n }\n\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\n\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k;\n var frameNum = this.elem.comp.renderedFrame;\n var i = 0;\n var len = textKeys.length;\n\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n\n i += 1;\n }\n\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n\n return this.data.d.k[this.keysIndex].s;\n };\n\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = [];\n var i = 0;\n var len = text.length;\n var charCode;\n var secondCharCode;\n var shouldCombine = false;\n\n while (i < len) {\n charCode = text.charCodeAt(i);\n\n if (FontManager.isCombinedCharacter(charCode)) {\n charactersArray[charactersArray.length - 1] += text.charAt(i);\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n if (shouldCombine || FontManager.isModifier(charCode, secondCharCode)) {\n charactersArray[charactersArray.length - 1] += text.substr(i, 2);\n shouldCombine = false;\n } else {\n charactersArray.push(text.substr(i, 2));\n }\n\n i += 1;\n } else {\n charactersArray.push(text.charAt(i));\n }\n } else if (charCode > 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n\n if (FontManager.isZeroWidthJoiner(charCode, secondCharCode)) {\n shouldCombine = true;\n charactersArray[charactersArray.length - 1] += text.substr(i, 2);\n i += 1;\n } else {\n charactersArray.push(text.charAt(i));\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n charactersArray[charactersArray.length - 1] += text.charAt(i);\n shouldCombine = true;\n } else {\n charactersArray.push(text.charAt(i));\n }\n\n i += 1;\n }\n\n return charactersArray;\n };\n\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true;\n var fontManager = this.elem.globalData.fontManager;\n var data = this.data;\n var letters = [];\n var i;\n var len;\n var newLineFlag;\n var index = 0;\n var val;\n var anchorGrouping = data.m.g;\n var currentSize = 0;\n var currentPos = 0;\n var currentLine = 0;\n var lineWidths = [];\n var lineWidth = 0;\n var maxLineWidth = 0;\n var j;\n var jLen;\n var fontData = fontManager.getFontByName(documentData.f);\n var charData;\n var cLength = 0;\n var fontProps = getFontProperties(fontData);\n documentData.fWeight = fontProps.weight;\n documentData.fStyle = fontProps.style;\n documentData.finalSize = documentData.s;\n documentData.finalText = this.buildFinalText(documentData.t);\n len = documentData.finalText.length;\n documentData.finalLineHeight = documentData.lh;\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var charCode;\n\n if (documentData.sz) {\n var flag = true;\n var boxWidth = documentData.sz[0];\n var boxHeight = documentData.sz[1];\n var currentHeight;\n var finalText;\n\n while (flag) {\n finalText = this.buildFinalText(documentData.t);\n currentHeight = 0;\n lineWidth = 0;\n len = finalText.length;\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var lastSpaceIndex = -1;\n\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n\n if (finalText[i] === ' ') {\n lastSpaceIndex = i;\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0;\n newLineFlag = true;\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n }\n\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1;\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n } else {\n documentData.finalText = finalText;\n len = documentData.finalText.length;\n flag = false;\n }\n }\n }\n\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0;\n lineWidths.push(lineWidth);\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidth = -2 * trackingOffset;\n val = '';\n newLineFlag = true;\n currentLine += 1;\n } else {\n val = currentChar;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n } //\n\n\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset;\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n uncollapsedSpaces = 0;\n }\n\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0\n });\n\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n\n default:\n documentData.justifyOffset = 0;\n }\n }\n\n documentData.lineWidths = lineWidths;\n var animators = data.a;\n var animatorData;\n var letterData;\n jLen = animators.length;\n var based;\n var ind;\n var indexes = [];\n\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n\n ind = 0;\n based = animatorData.s.b;\n\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n\n if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind);\n }\n\n ind += 1;\n }\n }\n\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j];\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n }\n\n letterData.anIndexes[j] = newInd;\n }\n }\n }\n\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n documentData.ls = documentData.ls || 0;\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n };\n\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index;\n var dData = this.copyData({}, this.data.d.k[index].s);\n dData = this.copyData(dData, newData);\n this.data.d.k[index].s = dData;\n this.recalculate(index);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s;\n dData.__complete = false;\n this.keysIndex = 0;\n this._isFirstFrame = true;\n this.getValue(dData);\n };\n\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n var TextSelectorProp = function () {\n var max = Math.max;\n var min = Math.min;\n var floor = Math.floor;\n\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1;\n this.k = false;\n this.data = data;\n this.elem = elem;\n this.comp = elem.comp;\n this.finalS = 0;\n this.finalE = 0;\n this.initDynamicPropertyContainer(elem);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: 0\n }, 0, 0, this);\n\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n } else {\n this.e = {\n v: 100\n };\n }\n\n this.o = PropertyFactory.getProp(elem, data.o || {\n k: 0\n }, 0, 0, this);\n this.xe = PropertyFactory.getProp(elem, data.xe || {\n k: 0\n }, 0, 0, this);\n this.ne = PropertyFactory.getProp(elem, data.ne || {\n k: 0\n }, 0, 0, this);\n this.sm = PropertyFactory.getProp(elem, data.sm || {\n k: 100\n }, 0, 0, this);\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\n }\n\n TextSelectorPropFactory.prototype = {\n getMult: function getMult(ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue();\n }\n\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\n\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0;\n } else {\n y2 = 1.0 + this.xe.v / 100.0;\n }\n\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n var mult = 0;\n var s = this.finalS;\n var e = this.finalE;\n var type = this.data.sh;\n\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1;\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 4) {\n if (e === s) {\n mult = 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\n }\n\n mult = easer(mult);\n } else if (type === 5) {\n if (e === s) {\n mult = 0;\n } else {\n var tot = e - s;\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\n ind = min(max(0, ind + 0.5 - s), e - s);\n var x = -tot / 2 + ind;\n var a = tot / 2;\n mult = Math.sqrt(1 - x * x / (a * a));\n }\n\n mult = easer(mult);\n } else if (type === 6) {\n if (e === s) {\n mult = 0;\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s);\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n }\n\n mult = easer(mult);\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1));\n } else {\n mult = max(0, min(e - ind, 1));\n }\n }\n\n mult = easer(mult);\n } // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n\n\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n\n var threshold = 0.5 - smoothness * 0.5;\n\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n\n if (mult > 1) {\n mult = 1;\n }\n }\n }\n\n return mult * this.a.v;\n },\n getValue: function getValue(newCharsFlag) {\n this.iterateDynamicProperties();\n this._mdf = newCharsFlag || this._mdf;\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\n\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n var o = this.o.v / divisor;\n var s = this.s.v / divisor + o;\n var e = this.e.v / divisor + o;\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\n\n return {\n getTextSelectorProp: getTextSelectorProp\n };\n }();\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = {\n propType: false\n };\n var getProp = PropertyFactory.getProp;\n var textAnimatorAnimatables = animatorProps.a;\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n };\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n this.s.t = animatorProps.s.t;\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true;\n this._hasMaskedPath = false;\n this._frameId = -1;\n this._textData = textData;\n this._renderType = renderType;\n this._elem = elem;\n this._animatorsData = createSizedArray(this._textData.a.length);\n this._pathData = {};\n this._moreOptions = {\n alignment: {}\n };\n this.renderedLetters = [];\n this.lettersChangedFlag = false;\n this.initDynamicPropertyContainer(elem);\n }\n\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i];\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n }\n\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n };\n this._hasMaskedPath = true;\n } else {\n this._hasMaskedPath = false;\n }\n\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\n\n this._isFirstFrame = false;\n var alignment = this._moreOptions.alignment.v;\n var animators = this._animatorsData;\n var textData = this._textData;\n var matrixHelper = this.mHelper;\n var renderType = this._renderType;\n var renderedLettersCount = this.renderedLetters.length;\n var xPos;\n var yPos;\n var i;\n var len;\n var letters = documentData.l;\n var pathInfo;\n var currentLength;\n var currentPoint;\n var segmentLength;\n var flag;\n var pointInd;\n var segmentInd;\n var prevPoint;\n var points;\n var segments;\n var partialLength;\n var totalLength;\n var perc;\n var tanAngle;\n var mask;\n\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n\n if (this._pathData.r.v) {\n paths = paths.reverse();\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n i = len;\n\n if (mask.v.c) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n this._pathData.pi = pathInfo;\n }\n\n pathInfo = this._pathData.pi;\n currentLength = this._pathData.f.v;\n segmentInd = 0;\n pointInd = 1;\n segmentLength = 0;\n flag = true;\n segments = pathInfo.segments;\n\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n\n len = letters.length;\n xPos = 0;\n yPos = 0;\n var yOff = documentData.finalSize * 1.2 * 0.714;\n var firstLine = true;\n var animatorProps;\n var animatorSelector;\n var j;\n var jLen;\n var letterValue;\n jLen = animators.length;\n var mult;\n var ind = -1;\n var offf;\n var xPathPos;\n var yPathPos;\n var initPathPos = currentLength;\n var initSegmentInd = segmentInd;\n var initPointInd = pointInd;\n var currentLine = -1;\n var elemOpacity;\n var sc;\n var sw;\n var fc;\n var k;\n var letterSw;\n var letterSc;\n var letterFc;\n var letterM = '';\n var letterP = this.defaultPropsArray;\n var letterO; //\n\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0;\n var animatorFirstCharOffset = 0;\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n var lastIndex = 0;\n var isNewLine = true;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n }\n }\n }\n\n isNewLine = false;\n }\n }\n\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n } //\n\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset();\n elemOpacity = 1;\n\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd;\n pointInd = initPointInd;\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n segmentLength = 0;\n }\n\n letterM = '';\n letterFc = '';\n letterSw = '';\n letterO = '';\n letterP = this.defaultPropsArray;\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\n break;\n\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n\n default:\n break;\n }\n\n currentLine = letters[i].line;\n }\n\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\n }\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n\n flag = true; // Force alignment only works with a single line for now\n\n if (this._pathData.a.v) {\n currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n currentLength += this._pathData.f.v;\n }\n\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n flag = false;\n } else if (points) {\n segmentLength += currentPoint.partialLength;\n pointInd += 1;\n\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0;\n segmentInd = 0;\n points = segments[segmentInd].points;\n } else {\n segmentLength -= currentPoint.partialLength;\n points = null;\n }\n } else {\n points = segments[segmentInd].points;\n }\n }\n\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n }\n }\n\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n } else {\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0); // Grouping alignment\n\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0];\n } else {\n currentLength += animatorProps.t.v * mult;\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0];\n } else {\n xPos += animatorProps.t.v * mult;\n }\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\n\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n } else {\n sc = [0, 0, 0];\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n } else {\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n }\n }\n\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\n }\n }\n\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult);\n }\n }\n\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult);\n }\n }\n\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n }\n }\n\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0];\n } else {\n sw += animatorProps.sw.v * mult;\n }\n }\n\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n }\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n }\n }\n }\n\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n }\n }\n\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n }\n }\n\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n }\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n } else if (mult.length) {\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n } else {\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\n\n if (documentData.strokeColorAnim) {\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n }\n\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\n\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2;\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0);\n\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(offf, 0, 0);\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n }\n\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS();\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS();\n } else {\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n }\n\n letterO = elemOpacity;\n }\n\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n this.renderedLetters.push(letterValue);\n renderedLettersCount += 1;\n this.lettersChangedFlag = true;\n } else {\n letterValue = this.renderedLetters[i];\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n }\n }\n };\n\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true;\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n this.textAnimator.searchProperties(this.dynamicProperties);\n };\n\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText();\n this.textProperty._isFirstFrame = false;\n this.textProperty._mdf = false;\n }\n };\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k;\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n }\n }\n\n return shapeStr;\n };\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\n\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n matrixHelper.translate(0, -documentData.ls, 0);\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(xPos, yPos, 0);\n };\n\n ITextElement.prototype.buildColor = function (colorData) {\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n };\n\n ITextElement.prototype.emptyProp = new LetterProps();\n\n ITextElement.prototype.destroy = function () {};\n\n var emptyShapeData = {\n shapes: []\n };\n\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent);\n currentTextContent = '';\n } else {\n currentTextContent += textArray[i];\n }\n\n i += 1;\n }\n\n textContents.push(currentTextContent);\n return textContents;\n };\n\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0];\n\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n\n return data;\n };\n\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this);\n var i;\n var len;\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n }\n\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass);\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily);\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n this.layerElement.setAttribute('font-style', fStyle);\n this.layerElement.setAttribute('font-weight', fWeight);\n }\n\n this.layerElement.setAttribute('aria-label', documentData.t);\n var letters = documentData.l || [];\n var usesGlyphs = !!this.globalData.fontManager.chars;\n len = letters.length;\n var tSpan;\n var matrixHelper = this.mHelper;\n var shapeStr = '';\n var singleShape = this.data.singleShape;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n\n case 2:\n justify = 'middle';\n break;\n\n default:\n justify = 'start';\n break;\n }\n\n tElement.setAttribute('text-anchor', justify);\n tElement.setAttribute('letter-spacing', trackingOffset);\n var textContent = this.buildTextContents(documentData.finalText);\n len = textContent.length;\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan');\n tSpan.textContent = textContent[i];\n tSpan.setAttribute('x', 0);\n tSpan.setAttribute('y', yPos);\n tSpan.style.display = 'inherit';\n tElement.appendChild(tSpan);\n\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null\n };\n }\n\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt');\n tSpan.setAttribute('stroke-linejoin', 'round');\n tSpan.setAttribute('stroke-miterlimit', '4');\n this.textSpans[i].span = tSpan;\n\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n\n tSpan.style.display = 'inherit';\n }\n\n matrixHelper.reset();\n\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n xPos += trackingOffset;\n }\n\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var glyphElement; // t === 1 means the character has been replaced with an animated shaped\n\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\n\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph;\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n glyph.destroy();\n }\n\n this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n }\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n }\n\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n } //\n\n }\n\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n\n this._sizeChanged = true;\n };\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n\n if (this._sizeChanged) {\n this._sizeChanged = false;\n var textBox = this.layerElement.getBBox();\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height\n };\n }\n\n return this.bbox;\n };\n\n SVGTextLottieElement.prototype.getValue = function () {\n var i;\n var len = this.textSpans.length;\n var glyphElement;\n this.renderedFrame = this.comp.renderedFrame;\n\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true;\n var i;\n var len;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var glyphElement;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n textSpan = this.textSpans[i].span;\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc);\n }\n }\n }\n }\n }\n };\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([IImageElement], ISolidElement);\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.layerElement.appendChild(rect);\n };\n\n function NullElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initFrame();\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n }\n\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n NullElement.prototype.renderFrame = function () {};\n\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n\n NullElement.prototype.destroy = function () {};\n\n NullElement.prototype.sourceRectAtTime = function () {};\n\n NullElement.prototype.hide = function () {};\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase);\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n }\n\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w);\n this.svgElement.setAttribute('height', animData.h);\n this.svgElement.style.width = '100%';\n this.svgElement.style.height = '100%';\n this.svgElement.style.transform = 'translate3d(0,0,0)';\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n }\n\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\n var defs = this.globalData.defs;\n this.setupGlobalData(animData, defs);\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.data = animData;\n var maskElement = createNS('clipPath');\n var rect = createNS('rect');\n rect.setAttribute('width', animData.w);\n rect.setAttribute('height', animData.h);\n rect.setAttribute('x', 0);\n rect.setAttribute('y', 0);\n var maskId = createElementID();\n maskElement.setAttribute('id', maskId);\n maskElement.appendChild(rect);\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n defs.appendChild(maskElement);\n this.layers = animData.layers;\n this.elements = createSizedArray(animData.layers.length);\n };\n\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n SVGRendererBase.prototype.updateContainerSize = function () {};\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n\n element.initExpressions();\n }\n\n this.appendElementInPos(element, pos);\n\n if (this.layers[pos].tt) {\n if (!this.elements[pos - 1] || this.elements[pos - 1] === true) {\n this.buildItem(pos - 1);\n this.addPendingElement(element);\n } else {\n element.setMatte(elements[pos - 1].layerId);\n }\n }\n };\n\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n\n while (i < len) {\n if (this.elements[i] === element) {\n element.setMatte(this.elements[i - 1].layerId);\n break;\n }\n\n i += 1;\n }\n }\n }\n };\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n } // console.log('-------');\n // console.log('FRAME ',num);\n\n\n this.globalData.frameNum = num;\n this.globalData.frameId += 1;\n this.globalData.projectInterface.currentFrame = num;\n this.globalData._mdf = false;\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n }\n };\n\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n\n if (!newElement) {\n return;\n }\n\n var i = 0;\n var nextElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement();\n }\n\n i += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initRenderable();\n this.initHierarchy();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n\n this.hide();\n };\n /* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n }; */\n\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n\n var i;\n var len = this.elements.length;\n\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n } // This iteration needs to be backwards because of how expressions connect between each other\n\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n };\n\n ICompElement.prototype.destroy = function () {\n this.destroyElements();\n this.destroyBaseElement();\n };\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = true;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.svgElement = createNS('svg');\n var ariaLabel = '';\n\n if (config && config.title) {\n var titleElement = createNS('title');\n var titleId = createElementID();\n titleElement.setAttribute('id', titleId);\n titleElement.textContent = config.title;\n this.svgElement.appendChild(titleElement);\n ariaLabel += titleId;\n }\n\n if (config && config.description) {\n var descElement = createNS('desc');\n var descId = createElementID();\n descElement.setAttribute('id', descId);\n descElement.textContent = config.description;\n this.svgElement.appendChild(descElement);\n ariaLabel += ' ' + descId;\n }\n\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\n\n var defs = createNS('defs');\n this.svgElement.appendChild(defs);\n var maskElement = createNS('g');\n this.svgElement.appendChild(maskElement);\n this.layerElement = maskElement;\n this.renderConfig = {\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n progressiveLoad: config && config.progressiveLoad || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: config && config.viewBoxOnly || false,\n viewBoxSize: config && config.viewBoxSize || false,\n className: config && config.className || '',\n id: config && config.id || '',\n focusable: config && config.focusable,\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '100%',\n height: config && config.filterSize && config.filterSize.height || '100%',\n x: config && config.filterSize && config.filterSize.x || '0%',\n y: config && config.filterSize && config.filterSize.y || '0%'\n },\n width: config && config.width,\n height: config && config.height\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig\n };\n this.elements = [];\n this.pendingElements = [];\n this.destroyed = false;\n this.rendererType = 'svg';\n }\n\n extendPrototype([SVGRendererBase], SVGRenderer);\n\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function CVContextData() {\n this.saved = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n this.cO = 1;\n var i;\n var len = 15;\n this.savedOp = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n this.saved[i] = createTypedArray('float32', 16);\n }\n\n this._length = len;\n }\n\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var currentSavedOp = this.savedOp;\n this.savedOp = createTypedArray('float32', newLength);\n this.savedOp.set(currentSavedOp);\n var i = 0;\n\n for (i = this._length; i < newLength; i += 1) {\n this.saved[i] = createTypedArray('float32', 16);\n }\n\n this._length = newLength;\n };\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.cO = 1;\n };\n\n function ShapeTransformManager() {\n this.sequences = {};\n this.sequenceList = [];\n this.transform_key_count = 0;\n }\n\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n\n var sequence = this.sequences[key];\n\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false\n };\n this.sequences[key] = sequence;\n this.sequenceList.push(sequence);\n }\n\n return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n\n i += 1;\n }\n\n if (_mdf) {\n var props;\n sequence.finalTransform.reset();\n\n for (i = len - 1; i >= 0; i -= 1) {\n props = sequence.transforms[i].transform.mProps.v.props;\n sequence.finalTransform.transform(props[0], props[1], props[2], props[3], props[4], props[5], props[6], props[7], props[8], props[9], props[10], props[11], props[12], props[13], props[14], props[15]);\n }\n }\n\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame);\n }\n },\n getNewKey: function getNewKey() {\n this.transform_key_count += 1;\n return '_' + this.transform_key_count;\n }\n };\n\n function CVEffects() {}\n\n CVEffects.prototype.renderFrame = function () {};\n\n function CVMaskElement(data, element) {\n this.data = data;\n this.element = element;\n this.masksProperties = this.data.masksProperties || [];\n this.viewData = createSizedArray(this.masksProperties.length);\n var i;\n var len = this.masksProperties.length;\n var hasMasks = false;\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n\n this.hasMasks = hasMasks;\n\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\n\n var transform = this.element.finalTransform.mat;\n var ctx = this.element.canvasContext;\n var i;\n var len = this.masksProperties.length;\n var pt;\n var pts;\n var data;\n ctx.beginPath();\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0);\n ctx.lineTo(this.element.globalData.compSize.w, 0);\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n ctx.lineTo(0, this.element.globalData.compSize.h);\n ctx.lineTo(0, 0);\n }\n\n data = this.viewData[i].v;\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n ctx.moveTo(pt[0], pt[1]);\n var j;\n var jLen = data._length;\n\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n }\n\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n\n CVBaseElement.prototype = {\n createElements: function createElements() {},\n initRendererElement: function initRendererElement() {},\n createContainerElements: function createContainerElements() {\n this.canvasContext = this.globalData.canvasContext;\n this.renderableEffectsManager = new CVEffects(this);\n },\n createContent: function createContent() {},\n setBlendMode: function setBlendMode() {\n var globalData = this.globalData;\n\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm;\n var blendModeValue = getBlendMode(this.data.bm);\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new CVMaskElement(this.data, this);\n },\n hideElement: function hideElement() {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true;\n }\n },\n showElement: function showElement() {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false;\n this._isFirstFrame = true;\n this.maskManager._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n if (this.hidden || this.data.hd) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.setBlendMode();\n var forceRealStack = this.data.ty === 0;\n this.globalData.renderer.save(forceRealStack);\n this.globalData.renderer.ctxTransform(this.finalTransform.mat.props);\n this.globalData.renderer.ctxOpacity(this.finalTransform.mProp.o.v);\n this.renderInnerContent();\n this.globalData.renderer.restore(forceRealStack);\n\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.canvasContext = null;\n this.data = null;\n this.globalData = null;\n this.maskManager.destroy();\n },\n mHelper: new Matrix()\n };\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = [];\n this.tr = [0, 0, 0, 0, 0, 0];\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: []\n };\n this.styledShapes.push(styledShape);\n styles[i].elements.push(styledShape);\n }\n }\n }\n\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = [];\n this.shapesData = data.shapes;\n this.stylesList = [];\n this.itemsData = [];\n this.prevViewData = [];\n this.shapeModifiers = [];\n this.processedElements = [];\n this.transformsManager = new ShapeTransformManager();\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n CVShapeElement.prototype.transformHelper = {\n opacity: 1,\n _opMdf: false\n };\n CVShapeElement.prototype.dashResetter = [];\n\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\n\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true\n };\n var elementData = {};\n\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\n if (!elementData.c.k) {\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n elementData.h = PropertyFactory.getProp(this, data.h || {\n k: 0\n }, 0, 0.01, this);\n elementData.a = PropertyFactory.getProp(this, data.a || {\n k: 0\n }, 0, degToRads, this);\n elementData.g = new GradientProperty(this, data.g, this);\n }\n\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray;\n styleElem[\"do\"] = elementData.d.dashoffset[0];\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n }\n\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n }\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n return elementData;\n };\n\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform);\n }\n }\n };\n\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var processedPos;\n var modifier;\n var currentTransform;\n var ownTransforms = [].concat(transforms);\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n } else {\n itemsData[i].style.closed = false;\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i]);\n itemsData[i] = currentTransform;\n }\n\n ownTransforms.push(itemsData[i]);\n this.addTransformToStyleList(itemsData[i]);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i]);\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n shouldRender = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1;\n this.transformHelper._opMdf = false;\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n };\n\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity;\n groupTransform.opacity *= groupTransform.op.v;\n groupTransform._opMdf = true;\n }\n };\n\n CVShapeElement.prototype.drawLayer = function () {\n var i;\n var len = this.stylesList.length;\n var j;\n var jLen;\n var k;\n var kLen;\n var elems;\n var nodes;\n var renderer = this.globalData.renderer;\n var ctx = this.globalData.canvasContext;\n var type;\n var currentStyle;\n\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type; // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n renderer.save();\n elems = currentStyle.elements;\n\n if (type === 'st' || type === 'gs') {\n ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n ctx.lineWidth = currentStyle.wi;\n ctx.lineCap = currentStyle.lc;\n ctx.lineJoin = currentStyle.lj;\n ctx.miterLimit = currentStyle.ml || 0;\n } else {\n ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n\n renderer.ctxOpacity(currentStyle.coOp);\n\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n } else {\n ctx.closePath();\n }\n }\n\n if (type === 'st' || type === 'gs') {\n ctx.stroke();\n\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n\n if (type !== 'st' && type !== 'gs') {\n ctx.fill(currentStyle.r);\n }\n\n renderer.restore();\n }\n }\n };\n\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i;\n var len = items.length - 1;\n var groupTransform;\n groupTransform = parentTransform;\n\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform;\n this.renderShapeTransform(parentTransform, groupTransform);\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i]);\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it);\n } else if (items[i].ty === 'tm') {//\n }\n }\n\n if (isMain) {\n this.drawLayer();\n }\n };\n\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes;\n var paths = shape.paths;\n var i;\n var len;\n var j;\n var jLen = paths._length;\n shapeNodes.length = 0;\n var groupTransformMat = styledShape.transforms.finalTransform;\n\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\n }\n\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n });\n shapeNodes.push({\n t: 'z'\n });\n }\n }\n }\n\n styledShape.trNodes = shapeNodes;\n }\n };\n\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i;\n var len = itemData.styledShapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n var ctx = this.globalData.canvasContext;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n }\n\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1];\n }\n\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n\n styleElem.grd = grd;\n }\n\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\n };\n\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null;\n this.globalData = null;\n this.canvasContext = null;\n this.stylesList.length = 0;\n this.itemsData.length = 0;\n };\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.yOffset = 0;\n this.fillColorAnim = false;\n this.strokeColorAnim = false;\n this.strokeWidthAnim = false;\n this.stroke = false;\n this.fill = false;\n this.justifyOffset = 0;\n this.currentRender = null;\n this.renderType = 'canvas';\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: ''\n };\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var hasFill = false;\n\n if (documentData.fc) {\n hasFill = true;\n this.values.fill = this.buildColor(documentData.fc);\n } else {\n this.values.fill = 'rgba(0,0,0,0)';\n }\n\n this.fill = hasFill;\n var hasStroke = false;\n\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n var i;\n var len;\n var letters = documentData.l;\n var matrixHelper = this.mHelper;\n this.stroke = hasStroke;\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\n\n var charData;\n var shapeData;\n var k;\n var kLen;\n var shapes;\n var j;\n var jLen;\n var pathNodes;\n var commands;\n var pathArr;\n var singleShape = this.data.singleShape;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n shapeData = charData && charData.data || {};\n matrixHelper.reset();\n\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length;\n pathNodes = shapes[j].ks.k;\n pathArr = [];\n\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n commands[commandsCounter] = pathArr;\n commandsCounter += 1;\n }\n }\n\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n\n cnt += 1;\n }\n };\n\n CVTextElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.font = this.values.fValue;\n ctx.lineCap = 'butt';\n ctx.lineJoin = 'miter';\n ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\n\n var i;\n var len;\n var j;\n var jLen;\n var k;\n var kLen;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var lastFill = null;\n var lastStroke = null;\n var lastStrokeW = null;\n var commands;\n var pathArr;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n\n if (renderedLetter) {\n this.globalData.renderer.save();\n this.globalData.renderer.ctxTransform(renderedLetter.p);\n this.globalData.renderer.ctxOpacity(renderedLetter.o);\n }\n\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n lastFill = renderedLetter.fc;\n ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n ctx.fillStyle = this.values.fill;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n this.globalData.canvasContext.fill(); /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n ctx.lineWidth = this.values.sWidth;\n }\n\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n ctx.strokeStyle = this.values.stroke;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n this.globalData.canvasContext.stroke(); /// ctx.strokeText(letters[i].val,0,0);\n }\n\n if (renderedLetter) {\n this.globalData.renderer.restore();\n }\n }\n }\n };\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.img = globalData.imageLoader.getAsset(this.assetData);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas');\n canvas.width = this.assetData.w;\n canvas.height = this.assetData.h;\n var ctx = canvas.getContext('2d');\n var imgW = this.img.width;\n var imgH = this.img.height;\n var imgRel = imgW / imgH;\n var canvasRel = this.assetData.w / this.assetData.h;\n var widthCrop;\n var heightCrop;\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n heightCrop = imgH;\n widthCrop = heightCrop * canvasRel;\n } else {\n widthCrop = imgW;\n heightCrop = widthCrop / canvasRel;\n }\n\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n this.img = canvas;\n }\n };\n\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\n\n CVImageElement.prototype.destroy = function () {\n this.img = null;\n };\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVSolidElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.fillStyle = this.data.sc;\n ctx.fillRect(0, 0, this.data.sw, this.data.sh); //\n };\n\n function CanvasRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || ''\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n }\n\n extendPrototype([BaseRenderer], CanvasRendererBase);\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return;\n }\n\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n return;\n }\n\n this.transformMat.cloneFromProps(props);\n var cProps = this.contextData.cTr.props;\n this.transformMat.transform(cProps[0], cProps[1], cProps[2], cProps[3], cProps[4], cProps[5], cProps[6], cProps[7], cProps[8], cProps[9], cProps[10], cProps[11], cProps[12], cProps[13], cProps[14], cProps[15]); // this.contextData.cTr.transform(props[0],props[1],props[2],props[3],props[4],props[5],props[6],props[7],props[8],props[9],props[10],props[11],props[12],props[13],props[14],props[15]);\n\n this.contextData.cTr.cloneFromProps(this.transformMat.props);\n var trProps = this.contextData.cTr.props;\n this.canvasContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n /* if(op === 1){\r\n return;\r\n } */\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n this.globalData.currentGlobalAlpha = this.contextData.cO;\n return;\n }\n\n this.contextData.cO *= op < 0 ? 0 : op;\n\n if (this.globalData.currentGlobalAlpha !== this.contextData.cO) {\n this.canvasContext.globalAlpha = this.contextData.cO;\n this.globalData.currentGlobalAlpha = this.contextData.cO;\n }\n };\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n this.contextData.reset();\n };\n\n CanvasRendererBase.prototype.save = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.save();\n return;\n }\n\n if (actionFlag) {\n this.canvasContext.save();\n }\n\n var props = this.contextData.cTr.props;\n\n if (this.contextData._length <= this.contextData.cArrPos) {\n this.contextData.duplicate();\n }\n\n var i;\n var arr = this.contextData.saved[this.contextData.cArrPos];\n\n for (i = 0; i < 16; i += 1) {\n arr[i] = props[i];\n }\n\n this.contextData.savedOp[this.contextData.cArrPos] = this.contextData.cO;\n this.contextData.cArrPos += 1;\n };\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n if (actionFlag) {\n this.canvasContext.restore();\n this.globalData.blendMode = 'source-over';\n }\n\n this.contextData.cArrPos -= 1;\n var popped = this.contextData.saved[this.contextData.cArrPos];\n var i;\n var arr = this.contextData.cTr.props;\n\n for (i = 0; i < 16; i += 1) {\n arr[i] = popped[i];\n }\n\n this.canvasContext.setTransform(popped[0], popped[1], popped[4], popped[5], popped[12], popped[13]);\n popped = this.contextData.savedOp[this.contextData.cArrPos];\n this.contextData.cO = popped;\n\n if (this.globalData.currentGlobalAlpha !== popped) {\n this.canvasContext.globalAlpha = popped;\n this.globalData.currentGlobalAlpha = popped;\n }\n };\n\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas');\n var containerStyle = this.animationItem.container.style;\n containerStyle.width = '100%';\n containerStyle.height = '100%';\n var origin = '0px 0px 0px';\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n containerStyle['-webkit-transform'] = origin;\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n this.animationItem.wrapper.appendChild(this.animationItem.container);\n this.canvasContext = this.animationItem.container.getContext('2d');\n\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\n }\n } else {\n this.canvasContext = this.renderConfig.context;\n }\n\n this.data = animData;\n this.layers = animData.layers;\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0\n };\n this.setupGlobalData(animData, document.body);\n this.globalData.canvasContext = this.canvasContext;\n this.globalData.renderer = this;\n this.globalData.isDashed = false;\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.globalData.transformCanvas = this.transformCanvas;\n this.elements = createSizedArray(animData.layers.length);\n this.updateContainerSize();\n };\n\n CanvasRendererBase.prototype.updateContainerSize = function () {\n this.reset();\n var elementWidth;\n var elementHeight;\n\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth;\n elementHeight = this.animationItem.wrapper.offsetHeight;\n this.animationItem.container.setAttribute('width', elementWidth * this.renderConfig.dpr);\n this.animationItem.container.setAttribute('height', elementHeight * this.renderConfig.dpr);\n } else {\n elementWidth = this.canvasContext.canvas.width * this.renderConfig.dpr;\n elementHeight = this.canvasContext.canvas.height * this.renderConfig.dpr;\n }\n\n var elementRel;\n var animationRel;\n\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n var par = this.renderConfig.preserveAspectRatio.split(' ');\n var fillType = par[1] || 'meet';\n var pos = par[0] || 'xMidYMid';\n var xPos = pos.substr(0, 4);\n var yPos = pos.substr(4);\n elementRel = elementWidth / elementHeight;\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\n\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n }\n\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.tx = 0;\n }\n\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.ty = 0;\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr;\n this.transformCanvas.sy = this.renderConfig.dpr;\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n }\n\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n /* var i, len = this.elements.length;\r\n for(i=0;i<len;i+=1){\r\n if(this.elements[i] && this.elements[i].data.ty === 0){\r\n this.elements[i].resize(this.globalData.transformCanvas);\r\n }\r\n } */\n\n this.ctxTransform(this.transformCanvas.props);\n this.canvasContext.beginPath();\n this.canvasContext.rect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n this.canvasContext.closePath();\n this.canvasContext.clip();\n this.renderFrame(this.renderedFrame, true);\n };\n\n CanvasRendererBase.prototype.destroy = function () {\n if (this.renderConfig.clearCanvas && this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\n\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n return;\n }\n\n this.renderedFrame = num;\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n this.globalData.frameId += 1;\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n this.globalData.projectInterface.currentFrame = num; // console.log('--------');\n // console.log('NEW: ',num);\n\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n } else {\n this.save();\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n var element = this.createItem(this.layers[pos], this, this.globalData);\n elements[pos] = element;\n element.initExpressions();\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\n };\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\n\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block';\n };\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false;\n this.layers = data.layers;\n this.pendingElements = [];\n this.elements = createSizedArray(this.layers.length);\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.data.w, 0);\n ctx.lineTo(this.data.w, this.data.h);\n ctx.lineTo(0, this.data.h);\n ctx.lineTo(0, 0);\n ctx.clip();\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.layers = null;\n this.elements = null;\n };\n\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || ''\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n }\n\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n\n if (this.data.hasMask) {\n this.svgElement = createNS('svg');\n this.layerElement = createNS('g');\n this.maskedElement = this.layerElement;\n this.svgElement.appendChild(this.layerElement);\n this.baseElement.appendChild(this.svgElement);\n } else {\n this.layerElement = this.baseElement;\n }\n\n styleDiv(this.baseElement);\n },\n createContainerElements: function createContainerElements() {\n this.renderableEffectsManager = new CVEffects(this);\n this.transformedElement = this.baseElement;\n this.maskedElement = this.layerElement;\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\n\n if (this.finalTransform._opMdf) {\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n\n if (this.matteElement) {\n this.matteElement = null;\n }\n\n if (this.maskManager) {\n this.maskManager.destroy();\n this.maskManager = null;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n },\n addEffects: function addEffects() {},\n setMatte: function setMatte() {}\n };\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n function HSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n HSolidElement.prototype.createContent = function () {\n var rect;\n\n if (this.data.hasMask) {\n rect = createNS('rect');\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.svgElement.setAttribute('width', this.data.sw);\n this.svgElement.setAttribute('height', this.data.sh);\n } else {\n rect = createTag('div');\n rect.style.width = this.data.sw + 'px';\n rect.style.height = this.data.sh + 'px';\n rect.style.backgroundColor = this.data.sc;\n }\n\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n\n if (this.data.hasMask) {\n this.layerElement.appendChild(this.shapesContainer);\n cont = this.svgElement;\n } else {\n cont = createNS('svg');\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n cont.setAttribute('width', size.w);\n cont.setAttribute('height', size.h);\n cont.appendChild(this.shapesContainer);\n this.layerElement.appendChild(cont);\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n\n return point;\n };\n\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n var shape = item.sh.v;\n var transformers = item.transformers;\n var i;\n var len = shape._length;\n var vPoint;\n var oPoint;\n var nextIPoint;\n var nextVPoint;\n\n if (len <= 1) {\n return;\n }\n\n for (i = 0; i < len - 1; i += 1) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n\n if (shape.c) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n };\n\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n var bounds = this.shapeBoundingBox;\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n };\n\n HShapeElement.prototype.shapeBoundingBox = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n HShapeElement.prototype.tempBoundingBox = {\n x: 0,\n xMax: 0,\n y: 0,\n yMax: 0,\n width: 0,\n height: 0\n };\n\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n // eslint-disable-line no-plusplus\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n b |= 0; // eslint-disable-line no-bitwise\n\n a |= 0; // eslint-disable-line no-bitwise\n\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {//\n } else if (a === 0) {\n t = -c / b;\n\n if (t > 0 && t < 1) {\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n }\n } else {\n b2ac = b * b - 4 * c * a;\n\n if (b2ac >= 0) {\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n }\n }\n }\n\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n };\n\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n };\n\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n if (itemsData[i] && itemsData[i].sh) {\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n } else if (itemsData[i] && itemsData[i].it) {\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\n }\n }\n };\n\n HShapeElement.prototype.currentBoxContains = function (box) {\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n };\n\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n var tempBoundingBox = this.tempBoundingBox;\n var max = 999999;\n tempBoundingBox.x = max;\n tempBoundingBox.xMax = -max;\n tempBoundingBox.y = max;\n tempBoundingBox.yMax = -max;\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\n\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n\n var changed = false;\n\n if (this.currentBBox.w !== tempBoundingBox.width) {\n this.currentBBox.w = tempBoundingBox.width;\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\n changed = true;\n }\n\n if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\n }\n\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n this.currentBBox.w = tempBoundingBox.width;\n this.currentBBox.h = tempBoundingBox.height;\n this.currentBBox.x = tempBoundingBox.x;\n this.currentBBox.y = tempBoundingBox.y;\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n var shapeStyle = this.shapeCont.style;\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n shapeStyle.transform = shapeTransform;\n shapeStyle.webkitTransform = shapeTransform;\n }\n }\n };\n\n function HTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.textPaths = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n this.renderType = 'svg';\n this.isMasked = false;\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n\n if (this.isMasked) {\n this.renderType = 'svg';\n this.compW = this.comp.data.w;\n this.compH = this.comp.data.h;\n this.svgElement.setAttribute('width', this.compW);\n this.svgElement.setAttribute('height', this.compH);\n var g = createNS('g');\n this.maskedElement.appendChild(g);\n this.innerElem = g;\n } else {\n this.renderType = 'html';\n this.innerElem = this.layerElement;\n }\n\n this.checkParenting();\n };\n\n HTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var innerElemStyle = this.innerElem.style;\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n innerElemStyle.fill = textColor;\n innerElemStyle.color = textColor;\n\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\n if (fontData.fClass) {\n this.innerElem.className = fontData.fClass;\n } else {\n innerElemStyle.fontFamily = fontData.fFamily;\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n innerElemStyle.fontStyle = fStyle;\n innerElemStyle.fontWeight = fWeight;\n }\n }\n\n var i;\n var len;\n var letters = documentData.l;\n len = letters.length;\n var tSpan;\n var tParent;\n var tCont;\n var matrixHelper = this.mHelper;\n var shapes;\n var shapeStr = '';\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.globalData.fontManager.chars) {\n if (!this.textPaths[cnt]) {\n tSpan = createNS('path');\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n tSpan.setAttribute('stroke-miterlimit', '4');\n } else {\n tSpan = this.textPaths[cnt];\n }\n\n if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tCont = tParent.children[0];\n } else {\n tParent = createTag('div');\n tParent.style.lineHeight = 0;\n tCont = createNS('svg');\n tCont.appendChild(tSpan);\n styleDiv(tParent);\n }\n }\n } else if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tSpan = this.textPaths[cnt];\n } else {\n tParent = createTag('span');\n styleDiv(tParent);\n tSpan = createTag('span');\n styleDiv(tSpan);\n tParent.appendChild(tSpan);\n }\n } else {\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n } // tSpan.setAttribute('visibility', 'hidden');\n\n\n if (this.globalData.fontManager.chars) {\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var shapeData;\n\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n\n matrixHelper.reset();\n\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n shapes = shapeData.shapes[0].it;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n shapeStr = this.createPathShape(matrixHelper, shapes);\n tSpan.setAttribute('d', shapeStr);\n }\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n\n if (shapeData && shapeData.shapes) {\n // document.body.appendChild is needed to get exact measure of shape\n document.body.appendChild(tCont);\n var boundingBox = tCont.getBBox();\n tCont.setAttribute('width', boundingBox.width + 2);\n tCont.setAttribute('height', boundingBox.height + 2);\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n var tContStyle = tCont.style;\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n tContStyle.transform = tContTranslation;\n tContStyle.webkitTransform = tContTranslation;\n letters[i].yOffset = boundingBox.y - 1;\n } else {\n tCont.setAttribute('width', 1);\n tCont.setAttribute('height', 1);\n }\n\n tParent.appendChild(tCont);\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } else {\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent); //\n\n var tStyle = tSpan.style;\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n tStyle.transform = tSpanTranslation;\n tStyle.webkitTransform = tSpanTranslation;\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } //\n\n\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n\n HTextElement.prototype.renderInnerContent = function () {\n var svgStyle;\n\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\n\n if (this.isMasked && this.finalTransform._matMdf) {\n // Todo Benchmark if using this is better than getBBox\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n svgStyle = this.svgElement.style;\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n svgStyle.transform = translation;\n svgStyle.webkitTransform = translation;\n }\n }\n\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\n\n var i;\n var len;\n var count = 0;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var textPath;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n count += 1;\n } else {\n textSpan = this.textSpans[i];\n textPath = this.textPaths[i];\n renderedLetter = renderedLetters[count];\n count += 1;\n\n if (renderedLetter._mdf.m) {\n if (!this.isMasked) {\n textSpan.style.webkitTransform = renderedLetter.m;\n textSpan.style.transform = renderedLetter.m;\n } else {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n textSpan.style.opacity = renderedLetter.o;\n\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n\n var margin = 1;\n\n if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n this.currentBBox.w = boundingBox.width + margin * 2;\n this.currentBBox.h = boundingBox.height + margin * 2;\n this.currentBBox.x = boundingBox.x - margin;\n this.currentBBox.y = boundingBox.y - margin;\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n svgStyle = this.svgElement.style;\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n svgStyle.transform = svgTransform;\n svgStyle.webkitTransform = svgTransform;\n }\n }\n };\n\n function HCameraElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initHierarchy();\n var getProp = PropertyFactory.getProp;\n this.pe = getProp(this, data.pe, 0, 0, this);\n\n if (data.ks.p.s) {\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n } else {\n this.p = getProp(this, data.ks.p, 1, 0, this);\n }\n\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\n\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\n var i;\n var len = data.ks.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.ks.or.k[i].to = null;\n data.ks.or.k[i].ti = null;\n }\n }\n\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\n this.or.sh = true;\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n this.mat = new Matrix();\n this._prevMat = new Matrix();\n this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n this.finalTransform = {\n mProp: this\n };\n }\n\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\n HCameraElement.prototype.setup = function () {\n var i;\n var len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n perspectiveStyle = comp.perspectiveElem.style;\n containerStyle = comp.container.style;\n var perspective = this.pe.v + 'px';\n var origin = '0px 0px 0px';\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n perspectiveStyle.perspective = perspective;\n perspectiveStyle.webkitPerspective = perspective;\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n perspectiveStyle.transform = matrix;\n perspectiveStyle.webkitTransform = matrix;\n }\n }\n };\n\n HCameraElement.prototype.createElements = function () {};\n\n HCameraElement.prototype.hide = function () {};\n\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n\n if (this.hierarchy) {\n len = this.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\n }\n\n if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n this.mat.reset();\n\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n\n for (i = len; i >= 0; i -= 1) {\n var mTransf = this.hierarchy[i].finalTransform.mProp;\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n }\n }\n\n if (this.p) {\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n } else {\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n }\n\n if (this.a) {\n var diffVector;\n\n if (this.p) {\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n } else {\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n }\n\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n }\n\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n this.mat.translate(0, 0, this.pe.v);\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\n\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n if (hasMatrixChanged) {\n var matValue = this.mat.toCSS();\n containerStyle = comp.container.style;\n containerStyle.transform = matValue;\n containerStyle.webkitTransform = matValue;\n }\n\n if (this.pe._mdf) {\n perspectiveStyle = comp.perspectiveElem.style;\n perspectiveStyle.perspective = this.pe.v + 'px';\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n }\n }\n }\n\n this.mat.clone(this._prevMat);\n }\n }\n\n this._isFirstFrame = false;\n };\n\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n HCameraElement.prototype.destroy = function () {};\n\n HCameraElement.prototype.getBaseElement = function () {\n return null;\n };\n\n function HImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n\n if (this.data.hasMask) {\n this.imageElem = createNS('image');\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.imageElem);\n this.baseElement.setAttribute('width', this.assetData.w);\n this.baseElement.setAttribute('height', this.assetData.h);\n } else {\n this.layerElement.appendChild(img);\n }\n\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n\n if (this.data.ln) {\n this.baseElement.setAttribute('id', this.data.ln);\n }\n };\n\n function HybridRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n\n if (!newDOMElement) {\n return;\n }\n\n var layer = this.layers[pos];\n\n if (!layer.ddd || !this.supports3d) {\n if (this.threeDElements) {\n this.addTo3dContainer(newDOMElement, pos);\n } else {\n var i = 0;\n var nextDOMElement;\n var nextLayer;\n var tmpDOMElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n nextLayer = this.elements[i];\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n nextDOMElement = tmpDOMElement || nextDOMElement;\n }\n\n i += 1;\n }\n\n if (nextDOMElement) {\n if (!layer.ddd || !this.supports3d) {\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n }\n } else if (!layer.ddd || !this.supports3d) {\n this.layerElement.appendChild(newDOMElement);\n }\n }\n } else {\n this.addTo3dContainer(newDOMElement, pos);\n }\n };\n\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n\n return new HShapeElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n\n return new HTextElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n\n return new HImageElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n\n return new HSolidElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n\n i += 1;\n }\n\n return null;\n };\n\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n var perspectiveElem = createTag('div');\n var style;\n var containerStyle;\n styleDiv(perspectiveElem);\n var container = createTag('div');\n styleDiv(container);\n\n if (type === '3d') {\n style = perspectiveElem.style;\n style.width = this.globalData.compSize.w + 'px';\n style.height = this.globalData.compSize.h + 'px';\n var center = '50% 50%';\n style.webkitTransformOrigin = center;\n style.mozTransformOrigin = center;\n style.transformOrigin = center;\n containerStyle = container.style;\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n containerStyle.transform = matrix;\n containerStyle.webkitTransform = matrix;\n }\n\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\n var threeDContainerData = {\n container: container,\n perspectiveElem: perspectiveElem,\n startPos: pos,\n endPos: pos,\n type: type\n };\n this.threeDElements.push(threeDContainerData);\n return threeDContainerData;\n };\n\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n if (currentContainer !== '3d') {\n currentContainer = '3d';\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n\n len = this.threeDElements.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n\n break;\n }\n\n i += 1;\n }\n };\n\n HybridRendererBase.prototype.configAnimation = function (animData) {\n var resizerElem = createTag('div');\n var wrapper = this.animationItem.wrapper;\n var style = resizerElem.style;\n style.width = animData.w + 'px';\n style.height = animData.h + 'px';\n this.resizerElem = resizerElem;\n styleDiv(resizerElem);\n style.transformStyle = 'flat';\n style.mozTransformStyle = 'flat';\n style.webkitTransformStyle = 'flat';\n\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\n\n wrapper.appendChild(resizerElem);\n style.overflow = 'hidden';\n var svg = createNS('svg');\n svg.setAttribute('width', '1');\n svg.setAttribute('height', '1');\n styleDiv(svg);\n this.resizerElem.appendChild(svg);\n var defs = createNS('defs');\n svg.appendChild(defs);\n this.data = animData; // Mask animation\n\n this.setupGlobalData(animData, svg);\n this.globalData.defs = defs;\n this.layers = animData.layers;\n this.layerElement = this.resizerElem;\n this.build3dContainers();\n this.updateContainerSize();\n };\n\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n this.elements[i].destroy();\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n HybridRendererBase.prototype.updateContainerSize = function () {\n var elementWidth = this.animationItem.wrapper.offsetWidth;\n var elementHeight = this.animationItem.wrapper.offsetHeight;\n var elementRel = elementWidth / elementHeight;\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n var sx;\n var sy;\n var tx;\n var ty;\n\n if (animationRel > elementRel) {\n sx = elementWidth / this.globalData.compSize.w;\n sy = elementWidth / this.globalData.compSize.w;\n tx = 0;\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n } else {\n sx = elementHeight / this.globalData.compSize.h;\n sy = elementHeight / this.globalData.compSize.h;\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n ty = 0;\n }\n\n var style = this.resizerElem.style;\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n style.transform = style.webkitTransform;\n };\n\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n\n if (this.camera) {\n this.camera.setup();\n } else {\n var cWidth = this.globalData.compSize.w;\n var cHeight = this.globalData.compSize.h;\n var i;\n var len = this.threeDElements.length;\n\n for (i = 0; i < len; i += 1) {\n var style = this.threeDElements[i].perspectiveElem.style;\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n style.perspective = style.webkitPerspective;\n }\n }\n };\n\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n function HCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = !data.hasMask;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\n if (this.data.hasMask) {\n this.svgElement.setAttribute('width', this.data.w);\n this.svgElement.setAttribute('height', this.data.h);\n this.transformedElement = this.baseElement;\n } else {\n this.transformedElement = this.layerElement;\n }\n };\n\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n function HybridRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([HybridRendererBase], HybridRenderer);\n\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n\n function pushExpression() {\n stackCount += 1;\n }\n\n function popExpression() {\n stackCount -= 1;\n\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n\n function releaseInstances() {\n var i;\n var len = registers.length;\n\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n\n registers.length = 0;\n }\n\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n animation.renderer.globalData.pushExpression = pushExpression;\n animation.renderer.globalData.popExpression = popExpression;\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n }\n\n return ob;\n }();\n\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n\n var prng = function prng() {\n var n = arc4.g(chunks),\n // Start with a numerator n < 2 ^ 48\n d = startdenom,\n // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n\n d *= width; // denominator and generating a\n\n x = arc4.g(1); // new least-significant-byte.\n }\n\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n\n d /= 2; // right using integer math until\n\n x >>>= 1; // we have exactly the desired bits.\n }\n\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4);\n } // Only provide the .state method if requested via options.state.\n\n\n prng.state = function () {\n return copy(arc4, {});\n };\n } // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\n } // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n }\n\n math['seed' + rngname] = seedrandom; //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = me.i = me.j = 0,\n s = me.S = []; // The empty key [] is treated as [0].\n\n if (!keylen) {\n key = [keylen++];\n } // Set up S using the standard key scheduling algorithm.\n\n\n while (i < width) {\n s[i] = i++;\n }\n\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n s[j] = t;\n } // The \"g\" method returns the next (count) outputs as one number.\n\n\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S;\n\n while (count--) {\n t = s[i = mask & i + 1];\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n }\n\n me.i = i;\n me.j = j;\n return r; // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n };\n } //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n\n\n function copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n } //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n\n\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$1(obj),\n prop;\n\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1));\n } catch (e) {}\n }\n }\n\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n } //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n\n\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n\n return tostring(key);\n } //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n\n\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\n\n var out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\n }\n } //\n // tostring()\n // Converts an array of charcodes to a string\n //\n\n\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n } //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n\n\n mixkey(math.random(), pool); //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n // End anonymous scope, and pass initial values.\n }\n\n ;\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n var ExpressionManager = function () {\n 'use strict';\n\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\n var XMLHttpRequest = null;\n var fetch = null;\n var frames = null;\n initialize$2(BMMath);\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || tOfV === 'boolean' || tOfV === 'string' || v instanceof Number;\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof(a);\n\n if (tOfA === 'number' || tOfA === 'boolean' || a instanceof Number) {\n return -a;\n }\n\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n\n return retArr;\n }\n\n if (a.propType) {\n return a.v;\n }\n\n return -a;\n }\n\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n function sum(a, b) {\n var tOfA = _typeof(a);\n\n var tOfB = _typeof(b);\n\n if (tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a + b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a + b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] + b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n var add = sum;\n\n function sub(a, b) {\n var tOfA = _typeof(a);\n\n var tOfB = _typeof(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n\n return a - b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a - b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] - b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n function mul(a, b) {\n var tOfA = _typeof(a);\n\n var tOfB = _typeof(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function div(a, b) {\n var tOfA = _typeof(a);\n\n var tOfB = _typeof(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n\n return a % b;\n }\n\n var $bm_sum = sum;\n var $bm_sub = sub;\n var $bm_mul = mul;\n var $bm_div = div;\n var $bm_mod = mod;\n\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val * degToRads;\n }\n\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0;\n return Math.abs(arr1 - arr2);\n }\n\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n\n return Math.sqrt(addedLength);\n }\n\n function normalize(vec) {\n return div(vec, length(vec));\n }\n\n function rgbToHsl(val) {\n var r = val[0];\n var g = val[1];\n var b = val[2];\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n\n if (max === min) {\n h = 0; // achromatic\n\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n break;\n }\n\n h /= 6;\n }\n\n return [h, s, l, val[3]];\n }\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n function hslToRgb(val) {\n var h = val[0];\n var s = val[1];\n var l = val[2];\n var r;\n var g;\n var b;\n\n if (s === 0) {\n r = l; // achromatic\n\n b = l; // achromatic\n\n g = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [r, g, b, val[3]];\n }\n\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin;\n value2 = tMax;\n tMin = 0;\n tMax = 1;\n }\n\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n\n if (t <= tMin) {\n return value1;\n }\n\n if (t >= tMax) {\n return value2;\n }\n\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n\n return arr;\n }\n\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0;\n max = 1;\n } else {\n max = min;\n min = undefined;\n }\n }\n\n if (max.length) {\n var i;\n var len = max.length;\n\n if (!min) {\n min = createTypedArray('float32', len);\n }\n\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n\n return arr;\n }\n\n if (min === undefined) {\n min = 0;\n }\n\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\n\n function createPath(points, inTangents, outTangents, closed) {\n var i;\n var len = points.length;\n var path = shapePool.newElement();\n path.setPathData(!!closed, len);\n var arrPlaceholder = [0, 0];\n var inVertexPoint;\n var outVertexPoint;\n\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n }\n\n return path;\n }\n\n function initiateExpression(elem, data, property) {\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n var _needsRandom = val.indexOf('random') !== -1;\n\n var elemType = elem.data.ty;\n var transform;\n var $bm_transform;\n var content;\n var effect;\n var thisProperty = property;\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\n Object.defineProperty(thisProperty, 'value', {\n get: function get() {\n return thisProperty.v;\n }\n });\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n elem.comp.displayStartTime = 0;\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n var width = elem.data.sw ? elem.data.sw : 0;\n var height = elem.data.sh ? elem.data.sh : 0;\n var name = elem.data.nm;\n var loopIn;\n var loop_in;\n var loopOut;\n var loop_out;\n var smooth;\n var toWorld;\n var fromWorld;\n var fromComp;\n var toComp;\n var fromCompToSurface;\n var position;\n var rotation;\n var anchorPoint;\n var scale;\n var thisLayer;\n var thisComp;\n var mask;\n var valueAtTime;\n var velocityAtTime;\n var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n\n var wiggle = function wiggle(freq, amp) {\n var iWiggle;\n var j;\n var lenWiggle = this.pv.length ? this.pv.length : 1;\n var addedAmps = createTypedArray('float32', lenWiggle);\n freq = 5;\n var iterations = Math.floor(time * freq);\n iWiggle = 0;\n j = 0;\n\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n }\n\n iWiggle += 1;\n } // var rnd2 = BMMath.random();\n\n\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n\n return arr;\n }\n\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n return [yaw, pitch, 0];\n }\n\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\n\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin;\n val2 = tMax;\n } else {\n t = (t - tMin) / (tMax - tMin);\n }\n\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n\n var mult = fn(t);\n\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n\n return arr;\n }\n\n return (val2 - val1) * mult + val1;\n }\n\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0;\n keyTime = 0;\n } else {\n index = -1;\n time *= elem.comp.globalData.frameRate;\n\n if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n break;\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2;\n keyTime = data.k[iKey + 1].t;\n } else {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n\n break;\n }\n }\n\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\n\n ind -= 1;\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: []\n };\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n lenKey = arr.length;\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n\n return obKey;\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return fr / fps;\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return t * fps;\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n\n return value.substring(init, end);\n }\n\n return '';\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n\n return value.substr(init, end);\n }\n\n return '';\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\n\n var time;\n var velocity;\n var value;\n var text;\n var textIndex;\n var textTotal;\n var selectorValue;\n var index = elem.data.ind;\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n var parent;\n var randSeed = Math.floor(Math.random() * 1000000);\n var globalData = elem.globalData;\n\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\n\n if (!thisLayer) {\n text = elem.layerInterface.text;\n thisLayer = elem.layerInterface;\n thisComp = elem.comp.compInterface;\n toWorld = thisLayer.toWorld.bind(thisLayer);\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\n fromComp = thisLayer.fromComp.bind(thisLayer);\n toComp = thisLayer.toComp.bind(thisLayer);\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n fromCompToSurface = fromComp;\n }\n\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n\n if (!effect) {\n effect = thisLayer(4);\n }\n\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n\n expression_function();\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n } // Bundlers will see these as dead code and unless we reference them\n\n\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n return executeExpression;\n }\n\n ob.initiateExpression = initiateExpression;\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath];\n return ob;\n }();\n\n var expressionHelpers = function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true;\n prop.x = true;\n prop.initiateExpression = ExpressionManager.initiateExpression;\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n }\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n this._cachingAtTime.lastFrame = frameNum;\n }\n\n return this._cachingAtTime.value;\n }\n\n function getSpeedAtTime(frameNum) {\n var delta = -0.01;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var speed = 0;\n\n if (v1.length) {\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n\n return speed;\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n\n var delta = -0.001; // frameNum += this.elem.data.st;\n\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta;\n }\n } else {\n velocity = (v2 - v1) / delta;\n }\n\n return velocity;\n }\n\n function getStaticValueAtTime() {\n return this.pv;\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\n\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty\n };\n }();\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var firstKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n }\n\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (iterations % 2 !== 0) {\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n\n return ret;\n }\n\n return (endV - initV) * repeats + current;\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n }\n\n return ret;\n }\n\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var lastKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n lastKeyFrame = keyframes[duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n }\n\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n if (iterations % 2 === 0) {\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n\n return ret;\n }\n\n return current - (endV - initV) * repeats;\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return ret;\n }\n\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n\n if (samples <= 1) {\n return this.pv;\n }\n\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n var initFrame = currentTime - width;\n var endFrame = currentTime + width;\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0;\n var j = 0;\n var value;\n\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n\n var sampleValue;\n\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j];\n }\n } else {\n value += sampleValue;\n }\n\n i += 1;\n }\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples;\n }\n } else {\n value /= samples;\n }\n\n return value;\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n } /// /\n\n\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time);\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n }\n\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time);\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time);\n var skewAxis = this.sa.getValueAtTime(time);\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time);\n matrix.rotate(-rotation * this.r.mult);\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time);\n var rotationY = this.ry.getValueAtTime(time);\n var rotationX = this.rx.getValueAtTime(time);\n var orientation = this.or.getValueAtTime(time);\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n }\n\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time);\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n }\n } else {\n var position = this.p.getValueAtTime(time);\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n }\n\n return matrix; /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n prop.loopOut = loopOut;\n prop.loopIn = loopIn;\n prop.smooth = smooth;\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n prop.numKeys = data.a === 1 ? data.k.length : 0;\n prop.propertyIndex = data.ix;\n var value = 0;\n\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n\n return prop;\n };\n\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n this._cachingAtTime.lastTime = frameNum;\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n }\n\n return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions() {}\n\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n var i;\n var len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\n\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]];\n }\n }\n\n return arr;\n },\n points: function points(time) {\n return this.vertices('v', time);\n },\n inTangents: function inTangents(time) {\n return this.vertices('i', time);\n },\n outTangents: function outTangents(time) {\n return this.vertices('o', time);\n },\n isClosed: function isClosed() {\n return this.v.c;\n },\n pointOnPath: function pointOnPath(perc, time) {\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\n\n var segmentsLength = this._segmentsLength;\n var lengths = segmentsLength.lengths;\n var lengthPos = segmentsLength.totalLength * perc;\n var i = 0;\n var len = lengths.length;\n var accumulatedLength = 0;\n var pt;\n\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i;\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n break;\n } else {\n accumulatedLength += lengths[i].addedLength;\n }\n\n i += 1;\n }\n\n if (!pt) {\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n }\n\n return pt;\n },\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c;\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999;\n }\n\n var pt1 = this.pointOnPath(perc, time);\n var pt2 = this.pointOnPath(perc + 0.001, time);\n var xLength = pt2[0] - pt1[0];\n var yLength = pt2[1] - pt1[1];\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n if (magnitude === 0) {\n return [0, 0];\n }\n\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n return unitVector;\n },\n tangentOnPath: function tangentOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function normalOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'normal');\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime\n };\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n prop.propertyIndex = data.ix;\n prop.lock = false;\n\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n };\n }\n\n function initialize$1() {\n addPropertyDecorator();\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n this.addEffect(this.getExpressionValue.bind(this));\n return true;\n }\n\n return null;\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n\n if (currentValue.t !== newValue) {\n var newData = {};\n this.copyData(newData, currentValue);\n newData.t = newValue.toString();\n newData.__complete = false;\n return newData;\n }\n\n return currentValue;\n };\n\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes();\n var hasExpressions = this.searchExpressions();\n this.kf = isKeyframed || hasExpressions;\n return this.kf;\n };\n\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n\n SVGComposableEffect.prototype = {\n createMergeNode: function createMergeNode(resultId, ins) {\n var feMerge = createNS('feMerge');\n feMerge.setAttribute('result', resultId);\n var feMergeNode;\n var i;\n\n for (i = 0; i < ins.length; i += 1) {\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', ins[i]);\n feMerge.appendChild(feMergeNode);\n feMerge.appendChild(feMergeNode);\n }\n\n return feMerge;\n }\n };\n\n function SVGTintFilter(filter, filterManager, elem, id, source) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id + '_tint_1');\n filter.appendChild(feColorMatrix);\n feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id + '_tint_2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n filter.appendChild(feMerge);\n }\n\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var colorBlack = this.filterManager.effectElements[0].p.v;\n var colorWhite = this.filterManager.effectElements[1].p.v;\n var opacity = this.filterManager.effectElements[2].p.v / 100;\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id);\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n }\n\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color = this.filterManager.effectElements[2].p.v;\n var opacity = this.filterManager.effectElements[6].p.v;\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGStrokeEffect(fil, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n }\n\n SVGStrokeEffect.prototype.initialize = function () {\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path;\n var groupPath;\n var i;\n var len;\n\n if (this.filterManager.effectElements[1].p.v === 1) {\n len = this.elem.maskManager.masksProperties.length;\n i = 0;\n } else {\n i = this.filterManager.effectElements[0].p.v - 1;\n len = i + 1;\n }\n\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n\n for (i; i < len; i += 1) {\n path = createNS('path');\n groupPath.appendChild(path);\n this.paths.push({\n p: path,\n m: i\n });\n }\n\n if (this.filterManager.effectElements[10].p.v === 3) {\n var mask = createNS('mask');\n var id = createElementID();\n mask.setAttribute('id', id);\n mask.setAttribute('mask-type', 'alpha');\n mask.appendChild(groupPath);\n this.elem.globalData.defs.appendChild(mask);\n var g = createNS('g');\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\n\n this.elem.layerElement.appendChild(g);\n this.masker = mask;\n groupPath.setAttribute('stroke', '#fff');\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (this.filterManager.effectElements[10].p.v === 2) {\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n\n for (i = 0; i < len; i += 1) {\n if (this.paths[i].m !== -1) {\n mask = this.elem.maskManager.viewData[this.paths[i].m];\n path = this.paths[i].p;\n\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\n\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n var dasharrayValue;\n\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var l = path.getTotalLength();\n dasharrayValue = '0 0 0 ' + l * s + ' ';\n var lineLength = l * (e - s);\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n var units = Math.floor(lineLength / segment);\n var j;\n\n for (j = 0; j < units; j += 1) {\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n }\n\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\n } else {\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n }\n\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\n }\n }\n\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n }\n\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\n\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n var color = this.filterManager.effectElements[3].p.v;\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n }\n }\n };\n\n function SVGTritoneFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n this.matrixFilter = feComponentTransfer;\n var feFuncR = createNS('feFuncR');\n feFuncR.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncR);\n this.feFuncR = feFuncR;\n var feFuncG = createNS('feFuncG');\n feFuncG.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncG);\n this.feFuncG = feFuncG;\n var feFuncB = createNS('feFuncB');\n feFuncB.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncB);\n this.feFuncB = feFuncB;\n filter.appendChild(feComponentTransfer);\n }\n\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color1 = this.filterManager.effectElements[0].p.v;\n var color2 = this.filterManager.effectElements[1].p.v;\n var color3 = this.filterManager.effectElements[2].p.v;\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n this.feFuncR.setAttribute('tableValues', tableR);\n this.feFuncG.setAttribute('tableValues', tableG);\n this.feFuncB.setAttribute('tableValues', tableB);\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\n\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n } // Green\n\n\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n } // Blue\n\n\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n } // Alpha\n\n\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n } // RGB\n\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\n\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n filter.appendChild(feComponentTransfer);\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n }\n\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n var feFunc = createNS(type);\n feFunc.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFunc);\n return feFunc;\n };\n\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n var cnt = 0;\n var segments = 256;\n var perc;\n var min = Math.min(inputBlack, inputWhite);\n var max = Math.max(inputBlack, inputWhite);\n var table = Array.call(null, {\n length: segments\n });\n var colorValue;\n var pos = 0;\n var outputDelta = outputWhite - outputBlack;\n var inputDelta = inputWhite - inputBlack;\n\n while (cnt <= 256) {\n perc = cnt / 256;\n\n if (perc <= min) {\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n } else if (perc >= max) {\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n }\n\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n\n return table.join(' ');\n };\n\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n this.feFuncRComposed.setAttribute('tableValues', val);\n this.feFuncGComposed.setAttribute('tableValues', val);\n this.feFuncBComposed.setAttribute('tableValues', val);\n }\n\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n this.feFuncR.setAttribute('tableValues', val);\n }\n\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n this.feFuncG.setAttribute('tableValues', val);\n }\n\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n this.feFuncB.setAttribute('tableValues', val);\n }\n\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n this.feFuncA.setAttribute('tableValues', val);\n }\n }\n };\n\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n var filterSize = filterManager.container.globalData.renderConfig.filterSize;\n filter.setAttribute('x', filterSize.x);\n filter.setAttribute('y', filterSize.y);\n filter.setAttribute('width', filterSize.width);\n filter.setAttribute('height', filterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation', '0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx', '25');\n feOffset.setAttribute('dy', '0');\n feOffset.setAttribute('in', id + '_drop_shadow_1');\n feOffset.setAttribute('result', id + '_drop_shadow_2');\n this.feOffset = feOffset;\n filter.appendChild(feOffset);\n var feFlood = createNS('feFlood');\n feFlood.setAttribute('flood-color', '#00ff00');\n feFlood.setAttribute('flood-opacity', '1');\n feFlood.setAttribute('result', id + '_drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', id + '_drop_shadow_3');\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', id + '_drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n filter.appendChild(feMerge); //\n }\n\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n }\n\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n var col = this.filterManager.effectElements[0].p.v;\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n }\n\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\n\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n var distance = this.filterManager.effectElements[3].p.v;\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n var x = distance * Math.cos(angle);\n var y = distance * Math.sin(angle);\n this.feOffset.setAttribute('dx', x);\n this.feOffset.setAttribute('dy', y);\n }\n }\n };\n\n var _svgMatteSymbols = [];\n\n function SVGMatte3Effect(filterElem, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.filterElem = filterElem;\n this.elem = elem;\n elem.matteElement = createNS('g');\n elem.matteElement.appendChild(elem.layerElement);\n elem.matteElement.appendChild(elem.transformedElement);\n elem.baseElement = elem.matteElement;\n }\n\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n\n i += 1;\n }\n\n var nextChild;\n\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n };\n\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n if (!this.findSymbol(mask)) {\n var symbolId = createElementID();\n var masker = createNS('mask');\n masker.setAttribute('id', mask.layerId);\n masker.setAttribute('mask-type', 'alpha');\n\n _svgMatteSymbols.push(mask);\n\n var defs = elem.globalData.defs;\n defs.appendChild(masker);\n var symbol = createNS('symbol');\n symbol.setAttribute('id', symbolId);\n this.replaceInParent(mask, symbolId);\n symbol.appendChild(mask.layerElement);\n defs.appendChild(symbol);\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n masker.appendChild(useElem);\n mask.data.hd = false;\n mask.show();\n }\n\n elem.setMatte(mask.layerId);\n };\n\n SVGMatte3Effect.prototype.initialize = function () {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n\n i += 1;\n }\n\n this.initialized = true;\n };\n\n SVGMatte3Effect.prototype.renderFrame = function () {\n if (!this.initialized) {\n this.initialize();\n }\n };\n\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\n filter.setAttribute('x', '-100%');\n filter.setAttribute('y', '-100%');\n filter.setAttribute('width', '300%');\n filter.setAttribute('height', '300%');\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('result', id);\n filter.appendChild(feGaussianBlur);\n this.feGaussianBlur = feGaussianBlur;\n }\n\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n // Empirical value, matching AE's blur appearance.\n var kBlurrinessToSigma = 0.3;\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n ShapeModifiers.registerModifier('tm', TrimModifier);\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\n ShapeModifiers.registerModifier('rd', RoundCornersModifier); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n initialize$1();\n initialize(); // Registering svg effects\n\n registerEffect(20, SVGTintFilter, true);\n registerEffect(21, SVGFillFilter, true);\n registerEffect(22, SVGStrokeEffect, false);\n registerEffect(23, SVGTritoneFilter, true);\n registerEffect(24, SVGProLevelsFilter, true);\n registerEffect(25, SVGDropShadowEffect, true);\n registerEffect(28, SVGMatte3Effect, false);\n registerEffect(29, SVGGaussianBlurEffect, true);\n\n return lottie;\n\n}));\n","'use strict';\n\n/**\n * @param typeMap [Object] Map of MIME type -> Array[extensions]\n * @param ...\n */\nfunction Mime() {\n this._types = Object.create(null);\n this._extensions = Object.create(null);\n\n for (let i = 0; i < arguments.length; i++) {\n this.define(arguments[i]);\n }\n\n this.define = this.define.bind(this);\n this.getType = this.getType.bind(this);\n this.getExtension = this.getExtension.bind(this);\n}\n\n/**\n * Define mimetype -> extension mappings. Each key is a mime-type that maps\n * to an array of extensions associated with the type. The first extension is\n * used as the default extension for the type.\n *\n * e.g. mime.define({'audio/ogg', ['oga', 'ogg', 'spx']});\n *\n * If a type declares an extension that has already been defined, an error will\n * be thrown. To suppress this error and force the extension to be associated\n * with the new type, pass `force`=true. Alternatively, you may prefix the\n * extension with \"*\" to map the type to extension, without mapping the\n * extension to the type.\n *\n * e.g. mime.define({'audio/wav', ['wav']}, {'audio/x-wav', ['*wav']});\n *\n *\n * @param map (Object) type definitions\n * @param force (Boolean) if true, force overriding of existing definitions\n */\nMime.prototype.define = function(typeMap, force) {\n for (let type in typeMap) {\n let extensions = typeMap[type].map(function(t) {\n return t.toLowerCase();\n });\n type = type.toLowerCase();\n\n for (let i = 0; i < extensions.length; i++) {\n const ext = extensions[i];\n\n // '*' prefix = not the preferred type for this extension. So fixup the\n // extension, and skip it.\n if (ext[0] === '*') {\n continue;\n }\n\n if (!force && (ext in this._types)) {\n throw new Error(\n 'Attempt to change mapping for \"' + ext +\n '\" extension from \"' + this._types[ext] + '\" to \"' + type +\n '\". Pass `force=true` to allow this, otherwise remove \"' + ext +\n '\" from the list of extensions for \"' + type + '\".'\n );\n }\n\n this._types[ext] = type;\n }\n\n // Use first extension as default\n if (force || !this._extensions[type]) {\n const ext = extensions[0];\n this._extensions[type] = (ext[0] !== '*') ? ext : ext.substr(1);\n }\n }\n};\n\n/**\n * Lookup a mime type based on extension\n */\nMime.prototype.getType = function(path) {\n path = String(path);\n let last = path.replace(/^.*[/\\\\]/, '').toLowerCase();\n let ext = last.replace(/^.*\\./, '').toLowerCase();\n\n let hasPath = last.length < path.length;\n let hasDot = ext.length < last.length - 1;\n\n return (hasDot || !hasPath) && this._types[ext] || null;\n};\n\n/**\n * Return file extension associated with a mime type\n */\nMime.prototype.getExtension = function(type) {\n type = /^\\s*([^;\\s]*)/.test(type) && RegExp.$1;\n return type && this._extensions[type.toLowerCase()] || null;\n};\n\nmodule.exports = Mime;\n","'use strict';\n\nlet Mime = require('./Mime');\nmodule.exports = new Mime(require('./types/standard'), require('./types/other'));\n","module.exports = {\"application/prs.cww\":[\"cww\"],\"application/vnd.1000minds.decision-model+xml\":[\"1km\"],\"application/vnd.3gpp.pic-bw-large\":[\"plb\"],\"application/vnd.3gpp.pic-bw-small\":[\"psb\"],\"application/vnd.3gpp.pic-bw-var\":[\"pvb\"],\"application/vnd.3gpp2.tcap\":[\"tcap\"],\"application/vnd.3m.post-it-notes\":[\"pwn\"],\"application/vnd.accpac.simply.aso\":[\"aso\"],\"application/vnd.accpac.simply.imp\":[\"imp\"],\"application/vnd.acucobol\":[\"acu\"],\"application/vnd.acucorp\":[\"atc\",\"acutc\"],\"application/vnd.adobe.air-application-installer-package+zip\":[\"air\"],\"application/vnd.adobe.formscentral.fcdt\":[\"fcdt\"],\"application/vnd.adobe.fxp\":[\"fxp\",\"fxpl\"],\"application/vnd.adobe.xdp+xml\":[\"xdp\"],\"application/vnd.adobe.xfdf\":[\"xfdf\"],\"application/vnd.ahead.space\":[\"ahead\"],\"application/vnd.airzip.filesecure.azf\":[\"azf\"],\"application/vnd.airzip.filesecure.azs\":[\"azs\"],\"application/vnd.amazon.ebook\":[\"azw\"],\"application/vnd.americandynamics.acc\":[\"acc\"],\"application/vnd.amiga.ami\":[\"ami\"],\"application/vnd.android.package-archive\":[\"apk\"],\"application/vnd.anser-web-certificate-issue-initiation\":[\"cii\"],\"application/vnd.anser-web-funds-transfer-initiation\":[\"fti\"],\"application/vnd.antix.game-component\":[\"atx\"],\"application/vnd.apple.installer+xml\":[\"mpkg\"],\"application/vnd.apple.keynote\":[\"key\"],\"application/vnd.apple.mpegurl\":[\"m3u8\"],\"application/vnd.apple.numbers\":[\"numbers\"],\"application/vnd.apple.pages\":[\"pages\"],\"application/vnd.apple.pkpass\":[\"pkpass\"],\"application/vnd.aristanetworks.swi\":[\"swi\"],\"application/vnd.astraea-software.iota\":[\"iota\"],\"application/vnd.audiograph\":[\"aep\"],\"application/vnd.balsamiq.bmml+xml\":[\"bmml\"],\"application/vnd.blueice.multipass\":[\"mpm\"],\"application/vnd.bmi\":[\"bmi\"],\"application/vnd.businessobjects\":[\"rep\"],\"application/vnd.chemdraw+xml\":[\"cdxml\"],\"application/vnd.chipnuts.karaoke-mmd\":[\"mmd\"],\"application/vnd.cinderella\":[\"cdy\"],\"application/vnd.citationstyles.style+xml\":[\"csl\"],\"application/vnd.claymore\":[\"cla\"],\"application/vnd.cloanto.rp9\":[\"rp9\"],\"application/vnd.clonk.c4group\":[\"c4g\",\"c4d\",\"c4f\",\"c4p\",\"c4u\"],\"application/vnd.cluetrust.cartomobile-config\":[\"c11amc\"],\"application/vnd.cluetrust.cartomobile-config-pkg\":[\"c11amz\"],\"application/vnd.commonspace\":[\"csp\"],\"application/vnd.contact.cmsg\":[\"cdbcmsg\"],\"application/vnd.cosmocaller\":[\"cmc\"],\"application/vnd.crick.clicker\":[\"clkx\"],\"application/vnd.crick.clicker.keyboard\":[\"clkk\"],\"application/vnd.crick.clicker.palette\":[\"clkp\"],\"application/vnd.crick.clicker.template\":[\"clkt\"],\"application/vnd.crick.clicker.wordbank\":[\"clkw\"],\"application/vnd.criticaltools.wbs+xml\":[\"wbs\"],\"application/vnd.ctc-posml\":[\"pml\"],\"application/vnd.cups-ppd\":[\"ppd\"],\"application/vnd.curl.car\":[\"car\"],\"application/vnd.curl.pcurl\":[\"pcurl\"],\"application/vnd.dart\":[\"dart\"],\"application/vnd.data-vision.rdz\":[\"rdz\"],\"application/vnd.dbf\":[\"dbf\"],\"application/vnd.dece.data\":[\"uvf\",\"uvvf\",\"uvd\",\"uvvd\"],\"application/vnd.dece.ttml+xml\":[\"uvt\",\"uvvt\"],\"application/vnd.dece.unspecified\":[\"uvx\",\"uvvx\"],\"application/vnd.dece.zip\":[\"uvz\",\"uvvz\"],\"application/vnd.denovo.fcselayout-link\":[\"fe_launch\"],\"application/vnd.dna\":[\"dna\"],\"application/vnd.dolby.mlp\":[\"mlp\"],\"application/vnd.dpgraph\":[\"dpg\"],\"application/vnd.dreamfactory\":[\"dfac\"],\"application/vnd.ds-keypoint\":[\"kpxx\"],\"application/vnd.dvb.ait\":[\"ait\"],\"application/vnd.dvb.service\":[\"svc\"],\"application/vnd.dynageo\":[\"geo\"],\"application/vnd.ecowin.chart\":[\"mag\"],\"application/vnd.enliven\":[\"nml\"],\"application/vnd.epson.esf\":[\"esf\"],\"application/vnd.epson.msf\":[\"msf\"],\"application/vnd.epson.quickanime\":[\"qam\"],\"application/vnd.epson.salt\":[\"slt\"],\"application/vnd.epson.ssf\":[\"ssf\"],\"application/vnd.eszigno3+xml\":[\"es3\",\"et3\"],\"application/vnd.ezpix-album\":[\"ez2\"],\"application/vnd.ezpix-package\":[\"ez3\"],\"application/vnd.fdf\":[\"fdf\"],\"application/vnd.fdsn.mseed\":[\"mseed\"],\"application/vnd.fdsn.seed\":[\"seed\",\"dataless\"],\"application/vnd.flographit\":[\"gph\"],\"application/vnd.fluxtime.clip\":[\"ftc\"],\"application/vnd.framemaker\":[\"fm\",\"frame\",\"maker\",\"book\"],\"application/vnd.frogans.fnc\":[\"fnc\"],\"application/vnd.frogans.ltf\":[\"ltf\"],\"application/vnd.fsc.weblaunch\":[\"fsc\"],\"application/vnd.fujitsu.oasys\":[\"oas\"],\"application/vnd.fujitsu.oasys2\":[\"oa2\"],\"application/vnd.fujitsu.oasys3\":[\"oa3\"],\"application/vnd.fujitsu.oasysgp\":[\"fg5\"],\"application/vnd.fujitsu.oasysprs\":[\"bh2\"],\"application/vnd.fujixerox.ddd\":[\"ddd\"],\"application/vnd.fujixerox.docuworks\":[\"xdw\"],\"application/vnd.fujixerox.docuworks.binder\":[\"xbd\"],\"application/vnd.fuzzysheet\":[\"fzs\"],\"application/vnd.genomatix.tuxedo\":[\"txd\"],\"application/vnd.geogebra.file\":[\"ggb\"],\"application/vnd.geogebra.tool\":[\"ggt\"],\"application/vnd.geometry-explorer\":[\"gex\",\"gre\"],\"application/vnd.geonext\":[\"gxt\"],\"application/vnd.geoplan\":[\"g2w\"],\"application/vnd.geospace\":[\"g3w\"],\"application/vnd.gmx\":[\"gmx\"],\"application/vnd.google-apps.document\":[\"gdoc\"],\"application/vnd.google-apps.presentation\":[\"gslides\"],\"application/vnd.google-apps.spreadsheet\":[\"gsheet\"],\"application/vnd.google-earth.kml+xml\":[\"kml\"],\"application/vnd.google-earth.kmz\":[\"kmz\"],\"application/vnd.grafeq\":[\"gqf\",\"gqs\"],\"application/vnd.groove-account\":[\"gac\"],\"application/vnd.groove-help\":[\"ghf\"],\"application/vnd.groove-identity-message\":[\"gim\"],\"application/vnd.groove-injector\":[\"grv\"],\"application/vnd.groove-tool-message\":[\"gtm\"],\"application/vnd.groove-tool-template\":[\"tpl\"],\"application/vnd.groove-vcard\":[\"vcg\"],\"application/vnd.hal+xml\":[\"hal\"],\"application/vnd.handheld-entertainment+xml\":[\"zmm\"],\"application/vnd.hbci\":[\"hbci\"],\"application/vnd.hhe.lesson-player\":[\"les\"],\"application/vnd.hp-hpgl\":[\"hpgl\"],\"application/vnd.hp-hpid\":[\"hpid\"],\"application/vnd.hp-hps\":[\"hps\"],\"application/vnd.hp-jlyt\":[\"jlt\"],\"application/vnd.hp-pcl\":[\"pcl\"],\"application/vnd.hp-pclxl\":[\"pclxl\"],\"application/vnd.hydrostatix.sof-data\":[\"sfd-hdstx\"],\"application/vnd.ibm.minipay\":[\"mpy\"],\"application/vnd.ibm.modcap\":[\"afp\",\"listafp\",\"list3820\"],\"application/vnd.ibm.rights-management\":[\"irm\"],\"application/vnd.ibm.secure-container\":[\"sc\"],\"application/vnd.iccprofile\":[\"icc\",\"icm\"],\"application/vnd.igloader\":[\"igl\"],\"application/vnd.immervision-ivp\":[\"ivp\"],\"application/vnd.immervision-ivu\":[\"ivu\"],\"application/vnd.insors.igm\":[\"igm\"],\"application/vnd.intercon.formnet\":[\"xpw\",\"xpx\"],\"application/vnd.intergeo\":[\"i2g\"],\"application/vnd.intu.qbo\":[\"qbo\"],\"application/vnd.intu.qfx\":[\"qfx\"],\"application/vnd.ipunplugged.rcprofile\":[\"rcprofile\"],\"application/vnd.irepository.package+xml\":[\"irp\"],\"application/vnd.is-xpr\":[\"xpr\"],\"application/vnd.isac.fcs\":[\"fcs\"],\"application/vnd.jam\":[\"jam\"],\"application/vnd.jcp.javame.midlet-rms\":[\"rms\"],\"application/vnd.jisp\":[\"jisp\"],\"application/vnd.joost.joda-archive\":[\"joda\"],\"application/vnd.kahootz\":[\"ktz\",\"ktr\"],\"application/vnd.kde.karbon\":[\"karbon\"],\"application/vnd.kde.kchart\":[\"chrt\"],\"application/vnd.kde.kformula\":[\"kfo\"],\"application/vnd.kde.kivio\":[\"flw\"],\"application/vnd.kde.kontour\":[\"kon\"],\"application/vnd.kde.kpresenter\":[\"kpr\",\"kpt\"],\"application/vnd.kde.kspread\":[\"ksp\"],\"application/vnd.kde.kword\":[\"kwd\",\"kwt\"],\"application/vnd.kenameaapp\":[\"htke\"],\"application/vnd.kidspiration\":[\"kia\"],\"application/vnd.kinar\":[\"kne\",\"knp\"],\"application/vnd.koan\":[\"skp\",\"skd\",\"skt\",\"skm\"],\"application/vnd.kodak-descriptor\":[\"sse\"],\"application/vnd.las.las+xml\":[\"lasxml\"],\"application/vnd.llamagraphics.life-balance.desktop\":[\"lbd\"],\"application/vnd.llamagraphics.life-balance.exchange+xml\":[\"lbe\"],\"application/vnd.lotus-1-2-3\":[\"123\"],\"application/vnd.lotus-approach\":[\"apr\"],\"application/vnd.lotus-freelance\":[\"pre\"],\"application/vnd.lotus-notes\":[\"nsf\"],\"application/vnd.lotus-organizer\":[\"org\"],\"application/vnd.lotus-screencam\":[\"scm\"],\"application/vnd.lotus-wordpro\":[\"lwp\"],\"application/vnd.macports.portpkg\":[\"portpkg\"],\"application/vnd.mapbox-vector-tile\":[\"mvt\"],\"application/vnd.mcd\":[\"mcd\"],\"application/vnd.medcalcdata\":[\"mc1\"],\"application/vnd.mediastation.cdkey\":[\"cdkey\"],\"application/vnd.mfer\":[\"mwf\"],\"application/vnd.mfmp\":[\"mfm\"],\"application/vnd.micrografx.flo\":[\"flo\"],\"application/vnd.micrografx.igx\":[\"igx\"],\"application/vnd.mif\":[\"mif\"],\"application/vnd.mobius.daf\":[\"daf\"],\"application/vnd.mobius.dis\":[\"dis\"],\"application/vnd.mobius.mbk\":[\"mbk\"],\"application/vnd.mobius.mqy\":[\"mqy\"],\"application/vnd.mobius.msl\":[\"msl\"],\"application/vnd.mobius.plc\":[\"plc\"],\"application/vnd.mobius.txf\":[\"txf\"],\"application/vnd.mophun.application\":[\"mpn\"],\"application/vnd.mophun.certificate\":[\"mpc\"],\"application/vnd.mozilla.xul+xml\":[\"xul\"],\"application/vnd.ms-artgalry\":[\"cil\"],\"application/vnd.ms-cab-compressed\":[\"cab\"],\"application/vnd.ms-excel\":[\"xls\",\"xlm\",\"xla\",\"xlc\",\"xlt\",\"xlw\"],\"application/vnd.ms-excel.addin.macroenabled.12\":[\"xlam\"],\"application/vnd.ms-excel.sheet.binary.macroenabled.12\":[\"xlsb\"],\"application/vnd.ms-excel.sheet.macroenabled.12\":[\"xlsm\"],\"application/vnd.ms-excel.template.macroenabled.12\":[\"xltm\"],\"application/vnd.ms-fontobject\":[\"eot\"],\"application/vnd.ms-htmlhelp\":[\"chm\"],\"application/vnd.ms-ims\":[\"ims\"],\"application/vnd.ms-lrm\":[\"lrm\"],\"application/vnd.ms-officetheme\":[\"thmx\"],\"application/vnd.ms-outlook\":[\"msg\"],\"application/vnd.ms-pki.seccat\":[\"cat\"],\"application/vnd.ms-pki.stl\":[\"*stl\"],\"application/vnd.ms-powerpoint\":[\"ppt\",\"pps\",\"pot\"],\"application/vnd.ms-powerpoint.addin.macroenabled.12\":[\"ppam\"],\"application/vnd.ms-powerpoint.presentation.macroenabled.12\":[\"pptm\"],\"application/vnd.ms-powerpoint.slide.macroenabled.12\":[\"sldm\"],\"application/vnd.ms-powerpoint.slideshow.macroenabled.12\":[\"ppsm\"],\"application/vnd.ms-powerpoint.template.macroenabled.12\":[\"potm\"],\"application/vnd.ms-project\":[\"mpp\",\"mpt\"],\"application/vnd.ms-word.document.macroenabled.12\":[\"docm\"],\"application/vnd.ms-word.template.macroenabled.12\":[\"dotm\"],\"application/vnd.ms-works\":[\"wps\",\"wks\",\"wcm\",\"wdb\"],\"application/vnd.ms-wpl\":[\"wpl\"],\"application/vnd.ms-xpsdocument\":[\"xps\"],\"application/vnd.mseq\":[\"mseq\"],\"application/vnd.musician\":[\"mus\"],\"application/vnd.muvee.style\":[\"msty\"],\"application/vnd.mynfc\":[\"taglet\"],\"application/vnd.neurolanguage.nlu\":[\"nlu\"],\"application/vnd.nitf\":[\"ntf\",\"nitf\"],\"application/vnd.noblenet-directory\":[\"nnd\"],\"application/vnd.noblenet-sealer\":[\"nns\"],\"application/vnd.noblenet-web\":[\"nnw\"],\"application/vnd.nokia.n-gage.ac+xml\":[\"*ac\"],\"application/vnd.nokia.n-gage.data\":[\"ngdat\"],\"application/vnd.nokia.n-gage.symbian.install\":[\"n-gage\"],\"application/vnd.nokia.radio-preset\":[\"rpst\"],\"application/vnd.nokia.radio-presets\":[\"rpss\"],\"application/vnd.novadigm.edm\":[\"edm\"],\"application/vnd.novadigm.edx\":[\"edx\"],\"application/vnd.novadigm.ext\":[\"ext\"],\"application/vnd.oasis.opendocument.chart\":[\"odc\"],\"application/vnd.oasis.opendocument.chart-template\":[\"otc\"],\"application/vnd.oasis.opendocument.database\":[\"odb\"],\"application/vnd.oasis.opendocument.formula\":[\"odf\"],\"application/vnd.oasis.opendocument.formula-template\":[\"odft\"],\"application/vnd.oasis.opendocument.graphics\":[\"odg\"],\"application/vnd.oasis.opendocument.graphics-template\":[\"otg\"],\"application/vnd.oasis.opendocument.image\":[\"odi\"],\"application/vnd.oasis.opendocument.image-template\":[\"oti\"],\"application/vnd.oasis.opendocument.presentation\":[\"odp\"],\"application/vnd.oasis.opendocument.presentation-template\":[\"otp\"],\"application/vnd.oasis.opendocument.spreadsheet\":[\"ods\"],\"application/vnd.oasis.opendocument.spreadsheet-template\":[\"ots\"],\"application/vnd.oasis.opendocument.text\":[\"odt\"],\"application/vnd.oasis.opendocument.text-master\":[\"odm\"],\"application/vnd.oasis.opendocument.text-template\":[\"ott\"],\"application/vnd.oasis.opendocument.text-web\":[\"oth\"],\"application/vnd.olpc-sugar\":[\"xo\"],\"application/vnd.oma.dd2+xml\":[\"dd2\"],\"application/vnd.openblox.game+xml\":[\"obgx\"],\"application/vnd.openofficeorg.extension\":[\"oxt\"],\"application/vnd.openstreetmap.data+xml\":[\"osm\"],\"application/vnd.openxmlformats-officedocument.presentationml.presentation\":[\"pptx\"],\"application/vnd.openxmlformats-officedocument.presentationml.slide\":[\"sldx\"],\"application/vnd.openxmlformats-officedocument.presentationml.slideshow\":[\"ppsx\"],\"application/vnd.openxmlformats-officedocument.presentationml.template\":[\"potx\"],\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\":[\"xlsx\"],\"application/vnd.openxmlformats-officedocument.spreadsheetml.template\":[\"xltx\"],\"application/vnd.openxmlformats-officedocument.wordprocessingml.document\":[\"docx\"],\"application/vnd.openxmlformats-officedocument.wordprocessingml.template\":[\"dotx\"],\"application/vnd.osgeo.mapguide.package\":[\"mgp\"],\"application/vnd.osgi.dp\":[\"dp\"],\"application/vnd.osgi.subsystem\":[\"esa\"],\"application/vnd.palm\":[\"pdb\",\"pqa\",\"oprc\"],\"application/vnd.pawaafile\":[\"paw\"],\"application/vnd.pg.format\":[\"str\"],\"application/vnd.pg.osasli\":[\"ei6\"],\"application/vnd.picsel\":[\"efif\"],\"application/vnd.pmi.widget\":[\"wg\"],\"application/vnd.pocketlearn\":[\"plf\"],\"application/vnd.powerbuilder6\":[\"pbd\"],\"application/vnd.previewsystems.box\":[\"box\"],\"application/vnd.proteus.magazine\":[\"mgz\"],\"application/vnd.publishare-delta-tree\":[\"qps\"],\"application/vnd.pvi.ptid1\":[\"ptid\"],\"application/vnd.quark.quarkxpress\":[\"qxd\",\"qxt\",\"qwd\",\"qwt\",\"qxl\",\"qxb\"],\"application/vnd.rar\":[\"rar\"],\"application/vnd.realvnc.bed\":[\"bed\"],\"application/vnd.recordare.musicxml\":[\"mxl\"],\"application/vnd.recordare.musicxml+xml\":[\"musicxml\"],\"application/vnd.rig.cryptonote\":[\"cryptonote\"],\"application/vnd.rim.cod\":[\"cod\"],\"application/vnd.rn-realmedia\":[\"rm\"],\"application/vnd.rn-realmedia-vbr\":[\"rmvb\"],\"application/vnd.route66.link66+xml\":[\"link66\"],\"application/vnd.sailingtracker.track\":[\"st\"],\"application/vnd.seemail\":[\"see\"],\"application/vnd.sema\":[\"sema\"],\"application/vnd.semd\":[\"semd\"],\"application/vnd.semf\":[\"semf\"],\"application/vnd.shana.informed.formdata\":[\"ifm\"],\"application/vnd.shana.informed.formtemplate\":[\"itp\"],\"application/vnd.shana.informed.interchange\":[\"iif\"],\"application/vnd.shana.informed.package\":[\"ipk\"],\"application/vnd.simtech-mindmapper\":[\"twd\",\"twds\"],\"application/vnd.smaf\":[\"mmf\"],\"application/vnd.smart.teacher\":[\"teacher\"],\"application/vnd.software602.filler.form+xml\":[\"fo\"],\"application/vnd.solent.sdkm+xml\":[\"sdkm\",\"sdkd\"],\"application/vnd.spotfire.dxp\":[\"dxp\"],\"application/vnd.spotfire.sfs\":[\"sfs\"],\"application/vnd.stardivision.calc\":[\"sdc\"],\"application/vnd.stardivision.draw\":[\"sda\"],\"application/vnd.stardivision.impress\":[\"sdd\"],\"application/vnd.stardivision.math\":[\"smf\"],\"application/vnd.stardivision.writer\":[\"sdw\",\"vor\"],\"application/vnd.stardivision.writer-global\":[\"sgl\"],\"application/vnd.stepmania.package\":[\"smzip\"],\"application/vnd.stepmania.stepchart\":[\"sm\"],\"application/vnd.sun.wadl+xml\":[\"wadl\"],\"application/vnd.sun.xml.calc\":[\"sxc\"],\"application/vnd.sun.xml.calc.template\":[\"stc\"],\"application/vnd.sun.xml.draw\":[\"sxd\"],\"application/vnd.sun.xml.draw.template\":[\"std\"],\"application/vnd.sun.xml.impress\":[\"sxi\"],\"application/vnd.sun.xml.impress.template\":[\"sti\"],\"application/vnd.sun.xml.math\":[\"sxm\"],\"application/vnd.sun.xml.writer\":[\"sxw\"],\"application/vnd.sun.xml.writer.global\":[\"sxg\"],\"application/vnd.sun.xml.writer.template\":[\"stw\"],\"application/vnd.sus-calendar\":[\"sus\",\"susp\"],\"application/vnd.svd\":[\"svd\"],\"application/vnd.symbian.install\":[\"sis\",\"sisx\"],\"application/vnd.syncml+xml\":[\"xsm\"],\"application/vnd.syncml.dm+wbxml\":[\"bdm\"],\"application/vnd.syncml.dm+xml\":[\"xdm\"],\"application/vnd.syncml.dmddf+xml\":[\"ddf\"],\"application/vnd.tao.intent-module-archive\":[\"tao\"],\"application/vnd.tcpdump.pcap\":[\"pcap\",\"cap\",\"dmp\"],\"application/vnd.tmobile-livetv\":[\"tmo\"],\"application/vnd.trid.tpt\":[\"tpt\"],\"application/vnd.triscape.mxs\":[\"mxs\"],\"application/vnd.trueapp\":[\"tra\"],\"application/vnd.ufdl\":[\"ufd\",\"ufdl\"],\"application/vnd.uiq.theme\":[\"utz\"],\"application/vnd.umajin\":[\"umj\"],\"application/vnd.unity\":[\"unityweb\"],\"application/vnd.uoml+xml\":[\"uoml\"],\"application/vnd.vcx\":[\"vcx\"],\"application/vnd.visio\":[\"vsd\",\"vst\",\"vss\",\"vsw\"],\"application/vnd.visionary\":[\"vis\"],\"application/vnd.vsf\":[\"vsf\"],\"application/vnd.wap.wbxml\":[\"wbxml\"],\"application/vnd.wap.wmlc\":[\"wmlc\"],\"application/vnd.wap.wmlscriptc\":[\"wmlsc\"],\"application/vnd.webturbo\":[\"wtb\"],\"application/vnd.wolfram.player\":[\"nbp\"],\"application/vnd.wordperfect\":[\"wpd\"],\"application/vnd.wqd\":[\"wqd\"],\"application/vnd.wt.stf\":[\"stf\"],\"application/vnd.xara\":[\"xar\"],\"application/vnd.xfdl\":[\"xfdl\"],\"application/vnd.yamaha.hv-dic\":[\"hvd\"],\"application/vnd.yamaha.hv-script\":[\"hvs\"],\"application/vnd.yamaha.hv-voice\":[\"hvp\"],\"application/vnd.yamaha.openscoreformat\":[\"osf\"],\"application/vnd.yamaha.openscoreformat.osfpvg+xml\":[\"osfpvg\"],\"application/vnd.yamaha.smaf-audio\":[\"saf\"],\"application/vnd.yamaha.smaf-phrase\":[\"spf\"],\"application/vnd.yellowriver-custom-menu\":[\"cmp\"],\"application/vnd.zul\":[\"zir\",\"zirz\"],\"application/vnd.zzazz.deck+xml\":[\"zaz\"],\"application/x-7z-compressed\":[\"7z\"],\"application/x-abiword\":[\"abw\"],\"application/x-ace-compressed\":[\"ace\"],\"application/x-apple-diskimage\":[\"*dmg\"],\"application/x-arj\":[\"arj\"],\"application/x-authorware-bin\":[\"aab\",\"x32\",\"u32\",\"vox\"],\"application/x-authorware-map\":[\"aam\"],\"application/x-authorware-seg\":[\"aas\"],\"application/x-bcpio\":[\"bcpio\"],\"application/x-bdoc\":[\"*bdoc\"],\"application/x-bittorrent\":[\"torrent\"],\"application/x-blorb\":[\"blb\",\"blorb\"],\"application/x-bzip\":[\"bz\"],\"application/x-bzip2\":[\"bz2\",\"boz\"],\"application/x-cbr\":[\"cbr\",\"cba\",\"cbt\",\"cbz\",\"cb7\"],\"application/x-cdlink\":[\"vcd\"],\"application/x-cfs-compressed\":[\"cfs\"],\"application/x-chat\":[\"chat\"],\"application/x-chess-pgn\":[\"pgn\"],\"application/x-chrome-extension\":[\"crx\"],\"application/x-cocoa\":[\"cco\"],\"application/x-conference\":[\"nsc\"],\"application/x-cpio\":[\"cpio\"],\"application/x-csh\":[\"csh\"],\"application/x-debian-package\":[\"*deb\",\"udeb\"],\"application/x-dgc-compressed\":[\"dgc\"],\"application/x-director\":[\"dir\",\"dcr\",\"dxr\",\"cst\",\"cct\",\"cxt\",\"w3d\",\"fgd\",\"swa\"],\"application/x-doom\":[\"wad\"],\"application/x-dtbncx+xml\":[\"ncx\"],\"application/x-dtbook+xml\":[\"dtb\"],\"application/x-dtbresource+xml\":[\"res\"],\"application/x-dvi\":[\"dvi\"],\"application/x-envoy\":[\"evy\"],\"application/x-eva\":[\"eva\"],\"application/x-font-bdf\":[\"bdf\"],\"application/x-font-ghostscript\":[\"gsf\"],\"application/x-font-linux-psf\":[\"psf\"],\"application/x-font-pcf\":[\"pcf\"],\"application/x-font-snf\":[\"snf\"],\"application/x-font-type1\":[\"pfa\",\"pfb\",\"pfm\",\"afm\"],\"application/x-freearc\":[\"arc\"],\"application/x-futuresplash\":[\"spl\"],\"application/x-gca-compressed\":[\"gca\"],\"application/x-glulx\":[\"ulx\"],\"application/x-gnumeric\":[\"gnumeric\"],\"application/x-gramps-xml\":[\"gramps\"],\"application/x-gtar\":[\"gtar\"],\"application/x-hdf\":[\"hdf\"],\"application/x-httpd-php\":[\"php\"],\"application/x-install-instructions\":[\"install\"],\"application/x-iso9660-image\":[\"*iso\"],\"application/x-iwork-keynote-sffkey\":[\"*key\"],\"application/x-iwork-numbers-sffnumbers\":[\"*numbers\"],\"application/x-iwork-pages-sffpages\":[\"*pages\"],\"application/x-java-archive-diff\":[\"jardiff\"],\"application/x-java-jnlp-file\":[\"jnlp\"],\"application/x-keepass2\":[\"kdbx\"],\"application/x-latex\":[\"latex\"],\"application/x-lua-bytecode\":[\"luac\"],\"application/x-lzh-compressed\":[\"lzh\",\"lha\"],\"application/x-makeself\":[\"run\"],\"application/x-mie\":[\"mie\"],\"application/x-mobipocket-ebook\":[\"prc\",\"mobi\"],\"application/x-ms-application\":[\"application\"],\"application/x-ms-shortcut\":[\"lnk\"],\"application/x-ms-wmd\":[\"wmd\"],\"application/x-ms-wmz\":[\"wmz\"],\"application/x-ms-xbap\":[\"xbap\"],\"application/x-msaccess\":[\"mdb\"],\"application/x-msbinder\":[\"obd\"],\"application/x-mscardfile\":[\"crd\"],\"application/x-msclip\":[\"clp\"],\"application/x-msdos-program\":[\"*exe\"],\"application/x-msdownload\":[\"*exe\",\"*dll\",\"com\",\"bat\",\"*msi\"],\"application/x-msmediaview\":[\"mvb\",\"m13\",\"m14\"],\"application/x-msmetafile\":[\"*wmf\",\"*wmz\",\"*emf\",\"emz\"],\"application/x-msmoney\":[\"mny\"],\"application/x-mspublisher\":[\"pub\"],\"application/x-msschedule\":[\"scd\"],\"application/x-msterminal\":[\"trm\"],\"application/x-mswrite\":[\"wri\"],\"application/x-netcdf\":[\"nc\",\"cdf\"],\"application/x-ns-proxy-autoconfig\":[\"pac\"],\"application/x-nzb\":[\"nzb\"],\"application/x-perl\":[\"pl\",\"pm\"],\"application/x-pilot\":[\"*prc\",\"*pdb\"],\"application/x-pkcs12\":[\"p12\",\"pfx\"],\"application/x-pkcs7-certificates\":[\"p7b\",\"spc\"],\"application/x-pkcs7-certreqresp\":[\"p7r\"],\"application/x-rar-compressed\":[\"*rar\"],\"application/x-redhat-package-manager\":[\"rpm\"],\"application/x-research-info-systems\":[\"ris\"],\"application/x-sea\":[\"sea\"],\"application/x-sh\":[\"sh\"],\"application/x-shar\":[\"shar\"],\"application/x-shockwave-flash\":[\"swf\"],\"application/x-silverlight-app\":[\"xap\"],\"application/x-sql\":[\"sql\"],\"application/x-stuffit\":[\"sit\"],\"application/x-stuffitx\":[\"sitx\"],\"application/x-subrip\":[\"srt\"],\"application/x-sv4cpio\":[\"sv4cpio\"],\"application/x-sv4crc\":[\"sv4crc\"],\"application/x-t3vm-image\":[\"t3\"],\"application/x-tads\":[\"gam\"],\"application/x-tar\":[\"tar\"],\"application/x-tcl\":[\"tcl\",\"tk\"],\"application/x-tex\":[\"tex\"],\"application/x-tex-tfm\":[\"tfm\"],\"application/x-texinfo\":[\"texinfo\",\"texi\"],\"application/x-tgif\":[\"*obj\"],\"application/x-ustar\":[\"ustar\"],\"application/x-virtualbox-hdd\":[\"hdd\"],\"application/x-virtualbox-ova\":[\"ova\"],\"application/x-virtualbox-ovf\":[\"ovf\"],\"application/x-virtualbox-vbox\":[\"vbox\"],\"application/x-virtualbox-vbox-extpack\":[\"vbox-extpack\"],\"application/x-virtualbox-vdi\":[\"vdi\"],\"application/x-virtualbox-vhd\":[\"vhd\"],\"application/x-virtualbox-vmdk\":[\"vmdk\"],\"application/x-wais-source\":[\"src\"],\"application/x-web-app-manifest+json\":[\"webapp\"],\"application/x-x509-ca-cert\":[\"der\",\"crt\",\"pem\"],\"application/x-xfig\":[\"fig\"],\"application/x-xliff+xml\":[\"*xlf\"],\"application/x-xpinstall\":[\"xpi\"],\"application/x-xz\":[\"xz\"],\"application/x-zmachine\":[\"z1\",\"z2\",\"z3\",\"z4\",\"z5\",\"z6\",\"z7\",\"z8\"],\"audio/vnd.dece.audio\":[\"uva\",\"uvva\"],\"audio/vnd.digital-winds\":[\"eol\"],\"audio/vnd.dra\":[\"dra\"],\"audio/vnd.dts\":[\"dts\"],\"audio/vnd.dts.hd\":[\"dtshd\"],\"audio/vnd.lucent.voice\":[\"lvp\"],\"audio/vnd.ms-playready.media.pya\":[\"pya\"],\"audio/vnd.nuera.ecelp4800\":[\"ecelp4800\"],\"audio/vnd.nuera.ecelp7470\":[\"ecelp7470\"],\"audio/vnd.nuera.ecelp9600\":[\"ecelp9600\"],\"audio/vnd.rip\":[\"rip\"],\"audio/x-aac\":[\"aac\"],\"audio/x-aiff\":[\"aif\",\"aiff\",\"aifc\"],\"audio/x-caf\":[\"caf\"],\"audio/x-flac\":[\"flac\"],\"audio/x-m4a\":[\"*m4a\"],\"audio/x-matroska\":[\"mka\"],\"audio/x-mpegurl\":[\"m3u\"],\"audio/x-ms-wax\":[\"wax\"],\"audio/x-ms-wma\":[\"wma\"],\"audio/x-pn-realaudio\":[\"ram\",\"ra\"],\"audio/x-pn-realaudio-plugin\":[\"rmp\"],\"audio/x-realaudio\":[\"*ra\"],\"audio/x-wav\":[\"*wav\"],\"chemical/x-cdx\":[\"cdx\"],\"chemical/x-cif\":[\"cif\"],\"chemical/x-cmdf\":[\"cmdf\"],\"chemical/x-cml\":[\"cml\"],\"chemical/x-csml\":[\"csml\"],\"chemical/x-xyz\":[\"xyz\"],\"image/prs.btif\":[\"btif\"],\"image/prs.pti\":[\"pti\"],\"image/vnd.adobe.photoshop\":[\"psd\"],\"image/vnd.airzip.accelerator.azv\":[\"azv\"],\"image/vnd.dece.graphic\":[\"uvi\",\"uvvi\",\"uvg\",\"uvvg\"],\"image/vnd.djvu\":[\"djvu\",\"djv\"],\"image/vnd.dvb.subtitle\":[\"*sub\"],\"image/vnd.dwg\":[\"dwg\"],\"image/vnd.dxf\":[\"dxf\"],\"image/vnd.fastbidsheet\":[\"fbs\"],\"image/vnd.fpx\":[\"fpx\"],\"image/vnd.fst\":[\"fst\"],\"image/vnd.fujixerox.edmics-mmr\":[\"mmr\"],\"image/vnd.fujixerox.edmics-rlc\":[\"rlc\"],\"image/vnd.microsoft.icon\":[\"ico\"],\"image/vnd.ms-dds\":[\"dds\"],\"image/vnd.ms-modi\":[\"mdi\"],\"image/vnd.ms-photo\":[\"wdp\"],\"image/vnd.net-fpx\":[\"npx\"],\"image/vnd.pco.b16\":[\"b16\"],\"image/vnd.tencent.tap\":[\"tap\"],\"image/vnd.valve.source.texture\":[\"vtf\"],\"image/vnd.wap.wbmp\":[\"wbmp\"],\"image/vnd.xiff\":[\"xif\"],\"image/vnd.zbrush.pcx\":[\"pcx\"],\"image/x-3ds\":[\"3ds\"],\"image/x-cmu-raster\":[\"ras\"],\"image/x-cmx\":[\"cmx\"],\"image/x-freehand\":[\"fh\",\"fhc\",\"fh4\",\"fh5\",\"fh7\"],\"image/x-icon\":[\"*ico\"],\"image/x-jng\":[\"jng\"],\"image/x-mrsid-image\":[\"sid\"],\"image/x-ms-bmp\":[\"*bmp\"],\"image/x-pcx\":[\"*pcx\"],\"image/x-pict\":[\"pic\",\"pct\"],\"image/x-portable-anymap\":[\"pnm\"],\"image/x-portable-bitmap\":[\"pbm\"],\"image/x-portable-graymap\":[\"pgm\"],\"image/x-portable-pixmap\":[\"ppm\"],\"image/x-rgb\":[\"rgb\"],\"image/x-tga\":[\"tga\"],\"image/x-xbitmap\":[\"xbm\"],\"image/x-xpixmap\":[\"xpm\"],\"image/x-xwindowdump\":[\"xwd\"],\"message/vnd.wfa.wsc\":[\"wsc\"],\"model/vnd.collada+xml\":[\"dae\"],\"model/vnd.dwf\":[\"dwf\"],\"model/vnd.gdl\":[\"gdl\"],\"model/vnd.gtw\":[\"gtw\"],\"model/vnd.mts\":[\"mts\"],\"model/vnd.opengex\":[\"ogex\"],\"model/vnd.parasolid.transmit.binary\":[\"x_b\"],\"model/vnd.parasolid.transmit.text\":[\"x_t\"],\"model/vnd.sap.vds\":[\"vds\"],\"model/vnd.usdz+zip\":[\"usdz\"],\"model/vnd.valve.source.compiled-map\":[\"bsp\"],\"model/vnd.vtu\":[\"vtu\"],\"text/prs.lines.tag\":[\"dsc\"],\"text/vnd.curl\":[\"curl\"],\"text/vnd.curl.dcurl\":[\"dcurl\"],\"text/vnd.curl.mcurl\":[\"mcurl\"],\"text/vnd.curl.scurl\":[\"scurl\"],\"text/vnd.dvb.subtitle\":[\"sub\"],\"text/vnd.fly\":[\"fly\"],\"text/vnd.fmi.flexstor\":[\"flx\"],\"text/vnd.graphviz\":[\"gv\"],\"text/vnd.in3d.3dml\":[\"3dml\"],\"text/vnd.in3d.spot\":[\"spot\"],\"text/vnd.sun.j2me.app-descriptor\":[\"jad\"],\"text/vnd.wap.wml\":[\"wml\"],\"text/vnd.wap.wmlscript\":[\"wmls\"],\"text/x-asm\":[\"s\",\"asm\"],\"text/x-c\":[\"c\",\"cc\",\"cxx\",\"cpp\",\"h\",\"hh\",\"dic\"],\"text/x-component\":[\"htc\"],\"text/x-fortran\":[\"f\",\"for\",\"f77\",\"f90\"],\"text/x-handlebars-template\":[\"hbs\"],\"text/x-java-source\":[\"java\"],\"text/x-lua\":[\"lua\"],\"text/x-markdown\":[\"mkd\"],\"text/x-nfo\":[\"nfo\"],\"text/x-opml\":[\"opml\"],\"text/x-org\":[\"*org\"],\"text/x-pascal\":[\"p\",\"pas\"],\"text/x-processing\":[\"pde\"],\"text/x-sass\":[\"sass\"],\"text/x-scss\":[\"scss\"],\"text/x-setext\":[\"etx\"],\"text/x-sfv\":[\"sfv\"],\"text/x-suse-ymp\":[\"ymp\"],\"text/x-uuencode\":[\"uu\"],\"text/x-vcalendar\":[\"vcs\"],\"text/x-vcard\":[\"vcf\"],\"video/vnd.dece.hd\":[\"uvh\",\"uvvh\"],\"video/vnd.dece.mobile\":[\"uvm\",\"uvvm\"],\"video/vnd.dece.pd\":[\"uvp\",\"uvvp\"],\"video/vnd.dece.sd\":[\"uvs\",\"uvvs\"],\"video/vnd.dece.video\":[\"uvv\",\"uvvv\"],\"video/vnd.dvb.file\":[\"dvb\"],\"video/vnd.fvt\":[\"fvt\"],\"video/vnd.mpegurl\":[\"mxu\",\"m4u\"],\"video/vnd.ms-playready.media.pyv\":[\"pyv\"],\"video/vnd.uvvu.mp4\":[\"uvu\",\"uvvu\"],\"video/vnd.vivo\":[\"viv\"],\"video/x-f4v\":[\"f4v\"],\"video/x-fli\":[\"fli\"],\"video/x-flv\":[\"flv\"],\"video/x-m4v\":[\"m4v\"],\"video/x-matroska\":[\"mkv\",\"mk3d\",\"mks\"],\"video/x-mng\":[\"mng\"],\"video/x-ms-asf\":[\"asf\",\"asx\"],\"video/x-ms-vob\":[\"vob\"],\"video/x-ms-wm\":[\"wm\"],\"video/x-ms-wmv\":[\"wmv\"],\"video/x-ms-wmx\":[\"wmx\"],\"video/x-ms-wvx\":[\"wvx\"],\"video/x-msvideo\":[\"avi\"],\"video/x-sgi-movie\":[\"movie\"],\"video/x-smv\":[\"smv\"],\"x-conference/x-cooltalk\":[\"ice\"]};","module.exports = {\"application/andrew-inset\":[\"ez\"],\"application/applixware\":[\"aw\"],\"application/atom+xml\":[\"atom\"],\"application/atomcat+xml\":[\"atomcat\"],\"application/atomdeleted+xml\":[\"atomdeleted\"],\"application/atomsvc+xml\":[\"atomsvc\"],\"application/atsc-dwd+xml\":[\"dwd\"],\"application/atsc-held+xml\":[\"held\"],\"application/atsc-rsat+xml\":[\"rsat\"],\"application/bdoc\":[\"bdoc\"],\"application/calendar+xml\":[\"xcs\"],\"application/ccxml+xml\":[\"ccxml\"],\"application/cdfx+xml\":[\"cdfx\"],\"application/cdmi-capability\":[\"cdmia\"],\"application/cdmi-container\":[\"cdmic\"],\"application/cdmi-domain\":[\"cdmid\"],\"application/cdmi-object\":[\"cdmio\"],\"application/cdmi-queue\":[\"cdmiq\"],\"application/cu-seeme\":[\"cu\"],\"application/dash+xml\":[\"mpd\"],\"application/davmount+xml\":[\"davmount\"],\"application/docbook+xml\":[\"dbk\"],\"application/dssc+der\":[\"dssc\"],\"application/dssc+xml\":[\"xdssc\"],\"application/ecmascript\":[\"es\",\"ecma\"],\"application/emma+xml\":[\"emma\"],\"application/emotionml+xml\":[\"emotionml\"],\"application/epub+zip\":[\"epub\"],\"application/exi\":[\"exi\"],\"application/express\":[\"exp\"],\"application/fdt+xml\":[\"fdt\"],\"application/font-tdpfr\":[\"pfr\"],\"application/geo+json\":[\"geojson\"],\"application/gml+xml\":[\"gml\"],\"application/gpx+xml\":[\"gpx\"],\"application/gxf\":[\"gxf\"],\"application/gzip\":[\"gz\"],\"application/hjson\":[\"hjson\"],\"application/hyperstudio\":[\"stk\"],\"application/inkml+xml\":[\"ink\",\"inkml\"],\"application/ipfix\":[\"ipfix\"],\"application/its+xml\":[\"its\"],\"application/java-archive\":[\"jar\",\"war\",\"ear\"],\"application/java-serialized-object\":[\"ser\"],\"application/java-vm\":[\"class\"],\"application/javascript\":[\"js\",\"mjs\"],\"application/json\":[\"json\",\"map\"],\"application/json5\":[\"json5\"],\"application/jsonml+json\":[\"jsonml\"],\"application/ld+json\":[\"jsonld\"],\"application/lgr+xml\":[\"lgr\"],\"application/lost+xml\":[\"lostxml\"],\"application/mac-binhex40\":[\"hqx\"],\"application/mac-compactpro\":[\"cpt\"],\"application/mads+xml\":[\"mads\"],\"application/manifest+json\":[\"webmanifest\"],\"application/marc\":[\"mrc\"],\"application/marcxml+xml\":[\"mrcx\"],\"application/mathematica\":[\"ma\",\"nb\",\"mb\"],\"application/mathml+xml\":[\"mathml\"],\"application/mbox\":[\"mbox\"],\"application/mediaservercontrol+xml\":[\"mscml\"],\"application/metalink+xml\":[\"metalink\"],\"application/metalink4+xml\":[\"meta4\"],\"application/mets+xml\":[\"mets\"],\"application/mmt-aei+xml\":[\"maei\"],\"application/mmt-usd+xml\":[\"musd\"],\"application/mods+xml\":[\"mods\"],\"application/mp21\":[\"m21\",\"mp21\"],\"application/mp4\":[\"mp4s\",\"m4p\"],\"application/msword\":[\"doc\",\"dot\"],\"application/mxf\":[\"mxf\"],\"application/n-quads\":[\"nq\"],\"application/n-triples\":[\"nt\"],\"application/node\":[\"cjs\"],\"application/octet-stream\":[\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"],\"application/oda\":[\"oda\"],\"application/oebps-package+xml\":[\"opf\"],\"application/ogg\":[\"ogx\"],\"application/omdoc+xml\":[\"omdoc\"],\"application/onenote\":[\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"],\"application/oxps\":[\"oxps\"],\"application/p2p-overlay+xml\":[\"relo\"],\"application/patch-ops-error+xml\":[\"xer\"],\"application/pdf\":[\"pdf\"],\"application/pgp-encrypted\":[\"pgp\"],\"application/pgp-signature\":[\"asc\",\"sig\"],\"application/pics-rules\":[\"prf\"],\"application/pkcs10\":[\"p10\"],\"application/pkcs7-mime\":[\"p7m\",\"p7c\"],\"application/pkcs7-signature\":[\"p7s\"],\"application/pkcs8\":[\"p8\"],\"application/pkix-attr-cert\":[\"ac\"],\"application/pkix-cert\":[\"cer\"],\"application/pkix-crl\":[\"crl\"],\"application/pkix-pkipath\":[\"pkipath\"],\"application/pkixcmp\":[\"pki\"],\"application/pls+xml\":[\"pls\"],\"application/postscript\":[\"ai\",\"eps\",\"ps\"],\"application/provenance+xml\":[\"provx\"],\"application/pskc+xml\":[\"pskcxml\"],\"application/raml+yaml\":[\"raml\"],\"application/rdf+xml\":[\"rdf\",\"owl\"],\"application/reginfo+xml\":[\"rif\"],\"application/relax-ng-compact-syntax\":[\"rnc\"],\"application/resource-lists+xml\":[\"rl\"],\"application/resource-lists-diff+xml\":[\"rld\"],\"application/rls-services+xml\":[\"rs\"],\"application/route-apd+xml\":[\"rapd\"],\"application/route-s-tsid+xml\":[\"sls\"],\"application/route-usd+xml\":[\"rusd\"],\"application/rpki-ghostbusters\":[\"gbr\"],\"application/rpki-manifest\":[\"mft\"],\"application/rpki-roa\":[\"roa\"],\"application/rsd+xml\":[\"rsd\"],\"application/rss+xml\":[\"rss\"],\"application/rtf\":[\"rtf\"],\"application/sbml+xml\":[\"sbml\"],\"application/scvp-cv-request\":[\"scq\"],\"application/scvp-cv-response\":[\"scs\"],\"application/scvp-vp-request\":[\"spq\"],\"application/scvp-vp-response\":[\"spp\"],\"application/sdp\":[\"sdp\"],\"application/senml+xml\":[\"senmlx\"],\"application/sensml+xml\":[\"sensmlx\"],\"application/set-payment-initiation\":[\"setpay\"],\"application/set-registration-initiation\":[\"setreg\"],\"application/shf+xml\":[\"shf\"],\"application/sieve\":[\"siv\",\"sieve\"],\"application/smil+xml\":[\"smi\",\"smil\"],\"application/sparql-query\":[\"rq\"],\"application/sparql-results+xml\":[\"srx\"],\"application/srgs\":[\"gram\"],\"application/srgs+xml\":[\"grxml\"],\"application/sru+xml\":[\"sru\"],\"application/ssdl+xml\":[\"ssdl\"],\"application/ssml+xml\":[\"ssml\"],\"application/swid+xml\":[\"swidtag\"],\"application/tei+xml\":[\"tei\",\"teicorpus\"],\"application/thraud+xml\":[\"tfi\"],\"application/timestamped-data\":[\"tsd\"],\"application/toml\":[\"toml\"],\"application/trig\":[\"trig\"],\"application/ttml+xml\":[\"ttml\"],\"application/ubjson\":[\"ubj\"],\"application/urc-ressheet+xml\":[\"rsheet\"],\"application/urc-targetdesc+xml\":[\"td\"],\"application/voicexml+xml\":[\"vxml\"],\"application/wasm\":[\"wasm\"],\"application/widget\":[\"wgt\"],\"application/winhlp\":[\"hlp\"],\"application/wsdl+xml\":[\"wsdl\"],\"application/wspolicy+xml\":[\"wspolicy\"],\"application/xaml+xml\":[\"xaml\"],\"application/xcap-att+xml\":[\"xav\"],\"application/xcap-caps+xml\":[\"xca\"],\"application/xcap-diff+xml\":[\"xdf\"],\"application/xcap-el+xml\":[\"xel\"],\"application/xcap-ns+xml\":[\"xns\"],\"application/xenc+xml\":[\"xenc\"],\"application/xhtml+xml\":[\"xhtml\",\"xht\"],\"application/xliff+xml\":[\"xlf\"],\"application/xml\":[\"xml\",\"xsl\",\"xsd\",\"rng\"],\"application/xml-dtd\":[\"dtd\"],\"application/xop+xml\":[\"xop\"],\"application/xproc+xml\":[\"xpl\"],\"application/xslt+xml\":[\"*xsl\",\"xslt\"],\"application/xspf+xml\":[\"xspf\"],\"application/xv+xml\":[\"mxml\",\"xhvml\",\"xvml\",\"xvm\"],\"application/yang\":[\"yang\"],\"application/yin+xml\":[\"yin\"],\"application/zip\":[\"zip\"],\"audio/3gpp\":[\"*3gpp\"],\"audio/adpcm\":[\"adp\"],\"audio/amr\":[\"amr\"],\"audio/basic\":[\"au\",\"snd\"],\"audio/midi\":[\"mid\",\"midi\",\"kar\",\"rmi\"],\"audio/mobile-xmf\":[\"mxmf\"],\"audio/mp3\":[\"*mp3\"],\"audio/mp4\":[\"m4a\",\"mp4a\"],\"audio/mpeg\":[\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"],\"audio/ogg\":[\"oga\",\"ogg\",\"spx\",\"opus\"],\"audio/s3m\":[\"s3m\"],\"audio/silk\":[\"sil\"],\"audio/wav\":[\"wav\"],\"audio/wave\":[\"*wav\"],\"audio/webm\":[\"weba\"],\"audio/xm\":[\"xm\"],\"font/collection\":[\"ttc\"],\"font/otf\":[\"otf\"],\"font/ttf\":[\"ttf\"],\"font/woff\":[\"woff\"],\"font/woff2\":[\"woff2\"],\"image/aces\":[\"exr\"],\"image/apng\":[\"apng\"],\"image/avif\":[\"avif\"],\"image/bmp\":[\"bmp\"],\"image/cgm\":[\"cgm\"],\"image/dicom-rle\":[\"drle\"],\"image/emf\":[\"emf\"],\"image/fits\":[\"fits\"],\"image/g3fax\":[\"g3\"],\"image/gif\":[\"gif\"],\"image/heic\":[\"heic\"],\"image/heic-sequence\":[\"heics\"],\"image/heif\":[\"heif\"],\"image/heif-sequence\":[\"heifs\"],\"image/hej2k\":[\"hej2\"],\"image/hsj2\":[\"hsj2\"],\"image/ief\":[\"ief\"],\"image/jls\":[\"jls\"],\"image/jp2\":[\"jp2\",\"jpg2\"],\"image/jpeg\":[\"jpeg\",\"jpg\",\"jpe\"],\"image/jph\":[\"jph\"],\"image/jphc\":[\"jhc\"],\"image/jpm\":[\"jpm\"],\"image/jpx\":[\"jpx\",\"jpf\"],\"image/jxr\":[\"jxr\"],\"image/jxra\":[\"jxra\"],\"image/jxrs\":[\"jxrs\"],\"image/jxs\":[\"jxs\"],\"image/jxsc\":[\"jxsc\"],\"image/jxsi\":[\"jxsi\"],\"image/jxss\":[\"jxss\"],\"image/ktx\":[\"ktx\"],\"image/ktx2\":[\"ktx2\"],\"image/png\":[\"png\"],\"image/sgi\":[\"sgi\"],\"image/svg+xml\":[\"svg\",\"svgz\"],\"image/t38\":[\"t38\"],\"image/tiff\":[\"tif\",\"tiff\"],\"image/tiff-fx\":[\"tfx\"],\"image/webp\":[\"webp\"],\"image/wmf\":[\"wmf\"],\"message/disposition-notification\":[\"disposition-notification\"],\"message/global\":[\"u8msg\"],\"message/global-delivery-status\":[\"u8dsn\"],\"message/global-disposition-notification\":[\"u8mdn\"],\"message/global-headers\":[\"u8hdr\"],\"message/rfc822\":[\"eml\",\"mime\"],\"model/3mf\":[\"3mf\"],\"model/gltf+json\":[\"gltf\"],\"model/gltf-binary\":[\"glb\"],\"model/iges\":[\"igs\",\"iges\"],\"model/mesh\":[\"msh\",\"mesh\",\"silo\"],\"model/mtl\":[\"mtl\"],\"model/obj\":[\"obj\"],\"model/step+xml\":[\"stpx\"],\"model/step+zip\":[\"stpz\"],\"model/step-xml+zip\":[\"stpxz\"],\"model/stl\":[\"stl\"],\"model/vrml\":[\"wrl\",\"vrml\"],\"model/x3d+binary\":[\"*x3db\",\"x3dbz\"],\"model/x3d+fastinfoset\":[\"x3db\"],\"model/x3d+vrml\":[\"*x3dv\",\"x3dvz\"],\"model/x3d+xml\":[\"x3d\",\"x3dz\"],\"model/x3d-vrml\":[\"x3dv\"],\"text/cache-manifest\":[\"appcache\",\"manifest\"],\"text/calendar\":[\"ics\",\"ifb\"],\"text/coffeescript\":[\"coffee\",\"litcoffee\"],\"text/css\":[\"css\"],\"text/csv\":[\"csv\"],\"text/html\":[\"html\",\"htm\",\"shtml\"],\"text/jade\":[\"jade\"],\"text/jsx\":[\"jsx\"],\"text/less\":[\"less\"],\"text/markdown\":[\"markdown\",\"md\"],\"text/mathml\":[\"mml\"],\"text/mdx\":[\"mdx\"],\"text/n3\":[\"n3\"],\"text/plain\":[\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"],\"text/richtext\":[\"rtx\"],\"text/rtf\":[\"*rtf\"],\"text/sgml\":[\"sgml\",\"sgm\"],\"text/shex\":[\"shex\"],\"text/slim\":[\"slim\",\"slm\"],\"text/spdx\":[\"spdx\"],\"text/stylus\":[\"stylus\",\"styl\"],\"text/tab-separated-values\":[\"tsv\"],\"text/troff\":[\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"],\"text/turtle\":[\"ttl\"],\"text/uri-list\":[\"uri\",\"uris\",\"urls\"],\"text/vcard\":[\"vcard\"],\"text/vtt\":[\"vtt\"],\"text/xml\":[\"*xml\"],\"text/yaml\":[\"yaml\",\"yml\"],\"video/3gpp\":[\"3gp\",\"3gpp\"],\"video/3gpp2\":[\"3g2\"],\"video/h261\":[\"h261\"],\"video/h263\":[\"h263\"],\"video/h264\":[\"h264\"],\"video/iso.segment\":[\"m4s\"],\"video/jpeg\":[\"jpgv\"],\"video/jpm\":[\"*jpm\",\"jpgm\"],\"video/mj2\":[\"mj2\",\"mjp2\"],\"video/mp2t\":[\"ts\"],\"video/mp4\":[\"mp4\",\"mp4v\",\"mpg4\"],\"video/mpeg\":[\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"],\"video/ogg\":[\"ogv\"],\"video/quicktime\":[\"qt\",\"mov\"],\"video/webm\":[\"webm\"]};","/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress\n * @license MIT */\n\n;(function(root, factory) {\n\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.NProgress = factory();\n }\n\n})(this, function() {\n var NProgress = {};\n\n NProgress.version = '0.2.0';\n\n var Settings = NProgress.settings = {\n minimum: 0.08,\n easing: 'ease',\n positionUsing: '',\n speed: 200,\n trickle: true,\n trickleRate: 0.02,\n trickleSpeed: 800,\n showSpinner: true,\n barSelector: '[role=\"bar\"]',\n spinnerSelector: '[role=\"spinner\"]',\n parent: 'body',\n template: '<div class=\"bar\" role=\"bar\"><div class=\"peg\"></div></div><div class=\"spinner\" role=\"spinner\"><div class=\"spinner-icon\"></div></div>'\n };\n\n /**\n * Updates configuration.\n *\n * NProgress.configure({\n * minimum: 0.1\n * });\n */\n NProgress.configure = function(options) {\n var key, value;\n for (key in options) {\n value = options[key];\n if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value;\n }\n\n return this;\n };\n\n /**\n * Last number.\n */\n\n NProgress.status = null;\n\n /**\n * Sets the progress bar status, where `n` is a number from `0.0` to `1.0`.\n *\n * NProgress.set(0.4);\n * NProgress.set(1.0);\n */\n\n NProgress.set = function(n) {\n var started = NProgress.isStarted();\n\n n = clamp(n, Settings.minimum, 1);\n NProgress.status = (n === 1 ? null : n);\n\n var progress = NProgress.render(!started),\n bar = progress.querySelector(Settings.barSelector),\n speed = Settings.speed,\n ease = Settings.easing;\n\n progress.offsetWidth; /* Repaint */\n\n queue(function(next) {\n // Set positionUsing if it hasn't already been set\n if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS();\n\n // Add transition\n css(bar, barPositionCSS(n, speed, ease));\n\n if (n === 1) {\n // Fade out\n css(progress, { \n transition: 'none', \n opacity: 1 \n });\n progress.offsetWidth; /* Repaint */\n\n setTimeout(function() {\n css(progress, { \n transition: 'all ' + speed + 'ms linear', \n opacity: 0 \n });\n setTimeout(function() {\n NProgress.remove();\n next();\n }, speed);\n }, speed);\n } else {\n setTimeout(next, speed);\n }\n });\n\n return this;\n };\n\n NProgress.isStarted = function() {\n return typeof NProgress.status === 'number';\n };\n\n /**\n * Shows the progress bar.\n * This is the same as setting the status to 0%, except that it doesn't go backwards.\n *\n * NProgress.start();\n *\n */\n NProgress.start = function() {\n if (!NProgress.status) NProgress.set(0);\n\n var work = function() {\n setTimeout(function() {\n if (!NProgress.status) return;\n NProgress.trickle();\n work();\n }, Settings.trickleSpeed);\n };\n\n if (Settings.trickle) work();\n\n return this;\n };\n\n /**\n * Hides the progress bar.\n * This is the *sort of* the same as setting the status to 100%, with the\n * difference being `done()` makes some placebo effect of some realistic motion.\n *\n * NProgress.done();\n *\n * If `true` is passed, it will show the progress bar even if its hidden.\n *\n * NProgress.done(true);\n */\n\n NProgress.done = function(force) {\n if (!force && !NProgress.status) return this;\n\n return NProgress.inc(0.3 + 0.5 * Math.random()).set(1);\n };\n\n /**\n * Increments by a random amount.\n */\n\n NProgress.inc = function(amount) {\n var n = NProgress.status;\n\n if (!n) {\n return NProgress.start();\n } else {\n if (typeof amount !== 'number') {\n amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95);\n }\n\n n = clamp(n + amount, 0, 0.994);\n return NProgress.set(n);\n }\n };\n\n NProgress.trickle = function() {\n return NProgress.inc(Math.random() * Settings.trickleRate);\n };\n\n /**\n * Waits for all supplied jQuery promises and\n * increases the progress as the promises resolve.\n *\n * @param $promise jQUery Promise\n */\n (function() {\n var initial = 0, current = 0;\n\n NProgress.promise = function($promise) {\n if (!$promise || $promise.state() === \"resolved\") {\n return this;\n }\n\n if (current === 0) {\n NProgress.start();\n }\n\n initial++;\n current++;\n\n $promise.always(function() {\n current--;\n if (current === 0) {\n initial = 0;\n NProgress.done();\n } else {\n NProgress.set((initial - current) / initial);\n }\n });\n\n return this;\n };\n\n })();\n\n /**\n * (Internal) renders the progress bar markup based on the `template`\n * setting.\n */\n\n NProgress.render = function(fromStart) {\n if (NProgress.isRendered()) return document.getElementById('nprogress');\n\n addClass(document.documentElement, 'nprogress-busy');\n \n var progress = document.createElement('div');\n progress.id = 'nprogress';\n progress.innerHTML = Settings.template;\n\n var bar = progress.querySelector(Settings.barSelector),\n perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0),\n parent = document.querySelector(Settings.parent),\n spinner;\n \n css(bar, {\n transition: 'all 0 linear',\n transform: 'translate3d(' + perc + '%,0,0)'\n });\n\n if (!Settings.showSpinner) {\n spinner = progress.querySelector(Settings.spinnerSelector);\n spinner && removeElement(spinner);\n }\n\n if (parent != document.body) {\n addClass(parent, 'nprogress-custom-parent');\n }\n\n parent.appendChild(progress);\n return progress;\n };\n\n /**\n * Removes the element. Opposite of render().\n */\n\n NProgress.remove = function() {\n removeClass(document.documentElement, 'nprogress-busy');\n removeClass(document.querySelector(Settings.parent), 'nprogress-custom-parent');\n var progress = document.getElementById('nprogress');\n progress && removeElement(progress);\n };\n\n /**\n * Checks if the progress bar is rendered.\n */\n\n NProgress.isRendered = function() {\n return !!document.getElementById('nprogress');\n };\n\n /**\n * Determine which positioning CSS rule to use.\n */\n\n NProgress.getPositioningCSS = function() {\n // Sniff on document.body.style\n var bodyStyle = document.body.style;\n\n // Sniff prefixes\n var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' :\n ('MozTransform' in bodyStyle) ? 'Moz' :\n ('msTransform' in bodyStyle) ? 'ms' :\n ('OTransform' in bodyStyle) ? 'O' : '';\n\n if (vendorPrefix + 'Perspective' in bodyStyle) {\n // Modern browsers with 3D support, e.g. Webkit, IE10\n return 'translate3d';\n } else if (vendorPrefix + 'Transform' in bodyStyle) {\n // Browsers without 3D support, e.g. IE9\n return 'translate';\n } else {\n // Browsers without translate() support, e.g. IE7-8\n return 'margin';\n }\n };\n\n /**\n * Helpers\n */\n\n function clamp(n, min, max) {\n if (n < min) return min;\n if (n > max) return max;\n return n;\n }\n\n /**\n * (Internal) converts a percentage (`0..1`) to a bar translateX\n * percentage (`-100%..0%`).\n */\n\n function toBarPerc(n) {\n return (-1 + n) * 100;\n }\n\n\n /**\n * (Internal) returns the correct CSS for changing the bar's\n * position given an n percentage, and speed and ease from Settings\n */\n\n function barPositionCSS(n, speed, ease) {\n var barCSS;\n\n if (Settings.positionUsing === 'translate3d') {\n barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' };\n } else if (Settings.positionUsing === 'translate') {\n barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' };\n } else {\n barCSS = { 'margin-left': toBarPerc(n)+'%' };\n }\n\n barCSS.transition = 'all '+speed+'ms '+ease;\n\n return barCSS;\n }\n\n /**\n * (Internal) Queues a function to be executed.\n */\n\n var queue = (function() {\n var pending = [];\n \n function next() {\n var fn = pending.shift();\n if (fn) {\n fn(next);\n }\n }\n\n return function(fn) {\n pending.push(fn);\n if (pending.length == 1) next();\n };\n })();\n\n /**\n * (Internal) Applies css properties to an element, similar to the jQuery \n * css method.\n *\n * While this helper does assist with vendor prefixed property names, it \n * does not perform any manipulation of values prior to setting styles.\n */\n\n var css = (function() {\n var cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ],\n cssProps = {};\n\n function camelCase(string) {\n return string.replace(/^-ms-/, 'ms-').replace(/-([\\da-z])/gi, function(match, letter) {\n return letter.toUpperCase();\n });\n }\n\n function getVendorProp(name) {\n var style = document.body.style;\n if (name in style) return name;\n\n var i = cssPrefixes.length,\n capName = name.charAt(0).toUpperCase() + name.slice(1),\n vendorName;\n while (i--) {\n vendorName = cssPrefixes[i] + capName;\n if (vendorName in style) return vendorName;\n }\n\n return name;\n }\n\n function getStyleProp(name) {\n name = camelCase(name);\n return cssProps[name] || (cssProps[name] = getVendorProp(name));\n }\n\n function applyCss(element, prop, value) {\n prop = getStyleProp(prop);\n element.style[prop] = value;\n }\n\n return function(element, properties) {\n var args = arguments,\n prop, \n value;\n\n if (args.length == 2) {\n for (prop in properties) {\n value = properties[prop];\n if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value);\n }\n } else {\n applyCss(element, args[1], args[2]);\n }\n }\n })();\n\n /**\n * (Internal) Determines if an element or space separated list of class names contains a class name.\n */\n\n function hasClass(element, name) {\n var list = typeof element == 'string' ? element : classList(element);\n return list.indexOf(' ' + name + ' ') >= 0;\n }\n\n /**\n * (Internal) Adds a class to an element.\n */\n\n function addClass(element, name) {\n var oldList = classList(element),\n newList = oldList + name;\n\n if (hasClass(oldList, name)) return; \n\n // Trim the opening space.\n element.className = newList.substring(1);\n }\n\n /**\n * (Internal) Removes a class from an element.\n */\n\n function removeClass(element, name) {\n var oldList = classList(element),\n newList;\n\n if (!hasClass(element, name)) return;\n\n // Replace the class name.\n newList = oldList.replace(' ' + name + ' ', ' ');\n\n // Trim the opening and closing spaces.\n element.className = newList.substring(1, newList.length - 1);\n }\n\n /**\n * (Internal) Gets a space separated list of the class names on the element. \n * The list is wrapped with a single space on each end to facilitate finding \n * matches within the list.\n */\n\n function classList(element) {\n return (' ' + (element.className || '') + ' ').replace(/\\s+/gi, ' ');\n }\n\n /**\n * (Internal) Removes an element from the DOM.\n */\n\n function removeElement(element) {\n element && element.parentNode && element.parentNode.removeChild(element);\n }\n\n return NProgress;\n});\n\n","/*!\n * statuses\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar codes = require('./codes.json')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = status\n\n// status code to message map\nstatus.message = codes\n\n// status message (lower-case) to code map\nstatus.code = createMessageToStatusCodeMap(codes)\n\n// array of status codes\nstatus.codes = createStatusCodeList(codes)\n\n// status codes for redirects\nstatus.redirect = {\n 300: true,\n 301: true,\n 302: true,\n 303: true,\n 305: true,\n 307: true,\n 308: true\n}\n\n// status codes for empty bodies\nstatus.empty = {\n 204: true,\n 205: true,\n 304: true\n}\n\n// status codes for when you should retry the request\nstatus.retry = {\n 502: true,\n 503: true,\n 504: true\n}\n\n/**\n * Create a map of message to status code.\n * @private\n */\n\nfunction createMessageToStatusCodeMap (codes) {\n var map = {}\n\n Object.keys(codes).forEach(function forEachCode (code) {\n var message = codes[code]\n var status = Number(code)\n\n // populate map\n map[message.toLowerCase()] = status\n })\n\n return map\n}\n\n/**\n * Create a list of all status codes.\n * @private\n */\n\nfunction createStatusCodeList (codes) {\n return Object.keys(codes).map(function mapCode (code) {\n return Number(code)\n })\n}\n\n/**\n * Get the status code for given message.\n * @private\n */\n\nfunction getStatusCode (message) {\n var msg = message.toLowerCase()\n\n if (!Object.prototype.hasOwnProperty.call(status.code, msg)) {\n throw new Error('invalid status message: \"' + message + '\"')\n }\n\n return status.code[msg]\n}\n\n/**\n * Get the status message for given code.\n * @private\n */\n\nfunction getStatusMessage (code) {\n if (!Object.prototype.hasOwnProperty.call(status.message, code)) {\n throw new Error('invalid status code: ' + code)\n }\n\n return status.message[code]\n}\n\n/**\n * Get the status code.\n *\n * Given a number, this will throw if it is not a known status\n * code, otherwise the code will be returned. Given a string,\n * the string will be parsed for a number and return the code\n * if valid, otherwise will lookup the code assuming this is\n * the status message.\n *\n * @param {string|number} code\n * @returns {number}\n * @public\n */\n\nfunction status (code) {\n if (typeof code === 'number') {\n return getStatusMessage(code)\n }\n\n if (typeof code !== 'string') {\n throw new TypeError('code must be a number or string')\n }\n\n // '403'\n var n = parseInt(code, 10)\n if (!isNaN(n)) {\n return getStatusMessage(n)\n }\n\n return getStatusCode(code)\n}\n","var camel2hyphen = function (str) {\n return str\n .replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n })\n .toLowerCase();\n};\n\nmodule.exports = camel2hyphen;","// Styles\nimport './VApp.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(\n Themeable\n).extend({\n name: 'v-app',\n\n props: {\n dark: {\n type: Boolean,\n default: undefined,\n },\n id: {\n type: String,\n default: 'app',\n },\n light: {\n type: Boolean,\n default: undefined,\n },\n },\n\n computed: {\n isDark (): boolean {\n return this.$vuetify.theme.dark\n },\n },\n\n beforeCreate () {\n if (!this.$vuetify || (this.$vuetify === this.$root as any)) {\n throw new Error('Vuetify is not properly initialized, see https://vuetifyjs.com/getting-started/quick-start#bootstrapping-the-vuetify-object')\n }\n },\n\n render (h) {\n const wrapper = h('div', { staticClass: 'v-application--wrap' }, this.$slots.default)\n\n return h('div', {\n staticClass: 'v-application',\n class: {\n 'v-application--is-rtl': this.$vuetify.rtl,\n 'v-application--is-ltr': !this.$vuetify.rtl,\n ...this.themeClasses,\n },\n attrs: { 'data-app': true },\n domProps: { id: this.id },\n }, [wrapper])\n },\n})\n","import './VAvatar.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\nexport default mixins(\n Colorable,\n Measurable,\n Roundable,\n /* @vue/component */\n).extend({\n name: 'v-avatar',\n\n props: {\n left: Boolean,\n right: Boolean,\n size: {\n type: [Number, String],\n default: 48,\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-avatar--left': this.left,\n 'v-avatar--right': this.right,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return {\n height: convertToUnit(this.size),\n minWidth: convertToUnit(this.size),\n width: convertToUnit(this.size),\n ...this.measurableStyles,\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-avatar',\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n }\n\n return h('div', this.setBackgroundColor(this.color, data), this.$slots.default)\n },\n})\n","import VProgressCircular from './VProgressCircular'\n\nexport { VProgressCircular }\nexport default VProgressCircular\n","// Styles\nimport './VBtn.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VProgressCircular from '../VProgressCircular'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Elevatable from '../../mixins/elevatable'\nimport Positionable from '../../mixins/positionable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator, PropType } from 'vue/types/options'\nimport { RippleOptions } from '../../directives/ripple'\n\nconst baseMixins = mixins(\n VSheet,\n Routable,\n Positionable,\n Sizeable,\n GroupableFactory('btnToggle'),\n ToggleableFactory('inputValue')\n /* @vue/component */\n)\ninterface options extends ExtractVue<typeof baseMixins> {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend<options>().extend({\n name: 'v-btn',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.btnToggle) return ''\n\n return this.btnToggle.activeClass\n },\n } as any as PropValidator<string>,\n block: Boolean,\n depressed: Boolean,\n fab: Boolean,\n icon: Boolean,\n loading: Boolean,\n outlined: Boolean,\n plain: Boolean,\n retainFocusOnClick: Boolean,\n rounded: Boolean,\n tag: {\n type: String,\n default: 'button',\n },\n text: Boolean,\n tile: Boolean,\n type: {\n type: String,\n default: 'button',\n },\n value: null as any as PropType<any>,\n },\n\n data: () => ({\n proxyClass: 'v-btn--active',\n }),\n\n computed: {\n classes (): any {\n return {\n 'v-btn': true,\n ...Routable.options.computed.classes.call(this),\n 'v-btn--absolute': this.absolute,\n 'v-btn--block': this.block,\n 'v-btn--bottom': this.bottom,\n 'v-btn--disabled': this.disabled,\n 'v-btn--is-elevated': this.isElevated,\n 'v-btn--fab': this.fab,\n 'v-btn--fixed': this.fixed,\n 'v-btn--has-bg': this.hasBg,\n 'v-btn--icon': this.icon,\n 'v-btn--left': this.left,\n 'v-btn--loading': this.loading,\n 'v-btn--outlined': this.outlined,\n 'v-btn--plain': this.plain,\n 'v-btn--right': this.right,\n 'v-btn--round': this.isRound,\n 'v-btn--rounded': this.rounded,\n 'v-btn--router': this.to,\n 'v-btn--text': this.text,\n 'v-btn--tile': this.tile,\n 'v-btn--top': this.top,\n ...this.themeClasses,\n ...this.groupClasses,\n ...this.elevationClasses,\n ...this.sizeableClasses,\n }\n },\n computedElevation (): string | number | undefined {\n if (this.disabled) return undefined\n\n return Elevatable.options.computed.computedElevation.call(this)\n },\n computedRipple (): RippleOptions | boolean {\n const defaultRipple = this.icon || this.fab ? { circle: true } : true\n if (this.disabled) return false\n else return this.ripple ?? defaultRipple\n },\n hasBg (): boolean {\n return !this.text && !this.plain && !this.outlined && !this.icon\n },\n isElevated (): boolean {\n return Boolean(\n !this.icon &&\n !this.text &&\n !this.outlined &&\n !this.depressed &&\n !this.disabled &&\n !this.plain &&\n (this.elevation == null || Number(this.elevation) > 0)\n )\n },\n isRound (): boolean {\n return Boolean(\n this.icon ||\n this.fab\n )\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['flat', 'text'],\n ['outline', 'outlined'],\n ['round', 'rounded'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n // TODO: Remove this in v3\n !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur()\n this.$emit('click', e)\n\n this.btnToggle && this.toggle()\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-btn__content',\n }, this.$slots.default)\n },\n genLoader (): VNode {\n return this.$createElement('span', {\n class: 'v-btn__loader',\n }, this.$slots.loader || [this.$createElement(VProgressCircular, {\n props: {\n indeterminate: true,\n size: 23,\n width: 2,\n },\n })])\n },\n },\n\n render (h): VNode {\n const children = [\n this.genContent(),\n this.loading && this.genLoader(),\n ]\n const { tag, data } = this.generateRouteLink()\n const setColor = this.hasBg\n ? this.setBackgroundColor\n : this.setTextColor\n\n if (tag === 'button') {\n data.attrs!.type = this.type\n data.attrs!.disabled = this.disabled\n }\n data.attrs!.value = ['string', 'number'].includes(typeof this.value)\n ? this.value\n : JSON.stringify(this.value)\n\n return h(tag, this.disabled ? data : setColor(this.color, data), children)\n },\n})\n","// Styles\nimport './VCard.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Routable from '../../mixins/routable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Loadable,\n Routable,\n VSheet\n).extend({\n name: 'v-card',\n\n props: {\n flat: Boolean,\n hover: Boolean,\n img: String,\n link: Boolean,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n raised: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-card': true,\n ...Routable.options.computed.classes.call(this),\n 'v-card--flat': this.flat,\n 'v-card--hover': this.hover,\n 'v-card--link': this.isClickable,\n 'v-card--loading': this.loading,\n 'v-card--disabled': this.disabled,\n 'v-card--raised': this.raised,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n const style: Dictionary<string> = {\n ...VSheet.options.computed.styles.call(this),\n }\n\n if (this.img) {\n style.background = `url(\"${this.img}\") center center / cover no-repeat`\n }\n\n return style\n },\n },\n\n methods: {\n genProgress () {\n const render = Loadable.options.methods.genProgress.call(this)\n\n if (!render) return null\n\n return this.$createElement('div', {\n staticClass: 'v-card__progress',\n key: 'progress',\n }, [render])\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.style = this.styles\n\n if (this.isClickable) {\n data.attrs = data.attrs || {}\n data.attrs.tabindex = 0\n }\n\n return h(tag, this.setBackgroundColor(this.color, data), [\n this.genProgress(),\n this.$slots.default,\n ])\n },\n})\n","// Styles\nimport './VChip.sass'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Components\nimport { VExpandXTransition } from '../transitions'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport { breaking } from '../../util/console'\n\n// Types\nimport { PropValidator, PropType } from 'vue/types/options'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Sizeable,\n Routable,\n Themeable,\n GroupableFactory('chipGroup'),\n ToggleableFactory('inputValue')\n).extend({\n name: 'v-chip',\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.chipGroup) return ''\n\n return this.chipGroup.activeClass\n },\n } as any as PropValidator<string>,\n close: Boolean,\n closeIcon: {\n type: String,\n default: '$delete',\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n disabled: Boolean,\n draggable: Boolean,\n filter: Boolean,\n filterIcon: {\n type: String,\n default: '$complete',\n },\n label: Boolean,\n link: Boolean,\n outlined: Boolean,\n pill: Boolean,\n tag: {\n type: String,\n default: 'span',\n },\n textColor: String,\n value: null as any as PropType<any>,\n },\n\n data: () => ({\n proxyClass: 'v-chip--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-chip': true,\n ...Routable.options.computed.classes.call(this),\n 'v-chip--clickable': this.isClickable,\n 'v-chip--disabled': this.disabled,\n 'v-chip--draggable': this.draggable,\n 'v-chip--label': this.label,\n 'v-chip--link': this.isLink,\n 'v-chip--no-color': !this.color,\n 'v-chip--outlined': this.outlined,\n 'v-chip--pill': this.pill,\n 'v-chip--removable': this.hasClose,\n ...this.themeClasses,\n ...this.sizeableClasses,\n ...this.groupClasses,\n }\n },\n hasClose (): boolean {\n return Boolean(this.close)\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.chipGroup\n )\n },\n },\n\n created () {\n const breakingProps = [\n ['outline', 'outlined'],\n ['selected', 'input-value'],\n ['value', 'active'],\n ['@input', '@active.sync'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n this.$emit('click', e)\n\n this.chipGroup && this.toggle()\n },\n genFilter (): VNode {\n const children = []\n\n if (this.isActive) {\n children.push(\n this.$createElement(VIcon, {\n staticClass: 'v-chip__filter',\n props: { left: true },\n }, this.filterIcon)\n )\n }\n\n return this.$createElement(VExpandXTransition, children)\n },\n genClose (): VNode {\n return this.$createElement(VIcon, {\n staticClass: 'v-chip__close',\n props: {\n right: true,\n size: 18,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: (e: Event) => {\n e.stopPropagation()\n e.preventDefault()\n\n this.$emit('click:close')\n this.$emit('update:active', false)\n },\n },\n }, this.closeIcon)\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-chip__content',\n }, [\n this.filter && this.genFilter(),\n this.$slots.default,\n this.hasClose && this.genClose(),\n ])\n },\n },\n\n render (h): VNode {\n const children = [this.genContent()]\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n draggable: this.draggable ? 'true' : undefined,\n tabindex: this.chipGroup && !this.disabled ? 0 : data.attrs!.tabindex,\n }\n data.directives!.push({\n name: 'show',\n value: this.active,\n })\n data = this.setBackgroundColor(this.color, data)\n\n const color = this.textColor || (this.outlined && this.color)\n\n return h(tag, this.setTextColor(color, data), children)\n },\n})\n","// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Dependent from '../../mixins/dependent'\nimport Detachable from '../../mixins/detachable'\nimport Overlayable from '../../mixins/overlayable'\nimport Returnable from '../../mixins/returnable'\nimport Stackable from '../../mixins/stackable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Detachable,\n Overlayable,\n Returnable,\n Stackable,\n Activatable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-dialog',\n\n directives: { ClickOutside },\n\n props: {\n dark: Boolean,\n disabled: Boolean,\n fullscreen: Boolean,\n light: Boolean,\n maxWidth: [String, Number],\n noClickAnimation: Boolean,\n origin: {\n type: String,\n default: 'center center',\n },\n persistent: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n transition: {\n type: [String, Boolean],\n default: 'dialog-transition',\n },\n width: [String, Number],\n },\n\n data () {\n return {\n activatedBy: null as EventTarget | null,\n animate: false,\n animateTimeout: -1,\n stackMinZIndex: 200,\n previousActiveElement: null as HTMLElement | null,\n }\n },\n\n computed: {\n classes (): object {\n return {\n [(`v-dialog ${this.contentClass}`).trim()]: true,\n 'v-dialog--active': this.isActive,\n 'v-dialog--persistent': this.persistent,\n 'v-dialog--fullscreen': this.fullscreen,\n 'v-dialog--scrollable': this.scrollable,\n 'v-dialog--animated': this.animate,\n }\n },\n contentClasses (): object {\n return {\n 'v-dialog__content': true,\n 'v-dialog__content--active': this.isActive,\n }\n },\n hasActivator (): boolean {\n return Boolean(\n !!this.$slots.activator ||\n !!this.$scopedSlots.activator\n )\n },\n },\n\n watch: {\n isActive (val) {\n if (val) {\n this.show()\n this.hideScroll()\n } else {\n this.removeOverlay()\n this.unbind()\n this.previousActiveElement?.focus()\n }\n },\n fullscreen (val) {\n if (!this.isActive) return\n\n if (val) {\n this.hideScroll()\n this.removeOverlay(false)\n } else {\n this.showScroll()\n this.genOverlay()\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.isBooted = this.isActive\n this.isActive && this.show()\n })\n },\n\n beforeDestroy () {\n if (typeof window !== 'undefined') this.unbind()\n },\n\n methods: {\n animateClick () {\n this.animate = false\n // Needed for when clicking very fast\n // outside of the dialog\n this.$nextTick(() => {\n this.animate = true\n window.clearTimeout(this.animateTimeout)\n this.animateTimeout = window.setTimeout(() => (this.animate = false), 150)\n })\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n // Ignore the click if the dialog is closed or destroyed,\n // if it was on an element inside the content,\n // if it was dragged onto the overlay (#6969),\n // or if this isn't the topmost dialog (#9907)\n return !(\n this._isDestroyed ||\n !this.isActive ||\n this.$refs.content.contains(target) ||\n (this.overlay && target && !this.overlay.$el.contains(target))\n ) && this.activeZIndex >= this.getMaxZIndex()\n },\n hideScroll () {\n if (this.fullscreen) {\n document.documentElement.classList.add('overflow-y-hidden')\n } else {\n Overlayable.options.methods.hideScroll.call(this)\n }\n },\n show () {\n !this.fullscreen && !this.hideOverlay && this.genOverlay()\n // Double nextTick to wait for lazy content to be generated\n this.$nextTick(() => {\n this.$nextTick(() => {\n if (!this.$refs.content.contains(document.activeElement)) {\n this.previousActiveElement = document.activeElement as HTMLElement\n this.$refs.content.focus()\n }\n this.bind()\n })\n })\n },\n bind () {\n window.addEventListener('focusin', this.onFocusin)\n },\n unbind () {\n window.removeEventListener('focusin', this.onFocusin)\n },\n onClickOutside (e: Event) {\n this.$emit('click:outside', e)\n\n if (this.persistent) {\n this.noClickAnimation || this.animateClick()\n } else {\n this.isActive = false\n }\n },\n onKeydown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc && !this.getOpenDependents().length) {\n if (!this.persistent) {\n this.isActive = false\n const activator = this.getActivator()\n this.$nextTick(() => activator && (activator as HTMLElement).focus())\n } else if (!this.noClickAnimation) {\n this.animateClick()\n }\n }\n this.$emit('keydown', e)\n },\n // On focus change, wrap focus to stay inside the dialog\n // https://github.com/vuetifyjs/vuetify/issues/6892\n onFocusin (e: Event) {\n if (!e || !this.retainFocus) return\n\n const target = e.target as HTMLElement\n\n if (\n !!target &&\n // It isn't the document or the dialog body\n ![document, this.$refs.content].includes(target) &&\n // It isn't inside the dialog body\n !this.$refs.content.contains(target) &&\n // We're the topmost dialog\n this.activeZIndex >= this.getMaxZIndex() &&\n // It isn't inside a dependent element (like a menu)\n !this.getOpenDependentElements().some(el => el.contains(target))\n // So we must have focused something outside the dialog and its children\n ) {\n // Find and focus the first available element inside the dialog\n const focusable = this.$refs.content.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n const el = [...focusable].find(el => !el.hasAttribute('disabled')) as HTMLElement | undefined\n el && el.focus()\n }\n },\n genContent () {\n return this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [\n this.$createElement('div', {\n class: this.contentClasses,\n attrs: {\n role: 'dialog',\n tabindex: this.isActive ? 0 : undefined,\n 'aria-modal': this.hideOverlay ? undefined : 'true',\n ...this.getScopeIdAttrs(),\n },\n on: { keydown: this.onKeydown },\n style: { zIndex: this.activeZIndex },\n ref: 'content',\n }, [this.genTransition()]),\n ]),\n ])\n },\n genTransition () {\n const content = this.genInnerContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n appear: true,\n },\n }, [content])\n },\n genInnerContent () {\n const data: VNodeData = {\n class: this.classes,\n ref: 'dialog',\n directives: [\n {\n name: 'click-outside',\n value: {\n handler: this.onClickOutside,\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n },\n { name: 'show', value: this.isActive },\n ],\n style: {\n transformOrigin: this.origin,\n },\n }\n\n if (!this.fullscreen) {\n data.style = {\n ...data.style as object,\n maxWidth: convertToUnit(this.maxWidth),\n width: convertToUnit(this.width),\n }\n }\n\n return this.$createElement('div', data, this.getContentSlot())\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-dialog__container',\n class: {\n 'v-dialog__container--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n }, [\n this.genActivator(),\n this.genContent(),\n ])\n },\n})\n","// Styles\nimport './VDivider.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\nexport default Themeable.extend({\n name: 'v-divider',\n\n props: {\n inset: Boolean,\n vertical: Boolean,\n },\n\n render (h): VNode {\n // WAI-ARIA attributes\n let orientation\n if (!this.$attrs.role || this.$attrs.role === 'separator') {\n orientation = this.vertical ? 'vertical' : 'horizontal'\n }\n return h('hr', {\n class: {\n 'v-divider': true,\n 'v-divider--inset': this.inset,\n 'v-divider--vertical': this.vertical,\n ...this.themeClasses,\n },\n attrs: {\n role: 'separator',\n 'aria-orientation': orientation,\n ...this.$attrs,\n },\n on: this.$listeners,\n })\n },\n})\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array<any>({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n","import './_grid.sass'\n\nimport Grid from './grid'\n\nexport default Grid('flex')\n","import './_grid.sass'\n\nimport Grid from './grid'\n\nexport default Grid('layout')\n","import './_grid.sass'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nexport default createSimpleFunctional('spacer', 'div', 'v-spacer')\n","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import './VIcon.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Sizeable from '../../mixins/sizeable'\nimport Themeable from '../../mixins/themeable'\n\n// Util\nimport { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'\n\n// Types\nimport Vue, { CreateElement, VNode, VNodeChildren, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport { VuetifyIcon, VuetifyIconComponent } from 'vuetify/types/services/icons'\n\nenum SIZE_MAP {\n xSmall = '12px',\n small = '16px',\n default = '24px',\n medium = '28px',\n large = '36px',\n xLarge = '40px'\n}\n\nfunction isFontAwesome5 (iconType: string): boolean {\n return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(val => iconType.includes(val))\n}\n\nfunction isSvgPath (icon: string): boolean {\n return (/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\\dz]$/i.test(icon) && icon.length > 4)\n}\n\nconst VIcon = mixins(\n BindsAttrs,\n Colorable,\n Sizeable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-icon',\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n left: Boolean,\n right: Boolean,\n size: [Number, String],\n tag: {\n type: String,\n required: false,\n default: 'i',\n },\n },\n\n computed: {\n medium () {\n return false\n },\n hasClickListener (): boolean {\n return Boolean(\n this.listeners$.click || this.listeners$['!click']\n )\n },\n },\n\n methods: {\n getIcon (): VuetifyIcon {\n let iconName = ''\n if (this.$slots.default) iconName = this.$slots.default[0].text!.trim()\n\n return remapInternalIcon(this, iconName)\n },\n getSize (): string | undefined {\n const sizes = {\n xSmall: this.xSmall,\n small: this.small,\n medium: this.medium,\n large: this.large,\n xLarge: this.xLarge,\n }\n\n const explicitSize = keys(sizes).find(key => sizes[key])\n\n return (\n (explicitSize && SIZE_MAP[explicitSize]) || convertToUnit(this.size)\n )\n },\n // Component data for both font icon and SVG wrapper span\n getDefaultData (): VNodeData {\n return {\n staticClass: 'v-icon notranslate',\n class: {\n 'v-icon--disabled': this.disabled,\n 'v-icon--left': this.left,\n 'v-icon--link': this.hasClickListener,\n 'v-icon--right': this.right,\n 'v-icon--dense': this.dense,\n },\n attrs: {\n 'aria-hidden': !this.hasClickListener,\n disabled: this.hasClickListener && this.disabled,\n type: this.hasClickListener ? 'button' : undefined,\n ...this.attrs$,\n },\n on: this.listeners$,\n }\n },\n getSvgWrapperData () {\n const fontSize = this.getSize()\n const wrapperData = {\n ...this.getDefaultData(),\n style: fontSize ? {\n fontSize,\n height: fontSize,\n width: fontSize,\n } : undefined,\n }\n this.applyColors(wrapperData)\n\n return wrapperData\n },\n applyColors (data: VNodeData): void {\n data.class = { ...data.class, ...this.themeClasses }\n this.setTextColor(this.color, data)\n },\n renderFontIcon (icon: string, h: CreateElement): VNode {\n const newChildren: VNodeChildren = []\n const data = this.getDefaultData()\n\n let iconType = 'material-icons'\n // Material Icon delimiter is _\n // https://material.io/icons/\n const delimiterIndex = icon.indexOf('-')\n const isMaterialIcon = delimiterIndex <= -1\n\n if (isMaterialIcon) {\n // Material icon uses ligatures.\n newChildren.push(icon)\n } else {\n iconType = icon.slice(0, delimiterIndex)\n if (isFontAwesome5(iconType)) iconType = ''\n }\n\n data.class[iconType] = true\n data.class[icon] = !isMaterialIcon\n\n const fontSize = this.getSize()\n if (fontSize) data.style = { fontSize }\n\n this.applyColors(data)\n\n return h(this.hasClickListener ? 'button' : this.tag, data, newChildren)\n },\n renderSvgIcon (icon: string, h: CreateElement): VNode {\n const svgData: VNodeData = {\n class: 'v-icon__svg',\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n role: 'img',\n 'aria-hidden': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n svgData.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h('svg', svgData, [\n h('path', {\n attrs: {\n d: icon,\n },\n }),\n ]),\n ])\n },\n renderSvgIconComponent (\n icon: VuetifyIconComponent,\n h: CreateElement\n ): VNode {\n const data: VNodeData = {\n class: {\n 'v-icon__component': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n data.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n this.applyColors(data)\n\n const component = icon.component\n data.props = icon.props\n data.nativeOn = data.on\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h(component, data),\n ])\n },\n },\n\n render (h: CreateElement): VNode {\n const icon = this.getIcon()\n\n if (typeof icon === 'string') {\n if (isSvgPath(icon)) {\n return this.renderSvgIcon(icon, h)\n }\n return this.renderFontIcon(icon, h)\n }\n\n return this.renderSvgIconComponent(icon, h)\n },\n})\n\nexport default Vue.extend({\n name: 'v-icon',\n\n $_wrapperFor: VIcon,\n\n functional: true,\n\n render (h, { data, children }): VNode {\n let iconName = ''\n\n // Support usage of v-text and v-html\n if (data.domProps) {\n iconName = data.domProps.textContent ||\n data.domProps.innerHTML ||\n iconName\n\n // Remove nodes so it doesn't\n // overwrite our changes\n delete data.domProps.textContent\n delete data.domProps.innerHTML\n }\n\n return h(VIcon, data, iconName ? [iconName] : children)\n },\n})\n","import VIcon from './VIcon'\n\nexport { VIcon }\nexport default VIcon\n","import VResponsive from './VResponsive'\n\nexport { VResponsive }\nexport default VResponsive\n","// Styles\nimport './VImg.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VResponsive from '../VResponsive'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport mergeData from '../../util/mergeData'\nimport { consoleWarn } from '../../util/console'\nimport { getSlot } from '../../util/helpers'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src: string\n srcset?: string\n lazySrc: string\n aspect: number\n}\n\nconst hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window\n\n/* @vue/component */\nexport default mixins(\n VResponsive,\n Themeable,\n).extend({\n name: 'v-img',\n\n directives: { intersect },\n\n props: {\n alt: String,\n contain: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n } as PropValidator<IntersectionObserverInit>,\n position: {\n type: String,\n default: 'center center',\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: '',\n } as PropValidator<string | srcObject>,\n srcset: String,\n transition: {\n type: [Boolean, String],\n default: 'fade-transition',\n },\n },\n\n data () {\n return {\n currentSrc: '', // Set from srcset\n image: null as HTMLImageElement | null,\n isLoading: true,\n calculatedAspectRatio: undefined as number | undefined,\n naturalWidth: undefined as number | undefined,\n hasError: false,\n }\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio)\n },\n normalisedSrc (): srcObject {\n return this.src && typeof this.src === 'object'\n ? {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect),\n } : {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || 0),\n }\n },\n __cachedImage (): VNode | [] {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc || this.gradient)) return []\n\n const backgroundImage: string[] = []\n const src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc\n\n if (this.gradient) backgroundImage.push(`linear-gradient(${this.gradient})`)\n if (src) backgroundImage.push(`url(\"${src}\")`)\n\n const image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain,\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position,\n },\n key: +this.isLoading,\n })\n\n /* istanbul ignore if */\n if (!this.transition) return image\n\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out',\n },\n }, [image])\n },\n },\n\n watch: {\n src () {\n // Force re-init when src changes\n if (!this.isLoading) this.init(undefined, undefined, true)\n else this.loadImage()\n },\n '$vuetify.breakpoint.width': 'getSrc',\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init (\n entries?: IntersectionObserverEntry[],\n observer?: IntersectionObserver,\n isIntersecting?: boolean\n ) {\n // If the current browser supports the intersection\n // observer api, the image is not observable, and\n // the eager prop isn't being used, do not load\n if (\n hasIntersect &&\n !isIntersecting &&\n !this.eager\n ) return\n\n if (this.normalisedSrc.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = this.normalisedSrc.lazySrc\n this.pollForSize(lazyImg, null)\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage()\n },\n onLoad () {\n this.getSrc()\n this.isLoading = false\n this.$emit('load', this.src)\n\n if (\n this.image &&\n (this.normalisedSrc.src.endsWith('.svg') || this.normalisedSrc.src.startsWith('data:image/svg+xml'))\n ) {\n if (this.image.naturalHeight && this.image.naturalWidth) {\n this.naturalWidth = this.image.naturalWidth\n this.calculatedAspectRatio = this.image.naturalWidth / this.image.naturalHeight\n } else {\n this.calculatedAspectRatio = 1\n }\n }\n },\n onError () {\n this.hasError = true\n this.$emit('error', this.src)\n },\n getSrc () {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src\n },\n loadImage () {\n const image = new Image()\n this.image = image\n\n image.onload = () => {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch((err: DOMException) => {\n consoleWarn(\n `Failed to decode image, trying to render anyway\\n\\n` +\n `src: ${this.normalisedSrc.src}` +\n (err.message ? `\\nOriginal error: ${err.message}` : ''),\n this\n )\n }).then(this.onLoad)\n } else {\n this.onLoad()\n }\n }\n image.onerror = this.onError\n\n this.hasError = false\n this.sizes && (image.sizes = this.sizes)\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset)\n image.src = this.normalisedSrc.src\n this.$emit('loadstart', this.normalisedSrc.src)\n\n this.aspectRatio || this.pollForSize(image)\n this.getSrc()\n },\n pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n const { naturalHeight, naturalWidth } = img\n\n if (naturalHeight || naturalWidth) {\n this.naturalWidth = naturalWidth\n this.calculatedAspectRatio = naturalWidth / naturalHeight\n } else if (!img.complete && this.isLoading && !this.hasError && timeout != null) {\n setTimeout(poll, timeout)\n }\n }\n\n poll()\n },\n genContent () {\n const content: VNode = VResponsive.options.methods.genContent.call(this)\n if (this.naturalWidth) {\n this._b(content.data!, 'div', {\n style: { width: `${this.naturalWidth}px` },\n })\n }\n\n return content\n },\n __genPlaceholder (): VNode | void {\n const slot = getSlot(this, 'placeholder')\n if (slot) {\n const placeholder = this.isLoading\n ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder',\n }, slot)]\n : []\n\n if (!this.transition) return placeholder[0]\n\n return this.$createElement('transition', {\n props: {\n appear: true,\n name: this.transition,\n },\n }, placeholder)\n }\n },\n },\n\n render (h): VNode {\n const node = VResponsive.options.render.call(this, h)\n\n const data = mergeData(node.data!, {\n staticClass: 'v-image',\n attrs: {\n 'aria-label': this.alt,\n role: this.alt ? 'img' : undefined,\n },\n class: this.themeClasses,\n // Only load intersect directive if it\n // will work in the current browser.\n directives: hasIntersect\n ? [{\n name: 'intersect',\n modifiers: { once: true },\n value: {\n handler: this.init,\n options: this.options,\n },\n }]\n : undefined,\n })\n\n node.children = [\n this.__cachedSizer,\n this.__cachedImage,\n this.__genPlaceholder(),\n this.genContent(),\n ] as VNode[]\n\n return h(node.tag, data, node.children)\n },\n})\n","// Styles\nimport './VMessages.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../util/mixins'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-messages',\n\n props: {\n value: {\n type: Array,\n default: () => ([]),\n } as PropValidator<string[]>,\n },\n\n methods: {\n genChildren () {\n return this.$createElement('transition-group', {\n staticClass: 'v-messages__wrapper',\n attrs: {\n name: 'message-transition',\n tag: 'div',\n },\n }, this.value.map(this.genMessage))\n },\n genMessage (message: string, key: number) {\n return this.$createElement('div', {\n staticClass: 'v-messages__message',\n key,\n }, getSlot(this, 'default', { message, key }) || [message])\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-messages',\n class: this.themeClasses,\n }), [this.genChildren()])\n },\n})\n","import VMessages from './VMessages'\n\nexport { VMessages }\nexport default VMessages\n","// Styles\nimport './VInput.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VLabel from '../VLabel'\nimport VMessages from '../VMessages'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Validatable from '../../mixins/validatable'\n\n// Utilities\nimport {\n convertToUnit,\n getSlot,\n kebabCase,\n} from '../../util/helpers'\nimport mergeData from '../../util/mergeData'\n\n// Types\nimport { VNode, VNodeData, PropType } from 'vue'\nimport mixins from '../../util/mixins'\nimport { InputValidationRule } from 'vuetify/types'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Validatable,\n)\n\ninterface options extends InstanceType<typeof baseMixins> {\n /* eslint-disable-next-line camelcase */\n $_modelEvent: string\n}\n\n/* @vue/component */\nexport default baseMixins.extend<options>().extend({\n name: 'v-input',\n\n inheritAttrs: false,\n\n props: {\n appendIcon: String,\n backgroundColor: {\n type: String,\n default: '',\n },\n dense: Boolean,\n height: [Number, String],\n hideDetails: [Boolean, String] as PropType<boolean | 'auto'>,\n hideSpinButtons: Boolean,\n hint: String,\n id: String,\n label: String,\n loading: Boolean,\n persistentHint: Boolean,\n prependIcon: String,\n value: null as any as PropType<any>,\n },\n\n data () {\n return {\n lazyValue: this.value,\n hasMouseDown: false,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-input--has-state': this.hasState,\n 'v-input--hide-details': !this.showDetails,\n 'v-input--is-label-active': this.isLabelActive,\n 'v-input--is-dirty': this.isDirty,\n 'v-input--is-disabled': this.isDisabled,\n 'v-input--is-focused': this.isFocused,\n // <v-switch loading>.loading === '' so we can't just cast to boolean\n 'v-input--is-loading': this.loading !== false && this.loading != null,\n 'v-input--is-readonly': this.isReadonly,\n 'v-input--dense': this.dense,\n 'v-input--hide-spin-buttons': this.hideSpinButtons,\n ...this.themeClasses,\n }\n },\n computedId (): string {\n return this.id || `input-${this._uid}`\n },\n hasDetails (): boolean {\n return this.messagesToDisplay.length > 0\n },\n hasHint (): boolean {\n return !this.hasMessages &&\n !!this.hint &&\n (this.persistentHint || this.isFocused)\n },\n hasLabel (): boolean {\n return !!(this.$slots.label || this.label)\n },\n // Proxy for `lazyValue`\n // This allows an input\n // to function without\n // a provided model\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit(this.$_modelEvent, val)\n },\n },\n isDirty (): boolean {\n return !!this.lazyValue\n },\n isLabelActive (): boolean {\n return this.isDirty\n },\n messagesToDisplay (): string[] {\n if (this.hasHint) return [this.hint]\n\n if (!this.hasMessages) return []\n\n return this.validations.map((validation: string | InputValidationRule) => {\n if (typeof validation === 'string') return validation\n\n const validationResult = validation(this.internalValue)\n\n return typeof validationResult === 'string' ? validationResult : ''\n }).filter(message => message !== '')\n },\n showDetails (): boolean {\n return this.hideDetails === false || (this.hideDetails === 'auto' && this.hasDetails)\n },\n },\n\n watch: {\n value (val) {\n this.lazyValue = val\n },\n },\n\n beforeCreate () {\n // v-radio-group needs to emit a different event\n // https://github.com/vuetifyjs/vuetify/issues/4752\n this.$_modelEvent = (this.$options.model && this.$options.model.event) || 'input'\n },\n\n methods: {\n genContent () {\n return [\n this.genPrependSlot(),\n this.genControl(),\n this.genAppendSlot(),\n ]\n },\n genControl () {\n return this.$createElement('div', {\n staticClass: 'v-input__control',\n attrs: { title: this.attrs$.title },\n }, [\n this.genInputSlot(),\n this.genMessages(),\n ])\n },\n genDefaultSlot () {\n return [\n this.genLabel(),\n this.$slots.default,\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData: VNodeData = {}\n ) {\n const icon = (this as any)[`${type}Icon`]\n const eventName = `click:${kebabCase(type)}`\n const hasListener = !!(this.listeners$[eventName] || cb)\n\n const data = mergeData({\n attrs: {\n 'aria-label': hasListener ? kebabCase(type).split('-')[0] + ' icon' : undefined,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n light: this.light,\n },\n on: !hasListener\n ? undefined\n : {\n click: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n\n this.$emit(eventName, e)\n cb && cb(e)\n },\n // Container has g event that will\n // trigger menu open if enclosed\n mouseup: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n },\n },\n }, extraData)\n\n return this.$createElement('div', {\n staticClass: `v-input__icon`,\n class: type ? `v-input__icon--${kebabCase(type)}` : undefined,\n }, [\n this.$createElement(\n VIcon,\n data,\n icon\n ),\n ])\n },\n genInputSlot () {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor, {\n staticClass: 'v-input__slot',\n style: { height: convertToUnit(this.height) },\n on: {\n click: this.onClick,\n mousedown: this.onMouseDown,\n mouseup: this.onMouseUp,\n },\n ref: 'input-slot',\n }), [this.genDefaultSlot()])\n },\n genLabel () {\n if (!this.hasLabel) return null\n\n return this.$createElement(VLabel, {\n props: {\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: this.hasState,\n for: this.computedId,\n light: this.light,\n },\n }, this.$slots.label || this.label)\n },\n genMessages () {\n if (!this.showDetails) return null\n\n return this.$createElement(VMessages, {\n props: {\n color: this.hasHint ? '' : this.validationState,\n dark: this.dark,\n light: this.light,\n value: this.messagesToDisplay,\n },\n attrs: {\n role: this.hasMessages ? 'alert' : null,\n },\n scopedSlots: {\n default: props => getSlot(this, 'message', props),\n },\n })\n },\n genSlot (\n type: string,\n location: string,\n slot: (VNode | VNode[])[]\n ) {\n if (!slot.length) return null\n\n const ref = `${type}-${location}`\n\n return this.$createElement('div', {\n staticClass: `v-input__${ref}`,\n ref,\n }, slot)\n },\n genPrependSlot () {\n const slot = []\n\n if (this.$slots.prepend) {\n slot.push(this.$slots.prepend)\n } else if (this.prependIcon) {\n slot.push(this.genIcon('prepend'))\n }\n\n return this.genSlot('prepend', 'outer', slot)\n },\n genAppendSlot () {\n const slot = []\n\n // Append icon for text field was really\n // an appended inner icon, v-text-field\n // will overwrite this method in order to obtain\n // backwards compat\n if (this.$slots.append) {\n slot.push(this.$slots.append)\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n onClick (e: Event) {\n this.$emit('click', e)\n },\n onMouseDown (e: Event) {\n this.hasMouseDown = true\n this.$emit('mousedown', e)\n },\n onMouseUp (e: Event) {\n this.hasMouseDown = false\n this.$emit('mouseup', e)\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.validationState, {\n staticClass: 'v-input',\n class: this.classes,\n }), this.genContent())\n },\n})\n","import VInput from './VInput'\n\nexport { VInput }\nexport default VInput\n","// Styles\nimport './VItemGroup.sass'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Groupable from '../../mixins/groupable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue/types'\n\nexport type GroupableInstance = InstanceType<typeof Groupable> & {\n id?: string\n to?: any\n value?: any\n }\n\nexport const BaseItemGroup = mixins(\n Comparable,\n Proxyable,\n Themeable\n).extend({\n name: 'base-item-group',\n\n props: {\n activeClass: {\n type: String,\n default: 'v-item--active',\n },\n mandatory: Boolean,\n max: {\n type: [Number, String],\n default: null,\n },\n multiple: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n data () {\n return {\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n internalLazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n items: [] as GroupableInstance[],\n }\n },\n\n computed: {\n classes (): Record<string, boolean> {\n return {\n 'v-item-group': true,\n ...this.themeClasses,\n }\n },\n selectedIndex (): number {\n return (this.selectedItem && this.items.indexOf(this.selectedItem)) || -1\n },\n selectedItem (): GroupableInstance | undefined {\n if (this.multiple) return undefined\n\n return this.selectedItems[0]\n },\n selectedItems (): GroupableInstance[] {\n return this.items.filter((item, index) => {\n return this.toggleMethod(this.getValue(item, index))\n })\n },\n selectedValues (): any[] {\n if (this.internalValue == null) return []\n\n return Array.isArray(this.internalValue)\n ? this.internalValue\n : [this.internalValue]\n },\n toggleMethod (): (v: any) => boolean {\n if (!this.multiple) {\n return (v: any) => this.valueComparator(this.internalValue, v)\n }\n\n const internalValue = this.internalValue\n if (Array.isArray(internalValue)) {\n return (v: any) => internalValue.some(intern => this.valueComparator(intern, v))\n }\n\n return () => false\n },\n },\n\n watch: {\n internalValue: 'updateItemsState',\n items: 'updateItemsState',\n },\n\n created () {\n if (this.multiple && !Array.isArray(this.internalValue)) {\n consoleWarn('Model must be bound to an array if the multiple property is true.', this)\n }\n },\n\n methods: {\n\n genData (): object {\n return {\n class: this.classes,\n }\n },\n getValue (item: GroupableInstance, i: number): unknown {\n return item.value === undefined\n ? i\n : item.value\n },\n onClick (item: GroupableInstance) {\n this.updateInternalValue(\n this.getValue(item, this.items.indexOf(item))\n )\n },\n register (item: GroupableInstance) {\n const index = this.items.push(item) - 1\n\n item.$on('change', () => this.onClick(item))\n\n // If no value provided and mandatory,\n // assign first registered item\n if (this.mandatory && !this.selectedValues.length) {\n this.updateMandatory()\n }\n\n this.updateItem(item, index)\n },\n unregister (item: GroupableInstance) {\n if (this._isDestroyed) return\n\n const index = this.items.indexOf(item)\n const value = this.getValue(item, index)\n\n this.items.splice(index, 1)\n\n const valueIndex = this.selectedValues.indexOf(value)\n\n // Items is not selected, do nothing\n if (valueIndex < 0) return\n\n // If not mandatory, use regular update process\n if (!this.mandatory) {\n return this.updateInternalValue(value)\n }\n\n // Remove the value\n if (this.multiple && Array.isArray(this.internalValue)) {\n this.internalValue = this.internalValue.filter(v => v !== value)\n } else {\n this.internalValue = undefined\n }\n\n // If mandatory and we have no selection\n // add the last item as value\n /* istanbul ignore else */\n if (!this.selectedItems.length) {\n this.updateMandatory(true)\n }\n },\n updateItem (item: GroupableInstance, index: number) {\n const value = this.getValue(item, index)\n\n item.isActive = this.toggleMethod(value)\n },\n // https://github.com/vuetifyjs/vuetify/issues/5352\n updateItemsState () {\n this.$nextTick(() => {\n if (this.mandatory &&\n !this.selectedItems.length\n ) {\n return this.updateMandatory()\n }\n\n // TODO: Make this smarter so it\n // doesn't have to iterate every\n // child in an update\n this.items.forEach(this.updateItem)\n })\n },\n updateInternalValue (value: any) {\n this.multiple\n ? this.updateMultiple(value)\n : this.updateSingle(value)\n },\n updateMandatory (last?: boolean) {\n if (!this.items.length) return\n\n const items = this.items.slice()\n\n if (last) items.reverse()\n\n const item = items.find(item => !item.disabled)\n\n // If no tabs are available\n // aborts mandatory value\n if (!item) return\n\n const index = this.items.indexOf(item)\n\n this.updateInternalValue(\n this.getValue(item, index)\n )\n },\n updateMultiple (value: any) {\n const defaultValue = Array.isArray(this.internalValue)\n ? this.internalValue\n : []\n const internalValue = defaultValue.slice()\n const index = internalValue.findIndex(val => val === value)\n\n if (\n this.mandatory &&\n // Item already exists\n index > -1 &&\n // value would be reduced below min\n internalValue.length - 1 < 1\n ) return\n\n if (\n // Max is set\n this.max != null &&\n // Item doesn't exist\n index < 0 &&\n // value would be increased above max\n internalValue.length + 1 > this.max\n ) return\n\n index > -1\n ? internalValue.splice(index, 1)\n : internalValue.push(value)\n\n this.internalValue = internalValue\n },\n updateSingle (value: any) {\n const isSame = value === this.internalValue\n\n if (this.mandatory && isSame) return\n\n this.internalValue = isSame ? undefined : value\n },\n },\n\n render (h): VNode {\n return h(this.tag, this.genData(), this.$slots.default)\n },\n})\n\nexport default BaseItemGroup.extend({\n name: 'v-item-group',\n\n provide (): object {\n return {\n itemGroup: this,\n }\n },\n})\n","// Styles\nimport './VLabel.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Themeable).extend({\n name: 'v-label',\n\n functional: true,\n\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: 'primary',\n },\n disabled: Boolean,\n focused: Boolean,\n for: String,\n left: {\n type: [Number, String],\n default: 0,\n },\n right: {\n type: [Number, String],\n default: 'auto',\n },\n value: Boolean,\n },\n\n render (h, ctx): VNode {\n const { children, listeners, props } = ctx\n const data = {\n staticClass: 'v-label',\n class: {\n 'v-label--active': props.value,\n 'v-label--is-disabled': props.disabled,\n ...functionalThemeClasses(ctx),\n },\n attrs: {\n for: props.for,\n 'aria-hidden': !props.for,\n },\n on: listeners,\n style: {\n left: convertToUnit(props.left),\n right: convertToUnit(props.right),\n position: props.absolute ? 'absolute' : 'relative',\n },\n ref: 'label',\n }\n\n return h('label', Colorable.options.methods.setTextColor(props.focused && props.color, data), children)\n },\n})\n","import VLabel from './VLabel'\n\nexport { VLabel }\nexport default VLabel\n","// Styles\nimport './VList.sass'\nimport VListGroup from './VListGroup'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Types\nimport { VNode } from 'vue'\n\ntype VListGroupInstance = InstanceType<typeof VListGroup>\n\ninterface options extends InstanceType<typeof VSheet> {\n isInMenu: boolean\n isInNav: boolean\n}\n\n/* @vue/component */\nexport default VSheet.extend<options>().extend({\n name: 'v-list',\n\n provide (): object {\n return {\n isInList: true,\n list: this,\n }\n },\n\n inject: {\n isInMenu: {\n default: false,\n },\n isInNav: {\n default: false,\n },\n },\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n expand: Boolean,\n flat: Boolean,\n nav: Boolean,\n rounded: Boolean,\n subheader: Boolean,\n threeLine: Boolean,\n twoLine: Boolean,\n },\n\n data: () => ({\n groups: [] as VListGroupInstance[],\n }),\n\n computed: {\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-list--dense': this.dense,\n 'v-list--disabled': this.disabled,\n 'v-list--flat': this.flat,\n 'v-list--nav': this.nav,\n 'v-list--rounded': this.rounded,\n 'v-list--subheader': this.subheader,\n 'v-list--two-line': this.twoLine,\n 'v-list--three-line': this.threeLine,\n }\n },\n },\n\n methods: {\n register (content: VListGroupInstance) {\n this.groups.push(content)\n },\n unregister (content: VListGroupInstance) {\n const index = this.groups.findIndex(g => g._uid === content._uid)\n\n if (index > -1) this.groups.splice(index, 1)\n },\n listClick (uid: number) {\n if (this.expand) return\n\n for (const group of this.groups) {\n group.toggle(uid)\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-list',\n class: this.classes,\n style: this.styles,\n attrs: {\n role: this.isInNav || this.isInMenu ? undefined : 'list',\n ...this.attrs$,\n },\n }\n\n return h(this.tag, this.setBackgroundColor(this.color, data), [this.$slots.default])\n },\n})\n","// Styles\nimport './VListItem.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Routable from '../../mixins/routable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\n\n// Directives\nimport Ripple from '../../directives/ripple'\n\n// Utilities\nimport { keyCodes } from './../../util/helpers'\nimport { ExtractVue } from './../../util/mixins'\nimport { removed } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\nimport { PropType, PropValidator } from 'vue/types/options'\n\nconst baseMixins = mixins(\n Colorable,\n Routable,\n Themeable,\n GroupableFactory('listItemGroup'),\n ToggleableFactory('inputValue')\n)\n\ninterface options extends ExtractVue<typeof baseMixins> {\n $el: HTMLElement\n isInGroup: boolean\n isInList: boolean\n isInMenu: boolean\n isInNav: boolean\n}\n\n/* @vue/component */\nexport default baseMixins.extend<options>().extend({\n name: 'v-list-item',\n\n directives: {\n Ripple,\n },\n\n inject: {\n isInGroup: {\n default: false,\n },\n isInList: {\n default: false,\n },\n isInMenu: {\n default: false,\n },\n isInNav: {\n default: false,\n },\n },\n\n inheritAttrs: false,\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.listItemGroup) return ''\n\n return this.listItemGroup.activeClass\n },\n } as any as PropValidator<string>,\n dense: Boolean,\n inactive: Boolean,\n link: Boolean,\n selectable: {\n type: Boolean,\n },\n tag: {\n type: String,\n default: 'div',\n },\n threeLine: Boolean,\n twoLine: Boolean,\n value: null as any as PropType<any>,\n },\n\n data: () => ({\n proxyClass: 'v-list-item--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-list-item': true,\n ...Routable.options.computed.classes.call(this),\n 'v-list-item--dense': this.dense,\n 'v-list-item--disabled': this.disabled,\n 'v-list-item--link': this.isClickable && !this.inactive,\n 'v-list-item--selectable': this.selectable,\n 'v-list-item--three-line': this.threeLine,\n 'v-list-item--two-line': this.twoLine,\n ...this.themeClasses,\n }\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.listItemGroup\n )\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('avatar')) {\n removed('avatar', this)\n }\n },\n\n methods: {\n click (e: MouseEvent | KeyboardEvent) {\n if (e.detail) this.$el.blur()\n\n this.$emit('click', e)\n\n this.to || this.toggle()\n },\n genAttrs () {\n const attrs: Record<string, any> = {\n 'aria-disabled': this.disabled ? true : undefined,\n tabindex: this.isClickable && !this.disabled ? 0 : -1,\n ...this.$attrs,\n }\n\n if (this.$attrs.hasOwnProperty('role')) {\n // do nothing, role already provided\n } else if (this.isInNav) {\n // do nothing, role is inherit\n } else if (this.isInGroup) {\n attrs.role = 'option'\n attrs['aria-selected'] = String(this.isActive)\n } else if (this.isInMenu) {\n attrs.role = this.isClickable ? 'menuitem' : undefined\n attrs.id = attrs.id || `list-item-${this._uid}`\n } else if (this.isInList) {\n attrs.role = 'listitem'\n }\n\n return attrs\n },\n toggle () {\n if (this.to && this.inputValue === undefined) {\n this.isActive = !this.isActive\n }\n this.$emit('change')\n },\n },\n\n render (h): VNode {\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n ...this.genAttrs(),\n }\n data[this.to ? 'nativeOn' : 'on'] = {\n ...data[this.to ? 'nativeOn' : 'on'],\n keydown: (e: KeyboardEvent) => {\n /* istanbul ignore else */\n if (e.keyCode === keyCodes.enter) this.click(e)\n\n this.$emit('keydown', e)\n },\n }\n\n if (this.inactive) tag = 'div'\n if (this.inactive && this.to) {\n data.on = data.nativeOn\n delete data.nativeOn\n }\n\n const children = this.$scopedSlots.default\n ? this.$scopedSlots.default({\n active: this.isActive,\n toggle: this.toggle,\n })\n : this.$slots.default\n\n return h(tag, this.isActive ? this.setTextColor(this.color, data) : data, children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-list-item-action',\n\n functional: true,\n\n render (h, { data, children = [] }): VNode {\n data.staticClass = data.staticClass ? `v-list-item__action ${data.staticClass}` : 'v-list-item__action'\n const filteredChild = children.filter(VNode => {\n return VNode.isComment === false && VNode.text !== ' '\n })\n if (filteredChild.length > 1) data.staticClass += ' v-list-item__action--stack'\n\n return h('div', data, children)\n },\n})\n","import VAvatar from './VAvatar'\n\nexport { VAvatar }\nexport default VAvatar\n","// Components\nimport VAvatar from '../VAvatar'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default VAvatar.extend({\n name: 'v-list-item-avatar',\n\n props: {\n horizontal: Boolean,\n size: {\n type: [Number, String],\n default: 40,\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-list-item__avatar--horizontal': this.horizontal,\n ...VAvatar.options.computed.classes.call(this),\n 'v-avatar--tile': this.tile || this.horizontal,\n }\n },\n },\n\n render (h): VNode {\n const render = VAvatar.options.render.call(this, h)\n\n render.data = render.data || {}\n render.data.staticClass += ' v-list-item__avatar'\n\n return render\n },\n})\n","// Styles\nimport './VListItemGroup.sass'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\nexport default mixins(\n BaseItemGroup,\n Colorable\n).extend({\n name: 'v-list-item-group',\n\n provide () {\n return {\n isInGroup: true,\n listItemGroup: this,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-list-item-group': true,\n }\n },\n },\n\n methods: {\n genData (): object {\n return this.setTextColor(this.color, {\n ...BaseItemGroup.options.methods.genData.call(this),\n attrs: {\n role: 'listbox',\n },\n })\n },\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-list-item-icon',\n\n functional: true,\n\n render (h, { data, children }): VNode {\n data.staticClass = (`v-list-item__icon ${data.staticClass || ''}`).trim()\n\n return h('div', data, children)\n },\n})\n","// Styles\nimport './VListGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VList from './VList'\nimport VListItem from './VListItem'\nimport VListItemIcon from './VListItemIcon'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Bootable from '../../mixins/bootable'\nimport Colorable from '../../mixins/colorable'\nimport Toggleable from '../../mixins/toggleable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Transitions\nimport { VExpandTransition } from '../transitions'\n\n// Utils\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport { Route } from 'vue-router'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Bootable,\n Colorable,\n RegistrableInject('list'),\n Toggleable\n)\n\ntype VListInstance = InstanceType<typeof VList>\n\ninterface options extends ExtractVue<typeof baseMixins> {\n list: VListInstance\n $refs: {\n group: HTMLElement\n }\n $route: Route\n}\n\nexport default baseMixins.extend<options>().extend({\n name: 'v-list-group',\n\n directives: { ripple },\n\n props: {\n activeClass: {\n type: String,\n default: '',\n },\n appendIcon: {\n type: String,\n default: '$expand',\n },\n color: {\n type: String,\n default: 'primary',\n },\n disabled: Boolean,\n group: [String, RegExp],\n noAction: Boolean,\n prependIcon: String,\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n subGroup: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-list-group--active': this.isActive,\n 'v-list-group--disabled': this.disabled,\n 'v-list-group--no-action': this.noAction,\n 'v-list-group--sub-group': this.subGroup,\n }\n },\n },\n\n watch: {\n isActive (val: boolean) {\n /* istanbul ignore else */\n if (!this.subGroup && val) {\n this.list && this.list.listClick(this._uid)\n }\n },\n $route: 'onRouteChange',\n },\n\n created () {\n this.list && this.list.register(this)\n\n if (this.group &&\n this.$route &&\n this.value == null\n ) {\n this.isActive = this.matchRoute(this.$route.path)\n }\n },\n\n beforeDestroy () {\n this.list && this.list.unregister(this)\n },\n\n methods: {\n click (e: Event) {\n if (this.disabled) return\n\n this.isBooted = true\n\n this.$emit('click', e)\n this.$nextTick(() => (this.isActive = !this.isActive))\n },\n genIcon (icon: string | false): VNode {\n return this.$createElement(VIcon, icon)\n },\n genAppendIcon (): VNode | null {\n const icon = !this.subGroup ? this.appendIcon : false\n\n if (!icon && !this.$slots.appendIcon) return null\n\n return this.$createElement(VListItemIcon, {\n staticClass: 'v-list-group__header__append-icon',\n }, [\n this.$slots.appendIcon || this.genIcon(icon),\n ])\n },\n genHeader (): VNode {\n return this.$createElement(VListItem, {\n staticClass: 'v-list-group__header',\n attrs: {\n 'aria-expanded': String(this.isActive),\n role: 'button',\n },\n class: {\n [this.activeClass]: this.isActive,\n },\n props: {\n inputValue: this.isActive,\n },\n directives: [{\n name: 'ripple',\n value: this.ripple,\n }],\n on: {\n ...this.listeners$,\n click: this.click,\n },\n }, [\n this.genPrependIcon(),\n this.$slots.activator,\n this.genAppendIcon(),\n ])\n },\n genItems (): VNode[] {\n return this.showLazyContent(() => [\n this.$createElement('div', {\n staticClass: 'v-list-group__items',\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }, getSlot(this)),\n ])\n },\n genPrependIcon (): VNode | null {\n const icon = this.subGroup && this.prependIcon == null\n ? '$subgroup'\n : this.prependIcon\n\n if (!icon && !this.$slots.prependIcon) return null\n\n return this.$createElement(VListItemIcon, {\n staticClass: 'v-list-group__header__prepend-icon',\n }, [\n this.$slots.prependIcon || this.genIcon(icon),\n ])\n },\n onRouteChange (to: Route) {\n /* istanbul ignore if */\n if (!this.group) return\n\n const isActive = this.matchRoute(to.path)\n\n /* istanbul ignore else */\n if (isActive && this.isActive !== isActive) {\n this.list && this.list.listClick(this._uid)\n }\n\n this.isActive = isActive\n },\n toggle (uid: number) {\n const isActive = this._uid === uid\n\n if (isActive) this.isBooted = true\n this.$nextTick(() => (this.isActive = isActive))\n },\n matchRoute (to: string) {\n return to.match(this.group) !== null\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.isActive && this.color, {\n staticClass: 'v-list-group',\n class: this.classes,\n }), [\n this.genHeader(),\n h(VExpandTransition, this.genItems()),\n ])\n },\n})\n","import { createSimpleFunctional } from '../../util/helpers'\n\nimport VList from './VList'\nimport VListGroup from './VListGroup'\nimport VListItem from './VListItem'\nimport VListItemGroup from './VListItemGroup'\nimport VListItemAction from './VListItemAction'\nimport VListItemAvatar from './VListItemAvatar'\nimport VListItemIcon from './VListItemIcon'\n\nexport const VListItemActionText = createSimpleFunctional('v-list-item__action-text', 'span')\nexport const VListItemContent = createSimpleFunctional('v-list-item__content', 'div')\nexport const VListItemTitle = createSimpleFunctional('v-list-item__title', 'div')\nexport const VListItemSubtitle = createSimpleFunctional('v-list-item__subtitle', 'div')\n\nexport {\n VList,\n VListGroup,\n VListItem,\n VListItemAction,\n VListItemAvatar,\n VListItemIcon,\n VListItemGroup,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VList,\n VListGroup,\n VListItem,\n VListItemAction,\n VListItemActionText,\n VListItemAvatar,\n VListItemContent,\n VListItemGroup,\n VListItemIcon,\n VListItemSubtitle,\n VListItemTitle,\n },\n}\n","// Styles\nimport './VMain.sass'\n\n// Mixins\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default SSRBootable.extend({\n name: 'v-main',\n\n props: {\n tag: {\n type: String,\n default: 'main',\n },\n },\n\n computed: {\n styles (): object {\n const {\n bar, top, right, footer, insetFooter, bottom, left,\n } = this.$vuetify.application\n\n return {\n paddingTop: `${top + bar}px`,\n paddingRight: `${right}px`,\n paddingBottom: `${footer + insetFooter + bottom}px`,\n paddingLeft: `${left}px`,\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-main',\n style: this.styles,\n ref: 'main',\n }\n\n return h(this.tag, data, [\n h(\n 'div',\n { staticClass: 'v-main__wrap' },\n this.$slots.default\n ),\n ])\n },\n})\n","// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Delayable from '../../mixins/delayable'\nimport Dependent from '../../mixins/dependent'\nimport Menuable from '../../mixins/menuable'\nimport Returnable from '../../mixins/returnable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\nimport goTo from '../../services/goto'\n\n// Types\nimport { VNode, VNodeDirective, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Delayable,\n Returnable,\n Roundable,\n Themeable,\n Menuable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-menu',\n\n directives: {\n ClickOutside,\n Resize,\n },\n\n provide (): object {\n return {\n isInMenu: true,\n // Pass theme through to default slot\n theme: this.theme,\n }\n },\n\n props: {\n auto: Boolean,\n closeOnClick: {\n type: Boolean,\n default: true,\n },\n closeOnContentClick: {\n type: Boolean,\n default: true,\n },\n disabled: Boolean,\n disableKeys: Boolean,\n maxHeight: {\n type: [Number, String],\n default: 'auto',\n },\n offsetX: Boolean,\n offsetY: Boolean,\n openOnHover: Boolean,\n origin: {\n type: String,\n default: 'top left',\n },\n transition: {\n type: [Boolean, String],\n default: 'v-menu-transition',\n },\n },\n\n data () {\n return {\n calculatedTopAuto: 0,\n defaultOffset: 8,\n hasJustFocused: false,\n listIndex: -1,\n resizeTimeout: 0,\n selectedIndex: null as null | number,\n tiles: [] as HTMLElement[],\n }\n },\n\n computed: {\n activeTile (): HTMLElement | undefined {\n return this.tiles[this.listIndex]\n },\n calculatedLeft (): string {\n const menuWidth = Math.max(this.dimensions.content.width, parseFloat(this.calculatedMinWidth))\n\n if (!this.auto) return this.calcLeft(menuWidth) || '0'\n\n return convertToUnit(this.calcXOverflow(this.calcLeftAuto(), menuWidth)) || '0'\n },\n calculatedMaxHeight (): string {\n const height = this.auto\n ? '200px'\n : convertToUnit(this.maxHeight)\n\n return height || '0'\n },\n calculatedMaxWidth (): string {\n return convertToUnit(this.maxWidth) || '0'\n },\n calculatedMinWidth (): string {\n if (this.minWidth) {\n return convertToUnit(this.minWidth) || '0'\n }\n\n const minWidth = Math.min(\n this.dimensions.activator.width +\n Number(this.nudgeWidth) +\n (this.auto ? 16 : 0),\n Math.max(this.pageWidth - 24, 0)\n )\n\n const calculatedMaxWidth = isNaN(parseInt(this.calculatedMaxWidth))\n ? minWidth\n : parseInt(this.calculatedMaxWidth)\n\n return convertToUnit(Math.min(\n calculatedMaxWidth,\n minWidth\n )) || '0'\n },\n calculatedTop (): string {\n const top = !this.auto\n ? this.calcTop()\n : convertToUnit(this.calcYOverflow(this.calculatedTopAuto))\n\n return top || '0'\n },\n hasClickableTiles (): boolean {\n return Boolean(this.tiles.find(tile => tile.tabIndex > -1))\n },\n styles (): object {\n return {\n maxHeight: this.calculatedMaxHeight,\n minWidth: this.calculatedMinWidth,\n maxWidth: this.calculatedMaxWidth,\n top: this.calculatedTop,\n left: this.calculatedLeft,\n transformOrigin: this.origin,\n zIndex: this.zIndex || this.activeZIndex,\n }\n },\n },\n\n watch: {\n isActive (val) {\n if (!val) this.listIndex = -1\n },\n isContentActive (val) {\n this.hasJustFocused = val\n },\n listIndex (next, prev) {\n if (next in this.tiles) {\n const tile = this.tiles[next]\n tile.classList.add('v-list-item--highlighted')\n const scrollTop = this.$refs.content.scrollTop\n const contentHeight = this.$refs.content.clientHeight\n\n if (scrollTop > tile.offsetTop - 8) {\n goTo(tile.offsetTop - tile.clientHeight, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content,\n })\n } else if (scrollTop + contentHeight < tile.offsetTop + tile.clientHeight + 8) {\n goTo(tile.offsetTop - contentHeight + tile.clientHeight * 2, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content,\n })\n }\n }\n\n prev in this.tiles &&\n this.tiles[prev].classList.remove('v-list-item--highlighted')\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n mounted () {\n this.isActive && this.callActivate()\n },\n\n methods: {\n activate () {\n // Update coordinates and dimensions of menu\n // and its activator\n this.updateDimensions()\n // Start the transition\n requestAnimationFrame(() => {\n // Once transitioning, calculate scroll and top position\n this.startTransition().then(() => {\n if (this.$refs.content) {\n this.calculatedTopAuto = this.calcTopAuto()\n this.auto && (this.$refs.content.scrollTop = this.calcScrollPosition())\n }\n })\n })\n },\n calcScrollPosition () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement\n const maxScrollTop = $el.scrollHeight - $el.offsetHeight\n\n return activeTile\n ? Math.min(maxScrollTop, Math.max(0, activeTile.offsetTop - $el.offsetHeight / 2 + activeTile.offsetHeight / 2))\n : $el.scrollTop\n },\n calcLeftAuto () {\n return parseInt(this.dimensions.activator.left - this.defaultOffset * 2)\n },\n calcTopAuto () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement | null\n\n if (!activeTile) {\n this.selectedIndex = null\n }\n\n if (this.offsetY || !activeTile) {\n return this.computedTop\n }\n\n this.selectedIndex = Array.from(this.tiles).indexOf(activeTile)\n\n const tileDistanceFromMenuTop = activeTile.offsetTop - this.calcScrollPosition()\n const firstTileOffsetTop = ($el.querySelector('.v-list-item') as HTMLElement).offsetTop\n\n return this.computedTop - tileDistanceFromMenuTop - firstTileOffsetTop - 1\n },\n changeListIndex (e: KeyboardEvent) {\n // For infinite scroll and autocomplete, re-evaluate children\n this.getTiles()\n\n if (!this.isActive || !this.hasClickableTiles) {\n return\n } else if (e.keyCode === keyCodes.tab) {\n this.isActive = false\n return\n } else if (e.keyCode === keyCodes.down) {\n this.nextTile()\n } else if (e.keyCode === keyCodes.up) {\n this.prevTile()\n } else if (e.keyCode === keyCodes.end) {\n this.lastTile()\n } else if (e.keyCode === keyCodes.home) {\n this.firstTile()\n } else if (e.keyCode === keyCodes.enter && this.listIndex !== -1) {\n this.tiles[this.listIndex].click()\n } else { return }\n // One of the conditions was met, prevent default action (#2988)\n e.preventDefault()\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n\n return this.isActive &&\n !this._isDestroyed &&\n this.closeOnClick &&\n !this.$refs.content.contains(target)\n },\n genActivatorAttributes () {\n const attributes = Activatable.options.methods.genActivatorAttributes.call(this)\n\n if (this.activeTile && this.activeTile.id) {\n return {\n ...attributes,\n 'aria-activedescendant': this.activeTile.id,\n }\n }\n\n return attributes\n },\n genActivatorListeners () {\n const listeners = Menuable.options.methods.genActivatorListeners.call(this)\n\n if (!this.disableKeys) {\n listeners.keydown = this.onKeyDown\n }\n\n return listeners\n },\n genTransition (): VNode {\n const content = this.genContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n },\n }, [content])\n },\n genDirectives (): VNodeDirective[] {\n const directives: VNodeDirective[] = [{\n name: 'show',\n value: this.isContentActive,\n }]\n\n // Do not add click outside for hover menu\n if (!this.openOnHover && this.closeOnClick) {\n directives.push({\n name: 'click-outside',\n value: {\n handler: () => { this.isActive = false },\n closeConditional: this.closeConditional,\n include: () => [this.$el, ...this.getOpenDependentElements()],\n },\n })\n }\n\n return directives\n },\n genContent (): VNode {\n const options = {\n attrs: {\n ...this.getScopeIdAttrs(),\n role: 'role' in this.$attrs ? this.$attrs.role : 'menu',\n },\n staticClass: 'v-menu__content',\n class: {\n ...this.rootThemeClasses,\n ...this.roundedClasses,\n 'v-menu__content--auto': this.auto,\n 'v-menu__content--fixed': this.activatorFixed,\n menuable__content__active: this.isActive,\n [this.contentClass.trim()]: true,\n },\n style: this.styles,\n directives: this.genDirectives(),\n ref: 'content',\n on: {\n click: (e: Event) => {\n const target = e.target as HTMLElement\n\n if (target.getAttribute('disabled')) return\n if (this.closeOnContentClick) this.isActive = false\n },\n keydown: this.onKeyDown,\n },\n } as VNodeData\n\n if (this.$listeners.scroll) {\n options.on = options.on || {}\n options.on.scroll = this.$listeners.scroll\n }\n\n if (!this.disabled && this.openOnHover) {\n options.on = options.on || {}\n options.on.mouseenter = this.mouseEnterHandler\n }\n\n if (this.openOnHover) {\n options.on = options.on || {}\n options.on.mouseleave = this.mouseLeaveHandler\n }\n\n return this.$createElement('div', options, this.getContentSlot())\n },\n getTiles () {\n if (!this.$refs.content) return\n\n this.tiles = Array.from(this.$refs.content.querySelectorAll('.v-list-item, .v-divider, .v-subheader'))\n },\n mouseEnterHandler () {\n this.runDelay('open', () => {\n if (this.hasJustFocused) return\n\n this.hasJustFocused = true\n })\n },\n mouseLeaveHandler (e: MouseEvent) {\n // Prevent accidental re-activation\n this.runDelay('close', () => {\n if (this.$refs.content?.contains(e.relatedTarget as HTMLElement)) return\n\n requestAnimationFrame(() => {\n this.isActive = false\n this.callDeactivate()\n })\n })\n },\n nextTile () {\n const tile = this.tiles[this.listIndex + 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = -1\n this.nextTile()\n\n return\n }\n\n this.listIndex++\n if (tile.tabIndex === -1) this.nextTile()\n },\n prevTile () {\n const tile = this.tiles[this.listIndex - 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = this.tiles.length\n this.prevTile()\n\n return\n }\n\n this.listIndex--\n if (tile.tabIndex === -1) this.prevTile()\n },\n lastTile () {\n const tile = this.tiles[this.tiles.length - 1]\n\n if (!tile) return\n\n this.listIndex = this.tiles.length - 1\n\n if (tile.tabIndex === -1) this.prevTile()\n },\n firstTile () {\n const tile = this.tiles[0]\n\n if (!tile) return\n\n this.listIndex = 0\n\n if (tile.tabIndex === -1) this.nextTile()\n },\n onKeyDown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc) {\n // Wait for dependent elements to close first\n setTimeout(() => { this.isActive = false })\n const activator = this.getActivator()\n this.$nextTick(() => activator && activator.focus())\n } else if (\n !this.isActive &&\n [keyCodes.up, keyCodes.down].includes(e.keyCode)\n ) {\n this.isActive = true\n }\n\n // Allow for isActive watcher to generate tile list\n this.$nextTick(() => this.changeListIndex(e))\n },\n onResize () {\n if (!this.isActive) return\n\n // Account for screen resize\n // and orientation change\n // eslint-disable-next-line no-unused-expressions\n this.$refs.content.offsetWidth\n this.updateDimensions()\n\n // When resizing to a smaller width\n // content width is evaluated before\n // the new activator width has been\n // set, causing it to not size properly\n // hacky but will revisit in the future\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.updateDimensions, 100)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-menu',\n class: {\n 'v-menu--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n directives: [{\n arg: '500',\n name: 'resize',\n value: this.onResize,\n }],\n }\n\n return h('div', data, [\n !this.activator && this.genActivator(),\n this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [this.genTransition()]),\n ]),\n ])\n },\n})\n","// Styles\nimport './VOverlay.sass'\n\n// Mixins\nimport Colorable from './../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\nimport Toggleable from './../../mixins/toggleable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Themeable,\n Toggleable\n).extend({\n name: 'v-overlay',\n\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: '#212121',\n },\n dark: {\n type: Boolean,\n default: true,\n },\n opacity: {\n type: [Number, String],\n default: 0.46,\n },\n value: {\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 5,\n },\n },\n\n computed: {\n __scrim (): VNode {\n const data = this.setBackgroundColor(this.color, {\n staticClass: 'v-overlay__scrim',\n style: {\n opacity: this.computedOpacity,\n },\n })\n\n return this.$createElement('div', data)\n },\n classes (): object {\n return {\n 'v-overlay--absolute': this.absolute,\n 'v-overlay--active': this.isActive,\n ...this.themeClasses,\n }\n },\n computedOpacity (): number {\n return Number(this.isActive ? this.opacity : 0)\n },\n styles (): object {\n return {\n zIndex: this.zIndex,\n }\n },\n },\n\n methods: {\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-overlay__content',\n }, this.$slots.default)\n },\n },\n\n render (h): VNode {\n const children = [this.__scrim]\n\n if (this.isActive) children.push(this.genContent())\n\n return h('div', {\n staticClass: 'v-overlay',\n on: this.$listeners,\n class: this.classes,\n style: this.styles,\n }, children)\n },\n})\n","// Styles\nimport './VProgressCircular.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utils\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\n\n/* @vue/component */\nexport default Colorable.extend({\n name: 'v-progress-circular',\n\n directives: { intersect },\n\n props: {\n button: Boolean,\n indeterminate: Boolean,\n rotate: {\n type: [Number, String],\n default: 0,\n },\n size: {\n type: [Number, String],\n default: 32,\n },\n width: {\n type: [Number, String],\n default: 4,\n },\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n radius: 20,\n isVisible: true,\n }),\n\n computed: {\n calculatedSize (): number {\n return Number(this.size) + (this.button ? 8 : 0)\n },\n\n circumference (): number {\n return 2 * Math.PI * this.radius\n },\n\n classes (): object {\n return {\n 'v-progress-circular--visible': this.isVisible,\n 'v-progress-circular--indeterminate': this.indeterminate,\n 'v-progress-circular--button': this.button,\n }\n },\n\n normalizedValue (): number {\n if (this.value < 0) {\n return 0\n }\n\n if (this.value > 100) {\n return 100\n }\n\n return parseFloat(this.value)\n },\n\n strokeDashArray (): number {\n return Math.round(this.circumference * 1000) / 1000\n },\n\n strokeDashOffset (): string {\n return ((100 - this.normalizedValue) / 100) * this.circumference + 'px'\n },\n\n strokeWidth (): number {\n return Number(this.width) / +this.size * this.viewBoxSize * 2\n },\n\n styles (): object {\n return {\n height: convertToUnit(this.calculatedSize),\n width: convertToUnit(this.calculatedSize),\n }\n },\n\n svgStyles (): object {\n return {\n transform: `rotate(${Number(this.rotate)}deg)`,\n }\n },\n\n viewBoxSize (): number {\n return this.radius / (1 - Number(this.width) / +this.size)\n },\n },\n\n methods: {\n genCircle (name: string, offset: string | number): VNode {\n return this.$createElement('circle', {\n class: `v-progress-circular__${name}`,\n attrs: {\n fill: 'transparent',\n cx: 2 * this.viewBoxSize,\n cy: 2 * this.viewBoxSize,\n r: this.radius,\n 'stroke-width': this.strokeWidth,\n 'stroke-dasharray': this.strokeDashArray,\n 'stroke-dashoffset': offset,\n },\n })\n },\n genSvg (): VNode {\n const children = [\n this.indeterminate || this.genCircle('underlay', 0),\n this.genCircle('overlay', this.strokeDashOffset),\n ] as VNodeChildren\n\n return this.$createElement('svg', {\n style: this.svgStyles,\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: `${this.viewBoxSize} ${this.viewBoxSize} ${2 * this.viewBoxSize} ${2 * this.viewBoxSize}`,\n },\n }, children)\n },\n genInfo (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-circular__info',\n }, this.$slots.default)\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-circular',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: this.styles,\n on: this.$listeners,\n }), [\n this.genSvg(),\n this.genInfo(),\n ])\n },\n})\n","import './VProgressLinear.sass'\n\n// Components\nimport {\n VFadeTransition,\n VSlideXTransition,\n} from '../transitions'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { FunctionalComponentOptions } from 'vue/types'\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n PositionableFactory(['absolute', 'fixed', 'top', 'bottom']),\n Proxyable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-progress-linear',\n\n directives: { intersect },\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n backgroundColor: {\n type: String,\n default: null,\n },\n backgroundOpacity: {\n type: [Number, String],\n default: null,\n },\n bufferValue: {\n type: [Number, String],\n default: 100,\n },\n color: {\n type: String,\n default: 'primary',\n },\n height: {\n type: [Number, String],\n default: 4,\n },\n indeterminate: Boolean,\n query: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n stream: Boolean,\n striped: Boolean,\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data () {\n return {\n internalLazyValue: this.value || 0,\n isVisible: true,\n }\n },\n\n computed: {\n __cachedBackground (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor || this.color, {\n staticClass: 'v-progress-linear__background',\n style: this.backgroundStyle,\n }))\n },\n __cachedBar (): VNode {\n return this.$createElement(this.computedTransition, [this.__cachedBarType])\n },\n __cachedBarType (): VNode {\n return this.indeterminate ? this.__cachedIndeterminate : this.__cachedDeterminate\n },\n __cachedBuffer (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__buffer',\n style: this.styles,\n })\n },\n __cachedDeterminate (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: `v-progress-linear__determinate`,\n style: {\n width: convertToUnit(this.normalizedValue, '%'),\n },\n }))\n },\n __cachedIndeterminate (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n 'v-progress-linear__indeterminate--active': this.active,\n },\n }, [\n this.genProgressBar('long'),\n this.genProgressBar('short'),\n ])\n },\n __cachedStream (): VNode | null {\n if (!this.stream) return null\n\n return this.$createElement('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-linear__stream',\n style: {\n width: convertToUnit(100 - this.normalizedBuffer, '%'),\n },\n }))\n },\n backgroundStyle (): object {\n const backgroundOpacity = this.backgroundOpacity == null\n ? (this.backgroundColor ? 1 : 0.3)\n : parseFloat(this.backgroundOpacity)\n\n return {\n opacity: backgroundOpacity,\n [this.isReversed ? 'right' : 'left']: convertToUnit(this.normalizedValue, '%'),\n width: convertToUnit(Math.max(0, this.normalizedBuffer - this.normalizedValue), '%'),\n }\n },\n classes (): object {\n return {\n 'v-progress-linear--absolute': this.absolute,\n 'v-progress-linear--fixed': this.fixed,\n 'v-progress-linear--query': this.query,\n 'v-progress-linear--reactive': this.reactive,\n 'v-progress-linear--reverse': this.isReversed,\n 'v-progress-linear--rounded': this.rounded,\n 'v-progress-linear--striped': this.striped,\n 'v-progress-linear--visible': this.isVisible,\n ...this.themeClasses,\n }\n },\n computedTransition (): FunctionalComponentOptions {\n return this.indeterminate ? VFadeTransition : VSlideXTransition\n },\n isReversed (): boolean {\n return this.$vuetify.rtl !== this.reverse\n },\n normalizedBuffer (): number {\n return this.normalize(this.bufferValue)\n },\n normalizedValue (): number {\n return this.normalize(this.internalLazyValue)\n },\n reactive (): boolean {\n return Boolean(this.$listeners.change)\n },\n styles (): object {\n const styles: Record<string, any> = {}\n\n if (!this.active) {\n styles.height = 0\n }\n\n if (!this.indeterminate && parseFloat(this.normalizedBuffer) !== 100) {\n styles.width = convertToUnit(this.normalizedBuffer, '%')\n }\n\n return styles\n },\n },\n\n methods: {\n genContent () {\n const slot = getSlot(this, 'default', { value: this.internalLazyValue })\n\n if (!slot) return null\n\n return this.$createElement('div', {\n staticClass: 'v-progress-linear__content',\n }, slot)\n },\n genListeners () {\n const listeners = this.$listeners\n\n if (this.reactive) {\n listeners.click = this.onClick\n }\n\n return listeners\n },\n genProgressBar (name: 'long' | 'short') {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-progress-linear__indeterminate',\n class: {\n [name]: true,\n },\n }))\n },\n onClick (e: MouseEvent) {\n if (!this.reactive) return\n\n const { width } = this.$el.getBoundingClientRect()\n\n this.internalValue = e.offsetX / width * 100\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n normalize (value: string | number) {\n if (value < 0) return 0\n if (value > 100) return 100\n return parseFloat(value)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-progress-linear',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': this.normalizedBuffer,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: {\n bottom: this.bottom ? 0 : undefined,\n height: this.active ? convertToUnit(this.height) : 0,\n top: this.top ? 0 : undefined,\n },\n on: this.genListeners(),\n }\n\n return h('div', data, [\n this.__cachedStream,\n this.__cachedBackground,\n this.__cachedBuffer,\n this.__cachedBar,\n this.genContent(),\n ])\n },\n})\n","import VProgressLinear from './VProgressLinear'\n\nexport { VProgressLinear }\nexport default VProgressLinear\n","import './VResponsive.sass'\n\n// Mixins\nimport Measurable, { NumberOrNumberString } from '../../mixins/measurable'\n\n// Types\nimport { VNode } from 'vue'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Measurable).extend({\n name: 'v-responsive',\n\n props: {\n aspectRatio: [String, Number] as NumberOrNumberString,\n contentClass: String,\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.aspectRatio)\n },\n aspectStyle (): object | undefined {\n return this.computedAspectRatio\n ? { paddingBottom: (1 / this.computedAspectRatio) * 100 + '%' }\n : undefined\n },\n __cachedSizer (): VNode | [] {\n if (!this.aspectStyle) return []\n\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer',\n })\n },\n },\n\n methods: {\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content',\n class: this.contentClass,\n }, getSlot(this))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-responsive',\n style: this.measurableStyles,\n on: this.$listeners,\n }, [\n this.__cachedSizer,\n this.genContent(),\n ])\n },\n})\n","import VChip from './VChip'\n\nexport { VChip }\nexport default VChip\n","import VMenu from './VMenu'\n\nexport { VMenu }\nexport default VMenu\n","import './VSimpleCheckbox.sass'\n\nimport ripple from '../../directives/ripple'\n\nimport Vue, { VNode, VNodeDirective } from 'vue'\nimport { VIcon } from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-simple-checkbox',\n\n functional: true,\n\n directives: {\n ripple,\n },\n\n props: {\n ...Colorable.options.props,\n ...Themeable.options.props,\n disabled: Boolean,\n ripple: {\n type: Boolean,\n default: true,\n },\n value: Boolean,\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n },\n\n render (h, { props, data, listeners }): VNode {\n const children = []\n let icon = props.offIcon\n if (props.indeterminate) icon = props.indeterminateIcon\n else if (props.value) icon = props.onIcon\n\n children.push(h(VIcon, Colorable.options.methods.setTextColor(props.value && props.color, {\n props: {\n disabled: props.disabled,\n dark: props.dark,\n light: props.light,\n },\n }), icon))\n\n if (props.ripple && !props.disabled) {\n const ripple = h('div', Colorable.options.methods.setTextColor(props.color, {\n staticClass: 'v-input--selection-controls__ripple',\n directives: [{\n name: 'ripple',\n value: { center: true },\n }] as VNodeDirective[],\n }))\n\n children.push(ripple)\n }\n\n return h('div',\n mergeData(data, {\n class: {\n 'v-simple-checkbox': true,\n 'v-simple-checkbox--disabled': props.disabled,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n\n if (data.on && data.on.input && !props.disabled) {\n wrapInArray(data.on.input).forEach(f => f(!props.value))\n }\n },\n },\n }), [\n h('div', { staticClass: 'v-input--selection-controls__input' }, children),\n ])\n },\n})\n","import VDivider from './VDivider'\n\nexport { VDivider }\nexport default VDivider\n","import VSubheader from './VSubheader'\n\nexport { VSubheader }\nexport default VSubheader\n","// Components\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VDivider from '../VDivider'\nimport VSubheader from '../VSubheader'\nimport {\n VList,\n VListItem,\n VListItemAction,\n VListItemContent,\n VListItemTitle,\n} from '../VList'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport {\n escapeHTML,\n getPropertyFromItem,\n} from '../../util/helpers'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\ntype ListTile = { item: any, disabled?: null | boolean, value?: boolean, index: number };\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-select-list',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n action: Boolean,\n dense: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator<any[]>,\n itemDisabled: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'value',\n },\n noDataText: String,\n noFilter: Boolean,\n searchInput: null as unknown as PropType<any>,\n selectedItems: {\n type: Array,\n default: () => [],\n } as PropValidator<any[]>,\n },\n\n computed: {\n parsedItems (): any[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n tileActiveClass (): string {\n return Object.keys(this.setTextColor(this.color).class || {}).join(' ')\n },\n staticNoDataTile (): VNode {\n const tile = {\n attrs: {\n role: undefined,\n },\n on: {\n mousedown: (e: Event) => e.preventDefault(), // Prevent onBlur from being called\n },\n }\n\n return this.$createElement(VListItem, tile, [\n this.genTileContent(this.noDataText),\n ])\n },\n },\n\n methods: {\n genAction (item: object, inputValue: any): VNode {\n return this.$createElement(VListItemAction, [\n this.$createElement(VSimpleCheckbox, {\n props: {\n color: this.color,\n value: inputValue,\n ripple: false,\n },\n on: {\n input: () => this.$emit('select', item),\n },\n }),\n ])\n },\n genDivider (props: { [key: string]: any }) {\n return this.$createElement(VDivider, { props })\n },\n genFilteredText (text: string) {\n text = text || ''\n\n if (!this.searchInput || this.noFilter) return escapeHTML(text)\n\n const { start, middle, end } = this.getMaskedCharacters(text)\n\n return `${escapeHTML(start)}${this.genHighlight(middle)}${escapeHTML(end)}`\n },\n genHeader (props: { [key: string]: any }): VNode {\n return this.$createElement(VSubheader, { props }, props.header)\n },\n genHighlight (text: string): string {\n return `<span class=\"v-list-item__mask\">${escapeHTML(text)}</span>`\n },\n getMaskedCharacters (text: string): {\n start: string\n middle: string\n end: string\n } {\n const searchInput = (this.searchInput || '').toString().toLocaleLowerCase()\n const index = text.toLocaleLowerCase().indexOf(searchInput)\n\n if (index < 0) return { start: text, middle: '', end: '' }\n\n const start = text.slice(0, index)\n const middle = text.slice(index, index + searchInput.length)\n const end = text.slice(index + searchInput.length)\n return { start, middle, end }\n },\n genTile ({\n item,\n index,\n disabled = null,\n value = false,\n }: ListTile): VNode | VNode[] | undefined {\n if (!value) value = this.hasItem(item)\n\n if (item === Object(item)) {\n disabled = disabled !== null\n ? disabled\n : this.getDisabled(item)\n }\n\n const tile = {\n attrs: {\n // Default behavior in list does not\n // contain aria-selected by default\n 'aria-selected': String(value),\n id: `list-item-${this._uid}-${index}`,\n role: 'option',\n },\n on: {\n mousedown: (e: Event) => {\n // Prevent onBlur from being called\n e.preventDefault()\n },\n click: () => disabled || this.$emit('select', item),\n },\n props: {\n activeClass: this.tileActiveClass,\n disabled,\n ripple: true,\n inputValue: value,\n },\n }\n\n if (!this.$scopedSlots.item) {\n return this.$createElement(VListItem, tile, [\n this.action && !this.hideSelected && this.items.length > 0\n ? this.genAction(item, value)\n : null,\n this.genTileContent(item, index),\n ])\n }\n\n const parent = this\n const scopedSlot = this.$scopedSlots.item({\n parent,\n item,\n attrs: {\n ...tile.attrs,\n ...tile.props,\n },\n on: tile.on,\n })\n\n return this.needsTile(scopedSlot)\n ? this.$createElement(VListItem, tile, scopedSlot)\n : scopedSlot\n },\n genTileContent (item: any, index = 0): VNode {\n const innerHTML = this.genFilteredText(this.getText(item))\n\n return this.$createElement(VListItemContent,\n [this.$createElement(VListItemTitle, {\n domProps: { innerHTML },\n })]\n )\n },\n hasItem (item: object) {\n return this.parsedItems.indexOf(this.getValue(item)) > -1\n },\n needsTile (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n slot![0].componentOptions == null ||\n slot![0].componentOptions.Ctor.options.name !== 'v-list-item'\n },\n getDisabled (item: object) {\n return Boolean(getPropertyFromItem(item, this.itemDisabled, false))\n },\n getText (item: object) {\n return String(getPropertyFromItem(item, this.itemText, item))\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n },\n\n render (): VNode {\n const children: VNodeChildren = []\n const itemsLength = this.items.length\n for (let index = 0; index < itemsLength; index++) {\n const item = this.items[index]\n\n if (this.hideSelected &&\n this.hasItem(item)\n ) continue\n\n if (item == null) children.push(this.genTile({ item, index }))\n else if (item.header) children.push(this.genHeader(item))\n else if (item.divider) children.push(this.genDivider(item))\n else children.push(this.genTile({ item, index }))\n }\n\n children.length || children.push(this.$slots['no-data'] || this.staticNoDataTile)\n\n this.$slots['prepend-item'] && children.unshift(this.$slots['prepend-item'])\n\n this.$slots['append-item'] && children.push(this.$slots['append-item'])\n\n return this.$createElement(VList, {\n staticClass: 'v-select-list',\n class: this.themeClasses,\n attrs: {\n role: 'listbox',\n tabindex: -1,\n },\n props: { dense: this.dense },\n }, children)\n },\n})\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'filterable',\n\n props: {\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n },\n})\n","// Styles\nimport '../VTextField/VTextField.sass'\nimport './VSelect.sass'\n\n// Components\nimport VChip from '../VChip'\nimport VMenu from '../VMenu'\nimport VSelectList from './VSelectList'\n\n// Extensions\nimport VInput from '../VInput'\nimport VTextField from '../VTextField/VTextField'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Dependent from '../../mixins/dependent'\nimport Filterable from '../../mixins/filterable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { getPropertyFromItem, getObjectValueByPath, keyCodes } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, VNodeDirective, PropType, VNodeData } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\nexport const defaultMenuProps = {\n closeOnClick: false,\n closeOnContentClick: false,\n disableKeys: true,\n openOnClick: false,\n maxHeight: 304,\n}\n\n// Types\nconst baseMixins = mixins(\n VTextField,\n Comparable,\n Dependent,\n Filterable\n)\n\ninterface options extends InstanceType<typeof baseMixins> {\n $refs: {\n menu: InstanceType<typeof VMenu>\n content: HTMLElement\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n 'append-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend<options>().extend({\n name: 'v-select',\n\n directives: {\n ClickOutside,\n },\n\n props: {\n appendIcon: {\n type: String,\n default: '$dropdown',\n },\n attach: {\n type: null as unknown as PropType<string | boolean | Element | VNode>,\n default: false,\n },\n cacheItems: Boolean,\n chips: Boolean,\n clearable: Boolean,\n deletableChips: Boolean,\n disableLookup: Boolean,\n eager: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator<any[]>,\n itemColor: {\n type: String,\n default: 'primary',\n },\n itemDisabled: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType<SelectItemKey>,\n default: 'value',\n },\n menuProps: {\n type: [String, Array, Object],\n default: () => defaultMenuProps,\n },\n multiple: Boolean,\n openOnClear: Boolean,\n returnObject: Boolean,\n smallChips: Boolean,\n },\n\n data () {\n return {\n cachedItems: this.cacheItems ? this.items : [],\n menuIsBooted: false,\n isMenuActive: false,\n lastItem: 20,\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n lazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n selectedIndex: -1,\n selectedItems: [] as any[],\n keyboardLookupPrefix: '',\n keyboardLookupLastTime: 0,\n }\n },\n\n computed: {\n /* All items that the select has */\n allItems (): object[] {\n return this.filterDuplicates(this.cachedItems.concat(this.items))\n },\n classes (): object {\n return {\n ...VTextField.options.computed.classes.call(this),\n 'v-select': true,\n 'v-select--chips': this.hasChips,\n 'v-select--chips--small': this.smallChips,\n 'v-select--is-menu-active': this.isMenuActive,\n 'v-select--is-multi': this.multiple,\n }\n },\n /* Used by other components to overwrite */\n computedItems (): object[] {\n return this.allItems\n },\n computedOwns (): string {\n return `list-${this._uid}`\n },\n computedCounterValue (): number {\n const value = this.multiple\n ? this.selectedItems\n : (this.getText(this.selectedItems[0]) || '').toString()\n\n if (typeof this.counterValue === 'function') {\n return this.counterValue(value)\n }\n\n return value.length\n },\n directives (): VNodeDirective[] | undefined {\n return this.isFocused ? [{\n name: 'click-outside',\n value: {\n handler: this.blur,\n closeConditional: this.closeConditional,\n include: () => this.getOpenDependentElements(),\n },\n }] : undefined\n },\n dynamicHeight () {\n return 'auto'\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n hasSlot (): boolean {\n return Boolean(this.hasChips || this.$scopedSlots.selection)\n },\n isDirty (): boolean {\n return this.selectedItems.length > 0\n },\n listData (): object {\n const scopeId = this.$vnode && (this.$vnode.context!.$options as { [key: string]: any })._scopeId\n const attrs = scopeId ? {\n [scopeId]: true,\n } : {}\n\n return {\n attrs: {\n ...attrs,\n id: this.computedOwns,\n },\n props: {\n action: this.multiple,\n color: this.itemColor,\n dense: this.dense,\n hideSelected: this.hideSelected,\n items: this.virtualizedItems,\n itemDisabled: this.itemDisabled,\n itemText: this.itemText,\n itemValue: this.itemValue,\n noDataText: this.$vuetify.lang.t(this.noDataText),\n selectedItems: this.selectedItems,\n },\n on: {\n select: this.selectItem,\n },\n scopedSlots: {\n item: this.$scopedSlots.item,\n },\n }\n },\n staticList (): VNode {\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n consoleError('assert: staticList should not be called if slots are used')\n }\n\n return this.$createElement(VSelectList, this.listData)\n },\n virtualizedItems (): object[] {\n return (this.$_menuProps as any).auto\n ? this.computedItems\n : this.computedItems.slice(0, this.lastItem)\n },\n menuCanShow: () => true,\n $_menuProps (): object {\n let normalisedProps = typeof this.menuProps === 'string'\n ? this.menuProps.split(',')\n : this.menuProps\n\n if (Array.isArray(normalisedProps)) {\n normalisedProps = normalisedProps.reduce((acc, p) => {\n acc[p.trim()] = true\n return acc\n }, {})\n }\n\n return {\n ...defaultMenuProps,\n eager: this.eager,\n value: this.menuCanShow && this.isMenuActive,\n nudgeBottom: normalisedProps.offsetY ? 1 : 0, // convert to int\n ...normalisedProps,\n }\n },\n },\n\n watch: {\n internalValue (val) {\n this.initialValue = val\n this.setSelectedItems()\n\n if (this.multiple) {\n this.$nextTick(() => {\n this.$refs.menu?.updateDimensions()\n })\n }\n },\n isMenuActive (val) {\n window.setTimeout(() => this.onMenuActiveChange(val))\n },\n items: {\n immediate: true,\n handler (val) {\n if (this.cacheItems) {\n // Breaks vue-test-utils if\n // this isn't calculated\n // on the next tick\n this.$nextTick(() => {\n this.cachedItems = this.filterDuplicates(this.cachedItems.concat(val))\n })\n }\n\n this.setSelectedItems()\n },\n },\n },\n\n methods: {\n /** @public */\n blur (e?: Event) {\n VTextField.options.methods.blur.call(this, e)\n this.isMenuActive = false\n this.isFocused = false\n this.selectedIndex = -1\n this.setMenuIndex(-1)\n },\n /** @public */\n activateMenu () {\n if (\n !this.isInteractive ||\n this.isMenuActive\n ) return\n\n this.isMenuActive = true\n },\n clearableCallback () {\n this.setValue(this.multiple ? [] : null)\n this.setMenuIndex(-1)\n this.$nextTick(() => this.$refs.input && this.$refs.input.focus())\n\n if (this.openOnClear) this.isMenuActive = true\n },\n closeConditional (e: Event) {\n if (!this.isMenuActive) return true\n\n return (\n !this._isDestroyed &&\n\n // Click originates from outside the menu content\n // Multiple selects don't close when an item is clicked\n (!this.getContent() ||\n !this.getContent().contains(e.target as Node)) &&\n\n // Click originates from outside the element\n this.$el &&\n !this.$el.contains(e.target as Node) &&\n e.target !== this.$el\n )\n },\n filterDuplicates (arr: any[]) {\n const uniqueValues = new Map()\n for (let index = 0; index < arr.length; ++index) {\n const item = arr[index]\n\n // Do not return null values if existant (#14421)\n if (item == null) {\n continue\n }\n // Do not deduplicate headers or dividers (#12517)\n if (item.header || item.divider) {\n uniqueValues.set(item, item)\n continue\n }\n\n const val = this.getValue(item)\n\n // TODO: comparator\n !uniqueValues.has(val) && uniqueValues.set(val, item)\n }\n return Array.from(uniqueValues.values())\n },\n findExistingIndex (item: object) {\n const itemValue = this.getValue(item)\n\n return (this.internalValue || []).findIndex((i: object) => this.valueComparator(this.getValue(i), itemValue))\n },\n getContent () {\n return this.$refs.menu && this.$refs.menu.$refs.content\n },\n genChipSelection (item: object, index: number) {\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n const isInteractive = !isDisabled && this.isInteractive\n\n return this.$createElement(VChip, {\n staticClass: 'v-chip--select',\n attrs: { tabindex: -1 },\n props: {\n close: this.deletableChips && isInteractive,\n disabled: isDisabled,\n inputValue: index === this.selectedIndex,\n small: this.smallChips,\n },\n on: {\n click: (e: MouseEvent) => {\n if (!isInteractive) return\n\n e.stopPropagation()\n\n this.selectedIndex = index\n },\n 'click:close': () => this.onChipInput(item),\n },\n key: JSON.stringify(this.getValue(item)),\n }, this.getText(item))\n },\n genCommaSelection (item: object, index: number, last: boolean) {\n const color = index === this.selectedIndex && this.computedColor\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-select__selection v-select__selection--comma',\n class: {\n 'v-select__selection--disabled': isDisabled,\n },\n key: JSON.stringify(this.getValue(item)),\n }), `${this.getText(item)}${last ? '' : ', '}`)\n },\n genDefaultSlot (): (VNode | VNode[] | null)[] {\n const selections = this.genSelections()\n const input = this.genInput()\n\n // If the return is an empty array\n // push the input\n if (Array.isArray(selections)) {\n selections.push(input)\n // Otherwise push it into children\n } else {\n selections.children = selections.children || []\n selections.children.push(input)\n }\n\n return [\n this.genFieldset(),\n this.$createElement('div', {\n staticClass: 'v-select__slot',\n directives: this.directives,\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n selections,\n this.suffix ? this.genAffix('suffix') : null,\n this.genClearIcon(),\n this.genIconSlot(),\n this.genHiddenInput(),\n ]),\n this.genMenu(),\n this.genProgress(),\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData?: VNodeData\n ) {\n const icon = VInput.options.methods.genIcon.call(this, type, cb, extraData)\n\n if (type === 'append') {\n // Don't allow the dropdown icon to be focused\n icon.children![0].data = mergeData(icon.children![0].data!, {\n attrs: {\n tabindex: icon.children![0].componentOptions!.listeners && '-1',\n 'aria-hidden': 'true',\n 'aria-label': undefined,\n },\n })\n }\n\n return icon\n },\n genInput (): VNode {\n const input = VTextField.options.methods.genInput.call(this)\n\n delete input.data!.attrs!.name\n\n input.data = mergeData(input.data!, {\n domProps: { value: null },\n attrs: {\n readonly: true,\n type: 'text',\n 'aria-readonly': String(this.isReadonly),\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n placeholder: (!this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel)) ? this.placeholder : undefined,\n },\n on: { keypress: this.onKeyPress },\n })\n\n return input\n },\n genHiddenInput (): VNode {\n return this.$createElement('input', {\n domProps: { value: this.lazyValue },\n attrs: {\n type: 'hidden',\n name: this.attrs$.name,\n },\n })\n },\n genInputSlot (): VNode {\n const render = VTextField.options.methods.genInputSlot.call(this)\n\n render.data!.attrs = {\n ...render.data!.attrs,\n role: 'button',\n 'aria-haspopup': 'listbox',\n 'aria-expanded': String(this.isMenuActive),\n 'aria-owns': this.computedOwns,\n }\n\n return render\n },\n genList (): VNode {\n // If there's no slots, we can use a cached VNode to improve performance\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n return this.genListWithSlot()\n } else {\n return this.staticList\n }\n },\n genListWithSlot (): VNode {\n const slots = ['prepend-item', 'no-data', 'append-item']\n .filter(slotName => this.$slots[slotName])\n .map(slotName => this.$createElement('template', {\n slot: slotName,\n }, this.$slots[slotName]))\n // Requires destructuring due to Vue\n // modifying the `on` property when passed\n // as a referenced object\n return this.$createElement(VSelectList, {\n ...this.listData,\n }, slots)\n },\n genMenu (): VNode {\n const props = this.$_menuProps as any\n props.activator = this.$refs['input-slot']\n\n // Attach to root el so that\n // menu covers prepend/append icons\n if (\n // TODO: make this a computed property or helper or something\n this.attach === '' || // If used as a boolean prop (<v-menu attach>)\n this.attach === true || // If bound to a boolean (<v-menu :attach=\"true\">)\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) {\n props.attach = this.$el\n } else {\n props.attach = this.attach\n }\n\n return this.$createElement(VMenu, {\n attrs: { role: undefined },\n props,\n on: {\n input: (val: boolean) => {\n this.isMenuActive = val\n this.isFocused = val\n },\n scroll: this.onScroll,\n },\n ref: 'menu',\n }, [this.genList()])\n },\n genSelections (): VNode {\n let length = this.selectedItems.length\n const children = new Array(length)\n\n let genSelection\n if (this.$scopedSlots.selection) {\n genSelection = this.genSlotSelection\n } else if (this.hasChips) {\n genSelection = this.genChipSelection\n } else {\n genSelection = this.genCommaSelection\n }\n\n while (length--) {\n children[length] = genSelection(\n this.selectedItems[length],\n length,\n length === children.length - 1\n )\n }\n\n return this.$createElement('div', {\n staticClass: 'v-select__selections',\n }, children)\n },\n genSlotSelection (item: object, index: number): VNode[] | undefined {\n return this.$scopedSlots.selection!({\n attrs: {\n class: 'v-chip--select',\n },\n parent: this,\n item,\n index,\n select: (e: Event) => {\n e.stopPropagation()\n this.selectedIndex = index\n },\n selected: index === this.selectedIndex,\n disabled: !this.isInteractive,\n })\n },\n getMenuIndex () {\n return this.$refs.menu ? (this.$refs.menu as { [key: string]: any }).listIndex : -1\n },\n getDisabled (item: object) {\n return getPropertyFromItem(item, this.itemDisabled, false)\n },\n getText (item: object) {\n return getPropertyFromItem(item, this.itemText, item)\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n onBlur (e?: Event) {\n e && this.$emit('blur', e)\n },\n onChipInput (item: object) {\n if (this.multiple) this.selectItem(item)\n else this.setValue(null)\n // If all items have been deleted,\n // open `v-menu`\n if (this.selectedItems.length === 0) {\n this.isMenuActive = true\n } else {\n this.isMenuActive = false\n }\n this.selectedIndex = -1\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n if (!this.isAppendInner(e.target)) {\n this.isMenuActive = true\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n this.$emit('focus')\n }\n\n this.$emit('click', e)\n },\n onEscDown (e: Event) {\n e.preventDefault()\n if (this.isMenuActive) {\n e.stopPropagation()\n this.isMenuActive = false\n }\n },\n onKeyPress (e: KeyboardEvent) {\n if (\n this.multiple ||\n !this.isInteractive ||\n this.disableLookup\n ) return\n\n const KEYBOARD_LOOKUP_THRESHOLD = 1000 // milliseconds\n const now = performance.now()\n if (now - this.keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n this.keyboardLookupPrefix = ''\n }\n this.keyboardLookupPrefix += e.key.toLowerCase()\n this.keyboardLookupLastTime = now\n\n const index = this.allItems.findIndex(item => {\n const text = (this.getText(item) || '').toString()\n\n return text.toLowerCase().startsWith(this.keyboardLookupPrefix)\n })\n const item = this.allItems[index]\n if (index !== -1) {\n this.lastItem = Math.max(this.lastItem, index + 5)\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n },\n onKeyDown (e: KeyboardEvent) {\n if (this.isReadonly && e.keyCode !== keyCodes.tab) return\n\n const keyCode = e.keyCode\n const menu = this.$refs.menu\n\n this.$emit('keydown', e)\n\n if (!menu) return\n\n // If menu is active, allow default\n // listIndex change from menu\n if (this.isMenuActive && [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end, keyCodes.enter].includes(keyCode)) {\n this.$nextTick(() => {\n menu.changeListIndex(e)\n this.$emit('update:list-index', menu.listIndex)\n })\n }\n\n // If enter, space, open menu\n if ([\n keyCodes.enter,\n keyCodes.space,\n ].includes(keyCode)) this.activateMenu()\n\n // If menu is not active, up/down/home/end can do\n // one of 2 things. If multiple, opens the\n // menu, if not, will cycle through all\n // available options\n if (\n !this.isMenuActive &&\n [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end].includes(keyCode)\n ) return this.onUpDown(e)\n\n // If escape deactivate the menu\n if (keyCode === keyCodes.esc) return this.onEscDown(e)\n\n // If tab - select item or close menu\n if (keyCode === keyCodes.tab) return this.onTabDown(e)\n\n // If space preventDefault\n if (keyCode === keyCodes.space) return this.onSpaceDown(e)\n },\n onMenuActiveChange (val: boolean) {\n // If menu is closing and mulitple\n // or menuIndex is already set\n // skip menu index recalculation\n if (\n (this.multiple && !val) ||\n this.getMenuIndex() > -1\n ) return\n\n const menu = this.$refs.menu\n\n if (!menu || !this.isDirty) return\n\n // When menu opens, set index of first active item\n this.$refs.menu.getTiles()\n for (let i = 0; i < menu.tiles.length; i++) {\n if (menu.tiles[i].getAttribute('aria-selected') === 'true') {\n this.setMenuIndex(i)\n break\n }\n }\n },\n onMouseUp (e: MouseEvent) {\n // eslint-disable-next-line sonarjs/no-collapsible-if\n if (\n this.hasMouseDown &&\n e.which !== 3 &&\n this.isInteractive\n ) {\n // If append inner is present\n // and the target is itself\n // or inside, toggle menu\n if (this.isAppendInner(e.target)) {\n this.$nextTick(() => (this.isMenuActive = !this.isMenuActive))\n }\n }\n\n VTextField.options.methods.onMouseUp.call(this, e)\n },\n onScroll () {\n if (!this.isMenuActive) {\n requestAnimationFrame(() => (this.getContent().scrollTop = 0))\n } else {\n if (this.lastItem > this.computedItems.length) return\n\n const showMoreItems = (\n this.getContent().scrollHeight -\n (this.getContent().scrollTop +\n this.getContent().clientHeight)\n ) < 200\n\n if (showMoreItems) {\n this.lastItem += 20\n }\n }\n },\n onSpaceDown (e: KeyboardEvent) {\n e.preventDefault()\n },\n onTabDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n const activeTile = menu.activeTile\n\n // An item that is selected by\n // menu-index should toggled\n if (\n !this.multiple &&\n activeTile &&\n this.isMenuActive\n ) {\n e.preventDefault()\n e.stopPropagation()\n\n activeTile.click()\n } else {\n // If we make it here,\n // the user has no selected indexes\n // and is probably tabbing out\n this.blur(e)\n }\n },\n onUpDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n e.preventDefault()\n\n // Multiple selects do not cycle their value\n // when pressing up or down, instead activate\n // the menu\n if (this.multiple) return this.activateMenu()\n\n const keyCode = e.keyCode\n\n // Cycle through available values to achieve\n // select native behavior\n menu.isBooted = true\n\n window.requestAnimationFrame(() => {\n menu.getTiles()\n\n if (!menu.hasClickableTiles) return this.activateMenu()\n\n switch (keyCode) {\n case keyCodes.up:\n menu.prevTile()\n break\n case keyCodes.down:\n menu.nextTile()\n break\n case keyCodes.home:\n menu.firstTile()\n break\n case keyCodes.end:\n menu.lastTile()\n break\n }\n this.selectItem(this.allItems[this.getMenuIndex()])\n })\n },\n selectItem (item: object) {\n if (!this.multiple) {\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.isMenuActive = false\n } else {\n const internalValue = (this.internalValue || []).slice()\n const i = this.findExistingIndex(item)\n\n i !== -1 ? internalValue.splice(i, 1) : internalValue.push(item)\n this.setValue(internalValue.map((i: object) => {\n return this.returnObject ? i : this.getValue(i)\n }))\n\n // There is no item to re-highlight\n // when selections are hidden\n if (this.hideSelected) {\n this.setMenuIndex(-1)\n } else {\n const index = this.allItems.indexOf(item)\n if (~index) {\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n }\n }\n },\n setMenuIndex (index: number) {\n this.$refs.menu && ((this.$refs.menu as { [key: string]: any }).listIndex = index)\n },\n setSelectedItems () {\n const selectedItems = []\n const values = !this.multiple || !Array.isArray(this.internalValue)\n ? [this.internalValue]\n : this.internalValue\n\n for (const value of values) {\n const index = this.allItems.findIndex(v => this.valueComparator(\n this.getValue(v),\n this.getValue(value)\n ))\n\n if (index > -1) {\n selectedItems.push(this.allItems[index])\n }\n }\n\n this.selectedItems = selectedItems\n },\n setValue (value: any) {\n if (!this.valueComparator(value, this.internalValue)) {\n this.internalValue = value\n this.$emit('change', value)\n }\n },\n isAppendInner (target: any) {\n // return true if append inner is present\n // and the target is itself or inside\n const appendInner = this.$refs['append-inner']\n\n return appendInner && (appendInner === target || appendInner.contains(target))\n },\n },\n})\n","// Styles\nimport './VSheet.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n Colorable,\n Elevatable,\n Measurable,\n Roundable,\n Themeable\n).extend({\n name: 'v-sheet',\n\n props: {\n outlined: Boolean,\n shaped: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-sheet': true,\n 'v-sheet--outlined': this.outlined,\n 'v-sheet--shaped': this.shaped,\n ...this.themeClasses,\n ...this.elevationClasses,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return this.measurableStyles\n },\n },\n\n render (h): VNode {\n const data = {\n class: this.classes,\n style: this.styles,\n on: this.listeners$,\n }\n\n return h(\n this.tag,\n this.setBackgroundColor(this.color, data),\n this.$slots.default\n )\n },\n})\n","import VSheet from './VSheet'\n\nexport { VSheet }\nexport default VSheet\n","// Styles\nimport './VSkeletonLoader.sass'\n\n// Mixins\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\nimport { getSlot } from '../../util/helpers'\nimport { PropValidator } from 'vue/types/options'\n\nexport interface HTMLSkeletonLoaderElement extends HTMLElement {\n _initialStyle?: {\n display: string | null\n transition: string\n }\n}\n\n/* @vue/component */\nexport default mixins(\n Elevatable,\n Measurable,\n Themeable,\n).extend({\n name: 'VSkeletonLoader',\n\n props: {\n boilerplate: Boolean,\n loading: Boolean,\n tile: Boolean,\n transition: String,\n type: String,\n types: {\n type: Object,\n default: () => ({}),\n } as PropValidator<Record<string, string>>,\n },\n\n computed: {\n attrs (): object {\n if (!this.isLoading) return this.$attrs\n\n return !this.boilerplate ? {\n 'aria-busy': true,\n 'aria-live': 'polite',\n role: 'alert',\n ...this.$attrs,\n } : {}\n },\n classes (): object {\n return {\n 'v-skeleton-loader--boilerplate': this.boilerplate,\n 'v-skeleton-loader--is-loading': this.isLoading,\n 'v-skeleton-loader--tile': this.tile,\n ...this.themeClasses,\n ...this.elevationClasses,\n }\n },\n isLoading (): boolean {\n return !('default' in this.$scopedSlots) || this.loading\n },\n rootTypes (): Record<string, string> {\n return {\n actions: 'button@2',\n article: 'heading, paragraph',\n avatar: 'avatar',\n button: 'button',\n card: 'image, card-heading',\n 'card-avatar': 'image, list-item-avatar',\n 'card-heading': 'heading',\n chip: 'chip',\n 'date-picker': 'list-item, card-heading, divider, date-picker-options, date-picker-days, actions',\n 'date-picker-options': 'text, avatar@2',\n 'date-picker-days': 'avatar@28',\n heading: 'heading',\n image: 'image',\n 'list-item': 'text',\n 'list-item-avatar': 'avatar, text',\n 'list-item-two-line': 'sentences',\n 'list-item-avatar-two-line': 'avatar, sentences',\n 'list-item-three-line': 'paragraph',\n 'list-item-avatar-three-line': 'avatar, paragraph',\n paragraph: 'text@3',\n sentences: 'text@2',\n table: 'table-heading, table-thead, table-tbody, table-tfoot',\n 'table-heading': 'heading, text',\n 'table-thead': 'heading@6',\n 'table-tbody': 'table-row-divider@6',\n 'table-row-divider': 'table-row, divider',\n 'table-row': 'table-cell@6',\n 'table-cell': 'text',\n 'table-tfoot': 'text@2, avatar@2',\n text: 'text',\n ...this.types,\n }\n },\n },\n\n methods: {\n genBone (text: string, children: VNode[]) {\n return this.$createElement('div', {\n staticClass: `v-skeleton-loader__${text} v-skeleton-loader__bone`,\n }, children)\n },\n genBones (bone: string): VNode[] {\n // e.g. 'text@3'\n const [type, length] = bone.split('@') as [string, number]\n const generator = () => this.genStructure(type)\n\n // Generate a length array based upon\n // value after @ in the bone string\n return Array.from({ length }).map(generator)\n },\n // Fix type when this is merged\n // https://github.com/microsoft/TypeScript/pull/33050\n genStructure (type?: string): any {\n let children = []\n type = type || this.type || ''\n const bone = this.rootTypes[type] || ''\n\n // End of recursion, do nothing\n /* eslint-disable-next-line no-empty, brace-style */\n if (type === bone) {}\n // Array of values - e.g. 'heading, paragraph, text@2'\n else if (type.indexOf(',') > -1) return this.mapBones(type)\n // Array of values - e.g. 'paragraph@4'\n else if (type.indexOf('@') > -1) return this.genBones(type)\n // Array of values - e.g. 'card@2'\n else if (bone.indexOf(',') > -1) children = this.mapBones(bone)\n // Array of values - e.g. 'list-item@2'\n else if (bone.indexOf('@') > -1) children = this.genBones(bone)\n // Single value - e.g. 'card-heading'\n else if (bone) children.push(this.genStructure(bone))\n\n return [this.genBone(type, children)]\n },\n genSkeleton () {\n const children = []\n\n if (!this.isLoading) children.push(getSlot(this))\n else children.push(this.genStructure())\n\n /* istanbul ignore else */\n if (!this.transition) return children\n\n /* istanbul ignore next */\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n },\n // Only show transition when\n // content has been loaded\n on: {\n afterEnter: this.resetStyles,\n beforeEnter: this.onBeforeEnter,\n beforeLeave: this.onBeforeLeave,\n leaveCancelled: this.resetStyles,\n },\n }, children)\n },\n mapBones (bones: string) {\n // Remove spaces and return array of structures\n return bones.replace(/\\s/g, '').split(',').map(this.genStructure)\n },\n onBeforeEnter (el: HTMLSkeletonLoaderElement) {\n this.resetStyles(el)\n\n if (!this.isLoading) return\n\n el._initialStyle = {\n display: el.style.display,\n transition: el.style.transition,\n }\n\n el.style.setProperty('transition', 'none', 'important')\n },\n onBeforeLeave (el: HTMLSkeletonLoaderElement) {\n el.style.setProperty('display', 'none', 'important')\n },\n resetStyles (el: HTMLSkeletonLoaderElement) {\n if (!el._initialStyle) return\n\n el.style.display = el._initialStyle.display || ''\n el.style.transition = el._initialStyle.transition\n\n delete el._initialStyle\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-skeleton-loader',\n attrs: this.attrs,\n on: this.$listeners,\n class: this.classes,\n style: this.isLoading ? this.measurableStyles : undefined,\n }, [this.genSkeleton()])\n },\n})\n","// Styles\nimport './VSnackbar.sass'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\nimport Toggleable from '../../mixins/toggleable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { deprecate, removed } from '../../util/console'\n\n// Types\nimport { PropType, VNode } from 'vue'\n\nexport default mixins(\n VSheet,\n Colorable,\n Toggleable,\n PositionableFactory([\n 'absolute',\n 'bottom',\n 'left',\n 'right',\n 'top',\n ])\n/* @vue/component */\n).extend({\n name: 'v-snackbar',\n\n props: {\n app: Boolean,\n centered: Boolean,\n contentClass: {\n type: String,\n default: '',\n },\n multiLine: Boolean,\n text: Boolean,\n timeout: {\n type: [Number, String],\n default: 5000,\n },\n transition: {\n type: [Boolean, String] as PropType<false | string>,\n default: 'v-snack-transition',\n validator: v => typeof v === 'string' || v === false,\n },\n vertical: Boolean,\n },\n\n data: () => ({\n activeTimeout: -1,\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-snack--absolute': this.absolute,\n 'v-snack--active': this.isActive,\n 'v-snack--bottom': this.bottom || !this.top,\n 'v-snack--centered': this.centered,\n 'v-snack--has-background': this.hasBackground,\n 'v-snack--left': this.left,\n 'v-snack--multi-line': this.multiLine && !this.vertical,\n 'v-snack--right': this.right,\n 'v-snack--text': this.text,\n 'v-snack--top': this.top,\n 'v-snack--vertical': this.vertical,\n }\n },\n // Text and outlined styles both\n // use transparent backgrounds\n hasBackground (): boolean {\n return (\n !this.text &&\n !this.outlined\n )\n },\n // Snackbar is dark by default\n // override themeable logic.\n isDark (): boolean {\n return this.hasBackground\n ? !this.light\n : Themeable.options.computed.isDark.call(this)\n },\n styles (): object {\n if (this.absolute || !this.app) return {}\n\n const {\n bar,\n bottom,\n footer,\n insetFooter,\n left,\n right,\n top,\n } = this.$vuetify.application\n\n return {\n paddingBottom: convertToUnit(bottom + footer + insetFooter),\n paddingLeft: convertToUnit(left),\n paddingRight: convertToUnit(right),\n paddingTop: convertToUnit(bar + top),\n }\n },\n },\n\n watch: {\n isActive: 'setTimeout',\n timeout: 'setTimeout',\n },\n\n mounted () {\n if (this.isActive) this.setTimeout()\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('auto-height')) {\n removed('auto-height', this)\n }\n\n /* istanbul ignore next */\n // eslint-disable-next-line eqeqeq\n if (this.timeout == 0) {\n deprecate('timeout=\"0\"', '-1', this)\n }\n },\n\n methods: {\n genActions () {\n return this.$createElement('div', {\n staticClass: 'v-snack__action ',\n }, [\n getSlot(this, 'action', {\n attrs: { class: 'v-snack__btn' },\n }),\n ])\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-snack__content',\n class: {\n [this.contentClass]: true,\n },\n attrs: {\n role: 'status',\n 'aria-live': 'polite',\n },\n }, [getSlot(this)])\n },\n genWrapper () {\n const setColor = this.hasBackground\n ? this.setBackgroundColor\n : this.setTextColor\n\n const data = setColor(this.color, {\n staticClass: 'v-snack__wrapper',\n class: VSheet.options.computed.classes.call(this),\n style: VSheet.options.computed.styles.call(this),\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n on: {\n pointerenter: () => window.clearTimeout(this.activeTimeout),\n pointerleave: this.setTimeout,\n },\n })\n\n return this.$createElement('div', data, [\n this.genContent(),\n this.genActions(),\n ])\n },\n genTransition () {\n return this.$createElement('transition', {\n props: { name: this.transition },\n }, [this.genWrapper()])\n },\n setTimeout () {\n window.clearTimeout(this.activeTimeout)\n\n const timeout = Number(this.timeout)\n\n if (\n !this.isActive ||\n // TODO: remove 0 in v3\n [0, -1].includes(timeout)\n ) {\n return\n }\n\n this.activeTimeout = window.setTimeout(() => {\n this.isActive = false\n }, timeout)\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-snack',\n class: this.classes,\n style: this.styles,\n }, [\n this.transition !== false\n ? this.genTransition()\n : this.genWrapper(),\n ])\n },\n})\n","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\n","// Styles\nimport './VSystemBar.sass'\n\n// Mixins\nimport Applicationable from '../../mixins/applicationable'\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { convertToUnit, getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue/types'\n\nexport default mixins(\n Applicationable('bar', [\n 'height',\n 'window',\n ]),\n Colorable,\n Themeable\n/* @vue/component */\n).extend({\n name: 'v-system-bar',\n\n props: {\n height: [Number, String],\n lightsOut: Boolean,\n window: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-system-bar--lights-out': this.lightsOut,\n 'v-system-bar--absolute': this.absolute,\n 'v-system-bar--fixed': !this.absolute && (this.app || this.fixed),\n 'v-system-bar--window': this.window,\n ...this.themeClasses,\n }\n },\n computedHeight (): number | string {\n if (this.height) {\n return isNaN(parseInt(this.height)) ? this.height : parseInt(this.height)\n }\n\n return this.window ? 32 : 24\n },\n styles (): object {\n return {\n height: convertToUnit(this.computedHeight),\n }\n },\n },\n\n methods: {\n updateApplication () {\n return this.$el\n ? this.$el.clientHeight\n : this.computedHeight\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-system-bar',\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n }\n\n return h('div', this.setBackgroundColor(this.color, data), getSlot(this))\n },\n})\n","// Styles\nimport './VCounter.sass'\n\n// Mixins\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Themeable).extend({\n name: 'v-counter',\n\n functional: true,\n\n props: {\n value: {\n type: [Number, String],\n default: '',\n },\n max: [Number, String],\n },\n\n render (h, ctx): VNode {\n const { props } = ctx\n const max = parseInt(props.max, 10)\n const value = parseInt(props.value, 10)\n const content = max ? `${value} / ${max}` : String(props.value)\n const isGreater = max && (value > max)\n\n return h('div', {\n staticClass: 'v-counter',\n class: {\n 'error--text': isGreater,\n ...functionalThemeClasses(ctx),\n },\n }, content)\n },\n})\n","import VCounter from './VCounter'\n\nexport { VCounter }\nexport default VCounter\n","// Directives\nimport Intersect from '../../directives/intersect'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\n\nexport default function intersectable (options: { onVisible: string[] }) {\n return Vue.extend({\n name: 'intersectable',\n\n data: () => ({\n isIntersecting: false,\n }),\n\n mounted () {\n Intersect.inserted(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n destroyed () {\n Intersect.unbind(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n methods: {\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isIntersecting = isIntersecting\n\n if (!isIntersecting) return\n\n for (let i = 0, length = options.onVisible.length; i < length; i++) {\n const callback = (this as any)[options.onVisible[i]]\n\n if (typeof callback === 'function') {\n callback()\n continue\n }\n\n consoleWarn(options.onVisible[i] + ' method is not available on the instance but referenced in intersectable mixin options')\n }\n },\n },\n })\n}\n","// Styles\nimport './VTextField.sass'\n\n// Extensions\nimport VInput from '../VInput'\n\n// Components\nimport VCounter from '../VCounter'\nimport VLabel from '../VLabel'\n\n// Mixins\nimport Intersectable from '../../mixins/intersectable'\nimport Loadable from '../../mixins/loadable'\nimport Validatable from '../../mixins/validatable'\n\n// Directives\nimport resize from '../../directives/resize'\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport { attachedRoot } from '../../util/dom'\nimport { convertToUnit, keyCodes } from '../../util/helpers'\nimport { breaking, consoleWarn } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType } from 'vue/types'\n\nconst baseMixins = mixins(\n VInput,\n Intersectable({\n onVisible: [\n 'onResize',\n 'tryAutofocus',\n ],\n }),\n Loadable,\n)\ninterface options extends InstanceType<typeof baseMixins> {\n $refs: {\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\nconst dirtyTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\n/* @vue/component */\nexport default baseMixins.extend<options>().extend({\n name: 'v-text-field',\n\n directives: {\n resize,\n ripple,\n },\n\n inheritAttrs: false,\n\n props: {\n appendOuterIcon: String,\n autofocus: Boolean,\n clearable: Boolean,\n clearIcon: {\n type: String,\n default: '$clear',\n },\n counter: [Boolean, Number, String],\n counterValue: Function as PropType<(value: any) => number>,\n filled: Boolean,\n flat: Boolean,\n fullWidth: Boolean,\n label: String,\n outlined: Boolean,\n placeholder: String,\n prefix: String,\n prependInnerIcon: String,\n persistentPlaceholder: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n shaped: Boolean,\n singleLine: Boolean,\n solo: Boolean,\n soloInverted: Boolean,\n suffix: String,\n type: {\n type: String,\n default: 'text',\n },\n },\n\n data: () => ({\n badInput: false,\n labelWidth: 0,\n prefixWidth: 0,\n prependWidth: 0,\n initialValue: null,\n isBooted: false,\n isClearing: false,\n }),\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-text-field': true,\n 'v-text-field--full-width': this.fullWidth,\n 'v-text-field--prefix': this.prefix,\n 'v-text-field--single-line': this.isSingle,\n 'v-text-field--solo': this.isSolo,\n 'v-text-field--solo-inverted': this.soloInverted,\n 'v-text-field--solo-flat': this.flat,\n 'v-text-field--filled': this.filled,\n 'v-text-field--is-booted': this.isBooted,\n 'v-text-field--enclosed': this.isEnclosed,\n 'v-text-field--reverse': this.reverse,\n 'v-text-field--outlined': this.outlined,\n 'v-text-field--placeholder': this.placeholder,\n 'v-text-field--rounded': this.rounded,\n 'v-text-field--shaped': this.shaped,\n }\n },\n computedColor (): string | undefined {\n const computedColor = Validatable.options.computed.computedColor.call(this)\n\n if (!this.soloInverted || !this.isFocused) return computedColor\n\n return this.color || 'primary'\n },\n computedCounterValue (): number {\n if (typeof this.counterValue === 'function') {\n return this.counterValue(this.internalValue)\n }\n return [...(this.internalValue || '').toString()].length\n },\n hasCounter (): boolean {\n return this.counter !== false && this.counter != null\n },\n hasDetails (): boolean {\n return VInput.options.computed.hasDetails.call(this) || this.hasCounter\n },\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit('input', this.lazyValue)\n },\n },\n isDirty (): boolean {\n return this.lazyValue?.toString().length > 0 || this.badInput\n },\n isEnclosed (): boolean {\n return (\n this.filled ||\n this.isSolo ||\n this.outlined\n )\n },\n isLabelActive (): boolean {\n return this.isDirty || dirtyTypes.includes(this.type)\n },\n isSingle (): boolean {\n return (\n this.isSolo ||\n this.singleLine ||\n this.fullWidth ||\n // https://material.io/components/text-fields/#filled-text-field\n (this.filled && !this.hasLabel)\n )\n },\n isSolo (): boolean {\n return this.solo || this.soloInverted\n },\n labelPosition (): Record<'left' | 'right', string | number | undefined> {\n let offset = (this.prefix && !this.labelValue) ? this.prefixWidth : 0\n\n if (this.labelValue && this.prependWidth) offset -= this.prependWidth\n\n return (this.$vuetify.rtl === this.reverse) ? {\n left: offset,\n right: 'auto',\n } : {\n left: 'auto',\n right: offset,\n }\n },\n showLabel (): boolean {\n return this.hasLabel && !(this.isSingle && this.labelValue)\n },\n labelValue (): boolean {\n return this.isFocused || this.isLabelActive || this.persistentPlaceholder\n },\n },\n\n watch: {\n // labelValue: 'setLabelWidth', // moved to mounted, see #11533\n outlined: 'setLabelWidth',\n label () {\n this.$nextTick(this.setLabelWidth)\n },\n prefix () {\n this.$nextTick(this.setPrefixWidth)\n },\n isFocused: 'updateValue',\n value (val) {\n this.lazyValue = val\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('box')) {\n breaking('box', 'filled', this)\n }\n\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('browser-autocomplete')) {\n breaking('browser-autocomplete', 'autocomplete', this)\n }\n\n /* istanbul ignore if */\n if (this.shaped && !(this.filled || this.outlined || this.isSolo)) {\n consoleWarn('shaped should be used with either filled or outlined', this)\n }\n },\n\n mounted () {\n // #11533\n this.$watch(() => this.labelValue, this.setLabelWidth)\n this.autofocus && this.tryAutofocus()\n requestAnimationFrame(() => {\n this.isBooted = true\n requestAnimationFrame(() => {\n if (!this.isIntersecting) {\n this.onResize()\n }\n })\n })\n },\n\n methods: {\n /** @public */\n focus () {\n this.onFocus()\n },\n /** @public */\n blur (e?: Event) {\n // https://github.com/vuetifyjs/vuetify/issues/5913\n // Safari tab order gets broken if called synchronous\n window.requestAnimationFrame(() => {\n this.$refs.input && this.$refs.input.blur()\n })\n },\n clearableCallback () {\n this.$refs.input && this.$refs.input.focus()\n this.$nextTick(() => this.internalValue = null)\n },\n genAppendSlot () {\n const slot = []\n\n if (this.$slots['append-outer']) {\n slot.push(this.$slots['append-outer'] as VNode[])\n } else if (this.appendOuterIcon) {\n slot.push(this.genIcon('appendOuter'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n genPrependInnerSlot () {\n const slot = []\n\n if (this.$slots['prepend-inner']) {\n slot.push(this.$slots['prepend-inner'] as VNode[])\n } else if (this.prependInnerIcon) {\n slot.push(this.genIcon('prependInner'))\n }\n\n return this.genSlot('prepend', 'inner', slot)\n },\n genIconSlot () {\n const slot = []\n\n if (this.$slots.append) {\n slot.push(this.$slots.append as VNode[])\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'inner', slot)\n },\n genInputSlot () {\n const input = VInput.options.methods.genInputSlot.call(this)\n\n const prepend = this.genPrependInnerSlot()\n\n if (prepend) {\n input.children = input.children || []\n input.children.unshift(prepend)\n }\n\n return input\n },\n genClearIcon () {\n if (!this.clearable) return null\n\n // if the text field has no content then don't display the clear icon.\n // We add an empty div because other controls depend on a ref to append inner\n if (!this.isDirty) {\n return this.genSlot('append', 'inner', [\n this.$createElement('div'),\n ])\n }\n\n return this.genSlot('append', 'inner', [\n this.genIcon('clear', this.clearableCallback),\n ])\n },\n genCounter () {\n if (!this.hasCounter) return null\n\n const max = this.counter === true ? this.attrs$.maxlength : this.counter\n\n const props = {\n dark: this.dark,\n light: this.light,\n max,\n value: this.computedCounterValue,\n }\n\n return this.$scopedSlots.counter?.({ props }) ?? this.$createElement(VCounter, { props })\n },\n genControl () {\n return VInput.options.methods.genControl.call(this)\n },\n genDefaultSlot () {\n return [\n this.genFieldset(),\n this.genTextFieldSlot(),\n this.genClearIcon(),\n this.genIconSlot(),\n this.genProgress(),\n ]\n },\n genFieldset () {\n if (!this.outlined) return null\n\n return this.$createElement('fieldset', {\n attrs: {\n 'aria-hidden': true,\n },\n }, [this.genLegend()])\n },\n genLabel () {\n if (!this.showLabel) return null\n\n const data = {\n props: {\n absolute: true,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: !this.isSingle && (this.isFocused || !!this.validationState),\n for: this.computedId,\n left: this.labelPosition.left,\n light: this.light,\n right: this.labelPosition.right,\n value: this.labelValue,\n },\n }\n\n return this.$createElement(VLabel, data, this.$slots.label || this.label)\n },\n genLegend () {\n const width = !this.singleLine && (this.labelValue || this.isDirty) ? this.labelWidth : 0\n const span = this.$createElement('span', {\n domProps: { innerHTML: '​' },\n staticClass: 'notranslate',\n })\n\n return this.$createElement('legend', {\n style: {\n width: !this.isSingle ? convertToUnit(width) : undefined,\n },\n }, [span])\n },\n genInput () {\n const listeners = Object.assign({}, this.listeners$)\n delete listeners.change // Change should not be bound externally\n const { title, ...inputAttrs } = this.attrs$\n\n return this.$createElement('input', {\n style: {},\n domProps: {\n value: (this.type === 'number' && Object.is(this.lazyValue, -0)) ? '-0' : this.lazyValue,\n },\n attrs: {\n ...inputAttrs,\n autofocus: this.autofocus,\n disabled: this.isDisabled,\n id: this.computedId,\n placeholder: this.persistentPlaceholder || this.isFocused || !this.hasLabel ? this.placeholder : undefined,\n readonly: this.isReadonly,\n type: this.type,\n },\n on: Object.assign(listeners, {\n blur: this.onBlur,\n input: this.onInput,\n focus: this.onFocus,\n keydown: this.onKeyDown,\n }),\n ref: 'input',\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n })\n },\n genMessages () {\n if (!this.showDetails) return null\n\n const messagesNode = VInput.options.methods.genMessages.call(this)\n const counterNode = this.genCounter()\n\n return this.$createElement('div', {\n staticClass: 'v-text-field__details',\n }, [\n messagesNode,\n counterNode,\n ])\n },\n genTextFieldSlot () {\n return this.$createElement('div', {\n staticClass: 'v-text-field__slot',\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n this.genInput(),\n this.suffix ? this.genAffix('suffix') : null,\n ])\n },\n genAffix (type: 'prefix' | 'suffix') {\n return this.$createElement('div', {\n class: `v-text-field__${type}`,\n ref: type,\n }, this[type])\n },\n onBlur (e?: Event) {\n this.isFocused = false\n e && this.$nextTick(() => this.$emit('blur', e))\n },\n onClick () {\n if (this.isFocused || this.isDisabled || !this.$refs.input) return\n\n this.$refs.input.focus()\n },\n onFocus (e?: Event) {\n if (!this.$refs.input) return\n\n const root = attachedRoot(this.$el)\n if (!root) return\n\n if (root.activeElement !== this.$refs.input) {\n return this.$refs.input.focus()\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n e && this.$emit('focus', e)\n }\n },\n onInput (e: Event) {\n const target = e.target as HTMLInputElement\n this.internalValue = target.value\n this.badInput = target.validity && target.validity.badInput\n },\n onKeyDown (e: KeyboardEvent) {\n if (\n e.keyCode === keyCodes.enter &&\n this.lazyValue !== this.initialValue\n ) {\n this.initialValue = this.lazyValue\n this.$emit('change', this.initialValue)\n }\n\n this.$emit('keydown', e)\n },\n onMouseDown (e: Event) {\n // Prevent input from being blurred\n if (e.target !== this.$refs.input) {\n e.preventDefault()\n e.stopPropagation()\n }\n\n VInput.options.methods.onMouseDown.call(this, e)\n },\n onMouseUp (e: Event) {\n if (this.hasMouseDown) this.focus()\n\n VInput.options.methods.onMouseUp.call(this, e)\n },\n setLabelWidth () {\n if (!this.outlined) return\n\n this.labelWidth = this.$refs.label\n ? Math.min(this.$refs.label.scrollWidth * 0.75 + 6, (this.$el as HTMLElement).offsetWidth - 24)\n : 0\n },\n setPrefixWidth () {\n if (!this.$refs.prefix) return\n\n this.prefixWidth = this.$refs.prefix.offsetWidth\n },\n setPrependWidth () {\n if (!this.outlined || !this.$refs['prepend-inner']) return\n\n this.prependWidth = this.$refs['prepend-inner'].offsetWidth\n },\n tryAutofocus () {\n if (\n !this.autofocus ||\n typeof document === 'undefined' ||\n !this.$refs.input) return false\n\n const root = attachedRoot(this.$el)\n if (!root || root.activeElement === this.$refs.input) return false\n\n this.$refs.input.focus()\n\n return true\n },\n updateValue (val: boolean) {\n // Sets validationState from validatable\n this.hasColor = val\n\n if (val) {\n this.initialValue = this.lazyValue\n } else if (this.initialValue !== this.lazyValue) {\n this.$emit('change', this.lazyValue)\n }\n },\n onResize () {\n this.setLabelWidth()\n this.setPrefixWidth()\n this.setPrependWidth()\n },\n },\n})\n","// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default Themeable.extend({\n name: 'v-theme-provider',\n\n props: { root: Boolean },\n\n computed: {\n isDark (): boolean {\n return this.root\n ? this.rootIsDark\n : Themeable.options.computed.isDark.call(this)\n },\n },\n\n render (): VNode {\n /* istanbul ignore next */\n return (\n this.$slots.default! &&\n this.$slots.default!.find(node => !node.isComment && node.text !== ' ')!\n )\n },\n})\n","// Styles\nimport './VToolbar.sass'\n\n// Extensions\nimport VSheet from '../VSheet/VSheet'\n\n// Components\nimport VImg, { srcObject } from '../VImg/VImg'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\n/* @vue/component */\nexport default VSheet.extend({\n name: 'v-toolbar',\n\n props: {\n absolute: Boolean,\n bottom: Boolean,\n collapse: Boolean,\n dense: Boolean,\n extended: Boolean,\n extensionHeight: {\n default: 48,\n type: [Number, String],\n },\n flat: Boolean,\n floating: Boolean,\n prominent: Boolean,\n short: Boolean,\n src: {\n type: [String, Object] as PropType<string | srcObject>,\n default: '',\n },\n tag: {\n type: String,\n default: 'header',\n },\n },\n\n data: () => ({\n isExtended: false,\n }),\n\n computed: {\n computedHeight (): number {\n const height = this.computedContentHeight\n\n if (!this.isExtended) return height\n\n const extensionHeight = parseInt(this.extensionHeight)\n\n return this.isCollapsed\n ? height\n : height + (!isNaN(extensionHeight) ? extensionHeight : 0)\n },\n computedContentHeight (): number {\n if (this.height) return parseInt(this.height)\n if (this.isProminent && this.dense) return 96\n if (this.isProminent && this.short) return 112\n if (this.isProminent) return 128\n if (this.dense) return 48\n if (this.short || this.$vuetify.breakpoint.smAndDown) return 56\n return 64\n },\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-toolbar': true,\n 'v-toolbar--absolute': this.absolute,\n 'v-toolbar--bottom': this.bottom,\n 'v-toolbar--collapse': this.collapse,\n 'v-toolbar--collapsed': this.isCollapsed,\n 'v-toolbar--dense': this.dense,\n 'v-toolbar--extended': this.isExtended,\n 'v-toolbar--flat': this.flat,\n 'v-toolbar--floating': this.floating,\n 'v-toolbar--prominent': this.isProminent,\n }\n },\n isCollapsed (): boolean {\n return this.collapse\n },\n isProminent (): boolean {\n return this.prominent\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n height: convertToUnit(this.computedHeight),\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['app', '<v-app-bar app>'],\n ['manual-scroll', '<v-app-bar :value=\"false\">'],\n ['clipped-left', '<v-app-bar clipped-left>'],\n ['clipped-right', '<v-app-bar clipped-right>'],\n ['inverted-scroll', '<v-app-bar inverted-scroll>'],\n ['scroll-off-screen', '<v-app-bar scroll-off-screen>'],\n ['scroll-target', '<v-app-bar scroll-target>'],\n ['scroll-threshold', '<v-app-bar scroll-threshold>'],\n ['card', '<v-app-bar flat>'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n genBackground () {\n const props = {\n height: convertToUnit(this.computedHeight),\n src: this.src,\n }\n\n const image = this.$scopedSlots.img\n ? this.$scopedSlots.img({ props })\n : this.$createElement(VImg, { props })\n\n return this.$createElement('div', {\n staticClass: 'v-toolbar__image',\n }, [image])\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__content',\n style: {\n height: convertToUnit(this.computedContentHeight),\n },\n }, getSlot(this))\n },\n genExtension () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__extension',\n style: {\n height: convertToUnit(this.extensionHeight),\n },\n }, getSlot(this, 'extension'))\n },\n },\n\n render (h): VNode {\n this.isExtended = this.extended || !!this.$scopedSlots.extension\n\n const children = [this.genContent()]\n const data = this.setBackgroundColor(this.color, {\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n })\n\n if (this.isExtended) children.push(this.genExtension())\n if (this.src || this.$scopedSlots.img) children.unshift(this.genBackground())\n\n return h(this.tag, data, children)\n },\n})\n","// Components\nimport VToolbar from './VToolbar'\n\n// Utilities\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VToolbarTitle = createSimpleFunctional('v-toolbar__title')\nconst VToolbarItems = createSimpleFunctional('v-toolbar__items')\n\nexport {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n },\n}\n","import './VTooltip.sass'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Colorable from '../../mixins/colorable'\nimport Delayable from '../../mixins/delayable'\nimport Dependent from '../../mixins/dependent'\nimport Menuable from '../../mixins/menuable'\n\n// Helpers\nimport { convertToUnit, keyCodes, getSlotType } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Colorable, Delayable, Dependent, Menuable).extend({\n name: 'v-tooltip',\n\n props: {\n closeDelay: {\n type: [Number, String],\n default: 0,\n },\n disabled: Boolean,\n openDelay: {\n type: [Number, String],\n default: 0,\n },\n openOnHover: {\n type: Boolean,\n default: true,\n },\n openOnFocus: {\n type: Boolean,\n default: true,\n },\n tag: {\n type: String,\n default: 'span',\n },\n transition: String,\n },\n\n data: () => ({\n calculatedMinWidth: 0,\n closeDependents: false,\n }),\n\n computed: {\n calculatedLeft (): string {\n const { activator, content } = this.dimensions\n const unknown = !this.bottom && !this.left && !this.top && !this.right\n const activatorLeft = this.attach !== false ? activator.offsetLeft : activator.left\n let left = 0\n\n if (this.top || this.bottom || unknown) {\n left = (\n activatorLeft +\n (activator.width / 2) -\n (content.width / 2)\n )\n } else if (this.left || this.right) {\n left = (\n activatorLeft +\n (this.right ? activator.width : -content.width) +\n (this.right ? 10 : -10)\n )\n }\n\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft)\n if (this.nudgeRight) left += parseInt(this.nudgeRight)\n\n return `${this.calcXOverflow(left, this.dimensions.content.width)}px`\n },\n calculatedTop (): string {\n const { activator, content } = this.dimensions\n const activatorTop = this.attach !== false ? activator.offsetTop : activator.top\n let top = 0\n\n if (this.top || this.bottom) {\n top = (\n activatorTop +\n (this.bottom ? activator.height : -content.height) +\n (this.bottom ? 10 : -10)\n )\n } else if (this.left || this.right) {\n top = (\n activatorTop +\n (activator.height / 2) -\n (content.height / 2)\n )\n }\n\n if (this.nudgeTop) top -= parseInt(this.nudgeTop)\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom)\n if (this.attach === false) top += this.pageYOffset\n\n return `${this.calcYOverflow(top)}px`\n },\n classes (): object {\n return {\n 'v-tooltip--top': this.top,\n 'v-tooltip--right': this.right,\n 'v-tooltip--bottom': this.bottom,\n 'v-tooltip--left': this.left,\n 'v-tooltip--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n }\n },\n computedTransition (): string {\n if (this.transition) return this.transition\n\n return this.isActive ? 'scale-transition' : 'fade-transition'\n },\n offsetY (): boolean {\n return this.top || this.bottom\n },\n offsetX (): boolean {\n return this.left || this.right\n },\n styles (): object {\n return {\n left: this.calculatedLeft,\n maxWidth: convertToUnit(this.maxWidth),\n minWidth: convertToUnit(this.minWidth),\n top: this.calculatedTop,\n zIndex: this.zIndex || this.activeZIndex,\n }\n },\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.value && this.callActivate()\n })\n },\n\n mounted () {\n if (getSlotType(this, 'activator', true) === 'v-slot') {\n consoleError(`v-tooltip's activator slot must be bound, try '<template #activator=\"data\"><v-btn v-on=\"data.on>'`, this)\n }\n },\n\n methods: {\n activate () {\n // Update coordinates and dimensions of menu\n // and its activator\n this.updateDimensions()\n // Start the transition\n requestAnimationFrame(this.startTransition)\n },\n deactivate () {\n this.runDelay('close')\n },\n genActivatorListeners () {\n const listeners = Activatable.options.methods.genActivatorListeners.call(this)\n\n if (this.openOnFocus) {\n listeners.focus = (e: Event) => {\n this.getActivator(e)\n this.runDelay('open')\n }\n listeners.blur = (e: Event) => {\n this.getActivator(e)\n this.runDelay('close')\n }\n }\n\n listeners.keydown = (e: KeyboardEvent) => {\n if (e.keyCode === keyCodes.esc) {\n this.getActivator(e)\n this.runDelay('close')\n }\n }\n\n return listeners\n },\n genActivatorAttributes () {\n return {\n 'aria-haspopup': true,\n 'aria-expanded': String(this.isActive),\n }\n },\n genTransition () {\n const content = this.genContent()\n\n if (!this.computedTransition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.computedTransition,\n },\n }, [content])\n },\n genContent () {\n return this.$createElement(\n 'div',\n this.setBackgroundColor(this.color, {\n staticClass: 'v-tooltip__content',\n class: {\n [this.contentClass]: true,\n menuable__content__active: this.isActive,\n 'v-tooltip__content--fixed': this.activatorFixed,\n },\n style: this.styles,\n attrs: this.getScopeIdAttrs(),\n directives: [{\n name: 'show',\n value: this.isContentActive,\n }],\n ref: 'content',\n }),\n this.getContentSlot()\n )\n },\n },\n\n render (h): VNode {\n return h(this.tag, {\n staticClass: 'v-tooltip',\n class: this.classes,\n }, [\n this.showLazyContent(() => [this.genTransition()]),\n this.genActivator(),\n ])\n },\n})\n","// Styles\nimport './VVirtualScroll.sass'\n\n// Mixins\nimport Measurable from '../../mixins/measurable'\n\n// Directives\nimport Scroll from '../../directives/scroll'\n\n// Utilities\nimport {\n convertToUnit,\n getSlot,\n} from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nexport default Measurable.extend({\n name: 'v-virtual-scroll',\n\n directives: { Scroll },\n\n props: {\n bench: {\n type: [Number, String],\n default: 0,\n },\n itemHeight: {\n type: [Number, String],\n required: true,\n },\n items: {\n type: Array,\n default: () => [],\n } as PropValidator<any[]>,\n },\n\n data: () => ({\n first: 0,\n last: 0,\n scrollTop: 0,\n }),\n\n computed: {\n __bench (): number {\n return parseInt(this.bench, 10)\n },\n __itemHeight (): number {\n return parseInt(this.itemHeight, 10)\n },\n firstToRender (): number {\n return Math.max(0, this.first - this.__bench)\n },\n lastToRender (): number {\n return Math.min(this.items.length, this.last + this.__bench)\n },\n },\n\n watch: {\n height: 'onScroll',\n itemHeight: 'onScroll',\n },\n\n mounted () {\n this.last = this.getLast(0)\n },\n\n methods: {\n getChildren (): VNode[] {\n return this.items.slice(\n this.firstToRender,\n this.lastToRender,\n ).map(this.genChild)\n },\n genChild (item: any, index: number) {\n index += this.firstToRender\n\n const top = convertToUnit(index * this.__itemHeight)\n\n return this.$createElement('div', {\n staticClass: 'v-virtual-scroll__item',\n style: { top },\n key: index,\n }, getSlot(this, 'default', { index, item }))\n },\n getFirst (): number {\n return Math.floor(this.scrollTop / this.__itemHeight)\n },\n getLast (first: number): number {\n const height = parseInt(this.height || 0, 10) || this.$el.clientHeight\n\n return first + Math.ceil(height / this.__itemHeight)\n },\n onScroll () {\n this.scrollTop = this.$el.scrollTop\n this.first = this.getFirst()\n this.last = this.getLast(this.first)\n },\n },\n\n render (h): VNode {\n const content = h('div', {\n staticClass: 'v-virtual-scroll__container',\n style: {\n height: convertToUnit((this.items.length * this.__itemHeight)),\n },\n }, this.getChildren())\n\n return h('div', {\n staticClass: 'v-virtual-scroll',\n style: this.measurableStyles,\n directives: [{\n name: 'scroll',\n modifiers: { self: true },\n value: this.onScroll,\n }],\n on: this.$listeners,\n }, [content])\n },\n})\n","import { FunctionalComponentOptions, VNode, VNodeData } from 'vue'\nimport mergeData from '../../util/mergeData'\n\nfunction mergeTransitions (\n dest: Function | Function[] = [],\n ...transitions: (Function | Function[])[]\n) {\n /* eslint-disable-next-line no-array-constructor */\n return Array<Function>().concat(dest, ...transitions)\n}\n\nexport function createSimpleTransition (\n name: string,\n origin = 'top center 0',\n mode?: string\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n group: {\n type: Boolean,\n default: false,\n },\n hideOnLeave: {\n type: Boolean,\n default: false,\n },\n leaveAbsolute: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: mode,\n },\n origin: {\n type: String,\n default: origin,\n },\n },\n\n render (h, context): VNode {\n const tag = `transition${context.props.group ? '-group' : ''}`\n const data: VNodeData = {\n props: {\n name,\n mode: context.props.mode,\n },\n on: {\n beforeEnter (el: HTMLElement) {\n el.style.transformOrigin = context.props.origin\n el.style.webkitTransformOrigin = context.props.origin\n },\n },\n }\n\n if (context.props.leaveAbsolute) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = el\n el._transitionInitialStyles = {\n position: el.style.position,\n top: el.style.top,\n left: el.style.left,\n width: el.style.width,\n height: el.style.height,\n }\n el.style.position = 'absolute'\n el.style.top = offsetTop + 'px'\n el.style.left = offsetLeft + 'px'\n el.style.width = offsetWidth + 'px'\n el.style.height = offsetHeight + 'px'\n })\n data.on!.afterLeave = mergeTransitions(data.on!.afterLeave, (el?: HTMLElement) => {\n if (el && el._transitionInitialStyles) {\n const { position, top, left, width, height } = el._transitionInitialStyles\n delete el._transitionInitialStyles\n el.style.position = position || ''\n el.style.top = top || ''\n el.style.left = left || ''\n el.style.width = width || ''\n el.style.height = height || ''\n }\n })\n }\n if (context.props.hideOnLeave) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n el.style.setProperty('display', 'none', 'important')\n })\n }\n\n return h(tag, mergeData(context.data, data), context.children)\n },\n }\n}\n\nexport function createJavascriptTransition (\n name: string,\n functions: Record<string, any>,\n mode = 'in-out'\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n mode: {\n type: String,\n default: mode,\n },\n },\n\n render (h, context): VNode {\n return h(\n 'transition',\n mergeData(context.data, {\n props: { name },\n on: functions,\n }),\n context.children\n )\n },\n }\n}\n","import { upperFirst } from '../../util/helpers'\n\ninterface HTMLExpandElement extends HTMLElement {\n _parent?: (Node & ParentNode & HTMLElement) | null\n _initialStyle?: {\n transition: string\n overflow: string\n height?: string | null\n width?: string | null\n }\n}\n\nexport default function (expandedParentClass = '', x = false) {\n const sizeProperty = x ? 'width' : 'height' as 'width' | 'height'\n const offsetProperty = `offset${upperFirst(sizeProperty)}` as 'offsetHeight' | 'offsetWidth'\n\n return {\n beforeEnter (el: HTMLExpandElement) {\n el._parent = el.parentNode as (Node & ParentNode & HTMLElement) | null\n el._initialStyle = {\n transition: el.style.transition,\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n },\n\n enter (el: HTMLExpandElement) {\n const initialStyle = el._initialStyle!\n\n el.style.setProperty('transition', 'none', 'important')\n // Hide overflow to account for collapsed margins in the calculated height\n el.style.overflow = 'hidden'\n const offset = `${el[offsetProperty]}px`\n\n el.style[sizeProperty] = '0'\n\n void el.offsetHeight // force reflow\n\n el.style.transition = initialStyle.transition\n\n if (expandedParentClass && el._parent) {\n el._parent.classList.add(expandedParentClass)\n }\n\n requestAnimationFrame(() => {\n el.style[sizeProperty] = offset\n })\n },\n\n afterEnter: resetStyles,\n enterCancelled: resetStyles,\n\n leave (el: HTMLExpandElement) {\n el._initialStyle = {\n transition: '',\n overflow: el.style.overflow,\n [sizeProperty]: el.style[sizeProperty],\n }\n\n el.style.overflow = 'hidden'\n el.style[sizeProperty] = `${el[offsetProperty]}px`\n void el.offsetHeight // force reflow\n\n requestAnimationFrame(() => (el.style[sizeProperty] = '0'))\n },\n\n afterLeave,\n leaveCancelled: afterLeave,\n }\n\n function afterLeave (el: HTMLExpandElement) {\n if (expandedParentClass && el._parent) {\n el._parent.classList.remove(expandedParentClass)\n }\n resetStyles(el)\n }\n\n function resetStyles (el: HTMLExpandElement) {\n const size = el._initialStyle![sizeProperty]\n el.style.overflow = el._initialStyle!.overflow\n if (size != null) el.style[sizeProperty] = size\n delete el._initialStyle\n }\n}\n","import {\n createSimpleTransition,\n createJavascriptTransition,\n} from './createTransition'\n\nimport ExpandTransitionGenerator from './expand-transition'\n\n// Component specific transitions\nexport const VCarouselTransition = createSimpleTransition('carousel-transition')\nexport const VCarouselReverseTransition = createSimpleTransition('carousel-reverse-transition')\nexport const VTabTransition = createSimpleTransition('tab-transition')\nexport const VTabReverseTransition = createSimpleTransition('tab-reverse-transition')\nexport const VMenuTransition = createSimpleTransition('menu-transition')\nexport const VFabTransition = createSimpleTransition('fab-transition', 'center center', 'out-in')\n\n// Generic transitions\nexport const VDialogTransition = createSimpleTransition('dialog-transition')\nexport const VDialogBottomTransition = createSimpleTransition('dialog-bottom-transition')\nexport const VDialogTopTransition = createSimpleTransition('dialog-top-transition')\nexport const VFadeTransition = createSimpleTransition('fade-transition')\nexport const VScaleTransition = createSimpleTransition('scale-transition')\nexport const VScrollXTransition = createSimpleTransition('scroll-x-transition')\nexport const VScrollXReverseTransition = createSimpleTransition('scroll-x-reverse-transition')\nexport const VScrollYTransition = createSimpleTransition('scroll-y-transition')\nexport const VScrollYReverseTransition = createSimpleTransition('scroll-y-reverse-transition')\nexport const VSlideXTransition = createSimpleTransition('slide-x-transition')\nexport const VSlideXReverseTransition = createSimpleTransition('slide-x-reverse-transition')\nexport const VSlideYTransition = createSimpleTransition('slide-y-transition')\nexport const VSlideYReverseTransition = createSimpleTransition('slide-y-reverse-transition')\n\n// Javascript transitions\nexport const VExpandTransition = createJavascriptTransition('expand-transition', ExpandTransitionGenerator())\nexport const VExpandXTransition = createJavascriptTransition('expand-x-transition', ExpandTransitionGenerator('', true))\n\nexport default {\n $_vuetify_subcomponents: {\n VCarouselTransition,\n VCarouselReverseTransition,\n VDialogTransition,\n VDialogBottomTransition,\n VDialogTopTransition,\n VFabTransition,\n VFadeTransition,\n VMenuTransition,\n VScaleTransition,\n VScrollXTransition,\n VScrollXReverseTransition,\n VScrollYTransition,\n VScrollYReverseTransition,\n VSlideXTransition,\n VSlideXReverseTransition,\n VSlideYTransition,\n VSlideYReverseTransition,\n VTabReverseTransition,\n VTabTransition,\n VExpandTransition,\n VExpandXTransition,\n },\n}\n","import { attachedRoot } from '../../util/dom'\nimport { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ninterface ClickOutsideBindingArgs {\n handler: (e: Event) => void\n closeConditional?: (e: Event) => boolean\n include?: () => HTMLElement[]\n}\n\ninterface ClickOutsideDirective extends VNodeDirective {\n value?: ((e: Event) => void) | ClickOutsideBindingArgs\n}\n\nfunction defaultConditional () {\n return true\n}\n\nfunction checkEvent (e: PointerEvent, el: HTMLElement, binding: ClickOutsideDirective): boolean {\n // The include element callbacks below can be expensive\n // so we should avoid calling them when we're not active.\n // Explicitly check for false to allow fallback compatibility\n // with non-toggleable components\n if (!e || checkIsActive(e, binding) === false) return false\n\n // If we're clicking inside the shadowroot, then the app root doesn't get the same\n // level of introspection as to _what_ we're clicking. We want to check to see if\n // our target is the shadowroot parent container, and if it is, ignore.\n const root = attachedRoot(el)\n if (\n typeof ShadowRoot !== 'undefined' &&\n root instanceof ShadowRoot &&\n root.host === e.target\n ) return false\n\n // Check if additional elements were passed to be included in check\n // (click must be outside all included elements, if any)\n const elements = ((typeof binding.value === 'object' && binding.value.include) || (() => []))()\n // Add the root element for the component this directive was defined on\n elements.push(el)\n\n // Check if it's a click outside our elements, and then if our callback returns true.\n // Non-toggleable components should take action in their callback and return falsy.\n // Toggleable can return true if it wants to deactivate.\n // Note that, because we're in the capture phase, this callback will occur before\n // the bubbling click event on any outside elements.\n return !elements.some(el => el.contains(e.target as Node))\n}\n\nfunction checkIsActive (e: PointerEvent, binding: ClickOutsideDirective): boolean | void {\n const isActive = (typeof binding.value === 'object' && binding.value.closeConditional) || defaultConditional\n\n return isActive(e)\n}\n\nfunction directive (e: PointerEvent, el: HTMLElement, binding: ClickOutsideDirective, vnode: VNode) {\n const handler = typeof binding.value === 'function' ? binding.value : binding.value!.handler\n\n el._clickOutside!.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {\n checkIsActive(e, binding) && handler && handler(e)\n }, 0)\n}\n\nfunction handleShadow (el: HTMLElement, callback: Function): void {\n const root = attachedRoot(el)\n\n callback(document)\n\n if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n callback(root)\n }\n}\n\nexport const ClickOutside = {\n // [data-app] may not be found\n // if using bind, inserted makes\n // sure that the root element is\n // available, iOS does not support\n // clicks on body\n inserted (el: HTMLElement, binding: ClickOutsideDirective, vnode: VNode) {\n const onClick = (e: Event) => directive(e as PointerEvent, el, binding, vnode)\n const onMousedown = (e: Event) => {\n el._clickOutside!.lastMousedownWasOutside = checkEvent(e as PointerEvent, el, binding)\n }\n\n handleShadow(el, (app: HTMLElement) => {\n app.addEventListener('click', onClick, true)\n app.addEventListener('mousedown', onMousedown, true)\n })\n\n if (!el._clickOutside) {\n el._clickOutside = {\n lastMousedownWasOutside: true,\n }\n }\n\n el._clickOutside[vnode.context!._uid] = {\n onClick,\n onMousedown,\n }\n },\n\n unbind (el: HTMLElement, binding: ClickOutsideDirective, vnode: VNode) {\n if (!el._clickOutside) return\n\n handleShadow(el, (app: HTMLElement) => {\n if (!app || !el._clickOutside?.[vnode.context!._uid]) return\n\n const { onClick, onMousedown } = el._clickOutside[vnode.context!._uid]!\n\n app.removeEventListener('click', onClick, true)\n app.removeEventListener('mousedown', onMousedown, true)\n })\n\n delete el._clickOutside[vnode.context!._uid]\n },\n}\n\nexport default ClickOutside\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ntype ObserveHandler = (\n entries: IntersectionObserverEntry[],\n observer: IntersectionObserver,\n isIntersecting: boolean,\n) => void\n\ninterface ObserveVNodeDirective extends Omit<VNodeDirective, 'modifiers'> {\n value?: ObserveHandler | { handler: ObserveHandler, options?: IntersectionObserverInit }\n modifiers?: {\n once?: boolean\n quiet?: boolean\n }\n}\n\nfunction inserted (el: HTMLElement, binding: ObserveVNodeDirective, vnode: VNode) {\n if (typeof window === 'undefined' || !('IntersectionObserver' in window)) return\n\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const { handler, options } = typeof value === 'object'\n ? value\n : { handler: value, options: {} }\n const observer = new IntersectionObserver((\n entries: IntersectionObserverEntry[] = [],\n observer: IntersectionObserver\n ) => {\n const _observe = el._observe?.[vnode.context!._uid]\n if (!_observe) return // Just in case, should never fire\n\n const isIntersecting = entries.some(entry => entry.isIntersecting)\n\n // If is not quiet or has already been\n // initted, invoke the user callback\n if (\n handler && (\n !modifiers.quiet ||\n _observe.init\n ) && (\n !modifiers.once ||\n isIntersecting ||\n _observe.init\n )\n ) {\n handler(entries, observer, isIntersecting)\n }\n\n if (isIntersecting && modifiers.once) unbind(el, binding, vnode)\n else _observe.init = true\n }, options)\n\n el._observe = Object(el._observe)\n el._observe![vnode.context!._uid] = { init: false, observer }\n\n observer.observe(el)\n}\n\nfunction unbind (el: HTMLElement, binding: ObserveVNodeDirective, vnode: VNode) {\n const observe = el._observe?.[vnode.context!._uid]\n if (!observe) return\n\n observe.observer.unobserve(el)\n delete el._observe![vnode.context!._uid]\n}\n\nexport const Intersect = {\n inserted,\n unbind,\n}\n\nexport default Intersect\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ninterface ResizeVNodeDirective extends VNodeDirective {\n value?: () => void\n options?: boolean | AddEventListenerOptions\n}\n\nfunction inserted (el: HTMLElement, binding: ResizeVNodeDirective, vnode: VNode) {\n const callback = binding.value!\n const options = binding.options || { passive: true }\n\n window.addEventListener('resize', callback, options)\n\n el._onResize = Object(el._onResize)\n el._onResize![vnode.context!._uid] = {\n callback,\n options,\n }\n\n if (!binding.modifiers || !binding.modifiers.quiet) {\n callback()\n }\n}\n\nfunction unbind (el: HTMLElement, binding: ResizeVNodeDirective, vnode: VNode) {\n if (!el._onResize?.[vnode.context!._uid]) return\n\n const { callback, options } = el._onResize[vnode.context!._uid]!\n\n window.removeEventListener('resize', callback, options)\n\n delete el._onResize[vnode.context!._uid]\n}\n\nexport const Resize = {\n inserted,\n unbind,\n}\n\nexport default Resize\n","// Styles\nimport './VRipple.sass'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue'\n\ntype VuetifyRippleEvent = (MouseEvent | TouchEvent | KeyboardEvent) & { rippleStop?: boolean }\n\nconst DELAY_RIPPLE = 80\n\nfunction transform (el: HTMLElement, value: string) {\n el.style.transform = value\n el.style.webkitTransform = value\n}\n\nexport interface RippleOptions {\n class?: string\n center?: boolean\n circle?: boolean\n}\n\nfunction isTouchEvent (e: VuetifyRippleEvent): e is TouchEvent {\n return e.constructor.name === 'TouchEvent'\n}\n\nfunction isKeyboardEvent (e: VuetifyRippleEvent): e is KeyboardEvent {\n return e.constructor.name === 'KeyboardEvent'\n}\n\nconst calculate = (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n) => {\n let localX = 0\n let localY = 0\n\n if (!isKeyboardEvent(e)) {\n const offset = el.getBoundingClientRect()\n const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e\n\n localX = target.clientX - offset.left\n localY = target.clientY - offset.top\n }\n\n let radius = 0\n let scale = 0.3\n if (el._ripple && el._ripple.circle) {\n scale = 0.15\n radius = el.clientWidth / 2\n radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4\n } else {\n radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2\n }\n\n const centerX = `${(el.clientWidth - (radius * 2)) / 2}px`\n const centerY = `${(el.clientHeight - (radius * 2)) / 2}px`\n\n const x = value.center ? centerX : `${localX - radius}px`\n const y = value.center ? centerY : `${localY - radius}px`\n\n return { radius, scale, x, y, centerX, centerY }\n}\n\nconst ripples = {\n /* eslint-disable max-statements */\n show (\n e: VuetifyRippleEvent,\n el: HTMLElement,\n value: RippleOptions = {}\n ) {\n if (!el._ripple || !el._ripple.enabled) {\n return\n }\n\n const container = document.createElement('span')\n const animation = document.createElement('span')\n\n container.appendChild(animation)\n container.className = 'v-ripple__container'\n\n if (value.class) {\n container.className += ` ${value.class}`\n }\n\n const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value)\n\n const size = `${radius * 2}px`\n animation.className = 'v-ripple__animation'\n animation.style.width = size\n animation.style.height = size\n\n el.appendChild(container)\n\n const computed = window.getComputedStyle(el)\n if (computed && computed.position === 'static') {\n el.style.position = 'relative'\n el.dataset.previousPosition = 'static'\n }\n\n animation.classList.add('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--visible')\n transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`)\n animation.dataset.activated = String(performance.now())\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--enter')\n animation.classList.add('v-ripple__animation--in')\n transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`)\n }, 0)\n },\n\n hide (el: HTMLElement | null) {\n if (!el || !el._ripple || !el._ripple.enabled) return\n\n const ripples = el.getElementsByClassName('v-ripple__animation')\n\n if (ripples.length === 0) return\n const animation = ripples[ripples.length - 1]\n\n if (animation.dataset.isHiding) return\n else animation.dataset.isHiding = 'true'\n\n const diff = performance.now() - Number(animation.dataset.activated)\n const delay = Math.max(250 - diff, 0)\n\n setTimeout(() => {\n animation.classList.remove('v-ripple__animation--in')\n animation.classList.add('v-ripple__animation--out')\n\n setTimeout(() => {\n const ripples = el.getElementsByClassName('v-ripple__animation')\n if (ripples.length === 1 && el.dataset.previousPosition) {\n el.style.position = el.dataset.previousPosition\n delete el.dataset.previousPosition\n }\n\n animation.parentNode && el.removeChild(animation.parentNode)\n }, 300)\n }, delay)\n },\n}\n\nfunction isRippleEnabled (value: any): value is true {\n return typeof value === 'undefined' || !!value\n}\n\nfunction rippleShow (e: VuetifyRippleEvent) {\n const value: RippleOptions = {}\n const element = e.currentTarget as HTMLElement\n\n if (!element || !element._ripple || element._ripple.touched || e.rippleStop) return\n\n // Don't allow the event to trigger ripples on any other elements\n e.rippleStop = true\n\n if (isTouchEvent(e)) {\n element._ripple.touched = true\n element._ripple.isTouch = true\n } else {\n // It's possible for touch events to fire\n // as mouse events on Android/iOS, this\n // will skip the event call if it has\n // already been registered as touch\n if (element._ripple.isTouch) return\n }\n value.center = element._ripple.centered || isKeyboardEvent(e)\n if (element._ripple.class) {\n value.class = element._ripple.class\n }\n\n if (isTouchEvent(e)) {\n // already queued that shows or hides the ripple\n if (element._ripple.showTimerCommit) return\n\n element._ripple.showTimerCommit = () => {\n ripples.show(e, element, value)\n }\n element._ripple.showTimer = window.setTimeout(() => {\n if (element && element._ripple && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n }\n }, DELAY_RIPPLE)\n } else {\n ripples.show(e, element, value)\n }\n}\n\nfunction rippleHide (e: Event) {\n const element = e.currentTarget as HTMLElement | null\n if (!element || !element._ripple) return\n\n window.clearTimeout(element._ripple.showTimer)\n\n // The touch interaction occurs before the show timer is triggered.\n // We still want to show ripple effect.\n if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit()\n element._ripple.showTimerCommit = null\n\n // re-queue ripple hiding\n element._ripple.showTimer = setTimeout(() => {\n rippleHide(e)\n })\n return\n }\n\n window.setTimeout(() => {\n if (element._ripple) {\n element._ripple.touched = false\n }\n })\n ripples.hide(element)\n}\n\nfunction rippleCancelShow (e: MouseEvent | TouchEvent) {\n const element = e.currentTarget as HTMLElement | undefined\n\n if (!element || !element._ripple) return\n\n if (element._ripple.showTimerCommit) {\n element._ripple.showTimerCommit = null\n }\n\n window.clearTimeout(element._ripple.showTimer)\n}\n\nlet keyboardRipple = false\n\nfunction keyboardRippleShow (e: KeyboardEvent) {\n if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n keyboardRipple = true\n rippleShow(e)\n }\n}\n\nfunction keyboardRippleHide (e: KeyboardEvent) {\n keyboardRipple = false\n rippleHide(e)\n}\n\nfunction focusRippleHide (e: FocusEvent) {\n if (keyboardRipple === true) {\n keyboardRipple = false\n rippleHide(e)\n }\n}\n\nfunction updateRipple (el: HTMLElement, binding: VNodeDirective, wasEnabled: boolean) {\n const enabled = isRippleEnabled(binding.value)\n if (!enabled) {\n ripples.hide(el)\n }\n el._ripple = el._ripple || {}\n el._ripple.enabled = enabled\n const value = binding.value || {}\n if (value.center) {\n el._ripple.centered = true\n }\n if (value.class) {\n el._ripple.class = binding.value.class\n }\n if (value.circle) {\n el._ripple.circle = value.circle\n }\n if (enabled && !wasEnabled) {\n el.addEventListener('touchstart', rippleShow, { passive: true })\n el.addEventListener('touchend', rippleHide, { passive: true })\n el.addEventListener('touchmove', rippleCancelShow, { passive: true })\n el.addEventListener('touchcancel', rippleHide)\n\n el.addEventListener('mousedown', rippleShow)\n el.addEventListener('mouseup', rippleHide)\n el.addEventListener('mouseleave', rippleHide)\n\n el.addEventListener('keydown', keyboardRippleShow)\n el.addEventListener('keyup', keyboardRippleHide)\n\n el.addEventListener('blur', focusRippleHide)\n\n // Anchor tags can be dragged, causes other hides to fail - #1537\n el.addEventListener('dragstart', rippleHide, { passive: true })\n } else if (!enabled && wasEnabled) {\n removeListeners(el)\n }\n}\n\nfunction removeListeners (el: HTMLElement) {\n el.removeEventListener('mousedown', rippleShow)\n el.removeEventListener('touchstart', rippleShow)\n el.removeEventListener('touchend', rippleHide)\n el.removeEventListener('touchmove', rippleCancelShow)\n el.removeEventListener('touchcancel', rippleHide)\n el.removeEventListener('mouseup', rippleHide)\n el.removeEventListener('mouseleave', rippleHide)\n el.removeEventListener('keydown', keyboardRippleShow)\n el.removeEventListener('keyup', keyboardRippleHide)\n el.removeEventListener('dragstart', rippleHide)\n el.removeEventListener('blur', focusRippleHide)\n}\n\nfunction directive (el: HTMLElement, binding: VNodeDirective, node: VNode) {\n updateRipple(el, binding, false)\n\n if (process.env.NODE_ENV === 'development') {\n // warn if an inline element is used, waiting for el to be in the DOM first\n node.context && node.context.$nextTick(() => {\n const computed = window.getComputedStyle(el)\n if (computed && computed.display === 'inline') {\n const context = (node as any).fnOptions ? [(node as any).fnOptions, node.context] : [node.componentInstance]\n consoleWarn('v-ripple can only be used on block-level elements', ...context)\n }\n })\n }\n}\n\nfunction unbind (el: HTMLElement) {\n delete el._ripple\n removeListeners(el)\n}\n\nfunction update (el: HTMLElement, binding: VNodeDirective) {\n if (binding.value === binding.oldValue) {\n return\n }\n\n const wasEnabled = isRippleEnabled(binding.oldValue)\n updateRipple(el, binding, wasEnabled)\n}\n\nexport const Ripple = {\n bind: directive,\n unbind,\n update,\n}\n\nexport default Ripple\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { DirectiveOptions, VNode } from 'vue'\n\ninterface ScrollVNodeDirective extends Omit<VNodeDirective, 'modifiers'> {\n value: EventListener | {\n handler: EventListener\n options?: boolean | AddEventListenerOptions\n } | EventListenerObject & { options?: boolean | AddEventListenerOptions }\n modifiers?: {\n self?: boolean\n }\n}\n\nfunction inserted (el: HTMLElement, binding: ScrollVNodeDirective, vnode: VNode) {\n const { self = false } = binding.modifiers || {}\n const value = binding.value\n const options = (typeof value === 'object' && value.options) || { passive: true }\n const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler\n\n const target = self\n ? el\n : binding.arg\n ? document.querySelector(binding.arg)\n : window\n\n if (!target) return\n\n target.addEventListener('scroll', handler, options)\n\n el._onScroll = Object(el._onScroll)\n el._onScroll![vnode.context!._uid] = {\n handler,\n options,\n // Don't reference self\n target: self ? undefined : target,\n }\n}\n\nfunction unbind (el: HTMLElement, binding: ScrollVNodeDirective, vnode: VNode) {\n if (!el._onScroll?.[vnode.context!._uid]) return\n\n const { handler, options, target = el } = el._onScroll[vnode.context!._uid]!\n\n target.removeEventListener('scroll', handler, options)\n delete el._onScroll[vnode.context!._uid]\n}\n\nexport const Scroll = {\n inserted,\n unbind,\n} as DirectiveOptions\n\nexport default Scroll\n","import OurVue, { VueConstructor } from 'vue'\nimport { VuetifyUseOptions } from 'vuetify/types'\nimport { consoleError } from './util/console'\n\nexport function install (Vue: VueConstructor, args: VuetifyUseOptions = {}) {\n if ((install as any).installed) return\n (install as any).installed = true\n\n if (OurVue !== Vue) {\n consoleError(`Multiple instances of Vue detected\nSee https://github.com/vuetifyjs/vuetify/issues/4068\n\nIf you're seeing \"$attrs is readonly\", it's caused by this`)\n }\n\n const components = args.components || {}\n const directives = args.directives || {}\n\n for (const name in directives) {\n const directive = directives[name]\n\n Vue.directive(name, directive)\n }\n\n (function registerComponents (components: any) {\n if (components) {\n for (const key in components) {\n const component = components[key]\n if (component && !registerComponents(component.$_vuetify_subcomponents)) {\n Vue.component(key, component as typeof Vue)\n }\n }\n return true\n }\n return false\n })(components)\n\n // Used to avoid multiple mixins being setup\n // when in dev mode and hot module reload\n // https://github.com/vuejs/vue/issues/5089#issuecomment-284260111\n if (Vue.$_vuetify_installed) return\n Vue.$_vuetify_installed = true\n\n Vue.mixin({\n beforeCreate () {\n const options = this.$options as any\n\n if (options.vuetify) {\n options.vuetify.init(this, this.$ssrContext)\n this.$vuetify = Vue.observable(options.vuetify.framework)\n } else {\n this.$vuetify = (options.parent && options.parent.$vuetify) || this\n }\n },\n beforeMount () {\n // @ts-ignore\n if (this.$options.vuetify && this.$el && this.$el.hasAttribute('data-server-rendered')) {\n // @ts-ignore\n this.$vuetify.isHydrating = true\n // @ts-ignore\n this.$vuetify.breakpoint.update(true)\n }\n },\n mounted () {\n // @ts-ignore\n if (this.$options.vuetify && this.$vuetify.isHydrating) {\n // @ts-ignore\n this.$vuetify.isHydrating = false\n // @ts-ignore\n this.$vuetify.breakpoint.update()\n }\n },\n })\n}\n","export default {\n badge: 'Badge',\n close: 'Close',\n dataIterator: {\n noResultsText: 'No matching records found',\n loadingText: 'Loading items...',\n },\n dataTable: {\n itemsPerPageText: 'Rows per page:',\n ariaLabel: {\n sortDescending: 'Sorted descending.',\n sortAscending: 'Sorted ascending.',\n sortNone: 'Not sorted.',\n activateNone: 'Activate to remove sorting.',\n activateDescending: 'Activate to sort descending.',\n activateAscending: 'Activate to sort ascending.',\n },\n sortBy: 'Sort by',\n },\n dataFooter: {\n itemsPerPageText: 'Items per page:',\n itemsPerPageAll: 'All',\n nextPage: 'Next page',\n prevPage: 'Previous page',\n firstPage: 'First page',\n lastPage: 'Last page',\n pageText: '{0}-{1} of {2}',\n },\n datePicker: {\n itemsSelected: '{0} selected',\n nextMonthAriaLabel: 'Next month',\n nextYearAriaLabel: 'Next year',\n prevMonthAriaLabel: 'Previous month',\n prevYearAriaLabel: 'Previous year',\n },\n noDataText: 'No data available',\n carousel: {\n prev: 'Previous visual',\n next: 'Next visual',\n ariaLabel: {\n delimiter: 'Carousel slide {0} of {1}',\n },\n },\n calendar: {\n moreEvents: '{0} more',\n },\n fileInput: {\n counter: '{0} files',\n counterSize: '{0} files ({1} in total)',\n },\n timePicker: {\n am: 'AM',\n pm: 'PM',\n },\n pagination: {\n ariaLabel: {\n wrapper: 'Pagination Navigation',\n next: 'Next page',\n previous: 'Previous page',\n page: 'Goto Page {0}',\n currentPage: 'Current Page, Page {0}',\n },\n },\n rating: {\n ariaLabel: {\n icon: 'Rating {0} of {1}',\n },\n },\n}\n","// Styles\nimport '../../styles/main.sass'\n\n// Locale\nimport { en } from '../../locale'\n\n// Icons\n// TODO: Enable for v3\n// import mdi from '../../services/icons/presets/mdi'\n\n// Types\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\n\nexport const preset: VuetifyPreset = {\n breakpoint: {\n // TODO: update to MD2 spec in v3 - 1280\n mobileBreakpoint: 1264,\n scrollBarWidth: 16,\n thresholds: {\n xs: 600,\n sm: 960,\n md: 1280,\n lg: 1920,\n },\n },\n icons: {\n // TODO: remove v3\n iconfont: 'mdi',\n values: {},\n },\n lang: {\n current: 'en',\n locales: { en },\n // Default translator exists in lang service\n t: undefined as any,\n },\n rtl: false,\n theme: {\n dark: false,\n default: 'light',\n disable: false,\n options: {\n cspNonce: undefined,\n customProperties: undefined,\n minifyTheme: undefined,\n themeCache: undefined,\n variations: true,\n },\n themes: {\n light: {\n primary: '#1976D2',\n secondary: '#424242',\n accent: '#82B1FF',\n error: '#FF5252',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n dark: {\n primary: '#2196F3',\n secondary: '#424242',\n accent: '#FF4081',\n error: '#FF5252',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n },\n },\n}\n","// Preset\nimport { preset as Preset } from '../../presets/default'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\nimport { mergeDeep } from '../../util/helpers'\n\n// Types\nimport Vuetify from 'vuetify/types'\nimport { Service } from '../service'\nimport {\n UserVuetifyPreset,\n VuetifyPreset,\n} from 'vuetify/types/services/presets'\n\nexport class Presets extends Service {\n static property: 'presets' = 'presets'\n\n constructor (\n parentPreset: Partial<UserVuetifyPreset>,\n parent: Vuetify,\n ) {\n super()\n\n // The default preset\n const defaultPreset = mergeDeep({}, Preset)\n // The user provided preset\n const { userPreset } = parent\n // The user provided global preset\n const {\n preset: globalPreset = {},\n ...preset\n } = userPreset\n\n if (globalPreset.preset != null) {\n consoleWarn('Global presets do not support the **preset** option, it can be safely omitted')\n }\n\n parent.preset = mergeDeep(\n mergeDeep(defaultPreset, globalPreset),\n preset\n ) as VuetifyPreset\n }\n}\n","// Extensions\nimport { Service } from '../service'\n\n// Types\nimport { TargetPropValues, TargetProp, Application as IApplication } from 'vuetify/types/services/application'\n\nexport class Application extends Service implements IApplication {\n static property: 'application' = 'application'\n\n bar = 0\n\n top = 0\n\n left = 0\n\n insetFooter = 0\n\n right = 0\n\n bottom = 0\n\n footer = 0\n\n application: Dictionary<TargetPropValues> = {\n bar: {},\n top: {},\n left: {},\n insetFooter: {},\n right: {},\n bottom: {},\n footer: {},\n }\n\n register (\n uid: number,\n location: TargetProp,\n size: number\n ) {\n this.application[location][uid] = size\n\n this.update(location)\n }\n\n unregister (uid: number, location: TargetProp) {\n if (this.application[location][uid] == null) return\n\n delete this.application[location][uid]\n this.update(location)\n }\n\n update (location: TargetProp) {\n this[location] = Object.values(this.application[location])\n .reduce((acc: number, cur: number): number => (acc + cur), 0)\n }\n}\n","// Extensions\nimport { Service } from '../service'\n\n// Types\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport { Breakpoint as IBreakpoint } from 'vuetify/types/services/breakpoint'\n\nexport class Breakpoint extends Service implements IBreakpoint {\n public static property: 'breakpoint' = 'breakpoint'\n\n // Public\n public xs = false\n\n public sm = false\n\n public md = false\n\n public lg = false\n\n public xl = false\n\n public xsOnly = false\n\n public smOnly = false\n\n public smAndDown = false\n\n public smAndUp = false\n\n public mdOnly = false\n\n public mdAndDown = false\n\n public mdAndUp = false\n\n public lgOnly = false\n\n public lgAndDown = false\n\n public lgAndUp = false\n\n public xlOnly = false\n\n // Value is xs to match v2.x functionality\n public name: IBreakpoint['name'] = 'xs'\n\n public height = 0\n\n public width = 0\n\n // TODO: Add functionality to detect this dynamically in v3\n // Value is true to match v2.x functionality\n public mobile = true\n\n public mobileBreakpoint: IBreakpoint['mobileBreakpoint']\n\n public thresholds: IBreakpoint['thresholds']\n\n public scrollBarWidth: IBreakpoint['scrollBarWidth']\n\n private resizeTimeout = 0\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n mobileBreakpoint,\n scrollBarWidth,\n thresholds,\n } = preset[Breakpoint.property]\n\n this.mobileBreakpoint = mobileBreakpoint\n this.scrollBarWidth = scrollBarWidth\n this.thresholds = thresholds\n }\n\n public init () {\n this.update()\n\n /* istanbul ignore if */\n if (typeof window === 'undefined') return\n\n window.addEventListener(\n 'resize',\n this.onResize.bind(this),\n { passive: true }\n )\n }\n\n /* eslint-disable-next-line max-statements */\n public update (ssr = false) {\n const height = ssr ? 0 : this.getClientHeight()\n const width = ssr ? 0 : this.getClientWidth()\n\n const xs = width < this.thresholds.xs\n const sm = width < this.thresholds.sm && !xs\n const md = width < (this.thresholds.md - this.scrollBarWidth) && !(sm || xs)\n const lg = width < (this.thresholds.lg - this.scrollBarWidth) && !(md || sm || xs)\n const xl = width >= (this.thresholds.lg - this.scrollBarWidth)\n\n this.height = height\n this.width = width\n\n this.xs = xs\n this.sm = sm\n this.md = md\n this.lg = lg\n this.xl = xl\n\n this.xsOnly = xs\n this.smOnly = sm\n this.smAndDown = (xs || sm) && !(md || lg || xl)\n this.smAndUp = !xs && (sm || md || lg || xl)\n this.mdOnly = md\n this.mdAndDown = (xs || sm || md) && !(lg || xl)\n this.mdAndUp = !(xs || sm) && (md || lg || xl)\n this.lgOnly = lg\n this.lgAndDown = (xs || sm || md || lg) && !xl\n this.lgAndUp = !(xs || sm || md) && (lg || xl)\n this.xlOnly = xl\n\n switch (true) {\n case (xs):\n this.name = 'xs'\n break\n case (sm):\n this.name = 'sm'\n break\n case (md):\n this.name = 'md'\n break\n case (lg):\n this.name = 'lg'\n break\n default:\n this.name = 'xl'\n break\n }\n\n if (typeof this.mobileBreakpoint === 'number') {\n this.mobile = width < parseInt(this.mobileBreakpoint, 10)\n\n return\n }\n\n const breakpoints = {\n xs: 0,\n sm: 1,\n md: 2,\n lg: 3,\n xl: 4,\n } as const\n\n const current = breakpoints[this.name]\n const max = breakpoints[this.mobileBreakpoint]\n\n this.mobile = current <= max\n }\n\n private onResize () {\n clearTimeout(this.resizeTimeout)\n\n // Added debounce to match what\n // v-resize used to do but was\n // removed due to a memory leak\n // https://github.com/vuetifyjs/vuetify/pull/2997\n this.resizeTimeout = window.setTimeout(this.update.bind(this), 200)\n }\n\n // Cross-browser support as described in:\n // https://stackoverflow.com/questions/1248081\n private getClientWidth () {\n /* istanbul ignore if */\n if (typeof document === 'undefined') return 0 // SSR\n return Math.max(\n document.documentElement!.clientWidth,\n window.innerWidth || 0\n )\n }\n\n private getClientHeight () {\n /* istanbul ignore if */\n if (typeof document === 'undefined') return 0 // SSR\n return Math.max(\n document.documentElement!.clientHeight,\n window.innerHeight || 0\n )\n }\n}\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z',\n cancel: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z',\n close: 'M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z',\n delete: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z', // delete (e.g. v-chip close)\n clear: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z',\n success: 'M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z',\n info: 'M13,9H11V7H13M13,17H11V11H13M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2ZM13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z',\n warning: 'M13,13H11V7H13M13,17H11V15H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z',\n error: 'M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z',\n prev: 'M15.41,16.58L10.83,12L15.41,7.41L14,6L8,12L14,18L15.41,16.58Z',\n next: 'M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z',\n checkboxOn: 'M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3Z',\n checkboxOff: 'M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z',\n checkboxIndeterminate: 'M17,13H7V11H17M19,3H5C3.89,3 3,3.89 3,5V19C3,20.1 3.9,21 5,21H19C20.1,21 21,20.1 21,19V5C21,3.89 20.1,3 19,3Z',\n delimiter: 'M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z', // for carousel\n sort: 'M13,20H11V8L5.5,13.5L4.08,12.08L12,4.16L19.92,12.08L18.5,13.5L13,8V20Z',\n expand: 'M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z',\n menu: 'M3,6H21V8H3V6M3,11H21V13H3V11M3,16H21V18H3V16Z',\n subgroup: 'M7,10L12,15L17,10H7Z',\n dropdown: 'M7,10L12,15L17,10H7Z',\n radioOn: 'M12,20C7.58,20 4,16.42 4,12C4,7.58 7.58,4 12,4C16.42,4 20,7.58 20,12C20,16.42 16.42,20 12,20M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2M12,7C9.24,7 7,9.24 7,12C7,14.76 9.24,17 12,17C14.76,17 17,14.76 17,12C17,9.24 14.76,7 12,7Z',\n radioOff: 'M12,20C7.58,20 4,16.42 4,12C4,7.58 7.58,4 12,4C16.42,4 20,7.58 20,12C20,16.42 16.42,20 12,20M12,2C6.48,2 2,6.48 2,12C2,17.52 6.48,22 12,22C17.52,22 22,17.52 22,12C22,6.48 17.52,2 12,2Z',\n edit: 'M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z',\n ratingEmpty: 'M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z',\n ratingFull: 'M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z',\n ratingHalf: 'M12,15.4V6.1L13.71,10.13L18.09,10.5L14.77,13.39L15.76,17.67M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z',\n loading: 'M19,8L15,12H18C18,15.31 15.31,18 12,18C11,18 10.03,17.75 9.2,17.3L7.74,18.76C8.97,19.54 10.43,20 12,20C16.42,20 20,16.42 20,12H23M6,12C6,8.69 8.69,6 12,6C13,6 13.97,6.25 14.8,6.7L16.26,5.24C15.03,4.46 13.57,4 12,4C7.58,4 4,7.58 4,12H1L5,16L9,12',\n first: 'M18.41,16.59L13.82,12L18.41,7.41L17,6L11,12L17,18L18.41,16.59M6,6H8V18H6V6Z',\n last: 'M5.59,7.41L10.18,12L5.59,16.59L7,18L13,12L7,6L5.59,7.41M16,6H18V18H16V6Z',\n unfold: 'M12,18.17L8.83,15L7.42,16.41L12,21L16.59,16.41L15.17,15M12,5.83L15.17,9L16.58,7.59L12,3L7.41,7.59L8.83,9L12,5.83Z',\n file: 'M16.5,6V17.5C16.5,19.71 14.71,21.5 12.5,21.5C10.29,21.5 8.5,19.71 8.5,17.5V5C8.5,3.62 9.62,2.5 11,2.5C12.38,2.5 13.5,3.62 13.5,5V15.5C13.5,16.05 13.05,16.5 12.5,16.5C11.95,16.5 11.5,16.05 11.5,15.5V6H10V15.5C10,16.88 11.12,18 12.5,18C13.88,18 15,16.88 15,15.5V5C15,2.79 13.21,1 11,1C8.79,1 7,2.79 7,5V17.5C7,20.54 9.46,23 12.5,23C15.54,23 18,20.54 18,17.5V6H16.5Z',\n plus: 'M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z',\n minus: 'M19,13H5V11H19V13Z',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'check',\n cancel: 'cancel',\n close: 'close',\n delete: 'cancel', // delete (e.g. v-chip close)\n clear: 'clear',\n success: 'check_circle',\n info: 'info',\n warning: 'priority_high',\n error: 'warning',\n prev: 'chevron_left',\n next: 'chevron_right',\n checkboxOn: 'check_box',\n checkboxOff: 'check_box_outline_blank',\n checkboxIndeterminate: 'indeterminate_check_box',\n delimiter: 'fiber_manual_record', // for carousel\n sort: 'arrow_upward',\n expand: 'keyboard_arrow_down',\n menu: 'menu',\n subgroup: 'arrow_drop_down',\n dropdown: 'arrow_drop_down',\n radioOn: 'radio_button_checked',\n radioOff: 'radio_button_unchecked',\n edit: 'edit',\n ratingEmpty: 'star_border',\n ratingFull: 'star',\n ratingHalf: 'star_half',\n loading: 'cached',\n first: 'first_page',\n last: 'last_page',\n unfold: 'unfold_more',\n file: 'attach_file',\n plus: 'add',\n minus: 'remove',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'mdi-check',\n cancel: 'mdi-close-circle',\n close: 'mdi-close',\n delete: 'mdi-close-circle', // delete (e.g. v-chip close)\n clear: 'mdi-close',\n success: 'mdi-check-circle',\n info: 'mdi-information',\n warning: 'mdi-exclamation',\n error: 'mdi-alert',\n prev: 'mdi-chevron-left',\n next: 'mdi-chevron-right',\n checkboxOn: 'mdi-checkbox-marked',\n checkboxOff: 'mdi-checkbox-blank-outline',\n checkboxIndeterminate: 'mdi-minus-box',\n delimiter: 'mdi-circle', // for carousel\n sort: 'mdi-arrow-up',\n expand: 'mdi-chevron-down',\n menu: 'mdi-menu',\n subgroup: 'mdi-menu-down',\n dropdown: 'mdi-menu-down',\n radioOn: 'mdi-radiobox-marked',\n radioOff: 'mdi-radiobox-blank',\n edit: 'mdi-pencil',\n ratingEmpty: 'mdi-star-outline',\n ratingFull: 'mdi-star',\n ratingHalf: 'mdi-star-half-full',\n loading: 'mdi-cached',\n first: 'mdi-page-first',\n last: 'mdi-page-last',\n unfold: 'mdi-unfold-more-horizontal',\n file: 'mdi-paperclip',\n plus: 'mdi-plus',\n minus: 'mdi-minus',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'fas fa-check',\n cancel: 'fas fa-times-circle',\n close: 'fas fa-times',\n delete: 'fas fa-times-circle', // delete (e.g. v-chip close)\n clear: 'fas fa-times-circle', // delete (e.g. v-chip close)\n success: 'fas fa-check-circle',\n info: 'fas fa-info-circle',\n warning: 'fas fa-exclamation',\n error: 'fas fa-exclamation-triangle',\n prev: 'fas fa-chevron-left',\n next: 'fas fa-chevron-right',\n checkboxOn: 'fas fa-check-square',\n checkboxOff: 'far fa-square', // note 'far'\n checkboxIndeterminate: 'fas fa-minus-square',\n delimiter: 'fas fa-circle', // for carousel\n sort: 'fas fa-sort-up',\n expand: 'fas fa-chevron-down',\n menu: 'fas fa-bars',\n subgroup: 'fas fa-caret-down',\n dropdown: 'fas fa-caret-down',\n radioOn: 'far fa-dot-circle',\n radioOff: 'far fa-circle',\n edit: 'fas fa-edit',\n ratingEmpty: 'far fa-star',\n ratingFull: 'fas fa-star',\n ratingHalf: 'fas fa-star-half',\n loading: 'fas fa-sync',\n first: 'fas fa-step-backward',\n last: 'fas fa-step-forward',\n unfold: 'fas fa-arrows-alt-v',\n file: 'fas fa-paperclip',\n plus: 'fas fa-plus',\n minus: 'fas fa-minus',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\n\nconst icons: VuetifyIcons = {\n complete: 'fa fa-check',\n cancel: 'fa fa-times-circle',\n close: 'fa fa-times',\n delete: 'fa fa-times-circle', // delete (e.g. v-chip close)\n clear: 'fa fa-times-circle', // delete (e.g. v-chip close)\n success: 'fa fa-check-circle',\n info: 'fa fa-info-circle',\n warning: 'fa fa-exclamation',\n error: 'fa fa-exclamation-triangle',\n prev: 'fa fa-chevron-left',\n next: 'fa fa-chevron-right',\n checkboxOn: 'fa fa-check-square',\n checkboxOff: 'fa fa-square-o',\n checkboxIndeterminate: 'fa fa-minus-square',\n delimiter: 'fa fa-circle', // for carousel\n sort: 'fa fa-sort-up',\n expand: 'fa fa-chevron-down',\n menu: 'fa fa-bars',\n subgroup: 'fa fa-caret-down',\n dropdown: 'fa fa-caret-down',\n radioOn: 'fa fa-dot-circle-o',\n radioOff: 'fa fa-circle-o',\n edit: 'fa fa-pencil',\n ratingEmpty: 'fa fa-star-o',\n ratingFull: 'fa fa-star',\n ratingHalf: 'fa fa-star-half-o',\n loading: 'fa fa-refresh',\n first: 'fa fa-step-backward',\n last: 'fa fa-step-forward',\n unfold: 'fa fa-angle-double-down',\n file: 'fa fa-paperclip',\n plus: 'fa fa-plus',\n minus: 'fa fa-minus',\n}\n\nexport default icons\n","import { VuetifyIcons } from 'vuetify/types/services/icons'\nimport { Component } from 'vue'\nimport icons from './fa'\n\nexport function convertToComponentDeclarations (\n component: Component | string,\n iconSet: VuetifyIcons,\n) {\n const result: Partial<VuetifyIcons> = {}\n\n for (const key in iconSet) {\n result[key] = {\n component,\n props: {\n icon: (iconSet[key] as string).split(' fa-'),\n },\n }\n }\n\n return result as VuetifyIcons\n}\n\nexport default convertToComponentDeclarations('font-awesome-icon', icons)\n","import mdiSvg from './mdi-svg'\nimport md from './md'\nimport mdi from './mdi'\nimport fa from './fa'\nimport fa4 from './fa4'\nimport faSvg from './fa-svg'\n\nexport default Object.freeze({\n mdiSvg,\n md,\n mdi,\n fa,\n fa4,\n faSvg,\n})\n","// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport { mergeDeep } from '../../util/helpers'\n\n// Types\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport { Icons as IIcons } from 'vuetify/types/services/icons'\n\n// Presets\nimport presets from './presets'\n\nexport class Icons extends Service implements IIcons {\n static property: 'icons' = 'icons'\n\n public iconfont: IIcons['iconfont']\n\n public values: IIcons['values']\n\n public component: IIcons['component']\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n iconfont,\n values,\n component,\n } = preset[Icons.property]\n\n this.component = component\n this.iconfont = iconfont\n this.values = mergeDeep(\n presets[iconfont],\n values\n ) as IIcons['values']\n }\n}\n","// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\nimport { consoleError, consoleWarn } from '../../util/console'\n\n// Types\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport {\n VuetifyLocale,\n Lang as ILang,\n} from 'vuetify/types/services/lang'\n\nconst LANG_PREFIX = '$vuetify.'\nconst fallback = Symbol('Lang fallback')\n\nfunction getTranslation (\n locale: VuetifyLocale,\n key: string,\n usingDefault = false,\n defaultLocale: VuetifyLocale\n): string {\n const shortKey = key.replace(LANG_PREFIX, '')\n let translation = getObjectValueByPath(locale, shortKey, fallback) as string | typeof fallback\n\n if (translation === fallback) {\n if (usingDefault) {\n consoleError(`Translation key \"${shortKey}\" not found in fallback`)\n translation = key\n } else {\n consoleWarn(`Translation key \"${shortKey}\" not found, falling back to default`)\n translation = getTranslation(defaultLocale, key, true, defaultLocale)\n }\n }\n\n return translation\n}\n\nexport class Lang extends Service implements ILang {\n static property: 'lang' = 'lang'\n\n public current: ILang['current']\n\n public defaultLocale = 'en'\n\n public locales: ILang['locales']\n\n private translator: ILang['t']\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n current,\n locales,\n t,\n } = preset[Lang.property]\n\n this.current = current\n this.locales = locales\n this.translator = t || this.defaultTranslator\n }\n\n public currentLocale (key: string) {\n const translation = this.locales[this.current]\n const defaultLocale = this.locales[this.defaultLocale]\n\n return getTranslation(translation, key, false, defaultLocale)\n }\n\n public t (key: string, ...params: any[]) {\n if (!key.startsWith(LANG_PREFIX)) return this.replace(key, params)\n\n return this.translator(key, ...params)\n }\n\n private defaultTranslator (key: string, ...params: any[]) {\n return this.replace(this.currentLocale(key), params)\n }\n\n private replace (str: string, params: any[]) {\n return str.replace(/\\{(\\d+)\\}/g, (match: string, index: string) => {\n /* istanbul ignore next */\n return String(params[+index])\n })\n }\n}\n","import { ColorInt, XYZ } from '../colorUtils'\nimport { clamp } from '../../util/helpers'\n\n// For converting XYZ to sRGB\nconst srgbForwardMatrix = [\n [3.2406, -1.5372, -0.4986],\n [-0.9689, 1.8758, 0.0415],\n [0.0557, -0.2040, 1.0570],\n]\n\n// Forward gamma adjust\nconst srgbForwardTransform = (C: number): number => (\n C <= 0.0031308\n ? C * 12.92\n : 1.055 * C ** (1 / 2.4) - 0.055\n)\n\n// For converting sRGB to XYZ\nconst srgbReverseMatrix = [\n [0.4124, 0.3576, 0.1805],\n [0.2126, 0.7152, 0.0722],\n [0.0193, 0.1192, 0.9505],\n]\n\n// Reverse gamma adjust\nconst srgbReverseTransform = (C: number): number => (\n C <= 0.04045\n ? C / 12.92\n : ((C + 0.055) / 1.055) ** 2.4\n)\n\nexport function fromXYZ (xyz: XYZ): ColorInt {\n const rgb = Array(3)\n const transform = srgbForwardTransform\n const matrix = srgbForwardMatrix\n\n // Matrix transform, then gamma adjustment\n for (let i = 0; i < 3; ++i) {\n rgb[i] = Math.round(clamp(transform(\n matrix[i][0] * xyz[0] +\n matrix[i][1] * xyz[1] +\n matrix[i][2] * xyz[2]\n )) * 255)\n }\n\n // Rescale back to [0, 255]\n return (rgb[0] << 16) + (rgb[1] << 8) + (rgb[2] << 0)\n}\n\nexport function toXYZ (rgb: ColorInt): XYZ {\n const xyz: XYZ = [0, 0, 0]\n const transform = srgbReverseTransform\n const matrix = srgbReverseMatrix\n\n // Rescale from [0, 255] to [0, 1] then adjust sRGB gamma to linear RGB\n const r = transform((rgb >> 16 & 0xff) / 255)\n const g = transform((rgb >> 8 & 0xff) / 255)\n const b = transform((rgb >> 0 & 0xff) / 255)\n\n // Matrix color space transform\n for (let i = 0; i < 3; ++i) {\n xyz[i] = matrix[i][0] * r + matrix[i][1] * g + matrix[i][2] * b\n }\n\n return xyz\n}\n","import { XYZ, LAB } from '../colorUtils'\n\nconst delta = 0.20689655172413793 // 6÷29\n\nconst cielabForwardTransform = (t: number): number => (\n t > delta ** 3\n ? Math.cbrt(t)\n : (t / (3 * delta ** 2)) + 4 / 29\n)\n\nconst cielabReverseTransform = (t: number): number => (\n t > delta\n ? t ** 3\n : (3 * delta ** 2) * (t - 4 / 29)\n)\n\nexport function fromXYZ (xyz: XYZ): LAB {\n const transform = cielabForwardTransform\n const transformedY = transform(xyz[1])\n\n return [\n 116 * transformedY - 16,\n 500 * (transform(xyz[0] / 0.95047) - transformedY),\n 200 * (transformedY - transform(xyz[2] / 1.08883)),\n ]\n}\n\nexport function toXYZ (lab: LAB): XYZ {\n const transform = cielabReverseTransform\n const Ln = (lab[0] + 16) / 116\n return [\n transform(Ln + lab[1] / 500) * 0.95047,\n transform(Ln),\n transform(Ln - lab[2] / 200) * 1.08883,\n ]\n}\n","import { keys } from '../../util/helpers'\nimport { colorToInt, intToHex, colorToHex, ColorInt } from '../../util/colorUtils'\nimport * as sRGB from '../../util/color/transformSRGB'\nimport * as LAB from '../../util/color/transformCIELAB'\nimport {\n VuetifyParsedTheme,\n VuetifyThemeItem,\n} from 'vuetify/types/services/theme'\n\nexport function parse (\n theme: Record<string, VuetifyThemeItem>,\n isItem = false,\n variations = true,\n): VuetifyParsedTheme {\n const { anchor, ...variant } = theme\n const colors = Object.keys(variant)\n const parsedTheme: any = {}\n\n for (let i = 0; i < colors.length; ++i) {\n const name = colors[i]\n const value = theme[name]\n\n if (value == null) continue\n\n if (!variations) {\n parsedTheme[name] = { base: intToHex(colorToInt(value)) }\n } else if (isItem) {\n /* istanbul ignore else */\n if (name === 'base' || name.startsWith('lighten') || name.startsWith('darken')) {\n parsedTheme[name] = colorToHex(value)\n }\n } else if (typeof value === 'object') {\n parsedTheme[name] = parse(value, true, variations)\n } else {\n parsedTheme[name] = genVariations(name, colorToInt(value))\n }\n }\n\n if (!isItem) {\n parsedTheme.anchor = anchor || parsedTheme.base || parsedTheme.primary.base\n }\n\n return parsedTheme\n}\n\n/**\n * Generate the CSS for a base color (.primary)\n */\nconst genBaseColor = (name: string, value: string): string => {\n return `\n.v-application .${name} {\n background-color: ${value} !important;\n border-color: ${value} !important;\n}\n.v-application .${name}--text {\n color: ${value} !important;\n caret-color: ${value} !important;\n}`\n}\n\n/**\n * Generate the CSS for a variant color (.primary.darken-2)\n */\nconst genVariantColor = (name: string, variant: string, value: string): string => {\n const [type, n] = variant.split(/(\\d)/, 2)\n return `\n.v-application .${name}.${type}-${n} {\n background-color: ${value} !important;\n border-color: ${value} !important;\n}\n.v-application .${name}--text.text--${type}-${n} {\n color: ${value} !important;\n caret-color: ${value} !important;\n}`\n}\n\nconst genColorVariableName = (name: string, variant = 'base'): string => `--v-${name}-${variant}`\n\nconst genColorVariable = (name: string, variant = 'base'): string => `var(${genColorVariableName(name, variant)})`\n\nexport function genStyles (theme: VuetifyParsedTheme, cssVar = false): string {\n const { anchor, ...variant } = theme\n const colors = Object.keys(variant)\n\n if (!colors.length) return ''\n\n let variablesCss = ''\n let css = ''\n\n const aColor = cssVar ? genColorVariable('anchor') : anchor\n css += `.v-application a { color: ${aColor}; }`\n cssVar && (variablesCss += ` ${genColorVariableName('anchor')}: ${anchor};\\n`)\n\n for (let i = 0; i < colors.length; ++i) {\n const name = colors[i]\n const value = theme[name]\n\n css += genBaseColor(name, cssVar ? genColorVariable(name) : value.base)\n cssVar && (variablesCss += ` ${genColorVariableName(name)}: ${value.base};\\n`)\n\n const variants = keys(value)\n for (let i = 0; i < variants.length; ++i) {\n const variant = variants[i]\n const variantValue = value[variant]\n if (variant === 'base') continue\n\n css += genVariantColor(name, variant, cssVar ? genColorVariable(name, variant) : variantValue)\n cssVar && (variablesCss += ` ${genColorVariableName(name, variant)}: ${variantValue};\\n`)\n }\n }\n\n if (cssVar) {\n variablesCss = `:root {\\n${variablesCss}}\\n\\n`\n }\n\n return variablesCss + css\n}\n\nexport function genVariations (name: string, value: ColorInt): Record<string, string> {\n const values: Record<string, string> = {\n base: intToHex(value),\n }\n\n for (let i = 5; i > 0; --i) {\n values[`lighten${i}`] = intToHex(lighten(value, i))\n }\n\n for (let i = 1; i <= 4; ++i) {\n values[`darken${i}`] = intToHex(darken(value, i))\n }\n\n return values\n}\n\nexport function lighten (value: ColorInt, amount: number): ColorInt {\n const lab = LAB.fromXYZ(sRGB.toXYZ(value))\n lab[0] = lab[0] + amount * 10\n return sRGB.fromXYZ(LAB.toXYZ(lab))\n}\n\nexport function darken (value: ColorInt, amount: number): ColorInt {\n const lab = LAB.fromXYZ(sRGB.toXYZ(value))\n lab[0] = lab[0] - amount * 10\n return sRGB.fromXYZ(LAB.toXYZ(lab))\n}\n","/* eslint-disable no-multi-spaces */\n// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport * as ThemeUtils from './utils'\nimport { getNestedValue } from '../../util/helpers'\n\n// Types\nimport Vue from 'vue'\nimport { VuetifyPreset } from 'vuetify/types/services/presets'\nimport {\n VuetifyParsedTheme,\n VuetifyThemes,\n VuetifyThemeVariant,\n Theme as ITheme,\n} from 'vuetify/types/services/theme'\n\nexport class Theme extends Service {\n static property: 'theme' = 'theme'\n\n public disabled = false\n\n public options: ITheme['options']\n\n public styleEl?: HTMLStyleElement\n\n public themes: VuetifyThemes\n\n public defaults: VuetifyThemes\n\n private isDark = null as boolean | null\n\n private unwatch = null as (() => void) | null\n\n private vueMeta = null as any | null\n\n constructor (preset: VuetifyPreset) {\n super()\n\n const {\n dark,\n disable,\n options,\n themes,\n } = preset[Theme.property]\n\n this.dark = Boolean(dark)\n this.defaults = this.themes = themes\n this.options = options\n\n if (disable) {\n this.disabled = true\n\n return\n }\n\n this.themes = {\n dark: this.fillVariant(themes.dark, true),\n light: this.fillVariant(themes.light, false),\n }\n }\n\n // When setting css, check for element and apply new values\n /* eslint-disable-next-line accessor-pairs */\n set css (val: string) {\n if (this.vueMeta) {\n if (this.isVueMeta23) {\n this.applyVueMeta23()\n }\n return\n }\n this.checkOrCreateStyleElement() && (this.styleEl!.innerHTML = val)\n }\n\n set dark (val: boolean) {\n const oldDark = this.isDark\n\n this.isDark = val\n // Only apply theme after dark\n // has already been set before\n oldDark != null && this.applyTheme()\n }\n\n get dark () {\n return Boolean(this.isDark)\n }\n\n // Apply current theme default\n // only called on client side\n public applyTheme (): void {\n if (this.disabled) return this.clearCss()\n\n this.css = this.generatedStyles\n }\n\n public clearCss (): void {\n this.css = ''\n }\n\n // Initialize theme for SSR and SPA\n // Attach to ssrContext head or\n // apply new theme to document\n public init (root: Vue, ssrContext?: any): void {\n if (this.disabled) return\n\n /* istanbul ignore else */\n if ((root as any).$meta) {\n this.initVueMeta(root)\n } else if (ssrContext) {\n this.initSSR(ssrContext)\n }\n\n this.initTheme(root)\n }\n\n // Allows for you to set target theme\n public setTheme (theme: 'light' | 'dark', value: object) {\n this.themes[theme] = Object.assign(this.themes[theme], value)\n this.applyTheme()\n }\n\n // Reset theme defaults\n public resetThemes () {\n this.themes.light = Object.assign({}, this.defaults.light)\n this.themes.dark = Object.assign({}, this.defaults.dark)\n this.applyTheme()\n }\n\n // Check for existence of style element\n private checkOrCreateStyleElement (): boolean {\n this.styleEl = document.getElementById('vuetify-theme-stylesheet') as HTMLStyleElement\n\n /* istanbul ignore next */\n if (this.styleEl) return true\n\n this.genStyleElement() // If doesn't have it, create it\n\n return Boolean(this.styleEl)\n }\n\n private fillVariant (\n theme: Partial<VuetifyThemeVariant> = {},\n dark: boolean\n ): VuetifyThemeVariant {\n const defaultTheme = this.themes[dark ? 'dark' : 'light']\n\n return Object.assign({},\n defaultTheme,\n theme\n )\n }\n\n // Generate the style element\n // if applicable\n private genStyleElement (): void {\n /* istanbul ignore if */\n if (typeof document === 'undefined') return\n\n /* istanbul ignore next */\n this.styleEl = document.createElement('style')\n this.styleEl.type = 'text/css'\n this.styleEl.id = 'vuetify-theme-stylesheet'\n\n if (this.options.cspNonce) {\n this.styleEl.setAttribute('nonce', this.options.cspNonce)\n }\n\n document.head.appendChild(this.styleEl)\n }\n\n private initVueMeta (root: any) {\n this.vueMeta = root.$meta()\n if (this.isVueMeta23) {\n // vue-meta needs to apply after mounted()\n root.$nextTick(() => {\n this.applyVueMeta23()\n })\n return\n }\n\n const metaKeyName = typeof this.vueMeta.getOptions === 'function' ? this.vueMeta.getOptions().keyName : 'metaInfo'\n const metaInfo = root.$options[metaKeyName] || {}\n\n root.$options[metaKeyName] = () => {\n metaInfo.style = metaInfo.style || []\n\n const vuetifyStylesheet = metaInfo.style.find((s: any) => s.id === 'vuetify-theme-stylesheet')\n\n if (!vuetifyStylesheet) {\n metaInfo.style.push({\n cssText: this.generatedStyles,\n type: 'text/css',\n id: 'vuetify-theme-stylesheet',\n nonce: (this.options || {}).cspNonce,\n })\n } else {\n vuetifyStylesheet.cssText = this.generatedStyles\n }\n\n return metaInfo\n }\n }\n\n private applyVueMeta23 () {\n const { set } = this.vueMeta.addApp('vuetify')\n\n set({\n style: [{\n cssText: this.generatedStyles,\n type: 'text/css',\n id: 'vuetify-theme-stylesheet',\n nonce: this.options.cspNonce,\n }],\n })\n }\n\n private initSSR (ssrContext?: any) {\n // SSR\n const nonce = this.options.cspNonce ? ` nonce=\"${this.options.cspNonce}\"` : ''\n ssrContext.head = ssrContext.head || ''\n ssrContext.head += `<style type=\"text/css\" id=\"vuetify-theme-stylesheet\"${nonce}>${this.generatedStyles}</style>`\n }\n\n private initTheme (root: Vue) {\n // Only watch for reactivity on client side\n if (typeof document === 'undefined') return\n\n // If we get here somehow, ensure\n // existing instance is removed\n if (this.unwatch) {\n this.unwatch()\n this.unwatch = null\n }\n\n // TODO: Update to use RFC if merged\n // https://github.com/vuejs/rfcs/blob/advanced-reactivity-api/active-rfcs/0000-advanced-reactivity-api.md\n root.$once('hook:created', () => {\n const obs = Vue.observable({ themes: this.themes })\n this.unwatch = root.$watch(() => obs.themes, () => this.applyTheme(), { deep: true })\n })\n this.applyTheme()\n }\n\n get currentTheme () {\n const target = this.dark ? 'dark' : 'light'\n\n return this.themes[target]\n }\n\n get generatedStyles (): string {\n const theme = this.parsedTheme\n /* istanbul ignore next */\n const options = this.options || {}\n let css\n\n if (options.themeCache != null) {\n css = options.themeCache.get(theme)\n /* istanbul ignore if */\n if (css != null) return css\n }\n\n css = ThemeUtils.genStyles(theme, options.customProperties)\n\n if (options.minifyTheme != null) {\n css = options.minifyTheme(css)\n }\n\n if (options.themeCache != null) {\n options.themeCache.set(theme, css)\n }\n\n return css\n }\n\n get parsedTheme (): VuetifyParsedTheme {\n return ThemeUtils.parse(\n this.currentTheme || {},\n undefined,\n getNestedValue(this.options, ['variations'], true)\n )\n }\n\n // Is using v2.3 of vue-meta\n // https://github.com/nuxt/vue-meta/releases/tag/v2.3.0\n private get isVueMeta23 (): boolean {\n return typeof this.vueMeta.addApp === 'function'\n }\n}\n","import { install } from './install'\n\n// Types\nimport Vue from 'vue'\nimport {\n UserVuetifyPreset,\n VuetifyPreset,\n} from 'vuetify/types/services/presets'\nimport {\n VuetifyService,\n VuetifyServiceContract,\n} from 'vuetify/types/services'\n\n// Services\nimport * as services from './services'\n\nexport default class Vuetify {\n static install = install\n\n static installed = false\n\n static version = __VUETIFY_VERSION__\n\n static config = {\n silent: false,\n }\n\n public framework: Dictionary<VuetifyServiceContract> = {\n isHydrating: false,\n } as any\n\n public installed: string[] = []\n\n public preset = {} as VuetifyPreset\n\n public userPreset: UserVuetifyPreset = {}\n\n constructor (userPreset: UserVuetifyPreset = {}) {\n this.userPreset = userPreset\n\n this.use(services.Presets)\n this.use(services.Application)\n this.use(services.Breakpoint)\n this.use(services.Goto)\n this.use(services.Icons)\n this.use(services.Lang)\n this.use(services.Theme)\n }\n\n // Called on the new vuetify instance\n // bootstrap in install beforeCreate\n // Exposes ssrContext if available\n init (root: Vue, ssrContext?: object) {\n this.installed.forEach(property => {\n const service = this.framework[property]\n\n service.framework = this.framework\n\n service.init(root, ssrContext)\n })\n\n // rtl is not installed and\n // will never be called by\n // the init process\n this.framework.rtl = Boolean(this.preset.rtl) as any\n }\n\n // Instantiate a VuetifyService\n use (Service: VuetifyService) {\n const property = Service.property\n\n if (this.installed.includes(property)) return\n\n // TODO maybe a specific type for arg 2?\n this.framework[property] = new Service(this.preset, this as any)\n this.installed.push(property)\n }\n}\n","// Mixins\nimport Delayable from '../delayable'\nimport Toggleable from '../toggleable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { getSlot, getSlotType } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\ntype Listeners = Dictionary<(e: MouseEvent & KeyboardEvent & FocusEvent) => void>\n\nconst baseMixins = mixins(\n Delayable,\n Toggleable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'activatable',\n\n props: {\n activator: {\n default: null as unknown as PropType<string | HTMLElement | VNode | Element | null>,\n validator: (val: string | object) => {\n return ['string', 'object'].includes(typeof val)\n },\n },\n disabled: Boolean,\n internalActivator: Boolean,\n openOnClick: {\n type: Boolean,\n default: true,\n },\n openOnHover: Boolean,\n openOnFocus: Boolean,\n },\n\n data: () => ({\n // Do not use this directly, call getActivator() instead\n activatorElement: null as HTMLElement | null,\n activatorNode: [] as VNode[],\n events: ['click', 'mouseenter', 'mouseleave', 'focus'],\n listeners: {} as Listeners,\n }),\n\n watch: {\n activator: 'resetActivator',\n openOnFocus: 'resetActivator',\n openOnHover: 'resetActivator',\n },\n\n mounted () {\n const slotType = getSlotType(this, 'activator', true)\n\n if (slotType && ['v-slot', 'normal'].includes(slotType)) {\n consoleError(`The activator slot must be bound, try '<template v-slot:activator=\"{ on }\"><v-btn v-on=\"on\">'`, this)\n }\n\n this.addActivatorEvents()\n },\n\n beforeDestroy () {\n this.removeActivatorEvents()\n },\n\n methods: {\n addActivatorEvents () {\n if (\n !this.activator ||\n this.disabled ||\n !this.getActivator()\n ) return\n\n this.listeners = this.genActivatorListeners()\n const keys = Object.keys(this.listeners)\n\n for (const key of keys) {\n this.getActivator()!.addEventListener(key, this.listeners[key] as any)\n }\n },\n genActivator () {\n const node = getSlot(this, 'activator', Object.assign(this.getValueProxy(), {\n on: this.genActivatorListeners(),\n attrs: this.genActivatorAttributes(),\n })) || []\n\n this.activatorNode = node\n\n return node\n },\n genActivatorAttributes () {\n return {\n role: (this.openOnClick && !this.openOnHover) ? 'button' : undefined,\n 'aria-haspopup': true,\n 'aria-expanded': String(this.isActive),\n }\n },\n genActivatorListeners () {\n if (this.disabled) return {}\n\n const listeners: Listeners = {}\n\n if (this.openOnHover) {\n listeners.mouseenter = (e: MouseEvent) => {\n this.getActivator(e)\n this.runDelay('open')\n }\n listeners.mouseleave = (e: MouseEvent) => {\n this.getActivator(e)\n this.runDelay('close')\n }\n } else if (this.openOnClick) {\n listeners.click = (e: MouseEvent) => {\n const activator = this.getActivator(e)\n if (activator) activator.focus()\n\n e.stopPropagation()\n\n this.isActive = !this.isActive\n }\n }\n\n if (this.openOnFocus) {\n listeners.focus = (e: FocusEvent) => {\n this.getActivator(e)\n\n e.stopPropagation()\n\n this.isActive = !this.isActive\n }\n }\n\n return listeners\n },\n getActivator (e?: Event): HTMLElement | null {\n // If we've already fetched the activator, re-use\n if (this.activatorElement) return this.activatorElement\n\n let activator = null\n\n if (this.activator) {\n const target = this.internalActivator ? this.$el : document\n\n if (typeof this.activator === 'string') {\n // Selector\n activator = target.querySelector(this.activator)\n } else if ((this.activator as any).$el) {\n // Component (ref)\n activator = (this.activator as any).$el\n } else {\n // HTMLElement | Element\n activator = this.activator\n }\n } else if (this.activatorNode.length === 1 || (this.activatorNode.length && !e)) {\n // Use the contents of the activator slot\n // There's either only one element in it or we\n // don't have a click event to use as a last resort\n const vm = this.activatorNode[0].componentInstance\n if (\n vm &&\n vm.$options.mixins && // Activatable is indirectly used via Menuable\n vm.$options.mixins.some((m: any) => m.options && ['activatable', 'menuable'].includes(m.options.name))\n ) {\n // Activator is actually another activatible component, use its activator (#8846)\n activator = (vm as any).getActivator()\n } else {\n activator = this.activatorNode[0].elm as HTMLElement\n }\n } else if (e) {\n // Activated by a click or focus event\n activator = (e.currentTarget || e.target) as HTMLElement\n }\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n this.activatorElement = activator?.nodeType === Node.ELEMENT_NODE ? activator : null\n\n return this.activatorElement\n },\n getContentSlot () {\n return getSlot(this, 'default', this.getValueProxy(), true)\n },\n getValueProxy (): object {\n const self = this\n return {\n get value () {\n return self.isActive\n },\n set value (isActive: boolean) {\n self.isActive = isActive\n },\n }\n },\n removeActivatorEvents () {\n if (\n !this.activator ||\n !this.activatorElement\n ) return\n\n const keys = Object.keys(this.listeners)\n\n for (const key of keys) {\n (this.activatorElement as any).removeEventListener(key, this.listeners[key])\n }\n\n this.listeners = {}\n },\n resetActivator () {\n this.removeActivatorEvents()\n this.activatorElement = null\n this.getActivator()\n this.addActivatorEvents()\n },\n },\n})\n","import { factory as PositionableFactory } from '../positionable'\nimport { TargetProp } from 'vuetify/types/services/application'\n\n// Util\nimport mixins from '../../util/mixins'\n\nexport default function applicationable (value: TargetProp, events: string[] = []) {\n /* @vue/component */\n return mixins(PositionableFactory(['absolute', 'fixed'])).extend({\n name: 'applicationable',\n\n props: {\n app: Boolean,\n },\n\n computed: {\n applicationProperty (): TargetProp {\n return value\n },\n },\n\n watch: {\n // If previous value was app\n // reset the provided prop\n app (x: boolean, prev: boolean) {\n prev\n ? this.removeApplication(true)\n : this.callUpdate()\n },\n applicationProperty (newVal, oldVal) {\n this.$vuetify.application.unregister(this._uid, oldVal)\n },\n },\n\n activated () {\n this.callUpdate()\n },\n\n created () {\n for (let i = 0, length = events.length; i < length; i++) {\n this.$watch(events[i], this.callUpdate)\n }\n this.callUpdate()\n },\n\n mounted () {\n this.callUpdate()\n },\n\n deactivated () {\n this.removeApplication()\n },\n\n destroyed () {\n this.removeApplication()\n },\n\n methods: {\n callUpdate () {\n if (!this.app) return\n\n this.$vuetify.application.register(\n this._uid,\n this.applicationProperty,\n this.updateApplication()\n )\n },\n removeApplication (force = false) {\n if (!force && !this.app) return\n\n this.$vuetify.application.unregister(\n this._uid,\n this.applicationProperty\n )\n },\n updateApplication: () => 0,\n },\n })\n}\n","import Vue, { WatchHandler } from 'vue'\n\n/**\n * This mixin provides `attrs$` and `listeners$` to work around\n * vue bug https://github.com/vuejs/vue/issues/10115\n */\n\nfunction makeWatcher (property: string): ThisType<Vue> & WatchHandler<any> {\n return function (this: Vue, val, oldVal) {\n for (const attr in oldVal) {\n if (!Object.prototype.hasOwnProperty.call(val, attr)) {\n this.$delete(this.$data[property], attr)\n }\n }\n for (const attr in val) {\n this.$set(this.$data[property], attr, val[attr])\n }\n }\n}\n\nexport default Vue.extend({\n data: () => ({\n attrs$: {} as Dictionary<string>,\n listeners$: {} as Dictionary<Function | Function[]>,\n }),\n\n created () {\n // Work around unwanted re-renders: https://github.com/vuejs/vue/issues/10115\n // Make sure to use `attrs$` instead of `$attrs` (confusing right?)\n this.$watch('$attrs', makeWatcher('attrs$'), { immediate: true })\n this.$watch('$listeners', makeWatcher('listeners$'), { immediate: true })\n },\n})\n","// Utilities\nimport { removed } from '../../util/console'\n\n// Types\nimport Vue, { VNode } from 'vue'\ninterface Toggleable extends Vue {\n isActive?: boolean\n}\n\n/**\n * Bootable\n * @mixin\n *\n * Used to add lazy content functionality to components\n * Looks for change in \"isActive\" to automatically boot\n * Otherwise can be set manually\n */\n/* @vue/component */\nexport default Vue.extend<Vue & Toggleable>().extend({\n name: 'bootable',\n\n props: {\n eager: Boolean,\n },\n\n data: () => ({\n isBooted: false,\n }),\n\n computed: {\n hasContent (): boolean | undefined {\n return this.isBooted || this.eager || this.isActive\n },\n },\n\n watch: {\n isActive () {\n this.isBooted = true\n },\n },\n\n created () {\n /* istanbul ignore next */\n if ('lazy' in this.$attrs) {\n removed('lazy', this)\n }\n },\n\n methods: {\n showLazyContent (content?: () => VNode[]): VNode[] {\n return (this.hasContent && content) ? content() : [this.$createElement()]\n },\n },\n})\n","import Vue from 'vue'\nimport { VNodeData } from 'vue/types/vnode'\nimport { consoleError } from '../../util/console'\nimport { isCssColor } from '../../util/colorUtils'\n\nexport default Vue.extend({\n name: 'colorable',\n\n props: {\n color: String,\n },\n\n methods: {\n setBackgroundColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n 'background-color': `${color}`,\n 'border-color': `${color}`,\n }\n } else if (color) {\n data.class = {\n ...data.class,\n [color]: true,\n }\n }\n\n return data\n },\n\n setTextColor (color?: string | false, data: VNodeData = {}): VNodeData {\n if (typeof data.style === 'string') {\n // istanbul ignore next\n consoleError('style must be an object', this)\n // istanbul ignore next\n return data\n }\n if (typeof data.class === 'string') {\n // istanbul ignore next\n consoleError('class must be an object', this)\n // istanbul ignore next\n return data\n }\n if (isCssColor(color)) {\n data.style = {\n ...data.style as object,\n color: `${color}`,\n 'caret-color': `${color}`,\n }\n } else if (color) {\n const [colorName, colorModifier] = color.toString().trim().split(' ', 2) as (string | undefined)[]\n data.class = {\n ...data.class,\n [colorName + '--text']: true,\n }\n if (colorModifier) {\n data.class['text--' + colorModifier] = true\n }\n }\n return data\n },\n },\n})\n","import Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { deepEqual } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'comparable',\n props: {\n valueComparator: {\n type: Function,\n default: deepEqual,\n } as PropValidator<typeof deepEqual>,\n },\n})\n","import Vue from 'vue'\n\n/**\n * Delayable\n *\n * @mixin\n *\n * Changes the open or close delay time for elements\n */\nexport default Vue.extend<Vue & { isActive?: boolean }>().extend({\n name: 'delayable',\n\n props: {\n openDelay: {\n type: [Number, String],\n default: 0,\n },\n closeDelay: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n openTimeout: undefined as number | undefined,\n closeTimeout: undefined as number | undefined,\n }),\n\n methods: {\n /**\n * Clear any pending delay timers from executing\n */\n clearDelay (): void {\n clearTimeout(this.openTimeout)\n clearTimeout(this.closeTimeout)\n },\n /**\n * Runs callback after a specified delay\n */\n runDelay (type: 'open' | 'close', cb?: () => void): void {\n this.clearDelay()\n\n const delay = parseInt((this as any)[`${type}Delay`], 10)\n\n ;(this as any)[`${type}Timeout`] = setTimeout(cb || (() => {\n this.isActive = { open: true, close: false }[type]\n }), delay)\n },\n },\n})\n","import Vue from 'vue'\n\nimport mixins from '../../util/mixins'\nimport { VOverlay } from '../../components/VOverlay'\n\ninterface options extends Vue {\n $el: HTMLElement\n $refs: {\n content: HTMLElement\n }\n overlay?: InstanceType<typeof VOverlay>\n}\n\ninterface DependentInstance extends Vue {\n isActive?: boolean\n isDependent?: boolean\n}\n\nfunction searchChildren (children: Vue[]): DependentInstance[] {\n const results = []\n for (let index = 0; index < children.length; index++) {\n const child = children[index] as DependentInstance\n if (child.isActive && child.isDependent) {\n results.push(child)\n } else {\n results.push(...searchChildren(child.$children))\n }\n }\n\n return results\n}\n\n/* @vue/component */\nexport default mixins<options>().extend({\n name: 'dependent',\n\n data () {\n return {\n closeDependents: true,\n isActive: false,\n isDependent: true,\n }\n },\n\n watch: {\n isActive (val) {\n if (val) return\n\n const openDependents = this.getOpenDependents()\n for (let index = 0; index < openDependents.length; index++) {\n openDependents[index].isActive = false\n }\n },\n },\n\n methods: {\n getOpenDependents (): any[] {\n if (this.closeDependents) return searchChildren(this.$children)\n\n return []\n },\n getOpenDependentElements (): HTMLElement[] {\n const result = []\n const openDependents = this.getOpenDependents()\n\n for (let index = 0; index < openDependents.length; index++) {\n result.push(...openDependents[index].getClickableDependentElements())\n }\n\n return result\n },\n getClickableDependentElements (): HTMLElement[] {\n const result = [this.$el]\n if (this.$refs.content) result.push(this.$refs.content)\n if (this.overlay) result.push(this.overlay.$el as HTMLElement)\n result.push(...this.getOpenDependentElements())\n\n return result\n },\n },\n})\n","// Mixins\nimport Bootable from '../bootable'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue, { PropOptions } from 'vue'\nimport { VNode } from 'vue/types'\n\ninterface options extends Vue {\n $el: HTMLElement\n $refs: {\n content: HTMLElement\n }\n}\n\nfunction validateAttachTarget (val: any) {\n const type = typeof val\n\n if (type === 'boolean' || type === 'string') return true\n\n return val.nodeType === Node.ELEMENT_NODE\n}\n\nfunction removeActivator (activator: VNode[]) {\n activator.forEach(node => {\n node.elm &&\n node.elm.parentNode &&\n node.elm.parentNode.removeChild(node.elm)\n })\n}\n\n/* @vue/component */\nexport default mixins<options &\n /* eslint-disable indent */\n ExtractVue<typeof Bootable>\n /* eslint-enable indent */\n>(Bootable).extend({\n name: 'detachable',\n\n props: {\n attach: {\n default: false,\n validator: validateAttachTarget,\n } as PropOptions<boolean | string | Element>,\n contentClass: {\n type: String,\n default: '',\n },\n },\n\n data: () => ({\n activatorNode: null as null | VNode | VNode[],\n hasDetached: false,\n }),\n\n watch: {\n attach () {\n this.hasDetached = false\n this.initDetach()\n },\n hasContent () {\n this.$nextTick(this.initDetach)\n },\n },\n\n beforeMount () {\n this.$nextTick(() => {\n if (this.activatorNode) {\n const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode]\n\n activator.forEach(node => {\n if (!node.elm) return\n if (!this.$el.parentNode) return\n\n const target = this.$el === this.$el.parentNode.firstChild\n ? this.$el\n : this.$el.nextSibling\n\n this.$el.parentNode.insertBefore(node.elm, target)\n })\n }\n })\n },\n\n mounted () {\n this.hasContent && this.initDetach()\n },\n\n deactivated () {\n this.isActive = false\n },\n\n beforeDestroy () {\n if (\n this.$refs.content &&\n this.$refs.content.parentNode\n ) {\n this.$refs.content.parentNode.removeChild(this.$refs.content)\n }\n },\n\n destroyed () {\n if (this.activatorNode) {\n const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode]\n if (this.$el.isConnected) {\n // Component has been destroyed but the element still exists, we must be in a transition\n // Wait for the transition to finish before cleaning up the detached activator\n const observer = new MutationObserver(list => {\n if (\n list.some(record => Array.from(record.removedNodes).includes(this.$el))\n ) {\n observer.disconnect()\n removeActivator(activator)\n }\n })\n observer.observe(this.$el.parentNode!, { subtree: false, childList: true })\n } else {\n removeActivator(activator)\n }\n }\n },\n\n methods: {\n getScopeIdAttrs () {\n const scopeId = getObjectValueByPath(this.$vnode, 'context.$options._scopeId')\n\n return scopeId && {\n [scopeId]: '',\n }\n },\n initDetach () {\n if (this._isDestroyed ||\n !this.$refs.content ||\n this.hasDetached ||\n // Leave menu in place if attached\n // and dev has not changed target\n this.attach === '' || // If used as a boolean prop (<v-menu attach>)\n this.attach === true || // If bound to a boolean (<v-menu :attach=\"true\">)\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) return\n\n let target\n if (this.attach === false) {\n // Default, detach to app\n target = document.querySelector('[data-app]')\n } else if (typeof this.attach === 'string') {\n // CSS selector\n target = document.querySelector(this.attach)\n } else {\n // DOM Element\n target = this.attach\n }\n\n if (!target) {\n consoleWarn(`Unable to locate target ${this.attach || '[data-app]'}`, this)\n return\n }\n\n target.appendChild(this.$refs.content)\n\n this.hasDetached = true\n },\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'elevatable',\n\n props: {\n elevation: [Number, String],\n },\n\n computed: {\n computedElevation (): string | number | undefined {\n return this.elevation\n },\n elevationClasses (): Record<string, boolean> {\n const elevation = this.computedElevation\n\n if (elevation == null) return {}\n if (isNaN(parseInt(elevation))) return {}\n return { [`elevation-${this.elevation}`]: true }\n },\n },\n})\n","// Mixins\nimport { Registrable, inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { ExtractVue } from '../../util/mixins'\nimport { VueConstructor } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nexport type Groupable<T extends string, C extends VueConstructor | null = null> = VueConstructor<ExtractVue<Registrable<T, C>> & {\n activeClass: string\n isActive: boolean\n disabled: boolean\n groupClasses: object\n toggle (): void\n}>\n\nexport function factory<T extends string, C extends VueConstructor | null = null> (\n namespace: T,\n child?: string,\n parent?: string\n): Groupable<T, C> {\n return RegistrableInject<T, C>(namespace, child, parent).extend({\n name: 'groupable',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this[namespace]) return undefined\n\n return this[namespace].activeClass\n },\n } as any as PropValidator<string>,\n disabled: Boolean,\n },\n\n data () {\n return {\n isActive: false,\n }\n },\n\n computed: {\n groupClasses (): object {\n if (!this.activeClass) return {}\n\n return {\n [this.activeClass]: this.isActive,\n }\n },\n },\n\n created () {\n this[namespace] && (this[namespace] as any).register(this)\n },\n\n beforeDestroy () {\n this[namespace] && (this[namespace] as any).unregister(this)\n },\n\n methods: {\n toggle () {\n this.$emit('change')\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Groupable = factory('itemGroup')\n\nexport default Groupable\n","import Vue, { VNode } from 'vue'\nimport VProgressLinear from '../../components/VProgressLinear'\n\ninterface colorable extends Vue {\n color?: string\n}\n\n/**\n * Loadable\n *\n * @mixin\n *\n * Used to add linear progress bar to components\n * Can use a default bar with a specific color\n * or designate a custom progress linear bar\n */\n/* @vue/component */\nexport default Vue.extend<colorable>().extend({\n name: 'loadable',\n\n props: {\n loading: {\n type: [Boolean, String],\n default: false,\n },\n loaderHeight: {\n type: [Number, String],\n default: 2,\n },\n },\n\n methods: {\n genProgress (): VNode | VNode[] | null {\n if (this.loading === false) return null\n\n return this.$slots.progress || this.$createElement(VProgressLinear, {\n props: {\n absolute: true,\n color: (this.loading === true || this.loading === '')\n ? (this.color || 'primary')\n : this.loading,\n height: this.loaderHeight,\n indeterminate: true,\n },\n })\n },\n },\n})\n","// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport Vue, { PropType } from 'vue'\n\nexport type NumberOrNumberString = PropType<string | number | undefined>\n\nexport default Vue.extend({\n name: 'measurable',\n\n props: {\n height: [Number, String] as NumberOrNumberString,\n maxHeight: [Number, String] as NumberOrNumberString,\n maxWidth: [Number, String] as NumberOrNumberString,\n minHeight: [Number, String] as NumberOrNumberString,\n minWidth: [Number, String] as NumberOrNumberString,\n width: [Number, String] as NumberOrNumberString,\n },\n\n computed: {\n measurableStyles (): object {\n const styles: Record<string, string> = {}\n\n const height = convertToUnit(this.height)\n const minHeight = convertToUnit(this.minHeight)\n const minWidth = convertToUnit(this.minWidth)\n const maxHeight = convertToUnit(this.maxHeight)\n const maxWidth = convertToUnit(this.maxWidth)\n const width = convertToUnit(this.width)\n\n if (height) styles.height = height\n if (minHeight) styles.minHeight = minHeight\n if (minWidth) styles.minWidth = minWidth\n if (maxHeight) styles.maxHeight = maxHeight\n if (maxWidth) styles.maxWidth = maxWidth\n if (width) styles.width = width\n\n return styles\n },\n },\n})\n","// Mixins\nimport Stackable from '../stackable'\nimport { factory as positionableFactory } from '../positionable'\nimport Activatable from '../activatable'\nimport Detachable from '../detachable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n Stackable,\n positionableFactory(['top', 'right', 'bottom', 'left', 'absolute']),\n Activatable,\n Detachable,\n)\n\ninterface dimensions {\n top: number\n left: number\n bottom: number\n right: number\n width: number\n height: number\n offsetTop: number\n scrollHeight: number\n offsetLeft: number\n}\n\ninterface options extends ExtractVue<typeof baseMixins> {\n attach: boolean | string | Element\n offsetY: boolean\n offsetX: boolean\n dimensions: {\n activator: dimensions\n content: dimensions\n }\n $refs: {\n content: HTMLElement\n activator: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend<options>().extend({\n name: 'menuable',\n\n props: {\n allowOverflow: Boolean,\n light: Boolean,\n dark: Boolean,\n maxWidth: {\n type: [Number, String],\n default: 'auto',\n },\n minWidth: [Number, String],\n nudgeBottom: {\n type: [Number, String],\n default: 0,\n },\n nudgeLeft: {\n type: [Number, String],\n default: 0,\n },\n nudgeRight: {\n type: [Number, String],\n default: 0,\n },\n nudgeTop: {\n type: [Number, String],\n default: 0,\n },\n nudgeWidth: {\n type: [Number, String],\n default: 0,\n },\n offsetOverflow: Boolean,\n positionX: {\n type: Number,\n default: null,\n },\n positionY: {\n type: Number,\n default: null,\n },\n zIndex: {\n type: [Number, String],\n default: null,\n },\n },\n\n data: () => ({\n activatorNode: [] as VNode[],\n absoluteX: 0,\n absoluteY: 0,\n activatedBy: null as EventTarget | null,\n activatorFixed: false,\n dimensions: {\n activator: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0,\n offsetLeft: 0,\n },\n content: {\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n width: 0,\n height: 0,\n offsetTop: 0,\n scrollHeight: 0,\n },\n },\n relativeYOffset: 0,\n hasJustFocused: false,\n hasWindow: false,\n inputActivator: false,\n isContentActive: false,\n pageWidth: 0,\n pageYOffset: 0,\n stackClass: 'v-menu__content--active',\n stackMinZIndex: 6,\n }),\n\n computed: {\n computedLeft () {\n const a = this.dimensions.activator\n const c = this.dimensions.content\n const activatorLeft = (this.attach !== false ? a.offsetLeft : a.left) || 0\n const minWidth = Math.max(a.width, c.width)\n let left = 0\n left += activatorLeft\n if (this.left || (this.$vuetify.rtl && !this.right)) left -= (minWidth - a.width)\n if (this.offsetX) {\n const maxWidth = isNaN(Number(this.maxWidth))\n ? a.width\n : Math.min(a.width, Number(this.maxWidth))\n\n left += this.left ? -maxWidth : a.width\n }\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft)\n if (this.nudgeRight) left += parseInt(this.nudgeRight)\n\n return left\n },\n computedTop () {\n const a = this.dimensions.activator\n const c = this.dimensions.content\n let top = 0\n\n if (this.top) top += a.height - c.height\n if (this.attach !== false) top += a.offsetTop\n else top += a.top + this.pageYOffset\n if (this.offsetY) top += this.top ? -a.height : a.height\n if (this.nudgeTop) top -= parseInt(this.nudgeTop)\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom)\n\n return top\n },\n hasActivator (): boolean {\n return !!this.$slots.activator || !!this.$scopedSlots.activator || !!this.activator || !!this.inputActivator\n },\n absoluteYOffset (): number {\n return this.pageYOffset - this.relativeYOffset\n },\n },\n\n watch: {\n disabled (val) {\n val && this.callDeactivate()\n },\n isActive (val) {\n if (this.disabled) return\n\n val ? this.callActivate() : this.callDeactivate()\n },\n positionX: 'updateDimensions',\n positionY: 'updateDimensions',\n },\n\n beforeMount () {\n this.hasWindow = typeof window !== 'undefined'\n\n if (this.hasWindow) {\n window.addEventListener('resize', this.updateDimensions, false)\n }\n },\n\n beforeDestroy () {\n if (this.hasWindow) {\n window.removeEventListener('resize', this.updateDimensions, false)\n }\n },\n\n methods: {\n absolutePosition () {\n return {\n offsetTop: this.positionY || this.absoluteY,\n offsetLeft: this.positionX || this.absoluteX,\n scrollHeight: 0,\n top: this.positionY || this.absoluteY,\n bottom: this.positionY || this.absoluteY,\n left: this.positionX || this.absoluteX,\n right: this.positionX || this.absoluteX,\n height: 0,\n width: 0,\n }\n },\n activate () {},\n calcLeft (menuWidth: number) {\n return convertToUnit(this.attach !== false\n ? this.computedLeft\n : this.calcXOverflow(this.computedLeft, menuWidth))\n },\n calcTop () {\n return convertToUnit(this.attach !== false\n ? this.computedTop\n : this.calcYOverflow(this.computedTop))\n },\n calcXOverflow (left: number, menuWidth: number) {\n const xOverflow = left + menuWidth - this.pageWidth + 12\n\n if ((!this.left || this.right) && xOverflow > 0) {\n left = Math.max(left - xOverflow, 0)\n } else {\n left = Math.max(left, 12)\n }\n\n return left + this.getOffsetLeft()\n },\n calcYOverflow (top: number) {\n const documentHeight = this.getInnerHeight()\n const toTop = this.absoluteYOffset + documentHeight\n const activator = this.dimensions.activator\n const contentHeight = this.dimensions.content.height\n const totalHeight = top + contentHeight\n const isOverflowing = toTop < totalHeight\n\n // If overflowing bottom and offset\n // TODO: set 'bottom' position instead of 'top'\n if (isOverflowing &&\n this.offsetOverflow &&\n // If we don't have enough room to offset\n // the overflow, don't offset\n activator.top > contentHeight\n ) {\n top = this.pageYOffset + (activator.top - contentHeight)\n // If overflowing bottom\n } else if (isOverflowing && !this.allowOverflow) {\n top = toTop - contentHeight - 12\n // If overflowing top\n } else if (top < this.absoluteYOffset && !this.allowOverflow) {\n top = this.absoluteYOffset + 12\n }\n\n return top < 12 ? 12 : top\n },\n callActivate () {\n if (!this.hasWindow) return\n\n this.activate()\n },\n callDeactivate () {\n this.isContentActive = false\n\n this.deactivate()\n },\n checkForPageYOffset () {\n if (this.hasWindow) {\n this.pageYOffset = this.activatorFixed ? 0 : this.getOffsetTop()\n }\n },\n checkActivatorFixed () {\n if (this.attach !== false) return\n let el = this.getActivator()\n while (el) {\n if (window.getComputedStyle(el).position === 'fixed') {\n this.activatorFixed = true\n return\n }\n el = el.offsetParent as HTMLElement\n }\n this.activatorFixed = false\n },\n deactivate () {},\n genActivatorListeners () {\n const listeners = Activatable.options.methods.genActivatorListeners.call(this)\n\n const onClick = listeners.click\n\n if (onClick) {\n listeners.click = (e: MouseEvent & KeyboardEvent & FocusEvent) => {\n if (this.openOnClick) {\n onClick && onClick(e)\n }\n\n this.absoluteX = e.clientX\n this.absoluteY = e.clientY\n }\n }\n\n return listeners\n },\n getInnerHeight () {\n if (!this.hasWindow) return 0\n\n return window.innerHeight ||\n document.documentElement.clientHeight\n },\n getOffsetLeft () {\n if (!this.hasWindow) return 0\n\n return window.pageXOffset ||\n document.documentElement.scrollLeft\n },\n getOffsetTop () {\n if (!this.hasWindow) return 0\n\n return window.pageYOffset ||\n document.documentElement.scrollTop\n },\n getRoundedBoundedClientRect (el: Element) {\n const rect = el.getBoundingClientRect()\n return {\n top: Math.round(rect.top),\n left: Math.round(rect.left),\n bottom: Math.round(rect.bottom),\n right: Math.round(rect.right),\n width: Math.round(rect.width),\n height: Math.round(rect.height),\n }\n },\n measure (el: HTMLElement) {\n if (!el || !this.hasWindow) return null\n\n const rect = this.getRoundedBoundedClientRect(el)\n\n // Account for activator margin\n if (this.attach !== false) {\n const style = window.getComputedStyle(el)\n\n rect.left = parseInt(style.marginLeft!)\n rect.top = parseInt(style.marginTop!)\n }\n\n return rect\n },\n sneakPeek (cb: () => void) {\n requestAnimationFrame(() => {\n const el = this.$refs.content\n\n if (!el || el.style.display !== 'none') {\n cb()\n return\n }\n\n el.style.display = 'inline-block'\n cb()\n el.style.display = 'none'\n })\n },\n startTransition () {\n return new Promise<void>(resolve => requestAnimationFrame(() => {\n this.isContentActive = this.hasJustFocused = this.isActive\n resolve()\n }))\n },\n updateDimensions () {\n this.hasWindow = typeof window !== 'undefined'\n this.checkActivatorFixed()\n this.checkForPageYOffset()\n this.pageWidth = document.documentElement.clientWidth\n\n const dimensions: any = {\n activator: { ...this.dimensions.activator },\n content: { ...this.dimensions.content },\n }\n\n // Activator should already be shown\n if (!this.hasActivator || this.absolute) {\n dimensions.activator = this.absolutePosition()\n } else {\n const activator = this.getActivator()\n if (!activator) return\n\n dimensions.activator = this.measure(activator)\n dimensions.activator.offsetLeft = activator.offsetLeft\n if (this.attach !== false) {\n // account for css padding causing things to not line up\n // this is mostly for v-autocomplete, hopefully it won't break anything\n dimensions.activator.offsetTop = activator.offsetTop\n } else {\n dimensions.activator.offsetTop = 0\n }\n }\n\n // Display and hide to get dimensions\n this.sneakPeek(() => {\n if (this.$refs.content) {\n if (this.$refs.content.offsetParent) {\n const offsetRect = this.getRoundedBoundedClientRect(this.$refs.content.offsetParent)\n\n this.relativeYOffset = window.pageYOffset + offsetRect.top\n dimensions.activator.top -= this.relativeYOffset\n dimensions.activator.left -= window.pageXOffset + offsetRect.left\n }\n\n dimensions.content = this.measure(this.$refs.content)\n }\n\n this.dimensions = dimensions\n })\n },\n },\n})\n","import VOverlay from './VOverlay'\n\nexport { VOverlay }\n\nexport default VOverlay\n","// Components\nimport VOverlay from '../../components/VOverlay'\n\n// Utilities\nimport {\n keyCodes,\n addOnceEventListener,\n addPassiveEventListener,\n getZIndex,\n composedPath,\n} from '../../util/helpers'\n\n// Types\nimport Vue from 'vue'\n\ninterface Toggleable extends Vue {\n isActive?: boolean\n}\n\ninterface Stackable extends Vue {\n activeZIndex: number\n}\n\ninterface options {\n absolute?: boolean\n $refs: {\n dialog?: HTMLElement\n content?: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default Vue.extend<Vue & Toggleable & Stackable & options>().extend({\n name: 'overlayable',\n\n props: {\n hideOverlay: Boolean,\n overlayColor: String,\n overlayOpacity: [Number, String],\n },\n\n data () {\n return {\n animationFrame: 0,\n overlay: null as InstanceType<typeof VOverlay> | null,\n }\n },\n\n watch: {\n hideOverlay (value) {\n if (!this.isActive) return\n\n if (value) this.removeOverlay()\n else this.genOverlay()\n },\n },\n\n beforeDestroy () {\n this.removeOverlay()\n },\n\n methods: {\n createOverlay () {\n const overlay = new VOverlay({\n propsData: {\n absolute: this.absolute,\n value: false,\n color: this.overlayColor,\n opacity: this.overlayOpacity,\n },\n })\n\n overlay.$mount()\n\n const parent = this.absolute\n ? this.$el.parentNode\n : document.querySelector('[data-app]')\n\n parent && parent.insertBefore(overlay.$el, parent.firstChild)\n\n this.overlay = overlay\n },\n genOverlay () {\n this.hideScroll()\n\n if (this.hideOverlay) return\n\n if (!this.overlay) this.createOverlay()\n\n this.animationFrame = requestAnimationFrame(() => {\n if (!this.overlay) return\n\n if (this.activeZIndex !== undefined) {\n this.overlay.zIndex = String(this.activeZIndex - 1)\n } else if (this.$el) {\n this.overlay.zIndex = getZIndex(this.$el)\n }\n\n this.overlay.value = true\n })\n\n return true\n },\n /** removeOverlay(false) will not restore the scollbar afterwards */\n removeOverlay (showScroll = true) {\n if (this.overlay) {\n addOnceEventListener(this.overlay.$el, 'transitionend', () => {\n if (\n !this.overlay ||\n !this.overlay.$el ||\n !this.overlay.$el.parentNode ||\n this.overlay.value ||\n this.isActive\n ) return\n\n this.overlay.$el.parentNode.removeChild(this.overlay.$el)\n this.overlay.$destroy()\n this.overlay = null\n })\n\n // Cancel animation frame in case\n // overlay is removed before it\n // has finished its animation\n cancelAnimationFrame(this.animationFrame)\n\n this.overlay.value = false\n }\n\n showScroll && this.showScroll()\n },\n scrollListener (e: WheelEvent & KeyboardEvent) {\n if (e.type === 'keydown') {\n if (\n ['INPUT', 'TEXTAREA', 'SELECT'].includes((e.target as Element).tagName) ||\n // https://github.com/vuetifyjs/vuetify/issues/4715\n (e.target as HTMLElement).isContentEditable\n ) return\n\n const up = [keyCodes.up, keyCodes.pageup]\n const down = [keyCodes.down, keyCodes.pagedown]\n\n if (up.includes(e.keyCode)) {\n (e as any).deltaY = -1\n } else if (down.includes(e.keyCode)) {\n (e as any).deltaY = 1\n } else {\n return\n }\n }\n\n if (e.target === this.overlay ||\n (e.type !== 'keydown' && e.target === document.body) ||\n this.checkPath(e)) e.preventDefault()\n },\n hasScrollbar (el?: Element) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ((['auto', 'scroll'].includes(style.overflowY!) || el.tagName === 'SELECT') && el.scrollHeight > el.clientHeight) ||\n ((['auto', 'scroll'].includes(style.overflowX!)) && el.scrollWidth > el.clientWidth)\n },\n shouldScroll (el: Element, e: WheelEvent): boolean {\n if (el.hasAttribute('data-app')) return false\n\n const dir = e.shiftKey || e.deltaX ? 'x' : 'y'\n const delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY\n\n let alreadyAtStart: boolean\n let alreadyAtEnd: boolean\n if (dir === 'y') {\n alreadyAtStart = el.scrollTop === 0\n alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight\n } else {\n alreadyAtStart = el.scrollLeft === 0\n alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth\n }\n\n const scrollingUp = delta < 0\n const scrollingDown = delta > 0\n\n if (!alreadyAtStart && scrollingUp) return true\n if (!alreadyAtEnd && scrollingDown) return true\n if ((alreadyAtStart || alreadyAtEnd)) {\n return this.shouldScroll(el.parentNode as Element, e)\n }\n\n return false\n },\n isInside (el: Element, parent: Element): boolean {\n if (el === parent) {\n return true\n } else if (el === null || el === document.body) {\n return false\n } else {\n return this.isInside(el.parentNode as Element, parent)\n }\n },\n checkPath (e: WheelEvent) {\n const path = composedPath(e)\n\n if (e.type === 'keydown' && path[0] === document.body) {\n const dialog = this.$refs.dialog\n // getSelection returns null in firefox in some edge cases, can be ignored\n const selected = window.getSelection()!.anchorNode as Element\n if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n return !this.shouldScroll(dialog, e)\n }\n return true\n }\n\n for (let index = 0; index < path.length; index++) {\n const el = path[index]\n\n if (el === document) return true\n if (el === document.documentElement) return true\n if (el === this.$refs.content) return true\n\n if (this.hasScrollbar(el as Element)) return !this.shouldScroll(el as Element, e)\n }\n\n return true\n },\n hideScroll () {\n if (this.$vuetify.breakpoint.smAndDown) {\n document.documentElement!.classList.add('overflow-y-hidden')\n } else {\n addPassiveEventListener(window, 'wheel', this.scrollListener as EventHandlerNonNull, { passive: false })\n window.addEventListener('keydown', this.scrollListener as EventHandlerNonNull)\n }\n },\n showScroll () {\n document.documentElement!.classList.remove('overflow-y-hidden')\n window.removeEventListener('wheel', this.scrollListener as EventHandlerNonNull)\n window.removeEventListener('keydown', this.scrollListener as EventHandlerNonNull)\n },\n },\n})\n","import Vue from 'vue'\nimport { filterObjectOnKeys } from '../../util/helpers'\nimport { OptionsVue, VueConstructor } from 'vue/types/vue'\n\nconst availableProps = {\n absolute: Boolean,\n bottom: Boolean,\n fixed: Boolean,\n left: Boolean,\n right: Boolean,\n top: Boolean,\n}\ntype props = Record<keyof typeof availableProps, boolean>\n\nexport type Positionable<S extends keyof props> = VueConstructor<Vue & { [P in S]: boolean }, { [P in S]: BooleanConstructor }>\n\nexport function factory <S extends keyof props> (selected?: S[]): Positionable<S>\nexport function factory (selected: undefined): OptionsVue<Vue, {}, {}, {}, props, typeof availableProps>\nexport function factory (selected: any[] = []): any {\n return Vue.extend({\n name: 'positionable',\n props: selected.length ? filterObjectOnKeys(availableProps, selected) : availableProps,\n })\n}\n\nexport default factory()\n\n// Add a `*` before the second `/`\n/* Tests /\nlet single = factory(['top']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet some = factory(['top', 'bottom']).extend({\n created () {\n this.top\n this.bottom\n this.absolute\n }\n})\n\nlet all = factory().extend({\n created () {\n this.top\n this.bottom\n this.absolute\n this.foobar\n }\n})\n/**/\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Proxyable<T extends string = 'value'> = VueConstructor<Vue & {\n internalLazyValue: unknown\n internalValue: unknown\n} & Record<T, any>>\n\nexport function factory<T extends string = 'value'> (prop?: T, event?: string): Proxyable<T>\nexport function factory (\n prop = 'value',\n event = 'change'\n) {\n return Vue.extend({\n name: 'proxyable',\n\n model: {\n prop,\n event,\n },\n\n props: {\n [prop]: {\n required: false,\n },\n },\n\n data () {\n return {\n internalLazyValue: this[prop] as unknown,\n }\n },\n\n computed: {\n internalValue: {\n get (): unknown {\n return this.internalLazyValue\n },\n set (val: any) {\n if (val === this.internalLazyValue) return\n\n this.internalLazyValue = val\n\n this.$emit(event, val)\n },\n },\n },\n\n watch: {\n [prop] (val) {\n this.internalLazyValue = val\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Proxyable = factory()\n\nexport default Proxyable\n","import Vue from 'vue'\nimport { VueConstructor } from 'vue/types/vue'\nimport { consoleWarn } from '../../util/console'\n\nfunction generateWarning (child: string, parent: string) {\n return () => consoleWarn(`The ${child} component must be used inside a ${parent}`)\n}\n\nexport type Registrable<T extends string, C extends VueConstructor | null = null> = VueConstructor<Vue & {\n [K in T]: C extends VueConstructor ? InstanceType<C> : {\n register (...props: any[]): void\n unregister (self: any): void\n }\n}>\n\nexport function inject<\n T extends string, C extends VueConstructor | null = null\n> (namespace: T, child?: string, parent?: string): Registrable<T, C> {\n const defaultImpl = child && parent ? {\n register: generateWarning(child, parent),\n unregister: generateWarning(child, parent),\n } : null\n\n return Vue.extend({\n name: 'registrable-inject',\n\n inject: {\n [namespace]: {\n default: defaultImpl,\n },\n },\n })\n}\n\nexport function provide (namespace: string, self = false) {\n return Vue.extend({\n name: 'registrable-provide',\n\n provide (): object {\n return {\n [namespace]: self ? this : {\n register: (this as any).register,\n unregister: (this as any).unregister,\n },\n }\n },\n })\n}\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'returnable',\n\n props: {\n returnValue: null as any,\n },\n\n data: () => ({\n isActive: false,\n originalValue: null as any,\n }),\n\n watch: {\n isActive (val) {\n if (val) {\n this.originalValue = this.returnValue\n } else {\n this.$emit('update:return-value', this.originalValue)\n }\n },\n },\n\n methods: {\n save (value: any) {\n this.originalValue = value\n setTimeout(() => {\n this.isActive = false\n })\n },\n },\n})\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'roundable',\n\n props: {\n rounded: [Boolean, String],\n tile: Boolean,\n },\n\n computed: {\n roundedClasses (): Record<string, boolean> {\n const composite = []\n const rounded = typeof this.rounded === 'string'\n ? String(this.rounded)\n : this.rounded === true\n\n if (this.tile) {\n composite.push('rounded-0')\n } else if (typeof rounded === 'string') {\n const values = rounded.split(' ')\n\n for (const value of values) {\n composite.push(`rounded-${value}`)\n }\n } else if (rounded) {\n composite.push('rounded')\n }\n\n return composite.length > 0 ? {\n [composite.join(' ')]: true,\n } : {}\n },\n },\n})\n","import Vue, { VNodeData, PropType } from 'vue'\n\n// Directives\nimport Ripple, { RippleOptions } from '../../directives/ripple'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'routable',\n\n directives: {\n Ripple,\n },\n\n props: {\n activeClass: String,\n append: Boolean,\n disabled: Boolean,\n exact: {\n type: Boolean as PropType<boolean | undefined>,\n default: undefined,\n },\n exactPath: Boolean,\n exactActiveClass: String,\n link: Boolean,\n href: [String, Object],\n to: [String, Object],\n nuxt: Boolean,\n replace: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: null,\n },\n tag: String,\n target: String,\n },\n\n data: () => ({\n isActive: false,\n proxyClass: '',\n }),\n\n computed: {\n classes (): object {\n const classes: Record<string, boolean> = {}\n\n if (this.to) return classes\n\n if (this.activeClass) classes[this.activeClass] = this.isActive\n if (this.proxyClass) classes[this.proxyClass] = this.isActive\n\n return classes\n },\n computedRipple (): RippleOptions | boolean {\n return this.ripple ?? (!this.disabled && this.isClickable)\n },\n isClickable (): boolean {\n if (this.disabled) return false\n\n return Boolean(\n this.isLink ||\n this.$listeners.click ||\n this.$listeners['!click'] ||\n this.$attrs.tabindex\n )\n },\n isLink (): boolean {\n return this.to || this.href || this.link\n },\n styles: () => ({}),\n },\n\n watch: {\n $route: 'onRouteChange',\n },\n\n mounted () {\n this.onRouteChange()\n },\n\n methods: {\n generateRouteLink () {\n let exact = this.exact\n let tag\n\n const data: VNodeData = {\n attrs: {\n tabindex: 'tabindex' in this.$attrs ? this.$attrs.tabindex : undefined,\n },\n class: this.classes,\n style: this.styles,\n props: {},\n directives: [{\n name: 'ripple',\n value: this.computedRipple,\n }],\n [this.to ? 'nativeOn' : 'on']: {\n ...this.$listeners,\n ...('click' in this ? { click: (this as any).click } : undefined), // #14447\n },\n ref: 'link',\n }\n\n if (typeof this.exact === 'undefined') {\n exact = this.to === '/' ||\n (this.to === Object(this.to) && this.to.path === '/')\n }\n\n if (this.to) {\n // Add a special activeClass hook\n // for component level styles\n let activeClass = this.activeClass\n let exactActiveClass = this.exactActiveClass || activeClass\n\n if (this.proxyClass) {\n activeClass = `${activeClass} ${this.proxyClass}`.trim()\n exactActiveClass = `${exactActiveClass} ${this.proxyClass}`.trim()\n }\n\n tag = this.nuxt ? 'nuxt-link' : 'router-link'\n Object.assign(data.props, {\n to: this.to,\n exact,\n exactPath: this.exactPath,\n activeClass,\n exactActiveClass,\n append: this.append,\n replace: this.replace,\n })\n } else {\n tag = (this.href && 'a') || this.tag || 'div'\n\n if (tag === 'a' && this.href) data.attrs!.href = this.href\n }\n\n if (this.target) data.attrs!.target = this.target\n\n return { tag, data }\n },\n onRouteChange () {\n if (!this.to || !this.$refs.link || !this.$route) return\n const activeClass = `${this.activeClass || ''} ${this.proxyClass || ''}`.trim()\n const exactActiveClass = `${this.exactActiveClass || ''} ${this.proxyClass || ''}`.trim() || activeClass\n\n const path = '_vnode.data.class.' + (this.exact ? exactActiveClass : activeClass)\n\n this.$nextTick(() => {\n /* istanbul ignore else */\n if (!getObjectValueByPath(this.$refs.link, path) === this.isActive) {\n this.toggle()\n }\n })\n },\n toggle () {\n this.isActive = !this.isActive\n },\n },\n})\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'sizeable',\n\n props: {\n large: Boolean,\n small: Boolean,\n xLarge: Boolean,\n xSmall: Boolean,\n },\n\n computed: {\n medium (): boolean {\n return Boolean(\n !this.xSmall &&\n !this.small &&\n !this.large &&\n !this.xLarge\n )\n },\n sizeableClasses (): object {\n return {\n 'v-size--x-small': this.xSmall,\n 'v-size--small': this.small,\n 'v-size--default': this.medium,\n 'v-size--large': this.large,\n 'v-size--x-large': this.xLarge,\n }\n },\n },\n})\n","import Vue from 'vue'\n\n/**\n * SSRBootable\n *\n * @mixin\n *\n * Used in layout components (drawer, toolbar, content)\n * to avoid an entry animation when using SSR\n */\nexport default Vue.extend({\n name: 'ssr-bootable',\n\n data: () => ({\n isBooted: false,\n }),\n\n mounted () {\n // Use setAttribute instead of dataset\n // because dataset does not work well\n // with unit tests\n window.requestAnimationFrame(() => {\n this.$el.setAttribute('data-booted', 'true')\n this.isBooted = true\n })\n },\n})\n","import Vue from 'vue'\n\nimport { getZIndex } from '../../util/helpers'\n\ninterface options extends Vue {\n $refs: {\n content: Element\n }\n}\n\n/* @vue/component */\nexport default Vue.extend<options>().extend({\n name: 'stackable',\n\n data () {\n return {\n stackElement: null as Element | null,\n stackExclude: null as Element[] | null,\n stackMinZIndex: 0,\n isActive: false,\n }\n },\n computed: {\n activeZIndex (): number {\n if (typeof window === 'undefined') return 0\n\n const content = this.stackElement || this.$refs.content\n // Return current zindex if not active\n\n const index = !this.isActive\n ? getZIndex(content)\n : this.getMaxZIndex(this.stackExclude || [content]) + 2\n\n if (index == null) return index\n\n // Return max current z-index (excluding self) + 2\n // (2 to leave room for an overlay below, if needed)\n return parseInt(index)\n },\n },\n methods: {\n getMaxZIndex (exclude: Element[] = []) {\n const base = this.$el\n // Start with lowest allowed z-index or z-index of\n // base component's element, whichever is greater\n const zis = [this.stackMinZIndex, getZIndex(base)]\n // Convert the NodeList to an array to\n // prevent an Edge bug with Symbol.iterator\n // https://github.com/vuetifyjs/vuetify/issues/2146\n const activeElements = [\n ...document.getElementsByClassName('v-menu__content--active'),\n ...document.getElementsByClassName('v-dialog__content--active'),\n ]\n\n // Get z-index for all active dialogs\n for (let index = 0; index < activeElements.length; index++) {\n if (!exclude.includes(activeElements[index])) {\n zis.push(getZIndex(activeElements[index]))\n }\n }\n\n return Math.max(...zis)\n },\n },\n})\n","import Vue from 'vue'\nimport { PropType, RenderContext } from 'vue/types/options'\n\ninterface options extends Vue {\n theme: {\n isDark: boolean\n }\n}\n\n/* @vue/component */\nconst Themeable = Vue.extend<options>().extend({\n name: 'themeable',\n\n provide (): object {\n return {\n theme: this.themeableProvide,\n }\n },\n\n inject: {\n theme: {\n default: {\n isDark: false,\n },\n },\n },\n\n props: {\n dark: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n light: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n },\n\n data () {\n return {\n themeableProvide: {\n isDark: false,\n },\n }\n },\n\n computed: {\n appIsDark (): boolean {\n return this.$vuetify.theme.dark || false\n },\n isDark (): boolean {\n if (this.dark === true) {\n // explicitly dark\n return true\n } else if (this.light === true) {\n // explicitly light\n return false\n } else {\n // inherit from parent, or default false if there is none\n return this.theme.isDark\n }\n },\n themeClasses (): object {\n return {\n 'theme--dark': this.isDark,\n 'theme--light': !this.isDark,\n }\n },\n /** Used by menus and dialogs, inherits from v-app instead of the parent */\n rootIsDark (): boolean {\n if (this.dark === true) {\n // explicitly dark\n return true\n } else if (this.light === true) {\n // explicitly light\n return false\n } else {\n // inherit from v-app\n return this.appIsDark\n }\n },\n rootThemeClasses (): Dictionary<boolean> {\n return {\n 'theme--dark': this.rootIsDark,\n 'theme--light': !this.rootIsDark,\n }\n },\n },\n\n watch: {\n isDark: {\n handler (newVal, oldVal) {\n if (newVal !== oldVal) {\n this.themeableProvide.isDark = this.isDark\n }\n },\n immediate: true,\n },\n },\n})\n\nexport default Themeable\n\nexport function functionalThemeClasses (context: RenderContext): object {\n const vm = {\n ...context.props,\n ...context.injections,\n }\n const isDark = Themeable.options.computed.isDark.call(vm)\n return Themeable.options.computed.themeClasses.call({ isDark })\n}\n","import Vue, { VueConstructor } from 'vue'\n\nexport type Toggleable<T extends string = 'value'> = VueConstructor<Vue & { isActive: boolean } & Record<T, any>>\n\nexport function factory<T extends string = 'value'> (prop?: T, event?: string): Toggleable<T>\nexport function factory (prop = 'value', event = 'input') {\n return Vue.extend({\n name: 'toggleable',\n\n model: { prop, event },\n\n props: {\n [prop]: { required: false },\n },\n\n data () {\n return {\n isActive: !!this[prop],\n }\n },\n\n watch: {\n [prop] (val) {\n this.isActive = !!val\n },\n isActive (val) {\n !!val !== this[prop] && this.$emit(event, val)\n },\n },\n })\n}\n\n/* eslint-disable-next-line @typescript-eslint/no-redeclare */\nconst Toggleable = factory()\n\nexport default Toggleable\n","// Mixins\nimport Colorable from '../colorable'\nimport Themeable from '../themeable'\nimport { inject as RegistrableInject } from '../registrable'\n\n// Utilities\nimport { deepEqual } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\nimport { InputMessage, InputValidationRules } from 'vuetify/types'\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject<'form', any>('form'),\n Themeable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'validatable',\n\n props: {\n disabled: Boolean,\n error: Boolean,\n errorCount: {\n type: [Number, String],\n default: 1,\n },\n errorMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator<InputMessage | null>,\n messages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator<InputMessage | null>,\n readonly: Boolean,\n rules: {\n type: Array,\n default: () => [],\n } as PropValidator<InputValidationRules>,\n success: Boolean,\n successMessages: {\n type: [String, Array],\n default: () => [],\n } as PropValidator<InputMessage | null>,\n validateOnBlur: Boolean,\n value: { required: false },\n },\n\n data () {\n return {\n errorBucket: [] as string[],\n hasColor: false,\n hasFocused: false,\n hasInput: false,\n isFocused: false,\n isResetting: false,\n lazyValue: this.value,\n valid: false,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.color) return this.color\n // It's assumed that if the input is on a\n // dark background, the user will want to\n // have a white color. If the entire app\n // is setup to be dark, then they will\n // like want to use their primary color\n if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n hasError (): boolean {\n return (\n this.internalErrorMessages.length > 0 ||\n this.errorBucket.length > 0 ||\n this.error\n )\n },\n // TODO: Add logic that allows the user to enable based\n // upon a good validation\n hasSuccess (): boolean {\n return (\n this.internalSuccessMessages.length > 0 ||\n this.success\n )\n },\n externalError (): boolean {\n return this.internalErrorMessages.length > 0 || this.error\n },\n hasMessages (): boolean {\n return this.validationTarget.length > 0\n },\n hasState (): boolean {\n if (this.isDisabled) return false\n\n return (\n this.hasSuccess ||\n (this.shouldValidate && this.hasError)\n )\n },\n internalErrorMessages (): InputValidationRules {\n return this.genInternalMessages(this.errorMessages)\n },\n internalMessages (): InputValidationRules {\n return this.genInternalMessages(this.messages)\n },\n internalSuccessMessages (): InputValidationRules {\n return this.genInternalMessages(this.successMessages)\n },\n internalValue: {\n get (): unknown {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n\n this.$emit('input', val)\n },\n },\n isDisabled (): boolean {\n return this.disabled || (\n !!this.form &&\n this.form.disabled\n )\n },\n isInteractive (): boolean {\n return !this.isDisabled && !this.isReadonly\n },\n isReadonly (): boolean {\n return this.readonly || (\n !!this.form &&\n this.form.readonly\n )\n },\n shouldValidate (): boolean {\n if (this.externalError) return true\n if (this.isResetting) return false\n\n return this.validateOnBlur\n ? this.hasFocused && !this.isFocused\n : (this.hasInput || this.hasFocused)\n },\n validations (): InputValidationRules {\n return this.validationTarget.slice(0, Number(this.errorCount))\n },\n validationState (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor) return this.computedColor\n return undefined\n },\n validationTarget (): InputValidationRules {\n if (this.internalErrorMessages.length > 0) {\n return this.internalErrorMessages\n } else if (this.successMessages && this.successMessages.length > 0) {\n return this.internalSuccessMessages\n } else if (this.messages && this.messages.length > 0) {\n return this.internalMessages\n } else if (this.shouldValidate) {\n return this.errorBucket\n } else return []\n },\n },\n\n watch: {\n rules: {\n handler (newVal, oldVal) {\n if (deepEqual(newVal, oldVal)) return\n this.validate()\n },\n deep: true,\n },\n internalValue () {\n // If it's the first time we're setting input,\n // mark it with hasInput\n this.hasInput = true\n this.validateOnBlur || this.$nextTick(this.validate)\n },\n isFocused (val) {\n // Should not check validation\n // if disabled\n if (\n !val &&\n !this.isDisabled\n ) {\n this.hasFocused = true\n this.validateOnBlur && this.$nextTick(this.validate)\n }\n },\n isResetting () {\n setTimeout(() => {\n this.hasInput = false\n this.hasFocused = false\n this.isResetting = false\n this.validate()\n }, 0)\n },\n hasError (val) {\n if (this.shouldValidate) {\n this.$emit('update:error', val)\n }\n },\n value (val) {\n this.lazyValue = val\n },\n },\n\n beforeMount () {\n this.validate()\n },\n\n created () {\n this.form && this.form.register(this)\n },\n\n beforeDestroy () {\n this.form && this.form.unregister(this)\n },\n\n methods: {\n genInternalMessages (messages: InputMessage | null): InputValidationRules {\n if (!messages) return []\n else if (Array.isArray(messages)) return messages\n else return [messages]\n },\n /** @public */\n reset () {\n this.isResetting = true\n this.internalValue = Array.isArray(this.internalValue)\n ? []\n : null\n },\n /** @public */\n resetValidation () {\n this.isResetting = true\n },\n /** @public */\n validate (force = false, value?: any): boolean {\n const errorBucket = []\n value = value || this.internalValue\n\n if (force) this.hasInput = this.hasFocused = true\n\n for (let index = 0; index < this.rules.length; index++) {\n const rule = this.rules[index]\n const valid = typeof rule === 'function' ? rule(value) : rule\n\n if (valid === false || typeof valid === 'string') {\n errorBucket.push(valid || '')\n } else if (typeof valid !== 'boolean') {\n consoleError(`Rules should return a string or boolean, received '${typeof valid}' instead`, this)\n }\n }\n\n this.errorBucket = errorBucket\n this.valid = errorBucket.length === 0\n\n return this.valid\n },\n },\n})\n","export type EasingFunction = (t: number) => number\n\n// linear\nexport const linear = (t: number) => t\n// accelerating from zero velocity\nexport const easeInQuad = (t: number) => t ** 2\n// decelerating to zero velocity\nexport const easeOutQuad = (t: number) => t * (2 - t)\n// acceleration until halfway, then deceleration\nexport const easeInOutQuad = (t: number) => (t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t)\n// accelerating from zero velocity\nexport const easeInCubic = (t: number) => t ** 3\n// decelerating to zero velocity\nexport const easeOutCubic = (t: number) => --t ** 3 + 1\n// acceleration until halfway, then deceleration\nexport const easeInOutCubic = (t: number) => t < 0.5 ? 4 * t ** 3 : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1\n// accelerating from zero velocity\nexport const easeInQuart = (t: number) => t ** 4\n// decelerating to zero velocity\nexport const easeOutQuart = (t: number) => 1 - --t ** 4\n// acceleration until halfway, then deceleration\nexport const easeInOutQuart = (t: number) => (t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t)\n// accelerating from zero velocity\nexport const easeInQuint = (t: number) => t ** 5\n// decelerating to zero velocity\nexport const easeOutQuint = (t: number) => 1 + --t ** 5\n// acceleration until halfway, then deceleration\nexport const easeInOutQuint = (t: number) => t < 0.5 ? 16 * t ** 5 : 1 + 16 * --t ** 5\n","import Vue from 'vue'\n\n// Return target's cumulative offset from the top\nexport function getOffset (target: any): number {\n if (typeof target === 'number') {\n return target\n }\n\n let el = $(target)\n if (!el) {\n throw typeof target === 'string'\n ? new Error(`Target element \"${target}\" not found.`)\n : new TypeError(`Target must be a Number/Selector/HTMLElement/VueComponent, received ${type(target)} instead.`)\n }\n\n let totalOffset = 0\n while (el) {\n totalOffset += el.offsetTop\n el = el.offsetParent as HTMLElement\n }\n\n return totalOffset\n}\n\nexport function getContainer (container: any): HTMLElement {\n const el = $(container)\n\n if (el) return el\n\n throw typeof container === 'string'\n ? new Error(`Container element \"${container}\" not found.`)\n : new TypeError(`Container must be a Selector/HTMLElement/VueComponent, received ${type(container)} instead.`)\n}\n\nfunction type (el: any) {\n return el == null ? el : el.constructor.name\n}\n\nfunction $ (el: any): HTMLElement | null {\n if (typeof el === 'string') {\n return document.querySelector<HTMLElement>(el)\n } else if (el && el._isVue) {\n return (el as Vue).$el as HTMLElement\n } else if (el instanceof HTMLElement) {\n return el\n } else {\n return null\n }\n}\n","// Extensions\nimport { Service } from '../service'\n\n// Utilities\nimport * as easingPatterns from './easing-patterns'\nimport {\n getContainer,\n getOffset,\n} from './util'\n\n// Types\nimport { GoToOptions, VuetifyGoToTarget } from 'vuetify/types/services/goto'\n\nimport { VuetifyServiceContract } from 'vuetify/types/services'\n\nexport default function goTo (\n _target: VuetifyGoToTarget,\n _settings: GoToOptions = {}\n): Promise<number> {\n const settings: GoToOptions = {\n container: (document.scrollingElement as HTMLElement | null) || document.body || document.documentElement,\n duration: 500,\n offset: 0,\n easing: 'easeInOutCubic',\n appOffset: true,\n ..._settings,\n }\n const container = getContainer(settings.container)\n\n /* istanbul ignore else */\n if (settings.appOffset && goTo.framework.application) {\n const isDrawer = container.classList.contains('v-navigation-drawer')\n const isClipped = container.classList.contains('v-navigation-drawer--clipped')\n const { bar, top } = goTo.framework.application as any\n\n settings.offset += bar\n /* istanbul ignore else */\n if (!isDrawer || isClipped) settings.offset += top\n }\n\n const startTime = performance.now()\n\n let targetLocation: number\n if (typeof _target === 'number') {\n targetLocation = getOffset(_target) - settings.offset!\n } else {\n targetLocation = getOffset(_target) - getOffset(container) - settings.offset!\n }\n\n const startLocation = container.scrollTop\n if (targetLocation === startLocation) return Promise.resolve(targetLocation)\n\n const ease = typeof settings.easing === 'function'\n ? settings.easing\n : easingPatterns[settings.easing!]\n /* istanbul ignore else */\n if (!ease) throw new TypeError(`Easing function \"${settings.easing}\" not found.`)\n\n // Cannot be tested properly in jsdom\n /* istanbul ignore next */\n return new Promise(resolve => requestAnimationFrame(function step (currentTime: number) {\n const timeElapsed = currentTime - startTime\n const progress = Math.abs(settings.duration ? Math.min(timeElapsed / settings.duration, 1) : 1)\n\n container.scrollTop = Math.floor(startLocation + (targetLocation - startLocation) * ease(progress))\n\n const clientHeight = container === document.body ? document.documentElement.clientHeight : container.clientHeight\n const reachBottom = clientHeight + container.scrollTop >= container.scrollHeight\n if (\n progress === 1 ||\n // Need to go lower but reach bottom\n (targetLocation > container.scrollTop && reachBottom)\n ) {\n return resolve(targetLocation)\n }\n\n requestAnimationFrame(step)\n }))\n}\n\ngoTo.framework = {} as Record<string, VuetifyServiceContract>\ngoTo.init = () => {}\n\nexport class Goto extends Service {\n public static property: 'goTo' = 'goTo'\n\n constructor () {\n super()\n\n return goTo\n }\n}\n","// Contracts\nimport { VuetifyServiceContract } from 'vuetify/types/services/index'\n\n// Types\nimport Vue from 'vue'\n\nexport class Service implements VuetifyServiceContract {\n framework = {}\n\n init (root: Vue, ssrContext?: object) {}\n}\n","// Utilities\nimport { consoleWarn } from './console'\nimport { chunk, padEnd } from './helpers'\nimport { toXYZ } from './color/transformSRGB'\n\n// Types\nimport { VuetifyThemeVariant } from 'types/services/theme'\n\nexport type ColorInt = number\nexport type XYZ = [number, number, number]\nexport type LAB = [number, number, number]\nexport type HSV = { h: number, s: number, v: number }\nexport type HSVA = HSV & { a: number }\nexport type RGB = { r: number, g: number, b: number }\nexport type RGBA = RGB & { a: number }\nexport type HSL = { h: number, s: number, l: number }\nexport type HSLA = HSL & { a: number }\nexport type Hex = string\nexport type Hexa = string\nexport type Color = string | number | {}\n\nexport function isCssColor (color?: string | false): boolean {\n return !!color && !!color.match(/^(#|var\\(--|(rgb|hsl)a?\\()/)\n}\n\nexport function colorToInt (color: Color): ColorInt {\n let rgb\n\n if (typeof color === 'number') {\n rgb = color\n } else if (typeof color === 'string') {\n let c = color[0] === '#' ? color.substring(1) : color\n if (c.length === 3) {\n c = c.split('').map(char => char + char).join('')\n }\n if (c.length !== 6) {\n consoleWarn(`'${color}' is not a valid rgb color`)\n }\n rgb = parseInt(c, 16)\n } else {\n throw new TypeError(`Colors can only be numbers or strings, recieved ${color == null ? color : color.constructor.name} instead`)\n }\n\n if (rgb < 0) {\n consoleWarn(`Colors cannot be negative: '${color}'`)\n rgb = 0\n } else if (rgb > 0xffffff || isNaN(rgb)) {\n consoleWarn(`'${color}' is not a valid rgb color`)\n rgb = 0xffffff\n }\n\n return rgb\n}\n\nexport function classToHex (\n color: string,\n colors: Record<string, Record<string, string>>,\n currentTheme: Partial<VuetifyThemeVariant>,\n): string {\n const [colorName, colorModifier] = color\n .toString().trim().replace('-', '').split(' ', 2) as (string | undefined)[]\n\n let hexColor = ''\n if (colorName && colorName in colors) {\n if (colorModifier && colorModifier in colors[colorName]) {\n hexColor = colors[colorName][colorModifier]\n } else if ('base' in colors[colorName]) {\n hexColor = colors[colorName].base\n }\n } else if (colorName && colorName in currentTheme) {\n hexColor = currentTheme[colorName] as string\n }\n\n return hexColor\n}\n\nexport function intToHex (color: ColorInt): string {\n let hexColor: string = color.toString(16)\n\n if (hexColor.length < 6) hexColor = '0'.repeat(6 - hexColor.length) + hexColor\n\n return '#' + hexColor\n}\n\nexport function colorToHex (color: Color): string {\n return intToHex(colorToInt(color))\n}\n\n/**\n * Converts HSVA to RGBA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV\n *\n * @param color HSVA color as an array [0-360, 0-1, 0-1, 0-1]\n */\nexport function HSVAtoRGBA (hsva: HSVA): RGBA {\n const { h, s, v, a } = hsva\n const f = (n: number) => {\n const k = (n + (h / 60)) % 6\n return v - v * s * Math.max(Math.min(k, 4 - k, 1), 0)\n }\n\n const rgb = [f(5), f(3), f(1)].map(v => Math.round(v * 255))\n\n return { r: rgb[0], g: rgb[1], b: rgb[2], a }\n}\n\n/**\n * Converts RGBA to HSVA. Based on formula from https://en.wikipedia.org/wiki/HSL_and_HSV\n *\n * @param color RGBA color as an array [0-255, 0-255, 0-255, 0-1]\n */\nexport function RGBAtoHSVA (rgba: RGBA): HSVA {\n if (!rgba) return { h: 0, s: 1, v: 1, a: 1 }\n\n const r = rgba.r / 255\n const g = rgba.g / 255\n const b = rgba.b / 255\n const max = Math.max(r, g, b)\n const min = Math.min(r, g, b)\n\n let h = 0\n\n if (max !== min) {\n if (max === r) {\n h = 60 * (0 + ((g - b) / (max - min)))\n } else if (max === g) {\n h = 60 * (2 + ((b - r) / (max - min)))\n } else if (max === b) {\n h = 60 * (4 + ((r - g) / (max - min)))\n }\n }\n\n if (h < 0) h = h + 360\n\n const s = max === 0 ? 0 : (max - min) / max\n const hsv = [h, s, max]\n\n return { h: hsv[0], s: hsv[1], v: hsv[2], a: rgba.a }\n}\n\nexport function HSVAtoHSLA (hsva: HSVA): HSLA {\n const { h, s, v, a } = hsva\n\n const l = v - (v * s / 2)\n\n const sprime = l === 1 || l === 0 ? 0 : (v - l) / Math.min(l, 1 - l)\n\n return { h, s: sprime, l, a }\n}\n\nexport function HSLAtoHSVA (hsl: HSLA): HSVA {\n const { h, s, l, a } = hsl\n\n const v = l + s * Math.min(l, 1 - l)\n\n const sprime = v === 0 ? 0 : 2 - (2 * l / v)\n\n return { h, s: sprime, v, a }\n}\n\nexport function RGBAtoCSS (rgba: RGBA): string {\n return `rgba(${rgba.r}, ${rgba.g}, ${rgba.b}, ${rgba.a})`\n}\n\nexport function RGBtoCSS (rgba: RGBA): string {\n return RGBAtoCSS({ ...rgba, a: 1 })\n}\n\nexport function RGBAtoHex (rgba: RGBA): Hex {\n const toHex = (v: number) => {\n const h = Math.round(v).toString(16)\n return ('00'.substr(0, 2 - h.length) + h).toUpperCase()\n }\n\n return `#${[\n toHex(rgba.r),\n toHex(rgba.g),\n toHex(rgba.b),\n toHex(Math.round(rgba.a * 255)),\n ].join('')}`\n}\n\nexport function HexToRGBA (hex: Hex): RGBA {\n const rgba = chunk(hex.slice(1), 2).map((c: string) => parseInt(c, 16))\n\n return {\n r: rgba[0],\n g: rgba[1],\n b: rgba[2],\n a: Math.round((rgba[3] / 255) * 100) / 100,\n }\n}\n\nexport function HexToHSVA (hex: Hex): HSVA {\n const rgb = HexToRGBA(hex)\n return RGBAtoHSVA(rgb)\n}\n\nexport function HSVAtoHex (hsva: HSVA): Hex {\n return RGBAtoHex(HSVAtoRGBA(hsva))\n}\n\nexport function parseHex (hex: string): Hex {\n if (hex.startsWith('#')) {\n hex = hex.slice(1)\n }\n\n hex = hex.replace(/([^0-9a-f])/gi, 'F')\n\n if (hex.length === 3 || hex.length === 4) {\n hex = hex.split('').map(x => x + x).join('')\n }\n\n if (hex.length === 6) {\n hex = padEnd(hex, 8, 'F')\n } else {\n hex = padEnd(padEnd(hex, 6), 8, 'F')\n }\n\n return `#${hex}`.toUpperCase().substr(0, 9)\n}\n\nexport function parseGradient (\n gradient: string,\n colors: Record<string, Record<string, string>>,\n currentTheme: Partial<VuetifyThemeVariant>,\n) {\n return gradient.replace(/([a-z]+(\\s[a-z]+-[1-5])?)(?=$|,)/gi, x => {\n return classToHex(x, colors, currentTheme) || x\n }).replace(/(rgba\\()#[0-9a-f]+(?=,)/gi, x => {\n return 'rgba(' + Object.values(HexToRGBA(parseHex(x.replace(/rgba\\(/, '')))).slice(0, 3).join(',')\n })\n}\n\nexport function RGBtoInt (rgba: RGBA): ColorInt {\n return (rgba.r << 16) + (rgba.g << 8) + rgba.b\n}\n\n/**\n * Returns the contrast ratio (1-21) between two colors.\n *\n * @param c1 First color\n * @param c2 Second color\n */\nexport function contrastRatio (c1: RGBA, c2: RGBA): number {\n const [, y1] = toXYZ(RGBtoInt(c1))\n const [, y2] = toXYZ(RGBtoInt(c2))\n\n return (Math.max(y1, y2) + 0.05) / (Math.min(y1, y2) + 0.05)\n}\n","/* eslint-disable no-console */\nimport Vuetify from '../framework'\n\nfunction createMessage (message: string, vm?: any, parent?: any): string | void {\n if (Vuetify.config.silent) return\n\n if (parent) {\n vm = {\n _isVue: true,\n $parent: parent,\n $options: vm,\n }\n }\n\n if (vm) {\n // Only show each message once per instance\n vm.$_alreadyWarned = vm.$_alreadyWarned || []\n if (vm.$_alreadyWarned.includes(message)) return\n vm.$_alreadyWarned.push(message)\n }\n\n return `[Vuetify] ${message}` + (\n vm ? generateComponentTrace(vm) : ''\n )\n}\n\nexport function consoleInfo (message: string, vm?: any, parent?: any): void {\n const newMessage = createMessage(message, vm, parent)\n newMessage != null && console.info(newMessage)\n}\n\nexport function consoleWarn (message: string, vm?: any, parent?: any): void {\n const newMessage = createMessage(message, vm, parent)\n newMessage != null && console.warn(newMessage)\n}\n\nexport function consoleError (message: string, vm?: any, parent?: any): void {\n const newMessage = createMessage(message, vm, parent)\n newMessage != null && console.error(newMessage)\n}\n\nexport function deprecate (original: string, replacement: string, vm?: any, parent?: any) {\n consoleWarn(`[UPGRADE] '${original}' is deprecated, use '${replacement}' instead.`, vm, parent)\n}\nexport function breaking (original: string, replacement: string, vm?: any, parent?: any) {\n consoleError(`[BREAKING] '${original}' has been removed, use '${replacement}' instead. For more information, see the upgrade guide https://github.com/vuetifyjs/vuetify/releases/tag/v2.0.0#user-content-upgrade-guide`, vm, parent)\n}\nexport function removed (original: string, vm?: any, parent?: any) {\n consoleWarn(`[REMOVED] '${original}' has been removed. You can safely omit it.`, vm, parent)\n}\n\n/**\n * Shamelessly stolen from vuejs/vue/blob/dev/src/core/util/debug.js\n */\n\nconst classifyRE = /(?:^|[-_])(\\w)/g\nconst classify = (str: string) => str\n .replace(classifyRE, c => c.toUpperCase())\n .replace(/[-_]/g, '')\n\nfunction formatComponentName (vm: any, includeFile?: boolean): string {\n if (vm.$root === vm) {\n return '<Root>'\n }\n const options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm || {}\n let name = options.name || options._componentTag\n const file = options.__file\n if (!name && file) {\n const match = file.match(/([^/\\\\]+)\\.vue$/)\n name = match && match[1]\n }\n\n return (\n (name ? `<${classify(name)}>` : `<Anonymous>`) +\n (file && includeFile !== false ? ` at ${file}` : '')\n )\n}\n\nfunction generateComponentTrace (vm: any): string {\n if (vm._isVue && vm.$parent) {\n const tree: any[] = []\n let currentRecursiveSequence = 0\n while (vm) {\n if (tree.length > 0) {\n const last: any = tree[tree.length - 1]\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++\n vm = vm.$parent\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence]\n currentRecursiveSequence = 0\n }\n }\n tree.push(vm)\n vm = vm.$parent\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map((vm, i) => `${\n i === 0 ? '---> ' : ' '.repeat(5 + i * 2)\n }${\n Array.isArray(vm)\n ? `${formatComponentName(vm[0])}... (${vm[1]} recursive calls)`\n : formatComponentName(vm)\n }`)\n .join('\\n')\n } else {\n return `\\n\\n(found in ${formatComponentName(vm)})`\n }\n}\n","/**\n * Returns:\n * - 'null' if the node is not attached to the DOM\n * - the root node (HTMLDocument | ShadowRoot) otherwise\n */\nexport function attachedRoot (node: Node): null | HTMLDocument | ShadowRoot {\n /* istanbul ignore next */\n if (typeof node.getRootNode !== 'function') {\n // Shadow DOM not supported (IE11), lets find the root of this node\n while (node.parentNode) node = node.parentNode\n\n // The root parent is the document if the node is attached to the DOM\n if (node !== document) return null\n\n return document\n }\n\n const root = node.getRootNode()\n\n // The composed root node is the document if the node is attached to the DOM\n if (root !== document && root.getRootNode({ composed: true }) !== document) return null\n\n return root as HTMLDocument | ShadowRoot\n}\n","import Vue from 'vue'\nimport { VNode, VNodeDirective } from 'vue/types'\nimport { VuetifyIcon } from 'vuetify/types/services/icons'\nimport { DataTableCompareFunction, SelectItemKey, ItemGroup } from 'vuetify/types'\n\nexport function createSimpleFunctional (\n c: string,\n el = 'div',\n name?: string\n) {\n return Vue.extend({\n name: name || c.replace(/__/g, '-'),\n\n functional: true,\n\n props: {\n tag: {\n type: String,\n default: el,\n },\n },\n\n render (h, { data, props, children }): VNode {\n data.staticClass = (`${c} ${data.staticClass || ''}`).trim()\n\n return h(props.tag, data, children)\n },\n })\n}\n\nexport type BindingConfig = Pick<VNodeDirective, 'arg' | 'modifiers' | 'value'>\nexport function directiveConfig (binding: BindingConfig, defaults = {}): VNodeDirective {\n return {\n ...defaults,\n ...binding.modifiers,\n value: binding.arg,\n ...(binding.value || {}),\n }\n}\n\nexport function addOnceEventListener (\n el: EventTarget,\n eventName: string,\n cb: (event: Event) => void,\n options: boolean | AddEventListenerOptions = false\n): void {\n const once = (event: Event) => {\n cb(event)\n el.removeEventListener(eventName, once, options)\n }\n\n el.addEventListener(eventName, once, options)\n}\n\nlet passiveSupported = false\ntry {\n if (typeof window !== 'undefined') {\n const testListenerOpts = Object.defineProperty({}, 'passive', {\n get: () => {\n passiveSupported = true\n },\n })\n\n window.addEventListener('testListener', testListenerOpts, testListenerOpts)\n window.removeEventListener('testListener', testListenerOpts, testListenerOpts)\n }\n} catch (e) { console.warn(e) } /* eslint-disable-line no-console */\nexport { passiveSupported }\n\nexport function addPassiveEventListener (\n el: EventTarget,\n event: string,\n cb: EventHandlerNonNull | (() => void),\n options: {}\n): void {\n el.addEventListener(event, cb, passiveSupported ? options : false)\n}\n\nexport function getNestedValue (obj: any, path: (string | number)[], fallback?: any): any {\n const last = path.length - 1\n\n if (last < 0) return obj === undefined ? fallback : obj\n\n for (let i = 0; i < last; i++) {\n if (obj == null) {\n return fallback\n }\n obj = obj[path[i]]\n }\n\n if (obj == null) return fallback\n\n return obj[path[last]] === undefined ? fallback : obj[path[last]]\n}\n\nexport function deepEqual (a: any, b: any): boolean {\n if (a === b) return true\n\n if (\n a instanceof Date &&\n b instanceof Date &&\n a.getTime() !== b.getTime()\n ) {\n // If the values are Date, compare them as timestamps\n return false\n }\n\n if (a !== Object(a) || b !== Object(b)) {\n // If the values aren't objects, they were already checked for equality\n return false\n }\n\n const props = Object.keys(a)\n\n if (props.length !== Object.keys(b).length) {\n // Different number of props, don't bother to check\n return false\n }\n\n return props.every(p => deepEqual(a[p], b[p]))\n}\n\nexport function getObjectValueByPath (obj: any, path: string, fallback?: any): any {\n // credit: http://stackoverflow.com/questions/6491463/accessing-nested-javascript-objects-with-string-key#comment55278413_6491621\n if (obj == null || !path || typeof path !== 'string') return fallback\n if (obj[path] !== undefined) return obj[path]\n path = path.replace(/\\[(\\w+)\\]/g, '.$1') // convert indexes to properties\n path = path.replace(/^\\./, '') // strip a leading dot\n return getNestedValue(obj, path.split('.'), fallback)\n}\n\nexport function getPropertyFromItem (\n item: object,\n property: SelectItemKey,\n fallback?: any\n): any {\n if (property == null) return item === undefined ? fallback : item\n\n if (item !== Object(item)) return fallback === undefined ? item : fallback\n\n if (typeof property === 'string') return getObjectValueByPath(item, property, fallback)\n\n if (Array.isArray(property)) return getNestedValue(item, property, fallback)\n\n if (typeof property !== 'function') return fallback\n\n const value = property(item, fallback)\n\n return typeof value === 'undefined' ? fallback : value\n}\n\nexport function createRange (length: number): number[] {\n return Array.from({ length }, (v, k) => k)\n}\n\nexport function getZIndex (el?: Element | null): number {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return 0\n\n const index = +window.getComputedStyle(el).getPropertyValue('z-index')\n\n if (!index) return getZIndex(el.parentNode as Element)\n return index\n}\n\nconst tagsToReplace = {\n '&': '&',\n '<': '<',\n '>': '>',\n} as any\n\nexport function escapeHTML (str: string): string {\n return str.replace(/[&<>]/g, tag => tagsToReplace[tag] || tag)\n}\n\nexport function filterObjectOnKeys<T, K extends keyof T> (obj: T, keys: K[]): { [N in K]: T[N] } {\n const filtered = {} as { [N in K]: T[N] }\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n if (typeof obj[key] !== 'undefined') {\n filtered[key] = obj[key]\n }\n }\n\n return filtered\n}\n\nexport function convertToUnit (str: string | number | null | undefined, unit = 'px'): string | undefined {\n if (str == null || str === '') {\n return undefined\n } else if (isNaN(+str!)) {\n return String(str)\n } else {\n return `${Number(str)}${unit}`\n }\n}\n\nexport function kebabCase (str: string): string {\n return (str || '').replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase()\n}\n\nexport function isObject (obj: any): obj is object {\n return obj !== null && typeof obj === 'object'\n}\n\n// KeyboardEvent.keyCode aliases\nexport const keyCodes = Object.freeze({\n enter: 13,\n tab: 9,\n delete: 46,\n esc: 27,\n space: 32,\n up: 38,\n down: 40,\n left: 37,\n right: 39,\n end: 35,\n home: 36,\n del: 46,\n backspace: 8,\n insert: 45,\n pageup: 33,\n pagedown: 34,\n shift: 16,\n})\n\n/**\n * This remaps internal names like '$cancel' or '$vuetify.icons.cancel'\n * to the current name or component for that icon.\n */\nexport function remapInternalIcon (vm: Vue, iconName: string): VuetifyIcon {\n // Look for custom component in the configuration\n const component = vm.$vuetify.icons.component\n\n // Look for overrides\n if (iconName.startsWith('$')) {\n // Get the target icon name\n const iconPath = `$vuetify.icons.values.${iconName.split('$').pop()!.split('.').pop()}`\n\n // Now look up icon indirection name,\n // e.g. '$vuetify.icons.values.cancel'\n const override = getObjectValueByPath(vm, iconPath, iconName)\n\n if (typeof override === 'string') iconName = override\n else return override\n }\n\n if (component == null) {\n return iconName\n }\n\n return {\n component,\n props: {\n icon: iconName,\n },\n }\n}\n\nexport function keys<O> (o: O) {\n return Object.keys(o) as (keyof O)[]\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nconst camelizeRE = /-(\\w)/g\nexport const camelize = (str: string): string => {\n return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '')\n}\n\n/**\n * Returns the set difference of B and A, i.e. the set of elements in B but not in A\n */\nexport function arrayDiff (a: any[], b: any[]): any[] {\n const diff: any[] = []\n for (let i = 0; i < b.length; i++) {\n if (a.indexOf(b[i]) < 0) diff.push(b[i])\n }\n return diff\n}\n\n/**\n * Makes the first character of a string uppercase\n */\nexport function upperFirst (str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport function groupItems<T extends any = any> (\n items: T[],\n groupBy: string[],\n groupDesc: boolean[]\n): ItemGroup<T>[] {\n const key = groupBy[0]\n const groups: ItemGroup<T>[] = []\n let current\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n const val = getObjectValueByPath(item, key, null)\n if (current !== val) {\n current = val\n groups.push({\n name: val ?? '',\n items: [],\n })\n }\n groups[groups.length - 1].items.push(item)\n }\n return groups\n}\n\nexport function wrapInArray<T> (v: T | T[] | null | undefined): T[] { return v != null ? Array.isArray(v) ? v : [v] : [] }\n\nexport function sortItems<T extends any = any> (\n items: T[],\n sortBy: string[],\n sortDesc: boolean[],\n locale: string,\n customSorters?: Record<string, DataTableCompareFunction<T>>\n): T[] {\n if (sortBy === null || !sortBy.length) return items\n const stringCollator = new Intl.Collator(locale, { sensitivity: 'accent', usage: 'sort' })\n\n return items.sort((a, b) => {\n for (let i = 0; i < sortBy.length; i++) {\n const sortKey = sortBy[i]\n\n let sortA = getObjectValueByPath(a, sortKey)\n let sortB = getObjectValueByPath(b, sortKey)\n\n if (sortDesc[i]) {\n [sortA, sortB] = [sortB, sortA]\n }\n\n if (customSorters && customSorters[sortKey]) {\n const customResult = customSorters[sortKey](sortA, sortB)\n\n if (!customResult) continue\n\n return customResult\n }\n\n // Check if both cannot be evaluated\n if (sortA === null && sortB === null) {\n continue\n }\n\n // Dates should be compared numerically\n if (sortA instanceof Date && sortB instanceof Date) {\n return sortA.getTime() - sortB.getTime()\n }\n\n [sortA, sortB] = [sortA, sortB].map(s => (s || '').toString().toLocaleLowerCase())\n\n if (sortA !== sortB) {\n if (!isNaN(sortA) && !isNaN(sortB)) return Number(sortA) - Number(sortB)\n return stringCollator.compare(sortA, sortB)\n }\n }\n\n return 0\n })\n}\n\nexport function defaultFilter (value: any, search: string | null, item: any) {\n return value != null &&\n search != null &&\n typeof value !== 'boolean' &&\n value.toString().toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) !== -1\n}\n\nexport function searchItems<T extends any = any> (items: T[], search: string): T[] {\n if (!search) return items\n search = search.toString().toLowerCase()\n if (search.trim() === '') return items\n\n return items.filter((item: any) => Object.keys(item).some(key => defaultFilter(getObjectValueByPath(item, key), search, item)))\n}\n\n/**\n * Returns:\n * - 'normal' for old style slots - `<template slot=\"default\">`\n * - 'scoped' for old style scoped slots (`<template slot=\"default\" slot-scope=\"data\">`) or bound v-slot (`#default=\"data\"`)\n * - 'v-slot' for unbound v-slot (`#default`) - only if the third param is true, otherwise counts as scoped\n */\nexport function getSlotType<T extends boolean = false> (vm: Vue, name: string, split?: T): (T extends true ? 'v-slot' : never) | 'normal' | 'scoped' | void {\n if (vm.$slots.hasOwnProperty(name) && vm.$scopedSlots.hasOwnProperty(name) && (vm.$scopedSlots[name] as any).name) {\n return split ? 'v-slot' as any : 'scoped'\n }\n if (vm.$slots.hasOwnProperty(name)) return 'normal'\n if (vm.$scopedSlots.hasOwnProperty(name)) return 'scoped'\n}\n\nexport function debounce (fn: Function, delay: number) {\n let timeoutId = 0 as any\n return (...args: any[]) => {\n clearTimeout(timeoutId)\n timeoutId = setTimeout(() => fn(...args), delay)\n }\n}\n\nexport function throttle<T extends (...args: any[]) => any> (fn: T, limit: number) {\n let throttling = false\n return (...args: Parameters<T>): void | ReturnType<T> => {\n if (!throttling) {\n throttling = true\n setTimeout(() => throttling = false, limit)\n return fn(...args)\n }\n }\n}\n\nexport function getPrefixedScopedSlots (prefix: string, scopedSlots: any) {\n return Object.keys(scopedSlots).filter(k => k.startsWith(prefix)).reduce((obj: any, k: string) => {\n obj[k.replace(prefix, '')] = scopedSlots[k]\n return obj\n }, {})\n}\n\nexport function getSlot (vm: Vue, name = 'default', data?: object | (() => object), optional = false) {\n if (vm.$scopedSlots.hasOwnProperty(name)) {\n return vm.$scopedSlots[name]!(data instanceof Function ? data() : data)\n } else if (vm.$slots.hasOwnProperty(name) && (!data || optional)) {\n return vm.$slots[name]\n }\n return undefined\n}\n\nexport function clamp (value: number, min = 0, max = 1) {\n return Math.max(min, Math.min(max, value))\n}\n\nexport function padEnd (str: string, length: number, char = '0') {\n return str + char.repeat(Math.max(0, length - str.length))\n}\n\nexport function chunk (str: string, size = 1) {\n const chunked: string[] = []\n let index = 0\n while (index < str.length) {\n chunked.push(str.substr(index, size))\n index += size\n }\n return chunked\n}\n\nexport function humanReadableFileSize (bytes: number, binary = false): string {\n const base = binary ? 1024 : 1000\n if (bytes < base) {\n return `${bytes} B`\n }\n\n const prefix = binary ? ['Ki', 'Mi', 'Gi'] : ['k', 'M', 'G']\n let unit = -1\n while (Math.abs(bytes) >= base && unit < prefix.length - 1) {\n bytes /= base\n ++unit\n }\n return `${bytes.toFixed(1)} ${prefix[unit]}B`\n}\n\nexport function camelizeObjectKeys (obj: Record<string, any> | null | undefined) {\n if (!obj) return {}\n\n return Object.keys(obj).reduce((o: any, key: string) => {\n o[camelize(key)] = obj[key]\n return o\n }, {})\n}\n\nexport function mergeDeep (\n source: Dictionary<any> = {},\n target: Dictionary<any> = {}\n) {\n for (const key in target) {\n const sourceProperty = source[key]\n const targetProperty = target[key]\n\n // Only continue deep merging if\n // both properties are objects\n if (\n isObject(sourceProperty) &&\n isObject(targetProperty)\n ) {\n source[key] = mergeDeep(sourceProperty, targetProperty)\n\n continue\n }\n\n source[key] = targetProperty\n }\n\n return source\n}\n\nexport function fillArray<T> (length: number, obj: T) {\n return Array(length).fill(obj)\n}\n\n/** Polyfill for Event.prototype.composedPath */\nexport function composedPath (e: Event): EventTarget[] {\n if (e.composedPath) return e.composedPath()\n\n const path = []\n let el = e.target as Element\n\n while (el) {\n path.push(el)\n\n if (el.tagName === 'HTML') {\n path.push(document)\n path.push(window)\n\n return path\n }\n\n el = el.parentElement!\n }\n return path\n}\n","/**\n * @copyright 2017 Alex Regan\n * @license MIT\n * @see https://github.com/alexsasharegan/vue-functional-data-merge\n */\n/* eslint-disable max-statements */\nimport { VNodeData } from 'vue'\nimport { camelize, wrapInArray } from './helpers'\n\nconst pattern = {\n styleList: /;(?![^(]*\\))/g,\n styleProp: /:(.*)/,\n} as const\n\nfunction parseStyle (style: string) {\n const styleMap: Dictionary<any> = {}\n\n for (const s of style.split(pattern.styleList)) {\n let [key, val] = s.split(pattern.styleProp)\n key = key.trim()\n if (!key) {\n continue\n }\n // May be undefined if the `key: value` pair is incomplete.\n if (typeof val === 'string') {\n val = val.trim()\n }\n styleMap[camelize(key)] = val\n }\n\n return styleMap\n}\n\n/**\n * Intelligently merges data for createElement.\n * Merges arguments left to right, preferring the right argument.\n * Returns new VNodeData object.\n */\nexport default function mergeData (...vNodeData: VNodeData[]): VNodeData\nexport default function mergeData (): VNodeData {\n const mergeTarget: VNodeData & Dictionary<any> = {}\n let i: number = arguments.length\n let prop: string\n\n // Allow for variadic argument length.\n while (i--) {\n // Iterate through the data properties and execute merge strategies\n // Object.keys eliminates need for hasOwnProperty call\n for (prop of Object.keys(arguments[i])) {\n switch (prop) {\n // Array merge strategy (array concatenation)\n case 'class':\n case 'directives':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeClasses(mergeTarget[prop], arguments[i][prop])\n }\n break\n case 'style':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeStyles(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Space delimited string concatenation strategy\n case 'staticClass':\n if (!arguments[i][prop]) {\n break\n }\n if (mergeTarget[prop] === undefined) {\n mergeTarget[prop] = ''\n }\n if (mergeTarget[prop]) {\n // Not an empty string, so concatenate\n mergeTarget[prop] += ' '\n }\n mergeTarget[prop] += arguments[i][prop].trim()\n break\n // Object, the properties of which to merge via array merge strategy (array concatenation).\n // Callback merge strategy merges callbacks to the beginning of the array,\n // so that the last defined callback will be invoked first.\n // This is done since to mimic how Object.assign merging\n // uses the last given value to assign.\n case 'on':\n case 'nativeOn':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeListeners(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Object merge strategy\n case 'attrs':\n case 'props':\n case 'domProps':\n case 'scopedSlots':\n case 'staticStyle':\n case 'hook':\n case 'transition':\n if (!arguments[i][prop]) {\n break\n }\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = {}\n }\n mergeTarget[prop] = { ...arguments[i][prop], ...mergeTarget[prop] }\n break\n // Reassignment strategy (no merge)\n default: // slot, key, ref, tag, show, keepAlive\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = arguments[i][prop]\n }\n }\n }\n }\n\n return mergeTarget\n}\n\nexport function mergeStyles (\n target: undefined | string | object[] | object,\n source: undefined | string | object[] | object\n) {\n if (!target) return source\n if (!source) return target\n\n target = wrapInArray(typeof target === 'string' ? parseStyle(target) : target)\n\n return (target as object[]).concat(typeof source === 'string' ? parseStyle(source) : source)\n}\n\nexport function mergeClasses (target: any, source: any) {\n if (!source) return target\n if (!target) return source\n\n return target ? wrapInArray(target).concat(source) : source\n}\n\nexport function mergeListeners (...args: [\n { [key: string]: Function | Function[] } | undefined,\n { [key: string]: Function | Function[] } | undefined\n]) {\n if (!args[0]) return args[1]\n if (!args[1]) return args[0]\n\n const dest: { [key: string]: Function | Function[] } = {}\n\n for (let i = 2; i--;) {\n const arg = args[i]\n for (const event in arg) {\n if (!arg[event]) continue\n\n if (dest[event]) {\n // Merge current listeners before (because we are iterating backwards).\n // Note that neither \"target\" or \"source\" must be altered.\n dest[event] = ([] as Function[]).concat(arg[event], dest[event])\n } else {\n // Straight assign.\n dest[event] = arg[event]\n }\n }\n }\n\n return dest\n}\n","/* eslint-disable max-len, import/export, no-use-before-define */\nimport Vue, { VueConstructor } from 'vue'\n\nexport default function mixins<T extends VueConstructor[]> (...args: T): ExtractVue<T> extends infer V ? V extends Vue ? VueConstructor<V> : never : never\nexport default function mixins<T extends Vue> (...args: VueConstructor[]): VueConstructor<T>\nexport default function mixins (...args: VueConstructor[]): VueConstructor {\n return Vue.extend({ mixins: args })\n}\n\n/**\n * Returns the instance type from a VueConstructor\n * Useful for adding types when using mixins().extend()\n */\nexport type ExtractVue<T extends VueConstructor | VueConstructor[]> = T extends (infer U)[]\n ? UnionToIntersection<\n U extends VueConstructor<infer V> ? V : never\n >\n : T extends VueConstructor<infer V> ? V : never\n\ntype UnionToIntersection<U> =\n (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never\n","/**\n * vee-validate v3.4.14\n * (c) 2021 Abdelrahman Awad\n * @license MIT\n */\n/**\r\n * Some Alpha Regex helpers.\r\n * https://github.com/chriso/validator.js/blob/master/src/lib/alpha.js\r\n */\r\n/* eslint-disable no-misleading-character-class */\r\nvar alpha$1 = {\r\n en: /^[A-Z]*$/i,\r\n cs: /^[A-ZÃČĎÉĚÃŇÓŘŠŤÚŮÃŽ]*$/i,\r\n da: /^[A-ZÆØÅ]*$/i,\r\n de: /^[A-ZÄÖÜß]*$/i,\r\n es: /^[A-ZÃÉÃÑÓÚÜ]*$/i,\r\n fa: /^[ءآأؤإئابةتثجØخدذرزسشصضطظعغÙقكلمنهوىيًٌÙÙŽÙÙّْٰپژگچکی]*$/,\r\n fr: /^[A-ZÀÂÆÇÉÈÊËÃÎÔŒÙÛÜŸ]*$/i,\r\n it: /^[A-Z\\xC0-\\xFF]*$/i,\r\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ]*$/i,\r\n nl: /^[A-ZÉËÃÓÖÜ]*$/i,\r\n hu: /^[A-ZÃÉÃÓÖÅÚÜŰ]*$/i,\r\n pl: /^[A-ZĄĆĘŚÅŃÓŻŹ]*$/i,\r\n pt: /^[A-ZÃÃÀÂÇÉÊÃÕÓÔÚÜ]*$/i,\r\n ro: /^[A-ZĂÂÎŞŢ]*$/i,\r\n ru: /^[Ð-ЯÐ]*$/i,\r\n sk: /^[A-ZÃÄČĎÉÃĹĽŇÓŔŠŤÚÃŽ]*$/i,\r\n sr: /^[A-ZČĆŽŠÄ]*$/i,\r\n sv: /^[A-ZÅÄÖ]*$/i,\r\n tr: /^[A-ZÇĞİıÖŞÜ]*$/i,\r\n uk: /^[Ð-ЩЬЮЯЄІЇÒ]*$/i,\r\n ar: /^[ءآأؤإئابةتثجØخدذرزسشصضطظعغÙقكلمنهوىيًٌÙÙŽÙÙّْٰ]*$/,\r\n az: /^[A-ZÇÆĞİıÖŞÜ]*$/i,\r\n el: /^[Α-ÏŽ]*$/i,\r\n ja: /^[A-Z\\u3000-\\u303F\\u3040-\\u309F\\u30A0-\\u30FF\\uFF00-\\uFFEF\\u4E00-\\u9FAF]*$/i,\r\n he: /^[A-Z\\u05D0-\\u05EA']*$/i\r\n};\r\nvar alphaSpaces = {\r\n en: /^[A-Z\\s]*$/i,\r\n cs: /^[A-ZÃČĎÉĚÃŇÓŘŠŤÚŮÃŽ\\s]*$/i,\r\n da: /^[A-ZÆØÅ\\s]*$/i,\r\n de: /^[A-ZÄÖÜß\\s]*$/i,\r\n es: /^[A-ZÃÉÃÑÓÚÜ\\s]*$/i,\r\n fa: /^[ءآأؤإئابةتثجØخدذرزسشصضطظعغÙقكلمنهوىيًٌÙÙŽÙÙّْٰپژگچکی]*$/,\r\n fr: /^[A-ZÀÂÆÇÉÈÊËÃÎÔŒÙÛÜŸ\\s]*$/i,\r\n it: /^[A-Z\\xC0-\\xFF\\s]*$/i,\r\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ\\s]*$/i,\r\n nl: /^[A-ZÉËÃÓÖÜ\\s]*$/i,\r\n hu: /^[A-ZÃÉÃÓÖÅÚÜŰ\\s]*$/i,\r\n pl: /^[A-ZĄĆĘŚÅŃÓŻŹ\\s]*$/i,\r\n pt: /^[A-ZÃÃÀÂÇÉÊÃÕÓÔÚÜ\\s]*$/i,\r\n ro: /^[A-ZĂÂÎŞŢ\\s]*$/i,\r\n ru: /^[Ð-ЯÐ\\s]*$/i,\r\n sk: /^[A-ZÃÄČĎÉÃĹĽŇÓŔŠŤÚÃŽ\\s]*$/i,\r\n sr: /^[A-ZČĆŽŠÄ\\s]*$/i,\r\n sv: /^[A-ZÅÄÖ\\s]*$/i,\r\n tr: /^[A-ZÇĞİıÖŞÜ\\s]*$/i,\r\n uk: /^[Ð-ЩЬЮЯЄІЇÒ\\s]*$/i,\r\n ar: /^[ءآأؤإئابةتثجØخدذرزسشصضطظعغÙقكلمنهوىيًٌÙÙŽÙÙّْٰ\\s]*$/,\r\n az: /^[A-ZÇÆĞİıÖŞÜ\\s]*$/i,\r\n el: /^[Α-ÏŽ\\s]*$/i,\r\n ja: /^[A-Z\\u3000-\\u303F\\u3040-\\u309F\\u30A0-\\u30FF\\uFF00-\\uFFEF\\u4E00-\\u9FAF\\s]*$/i,\r\n he: /^[A-Z\\u05D0-\\u05EA'\\s]*$/i\r\n};\r\nvar alphanumeric = {\r\n en: /^[0-9A-Z]*$/i,\r\n cs: /^[0-9A-ZÃČĎÉĚÃŇÓŘŠŤÚŮÃŽ]*$/i,\r\n da: /^[0-9A-ZÆØÅ]$/i,\r\n de: /^[0-9A-ZÄÖÜß]*$/i,\r\n es: /^[0-9A-ZÃÉÃÑÓÚÜ]*$/i,\r\n fa: /^[ءآأؤإئابةتثجØخدذرزسشصضطظعغÙقكلمنهوىيًٌÙÙŽÙÙّْٰپژگچکی]*$/,\r\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÃÎÔŒÙÛÜŸ]*$/i,\r\n it: /^[0-9A-Z\\xC0-\\xFF]*$/i,\r\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ]*$/i,\r\n hu: /^[0-9A-ZÃÉÃÓÖÅÚÜŰ]*$/i,\r\n nl: /^[0-9A-ZÉËÃÓÖÜ]*$/i,\r\n pl: /^[0-9A-ZĄĆĘŚÅŃÓŻŹ]*$/i,\r\n pt: /^[0-9A-ZÃÃÀÂÇÉÊÃÕÓÔÚÜ]*$/i,\r\n ro: /^[0-9A-ZĂÂÎŞŢ]*$/i,\r\n ru: /^[0-9Ð-ЯÐ]*$/i,\r\n sk: /^[0-9A-ZÃÄČĎÉÃĹĽŇÓŔŠŤÚÃŽ]*$/i,\r\n sr: /^[0-9A-ZČĆŽŠÄ]*$/i,\r\n sv: /^[0-9A-ZÅÄÖ]*$/i,\r\n tr: /^[0-9A-ZÇĞİıÖŞÜ]*$/i,\r\n uk: /^[0-9Ð-ЩЬЮЯЄІЇÒ]*$/i,\r\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجØخدذرزسشصضطظعغÙقكلمنهوىيًٌÙÙŽÙÙّْٰ]*$/,\r\n az: /^[0-9A-ZÇÆĞİıÖŞÜ]*$/i,\r\n el: /^[0-9Α-ÏŽ]*$/i,\r\n ja: /^[0-9A-Z\\u3000-\\u303F\\u3040-\\u309F\\u30A0-\\u30FF\\uFF00-\\uFFEF\\u4E00-\\u9FAF]*$/i,\r\n he: /^[0-9A-Z\\u05D0-\\u05EA']*$/i\r\n};\r\nvar alphaDash = {\r\n en: /^[0-9A-Z_-]*$/i,\r\n cs: /^[0-9A-ZÃČĎÉĚÃŇÓŘŠŤÚŮÃŽ_-]*$/i,\r\n da: /^[0-9A-ZÆØÅ_-]*$/i,\r\n de: /^[0-9A-ZÄÖÜß_-]*$/i,\r\n es: /^[0-9A-ZÃÉÃÑÓÚÜ_-]*$/i,\r\n fa: /^[ءآأؤإئابةتثجØخدذرزسشصضطظعغÙقكلمنهوىيًٌÙÙŽÙÙّْٰپژگچکی]*$/,\r\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÃÎÔŒÙÛÜŸ_-]*$/i,\r\n it: /^[0-9A-Z\\xC0-\\xFF_-]*$/i,\r\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ_-]*$/i,\r\n nl: /^[0-9A-ZÉËÃÓÖÜ_-]*$/i,\r\n hu: /^[0-9A-ZÃÉÃÓÖÅÚÜŰ_-]*$/i,\r\n pl: /^[0-9A-ZĄĆĘŚÅŃÓŻŹ_-]*$/i,\r\n pt: /^[0-9A-ZÃÃÀÂÇÉÊÃÕÓÔÚÜ_-]*$/i,\r\n ro: /^[0-9A-ZĂÂÎŞŢ_-]*$/i,\r\n ru: /^[0-9Ð-ЯÐ_-]*$/i,\r\n sk: /^[0-9A-ZÃÄČĎÉÃĹĽŇÓŔŠŤÚÃŽ_-]*$/i,\r\n sr: /^[0-9A-ZČĆŽŠÄ_-]*$/i,\r\n sv: /^[0-9A-ZÅÄÖ_-]*$/i,\r\n tr: /^[0-9A-ZÇĞİıÖŞÜ_-]*$/i,\r\n uk: /^[0-9Ð-ЩЬЮЯЄІЇÒ_-]*$/i,\r\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجØخدذرزسشصضطظعغÙقكلمنهوىيًٌÙÙŽÙÙّْٰ_-]*$/,\r\n az: /^[0-9A-ZÇÆĞİıÖŞÜ_-]*$/i,\r\n el: /^[0-9Α-ÏŽ_-]*$/i,\r\n ja: /^[0-9A-Z\\u3000-\\u303F\\u3040-\\u309F\\u30A0-\\u30FF\\uFF00-\\uFFEF\\u4E00-\\u9FAF_-]*$/i,\r\n he: /^[0-9A-Z\\u05D0-\\u05EA'_-]*$/i\r\n};\n\nvar validate$r = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$r(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alpha$1).some(function (loc) { return alpha$1[loc].test(value); });\r\n }\r\n return (alpha$1[locale] || alpha$1.en).test(value);\r\n};\r\nvar params$k = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha = {\r\n validate: validate$r,\r\n params: params$k\r\n};\n\nvar validate$q = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$q(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alphaDash).some(function (loc) { return alphaDash[loc].test(value); });\r\n }\r\n return (alphaDash[locale] || alphaDash.en).test(value);\r\n};\r\nvar params$j = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha_dash = {\r\n validate: validate$q,\r\n params: params$j\r\n};\n\nvar validate$p = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$p(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alphanumeric).some(function (loc) { return alphanumeric[loc].test(value); });\r\n }\r\n return (alphanumeric[locale] || alphanumeric.en).test(value);\r\n};\r\nvar params$i = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha_num = {\r\n validate: validate$p,\r\n params: params$i\r\n};\n\nvar validate$o = function (value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$o(val, { locale: locale }); });\r\n }\r\n // Match at least one locale.\r\n if (!locale) {\r\n return Object.keys(alphaSpaces).some(function (loc) { return alphaSpaces[loc].test(value); });\r\n }\r\n return (alphaSpaces[locale] || alphaSpaces.en).test(value);\r\n};\r\nvar params$h = [\r\n {\r\n name: 'locale'\r\n }\r\n];\r\nvar alpha_spaces = {\r\n validate: validate$o,\r\n params: params$h\r\n};\n\nvar validate$n = function (value, _a) {\r\n var _b = _a === void 0 ? {} : _a, min = _b.min, max = _b.max;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return !!validate$n(val, { min: min, max: max }); });\r\n }\r\n return Number(min) <= value && Number(max) >= value;\r\n};\r\nvar params$g = [\r\n {\r\n name: 'min'\r\n },\r\n {\r\n name: 'max'\r\n }\r\n];\r\nvar between = {\r\n validate: validate$n,\r\n params: params$g\r\n};\n\nvar validate$m = function (value, _a) {\r\n var target = _a.target;\r\n return String(value) === String(target);\r\n};\r\nvar params$f = [\r\n {\r\n name: 'target',\r\n isTarget: true\r\n }\r\n];\r\nvar confirmed = {\r\n validate: validate$m,\r\n params: params$f\r\n};\n\nvar validate$l = function (value, _a) {\r\n var length = _a.length;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$l(val, { length: length }); });\r\n }\r\n var strVal = String(value);\r\n return /^[0-9]*$/.test(strVal) && strVal.length === length;\r\n};\r\nvar params$e = [\r\n {\r\n name: 'length',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar digits = {\r\n validate: validate$l,\r\n params: params$e\r\n};\n\nvar validateImage = function (file, width, height) {\r\n var URL = window.URL || window.webkitURL;\r\n return new Promise(function (resolve) {\r\n var image = new Image();\r\n image.onerror = function () { return resolve(false); };\r\n image.onload = function () { return resolve(image.width === width && image.height === height); };\r\n image.src = URL.createObjectURL(file);\r\n });\r\n};\r\nvar validate$k = function (files, _a) {\r\n var width = _a.width, height = _a.height;\r\n var list = [];\r\n files = Array.isArray(files) ? files : [files];\r\n for (var i = 0; i < files.length; i++) {\r\n // if file is not an image, reject.\r\n if (!/\\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(files[i].name)) {\r\n return Promise.resolve(false);\r\n }\r\n list.push(files[i]);\r\n }\r\n return Promise.all(list.map(function (file) { return validateImage(file, width, height); })).then(function (values) {\r\n return values.every(function (v) { return v; });\r\n });\r\n};\r\nvar params$d = [\r\n {\r\n name: 'width',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n },\r\n {\r\n name: 'height',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar dimensions = {\r\n validate: validate$k,\r\n params: params$d\r\n};\n\nvar validate$j = function (value, _a) {\r\n var multiple = (_a === void 0 ? {} : _a).multiple;\r\n // eslint-disable-next-line\r\n var re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n if (multiple && !Array.isArray(value)) {\r\n value = String(value)\r\n .split(',')\r\n .map(function (emailStr) { return emailStr.trim(); });\r\n }\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return re.test(String(val)); });\r\n }\r\n return re.test(String(value));\r\n};\r\nvar params$c = [\r\n {\r\n name: 'multiple',\r\n default: false\r\n }\r\n];\r\nvar email = {\r\n validate: validate$j,\r\n params: params$c\r\n};\n\nfunction isNullOrUndefined(value) {\r\n return value === null || value === undefined;\r\n}\r\nfunction isEmptyArray(arr) {\r\n return Array.isArray(arr) && arr.length === 0;\r\n}\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction isCallable(fn) {\r\n return typeof fn === 'function';\r\n}\n\nfunction includes(collection, item) {\r\n return collection.indexOf(item) !== -1;\r\n}\r\n/**\r\n * Converts an array-like object to array, provides a simple polyfill for Array.from\r\n */\r\nfunction toArray(arrayLike) {\r\n if (isCallable(Array.from)) {\r\n return Array.from(arrayLike);\r\n }\r\n /* istanbul ignore next */\r\n return _copyArray(arrayLike);\r\n}\r\n/* istanbul ignore next */\r\nfunction _copyArray(arrayLike) {\r\n var array = [];\r\n var length = arrayLike.length;\r\n for (var i = 0; i < length; i++) {\r\n array.push(arrayLike[i]);\r\n }\r\n return array;\r\n}\n\nvar validate$i = function (value, options) {\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$i(val, options); });\r\n }\r\n return toArray(options).some(function (item) {\r\n // eslint-disable-next-line\r\n return item == value;\r\n });\r\n};\r\nvar oneOf = {\r\n validate: validate$i\r\n};\n\nvar validate$h = function (value, args) {\r\n return !validate$i(value, args);\r\n};\r\nvar excluded = {\r\n validate: validate$h\r\n};\n\nvar validate$g = function (files, extensions) {\r\n var regex = new RegExp(\".(\" + extensions.join('|') + \")$\", 'i');\r\n if (Array.isArray(files)) {\r\n return files.every(function (file) { return regex.test(file.name); });\r\n }\r\n return regex.test(files.name);\r\n};\r\nvar ext = {\r\n validate: validate$g\r\n};\n\nvar validate$f = function (files) {\r\n var regex = /\\.(jpg|svg|jpeg|png|bmp|gif|webp)$/i;\r\n if (Array.isArray(files)) {\r\n return files.every(function (file) { return regex.test(file.name); });\r\n }\r\n return regex.test(files.name);\r\n};\r\nvar image = {\r\n validate: validate$f\r\n};\n\nvar validate$e = function (value) {\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return /^-?[0-9]+$/.test(String(val)); });\r\n }\r\n return /^-?[0-9]+$/.test(String(value));\r\n};\r\nvar integer = {\r\n validate: validate$e\r\n};\n\nvar validate$d = function (value, _a) {\r\n var other = _a.other;\r\n return value === other;\r\n};\r\nvar params$b = [\r\n {\r\n name: 'other'\r\n }\r\n];\r\nvar is = {\r\n validate: validate$d,\r\n params: params$b\r\n};\n\nvar validate$c = function (value, _a) {\r\n var other = _a.other;\r\n return value !== other;\r\n};\r\nvar params$a = [\r\n {\r\n name: 'other'\r\n }\r\n];\r\nvar is_not = {\r\n validate: validate$c,\r\n params: params$a\r\n};\n\nvar validate$b = function (value, _a) {\r\n var length = _a.length;\r\n if (isNullOrUndefined(value)) {\r\n return false;\r\n }\r\n if (typeof value === 'string') {\r\n value = toArray(value);\r\n }\r\n if (typeof value === 'number') {\r\n value = String(value);\r\n }\r\n if (!value.length) {\r\n value = toArray(value);\r\n }\r\n return value.length === length;\r\n};\r\nvar params$9 = [\r\n {\r\n name: 'length',\r\n cast: function (value) { return Number(value); }\r\n }\r\n];\r\nvar length = {\r\n validate: validate$b,\r\n params: params$9\r\n};\n\nvar validate$a = function (value, _a) {\r\n var length = _a.length;\r\n if (isNullOrUndefined(value)) {\r\n return length >= 0;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$a(val, { length: length }); });\r\n }\r\n return String(value).length <= length;\r\n};\r\nvar params$8 = [\r\n {\r\n name: 'length',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar max = {\r\n validate: validate$a,\r\n params: params$8\r\n};\n\nvar validate$9 = function (value, _a) {\r\n var max = _a.max;\r\n if (isNullOrUndefined(value) || value === '') {\r\n return false;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.length > 0 && value.every(function (val) { return validate$9(val, { max: max }); });\r\n }\r\n return Number(value) <= max;\r\n};\r\nvar params$7 = [\r\n {\r\n name: 'max',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar max_value = {\r\n validate: validate$9,\r\n params: params$7\r\n};\n\nvar validate$8 = function (files, mimes) {\r\n var regex = new RegExp(mimes.join('|').replace('*', '.+') + \"$\", 'i');\r\n if (Array.isArray(files)) {\r\n return files.every(function (file) { return regex.test(file.type); });\r\n }\r\n return regex.test(files.type);\r\n};\r\nvar mimes = {\r\n validate: validate$8\r\n};\n\nvar validate$7 = function (value, _a) {\r\n var length = _a.length;\r\n if (isNullOrUndefined(value)) {\r\n return false;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$7(val, { length: length }); });\r\n }\r\n return String(value).length >= length;\r\n};\r\nvar params$6 = [\r\n {\r\n name: 'length',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar min = {\r\n validate: validate$7,\r\n params: params$6\r\n};\n\nvar validate$6 = function (value, _a) {\r\n var min = _a.min;\r\n if (isNullOrUndefined(value) || value === '') {\r\n return false;\r\n }\r\n if (Array.isArray(value)) {\r\n return value.length > 0 && value.every(function (val) { return validate$6(val, { min: min }); });\r\n }\r\n return Number(value) >= min;\r\n};\r\nvar params$5 = [\r\n {\r\n name: 'min',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar min_value = {\r\n validate: validate$6,\r\n params: params$5\r\n};\n\nvar ar = /^[٠١٢٣٤٥٦٧٨٩]+$/;\r\nvar en = /^[0-9]+$/;\r\nvar validate$5 = function (value) {\r\n var testValue = function (val) {\r\n var strValue = String(val);\r\n return en.test(strValue) || ar.test(strValue);\r\n };\r\n if (Array.isArray(value)) {\r\n return value.every(testValue);\r\n }\r\n return testValue(value);\r\n};\r\nvar numeric = {\r\n validate: validate$5\r\n};\n\nvar validate$4 = function (value, _a) {\r\n var regex = _a.regex;\r\n if (Array.isArray(value)) {\r\n return value.every(function (val) { return validate$4(val, { regex: regex }); });\r\n }\r\n return regex.test(String(value));\r\n};\r\nvar params$4 = [\r\n {\r\n name: 'regex',\r\n cast: function (value) {\r\n if (typeof value === 'string') {\r\n return new RegExp(value);\r\n }\r\n return value;\r\n }\r\n }\r\n];\r\nvar regex = {\r\n validate: validate$4,\r\n params: params$4\r\n};\n\nvar validate$3 = function (value, _a) {\r\n var allowFalse = (_a === void 0 ? { allowFalse: true } : _a).allowFalse;\r\n var result = {\r\n valid: false,\r\n required: true\r\n };\r\n if (isNullOrUndefined(value) || isEmptyArray(value)) {\r\n return result;\r\n }\r\n // incase a field considers `false` as an empty value like checkboxes.\r\n if (value === false && !allowFalse) {\r\n return result;\r\n }\r\n result.valid = !!String(value).trim().length;\r\n return result;\r\n};\r\nvar computesRequired$1 = true;\r\nvar params$3 = [\r\n {\r\n name: 'allowFalse',\r\n default: true\r\n }\r\n];\r\nvar required = {\r\n validate: validate$3,\r\n params: params$3,\r\n computesRequired: computesRequired$1\r\n};\n\nvar testEmpty = function (value) {\r\n return isEmptyArray(value) || includes([false, null, undefined], value) || !String(value).trim().length;\r\n};\r\nvar validate$2 = function (value, _a) {\r\n var target = _a.target, values = _a.values;\r\n var required;\r\n if (values && values.length) {\r\n if (!Array.isArray(values) && typeof values === 'string') {\r\n values = [values];\r\n }\r\n // eslint-disable-next-line\r\n required = values.some(function (val) { return val == String(target).trim(); });\r\n }\r\n else {\r\n required = !testEmpty(target);\r\n }\r\n if (!required) {\r\n return {\r\n valid: true,\r\n required: required\r\n };\r\n }\r\n return {\r\n valid: !testEmpty(value),\r\n required: required\r\n };\r\n};\r\nvar params$2 = [\r\n {\r\n name: 'target',\r\n isTarget: true\r\n },\r\n {\r\n name: 'values'\r\n }\r\n];\r\nvar computesRequired = true;\r\nvar required_if = {\r\n validate: validate$2,\r\n params: params$2,\r\n computesRequired: computesRequired\r\n};\n\nvar validate$1 = function (files, _a) {\r\n var size = _a.size;\r\n if (isNaN(size)) {\r\n return false;\r\n }\r\n var nSize = size * 1024;\r\n if (!Array.isArray(files)) {\r\n return files.size <= nSize;\r\n }\r\n for (var i = 0; i < files.length; i++) {\r\n if (files[i].size > nSize) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\nvar params$1 = [\r\n {\r\n name: 'size',\r\n cast: function (value) {\r\n return Number(value);\r\n }\r\n }\r\n];\r\nvar size = {\r\n validate: validate$1,\r\n params: params$1\r\n};\n\nvar validate = function (value, params) {\r\n var _a = params || {}, _b = _a.decimals, decimals = _b === void 0 ? 0 : _b, _c = _a.separator, separator = _c === void 0 ? 'dot' : _c;\r\n var delimiterRegexPart = separator === 'comma' ? ',?' : '\\\\.?';\r\n var decimalRegexPart = decimals === 0 ? '\\\\d*' : \"(\\\\d{\" + decimals + \"})?\";\r\n var regex = new RegExp(\"^-?\\\\d+\" + delimiterRegexPart + decimalRegexPart + \"$\");\r\n return Array.isArray(value) ? value.every(function (val) { return regex.test(String(val)); }) : regex.test(String(value));\r\n};\r\nvar params = [\r\n {\r\n name: 'decimals',\r\n default: 0\r\n },\r\n {\r\n name: 'separator',\r\n default: 'dot'\r\n }\r\n];\r\nvar double = {\r\n validate: validate,\r\n params: params\r\n};\n\nexport { alpha, alpha_dash, alpha_num, alpha_spaces, between, confirmed, digits, dimensions, double, email, excluded, ext, image, integer, is, is_not, length, max, max_value, mimes, min, min_value, numeric, oneOf, regex, required, required_if, size };\n","/**\n * vee-validate v3.4.14\n * (c) 2021 Abdelrahman Awad\n * @license MIT\n */\nimport Vue from 'vue';\n\n/*! *****************************************************************************\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\r\nvar __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\nfunction __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\nfunction __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 (_) 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\nfunction __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}\n\nfunction isNaN(value) {\r\n // NaN is the one value that does not equal itself.\r\n // eslint-disable-next-line\r\n return value !== value;\r\n}\r\nfunction isNullOrUndefined(value) {\r\n return value === null || value === undefined;\r\n}\r\nfunction isEmptyArray(arr) {\r\n return Array.isArray(arr) && arr.length === 0;\r\n}\r\nvar isObject = function (obj) {\r\n return obj !== null && obj && typeof obj === 'object' && !Array.isArray(obj);\r\n};\r\n/**\r\n * A reference comparison function with NaN support\r\n */\r\nfunction isRefEqual(lhs, rhs) {\r\n if (isNaN(lhs) && isNaN(rhs)) {\r\n return true;\r\n }\r\n return lhs === rhs;\r\n}\r\n// Checks if a given value is not an empty string or null or undefined.\r\nfunction isSpecified(val) {\r\n if (val === '') {\r\n return false;\r\n }\r\n return !isNullOrUndefined(val);\r\n}\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction isCallable(fn) {\r\n return typeof fn === 'function';\r\n}\r\nfunction isLocator(value) {\r\n return isCallable(value) && !!value.__locatorRef;\r\n}\n\nfunction findIndex(arrayLike, predicate) {\r\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\r\n if (isCallable(array.findIndex)) {\r\n return array.findIndex(predicate);\r\n }\r\n /* istanbul ignore next */\r\n for (var i = 0; i < array.length; i++) {\r\n if (predicate(array[i], i)) {\r\n return i;\r\n }\r\n }\r\n /* istanbul ignore next */\r\n return -1;\r\n}\r\n/**\r\n * finds the first element that satisfies the predicate callback, polyfills array.find\r\n */\r\nfunction find(arrayLike, predicate) {\r\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\r\n var idx = findIndex(array, predicate);\r\n return idx === -1 ? undefined : array[idx];\r\n}\r\nfunction includes(collection, item) {\r\n return collection.indexOf(item) !== -1;\r\n}\r\n/**\r\n * Converts an array-like object to array, provides a simple polyfill for Array.from\r\n */\r\nfunction toArray(arrayLike) {\r\n if (isCallable(Array.from)) {\r\n return Array.from(arrayLike);\r\n }\r\n /* istanbul ignore next */\r\n return _copyArray(arrayLike);\r\n}\r\n/* istanbul ignore next */\r\nfunction _copyArray(arrayLike) {\r\n var array = [];\r\n var length = arrayLike.length;\r\n for (var i = 0; i < length; i++) {\r\n array.push(arrayLike[i]);\r\n }\r\n return array;\r\n}\r\nfunction values(obj) {\r\n if (isCallable(Object.values)) {\r\n return Object.values(obj);\r\n }\r\n // fallback to keys()\r\n /* istanbul ignore next */\r\n return Object.keys(obj).map(function (k) { return obj[k]; });\r\n}\r\nfunction merge(target, source) {\r\n Object.keys(source).forEach(function (key) {\r\n if (isObject(source[key])) {\r\n if (!target[key]) {\r\n target[key] = {};\r\n }\r\n merge(target[key], source[key]);\r\n return;\r\n }\r\n target[key] = source[key];\r\n });\r\n return target;\r\n}\n\nfunction createFlags() {\r\n return {\r\n untouched: true,\r\n touched: false,\r\n dirty: false,\r\n pristine: true,\r\n valid: false,\r\n invalid: false,\r\n validated: false,\r\n pending: false,\r\n required: false,\r\n changed: false,\r\n passed: false,\r\n failed: false\r\n };\r\n}\n\nfunction identity(x) {\r\n return x;\r\n}\r\nfunction debounce(fn, wait, token) {\r\n if (wait === void 0) { wait = 0; }\r\n if (token === void 0) { token = { cancelled: false }; }\r\n if (wait === 0) {\r\n return fn;\r\n }\r\n var timeout;\r\n return function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var later = function () {\r\n timeout = undefined;\r\n // check if the fn call was cancelled.\r\n if (!token.cancelled)\r\n fn.apply(void 0, args);\r\n };\r\n // because we might want to use Node.js setTimout for SSR.\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n };\r\n}\n\n/**\r\n * Emits a warning to the console\r\n */\r\nfunction warn(message) {\r\n console.warn(\"[vee-validate] \" + message);\r\n}\r\n/**\r\n * Replaces placeholder values in a string with their actual values\r\n */\r\nfunction interpolate(template, values) {\r\n return template.replace(/{([^}]+)}/g, function (_, p) {\r\n return p in values ? values[p] : \"{\" + p + \"}\";\r\n });\r\n}\n\nvar RULES = {};\r\nfunction normalizeSchema(schema) {\r\n var _a;\r\n if ((_a = schema.params) === null || _a === void 0 ? void 0 : _a.length) {\r\n schema.params = schema.params.map(function (param) {\r\n if (typeof param === 'string') {\r\n return { name: param };\r\n }\r\n return param;\r\n });\r\n }\r\n return schema;\r\n}\r\nvar RuleContainer = /** @class */ (function () {\r\n function RuleContainer() {\r\n }\r\n RuleContainer.extend = function (name, schema) {\r\n // if rule already exists, overwrite it.\r\n var rule = normalizeSchema(schema);\r\n if (RULES[name]) {\r\n RULES[name] = merge(RULES[name], schema);\r\n return;\r\n }\r\n RULES[name] = __assign({ lazy: false, computesRequired: false }, rule);\r\n };\r\n RuleContainer.isLazy = function (name) {\r\n var _a;\r\n return !!((_a = RULES[name]) === null || _a === void 0 ? void 0 : _a.lazy);\r\n };\r\n RuleContainer.isRequireRule = function (name) {\r\n var _a;\r\n return !!((_a = RULES[name]) === null || _a === void 0 ? void 0 : _a.computesRequired);\r\n };\r\n RuleContainer.getRuleDefinition = function (ruleName) {\r\n return RULES[ruleName];\r\n };\r\n return RuleContainer;\r\n}());\r\n/**\r\n * Adds a custom validator to the list of validation rules.\r\n */\r\nfunction extend(name, schema) {\r\n // makes sure new rules are properly formatted.\r\n guardExtend(name, schema);\r\n // Full schema object.\r\n if (typeof schema === 'object') {\r\n RuleContainer.extend(name, schema);\r\n return;\r\n }\r\n RuleContainer.extend(name, {\r\n validate: schema\r\n });\r\n}\r\n/**\r\n * Guards from extension violations.\r\n */\r\nfunction guardExtend(name, validator) {\r\n if (isCallable(validator)) {\r\n return;\r\n }\r\n if (isCallable(validator.validate)) {\r\n return;\r\n }\r\n if (RuleContainer.getRuleDefinition(name)) {\r\n return;\r\n }\r\n throw new Error(\"Extension Error: The validator '\" + name + \"' must be a function or have a 'validate' method.\");\r\n}\n\nvar DEFAULT_CONFIG = {\r\n defaultMessage: \"{_field_} is not valid.\",\r\n skipOptional: true,\r\n classes: {\r\n touched: 'touched',\r\n untouched: 'untouched',\r\n valid: 'valid',\r\n invalid: 'invalid',\r\n pristine: 'pristine',\r\n dirty: 'dirty' // control has been interacted with\r\n },\r\n bails: true,\r\n mode: 'aggressive',\r\n useConstraintAttrs: true\r\n};\r\nvar currentConfig = __assign({}, DEFAULT_CONFIG);\r\nvar getConfig = function () { return currentConfig; };\r\nvar setConfig = function (newConf) {\r\n currentConfig = __assign(__assign({}, currentConfig), newConf);\r\n};\r\nvar configure = function (cfg) {\r\n setConfig(cfg);\r\n};\n\n/**\r\n * Normalizes the given rules expression.\r\n */\r\nfunction normalizeRules(rules) {\r\n // if falsy value return an empty object.\r\n var acc = {};\r\n Object.defineProperty(acc, '_$$isNormalized', {\r\n value: true,\r\n writable: false,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n if (!rules) {\r\n return acc;\r\n }\r\n // Object is already normalized, skip.\r\n if (isObject(rules) && rules._$$isNormalized) {\r\n return rules;\r\n }\r\n if (isObject(rules)) {\r\n return Object.keys(rules).reduce(function (prev, curr) {\r\n var params = [];\r\n if (rules[curr] === true) {\r\n params = [];\r\n }\r\n else if (Array.isArray(rules[curr])) {\r\n params = rules[curr];\r\n }\r\n else if (isObject(rules[curr])) {\r\n params = rules[curr];\r\n }\r\n else {\r\n params = [rules[curr]];\r\n }\r\n if (rules[curr] !== false) {\r\n prev[curr] = buildParams(curr, params);\r\n }\r\n return prev;\r\n }, acc);\r\n }\r\n /* istanbul ignore if */\r\n if (typeof rules !== 'string') {\r\n warn('rules must be either a string or an object.');\r\n return acc;\r\n }\r\n return rules.split('|').reduce(function (prev, rule) {\r\n var parsedRule = parseRule(rule);\r\n if (!parsedRule.name) {\r\n return prev;\r\n }\r\n prev[parsedRule.name] = buildParams(parsedRule.name, parsedRule.params);\r\n return prev;\r\n }, acc);\r\n}\r\nfunction buildParams(ruleName, provided) {\r\n var ruleSchema = RuleContainer.getRuleDefinition(ruleName);\r\n if (!ruleSchema) {\r\n return provided;\r\n }\r\n var params = {};\r\n if (!ruleSchema.params && !Array.isArray(provided)) {\r\n throw new Error('You provided an object params to a rule that has no defined schema.');\r\n }\r\n // Rule probably uses an array for their args, keep it as is.\r\n if (Array.isArray(provided) && !ruleSchema.params) {\r\n return provided;\r\n }\r\n var definedParams;\r\n // collect the params schema.\r\n if (!ruleSchema.params || (ruleSchema.params.length < provided.length && Array.isArray(provided))) {\r\n var lastDefinedParam_1;\r\n // collect any additional parameters in the last item.\r\n definedParams = provided.map(function (_, idx) {\r\n var _a;\r\n var param = (_a = ruleSchema.params) === null || _a === void 0 ? void 0 : _a[idx];\r\n lastDefinedParam_1 = param || lastDefinedParam_1;\r\n if (!param) {\r\n param = lastDefinedParam_1;\r\n }\r\n return param;\r\n });\r\n }\r\n else {\r\n definedParams = ruleSchema.params;\r\n }\r\n // Match the provided array length with a temporary schema.\r\n for (var i = 0; i < definedParams.length; i++) {\r\n var options = definedParams[i];\r\n var value = options.default;\r\n // if the provided is an array, map element value.\r\n if (Array.isArray(provided)) {\r\n if (i in provided) {\r\n value = provided[i];\r\n }\r\n }\r\n else {\r\n // If the param exists in the provided object.\r\n if (options.name in provided) {\r\n value = provided[options.name];\r\n // if the provided is the first param value.\r\n }\r\n else if (definedParams.length === 1) {\r\n value = provided;\r\n }\r\n }\r\n // if the param is a target, resolve the target value.\r\n if (options.isTarget) {\r\n value = createLocator(value, options.cast);\r\n }\r\n // A target param using interpolation\r\n if (typeof value === 'string' && value[0] === '@') {\r\n value = createLocator(value.slice(1), options.cast);\r\n }\r\n // If there is a transformer defined.\r\n if (!isLocator(value) && options.cast) {\r\n value = options.cast(value);\r\n }\r\n // already been set, probably multiple values.\r\n if (params[options.name]) {\r\n params[options.name] = Array.isArray(params[options.name]) ? params[options.name] : [params[options.name]];\r\n params[options.name].push(value);\r\n }\r\n else {\r\n // set the value.\r\n params[options.name] = value;\r\n }\r\n }\r\n return params;\r\n}\r\n/**\r\n * Parses a rule string expression.\r\n */\r\nvar parseRule = function (rule) {\r\n var params = [];\r\n var name = rule.split(':')[0];\r\n if (includes(rule, ':')) {\r\n params = rule\r\n .split(':')\r\n .slice(1)\r\n .join(':')\r\n .split(',');\r\n }\r\n return { name: name, params: params };\r\n};\r\nfunction createLocator(value, castFn) {\r\n var locator = function (crossTable) {\r\n var val = crossTable[value];\r\n return castFn ? castFn(val) : val;\r\n };\r\n locator.__locatorRef = value;\r\n return locator;\r\n}\r\nfunction extractLocators(params) {\r\n if (Array.isArray(params)) {\r\n return params.filter(function (param) {\r\n return isLocator(param) || (typeof param === 'string' && param[0] === '@');\r\n });\r\n }\r\n return Object.keys(params)\r\n .filter(function (key) { return isLocator(params[key]); })\r\n .map(function (key) { return params[key]; });\r\n}\n\n/**\r\n * Validates a value against the rules.\r\n */\r\nfunction validate(value, rules, options) {\r\n if (options === void 0) { options = {}; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var shouldBail, skipIfEmpty, field, result, errors, failedRules, regenerateMap;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n shouldBail = options === null || options === void 0 ? void 0 : options.bails;\r\n skipIfEmpty = options === null || options === void 0 ? void 0 : options.skipIfEmpty;\r\n field = {\r\n name: (options === null || options === void 0 ? void 0 : options.name) || '{field}',\r\n rules: normalizeRules(rules),\r\n bails: shouldBail !== null && shouldBail !== void 0 ? shouldBail : true,\r\n skipIfEmpty: skipIfEmpty !== null && skipIfEmpty !== void 0 ? skipIfEmpty : true,\r\n forceRequired: false,\r\n crossTable: (options === null || options === void 0 ? void 0 : options.values) || {},\r\n names: (options === null || options === void 0 ? void 0 : options.names) || {},\r\n customMessages: (options === null || options === void 0 ? void 0 : options.customMessages) || {}\r\n };\r\n return [4 /*yield*/, _validate(field, value, options)];\r\n case 1:\r\n result = _a.sent();\r\n errors = [];\r\n failedRules = {};\r\n regenerateMap = {};\r\n result.errors.forEach(function (e) {\r\n var msg = e.msg();\r\n errors.push(msg);\r\n failedRules[e.rule] = msg;\r\n regenerateMap[e.rule] = e.msg;\r\n });\r\n return [2 /*return*/, {\r\n valid: result.valid,\r\n required: result.required,\r\n errors: errors,\r\n failedRules: failedRules,\r\n regenerateMap: regenerateMap\r\n }];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Starts the validation process.\r\n */\r\nfunction _validate(field, value, _a) {\r\n var _b = (_a === void 0 ? {} : _a).isInitial, isInitial = _b === void 0 ? false : _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _c, shouldSkip, required, errors, rules, length, i, rule, result;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0: return [4 /*yield*/, _shouldSkip(field, value)];\r\n case 1:\r\n _c = _d.sent(), shouldSkip = _c.shouldSkip, required = _c.required, errors = _c.errors;\r\n if (shouldSkip) {\r\n return [2 /*return*/, {\r\n valid: !errors.length,\r\n required: required,\r\n errors: errors\r\n }];\r\n }\r\n rules = Object.keys(field.rules).filter(function (rule) { return !RuleContainer.isRequireRule(rule); });\r\n length = rules.length;\r\n i = 0;\r\n _d.label = 2;\r\n case 2:\r\n if (!(i < length)) return [3 /*break*/, 5];\r\n if (isInitial && RuleContainer.isLazy(rules[i])) {\r\n return [3 /*break*/, 4];\r\n }\r\n rule = rules[i];\r\n return [4 /*yield*/, _test(field, value, {\r\n name: rule,\r\n params: field.rules[rule]\r\n })];\r\n case 3:\r\n result = _d.sent();\r\n if (!result.valid && result.error) {\r\n errors.push(result.error);\r\n if (field.bails) {\r\n return [2 /*return*/, {\r\n valid: false,\r\n required: required,\r\n errors: errors\r\n }];\r\n }\r\n }\r\n _d.label = 4;\r\n case 4:\r\n i++;\r\n return [3 /*break*/, 2];\r\n case 5: return [2 /*return*/, {\r\n valid: !errors.length,\r\n required: required,\r\n errors: errors\r\n }];\r\n }\r\n });\r\n });\r\n}\r\nfunction _shouldSkip(field, value) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var requireRules, length, errors, isEmpty, isEmptyAndOptional, isRequired, i, rule, result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n requireRules = Object.keys(field.rules).filter(RuleContainer.isRequireRule);\r\n length = requireRules.length;\r\n errors = [];\r\n isEmpty = isNullOrUndefined(value) || value === '' || isEmptyArray(value);\r\n isEmptyAndOptional = isEmpty && field.skipIfEmpty;\r\n i = 0;\r\n _a.label = 1;\r\n case 1:\r\n if (!(i < length)) return [3 /*break*/, 4];\r\n rule = requireRules[i];\r\n return [4 /*yield*/, _test(field, value, {\r\n name: rule,\r\n params: field.rules[rule]\r\n })];\r\n case 2:\r\n result = _a.sent();\r\n if (!isObject(result)) {\r\n throw new Error('Require rules has to return an object (see docs)');\r\n }\r\n if (result.required !== undefined) {\r\n isRequired = result.required;\r\n }\r\n if (!result.valid && result.error) {\r\n errors.push(result.error);\r\n // Exit early as the field is required and failed validation.\r\n if (field.bails) {\r\n return [2 /*return*/, {\r\n shouldSkip: true,\r\n required: result.required,\r\n errors: errors\r\n }];\r\n }\r\n }\r\n _a.label = 3;\r\n case 3:\r\n i++;\r\n return [3 /*break*/, 1];\r\n case 4:\r\n if (isEmpty && !isRequired && !field.skipIfEmpty) {\r\n return [2 /*return*/, {\r\n shouldSkip: false,\r\n required: isRequired,\r\n errors: errors\r\n }];\r\n }\r\n // field is configured to run through the pipeline regardless\r\n if (!field.bails && !isEmptyAndOptional) {\r\n return [2 /*return*/, {\r\n shouldSkip: false,\r\n required: isRequired,\r\n errors: errors\r\n }];\r\n }\r\n // skip if the field is not required and has an empty value.\r\n return [2 /*return*/, {\r\n shouldSkip: !isRequired && isEmpty,\r\n required: isRequired,\r\n errors: errors\r\n }];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Tests a single input value against a rule.\r\n */\r\nfunction _test(field, value, rule) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var ruleSchema, normalizedValue, params, result, values_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n ruleSchema = RuleContainer.getRuleDefinition(rule.name);\r\n if (!ruleSchema || !ruleSchema.validate) {\r\n throw new Error(\"No such validator '\" + rule.name + \"' exists.\");\r\n }\r\n normalizedValue = ruleSchema.castValue ? ruleSchema.castValue(value) : value;\r\n params = fillTargetValues(rule.params, field.crossTable);\r\n return [4 /*yield*/, ruleSchema.validate(normalizedValue, params)];\r\n case 1:\r\n result = _a.sent();\r\n if (typeof result === 'string') {\r\n values_1 = __assign(__assign({}, (params || {})), { _field_: field.name, _value_: value, _rule_: rule.name });\r\n return [2 /*return*/, {\r\n valid: false,\r\n error: { rule: rule.name, msg: function () { return interpolate(result, values_1); } }\r\n }];\r\n }\r\n if (!isObject(result)) {\r\n result = { valid: result };\r\n }\r\n return [2 /*return*/, {\r\n valid: result.valid,\r\n required: result.required,\r\n error: result.valid ? undefined : _generateFieldError(field, value, ruleSchema, rule.name, params)\r\n }];\r\n }\r\n });\r\n });\r\n}\r\n/**\r\n * Generates error messages.\r\n */\r\nfunction _generateFieldError(field, value, ruleSchema, ruleName, params) {\r\n var _a;\r\n var message = (_a = field.customMessages[ruleName]) !== null && _a !== void 0 ? _a : ruleSchema.message;\r\n var ruleTargets = _getRuleTargets(field, ruleSchema, ruleName);\r\n var _b = _getUserTargets(field, ruleSchema, ruleName, message), userTargets = _b.userTargets, userMessage = _b.userMessage;\r\n var values = __assign(__assign(__assign(__assign({}, (params || {})), { _field_: field.name, _value_: value, _rule_: ruleName }), ruleTargets), userTargets);\r\n return {\r\n msg: function () { return _normalizeMessage(userMessage || getConfig().defaultMessage, field.name, values); },\r\n rule: ruleName\r\n };\r\n}\r\nfunction _getRuleTargets(field, ruleSchema, ruleName) {\r\n var params = ruleSchema.params;\r\n if (!params) {\r\n return {};\r\n }\r\n var numTargets = params.filter(function (param) { return param.isTarget; }).length;\r\n if (numTargets <= 0) {\r\n return {};\r\n }\r\n var names = {};\r\n var ruleConfig = field.rules[ruleName];\r\n if (!Array.isArray(ruleConfig) && isObject(ruleConfig)) {\r\n ruleConfig = params.map(function (param) {\r\n return ruleConfig[param.name];\r\n });\r\n }\r\n for (var index = 0; index < params.length; index++) {\r\n var param = params[index];\r\n var key = ruleConfig[index];\r\n if (!isLocator(key)) {\r\n continue;\r\n }\r\n key = key.__locatorRef;\r\n var name_1 = field.names[key] || key;\r\n names[param.name] = name_1;\r\n names[\"_\" + param.name + \"_\"] = field.crossTable[key];\r\n }\r\n return names;\r\n}\r\nfunction _getUserTargets(field, ruleSchema, ruleName, userMessage) {\r\n var userTargets = {};\r\n var rules = field.rules[ruleName];\r\n var params = ruleSchema.params || [];\r\n // early return if no rules\r\n if (!rules) {\r\n return {};\r\n }\r\n // check all rules to convert targets\r\n Object.keys(rules).forEach(function (key, index) {\r\n // get the rule\r\n var rule = rules[key];\r\n if (!isLocator(rule)) {\r\n return {};\r\n }\r\n // get associated parameter\r\n var param = params[index];\r\n if (!param) {\r\n return {};\r\n }\r\n // grab the name of the target\r\n var name = rule.__locatorRef;\r\n userTargets[param.name] = field.names[name] || name;\r\n userTargets[\"_\" + param.name + \"_\"] = field.crossTable[name];\r\n });\r\n return {\r\n userTargets: userTargets,\r\n userMessage: userMessage\r\n };\r\n}\r\nfunction _normalizeMessage(template, field, values) {\r\n if (typeof template === 'function') {\r\n return template(field, values);\r\n }\r\n return interpolate(template, __assign(__assign({}, values), { _field_: field }));\r\n}\r\nfunction fillTargetValues(params, crossTable) {\r\n if (Array.isArray(params)) {\r\n return params.map(function (param) {\r\n var targetPart = typeof param === 'string' && param[0] === '@' ? param.slice(1) : param;\r\n if (targetPart in crossTable) {\r\n return crossTable[targetPart];\r\n }\r\n return param;\r\n });\r\n }\r\n var values = {};\r\n var normalize = function (value) {\r\n if (isLocator(value)) {\r\n return value(crossTable);\r\n }\r\n return value;\r\n };\r\n Object.keys(params).forEach(function (param) {\r\n values[param] = normalize(params[param]);\r\n });\r\n return values;\r\n}\n\nvar aggressive = function () { return ({\r\n on: ['input', 'blur']\r\n}); };\r\nvar lazy = function () { return ({\r\n on: ['change', 'blur']\r\n}); };\r\nvar eager = function (_a) {\r\n var errors = _a.errors;\r\n if (errors.length) {\r\n return {\r\n on: ['input', 'change']\r\n };\r\n }\r\n return {\r\n on: ['change', 'blur']\r\n };\r\n};\r\nvar passive = function () { return ({\r\n on: []\r\n}); };\r\nvar modes = {\r\n aggressive: aggressive,\r\n eager: eager,\r\n passive: passive,\r\n lazy: lazy\r\n};\r\nvar setInteractionMode = function (mode, implementation) {\r\n setConfig({ mode: mode });\r\n if (!implementation) {\r\n return;\r\n }\r\n if (!isCallable(implementation)) {\r\n throw new Error('A mode implementation must be a function');\r\n }\r\n modes[mode] = implementation;\r\n};\n\nvar EVENT_BUS = new Vue();\r\nfunction localeChanged() {\r\n EVENT_BUS.$emit('change:locale');\r\n}\n\nvar Dictionary = /** @class */ (function () {\r\n function Dictionary(locale, dictionary) {\r\n this.container = {};\r\n this.locale = locale;\r\n this.merge(dictionary);\r\n }\r\n Dictionary.prototype.resolve = function (field, rule, values) {\r\n return this.format(this.locale, field, rule, values);\r\n };\r\n Dictionary.prototype.format = function (locale, field, rule, values) {\r\n var _a, _b, _c, _d, _e, _f, _g, _h;\r\n var message;\r\n // find if specific message for that field was specified.\r\n var fieldContainer = (_c = (_b = (_a = this.container[locale]) === null || _a === void 0 ? void 0 : _a.fields) === null || _b === void 0 ? void 0 : _b[field]) === null || _c === void 0 ? void 0 : _c[rule];\r\n var messageContainer = (_e = (_d = this.container[locale]) === null || _d === void 0 ? void 0 : _d.messages) === null || _e === void 0 ? void 0 : _e[rule];\r\n message = fieldContainer || messageContainer || '';\r\n if (!message) {\r\n message = '{_field_} is not valid';\r\n }\r\n field = (_h = (_g = (_f = this.container[locale]) === null || _f === void 0 ? void 0 : _f.names) === null || _g === void 0 ? void 0 : _g[field]) !== null && _h !== void 0 ? _h : field;\r\n return isCallable(message) ? message(field, values) : interpolate(message, __assign(__assign({}, values), { _field_: field }));\r\n };\r\n Dictionary.prototype.merge = function (dictionary) {\r\n merge(this.container, dictionary);\r\n };\r\n Dictionary.prototype.hasRule = function (name) {\r\n var _a, _b;\r\n return !!((_b = (_a = this.container[this.locale]) === null || _a === void 0 ? void 0 : _a.messages) === null || _b === void 0 ? void 0 : _b[name]);\r\n };\r\n return Dictionary;\r\n}());\r\nvar DICTIONARY;\r\nfunction localize(locale, dictionary) {\r\n var _a;\r\n if (!DICTIONARY) {\r\n DICTIONARY = new Dictionary('en', {});\r\n setConfig({\r\n defaultMessage: function (field, values) {\r\n return DICTIONARY.resolve(field, values === null || values === void 0 ? void 0 : values._rule_, values || {});\r\n }\r\n });\r\n }\r\n if (typeof locale === 'string') {\r\n DICTIONARY.locale = locale;\r\n if (dictionary) {\r\n DICTIONARY.merge((_a = {}, _a[locale] = dictionary, _a));\r\n }\r\n localeChanged();\r\n return;\r\n }\r\n DICTIONARY.merge(locale);\r\n}\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nvar fastDeepEqual = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n\nvar isEvent = function (evt) {\r\n if (!evt) {\r\n return false;\r\n }\r\n if (typeof Event !== 'undefined' && isCallable(Event) && evt instanceof Event) {\r\n return true;\r\n }\r\n // this is for IE\r\n /* istanbul ignore next */\r\n if (evt && evt.srcElement) {\r\n return true;\r\n }\r\n return false;\r\n};\r\nfunction normalizeEventValue(value) {\r\n var _a, _b;\r\n if (!isEvent(value)) {\r\n return value;\r\n }\r\n var input = value.target;\r\n if (input.type === 'file' && input.files) {\r\n return toArray(input.files);\r\n }\r\n // If the input has a `v-model.number` modifier applied.\r\n if ((_a = input._vModifiers) === null || _a === void 0 ? void 0 : _a.number) {\r\n // as per the spec the v-model.number uses parseFloat\r\n var valueAsNumber = parseFloat(input.value);\r\n if (isNaN(valueAsNumber)) {\r\n return input.value;\r\n }\r\n return valueAsNumber;\r\n }\r\n if ((_b = input._vModifiers) === null || _b === void 0 ? void 0 : _b.trim) {\r\n var trimmedValue = typeof input.value === 'string' ? input.value.trim() : input.value;\r\n return trimmedValue;\r\n }\r\n return input.value;\r\n}\n\nvar isTextInput = function (vnode) {\r\n var _a;\r\n var attrs = ((_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs) || vnode.elm;\r\n // it will fallback to being a text input per browsers spec.\r\n if (vnode.tag === 'input' && (!attrs || !attrs.type)) {\r\n return true;\r\n }\r\n if (vnode.tag === 'textarea') {\r\n return true;\r\n }\r\n return includes(['text', 'password', 'search', 'email', 'tel', 'url', 'number'], attrs === null || attrs === void 0 ? void 0 : attrs.type);\r\n};\r\n// export const isCheckboxOrRadioInput = (vnode: VNode): boolean => {\r\n// const attrs = (vnode.data && vnode.data.attrs) || vnode.elm;\r\n// return includes(['radio', 'checkbox'], attrs && attrs.type);\r\n// };\r\n// Gets the model object on the vnode.\r\nfunction findModel(vnode) {\r\n if (!vnode.data) {\r\n return undefined;\r\n }\r\n // Component Model\r\n // THIS IS NOT TYPED IN OFFICIAL VUE TYPINGS\r\n // eslint-disable-next-line\r\n var nonStandardVNodeData = vnode.data;\r\n if ('model' in nonStandardVNodeData) {\r\n return nonStandardVNodeData.model;\r\n }\r\n if (!vnode.data.directives) {\r\n return undefined;\r\n }\r\n return find(vnode.data.directives, function (d) { return d.name === 'model'; });\r\n}\r\nfunction findValue(vnode) {\r\n var _a, _b;\r\n var model = findModel(vnode);\r\n if (model) {\r\n return { value: model.value };\r\n }\r\n var config = findModelConfig(vnode);\r\n var prop = (config === null || config === void 0 ? void 0 : config.prop) || 'value';\r\n if (((_a = vnode.componentOptions) === null || _a === void 0 ? void 0 : _a.propsData) && prop in vnode.componentOptions.propsData) {\r\n var propsDataWithValue = vnode.componentOptions.propsData;\r\n return { value: propsDataWithValue[prop] };\r\n }\r\n if (((_b = vnode.data) === null || _b === void 0 ? void 0 : _b.domProps) && 'value' in vnode.data.domProps) {\r\n return { value: vnode.data.domProps.value };\r\n }\r\n return undefined;\r\n}\r\nfunction extractChildren(vnode) {\r\n if (Array.isArray(vnode)) {\r\n return vnode;\r\n }\r\n if (Array.isArray(vnode.children)) {\r\n return vnode.children;\r\n }\r\n /* istanbul ignore next */\r\n if (vnode.componentOptions && Array.isArray(vnode.componentOptions.children)) {\r\n return vnode.componentOptions.children;\r\n }\r\n return [];\r\n}\r\nfunction findInputNodes(vnode) {\r\n if (!Array.isArray(vnode) && findValue(vnode) !== undefined) {\r\n return [vnode];\r\n }\r\n var children = extractChildren(vnode);\r\n return children.reduce(function (nodes, node) {\r\n var candidates = findInputNodes(node);\r\n if (candidates.length) {\r\n nodes.push.apply(nodes, candidates);\r\n }\r\n return nodes;\r\n }, []);\r\n}\r\n// Resolves v-model config if exists.\r\nfunction findModelConfig(vnode) {\r\n /* istanbul ignore next */\r\n if (!vnode.componentOptions)\r\n return null;\r\n // This is also not typed in the standard Vue TS.\r\n return vnode.componentOptions.Ctor.options.model;\r\n}\r\n// Adds a listener to vnode listener object.\r\nfunction mergeVNodeListeners(obj, eventName, handler) {\r\n // no listener at all.\r\n if (isNullOrUndefined(obj[eventName])) {\r\n obj[eventName] = [handler];\r\n return;\r\n }\r\n // Is an invoker.\r\n if (isCallable(obj[eventName]) && obj[eventName].fns) {\r\n var invoker = obj[eventName];\r\n invoker.fns = Array.isArray(invoker.fns) ? invoker.fns : [invoker.fns];\r\n if (!includes(invoker.fns, handler)) {\r\n invoker.fns.push(handler);\r\n }\r\n return;\r\n }\r\n if (isCallable(obj[eventName])) {\r\n var prev = obj[eventName];\r\n obj[eventName] = [prev];\r\n }\r\n if (Array.isArray(obj[eventName]) && !includes(obj[eventName], handler)) {\r\n obj[eventName].push(handler);\r\n }\r\n}\r\n// Adds a listener to a native HTML vnode.\r\nfunction addNativeNodeListener(node, eventName, handler) {\r\n /* istanbul ignore next */\r\n if (!node.data) {\r\n node.data = {};\r\n }\r\n if (isNullOrUndefined(node.data.on)) {\r\n node.data.on = {};\r\n }\r\n mergeVNodeListeners(node.data.on, eventName, handler);\r\n}\r\n// Adds a listener to a Vue component vnode.\r\nfunction addComponentNodeListener(node, eventName, handler) {\r\n /* istanbul ignore next */\r\n if (!node.componentOptions) {\r\n return;\r\n }\r\n /* istanbul ignore next */\r\n if (!node.componentOptions.listeners) {\r\n node.componentOptions.listeners = {};\r\n }\r\n mergeVNodeListeners(node.componentOptions.listeners, eventName, handler);\r\n}\r\nfunction addVNodeListener(vnode, eventName, handler) {\r\n if (vnode.componentOptions) {\r\n addComponentNodeListener(vnode, eventName, handler);\r\n return;\r\n }\r\n addNativeNodeListener(vnode, eventName, handler);\r\n}\r\n// Determines if `change` should be used over `input` for listeners.\r\nfunction getInputEventName(vnode, model) {\r\n var _a;\r\n // Is a component.\r\n if (vnode.componentOptions) {\r\n var event_1 = (findModelConfig(vnode) || { event: 'input' }).event;\r\n return event_1;\r\n }\r\n // Lazy Models typically use change event\r\n if ((_a = model === null || model === void 0 ? void 0 : model.modifiers) === null || _a === void 0 ? void 0 : _a.lazy) {\r\n return 'change';\r\n }\r\n // is a textual-type input.\r\n if (isTextInput(vnode)) {\r\n return 'input';\r\n }\r\n return 'change';\r\n}\r\nfunction isHTMLNode(node) {\r\n return includes(['input', 'select', 'textarea'], node.tag);\r\n}\r\n// TODO: Type this one properly.\r\nfunction normalizeSlots(slots, ctx) {\r\n var acc = [];\r\n return Object.keys(slots).reduce(function (arr, key) {\r\n slots[key].forEach(function (vnode) {\r\n if (!vnode.context) {\r\n slots[key].context = ctx;\r\n if (!vnode.data) {\r\n vnode.data = {};\r\n }\r\n vnode.data.slot = key;\r\n }\r\n });\r\n return arr.concat(slots[key]);\r\n }, acc);\r\n}\r\nfunction resolveTextualRules(vnode) {\r\n var _a;\r\n var attrs = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs;\r\n var rules = {};\r\n if (!attrs)\r\n return rules;\r\n if (attrs.type === 'email' && RuleContainer.getRuleDefinition('email')) {\r\n rules.email = ['multiple' in attrs];\r\n }\r\n if (attrs.pattern && RuleContainer.getRuleDefinition('regex')) {\r\n rules.regex = attrs.pattern;\r\n }\r\n if (attrs.maxlength >= 0 && RuleContainer.getRuleDefinition('max')) {\r\n rules.max = attrs.maxlength;\r\n }\r\n if (attrs.minlength >= 0 && RuleContainer.getRuleDefinition('min')) {\r\n rules.min = attrs.minlength;\r\n }\r\n if (attrs.type === 'number') {\r\n if (isSpecified(attrs.min) && RuleContainer.getRuleDefinition('min_value')) {\r\n rules.min_value = Number(attrs.min);\r\n }\r\n if (isSpecified(attrs.max) && RuleContainer.getRuleDefinition('max_value')) {\r\n rules.max_value = Number(attrs.max);\r\n }\r\n }\r\n return rules;\r\n}\r\nfunction resolveRules(vnode) {\r\n var _a;\r\n var htmlTags = ['input', 'select', 'textarea'];\r\n var attrs = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs;\r\n if (!includes(htmlTags, vnode.tag) || !attrs) {\r\n return {};\r\n }\r\n var rules = {};\r\n if ('required' in attrs && attrs.required !== false && RuleContainer.getRuleDefinition('required')) {\r\n rules.required = attrs.type === 'checkbox' ? [true] : true;\r\n }\r\n if (isTextInput(vnode)) {\r\n return normalizeRules(__assign(__assign({}, rules), resolveTextualRules(vnode)));\r\n }\r\n return normalizeRules(rules);\r\n}\r\nfunction normalizeChildren(context, slotProps) {\r\n if (context.$scopedSlots.default) {\r\n return context.$scopedSlots.default(slotProps) || [];\r\n }\r\n return context.$slots.default || [];\r\n}\n\n/**\r\n * Determines if a provider needs to run validation.\r\n */\r\nfunction shouldValidate(ctx, value) {\r\n // when an immediate/initial validation is needed and wasn't done before.\r\n if (!ctx._ignoreImmediate && ctx.immediate) {\r\n return true;\r\n }\r\n // when the value changes for whatever reason.\r\n if (!isRefEqual(ctx.value, value) && ctx.normalizedEvents.length) {\r\n return true;\r\n }\r\n // when it needs validation due to props/cross-fields changes.\r\n if (ctx._needsValidation) {\r\n return true;\r\n }\r\n // when the initial value is undefined and the field wasn't rendered yet.\r\n if (!ctx.initialized && value === undefined) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction createValidationCtx(ctx) {\r\n return __assign(__assign({}, ctx.flags), { errors: ctx.errors, classes: ctx.classes, failedRules: ctx.failedRules, reset: function () { return ctx.reset(); }, validate: function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return ctx.validate.apply(ctx, args);\r\n }, ariaInput: {\r\n 'aria-invalid': ctx.flags.invalid ? 'true' : 'false',\r\n 'aria-required': ctx.isRequired ? 'true' : 'false',\r\n 'aria-errormessage': \"vee_\" + ctx.id\r\n }, ariaMsg: {\r\n id: \"vee_\" + ctx.id,\r\n 'aria-live': ctx.errors.length ? 'assertive' : 'off'\r\n } });\r\n}\r\nfunction onRenderUpdate(vm, value) {\r\n if (!vm.initialized) {\r\n vm.initialValue = value;\r\n }\r\n var validateNow = shouldValidate(vm, value);\r\n vm._needsValidation = false;\r\n vm.value = value;\r\n vm._ignoreImmediate = true;\r\n if (!validateNow) {\r\n return;\r\n }\r\n var validate = function () {\r\n if (vm.immediate || vm.flags.validated) {\r\n return triggerThreadSafeValidation(vm);\r\n }\r\n vm.validateSilent();\r\n };\r\n if (vm.initialized) {\r\n validate();\r\n return;\r\n }\r\n vm.$once('hook:mounted', function () { return validate(); });\r\n}\r\nfunction computeModeSetting(ctx) {\r\n var compute = (isCallable(ctx.mode) ? ctx.mode : modes[ctx.mode]);\r\n return compute(ctx);\r\n}\r\nfunction triggerThreadSafeValidation(vm) {\r\n var pendingPromise = vm.validateSilent();\r\n // avoids race conditions between successive validations.\r\n vm._pendingValidation = pendingPromise;\r\n return pendingPromise.then(function (result) {\r\n if (pendingPromise === vm._pendingValidation) {\r\n vm.applyResult(result);\r\n vm._pendingValidation = undefined;\r\n }\r\n return result;\r\n });\r\n}\r\n// Creates the common handlers for a validatable context.\r\nfunction createCommonHandlers(vm) {\r\n if (!vm.$veeOnInput) {\r\n vm.$veeOnInput = function (e) {\r\n vm.syncValue(e); // track and keep the value updated.\r\n vm.setFlags({ dirty: true, pristine: false });\r\n };\r\n }\r\n var onInput = vm.$veeOnInput;\r\n if (!vm.$veeOnBlur) {\r\n vm.$veeOnBlur = function () {\r\n vm.setFlags({ touched: true, untouched: false });\r\n };\r\n }\r\n // Blur event listener.\r\n var onBlur = vm.$veeOnBlur;\r\n var onValidate = vm.$veeHandler;\r\n var mode = computeModeSetting(vm);\r\n // Handle debounce changes.\r\n if (!onValidate || vm.$veeDebounce !== vm.debounce) {\r\n onValidate = debounce(function () {\r\n vm.$nextTick(function () {\r\n if (!vm._pendingReset) {\r\n triggerThreadSafeValidation(vm);\r\n }\r\n vm._pendingReset = false;\r\n });\r\n }, mode.debounce || vm.debounce);\r\n // Cache the handler so we don't create it each time.\r\n vm.$veeHandler = onValidate;\r\n // cache the debounce value so we detect if it was changed.\r\n vm.$veeDebounce = vm.debounce;\r\n }\r\n return { onInput: onInput, onBlur: onBlur, onValidate: onValidate };\r\n}\r\n// Adds all plugin listeners to the vnode.\r\nfunction addListeners(vm, node) {\r\n var value = findValue(node);\r\n // cache the input eventName.\r\n vm._inputEventName = vm._inputEventName || getInputEventName(node, findModel(node));\r\n onRenderUpdate(vm, value === null || value === void 0 ? void 0 : value.value);\r\n var _a = createCommonHandlers(vm), onInput = _a.onInput, onBlur = _a.onBlur, onValidate = _a.onValidate;\r\n addVNodeListener(node, vm._inputEventName, onInput);\r\n addVNodeListener(node, 'blur', onBlur);\r\n // add the validation listeners.\r\n vm.normalizedEvents.forEach(function (evt) {\r\n addVNodeListener(node, evt, onValidate);\r\n });\r\n vm.initialized = true;\r\n}\n\nvar PROVIDER_COUNTER = 0;\r\nfunction data$1() {\r\n var errors = [];\r\n var fieldName = '';\r\n var defaultValues = {\r\n errors: errors,\r\n value: undefined,\r\n initialized: false,\r\n initialValue: undefined,\r\n flags: createFlags(),\r\n failedRules: {},\r\n isActive: true,\r\n fieldName: fieldName,\r\n id: ''\r\n };\r\n return defaultValues;\r\n}\r\nvar ValidationProvider = Vue.extend({\r\n name: 'ValidationProvider',\r\n inject: {\r\n $_veeObserver: {\r\n from: '$_veeObserver',\r\n default: function () {\r\n if (!this.$vnode.context.$_veeObserver) {\r\n this.$vnode.context.$_veeObserver = createObserver();\r\n }\r\n return this.$vnode.context.$_veeObserver;\r\n }\r\n }\r\n },\r\n props: {\r\n vid: {\r\n type: String,\r\n default: ''\r\n },\r\n name: {\r\n type: String,\r\n default: null\r\n },\r\n mode: {\r\n type: [String, Function],\r\n default: function () {\r\n return getConfig().mode;\r\n }\r\n },\r\n rules: {\r\n type: [Object, String],\r\n default: null\r\n },\r\n immediate: {\r\n type: Boolean,\r\n default: false\r\n },\r\n bails: {\r\n type: Boolean,\r\n default: function () { return getConfig().bails; }\r\n },\r\n skipIfEmpty: {\r\n type: Boolean,\r\n default: function () { return getConfig().skipOptional; }\r\n },\r\n debounce: {\r\n type: Number,\r\n default: 0\r\n },\r\n tag: {\r\n type: String,\r\n default: 'span'\r\n },\r\n slim: {\r\n type: Boolean,\r\n default: false\r\n },\r\n disabled: {\r\n type: Boolean,\r\n default: false\r\n },\r\n customMessages: {\r\n type: Object,\r\n default: function () {\r\n return {};\r\n }\r\n },\r\n detectInput: {\r\n type: Boolean,\r\n default: true\r\n }\r\n },\r\n watch: {\r\n rules: {\r\n deep: true,\r\n handler: function (val, oldVal) {\r\n this._needsValidation = !fastDeepEqual(val, oldVal);\r\n }\r\n }\r\n },\r\n data: data$1,\r\n computed: {\r\n fieldDeps: function () {\r\n var _this = this;\r\n return Object.keys(this.normalizedRules).reduce(function (acc, rule) {\r\n var deps = extractLocators(_this.normalizedRules[rule]).map(function (dep) {\r\n return isLocator(dep) ? dep.__locatorRef : dep.slice(1);\r\n });\r\n acc.push.apply(acc, deps);\r\n deps.forEach(function (depName) {\r\n watchCrossFieldDep(_this, depName);\r\n });\r\n return acc;\r\n }, []);\r\n },\r\n normalizedEvents: function () {\r\n var _this = this;\r\n var on = computeModeSetting(this).on;\r\n return (on || []).map(function (e) {\r\n if (e === 'input') {\r\n return _this._inputEventName;\r\n }\r\n return e;\r\n });\r\n },\r\n isRequired: function () {\r\n var rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);\r\n var isRequired = Object.keys(rules).some(RuleContainer.isRequireRule);\r\n this.flags.required = !!isRequired;\r\n return isRequired;\r\n },\r\n classes: function () {\r\n var names = getConfig().classes;\r\n return computeClassObj(names, this.flags);\r\n },\r\n normalizedRules: function () {\r\n return normalizeRules(this.rules);\r\n }\r\n },\r\n mounted: function () {\r\n var _this = this;\r\n var onLocaleChanged = function () {\r\n if (!_this.flags.validated) {\r\n return;\r\n }\r\n var regenerateMap = _this._regenerateMap;\r\n if (regenerateMap) {\r\n var errors_1 = [];\r\n var failedRules_1 = {};\r\n Object.keys(regenerateMap).forEach(function (rule) {\r\n var msg = regenerateMap[rule]();\r\n errors_1.push(msg);\r\n failedRules_1[rule] = msg;\r\n });\r\n _this.applyResult({ errors: errors_1, failedRules: failedRules_1, regenerateMap: regenerateMap });\r\n return;\r\n }\r\n _this.validate();\r\n };\r\n EVENT_BUS.$on('change:locale', onLocaleChanged);\r\n this.$on('hook:beforeDestroy', function () {\r\n EVENT_BUS.$off('change:locale', onLocaleChanged);\r\n });\r\n },\r\n render: function (h) {\r\n var _this = this;\r\n this.registerField();\r\n var ctx = createValidationCtx(this);\r\n var children = normalizeChildren(this, ctx);\r\n // Automatic v-model detection\r\n if (this.detectInput) {\r\n var inputs = findInputNodes(children);\r\n if (inputs.length) {\r\n inputs.forEach(function (input, idx) {\r\n var _a, _b, _c, _d, _e, _f;\r\n // If the elements are not checkboxes and there are more input nodes\r\n if (!includes(['checkbox', 'radio'], (_b = (_a = input.data) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b.type) && idx > 0) {\r\n return;\r\n }\r\n var resolved = getConfig().useConstraintAttrs ? resolveRules(input) : {};\r\n if (!fastDeepEqual(_this._resolvedRules, resolved)) {\r\n _this._needsValidation = true;\r\n }\r\n if (isHTMLNode(input)) {\r\n _this.fieldName = ((_d = (_c = input.data) === null || _c === void 0 ? void 0 : _c.attrs) === null || _d === void 0 ? void 0 : _d.name) || ((_f = (_e = input.data) === null || _e === void 0 ? void 0 : _e.attrs) === null || _f === void 0 ? void 0 : _f.id);\r\n }\r\n _this._resolvedRules = resolved;\r\n addListeners(_this, input);\r\n });\r\n }\r\n }\r\n return this.slim && children.length <= 1 ? children[0] : h(this.tag, children);\r\n },\r\n beforeDestroy: function () {\r\n // cleanup reference.\r\n this.$_veeObserver.unobserve(this.id);\r\n },\r\n activated: function () {\r\n this.isActive = true;\r\n },\r\n deactivated: function () {\r\n this.isActive = false;\r\n },\r\n methods: {\r\n setFlags: function (flags) {\r\n var _this = this;\r\n Object.keys(flags).forEach(function (flag) {\r\n _this.flags[flag] = flags[flag];\r\n });\r\n },\r\n syncValue: function (v) {\r\n var value = normalizeEventValue(v);\r\n this.value = value;\r\n this.flags.changed = !fastDeepEqual(this.initialValue, value);\r\n },\r\n reset: function () {\r\n var _this = this;\r\n this.errors = [];\r\n this.initialValue = this.value;\r\n var flags = createFlags();\r\n flags.required = this.isRequired;\r\n this.setFlags(flags);\r\n this.failedRules = {};\r\n this.validateSilent();\r\n this._pendingValidation = undefined;\r\n this._pendingReset = true;\r\n setTimeout(function () {\r\n _this._pendingReset = false;\r\n }, this.debounce);\r\n },\r\n validate: function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (args.length > 0) {\r\n this.syncValue(args[0]);\r\n }\r\n return [2 /*return*/, triggerThreadSafeValidation(this)];\r\n });\r\n });\r\n },\r\n validateSilent: function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var rules, result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.setFlags({ pending: true });\r\n rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);\r\n Object.defineProperty(rules, '_$$isNormalized', {\r\n value: true,\r\n writable: false,\r\n enumerable: false,\r\n configurable: false\r\n });\r\n return [4 /*yield*/, validate(this.value, rules, __assign(__assign({ name: this.name || this.fieldName }, createLookup(this)), { bails: this.bails, skipIfEmpty: this.skipIfEmpty, isInitial: !this.initialized, customMessages: this.customMessages }))];\r\n case 1:\r\n result = _a.sent();\r\n this.setFlags({\r\n pending: false,\r\n valid: result.valid,\r\n invalid: !result.valid\r\n });\r\n if (result.required !== undefined) {\r\n this.setFlags({\r\n required: result.required\r\n });\r\n }\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n },\r\n setErrors: function (errors) {\r\n this.applyResult({ errors: errors, failedRules: {} });\r\n },\r\n applyResult: function (_a) {\r\n var errors = _a.errors, failedRules = _a.failedRules, regenerateMap = _a.regenerateMap;\r\n this.errors = errors;\r\n this._regenerateMap = regenerateMap;\r\n this.failedRules = __assign({}, (failedRules || {}));\r\n this.setFlags({\r\n valid: !errors.length,\r\n passed: !errors.length,\r\n invalid: !!errors.length,\r\n failed: !!errors.length,\r\n validated: true,\r\n changed: !fastDeepEqual(this.value, this.initialValue)\r\n });\r\n },\r\n registerField: function () {\r\n updateRenderingContextRefs(this);\r\n },\r\n checkComputesRequiredState: function () {\r\n var rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);\r\n var isRequired = Object.keys(rules).some(RuleContainer.isRequireRule);\r\n return isRequired;\r\n }\r\n }\r\n});\r\nfunction computeClassObj(names, flags) {\r\n var acc = {};\r\n var keys = Object.keys(flags);\r\n var length = keys.length;\r\n var _loop_1 = function (i) {\r\n var flag = keys[i];\r\n var className = (names && names[flag]) || flag;\r\n var value = flags[flag];\r\n if (isNullOrUndefined(value)) {\r\n return \"continue\";\r\n }\r\n if ((flag === 'valid' || flag === 'invalid') && !flags.validated) {\r\n return \"continue\";\r\n }\r\n if (typeof className === 'string') {\r\n acc[className] = value;\r\n }\r\n else if (Array.isArray(className)) {\r\n className.forEach(function (cls) {\r\n acc[cls] = value;\r\n });\r\n }\r\n };\r\n for (var i = 0; i < length; i++) {\r\n _loop_1(i);\r\n }\r\n return acc;\r\n}\r\nfunction createLookup(vm) {\r\n var providers = vm.$_veeObserver.refs;\r\n var reduced = {\r\n names: {},\r\n values: {}\r\n };\r\n return vm.fieldDeps.reduce(function (acc, depName) {\r\n if (!providers[depName]) {\r\n return acc;\r\n }\r\n acc.values[depName] = providers[depName].value;\r\n acc.names[depName] = providers[depName].name;\r\n return acc;\r\n }, reduced);\r\n}\r\nfunction extractId(vm) {\r\n if (vm.vid) {\r\n return vm.vid;\r\n }\r\n if (vm.name) {\r\n return vm.name;\r\n }\r\n if (vm.id) {\r\n return vm.id;\r\n }\r\n if (vm.fieldName) {\r\n return vm.fieldName;\r\n }\r\n PROVIDER_COUNTER++;\r\n return \"_vee_\" + PROVIDER_COUNTER;\r\n}\r\nfunction updateRenderingContextRefs(vm) {\r\n var providedId = extractId(vm);\r\n var id = vm.id;\r\n // Nothing has changed.\r\n if (!vm.isActive || (id === providedId && vm.$_veeObserver.refs[id])) {\r\n return;\r\n }\r\n // vid was changed.\r\n if (id !== providedId && vm.$_veeObserver.refs[id] === vm) {\r\n vm.$_veeObserver.unobserve(id);\r\n }\r\n vm.id = providedId;\r\n vm.$_veeObserver.observe(vm);\r\n}\r\nfunction createObserver() {\r\n return {\r\n refs: {},\r\n observe: function (vm) {\r\n this.refs[vm.id] = vm;\r\n },\r\n unobserve: function (id) {\r\n delete this.refs[id];\r\n }\r\n };\r\n}\r\nfunction watchCrossFieldDep(ctx, depName, withHooks) {\r\n if (withHooks === void 0) { withHooks = true; }\r\n var providers = ctx.$_veeObserver.refs;\r\n if (!ctx._veeWatchers) {\r\n ctx._veeWatchers = {};\r\n }\r\n if (!providers[depName] && withHooks) {\r\n return ctx.$once('hook:mounted', function () {\r\n watchCrossFieldDep(ctx, depName, false);\r\n });\r\n }\r\n if (!isCallable(ctx._veeWatchers[depName]) && providers[depName]) {\r\n ctx._veeWatchers[depName] = providers[depName].$watch('value', function () {\r\n var isComputesRequired = ctx.checkComputesRequiredState();\r\n if (ctx.flags.validated) {\r\n ctx._needsValidation = true;\r\n ctx.validate();\r\n }\r\n // Validate dependent field silently if it has rules with computesRequired\r\n if (isComputesRequired && !ctx.flags.validated) {\r\n ctx.validateSilent();\r\n }\r\n });\r\n }\r\n}\n\nvar FLAGS_STRATEGIES = [\r\n ['pristine', 'every'],\r\n ['dirty', 'some'],\r\n ['touched', 'some'],\r\n ['untouched', 'every'],\r\n ['valid', 'every'],\r\n ['invalid', 'some'],\r\n ['pending', 'some'],\r\n ['validated', 'every'],\r\n ['changed', 'some'],\r\n ['passed', 'every'],\r\n ['failed', 'some']\r\n];\r\nvar OBSERVER_COUNTER = 0;\r\nfunction data() {\r\n var refs = {};\r\n var errors = {};\r\n var flags = createObserverFlags();\r\n var fields = {};\r\n // FIXME: Not sure of this one can be typed, circular type reference.\r\n var observers = [];\r\n return {\r\n id: '',\r\n refs: refs,\r\n observers: observers,\r\n errors: errors,\r\n flags: flags,\r\n fields: fields\r\n };\r\n}\r\nfunction provideSelf() {\r\n return {\r\n $_veeObserver: this\r\n };\r\n}\r\nvar ValidationObserver = Vue.extend({\r\n name: 'ValidationObserver',\r\n provide: provideSelf,\r\n inject: {\r\n $_veeObserver: {\r\n from: '$_veeObserver',\r\n default: function () {\r\n if (!this.$vnode.context.$_veeObserver) {\r\n return null;\r\n }\r\n return this.$vnode.context.$_veeObserver;\r\n }\r\n }\r\n },\r\n props: {\r\n tag: {\r\n type: String,\r\n default: 'span'\r\n },\r\n vid: {\r\n type: String,\r\n default: function () {\r\n return \"obs_\" + OBSERVER_COUNTER++;\r\n }\r\n },\r\n slim: {\r\n type: Boolean,\r\n default: false\r\n },\r\n disabled: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n data: data,\r\n created: function () {\r\n var _this = this;\r\n this.id = this.vid;\r\n register(this);\r\n var onChange = debounce(function (_a) {\r\n var errors = _a.errors, flags = _a.flags, fields = _a.fields;\r\n _this.errors = errors;\r\n _this.flags = flags;\r\n _this.fields = fields;\r\n }, 16);\r\n this.$watch(computeObserverState, onChange);\r\n },\r\n activated: function () {\r\n register(this);\r\n },\r\n deactivated: function () {\r\n unregister(this);\r\n },\r\n beforeDestroy: function () {\r\n unregister(this);\r\n },\r\n render: function (h) {\r\n var children = normalizeChildren(this, prepareSlotProps(this));\r\n return this.slim && children.length <= 1 ? children[0] : h(this.tag, { on: this.$listeners }, children);\r\n },\r\n methods: {\r\n observe: function (subscriber, kind) {\r\n var _a;\r\n if (kind === void 0) { kind = 'provider'; }\r\n if (kind === 'observer') {\r\n this.observers.push(subscriber);\r\n return;\r\n }\r\n this.refs = __assign(__assign({}, this.refs), (_a = {}, _a[subscriber.id] = subscriber, _a));\r\n },\r\n unobserve: function (id, kind) {\r\n if (kind === void 0) { kind = 'provider'; }\r\n if (kind === 'provider') {\r\n var provider = this.refs[id];\r\n if (!provider) {\r\n return;\r\n }\r\n this.$delete(this.refs, id);\r\n return;\r\n }\r\n var idx = findIndex(this.observers, function (o) { return o.id === id; });\r\n if (idx !== -1) {\r\n this.observers.splice(idx, 1);\r\n }\r\n },\r\n validateWithInfo: function (_a) {\r\n var _b = (_a === void 0 ? {} : _a).silent, silent = _b === void 0 ? false : _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var results, isValid, _c, errors, flags, fields;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0: return [4 /*yield*/, Promise.all(__spreadArrays(values(this.refs)\r\n .filter(function (r) { return !r.disabled; })\r\n .map(function (ref) { return ref[silent ? 'validateSilent' : 'validate']().then(function (r) { return r.valid; }); }), this.observers.filter(function (o) { return !o.disabled; }).map(function (obs) { return obs.validate({ silent: silent }); })))];\r\n case 1:\r\n results = _d.sent();\r\n isValid = results.every(function (r) { return r; });\r\n _c = computeObserverState.call(this), errors = _c.errors, flags = _c.flags, fields = _c.fields;\r\n this.errors = errors;\r\n this.flags = flags;\r\n this.fields = fields;\r\n return [2 /*return*/, {\r\n errors: errors,\r\n flags: flags,\r\n fields: fields,\r\n isValid: isValid\r\n }];\r\n }\r\n });\r\n });\r\n },\r\n validate: function (_a) {\r\n var _b = (_a === void 0 ? {} : _a).silent, silent = _b === void 0 ? false : _b;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var isValid;\r\n return __generator(this, function (_c) {\r\n switch (_c.label) {\r\n case 0: return [4 /*yield*/, this.validateWithInfo({ silent: silent })];\r\n case 1:\r\n isValid = (_c.sent()).isValid;\r\n return [2 /*return*/, isValid];\r\n }\r\n });\r\n });\r\n },\r\n handleSubmit: function (cb) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var isValid;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this.validate()];\r\n case 1:\r\n isValid = _a.sent();\r\n if (!isValid || !cb) {\r\n return [2 /*return*/];\r\n }\r\n return [2 /*return*/, cb()];\r\n }\r\n });\r\n });\r\n },\r\n reset: function () {\r\n return __spreadArrays(values(this.refs), this.observers).forEach(function (ref) { return ref.reset(); });\r\n },\r\n setErrors: function (errors) {\r\n var _this = this;\r\n Object.keys(errors).forEach(function (key) {\r\n var provider = _this.refs[key];\r\n if (!provider)\r\n return;\r\n var errorArr = errors[key] || [];\r\n errorArr = typeof errorArr === 'string' ? [errorArr] : errorArr;\r\n provider.setErrors(errorArr);\r\n });\r\n this.observers.forEach(function (observer) {\r\n observer.setErrors(errors);\r\n });\r\n }\r\n }\r\n});\r\nfunction unregister(vm) {\r\n if (vm.$_veeObserver) {\r\n vm.$_veeObserver.unobserve(vm.id, 'observer');\r\n }\r\n}\r\nfunction register(vm) {\r\n if (vm.$_veeObserver) {\r\n vm.$_veeObserver.observe(vm, 'observer');\r\n }\r\n}\r\nfunction prepareSlotProps(vm) {\r\n return __assign(__assign({}, vm.flags), { errors: vm.errors, fields: vm.fields, validate: vm.validate, validateWithInfo: vm.validateWithInfo, passes: vm.handleSubmit, handleSubmit: vm.handleSubmit, reset: vm.reset });\r\n}\r\n// Creates a modified version of validation flags\r\nfunction createObserverFlags() {\r\n return __assign(__assign({}, createFlags()), { valid: true, invalid: false });\r\n}\r\nfunction computeObserverState() {\r\n var vms = __spreadArrays(values(this.refs), this.observers.filter(function (o) { return !o.disabled; }));\r\n var errors = {};\r\n var flags = createObserverFlags();\r\n var fields = {};\r\n var length = vms.length;\r\n for (var i = 0; i < length; i++) {\r\n var vm = vms[i];\r\n // validation provider\r\n if (Array.isArray(vm.errors)) {\r\n errors[vm.id] = vm.errors;\r\n fields[vm.id] = __assign({ id: vm.id, name: vm.name, failedRules: vm.failedRules }, vm.flags);\r\n continue;\r\n }\r\n // Nested observer, merge errors and fields\r\n errors = __assign(__assign({}, errors), vm.errors);\r\n fields = __assign(__assign({}, fields), vm.fields);\r\n }\r\n FLAGS_STRATEGIES.forEach(function (_a) {\r\n var flag = _a[0], method = _a[1];\r\n flags[flag] = vms[method](function (vm) { return vm.flags[flag]; });\r\n });\r\n return { errors: errors, flags: flags, fields: fields };\r\n}\n\nfunction withValidation(component, mapProps) {\r\n var _a;\r\n if (mapProps === void 0) { mapProps = identity; }\r\n var options = 'options' in component ? component.options : component;\r\n var providerOpts = ValidationProvider.options;\r\n var hoc = {\r\n name: (options.name || 'AnonymousHoc') + \"WithValidation\",\r\n props: __assign({}, providerOpts.props),\r\n data: providerOpts.data,\r\n computed: __assign({}, providerOpts.computed),\r\n methods: __assign({}, providerOpts.methods),\r\n beforeDestroy: providerOpts.beforeDestroy,\r\n inject: providerOpts.inject\r\n };\r\n var eventName = ((_a = options === null || options === void 0 ? void 0 : options.model) === null || _a === void 0 ? void 0 : _a.event) || 'input';\r\n hoc.render = function (h) {\r\n var _a;\r\n this.registerField();\r\n var vctx = createValidationCtx(this);\r\n var listeners = __assign({}, this.$listeners);\r\n var model = findModel(this.$vnode);\r\n this._inputEventName = this._inputEventName || getInputEventName(this.$vnode, model);\r\n var value = findValue(this.$vnode);\r\n onRenderUpdate(this, value === null || value === void 0 ? void 0 : value.value);\r\n var _b = createCommonHandlers(this), onInput = _b.onInput, onBlur = _b.onBlur, onValidate = _b.onValidate;\r\n mergeVNodeListeners(listeners, eventName, onInput);\r\n mergeVNodeListeners(listeners, 'blur', onBlur);\r\n this.normalizedEvents.forEach(function (evt) {\r\n mergeVNodeListeners(listeners, evt, onValidate);\r\n });\r\n // Props are any attrs not associated with ValidationProvider Plus the model prop.\r\n // WARNING: Accidental prop overwrite will probably happen.\r\n var prop = (findModelConfig(this.$vnode) || { prop: 'value' }).prop;\r\n var props = __assign(__assign(__assign({}, this.$attrs), (_a = {}, _a[prop] = model === null || model === void 0 ? void 0 : model.value, _a)), mapProps(vctx));\r\n return h(options, {\r\n attrs: this.$attrs,\r\n props: props,\r\n on: listeners,\r\n scopedSlots: this.$scopedSlots\r\n }, normalizeSlots(this.$slots, this.$vnode.context));\r\n };\r\n return hoc;\r\n}\n\nvar version = '3.4.14';\n\nexport { ValidationObserver, ValidationProvider, configure, extend, localeChanged, localize, normalizeRules, setInteractionMode, validate, version, withValidation };\n","/*!\n * vue-i18n v8.27.1 \n * (c) 2022 kazuya kawaguchi\n * Released under the MIT License.\n */\n/* */\n\n/**\n * constants\n */\n\nvar numberFormatKeys = [\n 'compactDisplay',\n 'currency',\n 'currencyDisplay',\n 'currencySign',\n 'localeMatcher',\n 'notation',\n 'numberingSystem',\n 'signDisplay',\n 'style',\n 'unit',\n 'unitDisplay',\n 'useGrouping',\n 'minimumIntegerDigits',\n 'minimumFractionDigits',\n 'maximumFractionDigits',\n 'minimumSignificantDigits',\n 'maximumSignificantDigits'\n];\n\n/**\n * utilities\n */\n\nfunction warn (msg, err) {\n if (typeof console !== 'undefined') {\n console.warn('[vue-i18n] ' + msg);\n /* istanbul ignore if */\n if (err) {\n console.warn(err.stack);\n }\n }\n}\n\nfunction error (msg, err) {\n if (typeof console !== 'undefined') {\n console.error('[vue-i18n] ' + msg);\n /* istanbul ignore if */\n if (err) {\n console.error(err.stack);\n }\n }\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isBoolean (val) {\n return typeof val === 'boolean'\n}\n\nfunction isString (val) {\n return typeof val === 'string'\n}\n\nvar toString = Object.prototype.toString;\nvar OBJECT_STRING = '[object Object]';\nfunction isPlainObject (obj) {\n return toString.call(obj) === OBJECT_STRING\n}\n\nfunction isNull (val) {\n return val === null || val === undefined\n}\n\nfunction isFunction (val) {\n return typeof val === 'function'\n}\n\nfunction parseArgs () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var locale = null;\n var params = null;\n if (args.length === 1) {\n if (isObject(args[0]) || isArray(args[0])) {\n params = args[0];\n } else if (typeof args[0] === 'string') {\n locale = args[0];\n }\n } else if (args.length === 2) {\n if (typeof args[0] === 'string') {\n locale = args[0];\n }\n /* istanbul ignore if */\n if (isObject(args[1]) || isArray(args[1])) {\n params = args[1];\n }\n }\n\n return { locale: locale, params: params }\n}\n\nfunction looseClone (obj) {\n return JSON.parse(JSON.stringify(obj))\n}\n\nfunction remove (arr, item) {\n if (arr.delete(item)) {\n return arr\n }\n}\n\nfunction arrayFrom (arr) {\n var ret = [];\n arr.forEach(function (a) { return ret.push(a); });\n return ret\n}\n\nfunction includes (arr, item) {\n return !!~arr.indexOf(item)\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\nfunction merge (target) {\n var arguments$1 = arguments;\n\n var output = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments$1[i];\n if (source !== undefined && source !== null) {\n var key = (void 0);\n for (key in source) {\n if (hasOwn(source, key)) {\n if (isObject(source[key])) {\n output[key] = merge(output[key], source[key]);\n } else {\n output[key] = source[key];\n }\n }\n }\n }\n }\n return output\n}\n\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = isArray(a);\n var isArrayB = isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Sanitizes html special characters from input strings. For mitigating risk of XSS attacks.\n * @param rawText The raw input from the user that should be escaped.\n */\nfunction escapeHtml(rawText) {\n return rawText\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n}\n\n/**\n * Escapes html tags and special symbols from all provided params which were returned from parseArgs().params.\n * This method performs an in-place operation on the params object.\n *\n * @param {any} params Parameters as provided from `parseArgs().params`.\n * May be either an array of strings or a string->any map.\n *\n * @returns The manipulated `params` object.\n */\nfunction escapeParams(params) {\n if(params != null) {\n Object.keys(params).forEach(function (key) {\n if(typeof(params[key]) == 'string') {\n params[key] = escapeHtml(params[key]);\n }\n });\n }\n return params\n}\n\n/* */\n\nfunction extend (Vue) {\n if (!Vue.prototype.hasOwnProperty('$i18n')) {\n // $FlowFixMe\n Object.defineProperty(Vue.prototype, '$i18n', {\n get: function get () { return this._i18n }\n });\n }\n\n Vue.prototype.$t = function (key) {\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n\n var i18n = this.$i18n;\n return i18n._t.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this ].concat( values ))\n };\n\n Vue.prototype.$tc = function (key, choice) {\n var values = [], len = arguments.length - 2;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n\n var i18n = this.$i18n;\n return i18n._tc.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this, choice ].concat( values ))\n };\n\n Vue.prototype.$te = function (key, locale) {\n var i18n = this.$i18n;\n return i18n._te(key, i18n.locale, i18n._getMessages(), locale)\n };\n\n Vue.prototype.$d = function (value) {\n var ref;\n\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n return (ref = this.$i18n).d.apply(ref, [ value ].concat( args ))\n };\n\n Vue.prototype.$n = function (value) {\n var ref;\n\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n return (ref = this.$i18n).n.apply(ref, [ value ].concat( args ))\n };\n}\n\n/* */\n\n/**\n * Mixin\n * \n * If `bridge` mode, empty mixin is returned,\n * else regulary mixin implementation is returned.\n */\nfunction defineMixin (bridge) {\n if ( bridge === void 0 ) bridge = false;\n\n function mounted () {\n if (this !== this.$root && this.$options.__INTLIFY_META__ && this.$el) {\n this.$el.setAttribute('data-intlify', this.$options.__INTLIFY_META__);\n }\n }\n\n return bridge\n ? { mounted: mounted } // delegate `vue-i18n-bridge` mixin implementation\n : { // regulary \n beforeCreate: function beforeCreate () {\n var options = this.$options;\n options.i18n = options.i18n || ((options.__i18nBridge || options.__i18n) ? {} : null);\n\n if (options.i18n) {\n if (options.i18n instanceof VueI18n) {\n // init locale messages via custom blocks\n if ((options.__i18nBridge || options.__i18n)) {\n try {\n var localeMessages = options.i18n && options.i18n.messages ? options.i18n.messages : {};\n var _i18n = options.__i18nBridge || options.__i18n;\n _i18n.forEach(function (resource) {\n localeMessages = merge(localeMessages, JSON.parse(resource));\n });\n Object.keys(localeMessages).forEach(function (locale) {\n options.i18n.mergeLocaleMessage(locale, localeMessages[locale]);\n });\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n error(\"Cannot parse locale messages via custom blocks.\", e);\n }\n }\n }\n this._i18n = options.i18n;\n this._i18nWatcher = this._i18n.watchI18nData();\n } else if (isPlainObject(options.i18n)) {\n var rootI18n = this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n\n ? this.$root.$i18n\n : null;\n // component local i18n\n if (rootI18n) {\n options.i18n.root = this.$root;\n options.i18n.formatter = rootI18n.formatter;\n options.i18n.fallbackLocale = rootI18n.fallbackLocale;\n options.i18n.formatFallbackMessages = rootI18n.formatFallbackMessages;\n options.i18n.silentTranslationWarn = rootI18n.silentTranslationWarn;\n options.i18n.silentFallbackWarn = rootI18n.silentFallbackWarn;\n options.i18n.pluralizationRules = rootI18n.pluralizationRules;\n options.i18n.preserveDirectiveContent = rootI18n.preserveDirectiveContent;\n }\n\n // init locale messages via custom blocks\n if ((options.__i18nBridge || options.__i18n)) {\n try {\n var localeMessages$1 = options.i18n && options.i18n.messages ? options.i18n.messages : {};\n var _i18n$1 = options.__i18nBridge || options.__i18n;\n _i18n$1.forEach(function (resource) {\n localeMessages$1 = merge(localeMessages$1, JSON.parse(resource));\n });\n options.i18n.messages = localeMessages$1;\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Cannot parse locale messages via custom blocks.\", e);\n }\n }\n }\n\n var ref = options.i18n;\n var sharedMessages = ref.sharedMessages;\n if (sharedMessages && isPlainObject(sharedMessages)) {\n options.i18n.messages = merge(options.i18n.messages, sharedMessages);\n }\n\n this._i18n = new VueI18n(options.i18n);\n this._i18nWatcher = this._i18n.watchI18nData();\n\n if (options.i18n.sync === undefined || !!options.i18n.sync) {\n this._localeWatcher = this.$i18n.watchLocale();\n }\n\n if (rootI18n) {\n rootI18n.onComponentInstanceCreated(this._i18n);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Cannot be interpreted 'i18n' option.\");\n }\n }\n } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n // root i18n\n this._i18n = this.$root.$i18n;\n } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n // parent i18n\n this._i18n = options.parent.$i18n;\n }\n },\n\n beforeMount: function beforeMount () {\n var options = this.$options;\n options.i18n = options.i18n || ((options.__i18nBridge || options.__i18n) ? {} : null);\n\n if (options.i18n) {\n if (options.i18n instanceof VueI18n) {\n // init locale messages via custom blocks\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n } else if (isPlainObject(options.i18n)) {\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Cannot be interpreted 'i18n' option.\");\n }\n }\n } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n this._i18n.subscribeDataChanging(this);\n this._subscribing = true;\n }\n },\n\n mounted: mounted,\n\n beforeDestroy: function beforeDestroy () {\n if (!this._i18n) { return }\n\n var self = this;\n this.$nextTick(function () {\n if (self._subscribing) {\n self._i18n.unsubscribeDataChanging(self);\n delete self._subscribing;\n }\n\n if (self._i18nWatcher) {\n self._i18nWatcher();\n self._i18n.destroyVM();\n delete self._i18nWatcher;\n }\n\n if (self._localeWatcher) {\n self._localeWatcher();\n delete self._localeWatcher;\n }\n });\n }\n }\n}\n\n/* */\n\nvar interpolationComponent = {\n name: 'i18n',\n functional: true,\n props: {\n tag: {\n type: [String, Boolean, Object],\n default: 'span'\n },\n path: {\n type: String,\n required: true\n },\n locale: {\n type: String\n },\n places: {\n type: [Array, Object]\n }\n },\n render: function render (h, ref) {\n var data = ref.data;\n var parent = ref.parent;\n var props = ref.props;\n var slots = ref.slots;\n\n var $i18n = parent.$i18n;\n if (!$i18n) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot find VueI18n instance!');\n }\n return\n }\n\n var path = props.path;\n var locale = props.locale;\n var places = props.places;\n var params = slots();\n var children = $i18n.i(\n path,\n locale,\n onlyHasDefaultPlace(params) || places\n ? useLegacyPlaces(params.default, places)\n : params\n );\n\n var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n return tag ? h(tag, data, children) : children\n }\n};\n\nfunction onlyHasDefaultPlace (params) {\n var prop;\n for (prop in params) {\n if (prop !== 'default') { return false }\n }\n return Boolean(prop)\n}\n\nfunction useLegacyPlaces (children, places) {\n var params = places ? createParamsFromPlaces(places) : {};\n\n if (!children) { return params }\n\n // Filter empty text nodes\n children = children.filter(function (child) {\n return child.tag || child.text.trim() !== ''\n });\n\n var everyPlace = children.every(vnodeHasPlaceAttribute);\n if (process.env.NODE_ENV !== 'production' && everyPlace) {\n warn('`place` attribute is deprecated in next major version. Please switch to Vue slots.');\n }\n\n return children.reduce(\n everyPlace ? assignChildPlace : assignChildIndex,\n params\n )\n}\n\nfunction createParamsFromPlaces (places) {\n if (process.env.NODE_ENV !== 'production') {\n warn('`places` prop is deprecated in next major version. Please switch to Vue slots.');\n }\n\n return Array.isArray(places)\n ? places.reduce(assignChildIndex, {})\n : Object.assign({}, places)\n}\n\nfunction assignChildPlace (params, child) {\n if (child.data && child.data.attrs && child.data.attrs.place) {\n params[child.data.attrs.place] = child;\n }\n return params\n}\n\nfunction assignChildIndex (params, child, index) {\n params[index] = child;\n return params\n}\n\nfunction vnodeHasPlaceAttribute (vnode) {\n return Boolean(vnode.data && vnode.data.attrs && vnode.data.attrs.place)\n}\n\n/* */\n\nvar numberComponent = {\n name: 'i18n-n',\n functional: true,\n props: {\n tag: {\n type: [String, Boolean, Object],\n default: 'span'\n },\n value: {\n type: Number,\n required: true\n },\n format: {\n type: [String, Object]\n },\n locale: {\n type: String\n }\n },\n render: function render (h, ref) {\n var props = ref.props;\n var parent = ref.parent;\n var data = ref.data;\n\n var i18n = parent.$i18n;\n\n if (!i18n) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot find VueI18n instance!');\n }\n return null\n }\n\n var key = null;\n var options = null;\n\n if (isString(props.format)) {\n key = props.format;\n } else if (isObject(props.format)) {\n if (props.format.key) {\n key = props.format.key;\n }\n\n // Filter out number format options only\n options = Object.keys(props.format).reduce(function (acc, prop) {\n var obj;\n\n if (includes(numberFormatKeys, prop)) {\n return Object.assign({}, acc, ( obj = {}, obj[prop] = props.format[prop], obj ))\n }\n return acc\n }, null);\n }\n\n var locale = props.locale || i18n.locale;\n var parts = i18n._ntp(props.value, locale, key, options);\n\n var values = parts.map(function (part, index) {\n var obj;\n\n var slot = data.scopedSlots && data.scopedSlots[part.type];\n return slot ? slot(( obj = {}, obj[part.type] = part.value, obj.index = index, obj.parts = parts, obj )) : part.value\n });\n\n var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n return tag\n ? h(tag, {\n attrs: data.attrs,\n 'class': data['class'],\n staticClass: data.staticClass\n }, values)\n : values\n }\n};\n\n/* */\n\nfunction bind (el, binding, vnode) {\n if (!assert(el, vnode)) { return }\n\n t(el, binding, vnode);\n}\n\nfunction update (el, binding, vnode, oldVNode) {\n if (!assert(el, vnode)) { return }\n\n var i18n = vnode.context.$i18n;\n if (localeEqual(el, vnode) &&\n (looseEqual(binding.value, binding.oldValue) &&\n looseEqual(el._localeMessage, i18n.getLocaleMessage(i18n.locale)))) { return }\n\n t(el, binding, vnode);\n}\n\nfunction unbind (el, binding, vnode, oldVNode) {\n var vm = vnode.context;\n if (!vm) {\n warn('Vue instance does not exists in VNode context');\n return\n }\n\n var i18n = vnode.context.$i18n || {};\n if (!binding.modifiers.preserve && !i18n.preserveDirectiveContent) {\n el.textContent = '';\n }\n el._vt = undefined;\n delete el['_vt'];\n el._locale = undefined;\n delete el['_locale'];\n el._localeMessage = undefined;\n delete el['_localeMessage'];\n}\n\nfunction assert (el, vnode) {\n var vm = vnode.context;\n if (!vm) {\n warn('Vue instance does not exists in VNode context');\n return false\n }\n\n if (!vm.$i18n) {\n warn('VueI18n instance does not exists in Vue instance');\n return false\n }\n\n return true\n}\n\nfunction localeEqual (el, vnode) {\n var vm = vnode.context;\n return el._locale === vm.$i18n.locale\n}\n\nfunction t (el, binding, vnode) {\n var ref$1, ref$2;\n\n var value = binding.value;\n\n var ref = parseValue(value);\n var path = ref.path;\n var locale = ref.locale;\n var args = ref.args;\n var choice = ref.choice;\n if (!path && !locale && !args) {\n warn('value type not supported');\n return\n }\n\n if (!path) {\n warn('`path` is required in v-t directive');\n return\n }\n\n var vm = vnode.context;\n if (choice != null) {\n el._vt = el.textContent = (ref$1 = vm.$i18n).tc.apply(ref$1, [ path, choice ].concat( makeParams(locale, args) ));\n } else {\n el._vt = el.textContent = (ref$2 = vm.$i18n).t.apply(ref$2, [ path ].concat( makeParams(locale, args) ));\n }\n el._locale = vm.$i18n.locale;\n el._localeMessage = vm.$i18n.getLocaleMessage(vm.$i18n.locale);\n}\n\nfunction parseValue (value) {\n var path;\n var locale;\n var args;\n var choice;\n\n if (isString(value)) {\n path = value;\n } else if (isPlainObject(value)) {\n path = value.path;\n locale = value.locale;\n args = value.args;\n choice = value.choice;\n }\n\n return { path: path, locale: locale, args: args, choice: choice }\n}\n\nfunction makeParams (locale, args) {\n var params = [];\n\n locale && params.push(locale);\n if (args && (Array.isArray(args) || isPlainObject(args))) {\n params.push(args);\n }\n\n return params\n}\n\nvar Vue;\n\nfunction install (_Vue, options) {\n if ( options === void 0 ) options = { bridge: false };\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && install.installed && _Vue === Vue) {\n warn('already installed.');\n return\n }\n install.installed = true;\n\n Vue = _Vue;\n\n var version = (Vue.version && Number(Vue.version.split('.')[0])) || -1;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && version < 2) {\n warn((\"vue-i18n (\" + (install.version) + \") need to use Vue 2.0 or later (Vue: \" + (Vue.version) + \").\"));\n return\n }\n\n extend(Vue);\n Vue.mixin(defineMixin(options.bridge));\n Vue.directive('t', { bind: bind, update: update, unbind: unbind });\n Vue.component(interpolationComponent.name, interpolationComponent);\n Vue.component(numberComponent.name, numberComponent);\n\n // use simple mergeStrategies to prevent i18n instance lose '__proto__'\n var strats = Vue.config.optionMergeStrategies;\n strats.i18n = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n };\n}\n\n/* */\n\nvar BaseFormatter = function BaseFormatter () {\n this._caches = Object.create(null);\n};\n\nBaseFormatter.prototype.interpolate = function interpolate (message, values) {\n if (!values) {\n return [message]\n }\n var tokens = this._caches[message];\n if (!tokens) {\n tokens = parse(message);\n this._caches[message] = tokens;\n }\n return compile(tokens, values)\n};\n\n\n\nvar RE_TOKEN_LIST_VALUE = /^(?:\\d)+/;\nvar RE_TOKEN_NAMED_VALUE = /^(?:\\w)+/;\n\nfunction parse (format) {\n var tokens = [];\n var position = 0;\n\n var text = '';\n while (position < format.length) {\n var char = format[position++];\n if (char === '{') {\n if (text) {\n tokens.push({ type: 'text', value: text });\n }\n\n text = '';\n var sub = '';\n char = format[position++];\n while (char !== undefined && char !== '}') {\n sub += char;\n char = format[position++];\n }\n var isClosed = char === '}';\n\n var type = RE_TOKEN_LIST_VALUE.test(sub)\n ? 'list'\n : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)\n ? 'named'\n : 'unknown';\n tokens.push({ value: sub, type: type });\n } else if (char === '%') {\n // when found rails i18n syntax, skip text capture\n if (format[(position)] !== '{') {\n text += char;\n }\n } else {\n text += char;\n }\n }\n\n text && tokens.push({ type: 'text', value: text });\n\n return tokens\n}\n\nfunction compile (tokens, values) {\n var compiled = [];\n var index = 0;\n\n var mode = Array.isArray(values)\n ? 'list'\n : isObject(values)\n ? 'named'\n : 'unknown';\n if (mode === 'unknown') { return compiled }\n\n while (index < tokens.length) {\n var token = tokens[index];\n switch (token.type) {\n case 'text':\n compiled.push(token.value);\n break\n case 'list':\n compiled.push(values[parseInt(token.value, 10)]);\n break\n case 'named':\n if (mode === 'named') {\n compiled.push((values)[token.value]);\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Type of token '\" + (token.type) + \"' and format of value '\" + mode + \"' don't match!\"));\n }\n }\n break\n case 'unknown':\n if (process.env.NODE_ENV !== 'production') {\n warn(\"Detect 'unknown' type of token!\");\n }\n break\n }\n index++;\n }\n\n return compiled\n}\n\n/* */\n\n/**\n * Path parser\n * - Inspired:\n * Vue.js Path parser\n */\n\n// actions\nvar APPEND = 0;\nvar PUSH = 1;\nvar INC_SUB_PATH_DEPTH = 2;\nvar PUSH_SUB_PATH = 3;\n\n// states\nvar BEFORE_PATH = 0;\nvar IN_PATH = 1;\nvar BEFORE_IDENT = 2;\nvar IN_IDENT = 3;\nvar IN_SUB_PATH = 4;\nvar IN_SINGLE_QUOTE = 5;\nvar IN_DOUBLE_QUOTE = 6;\nvar AFTER_PATH = 7;\nvar ERROR = 8;\n\nvar pathStateMachine = [];\n\npathStateMachine[BEFORE_PATH] = {\n 'ws': [BEFORE_PATH],\n 'ident': [IN_IDENT, APPEND],\n '[': [IN_SUB_PATH],\n 'eof': [AFTER_PATH]\n};\n\npathStateMachine[IN_PATH] = {\n 'ws': [IN_PATH],\n '.': [BEFORE_IDENT],\n '[': [IN_SUB_PATH],\n 'eof': [AFTER_PATH]\n};\n\npathStateMachine[BEFORE_IDENT] = {\n 'ws': [BEFORE_IDENT],\n 'ident': [IN_IDENT, APPEND],\n '0': [IN_IDENT, APPEND],\n 'number': [IN_IDENT, APPEND]\n};\n\npathStateMachine[IN_IDENT] = {\n 'ident': [IN_IDENT, APPEND],\n '0': [IN_IDENT, APPEND],\n 'number': [IN_IDENT, APPEND],\n 'ws': [IN_PATH, PUSH],\n '.': [BEFORE_IDENT, PUSH],\n '[': [IN_SUB_PATH, PUSH],\n 'eof': [AFTER_PATH, PUSH]\n};\n\npathStateMachine[IN_SUB_PATH] = {\n \"'\": [IN_SINGLE_QUOTE, APPEND],\n '\"': [IN_DOUBLE_QUOTE, APPEND],\n '[': [IN_SUB_PATH, INC_SUB_PATH_DEPTH],\n ']': [IN_PATH, PUSH_SUB_PATH],\n 'eof': ERROR,\n 'else': [IN_SUB_PATH, APPEND]\n};\n\npathStateMachine[IN_SINGLE_QUOTE] = {\n \"'\": [IN_SUB_PATH, APPEND],\n 'eof': ERROR,\n 'else': [IN_SINGLE_QUOTE, APPEND]\n};\n\npathStateMachine[IN_DOUBLE_QUOTE] = {\n '\"': [IN_SUB_PATH, APPEND],\n 'eof': ERROR,\n 'else': [IN_DOUBLE_QUOTE, APPEND]\n};\n\n/**\n * Check if an expression is a literal value.\n */\n\nvar literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\nfunction isLiteral (exp) {\n return literalValueRE.test(exp)\n}\n\n/**\n * Strip quotes from a string\n */\n\nfunction stripQuotes (str) {\n var a = str.charCodeAt(0);\n var b = str.charCodeAt(str.length - 1);\n return a === b && (a === 0x22 || a === 0x27)\n ? str.slice(1, -1)\n : str\n}\n\n/**\n * Determine the type of a character in a keypath.\n */\n\nfunction getPathCharType (ch) {\n if (ch === undefined || ch === null) { return 'eof' }\n\n var code = ch.charCodeAt(0);\n\n switch (code) {\n case 0x5B: // [\n case 0x5D: // ]\n case 0x2E: // .\n case 0x22: // \"\n case 0x27: // '\n return ch\n\n case 0x5F: // _\n case 0x24: // $\n case 0x2D: // -\n return 'ident'\n\n case 0x09: // Tab\n case 0x0A: // Newline\n case 0x0D: // Return\n case 0xA0: // No-break space\n case 0xFEFF: // Byte Order Mark\n case 0x2028: // Line Separator\n case 0x2029: // Paragraph Separator\n return 'ws'\n }\n\n return 'ident'\n}\n\n/**\n * Format a subPath, return its plain form if it is\n * a literal string or number. Otherwise prepend the\n * dynamic indicator (*).\n */\n\nfunction formatSubPath (path) {\n var trimmed = path.trim();\n // invalid leading 0\n if (path.charAt(0) === '0' && isNaN(path)) { return false }\n\n return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed\n}\n\n/**\n * Parse a string path into an array of segments\n */\n\nfunction parse$1 (path) {\n var keys = [];\n var index = -1;\n var mode = BEFORE_PATH;\n var subPathDepth = 0;\n var c;\n var key;\n var newChar;\n var type;\n var transition;\n var action;\n var typeMap;\n var actions = [];\n\n actions[PUSH] = function () {\n if (key !== undefined) {\n keys.push(key);\n key = undefined;\n }\n };\n\n actions[APPEND] = function () {\n if (key === undefined) {\n key = newChar;\n } else {\n key += newChar;\n }\n };\n\n actions[INC_SUB_PATH_DEPTH] = function () {\n actions[APPEND]();\n subPathDepth++;\n };\n\n actions[PUSH_SUB_PATH] = function () {\n if (subPathDepth > 0) {\n subPathDepth--;\n mode = IN_SUB_PATH;\n actions[APPEND]();\n } else {\n subPathDepth = 0;\n if (key === undefined) { return false }\n key = formatSubPath(key);\n if (key === false) {\n return false\n } else {\n actions[PUSH]();\n }\n }\n };\n\n function maybeUnescapeQuote () {\n var nextChar = path[index + 1];\n if ((mode === IN_SINGLE_QUOTE && nextChar === \"'\") ||\n (mode === IN_DOUBLE_QUOTE && nextChar === '\"')) {\n index++;\n newChar = '\\\\' + nextChar;\n actions[APPEND]();\n return true\n }\n }\n\n while (mode !== null) {\n index++;\n c = path[index];\n\n if (c === '\\\\' && maybeUnescapeQuote()) {\n continue\n }\n\n type = getPathCharType(c);\n typeMap = pathStateMachine[mode];\n transition = typeMap[type] || typeMap['else'] || ERROR;\n\n if (transition === ERROR) {\n return // parse error\n }\n\n mode = transition[0];\n action = actions[transition[1]];\n if (action) {\n newChar = transition[2];\n newChar = newChar === undefined\n ? c\n : newChar;\n if (action() === false) {\n return\n }\n }\n\n if (mode === AFTER_PATH) {\n return keys\n }\n }\n}\n\n\n\n\n\nvar I18nPath = function I18nPath () {\n this._cache = Object.create(null);\n};\n\n/**\n * External parse that check for a cache hit first\n */\nI18nPath.prototype.parsePath = function parsePath (path) {\n var hit = this._cache[path];\n if (!hit) {\n hit = parse$1(path);\n if (hit) {\n this._cache[path] = hit;\n }\n }\n return hit || []\n};\n\n/**\n * Get path value from path string\n */\nI18nPath.prototype.getPathValue = function getPathValue (obj, path) {\n if (!isObject(obj)) { return null }\n\n var paths = this.parsePath(path);\n if (paths.length === 0) {\n return null\n } else {\n var length = paths.length;\n var last = obj;\n var i = 0;\n while (i < length) {\n var value = last[paths[i]];\n if (value === undefined || value === null) {\n return null\n }\n last = value;\n i++;\n }\n\n return last\n }\n};\n\n/* */\n\n\n\nvar htmlTagMatcher = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\nvar linkKeyMatcher = /(?:@(?:\\.[a-z]+)?:(?:[\\w\\-_|./]+|\\([\\w\\-_:|./]+\\)))/g;\nvar linkKeyPrefixMatcher = /^@(?:\\.([a-z]+))?:/;\nvar bracketsMatcher = /[()]/g;\nvar defaultModifiers = {\n 'upper': function (str) { return str.toLocaleUpperCase(); },\n 'lower': function (str) { return str.toLocaleLowerCase(); },\n 'capitalize': function (str) { return (\"\" + (str.charAt(0).toLocaleUpperCase()) + (str.substr(1))); }\n};\n\nvar defaultFormatter = new BaseFormatter();\n\nvar VueI18n = function VueI18n (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #290\n /* istanbul ignore if */\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n var locale = options.locale || 'en-US';\n var fallbackLocale = options.fallbackLocale === false\n ? false\n : options.fallbackLocale || 'en-US';\n var messages = options.messages || {};\n var dateTimeFormats = options.dateTimeFormats || options.datetimeFormats || {};\n var numberFormats = options.numberFormats || {};\n\n this._vm = null;\n this._formatter = options.formatter || defaultFormatter;\n this._modifiers = options.modifiers || {};\n this._missing = options.missing || null;\n this._root = options.root || null;\n this._sync = options.sync === undefined ? true : !!options.sync;\n this._fallbackRoot = options.fallbackRoot === undefined\n ? true\n : !!options.fallbackRoot;\n this._fallbackRootWithEmptyString = options.fallbackRootWithEmptyString === undefined\n ? true\n : !!options.fallbackRootWithEmptyString;\n this._formatFallbackMessages = options.formatFallbackMessages === undefined\n ? false\n : !!options.formatFallbackMessages;\n this._silentTranslationWarn = options.silentTranslationWarn === undefined\n ? false\n : options.silentTranslationWarn;\n this._silentFallbackWarn = options.silentFallbackWarn === undefined\n ? false\n : !!options.silentFallbackWarn;\n this._dateTimeFormatters = {};\n this._numberFormatters = {};\n this._path = new I18nPath();\n this._dataListeners = new Set();\n this._componentInstanceCreatedListener = options.componentInstanceCreatedListener || null;\n this._preserveDirectiveContent = options.preserveDirectiveContent === undefined\n ? false\n : !!options.preserveDirectiveContent;\n this.pluralizationRules = options.pluralizationRules || {};\n this._warnHtmlInMessage = options.warnHtmlInMessage || 'off';\n this._postTranslation = options.postTranslation || null;\n this._escapeParameterHtml = options.escapeParameterHtml || false;\n\n if ('__VUE_I18N_BRIDGE__' in options) {\n this.__VUE_I18N_BRIDGE__ = options.__VUE_I18N_BRIDGE__;\n }\n\n /**\n * @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`\n * @param choicesLength {number} an overall amount of available choices\n * @returns a final choice index\n */\n this.getChoiceIndex = function (choice, choicesLength) {\n var thisPrototype = Object.getPrototypeOf(this$1);\n if (thisPrototype && thisPrototype.getChoiceIndex) {\n var prototypeGetChoiceIndex = (thisPrototype.getChoiceIndex);\n return (prototypeGetChoiceIndex).call(this$1, choice, choicesLength)\n }\n\n // Default (old) getChoiceIndex implementation - english-compatible\n var defaultImpl = function (_choice, _choicesLength) {\n _choice = Math.abs(_choice);\n\n if (_choicesLength === 2) {\n return _choice\n ? _choice > 1\n ? 1\n : 0\n : 1\n }\n\n return _choice ? Math.min(_choice, 2) : 0\n };\n\n if (this$1.locale in this$1.pluralizationRules) {\n return this$1.pluralizationRules[this$1.locale].apply(this$1, [choice, choicesLength])\n } else {\n return defaultImpl(choice, choicesLength)\n }\n };\n\n\n this._exist = function (message, key) {\n if (!message || !key) { return false }\n if (!isNull(this$1._path.getPathValue(message, key))) { return true }\n // fallback for flat key\n if (message[key]) { return true }\n return false\n };\n\n if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n Object.keys(messages).forEach(function (locale) {\n this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n });\n }\n\n this._initVM({\n locale: locale,\n fallbackLocale: fallbackLocale,\n messages: messages,\n dateTimeFormats: dateTimeFormats,\n numberFormats: numberFormats\n });\n};\n\nvar prototypeAccessors = { vm: { configurable: true },messages: { configurable: true },dateTimeFormats: { configurable: true },numberFormats: { configurable: true },availableLocales: { configurable: true },locale: { configurable: true },fallbackLocale: { configurable: true },formatFallbackMessages: { configurable: true },missing: { configurable: true },formatter: { configurable: true },silentTranslationWarn: { configurable: true },silentFallbackWarn: { configurable: true },preserveDirectiveContent: { configurable: true },warnHtmlInMessage: { configurable: true },postTranslation: { configurable: true },sync: { configurable: true } };\n\nVueI18n.prototype._checkLocaleMessage = function _checkLocaleMessage (locale, level, message) {\n var paths = [];\n\n var fn = function (level, locale, message, paths) {\n if (isPlainObject(message)) {\n Object.keys(message).forEach(function (key) {\n var val = message[key];\n if (isPlainObject(val)) {\n paths.push(key);\n paths.push('.');\n fn(level, locale, val, paths);\n paths.pop();\n paths.pop();\n } else {\n paths.push(key);\n fn(level, locale, val, paths);\n paths.pop();\n }\n });\n } else if (isArray(message)) {\n message.forEach(function (item, index) {\n if (isPlainObject(item)) {\n paths.push((\"[\" + index + \"]\"));\n paths.push('.');\n fn(level, locale, item, paths);\n paths.pop();\n paths.pop();\n } else {\n paths.push((\"[\" + index + \"]\"));\n fn(level, locale, item, paths);\n paths.pop();\n }\n });\n } else if (isString(message)) {\n var ret = htmlTagMatcher.test(message);\n if (ret) {\n var msg = \"Detected HTML in message '\" + message + \"' of keypath '\" + (paths.join('')) + \"' at '\" + locale + \"'. Consider component interpolation with '<i18n>' to avoid XSS. See https://bit.ly/2ZqJzkp\";\n if (level === 'warn') {\n warn(msg);\n } else if (level === 'error') {\n error(msg);\n }\n }\n }\n };\n\n fn(level, locale, message, paths);\n};\n\nVueI18n.prototype._initVM = function _initVM (data) {\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n this._vm = new Vue({ data: data, __VUE18N__INSTANCE__: true });\n Vue.config.silent = silent;\n};\n\nVueI18n.prototype.destroyVM = function destroyVM () {\n this._vm.$destroy();\n};\n\nVueI18n.prototype.subscribeDataChanging = function subscribeDataChanging (vm) {\n this._dataListeners.add(vm);\n};\n\nVueI18n.prototype.unsubscribeDataChanging = function unsubscribeDataChanging (vm) {\n remove(this._dataListeners, vm);\n};\n\nVueI18n.prototype.watchI18nData = function watchI18nData () {\n var this$1 = this;\n return this._vm.$watch('$data', function () {\n var listeners = arrayFrom(this$1._dataListeners);\n var i = listeners.length;\n while(i--) {\n Vue.nextTick(function () {\n listeners[i] && listeners[i].$forceUpdate();\n });\n }\n }, { deep: true })\n};\n\nVueI18n.prototype.watchLocale = function watchLocale (composer) {\n if (!composer) {\n /* istanbul ignore if */\n if (!this._sync || !this._root) { return null }\n var target = this._vm;\n return this._root.$i18n.vm.$watch('locale', function (val) {\n target.$set(target, 'locale', val);\n target.$forceUpdate();\n }, { immediate: true })\n } else {\n // deal with vue-i18n-bridge\n if (!this.__VUE_I18N_BRIDGE__) { return null }\n var self = this;\n var target$1 = this._vm;\n return this.vm.$watch('locale', function (val) {\n target$1.$set(target$1, 'locale', val);\n if (self.__VUE_I18N_BRIDGE__ && composer) {\n composer.locale.value = val;\n }\n target$1.$forceUpdate();\n }, { immediate: true })\n }\n};\n\nVueI18n.prototype.onComponentInstanceCreated = function onComponentInstanceCreated (newI18n) {\n if (this._componentInstanceCreatedListener) {\n this._componentInstanceCreatedListener(newI18n, this);\n }\n};\n\nprototypeAccessors.vm.get = function () { return this._vm };\n\nprototypeAccessors.messages.get = function () { return looseClone(this._getMessages()) };\nprototypeAccessors.dateTimeFormats.get = function () { return looseClone(this._getDateTimeFormats()) };\nprototypeAccessors.numberFormats.get = function () { return looseClone(this._getNumberFormats()) };\nprototypeAccessors.availableLocales.get = function () { return Object.keys(this.messages).sort() };\n\nprototypeAccessors.locale.get = function () { return this._vm.locale };\nprototypeAccessors.locale.set = function (locale) {\n this._vm.$set(this._vm, 'locale', locale);\n};\n\nprototypeAccessors.fallbackLocale.get = function () { return this._vm.fallbackLocale };\nprototypeAccessors.fallbackLocale.set = function (locale) {\n this._localeChainCache = {};\n this._vm.$set(this._vm, 'fallbackLocale', locale);\n};\n\nprototypeAccessors.formatFallbackMessages.get = function () { return this._formatFallbackMessages };\nprototypeAccessors.formatFallbackMessages.set = function (fallback) { this._formatFallbackMessages = fallback; };\n\nprototypeAccessors.missing.get = function () { return this._missing };\nprototypeAccessors.missing.set = function (handler) { this._missing = handler; };\n\nprototypeAccessors.formatter.get = function () { return this._formatter };\nprototypeAccessors.formatter.set = function (formatter) { this._formatter = formatter; };\n\nprototypeAccessors.silentTranslationWarn.get = function () { return this._silentTranslationWarn };\nprototypeAccessors.silentTranslationWarn.set = function (silent) { this._silentTranslationWarn = silent; };\n\nprototypeAccessors.silentFallbackWarn.get = function () { return this._silentFallbackWarn };\nprototypeAccessors.silentFallbackWarn.set = function (silent) { this._silentFallbackWarn = silent; };\n\nprototypeAccessors.preserveDirectiveContent.get = function () { return this._preserveDirectiveContent };\nprototypeAccessors.preserveDirectiveContent.set = function (preserve) { this._preserveDirectiveContent = preserve; };\n\nprototypeAccessors.warnHtmlInMessage.get = function () { return this._warnHtmlInMessage };\nprototypeAccessors.warnHtmlInMessage.set = function (level) {\n var this$1 = this;\n\n var orgLevel = this._warnHtmlInMessage;\n this._warnHtmlInMessage = level;\n if (orgLevel !== level && (level === 'warn' || level === 'error')) {\n var messages = this._getMessages();\n Object.keys(messages).forEach(function (locale) {\n this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n });\n }\n};\n\nprototypeAccessors.postTranslation.get = function () { return this._postTranslation };\nprototypeAccessors.postTranslation.set = function (handler) { this._postTranslation = handler; };\n\nprototypeAccessors.sync.get = function () { return this._sync };\nprototypeAccessors.sync.set = function (val) { this._sync = val; };\n\nVueI18n.prototype._getMessages = function _getMessages () { return this._vm.messages };\nVueI18n.prototype._getDateTimeFormats = function _getDateTimeFormats () { return this._vm.dateTimeFormats };\nVueI18n.prototype._getNumberFormats = function _getNumberFormats () { return this._vm.numberFormats };\n\nVueI18n.prototype._warnDefault = function _warnDefault (locale, key, result, vm, values, interpolateMode) {\n if (!isNull(result)) { return result }\n if (this._missing) {\n var missingRet = this._missing.apply(null, [locale, key, vm, values]);\n if (isString(missingRet)) {\n return missingRet\n }\n } else {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n warn(\n \"Cannot translate the value of keypath '\" + key + \"'. \" +\n 'Use the value of keypath as default.'\n );\n }\n }\n\n if (this._formatFallbackMessages) {\n var parsedArgs = parseArgs.apply(void 0, values);\n return this._render(key, interpolateMode, parsedArgs.params, key)\n } else {\n return key\n }\n};\n\nVueI18n.prototype._isFallbackRoot = function _isFallbackRoot (val) {\n return (this._fallbackRootWithEmptyString? !val : isNull(val)) && !isNull(this._root) && this._fallbackRoot\n};\n\nVueI18n.prototype._isSilentFallbackWarn = function _isSilentFallbackWarn (key) {\n return this._silentFallbackWarn instanceof RegExp\n ? this._silentFallbackWarn.test(key)\n : this._silentFallbackWarn\n};\n\nVueI18n.prototype._isSilentFallback = function _isSilentFallback (locale, key) {\n return this._isSilentFallbackWarn(key) && (this._isFallbackRoot() || locale !== this.fallbackLocale)\n};\n\nVueI18n.prototype._isSilentTranslationWarn = function _isSilentTranslationWarn (key) {\n return this._silentTranslationWarn instanceof RegExp\n ? this._silentTranslationWarn.test(key)\n : this._silentTranslationWarn\n};\n\nVueI18n.prototype._interpolate = function _interpolate (\n locale,\n message,\n key,\n host,\n interpolateMode,\n values,\n visitedLinkStack\n) {\n if (!message) { return null }\n\n var pathRet = this._path.getPathValue(message, key);\n if (isArray(pathRet) || isPlainObject(pathRet)) { return pathRet }\n\n var ret;\n if (isNull(pathRet)) {\n /* istanbul ignore else */\n if (isPlainObject(message)) {\n ret = message[key];\n if (!(isString(ret) || isFunction(ret))) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n warn((\"Value of key '\" + key + \"' is not a string or function !\"));\n }\n return null\n }\n } else {\n return null\n }\n } else {\n /* istanbul ignore else */\n if (isString(pathRet) || isFunction(pathRet)) {\n ret = pathRet;\n } else {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n warn((\"Value of key '\" + key + \"' is not a string or function!\"));\n }\n return null\n }\n }\n\n // Check for the existence of links within the translated string\n if (isString(ret) && (ret.indexOf('@:') >= 0 || ret.indexOf('@.') >= 0)) {\n ret = this._link(locale, message, ret, host, 'raw', values, visitedLinkStack);\n }\n\n return this._render(ret, interpolateMode, values, key)\n};\n\nVueI18n.prototype._link = function _link (\n locale,\n message,\n str,\n host,\n interpolateMode,\n values,\n visitedLinkStack\n) {\n var ret = str;\n\n // Match all the links within the local\n // We are going to replace each of\n // them with its translation\n var matches = ret.match(linkKeyMatcher);\n\n // eslint-disable-next-line no-autofix/prefer-const\n for (var idx in matches) {\n // ie compatible: filter custom array\n // prototype method\n if (!matches.hasOwnProperty(idx)) {\n continue\n }\n var link = matches[idx];\n var linkKeyPrefixMatches = link.match(linkKeyPrefixMatcher);\n var linkPrefix = linkKeyPrefixMatches[0];\n var formatterName = linkKeyPrefixMatches[1];\n\n // Remove the leading @:, @.case: and the brackets\n var linkPlaceholder = link.replace(linkPrefix, '').replace(bracketsMatcher, '');\n\n if (includes(visitedLinkStack, linkPlaceholder)) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Circular reference found. \\\"\" + link + \"\\\" is already visited in the chain of \" + (visitedLinkStack.reverse().join(' <- '))));\n }\n return ret\n }\n visitedLinkStack.push(linkPlaceholder);\n\n // Translate the link\n var translated = this._interpolate(\n locale, message, linkPlaceholder, host,\n interpolateMode === 'raw' ? 'string' : interpolateMode,\n interpolateMode === 'raw' ? undefined : values,\n visitedLinkStack\n );\n\n if (this._isFallbackRoot(translated)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(linkPlaceholder)) {\n warn((\"Fall back to translate the link placeholder '\" + linkPlaceholder + \"' with root locale.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n var root = this._root.$i18n;\n translated = root._translate(\n root._getMessages(), root.locale, root.fallbackLocale,\n linkPlaceholder, host, interpolateMode, values\n );\n }\n translated = this._warnDefault(\n locale, linkPlaceholder, translated, host,\n isArray(values) ? values : [values],\n interpolateMode\n );\n\n if (this._modifiers.hasOwnProperty(formatterName)) {\n translated = this._modifiers[formatterName](translated);\n } else if (defaultModifiers.hasOwnProperty(formatterName)) {\n translated = defaultModifiers[formatterName](translated);\n }\n\n visitedLinkStack.pop();\n\n // Replace the link with the translated\n ret = !translated ? ret : ret.replace(link, translated);\n }\n\n return ret\n};\n\nVueI18n.prototype._createMessageContext = function _createMessageContext (values, formatter, path, interpolateMode) {\n var this$1 = this;\n\n var _list = isArray(values) ? values : [];\n var _named = isObject(values) ? values : {};\n var list = function (index) { return _list[index]; };\n var named = function (key) { return _named[key]; };\n var messages = this._getMessages();\n var locale = this.locale;\n\n return {\n list: list,\n named: named,\n values: values,\n formatter: formatter,\n path: path,\n messages: messages,\n locale: locale,\n linked: function (linkedKey) { return this$1._interpolate(locale, messages[locale] || {}, linkedKey, null, interpolateMode, undefined, [linkedKey]); }\n }\n};\n\nVueI18n.prototype._render = function _render (message, interpolateMode, values, path) {\n if (isFunction(message)) {\n return message(\n this._createMessageContext(values, this._formatter || defaultFormatter, path, interpolateMode)\n )\n }\n\n var ret = this._formatter.interpolate(message, values, path);\n\n // If the custom formatter refuses to work - apply the default one\n if (!ret) {\n ret = defaultFormatter.interpolate(message, values, path);\n }\n\n // if interpolateMode is **not** 'string' ('row'),\n // return the compiled data (e.g. ['foo', VNode, 'bar']) with formatter\n return interpolateMode === 'string' && !isString(ret) ? ret.join('') : ret\n};\n\nVueI18n.prototype._appendItemToChain = function _appendItemToChain (chain, item, blocks) {\n var follow = false;\n if (!includes(chain, item)) {\n follow = true;\n if (item) {\n follow = item[item.length - 1] !== '!';\n item = item.replace(/!/g, '');\n chain.push(item);\n if (blocks && blocks[item]) {\n follow = blocks[item];\n }\n }\n }\n return follow\n};\n\nVueI18n.prototype._appendLocaleToChain = function _appendLocaleToChain (chain, locale, blocks) {\n var follow;\n var tokens = locale.split('-');\n do {\n var item = tokens.join('-');\n follow = this._appendItemToChain(chain, item, blocks);\n tokens.splice(-1, 1);\n } while (tokens.length && (follow === true))\n return follow\n};\n\nVueI18n.prototype._appendBlockToChain = function _appendBlockToChain (chain, block, blocks) {\n var follow = true;\n for (var i = 0; (i < block.length) && (isBoolean(follow)); i++) {\n var locale = block[i];\n if (isString(locale)) {\n follow = this._appendLocaleToChain(chain, locale, blocks);\n }\n }\n return follow\n};\n\nVueI18n.prototype._getLocaleChain = function _getLocaleChain (start, fallbackLocale) {\n if (start === '') { return [] }\n\n if (!this._localeChainCache) {\n this._localeChainCache = {};\n }\n\n var chain = this._localeChainCache[start];\n if (!chain) {\n if (!fallbackLocale) {\n fallbackLocale = this.fallbackLocale;\n }\n chain = [];\n\n // first block defined by start\n var block = [start];\n\n // while any intervening block found\n while (isArray(block)) {\n block = this._appendBlockToChain(\n chain,\n block,\n fallbackLocale\n );\n }\n\n // last block defined by default\n var defaults;\n if (isArray(fallbackLocale)) {\n defaults = fallbackLocale;\n } else if (isObject(fallbackLocale)) {\n /* $FlowFixMe */\n if (fallbackLocale['default']) {\n defaults = fallbackLocale['default'];\n } else {\n defaults = null;\n }\n } else {\n defaults = fallbackLocale;\n }\n\n // convert defaults to array\n if (isString(defaults)) {\n block = [defaults];\n } else {\n block = defaults;\n }\n if (block) {\n this._appendBlockToChain(\n chain,\n block,\n null\n );\n }\n this._localeChainCache[start] = chain;\n }\n return chain\n};\n\nVueI18n.prototype._translate = function _translate (\n messages,\n locale,\n fallback,\n key,\n host,\n interpolateMode,\n args\n) {\n var chain = this._getLocaleChain(locale, fallback);\n var res;\n for (var i = 0; i < chain.length; i++) {\n var step = chain[i];\n res =\n this._interpolate(step, messages[step], key, host, interpolateMode, args, [key]);\n if (!isNull(res)) {\n if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to translate the keypath '\" + key + \"' with '\" + step + \"' locale.\"));\n }\n return res\n }\n }\n return null\n};\n\nVueI18n.prototype._t = function _t (key, _locale, messages, host) {\n var ref;\n\n var values = [], len = arguments.length - 4;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 4 ];\n if (!key) { return '' }\n\n var parsedArgs = parseArgs.apply(void 0, values);\n if(this._escapeParameterHtml) {\n parsedArgs.params = escapeParams(parsedArgs.params);\n }\n\n var locale = parsedArgs.locale || _locale;\n\n var ret = this._translate(\n messages, locale, this.fallbackLocale, key,\n host, 'string', parsedArgs.params\n );\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to translate the keypath '\" + key + \"' with root locale.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return (ref = this._root).$t.apply(ref, [ key ].concat( values ))\n } else {\n ret = this._warnDefault(locale, key, ret, host, values, 'string');\n if (this._postTranslation && ret !== null && ret !== undefined) {\n ret = this._postTranslation(ret, key);\n }\n return ret\n }\n};\n\nVueI18n.prototype.t = function t (key) {\n var ref;\n\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n return (ref = this)._t.apply(ref, [ key, this.locale, this._getMessages(), null ].concat( values ))\n};\n\nVueI18n.prototype._i = function _i (key, locale, messages, host, values) {\n var ret =\n this._translate(messages, locale, this.fallbackLocale, key, host, 'raw', values);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n warn((\"Fall back to interpolate the keypath '\" + key + \"' with root locale.\"));\n }\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n.i(key, locale, values)\n } else {\n return this._warnDefault(locale, key, ret, host, [values], 'raw')\n }\n};\n\nVueI18n.prototype.i = function i (key, locale, values) {\n /* istanbul ignore if */\n if (!key) { return '' }\n\n if (!isString(locale)) {\n locale = this.locale;\n }\n\n return this._i(key, locale, this._getMessages(), null, values)\n};\n\nVueI18n.prototype._tc = function _tc (\n key,\n _locale,\n messages,\n host,\n choice\n) {\n var ref;\n\n var values = [], len = arguments.length - 5;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 5 ];\n if (!key) { return '' }\n if (choice === undefined) {\n choice = 1;\n }\n\n var predefined = { 'count': choice, 'n': choice };\n var parsedArgs = parseArgs.apply(void 0, values);\n parsedArgs.params = Object.assign(predefined, parsedArgs.params);\n values = parsedArgs.locale === null ? [parsedArgs.params] : [parsedArgs.locale, parsedArgs.params];\n return this.fetchChoice((ref = this)._t.apply(ref, [ key, _locale, messages, host ].concat( values )), choice)\n};\n\nVueI18n.prototype.fetchChoice = function fetchChoice (message, choice) {\n /* istanbul ignore if */\n if (!message || !isString(message)) { return null }\n var choices = message.split('|');\n\n choice = this.getChoiceIndex(choice, choices.length);\n if (!choices[choice]) { return message }\n return choices[choice].trim()\n};\n\nVueI18n.prototype.tc = function tc (key, choice) {\n var ref;\n\n var values = [], len = arguments.length - 2;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n return (ref = this)._tc.apply(ref, [ key, this.locale, this._getMessages(), null, choice ].concat( values ))\n};\n\nVueI18n.prototype._te = function _te (key, locale, messages) {\n var args = [], len = arguments.length - 3;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 3 ];\n\n var _locale = parseArgs.apply(void 0, args).locale || locale;\n return this._exist(messages[_locale], key)\n};\n\nVueI18n.prototype.te = function te (key, locale) {\n return this._te(key, this.locale, this._getMessages(), locale)\n};\n\nVueI18n.prototype.getLocaleMessage = function getLocaleMessage (locale) {\n return looseClone(this._vm.messages[locale] || {})\n};\n\nVueI18n.prototype.setLocaleMessage = function setLocaleMessage (locale, message) {\n if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n }\n this._vm.$set(this._vm.messages, locale, message);\n};\n\nVueI18n.prototype.mergeLocaleMessage = function mergeLocaleMessage (locale, message) {\n if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n }\n this._vm.$set(this._vm.messages, locale, merge(\n typeof this._vm.messages[locale] !== 'undefined' && Object.keys(this._vm.messages[locale]).length\n ? Object.assign({}, this._vm.messages[locale])\n : {},\n message\n ));\n};\n\nVueI18n.prototype.getDateTimeFormat = function getDateTimeFormat (locale) {\n return looseClone(this._vm.dateTimeFormats[locale] || {})\n};\n\nVueI18n.prototype.setDateTimeFormat = function setDateTimeFormat (locale, format) {\n this._vm.$set(this._vm.dateTimeFormats, locale, format);\n this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype.mergeDateTimeFormat = function mergeDateTimeFormat (locale, format) {\n this._vm.$set(this._vm.dateTimeFormats, locale, merge(this._vm.dateTimeFormats[locale] || {}, format));\n this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype._clearDateTimeFormat = function _clearDateTimeFormat (locale, format) {\n // eslint-disable-next-line no-autofix/prefer-const\n for (var key in format) {\n var id = locale + \"__\" + key;\n\n if (!this._dateTimeFormatters.hasOwnProperty(id)) {\n continue\n }\n\n delete this._dateTimeFormatters[id];\n }\n};\n\nVueI18n.prototype._localizeDateTime = function _localizeDateTime (\n value,\n locale,\n fallback,\n dateTimeFormats,\n key\n) {\n var _locale = locale;\n var formats = dateTimeFormats[_locale];\n\n var chain = this._getLocaleChain(locale, fallback);\n for (var i = 0; i < chain.length; i++) {\n var current = _locale;\n var step = chain[i];\n formats = dateTimeFormats[step];\n _locale = step;\n // fallback locale\n if (isNull(formats) || isNull(formats[key])) {\n if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to '\" + step + \"' datetime formats from '\" + current + \"' datetime formats.\"));\n }\n } else {\n break\n }\n }\n\n if (isNull(formats) || isNull(formats[key])) {\n return null\n } else {\n var format = formats[key];\n var id = _locale + \"__\" + key;\n var formatter = this._dateTimeFormatters[id];\n if (!formatter) {\n formatter = this._dateTimeFormatters[id] = new Intl.DateTimeFormat(_locale, format);\n }\n return formatter.format(value)\n }\n};\n\nVueI18n.prototype._d = function _d (value, locale, key) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && !VueI18n.availabilities.dateTimeFormat) {\n warn('Cannot format a Date value due to not supported Intl.DateTimeFormat.');\n return ''\n }\n\n if (!key) {\n return new Intl.DateTimeFormat(locale).format(value)\n }\n\n var ret =\n this._localizeDateTime(value, locale, this.fallbackLocale, this._getDateTimeFormats(), key);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to datetime localization of root: key '\" + key + \"'.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n.d(value, key, locale)\n } else {\n return ret || ''\n }\n};\n\nVueI18n.prototype.d = function d (value) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n var locale = this.locale;\n var key = null;\n\n if (args.length === 1) {\n if (isString(args[0])) {\n key = args[0];\n } else if (isObject(args[0])) {\n if (args[0].locale) {\n locale = args[0].locale;\n }\n if (args[0].key) {\n key = args[0].key;\n }\n }\n } else if (args.length === 2) {\n if (isString(args[0])) {\n key = args[0];\n }\n if (isString(args[1])) {\n locale = args[1];\n }\n }\n\n return this._d(value, locale, key)\n};\n\nVueI18n.prototype.getNumberFormat = function getNumberFormat (locale) {\n return looseClone(this._vm.numberFormats[locale] || {})\n};\n\nVueI18n.prototype.setNumberFormat = function setNumberFormat (locale, format) {\n this._vm.$set(this._vm.numberFormats, locale, format);\n this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype.mergeNumberFormat = function mergeNumberFormat (locale, format) {\n this._vm.$set(this._vm.numberFormats, locale, merge(this._vm.numberFormats[locale] || {}, format));\n this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype._clearNumberFormat = function _clearNumberFormat (locale, format) {\n // eslint-disable-next-line no-autofix/prefer-const\n for (var key in format) {\n var id = locale + \"__\" + key;\n\n if (!this._numberFormatters.hasOwnProperty(id)) {\n continue\n }\n\n delete this._numberFormatters[id];\n }\n};\n\nVueI18n.prototype._getNumberFormatter = function _getNumberFormatter (\n value,\n locale,\n fallback,\n numberFormats,\n key,\n options\n) {\n var _locale = locale;\n var formats = numberFormats[_locale];\n\n var chain = this._getLocaleChain(locale, fallback);\n for (var i = 0; i < chain.length; i++) {\n var current = _locale;\n var step = chain[i];\n formats = numberFormats[step];\n _locale = step;\n // fallback locale\n if (isNull(formats) || isNull(formats[key])) {\n if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to '\" + step + \"' number formats from '\" + current + \"' number formats.\"));\n }\n } else {\n break\n }\n }\n\n if (isNull(formats) || isNull(formats[key])) {\n return null\n } else {\n var format = formats[key];\n\n var formatter;\n if (options) {\n // If options specified - create one time number formatter\n formatter = new Intl.NumberFormat(_locale, Object.assign({}, format, options));\n } else {\n var id = _locale + \"__\" + key;\n formatter = this._numberFormatters[id];\n if (!formatter) {\n formatter = this._numberFormatters[id] = new Intl.NumberFormat(_locale, format);\n }\n }\n return formatter\n }\n};\n\nVueI18n.prototype._n = function _n (value, locale, key, options) {\n /* istanbul ignore if */\n if (!VueI18n.availabilities.numberFormat) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot format a Number value due to not supported Intl.NumberFormat.');\n }\n return ''\n }\n\n if (!key) {\n var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n return nf.format(value)\n }\n\n var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n var ret = formatter && formatter.format(value);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n warn((\"Fall back to number localization of root: key '\" + key + \"'.\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n.n(value, Object.assign({}, { key: key, locale: locale }, options))\n } else {\n return ret || ''\n }\n};\n\nVueI18n.prototype.n = function n (value) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n var locale = this.locale;\n var key = null;\n var options = null;\n\n if (args.length === 1) {\n if (isString(args[0])) {\n key = args[0];\n } else if (isObject(args[0])) {\n if (args[0].locale) {\n locale = args[0].locale;\n }\n if (args[0].key) {\n key = args[0].key;\n }\n\n // Filter out number format options only\n options = Object.keys(args[0]).reduce(function (acc, key) {\n var obj;\n\n if (includes(numberFormatKeys, key)) {\n return Object.assign({}, acc, ( obj = {}, obj[key] = args[0][key], obj ))\n }\n return acc\n }, null);\n }\n } else if (args.length === 2) {\n if (isString(args[0])) {\n key = args[0];\n }\n if (isString(args[1])) {\n locale = args[1];\n }\n }\n\n return this._n(value, locale, key, options)\n};\n\nVueI18n.prototype._ntp = function _ntp (value, locale, key, options) {\n /* istanbul ignore if */\n if (!VueI18n.availabilities.numberFormat) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Cannot format to parts a Number value due to not supported Intl.NumberFormat.');\n }\n return []\n }\n\n if (!key) {\n var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n return nf.formatToParts(value)\n }\n\n var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n var ret = formatter && formatter.formatToParts(value);\n if (this._isFallbackRoot(ret)) {\n if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n warn((\"Fall back to format number to parts of root: key '\" + key + \"' .\"));\n }\n /* istanbul ignore if */\n if (!this._root) { throw Error('unexpected error') }\n return this._root.$i18n._ntp(value, locale, key, options)\n } else {\n return ret || []\n }\n};\n\nObject.defineProperties( VueI18n.prototype, prototypeAccessors );\n\nvar availabilities;\n// $FlowFixMe\nObject.defineProperty(VueI18n, 'availabilities', {\n get: function get () {\n if (!availabilities) {\n var intlDefined = typeof Intl !== 'undefined';\n availabilities = {\n dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\n numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\n };\n }\n\n return availabilities\n }\n});\n\nVueI18n.install = install;\nVueI18n.version = '8.27.1';\n\nexport default VueI18n;\n","/**\n * vue-meta v2.4.0\n * (c) 2020\n * - Declan de Wet\n * - Sébastien Chopin (@Atinux)\n * - Pim (@pimlie)\n * - All the amazing contributors\n * @license MIT\n */\n\nimport deepmerge from 'deepmerge';\n\nvar version = \"2.4.0\";\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 _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 ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\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 _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\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 _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}\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it;\n\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function () {};\n\n return {\n s: F,\n n: function () {\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) {\n throw e;\n },\n f: F\n };\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\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = o[Symbol.iterator]();\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (e) {\n didErr = true;\n err = e;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\n/**\n * checks if passed argument is an array\n * @param {any} arg - the object to check\n * @return {Boolean} - true if `arg` is an array\n */\nfunction isArray(arg) {\n return Array.isArray(arg);\n}\nfunction isUndefined(arg) {\n return typeof arg === 'undefined';\n}\nfunction isObject(arg) {\n return _typeof(arg) === 'object';\n}\nfunction isPureObject(arg) {\n return _typeof(arg) === 'object' && arg !== null;\n}\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nfunction isString(arg) {\n return typeof arg === 'string';\n}\n\nfunction hasGlobalWindowFn() {\n try {\n return !isUndefined(window);\n } catch (e) {\n return false;\n }\n}\nvar hasGlobalWindow = hasGlobalWindowFn();\n\nvar _global = hasGlobalWindow ? window : global;\n\nvar console = _global.console || {};\nfunction warn(str) {\n /* istanbul ignore next */\n if (!console || !console.warn) {\n return;\n }\n\n console.warn(str);\n}\nvar showWarningNotSupported = function showWarningNotSupported() {\n return warn('This vue app/component has no vue-meta configuration');\n};\n\n/**\n * These are constant variables used throughout the application.\n */\n// set some sane defaults\nvar defaultInfo = {\n title: undefined,\n titleChunk: '',\n titleTemplate: '%s',\n htmlAttrs: {},\n bodyAttrs: {},\n headAttrs: {},\n base: [],\n link: [],\n meta: [],\n style: [],\n script: [],\n noscript: [],\n __dangerouslyDisableSanitizers: [],\n __dangerouslyDisableSanitizersByTagID: {}\n};\nvar rootConfigKey = '_vueMeta'; // This is the name of the component option that contains all the information that\n// gets converted to the various meta tags & attributes for the page.\n\nvar keyName = 'metaInfo'; // This is the attribute vue-meta arguments on elements to know which it should\n// manage and which it should ignore.\n\nvar attribute = 'data-vue-meta'; // This is the attribute that goes on the `html` tag to inform `vue-meta`\n// that the server has already generated the meta tags for the initial render.\n\nvar ssrAttribute = 'data-vue-meta-server-rendered'; // This is the property that tells vue-meta to overwrite (instead of append)\n// an item in a tag list. For example, if you have two `meta` tag list items\n// that both have `vmid` of \"description\", then vue-meta will overwrite the\n// shallowest one with the deepest one.\n\nvar tagIDKeyName = 'vmid'; // This is the key name for possible meta templates\n\nvar metaTemplateKeyName = 'template'; // This is the key name for the content-holding property\n\nvar contentKeyName = 'content'; // The id used for the ssr app\n\nvar ssrAppId = 'ssr'; // How long meta update\n\nvar debounceWait = 10; // How long meta update\n\nvar waitOnDestroyed = true;\nvar defaultOptions = {\n keyName: keyName,\n attribute: attribute,\n ssrAttribute: ssrAttribute,\n tagIDKeyName: tagIDKeyName,\n contentKeyName: contentKeyName,\n metaTemplateKeyName: metaTemplateKeyName,\n waitOnDestroyed: waitOnDestroyed,\n debounceWait: debounceWait,\n ssrAppId: ssrAppId\n}; // might be a bit ugly, but minimizes the browser bundles a bit\n\nvar defaultInfoKeys = Object.keys(defaultInfo); // The metaInfo property keys which are used to disable escaping\n\nvar disableOptionKeys = [defaultInfoKeys[12], defaultInfoKeys[13]]; // List of metaInfo property keys which are configuration options (and dont generate html)\n\nvar metaInfoOptionKeys = [defaultInfoKeys[1], defaultInfoKeys[2], 'changed'].concat(disableOptionKeys); // List of metaInfo property keys which only generates attributes and no tags\n\nvar metaInfoAttributeKeys = [defaultInfoKeys[3], defaultInfoKeys[4], defaultInfoKeys[5]]; // HTML elements which support the onload event\n\nvar tagsSupportingOnload = ['link', 'style', 'script']; // HTML elements which dont have a head tag (shortened to our needs)\n// see: https://www.w3.org/TR/html52/document-metadata.html\n\nvar tagsWithoutEndTag = ['base', 'meta', 'link']; // HTML elements which can have inner content (shortened to our needs)\n\nvar tagsWithInnerContent = ['noscript', 'script', 'style']; // Attributes which are inserted as childNodes instead of HTMLAttribute\n\nvar tagAttributeAsInnerContent = ['innerHTML', 'cssText', 'json'];\nvar tagProperties = ['once', 'skip', 'template']; // Attributes which should be added with data- prefix\n\nvar commonDataAttributes = ['body', 'pbody']; // from: https://github.com/kangax/html-minifier/blob/gh-pages/src/htmlminifier.js#L202\n\nvar booleanHtmlAttributes = ['allowfullscreen', 'amp', 'amp-boilerplate', 'async', 'autofocus', 'autoplay', 'checked', 'compact', 'controls', 'declare', 'default', 'defaultchecked', 'defaultmuted', 'defaultselected', 'defer', 'disabled', 'enabled', 'formnovalidate', 'hidden', 'indeterminate', 'inert', 'ismap', 'itemscope', 'loop', 'multiple', 'muted', 'nohref', 'noresize', 'noshade', 'novalidate', 'nowrap', 'open', 'pauseonexit', 'readonly', 'required', 'reversed', 'scoped', 'seamless', 'selected', 'sortable', 'truespeed', 'typemustmatch', 'visible'];\n\nvar batchId = null;\nfunction triggerUpdate(_ref, rootVm, hookName) {\n var debounceWait = _ref.debounceWait;\n\n // if an update was triggered during initialization or when an update was triggered by the\n // metaInfo watcher, set initialized to null\n // then we keep falsy value but know we need to run a triggerUpdate after initialization\n if (!rootVm[rootConfigKey].initialized && (rootVm[rootConfigKey].initializing || hookName === 'watcher')) {\n rootVm[rootConfigKey].initialized = null;\n }\n\n if (rootVm[rootConfigKey].initialized && !rootVm[rootConfigKey].pausing) {\n // batch potential DOM updates to prevent extraneous re-rendering\n // eslint-disable-next-line no-void\n batchUpdate(function () {\n return void rootVm.$meta().refresh();\n }, debounceWait);\n }\n}\n/**\n * Performs a batched update.\n *\n * @param {(null|Number)} id - the ID of this update\n * @param {Function} callback - the update to perform\n * @return {Number} id - a new ID\n */\n\nfunction batchUpdate(callback, timeout) {\n timeout = timeout === undefined ? 10 : timeout;\n\n if (!timeout) {\n callback();\n return;\n }\n\n clearTimeout(batchId);\n batchId = setTimeout(function () {\n callback();\n }, timeout);\n return batchId;\n}\n\n/*\n * To reduce build size, this file provides simple polyfills without\n * overly excessive type checking and without modifying\n * the global Array.prototype\n * The polyfills are automatically removed in the commonjs build\n * Also, only files in client/ & shared/ should use these functions\n * files in server/ still use normal js function\n */\nfunction find(array, predicate, thisArg) {\n if ( !Array.prototype.find) {\n // idx needs to be a Number, for..in returns string\n for (var idx = 0; idx < array.length; idx++) {\n if (predicate.call(thisArg, array[idx], idx, array)) {\n return array[idx];\n }\n }\n\n return;\n }\n\n return array.find(predicate, thisArg);\n}\nfunction findIndex(array, predicate, thisArg) {\n if ( !Array.prototype.findIndex) {\n // idx needs to be a Number, for..in returns string\n for (var idx = 0; idx < array.length; idx++) {\n if (predicate.call(thisArg, array[idx], idx, array)) {\n return idx;\n }\n }\n\n return -1;\n }\n\n return array.findIndex(predicate, thisArg);\n}\nfunction toArray(arg) {\n if ( !Array.from) {\n return Array.prototype.slice.call(arg);\n }\n\n return Array.from(arg);\n}\nfunction includes(array, value) {\n if ( !Array.prototype.includes) {\n for (var idx in array) {\n if (array[idx] === value) {\n return true;\n }\n }\n\n return false;\n }\n\n return array.includes(value);\n}\n\nvar querySelector = function querySelector(arg, el) {\n return (el || document).querySelectorAll(arg);\n};\nfunction getTag(tags, tag) {\n if (!tags[tag]) {\n tags[tag] = document.getElementsByTagName(tag)[0];\n }\n\n return tags[tag];\n}\nfunction getElementsKey(_ref) {\n var body = _ref.body,\n pbody = _ref.pbody;\n return body ? 'body' : pbody ? 'pbody' : 'head';\n}\nfunction queryElements(parentNode, _ref2, attributes) {\n var appId = _ref2.appId,\n attribute = _ref2.attribute,\n type = _ref2.type,\n tagIDKeyName = _ref2.tagIDKeyName;\n attributes = attributes || {};\n var queries = [\"\".concat(type, \"[\").concat(attribute, \"=\\\"\").concat(appId, \"\\\"]\"), \"\".concat(type, \"[data-\").concat(tagIDKeyName, \"]\")].map(function (query) {\n for (var key in attributes) {\n var val = attributes[key];\n var attributeValue = val && val !== true ? \"=\\\"\".concat(val, \"\\\"\") : '';\n query += \"[data-\".concat(key).concat(attributeValue, \"]\");\n }\n\n return query;\n });\n return toArray(querySelector(queries.join(', '), parentNode));\n}\nfunction removeElementsByAppId(_ref3, appId) {\n var attribute = _ref3.attribute;\n toArray(querySelector(\"[\".concat(attribute, \"=\\\"\").concat(appId, \"\\\"]\"))).map(function (el) {\n return el.remove();\n });\n}\nfunction removeAttribute(el, attributeName) {\n el.removeAttribute(attributeName);\n}\n\nfunction hasMetaInfo(vm) {\n vm = vm || this;\n return vm && (vm[rootConfigKey] === true || isObject(vm[rootConfigKey]));\n} // a component is in a metaInfo branch when itself has meta info or one of its (grand-)children has\n\nfunction inMetaInfoBranch(vm) {\n vm = vm || this;\n return vm && !isUndefined(vm[rootConfigKey]);\n}\n\nfunction pause(rootVm, refresh) {\n rootVm[rootConfigKey].pausing = true;\n return function () {\n return resume(rootVm, refresh);\n };\n}\nfunction resume(rootVm, refresh) {\n rootVm[rootConfigKey].pausing = false;\n\n if (refresh || refresh === undefined) {\n return rootVm.$meta().refresh();\n }\n}\n\nfunction addNavGuards(rootVm) {\n var router = rootVm.$router; // return when nav guards already added or no router exists\n\n if (rootVm[rootConfigKey].navGuards || !router) {\n /* istanbul ignore next */\n return;\n }\n\n rootVm[rootConfigKey].navGuards = true;\n router.beforeEach(function (to, from, next) {\n pause(rootVm);\n next();\n });\n router.afterEach(function () {\n rootVm.$nextTick(function () {\n var _resume = resume(rootVm),\n metaInfo = _resume.metaInfo;\n\n if (metaInfo && isFunction(metaInfo.afterNavigation)) {\n metaInfo.afterNavigation(metaInfo);\n }\n });\n });\n}\n\nvar appId = 1;\nfunction createMixin(Vue, options) {\n // for which Vue lifecycle hooks should the metaInfo be refreshed\n var updateOnLifecycleHook = ['activated', 'deactivated', 'beforeMount'];\n var wasServerRendered = false; // watch for client side component updates\n\n return {\n beforeCreate: function beforeCreate() {\n var _this2 = this;\n\n var rootKey = '$root';\n var $root = this[rootKey];\n var $options = this.$options;\n var devtoolsEnabled = Vue.config.devtools;\n Object.defineProperty(this, '_hasMetaInfo', {\n configurable: true,\n get: function get() {\n // Show deprecation warning once when devtools enabled\n if (devtoolsEnabled && !$root[rootConfigKey].deprecationWarningShown) {\n warn('VueMeta DeprecationWarning: _hasMetaInfo has been deprecated and will be removed in a future version. Please use hasMetaInfo(vm) instead');\n $root[rootConfigKey].deprecationWarningShown = true;\n }\n\n return hasMetaInfo(this);\n }\n });\n\n if (this === $root) {\n $root.$once('hook:beforeMount', function () {\n wasServerRendered = this.$el && this.$el.nodeType === 1 && this.$el.hasAttribute('data-server-rendered'); // In most cases when you have a SSR app it will be the first app thats gonna be\n // initiated, if we cant detect the data-server-rendered attribute from Vue but we\n // do see our own ssrAttribute then _assume_ the Vue app with appId 1 is the ssr app\n // attempted fix for #404 & #562, but we rly need to refactor how we pass appIds from\n // ssr to the client\n\n if (!wasServerRendered && $root[rootConfigKey] && $root[rootConfigKey].appId === 1) {\n var htmlTag = getTag({}, 'html');\n wasServerRendered = htmlTag && htmlTag.hasAttribute(options.ssrAttribute);\n }\n });\n } // Add a marker to know if it uses metaInfo\n // _vnode is used to know that it's attached to a real component\n // useful if we use some mixin to add some meta tags (like nuxt-i18n)\n\n\n if (isUndefined($options[options.keyName]) || $options[options.keyName] === null) {\n return;\n }\n\n if (!$root[rootConfigKey]) {\n $root[rootConfigKey] = {\n appId: appId\n };\n appId++;\n\n if (devtoolsEnabled && $root.$options[options.keyName]) {\n // use nextTick so the children should be added to $root\n this.$nextTick(function () {\n // find the first child that lists fnOptions\n var child = find($root.$children, function (c) {\n return c.$vnode && c.$vnode.fnOptions;\n });\n\n if (child && child.$vnode.fnOptions[options.keyName]) {\n warn(\"VueMeta has detected a possible global mixin which adds a \".concat(options.keyName, \" property to all Vue components on the page. This could cause severe performance issues. If possible, use $meta().addApp to add meta information instead\"));\n }\n });\n }\n } // to speed up updates we keep track of branches which have a component with vue-meta info defined\n // if _vueMeta = true it has info, if _vueMeta = false a child has info\n\n\n if (!this[rootConfigKey]) {\n this[rootConfigKey] = true;\n var parent = this.$parent;\n\n while (parent && parent !== $root) {\n if (isUndefined(parent[rootConfigKey])) {\n parent[rootConfigKey] = false;\n }\n\n parent = parent.$parent;\n }\n } // coerce function-style metaInfo to a computed prop so we can observe\n // it on creation\n\n\n if (isFunction($options[options.keyName])) {\n $options.computed = $options.computed || {};\n $options.computed.$metaInfo = $options[options.keyName];\n\n if (!this.$isServer) {\n // if computed $metaInfo exists, watch it for updates & trigger a refresh\n // when it changes (i.e. automatically handle async actions that affect metaInfo)\n // credit for this suggestion goes to [Sébastien Chopin](https://github.com/Atinux)\n this.$on('hook:created', function () {\n this.$watch('$metaInfo', function () {\n triggerUpdate(options, this[rootKey], 'watcher');\n });\n });\n }\n } // force an initial refresh on page load and prevent other lifecycleHooks\n // to triggerUpdate until this initial refresh is finished\n // this is to make sure that when a page is opened in an inactive tab which\n // has throttled rAF/timers we still immediately set the page title\n\n\n if (isUndefined($root[rootConfigKey].initialized)) {\n $root[rootConfigKey].initialized = this.$isServer;\n\n if (!$root[rootConfigKey].initialized) {\n if (!$root[rootConfigKey].initializedSsr) {\n $root[rootConfigKey].initializedSsr = true;\n this.$on('hook:beforeMount', function () {\n var $root = this[rootKey]; // if this Vue-app was server rendered, set the appId to 'ssr'\n // only one SSR app per page is supported\n\n if (wasServerRendered) {\n $root[rootConfigKey].appId = options.ssrAppId;\n }\n });\n } // we use the mounted hook here as on page load\n\n\n this.$on('hook:mounted', function () {\n var $root = this[rootKey];\n\n if ($root[rootConfigKey].initialized) {\n return;\n } // used in triggerUpdate to check if a change was triggered\n // during initialization\n\n\n $root[rootConfigKey].initializing = true; // refresh meta in nextTick so all child components have loaded\n\n this.$nextTick(function () {\n var _$root$$meta$refresh = $root.$meta().refresh(),\n tags = _$root$$meta$refresh.tags,\n metaInfo = _$root$$meta$refresh.metaInfo; // After ssr hydration (identifier by tags === false) check\n // if initialized was set to null in triggerUpdate. That'd mean\n // that during initilazation changes where triggered which need\n // to be applied OR a metaInfo watcher was triggered before the\n // current hook was called\n // (during initialization all changes are blocked)\n\n\n if (tags === false && $root[rootConfigKey].initialized === null) {\n this.$nextTick(function () {\n return triggerUpdate(options, $root, 'init');\n });\n }\n\n $root[rootConfigKey].initialized = true;\n delete $root[rootConfigKey].initializing; // add the navigation guards if they havent been added yet\n // they are needed for the afterNavigation callback\n\n if (!options.refreshOnceOnNavigation && metaInfo.afterNavigation) {\n addNavGuards($root);\n }\n });\n }); // add the navigation guards if requested\n\n if (options.refreshOnceOnNavigation) {\n addNavGuards($root);\n }\n }\n }\n\n this.$on('hook:destroyed', function () {\n var _this = this;\n\n // do not trigger refresh:\n // - when user configured to not wait for transitions on destroyed\n // - when the component doesnt have a parent\n // - doesnt have metaInfo defined\n if (!this.$parent || !hasMetaInfo(this)) {\n return;\n }\n\n delete this._hasMetaInfo;\n this.$nextTick(function () {\n if (!options.waitOnDestroyed || !_this.$el || !_this.$el.offsetParent) {\n triggerUpdate(options, _this.$root, 'destroyed');\n return;\n } // Wait that element is hidden before refreshing meta tags (to support animations)\n\n\n var interval = setInterval(function () {\n if (_this.$el && _this.$el.offsetParent !== null) {\n /* istanbul ignore next line */\n return;\n }\n\n clearInterval(interval);\n triggerUpdate(options, _this.$root, 'destroyed');\n }, 50);\n });\n }); // do not trigger refresh on the server side\n\n if (this.$isServer) {\n /* istanbul ignore next */\n return;\n } // no need to add this hooks on server side\n\n\n updateOnLifecycleHook.forEach(function (lifecycleHook) {\n _this2.$on(\"hook:\".concat(lifecycleHook), function () {\n triggerUpdate(options, this[rootKey], lifecycleHook);\n });\n });\n }\n };\n}\n\nfunction setOptions(options) {\n // combine options\n options = isObject(options) ? options : {}; // The options are set like this so they can\n // be minified by terser while keeping the\n // user api intact\n // terser --mangle-properties keep_quoted=strict\n\n /* eslint-disable dot-notation */\n\n return {\n keyName: options['keyName'] || defaultOptions.keyName,\n attribute: options['attribute'] || defaultOptions.attribute,\n ssrAttribute: options['ssrAttribute'] || defaultOptions.ssrAttribute,\n tagIDKeyName: options['tagIDKeyName'] || defaultOptions.tagIDKeyName,\n contentKeyName: options['contentKeyName'] || defaultOptions.contentKeyName,\n metaTemplateKeyName: options['metaTemplateKeyName'] || defaultOptions.metaTemplateKeyName,\n debounceWait: isUndefined(options['debounceWait']) ? defaultOptions.debounceWait : options['debounceWait'],\n waitOnDestroyed: isUndefined(options['waitOnDestroyed']) ? defaultOptions.waitOnDestroyed : options['waitOnDestroyed'],\n ssrAppId: options['ssrAppId'] || defaultOptions.ssrAppId,\n refreshOnceOnNavigation: !!options['refreshOnceOnNavigation']\n };\n /* eslint-enable dot-notation */\n}\nfunction getOptions(options) {\n var optionsCopy = {};\n\n for (var key in options) {\n optionsCopy[key] = options[key];\n }\n\n return optionsCopy;\n}\n\nfunction ensureIsArray(arg, key) {\n if (!key || !isObject(arg)) {\n return isArray(arg) ? arg : [];\n }\n\n if (!isArray(arg[key])) {\n arg[key] = [];\n }\n\n return arg;\n}\n\nvar serverSequences = [[/&/g, '&'], [/</g, '<'], [/>/g, '>'], [/\"/g, '"'], [/'/g, ''']];\nvar clientSequences = [[/&/g, \"&\"], [/</g, \"<\"], [/>/g, \">\"], [/\"/g, \"\\\"\"], [/'/g, \"'\"]]; // sanitizes potentially dangerous characters\n\nfunction escape(info, options, escapeOptions, escapeKeys) {\n var tagIDKeyName = options.tagIDKeyName;\n var _escapeOptions$doEsca = escapeOptions.doEscape,\n doEscape = _escapeOptions$doEsca === void 0 ? function (v) {\n return v;\n } : _escapeOptions$doEsca;\n var escaped = {};\n\n for (var key in info) {\n var value = info[key]; // no need to escape configuration options\n\n if (includes(metaInfoOptionKeys, key)) {\n escaped[key] = value;\n continue;\n } // do not use destructuring for disableOptionKeys, it increases transpiled size\n // due to var checks while we are guaranteed the structure of the cb\n\n\n var disableKey = disableOptionKeys[0];\n\n if (escapeOptions[disableKey] && includes(escapeOptions[disableKey], key)) {\n // this info[key] doesnt need to escaped if the option is listed in __dangerouslyDisableSanitizers\n escaped[key] = value;\n continue;\n }\n\n var tagId = info[tagIDKeyName];\n\n if (tagId) {\n disableKey = disableOptionKeys[1]; // keys which are listed in __dangerouslyDisableSanitizersByTagID for the current vmid do not need to be escaped\n\n if (escapeOptions[disableKey] && escapeOptions[disableKey][tagId] && includes(escapeOptions[disableKey][tagId], key)) {\n escaped[key] = value;\n continue;\n }\n }\n\n if (isString(value)) {\n escaped[key] = doEscape(value);\n } else if (isArray(value)) {\n escaped[key] = value.map(function (v) {\n if (isPureObject(v)) {\n return escape(v, options, escapeOptions, true);\n }\n\n return doEscape(v);\n });\n } else if (isPureObject(value)) {\n escaped[key] = escape(value, options, escapeOptions, true);\n } else {\n escaped[key] = value;\n }\n\n if (escapeKeys) {\n var escapedKey = doEscape(key);\n\n if (key !== escapedKey) {\n escaped[escapedKey] = escaped[key];\n delete escaped[key];\n }\n }\n }\n\n return escaped;\n}\nfunction escapeMetaInfo(options, info, escapeSequences) {\n escapeSequences = escapeSequences || []; // do not use destructuring for seq, it increases transpiled size\n // due to var checks while we are guaranteed the structure of the cb\n\n var escapeOptions = {\n doEscape: function doEscape(value) {\n return escapeSequences.reduce(function (val, seq) {\n return val.replace(seq[0], seq[1]);\n }, value);\n }\n };\n disableOptionKeys.forEach(function (disableKey, index) {\n if (index === 0) {\n ensureIsArray(info, disableKey);\n } else if (index === 1) {\n for (var key in info[disableKey]) {\n ensureIsArray(info[disableKey], key);\n }\n }\n\n escapeOptions[disableKey] = info[disableKey];\n }); // begin sanitization\n\n return escape(info, options, escapeOptions);\n}\n\nfunction applyTemplate(_ref, headObject, template, chunk) {\n var component = _ref.component,\n metaTemplateKeyName = _ref.metaTemplateKeyName,\n contentKeyName = _ref.contentKeyName;\n\n if (template === true || headObject[metaTemplateKeyName] === true) {\n // abort, template was already applied\n return false;\n }\n\n if (isUndefined(template) && headObject[metaTemplateKeyName]) {\n template = headObject[metaTemplateKeyName];\n headObject[metaTemplateKeyName] = true;\n } // return early if no template defined\n\n\n if (!template) {\n // cleanup faulty template properties\n delete headObject[metaTemplateKeyName];\n return false;\n }\n\n if (isUndefined(chunk)) {\n chunk = headObject[contentKeyName];\n }\n\n headObject[contentKeyName] = isFunction(template) ? template.call(component, chunk) : template.replace(/%s/g, chunk);\n return true;\n}\n\nfunction _arrayMerge(_ref, target, source) {\n var component = _ref.component,\n tagIDKeyName = _ref.tagIDKeyName,\n metaTemplateKeyName = _ref.metaTemplateKeyName,\n contentKeyName = _ref.contentKeyName;\n // we concat the arrays without merging objects contained in,\n // but we check for a `vmid` property on each object in the array\n // using an O(1) lookup associative array exploit\n var destination = [];\n\n if (!target.length && !source.length) {\n return destination;\n }\n\n target.forEach(function (targetItem, targetIndex) {\n // no tagID so no need to check for duplicity\n if (!targetItem[tagIDKeyName]) {\n destination.push(targetItem);\n return;\n }\n\n var sourceIndex = findIndex(source, function (item) {\n return item[tagIDKeyName] === targetItem[tagIDKeyName];\n });\n var sourceItem = source[sourceIndex]; // source doesnt contain any duplicate vmid's, we can keep targetItem\n\n if (sourceIndex === -1) {\n destination.push(targetItem);\n return;\n } // when sourceItem explictly defines contentKeyName or innerHTML as undefined, its\n // an indication that we need to skip the default behaviour or child has preference over parent\n // which means we keep the targetItem and ignore/remove the sourceItem\n\n\n if (contentKeyName in sourceItem && sourceItem[contentKeyName] === undefined || 'innerHTML' in sourceItem && sourceItem.innerHTML === undefined) {\n destination.push(targetItem); // remove current index from source array so its not concatenated to destination below\n\n source.splice(sourceIndex, 1);\n return;\n } // we now know that targetItem is a duplicate and we should ignore it in favor of sourceItem\n // if source specifies null as content then ignore both the target as the source\n\n\n if (sourceItem[contentKeyName] === null || sourceItem.innerHTML === null) {\n // remove current index from source array so its not concatenated to destination below\n source.splice(sourceIndex, 1);\n return;\n } // now we only need to check if the target has a template to combine it with the source\n\n\n var targetTemplate = targetItem[metaTemplateKeyName];\n\n if (!targetTemplate) {\n return;\n }\n\n var sourceTemplate = sourceItem[metaTemplateKeyName];\n\n if (!sourceTemplate) {\n // use parent template and child content\n applyTemplate({\n component: component,\n metaTemplateKeyName: metaTemplateKeyName,\n contentKeyName: contentKeyName\n }, sourceItem, targetTemplate); // set template to true to indicate template was already applied\n\n sourceItem.template = true;\n return;\n }\n\n if (!sourceItem[contentKeyName]) {\n // use parent content and child template\n applyTemplate({\n component: component,\n metaTemplateKeyName: metaTemplateKeyName,\n contentKeyName: contentKeyName\n }, sourceItem, undefined, targetItem[contentKeyName]);\n }\n });\n return destination.concat(source);\n}\nvar warningShown = false;\nfunction merge(target, source, options) {\n options = options || {}; // remove properties explicitly set to false so child components can\n // optionally _not_ overwrite the parents content\n // (for array properties this is checked in arrayMerge)\n\n if (source.title === undefined) {\n delete source.title;\n }\n\n metaInfoAttributeKeys.forEach(function (attrKey) {\n if (!source[attrKey]) {\n return;\n }\n\n for (var key in source[attrKey]) {\n if (key in source[attrKey] && source[attrKey][key] === undefined) {\n if (includes(booleanHtmlAttributes, key) && !warningShown) {\n warn('VueMeta: Please note that since v2 the value undefined is not used to indicate boolean attributes anymore, see migration guide for details');\n warningShown = true;\n }\n\n delete source[attrKey][key];\n }\n }\n });\n return deepmerge(target, source, {\n arrayMerge: function arrayMerge(t, s) {\n return _arrayMerge(options, t, s);\n }\n });\n}\n\nfunction getComponentMetaInfo(options, component) {\n return getComponentOption(options || {}, component, defaultInfo);\n}\n/**\n * Returns the `opts.option` $option value of the given `opts.component`.\n * If methods are encountered, they will be bound to the component context.\n * If `opts.deep` is true, will recursively merge all child component\n * `opts.option` $option values into the returned result.\n *\n * @param {Object} opts - options\n * @param {Object} opts.component - Vue component to fetch option data from\n * @param {Boolean} opts.deep - look for data in child components as well?\n * @param {Function} opts.arrayMerge - how should arrays be merged?\n * @param {String} opts.keyName - the name of the option to look for\n * @param {Object} [result={}] - result so far\n * @return {Object} result - final aggregated result\n */\n\nfunction getComponentOption(options, component, result) {\n result = result || {};\n\n if (component._inactive) {\n return result;\n }\n\n options = options || {};\n var _options = options,\n keyName = _options.keyName;\n var $metaInfo = component.$metaInfo,\n $options = component.$options,\n $children = component.$children; // only collect option data if it exists\n\n if ($options[keyName]) {\n // if $metaInfo exists then [keyName] was defined as a function\n // and set to the computed prop $metaInfo in the mixin\n // using the computed prop should be a small performance increase\n // because Vue caches those internally\n var data = $metaInfo || $options[keyName]; // only merge data with result when its an object\n // eg it could be a function when metaInfo() returns undefined\n // dueo to the or statement above\n\n if (isObject(data)) {\n result = merge(result, data, options);\n }\n } // collect & aggregate child options if deep = true\n\n\n if ($children.length) {\n $children.forEach(function (childComponent) {\n // check if the childComponent is in a branch\n // return otherwise so we dont walk all component branches unnecessarily\n if (!inMetaInfoBranch(childComponent)) {\n return;\n }\n\n result = getComponentOption(options, childComponent, result);\n });\n }\n\n return result;\n}\n\nvar callbacks = [];\nfunction isDOMComplete(d) {\n return (d || document).readyState === 'complete';\n}\nfunction addCallback(query, callback) {\n if (arguments.length === 1) {\n callback = query;\n query = '';\n }\n\n callbacks.push([query, callback]);\n}\nfunction addCallbacks(_ref, type, tags, autoAddListeners) {\n var tagIDKeyName = _ref.tagIDKeyName;\n var hasAsyncCallback = false;\n tags.forEach(function (tag) {\n if (!tag[tagIDKeyName] || !tag.callback) {\n return;\n }\n\n hasAsyncCallback = true;\n addCallback(\"\".concat(type, \"[data-\").concat(tagIDKeyName, \"=\\\"\").concat(tag[tagIDKeyName], \"\\\"]\"), tag.callback);\n });\n\n if (!autoAddListeners || !hasAsyncCallback) {\n return hasAsyncCallback;\n }\n\n return addListeners();\n}\nfunction addListeners() {\n if (isDOMComplete()) {\n applyCallbacks();\n return;\n } // Instead of using a MutationObserver, we just apply\n\n /* istanbul ignore next */\n\n\n document.onreadystatechange = function () {\n applyCallbacks();\n };\n}\nfunction applyCallbacks(matchElement) {\n callbacks.forEach(function (args) {\n // do not use destructuring for args, it increases transpiled size\n // due to var checks while we are guaranteed the structure of the cb\n var query = args[0];\n var callback = args[1];\n var selector = \"\".concat(query, \"[onload=\\\"this.__vm_l=1\\\"]\");\n var elements = [];\n\n if (!matchElement) {\n elements = toArray(querySelector(selector));\n }\n\n if (matchElement && matchElement.matches(selector)) {\n elements = [matchElement];\n }\n\n elements.forEach(function (element) {\n /* __vm_cb: whether the load callback has been called\n * __vm_l: set by onload attribute, whether the element was loaded\n * __vm_ev: whether the event listener was added or not\n */\n if (element.__vm_cb) {\n return;\n }\n\n var onload = function onload() {\n /* Mark that the callback for this element has already been called,\n * this prevents the callback to run twice in some (rare) conditions\n */\n element.__vm_cb = true;\n /* onload needs to be removed because we only need the\n * attribute after ssr and if we dont remove it the node\n * will fail isEqualNode on the client\n */\n\n removeAttribute(element, 'onload');\n callback(element);\n };\n /* IE9 doesnt seem to load scripts synchronously,\n * causing a script sometimes/often already to be loaded\n * when we add the event listener below (thus adding an onload event\n * listener has no use because it will never be triggered).\n * Therefore we add the onload attribute during ssr, and\n * check here if it was already loaded or not\n */\n\n\n if (element.__vm_l) {\n onload();\n return;\n }\n\n if (!element.__vm_ev) {\n element.__vm_ev = true;\n element.addEventListener('load', onload);\n }\n });\n });\n}\n\n// instead of adding it to the html\n\nvar attributeMap = {};\n/**\n * Updates the document's html tag attributes\n *\n * @param {Object} attrs - the new document html attributes\n * @param {HTMLElement} tag - the HTMLElement tag to update with new attrs\n */\n\nfunction updateAttribute(appId, options, type, attrs, tag) {\n var _ref = options || {},\n attribute = _ref.attribute;\n\n var vueMetaAttrString = tag.getAttribute(attribute);\n\n if (vueMetaAttrString) {\n attributeMap[type] = JSON.parse(decodeURI(vueMetaAttrString));\n removeAttribute(tag, attribute);\n }\n\n var data = attributeMap[type] || {};\n var toUpdate = []; // remove attributes from the map\n // which have been removed for this appId\n\n for (var attr in data) {\n if (data[attr] !== undefined && appId in data[attr]) {\n toUpdate.push(attr);\n\n if (!attrs[attr]) {\n delete data[attr][appId];\n }\n }\n }\n\n for (var _attr in attrs) {\n var attrData = data[_attr];\n\n if (!attrData || attrData[appId] !== attrs[_attr]) {\n toUpdate.push(_attr);\n\n if (attrs[_attr] !== undefined) {\n data[_attr] = data[_attr] || {};\n data[_attr][appId] = attrs[_attr];\n }\n }\n }\n\n for (var _i = 0, _toUpdate = toUpdate; _i < _toUpdate.length; _i++) {\n var _attr2 = _toUpdate[_i];\n var _attrData = data[_attr2];\n var attrValues = [];\n\n for (var _appId in _attrData) {\n Array.prototype.push.apply(attrValues, [].concat(_attrData[_appId]));\n }\n\n if (attrValues.length) {\n var attrValue = includes(booleanHtmlAttributes, _attr2) && attrValues.some(Boolean) ? '' : attrValues.filter(function (v) {\n return v !== undefined;\n }).join(' ');\n tag.setAttribute(_attr2, attrValue);\n } else {\n removeAttribute(tag, _attr2);\n }\n }\n\n attributeMap[type] = data;\n}\n\n/**\n * Updates the document title\n *\n * @param {String} title - the new title of the document\n */\nfunction updateTitle(title) {\n if (!title && title !== '') {\n return;\n }\n\n document.title = title;\n}\n\n/**\n * Updates meta tags inside <head> and <body> on the client. Borrowed from `react-helmet`:\n * https://github.com/nfl/react-helmet/blob/004d448f8de5f823d10f838b02317521180f34da/src/Helmet.js#L195-L245\n *\n * @param {('meta'|'base'|'link'|'style'|'script'|'noscript')} type - the name of the tag\n * @param {(Array<Object>|Object)} tags - an array of tag objects or a single object in case of base\n * @return {Object} - a representation of what tags changed\n */\n\nfunction updateTag(appId, options, type, tags, head, body) {\n var _ref = options || {},\n attribute = _ref.attribute,\n tagIDKeyName = _ref.tagIDKeyName;\n\n var dataAttributes = commonDataAttributes.slice();\n dataAttributes.push(tagIDKeyName);\n var newElements = [];\n var queryOptions = {\n appId: appId,\n attribute: attribute,\n type: type,\n tagIDKeyName: tagIDKeyName\n };\n var currentElements = {\n head: queryElements(head, queryOptions),\n pbody: queryElements(body, queryOptions, {\n pbody: true\n }),\n body: queryElements(body, queryOptions, {\n body: true\n })\n };\n\n if (tags.length > 1) {\n // remove duplicates that could have been found by merging tags\n // which include a mixin with metaInfo and that mixin is used\n // by multiple components on the same page\n var found = [];\n tags = tags.filter(function (x) {\n var k = JSON.stringify(x);\n var res = !includes(found, k);\n found.push(k);\n return res;\n });\n }\n\n tags.forEach(function (tag) {\n if (tag.skip) {\n return;\n }\n\n var newElement = document.createElement(type);\n\n if (!tag.once) {\n newElement.setAttribute(attribute, appId);\n }\n\n Object.keys(tag).forEach(function (attr) {\n /* istanbul ignore next */\n if (includes(tagProperties, attr)) {\n return;\n }\n\n if (attr === 'innerHTML') {\n newElement.innerHTML = tag.innerHTML;\n return;\n }\n\n if (attr === 'json') {\n newElement.innerHTML = JSON.stringify(tag.json);\n return;\n }\n\n if (attr === 'cssText') {\n if (newElement.styleSheet) {\n /* istanbul ignore next */\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n\n return;\n }\n\n if (attr === 'callback') {\n newElement.onload = function () {\n return tag[attr](newElement);\n };\n\n return;\n }\n\n var _attr = includes(dataAttributes, attr) ? \"data-\".concat(attr) : attr;\n\n var isBooleanAttribute = includes(booleanHtmlAttributes, attr);\n\n if (isBooleanAttribute && !tag[attr]) {\n return;\n }\n\n var value = isBooleanAttribute ? '' : tag[attr];\n newElement.setAttribute(_attr, value);\n });\n var oldElements = currentElements[getElementsKey(tag)]; // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n\n var indexToDelete;\n var hasEqualElement = oldElements.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n });\n\n if (hasEqualElement && (indexToDelete || indexToDelete === 0)) {\n oldElements.splice(indexToDelete, 1);\n } else {\n newElements.push(newElement);\n }\n });\n var oldElements = [];\n\n for (var _type in currentElements) {\n Array.prototype.push.apply(oldElements, currentElements[_type]);\n } // remove old elements\n\n\n oldElements.forEach(function (element) {\n element.parentNode.removeChild(element);\n }); // insert new elements\n\n newElements.forEach(function (element) {\n if (element.hasAttribute('data-body')) {\n body.appendChild(element);\n return;\n }\n\n if (element.hasAttribute('data-pbody')) {\n body.insertBefore(element, body.firstChild);\n return;\n }\n\n head.appendChild(element);\n });\n return {\n oldTags: oldElements,\n newTags: newElements\n };\n}\n\n/**\n * Performs client-side updates when new meta info is received\n *\n * @param {Object} newInfo - the meta info to update to\n */\n\nfunction updateClientMetaInfo(appId, options, newInfo) {\n options = options || {};\n var _options = options,\n ssrAttribute = _options.ssrAttribute,\n ssrAppId = _options.ssrAppId; // only cache tags for current update\n\n var tags = {};\n var htmlTag = getTag(tags, 'html'); // if this is a server render, then dont update\n\n if (appId === ssrAppId && htmlTag.hasAttribute(ssrAttribute)) {\n // remove the server render attribute so we can update on (next) changes\n removeAttribute(htmlTag, ssrAttribute); // add load callbacks if the\n\n var addLoadListeners = false;\n tagsSupportingOnload.forEach(function (type) {\n if (newInfo[type] && addCallbacks(options, type, newInfo[type])) {\n addLoadListeners = true;\n }\n });\n\n if (addLoadListeners) {\n addListeners();\n }\n\n return false;\n } // initialize tracked changes\n\n\n var tagsAdded = {};\n var tagsRemoved = {};\n\n for (var type in newInfo) {\n // ignore these\n if (includes(metaInfoOptionKeys, type)) {\n continue;\n }\n\n if (type === 'title') {\n // update the title\n updateTitle(newInfo.title);\n continue;\n }\n\n if (includes(metaInfoAttributeKeys, type)) {\n var tagName = type.substr(0, 4);\n updateAttribute(appId, options, type, newInfo[type], getTag(tags, tagName));\n continue;\n } // tags should always be an array, ignore if it isnt\n\n\n if (!isArray(newInfo[type])) {\n continue;\n }\n\n var _updateTag = updateTag(appId, options, type, newInfo[type], getTag(tags, 'head'), getTag(tags, 'body')),\n oldTags = _updateTag.oldTags,\n newTags = _updateTag.newTags;\n\n if (newTags.length) {\n tagsAdded[type] = newTags;\n tagsRemoved[type] = oldTags;\n }\n }\n\n return {\n tagsAdded: tagsAdded,\n tagsRemoved: tagsRemoved\n };\n}\n\nvar appsMetaInfo;\nfunction addApp(rootVm, appId, options) {\n return {\n set: function set(metaInfo) {\n return setMetaInfo(rootVm, appId, options, metaInfo);\n },\n remove: function remove() {\n return removeMetaInfo(rootVm, appId, options);\n }\n };\n}\nfunction setMetaInfo(rootVm, appId, options, metaInfo) {\n // if a vm exists _and_ its mounted then immediately update\n if (rootVm && rootVm.$el) {\n return updateClientMetaInfo(appId, options, metaInfo);\n } // store for later, the info\n // will be set on the first refresh\n\n\n appsMetaInfo = appsMetaInfo || {};\n appsMetaInfo[appId] = metaInfo;\n}\nfunction removeMetaInfo(rootVm, appId, options) {\n if (rootVm && rootVm.$el) {\n var tags = {};\n\n var _iterator = _createForOfIteratorHelper(metaInfoAttributeKeys),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var type = _step.value;\n var tagName = type.substr(0, 4);\n updateAttribute(appId, options, type, {}, getTag(tags, tagName));\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return removeElementsByAppId(options, appId);\n }\n\n if (appsMetaInfo[appId]) {\n delete appsMetaInfo[appId];\n clearAppsMetaInfo();\n }\n}\nfunction getAppsMetaInfo() {\n return appsMetaInfo;\n}\nfunction clearAppsMetaInfo(force) {\n if (force || !Object.keys(appsMetaInfo).length) {\n appsMetaInfo = undefined;\n }\n}\n\n/**\n * Returns the correct meta info for the given component\n * (child components will overwrite parent meta info)\n *\n * @param {Object} component - the Vue instance to get meta info from\n * @return {Object} - returned meta info\n */\n\nfunction getMetaInfo(options, info, escapeSequences, component) {\n options = options || {};\n escapeSequences = escapeSequences || [];\n var _options = options,\n tagIDKeyName = _options.tagIDKeyName; // Remove all \"template\" tags from meta\n // backup the title chunk in case user wants access to it\n\n if (info.title) {\n info.titleChunk = info.title;\n } // replace title with populated template\n\n\n if (info.titleTemplate && info.titleTemplate !== '%s') {\n applyTemplate({\n component: component,\n contentKeyName: 'title'\n }, info, info.titleTemplate, info.titleChunk || '');\n } // convert base tag to an array so it can be handled the same way\n // as the other tags\n\n\n if (info.base) {\n info.base = Object.keys(info.base).length ? [info.base] : [];\n }\n\n if (info.meta) {\n // remove meta items with duplicate vmid's\n info.meta = info.meta.filter(function (metaItem, index, arr) {\n var hasVmid = !!metaItem[tagIDKeyName];\n\n if (!hasVmid) {\n return true;\n }\n\n var isFirstItemForVmid = index === findIndex(arr, function (item) {\n return item[tagIDKeyName] === metaItem[tagIDKeyName];\n });\n return isFirstItemForVmid;\n }); // apply templates if needed\n\n info.meta.forEach(function (metaObject) {\n return applyTemplate(options, metaObject);\n });\n }\n\n return escapeMetaInfo(options, info, escapeSequences);\n}\n\n/**\n * When called, will update the current meta info with new meta info.\n * Useful when updating meta info as the result of an asynchronous\n * action that resolves after the initial render takes place.\n *\n * Credit to [Sébastien Chopin](https://github.com/Atinux) for the suggestion\n * to implement this method.\n *\n * @return {Object} - new meta info\n */\n\nfunction refresh(rootVm, options) {\n options = options || {}; // make sure vue-meta was initiated\n\n if (!rootVm[rootConfigKey]) {\n showWarningNotSupported();\n return {};\n } // collect & aggregate all metaInfo $options\n\n\n var rawInfo = getComponentMetaInfo(options, rootVm);\n var metaInfo = getMetaInfo(options, rawInfo, clientSequences, rootVm);\n var appId = rootVm[rootConfigKey].appId;\n var tags = updateClientMetaInfo(appId, options, metaInfo); // emit \"event\" with new info\n\n if (tags && isFunction(metaInfo.changed)) {\n metaInfo.changed(metaInfo, tags.tagsAdded, tags.tagsRemoved);\n tags = {\n addedTags: tags.tagsAdded,\n removedTags: tags.tagsRemoved\n };\n }\n\n var appsMetaInfo = getAppsMetaInfo();\n\n if (appsMetaInfo) {\n for (var additionalAppId in appsMetaInfo) {\n updateClientMetaInfo(additionalAppId, options, appsMetaInfo[additionalAppId]);\n delete appsMetaInfo[additionalAppId];\n }\n\n clearAppsMetaInfo(true);\n }\n\n return {\n vm: rootVm,\n metaInfo: metaInfo,\n // eslint-disable-line object-shorthand\n tags: tags\n };\n}\n\n/**\n * Generates tag attributes for use on the server.\n *\n * @param {('bodyAttrs'|'htmlAttrs'|'headAttrs')} type - the type of attributes to generate\n * @param {Object} data - the attributes to generate\n * @return {Object} - the attribute generator\n */\n\nfunction attributeGenerator(options, type, data, _ref) {\n var addSsrAttribute = _ref.addSsrAttribute;\n\n var _ref2 = options || {},\n attribute = _ref2.attribute,\n ssrAttribute = _ref2.ssrAttribute;\n\n var attributeStr = '';\n\n for (var attr in data) {\n var attrData = data[attr];\n var attrValues = [];\n\n for (var appId in attrData) {\n attrValues.push.apply(attrValues, _toConsumableArray([].concat(attrData[appId])));\n }\n\n if (attrValues.length) {\n attributeStr += booleanHtmlAttributes.includes(attr) && attrValues.some(Boolean) ? \"\".concat(attr) : \"\".concat(attr, \"=\\\"\").concat(attrValues.join(' '), \"\\\"\");\n attributeStr += ' ';\n }\n }\n\n if (attributeStr) {\n attributeStr += \"\".concat(attribute, \"=\\\"\").concat(encodeURI(JSON.stringify(data)), \"\\\"\");\n }\n\n if (type === 'htmlAttrs' && addSsrAttribute) {\n return \"\".concat(ssrAttribute).concat(attributeStr ? ' ' : '').concat(attributeStr);\n }\n\n return attributeStr;\n}\n\n/**\n * Generates title output for the server\n *\n * @param {'title'} type - the string \"title\"\n * @param {String} data - the title text\n * @return {Object} - the title generator\n */\nfunction titleGenerator(options, type, data, generatorOptions) {\n var _ref = generatorOptions || {},\n ln = _ref.ln;\n\n if (!data) {\n return '';\n }\n\n return \"<\".concat(type, \">\").concat(data, \"</\").concat(type, \">\").concat(ln ? '\\n' : '');\n}\n\n/**\n * Generates meta, base, link, style, script, noscript tags for use on the server\n *\n * @param {('meta'|'base'|'link'|'style'|'script'|'noscript')} the name of the tag\n * @param {(Array<Object>|Object)} tags - an array of tag objects or a single object in case of base\n * @return {Object} - the tag generator\n */\n\nfunction tagGenerator(options, type, tags, generatorOptions) {\n var _ref = options || {},\n ssrAppId = _ref.ssrAppId,\n attribute = _ref.attribute,\n tagIDKeyName = _ref.tagIDKeyName;\n\n var _ref2 = generatorOptions || {},\n appId = _ref2.appId,\n _ref2$isSSR = _ref2.isSSR,\n isSSR = _ref2$isSSR === void 0 ? true : _ref2$isSSR,\n _ref2$body = _ref2.body,\n body = _ref2$body === void 0 ? false : _ref2$body,\n _ref2$pbody = _ref2.pbody,\n pbody = _ref2$pbody === void 0 ? false : _ref2$pbody,\n _ref2$ln = _ref2.ln,\n ln = _ref2$ln === void 0 ? false : _ref2$ln;\n\n var dataAttributes = [tagIDKeyName].concat(_toConsumableArray(commonDataAttributes));\n\n if (!tags || !tags.length) {\n return '';\n } // build a string containing all tags of this type\n\n\n return tags.reduce(function (tagsStr, tag) {\n if (tag.skip) {\n return tagsStr;\n }\n\n var tagKeys = Object.keys(tag);\n\n if (tagKeys.length === 0) {\n return tagsStr; // Bail on empty tag object\n }\n\n if (Boolean(tag.body) !== body || Boolean(tag.pbody) !== pbody) {\n return tagsStr;\n }\n\n var attrs = tag.once ? '' : \" \".concat(attribute, \"=\\\"\").concat(appId || (isSSR === false ? '1' : ssrAppId), \"\\\"\"); // build a string containing all attributes of this tag\n\n for (var attr in tag) {\n // these attributes are treated as children on the tag\n if (tagAttributeAsInnerContent.includes(attr) || tagProperties.includes(attr)) {\n continue;\n }\n\n if (attr === 'callback') {\n attrs += ' onload=\"this.__vm_l=1\"';\n continue;\n } // these form the attribute list for this tag\n\n\n var prefix = '';\n\n if (dataAttributes.includes(attr)) {\n prefix = 'data-';\n }\n\n var isBooleanAttr = !prefix && booleanHtmlAttributes.includes(attr);\n\n if (isBooleanAttr && !tag[attr]) {\n continue;\n }\n\n attrs += \" \".concat(prefix).concat(attr) + (isBooleanAttr ? '' : \"=\\\"\".concat(tag[attr], \"\\\"\"));\n }\n\n var json = '';\n\n if (tag.json) {\n json = JSON.stringify(tag.json);\n } // grab child content from one of these attributes, if possible\n\n\n var content = tag.innerHTML || tag.cssText || json; // generate tag exactly without any other redundant attribute\n // these tags have no end tag\n\n var hasEndTag = !tagsWithoutEndTag.includes(type); // these tag types will have content inserted\n\n var hasContent = hasEndTag && tagsWithInnerContent.includes(type); // the final string for this specific tag\n\n return \"\".concat(tagsStr, \"<\").concat(type).concat(attrs).concat(!hasContent && hasEndTag ? '/' : '', \">\") + (hasContent ? \"\".concat(content, \"</\").concat(type, \">\") : '') + (ln ? '\\n' : '');\n }, '');\n}\n\n/**\n * Converts a meta info property to one that can be stringified on the server\n *\n * @param {String} type - the type of data to convert\n * @param {(String|Object|Array<Object>)} data - the data value\n * @return {Object} - the new injector\n */\n\nfunction generateServerInjector(options, metaInfo, globalInjectOptions) {\n var serverInjector = {\n data: metaInfo,\n extraData: undefined,\n addInfo: function addInfo(appId, metaInfo) {\n this.extraData = this.extraData || {};\n this.extraData[appId] = metaInfo;\n },\n callInjectors: function callInjectors(opts) {\n var m = this.injectors; // only call title for the head\n\n return (opts.body || opts.pbody ? '' : m.title.text(opts)) + m.meta.text(opts) + m.base.text(opts) + m.link.text(opts) + m.style.text(opts) + m.script.text(opts) + m.noscript.text(opts);\n },\n injectors: {\n head: function head(ln) {\n return serverInjector.callInjectors(_objectSpread2(_objectSpread2({}, globalInjectOptions), {}, {\n ln: ln\n }));\n },\n bodyPrepend: function bodyPrepend(ln) {\n return serverInjector.callInjectors(_objectSpread2(_objectSpread2({}, globalInjectOptions), {}, {\n ln: ln,\n pbody: true\n }));\n },\n bodyAppend: function bodyAppend(ln) {\n return serverInjector.callInjectors(_objectSpread2(_objectSpread2({}, globalInjectOptions), {}, {\n ln: ln,\n body: true\n }));\n }\n }\n };\n\n var _loop = function _loop(type) {\n if (metaInfoOptionKeys.includes(type)) {\n return \"continue\";\n }\n\n serverInjector.injectors[type] = {\n text: function text(injectOptions) {\n var addSsrAttribute = injectOptions === true;\n injectOptions = _objectSpread2(_objectSpread2({\n addSsrAttribute: addSsrAttribute\n }, globalInjectOptions), injectOptions);\n\n if (type === 'title') {\n return titleGenerator(options, type, serverInjector.data[type], injectOptions);\n }\n\n if (metaInfoAttributeKeys.includes(type)) {\n var attributeData = {};\n var data = serverInjector.data[type];\n\n if (data) {\n var appId = injectOptions.isSSR === false ? '1' : options.ssrAppId;\n\n for (var attr in data) {\n attributeData[attr] = _defineProperty({}, appId, data[attr]);\n }\n }\n\n if (serverInjector.extraData) {\n for (var _appId in serverInjector.extraData) {\n var _data = serverInjector.extraData[_appId][type];\n\n if (_data) {\n for (var _attr in _data) {\n attributeData[_attr] = _objectSpread2(_objectSpread2({}, attributeData[_attr]), {}, _defineProperty({}, _appId, _data[_attr]));\n }\n }\n }\n }\n\n return attributeGenerator(options, type, attributeData, injectOptions);\n }\n\n var str = tagGenerator(options, type, serverInjector.data[type], injectOptions);\n\n if (serverInjector.extraData) {\n for (var _appId2 in serverInjector.extraData) {\n var _data2 = serverInjector.extraData[_appId2][type];\n var extraStr = tagGenerator(options, type, _data2, _objectSpread2({\n appId: _appId2\n }, injectOptions));\n str = \"\".concat(str).concat(extraStr);\n }\n }\n\n return str;\n }\n };\n };\n\n for (var type in defaultInfo) {\n var _ret = _loop(type);\n\n if (_ret === \"continue\") continue;\n }\n\n return serverInjector;\n}\n\n/**\n * Converts the state of the meta info object such that each item\n * can be compiled to a tag string on the server\n *\n * @vm {Object} - Vue instance - ideally the root component\n * @return {Object} - server meta info with `toString` methods\n */\n\nfunction inject(rootVm, options, injectOptions) {\n // make sure vue-meta was initiated\n if (!rootVm[rootConfigKey]) {\n showWarningNotSupported();\n return {};\n } // collect & aggregate all metaInfo $options\n\n\n var rawInfo = getComponentMetaInfo(options, rootVm);\n var metaInfo = getMetaInfo(options, rawInfo, serverSequences, rootVm); // generate server injector\n\n var serverInjector = generateServerInjector(options, metaInfo, injectOptions); // add meta info from additional apps\n\n var appsMetaInfo = getAppsMetaInfo();\n\n if (appsMetaInfo) {\n for (var additionalAppId in appsMetaInfo) {\n serverInjector.addInfo(additionalAppId, appsMetaInfo[additionalAppId]);\n delete appsMetaInfo[additionalAppId];\n }\n\n clearAppsMetaInfo(true);\n }\n\n return serverInjector.injectors;\n}\n\nfunction $meta(options) {\n options = options || {};\n /**\n * Returns an injector for server-side rendering.\n * @this {Object} - the Vue instance (a root component)\n * @return {Object} - injector\n */\n\n var $root = this.$root;\n return {\n getOptions: function getOptions$1() {\n return getOptions(options);\n },\n setOptions: function setOptions(newOptions) {\n var refreshNavKey = 'refreshOnceOnNavigation';\n\n if (newOptions && newOptions[refreshNavKey]) {\n options.refreshOnceOnNavigation = !!newOptions[refreshNavKey];\n addNavGuards($root);\n }\n\n var debounceWaitKey = 'debounceWait';\n\n if (newOptions && debounceWaitKey in newOptions) {\n var debounceWait = parseInt(newOptions[debounceWaitKey]);\n\n if (!isNaN(debounceWait)) {\n options.debounceWait = debounceWait;\n }\n }\n\n var waitOnDestroyedKey = 'waitOnDestroyed';\n\n if (newOptions && waitOnDestroyedKey in newOptions) {\n options.waitOnDestroyed = !!newOptions[waitOnDestroyedKey];\n }\n },\n refresh: function refresh$1() {\n return refresh($root, options);\n },\n inject: function inject$1(injectOptions) {\n return inject($root, options, injectOptions) ;\n },\n pause: function pause$1() {\n return pause($root);\n },\n resume: function resume$1() {\n return resume($root);\n },\n addApp: function addApp$1(appId) {\n return addApp($root, appId, options);\n }\n };\n}\n\nfunction generate(rawInfo, options) {\n options = setOptions(options);\n var metaInfo = getMetaInfo(options, rawInfo, serverSequences);\n var serverInjector = generateServerInjector(options, metaInfo);\n return serverInjector.injectors;\n}\n\n/**\n * Plugin install function.\n * @param {Function} Vue - the Vue constructor.\n */\n\nfunction install(Vue, options) {\n if (Vue.__vuemeta_installed) {\n return;\n }\n\n Vue.__vuemeta_installed = true;\n options = setOptions(options);\n\n Vue.prototype.$meta = function () {\n return $meta.call(this, options);\n };\n\n Vue.mixin(createMixin(Vue, options));\n}\n\nvar index = {\n version: version,\n install: install,\n generate: function generate$1(metaInfo, options) {\n return generate(metaInfo, options) ;\n },\n hasMetaInfo: hasMetaInfo\n};\n\nexport default index;\n","import json2mq from 'json2mq';\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 _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n}\n\nfunction convertBreakpointsToMediaQueries(breakpoints) {\n var keys = Object.keys(breakpoints);\n var values = keys.map(function (key) {\n return breakpoints[key];\n });\n var breakpointValues = [0].concat(_toConsumableArray(values.slice(0, -1)));\n var mediaQueries = breakpointValues.reduce(function (sum, value, index) {\n var options = Object.assign({\n minWidth: value\n }, index < keys.length - 1 ? {\n maxWidth: breakpointValues[index + 1] - 1\n } : {});\n var mediaQuery = json2mq(options);\n return Object.assign(sum, _defineProperty({}, keys[index], mediaQuery));\n }, {});\n return mediaQueries;\n}\nfunction transformValuesFromBreakpoints(breakpoints, values, currentBreakpoint) {\n var findClosestValue = function findClosestValue(currentBreakpoint) {\n if (values[currentBreakpoint] !== undefined) return values[currentBreakpoint];\n var index = breakpoints.findIndex(function (b) {\n return b === currentBreakpoint;\n });\n var newBreakpoint = index !== -1 || index !== 0 ? breakpoints[index - 1] : null;\n if (!newBreakpoint) return values[index];\n return values[newBreakpoint] !== undefined ? values[newBreakpoint] : findClosestValue(newBreakpoint);\n };\n\n return findClosestValue(currentBreakpoint);\n}\nfunction selectBreakpoints(breakpoints, currentBreakpoint) {\n var index = breakpoints.findIndex(function (b) {\n return b === currentBreakpoint;\n });\n return breakpoints.slice(index);\n}\nfunction subscribeToMediaQuery(mediaQuery, enter) {\n var mql = window.matchMedia(mediaQuery);\n\n var cb = function cb(_ref) {\n var matches = _ref.matches;\n if (matches) enter();\n };\n\n mql.addListener(cb); //subscribing\n\n cb(mql); //initial trigger\n}\n\nfunction isArray(arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n}\n\n// USAGE\n// mq-layout(mq=\"lg\")\n// p I’m lg\nvar component = {\n props: {\n mq: {\n required: true,\n type: [String, Array]\n }\n },\n computed: {\n plusModifier: function plusModifier() {\n return !isArray(this.mq) && this.mq.slice(-1) === '+';\n },\n activeBreakpoints: function activeBreakpoints() {\n var breakpoints = Object.keys(this.$mqAvailableBreakpoints);\n var mq = this.plusModifier ? this.mq.slice(0, -1) : isArray(this.mq) ? this.mq : [this.mq];\n return this.plusModifier ? selectBreakpoints(breakpoints, mq) : mq;\n }\n },\n render: function render(h, props) {\n var shouldRenderChildren = this.activeBreakpoints.includes(this.$mq);\n return shouldRenderChildren ? h('div', this.$slots.default) : h();\n }\n};\n\nvar DEFAULT_BREAKPOINT = {\n sm: 450,\n md: 1250,\n lg: Infinity\n};\n\nvar install = function install(Vue) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$breakpoints = _ref.breakpoints,\n breakpoints = _ref$breakpoints === void 0 ? DEFAULT_BREAKPOINT : _ref$breakpoints,\n _ref$defaultBreakpoin = _ref.defaultBreakpoint,\n defaultBreakpoint = _ref$defaultBreakpoin === void 0 ? 'sm' : _ref$defaultBreakpoin;\n\n var hasSetupListeners = false; // Init reactive component\n\n var reactorComponent = new Vue({\n data: function data() {\n return {\n currentBreakpoint: defaultBreakpoint\n };\n }\n });\n Vue.filter('mq', function (currentBreakpoint, values) {\n return transformValuesFromBreakpoints(Object.keys(breakpoints), values, currentBreakpoint);\n });\n Vue.mixin({\n computed: {\n $mq: function $mq() {\n return reactorComponent.currentBreakpoint;\n }\n },\n created: function created() {\n if (this.$isServer) reactorComponent.currentBreakpoint = defaultBreakpoint;\n },\n mounted: function mounted() {\n if (!hasSetupListeners) {\n var mediaQueries = convertBreakpointsToMediaQueries(breakpoints); // setup listeners\n\n var _loop = function _loop(key) {\n var mediaQuery = mediaQueries[key];\n\n var enter = function enter() {\n reactorComponent.currentBreakpoint = key;\n };\n\n subscribeToMediaQuery(mediaQuery, enter);\n };\n\n for (var key in mediaQueries) {\n _loop(key);\n }\n\n hasSetupListeners = true;\n }\n }\n });\n Vue.prototype.$mqAvailableBreakpoints = breakpoints;\n Vue.component('MqLayout', component);\n};\n\nvar index = {\n install: install\n};\n\nexport default index;\n","/*!\n * vue-router v3.5.4\n * (c) 2022 Evan You\n * @license MIT\n */\n/* */\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error((\"[vue-router] \" + message))\n }\n}\n\nfunction warn (condition, message) {\n if (!condition) {\n typeof console !== 'undefined' && console.warn((\"[vue-router] \" + message));\n }\n}\n\nfunction extend (a, b) {\n for (var key in b) {\n a[key] = b[key];\n }\n return a\n}\n\n/* */\n\nvar encodeReserveRE = /[!'()*]/g;\nvar encodeReserveReplacer = function (c) { return '%' + c.charCodeAt(0).toString(16); };\nvar commaRE = /%2C/g;\n\n// fixed encodeURIComponent which is more conformant to RFC3986:\n// - escapes [!'()*]\n// - preserve commas\nvar encode = function (str) { return encodeURIComponent(str)\n .replace(encodeReserveRE, encodeReserveReplacer)\n .replace(commaRE, ','); };\n\nfunction decode (str) {\n try {\n return decodeURIComponent(str)\n } catch (err) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"Error decoding \\\"\" + str + \"\\\". Leaving it intact.\"));\n }\n }\n return str\n}\n\nfunction resolveQuery (\n query,\n extraQuery,\n _parseQuery\n) {\n if ( extraQuery === void 0 ) extraQuery = {};\n\n var parse = _parseQuery || parseQuery;\n var parsedQuery;\n try {\n parsedQuery = parse(query || '');\n } catch (e) {\n process.env.NODE_ENV !== 'production' && warn(false, e.message);\n parsedQuery = {};\n }\n for (var key in extraQuery) {\n var value = extraQuery[key];\n parsedQuery[key] = Array.isArray(value)\n ? value.map(castQueryParamValue)\n : castQueryParamValue(value);\n }\n return parsedQuery\n}\n\nvar castQueryParamValue = function (value) { return (value == null || typeof value === 'object' ? value : String(value)); };\n\nfunction parseQuery (query) {\n var res = {};\n\n query = query.trim().replace(/^(\\?|#|&)/, '');\n\n if (!query) {\n return res\n }\n\n query.split('&').forEach(function (param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = decode(parts.shift());\n var val = parts.length > 0 ? decode(parts.join('=')) : null;\n\n if (res[key] === undefined) {\n res[key] = val;\n } else if (Array.isArray(res[key])) {\n res[key].push(val);\n } else {\n res[key] = [res[key], val];\n }\n });\n\n return res\n}\n\nfunction stringifyQuery (obj) {\n var res = obj\n ? Object.keys(obj)\n .map(function (key) {\n var val = obj[key];\n\n if (val === undefined) {\n return ''\n }\n\n if (val === null) {\n return encode(key)\n }\n\n if (Array.isArray(val)) {\n var result = [];\n val.forEach(function (val2) {\n if (val2 === undefined) {\n return\n }\n if (val2 === null) {\n result.push(encode(key));\n } else {\n result.push(encode(key) + '=' + encode(val2));\n }\n });\n return result.join('&')\n }\n\n return encode(key) + '=' + encode(val)\n })\n .filter(function (x) { return x.length > 0; })\n .join('&')\n : null;\n return res ? (\"?\" + res) : ''\n}\n\n/* */\n\nvar trailingSlashRE = /\\/?$/;\n\nfunction createRoute (\n record,\n location,\n redirectedFrom,\n router\n) {\n var stringifyQuery = router && router.options.stringifyQuery;\n\n var query = location.query || {};\n try {\n query = clone(query);\n } catch (e) {}\n\n var route = {\n name: location.name || (record && record.name),\n meta: (record && record.meta) || {},\n path: location.path || '/',\n hash: location.hash || '',\n query: query,\n params: location.params || {},\n fullPath: getFullPath(location, stringifyQuery),\n matched: record ? formatMatch(record) : []\n };\n if (redirectedFrom) {\n route.redirectedFrom = getFullPath(redirectedFrom, stringifyQuery);\n }\n return Object.freeze(route)\n}\n\nfunction clone (value) {\n if (Array.isArray(value)) {\n return value.map(clone)\n } else if (value && typeof value === 'object') {\n var res = {};\n for (var key in value) {\n res[key] = clone(value[key]);\n }\n return res\n } else {\n return value\n }\n}\n\n// the starting route that represents the initial state\nvar START = createRoute(null, {\n path: '/'\n});\n\nfunction formatMatch (record) {\n var res = [];\n while (record) {\n res.unshift(record);\n record = record.parent;\n }\n return res\n}\n\nfunction getFullPath (\n ref,\n _stringifyQuery\n) {\n var path = ref.path;\n var query = ref.query; if ( query === void 0 ) query = {};\n var hash = ref.hash; if ( hash === void 0 ) hash = '';\n\n var stringify = _stringifyQuery || stringifyQuery;\n return (path || '/') + stringify(query) + hash\n}\n\nfunction isSameRoute (a, b, onlyPath) {\n if (b === START) {\n return a === b\n } else if (!b) {\n return false\n } else if (a.path && b.path) {\n return a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') && (onlyPath ||\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query))\n } else if (a.name && b.name) {\n return (\n a.name === b.name &&\n (onlyPath || (\n a.hash === b.hash &&\n isObjectEqual(a.query, b.query) &&\n isObjectEqual(a.params, b.params))\n )\n )\n } else {\n return false\n }\n}\n\nfunction isObjectEqual (a, b) {\n if ( a === void 0 ) a = {};\n if ( b === void 0 ) b = {};\n\n // handle null value #1566\n if (!a || !b) { return a === b }\n var aKeys = Object.keys(a).sort();\n var bKeys = Object.keys(b).sort();\n if (aKeys.length !== bKeys.length) {\n return false\n }\n return aKeys.every(function (key, i) {\n var aVal = a[key];\n var bKey = bKeys[i];\n if (bKey !== key) { return false }\n var bVal = b[key];\n // query values can be null and undefined\n if (aVal == null || bVal == null) { return aVal === bVal }\n // check nested equality\n if (typeof aVal === 'object' && typeof bVal === 'object') {\n return isObjectEqual(aVal, bVal)\n }\n return String(aVal) === String(bVal)\n })\n}\n\nfunction isIncludedRoute (current, target) {\n return (\n current.path.replace(trailingSlashRE, '/').indexOf(\n target.path.replace(trailingSlashRE, '/')\n ) === 0 &&\n (!target.hash || current.hash === target.hash) &&\n queryIncludes(current.query, target.query)\n )\n}\n\nfunction queryIncludes (current, target) {\n for (var key in target) {\n if (!(key in current)) {\n return false\n }\n }\n return true\n}\n\nfunction handleRouteEntered (route) {\n for (var i = 0; i < route.matched.length; i++) {\n var record = route.matched[i];\n for (var name in record.instances) {\n var instance = record.instances[name];\n var cbs = record.enteredCbs[name];\n if (!instance || !cbs) { continue }\n delete record.enteredCbs[name];\n for (var i$1 = 0; i$1 < cbs.length; i$1++) {\n if (!instance._isBeingDestroyed) { cbs[i$1](instance); }\n }\n }\n }\n}\n\nvar View = {\n name: 'RouterView',\n functional: true,\n props: {\n name: {\n type: String,\n default: 'default'\n }\n },\n render: function render (_, ref) {\n var props = ref.props;\n var children = ref.children;\n var parent = ref.parent;\n var data = ref.data;\n\n // used by devtools to display a router-view badge\n data.routerView = true;\n\n // directly use parent context's createElement() function\n // so that components rendered by router-view can resolve named slots\n var h = parent.$createElement;\n var name = props.name;\n var route = parent.$route;\n var cache = parent._routerViewCache || (parent._routerViewCache = {});\n\n // determine current view depth, also check to see if the tree\n // has been toggled inactive but kept-alive.\n var depth = 0;\n var inactive = false;\n while (parent && parent._routerRoot !== parent) {\n var vnodeData = parent.$vnode ? parent.$vnode.data : {};\n if (vnodeData.routerView) {\n depth++;\n }\n if (vnodeData.keepAlive && parent._directInactive && parent._inactive) {\n inactive = true;\n }\n parent = parent.$parent;\n }\n data.routerViewDepth = depth;\n\n // render previous view if the tree is inactive and kept-alive\n if (inactive) {\n var cachedData = cache[name];\n var cachedComponent = cachedData && cachedData.component;\n if (cachedComponent) {\n // #2301\n // pass props\n if (cachedData.configProps) {\n fillPropsinData(cachedComponent, data, cachedData.route, cachedData.configProps);\n }\n return h(cachedComponent, data, children)\n } else {\n // render previous empty view\n return h()\n }\n }\n\n var matched = route.matched[depth];\n var component = matched && matched.components[name];\n\n // render empty node if no matched route or no config component\n if (!matched || !component) {\n cache[name] = null;\n return h()\n }\n\n // cache component\n cache[name] = { component: component };\n\n // attach instance registration hook\n // this will be called in the instance's injected lifecycle hooks\n data.registerRouteInstance = function (vm, val) {\n // val could be undefined for unregistration\n var current = matched.instances[name];\n if (\n (val && current !== vm) ||\n (!val && current === vm)\n ) {\n matched.instances[name] = val;\n }\n }\n\n // also register instance in prepatch hook\n // in case the same component instance is reused across different routes\n ;(data.hook || (data.hook = {})).prepatch = function (_, vnode) {\n matched.instances[name] = vnode.componentInstance;\n };\n\n // register instance in init hook\n // in case kept-alive component be actived when routes changed\n data.hook.init = function (vnode) {\n if (vnode.data.keepAlive &&\n vnode.componentInstance &&\n vnode.componentInstance !== matched.instances[name]\n ) {\n matched.instances[name] = vnode.componentInstance;\n }\n\n // if the route transition has already been confirmed then we weren't\n // able to call the cbs during confirmation as the component was not\n // registered yet, so we call it here.\n handleRouteEntered(route);\n };\n\n var configProps = matched.props && matched.props[name];\n // save route and configProps in cache\n if (configProps) {\n extend(cache[name], {\n route: route,\n configProps: configProps\n });\n fillPropsinData(component, data, route, configProps);\n }\n\n return h(component, data, children)\n }\n};\n\nfunction fillPropsinData (component, data, route, configProps) {\n // resolve props\n var propsToPass = data.props = resolveProps(route, configProps);\n if (propsToPass) {\n // clone to prevent mutation\n propsToPass = data.props = extend({}, propsToPass);\n // pass non-declared props as attrs\n var attrs = data.attrs = data.attrs || {};\n for (var key in propsToPass) {\n if (!component.props || !(key in component.props)) {\n attrs[key] = propsToPass[key];\n delete propsToPass[key];\n }\n }\n }\n}\n\nfunction resolveProps (route, config) {\n switch (typeof config) {\n case 'undefined':\n return\n case 'object':\n return config\n case 'function':\n return config(route)\n case 'boolean':\n return config ? route.params : undefined\n default:\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n \"props in \\\"\" + (route.path) + \"\\\" is a \" + (typeof config) + \", \" +\n \"expecting an object, function or boolean.\"\n );\n }\n }\n}\n\n/* */\n\nfunction resolvePath (\n relative,\n base,\n append\n) {\n var firstChar = relative.charAt(0);\n if (firstChar === '/') {\n return relative\n }\n\n if (firstChar === '?' || firstChar === '#') {\n return base + relative\n }\n\n var stack = base.split('/');\n\n // remove trailing segment if:\n // - not appending\n // - appending to trailing slash (last segment is empty)\n if (!append || !stack[stack.length - 1]) {\n stack.pop();\n }\n\n // resolve relative path\n var segments = relative.replace(/^\\//, '').split('/');\n for (var i = 0; i < segments.length; i++) {\n var segment = segments[i];\n if (segment === '..') {\n stack.pop();\n } else if (segment !== '.') {\n stack.push(segment);\n }\n }\n\n // ensure leading slash\n if (stack[0] !== '') {\n stack.unshift('');\n }\n\n return stack.join('/')\n}\n\nfunction parsePath (path) {\n var hash = '';\n var query = '';\n\n var hashIndex = path.indexOf('#');\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n path = path.slice(0, hashIndex);\n }\n\n var queryIndex = path.indexOf('?');\n if (queryIndex >= 0) {\n query = path.slice(queryIndex + 1);\n path = path.slice(0, queryIndex);\n }\n\n return {\n path: path,\n query: query,\n hash: hash\n }\n}\n\nfunction cleanPath (path) {\n return path.replace(/\\/(?:\\s*\\/)+/g, '/')\n}\n\nvar isarray = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n\n/**\n * Expose `pathToRegexp`.\n */\nvar pathToRegexp_1 = pathToRegexp;\nvar parse_1 = parse;\nvar compile_1 = compile;\nvar tokensToFunction_1 = tokensToFunction;\nvar tokensToRegExp_1 = tokensToRegExp;\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g');\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = [];\n var key = 0;\n var index = 0;\n var path = '';\n var defaultDelimiter = options && options.delimiter || '/';\n var res;\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0];\n var escaped = res[1];\n var offset = res.index;\n path += str.slice(index, offset);\n index = offset + m.length;\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1];\n continue\n }\n\n var next = str[index];\n var prefix = res[2];\n var name = res[3];\n var capture = res[4];\n var group = res[5];\n var modifier = res[6];\n var asterisk = res[7];\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path);\n path = '';\n }\n\n var partial = prefix != null && next != null && next !== prefix;\n var repeat = modifier === '+' || modifier === '*';\n var optional = modifier === '?' || modifier === '*';\n var delimiter = res[2] || defaultDelimiter;\n var pattern = capture || group;\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n });\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index);\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path);\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length);\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options));\n }\n }\n\n return function (obj, opts) {\n var path = '';\n var data = obj || {};\n var options = opts || {};\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent;\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n path += token;\n\n continue\n }\n\n var value = data[token.name];\n var segment;\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix;\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j]);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment;\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value);\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment;\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys;\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g);\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n });\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = [];\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source);\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options));\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n var strict = options.strict;\n var end = options.end !== false;\n var route = '';\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n route += escapeString(token);\n } else {\n var prefix = escapeString(token.prefix);\n var capture = '(?:' + token.pattern + ')';\n\n keys.push(token);\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*';\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?';\n } else {\n capture = prefix + '(' + capture + ')?';\n }\n } else {\n capture = prefix + '(' + capture + ')';\n }\n\n route += capture;\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/');\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter;\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?';\n }\n\n if (end) {\n route += '$';\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)';\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options);\n keys = [];\n }\n\n options = options || {};\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\npathToRegexp_1.parse = parse_1;\npathToRegexp_1.compile = compile_1;\npathToRegexp_1.tokensToFunction = tokensToFunction_1;\npathToRegexp_1.tokensToRegExp = tokensToRegExp_1;\n\n/* */\n\n// $flow-disable-line\nvar regexpCompileCache = Object.create(null);\n\nfunction fillParams (\n path,\n params,\n routeMsg\n) {\n params = params || {};\n try {\n var filler =\n regexpCompileCache[path] ||\n (regexpCompileCache[path] = pathToRegexp_1.compile(path));\n\n // Fix #2505 resolving asterisk routes { name: 'not-found', params: { pathMatch: '/not-found' }}\n // and fix #3106 so that you can work with location descriptor object having params.pathMatch equal to empty string\n if (typeof params.pathMatch === 'string') { params[0] = params.pathMatch; }\n\n return filler(params, { pretty: true })\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n // Fix #3072 no warn if `pathMatch` is string\n warn(typeof params.pathMatch === 'string', (\"missing param for \" + routeMsg + \": \" + (e.message)));\n }\n return ''\n } finally {\n // delete the 0 if it was added\n delete params[0];\n }\n}\n\n/* */\n\nfunction normalizeLocation (\n raw,\n current,\n append,\n router\n) {\n var next = typeof raw === 'string' ? { path: raw } : raw;\n // named target\n if (next._normalized) {\n return next\n } else if (next.name) {\n next = extend({}, raw);\n var params = next.params;\n if (params && typeof params === 'object') {\n next.params = extend({}, params);\n }\n return next\n }\n\n // relative params\n if (!next.path && next.params && current) {\n next = extend({}, next);\n next._normalized = true;\n var params$1 = extend(extend({}, current.params), next.params);\n if (current.name) {\n next.name = current.name;\n next.params = params$1;\n } else if (current.matched.length) {\n var rawPath = current.matched[current.matched.length - 1].path;\n next.path = fillParams(rawPath, params$1, (\"path \" + (current.path)));\n } else if (process.env.NODE_ENV !== 'production') {\n warn(false, \"relative params navigation requires a current route.\");\n }\n return next\n }\n\n var parsedPath = parsePath(next.path || '');\n var basePath = (current && current.path) || '/';\n var path = parsedPath.path\n ? resolvePath(parsedPath.path, basePath, append || next.append)\n : basePath;\n\n var query = resolveQuery(\n parsedPath.query,\n next.query,\n router && router.options.parseQuery\n );\n\n var hash = next.hash || parsedPath.hash;\n if (hash && hash.charAt(0) !== '#') {\n hash = \"#\" + hash;\n }\n\n return {\n _normalized: true,\n path: path,\n query: query,\n hash: hash\n }\n}\n\n/* */\n\n// work around weird flow bug\nvar toTypes = [String, Object];\nvar eventTypes = [String, Array];\n\nvar noop = function () {};\n\nvar warnedCustomSlot;\nvar warnedTagProp;\nvar warnedEventProp;\n\nvar Link = {\n name: 'RouterLink',\n props: {\n to: {\n type: toTypes,\n required: true\n },\n tag: {\n type: String,\n default: 'a'\n },\n custom: Boolean,\n exact: Boolean,\n exactPath: Boolean,\n append: Boolean,\n replace: Boolean,\n activeClass: String,\n exactActiveClass: String,\n ariaCurrentValue: {\n type: String,\n default: 'page'\n },\n event: {\n type: eventTypes,\n default: 'click'\n }\n },\n render: function render (h) {\n var this$1 = this;\n\n var router = this.$router;\n var current = this.$route;\n var ref = router.resolve(\n this.to,\n current,\n this.append\n );\n var location = ref.location;\n var route = ref.route;\n var href = ref.href;\n\n var classes = {};\n var globalActiveClass = router.options.linkActiveClass;\n var globalExactActiveClass = router.options.linkExactActiveClass;\n // Support global empty active class\n var activeClassFallback =\n globalActiveClass == null ? 'router-link-active' : globalActiveClass;\n var exactActiveClassFallback =\n globalExactActiveClass == null\n ? 'router-link-exact-active'\n : globalExactActiveClass;\n var activeClass =\n this.activeClass == null ? activeClassFallback : this.activeClass;\n var exactActiveClass =\n this.exactActiveClass == null\n ? exactActiveClassFallback\n : this.exactActiveClass;\n\n var compareTarget = route.redirectedFrom\n ? createRoute(null, normalizeLocation(route.redirectedFrom), null, router)\n : route;\n\n classes[exactActiveClass] = isSameRoute(current, compareTarget, this.exactPath);\n classes[activeClass] = this.exact || this.exactPath\n ? classes[exactActiveClass]\n : isIncludedRoute(current, compareTarget);\n\n var ariaCurrentValue = classes[exactActiveClass] ? this.ariaCurrentValue : null;\n\n var handler = function (e) {\n if (guardEvent(e)) {\n if (this$1.replace) {\n router.replace(location, noop);\n } else {\n router.push(location, noop);\n }\n }\n };\n\n var on = { click: guardEvent };\n if (Array.isArray(this.event)) {\n this.event.forEach(function (e) {\n on[e] = handler;\n });\n } else {\n on[this.event] = handler;\n }\n\n var data = { class: classes };\n\n var scopedSlot =\n !this.$scopedSlots.$hasNormal &&\n this.$scopedSlots.default &&\n this.$scopedSlots.default({\n href: href,\n route: route,\n navigate: handler,\n isActive: classes[activeClass],\n isExactActive: classes[exactActiveClass]\n });\n\n if (scopedSlot) {\n if (process.env.NODE_ENV !== 'production' && !this.custom) {\n !warnedCustomSlot && warn(false, 'In Vue Router 4, the v-slot API will by default wrap its content with an <a> element. Use the custom prop to remove this warning:\\n<router-link v-slot=\"{ navigate, href }\" custom></router-link>\\n');\n warnedCustomSlot = true;\n }\n if (scopedSlot.length === 1) {\n return scopedSlot[0]\n } else if (scopedSlot.length > 1 || !scopedSlot.length) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false,\n (\"<router-link> with to=\\\"\" + (this.to) + \"\\\" is trying to use a scoped slot but it didn't provide exactly one child. Wrapping the content with a span element.\")\n );\n }\n return scopedSlot.length === 0 ? h() : h('span', {}, scopedSlot)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if ('tag' in this.$options.propsData && !warnedTagProp) {\n warn(\n false,\n \"<router-link>'s tag prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedTagProp = true;\n }\n if ('event' in this.$options.propsData && !warnedEventProp) {\n warn(\n false,\n \"<router-link>'s event prop is deprecated and has been removed in Vue Router 4. Use the v-slot API to remove this warning: https://next.router.vuejs.org/guide/migration/#removal-of-event-and-tag-props-in-router-link.\"\n );\n warnedEventProp = true;\n }\n }\n\n if (this.tag === 'a') {\n data.on = on;\n data.attrs = { href: href, 'aria-current': ariaCurrentValue };\n } else {\n // find the first <a> child and apply listener and href\n var a = findAnchor(this.$slots.default);\n if (a) {\n // in case the <a> is a static node\n a.isStatic = false;\n var aData = (a.data = extend({}, a.data));\n aData.on = aData.on || {};\n // transform existing events in both objects into arrays so we can push later\n for (var event in aData.on) {\n var handler$1 = aData.on[event];\n if (event in on) {\n aData.on[event] = Array.isArray(handler$1) ? handler$1 : [handler$1];\n }\n }\n // append new listeners for router-link\n for (var event$1 in on) {\n if (event$1 in aData.on) {\n // on[event] is always a function\n aData.on[event$1].push(on[event$1]);\n } else {\n aData.on[event$1] = handler;\n }\n }\n\n var aAttrs = (a.data.attrs = extend({}, a.data.attrs));\n aAttrs.href = href;\n aAttrs['aria-current'] = ariaCurrentValue;\n } else {\n // doesn't have <a> child, apply listener to self\n data.on = on;\n }\n }\n\n return h(this.tag, data, this.$slots.default)\n }\n};\n\nfunction guardEvent (e) {\n // don't redirect with control keys\n if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) { return }\n // don't redirect when preventDefault called\n if (e.defaultPrevented) { return }\n // don't redirect on right click\n if (e.button !== undefined && e.button !== 0) { return }\n // don't redirect if `target=\"_blank\"`\n if (e.currentTarget && e.currentTarget.getAttribute) {\n var target = e.currentTarget.getAttribute('target');\n if (/\\b_blank\\b/i.test(target)) { return }\n }\n // this may be a Weex event which doesn't have this method\n if (e.preventDefault) {\n e.preventDefault();\n }\n return true\n}\n\nfunction findAnchor (children) {\n if (children) {\n var child;\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n if (child.tag === 'a') {\n return child\n }\n if (child.children && (child = findAnchor(child.children))) {\n return child\n }\n }\n }\n}\n\nvar _Vue;\n\nfunction install (Vue) {\n if (install.installed && _Vue === Vue) { return }\n install.installed = true;\n\n _Vue = Vue;\n\n var isDef = function (v) { return v !== undefined; };\n\n var registerInstance = function (vm, callVal) {\n var i = vm.$options._parentVnode;\n if (isDef(i) && isDef(i = i.data) && isDef(i = i.registerRouteInstance)) {\n i(vm, callVal);\n }\n };\n\n Vue.mixin({\n beforeCreate: function beforeCreate () {\n if (isDef(this.$options.router)) {\n this._routerRoot = this;\n this._router = this.$options.router;\n this._router.init(this);\n Vue.util.defineReactive(this, '_route', this._router.history.current);\n } else {\n this._routerRoot = (this.$parent && this.$parent._routerRoot) || this;\n }\n registerInstance(this, this);\n },\n destroyed: function destroyed () {\n registerInstance(this);\n }\n });\n\n Object.defineProperty(Vue.prototype, '$router', {\n get: function get () { return this._routerRoot._router }\n });\n\n Object.defineProperty(Vue.prototype, '$route', {\n get: function get () { return this._routerRoot._route }\n });\n\n Vue.component('RouterView', View);\n Vue.component('RouterLink', Link);\n\n var strats = Vue.config.optionMergeStrategies;\n // use the same hook merging strategy for route hooks\n strats.beforeRouteEnter = strats.beforeRouteLeave = strats.beforeRouteUpdate = strats.created;\n}\n\n/* */\n\nvar inBrowser = typeof window !== 'undefined';\n\n/* */\n\nfunction createRouteMap (\n routes,\n oldPathList,\n oldPathMap,\n oldNameMap,\n parentRoute\n) {\n // the path list is used to control path matching priority\n var pathList = oldPathList || [];\n // $flow-disable-line\n var pathMap = oldPathMap || Object.create(null);\n // $flow-disable-line\n var nameMap = oldNameMap || Object.create(null);\n\n routes.forEach(function (route) {\n addRouteRecord(pathList, pathMap, nameMap, route, parentRoute);\n });\n\n // ensure wildcard routes are always at the end\n for (var i = 0, l = pathList.length; i < l; i++) {\n if (pathList[i] === '*') {\n pathList.push(pathList.splice(i, 1)[0]);\n l--;\n i--;\n }\n }\n\n if (process.env.NODE_ENV === 'development') {\n // warn if routes do not include leading slashes\n var found = pathList\n // check for missing leading slash\n .filter(function (path) { return path && path.charAt(0) !== '*' && path.charAt(0) !== '/'; });\n\n if (found.length > 0) {\n var pathNames = found.map(function (path) { return (\"- \" + path); }).join('\\n');\n warn(false, (\"Non-nested routes must include a leading slash character. Fix the following routes: \\n\" + pathNames));\n }\n }\n\n return {\n pathList: pathList,\n pathMap: pathMap,\n nameMap: nameMap\n }\n}\n\nfunction addRouteRecord (\n pathList,\n pathMap,\n nameMap,\n route,\n parent,\n matchAs\n) {\n var path = route.path;\n var name = route.name;\n if (process.env.NODE_ENV !== 'production') {\n assert(path != null, \"\\\"path\\\" is required in a route configuration.\");\n assert(\n typeof route.component !== 'string',\n \"route config \\\"component\\\" for path: \" + (String(\n path || name\n )) + \" cannot be a \" + \"string id. Use an actual component instead.\"\n );\n\n warn(\n // eslint-disable-next-line no-control-regex\n !/[^\\u0000-\\u007F]+/.test(path),\n \"Route with path \\\"\" + path + \"\\\" contains unencoded characters, make sure \" +\n \"your path is correctly encoded before passing it to the router. Use \" +\n \"encodeURI to encode static segments of your path.\"\n );\n }\n\n var pathToRegexpOptions =\n route.pathToRegexpOptions || {};\n var normalizedPath = normalizePath(path, parent, pathToRegexpOptions.strict);\n\n if (typeof route.caseSensitive === 'boolean') {\n pathToRegexpOptions.sensitive = route.caseSensitive;\n }\n\n var record = {\n path: normalizedPath,\n regex: compileRouteRegex(normalizedPath, pathToRegexpOptions),\n components: route.components || { default: route.component },\n alias: route.alias\n ? typeof route.alias === 'string'\n ? [route.alias]\n : route.alias\n : [],\n instances: {},\n enteredCbs: {},\n name: name,\n parent: parent,\n matchAs: matchAs,\n redirect: route.redirect,\n beforeEnter: route.beforeEnter,\n meta: route.meta || {},\n props:\n route.props == null\n ? {}\n : route.components\n ? route.props\n : { default: route.props }\n };\n\n if (route.children) {\n // Warn if route is named, does not redirect and has a default child route.\n // If users navigate to this route by name, the default child will\n // not be rendered (GH Issue #629)\n if (process.env.NODE_ENV !== 'production') {\n if (\n route.name &&\n !route.redirect &&\n route.children.some(function (child) { return /^\\/?$/.test(child.path); })\n ) {\n warn(\n false,\n \"Named Route '\" + (route.name) + \"' has a default child route. \" +\n \"When navigating to this named route (:to=\\\"{name: '\" + (route.name) + \"'}\\\"), \" +\n \"the default child route will not be rendered. Remove the name from \" +\n \"this route and use the name of the default child route for named \" +\n \"links instead.\"\n );\n }\n }\n route.children.forEach(function (child) {\n var childMatchAs = matchAs\n ? cleanPath((matchAs + \"/\" + (child.path)))\n : undefined;\n addRouteRecord(pathList, pathMap, nameMap, child, record, childMatchAs);\n });\n }\n\n if (!pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (route.alias !== undefined) {\n var aliases = Array.isArray(route.alias) ? route.alias : [route.alias];\n for (var i = 0; i < aliases.length; ++i) {\n var alias = aliases[i];\n if (process.env.NODE_ENV !== 'production' && alias === path) {\n warn(\n false,\n (\"Found an alias with the same value as the path: \\\"\" + path + \"\\\". You have to remove that alias. It will be ignored in development.\")\n );\n // skip in dev to make it work\n continue\n }\n\n var aliasRoute = {\n path: alias,\n children: route.children\n };\n addRouteRecord(\n pathList,\n pathMap,\n nameMap,\n aliasRoute,\n parent,\n record.path || '/' // matchAs\n );\n }\n }\n\n if (name) {\n if (!nameMap[name]) {\n nameMap[name] = record;\n } else if (process.env.NODE_ENV !== 'production' && !matchAs) {\n warn(\n false,\n \"Duplicate named routes definition: \" +\n \"{ name: \\\"\" + name + \"\\\", path: \\\"\" + (record.path) + \"\\\" }\"\n );\n }\n }\n}\n\nfunction compileRouteRegex (\n path,\n pathToRegexpOptions\n) {\n var regex = pathToRegexp_1(path, [], pathToRegexpOptions);\n if (process.env.NODE_ENV !== 'production') {\n var keys = Object.create(null);\n regex.keys.forEach(function (key) {\n warn(\n !keys[key.name],\n (\"Duplicate param keys in route with path: \\\"\" + path + \"\\\"\")\n );\n keys[key.name] = true;\n });\n }\n return regex\n}\n\nfunction normalizePath (\n path,\n parent,\n strict\n) {\n if (!strict) { path = path.replace(/\\/$/, ''); }\n if (path[0] === '/') { return path }\n if (parent == null) { return path }\n return cleanPath(((parent.path) + \"/\" + path))\n}\n\n/* */\n\n\n\nfunction createMatcher (\n routes,\n router\n) {\n var ref = createRouteMap(routes);\n var pathList = ref.pathList;\n var pathMap = ref.pathMap;\n var nameMap = ref.nameMap;\n\n function addRoutes (routes) {\n createRouteMap(routes, pathList, pathMap, nameMap);\n }\n\n function addRoute (parentOrRoute, route) {\n var parent = (typeof parentOrRoute !== 'object') ? nameMap[parentOrRoute] : undefined;\n // $flow-disable-line\n createRouteMap([route || parentOrRoute], pathList, pathMap, nameMap, parent);\n\n // add aliases of parent\n if (parent && parent.alias.length) {\n createRouteMap(\n // $flow-disable-line route is defined if parent is\n parent.alias.map(function (alias) { return ({ path: alias, children: [route] }); }),\n pathList,\n pathMap,\n nameMap,\n parent\n );\n }\n }\n\n function getRoutes () {\n return pathList.map(function (path) { return pathMap[path]; })\n }\n\n function match (\n raw,\n currentRoute,\n redirectedFrom\n ) {\n var location = normalizeLocation(raw, currentRoute, false, router);\n var name = location.name;\n\n if (name) {\n var record = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n warn(record, (\"Route with name '\" + name + \"' does not exist\"));\n }\n if (!record) { return _createRoute(null, location) }\n var paramNames = record.regex.keys\n .filter(function (key) { return !key.optional; })\n .map(function (key) { return key.name; });\n\n if (typeof location.params !== 'object') {\n location.params = {};\n }\n\n if (currentRoute && typeof currentRoute.params === 'object') {\n for (var key in currentRoute.params) {\n if (!(key in location.params) && paramNames.indexOf(key) > -1) {\n location.params[key] = currentRoute.params[key];\n }\n }\n }\n\n location.path = fillParams(record.path, location.params, (\"named route \\\"\" + name + \"\\\"\"));\n return _createRoute(record, location, redirectedFrom)\n } else if (location.path) {\n location.params = {};\n for (var i = 0; i < pathList.length; i++) {\n var path = pathList[i];\n var record$1 = pathMap[path];\n if (matchRoute(record$1.regex, location.path, location.params)) {\n return _createRoute(record$1, location, redirectedFrom)\n }\n }\n }\n // no match\n return _createRoute(null, location)\n }\n\n function redirect (\n record,\n location\n ) {\n var originalRedirect = record.redirect;\n var redirect = typeof originalRedirect === 'function'\n ? originalRedirect(createRoute(record, location, null, router))\n : originalRedirect;\n\n if (typeof redirect === 'string') {\n redirect = { path: redirect };\n }\n\n if (!redirect || typeof redirect !== 'object') {\n if (process.env.NODE_ENV !== 'production') {\n warn(\n false, (\"invalid redirect option: \" + (JSON.stringify(redirect)))\n );\n }\n return _createRoute(null, location)\n }\n\n var re = redirect;\n var name = re.name;\n var path = re.path;\n var query = location.query;\n var hash = location.hash;\n var params = location.params;\n query = re.hasOwnProperty('query') ? re.query : query;\n hash = re.hasOwnProperty('hash') ? re.hash : hash;\n params = re.hasOwnProperty('params') ? re.params : params;\n\n if (name) {\n // resolved named direct\n var targetRecord = nameMap[name];\n if (process.env.NODE_ENV !== 'production') {\n assert(targetRecord, (\"redirect failed: named route \\\"\" + name + \"\\\" not found.\"));\n }\n return match({\n _normalized: true,\n name: name,\n query: query,\n hash: hash,\n params: params\n }, undefined, location)\n } else if (path) {\n // 1. resolve relative redirect\n var rawPath = resolveRecordPath(path, record);\n // 2. resolve params\n var resolvedPath = fillParams(rawPath, params, (\"redirect route with path \\\"\" + rawPath + \"\\\"\"));\n // 3. rematch with existing query and hash\n return match({\n _normalized: true,\n path: resolvedPath,\n query: query,\n hash: hash\n }, undefined, location)\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, (\"invalid redirect option: \" + (JSON.stringify(redirect))));\n }\n return _createRoute(null, location)\n }\n }\n\n function alias (\n record,\n location,\n matchAs\n ) {\n var aliasedPath = fillParams(matchAs, location.params, (\"aliased route with path \\\"\" + matchAs + \"\\\"\"));\n var aliasedMatch = match({\n _normalized: true,\n path: aliasedPath\n });\n if (aliasedMatch) {\n var matched = aliasedMatch.matched;\n var aliasedRecord = matched[matched.length - 1];\n location.params = aliasedMatch.params;\n return _createRoute(aliasedRecord, location)\n }\n return _createRoute(null, location)\n }\n\n function _createRoute (\n record,\n location,\n redirectedFrom\n ) {\n if (record && record.redirect) {\n return redirect(record, redirectedFrom || location)\n }\n if (record && record.matchAs) {\n return alias(record, location, record.matchAs)\n }\n return createRoute(record, location, redirectedFrom, router)\n }\n\n return {\n match: match,\n addRoute: addRoute,\n getRoutes: getRoutes,\n addRoutes: addRoutes\n }\n}\n\nfunction matchRoute (\n regex,\n path,\n params\n) {\n var m = path.match(regex);\n\n if (!m) {\n return false\n } else if (!params) {\n return true\n }\n\n for (var i = 1, len = m.length; i < len; ++i) {\n var key = regex.keys[i - 1];\n if (key) {\n // Fix #1994: using * with props: true generates a param named 0\n params[key.name || 'pathMatch'] = typeof m[i] === 'string' ? decode(m[i]) : m[i];\n }\n }\n\n return true\n}\n\nfunction resolveRecordPath (path, record) {\n return resolvePath(path, record.parent ? record.parent.path : '/', true)\n}\n\n/* */\n\n// use User Timing api (if present) for more accurate key precision\nvar Time =\n inBrowser && window.performance && window.performance.now\n ? window.performance\n : Date;\n\nfunction genStateKey () {\n return Time.now().toFixed(3)\n}\n\nvar _key = genStateKey();\n\nfunction getStateKey () {\n return _key\n}\n\nfunction setStateKey (key) {\n return (_key = key)\n}\n\n/* */\n\nvar positionStore = Object.create(null);\n\nfunction setupScroll () {\n // Prevent browser scroll behavior on History popstate\n if ('scrollRestoration' in window.history) {\n window.history.scrollRestoration = 'manual';\n }\n // Fix for #1585 for Firefox\n // Fix for #2195 Add optional third attribute to workaround a bug in safari https://bugs.webkit.org/show_bug.cgi?id=182678\n // Fix for #2774 Support for apps loaded from Windows file shares not mapped to network drives: replaced location.origin with\n // window.location.protocol + '//' + window.location.host\n // location.host contains the port and location.hostname doesn't\n var protocolAndPath = window.location.protocol + '//' + window.location.host;\n var absolutePath = window.location.href.replace(protocolAndPath, '');\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, window.history.state);\n stateCopy.key = getStateKey();\n window.history.replaceState(stateCopy, '', absolutePath);\n window.addEventListener('popstate', handlePopState);\n return function () {\n window.removeEventListener('popstate', handlePopState);\n }\n}\n\nfunction handleScroll (\n router,\n to,\n from,\n isPop\n) {\n if (!router.app) {\n return\n }\n\n var behavior = router.options.scrollBehavior;\n if (!behavior) {\n return\n }\n\n if (process.env.NODE_ENV !== 'production') {\n assert(typeof behavior === 'function', \"scrollBehavior must be a function\");\n }\n\n // wait until re-render finishes before scrolling\n router.app.$nextTick(function () {\n var position = getScrollPosition();\n var shouldScroll = behavior.call(\n router,\n to,\n from,\n isPop ? position : null\n );\n\n if (!shouldScroll) {\n return\n }\n\n if (typeof shouldScroll.then === 'function') {\n shouldScroll\n .then(function (shouldScroll) {\n scrollToPosition((shouldScroll), position);\n })\n .catch(function (err) {\n if (process.env.NODE_ENV !== 'production') {\n assert(false, err.toString());\n }\n });\n } else {\n scrollToPosition(shouldScroll, position);\n }\n });\n}\n\nfunction saveScrollPosition () {\n var key = getStateKey();\n if (key) {\n positionStore[key] = {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n }\n}\n\nfunction handlePopState (e) {\n saveScrollPosition();\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n}\n\nfunction getScrollPosition () {\n var key = getStateKey();\n if (key) {\n return positionStore[key]\n }\n}\n\nfunction getElementPosition (el, offset) {\n var docEl = document.documentElement;\n var docRect = docEl.getBoundingClientRect();\n var elRect = el.getBoundingClientRect();\n return {\n x: elRect.left - docRect.left - offset.x,\n y: elRect.top - docRect.top - offset.y\n }\n}\n\nfunction isValidPosition (obj) {\n return isNumber(obj.x) || isNumber(obj.y)\n}\n\nfunction normalizePosition (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : window.pageXOffset,\n y: isNumber(obj.y) ? obj.y : window.pageYOffset\n }\n}\n\nfunction normalizeOffset (obj) {\n return {\n x: isNumber(obj.x) ? obj.x : 0,\n y: isNumber(obj.y) ? obj.y : 0\n }\n}\n\nfunction isNumber (v) {\n return typeof v === 'number'\n}\n\nvar hashStartsWithNumberRE = /^#\\d/;\n\nfunction scrollToPosition (shouldScroll, position) {\n var isObject = typeof shouldScroll === 'object';\n if (isObject && typeof shouldScroll.selector === 'string') {\n // getElementById would still fail if the selector contains a more complicated query like #main[data-attr]\n // but at the same time, it doesn't make much sense to select an element with an id and an extra selector\n var el = hashStartsWithNumberRE.test(shouldScroll.selector) // $flow-disable-line\n ? document.getElementById(shouldScroll.selector.slice(1)) // $flow-disable-line\n : document.querySelector(shouldScroll.selector);\n\n if (el) {\n var offset =\n shouldScroll.offset && typeof shouldScroll.offset === 'object'\n ? shouldScroll.offset\n : {};\n offset = normalizeOffset(offset);\n position = getElementPosition(el, offset);\n } else if (isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n } else if (isObject && isValidPosition(shouldScroll)) {\n position = normalizePosition(shouldScroll);\n }\n\n if (position) {\n // $flow-disable-line\n if ('scrollBehavior' in document.documentElement.style) {\n window.scrollTo({\n left: position.x,\n top: position.y,\n // $flow-disable-line\n behavior: shouldScroll.behavior\n });\n } else {\n window.scrollTo(position.x, position.y);\n }\n }\n}\n\n/* */\n\nvar supportsPushState =\n inBrowser &&\n (function () {\n var ua = window.navigator.userAgent;\n\n if (\n (ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&\n ua.indexOf('Mobile Safari') !== -1 &&\n ua.indexOf('Chrome') === -1 &&\n ua.indexOf('Windows Phone') === -1\n ) {\n return false\n }\n\n return window.history && typeof window.history.pushState === 'function'\n })();\n\nfunction pushState (url, replace) {\n saveScrollPosition();\n // try...catch the pushState call to get around Safari\n // DOM Exception 18 where it limits to 100 pushState calls\n var history = window.history;\n try {\n if (replace) {\n // preserve existing history state as it could be overriden by the user\n var stateCopy = extend({}, history.state);\n stateCopy.key = getStateKey();\n history.replaceState(stateCopy, '', url);\n } else {\n history.pushState({ key: setStateKey(genStateKey()) }, '', url);\n }\n } catch (e) {\n window.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\nfunction replaceState (url) {\n pushState(url, true);\n}\n\n/* */\n\nfunction runQueue (queue, fn, cb) {\n var step = function (index) {\n if (index >= queue.length) {\n cb();\n } else {\n if (queue[index]) {\n fn(queue[index], function () {\n step(index + 1);\n });\n } else {\n step(index + 1);\n }\n }\n };\n step(0);\n}\n\n// When changing thing, also edit router.d.ts\nvar NavigationFailureType = {\n redirected: 2,\n aborted: 4,\n cancelled: 8,\n duplicated: 16\n};\n\nfunction createNavigationRedirectedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.redirected,\n (\"Redirected when going from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (stringifyRoute(\n to\n )) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createNavigationDuplicatedError (from, to) {\n var error = createRouterError(\n from,\n to,\n NavigationFailureType.duplicated,\n (\"Avoided redundant navigation to current location: \\\"\" + (from.fullPath) + \"\\\".\")\n );\n // backwards compatible with the first introduction of Errors\n error.name = 'NavigationDuplicated';\n return error\n}\n\nfunction createNavigationCancelledError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.cancelled,\n (\"Navigation cancelled from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" with a new navigation.\")\n )\n}\n\nfunction createNavigationAbortedError (from, to) {\n return createRouterError(\n from,\n to,\n NavigationFailureType.aborted,\n (\"Navigation aborted from \\\"\" + (from.fullPath) + \"\\\" to \\\"\" + (to.fullPath) + \"\\\" via a navigation guard.\")\n )\n}\n\nfunction createRouterError (from, to, type, message) {\n var error = new Error(message);\n error._isRouter = true;\n error.from = from;\n error.to = to;\n error.type = type;\n\n return error\n}\n\nvar propertiesToLog = ['params', 'query', 'hash'];\n\nfunction stringifyRoute (to) {\n if (typeof to === 'string') { return to }\n if ('path' in to) { return to.path }\n var location = {};\n propertiesToLog.forEach(function (key) {\n if (key in to) { location[key] = to[key]; }\n });\n return JSON.stringify(location, null, 2)\n}\n\nfunction isError (err) {\n return Object.prototype.toString.call(err).indexOf('Error') > -1\n}\n\nfunction isNavigationFailure (err, errorType) {\n return (\n isError(err) &&\n err._isRouter &&\n (errorType == null || err.type === errorType)\n )\n}\n\n/* */\n\nfunction resolveAsyncComponents (matched) {\n return function (to, from, next) {\n var hasAsync = false;\n var pending = 0;\n var error = null;\n\n flatMapComponents(matched, function (def, _, match, key) {\n // if it's a function and doesn't have cid attached,\n // assume it's an async component resolve function.\n // we are not using Vue's default async resolving mechanism because\n // we want to halt the navigation until the incoming component has been\n // resolved.\n if (typeof def === 'function' && def.cid === undefined) {\n hasAsync = true;\n pending++;\n\n var resolve = once(function (resolvedDef) {\n if (isESModule(resolvedDef)) {\n resolvedDef = resolvedDef.default;\n }\n // save resolved on async factory in case it's used elsewhere\n def.resolved = typeof resolvedDef === 'function'\n ? resolvedDef\n : _Vue.extend(resolvedDef);\n match.components[key] = resolvedDef;\n pending--;\n if (pending <= 0) {\n next();\n }\n });\n\n var reject = once(function (reason) {\n var msg = \"Failed to resolve async component \" + key + \": \" + reason;\n process.env.NODE_ENV !== 'production' && warn(false, msg);\n if (!error) {\n error = isError(reason)\n ? reason\n : new Error(msg);\n next(error);\n }\n });\n\n var res;\n try {\n res = def(resolve, reject);\n } catch (e) {\n reject(e);\n }\n if (res) {\n if (typeof res.then === 'function') {\n res.then(resolve, reject);\n } else {\n // new syntax in Vue 2.3\n var comp = res.component;\n if (comp && typeof comp.then === 'function') {\n comp.then(resolve, reject);\n }\n }\n }\n }\n });\n\n if (!hasAsync) { next(); }\n }\n}\n\nfunction flatMapComponents (\n matched,\n fn\n) {\n return flatten(matched.map(function (m) {\n return Object.keys(m.components).map(function (key) { return fn(\n m.components[key],\n m.instances[key],\n m, key\n ); })\n }))\n}\n\nfunction flatten (arr) {\n return Array.prototype.concat.apply([], arr)\n}\n\nvar hasSymbol =\n typeof Symbol === 'function' &&\n typeof Symbol.toStringTag === 'symbol';\n\nfunction isESModule (obj) {\n return obj.__esModule || (hasSymbol && obj[Symbol.toStringTag] === 'Module')\n}\n\n// in Webpack 2, require.ensure now also returns a Promise\n// so the resolve/reject functions may get called an extra time\n// if the user uses an arrow function shorthand that happens to\n// return that Promise.\nfunction once (fn) {\n var called = false;\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) { return }\n called = true;\n return fn.apply(this, args)\n }\n}\n\n/* */\n\nvar History = function History (router, base) {\n this.router = router;\n this.base = normalizeBase(base);\n // start with a route object that stands for \"nowhere\"\n this.current = START;\n this.pending = null;\n this.ready = false;\n this.readyCbs = [];\n this.readyErrorCbs = [];\n this.errorCbs = [];\n this.listeners = [];\n};\n\nHistory.prototype.listen = function listen (cb) {\n this.cb = cb;\n};\n\nHistory.prototype.onReady = function onReady (cb, errorCb) {\n if (this.ready) {\n cb();\n } else {\n this.readyCbs.push(cb);\n if (errorCb) {\n this.readyErrorCbs.push(errorCb);\n }\n }\n};\n\nHistory.prototype.onError = function onError (errorCb) {\n this.errorCbs.push(errorCb);\n};\n\nHistory.prototype.transitionTo = function transitionTo (\n location,\n onComplete,\n onAbort\n) {\n var this$1 = this;\n\n var route;\n // catch redirect option https://github.com/vuejs/vue-router/issues/3201\n try {\n route = this.router.match(location, this.current);\n } catch (e) {\n this.errorCbs.forEach(function (cb) {\n cb(e);\n });\n // Exception should still be thrown\n throw e\n }\n var prev = this.current;\n this.confirmTransition(\n route,\n function () {\n this$1.updateRoute(route);\n onComplete && onComplete(route);\n this$1.ensureURL();\n this$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n\n // fire ready cbs once\n if (!this$1.ready) {\n this$1.ready = true;\n this$1.readyCbs.forEach(function (cb) {\n cb(route);\n });\n }\n },\n function (err) {\n if (onAbort) {\n onAbort(err);\n }\n if (err && !this$1.ready) {\n // Initial redirection should not mark the history as ready yet\n // because it's triggered by the redirection instead\n // https://github.com/vuejs/vue-router/issues/3225\n // https://github.com/vuejs/vue-router/issues/3331\n if (!isNavigationFailure(err, NavigationFailureType.redirected) || prev !== START) {\n this$1.ready = true;\n this$1.readyErrorCbs.forEach(function (cb) {\n cb(err);\n });\n }\n }\n }\n );\n};\n\nHistory.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {\n var this$1 = this;\n\n var current = this.current;\n this.pending = route;\n var abort = function (err) {\n // changed after adding errors with\n // https://github.com/vuejs/vue-router/pull/3047 before that change,\n // redirect and aborted navigation would produce an err == null\n if (!isNavigationFailure(err) && isError(err)) {\n if (this$1.errorCbs.length) {\n this$1.errorCbs.forEach(function (cb) {\n cb(err);\n });\n } else {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'uncaught error during route navigation:');\n }\n console.error(err);\n }\n }\n onAbort && onAbort(err);\n };\n var lastRouteIndex = route.matched.length - 1;\n var lastCurrentIndex = current.matched.length - 1;\n if (\n isSameRoute(route, current) &&\n // in the case the route map has been dynamically appended to\n lastRouteIndex === lastCurrentIndex &&\n route.matched[lastRouteIndex] === current.matched[lastCurrentIndex]\n ) {\n this.ensureURL();\n if (route.hash) {\n handleScroll(this.router, current, route, false);\n }\n return abort(createNavigationDuplicatedError(current, route))\n }\n\n var ref = resolveQueue(\n this.current.matched,\n route.matched\n );\n var updated = ref.updated;\n var deactivated = ref.deactivated;\n var activated = ref.activated;\n\n var queue = [].concat(\n // in-component leave guards\n extractLeaveGuards(deactivated),\n // global before hooks\n this.router.beforeHooks,\n // in-component update hooks\n extractUpdateHooks(updated),\n // in-config enter guards\n activated.map(function (m) { return m.beforeEnter; }),\n // async components\n resolveAsyncComponents(activated)\n );\n\n var iterator = function (hook, next) {\n if (this$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n try {\n hook(route, current, function (to) {\n if (to === false) {\n // next(false) -> abort navigation, ensure current URL\n this$1.ensureURL(true);\n abort(createNavigationAbortedError(current, route));\n } else if (isError(to)) {\n this$1.ensureURL(true);\n abort(to);\n } else if (\n typeof to === 'string' ||\n (typeof to === 'object' &&\n (typeof to.path === 'string' || typeof to.name === 'string'))\n ) {\n // next('/') or next({ path: '/' }) -> redirect\n abort(createNavigationRedirectedError(current, route));\n if (typeof to === 'object' && to.replace) {\n this$1.replace(to);\n } else {\n this$1.push(to);\n }\n } else {\n // confirm transition and pass on the value\n next(to);\n }\n });\n } catch (e) {\n abort(e);\n }\n };\n\n runQueue(queue, iterator, function () {\n // wait until async components are resolved before\n // extracting in-component enter guards\n var enterGuards = extractEnterGuards(activated);\n var queue = enterGuards.concat(this$1.router.resolveHooks);\n runQueue(queue, iterator, function () {\n if (this$1.pending !== route) {\n return abort(createNavigationCancelledError(current, route))\n }\n this$1.pending = null;\n onComplete(route);\n if (this$1.router.app) {\n this$1.router.app.$nextTick(function () {\n handleRouteEntered(route);\n });\n }\n });\n });\n};\n\nHistory.prototype.updateRoute = function updateRoute (route) {\n this.current = route;\n this.cb && this.cb(route);\n};\n\nHistory.prototype.setupListeners = function setupListeners () {\n // Default implementation is empty\n};\n\nHistory.prototype.teardown = function teardown () {\n // clean up event listeners\n // https://github.com/vuejs/vue-router/issues/2341\n this.listeners.forEach(function (cleanupListener) {\n cleanupListener();\n });\n this.listeners = [];\n\n // reset current history route\n // https://github.com/vuejs/vue-router/issues/3294\n this.current = START;\n this.pending = null;\n};\n\nfunction normalizeBase (base) {\n if (!base) {\n if (inBrowser) {\n // respect <base> tag\n var baseEl = document.querySelector('base');\n base = (baseEl && baseEl.getAttribute('href')) || '/';\n // strip full URL origin\n base = base.replace(/^https?:\\/\\/[^\\/]+/, '');\n } else {\n base = '/';\n }\n }\n // make sure there's the starting slash\n if (base.charAt(0) !== '/') {\n base = '/' + base;\n }\n // remove trailing slash\n return base.replace(/\\/$/, '')\n}\n\nfunction resolveQueue (\n current,\n next\n) {\n var i;\n var max = Math.max(current.length, next.length);\n for (i = 0; i < max; i++) {\n if (current[i] !== next[i]) {\n break\n }\n }\n return {\n updated: next.slice(0, i),\n activated: next.slice(i),\n deactivated: current.slice(i)\n }\n}\n\nfunction extractGuards (\n records,\n name,\n bind,\n reverse\n) {\n var guards = flatMapComponents(records, function (def, instance, match, key) {\n var guard = extractGuard(def, name);\n if (guard) {\n return Array.isArray(guard)\n ? guard.map(function (guard) { return bind(guard, instance, match, key); })\n : bind(guard, instance, match, key)\n }\n });\n return flatten(reverse ? guards.reverse() : guards)\n}\n\nfunction extractGuard (\n def,\n key\n) {\n if (typeof def !== 'function') {\n // extend now so that global mixins are applied.\n def = _Vue.extend(def);\n }\n return def.options[key]\n}\n\nfunction extractLeaveGuards (deactivated) {\n return extractGuards(deactivated, 'beforeRouteLeave', bindGuard, true)\n}\n\nfunction extractUpdateHooks (updated) {\n return extractGuards(updated, 'beforeRouteUpdate', bindGuard)\n}\n\nfunction bindGuard (guard, instance) {\n if (instance) {\n return function boundRouteGuard () {\n return guard.apply(instance, arguments)\n }\n }\n}\n\nfunction extractEnterGuards (\n activated\n) {\n return extractGuards(\n activated,\n 'beforeRouteEnter',\n function (guard, _, match, key) {\n return bindEnterGuard(guard, match, key)\n }\n )\n}\n\nfunction bindEnterGuard (\n guard,\n match,\n key\n) {\n return function routeEnterGuard (to, from, next) {\n return guard(to, from, function (cb) {\n if (typeof cb === 'function') {\n if (!match.enteredCbs[key]) {\n match.enteredCbs[key] = [];\n }\n match.enteredCbs[key].push(cb);\n }\n next(cb);\n })\n }\n}\n\n/* */\n\nvar HTML5History = /*@__PURE__*/(function (History) {\n function HTML5History (router, base) {\n History.call(this, router, base);\n\n this._startLocation = getLocation(this.base);\n }\n\n if ( History ) HTML5History.__proto__ = History;\n HTML5History.prototype = Object.create( History && History.prototype );\n HTML5History.prototype.constructor = HTML5History;\n\n HTML5History.prototype.setupListeners = function setupListeners () {\n var this$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1.current;\n\n // Avoiding first `popstate` event dispatched in some browsers but first\n // history route not updated since async guard at the same time.\n var location = getLocation(this$1.base);\n if (this$1.current === START && location === this$1._startLocation) {\n return\n }\n\n this$1.transitionTo(location, function (route) {\n if (supportsScroll) {\n handleScroll(router, route, current, true);\n }\n });\n };\n window.addEventListener('popstate', handleRoutingEvent);\n this.listeners.push(function () {\n window.removeEventListener('popstate', handleRoutingEvent);\n });\n };\n\n HTML5History.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HTML5History.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n pushState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(location, function (route) {\n replaceState(cleanPath(this$1.base + route.fullPath));\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n }, onAbort);\n };\n\n HTML5History.prototype.ensureURL = function ensureURL (push) {\n if (getLocation(this.base) !== this.current.fullPath) {\n var current = cleanPath(this.base + this.current.fullPath);\n push ? pushState(current) : replaceState(current);\n }\n };\n\n HTML5History.prototype.getCurrentLocation = function getCurrentLocation () {\n return getLocation(this.base)\n };\n\n return HTML5History;\n}(History));\n\nfunction getLocation (base) {\n var path = window.location.pathname;\n var pathLowerCase = path.toLowerCase();\n var baseLowerCase = base.toLowerCase();\n // base=\"/a\" shouldn't turn path=\"/app\" into \"/a/pp\"\n // https://github.com/vuejs/vue-router/issues/3555\n // so we ensure the trailing slash in the base\n if (base && ((pathLowerCase === baseLowerCase) ||\n (pathLowerCase.indexOf(cleanPath(baseLowerCase + '/')) === 0))) {\n path = path.slice(base.length);\n }\n return (path || '/') + window.location.search + window.location.hash\n}\n\n/* */\n\nvar HashHistory = /*@__PURE__*/(function (History) {\n function HashHistory (router, base, fallback) {\n History.call(this, router, base);\n // check history fallback deeplinking\n if (fallback && checkFallback(this.base)) {\n return\n }\n ensureSlash();\n }\n\n if ( History ) HashHistory.__proto__ = History;\n HashHistory.prototype = Object.create( History && History.prototype );\n HashHistory.prototype.constructor = HashHistory;\n\n // this is delayed until the app mounts\n // to avoid the hashchange listener being fired too early\n HashHistory.prototype.setupListeners = function setupListeners () {\n var this$1 = this;\n\n if (this.listeners.length > 0) {\n return\n }\n\n var router = this.router;\n var expectScroll = router.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll) {\n this.listeners.push(setupScroll());\n }\n\n var handleRoutingEvent = function () {\n var current = this$1.current;\n if (!ensureSlash()) {\n return\n }\n this$1.transitionTo(getHash(), function (route) {\n if (supportsScroll) {\n handleScroll(this$1.router, route, current, true);\n }\n if (!supportsPushState) {\n replaceHash(route.fullPath);\n }\n });\n };\n var eventType = supportsPushState ? 'popstate' : 'hashchange';\n window.addEventListener(\n eventType,\n handleRoutingEvent\n );\n this.listeners.push(function () {\n window.removeEventListener(eventType, handleRoutingEvent);\n });\n };\n\n HashHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n pushHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n var ref = this;\n var fromRoute = ref.current;\n this.transitionTo(\n location,\n function (route) {\n replaceHash(route.fullPath);\n handleScroll(this$1.router, route, fromRoute, false);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n HashHistory.prototype.go = function go (n) {\n window.history.go(n);\n };\n\n HashHistory.prototype.ensureURL = function ensureURL (push) {\n var current = this.current.fullPath;\n if (getHash() !== current) {\n push ? pushHash(current) : replaceHash(current);\n }\n };\n\n HashHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n return getHash()\n };\n\n return HashHistory;\n}(History));\n\nfunction checkFallback (base) {\n var location = getLocation(base);\n if (!/^\\/#/.test(location)) {\n window.location.replace(cleanPath(base + '/#' + location));\n return true\n }\n}\n\nfunction ensureSlash () {\n var path = getHash();\n if (path.charAt(0) === '/') {\n return true\n }\n replaceHash('/' + path);\n return false\n}\n\nfunction getHash () {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var index = href.indexOf('#');\n // empty path\n if (index < 0) { return '' }\n\n href = href.slice(index + 1);\n\n return href\n}\n\nfunction getUrl (path) {\n var href = window.location.href;\n var i = href.indexOf('#');\n var base = i >= 0 ? href.slice(0, i) : href;\n return (base + \"#\" + path)\n}\n\nfunction pushHash (path) {\n if (supportsPushState) {\n pushState(getUrl(path));\n } else {\n window.location.hash = path;\n }\n}\n\nfunction replaceHash (path) {\n if (supportsPushState) {\n replaceState(getUrl(path));\n } else {\n window.location.replace(getUrl(path));\n }\n}\n\n/* */\n\nvar AbstractHistory = /*@__PURE__*/(function (History) {\n function AbstractHistory (router, base) {\n History.call(this, router, base);\n this.stack = [];\n this.index = -1;\n }\n\n if ( History ) AbstractHistory.__proto__ = History;\n AbstractHistory.prototype = Object.create( History && History.prototype );\n AbstractHistory.prototype.constructor = AbstractHistory;\n\n AbstractHistory.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route);\n this$1.index++;\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n this.transitionTo(\n location,\n function (route) {\n this$1.stack = this$1.stack.slice(0, this$1.index).concat(route);\n onComplete && onComplete(route);\n },\n onAbort\n );\n };\n\n AbstractHistory.prototype.go = function go (n) {\n var this$1 = this;\n\n var targetIndex = this.index + n;\n if (targetIndex < 0 || targetIndex >= this.stack.length) {\n return\n }\n var route = this.stack[targetIndex];\n this.confirmTransition(\n route,\n function () {\n var prev = this$1.current;\n this$1.index = targetIndex;\n this$1.updateRoute(route);\n this$1.router.afterHooks.forEach(function (hook) {\n hook && hook(route, prev);\n });\n },\n function (err) {\n if (isNavigationFailure(err, NavigationFailureType.duplicated)) {\n this$1.index = targetIndex;\n }\n }\n );\n };\n\n AbstractHistory.prototype.getCurrentLocation = function getCurrentLocation () {\n var current = this.stack[this.stack.length - 1];\n return current ? current.fullPath : '/'\n };\n\n AbstractHistory.prototype.ensureURL = function ensureURL () {\n // noop\n };\n\n return AbstractHistory;\n}(History));\n\n/* */\n\nvar VueRouter = function VueRouter (options) {\n if ( options === void 0 ) options = {};\n\n if (process.env.NODE_ENV !== 'production') {\n warn(this instanceof VueRouter, \"Router must be called with the new operator.\");\n }\n this.app = null;\n this.apps = [];\n this.options = options;\n this.beforeHooks = [];\n this.resolveHooks = [];\n this.afterHooks = [];\n this.matcher = createMatcher(options.routes || [], this);\n\n var mode = options.mode || 'hash';\n this.fallback =\n mode === 'history' && !supportsPushState && options.fallback !== false;\n if (this.fallback) {\n mode = 'hash';\n }\n if (!inBrowser) {\n mode = 'abstract';\n }\n this.mode = mode;\n\n switch (mode) {\n case 'history':\n this.history = new HTML5History(this, options.base);\n break\n case 'hash':\n this.history = new HashHistory(this, options.base, this.fallback);\n break\n case 'abstract':\n this.history = new AbstractHistory(this, options.base);\n break\n default:\n if (process.env.NODE_ENV !== 'production') {\n assert(false, (\"invalid mode: \" + mode));\n }\n }\n};\n\nvar prototypeAccessors = { currentRoute: { configurable: true } };\n\nVueRouter.prototype.match = function match (raw, current, redirectedFrom) {\n return this.matcher.match(raw, current, redirectedFrom)\n};\n\nprototypeAccessors.currentRoute.get = function () {\n return this.history && this.history.current\n};\n\nVueRouter.prototype.init = function init (app /* Vue component instance */) {\n var this$1 = this;\n\n process.env.NODE_ENV !== 'production' &&\n assert(\n install.installed,\n \"not installed. Make sure to call `Vue.use(VueRouter)` \" +\n \"before creating root instance.\"\n );\n\n this.apps.push(app);\n\n // set up app destroyed handler\n // https://github.com/vuejs/vue-router/issues/2639\n app.$once('hook:destroyed', function () {\n // clean out app from this.apps array once destroyed\n var index = this$1.apps.indexOf(app);\n if (index > -1) { this$1.apps.splice(index, 1); }\n // ensure we still have a main app or null if no apps\n // we do not release the router so it can be reused\n if (this$1.app === app) { this$1.app = this$1.apps[0] || null; }\n\n if (!this$1.app) { this$1.history.teardown(); }\n });\n\n // main app previously initialized\n // return as we don't need to set up new history listener\n if (this.app) {\n return\n }\n\n this.app = app;\n\n var history = this.history;\n\n if (history instanceof HTML5History || history instanceof HashHistory) {\n var handleInitialScroll = function (routeOrError) {\n var from = history.current;\n var expectScroll = this$1.options.scrollBehavior;\n var supportsScroll = supportsPushState && expectScroll;\n\n if (supportsScroll && 'fullPath' in routeOrError) {\n handleScroll(this$1, routeOrError, from, false);\n }\n };\n var setupListeners = function (routeOrError) {\n history.setupListeners();\n handleInitialScroll(routeOrError);\n };\n history.transitionTo(\n history.getCurrentLocation(),\n setupListeners,\n setupListeners\n );\n }\n\n history.listen(function (route) {\n this$1.apps.forEach(function (app) {\n app._route = route;\n });\n });\n};\n\nVueRouter.prototype.beforeEach = function beforeEach (fn) {\n return registerHook(this.beforeHooks, fn)\n};\n\nVueRouter.prototype.beforeResolve = function beforeResolve (fn) {\n return registerHook(this.resolveHooks, fn)\n};\n\nVueRouter.prototype.afterEach = function afterEach (fn) {\n return registerHook(this.afterHooks, fn)\n};\n\nVueRouter.prototype.onReady = function onReady (cb, errorCb) {\n this.history.onReady(cb, errorCb);\n};\n\nVueRouter.prototype.onError = function onError (errorCb) {\n this.history.onError(errorCb);\n};\n\nVueRouter.prototype.push = function push (location, onComplete, onAbort) {\n var this$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1.history.push(location, resolve, reject);\n })\n } else {\n this.history.push(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.replace = function replace (location, onComplete, onAbort) {\n var this$1 = this;\n\n // $flow-disable-line\n if (!onComplete && !onAbort && typeof Promise !== 'undefined') {\n return new Promise(function (resolve, reject) {\n this$1.history.replace(location, resolve, reject);\n })\n } else {\n this.history.replace(location, onComplete, onAbort);\n }\n};\n\nVueRouter.prototype.go = function go (n) {\n this.history.go(n);\n};\n\nVueRouter.prototype.back = function back () {\n this.go(-1);\n};\n\nVueRouter.prototype.forward = function forward () {\n this.go(1);\n};\n\nVueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {\n var route = to\n ? to.matched\n ? to\n : this.resolve(to).route\n : this.currentRoute;\n if (!route) {\n return []\n }\n return [].concat.apply(\n [],\n route.matched.map(function (m) {\n return Object.keys(m.components).map(function (key) {\n return m.components[key]\n })\n })\n )\n};\n\nVueRouter.prototype.resolve = function resolve (\n to,\n current,\n append\n) {\n current = current || this.history.current;\n var location = normalizeLocation(to, current, append, this);\n var route = this.match(location, current);\n var fullPath = route.redirectedFrom || route.fullPath;\n var base = this.history.base;\n var href = createHref(base, fullPath, this.mode);\n return {\n location: location,\n route: route,\n href: href,\n // for backwards compat\n normalizedTo: location,\n resolved: route\n }\n};\n\nVueRouter.prototype.getRoutes = function getRoutes () {\n return this.matcher.getRoutes()\n};\n\nVueRouter.prototype.addRoute = function addRoute (parentOrRoute, route) {\n this.matcher.addRoute(parentOrRoute, route);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nVueRouter.prototype.addRoutes = function addRoutes (routes) {\n if (process.env.NODE_ENV !== 'production') {\n warn(false, 'router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.');\n }\n this.matcher.addRoutes(routes);\n if (this.history.current !== START) {\n this.history.transitionTo(this.history.getCurrentLocation());\n }\n};\n\nObject.defineProperties( VueRouter.prototype, prototypeAccessors );\n\nfunction registerHook (list, fn) {\n list.push(fn);\n return function () {\n var i = list.indexOf(fn);\n if (i > -1) { list.splice(i, 1); }\n }\n}\n\nfunction createHref (base, fullPath, mode) {\n var path = mode === 'hash' ? '#' + fullPath : fullPath;\n return base ? cleanPath(base + '/' + path) : path\n}\n\nVueRouter.install = install;\nVueRouter.version = '3.5.4';\nVueRouter.isNavigationFailure = isNavigationFailure;\nVueRouter.NavigationFailureType = NavigationFailureType;\nVueRouter.START_LOCATION = START;\n\nif (inBrowser && window.Vue) {\n window.Vue.use(VueRouter);\n}\n\nexport default VueRouter;\n","import Vue from 'vue';\n\n/*! *****************************************************************************\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\r\nfunction __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}\n\nvar TYPE;\r\n(function (TYPE) {\r\n TYPE[\"SUCCESS\"] = \"success\";\r\n TYPE[\"ERROR\"] = \"error\";\r\n TYPE[\"WARNING\"] = \"warning\";\r\n TYPE[\"INFO\"] = \"info\";\r\n TYPE[\"DEFAULT\"] = \"default\";\r\n})(TYPE || (TYPE = {}));\r\nvar POSITION;\r\n(function (POSITION) {\r\n POSITION[\"TOP_LEFT\"] = \"top-left\";\r\n POSITION[\"TOP_CENTER\"] = \"top-center\";\r\n POSITION[\"TOP_RIGHT\"] = \"top-right\";\r\n POSITION[\"BOTTOM_LEFT\"] = \"bottom-left\";\r\n POSITION[\"BOTTOM_CENTER\"] = \"bottom-center\";\r\n POSITION[\"BOTTOM_RIGHT\"] = \"bottom-right\";\r\n})(POSITION || (POSITION = {}));\r\nvar EVENTS;\r\n(function (EVENTS) {\r\n EVENTS[\"ADD\"] = \"add\";\r\n EVENTS[\"DISMISS\"] = \"dismiss\";\r\n EVENTS[\"UPDATE\"] = \"update\";\r\n EVENTS[\"CLEAR\"] = \"clear\";\r\n EVENTS[\"UPDATE_DEFAULTS\"] = \"update_defaults\";\r\n})(EVENTS || (EVENTS = {}));\r\nconst VT_NAMESPACE = \"Vue-Toastification\";\n\nconst COMMON = {\r\n type: {\r\n type: String,\r\n default: TYPE.DEFAULT,\r\n },\r\n classNames: {\r\n type: [String, Array],\r\n default: () => [],\r\n },\r\n trueBoolean: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n};\r\nconst ICON = {\r\n type: COMMON.type,\r\n customIcon: {\r\n type: [String, Boolean, Object, Function],\r\n default: true,\r\n },\r\n};\r\nconst CLOSE_BUTTON = {\r\n component: {\r\n type: [String, Object, Function, Boolean],\r\n default: \"button\",\r\n },\r\n classNames: COMMON.classNames,\r\n showOnHover: Boolean,\r\n ariaLabel: {\r\n type: String,\r\n default: \"close\",\r\n },\r\n};\r\nconst PROGRESS_BAR = {\r\n timeout: {\r\n type: [Number, Boolean],\r\n default: 5000,\r\n },\r\n hideProgressBar: Boolean,\r\n isRunning: Boolean,\r\n};\r\nconst TRANSITION = {\r\n transition: {\r\n type: [Object, String],\r\n default: `${VT_NAMESPACE}__bounce`,\r\n },\r\n transitionDuration: {\r\n type: [Number, Object],\r\n default: 750,\r\n },\r\n};\r\nconst CORE_TOAST = {\r\n position: {\r\n type: String,\r\n default: POSITION.TOP_RIGHT,\r\n },\r\n draggable: COMMON.trueBoolean,\r\n draggablePercent: {\r\n type: Number,\r\n default: 0.6,\r\n },\r\n pauseOnFocusLoss: COMMON.trueBoolean,\r\n pauseOnHover: COMMON.trueBoolean,\r\n closeOnClick: COMMON.trueBoolean,\r\n timeout: PROGRESS_BAR.timeout,\r\n hideProgressBar: PROGRESS_BAR.hideProgressBar,\r\n toastClassName: COMMON.classNames,\r\n bodyClassName: COMMON.classNames,\r\n icon: ICON.customIcon,\r\n closeButton: CLOSE_BUTTON.component,\r\n closeButtonClassName: CLOSE_BUTTON.classNames,\r\n showCloseButtonOnHover: CLOSE_BUTTON.showOnHover,\r\n accessibility: {\r\n type: Object,\r\n default: () => ({\r\n toastRole: \"alert\",\r\n closeButtonLabel: \"close\",\r\n }),\r\n },\r\n rtl: Boolean,\r\n eventBus: Object,\r\n};\r\nconst TOAST = {\r\n id: {\r\n type: [String, Number],\r\n required: true,\r\n },\r\n type: COMMON.type,\r\n content: {\r\n type: [String, Object, Function],\r\n required: true,\r\n },\r\n onClick: Function,\r\n onClose: Function,\r\n};\r\nconst CONTAINER = {\r\n container: {\r\n type: undefined,\r\n default: () => document.body,\r\n },\r\n newestOnTop: COMMON.trueBoolean,\r\n maxToasts: {\r\n type: Number,\r\n default: 20,\r\n },\r\n transition: TRANSITION.transition,\r\n transitionDuration: TRANSITION.transitionDuration,\r\n toastDefaults: Object,\r\n filterBeforeCreate: {\r\n type: Function,\r\n default: (toast) => toast,\r\n },\r\n filterToasts: {\r\n type: Function,\r\n default: (toasts) => toasts,\r\n },\r\n containerClassName: COMMON.classNames,\r\n onMounted: Function,\r\n};\r\nvar PROPS = {\r\n CORE_TOAST,\r\n TOAST,\r\n CONTAINER,\r\n PROGRESS_BAR,\r\n ICON,\r\n TRANSITION,\r\n CLOSE_BUTTON,\r\n};\n\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nconst isFunction = (value) => typeof value === \"function\";\r\nconst isString = (value) => typeof value === \"string\";\r\nconst isNonEmptyString = (value) => isString(value) && value.trim().length > 0;\r\nconst isNumber = (value) => typeof value === \"number\";\r\nconst isUndefined = (value) => typeof value === \"undefined\";\r\nconst isObject = (value) => typeof value === \"object\" && value !== null;\r\nconst isJSX = (obj) => hasProp(obj, \"tag\") && isNonEmptyString(obj.tag);\r\nconst isTouchEvent = (event) => window.TouchEvent && event instanceof TouchEvent;\r\nconst isToastComponent = (obj) => hasProp(obj, \"component\") && isToastContent(obj.component);\r\nconst isConstructor = (c) => {\r\n return isFunction(c) && hasProp(c, \"cid\");\r\n};\r\nconst isVueComponent = (c) => {\r\n if (isConstructor(c)) {\r\n return true;\r\n }\r\n if (!isObject(c)) {\r\n return false;\r\n }\r\n if (c.extends || c._Ctor) {\r\n return true;\r\n }\r\n if (isString(c.template)) {\r\n return true;\r\n }\r\n return hasRenderFunction(c);\r\n};\r\nconst isVueInstanceOrComponent = (obj) => obj instanceof Vue || isVueComponent(obj);\r\nconst isToastContent = (obj) => \r\n// Ignore undefined\r\n!isUndefined(obj) &&\r\n // Is a string\r\n (isString(obj) ||\r\n // Regular Vue instance or component\r\n isVueInstanceOrComponent(obj) ||\r\n // Object with a render function\r\n hasRenderFunction(obj) ||\r\n // JSX template\r\n isJSX(obj) ||\r\n // Nested object\r\n isToastComponent(obj));\r\nconst isDOMRect = (obj) => isObject(obj) &&\r\n isNumber(obj.height) &&\r\n isNumber(obj.width) &&\r\n isNumber(obj.right) &&\r\n isNumber(obj.left) &&\r\n isNumber(obj.top) &&\r\n isNumber(obj.bottom);\r\nconst hasProp = (obj, propKey) => Object.prototype.hasOwnProperty.call(obj, propKey);\r\nconst hasRenderFunction = (obj\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\n) => hasProp(obj, \"render\") && isFunction(obj.render);\r\n/**\r\n * ID generator\r\n */\r\nconst getId = ((i) => () => i++)(0);\r\nfunction getX(event) {\r\n return isTouchEvent(event) ? event.targetTouches[0].clientX : event.clientX;\r\n}\r\nfunction getY(event) {\r\n return isTouchEvent(event) ? event.targetTouches[0].clientY : event.clientY;\r\n}\r\nconst removeElement = (el) => {\r\n if (!isUndefined(el.remove)) {\r\n el.remove();\r\n }\r\n else if (el.parentNode) {\r\n el.parentNode.removeChild(el);\r\n }\r\n};\r\nconst getVueComponentFromObj = (obj) => {\r\n if (isToastComponent(obj)) {\r\n // Recurse if component prop\r\n return getVueComponentFromObj(obj.component);\r\n }\r\n if (isJSX(obj)) {\r\n // Create render function for JSX\r\n return {\r\n render() {\r\n return obj;\r\n },\r\n };\r\n }\r\n // Return the actual object if regular vue component\r\n return obj;\r\n};\n\nvar script = Vue.extend({\r\n props: PROPS.PROGRESS_BAR,\r\n data() {\r\n return {\r\n hasClass: true,\r\n };\r\n },\r\n computed: {\r\n style() {\r\n return {\r\n animationDuration: `${this.timeout}ms`,\r\n animationPlayState: this.isRunning ? \"running\" : \"paused\",\r\n opacity: this.hideProgressBar ? 0 : 1,\r\n };\r\n },\r\n cpClass() {\r\n return this.hasClass ? `${VT_NAMESPACE}__progress-bar` : \"\";\r\n },\r\n },\r\n mounted() {\r\n this.$el.addEventListener(\"animationend\", this.animationEnded);\r\n },\r\n beforeDestroy() {\r\n this.$el.removeEventListener(\"animationend\", this.animationEnded);\r\n },\r\n methods: {\r\n animationEnded() {\r\n this.$emit(\"close-toast\");\r\n },\r\n },\r\n watch: {\r\n timeout() {\r\n this.hasClass = false;\r\n this.$nextTick(() => (this.hasClass = true));\r\n },\r\n },\r\n});\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n }\r\n // Vue.extend constructor export interop.\r\n const options = typeof script === 'function' ? script.options : script;\r\n // render functions\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true;\r\n // functional template\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n }\r\n // scopedId\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n let hook;\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function (context) {\r\n // 2.3 injection\r\n context =\r\n context || // cached call\r\n (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n // 2.2 with runInNewContext: true\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n }\r\n // inject component styles\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n }\r\n // register component module identifier for async chunk inference\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n };\r\n // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n options._ssrRegister = hook;\r\n }\r\n else if (style) {\r\n hook = shadowMode\r\n ? function (context) {\r\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n }\r\n : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n const originalRender = options.render;\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n }\r\n else {\r\n // inject component registration as beforeCreate hook\r\n const existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n return script;\r\n}\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\"div\", { class: _vm.cpClass, style: _vm.style })\n};\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n\n /* style */\n const __vue_inject_styles__ = undefined;\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__ = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$1 = Vue.extend({\r\n props: PROPS.CLOSE_BUTTON,\r\n computed: {\r\n buttonComponent() {\r\n if (this.component !== false) {\r\n return getVueComponentFromObj(this.component);\r\n }\r\n return \"button\";\r\n },\r\n classes() {\r\n const classes = [`${VT_NAMESPACE}__close-button`];\r\n if (this.showOnHover) {\r\n classes.push(\"show-on-hover\");\r\n }\r\n return classes.concat(this.classNames);\r\n },\r\n },\r\n});\n\n/* script */\nconst __vue_script__$1 = script$1;\n\n/* template */\nvar __vue_render__$1 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n _vm.buttonComponent,\n _vm._g(\n {\n tag: \"component\",\n class: _vm.classes,\n attrs: { \"aria-label\": _vm.ariaLabel }\n },\n _vm.$listeners\n ),\n [_vm._v(\"\\n ×\\n\")]\n )\n};\nvar __vue_staticRenderFns__$1 = [];\n__vue_render__$1._withStripped = true;\n\n /* style */\n const __vue_inject_styles__$1 = undefined;\n /* scoped */\n const __vue_scope_id__$1 = undefined;\n /* module identifier */\n const __vue_module_identifier__$1 = undefined;\n /* functional template */\n const __vue_is_functional_template__$1 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__$1 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 },\n __vue_inject_styles__$1,\n __vue_script__$1,\n __vue_scope_id__$1,\n __vue_is_functional_template__$1,\n __vue_module_identifier__$1,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$2 = {};\n\n/* script */\nconst __vue_script__$2 = script$2;\n\n/* template */\nvar __vue_render__$2 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"svg\",\n {\n staticClass: \"svg-inline--fa fa-check-circle fa-w-16\",\n attrs: {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n \"data-prefix\": \"fas\",\n \"data-icon\": \"check-circle\",\n role: \"img\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\"\n }\n },\n [\n _c(\"path\", {\n attrs: {\n fill: \"currentColor\",\n d:\n \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"\n }\n })\n ]\n )\n};\nvar __vue_staticRenderFns__$2 = [];\n__vue_render__$2._withStripped = true;\n\n /* style */\n const __vue_inject_styles__$2 = undefined;\n /* scoped */\n const __vue_scope_id__$2 = undefined;\n /* module identifier */\n const __vue_module_identifier__$2 = undefined;\n /* functional template */\n const __vue_is_functional_template__$2 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__$2 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$2, staticRenderFns: __vue_staticRenderFns__$2 },\n __vue_inject_styles__$2,\n __vue_script__$2,\n __vue_scope_id__$2,\n __vue_is_functional_template__$2,\n __vue_module_identifier__$2,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$3 = {};\n\n/* script */\nconst __vue_script__$3 = script$3;\n\n/* template */\nvar __vue_render__$3 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"svg\",\n {\n staticClass: \"svg-inline--fa fa-info-circle fa-w-16\",\n attrs: {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n \"data-prefix\": \"fas\",\n \"data-icon\": \"info-circle\",\n role: \"img\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\"\n }\n },\n [\n _c(\"path\", {\n attrs: {\n fill: \"currentColor\",\n d:\n \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"\n }\n })\n ]\n )\n};\nvar __vue_staticRenderFns__$3 = [];\n__vue_render__$3._withStripped = true;\n\n /* style */\n const __vue_inject_styles__$3 = undefined;\n /* scoped */\n const __vue_scope_id__$3 = undefined;\n /* module identifier */\n const __vue_module_identifier__$3 = undefined;\n /* functional template */\n const __vue_is_functional_template__$3 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__$3 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$3, staticRenderFns: __vue_staticRenderFns__$3 },\n __vue_inject_styles__$3,\n __vue_script__$3,\n __vue_scope_id__$3,\n __vue_is_functional_template__$3,\n __vue_module_identifier__$3,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$4 = {};\n\n/* script */\nconst __vue_script__$4 = script$4;\n\n/* template */\nvar __vue_render__$4 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"svg\",\n {\n staticClass: \"svg-inline--fa fa-exclamation-circle fa-w-16\",\n attrs: {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n \"data-prefix\": \"fas\",\n \"data-icon\": \"exclamation-circle\",\n role: \"img\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\"\n }\n },\n [\n _c(\"path\", {\n attrs: {\n fill: \"currentColor\",\n d:\n \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"\n }\n })\n ]\n )\n};\nvar __vue_staticRenderFns__$4 = [];\n__vue_render__$4._withStripped = true;\n\n /* style */\n const __vue_inject_styles__$4 = undefined;\n /* scoped */\n const __vue_scope_id__$4 = undefined;\n /* module identifier */\n const __vue_module_identifier__$4 = undefined;\n /* functional template */\n const __vue_is_functional_template__$4 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__$4 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$4, staticRenderFns: __vue_staticRenderFns__$4 },\n __vue_inject_styles__$4,\n __vue_script__$4,\n __vue_scope_id__$4,\n __vue_is_functional_template__$4,\n __vue_module_identifier__$4,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$5 = {};\n\n/* script */\nconst __vue_script__$5 = script$5;\n\n/* template */\nvar __vue_render__$5 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"svg\",\n {\n staticClass: \"svg-inline--fa fa-exclamation-triangle fa-w-18\",\n attrs: {\n \"aria-hidden\": \"true\",\n focusable: \"false\",\n \"data-prefix\": \"fas\",\n \"data-icon\": \"exclamation-triangle\",\n role: \"img\",\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 576 512\"\n }\n },\n [\n _c(\"path\", {\n attrs: {\n fill: \"currentColor\",\n d:\n \"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"\n }\n })\n ]\n )\n};\nvar __vue_staticRenderFns__$5 = [];\n__vue_render__$5._withStripped = true;\n\n /* style */\n const __vue_inject_styles__$5 = undefined;\n /* scoped */\n const __vue_scope_id__$5 = undefined;\n /* module identifier */\n const __vue_module_identifier__$5 = undefined;\n /* functional template */\n const __vue_is_functional_template__$5 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__$5 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$5, staticRenderFns: __vue_staticRenderFns__$5 },\n __vue_inject_styles__$5,\n __vue_script__$5,\n __vue_scope_id__$5,\n __vue_is_functional_template__$5,\n __vue_module_identifier__$5,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$6 = Vue.extend({\r\n props: PROPS.ICON,\r\n computed: {\r\n customIconChildren() {\r\n return hasProp(this.customIcon, \"iconChildren\")\r\n ? this.trimValue(this.customIcon.iconChildren)\r\n : \"\";\r\n },\r\n customIconClass() {\r\n if (isString(this.customIcon)) {\r\n return this.trimValue(this.customIcon);\r\n }\r\n else if (hasProp(this.customIcon, \"iconClass\")) {\r\n return this.trimValue(this.customIcon.iconClass);\r\n }\r\n return \"\";\r\n },\r\n customIconTag() {\r\n if (hasProp(this.customIcon, \"iconTag\")) {\r\n return this.trimValue(this.customIcon.iconTag, \"i\");\r\n }\r\n return \"i\";\r\n },\r\n hasCustomIcon() {\r\n return this.customIconClass.length > 0;\r\n },\r\n component() {\r\n if (this.hasCustomIcon) {\r\n return this.customIconTag;\r\n }\r\n if (isToastContent(this.customIcon)) {\r\n return getVueComponentFromObj(this.customIcon);\r\n }\r\n return this.iconTypeComponent;\r\n },\r\n iconTypeComponent() {\r\n const types = {\r\n [TYPE.DEFAULT]: __vue_component__$3,\r\n [TYPE.INFO]: __vue_component__$3,\r\n [TYPE.SUCCESS]: __vue_component__$2,\r\n [TYPE.ERROR]: __vue_component__$5,\r\n [TYPE.WARNING]: __vue_component__$4,\r\n };\r\n return types[this.type];\r\n },\r\n iconClasses() {\r\n const classes = [`${VT_NAMESPACE}__icon`];\r\n if (this.hasCustomIcon) {\r\n return classes.concat(this.customIconClass);\r\n }\r\n return classes;\r\n },\r\n },\r\n methods: {\r\n trimValue(value, empty = \"\") {\r\n return isNonEmptyString(value) ? value.trim() : empty;\r\n },\r\n },\r\n});\n\n/* script */\nconst __vue_script__$6 = script$6;\n\n/* template */\nvar __vue_render__$6 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(_vm.component, { tag: \"component\", class: _vm.iconClasses }, [\n _vm._v(_vm._s(_vm.customIconChildren))\n ])\n};\nvar __vue_staticRenderFns__$6 = [];\n__vue_render__$6._withStripped = true;\n\n /* style */\n const __vue_inject_styles__$6 = undefined;\n /* scoped */\n const __vue_scope_id__$6 = undefined;\n /* module identifier */\n const __vue_module_identifier__$6 = undefined;\n /* functional template */\n const __vue_is_functional_template__$6 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__$6 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$6, staticRenderFns: __vue_staticRenderFns__$6 },\n __vue_inject_styles__$6,\n __vue_script__$6,\n __vue_scope_id__$6,\n __vue_is_functional_template__$6,\n __vue_module_identifier__$6,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$7 = Vue.extend({\r\n components: { ProgressBar: __vue_component__, CloseButton: __vue_component__$1, Icon: __vue_component__$6 },\r\n inheritAttrs: false,\r\n props: Object.assign({}, PROPS.CORE_TOAST, PROPS.TOAST),\r\n data() {\r\n const data = {\r\n isRunning: true,\r\n disableTransitions: false,\r\n beingDragged: false,\r\n dragStart: 0,\r\n dragPos: { x: 0, y: 0 },\r\n dragRect: {},\r\n };\r\n return data;\r\n },\r\n computed: {\r\n classes() {\r\n const classes = [\r\n `${VT_NAMESPACE}__toast`,\r\n `${VT_NAMESPACE}__toast--${this.type}`,\r\n `${this.position}`,\r\n ].concat(this.toastClassName);\r\n if (this.disableTransitions) {\r\n classes.push(\"disable-transition\");\r\n }\r\n if (this.rtl) {\r\n classes.push(`${VT_NAMESPACE}__toast--rtl`);\r\n }\r\n return classes;\r\n },\r\n bodyClasses() {\r\n const classes = [\r\n `${VT_NAMESPACE}__toast-${isString(this.content) ? \"body\" : \"component-body\"}`,\r\n ].concat(this.bodyClassName);\r\n return classes;\r\n },\r\n draggableStyle() {\r\n if (this.dragStart === this.dragPos.x) {\r\n return {};\r\n }\r\n if (this.beingDragged) {\r\n return {\r\n transform: `translateX(${this.dragDelta}px)`,\r\n opacity: 1 - Math.abs(this.dragDelta / this.removalDistance),\r\n };\r\n }\r\n return {\r\n transition: \"transform 0.2s, opacity 0.2s\",\r\n transform: \"translateX(0)\",\r\n opacity: 1,\r\n };\r\n },\r\n dragDelta() {\r\n return this.beingDragged ? this.dragPos.x - this.dragStart : 0;\r\n },\r\n removalDistance() {\r\n if (isDOMRect(this.dragRect)) {\r\n return ((this.dragRect.right - this.dragRect.left) * this.draggablePercent);\r\n }\r\n return 0;\r\n },\r\n },\r\n mounted() {\r\n if (this.draggable) {\r\n this.draggableSetup();\r\n }\r\n if (this.pauseOnFocusLoss) {\r\n this.focusSetup();\r\n }\r\n },\r\n beforeDestroy() {\r\n if (this.draggable) {\r\n this.draggableCleanup();\r\n }\r\n if (this.pauseOnFocusLoss) {\r\n this.focusCleanup();\r\n }\r\n },\r\n destroyed() {\r\n setTimeout(() => {\r\n removeElement(this.$el);\r\n }, 1000);\r\n },\r\n methods: {\r\n getVueComponentFromObj,\r\n closeToast() {\r\n this.eventBus.$emit(EVENTS.DISMISS, this.id);\r\n },\r\n clickHandler() {\r\n if (this.onClick) {\r\n this.onClick(this.closeToast);\r\n }\r\n if (this.closeOnClick) {\r\n if (!this.beingDragged || this.dragStart === this.dragPos.x) {\r\n this.closeToast();\r\n }\r\n }\r\n },\r\n timeoutHandler() {\r\n this.closeToast();\r\n },\r\n hoverPause() {\r\n if (this.pauseOnHover) {\r\n this.isRunning = false;\r\n }\r\n },\r\n hoverPlay() {\r\n if (this.pauseOnHover) {\r\n this.isRunning = true;\r\n }\r\n },\r\n focusPause() {\r\n this.isRunning = false;\r\n },\r\n focusPlay() {\r\n this.isRunning = true;\r\n },\r\n focusSetup() {\r\n addEventListener(\"blur\", this.focusPause);\r\n addEventListener(\"focus\", this.focusPlay);\r\n },\r\n focusCleanup() {\r\n removeEventListener(\"blur\", this.focusPause);\r\n removeEventListener(\"focus\", this.focusPlay);\r\n },\r\n draggableSetup() {\r\n const element = this.$el;\r\n element.addEventListener(\"touchstart\", this.onDragStart, {\r\n passive: true,\r\n });\r\n element.addEventListener(\"mousedown\", this.onDragStart);\r\n addEventListener(\"touchmove\", this.onDragMove, { passive: false });\r\n addEventListener(\"mousemove\", this.onDragMove);\r\n addEventListener(\"touchend\", this.onDragEnd);\r\n addEventListener(\"mouseup\", this.onDragEnd);\r\n },\r\n draggableCleanup() {\r\n const element = this.$el;\r\n element.removeEventListener(\"touchstart\", this.onDragStart);\r\n element.removeEventListener(\"mousedown\", this.onDragStart);\r\n removeEventListener(\"touchmove\", this.onDragMove);\r\n removeEventListener(\"mousemove\", this.onDragMove);\r\n removeEventListener(\"touchend\", this.onDragEnd);\r\n removeEventListener(\"mouseup\", this.onDragEnd);\r\n },\r\n onDragStart(event) {\r\n this.beingDragged = true;\r\n this.dragPos = { x: getX(event), y: getY(event) };\r\n this.dragStart = getX(event);\r\n this.dragRect = this.$el.getBoundingClientRect();\r\n },\r\n onDragMove(event) {\r\n if (this.beingDragged) {\r\n event.preventDefault();\r\n if (this.isRunning) {\r\n this.isRunning = false;\r\n }\r\n this.dragPos = { x: getX(event), y: getY(event) };\r\n }\r\n },\r\n onDragEnd() {\r\n if (this.beingDragged) {\r\n if (Math.abs(this.dragDelta) >= this.removalDistance) {\r\n this.disableTransitions = true;\r\n this.$nextTick(() => this.closeToast());\r\n }\r\n else {\r\n setTimeout(() => {\r\n this.beingDragged = false;\r\n if (isDOMRect(this.dragRect) &&\r\n this.pauseOnHover &&\r\n this.dragRect.bottom >= this.dragPos.y &&\r\n this.dragPos.y >= this.dragRect.top &&\r\n this.dragRect.left <= this.dragPos.x &&\r\n this.dragPos.x <= this.dragRect.right) {\r\n this.isRunning = false;\r\n }\r\n else {\r\n this.isRunning = true;\r\n }\r\n });\r\n }\r\n }\r\n },\r\n },\r\n});\n\n/* script */\nconst __vue_script__$7 = script$7;\n\n/* template */\nvar __vue_render__$7 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"div\",\n {\n class: _vm.classes,\n style: _vm.draggableStyle,\n on: {\n click: _vm.clickHandler,\n mouseenter: _vm.hoverPause,\n mouseleave: _vm.hoverPlay\n }\n },\n [\n _vm.icon\n ? _c(\"Icon\", { attrs: { \"custom-icon\": _vm.icon, type: _vm.type } })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n class: _vm.bodyClasses,\n attrs: { role: _vm.accessibility.toastRole || \"alert\" }\n },\n [\n typeof _vm.content === \"string\"\n ? [_vm._v(_vm._s(_vm.content))]\n : _c(\n _vm.getVueComponentFromObj(_vm.content),\n _vm._g(\n _vm._b(\n {\n tag: \"component\",\n attrs: { \"toast-id\": _vm.id },\n on: { \"close-toast\": _vm.closeToast }\n },\n \"component\",\n _vm.content.props,\n false\n ),\n _vm.content.listeners\n )\n )\n ],\n 2\n ),\n _vm._v(\" \"),\n !!_vm.closeButton\n ? _c(\"CloseButton\", {\n attrs: {\n component: _vm.closeButton,\n \"class-names\": _vm.closeButtonClassName,\n \"show-on-hover\": _vm.showCloseButtonOnHover,\n \"aria-label\": _vm.accessibility.closeButtonLabel\n },\n on: {\n click: function($event) {\n $event.stopPropagation();\n return _vm.closeToast($event)\n }\n }\n })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.timeout\n ? _c(\"ProgressBar\", {\n attrs: {\n \"is-running\": _vm.isRunning,\n \"hide-progress-bar\": _vm.hideProgressBar,\n timeout: _vm.timeout\n },\n on: { \"close-toast\": _vm.timeoutHandler }\n })\n : _vm._e()\n ],\n 1\n )\n};\nvar __vue_staticRenderFns__$7 = [];\n__vue_render__$7._withStripped = true;\n\n /* style */\n const __vue_inject_styles__$7 = undefined;\n /* scoped */\n const __vue_scope_id__$7 = undefined;\n /* module identifier */\n const __vue_module_identifier__$7 = undefined;\n /* functional template */\n const __vue_is_functional_template__$7 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__$7 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$7, staticRenderFns: __vue_staticRenderFns__$7 },\n __vue_inject_styles__$7,\n __vue_script__$7,\n __vue_scope_id__$7,\n __vue_is_functional_template__$7,\n __vue_module_identifier__$7,\n false,\n undefined,\n undefined,\n undefined\n );\n\n// Transition methods taken from https://github.com/BinarCode/vue2-transitions\r\nvar script$8 = Vue.extend({\r\n inheritAttrs: false,\r\n props: PROPS.TRANSITION,\r\n methods: {\r\n beforeEnter(el) {\r\n const enterDuration = typeof this.transitionDuration === \"number\"\r\n ? this.transitionDuration\r\n : this.transitionDuration.enter;\r\n el.style.animationDuration = `${enterDuration}ms`;\r\n el.style.animationFillMode = \"both\";\r\n this.$emit(\"before-enter\", el);\r\n },\r\n afterEnter(el) {\r\n this.cleanUpStyles(el);\r\n this.$emit(\"after-enter\", el);\r\n },\r\n afterLeave(el) {\r\n this.cleanUpStyles(el);\r\n this.$emit(\"after-leave\", el);\r\n },\r\n beforeLeave(el) {\r\n const leaveDuration = typeof this.transitionDuration === \"number\"\r\n ? this.transitionDuration\r\n : this.transitionDuration.leave;\r\n el.style.animationDuration = `${leaveDuration}ms`;\r\n el.style.animationFillMode = \"both\";\r\n this.$emit(\"before-leave\", el);\r\n },\r\n // eslint-disable-next-line @typescript-eslint/ban-types\r\n leave(el, done) {\r\n this.setAbsolutePosition(el);\r\n this.$emit(\"leave\", el, done);\r\n },\r\n setAbsolutePosition(el) {\r\n el.style.left = el.offsetLeft + \"px\";\r\n el.style.top = el.offsetTop + \"px\";\r\n el.style.width = getComputedStyle(el).width;\r\n el.style.height = getComputedStyle(el).height;\r\n el.style.position = \"absolute\";\r\n },\r\n cleanUpStyles(el) {\r\n el.style.animationFillMode = \"\";\r\n el.style.animationDuration = \"\";\r\n },\r\n },\r\n});\n\n/* script */\nconst __vue_script__$8 = script$8;\n\n/* template */\nvar __vue_render__$8 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"transition-group\",\n {\n attrs: {\n tag: \"div\",\n \"enter-active-class\": _vm.transition.enter\n ? _vm.transition.enter\n : _vm.transition + \"-enter-active\",\n \"move-class\": _vm.transition.move\n ? _vm.transition.move\n : _vm.transition + \"-move\",\n \"leave-active-class\": _vm.transition.leave\n ? _vm.transition.leave\n : _vm.transition + \"-leave-active\"\n },\n on: {\n leave: _vm.leave,\n \"before-enter\": _vm.beforeEnter,\n \"before-leave\": _vm.beforeLeave,\n \"after-enter\": _vm.afterEnter,\n \"after-leave\": _vm.afterLeave\n }\n },\n [_vm._t(\"default\")],\n 2\n )\n};\nvar __vue_staticRenderFns__$8 = [];\n__vue_render__$8._withStripped = true;\n\n /* style */\n const __vue_inject_styles__$8 = undefined;\n /* scoped */\n const __vue_scope_id__$8 = undefined;\n /* module identifier */\n const __vue_module_identifier__$8 = undefined;\n /* functional template */\n const __vue_is_functional_template__$8 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__$8 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$8, staticRenderFns: __vue_staticRenderFns__$8 },\n __vue_inject_styles__$8,\n __vue_script__$8,\n __vue_scope_id__$8,\n __vue_is_functional_template__$8,\n __vue_module_identifier__$8,\n false,\n undefined,\n undefined,\n undefined\n );\n\nvar script$9 = Vue.extend({\r\n components: { Toast: __vue_component__$7, VtTransition: __vue_component__$8 },\r\n props: Object.assign({}, PROPS.CORE_TOAST, PROPS.CONTAINER, PROPS.TRANSITION),\r\n data() {\r\n const data = {\r\n count: 0,\r\n positions: Object.values(POSITION),\r\n toasts: {},\r\n defaults: {},\r\n };\r\n return data;\r\n },\r\n computed: {\r\n toastArray() {\r\n return Object.values(this.toasts);\r\n },\r\n filteredToasts() {\r\n return this.defaults.filterToasts(this.toastArray);\r\n },\r\n },\r\n beforeMount() {\r\n this.setup(this.container);\r\n const events = this.eventBus;\r\n events.$on(EVENTS.ADD, this.addToast);\r\n events.$on(EVENTS.CLEAR, this.clearToasts);\r\n events.$on(EVENTS.DISMISS, this.dismissToast);\r\n events.$on(EVENTS.UPDATE, this.updateToast);\r\n events.$on(EVENTS.UPDATE_DEFAULTS, this.updateDefaults);\r\n this.defaults = this.$props;\r\n },\r\n methods: {\r\n setup(container) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (isFunction(container)) {\r\n container = yield container();\r\n }\r\n removeElement(this.$el);\r\n container.appendChild(this.$el);\r\n });\r\n },\r\n setToast(props) {\r\n if (!isUndefined(props.id)) {\r\n this.$set(this.toasts, props.id, props);\r\n }\r\n },\r\n addToast(params) {\r\n const props = Object.assign({}, this.defaults, params.type &&\r\n this.defaults.toastDefaults &&\r\n this.defaults.toastDefaults[params.type], params);\r\n const toast = this.defaults.filterBeforeCreate(props, this.toastArray);\r\n toast && this.setToast(toast);\r\n },\r\n dismissToast(id) {\r\n const toast = this.toasts[id];\r\n if (!isUndefined(toast) && !isUndefined(toast.onClose)) {\r\n toast.onClose();\r\n }\r\n this.$delete(this.toasts, id);\r\n },\r\n clearToasts() {\r\n Object.keys(this.toasts).forEach((id) => {\r\n this.dismissToast(id);\r\n });\r\n },\r\n getPositionToasts(position) {\r\n const toasts = this.filteredToasts\r\n .filter((toast) => toast.position === position)\r\n .slice(0, this.defaults.maxToasts);\r\n return this.defaults.newestOnTop ? toasts.reverse() : toasts;\r\n },\r\n updateDefaults(update) {\r\n // Update container if changed\r\n if (!isUndefined(update.container)) {\r\n this.setup(update.container);\r\n }\r\n this.defaults = Object.assign({}, this.defaults, update);\r\n },\r\n updateToast({ id, options, create, }) {\r\n if (this.toasts[id]) {\r\n // If a timeout is defined, and is equal to the one before, change it\r\n // a little so the progressBar is reset\r\n if (options.timeout && options.timeout === this.toasts[id].timeout) {\r\n options.timeout++;\r\n }\r\n this.setToast(Object.assign({}, this.toasts[id], options));\r\n }\r\n else if (create) {\r\n this.addToast(Object.assign({}, { id }, options));\r\n }\r\n },\r\n getClasses(position) {\r\n const classes = [`${VT_NAMESPACE}__container`, position];\r\n return classes.concat(this.defaults.containerClassName);\r\n },\r\n },\r\n});\n\n/* script */\nconst __vue_script__$9 = script$9;\n\n/* template */\nvar __vue_render__$9 = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\n \"div\",\n _vm._l(_vm.positions, function(pos) {\n return _c(\n \"div\",\n { key: pos },\n [\n _c(\n \"VtTransition\",\n {\n class: _vm.getClasses(pos),\n attrs: {\n transition: _vm.defaults.transition,\n \"transition-duration\": _vm.defaults.transitionDuration\n }\n },\n _vm._l(_vm.getPositionToasts(pos), function(toast) {\n return _c(\n \"Toast\",\n _vm._b({ key: toast.id }, \"Toast\", toast, false)\n )\n }),\n 1\n )\n ],\n 1\n )\n }),\n 0\n )\n};\nvar __vue_staticRenderFns__$9 = [];\n__vue_render__$9._withStripped = true;\n\n /* style */\n const __vue_inject_styles__$9 = undefined;\n /* scoped */\n const __vue_scope_id__$9 = undefined;\n /* module identifier */\n const __vue_module_identifier__$9 = undefined;\n /* functional template */\n const __vue_is_functional_template__$9 = false;\n /* style inject */\n \n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n const __vue_component__$9 = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__$9, staticRenderFns: __vue_staticRenderFns__$9 },\n __vue_inject_styles__$9,\n __vue_script__$9,\n __vue_scope_id__$9,\n __vue_is_functional_template__$9,\n __vue_module_identifier__$9,\n false,\n undefined,\n undefined,\n undefined\n );\n\nconst ToastInterface = (Vue, globalOptions = {}, mountContainer = true) => {\r\n const events = (globalOptions.eventBus = globalOptions.eventBus || new Vue());\r\n if (mountContainer) {\r\n const containerComponent = new (Vue.extend(__vue_component__$9))({\r\n el: document.createElement(\"div\"),\r\n propsData: globalOptions,\r\n });\r\n const onMounted = globalOptions.onMounted;\r\n if (!isUndefined(onMounted)) {\r\n onMounted(containerComponent);\r\n }\r\n }\r\n /**\r\n * Display a toast\r\n */\r\n const toast = (content, options) => {\r\n const props = Object.assign({}, { id: getId(), type: TYPE.DEFAULT }, options, {\r\n content,\r\n });\r\n events.$emit(EVENTS.ADD, props);\r\n return props.id;\r\n };\r\n /**\r\n * Clear all toasts\r\n */\r\n toast.clear = () => events.$emit(EVENTS.CLEAR);\r\n /**\r\n * Update Plugin Defaults\r\n */\r\n toast.updateDefaults = (update) => {\r\n events.$emit(EVENTS.UPDATE_DEFAULTS, update);\r\n };\r\n /**\r\n * Dismiss toast specified by an id\r\n */\r\n toast.dismiss = (id) => {\r\n events.$emit(EVENTS.DISMISS, id);\r\n };\r\n function updateToast(id, { content, options }, create = false) {\r\n events.$emit(EVENTS.UPDATE, {\r\n id,\r\n options: Object.assign({}, options, { content }),\r\n create,\r\n });\r\n }\r\n toast.update = updateToast;\r\n /**\r\n * Display a success toast\r\n */\r\n toast.success = (content, options) => toast(content, Object.assign({}, options, { type: TYPE.SUCCESS }));\r\n /**\r\n * Display an info toast\r\n */\r\n toast.info = (content, options) => toast(content, Object.assign({}, options, { type: TYPE.INFO }));\r\n /**\r\n * Display an error toast\r\n */\r\n toast.error = (content, options) => toast(content, Object.assign({}, options, { type: TYPE.ERROR }));\r\n /**\r\n * Display a warning toast\r\n */\r\n toast.warning = (content, options) => toast(content, Object.assign({}, options, { type: TYPE.WARNING }));\r\n return toast;\r\n};\n\nfunction createToastInterface(optionsOrEventBus, Vue$1 = Vue) {\r\n const isVueInstance = (obj) => obj instanceof Vue$1;\r\n if (isVueInstance(optionsOrEventBus)) {\r\n return ToastInterface(Vue$1, { eventBus: optionsOrEventBus }, false);\r\n }\r\n return ToastInterface(Vue$1, optionsOrEventBus, true);\r\n}\r\nconst VueToastificationPlugin = (Vue, options) => {\r\n const toast = createToastInterface(options, Vue);\r\n Vue.$toast = toast;\r\n Vue.prototype.$toast = toast;\r\n};\n\nexport default VueToastificationPlugin;\nexport { POSITION, TYPE, createToastInterface };\n//# sourceMappingURL=index.js.map\n","/*!\n * Vue.js v2.6.14\n * (c) 2014-2021 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// These helpers produce better VM code in JS engines due to their\n// explicitness and function inlining.\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive.\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value, e.g., [object Object].\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar unicodeRegExp = /a-zA-Z\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i], vm);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n var haveExpectedTypes = expectedTypes.some(function (t) { return t; });\n if (!valid && haveExpectedTypes) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol|BigInt)$/;\n\nfunction assertType (value, type, vm) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n try {\n valid = value instanceof type;\n } catch (e) {\n warn('Invalid prop type: \"' + String(type) + '\" is not a constructor', vm);\n valid = false;\n }\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\nvar functionTypeCheckRE = /^\\s*function (\\w+)/;\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(functionTypeCheckRE);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n // check if we need to specify expected value\n if (\n expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n isExplicable(typeof value) &&\n !isBoolean(expectedType, receivedType)\n ) {\n message += \" with value \" + (styleValue(value, expectedType));\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + (styleValue(value, receivedType)) + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nvar EXPLICABLE_TYPES = ['string', 'number', 'boolean'];\nfunction isExplicable (value) {\n return EXPLICABLE_TYPES.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive$$1(vm, key, result[key]);\n }\n });\n toggleObserving(true);\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject)\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n // #6574 in case the inject object is observed...\n if (key === '__ob__') { continue }\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n if (!children || !children.length) {\n return {}\n }\n var slots = {};\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data && data.slot != null\n ) {\n var name = data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n (slots.default || (slots.default = [])).push(child);\n }\n }\n // ignore slots that contains only whitespace\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction normalizeScopedSlots (\n slots,\n normalSlots,\n prevSlots\n) {\n var res;\n var hasNormalSlots = Object.keys(normalSlots).length > 0;\n var isStable = slots ? !!slots.$stable : !hasNormalSlots;\n var key = slots && slots.$key;\n if (!slots) {\n res = {};\n } else if (slots._normalized) {\n // fast path 1: child component re-render only, parent did not change\n return slots._normalized\n } else if (\n isStable &&\n prevSlots &&\n prevSlots !== emptyObject &&\n key === prevSlots.$key &&\n !hasNormalSlots &&\n !prevSlots.$hasNormal\n ) {\n // fast path 2: stable scoped slots w/ no normal slots to proxy,\n // only need to normalize once\n return prevSlots\n } else {\n res = {};\n for (var key$1 in slots) {\n if (slots[key$1] && key$1[0] !== '$') {\n res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);\n }\n }\n }\n // expose normal slots on scopedSlots\n for (var key$2 in normalSlots) {\n if (!(key$2 in res)) {\n res[key$2] = proxyNormalSlot(normalSlots, key$2);\n }\n }\n // avoriaz seems to mock a non-extensible $scopedSlots object\n // and when that is passed down this would cause an error\n if (slots && Object.isExtensible(slots)) {\n (slots)._normalized = res;\n }\n def(res, '$stable', isStable);\n def(res, '$key', key);\n def(res, '$hasNormal', hasNormalSlots);\n return res\n}\n\nfunction normalizeScopedSlot(normalSlots, key, fn) {\n var normalized = function () {\n var res = arguments.length ? fn.apply(null, arguments) : fn({});\n res = res && typeof res === 'object' && !Array.isArray(res)\n ? [res] // single vnode\n : normalizeChildren(res);\n var vnode = res && res[0];\n return res && (\n !vnode ||\n (res.length === 1 && vnode.isComment && !isAsyncPlaceholder(vnode)) // #9658, #10391\n ) ? undefined\n : res\n };\n // this is a slot using the new v-slot syntax without scope. although it is\n // compiled as a scoped slot, render fn users would expect it to be present\n // on this.$slots because the usage is semantically a normal slot.\n if (fn.proxy) {\n Object.defineProperty(normalSlots, key, {\n get: normalized,\n enumerable: true,\n configurable: true\n });\n }\n return normalized\n}\n\nfunction proxyNormalSlot(slots, key) {\n return function () { return slots[key]; }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n if (hasSymbol && val[Symbol.iterator]) {\n ret = [];\n var iterator = val[Symbol.iterator]();\n var result = iterator.next();\n while (!result.done) {\n ret.push(render(result.value, ret.length));\n result = iterator.next();\n }\n } else {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n }\n if (!isDef(ret)) {\n ret = [];\n }\n (ret)._isVList = true;\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallbackRender,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) {\n // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn('slot v-bind without argument expects an Object', this);\n }\n props = extend(extend({}, bindObject), props);\n }\n nodes =\n scopedSlotFn(props) ||\n (typeof fallbackRender === 'function' ? fallbackRender() : fallbackRender);\n } else {\n nodes =\n this.$slots[name] ||\n (typeof fallbackRender === 'function' ? fallbackRender() : fallbackRender);\n }\n\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes)\n } else {\n return nodes\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\nfunction isKeyNotMatch (expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1\n } else {\n return expect !== actual\n }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInKeyCode,\n eventKeyName,\n builtInKeyName\n) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName)\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n return eventKeyCode === undefined\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n var camelizedKey = camelize(key);\n var hyphenatedKey = hyphenate(key);\n if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(\n this._renderProxy,\n null,\n this // for render fns generated for functional component templates\n );\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res,\n // the following are added in 2.6\n hasDynamicKeys,\n contentHashKey\n) {\n res = res || { $stable: !hasDynamicKeys };\n for (var i = 0; i < fns.length; i++) {\n var slot = fns[i];\n if (Array.isArray(slot)) {\n resolveScopedSlots(slot, res, hasDynamicKeys);\n } else if (slot) {\n // marker for reverse proxying v-slot without scope on this.$slots\n if (slot.proxy) {\n slot.fn.proxy = true;\n }\n res[slot.key] = slot.fn;\n }\n }\n if (contentHashKey) {\n (res).$key = contentHashKey;\n }\n return res\n}\n\n/* */\n\nfunction bindDynamicKeys (baseObj, values) {\n for (var i = 0; i < values.length; i += 2) {\n var key = values[i];\n if (typeof key === 'string' && key) {\n baseObj[values[i]] = values[i + 1];\n } else if (process.env.NODE_ENV !== 'production' && key !== '' && key !== null) {\n // null is a special value for explicitly removing a binding\n warn(\n (\"Invalid value for dynamic directive argument (expected string or null): \" + key),\n this\n );\n }\n }\n return baseObj\n}\n\n// helper to dynamically append modifier runtime markers to event names.\n// ensure only append when value is already string, otherwise it will be cast\n// to string and cause the type check to miss.\nfunction prependModifier (value, symbol) {\n return typeof value === 'string' ? symbol + value : value\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n target._d = bindDynamicKeys;\n target._p = prependModifier;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var this$1 = this;\n\n var options = Ctor.options;\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm;\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent);\n // $flow-disable-line\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent;\n // $flow-disable-line\n parent = parent._original;\n }\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () {\n if (!this$1.$slots) {\n normalizeScopedSlots(\n data.scopedSlots,\n this$1.$slots = resolveSlots(children, parent)\n );\n }\n return this$1.$slots\n };\n\n Object.defineProperty(this, 'scopedSlots', ({\n enumerable: true,\n get: function get () {\n return normalizeScopedSlots(data.scopedSlots, this.slots())\n }\n }));\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);\n }\n return res\n }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n if (process.env.NODE_ENV !== 'production') {\n (clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;\n }\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n return clone\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (vnode, hydrating) {\n if (\n vnode.componentInstance &&\n !vnode.componentInstance._isDestroyed &&\n vnode.data.keepAlive\n ) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // install component management hooks onto the placeholder node\n installComponentHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n // we know it's MountedComponentVNode but flow doesn't\n vnode,\n // activeInstance in lifecycle state\n parent\n) {\n var options = {\n _isComponent: true,\n _parentVnode: vnode,\n parent: parent\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n var hooks = data.hook || (data.hook = {});\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n var existing = hooks[key];\n var toMerge = componentVNodeHooks[key];\n if (existing !== toMerge && !(existing && existing._merged)) {\n hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;\n }\n }\n}\n\nfunction mergeHook$1 (f1, f2) {\n var merged = function (a, b) {\n // flow complains about extra args which is why we use any\n f1(a, b);\n f2(a, b);\n };\n merged._merged = true;\n return merged\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input'\n ;(data.attrs || (data.attrs = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n var existing = on[event];\n var callback = data.model.callback;\n if (isDef(existing)) {\n if (\n Array.isArray(existing)\n ? existing.indexOf(callback) === -1\n : existing !== callback\n ) {\n on[event] = [callback].concat(existing);\n }\n } else {\n on[event] = callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n if (process.env.NODE_ENV !== 'production' && isDef(data) && isDef(data.nativeOn) && data.tag !== 'component') {\n warn(\n (\"The .native modifier for v-on is only valid on components but it was used on <\" + tag + \">.\"),\n context\n );\n }\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (Array.isArray(vnode)) {\n return vnode\n } else if (isDef(vnode)) {\n if (isDef(ns)) { applyNS(vnode, ns); }\n if (isDef(data)) { registerDeepBindings(data); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (\n isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n if (isObject(data.class)) {\n traverse(data.class);\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null; // v-once cached trees\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nvar currentRenderingInstance = null;\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n if (_parentVnode) {\n vm.$scopedSlots = normalizeScopedSlots(\n _parentVnode.data.scopedSlots,\n vm.$slots,\n vm.$scopedSlots\n );\n }\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n // There's no need to maintain a stack because all render fns are called\n // separately from one another. Nested component's render fns are called\n // when parent component is patched.\n currentRenderingInstance = vm;\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production' && vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } finally {\n currentRenderingInstance = null;\n }\n // if the returned array contains only a single node, allow it\n if (Array.isArray(vnode) && vnode.length === 1) {\n vnode = vnode[0];\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n var owner = currentRenderingInstance;\n if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {\n // already pending\n factory.owners.push(owner);\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (owner && !isDef(factory.owners)) {\n var owners = factory.owners = [owner];\n var sync = true;\n var timerLoading = null;\n var timerTimeout = null\n\n ;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });\n\n var forceRender = function (renderCompleted) {\n for (var i = 0, l = owners.length; i < l; i++) {\n (owners[i]).$forceUpdate();\n }\n\n if (renderCompleted) {\n owners.length = 0;\n if (timerLoading !== null) {\n clearTimeout(timerLoading);\n timerLoading = null;\n }\n if (timerTimeout !== null) {\n clearTimeout(timerTimeout);\n timerTimeout = null;\n }\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender(true);\n } else {\n owners.length = 0;\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender(true);\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (isPromise(res)) {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isPromise(res.component)) {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n timerLoading = setTimeout(function () {\n timerLoading = null;\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender(false);\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n timerTimeout = setTimeout(function () {\n timerTimeout = null;\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn) {\n target.$on(event, fn);\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction createOnceHandler (event, fn) {\n var _target = target;\n return function onceHandler () {\n var res = fn.apply(null, arguments);\n if (res !== null) {\n _target.$off(event, onceHandler);\n }\n }\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);\n target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n vm.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {\n vm.$off(event[i$1], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (!fn) {\n vm._events[event] = null;\n return vm\n }\n // specific handler\n var cb;\n var i = cbs.length;\n while (i--) {\n cb = cbs[i];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i, 1);\n break\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n var info = \"event handler for \\\"\" + event + \"\\\"\";\n for (var i = 0, l = cbs.length; i < l; i++) {\n invokeWithErrorHandling(cbs[i], vm, args, vm, info);\n }\n }\n return vm\n };\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction setActiveInstance(vm) {\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n return function () {\n activeInstance = prevActiveInstance;\n }\n}\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var restoreActiveInstance = setActiveInstance(vm);\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n restoreActiveInstance();\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n new Watcher(vm, updateComponent, noop, {\n before: function before () {\n if (vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'beforeUpdate');\n }\n }\n }, true /* isRenderWatcher */);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren.\n\n // check if there are dynamic scopedSlots (hand-written or compiled but with\n // dynamic slot names). Static scoped slots compiled from template has the\n // \"$stable\" marker.\n var newScopedSlots = parentVnode.data.scopedSlots;\n var oldScopedSlots = vm.$scopedSlots;\n var hasDynamicScopedSlot = !!(\n (newScopedSlots && !newScopedSlots.$stable) ||\n (oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||\n (newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key) ||\n (!newScopedSlots && vm.$scopedSlots.$key)\n );\n\n // Any static slot children from the parent may have changed during parent's\n // update. Dynamic scoped slots may also have changed. In such cases, a forced\n // update is necessary to ensure correctness.\n var needsForceUpdate = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n hasDynamicScopedSlot\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n toggleObserving(true);\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n\n // resolve slots + force update if has children\n if (needsForceUpdate) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n var info = hook + \" hook\";\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n invokeWithErrorHandling(handlers[i], vm, null, vm, info);\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n popTarget();\n}\n\n/* */\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n// Async edge case #6566 requires saving the timestamp when event listeners are\n// attached. However, calling performance.now() has a perf overhead especially\n// if the page has thousands of event listeners. Instead, we take a timestamp\n// every time the scheduler flushes and use that for all event listeners\n// attached during that flush.\nvar currentFlushTimestamp = 0;\n\n// Async edge case fix requires storing an event listener's attach timestamp.\nvar getNow = Date.now;\n\n// Determine what event timestamp the browser is using. Annoyingly, the\n// timestamp can either be hi-res (relative to page load) or low-res\n// (relative to UNIX epoch), so in order to compare time we have to use the\n// same timestamp type when saving the flush timestamp.\n// All IE versions use low-res event timestamps, and have problematic clock\n// implementations (#9632)\nif (inBrowser && !isIE) {\n var performance = window.performance;\n if (\n performance &&\n typeof performance.now === 'function' &&\n getNow() > document.createEvent('Event').timeStamp\n ) {\n // if the event timestamp, although evaluated AFTER the Date.now(), is\n // smaller than it, it means the event is using a hi-res timestamp,\n // and we need to use the hi-res version for event listener timestamps as\n // well.\n getNow = function () { return performance.now(); };\n }\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n currentFlushTimestamp = getNow();\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n if (watcher.before) {\n watcher.before();\n }\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n flushSchedulerQueue();\n return\n }\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\n\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options,\n isRenderWatcher\n) {\n this.vm = vm;\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n this.before = options.before;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = noop;\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var i = this.deps.length;\n while (i--) {\n var dep = this.deps[i];\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n var info = \"callback for watcher \\\"\" + (this.expression) + \"\\\"\";\n invokeWithErrorHandling(this.cb, this.vm, [value, oldValue], this.vm, info);\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var i = this.deps.length;\n while (i--) {\n this.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this.deps[i].removeSub(this);\n }\n this.active = false;\n }\n};\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n if (!isRoot) {\n toggleObserving(false);\n }\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive$$1(props, key, value, function () {\n if (!isRoot && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive$$1(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n toggleObserving(true);\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n } finally {\n popTarget();\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n } else if (vm.$options.methods && key in vm.$options.methods) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a method.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : createGetterInvoker(userDef);\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : createGetterInvoker(userDef.get)\n : noop;\n sharedPropertyDefinition.set = userDef.set || noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction createGetterInvoker(fn) {\n return function computedGetter () {\n return fn.call(this, this)\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof methods[key] !== 'function') {\n warn(\n \"Method \\\"\" + key + \"\\\" has type \\\"\" + (typeof methods[key]) + \"\\\" in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n expOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function () {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n var info = \"callback for immediate watcher \\\"\" + (watcher.expression) + \"\\\"\";\n pushTarget();\n invokeWithErrorHandling(cb, vm, [watcher.value], vm, info);\n popTarget();\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$3++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = latest[key];\n }\n }\n return modified\n}\n\nfunction Vue (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production' && name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\n validateComponentName(id);\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\n\n\n\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var entry = cache[key];\n if (entry) {\n var name = entry.name;\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var entry = cache[key];\n if (entry && (!current || entry.tag !== current.tag)) {\n entry.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n methods: {\n cacheVNode: function cacheVNode() {\n var ref = this;\n var cache = ref.cache;\n var keys = ref.keys;\n var vnodeToCache = ref.vnodeToCache;\n var keyToCache = ref.keyToCache;\n if (vnodeToCache) {\n var tag = vnodeToCache.tag;\n var componentInstance = vnodeToCache.componentInstance;\n var componentOptions = vnodeToCache.componentOptions;\n cache[keyToCache] = {\n name: getComponentName(componentOptions),\n tag: tag,\n componentInstance: componentInstance,\n };\n keys.push(keyToCache);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n this.vnodeToCache = null;\n }\n }\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n for (var key in this.cache) {\n pruneCacheEntry(this.cache, key, this.keys);\n }\n },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this.cacheVNode();\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) { return matches(val, name); });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) { return !matches(val, name); });\n });\n },\n\n updated: function updated () {\n this.cacheVNode();\n },\n\n render: function render () {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n if (\n // not included\n (include && (!name || !matches(include, name))) ||\n // excluded\n (exclude && name && matches(exclude, name))\n ) {\n return vnode\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n // delay setting the cache until update\n this.vnodeToCache = vnode;\n this.keyToCache = key;\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode || (slot && slot[0])\n }\n};\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n};\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive$$1\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n // 2.6 explicit observable API\n Vue.observable = function (obj) {\n observe(obj);\n return obj\n };\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n});\n\nVue.version = '2.6.14';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isValidContentEditableValue = makeMap('events,caret,typing,plaintext-only');\n\nvar convertEnumeratedValue = function (key, value) {\n return isFalsyAttrValue(value) || value === 'false'\n ? 'false'\n // allow arbitrary string value for contenteditable\n : key === 'contenteditable' && isValidContentEditableValue(value)\n ? value\n : 'true'\n};\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode && childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode && parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignobject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setStyleScope (node, scopeId) {\n node.setAttribute(scopeId, '');\n}\n\nvar nodeOps = /*#__PURE__*/Object.freeze({\n createElement: createElement$1,\n createElementNS: createElementNS,\n createTextNode: createTextNode,\n createComment: createComment,\n insertBefore: insertBefore,\n removeChild: removeChild,\n appendChild: appendChild,\n parentNode: parentNode,\n nextSibling: nextSibling,\n tagName: tagName,\n setTextContent: setTextContent,\n setStyleScope: setStyleScope\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n};\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!isDef(key)) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key &&\n a.asyncFactory === b.asyncFactory && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n}\n\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove$$1 () {\n if (--remove$$1.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove$$1.listeners = listeners;\n return remove$$1\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n function isUnknownElement$$1 (vnode, inVPre) {\n return (\n !inVPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(vnode.tag)\n : ignore === vnode.tag\n })\n ) &&\n config.isUnknownElement(vnode.tag)\n )\n }\n\n var creatingElmInVPre = 0;\n\n function createElm (\n vnode,\n insertedVnodeQueue,\n parentElm,\n refElm,\n nested,\n ownerArray,\n index\n ) {\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // This vnode was used in a previous render!\n // now it's used as a new node, overwriting its elm would cause\n // potential patch errors down the road when it's used as an insertion\n // reference node. Instead, we clone the node on-demand before creating\n // associated DOM element for it.\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (process.env.NODE_ENV !== 'production') {\n if (data && data.pre) {\n creatingElmInVPre++;\n }\n if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n creatingElmInVPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n insert(parentElm, vnode.elm, refElm);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (nodeOps.parentNode(ref$$1) === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(children);\n }\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.fnScopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.fnContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(newCh);\n }\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n } else {\n vnodeToMove = oldCh[idxInOld];\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function checkDuplicateKeys (children) {\n var seenKeys = {};\n for (var i = 0; i < children.length; i++) {\n var vnode = children[i];\n var key = vnode.key;\n if (isDef(key)) {\n if (seenKeys[key]) {\n warn(\n (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n vnode.context\n );\n } else {\n seenKeys[key] = true;\n }\n }\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (\n oldVnode,\n vnode,\n insertedVnodeQueue,\n ownerArray,\n index,\n removeOnly\n ) {\n if (oldVnode === vnode) {\n return\n }\n\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // clone reused vnode\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(ch);\n }\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var hydrationBailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n // Note: style is excluded because it relies on initial clone for future\n // deep updates (#7063).\n var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n var i;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n inVPre = inVPre || (data && data.pre);\n vnode.elm = elm;\n\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.isAsyncPlaceholder = true;\n return true\n }\n // assert node match\n if (process.env.NODE_ENV !== 'production') {\n if (!assertNodeMatch(elm, vnode, inVPre)) {\n return false\n }\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n var fullInvoke = false;\n for (var key in data) {\n if (!isRenderedModule(key)) {\n fullInvoke = true;\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n if (!fullInvoke && data['class']) {\n // ensure collecting deps for deep class bindings for future updates\n traverse(data['class']);\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode, inVPre) {\n if (isDef(vnode.tag)) {\n return vnode.tag.indexOf('vue-component') === 0 || (\n !isUnknownElement$$1(vnode, inVPre) &&\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm)) {\n removeVnodes([oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n};\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n dir.oldArg = oldDir.arg;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n];\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur, vnode.data.pre);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value, isInPre) {\n if (isInPre || el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n ? 'true'\n : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, convertEnumeratedValue(key, value));\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n baseSetAttr(el, key, value);\n }\n}\n\nfunction baseSetAttr (el, key, value) {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // #7138: IE10 & 11 fires input event when setting placeholder on\n // <textarea>... block the first input event and remove the blocker\n // immediately.\n /* istanbul ignore if */\n if (\n isIE && !isIE9 &&\n el.tagName === 'TEXTAREA' &&\n key === 'placeholder' && value !== '' && !el.__ieph\n ) {\n var blocker = function (e) {\n e.stopImmediatePropagation();\n el.removeEventListener('input', blocker);\n };\n el.addEventListener('input', blocker);\n // $flow-disable-line\n el.__ieph = true; /* IE placeholder patched */\n }\n el.setAttribute(key, value);\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n};\n\n/* */\n\nfunction updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n};\n\n/* */\n\n/* */\n\n/* */\n\n/* */\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\n/* */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n /* istanbul ignore if */\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction createOnceHandler$1 (event, handler, capture) {\n var _target = target$1; // save current target element in closure\n return function onceHandler () {\n var res = handler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n }\n}\n\n// #9446: Firefox <= 53 (in particular, ESR 52) has incorrect Event.timeStamp\n// implementation and does not fire microtasks in between event propagation, so\n// safe to exclude.\nvar useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);\n\nfunction add$1 (\n name,\n handler,\n capture,\n passive\n) {\n // async edge case #6566: inner click event triggers patch, event handler\n // attached to outer element during patch, and triggered again. This\n // happens because browsers fire microtask ticks between event propagation.\n // the solution is simple: we save the timestamp when a handler is attached,\n // and the handler would only fire if the event passed to it was fired\n // AFTER it was attached.\n if (useMicrotaskFix) {\n var attachedTimestamp = currentFlushTimestamp;\n var original = handler;\n handler = original._wrapper = function (e) {\n if (\n // no bubbling, should always fire.\n // this is just a safety net in case event.timeStamp is unreliable in\n // certain weird environments...\n e.target === e.currentTarget ||\n // event is fired after handler attachment\n e.timeStamp >= attachedTimestamp ||\n // bail for environments that have buggy event.timeStamp implementations\n // #9462 iOS 9 bug: event.timeStamp is 0 after history.pushState\n // #9681 QtWebEngine event.timeStamp is negative value\n e.timeStamp <= 0 ||\n // #9448 bail if event is fired in another document in a multi-page\n // electron/nw.js app, since event.timeStamp will be using a different\n // starting reference\n e.target.ownerDocument !== document\n ) {\n return original.apply(this, arguments)\n }\n };\n }\n target$1.addEventListener(\n name,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n}\n\nfunction remove$2 (\n name,\n handler,\n capture,\n _target\n) {\n (_target || target$1).removeEventListener(\n name,\n handler._wrapper || handler,\n capture\n );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context);\n target$1 = undefined;\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n};\n\n/* */\n\nvar svgContainer;\n\nfunction updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (!(key in props)) {\n elm[key] = '';\n }\n }\n\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value' && elm.tagName !== 'PROGRESS') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else if (key === 'innerHTML' && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {\n // IE doesn't support innerHTML for SVG elements\n svgContainer = svgContainer || document.createElement('div');\n svgContainer.innerHTML = \"<svg>\" + cur + \"</svg>\";\n var svg = svgContainer.firstChild;\n while (elm.firstChild) {\n elm.removeChild(elm.firstChild);\n }\n while (svg.firstChild) {\n elm.appendChild(svg.firstChild);\n }\n } else if (\n // skip the update if old and new VDOM state is the same.\n // `value` is handled separately because the DOM value may be temporarily\n // out of sync with VDOM state due to focus, composition and modifiers.\n // This #4521 by skipping the unnecessary `checked` update.\n cur !== oldProps[key]\n ) {\n // some property updates can throw\n // e.g. `value` on <progress> w/ non-finite value\n try {\n elm[key] = cur;\n } catch (e) {}\n }\n }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n return (!elm.composing && (\n elm.tagName === 'OPTION' ||\n isNotInFocusAndDirty(elm, checkVal) ||\n isDirtyWithModifiers(elm, checkVal)\n ))\n}\n\nfunction isNotInFocusAndDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true;\n // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n try { notInFocus = document.activeElement !== elm; } catch (e) {}\n return notInFocus && elm.value !== checkVal\n}\n\nfunction isDirtyWithModifiers (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if (isDef(modifiers)) {\n if (modifiers.number) {\n return toNumber(value) !== toNumber(newVal)\n }\n if (modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n }\n return value !== newVal\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n};\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (\n childNode && childNode.data &&\n (styleData = normalizeStyleData(childNode.data))\n ) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n}\n\n/* */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(hyphenate(name), val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in emptyStyle)) {\n return prop\n }\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n if (name in emptyStyle) {\n return name\n }\n }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n};\n\n/* */\n\nvar whitespaceRE = /\\s+/;\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(whitespaceRE).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n cur = cur.trim();\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n}\n\n/* */\n\nfunction resolveTransition (def$$1) {\n if (!def$$1) {\n return\n }\n /* istanbul ignore else */\n if (typeof def$$1 === 'object') {\n var res = {};\n if (def$$1.css !== false) {\n extend(res, autoCssTransition(def$$1.name || 'v'));\n }\n extend(res, def$$1);\n return res\n } else if (typeof def$$1 === 'string') {\n return autoCssTransition(def$$1)\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n ? window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout\n : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass (el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n}\n\nfunction removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n el,\n expectedType,\n cb\n) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n // JSDOM may return undefined for transition properties\n var transitionDelays = (styles[transitionProp + 'Delay'] || '').split(', ');\n var transitionDurations = (styles[transitionProp + 'Duration'] || '').split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = (styles[animationProp + 'Delay'] || '').split(', ');\n var animationDurations = (styles[animationProp + 'Duration'] || '').split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n}\n\nfunction getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n}\n\n// Old versions of Chromium (below 61.0.3163.100) formats floating pointer numbers\n// in a locale-dependent way, using a comma instead of a dot.\n// If comma is not replaced with a dot, the input will be rounded down (i.e. acting\n// as a floor function) causing unexpected behaviors\nfunction toMs (s) {\n return Number(s.slice(0, -1).replace(',', '.')) * 1000\n}\n\n/* */\n\nfunction enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n context = transitionNode.context;\n transitionNode = transitionNode.parent;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode, 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n removeTransitionClass(el, startClass);\n if (!cb.cancelled) {\n addTransitionClass(el, toClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data) || el.nodeType !== 1) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb)) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show && el.parentNode) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled) {\n addTransitionClass(el, leaveToClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n}\n\nfunction isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n}\n\nfunction _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {};\n\nvar platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n];\n\n/* */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar directive = {\n inserted: function inserted (el, binding, vnode, oldVnode) {\n if (vnode.tag === 'select') {\n // #6903\n if (oldVnode.elm && !oldVnode.elm._vOptions) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n directive.componentUpdated(el, binding, vnode);\n });\n } else {\n setSelected(el, binding, vnode.context);\n }\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n};\n\nfunction setSelected (el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption (value, options) {\n return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n}\n\nfunction onCompositionStart (e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n\n/* */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n}\n\nvar show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (!value === !oldValue) { return }\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n if (transition$$1) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n};\n\nvar platformDirectives = {\n model: directive,\n show: show\n};\n\n/* */\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n}\n\nfunction extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n}\n\nfunction placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n}\n\nfunction hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n}\n\nfunction isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar isNotTextNode = function (c) { return c.tag || isAsyncPlaceholder(c); };\n\nvar isVShowDirective = function (d) { return d.name === 'show'; };\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$slots.default;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(isNotTextNode);\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (process.env.NODE_ENV !== 'production' &&\n mode && mode !== 'in-out' && mode !== 'out-in'\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? child.isComment\n ? id + 'comment'\n : id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(isVShowDirective)) {\n child.data.show = true;\n }\n\n if (\n oldChild &&\n oldChild.data &&\n !isSameChild(child, oldChild) &&\n !isAsyncPlaceholder(oldChild) &&\n // #6687 component root is a comment node\n !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)\n ) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data);\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild\n }\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n};\n\n/* */\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n props: props,\n\n beforeMount: function beforeMount () {\n var this$1 = this;\n\n var update = this._update;\n this._update = function (vnode, hydrating) {\n var restoreActiveInstance = setActiveInstance(this$1);\n // force removing pass\n this$1.__patch__(\n this$1._vnode,\n this$1.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this$1._vnode = this$1.kept;\n restoreActiveInstance();\n update.call(this$1, vnode, hydrating);\n };\n },\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else if (process.env.NODE_ENV !== 'production') {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n this._reflow = document.body.offsetHeight;\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (e && e.target !== el) {\n return\n }\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n /* istanbul ignore if */\n if (this._hasMove) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n};\n\nfunction callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n};\n\n/* */\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n setTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue);\n } else if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test'\n ) {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n config.productionTip !== false &&\n typeof console !== 'undefined'\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n }, 0);\n}\n\n/* */\n\nexport default Vue;\n","// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function installComponents (component, components) {\n var options = typeof component.exports === 'function'\n ? component.exports.extendOptions\n : component.options\n\n if (typeof component.exports === 'function') {\n options.components = component.exports.options.components\n }\n\n options.components = options.components || {}\n\n for (var i in components) {\n options.components[i] = options.components[i] || components[i]\n }\n}\n","/*!\n * vuex v3.6.2\n * (c) 2021 Evan You\n * @license MIT\n */\nfunction applyMixin (Vue) {\n var version = Number(Vue.version.split('.')[0]);\n\n if (version >= 2) {\n Vue.mixin({ beforeCreate: vuexInit });\n } else {\n // override init and inject vuex init procedure\n // for 1.x backwards compatibility.\n var _init = Vue.prototype._init;\n Vue.prototype._init = function (options) {\n if ( options === void 0 ) options = {};\n\n options.init = options.init\n ? [vuexInit].concat(options.init)\n : vuexInit;\n _init.call(this, options);\n };\n }\n\n /**\n * Vuex init hook, injected into each instances init hooks list.\n */\n\n function vuexInit () {\n var options = this.$options;\n // store injection\n if (options.store) {\n this.$store = typeof options.store === 'function'\n ? options.store()\n : options.store;\n } else if (options.parent && options.parent.$store) {\n this.$store = options.parent.$store;\n }\n }\n}\n\nvar target = typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {};\nvar devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\nfunction devtoolPlugin (store) {\n if (!devtoolHook) { return }\n\n store._devtoolHook = devtoolHook;\n\n devtoolHook.emit('vuex:init', store);\n\n devtoolHook.on('vuex:travel-to-state', function (targetState) {\n store.replaceState(targetState);\n });\n\n store.subscribe(function (mutation, state) {\n devtoolHook.emit('vuex:mutation', mutation, state);\n }, { prepend: true });\n\n store.subscribeAction(function (action, state) {\n devtoolHook.emit('vuex:action', action, state);\n }, { prepend: true });\n}\n\n/**\n * Get the first item that pass the test\n * by second argument function\n *\n * @param {Array} list\n * @param {Function} f\n * @return {*}\n */\nfunction find (list, f) {\n return list.filter(f)[0]\n}\n\n/**\n * Deep copy the given object considering circular structure.\n * This function caches all nested objects and its copies.\n * If it detects circular structure, use cached copy to avoid infinite loop.\n *\n * @param {*} obj\n * @param {Array<Object>} cache\n * @return {*}\n */\nfunction deepCopy (obj, cache) {\n if ( cache === void 0 ) cache = [];\n\n // just return if obj is immutable value\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n // if obj is hit, it is in circular structure\n var hit = find(cache, function (c) { return c.original === obj; });\n if (hit) {\n return hit.copy\n }\n\n var copy = Array.isArray(obj) ? [] : {};\n // put the copy into cache at first\n // because we want to refer it in recursive deepCopy\n cache.push({\n original: obj,\n copy: copy\n });\n\n Object.keys(obj).forEach(function (key) {\n copy[key] = deepCopy(obj[key], cache);\n });\n\n return copy\n}\n\n/**\n * forEach for object\n */\nfunction forEachValue (obj, fn) {\n Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });\n}\n\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\nfunction isPromise (val) {\n return val && typeof val.then === 'function'\n}\n\nfunction assert (condition, msg) {\n if (!condition) { throw new Error((\"[vuex] \" + msg)) }\n}\n\nfunction partial (fn, arg) {\n return function () {\n return fn(arg)\n }\n}\n\n// Base data struct for store's module, package with some attribute and method\nvar Module = function Module (rawModule, runtime) {\n this.runtime = runtime;\n // Store some children item\n this._children = Object.create(null);\n // Store the origin module object which passed by programmer\n this._rawModule = rawModule;\n var rawState = rawModule.state;\n\n // Store the origin module's state\n this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};\n};\n\nvar prototypeAccessors = { namespaced: { configurable: true } };\n\nprototypeAccessors.namespaced.get = function () {\n return !!this._rawModule.namespaced\n};\n\nModule.prototype.addChild = function addChild (key, module) {\n this._children[key] = module;\n};\n\nModule.prototype.removeChild = function removeChild (key) {\n delete this._children[key];\n};\n\nModule.prototype.getChild = function getChild (key) {\n return this._children[key]\n};\n\nModule.prototype.hasChild = function hasChild (key) {\n return key in this._children\n};\n\nModule.prototype.update = function update (rawModule) {\n this._rawModule.namespaced = rawModule.namespaced;\n if (rawModule.actions) {\n this._rawModule.actions = rawModule.actions;\n }\n if (rawModule.mutations) {\n this._rawModule.mutations = rawModule.mutations;\n }\n if (rawModule.getters) {\n this._rawModule.getters = rawModule.getters;\n }\n};\n\nModule.prototype.forEachChild = function forEachChild (fn) {\n forEachValue(this._children, fn);\n};\n\nModule.prototype.forEachGetter = function forEachGetter (fn) {\n if (this._rawModule.getters) {\n forEachValue(this._rawModule.getters, fn);\n }\n};\n\nModule.prototype.forEachAction = function forEachAction (fn) {\n if (this._rawModule.actions) {\n forEachValue(this._rawModule.actions, fn);\n }\n};\n\nModule.prototype.forEachMutation = function forEachMutation (fn) {\n if (this._rawModule.mutations) {\n forEachValue(this._rawModule.mutations, fn);\n }\n};\n\nObject.defineProperties( Module.prototype, prototypeAccessors );\n\nvar ModuleCollection = function ModuleCollection (rawRootModule) {\n // register root module (Vuex.Store options)\n this.register([], rawRootModule, false);\n};\n\nModuleCollection.prototype.get = function get (path) {\n return path.reduce(function (module, key) {\n return module.getChild(key)\n }, this.root)\n};\n\nModuleCollection.prototype.getNamespace = function getNamespace (path) {\n var module = this.root;\n return path.reduce(function (namespace, key) {\n module = module.getChild(key);\n return namespace + (module.namespaced ? key + '/' : '')\n }, '')\n};\n\nModuleCollection.prototype.update = function update$1 (rawRootModule) {\n update([], this.root, rawRootModule);\n};\n\nModuleCollection.prototype.register = function register (path, rawModule, runtime) {\n var this$1 = this;\n if ( runtime === void 0 ) runtime = true;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, rawModule);\n }\n\n var newModule = new Module(rawModule, runtime);\n if (path.length === 0) {\n this.root = newModule;\n } else {\n var parent = this.get(path.slice(0, -1));\n parent.addChild(path[path.length - 1], newModule);\n }\n\n // register nested modules\n if (rawModule.modules) {\n forEachValue(rawModule.modules, function (rawChildModule, key) {\n this$1.register(path.concat(key), rawChildModule, runtime);\n });\n }\n};\n\nModuleCollection.prototype.unregister = function unregister (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n var child = parent.getChild(key);\n\n if (!child) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to unregister module '\" + key + \"', which is \" +\n \"not registered\"\n );\n }\n return\n }\n\n if (!child.runtime) {\n return\n }\n\n parent.removeChild(key);\n};\n\nModuleCollection.prototype.isRegistered = function isRegistered (path) {\n var parent = this.get(path.slice(0, -1));\n var key = path[path.length - 1];\n\n if (parent) {\n return parent.hasChild(key)\n }\n\n return false\n};\n\nfunction update (path, targetModule, newModule) {\n if ((process.env.NODE_ENV !== 'production')) {\n assertRawModule(path, newModule);\n }\n\n // update target module\n targetModule.update(newModule);\n\n // update nested modules\n if (newModule.modules) {\n for (var key in newModule.modules) {\n if (!targetModule.getChild(key)) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\n \"[vuex] trying to add a new module '\" + key + \"' on hot reloading, \" +\n 'manual reload is needed'\n );\n }\n return\n }\n update(\n path.concat(key),\n targetModule.getChild(key),\n newModule.modules[key]\n );\n }\n }\n}\n\nvar functionAssert = {\n assert: function (value) { return typeof value === 'function'; },\n expected: 'function'\n};\n\nvar objectAssert = {\n assert: function (value) { return typeof value === 'function' ||\n (typeof value === 'object' && typeof value.handler === 'function'); },\n expected: 'function or object with \"handler\" function'\n};\n\nvar assertTypes = {\n getters: functionAssert,\n mutations: functionAssert,\n actions: objectAssert\n};\n\nfunction assertRawModule (path, rawModule) {\n Object.keys(assertTypes).forEach(function (key) {\n if (!rawModule[key]) { return }\n\n var assertOptions = assertTypes[key];\n\n forEachValue(rawModule[key], function (value, type) {\n assert(\n assertOptions.assert(value),\n makeAssertionMessage(path, key, type, value, assertOptions.expected)\n );\n });\n });\n}\n\nfunction makeAssertionMessage (path, key, type, value, expected) {\n var buf = key + \" should be \" + expected + \" but \\\"\" + key + \".\" + type + \"\\\"\";\n if (path.length > 0) {\n buf += \" in module \\\"\" + (path.join('.')) + \"\\\"\";\n }\n buf += \" is \" + (JSON.stringify(value)) + \".\";\n return buf\n}\n\nvar Vue; // bind on install\n\nvar Store = function Store (options) {\n var this$1 = this;\n if ( options === void 0 ) options = {};\n\n // Auto install if it is not done yet and `window` has `Vue`.\n // To allow users to avoid auto-installation in some cases,\n // this code should be placed here. See #731\n if (!Vue && typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Vue, \"must call Vue.use(Vuex) before creating a store instance.\");\n assert(typeof Promise !== 'undefined', \"vuex requires a Promise polyfill in this browser.\");\n assert(this instanceof Store, \"store must be called with the new operator.\");\n }\n\n var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];\n var strict = options.strict; if ( strict === void 0 ) strict = false;\n\n // store internal state\n this._committing = false;\n this._actions = Object.create(null);\n this._actionSubscribers = [];\n this._mutations = Object.create(null);\n this._wrappedGetters = Object.create(null);\n this._modules = new ModuleCollection(options);\n this._modulesNamespaceMap = Object.create(null);\n this._subscribers = [];\n this._watcherVM = new Vue();\n this._makeLocalGettersCache = Object.create(null);\n\n // bind commit and dispatch to self\n var store = this;\n var ref = this;\n var dispatch = ref.dispatch;\n var commit = ref.commit;\n this.dispatch = function boundDispatch (type, payload) {\n return dispatch.call(store, type, payload)\n };\n this.commit = function boundCommit (type, payload, options) {\n return commit.call(store, type, payload, options)\n };\n\n // strict mode\n this.strict = strict;\n\n var state = this._modules.root.state;\n\n // init root module.\n // this also recursively registers all sub-modules\n // and collects all module getters inside this._wrappedGetters\n installModule(this, state, [], this._modules.root);\n\n // initialize the store vm, which is responsible for the reactivity\n // (also registers _wrappedGetters as computed properties)\n resetStoreVM(this, state);\n\n // apply plugins\n plugins.forEach(function (plugin) { return plugin(this$1); });\n\n var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;\n if (useDevtools) {\n devtoolPlugin(this);\n }\n};\n\nvar prototypeAccessors$1 = { state: { configurable: true } };\n\nprototypeAccessors$1.state.get = function () {\n return this._vm._data.$$state\n};\n\nprototypeAccessors$1.state.set = function (v) {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(false, \"use store.replaceState() to explicit replace store state.\");\n }\n};\n\nStore.prototype.commit = function commit (_type, _payload, _options) {\n var this$1 = this;\n\n // check object-style commit\n var ref = unifyObjectStyle(_type, _payload, _options);\n var type = ref.type;\n var payload = ref.payload;\n var options = ref.options;\n\n var mutation = { type: type, payload: payload };\n var entry = this._mutations[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown mutation type: \" + type));\n }\n return\n }\n this._withCommit(function () {\n entry.forEach(function commitIterator (handler) {\n handler(payload);\n });\n });\n\n this._subscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .forEach(function (sub) { return sub(mutation, this$1.state); });\n\n if (\n (process.env.NODE_ENV !== 'production') &&\n options && options.silent\n ) {\n console.warn(\n \"[vuex] mutation type: \" + type + \". Silent option has been removed. \" +\n 'Use the filter functionality in the vue-devtools'\n );\n }\n};\n\nStore.prototype.dispatch = function dispatch (_type, _payload) {\n var this$1 = this;\n\n // check object-style dispatch\n var ref = unifyObjectStyle(_type, _payload);\n var type = ref.type;\n var payload = ref.payload;\n\n var action = { type: type, payload: payload };\n var entry = this._actions[type];\n if (!entry) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] unknown action type: \" + type));\n }\n return\n }\n\n try {\n this._actionSubscribers\n .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe\n .filter(function (sub) { return sub.before; })\n .forEach(function (sub) { return sub.before(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in before action subscribers: \");\n console.error(e);\n }\n }\n\n var result = entry.length > 1\n ? Promise.all(entry.map(function (handler) { return handler(payload); }))\n : entry[0](payload);\n\n return new Promise(function (resolve, reject) {\n result.then(function (res) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.after; })\n .forEach(function (sub) { return sub.after(action, this$1.state); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in after action subscribers: \");\n console.error(e);\n }\n }\n resolve(res);\n }, function (error) {\n try {\n this$1._actionSubscribers\n .filter(function (sub) { return sub.error; })\n .forEach(function (sub) { return sub.error(action, this$1.state, error); });\n } catch (e) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.warn(\"[vuex] error in error action subscribers: \");\n console.error(e);\n }\n }\n reject(error);\n });\n })\n};\n\nStore.prototype.subscribe = function subscribe (fn, options) {\n return genericSubscribe(fn, this._subscribers, options)\n};\n\nStore.prototype.subscribeAction = function subscribeAction (fn, options) {\n var subs = typeof fn === 'function' ? { before: fn } : fn;\n return genericSubscribe(subs, this._actionSubscribers, options)\n};\n\nStore.prototype.watch = function watch (getter, cb, options) {\n var this$1 = this;\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof getter === 'function', \"store.watch only accepts a function.\");\n }\n return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)\n};\n\nStore.prototype.replaceState = function replaceState (state) {\n var this$1 = this;\n\n this._withCommit(function () {\n this$1._vm._data.$$state = state;\n });\n};\n\nStore.prototype.registerModule = function registerModule (path, rawModule, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n assert(path.length > 0, 'cannot register the root module by using registerModule.');\n }\n\n this._modules.register(path, rawModule);\n installModule(this, this.state, path, this._modules.get(path), options.preserveState);\n // reset store to update getters...\n resetStoreVM(this, this.state);\n};\n\nStore.prototype.unregisterModule = function unregisterModule (path) {\n var this$1 = this;\n\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n this._modules.unregister(path);\n this._withCommit(function () {\n var parentState = getNestedState(this$1.state, path.slice(0, -1));\n Vue.delete(parentState, path[path.length - 1]);\n });\n resetStore(this);\n};\n\nStore.prototype.hasModule = function hasModule (path) {\n if (typeof path === 'string') { path = [path]; }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(Array.isArray(path), \"module path must be a string or an Array.\");\n }\n\n return this._modules.isRegistered(path)\n};\n\nStore.prototype.hotUpdate = function hotUpdate (newOptions) {\n this._modules.update(newOptions);\n resetStore(this, true);\n};\n\nStore.prototype._withCommit = function _withCommit (fn) {\n var committing = this._committing;\n this._committing = true;\n fn();\n this._committing = committing;\n};\n\nObject.defineProperties( Store.prototype, prototypeAccessors$1 );\n\nfunction genericSubscribe (fn, subs, options) {\n if (subs.indexOf(fn) < 0) {\n options && options.prepend\n ? subs.unshift(fn)\n : subs.push(fn);\n }\n return function () {\n var i = subs.indexOf(fn);\n if (i > -1) {\n subs.splice(i, 1);\n }\n }\n}\n\nfunction resetStore (store, hot) {\n store._actions = Object.create(null);\n store._mutations = Object.create(null);\n store._wrappedGetters = Object.create(null);\n store._modulesNamespaceMap = Object.create(null);\n var state = store.state;\n // init all modules\n installModule(store, state, [], store._modules.root, true);\n // reset vm\n resetStoreVM(store, state, hot);\n}\n\nfunction resetStoreVM (store, state, hot) {\n var oldVm = store._vm;\n\n // bind store public getters\n store.getters = {};\n // reset local getters cache\n store._makeLocalGettersCache = Object.create(null);\n var wrappedGetters = store._wrappedGetters;\n var computed = {};\n forEachValue(wrappedGetters, function (fn, key) {\n // use computed to leverage its lazy-caching mechanism\n // direct inline function use will lead to closure preserving oldVm.\n // using partial to return function with only arguments preserved in closure environment.\n computed[key] = partial(fn, store);\n Object.defineProperty(store.getters, key, {\n get: function () { return store._vm[key]; },\n enumerable: true // for local getters\n });\n });\n\n // use a Vue instance to store the state tree\n // suppress warnings just in case the user has added\n // some funky global mixins\n var silent = Vue.config.silent;\n Vue.config.silent = true;\n store._vm = new Vue({\n data: {\n $$state: state\n },\n computed: computed\n });\n Vue.config.silent = silent;\n\n // enable strict mode for new vm\n if (store.strict) {\n enableStrictMode(store);\n }\n\n if (oldVm) {\n if (hot) {\n // dispatch changes in all subscribed watchers\n // to force getter re-evaluation for hot reloading.\n store._withCommit(function () {\n oldVm._data.$$state = null;\n });\n }\n Vue.nextTick(function () { return oldVm.$destroy(); });\n }\n}\n\nfunction installModule (store, rootState, path, module, hot) {\n var isRoot = !path.length;\n var namespace = store._modules.getNamespace(path);\n\n // register in namespace map\n if (module.namespaced) {\n if (store._modulesNamespaceMap[namespace] && (process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate namespace \" + namespace + \" for the namespaced module \" + (path.join('/'))));\n }\n store._modulesNamespaceMap[namespace] = module;\n }\n\n // set state\n if (!isRoot && !hot) {\n var parentState = getNestedState(rootState, path.slice(0, -1));\n var moduleName = path[path.length - 1];\n store._withCommit(function () {\n if ((process.env.NODE_ENV !== 'production')) {\n if (moduleName in parentState) {\n console.warn(\n (\"[vuex] state field \\\"\" + moduleName + \"\\\" was overridden by a module with the same name at \\\"\" + (path.join('.')) + \"\\\"\")\n );\n }\n }\n Vue.set(parentState, moduleName, module.state);\n });\n }\n\n var local = module.context = makeLocalContext(store, namespace, path);\n\n module.forEachMutation(function (mutation, key) {\n var namespacedType = namespace + key;\n registerMutation(store, namespacedType, mutation, local);\n });\n\n module.forEachAction(function (action, key) {\n var type = action.root ? key : namespace + key;\n var handler = action.handler || action;\n registerAction(store, type, handler, local);\n });\n\n module.forEachGetter(function (getter, key) {\n var namespacedType = namespace + key;\n registerGetter(store, namespacedType, getter, local);\n });\n\n module.forEachChild(function (child, key) {\n installModule(store, rootState, path.concat(key), child, hot);\n });\n}\n\n/**\n * make localized dispatch, commit, getters and state\n * if there is no namespace, just use root ones\n */\nfunction makeLocalContext (store, namespace, path) {\n var noNamespace = namespace === '';\n\n var local = {\n dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._actions[type]) {\n console.error((\"[vuex] unknown local action type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n return store.dispatch(type, payload)\n },\n\n commit: noNamespace ? store.commit : function (_type, _payload, _options) {\n var args = unifyObjectStyle(_type, _payload, _options);\n var payload = args.payload;\n var options = args.options;\n var type = args.type;\n\n if (!options || !options.root) {\n type = namespace + type;\n if ((process.env.NODE_ENV !== 'production') && !store._mutations[type]) {\n console.error((\"[vuex] unknown local mutation type: \" + (args.type) + \", global type: \" + type));\n return\n }\n }\n\n store.commit(type, payload, options);\n }\n };\n\n // getters and state object must be gotten lazily\n // because they will be changed by vm update\n Object.defineProperties(local, {\n getters: {\n get: noNamespace\n ? function () { return store.getters; }\n : function () { return makeLocalGetters(store, namespace); }\n },\n state: {\n get: function () { return getNestedState(store.state, path); }\n }\n });\n\n return local\n}\n\nfunction makeLocalGetters (store, namespace) {\n if (!store._makeLocalGettersCache[namespace]) {\n var gettersProxy = {};\n var splitPos = namespace.length;\n Object.keys(store.getters).forEach(function (type) {\n // skip if the target getter is not match this namespace\n if (type.slice(0, splitPos) !== namespace) { return }\n\n // extract local getter type\n var localType = type.slice(splitPos);\n\n // Add a port to the getters proxy.\n // Define as getter property because\n // we do not want to evaluate the getters in this time.\n Object.defineProperty(gettersProxy, localType, {\n get: function () { return store.getters[type]; },\n enumerable: true\n });\n });\n store._makeLocalGettersCache[namespace] = gettersProxy;\n }\n\n return store._makeLocalGettersCache[namespace]\n}\n\nfunction registerMutation (store, type, handler, local) {\n var entry = store._mutations[type] || (store._mutations[type] = []);\n entry.push(function wrappedMutationHandler (payload) {\n handler.call(store, local.state, payload);\n });\n}\n\nfunction registerAction (store, type, handler, local) {\n var entry = store._actions[type] || (store._actions[type] = []);\n entry.push(function wrappedActionHandler (payload) {\n var res = handler.call(store, {\n dispatch: local.dispatch,\n commit: local.commit,\n getters: local.getters,\n state: local.state,\n rootGetters: store.getters,\n rootState: store.state\n }, payload);\n if (!isPromise(res)) {\n res = Promise.resolve(res);\n }\n if (store._devtoolHook) {\n return res.catch(function (err) {\n store._devtoolHook.emit('vuex:error', err);\n throw err\n })\n } else {\n return res\n }\n });\n}\n\nfunction registerGetter (store, type, rawGetter, local) {\n if (store._wrappedGetters[type]) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error((\"[vuex] duplicate getter key: \" + type));\n }\n return\n }\n store._wrappedGetters[type] = function wrappedGetter (store) {\n return rawGetter(\n local.state, // local state\n local.getters, // local getters\n store.state, // root state\n store.getters // root getters\n )\n };\n}\n\nfunction enableStrictMode (store) {\n store._vm.$watch(function () { return this._data.$$state }, function () {\n if ((process.env.NODE_ENV !== 'production')) {\n assert(store._committing, \"do not mutate vuex store state outside mutation handlers.\");\n }\n }, { deep: true, sync: true });\n}\n\nfunction getNestedState (state, path) {\n return path.reduce(function (state, key) { return state[key]; }, state)\n}\n\nfunction unifyObjectStyle (type, payload, options) {\n if (isObject(type) && type.type) {\n options = payload;\n payload = type;\n type = type.type;\n }\n\n if ((process.env.NODE_ENV !== 'production')) {\n assert(typeof type === 'string', (\"expects string as the type, but found \" + (typeof type) + \".\"));\n }\n\n return { type: type, payload: payload, options: options }\n}\n\nfunction install (_Vue) {\n if (Vue && _Vue === Vue) {\n if ((process.env.NODE_ENV !== 'production')) {\n console.error(\n '[vuex] already installed. Vue.use(Vuex) should be called only once.'\n );\n }\n return\n }\n Vue = _Vue;\n applyMixin(Vue);\n}\n\n/**\n * Reduce the code which written in Vue.js for getting the state.\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.\n * @param {Object}\n */\nvar mapState = normalizeNamespace(function (namespace, states) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(states)) {\n console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(states).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedState () {\n var state = this.$store.state;\n var getters = this.$store.getters;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapState', namespace);\n if (!module) {\n return\n }\n state = module.context.state;\n getters = module.context.getters;\n }\n return typeof val === 'function'\n ? val.call(this, state, getters)\n : state[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for committing the mutation\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapMutations = normalizeNamespace(function (namespace, mutations) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(mutations)) {\n console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(mutations).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedMutation () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // Get the commit method from store\n var commit = this.$store.commit;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);\n if (!module) {\n return\n }\n commit = module.context.commit;\n }\n return typeof val === 'function'\n ? val.apply(this, [commit].concat(args))\n : commit.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for getting the getters\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} getters\n * @return {Object}\n */\nvar mapGetters = normalizeNamespace(function (namespace, getters) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(getters)) {\n console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(getters).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n // The namespace has been mutated by normalizeNamespace\n val = namespace + val;\n res[key] = function mappedGetter () {\n if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {\n return\n }\n if ((process.env.NODE_ENV !== 'production') && !(val in this.$store.getters)) {\n console.error((\"[vuex] unknown getter: \" + val));\n return\n }\n return this.$store.getters[val]\n };\n // mark vuex getter for devtools\n res[key].vuex = true;\n });\n return res\n});\n\n/**\n * Reduce the code which written in Vue.js for dispatch the action\n * @param {String} [namespace] - Module's namespace\n * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.\n * @return {Object}\n */\nvar mapActions = normalizeNamespace(function (namespace, actions) {\n var res = {};\n if ((process.env.NODE_ENV !== 'production') && !isValidMap(actions)) {\n console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');\n }\n normalizeMap(actions).forEach(function (ref) {\n var key = ref.key;\n var val = ref.val;\n\n res[key] = function mappedAction () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // get dispatch function from store\n var dispatch = this.$store.dispatch;\n if (namespace) {\n var module = getModuleByNamespace(this.$store, 'mapActions', namespace);\n if (!module) {\n return\n }\n dispatch = module.context.dispatch;\n }\n return typeof val === 'function'\n ? val.apply(this, [dispatch].concat(args))\n : dispatch.apply(this.$store, [val].concat(args))\n };\n });\n return res\n});\n\n/**\n * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object\n * @param {String} namespace\n * @return {Object}\n */\nvar createNamespacedHelpers = function (namespace) { return ({\n mapState: mapState.bind(null, namespace),\n mapGetters: mapGetters.bind(null, namespace),\n mapMutations: mapMutations.bind(null, namespace),\n mapActions: mapActions.bind(null, namespace)\n}); };\n\n/**\n * Normalize the map\n * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]\n * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]\n * @param {Array|Object} map\n * @return {Object}\n */\nfunction normalizeMap (map) {\n if (!isValidMap(map)) {\n return []\n }\n return Array.isArray(map)\n ? map.map(function (key) { return ({ key: key, val: key }); })\n : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })\n}\n\n/**\n * Validate whether given map is valid or not\n * @param {*} map\n * @return {Boolean}\n */\nfunction isValidMap (map) {\n return Array.isArray(map) || isObject(map)\n}\n\n/**\n * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.\n * @param {Function} fn\n * @return {Function}\n */\nfunction normalizeNamespace (fn) {\n return function (namespace, map) {\n if (typeof namespace !== 'string') {\n map = namespace;\n namespace = '';\n } else if (namespace.charAt(namespace.length - 1) !== '/') {\n namespace += '/';\n }\n return fn(namespace, map)\n }\n}\n\n/**\n * Search a special module from store by namespace. if module not exist, print error message.\n * @param {Object} store\n * @param {String} helper\n * @param {String} namespace\n * @return {Object}\n */\nfunction getModuleByNamespace (store, helper, namespace) {\n var module = store._modulesNamespaceMap[namespace];\n if ((process.env.NODE_ENV !== 'production') && !module) {\n console.error((\"[vuex] module namespace not found in \" + helper + \"(): \" + namespace));\n }\n return module\n}\n\n// Credits: borrowed code from fcomb/redux-logger\n\nfunction createLogger (ref) {\n if ( ref === void 0 ) ref = {};\n var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;\n var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };\n var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };\n var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };\n var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };\n var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };\n var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;\n var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;\n var logger = ref.logger; if ( logger === void 0 ) logger = console;\n\n return function (store) {\n var prevState = deepCopy(store.state);\n\n if (typeof logger === 'undefined') {\n return\n }\n\n if (logMutations) {\n store.subscribe(function (mutation, state) {\n var nextState = deepCopy(state);\n\n if (filter(mutation, prevState, nextState)) {\n var formattedTime = getFormattedTime();\n var formattedMutation = mutationTransformer(mutation);\n var message = \"mutation \" + (mutation.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));\n logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);\n logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));\n endMessage(logger);\n }\n\n prevState = nextState;\n });\n }\n\n if (logActions) {\n store.subscribeAction(function (action, state) {\n if (actionFilter(action, state)) {\n var formattedTime = getFormattedTime();\n var formattedAction = actionTransformer(action);\n var message = \"action \" + (action.type) + formattedTime;\n\n startMessage(logger, message, collapsed);\n logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);\n endMessage(logger);\n }\n });\n }\n }\n}\n\nfunction startMessage (logger, message, collapsed) {\n var startMessage = collapsed\n ? logger.groupCollapsed\n : logger.group;\n\n // render\n try {\n startMessage.call(logger, message);\n } catch (e) {\n logger.log(message);\n }\n}\n\nfunction endMessage (logger) {\n try {\n logger.groupEnd();\n } catch (e) {\n logger.log('—— log end ——');\n }\n}\n\nfunction getFormattedTime () {\n var time = new Date();\n return (\" @ \" + (pad(time.getHours(), 2)) + \":\" + (pad(time.getMinutes(), 2)) + \":\" + (pad(time.getSeconds(), 2)) + \".\" + (pad(time.getMilliseconds(), 3)))\n}\n\nfunction repeat (str, times) {\n return (new Array(times + 1)).join(str)\n}\n\nfunction pad (num, maxLength) {\n return repeat('0', maxLength - num.toString().length) + num\n}\n\nvar index = {\n Store: Store,\n install: install,\n version: '3.6.2',\n mapState: mapState,\n mapMutations: mapMutations,\n mapGetters: mapGetters,\n mapActions: mapActions,\n createNamespacedHelpers: createNamespacedHelpers,\n createLogger: createLogger\n};\n\nexport default index;\nexport { Store, createLogger, createNamespacedHelpers, install, mapActions, mapGetters, mapMutations, mapState };\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","import { Component, ComponentContainer } from '@firebase/component';\nimport { Logger, setUserLogHandler, setLogLevel as setLogLevel$1 } from '@firebase/logger';\nimport { ErrorFactory, deepEqual, base64urlEncodeWithoutPadding, isIndexedDBAvailable, validateIndexedDBOpenable } from '@firebase/util';\nexport { FirebaseError } from '@firebase/util';\nimport { openDB } from 'idb';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass PlatformLoggerServiceImpl {\r\n constructor(container) {\r\n this.container = container;\r\n }\r\n // In initial implementation, this will be called by installations on\r\n // auth token refresh, and installations will send this string.\r\n getPlatformInfoString() {\r\n const providers = this.container.getProviders();\r\n // Loop through providers and get library/version pairs from any that are\r\n // version components.\r\n return providers\r\n .map(provider => {\r\n if (isVersionServiceProvider(provider)) {\r\n const service = provider.getImmediate();\r\n return `${service.library}/${service.version}`;\r\n }\r\n else {\r\n return null;\r\n }\r\n })\r\n .filter(logString => logString)\r\n .join(' ');\r\n }\r\n}\r\n/**\r\n *\r\n * @param provider check if this provider provides a VersionService\r\n *\r\n * NOTE: Using Provider<'app-version'> is a hack to indicate that the provider\r\n * provides VersionService. The provider is not necessarily a 'app-version'\r\n * provider.\r\n */\r\nfunction isVersionServiceProvider(provider) {\r\n const component = provider.getComponent();\r\n return (component === null || component === void 0 ? void 0 : component.type) === \"VERSION\" /* VERSION */;\r\n}\n\nconst name$o = \"@firebase/app\";\nconst version$1 = \"0.7.25\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst logger = new Logger('@firebase/app');\n\nconst name$n = \"@firebase/app-compat\";\n\nconst name$m = \"@firebase/analytics-compat\";\n\nconst name$l = \"@firebase/analytics\";\n\nconst name$k = \"@firebase/app-check-compat\";\n\nconst name$j = \"@firebase/app-check\";\n\nconst name$i = \"@firebase/auth\";\n\nconst name$h = \"@firebase/auth-compat\";\n\nconst name$g = \"@firebase/database\";\n\nconst name$f = \"@firebase/database-compat\";\n\nconst name$e = \"@firebase/functions\";\n\nconst name$d = \"@firebase/functions-compat\";\n\nconst name$c = \"@firebase/installations\";\n\nconst name$b = \"@firebase/installations-compat\";\n\nconst name$a = \"@firebase/messaging\";\n\nconst name$9 = \"@firebase/messaging-compat\";\n\nconst name$8 = \"@firebase/performance\";\n\nconst name$7 = \"@firebase/performance-compat\";\n\nconst name$6 = \"@firebase/remote-config\";\n\nconst name$5 = \"@firebase/remote-config-compat\";\n\nconst name$4 = \"@firebase/storage\";\n\nconst name$3 = \"@firebase/storage-compat\";\n\nconst name$2 = \"@firebase/firestore\";\n\nconst name$1 = \"@firebase/firestore-compat\";\n\nconst name = \"firebase\";\nconst version = \"9.8.2\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The default app name\r\n *\r\n * @internal\r\n */\r\nconst DEFAULT_ENTRY_NAME = '[DEFAULT]';\r\nconst PLATFORM_LOG_STRING = {\r\n [name$o]: 'fire-core',\r\n [name$n]: 'fire-core-compat',\r\n [name$l]: 'fire-analytics',\r\n [name$m]: 'fire-analytics-compat',\r\n [name$j]: 'fire-app-check',\r\n [name$k]: 'fire-app-check-compat',\r\n [name$i]: 'fire-auth',\r\n [name$h]: 'fire-auth-compat',\r\n [name$g]: 'fire-rtdb',\r\n [name$f]: 'fire-rtdb-compat',\r\n [name$e]: 'fire-fn',\r\n [name$d]: 'fire-fn-compat',\r\n [name$c]: 'fire-iid',\r\n [name$b]: 'fire-iid-compat',\r\n [name$a]: 'fire-fcm',\r\n [name$9]: 'fire-fcm-compat',\r\n [name$8]: 'fire-perf',\r\n [name$7]: 'fire-perf-compat',\r\n [name$6]: 'fire-rc',\r\n [name$5]: 'fire-rc-compat',\r\n [name$4]: 'fire-gcs',\r\n [name$3]: 'fire-gcs-compat',\r\n [name$2]: 'fire-fst',\r\n [name$1]: 'fire-fst-compat',\r\n 'fire-js': 'fire-js',\r\n [name]: 'fire-js-all'\r\n};\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @internal\r\n */\r\nconst _apps = new Map();\r\n/**\r\n * Registered components.\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst _components = new Map();\r\n/**\r\n * @param component - the component being added to this app's container\r\n *\r\n * @internal\r\n */\r\nfunction _addComponent(app, component) {\r\n try {\r\n app.container.addComponent(component);\r\n }\r\n catch (e) {\r\n logger.debug(`Component ${component.name} failed to register with FirebaseApp ${app.name}`, e);\r\n }\r\n}\r\n/**\r\n *\r\n * @internal\r\n */\r\nfunction _addOrOverwriteComponent(app, component) {\r\n app.container.addOrOverwriteComponent(component);\r\n}\r\n/**\r\n *\r\n * @param component - the component to register\r\n * @returns whether or not the component is registered successfully\r\n *\r\n * @internal\r\n */\r\nfunction _registerComponent(component) {\r\n const componentName = component.name;\r\n if (_components.has(componentName)) {\r\n logger.debug(`There were multiple attempts to register component ${componentName}.`);\r\n return false;\r\n }\r\n _components.set(componentName, component);\r\n // add the component to existing app instances\r\n for (const app of _apps.values()) {\r\n _addComponent(app, component);\r\n }\r\n return true;\r\n}\r\n/**\r\n *\r\n * @param app - FirebaseApp instance\r\n * @param name - service name\r\n *\r\n * @returns the provider for the service with the matching name\r\n *\r\n * @internal\r\n */\r\nfunction _getProvider(app, name) {\r\n const heartbeatController = app.container\r\n .getProvider('heartbeat')\r\n .getImmediate({ optional: true });\r\n if (heartbeatController) {\r\n void heartbeatController.triggerHeartbeat();\r\n }\r\n return app.container.getProvider(name);\r\n}\r\n/**\r\n *\r\n * @param app - FirebaseApp instance\r\n * @param name - service name\r\n * @param instanceIdentifier - service instance identifier in case the service supports multiple instances\r\n *\r\n * @internal\r\n */\r\nfunction _removeServiceInstance(app, name, instanceIdentifier = DEFAULT_ENTRY_NAME) {\r\n _getProvider(app, name).clearInstance(instanceIdentifier);\r\n}\r\n/**\r\n * Test only\r\n *\r\n * @internal\r\n */\r\nfunction _clearComponents() {\r\n _components.clear();\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERRORS = {\r\n [\"no-app\" /* NO_APP */]: \"No Firebase App '{$appName}' has been created - \" +\r\n 'call Firebase App.initializeApp()',\r\n [\"bad-app-name\" /* BAD_APP_NAME */]: \"Illegal App name: '{$appName}\",\r\n [\"duplicate-app\" /* DUPLICATE_APP */]: \"Firebase App named '{$appName}' already exists with different options or config\",\r\n [\"app-deleted\" /* APP_DELETED */]: \"Firebase App named '{$appName}' already deleted\",\r\n [\"invalid-app-argument\" /* INVALID_APP_ARGUMENT */]: 'firebase.{$appName}() takes either no argument or a ' +\r\n 'Firebase App instance.',\r\n [\"invalid-log-argument\" /* INVALID_LOG_ARGUMENT */]: 'First argument to `onLog` must be null or a function.',\r\n [\"storage-open\" /* STORAGE_OPEN */]: 'Error thrown when opening storage. Original error: {$originalErrorMessage}.',\r\n [\"storage-get\" /* STORAGE_GET */]: 'Error thrown when reading from storage. Original error: {$originalErrorMessage}.',\r\n [\"storage-set\" /* STORAGE_WRITE */]: 'Error thrown when writing to storage. Original error: {$originalErrorMessage}.',\r\n [\"storage-delete\" /* STORAGE_DELETE */]: 'Error thrown when deleting from storage. Original error: {$originalErrorMessage}.'\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory('app', 'Firebase', ERRORS);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass FirebaseAppImpl {\r\n constructor(options, config, container) {\r\n this._isDeleted = false;\r\n this._options = Object.assign({}, options);\r\n this._config = Object.assign({}, config);\r\n this._name = config.name;\r\n this._automaticDataCollectionEnabled =\r\n config.automaticDataCollectionEnabled;\r\n this._container = container;\r\n this.container.addComponent(new Component('app', () => this, \"PUBLIC\" /* PUBLIC */));\r\n }\r\n get automaticDataCollectionEnabled() {\r\n this.checkDestroyed();\r\n return this._automaticDataCollectionEnabled;\r\n }\r\n set automaticDataCollectionEnabled(val) {\r\n this.checkDestroyed();\r\n this._automaticDataCollectionEnabled = val;\r\n }\r\n get name() {\r\n this.checkDestroyed();\r\n return this._name;\r\n }\r\n get options() {\r\n this.checkDestroyed();\r\n return this._options;\r\n }\r\n get config() {\r\n this.checkDestroyed();\r\n return this._config;\r\n }\r\n get container() {\r\n return this._container;\r\n }\r\n get isDeleted() {\r\n return this._isDeleted;\r\n }\r\n set isDeleted(val) {\r\n this._isDeleted = val;\r\n }\r\n /**\r\n * This function will throw an Error if the App has already been deleted -\r\n * use before performing API actions on the App.\r\n */\r\n checkDestroyed() {\r\n if (this.isDeleted) {\r\n throw ERROR_FACTORY.create(\"app-deleted\" /* APP_DELETED */, { appName: this._name });\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The current SDK version.\r\n *\r\n * @public\r\n */\r\nconst SDK_VERSION = version;\r\nfunction initializeApp(options, rawConfig = {}) {\r\n if (typeof rawConfig !== 'object') {\r\n const name = rawConfig;\r\n rawConfig = { name };\r\n }\r\n const config = Object.assign({ name: DEFAULT_ENTRY_NAME, automaticDataCollectionEnabled: false }, rawConfig);\r\n const name = config.name;\r\n if (typeof name !== 'string' || !name) {\r\n throw ERROR_FACTORY.create(\"bad-app-name\" /* BAD_APP_NAME */, {\r\n appName: String(name)\r\n });\r\n }\r\n const existingApp = _apps.get(name);\r\n if (existingApp) {\r\n // return the existing app if options and config deep equal the ones in the existing app.\r\n if (deepEqual(options, existingApp.options) &&\r\n deepEqual(config, existingApp.config)) {\r\n return existingApp;\r\n }\r\n else {\r\n throw ERROR_FACTORY.create(\"duplicate-app\" /* DUPLICATE_APP */, { appName: name });\r\n }\r\n }\r\n const container = new ComponentContainer(name);\r\n for (const component of _components.values()) {\r\n container.addComponent(component);\r\n }\r\n const newApp = new FirebaseAppImpl(options, config, container);\r\n _apps.set(name, newApp);\r\n return newApp;\r\n}\r\n/**\r\n * Retrieves a {@link @firebase/app#FirebaseApp} instance.\r\n *\r\n * When called with no arguments, the default app is returned. When an app name\r\n * is provided, the app corresponding to that name is returned.\r\n *\r\n * An exception is thrown if the app being retrieved has not yet been\r\n * initialized.\r\n *\r\n * @example\r\n * ```javascript\r\n * // Return the default app\r\n * const app = getApp();\r\n * ```\r\n *\r\n * @example\r\n * ```javascript\r\n * // Return a named app\r\n * const otherApp = getApp(\"otherApp\");\r\n * ```\r\n *\r\n * @param name - Optional name of the app to return. If no name is\r\n * provided, the default is `\"[DEFAULT]\"`.\r\n *\r\n * @returns The app corresponding to the provided app name.\r\n * If no app name is provided, the default app is returned.\r\n *\r\n * @public\r\n */\r\nfunction getApp(name = DEFAULT_ENTRY_NAME) {\r\n const app = _apps.get(name);\r\n if (!app) {\r\n throw ERROR_FACTORY.create(\"no-app\" /* NO_APP */, { appName: name });\r\n }\r\n return app;\r\n}\r\n/**\r\n * A (read-only) array of all initialized apps.\r\n * @public\r\n */\r\nfunction getApps() {\r\n return Array.from(_apps.values());\r\n}\r\n/**\r\n * Renders this app unusable and frees the resources of all associated\r\n * services.\r\n *\r\n * @example\r\n * ```javascript\r\n * deleteApp(app)\r\n * .then(function() {\r\n * console.log(\"App deleted successfully\");\r\n * })\r\n * .catch(function(error) {\r\n * console.log(\"Error deleting app:\", error);\r\n * });\r\n * ```\r\n *\r\n * @public\r\n */\r\nasync function deleteApp(app) {\r\n const name = app.name;\r\n if (_apps.has(name)) {\r\n _apps.delete(name);\r\n await Promise.all(app.container\r\n .getProviders()\r\n .map(provider => provider.delete()));\r\n app.isDeleted = true;\r\n }\r\n}\r\n/**\r\n * Registers a library's name and version for platform logging purposes.\r\n * @param library - Name of 1p or 3p library (e.g. firestore, angularfire)\r\n * @param version - Current version of that library.\r\n * @param variant - Bundle variant, e.g., node, rn, etc.\r\n *\r\n * @public\r\n */\r\nfunction registerVersion(libraryKeyOrName, version, variant) {\r\n var _a;\r\n // TODO: We can use this check to whitelist strings when/if we set up\r\n // a good whitelist system.\r\n let library = (_a = PLATFORM_LOG_STRING[libraryKeyOrName]) !== null && _a !== void 0 ? _a : libraryKeyOrName;\r\n if (variant) {\r\n library += `-${variant}`;\r\n }\r\n const libraryMismatch = library.match(/\\s|\\//);\r\n const versionMismatch = version.match(/\\s|\\//);\r\n if (libraryMismatch || versionMismatch) {\r\n const warning = [\r\n `Unable to register library \"${library}\" with version \"${version}\":`\r\n ];\r\n if (libraryMismatch) {\r\n warning.push(`library name \"${library}\" contains illegal characters (whitespace or \"/\")`);\r\n }\r\n if (libraryMismatch && versionMismatch) {\r\n warning.push('and');\r\n }\r\n if (versionMismatch) {\r\n warning.push(`version name \"${version}\" contains illegal characters (whitespace or \"/\")`);\r\n }\r\n logger.warn(warning.join(' '));\r\n return;\r\n }\r\n _registerComponent(new Component(`${library}-version`, () => ({ library, version }), \"VERSION\" /* VERSION */));\r\n}\r\n/**\r\n * Sets log handler for all Firebase SDKs.\r\n * @param logCallback - An optional custom log handler that executes user code whenever\r\n * the Firebase SDK makes a logging call.\r\n *\r\n * @public\r\n */\r\nfunction onLog(logCallback, options) {\r\n if (logCallback !== null && typeof logCallback !== 'function') {\r\n throw ERROR_FACTORY.create(\"invalid-log-argument\" /* INVALID_LOG_ARGUMENT */);\r\n }\r\n setUserLogHandler(logCallback, options);\r\n}\r\n/**\r\n * Sets log level for all Firebase SDKs.\r\n *\r\n * All of the log types above the current log level are captured (i.e. if\r\n * you set the log level to `info`, errors are logged, but `debug` and\r\n * `verbose` logs are not).\r\n *\r\n * @public\r\n */\r\nfunction setLogLevel(logLevel) {\r\n setLogLevel$1(logLevel);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DB_NAME = 'firebase-heartbeat-database';\r\nconst DB_VERSION = 1;\r\nconst STORE_NAME = 'firebase-heartbeat-store';\r\nlet dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDB(DB_NAME, DB_VERSION, {\r\n upgrade: (db, oldVersion) => {\r\n // We don't use 'break' in this switch statement, the fall-through\r\n // behavior is what we want, because if there are multiple versions between\r\n // the old version and the current version, we want ALL the migrations\r\n // that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (oldVersion) {\r\n case 0:\r\n db.createObjectStore(STORE_NAME);\r\n }\r\n }\r\n }).catch(e => {\r\n throw ERROR_FACTORY.create(\"storage-open\" /* STORAGE_OPEN */, {\r\n originalErrorMessage: e.message\r\n });\r\n });\r\n }\r\n return dbPromise;\r\n}\r\nasync function readHeartbeatsFromIndexedDB(app) {\r\n try {\r\n const db = await getDbPromise();\r\n return db\r\n .transaction(STORE_NAME)\r\n .objectStore(STORE_NAME)\r\n .get(computeKey(app));\r\n }\r\n catch (e) {\r\n throw ERROR_FACTORY.create(\"storage-get\" /* STORAGE_GET */, {\r\n originalErrorMessage: e.message\r\n });\r\n }\r\n}\r\nasync function writeHeartbeatsToIndexedDB(app, heartbeatObject) {\r\n try {\r\n const db = await getDbPromise();\r\n const tx = db.transaction(STORE_NAME, 'readwrite');\r\n const objectStore = tx.objectStore(STORE_NAME);\r\n await objectStore.put(heartbeatObject, computeKey(app));\r\n return tx.done;\r\n }\r\n catch (e) {\r\n throw ERROR_FACTORY.create(\"storage-set\" /* STORAGE_WRITE */, {\r\n originalErrorMessage: e.message\r\n });\r\n }\r\n}\r\nfunction computeKey(app) {\r\n return `${app.name}!${app.options.appId}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst MAX_HEADER_BYTES = 1024;\r\n// 30 days\r\nconst STORED_HEARTBEAT_RETENTION_MAX_MILLIS = 30 * 24 * 60 * 60 * 1000;\r\nclass HeartbeatServiceImpl {\r\n constructor(container) {\r\n this.container = container;\r\n /**\r\n * In-memory cache for heartbeats, used by getHeartbeatsHeader() to generate\r\n * the header string.\r\n * Stores one record per date. This will be consolidated into the standard\r\n * format of one record per user agent string before being sent as a header.\r\n * Populated from indexedDB when the controller is instantiated and should\r\n * be kept in sync with indexedDB.\r\n * Leave public for easier testing.\r\n */\r\n this._heartbeatsCache = null;\r\n const app = this.container.getProvider('app').getImmediate();\r\n this._storage = new HeartbeatStorageImpl(app);\r\n this._heartbeatsCachePromise = this._storage.read().then(result => {\r\n this._heartbeatsCache = result;\r\n return result;\r\n });\r\n }\r\n /**\r\n * Called to report a heartbeat. The function will generate\r\n * a HeartbeatsByUserAgent object, update heartbeatsCache, and persist it\r\n * to IndexedDB.\r\n * Note that we only store one heartbeat per day. So if a heartbeat for today is\r\n * already logged, subsequent calls to this function in the same day will be ignored.\r\n */\r\n async triggerHeartbeat() {\r\n const platformLogger = this.container\r\n .getProvider('platform-logger')\r\n .getImmediate();\r\n // This is the \"Firebase user agent\" string from the platform logger\r\n // service, not the browser user agent.\r\n const agent = platformLogger.getPlatformInfoString();\r\n const date = getUTCDateString();\r\n if (this._heartbeatsCache === null) {\r\n this._heartbeatsCache = await this._heartbeatsCachePromise;\r\n }\r\n // Do not store a heartbeat if one is already stored for this day\r\n // or if a header has already been sent today.\r\n if (this._heartbeatsCache.lastSentHeartbeatDate === date ||\r\n this._heartbeatsCache.heartbeats.some(singleDateHeartbeat => singleDateHeartbeat.date === date)) {\r\n return;\r\n }\r\n else {\r\n // There is no entry for this date. Create one.\r\n this._heartbeatsCache.heartbeats.push({ date, agent });\r\n }\r\n // Remove entries older than 30 days.\r\n this._heartbeatsCache.heartbeats = this._heartbeatsCache.heartbeats.filter(singleDateHeartbeat => {\r\n const hbTimestamp = new Date(singleDateHeartbeat.date).valueOf();\r\n const now = Date.now();\r\n return now - hbTimestamp <= STORED_HEARTBEAT_RETENTION_MAX_MILLIS;\r\n });\r\n return this._storage.overwrite(this._heartbeatsCache);\r\n }\r\n /**\r\n * Returns a base64 encoded string which can be attached to the heartbeat-specific header directly.\r\n * It also clears all heartbeats from memory as well as in IndexedDB.\r\n *\r\n * NOTE: Consuming product SDKs should not send the header if this method\r\n * returns an empty string.\r\n */\r\n async getHeartbeatsHeader() {\r\n if (this._heartbeatsCache === null) {\r\n await this._heartbeatsCachePromise;\r\n }\r\n // If it's still null or the array is empty, there is no data to send.\r\n if (this._heartbeatsCache === null ||\r\n this._heartbeatsCache.heartbeats.length === 0) {\r\n return '';\r\n }\r\n const date = getUTCDateString();\r\n // Extract as many heartbeats from the cache as will fit under the size limit.\r\n const { heartbeatsToSend, unsentEntries } = extractHeartbeatsForHeader(this._heartbeatsCache.heartbeats);\r\n const headerString = base64urlEncodeWithoutPadding(JSON.stringify({ version: 2, heartbeats: heartbeatsToSend }));\r\n // Store last sent date to prevent another being logged/sent for the same day.\r\n this._heartbeatsCache.lastSentHeartbeatDate = date;\r\n if (unsentEntries.length > 0) {\r\n // Store any unsent entries if they exist.\r\n this._heartbeatsCache.heartbeats = unsentEntries;\r\n // This seems more likely than emptying the array (below) to lead to some odd state\r\n // since the cache isn't empty and this will be called again on the next request,\r\n // and is probably safest if we await it.\r\n await this._storage.overwrite(this._heartbeatsCache);\r\n }\r\n else {\r\n this._heartbeatsCache.heartbeats = [];\r\n // Do not wait for this, to reduce latency.\r\n void this._storage.overwrite(this._heartbeatsCache);\r\n }\r\n return headerString;\r\n }\r\n}\r\nfunction getUTCDateString() {\r\n const today = new Date();\r\n // Returns date format 'YYYY-MM-DD'\r\n return today.toISOString().substring(0, 10);\r\n}\r\nfunction extractHeartbeatsForHeader(heartbeatsCache, maxSize = MAX_HEADER_BYTES) {\r\n // Heartbeats grouped by user agent in the standard format to be sent in\r\n // the header.\r\n const heartbeatsToSend = [];\r\n // Single date format heartbeats that are not sent.\r\n let unsentEntries = heartbeatsCache.slice();\r\n for (const singleDateHeartbeat of heartbeatsCache) {\r\n // Look for an existing entry with the same user agent.\r\n const heartbeatEntry = heartbeatsToSend.find(hb => hb.agent === singleDateHeartbeat.agent);\r\n if (!heartbeatEntry) {\r\n // If no entry for this user agent exists, create one.\r\n heartbeatsToSend.push({\r\n agent: singleDateHeartbeat.agent,\r\n dates: [singleDateHeartbeat.date]\r\n });\r\n if (countBytes(heartbeatsToSend) > maxSize) {\r\n // If the header would exceed max size, remove the added heartbeat\r\n // entry and stop adding to the header.\r\n heartbeatsToSend.pop();\r\n break;\r\n }\r\n }\r\n else {\r\n heartbeatEntry.dates.push(singleDateHeartbeat.date);\r\n // If the header would exceed max size, remove the added date\r\n // and stop adding to the header.\r\n if (countBytes(heartbeatsToSend) > maxSize) {\r\n heartbeatEntry.dates.pop();\r\n break;\r\n }\r\n }\r\n // Pop unsent entry from queue. (Skipped if adding the entry exceeded\r\n // quota and the loop breaks early.)\r\n unsentEntries = unsentEntries.slice(1);\r\n }\r\n return {\r\n heartbeatsToSend,\r\n unsentEntries\r\n };\r\n}\r\nclass HeartbeatStorageImpl {\r\n constructor(app) {\r\n this.app = app;\r\n this._canUseIndexedDBPromise = this.runIndexedDBEnvironmentCheck();\r\n }\r\n async runIndexedDBEnvironmentCheck() {\r\n if (!isIndexedDBAvailable()) {\r\n return false;\r\n }\r\n else {\r\n return validateIndexedDBOpenable()\r\n .then(() => true)\r\n .catch(() => false);\r\n }\r\n }\r\n /**\r\n * Read all heartbeats.\r\n */\r\n async read() {\r\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\r\n if (!canUseIndexedDB) {\r\n return { heartbeats: [] };\r\n }\r\n else {\r\n const idbHeartbeatObject = await readHeartbeatsFromIndexedDB(this.app);\r\n return idbHeartbeatObject || { heartbeats: [] };\r\n }\r\n }\r\n // overwrite the storage with the provided heartbeats\r\n async overwrite(heartbeatsObject) {\r\n var _a;\r\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\r\n if (!canUseIndexedDB) {\r\n return;\r\n }\r\n else {\r\n const existingHeartbeatsObject = await this.read();\r\n return writeHeartbeatsToIndexedDB(this.app, {\r\n lastSentHeartbeatDate: (_a = heartbeatsObject.lastSentHeartbeatDate) !== null && _a !== void 0 ? _a : existingHeartbeatsObject.lastSentHeartbeatDate,\r\n heartbeats: heartbeatsObject.heartbeats\r\n });\r\n }\r\n }\r\n // add heartbeats\r\n async add(heartbeatsObject) {\r\n var _a;\r\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\r\n if (!canUseIndexedDB) {\r\n return;\r\n }\r\n else {\r\n const existingHeartbeatsObject = await this.read();\r\n return writeHeartbeatsToIndexedDB(this.app, {\r\n lastSentHeartbeatDate: (_a = heartbeatsObject.lastSentHeartbeatDate) !== null && _a !== void 0 ? _a : existingHeartbeatsObject.lastSentHeartbeatDate,\r\n heartbeats: [\r\n ...existingHeartbeatsObject.heartbeats,\r\n ...heartbeatsObject.heartbeats\r\n ]\r\n });\r\n }\r\n }\r\n}\r\n/**\r\n * Calculate bytes of a HeartbeatsByUserAgent array after being wrapped\r\n * in a platform logging header JSON object, stringified, and converted\r\n * to base 64.\r\n */\r\nfunction countBytes(heartbeatsCache) {\r\n // base64 has a restricted set of characters, all of which should be 1 byte.\r\n return base64urlEncodeWithoutPadding(\r\n // heartbeatsCache wrapper properties\r\n JSON.stringify({ version: 2, heartbeats: heartbeatsCache })).length;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction registerCoreComponents(variant) {\r\n _registerComponent(new Component('platform-logger', container => new PlatformLoggerServiceImpl(container), \"PRIVATE\" /* PRIVATE */));\r\n _registerComponent(new Component('heartbeat', container => new HeartbeatServiceImpl(container), \"PRIVATE\" /* PRIVATE */));\r\n // Register `app` package.\r\n registerVersion(name$o, version$1, variant);\r\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\n registerVersion(name$o, version$1, 'esm2017');\r\n // Register platform SDK identifier (no version).\r\n registerVersion('fire-js', '');\r\n}\n\n/**\r\n * Firebase App\r\n *\r\n * @remarks This package coordinates the communication between the different Firebase components\r\n * @packageDocumentation\r\n */\r\nregisterCoreComponents('');\n\nexport { SDK_VERSION, DEFAULT_ENTRY_NAME as _DEFAULT_ENTRY_NAME, _addComponent, _addOrOverwriteComponent, _apps, _clearComponents, _components, _getProvider, _registerComponent, _removeServiceInstance, deleteApp, getApp, getApps, initializeApp, onLog, registerVersion, setLogLevel };\n//# sourceMappingURL=index.esm2017.js.map\n","import { Deferred } from '@firebase/util';\n\n/**\r\n * Component for service name T, e.g. `auth`, `auth-internal`\r\n */\r\nclass Component {\r\n /**\r\n *\r\n * @param name The public service name, e.g. app, auth, firestore, database\r\n * @param instanceFactory Service factory responsible for creating the public interface\r\n * @param type whether the service provided by the component is public or private\r\n */\r\n constructor(name, instanceFactory, type) {\r\n this.name = name;\r\n this.instanceFactory = instanceFactory;\r\n this.type = type;\r\n this.multipleInstances = false;\r\n /**\r\n * Properties to be added to the service namespace\r\n */\r\n this.serviceProps = {};\r\n this.instantiationMode = \"LAZY\" /* LAZY */;\r\n this.onInstanceCreated = null;\r\n }\r\n setInstantiationMode(mode) {\r\n this.instantiationMode = mode;\r\n return this;\r\n }\r\n setMultipleInstances(multipleInstances) {\r\n this.multipleInstances = multipleInstances;\r\n return this;\r\n }\r\n setServiceProps(props) {\r\n this.serviceProps = props;\r\n return this;\r\n }\r\n setInstanceCreatedCallback(callback) {\r\n this.onInstanceCreated = callback;\r\n return this;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DEFAULT_ENTRY_NAME = '[DEFAULT]';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provider for instance for service name T, e.g. 'auth', 'auth-internal'\r\n * NameServiceMapping[T] is an alias for the type of the instance\r\n */\r\nclass Provider {\r\n constructor(name, container) {\r\n this.name = name;\r\n this.container = container;\r\n this.component = null;\r\n this.instances = new Map();\r\n this.instancesDeferred = new Map();\r\n this.instancesOptions = new Map();\r\n this.onInitCallbacks = new Map();\r\n }\r\n /**\r\n * @param identifier A provider can provide mulitple instances of a service\r\n * if this.component.multipleInstances is true.\r\n */\r\n get(identifier) {\r\n // if multipleInstances is not supported, use the default name\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\r\n if (!this.instancesDeferred.has(normalizedIdentifier)) {\r\n const deferred = new Deferred();\r\n this.instancesDeferred.set(normalizedIdentifier, deferred);\r\n if (this.isInitialized(normalizedIdentifier) ||\r\n this.shouldAutoInitialize()) {\r\n // initialize the service if it can be auto-initialized\r\n try {\r\n const instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n if (instance) {\r\n deferred.resolve(instance);\r\n }\r\n }\r\n catch (e) {\r\n // when the instance factory throws an exception during get(), it should not cause\r\n // a fatal error. We just return the unresolved promise in this case.\r\n }\r\n }\r\n }\r\n return this.instancesDeferred.get(normalizedIdentifier).promise;\r\n }\r\n getImmediate(options) {\r\n var _a;\r\n // if multipleInstances is not supported, use the default name\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(options === null || options === void 0 ? void 0 : options.identifier);\r\n const optional = (_a = options === null || options === void 0 ? void 0 : options.optional) !== null && _a !== void 0 ? _a : false;\r\n if (this.isInitialized(normalizedIdentifier) ||\r\n this.shouldAutoInitialize()) {\r\n try {\r\n return this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n }\r\n catch (e) {\r\n if (optional) {\r\n return null;\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n else {\r\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\r\n if (optional) {\r\n return null;\r\n }\r\n else {\r\n throw Error(`Service ${this.name} is not available`);\r\n }\r\n }\r\n }\r\n getComponent() {\r\n return this.component;\r\n }\r\n setComponent(component) {\r\n if (component.name !== this.name) {\r\n throw Error(`Mismatching Component ${component.name} for Provider ${this.name}.`);\r\n }\r\n if (this.component) {\r\n throw Error(`Component for ${this.name} has already been provided`);\r\n }\r\n this.component = component;\r\n // return early without attempting to initialize the component if the component requires explicit initialization (calling `Provider.initialize()`)\r\n if (!this.shouldAutoInitialize()) {\r\n return;\r\n }\r\n // if the service is eager, initialize the default instance\r\n if (isComponentEager(component)) {\r\n try {\r\n this.getOrInitializeService({ instanceIdentifier: DEFAULT_ENTRY_NAME });\r\n }\r\n catch (e) {\r\n // when the instance factory for an eager Component throws an exception during the eager\r\n // initialization, it should not cause a fatal error.\r\n // TODO: Investigate if we need to make it configurable, because some component may want to cause\r\n // a fatal error in this case?\r\n }\r\n }\r\n // Create service instances for the pending promises and resolve them\r\n // NOTE: if this.multipleInstances is false, only the default instance will be created\r\n // and all promises with resolve with it regardless of the identifier.\r\n for (const [instanceIdentifier, instanceDeferred] of this.instancesDeferred.entries()) {\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\r\n try {\r\n // `getOrInitializeService()` should always return a valid instance since a component is guaranteed. use ! to make typescript happy.\r\n const instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n instanceDeferred.resolve(instance);\r\n }\r\n catch (e) {\r\n // when the instance factory throws an exception, it should not cause\r\n // a fatal error. We just leave the promise unresolved.\r\n }\r\n }\r\n }\r\n clearInstance(identifier = DEFAULT_ENTRY_NAME) {\r\n this.instancesDeferred.delete(identifier);\r\n this.instancesOptions.delete(identifier);\r\n this.instances.delete(identifier);\r\n }\r\n // app.delete() will call this method on every provider to delete the services\r\n // TODO: should we mark the provider as deleted?\r\n async delete() {\r\n const services = Array.from(this.instances.values());\r\n await Promise.all([\r\n ...services\r\n .filter(service => 'INTERNAL' in service) // legacy services\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map(service => service.INTERNAL.delete()),\r\n ...services\r\n .filter(service => '_delete' in service) // modularized services\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map(service => service._delete())\r\n ]);\r\n }\r\n isComponentSet() {\r\n return this.component != null;\r\n }\r\n isInitialized(identifier = DEFAULT_ENTRY_NAME) {\r\n return this.instances.has(identifier);\r\n }\r\n getOptions(identifier = DEFAULT_ENTRY_NAME) {\r\n return this.instancesOptions.get(identifier) || {};\r\n }\r\n initialize(opts = {}) {\r\n const { options = {} } = opts;\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(opts.instanceIdentifier);\r\n if (this.isInitialized(normalizedIdentifier)) {\r\n throw Error(`${this.name}(${normalizedIdentifier}) has already been initialized`);\r\n }\r\n if (!this.isComponentSet()) {\r\n throw Error(`Component ${this.name} has not been registered yet`);\r\n }\r\n const instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier,\r\n options\r\n });\r\n // resolve any pending promise waiting for the service instance\r\n for (const [instanceIdentifier, instanceDeferred] of this.instancesDeferred.entries()) {\r\n const normalizedDeferredIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\r\n if (normalizedIdentifier === normalizedDeferredIdentifier) {\r\n instanceDeferred.resolve(instance);\r\n }\r\n }\r\n return instance;\r\n }\r\n /**\r\n *\r\n * @param callback - a function that will be invoked after the provider has been initialized by calling provider.initialize().\r\n * The function is invoked SYNCHRONOUSLY, so it should not execute any longrunning tasks in order to not block the program.\r\n *\r\n * @param identifier An optional instance identifier\r\n * @returns a function to unregister the callback\r\n */\r\n onInit(callback, identifier) {\r\n var _a;\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\r\n const existingCallbacks = (_a = this.onInitCallbacks.get(normalizedIdentifier)) !== null && _a !== void 0 ? _a : new Set();\r\n existingCallbacks.add(callback);\r\n this.onInitCallbacks.set(normalizedIdentifier, existingCallbacks);\r\n const existingInstance = this.instances.get(normalizedIdentifier);\r\n if (existingInstance) {\r\n callback(existingInstance, normalizedIdentifier);\r\n }\r\n return () => {\r\n existingCallbacks.delete(callback);\r\n };\r\n }\r\n /**\r\n * Invoke onInit callbacks synchronously\r\n * @param instance the service instance`\r\n */\r\n invokeOnInitCallbacks(instance, identifier) {\r\n const callbacks = this.onInitCallbacks.get(identifier);\r\n if (!callbacks) {\r\n return;\r\n }\r\n for (const callback of callbacks) {\r\n try {\r\n callback(instance, identifier);\r\n }\r\n catch (_a) {\r\n // ignore errors in the onInit callback\r\n }\r\n }\r\n }\r\n getOrInitializeService({ instanceIdentifier, options = {} }) {\r\n let instance = this.instances.get(instanceIdentifier);\r\n if (!instance && this.component) {\r\n instance = this.component.instanceFactory(this.container, {\r\n instanceIdentifier: normalizeIdentifierForFactory(instanceIdentifier),\r\n options\r\n });\r\n this.instances.set(instanceIdentifier, instance);\r\n this.instancesOptions.set(instanceIdentifier, options);\r\n /**\r\n * Invoke onInit listeners.\r\n * Note this.component.onInstanceCreated is different, which is used by the component creator,\r\n * while onInit listeners are registered by consumers of the provider.\r\n */\r\n this.invokeOnInitCallbacks(instance, instanceIdentifier);\r\n /**\r\n * Order is important\r\n * onInstanceCreated() should be called after this.instances.set(instanceIdentifier, instance); which\r\n * makes `isInitialized()` return true.\r\n */\r\n if (this.component.onInstanceCreated) {\r\n try {\r\n this.component.onInstanceCreated(this.container, instanceIdentifier, instance);\r\n }\r\n catch (_a) {\r\n // ignore errors in the onInstanceCreatedCallback\r\n }\r\n }\r\n }\r\n return instance || null;\r\n }\r\n normalizeInstanceIdentifier(identifier = DEFAULT_ENTRY_NAME) {\r\n if (this.component) {\r\n return this.component.multipleInstances ? identifier : DEFAULT_ENTRY_NAME;\r\n }\r\n else {\r\n return identifier; // assume multiple instances are supported before the component is provided.\r\n }\r\n }\r\n shouldAutoInitialize() {\r\n return (!!this.component &&\r\n this.component.instantiationMode !== \"EXPLICIT\" /* EXPLICIT */);\r\n }\r\n}\r\n// undefined should be passed to the service factory for the default instance\r\nfunction normalizeIdentifierForFactory(identifier) {\r\n return identifier === DEFAULT_ENTRY_NAME ? undefined : identifier;\r\n}\r\nfunction isComponentEager(component) {\r\n return component.instantiationMode === \"EAGER\" /* EAGER */;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * ComponentContainer that provides Providers for service name T, e.g. `auth`, `auth-internal`\r\n */\r\nclass ComponentContainer {\r\n constructor(name) {\r\n this.name = name;\r\n this.providers = new Map();\r\n }\r\n /**\r\n *\r\n * @param component Component being added\r\n * @param overwrite When a component with the same name has already been registered,\r\n * if overwrite is true: overwrite the existing component with the new component and create a new\r\n * provider with the new component. It can be useful in tests where you want to use different mocks\r\n * for different tests.\r\n * if overwrite is false: throw an exception\r\n */\r\n addComponent(component) {\r\n const provider = this.getProvider(component.name);\r\n if (provider.isComponentSet()) {\r\n throw new Error(`Component ${component.name} has already been registered with ${this.name}`);\r\n }\r\n provider.setComponent(component);\r\n }\r\n addOrOverwriteComponent(component) {\r\n const provider = this.getProvider(component.name);\r\n if (provider.isComponentSet()) {\r\n // delete the existing provider from the container, so we can register the new component\r\n this.providers.delete(component.name);\r\n }\r\n this.addComponent(component);\r\n }\r\n /**\r\n * getProvider provides a type safe interface where it can only be called with a field name\r\n * present in NameServiceMapping interface.\r\n *\r\n * Firebase SDKs providing services should extend NameServiceMapping interface to register\r\n * themselves.\r\n */\r\n getProvider(name) {\r\n if (this.providers.has(name)) {\r\n return this.providers.get(name);\r\n }\r\n // create a Provider for a service that hasn't registered with Firebase\r\n const provider = new Provider(name, this);\r\n this.providers.set(name, provider);\r\n return provider;\r\n }\r\n getProviders() {\r\n return Array.from(this.providers.values());\r\n }\r\n}\n\nexport { Component, ComponentContainer, Provider };\n//# sourceMappingURL=index.esm2017.js.map\n","/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A container for all of the Logger instances\r\n */\r\nconst instances = [];\r\n/**\r\n * The JS SDK supports 5 log levels and also allows a user the ability to\r\n * silence the logs altogether.\r\n *\r\n * The order is a follows:\r\n * DEBUG < VERBOSE < INFO < WARN < ERROR\r\n *\r\n * All of the log types above the current log level will be captured (i.e. if\r\n * you set the log level to `INFO`, errors will still be logged, but `DEBUG` and\r\n * `VERBOSE` logs will not)\r\n */\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"DEBUG\"] = 0] = \"DEBUG\";\r\n LogLevel[LogLevel[\"VERBOSE\"] = 1] = \"VERBOSE\";\r\n LogLevel[LogLevel[\"INFO\"] = 2] = \"INFO\";\r\n LogLevel[LogLevel[\"WARN\"] = 3] = \"WARN\";\r\n LogLevel[LogLevel[\"ERROR\"] = 4] = \"ERROR\";\r\n LogLevel[LogLevel[\"SILENT\"] = 5] = \"SILENT\";\r\n})(LogLevel || (LogLevel = {}));\r\nconst levelStringToEnum = {\r\n 'debug': LogLevel.DEBUG,\r\n 'verbose': LogLevel.VERBOSE,\r\n 'info': LogLevel.INFO,\r\n 'warn': LogLevel.WARN,\r\n 'error': LogLevel.ERROR,\r\n 'silent': LogLevel.SILENT\r\n};\r\n/**\r\n * The default log level\r\n */\r\nconst defaultLogLevel = LogLevel.INFO;\r\n/**\r\n * By default, `console.debug` is not displayed in the developer console (in\r\n * chrome). To avoid forcing users to have to opt-in to these logs twice\r\n * (i.e. once for firebase, and once in the console), we are sending `DEBUG`\r\n * logs to the `console.log` function.\r\n */\r\nconst ConsoleMethod = {\r\n [LogLevel.DEBUG]: 'log',\r\n [LogLevel.VERBOSE]: 'log',\r\n [LogLevel.INFO]: 'info',\r\n [LogLevel.WARN]: 'warn',\r\n [LogLevel.ERROR]: 'error'\r\n};\r\n/**\r\n * The default log handler will forward DEBUG, VERBOSE, INFO, WARN, and ERROR\r\n * messages on to their corresponding console counterparts (if the log method\r\n * is supported by the current log level)\r\n */\r\nconst defaultLogHandler = (instance, logType, ...args) => {\r\n if (logType < instance.logLevel) {\r\n return;\r\n }\r\n const now = new Date().toISOString();\r\n const method = ConsoleMethod[logType];\r\n if (method) {\r\n console[method](`[${now}] ${instance.name}:`, ...args);\r\n }\r\n else {\r\n throw new Error(`Attempted to log a message with an invalid logType (value: ${logType})`);\r\n }\r\n};\r\nclass Logger {\r\n /**\r\n * Gives you an instance of a Logger to capture messages according to\r\n * Firebase's logging scheme.\r\n *\r\n * @param name The name that the logs will be associated with\r\n */\r\n constructor(name) {\r\n this.name = name;\r\n /**\r\n * The log level of the given Logger instance.\r\n */\r\n this._logLevel = defaultLogLevel;\r\n /**\r\n * The main (internal) log handler for the Logger instance.\r\n * Can be set to a new function in internal package code but not by user.\r\n */\r\n this._logHandler = defaultLogHandler;\r\n /**\r\n * The optional, additional, user-defined log handler for the Logger instance.\r\n */\r\n this._userLogHandler = null;\r\n /**\r\n * Capture the current instance for later use\r\n */\r\n instances.push(this);\r\n }\r\n get logLevel() {\r\n return this._logLevel;\r\n }\r\n set logLevel(val) {\r\n if (!(val in LogLevel)) {\r\n throw new TypeError(`Invalid value \"${val}\" assigned to \\`logLevel\\``);\r\n }\r\n this._logLevel = val;\r\n }\r\n // Workaround for setter/getter having to be the same type.\r\n setLogLevel(val) {\r\n this._logLevel = typeof val === 'string' ? levelStringToEnum[val] : val;\r\n }\r\n get logHandler() {\r\n return this._logHandler;\r\n }\r\n set logHandler(val) {\r\n if (typeof val !== 'function') {\r\n throw new TypeError('Value assigned to `logHandler` must be a function');\r\n }\r\n this._logHandler = val;\r\n }\r\n get userLogHandler() {\r\n return this._userLogHandler;\r\n }\r\n set userLogHandler(val) {\r\n this._userLogHandler = val;\r\n }\r\n /**\r\n * The functions below are all based on the `console` interface\r\n */\r\n debug(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.DEBUG, ...args);\r\n this._logHandler(this, LogLevel.DEBUG, ...args);\r\n }\r\n log(...args) {\r\n this._userLogHandler &&\r\n this._userLogHandler(this, LogLevel.VERBOSE, ...args);\r\n this._logHandler(this, LogLevel.VERBOSE, ...args);\r\n }\r\n info(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.INFO, ...args);\r\n this._logHandler(this, LogLevel.INFO, ...args);\r\n }\r\n warn(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.WARN, ...args);\r\n this._logHandler(this, LogLevel.WARN, ...args);\r\n }\r\n error(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.ERROR, ...args);\r\n this._logHandler(this, LogLevel.ERROR, ...args);\r\n }\r\n}\r\nfunction setLogLevel(level) {\r\n instances.forEach(inst => {\r\n inst.setLogLevel(level);\r\n });\r\n}\r\nfunction setUserLogHandler(logCallback, options) {\r\n for (const instance of instances) {\r\n let customLogLevel = null;\r\n if (options && options.level) {\r\n customLogLevel = levelStringToEnum[options.level];\r\n }\r\n if (logCallback === null) {\r\n instance.userLogHandler = null;\r\n }\r\n else {\r\n instance.userLogHandler = (instance, level, ...args) => {\r\n const message = args\r\n .map(arg => {\r\n if (arg == null) {\r\n return null;\r\n }\r\n else if (typeof arg === 'string') {\r\n return arg;\r\n }\r\n else if (typeof arg === 'number' || typeof arg === 'boolean') {\r\n return arg.toString();\r\n }\r\n else if (arg instanceof Error) {\r\n return arg.message;\r\n }\r\n else {\r\n try {\r\n return JSON.stringify(arg);\r\n }\r\n catch (ignored) {\r\n return null;\r\n }\r\n }\r\n })\r\n .filter(arg => arg)\r\n .join(' ');\r\n if (level >= (customLogLevel !== null && customLogLevel !== void 0 ? customLogLevel : instance.logLevel)) {\r\n logCallback({\r\n level: LogLevel[level].toLowerCase(),\r\n message,\r\n args,\r\n type: instance.name\r\n });\r\n }\r\n };\r\n }\r\n }\r\n}\n\nexport { LogLevel, Logger, setLogLevel, setUserLogHandler };\n//# sourceMappingURL=index.esm2017.js.map\n","import { urlAlphabet } from './url-alphabet/index.js'\nlet random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nlet customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nlet customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nlet nanoid = (size = 21) =>\n crypto.getRandomValues(new Uint8Array(size)).reduce((id, byte) => {\n byte &= 63\n if (byte < 36) {\n id += byte.toString(36)\n } else if (byte < 62) {\n id += (byte - 26).toString(36).toUpperCase()\n } else if (byte > 62) {\n id += '-'\n } else {\n id += '_'\n }\n return id\n }, '')\nexport { nanoid, customAlphabet, customRandom, urlAlphabet, random }\n","export default function _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++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\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\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\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\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\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}","function _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\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\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\n var F = function F() {};\n\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\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\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 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\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\n return possibleConstructorReturn(this, result);\n };\n}","export default function _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}","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\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}","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\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\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\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\n return keys;\n}\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\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\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}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\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}","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\n return self;\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\n return assertThisInitialized(self);\n}","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\";\n /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\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\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\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 generator._invoke = function (innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\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\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\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }(innerFn, self, context), generator;\n }\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\n exports.wrap = wrap;\n var ContinueSentinel = {};\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {}\n\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\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\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\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\n reject(record.arg);\n }\n\n var previousPromise;\n\n this._invoke = function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n };\n }\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\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\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\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\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\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n\n return next.value = undefined, next.done = !0, next;\n };\n\n return next.next = next;\n }\n }\n\n return {\n next: doneResult\n };\n }\n\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, \"constructor\", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), 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 (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\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\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) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\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\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\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\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\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\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\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\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\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}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _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}","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 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}","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 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}","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}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\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\n return _construct.apply(null, arguments);\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\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\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\n return _wrapNativeSuper(Class);\n}"],"names":["LogLevel","__extends","extendStatics","Object","setPrototypeOf","__proto__","Array","d","b","p","hasOwnProperty","__","this","constructor","prototype","create","HttpError","_super","errorMessage","statusCode","_newTarget","_this","trueProto","call","Error","TimeoutError","__assign","assign","t","s","i","n","arguments","length","HttpResponse","statusText","content","HttpClient","get","url","options","send","method","post","delete","DefaultHttpClient","logger","request","Promise","resolve","reject","xhr","XMLHttpRequest","open","withCredentials","setRequestHeader","headers","keys","forEach","header","responseType","abortSignal","onabort","abort","timeout","onload","status","response","responseText","onerror","log","Warning","ontimeout","PerformanceEvents","PerformanceEventStatus","apply","__awaiter","thisArg","_arguments","P","generator","adopt","value","fulfilled","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","v","op","TypeError","pop","push","__read","o","m","r","ar","error","__spread","concat","__spreadArrays","il","k","a","j","jl","HeaderNames","PersistentCacheKeys","AADAuthorityConstants","AADServerParamKeys","ClaimsRequestKeys","Constants","LIBRARY_NAME","SKU","CACHE_PREFIX","DEFAULT_AUTHORITY","DEFAULT_AUTHORITY_HOST","DEFAULT_COMMON_TENANT","ADFS","AAD_INSTANCE_DISCOVERY_ENDPT","RESOURCE_DELIM","NO_ACCOUNT","CLAIMS","CONSUMER_UTID","OPENID_SCOPE","PROFILE_SCOPE","OFFLINE_ACCESS_SCOPE","EMAIL_SCOPE","CODE_RESPONSE_TYPE","CODE_GRANT_TYPE","RT_GRANT_TYPE","FRAGMENT_RESPONSE_MODE","S256_CODE_CHALLENGE_METHOD","URL_FORM_CONTENT_TYPE","AUTHORIZATION_PENDING","NOT_DEFINED","EMPTY_STRING","FORWARD_SLASH","IMDS_ENDPOINT","IMDS_VERSION","IMDS_TIMEOUT","AZURE_REGION_AUTO_DISCOVER_FLAG","REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX","KNOWN_PUBLIC_CLOUDS","TOKEN_RESPONSE_TYPE","ID_TOKEN_RESPONSE_TYPE","OIDC_DEFAULT_SCOPES","OIDC_SCOPES","SSOTypes","PromptValue","LOGIN","SELECT_ACCOUNT","CONSENT","NONE","CREATE","ResponseMode","GrantType","CacheAccountType","Separators","CredentialType","CacheSchemaType","CacheType","CodeChallengeMethodValues","PLAIN","S256","AuthorityMetadataSource","APP_METADATA","CLIENT_INFO","THE_FAMILY_ID","AUTHORITY_METADATA_CONSTANTS","CACHE_KEY","REFRESH_TIME_SECONDS","AuthenticationScheme","SERVER_TELEM_CONSTANTS","SCHEMA_VERSION","MAX_CUR_HEADER_BYTES","MAX_LAST_HEADER_BYTES","MAX_CACHED_ERRORS","CATEGORY_SEPARATOR","VALUE_SEPARATOR","OVERFLOW_TRUE","OVERFLOW_FALSE","UNKNOWN_ERROR","PasswordGrantConstants","ResponseCodes","RegionDiscoverySources","RegionDiscoveryOutcomes","CacheOutcome","ThrottlingConstants","DEFAULT_THROTTLE_TIME_SECONDS","DEFAULT_MAX_THROTTLE_TIME_SECONDS","THROTTLING_PREFIX","X_MS_LIB_CAPABILITY_VALUE","Errors","INVALID_GRANT_ERROR","CLIENT_MISMATCH_ERROR","NativeExtensionMethod","BrowserCacheLocation","HTTP_REQUEST_TYPE","TemporaryCacheKeys","InMemoryCacheKeys","ApiId","InteractionType","InteractionStatus","BrowserConstants","INTERACTION_IN_PROGRESS_VALUE","POPUP_WIDTH","POPUP_HEIGHT","POPUP_NAME_PREFIX","POLL_INTERVAL_MS","MSAL_SKU","NativeConstants","CHANNEL_ID","PREFERRED_EXTENSION_ID","WrapperSKU","DEFAULT_REQUEST","scopes","KEY_FORMAT_JWK","CryptoKeyStoreNames","DB_NAME","DB_VERSION","DB_TABLE_NAME","MathUtils","decimalToHex","num","hex","toString","GuidGenerator","cryptoObj","generateGuid","buffer","Uint8Array","getRandomValues","err","guidHolder","guidResponse","Math","random","isGuid","guid","regexGuid","test","BrowserStringUtils","stringToUtf8Arr","sDOMStr","nChr","nArrLen","nStrLen","nMapIdx","charCodeAt","aBytes","nIdx","nChrIdx","stringToArrayBuffer","dataString","data","ArrayBuffer","dataView","utf8ArrToString","sView","nPart","nLen","String","fromCharCode","Base64Encode","urlEncode","input","encodeURIComponent","encode","replace","urlEncodeArr","inputArr","base64EncArr","inputUtf8Arr","eqLen","sB64Enc","nMod3","nUint24","uint6ToB64","substring","nUint6","Base64Decode","decode","encodedString","base64DecToArr","base64String","nBlockSize","nInLen","nOutLen","ceil","nMod4","nOutIdx","nInIdx","b64ToUint6","charNum","AuthErrorMessage","unexpectedError","code","desc","AuthError","errorCode","suberror","errorString","subError","name","setCorrelationId","correlationId","createUnexpectedError","errDesc","ClientAuthErrorMessage","clientInfoDecodingError","clientInfoEmptyError","tokenParsingError","nullOrEmptyToken","endpointResolutionError","networkError","unableToGetOpenidConfigError","hashNotDeserialized","blankGuidGenerated","invalidStateError","stateMismatchError","stateNotFoundError","nonceMismatchError","nonceNotFoundError","noTokensFoundError","multipleMatchingTokens","multipleMatchingAccounts","multipleMatchingAppMetadata","tokenRequestCannotBeMade","appendEmptyScopeError","removeEmptyScopeError","appendScopeSetError","emptyInputScopeSetError","DeviceCodePollingCancelled","DeviceCodeExpired","DeviceCodeUnknownError","NoAccountInSilentRequest","invalidCacheRecord","invalidCacheEnvironment","noAccountFound","CachePluginError","noCryptoObj","invalidCacheType","unexpectedAccountType","unexpectedCredentialType","invalidAssertion","invalidClientCredential","tokenRefreshRequired","userTimeoutReached","tokenClaimsRequired","noAuthorizationCodeFromServer","noAzureRegionDetected","accessTokenEntityNullError","bindingKeyNotRemovedError","logoutNotSupported","ClientAuthError","createClientInfoDecodingError","caughtError","createClientInfoEmptyError","createTokenParsingError","caughtExtractionError","createTokenNullOrEmptyError","invalidRawTokenString","createEndpointDiscoveryIncompleteError","errDetail","createNetworkError","endpoint","split","createUnableToGetOpenidConfigError","createHashNotDeserializedError","hashParamObj","createInvalidStateError","invalidState","createStateMismatchError","createStateNotFoundError","missingState","createNonceMismatchError","createNonceNotFoundError","missingNonce","createMultipleMatchingTokensInCacheError","createMultipleMatchingAccountsInCacheError","createMultipleMatchingAppMetadataInCacheError","createTokenRequestCannotBeMadeError","createAppendEmptyScopeToSetError","givenScope","createRemoveEmptyScopeFromSetError","createAppendScopeSetError","appendError","createEmptyInputScopeSetError","createDeviceCodeCancelledError","createDeviceCodeExpiredError","createDeviceCodeUnknownError","createNoAccountInSilentRequestError","createNullOrUndefinedCacheRecord","createInvalidCacheEnvironmentError","createNoAccountFoundError","createCachePluginError","createNoCryptoObjectError","operationName","createInvalidCacheTypeError","createUnexpectedAccountTypeError","createUnexpectedCredentialTypeError","createInvalidAssertionError","createInvalidCredentialError","createRefreshRequiredError","createUserTimeoutReachedError","createTokenClaimsRequiredError","createNoAuthCodeInServerResponseError","createBindingKeyNotRemovedError","createLogoutNotSupportedError","StringUtils","decodeAuthToken","authToken","isEmpty","tokenPartsRegex","matches","exec","JSON","stringify","crackedToken","JWSPayload","JWSSig","str","isEmptyObj","strObj","obj","parse","startsWith","search","indexOf","endsWith","lastIndexOf","queryStringToObject","query","params","decodeURIComponent","pair","trim","_a","key","trimArrayEntries","arr","map","entry","removeEmptyStringsFromArray","filter","jsonParseHelper","matchPattern","pattern","regex","RegExp","BrowserAuthErrorMessage","pkceNotGenerated","cryptoDoesNotExist","httpMethodNotImplementedError","emptyNavigateUriError","hashEmptyError","hashDoesNotContainStateError","hashDoesNotContainKnownPropertiesError","unableToParseStateError","stateInteractionTypeMismatchError","interactionInProgress","popupWindowError","emptyWindowError","userCancelledError","monitorPopupTimeoutError","monitorIframeTimeoutError","redirectInIframeError","blockTokenRequestsInHiddenIframeError","blockAcquireTokenInPopupsError","iframeClosedPrematurelyError","silentLogoutUnsupportedError","noAccountError","silentPromptValueError","noTokenRequestCacheError","unableToParseTokenRequestCacheError","noCachedAuthorityError","authRequestNotSet","notInBrowserEnvironment","databaseNotOpen","noNetworkConnectivity","postRequestFailed","getRequestFailed","failedToParseNetworkResponse","unableToLoadTokenError","signingKeyNotFoundInStorage","authCodeRequired","authCodeOrNativeAccountRequired","databaseUnavailable","unableToAcquireTokenFromNativePlatform","nativeHandshakeTimeout","nativeExtensionNotInstalled","nativeConnectionNotEstablished","nativeBrokerCalledBeforeInitialize","nativePromptNotSupported","BrowserAuthError","createPkceNotGeneratedError","createCryptoNotAvailableError","createHttpMethodNotImplementedError","createEmptyNavigationUriError","createEmptyHashError","hashValue","createHashDoesNotContainStateError","createHashDoesNotContainKnownPropertiesError","createUnableToParseStateError","createStateInteractionTypeMismatchError","createInteractionInProgressError","createPopupWindowError","createEmptyWindowCreatedError","createUserCancelledError","createMonitorPopupTimeoutError","createMonitorIframeTimeoutError","createRedirectInIframeError","windowParentCheck","createBlockReloadInHiddenIframeError","createBlockAcquireTokenInPopupsError","createIframeClosedPrematurelyError","createSilentLogoutUnsupportedError","createNoAccountError","createSilentPromptValueError","givenPrompt","createUnableToParseTokenRequestCacheError","createNoTokenRequestCacheError","createAuthRequestNotSetError","createNoCachedAuthorityError","createNonBrowserEnvironmentError","createDatabaseNotOpenError","createNoNetworkConnectivityError","createPostRequestFailedError","errorDesc","createGetRequestFailedError","createFailedToParseNetworkResponseError","createUnableToLoadTokenError","errorDetail","createSigningKeyNotFoundInStorageError","keyId","createAuthCodeRequiredError","createAuthCodeOrNativeAccountIdRequiredError","createDatabaseUnavailableError","createUnableToAcquireTokenFromNativePlatformError","createNativeHandshakeTimeoutError","createNativeExtensionNotInstalledError","createNativeConnectionNotEstablishedError","createNativeBrokerCalledBeforeInitialize","createNativePromptParameterNotSupportedError","RANDOM_BYTE_ARR_LENGTH","PkceGenerator","base64Encode","generateCodes","codeVerifier","codeChallenge","generateCodeVerifier","generateCodeChallengeFromVerifier","verifier","challenge","pkceCodeVerifierB64","pkceCodeVerifier","pkceHashedCodeVerifier","e_1","sha256Digest","PKCS1_V15_KEYGEN_ALG","S256_HASH_ALG","MODULUS_LENGTH","PUBLIC_EXPONENT","BrowserCrypto","hasCryptoAPI","_keygenAlgorithmOptions","hash","modulusLength","publicExponent","hasIECrypto","getMSCryptoDigest","getSubtleCryptoDigest","dataBuffer","window","crypto","generateKeyPair","extractable","usages","msCryptoGenerateKey","subtle","generateKey","exportJwk","msCryptoExportJwk","exportKey","importJwk","keyString","keyBuffer","getJwkString","msCryptoImportKey","importKey","sign","msCryptoSign","hasBrowserCrypto","algorithm","digest","digestOperation","addEventListener","target","msGenerateKey","msExportKey","resultBuffer","resultString","join","msImportKey","msSign","jwk","sort","DatabaseStorage","dbName","version","tableName","dbOpen","openDB","indexedDB","event","createObjectStore","db","closeConnection","close","validateDbIsOpen","getItem","transaction","objectStore","dbGet","setItem","payload","dbPut","put","removeItem","dbDelete","getKeys","dbGetKeys","getAllKeys","containsKey","dbContainsKey","count","deleteDatabase","existingDatabases","database","databases","find","deleteDbRequest","MemoryStorage","cache","Map","set","cacheKeys","has","clear","AsyncMemoryStorage","storeName","inMemoryCache","indexedDBCache","handleDatabaseAccessError","item","verbose","e_2","e_3","e_4","e_5","dbDeleted","e_6","CryptoOps","performanceClient","browserCrypto","b64Encode","b64Decode","guidGenerator","pkceGenerator","asymmetricKeys","symmetricKeys","createNewGuid","base64Decode","generatePkceCodes","getPublicKeyThumbprint","publicKeyThumbMeasurement","keyPair","publicKeyJwk","pubKeyThumprintObj","publicJwkString","publicJwkHash","privateKeyJwk","unextractablePrivateKey","_b","startMeasurement","CryptoOptsGetPublicKeyThumbprint","EXTRACTABLE","POP_KEY_USAGES","publicKey","kty","hashString","privateKey","requestMethod","resourceRequestMethod","requestUri","resourceRequestUri","endMeasurement","success","removeTokenBindingKey","kid","keyFound","clearKeystore","message","signJwt","signJwtMeasurement","cachedKeyPair","publicKeyJwkString","encodedHeader","encodedPayload","tokenString","tokenBuffer","signatureBuffer","encodedSignature","signedJwt","CryptoOptsSignJwt","alg","type","cnf","plainText","hashBuffer","hashBytes","AuthorityType","Logger","loggerOptions","packageName","packageVersion","level","Info","defaultLoggerCallback","localCallback","loggerCallback","piiLoggingEnabled","logLevel","clone","logMessage","containsPii","logHeader","timestamp","Date","toUTCString","executeCallback","errorPii","warning","warningPii","info","infoPii","Verbose","verbosePii","trace","Trace","tracePii","isPiiLoggingEnabled","PerformanceClient","clientId","authority","libraryName","libraryVersion","applicationTelemetry","callbacks","eventsByCorrelationId","measurementsById","measureName","eventCorrelationId","generateId","performanceMeasurement","startPerformanceMeasuremeant","inProgressEvent","eventId","InProgress","appName","appVersion","startTimeMs","now","cacheEventByCorrelationId","cacheMeasurement","completedEvent","flushMeasurement","flushMeasurements","discardMeasurement","discardMeasurements","measurement","durationMs","round","Completed","existingEvents","eventsForCorrelationId","completedEvents_1","sortedCompletedEvents","eventA","eventB","topLevelEvents","topLevelEvent","eventToEmit","reduce","previous","current","subMeasurementName","emitEvents","addPerformanceCallback","callback","callbackId","removePerformanceCallback","events","StubPerformanceMeasurement","StubPerformanceClient","DEFAULT_CRYPTO_IMPLEMENTATION","notImplErr","ServerError","InteractionRequiredServerErrorMessage","InteractionRequiredAuthSubErrorMessage","InteractionRequiredAuthErrorMessage","InteractionRequiredAuthError","isInteractionRequiredError","isInteractionRequiredErrorCode","isInteractionRequiredSubError","isInteractionRequiredErrorDesc","some","irErrorCode","createNoTokensFoundError","buildClientInfo","rawClientInfo","decodedClientInfo","buildClientInfoFromHomeAccountId","homeAccountId","clientInfoParts","CLIENT_INFO_SEPARATOR","uid","utid","CcsCredentialType","AccountEntity","generateAccountId","accountId","environment","CACHE_KEY_SEPARATOR","toLowerCase","generateAccountKey","generateAccountCacheKey","tenantId","realm","username","localAccountId","generateType","authorityType","ADFS_ACCOUNT_TYPE","MSAV1_ACCOUNT_TYPE","MSA","MSSTS_ACCOUNT_TYPE","MSSTS","GENERIC_ACCOUNT_TYPE","GENERIC","getAccountInfo","idTokenClaims","nativeAccountId","accountInterface","accountKey","createAccount","clientInfo","idToken","oboAssertion","cloudGraphHostName","msGraphHost","_c","_d","_e","_f","account","env","getPreferredCache","claims","tid","oid","sub","preferred_username","emails","createGenericAccount","Adfs","upn","generateHomeAccountId","serverClientInfo","authType","isAccountEntity","entity","accountInfoIsEqual","accountA","accountB","compareClaims","claimsMatch","accountAClaims","accountBClaims","iat","nonce","CredentialEntity","generateAccountIdForCacheKey","generateCredentialId","generateCredentialIdForCacheKey","credentialType","familyId","generateTarget","generateTargetForCacheKey","generateCredentialKey","generateCredentialCacheKey","tokenType","requestedClaimsHash","ID_TOKEN","ACCESS_TOKEN","ACCESS_TOKEN_WITH_AUTH_SCHEME","REFRESH_TOKEN","getCredentialType","credentialKey","generateClaimsHashForCacheKey","generateSchemeForCacheKey","clientOrFamilyId","credentialId","BEARER","ClientConfigurationErrorMessage","redirectUriNotSet","postLogoutUriNotSet","claimsRequestParsingError","authorityUriInsecure","urlParseError","urlEmptyError","emptyScopesError","nonArrayScopesError","clientIdSingleScopeError","invalidPrompt","invalidClaimsRequest","tokenRequestEmptyError","logoutRequestEmptyError","invalidCodeChallengeMethod","invalidCodeChallengeParams","invalidCloudDiscoveryMetadata","invalidAuthorityMetadata","untrustedAuthority","invalidAzureCloudInstance","missingSshJwk","missingSshKid","missingNonceAuthenticationHeader","invalidAuthenticationHeader","ClientConfigurationError","createRedirectUriEmptyError","createPostLogoutRedirectUriEmptyError","createClaimsRequestParsingError","claimsRequestParseError","createInsecureAuthorityUriError","urlString","createUrlParseError","createUrlEmptyError","createEmptyScopesArrayError","createClientIdSingleScopeError","inputScopes","createInvalidPromptError","promptValue","createInvalidClaimsRequestError","createEmptyLogoutRequestError","createEmptyTokenRequestError","createInvalidCodeChallengeMethodError","createInvalidCodeChallengeParamsError","createInvalidCloudDiscoveryMetadataError","createInvalidAuthorityMetadataError","createUntrustedAuthorityError","createInvalidAzureCloudInstanceError","createMissingSshJwkError","createMissingSshKidError","createMissingNonceAuthenticationHeadersError","createInvalidAuthenticationHeaderError","invalidHeaderName","details","ScopeSet","scopeArr","filteredInput","validateInputScopes","Set","scope","add","fromString","inputScopeString","scopeString","containsScope","lowerCaseScopes","printScopesLowerCase","lowerCaseScopesSet","containsScopeSet","scopeSet","size","asArray","every","containsOnlyOIDCScopes","defaultScopeCount","defaultScope","appendScope","newScope","appendScopes","newScopes","removeScope","removeOIDCScopes","unionScopeSets","otherScopes","unionScopes","intersectingScopeSets","sizeOtherScopes","getScopeCount","sizeThisScopes","sizeUnionScopes","array","val","printScopes","AuthToken","rawToken","extractTokenClaims","encodedToken","decodedToken","base64TokenPayload","base64Decoded","CacheManager","cryptoImpl","getAllAccounts","currentAccounts","getAccountsFilteredBy","accountValues","numAccounts","allAccounts","accountEntity","toObject","accountInfo","readIdTokenFromCache","secret","saveCacheRecord","cacheRecord","setAccount","setIdTokenCredential","accessToken","saveAccessToken","refreshToken","setRefreshTokenCredential","appMetadata","setAppMetadata","credential","currentTokenCache","currentScopes","currentAccessTokens","removedAccessTokens_1","getCredentialsFilteredBy","accessTokens","tokenEntity","tokenScopeSet","removeCredential","all","setAccessTokenCredential","accountFilter","getAccountsFilteredByInternal","allCacheKeys","matchingAccounts","cacheKey","getAccount","matchHomeAccountId","matchEnvironment","matchRealm","getCredentialsFilteredByInternal","matchingCredentials","idTokens","refreshTokens","credType","getSpecificCredential","matchOboAssertion","matchCredentialType","matchClientId","matchFamilyId","matchTarget","matchTokenType","SSH","matchKeyId","updatedCacheKey","updateCredentialCacheKey","getAppMetadataFilteredBy","getAppMetadataFilteredByInternal","matchingAppMetadata","isAppMetadata","getAppMetadata","getAuthorityMetadataByAlias","host","getAuthorityMetadataKeys","matchedEntity","isAuthorityMetadata","getAuthorityMetadata","aliases","removeAllAccounts","removedAccounts","removeAccount","removeAccountContext","ACCOUNT","removedCredentials","cacheEntity","accessTokenWithAuthSchemeEntity","POP","CREDENTIAL","removeAppMetadata","readCacheRecord","cachedAccount","readAccountFromCache","cachedIdToken","cachedAccessToken","readAccessTokenFromCache","cachedRefreshToken","readRefreshTokenFromCache","cachedAppMetadata","readAppMetadataFromCache","idTokenFilter","credentialCache","numIdTokens","authScheme","authenticationScheme","accessTokenFilter","sshKid","numAccessTokens","familyRT","id","undefined","refreshTokenFilter","numRefreshTokens","appMetadataFilter","appMetadataEntries","numAppMetadata","isAppMetadataFOCI","cloudMetadata","isNotAccessTokenCredential","entityScopeSet","requestTargetScopeSet","generateAuthorityMetadataCacheKey","getIdTokenCredential","getAccessTokenCredential","getRefreshTokenCredential","json","propertyName","DefaultStorageClass","setServerTelemetry","getServerTelemetry","setAuthorityMetadata","setThrottlingCache","getThrottlingCache","IdTokenEntity","createIdTokenEntity","idTokenEntity","isIdTokenEntity","TimeUtils","nowSeconds","getTime","isTokenExpired","expiresOn","offset","expirationSec","Number","offsetCurrentTimeSec","wasClockTurnedBack","cachedAt","cachedAtSec","delay","setTimeout","AccessTokenEntity","createAccessTokenEntity","extExpiresOn","cryptoUtils","refreshOn","requestedClaims","atEntity","currentTime","extendedExpiresOn","tokenClaims","isAccessTokenEntity","RefreshTokenEntity","createRefreshTokenEntity","rtEntity","isRefreshTokenEntity","AppMetadataEntity","generateAppMetadataKey","generateAppMetadataCacheKey","appMetaDataKeyArray","createAppMetadataEntity","isAppMetadataEntity","ServerTelemetryEntity","failedRequests","errors","cacheHits","isServerTelemetryEntity","validateKey","validateEntity","AuthorityMetadataEntity","expiresAt","updateCloudDiscoveryMetadata","metadata","fromNetwork","preferred_cache","preferred_network","aliasesFromNetwork","updateEndpointMetadata","authorization_endpoint","token_endpoint","end_session_endpoint","issuer","endpointsFromNetwork","updateCanonicalAuthority","canonical_authority","resetExpiresAt","isExpired","isAuthorityMetadataEntity","ThrottlingEntity","isThrottlingEntity","ProtocolUtils","setRequestState","userState","meta","libraryState","generateLibraryState","stateObj","stateString","parseRequestState","state","splitState","slice","libraryStateString","libraryStateObj","userRequestState","ProtocolMode","AzureCloudInstance","BrowserConfigurationAuthErrorMessage","storageNotSupportedError","noRedirectCallbacksSet","invalidCallbackObject","stubPcaInstanceCalled","inMemRedirectUnavailable","BrowserConfigurationAuthError","createStorageNotSupportedError","givenStorageLocation","createRedirectCallbacksNotSetError","createStubPcaInstanceCalledError","createInMemoryRedirectUnavailableError","BrowserStorage","cacheLocation","validateWindowStorage","windowStorage","LocalStorage","SessionStorage","storageSupported","UrlString","_urlString","getHash","canonicalizeUri","defineProperty","enumerable","configurable","lowerCaseUrl","validateAsUri","components","getUrlComponents","HostNameAndPort","PathSegments","Protocol","appendQueryString","queryString","removeHashFromUrl","replaceTenantPath","urlObject","pathArray","COMMON","ORGANIZATIONS","constructAuthorityUriFromObject","parseHash","regEx","match","urlComponents","AbsolutePath","QueryString","pathSegments","getDomainFromUrl","getAbsoluteUrl","relativeUrl","baseUrl","baseComponents","hashIndex1","hashIndex2","getDeserializedHash","parsedHash","deserializedHash","hashContainsKnownProperties","parameters","error_description","BrowserProtocolUtils","extractBrowserRequestState","requestStateObj","parseServerResponseFromHash","locationHash","hashUrlString","BrowserCacheManager","cacheConfig","COOKIE_LIFE_MULTIPLIER","internalStorage","browserStorage","setupBrowserStorage","temporaryCacheStorage","setupTemporaryCacheStorage","migrateCacheEntries","idTokenKey","clientInfoKey","errorKey","ERROR","errorDescKey","ERROR_DESC","idTokenValue","clientInfoValue","errorValue","errorDescValue","values","keysToMigrate","index","migrateCacheEntry","newKey","setTemporaryCache","validateAndParseJson","jsonValue","parsedJson","parsedAccount","parsedIdToken","accessTokenKey","parsedAccessToken","refreshTokenKey","parsedRefreshToken","appMetadataKey","parsedMetadata","serverTelemetryKey","serverTelemetry","allKeys","setWrapperMetadata","wrapperSKU","wrapperVersion","WRAPPER_SKU","WRAPPER_VER","getWrapperMetadata","sku","getActiveAccount","activeAccountIdKey","generateCacheKey","ACTIVE_ACCOUNT","activeAccountId","getAccountInfoByFilter","setActiveAccount","accountObj","getAccountInfoByHints","loginHint","sid","accountSid","throttlingCacheKey","parsedThrottlingCache","throttlingCache","getTemporaryCache","storeAuthStateInCookie","itemCookie","getItemCookie","setItemCookie","clearItemCookie","cookieName","cookieValue","expires","cookieStr","expireTime","getCookieExpirationTime","secureCookies","document","cookie","cookieList","charAt","clearMsalCookies","cookiePrefix","cookieKey","cookieLifeDays","today","expr","getCache","setCache","generatedKey","ADAL_ID_TOKEN","generateAuthorityKey","stateId","AUTHORITY","generateNonceKey","NONCE_IDTOKEN","generateStateKey","REQUEST_STATE","getCachedAuthority","cachedState","stateCacheKey","authorityCacheKey","updateCacheEntries","authorityInstance","nonceCacheKey","ccsCredential","HOME_ACCOUNT_ID","CCS_CREDENTIAL","UPN","resetRequestCache","REQUEST_PARAMS","ORIGIN_URI","URL_HASH","CORRELATION_ID","NATIVE_REQUEST","setInteractionInProgress","cleanRequestByState","stateKey","cleanRequestByInteractionType","interactionType","stateValue","parsedState","cacheCodeRequest","authCodeRequest","encodedValue","getCachedRequest","encodedTokenRequest","parsedRequest","cachedAuthority","getCachedNativeRequest","cachedRequest","isInteractionInProgress","getInteractionInProgress","INTERACTION_STATUS_KEY","inProgress","getLegacyLoginHint","adalIdTokenString","msalIdTokenString","cachedIdTokenString","currentCacheKey","cacheItem","DEFAULT_BROWSER_CACHE_MANAGER","cacheOptions","DEFAULT_TOKEN_RENEWAL_OFFSET_SEC","DEFAULT_SYSTEM_OPTIONS","tokenRenewalOffsetSeconds","preventCorsPreflight","proxyUrl","DEFAULT_LOGGER_IMPLEMENTATION","DEFAULT_NETWORK_IMPLEMENTATION","sendGetRequestAsync","sendPostRequestAsync","DEFAULT_LIBRARY_INFO","cpu","os","DEFAULT_CLIENT_CREDENTIALS","clientSecret","clientAssertion","DEFAULT_AZURE_CLOUD_OPTIONS","azureCloudInstance","None","tenant","DEFAULT_TELEMETRY_OPTIONS","application","buildClientConfiguration","userAuthOptions","authOptions","userSystemOptions","systemOptions","userLoggerOption","storageImplementation","storageInterface","networkImplementation","networkInterface","cryptoImplementation","cryptoInterface","clientCredentials","libraryInfo","telemetry","serverTelemetryManager","persistencePlugin","serializableCache","buildAuthOptions","clientCapabilities","azureCloudOptions","StubbedNetworkModule","FetchClient","fetch","GET","getFetchHeaders","navigator","onLine","getHeaderDict","reqBody","POST","Headers","optionsHeaders","append","headerDict","XhrClient","sendRequestAsync","setXhrHeaders","jsonResponse","networkResponse","headers_1","headerString","getAllResponseHeaders","headerArr","parts","headerName","shift","headerVal","BrowserUtils","clearHash","contentWindow","location","history","replaceState","origin","pathname","replaceHash","urlParts","isInIframe","parent","isInPopup","opener","getCurrentUri","href","getHomepage","currentUrl","getBrowserNetworkClient","blockReloadInHiddenIframes","isResponseHash","blockRedirectInIframe","allowRedirectInIframe","isIframedApp","Redirect","blockAcquireTokenInPopups","blockNonBrowserEnvironment","isBrowserEnvironment","blockNativeBrokerCalledBeforeInitialized","allowNativeBroker","initialized","detectIEOrEdge","ua","userAgent","msie","msie11","msedge","isIE","isEdge","NavigationClient","navigateInternal","defaultNavigateWindow","navigateExternal","noHistory","DEFAULT_POPUP_TIMEOUT_MS","DEFAULT_IFRAME_TIMEOUT_MS","DEFAULT_REDIRECT_TIMEOUT_MS","DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS","buildConfiguration","userInputAuth","auth","userInputCache","userInputSystem","system","userInputTelemetry","DEFAULT_AUTH_OPTIONS","knownAuthorities","cloudDiscoveryMetadata","authorityMetadata","redirectUri","postLogoutRedirectUri","navigateToLoginRequestUrl","protocolMode","AAD","DEFAULT_CACHE_OPTIONS","DEFAULT_LOGGER_OPTIONS","DEFAULT_BROWSER_SYSTEM_OPTIONS","networkClient","navigationClient","loadFrameTimeout","windowHashTimeout","iframeHashTimeout","navigateFrameWait","redirectNavigationTimeout","asyncPopups","nativeBrokerHandshakeTimeout","overlayedConfig","EventType","KeyLocation","EventHandler","eventCallbacks","listeningToStorageEvents","handleAccountCacheChange","bind","addEventCallback","removeEventCallback","enableAccountStorageEvents","disableAccountStorageEvents","removeEventListener","emitEvent","eventType","message_1","cacheValue","newValue","oldValue","parsedValue","ACCOUNT_ADDED","ACCOUNT_REMOVED","ThrottlingUtils","generateThrottlingStorageKey","thumbprint","preProcess","cacheManager","throttleTime","THROTTLING","errorCodes","postProcess","checkResponseStatus","checkResponseForRetryAfter","thumbprintValue","calculateThrottleTime","parseInt","RETRY_AFTER","error_codes","time","currentSeconds","floor","min","removeThrottle","homeAccountIdentifier","shrClaims","NetworkManager","sendPostRequest","tokenEndpoint","BaseClient","configuration","config","networkManager","createTokenRequestHeaders","ccsCred","CONTENT_TYPE","CCS_HEADER","executePostToTokenEndpoint","clearTelemetryCache","updateAuthority","updatedAuthority","discoveryComplete","RequestValidator","validateRedirectUri","validatePrompt","prompt","promptValues","validateClaims","validateCodeChallengeParams","codeChallengeMethod","validateCodeChallengeMethod","sanitizeEQParams","eQParams","queryParams","RequestParameterBuilder","addResponseTypeCode","RESPONSE_TYPE","addResponseTypeForTokenAndIdToken","addResponseMode","responseMode","RESPONSE_MODE","QUERY","addNativeBroker","NATIVE_BROKER","addScopes","addOidcScopes","requestScopes","SCOPE","addClientId","CLIENT_ID","addRedirectUri","REDIRECT_URI","addPostLogoutRedirectUri","POST_LOGOUT_URI","addIdTokenHint","idTokenHint","ID_TOKEN_HINT","addDomainHint","domainHint","DOMAIN_HINT","addLoginHint","LOGIN_HINT","addCcsUpn","addCcsOid","addSid","SID","addClaims","mergedClaims","addClientCapabilitiesToClaims","addCorrelationId","CLIENT_REQUEST_ID","addLibraryInfo","X_CLIENT_SKU","X_CLIENT_VER","X_CLIENT_OS","X_CLIENT_CPU","addApplicationTelemetry","appTelemetry","X_APP_NAME","X_APP_VER","addPrompt","PROMPT","addState","STATE","addNonce","NONCE","addCodeChallengeParams","CODE_CHALLENGE","CODE_CHALLENGE_METHOD","addAuthorizationCode","CODE","addDeviceCode","DEVICE_CODE","addRefreshToken","addCodeVerifier","CODE_VERIFIER","addClientSecret","CLIENT_SECRET","addClientAssertion","CLIENT_ASSERTION","addClientAssertionType","clientAssertionType","CLIENT_ASSERTION_TYPE","addOboAssertion","OBO_ASSERTION","addRequestTokenUse","tokenUse","REQUESTED_TOKEN_USE","addGrantType","grantType","GRANT_TYPE","addClientInfo","addExtraQueryParameters","eQparams","XMS_CC","addUsername","addPassword","password","addPopToken","cnfString","TOKEN_TYPE","REQ_CNF","addSshJwk","sshJwkString","addServerTelemetry","X_CLIENT_CURR_TELEM","generateCurrentRequestHeaderValue","X_CLIENT_LAST_TELEM","generateLastRequestHeaderValue","addThrottling","X_MS_LIB_CAPABILITY","addLogoutHint","logoutHint","LOGOUT_HINT","createQueryString","queryParameterArray","CacheRecord","accessTokenEntity","refreshTokenEntity","appMetadataEntity","PopTokenGenerator","generateCnf","reqCnf","generateKid","generateCnfHash","kidThumbprint","xms_ksl","SW","signPopToken","signPayload","shrNonce","resourceUrlString","resourceUrlComponents","at","ts","toUpperCase","u","q","client_claims","TokenCacheContext","tokenCache","hasChanged","ResponseHandler","cacheStorage","validateServerAuthorizationCodeResponse","serverResponseHash","client_info","validateTokenResponse","serverResponse","errString","correlation_id","trace_id","handleServerTokenResponse","serverTokenResponse","reqTimestamp","authCodePayload","handlingRefreshTokenResponse","idTokenObj","cacheContext","id_token","key_id","generateCacheRecord","beforeCacheAccess","generateAuthenticationResult","afterCacheAccess","spa_code","generateAccountEntity","access_token","responseScopes","expiresIn","expires_in","extExpiresIn","ext_expires_in","refreshIn","refresh_in","tokenExpirationSeconds","extendedTokenExpirationSeconds","refreshOnSeconds","token_type","refresh_token","foci","cloud_graph_host_name","msGraphhost","msgraph_host","fromTokenCache","requestState","popTokenGenerator","canonicalAuthority","uniqueId","fromCache","fromNativeBroker","AuthorizationCodeClient","includeRedirectUri","getAuthCodeUrl","createAuthCodeUrlQueryString","authorizationEndpoint","acquireToken","responseHandler","executeTokenRequest","handleFragmentResponse","hashFragment","serverParams","getLogoutUri","logoutRequest","createLogoutUrlQueryString","endSessionEndpoint","requestBody","queryParameters","createTokenRequestBody","createTokenQueryParameters","parameterBuilder","tokenQueryParameters","assertion","assertionType","AUTHORIZATION_CODE_GRANT","sshJwk","tokenBodyParameters","enableSpaAuthorizationCode","RETURN_SPA_CODE","cnfHash","extraScopesToConsent","extractAccountSid","extraQueryParameters","nativeBroker","isOpenIdConfigResponse","isCloudInstanceDiscoveryResponse","NativeStatusCode","RegionDiscovery","detectRegion","environmentRegion","regionDiscoveryMetadata","autodetectedRegionName","localIMDSVersionResponse","currentIMDSVersion","currentIMDSVersionResponse","IMDS_OPTIONS","getRegionFromIMDS","httpSuccess","region_source","IMDS","httpBadRequest","getCurrentVersion","FAILED_AUTO_DETECTION","ENVIRONMENT_VARIABLE","Metadata","Authority","authorityOptions","_canonicalAuthority","regionDiscovery","region_used","region_outcome","canonicalAuthorityUrlComponents","Default","_canonicalAuthorityUrlComponents","replacePath","replaceTenant","cachedAuthorityUrl","cachedAuthorityParts","currentAuthorityParts","currentPart","cachedPart","OIDC","resolveEndpointsAsync","metadataEntity","cloudDiscoverySource","endpointSource","hostnameAndPort","CACHE","azureRegion","getEndpointMetadataFromConfig","CONFIG","isAuthoritySameType","getEndpointMetadataFromNetwork","azureRegionConfiguration","AUTO_DETECTION_REQUESTED_SUCCESSFUL","AUTO_DETECTION_REQUESTED_FAILED","CONFIGURED_MATCHES_DETECTED","CONFIGURED_NOT_DETECTED","CONFIGURED_NO_AUTO_DETECTION","replaceWithRegionalInformation","NETWORK","defaultOpenIdConfigurationEndpoint","cachedParts","getCloudDiscoveryMetadataFromConfig","getCloudDiscoveryMetadataFromNetwork","parsedResponse","getCloudDiscoveryMetadataFromNetworkResponse","isInKnownAuthorities","createCloudDiscoveryMetadataFromHost","instanceDiscoveryEndpoint","generateAuthority","authorityString","authorityAzureCloudInstance","isAlias","isPublicCloudAuthority","buildRegionalAuthorityString","region","authorityUrlInstance","authorityUrlParts","hostNameAndPort","AuthorityFactory","createDiscoveredInstance","authorityUri","acquireTokenAuthority","createInstance","authorityUrl","ServerTelemetryManager","telemetryRequest","cacheOutcome","NO_CACHE_HIT","apiId","wrapperVer","telemetryCacheKey","platformFields","regionDiscoveryFields","getRegionDiscoveryFields","requestWithRegionDiscoveryFields","lastRequests","getLastRequests","maxErrors","maxErrorsToSend","errorCount","overflow","cacheFailedRequest","incrementCacheHits","initialValue","numErrorsFlushed","serverTelemEntity","serverTelemetryEntity","dataSize","regionUsed","regionSource","regionOutcome","updateRegionDiscoveryMetadata","setCacheOutcome","BaseInteractionClient","storageImpl","eventHandler","nativeMessageHandler","clearCacheOnLogout","initializeBaseRequest","validatedRequest","getRedirectUri","requestRedirectUri","initializeServerTelemetryManager","forceRefresh","telemetryPayload","getDiscoveredAuthority","requestAuthority","StandardInteractionClient","initializeAuthorizationCodeRequest","generatedPkceParams","initializeLogoutRequest","validLogoutRequest","getLogoutHintFromIdTokenClaims","login_hint","createAuthCodeClient","requestAzureCloudOptions","clientConfig","getClientConfiguration","discoveredAuthority","validateAndExtractStateFromHash","requestCorrelationId","platformStateObj","getAuthorityMeasurement","userAuthority","builtAuthority","StandardInteractionClientGetDiscoveredAuthority","catch","initializeAuthorizationRequest","browserState","legacyLoginHint","FRAGMENT","PopupUtils","unloadWindow","openPopup","urlNavigate","popupParams","popupWindow","popup","openSizedPopup","popupName","popupWindowAttributes","focus","currentWindow","winLeft","screenLeft","screenX","winTop","screenTop","screenY","winWidth","innerWidth","documentElement","clientWidth","winHeight","innerHeight","clientHeight","width","popupSize","height","top","popupPosition","left","max","Popup","preventDefault","cleanPopup","monitorPopupForSameOrigin","intervalId","setInterval","closed","clearInterval","generatePopupName","generateLogoutPopupName","InteractionHandler","authCodeModule","browserRequestLogger","authModule","handleCodeResponseFromHash","networkModule","authCodeResponse","handleCodeResponseFromServer","validateNonce","nonceKey","cachedNonce","cachedCcsCred","tokenResponse","cloud_instance_host_name","updateTokenEndpointAuthority","checkCcsCredentials","cloudInstanceHostname","cloudInstanceAuthorityUri","cloudInstanceAuthority","PopupHandler","popupUtils","initiateAuthRequest","requestUrl","monitorPopupForHash","contentHash","NativeAuthErrorMessage","extensionError","userSwitch","NativeAuthError","description","ext","isFatal","PERSISTENT_ERROR","createError","USER_INTERACTION_REQUIRED","USER_CANCEL","NO_NETWORK","createUserSwitchError","NativeInteractionClient","provider","nativeATMeasurement","nativeRequest","messageBody","validatedResponse","NativeInteractionClientAcquireToken","initializeNativeRequest","GetToken","sendMessage","validateNativeResponse","handleNativeResponse","isNativeBroker","acquireTokenRedirect","navigationOptions","handleRedirectPromise","logout","authorityPreferredCache","accountProperties","responseAccessToken","responseTokenType","shrParameters","properties","shr","instanceAware","instance_aware","windowTitleSubstring","title","extraParameters","extendedExpiryToken","req_cnf","ssoSilent","acquireTokenSilent_silentFlow","NativeMessageHandler","handshakeTimeoutMs","extensionId","resolvers","handshakeResolvers","responseId","messageChannel","MessageChannel","windowListener","onWindowMessage","req","channel","port1","postMessage","createProvider","preferredProvider","backupProvider","sendHandshakeRequest","HandshakeRequest","onmessage","onChannelMessage","port2","timeoutId","source","clearTimeout","handshakeResolver","resolver","Response","HandshakeResponse","isNativeAvailable","nativeExtensionProvider","PopupClient","acquireTokenPopupAsync","mainWindowRedirectUri","logoutPopupAsync","validRequest","authClient","fetchNativeAccountIdMeasurement","navigateUrl","interactionHandler","popupParameters","state_1","nativeInteractionClient","acquireTokenPopup","FetchAccountIdWithNativeBroker","POPUP_OPENED","finally","logoutUri","absoluteUrl","LOGOUT_START","logoutPopup","LOGOUT_SUCCESS","LOGOUT_FAILURE","LOGOUT_END","RedirectHandler","navigate","redirectStartPage","redirectTimeout","onRedirectNavigate","RedirectClient","handleBackButton","persisted","getRedirectStartPage","responseHash","loginRequestUrl","loginRequestUrlNormalized","currentUrlNormalized","handleHashResult","processHashOnRedirect","homepage","getRedirectResponseHash","handleHash","cachedHash","currentAuthority","requestStartPage","SilentHandler","loadFrame","loadFrameSync","monitorIframeForHash","iframe","nowMark","performance","timeoutMark","removeHiddenIframe","frameHandle","createHiddenIframe","src","authFrame","createElement","style","visibility","position","border","setAttribute","getElementsByTagName","appendChild","parentNode","removeChild","SilentIframeClient","acquireTokenMeasurement","silentRequest","SilentIframeClientAcquireToken","Silent","silentTokenHelper","silentHandler","msalFrame","RefreshTokenClient","acquireTokenByRefreshToken","isFOCI","noFamilyRTInCache","clientMismatchErrorWithFamilyRT","acquireTokenWithCachedRefreshToken","refreshTokenRequest","REFRESH_TOKEN_GRANT","SilentRefreshClient","refreshTokenClient","SilentRefreshClientAcquireToken","createRefreshTokenClient","TokenCache","storage","loadExternalTokens","loadIdToken","loadAccessToken","idAuthToken","SilentFlowClient","acquireCachedToken","FORCE_REFRESH","NO_CACHED_ACCESS_TOKEN","CACHED_ACCESS_TOKEN_EXPIRED","REFRESH_CACHED_ACCESS_TOKEN","generateResultFromCacheRecord","SilentCacheClient","silentAuthClient","cachedToken","error_1","SilentCacheClientAcquireToken","createSilentFlowClient","initializeSilentRequest","HybridSpaAuthorizationCodeClient","SilentAuthCodeClient","cloudInstanceHostName","BrowserPerformanceMeasurement","startMark","endMark","supportsBrowserPerformance","mark","measure","clearMarks","clearMeasures","getEntriesByName","entriesForMeasurement","duration","BrowserPerformanceClient","getPageVisibility","visibilityState","startPageVisibility","endPageVisibility","ClientApplication","redirectResponse","hybridAuthCodeResponses","initialize","INITIALIZE_START","INITIALIZE_END","loggedInAccounts","redirectResponseKey","nativeClient","redirectClient","HANDLE_REDIRECT_START","createRedirectClient","isLoggingIn","LOGIN_SUCCESS","ACQUIRE_TOKEN_SUCCESS","HANDLE_REDIRECT_END","ACQUIRE_TOKEN_FAILURE","LOGIN_FAILURE","isLoggedIn","getRequestCorrelationId","preflightBrowserEnvironmentCheck","ACQUIRE_TOKEN_START","LOGIN_START","canUseNative","getNativeAccountId","atPopupMeasurement","AcquireTokenPopup","acquireTokenNative","popupClient","createPopupClient","ssoSilentMeasurement","silentIframeClient","SsoSilent","SSO_SILENT_START","createSilentIframeClient","SSO_SILENT_SUCCESS","SSO_SILENT_FAILURE","acquireTokenByCode","atbcMeasurement","hybridAuthCode_1","ACQUIRE_TOKEN_BY_CODE_START","AcquireTokenByCode","acquireTokenByCodeAsync","ACQUIRE_TOKEN_BY_CODE_SUCCESS","ACQUIRE_TOKEN_BY_CODE_FAILURE","silentAuthCodeClient","silentTokenResult","createSilentAuthCodeClient","atbrtMeasurement","silentRefreshClient","AcquireTokenByRefreshToken","ACQUIRE_TOKEN_NETWORK_START","createSilentRefreshClient","isServerError","isInvalidGrantError","logoutRedirect","getAccountByUsername","userName","getAccountByHomeId","getAccountByLocalId","preflightInteractiveRequest","createSilentCacheClient","getTokenCache","getLogger","setLogger","initializeWrapperLibrary","setNavigationClient","getConfiguration","PublicClientApplication","activeSilentTokenRequests","loginRedirect","loginPopup","acquireTokenSilent","atsMeasurement","silentRequestKey","cachedResponse","AcquireTokenSilent","acquireTokenSilentAsync","astsAsyncMeasurement","silentCacheClient","silentRequest_1","AcquireTokenSilentAsync","tokenRenewalError","stringToByteArray$1","out","c","byteArrayToString","bytes","pos","c1","c2","c3","c4","base64","byteToCharMap_","charToByteMap_","byteToCharMapWebSafe_","charToByteMapWebSafe_","ENCODED_VALS_BASE","ENCODED_VALS","ENCODED_VALS_WEBSAFE","HAS_NATIVE_SUPPORT","atob","encodeByteArray","webSafe","isArray","init_","byteToCharMap","output","byte1","haveByte2","byte2","haveByte3","byte3","outByte1","outByte2","outByte3","outByte4","encodeString","btoa","decodeString","decodeStringToByteArray","charToByteMap","haveByte4","byte4","utf8Bytes","base64urlEncodeWithoutPadding","console","Deferred","promise","wrapCallback","getUA","isMobileCordova","isBrowserExtension","runtime","chrome","browser","isReactNative","isIndexedDBAvailable","validateIndexedDBOpenable","preExist","DB_CHECK_NAME","self","onsuccess","onupgradeneeded","ERROR_NAME","FirebaseError","customData","super","captureStackTrace","ErrorFactory","service","serviceName","fullCode","template","replaceTemplate","fullMessage","PATTERN","deepEqual","aKeys","bKeys","includes","aProp","bProp","isObject","thing","querystring","querystringParams","entries","arrayVal","querystringDecode","tokens","token","extractQuerystring","queryStart","fragmentStart","createSubscribe","executor","onNoObservers","proxy","ObserverProxy","subscribe","observers","unsubscribes","observerCount","task","finalized","forEachObserver","observer","complete","nextOrObserver","implementsAnyMethods","noop","unsub","unsubscribeOne","finalError","fn","sendOne","methods","getModularInstance","_delegate","DisabledPropertyName","SampleRate","ProcessLegacy","HttpMethod","DEFAULT_BREEZE_ENDPOINT","DEFAULT_BREEZE_PATH","strNotSpecified","strIkey","createDomEvent","eventName","Event","doc","createEvent","initEvent","StorageType","DistributedTracingModes","AI","AI_AND_W3C","W3C","strEmpty","stringToBoolOrDefault","defaultValue","msToTimeSpan","totalms","isNaN","ms","sec","hour","days","getExtensionByName","extensions","identifier","extension","isCrossOriginError","lineNumber","columnNumber","RequestHeaders","requestContextHeader","requestContextTargetKey","requestContextAppIdFormat","requestIdHeader","traceParentHeader","traceStateHeader","sdkContextHeader","sdkContextHeaderAppIdRequest","requestContextHeaderLowerCase","_canUseLocalStorage","_canUseSessionStorage","_getLocalStorageObject","utlCanUseLocalStorage","_getVerifiedStorageObject","storageType","fail","exception","_getSessionStorageObject","utlCanUseSessionStorage","utlDisableStorage","utlEnableStorage","reset","utlGetLocalStorage","utlSetLocalStorage","utlRemoveStorage","utlGetSessionStorageKeys","utlGetSessionStorage","utlSetSessionStorage","utlRemoveSessionStorage","dataSanitizeKeyAndAddUniqueness","origLength","field","dataSanitizeKey","uniqueField","dsPadNumber","nameTrunc","dataSanitizeString","maxLength","valueTrunc","dataSanitizeUrl","dataSanitizeInput","dataSanitizeMessage","messageTrunc","dataSanitizeException","exceptionTrunc","dataSanitizeProperties","tempProps_1","prop","dataSanitizeMeasurements","measurements","tempMeasurements_1","dataSanitizeId","_msgId","inputTrunc","substr","DataSanitizer","MAX_NAME_LENGTH","MAX_ID_LENGTH","MAX_PROPERTY_LENGTH","MAX_STRING_LENGTH","MAX_URL_LENGTH","MAX_MESSAGE_LENGTH","MAX_EXCEPTION_LENGTH","sanitizeKey","sanitizeString","sanitizeUrl","sanitizeMessage","sanitizeId","sanitizeInput","padNumber","_document","_htmlAnchorIdx","_htmlAnchorElement","urlParseUrl","anchorIdx","anchorCache","tempAnchor","urlParseHost","urlGetAbsoluteUrl","urlGetPathName","urlGetCompleteUrl","inclPort","fullHost","urlParseFullHost","protocol","port","_internalEndpoints","isInternalApplicationInsightsEndpoint","endpointUrl","Util","NotSpecified","disableStorage","canUseLocalStorage","getStorage","setStorage","removeStorage","canUseSessionStorage","getSessionStorageKeys","getSessionStorage","setSessionStorage","removeSessionStorage","disableCookies","canUseCookies","disallowsSameSiteNone","setCookie","getCookie","deleteCookie","newId","random32","generateW3CId","isError","isDate","toISOStringForIE8","getIEVersion","dump","getExceptionName","addEventHandler","IsBeaconApiSupported","getExtension","UrlHelper","parseUrl","getPathName","getCompleteUrl","parseHost","parseFullHost","CorrelationIdHelper","correlationIdPrefix","canIncludeCorrelationHeader","currentHost","disableCorrelationHeaders","correlationHeaderExcludePatterns","requestHost","enableCorsCorrelation","matchExists_1","includedDomains","correlationHeaderDomains","domain","excludedDomains","correlationHeaderExcludedDomains","getCorrelationContext","responseHeader","getCorrelationContextValue","keyValues","keyValue","AjaxHelperParseDependencyPath","commandName","parsedUrl","pathName","dateTimeUtilsNow","perf","timing","navigationStart","dateTimeUtilsDuration","start","end","DateTimeUtils","Now","GetDuration","createDistributedTraceContextFromTrace","telemetryTrace","parentCtx","getName","setName","getTraceId","traceID","setTraceId","getSpanId","parentID","setSpanId","getTraceFlags","traceFlags","setTraceFlags","newTraceFlags","_DYN_SPLIT","_DYN_LENGTH","_DYN_TO_LOWER_CASE","_DYN_INGESTIONENDPOINT","_DYN_TO_STRING","_DYN_REMOVE_ITEM","_DYN_NAME","_DYN_MESSAGE","_DYN_COUNT","_DYN_STRINGIFY","_DYN_PATHNAME","_DYN_CORRELATION_HEADER_E0","_DYN_INDEX_OF","_DYN_EXTENSION_CONFIG","_DYN_EXCEPTIONS","_DYN_PARSED_STACK","_DYN_PROPERTIES","_DYN_MEASUREMENTS","_DYN_SIZE_IN_BYTES","_DYN_TYPE_NAME","_DYN_SEVERITY_LEVEL","_DYN_PROBLEM_GROUP","_DYN_IS_MANUAL","_DYN__CREATE_FROM_INTERFA1","_DYN_HAS_FULL_STACK","_DYN_LEVEL","_DYN_METHOD","_DYN_ASSEMBLY","_DYN_FILE_NAME","_DYN_LINE","_DYN_DURATION","_DYN_RECEIVED_RESPONSE","_DYN_SUBSTRING","_DYN_SANITIZE_KEY_AND_ADD2","_DYN_SANITIZE_EXCEPTION","_DYN_SANITIZE_PROPERTIES","_DYN_SANITIZE_MEASUREMENT3","createEnumStyle","enumClass","createValueMap","mapClass","strToGMTString","strToUTCString","strCookie","strExpires","strEnabled","strIsCookieUseDisabled","strDisableCookiesUsage","strConfigCookieMgr","_supportsCookies","_allowUaSameSite","_parsedCookieValue","_doc","_cookieCache","_globalCookieConfig","_gblCookieMgr","inst","createCookieMgr","_isMgrEnabled","cookieMgr","isEnabled","_createCookieMgrConfig","rootConfig","cookieMgrCfg","cookieDomain","cookiePath","cookieEnabled","_isIgnoredCookie","ignoreCookies","_isBlockedCookie","blockedCookies","safeGetCookieMgr","core","getCookieMgr","cookieCfg","cookieMgrConfig","_path","path","_domain","_enabled","enabled","areCookiesSupported","gblManager","maxAgeSec","theValue","idx","_extractParts","_isIE","nowMs","expireMs","expiry","setTime","_formatDate","location_1","uaDisallowsSameSiteNone","setCookieFn","_setCookieValue","_formatCookieValue","_getCookieValue","del","purge","delCookie","thePart","theDate","func","theCookie","_canUseCookies","_cookieMgrs","newGuid","uuid","perfNow","tmp","hexValues","oct","clockSequenceHi","CoreUtils","isTypeof","isUndefined","isNullOrUndefined","isFunction","isString","isNumber","isBoolean","toISOString","arrForEach","arrIndexOf","arrMap","arrReduce","strTrim","objCreate","objKeys","objDefineAccessors","dateNow","randomValue","mwcRandomSeed","mwcRandom32","_legacyCookieMgr","legacyCanUseCookies","mgr","_objDefineProperty","instanceName","_dataUid","_createAccessor","_canAcceptData","_getCache","theCache","createUniqueNamespace","includeVersion","createElmNodeData","accept","defValue","addDefault","kill","_debugListener","listenerFuncs","_aiNamespace","_listenerProxyFunc","args","dbgExt","getDebugExt","listener","_getExtensionNamespace","ns","disableDbgExt","getDebugListener","lp","AiNonUserActionablePrefix","AiUserActionablePrefix","AIInternalMessagePrefix","_sanitizeDiagnosticText","text","_logToConsole","theConsole","logFunc","_InternalLogMessage","msgId","msg","isUserAct","_self","strProps","diagnosticText","dataType","safeGetLogger","DiagnosticLogger","queue","_loggingLevelConsole","_loggingLevelTelemetry","_maxInternalMessageLimit","_enableDebugExceptions","_messageCount","_messageLogged","_logInternalMessage","severity","_areInternalMessagesThrottled","messageKey","_debugExtMsg","throttleLimitMessage","throttleMessage","_setDefaultsFromConfig","loggingLevelConsole","loggingLevelTelemetry","maxMessageLimit","consoleLoggingLevel","telemetryLoggingLevel","maxInternalMessageLimit","throwInternal","resetInternalMessageCount","__ieDyn","_getLogger","_throwInternal","_warnToConsole","strWindow","strDocument","strDocumentMode","strNavigator","strHistory","strLocation","strConsole","strPerformance","strJSON","strCrypto","strMsCrypto","strReactNative","strMsie","strTrident","strXMLHttpRequest","_isTrident","_navUserAgentCheck","_enableMocks","_useXDomainRequest","_beaconsSupported","_hasProperty","theClass","property","supported","proto","getGlobalInst","gbl","hasWindow","Boolean","getWindow","hasDocument","getDocument","hasNavigator","getNavigator","hasHistory","getHistory","getLocation","checkForMock","mockLocation","getConsole","getPerformance","hasJSON","getJSON","getCrypto","getMsCrypto","nav","product","userAgentStr","navigator_1","tridentVer","dumpObj","object","objectTypeDump","propertyValueDump","stack","isBeaconsSupported","sendBeacon","isFetchSupported","withKeepAlive","isSupported","useXDomainRequest","XDomainRequest","isXhrSupported","xmlHttpRequest","strOnPrefix","strAttachEvent","strAddEventHelper","strDetachEvent","strRemoveEventListener","strEvents","strVisibilityChangeEvt","strPageHide","strUnload","strBeforeUnload","strPageHideNamespace","rRemoveEmptyNs","rRemoveTrailingEmptyNs","_guid","elmNodeData","eventNamespace","_normalizeNamespace","_getEvtNamespace","evtNamespace","theNamespace_1","parsedEvent","_getRegisteredEvents","evtName","aiEvts","registeredEvents","_doDetach","handlerRef","useCapture","_doAttach","_doUnregister","unRegFn","theEvent","capture","_unregisterEvents","eventCache","evtType","mergeEvtNamespace","theNamespace","namespaces","newNamespaces","eventOn","registeredEvent","eventOff","evtName_1","found_1","regEvent","attachEvent","eventNameWithoutOn","detachEvent","w","removeEventHandler","_addEventListeners","excludeEvents","added","addEventListeners","removeEventListeners","addPageUnloadEventListener","removePageUnloadEventListener","addPageHideEventListener","_handlePageVisibility","evt","pageUnloadAdded","removePageHideEventListener","strToISOString","cStrEndsWith","cStrStartsWith","strIndexOf","strMap","strReduce","cStrTrim","strToString","str__Proto","strConstructor","_objFreeze","_objKeys","StringProto","_strTrim","_strEndsWith","DateProto","_dataToISOString","_isArray","_objToString","_fnToString","_objFunctionString","rCamelCase","rNormalizeInvalid","rLeadingNumeric","_objGetPrototypeOf","_getObjProto","newProto","theType","isNotNullOrUndefined","normalizeJsName","_all","letter","objForEachKey","callbackfn","strEndsWith","_strEndsWithPoly","searchLen","valLen","strContains","_isArrayPoly","isPlainObject","date","_toISOStringPoly","getUTCFullYear","pad","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","toFixed","len","searchElement","fromIndex","from","abs","results","_objKeysHasDontEnumBug","propertyIsEnumerable","_objKeysDontEnums","objType","dontEnumsLength","getProp","setProp","descriptor","_doNothing","deepFreeze","objFreeze","dt","setValue","valChk","srcChk","getSetValue","getCfgValue","isTruthy","throwError","_createProxyFunction","funcName","srcFunc","originalArguments","proxyAssign","chkSet","_loop_1","proxyFunctionAs","theFunc","overwriteTarget","proxyFunctions","functionsToProxy","theFuncName","createClassFromInterface","defaults","class_1","_this_1","optimizeObject","theObject","objExtend","obj1","obj2","obj3","obj4","obj5","obj6","theArgs","extended","argLen","deep","arg","isArgArray","isArgObj","propOk","isNewArray","STR_EMPTY","STR_CHANNELS","STR_CORE","STR_CREATE_PERF_MGR","STR_DISABLED","STR_EXTENSION_CONFIG","STR_EXTENSIONS","STR_PROCESS_TELEMETRY","STR_PRIORITY","STR_EVENTS_SENT","STR_EVENTS_DISCARDED","STR_EVENTS_SEND_REQUEST","STR_PERF_EVENT","STR_ERROR_TO_CONSOLE","STR_WARN_TO_CONSOLE","STR_GET_PERF_MGR","UInt32Mask","MaxUInt32","_mwcSeeded","_mwcW","_mwcZ","_mwcSeed","seedValue","_autoSeedMwc","maxValue","signed","Uint32Array","base64chars","number","chars","DEFAULT_VERSION","INVALID_VERSION","INVALID_TRACE_ID","INVALID_SPAN_ID","_isValid","invalidValue","_formatValue","_formatFlags","createTraceParent","traceId","spanId","flags","isValidTraceId","isValidSpanId","formatTraceParent","_DYN_INITIALIZE","_DYN_GET_NOTIFY_MGR","_DYN_IDENTIFIER","_DYN_PUSH","_DYN_IS_INITIALIZED","_DYN_CONFIG","_DYN_INSTRUMENTATION_KEY","_DYN_LOGGER","_DYN_TIME","_DYN_PROCESS_NEXT","_DYN_GET_PROCESS_TEL_CONT0","_DYN_ADD_NOTIFICATION_LIS1","_DYN_REMOVE_NOTIFICATION_2","_DYN_STOP_POLLING_INTERNA3","_DYN_ON_COMPLETE","_DYN_GET_PLUGIN","_DYN_FLUSH","_DYN__EXTENSIONS","_DYN_SPLICE","_DYN_TEARDOWN","_DYN_MESSAGE_ID","_DYN_IS_ASYNC","_DYN__DO_TEARDOWN","_DYN_UPDATE","_DYN_GET_NEXT","_DYN_DIAG_LOG","_DYN_SET_NEXT_PLUGIN","_DYN_CREATE_NEW","_DYN_COOKIE_CFG","_DYN_USER_AGENT","_DYN_SET_ENABLED","_DYN_SUBSTR","_DYN_NODE_TYPE","_DYN_APPLY","_DYN_REPLACE","_DYN_ENABLE_DEBUG_EXCEPTI4","_DYN_LOG_INTERNAL_MESSAGE","_DYN_CALL","_DYN_TYPE","_DYN_HANDLER","_DYN_LISTENERS","_DYN_IS_CHILD_EVT","_DYN_GET_CTX","_DYN_SET_CTX","_DYN_COMPLETE","_DYN_TRACE_ID","_DYN_SPAN_ID","_DYN_TRACE_FLAGS","_DYN_VERSION","strShimFunction","strShimObject","strShimUndefined","strShimPrototype","strShimHasOwnProperty","ObjClass","ObjProto","ObjAssign","ObjCreate","ObjDefineProperty","ObjHasOwnProperty","_cachedGlobal","getGlobal","useCached","globalThis","throwTypeError","objCreateFn","tmpFunc","__objAssignFnImpl","__assignFn","extendStaticsFn","__extendsFn","__spreadArrayFn","to","PropertiesPluginIdentifier","BreezeChannelIdentifier","AnalyticsPluginIdentifier","createTelemetryItem","baseType","envelopeName","customProperties","systemProperties","iKey","telemetryItem","tags","baseData","TelemetryItemCreator","aiDataContract","ver","envelopeType","severityLevel","DataPoint","kind","stdDev","Metric","metrics","dataPoint","PageView","PageViewPerformance","unused","cs4BaseData","perfTotal","networkConnect","sentRequest","receivedResponse","domProcessing","NoMethod","strError","strStack","strStackDetails","strErrorSrc","strMessage","strDescription","_stringify","convertToString","_formatMessage","errorType","evtMessage","_isExceptionDetailsInternal","_isExceptionInternal","_isStackDetails","_convertStackObj","errorStack","items","_getOperaStack","lines","_getStackFromErrorObj","errorObj","reason","_formatStackTrace","stackDetails","_parseStack","parsedStack","frames","level_1","totalSizeInBytes_1","frame","theFrame","_StackFrame","parsedFrame","exceptionParsedStackThreshold","right","acceptedLeft","acceptedRight","lSize","rSize","howMany","splice","_getErrorType","typeName","funcNameRegex","_formatErrorCode","Exception","exceptions","_ExceptionDetails","CreateAutoException","errorSrc","CreateFromInterface","ex","exceptionData","toInterface","problemGroup","isManual","exceptionDetailsInterface","CreateSimpleException","assembly","fileName","line","formatError","outerId","hasFullStack","exceptionDetails","sourceFrame","sizeInBytes","baseSize","RemoteDependencyData","resultCode","requestAPI","correlationContext","dependencyKind","dependencySource","dependencyTypeName","dependencyFields","strExecutionContextKey","strParentContextKey","strChildrenContextKey","_defaultPerfManager","PerfEvent","payloadDetails","isAsync","theDetails_1","accessorDefined","ctx","childTime","childEvts","childEvt","exTime","ParentContextKey","ChildrenContextKey","PerfManager","manager","fire","perfEvent","doPerfActiveKey","doPerf","mgrSource","getSource","perfMgr","perfEvt","currentActive","children","getGblPerfMgr","pluginStateData","_getPluginState","plugin","initializePlugins","processContext","pluginState","initPlugins","lastPlugin","thePlugin","isInitialized","getCfg","sortPlugins","plugins","extA","extB","bHasProcess","createDistributedTraceContext","strTelemetryPluginChain","strHasRunFlags","strGetTelCtx","_chainId","_getNextProxyStart","startAt","createTelemetryProxyChain","_createInternalContext","telemetryChain","_nextProxy","_onComplete","context","_next","_moveNext","diagLog","getExtCfg","_getExtCfg","getConfig","_getConfig","hasNext","getNext","setNext","nextPlugin","iterate","_iterateChain","onComplete","_addOnComplete","that","_i","nextProxy","completeDetails","mergeDefault","theConfig","extConfig","newConfig_1","cfgValue","cb","createProcessTelemetryContext","internalContext","_processNext","_createNew","createProcessTelemetryUnloadContext","unloadState","unload","createProcessTelemetryUpdateContext","updateState","firstProxy","lastProxy_1","newProxy","createTelemetryPluginProxy","_setNext","chainId","hasProcessTelemetry","hasSetNext","proxyChain","getPlugin","processTelemetry","_processTelemetry","_unloadPlugin","update","_updatePlugin","_id","_getTelCtx","itemCtx","_processChain","processPluginFn","hasRun","hasRunContext","nextId","hasNextRun","_callProcessTelemetry","unloadCtx","_callTeardown","pluginCore","updateCtx","_callUpdate","ProcessTelemetryContext","pluginChain","aiInstrumentHooks","cbNames","_arrLoop","_doCallbacks","hooks","callDetails","cbArgs","hookCtx","hook","cbks","orgEx","hookErrorCb","_createFunctionHook","aiHook","funcThis","orgArgs","h","funcArgs","_replaceArg","_createArgs","rslt","_getOwner","checkPrototype","owner","InstrumentProto","InstrumentFunc","_createInstrumentHook","newFunc","theHook","rm","InstrumentEvent","createUnloadHandlerContainer","handlers","_addHandler","handler","_runHandlers","run","strGetPlugin","BaseTelemetryPlugin","_isinitialized","_rootCtx","_nextPlugin","_unloadHandlerContainer","_hooks","currentCtx","rootCtx","_setDefaults","_initDefaults","unloadDone","theUnloadCtx","theUnloadState","_unloadCallback","oldHooks","updateDone","theUpdateCtx","theUpdateState","_doUpdate","_updateCallback","_addHook","setInitialized","_DYN_DISABLE_EXCEPTION_TR0","_DYN_AUTO_TRACK_PAGE_VISI1","_DYN_OVERRIDE_PAGE_VIEW_D2","_DYN_ENABLE_UNHANDLED_PRO3","_DYN_SAMPLING_PERCENTAGE","_DYN_IS_STORAGE_USE_DISAB4","_DYN_IS_BROWSER_LINK_TRAC5","_DYN_ENABLE_AUTO_ROUTE_TR6","_DYN_NAME_PREFIX","_DYN_DISABLE_FLUSH_ON_BEF7","_DYN_CORE","_DYN_DATA_TYPE","_DYN_ENVELOPE_TYPE","_DYN_TRACK","_DYN_TRACK_PAGE_VIEW","_DYN_TRACK_PREVIOUS_PAGE_9","_DYN_SEND_PAGE_VIEW_INTER10","_DYN_SEND_PAGE_VIEW_PERFO11","_DYN_POPULATE_PAGE_VIEW_P12","_DYN_HREF","_DYN_SEND_EXCEPTION_INTER13","_DYN_EXCEPTION","_DYN_ERROR","_DYN__ONERROR","_DYN_ERROR_SRC","_DYN_LINE_NUMBER","_DYN_COLUMN_NUMBER","_DYN__CREATE_AUTO_EXCEPTI14","_DYN_ADD_TELEMETRY_INITIA15","_DYN_IS_PERFORMANCE_TIMIN16","_DYN_GET_PERFORMANCE_TIMI17","_DYN_NAVIGATION_START","_DYN_SHOULD_COLLECT_DURAT18","_DYN_IS_PERFORMANCE_TIMIN19","_DYN_GET_ENTRIES_BY_TYPE","_DYN_RESPONSE_START","_DYN_REQUEST_START","_DYN_LOAD_EVENT_END","_DYN_RESPONSE_END","_DYN_CONNECT_END","_DYN_PAGE_VISIT_START_TIM20","PageViewManager","appInsights","overridePageViewDuration","pageViewPerformanceManager","_logger","intervalHandle","itemQueue","pageViewPerformanceSent","_flushChannels","flush","_addQueue","allItems","doFlush","pageView","uri","customDuration","pageViewSent","maxDurationLimit","processed","pageViewPerformance","isValid","teardown","MAX_DURATION_ALLOWED","botAgentNames","_isPerformanceTimingSupported","_isPerformanceNavigationTimingSupported","getEntriesByType","_isPerformanceTimingDataReady","domainLookupStart","domLoading","_getPerformanceTiming","_getPerformanceNavigationTiming","_shouldCollectDuration","durations","_navigator","isGoogleBot","PageViewPerformanceManager","navigationTiming","total","network","dom","startTime","requestStart","responseEnd","PageVisitTimeManager","pageVisitTimeTrackingHandler","prevPageVisitDataKeyName","restartPageVisitTimer","pageName","pageUrl","prevPageVisitData","stopPageVisitTimer","startPageVisitTimer","currPageVisitData","PageVisitData","currPageVisitDataStr","pageVisitEndTime","pageVisitDataJsonStr","pageVisitTime","currentPageName","currentPageUrl","prevPageVisitTimeData","Timing","_events","stop","action","strEvent","_dispatchEvent","evnt","dispatchEvent","_getReason","MinMilliSeconds","_configMilliseconds","_getDefaultConfig","sessionRenewalMs","sessionExpirationMs","enableDebug","disableFlushOnUnload","_updateStorageUsage","AnalyticsPlugin","_eventTracking","_pageTracking","_pageViewManager","_pageViewPerformanceManager","_pageVisitTimeManager","_preInitTelemetryInitializers","_isBrowserLinkTrackingEnabled","_browserLinkInitializerAdded","_enableAutoRouteTracking","_historyListenerAdded","_disableExceptionTracking","_autoExceptionInstrumented","_enableUnhandledPromiseRejectionTracking","_autoUnhandledPromiseInstrumented","priority","autoRoutePVDelay","_prevUri","_currUri","_evtNamespace","_base","_populateDefaults","_updateBrowserLinkTracking","_addDefaultTelemetryInitializers","trackPageVisitTime","PageName","PageUrl","trackMetric","average","sampleCount","browserLinkPaths_1","dropBrowserLinkRequests","envelope","remoteData","_sendCORSException","_updateExceptionTracking","_window","locn","autoExceptionInstrumented","rsp","_addUnhandledPromiseRejectionTracking","_updateLocationChange","win","_history","pushState","_addHistoryListener","_getDistributedTraceCtx","distributedTraceCtx","getTraceCtx","namePrefix","_popstateHandler","_locationChangeHandler","traceLocationName","refUri","_location","autoUnhandledPromiseInstrumented","processNext","trackEvent","startTrackEvent","stopTrackEvent","trackTrace","metric","inPv","referrer","trackPageViewPerformance","inPvp","startTrackPage","stopTrackPage","loc","theError","exceptionPartB","trackException","URL","telemetryInitializer","initializer","pageViewItem","_doTeardown","Version","getDefaultConfig","_aiNameFunc","baseName","aiName","_aiApplication","_aiDevice","_aiLocation","_aiOperation","_aiSession","_aiUser","_aiCloud","_aiInternal","ContextTagKeys","applicationVersion","applicationBuild","applicationTypeId","applicationId","applicationLayer","deviceId","deviceIp","deviceLanguage","deviceLocale","deviceModel","deviceFriendlyName","deviceNetwork","deviceNetworkName","deviceOEMName","deviceOS","deviceOSVersion","deviceRoleInstance","deviceRoleName","deviceScreenResolution","deviceType","deviceMachineName","deviceVMName","deviceBrowser","deviceBrowserVersion","locationIp","locationCountry","locationProvince","locationCity","operationId","operationParentId","operationRootId","operationSyntheticSource","operationCorrelationVector","sessionId","sessionIsFirst","sessionIsNew","userAccountAcquisitionDate","userAccountId","userId","userStoreRegion","userAuthUserId","userAnonymousUserAcquisitionDate","userAuthenticatedUserAcquisitionDate","cloudName","cloudRole","cloudRoleVer","cloudRoleInstance","cloudEnvironment","cloudLocation","cloudDeploymentUnit","internalNodeName","internalSdkVersion","internalAgentVersion","internalSnippet","internalSdkSrc","Extensions","UserExt","DeviceExt","TraceExt","WebExt","AppExt","OSExt","SessionExt","SDKExt","CtxTagKeys","Envelope","sampleRate","Data","STR_DURATION","_DYN_TAGS","_DYN_DEVICE_TYPE","_DYN_DATA","_DYN_ON_LINE","_DYN_ENQUEUE","_DYN_EMIT_LINE_DELIMITED_0","_DYN_CLEAR","_DYN_BATCH_PAYLOADS","_DYN_MARK_AS_SENT","_DYN_CLEAR_SENT","_DYN__BUFFER__KEY","_DYN__SENT__BUFFER__KEY","_DYN__MAX__BUFFER__SIZE","_DYN_MAX_BATCH_SIZE_IN_BY1","_DYN_TRIGGER_SEND","_DYN_ONUNLOAD_DISABLE_BEA2","_DYN_IS_BEACON_API_DISABL3","_DYN__SENDER","_DYN__SENDER_CONFIG","_DYN__BUFFER","_DYN_ENABLE_SESSION_STORA4","_DYN_ENDPOINT_URL","_DYN_CUSTOM_HEADERS","_DYN_DISABLE_XHR","_DYN_ONUNLOAD_DISABLE_FET5","_DYN_DISABLE_TELEMETRY","_DYN_BASE_TYPE","_DYN_SAMPLE_RATE","_DYN_CONVERT_UNDEFINED","_DYN__XHR_READY_STATE_CHA6","_DYN__ON_ERROR","_DYN__ON_PARTIAL_SUCCESS","_DYN__ON_SUCCESS","_DYN_ITEMS_ACCEPTED","_DYN_ITEMS_RECEIVED","_DYN_IS_RETRY_DISABLED","_DYN_SET_REQUEST_HEADER","_DYN_MAX_BATCH_INTERVAL","_DYN_EVENTS_SEND_REQUEST","_DYN_DISABLE_INSTRUMENTAT7","_DYN_GET_SAMPLING_SCORE","_DYN_GET_HASH_CODE_SCORE","strBaseType","strBaseData","strProperties","strTrue","_setValueIf","_extractPartAExtensions","envTags","itmExt","itmTags","extUser","user","authId","localId","extApp","app","sesId","extDevice","device","deviceClass","ip","model","web","browserLang","browserVer","envData","envBaseData","envProps","screenRes","userConsent","extOs","extTrace","tgs","tg","theTags","EnvelopeCreator","_extractPropsAndMeasurements","_convertPropsUndefinedToCustomDefinedValue","customUndefinedValue","_createEnvelope","iKeyNoDashes","EnvelopeCreatorInit","DependencyEnvelopeCreator","customMeasurements","bd","remoteDepData","responseCode","EventEnvelopeCreator","eventData","ExceptionEnvelopeCreator","exData","MetricEnvelopeCreator","props","baseMetricData","PageViewEnvelopeCreator","currentContextId","pageType","pageTags","pageViewData","PageViewPerformanceEnvelopeCreator","TraceEnvelopeCreator","_disableEvents","createOfflineListener","parentEvtNamespace","_isListening","_onlineStatus","_enableEvents","ononline","_setOnline","_setOffline","_isOnline","_unload","isOnline","isListening","BaseSendBuffer","_buffer","_bufferFullMessageSent","_get","_set","eventsLimitInMem","getItems","batch","ArraySendBuffer","SessionStorageSendBuffer","bufferItems","_getBuffer","notDeliveredItems","_removePayloadsFromBuffer","payloads","remaining","prefixedKey","bufferJson","buffer_1","_setBuffer","sentElements","BUFFER_KEY","SENT_BUFFER_KEY","MAX_BUFFER_SIZE","Serializer","_serializeObject","circularReferenceCheck","_serializeStringMap","_serializeArray","contract","isRequired","isHidden","isPresent","isObj","sources","expectedType","parseFloat","serialize","MIN_INPUT_LENGTH","HashCodeScoreGenerator","getHashCodeScore","score","getHashCode","INT_MAX_VALUE","SamplingScoreGenerator","hashCodeGenerator","Sample","samplingRate","samplingScoreGenerator","isSampledIn","samplingPercentage","FetchSyncRequestSizeLimitBytes","_getResponseText","_getDefaultAppInsightsChannelConfig","defaultCustomHeaders","EnvelopeTypeCreator","Sender","_consecutiveErrors","_retryAt","_paused","_timeoutHandle","_serializer","_stamp_specific_redirects","_headers","_senderConfig","_fallbackSender","_syncUnloadSender","_offlineListener","_syncFetchPayload","_isSampledIn","_sample","_checkResponsStatus","responseUrl","countOfItemsInPayload","res","_appId","_parseResponse","appId","_checkAndUpdateEndPointUrl","_isRetriable","_resendPayload","offlineBackOffMultiplier","_doUnloadSend","_beaconSender","_doBeaconSend","plainTextBatch","Blob","queued","_onSuccess","droppedPayload","thePayload","_xhrSender","endPointUrl","onreadystatechange","_xhrReadyStateChange","_formatErrorMessageXhr","_fetchKeepAliveSender","payloadSize","_doFetchSender","_fetchSender","requestHeaders","batchLength","ignoreResponse","responseHandled","init","keepalive","Request","ok","itemsReceived","itemsAccepted","linearFactor","payload_1","_setRetryTime","_setupTimer","delayInSeconds","SlotDelayInSeconds","backOffSlot","pow","backOffDelay","retryAfterTimeSpan","retryInterval","timerValue","_clearScheduledTimer","_xdrSender","xdr","_xdrOnLoad","_formatErrorMessageXdr","hostingProtocol","_getNotifyMgr","_notifySendRequest","sendRequest","_validateInstrumentationKey","disableIKeyValidationFlag","UUID_Regex","regexp","pause","resume","callBack","sendReason","onunloadFlush","addHeader","defaultConfig","customHeaders","customHeader","senderConfig","sendPostFunc","diagLogger","convertUndefined","defaultEnvelopeIkey","aiEnvelope_1","constructEnvelope","doNotSendItem_1","bufferSize","readyState","responseURL","async","forcedSender","ieVer","failed","retry","reverse","errors_1","extracted","orig","creator","_FIELDS_SEPARATOR","_FIELD_KEY_VALUE_SEPARATOR","parseConnectionString","connectionString","kvPairs","fields","kv","kvParts","endpointsuffix","locationPrefix","ConnectionStringParser","SeverityLevel","Information","Critical","ConfigurationManager","configValue","ChannelControllerPriority","ChannelValidationMessage","_addChannelQueue","channelQueue","queueItem","chain","createChannelControllerPlugin","_processChannelQueue","theChannels","processFn","waiting","_runChainOnComplete","channels","channelChain","chainCtx","_getChannel","pluginIdentifier","channelController","getChannel","cbTimeout","doneIterating","cbTimer","doCallback","handled_1","_setQueue","createChannelQueues","extensionQueue_1","TelemetryInitializerPlugin","_initializers","addTelemetryInitializer","theInitializer","remove","doNotSendItem","telemetryInitializersCount","strValidationError","strNotificationManager","strSdkUnloadingError","strSdkNotInitialized","defaultInitConfig","_createPerfManager","notificationMgr","_validateExtensions","channelPriority","allExtensions","coreExtensions","extPriorities","extPriority","_isPluginPresent","exists","_createDummyNotificationManager","BaseCore","_config","_isInitialized","_eventQueue","_notificationManager","_perfManager","_cfgPerfManager","_cookieManager","_pluginChain","_configExtensions","_coreExtensions","_channelControl","_channelConfig","_channelQueue","_isUnloading","_telemetryInitializerPlugin","_internalLogsEventName","_unloadHandlers","_traceCtx","_internalLogPoller","_createTelCtx","_getPluginChain","_initPluginChain","theExtensions","_getPlugin","theExt","removeCb","pluginsToRemove","_removePlugins","removed","thePlugins","removeComplete","unloadChain","newConfigExtensions","newChannelConfig","newQueue","_flushInternalLogs","track","_initDebugListener","_initPerfManager","enablePerfMgr","_initExtConfig","NotificationManager","_updateHook","_logOrThrowError","notificationManager","cfgExtensions","releaseQueue","getTransmissionControls","controls","setCookieMgr","createPerfMgr","setPerfMgr","eventCnt","eventQueue","pollInternalLogs","interval","diagnosticLogInterval","unloadComplete","flushComplete","processUnloadCtx","_doUnload","addPlugin","replaceExisting","addCb","existingPlugin","_addPlugin","removedPlugins_1","createNew","setTraceCtx","traceCtx","_runListeners","listeners","perfEvtsSendAll","AppInsightsCore","_validateTelemetryItem","_notifyInvalidEvent","STR_PROPERTIES","_DYN_REQUEST_URL","_DYN_INST","_DYN_CONTEXT","_DYN_TRACE_ID0","_DYN_SPAN_ID1","_DYN_INCLUDE_CORRELATION_2","_DYN_CAN_INCLUDE_CORRELAT3","_DYN_GET_ABSOLUTE_URL","_DYN_HEADERS","_DYN_REQUEST_HEADERS","_DYN_APP_ID","_DYN_TRACK_DEPENDENCY_DAT4","_DYN_DISTRIBUTED_TRACING_5","_DYN_START_TIME","_DYN_ENABLE_REQUEST_HEADE6","_DYN_ENABLE_AJAX_ERROR_ST7","_DYN_ENABLE_AJAX_PERF_TRA8","_DYN_MAX_AJAX_CALLS_PER_V9","_DYN_ENABLE_RESPONSE_HEAD10","_DYN_EXCLUDE_REQUEST_FROM11","_DYN_ADD_REQUEST_CONTEXT","_DYN_DISABLE_AJAX_TRACKIN12","_DYN_DISABLE_FETCH_TRACKI13","_DYN_STATUS","_DYN_STATUS_TEXT","_DYN_HEADER_MAP","_DYN_OPEN_DONE","_DYN_SEND_DONE","_DYN_REQUEST_SENT_TIME","_DYN_ABORT_DONE","_DYN_GET_TRACE_ID","_DYN_GET_TRACE_FLAGS","_DYN_ERROR_STATUS_TEXT","_DYN_STATE_CHANGE_ATTACHE14","_DYN_RESPONSE_TEXT","_DYN_RESPONSE_FINISHED_TI15","_DYN__CREATE_TRACK_ITEM","_DYN_RESPONSE","_DYN_GET_ALL_RESPONSE_HEA16","_DYN_GET_PART_APROPS","_DYN_GET_CORRELATION_CONT17","_DYN_PERF_MARK","_DYN_AJAX_PERF_LOOKUP_DEL18","_DYN_PERF_TIMING","_DYN_AJAX_DIAGNOSTICS_MES19","_DYN_CORRELATION_CONTEXT","_DYN_AJAX_TOTAL_DURATION","_DYN_EVENT_TRACE_CTX","_calcPerfDuration","resourceEntry","_setPerfDuration","_setPerfValue","strPerf","perfData","_populatePerfData","ajaxData","dependency","propsSet","strName","strStart","strEnd","strDomainLookup","strConnect","strRedirect","strRequest","strResponse","strStartTime","strDomainLookupStart","strDomainLookupEnd","strConnectStart","strConnectEnd","strRequestStart","strRequestEnd","strResponseStart","strResponseEnd","strRedirectStart","strRedirectEnd","strTransferSize","strEncodedBodySize","strDecodedBodySize","strServerTiming","serverTiming","server_1","perfAttempts","XHRMonitoringState","setRequestHeaderDone","ajaxRecord","strResponseText","completed","requestHeadersSize","responseReceivingDuration","callbackDuration","aborted","requestSize","responseStartedTime","callbackFinishedTime","endTime","xhrMonitoringState","clientFailure","ajaxType","enableRequestHeaderTracking","getResponse","ajaxTotalDuration","requestSentTime","responseFinishedTime","headerMap","responseHeaders","errorStatusText","partA","traceExt","AJAX_MONITOR_PREFIX","strDiagLog","strAjaxData","strFetch","ERROR_HEADER","ERROR_PREFIX","ERROR_POSTFIX","ERROR_NOT_SENT","CORRELATION_HEADER_ERROR","CUSTOM_REQUEST_CONTEXT_ERROR","FAILED_TO_CALCULATE_DURATION_ERROR","_markCount","_supportsFetch","_global","_supportsAjaxMonitoring","ajaxMonitorInstance","theOpen","_throwInternalCritical","_getFailedAjaxDiagnosticsMessage","_throwInternalWarning","_createErrorCallbackFunc","internalMessage","ajaxDiagnosticsMessage","_indexOf","container","theHandler","_processDependencyContainer","_processDependencyListeners","initializersCount","BLOB_CORE","DfltAjaxCorrelationHeaderExDomains","_internalExcludeEndpoints","distributedTracingMode","maxAjaxPerfLookupAttempts","ignoreHeaders","addIntEndpoints","_getEmptyConfig","emptyConfig","AjaxMonitor","_fetchInitialized","_xhrInitialized","_currentWindowHost","_enableRequestHeaderTracking","_enableAjaxErrorStatusText","_trackAjaxAttempts","_context","_isUsingW3CHeaders","_isUsingAIHeaders","_markPrefix","_enableAjaxPerfTracking","_maxAjaxCallsPerView","_enableResponseHeaderTracking","_disabledUrls","_disableAjaxTracking","_disableFetchTracking","_excludeRequestFromAutoTrackingPatterns","_addRequestContext","_dependencyHandlerId","_dependencyListeners","_dependencyInitializers","getEmptyConfig","instrumentationKey","_populateContext","propExt","_canIncludeHeaders","rlt","_instrumentFetch","global","isPolyfill","polyfill","_isDisabledRequest","fetchData","_createFetchRecord","newInit","fetchData_1","_reportFetchMetrics","ajaxResponse","_getFetchCorrelationContext","responseHeaderMap_1","hkErr","_hookProto","_instrumentXhr","_isMonitoredXhrInstance","_openHandler","_attachToOnReadyStateChange","_createMarkId","isDisabled","theUrl","theRegex","idx2","excludeAjaxDataValidation","ajaxValidation","spanID","_onAjaxComplete","exceptionText","_reportXhrError","failedProps","errorProps","_findPerfResourceEntry","_getAjaxCorrelationContext","responseHeaderMap_2","sysProperties","_reportDependencyInternal","responseHeadersString","getResponseHeader","performance_1","markId","initiatorType","trackCallback","reportError","perfMark","maxAttempts","retryDelay","attempt","locateResourceTiming","perfTiming","getEntries","entryType","_getFailedFetchDiagnosticsMessage","_reportFetchError","fetchDiagnosticsMessage","initializers","trackDependencyData","currentWindowHost","traceParent","addDependencyListener","dependencyListener","addDependencyInitializer","dependencyInitializer","Application","Device","_DYN_SESSION_MANAGER","_DYN_IS_USER_COOKIE_SET","_DYN_IS_NEW_USER","_DYN_GET_TRACE_CTX","_DYN_TELEMETRY_TRACE","_DYN_APPLY_SESSION_CONTEX0","_DYN_APPLY_APPLICATION_CO1","_DYN_APPLY_DEVICE_CONTEXT","_DYN_APPLY_OPERATION_CONT2","_DYN_APPLY_USER_CONTEXT","_DYN_APPLY_OPERATING_SYST3","_DYN_APPLY_LOCATION_CONTE4","_DYN_APPLY_INTERNAL_CONTE5","_DYN_ACCOUNT_ID","_DYN_SDK_EXTENSION","_DYN_GET_SESSION_ID","_DYN_SESSION_COOKIE_POSTF6","_DYN_USER_COOKIE_POSTFIX","_DYN_ID_LENGTH","_DYN_GET_NEW_ID","_DYN_AUTOMATIC_SESSION","_DYN_AUTHENTICATED_ID","_DYN_SESSION_EXPIRATION_M7","_DYN_SESSION_RENEWAL_MS","_DYN_ACQUISITION_DATE","_DYN_RENEWAL_DATE","_DYN_COOKIE_DOMAIN","_DYN_JOIN","_DYN_COOKIE_SEPARATOR","_DYN_AUTH_USER_COOKIE_NAM8","Internal","sdkVersion","Location","cookieNameConst","Session","_SessionManager","_storageNamePrefix","_cookieUpdatedTimestamp","acquisitionSpan","renewalSpan","sessionCookiePostfix","_initializeAutomaticSession","session","_initializeAutomaticSessionWithData","storageValue","sessionData","sessionReset","acqMs","renewalMs","_renew","getNewId","automaticSession","_setCookie","acq","renewalPeriodMs","acqTimeLeftMs","_setStorage","renewal","timeSinceAcqMs","timeSinceRenewalMs","cookieUpdateInterval","backup","TelemetryTrace","parentId","_validateUserInput","User","isNewUser","isUserCookieSet","userCookiePostfix","userCookieName","_generateNewId","_generateNewCookie","acqStr","accountAcquisitionDate","newCookie","_setUserCookie","oneYear","name_1","authCookie","decodeURI","authCookieString","setAuthenticatedUserContext","authenticatedUserId","storeInCookie","isInvalidInput","encodeURI","clearAuthenticatedUserContext","user_id","user_cookie","cookieSeparator","authUserCookieName","strExt","strTags","_removeEmpty","TelemetryContext","previousTraceCtx","internal","autoSession","build","agentVersion","snippetVer","sdkSrc","applyWebContext","cleanUp","PropertiesPlugin","_extensionConfig","_distributedTraceCtx","_previousTraceCtx","breezeChannel","_processTelemetryInternal","theContext","userCtx","nullValue","isBrowserLinkTrackingEnabled","_internalSdkSrc","_AUTHENTICATED_USER_CONTEXT","_TRACK","STR_SNIPPET","STR_GET_COOKIE_MGR","STR_START_TRACK_PAGE","STR_STOP_TRACK_PAGE","STR_FLUSH","STR_START_TRACK_EVENT","STR_STOP_TRACK_EVENT","STR_ADD_TELEMETRY_INITIALIZER","STR_POLL_INTERNAL_LOGS","STR_GET_PLUGIN","STR_EVT_NAMESPACE","STR_TRACK_EVENT","STR_TRACK_TRACE","STR_TRACK_METRIC","STR_TRACK_PAGE_VIEW","STR_TRACK_EXCEPTION","STR_TRACK_DEPENDENCY_DATA","STR_SET_AUTHENTICATED_USER_CONTEXT","STR_CLEAR_AUTHENTICATED_USER_CONTEXT","_DYN_UPDATE_SNIPPET_DEFIN0","_DYN_LOAD_APP_INSIGHTS","_DYN_DIAGNOSTIC_LOG_INTER4","_DYN_DISABLE_FLUSH_ON_BEF11","_DYN_DISABLE_FLUSH_ON_UNL12","_DYN_QUEUE","_DYN_CONNECTION_STRING","_DYN_APP_INSIGHTS","_DYN_DISABLE_IKEY_DEPRECA18","_DYN_GET_TRANSMISSION_CON19","_DYN_ONUNLOAD_FLUSH","_DYN_ADD_HOUSEKEEPING_BEF20","_ignoreUpdateSnippetProperties","fieldType","Required","Hidden","Initialization","snippet","dependencies","_sender","_snippetVersion","_houseKeepingNamespace","_core","sv","cs","ingest","ingestionendpoint","instrumentationkey","isErrMessageDisabled","_getSKUDefaults","_getCurrentDependencies","legacyMode","_updateSnippetProperties","emptyQueue","length_1","properties_1","appInsightsInstance","performHousekeeping","loadedPlugin","propertiesPlugin","_sessionManager","excludePageUnloadEvents","disablePageUnloadEvents","getSender","isModule","cdns","scrpt","currentScript","UNDEFINED","Constructor","Prototype","strFunction","DynInstFuncTable","DynProxyTag","DynClassName","DynClassNamePrefix","DynInstChkTag","DynAllowInstChkTag","DynProtoDefaultOptions","UnknownValue","DynProtoBaseProto","DynProtoGlobalSettings","DynProtoCurrent","strUseBaseInst","strSetInstFuncs","Obj","_objGetOwnProps","_getGlobal","_gbl","_gblInst","_hasOwnProperty","_isObjectOrArrayPrototype","_isObjectArrayOrFunctionPrototype","Function","curProto","_forEachProp","_isDynamicCandidate","skipOwn","_throwTypeError","_getInstanceFuncs","thisTarget","instFuncs","_hasVisited","_getBaseFuncs","classProto","useBaseInst","_instFuncProxy","funcHost","instFuncTable","baseFuncs","baseProto","visited","_getInstFunc","currentDynProtoProxy","instFunc","canAddInst","objProto","protoFunc","_getProtoFunc","_populatePrototype","className","baseInstFuncs","setInstanceFunc","_createDynamicPrototype","dynProtoProxy","instFuncs_1","_checkPrototype","thisProto","_getObjName","unknownValue","dynamicProto","delegateFunc","perfOptions","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","existing","beforeCreate","exports","module","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","transitionalDefaults","AxiosError","CanceledError","parseProtocol","onCanceled","requestData","cancelToken","unsubscribe","signal","isFormData","isStandardBrowserEnv","unescape","Authorization","fullPath","baseURL","onloadend","responseData","paramsSerializer","ECONNABORTED","ERR_NETWORK","timeoutErrorMessage","transitional","clarifyTimeoutError","ETIMEDOUT","xsrfValue","xsrfCookieName","read","xsrfHeaderName","onDownloadProgress","onUploadProgress","upload","cancel","ERR_BAD_REQUEST","Axios","mergeConfig","instance","extend","instanceConfig","axios","CancelToken","isCancel","VERSION","toFormData","Cancel","promises","spread","isAxiosError","resolvePromise","_listeners","l","onfulfilled","_resolve","throwIfRequested","ERR_CANCELED","inherits","__CANCEL__","InterceptorManager","dispatchRequest","validator","validators","interceptors","configOrUrl","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","responseInterceptorChain","newConfig","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","toJSON","descriptors","defineProperties","customProps","axiosError","toFlatObject","use","eject","isAbsoluteURL","combineURLs","requestedURL","transformData","throwIfCancellationRequested","transformRequest","merge","common","adapter","transformResponse","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","validateStatus","ERR_BAD_RESPONSE","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","getDefaultAdapter","process","stringifySafely","rawValue","parser","encoder","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","isURLSearchParams","isFileList","isObjectPayload","contentType","_FormData","FormData","strictJSONParsing","maxContentLength","maxBodyLength","serializedParams","hashmarkIndex","relativeURL","write","secure","toGMTString","originURL","urlParsingNode","resolveURL","hostname","requestURL","parsed","normalizedName","ignoreDuplicateOf","formData","convertValue","isTypedArray","Buffer","parentKey","fullKey","toArray","el","deprecatedWarnings","schema","allowUnknown","ERR_BAD_OPTION_VALUE","opt","ERR_BAD_OPTION","formatMessage","opts","ERR_DEPRECATED","warn","kindOf","kindOfTest","isView","getPrototypeOf","pipe","assignValue","stripBOM","superConstructor","sourceObj","destObj","merged","getOwnPropertyNames","searchString","lastIndex","TypedArray","isCallable","tryToString","$TypeError","argument","isConstructor","$String","wellKnownSymbol","UNSCOPABLES","ArrayPrototype","S","unicode","isPrototypeOf","it","fails","isExtensible","toAbsoluteIndex","lengthOfArrayLike","O","argumentsLength","endPos","$forEach","arrayMethodIsStrict","STRICT_METHOD","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIterator","getIteratorMethod","$Array","arrayLike","IS_CONSTRUCTOR","mapfn","mapping","iteratorMethod","toIndexedObject","createMethod","IS_INCLUDES","$this","uncurryThis","IndexedObject","arraySpeciesCreate","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","specificCreate","boundFunction","findIndex","filterReject","toIntegerOrInfinity","$lastIndexOf","NEGATIVE_ZERO","FORCED","V8_VERSION","SPECIES","METHOD_NAME","foo","aCallable","IS_RIGHT","memo","fin","arraySlice","mergeSort","comparefn","middle","insertionSort","element","llength","rlength","lindex","rindex","originalArray","C","arraySpeciesConstructor","anObject","iteratorClose","ENTRIES","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","stringSlice","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","$Object","CORRECT_ARGUMENTS","tryGet","tag","callee","$Error","TEST","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","dropEntries","prepareStackTrace","defineBuiltIns","anInstance","defineIterator","setSpecies","DESCRIPTORS","fastKey","InternalStateModule","setInternalState","internalStateGetterFor","getterFor","getConstructor","wrapper","CONSTRUCTOR_NAME","ADDER","iterable","first","last","AS_ENTRIES","getInternalState","define","getEntry","prev","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","iterated","$","isForced","defineBuiltIn","InternalMetadataModule","checkCorrectnessOfIteration","setToStringTag","inheritIfRequired","IS_WEAK","NativeConstructor","NativePrototype","exported","fixMethod","KEY","uncurriedNativeMethod","REPLACE","enable","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","forced","hasOwn","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","getOwnPropertyDescriptor","MATCH","error1","error2","F","requireObjectCoercible","quot","string","attribute","p1","IteratorPrototype","createPropertyDescriptor","Iterators","returnThis","IteratorConstructor","NAME","ENUMERABLE_NEXT","bitmap","writable","toPropertyKey","propertyKey","makeBuiltIn","getter","setter","createNonEnumerableProperty","defineGlobalProperty","simple","unsafe","IS_PURE","FunctionName","createIteratorConstructor","IteratorsCore","PROPER_FUNCTION_NAME","PROPER","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","Iterable","DEFAULT","IS_SET","CurrentIteratorPrototype","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","wrappedWellKnownSymbolModule","EXISTS","MAX_SAFE_INTEGER","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","documentCreateElement","classList","DOMTokenListPrototype","firefox","Deno","UA","Pebble","classof","getBuiltIn","versions","v8","webkit","normalizeStringArgument","nativeErrorToString","INCORRECT_TO_STRING","copyConstructorProperties","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","sham","regexpExec","RegExpPrototype","SHAM","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","re","uncurriedNativeRegExpMethod","nativeMethod","arg2","forceStringMethod","$exec","doesNotExceedSafeInteger","flattenIntoArray","original","sourceLen","depth","mapper","elementLen","targetIndex","sourceIndex","mapFn","preventExtensions","NATIVE_BIND","FunctionPrototype","Reflect","$Function","factories","construct","argsLength","list","partArgs","getDescriptor","aFunction","namespace","getMethod","usingIterator","V","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","captures","namedCaptures","replacement","tailPos","symbols","ch","check","Wrapper","NewTarget","NewTargetPrototype","store","functionToString","inspectSource","cause","hiddenKeys","getOwnPropertyNamesModule","getOwnPropertyNamesExternalModule","FREEZING","REQUIRED","METADATA","setMetadata","objectID","weakData","getWeakData","onFreeze","NATIVE_WEAK_MAP","shared","sharedKey","OBJECT_ALREADY_INITIALIZED","WeakMap","enforce","wmget","wmhas","wmset","facade","empty","constructorRegExp","isConstructorModern","isConstructorLegacy","feature","detection","normalize","POLYFILL","NATIVE","isRegExp","USE_SYMBOL_AS_UID","$Symbol","Result","stopped","ResultPrototype","unboundFunction","iterFn","IS_ITERATOR","INTERRUPTED","condition","callFn","innerResult","innerError","PrototypeOfArrayIteratorPrototype","arrayIterator","NEW_ITERATOR_PROTOTYPE","toLength","enforceInternalState","CONFIGURABLE_LENGTH","TEMPLATE","arity","x","trunc","head","notify","toggle","node","macrotask","IS_IOS","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","IS_NODE","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","queueMicrotask","exit","enter","nextTick","createTextNode","observe","characterData","NATIVE_SYMBOL","keyFor","getOwnPropertySymbols","symbol","searchParams","URLSearchParams","PromiseCapability","$$resolve","$$reject","$default","whitespaces","n$ParseFloat","Infinity","trimmedString","$parseInt","radix","objectKeys","getOwnPropertySymbolsModule","propertyIsEnumerableModule","$assign","A","B","alphabet","chr","T","activeXDocument","definePropertiesModule","enumBugKeys","html","GT","LT","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","NullProtoObjectViaActiveX","temp","parentWindow","NullProtoObjectViaIFrame","iframeDocument","JS","display","NullProtoObject","ActiveXObject","Properties","V8_PROTOTYPE_DEFINE_BUG","IE8_DOM_DEFINE","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","$getOwnPropertyNames","windowNames","getWindowNames","internalObjectKeys","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","ARRAY_BUFFER_NON_EXTENSIBLE","$isExtensible","FAILS_ON_PRIMITIVES","names","$propertyIsEnumerable","NASHORN_BUG","aPossiblePrototype","CORRECT_SETTER","TO_ENTRIES","pref","valueOf","NativePromiseConstructor","IS_BROWSER","NativePromisePrototype","SUBCLASSING","NATIVE_PROMISE_REJECTION_EVENT","PromiseRejectionEvent","FORCED_PROMISE_CONSTRUCTOR","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","CONSTRUCTOR","REJECTION_EVENT","newPromiseCapability","promiseCapability","Target","Source","Queue","tail","R","regexpFlags","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeReplace","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","re1","re2","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","PATCH","reCopy","group","raw","groups","sticky","charsAdded","strCopy","multiline","hasIndices","ignoreCase","dotAll","regExpFlags","$RegExp","MISSED_STICKY","is","validateArgumentsLength","MSIE","wrap","scheduler","boundArgs","TAG","SHARED","mode","copyright","license","aConstructor","defaultConstructor","CONVERT_TO_STRING","second","codeAt","maxInt","base","tMin","tMax","skew","damp","initialBias","initialN","delimiter","regexNonASCII","regexSeparators","OVERFLOW_ERROR","baseMinusTMin","$RangeError","RangeError","ucs2decode","counter","extra","digitToBasic","digit","adapt","delta","numPoints","firstTime","currentValue","inputLength","bias","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","baseMinusT","encoded","labels","non","whitespace","ltrim","rtrim","SymbolPrototype","TO_PRIMITIVE","hint","defer","setImmediate","clearImmediate","Dispatch","ONREADYSTATECHANGE","runner","importScripts","integer","isSymbol","ordinaryToPrimitive","exoticToPrim","toPrimitive","postfix","passed","required","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","proxyAccessor","installErrorCause","clearErrorStack","ERROR_STACK_INSTALLABLE","FULL_NAME","IS_AGGREGATE_ERROR","STACK_TRACE_LIMIT","OPTIONS_POSITION","OriginalError","OriginalErrorPrototype","BaseError","WrappedError","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","SPECIES_SUPPORT","isConcatSpreadable","spreadable","E","$every","fill","addToUnscopables","$filter","HAS_SPECIES_SUPPORT","$findIndex","FIND_INDEX","SKIPS_HOLES","$find","FIND","flat","depthArg","INCORRECT_ITERATION","$includes","BROKEN_ON_SPARSE","$IndexOf","un$IndexOf","ARRAY_ITERATOR","Arguments","un$Join","ES3_STRINGS","separator","$map","$reduce","CHROME_VERSION","CHROME_BUG","un$Reverse","un$Slice","$some","deletePropertyOrThrow","internalSort","FF","IE_OR_EDGE","V8","WEBKIT","un$Sort","FAILS_ON_UNDEFINED","FAILS_ON_NULL","STABLE_SORT","getSortCompare","itemsLength","arrayLength","deleteCount","insertCount","actualDeleteCount","actualStart","DatePrototype","INVALID_DATE","TO_STRING","un$DateToString","NaN","wrapErrorConstructorWithCause","WEB_ASSEMBLY","WebAssembly","exportGlobalErrorCauseWrapper","exportWebAssemblyErrorCauseWrapper","errorToString","ErrorPrototype","FUNCTION_NAME_EXISTS","nameRE","regExpExec","$stringify","numberToString","tester","low","hi","WRONG_SYMBOLS_CONVERSION","ILL_FORMED_UNICODE","stringifyWithSymbolsFix","replacer","$replacer","fixIllFormed","space","collection","collectionStrong","cbrt","thisNumberValue","NUMBER","NativeNumber","NumberPrototype","toNumeric","primValue","toNumber","third","maxCode","digits","NumberWrapper","$repeat","repeat","un$ToFixed","acc","x2","multiply","divide","dataToString","fractionDigits","z","fractDigits","$entries","$freeze","freeze","nativeGetOwnPropertyDescriptor","getOwnPropertyDescriptors","$getOwnPropertySymbols","nativeGetPrototypeOf","nativeKeys","$values","$parseFloat","newPromiseCapabilityModule","perform","PROMISE_STATICS_INCORRECT_ITERATION","capability","$promiseResolve","alreadyCalled","real","OwnPromiseCapability","PromiseWrapper","nativeThen","speciesConstructor","microtask","hostReportErrors","PromiseConstructorDetection","PROMISE","NATIVE_PROMISE_SUBCLASSING","getInternalPromiseState","PromiseConstructor","PromisePrototype","newGenericPromiseCapability","DISPATCH_EVENT","UNHANDLED_REJECTION","REJECTION_HANDLED","PENDING","FULFILLED","REJECTED","HANDLED","UNHANDLED","isThenable","callReaction","reaction","exited","rejection","onHandleUnhandled","isReject","notified","reactions","onUnhandled","IS_UNHANDLED","isUnhandled","emit","unwrap","internalReject","internalResolve","promiseResolve","NON_GENERIC","onFinally","race","PromiseConstructorWrapper","CHECK_WRAPPER","nativeConstruct","NEW_TARGET_BUG","ARGS_BUG","newTarget","$args","getRegExpFlags","NativeRegExp","SyntaxError","stringIndexOf","IS_NCG","CORRECT_NEW","BASE_FORCED","handleDotAll","brackets","handleNCG","named","ncg","groupid","groupname","RegExpWrapper","rawFlags","handled","thisIsRegExp","patternIsRegExp","flagsAreUndefined","rawPattern","defineBuiltInAccessor","un$Test","$toString","n$ToString","NOT_GENERIC","INCORRECT_NAME","createHTML","forcedStringHTMLMethod","anchor","notARegExp","correctIsRegExpLogic","un$EndsWith","CORRECT_IS_REGEXP_LOGIC","MDN_POLYFILL_BUG","endPosition","fixed","STRING_ITERATOR","point","link","fixRegExpWellKnownSymbolLogic","advanceStringIndex","nativeMatch","maybeCallNative","matcher","rx","fullUnicode","matchStr","getSubstitution","searchValue","replaceAll","replaceValue","IS_REG_EXP","functionalReplace","searchLength","advanceBy","endOfLastMatch","maybeToString","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_SUPPORTS_NAMED_GROUPS","UNSAFE_SUBSTITUTE","accumulatedResult","nextSourcePosition","replacerArgs","small","callRegExpExec","MAX_UINT32","$push","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","lastLastIndex","separatorCopy","splitter","unicodeMatching","un$StartsWith","intLength","intEnd","intStart","$trim","forcedStringTrimMethod","defineWellKnownSymbol","nativeObjectCreate","getOwnPropertyNamesExternal","defineSymbolToPrimitive","HIDDEN","QObject","nativeDefineProperty","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","$defineProperties","$create","IS_OBJECT_PROTOTYPE","useSetter","useSimple","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolToString","symbolValueOf","NATIVE_SYMBOL_REGISTRY","StringToSymbolRegistry","SymbolToStringRegistry","sym","DOMIterables","handlePrototype","CollectionPrototype","COLLECTION_NAME","ArrayIteratorMethods","ArrayValues","USE_NATIVE_URL","arraySort","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","safeGetBuiltIn","nativeFetch","NativeRequest","RequestPrototype","HeadersPrototype","plus","sequences","percentSequence","percentDecode","sequence","deserialize","replacements","URLSearchParamsIterator","URLSearchParamsState","parseObject","parseQuery","bindURL","entryIterator","entryNext","attributes","updateURL","URLSearchParamsConstructor","URLSearchParamsPrototype","getAll","found","headersHas","headersSet","wrapRequestOptions","RequestConstructor","getState","EOF","arrayFrom","toASCII","URLSearchParamsModule","getInternalURLState","getInternalSearchParamsState","NativeURL","INVALID_AUTHORITY","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","parseIPv4","partsLength","numbers","part","ipv4","parseIPv6","numbersSeen","ipv4Piece","swaps","swap","address","pieceIndex","compress","pointer","findLongestZeroSequence","ipv6","maxIndex","currStart","currLength","serializeHost","ignore0","C0ControlPercentEncodeSet","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","percentEncode","specialSchemes","ftp","file","http","https","ws","wss","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","isSingleDot","segment","isDoubleDot","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","URLState","isBase","baseState","failure","stateOverride","codePoints","bufferCodePoints","seenAt","seenBracket","seenPasswordToken","scheme","fragment","cannotBeABaseURL","isSpecial","includesCredentials","codePoint","encodedCodePoints","shortenPath","cannotHaveUsernamePasswordPort","pathSize","setHref","getOrigin","URLConstructor","getProtocol","setProtocol","getUsername","setUsername","getPassword","setPassword","getHost","setHost","getHostname","setHostname","getPort","setPort","getPathname","setPathname","getSearch","setSearch","getSearchParams","setHash","URLPrototype","accessorDescriptor","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","M","weekdays","months","utcOffset","year","month","D","Q","locale","$L","utc","$u","$x","$offset","$d","UTC","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isSame","startOf","endOf","isAfter","isBefore","$g","unix","toDate","$locale","weekStart","$set","daysInMonth","subtract","format","invalidDate","meridiem","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","dd","weekdaysMin","ddd","weekdaysShort","dddd","H","HH","hh","mm","ss","SSS","Z","getTimezoneOffset","diff","$i","isDayjs","en","Ls","default","ordinal","formats","LTS","L","LL","LLL","LLLL","relativeTime","future","past","yy","yearStart","weekYear","isoWeekYear","week","isoWeek","offsetName","zone","afternoon","milliseconds","SS","Do","day","Y","ZZ","hours","customParseFormat","parseTwoDigitYear","minutes","seconds","years","weeks","$l","negative","parseFromMilliseconds","calMilliseconds","as","humanize","fromNow","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","isDuration","isBetween","isSameOrBefore","isToday","isTomorrow","isYesterday","isoWeekday","firstDayOfWeek","longDateFormat","localeData","minute","millisecond","fromToBase","thresholds","rounding","toNow","timeZoneName","Intl","DateTimeFormat","hour12","timeZone","formatToParts","tz","toLocaleString","$timezone","guess","resolvedOptions","setDefault","local","getUTCDay","$localOffset","isUTC","weekday","isMergeableObject","isNonNullObject","stringValue","isReactElement","canUseSymbol","for","REACT_ELEMENT_TYPE","$$typeof","emptyTarget","cloneUnlessOtherwiseSpecified","deepmerge","defaultArrayMerge","getMergeFunction","customMerge","getEnumerableOwnPropertySymbols","propertyIsOnObject","propertyIsUnsafe","mergeObject","destination","arrayMerge","sourceIsArray","targetIsArray","sourceAndTargetTypesMatch","deepmerge_1","factory","_typeof","_setPrototypeOf","_isNativeReflectConstruct","Proxy","_construct","Parent","Class","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_arrayLikeToArray","iter","minLen","arr2","isFrozen","seal","_ref","fun","thisValue","Func","arrayForEach","unapply","arrayPop","arrayPush","stringToLowerCase","stringMatch","stringReplace","stringTrim","regExpTest","typeErrorCreate","unconstruct","_len","_key","_len2","_key2","addToSet","transformCaseFunc","lcElement","newObject","lookupGetter","fallbackValue","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","svg","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","_createTrustedTypesPolicy","trustedTypes","createPolicy","suffix","ATTR_NAME","hasAttribute","getAttribute","policyName","createScriptURL","scriptUrl","createDOMPurify","DOMPurify","root","nodeType","originalDocument","DocumentFragment","HTMLTemplateElement","Node","Element","NodeFilter","_window$NamedNodeMap","MozNamedAttrMap","DOMParser","ElementPrototype","cloneNode","getNextSibling","getChildNodes","getParentNode","ownerDocument","trustedTypesPolicy","emptyHTML","implementation","createNodeIterator","createDocumentFragment","importNode","documentMode","createHTMLDocument","PARSER_MEDIA_TYPE","MUSTACHE_EXPR$1","ERB_EXPR$1","DATA_ATTR$1","ARIA_ATTR$1","IS_SCRIPT_OR_DATA$1","ATTR_WHITESPACE$1","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","CUSTOM_ELEMENT_HANDLING","tagNameCheck","attributeNameCheck","allowCustomizedBuiltInElements","FORBID_TAGS","FORBID_ATTR","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","SAFE_FOR_TEMPLATES","WHOLE_DOCUMENT","SET_CONFIG","FORCE_BODY","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","SANITIZE_NAMED_PROPS_PREFIX","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","SUPPORTED_PARSER_MEDIA_TYPES","DEFAULT_PARSER_MEDIA_TYPE","formElement","isRegexOrFunction","testValue","_parseConfig","cfg","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","ADD_ATTR","table","tbody","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","ALL_SVG_TAGS","ALL_MATHML_TAGS","_checkValidNamespace","tagName","namespaceURI","parentTagName","_forceRemove","outerHTML","_removeAttribute","getAttributeNode","removeAttribute","_initDocument","dirty","leadingWhitespace","dirtyPayload","parseFromString","createDocument","innerHTML","insertBefore","childNodes","_createIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","_isClobbered","elm","nodeName","textContent","_isNode","_executeHook","entryPoint","currentNode","_sanitizeElements","allowedTags","hasChildNodes","firstElementChild","_basicCustomElementTest","childCount","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","attr","hookEvent","attrName","attrValue","keepAttr","allowedAttributes","_attr","forceKeepAttr","getAttributeType","setAttributeNS","_sanitizeShadowDOM","shadowNode","shadowIterator","nextNode","sanitize","importedNode","oldNode","returnNode","toStaticHTML","firstChild","nodeIterator","shadowroot","serializedHTML","doctype","setConfig","clearConfig","isValidAttribute","addHook","hookFunction","removeHook","removeHooks","removeAllHooks","purify","__rest","FactorId","PHONE","ProviderId","FACEBOOK","GITHUB","GOOGLE","PASSWORD","TWITTER","SignInMethod","EMAIL_LINK","EMAIL_PASSWORD","OperationType","LINK","REAUTHENTICATE","SIGN_IN","ActionCodeOperation","EMAIL_SIGNIN","PASSWORD_RESET","RECOVER_EMAIL","REVERT_SECOND_FACTOR_ADDITION","VERIFY_AND_CHANGE_EMAIL","VERIFY_EMAIL","_debugErrorMap","_prodErrorMap","debugErrorMap","prodErrorMap","_DEFAULT_AUTH_ERROR_FACTORY","AUTH_ERROR_CODES_MAP_DO_NOT_USE_INTERNALLY","ADMIN_ONLY_OPERATION","ARGUMENT_ERROR","APP_NOT_AUTHORIZED","APP_NOT_INSTALLED","CAPTCHA_CHECK_FAILED","CODE_EXPIRED","CORDOVA_NOT_READY","CORS_UNSUPPORTED","CREDENTIAL_ALREADY_IN_USE","CREDENTIAL_MISMATCH","CREDENTIAL_TOO_OLD_LOGIN_AGAIN","DEPENDENT_SDK_INIT_BEFORE_AUTH","DYNAMIC_LINK_NOT_ACTIVATED","EMAIL_CHANGE_NEEDS_VERIFICATION","EMAIL_EXISTS","EMULATOR_CONFIG_FAILED","EXPIRED_OOB_CODE","EXPIRED_POPUP_REQUEST","INTERNAL_ERROR","INVALID_API_KEY","INVALID_APP_CREDENTIAL","INVALID_APP_ID","INVALID_AUTH","INVALID_AUTH_EVENT","INVALID_CERT_HASH","INVALID_CODE","INVALID_CONTINUE_URI","INVALID_CORDOVA_CONFIGURATION","INVALID_CUSTOM_TOKEN","INVALID_DYNAMIC_LINK_DOMAIN","INVALID_EMAIL","INVALID_EMULATOR_SCHEME","INVALID_IDP_RESPONSE","INVALID_MESSAGE_PAYLOAD","INVALID_MFA_SESSION","INVALID_OAUTH_CLIENT_ID","INVALID_OAUTH_PROVIDER","INVALID_OOB_CODE","INVALID_ORIGIN","INVALID_PASSWORD","INVALID_PERSISTENCE","INVALID_PHONE_NUMBER","INVALID_PROVIDER_ID","INVALID_RECIPIENT_EMAIL","INVALID_SENDER","INVALID_SESSION_INFO","INVALID_TENANT_ID","MFA_INFO_NOT_FOUND","MFA_REQUIRED","MISSING_ANDROID_PACKAGE_NAME","MISSING_APP_CREDENTIAL","MISSING_AUTH_DOMAIN","MISSING_CODE","MISSING_CONTINUE_URI","MISSING_IFRAME_START","MISSING_IOS_BUNDLE_ID","MISSING_OR_INVALID_NONCE","MISSING_MFA_INFO","MISSING_MFA_SESSION","MISSING_PHONE_NUMBER","MISSING_SESSION_INFO","MODULE_DESTROYED","NEED_CONFIRMATION","NETWORK_REQUEST_FAILED","NULL_USER","NO_AUTH_EVENT","NO_SUCH_PROVIDER","OPERATION_NOT_ALLOWED","OPERATION_NOT_SUPPORTED","POPUP_BLOCKED","POPUP_CLOSED_BY_USER","PROVIDER_ALREADY_LINKED","QUOTA_EXCEEDED","REDIRECT_CANCELLED_BY_USER","REDIRECT_OPERATION_PENDING","REJECTED_CREDENTIAL","SECOND_FACTOR_ALREADY_ENROLLED","SECOND_FACTOR_LIMIT_EXCEEDED","TENANT_ID_MISMATCH","TIMEOUT","TOKEN_EXPIRED","TOO_MANY_ATTEMPTS_TRY_LATER","UNAUTHORIZED_DOMAIN","UNSUPPORTED_FIRST_FACTOR","UNSUPPORTED_PERSISTENCE","UNSUPPORTED_TENANT_OPERATION","UNVERIFIED_EMAIL","USER_CANCELLED","USER_DELETED","USER_DISABLED","USER_MISMATCH","USER_SIGNED_OUT","WEAK_PASSWORD","WEB_STORAGE_UNSUPPORTED","ALREADY_INITIALIZED","logClient","_logError","_fail","authOrCode","rest","createErrorInternal","_createError","_errorWithCustomMessage","errorMap","_assertInstanceOf","constructorInstance","fullParams","_errorFactory","_assert","debugFail","debugAssert","instanceCache","_getInstance","cls","initializeAuth","deps","getImmediate","initialOptions","getOptions","_initializeAuthInstance","persistence","hierarchy","_updateErrorMap","_initializeWithPersistence","popupRedirectResolver","_getCurrentUrl","_isHttpOrHttps","_getCurrentScheme","_getUserLanguage","navigatorLanguage","languages","language","Delay","shortDelay","longDelay","isMobile","_emulatorUrl","emulator","FetchProvider","static","fetchImpl","headersImpl","responseImpl","SERVER_ERROR_MAP","DEFAULT_API_TIMEOUT_MS","_addTidIfNecessary","_performApiRequest","customErrorMap","_performFetchWithErrorHandling","apiKey","_getAdditionalHeaders","languageCode","_getFinalTarget","apiHost","referrerPolicy","fetchFn","_canInitEmulator","networkTimeout","NetworkTimeout","clearNetworkTimeout","_makeTaggedError","serverErrorCode","serverErrorMessage","authError","_performSignInRequest","_serverResponse","apiScheme","timer","errorParams","email","phoneNumber","_tokenResponse","deleteAccount","deleteLinkedAccounts","utcTimestampToDateString","utcTimestamp","getIdToken","getIdTokenResult","userInternal","_parseToken","exp","auth_time","firebase","signInProvider","authTime","secondsStringToMilliseconds","issuedAtTime","expirationTime","signInSecondFactor","signature","decoded","_tokenExpiresIn","parsedToken","_logoutIfInvalidated","bypassAuthState","isUserInvalidated","currentUser","signOut","ProactiveRefresh","isRunning","timerId","errorBackoff","_start","schedule","_stop","getInterval","wasError","expTime","stsTokenManager","iteration","UserMetadata","createdAt","lastLoginAt","_initializeTime","lastSignInTime","creationTime","_copy","_reloadWithoutSaving","users","coreAccount","_notifyReloadListener","newProviderData","providerUserInfo","extractProviderData","providerData","mergeProviderData","oldIsAnonymous","isAnonymous","newIsAnonymous","passwordHash","updates","displayName","photoURL","photoUrl","emailVerified","reload","_persistUserIfCurrent","_notifyListenersIfCurrent","newData","deduped","providerId","providers","rawId","requestStsToken","tokenApiHost","StsTokenManager","updateFromServerResponse","updateTokensAndExpiration","refresh","clearRefreshToken","oldToken","expiresInSec","_assign","_clone","_performRefresh","assertStringOrUndefined","UserImpl","proactiveRefresh","reloadUserInfo","reloadListener","getToken","userInfo","_onReload","_startProactiveRefresh","_stopProactiveRefresh","tokensRefreshed","_redirectEventId","_g","_h","plainObjectTokenManager","fromJSON","idTokenResponse","InMemoryPersistence","_addListener","_listener","_removeListener","inMemoryPersistence","_persistenceKeyName","PersistenceUserManager","userKey","fullUserKey","fullPersistenceKey","boundEventHandler","_onStorageEvent","setCurrentUser","blob","_fromJSON","removeCurrentUser","_remove","savePersistenceForRedirect","newPersistence","getCurrentUser","persistenceHierarchy","availablePersistences","_isAvailable","selectedPersistence","userToMigrate","migrationHierarchy","_shouldAllowMigration","_getBrowserName","_isIEMobile","_isFirefox","_isBlackBerry","_isWebOS","_isSafari","_isChromeIOS","_isAndroid","_isIOS","_isIOSStandalone","standalone","_isIE10","_isMobileBrowser","_isIframe","_getClientVersion","clientPlatform","frameworks","reportedPlatform","reportedFrameworks","AuthMiddlewareQueue","pushCallback","onAbort","wrappedCallback","nextUser","onAbortStack","beforeStateCallback","originalMessage","AuthImpl","heartbeatServiceProvider","emulatorConfig","operations","authStateSubscription","Subscription","idTokenSubscription","beforeStateQueue","redirectUser","isProactiveRefreshEnabled","_deleted","_initializationPromise","_popupRedirectResolver","lastNotifiedUid","settings","appVerificationDisabledForTesting","clientVersion","sdkClientVersion","persistenceManager","_shouldInitProactively","_initialize","initializeCurrentUser","assertedPersistence","_currentUser","_updateCurrentUser","previouslyStoredUser","futureCurrentUser","needsTocheckMiddleware","authDomain","getOrInitRedirectPersistenceManager","redirectUserEventId","storedUserEventId","tryRedirectSignIn","directlySetCurrentUser","runMiddleware","_overrideRedirectResult","reloadAndSetCurrentUserOrClear","redirectResolver","_completeRedirectFn","_setRedirectUser","useDeviceLanguage","userExtern","skipBeforeStateCallbacks","notifyAuthListeners","redirectPersistenceManager","setPersistence","_getPersistence","onAuthStateChanged","registerStateListener","beforeAuthStateChanged","onIdTokenChanged","redirectManager","_redirectPersistence","currentUid","subscription","addObserver","_logFramework","framework","_getFrameworks","heartbeatsHeader","optional","getHeartbeatsHeader","_castAuth","connectAuthEmulator","authInternal","disableWarnings","extractProtocol","extractHostAndPort","portStr","emitEmulatorWarning","protocolEnd","hostAndPort","bracketedIPv6","parsePort","attachBanner","sty","innerText","backgroundColor","color","bottom","margin","zIndex","textAlign","AuthCredential","signInMethod","_getIdTokenResponse","_auth","_linkToIdToken","_idToken","_getReauthenticationResolver","resetPassword","updateEmailPassword","applyActionCode$1","signInWithPassword","sendOobCode","sendEmailVerification$1","sendPasswordResetEmail$1","sendSignInLinkToEmail$1","verifyAndChangeEmail","signInWithEmailLink$1","signInWithEmailLinkForLinking","EmailAuthCredential","_email","_password","_tenantId","oobCode","_fromEmailAndPassword","_fromEmailAndCode","returnSecureToken","signInWithIdp","IDP_REQUEST_URI$1","OAuthCredential","pendingToken","cred","oauthToken","oauthTokenSecret","buildRequest","autoCreate","postBody","sendPhoneVerificationCode","signInWithPhoneNumber$1","linkWithPhoneNumber$1","temporaryProof","VERIFY_PHONE_NUMBER_FOR_EXISTING_ERROR_MAP_","verifyPhoneNumberForExisting","apiRequest","operation","PhoneAuthCredential","verificationId","verificationCode","_makeVerificationRequest","sessionInfo","parseMode","parseDeepLink","doubleDeepLink","iOSDeepLink","iOSDoubleDeepLink","ActionCodeURL","actionLink","continueUrl","parseActionCodeURL","parseLink","EmailAuthProvider","PROVIDER_ID","emailLink","actionCodeUrl","EMAIL_PASSWORD_SIGN_IN_METHOD","EMAIL_LINK_SIGN_IN_METHOD","FederatedAuthProvider","defaultLanguageCode","customParameters","setDefaultLanguage","setCustomParameters","customOAuthParameters","getCustomParameters","BaseOAuthProvider","addScope","getScopes","OAuthProvider","_fromParams","_credential","rawNonce","userCredential","oauthCredentialFromTaggedObject","oauthIdToken","oauthAccessToken","FacebookAuthProvider","FACEBOOK_SIGN_IN_METHOD","credentialFromTaggedObject","GoogleAuthProvider","GOOGLE_SIGN_IN_METHOD","GithubAuthProvider","GITHUB_SIGN_IN_METHOD","IDP_REQUEST_URI","SAMLAuthCredential","SAML_PROVIDER_PREFIX","SAMLAuthProvider","samlCredentialFromTaggedObject","_create","TwitterAuthProvider","TWITTER_SIGN_IN_METHOD","signUp","UserCredentialImpl","operationType","_fromIdTokenResponse","providerIdForResponse","userCred","_updateTokensIfNecessary","signInAnonymously","MultiFactorError","_processCredentialSavingMfaContextIfNecessary","idTokenProvider","_fromErrorAndOperation","providerDataAsNames","pid","unlink","_assertLinkedStatus","deleteProvider","providersLeft","pd","_link$1","_forOperation","expected","providerIds","_reauthenticate","_signInWithCredential","signInWithCredential","linkWithCredential","reauthenticateWithCredential","signInWithCustomToken$1","signInWithCustomToken","customToken","MultiFactorInfoImpl","factorId","mfaEnrollmentId","enrollmentTime","enrolledAt","enrollment","PhoneMultiFactorInfoImpl","_fromServerResponse","phoneInfo","_setActionCodeSettingsOnRequest","actionCodeSettings","dynamicLinkDomain","canHandleCodeInApp","handleCodeInApp","iOS","bundleId","iOSBundleId","android","androidInstallApp","installApp","androidMinimumVersionCode","minimumVersion","androidPackageName","sendPasswordResetEmail","authModular","requestType","confirmPasswordReset","newPassword","applyActionCode","checkActionCode","newEmail","mfaInfo","multiFactorInfo","previousEmail","verifyPasswordResetCode","createUserWithEmailAndPassword","signInWithEmailAndPassword","sendSignInLinkToEmail","isSignInWithEmailLink","signInWithEmailLink","credentialWithLink","createAuthUri","fetchSignInMethodsForEmail","continueUri","signinMethods","sendEmailVerification","verifyBeforeUpdateEmail","updateProfile$1","updateProfile","profileRequest","passwordProvider","updateEmail","updateEmailOrPassword","updatePassword","profile","rawUserInfo","filteredProviderId","GenericAdditionalUserInfo","FacebookAdditionalUserInfo","GithubAdditionalUserInfo","GoogleAdditionalUserInfo","TwitterAdditionalUserInfo","screenName","FederatedAdditionalUserInfoWithUsername","login","getAdditionalUserInfo","updateCurrentUser","deleteUser","MultiFactorSessionImpl","mfaPendingCredential","multiFactorSession","pendingCredential","_fromMfaPendingCredential","_fromIdtoken","MultiFactorResolverImpl","hints","signInResolver","authExtern","mfaResponse","_process","assertionExtern","getMultiFactorResolver","errorInternal","_fromError","startEnrollPhoneMfa","finalizeEnrollPhoneMfa","withdrawMfa","MultiFactorUserImpl","enrolledFactors","getSession","finalizeMfaResponse","infoOrUid","multiFactorUserCache","multiFactor","userModular","_fromUser","STORAGE_AVAILABLE_KEY","BrowserPersistenceClass","storageRetriever","_iframeCannotSyncWebStorage","_POLLING_INTERVAL_MS$1","IE10_LOCAL_STORAGE_SYNC_DELAY","BrowserLocalPersistence","localStorage","poll","onStorageEvent","localCache","pollTimer","safariLocalStorageNotSynced","fallbackToPolling","forAllChangedKeys","_oldValue","notifyListeners","detachListener","stopPolling","storedValue","triggerListeners","startPolling","StorageEvent","attachListener","browserLocalPersistence","BrowserSessionPersistence","sessionStorage","browserSessionPersistence","_allSettled","Receiver","eventTarget","handlersMap","handleEvent","existingInstance","receivers","receiver","isListeningto","newInstance","messageEvent","ports","_subscribe","_unsubscribe","_generateEventId","prefix","removeMessageHandler","onMessage","completionTimer","ackTimer","_setWindowLocation","_isWorker","_getActiveServiceWorker","serviceWorker","registration","ready","active","_getServiceWorkerController","controller","_getWorkerGlobalScope","DB_OBJECTSTORE_NAME","DB_DATA_KEYPATH","DBPromise","toPromise","getObjectStore","isReadWrite","_deleteDatabase","_openDatabase","keyPath","objectStoreNames","contains","_putObject","getObject","_deleteObject","_POLLING_INTERVAL_MS","_TRANSACTION_RETRY_COUNT","IndexedDBLocalPersistence","pendingWrites","sender","serviceWorkerReceiverAvailable","activeServiceWorker","_workerInitializationPromise","initializeServiceWorkerMessaging","numAttempts","_openDb","initializeReceiver","initializeSender","_origin","_poll","keyProcessed","_data","_send","_withPendingWrite","_withRetries","notifyServiceWorker","getAllRequest","keysInResult","fbase_key","localKey","indexedDBLocalPersistence","startSignInPhoneMfa","finalizeSignInPhoneMfa","getRecaptchaParams","recaptchaSiteKey","getScriptParentElement","_loadJS","charset","_generateCallbackName","_SOLVE_TIME_MS","_EXPIRATION_TIME_MS","_WIDGET_ID_START","MockReCaptcha","_widgets","MockWidget","optWidgetId","execute","containerOrId","deleted","responseToken","clickHandler","getElementById","isVisible","checkIfDeleted","generateRandomAlphaNumericString","expiredCallback","allowedChars","_JSLOAD_CALLBACK","NETWORK_TIMEOUT_DELAY","RECAPTCHA_BASE","ReCaptchaLoaderImpl","hostLanguage","librarySeparatelyLoaded","grecaptcha","load","hl","isHostLanguageValid","shouldResolveImmediately","recaptcha","widgetId","clearedOneInstance","MockReCaptchaLoaderImpl","RECAPTCHA_VERIFIER_TYPE","DEFAULT_PARAMS","theme","RecaptchaVerifier","destroyed","tokenChangeListeners","renderPromise","isInvisible","makeTokenCallback","_recaptchaLoader","validateStartingState","assertNotDestroyed","getAssertedRecaptcha","tokenChange","makeRenderPromise","_reset","sitekey","globalFunc","guaranteedEmpty","domReady","siteKey","ConfirmationResultImpl","onConfirmation","confirm","authCredential","_fromVerification","signInWithPhoneNumber","appVerifier","_verifyPhoneNumber","linkWithPhoneNumber","reauthenticateWithPhoneNumber","recaptchaToken","verify","phoneInfoOptions","phoneEnrollmentInfo","phoneSessionInfo","multiFactorHint","multiFactorUid","phoneSignInInfo","phoneResponseInfo","updatePhoneNumber","PhoneAuthProvider","verifyPhoneNumber","phoneOptions","applicationVerifier","_fromTokenResponse","_withDefaultResolver","resolverOverride","PHONE_SIGN_IN_METHOD","IdpCredential","_buildIdpRequest","returnIdpCredential","_signIn","_reauth","_link","AbstractPopupRedirectOperation","pendingPromise","eventManager","onExecution","registerConsumer","urlResponse","getIdpTask","onError","unregisterAndCleanUp","unregisterConsumer","_POLL_WINDOW_CLOSE_TIMEOUT","signInWithPopup","resolverInternal","PopupOperation","executeNotNull","reauthenticateWithPopup","linkWithPopup","authWindow","pollId","currentPopupAction","_openPopup","associatedEvent","_originValidation","_isIframeWebStorageSupported","pollUserCancellation","PENDING_REDIRECT_KEY","redirectOutcomeMap","RedirectAction","readyOutcome","hasPendingRedirect","_getAndClearPendingRedirectStatus","onAuthEvent","_redirectUserForId","pendingRedirectKey","resolverPersistence","_setPendingRedirectStatus","signInWithRedirect","_signInWithRedirect","_openRedirect","reauthenticateWithRedirect","_reauthenticateWithRedirect","prepareUserForRedirect","linkWithRedirect","_linkWithRedirect","getRedirectResult","_getRedirectResult","resolverExtern","EVENT_DUPLICATION_CACHE_DURATION_MS","AuthEventManager","cachedEventUids","consumers","queuedRedirectEvent","hasHandledPotentialRedirect","lastProcessedEventTime","authEventConsumer","isEventForConsumer","sendToConsumer","saveEventToCache","onEvent","hasEventBeenHandled","consumer","isRedirectEvent","isNullRedirectEvent","eventIdMatches","eventUid","_getProjectConfig","IP_ADDRESS_REGEX","HTTP_REGEX","_validateOrigin","authorizedDomains","matchDomain","ceUrl","escapedDomainPattern","NETWORK_TIMEOUT","resetUnloadedGapiModules","beacon","___jsl","CP","loadGapi","loadGapiIframe","gapi","iframes","getContext","Iframe","cbName","cachedGApiLoader","_loadGapi","PING_TIMEOUT","IFRAME_PATH","EMULATED_IFRAME_PATH","IFRAME_ATTRIBUTES","tabindex","EID_FROM_APIHOST","getIframeUrl","eid","fw","_openIframe","where","messageHandlersFilter","CROSS_ORIGIN_IFRAMES_FILTER","dontclear","restyle","setHideOnLeave","networkErrorTimer","clearTimerAndResolve","ping","BASE_POPUP_OPTIONS","resizable","statusbar","toolbar","DEFAULT_WIDTH","DEFAULT_HEIGHT","TARGET_BLANK","FIREFOX_EMPTY_URL","AuthPopup","_open","screen","availHeight","availWidth","scrollbars","optionsString","accum","openAsNewWindowIOS","newWin","click","initMouseEvent","WIDGET_PATH","EMULATOR_WIDGET_PATH","_getRedirectUrl","redirectUrl","additionalParams","paramsDict","getHandlerBase","WEB_STORAGE_SUPPORT_KEY","BrowserPopupRedirectResolver","eventManagers","originValidationPromises","initAndGetManager","register","iframeEvent","authEvent","browserPopupRedirectResolver","MultiFactorAssertionImpl","_finalizeEnroll","_finalizeSignIn","PhoneMultiFactorAssertionImpl","phoneVerificationInfo","PhoneMultiFactorGenerator","_fromCredential","FACTOR_ID","AuthInterop","internalListeners","getUid","assertAuthConfigured","addAuthTokenListener","updateProactiveRefresh","removeAuthTokenListener","getVersionForPlatform","registerAuth","getProvider","authInstance","setInstantiationMode","setInstanceCreatedCallback","_instanceIdentifier","_instance","authInternalProvider","getAuth","UMD","single","_indexes","NULL","preparedSearch","getPreparedSearch","getPrepared","searchBitflags","bitflags","_bitflags","go","targets","noResults","threshold","containsSpace","INT_MIN","INT_MAX","resultsLen","limitedCount","targetsLen","getValue","_targetLower","_targetLowerCodes","_nextBeginningIndexes","peek","replaceTop","scoreFn","defaultScoreFn","keysLen","objResults","keyI","highlight","hOpen","hClose","highlightCallback","highlighted","matchesIndex","opened","targetLen","indexes","char","matchI","indexesI","prepare","prepareLowerInfo","_lower","lowerCodes","prepareSearch","spaceSearches","searches","_info","targetPrepared","preparedCache","searchPrepared","preparedSearchCache","prepared","algorithmSpaces","searchLower","searchLowerCodes","searchLowerCode","targetLowerCodes","searchI","targetI","matchesSimpleLen","isMatch","matchesSimple","successStrict","matchesStrictLen","nextBeginningIndexes","prepareNextBeginningIndexes","backtrackCount","lastMatch","matchesStrict","substringIndex","isSubstring","isSubstringBeginning","matchesBest","matchesBestLen","extraMatchGroupCount","unmatchedDistance","uniqueBeginningIndexes","seen_indexes","first_seen_index_last_search","strLen","lower","lowerCode","bit","prepareBeginningIndexes","beginningIndexes","beginningIndexesLen","wasUpper","wasAlphanum","targetCode","isUpper","isAlphanum","isBeginning","lastIsBeginning","lastIsBeginningI","cleanup","segs","fastpriorityqueue","camel2hyphen","isDimension","obj2mq","mq","features","json2mq","arrayMap","iteratee","arrayReduce","accumulator","initAccum","asciiToArray","reAsciiWord","asciiWords","getRawTag","objectToString","nullTag","undefinedTag","symToStringTag","toStringTag","baseGetTag","basePropertyOf","baseSlice","INFINITY","symbolProto","baseToString","castSlice","hasUnicode","stringToArray","createCaseFirst","methodName","strSymbols","trailing","deburr","words","rsApos","reApos","createCompounder","deburredLetters","deburrLetter","freeGlobal","objectProto","nativeObjectToString","isOwn","unmasked","rsAstralRange","rsComboMarksRange","reComboHalfMarksRange","rsComboSymbolsRange","rsComboRange","rsVarRange","rsZWJ","reHasUnicode","reHasUnicodeWord","hasUnicodeWord","freeSelf","unicodeToArray","rsAstral","rsCombo","rsFitz","rsModifier","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsOptJoin","rsSeq","rsSymbol","reUnicode","rsDingbatRange","rsLowerRange","rsMathOpRange","rsNonCharRange","rsPunctuationRange","rsSpaceRange","rsUpperRange","rsBreakRange","rsBreak","rsDigits","rsDingbat","rsLower","rsMisc","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","rsOrdLower","rsOrdUpper","rsEmoji","reUnicodeWord","unicodeWords","capitalize","camelCase","word","upperFirst","reLatin","reComboMark","isObjectLike","symbolTag","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","INVALID_TEMPL_VAR_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","LAZY_WHILE_FLAG","MAX_INTEGER","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","proxyTag","regexpTag","setTag","stringTag","weakMapTag","weakSetTag","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","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reNoMatch","reUnescapedString","contextProps","templateCounter","typedArrayTags","cloneableTags","htmlEscapes","htmlUnescapes","stringEscapes","freeParseFloat","freeParseInt","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","types","require","binding","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","nodeIsSet","isSet","nodeIsTypedArray","arrayAggregator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","eachFunc","baseFindIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","baseReduce","baseSortBy","comparer","baseTimes","baseToPairs","baseTrim","trimmedEndIndex","baseUnary","baseValues","cacheHas","charsStartIndex","chrSymbols","charsEndIndex","countHolders","placeholder","escapeHtmlChar","escapeStringChar","iteratorToArray","mapToArray","overArg","transform","replaceHolders","setToArray","setToPairs","strictLastIndexOf","stringSize","unicodeSize","unescapeHtmlChar","runInContext","pick","arrayProto","funcProto","coreJsData","funcToString","idCounter","maskSrcKey","objectCtorString","oldDash","reIsNative","allocUnsafe","getPrototype","objectCreate","spreadableSymbol","symIterator","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","nativeIsFinite","isFinite","nativeJoin","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","DataView","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","lodash","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","lazyClone","copyArray","lazyReverse","lazyValue","dir","isArr","isRight","arrLength","view","getView","iteratees","iterLength","takeCount","baseWrapperValue","outer","iterIndex","computed","Hash","hashClear","__data__","hashDelete","hashGet","hashHas","hashSet","ListCache","listCacheClear","listCacheDelete","assocIndexOf","listCacheGet","listCacheHas","listCacheSet","MapCache","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","SetCache","setCacheAdd","setCacheHas","Stack","stackClear","stackDelete","stackGet","stackHas","stackSet","pairs","arrayLikeKeys","inherited","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","objValue","baseAggregator","baseEach","baseAssign","copyObject","baseAssignIn","keysIn","baseAt","paths","skip","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","copySymbolsIn","copySymbols","initCloneByTag","stacked","subValue","keysFunc","getAllKeysIn","baseConforms","baseConformsTo","baseDelay","wait","baseDifference","isCommon","valuesLength","valuesIndex","templateSettings","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","baseFill","toInteger","baseFilter","baseFlatten","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","symbolsFunc","baseGt","other","baseHas","baseHasIn","baseInRange","baseIntersection","arrays","othLength","othIndex","caches","seen","baseInverter","baseInvoke","baseIsArguments","baseIsArrayBuffer","baseIsDate","baseIsEqual","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","baseIsMap","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","isMasked","baseIsRegExp","baseIsSet","baseIsTypedArray","isLength","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","baseMergeDeep","safeGet","mergeFunc","isTyped","isArrayLikeObject","cloneTypedArray","toPlainObject","baseNth","baseOrderBy","orders","getIteratee","criteria","compareMultiple","basePick","basePickBy","baseSet","basePropertyDeep","basePullAll","basePullAt","baseUnset","baseRange","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSome","baseSortedIndex","retHighest","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","actions","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","copy","cloneArrayBuffer","arrayBuffer","byteLength","cloneDataView","byteOffset","cloneRegExp","cloneSymbol","typedArray","compareAscending","valIsDefined","valIsReflexive","objCriteria","othCriteria","ordersLength","order","composeArgs","partials","holders","isCurried","argsIndex","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","getSymbols","getSymbolsIn","createAggregator","createAssigner","assigner","guard","isIterateeCall","createBind","isBind","Ctor","createCtor","thisBinding","createCurry","getHolder","createRecurry","createHybrid","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","getFuncName","getData","isLaziable","plant","partialsRight","holdersRight","argPos","ary","isAry","isBindKey","isFlip","holdersCount","newHolders","reorder","createInverter","toIteratee","createMathOperation","operator","createOver","arrayFunc","createPadding","charsLength","createPartial","createRange","toFinite","createRelationalOperation","wrapFunc","isCurry","newHoldersRight","newPartials","newPartialsRight","setData","setWrapToString","createRound","precision","createToPairs","createWrap","mergeData","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","isPartial","arrStacked","othStacked","arrValue","othValue","compared","convert","objProps","objLength","othProps","objStacked","skipCtor","objCtor","othCtor","flatten","otherFunc","isKeyable","stubArray","transforms","getWrapDetails","hasPath","hasFunc","insertWrapDetails","ctorString","isMaskable","stubFalse","memoizeCapped","memoize","srcBitmask","newBitmask","isCombo","otherArgs","oldArray","shortOut","reference","updateWrapDetails","lastCalled","stamp","rand","quote","subString","chunk","compact","difference","differenceBy","differenceWith","drop","dropRight","dropRightWhile","dropWhile","findLastIndex","flattenDeep","flattenDepth","fromPairs","initial","intersection","mapped","intersectionBy","intersectionWith","nth","pull","pullAll","pullAllBy","pullAllWith","pullAt","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sortedUniq","sortedUniqBy","take","takeRight","takeRightWhile","takeWhile","union","unionBy","unionWith","uniq","uniqBy","uniqWith","unzip","unzipWith","without","xor","xorBy","xorWith","zip","zipObject","zipObjectDeep","zipWith","tap","wrapperAt","wrapperChain","wrapperCommit","wrapperNext","wrapperToIterator","wrapperPlant","wrapperReverse","wrapped","wrapperValue","countBy","findLast","flatMap","flatMapDeep","flatMapDepth","forEachRight","groupBy","invokeMap","keyBy","orderBy","partition","reduceRight","negate","sample","sampleSize","shuffle","sortBy","after","before","bindKey","curry","curryRight","debounce","lastArgs","lastThis","maxWait","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","debounced","isInvoking","flip","memoized","Cache","once","overArgs","funcsLength","partial","partialRight","rearg","throttle","unary","castArray","cloneWith","cloneDeep","cloneDeepWith","conformsTo","gt","gte","isElement","isEqual","isEqualWith","isInteger","isMatchWith","isNative","isNull","isNil","isSafeInteger","isWeakMap","isWeakSet","lt","lte","remainder","isBinary","toSafeInteger","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","mergeWith","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","functions","functionsIn","invert","invertBy","invoke","mapKeys","mapValues","omit","omitBy","pickBy","setWith","toPairs","toPairsIn","isArrLike","unset","updateWith","valuesIn","clamp","inRange","floating","escape","escapeRegExp","kebabCase","lowerCase","lowerFirst","strLength","padEnd","padStart","snakeCase","startCase","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","toLower","toUpper","trimEnd","trimStart","truncate","omission","newEnd","upperCase","bindAll","methodNames","cond","conforms","defaultTo","flow","flowRight","matchesProperty","methodOf","mixin","noConflict","nthArg","over","overEvery","overSome","propertyOf","range","rangeRight","stubObject","stubString","stubTrue","times","toPath","augend","addend","dividend","divisor","maxBy","mean","meanBy","minBy","multiplier","multiplicand","minuend","subtrahend","sum","sumBy","entriesIn","extendWith","each","eachRight","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","commit","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","getLocationHref","createTag","extendPrototype","sourcePrototype","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","play","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","createTypedArray","createRegularArray","createTypedArrayFactory","Float32Array","Int16Array","Uint8ClampedArray","createSizedArray","_typeof$6","subframeEnabled","expressionsPlugin","idPrefix$1","isSafari","_shouldRoundValues","bmPow","bmSqrt","sqrt","bmFloor","bmMax","bmMin","BMMath","ProjectInterface$1","propertyNames","tOfVal","absArr","defaultCurveSegments","degToRads","PI","roundCorner","roundValues","bmRnd","styleDiv","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","totalTime","frameMultiplier","direction","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","RGBtoHSV","addSaturationToRGB","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","colorMap","setSubframeEnabled","getSubframeEnabled","setExpressionsPlugin","getExpressionsPlugin","setDefaultCurveSegments","getDefaultCurveSegments","setIdPrefix","getIdPrefix","createNS","createElementNS","_typeof$5","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","_workerSelf","createWorker","Worker","setupWorker","dataFunctionManager","completeLayers","layers","comps","layerData","jLen","kLen","tt","td","hasMask","maskProps","masksProperties","pt","convertPathsToAbsoluteValues","ty","findCompLayers","refId","completeShapes","shapes","completeText","completeChars","assets","findComp","comp","__used","ks","checkVersion","minimum","animVersionString","animVersion","checkText","updateTextLayer","textLayer","documentData","iterateLayers","animationData","checkChars","charData","st","sr","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","checkShapes","completeClosingShapes","cl","completeData","__complete","moduleOb","assetLoader","formatResponse","contentTypeHeader","loadAsset","errorCallback","animation","createProcess","loadAnimation","processId","loadData","completeAnimation","anim","ImagePreloader","proxyImage","canvas","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","testImageLoaded","img","box","getBBox","_imageLoaded","createImageData","ob","_elementHelper","createImgData","crossOrigin","createFootageData","footageData","_footageLoaded","loadAssets","images","_createImageData","setPath","setAssetsPath","getAsset","destroy","loadedImages","loadedFootages","setCacheType","elementHelper","ImagePreloaderFactory","BaseEvent","triggerEvent","_cbs","markerParser","parsePayloadLines","keysCount","_markers","markers","_marker","markerData","tm","dr","cm","ProjectInterface","registerComposition","compositions","_thisProjectFunction","nm","prepareFrame","xt","currentFrame","compInterface","renderers","registerRenderer","getRenderer","_typeof$4","AnimationItem","isLoaded","currentRawFrame","frameRate","frameMult","playSpeed","playDirection","playCount","isPaused","autoplay","loop","renderer","animationID","timeCompleted","segmentPos","isSubframeEnabled","segments","_idle","_completedLoop","projectInterface","imagePreloader","audioController","configAnimation","onSetupError","onSegmentComplete","drawnFrameEvent","setParams","animType","RendererClass","rendererSettings","globalData","defs","setProjectInterface","autoloadSegments","initialSegment","setupAnimation","trigger","wrapperAttributes","getNamedItem","prerender","includeLayers","newLayers","fonts","fontManager","addChars","addFonts","initExpressions","loadNextSegment","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","animData","fr","searchExtraCompositions","updaFrameModifier","waitForFontsLoaded","triggerConfigError","rendererType","initItems","gotoFrame","resize","updateContainerSize","setSubframe","renderFrame","triggerRenderFrameError","togglePause","setCurrentRawFrameValue","getMarkerData","markerName","marker","goToAndStop","isFrame","numValue","frameModifier","goToAndPlay","playSegments","advanceTime","nextValue","_isComplete","checkSegments","adjustSegment","setSpeed","setDirection","setSegment","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","getPath","getAssetData","hide","show","getDuration","updateDocumentData","getElementByPath","animationManager","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","subtractPlayingCount","registerAnimation","elem","getRegisteredAnimations","lenAnims","animations","addPlayingCount","activate","nowTime","elapsedTime","requestAnimationFrame","searchAnimations","animElements","getElementsByClassName","div","unfreeze","BezierFactory","getBezierEasing","beziers","bezEasing","BezierEasing","NEWTON_ITERATIONS","NEWTON_MIN_SLOPE","SUBDIVISION_PRECISION","SUBDIVISION_MAX_ITERATIONS","kSplineTableSize","kSampleStepSize","float32ArraySupported","aA1","aA2","calcBezier","aT","getSlope","binarySubdivide","aX","aA","aB","mX1","mX2","currentX","currentT","newtonRaphsonIterate","aGuessT","currentSlope","points","_p","_mSampleValues","_precomputed","mY1","mY2","_precompute","_getTForX","_calcSampleValues","mSampleValues","intervalStart","currentSample","lastSample","dist","guessForT","initialSlope","pooling","_double","poolFactory","initialLength","_release","_length","_maxLength","pool","newElement","release","bezierLengthPool","addedLength","percents","lengths","segmentsLengthPool","totalLength","bezFunction","math","pointOnLine2D","x1","y1","y2","x3","y3","det1","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","getBezierLength","pt1","pt2","pt3","pt4","ptCoord","perc","ptDistance","curveSegments","lastPoint","lengthData","getSegmentsLength","shapeData","segmentsLength","pathV","pathO","pathI","BezierData","segmentLength","PointData","partialLength","buildBezierData","storedData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","getPointInSegment","percent","t1","u1","ptX","ptY","bezierSegmentPoints","getNewSegment","startPerc","endPerc","t0","u0","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","bez","PropertyFactory","initFrame","mathAbs","frameNum","caching","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","keyframes","keyframesMetadata","endValue","nextKeyTime","keyTime","ti","ind","__fnct","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","sh","quatStart","createQuaternion","quatEnd","quaternionToEuler","slerp","omega","cosom","sinom","scale0","scale1","ax","ay","az","aw","bx","by","bz","bw","acos","sin","quat","qx","qy","qz","qw","heading","atan2","attitude","asin","bank","cos","s1","s2","s3","getValueAtCurrentTime","renderedFrame","_caching","renderResult","setVValue","multipliedValue","mult","_mdf","processEffectsSequence","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","addDynamicProperty","ValueProperty","vel","MultiDimensionalProperty","KeyframedValueProperty","KeyframedMultidimensionalProperty","arrLen","DynamicPropertyContainer","dynamicProperties","_isAnimated","iterateDynamicProperties","initDynamicPropertyContainer","pointPool","ShapePath","setPathData","setLength","doubleArrayLength","setXYAt","setTripleAt","vX","vY","oX","oY","iX","iY","newPath","vertices","outPoints","inPoints","cnt","shapePool","shapePath","shape","cloned","ShapeCollection","addShape","releaseShapes","shapeCollectionPool","newShapeCollection","shapeCollection","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","localShapeCollection","shapesEqual","shape1","shape2","ShapeProperty","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","p0","s0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","sy","ir","convertToPath","convertStarToPath","convertPolygonToPath","or","rad","roundness","perimSegment","numPts","angle","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","v1","getShapeProp","dataProp","getConstructorFunction","getKeyframedConstructorFunction","Matrix","_cos","_sin","_tan","tan","_rnd","rotate","mCos","mSin","_t","rotateX","rotateY","rotateZ","shear","sx","skewFromAxis","scale","sz","setTransform","translate","tx","a2","b2","d2","e2","f2","g2","h2","i2","j2","k2","l2","m2","n2","o2","p2","_identityCalculated","a1","b1","d1","e1","f1","g1","h1","i1","j1","k1","l1","m1","n1","o1","isIdentity","_identity","equals","matr","cloneFromProps","applyToPoint","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","_typeof$3","lottie","setLocation","setSubframeRendering","setPrefix","setQuality","inBrowser","installPlugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","vars","useWebWorker","setIDPrefix","__getFactory","scripts","myScript","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","PuckerAndBloatModifier","initModifierProperties","addShapeToModifier","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","processShapes","shapePaths","_s","totalShapeLength","edges","newShapesData","addShapes","lastShapeInCollection","lastShape","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","amount","processPath","centerPoint","pathLength","clonedPath","TransformPropertyFactory","defaultVector","applyToMatrix","mat","rz","ry","px","py","pz","forceRender","_isDirty","precalculateMatrix","pre","appliedTransformations","autoOriented","v2","getValueAtTime","autoOrient","_addDynamicProperty","TransformProperty","getTransformProperty","RepeaterModifier","RoundCornersModifier","getFontProperties","fontData","styleName","styles","fStyle","fWeight","weight","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","matrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","resetElements","elements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","itemsTransform","cont","hasReloaded","copies","ix","reloadShapes","elems","offsetModulo","roundOffset","pProps","rProps","sProps","mProps","rd","currentV","currentI","currentO","closerV","distance","newPosPerc","FontManager","maxWaitingTime","emptyChar","combinedCharacters","surrogateModifiers","zeroWidthJoiner","trimFontOptions","font","familyArray","enabledFamilies","setUpNode","family","fontFamily","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","offsetWidth","checkLoadedFonts","loadedCount","loaded","fOrigin","monoCase","sansCase","checkLoadedFontsBinded","setIsLoadedBinded","createHelper","def","helper","engine","fontProps","tHelper","fFamily","fClass","tCanvasHelper","OffscreenCanvas","getComputedTextLength","measureText","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","fPath","querySelectorAll","rel","sc","getCharData","_char","_warned","_char2","fontName","getFontByName","doubleSize","singleSize","fName","isModifier","firstCharCode","secondCharCode","isZeroWidthJoiner","isCombinedCharacter","_char3","setIsLoaded","Font","typekitLoaded","fontPrototype","RenderableElement","initRenderable","isInRange","hidden","isTransparent","renderableComponents","addRenderableComponent","component","removeRenderableComponent","prepareRenderableFrame","checkLayerLimits","checkTransparency","finalTransform","mProp","renderConfig","hideOnTransparent","renderRenderable","sourceRectAtTime","getLayerSize","textData","MaskManagerInterface","MaskInterface","mask","_mask","MaskManager","maskManager","_masksInterfaces","viewData","maskFunction","ExpressionPropertyInterface","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","getVelocityAtTime","numKeys","valueProp","valueAtTime","speedAtTime","getSpeedAtTime","velocityAtTime","propertyGroup","UnidimensionalPropertyInterface","MultidimensionalPropertyInterface","defaultGetter","TransformExpressionInterface","_thisFunction","rotation","xRotation","yRotation","xPosition","yPosition","zPosition","anchorPoint","opacity","_px","_py","_pz","_transformFactory","LayerExpressionInterface","getMatrix","toWorldMat","propMatrix","_elem","transformMat","toWorldVec","applyPoint","toWorld","fromWorldVec","invertPoint","fromWorld","fromComp","sampleImage","transformInterface","_registerMaskInterface","_thisLayerFunction","_registerEffectsInterface","effects","effect","shapeInterface","textInterface","toComp","anchorPointDescriptor","hasParent","layerInterface","anchor_point","inPoint","outPoint","_name","registerMaskInterface","registerEffectsInterface","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","_propertyGroup","EffectsExpressionInterface","createEffectsInterface","effectsManager","effectElements","effectsData","ef","createGroupInterface","groupInterface","mn","createValueInterface","numProperties","np","expressionProperty","setGroupProperty","CompExpressionInterface","layer","pixelAspect","compSize","frameDuration","displayStartTime","numLayers","ShapePathInterface","propertyIndex","ShapeExpressionInterface","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","defaultInterfaceFactory","contentsInterfaceFactory","interfaces","transformInterfaceFactory","cix","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dataProps","strokeWidth","dash","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","radius","_interfaceFunction","parentGroupWrapper","TextExpressionInterface","_prevValue","_sourceText","sourceText","textProperty","currentData","getBlendMode","blendModeEnums","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","EffectsManager","effectItem","GroupEffect","BaseElement","FrameElement","_typeof$2","eff","checkMasks","effectsInterface","shapesData","itemsData","setBlendMode","blendModeValue","bm","baseElement","layerElement","initBaseData","layerId","getType","prepareProperties","_isParent","FootageInterface","outlineInterfaceFactory","currentPropertyName","currentProperty","getFootageData","searchProperty","propertyNameIndex","dataInterfaceFactory","outlineInterface","dataInterface","FootageElement","imageLoader","AudioElement","_isPlaying","_canPlay","_currentTime","_volumeMultiplier","_previousVolume","_placeholder","lv","au","BaseRenderer","TransformElement","MaskElement","maskElement","solidPath","rect","expansor","feMorph","currentMasks","maskType","maskRef","lastPath","filterID","expan","lastOperator","filterId","lastRadius","createLayerSolidPath","invRect","drawPath","maskedElement","getBaseElement","timeRemapped","totalVolume","volumeValue","checkLayers","buildItem","checkPendingElements","createItem","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","buildAllItems","pInterface","progressiveLoad","buildElementParenting","parentName","setAsParent","setHierarchy","addPendingElement","pendingElements","pathValue","setupGlobalData","fontsContainer","animationItem","initTransform","_matMdf","_opMdf","ao","renderTransform","finalMat","globalToLocal","ptNew","mHelper","getMaskProperty","isFirstFrame","getMaskelement","pathNodes","pathString","pathShapeValue","filtersFactory","createFilter","filId","skipCoordinates","fil","createAlphaToLuminanceFilter","feColorMatrix","featureSupport","registeredEffects","idPrefix","SVGEffects","filterManager","filters","Effect","countsAsEffect","registerEffect","SVGBaseElement","HierarchyElement","RenderableDOMElement","IImageElement","initElement","sourceRect","ProcessedElement","IShapeElement","initRendererElement","createContainerElements","matteElement","transformedElement","_sizeChanged","gg","layerElementParent","masker","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","ln","hd","cp","clipId","cpGroup","renderElement","destroyBaseElement","createRenderableComponents","renderableEffectsManager","setMatte","initHierarchy","checkParenting","_prototype","createContent","renderInnerContent","innerElem","pr","imagePreserveAspectRatio","addShapeToModifiers","shapeModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","shouldBreakProcess","searchProcessedElement","processedElements","addProcessedElement","lineCapEnum","lineJoinEnum","SVGShapeData","transformers","lStr","lvl","SVGStyleData","pElem","msElem","DashProperty","dashStr","dashArray","dashoffset","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGNoStyleData","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","SVGTransformData","comparePoints","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","maskId","opFill","lc","lj","ml","of","ost","buildShapeString","_o","shapeString","SVGElementsRenderer","_identityMatrix","_matrixHelper","createRenderFunction","renderFill","renderGradient","renderGradientStroke","renderStroke","renderPath","renderContentTransform","renderNoop","styleData","itemData","pathStringTransformed","redraw","iterations","lLen","styleElem","hasOpacity","attr1","attr2","cValues","oValues","ang","SVGShapeElement","stylesList","animatedContents","LetterProps","sw","fc","TextProperty","_frameId","keysIndex","canResize","minimumFontSize","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","completeTextData","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","GradientConstructor","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","shapeProperty","setElementStyles","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentIndex","textKeys","buildFinalText","charCode","charactersArray","shouldCombine","newLineFlag","letters","anchorGrouping","currentSize","currentPos","currentLine","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","an","anIndexes","animatorJustifyOffset","animatorData","letterData","based","animators","fh","fs","fb","rn","totalChars","newInd","currentInd","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorProp","TextSelectorPropFactory","_currentTextLength","finalS","finalE","xe","ne","sm","getTextSelectorProp","getMult","easer","tot","smoothness","newCharsFlag","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","TextAnimatorProperty","renderType","_hasMaskedPath","_textData","_renderType","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","ITextElement","searchProperties","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","prevPoint","tanAngle","matrixHelper","renderedLettersCount","tLength","pi","animatorSelector","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","letterM","letterP","defaultPropsArray","animatorFirstCharOffset","justifyOffsetMult","isNewLine","animatorOffset","rot","atan","textAnimator","buildNewText","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","buildColor","colorData","emptyProp","emptyShapeData","SVGTextLottieElement","textSpans","ISolidElement","NullElement","SVGRendererBase","ICompElement","SVGCompElement","supports3d","SVGRenderer","svgElement","ariaLabel","titleElement","titleId","descElement","descId","preserveAspectRatio","contentVisibility","viewBoxOnly","viewBoxSize","focusable","filterSize","CVContextData","saved","cArrPos","cTr","cO","savedOp","ShapeTransformManager","sequenceList","transform_key_count","CVEffects","CVMaskElement","hasMasks","CVBaseElement","CVShapeData","transformsManager","styledShapes","styledShape","addTransformSequence","trNodes","CVShapeElement","CVTextElement","stroke","currentRender","sWidth","fValue","CVImageElement","CVSolidElement","CanvasRendererBase","clearCanvas","dpr","devicePixelRatio","currentGlobalAlpha","contextData","CVCompElement","CanvasRenderer","HBaseElement","HSolidElement","HShapeElement","shapesContainer","currentBBox","HTextElement","textPaths","HCameraElement","pe","_prevMat","HImageElement","HybridRendererBase","threeDElements","camera","HCompElement","HybridRenderer","singleShape","textContainer","buildTextContents","textArray","textContents","currentTextContent","buildShapeData","shapeItem","tSpan","usesGlyphs","cachedSpansLength","span","childSpan","glyph","glyphElement","_debug","tElement","justify","textBox","bbox","renderedLetter","textSpan","appendElementInPos","nextElement","setElements","getElements","destroyElements","duplicate","newLength","currentSavedOp","processSequence","processSequences","getNewKey","canvasContext","beginPath","moveTo","lineTo","bezierCurveTo","save","clip","createElements","blendMode","globalCompositeOperation","hideElement","showElement","forceRealStack","ctxTransform","ctxOpacity","restore","transformHelper","dashResetter","preTransforms","co","wi","da","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","currentStyle","coOp","strokeStyle","grd","lineCap","lineJoin","miterLimit","setLineDash","lineDashOffset","closePath","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","commandsCounter","lastFill","lastStroke","lastStrokeW","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","par","drawImage","cProps","trProps","globalAlpha","actionFlag","popped","containerStyle","mozTransformOrigin","transformCanvas","isDashed","elementWidth","elementHeight","elementRel","animationRel","offsetHeight","fillType","clearRect","checkBlendMode","transformedElementStyle","matrixValue","webkitTransform","addEffects","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","boundingBox","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","bounds","shapeBoundingBox","xMax","yMax","tempBoundingBox","p3","b2ac","t2","calculateF","calculateBoundingBox","currentBoxContains","changed","shapeStyle","shapeTransform","compW","compH","innerElemStyle","textColor","lineHeight","tParent","tCont","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","svgTransform","setup","perspectiveStyle","perspectiveElem","perspective","webkitPerspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","Image","imageElem","newDOMElement","addTo3dContainer","nextDOMElement","nextLayer","tmpDOMElement","getThreeDContainerByPos","startPos","createThreeDContainer","center","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","cWidth","cHeight","floatingContainer","_createBaseContainerElements","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","_typeof$1","seedRandom","nodecrypto","chunks","rngname","startdenom","significance","seedrandom","seed","entropy","shortseed","mixkey","tostring","autoseed","arc4","ARC4","prng","int32","quick","pass","is_math_call","keylen","me","typ","smear","stringseed","randomBytes","msCrypto","initialize$2","propTypes","SHAPE","ExpressionManager","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","lenB","mul","mod","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","arr1","vec","rgbToHsl","hue2rgb","hslToRgb","linear","value1","value2","_tMin","rnd","rndm","createPath","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","needsVelocity","_needsRandom","elemType","$bm_transform","thisProperty","loopIn","loop_in","loopOut","loop_out","smooth","fromCompToSurface","thisLayer","thisComp","scoped_bm_rt","expression_function","eval","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","velocity","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","yaw","easeOut","val1","val2","applyEase","easeIn","ease","lenKey","nearestKey","obKey","framesToTime","fps","timeToFrames","randSeed","posterizeTime","framesPerSecond","executeExpression","_value","frameExpressionId","__preventDeadCodeRemoval","expressionHelpers","searchExpressions","_cachingAtTime","speed","getStaticValueAtTime","addPropertyDecorator","durationFlag","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","endFrame","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","getShapeValueAtTime","shapeValue","lastTime","ShapePropertyConstructorFunction","KeyframedShapePropertyConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","unitVector","tangentOnPath","normalOnPath","propertyGetShapeProp","trims","initialize$1","addDecorator","calculateExpression","getExpressionValue","isKeyframed","hasExpressions","SVGComposableEffect","SVGTintFilter","matrixFilter","feMerge","createMergeNode","SVGFillFilter","SVGStrokeEffect","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","feGaussianBlur","feOffset","feFlood","feComposite","resultId","ins","feMergeNode","colorBlack","colorWhite","groupPath","elemChildren","pathMasker","dasharrayValue","getTotalLength","lineLength","units","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","outputDelta","inputDelta","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","SVGGaussianBlurEffect","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","kBlurrinessToSigma","sigma","dimensions","sigmaX","sigmaY","edgeMode","Mime","_types","_extensions","typeMap","force","hasDot","$1","NProgress","Settings","easing","positionUsing","trickle","trickleRate","trickleSpeed","showSpinner","barSelector","spinnerSelector","toBarPerc","barPositionCSS","barCSS","transition","configure","started","isStarted","progress","bar","querySelector","getPositioningCSS","css","work","inc","$promise","always","fromStart","isRendered","addClass","spinner","removeClass","bodyStyle","vendorPrefix","pending","cssPrefixes","cssProps","getVendorProp","vendorName","capName","getStyleProp","applyCss","hasClass","oldList","newList","codes","createMessageToStatusCodeMap","createStatusCodeList","getStatusCode","getStatusMessage","redirect","mixins","Themeable","dark","light","isDark","$vuetify","staticClass","$slots","class","rtl","themeClasses","attrs","domProps","Colorable","Measurable","Roundable","classes","roundedClasses","convertToUnit","minWidth","measurableStyles","on","$listeners","setBackgroundColor","VProgressCircular","baseMixins","VSheet","Routable","Positionable","Sizeable","GroupableFactory","ToggleableFactory","activeClass","btnToggle","block","depressed","fab","icon","loading","outlined","plain","retainFocusOnClick","rounded","tile","proxyClass","absolute","disabled","isElevated","hasBg","isRound","groupClasses","elevationClasses","sizeableClasses","computedElevation","Elevatable","computedRipple","defaultRipple","circle","ripple","elevation","created","breakingProps","$attrs","breaking","detail","$el","blur","$emit","genContent","$createElement","genLoader","loader","indeterminate","generateRouteLink","setColor","setTextColor","Loadable","hover","loaderHeight","raised","isClickable","background","genProgress","chipGroup","closeIcon","closeLabel","draggable","filterIcon","pill","isLink","hasClose","genFilter","isActive","VIcon","VExpandXTransition","genClose","lang","stopPropagation","directives","Dependent","Detachable","Overlayable","Returnable","Stackable","Activatable","ClickOutside","fullscreen","maxWidth","noClickAnimation","persistent","retainFocus","scrollable","activatedBy","animate","animateTimeout","stackMinZIndex","previousActiveElement","contentClass","contentClasses","hasActivator","activator","$scopedSlots","watch","hideScroll","removeOverlay","unbind","showScroll","genOverlay","beforeMount","$nextTick","isBooted","beforeDestroy","animateClick","closeConditional","_isDestroyed","$refs","overlay","activeZIndex","getMaxZIndex","hideOverlay","activeElement","onFocusin","onClickOutside","onKeydown","keyCode","keyCodes","getOpenDependents","getActivator","getOpenDependentElements","showLazyContent","VThemeProvider","role","getScopeIdAttrs","keydown","ref","genTransition","genInnerContent","appear","include","getContentSlot","attach","genActivator","inset","vertical","Grid","fluid","createSimpleFunctional","VGrid","Vue","SIZE_MAP","isFontAwesome5","iconType","isSvgPath","BindsAttrs","dense","medium","hasClickListener","listeners$","getIcon","iconName","remapInternalIcon","getSize","sizes","xSmall","large","xLarge","explicitSize","getDefaultData","attrs$","getSvgWrapperData","wrapperData","applyColors","renderFontIcon","newChildren","delimiterIndex","isMaterialIcon","renderSvgIcon","svgData","xmlns","viewBox","renderSvgIconComponent","nativeOn","$_wrapperFor","VResponsive","hasIntersect","intersect","alt","contain","eager","gradient","lazySrc","rootMargin","srcset","currentSrc","image","isLoading","calculatedAspectRatio","naturalWidth","hasError","computedAspectRatio","normalisedSrc","aspect","aspectRatio","__cachedImage","backgroundImage","backgroundPosition","loadImage","mounted","isIntersecting","lazyImg","pollForSize","onLoad","getSrc","naturalHeight","consoleWarn","__genPlaceholder","slot","getSlot","__cachedSizer","genChildren","genMessage","Validatable","inheritAttrs","appendIcon","hideDetails","hideSpinButtons","persistentHint","prependIcon","hasMouseDown","hasState","showDetails","isLabelActive","isDirty","isFocused","isReadonly","computedId","_uid","hasDetails","messagesToDisplay","hasHint","hasMessages","hasLabel","internalValue","$_modelEvent","validations","validation","validationResult","genPrependSlot","genControl","genAppendSlot","genInputSlot","genMessages","genDefaultSlot","genLabel","genIcon","extraData","hasListener","validationState","mouseup","onClick","mousedown","onMouseDown","onMouseUp","VLabel","focused","VMessages","scopedSlots","genSlot","prepend","BaseItemGroup","Comparable","Proxyable","mandatory","multiple","internalLazyValue","selectedIndex","selectedItem","selectedItems","toggleMethod","selectedValues","valueComparator","intern","genData","updateInternalValue","$on","updateMandatory","updateItem","unregister","valueIndex","updateItemsState","updateMultiple","updateSingle","provide","itemGroup","functionalThemeClasses","isInList","inject","isInMenu","isInNav","expand","subheader","threeLine","twoLine","listClick","Ripple","isInGroup","listItemGroup","inactive","selectable","genAttrs","inputValue","filteredChild","VNode","isComment","VAvatar","horizontal","Bootable","RegistrableInject","Toggleable","noAction","subGroup","$route","matchRoute","genAppendIcon","VListItemIcon","genHeader","VListItem","genPrependIcon","genItems","onRouteChange","VExpandTransition","VListItemActionText","VListItemContent","VListItemTitle","VListItemSubtitle","VList","VListItemAction","VListItemAvatar","VListItemGroup","SSRBootable","footer","insetFooter","paddingTop","paddingRight","paddingBottom","paddingLeft","Delayable","Menuable","Resize","auto","closeOnClick","closeOnContentClick","disableKeys","maxHeight","offsetX","offsetY","openOnHover","calculatedTopAuto","defaultOffset","hasJustFocused","listIndex","resizeTimeout","tiles","activeTile","calculatedLeft","menuWidth","calculatedMinWidth","calcXOverflow","calcLeftAuto","calcLeft","calculatedMaxHeight","calculatedMaxWidth","nudgeWidth","pageWidth","calculatedTop","calcYOverflow","calcTop","hasClickableTiles","tabIndex","isContentActive","scrollTop","contentHeight","offsetTop","goTo","appOffset","callActivate","updateDimensions","startTransition","calcTopAuto","calcScrollPosition","maxScrollTop","scrollHeight","computedTop","tileDistanceFromMenuTop","firstTileOffsetTop","changeListIndex","getTiles","nextTile","prevTile","lastTile","firstTile","genActivatorAttributes","genActivatorListeners","onKeyDown","genDirectives","rootThemeClasses","activatorFixed","menuable__content__active","scroll","mouseenter","mouseEnterHandler","mouseleave","mouseLeaveHandler","runDelay","_this$$refs$content","relatedTarget","callDeactivate","onResize","__scrim","computedOpacity","button","calculatedSize","circumference","normalizedValue","strokeDashArray","strokeDashOffset","svgStyles","genCircle","cx","cy","genSvg","genInfo","onObserve","PositionableFactory","backgroundOpacity","bufferValue","stream","striped","__cachedBackground","backgroundStyle","__cachedBar","computedTransition","__cachedBarType","__cachedIndeterminate","__cachedDeterminate","__cachedBuffer","genProgressBar","__cachedStream","normalizedBuffer","isReversed","reactive","VFadeTransition","VSlideXTransition","change","genListeners","getBoundingClientRect","VProgressLinear","aspectStyle","VChip","VMenu","indeterminateIcon","onIcon","offIcon","wrapInArray","VDivider","VSubheader","hideSelected","itemDisabled","itemText","itemValue","noDataText","noFilter","searchInput","parsedItems","tileActiveClass","staticNoDataTile","genTileContent","genAction","VSimpleCheckbox","genDivider","genFilteredText","escapeHTML","getMaskedCharacters","genHighlight","toLocaleLowerCase","genTile","hasItem","getDisabled","scopedSlot","needsTile","getText","componentOptions","getPropertyFromItem","divider","defaultMenuProps","openOnClick","VTextField","Filterable","cacheItems","chips","clearable","deletableChips","disableLookup","itemColor","menuProps","openOnClear","returnObject","smallChips","cachedItems","menuIsBooted","isMenuActive","lastItem","keyboardLookupPrefix","keyboardLookupLastTime","filterDuplicates","hasChips","computedItems","computedOwns","computedCounterValue","counterValue","dynamicHeight","hasSlot","selection","listData","virtualizedItems","select","selectItem","staticList","consoleError","VSelectList","$_menuProps","menuCanShow","normalisedProps","nudgeBottom","setSelectedItems","menu","onMenuActiveChange","immediate","setMenuIndex","activateMenu","isInteractive","clearableCallback","getContent","uniqueValues","findExistingIndex","genChipSelection","onChipInput","genCommaSelection","computedColor","selections","genSelections","genInput","genFieldset","genAffix","genClearIcon","genIconSlot","genHiddenInput","genMenu","VInput","readonly","getObjectValueByPath","autocomplete","persistentPlaceholder","keypress","onKeyPress","genList","genListWithSlot","slots","slotName","onScroll","genSelection","genSlotSelection","selected","getMenuIndex","onBlur","isAppendInner","onEscDown","KEYBOARD_LOOKUP_THRESHOLD","onUpDown","onTabDown","onSpaceDown","which","showMoreItems","appendInner","shaped","boilerplate","rootTypes","article","avatar","card","chip","paragraph","sentences","genBone","genBones","bone","genStructure","mapBones","genSkeleton","afterEnter","resetStyles","beforeEnter","onBeforeEnter","beforeLeave","onBeforeLeave","leaveCancelled","bones","_initialStyle","setProperty","centered","multiLine","activeTimeout","hasBackground","deprecate","genActions","genWrapper","pointerenter","pointerleave","Applicationable","lightsOut","computedHeight","updateApplication","isGreater","intersectable","Intersect","onVisible","Intersectable","dirtyTypes","appendOuterIcon","autofocus","clearIcon","filled","fullWidth","prependInnerIcon","singleLine","solo","soloInverted","badInput","labelWidth","prefixWidth","prependWidth","isClearing","isSingle","isSolo","isEnclosed","hasCounter","labelPosition","labelValue","showLabel","setLabelWidth","setPrefixWidth","$watch","tryAutofocus","onFocus","genPrependInnerSlot","genCounter","maxlength","_this$$scopedSlots$co2","VCounter","genTextFieldSlot","genLegend","inputAttrs","onInput","quiet","messagesNode","counterNode","attachedRoot","validity","scrollWidth","setPrependWidth","updateValue","hasColor","rootIsDark","collapse","extensionHeight","prominent","short","isExtended","computedContentHeight","isCollapsed","isProminent","breakpoint","smAndDown","genBackground","VImg","genExtension","VToolbarTitle","VToolbarItems","VToolbar","closeDelay","openDelay","openOnFocus","closeDependents","unknown","activatorLeft","offsetLeft","nudgeLeft","nudgeRight","activatorTop","nudgeTop","pageYOffset","getSlotType","deactivate","Scroll","bench","itemHeight","__bench","__itemHeight","firstToRender","lastToRender","getLast","getChildren","genChild","getFirst","mergeTransitions","dest","transitions","createSimpleTransition","hideOnLeave","leaveAbsolute","leave","_transitionInitialStyles","afterLeave","createJavascriptTransition","expandedParentClass","sizeProperty","offsetProperty","_parent","initialStyle","enterCancelled","VTabTransition","VTabReverseTransition","VFabTransition","VScrollYTransition","VScrollYReverseTransition","ExpandTransitionGenerator","defaultConditional","checkEvent","checkIsActive","ShadowRoot","directive","vnode","_clickOutside","lastMousedownWasOutside","handleShadow","inserted","onMousedown","_el$_clickOutside","IntersectionObserver","_observe","_el$_observe","_el$_observe2","unobserve","passive","_onResize","_el$_onResize","DELAY_RIPPLE","isTouchEvent","isKeyboardEvent","calculate","localX","localY","touches","clientX","clientY","_ripple","centerX","centerY","ripples","getComputedStyle","dataset","previousPosition","activated","isHiding","isRippleEnabled","rippleShow","currentTarget","touched","rippleStop","isTouch","showTimerCommit","showTimer","rippleHide","rippleCancelShow","keyboardRipple","keyboardRippleShow","keyboardRippleHide","focusRippleHide","updateRipple","wasEnabled","removeListeners","_onScroll","_el$_onScroll","install","installed","OurVue","registerComponents","$_vuetify_subcomponents","$_vuetify_installed","vuetify","$ssrContext","observable","isHydrating","badge","dataIterator","noResultsText","loadingText","dataTable","itemsPerPageText","sortDescending","sortAscending","sortNone","activateNone","activateDescending","activateAscending","dataFooter","itemsPerPageAll","nextPage","prevPage","firstPage","lastPage","pageText","datePicker","itemsSelected","nextMonthAriaLabel","nextYearAriaLabel","prevMonthAriaLabel","prevYearAriaLabel","carousel","calendar","moreEvents","fileInput","counterSize","timePicker","am","pm","pagination","page","currentPage","rating","preset","mobileBreakpoint","scrollBarWidth","xs","md","lg","icons","iconfont","locales","disable","cspNonce","minifyTheme","themeCache","variations","themes","primary","secondary","accent","Presets","parentPreset","defaultPreset","mergeDeep","Preset","userPreset","globalPreset","Service","cur","Breakpoint","xl","xsOnly","smOnly","smAndUp","mdOnly","mdAndDown","mdAndUp","lgOnly","lgAndDown","lgAndUp","xlOnly","mobile","ssr","getClientHeight","getClientWidth","breakpoints","checkboxOn","checkboxOff","checkboxIndeterminate","subgroup","dropdown","radioOn","radioOff","edit","ratingEmpty","ratingFull","ratingHalf","unfold","minus","convertToComponentDeclarations","iconSet","mdiSvg","mdi","fa","fa4","faSvg","Icons","presets","LANG_PREFIX","fallback","getTranslation","usingDefault","defaultLocale","shortKey","Lang","translator","defaultTranslator","currentLocale","srgbForwardMatrix","srgbForwardTransform","srgbReverseMatrix","srgbReverseTransform","fromXYZ","xyz","rgb","toXYZ","cielabForwardTransform","cielabReverseTransform","transformedY","lab","Ln","isItem","variant","colors","parsedTheme","colorToHex","genVariations","colorToInt","intToHex","genBaseColor","genVariantColor","genColorVariableName","genColorVariable","genStyles","cssVar","variablesCss","aColor","variants","variantValue","lighten","darken","LAB","sRGB","Theme","unwatch","vueMeta","fillVariant","isVueMeta23","applyVueMeta23","checkOrCreateStyleElement","styleEl","oldDark","applyTheme","clearCss","generatedStyles","$meta","initVueMeta","initSSR","initTheme","genStyleElement","defaultTheme","metaKeyName","keyName","metaInfo","vuetifyStylesheet","cssText","addApp","$once","obs","ThemeUtils","currentTheme","getNestedValue","Vuetify","services","silent","internalActivator","activatorElement","activatorNode","slotType","addActivatorEvents","removeActivatorEvents","getValueProxy","vm","componentInstance","ELEMENT_NODE","resetActivator","applicationable","applicationProperty","removeApplication","callUpdate","newVal","oldVal","deactivated","makeWatcher","$delete","$data","hasContent","isCssColor","colorName","colorModifier","openTimeout","closeTimeout","clearDelay","searchChildren","child","isDependent","$children","openDependents","getClickableDependentElements","validateAttachTarget","removeActivator","hasDetached","initDetach","nextSibling","isConnected","record","removedNodes","disconnect","subtree","childList","minHeight","positionableFactory","allowOverflow","offsetOverflow","absoluteX","absoluteY","relativeYOffset","inputActivator","stackClass","computedLeft","absoluteYOffset","absolutePosition","xOverflow","getOffsetLeft","documentHeight","getInnerHeight","toTop","totalHeight","isOverflowing","checkForPageYOffset","getOffsetTop","checkActivatorFixed","offsetParent","pageXOffset","scrollLeft","getRoundedBoundedClientRect","marginLeft","marginTop","sneakPeek","offsetRect","VOverlay","overlayColor","overlayOpacity","animationFrame","createOverlay","propsData","$mount","getZIndex","addOnceEventListener","$destroy","cancelAnimationFrame","scrollListener","isContentEditable","up","down","deltaY","checkPath","hasScrollbar","overflowY","overflowX","shouldScroll","alreadyAtStart","alreadyAtEnd","shiftKey","deltaX","scrollingUp","scrollingDown","isInside","composedPath","dialog","getSelection","anchorNode","addPassiveEventListener","availableProps","filterObjectOnKeys","generateWarning","defaultImpl","returnValue","originalValue","composite","exact","exactPath","exactActiveClass","nuxt","stackElement","stackExclude","exclude","zis","activeElements","themeableProvide","appIsDark","injections","errorMessages","messages","rules","successMessages","validateOnBlur","errorBucket","hasFocused","hasInput","isResetting","valid","internalErrorMessages","hasSuccess","internalSuccessMessages","externalError","validationTarget","shouldValidate","genInternalMessages","internalMessages","form","validate","resetValidation","rule","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","getOffset","totalOffset","getContainer","_isVue","HTMLElement","_target","_settings","scrollingElement","isDrawer","isClipped","targetLocation","startLocation","easingPatterns","timeElapsed","reachBottom","Goto","hexColor","createMessage","$parent","$_alreadyWarned","generateComponentTrace","newMessage","classifyRE","classify","formatComponentName","includeFile","cid","_componentTag","__file","tree","currentRecursiveSequence","getRootNode","composed","passiveSupported","testListenerOpts","getPropertyValue","tagsToReplace","filtered","unit","tab","esc","home","backspace","insert","pageup","pagedown","iconPath","override","camelizeRE","camelize","throttling","parentElement","styleList","styleProp","parseStyle","styleMap","mergeTarget","mergeClasses","mergeStyles","mergeListeners","validate$j","emailStr","params$c","isEmptyArray","validate$a","params$8","cast","validate$3","allowFalse","computesRequired$1","params$3","computesRequired","isRefEqual","lhs","rhs","isSpecified","isLocator","__locatorRef","_copyArray","createFlags","untouched","pristine","invalid","validated","cancelled","later","RULES","normalizeSchema","param","RuleContainer","lazy","isRequireRule","getRuleDefinition","ruleName","guardExtend","DEFAULT_CONFIG","defaultMessage","skipOptional","bails","useConstraintAttrs","currentConfig","normalizeRules","_$$isNormalized","curr","buildParams","parsedRule","parseRule","provided","ruleSchema","definedParams","lastDefinedParam_1","isTarget","createLocator","castFn","locator","crossTable","extractLocators","shouldBail","skipIfEmpty","failedRules","regenerateMap","forceRequired","customMessages","_validate","isInitial","shouldSkip","_shouldSkip","_test","requireRules","isEmptyAndOptional","values_1","castValue","fillTargetValues","_field_","_value_","_rule_","_generateFieldError","ruleTargets","_getRuleTargets","_getUserTargets","userTargets","userMessage","_normalizeMessage","numTargets","ruleConfig","targetPart","aggressive","modes","EVENT_BUS","Dictionary","dictionary","fieldContainer","messageContainer","hasRule","fastDeepEqual","equal","isEvent","srcElement","normalizeEventValue","files","_vModifiers","valueAsNumber","trimmedValue","isTextInput","findModel","nonStandardVNodeData","findValue","findModelConfig","propsDataWithValue","extractChildren","findInputNodes","candidates","mergeVNodeListeners","invoker","addNativeNodeListener","addComponentNodeListener","addVNodeListener","getInputEventName","event_1","isHTMLNode","resolveTextualRules","minlength","min_value","max_value","resolveRules","htmlTags","normalizeChildren","slotProps","_ignoreImmediate","normalizedEvents","_needsValidation","createValidationCtx","ariaInput","ariaMsg","onRenderUpdate","validateNow","triggerThreadSafeValidation","validateSilent","computeModeSetting","compute","_pendingValidation","applyResult","createCommonHandlers","$veeOnInput","syncValue","setFlags","$veeOnBlur","onValidate","$veeHandler","$veeDebounce","_pendingReset","addListeners","_inputEventName","PROVIDER_COUNTER","data$1","fieldName","defaultValues","ValidationProvider","$_veeObserver","createObserver","vid","slim","detectInput","fieldDeps","normalizedRules","dep","depName","watchCrossFieldDep","_resolvedRules","computeClassObj","onLocaleChanged","_regenerateMap","failedRules_1","$off","registerField","inputs","resolved","createLookup","setErrors","updateRenderingContextRefs","checkComputesRequiredState","refs","reduced","extractId","providedId","withHooks","_veeWatchers","isComputesRequired","FLAGS_STRATEGIES","OBSERVER_COUNTER","createObserverFlags","provideSelf","onChange","computeObserverState","prepareSlotProps","subscriber","validateWithInfo","handleSubmit","errorArr","passes","vms","numberFormatKeys","OBJECT_STRING","parseArgs","looseClone","arguments$1","looseEqual","isObjectA","isObjectB","isArrayA","isArrayB","keysA","keysB","escapeHtml","rawText","escapeParams","_i18n","$t","i18n","$i18n","_getMessages","$tc","choice","_tc","$te","_te","$n","defineMixin","bridge","__INTLIFY_META__","__i18nBridge","__i18n","VueI18n","localeMessages","resource","mergeLocaleMessage","_i18nWatcher","watchI18nData","rootI18n","formatter","fallbackLocale","formatFallbackMessages","silentTranslationWarn","silentFallbackWarn","pluralizationRules","preserveDirectiveContent","localeMessages$1","_i18n$1","sharedMessages","sync","_localeWatcher","watchLocale","onComponentInstanceCreated","subscribeDataChanging","_subscribing","unsubscribeDataChanging","destroyVM","interpolationComponent","places","onlyHasDefaultPlace","useLegacyPlaces","createParamsFromPlaces","everyPlace","vnodeHasPlaceAttribute","assignChildPlace","assignChildIndex","place","numberComponent","_ntp","assert","oldVNode","localeEqual","_localeMessage","getLocaleMessage","preserve","_vt","_locale","ref$1","ref$2","parseValue","tc","makeParams","_Vue","strats","optionMergeStrategies","parentVal","childVal","BaseFormatter","_caches","compile","RE_TOKEN_LIST_VALUE","RE_TOKEN_NAMED_VALUE","compiled","APPEND","PUSH","INC_SUB_PATH_DEPTH","PUSH_SUB_PATH","BEFORE_PATH","IN_PATH","BEFORE_IDENT","IN_IDENT","IN_SUB_PATH","IN_SINGLE_QUOTE","IN_DOUBLE_QUOTE","AFTER_PATH","pathStateMachine","literalValueRE","isLiteral","stripQuotes","getPathCharType","formatSubPath","trimmed","parse$1","newChar","subPathDepth","maybeUnescapeQuote","nextChar","I18nPath","_cache","parsePath","hit","getPathValue","availabilities","htmlTagMatcher","linkKeyMatcher","linkKeyPrefixMatcher","bracketsMatcher","defaultModifiers","toLocaleUpperCase","defaultFormatter","this$1","dateTimeFormats","datetimeFormats","numberFormats","_vm","_formatter","_modifiers","_missing","missing","_root","_sync","_fallbackRoot","fallbackRoot","_fallbackRootWithEmptyString","fallbackRootWithEmptyString","_formatFallbackMessages","_silentTranslationWarn","_silentFallbackWarn","_dateTimeFormatters","_numberFormatters","_dataListeners","_componentInstanceCreatedListener","componentInstanceCreatedListener","_preserveDirectiveContent","_warnHtmlInMessage","warnHtmlInMessage","_postTranslation","postTranslation","_escapeParameterHtml","escapeParameterHtml","__VUE_I18N_BRIDGE__","getChoiceIndex","choicesLength","thisPrototype","prototypeGetChoiceIndex","_choice","_choicesLength","_exist","_checkLocaleMessage","_initVM","prototypeAccessors","availableLocales","__VUE18N__INSTANCE__","$forceUpdate","composer","target$1","newI18n","_getDateTimeFormats","_getNumberFormats","_localeChainCache","orgLevel","_warnDefault","interpolateMode","missingRet","parsedArgs","_isFallbackRoot","_isSilentFallbackWarn","_isSilentFallback","_isSilentTranslationWarn","_interpolate","visitedLinkStack","pathRet","linkKeyPrefixMatches","linkPrefix","formatterName","linkPlaceholder","translated","_translate","_createMessageContext","_list","_named","linked","linkedKey","_appendItemToChain","blocks","follow","_appendLocaleToChain","_appendBlockToChain","_getLocaleChain","predefined","fetchChoice","choices","te","setLocaleMessage","getDateTimeFormat","setDateTimeFormat","_clearDateTimeFormat","mergeDateTimeFormat","_localizeDateTime","getNumberFormat","setNumberFormat","_clearNumberFormat","mergeNumberFormat","_getNumberFormatter","NumberFormat","_n","numberFormat","nf","intlDefined","dateTimeFormat","_defineProperty","enumerableOnly","_objectSpread2","_createForOfIteratorHelper","allowArrayLike","normalCompletion","didErr","return","isPureObject","hasGlobalWindowFn","hasGlobalWindow","showWarningNotSupported","defaultInfo","titleChunk","titleTemplate","htmlAttrs","bodyAttrs","headAttrs","script","noscript","__dangerouslyDisableSanitizers","__dangerouslyDisableSanitizersByTagID","rootConfigKey","ssrAttribute","tagIDKeyName","metaTemplateKeyName","contentKeyName","ssrAppId","debounceWait","waitOnDestroyed","defaultOptions","defaultInfoKeys","disableOptionKeys","metaInfoOptionKeys","metaInfoAttributeKeys","tagsSupportingOnload","tagsWithoutEndTag","tagsWithInnerContent","tagAttributeAsInnerContent","tagProperties","commonDataAttributes","booleanHtmlAttributes","batchId","triggerUpdate","rootVm","hookName","initializing","pausing","batchUpdate","getElementsKey","pbody","queryElements","_ref2","queries","attributeValue","removeElementsByAppId","_ref3","attributeName","hasMetaInfo","inMetaInfoBranch","addNavGuards","router","$router","navGuards","beforeEach","afterEach","_resume","afterNavigation","createMixin","updateOnLifecycleHook","wasServerRendered","_this2","rootKey","devtoolsEnabled","devtools","deprecationWarningShown","htmlTag","fnOptions","$metaInfo","$isServer","initializedSsr","_$root$$meta$refresh","refreshOnceOnNavigation","_hasMetaInfo","lifecycleHook","setOptions","optionsCopy","ensureIsArray","serverSequences","clientSequences","escapeOptions","escapeKeys","_escapeOptions$doEsca","doEscape","escaped","disableKey","tagId","escapedKey","escapeMetaInfo","escapeSequences","seq","applyTemplate","headObject","_arrayMerge","targetItem","sourceItem","targetTemplate","sourceTemplate","warningShown","attrKey","getComponentMetaInfo","getComponentOption","_inactive","_options","childComponent","isDOMComplete","addCallback","addCallbacks","autoAddListeners","hasAsyncCallback","applyCallbacks","matchElement","selector","__vm_cb","__vm_l","__vm_ev","appsMetaInfo","attributeMap","updateAttribute","vueMetaAttrString","toUpdate","attrData","_toUpdate","_attr2","_attrData","attrValues","updateTitle","updateTag","dataAttributes","queryOptions","currentElements","isBooleanAttribute","styleSheet","indexToDelete","oldElements","hasEqualElement","existingTag","isEqualNode","_type","oldTags","newTags","updateClientMetaInfo","newInfo","addLoadListeners","tagsAdded","tagsRemoved","_updateTag","setMetaInfo","removeMetaInfo","_step","_iterator","clearAppsMetaInfo","getAppsMetaInfo","getMetaInfo","metaItem","hasVmid","isFirstItemForVmid","metaObject","rawInfo","addedTags","removedTags","additionalAppId","attributeGenerator","addSsrAttribute","attributeStr","titleGenerator","generatorOptions","tagGenerator","_ref2$isSSR","isSSR","_ref2$body","_ref2$pbody","_ref2$ln","tagsStr","tagKeys","isBooleanAttr","hasEndTag","generateServerInjector","globalInjectOptions","serverInjector","addInfo","callInjectors","injectors","bodyPrepend","bodyAppend","_loop","injectOptions","attributeData","_appId2","_data2","extraStr","newOptions","refreshNavKey","debounceWaitKey","waitOnDestroyedKey","generate","__vuemeta_installed","convertBreakpointsToMediaQueries","breakpointValues","mediaQueries","mediaQuery","transformValuesFromBreakpoints","currentBreakpoint","findClosestValue","newBreakpoint","selectBreakpoints","subscribeToMediaQuery","mql","matchMedia","addListener","plusModifier","activeBreakpoints","$mqAvailableBreakpoints","shouldRenderChildren","$mq","DEFAULT_BREAKPOINT","_ref$breakpoints","_ref$defaultBreakpoin","defaultBreakpoint","hasSetupListeners","reactorComponent","encodeReserveRE","encodeReserveReplacer","commaRE","resolveQuery","extraQuery","_parseQuery","parsedQuery","castQueryParamValue","stringifyQuery","trailingSlashRE","createRoute","redirectedFrom","route","getFullPath","formatMatch","START","_stringifyQuery","isSameRoute","onlyPath","isObjectEqual","aVal","bKey","bVal","isIncludedRoute","queryIncludes","handleRouteEntered","instances","cbs","enteredCbs","i$1","_isBeingDestroyed","View","routerView","_routerViewCache","_routerRoot","vnodeData","keepAlive","_directInactive","routerViewDepth","cachedData","cachedComponent","configProps","fillPropsinData","registerRouteInstance","prepatch","propsToPass","resolveProps","resolvePath","relative","firstChar","hashIndex","queryIndex","cleanPath","isarray","pathToRegexp_1","pathToRegexp","parse_1","compile_1","tokensToFunction_1","tokensToFunction","tokensToRegExp_1","tokensToRegExp","PATH_REGEXP","defaultDelimiter","asterisk","escapeGroup","escapeString","encodeURIComponentPretty","encodeAsterisk","pretty","attachKeys","sensitive","regexpToRegexp","arrayToRegexp","stringToRegexp","strict","endsWithDelimiter","regexpCompileCache","fillParams","routeMsg","filler","pathMatch","normalizeLocation","_normalized","params$1","rawPath","parsedPath","basePath","toTypes","eventTypes","Link","custom","ariaCurrentValue","globalActiveClass","linkActiveClass","globalExactActiveClass","linkExactActiveClass","activeClassFallback","exactActiveClassFallback","compareTarget","guardEvent","$hasNormal","isExactActive","findAnchor","isStatic","aData","handler$1","event$1","aAttrs","metaKey","altKey","ctrlKey","defaultPrevented","isDef","registerInstance","callVal","_parentVnode","_router","util","defineReactive","_route","beforeRouteEnter","beforeRouteLeave","beforeRouteUpdate","createRouteMap","routes","oldPathList","oldPathMap","oldNameMap","parentRoute","pathList","pathMap","nameMap","addRouteRecord","matchAs","pathToRegexpOptions","normalizedPath","normalizePath","caseSensitive","compileRouteRegex","alias","childMatchAs","aliasRoute","createMatcher","addRoutes","addRoute","parentOrRoute","getRoutes","currentRoute","_createRoute","paramNames","record$1","originalRedirect","resolveRecordPath","resolvedPath","aliasedPath","aliasedMatch","aliasedRecord","Time","genStateKey","getStateKey","setStateKey","positionStore","setupScroll","scrollRestoration","protocolAndPath","absolutePath","stateCopy","handlePopState","handleScroll","isPop","behavior","scrollBehavior","getScrollPosition","scrollToPosition","saveScrollPosition","getElementPosition","docEl","docRect","elRect","isValidPosition","normalizePosition","normalizeOffset","hashStartsWithNumberRE","scrollTo","supportsPushState","runQueue","NavigationFailureType","redirected","duplicated","createNavigationRedirectedError","createRouterError","stringifyRoute","createNavigationDuplicatedError","createNavigationCancelledError","createNavigationAbortedError","_isRouter","propertiesToLog","isNavigationFailure","resolveAsyncComponents","hasAsync","flatMapComponents","resolvedDef","isESModule","hasSymbol","__esModule","History","normalizeBase","readyCbs","readyErrorCbs","errorCbs","baseEl","resolveQueue","extractGuards","records","guards","extractGuard","extractLeaveGuards","bindGuard","extractUpdateHooks","extractEnterGuards","bindEnterGuard","listen","onReady","errorCb","transitionTo","confirmTransition","updateRoute","ensureURL","afterHooks","lastRouteIndex","lastCurrentIndex","beforeHooks","enterGuards","resolveHooks","setupListeners","cleanupListener","HTML5History","_startLocation","expectScroll","supportsScroll","handleRoutingEvent","fromRoute","getCurrentLocation","pathLowerCase","baseLowerCase","HashHistory","checkFallback","ensureSlash","pushHash","getUrl","AbstractHistory","VueRouter","apps","registerHook","createHref","handleInitialScroll","routeOrError","beforeResolve","back","forward","getMatchedComponents","normalizedTo","START_LOCATION","POSITION","EVENTS","VT_NAMESPACE","classNames","trueBoolean","ICON","customIcon","CLOSE_BUTTON","showOnHover","PROGRESS_BAR","hideProgressBar","TRANSITION","transitionDuration","CORE_TOAST","TOP_RIGHT","draggablePercent","pauseOnFocusLoss","pauseOnHover","toastClassName","bodyClassName","closeButton","closeButtonClassName","showCloseButtonOnHover","accessibility","toastRole","closeButtonLabel","eventBus","TOAST","onClose","CONTAINER","newestOnTop","maxToasts","toastDefaults","filterBeforeCreate","toast","filterToasts","toasts","containerClassName","onMounted","PROPS","isNonEmptyString","isJSX","hasProp","TouchEvent","isToastComponent","isToastContent","isVueComponent","extends","_Ctor","hasRenderFunction","isVueInstanceOrComponent","isDOMRect","propKey","getId","getX","targetTouches","getY","getVueComponentFromObj","animationDuration","animationPlayState","cpClass","animationEnded","isFunctionalTemplate","createInjector","createInjectorSSR","createInjectorShadow","__vue_script__","__vue_render__","__vue_staticRenderFns__","_withStripped","__vue_inject_styles__","__vue_scope_id__","__vue_module_identifier__","__vue_is_functional_template__","__vue_component__","script$1","buttonComponent","__vue_script__$1","__vue_render__$1","__vue_staticRenderFns__$1","__vue_inject_styles__$1","__vue_scope_id__$1","__vue_module_identifier__$1","__vue_is_functional_template__$1","__vue_component__$1","script$2","__vue_script__$2","__vue_render__$2","__vue_staticRenderFns__$2","__vue_inject_styles__$2","__vue_scope_id__$2","__vue_module_identifier__$2","__vue_is_functional_template__$2","__vue_component__$2","script$3","__vue_script__$3","__vue_render__$3","__vue_staticRenderFns__$3","__vue_inject_styles__$3","__vue_scope_id__$3","__vue_module_identifier__$3","__vue_is_functional_template__$3","__vue_component__$3","script$4","__vue_script__$4","__vue_render__$4","__vue_staticRenderFns__$4","__vue_inject_styles__$4","__vue_scope_id__$4","__vue_module_identifier__$4","__vue_is_functional_template__$4","__vue_component__$4","script$5","__vue_script__$5","__vue_render__$5","__vue_staticRenderFns__$5","__vue_inject_styles__$5","__vue_scope_id__$5","__vue_module_identifier__$5","__vue_is_functional_template__$5","__vue_component__$5","script$6","customIconChildren","trimValue","iconChildren","customIconClass","iconClass","customIconTag","iconTag","hasCustomIcon","iconTypeComponent","INFO","SUCCESS","WARNING","iconClasses","__vue_script__$6","__vue_render__$6","__vue_staticRenderFns__$6","__vue_inject_styles__$6","__vue_scope_id__$6","__vue_module_identifier__$6","__vue_is_functional_template__$6","__vue_component__$6","script$7","ProgressBar","CloseButton","Icon","disableTransitions","beingDragged","dragStart","dragPos","dragRect","bodyClasses","draggableStyle","dragDelta","removalDistance","draggableSetup","focusSetup","draggableCleanup","focusCleanup","closeToast","DISMISS","timeoutHandler","hoverPause","hoverPlay","focusPause","focusPlay","onDragStart","onDragMove","onDragEnd","__vue_script__$7","__vue_render__$7","$event","__vue_staticRenderFns__$7","__vue_inject_styles__$7","__vue_scope_id__$7","__vue_module_identifier__$7","__vue_is_functional_template__$7","__vue_component__$7","script$8","enterDuration","animationFillMode","cleanUpStyles","leaveDuration","setAbsolutePosition","__vue_script__$8","__vue_render__$8","move","__vue_staticRenderFns__$8","__vue_inject_styles__$8","__vue_scope_id__$8","__vue_module_identifier__$8","__vue_is_functional_template__$8","__vue_component__$8","script$9","Toast","VtTransition","positions","toastArray","filteredToasts","ADD","addToast","CLEAR","clearToasts","dismissToast","UPDATE","updateToast","UPDATE_DEFAULTS","updateDefaults","$props","setToast","getPositionToasts","getClasses","__vue_script__$9","__vue_render__$9","_l","__vue_staticRenderFns__$9","__vue_inject_styles__$9","__vue_scope_id__$9","__vue_module_identifier__$9","__vue_is_functional_template__$9","__vue_component__$9","ToastInterface","globalOptions","mountContainer","containerComponent","dismiss","createToastInterface","optionsOrEventBus","Vue$1","isVueInstance","VueToastificationPlugin","$toast","emptyObject","isUndef","isTrue","isFalse","isPrimitive","_toString","isValidArrayIndex","isPromise","makeMap","expectsLowerCase","isReservedAttribute","cached","hyphenateRE","hyphenate","polyfillBind","boundFn","nativeBind","_from","no","looseIndexOf","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","productionTip","errorHandler","warnHandler","ignoredElements","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","unicodeRegExp","isReserved","bailRE","_isServer","hasProto","inWeex","WXEnvironment","platform","weexPlatform","isIE9","isIOS","isFF","nativeWatch","supportsPassive","isServerRendering","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","_Set","Dep","subs","addSub","removeSub","depend","addDep","targetStack","pushTarget","popTarget","asyncFactory","fnContext","fnScopeId","isRootInsert","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","createEmptyVNode","createTextVNode","cloneVNode","arrayMethods","methodsToPatch","__ob__","observeArray","arrayKeys","shouldObserve","toggleObserving","Observer","vmCount","protoAugment","copyAugment","walk","asRootData","defineReactive$$1","customSetter","shallow","childOb","dependArray","toVal","fromVal","mergeDataOrFn","instanceData","mergeHook","dedupeHooks","mergeAssets","key$1","defaultStrat","normalizeProps","normalizeInject","normalizeDirectives","dirs","def$$1","mergeOptions","mergeField","strat","resolveAsset","warnMissing","camelizedId","PascalCaseId","validateProp","propOptions","absent","booleanIndex","getTypeIndex","stringIndex","getPropDefaultValue","prevShouldObserve","_props","functionTypeCheckRE","isSameType","expectedTypes","handleError","errorCaptured","globalHandleError","invokeWithErrorHandling","_handled","logError","timerFunc","isUsingMicroTask","flushCallbacks","textNode","seenObjects","traverse","_traverse","isA","depId","normalizeEvent","once$$1","createFnInvoker","updateListeners","oldOn","remove$$1","createOnceHandler","old","mergeVNodeHook","hookKey","oldHook","wrappedHook","extractPropsFromVNodeData","checkProp","simpleNormalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","_isVList","initProvide","_provided","initInjections","resolveInject","provideKey","provideDefault","resolveSlots","name$1","isWhitespace","normalizeScopedSlots","normalSlots","prevSlots","hasNormalSlots","isStable","$stable","$key","normalizeScopedSlot","key$2","proxyNormalSlot","renderList","renderSlot","fallbackRender","bindObject","scopedSlotFn","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","camelizedKey","hyphenatedKey","renderStatic","isInFor","_staticTrees","_renderProxy","markStatic","markOnce","markStaticNode","bindObjectListeners","ours","resolveScopedSlots","hasDynamicKeys","contentHashKey","bindDynamicKeys","baseObj","prependModifier","installRenderHelpers","_q","_m","_k","_u","FunctionalRenderContext","contextVm","_original","isCompiled","needNormalization","createFunctionalComponent","mergeProps","renderContext","cloneAndMarkFunctionalResult","vnodes","componentVNodeHooks","hydrating","mountedNode","createComponentInstanceForVnode","activeInstance","oldVnode","updateChildComponent","_isMounted","callHook","queueActivatedComponent","activateChildComponent","deactivateChildComponent","hooksToMerge","createComponent","baseCtor","resolveAsyncComponent","createAsyncPlaceholder","resolveConstructorOptions","transformModel","abstract","installComponentHooks","_isComponent","inlineTemplate","toMerge","_merged","mergeHook$1","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","_createElement","applyNS","registerDeepBindings","initRender","_vnode","parentVnode","_renderChildren","parentData","_parentListeners","currentRenderingInstance","renderMixin","ensureCtor","errorComp","owners","loadingComp","timerLoading","timerTimeout","renderCompleted","getFirstComponentChild","initEvents","_hasHookEvent","updateComponentListeners","remove$1","onceHandler","oldListeners","eventsMixin","hookRE","setActiveInstance","prevActiveInstance","initLifecycle","_watcher","lifecycleMixin","_update","prevEl","prevVnode","restoreActiveInstance","__patch__","__vue__","_watchers","mountComponent","updateComponent","Watcher","renderChildren","newScopedSlots","oldScopedSlots","hasDynamicScopedSlot","needsForceUpdate","propKeys","_propKeys","isInInactiveTree","direct","activatedChildren","flushing","resetSchedulerState","currentFlushTimestamp","getNow","timeStamp","flushSchedulerQueue","watcher","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","queueWatcher","uid$2","expOrFn","isRenderWatcher","newDeps","depIds","newDepIds","cleanupDeps","sharedPropertyDefinition","sourceKey","initState","initProps","initMethods","initData","initComputed","initWatch","propsOptions","isRoot","computedWatcherOptions","watchers","_computedWatchers","userDef","defineComputed","shouldCache","createComputedGetter","createGetterInvoker","createWatcher","stateMixin","dataDef","propsDef","uid$3","initMixin","_init","initInternalComponent","vnodeComponentOptions","superOptions","cachedSuperOptions","modifiedOptions","resolveModifiedOptions","extendOptions","modified","latest","sealed","sealedOptions","initUse","installedPlugins","_installedPlugins","initMixin$1","initExtend","Super","SuperId","cachedCtors","Sub","initProps$1","initComputed$1","Comp","initAssetRegisters","definition","getComponentName","pruneCache","keepAliveInstance","pruneCacheEntry","patternTypes","KeepAlive","cacheVNode","vnodeToCache","keyToCache","builtInComponents","initGlobalAPI","configDef","acceptValue","isEnumeratedAttr","isValidContentEditableValue","convertEnumeratedValue","isFalsyAttrValue","xlinkNS","isXlink","getXlinkProp","genClassForVnode","childNode","mergeClassData","renderClass","dynamicClass","stringifyClass","stringifyArray","stringifyObject","stringified","namespaceMap","isHTMLTag","isSVG","unknownElementCache","HTMLUnknownElement","isTextInputType","createElement$1","createComment","newNode","referenceNode","setTextContent","setStyleScope","nodeOps","registerRef","isRemoval","refInFor","emptyNode","sameVnode","sameInputType","typeA","typeB","createKeyToOldIdx","beginIdx","endIdx","createPatchFunction","backend","modules","emptyNodeAt","createRmCb","childElm","removeNode","createElm","insertedVnodeQueue","parentElm","refElm","ownerArray","setScope","createChildren","invokeCreateHooks","isReactivated","initComponent","reactivateComponent","pendingInsert","isPatchable","innerNode","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","removeAndInvokeRemoveHook","updateChildren","oldCh","newCh","removeOnly","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","patchVnode","findIdxInOld","hydrate","postpatch","invokeInsertHook","isRenderedModule","inVPre","childrenMatch","fullInvoke","isInitialPatch","isRealElement","oldElm","_leaveCb","patchable","i$2","updateDirectives","oldDir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","oldArg","callHook$1","componentUpdated","callInsert","emptyModifiers","getRawDirName","rawName","baseModules","updateAttrs","oldAttrs","setAttr","removeAttributeNS","isInPre","baseSetAttr","__ieph","blocker","stopImmediatePropagation","updateClass","oldData","transitionClass","_transitionClasses","_prevClass","klass","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","normalizeEvents","createOnceHandler$1","remove$2","useMicrotaskFix","add$1","attachedTimestamp","_wrapper","updateDOMListeners","svgContainer","updateDOMProps","oldProps","strCur","shouldUpdateValue","checkVal","composing","isNotInFocusAndDirty","isDirtyWithModifiers","notInFocus","parseStyleText","listDelimiter","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","getStyle","checkChild","emptyStyle","cssVarRE","importantRE","vendorNames","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","whitespaceRE","tar","resolveTransition","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","getTransitionInfo","propCount","ended","onEnd","transformRE","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","toMs","toggleDisplay","_enterCb","appearClass","appearToClass","appearActiveClass","beforeAppear","afterAppear","appearCancelled","transitionNode","isAppear","startClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","pendingNode","_pending","isValidDuration","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","platformModules","patch","vmodel","_vOptions","setSelected","onCompositionStart","onCompositionEnd","prevOptions","curOptions","needReset","hasNoMatchingOption","actuallySetSelected","isMultiple","option","locateNode","transition$$1","originalDisplay","__vOriginalDisplay","platformDirectives","transitionProps","getRealChild","compOptions","extractTransitionData","rawChild","hasParentTransition","isSameChild","oldChild","isNotTextNode","isVShowDirective","Transition","_leaving","oldRawChild","delayedLeave","moveClass","TransitionGroup","kept","prevChildren","rawChildren","transitionData","c$1","hasMove","callPendingCbs","recordPosition","applyTranslation","_reflow","moved","WebkitTransform","_moveCb","_hasMove","newPos","oldPos","dx","dy","platformComponents","applyMixin","vuexInit","$store","devtoolHook","devtoolPlugin","_devtoolHook","targetState","mutation","subscribeAction","deepCopy","forEachValue","Module","rawModule","_children","_rawModule","rawState","namespaced","addChild","getChild","hasChild","mutations","getters","forEachChild","forEachGetter","forEachAction","forEachMutation","ModuleCollection","rawRootModule","targetModule","newModule","getNamespace","rawChildModule","isRegistered","Store","_committing","_actions","_actionSubscribers","_mutations","_wrappedGetters","_modules","_modulesNamespaceMap","_subscribers","_watcherVM","_makeLocalGettersCache","dispatch","installModule","resetStoreVM","useDevtools","prototypeAccessors$1","genericSubscribe","resetStore","hot","oldVm","wrappedGetters","$$state","enableStrictMode","_withCommit","rootState","parentState","getNestedState","moduleName","makeLocalContext","namespacedType","registerMutation","registerAction","registerGetter","noNamespace","_payload","unifyObjectStyle","makeLocalGetters","gettersProxy","splitPos","localType","rootGetters","rawGetter","registerModule","preserveState","unregisterModule","hasModule","hotUpdate","committing","mapState","normalizeNamespace","states","normalizeMap","getModuleByNamespace","vuex","mapMutations","mapGetters","mapActions","createNamespacedHelpers","isValidMap","createLogger","collapsed","stateBefore","stateAfter","transformer","mutationTransformer","mut","actionFilter","actionTransformer","act","logMutations","logActions","prevState","nextState","formattedTime","getFormattedTime","formattedMutation","startMessage","endMessage","formattedAction","groupCollapsed","groupEnd","instanceOfAny","constructors","idbProxyableTypes","cursorAdvanceMethods","getIdbProxyableTypes","IDBDatabase","IDBObjectStore","IDBIndex","IDBCursor","IDBTransaction","getCursorAdvanceMethods","advance","continue","continuePrimaryKey","cursorRequestMap","transactionDoneMap","transactionStoreNamesMap","transformCache","reverseTransformCache","promisifyRequest","unlisten","cacheDonePromiseForTransaction","DOMException","idbProxyTraps","replaceTraps","wrapFunction","storeNames","transformCachableValue","IDBRequest","blocked","upgrade","blocking","terminated","openPromise","oldVersion","newVersion","readMethods","writeMethods","cachedMethods","targetFuncName","useIndex","isWrite","oldTraps","PlatformLoggerServiceImpl","getPlatformInfoString","getProviders","isVersionServiceProvider","library","logString","getComponent","name$o","version$1","name$n","name$m","name$l","name$k","name$j","name$i","name$h","name$g","name$f","name$e","name$d","name$c","name$b","name$a","name$9","name$8","name$7","name$6","name$5","name$4","name$3","name$2","DEFAULT_ENTRY_NAME","PLATFORM_LOG_STRING","_apps","_components","_addComponent","addComponent","debug","_registerComponent","componentName","_getProvider","heartbeatController","triggerHeartbeat","ERRORS","ERROR_FACTORY","FirebaseAppImpl","_isDeleted","_automaticDataCollectionEnabled","automaticDataCollectionEnabled","_container","checkDestroyed","isDeleted","SDK_VERSION","initializeApp","rawConfig","existingApp","newApp","getApp","registerVersion","libraryKeyOrName","libraryMismatch","versionMismatch","STORE_NAME","dbPromise","getDbPromise","originalErrorMessage","readHeartbeatsFromIndexedDB","computeKey","writeHeartbeatsToIndexedDB","heartbeatObject","MAX_HEADER_BYTES","STORED_HEARTBEAT_RETENTION_MAX_MILLIS","HeartbeatServiceImpl","_heartbeatsCache","_storage","HeartbeatStorageImpl","_heartbeatsCachePromise","platformLogger","agent","getUTCDateString","lastSentHeartbeatDate","heartbeats","singleDateHeartbeat","hbTimestamp","overwrite","heartbeatsToSend","unsentEntries","extractHeartbeatsForHeader","heartbeatsCache","maxSize","heartbeatEntry","hb","dates","countBytes","_canUseIndexedDBPromise","runIndexedDBEnvironmentCheck","canUseIndexedDB","idbHeartbeatObject","heartbeatsObject","existingHeartbeatsObject","registerCoreComponents","Component","instanceFactory","multipleInstances","serviceProps","instantiationMode","onInstanceCreated","setMultipleInstances","setServiceProps","Provider","instancesDeferred","instancesOptions","onInitCallbacks","normalizedIdentifier","normalizeInstanceIdentifier","deferred","shouldAutoInitialize","getOrInitializeService","instanceIdentifier","setComponent","isComponentEager","instanceDeferred","clearInstance","INTERNAL","_delete","isComponentSet","normalizedDeferredIdentifier","onInit","existingCallbacks","invokeOnInitCallbacks","normalizeIdentifierForFactory","ComponentContainer","addOrOverwriteComponent","levelStringToEnum","DEBUG","VERBOSE","WARN","SILENT","defaultLogLevel","ConsoleMethod","defaultLogHandler","logType","_logLevel","_logHandler","_userLogHandler","setLogLevel","logHandler","userLogHandler","nanoid","byte","asyncGeneratorStep","gen","_throw","_asyncToGenerator","_classCallCheck","_defineProperties","_createClass","protoProps","staticProps","unsupportedIterableToArray","_e2","_createSuper","Derived","hasNativeReflectConstruct","isNativeReflectConstruct","possibleConstructorReturn","_getPrototypeOf","_inherits","subClass","superClass","_objectWithoutPropertiesLoose","excluded","sourceKeys","_objectWithoutProperties","objectWithoutPropertiesLoose","sourceSymbolKeys","_assertThisInitialized","ReferenceError","_possibleConstructorReturn","assertThisInitialized","_regeneratorRuntime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","_invoke","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","_sent","dispatchException","abrupt","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","isGeneratorFunction","genFun","ctor","awrap","skipTempReset","rootRecord","rval","handle","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","_arrayWithHoles","_iterableToArrayLimit","_arr","_nonIterableRest","_slicedToArray","arrayWithHoles","iterableToArrayLimit","nonIterableRest","arrayLikeToArray","arrayWithoutHoles","iterableToArray","nonIterableSpread","_isNativeFunction","_wrapNativeSuper","isNativeFunction"],"sourceRoot":""}