{"version":3,"file":"app.js","mappings":"uBAAIA,ECCAC,EADAC,E,o+BCCG,SAASC,EAAYC,GACxB,OAAOC,MAAMC,QAAQF,IAAMG,YAAYC,OAAOJ,EAClD,CAsBO,SAASK,EAAYL,IAHrB,SAAsBA,GACzB,OAAY,MAALA,GAAkC,mBAAdA,EAAEM,OACjC,EAEQC,CAAaP,IACbA,EAAEM,SAEV,CAIO,SAASE,EAAgBR,EAAGS,GAAG,IAAAC,EAAAC,EAClC,OAA+B,QAAxBD,EAAAE,OAAOC,eAAeb,UAAE,IAAAU,OAAA,EAAxBA,EAA0BI,gBAAwC,QAA7BH,EAAKC,OAAOC,eAAeJ,UAAE,IAAAE,OAAA,EAAxBA,EAA0BG,YAC/E,CACO,IAeMC,EAAU,WAIlB,OAAAC,GAHD,SAAAD,EAAYE,GAAMC,EAAA,KAAAH,GACdI,KAAKF,KAAOA,EACZE,KAAKC,QAvBF,IAwBP,GAAC,EAAAC,IACA,uDAAsDC,MAAvD,WACI,OAAOH,KAAKC,OAChB,GAAC,CAAAC,IACA,6CAA4CC,MAA7C,WACI,OAAOH,KAAKC,OAChB,GAAC,CAAAC,IACA,0CAAyCC,MAA1C,WACI,IAAMC,EAAMJ,KAAKF,KAAKO,OAEtB,OADAL,KAAKC,QAAUG,EAAID,OACXC,EAAIE,IAChB,GAAC,CAAAJ,IACA,uCAAsCC,MAAvC,WACI,MAAM,IAAII,MAAM,+BACpB,GAAC,CAAAL,IAAA,UAAAC,MACD,WAEA,IAAC,CArBkB,GA+BhB,SAASK,EAAcC,GAC1B,OA3EY,OADa5B,EA4ER4B,IA3E8B,mBAApB5B,EAAE6B,cA4ElBD,EAAEC,gBAGF,IAAId,EAAWa,EAAEE,OAAOC,aAhFhC,IAAsB/B,CAkF7B,CACO,SAASgC,EAAWC,GACvB,MAAO,CACHT,KAAI,WACA,IAAMU,EAAUD,EAAG,6CAEnB,MAAO,CAAER,MAAOS,EAASZ,MADTY,EAAUD,EAAG,+DAA4DE,EAE7F,EAER,CA2CO,IAAMC,EAAI,WAIZ,OAAApB,GAHD,SAAAoB,EAAYC,GAASnB,EAAA,KAAAkB,GACjBjB,KAAKkB,QAAUA,EACflB,KAAKmB,gBAAiB,CAC1B,GAAC,EAAAjB,IAAA,QAAAkB,IACD,WAKI,OAJKpB,KAAKmB,iBACNnB,KAAKqB,aAAerB,KAAKkB,UACzBlB,KAAKmB,gBAAiB,GAEnBnB,KAAKqB,YAChB,GAAC,CAAAnB,IAAA,iBAAAkB,IACD,WACI,OAAOpB,KAAKmB,cAChB,IAAC,CAdY,GAmBV,SAASG,EAAaC,EAAGC,GAC5B,OAAOD,EAAEE,SAAS,IAAIC,SAASF,EAAQ,IAC3C,CAIO,SAASG,EAAWC,GACvB,IAAMC,EAAQD,EACd,MAA+B,iBAAjBC,EAAMC,OACdD,EAAMC,OACS,IAAdF,EAAKG,KACF,GAAgC,IAA5BH,EAAKI,mBACvB,CAKO,SAASC,EAAcV,EAAGW,GAE7B,OADAX,EAAIA,EAAI,GAAc,MAATW,GAA2B,KAAVA,EAAe,WAAaX,EAAI,EAAIA,GACzDE,SAASS,EACtB,CAKO,IAAMC,EAAS,oBAAAA,IAAApC,EAAA,KAAAoC,EAAA,QAAAtC,EAAAsC,EAAA,OAAAjC,IAAA,KAAAC,MAClB,SAAUiC,GAIN,OAHKD,EAAUE,MAAMC,IAAIF,IACrBD,EAAUE,MAAME,IAAIH,IAAKD,EAAUK,OAEhCL,EAAUE,MAAMjB,IAAIgB,EAC/B,IAAC,CANiB,GAUf,SAASK,EAAWC,GAIvB,IAHA,IAAInB,EAAI,EACJoB,EAAI,KACFC,EAAMF,EAAElB,OACPD,EAAIqB,GACPD,EAAS,GAAJA,EAAUD,EAAEG,WAAWtB,KAEhC,OAAOoB,CACX,CACO,SAASG,EAAWjE,GACvB,OAAW,WAAJA,EAAiB,CAC5B,CAKO,SAASkE,EAAiBC,GAG7B,IAFA,IAAIC,EAAK,EACHL,EAAMI,EAAOxB,OACVD,EAAI,EAAGA,EAAIqB,EAAKrB,IAErB0B,GAAOA,GAAM,GAAKA,EADPD,EAAOzB,GAGtB,OAAO0B,CACX,CAqCO,SAASC,EAAerE,GAC3B,GAAS,MAALA,EACA,OAAO,EAEX,OAAAsE,EAAetE,IACX,IAAK,UACD,OAAOA,EAAI,EAAI,EACnB,IAAK,SACD,OAAOiE,EAAWjE,GACtB,IAAK,SACD,OA3DL,SAAoBA,GACvB,OAAO4D,EAAW5D,EAAE4C,SAAS,IACjC,CAyDmB2B,CAAWvE,GACtB,IAAK,SACD,OAAO4D,EAAW5D,GACtB,QAAS,IAAAwE,EACL,OA3PL,SAAoBxE,GACvB,OAAY,MAALA,GAAsC,mBAAlBA,EAAEyE,WACjC,CAyPgBC,CAAW1E,GACJA,EAAEyE,cAEJ1E,EAAYC,GAzB1B,SAAmBA,GAGtB,IAFA,IAAM+D,EAAM/D,EAAE2C,OACRwB,EAAS,IAAIlE,MAAM8D,GAChBrB,EAAI,EAAGA,EAAIqB,EAAKrB,IACrByB,EAAOzB,GAAK2B,EAAerE,EAAE0C,IAEjC,OAAOwB,EAAiBC,EAC5B,CAmBuBQ,CAAU3E,GAEZA,aAAa4E,KA/B3B,SAAkB5E,GACrB,OAAOA,EAAE6E,SACb,CA8BuBC,CAAS9E,IAEa,QAAxBwE,EAAA5D,OAAOC,eAAeb,UAAE,IAAAwE,OAAA,EAAxBA,EAA0B1D,eAAgBF,OAGxCsD,EADQtD,OAAOmE,OAAO/E,GAAGgF,KAAI,SAACC,GAAC,OAAKZ,EAAeY,EAAE,KAKrDhB,EAAWX,EAAU4B,GAAGlF,IAK/C,CAUO,SAASmF,EAAgBnF,EAAGS,EAAG2E,GAClC,GAAS,MAALpF,EACA,OAAY,MAALS,EAEX,GAAS,MAALA,EACA,OAAO,EAEX,GAAIT,EAAE2C,SAAWlC,EAAEkC,OACf,OAAO,EAEX,IAAK,IAAID,EAAI,EAAGA,EAAI1C,EAAE2C,OAAQD,IAC1B,IAAK0C,EAAGpF,EAAE0C,GAAIjC,EAAEiC,IACZ,OAAO,EAGf,OAAO,CACX,CACO,SAAS2C,EAAYrF,EAAGS,GAC3B,OAAO0E,EAAgBnF,EAAGS,EAAG6E,EACjC,CAmBO,SAASA,EAAOtF,EAAGS,GACtB,OAAIT,IAAMS,IAGI,MAALT,EACO,MAALS,EAEG,MAALA,IA1UN,SAAqBT,GACxB,OAAY,MAALA,GAAiC,mBAAbA,EAAEuF,MACjC,CA2UaC,CAAYxF,GACVA,EAAEuF,OAAO9E,GAEXV,EAAYC,GACVD,EAAYU,IAAM4E,EAAYrF,EAAGS,GAEtB,WAAb6D,EAAOtE,KAGPA,aAAa4E,KACVnE,aAAamE,MAAgC,IAAvBa,EAAazF,EAAGS,IAGf,QAAxBiF,EAAA9E,OAAOC,eAAeb,UAAE,IAAA0F,OAAA,EAAxBA,EAA0B5E,eAAgBF,QAzCzD,SAAsBZ,EAAGS,GACrB,IAAMkF,EAAQ/E,OAAOgF,KAAK5F,GACpB6F,EAAQjF,OAAOgF,KAAKnF,GAC1B,GAAIkF,EAAMhD,SAAWkD,EAAMlD,OACvB,OAAO,EAEXgD,EAAMG,OACND,EAAMC,OACN,IAAK,IAAIpD,EAAI,EAAGA,EAAIiD,EAAMhD,OAAQD,IAC9B,GAAIiD,EAAMjD,KAAOmD,EAAMnD,KAAO4C,EAAOtF,EAAE2F,EAAMjD,IAAKjC,EAAEoF,EAAMnD,KACtD,OAAO,EAGf,OAAO,CACX,CA2BmEqD,CAAa/F,EAAGS,MAD1E,IAAAiF,CAGT,CACO,SAASD,EAAazF,EAAGS,GAC5B,IAAIuF,EACAC,EAUJ,MARI,WAAYjG,GAAK,WAAYS,GAC7BuF,EAAQhG,EAAE6E,UACVoB,EAAQxF,EAAEoE,YAGVmB,EAAQhG,EAAE6E,UAAY/B,EAAW9C,GACjCiG,EAAQxF,EAAEoE,UAAY/B,EAAWrC,IAE9BuF,IAAUC,EAAQ,EAAKD,EAAQC,GAAS,EAAI,CACvD,CACO,SAASC,EAAkBlG,EAAGS,GACjC,OAAOT,IAAMS,EAAI,EAAKT,EAAIS,GAAK,EAAI,CACvC,CAmBO,SAAS0F,EAAcnG,EAAGS,GAC7B,OAnBG,SAA2BT,EAAGS,EAAG2F,GACpC,GAAS,MAALpG,EACA,OAAY,MAALS,EAAY,EAAI,EAE3B,GAAS,MAALA,EACA,OAAQ,EAEZ,GAAIT,EAAE2C,SAAWlC,EAAEkC,OACf,OAAO3C,EAAE2C,OAASlC,EAAEkC,QAAU,EAAI,EAEtC,IAAK,IAAID,EAAI,EAAG2D,EAAI,EAAG3D,EAAI1C,EAAE2C,OAAQD,IAEjC,GAAU,KADV2D,EAAID,EAAKpG,EAAE0C,GAAIjC,EAAEiC,KAEb,OAAO2D,EAGf,OAAO,CACX,CAEWC,CAAkBtG,EAAGS,EAAG8F,EACnC,CAuBO,SAASA,EAAQvG,EAAGS,GACvB,OAAIT,IAAMS,EACC,EAEG,MAALT,EACO,MAALS,EAAY,GAAK,EAEd,MAALA,EACE,EApaR,SAAsBT,GACzB,OAAY,MAALA,GAAoC,mBAAhBA,EAAEwG,SACjC,CAoaaC,CAAazG,GACXA,EAAEwG,UAAU/F,GAEdV,EAAYC,GACVD,EAAYU,GAAK0F,EAAcnG,EAAGS,IAAM,EAE7B,WAAb6D,EAAOtE,GACLA,EAAIS,GAAK,EAAI,EAEfT,aAAa4E,KACXnE,aAAamE,KAAOa,EAAazF,EAAGS,IAAM,GAGlB,QAAxBiG,EAAA9F,OAAOC,eAAeb,UAAE,IAAA0G,OAAA,EAAxBA,EAA0B5F,eAAgBF,OA7CzD,SAAwBZ,EAAGS,GACvB,IAAMkF,EAAQ/E,OAAOgF,KAAK5F,GACpB6F,EAAQjF,OAAOgF,KAAKnF,GAC1B,GAAIkF,EAAMhD,SAAWkD,EAAMlD,OACvB,OAAOgD,EAAMhD,OAASkD,EAAMlD,QAAU,EAAI,EAE9CgD,EAAMG,OACND,EAAMC,OACN,IAAK,IAAIpD,EAAI,EAAG2D,EAAI,EAAG3D,EAAIiD,EAAMhD,OAAQD,IAAK,CAC1C,IAAMrB,EAAMsE,EAAMjD,GAClB,GAAIrB,IAAQwE,EAAMnD,GACd,OAAOrB,EAAMwE,EAAMnD,IAAM,EAAI,EAI7B,GAAU,KADV2D,EAAIE,EAAQvG,EAAEqB,GAAMZ,EAAEY,KAElB,OAAOgF,CAGnB,CACA,OAAO,CACX,CAwBkEM,CAAe3G,EAAGS,IAAM,EADjF,IAAAiG,CAGT,CAqBO,SAASE,EAAUC,GACtB,IACuBC,EADjBC,EAAM,CAAC,EAAEC,E,64BAAAC,CACEJ,GAAM,IAAvB,IAAAG,EAAAnD,MAAAiD,EAAAE,EAAAE,KAAAzF,MAAyB,KAAd0F,EAAEL,EAAAxF,MACTyF,EAAII,EAAG,IAAMA,EAAG,EACpB,CAAC,OAAAC,GAAAJ,EAAApF,EAAAwF,EAAA,SAAAJ,EAAAK,GAAA,CACD,OAAON,CACX,CA5RAzD,EAAUE,MAAQ,IAAI8D,QACtBhE,EAAUK,MAAQ,EAiVlB,IAAM4D,EAAU,IAAID,QACb,SAASE,EAASH,GACrB,GAAS,MAALA,EACA,OAAO,KAEX,IAAMI,EAAK,SAACC,EAAIC,GAAE,OAAKN,EAAEK,EAAFL,CAAMM,EAAG,EAEhC,OADAJ,EAAQ7D,IAAI+D,EAAIJ,GACTI,CACX,CACO,SAASG,EAAOP,GAAG,IAAAQ,EACtB,OAAqB,QAArBA,EAAON,EAAQhF,IAAI8E,UAAE,IAAAQ,EAAAA,EAAK,SAACH,GAAE,OAAK,SAACC,GAAE,OAAKN,EAAEK,EAAIC,EAAG,EACvD,C,+2DC3gBO,SAAS/E,EAAS5C,GAAkB,IAAf8H,EAASC,UAAApF,OAAA,QAAAR,IAAA4F,UAAA,GAAAA,UAAA,GAAG,EACpC,GAAS,MAAL/H,GAA0B,WAAbsE,EAAOtE,GAAgB,CACpC,GAA0B,mBAAfA,EAAE4C,SACT,OAAO5C,EAAE4C,WAER,GAAId,OAAOC,YAAY/B,EACxB,OAxBL,SAAqBgI,GACxB,IAEoBlB,EAFhBnD,EAAQ,EACRsE,EAAM,IAAIjB,E,6lBAAAC,CACEe,GAAI,IAApB,IAAAhB,EAAAnD,MAAAiD,EAAAE,EAAAE,KAAAzF,MAAsB,KAAXzB,EAAC8G,EAAAxF,MACR,GAAc,IAAVqC,EACAsE,GAAOrF,EAAS5C,OAEf,IAAc,MAAV2D,EAAe,CACpBsE,GAAO,QACP,KACJ,CAEIA,GAAO,KAAOrF,EAAS5C,EAC3B,CACA2D,GACJ,CAAC,OAAAyD,GAAAJ,EAAApF,EAAAwF,EAAA,SAAAJ,EAAAK,GAAA,CACD,OAAOY,EAAM,GACjB,CAOmBC,CAAYlI,GAElB,IAAAU,EAAAyH,EACKC,EAA+B,QAA3B1H,EAAGE,OAAOC,eAAeb,UAAE,IAAAU,OAAA,EAAxBA,EAA0BI,YACvC,OAAOsH,IAASxH,QAAUkH,EAAY,GAEhC,KAAOlH,OAAOyH,QAAQrI,GAAGgF,KAAI,SAAAsD,GAAA,IAAAC,EAAAC,EAAAF,EAAA,GAAM,OAAHC,EAAA,GAAa,MAAQ3F,EAAlB2F,EAAA,GAA8BT,EAAY,EAAE,IAAEW,KAAK,QAAU,KACtF,QAD0FN,EACpGC,aAAI,EAAJA,EAAMM,YAAI,IAAAP,EAAAA,EAAI,EAE5B,CACA,OAAOQ,OAAO3I,EAClB,CAkBO,IAAM4I,EAAK,kBAAA5H,GAAA,SAAA4H,IAAA1H,EAAA,KAAA0H,EAAA,KAAAvH,IAAA,OAAAkB,IACd,WACI,OAAOpB,KAAK0H,QAAQ1H,KAAK2H,IAC7B,GAAC,CAAAzH,IAAA,SAAAC,MACD,WACI,OAA8B,IAAvBH,KAAK0F,OAAOlE,OAAexB,KAAKuH,KAAO,CAACvH,KAAKuH,MAAMK,OAAO5H,KAAK0F,OAC1E,GAAC,CAAAxF,IAAA,WAAAC,MACD,WACI,OAzBD,SAAuBoH,EAAM7B,GAChC,GAAsB,IAAlBA,EAAOlE,OACP,OAAO+F,EAGP,IAAIM,EACAC,GAAa,EAQjB,OAPsB,IAAlBpC,EAAOlE,OAEPsG,GADAD,EAAWpG,EAASiE,EAAO,KACLqC,QAAQ,MAAQ,EAGtCF,EAAWnC,EAAO7B,KAAI,SAAChF,GAAC,OAAK4C,EAAS5C,EAAE,IAAEyI,KAAK,MAE5CC,GAAQO,EAAa,KAAO,KAAOD,GAAYC,EAAa,IAAM,GAEjF,CASeE,CAAchI,KAAKuH,KAAMvH,KAAK0F,OACzC,GAAC,CAAAxF,IAAA,cAAAC,MACD,WACI,IAAM6C,EAAShD,KAAK0F,OAAO7B,KAAI,SAAChF,GAAC,OAAKqE,EAAerE,EAAE,IAEvD,OADAmE,EAAOiF,OAAO,EAAG,EAAGnF,EAAW9C,KAAK2H,MAC7B5E,EAAiBC,EAC5B,GAAC,CAAA9C,IAAA,SAAAC,MACD,SAAO+H,GACH,OAAIlI,OAASkI,KAGH7I,EAAgBW,KAAMkI,IAGvBlI,KAAK2H,MAAQO,EAAMP,KACjBzD,EAAYlE,KAAK0F,OAAQwC,EAAMxC,OAK9C,GAAC,CAAAxF,IAAA,YAAAC,MACD,SAAU+H,GACN,OAAIlI,OAASkI,EACF,EAED7I,EAAgBW,KAAMkI,GAGvBlI,KAAK2H,MAAQO,EAAMP,IACjB3C,EAAchF,KAAK0F,OAAQwC,EAAMxC,QAGjC1F,KAAK2H,IAAMO,EAAMP,KAAO,EAAI,GAN3B,CAQhB,IAAC,CA1Ca,GA8FX,IAAMQ,EAAM,kBAAAtI,GAAA,SAAAsI,IAAApI,EAAA,KAAAoI,EAAA,KAAAjI,IAAA,SAAAC,MACf,WAAW,OAnDf,SAAsB0G,GAGlB,IAFA,IAAMzE,EAAI,CAAC,EACLqC,EAAOhF,OAAOgF,KAAKoC,GAChBtF,EAAI,EAAGA,EAAIkD,EAAKjD,OAAQD,IAC7Ba,EAAEqC,EAAKlD,IAAMsF,EAAKpC,EAAKlD,IAE3B,OAAOa,CACX,CA4CsBgG,CAAapI,KAAO,GAAC,CAAAE,IAAA,WAAAC,MACvC,WAAa,OA5CjB,SAAwB0G,GACpB,MAAO,KAAOpH,OAAOyH,QAAQL,GAAMhD,KAAI,SAAAwE,GAAA,IAAAC,EAAAjB,EAAAgB,EAAA,GAAM,OAAHC,EAAA,GAAa,MAAQ7G,EAAlB6G,EAAA,GAA6B,IAAEhB,KAAK,QAAU,IAC/F,CA0CwBiB,CAAevI,KAAO,GAAC,CAAAE,IAAA,cAAAC,MAC3C,WAAgB,OA1CpB,SAA2B0G,GAEvB,OAAO9D,EADQtD,OAAOmE,OAAOiD,GAAMhD,KAAI,SAACC,GAAC,OAAKZ,EAAeY,EAAE,IAEnE,CAuC2B0E,CAAkBxI,KAAO,GAAC,CAAAE,IAAA,SAAAC,MACjD,SAAO+H,GAAS,OAvCpB,SAAsBrB,EAAMqB,GACxB,GAAIrB,IAASqB,EACT,OAAO,EAEN,GAAK7I,EAAgBwH,EAAMqB,GAG3B,CAED,IADA,IAAMO,EAAYhJ,OAAOgF,KAAKoC,GACrBtF,EAAI,EAAGA,EAAIkH,EAAUjH,OAAQD,IAClC,IAAK4C,EAAO0C,EAAK4B,EAAUlH,IAAK2G,EAAMO,EAAUlH,KAC5C,OAAO,EAGf,OAAO,CACX,CAVI,OAAO,CAWf,CAuB2BmH,CAAa1I,KAAMkI,EAAQ,GAAC,CAAAhI,IAAA,YAAAC,MACnD,SAAU+H,GAAS,OAvBvB,SAAyBrB,EAAMqB,GAC3B,GAAIrB,IAASqB,EACT,OAAO,EAEN,GAAK7I,EAAgBwH,EAAMqB,GAG3B,CAED,IADA,IAAMO,EAAYhJ,OAAOgF,KAAKoC,GACrBtF,EAAI,EAAGA,EAAIkH,EAAUjH,OAAQD,IAAK,CACvC,IAAMoH,EAASvD,EAAQyB,EAAK4B,EAAUlH,IAAK2G,EAAMO,EAAUlH,KAC3D,GAAe,IAAXoH,EACA,OAAOA,CAEf,CACA,OAAO,CACX,CAXI,OAAQ,CAYhB,CAM8BC,CAAgB5I,KAAMkI,EAAQ,IAAC,CAL1C,GAONW,EAAS,WAgBjB,OAAAhJ,GATD,SAAAgJ,EAAYC,EAAkBC,GAAQhJ,EAAA,KAAA8I,GACZ,mBAAXE,GACP/I,KAAKgJ,OAASF,EACd9I,KAAK+I,OAASA,IAGd/I,KAAKgJ,OAAS,kBAAMF,CAAgB,EACpC9I,KAAK+I,OAAS,SAACjF,GAAQgF,EAAmBhF,CAAG,EAErD,GAAC,EAAA5D,IAAA,WAAAkB,IAfD,WACI,OAAOpB,KAAKgJ,QAChB,EAACzG,IACD,SAAauB,GACT9D,KAAK+I,OAAOjF,EAChB,IAAC,CANiB,G,ggCChJtB,IAAMmF,EAAY,CACd,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAExCC,EAAW,CACb,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAEhEC,EAAc,CAChB,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAE3EC,EAAa,CACf,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YAElH,SAASC,EAAiBC,EAAQC,EAAKC,GAGnC,IAFA,IAAIC,EAAc,EACdC,EAAcH,EACXG,EAAcJ,EAAO9H,QAAU8H,EAAOI,KAAiBF,GAC1DE,IACAD,IAEJ,OAAOA,CACX,CACA,SAASE,GAAcL,EAAQC,GAC3B,OAAIA,GAAOD,EAAO9H,OAAS,GACf,EAEL8H,EAAOzG,WAAW0G,EAAM,EACnC,CACA,SAASK,GAAkBN,EAAQC,GAM/B,IALA,IAAIM,EAAWN,EAETO,EAAYR,EAAOC,GACrBZ,EAAS,GACToB,GAAa,EACVR,EAAMD,EAAO9H,QAAQ,CAExB,IAAMwI,EAAcV,IADpBC,GAEA,GAAIS,IAAgBF,EAAW,CAC3BC,GAAa,EACb,KACJ,CACK,GAAoB,OAAhBC,EAAsB,CAC3B,KAAIT,EAAMD,EAAO9H,QAMb,MAAM,IAAIjB,MAAM,yBAJhBoI,GAAUW,IADVC,EAOR,MAEIZ,GAAUqB,CAElB,CACA,IAAKD,EAED,MAAM,IAAIxJ,MAAM,2DAADqH,OAA4DkC,IAE/E,MAAO,CAACnB,EAAQY,EAAMM,EAAW,EACrC,CACA,SAASI,GAA6BrI,EAAM0H,EAAQY,GAKhD,IAJA,IAAIC,EAAY,EACZV,EAAc,EACdd,EAAS,GACPyB,EAAgBF,EAAMG,GAASzI,EAAK8B,UAAW,GAAwB9B,EACtEuI,EAAYb,EAAO9H,QAAQ,CAC9B,IAAM8I,EAAQhB,EAAOa,GACrB,OAAQG,GACJ,IAAK,IAGD,OADAH,GADAV,EAAcJ,EAAiBC,EAAQa,EAAW,KAE1CV,GACJ,KAAK,EACDd,GAAU4B,GAAIH,GACd,MACJ,KAAK,EACDzB,GAAUrH,EAAaiJ,GAAIH,GAAgB,GAC3C,MACJ,KAAK,EACDzB,GAAUM,EAAUuB,GAAUJ,IAC9B,MACJ,KAAK,EACDzB,GAAUO,EAASsB,GAAUJ,IAKrC,MACJ,IAAK,IAGD,GADAD,GADAV,EAAcJ,EAAiBC,EAAQa,EAAW,KAE9CV,GAAe,EAAG,CAClB,IAAMgB,EAASC,KAAAC,IAAG,GAAO,EAAIlB,GAC7Bd,GAAUrH,EAAaoJ,KAAKE,MAAMC,GAAYT,GAAiBK,GAAYhB,EAC/E,MACSA,GAAe,IAMpBd,IAAW,GAAKkC,GAAYT,IAAgBU,OAAOrB,EAAa,MAEpE,MACJ,IAAK,IAGD,GADAU,GADAV,EAAcJ,EAAiBC,EAAQa,EAAW,KAE9CV,GAAe,EAAG,CAClB,IAAMgB,EAASC,KAAAC,IAAG,GAAO,EAAIlB,GACvBtJ,EAAQuK,KAAKE,MAAMC,GAAYT,GAAiBK,GACzC,GAATtK,IACAwI,GAAUrH,EAAanB,EAAOsJ,GAEtC,MACK,GAAIA,GAAe,EAAG,CAIvB,IAAMtJ,EAAQ0K,GAAYT,GACb,GAATjK,IACAwI,GAAUrH,EAAanB,EAAO,GAEtC,CACA,MACJ,IAAK,IAEDgK,GADAV,EAAcJ,EAAiBC,EAAQa,EAAW,KAE9CV,GAAe,IACfd,GAAU,QAEd,MACJ,IAAK,IAGD,OADAwB,GADAV,EAAcJ,EAAiBC,EAAQa,EAAW,KAE1CV,GACJ,KAAK,EACDd,GAAUoC,GAAKX,GAAiB,GAChC,MACJ,KAAK,EACDzB,GAAUrH,EAAayJ,GAAKX,GAAiB,GAAI,GAKzD,MACJ,IAAK,IAGD,OADAD,GADAV,EAAcJ,EAAiBC,EAAQa,EAAW,KAE1CV,GACJ,KAAK,EACDd,GAAUoC,GAAKX,GACf,MACJ,KAAK,EACDzB,GAAUrH,EAAayJ,GAAKX,GAAgB,GAKpD,MACJ,IAAK,IAGD,GADAD,GADAV,EAAcJ,EAAiBC,EAAQa,EAAW,KAGzC,IADDV,EAEA,OAAQ1H,GAAKqI,IACT,KAAK,EACDzB,GAAU,IACV,MACJ,KAAK,EACDA,GAAUqC,IAAwD,IAArCZ,EAAcpI,qBAS3D,MACJ,IAAK,IAGD,OADAmI,GADAV,EAAcJ,EAAiBC,EAAQa,EAAW,KAE1CV,GACJ,KAAK,EACDd,GAAUsC,GAAOb,GACjB,MACJ,KAAK,EACDzB,GAAUrH,EAAa2J,GAAOb,GAAgB,GAKtD,MACJ,IAAK,IAGD,OADAD,GADAV,EAAcJ,EAAiBC,EAAQa,EAAW,KAE1CV,GACJ,KAAK,EACDd,GAAUuC,GAAMd,GAChB,MACJ,KAAK,EACDzB,GAAUrH,EAAa4J,GAAMd,GAAgB,GAC7C,MACJ,KAAK,EACDzB,GAAUQ,EAAY+B,GAAMd,GAAiB,GAC7C,MACJ,KAAK,EACDzB,GAAUS,EAAW8B,GAAMd,GAAiB,GAKpD,MACJ,IAAK,IAGD,OADAD,GADAV,EAAcJ,EAAiBC,EAAQa,EAAW,KAE1CV,GACJ,KAAK,EACDd,GAAUwC,GAAOf,GACjB,MACJ,KAAK,EACDzB,GAAUrH,EAAa6J,GAAOf,GAAgB,GAKtD,MACJ,IAAK,IAGD,OADAD,GADAV,EAAcJ,EAAiBC,EAAQa,EAAW,KAE1CV,GACJ,KAAK,EACDd,GAAUyB,EAAcgB,WAAa,GAAK,IAAM,IAChD,MACJ,KAAK,EACDzC,GAAUyB,EAAcgB,WAAa,GAAK,KAAO,KAKzD,MACJ,IAAK,IAGD,OADAjB,GADAV,EAAcJ,EAAiBC,EAAQa,EAAW,KAE1CV,GACJ,KAAK,EACDd,GAAUyB,EAAciB,cAAgB,IACxC,MACJ,KAAK,EACD1C,GAAUrH,EAAa8I,EAAciB,cAAgB,IAAK,GAC1D,MACJ,KAAK,EACD1C,GAAUrH,EAAa8I,EAAciB,cAAe,GACpD,MACJ,KAAK,EACD1C,GAAUrH,EAAa8I,EAAciB,cAAe,GACpD,MACJ,KAAK,EACD1C,GAAUrH,EAAa8I,EAAciB,cAAe,GAK5D,MACJ,IAAK,IAEDlB,GADAV,EAAcJ,EAAiBC,EAAQa,EAAW,KAElD,IAAImB,EAAgB,GACpB,OAAQvJ,GAAKqI,IACT,KAAK,EACDkB,EAAgB,SAChB,MACJ,KAAK,EACDA,EAAgBN,IAAwD,IAArCZ,EAAcpI,qBACjD,MACJ,KAAK,EACDsJ,EAAgBN,IAAqE,IAAlDO,GAAYnB,GAAepI,qBAGtE,IAAMwJ,EAA4B,MAArBF,EAAc,GAAa,IAAM,IACxCG,EAAQC,SAASJ,EAAcK,UAAU,EAAG,GAAI,IAChDC,EAAUF,SAASJ,EAAcK,UAAU,EAAG,GAAI,IACxD,OAAQlC,GACJ,KAAK,EACDd,GAAU,GAAJf,OAAO4D,GAAI5D,OAAG6D,GACpB,MACJ,KAAK,EACD9C,GAAU,GAAJf,OAAO4D,GAAI5D,OAAGtG,EAAamK,EAAO,IACxC,MACJ,QACI9C,GAAU,GAAJf,OAAO4D,GAAI5D,OAAGtG,EAAamK,EAAO,GAAE,KAAA7D,OAAItG,EAAasK,EAAS,IAG5E,MACJ,IAAK,IACDjD,GAAU,IACVwB,IACA,MACJ,IAAK,IACDxB,GAAU,IACVwB,IACA,MACJ,IAAK,IACL,IAAK,IACD,IAA+E0B,EAAAxE,EAApCuC,GAAkBN,EAAQa,GAAU,GAC/ExB,GADmBkD,EAAA,GAEnB1B,GAFuC0B,EAAA,GAGvC,MACJ,IAAK,IACD,IAAMC,EAAWnC,GAAcL,EAAQa,GACvC,KAAI2B,GAAY,GAAKA,IAAa,IAAIjJ,WAAW,IAK7C,MAAM,IAAItC,MAAM,yBAJhB4J,GAAa,EACbxB,GAAUsB,GAA6BG,EAAe5C,OAAOuE,aAAaD,GAAW5B,GAKzF,MACJ,IAAK,KACD,IAAM8B,EAAYrC,GAAcL,EAAQa,GACxC,KAAI6B,GAAa,GAKb,MAAM,IAAIzL,MAAM,yBAJhB4J,GAAa,EACbxB,GAAUnB,OAAOuE,aAAaC,GAKlC,MACJ,QACI7B,IACAxB,GAAU2B,EAGtB,CACA,OAAO3B,CACX,CACO,SAAS5G,GAAK5B,GACjB,OAAOA,EAAM4B,MAAQ,CACzB,CAOO,SAASiJ,GAAmBlJ,GAC/B,IAAMmK,EAAUnK,EAAS,EAGnB8J,GAFN9J,EAAS4I,KAAKwB,IAAIpK,IAEQ,KAAW,IACrC,OAAQmK,EAAU,IAAM,KACpB3K,KAHaQ,EAAS,MAGF,GAAK,IACzBR,EAAasK,EAAS,EAC9B,CACO,SAASO,GAAoBvK,EAAMwK,GACtC,IAAMtF,EAAMlF,EAAKyK,cACjB,MAAgB,UAATD,EACDtF,EAAI6E,UAAU,EAAG7E,EAAIiB,QAAQ,MAC7BjB,EAAI6E,UAAU7E,EAAIiB,QAAQ,KAAO,EAAGjB,EAAItF,OAAS,EAC3D,CAkEO,SAASC,GAASG,EAAM0H,EAAQgD,GACnC,OAAsB,MAAf1K,EAAKE,OA7ChB,SAAgCF,EAAM0H,GAAQ,IAAAiD,EAAAC,EAEVC,EANDC,EAAgB5K,EACzCgF,EAIA6F,EAAI,IAAIlJ,KAAK7B,EAAK8B,WAAwB,QAAf6I,EAAI3K,EAAKE,cAAM,IAAAyK,EAAAA,EAAI,IACpD,GAAsB,iBAAXjD,EACP,OAAOqD,EAAEN,cAAcO,QAAQ,QAAS,IAAIA,QAAQ,eAAgB,KAAO5B,GAA+B,QAAbyB,EAAE7K,EAAKE,cAAM,IAAA2K,EAAAA,EAAI,GAE7G,GAAsB,IAAlBnD,EAAO9H,OAYZ,OAAOyI,GAA6B0C,EAAGrD,GAAQ,GAX/C,OAAQA,GACJ,IAAK,IACL,IAAK,IAAK,OAAO6C,GAAoBQ,EAAG,SACxC,IAAK,IACL,IAAK,IAAK,OAAOR,GAAoBQ,EAAG,UACxC,IAAK,IACL,IAAK,IAAK,OAhBaD,EAgBoBC,EAhBJ7K,EAgBmB,QAAd0K,EAAG5K,EAAKE,cAAM,IAAA0K,EAAAA,EAAI,GAfhE1F,EAAM4F,EAAeL,eAChBV,UAAU,EAAG7E,EAAItF,OAAS,GAAKwJ,GAAmBlJ,GAerD,QAAS,MAAM,IAAIvB,MAAM,kCAMrC,CA2BUsM,CAAuBjL,EAAM0H,GA1BvC,SAA8B1H,EAAM0H,GAChC,IAAMY,EAAoB,IAAdtI,EAAKG,KACjB,GAAsB,iBAAXuH,EACP,OAAOY,EAAMtI,EAAKkL,cAAgBlL,EAAKmL,iBAEtC,GAAsB,IAAlBzD,EAAO9H,OAgBZ,OAAOyI,GAA6BrI,EAAM0H,EAAQY,GAflD,OAAQZ,GACJ,IAAK,IACL,IAAK,IACD,OAAOY,EAAMiC,GAAoBvK,EAAM,SAAWA,EAAKoL,qBAC3D,IAAK,IACL,IAAK,IACD,OAAO9C,EAAMiC,GAAoBvK,EAAM,UAAYA,EAAKqL,qBAC5D,IAAK,IACL,IAAK,IACD,OAxDhB,SAAyBN,EAAGzC,GACxB,GAAIA,EACA,OAAOyC,EAAEN,cAIT,IAAMa,EAAwB,MAAVP,EAAE5K,MAAiC,IAAX4K,EAAE5K,KAC9C,OAAOT,EAAaqL,EAAEtB,cAAe,GAAK,IACtC/J,EAAaqL,EAAEQ,WAAa,EAAG,GAAK,IACpC7L,EAAaqL,EAAES,UAAW,GAAK,IAC/B9L,EAAaqL,EAAEvB,WAAY,GAAK,IAChC9J,EAAaqL,EAAEU,aAAc,GAAK,IAClC/L,EAAaqL,EAAEW,aAAc,GAAK,IAClChM,EAAaqL,EAAEY,kBAAmB,IACjCL,EAAclC,IAA4C,IAAzB2B,EAAE3K,qBAAgC,GAEhF,CAwCuBwL,CAAgB5L,EAAMsI,GACjC,QACI,MAAM,IAAI3J,MAAM,kCAMhC,CAIUkN,CAAqB7L,EAAM0H,EACrC,CACO,SAASe,GAASlK,EAAO4B,GAC5B,IAAM4K,EAAI,IAAIlJ,KAAKtD,GAEnB,OADAwM,EAAE5K,KAA8D,GAA9C,MAARA,EAAe,EAA+BA,GACjD4K,CACX,CAgCO,SAASe,GAASC,GACrB,SAASC,IACL,MAAM,IAAIrN,MAAM,mCAADqH,OAAoC+F,GACvD,CACa,MAATA,GAAkC,KAAjBA,EAAME,QACvBD,IAGiB,KAAjBD,EAAMnM,QAA8B,MAAbmM,EAAM,IAA2B,MAAbA,EAAM,KACjDA,GAAS,aAEb,IAAI/L,EAAO,IAAI6B,KAAKkK,GAChB7L,EAAS,KACb,GAAIgM,MAAMlM,EAAK8B,WAAY,CAGvB,IAAMqK,EAAI,yHAAyHC,KAAKL,GACxI,GAAS,MAALI,EAAW,CACX,IAAIE,EACAC,EAAgB,EACpB,GAAY,MAARH,EAAE,GAAY,CACd,IAAMI,EAAYJ,EAAE,GAAGK,MAAM,KACvBC,EAAW3C,SAASyC,EAAU,GAAI,IACxCD,EACe,KAAXG,EACwC,GAApC3C,SAASyC,EAAU,IAAM,IAAK,IAC9BG,WAAWH,EAAU,IAAM,KACvB,MAARJ,EAAE,IAAqC,OAAvBA,EAAE,GAAGQ,eAA0BF,EAAW,KAC1DH,GAAiB,IAEzB,CACA,GAAY,MAARH,EAAE,GAAY,CACd,GAAY,MAARA,EAAE,GACFE,EAAW,IAAIxK,KAAKsK,EAAE,GAAK,YAE1B,CACD,IAAMpB,EAAI,IAAIlJ,KACdwK,EAAW,IAAIxK,KAAKkJ,EAAE6B,iBAAmB,KAAO7B,EAAE8B,cAAgB,GAAK,IAAM9B,EAAE+B,aACnF,CACA,GAAa,MAATX,EAAE,GACFjM,EAAS,QAER,CACD,IAAI6M,EAAuC,GAArBjD,SAASqC,EAAE,GAAI,IAAWrC,SAASqC,EAAE,IAAM,IAAK,IACtD,MAAZA,EAAE,GAAG,KACLY,IAAoB,GAExB7M,EAAS6M,EACTT,GAAmC,GAAlBS,CACrB,CACJ,MAEI,GAAY,MAARZ,EAAE,GACFE,EAAW,IAAIxK,KAAKsK,EAAE,QAErB,CACD,IAAMpB,EAAI,IAAIlJ,KACdwK,EAAW,IAAIxK,KAAKkJ,EAAEtB,cAAgB,KAAOsB,EAAEQ,WAAa,GAAK,IAAMR,EAAES,UAC7E,CAEJxL,EAAO,IAAI6B,KAAKwK,EAASvK,UAA4B,IAAhBwK,GAErCtM,EAAO,IAAI6B,KAAK7B,EAAK8B,UAAwE,KAA3D9B,EAAKI,oBAAsBiM,EAASjM,qBAC1E,MAEI4L,IAGAE,MAAMlM,EAAK8B,YACXkK,GAER,CACA,MAAO,CAAChM,EAAME,EAClB,CACO,SAAS8M,GAAM9H,GAAwB,IAAnB+H,EAASjI,UAAApF,OAAA,QAAAR,IAAA4F,UAAA,IAAAA,UAAA,GACIkI,EAAAzH,EAAbqG,GAAS5G,GAAI,GAA7BlF,EAAIkN,EAAA,GAAEhN,EAAMgN,EAAA,GAGb/M,EAAiB,MAAVD,EACN+M,GAAwB,MAAX/M,EAAiB,EAAuB,EACtD,EACN,OAAOuI,GAASzI,EAAK8B,UAAW3B,EACpC,CACO,SAASgN,GAASjL,EAAGkL,GACxB,IAEI,OADAA,EAASC,SAAWL,GAAM9K,IACnB,CACX,CACA,MAAOoL,GACH,OAAO,CACX,CACJ,CAsBO,SAASC,KACZ,OAAO9E,GAAS5G,KAAK2L,MAAO,EAChC,CAYO,SAASC,GAAgBzN,GAC5B,OAAqB,IAAdA,EAAKG,KAAgCH,EAAOyI,GAASzI,EAAK8B,UAAW,EAChF,CACO,SAAS6H,GAAY3J,GACxB,OAAqB,IAAdA,EAAKG,KAAkCH,EAAOyI,GAASzI,EAAK8B,UAAW,EAClF,CAaO,SAAS6G,GAAIoC,GAChB,OAAkB,IAAXA,EAAE5K,KAAgC4K,EAAE+B,aAAe/B,EAAES,SAChE,CACO,SAASrC,GAAK4B,GACjB,OAAkB,IAAXA,EAAE5K,KAAgC4K,EAAE2C,cAAgB3C,EAAEvB,UACjE,CACO,SAASP,GAAY8B,GACxB,OAAkB,IAAXA,EAAE5K,KAAgC4K,EAAE4C,qBAAuB5C,EAAEY,iBACxE,CACO,SAAStC,GAAO0B,GACnB,OAAkB,IAAXA,EAAE5K,KAAgC4K,EAAE6C,gBAAkB7C,EAAEU,YACnE,CACO,SAASnC,GAAMyB,GAClB,OAAmB,IAAXA,EAAE5K,KAAgC4K,EAAE8B,cAAgB9B,EAAEQ,YAAc,CAChF,CACO,SAAShC,GAAOwB,GACnB,OAAkB,IAAXA,EAAE5K,KAAgC4K,EAAE8C,gBAAkB9C,EAAEW,YACnE,CAIO,SAAS9C,GAAUmC,GACtB,OAAkB,IAAXA,EAAE5K,KAAgC4K,EAAE+C,YAAc/C,EAAEgD,QAC/D,CA4FO,SAASC,GAAe/Q,EAAGS,GAC9B,OA1BqBqN,EA0BL9N,EAzBO,iBADCgR,EA0BLvQ,GAnFhB,SAAaqN,EAAGmD,GACnB,IAAMC,EAAU1F,GAASsC,EAAEjJ,UAAYoM,EAAInD,EAAE5K,MAC7C,GAAe,IAAX4K,EAAE5K,KAA+B,CACjC,IAAMiO,EAAcrD,EAAE3K,oBAChBiO,EAAcF,EAAQ/N,oBAC5B,OAAOgO,IAAgBC,EACjB5F,GAAS0F,EAAQrM,UAA0C,KAA7BuM,EAAcD,GAAsBrD,EAAE5K,MACpEgO,CACV,CAEI,OAAOA,CAEf,CA+CUG,CAAIvD,GAAIkD,GACRlD,EAAEjJ,UAAYmM,EAAKnM,UAHtB,IAAkBiJ,EAAGkD,CA2B5B,CCnuBO,IAAMM,GAASxP,OAAO,WACtB,SAASyP,GAAUvR,GACtB,MAAoB,iBAANA,GAA+B,iBAANA,IAAkBA,aAAC,EAADA,EAAIsR,IACjE,CAYO,SAASE,GAASxR,EAAGS,GACxB,MAAiB,iBAANT,EACAA,EAAIS,EAEO,iBAANT,EACLA,EAAIyR,OAAOhR,GAGXT,EAAEsR,MAAUE,SAAS/Q,EAEpC,CACO,SAASiR,GAAQ1R,EAAG2R,GACvB,MAAiB,iBAAN3R,EACAA,EAAE0R,QAAQC,GAEC,iBAAN3R,EACLA,EAGAA,EAAEsR,MAAUI,QAAQC,EAEnC,CACO,SAASC,GAAY5R,EAAG6R,GAC3B,MAAiB,iBAAN7R,EACAA,EAAE4R,YAAYC,GAEH,iBAAN7R,EACLA,EAGAA,EAAEsR,MAAUM,YAAYC,EAEvC,CACO,SAASC,GAAc9R,EAAG2R,GAC7B,MAAiB,iBAAN3R,EACAA,EAAE8R,cAAcH,GAEL,iBAAN3R,EACLA,EAGAA,EAAEsR,MAAUQ,cAAcH,EAEzC,CACO,SAASI,GAAM/R,GAClB,MAAiB,iBAANA,GACCgS,OAAOhS,KAAO,GAAG4C,SAAS,IAEhB,iBAAN5C,EAELyR,OAAOQ,QAAQ,GAAIjS,GAAG4C,SAAS,IAG/B5C,EAAEsR,MAAUS,OAE3B,CCpDO,SAASG,GAAOjK,GACnB,OAAOA,EAAI8F,QAAQ,sCAAuC,OAC9D,CAYO,SAASoE,GAAQC,EAAKtD,GAAoB,IAAbuD,EAAOtK,UAAApF,OAAA,QAAAR,IAAA4F,UAAA,GAAAA,UAAA,GAAG,EAC1C,GAAa,MAAT+G,EACA,MAAM,IAAIpN,MAAM,wBAEpB,IAAK0Q,EAAIE,OACL,MAAM,IAAI5Q,MAAM,qBAEpB0Q,EAAIG,UAAYF,EAKhB,IAJA,IACInD,EADEiD,EAAU,GAEZK,GAAkB,EAEU,OAAxBtD,EAAIkD,EAAIjD,KAAKL,KAEbI,EAAEuD,QAAUD,EACZJ,EAAIG,aAGJC,EAAiBtD,EAAEuD,MACnBN,EAAQO,KAAKxD,IAGrB,OAAOiD,CACX,C,6uCCnDA,IAAMQ,GAAiB,gDAEjBC,GAAe,wDACrB,SAASC,GAAW7S,EAAGS,GACnB,OFJG,SAAiBT,EAAGS,GACvB,MAAiB,iBAANT,GAGW,iBAANA,EAFLA,EAAIS,GAAK,EAAKT,EAAIS,EAAI,EAAI,EAM1BT,EAAEwG,UAAU/F,EAE3B,CENWqS,CAAe9S,EAAGS,GAAK,CAClC,CAgFO,SAASsS,GAAOjE,GACnB,MAAO,CACHA,MAAAA,EACAkE,MAmJiB/K,EAnJF6G,EAoJZ,SAACkE,GACJL,GAAeJ,UAAY,EAK3B,IAJA,IAAMU,EAAW,GACXd,EAAU,GACZe,EAAS,EACTC,EAAQR,GAAexD,KAAKlH,GACzBkL,GAAO,CAGV,IAAMC,EAAaD,EAAMV,OAASU,EAAM,IAAM,IAAIxQ,OAClDsQ,EAASP,KAAKzK,EAAI6E,UAAUoG,EAAQE,GAAYrF,QAAQ,MAAO,MAC/DoE,EAAQO,KAAKS,GACbD,EAASP,GAAeJ,UAExBI,GAAeJ,WAAa,EAC5BY,EAAQR,GAAexD,KAAKlH,EAChC,CACA,OAAwB,IAApBgL,EAAStQ,OACFqQ,EAAK/K,EAAI8F,QAAQ,MAAO,OAG/BkF,EAASP,KAAKzK,EAAI6E,UAAUoG,GAAQnF,QAAQ,MAAO,MAC5CsF,GAAcL,EAAMC,EAAUd,GAE7C,IAzBG,IAAkBlK,CAjJzB,CAwBA,SAASqL,GAAcN,EAAMO,GACzB,MAAsB,iBAARA,EAAmBP,EAAKO,GAAOA,EAAIP,KAAKA,EAC1D,CAQO,SAASQ,GAAOD,GACnB,OAAOD,IAAc,SAACtT,GAAC,OAAKA,CAAC,GAAEuT,EACnC,CACO,SAASE,GAAOF,GACnB,OAAOD,IAAc,SAACtT,GAClB,MAAM,IAAI0B,MAAM1B,EACpB,GAAGuT,EACP,CACA,SAASG,GAAkBC,EAAKC,EAAOC,EAAWjI,EAAWnB,GACzD,IAAIkC,EAAO,GAGX,GAFAiH,EAAQA,GAAS,GACjBnJ,EAASA,GAAU,GACf8G,GAAUoC,GAgBV,OAf6B,MAAzBlJ,EAAOqJ,gBACHjB,GAAWc,EAAK,IAChBA,EAAMnC,GAASmC,GAAM,GACrBhH,EAAO,KAGHiH,EAAM1K,QAAQ,MAAQ,EACtByD,EAAO,IAEFiH,EAAM1K,QAAQ,MAAQ,IAC3ByD,EAAO,MAInBf,EAAyB,MAAbA,EAAoB,KAAOiB,SAASjB,EAAW,IACnDnB,GACJ,IAAK,IACL,IAAK,IAEDkJ,EAAMjC,GAAQiC,EADd/H,EAAyB,MAAbA,EAAoBA,EAAY,GAE5C,MACJ,IAAK,IACL,IAAK,IACD+H,EAAmB,MAAb/H,EAAoBgG,GAAY+B,EAAK/H,GAAagG,GAAY+B,GACpE,MACJ,IAAK,IACL,IAAK,IACDA,EAAmB,MAAb/H,EAAoBkG,GAAc6B,EAAK/H,GAAakG,GAAc6B,GACxE,MACJ,IAAK,IACDA,EAAM5B,GAAM4B,GACZ,MACJ,IAAK,IACDA,EAAM5B,GAAM4B,GAAKjE,cACjB,MACJ,QACIiE,EAAMhL,OAAOgL,QAKrBA,EADKA,aAAe/O,KACdmP,GAAaJ,GAGb/Q,EAAS+Q,GAGnB,GADAE,EAAiC,iBAAdA,EAAyBA,EAAYhH,SAASgH,EAAW,IACvE5E,MAAM4E,GAaPF,EAAMhH,EAAOgH,MAbM,CACnB,IAAMK,EAAWJ,EAAM1K,QAAQ,MAAQ,EACjC+K,EAAYL,EAAM1K,QAAQ,MAAQ,EAClCgL,EAAKD,IAAcD,EAAW,IAAM,IAGtCL,EAFO,MAAPO,EAEMvH,GADNgH,EAAMQ,GAAIR,EAAKE,EAAYlH,EAAKhK,OAAQuR,EAAID,IAItCE,GAAIxH,EAAOgH,EAAKE,EAAWK,EAAID,EAE7C,CAIA,OAAON,CACX,CACA,SAASN,GAAcL,EAAMoB,EAAWC,GAAqC,IAA3BC,EAAOvM,UAAApF,OAAA,QAAAR,IAAA4F,UAAA,GAAAA,UAAA,GAAG,GAAIwM,EAAMxM,UAAApF,OAAA,QAAAR,IAAA4F,UAAA,GAAAA,UAAA,IAAI,EACtE,OAAO,WAI8B,IAFjC,IAAI+B,EAASwK,EACPrB,EAAWmB,EAAUI,QACrBrC,EAAUkC,EAASG,QAAQC,EAAA1M,UAAApF,OAJ1B+R,EAAI,IAAAzU,MAAAwU,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAA5M,UAAA4M,GAKX,IAAK,IAALC,EAAA,EAAAC,EAAkBH,EAAIE,EAAAC,EAAAlS,OAAAiS,IAAE,CAAnB,IAAMrB,EAAGsB,EAAAD,GACVE,EAAAtM,GAAmD2J,EAAQ,GAAE,GAAlDyB,EAAKkB,EAAA,GAAEC,EAAUD,EAAA,GAAElJ,EAASkJ,EAAA,GAAErK,EAAMqK,EAAA,GAC3CjB,EAAYkB,EAChB,GAAIR,GAAU,EACVV,EAAYU,EACZA,GAAU,OAET,GAAkB,MAAdV,EAAmB,CACxB,GAAIN,EAAM,EACN,MAAM,IAAI7R,MAAM,gCAEpB6S,EAAShB,EACT,QACJ,CACAzJ,GAAUmJ,EAAS,GACnBnJ,GAAU4J,GAAkBH,EAAKK,EAAOC,EAAWjI,EAAWnB,GAC9DwI,EAAS7J,OAAO,EAAG,GACnB+I,EAAQ/I,OAAO,EAAG,EACtB,CACA,OAAuB,IAAnB+I,EAAQxP,QACRmH,GAAUmJ,EAAS,GACZD,EAAKlJ,IAGLuJ,GAAcL,EAAMC,EAAUd,EAASrI,EAAQyK,EAE9D,CACJ,CA0JO,SAAS9L,GAAKuM,EAAWC,GAC5B,OAAIhV,MAAMC,QAAQ+U,GACPA,EAAGxM,KAAKuM,GAGR/U,MAAMiV,KAAKD,GAAIxM,KAAKuM,EAEnC,CA0BA,SAASb,GAAIlM,EAAKlE,EAAKmQ,EAAIiB,GACvBjB,EAAKA,GAAM,IACXnQ,GAAYkE,EAAItF,OAChB,IAAK,IAAID,EAAI,EAAGA,EAAIqB,EAAKrB,IACrBuF,EAAMkN,EAAUlN,EAAMiM,EAAKA,EAAKjM,EAEpC,OAAOA,CACX,CACO,SAASmN,GAAQnN,EAAKlE,EAAKmQ,GAC9B,OAAOC,GAAIlM,EAAKlE,EAAKmQ,EACzB,CAyBO,SAAS3E,GAAMtH,EAAKoN,EAAW1R,EAAO2R,GAGzC,GADAA,EAA6B,iBAAZA,EAAuBA,EAAU,GADlD3R,EAAyB,iBAAVA,EAAqBA,OAAQxB,IAE/BwB,EAAQ,EACjB,MAAM,IAAIjC,MAAM,kCAEpB,GAAc,IAAViC,EACA,MAAO,GAEX,IAAM4R,IAAgC,GAAjBD,GACftG,IAAyB,GAAjBsG,GAGdD,GADAA,GADAA,EAAYA,GAAa,IACHG,QAAO,SAAAxV,GAAC,OAAIA,CAAC,IAAEgF,IAAIkN,KACnBvP,OAAS,EAAI0S,EAAY,CAAC,OAChD,IAAMI,EAAS,GACTrD,EAAM,IAAIsD,OAAOL,EAAU5M,KAAK,KAAM,KACxCkN,GAAa,EACbjT,EAAI,EACR,EAAG,CACC,IAAMyQ,EAAQf,EAAIjD,KAAKlH,GACvB,GAAc,OAAVkL,EAAgB,CAChB,IAAMyC,EAAY5G,EAAO/G,EAAI6E,UAAUpK,GAAGsM,OAAS/G,EAAI6E,UAAUpK,KAC5D6S,GAAeK,EAAUjT,OAAS,IACnC8S,EAAO/C,KAAKkD,GAEhBD,GAAa,CACjB,KACK,CACD,IAAMC,EAAY5G,EAAO/G,EAAI6E,UAAUpK,EAAGyQ,EAAMV,OAAOzD,OAAS/G,EAAI6E,UAAUpK,EAAGyQ,EAAMV,SAClF8C,GAAeK,EAAUjT,OAAS,KACtB,MAATgB,GAAiB8R,EAAO9S,OAAS,IAAMgB,GACvC8R,EAAO/C,KAAK1D,EAAO/G,EAAI6E,UAAUpK,GAAGsM,OAAS/G,EAAI6E,UAAUpK,IAC3DiT,GAAa,GAGbF,EAAO/C,KAAKkD,IAGpBlT,EAAI0P,EAAIG,SACZ,CACJ,OAASoD,GACT,OAAOF,CACX,CAqBO,SAAS3I,GAAU7E,EAAK4N,EAAYlT,GACvC,GAAKkT,GAAclT,GAAU,GAAKsF,EAAItF,OAClC,MAAM,IAAIjB,MAAM,oCAEpB,OAAiB,MAAViB,EAAiBsF,EAAI6N,OAAOD,EAAYlT,GAAUsF,EAAI6N,OAAOD,EACxE,C,2qBC9gBO,IAAME,GAAI,WACb,SAAAA,EAAYzU,I,4FAAOJ,CAAA,KAAA6U,GACf5U,KAAKG,MAAQA,CACjB,CAAC,O,EAAAyU,G,EAAA,EAAA1U,IAAA,SAAAC,MACD,WACI,OAAOH,KAAKG,KAChB,GACA,CAAAD,IAAA,WAAAC,MACA,WACI,OAAOqH,OAAOxH,KAAKG,MACvB,GAAC,CAAAD,IAAA,cAAAC,MACD,WACI,OAAO+C,EAAelD,KAAKG,MAC/B,GAAC,CAAAD,IAAA,SAAAC,MACD,SAAO+H,GACH,OAAa,MAATA,GAIO/D,EAAOnE,KAAKG,MAAO+H,aAAiB0M,EAAO1M,EAAM/H,MAAQ+H,EAExE,GAAC,CAAAhI,IAAA,YAAAC,MACD,SAAU+H,GACN,OAAa,MAATA,EACO,EAGA9C,EAAQpF,KAAKG,MAAO+H,aAAiB0M,EAAO1M,EAAM/H,MAAQ+H,EAEzE,M,8EAAC,CA7BY,GA+BV,SAAS/H,GAAMtB,GAClB,GAAS,MAALA,EACA,MAAM,IAAI0B,MAAM,uBAGhB,OAAO1B,aAAa+V,GAAO/V,EAAEsB,MAAQtB,CAE7C,CACO,SAASgW,GAAOC,GACnB,OAAOA,aAAeF,GAAOE,EAAI3U,MAAQ2U,CAC7C,CACO,SAASC,GAAKlW,GACjB,OAAY,MAALA,GAAaA,aAAa+V,GAAO,IAAIA,GAAK/V,GAAKA,CAC1D,CAYO,SAASmW,GAAQF,GACpB,OAAe,MAAPA,EAAe,GAAK,CAAC3U,GAAM2U,GACvC,CACO,SAASG,GAAWH,EAAKI,GAC5B,OAAe,MAAPJ,EAAe3U,GAAM2U,GAAOI,CACxC,CAaO,SAASrR,GAAIsR,EAASL,GACzB,OAAe,MAAPA,EAAeC,GAAKI,EAAQhV,GAAM2U,UAAS9T,CACvD,CC9EO,IACMoU,GAAmB,wBCDzB,SAASC,GAA8BpO,EAAMrE,GAChD,MAAsB,mBAAVqE,EACD,IAAIA,EAAKrE,GAGT,IAAI9D,MAAM8D,EAEzB,CCoBO,SAAS0S,GAAKC,EAAQC,EAAahT,EAAOrC,GAC7C,IAAMsV,EAAsB,EAAdD,EACd,OAAOD,EAAOD,KAAKnV,EAAOsV,EAAQA,EAAQjT,EAC9C,CA2BO,SAASqB,GAAIqC,EAAGwP,EAAQzO,GAG3B,IAFA,IAAMrE,EAAsB,EAAhB8S,EAAOlU,OACb+T,EAASF,GAA8BpO,EAAMrE,GAC1CrB,EAAI,EAAGA,GAAMqB,EAAM,EAAIrB,IAC5BoU,GAAUJ,EAAQhU,EAAG2E,EAAE0P,GAAOrU,EAAGmU,KAErC,OAAOH,CACX,CAygBO,SAASM,GAAKC,EAAQC,EAAOC,GAChC,IAAMC,EAAWH,EACjB,OAAOE,EAAME,OAAQD,EAAWF,EACpC,CA8PO,SAASI,GAAWhS,EAAQiS,EAAQC,GACvC,GAAc,MAAVD,EACA,OAAc,MAAVC,EAOH,GAAc,MAAVA,EACL,OAAO,EAGP,IAAI9U,EAAI,EACJoH,GAAS,EACP2N,EAA0B,EAAhBF,EAAO5U,OACjB+U,EAA0B,EAAhBF,EAAO7U,OACvB,GAAI8U,EAAUC,EACV,OAAO,EAEN,GAAID,EAAUC,EACf,OAAO,EAGP,KAAQhV,EAAI+U,GAAY3N,GACpBA,EAASxE,EAAOyR,GAAOrU,EAAG6U,GAASR,GAAOrU,EAAG8U,IAC7C9U,EAAMA,EAAI,EAAK,EAEnB,OAAOoH,CAGnB,CAyCO,SAAS6N,GAAKlF,EAAO0E,GACxB,GAAK1E,EAAQ,GAAaA,GAAS0E,EAAMxU,OACrC,MAAM,IAAIjB,MAAM,sEAGhB,OAAOyV,EAAM1E,EAErB,CACO,SAASmF,GAAQT,EAAO1E,EAAOnR,GAClC,GAAKmR,EAAQ,GAAaA,GAAS0E,EAAMxU,OACrC,MAAM,IAAIjB,MAAM,sEAGhByV,EAAM1E,GAASnR,CAEvB,CAuCO,SAASuW,GAAUxQ,EAAGkQ,EAAQC,EAAQN,GACzC,OAZG,SAA0BD,EAAQM,EAAQC,EAAQN,GACrD,IAAIY,EAAMZ,EACNK,EAAO5U,SAAW6U,EAAO7U,QAt7BjC,WACI,MAAM,IAAIjB,MAAM,+BACpB,CAq7BQqW,GAGJ,IADA,IAAMC,EAAuB,EAAhBT,EAAO5U,OACXD,EAAI,EAAGA,GAAKsV,EAAMtV,IACvBoV,EAAMb,EAAOvU,EAAOqU,GAAOiB,EAAOtV,EAAG6U,GAASR,GAAOiB,EAAOtV,EAAG8U,GAASM,GAE5E,OAAOA,CACX,CAEWG,EAAiB,SAACC,EAAMlY,EAAGS,EAAGqX,GAAG,OAAKzQ,EAAErH,EAAGS,EAAGqX,EAAI,GAAEP,EAAQC,EAAQN,EAC/E,C,oxCCn8BO,IAAMiB,GAAU,SAAAC,GACnB,SAAAD,EAAYE,EAAMC,GAAM,IAAAC,E,MAGH,OAHGrX,GAAA,KAAAiX,I,EACpB,K,EAAAA,E,QAAAI,E,2WACKF,KAAOA,EACZE,EAAKD,KAAOA,EAAKC,CACrB,CAAC,O,sRAAAC,CAAAL,EAAAC,GAAApX,GAAAmX,EAAA,EAAA9W,IAAA,WAAAC,MACD,WAEI,MAAQ,IAAMmH,GAAK,KADRtH,MACqB,GACpC,GAAC,CAAAE,IAAA,SAAAC,MACD,SAAO+H,GAEH,OADWlI,OACAkI,GAIM,SAACoP,EAAUC,GACpBC,EAAM,OAAa,CACf,IAAMC,EAAOH,EAAUI,EAAOH,EACxBI,EAAaF,EAAKN,KAClBS,EAAeF,EAAKP,KAC1B,GAAkB,MAAdQ,EAAoB,CACpB,GAAoB,MAAhBC,EAAsB,CACtB,IAAMC,EAAKC,GAAQH,GACbI,EAAKD,GAAQF,GACnB,GAAIzT,EAAOsT,EAAKP,KAAMQ,EAAKR,MAAO,CAC9BI,EAAWO,EACXN,EAAWQ,EACX,SAASP,CACb,CAEI,OAAO,CAEf,CAEI,OAAO,CAEf,CACK,OAAoB,MAAhBI,CAOb,CACJ,CACOJ,CApCAxX,KAoCSkI,EAExB,GAAC,CAAAhI,IAAA,cAAAC,MACD,WAwBI,OAAwB,EAtBX,SAAC6X,EAAOC,EAAOX,GAClB,OAAa,CACf,IAAM/V,EAAIyW,EAAOrV,EAAIsV,EAAOR,EAAOH,EAC7BK,EAAaF,EAAKN,KACxB,GAAkB,MAAdQ,EAaA,OAAW,EAAJhV,EAZP,IAAMuV,EAAIJ,GAAQH,GAClB,GAAIpW,EAAI,GACJ,OAAW,EAAJoB,EAGPqV,EAASzW,EAAI,EACb0W,GAAWtV,GAAK,GAAKO,EAAeuU,EAAKP,MAAU,IAAM3V,EACzD+V,EAAWY,CAQvB,CACJ,CACOV,CAAK,EAAG,EAvBJxX,KAwBf,GAAC,CAAAE,IAAA,SAAAC,MACD,WAEI,OAAOrB,MAAMiV,KADC/T,KAElB,GAAC,CAAAE,IAAA,YAAAC,MACD,SAAU+H,GAkCN,OAAyB,EAhCZ,SAACoP,EAAUC,GACpBC,EAAM,OAAa,CACf,IAAMC,EAAOH,EAAUI,EAAOH,EACxBI,EAAaF,EAAKN,KAClBS,EAAeF,EAAKP,KAC1B,GAAkB,MAAdQ,EAAoB,CACpB,GAAoB,MAAhBC,EAAsB,CACtB,IAAMC,EAAKC,GAAQH,GACbI,EAAKD,GAAQF,GACbO,EAAoC,EAAhC/S,EAAQqS,EAAKP,KAAMQ,EAAKR,MAClC,GAAU,IAANiB,EAAS,CACTb,EAAWO,EACXN,EAAWQ,EACX,SAASP,CACb,CAEI,OAAW,EAAJW,CAEf,CAEI,OAAO,CAEf,CACK,OAAoB,MAAhBP,GACG,EAGD,CAGf,CACJ,CACOJ,CAjCIxX,KAiCKkI,EACpB,GAAC,CAAAhI,IAAA,gBAAAC,MACD,WAEI,OAoDG,IAAIiY,GArDIpY,KAEf,GAAC,CAAAE,IACAS,OAAOC,SAAQT,MAAhB,WACI,OAAOU,EAAWL,EAAcR,MACpC,GAAC,CAAAE,IACD,+CAA8CC,MAA9C,WAEI,OAAOK,EADIR,KAEf,IAAC,CA9HkB,CAASmI,GAmInBiQ,GAAgB,WAKxB,OAAAvY,IAJD,SAAAuY,EAAYtE,GAAI/T,GAAA,KAAAqY,GACZpY,KAAK8T,GAAKA,EACV9T,KAAKqY,GAAKrY,KAAK8T,GACf9T,KAAKC,QV/GF,IUgHP,GAAC,EAAAC,IACD,uDAAsDC,MAAtD,WAEI,OADUH,KACDC,OACb,GAAC,CAAAC,IACD,6CAA4CC,MAA5C,WAEI,OADUH,KACDC,OACb,GAAC,CAAAC,IACD,0CAAyCC,MAAzC,WACI,IAAMmY,EAAItY,KACJ2X,EAAaW,EAAED,GAAGlB,KACxB,GAAkB,MAAdQ,EAAoB,CACpB,IAAMO,EAAIJ,GAAQH,GAGlB,OAFAW,EAAErY,QAAUqY,EAAED,GAAGnB,KACjBoB,EAAED,GAAKH,GACA,CACX,CAEI,OAAO,CAEf,GAAC,CAAAhY,IACD,uCAAsCC,MAAtC,WACI,IAAMmY,EAAItY,KACVsY,EAAED,GAAKC,EAAExE,GACTwE,EAAErY,QVzIC,IU0IP,GAAC,CAAAC,IAAA,UAAAC,MACD,WACA,IAAC,CAjCwB,GAyCtB,SAASoY,KACZ,OAAO,IAAIvB,GVrJJ,UUqJ4BhW,EACvC,CACO,SAASwX,GAAyB3Z,EAAGiV,GACxC,OAAO,IAAIkD,GAAWnY,EAAGiV,EAC7B,CACO,SAAS2E,GAAwB3E,GACpC,OAAkB,MAAXA,EAAGqD,IACd,CAmBO,SAASuB,GAAqB5E,GAEjC,GAAkB,MADCA,EAAGqD,KAElB,OAAOrD,EAAGoD,KAGV,MAAM,IAAI3W,MAAO6U,6BAEzB,CACO,SAASuD,GAAqB7E,GACjC,IAAM6D,EAAa7D,EAAGqD,KACtB,GAAkB,MAAdQ,EACA,OAAOG,GAAQH,GAGf,MAAM,IAAIpX,MAAO6U,6BAEzB,CA2BO,SAASwD,KACZ,OAAOL,IACX,CACO,SAAStR,GAAKpI,EAAGiV,GACpB,OAAO0E,GAAyB3Z,EAAGiV,EACvC,CACO,SAAS+E,GAAUha,GACtB,OAAO2Z,GAAyB3Z,EAAG0Z,KACvC,CACO,SAASO,GAAQhF,GACpB,OAAO2E,GAAwB3E,EACnC,CAIO,SAASoD,GAAKpD,GACjB,OAAO4E,GAAqB5E,EAChC,CASO,SAASqD,GAAKrD,GACjB,OAAO6E,GAAqB7E,EAChC,CA8DO,SAASkB,GAAQlB,GACpB,IAAMlR,EAAmC,EAzJtC,SAAgCkR,GAgBnC,OAAqB,EAfR,SAACkE,EAAOV,GACX,OAAa,CACf,IAAM/V,EAAIyW,EACJL,EADkBL,EACAH,KACxB,GAAkB,MAAdQ,EAMA,OAAW,EAAJpW,EALPyW,EAASzW,EAAI,EACb+V,EAAWQ,GAAQH,EAO3B,CACJ,CACOH,CAAK,EAAG1D,EACnB,CAwIgBiF,CAAuBjF,GAC7BkF,EAAM1D,GAAK,IAAIxW,MAAM8D,GAAM,EAAGA,EAAK,MAczC,OAba,SAACoV,EAAOV,GACX,OAAa,CACf,IAAM/V,EAAIyW,EAAOP,EAAOH,EACxB,GAAKmB,GAAwBhB,GAM7B,MALIhB,GAAQuC,EAAKzX,EAAGmX,GAAqBjB,IACrCO,EAASzW,EAAI,EACb+V,EAAWqB,GAAqBlB,EAIxC,CACJ,CACAD,CAAK,EAAG1D,GACDkF,CACX,CACO,SAASnD,GAAKC,EAAQC,EAAOjC,GAGhC,IAFA,IAAI6C,EAAMZ,EACN0B,EAAO3D,GACH2E,GAAwBhB,IAC5Bd,EAAMb,EAAOa,EAAKO,GAAKO,IACvBA,EAAOkB,GAAqBlB,GAEhC,OAAOd,CACX,CACO,SAASsC,GAAQnF,GACpB,OAAO+B,IAAK,SAACc,EAAK9X,GAAC,OAAK2Z,GAAyB3Z,EAAG8X,EAAI,GAAE4B,KAAwBzE,EACtF,CAoFO,SAASoF,GAAgBpF,EAAIqF,GAEhC,IADA,IAAIH,EAAMG,EACD5X,EAAIuS,EAAGtS,OAAS,EAAGD,GAAK,EAAGA,IAChCyX,EAAMR,GAAyBY,GAAO7X,EAAGuS,GAAKkF,GAElD,OAAOA,CACX,CACO,SAASK,GAAQvF,GACpB,OAAOoF,GAAgBpF,EAAIyE,KAC/B,CAmFO,SAASe,GAAOxF,EAAIyF,GACvB,OAAO1D,IAAK,SAACc,EAAK9X,GAAC,OAAK2Z,GAAyB3Z,EAAG8X,EAAI,GAAE4C,EAAIN,GAAQnF,GAC1E,C,q5BCjhBO,SAAS0F,KACZ,MAAM,IAAIjZ,MAV0B,8CAWxC,CACO,SAASkZ,KACZ,MAAM,IAAIlZ,MAd+B,gCAe7C,CACO,IAAMmZ,GAAc,WAGtB,OAAA7Z,IAFD,SAAA6Z,EAAYxT,GAAGnG,GAAA,KAAA2Z,GACX1Z,KAAKkG,EAAIA,CACb,GAAC,EAAAhG,IAAA,WAAAC,MACD,WACI,IACIoB,EAAI,EACJuF,EAAM,QACJrG,EAAID,EAHCR,MAIX,IACI,KAAQuB,EAAI,GAAMd,EAAE,8CACZc,EAAI,IACJuF,GAAa,MAEjBA,GAAarF,EAAShB,EAAE,2DACxBc,EAAMA,EAAI,EAAK,EAKnB,OAHU,IAANA,IACAuF,GAAa,SAEVA,EAAM,GACjB,CAAC,QAEG5H,EAAYuB,EAChB,CACJ,GAAC,CAAAP,IAAA,gBAAAC,MACD,WAEI,OADUH,KACDkG,GACb,GAAC,CAAAhG,IACAS,OAAOC,SAAQT,MAAhB,WACI,OAAOU,EAAWL,EAAcR,MACpC,GAAC,CAAAE,IACD,+CAA8CC,MAA9C,WAEI,OADUH,KACDkG,GACb,IAAC,CApCsB,GA4CdyT,GAA0B,WAKlC,OAAA9Z,IAJD,SAAA8Z,EAAY1Z,EAASI,EAAMuZ,GAAS7Z,GAAA,KAAA4Z,GAChC3Z,KAAKC,QAAUA,EACfD,KAAKK,KAAOA,EACZL,KAAK4Z,QAAUA,CACnB,GAAC,EAAA1Z,IACD,uDAAsDC,MAAtD,WAEI,OADUH,KACDC,SACb,GAAC,CAAAC,IACD,6CAA4CC,MAA5C,WAEI,OADUH,KACDC,SACb,GAAC,CAAAC,IACD,0CAAyCC,MAAzC,WAEI,OADUH,KACDK,MACb,GAAC,CAAAH,IACD,uCAAsCC,MAAtC,YAvEG,WACH,MAAM,IAAII,MAFsB,6CAGpC,CAsEQsZ,EACJ,GAAC,CAAA3Z,IAAA,UAAAC,MACD,WACcH,KACR4Z,SACN,IAAC,CAxBkC,GA6BhC,SAASE,GAA0C7Z,EAASI,EAAMuZ,GACrE,OAAO,IAAID,GAA2B1Z,EAASI,EAAMuZ,EACzD,CA6GO,SAASG,GAA6BC,EAAOC,EAASC,GACzD,IAAIC,GAAU,EACVC,OAAOpZ,EACP+U,EAAQhB,GAAKiF,KACXJ,EAAU,WACZ,GAAa,MAAT7D,EAAe,CACf,IAAMsE,EAAMvC,GAAQ/B,GACpB,IACImE,EAAOG,EACX,CAAC,QAEGtE,OAAQ/U,CACZ,CACJ,CACJ,EACMsZ,EAAS,WACX,IACIV,GACJ,CAAC,QAEGQ,OAAOpZ,CACX,CACJ,EACA,OAAO8Y,IAA0C,WAI7C,OAHKK,GACDX,KAEQ,MAARY,EACOtC,GAAQsC,GAGRX,IAEf,IAAG,WAIC,GAHKU,IACDA,GAAU,GAED,MAATpE,EAAe,CACf,IACI6B,EADElV,EAAIoV,GAAQ/B,GAElB,IACI6B,EAAeqC,EAAQvX,EAC3B,CACA,MAAOiV,GAEH,MADA2C,IACM3C,CACV,CACA,OAAoB,MAAhBC,GACAwC,EAAOxC,GACA,IAGP0C,KACO,EAEf,CAEI,OAAO,CAEf,GAAGV,EACP,CAmCO,SAASW,GAAMrU,GAClB,OA/OG,SAAuCA,GAC1C,OAAO,IAAIwT,GAAexT,EAC9B,CA6OWsU,CAA8BtU,EACzC,CACO,SAASuU,GAAM3G,GAElB,OAVyB4G,EASZ,SARF,MAQY5G,GC9QpB,SAA2BjV,GAC9B,MAAM,IAAI0B,MAAM1B,EACpB,CDqQQ8b,CAAkBD,GAQfla,EAAcsT,GAVlB,IAAsB4G,CAW7B,CACO,SAASE,GAAMC,GAClB,OAAON,IAAM,kBAAM/Z,EAAcqa,IAAY,GACjD,CAOO,SAASjC,KACZ,OAAOgC,IAAM,kBAAO,IAAI9b,MAAM,EAAE,GACpC,CACO,SAAS+Z,GAAUha,GACtB,OAAO+b,IAAM,kBFlHV,SAAmBza,GACtB,IAAM2a,EAAKzF,QEiHQ0F,EFjH4B,GAE/C,OADApF,GAAUmF,EAAI,EAAG3a,GACV2a,CACX,CE8GuBC,CAAYlc,EAAE,GACrC,CAgBO,SAASmc,GAAOlH,GACnB,OAAIlV,EAAYkV,GACLmH,GAAUnH,GAEZA,aAAckD,GACZlD,EDsHR,SAAeA,GAClB,IAAIoH,EAAMhD,EACV,GAAItZ,EAAYkV,GACZ,OAAOuF,GAAQvF,GAEd,GAAIA,aAAckD,GACnB,OAAOlD,EAGP,IAAMqH,EAAO5C,KACT6C,EAAOD,EACLE,EAAa7a,EAAcsT,GACjC,IACI,KAAOuH,EAAW,8CAA8C,CAC5D,IAAMxc,EAAIwc,EAAW,0DACZH,EAAOE,EAAOlD,EAAK,IAAIlB,GAAWnY,OAAGmC,GAAcka,EAAK/D,KAAOe,EAAxEkD,EAA2ElD,CAC/E,CACJ,CAAC,QAEGhZ,EAAYmc,EAChB,CACA,IAAMC,EAAOF,EACPG,EAAMhD,KAEZ,OADA+C,EAAKnE,KAAOoE,EACL5C,GAAqBwC,EAEpC,CC7IeK,CAAQ1H,EAEvB,CAaO,SAASwF,GAAOxF,EAAIyF,GACvB,OAnDmBkC,EAmDL,CAAC3H,EAAIyF,GAlDZgB,IAAM,kBAjNV,SAA2BkB,GAC9B,IAAIC,OAAW1a,EACX2a,OAAW3a,EACXmZ,GAAU,EACVyB,GAAW,EACXxB,OAAOpZ,EACLsZ,EAAS,WAEX,GADAsB,GAAW,EACK,MAAZD,EAAkB,CAClB,IAAME,EAAQ/D,GAAQ6D,GACtB,IACIzc,EAAY2c,EAChB,CAAC,QAEGF,OAAW3a,CACf,CACJ,CACA,GAAgB,MAAZ0a,EAAkB,CAClB,IAAMI,EAAQhE,GAAQ4D,GACtB,IACIxc,EAAY4c,EAChB,CAAC,QAEGJ,OAAW1a,CACf,CACJ,CACJ,EACA,OAAO8Y,IAA0C,WAO7C,OANKK,EAGIyB,GACLnC,KAHAD,KAKQ,MAARY,EACOtC,GAAQsC,GAGRX,IAEf,IAAG,WAKC,GAHKU,IACDA,GAAU,GAEVyB,EACA,OAAO,EAIP,IADA,IAAI5C,OAAMhY,EACI,MAAPgY,GAAa,CAChB,IAAM+C,EAAaL,EAEnB,GAAkB,MAAdK,EACA,GAAkB,MAFHJ,EAES,CACpB,IAAMK,EAAUlE,GAHL6D,GAIX,GAAIK,EAAQ,6CACR5B,EAAOrF,GAAKiH,EAAQ,2DACpBhD,GAAM,OAGN,IACI9Z,EAAY8c,EAChB,CAAC,QAEGL,OAAW3a,CACf,CAER,KACK,CACD,IAAMib,EAAUnE,GAAQiE,GACxB,GAAIE,EAAQ,6CAA8C,CACtD,IAAMC,EAAKD,EAAQ,0DACnBN,EAAgCnb,EAAJ0b,EAChC,MAEI5B,IACAtB,GAAM,CAEd,MAGA0C,EAAWlb,EAAcib,EAEjC,CACA,OAAO3D,GAAQkB,EAEvB,IAAG,WACM4C,GACDtB,GAER,GACJ,CAqHuB6B,CAAkBV,EAAQ,IAD1C,IAAgBA,CAoDvB,CA2CO,SAASW,GAASjc,EAAO2T,EAAIuI,GAChC,IAAM5b,EAAIga,GAAM3G,GAChB,IAEI,IADA,IAAIwI,GAAQ,GACJA,GAAS7b,EAAE,8CACf6b,EAAQD,EAASjY,OAAOjE,EAAOM,EAAE,2DAErC,OAAO6b,CACX,CAAC,QAEGpd,EAAYuB,EAChB,CACJ,CAgNO,SAASoV,GAAKC,EAAQC,EAAOjC,GAChC,IAAMrT,EAAIga,GAAM3G,GAChB,IAEI,IADA,IAAI6C,EAAMZ,EACHtV,EAAE,8CACLkW,EAAMb,EAAOa,EAAKlW,EAAE,2DAExB,OAAOkW,CACX,CAAC,QAEGzX,EAAYuB,EAChB,CACJ,CA4HO,SAAS8b,GAAQC,EAAQ1I,GAC5B+B,IAAK,SAAC4G,EAAS5d,GACX2d,EAAO3d,EACX,QAAGmC,EAAW8S,EAClB,CAuEO,SAASjQ,GAAIsR,EAASrB,GACzB,OAzeqB4I,EAyeL,kBAAMjC,GAAM3G,EAAG,EAzeFmG,EAyeI,SAACxZ,GAAC,OAAMA,EAAE,6CAA+CsU,GAAKI,EAAQ1U,EAAE,iEAA8DO,CAAS,EAze1I4Y,EAye6I,SAAC+C,GAChLzd,EAAYyd,EAChB,EA1eOpC,IAAM,kBAAMR,GAA6B2C,EAAQzC,EAASL,EAAQ,IADtE,IAAkB8C,EAAQzC,EAASL,CA4e1C,CACO,SAASgD,GAAWzH,EAASrB,GAChC,OA3e4B4I,EA2eL,kBAAMjC,GAAM3G,EAAG,EA3eFmG,EA2eI,SAAC1Y,EAAGd,GAAC,OAAMA,EAAE,6CAA+CsU,GAAKI,EAAQ5T,EAAGd,EAAE,iEAA8DO,CAAS,EA3ehJ4Y,EA2emJ,SAAC+C,GAC7Lzd,EAAYyd,EAChB,EA5eOpC,IAAM,WACT,IAAIhZ,GAAK,EACT,OAAOwY,GAA6B2C,GAAQ,SAAC7d,GAEzC,OAAOob,EADP1Y,EAAMA,EAAI,EAAK,EACG1C,EACtB,GAAG+a,EACP,IAPG,IAAyB8C,EAAQzC,EAASL,CA8ejD,CE/mBO,ICjOIiD,GDiOEC,GAAmBC,GEpNnBC,GCCoB,SAACC,EAAeC,IAC7CC,EAAAA,GAAAA,YAAe,WACX,IAAMC,EAAaH,IACnB,OAAO,WACHG,EAAWje,SACf,CACJ,GAAG+d,EACP,EDwDO,SAASG,GAAgCzD,GAC5C,MAAO,CACHza,QAAO,WACHya,GACJ,EAER,CAYO,SAAS0D,GAA6BC,EAAQC,GACjD,IAAMpL,EAAMmL,EACZ,OAAOT,GAAiBW,WAAWrL,EAAKoL,EAC5C,CAuEO,SAASE,GAAgCC,GAC5C,IAAMC,EAAad,GAAiBe,QAAO,IA+FxC,SAAqCF,GACxCX,IAA+B,SAACjG,GAE5B,OADA4G,IACON,IAAgC,WACvC,GACJ,GA5FG,GA6FP,CApGIS,EAA4B,WACpBF,EAAW3d,UAGX2d,EAAW3d,SAAU,EACrB0d,IAER,GACJ,CA0HO,SAASI,GAAqBC,GACjC,OAAOlB,GAAiBe,OAAOG,EACnC,CAoLO,SAASC,GAAiCC,GAC7C,IAjM0CC,EACpCC,EAlJwCT,EC3HnBV,ED6crBoB,EAAwBN,GAAqBG,GAC7CI,GAlMoCH,EAkMQ,SAAC/L,GAAG,OAAKiM,EAAsBpe,QAAQmS,EAAI,EAjMvFgM,EAAiBnJ,GAiMwE,GAjM/C,IACzC6H,GAAiByB,YAAYJ,EAAkBC,IAoMtD,OAvV8CT,EAoVZ,WAC9BU,EAAsBpe,QAAUie,CACpC,ECjd2BjB,ED4HE,SAAClG,GAE1B,OADA4G,IACON,IAAgC,WACvC,GACJ,GC/HAmB,EAAAA,GAAAA,kBAAqB,WACjB,IAAMpB,EAAaH,IACnB,OAAO,WACHG,EAAWje,SACf,CACJ,ID4cOmf,CACX,CAqGO,SAASG,GAA2CC,GACvD,OAAO5B,GAAiB6B,SAASD,EACrC,C,ogCDhjBA,SAASE,GAASC,EAAUC,GACxB,OAAQA,GACJ,KAAK,EAAG,OAAOD,EAAW,CAAC,EAAG,KAAO,EAAE,IAAK,KAC5C,KAAK,GAAI,OAAOA,EAAW,CAAC,EAAG,OAAS,EAAE,MAAO,OACjD,KAAK,GAAI,OAAOA,EAAW,CAAC,EAAG,YAAc,EAAE,WAAY,YAC3D,QAAS,MAAM,IAAIte,MAAM,qBAEjC,CAkEO,SAASwO,GAASjI,EAAKiY,EAAOF,EAAUC,EAAS9P,GACpD,IAEI,OADAA,EAASC,SAnBV,SAAenI,EAAKiY,EAAOF,EAAUC,GACxC,IAAM9F,EAdH,SAAiBlS,EAAKiY,EAAO7c,GAChC,IACM8W,EADe,8CACIhL,KAAKlH,EAAI8F,QAAQ,KAAM,KAChD,GAAW,MAAPoM,EAAa,CACb,IAAAgG,EAAA3X,GAA8C2R,EAAG,GAArBiG,EAAMD,EAAA,GAAEE,EAAMF,EAAA,GAC1C9c,EAAQA,GArBT,SAAkB+c,EAAQF,GAC7B,GAAIA,EAAQlC,GAAasC,kBACrB,OAAO,GAGP,OAAQF,GACJ,IAAK,KACL,IAAK,KAAM,OAAO,EAClB,IAAK,KACL,IAAK,KAAM,OAAO,EAClB,IAAK,KACL,IAAK,KAAM,OAAO,GAClB,QAAS,OAAO,GAG5B,CAMyBG,CAASH,EAAQF,GAClC,IAAMM,EAzCd,SAA0Bnd,GACtB,OAAQA,GACJ,KAAK,EAAG,MAAO,SACf,KAAK,EAAG,MAAO,SACf,KAAK,GAAI,MAAO,SAChB,KAAK,GAAI,MAAO,eAChB,QACI,MAAM,IAAI3B,MAAM,iBAE5B,CAgC8B+e,CAAiBpd,GACvC,IAAKmd,EAAcE,KAAKL,GACpB,OA5DZ,SAAuBM,EAAYtd,GAC/B,IAAAud,EAAApY,GAAyCmY,EAAU,GACnD,MAAO,CACHhU,KAFiBiU,EAAA,IAEH,GACdR,OAHyBQ,EAAA,IAGP,GAClBP,OAJiCO,EAAA,GAKjCvd,MAAAA,EAER,CAoDmBwd,CAAc1G,EAAK9W,EAElC,CACA,OAAO,IACX,CAEgByd,CAAQ7Y,EAAKiY,OAkBDnQ,GAjBxB,GAAW,MAAPoK,EAAa,CACb,IAAIlV,EAAI+M,OAAOnF,SAASsN,EAAIxN,KAAOwN,EAAIkG,OAAQlG,EAAI9W,OACnD,IAAK2O,OAAO/C,MAAMhK,GAAI,CAClB,IAA4C8b,EAAAvY,GAAvBuX,IAAS,EAAME,GAAQ,GAArCe,EAAID,EAAA,GAAEE,EAAIF,EAAA,IACZf,GAA0B,KAAd7F,EAAI9W,OAAgB4B,GAAK+b,GAAQ/b,GAAKgc,IACnDhc,EAAIA,GAAM,GAAKgb,GAAa,GAAKA,GAErC,IAA8CiB,EAAA1Y,GAA3BuX,GAASC,EAAUC,GAAQ,GAAvCkB,EAAGD,EAAA,GAAEE,EAAGF,EAAA,GACf,GAAIjc,GAAKkc,GAAOlc,GAAKmc,EACjB,OAAOnc,CAEf,CACJ,CACA,MAAM,IAAIvD,MAAM,oBAADqH,OAAqBd,EAAG,iCAC3C,CAG4B8H,CAAM9H,EAAKiY,EAAOF,EAAUC,IACzC,CACX,CACA,MAAAoB,GACI,OAAO,CACX,CACJ,CGlGO,SAASC,GAAqClB,EAAQnY,GACzD,OAA4B,IAAxBA,EAAIiB,QAAQkX,GACLnY,OAGP,CAER,CAEO,SAASsZ,GAAqCC,EAAQvZ,GACzD,OZiVG,SAAkBA,EAAKwZ,GAC1B,IAAMC,EAAMzZ,EAAI0Z,YAAYF,GAC5B,OAAOC,GAAO,GAAKA,IAAQzZ,EAAItF,OAAS8e,EAAO9e,MACnD,CYpVQif,CAAS3Z,EAAKuZ,GACPvZ,OAGP,CAER,CAiFO,SAAS4Z,GAAyBC,EAAMC,GAC3C,OPkbG,SAAiBzL,EAASrB,GAK7B,IAJA,IAAI2D,EAAMS,EACJiD,EAAO5C,KACT6C,EAAOD,EACP5B,EAAKzF,GACD2E,GAAwBc,IAAK,CAEjC,IADA,IAAIsH,EAAK1L,EAAQuD,GAAqBa,KAC9Bd,GAAwBoI,IACnBpJ,EAAO2D,EAAOlD,EAAK,IAAIlB,GAAW0B,GAAqBmI,QAAK7f,GAAcyW,EAAKN,KAAOe,EAA/FkD,EAAkGlD,EAClG2I,EAAKlI,GAAqBkI,GAE9BtH,EAAKZ,GAAqBY,EAC9B,CACA,IAAM2B,EAAOE,EACPG,EAAMhD,KAEZ,OADA2C,EAAK/D,KAAOoE,EACL5C,GAAqBwC,EAChC,COncW2F,EAAQ,SAACC,GACZ,GZgRkB,iBADSja,EY/QJia,IZgRO,QAAQxB,KAAKzY,GY/QvC,OAAO8R,KAGP,IAAMoI,EZ4YX,SAAiBla,GAAe,QAAAma,EAAAra,UAAApF,OAAP0f,EAAK,IAAApiB,MAAAmiB,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAALD,EAAKC,EAAA,GAAAva,UAAAua,GACjC,OAAwB,IAAjBD,EAAM1f,OACPsF,EAAIsa,UACJta,EAAI8F,QAAQ,IAAI2H,OAAO,IAAMxD,GAAOmQ,EAAM5Z,KAAK,KAAO,OAAQ,GACxE,CYhZ8B8Z,CAAQL,EAAS,KACnC,GAAkB,MAAdC,EACA,OAAOpI,KAEN,GAA4D,MAAxDuH,GAAqC,IAAKa,GAC/C,OAAOnI,GAAUmI,GAGjB,IAAMrJ,EAAaqJ,EAAU5S,MAAM,KACnC,GAAK+H,IAAW,SAACtX,EAAGS,GAAC,OAAMT,IAAMS,CAAC,GAAGqY,EjBjG1C,OiBiG6F,IAAtBA,EAAWnW,OAIxE,IAAK2U,IAAW,SAACkE,EAAKgH,GAAG,OAAMhH,IAAQgH,CAAG,GAAG1J,EjBrGvD,OiBqG0G,IAAtBA,EAAWnW,OAYtF,OAAOoX,KAXP,GAA4B,KAAxBpC,GAAK,EAAGmB,GAAoB,CAC5B,IAAMG,EAAUtB,GAAK,EAAGmB,GACxB,OAAOkB,GAAUyI,mBAAmBxJ,GACxC,CAEI,IAAMyJ,EAAU/K,GAAK,EAAGmB,GAClB6J,EAAQhL,GAAK,EAAGmB,GACtB,OAAO0B,GAAQ,CAACiI,mBAAmBC,GAAU,IAAMC,GAK3D,CAhBI,IZiQe1a,EYjQT3G,EAAQqW,GAAK,EAAGmB,GACtB,OAAOkB,GAAUyI,mBAAmBnhB,GAkBpD,GAAGkZ,GAAQjL,GAA0D,MAAnD+R,GAAqC,IAAKQ,GAAiBhV,GAAUgV,EAAM,EAAGA,EAAKnf,OAAS,GAAgB,IAATof,GAAmE,MAAnDR,GAAqC,IAAKO,IAA4E,MAApDP,GAAqC,KAAMO,GAA+BA,EAAjF,GAAwF,CAAC,UAAM3f,EAAW,IAC9S,C,0lGHpJA,SAAW6b,GAWPA,EAAaA,EAAgC,kBAAI,KAAO,mBAW3D,CAtBD,CAsBGA,KAAiBA,GAAe,CAAC,ICoB7B,SAAiC4E,EAAela,EAAMma,GACzD,IAAMC,EAAkB7E,GAAiB8E,KAAKH,EAAepb,EAAS4O,GAAWpR,GAAI4C,EAAQib,GfbtF,QecPnF,IAAQ,SAACsF,GACLJ,EAAcK,YAAcD,CAChC,GAAG7M,GAAQzN,GAKf,CA2UWwa,EEpO6C,SAACpU,GACrD,IF6B6CgQ,EACvCqE,EACApE,EACAqE,EEhCAC,EAAWjE,IAAiC,SAACkE,GAC/C,IAAMC,EAAanN,GAAWtH,EAAM0U,cAAc,SAACliB,GACnD,KAPD,SAAkCmiB,EAAWF,GACzCA,EAAW1B,GAAwC,IAAd4B,EAAoBC,OAAOC,SAASC,SAAWF,OAAOC,SAASlC,OAAUiC,OAAOC,SAASE,KAAMJ,GAC/I,CAMQK,CAAyB1N,GAAWtH,EAAMiV,SAAU,GAAIR,EAC5D,IFyB6CzE,EExBZ,WAQ7B,OAPM4E,OAAOM,UAAUC,UAAW/a,QAAQ,YAAc,GAAcwa,OAAOM,UAAUC,UAAW/a,QAAQ,SAAW,EACjHwa,OAAOQ,iBAAiB,aAAcb,GAGtCK,OAAOQ,iBAAiB,WAAYb,GAExCK,OAAOQ,iBAAiB,0BAA2Bb,GAC5C7E,IAAgC,WAC7BkF,OAAOM,UAAUC,UAAW/a,QAAQ,YAAc,GAAcwa,OAAOM,UAAUC,UAAW/a,QAAQ,SAAW,EACjHwa,OAAOS,oBAAoB,aAAcd,GAGzCK,OAAOS,oBAAoB,WAAYd,GAE3CK,OAAOS,oBAAoB,0BAA2Bd,EAC1D,GACJ,EFQMF,EAAclF,GAAiBe,YAAO7c,GACtC4c,EAAad,GAAiBe,QAAO,GACrCoE,EAAoBnF,GAAiBe,QAAO,GAC9CD,EAAW3d,UACXgiB,EAAkBhiB,SAAU,GA1E7B,SAAqC0d,EAAQsF,GAChDjG,GAA+BW,EAAQsF,EAC3C,CA0EIC,EAA4B,WACxB,IAAIC,EASJ,OARIvF,EAAW3d,QACXkjB,OAAgBniB,GAGhB4c,EAAW3d,SAAU,EACrB+hB,EAAY/hB,QAAU8U,GAAK4I,KAC3BwF,EAAiBlB,EAAkBhiB,QAAU+hB,EAAY/hB,aAAUe,GAEhE,CACH7B,QAAO,WACHod,IAAQ,SAAC5P,GAELzN,EADmByN,EAEvB,GAAGqI,GAAQmO,GACf,EAER,GAAG,IE/BHzF,IAAgC,WAC5B,IAAM0F,EAAOC,SAASC,YAAY,eAClCF,EAAKG,UAAU,2BAA2B,GAAM,GAChDhB,OAAOiB,cAAcJ,EACzB,IACA,IAAMzL,EAAahK,EAAM8V,YACzB,OAAsB,MAAd9L,EjB1JD,KiB0JuCA,CAClD,QFqM2C3W,EAAW6T,GADA6M,WACkB7M,GAD3B6O,YG3XtC,IAeMC,GAAQ,WAShB,O,EARD,SAAAA,EAAYC,EAAUC,EAAUC,EAAWC,EAAQre,EAAQgC,EAAOsc,I,6FAAWjkB,CAAA,KAAA4jB,GACzE3jB,KAAK4jB,SAAWA,EAChB5jB,KAAK6jB,SAAWA,EAChB7jB,KAAK8jB,UAAYA,EACjB9jB,KAAK+jB,OAASA,EACd/jB,KAAK0F,OAASA,EACd1F,KAAK0H,MAAQA,EACb1H,KAAKgkB,UAAYA,CACrB,G,EAAC,EAAA9jB,IAAA,WAAAC,MACD,WACI,OAAO8jB,GAASjkB,KACpB,GAAC,CAAAE,IAAA,cAAAC,MACD,WACI,OAAO+jB,GAAYlkB,KACvB,GAAC,CAAAE,IAAA,SAAAC,MACD,SAAO+H,GACH,OAAO/D,GAAOnE,KAAMkI,EACxB,M,2FAAC,CAlBgB,GAyBd,SAASic,GAAYjM,GACxB,OAAqB,MAAdA,EAAE2L,SAAmB3L,EAAE2L,SAAW,EAC7C,CACO,SAASK,GAAYhM,GACxB,IAAMkM,EAAe3hB,EAAWyV,EAAE0L,UAC5BS,EAAYF,GAAYjM,GAAGrU,IAAIqgB,IACrC,OAAOnhB,EAAiB,CAACqhB,GAAYxc,OAAA0c,GAAKD,IAC9C,CACO,SAASlgB,GAAOogB,EAAIC,GACvB,MAAoB,KAAhBD,EAAGX,SACoB,KAAhBY,EAAGZ,UACH5f,EAAgBygB,GAAkBF,GAAKE,GAAkBD,IAAK,SAAArd,EAAAC,GAAA,IAAAiB,EAAAhB,GAAAF,EAAA,GAAEud,EAAErc,EAAA,GAAEsc,EAAEtc,EAAA,GAAAC,EAAAjB,GAAAD,EAAA,GAAIwd,EAAEtc,EAAA,GAAEuc,EAAEvc,EAAA,UAAMoc,IAAOE,GAAMzgB,GAAOwgB,EAAIE,EAAG,IAGjHN,EAAGX,WAAaY,EAAGZ,UACnB5f,EAAgBmgB,GAAYI,GAAKJ,GAAYK,GAAKrgB,GAEjE,CAIO,SAAS2gB,GAAYlB,EAAUC,EAAUC,EAAWpe,GACvD,OAAO,IAAIie,GAASC,EAAUC,EAAUC,OAAW9iB,EAAW0E,EAClE,CAWO,SAASqf,KAAwB,QAAAzR,EAAA1M,UAAApF,OAAVqiB,EAAQ,IAAA/kB,MAAAwU,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAARqQ,EAAQrQ,GAAA5M,UAAA4M,GAClC,OAAO,IAAImQ,GAAS,gBAAkBE,EAASriB,OAAQqiB,EAC3D,CAOO,SAASmB,GAAYC,GACxB,OAAO,IAAItB,GAAS,uCAAwC,CAACsB,GACjE,CAIO,SAASC,GAAWD,GACvB,OAAO,IAAItB,GAAS,KAAM,CAACsB,GAC/B,CAUO,IAAME,GAAW,IAAIxB,GAAS,iBAGxByB,IAFY,IAAIzB,GAAS,8BACb,IAAIA,GAAS,eACX,IAAIA,GAAS,kBAC3B0B,GAAY,IAAI1B,GAAS,kBAKzB2B,IAJY,IAAI3B,GAAS,gBACZ,IAAIA,GAAS,eACb,IAAIA,GAAS,gBACZ,IAAIA,GAAS,iBACd,IAAIA,GAAS,iBAahC,SAASpc,GAAKge,GACjB,GAAIzmB,MAAMC,QAAQwmB,GACd,OAAOA,EAAK,GAEX,GAAIA,aAAgB5B,GAAU,CAC/B,IAAM6B,EAAWC,GAAeF,GAChC,GAAgB,MAAZC,EACA,OAAOje,GAAKie,GAAY,KAGxB,IAAMjkB,EAAIgkB,EAAK3B,SAASpD,YAAY,KACpC,OAAc,IAAPjf,EAAWgkB,EAAK3B,SAAW2B,EAAK3B,SAASjP,OAAOpT,EAAI,EAEnE,CAEI,OAAOgkB,EAAKhe,IAEpB,CACO,SAAS0c,GAAS/L,GACrB,IAAMsN,EAAWC,GAAevN,GAChC,OAAgB,MAAZsN,EACOvB,GAASuB,GAAY,KAET,MAAdtN,EAAE2L,UAA0C,IAAtB3L,EAAE2L,SAASriB,OAC/B0W,EAAE0L,SAGF1L,EAAE0L,SAAW,IAAM1L,EAAE2L,SAAShgB,KAAI,SAAChF,GAAC,OAAKolB,GAASplB,EAAE,IAAEyI,KAAK,KAAO,GAEjF,CAWO,SAASvI,GAAQmZ,GACpB,OAA4B,MAArBuN,GAAevN,EAC1B,CACO,SAASuN,GAAevN,GAAG,IAAAwN,EAC9B,MAAsB,OAAfxN,EAAE0L,UAA4C,KAAb,QAAV8B,EAAAxN,EAAE2L,gBAAQ,IAAA6B,OAAA,EAAVA,EAAYlkB,QAAe0W,EAAE2L,SAAS,QAAK7iB,CAC7E,CACO,SAAS2kB,GAAczN,GAC1B,OAAqB,MAAdA,EAAE2L,UAAoB3L,EAAE2L,SAASriB,OAAS,CACrD,CAIO,SAASokB,GAAO1N,GACnB,OAAsB,MAAfA,EAAE8L,WAAqB9L,EAAE8L,UAAUxiB,OAAS,CACvD,CAkDO,SAASqkB,GAAyB3N,GACrC,OAAqB,MAAdA,EAAE2L,SAAmB3L,EAAI,IAAIyL,GAASzL,EAAE0L,SAAU1L,EAAE2L,SAAShgB,KAAI,kBAAMshB,EAAQ,IAC1F,CACO,SAASW,GAAsB5N,GAAG,IAAA6N,EACrC,OAAiB,QAAjBA,EAAO7N,EAAE2L,gBAAQ,IAAAkC,OAAA,EAAVA,EAAa,EACxB,CACO,SAASC,GAAc9N,GAC1B,GAAI0N,GAAO1N,IAAqB,MAAfA,EAAE8L,UACf,OAAO9L,EAAE8L,UAAUngB,KAAI,SAACmC,GAAE,OAAKA,EAAG,EAAE,IAGpC,MAAM,IAAIzF,MAAM,GAADqH,OAAIsQ,EAAE0L,SAAQ,wBAErC,CAiCO,SAASqC,GAAU/N,EAAGpR,GAEzB,IAAM3G,EAAQuL,SAAS5E,EAAK,IAC5B,OA3BJ,SAAqBoR,EAAGpU,GACpB,GAAmB,MAAfoU,EAAE8L,UAAmB,CACrB,GAAiB,iBAANlgB,EAAgB,KACK6B,EADLE,EAAAC,GACNoS,EAAE8L,WAAS,IAA5B,IAAAne,EAAAnD,MAAAiD,EAAAE,EAAAE,KAAAzF,MAA8B,KAAnB0F,EAAEL,EAAAxF,MACT,GAAI6F,EAAG,KAAOlC,EACV,OAAOkC,CAEf,CAAC,OAAAC,GAAAJ,EAAApF,EAAAwF,EAAA,SAAAJ,EAAAK,GAAA,CACD,MAAM,IAAI3F,MAAM,IAADqH,OAAK9D,EAAC,uBAAA8D,OAAsBsQ,EAAE0L,UACjD,CACK,IAC2BsC,EAD3BC,EAAArgB,GACgBoS,EAAE8L,WAAS,IAA5B,IAAAmC,EAAAzjB,MAAAwjB,EAAAC,EAAApgB,KAAAzF,MAA8B,KAAnB0F,EAAEkgB,EAAA/lB,MACT,GAAI6F,EAAG,KAAOlC,EACV,OAAOkC,CAEf,CACA,OAAAC,GAAAkgB,EAAA1lB,EAAAwF,EAAA,SAAAkgB,EAAAjgB,GAAA,CACA,MAAO,CAAC,GAAIpC,EAEpB,CAEI,MAAM,IAAIvD,MAAM,GAADqH,OAAIsQ,EAAE0L,SAAQ,wBAErC,CAIWwC,CAAYlO,EAAGpK,MAAM3N,GAAS2G,EAAM3G,GAAO,EACtD,CAwBO,SAASkmB,GAAcnO,GAC1B,GAAe,MAAXA,EAAExQ,MACF,OAAOwQ,EAAExQ,QAGT,MAAM,IAAInH,MAAM,GAADqH,OAAIsQ,EAAE0L,SAAQ,4BAErC,CACO,SAASa,GAAkBvM,GAC9B,GAAgB,MAAZA,EAAExS,OACF,OAAOwS,EAAExS,SAGT,MAAM,IAAInF,MAAM,GAADqH,OAAIsQ,EAAE0L,SAAQ,6BAErC,CACO,SAAS0C,GAAiBpO,GAC7B,GAAIqO,GAAQrO,IAAoB,MAAdA,EAAE2L,SAChB,OAAO3L,EAAE2L,SAGT,MAAM,IAAItjB,MAAM,GAADqH,OAAIsQ,EAAE0L,SAAQ,wBAErC,CAUO,SAAS4C,GAAQtO,GACpB,OAAOA,aAAayL,GAAsB,MAAXzL,EAAExQ,MAAgBwQ,aAAazQ,CAClE,CACO,SAASgf,GAASvO,GACrB,OAAOA,aAAayL,GAAuB,MAAZzL,EAAExS,OAAiBwS,aAAa/P,CACnE,CACO,SAASoe,GAAQrO,GACpB,OAAOA,EAAE0L,SAAS8C,WAAW,eACjC,CAcO,SAASC,GAAmBC,GAC/B,OAAqB,MAAdA,EAAIlhB,OAAiB,GAAKkhB,EAAIlhB,MACzC,CAgBO,SAASmhB,GAAUD,EAAKhjB,GAC3B,IAAMkjB,GAAkBF,EAAIlhB,QAAU,IAAIlE,OAC1C,GAAIoC,EAAOpC,SAAWslB,EAClB,MAAM,IAAIvmB,MAAM,+BAADqH,OAAgCkf,EAAc,aAAAlf,OAAYhE,EAAOpC,SAEpF,IAAMsiB,EAAY8C,EAAIG,cAAcjD,UACpC,OAAiB,MAAbA,EACO,CAAC,EAES8C,EAAIG,cAAcrf,OAA4C,GAApCkf,EAAIG,cAAcrf,QAAQlG,OAErEwlB,GAAWlD,EAASQ,GAAI1gB,IAGjB,IAAIkgB,EAAU8C,EAAIjf,IAAK/D,EAEtC,C,y7DAvR2B,IAAI+f,GAAS,iBACd,IAAIA,GAAS,gBACZ,IAAIA,GAAS,iBACb,IAAIA,GAAS,iBACZ,IAAIA,GAAS,kBACX,IAAIA,GAAS,iBACZ,IAAIA,GAAS,kBAChB,IAAIA,GAAS,eACb,IAAIA,GAAS,iBACb,IAAIA,GAAS,iBACb,IAAIA,GAAS,kBACd,IAAIA,GAAS,8BC1HjC,IAAMsD,GAAY,SAAAhQ,GACrB,SAAAgQ,EAAYC,EAAUC,EAAUC,GAAS,IAAAhQ,EAId,OAJcrX,GAAA,KAAAknB,IACrC7P,EAAAiQ,GAAA,KAAAJ,IACKC,SAAWA,EAChB9P,EAAK+P,SAAWA,EAChB/P,EAAKgQ,QAAUA,EAAQhQ,CAC3B,CAAC,OAAAC,GAAA4P,EAAAhQ,GAAApX,GAAAonB,EAAA,CANoB,CAAS9e,GAarBmf,GAAa,SAAAC,GACtB,SAAAD,EAAYE,EAAQC,EAASC,GAAU,IAAAC,EAIV,OAJU5nB,GAAA,KAAAunB,IACnCK,EAAAN,GAAA,KAAAC,IACKE,OAASA,EACdG,EAAKF,QAAUA,EACfE,EAAKD,SAAWA,EAASC,CAC7B,CAAC,OAAAtQ,GAAAiQ,EAAAC,GAAA1nB,GAAAynB,EAAA,CANqB,CAASnf,GAS5B,SAASyf,KACZ,OAAO9C,GAAY,sBAAuB,GAAIwC,IAAe,iBAAM,CAAC,CAAC,SAAUlC,IAAc,CAAC,UAAWA,IAAc,CAAC,WAAYJ,GAAYI,KAAc,GAClK,CAEO,IAAMyC,GAAiB,SAAAC,GAC1B,SAAAD,EAAYL,EAAQO,EAAOC,GAAO,IAAAC,EAIX,OAJWloB,GAAA,KAAA8nB,IAC9BI,EAAAZ,GAAA,KAAAQ,IACKL,OAASA,EACdS,EAAKF,MAAQA,EACbE,EAAKD,MAAQA,EAAMC,CACvB,CAAC,OAAA5Q,GAAAwQ,EAAAC,GAAAjoB,GAAAgoB,EAAA,CANyB,CAAS1f,GAShC,SAAS+f,KACZ,OAAOpD,GAAY,0BAA2B,GAAI+C,IAAmB,iBAAM,CAAC,CAAC,SAAUD,MAA8B,CAAC,QAASxC,IAAc,CAAC,QAASA,IAAa,GACxK,CAEO,IAAM+C,GAAgB,SAAAC,GACzB,SAAAD,EAAYE,EAAMC,EAASP,GAAO,IAAAQ,EAIX,OAJWxoB,GAAA,KAAAooB,IAC9BI,EAAAlB,GAAA,KAAAc,IACKE,KAAOA,EACZE,EAAKD,QAAUA,EACfC,EAAKR,MAAQA,EAAMQ,CACvB,CAAC,OAAAlR,GAAA8Q,EAAAC,GAAAvoB,GAAAsoB,EAAA,CANwB,CAAShgB,GAazBqgB,GAAoB,SAAAC,GAC7B,SAAAD,EAAYR,EAAOd,GAAU,IAAAwB,EAGA,OAHA3oB,GAAA,KAAAyoB,IACzBE,EAAArB,GAAA,KAAAmB,IACKR,MAAQA,EACbU,EAAKxB,SAAWA,EAASwB,CAC7B,CAAC,OAAArR,GAAAmR,EAAAC,GAAA5oB,GAAA2oB,EAAA,CAL4B,CAASrgB,GAY7BwgB,GAAe,SAAAC,GACxB,SAAAD,EAAYnB,EAAQC,GAAS,IAAAoB,EAGF,OAHE9oB,GAAA,KAAA4oB,IACzBE,EAAAxB,GAAA,KAAAsB,IACKnB,OAASA,EACdqB,EAAKpB,QAAUA,EAAQoB,CAC3B,CAAC,OAAAxR,GAAAsR,EAAAC,GAAA/oB,GAAA8oB,EAAA,CALuB,CAASxgB,GAQ9B,SAAS2gB,KACZ,OAAOhE,GAAY,wBAAyB,GAAI6D,IAAiB,iBAAM,CAAC,CAAC,SAAUvD,IAAc,CAAC,UAAWA,IAAa,GAC9H,CAEO,IAAM2D,GAAe,SAAAC,GACxB,SAAAD,EAAY7B,EAAUC,EAAUY,GAAO,IAAAkB,EAIhB,OAJgBlpB,GAAA,KAAAgpB,IACnCE,EAAA5B,GAAA,KAAA0B,IACK7B,SAAWA,EAChB+B,EAAK9B,SAAWA,EAChB8B,EAAKlB,MAAQA,EAAMkB,CACvB,CAAC,OAAA5R,GAAA0R,EAAAC,GAAAnpB,GAAAkpB,EAAA,CANuB,CAAS5gB,GAaxB+gB,GAAW,SAAAC,GACpB,SAAAD,EAAYhC,EAAUa,EAAOqB,EAAeC,EAAiBC,EAAiBC,EAAkBC,GAAQ,IAAAC,EAQ/E,OAR+E1pB,GAAA,KAAAmpB,IACpGO,EAAApC,GAAA,KAAA6B,IACKhC,SAAWA,EAChBuC,EAAK1B,MAAQA,EACb0B,EAAKL,cAAgBA,EACrBK,EAAKJ,gBAAkBA,EACvBI,EAAKH,gBAAkBA,EACvBG,EAAKF,iBAAmBA,EACxBE,EAAKD,OAASA,EAAOC,CACzB,CAAC,OAAApS,GAAA6R,EAAAC,GAAAtpB,GAAAqpB,EAAA,CAVmB,CAAS/gB,GAa1B,SAASuhB,KACZ,OAAO5E,GAAY,oBAAqB,GAAIoE,IAAa,iBAAM,CAAC,CAAC,WAAY9D,IAAc,CAAC,QAASA,IAAc,CAAC,gBAAiBC,IAAY,CAAC,kBAAmBA,IAAY,CAAC,kBAAmBA,IAAY,CAAC,mBAAoBA,IAAY,CAAC,SAAUD,IAAa,GAC9Q,CAEO,IAAMuE,GAAO,SAAAC,GAChB,SAAAD,EAAYE,EAAOC,EAAIC,GAAO,IAAAC,EAIP,OAJOjqB,GAAA,KAAA4pB,IAC1BK,EAAA3C,GAAA,KAAAsC,IACKE,MAAQA,EACbG,EAAKF,GAAKA,EACVE,EAAKD,MAAQA,EAAMC,CACvB,CAAC,OAAA3S,GAAAsS,EAAAC,GAAA/pB,GAAA8pB,EAAA,CANe,CAASxhB,GAStB,SAAS8hB,KACZ,OAAOnF,GAAY,gBAAiB,GAAI6E,IAAS,iBAAM,CAAC,CAAC,QAASvE,IAAc,CAAC,KAAMA,IAAc,CAAC,QAASA,IAAa,GAChI,C,uGC/GA,SAAS8E,GAAQpjB,EAAKqjB,GAClB,OAAOrjB,EAAI8F,QAAQ,gBAAgB,SAACmB,GAAC,OAAkB,IAAbA,EAAEvM,OACtCuM,EAAE4E,cACF5E,EAAEqc,OAAO,GAAKD,EAAYpc,EAAEqc,OAAO,GAAGzX,aAAa,GAC7D,CAgBO,SAAS0X,GAAa3kB,GAAmC,IACtDE,EAAM,CAAC,EACP0kB,EAFmC1jB,UAAApF,OAAA,QAAAR,IAAA4F,UAAA,GAAAA,UAAA,GA1BnC,EA6BN,SAASgH,EAAK2c,GACV,MAAM,IAAIhqB,MAAM,iCAAmCiH,OAAO+iB,GAC9D,CACA,SAASC,EAAOtqB,EAAKuqB,EAAUtqB,GAC3BD,EAtBR,SAAoB4G,EAAK2jB,GACrB,OAAQA,GACJ,KAZQ,EAaJ,OAAO3jB,EAAIsjB,OAAO,GAAGzX,cAAgB7L,EAAIuM,MAAM,GACnD,KAbO,EAcH,OAAO6W,GAAQpjB,EAAK,KACxB,KAdc,EAeV,OAAOojB,GAAQpjB,EAAK,KAAKyH,cAC7B,KAfO,EAgBH,OAAO2b,GAAQpjB,EAAK,KAExB,QACI,OAAOA,EAEnB,CAQc4jB,CAAWxqB,EAAKuqB,GACtB7kB,EAAI1F,GAAOC,CACf,CAAC,IACwBwF,EADxBE,E,+4BAAAC,CACkBJ,GAAM,IAAzB,IAAAG,EAAAnD,MAAAiD,EAAAE,EAAAE,KAAAzF,MAA2B,KAAlBiqB,EAAM5kB,EAAAxF,MACPsqB,EArCF,EA0CF,GAJc,MAAVF,GACA3c,EAAK2c,GAGLA,aAAkB9iB,EAAO,CACzB,IAAMF,EAAOgjB,EAAO7iB,QAAQ6iB,EAAO5iB,KACnC4iB,EAAkC,IAAzBA,EAAO7kB,OAAOlE,OAAe+F,EAAO,CAACA,GAAMK,OAAO2iB,EAAO7kB,QAClE+kB,EAAWH,CACf,CACA,GAAIxrB,MAAMC,QAAQwrB,GACd,OAAQA,EAAO/oB,QACX,KAAK,EACDoM,EAAK2c,GACL,MACJ,KAAK,EACDC,EAAOD,EAAO,GAAIE,GAAU,GAC5B,MACJ,KAAK,EACD,IAAMtqB,EAAQoqB,EAAO,GACrBC,EAAOD,EAAO,GAAIE,EAAUtqB,GAC5B,MACJ,QACIqqB,EAAOD,EAAO,GAAIE,EAAUF,EAAOlX,MAAM,QAG1B,iBAAXkX,EACZC,EAAOD,EAAQE,GAAU,GAGzB7c,EAAK2c,EAEb,CAAC,OAAAtkB,GAAAJ,EAAApF,EAAAwF,EAAA,SAAAJ,EAAAK,GAAA,CACD,OAAON,CACX,CAUO,SAAS+kB,GAAY9mB,EAAK3D,EAAKgV,GAClC,QAAIrR,EAAIvB,IAAIpC,KACRgV,EAAajG,SAAWpL,EAAIzC,IAAIlB,IACzB,EAGf,C,y7DCnFO,IAAM0qB,GAAwB,SAAAC,GACjC,SAAAD,EAAYjjB,EAAKjC,GAAQ,IAAA0R,EAGA,OAHArX,GAAA,KAAA6qB,IACrBxT,EAAAiQ,GAAA,KAAAuD,IACKjjB,IAAMA,EACXyP,EAAK1R,OAASA,EAAO0R,CACzB,CAAC,OAAAC,GAAAuT,EAAAC,GAAAhrB,GAAA+qB,EAAA,EAAA1qB,IAAA,QAAAC,MACD,WACI,MAAO,CAAC,SAAU,iBAAkB,kBAAmB,kBAAmB,kBAAmB,gBAAiB,gBAAiB,aAAc,SAAU,iBAAkB,cAAe,eAAgB,OAAQ,SAAU,YAAa,OAAQ,OAAQ,WAAY,oBAAqB,gBAAiB,WAAY,sBAAuB,eAAgB,SAAU,SAAU,sBAAuB,QAAS,UAAW,aAAc,KAAM,aAAc,UAAW,MAAO,UAAW,mBAAoB,MAAO,kBAAmB,mBAAoB,oBAAqB,kBAAmB,yBAA0B,iBAAkB,gBAAiB,mBAAoB,SAAU,eAAgB,SACnrB,IAAC,CARgC,CAASsH,GAejCqjB,GAAuB,SAAAC,GAChC,SAAAD,EAAYnjB,EAAKjC,GAAQ,IAAAiiB,EAGA,OAHA5nB,GAAA,KAAA+qB,IACrBnD,EAAAN,GAAA,KAAAyD,IACKnjB,IAAMA,EACXggB,EAAKjiB,OAASA,EAAOiiB,CACzB,CAAC,OAAAtQ,GAAAyT,EAAAC,GAAAlrB,GAAAirB,EAAA,EAAA5qB,IAAA,QAAAC,MACD,WACI,MAAO,CAAC,SAAU,UAAW,OAAQ,OAAQ,cAAe,QAChE,IAAC,CAR+B,CAASsH,G,skCCdtC,IAAMujB,GAAU,SAAAH,GACnB,SAAAG,EAAYrjB,EAAKjC,GAAQ,IAAA0R,E,MAGA,O,4FAHArX,CAAA,KAAAirB,I,EACrB,K,EAAAA,E,QAAA5T,E,2WACKzP,IAAMA,EACXyP,EAAK1R,OAASA,EAAO0R,CACzB,CAAC,O,sRAAAC,CAAA2T,EAAAH,G,EAAAG,G,EAAA,EAAA9qB,IAAA,QAAAC,MACD,WACI,MAAO,CAAC,yBAA0B,iBAAkB,cAAe,eACvE,M,2FAAC,CARkB,CAASsH,GAezB,SAASwjB,GAAaC,EAAKC,GAC9B,OAAOC,MAAMF,EAAKb,GAAac,EAAM,GACzC,CAEO,SAASE,GAA2BC,EAAMC,GAC7C,OAAY,MAARD,EACOrkB,GAAK,IAAI2jB,GAAyB,GAAI,CAAC,qBAAsBW,GAG7DA,CAEf,CAEO,SAASC,GAAsBC,EAAQC,GAC1C,OAAOzW,GAAWpR,IAAI,SAAC8nB,GAAI,OAAKrS,GAAOoS,EAAYC,EAAK,GAAEF,GAASC,EACvE,C,skCC3BO,IAAME,GAAc,SAAAf,GACvB,SAAAe,EAAYjkB,EAAKjC,GAAQ,IAAA0R,EAGA,O,4FAHArX,CAAA,KAAA6rB,IACrBxU,E,yYAAAiQ,CAAA,KAAAuE,IACKjkB,IAAMA,EACXyP,EAAK1R,OAASA,EAAO0R,CACzB,CAAC,O,sRAAAC,CAAAuU,EAAAf,G,EAAAe,G,EAAA,EAAA1rB,IAAA,QAAAC,MACD,WACI,MAAO,CAAC,KAAM,QAClB,M,8EAAC,CARsB,CAASsH,GAa7B,SAASokB,GAAW1W,EAASxM,GAChC,OAA4B,IAAxBA,EAAOhB,KApBmBmkB,EAqBD3W,EAAQxM,EAAOjD,OAAO,IApB5C,IAAIkmB,GAAe,EAAG,CAACE,MAEGC,EAqBDpjB,EAAOjD,OAAO,GApBvC,IAAIkmB,GAAe,EAAG,CAACG,KAD3B,IAA8BA,EAHHD,CA0BlC,CCvBA,SAASE,GAAY7rB,GACjB,OAAOA,EAAQ,EAAIuK,KAAKuhB,KAAK9rB,GAASuK,KAAKE,MAAMzK,EACrD,CACO,SAASuc,KAA2C,IAApC/P,EAAC/F,UAAApF,OAAA,QAAAR,IAAA4F,UAAA,GAAAA,UAAA,GAAG,EAAGjE,EAACiE,UAAApF,OAAA,QAAAR,IAAA4F,UAAA,GAAAA,UAAA,GAAG,EAAGmH,EAACnH,UAAApF,OAAA,QAAAR,IAAA4F,UAAA,GAAAA,UAAA,GAAG,EAAGlE,EAACkE,UAAApF,OAAA,QAAAR,IAAA4F,UAAA,GAAAA,UAAA,GAAG,EAAGslB,EAAEtlB,UAAApF,OAAA,QAAAR,IAAA4F,UAAA,GAAAA,UAAA,GAAG,EACpD,OAAQA,UAAUpF,QACd,KAAK,EAED,OAYDqP,OAAOP,OAZW1J,UAAU,IAYL,QAX1B,KAAK,EAED+F,EAAI,EAAGhK,EAAIiE,UAAU,GAAImH,EAAInH,UAAU,GAAIlE,EAAIkE,UAAU,GAAIslB,EAAK,EAM1E,OAAW,MAAJvf,EAAmB,KAAJhK,EAAkB,IAAJoL,EAAgB,IAAJrL,EAAWwpB,CAC/D,CAgBO,SAASC,GAAKrc,GACjB,OAAOkc,GAAYlc,EAAK,MAC5B,CA6HO,SAASf,GAASjL,EAAGkL,GACxB,IAEI,OADAA,EAASC,SA/DV,SAAenI,GAClB,IAAMslB,EAAWtlB,EAAIwZ,OAAO,OACtB+L,EAAavlB,EAAIwZ,OAAO,OAC9B,IAAkB,IAAd8L,IAAmC,IAAhBC,EAAmB,CACtC,IAAM1f,EAAIjB,SAAS5E,EAAK,GACxB,GAAIgH,MAAMnB,GACN,MAAM,IAAIpM,MAAM,WAADqH,OAAYd,EAAG,8CAG9B,OAAO4V,GAAO/P,EAAG,EAAG,EAAG,EAAG,EAElC,CACA,GAAI0f,EAAa,EAAG,CAEhB,IAAMC,EAAI,mHAAmHte,KAAKlH,GAClI,GAAS,MAALwlB,GAAqB,MAARA,EAAE,IAAsB,MAARA,EAAE,GAAY,CAC3C,IAAI3f,EAAI,EACJuf,EAAK,EACLxpB,EAAI,EACF8I,EAAe,MAAR8gB,EAAE,IAAuB,MAATA,EAAE,IAAc,EAAI,EAC3C3pB,GAAK2pB,EAAE,GACPve,GAAKue,EAAE,GAOb,GANY,MAARA,EAAE,KACF3f,GAAK2f,EAAE,IAEC,MAARA,EAAE,KACF5pB,GAAK4pB,EAAE,IAEC,MAARA,EAAE,GAEF,OAAQA,EAAE,GAAG9qB,QACT,KAAK,EACD0qB,EAAa,KAAPI,EAAE,GACR,MACJ,KAAK,EACDJ,EAAa,IAAPI,EAAE,GACR,MACJ,KAAK,EACDJ,GAAMI,EAAE,GACR,MACJ,KAAK,EACDJ,GAAMI,EAAE,GAAK,GACb,MACJ,KAAK,EACDJ,GAAMI,EAAE,GAAK,IACb,MACJ,KAAK,EACDJ,GAAMI,EAAE,GAAK,IACb,MACJ,KAAK,EACDJ,GAAMI,EAAE,GAAK,IACb,MACJ,QACI,MAAM,IAAI/rB,MAAM,WAADqH,OAAYd,EAAG,8CAG1C,OAAO0E,EAAOkR,GAAO/P,EAAGhK,EAAGoL,EAAGrL,EAAGwpB,EACrC,CACJ,CACA,MAAM,IAAI3rB,MAAM,WAADqH,OAAYd,EAAG,6CAClC,CAG4B8H,CAAM9K,IACnB,CACX,CACA,MAAAoc,GACI,OAAO,CACX,CACJ,C,0xBCxFO,SAASqM,GAA+B1tB,EAAGgc,GAC9C,MAAO,CACH2R,KAAM,SAACC,EAAInmB,GACP,IACI,OAAOuU,IAAY2R,KAAKC,EAAInmB,EAChC,CACA,MAAOomB,GACH,GAAIvoB,EAAOmC,EzBhEhB,MyBiES,OAAOqmB,QAAQC,OAAOF,GAGtB,IACI,OAAOC,QAAQE,QAAQvmB,EAAGomB,GAC9B,CACA,MAAOI,GACH,OAAOH,QAAQC,OAAOE,EAC1B,CAER,CACJ,EACAC,MAAO,SAAC7mB,GACJ,IACI,OAAO2U,IAAW,MAAO3U,EAC7B,CACA,MAAO8mB,GACH,IACI,OAAOL,QAAQE,QAAQ3mB,EAAE8mB,GAC7B,CACA,MAAOC,GACH,OAAON,QAAQC,OAAOK,EAC1B,CACJ,CACJ,EAER,CAEO,SAASC,GAA6BruB,EAAGsuB,GAC5C,OAAO,IAAIR,SAAQ,SAACS,EAASxf,GACzB,IACgB+e,QAAQE,QAAQM,GACxBX,KAAKY,EAASxf,EACtB,CACA,MAAO8e,GACH9e,EAAK8e,EACT,CACJ,GACJ,C,y7DAnFW,IAVgB7sB,IACvB,SAAAwtB,K,4FAActtB,CAAA,KAAAstB,EACd,KCnCG,IAAMC,GAAaztB,IACtB,SAAAytB,EAAYC,EAAGzpB,GAAG/D,GAAA,KAAAutB,GACdttB,KAAKutB,EAAIA,EACTvtB,KAAK8D,EAAIA,CACb,IAKG,SAAS0pB,GAA2BD,EAAGzpB,GAC1C,OAAO,IAAIwpB,GAAcC,EAAGzpB,EAChC,CACO,SAAS2pB,GAAuBnV,GACnC,OAAOA,EAAEiV,CACb,CACO,SAASG,GAAyBpV,GACrC,OAAOA,EAAExU,CACb,CACO,IAAM6pB,GAAa,SAAAC,GACtB,SAAAD,EAAYJ,EAAGzpB,EAAG+pB,EAAMC,EAAOnrB,GAAG,IAAAyU,EAIb,OAJarX,GAAA,KAAA4tB,IAC9BvW,EAAAiQ,GAAA,KAAAsG,EAAA,CAAMJ,EAAGzpB,KACJ+pB,KAAOA,EACZzW,EAAK0W,MAAQA,EACb1W,EAAKzU,EAAS,EAAJA,EAAOyU,CACrB,CAAC,OAAAC,GAAAsW,EAAAC,GAAA/tB,GAAA8tB,EAAA,CANqB,CAASL,IAW5B,SAASS,GAA8BR,EAAGzpB,EAAG+pB,EAAMC,EAAOnrB,GAC7D,OAAO,IAAIgrB,GAAcJ,EAAGzpB,EAAG+pB,EAAMC,EAAOnrB,EAChD,CACO,SAASqrB,GAAwB1V,GACpC,OAAOA,EAAEuV,IACb,CACO,SAASI,GAAyB3V,GACrC,OAAOA,EAAEwV,KACb,CACO,SAASI,GAA0B5V,GACtC,OAAOA,EAAE3V,CACb,CAIO,SAASwrB,GAAsBC,EAASC,GAC3CF,EAAuB,OAAa,CAChC,IAAMxX,EAAMyX,EACZ,GAAS,MADgBC,EACV,CACX,IAAMC,EAAKxW,GAFUuW,GAGrB,GAAIC,aAAcX,GAAe,CAC7B,IAAMY,EAAKD,EACXF,EAAUD,GAAsBxX,EAAM,EAAGqX,GAAwBO,IACjEF,EAAQJ,GAAyBM,GACjC,SAASJ,CACb,CAEI,OAAQxX,EAAM,EAAK,CAE3B,CAEI,OAAa,EAANA,CAGf,CACJ,CACO,SAAS6X,GAAmB3vB,GAC/B,OAAOsvB,GAAsB,EAAGtvB,EACpC,CACO,SAAS4vB,GAAiBC,EAAGnB,EAAGzpB,EAAGwoB,GACtC,IACIqC,EASAC,EAPJ,GAAS,MADCF,EACK,CACX,IAAMJ,EAAKxW,GAFL4W,GAGNC,EAAOL,aAAcX,GAA4BO,GAAJI,GAAsC,CACvF,MAEIK,EAAK,EAIT,GAAW,MADCrC,EACK,CACb,IAAMuC,EAAO/W,GAFLwU,GAGRsC,EAAOC,aAAgBlB,GAAgCO,GAANW,GAA0C,CAC/F,MAEID,EAAK,EAET,IAAME,EAA8B,GAAtBH,EAAKC,EAAMA,EAAKD,GAC9B,OAAY,IAARG,EACOtB,GAA2BD,EAAGzpB,GAG9BiqB,GAA8BR,EAAGzpB,EAAG4qB,EAAGpC,EAAGwC,EAAM,EAE/D,CACO,SAASC,GAAwBxK,EAAIgJ,EAAGzpB,EAAG0gB,GAC9C,IAAcsK,EAAKE,EAAYC,EAAKC,EAChCC,EASAC,EAPJ,GAAS,MADC7K,EACK,CACX,IAAM+J,EAAKxW,GAFLyM,GAGN4K,EAAQb,aAAcX,GAA4BO,GAAJI,GAAsC,CACxF,MAEIa,EAAM,EAIV,GAAW,MADC3K,EACK,CACb,IAAMqK,EAAO/W,GAFL0M,GAGR4K,EAAQP,aAAgBlB,GAAgCO,GAANW,GAA0C,CAChG,MAEIO,EAAM,EAEV,GAAIA,EAAOD,EAAM,EAAI,CACjB,IAAMxX,EAAaG,GAAQ0M,GAC3B,GAAI7M,aAAsBgW,GAAe,CACrC,IAAM0B,EAAU1X,EAChB,IAAsD,OAAhDmX,EAAMd,GAAwBqB,KAA4BL,EAAOlX,GAAQgX,cAAuBnB,GAAgCO,GAANc,GAA0C,EAAM,GAAOG,EAAM,EAAI,CAC7L,IAAMvX,EAAeE,GAAQkW,GAAwBqB,IACrD,GAAIzX,aAAwB+V,GAAe,CACvC,IAAM2B,EAAM1X,EACZ,OAAO6W,GAAiBA,GAAiBlK,EAAIgJ,EAAGzpB,EAAGkqB,GAAwBsB,IAAO7B,GAAuB6B,GAAM5B,GAAyB4B,GAAMb,GAAiBR,GAAyBqB,GAAM7B,GAAuB4B,GAAU3B,GAAyB2B,GAAUpB,GAAyBoB,IAC/R,CAEI,MAAM,IAAI9uB,MAAM,gCAExB,CAEI,OAAOkuB,GAAiBA,GAAiBlK,EAAIgJ,EAAGzpB,EAAGkqB,GAAwBqB,IAAW5B,GAAuB4B,GAAU3B,GAAyB2B,GAAUpB,GAAyBoB,GAE3L,CAEI,MAAM,IAAI9uB,MAAM,gCAExB,CACK,GAAI4uB,EAAOC,EAAM,EAAI,CACtB,IAAMG,EAAezX,GAAQyM,GAC7B,GAAIgL,aAAwB5B,GAAe,CACvC,IAAM6B,EAAUD,EAChB,IAAuD,OAAjDN,EAAMhB,GAAyBuB,KAA4BN,EAAOpX,GAAQmX,cAAuBtB,GAAgCO,GAANgB,GAA0C,EAAM,GAAOE,EAAM,EAAI,CAC9L,IAAMK,EAAe3X,GAAQmW,GAAyBuB,IACtD,GAAIC,aAAwB9B,GAAe,CACvC,IAAM+B,EAAMD,EACZ,OAAOhB,GAAiBA,GAAiBT,GAAwBwB,GAAU/B,GAAuB+B,GAAU9B,GAAyB8B,GAAUxB,GAAwB0B,IAAOjC,GAAuBiC,GAAMhC,GAAyBgC,GAAMjB,GAAiBR,GAAyByB,GAAMnC,EAAGzpB,EAAG0gB,GACpS,CAEI,MAAM,IAAIjkB,MAAM,gCAExB,CAEI,OAAOkuB,GAAiBT,GAAwBwB,GAAU/B,GAAuB+B,GAAU9B,GAAyB8B,GAAUf,GAAiBR,GAAyBuB,GAAUjC,EAAGzpB,EAAG0gB,GAEhM,CAEI,MAAM,IAAIjkB,MAAM,gCAExB,CAEI,OAAOkuB,GAAiBlK,EAAIgJ,EAAGzpB,EAAG0gB,EAE1C,CACO,SAASmL,GAAkBtT,EAAUkR,EAAGzpB,EAAGiK,GAC9C,GAAS,MAALA,EAAW,CACX,IAAMugB,EAAKxW,GAAQ/J,GACboK,EAAsD,EAAlDkE,EAASuT,QAAQrC,EAAGE,GAAuBa,IACrD,GAAIA,aAAcX,GAAe,CAC7B,IAAMY,EAAKD,EACX,OAAInW,EAAI,EACG4W,GAAwBY,GAAkBtT,EAAUkR,EAAGzpB,EAAGkqB,GAAwBO,IAAMd,GAAuBc,GAAKb,GAAyBa,GAAKN,GAAyBM,IAEvK,IAANpW,EACE4V,GAA8BR,EAAGzpB,EAAGkqB,GAAwBO,GAAKN,GAAyBM,GAAKL,GAA0BK,IAGzHQ,GAAwBf,GAAwBO,GAAKd,GAAuBc,GAAKb,GAAyBa,GAAKoB,GAAkBtT,EAAUkR,EAAGzpB,EAAGmqB,GAAyBM,IAEzL,CACK,OAAIpW,EAAI,EACF4V,GAA8BR,EAAGzpB,OAAG+rB,EAAuB9hB,EAAG,GAE1D,IAANoK,EACEqV,GAA2BD,EAAGzpB,GAG9BiqB,GAA8BR,EAAGzpB,EAAGiK,OAAG8hB,EAAuB,EAE7E,CAEI,OAAOrC,GAA2BD,EAAGzpB,EAE7C,CACO,SAASgsB,GAAsBC,EAAcC,EAAO3B,GACvDyB,EAAuB,OAAa,CAChC,IAAMzT,EAAW0T,EAAcxC,EAAIyC,EACnC,GAAS,MADqC3B,EAC/B,CACX,IAAMC,EAAKxW,GAF+BuW,GAGpClW,EAAsD,EAAlDkE,EAASuT,QAAQrC,EAAGE,GAAuBa,IACrD,GAAU,IAANnW,EACA,OAAOpD,GAAK2Y,GAAyBY,IAEpC,GAAIA,aAAcX,GAAe,CAClC,IAAMY,EAAKD,EACXyB,EAAe1T,EACf2T,EAAQzC,EACRc,EAAUlW,EAAI,EAAK6V,GAAwBO,GAAMN,GAAyBM,GAC1E,SAASuB,CACb,CAEI,MAER,CAEI,MAGR,CACJ,CAqPO,SAASG,GAAsBC,EAAO7B,GACzC4B,EAAuB,OAAa,CAChC,IAAM/pB,EAAIgqB,EACV,GAAS,MADY7B,EACN,CACX,IAAMC,EAAKxW,GAFMuW,GAGjB,GAAIC,aAAcX,GAAe,CAC7B,IAAMY,EAAKD,EACX2B,GAAsB/pB,EAAG8nB,GAAwBO,IACjDroB,EAAEunB,GAAuBc,GAAKb,GAAyBa,IACvD2B,EAAQhqB,EACRmoB,EAAQJ,GAAyBM,GACjC,SAAS0B,CACb,CAEI/pB,EAAEunB,GAAuBa,GAAKZ,GAAyBY,GAE/D,CACA,KACJ,CACJ,CACO,SAAS6B,GAAmBjqB,EAAG6H,GAClCkiB,GAAsB/pB,EAAG6H,EAC7B,CAiHO,SAASqiB,GAAsBlqB,EAAG6H,GACrC,GAAS,MAALA,EAAW,CACX,IAAMugB,EAAKxW,GAAQ/J,GACnB,GAAIugB,aAAcX,GAAe,CAC7B,IAAMY,EAAKD,EACL+B,EAAKD,GAAsBlqB,EAAG8nB,GAAwBO,IACtD1J,EAAK3e,EAAEunB,GAAuBc,GAAKb,GAAyBa,IAC5D+B,EAAKF,GAAsBlqB,EAAG+nB,GAAyBM,IAC7D,OAAOR,GAA8BN,GAAuBc,GAAK1J,EAAIwL,EAAIC,EAAIpC,GAA0BK,GAC3G,CAEI,OAAOf,GAA2BC,GAAuBa,GAAKpoB,EAAEunB,GAAuBa,GAAKZ,GAAyBY,IAE7H,CAIJ,CACO,SAASiC,GAAmBrqB,EAAG6H,GAClC,OAAOqiB,GAAsBlqB,EAAG6H,EACpC,CAmLO,IAAMyiB,GAA2B,SAAAvZ,GACpC,SAAAuZ,EAAYC,EAAOtW,GAAS,IAAAwN,EAGD,OAHC5nB,GAAA,KAAAywB,IACxB7I,EAAAN,GAAA,KAAAmJ,IACKC,MAAQA,EACb9I,EAAKxN,QAAUA,EAAQwN,CAC3B,CAAC,OAAAtQ,GAAAmZ,EAAAvZ,GAAApX,GAAA2wB,EAAA,CALmC,CAASroB,GAU1C,SAASuoB,GAA0BC,GACtCD,EAA2B,OAAa,CACpC,IAAMD,EAAQE,EACd,GAAKC,GAAUH,GAoBX,OAAOI,KAnBP,IAAMC,EAAO3Z,GAAKsZ,GACZ1iB,EAAImJ,GAAKuZ,GACf,GAAS,MAAL1iB,EAAW,CACX,IAAMugB,EAAKxW,GAAQ/J,GACnB,GAAIugB,aAAcX,GAAe,CAC7B,IAAMY,EAAKD,EACXqC,EAAYzX,GAAgB,CAAC8U,GAAwBO,GAAKf,GAA2BC,GAAuBc,GAAKb,GAAyBa,IAAMN,GAAyBM,IAAMuC,GAC/K,SAASJ,CACb,CAEI,OAAOD,CAEf,CAEIE,EAAYG,CAQxB,CACJ,CACO,SAASC,GAAyBhjB,GACrC,OAAO,IAAIyiB,GAA4BE,GAA0B7X,GAAU9K,KAAK,EACpF,CAOO,SAASijB,GAAsBzvB,GAClC,GAAIA,EAAE4Y,QAAS,CACX,IAAMxC,EAAapW,EAAEkvB,MACrB,GAAKG,GAAUjZ,GAeX,OArBL,WACH,MAAM,IAAIpX,MAAM,+BACpB,CAmBmB0wB,GAdP,GAAwB,MAApB/Z,GAAKS,GAAqB,CAC1B,IAAM5J,EAAI+J,GAAQZ,GAAKS,IACvB,GAAI5J,aAAa4f,GACb,MAAM,IAAIptB,MAAM,mEAGhB,MAAO,CAACktB,GAAuB1f,GAAI2f,GAAyB3f,GAEpE,CAEI,MAAM,IAAIxN,MAAM,kEAM5B,CAEI,OA5BD,WACH,MAAM,IAAIA,MAAM,0BACpB,CA0Be2wB,EAEf,CA4BO,SAASC,GAA4BpjB,GACxC,IAAIxM,EAAIwvB,GAAyBhjB,GACjC,MAAO,CACH,uDAAsD,WAClD,OAAOijB,GAAsBzvB,EACjC,EACA,6CAA4C,WACxC,OAAOyvB,GAAsBzvB,EACjC,EACA,0CAAyC,WACrC,OArCL,SAAgCA,GACnC,GAAIA,EAAE4Y,QAAS,CACX,IAAMxC,EAAapW,EAAEkvB,MACrB,GAAKG,GAAUjZ,GAgBX,OAAO,EAfP,GAAwB,MAApBT,GAAKS,GAAqB,CAE1B,GADUG,GAAQZ,GAAKS,cACNgW,GACb,MAAM,IAAIptB,MAAM,oEAIhB,OADAgB,EAAEkvB,MAAQC,GAA0BvZ,GAAKQ,KACjCiZ,GAAUrvB,EAAEkvB,MAE5B,CAEI,MAAM,IAAIlwB,MAAM,mEAM5B,CAGI,OADAgB,EAAE4Y,SAAU,GACJyW,GAAUrvB,EAAEkvB,MAE5B,CAWmBW,CAAuB7vB,EAClC,EACA,uCAAsC,WAClCA,EAAIwvB,GAAyBhjB,EACjC,EACA5O,QAAO,WACP,EAER,CAqFO,IAAMkyB,GAAS,WAClB,SAAAA,EAAYhV,EAAUiV,GAAMvxB,GAAA,KAAAsxB,GACxBrxB,KAAKqc,SAAWA,EAChBrc,KAAKsxB,KAAOA,CAChB,CAAC,OAAAzxB,GAAAwxB,EAAA,EAAAnxB,IAAA,cAAAC,MACD,WAEI,OAA2C,EA0P5C,SAAoCoxB,GACvC,IAAMC,EAAc,SAAC3yB,EAAGS,GAAC,OAAQT,GAAK,GAAKS,EAAK,GAAG,EAC/C0Z,EAAM,EACJqC,EAAa7a,EAAc+wB,GACjC,IACI,KAAOlW,EAAW,8CAA8C,CAC5D,IAAMoW,EAAsBpW,EAAW,0DACvCrC,EAAkE,EAA3DwY,EAAYxY,EAAK9V,EAAeuuB,EAAoB,KAC3DzY,EAAkE,EAA3DwY,EAAYxY,EAAK9V,EAAeuuB,EAAoB,IAC/D,CACJ,CAAC,QAEGvyB,EAAYmc,EAChB,CACA,OAAa,EAANrC,CACX,CAzQe0Y,CADO1xB,KAElB,GAAC,CAAAE,IAAA,SAAAC,MACD,SAAO0P,GAEH,KAAIA,aAAgBwhB,GAsChB,OAAO,EArCP,IAAMM,EAAS9hB,EACT+hB,EAAKpxB,EAHDR,MAIV,IACI,IAAM6xB,EAAKrxB,EAAcmxB,GACzB,IACI,IAAMna,EAAO,WACT,IAAMsa,EAAKF,EAAG,6CACd,GAAIE,IAAOD,EAAG,6CAA8C,CACxD,GAAKC,EAGA,CACD,IAAMC,EAAMH,EAAG,0DACTI,EAAMH,EAAG,0DACf,SAAI1tB,EAAO4tB,EAAI,GAAIC,EAAI,MAAO7tB,EAAO4tB,EAAI,GAAIC,EAAI,MACtCxa,GAKf,CAXI,OAAO,CAYf,CAEI,OAAO,CAEf,EACA,OAAOA,GACX,CAAC,QAEGtY,EAAY2yB,EAChB,CACJ,CAAC,QAEG3yB,EAAY0yB,EAChB,CAKR,GAAC,CAAA1xB,IAAA,WAAAC,MACD,WAEI,MAAQ,QAAUmH,GAAK,KAAM2qB,IAAM,SAACjsB,GAAE,OrB5xBvC,SAAgBc,GAAc,QAAAorB,EAAAtrB,UAAApF,OAAN+R,EAAI,IAAAzU,MAAAozB,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJ5e,EAAI4e,EAAA,GAAAvrB,UAAAurB,GAC/B,IAAIC,EASJ,MARmB,WAAfjvB,GAAO2D,IAEPsrB,EAAO5qB,OAAO+L,EAAK,IACnBA,EAAK8e,SAGLD,EAAOtrB,EAEJsrB,EAAKxlB,QAAQ6E,IAAc,SAAC6G,EAAGiI,EAAK7N,EAAWpJ,EAAQmB,EAAW6nB,GACrE,GAAI/R,EAAM,GAAKA,GAAOhN,EAAK/R,OACvB,MAAM,IAAIjB,MAAM,+EAEpB,IAAIiS,EAAMe,EAAKgN,GACf,GAAInQ,GAAUoC,GAEV,OADA/H,EAAyB,MAAbA,EAAoB,KAAOiB,SAASjB,EAAW,IACnDnB,GACJ,IAAK,IACL,IAAK,IAEDkJ,EAAMjC,GAAQiC,EADd/H,EAAyB,MAAbA,EAAoBA,EAAY,GAE5C,MACJ,IAAK,IACL,IAAK,IACD+H,EAAmB,MAAb/H,EAAoBgG,GAAY+B,EAAK/H,GAAagG,GAAY+B,GACpE,MACJ,IAAK,IACL,IAAK,IACDA,EAAmB,MAAb/H,EAAoBkG,GAAc6B,EAAK/H,GAAakG,GAAc6B,GACxE,MACJ,IAAK,IACL,IAAK,IACD/H,EAAyB,MAAbA,EAAoBA,EAAY,EAC5C+H,EAAMjC,GAAQF,GAASmC,EAAK,KAAM/H,GAAa,KAC/C,MACJ,IAAK,IACL,IAAK,IACD+H,EAAmB,MAAb/H,EAAoBwJ,GAAQzM,OAAOgL,GAAM/H,EAAW,KAAOjD,OAAOgL,GACxE,MACJ,IAAK,IACL,IAAK,IACDA,EAAmB,MAAb/H,EAAoBwJ,GAAQrD,GAAM4B,GAAM/H,EAAW,KAAOmG,GAAM4B,GACvD,MAAXlJ,IACAkJ,EAAMA,EAAIjE,eAEd,MACJ,QACI,GAAI+jB,EAAS,CACT,IAAI9mB,EAAO,GACXgH,EAAM8f,EAAQ1lB,QAAQ,sBAAsB,SAAC0L,EAAGia,EAASC,GACjD9gB,GAAWc,EAAK,KAChBA,EAAMnC,GAASmC,GAAM,GACrBhH,EAAO,KAEXgnB,EAA6B,MAAfA,EAAsB,GAAKA,EAAY7mB,UAAU,GAE/D,IAAyC8mB,EAAAprB,IADzCmL,EAAMjC,GAAQiC,EAAK9H,KAAKuV,IAAIuS,EAAYhxB,OAAQ,KACjB4M,MAAM,KAAI,GAApCskB,EAAMD,EAAA,GAAEE,EAAUF,EAAA,GACvBE,IAAeA,EAAa,IAE5BD,EAASze,GAAQye,EADEH,EAAQ3lB,QAAQ,KAAM,IAAIA,QAAQ,MAAO,IAAIpL,OAC3B,KACrC,IAAMoxB,EAAaJ,EAAY5lB,QAAQ,MAAO,IAAIpL,OAQlD,GAPIoxB,EAAaD,EAAWnxB,OACxBmxB,EA2GzB,SAAkB7rB,EAAKlE,GAC1B,OAAOoQ,GAAIlM,EAAKlE,EA5G0D,KA4GjD,EAC7B,CA7G6CiwB,CAASF,EAAYC,GAE7BA,EAAaD,EAAWnxB,SAC7BmxB,EAAaA,EAAWhnB,UAAU,EAAGinB,GAAcD,EAAWhnB,UAAUinB,GAAYhmB,QAAQ,MAAO,KAGnG2lB,EAAQxqB,QAAQ,KAAO,EAAG,CAI1B,IAHA,IAAMxG,EAAImxB,EAAOlxB,OAAS,EACpBsxB,EAAiBpoB,KAAKE,MAAM8nB,EAAOlxB,OAAS,GAC9CuxB,EAAYxxB,EAAI,EAAImxB,EAAO/d,OAAO,EAAGpT,IAAMuxB,EAAiB,EAAI,IAAM,IAAM,GACvE5tB,EAAI,EAAGA,EAAI4tB,EAAgB5tB,IAChC6tB,GAAaL,EAAO/d,OAAOpT,EAAQ,EAAJ2D,EAAO,IAAMA,EAAI4tB,EAAiB,EAAI,IAAM,IAE/EJ,EAASK,CACb,CACA,OAAOJ,EAAWnxB,OAAS,EAAIkxB,EAAS,IAAMC,EAAaD,CAC/D,IACAlgB,EAAMhH,EAAOgH,CACjB,OAIRA,EADKA,aAAe/O,KACdmP,GAAaJ,EAAK8f,GAAWhpB,GAG7B7H,EAAS+Q,GAMnB,OAJAE,EAAYhH,UAAUgH,GAAa,KAAK/G,UAAU,GAAI,IACjDmC,MAAM4E,KACPF,EAAMQ,GAAIxL,OAAOgL,GAAM9H,KAAKwB,IAAIwG,GAAY,IAAKA,EAAY,IAE1DF,CACX,GACJ,CqB4rBmDlJ,CAAO,aAActD,EAAG,GAAIA,EAAG,GAAG,GAD/DhG,OAC4E,GAC9F,GAAC,CAAAE,IACIS,OAAOqyB,YAAW5xB,IAAvB,WACI,MAAO,WACX,GAAC,CAAAlB,IAAA,SAAAC,MACD,WAEI,OAAOrB,MAAMiV,KADC/T,KAElB,GAAC,CAAAE,IAAA,gBAAAC,MACD,WAEI,OAAOgxB,GADGnxB,KAC2BsxB,KACzC,GAAC,CAAApxB,IACAS,OAAOC,SAAQT,MAAhB,WACI,OAAOU,EAAWL,EAAcR,MACpC,GAAC,CAAAE,IACD,+CAA8CC,MAA9C,WAEI,OAAOgxB,GADGnxB,KAC2BsxB,KACzC,GAAC,CAAApxB,IAAA,YAAAC,MACD,SAAUyF,GACN,IAAMmI,EAAI/N,KACV,GAAI4F,aAAeyrB,EAEf,OAGY,EflsBjB,SAAqBhV,EAAUvI,EAAIyF,GACtC,IAAMqY,EAAKnX,GAAM3G,GACjB,IACI,IAAM+d,EAAKpX,GAAMlB,GACjB,IAII,IAHA,IAAIpB,EAAI,EACJ8a,EAAKrB,EAAG,6CACRsB,EAAKrB,EAAG,6CACG,IAAN1Z,GAAY8a,GAAOC,GAEd,IADV/a,EAA4I,EAAvIkE,EAASuV,EAAG,0DAA2DC,EAAG,8DAE3EoB,EAAKrB,EAAG,6CACRsB,EAAKrB,EAAG,8CAGhB,OAAoD,GAArC,IAAN1Z,EAAWA,EAAK8a,EAAK,EAAKC,GAAM,EAAI,EACjD,CAAC,QAEGh0B,EAAY2yB,EAChB,CACJ,CAAC,QAEG3yB,EAAY0yB,EAChB,CACJ,CeuqBmBuB,EAAY,SAACC,EAAMC,GACtB,IAAMlb,EAA2C,EAAvCpK,EAAEsO,SAASuT,QAAQwD,EAAK,GAAIC,EAAK,IAC3C,OAAqD,GAAtC,IAANlb,EAAWA,EAAI/S,EAAQguB,EAAK,GAAIC,EAAK,IAClD,GAAGtlB,EAJQnI,GAOX,MAAM,IAAIrF,MAAM,uCAExB,GAAC,CAAAL,IACD,oDAAmDC,MAAnD,SAAoDtB,GAChD,MAAM,IAAI0B,MAAM,wBACpB,GAAC,CAAAL,IACD,iDAAgDC,MAAhD,WACI,MAAM,IAAII,MAAM,wBACpB,GAAC,CAAAL,IACD,uDAAsDC,MAAtD,SAAuDtB,GACnD,MAAM,IAAI0B,MAAM,wBACpB,GAAC,CAAAL,IACD,yDAAwDC,MAAxD,SAAyDtB,GAErD,OAAOy0B,GADGtzB,KACuBnB,EAAE,KAAOsF,EAAOovB,GADvCvzB,KAC8DnB,EAAE,IAAKA,EAAE,GACrF,GAAC,CAAAqB,IACD,2DAA0DC,MAA1D,SAA2DqzB,EAAKjyB,IAvW7D,SAAmCwM,EAAGylB,EAAKjyB,GAC9C,IAAI2D,EAAI3D,EACR4uB,IAAmB,SAACtxB,EAAGS,GACnBmX,GAAQ+c,EAAKtuB,EAAG,CAACrG,EAAGS,IACpB4F,EAAMA,EAAI,EAAK,CACnB,GAAG6I,EACP,CAmWQ0lB,CADUzzB,KACkBsxB,KAAMkC,EAAKjyB,EAC3C,GAAC,CAAArB,IACD,0DAAyDC,MAAzD,WACI,OAAO,CACX,GAAC,CAAAD,IACD,qDAAoDC,MAApD,WAEI,OAAiC,EAA1BuzB,GADG1zB,KAEd,GAAC,CAAAE,IACD,6DAA4DC,MAA5D,WAEI,OAAiC,EAA1BuzB,GADG1zB,KAEd,GAAC,CAAAE,IAAA,OAAAkB,IACD,WAEI,OAAiC,EAA1BsyB,GADG1zB,KAEd,GAAC,CAAAE,IAAA,QAAAC,MACD,WACI,MAAM,IAAII,MAAM,wBACpB,GAAC,CAAAL,IAAA,SAAAC,MACD,SAAO4W,GACH,MAAM,IAAIxW,MAAM,wBAEpB,GAAC,CAAAL,IAAA,UAAAC,MACD,WAEI,OAAO8xB,IAAM,SAAC9E,GAAC,MAAK,CAACA,EAAE,GAAIA,EAAE,GAAG,GADtBntB,KAEd,GAAC,CAAAE,IAAA,MAAAC,MACD,SAAIotB,GAEA,OAAOgG,GADGvzB,KACoButB,EAClC,GAAC,CAAArtB,IAAA,MAAAC,MACD,SAAIotB,GAEA,OAAO+F,GADGtzB,KACuButB,EACrC,GAAC,CAAArtB,IAAA,OAAAC,MACD,WAEI,OAAO8xB,IAAM,SAAC9E,GAAC,OAAKA,EAAE,EAAE,GADdntB,KAEd,GAAC,CAAAE,IAAA,MAAAC,MACD,SAAIotB,EAAGzpB,GAEH,MAAM,IAAIvD,MAAM,wBAEpB,GAAC,CAAAL,IAAA,SAAAC,MACD,WAEI,OAAO8xB,IAAM,SAAC9E,GAAC,OAAKA,EAAE,EAAE,GADdntB,KAEd,GAAC,CAAAE,IAAA,UAAAC,MACD,SAAQ+F,EAAGytB,GACP,IAAM5lB,EAAI/N,KACV4zB,IAAU,SAACzG,GACPjnB,EAAEinB,EAAE,GAAIA,EAAE,GAAIpf,EAClB,GAAGA,EACP,IAAC,CA5JiB,GAiKf,SAAS8lB,GAAgBxX,EAAUiV,GACtC,OAAO,IAAID,GAAUhV,EAAUiV,EACnC,CAmBO,SAASiC,GAAoBxlB,EAAG7N,GACnC,OAn8BG,SAA4Bmc,EAAUkR,EAAGxf,GAC5C,IAAM4J,EAAamY,GAAsBzT,EAAUkR,EAAGxf,GACtD,GAAkB,MAAd4J,EACA,MAAM,IAAIpX,MAGV,OAAOuX,GAAQH,EAEvB,CA27BWmc,CAAmB/lB,EAAEsO,SAAUnc,EAAK6N,EAAEujB,KACjD,CAgCO,SAASoC,GAAqB3lB,GACjC,OAAOygB,GAAmBzgB,EAAEujB,KAChC,CACO,SAASgC,GAAuBvlB,EAAG7N,GACtC,OAtxBG,SAA2B6vB,EAAcC,EAAO3B,GACnD0F,EAAmB,OAAa,CAC5B,IAAM1X,EAAW0T,EAAcxC,EAAIyC,EACnC,GAAS,MADqC3B,EAC/B,CACX,IAAMC,EAAKxW,GAF+BuW,GAGpClW,EAAsD,EAAlDkE,EAASuT,QAAQrC,EAAGE,GAAuBa,IACrD,GAAIA,aAAcX,GAAe,CAC7B,IAAMY,EAAKD,EACX,GAAInW,EAAI,EAAG,CACP4X,EAAe1T,EACf2T,EAAQzC,EACRc,EAAQL,GAAwBO,GAChC,SAASwF,CACb,CACK,GAAU,IAAN5b,EACL,OAAO,EAGP4X,EAAe1T,EACf2T,EAAQzC,EACRc,EAAQJ,GAAyBM,GACjC,SAASwF,CAEjB,CAEI,OAAa,IAAN5b,CAEf,CAEI,OAAO,CAGf,CACJ,CAqvBW4b,CAAkBhmB,EAAEsO,SAAUnc,EAAK6N,EAAEujB,KAChD,CAuDO,SAASphB,GAAIhQ,EAAKC,EAAO6zB,GAC5B,OAxGG,SAAwBjmB,EAAG7N,EAAKC,GACnC,OAAO0zB,GAAgB9lB,EAAEsO,SAAUsT,GAAkB5hB,EAAEsO,SAAUnc,EAAKC,EAAO4N,EAAEujB,MACnF,CAsGW2C,CAAeD,EAAO9zB,EAAKC,EACtC,CAOO,SAAS+zB,GAAQh0B,EAAK8zB,GACzB,OAtCG,SAA4BjmB,EAAG7N,GAClC,OAAO4vB,GAAsB/hB,EAAEsO,SAAUnc,EAAK6N,EAAEujB,KACpD,CAoCW6C,CAAmBH,EAAO9zB,EACrC,CAkCO,SAAS2D,GAAIsR,EAAS6e,GACzB,OAjH8B9tB,EAiHDiP,EAhHtB0e,IADoB9lB,EAiHLimB,GAhHG3X,SAAUkU,GAAmBrqB,EAAG6H,EAAEujB,OADxD,IAAwBvjB,EAAG7H,CAkHlC,CA2DO,SAAS0S,GAAMyD,GAClB,OA3NG,SAAyBA,GAC5B,OAAOwX,GAAgBxX,OAAUwT,EACrC,CAyNWuE,CAAgB/X,EAC3B,C,y7DCz2CO,IAAMgY,GAAW,SAAAxJ,GACpB,SAAAwJ,EAAY1sB,EAAKjC,GAAQ,IAAA0R,EAGA,OAHArX,GAAA,KAAAs0B,IACrBjd,EAAAiQ,GAAA,KAAAgN,IACK1sB,IAAMA,EACXyP,EAAK1R,OAASA,EAAO0R,CACzB,CAAC,OAAAC,GAAAgd,EAAAxJ,GAAAhrB,GAAAw0B,EAAA,EAAAn0B,IAAA,QAAAC,MACD,WACI,MAAO,CAAC,eAAgB,oBAAqB,UAAW,WAAY,UAAW,gBAAiB,cAAe,WACnH,IAAC,CARmB,CAASsH,GAepB6sB,GAAY,SAAAvJ,GACrB,SAAAuJ,EAAY3sB,EAAKjC,GAAQ,IAAAiiB,EAGA,OAHA5nB,GAAA,KAAAu0B,IACrB3M,EAAAN,GAAA,KAAAiN,IACK3sB,IAAMA,EACXggB,EAAKjiB,OAASA,EAAOiiB,CACzB,CAAC,OAAAtQ,GAAAid,EAAAvJ,GAAAlrB,GAAAy0B,EAAA,EAAAp0B,IAAA,QAAAC,MACD,WACI,MAAO,CAAC,aAAc,YAAa,YACvC,IAAC,CARoB,CAASsH,GA2BrB8sB,GAAY10B,IACrB,SAAA00B,IAAcx0B,GAAA,KAAAw0B,GACVv0B,KAAKw0B,MAAS,IAAIC,IAAI,GAC1B,IAOG,SAASC,KACZ,OAAO,IAAIH,EACf,CAEO,SAASI,GAAgCC,EAAI10B,EAAKgB,GACrD,IAAIyW,EACAkd,E3BlCG,K2BsCP,IAHAld,EAAa,CAACgT,GAAYiK,EAAGJ,MAAOt0B,EAAK,IAAI2I,GAAU,kBAAMgsB,CAAM,IAAE,SAAC/wB,GAClE+wB,EAAS/wB,CACb,KAAK+wB,IACU,GACX,OAAOld,EAAW,GAGlB,IAAM0C,EAAMnZ,IAEZ,OP8BD,SAAmB4zB,EAAMvH,EAAGzpB,GAC/B,GAAIgxB,EAAKxyB,IAAIirB,GACT,MAAM,IAAIhtB,MAAM,0DAA4DgtB,GAEhFuH,EAAKvyB,IAAIgrB,EAAGzpB,EAChB,COpCQixB,CAAUH,EAAGJ,MAAOt0B,EAAKma,GAClBA,CAEf,CAEO,IAAM2a,GAAsBN,KAEtBO,GAAsBP,KAE5B,SAASQ,GAAuBpuB,GACnC,OAAOA,EAAIuM,WAAMrS,EAAW,GAAO2R,cAAgB7L,EAAIuM,MAAM,EAAGvM,EAAItF,OACxE,CAEO,SAAS2zB,GAAoBC,EAAcC,GAC9C,OAAQD,EAAaztB,KACjB,KAAK,EACD,OvB5BL,SAAiBsJ,EAAKtD,EAAO2nB,EAAaC,GAAmB,IAAZzzB,EAAM8E,UAAApF,OAAA,QAAAR,IAAA4F,UAAA,GAAAA,UAAA,GAAG,EA8B7D,GAAmB,iBAARqK,EAAkB,KAAAukB,EACnBC,EAAMxkB,EACZA,EA9FD,SAAgBqhB,GAAsB,IAAbne,EAAOvN,UAAApF,OAAA,QAAAR,IAAA4F,UAAA,GAAAA,UAAA,GAAG,EAOtC,IAAe,IAAVuN,EACD,MAAM,IAAI5T,MAAM,0FAGpB,IAAIkS,EAAQ,KAIZ,OAHAA,GAAmB,EAAV0B,EAAc,IAAM,GAC7B1B,GAAmB,EAAV0B,EAAc,IAAM,GAC7B1B,GAAmB,GAAV0B,EAAe,IAAM,GACvB,IAAII,OAAO+d,EAAS7f,EAC/B,CA8EciK,CAAO/O,EAAY,QAAP6nB,EAAED,SAAK,IAAAC,EAAAA,EAAI,GAC7B7nB,EAAQ8nB,EACRF,OAAQv0B,CACZ,CACA,GAA2B,mBAAhBs0B,EAEP,OADAC,EAAiB,MAATA,GAAiB,EAAIA,EACtB5nB,EAAMhC,UAAU,EAAG7J,GAAU6L,EAAMhC,UAAU7J,GAAQ8K,QAAQqE,GArCxE,WACI,IAAI+H,EAAMpS,UAAU,GACpB,GAAI2uB,EAAO,CACPA,IAcA,IAbA,IAAMvjB,EAAQ,GACRpP,EAAMgE,UAAUpF,OAUhBk0B,EAA2C,iBAAvB9uB,UAAUhE,EAAM,GACtC+yB,EAAQD,EAAa9yB,EAAM,EAAIA,EAAM,EAChCrB,EAAI,EAAGA,EAAIo0B,EAAOp0B,IACvByQ,EAAMT,KAAK3K,UAAUrF,IAEzByQ,EAAMV,MAAQ1K,UAAU+uB,KACxB3jB,EAAMrE,MAAQ/G,UAAU+uB,KACpBD,IACA1jB,EAAM4jB,OAAShvB,UAAU+uB,IAE7B3c,EAAMsc,EAAYtjB,EACtB,CACA,OAAOgH,CACX,IAkBI,GANAsc,EACIA,EAEK1oB,QAAQ,QAAQ,SAACipB,GAAE,MAAK,IAAI,IAE5BjpB,QAAQ,eAAgB,SACpB,MAAT2oB,EAAe,CACf,IAAIxnB,EACE+nB,EAAOnoB,EAAMhC,UAAU7J,GACvBoR,EAAWlC,GAAQC,EAAK6kB,GACxBC,EAAO/kB,GAAQxP,OAAS+zB,GAASxnB,EAAImF,EAASqiB,EAAQ,GAAIO,EAAKnqB,UAAU,EAAGoC,EAAEuD,MAAQvD,EAAE,GAAGvM,SAAWs0B,EAC5G,OAAOnoB,EAAMhC,UAAU,EAAG7J,GAAUi0B,EAAKnpB,QAAQqE,EAAKqkB,GAChD3nB,EAAMhC,UAAU7J,EAASi0B,EAAKv0B,OACxC,CAEI,OAAOmM,EAAMf,QAAQqE,EAAKqkB,EAGtC,CuB/BmB1oB,CAAQsoB,GAAuBG,GAAY,QAAS,OAAO1iB,cACtE,KAAK,EACD,OAAO0iB,EACX,QACI,OAAOH,GAAuBG,GAE1C,CCtEO,SAASW,GAAK71B,GACjB,OAAOA,CACX,CA8DO,SAAS81B,GAAIryB,GAChB,OAAO9E,MAAMiV,KAAKnQ,EACtB,CAqBO,SAASsyB,GAAe/1B,GAC3B,OAAOg2B,GAAWh2B,EAAO,IAC7B,CAaO,SAASi2B,GAASj2B,GACrB,OJlCG,SAAkB2P,GAA6B,IAAzBxG,EAAM1C,UAAApF,OAAA,QAAAR,IAAA4F,UAAA,GAAAA,UAAA,GAAG,IAClC,IAAyC,IAArC,CAAC,IAAK,IAAK,KAAKmB,QAAQuB,GACxB,MAAM,IAAI/I,MAAM,oCAEpB,IAAMoM,EAAIjC,KAAKwB,IAAIigB,GAAKrc,IAClBnN,EAAI+H,KAAKwB,IAxDZ,SAAe4D,GAClB,OAAOkc,GAAYlc,EAAK,MAAW,KACvC,CAsDuBrE,CAAMqE,IACnB/B,EAAIrD,KAAKwB,IAtDZ,SAAiB4D,GACpB,OAAOkc,GAAYlc,EAAK,KAAU,IACtC,CAoDuBlE,CAAQkE,IACrBpN,EAAIgI,KAAKwB,IApDZ,SAAiB4D,GACpB,OAAOkc,GAAYlc,EAAK,IAAQ,IACpC,CAkDuBumB,CAAQvmB,IACrBoc,EAAKxhB,KAAKwB,IAlDb,SAAsB4D,GACzB,OAAOkc,GAAYlc,EAAK,IAC5B,CAgDwBwmB,CAAaxmB,IAEjC,MAAO,GAAPlI,OADakI,EAAK,EAAI,IAAM,IACdlI,OAAS,IAAN+E,GAAuB,MAAXrD,GAA6B,MAAXA,EAAkC,MAAXA,EAAiBqD,EAAI,IAAMA,EAAI,IAApC,IAAuC/E,OAAc,MAAX0B,EAAiB3G,EAAIrB,EAAaqB,EAAG,GAAE,KAAAiF,OAAItG,EAAayM,EAAG,GAAE,KAAAnG,OAAItG,EAAaoB,EAAG,IAAEkF,OAAU,IAAPskB,GAAwB,MAAX5iB,GAA6B,MAAXA,EAAkC,MAAXA,EAAiB,IAAMhI,EAAa4qB,EAAI,GAAK,IAA+BA,ExB2D1TzqB,SAAS,IAAIC,SwB3DiT,ExB2D5R,KAAKoJ,OwB3D0R,ExB2DtQ,KwB3D8K,GACtP,CIuBWyrB,CAAWp2B,EACtB,CAEO,SAASq2B,GAAMr2B,GAClB,OAAOqH,OAAOrH,EAClB,CAEO,SAASs2B,GAAKt2B,GACjB,OAAOqH,OAAOrH,EAClB,CAEO,SAASu2B,GAAMv2B,GAClB,OAAOqH,OAAOrH,EAClB,CAEO,SAASw2B,GAAOx2B,GACnB,OAAOqH,OAAOrH,EAClB,CAUO,SAASy2B,KACZ,O5B9HO,I4B+HX,CAmEO,SAASC,GAAS12B,GACrB,OAAOg2B,GAAWh2B,EAAO,IAC7B,CAcO,SAASsB,GAASq1B,EAAO32B,GAC5B,OAAO42B,KAAKC,UAAU72B,EAAOkG,E5BnNtB,M4BmN6C0O,GAAK+hB,GAC7D,CAiBA,SAASG,GAA2BC,EAAO9B,EAAc+B,EAAejf,GACpE,IAAI9F,EAGAglB,EAFEC,EAAa,IAAIxuB,E5BvOhB,M4BwODyuB,EAAUpnB,GAAI+T,GAAS/L,GAAImf,EAAYH,GAE7C,GAAIzQ,GAASvO,GAAU,CACnB,IAAMqf,EAAUtF,IAAM,SAACuF,GACnB,IAAMC,EAAYtC,GAAoBC,EAAc7tB,GAAKiwB,IACnDE,EAAWC,GAAYL,EAASlC,EAAc+B,EAAeK,EAAG,IACtE,OAAO,SAAC9hB,GAAM,OAAM,SAACH,GACjB,IAAMpV,EAAuBuV,EAAQ8hB,EVmGlC,IU/FH,QAHKL,GAAwBA,GAA4B,MAATh3B,KAC5CoV,EAAOkiB,GAAWC,EAASv3B,IAExBoV,CACX,CAAC,CACL,GAAGkP,GAAkBvM,IACrBkf,EAAW,SAACQ,GAAQ,OAAK/hB,IAAK,SAACgiB,EAAUC,GAAI,OAAKA,EAAKF,EAALE,CAAeD,EAAS,GAAE,CAAC,EAAGN,EAAQ,CAC5F,KACK,KAAI/Q,GAAQtO,GAuBb,MAAM,IAAI3X,OAAO6R,EAAM6R,GAAS/L,GAAI7F,GAAOT,GAAO,sEAAdS,CAAqFD,KAtBzHglB,EAAW,SAACtf,GACR,IAAMigB,EVsEX,SAAwBj0B,EAAGoU,GAC9B,IACM8f,EADQ3R,GAAcnO,GACRpU,EAAE6D,KACtB,GAAa,MAATqwB,EACA,MAAM,IAAIz3B,MAAM,oBAADqH,OAAqB9D,EAAEyD,KAAI,mBAE9C,MAAO,CAACywB,EAAOl0B,EAAE4B,OACrB,CU7EiCuyB,CAAengB,EAASI,GACvCqN,EAAOwS,EAAa,GACpBryB,EAASqyB,EAAa,GACtBpgB,EAA6B,EAAhBjS,EAAOlE,OAC1B,GAAmB,IAAfmW,EACA,OAAOpQ,GAAKge,GAGZ,IAAM3iB,EAAmB,EAAb+U,EACNugB,EAAavR,GAAmBpB,GAChC4S,EAAW7iB,GAAK,IAAIxW,MAAM8D,EAAM,GAAI,EAAGA,EAAM,EAAG,MACtD6T,GAAQ0hB,EAAU,EAAG5wB,GAAKge,IAC1B,IAAK,IAAIhkB,EAAI,EAAGA,GAAKqB,EAAKrB,IAEtBkV,GAAQ0hB,EAAU52B,EADDo2B,GAAYL,EAASlC,EAAc+B,EAAe3gB,GAAKjV,EAAI,EAAG22B,GAAY,GACtEE,CAAS5hB,GAAKjV,EAAI,EAAGmE,KAE9C,OAAOyyB,CAEf,CAIJ,CAEA,OADAd,EAAWpoB,SAAWmoB,EACfA,CACX,CAEA,SAASO,GAAYT,EAAO9B,EAAc+B,EAAejf,GACrD,IAAM0L,EAAWK,GAAS/L,GACpBP,EAAauc,GAAQtQ,EAAUsT,GACrC,GAAkB,MAAdvf,EAiHC,CACD,IAAM0f,EAAa1f,EACnB,OAAO,SAAC7T,GAAC,OAAKuzB,EAAWpoB,SAASnL,EAAE,CACxC,CAnHI,GAAI/E,GAAQmZ,GAAI,CACZ,IAAMkf,EAAUO,GAAYT,EAAO9B,EAAc+B,EAAe1R,GAAevN,IAC/E,OAAO,SAAC/X,GAAK,OAAK81B,GAAIoC,GAAMjB,EAASj3B,GAAO,CAChD,CACK,GAAIylB,GAAO1N,GAEZ,OADiB+L,GAAS6B,GAAsB5N,KAE5C,IAAK,eACD,OAAOse,GACX,IAAK,cACD,OAAOC,GACX,IAAK,eACD,OAAOC,GACX,IAAK,gBACD,OAAOC,GACX,IAAK,eACD,OAAO,SAAC2B,GAAO,OAAKA,CAAO,EAC/B,IAAK,gBACD,OAAO,SAACC,GAAO,OAAKA,CAAO,EAC/B,QACI,IAAMnmB,EAAM6R,GAAS/L,GAErB,OADc5F,GAAOV,GAAO,8OAAdU,CAA8PF,OAKnR,IAAIuT,GAAczN,GAAI,CACvB,GAAIqO,GAAQrO,GAAI,CACZ,IAAMsgB,EAAWvG,IAAM,SAAC1W,GAAG,OAAKoc,GAAYT,EAAO9B,EAAc+B,EAAe5b,EAAI,GAAE+K,GAAiBpO,IACvG,OAAO,SAACugB,GAAO,OAAKxC,GAAIrZ,IAAW,SAACrb,EAAG1C,GAAC,OAAK2X,GAAKjV,EAAGi3B,EAARhiB,CAAkB3X,EAAE,GAAiB45B,GAAU,CAChG,CAEI,IAAMC,EAAazU,GAAS4B,GAAyB3N,IACrD,GAAmB,wDAAfwgB,EAAsE,CACtE,IAAMC,EAAY,IAAI13B,GAAK,kBA1FxC,SAAgBm2B,GACnB,OAAO,SAAChlB,GAAG,OtBhMI,OADY0C,EsBiMIjR,GAAIuzB,EAAShlB,ItBhMrBjS,GAAM2U,GNlCtB,KMiCJ,IAAwBA,CsBiMiC,CAChE,CAwFqD8jB,CAAOjB,GAAYT,EAAO9B,EAAc+B,EAAe3gB,GAAK,EAAG2N,GAAYjM,KAAK,IACjH,OAAO,SAAC2gB,GACJ,OAAgB,MAAZA,E5B7TjB,K4BiUwBF,EAAUG,MAAMD,EAE/B,CACJ,CACK,GAAoB,6DAAfH,GAAoG,4DAAfA,EAA2E,CACtK,IAAMK,EAAYpB,GAAYT,EAAO9B,EAAc+B,EAAe3gB,GAAK,EAAG2N,GAAYjM,KACtF,OAAO,SAAC8gB,GAAQ,OAAK/C,GAAIoC,GAAMU,EAAWC,GAAU,CACxD,CACK,GAAmB,0EAAfN,EAAwF,CAC7F,IAAMO,EAAUziB,GAAK,EAAG2N,GAAYjM,IAC9BghB,EAAevB,GAAYT,EAAO9B,EAAc+B,EAAe3gB,GAAK,EAAG2N,GAAYjM,KACzF,GAA2B,kBAAtB+L,GAASgV,IAA8D,gBAAtBhV,GAASgV,GAC3D,OAAO,SAACE,GAAQ,OAAKtjB,IAAK,SAACN,EAAQwB,GAC/B,IAAM0a,EAAsB1a,EAE5B,OADAxB,EAAOkc,EAAoB,IAAIyH,EAAazH,EAAoB,IACzDlc,CACX,GAAG,CAAC,EAAG4jB,EAAS,EAGhB,IAAIC,EACEC,EAAQ1B,GAAYT,EAAO9B,EAAc+B,EAAe8B,GAE9D,OADAG,EAAcC,EACP,SAACC,GAAQ,OAAKrD,GAAIoC,IAAM,SAACkB,GAC5B,IAAMC,EAAwBD,EAC9B,MAAO,CAACH,EAAWI,EAAsB,IAAKN,EAAaM,EAAsB,IACrF,GAAGF,GAAU,CAErB,CAEI,OAAOrC,GAA2BC,EAAO9B,EAAc+B,EAAejf,EAGlF,CAEI,OAAQ0L,GACJ,IAAK,iBACD,OAAO,SAAC6V,GAAQ,OAAKA,CAAQ,EACjC,IAAK,6BACD,OAAO7C,GACX,IAAK,gBACD,OAAO,SAAC8C,GAAQ,OAAKA,CAAQ,EACjC,IAAK,eACD,OAAOlD,GACX,IAAK,cACD,OAAOC,GACX,IAAK,eACD,OAAOC,GACX,IAAK,gBACD,OAAOC,GACX,IAAK,eACD,OAAO,SAACgD,GAAQ,OAAKA,CAAQ,EACjC,IAAK,gBACD,OAAO,SAACC,GAAQ,OAAKA,CAAQ,EACjC,IAAK,gBACD,OAAO,SAACC,GAAQ,OAAKA,CAAQ,EACjC,IAAK,gBACD,OAAO,SAACC,GAAQ,OAAKA,CAAQ,EACjC,IAAK,kBACD,OAAOjD,GACX,IAAK,wBACD,OAAOX,GACX,IAAK,kBACD,OAAOE,GACX,IAAK,cACD,OAAOJ,GACX,IAAK,gBACD,OAAO,SAAC3b,GAAG,OAAKA,CAAG,EACvB,QACI,OAAO4c,GAA2BC,EAAO9B,EAAc+B,EAAejf,GAElF,CAMR,CAEA,SAAS6hB,GAAU7C,GACf,OAAa,MAATA,EACO8C,IAAM,SAACjjB,EAAMkjB,GAAS,OAAM,IAAIpxB,EAAUoxB,EAAU,GAAG,GAAG/C,EAAMgD,QAGhEthB,GAAM,CACTgX,QAAS7qB,GAGrB,CAWO,SAASo1B,GAAyCjiB,EAAGkd,EAAc8B,EAAOC,GAC7E,IAAI9V,EAAK/hB,EACH86B,EAAiBnlB,GAAWmgB,EAAc,IAAId,GAAa,EAAG,KAC9D+F,EAAkBplB,GAAWkiB,GAAe,GAClD,OAAOxC,GAAgCK,IAA8B11B,EAAI2kB,GAAS/L,GAArBmJ,EAAyBiZ,EAAWF,GAAkB96B,EAAK2V,GAAWpR,IAAI,SAACpD,GAAC,OAAKA,EAAE85B,IAAI,GAAErD,GAAQ,IAAM7V,IAAM,kBAAMsW,GAAYoC,GAAU7C,GAAQkD,EAAgBC,EAAiBniB,EAAE,GACrP,CAEO,SAASsiB,GAAmCtiB,EAAGkd,EAAc8B,EAAOC,GACvE,IAAMiD,EAAiBnlB,GAAWmgB,EAAc,IAAId,GAAa,EAAG,KAC9D+F,EAAkBplB,GAAWkiB,GAAe,GAClD,OAAOQ,GAAYoC,GAAU7C,GAAQkD,EAAgBC,EAAiBniB,EAC1E,CCzcA,IAAMuiB,GAAY,uFACZC,GAAoB,uEACpBC,GAAe,8EA0Cd,SAAS5rB,GAASjI,EAAKkI,GAC1B,IAEI,OADAA,EAASC,SApBV,SAAenI,GAClB,SAAS8zB,EAAc9zB,GACnB,OAAOA,EAAI8F,QAAQ8tB,GAAmB,iBAC1C,CACA,IAAMG,EAAmB/zB,EAAI+G,OAAO8E,cACpC,GAAI8nB,GAAUlb,KAAKsb,GACf,OxBmdD,SAAc/zB,GAAe,QAAAg0B,EAAAl0B,UAAApF,OAAP0f,EAAK,IAAApiB,MAAAg8B,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAL7Z,EAAK6Z,EAAA,GAAAn0B,UAAAm0B,GAC9B,GAAqB,IAAjB7Z,EAAM1f,OACN,OAAOsF,EAAI+G,OAEf,IAAMykB,EAAU,IAAMvhB,GAAOmQ,EAAM5Z,KAAK,KAAO,KAC/C,OAAOR,EAAI8F,QAAQ,IAAI2H,OAAO,IAAM+d,GAAU,IAAI1lB,QAAQ,IAAI2H,OAAO+d,EAAU,KAAM,GACzF,CwBzdezkB,CAAKgtB,EAAkB,IAAK,IAAK,IAAK,KAE5C,GAAIH,GAAkBnb,KAAKsb,GAC5B,OAAOD,EAAcC,GAEpB,GAAIF,GAAapb,KAAKsb,GACvB,OAAOD,EAAcC,EAAiBjuB,QAAQ,cAAe,KAG7D,MAAM,IAAIrM,MAAM,oFAExB,CAG4BqO,CAAM9H,IACnB,CACX,CACA,MAAAoZ,GACI,OAAO,CACX,CACJ,C,uGCvCe,SAAS8a,GAAe76B,EAAO2B,IAS9C,SAA4BA,GACxB,GAAc,MAAVA,GAA6B,IAAXA,EAAc,CAChC,GAAIA,EAAS,KAAU,EACnB,MAAM,IAAIvB,MAAM,8CAEpB,GAAImK,KAAKwB,IAAIpK,EAAS,MAAW,GAC7B,MAAM,IAAIvB,MAAM,gDAExB,CACJ,CAjBI06B,CAAmBn5B,GACnB,IAAM6K,EAAI,IAAIlJ,KAAKtD,GAEnB,OADAwM,EAAE7K,OAAmB,MAAVA,EAAiBA,GAA2C,KAAlC,IAAI2B,MAAOzB,oBACzC2K,CACX,CAqEO,SAASoC,GAASjL,EAAGkL,GACxB,IAEI,OADAA,EAASC,U,EARevB,GAQE5J,G,EARW,EAAAgL,E,q4BAAlClN,EAAIkN,EAAA,GAAEosB,EAAWpsB,EAAA,GAClBhN,EAAwB,MAAfo5B,GACmB,IAA5Bt5B,EAAKI,oBACY,MAAhBk5B,EAAsB,EAAkB,IAAdA,EAC1BF,GAAep5B,EAAK8B,UAAW5B,KAK3B,CACX,CACA,MAAOoN,GACH,OAAO,CACX,CAdG,I,IACsCJ,EAAlClN,EAAMs5B,EACPp5B,CAaV,C,y7DC1FO,IAAMq5B,GAAat7B,IACtB,SAAAs7B,EAAY5N,GAAGxtB,GAAA,KAAAo7B,GACXn7B,KAAKutB,EAAIA,CACb,IAKG,SAAS6N,GAA0B7N,GACtC,OAAO,IAAI4N,GAAc5N,EAC7B,CACO,SAAS8N,GAAuB/iB,GACnC,OAAOA,EAAEiV,CACb,CACO,IAAM+N,GAAa,SAAAC,GACtB,SAAAD,EAAYx3B,EAAG+pB,EAAMC,EAAOnrB,GAAG,IAAAyU,EAIV,OAJUrX,GAAA,KAAAu7B,IAC3BlkB,EAAAiQ,GAAA,KAAAiU,EAAA,CAAMx3B,KACD+pB,KAAOA,EACZzW,EAAK0W,MAAQA,EACb1W,EAAKzU,EAAS,EAAJA,EAAOyU,CACrB,CAAC,OAAAC,GAAAikB,EAAAC,GAAA17B,GAAAy7B,EAAA,CANqB,CAASH,IAW5B,SAASK,GAA6B13B,EAAG+pB,EAAMC,EAAOnrB,GACzD,OAAO,IAAI24B,GAAcx3B,EAAG+pB,EAAMC,EAAOnrB,EAC7C,CACO,SAAS84B,GAAwBnjB,GACpC,OAAOA,EAAEuV,IACb,CACO,SAAS6N,GAAyBpjB,GACrC,OAAOA,EAAEwV,KACb,CACO,SAAS6N,GAA0BrjB,GACtC,OAAOA,EAAE3V,CACb,CAIO,SAASi5B,GAAuBC,EAAOzN,GAC1CwN,EAAwB,OAAa,CACjC,IAAiBjlB,EAAMyX,EACvB,GAAS,MADCyN,EACK,CACX,IAAMrX,EAAKsX,GAFLD,GAGN,GAAIrX,aAAc8W,GAAe,CAC7B,IAAMS,EAAKvX,EACXqX,EAAQJ,GAAwBM,GAChC3N,EAAUwN,GAAuBF,GAAyBK,GAAKplB,EAAM,GACrE,SAASilB,CACb,CAEI,OAAQjlB,EAAM,EAAK,CAE3B,CAEI,OAAa,EAANA,CAGf,CACJ,CACO,SAASqlB,GAAoBt5B,GAChC,OAAOk5B,GAAuBl5B,EAAG,EACrC,CACO,SAASu5B,GAAiBvN,EAAGnB,EAAGjB,GACnC,IACIqC,EASAC,EAPJ,GAAS,MADCF,EACK,CACX,IAAMlK,EAAKsX,GAFLpN,GAGNC,EAAOnK,aAAc8W,GAA4BK,GAAJnX,GAAsC,CACvF,MAEImK,EAAK,EAIT,GAAW,MADCrC,EACK,CACb,IAAM4P,EAAOJ,GAFLxP,GAGRsC,EAAOsN,aAAgBZ,GAAgCK,GAANO,GAA0C,CAC/F,MAEItN,EAAK,EAET,IAAM7gB,EAA4B,GAAtB4gB,EAAKC,EAAMA,EAAKD,GAC5B,OAAU,IAAN5gB,EACOqtB,GAA0B7N,GAG1BiO,GAA6BjO,EAAGmB,EAAGpC,EAAGve,EAAI,EAEzD,CACO,SAASouB,GAAwB5X,EAAIzgB,EAAG0gB,GAC3C,IAAcjJ,EAAK6gB,EAAYC,EAAKC,EAChCnN,EASAC,EAPJ,GAAS,MADC7K,EACK,CACX,IAAM2X,EAAOJ,GAFPvX,GAGN4K,EAAQ+M,aAAgBZ,GAA8BK,GAANO,GAAwC,CAC5F,MAEI/M,EAAM,EAIV,GAAW,MADC3K,EACK,CACb,IAAM+X,EAAOT,GAFLtX,GAGR4K,EAAQmN,aAAgBjB,GAAgCK,GAANY,GAA0C,CAChG,MAEInN,EAAM,EAEV,GAAIA,EAAOD,EAAM,EAAI,CACjB,IAAMxX,EAAamkB,GAAQtX,GAC3B,GAAI7M,aAAsB2jB,GAAe,CACrC,IAAMjM,EAAU1X,EAChB,IAAsD,OAAhD4D,EAAMkgB,GAAwBpM,KAA4B+M,EAAON,GAAQvgB,cAAuB+f,GAAgCK,GAANS,GAA0C,EAAM,GAAOjN,EAAM,EAAI,CAC7L,IAAMvX,EAAekkB,GAAQL,GAAwBpM,IACrD,GAAIzX,aAAwB0jB,GAAe,CACvC,IAAMhM,EAAM1X,EACZ,OAAOqkB,GAAiBA,GAAiB1X,EAAIzgB,EAAG23B,GAAwBnM,IAAO+L,GAAuB/L,GAAM2M,GAAiBP,GAAyBpM,GAAM+L,GAAuBhM,GAAUqM,GAAyBrM,IAC1N,CAEI,MAAM,IAAI9uB,MAAM,gCAExB,CAEI,OAAO07B,GAAiBA,GAAiB1X,EAAIzgB,EAAG23B,GAAwBpM,IAAWgM,GAAuBhM,GAAUqM,GAAyBrM,GAErJ,CAEI,MAAM,IAAI9uB,MAAM,gCAExB,CACK,GAAI4uB,EAAOC,EAAM,EAAI,CACtB,IAAMG,EAAeuM,GAAQvX,GAC7B,GAAIgL,aAAwB+L,GAAe,CACvC,IAAM9L,EAAUD,EAChB,IAAuD,OAAjD8M,EAAMX,GAAyBlM,KAA4B8M,EAAOR,GAAQO,cAAuBf,GAAgCK,GAANW,GAA0C,EAAM,GAAOlN,EAAM,EAAI,CAC9L,IAAMK,EAAeqM,GAAQJ,GAAyBlM,IACtD,GAAIC,aAAwB6L,GAAe,CACvC,IAAM5L,EAAMD,EACZ,OAAOwM,GAAiBA,GAAiBR,GAAwBjM,GAAU6L,GAAuB7L,GAAUiM,GAAwB/L,IAAO2L,GAAuB3L,GAAMuM,GAAiBP,GAAyBhM,GAAM5rB,EAAG0gB,GAC/N,CAEI,MAAM,IAAIjkB,MAAM,gCAExB,CAEI,OAAO07B,GAAiBR,GAAwBjM,GAAU6L,GAAuB7L,GAAUyM,GAAiBP,GAAyBlM,GAAU1rB,EAAG0gB,GAE1J,CAEI,MAAM,IAAIjkB,MAAM,gCAExB,CAEI,OAAO07B,GAAiB1X,EAAIzgB,EAAG0gB,EAEvC,CACO,SAASgY,GAAkBngB,EAAUkR,EAAGrV,GAC3C,GAAS,MAALA,EAAW,CACX,IAAMsM,EAAKsX,GAAQ5jB,GACbC,EAAsD,EAAlDkE,EAASuT,QAAQrC,EAAG8N,GAAuB7W,IACrD,GAAIA,aAAc8W,GAAe,CAC7B,IAAMS,EAAKvX,EACX,OAAIrM,EAAI,EACGgkB,GAAwBK,GAAkBngB,EAAUkR,EAAGkO,GAAwBM,IAAMV,GAAuBU,GAAKL,GAAyBK,IAEtI,IAAN5jB,EACED,EAGAikB,GAAwBV,GAAwBM,GAAKV,GAAuBU,GAAKS,GAAkBngB,EAAUkR,EAAGmO,GAAyBK,IAExJ,CAEI,IAAMU,EAAwD,EAAlDpgB,EAASuT,QAAQrC,EAAG8N,GAAuB7W,IACvD,OAAIiY,EAAM,EACCjB,GAA6BjO,OAAGmP,EAAuBxkB,EAAG,GAEpD,IAARukB,EACEvkB,EAGAsjB,GAA6BjO,EAAGrV,OAAGwkB,EAAuB,EAG7E,CAEI,OAAOtB,GAA0B7N,EAEzC,CAgIO,SAASoP,GAAkB5M,EAAcC,EAAO6L,GACnDc,EAAmB,OAAa,CAC5B,IAAMtgB,EAAW0T,EAAcxC,EAAIyC,EACnC,GAAS,MADqC6L,EAC/B,CACX,IAAMrX,EAAKsX,GAF+BD,GAGpC1jB,EAAsD,EAAlDkE,EAASuT,QAAQrC,EAAG8N,GAAuB7W,IACrD,GAAIA,aAAc8W,GAAe,CAC7B,IAAMS,EAAKvX,EACX,GAAIrM,EAAI,EAAG,CACP4X,EAAe1T,EACf2T,EAAQzC,EACRsO,EAAQJ,GAAwBM,GAChC,SAASY,CACb,CACK,GAAU,IAANxkB,EACL,OAAO,EAGP4X,EAAe1T,EACf2T,EAAQzC,EACRsO,EAAQH,GAAyBK,GACjC,SAASY,CAEjB,CAEI,OAAa,IAANxkB,CAEf,CAEI,OAAO,CAGf,CACJ,CACO,SAASykB,GAAmB1M,EAAO2L,GACtCe,EAAoB,OAAa,CAC7B,IAAM12B,EAAIgqB,EACV,GAAS,MADY2L,EACN,CACX,IAAMrX,EAAKsX,GAFMD,GAGjB,GAAIrX,aAAc8W,GAAe,CAC7B,IAAMS,EAAKvX,EACXoY,GAAmB12B,EAAGu1B,GAAwBM,IAC9C71B,EAAEm1B,GAAuBU,IACzB7L,EAAQhqB,EACR21B,EAAQH,GAAyBK,GACjC,SAASa,CACb,CAEI12B,EAAEm1B,GAAuB7W,GAEjC,CACA,KACJ,CACJ,CA6WO,IAAMqY,GAA2B,SAAA5lB,GACpC,SAAA4lB,EAAYpM,EAAOtW,GAAS,IAAAwN,EAGD,OAHC5nB,GAAA,KAAA88B,IACxBlV,EAAAN,GAAA,KAAAwV,IACKpM,MAAQA,EACb9I,EAAKxN,QAAUA,EAAQwN,CAC3B,CAAC,OAAAtQ,GAAAwlB,EAAA5lB,GAAApX,GAAAg9B,EAAA,CALmC,CAAS10B,GAU1C,SAAS20B,GAA0BnM,GACtCmM,EAA2B,OAAa,CACpC,IAAMrM,EAAQE,EACd,GAAKC,GAAUH,GAoBX,OAAOI,KAnBP,IAAMhyB,EAAIqY,GAAKuZ,GACTK,EAAO3Z,GAAKsZ,GAClB,GAAS,MAAL5xB,EAAW,CACX,IAAMk+B,EAAKjB,GAAQj9B,GACnB,GAAIk+B,aAAczB,GAAe,CAC7B,IAAM0B,EAAKD,EACXpM,EAAYzX,GAAgB,CAACuiB,GAAwBuB,GAAK5B,GAA0BC,GAAuB2B,IAAMtB,GAAyBsB,IAAMlM,GAChJ,SAASgM,CACb,CAEI,OAAOrM,CAEf,CAEIE,EAAYG,CAQxB,CACJ,CACO,SAASmM,GAAyBv6B,GACrC,OAAO,IAAIm6B,GAA4BC,GAA0B/hB,GAAYrY,KAAK,EACtF,CAOO,SAASw6B,GAAsB37B,GAClC,GAAIA,EAAE4Y,QAAS,CACX,IAAMxC,EAAapW,EAAEkvB,MACrB,GAAIG,GAAUjZ,GACV,OAPL,WACH,MAAM,IAAIpX,MAAM,8BACpB,CAKmB48B,GAEN,GAAwB,MAApBjmB,GAAKS,GAEV,OAAO0jB,GADGS,GAAQ5kB,GAAKS,KAIvB,MAAM,IAAIpX,MAAM,kEAExB,CAEI,OArBD,WACH,MAAM,IAAIA,MAAM,0BACpB,CAmBe68B,EAEf,CA4BO,SAASC,GAA4B36B,GACxC,IAAInB,EAAI07B,GAAyBv6B,GACjC,MAAO,CACH,uDAAsD,WAClD,OAAOw6B,GAAsB37B,EACjC,EACA,6CAA4C,WACxC,OAAO27B,GAAsB37B,EACjC,EACA,0CAAyC,WACrC,OArCL,SAAgCA,GACnC,GAAIA,EAAE4Y,QAAS,CACX,IAAMxC,EAAapW,EAAEkvB,MACrB,GAAKG,GAAUjZ,GAgBX,OAAO,EAfP,GAAwB,MAApBT,GAAKS,GAAqB,CAE1B,GADUmkB,GAAQ5kB,GAAKS,cACN2jB,GACb,MAAM,IAAI/6B,MAAM,oEAIhB,OADAgB,EAAEkvB,MAAQqM,GAA0B3lB,GAAKQ,KACjCiZ,GAAUrvB,EAAEkvB,MAE5B,CAEI,MAAM,IAAIlwB,MAAM,mEAM5B,CAGI,OADAgB,EAAE4Y,SAAU,GACJyW,GAAUrvB,EAAEkvB,MAE5B,CAWmB6M,CAAuB/7B,EAClC,EACA,uCAAsC,WAClCA,EAAI07B,GAAyBv6B,EACjC,EACAvD,QAAO,WACP,EAER,CAobO,SAASo+B,GAAsBlhB,EAAUkI,EAAIC,GAChD,OAAU,MAAND,EACU,MAANC,EACO,GAGC,EAGD,MAANA,EACE,EAG0E,EA7blF,SAAqCuL,EAAcyN,EAAQC,GAC9DC,EAA6B,OAAa,CACtC,IAAMrhB,EAAW0T,EAAc4N,EAAKH,EAAQnN,EAAKoN,EACjD,GAAK7M,GAAU+M,GAoaV,OAAI/M,GAAUP,GACR,GAGC,EAvaR,GAAKO,GAAUP,GAgaX,OAAO,EA/ZP,GAAgB,MAAZnZ,GAAKmZ,GACL,GAAgB,MAAZnZ,GAAKymB,GAAa,CAClB,IAAMC,EAAO9B,GAAQ5kB,GAAKymB,IACpBE,EAAO/B,GAAQ5kB,GAAKmZ,IAC1B,GAAIuN,aAAgBtC,GAAe,CAC/B,IAAMwC,EAAQF,EACd,GAAsC,MAAlCnC,GAAwBqC,GAAgB,CACxC,KAAID,aAAgBvC,IAmFf,CACD,IAAMmB,EAAsF,EAAhFpgB,EAASuT,QAAQyL,GAAuByC,GAAQzC,GAAuBwC,IACnF,GAAY,IAARpB,EACA,OAAa,EAANA,EAGP1M,EAAe1T,EACfmhB,EAASv2B,GAAKy0B,GAAyBoC,GAAQ3mB,GAAKwmB,IACpDF,EAASx2B,QAAKy1B,EAAuBvlB,GAAKkZ,IAC1C,SAASqN,CAEjB,CA7FI,IAAMK,EAAQF,EACd,GAAsC,MAAlCpC,GAAwBsC,GAAgB,CACxC,IAAM5lB,EAAqF,EAAjFkE,EAASuT,QAAQyL,GAAuByC,GAAQzC,GAAuB0C,IACjF,GAAU,IAAN5lB,EACA,OAAW,EAAJA,EAGP4X,EAAe1T,EACfmhB,EAASv2B,GAAKy0B,GAAyBoC,GAAQ3mB,GAAKwmB,IACpDF,EAASx2B,GAAKy0B,GAAyBqC,GAAQ5mB,GAAKkZ,IACpD,SAASqN,CAEjB,CAEI,IAAIM,OAAW,EAAEC,OAAI,EAAEC,OAAI,EAAEC,OAAI,EAAEC,OAAI,EAkCvC,OAjCKxN,GAAU+M,GAoBL/M,GAAUP,GAWhB2N,EAAc,EAVE,MAAZ9mB,GAAKmZ,IACL2N,EAAc,EACdG,EAAOhnB,GAAKkZ,GACZ+N,EAAOtC,GAAQ5kB,GAAKmZ,KAGpB2N,EAAc,EA1BF,MAAZ9mB,GAAKymB,IACLK,EAAc,EACdC,EAAO9mB,GAAKwmB,GACZO,EAAOpC,GAAQ5kB,GAAKymB,KAEd/M,GAAUP,GAWhB2N,EAAc,EAVE,MAAZ9mB,GAAKmZ,IACL2N,EAAc,EACdG,EAAOhnB,GAAKkZ,GACZ+N,EAAOtC,GAAQ5kB,GAAKmZ,KAGpB2N,EAAc,EAoBlBA,GACJ,KAAK,EACD,GAAIE,aAAgB5C,GAAe,CAC/B,IAAM+C,EAAQH,EACdnO,EAAe1T,EACfmhB,EAAStkB,GAAgB,CAACuiB,GAAwB4C,GAAQ7C,GAA6BH,GAAuBgD,QAAQ3B,EAAuBhB,GAAyB2C,GAAQ,IAAKJ,GACnLR,EAASpN,EACT,SAASqN,CACb,CAEI3N,EAAe1T,EACfmhB,EAAStkB,GAAgB,MAACwjB,EAAuBtB,GAA0BC,GAAuB6C,KAASD,GAC3GR,EAASpN,EACT,SAASqN,EAEjB,KAAK,EACD,GAAIU,aAAgB9C,GAAe,CAC/B,IAAMgD,EAAQF,EACdrO,EAAe1T,EACfmhB,EAASG,EACTF,EAASvkB,GAAgB,CAACuiB,GAAwB6C,GAAQ9C,GAA6BH,GAAuBiD,QAAQ5B,EAAuBhB,GAAyB4C,GAAQ,IAAKH,GACnL,SAAST,CACb,CAEI3N,EAAe1T,EACfmhB,EAASG,EACTF,EAASvkB,GAAgB,MAACwjB,EAAuBtB,GAA0BC,GAAuB+C,KAASD,GAC3G,SAAST,EAEjB,QACI,MAAM,IAAIn9B,MAAM,6CAgBpC,KACK,CACD,IAAIg+B,OAAa,EAAEC,OAAI,EAAEC,OAAI,EAAEC,OAAI,EAAEC,OAAI,EAkCzC,OAjCK/N,GAAU+M,GAoBL/M,GAAUP,GAWhBkO,EAAgB,EAVA,MAAZrnB,GAAKmZ,IACLkO,EAAgB,EAChBG,EAAOvnB,GAAKkZ,GACZsO,EAAO7C,GAAQ5kB,GAAKmZ,KAGpBkO,EAAgB,EA1BJ,MAAZrnB,GAAKymB,IACLY,EAAgB,EAChBC,EAAOrnB,GAAKwmB,GACZc,EAAO3C,GAAQ5kB,GAAKymB,KAEd/M,GAAUP,GAWhBkO,EAAgB,EAVA,MAAZrnB,GAAKmZ,IACLkO,EAAgB,EAChBG,EAAOvnB,GAAKkZ,GACZsO,EAAO7C,GAAQ5kB,GAAKmZ,KAGpBkO,EAAgB,EAoBpBA,GACJ,KAAK,EACD,GAAIE,aAAgBnD,GAAe,CAC/B,IAAMsD,EAAQH,EACd1O,EAAe1T,EACfmhB,EAAStkB,GAAgB,CAACuiB,GAAwBmD,GAAQpD,GAA6BH,GAAuBuD,QAAQlC,EAAuBhB,GAAyBkD,GAAQ,IAAKJ,GACnLf,EAASpN,EACT,SAASqN,CACb,CAEI3N,EAAe1T,EACfmhB,EAAStkB,GAAgB,MAACwjB,EAAuBtB,GAA0BC,GAAuBoD,KAASD,GAC3Gf,EAASpN,EACT,SAASqN,EAEjB,KAAK,EACD,GAAIiB,aAAgBrD,GAAe,CAC/B,IAAMuD,EAAQF,EACd5O,EAAe1T,EACfmhB,EAASG,EACTF,EAASvkB,GAAgB,CAACuiB,GAAwBoD,GAAQrD,GAA6BH,GAAuBwD,QAAQnC,EAAuBhB,GAAyBmD,GAAQ,IAAKH,GACnL,SAAShB,CACb,CAEI3N,EAAe1T,EACfmhB,EAASG,EACTF,EAASvkB,GAAgB,MAACwjB,EAAuBtB,GAA0BC,GAAuBsD,KAASD,GAC3G,SAAShB,EAEjB,QACI,MAAM,IAAIn9B,MAAM,6CAE5B,CACJ,KACK,MAAIs9B,aAAgBvC,IAmFpB,CACD,IAAMwD,EAAqF,EAA/EziB,EAASuT,QAAQyL,GAAuBuC,GAAOvC,GAAuBwC,IAClF,GAAY,IAARiB,EACA,OAAa,EAANA,EAGP/O,EAAe1T,EACfmhB,EAASrmB,GAAKwmB,GACdF,EAAStmB,GAAKkZ,GACd,SAASqN,CAEjB,CA7FI,IAAMqB,EAAQlB,EACd,GAAsC,MAAlCpC,GAAwBsD,GAAgB,CACxC,IAAMC,EAAsF,EAAhF3iB,EAASuT,QAAQyL,GAAuBuC,GAAOvC,GAAuB0D,IAClF,GAAY,IAARC,EACA,OAAa,EAANA,EAGPjP,EAAe1T,EACfmhB,EAASv2B,QAAKy1B,EAAuBvlB,GAAKwmB,IAC1CF,EAASx2B,GAAKy0B,GAAyBqD,GAAQ5nB,GAAKkZ,IACpD,SAASqN,CAEjB,CAEI,IAAIuB,OAAa,EAAEC,OAAI,EAAEC,OAAI,EAAEC,OAAI,EAAEC,OAAI,EAkCzC,OAjCKzO,GAAU+M,GAoBL/M,GAAUP,GAWhB4O,EAAgB,EAVA,MAAZ/nB,GAAKmZ,IACL4O,EAAgB,EAChBG,EAAOjoB,GAAKkZ,GACZgP,EAAOvD,GAAQ5kB,GAAKmZ,KAGpB4O,EAAgB,EA1BJ,MAAZ/nB,GAAKymB,IACLsB,EAAgB,EAChBC,EAAO/nB,GAAKwmB,GACZwB,EAAOrD,GAAQ5kB,GAAKymB,KAEd/M,GAAUP,GAWhB4O,EAAgB,EAVA,MAAZ/nB,GAAKmZ,IACL4O,EAAgB,EAChBG,EAAOjoB,GAAKkZ,GACZgP,EAAOvD,GAAQ5kB,GAAKmZ,KAGpB4O,EAAgB,EAoBpBA,GACJ,KAAK,EACD,GAAIE,aAAgB7D,GAAe,CAC/B,IAAMgE,EAAQH,EACdpP,EAAe1T,EACfmhB,EAAStkB,GAAgB,CAACuiB,GAAwB6D,GAAQ9D,GAA6BH,GAAuBiE,QAAQ5C,EAAuBhB,GAAyB4D,GAAQ,IAAKJ,GACnLzB,EAASpN,EACT,SAASqN,CACb,CAEI3N,EAAe1T,EACfmhB,EAAStkB,GAAgB,MAACwjB,EAAuBtB,GAA0BC,GAAuB8D,KAASD,GAC3GzB,EAASpN,EACT,SAASqN,EAEjB,KAAK,EACD,GAAI2B,aAAgB/D,GAAe,CAC/B,IAAMiE,EAAQF,EACdtP,EAAe1T,EACfmhB,EAASG,EACTF,EAASvkB,GAAgB,CAACuiB,GAAwB8D,GAAQ/D,GAA6BH,GAAuBkE,QAAQ7C,EAAuBhB,GAAyB6D,GAAQ,IAAKH,GACnL,SAAS1B,CACb,CAEI3N,EAAe1T,EACfmhB,EAASG,EACTF,EAASvkB,GAAgB,MAACwjB,EAAuBtB,GAA0BC,GAAuBgE,KAASD,GAC3G,SAAS1B,EAEjB,QACI,MAAM,IAAIn9B,MAAM,6CAehC,CACJ,KACK,CACUu7B,GAAQ5kB,GAAKmZ,IAAxB,IACImP,OAAa,EAAEC,OAAI,EAAEC,OAAE,EAAEnD,OAAI,EAAEoD,OAAI,EAkCvC,OAjCK/O,GAAU+M,GAoBL/M,GAAUP,GAWhBmP,EAAgB,EAVA,MAAZtoB,GAAKmZ,IACLmP,EAAgB,EAChBjD,EAAOplB,GAAKkZ,GACZsP,EAAO7D,GAAQ5kB,GAAKmZ,KAGpBmP,EAAgB,EA1BJ,MAAZtoB,GAAKymB,IACL6B,EAAgB,EAChBC,EAAOtoB,GAAKwmB,GACZ+B,EAAK5D,GAAQ5kB,GAAKymB,KAEZ/M,GAAUP,GAWhBmP,EAAgB,EAVA,MAAZtoB,GAAKmZ,IACLmP,EAAgB,EAChBjD,EAAOplB,GAAKkZ,GACZsP,EAAO7D,GAAQ5kB,GAAKmZ,KAGpBmP,EAAgB,EAoBpBA,GACJ,KAAK,EACD,GAAIE,aAAcpE,GAAe,CAC7B,IAAMsE,EAAMF,EACZ3P,EAAe1T,EACfmhB,EAAStkB,GAAgB,CAACuiB,GAAwBmE,GAAMpE,GAA6BH,GAAuBuE,QAAMlD,EAAuBhB,GAAyBkE,GAAM,IAAKH,GAC7KhC,EAASpN,EACT,SAASqN,CACb,CAEI3N,EAAe1T,EACfmhB,EAAStkB,GAAgB,MAACwjB,EAAuBtB,GAA0BC,GAAuBqE,KAAOD,GACzGhC,EAASpN,EACT,SAASqN,EAEjB,KAAK,EACD,GAAIiC,aAAgBrE,GAAe,CAC/B,IAAMuE,EAAMF,EACZ5P,EAAe1T,EACfmhB,EAASG,EACTF,EAASvkB,GAAgB,CAACuiB,GAAwBoE,GAAMrE,GAA6BH,GAAuBwE,QAAMnD,EAAuBhB,GAAyBmE,GAAM,IAAKtD,GAC7K,SAASmB,CACb,CAEI3N,EAAe1T,EACfmhB,EAASG,EACTF,EAASvkB,GAAgB,MAACwjB,EAAuBtB,GAA0BC,GAAuBsE,KAASpD,GAC3G,SAASmB,EAEjB,QACI,MAAM,IAAIn9B,MAAM,6CAE5B,KAEC,IAAgB,MAAZ2W,GAAKymB,GAqET,CACD5N,EAAe1T,EACfmhB,EAASrmB,GAAKwmB,GACdF,EAAStmB,GAAKkZ,GACd,SAASqN,CACb,CAzEiB5B,GAAQ5kB,GAAKymB,IAA1B,IACImC,OAAa,EAAEC,OAAI,EAAEC,OAAI,EAAE1D,OAAI,EAAE2D,OAAI,EAkCzC,OAjCKrP,GAAU+M,GAoBL/M,GAAUP,GAWhByP,EAAgB,EAVA,MAAZ5oB,GAAKmZ,IACLyP,EAAgB,EAChBxD,EAAOnlB,GAAKkZ,GACZ4P,EAAOnE,GAAQ5kB,GAAKmZ,KAGpByP,EAAgB,EA1BJ,MAAZ5oB,GAAKymB,IACLmC,EAAgB,EAChBC,EAAO5oB,GAAKwmB,GACZqC,EAAOlE,GAAQ5kB,GAAKymB,KAEd/M,GAAUP,GAWhByP,EAAgB,EAVA,MAAZ5oB,GAAKmZ,IACLyP,EAAgB,EAChBxD,EAAOnlB,GAAKkZ,GACZ4P,EAAOnE,GAAQ5kB,GAAKmZ,KAGpByP,EAAgB,EAoBpBA,GACJ,KAAK,EACD,GAAIE,aAAgB1E,GAAe,CAC/B,IAAM4E,EAAQF,EACdjQ,EAAe1T,EACfmhB,EAAStkB,GAAgB,CAACuiB,GAAwByE,GAAQ1E,GAA6BH,GAAuB6E,QAAQxD,EAAuBhB,GAAyBwE,GAAQ,IAAKH,GACnLtC,EAASpN,EACT,SAASqN,CACb,CAEI3N,EAAe1T,EACfmhB,EAAStkB,GAAgB,MAACwjB,EAAuBtB,GAA0BC,GAAuB2E,KAASD,GAC3GtC,EAASpN,EACT,SAASqN,EAEjB,KAAK,EACD,GAAIuC,aAAgB3E,GAAe,CAC/B,IAAM6E,EAAQF,EACdlQ,EAAe1T,EACfmhB,EAASG,EACTF,EAASvkB,GAAgB,CAACuiB,GAAwB0E,GAAQ3E,GAA6BH,GAAuB8E,QAAQzD,EAAuBhB,GAAyByE,GAAQ,IAAK7D,GACnL,SAASoB,CACb,CAEI3N,EAAe1T,EACfmhB,EAASG,EACTF,EAASvkB,GAAgB,MAACwjB,EAAuBtB,GAA0BC,GAAuB4E,KAAS3D,GAC3G,SAASoB,EAEjB,QACI,MAAM,IAAIn9B,MAAM,6CAQ5B,CAYR,KACJ,CACJ,CAcem9B,CAA4BrhB,EAAUtB,GAAYwJ,GAAKxJ,GAAYyJ,GAElF,CA4BO,SAAS4b,GAA0B19B,EAAG8wB,EAAKjyB,GAC9C,IAAI2D,EAAI3D,EACRq7B,IAAmB,SAAC/9B,GAChB4X,GAAQ+c,EAAKtuB,EAAGrG,GAChBqG,EAAMA,EAAI,EAAK,CACnB,GAAGxC,EACP,CA4BO,SAAS29B,GAAoBhkB,EAAUlE,GAC1C,GAAIvZ,EAAYuZ,GACZ,OARD,SAA+BkE,EAAUqS,GAC5C,OAAO4R,IAAO,SAAC3pB,EAAK4W,GAAC,OAAKiP,GAAkBngB,EAAUkR,EAAG5W,EAAI,QAAE+lB,EAAuBhO,EAC1F,CAMe6R,CAAsBlkB,EAAUlE,GAEtC,GAAIA,aAAanB,GAClB,OARD,SAA8BqF,EAAUqS,GAC3C,OAAO8R,IAAO,SAAC7pB,EAAK4W,GAAC,OAAKiP,GAAkBngB,EAAUkR,EAAG5W,EAAI,QAAE+lB,EAAuBhO,EAC1F,CAMe+R,CAAqBpkB,EAAUlE,GAGtC,IAAM+D,EAAK1b,EAAc2X,GACzB,IACI,OA/BL,SAAwC4X,EAAc3B,EAASsS,GAClC,OAAa,CACzC,IAAMrkB,EAAW0T,EAAcpZ,EAAMyX,EAAS3tB,EAAIigC,EAClD,IAAIjgC,EAAE,6CAOF,OAAOkW,EANPoZ,EAAe1T,EACf+R,EAAUoO,GAAkBngB,EAAU5b,EAAE,0DAA2DkW,GACnG+pB,EAAQjgC,CAOhB,CACJ,CAiBmBkgC,CAA+BtkB,OAAUqgB,EAAuBxgB,EAC3E,CAAC,QAEGhd,EAAYgd,EAChB,CAER,CACO,IAAM0kB,GAAS,WAClB,SAAAA,EAAYvkB,EAAUiV,GAAMvxB,GAAA,KAAA6gC,GACxB5gC,KAAKqc,SAAWA,EAChBrc,KAAKsxB,KAAOA,CAChB,CAAC,OAAAzxB,GAAA+gC,EAAA,EAAA1gC,IAAA,cAAAC,MACD,WAEI,OAA2C,EA2O5C,SAAoCoxB,GACvC,IAAIvY,EAAM,EACJqC,EAAa7a,EAAc+wB,GACjC,IACI,KAAOlW,EAAW,8CAEdrC,GAAUA,GAAO,GAAK9V,EADVmY,EAAW,2DACsB,IAAO,CAE5D,CAAC,QAEGnc,EAAYmc,EAChB,CACA,OAAuB,EAAhB3Q,KAAKwB,IAAI8M,EACpB,CAxPe6nB,CADO7gC,KAElB,GAAC,CAAAE,IAAA,SAAAC,MACD,SAAO0P,GACH,IAAI8hB,EAEJ,OAAQ9hB,aAAgB+wB,IAAgBjP,EAAS9hB,EAAyH,IAAnH0tB,GAAsBuD,GAD/D9gC,MAC+F+gC,GAD/F/gC,MAC2H+gC,GAAoBpP,IACjK,GAAC,CAAAzxB,IAAA,WAAAC,MACD,WAEI,MAAQ,QAAUmH,GAAK,KAAM2qB,IAAM,SAACpzB,GAEhC,OAAO4C,EADY5C,EAEvB,GAJcmB,OAIA,GAClB,GAAC,CAAAE,IACIS,OAAOqyB,YAAW5xB,IAAvB,WACI,MAAO,WACX,GAAC,CAAAlB,IAAA,SAAAC,MACD,WAEI,OAAOrB,MAAMiV,KADC/T,KAElB,GAAC,CAAAE,IAAA,YAAAC,MACD,SAAU0P,GAEN,OAA8G,EAAvG0tB,GAAsBuD,GADnB9gC,MAC+C+gC,GAD/C/gC,MACuE+gC,GAAoBlxB,GACzG,GAAC,CAAA3P,IACD,oDAAmDC,MAAnD,SAAoDtB,GAChD,MAAM,IAAI0B,MAAM,qBACpB,GAAC,CAAAL,IACD,iDAAgDC,MAAhD,WACI,MAAM,IAAII,MAAM,qBACpB,GAAC,CAAAL,IACD,uDAAsDC,MAAtD,SAAuDtB,GACnD,MAAM,IAAI0B,MAAM,qBACpB,GAAC,CAAAL,IACD,yDAAwDC,MAAxD,SAAyDtB,GAErD,OAAO89B,GAAkBmE,GADf9gC,MAC2CnB,EAAGkiC,GAD9C/gC,MAEd,GAAC,CAAAE,IACD,2DAA0DC,MAA1D,SAA2DqzB,EAAKjyB,GAE5D6+B,GAA0BW,GADhB/gC,MACwCwzB,EAAKjyB,EAC3D,GAAC,CAAArB,IACD,0DAAyDC,MAAzD,WACI,OAAO,CACX,GAAC,CAAAD,IACD,qDAAoDC,MAApD,WAEI,OAAiC,EAA1B6gC,GADGhhC,KAEd,GAAC,CAAAE,IACD,6DAA4DC,MAA5D,WAEI,OAAiC,EAA1B6gC,GADGhhC,KAEd,GAAC,CAAAE,IAAA,gBAAAC,MACD,WAEI,OAAOk9B,GAA4B0D,GADzB/gC,MAEd,GAAC,CAAAE,IACAS,OAAOC,SAAQT,MAAhB,WACI,OAAOU,EAAWL,EAAcR,MACpC,GAAC,CAAAE,IACD,+CAA8CC,MAA9C,WAEI,OAAOk9B,GAA4B0D,GADzB/gC,MAEd,GAAC,CAAAE,IAAA,OAAAkB,IACD,WAEI,OAAiC,EAA1B4/B,GADGhhC,KAEd,GAAC,CAAAE,IAAA,MAAAC,MACD,SAAIotB,GAEA,MAAM,IAAIhtB,MAAM,wBAEpB,GAAC,CAAAL,IAAA,QAAAC,MACD,WACI,MAAM,IAAII,MAAM,wBACpB,GAAC,CAAAL,IAAA,SAAAC,MACD,SAAOotB,GACH,MAAM,IAAIhtB,MAAM,wBAEpB,GAAC,CAAAL,IAAA,MAAAC,MACD,SAAIotB,GAEA,OA6CD,SAA6B7qB,EAAGvC,GACnC,OAAOw8B,GAAkBmE,GAAwBp+B,GAAIvC,EAAO4gC,GAAoBr+B,GACpF,CA/Ceu+B,CADGjhC,KACoButB,EAClC,GAAC,CAAArtB,IAAA,OAAAC,MACD,WAEI,OAAO8xB,IAAM,SAACpzB,GAAC,OAAKA,CAAC,GADXmB,KAEd,GAAC,CAAAE,IAAA,SAAAC,MACD,WAEI,OAAO8xB,IAAM,SAACpzB,GAAC,OAAKA,CAAC,GADXmB,KAEd,GAAC,CAAAE,IAAA,UAAAC,MACD,WAEI,OAAO8xB,IAAM,SAACnuB,GAAC,MAAK,CAACA,EAAGA,EAAE,GADhB9D,KAEd,GAAC,CAAAE,IAAA,UAAAC,MACD,SAAQ+F,EAAGytB,GACP,IAAMjxB,EAAI1C,KACV4zB,IAAU,SAAC/0B,GACPqH,EAAErH,EAAGA,EAAG6D,EACZ,GAAGA,EACP,IAAC,CA5GiB,GAoHf,SAASo+B,GAAwBhJ,GACpC,OAAOA,EAAKzb,QAChB,CACO,SAAS0kB,GAAoBjJ,GAChC,OAAOA,EAAKxG,IAChB,CAUO,SAAS0P,GAAqBt+B,GACjC,OAAOs5B,GAAoB+E,GAAoBr+B,GACnD,CCt9CA,SAASw+B,GAAWC,EAAKrpB,EAASspB,GAC9B,IACI,MAAU,aAAeD,EAAO,qBAAwBC,EAAU,KAAO,KAASrK,KAAKC,UAAUlf,EAAS,KAAM,EACpH,CACA,MAAOH,GACH,MAAS,aAAewpB,EAAO,+EAAmFC,EAAU,KAAO,IACvI,CACJ,CAEA,SAASC,GAAc1gB,EAAM2gB,GACzB,IAAMC,EAA0B,IAAdD,EAAM35B,IAAau5B,GAAWI,EAAM57B,OAAO,GAAI47B,EAAM57B,OAAO,IAAI,GAAwB,IAAd47B,EAAM35B,IAAeu5B,GAAWI,EAAM57B,OAAO,GAAI47B,EAAM57B,OAAO,IAAI,GAAS,aAAgB47B,EAAM57B,OAAO,GAAsB,IAAd47B,EAAM35B,IAAau5B,GAAWI,EAAM57B,OAAO,GAAI47B,EAAM57B,OAAO,IAAI,GAAwB,IAAd47B,EAAM35B,IAAcu5B,GAAWI,EAAM57B,OAAO,GAAI47B,EAAM57B,OAAO,IAAI,GAAU,WAAa47B,EAAM57B,OAAO,GAAM,eAAmC,IAAd47B,EAAM35B,IAAgB,aAAe25B,EAAM57B,OAAO,GAAM,MAAUqxB,KAAKC,UAAUsK,EAAM57B,OAAO,GAAI,KAAM,GAA4B,IAAd47B,EAAM35B,IAAc,uCAAyCL,GAAK,OAAQg6B,EAAM57B,OAAO,IAAuB,IAAd47B,EAAM35B,IAAc,sDAAwD25B,EAAM57B,OAAO,GAAMw7B,GAAWI,EAAM57B,OAAO,GAAI47B,EAAM57B,OAAO,IAAI,GACxvB,OAAkB,IAAd47B,EAAM35B,IACC45B,EAGE,cAAgB5gB,EAAQ,MAAS4gB,CAElD,CAEO,SAASC,GAAU7gB,EAAM8gB,EAAS3pB,GACrC,IAAMH,EAAa8pB,EAAQ9gB,EAAM7I,GACjC,GAAuB,IAAnBH,EAAWhQ,IAAW,CACtB,IAAM25B,EAAQ3pB,EAAWjS,OAAO,GAChC,OAAO,IAAIkmB,GAAe,EAAG,CAACyV,GAAcC,EAAM,GAAIA,EAAM,KAChE,CAEI,OAAO,IAAI1V,GAAe,EAAG,CAACjU,EAAWjS,OAAO,IAExD,CAEO,SAASg8B,GAAWD,EAAS3pB,GAChC,IACI,OAAO0pB,GAAU,IAAKC,EAAS1K,KAAKnoB,MAAMkJ,GAC9C,CACA,MAAOH,GACH,GAAIA,aAAsBgqB,YACtB,OAAO,IAAI/V,GAAe,EAAG,CAAC,0BAA4BjU,EAAWiqB,UAGrE,MAAMjqB,CAEd,CACJ,CA2DO,IAAM6e,GAAQ,SAAC7V,GAAI,OAAM,SAACY,GAC7B,IAAMsgB,EAASlhB,EACTmb,EAAUva,EAChB,GAAyB,iBAAbua,EAAuB,CAC/B,IAAMgG,EAAYhG,EAClB,OAAQiG,SAASD,IAAcp3B,KAAKE,MAAMk3B,KAAeA,GAAiB,KAAOA,GAAeA,GAAa,IAAS,IAAIlW,GAAe,EAAG,EAAEkW,EAAY,IAAO,KAAQ,MAAW,IAAIlW,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,UAAWyN,EAAW,2DAAgE,IAAIlW,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,UAAWyN,EAAW,qCAC5Y,CACK,GAAuB,iBAAZhG,EAAsB,CAClC,IAAInkB,EACAkd,EAAS,EAIb,OAHAld,EAAa,CAACqqB,GAAWlG,EAAS,KAAK,EAAO,EAAG,IAAIjzB,GAAU,kBAAMgsB,CAAM,IAAE,SAAC/wB,GAC1E+wB,EAAc,EAAJ/wB,CACd,KAAK+wB,IACa,GAAM,IAAIjJ,GAAe,EAAG,CAACjU,EAAW,KAAS,IAAIiU,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,UAAWyH,MACtI,CAEI,OAAO,IAAIlQ,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,UAAWyH,MAE9E,CAAC,EAEYrF,GAAO,SAAC9V,GAAI,OAAM,SAACY,GAC5B,IAAMsgB,EAASlhB,EACTmb,EAAUva,EAChB,GAAyB,iBAAbua,EAAuB,CAC/B,IAAMgG,EAAYhG,EAClB,OAAQiG,SAASD,IAAcp3B,KAAKE,MAAMk3B,KAAeA,EAAgB,GAAKA,GAAeA,GAAa,IAAS,IAAIlW,GAAe,EAAG,CAAa,IAAZkW,IAAuB,IAAIlW,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,SAAUyN,EAAW,0DAA+D,IAAIlW,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,SAAUyN,EAAW,qCACtX,CACK,GAAuB,iBAAZhG,EAAsB,CAClC,IAAInkB,EACAkd,EAAS,EAIb,OAHAld,EAAa,CAACqqB,GAAWlG,EAAS,KAAK,EAAM,EAAG,IAAIjzB,GAAU,kBAAMgsB,CAAM,IAAE,SAAC/wB,GACzE+wB,EAAS/wB,CACb,KAAK+wB,IACa,GAAM,IAAIjJ,GAAe,EAAG,CAACjU,EAAW,KAAS,IAAIiU,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,SAAUyH,MACrI,CAEI,OAAO,IAAIlQ,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,SAAUyH,MAE7E,CAAC,EAEYpF,GAAQ,SAAC/V,GAAI,OAAM,SAACY,GAC7B,IAAMsgB,EAASlhB,EACTmb,EAAUva,EAChB,GAAyB,iBAAbua,EAAuB,CAC/B,IAAMgG,EAAYhG,EAClB,OAAQiG,SAASD,IAAcp3B,KAAKE,MAAMk3B,KAAeA,GAAiB,OAASA,GAAeA,GAAa,MAAW,IAAIlW,GAAe,EAAG,EAAEkW,EAAY,MAAS,OAAU,QAAa,IAAIlW,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,WAAYyN,EAAW,4DAAiE,IAAIlW,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,WAAYyN,EAAW,qCACzZ,CACK,GAAuB,iBAAZhG,EAAsB,CAClC,IAAInkB,EACAkd,EAAS,EAIb,OAHAld,EAAa,CAACqqB,GAAWlG,EAAS,KAAK,EAAO,GAAI,IAAIjzB,GAAU,kBAAMgsB,CAAM,IAAE,SAAC/wB,GAC3E+wB,EAAc,EAAJ/wB,CACd,KAAK+wB,IACa,GAAM,IAAIjJ,GAAe,EAAG,CAACjU,EAAW,KAAS,IAAIiU,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,WAAYyH,MACvI,CAEI,OAAO,IAAIlQ,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,WAAYyH,MAE/E,CAAC,EAEYnF,GAAS,SAAChW,GAAI,OAAM,SAACY,GAC9B,IAAMsgB,EAASlhB,EACTmb,EAAUva,EAChB,GAAyB,iBAAbua,EAAuB,CAC/B,IAAMgG,EAAYhG,EAClB,OAAQiG,SAASD,IAAcp3B,KAAKE,MAAMk3B,KAAeA,EAAgB,GAAKA,GAAeA,GAAa,MAAW,IAAIlW,GAAe,EAAG,CAAa,MAAZkW,IAAyB,IAAIlW,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,YAAayN,EAAW,6DAAkE,IAAIlW,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,YAAayN,EAAW,qCACnY,CACK,GAAuB,iBAAZhG,EAAsB,CAClC,IAAInkB,EACAkd,EAAS,EAIb,OAHAld,EAAa,CAACqqB,GAAWlG,EAAS,KAAK,EAAM,GAAI,IAAIjzB,GAAU,kBAAMgsB,CAAM,IAAE,SAAC/wB,GAC1E+wB,EAAS/wB,CACb,KAAK+wB,IACa,GAAM,IAAIjJ,GAAe,EAAG,CAACjU,EAAW,KAAS,IAAIiU,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,YAAayH,MACxI,CAEI,OAAO,IAAIlQ,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,YAAayH,MAEhF,CAAC,EAEYmG,GAAM,SAACthB,GAAI,OAAM,SAACY,GAC3B,IAAMsgB,EAASlhB,EACTmb,EAAUva,EAChB,GAAyB,iBAAbua,EAAuB,CAC/B,IAAMgG,EAAYhG,EAClB,OAAQiG,SAASD,IAAcp3B,KAAKE,MAAMk3B,KAAeA,GAAiB,YAAcA,GAAeA,GAAa,WAAgB,IAAIlW,GAAe,EAAG,GAAGkW,IAAgB,IAAIlW,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,SAAUyN,EAAW,0DAA+D,IAAIlW,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,SAAUyN,EAAW,qCAClY,CACK,GAAuB,iBAAZhG,EAAsB,CAClC,IAAInkB,EACAkd,EAAS,EAIb,OAHAld,EAAa,CAACqqB,GAAWlG,EAAS,KAAK,EAAO,GAAI,IAAIjzB,GAAU,kBAAMgsB,CAAM,IAAE,SAAC/wB,GAC3E+wB,EAAc,EAAJ/wB,CACd,KAAK+wB,IACa,GAAM,IAAIjJ,GAAe,EAAG,CAACjU,EAAW,KAAS,IAAIiU,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,SAAUyH,MACrI,CAEI,OAAO,IAAIlQ,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,SAAUyH,MAE7E,CAAC,EAEYoG,GAAS,SAACvhB,GAAI,OAAM,SAACY,GAC9B,IAAMsgB,EAASlhB,EACTmb,EAAUva,EAChB,GAAyB,iBAAbua,EAAuB,CAC/B,IAAMgG,EAAYhG,EAClB,OAAQiG,SAASD,IAAcp3B,KAAKE,MAAMk3B,KAAeA,EAAgB,GAAKA,GAAeA,GAAa,WAAgB,IAAIlW,GAAe,EAAG,CAACkW,IAAc,IAAQ,IAAIlW,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,YAAayN,EAAW,6DAAkE,IAAIlW,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,YAAayN,EAAW,qCACrY,CACK,GAAuB,iBAAZhG,EAAsB,CAClC,IAAInkB,EACAkd,EAAS,EAIb,OAHAld,EAAa,CAACqqB,GAAWlG,EAAS,KAAK,EAAM,GAAI,IAAIjzB,GAAU,kBAAMgsB,CAAM,IAAE,SAAC/wB,GAC1E+wB,EAAS/wB,CACb,KAAK+wB,IACa,GAAM,IAAIjJ,GAAe,EAAG,CAACjU,EAAW,KAAS,IAAIiU,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,YAAayH,MACxI,CAEI,OAAO,IAAIlQ,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,YAAayH,MAEhF,CAAC,EA0RM,SAASxqB,GAAM6wB,EAAgBV,EAAS9gB,EAAM7I,GACjD,IAAIsqB,EACEC,EAAgB1hB,EAAO,KAAQ1e,EAAckgC,GAAmB,IACtE,GAAIrjC,MAAMC,QAAQ+Y,GAAU,CACxB,IAAMwqB,EAASxqB,EACf,OAAIqqB,EAAiBG,EAAO9gC,OACjBigC,EAAQY,EAAa7rB,GAAK2rB,EAAgBG,IAG1C,IAAI1W,GAAe,EAAG,CAAC,CAACyW,EAAa,IAAIhO,GAAY,EAAG,CAAI,+BAAiCpyB,EAAckgC,GAAmB,0BAA8BC,EAAeE,EAAO9gC,OAAQS,EAAcmgC,GAAmB,aAAatqB,MAEvP,CAEI,OAAO,IAAI8T,GAAe,EAAG,CAAC,CAACyW,EAAa,IAAIhO,GAAY,EAAG,CAAC,WAAYvc,MAEpF,CAWO,SAAS6T,GAAK8V,EAAS9gB,EAAM7I,GAChC,GAAIhZ,MAAMC,QAAQ+Y,GAAU,CACxB,IAAIvW,GAAK,EACT,OAAOsqB,GAAW5S,GAASqnB,IAAO,SAAC3pB,EAAK4K,GAEpC,GADAhgB,EAAMA,EAAI,EAAK,EACC,IAAZoV,EAAIhP,IAAW,CACf,IAAMgQ,EAAa8pB,EAAU9gB,EAAO,KAAQ1e,EAAcV,GAAM,IAAKggB,GACrE,OAAuB,IAAnB5J,EAAWhQ,IACJ,IAAIikB,GAAe,EAAG,CAAC3kB,GAAK0Q,EAAWjS,OAAO,GAAIiR,EAAIjR,OAAO,MAG7D,IAAIkmB,GAAe,EAAG,CAACjU,EAAWjS,OAAO,IAExD,CAEI,OAAOiR,CAEf,GAAG,IAAIiV,GAAe,EAAG,CAAChT,OAAWd,GACzC,CAEI,OAAO,IAAI8T,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,CAAC,SAAUvc,MAE3E,CA0BO,SAAS9B,GAAMyrB,EAAS9gB,EAAM7I,GACjC,GAAIhZ,MAAMC,QAAQ+Y,GAAU,CACxB,IAAIvW,GAAK,EACHghC,EAASzqB,EACf,OAAOwoB,IAAO,SAAC3pB,EAAK4K,GAEhB,GADAhgB,EAAMA,EAAI,EAAK,EACC,IAAZoV,EAAIhP,IAAW,CACf,IAAM66B,EAAQ7rB,EAAIjR,OAAO,GACnBiS,EAAa8pB,EAAU9gB,EAAO,KAAQ1e,EAAcV,GAAM,IAAKggB,GACrE,OAAuB,IAAnB5J,EAAWhQ,KACX8O,GAAQ+rB,EAAOjhC,EAAGoW,EAAWjS,OAAO,IAC7B,IAAIkmB,GAAe,EAAG,CAAC4W,KAGvB,IAAI5W,GAAe,EAAG,CAACjU,EAAWjS,OAAO,IAExD,CAEI,OAAOiR,CAEf,GAAG,IAAIiV,GAAe,EAAG,CAACtW,GAAK,IAAIxW,MAAMyjC,EAAO/gC,QAAS,EAAG+gC,EAAO/gC,OAAQ,QAAS+gC,EACxF,CAEI,OAAO,IAAI3W,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,CAAC,WAAYvc,MAE7E,CAgFO,SAAS2qB,GAAQC,EAAIjB,EAAS9gB,EAAM7I,GACvC,IAAMH,EAAa8pB,EAAQ9gB,EAAM7I,GACjC,OAAuB,IAAnBH,EAAWhQ,IACJ+6B,EAAG/qB,EAAWjS,OAAO,GAAIib,EAAM7I,GAG/B,IAAI8T,GAAe,EAAG,CAACjU,EAAWjS,OAAO,IAExD,CAgcO,SAASi9B,GAAOC,EAAUC,GAC7B,IAAIC,EACErB,EAAUmB,EAEhB,OADAE,EAAa,SAACniB,GAAI,OAAM,SAAC7I,GAAO,OAAKxG,GAAM,EAAGmwB,EAAS9gB,EAAM7I,EAAQ,GAC9D,SAACirB,GAAM,OAAM,SAACC,GAAO,OAAKP,GhC/mB9B,SAAkBv8B,GACrB,GAAS,MAALA,EACA,OAAO,KAEX,IAAMI,EAAK,SAACC,EAAIC,EAAIy8B,GAAE,OAAK/8B,EAAEK,EAAFL,CAAMM,EAANN,CAAU+8B,EAAG,EAExC,OADA78B,EAAQ7D,IAAI+D,EAAIJ,GACTI,CACX,CgCwmB6C48B,EAAS,SAACve,GAC/C,IAAIwe,EACEC,EAAYP,EAElB,OADAM,EAAa,SAACtB,GAAM,OAAM,SAACtgB,GAAO,OAAKjQ,GAAM,EAAG8xB,EAAWvB,EAAQtgB,EAAQ,GACpE,SAAC8hB,GAAM,OAAM,SAACvH,GAAO,OAAK2G,IAAQ,SAAC5d,EAAIye,EAAYC,GAAU,OAvdjE,IAAI3X,GAAe,EAAG,CAudwD,CAACjH,EAAIE,IAA4B,GAAExe,EAAS88B,GAAYE,EAAQvH,EAAQ,EAC7J,IAAIz1B,EAASy8B,GAAYC,EAAQC,EAAQ,EAC7C,CAmLA,SAASQ,GAAM1vB,GACX,ONeO+f,GADqBxX,EMdT,CACfuT,QAASxqB,GNpjBV,SAA6BiX,EAAUlE,GAC1C,GAAIvZ,EAAYuZ,GACZ,OAVD,SAA+BkE,EAAUmX,GAE5C,IADA,IAAIxa,OAAM6W,EACDtP,EAAM,EAAGA,GAAQiT,EAAIhyB,OAAS,EAAI+e,IAAO,CAC9C,IAAMkjB,EAAajtB,GAAK+J,EAAKiT,GAC7Bxa,EAAM2W,GAAkBtT,EAAUonB,EAAW,GAAIA,EAAW,GAAIzqB,EACpE,CACA,OAAOA,CACX,CAGe0qB,CAAsBrnB,EAAUlE,GAEtC,GAAIA,aAAanB,GAClB,OAhCD,SAA8BqF,EAAUqS,GAC3C,OAAO4R,IAAO,SAAC3pB,EAAKsjB,GAAS,OAAKtK,GAAkBtT,EAAU4d,EAAU,GAAIA,EAAU,GAAItjB,EAAI,QAAEkZ,EAAuBnB,EAC3H,CA8BeiV,CAAqBtnB,EAAUlE,GAGtC,IAAM+D,EAAK1b,EAAc2X,GACzB,IACI,OAlCL,SAAwC4X,EAAc3B,EAASsS,GAClC,OAAa,CACzC,IAAMrkB,EAAW0T,EAAcpZ,EAAMyX,EAAS3tB,EAAIigC,EAClD,IAAIjgC,EAAE,6CAQF,OAAOkW,EAPP,IAAMohB,EAAet3B,EAAE,0DACvBsvB,EAAe1T,EACf+R,EAAUuB,GAAkBtT,EAAU0b,EAAa,GAAIA,EAAa,GAAIphB,GACxE+pB,EAAQjgC,CAOhB,CACJ,CAmBmBmjC,CAA+BvnB,OAAUwT,EAAuB3T,EAC3E,CAAC,QAEGhd,EAAYgd,EAChB,CAER,CAkjBqC2nB,CAAoBxnB,EMftCvI,INcZ,IAAyBuI,CMXhC,CAEA,SAASynB,GAAMhwB,GACX,OD8IG,SAAyBuI,EAAUiV,GACtC,OAAO,IAAIsP,GAAUvkB,EAAUiV,EACnC,CAsNWyS,CADqB1nB,ECrWT,CACfuT,QAASxqB,GDqWoBi7B,GAAoBhkB,ECtWtCvI,IDqWZ,IAAyBuI,CClWhC,CA+CA,SAAS2nB,GAAW7C,EAAK8C,EAAUtjB,EAAM/c,GACrC,IAAIwO,EAAK8xB,EACT,OAAID,EAASziC,SAAWoC,EAAOpC,OACpB,IAAIoqB,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,EAAEjiB,EAAyB,EAAlB6xB,EAASziC,OAAc0iC,EAAyB,EAAhBtgC,EAAOpC,OAAa6Q,GAAOT,GAAO,6BAAdS,CAA4CD,EAA5CC,CAAiD8uB,EAAjD9uB,CAAsD6xB,SAGpKxtB,IAAU,SAACoB,EAAS2pB,EAAS9qB,GAChC,OAAgB,IAAZA,EAAIhP,IACGkkB,IAAW,SAAC/nB,GAAC,OAAKmD,GAAKnD,EAAG6S,EAAIjR,OAAO,GAAG,GAAE+7B,EAAQ9gB,EAAR8gB,CAAc3pB,IAGxDnB,CAEf,GAAG/S,EAAQqgC,EAAU,IAAIrY,GAAe,EAAG,CAAChT,OAEpD,CAEA,SAASiO,GAAUqQ,EAAO9B,EAAcld,EAAG3Q,EAAMoZ,EAAM/c,GACnD,IAAMgjB,EvB9/BH,SAAiBud,EAAWnuB,GAC/B,OAAOA,EAAMouB,MuB6/BO,SAACvlC,GAAC,OAAMwlC,GAAOxlC,KAAO0I,CAAI,GvB5/BlD,CuB4/BgB2sB,CAAQ,EAA6B7N,GAAcnO,IAC/D,GAAW,MAAP0O,EAAa,CACb,IAAM0d,EAAQ1d,EACd,OAAsB,IAAlBhjB,EAAOpC,OACA,IAAIoqB,GAAe,EAAG,CAAC2Y,GAAYD,EAAO,MAG1CzY,IAAW,SAAC2Y,GAAQ,OAAKD,GAAYD,EAAOtvB,GAAQwvB,GAAgB,GAAER,GAAW,eAAgB3L,IAAM,SAACb,GAAE,OAAKiN,GAAYvN,EAAO9B,GAAc,EAAOoC,EAAG,GAAG,GAAE7Q,GAAmB2d,IAAS3jB,EAAM/c,GAEhN,CAEI,OAAO,IAAIgoB,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,CAAG,oBAAsB9sB,EAAQ,OAAU0c,GAAS/L,OAEpH,CAEA,SAASwsB,GAA2BxN,EAAO9B,EAAcuP,EAAYzsB,GACjE,IAAI9F,EAGAqvB,EAFEmD,EAAa,IAAI/7B,EhCp4ChB,MgCq4CDyuB,EAAUpnB,GAAI+T,GAAS/L,GAAI0sB,EAAY1N,GAE7C,GAAIzQ,GAASvO,GAAU,CACnB,IAAM+rB,EAAW5L,IAAM,SAACb,GAAE,MAAK,CAACrC,GAAoBC,EAAciP,GAAO7M,IAAMiN,GAAYnN,EAASlC,GAAc,EAAOoC,EAAG,IAAI,GAAE/S,GAAkBvM,IACpJupB,EAAW,SAAC9gB,GAAI,OAAM,SAAC7I,GAAO,OAAK+T,IAAW,SAAC/X,GAAE,Od9hClD,SAAoBoE,EAAGtU,GAC1B,IAAM8B,EAAS+e,GAAkBvM,GACjC,GAAIxS,EAAOlE,SAAWoC,EAAOpC,OACzB,MAAM,IAAIjB,MAAM,+BAADqH,OAAgClC,EAAOlE,OAAM,aAAAoG,OAAYhE,EAAOpC,SAEnF,OAAsB,MAAf0W,EAAE4L,UAAiBkD,GAChB9O,EAAE4L,UAASQ,GAAI1gB,IACnB8B,EAAOwQ,QAAO,SAACtQ,EAAGi/B,EAAatjC,GAAM,IAAAujC,EAAAz9B,GAAAw9B,EAAA,GAAhB3kC,EAAG4kC,EAAA,GAEtB,OAF0BA,EAAA,GAC1Bl/B,EAAI1F,GAAO0D,EAAOrC,GACXqE,CACX,GAAG,CAAC,EACZ,CcmhC8Dm/B,CAAW7sB,EAAGlD,GAAQlB,GAAU,GArF9F,SAAoBkxB,EAAcrkB,EAAM7I,GACpC,OAAkB,OAAZA,GAA4BrY,OAAOC,eAAeoY,IAAW,KAAWrY,OAAOwlC,UAC1E,IAAIrZ,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,CAAC,YAAavc,OvBxavE,SAAkBhC,EAAQE,EAAOD,GACpC,OAAOC,EAAMkvB,aAAa,SAACC,EAAaC,GAAa,OuB0arBzuB,EvB1agDwuB,EuB2alE59B,GADO0yB,EvB1a4CmL,GuB2alC,GACP,IAAZzuB,EAAIhP,IACGkkB,IAAW,SAAC/nB,GAAC,OAAKmD,GAAKnD,EAAG6S,EAAIjR,OAAO,GAAG,GAAEu0B,EAAU,GAAItZ,EAAO,IAAOpZ,EAA5B0yB,CAAkCniB,EAAQvQ,KAGpFoP,EANC,IAACsjB,EAAWtjB,EAClBpP,CvB3a8E,GAAGwO,EACnG,CuByaesvB,CAAS,EAQbL,EAAc,IAAIpZ,GAAe,EAAG,CAAChT,OAEhD,CAsEgG0sB,CAAWrB,EAAUtjB,EAAM7I,GAAS,EAChI,MACK,GAAI0O,GAAQtO,GACbupB,EAAW,SAACI,GAAM,OAAM,SAACtgB,GACrB,GAAuB,iBAAZA,EACP,OAAOsF,GAAUyQ,EAASlC,EAAcld,EAAGqJ,EAASsgB,EAAQ,IAE3D,GAAI/iC,MAAMC,QAAQwiB,GAAU,CAC7B,IAAM3d,EAAS2d,EACf,OAAOsF,GAAUyQ,EAASlC,EAAcld,EAAG1B,GAAK,EAAG5S,GAASi+B,EAAQj+B,EAAOyP,MAAM,EAAGzP,EAAOpC,QAC/F,CAEI,OAAO,IAAIoqB,GAAe,EAAG,CAAC,CAACiW,EAAQ,IAAIxN,GAAY,EAAG,CAAC,oBAAqB9S,MAExF,CAAC,MAEA,KAAIojB,EAIL,MAAM,IAAIpkC,OAAO6R,EAAM6R,GAAS/L,GAAI7F,GAAOT,GAAO,sEAAdS,CAAqFD,KAHzHqvB,EAAW,SAAC4B,GAAM,OAAM,SAACvH,GAAO,OAAM,IAAIlQ,GAAe,EAAG,CAAC,CAACyX,EAAQ,IAAIhP,GAAY,EAAG,CAAC,sBAAwBpQ,GAAS/L,GAAI4jB,MAAY,CAAC,CAIhJ,CAEA,OADA8I,EAAW31B,SAAWwyB,EACfA,CACX,CAEA,SAASgD,GAAYvN,EAAO9B,EAAcuP,EAAYzsB,GAClD,IAAIqtB,EAAYC,EAAYC,EACtB7hB,EAAWK,GAAS/L,GACpBP,EAAa+tB,GAAU9hB,EAAUsT,GACvC,GAAkB,MAAdvf,EA+LC,CACD,IAAMitB,EAAajtB,EACnB,OAAO,SAACgJ,GAAI,OAAM,SAAC7I,GAAO,OAAK8sB,EAAW31B,SAAS0R,EAApBikB,CAA0B9sB,EAAQ,EACrE,CAjMI,GAAI/Y,GAAQmZ,GAAI,CACZ,IAAMupB,EAAUgD,GAAYvN,EAAO9B,GAAc,EAAO3P,GAAevN,IACvE,OAAO,SAAC2pB,GAAM,OAAM,SAACtgB,GAAO,OAAKvL,GAAM3P,EAASo7B,GAAUI,EAAQtgB,EAAQ,EAC9E,CACK,GAAIqE,GAAO1N,GAEZ,OADiB+L,GAAS6B,GAAsB5N,KAE5C,IAAK,eACD,OAAO,SAACmrB,GAAM,OAAM,SAACL,GACjB,IAAMznB,EAAMrD,EACN6qB,EAASM,EACT/K,EAAU0K,EACVprB,EAAe4e,GAAMuM,EAANvM,CAAc8B,GACnC,GAAyB,IAArB1gB,EAAajQ,IACb,OAAO,IAAIikB,GAAe,EAAG,CAAChU,EAAalS,OAAO,KAGlD,IAAMigC,EAAqC,EAAzB/tB,EAAalS,OAAO,GACtC,OAAO0W,GAASupB,EAAW3f,GAAczK,GAAM,CAC3CnX,OAAQ,SAACvF,EAAGS,GAAC,OAAMT,IAAMS,CAAC,EAC1BgE,YAAaR,IACX,IAAI8oB,GAAe,EAAG,CAAC3F,GAAU1K,EAAKoqB,EAAUlkC,cAAkB,IAAImqB,GAAe,EAAG,CAAC,CAACmX,EAAQ,IAAI1O,GAAY,EAAG,CAACpQ,GAAS1I,GAAM+c,EAAS,yCAE5J,CAAC,EACL,IAAK,cACD,OAAO,SAACsN,GAAM,OAAM,SAACrN,GACjB,IAAM8D,EAAMnkB,EACN2tB,EAASD,EACTE,EAAUvN,EACVhJ,EAAekH,GAAKoP,EAALpP,CAAaqP,GAClC,GAAyB,IAArBvW,EAAa5nB,IACb,OAAO,IAAIikB,GAAe,EAAG,CAAC2D,EAAa7pB,OAAO,KAGlD,IAAMqgC,EAAcxW,EAAa7pB,OAAO,GACxC,OAAO0W,GAAS2pB,EAAa/f,GAAcqW,GAAM,CAC7Cj4B,OAAQ,SAACiW,EAAKgH,GAAG,OAAMhH,IAAQgH,CAAG,EAClC/d,YAAaR,IACX,IAAI8oB,GAAe,EAAG,CAAC3F,GAAUoW,EAAK0J,EAAYtkC,cAAkB,IAAImqB,GAAe,EAAG,CAAC,CAACia,EAAQ,IAAIxR,GAAY,EAAG,CAACpQ,GAASoY,GAAMyJ,EAAS,yCAE9J,CAAC,EACL,IAAK,eACD,OAAO,SAACE,GAAM,OAAM,SAACnN,GACjB,IAAMoN,EAAM/tB,EACNguB,EAASF,EACThN,EAAWH,EACXpJ,EAAeiH,GAAMwP,EAANxP,CAAcsC,GACnC,GAAyB,IAArBvJ,EAAa9nB,IACb,OAAO,IAAIikB,GAAe,EAAG,CAAC6D,EAAa/pB,OAAO,KAGlD,IhC70CEnE,EAAGW,EgC60CCikC,EAAuC,EAAzB1W,EAAa/pB,OAAO,GACxC,OAAO0W,GAAS+pB,EAAangB,GAAcigB,GAAM,CAC7C7hC,OAAQ,SAACgiC,EAAKC,GAAG,OAAMD,IAAQC,CAAG,EAClC/iC,YAAaR,IACX,IAAI8oB,GAAe,EAAG,CAAC3F,GAAUggB,GhCj1CrC1kC,EgCi1CwD4kC,EhCh1CpB5kC,EACrDE,SAASS,OgC+0CoF,IAAI0pB,GAAe,EAAG,CAAC,CAACsa,EAAQ,IAAI7R,GAAY,EAAG,CAACpQ,GAASgiB,GAAMjN,EAAU,yCAEnK,CAAC,EACL,IAAK,gBACD,OAAO,SAACsN,GAAM,OAAM,SAAChN,GACjB,IAAMiN,EAAMruB,EACNsuB,EAASF,EACT7M,EAAWH,EACXmN,EAAe9P,GAAO6P,EAAP7P,CAAe8C,GACpC,GAAyB,IAArBgN,EAAa9+B,IACb,OAAO,IAAIikB,GAAe,EAAG,CAAC6a,EAAa/gC,OAAO,KAGlD,IAAMghC,EAAcD,EAAa/gC,OAAO,GACxC,OAAO0W,GAASsqB,EAAa1gB,GAAcugB,GAAM,CAC7CniC,OAAQ,SAACuiC,EAAKC,GAAG,OAAMD,IAAQC,CAAG,EAClCtjC,YAAaR,IACX,IAAI8oB,GAAe,EAAG,CAAC3F,GAAUsgB,EAAKG,EAAYjlC,cAAkB,IAAImqB,GAAe,EAAG,CAAC,CAAC4a,EAAQ,IAAInS,GAAY,EAAG,CAACpQ,GAASsiB,GAAM9M,EAAU,yCAE/J,CAAC,EACL,IAAK,eACD,OAAO,SAACoN,GAAO,OAAM,SAACnN,GAClB,IAAMoN,EAAM5uB,EACN6uB,EAAUF,EACVG,EAAWtN,EACXuN,EAAehF,GAAI8E,EAAJ9E,CAAa+E,GAClC,GAAyB,IAArBC,EAAat/B,IACb,OAAO,IAAIikB,GAAe,EAAG,CAACqb,EAAavhC,OAAO,KAGlD,IAAMwhC,EAAuC,EAAzBD,EAAavhC,OAAO,GACxC,OAAO0W,GAAS8qB,EAAalhB,GAAc8gB,GAAM,CAC7C1iC,OAAQ,SAAC+iC,EAAKC,GAAG,OAAMD,IAAQC,CAAG,EAClC9jC,YAAaR,IACX,IAAI8oB,GAAe,EAAG,CAAC3F,GAAU6gB,EAAK7kC,EAAcilC,MAAoB,IAAItb,GAAe,EAAG,CAAC,CAACmb,EAAS,IAAI1S,GAAY,EAAG,CAACpQ,GAAS6iB,GAAME,EAAU,yCAEpK,CAAC,EACL,IAAK,gBACD,OAAO,SAACK,GAAO,OAAM,SAACC,GAClB,IAAMC,EAAMrvB,EACNsvB,EAAUH,EACVI,EAAWH,EACXI,EAAexF,GAAOsF,EAAPtF,CAAgBuF,GACrC,GAAyB,IAArBC,EAAa//B,IACb,OAAO,IAAIikB,GAAe,EAAG,CAAC8b,EAAahiC,OAAO,KAGlD,IAAMiiC,EAAcD,EAAahiC,OAAO,GACxC,OAAO0W,GAASurB,EAAa3hB,GAAcuhB,GAAM,CAC7CnjC,OAAQ,SAACwjC,EAAKC,GAAG,OAAMD,IAAQC,CAAG,EAClCvkC,YAAaR,IACX,IAAI8oB,GAAe,EAAG,CAAC3F,GAAUshB,EAAKI,EAAYlmC,cAAkB,IAAImqB,GAAe,EAAG,CAAC,CAAC4b,EAAS,IAAInT,GAAY,EAAG,CAACpQ,GAASsjB,GAAME,EAAU,yCAEhK,CAAC,EACL,QACI,IAAMr1B,EAAM6R,GAAS/L,GACf4vB,EAAQx1B,GAAOV,GAAO,8OAAdU,CAA8PF,GAC5Q,OAAO,SAAC21B,GAEJ,OADcD,EAAMC,EAExB,OAIP,GAAIpiB,GAAczN,GAAI,CACvB,GAAIqO,GAAQrO,GAAI,CACZ,IAAM+rB,EAAW5L,IAAM,SAAC2P,GAAG,OAAKvD,GAAYvN,EAAO9B,GAAc,EAAO4S,EAAI,GAAE1hB,GAAiBpO,IAC/F,OAAO,SAAC+vB,GAAO,OAAM,SAACC,GAAQ,OAAMppC,MAAMC,QAAQmpC,GAAYrc,IAAW,SAAC/X,GAAE,OAAekB,GAAQlB,EAAO,GAAEkwB,GAAW,iBAAkBC,EAAUgE,EAASC,IAAc,IAAItc,GAAe,EAAG,CAAC,CAACqc,EAAS,IAAI5T,GAAY,EAAG,CAAC,WAAY6T,MAAc,CAAC,CAC9P,CAGI,OADmBjkB,GAAS4B,GAAyB3N,KAEjD,IAAK,sDACD,OAAQqtB,EAAad,GAAYvN,EAAO9B,GAAc,EAAM5e,GAAK,EAAG2N,GAAYjM,KAAM,SAACiwB,GAAO,OAAM,SAACxO,GAAQ,OAviC9H,SAAgB8H,EAAS9gB,EAAM7I,GAClC,OAAe,MAAXA,EACO,IAAI8T,GAAe,EAAG,MAAC5qB,IAGvB6qB,GAAW9W,GAAM0sB,EAAQ9gB,EAAM7I,GAE9C,CAgiC0I8gB,CAAOvyB,EAASk/B,GAAa4C,EAASxO,EAAS,GACrK,IAAK,2DACD,OAAQ6L,EAAaf,GAAYvN,EAAO9B,GAAc,EAAO5e,GAAK,EAAG2N,GAAYjM,KAAM,SAACkwB,GAAO,OAAM,SAACC,GAAQ,OAAK1c,GAAKtlB,EAASm/B,GAAa4C,EAASC,EAAS,GACpK,IAAK,wEACD,IAEIC,EAFEC,EAAa9D,GAAYvN,EAAO9B,GAAc,EAAO5e,GAAK,EAAG2N,GAAYjM,KACzEswB,EAAe/D,GAAYvN,EAAO9B,GAAc,EAAO5e,GAAK,EAAG2N,GAAYjM,KAE3EuwB,EAAapvB,GAAQ,CAAC,SAACqvB,GAAO,OAAM,SAAC9O,GAAQ,OA1O3E,SAAqB2O,EAAYC,EAAc7nB,EAAM7I,GACjD,OAAkB,OAAZA,GAA4BrY,OAAOC,eAAeoY,IAAW,KAAWrY,OAAOwlC,UAC1E,IAAIrZ,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,CAAC,YAAavc,OAG/D0oB,IAAO,SAAC7pB,EAAKpP,GAChB,GAAgB,IAAZoP,EAAIhP,IAAW,CACf,IAAMgQ,EAAa4wB,EAAW5nB,EAAMpZ,GACpC,GAAuB,IAAnBoQ,EAAWhQ,IAAW,CACtB,IAAMoP,EAAOyxB,EAAc7nB,EAAO,IAAOpZ,EAAMuQ,EAAQvQ,IACvD,OAAiB,IAAbwP,EAAKpP,IACE,IAAIikB,GAAe,EAAG,CAAC3kB,GAAK,CAAC0Q,EAAWjS,OAAO,GAAIqR,EAAKrR,OAAO,IAAKiR,EAAIjR,OAAO,MAG/E,IAAIkmB,GAAe,EAAG,CAAC7U,EAAKrR,OAAO,IAElD,CAEI,OAAO,IAAIkmB,GAAe,EAAG,CAACjU,EAAWjS,OAAO,IAExD,CAEI,OAAOiR,CAEf,GAAG,IAAIiV,GAAe,EAAG,CAAChT,OAAWnZ,OAAOgF,KAAKqT,GAEzD,CAgNgF6wB,CAAYtiC,EAASkiC,GAAaliC,EAASmiC,GAAeE,EAAS9O,EAAS,IAAI6L,EAAa9C,GAAOt8B,EAASkiC,GAAaliC,EAASmiC,IAAgB,SAACI,GAAO,OAAM,SAACC,GAAQ,OAAKld,GAAKtlB,EAASo/B,GAAamD,EAASC,EAAS,MAEpR,OADAP,EAAQ,SAACQ,GAAO,OAAM,SAACjP,GAAQ,OA37BhD,SAAeoK,EAAUtjB,EAAM7I,GAsBlC,OArBe,SAACixB,EAAgBC,GAE5B,OAAa,CACT,IAAMP,EAAaM,EAAgBE,EAASD,EAC5C,GAAIlwB,GAAQ2vB,GACR,OAAO,IAAI7c,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,CAAC4U,OAGzD,IAAMtxB,EAAa6pB,GAAU7gB,EAAMta,EAAS6iC,GAAOT,IAAc3wB,GACjE,GAAuB,IAAnBH,EAAWhQ,IAMX,OAAO,IAAIikB,GAAe,EAAG,CAACjU,EAAWjS,OAAO,KALhDqjC,EAAiB5vB,GAAOsvB,GACxBO,EAAaG,GAASF,EAAQpwB,GAAUlB,EAAWjS,OAAO,IAQtE,CACJ,CACO0jC,CAAOnF,EAAUrrB,KAC5B,CAo6B4DywB,CAAMZ,EAAYK,EAASjP,EAAS,GACjE,SAACyP,GAAO,OAAM,SAACxP,GAAQ,OA32B/C,SAAayP,EAAMC,EAAI7oB,EAAM7I,GAChC,IAAMH,EAAa6xB,EAAG7oB,EAAM7I,GAC5B,OAAuB,IAAnBH,EAAWhQ,IACJ,IAAIikB,GAAe,EAAG,CAACjU,EAAWjS,OAAO,KAGzC,IAAIkmB,GAAe,EAAG,CAAC2d,EAAK5xB,EAAWjS,OAAO,KAE7D,CAm2B2D7B,CAAI2/B,GAAOn9B,EAASiiC,GAAOgB,EAASxP,EAAS,GAEpF,IAAK,0DACD,IAAM2P,EAAahF,GAAYvN,EAAO9B,GAAc,EAAO5e,GAAK,EAAG2N,GAAYjM,KAC/E,OAAO,SAACwxB,GAAO,OAAM,SAACC,GAClB,IAAMC,EAAe5zB,GAAM3P,EAASojC,GAAaC,EAASC,GAC1D,OAA6B,IAArBC,EAAajiC,IAAc,IAAIikB,GAAe,EAAG,CAACkY,GAAM8F,EAAalkC,OAAO,MAAU,IAAIkmB,GAAe,EAAG,CAACge,EAAalkC,OAAO,IAC7I,CAAC,EAEL,QACI,OAAOg/B,GAA2BxN,EAAO9B,EAAcuP,EAAYzsB,GAGnF,MAEI,OAAQ0L,GACJ,IAAK,iBACD,OAAO,SAACimB,GAAO,OAAM,SAACC,GAAQ,OAjzC7BnpB,EAizCuCkpB,EAhzCjC,kBADA/xB,EAizC0CgyB,GA/yCtD,IAAIle,GAAe,EAAG,CAAC9T,IAGvB,IAAI8T,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,CAAC,YAAavc,OALvE,IAAc6I,EAAM7I,CAizCmD,GAC9D,IAAK,6BACD,OAAO,SAACiyB,GAAO,OAAM,SAACC,GAAQ,OA7+C7BrpB,EA6+CuCopB,EA5+CzC,OADQjyB,EA6+C0CkyB,GA3+CtD,IAAIpe,GAAe,EAAG,MAAC5qB,IAGvB,IAAI4qB,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,CAAC,OAAQvc,OALlE,IAAc6I,EAAM7I,CA6+CmD,GAC9D,IAAK,gBACD,OAAO,SAACmyB,GAAO,OAAM,SAACC,GAAQ,OA3gD3BvpB,EA2gDuCspB,EA1gDnC,iBADEnyB,EA2gD0CoyB,GAzgDxD,IAAIte,GAAe,EAAG,CAAC9T,IAGvB,IAAI8T,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,CAAC,WAAYvc,OALtE,IAAgB6I,EAAM7I,CA2gDmD,GAChE,IAAK,eACD,OAAO0e,GACX,IAAK,cACD,OAAOC,GACX,IAAK,eACD,OAAOC,GACX,IAAK,gBACD,OAAOC,GACX,IAAK,eACD,OAAOsL,GACX,IAAK,gBACD,OAAOC,GACX,IAAK,gBACD,OAAO,SAACiI,GAAO,OAAM,SAACC,GAAQ,OA1zC5BzpB,EA0zCuCwpB,EAzzChC,iBADDryB,EA0zC0CsyB,GAxzCvD,IAAIxe,GAAe,EAAG,CAAC9T,IAGvB,IAAI8T,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,CAAC,UAAWvc,OALrE,IAAe6I,EAAM7I,CA0zCmD,GAC/D,IAAK,gBACD,OAAO,SAACuyB,GAAO,OAAM,SAACC,GAAQ,OAnzC1B3pB,EAmzCuC0pB,EAlzClC,iBADCvyB,EAmzC0CwyB,GAjzCzD,IAAI1e,GAAe,EAAG,CAAC9T,IAGvB,IAAI8T,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,CAAC,YAAavc,OALvE,IAAiB6I,EAAM7I,CAmzCmD,GACjE,IAAK,kBACD,OAAO,SAACyyB,GAAO,OAAM,SAACC,GAAQ,OAtxC3C,SAAkB7pB,EAAM7I,GAC3B,GAAuB,iBAAZA,EAAsB,CAC7B,IAAIH,EACAkd,E9BmHDxqB,IAAU,YAAgB,G8B/G7B,OAHAsN,EAAa,CAAC8yB,GAAW3yB,EAAS,IAAIjP,GAAU,kBAAMgsB,CAAM,IAAE,SAAC/wB,GAC3D+wB,EAAS/wB,CACb,KAAK+wB,IACU,GACJ,IAAIjJ,GAAe,EAAG,CAACvc,GAAgBsI,EAAW,MAGlD,IAAIiU,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,CAAC,aAAcvc,MAE/E,CAEI,OAAO,IAAI8T,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,CAAC,aAAcvc,MAE/E,CAqwCuD+e,CAAS0T,EAASC,EAAS,GAClE,IAAK,wBACD,OAAO,SAACE,GAAO,OAAM,SAACC,GAAQ,OArwC3C,SAAwBhqB,EAAM7I,GACjC,GAAuB,iBAAZA,EAAsB,CAC7B,IAAIH,EACAkd,EFzSDmG,IAAgB,YAAgB,GE6SnC,OAHArjB,EAAa,CAACizB,GAAW9yB,EAAS,IAAIjP,GAAU,kBAAMgsB,CAAM,IAAE,SAAC/wB,GAC3D+wB,EAAS/wB,CACb,KAAK+wB,IACU,GACJ,IAAIjJ,GAAe,EAAG,CAACjU,EAAW,KAGlC,IAAIiU,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,CAAC,mBAAoBvc,MAErF,CAEI,OAAO,IAAI8T,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,CAAC,aAAcvc,MAE/E,CAovCuDoe,CAAewU,EAASC,EAAS,GACxE,IAAK,kBACD,OAAO,SAACE,GAAO,OAAM,SAACC,GAAQ,OApvC3C,SAAkBnqB,EAAM7I,GAC3B,GAAuB,iBAAZA,EAAsB,CAC7B,IAAIH,EACAkd,EAAS,EAIb,OAHAld,EAAa,CAACozB,GAAWjzB,EAAS,IAAIjP,GAAU,kBAAMgsB,CAAM,IAAE,SAAC/wB,GAC3D+wB,EAAS/wB,CACb,KAAK+wB,IACU,GACJ,IAAIjJ,GAAe,EAAG,CAACjU,EAAW,KAGlC,IAAIiU,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,CAAC,aAAcvc,MAE/E,CAEI,OAAO,IAAI8T,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,CAAC,aAAcvc,MAE/E,CAmuCuDse,CAASyU,EAASC,EAAS,GAClE,IAAK,cACD,OAAO,SAACE,GAAO,OAAM,SAACC,GAAQ,OA1hD3C,SAActqB,EAAM7I,GACvB,GAAuB,iBAAZA,EAAsB,CAC7B,IAAIH,EACAkd,EAAS,uCAIb,OAHAld,EAAa,CAACuzB,GAAWpzB,EAAS,IAAIjP,GAAU,kBAAMgsB,CAAM,IAAE,SAAC/wB,GAC3D+wB,EAAS/wB,CACb,KAAK+wB,IACU,GACJ,IAAIjJ,GAAe,EAAG,CAACjU,EAAW,KAGlC,IAAIiU,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,CAAC,SAAUvc,MAE3E,CAEI,OAAO,IAAI8T,GAAe,EAAG,CAAC,CAACjL,EAAM,IAAI0T,GAAY,EAAG,CAAC,SAAUvc,MAE3E,CAygDuDke,CAAKgV,EAASC,EAAS,GAC9D,IAAK,gBACD,OAAO,SAACE,GAAM,OAAM,SAACrnC,GAAC,OAAM,IAAI8nB,GAAe,EAAG,CAAC9nB,GAAG,CAAC,EAC3D,QACI,OAAO4gC,GAA2BxN,EAAO9B,EAAcuP,EAAYzsB,GAQvF,CAEA,SAAS6hB,GAAU7C,GACf,OAAa,MAATA,EACO8C,IAAM,SAACjjB,EAAMkjB,GAAS,OAAM,IAAIpxB,EAAUoxB,EAAU,GAAG,GAAG/C,EAAMgD,QAGhErJ,GAAQ,CACXjB,QAAS7qB,GAGrB,CAWO,SAASqmC,GAAyClzB,EAAGkd,EAAc8B,GACtE,IAAI7V,EAAK/hB,EACH86B,EAAiBnlB,GAAWmgB,EAAc,IAAId,GAAa,EAAG,KACpE,OAAOK,GAAgCM,IAA8B31B,EAAI2kB,GAAS/L,GAArBmJ,EAAyBgqB,EAAYjR,GAAkB96B,EAAK2V,GAAWq2B,IAAM,SAAC7qC,GAAC,OAAKA,EAAE85B,IAAI,GAAErD,GAAQ,IAAM7V,IAAM,kBAAMojB,GAAY1K,GAAU7C,GAAQkD,GAAgB,EAAOliB,EAAE,GAC9O,CAEO,SAASqzB,GAAmCrzB,EAAGkd,EAAc8B,GAChE,IAAMkD,EAAiBnlB,GAAWmgB,EAAc,IAAId,GAAa,EAAG,KACpE,OAAOmQ,GAAY1K,GAAU7C,GAAQkD,GAAgB,EAAOliB,EAChE,CCrqDO,IAAMszB,GAA0BC,GAAAA,cAIhC,SAASC,GAAyBC,EAAIjgB,GACzC,OAAO8f,GAAwBG,ECL5B,SAAyBC,GAC5B,IAAMC,EAAc,SAACC,EAAYC,EAASC,GAEtC,OAAa,CACT,IAAMz2B,EAASu2B,EAAY5rC,EAAM6rC,EAAS5rC,EAAQ6rC,EAC5Cr0B,EAAgC,EAAnBzX,EAAI6H,QAAQ,KAC/B,IAAoB,IAAhB4P,EAAJ,CACIpC,EAAOrV,GAAOC,EAclB,KADA,CAVI,IAAM8rC,EAAsB,EAAbt0B,EACTu0B,EAASvgC,GAAUzL,EAAK,EAAG+rC,GAC3BE,EAAYxgC,GAAUzL,EAAK+rC,EAAS,QACnBjrC,IAAnBuU,EAAO22B,KACP32B,EAAO22B,GAAU,CAAC,GAEtBJ,EAAav2B,EAAO22B,GACpBH,EAAUI,EACVH,EAAY7rC,CAIpB,CACJ,EACM03B,EAAW,CAAC,EACZxc,EAAa7a,EAAcorC,GACjC,IACI,KAAOvwB,EAAW,8CAA8C,CAC5D,IAAMooB,EAAapoB,EAAW,0DAC9BwwB,EAAYhU,EAAU4L,EAAW,GAAIA,EAAW,GACpD,CACJ,CAAC,QAEGvkC,EAAYmc,EAChB,CACA,OAAOwc,CACX,CD/BuCuU,CAAgB1gB,GACvD,C,qCEGO,SAAS2gB,GAAcxtC,GAC1B,IAAM6vB,EAAI7vB,EAAE2C,OAAS,EACf8qC,EAAKztC,EAAEkJ,QAAQ,MAAQ,EACvBwkC,EAAM1tC,EAAEkJ,QAAQ,MAAQ,EACxBykC,EAAWp+B,GAAMvP,EAAG,CAAC,UAAMmC,EAAW,GAC5C,OAAIwrC,EAAShrC,OAAS,MACVktB,GAAK4d,GAAOC,GAAS/1B,GAAK,EAAGg2B,GAAUhrC,OAAS,GAAQgV,GAAK,EAAGg2B,GAAUhrC,OAAS,GAAQgV,GAAK,EAAGg2B,GAAUzkC,QAAQ,MAAQ,MACtHlJ,EAAEkJ,QAAQ,MAAQ,GAAalJ,EAAEkJ,QAAQ,MAAS,GAAclJ,EAAEkJ,QAAQ,OAAS,EAS1G,CAEO,SAAS0kC,GAAYtL,EAAKuL,GAC7B,IAAIC,EACJ,OAAOlB,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,YAAa,eAAgB,CAAC,UAAW,SAACtC,GACtF21B,GACJ,IAAKC,EAAQ,EAAClB,EAAAA,GAAAA,eAAc,OAAQ,CAChCmB,SAAU,CAACzL,MACV,CAAC,WAAYrkB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK44B,SACnE,CAWO,SAASG,GAAiBC,GAC7B,IAAIJ,EACEK,EAAUD,EAA2BC,QACrCC,EAASF,EAA2BE,OAQ1C,OAPAvvB,IAAgC,WACjBwP,GAA6BggB,EAAS3gB,GAA+B2gB,GAAS,kBAAQ,IAAIvgB,SAAQ,SAAAE,GAAO,OAAIsgB,WAAWtgB,EAAS,IAAM,IAAGL,MAAK,WAEtJ,OADAwgB,IACOrgB,QAAQE,SACnB,GAAE,KACCL,MACP,KACOif,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,YAAa,YAAa,CAAC,UAAW,SAAC+zB,GACnFJ,GACJ,IAAKL,EAAQ,CAACF,GAAYQ,EAAQD,IAAW,CAAC,WAAYlwB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK44B,SAC3G,CAEO,SAASU,GAAiBJ,EAAQD,GACrC,GAAc,MAAVC,EAAgB,CAChB,IAAMK,EAAWL,EACjB,OAAOxB,EAAAA,GAAAA,eAAcqB,GAAkB,CACnCG,OAAQK,EACRN,QAASA,GAEjB,CAEI,OnC1CG,ImC4CX,CAEO,SAASO,KACZ,OAAO9B,EAAAA,GAAAA,eAAc,MAAO,CACxB+B,UAAW,UACXzuB,MAAO,CACH0uB,MAAO,GACPC,OAAQ,KAGpB,CAEO,SAASC,KACZ,OAAOlC,EAAAA,GAAAA,eAAc,MAAO,CACxB+B,UAAW,UACXzuB,MAAO,CACH0uB,MAAO,GACPC,OAAQ,KAGpB,CAsCO,SAASE,GAAqBhB,GACjC,OAAOnB,EAAAA,GAAAA,eAAc,MAAO,CACxB1sB,MAAO,CACH8uB,QAAS,OACTC,IAAK,QACLC,WAAY,SACZC,eAAgB,YAEpBpB,SAAU9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK64B,KAE/D,CAEO,SAASqB,GAAcC,GAC1B,IAAIC,EnB7IiBlxB,EmB8If2vB,EAAWsB,EAAwBtB,SACnCF,EAAUwB,EAAwBxB,QAClC0B,EAAMrwB,QAAqB/c,GAC3BqtC,EAAc,SAACC,GACjB5B,GACJ,EAOA,OnB1JqBzvB,EmBoJQ,WAEzB,OADAsF,OAAOQ,iBAAiB,UAAWsrB,GAC5BhxB,IAAgC,WACnCkF,OAAOS,oBAAoB,UAAWqrB,EAC1C,GACJ,GnBxJAlxB,EAAAA,GAAAA,YAAe,WACX,IAAMC,EAAaH,IACnB,OAAO,WACHG,EAAWje,SACf,CACJ,KmBoJOssC,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,MAAO+0B,GAAM,CAAC,YAAa,mBAAoB,CAAC,UAAW,SAACG,GACpGpqC,EAAOoqC,EAAQh5B,OAAQ64B,EAAInuC,WAC3BsiB,OAAOS,oBAAoB,UAAWqrB,GACtC3B,IAER,IAAKyB,EAAU,EAAC1C,EAAAA,GAAAA,eAAc,MAAO,CACjC+B,UAAW,SACXZ,SAAU9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK64B,OACtD,CAAC,WAAY9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKo6B,SACnE,CAEO,SAASK,GAAcC,GAC1B,IACIlsB,OAAOc,SAASqrB,eAAeD,GAASE,OAC5C,CACA,MAAOh3B,GACP,CACJ,C,0xBC3KO,IAAMi3B,G,QAA8BC,EAkB9BC,GAAcjvC,IACvB,SAAAivC,K,4FAAc/uC,CAAA,KAAA+uC,EACd,I,0BCrBG,SAASC,GAAmBC,GAC/B,OAAOlyB,GAAiB2uB,cAAcwD,GAAAA,EAAwBxpC,EAAUupC,GAC5E,C,giECwBoD,IAE9CE,GAAyB,SAAArkB,GAC3B,SAAAqkB,EAAYvnC,EAAKjC,GAAQ,IAAA0R,EAGA,OAHArX,GAAA,KAAAmvC,IACrB93B,EAAAiQ,GAAA,KAAA6nB,IACKvnC,IAAMA,EACXyP,EAAK1R,OAASA,EAAO0R,CACzB,CAAC,OAAAC,GAAA63B,EAAArkB,GAAAhrB,GAAAqvC,EAAA,EAAAhvC,IAAA,QAAAC,MACD,WACI,MAAO,CAAC,YAAa,gBAAiB,aAAc,gBACxD,IAAC,CAR0B,CAASsH,GAelC0nC,GAA0B,SAAAl4B,GAC5B,SAAAk4B,EAAYpnB,EAAOqnB,EAAaC,EAAYC,EAAYC,GAAS,IAAA5nB,EAMtC,OANsC5nB,GAAA,KAAAovC,IAC7DxnB,EAAAN,GAAA,KAAA8nB,IACKpnB,MAAQA,EACbJ,EAAKynB,YAAcA,EACnBznB,EAAK0nB,WAAaA,EAClB1nB,EAAK2nB,WAAaA,EAClB3nB,EAAK4nB,QAAUA,EAAQ5nB,CAC3B,CAAC,OAAAtQ,GAAA83B,EAAAl4B,GAAApX,GAAAsvC,EAAA,CAR2B,CAAShnC,GAenCqnC,GAA4B,SAAAzkB,GAC9B,SAAAykB,EAAY7nC,EAAKjC,GAAQ,IAAAuiB,EAGA,OAHAloB,GAAA,KAAAyvC,IACrBvnB,EAAAZ,GAAA,KAAAmoB,IACK7nC,IAAMA,EACXsgB,EAAKviB,OAASA,EAAOuiB,CACzB,CAAC,OAAA5Q,GAAAm4B,EAAAzkB,GAAAlrB,GAAA2vC,EAAA,EAAAtvC,IAAA,QAAAC,MACD,WACI,MAAO,CAAC,cAAe,WAAY,kBAAmB,SAAU,gBAAiB,WAAY,eACjG,IAAC,CAR6B,CAASsH,GAmB3C,SAASgoC,GAA4BC,EAAOvO,GACxC,OAAQA,EAAIx5B,KACR,KAAK,EACD,OAAO,IAAIwnC,GAA2BO,EAAM3nB,MAAOoZ,EAAIz7B,OAAO,GAAIgqC,EAAML,WAAYK,EAAMJ,WAAYI,EAAMH,SAChH,KAAK,EACD,OAAO,IAAIJ,GAA2BO,EAAM3nB,MAAO2nB,EAAMN,aAAa,EAAOM,EAAMJ,WAAYI,EAAMH,SACzG,KAAK,EACD,OAAIlD,GAAcqD,EAAM3nB,OACb,IAAIonB,GAA2BO,EAAM3nB,MAAO2nB,EAAMN,aAAa,GAAM,EAAMM,EAAMH,SAGjF,IAAIJ,GAA2BO,EAAM3nB,MAAO2nB,EAAMN,aAAa,EAAOM,EAAMJ,WAAYI,EAAMH,SAE7G,KAAK,EACD,IAAMv2B,EAAMmoB,EAAIz7B,OAAO,GACvB,GAAgB,IAAZsT,EAAIrR,IACJ,OAAO,IAAIwnC,GAA2BO,EAAM3nB,MAAO,IAAImnB,GAA0B,EAAG,CAAC,mFAAoFQ,EAAML,YAAY,EAAOK,EAAMH,SAGxM,IAAMnJ,EAAMptB,EAAItT,OAAO,GACvB,MAAmB,YAAf0gC,EAAI5e,OACG,IAAI2nB,GAA2BO,EAAM3nB,MAAO,IAAImnB,GAA0B,EAAG,IAAKQ,EAAML,WAAYK,EAAMJ,WAAYI,EAAMH,SAG5H,IAAIJ,GAA2BO,EAAM3nB,MAAO,IAAImnB,GAA0B,EAAG,CAAC9I,EAAI3e,UAAWioB,EAAML,YAAY,EAAOK,EAAMH,SAI/I,KAAK,EACD,OAAO,IAAIJ,GAA2BO,EAAM3nB,MAAO,IAAImnB,GAA0B,EAAG,CAAC/N,EAAIz7B,OAAO,KAAMgqC,EAAML,WAAYK,EAAMJ,WAAYI,EAAMH,SACpJ,KAAK,EACD,OAAO,IAAIJ,GAA2BO,EAAM3nB,MAAO,IAAImnB,GAA0B,EAAG,IAAKQ,EAAML,WAAYK,EAAMJ,WAAYI,EAAMH,SACvI,QACI,OAAO,IAAIJ,GAA2BhO,EAAIz7B,OAAO,GAAIgqC,EAAMN,YAAaM,EAAML,WAAYK,EAAMJ,WAAYI,EAAMH,SAE9H,CAyCA,IACQ9iB,GADFkjB,GAAiCf,IF5H5B,IAAIE,GE+HXriB,GAAM,SAACmjB,GAAK,MAAM,CACdC,OFvH2CC,EEuHIj3B,GAAU,CAAC,kBAAmB,mBFtH1EpT,EAAUqqC,KADd,IAA4CA,CEwH9C,EACM,SAAC19B,GACJ,IAAMhQ,EAAIqqB,KACV,OAAOhtB,OAAO+qB,OAAO,CAAC,EAAGpoB,EAC7B,IAcJ,SAAS2tC,GAAsCC,GAC3C,IAAIrD,EACEsD,EAAWD,EAAgDC,SAC3DP,EAAQM,EAAgDN,MAE9D,OADqBjxB,IAA2C,IACzDgtB,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACrD62B,SAAU,OACTvD,EAAQ,CAACoC,GAAmB,CAAC,CAAC,UAAW,4CAA6C,CAAC,WAAY,SAACrsC,GACrG,GAAS,MAALA,OAEC,CACD,IAAMytC,EAAaF,EACbG,EAAOljB,GAA6BggB,EAAS3gB,GAA+B2gB,GAAS,WACvF,IAAImD,EAAM5O,EAAS6O,EAAQC,EAAgBC,EAC3C,OAASH,EAAO7V,GAAmCpV,QAAapkB,OAAWA,OAAWA,EAAtEw5B,CAAiF93B,GAAK++B,EAAU8J,GAAmCziB,UAA+B9nB,OAAWA,GAAasvC,EAASv7B,GAAKs7B,GAAQE,OAAiBvvC,EAAYwvC,OAAUxvC,EAAY,WAC/Q,IAAIyvC,EACJ,IACI,IAAMC,EAAellB,GAAsB3S,GAAU,IAAIiS,GAAwB,EAAG,CAAC,WAAY2lB,EAAep3B,GAAQ,CAAC,IAAIyR,GAAwB,EAAG,CAAC,SAAU,IAAIA,GAAwB,EAAG,CAACT,GAAagB,GAA2BilB,EAAQ13B,MAAU,OAAQ3D,GAAWpR,IAAI,SAAC8sC,GAAQ,OAAK1pC,GAAK,IAAI6jB,GAAwB,EAAG,CAACrpB,GAAS,EAAG04B,GAAyChV,GAAUorB,EAAgBC,EAAnErW,CAA4EwW,MAAcF,EAAa,GAAEH,GAASG,KAQrc,OAPWG,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAO5lB,GAAa,iBAAkBylB,GAAclkB,MAAK,SAACzV,GACvJ,IAAIg6B,EAAYC,EAChB,OAASD,EAAah6B,EAAOi6B,EAAc/7B,GAAWwsB,EAAS2J,GAAyCtiB,KAA+BjU,GAAO07B,GAAiB17B,GAAO27B,KAAYI,GAA+BC,EAAWC,GAAiCD,GAAW,kBAASE,EAAWE,GAAML,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOE,EAAWG,OAAO1kB,MAAK,SAAC+M,GACnZ,IAAI5hB,EACJ,OAAOgV,QAAQE,QAAqF,KAA5ElV,EAAa+pB,GAAWr7B,EAAS2qC,GAAczX,IAAqB5xB,IAAc,IAAIikB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAACrT,EAAWjS,OAAO,OAAW,IAAIkmB,GAAe,EAAG,CAACjU,EAAWjS,OAAO,KAC9N,GAAE,KAAOinB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC+lB,QAAkBvkB,MAAK,SAAC2kB,GAAQ,OAAMxkB,QAAQE,QAAQskB,EAAS,GAAE,IACxI,GAAE,KACQ3kB,UAAK,GAAS,SAACpa,GAAG,OAAM,IAAIwZ,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC5Y,KAAO,GACvF,CACA,MAAOg/B,GACH,OAAOR,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOlkB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAComB,MAAQ,IAC1K,CACJ,CAhBmR,IAgBxQ5kB,MAAK,SAAC4gB,GACb,IAAMp0B,EAAMo0B,EACZ,GAAgB,IAAZp0B,EAAIrR,IAEJ,OADAwoC,EAAW,IAAIX,GAA6B,EAAG,CAAC,gFACzC7iB,QAAQE,UAGf,IAAMxS,EAAMrB,EAAItT,OAAO,GACvB,MAAmB,YAAf2U,EAAImN,QApGhC,SAA2C6pB,EAAOpB,GACjC/iB,GAA6BggB,EAAS3gB,GAA+B2gB,GAAS,WACvF,IAAImD,EAAM5O,EAAS6O,EAAQC,EAAgBC,EAC3C,OAASH,EAAO7V,GAAmCpV,QAAapkB,OAAWA,OAAWA,EAAtEw5B,CAAiF6W,GAAS5P,EAAU8J,GAAmCziB,UAA+B9nB,OAAWA,GAAasvC,EAASv7B,GAAKs7B,GAAQE,OAAiBvvC,EAAYwvC,OAAUxvC,EAAY,WACnR,IAAIyvC,EACJ,IACI,IAAMC,EAAellB,GAAsB3S,GAAU,IAAIiS,GAAwB,EAAG,CAAC,WAAY2lB,EAAep3B,GAAQ,CAAC,IAAIyR,GAAwB,EAAG,CAAC,SAAU,IAAIA,GAAwB,EAAG,CAACT,GAAagB,GAA2BilB,EAAQ13B,MAAU,OAAQ3D,GAAWpR,IAAI,SAAC8sC,GAAQ,OAAK1pC,GAAK,IAAI6jB,GAAwB,EAAG,CAACrpB,GAAS,EAAG04B,GAAyChV,GAAUorB,EAAgBC,EAAnErW,CAA4EwW,MAAcF,EAAa,GAAEH,GAASG,KAQrc,OAPWG,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAO5lB,GAAa,gCAAiCylB,GAAclkB,MAAK,SAACzV,GACtK,IAAIg6B,EAAYC,EAChB,OAASD,EAAah6B,EAAOi6B,EAAc/7B,GAAWwsB,EAAS2J,GAAyCtiB,KAA+BjU,GAAO07B,GAAiB17B,GAAO27B,KAAYI,GAA+BC,EAAWC,GAAiCD,GAAW,kBAASE,EAAWE,GAAML,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOE,EAAWG,OAAO1kB,MAAK,SAAC+M,GACnZ,IAAI5hB,EACJ,OAAOgV,QAAQE,QAAqF,KAA5ElV,EAAa+pB,GAAWr7B,EAAS2qC,GAAczX,IAAqB5xB,IAAc,IAAIikB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAACrT,EAAWjS,OAAO,OAAW,IAAIkmB,GAAe,EAAG,CAACjU,EAAWjS,OAAO,KAC9N,GAAE,KAAOinB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC+lB,QAAkBvkB,MAAK,SAAC2kB,GAAQ,OAAMxkB,QAAQE,QAAQskB,EAAS,GAAE,IACxI,GAAE,KACQ3kB,UAAK,GAAS,SAACpa,GAAG,OAAM,IAAIwZ,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC5Y,KAAO,GACvF,CACA,MAAOg/B,GACH,OAAOR,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOlkB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAComB,MAAQ,IAC1K,CACJ,CAhBuR,IAgB5Q5kB,MAAK,SAAC4gB,GAEb,OADA6C,EAAS,IAAIT,GAA6B,EAAG,CAACpC,KACvCzgB,QAAQE,SACnB,GACJ,KACKL,MACT,CA4E4B8kB,CAAkC5B,EAAM3nB,MAAOooB,GACxCxjB,QAAQE,YAGfsjB,EAAW,IAAIX,GAA6B,EAAG,CAACn1B,EAAIoN,WAC7CkF,QAAQE,UAG3B,GACJ,KACAujB,EAAK5jB,MACT,CACJ,GAAI,CAAC,QAAS,WAAY,CAAC,WAAY1P,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK44B,SACxF,CAEO,SAAS4E,GAA0CC,GACtD,IA9J+B3yC,EH6CE+tC,EAd7BD,EGgIE5U,EAAeza,GAA6BmyB,IA/JnB5wC,EA8Jf2yC,EAAoD9E,QA7J7D,IAAIyC,GAA2B,GAAI,IAAID,GAA0B,EAAG,KAAK,GAAM,EAAOrwC,KA+JvF4yC,EAAU1Z,EAAa,GACvBkY,EAAWlY,EAAa,GAE9B,OADU4X,MACHlE,EAAAA,GAAAA,eAAcwC,GAAe,CAChCvB,QAAS,WACL+E,EAAQlC,SACZ,EACA3C,SAAUvzB,GAAQ,EHvIfoyB,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACrDw0B,QAAS,OACTC,IAAK,QACLC,WAAY,YACXpB,EAAQ,EAAClB,EAAAA,GAAAA,eAAc,OAAQ,CAChC1sB,MAAO,CACH2yB,SAAU,SACVC,WAAY,KAEhB/E,SG8HsC,mBH7HrC,CAAC,WAAY9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK44B,WAG9BC,EG0HgD5xB,GAAOJ,IAAM,WACtF,IApG4B80B,EAMHzC,EA8FnBt1B,EAAa85B,EAAQrC,YAC3B,OAA2B,IAAnBz3B,EAAWhQ,IAAaoT,IAAY0wB,EAAAA,GAAAA,eAAcsE,GAAuC,CAC7FL,MAAO+B,EACPxB,SAAUA,KACa,IAAnBt4B,EAAWhQ,IAAaoT,IAlGPkyB,EAkG+Ct1B,EAAWjS,OAAO,IAjG3F+lC,EAAAA,GAAAA,eAAc,IAAK,CACtBmB,SAAU,CAACK,OAgG+G,IAAnBt1B,EAAWhQ,IAAaoT,IAxG/F20B,EAwG0I+B,GAvGvKhG,EAAAA,GAAAA,eAAc,IAAK,CACtBmB,SAAU,CAAC,gDAADhlC,OAAiD8nC,EAAM3nB,MAAK,yJAsGgHhN,GAhF9L,SAAwC20B,EAAOO,GAC3C,IAAMrD,EAAWvzB,GAAQ,EAACoyB,EAAAA,GAAAA,eAAc,IAAK,CACzCmB,SAAU,CAAC,oFACXlB,GAAyBkG,GAAAA,EAAW52B,GAAOJ,IAAM,kBAAMtB,GAAOyB,GAAY,CAAC,KAAM,mBAAoBH,IAAM,kBAAMtB,GAAOyB,GAAY,CAAC,eAAgB20B,EAAM3nB,QAASnN,IAAM,kBAAMtB,GAAOyB,GAAY,CAAC,SAAU20B,EAAML,aAAcz0B,IAAM,kBAAMtB,GAAQo2B,EAAML,WAA4Dxe,KAA/C9V,GAAY,CAAC,aAAc,kBAA+BH,IAAM,kBAAMtB,GAAOyB,GAAY,CAAC,WAAY,SAACta,GAChXwvC,EAAS,IAAIT,GAA6B,EAAG,CAAC/uC,EAAE8U,OAAOpV,QAC3D,IAAKya,IAAM,kBAAMtB,GAAOyB,GAAY,CAAC,UAAW,aAAcH,IAAM,kBAAMtB,GAAOyB,GAAY,CAAC,aAAa,IAAQH,IAAM,kBAAMtB,GAAOyB,GAAY,CAAC,QAAS,mBAAoBH,IAAM,kBAAMtB,GAAOyB,GAAY,CAAC,OAAQ,UAAWH,IAAM,kBAAMG,GAAY,CAAC,aAAa,GAAM,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,IAAE,QACjS,OAAO0wB,EAAAA,GAAAA,eAAc,MAAO,CACxBmB,SAAU9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK64B,KAE/D,CAuE0MiF,CAA+BJ,EAASxB,GAC1O,MH/HGxE,EAAAA,GAAAA,eAAc,MAAO,CACxB1sB,MAAO,CACH8uB,QAAS,OACTiE,cAAe,SACfhE,IAAO,aAEXlB,SAAU9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK64B,OGyHjDgB,GAAqB5yB,GAAOJ,IAAM,kBAAMtB,GAAOyB,IAAY0wB,EAAAA,GAAAA,eAAc,SAAU,CACrF+B,UAAW,oBACXuE,QAAS,SAACxY,GACNkY,EAAQlC,SACZ,EACA3C,SAAU,UACThyB,IAAM,kBAAOzW,EAAOstC,EAAQrC,YAAa,IAAIF,GAA0B,EAAG,KAAOn0B,IAAY0wB,EAAAA,GAAAA,eAAc,SAAU,CACtHuG,SAAmC,IAAzBP,EAAQ1pB,MAAMvmB,OACxBgsC,UAAW,oBACXuE,QAAS,SAAC3E,GACFf,GAAcoF,EAAQ1pB,OACtBkoB,EAAS,IAAIT,GAA6B,EAAG,CAAC,IAAIN,GAA0B,EAAG,OAG/Ee,EAAS,IAAIT,GAA6B,EAAG,IAErD,EACA5C,SAAU,WACR/b,IAAS,IAAG,SAE1B,CAAC,IAEKohB,GAAK,SAAA1qB,GACP,SAAA0qB,EAAYC,EAAWC,EAAQC,EAAaC,EAAgBC,EAAWhD,EAAYiD,GAAU,IAAAhqB,EAQhE,OARgExoB,GAAA,KAAAkyC,IACzF1pB,EAAAlB,GAAA,KAAA4qB,IACKC,UAAYA,EACjB3pB,EAAK4pB,OAAmB,EAATA,EACf5pB,EAAK6pB,YAAcA,EACnB7pB,EAAK8pB,eAAiBA,EACtB9pB,EAAK+pB,UAAYA,EACjB/pB,EAAK+mB,WAAaA,EAClB/mB,EAAKgqB,SAAWA,EAAShqB,CAC7B,CAAC,OAAAlR,GAAA46B,EAAA1qB,GAAA1nB,GAAAoyC,EAAA,CAVM,CAAS9pC,GAiBdsf,GAAO,SAAA+qB,GACT,SAAA/qB,EAAY9f,EAAKjC,GAAQ,IAAAgjB,EAGA,OAHA3oB,GAAA,KAAA0nB,IACrBiB,EAAArB,GAAA,KAAAI,IACK9f,IAAMA,EACX+gB,EAAKhjB,OAASA,EAAOgjB,CACzB,CAAC,OAAArR,GAAAoQ,EAAA+qB,GAAA3yC,GAAA4nB,EAAA,EAAAvnB,IAAA,QAAAC,MACD,WACI,MAAO,CAAC,YAAa,eAAgB,SAAU,iBAAkB,eACrE,IAAC,CARQ,CAASsH,GAmBtB,SAAS8V,GAAOmyB,EAAOvO,GACnB,OAAQA,EAAIx5B,KACR,KAAK,EACD,OAAO,IAAIsqC,GAAMvC,EAAMwC,UAAWxC,EAAMyC,OAAQzC,EAAM0C,YAAajR,EAAIz7B,OAAO,GAAIgqC,EAAM4C,UAAW5C,EAAMJ,WAAYI,EAAM6C,UAC/H,KAAK,EACD,IAAME,EAAW/C,EAAM0C,YAAY5wC,QAAU,EAC7C,OAAIixC,GAAa/C,EAAM0C,cAAgB1C,EAAM2C,eAClC,IAAIJ,GAAMvC,EAAMwC,UAAWxC,EAAMyC,OAAQzC,EAAM0C,YAAa1C,EAAM2C,eAAgB3C,EAAM4C,WAAW,OAAMtxC,GAMzG,IAAIixC,GAAMvC,EAAMwC,UAAWxC,EAAMyC,OAAQzC,EAAM0C,YAAa1C,EAAM2C,eAAgB3C,EAAM4C,UAAW5C,EAAMJ,WAJ1GmD,EAIsH,wBAHA,8BAAF7qC,OAAgC,EAAC,iBAMnK,KAAK,EACD,IAAMoR,EAAMmoB,EAAIz7B,OAAO,GACvB,GAAgB,IAAZsT,EAAIrR,IACJ,OAAO,IAAIsqC,GAAMvC,EAAMwC,UAAWxC,EAAMyC,OAAQzC,EAAM0C,YAAa1C,EAAM2C,eAAgB3C,EAAM4C,WAAW,EAAO,+DAGjH,IAAMlM,EAAMptB,EAAItT,OAAO,GACvB,MAAmB,YAAf0gC,EAAI5e,OACG,IAAIyqB,GAAMvC,EAAMwC,UAAWxC,EAAMyC,OAAQzC,EAAM0C,YAAa1C,EAAM2C,gBAAgB,EAAM3C,EAAMJ,WAAYI,EAAM6C,UAGhH,IAAIN,GAAMvC,EAAMwC,UAAWxC,EAAMyC,OAAQzC,EAAM0C,YAAa1C,EAAM2C,eAAgB3C,EAAM4C,WAAW,EAAOlM,EAAI3e,SAIjI,KAAK,EACD,OAAO,IAAIwqB,GAAMvC,EAAMwC,UAAWxC,EAAMyC,OAAQzC,EAAM0C,YAAa1C,EAAM2C,eAAgB3C,EAAM4C,UAAW5C,EAAMJ,gBAAYtuC,GAChI,QACI,OAAO,IAAIixC,GAAMvC,EAAMwC,UAAWxC,EAAMyC,OAAQhR,EAAIz7B,OAAO,GAAIgqC,EAAM2C,eAAgB3C,EAAM4C,UAAW5C,EAAMJ,WAAYI,EAAM6C,UAE1I,CA8BA,SAASG,GAAgBhD,EAAOO,GAC5B,IAAI9B,EAASxB,EAAOgG,E,EACdC,EAAOv5B,GAAQ,EAACoyB,EAAAA,GAAAA,eAAc,OAAQ,CACxC1sB,MAAO,CACH8zB,UAAW,SACXC,UAAW,OAEftF,UAAW,aACXZ,SAAU,sBACVlB,GAAyBkG,GAAAA,EAAW,CAAC,CAAC,KAAM,kBAAmB,CAAC,UAAW,YAAa,CAAC,QAAS,gBAAiB,CAAC,OAAQ,YAAa,CAAC,WAAY,SAACnxC,GACvJwvC,EAAS,IAAIxoB,GAAQ,EAAG,CAAChnB,EAAE8U,OAAOpV,QACtC,GAAI,CAAC,YAAa,SAACwc,GACE,UAAbA,EAAIo2B,MACJvE,GAAc,eAEtB,GAAI,CAAC,QAAS,CACVsE,UAAW,OACXE,aAAc,OACd9C,SAAU,YACRxE,GAAyBkG,GAAAA,EAAW,CAAC,CAAC,KAAM,gBAAiB,CAAC,UAAW,YAAa,CAAC,QAAS,uBAAwB,CAAC,OAAQ,YAAa,CAAC,WAAY,SAACqB,GAC9JhD,EAAS,IAAIxoB,GAAQ,EAAG,CAACwrB,EAAI19B,OAAOpV,QACxC,GAAI,CAAC,QAAS,CACV2yC,UAAW,OACXE,aAAc,OACd9C,SAAU,aACRzE,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACpDw5B,UAAW,YACV1E,EAAU,EAAC1C,EAAAA,GAAAA,eAAc,SAAUhmC,EAAU4T,GAAQ,CAAC,CAAC,YAAa,eAAgB,CAAC,QAAS,CAC/F65B,SAAU,UACV,CAAC,UAAW,SAACn8B,GACR24B,EAAMJ,YA1DnB,SAAwB6D,EAAWC,EAAQC,EAAaC,EAAQrD,GAC/C/iB,GAA6BggB,EAAS3gB,GAA+B2gB,GAAS,WACvF,IAAImD,EAAM5O,EAAS6O,EAAQC,EAAgBC,EAE3C,OADAP,EAAS,IAAIxoB,GAAQ,EAAG,KACf4rB,EAAY7xC,QAAU,GAAO6xC,IAAgBC,GAAcjD,EAAO7V,GAAmCpV,QAAapkB,OAAWA,OAAWA,EAAtEw5B,CAAiF6Y,GAAe5R,EAAU8J,GAAmCziB,UAA+B9nB,OAAWA,GAAasvC,EAASv7B,GAAKs7B,GAAQE,OAAiBvvC,EAAYwvC,OAAUxvC,EAAY,WACpV,IAAIyvC,EACJ,IACI,IAAMC,EAAellB,GAAsB3S,GAAU,IAAIiS,GAAwB,EAAG,CAAC,WAAY2lB,EAAep3B,GAAQ,CAAC,IAAIyR,GAAwB,EAAG,CAAC,SAAU,IAAIA,GAAwB,EAAG,CAACT,GAAagB,GAA2BilB,EAAQ13B,MAAU,OAAQ3D,GAAWpR,IAAI,SAAC8sC,GAAQ,OAAK1pC,GAAK,IAAI6jB,GAAwB,EAAG,CAACrpB,GAAS,EAAG04B,GAAyChV,GAAUorB,EAAgBC,EAAnErW,CAA4EwW,MAAcF,EAAa,GAAEH,GAASG,KAQrc,OAPWG,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAO5lB,GAAa,kCAADrjB,OAAmCurC,EAAS,SAAAvrC,OAAQwrC,GAAU1C,GAAclkB,MAAK,SAACzV,GAClM,IAAIg6B,EAAYC,EAChB,OAASD,EAAah6B,EAAOi6B,EAAc/7B,GAAWwsB,EAAS2J,GAAyCtiB,KAA+BjU,GAAO07B,GAAiB17B,GAAO27B,KAAYI,GAA+BC,EAAWC,GAAiCD,GAAW,kBAASE,EAAWE,GAAML,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOE,EAAWG,OAAO1kB,MAAK,SAAC+M,GACnZ,IAAI5hB,EACJ,OAAOgV,QAAQE,QAAqF,KAA5ElV,EAAa+pB,GAAWr7B,EAAS2qC,GAAczX,IAAqB5xB,IAAc,IAAIikB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAACrT,EAAWjS,OAAO,OAAW,IAAIkmB,GAAe,EAAG,CAACjU,EAAWjS,OAAO,KAC9N,GAAE,KAAOinB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC+lB,QAAkBvkB,MAAK,SAAC2kB,GAAQ,OAAMxkB,QAAQE,QAAQskB,EAAS,GAAE,IACxI,GAAE,KACQ3kB,UAAK,GAAS,SAACpa,GAAG,OAAM,IAAIwZ,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC5Y,KAAO,GACvF,CACA,MAAOg/B,GACH,OAAOR,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOlkB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAComB,MAAQ,IAC1K,CACJ,CAhBwV,IAgB7U5kB,MAAK,SAAC4gB,GAEb,OADA6C,EAAS,IAAIxoB,GAAQ,EAAG,CAAC2lB,KAClBzgB,QAAQE,SACnB,IAAOF,QAAQE,SACnB,KACKL,MACT,CAiCY+mB,CAAe7D,EAAMwC,UAAWxC,EAAMyC,OAAQzC,EAAM0C,YAAa1C,EAAM2C,eAAgBpC,EAE/F,IAAKtD,EAAQ3xB,GAAOJ,IAAM,kBAAO80B,EAAMJ,WAAav0B,GAAYwyB,MAA4CxyB,GAAY,oBAAoB,KAAK,CAAC,WAAY+B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK44B,WAAgB,CAAC,WAAY7vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKo6B,WAAiB1C,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACpVy5B,UAAW,OACXU,UAAW,UACVb,EAAU,CAACtF,GAAiBqC,EAAM6C,UAAU,WAC7CtC,EAAS,IAAIxoB,GAAQ,EAAG,IAC5B,KAAK,CAAC,WAAY3K,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK4+B,YAC/D,OAAO51B,GAAAA,cAAmB02B,MAAnB12B,GAAK,CAAeA,GAAAA,SAAgB,CAAC,GAACnV,O,gDAAKgrC,I,qjBACtD,CAaO,SAASc,GAAiBC,GAC7B,IAAIxF,EAASyF,EACPR,EAASO,EAA2BP,OACpCD,EAAYQ,EAA2BR,UACvCpb,EAAeza,GAA6BC,GA9H3C,IAAI00B,GA8HoDkB,EAAWC,EA9HnD,GAAI,IAAI,GAAO,OAAOpyC,IA+HvCywC,EAAU1Z,EAAa,GAC7B,OAAO0T,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACrDw0B,QAAS,OACTG,eAAgB,SAChB6F,QAAS,MACR1F,EAAU,CAACzC,GAAyBoI,GAAAA,EAAO,CAAC,CAAC,QAAS,CACvDD,QAAS,MACThG,QAAS,OACTiE,cAAe,SACfgB,UAAW,MACXI,SAAU,OACTU,EAAW54B,GAAOJ,IAAM,kBAAO62B,EAAQa,UAAYv3B,IAzBjD0wB,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACrDw5B,UAAW,SACXC,UAAW,SACVnG,EAAQ,EAAClB,EAAAA,GAAAA,eAAc,OAAQ,CAChC+B,UAAW,aACXZ,SAAU,uBACT,CAAC,WAAY9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK44B,WAmBwB5xB,GAAY23B,GAAgBjB,EAAS1Z,EAAa,KA3B7I,IACQ4U,CA0ByI,KAAK,CAAC,WAAY7vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK6/B,SAAiB,CAAC,WAAY92B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKo6B,SAC3R,C,m9DC3ZkD,IAE5C4F,GAAS,SAAAlpB,GACX,SAAAkpB,EAAYpsC,EAAKjC,GAAQ,IAAA0R,EAGA,OAHArX,GAAA,KAAAg0C,IACrB38B,EAAAiQ,GAAA,KAAA0sB,IACKpsC,IAAMA,EACXyP,EAAK1R,OAASA,EAAO0R,CACzB,CAAC,OAAAC,GAAA08B,EAAAlpB,GAAAhrB,GAAAk0C,EAAA,EAAA7zC,IAAA,QAAAC,MACD,WACI,MAAO,CAAC,SAAU,SACtB,IAAC,CARU,CAASsH,GAelBwqC,GAAK,SAAAh7B,GACP,SAAAg7B,EAAY/qB,EAAUC,EAAUC,EAASmrB,EAAUyB,EAAeC,EAAe3E,EAAY4E,EAASC,GAAM,IAAAxsB,EAUvF,OAVuF5nB,GAAA,KAAAkyC,IACxGtqB,EAAAN,GAAA,KAAA4qB,IACK/qB,SAAWA,EAChBS,EAAKR,SAAWA,EAChBQ,EAAKP,QAAUA,EACfO,EAAK4qB,SAAWA,EAChB5qB,EAAKqsB,cAAgBA,EACrBrsB,EAAKssB,cAAgBA,EACrBtsB,EAAK2nB,WAAaA,EAClB3nB,EAAKusB,QAAUA,EACfvsB,EAAKwsB,KAAOA,EAAKxsB,CACrB,CAAC,OAAAtQ,GAAA46B,EAAAh7B,GAAApX,GAAAoyC,EAAA,CAZM,CAAS9pC,GAmBdsf,GAAO,SAAAsD,GACT,SAAAtD,EAAY9f,EAAKjC,GAAQ,IAAAuiB,EAGA,OAHAloB,GAAA,KAAA0nB,IACrBQ,EAAAZ,GAAA,KAAAI,IACK9f,IAAMA,EACXsgB,EAAKviB,OAASA,EAAOuiB,CACzB,CAAC,OAAA5Q,GAAAoQ,EAAAsD,GAAAlrB,GAAA4nB,EAAA,EAAAvnB,IAAA,QAAAC,MACD,WACI,MAAO,CAAC,iBAAkB,iBAAkB,gBAAiB,WAAY,gBAAiB,WAAY,eAAgB,gBAC1H,IAAC,CARQ,CAASsH,GAmBtB,SAAS8V,GAAOmyB,EAAOvO,GACnB,IAAIxpB,EAAYwvB,EAAKiN,EAAShiC,EAC9B,OAAQ+uB,EAAIx5B,KACR,KAAK,EACD,IAAM0S,EAAM8mB,EAAIz7B,OAAO,GACvB,OAAO,IAAIusC,GAAMvC,EAAMxoB,SAAU7M,EAAKq1B,EAAMtoB,QAASsoB,EAAM6C,SAAU7C,EAAMsE,cAAe35B,EAAI7Y,OAAS,EAAGkuC,EAAMJ,WAAYI,EAAMwE,QAASxE,EAAMyE,MAErJ,KAAK,EACD,OAAO,IAAIlC,GAAMvC,EAAMxoB,SAAUwoB,EAAMvoB,SAAUga,EAAIz7B,OAAO,GAAIgqC,EAAM6C,SAAU7C,EAAMsE,cAAetE,EAAMuE,cAAevE,EAAMJ,WAAYI,EAAMwE,QAASxE,EAAMyE,MACrK,KAAK,EACD,IAAME,EAAgB3E,EAAMxoB,SAAS1lB,OAAS,EACxC8yC,EAAgB5E,EAAMvoB,SAAS3lB,OAAS,EAC9C,OAAI6yC,GAAiBC,EACV,IAAIrC,GAAMvC,EAAMxoB,SAAUwoB,EAAMvoB,SAAUuoB,EAAMtoB,aAASpmB,GAAW,GAAM,GAAM,EAAM0uC,EAAMwE,QAASxE,EAAMyE,MAG3G,IAAIlC,GAAMvC,EAAMxoB,SAAUwoB,EAAMvoB,SAAUuoB,EAAMtoB,QAASsoB,EAAM6C,SAAU8B,EAAeC,EAAe5E,EAAMJ,WAAYI,EAAMwE,QAASxE,EAAMyE,MAG7J,KAAK,EACD,IAAMn7B,EAAMmoB,EAAIz7B,OAAO,GACvB,GAAgB,IAAZsT,EAAIrR,IAcJ,OAAO,IAAIsqC,GAAMvC,EAAMxoB,SAAUwoB,EAAMvoB,SAAUuoB,EAAMtoB,QAAS,yDAA0DsoB,EAAMsE,cAAetE,EAAMuE,eAAe,EAAOvE,EAAMwE,QAASxE,EAAMyE,MAbhM,IAAMxN,EAAM3tB,EAAItT,OAAO,GACvB,OAAQihC,EAAInf,QACR,IAAK,UAED,OADAjF,OAAOC,SAAS+xB,QAAO,GAChB7E,EAEX,IAAK,SACD,OAAO,IAAIuC,GAAMvC,EAAMxoB,SAAUwoB,EAAMvoB,SAAUuoB,EAAMtoB,QAASsoB,EAAM6C,SAAU7C,EAAMsE,cAAetE,EAAMuE,eAAe,EAAOvE,EAAMwE,QAAS,IAAIH,GAAU,EAAG,EAAEp8B,EAAagvB,EAAIjf,SAAyB,MAAd/P,GAAwBwvB,EAAM93B,GAAgBT,GAAM+I,IAAey8B,EAAiD,EAAtCjoB,GAAKvc,GAAeu3B,EAAKh4B,OAAkBiD,EAAM3Q,GAAS0lC,EAAK,cAAe90B,GAAOT,GAAO,2BAAdS,CAA0CD,EAA1CC,CAA+C+hC,SAAepzC,GAAY2lC,EAAIlf,WAC7a,QACI,OAAO,IAAIwqB,GAAMvC,EAAMxoB,SAAUwoB,EAAMvoB,SAAUuoB,EAAMtoB,QAASuf,EAAIlf,QAASioB,EAAMsE,cAAetE,EAAMuE,eAAe,EAAOvE,EAAMwE,QAASxE,EAAMyE,MAOnK,KAAK,EACD,OAAO,IAAIlC,GAAMvC,EAAMxoB,SAAUwoB,EAAMvoB,SAAUuoB,EAAMtoB,QAAS+Z,EAAIz7B,OAAO,GAAIgqC,EAAMsE,cAAetE,EAAMuE,cAAevE,EAAMJ,WAAYI,EAAMwE,QAASxE,EAAMyE,MACpK,KAAK,EACD,OAAO,IAAIlC,GAAMvC,EAAMxoB,SAAUwoB,EAAMvoB,SAAUuoB,EAAMtoB,aAASpmB,EAAW0uC,EAAMsE,cAAetE,EAAMuE,cAAevE,EAAMJ,WAAYI,EAAMwE,QAASxE,EAAMyE,MAChK,KAAK,EACD,OAAO,IAAIlC,GAAMvC,EAAMxoB,SAAUwoB,EAAMvoB,SAAUuoB,EAAMtoB,QAASsoB,EAAM6C,SAAU7C,EAAMsE,cAAetE,EAAMuE,cAAevE,EAAMJ,YAAaI,EAAMwE,QAASxE,EAAMyE,MACtK,QACI,IAAMt1C,EAAIsiC,EAAIz7B,OAAO,GACrB,OAAO,IAAIusC,GAAMpzC,EAAG6wC,EAAMvoB,SAAUuoB,EAAMtoB,QAASsoB,EAAM6C,SAAU1zC,EAAE2C,OAAS,EAAGkuC,EAAMuE,cAAevE,EAAMJ,WAAYI,EAAMwE,QAASxE,EAAMyE,MAGzJ,CAEA,SAASK,GAASC,EAAUC,EAAUC,EAAS1E,GAC9B/iB,GAA6BggB,EAAS3gB,GAA+B2gB,GAAS,WACvF,IAAImD,EAAM5O,EAAS6O,EAAQC,EAAgBC,EAE3C,GADAP,EAAS,IAAIxoB,GAAQ,EAAG,KACnBgtB,EAAS5mC,OAAOrM,OAAS,GAAOkzC,EAAS7mC,OAAOrM,OAAS,EAAI,CAC9D,IAAMozC,EAAM,IAAI3tB,GAAawtB,EAAUC,EAAUC,GACjD,OAAStE,EAAO7V,GpBpIjB1V,GAAY,qBAAsB,GAAImC,IAAc,iBAAM,CAAC,CAAC,WAAY7B,IAAc,CAAC,WAAYA,IAAc,CAAC,UAAWC,IAAW,SoBoIxDrkB,OAAWA,OAAWA,EAArFw5B,CAAgGoa,GAAOnT,EAAU8J,GAAmC3jB,UAA6B5mB,OAAWA,GAAasvC,EAASv7B,GAAKs7B,GAAQE,OAAiBvvC,EAAYwvC,OAAUxvC,EAAY,WAC9R,IAAIyvC,EACJ,IACI,IAAMC,EAAellB,GAAsB3S,GAAU,IAAIiS,GAAwB,EAAG,CAAC,WAAY2lB,EAAep3B,GAAQ,CAAC,IAAIyR,GAAwB,EAAG,CAAC,SAAU,IAAIA,GAAwB,EAAG,CAACT,GAAagB,GAA2BilB,EAAQ13B,MAAU,OAAQ3D,GAAWpR,IAAI,SAAC8sC,GAAQ,OAAK1pC,GAAK,IAAI6jB,GAAwB,EAAG,CAAC+pB,GAAW,EAAG1a,GAAyChV,GAAUorB,EAAgBC,EAAnErW,CAA4EwW,MAAcF,EAAa,GAAEH,GAASG,KAQvc,OAPWG,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAO5lB,GAAa,WAAYylB,GAAclkB,MAAK,SAACzV,GACjJ,IAAIg6B,EAAYC,EAChB,OAASD,EAAah6B,EAAOi6B,EAAc/7B,GAAWwsB,EAAS2J,GAAyCxjB,KAA6B/S,GAAO07B,GAAiB17B,GAAO27B,KAAYI,GAA+BC,EAAWC,GAAiCD,GAAW,kBAASE,EAAWE,GAAML,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOE,EAAWG,OAAO1kB,MAAK,SAAC+M,GACjZ,IAAI5hB,EACJ,OAAOgV,QAAQE,QAAqF,KAA5ElV,EAAa+pB,GAAWr7B,EAAS2qC,GAAczX,IAAqB5xB,IAAc,IAAIikB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAACrT,EAAWjS,OAAO,OAAW,IAAIkmB,GAAe,EAAG,CAACjU,EAAWjS,OAAO,KAC9N,GAAE,KAAOinB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC+lB,QAAkBvkB,MAAK,SAAC2kB,GAAQ,OAAMxkB,QAAQE,QAAQskB,EAAS,GAAE,IACxI,GAAE,KACQ3kB,UAAK,GAAS,SAACpa,GAAG,OAAM,IAAIwZ,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC5Y,KAAO,GACvF,CACA,MAAOg/B,GACH,OAAOR,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOlkB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAComB,MAAQ,IAC1K,CACJ,CAhBkS,IAgBvR5kB,MAAK,SAAC4gB,GAEb,OADA6C,EAAS,IAAIxoB,GAAQ,EAAG,CAAC2lB,KAClBzgB,QAAQE,SACnB,GACJ,CAEI,OAAOF,QAAQE,SAEvB,KACKL,MACT,CAEA,SAASsoB,GAAWC,EAAOC,GACvB,IAAIrC,EACJ,OAAOlH,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACrDo0B,MAAO,OACPyF,SAAU,IACVW,QAAS,EACThG,QAAS,OACTiE,cAAe,SACfhE,IAAO,cACN6E,EAAU33B,GAAOJ,IAAM,WACxB,IAAI+xB,EACJ,OAAOrzB,GAAOyB,IAAY0wB,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACxEw6B,QAAS,EACThB,UAAW,SACXoC,aAAc,EACdC,MAAO,cACPvD,WAAY,UACXhF,EAAQ,EAAClB,EAAAA,GAAAA,eAAc,OAAQ,CAChCmB,SAAU,CAAC,gDACV,CAAC,WAAY9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK44B,WAAgB/xB,IAAM,WACjF,IAAIjD,EAAYw9B,EAAGhH,EACnB,OAAO70B,GAA2C,OAAnC3B,EAAao9B,IAAgCI,EAAIx9B,EAAYoD,IAAY0wB,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACtIw5B,UAAW,SACXqC,MAAO,sBACN/G,EAAU,EAAC1C,EAAAA,GAAAA,eAAc,OAAQ,CAClCmB,SAAU,CAACuI,MACV,CAAC,WAAYr4B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKo6B,YAAsBtd,KAAajW,IAAM,kBAAMG,IAAY0wB,EAAAA,GAAAA,eAAc,IAAK,CACzI1sB,MAAO,CACH+zB,UAAW,GACXD,UAAW,UAEfjG,SAAUoI,IACX,IACP,IACJ,KAAK,CAAC,WAAYl4B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK4+B,SACnE,CAEO,SAASyC,KACZ,IAAIzC,EACE5a,EAAeza,GAA6BC,GA/H3C,IAAI00B,GAAM,GAAI,IAAI,OAAMjxC,GAAW,GAAM,GAAM,GAAO,EAAO,IAAI+yC,GAAU,EAAG,MAgI/EtC,EAAU1Z,EAAa,GACvBkY,EAAWlY,EAAa,GAC9B,OAAO0T,EAAAA,GAAAA,eAAc,OAAQhmC,EAAU4T,GAAQ,CAAC,CAAC,eAAgB,MAAO,CAAC,SAAU,KAAM,CAAC,QAAS,CAC/Fw0B,QAAS,OACTiE,cAAe,SACf/D,WAAY,SACZC,eAAgB,YACf2E,EAAU33B,GAAOJ,IAAM,kBAAMtB,GAAOyB,GAAY2wB,GAAyBkG,GAAAA,EAAW,CAAC,CAAC,aAAa,GAAO,CAAC,KAAM,kBAAmB,CAAC,UAAW,YAAa,CAAC,QAAS,cAAe,CAAC,eAAgB,YAAa,CAAC,WAAY,SAACnxC,GACnOwvC,EAAS,IAAIxoB,GAAQ,EAAG,CAAChnB,EAAE8U,OAAOpV,QACtC,GAAI,CAAC,YAAagE,EAAOstC,EAAQ0C,KAAM,IAAIJ,GAAU,EAAG,MAAO,CAAC,YAAa,SAACp3B,GACzD,UAAbA,EAAIo2B,OACJp2B,EAAI04B,iBACJ7G,GAAc,kBAEtB,GAAI,CAAC,SAAUiD,EAAQuC,eAAgB,CAAC,aAAcvuC,EAAUuV,GAAOJ,IAAM,kBAAQzW,EAAOstC,EAAQ0C,KAAM,IAAIJ,GAAU,EAAG,KAErHljB,KAF4H9V,GAAY,CAAC,QAAS,CACpJm6B,MAAO,oBACI,OAAO,CAAC,QAAS,CAC5BpC,UAAW,OACX5C,SAAU,aACPt1B,IAAM,kBAAMtB,GAAOyB,GAAY2wB,GAAyBkG,GAAAA,EAAW,CAAC,CAAC,KAAM,kBAAmB,CAAC,UAAW,YAAa,CAAC,QAAS,WAAY,CAAC,YAAaztC,EAAOstC,EAAQ0C,KAAM,IAAIJ,GAAU,EAAG,MAAO,CAAC,OAAQ,YAAa,CAAC,WAAY,SAACd,GAC/OhD,EAAS,IAAIxoB,GAAQ,EAAG,CAACwrB,EAAI19B,OAAOpV,QACxC,GAAI,CAAC,YAAa,SAACm1C,GACE,UAAbA,EAAIvC,OACJuC,EAAID,iBACJb,GAAS/C,EAAQvqB,SAAUuqB,EAAQtqB,SAAUsqB,EAAQrqB,QAAS6oB,GAEtE,GAAI,CAAC,SAAUwB,EAAQwC,eAAgB,CAAC,aAAcxuC,EAAUuV,GAAOJ,IAAM,kBAAQzW,EAAOstC,EAAQ0C,KAAM,IAAIJ,GAAU,EAAG,KAErHljB,KAF4H9V,GAAY,CAAC,QAAS,CACpJm6B,MAAO,oBACI,OAAO,CAAC,QAAS,CAC5BpC,UAAW,OACXE,aAAc,OACd9C,SAAU,aACPt1B,IAAM,WACT,IAAIjD,EACJ,OAAO2B,GAAuD,KAA/C3B,EAAa85B,EAAQ0C,MAAkBxsC,IAAaoT,GAAY+5B,GAAWn9B,EAAWjS,OAAO,GAAIiS,EAAWjS,OAAO,KAAO4T,GAAOyB,GAAY2wB,GAAyB6J,GAAAA,EAAkB,CAAC,CAAC,QAAS,sBAAuB,CAAC,UAAW7J,GAAyB8J,GAAAA,EAAU,CAAC,CAAC,QAAS,CAC/RN,MAAO,qBACP,CAAC,UAAWzD,EAAQrqB,SAAU,CAAC,WAAY,SAACquB,GAC5CxF,EAAS,IAAIxoB,GAAQ,EAAG,CAACguB,EAAIlgC,OAAOmgC,UACxC,GAAI,CAAC,QAAS,iBAAkB96B,IAAM,WAClC,IAAI+xB,EACJ,OAAOrzB,GAAOyB,IAAY0wB,EAAAA,GAAAA,eAAc,SAAUhmC,EAAU4T,GAAQ,CAAC,CAAC,OAAQ,UAAW,CAAC,YAAa,eAAgB,CAAC,QAAS,CAC7Hy5B,UAAW,GACX5C,SAAU,MACV,CAAC,UAAW,SAACyF,GACbA,EAAIN,iBACJb,GAAS/C,EAAQvqB,SAAUuqB,EAAQtqB,SAAUsqB,EAAQrqB,QAAS6oB,EAClE,IAAKtD,EAAQ3xB,GAAOJ,IAAM,kBAAO62B,EAAQnC,WAAav0B,GAAYwyB,MAA4CxyB,GAAY,WAAW,KAAK,CAAC,WAAY+B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK44B,WAAgB/xB,IAAM,WACtN,IAAIuzB,EACJ,OAAOpzB,IAAY0wB,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACjEy5B,UAAW,GACX5C,SAAU,QACVrC,QAAS,OACTiE,cAAe,MACf9D,eAAgB,eAChB0D,SAAU,YACTvD,EAAU,EAAC1C,EAAAA,GAAAA,eAAc,IAAK,CAC/BmK,KAAM,WACNhJ,SAAU,mBACVnB,EAAAA,GAAAA,eAAc,IAAK,CACnBsG,QAAS,SAACh7B,GACNk5B,EAAS,IAAIxoB,GAAQ,EAAG,IAC5B,EACAmlB,SAAU,oBACT,CAAC,WAAY9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKo6B,UACnE,IACJ,KAAMvzB,IAAM,kBAAMtB,GAAOyB,GAAYsyB,GAAiBoE,EAAQc,UAAU,WACpEtC,EAAS,IAAIxoB,GAAQ,EAAG,IAC5B,KAAK7M,IAAM,kBAAO62B,EAAQyC,QAAUn5B,IAAY0wB,EAAAA,GAAAA,eAAc8F,GAA2C,CACrG7E,QAAS,WACLuD,EAAS,IAAIxoB,GAAQ,EAAG,IAC5B,KACEoJ,IAAS,IAAG,IACtB,IAAG,IAAE,KAAI,CAAC,WAAY/T,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK4+B,SACvE,CAEO,IAAMkD,GAAW,SAAArD,GACpB,SAAAqD,EAAYluC,EAAKjC,GAAQ,IAAA6iB,EAGA,OAHAxoB,GAAA,KAAA81C,IACrBttB,EAAAlB,GAAA,KAAAwuB,IACKluC,IAAMA,EACX4gB,EAAK7iB,OAASA,EAAO6iB,CACzB,CAAC,OAAAlR,GAAAw+B,EAAArD,GAAA3yC,GAAAg2C,EAAA,EAAA31C,IAAA,QAAAC,MACD,WACI,MAAO,CAAC,SAAU,QACtB,IAAC,CARmB,CAASsH,GAe1B,SAASquC,GAAcC,GAC1B,IAAIpD,EAAS/F,EAAUuB,EACjB54B,EAASwgC,EAAwBxgC,OACjCwiB,EAAetZ,GAA2C,IAC1Du3B,EAAiBv3B,IAA2C,GAC5Dw3B,EAAiBx3B,IAA2C,GAC5Dy3B,EAAgBD,EAAe,GAC/BE,EAAiB13B,QAA2Czd,GAC5Do1C,EAAYD,EAAe,GAC3BE,EAAiB53B,IAA2C,GAC5D63B,EAAQD,EAAe,GACvBE,EAAwB,IAAfhhC,EAAO5N,IAAa,QAAU,SAC7C,OAAO8jC,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACrDw0B,QAAS,OACTiE,cAAe,SACfoB,SAAU,IACVpF,IAAO,WACP+F,QAAS,MACRlB,EAAU,EAAClH,EAAAA,GAAAA,eAAc,KAAM,CAChC1sB,MAAO,CACH2yB,SAAU,OACVwD,MAAO,mBACPvD,WAAY,QAEhB/E,SAAU,qBAAFhlC,OAAuB2uC,EAAK,aACpC9K,EAAAA,GAAAA,eAAc,IAAK,CACnBmB,SAAU,SAAFhlC,OAAW2uC,EAAK,+IACxB7K,GAAyBkG,GAAAA,EAAW,CAAC,CAAC,aAAa,GAAO,CAAC,KAAM,kBAAmB,CAAC,UAAW,YAAa,CAAC,QAAS,cAAe,CAAC,eAAgB,YAAa,CAAC,WAAY,SAACnxC,GAClL,IACM+1C,EADI/1C,EAAE8U,OAAOpV,MACC0N,OACpBkqB,EAAa,GAAGye,GAChBR,EAAe,GAAGQ,EAAUh1C,OAAS,EACzC,GAAI,CAAC,SAAUw0C,EAAe,IAAK,CAAC,QAAS,CACzC9F,SAAU,aACRzE,EAAAA,GAAAA,eAAc,OAAQ,CACxBmB,SAAU,CAAC,+DACXlB,GAAyBkG,GAAAA,EAAW,CAAC,CAAC,KAAM,eAAgB,CAAC,UAAW,YAAa,CAAC,QAAS,kBAAmB,CAAC,OAAQ,SAAU,CAAC,YAAY,GAAO,CAAC,SAAUr8B,EAAO5N,IAAa4N,EAAO7P,OAAO,GAAGqiB,QAAiC,CAAC,QAAS,CACpPmoB,SAAU,YACRxE,GAAyB6J,GAAAA,EAAkB,CAAC,CAAC,SAAU3I,EAAWvzB,GAAQ,CAAC,+BAA+BoyB,EAAAA,GAAAA,eAAc,IAAK,CAC/H1sB,MAAO,CACH03B,eAAgB,aAEpBlhC,OAAQ,SACRqgC,KAAM,gBACNhJ,SAAU,uBACRnB,EAAAA,GAAAA,eAAc,OAAQ,CACxBmB,SAAU9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK64B,QACrD,CAAC,UAAWlB,GAAyB8J,GAAAA,EAAU,CAAC,CAAC,QAAS,CAC5DN,MAAO,qBACP,CAAC,UAAWoB,GAAQ,CAAC,WAAY,SAAC35B,GAClC05B,EAAe,GAAG15B,EAAIpH,OAAOmgC,QACjC,GAAI,CAAC,QAAS,iBAAiBjK,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CAC7Ew0B,QAAS,OACTG,eAAgB,SAChBwF,UAAW,MACVrF,EAAUnzB,GAAOJ,IAAM,WACxB,IAAI+xB,EACJ,OAAO2J,EAAQv7B,IAAY0wB,EAAAA,GAAAA,eAAc,SAAUhmC,EAAU4T,GAAQ,CAAC,CAAC,OAAQ,UAAW,CAAC,YAAa,eAAgB,CAAC,QAAS,CAC9Ho0B,MAAO,MACP,CAAC,UAAW,SAACwF,GACbA,EAAIoC,iBACSnoB,GAA6BggB,EAAS3gB,GAA+B2gB,GAAS,WACvF,IAAImD,EAAM5O,EAAS6O,EAAQC,EAAgBC,EACrCkG,EAAU3e,EAAa,GAAGlqB,OAChC,GAAO6oC,EAAQl1C,QAAU,GAAOk1C,EAAQl1C,QAAU,GAI7C,CACD40C,OAAUp1C,GACVk1C,GAAc,GACd,IAAMtB,EAAM,IAAIpsB,IAAsBjT,EAAO5N,IAAa4N,EAAO7P,OAAO,GAAGsiB,OAAgC0uB,GACrGC,EAA8B,IAAfphC,EAAO5N,IAAa,2BAA6B,4BACtE,OAAS0oC,EAAO7V,GpBxTzB1V,GAAY,6BAA8B,GAAI0D,IAAsB,iBAAM,CAAC,CAAC,QAASpD,IAAc,CAAC,WAAYA,IAAa,SoBwT7BpkB,OAAWA,OAAWA,EAA7Fw5B,CAAwGoa,GAAOnT,EAAU8J,GAAmCziB,UAA+B9nB,OAAWA,GAAasvC,EAASv7B,GAAKs7B,GAAQE,OAAiBvvC,EAAYwvC,OAAUxvC,EAAY,WACxS,IAAIyvC,EACJ,IACI,IAAMC,EAAellB,GAAsB3S,GAAU,IAAIiS,GAAwB,EAAG,CAAC,WAAY2lB,EAAep3B,GAAQ,CAAC,IAAIyR,GAAwB,EAAG,CAAC,SAAU,IAAIA,GAAwB,EAAG,CAACT,GAAagB,GAA2BilB,EAAQ13B,MAAU,OAAQ3D,GAAWpR,IAAI,SAAC8sC,GAAQ,OAAK1pC,GAAK,IAAI6jB,GAAwB,EAAG,CAAC+pB,GAAW,EAAG1a,GAAyChV,GAAUorB,EAAgBC,EAAnErW,CAA4EwW,MAAcF,EAAa,GAAEH,GAASG,KAQvc,OAPWG,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAO5lB,GAAa0rB,EAAajG,GAAclkB,MAAK,SAACzV,GAClJ,IAAIg6B,EAAYC,EAChB,OAASD,EAAah6B,EAAOi6B,EAAc/7B,GAAWwsB,EAAS2J,GAAyCtiB,KAA+BjU,GAAO07B,GAAiB17B,GAAO27B,KAAYI,GAA+BC,EAAWC,GAAiCD,GAAW,kBAASE,EAAWE,GAAML,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOE,EAAWG,OAAO1kB,MAAK,SAAC+M,GACnZ,IAAI5hB,EACJ,OAAOgV,QAAQE,QAAqF,KAA5ElV,EAAa+pB,GAAWr7B,EAAS2qC,GAAczX,IAAqB5xB,IAAc,IAAIikB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAACrT,EAAWjS,OAAO,OAAW,IAAIkmB,GAAe,EAAG,CAACjU,EAAWjS,OAAO,KAC9N,GAAE,KAAOinB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC+lB,QAAkBvkB,MAAK,SAAC2kB,GAAQ,OAAMxkB,QAAQE,QAAQskB,EAAS,GAAE,IACxI,GAAE,KACQ3kB,UAAK,GAAS,SAACpa,GAAG,OAAM,IAAIwZ,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC5Y,KAAO,GACvF,CACA,MAAOg/B,GACH,OAAOR,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOlkB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAComB,MAAQ,IAC1K,CACJ,CAhB4S,IAgBjS5kB,MAAK,SAAC4gB,GACb,IAAMp0B,EAAMo0B,EACZ,GAAgB,IAAZp0B,EAAIrR,IAAW,CACf,IAAM0S,EAAMrB,EAAItT,OAAO,GACvB,MAAmB,YAAf2U,EAAImN,QACJjF,OAAOC,SAAS+xB,QAAO,GAChB5nB,QAAQE,YAGfupB,EAAU/7B,EAAIoN,SACdyuB,GAAc,GACPvpB,QAAQE,UAEvB,CAII,OAFAupB,EAAU,6DACVF,GAAc,GACPvpB,QAAQE,SAEvB,GACJ,CA3CI,OADAupB,EAAU,4CACHzpB,QAAQE,SA4CvB,KACKL,MACT,IAAKmgB,EAAQ3xB,GAAOJ,IAAM,kBAAOq7B,EAAe,GAAKl7B,GAAYwyB,MAA4CxyB,GAAY,gBAAgB,KAAK,CAAC,WAAY+B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK44B,WAAiB9b,IAC7N,KAAK,CAAC,WAAY/T,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKo6B,UAAiBd,GAAiB8I,EAAe,IAAI,WAChHC,OAAUp1C,EACd,KAAK,CAAC,WAAY8b,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK4+B,SACnE,CAEO,SAASiE,GAAWC,GACvB,IAAIC,EACEC,EAAgBF,EAAqBE,cACrChf,EAAetZ,QAA2Czd,GAC1Dg1C,EAAiBv3B,QAA2Czd,GAC5Di1C,EAAiBx3B,QAA2Czd,GAC5Dg2C,EAAYf,EAAe,GAC3BE,EAAiB13B,QAA2Czd,GAC5Do1C,EAAYD,EAAe,GAC3Bc,EAAS10B,OAAOC,SAAS00B,KAC/B,OAAOzL,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,YAAa,cAAe,CAAC,QAAS,CAClFw0B,QAAS,OACTiE,cAAe,SACf/D,WAAY,YACX+I,EAAU97B,GAAOJ,IAAM,kBAAMtB,GAAOyB,GAAYsyB,GAAiB8I,EAAe,IAAI,WACrFC,OAAUp1C,EACd,KAAK4Z,IAAM,WACP,IAAIu8B,EAASC,EAASzE,EAAS0E,EAASC,EAClCrQ,EAAegP,EAAe,GACpC,GAAoB,MAAhBhP,EAAsB,CACtB,IAAMS,EAAe3P,EAAa,GAClC,GAAoB,MAAhB2P,EAAsB,CACtB,IAAMkC,EAAeoM,EAAe,GACpC,GAAoB,MAAhBpM,EACA,OAAO7uB,IAAY0wB,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACjEw0B,QAAS,OACTiE,cAAe,SACfhE,IAAO,cACNqJ,EAAU,EAAC1L,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CAC9Dw0B,QAAS,OACTiE,cAAe,SACf/D,WAAY,SACZ+E,UAAW,GACXhF,IAAO,cACNsJ,EAAU,EAAC3L,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CAC9Dw6B,QAAS,KACRlB,EAAU,CAAC4E,GAAmB9L,cAAc+L,GAAAA,EAAmB,CAChEC,SAAU,eACVC,YAAa,WAAF9vC,OAAaqvC,EAAM,eAC9BU,UAAU,EACVz5B,SAAU,SAAC05B,GACPC,QAAQC,IAAI/iC,GAAK,yBACjB8iC,QAAQC,IAAI/iC,GAAK6iC,IACjB,IAAM15B,EAAW05B,EACJ1qB,GAA6BggB,EAAS3gB,GAA+B2gB,GAAS,WACvF,IAAIv1B,EAAY04B,EAAM5O,EAAS6O,EAAQC,EAAgBC,EACvD,GAAsB,MAAlBtyB,EAASojB,MAAe,CACxB,IAAMsT,EAAM,IAAIzsB,GAAiBjK,EAAS65B,cAAchF,KAAM70B,EAAS65B,cAAcC,SAAsD,OAA3CrgC,EAAauG,EAAS+5B,MAA6BtgC,EAAW05B,WAAQrwC,GACtK,OAASqvC,EAAO7V,GpBjazC1V,GAAY,yBAA0B,GAAIqD,IAAkB,iBAAM,CAAC,CAAC,OAAQ/C,IAAc,CAAC,UAAWA,IAAc,CAAC,QAASJ,GAAYI,KAAc,SoBia5CpkB,OAAWA,OAAWA,EAAzFw5B,CAAoGoa,GAAOnT,EAAU8J,GAAmCrjB,UAAiClnB,OAAWA,GAAasvC,EAASv7B,GAAKs7B,GAAQE,OAAiBvvC,EAAYwvC,OAAUxvC,EAAY,WACtS,IAAIyvC,EACJ,IACI,IAAMC,EAAellB,GAAsB3S,GAAU,IAAIiS,GAAwB,EAAG,CAAC,WAAY2lB,EAAep3B,GAAQ,CAAC,IAAIyR,GAAwB,EAAG,CAAC,SAAU,IAAIA,GAAwB,EAAG,CAACT,GAAagB,GAA2BilB,EAAQ13B,MAAU,OAAQ3D,GAAWpR,IAAI,SAAC8sC,GAAQ,OAAK1pC,GAAK,IAAI6jB,GAAwB,EAAG,CAAC+pB,GAAW,EAAG1a,GAAyChV,GAAUorB,EAAgBC,EAAnErW,CAA4EwW,MAAcF,EAAa,GAAEH,GAASG,KAQvc,OAPWG,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAO5lB,GAAa,+BAAgCylB,GAAclkB,MAAK,SAACzV,GACrK,IAAIg6B,EAAYC,EAChB,OAASD,EAAah6B,EAAOi6B,EAAc/7B,GAAWwsB,EAAS2J,GAAyCljB,KAAiCrT,GAAO07B,GAAiB17B,GAAO27B,KAAYI,GAA+BC,EAAWC,GAAiCD,GAAW,kBAASE,EAAWE,GAAML,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOE,EAAWG,OAAO1kB,MAAK,SAAC+M,GACrZ,IAAI3hB,EACJ,OAAO+U,QAAQE,QAAyF,KAAhFjV,EAAe8pB,GAAWr7B,EAAS2qC,GAAczX,IAAuB5xB,IAAc,IAAIikB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAACpT,EAAalS,OAAO,OAAW,IAAIkmB,GAAe,EAAG,CAAChU,EAAalS,OAAO,KACtO,GAAE,KAAOinB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC+lB,QAAkBvkB,MAAK,SAAC2kB,GAAQ,OAAMxkB,QAAQE,QAAQskB,EAAS,GAAE,IACxI,GAAE,KACQ3kB,UAAK,GAAS,SAACpa,GAAG,OAAM,IAAIwZ,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC5Y,KAAO,GACvF,CACA,MAAOg/B,GACH,OAAOR,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOlkB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAComB,MAAQ,IAC1K,CACJ,CAhB0S,IAgB/R5kB,MAAK,SAAC4gB,GACb,IAAI7d,EAAclV,EAAK+5B,EAASrM,EAC1B/uB,EAAMo0B,EACZ,GAAgB,IAAZp0B,EAAIrR,IAuBJ,OADAyuC,EAAU,0DACHzpB,QAAQE,UAtBf,IAAMP,EAAItT,EAAItT,OAAO,GACrB,OAAQ4mB,EAAE9E,OAAOA,QACb,IAAK,UAED,OADAjF,OAAOC,SAAS+xB,QAAO,GAChB5nB,QAAQE,UAEnB,IAAK,YAED,OADAmpB,EAAe,GAAG1pB,GACXK,QAAQE,UAEnB,IAAK,SAED,OADAmqB,EAAU,EAAEznB,EAAejD,EAAE9E,OAAOE,SAA2B,MAAhB6H,GAA0BlV,EAAMhL,GAAgBT,GAAM2gB,IAAiB6kB,EAAiD,EAAtCjoB,GAAKvc,GAAeyK,EAAKlL,OAAkB44B,EAAQtmC,GAAS4Y,EAAK,cAAehI,GAAOT,GAAO,2BAAdS,CAA0C01B,EAA1C11B,CAAiD+hC,SAAepzC,GAAYsrB,EAAE9E,OAAOC,UAC/RkF,QAAQE,UAEnB,QAEI,OADAupB,EAAU9pB,EAAE9E,OAAOC,SACZkF,QAAQE,UAQ/B,GACJ,CAEI,OAAOF,QAAQE,SAEvB,KACKL,MACT,EACA0rB,MAAO,QACPC,aAAc,QACdC,OAAQ,SAACC,GACL,IAAIlK,EAASxB,EACb,OAAOlB,EAAAA,GAAAA,eAAc,SAAUhmC,EAAU4T,GAAQ,CAAC,CAAC,UAAW,SAACi/B,GAC3DD,EAAYtG,SAChB,GAAI,CAAC,QAAS,CACVwG,gBAAiB,UACjBrD,MAAO,UACPxD,SAAU,OACVxB,SAAU,IACVgD,SAAU,IACV+B,aAAc,GACdvH,OAAQ,GACR8K,OAAQ,aACPrK,EAAU,EAAC1C,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CAC9Dy0B,IAAO,UACPD,QAAS,OACTE,WAAY,SACZC,eAAgB,eAChB6F,QAAW,aACVlH,EAAQ,EAAClB,EAAAA,GAAAA,eAAc,IAAK,CAC7B1sB,MAAO,CACH2yB,SAAU,QAEdlE,UAAW,sBACX,sBAAuB,CAAC,WAAY1wB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK44B,WAAgB,CAAC,WAAY7vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKo6B,SACnK,KACC,CAAC,WAAYrxB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK4+B,UAAiB4E,GAAmB9L,cAAcgN,GAAAA,EAAa,CAC1H5hC,KAAM,QACN6hC,MAAO,OACP9I,MAAO,eACP+I,UAAW,SAACC,GACR,IAAMC,EAAO3rB,GAA6BggB,EAAS3gB,GAA+B2gB,GAAS,WACvF,IAAI9zB,EAAQ0/B,EAAQhW,EAAWiW,EAAQC,EAAiBC,EACxD,OAAS7/B,EAAS,CACd4O,MAAO4wB,EAAKM,YACZJ,EAASte,GrB3etC,WAAoC,QAAA2e,EAAAvyC,UAAApF,OAARkE,EAAM,IAAA5G,MAAAq6C,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAN1zC,EAAM0zC,GAAAxyC,UAAAwyC,GACrC,OAAO,IAAIz1B,GAAS,QAAI3iB,OAAWA,OAAWA,GAAW,kBAAM0E,CAAM,GACzE,CqByegF2zC,CAAgB,CAAC,QAASj0B,UAAepkB,OAAWA,OAAWA,EAAlGw5B,CAA6GphB,GAAU0pB,EAAYyI,GAAmCrjB,UAAiClnB,OAAWA,GAAa+3C,EAAShkC,GAAK+jC,GAAUE,OAAkBh4C,EAAYi4C,OAAWj4C,EAAY,WACrT,IAAIs4C,EACJ,IACI,IAAMC,EAAiB/tB,GAAsB3S,GAAU,IAAIiS,GAAwB,EAAG,CAAC,WAAYwuB,EAAejgC,GAAQ,CAAC,IAAIyR,GAAwB,EAAG,CAAC,SAAU,IAAIA,GAAwB,EAAG,CAACT,GAAagB,GAA2B0tB,EAAQngC,MAAU,OAAQ3D,GAAWpR,IAAI,SAAC21C,GAAQ,OAAKvyC,GAAK,IAAI6jB,GAAwB,EAAG,CAAC+pB,GAAW,EAAG1a,GAAyChV,GAAU6zB,EAAiBC,EAApE9e,CAA8Eqf,MAAcF,EAAa,GAAEP,GAASO,KAQ3c,OAPa1I,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAO5lB,GAAa,gCAAiCsuB,GAAgB/sB,MAAK,SAACitB,GAC1K,IAAIC,EAAYC,EAChB,OAASD,EAAaD,EAASE,EAAc1kC,GAAW6tB,EAAWsI,GAAyCljB,KAAiCrT,GAAOmkC,GAAkBnkC,GAAOokC,KAAarI,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAS6I,EAAWzI,GAAML,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAO6I,EAAWxI,OAAO1kB,MAAK,SAACotB,GAC3Z,IAAInqB,EACJ,OAAO9C,QAAQE,QAAyF,KAAhF4C,EAAeiS,GAAWr7B,EAASszC,GAAcC,IAAuBjyC,IAAc,IAAIikB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAACyE,EAAa/pB,OAAO,OAAW,IAAIkmB,GAAe,EAAG,CAAC6D,EAAa/pB,OAAO,KACtO,GAAE,KAAOinB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC0uB,QAAkBltB,MAAK,SAACqtB,GAAQ,OAAMltB,QAAQE,QAAQgtB,EAAS,GAAE,IACxI,GAAE,KACUrtB,UAAK,GAAS,SAACstB,GAAK,OAAM,IAAIluB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC8uB,KAAS,GAC7F,CACA,MAAOC,GACH,OAAOnJ,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOlkB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC+uB,MAAU,IAC5K,CACJ,CAhByT,IAgB7SvtB,MAAK,SAACwtB,GACd,IAAIvT,EAAcU,EAAK8S,EAAWC,EAC5BC,EAAQH,EACd,GAAkB,IAAdG,EAAMxyC,IAuBN,OADAyuC,EAAU,0DACHzpB,QAAQE,UAtBf,IAAMutB,EAAMD,EAAMz0C,OAAO,GACzB,OAAQ00C,EAAI5yB,OAAOA,QACf,IAAK,UAED,OADAjF,OAAOC,SAAS+xB,QAAO,GAChB5nB,QAAQE,UAEnB,IAAK,YAED,OADAkL,EAAa,GAAGqiB,GACTztB,QAAQE,UAEnB,IAAK,SAED,OADAmqB,EAAU,EAAEvQ,EAAe2T,EAAI5yB,OAAOE,SAA2B,MAAhB+e,GAA0BU,EAAM93B,GAAgBT,GAAM63B,IAAiBwT,EAAmD,EAAtC9tB,GAAKvc,GAAeu3B,EAAKh4B,OAAkB+qC,EAAQz4C,GAAS0lC,EAAK,cAAe90B,GAAOT,GAAO,2BAAdS,CAA0C6nC,EAA1C7nC,CAAiD4nC,SAAiBj5C,GAAYo5C,EAAI5yB,OAAOC,UACvSkF,QAAQE,UAEnB,QAEI,OADAupB,EAAUgE,EAAI5yB,OAAOC,SACdkF,QAAQE,UAQ/B,GACJ,KACAgsB,EAAKrsB,MACT,EACA6tB,QAAS,SAACC,GACNzC,QAAQC,IAAI/iC,GAAK,YAADnN,OAAa0yC,IACjC,KACC,CAAC,WAAYx9B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKqjC,WAAiB3L,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CAC9Hw0B,QAAS,OACTG,eAAgB,eAChBF,IAAO,UACPC,WAAY,SACZN,MAAO,OACPyF,SAAU,OACTmE,EAAU,EAAC5L,EAAAA,GAAAA,eAAc,MAAO,CACjC1sB,MAAO,CACHw7B,SAAU,EACV7M,OAAQ,EACR6K,gBAAiB,uBAErB9M,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CAClDkhC,SAAU,EACV1H,UAAW,YACVyE,EAAU,EAAC7L,EAAAA,GAAAA,eAAc,OAAQ,CAClCmB,SAAU,WACT,CAAC,WAAY9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKujC,WAAiB7L,EAAAA,GAAAA,eAAc,MAAO,CACjG1sB,MAAO,CACHw7B,SAAU,EACV7M,OAAQ,EACR6K,gBAAiB,uBAEpB,CAAC,WAAYz7B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKsjC,UAAiBN,GAAgB,CAAC,WAAYj6B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKojC,WAG1J,IAAMqD,EAAM5Q,EACZ,OAAO7uB,IAAY0wB,EAAAA,GAAAA,eAAcqK,GAAe,CAC5CvgC,OAAQ,IAAIsgC,GAAY,EAAG,CAAC2E,MAGxC,CAEI,IAAMC,EAAM/S,EACZ,OAAO3sB,IAAY0wB,EAAAA,GAAAA,eAAcqK,GAAe,CAC5CvgC,OAAQ,IAAIsgC,GAAY,EAAG,CAAC4E,MAGxC,CAEI,OAAO1/B,GAAY+5B,GAAW7N,EAAa,GAAIA,EAAa,IAEpE,IAAG,KAAI,CAAC,WAAYnqB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK+iC,SACrE,C,y7DChnBwC,IAElC7E,GAAK,SAAAh7B,GACP,SAAAg7B,EAAY/qB,EAAUa,EAAOZ,EAAUuzB,EAAgBC,EAAa3G,EAAe3E,EAAY4E,EAAe2G,EAAYtL,EAAYiD,EAAUsI,GAAY,IAAAzjC,EAa3H,OAb2HrX,GAAA,KAAAkyC,IACxJ76B,EAAAiQ,GAAA,KAAA4qB,IACK/qB,SAAWA,EAChB9P,EAAK2Q,MAAQA,EACb3Q,EAAK+P,SAAWA,EAChB/P,EAAKsjC,eAAiBA,EACtBtjC,EAAKujC,YAAcA,EACnBvjC,EAAK48B,cAAgBA,EACrB58B,EAAKi4B,WAAaA,EAClBj4B,EAAK68B,cAAgBA,EACrB78B,EAAKwjC,WAAaA,EAClBxjC,EAAKk4B,WAAaA,EAClBl4B,EAAKm7B,SAAWA,EAChBn7B,EAAKyjC,WAAaA,EAAWzjC,CACjC,CAAC,OAAAC,GAAA46B,EAAAh7B,GAAApX,GAAAoyC,EAAA,CAfM,CAAS9pC,GAsBdsf,GAAO,SAAAoD,GACT,SAAApD,EAAY9f,EAAKjC,GAAQ,IAAAiiB,EAGA,OAHA5nB,GAAA,KAAA0nB,IACrBE,EAAAN,GAAA,KAAAI,IACK9f,IAAMA,EACXggB,EAAKjiB,OAASA,EAAOiiB,CACzB,CAAC,OAAAtQ,GAAAoQ,EAAAoD,GAAAhrB,GAAA4nB,EAAA,EAAAvnB,IAAA,QAAAC,MACD,WACI,MAAO,CAAC,iBAAkB,cAAe,iBAAkB,uBAAwB,oBAAqB,cAAe,gBAAiB,oBAAqB,mBAAoB,eACrL,IAAC,CARQ,CAASsH,GAmBtB,SAASqzC,GAAoBC,EAAI1J,EAAO2J,EAAKC,GACzC,IAAMC,EAAkBH,EAAGv5C,QAAU,GAAOu5C,EAAGv5C,QAAU,GACnD25C,EpClDH,SAAiBlqC,EAAKtD,GAAoB,IAAbuD,EAAOtK,UAAApF,OAAA,QAAAR,IAAA4F,UAAA,GAAAA,UAAA,GAAG,EAE1C,OADAqK,EAAIG,UAAYF,EACTD,EAAIsO,KAAK5R,EACpB,CoC+C0BytC,CAAQ,kBAAoBL,GAC5CM,EAAUhP,GAAcgF,GACxBiK,EAAWN,EAAIx5C,QAAU,EAE/B,OAAI05C,EACIC,EACIE,EACIC,EAJCN,IAAQC,EAME,IAAIrvB,GAAe,EAAG,MAAC5qB,IAGvB,IAAI4qB,GAAe,EAAG,CAAC,0BAI3B,IAAIA,GAAe,EAAG,CAAC,2BAI3B,IAAIA,GAAe,EAAG,CAAC,2BAI3B,IAAIA,GAAe,EAAG,CAAC,qDAI3B,IAAIA,GAAe,EAAG,CAAC,iDAEtC,CAEA,SAASrO,GAAOmyB,EAAOvO,GACnB,OAAQA,EAAIx5B,KACR,KAAK,EACD,OAAO,IAAIsqC,GAAMvC,EAAMxoB,SAAUia,EAAIz7B,OAAO,GAAIgqC,EAAMvoB,SAAUuoB,EAAMgL,eAAgBhL,EAAMiL,YAAajL,EAAMsE,cAAetE,EAAML,WAAYK,EAAMuE,cAAevE,EAAMkL,WAAYlL,EAAMJ,WAAYI,EAAM6C,SAAU7C,EAAMmL,YACnO,KAAK,EACD,OAAO,IAAI5I,GAAMvC,EAAMxoB,SAAUwoB,EAAM3nB,MAAOoZ,EAAIz7B,OAAO,GAAIgqC,EAAMgL,eAAgBhL,EAAMiL,YAAajL,EAAMsE,cAAetE,EAAML,WAAYK,EAAMuE,cAAevE,EAAMkL,WAAYlL,EAAMJ,WAAYI,EAAM6C,SAAU7C,EAAMmL,YAChO,KAAK,EACD,OAAO,IAAI5I,GAAMvC,EAAMxoB,SAAUwoB,EAAM3nB,MAAO2nB,EAAMvoB,SAAUga,EAAIz7B,OAAO,GAAIgqC,EAAMiL,YAAajL,EAAMsE,cAAetE,EAAML,WAAYK,EAAMuE,cAAevE,EAAMkL,WAAYlL,EAAMJ,WAAYI,EAAM6C,SAAU7C,EAAMmL,YAC1N,KAAK,EACD,OAAO,IAAI5I,GAAMvC,EAAMxoB,SAAUwoB,EAAM3nB,MAAO2nB,EAAMvoB,SAAUuoB,EAAMgL,eAAgBvZ,EAAIz7B,OAAO,GAAIgqC,EAAMsE,cAAetE,EAAML,WAAYK,EAAMuE,cAAevE,EAAMkL,WAAYlL,EAAMJ,WAAYI,EAAM6C,SAAU7C,EAAMmL,YAC7N,KAAK,EACD,IAAMljC,EAAamjC,GAAoBpL,EAAMxoB,SAAUwoB,EAAM3nB,MAAO2nB,EAAMvoB,SAAUuoB,EAAMgL,gBAC1F,OAAuB,IAAnB/iC,EAAWhQ,IACJ,IAAIsqC,GAAMvC,EAAMxoB,SAAUwoB,EAAM3nB,MAAO2nB,EAAMvoB,SAAUuoB,EAAMgL,eAAgBhL,EAAMiL,YAAajL,EAAMsE,cAAetE,EAAML,WAAYK,EAAMuE,cAAevE,EAAMkL,WAAYlL,EAAMJ,WAAY33B,EAAWjS,OAAO,GAAIgqC,EAAMmL,YAG5N,IAAI5I,GAAMvC,EAAMxoB,SAAUwoB,EAAM3nB,MAAO2nB,EAAMvoB,SAAUuoB,EAAMgL,eAAgBhL,EAAMiL,YAAajL,EAAMsE,cAAetE,EAAML,WAAYK,EAAMuE,cAAevE,EAAMkL,YAAY,OAAM55C,EAAW0uC,EAAMmL,YAGpN,KAAK,EACD,IAAMlyC,EAASw4B,EAAIz7B,OAAO,GAC1B,GAAmB,IAAfiD,EAAOhB,IAAW,CAClB,IAAM4zC,EAAO5yC,EAAOjD,OAAO,GAC3B,MAAoB,YAAhB61C,EAAK/zB,OACE,IAAIyqB,GAAMvC,EAAMxoB,SAAUwoB,EAAM3nB,MAAO2nB,EAAMvoB,SAAUuoB,EAAMgL,eAAgBhL,EAAMiL,YAAajL,EAAMsE,cAAetE,EAAML,WAAYK,EAAMuE,cAAevE,EAAMkL,YAAY,EAAOlL,EAAM6C,UAAU,GAGrM,IAAIN,GAAMvC,EAAMxoB,SAAUwoB,EAAM3nB,MAAO2nB,EAAMvoB,SAAUuoB,EAAMgL,eAAgBhL,EAAMiL,YAAajL,EAAMsE,cAAetE,EAAML,WAAYK,EAAMuE,cAAevE,EAAMkL,YAAY,EAAOW,EAAK9zB,QAASioB,EAAMmL,WAExN,CAEI,OAAO,IAAI5I,GAAMvC,EAAMxoB,SAAUwoB,EAAM3nB,MAAO2nB,EAAMvoB,SAAUuoB,EAAMgL,eAAgBhL,EAAMiL,YAAajL,EAAMsE,cAAetE,EAAML,WAAYK,EAAMuE,cAAevE,EAAMkL,YAAY,EAAO,mFAAoFlL,EAAMmL,YAG9R,KAAK,EACD,OAAO,IAAI5I,GAAMvC,EAAMxoB,SAAUwoB,EAAM3nB,MAAO2nB,EAAMvoB,SAAUuoB,EAAMgL,eAAgBhL,EAAMiL,YAAajL,EAAMsE,cAAetE,EAAML,WAAYK,EAAMuE,cAAe9S,EAAIz7B,OAAO,GAAIgqC,EAAMJ,WAAYI,EAAM6C,SAAU7C,EAAMmL,YAC9N,KAAK,EACD,IAAM7hC,EAAMmoB,EAAIz7B,OAAO,GACvB,OAAgB,IAAZsT,EAAIrR,IACG+nC,EAEuB,YAAzB12B,EAAItT,OAAO,GAAG8hB,OACZ,IAAIyqB,GAAMvC,EAAMxoB,SAAUwoB,EAAM3nB,MAAO2nB,EAAMvoB,SAAUuoB,EAAMgL,eAAgBhL,EAAMiL,YAAajL,EAAMsE,cAAetE,EAAML,WAAYK,EAAMuE,eAAe,EAAMvE,EAAMJ,WAAYI,EAAM6C,SAAU7C,EAAMmL,YAG1MnL,EAGf,KAAK,EACD,OAAO,IAAIuC,GAAMvC,EAAMxoB,SAAUwoB,EAAM3nB,MAAO2nB,EAAMvoB,SAAUuoB,EAAMgL,eAAgBhL,EAAMiL,YAAajL,EAAMsE,cAAetE,EAAML,WAAYK,EAAMuE,cAAevE,EAAMkL,WAAYlL,EAAMJ,gBAAYtuC,EAAW0uC,EAAMmL,YAC5N,QACI,OAAO,IAAI5I,GAAM9Q,EAAIz7B,OAAO,GAAIgqC,EAAM3nB,MAAO2nB,EAAMvoB,SAAUuoB,EAAMgL,eAAgBhL,EAAMiL,YAAajL,EAAMsE,cAAetE,EAAML,WAAYK,EAAMuE,cAAevE,EAAMkL,WAAYlL,EAAMJ,WAAYI,EAAM6C,SAAU7C,EAAMmL,YAExO,CAgEA,SAASW,GAAiB9L,EAAOO,GAC7B,IAAIqH,EAAS1K,EAAUD,EAAOwB,EAASiJ,EACvC,OAAO3L,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACrDw0B,QAAS,OACTiE,cAAe,SACf/D,WAAY,SACZC,eAAgB,YACfsJ,EAAU,EAAC7L,EAAAA,GAAAA,eAAc,KAAM,CAChC1sB,MAAO,CACH2yB,SAAU,OACVwD,MAAO,mBACPvD,WAAY,QAEhB/E,SAAU,kBACVlB,GAAyBkG,GAAAA,EAAW,CAAC,CAAC,aAAa,GAAO,CAAC,KAAM,kBAAmB,CAAC,UAAW,YAAa,CAAC,QAAS,cAAe,CAAC,eAAgB,YAAa,CAAC,WAAY,SAACnxC,GAClLwvC,EAAS,IAAIxoB,GAAQ,EAAG,CAAChnB,EAAE8U,OAAOpV,QACtC,GAAI,CAAC,YAAa,SAACwc,GACE,UAAbA,EAAIo2B,MACJxwB,OAAOc,SAASqrB,eAAe,eAAeC,OAEtD,GAAI,CAAC,SAAUe,EAAMsE,eAAgB,CAAC,QAAS,CAC3ClB,UAAW,OACX5C,SAAU,YACRxE,GAAyBkG,GAAAA,EAAW,CAAC,CAAC,KAAM,eAAgB,CAAC,UAAW,YAAa,CAAC,QAAS,kBAAmB,CAAC,OAAQ,SAAU,CAAC,eAAgB,SAAU,CAAC,WAAY,SAACqB,GAChLhD,EAAS,IAAIxoB,GAAQ,EAAG,CAACwrB,EAAI19B,OAAOpV,QACxC,GAAI,CAAC,YAAa,SAACm1C,GACE,UAAbA,EAAIvC,MACJxwB,OAAOc,SAASqrB,eAAe,mBAAmBC,OAE1D,GAAI,CAAC,SAAUe,EAAML,YAAa,CAAC,QAAS,CACxCyD,UAAW,OACX5C,SAAU,YACRxE,GAAyBkG,GAAAA,EAAW,CAAC,CAAC,KAAM,mBAAoB,CAAC,UAAW,YAAa,CAAC,QAAS,WAAY,CAAC,OAAQ,YAAa,CAAC,eAAgB,gBAAiB,CAAC,WAAY,SAAC6D,GACvLxF,EAAS,IAAIxoB,GAAQ,EAAG,CAACguB,EAAIlgC,OAAOpV,QACxC,GAAI,CAAC,YAAa,SAACw1C,GACE,UAAbA,EAAI5C,MACJxwB,OAAOc,SAASqrB,eAAe,mBAAmBC,OAE1D,GAAI,CAAC,SAAUe,EAAMuE,eAAgB,CAAC,QAAS,CAC3CnB,UAAW,OACX5C,SAAU,YACRxE,GAAyBkG,GAAAA,EAAW,CAAC,CAAC,KAAM,mBAAoB,CAAC,UAAW,YAAa,CAAC,QAAS,kBAAmB,CAAC,OAAQ,YAAa,CAAC,WAAY,SAAC6J,GAC5JxL,EAAS,IAAIxoB,GAAQ,EAAG,CAACg0B,EAAIlmC,OAAOpV,QACxC,GAAI,CAAC,SAAUuvC,EAAMuE,eAAgB,CAAC,QAAS,CAC3CnB,UAAW,OACXE,aAAc,OACd9C,SAAU,YACRxE,GAAyB6J,GAAAA,EAAkB,CAAC,CAAC,SAAU3I,EAAWvzB,GAAQ,CAAC,+BAA+BoyB,EAAAA,GAAAA,eAAc,IAAK,CAC/H1sB,MAAO,CACH03B,eAAgB,aAEpBlhC,OAAQ,SACRqgC,KAAM,gBACNhJ,SAAU,uBACRnB,EAAAA,GAAAA,eAAc,OAAQ,CACxBmB,SAAU9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK64B,QACrD,CAAC,UAAWlB,GAAyB8J,GAAAA,EAAU,CAAC,CAAC,QAAS,CAC5DN,MAAO,qBACP,CAAC,UAAWxF,EAAMiL,aAAc,CAAC,WAAY,SAACe,GAC9CzL,EAAS,IAAIxoB,GAAQ,EAAG,CAACi0B,EAAInmC,OAAOmgC,UACxC,GAAI,CAAC,QAAS,iBAAiBjK,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CAC7Ew0B,QAAS,OACTiE,cAAe,MACf9D,eAAgB,eAChBkC,SAAU,QACVwB,SAAU,SACVwD,MAAO,sBACNvI,EAAQ,EAAClB,EAAAA,GAAAA,eAAc,OAAQ,CAChCmB,SAAU,CAAC,iCACXnB,EAAAA,GAAAA,eAAc,IAAK,CACnB1sB,MAAO,CACH03B,eAAgB,aAEpBb,KAAM,WACNhJ,SAAU,cACT,CAAC,WAAY9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK44B,WAAelB,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CAC5Hy5B,UAAW,MACV3E,EAAUnzB,GAAOJ,IAAM,kBAAO80B,EAAMiL,YAAc5/B,GAAYg0B,GAAmB,CAAC,CAAC,UAAW,4CAA6C,CAAC,WAAY,SAACrsC,GACjJ,MAALA,EACAutC,EAAS,IAAIxoB,GAAQ,EAAG,EAAC,KA7IrC,SAA2Bnd,EAAO2lC,GACjB/iB,GAA6BggB,EAAS3gB,GAA+B2gB,GAAS,WACvF,IAAImD,EAAM5O,EAAS6O,EAAQC,EAAgBC,EAC3C,OAASH,EAAO7V,GAAmCpV,QAAapkB,OAAWA,OAAWA,EAAtEw5B,CAAiFlwB,GAASm3B,EAAU8J,GAAmCziB,UAA+B9nB,OAAWA,GAAasvC,EAASv7B,GAAKs7B,GAAQE,OAAiBvvC,EAAYwvC,OAAUxvC,EAAY,WACnR,IAAIyvC,EACJ,IACI,IAAMC,EAAellB,GAAsB3S,GAAU,IAAIiS,GAAwB,EAAG,CAAC,WAAY2lB,EAAep3B,GAAQ,CAAC,IAAIyR,GAAwB,EAAG,CAAC,SAAU,IAAIA,GAAwB,EAAG,CAACT,GAAagB,GAA2BilB,EAAQ13B,MAAU,OAAQ3D,GAAWpR,IAAI,SAAC8sC,GAAQ,OAAK1pC,GAAK,IAAI6jB,GAAwB,EAAG,CAACrpB,GAAS,EAAG04B,GAAyChV,GAAUorB,EAAgBC,EAAnErW,CAA4EwW,MAAcF,EAAa,GAAEH,GAASG,KAQrc,OAPWG,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAO5lB,GAAa,iBAAkBylB,GAAclkB,MAAK,SAACzV,GACvJ,IAAIg6B,EAAYC,EAChB,OAASD,EAAah6B,EAAOi6B,EAAc/7B,GAAWwsB,EAAS2J,GAAyCtiB,KAA+BjU,GAAO07B,GAAiB17B,GAAO27B,KAAYI,GAA+BC,EAAWC,GAAiCD,GAAW,kBAASE,EAAWE,GAAML,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOE,EAAWG,OAAO1kB,MAAK,SAAC+M,GACnZ,IAAI5hB,EACJ,OAAOgV,QAAQE,QAAqF,KAA5ElV,EAAa+pB,GAAWr7B,EAAS2qC,GAAczX,IAAqB5xB,IAAc,IAAIikB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAACrT,EAAWjS,OAAO,OAAW,IAAIkmB,GAAe,EAAG,CAACjU,EAAWjS,OAAO,KAC9N,GAAE,KAAOinB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC+lB,QAAkBvkB,MAAK,SAAC2kB,GAAQ,OAAMxkB,QAAQE,QAAQskB,EAAS,GAAE,IACxI,GAAE,KACQ3kB,UAAK,GAAS,SAACpa,GAAG,OAAM,IAAIwZ,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC5Y,KAAO,GACvF,CACA,MAAOg/B,GACH,OAAOR,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOlkB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAComB,MAAQ,IAC1K,CACJ,CAhBuR,IAgB5Q5kB,MAAK,SAAC4gB,GAEb,OADA6C,EAAS,IAAIxoB,GAAQ,EAAG,CAAC2lB,KAClBzgB,QAAQE,SACnB,GACJ,KACKL,MACT,CAuHYmvB,CAAkBj5C,EAAGutC,EAE7B,GAAI,CAAC,QAAS,QAAS,CAAC,YAAa,WACjCA,EAAS,IAAIxoB,GAAQ,EAAG,EAAC,IAC7B,MAAQoJ,IAAS,KAAK,CAAC,WAAY/T,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKo6B,WAAiB1C,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CAC/Im6B,UAAW,OACXV,UAAW,OACX5C,SAAU,WACTkH,EAAUp8B,GAAOJ,IAAM,WACxB,IAAI+3B,EACJ,OAAQjD,EAAMiL,aAAejL,EAAMkL,WAAc7/B,IAAY0wB,EAAAA,GAAAA,eAAc,SAAUhmC,EAAU4T,GAAQ,CAAC,CAAC,YAAa,eAAgB,CAAC,QAAS,CAC5I62B,SAAU,UACV,CAAC,UAAW,SAAC3W,IAjIzB,SAAqBkb,EAAUpD,EAAOuK,EAAIC,EAAI5L,GAC7B/iB,GAA6BggB,EAAS3gB,GAA+B2gB,GAAS,WACvF,IAAImD,EAAM5O,EAAS6O,EAAQC,EAAgBC,EAG3C,GAFAP,EAAS,IAAIxoB,GAAQ,EAAG,KAED,IADJqzB,GAAoBrG,EAAUpD,EAAOuK,EAAIC,GAC7Cl0C,IAAW,CACtB,IAAMitC,EAAM,IAAI7rB,GAAgB0rB,EAAUmH,EAAIvK,GAC9C,OAAShB,EAAO7V,GrB1GjB1V,GAAY,wBAAyB,GAAIiE,IAAiB,iBAAM,CAAC,CAAC,WAAY3D,IAAc,CAAC,WAAYA,IAAc,CAAC,QAASA,IAAa,SqB0G3DpkB,OAAWA,OAAWA,EAAxFw5B,CAAmGoa,GAAOnT,EAAU8J,GAAmCziB,UAA+B9nB,OAAWA,GAAasvC,EAASv7B,GAAKs7B,GAAQE,OAAiBvvC,EAAYwvC,OAAUxvC,EAAY,WACnS,IAAIyvC,EACJ,IACI,IAAMC,EAAellB,GAAsB3S,GAAU,IAAIiS,GAAwB,EAAG,CAAC,WAAY2lB,EAAep3B,GAAQ,CAAC,IAAIyR,GAAwB,EAAG,CAAC,SAAU,IAAIA,GAAwB,EAAG,CAACT,GAAagB,GAA2BilB,EAAQ13B,MAAU,OAAQ3D,GAAWpR,IAAI,SAAC8sC,GAAQ,OAAK1pC,GAAK,IAAI6jB,GAAwB,EAAG,CAACrpB,GAAS,EAAG04B,GAAyChV,GAAUorB,EAAgBC,EAAnErW,CAA4EwW,MAAcF,EAAa,GAAEH,GAASG,KAQrc,OAPWG,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAO5lB,GAAa,WAAYylB,GAAclkB,MAAK,SAACzV,GACjJ,IAAIg6B,EAAYC,EAChB,OAASD,EAAah6B,EAAOi6B,EAAc/7B,GAAWwsB,EAAS2J,GAAyCtiB,KAA+BjU,GAAO07B,GAAiB17B,GAAO27B,KAAYI,GAA+BC,EAAWC,GAAiCD,GAAW,kBAASE,EAAWE,GAAML,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOE,EAAWG,OAAO1kB,MAAK,SAAC+M,GACnZ,IAAI3hB,EACJ,OAAO+U,QAAQE,QAAyF,KAAhFjV,EAAe8pB,GAAWr7B,EAAS2qC,GAAczX,IAAuB5xB,IAAc,IAAIikB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAACpT,EAAalS,OAAO,OAAW,IAAIkmB,GAAe,EAAG,CAAChU,EAAalS,OAAO,KACtO,GAAE,KAAOinB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC+lB,QAAkBvkB,MAAK,SAAC2kB,GAAQ,OAAMxkB,QAAQE,QAAQskB,EAAS,GAAE,IACxI,GAAE,KACQ3kB,UAAK,GAAS,SAACpa,GAAG,OAAM,IAAIwZ,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC5Y,KAAO,GACvF,CACA,MAAOg/B,GACH,OAAOR,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOlkB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAComB,MAAQ,IAC1K,CACJ,CAhBuS,IAgB5R5kB,MAAK,SAAC4gB,GAEb,OADA6C,EAAS,IAAIxoB,GAAQ,EAAG,CAAC2lB,KAClBzgB,QAAQE,SACnB,GACJ,CAEI,OAAOF,QAAQE,SAEvB,KACKL,MACT,CAiGYsvB,CAAYpM,EAAMxoB,SAAUwoB,EAAM3nB,MAAO2nB,EAAMvoB,SAAUuoB,EAAMgL,eAAgBzK,EACnF,IAAK0C,EAAU33B,GAAOJ,IAAM,kBAAO80B,EAAMJ,WAAav0B,GAAYwyB,MAA4CxyB,GAAY,gBAAgB,KAAK,CAAC,WAAY+B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK4+B,WAAmB9hB,IAChO,KAAK,CAAC,WAAY/T,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKqjC,UAAiB/J,GAAiBqC,EAAM6C,UAAU,WAC7GtC,EAAS,IAAIxoB,GAAQ,EAAG,IAC5B,KAAK,CAAC,WAAY3K,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKujC,SACnE,CAEO,SAASyE,KACZ,IAAIpP,EACE5U,EAAeza,GAA6BC,GAlQ3C,IAAI00B,GAAM,GAAI,GAAI,GAAI,IAAI,GAAO,GAAM,GAAM,GAAM,GAAO,OAAOjxC,GAAW,IAmQ7EywC,EAAU1Z,EAAa,GAC7B,OAAK0Z,EAAQoJ,YAIFpP,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACrDw0B,QAAS,OACTiE,cAAe,SACf/D,WAAY,SACZC,eAAgB,YACfrB,EAAQ,EAAClB,EAAAA,GAAAA,eAAc,OAAQ,CAChC1sB,MAAO,CACH2yB,SAAU,SACVsB,aAAc,GACda,QAAS,QAEbjH,SAAU,4BACVnB,EAAAA,GAAAA,eAAc,KAAM,CAAC,IAAIA,EAAAA,GAAAA,eAAc,IAAKhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACzE65B,SAAU,IACVL,UAAW,WACyQ,CAAC,WAAzQ,6QAAqSpH,EAAAA,GAAAA,eAAc,IAAK,CACpU1sB,MAAO,CACH+zB,UAAW,IAEftF,UAAW,cACXoI,KAAM,WACNhJ,SAAU,cACT,CAAC,WAAY9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK44B,UAzBxD6O,GAAiB/J,EAAS1Z,EAAa,GA2BtD,C,+/DC3U2H,IAErHka,GAAK,SAAAh7B,GACP,SAAAg7B,EAAY+J,EAAa5J,EAAaC,EAAgBE,EAAUjD,EAAY2M,GAAS,IAAA7kC,EAO1D,OAP0DrX,GAAA,KAAAkyC,IACjF76B,EAAAiQ,GAAA,KAAA4qB,IACK+J,YAAcA,EACnB5kC,EAAKg7B,YAAcA,EACnBh7B,EAAKi7B,eAAiBA,EACtBj7B,EAAKm7B,SAAWA,EAChBn7B,EAAKk4B,WAAaA,EAClBl4B,EAAK6kC,QAAUA,EAAQ7kC,CAC3B,CAAC,OAAAC,GAAA46B,EAAAh7B,GAAApX,GAAAoyC,EAAA,CATM,CAAS9pC,GAgBdsf,GAAO,SAAAoD,GACT,SAAApD,EAAY9f,EAAKjC,GAAQ,IAAAiiB,EAGA,OAHA5nB,GAAA,KAAA0nB,IACrBE,EAAAN,GAAA,KAAAI,IACK9f,IAAMA,EACXggB,EAAKjiB,OAASA,EAAOiiB,CACzB,CAAC,OAAAtQ,GAAAoQ,EAAAoD,GAAAhrB,GAAA4nB,EAAA,EAAAvnB,IAAA,QAAAC,MACD,WACI,MAAO,CAAC,YAAa,YAAa,eAAgB,SAAU,iBAAkB,eAClF,IAAC,CARQ,CAASsH,GAmBtB,SAAS8V,GAAOmyB,EAAOvO,GACnB,OAAQA,EAAIx5B,KACR,KAAK,EACD,OAAO,IAAIsqC,GAAMvC,EAAMsM,YAAa7a,EAAIz7B,OAAO,GAAIgqC,EAAM2C,eAAgB3C,EAAM6C,SAAU7C,EAAMJ,WAAYI,EAAMuM,SACrH,KAAK,EACD,OAAO,IAAIhK,GAAMvC,EAAMsM,YAAatM,EAAM0C,YAAajR,EAAIz7B,OAAO,GAAIgqC,EAAM6C,SAAU7C,EAAMJ,WAAYI,EAAMuM,SAClH,KAAK,EACD,IAAMC,EAAWxM,EAAMsM,YAAYx6C,QAAU,EACvCixC,EAAW/C,EAAM0C,YAAY5wC,QAAU,EAC7C,OAAK06C,GAAYzJ,GAAc/C,EAAM0C,cAAgB1C,EAAM2C,eAChD,IAAIJ,GAAMvC,EAAMsM,YAAatM,EAAM0C,YAAa1C,EAAM2C,oBAAgBrxC,GAAW,EAAM0uC,EAAMuM,SAS7F,IAAIhK,GAAMvC,EAAMsM,YAAatM,EAAM0C,YAAa1C,EAAM2C,eAPvD6J,EAGAzJ,EAIuE,wBAHA,8BAAF7qC,OAAgC,EAAC,UAH/B,4BAAFA,OAA8B,EAAC,UAMJ8nC,EAAMJ,WAAYI,EAAMuM,SAGtI,KAAK,EACD,IAAMjjC,EAAMmoB,EAAIz7B,OAAO,GACvB,GAAgB,IAAZsT,EAAIrR,IACJ,OAAO,IAAIsqC,GAAMvC,EAAMsM,YAAatM,EAAM0C,YAAa1C,EAAM2C,eAAgB,8DAA8D,EAAO3C,EAAMuM,SAGxJ,IAAMtV,EAAM3tB,EAAItT,OAAO,GACvB,MAAmB,YAAfihC,EAAInf,OACG,IAAIyqB,GAAMvC,EAAMsM,YAAatM,EAAM0C,YAAa1C,EAAM2C,eAAgB3C,EAAM6C,SAAU7C,EAAMJ,YAAY,GAGxG,IAAI2C,GAAMvC,EAAMsM,YAAatM,EAAM0C,YAAa1C,EAAM2C,eAAgB1L,EAAIlf,SAAS,EAAOioB,EAAMuM,SAInH,KAAK,EACD,OAAO,IAAIhK,GAAMvC,EAAMsM,YAAatM,EAAM0C,YAAa1C,EAAM2C,oBAAgBrxC,EAAW0uC,EAAMJ,WAAYI,EAAMuM,SACpH,QACI,OAAO,IAAIhK,GAAM9Q,EAAIz7B,OAAO,GAAIgqC,EAAM0C,YAAa1C,EAAM2C,eAAgB3C,EAAM6C,SAAU7C,EAAMJ,WAAYI,EAAMuM,SAE7H,CAiFO,SAASE,KACZ,IAAIC,EAAYxI,EAAUhH,EAAUyP,EAC9BtkB,EAAeza,GAA6BC,GAhI3C,IAAI00B,GAAM,GAAI,GAAI,QAAIjxC,GAAW,GAAO,IAiIzCywC,EAAU1Z,EAAa,GACvBkY,EAAWlY,EAAa,GAC9B,OAAO2T,GAAyB4Q,GAAAA,EAAW,EAAEF,EAAa,CAAC1Q,GAAyB6Q,GAAAA,EAAkB,CAAC,CAAC,cAAc9Q,EAAAA,GAAAA,eAAc,IAAK,CACrI+B,UAAW,0BACToG,EAAW,CAAClI,GAAyB8Q,GAAAA,EAAY,CAAC,CAAC,WAAY,oBAAqB,CAAC,WAAY1/B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK6/B,SAAiBhH,EAAW5xB,GAAOJ,IAAM,kBAAQ62B,EAAQwK,QAAqDlhC,IAnD3P0wB,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACrDw0B,QAAS,OACTG,eAAgB,SAChBD,WAAY,SACZN,MAAO,UACNd,EAAQ,EAAClB,EAAAA,GAAAA,eAAc,IAAK,CAC7B+B,UAAW,sBACXzuB,MAAO,CACH2yB,SAAU,SACVwD,MAAO,aACPuH,YAAa,MAEjBhR,EAAAA,GAAAA,eAAc,OAAQ,CACtB1sB,MAAO,CACH2yB,SAAU,UAEd9E,SAAU,wBACT,CAAC,WAAY9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK44B,WAkCwJ5xB,GA/B3N,SAAkB20B,EAAOO,GACrB,IAAMrD,EAAWvzB,GAAQ,CAACqyB,GAAyBkG,GAAAA,EAAW,CAAC,CAAC,QAAS,CACrEkB,UAAW,GACXE,aAAc,KACd,CAAC,OAAQ,YAAa,CAAC,WAAY,SAACvyC,GACpCwvC,EAAS,IAAIxoB,GAAQ,EAAG,CAAChnB,EAAE8U,OAAOpV,QACtC,GAAI,CAAC,UAAW,YAAa,CAAC,OAAQ,SAAU,CAAC,QAAS,mBAAoB,CAAC,aAAa,KAASurC,GAAyBkG,GAAAA,EAAW,CAAC,CAAC,QAAS,CAChJkB,UAAW,GACXE,aAAc,KACd,CAAC,OAAQ,YAAa,CAAC,WAAY,SAACr2B,GACpCszB,EAAS,IAAIxoB,GAAQ,EAAG,CAAC9K,EAAIpH,OAAOpV,QACxC,GAAI,CAAC,UAAW,YAAa,CAAC,OAAQ,SAAU,CAAC,QAAS,gBAAiB,CAAC,aAAa,KAASurC,GAAyBkG,GAAAA,EAAW,CAAC,CAAC,QAAS,CAC7IkB,UAAW,GACXE,aAAc,KACd,CAAC,OAAQ,YAAa,CAAC,WAAY,SAACC,GACpChD,EAAS,IAAIxoB,GAAQ,EAAG,CAACwrB,EAAI19B,OAAOpV,QACxC,GAAI,CAAC,UAAW,YAAa,CAAC,OAAQ,SAAU,CAAC,QAAS,uBAAwB,CAAC,aAAa,KAASktC,GAAiBqC,EAAM6C,UAAU,WACtItC,EAAS,IAAIxoB,GAAQ,EAAG,IAC5B,MACA,OAAOgkB,EAAAA,GAAAA,eAAc,MAAO,CACxBmB,SAAU9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK64B,KAE/D,CASuO8P,CAASjL,EAASxB,IArDzP,IACQtD,CAoD0R,KAAKjB,GAAyBiR,GAAAA,EAAkB,CAAC,CAAC,WAAY7/B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK64B,SAAiByP,EAAarhC,GAAOJ,IAAM,kBAAQ62B,EAAQwK,QAI5bprB,KAJsc9V,GAAY2wB,GAAyBkR,GAAAA,EAAQ,CAAC,CAAC,OAAQ,SAAU,CAAC,UAAW,YAAa,CAAC,WAAY,iBAAkB,CAAC,UAAW,SAAC7lC,GAC3kB06B,EAAQnC,YAvFrB,SAAgBuN,EAAMC,EAAMC,EAAS9M,GACpB/iB,GAA6BggB,EAAS3gB,GAA+B2gB,GAAS,WACvF,IAAImD,EAAM5O,EAAS6O,EAAQC,EAAgBC,EAE3C,OADAP,EAAS,IAAIxoB,GAAQ,EAAG,KAClBo1B,EAAKr7C,QAAU,GAAOs7C,EAAKt7C,QAAU,GAAQs7C,IAASC,GAC/C1M,EAAO7V,GAAmCzV,GAAWK,GAAaA,SAAcpkB,OAAWA,OAAWA,EAA/Fw5B,CAA0G,CAACqiB,EAAMC,IAASrb,EAAU8J,GAAmCziB,UAA+B9nB,OAAWA,GAAasvC,EAASv7B,GAAKs7B,GAAQE,OAAiBvvC,EAAYwvC,OAAUxvC,EAAY,WACnT,IAAIyvC,EACJ,IACI,IAAMC,EAAellB,GAAsB3S,GAAU,IAAIiS,GAAwB,EAAG,CAAC,WAAY2lB,EAAep3B,GAAQ,CAAC,IAAIyR,GAAwB,EAAG,CAAC,SAAU,IAAIA,GAAwB,EAAG,CAACT,GAAagB,GAA2BilB,EAAQ13B,MAAU,OAAQ3D,GAAWpR,IAAI,SAAC8sC,GAAQ,OAAK1pC,GAAK,IAAI6jB,GAAwB,EAAG,CAACrpB,GAAS,EAAG04B,GAAyChV,GAAUorB,EAAgBC,EAAnErW,CAA4EwW,MAAcF,EAAa,GAAEH,GAASG,KAQrc,OAPWG,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAO5lB,GAAa,+BAAgCylB,GAAclkB,MAAK,SAACzV,GACrK,IAAIg6B,EAAYC,EAChB,OAASD,EAAah6B,EAAOi6B,EAAc/7B,GAAWwsB,EAAS2J,GAAyCtiB,KAA+BjU,GAAO07B,GAAiB17B,GAAO27B,KAAYI,GAA+BC,EAAWC,GAAiCD,GAAW,kBAASE,EAAWE,GAAML,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOE,EAAWG,OAAO1kB,MAAK,SAAC+M,GACnZ,IAAI5hB,EACJ,OAAOgV,QAAQE,QAAqF,KAA5ElV,EAAa+pB,GAAWr7B,EAAS2qC,GAAczX,IAAqB5xB,IAAc,IAAIikB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAACrT,EAAWjS,OAAO,OAAW,IAAIkmB,GAAe,EAAG,CAACjU,EAAWjS,OAAO,KAC9N,GAAE,KAAOinB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC+lB,QAAkBvkB,MAAK,SAAC2kB,GAAQ,OAAMxkB,QAAQE,QAAQskB,EAAS,GAAE,IACxI,GAAE,KACQ3kB,UAAK,GAAS,SAACpa,GAAG,OAAM,IAAIwZ,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC5Y,KAAO,GACvF,CACA,MAAOg/B,GACH,OAAOR,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOlkB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAComB,MAAQ,IAC1K,CACJ,CAhBuT,IAgB5S5kB,MAAK,SAAC4gB,GAEb,OADA6C,EAAS,IAAIxoB,GAAQ,EAAG,CAAC2lB,KAClBzgB,QAAQE,SACnB,IAGOF,QAAQE,SAEvB,KACKL,MACT,CAyDYwwB,CAAOvL,EAAQuK,YAAavK,EAAQW,YAAaX,EAAQY,eAAgBpC,EAEjF,KAAiB,KAAKvE,GAAyBuR,GAAAA,EAAkB,CAAC,CAAC,WAAYngC,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKsoC,SAAmB,CAAC,WAAYv/B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKqoC,OAC7M,C,qCC1KO,SAASc,KACZ,IAAIC,EAAYvJ,EAAUhH,EAAUyP,EAC9BtkB,EAAetZ,QAA2Czd,GAC1Do8C,EAAWrlB,EAAa,GACxBie,EAAiBv3B,IAA2C,GAC5D4+B,EAAarH,EAAe,GAiClC,OAhCAt4B,IAAgC,WACfwP,GAA6BggB,EAAS3gB,GAA+B2gB,GAAS,WACvF,IAAIzL,EAAS6O,EAAQgN,EAAgBC,EACrC,OAAS9b,EAAU8J,GAAmCrmB,GAAW+E,WAAwBjpB,OAAWA,GAAasvC,OAAStvC,EAAYs8C,OAAiBt8C,EAAYu8C,OAAUv8C,EAAY,WACrL,IAAIyvC,EACJ,IACI,IAAMC,EAAellB,GAAsB5S,MAAU63B,EAAep3B,GAAQ,CAAC,IAAIyR,GAAwB,EAAG,CAAC,QAAS,IAAIA,GAAwB,EAAG,CAACT,GAAagB,GAA2BilB,EAAQ13B,MAAU,OAAQ3D,GAAWpR,IAAI,SAAC8sC,GAAQ,OAAK1pC,GAAK,IAAI6jB,GAAwB,EAAG,CAACrpB,GAAS,EAAG04B,GAAyChV,GAAUm4B,EAAgBC,EAAnEpjB,CAA4EwW,MAAcF,EAAa,GAAEH,GAASG,KAQxZ,OAPWG,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAO5lB,GAAa,wBAAyBylB,GAAclkB,MAAK,SAAC+M,GAC9J,IAAIwX,EAAYC,EAChB,OAASD,EAAaxX,EAASyX,EAAc/7B,GAAWwsB,EAAS2J,GAAyClmB,GAAW+E,MAAwBpV,GAAOyoC,GAAiBzoC,GAAO0oC,KAAY3M,GAA+BC,EAAWC,GAAiCD,GAAW,kBAASE,EAAWE,GAAML,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOE,EAAWG,OAAO1kB,MAAK,SAAC4gB,GACzZ,IAAIz1B,EACJ,OAAOgV,QAAQE,QAAqF,KAA5ElV,EAAa+pB,GAAWr7B,EAAS2qC,GAAc5D,IAAqBzlC,IAAc,IAAIikB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAACrT,EAAWjS,OAAO,OAAW,IAAIkmB,GAAe,EAAG,CAACjU,EAAWjS,OAAO,KAC9N,GAAE,KAAOinB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC+lB,QAAkBvkB,MAAK,SAAC2kB,GAAQ,OAAMxkB,QAAQE,QAAQskB,EAAS,GAAE,IACxI,GAAE,KACQ3kB,UAAK,GAAS,SAACpa,GAAG,OAAM,IAAIwZ,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC5Y,KAAO,GACvF,CACA,MAAOg/B,GACH,OAAOR,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOlkB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAComB,MAAQ,IAC1K,CACJ,CAhByL,IAgB/K5kB,MAAK,SAACitB,GACZ,IAAMzgC,EAAMygC,EACZ,OAAgB,IAAZzgC,EAAIrR,KAIJowB,EAAa,GAAG/e,EAAItT,OAAO,IAHpBinB,QAAQE,SAMvB,GACJ,KACKL,MACT,IACOkf,GAAyB4Q,GAAAA,EAAW,EAAEa,EAAa,CAACzR,GAAyB6Q,GAAAA,EAAkB,CAAC,CAAC,cAAc9Q,EAAAA,GAAAA,eAAc,IAAK,CACrI+B,UAAW,0BACToG,EAAW,CAAClI,GAAyB8Q,GAAAA,EAAY,CAAC,CAAC,WAAY,wBAAyB,CAAC,WAAY1/B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK6/B,SAAiBhH,EAAW5xB,GAAOJ,IAAM,WAC7L,IAAIw8B,EAASoG,EACb,GAAgB,MAAZJ,EAAkB,CAClB,IAAMjW,EAAMiW,EACZ,OAAOvkC,IAAU4yB,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CAAC,IAAK+9B,EAAU,CAAC1L,GAAyB+R,GAAAA,EAAM,CAAC,CAAC,SAAS,IAAQD,EAAavrB,IAAM,SAAC3yB,GACtJ,IAAIo+C,EACJ,OAAOhS,GAAyBiS,GAAAA,GAAU,EAAED,EAAa,CAAChS,GAAyBkS,GAAAA,EAAc,CAAC,CAAC,UAAWt+C,EAAEuqB,OAAQ,CAAC,YAAavqB,EAAEwqB,OAAQ,CAAC,WAAYhN,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK2pC,OAC9M,GAAGvW,GAAM,CAAC,WAAYrqB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKypC,SAAmB,CAAC,WAAY1gC,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKqjC,UACpJ,CAEI,OAAOv+B,GAAU80B,KAEzB,KAAKjC,GAAyBiR,GAAAA,EAAkB,CAAC,CAAC,WAAY7/B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK64B,SAAiByP,EAAarhC,GAAOJ,IAAM,kBAAOo7B,EAAe,GAAK18B,GAAOT,GAAU6yB,GAAyBkR,GAAAA,EAAQ,CAAC,CAAC,OAAQ,SAAU,CAAC,UAAW,YAAa,CAAC,WAAY,WAAY,CAAC,UAAW,SAACtE,GACrSprB,GAA6BggB,EAAS3gB,GAA+B2gB,GAAS,WACvF,IAAI2Q,EAAQ/a,EAAWiW,EAAQ+E,EAAiBC,EAChD,OAASF,EAASrjB,GAAmCpV,QAAapkB,OAAWA,OAAWA,EAAtEw5B,CAAiF,IAAMsI,EAAYyI,GAAmCziB,UAA+B9nB,OAAWA,GAAa+3C,EAAShkC,GAAK8oC,GAAUC,OAAkB98C,EAAY+8C,OAAW/8C,EAAY,WACxR,IAAIs4C,EACJ,IACI,IAAMC,EAAiB/tB,GAAsBzQ,GAAY,IAAI+P,GAAwB,EAAG,CAAC,WAAYwuB,EAAejgC,GAAQ,CAAC,IAAIyR,GAAwB,EAAG,CAAC,WAAY,IAAIA,GAAwB,EAAG,CAACT,GAAagB,GAA2B0tB,EAAQngC,MAAU,OAAQ3D,GAAWpR,IAAI,SAAC21C,GAAQ,OAAKvyC,GAAK,IAAI6jB,GAAwB,EAAG,CAACrpB,GAAS,EAAG04B,GAAyChV,GAAU24B,EAAiBC,EAApE5jB,CAA8Eqf,MAAcF,EAAa,GAAEP,GAASO,KAQ7c,OAPa1I,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAO5lB,GAAa,wBAAyBsuB,GAAgB/sB,MAAK,SAACotB,GAClK,IAAIF,EAAYC,EAChB,OAASD,EAAaE,EAASD,EAAc1kC,GAAW6tB,EAAWsI,GAAyCtiB,KAA+BjU,GAAOipC,GAAkBjpC,GAAOkpC,KAAanN,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAS6I,EAAWzI,GAAML,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAO6I,EAAWxI,OAAO1kB,MAAK,SAACwtB,GACzZ,IAAIpiC,EACJ,OAAO+U,QAAQE,QAAyF,KAAhFjV,EAAe8pB,GAAWr7B,EAASszC,GAAcK,IAAuBryC,IAAc,IAAIikB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAACpT,EAAalS,OAAO,OAAW,IAAIkmB,GAAe,EAAG,CAAChU,EAAalS,OAAO,KACtO,GAAE,KAAOinB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC0uB,QAAkBltB,MAAK,SAACqtB,GAAQ,OAAMltB,QAAQE,QAAQgtB,EAAS,GAAE,IACxI,GAAE,KACUrtB,UAAK,GAAS,SAACub,GAAK,OAAM,IAAInc,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC+c,KAAS,GAC7F,CACA,MAAOgS,GACH,OAAOnJ,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOlkB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC+uB,MAAU,IAC5K,CACJ,CAhB4R,IAgBjRvtB,MAAK,SAAC2e,GACb,IAAMgP,EAAQhP,EACd,OAAkB,IAAdgP,EAAMxyC,KACyB,YAA3BwyC,EAAMz0C,OAAO,GAAG8hB,QAChBjF,OAAOC,SAAS+xB,QAAO,GAChB5nB,QAAQE,WAOZF,QAAQE,SAEvB,GACJ,KACKL,MACT,GAAI,CAAC,QAAS,CACViwB,YAAa,OACV7hC,IAAM,kBAAM/B,GAAU6yB,GAAyBkR,GAAAA,EAAQ,CAAC,CAAC,OAAQ,SAAU,CAAC,UAAW,YAAa,CAAC,WAAY,UAAW,CAAC,UAAW,SAACoB,GAC5IX,GAAW,EACf,KAAK,KAAKxkC,GAAU6yB,GAAyBkR,GAAAA,EAAQ,CAAC,CAAC,OAAQ,SAAU,CAAC,UAAW,YAAa,CAAC,WAAY,4BAA6B,CAAC,UAAW,SAACqB,GACrJZ,GAAW,EACf,KAAK,KAAK3R,GAAyBuR,GAAAA,EAAkB,CAAC,CAAC,WAAYngC,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKsoC,SAAmB,CAAC,WAAYv/B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKopC,OACjM,C,y7DC/FyC,IAEnCe,GAAgB,SAAAjnC,GAClB,SAAAinC,EAAY/2B,EAAUorB,EAAUjD,GAAY,IAAAl4B,EAIX,OAJWrX,GAAA,KAAAm+C,IACxC9mC,EAAAiQ,GAAA,KAAA62B,IACK/2B,SAAWA,EAChB/P,EAAKm7B,SAAWA,EAChBn7B,EAAKk4B,WAAaA,EAAWl4B,CACjC,CAAC,OAAAC,GAAA6mC,EAAAjnC,GAAApX,GAAAq+C,EAAA,CANiB,CAAS/1C,GAazBg2C,GAAkB,SAAAtzB,GACpB,SAAAszB,EAAYx2C,EAAKjC,GAAQ,IAAAiiB,EAGA,OAHA5nB,GAAA,KAAAo+C,IACrBx2B,EAAAN,GAAA,KAAA82B,IACKx2C,IAAMA,EACXggB,EAAKjiB,OAASA,EAAOiiB,CACzB,CAAC,OAAAtQ,GAAA8mC,EAAAtzB,GAAAhrB,GAAAs+C,EAAA,EAAAj+C,IAAA,QAAAC,MACD,WACI,MAAO,CAAC,iBAAkB,eAAgB,SAAU,iBACxD,IAAC,CARmB,CAASsH,GAmBjC,SAAS22C,GAAkB1O,EAAOvO,GAC9B,OAAQA,EAAIx5B,KACR,KAAK,EACD,OAAO,IAAIu2C,GAAiBxO,EAAMvoB,cAAUnmB,EAAW0uC,EAAMJ,YACjE,KAAK,EACD,OAAII,EAAMvoB,SAAS3lB,OAAS,EACjB,IAAI08C,GAAiBxO,EAAMvoB,cAAUnmB,GAAW,GAGhD,IAAIk9C,GAAiBxO,EAAMvoB,SAAU,kBAAmBuoB,EAAMJ,YAE7E,KAAK,EACD,IAAMt2B,EAAMmoB,EAAIz7B,OAAO,GACvB,GAAgB,IAAZsT,EAAIrR,IAEJ,OAAO,IAAIu2C,GAAiBxO,EAAMvoB,SADnB,oHACqC,GAGpD,IAAM9M,EAAMrB,EAAItT,OAAO,GACvB,MAAmB,YAAf2U,EAAImN,QACJjF,OAAOC,SAAS+xB,SACT7E,GAGA,IAAIwO,GAAiBxO,EAAMvoB,SAAU9M,EAAIoN,SAAS,GAIrE,QACI,OAAO,IAAIy2B,GAAiB/c,EAAIz7B,OAAO,GAAIgqC,EAAM6C,SAAU7C,EAAMJ,YAE7E,CA8BO,SAAS+O,GAAsBC,GAClC,IAAIlC,EAAYxI,EAAU2K,EAAY3R,EAAU4R,EAC1CC,EAAkBH,EAAgCG,gBAClD1mB,EAAeza,GAA6B8gC,GAnE3C,IAAIF,GAAiB,QAAIl9C,GAAW,IAoErCywC,EAAU1Z,EAAa,GACvBkY,EAAWlY,EAAa,GAC9B,OAAO2T,GAAyB4Q,GAAAA,EAAW,EAAEF,EAAa,CAAC1Q,GAAyB6Q,GAAAA,EAAkB,CAAC,CAAC,cAAc9Q,EAAAA,GAAAA,eAAc,IAAK,CACrI+B,UAAW,0BACToG,EAAW,CAAClI,GAAyB8Q,GAAAA,EAAY,CAAC,CAAC,WAAY,mBAAoB,CAAC,WAAY1/B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK6/B,SAAiB2K,EAAa1lC,IAAW+zB,EAAW5xB,GAAOJ,IAAM,kBAAMtB,GAAOyB,IAAY0wB,EAAAA,GAAAA,eAAc,IAAK,CAC5P1sB,MAAO,CACH2yB,SAAU,UAEd9E,SAAU,qFACThyB,IAAM,kBAAMtB,GAAOmlC,EAAkB1jC,GAAY2wB,GAAyBkG,GAAAA,EAAW,CAAC,CAAC,QAAS,CACjGkB,UAAW,GACXE,aAAc,KACd,CAAC,YAAY,GAAO,CAAC,OAAQ,YAAa,CAAC,UAAW,YAAa,CAAC,QAAS,WAAY,CAAC,WAAY,SAACvyC,GACvGwvC,EAAS,IAAIkO,GAAmB,EAAG,CAAC19C,EAAE8U,OAAOpV,QACjD,GAAI,CAAC,OAAQ,SAAU,CAAC,aAAa,MAAW0wB,KAAWjW,IAAM,kBAAMG,GAAYsyB,GAAiBoE,EAAQc,UAAU,WAClHtC,EAAS,IAAIkO,GAAmB,EAAG,IACvC,IAAG,IAAE,IAAE,MAAI1S,EAAAA,GAAAA,eAAc,MAAO,CAC5BmB,SAAU9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK64B,QACrDlB,GAAyBiR,GAAAA,EAAkB,CAAC,CAAC,WAAY7/B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKwqC,SAAmBC,EAAa3lC,GAAU6yB,GAAyBkR,GAAAA,EAAQ,CAAC,CAAC,OAAQ,SAAU,CAAC,UAAW,YAAa,CAAC,WAAY,eAAgB,CAAC,UAAW,SAACrjB,GACrQkY,EAAQnC,YAnDrB,SAA2BoF,EAAU+J,EAAiBxO,GACrC/iB,GAA6BggB,EAAS3gB,GAA+B2gB,GAAS,WACvF,IAAImD,EAAM5O,EAAS6O,EAAQC,EAAgBC,EAE3C,OADAP,EAAS,IAAIkO,GAAmB,EAAG,KAC1BzJ,EAASlzC,OAAS,IAAai9C,GAAsBpO,EAAO7V,GAAmCpV,QAAapkB,OAAWA,OAAWA,EAAtEw5B,CAAiFka,GAAYjT,EAAU8J,GAAmCziB,UAA+B9nB,OAAWA,GAAasvC,EAASv7B,GAAKs7B,GAAQE,OAAiBvvC,EAAYwvC,OAAUxvC,EAAY,WAC3U,IAAIyvC,EACJ,IACI,IAAMC,EAAellB,GAAsB3S,GAAU,IAAIiS,GAAwB,EAAG,CAAC,WAAY2lB,EAAep3B,GAAQ,CAAC,IAAIyR,GAAwB,EAAG,CAAC,SAAU,IAAIA,GAAwB,EAAG,CAACT,GAAagB,GAA2BilB,EAAQ13B,MAAU,OAAQ3D,GAAWpR,IAAI,SAAC8sC,GAAQ,OAAK1pC,GAAK,IAAI6jB,GAAwB,EAAG,CAACrpB,GAAS,EAAG04B,GAAyChV,GAAUorB,EAAgBC,EAAnErW,CAA4EwW,MAAcF,EAAa,GAAEH,GAASG,KAQrc,OAPWG,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAO5lB,GAAa,sBAAuBylB,GAAclkB,MAAK,SAACzV,GAC5J,IAAIg6B,EAAYC,EAChB,OAASD,EAAah6B,EAAOi6B,EAAc/7B,GAAWwsB,EAAS2J,GAAyCtiB,KAA+BjU,GAAO07B,GAAiB17B,GAAO27B,KAAYI,GAA+BC,EAAWC,GAAiCD,GAAW,kBAASE,EAAWE,GAAML,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOE,EAAWG,OAAO1kB,MAAK,SAAC+M,GACnZ,IAAI5hB,EACJ,OAAOgV,QAAQE,QAAqF,KAA5ElV,EAAa+pB,GAAWr7B,EAAS2qC,GAAczX,IAAqB5xB,IAAc,IAAIikB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAACrT,EAAWjS,OAAO,OAAW,IAAIkmB,GAAe,EAAG,CAACjU,EAAWjS,OAAO,KAC9N,GAAE,KAAOinB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC+lB,QAAkBvkB,MAAK,SAAC2kB,GAAQ,OAAMxkB,QAAQE,QAAQskB,EAAS,GAAE,IACxI,GAAE,KACQ3kB,UAAK,GAAS,SAACpa,GAAG,OAAM,IAAIwZ,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC5Y,KAAO,GACvF,CACA,MAAOg/B,GACH,OAAOR,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOlkB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAComB,MAAQ,IAC1K,CACJ,CAhB+U,IAgBpU5kB,MAAK,SAAC4gB,GAEb,OADA6C,EAAS,IAAIkO,GAAmB,EAAG,CAAC/Q,KAC7BzgB,QAAQE,SACnB,IAAOF,QAAQE,SACnB,KACKL,MACT,CA0BYkyB,CAAkBjN,EAAQtqB,SAAUs3B,EAAiBxO,EAE7D,MAAOvE,GAAyBuR,GAAAA,EAAkB,CAAC,CAAC,WAAYngC,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKyqC,SAAmB,CAAC,WAAY1hC,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKqoC,OAC9L,CAAC,IAEKnK,GAAK,SAAA1qB,GACP,SAAA0qB,EAAY/oB,EAAay1B,EAAgBpM,GAAU,IAAAtqB,EAItB,OAJsBloB,GAAA,KAAAkyC,IAC/ChqB,EAAAZ,GAAA,KAAA4qB,IACK/oB,YAAcA,EACnBjB,EAAK02B,eAAiBA,EACtB12B,EAAKsqB,SAAWA,EAAStqB,CAC7B,CAAC,OAAA5Q,GAAA46B,EAAA1qB,GAAA1nB,GAAAoyC,EAAA,CANM,CAAS9pC,GAadsf,GAAO,SAAAsD,GACT,SAAAtD,EAAY9f,EAAKjC,GAAQ,IAAA6iB,EAGA,OAHAxoB,GAAA,KAAA0nB,IACrBc,EAAAlB,GAAA,KAAAI,IACK9f,IAAMA,EACX4gB,EAAK7iB,OAASA,EAAO6iB,CACzB,CAAC,OAAAlR,GAAAoQ,EAAAsD,GAAAlrB,GAAA4nB,EAAA,EAAAvnB,IAAA,QAAAC,MACD,WACI,MAAO,CAAC,mBAAoB,uBAAwB,eACxD,IAAC,CARQ,CAASsH,GAmBtB,SAAS8V,GAAOmyB,EAAOvO,GACnB,OAAQA,EAAIx5B,KACR,KAAK,EACD,IAAMwyC,EAAQhZ,EAAIz7B,OAAO,GACzB,GAAkB,IAAdy0C,EAAMxyC,IAAW,CACjB,IAAM0S,EAAM8/B,EAAMz0C,OAAO,GACzB,MAAmB,YAAf2U,EAAImN,OACG,IAAIyqB,GAAMvC,EAAMxmB,aAAa,EAAMwmB,EAAM6C,UAGzC,IAAIN,GAAMvC,EAAMxmB,YAAawmB,EAAMiP,eAAgBtkC,EAAIoN,QAEtE,CAEI,OAAO,IAAIwqB,GAAMvC,EAAMxmB,YAAawmB,EAAMiP,eAAgB,iEAGlE,KAAK,EACD,OAAO,IAAI1M,GAAMvC,EAAMxmB,YAAawmB,EAAMiP,oBAAgB39C,GAC9D,QACI,IAAMgY,EAAMmoB,EAAIz7B,OAAO,GACvB,OAAgB,IAAZsT,EAAIrR,IACG,IAAIsqC,GAAMvC,EAAMxmB,YAAawmB,EAAMiP,eAAgB,mEAGnD,IAAI1M,GAAMj5B,EAAItT,OAAO,GAAIgqC,EAAMiP,eAAgBjP,EAAM6C,UAI5E,CAqHA,SAASqM,GAAa//C,GAClB,IAAM+tC,EAAW5xB,GAAOJ,IAAM,kBAAMtB,GAAOza,EAAEwqB,gBAAkBtO,IAAY0wB,EAAAA,GAAAA,eAAc0Q,GAAc,OAAStrB,KAAWjW,IAAM,kBAAMtB,GAAOyB,IAAY0wB,EAAAA,GAAAA,eAAcyR,GAAU,OAAQtiC,IAAM,kBAAMG,IAAY0wB,EAAAA,GAAAA,eAAc4S,GAAuB,CACnPI,gBAAiB5/C,EAAEwqB,kBACpB,IAAE,IAAE,KACP,OAAOoiB,EAAAA,GAAAA,eAAc,MAAO,CACxBmB,SAAU9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK64B,KAE/D,CAEO,SAASiS,KACZ,IAAI1Q,EAASxB,EACP5U,EAAeza,GAA6BC,GAhK3C,IAAI00B,QAAMjxC,GAAW,OAAOA,IAiK7BywC,EAAU1Z,EAAa,GACvBkY,EAAWlY,EAAa,GAI9B,OAHAra,IAAgC,YAjIpC,SAA0BuyB,GACT/iB,GAA6BggB,EAAS3gB,GAA+B2gB,GAAS,WACvF,IAAIzL,EAAS6O,EAAQgN,EAAgBC,EACrC,OAAS9b,EAAU8J,GAAmC7hB,UAA2B1oB,OAAWA,GAAasvC,OAAStvC,EAAYs8C,OAAiBt8C,EAAYu8C,OAAUv8C,EAAY,WAC7K,IAAIyvC,EACJ,IACI,IAAMC,EAAellB,GAAsB5S,MAAU63B,EAAep3B,GAAQ,CAAC,IAAIyR,GAAwB,EAAG,CAAC,QAAS,IAAIA,GAAwB,EAAG,CAACT,GAAagB,GAA2BilB,EAAQ13B,MAAU,OAAQ3D,GAAWpR,IAAI,SAAC8sC,GAAQ,OAAK1pC,GAAK,IAAI6jB,GAAwB,EAAG,CAACrpB,GAAS,EAAG04B,GAAyChV,GAAUm4B,EAAgBC,EAAnEpjB,CAA4EwW,MAAcF,EAAa,GAAEH,GAASG,KAQxZ,OAPWG,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAO5lB,GAAa,oBAAqBylB,GAAclkB,MAAK,SAACzV,GAC1J,IAAIg6B,EAAYC,EAChB,OAASD,EAAah6B,EAAOi6B,EAAc/7B,GAAWwsB,EAAS2J,GAAyC1hB,KAA2B7U,GAAOyoC,GAAiBzoC,GAAO0oC,KAAY3M,GAA+BC,EAAWC,GAAiCD,GAAW,kBAASE,EAAWE,GAAML,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOE,EAAWG,OAAO1kB,MAAK,SAAC+M,GAC/Y,IAAI5hB,EACJ,OAAOgV,QAAQE,QAAqF,KAA5ElV,EAAa+pB,GAAWr7B,EAAS2qC,GAAczX,IAAqB5xB,IAAc,IAAIikB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAACrT,EAAWjS,OAAO,OAAW,IAAIkmB,GAAe,EAAG,CAACjU,EAAWjS,OAAO,KAC9N,GAAE,KAAOinB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC+lB,QAAkBvkB,MAAK,SAAC2kB,GAAQ,OAAMxkB,QAAQE,QAAQskB,EAAS,GAAE,IACxI,GAAE,KACQ3kB,UAAK,GAAS,SAACpa,GAAG,OAAM,IAAIwZ,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC5Y,KAAO,GACvF,CACA,MAAOg/B,GACH,OAAOR,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOlkB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAComB,MAAQ,IAC1K,CACJ,CAhBiL,IAgBvK5kB,MAAK,SAAC4gB,GAEZ,OADA6C,EAAS,IAAIxoB,GAAQ,EAAG,CAAC2lB,KAClBzgB,QAAQE,SACnB,GACJ,KACKL,MACT,CAyGQsyB,CAAiB7O,EACrB,KACOxE,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACrDw0B,QAAS,OACTiE,cAAe,SACf/D,WAAY,SACZ8F,QAAS,MACR1F,EAAU,EAAC1C,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CAC9D65B,SAAU,IACVJ,UAAW,MACVnG,EAAQ3xB,GAAOJ,IAAM,kBAAMtB,GAAOyB,GAAYsyB,GAAiBoE,EAAQc,UAAU,WAClFtC,EAAS,IAAIxoB,GAAQ,EAAG,IAC5B,KAAK7M,IAAM,WACP,IAAMjD,EAAa85B,EAAQvoB,YAC3B,GAAkB,MAAdvR,EAAoB,CACpB,IAAMonC,EAAcpnC,EACpB,OAAO2B,GAAOyB,GA5F1B,SAAyBgkC,EAAaC,EAAgB/O,GAClD,IAAIqH,EAASnJ,EAASxB,EAAOyK,EAC7B,OAAO3L,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACrDw0B,QAAS,OACToR,cAAe,OACfC,aAAiB,iBACjBlM,aAAc,UACbsE,EAAU,EAAC7L,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CAC9DojC,YAAa,OACb5O,QAAS,OACTE,WAAY,YACXI,EAAU,EAAC1C,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,YAAa,eAAgB,CAAC,QAAS,CAC5Fo0B,MAAO,IACPC,OAAQ,OACPf,EAAQ,EAAClB,EAAAA,GAAAA,eAAc,MAAO,CAC/B0T,IAAKJ,EAAY73B,SACjBk4B,IAAK,mBAAFx3C,OAAqBy3C,mBACvB,CAAC,WAAYviC,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK44B,WAAgB,CAAC,WAAY7vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKo6B,WAAiB1C,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACxMw0B,QAAS,OACTiE,cAAe,YACdsF,EAAUp8B,GAAOJ,IAAM,WACxB,IAAM0kC,EAAM,SAACzgD,GAAC,OAAK4sC,EAAAA,GAAAA,eAAc,OAAQ,CACrC1sB,MAAO,CACH2yB,SAAU,UAEd9E,SAAU/tC,GACZ,EACF,OAAOya,GAAOyB,IAAY0wB,EAAAA,GAAAA,eAAc,OAAQ,CAC5C1sB,MAAO,CACH2yB,SAAU,SACVC,WAAY,QAEhB/E,SAAUmS,EAAY73B,YACrBtM,IAAM,kBAAMtB,GAAOyB,GAAYukC,EAAIP,EAAYh3B,QAASnN,IAAM,WAC/D,IAAI+3B,EACJ,OAAOr5B,GAAOyB,IAAY0wB,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACxEw0B,QAAS,UACR8E,EAAU33B,GAAOJ,IAAM,kBAAMtB,GAAOyB,GAAYukC,EAAI,qBAAD13C,OAAsBm3C,EAAY31B,cAAgB,KAAO,SAAWxO,IAAM,kBAAOokC,EAAiBjkC,IAAY0wB,EAAAA,GAAAA,eAAc,OAAQ,CACxL1sB,MAAO,CACH2yB,SAAU,SACV6N,WAAY,EACZC,mBAAoB,aAExB5S,SAAU,kBACNmS,EAAY31B,cAYdyH,KAZ8B9V,IAAY0wB,EAAAA,GAAAA,eAAc,OAAQ,CAClE1sB,MAAO,CACH2yB,SAAU,SACV6N,WAAY,GACZ/G,OAAQ,UACRtD,MAAO,UACPsK,mBAAoB,aAExBzN,QAAS,SAACh7B,IA/E1B,SAAsBk5B,GACL/iB,GAA6BggB,EAAS3gB,GAA+B2gB,GAAS,WACvF,IAAImD,EAAM5O,EAAS6O,EAAQC,EAAgBC,EAC3C,OAASH,EAAO7V,GAAmCpV,QAAapkB,OAAWA,OAAWA,EAAtEw5B,CAAiF,IAAMiH,EAAU8J,GAAmCziB,UAA+B9nB,OAAWA,GAAasvC,EAASv7B,GAAKs7B,GAAQE,OAAiBvvC,EAAYwvC,OAAUxvC,EAAY,WAChR,IAAIyvC,EACJ,IACI,IAAMC,EAAellB,GAAsB3S,GAAU,IAAIiS,GAAwB,EAAG,CAAC,WAAY2lB,EAAep3B,GAAQ,CAAC,IAAIyR,GAAwB,EAAG,CAAC,SAAU,IAAIA,GAAwB,EAAG,CAACT,GAAagB,GAA2BilB,EAAQ13B,MAAU,OAAQ3D,GAAWpR,IAAI,SAAC8sC,GAAQ,OAAK1pC,GAAK,IAAI6jB,GAAwB,EAAG,CAACrpB,GAAS,EAAG04B,GAAyChV,GAAUorB,EAAgBC,EAAnErW,CAA4EwW,MAAcF,EAAa,GAAEH,GAASG,KAQrc,OAPWG,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAO5lB,GAAa,kBAAmBylB,GAAclkB,MAAK,SAACzV,GACxJ,IAAIg6B,EAAYC,EAChB,OAASD,EAAah6B,EAAOi6B,EAAc/7B,GAAWwsB,EAAS2J,GAAyCtiB,KAA+BjU,GAAO07B,GAAiB17B,GAAO27B,KAAYI,GAA+BC,EAAWC,GAAiCD,GAAW,kBAASE,EAAWE,GAAML,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOE,EAAWG,OAAO1kB,MAAK,SAAC+M,GACnZ,IAAI5hB,EACJ,OAAOgV,QAAQE,QAAqF,KAA5ElV,EAAa+pB,GAAWr7B,EAAS2qC,GAAczX,IAAqB5xB,IAAc,IAAIikB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAACrT,EAAWjS,OAAO,OAAW,IAAIkmB,GAAe,EAAG,CAACjU,EAAWjS,OAAO,KAC9N,GAAE,KAAOinB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC+lB,QAAkBvkB,MAAK,SAAC2kB,GAAQ,OAAMxkB,QAAQE,QAAQskB,EAAS,GAAE,IACxI,GAAE,KACQ3kB,UAAK,GAAS,SAACpa,GAAG,OAAM,IAAIwZ,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC5Y,KAAO,GACvF,CACA,MAAOg/B,GACH,OAAOR,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOlkB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAComB,MAAQ,IAC1K,CACJ,CAhBoR,IAgBzQ5kB,MAAK,SAAC4gB,GAEb,OADA6C,EAAS,IAAIxoB,GAAQ,EAAG,CAAC2lB,KAClBzgB,QAAQE,SACnB,GACJ,KACKL,MACT,CAuDoBizB,CAAaxP,EACjB,EACArD,SAAU,gCACE,IAAG,KAAI,CAAC,WAAY9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK4+B,WAAkB/3B,IAAM,kBAAMtB,GAAOyB,GAAYukC,EAAI,gBAAD13C,OAAiBm3C,EAAYv1B,UAAY5O,IAAM,kBAAMtB,GAAOylC,EAAYz1B,gBAAkBvO,GAAYukC,EAAI,2BAA6BzuB,KAAWjW,IAAM,kBAAOmkC,EAAYx1B,iBAAmBxO,GAAYukC,EAAI,4BAA8BzuB,IAAS,IAAG,IAAE,IACnY,IAAG,IACP,KAAK,CAAC,WAAY/T,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKqjC,WAAkB,CAAC,WAAYt6B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKujC,SAC/I,CAiCsCoI,CAAgBX,EAAatN,EAAQkN,eAAgB1O,IAAYr1B,IAAM,kBAAMG,IAAY0wB,EAAAA,GAAAA,eAAcmT,GAAcG,GAAa,IAChK,CAEI,OAAOhkC,GAAY4yB,KAE3B,IAAG,KAAI,CAAC,WAAY7wB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK44B,WAAgB,CAAC,WAAY7vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKo6B,SAC/I,CCpVO,SAASwR,KACZ,IAAIvI,EAASzE,EACP5a,EAAetZ,GAA2C,IAC1DmhC,EAAW7nB,EAAa,GACxBie,EAAiBv3B,GAA2C,GAC5Dw3B,EAAiBx3B,QAA2Czd,GAC5Do1C,EAAYH,EAAe,GAC3BE,EAAiB13B,IAA2C,GAClE,OAAOgtB,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACrDw0B,QAAS,OACTG,eAAgB,SAChB6F,QAAS,SACRuD,EAAU,EAAC3L,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CAC9D65B,SAAU,IACVzF,MAAO,OACPI,QAAS,OACTiE,cAAe,YACda,EAAU33B,GAAOJ,IAAM,kBAAMtB,GAAOT,IAAU4yB,EAAAA,GAAAA,eAAc,OAAQ,CACrE1sB,MAAO,CACH2yB,SAAU,UAEd9E,SAAU,oBACThyB,IAAM,WACP,IAAcuzB,EACd,OAAQgI,EAAe,GAiEft9B,IAAU4yB,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CAChEwmC,WAAY,GACZhN,UAAW,YACV1E,EAAU,EAAC1C,EAAAA,GAAAA,eAAc,OAAQ,CAClC1sB,MAAO,CACH2yB,SAAU,UAEd9E,SAAU,0CACVnB,EAAAA,GAAAA,eAAc,IAAK,CACnB1sB,MAAO,CACH2yB,SAAU,SACVoB,UAAW,IAEflG,SAAU,+DACT,CAAC,WAAY9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKo6B,WA/EnC70B,GAAOT,IAAU4yB,EAAAA,GAAAA,eAAc,OAAQhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CAC5F25B,aAAc,KACwJ,CAAC,WAA3J,+JAAwLp4B,IAAM,kBAAMtB,GAAOT,GAAU6yB,GAAyBkG,GAAAA,EAAW,CAAC,CAAC,aAAa,GAAO,CAAC,WAAY,SAACnxC,GACzSs3B,EAAa,GAAGt3B,EAAE8U,OAAOpV,MAC7B,GAAI,CAAC,aAAa,GAAO,CAAC,QAAS,GAAFyH,OAAKg4C,EAASp+C,OAAM,IAAI,MAAS,CAAC,QAASo+C,EAASp+C,OAAS,KAAO,CAAC,UAAW,YAAa,CAAC,OAAQ,YAAaoZ,IAAM,WACtJ,IAAI+xB,EACJ,OAAOrzB,GAAOT,IAAU4yB,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CACtEw6B,QAAS,GACThB,UAAW,YACVlG,EAAQ,CAACjB,GAAyBkR,GAAAA,EAAQ,CAAC,CAAC,OAAQ,SAAU,CAAC,UAAW,YAAa,CAAC,WAAY,YAAa,CAAC,UAAW,SAACnD,GAClHvsB,GAA6BggB,EAAS3gB,GAA+B2gB,GAAS,WACvF,IAAImD,EAAM5O,EAAS6O,EAAQC,EAAgBC,EAC3C,OAAwB,IAApBoP,EAASp+C,QACT40C,EAAU,kCACHzpB,QAAQE,WAEV+yB,EAASp+C,OAAS,IACvB40C,EAAU,kCACHzpB,QAAQE,WAEV+yB,EAASp+C,OAAS,KACvB40C,EAAU,sCACHzpB,QAAQE,YAGNwjB,EAAO7V,GAAmCzV,GAAWO,GAAYF,SAAcpkB,OAAWA,OAAWA,EAA9Fw5B,CAAyG,CAACwb,EAAe,GAAI4J,IAAane,EAAU8J,GAAmCziB,UAA+B9nB,OAAWA,GAAasvC,EAASv7B,GAAKs7B,GAAQE,OAAiBvvC,EAAYwvC,OAAUxvC,EAAY,WACnU,IAAIyvC,EACJ,IACI,IAAMC,EAAellB,GAAsBzQ,GAAY,IAAI+P,GAAwB,EAAG,CAAC,WAAY2lB,EAAep3B,GAAQ,CAAC,IAAIyR,GAAwB,EAAG,CAAC,SAAU,IAAIA,GAAwB,EAAG,CAACT,GAAagB,GAA2BilB,EAAQ13B,MAAU,OAAQ3D,GAAWpR,IAAI,SAAC8sC,GAAQ,OAAK1pC,GAAK,IAAI6jB,GAAwB,EAAG,CAACrpB,GAAS,EAAG04B,GAAyChV,GAAUorB,EAAgBC,EAAnErW,CAA4EwW,MAAcF,EAAa,GAAEH,GAASG,KAQvc,OAPWG,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAO5lB,GAAa,gBAAiBylB,GAAclkB,MAAK,SAACzV,GACtJ,IAAIg6B,EAAYC,EAChB,OAASD,EAAah6B,EAAOi6B,EAAc/7B,GAAWwsB,EAAS2J,GAAyCtiB,KAA+BjU,GAAO07B,GAAiB17B,GAAO27B,KAAYI,GAA+BC,EAAWC,GAAiCD,GAAW,kBAASE,EAAWE,GAAML,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOE,EAAWG,OAAO1kB,MAAK,SAAC+M,GACnZ,IAAI5hB,EACJ,OAAOgV,QAAQE,QAAqF,KAA5ElV,EAAa+pB,GAAWr7B,EAAS2qC,GAAczX,IAAqB5xB,IAAc,IAAIikB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAACrT,EAAWjS,OAAO,OAAW,IAAIkmB,GAAe,EAAG,CAACjU,EAAWjS,OAAO,KAC9N,GAAE,KAAOinB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC+lB,QAAkBvkB,MAAK,SAAC2kB,GAAQ,OAAMxkB,QAAQE,QAAQskB,EAAS,GAAE,IACxI,GAAE,KACQ3kB,UAAK,GAAS,SAACpa,GAAG,OAAM,IAAIwZ,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAC5Y,KAAO,GACvF,CACA,MAAOg/B,GACH,OAAOR,GAA+BC,EAAWC,GAAiCD,GAAW,kBAAOlkB,QAAQE,QAAQ,IAAIjB,GAAe,EAAG,CAAC,IAAIZ,GAAW,EAAG,CAAComB,MAAQ,IAC1K,CACJ,CAhBuU,IAgB5T5kB,MAAK,SAAC4gB,GACb,IAAMp0B,EAAMo0B,EACZ,GAAgB,IAAZp0B,EAAIrR,IAAW,CACf,IAAM0S,EAAMrB,EAAItT,OAAO,GACvB,MAAmB,YAAf2U,EAAImN,QACJ2uB,EAAe,IAAG,GACXxpB,QAAQE,YAGfupB,EAAU/7B,EAAIoN,SACPkF,QAAQE,UAEvB,CAGI,OADAupB,EAAU,iEACHzpB,QAAQE,SAEvB,GAER,KACKL,MACT,MAAO,CAAC,WAAY1P,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK44B,WAAgB/xB,IAAM,kBAAM/B,GAAUw0B,GAAiB4I,EAAe,IAAI,WACvIG,OAAUp1C,EACd,IAAG,IACP,IAAG,IAeP,IAAG,KAAI,CAAC,WAAY8b,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK4+B,WAAkB,CAAC,WAAY71B,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAKqjC,SACjJ,C,qlCC9GO,IAAM0I,GAAQ,SAAAj1B,GACjB,SAAAi1B,EAAYn4C,EAAKjC,GAAQ,IAAA0R,E,MAGA,O,4FAHArX,CAAA,KAAA+/C,I,EACrB,K,EAAAA,E,QAAA1oC,E,2WACKzP,IAAMA,EACXyP,EAAK1R,OAASA,EAAO0R,CACzB,CAAC,O,sRAAAC,CAAAyoC,EAAAj1B,G,EAAAi1B,G,EAAA,EAAA5/C,IAAA,QAAAC,MACD,WACI,MAAO,CAAC,QAAS,WAAY,cAAe,aAAc,WAAY,WAC1E,M,8EAAC,CARgB,CAASsH,GAuIvB,SAASs4C,KACZ,IAAIpT,EACEnqB,EAAW/D,GA1Hd,SAAmC5f,GACtC,IAAIm/B,EAAamV,EAAWC,E5BsJUzlC,EAClCgK,EACAkd,E4BvJJ,GAAK/b,GAAQja,GA2FTm/B,EAAc,OA1Fd,OAAQ9mB,GAAKrY,IACT,IAAK,UAEGm/B,EADAllB,GAAQ3B,GAAKtY,IACC,EAGA,EAElB,MAEJ,IAAK,UAEGm/B,EADAllB,GAAQ3B,GAAKtY,IACC,EAGA,EAElB,MAEJ,IAAK,UAEGm/B,EADAllB,GAAQ3B,GAAKtY,IACC,EAGA,EAElB,MAEJ,IAAK,WAEGm/B,EADAllB,GAAQ3B,GAAKtY,IACC,EAGA,EAElB,MAEJ,IAAK,oBACD,GAAKia,GAAQ3B,GAAKtY,IA2Cdm/B,EAAc,OA1Cd,GAAKllB,GAAQ3B,GAAKA,GAAKtY,KAsCnBm/B,EAAc,MAtCW,CACzB,IAAMvM,E5BiNvB,SAAqC9jB,GACxC,IACI,IAAMqyC,EAAY,IAAIC,gBAAgBtyC,GACtC,OAAOqN,GAAOJ,IAAM,kBAAMqX,IAAM,SAACiuB,GAAK,MAAK,CAAC1pC,GAAK,EAAG0pC,GAAQ1pC,GAAK,EAAG0pC,GAAO,GAAEF,EAAU94C,UAAU,IACrG,CACA,MAAOyQ,GACH,MACJ,CACJ,C4BzNoDwoC,CAA4BjpC,GAAKC,GAAKA,GAAKtY,MACvE,GAA2B,MAAvB4yB,EACA,GAAK3Y,GAAQ2Y,GA2BTuM,EAAc,OA1Bd,GAAqC,QAAjC9mB,GAAKua,GAAqB,GAAc,CACxC,IAAM+H,G5BwGA7rB,E4BxGkDuJ,GAAKua,GAAqB,G5B0G9GoD,EAAS,GACbld,EAAa,CAAC5I,GAASpB,EAAO,KAAK,EAAO,GAAI,IAAI9E,GAAU,kBAAMgsB,CAAM,IAAE,SAAC/wB,GACvE+wB,EAAc,EAAJ/wB,CACd,KAAK+wB,IACU,GACJld,EAAW,QAGlB,G4BjHyD,MAAzB6hB,GACI1gB,GAAQ3B,GAAKsa,KACT3Y,GAAQ3B,GAAKA,GAAKA,GAAKtY,OACvBm/B,EAAc,EACdmV,EAAYj8B,GAAKC,GAAKtY,IACtBu0C,EAAS5Z,GAWjBwE,EAAc,CAEtB,MAEIA,EAAc,OAQtBA,EAAc,CAEtB,CAQJ,MAEJ,QACIA,EAAc,EAM1B,OAAQA,GACJ,KAAK,EACD,OAAO,IAAI8hB,GAAS,EAAG,IAC3B,KAAK,EACD,OAAO,IAAIA,GAAS,EAAG,IAC3B,KAAK,EACD,OAAO,IAAIA,GAAS,EAAG,IAC3B,KAAK,EACD,OAAO,IAAIA,GAAS,EAAG,IAC3B,KAAK,EACD,OAAO,IAAIA,GAAS,EAAG,CAAC3M,EAAWC,IACvC,QACI,OAAO,IAAI0M,GAAS,EAAG,IAEnC,CAagEM,CAA0B1/B,GAAyB6B,OAAOC,SAASC,SAAWF,OAAOC,SAASlC,OAAQ,KAAK,GACjK+/B,EAAU,CAAC,CAAC,WAAY,4EAA6E,CAAC,WAAYxnC,IAAU4yB,EAAAA,GAAAA,eAAc,MAAOhmC,EAAU4T,GAAQ,CAAC,CAAC,QAAS,CAChLy5B,UAAW,MACVnG,EAAQ3xB,GAAOJ,IAAM,kBAAyB,IAAjB4H,EAAS7a,IAAaoT,IN8ejD0wB,EAAAA,GAAAA,eAAcmL,GAAY,CAC7BG,eAAetL,EAAAA,GAAAA,eAAc2J,GAAO,SM/egE,IAAjB5yB,EAAS7a,IAAaoT,ILsMtG0wB,EAAAA,GAAAA,eAAcmL,GAAY,CAC7BG,eAAetL,EAAAA,GAAAA,eAAcsQ,GAAU,SKvMqH,IAAjBv5B,EAAS7a,IAAaoT,IAAY0wB,EAAAA,GAAAA,eAAcoT,GAAa,OAA4B,IAAjBr8B,EAAS7a,IAAaoT,IAAY0wB,EAAAA,GAAAA,eAAckU,GAAM,OAA4B,IAAjBn9B,EAAS7a,IAAaoT,IAAY0wB,EAAAA,GAAAA,eAAciI,GAAkB,CACtVP,UAAW3wB,EAAS9c,OAAO,GAC3B0tC,OAAQ5wB,EAAS9c,OAAO,MACtBqV,IAhBA6xB,EAAW/zB,IAAU4yB,EAAAA,GAAAA,eAAc,OAAQ,CAC7CmB,SAAU,CAAC,6BAERnB,EAAAA,GAAAA,eAAc,MAAO,CACxBmB,SAAU9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK64B,QAL/D,IACUA,CAgB2B,KAAK,CAAC,WAAY9vB,GAAiB+vB,SAAS73B,QAAQlW,MAAMiV,KAAK44B,aAChG,OAAO4K,GAAmB9L,cAAc6U,GAAAA,GAAqB76C,EAAU46C,GAC3E,EAEoBE,EAAAA,GAAAA,GAAWl9B,SAASqrB,eAAe,gBAElD0J,QAAO3M,EAAAA,GAAAA,eAAcsU,GAAS,M,GC1K/BS,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB1/C,IAAjB2/C,EACH,OAAOA,EAAaC,QAGrB,IAAIC,EAASL,EAAyBE,GAAY,CAGjDE,QAAS,CAAC,GAOX,OAHAE,EAAoBJ,GAAUG,EAAQA,EAAOD,QAASH,GAG/CI,EAAOD,OACf,CAGAH,EAAoB1yC,EAAI+yC,EhDzBpBriD,EAAW,GACfgiD,EAAoBM,EAAI,CAACp4C,EAAQq4C,EAAUC,EAAIC,KAC9C,IAAGF,EAAH,CAMA,IAAIG,EAAeC,IACnB,IAAS7/C,EAAI,EAAGA,EAAI9C,EAAS+C,OAAQD,IAAK,CAGzC,IAFA,IAAKy/C,EAAUC,EAAIC,GAAYziD,EAAS8C,GACpC8/C,GAAY,EACPn8C,EAAI,EAAGA,EAAI87C,EAASx/C,OAAQ0D,MACpB,EAAXg8C,GAAsBC,GAAgBD,IAAazhD,OAAOgF,KAAKg8C,EAAoBM,GAAGO,OAAOphD,GAASugD,EAAoBM,EAAE7gD,GAAK8gD,EAAS97C,MAC9I87C,EAAS/4C,OAAO/C,IAAK,IAErBm8C,GAAY,EACTH,EAAWC,IAAcA,EAAeD,IAG7C,GAAGG,EAAW,CACb5iD,EAASwJ,OAAO1G,IAAK,GACrB,IAAI+qB,EAAI20B,SACEjgD,IAANsrB,IAAiB3jB,EAAS2jB,EAC/B,CACD,CACA,OAAO3jB,CAnBP,CAJCu4C,EAAWA,GAAY,EACvB,IAAI,IAAI3/C,EAAI9C,EAAS+C,OAAQD,EAAI,GAAK9C,EAAS8C,EAAI,GAAG,GAAK2/C,EAAU3/C,IAAK9C,EAAS8C,GAAK9C,EAAS8C,EAAI,GACrG9C,EAAS8C,GAAK,CAACy/C,EAAUC,EAAIC,EAqBjB,EiDzBdT,EAAoB16C,EAAK86C,IACxB,IAAI73C,EAAS63C,GAAUA,EAAOU,WAC7B,IAAOV,EAAiB,QACxB,IAAM,EAEP,OADAJ,EAAoB9zC,EAAE3D,EAAQ,CAAEw4C,EAAGx4C,IAC5BA,CAAM,EhDNVrK,EAAWc,OAAOC,eAAkBkG,GAASnG,OAAOC,eAAekG,GAASA,GAASA,EAAa,UAQtG66C,EAAoBvoC,EAAI,SAAS/X,EAAOygB,GAEvC,GADU,EAAPA,IAAUzgB,EAAQH,KAAKG,IAChB,EAAPygB,EAAU,OAAOzgB,EACpB,GAAoB,iBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAPygB,GAAazgB,EAAMohD,WAAY,OAAOphD,EAC1C,GAAW,GAAPygB,GAAoC,mBAAfzgB,EAAMqsB,KAAqB,OAAOrsB,CAC5D,CACA,IAAIshD,EAAKhiD,OAAOid,OAAO,MACvB+jC,EAAoBn0B,EAAEm1B,GACtB,IAAIC,EAAM,CAAC,EACXhjD,EAAiBA,GAAkB,CAAC,KAAMC,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAIsB,EAAiB,EAAP2gB,GAAYzgB,EAAyB,iBAAXF,KAAyBvB,EAAeqJ,QAAQ9H,GAAUA,EAAUtB,EAASsB,GACxHR,OAAOkiD,oBAAoB1hD,GAAS2hD,SAAS1hD,GAASwhD,EAAIxhD,GAAO,IAAOC,EAAMD,KAI/E,OAFAwhD,EAAa,QAAI,IAAM,EACvBjB,EAAoB9zC,EAAE80C,EAAIC,GACnBD,CACR,EiDxBAhB,EAAoB9zC,EAAI,CAACi0C,EAASiB,KACjC,IAAI,IAAI3hD,KAAO2hD,EACXpB,EAAoBr+C,EAAEy/C,EAAY3hD,KAASugD,EAAoBr+C,EAAEw+C,EAAS1gD,IAC5ET,OAAOqiD,eAAelB,EAAS1gD,EAAK,CAAE6hD,YAAY,EAAM3gD,IAAKygD,EAAW3hD,IAE1E,ECNDugD,EAAoBr+C,EAAI,CAACwD,EAAKo8C,IAAUviD,OAAOwlC,UAAUgd,eAAeC,KAAKt8C,EAAKo8C,GCClFvB,EAAoBn0B,EAAKs0B,IACH,oBAAXjgD,QAA0BA,OAAOqyB,aAC1CvzB,OAAOqiD,eAAelB,EAASjgD,OAAOqyB,YAAa,CAAE7yB,MAAO,WAE7DV,OAAOqiD,eAAelB,EAAS,aAAc,CAAEzgD,OAAO,GAAO,E,MCA9D,IAAIgiD,EAAkB,CACrB,IAAK,GAaN1B,EAAoBM,EAAE77C,EAAKk9C,GAA0C,IAA7BD,EAAgBC,GAGxD,IAAIC,EAAuB,CAACC,EAA4Bh3B,KACvD,IAGIo1B,EAAU0B,GAHTpB,EAAUuB,EAAaC,GAAWl3B,EAGhB/pB,EAAI,EAC3B,GAAGy/C,EAASjsC,MAAMhR,GAAgC,IAAxBo+C,EAAgBp+C,KAAa,CACtD,IAAI28C,KAAY6B,EACZ9B,EAAoBr+C,EAAEmgD,EAAa7B,KACrCD,EAAoB1yC,EAAE2yC,GAAY6B,EAAY7B,IAGhD,GAAG8B,EAAS,IAAI75C,EAAS65C,EAAQ/B,EAClC,CAEA,IADG6B,GAA4BA,EAA2Bh3B,GACrD/pB,EAAIy/C,EAASx/C,OAAQD,IACzB6gD,EAAUpB,EAASz/C,GAChBk/C,EAAoBr+C,EAAE+/C,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAO3B,EAAoBM,EAAEp4C,EAAO,EAGjC85C,EAAqB57C,KAAmB,aAAIA,KAAmB,cAAK,GACxE47C,EAAmBb,QAAQS,EAAqBK,KAAK,KAAM,IAC3DD,EAAmBlxC,KAAO8wC,EAAqBK,KAAK,KAAMD,EAAmBlxC,KAAKmxC,KAAKD,G,KC7CvF,IAAIE,EAAsBlC,EAAoBM,OAAE//C,EAAW,CAAC,KAAK,IAAOy/C,EAAoB,QAC5FkC,EAAsBlC,EAAoBM,EAAE4B,E","sources":["webpack:///webpack/runtime/chunk loaded","webpack:///webpack/runtime/create fake namespace object","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/Util.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/Types.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/Date.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/Numeric.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/RegExp.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/String.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/Option.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/Global.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/Native.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/Array.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/List.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/Seq.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/FSharp.Core.js","webpack:///./src/Client/Account/.build/fable_modules/Feliz.2.7.0/Interop.fs.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/Int32.js","webpack:///./src/Client/Account/.build/fable_modules/Feliz.2.7.0/React.fs.js","webpack:///./src/Client/Account/.build/fable_modules/Feliz.2.7.0/ReactInterop.js","webpack:///./src/Client/Account/.build/fable_modules/Feliz.Router.4.0.0/Router.fs.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/Reflection.js","webpack:///./src/Client/Account/.build/Types.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/MapUtil.js","webpack:///./src/Client/Account/.build/fable_modules/Fable.Fetch.2.1.0/Fetch.fs.js","webpack:///./src/Client/Account/.build/fable_modules/Thoth.Fetch.3.0.1/Fetch.fs.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/Result.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/TimeSpan.js","webpack:///./src/Client/Account/.build/fable_modules/Fable.Promise.2.0.0/Promise.fs.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/Map.js","webpack:///./src/Client/Account/.build/fable_modules/Thoth.Json.6.0.0/Types.fs.js","webpack:///./src/Client/Account/.build/fable_modules/Thoth.Json.6.0.0/Encode.fs.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/Guid.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/DateOffset.js","webpack:///./src/Client/Account/.build/fable_modules/fable-library-js.4.17.0/Set.js","webpack:///./src/Client/Account/.build/fable_modules/Thoth.Json.6.0.0/Decode.fs.js","webpack:///./src/Client/Account/.build/Feliz.MaterialUI/Mui.js","webpack:///./src/Client/Account/.build/Feliz.MaterialUI/Flatten.js","webpack:///./src/Client/Account/.build/ViewHelpers.js","webpack:///./src/Client/Account/.build/Feliz.MaterialUI/Styles.js","webpack:///./src/Client/Account/.build/Recaptcha.js","webpack:///./src/Client/Account/.build/PasswordRecovery.js","webpack:///./src/Client/Account/.build/Login.js","webpack:///./src/Client/Account/.build/Register.js","webpack:///./src/Client/Account/.build/PasswordForm.js","webpack:///./src/Client/Account/.build/Sessions.js","webpack:///./src/Client/Account/.build/UserAccount.js","webpack:///./src/Client/Account/.build/Feedback.js","webpack:///./src/Client/Account/.build/Account.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// tslint:disable:ban-types\nexport function isArrayLike(x) {\n return Array.isArray(x) || ArrayBuffer.isView(x);\n}\nexport function isIterable(x) {\n return x != null && typeof x === \"object\" && Symbol.iterator in x;\n}\nexport function isEnumerable(x) {\n return x != null && typeof x.GetEnumerator === \"function\";\n}\nexport function isComparer(x) {\n return x != null && typeof x.Compare === \"function\";\n}\nexport function isComparable(x) {\n return x != null && typeof x.CompareTo === \"function\";\n}\nexport function isEquatable(x) {\n return x != null && typeof x.Equals === \"function\";\n}\nexport function isHashable(x) {\n return x != null && typeof x.GetHashCode === \"function\";\n}\nexport function isDisposable(x) {\n return x != null && typeof x.Dispose === \"function\";\n}\nexport function disposeSafe(x) {\n if (isDisposable(x)) {\n x.Dispose();\n }\n}\nexport function defaultOf() {\n return null;\n}\nexport function sameConstructor(x, y) {\n return Object.getPrototypeOf(x)?.constructor === Object.getPrototypeOf(y)?.constructor;\n}\nexport class Enumerable {\n constructor(en) {\n this.en = en;\n }\n GetEnumerator() { return this.en; }\n \"System.Collections.IEnumerable.GetEnumerator\"() { return this.en; }\n [Symbol.iterator]() {\n return this;\n }\n next() {\n const hasNext = this.en[\"System.Collections.IEnumerator.MoveNext\"]();\n const current = hasNext ? this.en[\"System.Collections.Generic.IEnumerator`1.get_Current\"]() : undefined;\n return { done: !hasNext, value: current };\n }\n}\nexport class Enumerator {\n constructor(iter) {\n this.iter = iter;\n this.current = defaultOf();\n }\n [\"System.Collections.Generic.IEnumerator`1.get_Current\"]() {\n return this.current;\n }\n [\"System.Collections.IEnumerator.get_Current\"]() {\n return this.current;\n }\n [\"System.Collections.IEnumerator.MoveNext\"]() {\n const cur = this.iter.next();\n this.current = cur.value;\n return !cur.done;\n }\n [\"System.Collections.IEnumerator.Reset\"]() {\n throw new Error(\"JS iterators cannot be reset\");\n }\n Dispose() {\n return;\n }\n}\nexport function toEnumerable(e) {\n if (isEnumerable(e)) {\n return e;\n }\n else {\n return new Enumerable(new Enumerator(e[Symbol.iterator]()));\n }\n}\nexport function getEnumerator(e) {\n if (isEnumerable(e)) {\n return e.GetEnumerator();\n }\n else {\n return new Enumerator(e[Symbol.iterator]());\n }\n}\nexport function toIterator(en) {\n return {\n next() {\n const hasNext = en[\"System.Collections.IEnumerator.MoveNext\"]();\n const current = hasNext ? en[\"System.Collections.Generic.IEnumerator`1.get_Current\"]() : undefined;\n return { done: !hasNext, value: current };\n },\n };\n}\nexport function enumerableToIterator(e) {\n return toIterator(toEnumerable(e).GetEnumerator());\n}\nexport class Comparer {\n constructor(f) {\n this.Compare = f || compare;\n }\n}\nexport function comparerFromEqualityComparer(comparer) {\n // Sometimes IEqualityComparer also implements IComparer\n if (isComparer(comparer)) {\n return new Comparer(comparer.Compare);\n }\n else {\n return new Comparer((x, y) => {\n const xhash = comparer.GetHashCode(x);\n const yhash = comparer.GetHashCode(y);\n if (xhash === yhash) {\n return comparer.Equals(x, y) ? 0 : -1;\n }\n else {\n return xhash < yhash ? -1 : 1;\n }\n });\n }\n}\nexport function assertEqual(actual, expected, msg) {\n if (!equals(actual, expected)) {\n throw Object.assign(new Error(msg || `Expected: ${expected} - Actual: ${actual}`), {\n actual,\n expected,\n });\n }\n}\nexport function assertNotEqual(actual, expected, msg) {\n if (equals(actual, expected)) {\n throw Object.assign(new Error(msg || `Expected: ${expected} - Actual: ${actual}`), {\n actual,\n expected,\n });\n }\n}\nexport class Lazy {\n constructor(factory) {\n this.factory = factory;\n this.isValueCreated = false;\n }\n get Value() {\n if (!this.isValueCreated) {\n this.createdValue = this.factory();\n this.isValueCreated = true;\n }\n return this.createdValue;\n }\n get IsValueCreated() {\n return this.isValueCreated;\n }\n}\nexport function lazyFromValue(v) {\n return new Lazy(() => v);\n}\nexport function padWithZeros(i, length) {\n return i.toString(10).padStart(length, \"0\");\n}\nexport function padLeftAndRightWithZeros(i, lengthLeft, lengthRight) {\n return i.toString(10).padStart(lengthLeft, \"0\").padEnd(lengthRight, \"0\");\n}\nexport function dateOffset(date) {\n const date1 = date;\n return typeof date1.offset === \"number\"\n ? date1.offset\n : (date.kind === 1 /* DateKind.UTC */\n ? 0 : date.getTimezoneOffset() * -60000);\n}\nexport function int16ToString(i, radix) {\n i = i < 0 && radix != null && radix !== 10 ? 0xFFFF + i + 1 : i;\n return i.toString(radix);\n}\nexport function int32ToString(i, radix) {\n i = i < 0 && radix != null && radix !== 10 ? 0xFFFFFFFF + i + 1 : i;\n return i.toString(radix);\n}\nexport function int64ToString(i, radix) {\n i = i < 0 && radix != null && radix !== 10 ? 0xffffffffffffffffn + i + 1n : i;\n return i.toString(radix);\n}\nexport class ObjectRef {\n static id(o) {\n if (!ObjectRef.idMap.has(o)) {\n ObjectRef.idMap.set(o, ++ObjectRef.count);\n }\n return ObjectRef.idMap.get(o);\n }\n}\nObjectRef.idMap = new WeakMap();\nObjectRef.count = 0;\nexport function stringHash(s) {\n let i = 0;\n let h = 5381;\n const len = s.length;\n while (i < len) {\n h = (h * 33) ^ s.charCodeAt(i++);\n }\n return h;\n}\nexport function numberHash(x) {\n return x * 2654435761 | 0;\n}\nexport function bigintHash(x) {\n return stringHash(x.toString(32));\n}\n// From https://stackoverflow.com/a/37449594\nexport function combineHashCodes(hashes) {\n let h1 = 0;\n const len = hashes.length;\n for (let i = 0; i < len; i++) {\n const h2 = hashes[i];\n h1 = ((h1 << 5) + h1) ^ h2;\n }\n return h1;\n}\nexport function physicalHash(x) {\n if (x == null) {\n return 0;\n }\n switch (typeof x) {\n case \"boolean\":\n return x ? 1 : 0;\n case \"number\":\n return numberHash(x);\n case \"bigint\":\n return bigintHash(x);\n case \"string\":\n return stringHash(x);\n default:\n return numberHash(ObjectRef.id(x));\n }\n}\nexport function identityHash(x) {\n if (isHashable(x)) {\n return x.GetHashCode();\n }\n else {\n return physicalHash(x);\n }\n}\nexport function dateHash(x) {\n return x.getTime();\n}\nexport function arrayHash(x) {\n const len = x.length;\n const hashes = new Array(len);\n for (let i = 0; i < len; i++) {\n hashes[i] = structuralHash(x[i]);\n }\n return combineHashCodes(hashes);\n}\nexport function structuralHash(x) {\n if (x == null) {\n return 0;\n }\n switch (typeof x) {\n case \"boolean\":\n return x ? 1 : 0;\n case \"number\":\n return numberHash(x);\n case \"bigint\":\n return bigintHash(x);\n case \"string\":\n return stringHash(x);\n default: {\n if (isHashable(x)) {\n return x.GetHashCode();\n }\n else if (isArrayLike(x)) {\n return arrayHash(x);\n }\n else if (x instanceof Date) {\n return dateHash(x);\n }\n else if (Object.getPrototypeOf(x)?.constructor === Object) {\n // TODO: check call-stack to prevent cyclic objects?\n const hashes = Object.values(x).map((v) => structuralHash(v));\n return combineHashCodes(hashes);\n }\n else {\n // Classes don't implement GetHashCode by default, but must use identity hashing\n return numberHash(ObjectRef.id(x));\n // return stringHash(String(x));\n }\n }\n }\n}\n// Intended for custom numeric types, like long or decimal\nexport function fastStructuralHash(x) {\n return stringHash(String(x));\n}\n// Intended for declared types that may or may not implement GetHashCode\nexport function safeHash(x) {\n // return x == null ? 0 : isHashable(x) ? x.GetHashCode() : numberHash(ObjectRef.id(x));\n return identityHash(x);\n}\nexport function equalArraysWith(x, y, eq) {\n if (x == null) {\n return y == null;\n }\n if (y == null) {\n return false;\n }\n if (x.length !== y.length) {\n return false;\n }\n for (let i = 0; i < x.length; i++) {\n if (!eq(x[i], y[i])) {\n return false;\n }\n }\n return true;\n}\nexport function equalArrays(x, y) {\n return equalArraysWith(x, y, equals);\n}\nfunction equalObjects(x, y) {\n const xKeys = Object.keys(x);\n const yKeys = Object.keys(y);\n if (xKeys.length !== yKeys.length) {\n return false;\n }\n xKeys.sort();\n yKeys.sort();\n for (let i = 0; i < xKeys.length; i++) {\n if (xKeys[i] !== yKeys[i] || !equals(x[xKeys[i]], y[yKeys[i]])) {\n return false;\n }\n }\n return true;\n}\nexport function physicalEquality(x, y) {\n return x === y;\n}\nexport function equals(x, y) {\n if (x === y) {\n return true;\n }\n else if (x == null) {\n return y == null;\n }\n else if (y == null) {\n return false;\n }\n else if (isEquatable(x)) {\n return x.Equals(y);\n }\n else if (isArrayLike(x)) {\n return isArrayLike(y) && equalArrays(x, y);\n }\n else if (typeof x !== \"object\") {\n return false;\n }\n else if (x instanceof Date) {\n return (y instanceof Date) && compareDates(x, y) === 0;\n }\n else {\n return Object.getPrototypeOf(x)?.constructor === Object && equalObjects(x, y);\n }\n}\nexport function compareDates(x, y) {\n let xtime;\n let ytime;\n // DateTimeOffset and DateTime deals with equality differently.\n if (\"offset\" in x && \"offset\" in y) {\n xtime = x.getTime();\n ytime = y.getTime();\n }\n else {\n xtime = x.getTime() + dateOffset(x);\n ytime = y.getTime() + dateOffset(y);\n }\n return xtime === ytime ? 0 : (xtime < ytime ? -1 : 1);\n}\nexport function comparePrimitives(x, y) {\n return x === y ? 0 : (x < y ? -1 : 1);\n}\nexport function compareArraysWith(x, y, comp) {\n if (x == null) {\n return y == null ? 0 : 1;\n }\n if (y == null) {\n return -1;\n }\n if (x.length !== y.length) {\n return x.length < y.length ? -1 : 1;\n }\n for (let i = 0, j = 0; i < x.length; i++) {\n j = comp(x[i], y[i]);\n if (j !== 0) {\n return j;\n }\n }\n return 0;\n}\nexport function compareArrays(x, y) {\n return compareArraysWith(x, y, compare);\n}\nfunction compareObjects(x, y) {\n const xKeys = Object.keys(x);\n const yKeys = Object.keys(y);\n if (xKeys.length !== yKeys.length) {\n return xKeys.length < yKeys.length ? -1 : 1;\n }\n xKeys.sort();\n yKeys.sort();\n for (let i = 0, j = 0; i < xKeys.length; i++) {\n const key = xKeys[i];\n if (key !== yKeys[i]) {\n return key < yKeys[i] ? -1 : 1;\n }\n else {\n j = compare(x[key], y[key]);\n if (j !== 0) {\n return j;\n }\n }\n }\n return 0;\n}\nexport function compare(x, y) {\n if (x === y) {\n return 0;\n }\n else if (x == null) {\n return y == null ? 0 : -1;\n }\n else if (y == null) {\n return 1;\n }\n else if (isComparable(x)) {\n return x.CompareTo(y);\n }\n else if (isArrayLike(x)) {\n return isArrayLike(y) ? compareArrays(x, y) : -1;\n }\n else if (typeof x !== \"object\") {\n return x < y ? -1 : 1;\n }\n else if (x instanceof Date) {\n return y instanceof Date ? compareDates(x, y) : -1;\n }\n else {\n return Object.getPrototypeOf(x)?.constructor === Object ? compareObjects(x, y) : -1;\n }\n}\nexport function min(comparer, x, y) {\n return comparer(x, y) < 0 ? x : y;\n}\nexport function max(comparer, x, y) {\n return comparer(x, y) > 0 ? x : y;\n}\nexport function clamp(comparer, value, min, max) {\n return (comparer(value, min) < 0) ? min : (comparer(value, max) > 0) ? max : value;\n}\nexport function createAtom(value) {\n let atom = value;\n return (...args) => {\n if (args.length === 0) {\n return atom;\n }\n else {\n atom = args[0];\n }\n };\n}\nexport function createObj(fields) {\n const obj = {};\n for (const kv of fields) {\n obj[kv[0]] = kv[1];\n }\n return obj;\n}\nexport function jsOptions(mutator) {\n const opts = {};\n mutator(opts);\n return opts;\n}\nexport function round(value, digits = 0) {\n const m = Math.pow(10, digits);\n const n = +(digits ? value * m : value).toFixed(8);\n const i = Math.floor(n);\n const f = n - i;\n const e = 1e-8;\n const r = (f > 0.5 - e && f < 0.5 + e) ? ((i % 2 === 0) ? i : i + 1) : Math.round(n);\n return digits ? r / m : r;\n}\nexport function sign(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n}\nexport function unescapeDataString(s) {\n // https://stackoverflow.com/a/4458580/524236\n return decodeURIComponent((s).replace(/\\+/g, \"%20\"));\n}\nexport function escapeDataString(s) {\n return encodeURIComponent(s).replace(/!/g, \"%21\")\n .replace(/'/g, \"%27\")\n .replace(/\\(/g, \"%28\")\n .replace(/\\)/g, \"%29\")\n .replace(/\\*/g, \"%2A\");\n}\nexport function escapeUriString(s) {\n return encodeURI(s);\n}\n// ICollection.Clear and Count members can be called on Arrays\n// or Dictionaries so we need a runtime check (see #1120)\nexport function count(col) {\n if (isArrayLike(col)) {\n return col.length;\n }\n else {\n let count = 0;\n for (const _ of col) {\n count++;\n }\n return count;\n }\n}\nexport function clear(col) {\n if (isArrayLike(col)) {\n col.splice(0);\n }\n else {\n col.clear();\n }\n}\nconst curried = new WeakMap();\nexport function uncurry2(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2) => f(a1)(a2);\n curried.set(f2, f);\n return f2;\n}\nexport function curry2(f) {\n return curried.get(f) ?? ((a1) => (a2) => f(a1, a2));\n}\nexport function uncurry3(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3) => f(a1)(a2)(a3);\n curried.set(f2, f);\n return f2;\n}\nexport function curry3(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => f(a1, a2, a3));\n}\nexport function uncurry4(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4) => f(a1)(a2)(a3)(a4);\n curried.set(f2, f);\n return f2;\n}\nexport function curry4(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => f(a1, a2, a3, a4));\n}\nexport function uncurry5(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5) => f(a1)(a2)(a3)(a4)(a5);\n curried.set(f2, f);\n return f2;\n}\nexport function curry5(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => f(a1, a2, a3, a4, a5));\n}\nexport function uncurry6(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6) => f(a1)(a2)(a3)(a4)(a5)(a6);\n curried.set(f2, f);\n return f2;\n}\nexport function curry6(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => f(a1, a2, a3, a4, a5, a6));\n}\nexport function uncurry7(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7);\n curried.set(f2, f);\n return f2;\n}\nexport function curry7(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => f(a1, a2, a3, a4, a5, a6, a7));\n}\nexport function uncurry8(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8);\n curried.set(f2, f);\n return f2;\n}\nexport function curry8(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => f(a1, a2, a3, a4, a5, a6, a7, a8));\n}\nexport function uncurry9(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9);\n curried.set(f2, f);\n return f2;\n}\nexport function curry9(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9));\n}\nexport function uncurry10(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10);\n curried.set(f2, f);\n return f2;\n}\nexport function curry10(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10));\n}\nexport function uncurry11(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11);\n curried.set(f2, f);\n return f2;\n}\nexport function curry11(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11));\n}\nexport function uncurry12(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12);\n curried.set(f2, f);\n return f2;\n}\nexport function curry12(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12));\n}\nexport function uncurry13(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13);\n curried.set(f2, f);\n return f2;\n}\nexport function curry13(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13));\n}\nexport function uncurry14(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14);\n curried.set(f2, f);\n return f2;\n}\nexport function curry14(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14));\n}\nexport function uncurry15(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15);\n curried.set(f2, f);\n return f2;\n}\nexport function curry15(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => (a15) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15));\n}\nexport function uncurry16(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16);\n curried.set(f2, f);\n return f2;\n}\nexport function curry16(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => (a15) => (a16) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16));\n}\nexport function uncurry17(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16)(a17);\n curried.set(f2, f);\n return f2;\n}\nexport function curry17(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => (a15) => (a16) => (a17) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17));\n}\nexport function uncurry18(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16)(a17)(a18);\n curried.set(f2, f);\n return f2;\n}\nexport function curry18(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => (a15) => (a16) => (a17) => (a18) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18));\n}\nexport function uncurry19(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16)(a17)(a18)(a19);\n curried.set(f2, f);\n return f2;\n}\nexport function curry19(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => (a15) => (a16) => (a17) => (a18) => (a19) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19));\n}\nexport function uncurry20(f) {\n if (f == null) {\n return null;\n }\n const f2 = (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) => f(a1)(a2)(a3)(a4)(a5)(a6)(a7)(a8)(a9)(a10)(a11)(a12)(a13)(a14)(a15)(a16)(a17)(a18)(a19)(a20);\n curried.set(f2, f);\n return f2;\n}\nexport function curry20(f) {\n return curried.get(f)\n ?? ((a1) => (a2) => (a3) => (a4) => (a5) => (a6) => (a7) => (a8) => (a9) => (a10) => (a11) => (a12) => (a13) => (a14) => (a15) => (a16) => (a17) => (a18) => (a19) => (a20) => f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20));\n}\n// More performant method to copy arrays, see #2352\nexport function copyToArray(source, sourceIndex, target, targetIndex, count) {\n if (ArrayBuffer.isView(source) && ArrayBuffer.isView(target)) {\n target.set(source.subarray(sourceIndex, sourceIndex + count), targetIndex);\n }\n else {\n for (let i = 0; i < count; ++i) {\n target[targetIndex + i] = source[sourceIndex + i];\n }\n }\n}\n","import { combineHashCodes, compare, compareArrays, equalArrays, equals, sameConstructor, numberHash, structuralHash } from \"./Util.js\";\nexport function seqToString(self) {\n let count = 0;\n let str = \"[\";\n for (const x of self) {\n if (count === 0) {\n str += toString(x);\n }\n else if (count === 100) {\n str += \"; ...\";\n break;\n }\n else {\n str += \"; \" + toString(x);\n }\n count++;\n }\n return str + \"]\";\n}\nexport function toString(x, callStack = 0) {\n if (x != null && typeof x === \"object\") {\n if (typeof x.toString === \"function\") {\n return x.toString();\n }\n else if (Symbol.iterator in x) {\n return seqToString(x);\n }\n else { // TODO: Date?\n const cons = Object.getPrototypeOf(x)?.constructor;\n return cons === Object && callStack < 10\n // Same format as recordToString\n ? \"{ \" + Object.entries(x).map(([k, v]) => k + \" = \" + toString(v, callStack + 1)).join(\"\\n \") + \" }\"\n : cons?.name ?? \"\";\n }\n }\n return String(x);\n}\nexport function unionToString(name, fields) {\n if (fields.length === 0) {\n return name;\n }\n else {\n let fieldStr;\n let withParens = true;\n if (fields.length === 1) {\n fieldStr = toString(fields[0]);\n withParens = fieldStr.indexOf(\" \") >= 0;\n }\n else {\n fieldStr = fields.map((x) => toString(x)).join(\", \");\n }\n return name + (withParens ? \" (\" : \" \") + fieldStr + (withParens ? \")\" : \"\");\n }\n}\nexport class Union {\n get name() {\n return this.cases()[this.tag];\n }\n toJSON() {\n return this.fields.length === 0 ? this.name : [this.name].concat(this.fields);\n }\n toString() {\n return unionToString(this.name, this.fields);\n }\n GetHashCode() {\n const hashes = this.fields.map((x) => structuralHash(x));\n hashes.splice(0, 0, numberHash(this.tag));\n return combineHashCodes(hashes);\n }\n Equals(other) {\n if (this === other) {\n return true;\n }\n else if (!sameConstructor(this, other)) {\n return false;\n }\n else if (this.tag === other.tag) {\n return equalArrays(this.fields, other.fields);\n }\n else {\n return false;\n }\n }\n CompareTo(other) {\n if (this === other) {\n return 0;\n }\n else if (!sameConstructor(this, other)) {\n return -1;\n }\n else if (this.tag === other.tag) {\n return compareArrays(this.fields, other.fields);\n }\n else {\n return this.tag < other.tag ? -1 : 1;\n }\n }\n}\nfunction recordToJSON(self) {\n const o = {};\n const keys = Object.keys(self);\n for (let i = 0; i < keys.length; i++) {\n o[keys[i]] = self[keys[i]];\n }\n return o;\n}\nfunction recordToString(self) {\n return \"{ \" + Object.entries(self).map(([k, v]) => k + \" = \" + toString(v)).join(\"\\n \") + \" }\";\n}\nfunction recordGetHashCode(self) {\n const hashes = Object.values(self).map((v) => structuralHash(v));\n return combineHashCodes(hashes);\n}\nfunction recordEquals(self, other) {\n if (self === other) {\n return true;\n }\n else if (!sameConstructor(self, other)) {\n return false;\n }\n else {\n const thisNames = Object.keys(self);\n for (let i = 0; i < thisNames.length; i++) {\n if (!equals(self[thisNames[i]], other[thisNames[i]])) {\n return false;\n }\n }\n return true;\n }\n}\nfunction recordCompareTo(self, other) {\n if (self === other) {\n return 0;\n }\n else if (!sameConstructor(self, other)) {\n return -1;\n }\n else {\n const thisNames = Object.keys(self);\n for (let i = 0; i < thisNames.length; i++) {\n const result = compare(self[thisNames[i]], other[thisNames[i]]);\n if (result !== 0) {\n return result;\n }\n }\n return 0;\n }\n}\nexport class Record {\n toJSON() { return recordToJSON(this); }\n toString() { return recordToString(this); }\n GetHashCode() { return recordGetHashCode(this); }\n Equals(other) { return recordEquals(this, other); }\n CompareTo(other) { return recordCompareTo(this, other); }\n}\nexport class FSharpRef {\n get contents() {\n return this.getter();\n }\n set contents(v) {\n this.setter(v);\n }\n constructor(contentsOrGetter, setter) {\n if (typeof setter === \"function\") {\n this.getter = contentsOrGetter;\n this.setter = setter;\n }\n else {\n this.getter = () => contentsOrGetter;\n this.setter = (v) => { contentsOrGetter = v; };\n }\n }\n}\n// EXCEPTIONS\n// Exception is intentionally not derived from Error, for performance reasons (see #2160)\nexport class Exception {\n constructor(message) {\n this.message = message;\n }\n}\nexport function isException(x) {\n return x instanceof Exception || x instanceof Error;\n}\nexport function isPromise(x) {\n return x instanceof Promise;\n}\nexport function ensureErrorOrException(e) {\n // Exceptionally admitting promises as errors for compatibility with React.suspense (see #3298)\n return (isException(e) || isPromise(e)) ? e : new Error(String(e));\n}\nexport class FSharpException extends Exception {\n toJSON() { return recordToJSON(this); }\n toString() { return recordToString(this); }\n GetHashCode() { return recordGetHashCode(this); }\n Equals(other) { return recordEquals(this, other); }\n CompareTo(other) { return recordCompareTo(this, other); }\n}\nexport class MatchFailureException extends FSharpException {\n constructor(arg1, arg2, arg3) {\n super();\n this.arg1 = arg1;\n this.arg2 = arg2 | 0;\n this.arg3 = arg3 | 0;\n this.message = \"The match cases were incomplete\";\n }\n}\nexport class Attribute {\n}\n","/**\n * DateTimeOffset functions.\n *\n * Note: Date instances are always DateObjects in local\n * timezone (because JS dates are all kinds of messed up).\n * A local date returns UTC epoch when `.getTime()` is called.\n *\n * Basically; invariant: date.getTime() always return UTC time.\n */\nimport { toInt64, toFloat64 } from \"./BigInt.js\";\nimport { compareDates, dateOffset, padWithZeros } from \"./Util.js\";\nconst shortDays = [\n \"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"\n];\nconst longDays = [\n \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"\n];\nconst shortMonths = [\n \"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"\n];\nconst longMonths = [\n \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\n];\nfunction parseRepeatToken(format, pos, patternChar) {\n let tokenLength = 0;\n let internalPos = pos;\n while (internalPos < format.length && format[internalPos] === patternChar) {\n internalPos++;\n tokenLength++;\n }\n return tokenLength;\n}\nfunction parseNextChar(format, pos) {\n if (pos >= format.length - 1) {\n return -1;\n }\n return format.charCodeAt(pos + 1);\n}\nfunction parseQuotedString(format, pos) {\n let beginPos = pos;\n // Get the character used to quote the string\n const quoteChar = format[pos];\n let result = \"\";\n let foundQuote = false;\n while (pos < format.length) {\n pos++;\n const currentChar = format[pos];\n if (currentChar === quoteChar) {\n foundQuote = true;\n break;\n }\n else if (currentChar === \"\\\\\") {\n if (pos < format.length) {\n pos++;\n result += format[pos];\n }\n else {\n // This means that '\\' is the last character in the string.\n throw new Error(\"Invalid string format\");\n }\n }\n else {\n result += currentChar;\n }\n }\n if (!foundQuote) {\n // We could not find the matching quote\n throw new Error(`Invalid string format could not find matching quote for ${quoteChar}`);\n }\n return [result, pos - beginPos + 1];\n}\nfunction dateToStringWithCustomFormat(date, format, utc) {\n let cursorPos = 0;\n let tokenLength = 0;\n let result = \"\";\n const localizedDate = utc ? DateTime(date.getTime(), 1 /* DateKind.UTC */) : date;\n while (cursorPos < format.length) {\n const token = format[cursorPos];\n switch (token) {\n case \"d\":\n tokenLength = parseRepeatToken(format, cursorPos, \"d\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += day(localizedDate);\n break;\n case 2:\n result += padWithZeros(day(localizedDate), 2);\n break;\n case 3:\n result += shortDays[dayOfWeek(localizedDate)];\n break;\n case 4:\n result += longDays[dayOfWeek(localizedDate)];\n break;\n default:\n break;\n }\n break;\n case \"f\":\n tokenLength = parseRepeatToken(format, cursorPos, \"f\");\n cursorPos += tokenLength;\n if (tokenLength <= 3) {\n const precision = 10 ** (3 - tokenLength);\n result += padWithZeros(Math.floor(millisecond(localizedDate) / precision), tokenLength);\n }\n else if (tokenLength <= 7) {\n // JavaScript Date only support precision to the millisecond\n // so we fill the rest of the precision with 0 as if the date didn't have\n // milliseconds provided to it.\n // This is to have the same behavior as .NET when doing:\n // DateTime(1, 2, 3, 4, 5, 6, DateTimeKind.Utc).ToString(\"fffff\") => 00000\n result += (\"\" + millisecond(localizedDate)).padEnd(tokenLength, \"0\");\n }\n break;\n case \"F\":\n tokenLength = parseRepeatToken(format, cursorPos, \"F\");\n cursorPos += tokenLength;\n if (tokenLength <= 3) {\n const precision = 10 ** (3 - tokenLength);\n const value = Math.floor(millisecond(localizedDate) / precision);\n if (value != 0) {\n result += padWithZeros(value, tokenLength);\n }\n }\n else if (tokenLength <= 7) {\n // JavaScript Date only support precision to the millisecond\n // so we can't go beyond that.\n // We also need to pad start with 0 if the value is not 0\n const value = millisecond(localizedDate);\n if (value != 0) {\n result += padWithZeros(value, 3);\n }\n }\n break;\n case \"g\":\n tokenLength = parseRepeatToken(format, cursorPos, \"g\");\n cursorPos += tokenLength;\n if (tokenLength <= 2) {\n result += \"A.D.\";\n }\n break;\n case \"h\":\n tokenLength = parseRepeatToken(format, cursorPos, \"h\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += hour(localizedDate) % 12;\n break;\n case 2:\n result += padWithZeros(hour(localizedDate) % 12, 2);\n break;\n default:\n break;\n }\n break;\n case \"H\":\n tokenLength = parseRepeatToken(format, cursorPos, \"H\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += hour(localizedDate);\n break;\n case 2:\n result += padWithZeros(hour(localizedDate), 2);\n break;\n default:\n break;\n }\n break;\n case \"K\":\n tokenLength = parseRepeatToken(format, cursorPos, \"K\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n switch (kind(localizedDate)) {\n case 1 /* DateKind.UTC */:\n result += \"Z\";\n break;\n case 2 /* DateKind.Local */:\n result += dateOffsetToString(localizedDate.getTimezoneOffset() * -60000);\n break;\n case 0 /* DateKind.Unspecified */:\n break;\n }\n break;\n default:\n break;\n }\n break;\n case \"m\":\n tokenLength = parseRepeatToken(format, cursorPos, \"m\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += minute(localizedDate);\n break;\n case 2:\n result += padWithZeros(minute(localizedDate), 2);\n break;\n default:\n break;\n }\n break;\n case \"M\":\n tokenLength = parseRepeatToken(format, cursorPos, \"M\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += month(localizedDate);\n break;\n case 2:\n result += padWithZeros(month(localizedDate), 2);\n break;\n case 3:\n result += shortMonths[month(localizedDate) - 1];\n break;\n case 4:\n result += longMonths[month(localizedDate) - 1];\n break;\n default:\n break;\n }\n break;\n case \"s\":\n tokenLength = parseRepeatToken(format, cursorPos, \"s\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += second(localizedDate);\n break;\n case 2:\n result += padWithZeros(second(localizedDate), 2);\n break;\n default:\n break;\n }\n break;\n case \"t\":\n tokenLength = parseRepeatToken(format, cursorPos, \"t\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += localizedDate.getHours() < 12 ? \"A\" : \"P\";\n break;\n case 2:\n result += localizedDate.getHours() < 12 ? \"AM\" : \"PM\";\n break;\n default:\n break;\n }\n break;\n case \"y\":\n tokenLength = parseRepeatToken(format, cursorPos, \"y\");\n cursorPos += tokenLength;\n switch (tokenLength) {\n case 1:\n result += localizedDate.getFullYear() % 100;\n break;\n case 2:\n result += padWithZeros(localizedDate.getFullYear() % 100, 2);\n break;\n case 3:\n result += padWithZeros(localizedDate.getFullYear(), 3);\n break;\n case 4:\n result += padWithZeros(localizedDate.getFullYear(), 4);\n break;\n case 5:\n result += padWithZeros(localizedDate.getFullYear(), 5);\n break;\n default:\n break;\n }\n break;\n case \"z\":\n tokenLength = parseRepeatToken(format, cursorPos, \"z\");\n cursorPos += tokenLength;\n let utcOffsetText = \"\";\n switch (kind(localizedDate)) {\n case 1 /* DateKind.UTC */:\n utcOffsetText = \"+00:00\";\n break;\n case 2 /* DateKind.Local */:\n utcOffsetText = dateOffsetToString(localizedDate.getTimezoneOffset() * -60000);\n break;\n case 0 /* DateKind.Unspecified */:\n utcOffsetText = dateOffsetToString(toLocalTime(localizedDate).getTimezoneOffset() * -60000);\n break;\n }\n const sign = utcOffsetText[0] === \"-\" ? \"-\" : \"+\";\n const hours = parseInt(utcOffsetText.substring(1, 3), 10);\n const minutes = parseInt(utcOffsetText.substring(4, 6), 10);\n switch (tokenLength) {\n case 1:\n result += `${sign}${hours}`;\n break;\n case 2:\n result += `${sign}${padWithZeros(hours, 2)}`;\n break;\n default:\n result += `${sign}${padWithZeros(hours, 2)}:${padWithZeros(minutes, 2)}`;\n break;\n }\n break;\n case \":\":\n result += \":\";\n cursorPos++;\n break;\n case \"/\":\n result += \"/\";\n cursorPos++;\n break;\n case \"'\":\n case '\"':\n const [quotedString, quotedStringLenght] = parseQuotedString(format, cursorPos);\n result += quotedString;\n cursorPos += quotedStringLenght;\n break;\n case \"%\":\n const nextChar = parseNextChar(format, cursorPos);\n if (nextChar >= 0 && nextChar !== \"%\".charCodeAt(0)) {\n cursorPos += 2;\n result += dateToStringWithCustomFormat(localizedDate, String.fromCharCode(nextChar), utc);\n }\n else {\n throw new Error(\"Invalid format string\");\n }\n break;\n case \"\\\\\":\n const nextChar2 = parseNextChar(format, cursorPos);\n if (nextChar2 >= 0) {\n cursorPos += 2;\n result += String.fromCharCode(nextChar2);\n }\n else {\n throw new Error(\"Invalid format string\");\n }\n break;\n default:\n cursorPos++;\n result += token;\n break;\n }\n }\n return result;\n}\nexport function kind(value) {\n return value.kind || 0;\n}\nexport function unixEpochMillisecondsToTicks(ms, offset) {\n return toInt64(((BigInt(ms) + 62135596800000n) + BigInt(offset)) * 10000n);\n}\nexport function ticksToUnixEpochMilliseconds(ticks) {\n return Number(((BigInt(ticks) / 10000n) - 62135596800000n));\n}\nexport function dateOffsetToString(offset) {\n const isMinus = offset < 0;\n offset = Math.abs(offset);\n const hours = ~~(offset / 3600000);\n const minutes = (offset % 3600000) / 60000;\n return (isMinus ? \"-\" : \"+\") +\n padWithZeros(hours, 2) + \":\" +\n padWithZeros(minutes, 2);\n}\nexport function dateToHalfUTCString(date, half) {\n const str = date.toISOString();\n return half === \"first\"\n ? str.substring(0, str.indexOf(\"T\"))\n : str.substring(str.indexOf(\"T\") + 1, str.length - 1);\n}\nfunction dateToISOString(d, utc) {\n if (utc) {\n return d.toISOString();\n }\n else {\n // JS Date is always local\n const printOffset = d.kind == null ? true : d.kind === 2 /* DateKind.Local */;\n return padWithZeros(d.getFullYear(), 4) + \"-\" +\n padWithZeros(d.getMonth() + 1, 2) + \"-\" +\n padWithZeros(d.getDate(), 2) + \"T\" +\n padWithZeros(d.getHours(), 2) + \":\" +\n padWithZeros(d.getMinutes(), 2) + \":\" +\n padWithZeros(d.getSeconds(), 2) + \".\" +\n padWithZeros(d.getMilliseconds(), 3) +\n (printOffset ? dateOffsetToString(d.getTimezoneOffset() * -60000) : \"\");\n }\n}\nfunction dateToISOStringWithOffset(dateWithOffset, offset) {\n const str = dateWithOffset.toISOString();\n return str.substring(0, str.length - 1) + dateOffsetToString(offset);\n}\nfunction dateToStringWithOffset(date, format) {\n const d = new Date(date.getTime() + (date.offset ?? 0));\n if (typeof format !== \"string\") {\n return d.toISOString().replace(/\\.\\d+/, \"\").replace(/[A-Z]|\\.\\d+/g, \" \") + dateOffsetToString((date.offset ?? 0));\n }\n else if (format.length === 1) {\n switch (format) {\n case \"D\":\n case \"d\": return dateToHalfUTCString(d, \"first\");\n case \"T\":\n case \"t\": return dateToHalfUTCString(d, \"second\");\n case \"O\":\n case \"o\": return dateToISOStringWithOffset(d, (date.offset ?? 0));\n default: throw new Error(\"Unrecognized Date print format\");\n }\n }\n else {\n return dateToStringWithCustomFormat(d, format, true);\n }\n}\nfunction dateToStringWithKind(date, format) {\n const utc = date.kind === 1 /* DateKind.UTC */;\n if (typeof format !== \"string\") {\n return utc ? date.toUTCString() : date.toLocaleString();\n }\n else if (format.length === 1) {\n switch (format) {\n case \"D\":\n case \"d\":\n return utc ? dateToHalfUTCString(date, \"first\") : date.toLocaleDateString();\n case \"T\":\n case \"t\":\n return utc ? dateToHalfUTCString(date, \"second\") : date.toLocaleTimeString();\n case \"O\":\n case \"o\":\n return dateToISOString(date, utc);\n default:\n throw new Error(\"Unrecognized Date print format\");\n }\n }\n else {\n return dateToStringWithCustomFormat(date, format, utc);\n }\n}\nexport function toString(date, format, _provider) {\n return date.offset != null\n ? dateToStringWithOffset(date, format)\n : dateToStringWithKind(date, format);\n}\nexport function DateTime(value, kind) {\n const d = new Date(value);\n d.kind = (kind == null ? 0 /* DateKind.Unspecified */ : kind) | 0;\n return d;\n}\nexport function fromTicks(ticks, kind) {\n kind = kind != null ? kind : 2 /* DateKind.Local */; // better default than Unspecified\n let date = DateTime(ticksToUnixEpochMilliseconds(ticks), kind);\n // Ticks are local to offset (in this case, either UTC or Local/Unknown).\n // If kind is anything but UTC, that means that the tick number was not\n // in utc, thus getTime() cannot return UTC, and needs to be shifted.\n if (kind !== 1 /* DateKind.UTC */) {\n date = DateTime(date.getTime() - dateOffset(date), kind);\n }\n return date;\n}\nexport function fromDateTimeOffset(date, kind) {\n switch (kind) {\n case 1 /* DateKind.UTC */: return DateTime(date.getTime(), 1 /* DateKind.UTC */);\n case 2 /* DateKind.Local */: return DateTime(date.getTime(), 2 /* DateKind.Local */);\n default:\n const d = DateTime(date.getTime() + (date.offset ?? 0), kind);\n return DateTime(d.getTime() - dateOffset(d), kind);\n }\n}\nexport function getTicks(date) {\n return unixEpochMillisecondsToTicks(date.getTime(), dateOffset(date));\n}\nexport function minValue() {\n // This is \"0001-01-01T00:00:00.000Z\", actual JS min value is -8640000000000000\n return DateTime(-62135596800000, 0 /* DateKind.Unspecified */);\n}\nexport function maxValue() {\n // This is \"9999-12-31T23:59:59.999Z\", actual JS max value is 8640000000000000\n return DateTime(253402300799999, 0 /* DateKind.Unspecified */);\n}\nexport function parseRaw(input) {\n function fail() {\n throw new Error(`The string is not a valid Date: ${input}`);\n }\n if (input == null || input.trim() === \"\") {\n fail();\n }\n // ISO dates without TZ are parsed as UTC. Adding time without TZ keeps them local.\n if (input.length === 10 && input[4] === \"-\" && input[7] === \"-\") {\n input += \"T00:00:00\";\n }\n let date = new Date(input);\n let offset = null;\n if (isNaN(date.getTime())) {\n // Try to check strings JS Date cannot parse (see #1045, #1422)\n // tslint:disable-next-line:max-line-length\n const m = /^\\s*(\\d+[^\\w\\s:]\\d+[^\\w\\s:]\\d+)?\\s*(\\d+:\\d+(?::\\d+(?:\\.\\d+)?)?)?\\s*([AaPp][Mm])?\\s*(Z|[+-]([01]?\\d):?([0-5]?\\d)?)?\\s*$/.exec(input);\n if (m != null) {\n let baseDate;\n let timeInSeconds = 0;\n if (m[2] != null) {\n const timeParts = m[2].split(\":\");\n const hourPart = parseInt(timeParts[0], 10);\n timeInSeconds =\n hourPart * 3600 +\n parseInt(timeParts[1] || \"0\", 10) * 60 +\n parseFloat(timeParts[2] || \"0\");\n if (m[3] != null && m[3].toUpperCase() === \"PM\" && hourPart < 12) {\n timeInSeconds += 720;\n }\n }\n if (m[4] != null) { // There's an offset, parse as UTC\n if (m[1] != null) {\n baseDate = new Date(m[1] + \" UTC\");\n }\n else {\n const d = new Date();\n baseDate = new Date(d.getUTCFullYear() + \"/\" + (d.getUTCMonth() + 1) + \"/\" + d.getUTCDate());\n }\n if (m[4] === \"Z\") {\n offset = \"Z\";\n }\n else {\n let offsetInMinutes = parseInt(m[5], 10) * 60 + parseInt(m[6] || \"0\", 10);\n if (m[4][0] === \"-\") {\n offsetInMinutes *= -1;\n }\n offset = offsetInMinutes;\n timeInSeconds -= offsetInMinutes * 60;\n }\n }\n else {\n if (m[1] != null) {\n baseDate = new Date(m[1]);\n }\n else {\n const d = new Date();\n baseDate = new Date(d.getFullYear() + \"/\" + (d.getMonth() + 1) + \"/\" + d.getDate());\n }\n }\n date = new Date(baseDate.getTime() + timeInSeconds * 1000);\n // correct for daylight savings time\n date = new Date(date.getTime() + (date.getTimezoneOffset() - baseDate.getTimezoneOffset()) * 60000);\n }\n else {\n fail();\n }\n // Check again the date is valid after transformations, see #2229\n if (isNaN(date.getTime())) {\n fail();\n }\n }\n return [date, offset];\n}\nexport function parse(str, detectUTC = false) {\n const [date, offset] = parseRaw(str);\n // .NET always parses DateTime as Local if there's offset info (even \"Z\")\n // Newtonsoft.Json uses UTC if the offset is \"Z\"\n const kind = offset != null\n ? (detectUTC && offset === \"Z\" ? 1 /* DateKind.UTC */ : 2 /* DateKind.Local */)\n : 0 /* DateKind.Unspecified */;\n return DateTime(date.getTime(), kind);\n}\nexport function tryParse(v, defValue) {\n try {\n defValue.contents = parse(v);\n return true;\n }\n catch (_err) {\n return false;\n }\n}\nexport function create(year, month, day, h = 0, m = 0, s = 0, ms = 0, kind) {\n const date = kind === 1 /* DateKind.UTC */\n ? new Date(Date.UTC(year, month - 1, day, h, m, s, ms))\n : new Date(year, month - 1, day, h, m, s, ms);\n if (year <= 99) {\n if (kind === 1 /* DateKind.UTC */) {\n date.setUTCFullYear(year, month - 1, day);\n }\n else {\n date.setFullYear(year, month - 1, day);\n }\n }\n const dateValue = date.getTime();\n if (isNaN(dateValue)) {\n throw new Error(\"The parameters describe an unrepresentable Date.\");\n }\n return DateTime(dateValue, kind);\n}\nexport function now() {\n return DateTime(Date.now(), 2 /* DateKind.Local */);\n}\nexport function utcNow() {\n return DateTime(Date.now(), 1 /* DateKind.UTC */);\n}\nexport function today() {\n return date(now());\n}\nexport function isLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\nexport function daysInMonth(year, month) {\n return month === 2\n ? (isLeapYear(year) ? 29 : 28)\n : (month >= 8 ? (month % 2 === 0 ? 31 : 30) : (month % 2 === 0 ? 30 : 31));\n}\nexport function toUniversalTime(date) {\n return date.kind === 1 /* DateKind.UTC */ ? date : DateTime(date.getTime(), 1 /* DateKind.UTC */);\n}\nexport function toLocalTime(date) {\n return date.kind === 2 /* DateKind.Local */ ? date : DateTime(date.getTime(), 2 /* DateKind.Local */);\n}\nexport function specifyKind(d, kind) {\n return create(year(d), month(d), day(d), hour(d), minute(d), second(d), millisecond(d), kind);\n}\nexport function timeOfDay(d) {\n return hour(d) * 3600000\n + minute(d) * 60000\n + second(d) * 1000\n + millisecond(d);\n}\nexport function date(d) {\n return create(year(d), month(d), day(d), 0, 0, 0, 0, d.kind);\n}\nexport function day(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCDate() : d.getDate();\n}\nexport function hour(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCHours() : d.getHours();\n}\nexport function millisecond(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCMilliseconds() : d.getMilliseconds();\n}\nexport function minute(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCMinutes() : d.getMinutes();\n}\nexport function month(d) {\n return (d.kind === 1 /* DateKind.UTC */ ? d.getUTCMonth() : d.getMonth()) + 1;\n}\nexport function second(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCSeconds() : d.getSeconds();\n}\nexport function year(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCFullYear() : d.getFullYear();\n}\nexport function dayOfWeek(d) {\n return d.kind === 1 /* DateKind.UTC */ ? d.getUTCDay() : d.getDay();\n}\nexport function dayOfYear(d) {\n const _year = year(d);\n const _month = month(d);\n let _day = day(d);\n for (let i = 1; i < _month; i++) {\n _day += daysInMonth(_year, i);\n }\n return _day;\n}\nexport function add(d, ts) {\n const newDate = DateTime(d.getTime() + ts, d.kind);\n if (d.kind !== 1 /* DateKind.UTC */) {\n const oldTzOffset = d.getTimezoneOffset();\n const newTzOffset = newDate.getTimezoneOffset();\n return oldTzOffset !== newTzOffset\n ? DateTime(newDate.getTime() + (newTzOffset - oldTzOffset) * 60000, d.kind)\n : newDate;\n }\n else {\n return newDate;\n }\n}\nexport function addDays(d, v) {\n return add(d, v * 86400000);\n}\nexport function addHours(d, v) {\n return add(d, v * 3600000);\n}\nexport function addMinutes(d, v) {\n return add(d, v * 60000);\n}\nexport function addSeconds(d, v) {\n return add(d, v * 1000);\n}\nexport function addMilliseconds(d, v) {\n return add(d, v);\n}\nexport function addTicks(d, v) {\n return add(d, toFloat64(v / 10000n));\n}\nexport function addYears(d, v) {\n const newMonth = month(d);\n const newYear = year(d) + v;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, day(d));\n return create(newYear, newMonth, newDay, hour(d), minute(d), second(d), millisecond(d), d.kind);\n}\nexport function addMonths(d, v) {\n let newMonth = month(d) + v;\n let newMonth_ = 0;\n let yearOffset = 0;\n if (newMonth > 12) {\n newMonth_ = newMonth % 12;\n yearOffset = Math.floor(newMonth / 12);\n newMonth = newMonth_;\n }\n else if (newMonth < 1) {\n newMonth_ = 12 + newMonth % 12;\n yearOffset = Math.floor(newMonth / 12) + (newMonth_ === 12 ? -1 : 0);\n newMonth = newMonth_;\n }\n const newYear = year(d) + yearOffset;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, day(d));\n return create(newYear, newMonth, newDay, hour(d), minute(d), second(d), millisecond(d), d.kind);\n}\nexport function subtract(d, that) {\n return typeof that === \"number\"\n ? add(d, -that)\n : d.getTime() - that.getTime();\n}\nexport function toLongDateString(d) {\n return d.toDateString();\n}\nexport function toShortDateString(d) {\n return d.toLocaleDateString();\n}\nexport function toLongTimeString(d) {\n return d.toLocaleTimeString();\n}\nexport function toShortTimeString(d) {\n return d.toLocaleTimeString().replace(/:\\d\\d(?!:)/, \"\");\n}\nexport function equals(d1, d2) {\n return d1.getTime() === d2.getTime();\n}\nexport const compare = compareDates;\nexport const compareTo = compareDates;\nexport function op_Addition(x, y) {\n return add(x, y);\n}\nexport function op_Subtraction(x, y) {\n return subtract(x, y);\n}\nexport function isDaylightSavingTime(x) {\n const jan = new Date(x.getFullYear(), 0, 1);\n const jul = new Date(x.getFullYear(), 6, 1);\n return isDST(jan.getTimezoneOffset(), jul.getTimezoneOffset(), x.getTimezoneOffset());\n}\nfunction isDST(janOffset, julOffset, tOffset) {\n return Math.min(janOffset, julOffset) === tOffset;\n}\nexport default DateTime;\n","export const symbol = Symbol(\"numeric\");\nexport function isNumeric(x) {\n return typeof x === \"number\" || typeof x === \"bigint\" || x?.[symbol];\n}\nexport function compare(x, y) {\n if (typeof x === \"number\") {\n return x < y ? -1 : (x > y ? 1 : 0);\n }\n else if (typeof x === \"bigint\") {\n return x < y ? -1 : (x > y ? 1 : 0);\n }\n else {\n return x.CompareTo(y);\n }\n}\nexport function multiply(x, y) {\n if (typeof x === \"number\") {\n return x * y;\n }\n else if (typeof x === \"bigint\") {\n return x * BigInt(y);\n }\n else {\n return x[symbol]().multiply(y);\n }\n}\nexport function toFixed(x, dp) {\n if (typeof x === \"number\") {\n return x.toFixed(dp);\n }\n else if (typeof x === \"bigint\") {\n return x;\n }\n else {\n return x[symbol]().toFixed(dp);\n }\n}\nexport function toPrecision(x, sd) {\n if (typeof x === \"number\") {\n return x.toPrecision(sd);\n }\n else if (typeof x === \"bigint\") {\n return x;\n }\n else {\n return x[symbol]().toPrecision(sd);\n }\n}\nexport function toExponential(x, dp) {\n if (typeof x === \"number\") {\n return x.toExponential(dp);\n }\n else if (typeof x === \"bigint\") {\n return x;\n }\n else {\n return x[symbol]().toExponential(dp);\n }\n}\nexport function toHex(x) {\n if (typeof x === \"number\") {\n return (Number(x) >>> 0).toString(16);\n }\n else if (typeof x === \"bigint\") {\n // TODO: properly handle other bit sizes\n return BigInt.asUintN(64, x).toString(16);\n }\n else {\n return x[symbol]().toHex();\n }\n}\n","export function create(pattern, options = 0) {\n // Supported RegexOptions\n // * IgnoreCase: 0x0001\n // * Multiline: 0x0002\n // * Compiled: 0x0008 (ignored)\n // * Singleline: 0x0010\n // * ECMAScript: 0x0100 (ignored)\n if ((options & ~(1 ^ 2 ^ 8 ^ 16 ^ 256)) !== 0) {\n throw new Error(\"RegexOptions only supports: IgnoreCase, Multiline, Compiled, Singleline and ECMAScript\");\n }\n // Set always global and unicode flags for compatibility with dotnet, see #2925\n let flags = \"gu\";\n flags += options & 1 ? \"i\" : \"\"; // 0x0001 RegexOptions.IgnoreCase\n flags += options & 2 ? \"m\" : \"\";\n flags += options & 16 ? \"s\" : \"\";\n return new RegExp(pattern, flags);\n}\n// From http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex\nexport function escape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n}\nexport function unescape(str) {\n return str.replace(/\\\\([\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|])/g, \"$1\");\n}\nexport function isMatch(reg, input, startAt = 0) {\n reg.lastIndex = startAt;\n return reg.test(input);\n}\nexport function match(reg, input, startAt = 0) {\n reg.lastIndex = startAt;\n return reg.exec(input);\n}\nexport function matches(reg, input, startAt = 0) {\n if (input == null) {\n throw new Error(\"Input cannot ve null\");\n }\n if (!reg.global) {\n throw new Error(\"Non-global RegExp\"); // Prevent infinite loop\n }\n reg.lastIndex = startAt;\n const matches = [];\n let m;\n let lastMatchIndex = -1;\n // tslint:disable-next-line:no-conditional-assignment\n while ((m = reg.exec(input)) != null) {\n // It can happen even global regex get stuck, see #2845\n if (m.index === lastMatchIndex) {\n reg.lastIndex++;\n }\n else {\n lastMatchIndex = m.index;\n matches.push(m);\n }\n }\n return matches;\n}\nexport function options(reg) {\n let options = 256; // ECMAScript\n options |= reg.ignoreCase ? 1 : 0;\n options |= reg.multiline ? 2 : 0;\n return options;\n}\nexport function replace(reg, input, replacement, limit, offset = 0) {\n function replacer() {\n let res = arguments[0];\n if (limit) {\n limit--;\n const match = [];\n const len = arguments.length;\n // arguments: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#specifying_a_function_as_a_parameter\n // * match: matched substring\n // * p1, p2, ...: nth capture group string\n // * offset: offset of matched substring\n // * string: whole string examined\n // * groups: named capturing groups\n // ONLY if regex contains a named capture group AND browser supports named groups\n // -> last element can be groups OR input string\n // -> check if last element is string\n const withGroups = typeof arguments[len - 1] !== \"string\";\n let pLast = withGroups ? len - 3 : len - 2;\n for (let i = 0; i < pLast; i++) {\n match.push(arguments[i]);\n }\n match.index = arguments[pLast++];\n match.input = arguments[pLast++];\n if (withGroups) {\n match.groups = arguments[pLast];\n }\n res = replacement(match);\n }\n return res;\n }\n if (typeof reg === \"string\") {\n const tmp = reg;\n reg = create(input, limit ?? 0);\n input = tmp;\n limit = undefined;\n }\n if (typeof replacement === \"function\") {\n limit = limit == null ? -1 : limit;\n return input.substring(0, offset) + input.substring(offset).replace(reg, replacer);\n }\n else {\n replacement =\n replacement\n // $0 doesn't work with JS regex, see #1155\n .replace(/\\$0/g, (_s) => \"$&\")\n // named groups in replacement are `${name}` in .Net, but `$` in JS (in regex: groups are `(?...)` in both)\n .replace(/\\${([^}]+)}/g, \"\\$<$1>\");\n if (limit != null) {\n let m;\n const sub1 = input.substring(offset);\n const _matches = matches(reg, sub1);\n const sub2 = matches.length > limit ? (m = _matches[limit - 1], sub1.substring(0, m.index + m[0].length)) : sub1;\n return input.substring(0, offset) + sub2.replace(reg, replacement)\n + input.substring(offset + sub2.length);\n }\n else {\n return input.replace(reg, replacement);\n }\n }\n}\nexport function split(reg, input, limit, offset = 0) {\n if (typeof reg === \"string\") {\n const tmp = reg;\n reg = create(input, limit ?? 0);\n input = tmp;\n limit = undefined;\n }\n input = input.substring(offset);\n return input.split(reg, limit);\n}\n","import { toString as dateToString } from \"./Date.js\";\nimport { compare as numericCompare, isNumeric, multiply, toExponential, toFixed, toHex, toPrecision } from \"./Numeric.js\";\nimport { escape } from \"./RegExp.js\";\nimport { toString } from \"./Types.js\";\nconst fsFormatRegExp = /(^|[^%])%([0+\\- ]*)(\\*|\\d+)?(?:\\.(\\d+))?(\\w)/g;\nconst interpolateRegExp = /(?:(^|[^%])%([0+\\- ]*)(\\d+)?(?:\\.(\\d+))?(\\w))?%P\\(\\)/g;\nconst formatRegExp = /\\{(\\d+)(,-?\\d+)?(?:\\:([a-zA-Z])(\\d{0,2})|\\:(.+?))?\\}/g;\nfunction isLessThan(x, y) {\n return numericCompare(x, y) < 0;\n}\nfunction cmp(x, y, ic) {\n function isIgnoreCase(i) {\n return i === true ||\n i === 1 /* StringComparison.CurrentCultureIgnoreCase */ ||\n i === 3 /* StringComparison.InvariantCultureIgnoreCase */ ||\n i === 5 /* StringComparison.OrdinalIgnoreCase */;\n }\n function isOrdinal(i) {\n return i === 4 /* StringComparison.Ordinal */ ||\n i === 5 /* StringComparison.OrdinalIgnoreCase */;\n }\n if (x == null) {\n return y == null ? 0 : -1;\n }\n if (y == null) {\n return 1;\n } // everything is bigger than null\n if (isOrdinal(ic)) {\n if (isIgnoreCase(ic)) {\n x = x.toLowerCase();\n y = y.toLowerCase();\n }\n return (x === y) ? 0 : (x < y ? -1 : 1);\n }\n else {\n if (isIgnoreCase(ic)) {\n x = x.toLocaleLowerCase();\n y = y.toLocaleLowerCase();\n }\n return x.localeCompare(y);\n }\n}\nexport function compare(...args) {\n switch (args.length) {\n case 2: return cmp(args[0], args[1], false);\n case 3: return cmp(args[0], args[1], args[2]);\n case 4: return cmp(args[0], args[1], args[2] === true);\n case 5: return cmp(args[0].substr(args[1], args[4]), args[2].substr(args[3], args[4]), false);\n case 6: return cmp(args[0].substr(args[1], args[4]), args[2].substr(args[3], args[4]), args[5]);\n case 7: return cmp(args[0].substr(args[1], args[4]), args[2].substr(args[3], args[4]), args[5] === true);\n default: throw new Error(\"String.compare: Unsupported number of parameters\");\n }\n}\nexport function compareOrdinal(x, y) {\n return cmp(x, y, 4 /* StringComparison.Ordinal */);\n}\nexport function compareTo(x, y) {\n return cmp(x, y, 0 /* StringComparison.CurrentCulture */);\n}\nexport function startsWith(str, pattern, ic) {\n if (str.length >= pattern.length) {\n return cmp(str.substr(0, pattern.length), pattern, ic) === 0;\n }\n return false;\n}\nexport function indexOfAny(str, anyOf, ...args) {\n if (str == null || str === \"\") {\n return -1;\n }\n const startIndex = (args.length > 0) ? args[0] : 0;\n if (startIndex < 0) {\n throw new Error(\"Start index cannot be negative\");\n }\n const length = (args.length > 1) ? args[1] : str.length - startIndex;\n if (length < 0) {\n throw new Error(\"Length cannot be negative\");\n }\n if (startIndex + length > str.length) {\n throw new Error(\"Invalid startIndex and length\");\n }\n const endIndex = startIndex + length;\n const anyOfAsStr = \"\".concat.apply(\"\", anyOf);\n for (let i = startIndex; i < endIndex; i++) {\n if (anyOfAsStr.indexOf(str[i]) > -1) {\n return i;\n }\n }\n return -1;\n}\nexport function printf(input) {\n return {\n input,\n cont: fsFormat(input),\n };\n}\nexport function interpolate(str, values) {\n let valIdx = 0;\n let strIdx = 0;\n let result = \"\";\n interpolateRegExp.lastIndex = 0;\n let match = interpolateRegExp.exec(str);\n while (match) {\n // The first group corresponds to the no-escape char (^|[^%]), the actual pattern starts in the next char\n // Note: we don't use negative lookbehind because some browsers don't support it yet\n const matchIndex = match.index + (match[1] || \"\").length;\n result += str.substring(strIdx, matchIndex).replace(/%%/g, \"%\");\n const [, , flags, padLength, precision, format] = match;\n // Save interpolateRegExp.lastIndex before running formatReplacement because the values\n // may also involve interpolation and make use of interpolateRegExp (see #3078)\n strIdx = interpolateRegExp.lastIndex;\n result += formatReplacement(values[valIdx++], flags, padLength, precision, format);\n // Move interpolateRegExp.lastIndex one char behind to make sure we match the no-escape char next time\n interpolateRegExp.lastIndex = strIdx - 1;\n match = interpolateRegExp.exec(str);\n }\n result += str.substring(strIdx).replace(/%%/g, \"%\");\n return result;\n}\nfunction continuePrint(cont, arg) {\n return typeof arg === \"string\" ? cont(arg) : arg.cont(cont);\n}\nexport function toConsole(arg) {\n // Don't remove the lambda here, see #1357\n return continuePrint((x) => console.log(x), arg);\n}\nexport function toConsoleError(arg) {\n return continuePrint((x) => console.error(x), arg);\n}\nexport function toText(arg) {\n return continuePrint((x) => x, arg);\n}\nexport function toFail(arg) {\n return continuePrint((x) => {\n throw new Error(x);\n }, arg);\n}\nfunction formatReplacement(rep, flags, padLength, precision, format) {\n let sign = \"\";\n flags = flags || \"\";\n format = format || \"\";\n if (isNumeric(rep)) {\n if (format.toLowerCase() !== \"x\") {\n if (isLessThan(rep, 0)) {\n rep = multiply(rep, -1);\n sign = \"-\";\n }\n else {\n if (flags.indexOf(\" \") >= 0) {\n sign = \" \";\n }\n else if (flags.indexOf(\"+\") >= 0) {\n sign = \"+\";\n }\n }\n }\n precision = precision == null ? null : parseInt(precision, 10);\n switch (format) {\n case \"f\":\n case \"F\":\n precision = precision != null ? precision : 6;\n rep = toFixed(rep, precision);\n break;\n case \"g\":\n case \"G\":\n rep = precision != null ? toPrecision(rep, precision) : toPrecision(rep);\n break;\n case \"e\":\n case \"E\":\n rep = precision != null ? toExponential(rep, precision) : toExponential(rep);\n break;\n case \"x\":\n rep = toHex(rep);\n break;\n case \"X\":\n rep = toHex(rep).toUpperCase();\n break;\n default: // AOid\n rep = String(rep);\n break;\n }\n }\n else if (rep instanceof Date) {\n rep = dateToString(rep);\n }\n else {\n rep = toString(rep);\n }\n padLength = typeof padLength === \"number\" ? padLength : parseInt(padLength, 10);\n if (!isNaN(padLength)) {\n const zeroFlag = flags.indexOf(\"0\") >= 0; // Use '0' for left padding\n const minusFlag = flags.indexOf(\"-\") >= 0; // Right padding\n const ch = minusFlag || !zeroFlag ? \" \" : \"0\";\n if (ch === \"0\") {\n rep = pad(rep, padLength - sign.length, ch, minusFlag);\n rep = sign + rep;\n }\n else {\n rep = pad(sign + rep, padLength, ch, minusFlag);\n }\n }\n else {\n rep = sign + rep;\n }\n return rep;\n}\nfunction createPrinter(cont, _strParts, _matches, _result = \"\", padArg = -1) {\n return (...args) => {\n // Make copies of the values passed by reference because the function can be used multiple times\n let result = _result;\n const strParts = _strParts.slice();\n const matches = _matches.slice();\n for (const arg of args) {\n const [, , flags, _padLength, precision, format] = matches[0];\n let padLength = _padLength;\n if (padArg >= 0) {\n padLength = padArg;\n padArg = -1;\n }\n else if (padLength === \"*\") {\n if (arg < 0) {\n throw new Error(\"Non-negative number required\");\n }\n padArg = arg;\n continue;\n }\n result += strParts[0];\n result += formatReplacement(arg, flags, padLength, precision, format);\n strParts.splice(0, 1);\n matches.splice(0, 1);\n }\n if (matches.length === 0) {\n result += strParts[0];\n return cont(result);\n }\n else {\n return createPrinter(cont, strParts, matches, result, padArg);\n }\n };\n}\nexport function fsFormat(str) {\n return (cont) => {\n fsFormatRegExp.lastIndex = 0;\n const strParts = [];\n const matches = [];\n let strIdx = 0;\n let match = fsFormatRegExp.exec(str);\n while (match) {\n // The first group corresponds to the no-escape char (^|[^%]), the actual pattern starts in the next char\n // Note: we don't use negative lookbehind because some browsers don't support it yet\n const matchIndex = match.index + (match[1] || \"\").length;\n strParts.push(str.substring(strIdx, matchIndex).replace(/%%/g, \"%\"));\n matches.push(match);\n strIdx = fsFormatRegExp.lastIndex;\n // Likewise we need to move fsFormatRegExp.lastIndex one char behind to make sure we match the no-escape char next time\n fsFormatRegExp.lastIndex -= 1;\n match = fsFormatRegExp.exec(str);\n }\n if (strParts.length === 0) {\n return cont(str.replace(/%%/g, \"%\"));\n }\n else {\n strParts.push(str.substring(strIdx).replace(/%%/g, \"%\"));\n return createPrinter(cont, strParts, matches);\n }\n };\n}\nexport function format(str, ...args) {\n let str2;\n if (typeof str === \"object\") {\n // Called with culture info\n str2 = String(args[0]);\n args.shift();\n }\n else {\n str2 = str;\n }\n return str2.replace(formatRegExp, (_, idx, padLength, format, precision, pattern) => {\n if (idx < 0 || idx >= args.length) {\n throw new Error(\"Index must be greater or equal to zero and less than the arguments' length.\");\n }\n let rep = args[idx];\n if (isNumeric(rep)) {\n precision = precision == null ? null : parseInt(precision, 10);\n switch (format) {\n case \"f\":\n case \"F\":\n precision = precision != null ? precision : 2;\n rep = toFixed(rep, precision);\n break;\n case \"g\":\n case \"G\":\n rep = precision != null ? toPrecision(rep, precision) : toPrecision(rep);\n break;\n case \"e\":\n case \"E\":\n rep = precision != null ? toExponential(rep, precision) : toExponential(rep);\n break;\n case \"p\":\n case \"P\":\n precision = precision != null ? precision : 2;\n rep = toFixed(multiply(rep, 100), precision) + \" %\";\n break;\n case \"d\":\n case \"D\":\n rep = precision != null ? padLeft(String(rep), precision, \"0\") : String(rep);\n break;\n case \"x\":\n case \"X\":\n rep = precision != null ? padLeft(toHex(rep), precision, \"0\") : toHex(rep);\n if (format === \"X\") {\n rep = rep.toUpperCase();\n }\n break;\n default:\n if (pattern) {\n let sign = \"\";\n rep = pattern.replace(/([0#,]+)(\\.[0#]+)?/, (_, intPart, decimalPart) => {\n if (isLessThan(rep, 0)) {\n rep = multiply(rep, -1);\n sign = \"-\";\n }\n decimalPart = decimalPart == null ? \"\" : decimalPart.substring(1);\n rep = toFixed(rep, Math.max(decimalPart.length, 0));\n let [repInt, repDecimal] = rep.split(\".\");\n repDecimal || (repDecimal = \"\");\n const leftZeroes = intPart.replace(/,/g, \"\").replace(/^#+/, \"\").length;\n repInt = padLeft(repInt, leftZeroes, \"0\");\n const rightZeros = decimalPart.replace(/#+$/, \"\").length;\n if (rightZeros > repDecimal.length) {\n repDecimal = padRight(repDecimal, rightZeros, \"0\");\n }\n else if (rightZeros < repDecimal.length) {\n repDecimal = repDecimal.substring(0, rightZeros) + repDecimal.substring(rightZeros).replace(/0+$/, \"\");\n }\n // Thousands separator\n if (intPart.indexOf(\",\") > 0) {\n const i = repInt.length % 3;\n const thousandGroups = Math.floor(repInt.length / 3);\n let thousands = i > 0 ? repInt.substr(0, i) + (thousandGroups > 0 ? \",\" : \"\") : \"\";\n for (let j = 0; j < thousandGroups; j++) {\n thousands += repInt.substr(i + j * 3, 3) + (j < thousandGroups - 1 ? \",\" : \"\");\n }\n repInt = thousands;\n }\n return repDecimal.length > 0 ? repInt + \".\" + repDecimal : repInt;\n });\n rep = sign + rep;\n }\n }\n }\n else if (rep instanceof Date) {\n rep = dateToString(rep, pattern || format);\n }\n else {\n rep = toString(rep);\n }\n padLength = parseInt((padLength || \" \").substring(1), 10);\n if (!isNaN(padLength)) {\n rep = pad(String(rep), Math.abs(padLength), \" \", padLength < 0);\n }\n return rep;\n });\n}\nexport function endsWith(str, search) {\n const idx = str.lastIndexOf(search);\n return idx >= 0 && idx === str.length - search.length;\n}\nexport function initialize(n, f) {\n if (n < 0) {\n throw new Error(\"String length must be non-negative\");\n }\n const xs = new Array(n);\n for (let i = 0; i < n; i++) {\n xs[i] = f(i);\n }\n return xs.join(\"\");\n}\nexport function insert(str, startIndex, value) {\n if (startIndex < 0 || startIndex > str.length) {\n throw new Error(\"startIndex is negative or greater than the length of this instance.\");\n }\n return str.substring(0, startIndex) + value + str.substring(startIndex);\n}\nexport function isNullOrEmpty(str) {\n return typeof str !== \"string\" || str.length === 0;\n}\nexport function isNullOrWhiteSpace(str) {\n return typeof str !== \"string\" || /^\\s*$/.test(str);\n}\nexport function concat(...xs) {\n return xs.map((x) => String(x)).join(\"\");\n}\nexport function join(delimiter, xs) {\n if (Array.isArray(xs)) {\n return xs.join(delimiter);\n }\n else {\n return Array.from(xs).join(delimiter);\n }\n}\nexport function joinWithIndices(delimiter, xs, startIndex, count) {\n const endIndexPlusOne = startIndex + count;\n if (endIndexPlusOne > xs.length) {\n throw new Error(\"Index and count must refer to a location within the buffer.\");\n }\n return xs.slice(startIndex, endIndexPlusOne).join(delimiter);\n}\nfunction notSupported(name) {\n throw new Error(\"The environment doesn't support '\" + name + \"', please use a polyfill.\");\n}\nexport function toBase64String(inArray) {\n let str = \"\";\n for (let i = 0; i < inArray.length; i++) {\n str += String.fromCharCode(inArray[i]);\n }\n return typeof btoa === \"function\" ? btoa(str) : notSupported(\"btoa\");\n}\nexport function fromBase64String(b64Encoded) {\n const binary = typeof atob === \"function\" ? atob(b64Encoded) : notSupported(\"atob\");\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n}\nfunction pad(str, len, ch, isRight) {\n ch = ch || \" \";\n len = len - str.length;\n for (let i = 0; i < len; i++) {\n str = isRight ? str + ch : ch + str;\n }\n return str;\n}\nexport function padLeft(str, len, ch) {\n return pad(str, len, ch);\n}\nexport function padRight(str, len, ch) {\n return pad(str, len, ch, true);\n}\nexport function remove(str, startIndex, count) {\n if (startIndex >= str.length) {\n throw new Error(\"startIndex must be less than length of string\");\n }\n if (typeof count === \"number\" && (startIndex + count) > str.length) {\n throw new Error(\"Index and count must refer to a location within the string.\");\n }\n return str.slice(0, startIndex) + (typeof count === \"number\" ? str.substr(startIndex + count) : \"\");\n}\nexport function replace(str, search, replace) {\n return str.replace(new RegExp(escape(search), \"g\"), replace);\n}\nexport function replicate(n, x) {\n return initialize(n, () => x);\n}\nexport function getCharAtIndex(input, index) {\n if (index < 0 || index >= input.length) {\n throw new Error(\"Index was outside the bounds of the array.\");\n }\n return input[index];\n}\nexport function split(str, splitters, count, options) {\n count = typeof count === \"number\" ? count : undefined;\n options = typeof options === \"number\" ? options : 0;\n if (count && count < 0) {\n throw new Error(\"Count cannot be less than zero\");\n }\n if (count === 0) {\n return [];\n }\n const removeEmpty = (options & 1) === 1;\n const trim = (options & 2) === 2;\n splitters = splitters || [];\n splitters = splitters.filter(x => x).map(escape);\n splitters = splitters.length > 0 ? splitters : [\"\\\\s\"];\n const splits = [];\n const reg = new RegExp(splitters.join(\"|\"), \"g\");\n let findSplits = true;\n let i = 0;\n do {\n const match = reg.exec(str);\n if (match === null) {\n const candidate = trim ? str.substring(i).trim() : str.substring(i);\n if (!removeEmpty || candidate.length > 0) {\n splits.push(candidate);\n }\n findSplits = false;\n }\n else {\n const candidate = trim ? str.substring(i, match.index).trim() : str.substring(i, match.index);\n if (!removeEmpty || candidate.length > 0) {\n if (count != null && splits.length + 1 === count) {\n splits.push(trim ? str.substring(i).trim() : str.substring(i));\n findSplits = false;\n }\n else {\n splits.push(candidate);\n }\n }\n i = reg.lastIndex;\n }\n } while (findSplits);\n return splits;\n}\nexport function trim(str, ...chars) {\n if (chars.length === 0) {\n return str.trim();\n }\n const pattern = \"[\" + escape(chars.join(\"\")) + \"]+\";\n return str.replace(new RegExp(\"^\" + pattern), \"\").replace(new RegExp(pattern + \"$\"), \"\");\n}\nexport function trimStart(str, ...chars) {\n return chars.length === 0\n ? str.trimStart()\n : str.replace(new RegExp(\"^[\" + escape(chars.join(\"\")) + \"]+\"), \"\");\n}\nexport function trimEnd(str, ...chars) {\n return chars.length === 0\n ? str.trimEnd()\n : str.replace(new RegExp(\"[\" + escape(chars.join(\"\")) + \"]+$\"), \"\");\n}\nexport function filter(pred, x) {\n return x.split(\"\").filter((c) => pred(c)).join(\"\");\n}\nexport function substring(str, startIndex, length) {\n if ((startIndex + (length || 0) > str.length)) {\n throw new Error(\"Invalid startIndex and/or length\");\n }\n return length != null ? str.substr(startIndex, length) : str.substr(startIndex);\n}\nexport function toCharArray2(str, startIndex, length) {\n return substring(str, startIndex, length).split(\"\");\n}\nexport function fmt(strs, ...args) {\n return ({ strs, args });\n}\nexport function fmtWith(fmts) {\n return (strs, ...args) => ({ strs, args, fmts });\n}\nexport function getFormat(s) {\n return s.fmts\n ? s.strs.reduce((acc, newPart, index) => acc + `{${String(index - 1) + s.fmts[index - 1]}}` + newPart)\n : s.strs.reduce((acc, newPart, index) => acc + `{${index - 1}}` + newPart);\n}\n","import { structuralHash, equals, compare } from \"./Util.js\";\n// Using a class here for better compatibility with TS files importing Some\nexport class Some {\n constructor(value) {\n this.value = value;\n }\n toJSON() {\n return this.value;\n }\n // Don't add \"Some\" for consistency with erased options\n toString() {\n return String(this.value);\n }\n GetHashCode() {\n return structuralHash(this.value);\n }\n Equals(other) {\n if (other == null) {\n return false;\n }\n else {\n return equals(this.value, other instanceof Some ? other.value : other);\n }\n }\n CompareTo(other) {\n if (other == null) {\n return 1;\n }\n else {\n return compare(this.value, other instanceof Some ? other.value : other);\n }\n }\n}\nexport function value(x) {\n if (x == null) {\n throw new Error(\"Option has no value\");\n }\n else {\n return x instanceof Some ? x.value : x;\n }\n}\nexport function unwrap(opt) {\n return opt instanceof Some ? opt.value : opt;\n}\nexport function some(x) {\n return x == null || x instanceof Some ? new Some(x) : x;\n}\nexport function ofNullable(x) {\n // This will fail with unit probably, an alternative would be:\n // return x === null ? undefined : (x === undefined ? new Some(x) : x);\n return x == null ? undefined : x;\n}\nexport function toNullable(x) {\n return x == null ? null : value(x);\n}\nexport function flatten(x) {\n return x == null ? undefined : value(x);\n}\nexport function toArray(opt) {\n return (opt == null) ? [] : [value(opt)];\n}\nexport function defaultArg(opt, defaultValue) {\n return (opt != null) ? value(opt) : defaultValue;\n}\nexport function defaultArgWith(opt, defThunk) {\n return (opt != null) ? value(opt) : defThunk();\n}\nexport function orElse(opt, ifNone) {\n return opt == null ? ifNone : opt;\n}\nexport function orElseWith(opt, ifNoneThunk) {\n return opt == null ? ifNoneThunk() : opt;\n}\nexport function filter(predicate, opt) {\n return (opt != null) ? (predicate(value(opt)) ? opt : undefined) : opt;\n}\nexport function map(mapping, opt) {\n return (opt != null) ? some(mapping(value(opt))) : undefined;\n}\nexport function map2(mapping, opt1, opt2) {\n return (opt1 != null && opt2 != null) ? mapping(value(opt1), value(opt2)) : undefined;\n}\nexport function map3(mapping, opt1, opt2, opt3) {\n return (opt1 != null && opt2 != null && opt3 != null) ? mapping(value(opt1), value(opt2), value(opt3)) : undefined;\n}\nexport function bind(binder, opt) {\n return opt != null ? binder(value(opt)) : undefined;\n}\nexport function tryOp(op, arg) {\n try {\n return some(op(arg));\n }\n catch {\n return undefined;\n }\n}\n","export const SR_indexOutOfBounds = \"The index was outside the range of elements in the collection.\";\nexport const SR_inputWasEmpty = \"Collection was empty.\";\nexport const SR_inputMustBeNonNegative = \"The input must be non-negative.\";\nexport const SR_inputSequenceEmpty = \"The input sequence was empty.\";\nexport const SR_inputSequenceTooLong = \"The input sequence contains more than one element.\";\nexport const SR_keyNotFoundAlt = \"An index satisfying the predicate was not found in the collection.\";\nexport const SR_differentLengths = \"The collections had different lengths.\";\nexport const SR_notEnoughElements = \"The input sequence has an insufficient number of elements.\";\n","export function Helpers_allocateArrayFromCons(cons, len) {\n if ((typeof cons) === \"function\") {\n return new cons(len);\n }\n else {\n return new Array(len);\n }\n}\n","import { Helpers_allocateArrayFromCons } from \"./Native.js\";\nimport { setItem as setItem_1, item as item_2 } from \"./Array.js\";\nimport { value as value_2, map as map_1, defaultArg, some } from \"./Option.js\";\nimport { min as min_1, max as max_1 } from \"./Double.js\";\nimport { equals as equals_1, disposeSafe, getEnumerator, copyToArray, defaultOf } from \"./Util.js\";\nimport { SR_indexOutOfBounds } from \"./Global.js\";\nfunction indexNotFound() {\n throw new Error(\"An index satisfying the predicate was not found in the collection.\");\n}\nfunction differentLengths() {\n throw new Error(\"Arrays had different lengths\");\n}\nexport function append(array1, array2, cons) {\n const len1 = array1.length | 0;\n const len2 = array2.length | 0;\n const newArray = Helpers_allocateArrayFromCons(cons, len1 + len2);\n for (let i = 0; i <= (len1 - 1); i++) {\n setItem_1(newArray, i, item_2(i, array1));\n }\n for (let i_1 = 0; i_1 <= (len2 - 1); i_1++) {\n setItem_1(newArray, i_1 + len1, item_2(i_1, array2));\n }\n return newArray;\n}\nexport function filter(predicate, array) {\n return array.filter(predicate);\n}\nexport function fill(target, targetIndex, count, value) {\n const start = targetIndex | 0;\n return target.fill(value, start, (start + count));\n}\nexport function getSubArray(array, start, count) {\n const start_1 = start | 0;\n return array.slice(start_1, (start_1 + count));\n}\nexport function last(array) {\n if (array.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n }\n return item_2(array.length - 1, array);\n}\nexport function tryLast(array) {\n if (array.length === 0) {\n return undefined;\n }\n else {\n return some(item_2(array.length - 1, array));\n }\n}\nexport function mapIndexed(f, source, cons) {\n const len = source.length | 0;\n const target = Helpers_allocateArrayFromCons(cons, len);\n for (let i = 0; i <= (len - 1); i++) {\n setItem_1(target, i, f(i, item_2(i, source)));\n }\n return target;\n}\nexport function map(f, source, cons) {\n const len = source.length | 0;\n const target = Helpers_allocateArrayFromCons(cons, len);\n for (let i = 0; i <= (len - 1); i++) {\n setItem_1(target, i, f(item_2(i, source)));\n }\n return target;\n}\nexport function mapIndexed2(f, source1, source2, cons) {\n if (source1.length !== source2.length) {\n throw new Error(\"Arrays had different lengths\");\n }\n const result = Helpers_allocateArrayFromCons(cons, source1.length);\n for (let i = 0; i <= (source1.length - 1); i++) {\n setItem_1(result, i, f(i, item_2(i, source1), item_2(i, source2)));\n }\n return result;\n}\nexport function map2(f, source1, source2, cons) {\n if (source1.length !== source2.length) {\n throw new Error(\"Arrays had different lengths\");\n }\n const result = Helpers_allocateArrayFromCons(cons, source1.length);\n for (let i = 0; i <= (source1.length - 1); i++) {\n setItem_1(result, i, f(item_2(i, source1), item_2(i, source2)));\n }\n return result;\n}\nexport function mapIndexed3(f, source1, source2, source3, cons) {\n if ((source1.length !== source2.length) ? true : (source2.length !== source3.length)) {\n throw new Error(\"Arrays had different lengths\");\n }\n const result = Helpers_allocateArrayFromCons(cons, source1.length);\n for (let i = 0; i <= (source1.length - 1); i++) {\n setItem_1(result, i, f(i, item_2(i, source1), item_2(i, source2), item_2(i, source3)));\n }\n return result;\n}\nexport function map3(f, source1, source2, source3, cons) {\n if ((source1.length !== source2.length) ? true : (source2.length !== source3.length)) {\n throw new Error(\"Arrays had different lengths\");\n }\n const result = Helpers_allocateArrayFromCons(cons, source1.length);\n for (let i = 0; i <= (source1.length - 1); i++) {\n setItem_1(result, i, f(item_2(i, source1), item_2(i, source2), item_2(i, source3)));\n }\n return result;\n}\nexport function mapFold(mapping, state, array, cons) {\n const matchValue = array.length | 0;\n if (matchValue === 0) {\n return [[], state];\n }\n else {\n let acc = state;\n const res = Helpers_allocateArrayFromCons(cons, matchValue);\n for (let i = 0; i <= (array.length - 1); i++) {\n const patternInput = mapping(acc, item_2(i, array));\n setItem_1(res, i, patternInput[0]);\n acc = patternInput[1];\n }\n return [res, acc];\n }\n}\nexport function mapFoldBack(mapping, array, state, cons) {\n const matchValue = array.length | 0;\n if (matchValue === 0) {\n return [[], state];\n }\n else {\n let acc = state;\n const res = Helpers_allocateArrayFromCons(cons, matchValue);\n for (let i = array.length - 1; i >= 0; i--) {\n const patternInput = mapping(item_2(i, array), acc);\n setItem_1(res, i, patternInput[0]);\n acc = patternInput[1];\n }\n return [res, acc];\n }\n}\nexport function indexed(source) {\n const len = source.length | 0;\n const target = new Array(len);\n for (let i = 0; i <= (len - 1); i++) {\n setItem_1(target, i, [i, item_2(i, source)]);\n }\n return target;\n}\nexport function truncate(count, array) {\n const count_1 = max_1(0, count) | 0;\n return array.slice(0, (0 + count_1));\n}\nexport function concat(arrays, cons) {\n const arrays_1 = Array.isArray(arrays) ? arrays : (Array.from(arrays));\n const matchValue = arrays_1.length | 0;\n switch (matchValue) {\n case 0:\n return Helpers_allocateArrayFromCons(cons, 0);\n case 1:\n return item_2(0, arrays_1);\n default: {\n let totalIdx = 0;\n let totalLength = 0;\n for (let idx = 0; idx <= (arrays_1.length - 1); idx++) {\n const arr_1 = item_2(idx, arrays_1);\n totalLength = ((totalLength + arr_1.length) | 0);\n }\n const result = Helpers_allocateArrayFromCons(cons, totalLength);\n for (let idx_1 = 0; idx_1 <= (arrays_1.length - 1); idx_1++) {\n const arr_2 = item_2(idx_1, arrays_1);\n for (let j = 0; j <= (arr_2.length - 1); j++) {\n setItem_1(result, totalIdx, item_2(j, arr_2));\n totalIdx = ((totalIdx + 1) | 0);\n }\n }\n return result;\n }\n }\n}\nexport function collect(mapping, array, cons) {\n return concat(map(mapping, array, defaultOf()), cons);\n}\nexport function where(predicate, array) {\n return array.filter(predicate);\n}\nexport function indexOf(array, item_1, start, count, eq) {\n const start_1 = defaultArg(start, 0) | 0;\n const end$0027 = defaultArg(map_1((c) => (start_1 + c), count), array.length) | 0;\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i >= end$0027) {\n return -1;\n }\n else if (eq.Equals(item_1, item_2(i, array))) {\n return i | 0;\n }\n else {\n i_mut = (i + 1);\n continue loop;\n }\n break;\n }\n };\n return loop(start_1) | 0;\n}\nexport function contains(value, array, eq) {\n return indexOf(array, value, undefined, undefined, eq) >= 0;\n}\nexport function empty(cons) {\n return Helpers_allocateArrayFromCons(cons, 0);\n}\nexport function singleton(value, cons) {\n const ar = Helpers_allocateArrayFromCons(cons, 1);\n setItem_1(ar, 0, value);\n return ar;\n}\nexport function initialize(count, initializer, cons) {\n if (count < 0) {\n throw new Error(\"The input must be non-negative\\\\nParameter name: count\");\n }\n const result = Helpers_allocateArrayFromCons(cons, count);\n for (let i = 0; i <= (count - 1); i++) {\n setItem_1(result, i, initializer(i));\n }\n return result;\n}\nexport function pairwise(array) {\n if (array.length < 2) {\n return [];\n }\n else {\n const count = (array.length - 1) | 0;\n const result = new Array(count);\n for (let i = 0; i <= (count - 1); i++) {\n setItem_1(result, i, [item_2(i, array), item_2(i + 1, array)]);\n }\n return result;\n }\n}\nexport function replicate(count, initial, cons) {\n if (count < 0) {\n throw new Error(\"The input must be non-negative\\\\nParameter name: count\");\n }\n const result = Helpers_allocateArrayFromCons(cons, count);\n for (let i = 0; i <= (result.length - 1); i++) {\n setItem_1(result, i, initial);\n }\n return result;\n}\nexport function copy(array) {\n return array.slice();\n}\nexport function copyTo(source, sourceIndex, target, targetIndex, count) {\n copyToArray(source, sourceIndex, target, targetIndex, count);\n}\nexport function reverse(array) {\n const array_2 = array.slice();\n return array_2.reverse();\n}\nexport function scan(folder, state, array, cons) {\n const res = Helpers_allocateArrayFromCons(cons, array.length + 1);\n setItem_1(res, 0, state);\n for (let i = 0; i <= (array.length - 1); i++) {\n setItem_1(res, i + 1, folder(item_2(i, res), item_2(i, array)));\n }\n return res;\n}\nexport function scanBack(folder, array, state, cons) {\n const res = Helpers_allocateArrayFromCons(cons, array.length + 1);\n setItem_1(res, array.length, state);\n for (let i = array.length - 1; i >= 0; i--) {\n setItem_1(res, i, folder(item_2(i, array), item_2(i + 1, res)));\n }\n return res;\n}\nexport function skip(count, array, cons) {\n if (count > array.length) {\n throw new Error(\"count is greater than array length\\\\nParameter name: count\");\n }\n if (count === array.length) {\n return Helpers_allocateArrayFromCons(cons, 0);\n }\n else {\n const count_1 = ((count < 0) ? 0 : count) | 0;\n return array.slice(count_1);\n }\n}\nexport function skipWhile(predicate, array, cons) {\n let count = 0;\n while ((count < array.length) && predicate(item_2(count, array))) {\n count = ((count + 1) | 0);\n }\n if (count === array.length) {\n return Helpers_allocateArrayFromCons(cons, 0);\n }\n else {\n const count_1 = count | 0;\n return array.slice(count_1);\n }\n}\nexport function take(count, array, cons) {\n if (count < 0) {\n throw new Error(\"The input must be non-negative\\\\nParameter name: count\");\n }\n if (count > array.length) {\n throw new Error(\"count is greater than array length\\\\nParameter name: count\");\n }\n if (count === 0) {\n return Helpers_allocateArrayFromCons(cons, 0);\n }\n else {\n return array.slice(0, (0 + count));\n }\n}\nexport function takeWhile(predicate, array, cons) {\n let count = 0;\n while ((count < array.length) && predicate(item_2(count, array))) {\n count = ((count + 1) | 0);\n }\n if (count === 0) {\n return Helpers_allocateArrayFromCons(cons, 0);\n }\n else {\n const count_1 = count | 0;\n return array.slice(0, (0 + count_1));\n }\n}\nexport function addInPlace(x, array) {\n array.push(x);\n}\nexport function addRangeInPlace(range, array) {\n const enumerator = getEnumerator(range);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n addInPlace(enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), array);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n}\nexport function insertRangeInPlace(index, range, array) {\n let index_1;\n let i = index;\n const enumerator = getEnumerator(range);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const x = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n (index_1 = (i | 0), array.splice(index_1, 0, x));\n i = ((i + 1) | 0);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n}\nexport function removeInPlace(item_1, array, eq) {\n const i = indexOf(array, item_1, undefined, undefined, eq) | 0;\n if (i > -1) {\n array.splice(i, 1);\n return true;\n }\n else {\n return false;\n }\n}\nexport function removeAllInPlace(predicate, array) {\n const countRemoveAll = (count) => {\n const i = (array.findIndex(predicate)) | 0;\n if (i > -1) {\n array.splice(i, 1);\n return (countRemoveAll(count) + 1) | 0;\n }\n else {\n return count | 0;\n }\n };\n return countRemoveAll(0) | 0;\n}\nexport function partition(f, source, cons) {\n const len = source.length | 0;\n const res1 = Helpers_allocateArrayFromCons(cons, len);\n const res2 = Helpers_allocateArrayFromCons(cons, len);\n let iTrue = 0;\n let iFalse = 0;\n for (let i = 0; i <= (len - 1); i++) {\n if (f(item_2(i, source))) {\n setItem_1(res1, iTrue, item_2(i, source));\n iTrue = ((iTrue + 1) | 0);\n }\n else {\n setItem_1(res2, iFalse, item_2(i, source));\n iFalse = ((iFalse + 1) | 0);\n }\n }\n return [truncate(iTrue, res1), truncate(iFalse, res2)];\n}\nexport function find(predicate, array) {\n const matchValue = array.find(predicate);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_2(matchValue);\n }\n}\nexport function tryFind(predicate, array) {\n return array.find(predicate);\n}\nexport function findIndex(predicate, array) {\n const matchValue = (array.findIndex(predicate)) | 0;\n if (matchValue > -1) {\n return matchValue | 0;\n }\n else {\n indexNotFound();\n return -1;\n }\n}\nexport function tryFindIndex(predicate, array) {\n const matchValue = (array.findIndex(predicate)) | 0;\n if (matchValue > -1) {\n return matchValue;\n }\n else {\n return undefined;\n }\n}\nexport function pick(chooser, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i >= array.length) {\n return indexNotFound();\n }\n else {\n const matchValue = chooser(item_2(i, array));\n if (matchValue != null) {\n return value_2(matchValue);\n }\n else {\n i_mut = (i + 1);\n continue loop;\n }\n }\n break;\n }\n };\n return loop(0);\n}\nexport function tryPick(chooser, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i >= array.length) {\n return undefined;\n }\n else {\n const matchValue = chooser(item_2(i, array));\n if (matchValue == null) {\n i_mut = (i + 1);\n continue loop;\n }\n else {\n return matchValue;\n }\n }\n break;\n }\n };\n return loop(0);\n}\nexport function findBack(predicate, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i < 0) {\n return indexNotFound();\n }\n else if (predicate(item_2(i, array))) {\n return item_2(i, array);\n }\n else {\n i_mut = (i - 1);\n continue loop;\n }\n break;\n }\n };\n return loop(array.length - 1);\n}\nexport function tryFindBack(predicate, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i < 0) {\n return undefined;\n }\n else if (predicate(item_2(i, array))) {\n return some(item_2(i, array));\n }\n else {\n i_mut = (i - 1);\n continue loop;\n }\n break;\n }\n };\n return loop(array.length - 1);\n}\nexport function findLastIndex(predicate, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i < 0) {\n return -1;\n }\n else if (predicate(item_2(i, array))) {\n return i | 0;\n }\n else {\n i_mut = (i - 1);\n continue loop;\n }\n break;\n }\n };\n return loop(array.length - 1) | 0;\n}\nexport function findIndexBack(predicate, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i < 0) {\n indexNotFound();\n return -1;\n }\n else if (predicate(item_2(i, array))) {\n return i | 0;\n }\n else {\n i_mut = (i - 1);\n continue loop;\n }\n break;\n }\n };\n return loop(array.length - 1) | 0;\n}\nexport function tryFindIndexBack(predicate, array) {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (i < 0) {\n return undefined;\n }\n else if (predicate(item_2(i, array))) {\n return i;\n }\n else {\n i_mut = (i - 1);\n continue loop;\n }\n break;\n }\n };\n return loop(array.length - 1);\n}\nexport function choose(chooser, array, cons) {\n const res = [];\n for (let i = 0; i <= (array.length - 1); i++) {\n const matchValue = chooser(item_2(i, array));\n if (matchValue != null) {\n const y = value_2(matchValue);\n res.push(y);\n }\n }\n if (equals_1(cons, defaultOf())) {\n return res;\n }\n else {\n return map((x) => x, res, cons);\n }\n}\nexport function foldIndexed(folder, state, array) {\n return array.reduce(((delegateArg, delegateArg_1, delegateArg_2) => folder(delegateArg_2, delegateArg, delegateArg_1)), state);\n}\nexport function fold(folder, state, array) {\n const folder_1 = folder;\n return array.reduce((folder_1), state);\n}\nexport function iterate(action, array) {\n for (let i = 0; i <= (array.length - 1); i++) {\n action(item_2(i, array));\n }\n}\nexport function iterateIndexed(action, array) {\n for (let i = 0; i <= (array.length - 1); i++) {\n action(i, item_2(i, array));\n }\n}\nexport function iterate2(action, array1, array2) {\n if (array1.length !== array2.length) {\n differentLengths();\n }\n for (let i = 0; i <= (array1.length - 1); i++) {\n action(item_2(i, array1), item_2(i, array2));\n }\n}\nexport function iterateIndexed2(action, array1, array2) {\n if (array1.length !== array2.length) {\n differentLengths();\n }\n for (let i = 0; i <= (array1.length - 1); i++) {\n action(i, item_2(i, array1), item_2(i, array2));\n }\n}\nexport function isEmpty(array) {\n return array.length === 0;\n}\nexport function forAll(predicate, array) {\n return array.every(predicate);\n}\nexport function permute(f, array) {\n const size = array.length | 0;\n const res = array.slice();\n const checkFlags = new Array(size);\n iterateIndexed((i, x) => {\n const j = f(i) | 0;\n if ((j < 0) ? true : (j >= size)) {\n throw new Error(\"Not a valid permutation\");\n }\n setItem_1(res, j, x);\n setItem_1(checkFlags, j, 1);\n }, array);\n if (!(checkFlags.every((y) => (1 === y)))) {\n throw new Error(\"Not a valid permutation\");\n }\n return res;\n}\nexport function setSlice(target, lower, upper, source) {\n const lower_1 = defaultArg(lower, 0) | 0;\n const upper_1 = defaultArg(upper, -1) | 0;\n const length = (((upper_1 >= 0) ? upper_1 : (target.length - 1)) - lower_1) | 0;\n for (let i = 0; i <= length; i++) {\n setItem_1(target, i + lower_1, item_2(i, source));\n }\n}\nexport function sortInPlaceBy(projection, xs, comparer) {\n xs.sort((x, y) => comparer.Compare(projection(x), projection(y)));\n}\nexport function sortInPlace(xs, comparer) {\n xs.sort((x, y) => comparer.Compare(x, y));\n}\nexport function sort(xs, comparer) {\n const xs_1 = xs.slice();\n xs_1.sort((x, y) => comparer.Compare(x, y));\n return xs_1;\n}\nexport function sortBy(projection, xs, comparer) {\n const xs_1 = xs.slice();\n xs_1.sort((x, y) => comparer.Compare(projection(x), projection(y)));\n return xs_1;\n}\nexport function sortDescending(xs, comparer) {\n const xs_1 = xs.slice();\n xs_1.sort((x, y) => (comparer.Compare(x, y) * -1));\n return xs_1;\n}\nexport function sortByDescending(projection, xs, comparer) {\n const xs_1 = xs.slice();\n xs_1.sort((x, y) => (comparer.Compare(projection(x), projection(y)) * -1));\n return xs_1;\n}\nexport function sortWith(comparer, xs) {\n const comparer_1 = comparer;\n const xs_1 = xs.slice();\n xs_1.sort(comparer_1);\n return xs_1;\n}\nexport function allPairs(xs, ys) {\n const len1 = xs.length | 0;\n const len2 = ys.length | 0;\n const res = new Array(len1 * len2);\n for (let i = 0; i <= (xs.length - 1); i++) {\n for (let j = 0; j <= (ys.length - 1); j++) {\n setItem_1(res, (i * len2) + j, [item_2(i, xs), item_2(j, ys)]);\n }\n }\n return res;\n}\nexport function unfold(generator, state) {\n const res = [];\n const loop = (state_1_mut) => {\n loop: while (true) {\n const state_1 = state_1_mut;\n const matchValue = generator(state_1);\n if (matchValue != null) {\n const x = value_2(matchValue)[0];\n const s = value_2(matchValue)[1];\n res.push(x);\n state_1_mut = s;\n continue loop;\n }\n break;\n }\n };\n loop(state);\n return res;\n}\nexport function unzip(array) {\n const len = array.length | 0;\n const res1 = new Array(len);\n const res2 = new Array(len);\n iterateIndexed((i, tupledArg) => {\n setItem_1(res1, i, tupledArg[0]);\n setItem_1(res2, i, tupledArg[1]);\n }, array);\n return [res1, res2];\n}\nexport function unzip3(array) {\n const len = array.length | 0;\n const res1 = new Array(len);\n const res2 = new Array(len);\n const res3 = new Array(len);\n iterateIndexed((i, tupledArg) => {\n setItem_1(res1, i, tupledArg[0]);\n setItem_1(res2, i, tupledArg[1]);\n setItem_1(res3, i, tupledArg[2]);\n }, array);\n return [res1, res2, res3];\n}\nexport function zip(array1, array2) {\n if (array1.length !== array2.length) {\n differentLengths();\n }\n const result = new Array(array1.length);\n for (let i = 0; i <= (array1.length - 1); i++) {\n setItem_1(result, i, [item_2(i, array1), item_2(i, array2)]);\n }\n return result;\n}\nexport function zip3(array1, array2, array3) {\n if ((array1.length !== array2.length) ? true : (array2.length !== array3.length)) {\n differentLengths();\n }\n const result = new Array(array1.length);\n for (let i = 0; i <= (array1.length - 1); i++) {\n setItem_1(result, i, [item_2(i, array1), item_2(i, array2), item_2(i, array3)]);\n }\n return result;\n}\nexport function chunkBySize(chunkSize, array) {\n if (chunkSize < 1) {\n throw new Error(\"The input must be positive.\\\\nParameter name: size\");\n }\n if (array.length === 0) {\n return [[]];\n }\n else {\n const result = [];\n for (let x = 0; x <= (~~Math.ceil(array.length / chunkSize) - 1); x++) {\n let slice;\n const start_1 = (x * chunkSize) | 0;\n slice = (array.slice(start_1, (start_1 + chunkSize)));\n result.push(slice);\n }\n return result;\n }\n}\nexport function splitAt(index, array) {\n if ((index < 0) ? true : (index > array.length)) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return [array.slice(0, (0 + index)), array.slice(index)];\n}\nexport function compareWith(comparer, source1, source2) {\n if (source1 == null) {\n if (source2 == null) {\n return 0;\n }\n else {\n return -1;\n }\n }\n else if (source2 == null) {\n return 1;\n }\n else {\n const len1 = source1.length | 0;\n const len2 = source2.length | 0;\n const len = ((len1 < len2) ? len1 : len2) | 0;\n let i = 0;\n let res = 0;\n while ((res === 0) && (i < len)) {\n res = (comparer(item_2(i, source1), item_2(i, source2)) | 0);\n i = ((i + 1) | 0);\n }\n if (res !== 0) {\n return res | 0;\n }\n else if (len1 > len2) {\n return 1;\n }\n else if (len1 < len2) {\n return -1;\n }\n else {\n return 0;\n }\n }\n}\nexport function compareTo(comparer, source1, source2) {\n if (source1 == null) {\n if (source2 == null) {\n return 0;\n }\n else {\n return -1;\n }\n }\n else if (source2 == null) {\n return 1;\n }\n else {\n const len1 = source1.length | 0;\n const len2 = source2.length | 0;\n if (len1 > len2) {\n return 1;\n }\n else if (len1 < len2) {\n return -1;\n }\n else {\n let i = 0;\n let res = 0;\n while ((res === 0) && (i < len1)) {\n res = (comparer(item_2(i, source1), item_2(i, source2)) | 0);\n i = ((i + 1) | 0);\n }\n return res | 0;\n }\n }\n}\nexport function equalsWith(equals, array1, array2) {\n if (array1 == null) {\n if (array2 == null) {\n return true;\n }\n else {\n return false;\n }\n }\n else if (array2 == null) {\n return false;\n }\n else {\n let i = 0;\n let result = true;\n const length1 = array1.length | 0;\n const length2 = array2.length | 0;\n if (length1 > length2) {\n return false;\n }\n else if (length1 < length2) {\n return false;\n }\n else {\n while ((i < length1) && result) {\n result = equals(item_2(i, array1), item_2(i, array2));\n i = ((i + 1) | 0);\n }\n return result;\n }\n }\n}\nexport function exactlyOne(array) {\n switch (array.length) {\n case 1:\n return item_2(0, array);\n case 0:\n throw new Error(\"The input sequence was empty\\\\nParameter name: array\");\n default:\n throw new Error(\"Input array too long\\\\nParameter name: array\");\n }\n}\nexport function tryExactlyOne(array) {\n if (array.length === 1) {\n return some(item_2(0, array));\n }\n else {\n return undefined;\n }\n}\nexport function head(array) {\n if (array.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n }\n else {\n return item_2(0, array);\n }\n}\nexport function tryHead(array) {\n if (array.length === 0) {\n return undefined;\n }\n else {\n return some(item_2(0, array));\n }\n}\nexport function tail(array) {\n if (array.length === 0) {\n throw new Error(\"Not enough elements\\\\nParameter name: array\");\n }\n return array.slice(1);\n}\nexport function item(index, array) {\n if ((index < 0) ? true : (index >= array.length)) {\n throw new Error(\"Index was outside the bounds of the array.\\\\nParameter name: index\");\n }\n else {\n return array[index];\n }\n}\nexport function setItem(array, index, value) {\n if ((index < 0) ? true : (index >= array.length)) {\n throw new Error(\"Index was outside the bounds of the array.\\\\nParameter name: index\");\n }\n else {\n array[index] = value;\n }\n}\nexport function tryItem(index, array) {\n if ((index < 0) ? true : (index >= array.length)) {\n return undefined;\n }\n else {\n return some(array[index]);\n }\n}\nexport function foldBackIndexed(folder, array, state) {\n return array.reduceRight(((delegateArg, delegateArg_1, delegateArg_2) => folder(delegateArg_2, delegateArg_1, delegateArg)), state);\n}\nexport function foldBack(folder, array, state) {\n return array.reduceRight(((delegateArg, delegateArg_1) => folder(delegateArg_1, delegateArg)), state);\n}\nexport function foldIndexed2(folder, state, array1, array2) {\n let acc = state;\n if (array1.length !== array2.length) {\n throw new Error(\"Arrays have different lengths\");\n }\n for (let i = 0; i <= (array1.length - 1); i++) {\n acc = folder(i, acc, item_2(i, array1), item_2(i, array2));\n }\n return acc;\n}\nexport function fold2(folder, state, array1, array2) {\n return foldIndexed2((_arg, acc, x, y) => folder(acc, x, y), state, array1, array2);\n}\nexport function foldBackIndexed2(folder, array1, array2, state) {\n let acc = state;\n if (array1.length !== array2.length) {\n differentLengths();\n }\n const size = array1.length | 0;\n for (let i = 1; i <= size; i++) {\n acc = folder(i - 1, item_2(size - i, array1), item_2(size - i, array2), acc);\n }\n return acc;\n}\nexport function foldBack2(f, array1, array2, state) {\n return foldBackIndexed2((_arg, x, y, acc) => f(x, y, acc), array1, array2, state);\n}\nexport function reduce(reduction, array) {\n if (array.length === 0) {\n throw new Error(\"The input array was empty\");\n }\n const reduction_1 = reduction;\n return array.reduce(reduction_1);\n}\nexport function reduceBack(reduction, array) {\n if (array.length === 0) {\n throw new Error(\"The input array was empty\");\n }\n const reduction_1 = reduction;\n return array.reduceRight(reduction_1);\n}\nexport function forAll2(predicate, array1, array2) {\n return fold2((acc, x, y) => (acc && predicate(x, y)), true, array1, array2);\n}\nexport function existsOffset(predicate_mut, array_mut, index_mut) {\n existsOffset: while (true) {\n const predicate = predicate_mut, array = array_mut, index = index_mut;\n if (index === array.length) {\n return false;\n }\n else if (predicate(item_2(index, array))) {\n return true;\n }\n else {\n predicate_mut = predicate;\n array_mut = array;\n index_mut = (index + 1);\n continue existsOffset;\n }\n break;\n }\n}\nexport function exists(predicate, array) {\n return existsOffset(predicate, array, 0);\n}\nexport function existsOffset2(predicate_mut, array1_mut, array2_mut, index_mut) {\n existsOffset2: while (true) {\n const predicate = predicate_mut, array1 = array1_mut, array2 = array2_mut, index = index_mut;\n if (index === array1.length) {\n return false;\n }\n else if (predicate(item_2(index, array1), item_2(index, array2))) {\n return true;\n }\n else {\n predicate_mut = predicate;\n array1_mut = array1;\n array2_mut = array2;\n index_mut = (index + 1);\n continue existsOffset2;\n }\n break;\n }\n}\nexport function exists2(predicate, array1, array2) {\n if (array1.length !== array2.length) {\n differentLengths();\n }\n return existsOffset2(predicate, array1, array2, 0);\n}\nexport function sum(array, adder) {\n let acc = adder.GetZero();\n for (let i = 0; i <= (array.length - 1); i++) {\n acc = adder.Add(acc, item_2(i, array));\n }\n return acc;\n}\nexport function sumBy(projection, array, adder) {\n let acc = adder.GetZero();\n for (let i = 0; i <= (array.length - 1); i++) {\n acc = adder.Add(acc, projection(item_2(i, array)));\n }\n return acc;\n}\nexport function maxBy(projection, xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(projection(y), projection(x)) > 0) ? y : x), xs);\n}\nexport function max(xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(y, x) > 0) ? y : x), xs);\n}\nexport function minBy(projection, xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(projection(y), projection(x)) > 0) ? x : y), xs);\n}\nexport function min(xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(y, x) > 0) ? x : y), xs);\n}\nexport function average(array, averager) {\n if (array.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n }\n let total = averager.GetZero();\n for (let i = 0; i <= (array.length - 1); i++) {\n total = averager.Add(total, item_2(i, array));\n }\n return averager.DivideByInt(total, array.length);\n}\nexport function averageBy(projection, array, averager) {\n if (array.length === 0) {\n throw new Error(\"The input array was empty\\\\nParameter name: array\");\n }\n let total = averager.GetZero();\n for (let i = 0; i <= (array.length - 1); i++) {\n total = averager.Add(total, projection(item_2(i, array)));\n }\n return averager.DivideByInt(total, array.length);\n}\nexport function windowed(windowSize, source) {\n if (windowSize <= 0) {\n throw new Error(\"windowSize must be positive\");\n }\n let res;\n const len = max_1(0, (source.length - windowSize) + 1) | 0;\n res = (new Array(len));\n for (let i = windowSize; i <= source.length; i++) {\n setItem_1(res, i - windowSize, source.slice(i - windowSize, (i - 1) + 1));\n }\n return res;\n}\nexport function splitInto(chunks, array) {\n if (chunks < 1) {\n throw new Error(\"The input must be positive.\\\\nParameter name: chunks\");\n }\n if (array.length === 0) {\n return [[]];\n }\n else {\n const result = [];\n const chunks_1 = min_1(chunks, array.length) | 0;\n const minChunkSize = ~~(array.length / chunks_1) | 0;\n const chunksWithExtraItem = (array.length % chunks_1) | 0;\n for (let i = 0; i <= (chunks_1 - 1); i++) {\n const chunkSize = ((i < chunksWithExtraItem) ? (minChunkSize + 1) : minChunkSize) | 0;\n let slice;\n const start_1 = ((i * minChunkSize) + min_1(chunksWithExtraItem, i)) | 0;\n slice = (array.slice(start_1, (start_1 + chunkSize)));\n result.push(slice);\n }\n return result;\n }\n}\nexport function transpose(arrays, cons) {\n const arrays_1 = Array.isArray(arrays) ? arrays : (Array.from(arrays));\n const len = arrays_1.length | 0;\n if (len === 0) {\n return new Array(0);\n }\n else {\n const firstArray = item_2(0, arrays_1);\n const lenInner = firstArray.length | 0;\n if (!forAll((a) => (a.length === lenInner), arrays_1)) {\n differentLengths();\n }\n const result = new Array(lenInner);\n for (let i = 0; i <= (lenInner - 1); i++) {\n setItem_1(result, i, Helpers_allocateArrayFromCons(cons, len));\n for (let j = 0; j <= (len - 1); j++) {\n item_2(i, result)[j] = item_2(i, item_2(j, arrays_1));\n }\n }\n return result;\n }\n}\nexport function insertAt(index, y, xs, cons) {\n const len = xs.length | 0;\n if ((index < 0) ? true : (index > len)) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n const target = Helpers_allocateArrayFromCons(cons, len + 1);\n for (let i = 0; i <= (index - 1); i++) {\n setItem_1(target, i, item_2(i, xs));\n }\n setItem_1(target, index, y);\n for (let i_1 = index; i_1 <= (len - 1); i_1++) {\n setItem_1(target, i_1 + 1, item_2(i_1, xs));\n }\n return target;\n}\nexport function insertManyAt(index, ys, xs, cons) {\n const len = xs.length | 0;\n if ((index < 0) ? true : (index > len)) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n const ys_1 = Array.from(ys);\n const len2 = ys_1.length | 0;\n const target = Helpers_allocateArrayFromCons(cons, len + len2);\n for (let i = 0; i <= (index - 1); i++) {\n setItem_1(target, i, item_2(i, xs));\n }\n for (let i_1 = 0; i_1 <= (len2 - 1); i_1++) {\n setItem_1(target, index + i_1, item_2(i_1, ys_1));\n }\n for (let i_2 = index; i_2 <= (len - 1); i_2++) {\n setItem_1(target, i_2 + len2, item_2(i_2, xs));\n }\n return target;\n}\nexport function removeAt(index, xs) {\n if ((index < 0) ? true : (index >= xs.length)) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n let i = -1;\n return filter((_arg) => {\n i = ((i + 1) | 0);\n return i !== index;\n }, xs);\n}\nexport function removeManyAt(index, count, xs) {\n let i = -1;\n let status = -1;\n const ys = filter((_arg) => {\n i = ((i + 1) | 0);\n if (i === index) {\n status = 0;\n return false;\n }\n else if (i > index) {\n if (i < (index + count)) {\n return false;\n }\n else {\n status = 1;\n return true;\n }\n }\n else {\n return true;\n }\n }, xs);\n const status_1 = (((status === 0) && ((i + 1) === (index + count))) ? 1 : status) | 0;\n if (status_1 < 1) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + ((status_1 < 0) ? \"index\" : \"count\"));\n }\n return ys;\n}\nexport function updateAt(index, y, xs, cons) {\n const len = xs.length | 0;\n if ((index < 0) ? true : (index >= len)) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n const target = Helpers_allocateArrayFromCons(cons, len);\n for (let i = 0; i <= (len - 1); i++) {\n setItem_1(target, i, (i === index) ? y : item_2(i, xs));\n }\n return target;\n}\nexport function resize(xs, newSize, zero, cons) {\n let array, array_1, start_2, count_2;\n if (newSize < 0) {\n throw new Error(\"The input must be non-negative.\\\\nParameter name: newSize\");\n }\n const zero_1 = defaultArg(zero, defaultOf());\n if (xs.contents == null) {\n xs.contents = ((array = Helpers_allocateArrayFromCons(cons, newSize), array.fill(zero_1, 0, (0 + newSize))));\n }\n else {\n const len = xs.contents.length | 0;\n if (newSize < len) {\n xs.contents = ((array_1 = xs.contents, array_1.slice(0, (0 + newSize))));\n }\n else if (newSize > len) {\n const target = Helpers_allocateArrayFromCons(cons, newSize);\n if (len > 0) {\n copyTo(xs.contents, 0, target, 0, len);\n }\n xs.contents = ((start_2 = (len | 0), (count_2 = ((newSize - len) | 0), target.fill(zero_1, start_2, (start_2 + count_2)))));\n }\n }\n}\n","import { join } from \"./String.js\";\nimport { defaultArg, some, value as value_1 } from \"./Option.js\";\nimport { disposeSafe, isArrayLike, defaultOf, toIterator, getEnumerator, compare, structuralHash, equals } from \"./Util.js\";\nimport { Record } from \"./Types.js\";\nimport { class_type, record_type, option_type } from \"./Reflection.js\";\nimport { SR_inputSequenceTooLong, SR_inputSequenceEmpty, SR_inputMustBeNonNegative, SR_notEnoughElements, SR_differentLengths, SR_keyNotFoundAlt, SR_indexOutOfBounds, SR_inputWasEmpty } from \"./Global.js\";\nimport { transpose as transpose_1, splitInto as splitInto_1, windowed as windowed_1, pairwise as pairwise_1, chunkBySize as chunkBySize_1, map as map_1, permute as permute_1, tryFindIndexBack as tryFindIndexBack_1, tryFindBack as tryFindBack_1, scanBack as scanBack_1, item as item_1, foldBack2 as foldBack2_1, foldBack as foldBack_1, setItem, fill } from \"./Array.js\";\nexport class FSharpList extends Record {\n constructor(head, tail) {\n super();\n this.head = head;\n this.tail = tail;\n }\n toString() {\n const xs = this;\n return (\"[\" + join(\"; \", xs)) + \"]\";\n }\n Equals(other) {\n const xs = this;\n if (xs === other) {\n return true;\n }\n else {\n const loop = (xs_1_mut, ys_1_mut) => {\n loop: while (true) {\n const xs_1 = xs_1_mut, ys_1 = ys_1_mut;\n const matchValue = xs_1.tail;\n const matchValue_1 = ys_1.tail;\n if (matchValue != null) {\n if (matchValue_1 != null) {\n const xt = value_1(matchValue);\n const yt = value_1(matchValue_1);\n if (equals(xs_1.head, ys_1.head)) {\n xs_1_mut = xt;\n ys_1_mut = yt;\n continue loop;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n }\n else if (matchValue_1 != null) {\n return false;\n }\n else {\n return true;\n }\n break;\n }\n };\n return loop(xs, other);\n }\n }\n GetHashCode() {\n const xs = this;\n const loop = (i_mut, h_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, h = h_mut, xs_1 = xs_1_mut;\n const matchValue = xs_1.tail;\n if (matchValue != null) {\n const t = value_1(matchValue);\n if (i > 18) {\n return h | 0;\n }\n else {\n i_mut = (i + 1);\n h_mut = (((h << 1) + structuralHash(xs_1.head)) + (631 * i));\n xs_1_mut = t;\n continue loop;\n }\n }\n else {\n return h | 0;\n }\n break;\n }\n };\n return loop(0, 0, xs) | 0;\n }\n toJSON() {\n const this$ = this;\n return Array.from(this$);\n }\n CompareTo(other) {\n const xs = this;\n const loop = (xs_1_mut, ys_1_mut) => {\n loop: while (true) {\n const xs_1 = xs_1_mut, ys_1 = ys_1_mut;\n const matchValue = xs_1.tail;\n const matchValue_1 = ys_1.tail;\n if (matchValue != null) {\n if (matchValue_1 != null) {\n const xt = value_1(matchValue);\n const yt = value_1(matchValue_1);\n const c = compare(xs_1.head, ys_1.head) | 0;\n if (c === 0) {\n xs_1_mut = xt;\n ys_1_mut = yt;\n continue loop;\n }\n else {\n return c | 0;\n }\n }\n else {\n return 1;\n }\n }\n else if (matchValue_1 != null) {\n return -1;\n }\n else {\n return 0;\n }\n break;\n }\n };\n return loop(xs, other) | 0;\n }\n GetEnumerator() {\n const xs = this;\n return ListEnumerator$1_$ctor_3002E699(xs);\n }\n [Symbol.iterator]() {\n return toIterator(getEnumerator(this));\n }\n \"System.Collections.IEnumerable.GetEnumerator\"() {\n const xs = this;\n return getEnumerator(xs);\n }\n}\nexport function FSharpList_$reflection(gen0) {\n return record_type(\"ListModule.FSharpList\", [gen0], FSharpList, () => [[\"head\", gen0], [\"tail\", option_type(FSharpList_$reflection(gen0))]]);\n}\nexport class ListEnumerator$1 {\n constructor(xs) {\n this.xs = xs;\n this.it = this.xs;\n this.current = defaultOf();\n }\n \"System.Collections.Generic.IEnumerator`1.get_Current\"() {\n const _ = this;\n return _.current;\n }\n \"System.Collections.IEnumerator.get_Current\"() {\n const _ = this;\n return _.current;\n }\n \"System.Collections.IEnumerator.MoveNext\"() {\n const _ = this;\n const matchValue = _.it.tail;\n if (matchValue != null) {\n const t = value_1(matchValue);\n _.current = _.it.head;\n _.it = t;\n return true;\n }\n else {\n return false;\n }\n }\n \"System.Collections.IEnumerator.Reset\"() {\n const _ = this;\n _.it = _.xs;\n _.current = defaultOf();\n }\n Dispose() {\n }\n}\nexport function ListEnumerator$1_$reflection(gen0) {\n return class_type(\"ListModule.ListEnumerator`1\", [gen0], ListEnumerator$1);\n}\nexport function ListEnumerator$1_$ctor_3002E699(xs) {\n return new ListEnumerator$1(xs);\n}\nexport function FSharpList_get_Empty() {\n return new FSharpList(defaultOf(), undefined);\n}\nexport function FSharpList_Cons_305B8EAC(x, xs) {\n return new FSharpList(x, xs);\n}\nexport function FSharpList__get_IsEmpty(xs) {\n return xs.tail == null;\n}\nexport function FSharpList__get_Length(xs) {\n const loop = (i_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, xs_1 = xs_1_mut;\n const matchValue = xs_1.tail;\n if (matchValue != null) {\n i_mut = (i + 1);\n xs_1_mut = value_1(matchValue);\n continue loop;\n }\n else {\n return i | 0;\n }\n break;\n }\n };\n return loop(0, xs) | 0;\n}\nexport function FSharpList__get_Head(xs) {\n const matchValue = xs.tail;\n if (matchValue != null) {\n return xs.head;\n }\n else {\n throw new Error((SR_inputWasEmpty + \"\\\\nParameter name: \") + \"list\");\n }\n}\nexport function FSharpList__get_Tail(xs) {\n const matchValue = xs.tail;\n if (matchValue != null) {\n return value_1(matchValue);\n }\n else {\n throw new Error((SR_inputWasEmpty + \"\\\\nParameter name: \") + \"list\");\n }\n}\nexport function FSharpList__get_Item_Z524259A4(xs, index) {\n const loop = (i_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, xs_1 = xs_1_mut;\n const matchValue = xs_1.tail;\n if (matchValue != null) {\n if (i === index) {\n return xs_1.head;\n }\n else {\n i_mut = (i + 1);\n xs_1_mut = value_1(matchValue);\n continue loop;\n }\n }\n else {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n break;\n }\n };\n return loop(0, xs);\n}\nexport function indexNotFound() {\n throw new Error(SR_keyNotFoundAlt);\n}\nexport function empty() {\n return FSharpList_get_Empty();\n}\nexport function cons(x, xs) {\n return FSharpList_Cons_305B8EAC(x, xs);\n}\nexport function singleton(x) {\n return FSharpList_Cons_305B8EAC(x, FSharpList_get_Empty());\n}\nexport function isEmpty(xs) {\n return FSharpList__get_IsEmpty(xs);\n}\nexport function length(xs) {\n return FSharpList__get_Length(xs);\n}\nexport function head(xs) {\n return FSharpList__get_Head(xs);\n}\nexport function tryHead(xs) {\n if (FSharpList__get_IsEmpty(xs)) {\n return undefined;\n }\n else {\n return some(FSharpList__get_Head(xs));\n }\n}\nexport function tail(xs) {\n return FSharpList__get_Tail(xs);\n}\nexport function tryLast(xs_mut) {\n tryLast: while (true) {\n const xs = xs_mut;\n if (FSharpList__get_IsEmpty(xs)) {\n return undefined;\n }\n else {\n const t = FSharpList__get_Tail(xs);\n if (FSharpList__get_IsEmpty(t)) {\n return some(FSharpList__get_Head(xs));\n }\n else {\n xs_mut = t;\n continue tryLast;\n }\n }\n break;\n }\n}\nexport function last(xs) {\n const matchValue = tryLast(xs);\n if (matchValue == null) {\n throw new Error(SR_inputWasEmpty);\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function compareWith(comparer, xs, ys) {\n const loop = (xs_1_mut, ys_1_mut) => {\n loop: while (true) {\n const xs_1 = xs_1_mut, ys_1 = ys_1_mut;\n const matchValue = FSharpList__get_IsEmpty(xs_1);\n const matchValue_1 = FSharpList__get_IsEmpty(ys_1);\n if (matchValue) {\n if (matchValue_1) {\n return 0;\n }\n else {\n return -1;\n }\n }\n else if (matchValue_1) {\n return 1;\n }\n else {\n const c = comparer(FSharpList__get_Head(xs_1), FSharpList__get_Head(ys_1)) | 0;\n if (c === 0) {\n xs_1_mut = FSharpList__get_Tail(xs_1);\n ys_1_mut = FSharpList__get_Tail(ys_1);\n continue loop;\n }\n else {\n return c | 0;\n }\n }\n break;\n }\n };\n return loop(xs, ys) | 0;\n}\nexport function toArray(xs) {\n const len = FSharpList__get_Length(xs) | 0;\n const res = fill(new Array(len), 0, len, null);\n const loop = (i_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, xs_1 = xs_1_mut;\n if (!FSharpList__get_IsEmpty(xs_1)) {\n setItem(res, i, FSharpList__get_Head(xs_1));\n i_mut = (i + 1);\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n loop(0, xs);\n return res;\n}\nexport function fold(folder, state, xs) {\n let acc = state;\n let xs_1 = xs;\n while (!FSharpList__get_IsEmpty(xs_1)) {\n acc = folder(acc, head(xs_1));\n xs_1 = FSharpList__get_Tail(xs_1);\n }\n return acc;\n}\nexport function reverse(xs) {\n return fold((acc, x) => FSharpList_Cons_305B8EAC(x, acc), FSharpList_get_Empty(), xs);\n}\nexport function foldBack(folder, xs, state) {\n return foldBack_1(folder, toArray(xs), state);\n}\nexport function foldIndexed(folder, state, xs) {\n const loop = (i_mut, acc_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, acc = acc_mut, xs_1 = xs_1_mut;\n if (FSharpList__get_IsEmpty(xs_1)) {\n return acc;\n }\n else {\n i_mut = (i + 1);\n acc_mut = folder(i, acc, FSharpList__get_Head(xs_1));\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n return loop(0, state, xs);\n}\nexport function fold2(folder, state, xs, ys) {\n let acc = state;\n let xs_1 = xs;\n let ys_1 = ys;\n while (!FSharpList__get_IsEmpty(xs_1) && !FSharpList__get_IsEmpty(ys_1)) {\n acc = folder(acc, FSharpList__get_Head(xs_1), FSharpList__get_Head(ys_1));\n xs_1 = FSharpList__get_Tail(xs_1);\n ys_1 = FSharpList__get_Tail(ys_1);\n }\n return acc;\n}\nexport function foldBack2(folder, xs, ys, state) {\n return foldBack2_1(folder, toArray(xs), toArray(ys), state);\n}\nexport function unfold(gen, state) {\n const loop = (acc_mut, node_mut) => {\n let t;\n loop: while (true) {\n const acc = acc_mut, node = node_mut;\n const matchValue = gen(acc);\n if (matchValue != null) {\n acc_mut = value_1(matchValue)[1];\n node_mut = ((t = (new FSharpList(value_1(matchValue)[0], undefined)), (node.tail = t, t)));\n continue loop;\n }\n else {\n return node;\n }\n break;\n }\n };\n const root = FSharpList_get_Empty();\n const node_1 = loop(state, root);\n const t_2 = FSharpList_get_Empty();\n node_1.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function iterate(action, xs) {\n fold((unitVar, x) => {\n action(x);\n }, undefined, xs);\n}\nexport function iterate2(action, xs, ys) {\n fold2((unitVar, x, y) => {\n action(x, y);\n }, undefined, xs, ys);\n}\nexport function iterateIndexed(action, xs) {\n fold((i, x) => {\n action(i, x);\n return (i + 1) | 0;\n }, 0, xs);\n}\nexport function iterateIndexed2(action, xs, ys) {\n fold2((i, x, y) => {\n action(i, x, y);\n return (i + 1) | 0;\n }, 0, xs, ys);\n}\nexport function toSeq(xs) {\n return xs;\n}\nexport function ofArrayWithTail(xs, tail_1) {\n let res = tail_1;\n for (let i = xs.length - 1; i >= 0; i--) {\n res = FSharpList_Cons_305B8EAC(item_1(i, xs), res);\n }\n return res;\n}\nexport function ofArray(xs) {\n return ofArrayWithTail(xs, FSharpList_get_Empty());\n}\nexport function ofSeq(xs) {\n let xs_3, t;\n if (isArrayLike(xs)) {\n return ofArray(xs);\n }\n else if (xs instanceof FSharpList) {\n return xs;\n }\n else {\n const root = FSharpList_get_Empty();\n let node = root;\n const enumerator = getEnumerator(xs);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const x = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n node = ((xs_3 = node, (t = (new FSharpList(x, undefined)), (xs_3.tail = t, t))));\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n const xs_5 = node;\n const t_2 = FSharpList_get_Empty();\n xs_5.tail = t_2;\n return FSharpList__get_Tail(root);\n }\n}\nexport function concat(lists) {\n const root = FSharpList_get_Empty();\n let node = root;\n const action = (xs) => {\n node = fold((acc, x) => {\n const t = new FSharpList(x, undefined);\n acc.tail = t;\n return t;\n }, node, xs);\n };\n if (isArrayLike(lists)) {\n const xs_3 = lists;\n xs_3.forEach(action);\n }\n else if (lists instanceof FSharpList) {\n iterate(action, lists);\n }\n else {\n const enumerator = getEnumerator(lists);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n action(enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n }\n const xs_6 = node;\n const t_2 = FSharpList_get_Empty();\n xs_6.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function scan(folder, state, xs) {\n let xs_4, t_2;\n const root = FSharpList_get_Empty();\n let node;\n const t = new FSharpList(state, undefined);\n root.tail = t;\n node = t;\n let acc = state;\n let xs_3 = xs;\n while (!FSharpList__get_IsEmpty(xs_3)) {\n acc = folder(acc, FSharpList__get_Head(xs_3));\n node = ((xs_4 = node, (t_2 = (new FSharpList(acc, undefined)), (xs_4.tail = t_2, t_2))));\n xs_3 = FSharpList__get_Tail(xs_3);\n }\n const xs_6 = node;\n const t_4 = FSharpList_get_Empty();\n xs_6.tail = t_4;\n return FSharpList__get_Tail(root);\n}\nexport function scanBack(folder, xs, state) {\n return ofArray(scanBack_1(folder, toArray(xs), state));\n}\nexport function append(xs, ys) {\n return fold((acc, x) => FSharpList_Cons_305B8EAC(x, acc), ys, reverse(xs));\n}\nexport function collect(mapping, xs) {\n let xs_1, t;\n const root = FSharpList_get_Empty();\n let node = root;\n let ys = xs;\n while (!FSharpList__get_IsEmpty(ys)) {\n let zs = mapping(FSharpList__get_Head(ys));\n while (!FSharpList__get_IsEmpty(zs)) {\n node = ((xs_1 = node, (t = (new FSharpList(FSharpList__get_Head(zs), undefined)), (xs_1.tail = t, t))));\n zs = FSharpList__get_Tail(zs);\n }\n ys = FSharpList__get_Tail(ys);\n }\n const xs_3 = node;\n const t_2 = FSharpList_get_Empty();\n xs_3.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function mapIndexed(mapping, xs) {\n const root = FSharpList_get_Empty();\n const node = foldIndexed((i, acc, x) => {\n const t = new FSharpList(mapping(i, x), undefined);\n acc.tail = t;\n return t;\n }, root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function map(mapping, xs) {\n const root = FSharpList_get_Empty();\n const node = fold((acc, x) => {\n const t = new FSharpList(mapping(x), undefined);\n acc.tail = t;\n return t;\n }, root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function indexed(xs) {\n return mapIndexed((i, x) => [i, x], xs);\n}\nexport function map2(mapping, xs, ys) {\n const root = FSharpList_get_Empty();\n const node = fold2((acc, x, y) => {\n const t = new FSharpList(mapping(x, y), undefined);\n acc.tail = t;\n return t;\n }, root, xs, ys);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function mapIndexed2(mapping, xs, ys) {\n const loop = (i_mut, acc_mut, xs_1_mut, ys_1_mut) => {\n let t;\n loop: while (true) {\n const i = i_mut, acc = acc_mut, xs_1 = xs_1_mut, ys_1 = ys_1_mut;\n if (FSharpList__get_IsEmpty(xs_1) ? true : FSharpList__get_IsEmpty(ys_1)) {\n return acc;\n }\n else {\n i_mut = (i + 1);\n acc_mut = ((t = (new FSharpList(mapping(i, FSharpList__get_Head(xs_1), FSharpList__get_Head(ys_1)), undefined)), (acc.tail = t, t)));\n xs_1_mut = FSharpList__get_Tail(xs_1);\n ys_1_mut = FSharpList__get_Tail(ys_1);\n continue loop;\n }\n break;\n }\n };\n const root = FSharpList_get_Empty();\n const node_1 = loop(0, root, xs, ys);\n const t_2 = FSharpList_get_Empty();\n node_1.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function map3(mapping, xs, ys, zs) {\n const loop = (acc_mut, xs_1_mut, ys_1_mut, zs_1_mut) => {\n let t;\n loop: while (true) {\n const acc = acc_mut, xs_1 = xs_1_mut, ys_1 = ys_1_mut, zs_1 = zs_1_mut;\n if ((FSharpList__get_IsEmpty(xs_1) ? true : FSharpList__get_IsEmpty(ys_1)) ? true : FSharpList__get_IsEmpty(zs_1)) {\n return acc;\n }\n else {\n acc_mut = ((t = (new FSharpList(mapping(FSharpList__get_Head(xs_1), FSharpList__get_Head(ys_1), FSharpList__get_Head(zs_1)), undefined)), (acc.tail = t, t)));\n xs_1_mut = FSharpList__get_Tail(xs_1);\n ys_1_mut = FSharpList__get_Tail(ys_1);\n zs_1_mut = FSharpList__get_Tail(zs_1);\n continue loop;\n }\n break;\n }\n };\n const root = FSharpList_get_Empty();\n const node_1 = loop(root, xs, ys, zs);\n const t_2 = FSharpList_get_Empty();\n node_1.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function mapFold(mapping, state, xs) {\n const root = FSharpList_get_Empty();\n const patternInput_1 = fold((tupledArg, x) => {\n let t;\n const patternInput = mapping(tupledArg[1], x);\n return [(t = (new FSharpList(patternInput[0], undefined)), (tupledArg[0].tail = t, t)), patternInput[1]];\n }, [root, state], xs);\n const t_2 = FSharpList_get_Empty();\n patternInput_1[0].tail = t_2;\n return [FSharpList__get_Tail(root), patternInput_1[1]];\n}\nexport function mapFoldBack(mapping, xs, state) {\n return mapFold((acc, x) => mapping(x, acc), state, reverse(xs));\n}\nexport function tryPick(f, xs) {\n const loop = (xs_1_mut) => {\n loop: while (true) {\n const xs_1 = xs_1_mut;\n if (FSharpList__get_IsEmpty(xs_1)) {\n return undefined;\n }\n else {\n const matchValue = f(FSharpList__get_Head(xs_1));\n if (matchValue == null) {\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n else {\n return matchValue;\n }\n }\n break;\n }\n };\n return loop(xs);\n}\nexport function pick(f, xs) {\n const matchValue = tryPick(f, xs);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function tryFind(f, xs) {\n return tryPick((x) => (f(x) ? some(x) : undefined), xs);\n}\nexport function find(f, xs) {\n const matchValue = tryFind(f, xs);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function tryFindBack(f, xs) {\n return tryFindBack_1(f, toArray(xs));\n}\nexport function findBack(f, xs) {\n const matchValue = tryFindBack(f, xs);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function tryFindIndex(f, xs) {\n const loop = (i_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, xs_1 = xs_1_mut;\n if (FSharpList__get_IsEmpty(xs_1)) {\n return undefined;\n }\n else if (f(FSharpList__get_Head(xs_1))) {\n return i;\n }\n else {\n i_mut = (i + 1);\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n return loop(0, xs);\n}\nexport function findIndex(f, xs) {\n const matchValue = tryFindIndex(f, xs);\n if (matchValue == null) {\n indexNotFound();\n return -1;\n }\n else {\n return value_1(matchValue) | 0;\n }\n}\nexport function tryFindIndexBack(f, xs) {\n return tryFindIndexBack_1(f, toArray(xs));\n}\nexport function findIndexBack(f, xs) {\n const matchValue = tryFindIndexBack(f, xs);\n if (matchValue == null) {\n indexNotFound();\n return -1;\n }\n else {\n return value_1(matchValue) | 0;\n }\n}\nexport function tryItem(n, xs) {\n const loop = (i_mut, xs_1_mut) => {\n loop: while (true) {\n const i = i_mut, xs_1 = xs_1_mut;\n if (FSharpList__get_IsEmpty(xs_1)) {\n return undefined;\n }\n else if (i === n) {\n return some(FSharpList__get_Head(xs_1));\n }\n else {\n i_mut = (i + 1);\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n return loop(0, xs);\n}\nexport function item(n, xs) {\n return FSharpList__get_Item_Z524259A4(xs, n);\n}\nexport function filter(f, xs) {\n const root = FSharpList_get_Empty();\n const node = fold((acc, x) => {\n if (f(x)) {\n const t = new FSharpList(x, undefined);\n acc.tail = t;\n return t;\n }\n else {\n return acc;\n }\n }, root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function partition(f, xs) {\n const matchValue = FSharpList_get_Empty();\n const root2 = FSharpList_get_Empty();\n const root1 = matchValue;\n const patternInput_1 = fold((tupledArg, x) => {\n let t, t_2;\n const lacc = tupledArg[0];\n const racc = tupledArg[1];\n if (f(x)) {\n return [(t = (new FSharpList(x, undefined)), (lacc.tail = t, t)), racc];\n }\n else {\n return [lacc, (t_2 = (new FSharpList(x, undefined)), (racc.tail = t_2, t_2))];\n }\n }, [root1, root2], xs);\n const t_4 = FSharpList_get_Empty();\n patternInput_1[0].tail = t_4;\n const t_5 = FSharpList_get_Empty();\n patternInput_1[1].tail = t_5;\n return [FSharpList__get_Tail(root1), FSharpList__get_Tail(root2)];\n}\nexport function choose(f, xs) {\n const root = FSharpList_get_Empty();\n const node = fold((acc, x) => {\n const matchValue = f(x);\n if (matchValue == null) {\n return acc;\n }\n else {\n const t = new FSharpList(value_1(matchValue), undefined);\n acc.tail = t;\n return t;\n }\n }, root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function contains(value, xs, eq) {\n return tryFindIndex((v) => eq.Equals(value, v), xs) != null;\n}\nexport function initialize(n, f) {\n let xs, t;\n const root = FSharpList_get_Empty();\n let node = root;\n for (let i = 0; i <= (n - 1); i++) {\n node = ((xs = node, (t = (new FSharpList(f(i), undefined)), (xs.tail = t, t))));\n }\n const xs_2 = node;\n const t_2 = FSharpList_get_Empty();\n xs_2.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function replicate(n, x) {\n return initialize(n, (_arg) => x);\n}\nexport function reduce(f, xs) {\n if (FSharpList__get_IsEmpty(xs)) {\n throw new Error(SR_inputWasEmpty);\n }\n else {\n return fold(f, head(xs), tail(xs));\n }\n}\nexport function reduceBack(f, xs) {\n if (FSharpList__get_IsEmpty(xs)) {\n throw new Error(SR_inputWasEmpty);\n }\n else {\n return foldBack(f, tail(xs), head(xs));\n }\n}\nexport function forAll(f, xs) {\n return fold((acc, x) => (acc && f(x)), true, xs);\n}\nexport function forAll2(f, xs, ys) {\n return fold2((acc, x, y) => (acc && f(x, y)), true, xs, ys);\n}\nexport function exists(f, xs) {\n return tryFindIndex(f, xs) != null;\n}\nexport function exists2(f_mut, xs_mut, ys_mut) {\n exists2: while (true) {\n const f = f_mut, xs = xs_mut, ys = ys_mut;\n const matchValue = FSharpList__get_IsEmpty(xs);\n const matchValue_1 = FSharpList__get_IsEmpty(ys);\n let matchResult;\n if (matchValue) {\n if (matchValue_1) {\n matchResult = 0;\n }\n else {\n matchResult = 2;\n }\n }\n else if (matchValue_1) {\n matchResult = 2;\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n return false;\n case 1:\n if (f(FSharpList__get_Head(xs), FSharpList__get_Head(ys))) {\n return true;\n }\n else {\n f_mut = f;\n xs_mut = FSharpList__get_Tail(xs);\n ys_mut = FSharpList__get_Tail(ys);\n continue exists2;\n }\n default:\n throw new Error((SR_differentLengths + \"\\\\nParameter name: \") + \"list2\");\n }\n break;\n }\n}\nexport function unzip(xs) {\n return foldBack((tupledArg, tupledArg_1) => [FSharpList_Cons_305B8EAC(tupledArg[0], tupledArg_1[0]), FSharpList_Cons_305B8EAC(tupledArg[1], tupledArg_1[1])], xs, [FSharpList_get_Empty(), FSharpList_get_Empty()]);\n}\nexport function unzip3(xs) {\n return foldBack((tupledArg, tupledArg_1) => [FSharpList_Cons_305B8EAC(tupledArg[0], tupledArg_1[0]), FSharpList_Cons_305B8EAC(tupledArg[1], tupledArg_1[1]), FSharpList_Cons_305B8EAC(tupledArg[2], tupledArg_1[2])], xs, [FSharpList_get_Empty(), FSharpList_get_Empty(), FSharpList_get_Empty()]);\n}\nexport function zip(xs, ys) {\n return map2((x, y) => [x, y], xs, ys);\n}\nexport function zip3(xs, ys, zs) {\n return map3((x, y, z) => [x, y, z], xs, ys, zs);\n}\nexport function sortWith(comparer, xs) {\n const arr = toArray(xs);\n arr.sort(comparer);\n return ofArray(arr);\n}\nexport function sort(xs, comparer) {\n return sortWith((x, y) => comparer.Compare(x, y), xs);\n}\nexport function sortBy(projection, xs, comparer) {\n return sortWith((x, y) => comparer.Compare(projection(x), projection(y)), xs);\n}\nexport function sortDescending(xs, comparer) {\n return sortWith((x, y) => (comparer.Compare(x, y) * -1), xs);\n}\nexport function sortByDescending(projection, xs, comparer) {\n return sortWith((x, y) => (comparer.Compare(projection(x), projection(y)) * -1), xs);\n}\nexport function sum(xs, adder) {\n return fold((acc, x) => adder.Add(acc, x), adder.GetZero(), xs);\n}\nexport function sumBy(f, xs, adder) {\n return fold((acc, x) => adder.Add(acc, f(x)), adder.GetZero(), xs);\n}\nexport function maxBy(projection, xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(projection(y), projection(x)) > 0) ? y : x), xs);\n}\nexport function max(xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(y, x) > 0) ? y : x), xs);\n}\nexport function minBy(projection, xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(projection(y), projection(x)) > 0) ? x : y), xs);\n}\nexport function min(xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(y, x) > 0) ? x : y), xs);\n}\nexport function average(xs, averager) {\n let count = 0;\n const total = fold((acc, x) => {\n count = ((count + 1) | 0);\n return averager.Add(acc, x);\n }, averager.GetZero(), xs);\n return averager.DivideByInt(total, count);\n}\nexport function averageBy(f, xs, averager) {\n let count = 0;\n const total = fold((acc, x) => {\n count = ((count + 1) | 0);\n return averager.Add(acc, f(x));\n }, averager.GetZero(), xs);\n return averager.DivideByInt(total, count);\n}\nexport function permute(f, xs) {\n return ofArray(permute_1(f, toArray(xs)));\n}\nexport function chunkBySize(chunkSize, xs) {\n return ofArray(map_1(ofArray, chunkBySize_1(chunkSize, toArray(xs))));\n}\nexport function allPairs(xs, ys) {\n const root = FSharpList_get_Empty();\n let node = root;\n iterate((x) => {\n iterate((y) => {\n let xs_1, t;\n node = ((xs_1 = node, (t = (new FSharpList([x, y], undefined)), (xs_1.tail = t, t))));\n }, ys);\n }, xs);\n const xs_3 = node;\n const t_2 = FSharpList_get_Empty();\n xs_3.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function skip(count_mut, xs_mut) {\n skip: while (true) {\n const count = count_mut, xs = xs_mut;\n if (count <= 0) {\n return xs;\n }\n else if (FSharpList__get_IsEmpty(xs)) {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"list\");\n }\n else {\n count_mut = (count - 1);\n xs_mut = FSharpList__get_Tail(xs);\n continue skip;\n }\n break;\n }\n}\nexport function skipWhile(predicate_mut, xs_mut) {\n skipWhile: while (true) {\n const predicate = predicate_mut, xs = xs_mut;\n if (FSharpList__get_IsEmpty(xs)) {\n return xs;\n }\n else if (!predicate(FSharpList__get_Head(xs))) {\n return xs;\n }\n else {\n predicate_mut = predicate;\n xs_mut = FSharpList__get_Tail(xs);\n continue skipWhile;\n }\n break;\n }\n}\nexport function take(count, xs) {\n if (count < 0) {\n throw new Error((SR_inputMustBeNonNegative + \"\\\\nParameter name: \") + \"count\");\n }\n const loop = (i_mut, acc_mut, xs_1_mut) => {\n let t;\n loop: while (true) {\n const i = i_mut, acc = acc_mut, xs_1 = xs_1_mut;\n if (i <= 0) {\n return acc;\n }\n else if (FSharpList__get_IsEmpty(xs_1)) {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"list\");\n }\n else {\n i_mut = (i - 1);\n acc_mut = ((t = (new FSharpList(FSharpList__get_Head(xs_1), undefined)), (acc.tail = t, t)));\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n const root = FSharpList_get_Empty();\n const node = loop(count, root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function takeWhile(predicate, xs) {\n const loop = (acc_mut, xs_1_mut) => {\n let t;\n loop: while (true) {\n const acc = acc_mut, xs_1 = xs_1_mut;\n if (FSharpList__get_IsEmpty(xs_1)) {\n return acc;\n }\n else if (!predicate(FSharpList__get_Head(xs_1))) {\n return acc;\n }\n else {\n acc_mut = ((t = (new FSharpList(FSharpList__get_Head(xs_1), undefined)), (acc.tail = t, t)));\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n const root = FSharpList_get_Empty();\n const node = loop(root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function truncate(count, xs) {\n const loop = (i_mut, acc_mut, xs_1_mut) => {\n let t;\n loop: while (true) {\n const i = i_mut, acc = acc_mut, xs_1 = xs_1_mut;\n if (i <= 0) {\n return acc;\n }\n else if (FSharpList__get_IsEmpty(xs_1)) {\n return acc;\n }\n else {\n i_mut = (i - 1);\n acc_mut = ((t = (new FSharpList(FSharpList__get_Head(xs_1), undefined)), (acc.tail = t, t)));\n xs_1_mut = FSharpList__get_Tail(xs_1);\n continue loop;\n }\n break;\n }\n };\n const root = FSharpList_get_Empty();\n const node = loop(count, root, xs);\n const t_2 = FSharpList_get_Empty();\n node.tail = t_2;\n return FSharpList__get_Tail(root);\n}\nexport function getSlice(startIndex, endIndex, xs) {\n const len = length(xs) | 0;\n let startIndex_1;\n const index = defaultArg(startIndex, 0) | 0;\n startIndex_1 = ((index < 0) ? 0 : index);\n let endIndex_1;\n const index_1 = defaultArg(endIndex, len - 1) | 0;\n endIndex_1 = ((index_1 >= len) ? (len - 1) : index_1);\n if (endIndex_1 < startIndex_1) {\n return FSharpList_get_Empty();\n }\n else {\n return take((endIndex_1 - startIndex_1) + 1, skip(startIndex_1, xs));\n }\n}\nexport function splitAt(index, xs) {\n if (index < 0) {\n throw new Error((SR_inputMustBeNonNegative + \"\\\\nParameter name: \") + \"index\");\n }\n if (index > FSharpList__get_Length(xs)) {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"index\");\n }\n return [take(index, xs), skip(index, xs)];\n}\nexport function exactlyOne(xs) {\n if (FSharpList__get_IsEmpty(xs)) {\n throw new Error((SR_inputSequenceEmpty + \"\\\\nParameter name: \") + \"list\");\n }\n else if (FSharpList__get_IsEmpty(FSharpList__get_Tail(xs))) {\n return FSharpList__get_Head(xs);\n }\n else {\n throw new Error((SR_inputSequenceTooLong + \"\\\\nParameter name: \") + \"list\");\n }\n}\nexport function tryExactlyOne(xs) {\n if (!FSharpList__get_IsEmpty(xs) && FSharpList__get_IsEmpty(FSharpList__get_Tail(xs))) {\n return some(FSharpList__get_Head(xs));\n }\n else {\n return undefined;\n }\n}\nexport function where(predicate, xs) {\n return filter(predicate, xs);\n}\nexport function pairwise(xs) {\n return ofArray(pairwise_1(toArray(xs)));\n}\nexport function windowed(windowSize, xs) {\n return ofArray(map_1(ofArray, windowed_1(windowSize, toArray(xs))));\n}\nexport function splitInto(chunks, xs) {\n return ofArray(map_1(ofArray, splitInto_1(chunks, toArray(xs))));\n}\nexport function transpose(lists) {\n return ofArray(map_1(ofArray, transpose_1(map_1(toArray, Array.from(lists)))));\n}\nexport function insertAt(index, y, xs) {\n let i = -1;\n let isDone = false;\n const result = fold((acc, x) => {\n i = ((i + 1) | 0);\n if (i === index) {\n isDone = true;\n return FSharpList_Cons_305B8EAC(x, FSharpList_Cons_305B8EAC(y, acc));\n }\n else {\n return FSharpList_Cons_305B8EAC(x, acc);\n }\n }, FSharpList_get_Empty(), xs);\n return reverse(isDone ? result : (((i + 1) === index) ? FSharpList_Cons_305B8EAC(y, result) : (() => {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n })()));\n}\nexport function insertManyAt(index, ys, xs) {\n let i = -1;\n let isDone = false;\n const ys_1 = ofSeq(ys);\n const result = fold((acc, x) => {\n i = ((i + 1) | 0);\n if (i === index) {\n isDone = true;\n return FSharpList_Cons_305B8EAC(x, append(ys_1, acc));\n }\n else {\n return FSharpList_Cons_305B8EAC(x, acc);\n }\n }, FSharpList_get_Empty(), xs);\n return reverse(isDone ? result : (((i + 1) === index) ? append(ys_1, result) : (() => {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n })()));\n}\nexport function removeAt(index, xs) {\n let i = -1;\n let isDone = false;\n const ys = filter((_arg) => {\n i = ((i + 1) | 0);\n if (i === index) {\n isDone = true;\n return false;\n }\n else {\n return true;\n }\n }, xs);\n if (!isDone) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return ys;\n}\nexport function removeManyAt(index, count, xs) {\n let i = -1;\n let status = -1;\n const ys = filter((_arg) => {\n i = ((i + 1) | 0);\n if (i === index) {\n status = 0;\n return false;\n }\n else if (i > index) {\n if (i < (index + count)) {\n return false;\n }\n else {\n status = 1;\n return true;\n }\n }\n else {\n return true;\n }\n }, xs);\n const status_1 = (((status === 0) && ((i + 1) === (index + count))) ? 1 : status) | 0;\n if (status_1 < 1) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + ((status_1 < 0) ? \"index\" : \"count\"));\n }\n return ys;\n}\nexport function updateAt(index, y, xs) {\n let isDone = false;\n const ys = mapIndexed((i, x) => {\n if (i === index) {\n isDone = true;\n return y;\n }\n else {\n return x;\n }\n }, xs);\n if (!isDone) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return ys;\n}\n","import { clear, defaultOf, equals, isDisposable, isArrayLike, toIterator, disposeSafe, getEnumerator } from \"./Util.js\";\nimport { toString } from \"./Types.js\";\nimport { class_type } from \"./Reflection.js\";\nimport { some, value as value_1 } from \"./Option.js\";\nimport { Operators_Lock, Operators_NullArg } from \"./FSharp.Core.js\";\nimport { chunkBySize as chunkBySize_1, permute as permute_1, transpose as transpose_1, map as map_1, windowed as windowed_1, splitInto as splitInto_1, pairwise as pairwise_1, scanBack as scanBack_1, reverse as reverse_1, mapFoldBack as mapFoldBack_1, mapFold as mapFold_1, tryItem as tryItem_1, tryHead as tryHead_1, foldBack2 as foldBack2_1, foldBack as foldBack_1, tryFindIndexBack as tryFindIndexBack_1, tryFindBack as tryFindBack_1, singleton as singleton_1 } from \"./Array.js\";\nimport { length as length_1, tryItem as tryItem_2, isEmpty as isEmpty_1, tryHead as tryHead_2, ofSeq as ofSeq_1, ofArray as ofArray_1, toArray as toArray_1, FSharpList } from \"./List.js\";\nimport { SR_indexOutOfBounds } from \"./Global.js\";\nexport const SR_enumerationAlreadyFinished = \"Enumeration already finished.\";\nexport const SR_enumerationNotStarted = \"Enumeration has not started. Call MoveNext.\";\nexport const SR_inputSequenceEmpty = \"The input sequence was empty.\";\nexport const SR_inputSequenceTooLong = \"The input sequence contains more than one element.\";\nexport const SR_keyNotFoundAlt = \"An index satisfying the predicate was not found in the collection.\";\nexport const SR_notEnoughElements = \"The input sequence has an insufficient number of elements.\";\nexport const SR_resetNotSupported = \"Reset is not supported on this enumerator.\";\nexport function Enumerator_noReset() {\n throw new Error(SR_resetNotSupported);\n}\nexport function Enumerator_notStarted() {\n throw new Error(SR_enumerationNotStarted);\n}\nexport function Enumerator_alreadyFinished() {\n throw new Error(SR_enumerationAlreadyFinished);\n}\nexport class Enumerator_Seq {\n constructor(f) {\n this.f = f;\n }\n toString() {\n const xs = this;\n let i = 0;\n let str = \"seq [\";\n const e = getEnumerator(xs);\n try {\n while ((i < 4) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n if (i > 0) {\n str = (str + \"; \");\n }\n str = (str + toString(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()));\n i = ((i + 1) | 0);\n }\n if (i === 4) {\n str = (str + \"; ...\");\n }\n return str + \"]\";\n }\n finally {\n disposeSafe(e);\n }\n }\n GetEnumerator() {\n const x = this;\n return x.f();\n }\n [Symbol.iterator]() {\n return toIterator(getEnumerator(this));\n }\n \"System.Collections.IEnumerable.GetEnumerator\"() {\n const x = this;\n return x.f();\n }\n}\nexport function Enumerator_Seq_$reflection(gen0) {\n return class_type(\"SeqModule.Enumerator.Seq\", [gen0], Enumerator_Seq);\n}\nexport function Enumerator_Seq_$ctor_673A07F2(f) {\n return new Enumerator_Seq(f);\n}\nexport class Enumerator_FromFunctions$1 {\n constructor(current, next, dispose) {\n this.current = current;\n this.next = next;\n this.dispose = dispose;\n }\n \"System.Collections.Generic.IEnumerator`1.get_Current\"() {\n const _ = this;\n return _.current();\n }\n \"System.Collections.IEnumerator.get_Current\"() {\n const _ = this;\n return _.current();\n }\n \"System.Collections.IEnumerator.MoveNext\"() {\n const _ = this;\n return _.next();\n }\n \"System.Collections.IEnumerator.Reset\"() {\n Enumerator_noReset();\n }\n Dispose() {\n const _ = this;\n _.dispose();\n }\n}\nexport function Enumerator_FromFunctions$1_$reflection(gen0) {\n return class_type(\"SeqModule.Enumerator.FromFunctions`1\", [gen0], Enumerator_FromFunctions$1);\n}\nexport function Enumerator_FromFunctions$1_$ctor_58C54629(current, next, dispose) {\n return new Enumerator_FromFunctions$1(current, next, dispose);\n}\nexport function Enumerator_cast(e) {\n return Enumerator_FromFunctions$1_$ctor_58C54629(() => e[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), () => e[\"System.Collections.IEnumerator.MoveNext\"](), () => {\n disposeSafe(e);\n });\n}\nexport function Enumerator_concat(sources) {\n let outerOpt = undefined;\n let innerOpt = undefined;\n let started = false;\n let finished = false;\n let curr = undefined;\n const finish = () => {\n finished = true;\n if (innerOpt != null) {\n const inner = value_1(innerOpt);\n try {\n disposeSafe(inner);\n }\n finally {\n innerOpt = undefined;\n }\n }\n if (outerOpt != null) {\n const outer = value_1(outerOpt);\n try {\n disposeSafe(outer);\n }\n finally {\n outerOpt = undefined;\n }\n }\n };\n return Enumerator_FromFunctions$1_$ctor_58C54629(() => {\n if (!started) {\n Enumerator_notStarted();\n }\n else if (finished) {\n Enumerator_alreadyFinished();\n }\n if (curr != null) {\n return value_1(curr);\n }\n else {\n return Enumerator_alreadyFinished();\n }\n }, () => {\n let copyOfStruct;\n if (!started) {\n started = true;\n }\n if (finished) {\n return false;\n }\n else {\n let res = undefined;\n while (res == null) {\n const outerOpt_1 = outerOpt;\n const innerOpt_1 = innerOpt;\n if (outerOpt_1 != null) {\n if (innerOpt_1 != null) {\n const inner_1 = value_1(innerOpt_1);\n if (inner_1[\"System.Collections.IEnumerator.MoveNext\"]()) {\n curr = some(inner_1[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n res = true;\n }\n else {\n try {\n disposeSafe(inner_1);\n }\n finally {\n innerOpt = undefined;\n }\n }\n }\n else {\n const outer_1 = value_1(outerOpt_1);\n if (outer_1[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const ie = outer_1[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n innerOpt = ((copyOfStruct = ie, getEnumerator(copyOfStruct)));\n }\n else {\n finish();\n res = false;\n }\n }\n }\n else {\n outerOpt = getEnumerator(sources);\n }\n }\n return value_1(res);\n }\n }, () => {\n if (!finished) {\n finish();\n }\n });\n}\nexport function Enumerator_enumerateThenFinally(f, e) {\n return Enumerator_FromFunctions$1_$ctor_58C54629(() => e[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), () => e[\"System.Collections.IEnumerator.MoveNext\"](), () => {\n try {\n disposeSafe(e);\n }\n finally {\n f();\n }\n });\n}\nexport function Enumerator_generateWhileSome(openf, compute, closef) {\n let started = false;\n let curr = undefined;\n let state = some(openf());\n const dispose = () => {\n if (state != null) {\n const x_1 = value_1(state);\n try {\n closef(x_1);\n }\n finally {\n state = undefined;\n }\n }\n };\n const finish = () => {\n try {\n dispose();\n }\n finally {\n curr = undefined;\n }\n };\n return Enumerator_FromFunctions$1_$ctor_58C54629(() => {\n if (!started) {\n Enumerator_notStarted();\n }\n if (curr != null) {\n return value_1(curr);\n }\n else {\n return Enumerator_alreadyFinished();\n }\n }, () => {\n if (!started) {\n started = true;\n }\n if (state != null) {\n const s = value_1(state);\n let matchValue_1;\n try {\n matchValue_1 = compute(s);\n }\n catch (matchValue) {\n finish();\n throw matchValue;\n }\n if (matchValue_1 != null) {\n curr = matchValue_1;\n return true;\n }\n else {\n finish();\n return false;\n }\n }\n else {\n return false;\n }\n }, dispose);\n}\nexport function Enumerator_unfold(f, state) {\n let curr = undefined;\n let acc = state;\n return Enumerator_FromFunctions$1_$ctor_58C54629(() => {\n if (curr != null) {\n const x = value_1(curr)[0];\n const st = value_1(curr)[1];\n return x;\n }\n else {\n return Enumerator_notStarted();\n }\n }, () => {\n curr = f(acc);\n if (curr != null) {\n const x_1 = value_1(curr)[0];\n const st_1 = value_1(curr)[1];\n acc = st_1;\n return true;\n }\n else {\n return false;\n }\n }, () => {\n });\n}\nexport function indexNotFound() {\n throw new Error(SR_keyNotFoundAlt);\n}\nexport function checkNonNull(argName, arg) {\n if (arg == null) {\n Operators_NullArg(argName);\n }\n}\nexport function mkSeq(f) {\n return Enumerator_Seq_$ctor_673A07F2(f);\n}\nexport function ofSeq(xs) {\n checkNonNull(\"source\", xs);\n return getEnumerator(xs);\n}\nexport function delay(generator) {\n return mkSeq(() => getEnumerator(generator()));\n}\nexport function concat(sources) {\n return mkSeq(() => Enumerator_concat(sources));\n}\nexport function unfold(generator, state) {\n return mkSeq(() => Enumerator_unfold(generator, state));\n}\nexport function empty() {\n return delay(() => (new Array(0)));\n}\nexport function singleton(x) {\n return delay(() => singleton_1(x));\n}\nexport function ofArray(arr) {\n return arr;\n}\nexport function toArray(xs) {\n if (xs instanceof FSharpList) {\n const a = xs;\n return toArray_1(a);\n }\n else {\n return Array.from(xs);\n }\n}\nexport function ofList(xs) {\n return xs;\n}\nexport function toList(xs) {\n if (isArrayLike(xs)) {\n return ofArray_1(xs);\n }\n else if (xs instanceof FSharpList) {\n return xs;\n }\n else {\n return ofSeq_1(xs);\n }\n}\nexport function generate(create, compute, dispose) {\n return mkSeq(() => Enumerator_generateWhileSome(create, compute, dispose));\n}\nexport function generateIndexed(create, compute, dispose) {\n return mkSeq(() => {\n let i = -1;\n return Enumerator_generateWhileSome(create, (x) => {\n i = ((i + 1) | 0);\n return compute(i, x);\n }, dispose);\n });\n}\nexport function append(xs, ys) {\n return concat([xs, ys]);\n}\nexport function cast(xs) {\n return mkSeq(() => {\n checkNonNull(\"source\", xs);\n return Enumerator_cast(getEnumerator(xs));\n });\n}\nexport function choose(chooser, xs) {\n return generate(() => ofSeq(xs), (e) => {\n let curr = undefined;\n while ((curr == null) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n curr = chooser(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return curr;\n }, (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function compareWith(comparer, xs, ys) {\n const e1 = ofSeq(xs);\n try {\n const e2 = ofSeq(ys);\n try {\n let c = 0;\n let b1 = e1[\"System.Collections.IEnumerator.MoveNext\"]();\n let b2 = e2[\"System.Collections.IEnumerator.MoveNext\"]();\n while (((c === 0) && b1) && b2) {\n c = (comparer(e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()) | 0);\n if (c === 0) {\n b1 = e1[\"System.Collections.IEnumerator.MoveNext\"]();\n b2 = e2[\"System.Collections.IEnumerator.MoveNext\"]();\n }\n }\n return ((c !== 0) ? c : (b1 ? 1 : (b2 ? -1 : 0))) | 0;\n }\n finally {\n disposeSafe(e2);\n }\n }\n finally {\n disposeSafe(e1);\n }\n}\nexport function contains(value, xs, comparer) {\n const e = ofSeq(xs);\n try {\n let found = false;\n while (!found && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n found = comparer.Equals(value, e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return found;\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function enumerateFromFunctions(create, moveNext, current) {\n return generate(create, (x) => (moveNext(x) ? some(current(x)) : undefined), (x_1) => {\n const matchValue = x_1;\n if (isDisposable(matchValue)) {\n const id = matchValue;\n disposeSafe(id);\n }\n });\n}\nexport function enumerateThenFinally(source, compensation) {\n const compensation_1 = compensation;\n return mkSeq(() => {\n try {\n return Enumerator_enumerateThenFinally(compensation_1, ofSeq(source));\n }\n catch (matchValue) {\n compensation_1();\n throw matchValue;\n }\n });\n}\nexport function enumerateUsing(resource, source) {\n const compensation = () => {\n if (equals(resource, defaultOf())) {\n }\n else {\n let copyOfStruct = resource;\n disposeSafe(copyOfStruct);\n }\n };\n return mkSeq(() => {\n try {\n return Enumerator_enumerateThenFinally(compensation, ofSeq(source(resource)));\n }\n catch (matchValue_1) {\n compensation();\n throw matchValue_1;\n }\n });\n}\nexport function enumerateWhile(guard, xs) {\n return concat(unfold((i) => (guard() ? [xs, i + 1] : undefined), 0));\n}\nexport function filter(f, xs) {\n return choose((x) => {\n if (f(x)) {\n return some(x);\n }\n else {\n return undefined;\n }\n }, xs);\n}\nexport function exists(predicate, xs) {\n const e = ofSeq(xs);\n try {\n let found = false;\n while (!found && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n found = predicate(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return found;\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function exists2(predicate, xs, ys) {\n const e1 = ofSeq(xs);\n try {\n const e2 = ofSeq(ys);\n try {\n let found = false;\n while ((!found && e1[\"System.Collections.IEnumerator.MoveNext\"]()) && e2[\"System.Collections.IEnumerator.MoveNext\"]()) {\n found = predicate(e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return found;\n }\n finally {\n disposeSafe(e2);\n }\n }\n finally {\n disposeSafe(e1);\n }\n}\nexport function exactlyOne(xs) {\n const e = ofSeq(xs);\n try {\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const v = e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n throw new Error((SR_inputSequenceTooLong + \"\\\\nParameter name: \") + \"source\");\n }\n else {\n return v;\n }\n }\n else {\n throw new Error((SR_inputSequenceEmpty + \"\\\\nParameter name: \") + \"source\");\n }\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function tryExactlyOne(xs) {\n const e = ofSeq(xs);\n try {\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const v = e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n return e[\"System.Collections.IEnumerator.MoveNext\"]() ? undefined : some(v);\n }\n else {\n return undefined;\n }\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function tryFind(predicate, xs) {\n const e = ofSeq(xs);\n try {\n let res = undefined;\n while ((res == null) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const c = e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n if (predicate(c)) {\n res = some(c);\n }\n }\n return res;\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function find(predicate, xs) {\n const matchValue = tryFind(predicate, xs);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function tryFindBack(predicate, xs) {\n return tryFindBack_1(predicate, toArray(xs));\n}\nexport function findBack(predicate, xs) {\n const matchValue = tryFindBack(predicate, xs);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function tryFindIndex(predicate, xs) {\n const e = ofSeq(xs);\n try {\n const loop = (i_mut) => {\n loop: while (true) {\n const i = i_mut;\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n if (predicate(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) {\n return i;\n }\n else {\n i_mut = (i + 1);\n continue loop;\n }\n }\n else {\n return undefined;\n }\n break;\n }\n };\n return loop(0);\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function findIndex(predicate, xs) {\n const matchValue = tryFindIndex(predicate, xs);\n if (matchValue == null) {\n indexNotFound();\n return -1;\n }\n else {\n return value_1(matchValue) | 0;\n }\n}\nexport function tryFindIndexBack(predicate, xs) {\n return tryFindIndexBack_1(predicate, toArray(xs));\n}\nexport function findIndexBack(predicate, xs) {\n const matchValue = tryFindIndexBack(predicate, xs);\n if (matchValue == null) {\n indexNotFound();\n return -1;\n }\n else {\n return value_1(matchValue) | 0;\n }\n}\nexport function fold(folder, state, xs) {\n const e = ofSeq(xs);\n try {\n let acc = state;\n while (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n acc = folder(acc, e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return acc;\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function foldBack(folder, xs, state) {\n return foldBack_1(folder, toArray(xs), state);\n}\nexport function fold2(folder, state, xs, ys) {\n const e1 = ofSeq(xs);\n try {\n const e2 = ofSeq(ys);\n try {\n let acc = state;\n while (e1[\"System.Collections.IEnumerator.MoveNext\"]() && e2[\"System.Collections.IEnumerator.MoveNext\"]()) {\n acc = folder(acc, e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return acc;\n }\n finally {\n disposeSafe(e2);\n }\n }\n finally {\n disposeSafe(e1);\n }\n}\nexport function foldBack2(folder, xs, ys, state) {\n return foldBack2_1(folder, toArray(xs), toArray(ys), state);\n}\nexport function forAll(predicate, xs) {\n return !exists((x) => !predicate(x), xs);\n}\nexport function forAll2(predicate, xs, ys) {\n return !exists2((x, y) => !predicate(x, y), xs, ys);\n}\nexport function tryHead(xs) {\n if (isArrayLike(xs)) {\n return tryHead_1(xs);\n }\n else if (xs instanceof FSharpList) {\n return tryHead_2(xs);\n }\n else {\n const e = ofSeq(xs);\n try {\n return e[\"System.Collections.IEnumerator.MoveNext\"]() ? some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()) : undefined;\n }\n finally {\n disposeSafe(e);\n }\n }\n}\nexport function head(xs) {\n const matchValue = tryHead(xs);\n if (matchValue == null) {\n throw new Error((SR_inputSequenceEmpty + \"\\\\nParameter name: \") + \"source\");\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function initialize(count, f) {\n return unfold((i) => ((i < count) ? [f(i), i + 1] : undefined), 0);\n}\nexport function initializeInfinite(f) {\n return initialize(2147483647, f);\n}\nexport function isEmpty(xs) {\n if (isArrayLike(xs)) {\n const a = xs;\n return a.length === 0;\n }\n else if (xs instanceof FSharpList) {\n return isEmpty_1(xs);\n }\n else {\n const e = ofSeq(xs);\n try {\n return !e[\"System.Collections.IEnumerator.MoveNext\"]();\n }\n finally {\n disposeSafe(e);\n }\n }\n}\nexport function tryItem(index, xs) {\n if (isArrayLike(xs)) {\n return tryItem_1(index, xs);\n }\n else if (xs instanceof FSharpList) {\n return tryItem_2(index, xs);\n }\n else {\n const e = ofSeq(xs);\n try {\n const loop = (index_1_mut) => {\n loop: while (true) {\n const index_1 = index_1_mut;\n if (!e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return undefined;\n }\n else if (index_1 === 0) {\n return some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else {\n index_1_mut = (index_1 - 1);\n continue loop;\n }\n break;\n }\n };\n return loop(index);\n }\n finally {\n disposeSafe(e);\n }\n }\n}\nexport function item(index, xs) {\n const matchValue = tryItem(index, xs);\n if (matchValue == null) {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"index\");\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function iterate(action, xs) {\n fold((unitVar, x) => {\n action(x);\n }, undefined, xs);\n}\nexport function iterate2(action, xs, ys) {\n fold2((unitVar, x, y) => {\n action(x, y);\n }, undefined, xs, ys);\n}\nexport function iterateIndexed(action, xs) {\n fold((i, x) => {\n action(i, x);\n return (i + 1) | 0;\n }, 0, xs);\n}\nexport function iterateIndexed2(action, xs, ys) {\n fold2((i, x, y) => {\n action(i, x, y);\n return (i + 1) | 0;\n }, 0, xs, ys);\n}\nexport function tryLast(xs) {\n const e = ofSeq(xs);\n try {\n const loop = (acc_mut) => {\n loop: while (true) {\n const acc = acc_mut;\n if (!e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return acc;\n }\n else {\n acc_mut = e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n continue loop;\n }\n break;\n }\n };\n return e[\"System.Collections.IEnumerator.MoveNext\"]() ? some(loop(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) : undefined;\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function last(xs) {\n const matchValue = tryLast(xs);\n if (matchValue == null) {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"source\");\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function length(xs) {\n if (isArrayLike(xs)) {\n const a = xs;\n return a.length | 0;\n }\n else if (xs instanceof FSharpList) {\n return length_1(xs) | 0;\n }\n else {\n const e = ofSeq(xs);\n try {\n let count = 0;\n while (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n count = ((count + 1) | 0);\n }\n return count | 0;\n }\n finally {\n disposeSafe(e);\n }\n }\n}\nexport function map(mapping, xs) {\n return generate(() => ofSeq(xs), (e) => (e[\"System.Collections.IEnumerator.MoveNext\"]() ? some(mapping(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) : undefined), (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function mapIndexed(mapping, xs) {\n return generateIndexed(() => ofSeq(xs), (i, e) => (e[\"System.Collections.IEnumerator.MoveNext\"]() ? some(mapping(i, e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) : undefined), (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function indexed(xs) {\n return mapIndexed((i, x) => [i, x], xs);\n}\nexport function map2(mapping, xs, ys) {\n return generate(() => [ofSeq(xs), ofSeq(ys)], (tupledArg) => {\n const e1 = tupledArg[0];\n const e2 = tupledArg[1];\n return (e1[\"System.Collections.IEnumerator.MoveNext\"]() && e2[\"System.Collections.IEnumerator.MoveNext\"]()) ? some(mapping(e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) : undefined;\n }, (tupledArg_1) => {\n try {\n disposeSafe(tupledArg_1[0]);\n }\n finally {\n disposeSafe(tupledArg_1[1]);\n }\n });\n}\nexport function mapIndexed2(mapping, xs, ys) {\n return generateIndexed(() => [ofSeq(xs), ofSeq(ys)], (i, tupledArg) => {\n const e1 = tupledArg[0];\n const e2 = tupledArg[1];\n return (e1[\"System.Collections.IEnumerator.MoveNext\"]() && e2[\"System.Collections.IEnumerator.MoveNext\"]()) ? some(mapping(i, e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) : undefined;\n }, (tupledArg_1) => {\n try {\n disposeSafe(tupledArg_1[0]);\n }\n finally {\n disposeSafe(tupledArg_1[1]);\n }\n });\n}\nexport function map3(mapping, xs, ys, zs) {\n return generate(() => [ofSeq(xs), ofSeq(ys), ofSeq(zs)], (tupledArg) => {\n const e1 = tupledArg[0];\n const e2 = tupledArg[1];\n const e3 = tupledArg[2];\n return ((e1[\"System.Collections.IEnumerator.MoveNext\"]() && e2[\"System.Collections.IEnumerator.MoveNext\"]()) && e3[\"System.Collections.IEnumerator.MoveNext\"]()) ? some(mapping(e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), e3[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) : undefined;\n }, (tupledArg_1) => {\n try {\n disposeSafe(tupledArg_1[0]);\n }\n finally {\n try {\n disposeSafe(tupledArg_1[1]);\n }\n finally {\n disposeSafe(tupledArg_1[2]);\n }\n }\n });\n}\nexport function readOnly(xs) {\n checkNonNull(\"source\", xs);\n return map((x) => x, xs);\n}\nexport class CachedSeq$1 {\n constructor(cleanup, res) {\n this.cleanup = cleanup;\n this.res = res;\n }\n Dispose() {\n const _ = this;\n _.cleanup();\n }\n GetEnumerator() {\n const _ = this;\n return getEnumerator(_.res);\n }\n [Symbol.iterator]() {\n return toIterator(getEnumerator(this));\n }\n \"System.Collections.IEnumerable.GetEnumerator\"() {\n const _ = this;\n return getEnumerator(_.res);\n }\n}\nexport function CachedSeq$1_$reflection(gen0) {\n return class_type(\"SeqModule.CachedSeq`1\", [gen0], CachedSeq$1);\n}\nexport function CachedSeq$1_$ctor_Z7A8347D4(cleanup, res) {\n return new CachedSeq$1(cleanup, res);\n}\nexport function CachedSeq$1__Clear(_) {\n _.cleanup();\n}\nexport function cache(source) {\n checkNonNull(\"source\", source);\n const prefix = [];\n let enumeratorR = undefined;\n return CachedSeq$1_$ctor_Z7A8347D4(() => {\n Operators_Lock(prefix, () => {\n clear(prefix);\n let matchResult, e;\n if (enumeratorR != null) {\n if (value_1(enumeratorR) != null) {\n matchResult = 0;\n e = value_1(value_1(enumeratorR));\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n disposeSafe(e);\n break;\n }\n }\n enumeratorR = undefined;\n });\n }, unfold((i_1) => Operators_Lock(prefix, () => {\n if (i_1 < prefix.length) {\n return [prefix[i_1], i_1 + 1];\n }\n else {\n if (i_1 >= prefix.length) {\n let optEnumerator_2;\n if (enumeratorR != null) {\n optEnumerator_2 = value_1(enumeratorR);\n }\n else {\n const optEnumerator = getEnumerator(source);\n enumeratorR = some(optEnumerator);\n optEnumerator_2 = optEnumerator;\n }\n if (optEnumerator_2 == null) {\n }\n else {\n const enumerator = value_1(optEnumerator_2);\n if (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n void (prefix.push(enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()));\n }\n else {\n disposeSafe(enumerator);\n enumeratorR = some(undefined);\n }\n }\n }\n if (i_1 < prefix.length) {\n return [prefix[i_1], i_1 + 1];\n }\n else {\n return undefined;\n }\n }\n }), 0));\n}\nexport function allPairs(xs, ys) {\n const ysCache = cache(ys);\n return delay(() => concat(map((x) => map((y) => [x, y], ysCache), xs)));\n}\nexport function mapFold(mapping, state, xs) {\n const patternInput = mapFold_1(mapping, state, toArray(xs));\n return [readOnly(patternInput[0]), patternInput[1]];\n}\nexport function mapFoldBack(mapping, xs, state) {\n const patternInput = mapFoldBack_1(mapping, toArray(xs), state);\n return [readOnly(patternInput[0]), patternInput[1]];\n}\nexport function tryPick(chooser, xs) {\n const e = ofSeq(xs);\n try {\n let res = undefined;\n while ((res == null) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n res = chooser(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n return res;\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function pick(chooser, xs) {\n const matchValue = tryPick(chooser, xs);\n if (matchValue == null) {\n return indexNotFound();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function reduce(folder, xs) {\n const e = ofSeq(xs);\n try {\n const loop = (acc_mut) => {\n loop: while (true) {\n const acc = acc_mut;\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n acc_mut = folder(acc, e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n continue loop;\n }\n else {\n return acc;\n }\n break;\n }\n };\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return loop(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else {\n throw new Error(SR_inputSequenceEmpty);\n }\n }\n finally {\n disposeSafe(e);\n }\n}\nexport function reduceBack(folder, xs) {\n const arr = toArray(xs);\n if (arr.length > 0) {\n return arr.reduceRight(folder);\n }\n else {\n throw new Error(SR_inputSequenceEmpty);\n }\n}\nexport function replicate(n, x) {\n return initialize(n, (_arg) => x);\n}\nexport function reverse(xs) {\n return delay(() => ofArray(reverse_1(toArray(xs))));\n}\nexport function scan(folder, state, xs) {\n return delay(() => {\n let acc = state;\n return concat([singleton(state), map((x) => {\n acc = folder(acc, x);\n return acc;\n }, xs)]);\n });\n}\nexport function scanBack(folder, xs, state) {\n return delay(() => ofArray(scanBack_1(folder, toArray(xs), state)));\n}\nexport function skip(count, source) {\n return mkSeq(() => {\n const e = ofSeq(source);\n try {\n for (let _ = 1; _ <= count; _++) {\n if (!e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"source\");\n }\n }\n return Enumerator_enumerateThenFinally(() => {\n }, e);\n }\n catch (matchValue) {\n disposeSafe(e);\n throw matchValue;\n }\n });\n}\nexport function skipWhile(predicate, xs) {\n return delay(() => {\n let skipped = true;\n return filter((x) => {\n if (skipped) {\n skipped = predicate(x);\n }\n return !skipped;\n }, xs);\n });\n}\nexport function tail(xs) {\n return skip(1, xs);\n}\nexport function take(count, xs) {\n return generateIndexed(() => ofSeq(xs), (i, e) => {\n if (i < count) {\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else {\n throw new Error((SR_notEnoughElements + \"\\\\nParameter name: \") + \"source\");\n }\n }\n else {\n return undefined;\n }\n }, (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function takeWhile(predicate, xs) {\n return generate(() => ofSeq(xs), (e) => ((e[\"System.Collections.IEnumerator.MoveNext\"]() && predicate(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]())) ? some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()) : undefined), (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function truncate(count, xs) {\n return generateIndexed(() => ofSeq(xs), (i, e) => (((i < count) && e[\"System.Collections.IEnumerator.MoveNext\"]()) ? some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()) : undefined), (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function zip(xs, ys) {\n return map2((x, y) => [x, y], xs, ys);\n}\nexport function zip3(xs, ys, zs) {\n return map3((x, y, z) => [x, y, z], xs, ys, zs);\n}\nexport function collect(mapping, xs) {\n return delay(() => concat(map(mapping, xs)));\n}\nexport function where(predicate, xs) {\n return filter(predicate, xs);\n}\nexport function pairwise(xs) {\n return delay(() => ofArray(pairwise_1(toArray(xs))));\n}\nexport function splitInto(chunks, xs) {\n return delay(() => ofArray(splitInto_1(chunks, toArray(xs))));\n}\nexport function windowed(windowSize, xs) {\n return delay(() => ofArray(windowed_1(windowSize, toArray(xs))));\n}\nexport function transpose(xss) {\n return delay(() => ofArray(map_1(ofArray, transpose_1(map_1(toArray, toArray(xss))))));\n}\nexport function sortWith(comparer, xs) {\n return delay(() => {\n const arr = toArray(xs);\n arr.sort(comparer);\n return ofArray(arr);\n });\n}\nexport function sort(xs, comparer) {\n return sortWith((x, y) => comparer.Compare(x, y), xs);\n}\nexport function sortBy(projection, xs, comparer) {\n return sortWith((x, y) => comparer.Compare(projection(x), projection(y)), xs);\n}\nexport function sortDescending(xs, comparer) {\n return sortWith((x, y) => (comparer.Compare(x, y) * -1), xs);\n}\nexport function sortByDescending(projection, xs, comparer) {\n return sortWith((x, y) => (comparer.Compare(projection(x), projection(y)) * -1), xs);\n}\nexport function sum(xs, adder) {\n return fold((acc, x) => adder.Add(acc, x), adder.GetZero(), xs);\n}\nexport function sumBy(f, xs, adder) {\n return fold((acc, x) => adder.Add(acc, f(x)), adder.GetZero(), xs);\n}\nexport function maxBy(projection, xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(projection(y), projection(x)) > 0) ? y : x), xs);\n}\nexport function max(xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(y, x) > 0) ? y : x), xs);\n}\nexport function minBy(projection, xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(projection(y), projection(x)) > 0) ? x : y), xs);\n}\nexport function min(xs, comparer) {\n return reduce((x, y) => ((comparer.Compare(y, x) > 0) ? x : y), xs);\n}\nexport function average(xs, averager) {\n let count = 0;\n const total = fold((acc, x) => {\n count = ((count + 1) | 0);\n return averager.Add(acc, x);\n }, averager.GetZero(), xs);\n if (count === 0) {\n throw new Error((SR_inputSequenceEmpty + \"\\\\nParameter name: \") + \"source\");\n }\n else {\n return averager.DivideByInt(total, count);\n }\n}\nexport function averageBy(f, xs, averager) {\n let count = 0;\n const total = fold((acc, x) => {\n count = ((count + 1) | 0);\n return averager.Add(acc, f(x));\n }, averager.GetZero(), xs);\n if (count === 0) {\n throw new Error((SR_inputSequenceEmpty + \"\\\\nParameter name: \") + \"source\");\n }\n else {\n return averager.DivideByInt(total, count);\n }\n}\nexport function permute(f, xs) {\n return delay(() => ofArray(permute_1(f, toArray(xs))));\n}\nexport function chunkBySize(chunkSize, xs) {\n return delay(() => ofArray(chunkBySize_1(chunkSize, toArray(xs))));\n}\nexport function insertAt(index, y, xs) {\n let isDone = false;\n if (index < 0) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return generateIndexed(() => ofSeq(xs), (i, e) => {\n if ((isDone ? true : (i < index)) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else if (i === index) {\n isDone = true;\n return some(y);\n }\n else {\n if (!isDone) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return undefined;\n }\n }, (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function insertManyAt(index, ys, xs) {\n let status = -1;\n if (index < 0) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return generateIndexed(() => [ofSeq(xs), ofSeq(ys)], (i, tupledArg) => {\n const e1 = tupledArg[0];\n const e2 = tupledArg[1];\n if (i === index) {\n status = 0;\n }\n let inserted;\n if (status === 0) {\n if (e2[\"System.Collections.IEnumerator.MoveNext\"]()) {\n inserted = some(e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else {\n status = 1;\n inserted = undefined;\n }\n }\n else {\n inserted = undefined;\n }\n if (inserted == null) {\n if (e1[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return some(e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else {\n if (status < 1) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return undefined;\n }\n }\n else {\n return some(value_1(inserted));\n }\n }, (tupledArg_1) => {\n disposeSafe(tupledArg_1[0]);\n disposeSafe(tupledArg_1[1]);\n });\n}\nexport function removeAt(index, xs) {\n let isDone = false;\n if (index < 0) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return generateIndexed(() => ofSeq(xs), (i, e) => {\n if ((isDone ? true : (i < index)) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else if ((i === index) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n isDone = true;\n return e[\"System.Collections.IEnumerator.MoveNext\"]() ? some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()) : undefined;\n }\n else {\n if (!isDone) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return undefined;\n }\n }, (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function removeManyAt(index, count, xs) {\n if (index < 0) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return generateIndexed(() => ofSeq(xs), (i, e) => {\n if (i < index) {\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n }\n else {\n if (i === index) {\n for (let _ = 1; _ <= count; _++) {\n if (!e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"count\");\n }\n }\n }\n return e[\"System.Collections.IEnumerator.MoveNext\"]() ? some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]()) : undefined;\n }\n }, (e_1) => {\n disposeSafe(e_1);\n });\n}\nexport function updateAt(index, y, xs) {\n let isDone = false;\n if (index < 0) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return generateIndexed(() => ofSeq(xs), (i, e) => {\n if ((isDone ? true : (i < index)) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return some(e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]());\n }\n else if ((i === index) && e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n isDone = true;\n return some(y);\n }\n else {\n if (!isDone) {\n throw new Error((SR_indexOutOfBounds + \"\\\\nParameter name: \") + \"index\");\n }\n return undefined;\n }\n }, (e_1) => {\n disposeSafe(e_1);\n });\n}\n","import { disposeSafe, defaultOf, structuralHash, equals } from \"./Util.js\";\nimport { HashIdentity_Structural, ComparisonIdentity_Structural } from \"./FSharp.Collections.js\";\nimport { StringBuilder__Append_Z721C83C5 } from \"./System.Text.js\";\nexport const LanguagePrimitives_GenericEqualityComparer = {\n \"System.Collections.IEqualityComparer.Equals541DA560\"(x, y) {\n return equals(x, y);\n },\n \"System.Collections.IEqualityComparer.GetHashCode4E60E31B\"(x_1) {\n return structuralHash(x_1);\n },\n};\nexport const LanguagePrimitives_GenericEqualityERComparer = {\n \"System.Collections.IEqualityComparer.Equals541DA560\"(x, y) {\n return equals(x, y);\n },\n \"System.Collections.IEqualityComparer.GetHashCode4E60E31B\"(x_1) {\n return structuralHash(x_1);\n },\n};\nexport function LanguagePrimitives_FastGenericComparer() {\n return ComparisonIdentity_Structural();\n}\nexport function LanguagePrimitives_FastGenericComparerFromTable() {\n return ComparisonIdentity_Structural();\n}\nexport function LanguagePrimitives_FastGenericEqualityComparer() {\n return HashIdentity_Structural();\n}\nexport function LanguagePrimitives_FastGenericEqualityComparerFromTable() {\n return HashIdentity_Structural();\n}\nexport function Operators_Failure(message) {\n return new Error(message);\n}\nexport function Operators_FailurePattern(exn) {\n return exn.message;\n}\nexport function Operators_NullArg(x) {\n throw new Error(x);\n}\nexport function Operators_Using(resource, action) {\n try {\n return action(resource);\n }\n finally {\n if (equals(resource, defaultOf())) {\n }\n else {\n let copyOfStruct = resource;\n disposeSafe(copyOfStruct);\n }\n }\n}\nexport function Operators_Lock(_lockObj, action) {\n return action();\n}\nexport function ExtraTopLevelOperators_LazyPattern(input) {\n return input.Value;\n}\nexport function PrintfModule_PrintFormatToStringBuilderThen(continuation, builder, format) {\n return format.cont((s) => {\n StringBuilder__Append_Z721C83C5(builder, s);\n return continuation();\n });\n}\nexport function PrintfModule_PrintFormatToStringBuilder(builder, format) {\n return PrintfModule_PrintFormatToStringBuilderThen(() => {\n }, builder, format);\n}\n","import { some } from \"../fable-library-js.4.17.0/Option.js\";\nimport { create, isLeapYear } from \"../fable-library-js.4.17.0/Date.js\";\nimport { parse } from \"../fable-library-js.4.17.0/Int32.js\";\nimport { split, isNullOrWhiteSpace } from \"../fable-library-js.4.17.0/String.js\";\nimport { item, equalsWith } from \"../fable-library-js.4.17.0/Array.js\";\nimport { defaultOf } from \"../fable-library-js.4.17.0/Util.js\";\nimport react from \"react\";\n\nexport function DateParsing_$007CBetween$007C_$007C(x, y, input) {\n if ((input >= x) && (input <= y)) {\n return some(undefined);\n }\n else {\n return undefined;\n }\n}\n\nexport function DateParsing_isLeapYear(year) {\n return isLeapYear(year);\n}\n\nexport function DateParsing_$007CInt$007C_$007C(input) {\n try {\n return parse(input, 511, false, 32);\n }\n catch (matchValue) {\n return undefined;\n }\n}\n\n/**\n * Parses a specific yyyy-MM-dd or yyyy-MM-ddTHH:mm date format that comes out of an input element with type=\"date\"\n */\nexport function DateParsing_parse(input) {\n try {\n if (isNullOrWhiteSpace(input)) {\n return undefined;\n }\n else {\n const parts = split(input, [\"-\"], undefined, 0);\n let patternInput;\n let matchResult, month, year;\n if (!equalsWith((x, y) => (x === y), parts, defaultOf()) && (parts.length === 2)) {\n const activePatternResult = DateParsing_$007CInt$007C_$007C(item(0, parts));\n if (activePatternResult != null) {\n const activePatternResult_1 = DateParsing_$007CInt$007C_$007C(item(1, parts));\n if (activePatternResult_1 != null) {\n matchResult = 0;\n month = activePatternResult_1;\n year = activePatternResult;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0: {\n patternInput = [year, month, 1, 0, 0];\n break;\n }\n default: {\n let matchResult_1, day, month_1, year_1;\n if (!equalsWith((x_1, y_1) => (x_1 === y_1), parts, defaultOf()) && (parts.length === 3)) {\n const activePatternResult_2 = DateParsing_$007CInt$007C_$007C(item(0, parts));\n if (activePatternResult_2 != null) {\n const activePatternResult_3 = DateParsing_$007CInt$007C_$007C(item(1, parts));\n if (activePatternResult_3 != null) {\n const activePatternResult_4 = DateParsing_$007CInt$007C_$007C(item(2, parts));\n if (activePatternResult_4 != null) {\n matchResult_1 = 0;\n day = activePatternResult_4;\n month_1 = activePatternResult_3;\n year_1 = activePatternResult_2;\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n }\n else {\n matchResult_1 = 1;\n }\n switch (matchResult_1) {\n case 0: {\n patternInput = [year_1, month_1, day, 0, 0];\n break;\n }\n default: {\n let matchResult_2, day_1, month_2, year_2;\n if (!equalsWith((x_2, y_2) => (x_2 === y_2), parts, defaultOf()) && (parts.length === 3)) {\n const activePatternResult_5 = DateParsing_$007CInt$007C_$007C(item(0, parts));\n if (activePatternResult_5 != null) {\n const activePatternResult_6 = DateParsing_$007CInt$007C_$007C(item(1, parts));\n if (activePatternResult_6 != null) {\n matchResult_2 = 0;\n day_1 = item(2, parts);\n month_2 = activePatternResult_6;\n year_2 = activePatternResult_5;\n }\n else {\n matchResult_2 = 1;\n }\n }\n else {\n matchResult_2 = 1;\n }\n }\n else {\n matchResult_2 = 1;\n }\n switch (matchResult_2) {\n case 0: {\n if (day_1.indexOf(\"T\") >= 0) {\n const matchValue = split(day_1, [\"T\"], undefined, 0);\n let matchResult_3, parsedDay, time;\n if (!equalsWith((x_3, y_3) => (x_3 === y_3), matchValue, defaultOf()) && (matchValue.length === 2)) {\n const activePatternResult_7 = DateParsing_$007CInt$007C_$007C(item(0, matchValue));\n if (activePatternResult_7 != null) {\n matchResult_3 = 0;\n parsedDay = activePatternResult_7;\n time = item(1, matchValue);\n }\n else {\n matchResult_3 = 1;\n }\n }\n else {\n matchResult_3 = 1;\n }\n switch (matchResult_3) {\n case 0: {\n const matchValue_1 = split(time, [\":\"], undefined, 0);\n let matchResult_4, hour, minute;\n if (!equalsWith((x_4, y_4) => (x_4 === y_4), matchValue_1, defaultOf()) && (matchValue_1.length === 2)) {\n const activePatternResult_8 = DateParsing_$007CInt$007C_$007C(item(0, matchValue_1));\n if (activePatternResult_8 != null) {\n const activePatternResult_9 = DateParsing_$007CInt$007C_$007C(item(1, matchValue_1));\n if (activePatternResult_9 != null) {\n matchResult_4 = 0;\n hour = activePatternResult_8;\n minute = activePatternResult_9;\n }\n else {\n matchResult_4 = 1;\n }\n }\n else {\n matchResult_4 = 1;\n }\n }\n else {\n matchResult_4 = 1;\n }\n switch (matchResult_4) {\n case 0: {\n let matchResult_5;\n if (DateParsing_$007CBetween$007C_$007C(0, 59, hour) != null) {\n if (DateParsing_$007CBetween$007C_$007C(0, 59, minute) != null) {\n matchResult_5 = 0;\n }\n else {\n matchResult_5 = 1;\n }\n }\n else {\n matchResult_5 = 1;\n }\n switch (matchResult_5) {\n case 0: {\n patternInput = [year_2, month_2, parsedDay, hour, minute];\n break;\n }\n default:\n patternInput = [-1, 1, 1, 0, 0];\n }\n break;\n }\n default:\n patternInput = [-1, 1, 1, 0, 0];\n }\n break;\n }\n default:\n patternInput = [-1, 1, 1, 0, 0];\n }\n }\n else {\n patternInput = [-1, 1, 1, 0, 0];\n }\n break;\n }\n default:\n patternInput = [-1, 1, 1, 0, 0];\n }\n }\n }\n }\n }\n const year_3 = patternInput[0] | 0;\n const month_3 = patternInput[1] | 0;\n const minute_1 = patternInput[4] | 0;\n const hour_1 = patternInput[3] | 0;\n const day_2 = patternInput[2] | 0;\n return (year_3 <= 0) ? undefined : ((month_3 === 2) ? ((DateParsing_$007CBetween$007C_$007C(1, 29, day_2) != null) ? (DateParsing_isLeapYear(year_3) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 2) ? ((DateParsing_$007CBetween$007C_$007C(1, 28, day_2) != null) ? (!DateParsing_isLeapYear(year_3) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 1) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 3) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 5) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 7) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 8) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 10) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 12) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined)))))))))))) : ((month_3 === 1) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 3) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 5) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 7) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 8) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 10) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 12) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined)))))))))))) : ((month_3 === 1) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 3) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 5) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 7) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 8) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 10) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 12) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))))))))))) : ((month_3 === 2) ? ((DateParsing_$007CBetween$007C_$007C(1, 28, day_2) != null) ? (!DateParsing_isLeapYear(year_3) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 1) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 3) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 5) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 7) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 8) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 10) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 12) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined)))))))))))) : ((month_3 === 1) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 3) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 5) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 7) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 8) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 10) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 12) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined)))))))))))) : ((month_3 === 1) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 3) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 5) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 7) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 8) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 10) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 12) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))))))))))) : ((month_3 === 2) ? ((DateParsing_$007CBetween$007C_$007C(1, 28, day_2) != null) ? (!DateParsing_isLeapYear(year_3) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 1) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 3) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 5) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 7) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 8) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 10) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 12) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined)))))))))))) : ((month_3 === 1) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 3) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 5) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 7) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 8) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 10) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 12) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined)))))))))))) : ((month_3 === 1) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 3) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 5) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 7) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 8) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 10) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 12) ? ((DateParsing_$007CBetween$007C_$007C(1, 31, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined))))) : ((month_3 === 4) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 6) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 9) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : ((month_3 === 11) ? ((DateParsing_$007CBetween$007C_$007C(1, 30, day_2) != null) ? create(year_3, month_3, day_2, hour_1, minute_1, 0) : undefined) : undefined)))))))))))));\n }\n }\n catch (matchValue_4) {\n return undefined;\n }\n}\n\nexport const Interop_reactApi = react;\n\n","export var NumberStyles;\n(function (NumberStyles) {\n // None = 0x00000000,\n // AllowLeadingWhite = 0x00000001,\n // AllowTrailingWhite = 0x00000002,\n // AllowLeadingSign = 0x00000004,\n // AllowTrailingSign = 0x00000008,\n // AllowParentheses = 0x00000010,\n // AllowDecimalPoint = 0x00000020,\n // AllowThousands = 0x00000040,\n // AllowExponent = 0x00000080,\n // AllowCurrencySymbol = 0x00000100,\n NumberStyles[NumberStyles[\"AllowHexSpecifier\"] = 512] = \"AllowHexSpecifier\";\n // Integer = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign,\n // HexNumber = AllowLeadingWhite | AllowTrailingWhite | AllowHexSpecifier,\n // Number = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign |\n // AllowTrailingSign | AllowDecimalPoint | AllowThousands,\n // Float = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign |\n // AllowDecimalPoint | AllowExponent,\n // Currency = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign | AllowTrailingSign |\n // AllowParentheses | AllowDecimalPoint | AllowThousands | AllowCurrencySymbol,\n // Any = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign | AllowTrailingSign |\n // AllowParentheses | AllowDecimalPoint | AllowThousands | AllowCurrencySymbol | AllowExponent,\n})(NumberStyles || (NumberStyles = {}));\nfunction validResponse(regexMatch, radix) {\n const [/*all*/ , sign, prefix, digits] = regexMatch;\n return {\n sign: sign || \"\",\n prefix: prefix || \"\",\n digits,\n radix,\n };\n}\nfunction getRange(unsigned, bitsize) {\n switch (bitsize) {\n case 8: return unsigned ? [0, 255] : [-128, 127];\n case 16: return unsigned ? [0, 65535] : [-32768, 32767];\n case 32: return unsigned ? [0, 4294967295] : [-2147483648, 2147483647];\n default: throw new Error(\"Invalid bit size.\");\n }\n}\nfunction getInvalidDigits(radix) {\n switch (radix) {\n case 2: return /[^0-1]/;\n case 8: return /[^0-7]/;\n case 10: return /[^0-9]/;\n case 16: return /[^0-9a-fA-F]/;\n default:\n throw new Error(\"Invalid Base.\");\n }\n}\nexport function getPrefix(radix) {\n switch (radix) {\n case 2: return \"0b\";\n case 8: return \"0o\";\n case 10: return \"\";\n case 16: return \"0x\";\n default: return \"\";\n }\n}\nexport function getRadix(prefix, style) {\n if (style & NumberStyles.AllowHexSpecifier) {\n return 16;\n }\n else {\n switch (prefix) {\n case \"0b\":\n case \"0B\": return 2;\n case \"0o\":\n case \"0O\": return 8;\n case \"0x\":\n case \"0X\": return 16;\n default: return 10;\n }\n }\n}\nexport function isValid(str, style, radix) {\n const integerRegex = /^\\s*([\\+\\-])?(0[xXoObB])?([0-9a-fA-F]+)\\s*$/;\n const res = integerRegex.exec(str.replace(/_/g, \"\"));\n if (res != null) {\n const [/*all*/ , /*sign*/ , prefix, digits] = res;\n radix = radix || getRadix(prefix, style);\n const invalidDigits = getInvalidDigits(radix);\n if (!invalidDigits.test(digits)) {\n return validResponse(res, radix);\n }\n }\n return null;\n}\nexport function parse(str, style, unsigned, bitsize, radix) {\n const res = isValid(str, style, radix);\n if (res != null) {\n let v = Number.parseInt(res.sign + res.digits, res.radix);\n if (!Number.isNaN(v)) {\n const [umin, umax] = getRange(true, bitsize);\n if (!unsigned && res.radix !== 10 && v >= umin && v <= umax) {\n v = v << (32 - bitsize) >> (32 - bitsize);\n }\n const [min, max] = getRange(unsigned, bitsize);\n if (v >= min && v <= max) {\n return v;\n }\n }\n }\n throw new Error(`The input string ${str} was not in a correct format.`);\n}\nexport function tryParse(str, style, unsigned, bitsize, defValue) {\n try {\n defValue.contents = parse(str, style, unsigned, bitsize);\n return true;\n }\n catch {\n return false;\n }\n}\nexport function op_UnaryNegation_Int8(x) {\n return x === -128 ? x : -x;\n}\nexport function op_UnaryNegation_Int16(x) {\n return x === -32768 ? x : -x;\n}\nexport function op_UnaryNegation_Int32(x) {\n return x === -2147483648 ? x : -x;\n}\nexport function divRem(x, y, out) {\n const div = ~~(x / y);\n const rem = x % y;\n if (out === void 0) {\n return [div, rem];\n }\n else {\n out.contents = rem;\n return div;\n }\n}\n","import { useLayoutEffectWithDeps, useLayoutEffect, useEffectWithDeps, useEffect, useDebugValue } from \"./ReactInterop.js\";\nimport { class_type } from \"../fable-library-js.4.17.0/Reflection.js\";\nimport { iterate } from \"../fable-library-js.4.17.0/Seq.js\";\nimport { unwrap, some, map, defaultArg, toArray } from \"../fable-library-js.4.17.0/Option.js\";\nimport { Interop_reactApi } from \"./Interop.fs.js\";\nimport { disposeSafe, defaultOf, curry2, uncurry2 } from \"../fable-library-js.4.17.0/Util.js\";\nimport { useState } from \"react\";\nimport * as react from \"react\";\n\nexport const ReactInterop_useDebugValueWithFormatter = useDebugValue;\n\nexport const ReactInterop_useEffect = useEffect;\n\nexport const ReactInterop_useEffectWithDeps = useEffectWithDeps;\n\nexport const ReactInterop_useLayoutEffect = useLayoutEffect;\n\nexport const ReactInterop_useLayoutEffectWithDeps = useLayoutEffectWithDeps;\n\nexport class Internal {\n constructor() {\n }\n}\n\nexport function Internal_$reflection() {\n return class_type(\"Feliz.Internal\", undefined, Internal);\n}\n\nexport function Internal_$ctor() {\n return new Internal();\n}\n\n\nexport function Internal_functionComponent_Z45822769(renderElement, name, withKey) {\n iterate((name_1) => {\n renderElement.displayName = name_1;\n }, toArray(name));\n return (props) => {\n const props_2 = Internal_propsWithKey(withKey, props);\n return Interop_reactApi.createElement(renderElement, props_2);\n };\n}\n\nexport function Internal_memo_Z1716C242(renderElement, name, areEqual, withKey) {\n const memoElementType = Interop_reactApi.memo(renderElement, uncurry2(defaultArg(map(curry2, areEqual), defaultOf())));\n iterate((name_1) => {\n renderElement.displayName = name_1;\n }, toArray(name));\n return (props) => {\n const props_2 = Internal_propsWithKey(withKey, props);\n return Interop_reactApi.createElement(memoElementType, props_2);\n };\n}\n\nexport function Internal_propsWithKey(withKey, props) {\n if (withKey == null) {\n return props;\n }\n else {\n const f = withKey;\n props.key = f(props);\n return props;\n }\n}\n\nexport class React {\n constructor() {\n }\n}\n\nexport function React_$reflection() {\n return class_type(\"Feliz.React\", undefined, React);\n}\n\n/**\n * Creates a disposable instance by providing the implementation of the dispose member.\n */\nexport function React_createDisposable_3A5B6456(dispose) {\n return {\n Dispose() {\n dispose();\n },\n };\n}\n\n/**\n * The `useState` hook that creates a state variable for React function components from an initialization function.\n */\nexport function useReact_useState_FCFD9EF(initializer) {\n return Interop_reactApi.useState(initializer);\n}\n\n/**\n * Accepts a reducer and returns the current state paired with a dispatch.\n */\nexport function useReact_useReducer_2B9E6EA0(update, initialState) {\n const arg = update;\n return Interop_reactApi.useReducer(arg, initialState);\n}\n\n/**\n * The `useEffect` hook that creates a disposable effect for React function components.\n * This effect has no dependencies which means the effect is re-executed on every re-render.\n * To make the effect run once (for example you subscribe once to web sockets) then provide an empty array\n * for the dependencies: `React.useEffect(disposableEffect, [| |])`.\n */\nexport function useReact_useEffect_Z5ECA432F(effect) {\n ReactInterop_useEffect(effect);\n}\n\n/**\n * The `useEffect` hook that creates a disposable effect for React function components.\n * This effect takes an array of *dependencies*.\n * Whenever any of these dependencies change, the effect is re-executed. To execute the effect only once,\n * you have to explicitly provide an empty array for the dependencies: `React.useEffect(effect, [| |])`.\n */\nexport function useReact_useEffect_7331F961(effect, dependencies) {\n ReactInterop_useEffectWithDeps(effect, dependencies);\n}\n\n/**\n * The `useLayoutEffect` hook that creates a disposable effect for React function components.\n * This effect has no dependencies which means the effect is re-executed on every re-render.\n * To make the effect run once (for example you subscribe once to web sockets) then provide an empty array\n * for the dependencies: `React.useLayoutEffect(disposableEffect, [| |])`.\n * The signature is identical to useEffect, but it fires synchronously after all DOM mutations. Use this to read layout from the DOM and synchronously re-render. Updates scheduled inside useLayoutEffect will be flushed synchronously, before the browser has a chance to paint.\n */\nexport function useReact_useLayoutEffect_Z5ECA432F(effect) {\n ReactInterop_useLayoutEffect(effect);\n}\n\n/**\n * The `useLayoutEffect` hook that creates a disposable effect for React function components.\n * This effect takes an array of *dependencies*.\n * Whenever any of these dependencies change, the effect is re-executed. To execute the effect only once,\n * you have to explicitly provide an empty array for the dependencies: `React.useLayoutEffect(effect, [| |])`.\n * The signature is identical to useEffect, but it fires synchronously after all DOM mutations. Use this to read layout from the DOM and synchronously re-render. Updates scheduled inside useLayoutEffect will be flushed synchronously, before the browser has a chance to paint.\n */\nexport function useReact_useLayoutEffect_7331F961(effect, dependencies) {\n ReactInterop_useLayoutEffectWithDeps(effect, dependencies);\n}\n\n/**\n * The signature is identical to useEffect, but it fires synchronously after all DOM mutations. Use this to read layout from the DOM and synchronously re-render. Updates scheduled inside useLayoutEffect will be flushed synchronously, before the browser has a chance to paint.\n * This effect is executed on every (re)render\n */\nexport function useReact_useLayoutEffect_3A5B6456(effect) {\n ReactInterop_useLayoutEffect((_arg) => {\n effect();\n return React_createDisposable_3A5B6456(() => {\n });\n });\n}\n\n/**\n * The signature is identical to useEffect, but it fires synchronously after all DOM mutations. Use this to read layout from the DOM and synchronously re-render. Updates scheduled inside useLayoutEffect will be flushed synchronously, before the browser has a chance to paint.\n */\nexport function useReact_useLayoutEffect_311B4086(effect, dependencies) {\n ReactInterop_useLayoutEffectWithDeps((_arg) => {\n effect();\n return React_createDisposable_3A5B6456(() => {\n });\n }, dependencies);\n}\n\n/**\n * React hook to define and use an effect only once when a function component renders for the first time.\n * This is an alias for `React.useEffect(effect, [| |])` which explicitly provides an empty array for the dependencies of the effect which means the effect will only run once.\n */\nexport function useReact_useEffectOnce_3A5B6456(effect) {\n const calledOnce = Interop_reactApi.useRef(false);\n useReact_useEffect_311B4086(() => {\n if (calledOnce.current) {\n }\n else {\n calledOnce.current = true;\n effect();\n }\n }, []);\n}\n\n/**\n * React hook to define and use a disposable effect only once when a function component renders for the first time.\n * This is an alias for `React.useEffect(effect, [| |])` which explicitly provides an empty array for the dependencies of the effect which means the effect will only run once.\n */\nexport function useReact_useEffectOnce_Z5ECA432F(effect) {\n const destroyFunc = Interop_reactApi.useRef(undefined);\n const calledOnce = Interop_reactApi.useRef(false);\n const renderAfterCalled = Interop_reactApi.useRef(false);\n if (calledOnce.current) {\n renderAfterCalled.current = true;\n }\n useReact_useEffect_7331F961(() => {\n let disposeOption;\n if (calledOnce.current) {\n disposeOption = undefined;\n }\n else {\n calledOnce.current = true;\n destroyFunc.current = some(effect());\n disposeOption = (renderAfterCalled.current ? destroyFunc.current : undefined);\n }\n return {\n Dispose() {\n iterate((d) => {\n let copyOfStruct = d;\n disposeSafe(copyOfStruct);\n }, toArray(disposeOption));\n },\n };\n }, []);\n}\n\n/**\n * React hook to define and use a disposable effect only once when a function component renders for the first time.\n * This is an alias for `React.useEffect(effect, [| |])` which explicitly provide an empty array for the dependencies of the effect which means the effect will only run once.\n */\nexport function useReact_useEffectOnce_69320292(effect) {\n const destroyFunc = Interop_reactApi.useRef(undefined);\n const calledOnce = Interop_reactApi.useRef(false);\n const renderAfterCalled = Interop_reactApi.useRef(false);\n if (calledOnce.current) {\n renderAfterCalled.current = true;\n }\n useReact_useEffect_7331F961(() => {\n let disposeOption;\n if (calledOnce.current) {\n disposeOption = undefined;\n }\n else {\n calledOnce.current = true;\n destroyFunc.current = effect();\n disposeOption = (renderAfterCalled.current ? destroyFunc.current : undefined);\n }\n return {\n Dispose() {\n iterate((d) => {\n let copyOfStruct = d;\n disposeSafe(copyOfStruct);\n }, toArray(disposeOption));\n },\n };\n }, []);\n}\n\n/**\n * The `useEffect` hook that creates an effect for React function components.\n * This effect is executed *every time* the function component re-renders.\n * \n * To make the effect run only once, write: `React.useEffect(effect, [| |])` which explicitly states\n * that this effect has no dependencies and should only run once on initial render.\n */\nexport function useReact_useEffect_3A5B6456(effect) {\n ReactInterop_useEffect((_arg) => {\n effect();\n return React_createDisposable_3A5B6456(() => {\n });\n });\n}\n\n/**\n * The `useEffect` hook that creates an effect for React function components. This effect takes an array of *dependencies*.\n * Whenever any of these dependencies change, the effect is re-executed. To execute the effect only once,\n * you have to explicitly provide an empty array for the dependencies: `React.useEffect(effect, [| |])`.\n */\nexport function useReact_useEffect_311B4086(effect, dependencies) {\n ReactInterop_useEffectWithDeps((_arg) => {\n effect();\n return React_createDisposable_3A5B6456(() => {\n });\n }, dependencies);\n}\n\n/**\n * Can be used to display a label for custom hooks in React DevTools.\n */\nexport function useReact_useDebugValue_Z721C83C5(value) {\n ReactInterop_useDebugValueWithFormatter(value, (x) => x);\n}\n\n/**\n * Can be used to display a label for custom hooks in React DevTools.\n */\nexport function useReact_useDebugValue_77A55D6D(value, formatter) {\n ReactInterop_useDebugValueWithFormatter(value, formatter);\n}\n\n/**\n * The `useCallback` hook. Returns a memoized callback. Pass an inline callback and an array of dependencies.\n * `useCallback` will return a memoized version of the callback that only changes if one of the dependencies has changed.\n */\nexport function useReact_useCallback_1CA17B65(callbackFunction, dependencies) {\n const dependencies_1 = defaultArg(dependencies, []);\n return Interop_reactApi.useCallback(callbackFunction, dependencies_1);\n}\n\n/**\n * Returns a mutable ref object whose .current property is initialized to the passed argument (initialValue). The returned object will persist for the full lifetime of the component.\n * \n * Essentially, useRef is like a container that can hold a mutable value in its .current property.\n */\nexport function useReact_useRef_1505(initialValue) {\n return Interop_reactApi.useRef(initialValue);\n}\n\n/**\n * A specialized version of React.useRef() that creates a reference to an input element.\n * \n * Useful for controlling the internal properties and methods of that element, for example to enable focus().\n */\nexport function useReact_useInputRef() {\n return useReact_useRef_1505(undefined);\n}\n\n/**\n * A specialized version of React.useRef() that creates a reference to a button element.\n */\nexport function useReact_useButtonRef() {\n return useReact_useRef_1505(undefined);\n}\n\n/**\n * A specialized version of React.useRef() that creates a reference to a generic HTML element.\n * \n * Useful for controlling the internal properties and methods of that element, for integration with third-party libraries that require a Html element.\n */\nexport function useReact_useElementRef() {\n return useReact_useRef_1505(undefined);\n}\n\n/**\n * The `useMemo` hook. Returns a memoized value. Pass a \"create\" function and an array of dependencies.\n * `useMemo` will only recompute the memoized value when one of the dependencies has changed.\n */\nexport function useReact_useMemo_10C6A43C(createFunction, dependencies) {\n const dependencies_1 = defaultArg(dependencies, []);\n return Interop_reactApi.useMemo(createFunction, dependencies_1);\n}\n\n/**\n * Creates a React function component from a function that accepts a \"props\" object and renders a result.\n * A component key can be provided in the props object, or a custom `withKey` function can be provided.\n */\nexport function React_functionComponent_Z336EF691(render, withKey) {\n return Internal_functionComponent_Z45822769(render, undefined, unwrap(withKey));\n}\n\n/**\n * Creates a React function component from a function that accepts a \"props\" object and renders a result.\n * A component key can be provided in the props object, or a custom `withKey` function can be provided.\n */\nexport function React_functionComponent_50AC6514(name, render, withKey) {\n return Internal_functionComponent_Z45822769(render, name, unwrap(withKey));\n}\n\n/**\n * Creates a React function component from a function that accepts a \"props\" object and renders a result.\n * A component key can be provided in the props object, or a custom `withKey` function can be provided.\n */\nexport function React_functionComponent_Z552AB1C(render, withKey) {\n return Internal_functionComponent_Z45822769((arg) => {\n const xs = render(arg);\n return react.createElement(react.Fragment, {}, ...xs);\n }, undefined, unwrap(withKey));\n}\n\n/**\n * Creates a React function component from a function that accepts a \"props\" object and renders a result.\n * A component key can be provided in the props object, or a custom `withKey` function can be provided.\n */\nexport function React_functionComponent_Z32EE5C21(name, render, withKey) {\n return Internal_functionComponent_Z45822769((arg) => {\n const xs = render(arg);\n return react.createElement(react.Fragment, {}, ...xs);\n }, name, unwrap(withKey));\n}\n\n/**\n * `React.memo` memoizes the result of a function component. Given the same props, React will skip rendering the component, and reuse the last rendered result.\n * By default it will only shallowly compare complex objects in the props object. For more control, a custom `areEqual` function can be provided.\n * A component key can be provided in the props object, or a custom `withKey` function can be provided.\n */\nexport function React_memo_Z71E4ACFA(render, withKey, areEqual) {\n return Internal_memo_Z1716C242(render, undefined, unwrap(areEqual), unwrap(withKey));\n}\n\n/**\n * `React.memo` memoizes the result of a function component. Given the same props, React will skip rendering the component, and reuse the last rendered result.\n * By default it will only shallowly compare complex objects in the props object. For more control, a custom `areEqual` function can be provided.\n * A component key can be provided in the props object, or a custom `withKey` function can be provided.\n */\nexport function React_memo_Z496F9C23(name, render, withKey, areEqual) {\n return Internal_memo_Z1716C242(render, name, unwrap(areEqual), unwrap(withKey));\n}\n\n/**\n * `React.memo` memoizes the result of a function component. Given the same props, React will skip rendering the component, and reuse the last rendered result.\n * By default it will only shallowly compare complex objects in the props object. For more control, a custom `areEqual` function can be provided.\n * A component key can be provided in the props object, or a custom `withKey` function can be provided.\n */\nexport function React_memo_Z7F016AD3(render, withKey, areEqual) {\n return Internal_memo_Z1716C242((arg) => {\n const xs = render(arg);\n return react.createElement(react.Fragment, {}, ...xs);\n }, undefined, unwrap(areEqual), unwrap(withKey));\n}\n\n/**\n * `React.memo` memoizes the result of a function component. Given the same props, React will skip rendering the component, and reuse the last rendered result.\n * By default it will only shallowly compare complex objects in the props object. For more control, a custom `areEqual` function can be provided.\n * A component key can be provided in the props object, or a custom `withKey` function can be provided.\n */\nexport function React_memo_Z4010840A(name, render, withKey, areEqual) {\n return Internal_memo_Z1716C242((arg) => {\n const xs = render(arg);\n return react.createElement(react.Fragment, {}, ...xs);\n }, name, unwrap(areEqual), unwrap(withKey));\n}\n\n/**\n * Creates a Context object. When React renders a component that subscribes to this Context object\n * it will read the current context value from the closest matching Provider above it in the tree.\n */\nexport function React_createContext_Z10F951C2(name, defaultValue) {\n const contextObject = Interop_reactApi.createContext(defaultArg(defaultValue, void 0));\n iterate((name_1) => {\n contextObject.displayName = name_1;\n }, toArray(name));\n return contextObject;\n}\n\n/**\n * A Provider component that allows consuming components to subscribe to context changes.\n */\nexport function React_contextProvider_34D9BBBD(contextObject, contextValue, child) {\n return Interop_reactApi.createElement(contextObject.Provider, {\n value: contextValue,\n }, child);\n}\n\n/**\n * A Provider component that allows consuming components to subscribe to context changes.\n */\nexport function React_contextProvider_138D2F56(contextObject, contextValue, children) {\n return Interop_reactApi.createElement(contextObject.Provider, {\n value: contextValue,\n }, ...children);\n}\n\n/**\n * A Consumer component that subscribes to context changes.\n */\nexport function React_contextConsumer_Z68910595(contextObject, render) {\n return Interop_reactApi.createElement(contextObject.Consumer, defaultOf(), render);\n}\n\n/**\n * A Consumer component that subscribes to context changes.\n */\nexport function React_contextConsumer_56D53A40(contextObject, render) {\n return Interop_reactApi.createElement(contextObject.Consumer, defaultOf(), (arg) => {\n const xs = render(arg);\n return react.createElement(react.Fragment, {}, ...xs);\n });\n}\n\n/**\n * The `useContext` hook. Accepts a context object (the value returned from React.createContext) and returns the current context value for that context.\n * The current context value is determined by the value prop of the nearest Provider component above the calling component in the tree.\n */\nexport function useReact_useContext_37FA55CF(contextObject) {\n return Interop_reactApi.useContext(contextObject);\n}\n\n/**\n * Creates a callback that keeps the same reference during the entire lifecycle of the component while having access to\n * the current value of the dependencies on every call.\n * \n * This hook should only be used for (like a dispatch) functions that are not used to provide information during render.\n * \n * This is not a complete replacement for the `useCallback` hook. It returns a callback that does not need explicit\n * dependency declarations and never causes a re-render.\n */\nexport function useReact_useCallbackRef_7C4B0DD6(callback) {\n const lastRenderCallbackRef = useReact_useRef_1505(callback);\n const callbackRef = useReact_useCallback_1CA17B65((arg) => lastRenderCallbackRef.current(arg), []);\n useReact_useLayoutEffect_3A5B6456(() => {\n lastRenderCallbackRef.current = callback;\n });\n return callbackRef;\n}\n\nexport const React_useStateWithUpdater_1505 = useState;\n\n/**\n * Forwards a given ref, allowing you to pass it further down to a child.\n */\nexport function React_forwardRef_3790D881(render) {\n const forwardRefType = Interop_reactApi.forwardRef((props, ref) => render([props, ref]));\n return (tupledArg) => {\n const propsObj = Object.assign({}, tupledArg[0]);\n propsObj.ref = tupledArg[1];\n return Interop_reactApi.createElement(forwardRefType, propsObj);\n };\n}\n\n/**\n * Forwards a given ref, allowing you to pass it further down to a child.\n */\nexport function React_forwardRef_7DC3DB1A(name, render) {\n const forwardRefType = Interop_reactApi.forwardRef((props, ref) => render([props, ref]));\n render.displayName = name;\n return (tupledArg) => {\n const propsObj = Object.assign({}, tupledArg[0]);\n propsObj.ref = tupledArg[1];\n return Interop_reactApi.createElement(forwardRefType, propsObj);\n };\n}\n\n/**\n * Highlights potential problems in an application by enabling additional checks\n * and warnings for descendants. As well as double rendering function components.\n * \n * This *does not do anything* in production mode. You do not need to hide it\n * with compiler directives.\n */\nexport function React_strictMode_1FEFDAB5(children) {\n return Interop_reactApi.createElement(Interop_reactApi.StrictMode, undefined, ...children);\n}\n\n/**\n * Lets you define a component that is loaded dynamically. Which helps with code splitting.\n */\nexport function React_lazy$0027_4712D3AE(dynamicImport, props) {\n return Interop_reactApi.createElement(Interop_reactApi.lazy(() => dynamicImport), props);\n}\n\n/**\n * Lets you define a component that is loaded dynamically. Which helps with code\n * splitting.\n */\nexport function React_lazy$0027_Z3D8450FC(dynamicImport, props) {\n return Interop_reactApi.createElement(Interop_reactApi.lazy(dynamicImport), props);\n}\n\n/**\n * Lets you specify a loading indicator whenever a child element is not yet ready\n * to render.\n * \n * Currently this is only usable with `React.lazy'`.\n */\nexport function React_suspense_1FEFDAB5(children) {\n let o;\n return Interop_reactApi.createElement(Interop_reactApi.Suspense, (o = {\n fallback: defaultOf(),\n }, Object.assign({}, o)), ...children);\n}\n\n/**\n * Lets you specify a loading indicator whenever a child element is not yet ready\n * to render.\n * \n * Currently this is only usable with `React.lazy'`.\n */\nexport function React_suspense_36DAE502(children, fallback) {\n let o;\n return Interop_reactApi.createElement(Interop_reactApi.Suspense, (o = {\n fallback: fallback,\n }, Object.assign({}, o)), ...children);\n}\n\n/**\n * Allows you to override the behavior of a given ref.\n */\nexport function useReact_useImperativeHandle_596DDC25(ref, createHandle) {\n Interop_reactApi.useImperativeHandle(ref, createHandle);\n}\n\n/**\n * Lets you specify a loading indicator whenever a child element is not yet ready\n * to render.\n * \n * Currently this is only usable with `React.lazy'`.\n */\nexport function useReact_useImperativeHandle_33F5CF55(ref, createHandle, dependencies) {\n Interop_reactApi.useImperativeHandle(ref, createHandle, dependencies);\n}\n\n/**\n * The `useState` hook that creates a state variable for React function components.\n */\nexport function useFeliz_React__React_useState_Static_1505(initial) {\n return Interop_reactApi.useState(initial);\n}\n\nexport const Feliz_React__React_useStateWithUpdater_Static_FCFD9EF = useState;\n\n","import {\n useEffect as useEffectReact,\n useLayoutEffect as useLayoutEffectReact,\n useDebugValue as useDebugValueReact } from 'react'\n\nexport const useEffect = getDisposable => {\n useEffectReact(() => {\n const disposable = getDisposable()\n return () => {\n disposable.Dispose();\n }\n })\n}\n\nexport const useEffectWithDeps = (getDisposable, deps) => {\n useEffectReact(() => {\n const disposable = getDisposable()\n return () => {\n disposable.Dispose();\n }\n }, deps)\n}\n\nexport const useLayoutEffect = getDisposable => {\n useLayoutEffectReact(() => {\n const disposable = getDisposable()\n return () => {\n disposable.Dispose();\n }\n })\n}\n\nexport const useLayoutEffectWithDeps = (getDisposable, deps) => {\n useLayoutEffectReact(() => {\n const disposable = getDisposable()\n return () => {\n disposable.Dispose();\n }\n }, deps)\n}\n\nexport const useDebugValue = (value, formatter) => useDebugValueReact(value, formatter)","import { split, trimEnd, isNullOrWhiteSpace, substring, join, endsWith } from \"../fable-library-js.4.17.0/String.js\";\nimport { ofArray, singleton, collect, head, empty, tail, isEmpty, reverse, map } from \"../fable-library-js.4.17.0/List.js\";\nimport { item, equalsWith } from \"../fable-library-js.4.17.0/Array.js\";\nimport { defaultOf } from \"../fable-library-js.4.17.0/Util.js\";\nimport { useReact_useEffectOnce_3A5B6456, React_createDisposable_3A5B6456, useReact_useEffectOnce_Z5ECA432F, useReact_useCallbackRef_7C4B0DD6, React_memo_Z71E4ACFA } from \"../Feliz.2.7.0/React.fs.js\";\nimport { defaultArg } from \"../fable-library-js.4.17.0/Option.js\";\nimport { defaultOf as defaultOf_1 } from \"../fable-library-js.4.17.0/Util.js\";\nimport { tryParse } from \"../fable-library-js.4.17.0/Int32.js\";\nimport { FSharpRef } from \"../fable-library-js.4.17.0/Types.js\";\nimport { tryParse as tryParse_1 } from \"../fable-library-js.4.17.0/Long.js\";\nimport { tryParse as tryParse_2 } from \"../fable-library-js.4.17.0/Guid.js\";\nimport { tryParse as tryParse_3 } from \"../fable-library-js.4.17.0/Double.js\";\nimport { tryParse as tryParse_4 } from \"../fable-library-js.4.17.0/Decimal.js\";\nimport Decimal from \"../fable-library-js.4.17.0/Decimal.js\";\nimport { map as map_1, delay, toList } from \"../fable-library-js.4.17.0/Seq.js\";\n\nexport function RouterModule_String_$007CPrefix$007C(prefix, str) {\n if (str.indexOf(prefix) === 0) {\n return str;\n }\n else {\n return undefined;\n }\n}\n\nexport function RouterModule_String_$007CSuffix$007C(suffix, str) {\n if (endsWith(str, suffix)) {\n return str;\n }\n else {\n return undefined;\n }\n}\n\nexport function RouterModule_encodeQueryString(queryStringPairs) {\n const _arg = join(\"&\", map((tupledArg) => join(\"=\", [encodeURIComponent(tupledArg[0]), encodeURIComponent(tupledArg[1])]), queryStringPairs));\n if (_arg === \"\") {\n return \"\";\n }\n else {\n return \"?\" + _arg;\n }\n}\n\nexport function RouterModule_encodeQueryStringInts(queryStringIntPairs) {\n const _arg = join(\"&\", map((tupledArg) => join(\"=\", [encodeURIComponent(tupledArg[0]), tupledArg[1]]), queryStringIntPairs));\n if (_arg === \"\") {\n return \"\";\n }\n else {\n return \"?\" + _arg;\n }\n}\n\nfunction RouterModule_normalizeRoute(routeMode) {\n if (routeMode === 1) {\n return (_arg) => {\n let activePatternResult, path, activePatternResult_1, path_1, activePatternResult_2, path_2;\n return (activePatternResult = RouterModule_String_$007CPrefix$007C(\"/\", _arg), (activePatternResult != null) ? ((path = activePatternResult, \"#\" + path)) : ((activePatternResult_1 = RouterModule_String_$007CPrefix$007C(\"#/\", _arg), (activePatternResult_1 != null) ? ((path_1 = activePatternResult_1, path_1)) : ((activePatternResult_2 = RouterModule_String_$007CPrefix$007C(\"#\", _arg), (activePatternResult_2 != null) ? ((path_2 = activePatternResult_2, \"#/\" + substring(path_2, 1, path_2.length - 1))) : (\"#/\" + _arg))))));\n };\n }\n else {\n return (_arg_1) => {\n let activePatternResult_3, path_4;\n return (activePatternResult_3 = RouterModule_String_$007CPrefix$007C(\"/\", _arg_1), (activePatternResult_3 != null) ? ((path_4 = activePatternResult_3, path_4)) : (\"/\" + _arg_1));\n };\n }\n}\n\nexport function RouterModule_encodeParts(xs, routeMode) {\n return RouterModule_normalizeRoute(routeMode)(join(\"/\", map((part) => {\n if (((part.indexOf(\"?\") >= 0) ? true : (part.indexOf(\"#\") === 0)) ? true : (part.indexOf(\"/\") === 0)) {\n return part;\n }\n else {\n return encodeURIComponent(part);\n }\n }, xs)));\n}\n\n/**\n * Safely returns tuple of list items without last one and last item\n */\nexport function RouterModule_trySeparateLast(xs) {\n const matchValue = reverse(xs);\n if (!isEmpty(matchValue)) {\n if (isEmpty(tail(matchValue))) {\n return [empty(), head(matchValue)];\n }\n else {\n return [reverse(tail(matchValue)), head(matchValue)];\n }\n }\n else {\n return undefined;\n }\n}\n\nexport function RouterModule_nav(xs, mode, routeMode) {\n if (mode === 1) {\n history.pushState(undefined, \"\", RouterModule_encodeParts(xs, routeMode));\n }\n else {\n history.replaceState(undefined, \"\", RouterModule_encodeParts(xs, routeMode));\n }\n const ev = document.createEvent(\"CustomEvent\");\n ev.initEvent(\"CUSTOM_NAVIGATION_EVENT\", true, true);\n window.dispatchEvent(ev);\n}\n\n/**\n * Parses the URL into multiple path segments\n */\nexport function RouterModule_urlSegments(path, mode) {\n return collect((segment) => {\n if (isNullOrWhiteSpace(segment)) {\n return empty();\n }\n else {\n const segment_1 = trimEnd(segment, \"#\");\n if (segment_1 === \"?\") {\n return empty();\n }\n else if (RouterModule_String_$007CPrefix$007C(\"?\", segment_1) != null) {\n return singleton(segment_1);\n }\n else {\n const matchValue = segment_1.split(\"?\");\n if (!equalsWith((x, y) => (x === y), matchValue, defaultOf()) && (matchValue.length === 1)) {\n const value = item(0, matchValue);\n return singleton(decodeURIComponent(value));\n }\n else if (!equalsWith((x_1, y_1) => (x_1 === y_1), matchValue, defaultOf()) && (matchValue.length === 2)) {\n if (item(1, matchValue) === \"\") {\n const value_1 = item(0, matchValue);\n return singleton(decodeURIComponent(value_1));\n }\n else {\n const value_2 = item(0, matchValue);\n const query = item(1, matchValue);\n return ofArray([decodeURIComponent(value_2), \"?\" + query]);\n }\n }\n else {\n return empty();\n }\n }\n }\n }, ofArray(split((RouterModule_String_$007CPrefix$007C(\"#\", path) != null) ? substring(path, 1, path.length - 1) : ((mode === 1) ? ((RouterModule_String_$007CSuffix$007C(\"#\", path) != null) ? \"\" : ((RouterModule_String_$007CSuffix$007C(\"#/\", path) != null) ? \"\" : path)) : path), [\"/\"], undefined, 0)));\n}\n\nexport function RouterModule_onUrlChange(routeMode, urlChanged, ev) {\n return urlChanged(RouterModule_urlSegments((routeMode === 2) ? (window.location.pathname + window.location.search) : window.location.hash, routeMode));\n}\n\nexport const RouterModule_router = React_memo_Z71E4ACFA((input) => {\n const onChange = useReact_useCallbackRef_7C4B0DD6((ev) => {\n const urlChanged = defaultArg(input.onUrlChanged, (value) => {\n });\n RouterModule_onUrlChange(defaultArg(input.hashMode, 1), urlChanged, ev);\n });\n useReact_useEffectOnce_Z5ECA432F(() => {\n if (((window.navigator.userAgent).indexOf(\"Trident\") >= 0) ? true : ((window.navigator.userAgent).indexOf(\"MSIE\") >= 0)) {\n window.addEventListener(\"hashchange\", onChange);\n }\n else {\n window.addEventListener(\"popstate\", onChange);\n }\n window.addEventListener(\"CUSTOM_NAVIGATION_EVENT\", onChange);\n return React_createDisposable_3A5B6456(() => {\n if (((window.navigator.userAgent).indexOf(\"Trident\") >= 0) ? true : ((window.navigator.userAgent).indexOf(\"MSIE\") >= 0)) {\n window.removeEventListener(\"hashchange\", onChange);\n }\n else {\n window.removeEventListener(\"popstate\", onChange);\n }\n window.removeEventListener(\"CUSTOM_NAVIGATION_EVENT\", onChange);\n });\n });\n useReact_useEffectOnce_3A5B6456(() => {\n const ev_1 = document.createEvent(\"CustomEvent\");\n ev_1.initEvent(\"CUSTOM_NAVIGATION_EVENT\", true, true);\n window.dispatchEvent(ev_1);\n });\n const matchValue = input.application;\n return (matchValue == null) ? defaultOf_1() : matchValue;\n});\n\nexport function Route_$007CInt$007C_$007C(input) {\n let matchValue;\n let outArg = 0;\n matchValue = [tryParse(input, 511, false, 32, new FSharpRef(() => outArg, (v) => {\n outArg = (v | 0);\n })), outArg];\n if (matchValue[0]) {\n return matchValue[1];\n }\n else {\n return undefined;\n }\n}\n\nexport function Route_$007CInt64$007C_$007C(input) {\n let matchValue;\n let outArg = 0n;\n matchValue = [tryParse_1(input, 511, false, 64, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return matchValue[1];\n }\n else {\n return undefined;\n }\n}\n\nexport function Route_$007CGuid$007C_$007C(input) {\n let matchValue;\n let outArg = \"00000000-0000-0000-0000-000000000000\";\n matchValue = [tryParse_2(input, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return matchValue[1];\n }\n else {\n return undefined;\n }\n}\n\nexport function Route_$007CNumber$007C_$007C(input) {\n let matchValue;\n let outArg = 0;\n matchValue = [tryParse_3(input, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return matchValue[1];\n }\n else {\n return undefined;\n }\n}\n\nexport function Route_$007CDecimal$007C_$007C(input) {\n let matchValue;\n let outArg = new Decimal(\"0\");\n matchValue = [tryParse_4(input, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return matchValue[1];\n }\n else {\n return undefined;\n }\n}\n\nexport function Route_$007CBool$007C_$007C(input) {\n const matchValue = input.toLocaleLowerCase();\n switch (matchValue) {\n case \"1\":\n case \"true\":\n return true;\n case \"0\":\n case \"false\":\n return false;\n case \"\":\n return true;\n default:\n return undefined;\n }\n}\n\n/**\n * Used to parse the query string parameter of the route.\n * \n * For example to match against\n * \n * `/users?id={value}`\n * \n * You can pattern match:\n * \n * `[ \"users\"; Route.Query [ \"id\", value ] ] -> value`\n * \n * When `{value}` is an integer then you can pattern match:\n * \n * `[ \"users\"; Route.Query [ \"id\", Route.Int userId ] ] -> userId`\n */\nexport function Route_$007CQuery$007C_$007C(input) {\n try {\n const urlParams = new URLSearchParams(input);\n return toList(delay(() => map_1((entry) => [item(0, entry), item(1, entry)], urlParams.entries())));\n }\n catch (matchValue) {\n return undefined;\n }\n}\n\n","import { Record, Union } from \"./Types.js\";\nimport { combineHashCodes, equalArraysWith, stringHash } from \"./Util.js\";\nimport Decimal from \"./Decimal.js\";\nexport class CaseInfo {\n constructor(declaringType, tag, name, fields) {\n this.declaringType = declaringType;\n this.tag = tag;\n this.name = name;\n this.fields = fields;\n }\n}\nexport class MethodInfo {\n constructor(name, parameters, returnType) {\n this.name = name;\n this.parameters = parameters;\n this.returnType = returnType;\n }\n}\nexport class TypeInfo {\n constructor(fullname, generics, construct, parent, fields, cases, enumCases) {\n this.fullname = fullname;\n this.generics = generics;\n this.construct = construct;\n this.parent = parent;\n this.fields = fields;\n this.cases = cases;\n this.enumCases = enumCases;\n }\n toString() {\n return fullName(this);\n }\n GetHashCode() {\n return getHashCode(this);\n }\n Equals(other) {\n return equals(this, other);\n }\n}\nexport class GenericParameter extends TypeInfo {\n constructor(name) {\n super(name);\n }\n}\nexport function getGenerics(t) {\n return t.generics != null ? t.generics : [];\n}\nexport function getHashCode(t) {\n const fullnameHash = stringHash(t.fullname);\n const genHashes = getGenerics(t).map(getHashCode);\n return combineHashCodes([fullnameHash, ...genHashes]);\n}\nexport function equals(t1, t2) {\n if (t1.fullname === \"\") { // Anonymous records\n return t2.fullname === \"\"\n && equalArraysWith(getRecordElements(t1), getRecordElements(t2), ([k1, v1], [k2, v2]) => k1 === k2 && equals(v1, v2));\n }\n else {\n return t1.fullname === t2.fullname\n && equalArraysWith(getGenerics(t1), getGenerics(t2), equals);\n }\n}\nexport function class_type(fullname, generics, construct, parent) {\n return new TypeInfo(fullname, generics, construct, parent);\n}\nexport function record_type(fullname, generics, construct, fields) {\n return new TypeInfo(fullname, generics, construct, undefined, fields);\n}\nexport function anonRecord_type(...fields) {\n return new TypeInfo(\"\", undefined, undefined, undefined, () => fields);\n}\nexport function union_type(fullname, generics, construct, cases) {\n const t = new TypeInfo(fullname, generics, construct, undefined, undefined, () => {\n const caseNames = construct.prototype.cases();\n return cases().map((fields, i) => new CaseInfo(t, i, caseNames[i], fields));\n });\n return t;\n}\nexport function tuple_type(...generics) {\n return new TypeInfo(\"System.Tuple`\" + generics.length, generics);\n}\nexport function delegate_type(...generics) {\n return new TypeInfo(\"System.Func`\" + generics.length, generics);\n}\nexport function lambda_type(argType, returnType) {\n return new TypeInfo(\"Microsoft.FSharp.Core.FSharpFunc`2\", [argType, returnType]);\n}\nexport function option_type(generic) {\n return new TypeInfo(\"Microsoft.FSharp.Core.FSharpOption`1\", [generic]);\n}\nexport function list_type(generic) {\n return new TypeInfo(\"Microsoft.FSharp.Collections.FSharpList`1\", [generic]);\n}\nexport function array_type(generic) {\n return new TypeInfo(\"[]\", [generic]);\n}\nexport function enum_type(fullname, underlyingType, enumCases) {\n return new TypeInfo(fullname, [underlyingType], undefined, undefined, undefined, undefined, enumCases);\n}\nexport function measure_type(fullname) {\n return new TypeInfo(fullname);\n}\nexport function generic_type(name) {\n return new GenericParameter(name);\n}\nexport const obj_type = new TypeInfo(\"System.Object\");\nexport const unit_type = new TypeInfo(\"Microsoft.FSharp.Core.Unit\");\nexport const char_type = new TypeInfo(\"System.Char\");\nexport const string_type = new TypeInfo(\"System.String\");\nexport const bool_type = new TypeInfo(\"System.Boolean\");\nexport const int8_type = new TypeInfo(\"System.SByte\");\nexport const uint8_type = new TypeInfo(\"System.Byte\");\nexport const int16_type = new TypeInfo(\"System.Int16\");\nexport const uint16_type = new TypeInfo(\"System.UInt16\");\nexport const int32_type = new TypeInfo(\"System.Int32\");\nexport const uint32_type = new TypeInfo(\"System.UInt32\");\nexport const int64_type = new TypeInfo(\"System.Int64\");\nexport const uint64_type = new TypeInfo(\"System.UInt64\");\nexport const int128_type = new TypeInfo(\"System.Int128\");\nexport const uint128_type = new TypeInfo(\"System.UInt128\");\nexport const nativeint_type = new TypeInfo(\"System.IntPtr\");\nexport const unativeint_type = new TypeInfo(\"System.UIntPtr\");\nexport const float16_type = new TypeInfo(\"System.Half\");\nexport const float32_type = new TypeInfo(\"System.Single\");\nexport const float64_type = new TypeInfo(\"System.Double\");\nexport const decimal_type = new TypeInfo(\"System.Decimal\");\nexport const bigint_type = new TypeInfo(\"System.Numerics.BigInteger\");\nexport function name(info) {\n if (Array.isArray(info)) {\n return info[0];\n }\n else if (info instanceof TypeInfo) {\n const elemType = getElementType(info);\n if (elemType != null) {\n return name(elemType) + \"[]\";\n }\n else {\n const i = info.fullname.lastIndexOf(\".\");\n return i === -1 ? info.fullname : info.fullname.substr(i + 1);\n }\n }\n else {\n return info.name;\n }\n}\nexport function fullName(t) {\n const elemType = getElementType(t);\n if (elemType != null) {\n return fullName(elemType) + \"[]\";\n }\n else if (t.generics == null || t.generics.length === 0) {\n return t.fullname;\n }\n else {\n return t.fullname + \"[\" + t.generics.map((x) => fullName(x)).join(\",\") + \"]\";\n }\n}\nexport function namespace(t) {\n const elemType = getElementType(t);\n if (elemType != null) {\n return namespace(elemType);\n }\n else {\n const i = t.fullname.lastIndexOf(\".\");\n return i === -1 ? \"\" : t.fullname.substr(0, i);\n }\n}\nexport function isArray(t) {\n return getElementType(t) != null;\n}\nexport function getElementType(t) {\n return t.fullname === \"[]\" && t.generics?.length === 1 ? t.generics[0] : undefined;\n}\nexport function isGenericType(t) {\n return t.generics != null && t.generics.length > 0;\n}\nexport function isGenericParameter(t) {\n return t instanceof GenericParameter;\n}\nexport function isEnum(t) {\n return t.enumCases != null && t.enumCases.length > 0;\n}\nexport function isSubclassOf(t1, t2) {\n return (t2.fullname === obj_type.fullname) || (t1.parent != null && (t1.parent.Equals(t2) || isSubclassOf(t1.parent, t2)));\n}\nfunction isErasedToNumber(t) {\n return isEnum(t) || [\n int8_type.fullname,\n uint8_type.fullname,\n int16_type.fullname,\n uint16_type.fullname,\n int32_type.fullname,\n uint32_type.fullname,\n float16_type.fullname,\n float32_type.fullname,\n float64_type.fullname,\n ].includes(t.fullname);\n}\nfunction isErasedToBigInt(t) {\n return isEnum(t) || [\n int64_type.fullname,\n uint64_type.fullname,\n int128_type.fullname,\n uint128_type.fullname,\n nativeint_type.fullname,\n unativeint_type.fullname,\n bigint_type.fullname,\n ].includes(t.fullname);\n}\nexport function isInstanceOfType(t, o) {\n if (t.fullname === obj_type.fullname)\n return true;\n switch (typeof o) {\n case \"boolean\":\n return t.fullname === bool_type.fullname;\n case \"string\":\n return t.fullname === string_type.fullname;\n case \"function\":\n return isFunction(t);\n case \"number\":\n return isErasedToNumber(t);\n case \"bigint\":\n return isErasedToBigInt(t);\n default:\n return t.construct != null && o instanceof t.construct;\n }\n}\n/**\n * This doesn't replace types for fields (records) or cases (unions)\n * but it should be enough for type comparison purposes\n */\nexport function getGenericTypeDefinition(t) {\n return t.generics == null ? t : new TypeInfo(t.fullname, t.generics.map(() => obj_type));\n}\nexport function getEnumUnderlyingType(t) {\n return t.generics?.[0];\n}\nexport function getEnumValues(t) {\n if (isEnum(t) && t.enumCases != null) {\n return t.enumCases.map((kv) => kv[1]);\n }\n else {\n throw new Error(`${t.fullname} is not an enum type`);\n }\n}\nexport function getEnumNames(t) {\n if (isEnum(t) && t.enumCases != null) {\n return t.enumCases.map((kv) => kv[0]);\n }\n else {\n throw new Error(`${t.fullname} is not an enum type`);\n }\n}\nfunction getEnumCase(t, v) {\n if (t.enumCases != null) {\n if (typeof v === \"string\") {\n for (const kv of t.enumCases) {\n if (kv[0] === v) {\n return kv;\n }\n }\n throw new Error(`'${v}' was not found in ${t.fullname}`);\n }\n else {\n for (const kv of t.enumCases) {\n if (kv[1] === v) {\n return kv;\n }\n }\n // .NET returns the number even if it doesn't match any of the cases\n return [\"\", v];\n }\n }\n else {\n throw new Error(`${t.fullname} is not an enum type`);\n }\n}\nexport function parseEnum(t, str) {\n // TODO: better int parsing here, parseInt ceils floats: \"4.8\" -> 4\n const value = parseInt(str, 10);\n return getEnumCase(t, isNaN(value) ? str : value)[1];\n}\nexport function tryParseEnum(t, str, defValue) {\n try {\n defValue.contents = parseEnum(t, str);\n return true;\n }\n catch {\n return false;\n }\n}\nexport function getEnumName(t, v) {\n return getEnumCase(t, v)[0];\n}\nexport function isEnumDefined(t, v) {\n try {\n const kv = getEnumCase(t, v);\n return kv[0] != null && kv[0] !== \"\";\n }\n catch {\n // supress error\n }\n return false;\n}\n// FSharpType\nexport function getUnionCases(t) {\n if (t.cases != null) {\n return t.cases();\n }\n else {\n throw new Error(`${t.fullname} is not an F# union type`);\n }\n}\nexport function getRecordElements(t) {\n if (t.fields != null) {\n return t.fields();\n }\n else {\n throw new Error(`${t.fullname} is not an F# record type`);\n }\n}\nexport function getTupleElements(t) {\n if (isTuple(t) && t.generics != null) {\n return t.generics;\n }\n else {\n throw new Error(`${t.fullname} is not a tuple type`);\n }\n}\nexport function getFunctionElements(t) {\n if (isFunction(t) && t.generics != null) {\n const gen = t.generics;\n return [gen[0], gen[1]];\n }\n else {\n throw new Error(`${t.fullname} is not an F# function type`);\n }\n}\nexport function isUnion(t) {\n return t instanceof TypeInfo ? t.cases != null : t instanceof Union;\n}\nexport function isRecord(t) {\n return t instanceof TypeInfo ? t.fields != null : t instanceof Record;\n}\nexport function isTuple(t) {\n return t.fullname.startsWith(\"System.Tuple\");\n}\n// In .NET this is false for delegates\nexport function isFunction(t) {\n return t.fullname === \"Microsoft.FSharp.Core.FSharpFunc`2\";\n}\n// FSharpValue\nexport function getUnionFields(v, t) {\n const cases = getUnionCases(t);\n const case_ = cases[v.tag];\n if (case_ == null) {\n throw new Error(`Cannot find case ${v.name} in union type`);\n }\n return [case_, v.fields];\n}\nexport function getUnionCaseFields(uci) {\n return uci.fields == null ? [] : uci.fields;\n}\n// This is used as replacement of `FSharpValue.GetRecordFields`\n// For `FSharpTypes.GetRecordFields` see `getRecordElements`\n// Object.keys returns keys in the order they were added to the object\nexport function getRecordFields(v) {\n return Object.keys(v).map((k) => v[k]);\n}\nexport function getRecordField(v, field) {\n return v[field[0]];\n}\nexport function getTupleFields(v) {\n return v;\n}\nexport function getTupleField(v, i) {\n return v[i];\n}\nexport function makeUnion(uci, values) {\n const expectedLength = (uci.fields || []).length;\n if (values.length !== expectedLength) {\n throw new Error(`Expected an array of length ${expectedLength} but got ${values.length}`);\n }\n const construct = uci.declaringType.construct;\n if (construct == null) {\n return {};\n }\n const isSingleCase = uci.declaringType.cases ? uci.declaringType.cases().length == 1 : false;\n if (isSingleCase) {\n return new construct(...values);\n }\n else {\n return new construct(uci.tag, values);\n }\n}\nexport function makeRecord(t, values) {\n const fields = getRecordElements(t);\n if (fields.length !== values.length) {\n throw new Error(`Expected an array of length ${fields.length} but got ${values.length}`);\n }\n return t.construct != null\n ? new t.construct(...values)\n : fields.reduce((obj, [key, _t], i) => {\n obj[key] = values[i];\n return obj;\n }, {});\n}\nexport function makeTuple(values, _t) {\n return values;\n}\nexport function makeGenericType(t, generics) {\n return new TypeInfo(t.fullname, generics, t.construct, t.parent, t.fields, t.cases);\n}\nexport function createInstance(t, consArgs) {\n // TODO: Check if consArgs length is same as t.construct?\n // (Arg types can still be different)\n if (typeof t.construct === \"function\") {\n return new t.construct(...(consArgs ?? []));\n }\n else if (isErasedToNumber(t)) {\n return 0;\n }\n else if (isErasedToBigInt(t)) {\n return 0n;\n }\n else {\n switch (t.fullname) {\n case obj_type.fullname:\n return {};\n case bool_type.fullname:\n return false;\n case decimal_type.fullname:\n return new Decimal(0);\n case char_type.fullname:\n // Even though char is a value type, it's erased to string, and Unchecked.defaultof is null\n return null;\n default:\n throw new Error(`Cannot access constructor of ${t.fullname}`);\n }\n }\n}\nexport function getValue(propertyInfo, v) {\n return v[propertyInfo[0]];\n}\n// Fable.Core.Reflection\nfunction assertUnion(x) {\n if (!(x instanceof Union)) {\n throw new Error(`Value is not an F# union type`);\n }\n}\nexport function getCaseTag(x) {\n assertUnion(x);\n return x.tag;\n}\nexport function getCaseName(x) {\n assertUnion(x);\n return x.cases()[x.tag];\n}\nexport function getCaseFields(x) {\n assertUnion(x);\n return x.fields;\n}\n","import { Record } from \"./fable_modules/fable-library-js.4.17.0/Types.js\";\nimport { option_type, record_type, bool_type, string_type } from \"./fable_modules/fable-library-js.4.17.0/Reflection.js\";\n\nexport class LoginRequest extends Record {\n constructor(Username, Password, Persist) {\n super();\n this.Username = Username;\n this.Password = Password;\n this.Persist = Persist;\n }\n}\n\nexport function LoginRequest_$reflection() {\n return record_type(\"Types.LoginRequest\", [], LoginRequest, () => [[\"Username\", string_type], [\"Password\", string_type], [\"Persist\", bool_type]]);\n}\n\nexport class LoginResponse extends Record {\n constructor(Result, Message, BanUntil) {\n super();\n this.Result = Result;\n this.Message = Message;\n this.BanUntil = BanUntil;\n }\n}\n\nexport function LoginResponse_$reflection() {\n return record_type(\"Types.LoginResponse\", [], LoginResponse, () => [[\"Result\", string_type], [\"Message\", string_type], [\"BanUntil\", option_type(string_type)]]);\n}\n\nexport class OAuthAuthResponse extends Record {\n constructor(Result, Email, Token) {\n super();\n this.Result = Result;\n this.Email = Email;\n this.Token = Token;\n }\n}\n\nexport function OAuthAuthResponse_$reflection() {\n return record_type(\"Types.OAuthAuthResponse\", [], OAuthAuthResponse, () => [[\"Result\", LoginResponse_$reflection()], [\"Email\", string_type], [\"Token\", string_type]]);\n}\n\nexport class AppleAuthRequest extends Record {\n constructor(Code, IdToken, Email) {\n super();\n this.Code = Code;\n this.IdToken = IdToken;\n this.Email = Email;\n }\n}\n\nexport function AppleAuthRequest_$reflection() {\n return record_type(\"Types.AppleAuthRequest\", [], AppleAuthRequest, () => [[\"Code\", string_type], [\"IdToken\", string_type], [\"Email\", option_type(string_type)]]);\n}\n\nexport class OAuthRegisterRequest extends Record {\n constructor(Token, Username) {\n super();\n this.Token = Token;\n this.Username = Username;\n }\n}\n\nexport function OAuthRegisterRequest_$reflection() {\n return record_type(\"Types.OAuthRegisterRequest\", [], OAuthRegisterRequest, () => [[\"Token\", string_type], [\"Username\", string_type]]);\n}\n\nexport class GenericResponse extends Record {\n constructor(Result, Message) {\n super();\n this.Result = Result;\n this.Message = Message;\n }\n}\n\nexport function GenericResponse_$reflection() {\n return record_type(\"Types.GenericResponse\", [], GenericResponse, () => [[\"Result\", string_type], [\"Message\", string_type]]);\n}\n\nexport class RegisterRequest extends Record {\n constructor(Username, Password, Email) {\n super();\n this.Username = Username;\n this.Password = Password;\n this.Email = Email;\n }\n}\n\nexport function RegisterRequest_$reflection() {\n return record_type(\"Types.RegisterRequest\", [], RegisterRequest, () => [[\"Username\", string_type], [\"Password\", string_type], [\"Email\", string_type]]);\n}\n\nexport class AccountInfo extends Record {\n constructor(Username, Email, EmailVerified, EmailRegistered, AppleRegistered, GoogleRegistered, Joined) {\n super();\n this.Username = Username;\n this.Email = Email;\n this.EmailVerified = EmailVerified;\n this.EmailRegistered = EmailRegistered;\n this.AppleRegistered = AppleRegistered;\n this.GoogleRegistered = GoogleRegistered;\n this.Joined = Joined;\n }\n}\n\nexport function AccountInfo_$reflection() {\n return record_type(\"Types.AccountInfo\", [], AccountInfo, () => [[\"Username\", string_type], [\"Email\", string_type], [\"EmailVerified\", bool_type], [\"EmailRegistered\", bool_type], [\"AppleRegistered\", bool_type], [\"GoogleRegistered\", bool_type], [\"Joined\", string_type]]);\n}\n\nexport class Session extends Record {\n constructor(Agent, IP, Since) {\n super();\n this.Agent = Agent;\n this.IP = IP;\n this.Since = Since;\n }\n}\n\nexport function Session_$reflection() {\n return record_type(\"Types.Session\", [], Session, () => [[\"Agent\", string_type], [\"IP\", string_type], [\"Since\", string_type]]);\n}\n\n","import { equals } from \"./Util.js\";\nimport { Union } from \"./Types.js\";\nconst CaseRules = {\n None: 0,\n LowerFirst: 1,\n SnakeCase: 2,\n SnakeCaseAllCaps: 3,\n KebabCase: 4,\n};\nfunction dashify(str, separator) {\n return str.replace(/[a-z]?[A-Z]/g, (m) => m.length === 1\n ? m.toLowerCase()\n : m.charAt(0) + separator + m.charAt(1).toLowerCase());\n}\nfunction changeCase(str, caseRule) {\n switch (caseRule) {\n case CaseRules.LowerFirst:\n return str.charAt(0).toLowerCase() + str.slice(1);\n case CaseRules.SnakeCase:\n return dashify(str, \"_\");\n case CaseRules.SnakeCaseAllCaps:\n return dashify(str, \"_\").toUpperCase();\n case CaseRules.KebabCase:\n return dashify(str, \"-\");\n case CaseRules.None:\n default:\n return str;\n }\n}\nexport function keyValueList(fields, caseRule = CaseRules.None) {\n const obj = {};\n const definedCaseRule = caseRule;\n function fail(kvPair) {\n throw new Error(\"Cannot infer key and value of \" + String(kvPair));\n }\n function assign(key, caseRule, value) {\n key = changeCase(key, caseRule);\n obj[key] = value;\n }\n for (let kvPair of fields) {\n let caseRule = CaseRules.None;\n if (kvPair == null) {\n fail(kvPair);\n }\n // Deflate unions and use the defined case rule\n if (kvPair instanceof Union) {\n const name = kvPair.cases()[kvPair.tag];\n kvPair = kvPair.fields.length === 0 ? name : [name].concat(kvPair.fields);\n caseRule = definedCaseRule;\n }\n if (Array.isArray(kvPair)) {\n switch (kvPair.length) {\n case 0:\n fail(kvPair);\n break;\n case 1:\n assign(kvPair[0], caseRule, true);\n break;\n case 2:\n const value = kvPair[1];\n assign(kvPair[0], caseRule, value);\n break;\n default:\n assign(kvPair[0], caseRule, kvPair.slice(1));\n }\n }\n else if (typeof kvPair === \"string\") {\n assign(kvPair, caseRule, true);\n }\n else {\n fail(kvPair);\n }\n }\n return obj;\n}\n// TODO: Move these methods to Map and Set modules\nexport function containsValue(v, map) {\n for (const kv of map) {\n if (equals(v, kv[1])) {\n return true;\n }\n }\n return false;\n}\nexport function tryGetValue(map, key, defaultValue) {\n if (map.has(key)) {\n defaultValue.contents = map.get(key);\n return true;\n }\n return false;\n}\nexport function addToSet(v, set) {\n if (set.has(v)) {\n return false;\n }\n set.add(v);\n return true;\n}\nexport function tryAddToDict(dict, k, v) {\n if (dict.has(k)) {\n return false;\n }\n dict.set(k, v);\n return true;\n}\nexport function addToDict(dict, k, v) {\n if (dict.has(k)) {\n throw new Error(\"An item with the same key has already been added. Key: \" + k);\n }\n dict.set(k, v);\n}\nexport function getItemFromDict(map, key) {\n if (map.has(key)) {\n return map.get(key);\n }\n else {\n throw new Error(`The given key '${key}' was not present in the dictionary.`);\n }\n}\nexport function getItemFromDictOrCreate(map, key, createValue) {\n if (map.has(key)) {\n return map.get(key);\n }\n const value = createValue(key);\n map.set(key, value);\n return value;\n}\n","import { Union } from \"../fable-library-js.4.17.0/Types.js\";\nimport { class_type, union_type, obj_type, int32_type, string_type } from \"../fable-library-js.4.17.0/Reflection.js\";\nimport { int32ToString } from \"../fable-library-js.4.17.0/Util.js\";\nimport { keyValueList } from \"../fable-library-js.4.17.0/MapUtil.js\";\nimport { result } from \"../Fable.Promise.2.0.0/Promise.fs.js\";\nimport { singleton } from \"../fable-library-js.4.17.0/List.js\";\n\nexport class Types_HttpRequestHeaders extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Accept\", \"Accept-Charset\", \"Accept-Encoding\", \"Accept-Language\", \"Accept-Datetime\", \"Authorization\", \"Cache-Control\", \"Connection\", \"Cookie\", \"Content-Length\", \"Content-MD5\", \"Content-Type\", \"Date\", \"Expect\", \"Forwarded\", \"From\", \"Host\", \"If-Match\", \"If-Modified-Since\", \"If-None-Match\", \"If-Range\", \"If-Unmodified-Since\", \"Max-Forwards\", \"Origin\", \"Pragma\", \"Proxy-Authorization\", \"Range\", \"Referer\", \"SOAPAction\", \"TE\", \"User-Agent\", \"Upgrade\", \"Via\", \"Warning\", \"X-Requested-With\", \"DNT\", \"X-Forwarded-For\", \"X-Forwarded-Host\", \"X-Forwarded-Proto\", \"Front-End-Https\", \"X-Http-Method-Override\", \"X-ATT-DeviceId\", \"X-Wap-Profile\", \"Proxy-Connection\", \"X-UIDH\", \"X-Csrf-Token\", \"Custom\"];\n }\n}\n\nexport function Types_HttpRequestHeaders_$reflection() {\n return union_type(\"Fetch.Types.HttpRequestHeaders\", [], Types_HttpRequestHeaders, () => [[[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", int32_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"key\", string_type], [\"value\", obj_type]]]);\n}\n\nexport class Types_RequestProperties extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Method\", \"Headers\", \"Body\", \"Mode\", \"Credentials\", \"Cache\"];\n }\n}\n\nexport function Types_RequestProperties_$reflection() {\n return union_type(\"Fetch.Types.RequestProperties\", [], Types_RequestProperties, () => [[[\"Item\", string_type]], [[\"Item\", class_type(\"Fetch.Types.IHttpRequestHeaders\")]], [[\"Item\", class_type(\"Fable.Core.U3`3\", [class_type(\"Browser.Types.Blob\"), class_type(\"Browser.Types.FormData\"), string_type])]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]]]);\n}\n\nfunction errorString(response) {\n return (((int32ToString(response.status) + \" \") + (response.statusText)) + \" for URL \") + (response.url);\n}\n\n/**\n * Retrieves data from the specified resource. Fails if `response.Ok` evals to false.\n */\nexport function fetch$(url, init) {\n const pr = fetch(url, keyValueList(init, 1));\n return pr.then((response) => {\n if (response.ok) {\n return response;\n }\n else {\n throw new Error(errorString(response));\n }\n });\n}\n\nexport function tryFetch(url, init) {\n return result(fetch$(url, init));\n}\n\n/**\n * Sends a HTTP OPTIONS request.\n */\nexport function tryOptionsRequest(url) {\n return result(fetch$(url, singleton(new Types_RequestProperties(0, [\"OPTIONS\"]))));\n}\n\n","import { Union } from \"../fable-library-js.4.17.0/Types.js\";\nimport { union_type, string_type, class_type } from \"../fable-library-js.4.17.0/Reflection.js\";\nimport { keyValueList } from \"../fable-library-js.4.17.0/MapUtil.js\";\nimport { Types_HttpRequestHeaders } from \"../Fable.Fetch.2.1.0/Fetch.fs.js\";\nimport { append, cons } from \"../fable-library-js.4.17.0/List.js\";\nimport { map, defaultArg } from \"../fable-library-js.4.17.0/Option.js\";\nimport { int32ToString } from \"../fable-library-js.4.17.0/Util.js\";\n\nexport class FetchError extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"PreparingRequestFailed\", \"DecodingFailed\", \"FetchFailed\", \"NetworkError\"];\n }\n}\n\nexport function FetchError_$reflection() {\n return union_type(\"Thoth.Fetch.FetchError\", [], FetchError, () => [[[\"Item\", class_type(\"System.Exception\")]], [[\"Item\", string_type]], [[\"Item\", class_type(\"Fetch.Types.Response\")]], [[\"Item\", class_type(\"System.Exception\")]]]);\n}\n\nexport function Helper_fetch(url, init) {\n return fetch(url, keyValueList(init, 1));\n}\n\nexport function Helper_withContentTypeJson(data, headers) {\n if (data != null) {\n return cons(new Types_HttpRequestHeaders(11, [\"application/json\"]), headers);\n }\n else {\n return headers;\n }\n}\n\nexport function Helper_withProperties(custom, properties) {\n return defaultArg(map((list) => append(properties, list), custom), properties);\n}\n\nexport function Helper_message(error) {\n switch (error.tag) {\n case 1:\n return \"[Thoth.Fetch] Error while decoding the response:\\n\\n\" + error.fields[0];\n case 2: {\n const response = error.fields[0];\n return ((((\"[Thoth.Fetch] Request failed:\\n\\n\" + int32ToString(response.status)) + \" \") + (response.statusText)) + \" for URL \") + (response.url);\n }\n case 3:\n return \"[Thoth.Fetch] A network error occured:\\n\\n\" + error.fields[0].message;\n default:\n return \"[Thoth.Fetch] Request preparation failed:\\n\\n\" + error.fields[0].message;\n }\n}\n\nexport class Fetch {\n constructor() {\n }\n}\n\nexport function Fetch_$reflection() {\n return class_type(\"Thoth.Fetch.Fetch\", undefined, Fetch);\n}\n\n","import { Union } from \"./Types.js\";\nimport { union_type } from \"./Reflection.js\";\nimport { equals } from \"./Util.js\";\nimport { empty, singleton } from \"./List.js\";\nimport { some } from \"./Option.js\";\nexport function FSharpResult$2_Ok(ResultValue) {\n return new FSharpResult$2(0, [ResultValue]);\n}\nexport function FSharpResult$2_Error(ErrorValue) {\n return new FSharpResult$2(1, [ErrorValue]);\n}\nexport class FSharpResult$2 extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Ok\", \"Error\"];\n }\n}\nexport function FSharpResult$2_$reflection(gen0, gen1) {\n return union_type(\"FSharp.Core.FSharpResult`2\", [gen0, gen1], FSharpResult$2, () => [[[\"ResultValue\", gen0]], [[\"ErrorValue\", gen1]]]);\n}\nexport function Result_Map(mapping, result) {\n if (result.tag === /* Ok */ 0) {\n return FSharpResult$2_Ok(mapping(result.fields[0]));\n }\n else {\n return FSharpResult$2_Error(result.fields[0]);\n }\n}\nexport function Result_MapError(mapping, result) {\n if (result.tag === /* Ok */ 0) {\n return FSharpResult$2_Ok(result.fields[0]);\n }\n else {\n return FSharpResult$2_Error(mapping(result.fields[0]));\n }\n}\nexport function Result_Bind(binder, result) {\n if (result.tag === /* Ok */ 0) {\n return binder(result.fields[0]);\n }\n else {\n return FSharpResult$2_Error(result.fields[0]);\n }\n}\nexport function Result_IsOk(result) {\n if (result.tag === /* Ok */ 0) {\n return true;\n }\n else {\n return false;\n }\n}\nexport function Result_IsError(result) {\n if (result.tag === /* Ok */ 0) {\n return false;\n }\n else {\n return true;\n }\n}\nexport function Result_Contains(value, result) {\n if (result.tag === /* Ok */ 0) {\n return equals(result.fields[0], value);\n }\n else {\n return false;\n }\n}\nexport function Result_Count(result) {\n if (result.tag === /* Ok */ 0) {\n return 1;\n }\n else {\n return 0;\n }\n}\nexport function Result_DefaultValue(defaultValue, result) {\n if (result.tag === /* Ok */ 0) {\n return result.fields[0];\n }\n else {\n return defaultValue;\n }\n}\nexport function Result_DefaultWith(defThunk, result) {\n if (result.tag === /* Ok */ 0) {\n return result.fields[0];\n }\n else {\n return defThunk(result.fields[0]);\n }\n}\nexport function Result_Exists(predicate, result) {\n if (result.tag === /* Ok */ 0) {\n return predicate(result.fields[0]);\n }\n else {\n return false;\n }\n}\nexport function Result_Fold(folder, state, result) {\n if (result.tag === /* Ok */ 0) {\n return folder(state, result.fields[0]);\n }\n else {\n return state;\n }\n}\nexport function Result_FoldBack(folder, result, state) {\n if (result.tag === /* Ok */ 0) {\n return folder(result.fields[0], state);\n }\n else {\n return state;\n }\n}\nexport function Result_ForAll(predicate, result) {\n if (result.tag === /* Ok */ 0) {\n return predicate(result.fields[0]);\n }\n else {\n return true;\n }\n}\nexport function Result_Iterate(action, result) {\n if (result.tag === /* Ok */ 0) {\n action(result.fields[0]);\n }\n}\nexport function Result_ToArray(result) {\n if (result.tag === /* Ok */ 0) {\n return [result.fields[0]];\n }\n else {\n return [];\n }\n}\nexport function Result_ToList(result) {\n if (result.tag === /* Ok */ 0) {\n return singleton(result.fields[0]);\n }\n else {\n return empty();\n }\n}\nexport function Result_ToOption(result) {\n if (result.tag === /* Ok */ 0) {\n return some(result.fields[0]);\n }\n else {\n return undefined;\n }\n}\nexport function Result_ToValueOption(result) {\n if (result.tag === /* Ok */ 0) {\n return some(result.fields[0]);\n }\n else {\n return undefined;\n }\n}\n","import { comparePrimitives, padLeftAndRightWithZeros, padWithZeros } from \"./Util.js\";\nimport { toInt64 } from \"./BigInt.js\";\n/**\n * Calls:\n * - `Math.ceil` if the `value` is **negative**\n * - `Math.floor` if the `value` is **positive**\n * @param value Value to round\n */\nfunction signedRound(value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n}\nexport function create(d = 0, h = 0, m = 0, s = 0, ms = 0) {\n switch (arguments.length) {\n case 1:\n // ticks\n return fromTicks(arguments[0]);\n case 3:\n // h,m,s\n d = 0, h = arguments[0], m = arguments[1], s = arguments[2], ms = 0;\n break;\n default:\n // d,h,m,s,ms\n break;\n }\n return d * 86400000 + h * 3600000 + m * 60000 + s * 1000 + ms;\n}\nexport function fromTicks(ticks) {\n return Number(BigInt(ticks) / 10000n);\n}\nexport function fromDays(d) {\n return create(d, 0, 0, 0);\n}\nexport function fromHours(h) {\n return create(h, 0, 0);\n}\nexport function fromMinutes(m) {\n return create(0, m, 0);\n}\nexport function fromSeconds(s) {\n return create(0, 0, s);\n}\nexport function days(ts) {\n return signedRound(ts / 86400000);\n}\nexport function hours(ts) {\n return signedRound(ts % 86400000 / 3600000);\n}\nexport function minutes(ts) {\n return signedRound(ts % 3600000 / 60000);\n}\nexport function seconds(ts) {\n return signedRound(ts % 60000 / 1000);\n}\nexport function milliseconds(ts) {\n return signedRound(ts % 1000);\n}\nexport function ticks(ts) {\n return toInt64(BigInt(ts) * 10000n);\n}\nexport function totalDays(ts) {\n return ts / 86400000;\n}\nexport function totalHours(ts) {\n return ts / 3600000;\n}\nexport function totalMinutes(ts) {\n return ts / 60000;\n}\nexport function totalSeconds(ts) {\n return ts / 1000;\n}\nexport function negate(ts) {\n return ts * -1;\n}\nexport function add(ts1, ts2) {\n return ts1 + ts2;\n}\nexport function subtract(ts1, ts2) {\n return ts1 - ts2;\n}\nexport function multiply(ts, factor) {\n return ts * factor;\n}\nexport function divide(ts, b) {\n return ts / b;\n}\nexport const op_Addition = add;\nexport const op_Subtraction = subtract;\nexport const op_Multiply = multiply;\nexport const op_Division = divide;\nexport const compare = comparePrimitives;\nexport const compareTo = comparePrimitives;\nexport function duration(x) {\n return Math.abs(x);\n}\nexport function toString(ts, format = \"c\", _provider) {\n if ([\"c\", \"g\", \"G\"].indexOf(format) === -1) {\n throw new Error(\"Custom formats are not supported\");\n }\n const d = Math.abs(days(ts));\n const h = Math.abs(hours(ts));\n const m = Math.abs(minutes(ts));\n const s = Math.abs(seconds(ts));\n const ms = Math.abs(milliseconds(ts));\n const sign = ts < 0 ? \"-\" : \"\";\n return `${sign}${d === 0 && (format === \"c\" || format === \"g\") ? \"\" : format === \"c\" ? d + \".\" : d + \":\"}${format === \"g\" ? h : padWithZeros(h, 2)}:${padWithZeros(m, 2)}:${padWithZeros(s, 2)}${ms === 0 && (format === \"c\" || format === \"g\") ? \"\" : format === \"g\" ? \".\" + padWithZeros(ms, 3) : \".\" + padLeftAndRightWithZeros(ms, 3, 7)}`;\n}\nexport function parse(str) {\n const firstDot = str.search(\"\\\\.\");\n const firstColon = str.search(\"\\\\:\");\n if (firstDot === -1 && firstColon === -1) { // There is only a day ex: 4\n const d = parseInt(str, 0);\n if (isNaN(d)) {\n throw new Error(`String '${str}' was not recognized as a valid TimeSpan.`);\n }\n else {\n return create(d, 0, 0, 0, 0);\n }\n }\n if (firstColon > 0) { // process time part\n // WIP: (-?)(((\\d+)\\.)?([0-9]|0[0-9]|1[0-9]|2[0-3]):(\\d+)(:\\d+(\\.\\d{1,7})?)?|\\d+(?:(?!\\.)))\n const r = /^(-?)((\\d+)\\.)?(?:0*)([0-9]|0[0-9]|1[0-9]|2[0-3]):(?:0*)([0-5][0-9]|[0-9])(:(?:0*)([0-5][0-9]|[0-9]))?\\.?(\\d+)?$/.exec(str);\n if (r != null && r[4] != null && r[5] != null) {\n let d = 0;\n let ms = 0;\n let s = 0;\n const sign = r[1] != null && r[1] === \"-\" ? -1 : 1;\n const h = +r[4];\n const m = +r[5];\n if (r[3] != null) {\n d = +r[3];\n }\n if (r[7] != null) {\n s = +r[7];\n }\n if (r[8] != null) {\n // Depending on the number of decimals passed, we need to adapt the numbers\n switch (r[8].length) {\n case 1:\n ms = +r[8] * 100;\n break;\n case 2:\n ms = +r[8] * 10;\n break;\n case 3:\n ms = +r[8];\n break;\n case 4:\n ms = +r[8] / 10;\n break;\n case 5:\n ms = +r[8] / 100;\n break;\n case 6:\n ms = +r[8] / 1000;\n break;\n case 7:\n ms = +r[8] / 10000;\n break;\n default:\n throw new Error(`String '${str}' was not recognized as a valid TimeSpan.`);\n }\n }\n return sign * create(d, h, m, s, ms);\n }\n }\n throw new Error(`String '${str}' was not recognized as a valid TimeSpan.`);\n}\nexport function tryParse(v, defValue) {\n try {\n defValue.contents = parse(v);\n return true;\n }\n catch {\n return false;\n }\n}\n","import { Result_MapError, Result_Map, FSharpResult$2 } from \"../fable-library-js.4.17.0/Result.js\";\nimport { class_type } from \"../fable-library-js.4.17.0/Reflection.js\";\nimport { defaultOf, equals, disposeSafe, getEnumerator } from \"../fable-library-js.4.17.0/Util.js\";\n\n/**\n * Creates promise (in rejected state) with supplied reason.\n */\nexport function reject(reason) {\n return Promise.reject(reason);\n}\n\nexport function result(a) {\n return a.then(((arg) => (new FSharpResult$2(0, [arg]))),((arg_1) => (new FSharpResult$2(1, [arg_1]))));\n}\n\nexport function mapResult(fn, a) {\n return a.then((result_1) => Result_Map(fn, result_1));\n}\n\nexport function bindResult(fn, a) {\n return a.then((a_1) => {\n if (a_1.tag === 1) {\n return Promise.resolve(new FSharpResult$2(1, [a_1.fields[0]]));\n }\n else {\n return result(fn(a_1.fields[0]));\n }\n });\n}\n\nexport function mapResultError(fn, a) {\n return a.then((result_1) => Result_MapError(fn, result_1));\n}\n\nexport function tap(fn, a) {\n return a.then((x) => {\n fn(x);\n return x;\n });\n}\n\nexport class PromiseBuilder {\n constructor() {\n }\n}\n\nexport function PromiseBuilder_$reflection() {\n return class_type(\"Promise.PromiseBuilder\", undefined, PromiseBuilder);\n}\n\nexport function PromiseBuilder_$ctor() {\n return new PromiseBuilder();\n}\n\nexport function PromiseBuilder__For_1565554B(x, seq, body) {\n let p = Promise.resolve(undefined);\n const enumerator = getEnumerator(seq);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const a = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n p = (p.then(() => body(a)));\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return p;\n}\n\nexport function PromiseBuilder__While_2044D34(x, guard, p) {\n if (guard()) {\n return p.then(() => PromiseBuilder__While_2044D34(x, guard, p));\n }\n else {\n return Promise.resolve(undefined);\n }\n}\n\nexport function PromiseBuilder__TryFinally_7D49A2FD(x, p, compensation) {\n return p.then(((x_1) => {\n compensation();\n return x_1;\n }),((er) => {\n compensation();\n throw er;\n }));\n}\n\nexport function PromiseBuilder__Delay_62FBFDE1(x, generator) {\n return {\n then: (f1, f2) => {\n try {\n return generator().then(f1, f2);\n }\n catch (er) {\n if (equals(f2, defaultOf())) {\n return Promise.reject(er);\n }\n else {\n try {\n return Promise.resolve(f2(er));\n }\n catch (er_1) {\n return Promise.reject(er_1);\n }\n }\n }\n },\n catch: (f) => {\n try {\n return generator().catch(f);\n }\n catch (er_2) {\n try {\n return Promise.resolve(f(er_2));\n }\n catch (er_3) {\n return Promise.reject(er_3);\n }\n }\n },\n };\n}\n\nexport function PromiseBuilder__Run_212F1D4B(x, p) {\n return new Promise((success, fail) => {\n try {\n const p_1 = Promise.resolve(p);\n p_1.then(success, fail);\n }\n catch (er) {\n fail(er);\n }\n });\n}\n\nexport function PromiseBuilder__Using_74F7E79D(x, resource, binder) {\n return PromiseBuilder__TryFinally_7D49A2FD(x, binder(resource), () => {\n let copyOfStruct = resource;\n disposeSafe(copyOfStruct);\n });\n}\n\n","import { record_type, bool_type, list_type, option_type, class_type } from \"./Reflection.js\";\nimport { some, value as value_1 } from \"./Option.js\";\nimport { structuralHash, compare, toIterator, equals, disposeSafe, getEnumerator, isArrayLike } from \"./Util.js\";\nimport { singleton, ofArrayWithTail, head, tail, isEmpty as isEmpty_1, fold as fold_1, empty as empty_1, FSharpList, cons } from \"./List.js\";\nimport { map as map_2, item, fill, setItem } from \"./Array.js\";\nimport { Record } from \"./Types.js\";\nimport { tryPick as tryPick_1, pick as pick_1, iterate as iterate_1, compareWith, map as map_1, unfold } from \"./Seq.js\";\nimport { format, join } from \"./String.js\";\nexport class MapTreeLeaf$2 {\n constructor(k, v) {\n this.k = k;\n this.v = v;\n }\n}\nexport function MapTreeLeaf$2_$reflection(gen0, gen1) {\n return class_type(\"Map.MapTreeLeaf`2\", [gen0, gen1], MapTreeLeaf$2);\n}\nexport function MapTreeLeaf$2_$ctor_5BDDA1(k, v) {\n return new MapTreeLeaf$2(k, v);\n}\nexport function MapTreeLeaf$2__get_Key(_) {\n return _.k;\n}\nexport function MapTreeLeaf$2__get_Value(_) {\n return _.v;\n}\nexport class MapTreeNode$2 extends MapTreeLeaf$2 {\n constructor(k, v, left, right, h) {\n super(k, v);\n this.left = left;\n this.right = right;\n this.h = (h | 0);\n }\n}\nexport function MapTreeNode$2_$reflection(gen0, gen1) {\n return class_type(\"Map.MapTreeNode`2\", [gen0, gen1], MapTreeNode$2, MapTreeLeaf$2_$reflection(gen0, gen1));\n}\nexport function MapTreeNode$2_$ctor_Z39DE9543(k, v, left, right, h) {\n return new MapTreeNode$2(k, v, left, right, h);\n}\nexport function MapTreeNode$2__get_Left(_) {\n return _.left;\n}\nexport function MapTreeNode$2__get_Right(_) {\n return _.right;\n}\nexport function MapTreeNode$2__get_Height(_) {\n return _.h;\n}\nexport function MapTreeModule_empty() {\n return undefined;\n}\nexport function MapTreeModule_sizeAux(acc_mut, m_mut) {\n MapTreeModule_sizeAux: while (true) {\n const acc = acc_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n acc_mut = MapTreeModule_sizeAux(acc + 1, MapTreeNode$2__get_Left(mn));\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_sizeAux;\n }\n else {\n return (acc + 1) | 0;\n }\n }\n else {\n return acc | 0;\n }\n break;\n }\n}\nexport function MapTreeModule_size(x) {\n return MapTreeModule_sizeAux(0, x);\n}\nexport function MapTreeModule_mk(l, k, v, r) {\n let mn, mn_1;\n let hl;\n const m = l;\n if (m != null) {\n const m2 = value_1(m);\n hl = ((m2 instanceof MapTreeNode$2) ? ((mn = m2, MapTreeNode$2__get_Height(mn))) : 1);\n }\n else {\n hl = 0;\n }\n let hr;\n const m_1 = r;\n if (m_1 != null) {\n const m2_1 = value_1(m_1);\n hr = ((m2_1 instanceof MapTreeNode$2) ? ((mn_1 = m2_1, MapTreeNode$2__get_Height(mn_1))) : 1);\n }\n else {\n hr = 0;\n }\n const m_2 = ((hl < hr) ? hr : hl) | 0;\n if (m_2 === 0) {\n return MapTreeLeaf$2_$ctor_5BDDA1(k, v);\n }\n else {\n return MapTreeNode$2_$ctor_Z39DE9543(k, v, l, r, m_2 + 1);\n }\n}\nexport function MapTreeModule_rebalance(t1, k, v, t2) {\n let mn, mn_1, m_2, m2_2, mn_2, m_3, m2_3, mn_3;\n let t1h;\n const m = t1;\n if (m != null) {\n const m2 = value_1(m);\n t1h = ((m2 instanceof MapTreeNode$2) ? ((mn = m2, MapTreeNode$2__get_Height(mn))) : 1);\n }\n else {\n t1h = 0;\n }\n let t2h;\n const m_1 = t2;\n if (m_1 != null) {\n const m2_1 = value_1(m_1);\n t2h = ((m2_1 instanceof MapTreeNode$2) ? ((mn_1 = m2_1, MapTreeNode$2__get_Height(mn_1))) : 1);\n }\n else {\n t2h = 0;\n }\n if (t2h > (t1h + 2)) {\n const matchValue = value_1(t2);\n if (matchValue instanceof MapTreeNode$2) {\n const t2$0027 = matchValue;\n if (((m_2 = MapTreeNode$2__get_Left(t2$0027), (m_2 != null) ? ((m2_2 = value_1(m_2), (m2_2 instanceof MapTreeNode$2) ? ((mn_2 = m2_2, MapTreeNode$2__get_Height(mn_2))) : 1)) : 0)) > (t1h + 1)) {\n const matchValue_1 = value_1(MapTreeNode$2__get_Left(t2$0027));\n if (matchValue_1 instanceof MapTreeNode$2) {\n const t2l = matchValue_1;\n return MapTreeModule_mk(MapTreeModule_mk(t1, k, v, MapTreeNode$2__get_Left(t2l)), MapTreeLeaf$2__get_Key(t2l), MapTreeLeaf$2__get_Value(t2l), MapTreeModule_mk(MapTreeNode$2__get_Right(t2l), MapTreeLeaf$2__get_Key(t2$0027), MapTreeLeaf$2__get_Value(t2$0027), MapTreeNode$2__get_Right(t2$0027)));\n }\n else {\n throw new Error(\"internal error: Map.rebalance\");\n }\n }\n else {\n return MapTreeModule_mk(MapTreeModule_mk(t1, k, v, MapTreeNode$2__get_Left(t2$0027)), MapTreeLeaf$2__get_Key(t2$0027), MapTreeLeaf$2__get_Value(t2$0027), MapTreeNode$2__get_Right(t2$0027));\n }\n }\n else {\n throw new Error(\"internal error: Map.rebalance\");\n }\n }\n else if (t1h > (t2h + 2)) {\n const matchValue_2 = value_1(t1);\n if (matchValue_2 instanceof MapTreeNode$2) {\n const t1$0027 = matchValue_2;\n if (((m_3 = MapTreeNode$2__get_Right(t1$0027), (m_3 != null) ? ((m2_3 = value_1(m_3), (m2_3 instanceof MapTreeNode$2) ? ((mn_3 = m2_3, MapTreeNode$2__get_Height(mn_3))) : 1)) : 0)) > (t2h + 1)) {\n const matchValue_3 = value_1(MapTreeNode$2__get_Right(t1$0027));\n if (matchValue_3 instanceof MapTreeNode$2) {\n const t1r = matchValue_3;\n return MapTreeModule_mk(MapTreeModule_mk(MapTreeNode$2__get_Left(t1$0027), MapTreeLeaf$2__get_Key(t1$0027), MapTreeLeaf$2__get_Value(t1$0027), MapTreeNode$2__get_Left(t1r)), MapTreeLeaf$2__get_Key(t1r), MapTreeLeaf$2__get_Value(t1r), MapTreeModule_mk(MapTreeNode$2__get_Right(t1r), k, v, t2));\n }\n else {\n throw new Error(\"internal error: Map.rebalance\");\n }\n }\n else {\n return MapTreeModule_mk(MapTreeNode$2__get_Left(t1$0027), MapTreeLeaf$2__get_Key(t1$0027), MapTreeLeaf$2__get_Value(t1$0027), MapTreeModule_mk(MapTreeNode$2__get_Right(t1$0027), k, v, t2));\n }\n }\n else {\n throw new Error(\"internal error: Map.rebalance\");\n }\n }\n else {\n return MapTreeModule_mk(t1, k, v, t2);\n }\n}\nexport function MapTreeModule_add(comparer, k, v, m) {\n if (m != null) {\n const m2 = value_1(m);\n const c = comparer.Compare(k, MapTreeLeaf$2__get_Key(m2)) | 0;\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n if (c < 0) {\n return MapTreeModule_rebalance(MapTreeModule_add(comparer, k, v, MapTreeNode$2__get_Left(mn)), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeNode$2__get_Right(mn));\n }\n else if (c === 0) {\n return MapTreeNode$2_$ctor_Z39DE9543(k, v, MapTreeNode$2__get_Left(mn), MapTreeNode$2__get_Right(mn), MapTreeNode$2__get_Height(mn));\n }\n else {\n return MapTreeModule_rebalance(MapTreeNode$2__get_Left(mn), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeModule_add(comparer, k, v, MapTreeNode$2__get_Right(mn)));\n }\n }\n else if (c < 0) {\n return MapTreeNode$2_$ctor_Z39DE9543(k, v, MapTreeModule_empty(), m, 2);\n }\n else if (c === 0) {\n return MapTreeLeaf$2_$ctor_5BDDA1(k, v);\n }\n else {\n return MapTreeNode$2_$ctor_Z39DE9543(k, v, m, MapTreeModule_empty(), 2);\n }\n }\n else {\n return MapTreeLeaf$2_$ctor_5BDDA1(k, v);\n }\n}\nexport function MapTreeModule_tryFind(comparer_mut, k_mut, m_mut) {\n MapTreeModule_tryFind: while (true) {\n const comparer = comparer_mut, k = k_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n const c = comparer.Compare(k, MapTreeLeaf$2__get_Key(m2)) | 0;\n if (c === 0) {\n return some(MapTreeLeaf$2__get_Value(m2));\n }\n else if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n comparer_mut = comparer;\n k_mut = k;\n m_mut = ((c < 0) ? MapTreeNode$2__get_Left(mn) : MapTreeNode$2__get_Right(mn));\n continue MapTreeModule_tryFind;\n }\n else {\n return undefined;\n }\n }\n else {\n return undefined;\n }\n break;\n }\n}\nexport function MapTreeModule_find(comparer, k, m) {\n const matchValue = MapTreeModule_tryFind(comparer, k, m);\n if (matchValue == null) {\n throw new Error();\n }\n else {\n return value_1(matchValue);\n }\n}\nexport function MapTreeModule_partition1(comparer, f, k, v, acc1, acc2) {\n if (f(k, v)) {\n return [MapTreeModule_add(comparer, k, v, acc1), acc2];\n }\n else {\n return [acc1, MapTreeModule_add(comparer, k, v, acc2)];\n }\n}\nexport function MapTreeModule_partitionAux(comparer_mut, f_mut, m_mut, acc__mut, acc__1_mut) {\n MapTreeModule_partitionAux: while (true) {\n const comparer = comparer_mut, f = f_mut, m = m_mut, acc_ = acc__mut, acc__1 = acc__1_mut;\n const acc = [acc_, acc__1];\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const acc_1 = MapTreeModule_partitionAux(comparer, f, MapTreeNode$2__get_Right(mn), acc[0], acc[1]);\n const acc_4 = MapTreeModule_partition1(comparer, f, MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), acc_1[0], acc_1[1]);\n comparer_mut = comparer;\n f_mut = f;\n m_mut = MapTreeNode$2__get_Left(mn);\n acc__mut = acc_4[0];\n acc__1_mut = acc_4[1];\n continue MapTreeModule_partitionAux;\n }\n else {\n return MapTreeModule_partition1(comparer, f, MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2), acc[0], acc[1]);\n }\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function MapTreeModule_partition(comparer, f, m) {\n return MapTreeModule_partitionAux(comparer, f, m, MapTreeModule_empty(), MapTreeModule_empty());\n}\nexport function MapTreeModule_filter1(comparer, f, k, v, acc) {\n if (f(k, v)) {\n return MapTreeModule_add(comparer, k, v, acc);\n }\n else {\n return acc;\n }\n}\nexport function MapTreeModule_filterAux(comparer_mut, f_mut, m_mut, acc_mut) {\n MapTreeModule_filterAux: while (true) {\n const comparer = comparer_mut, f = f_mut, m = m_mut, acc = acc_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const acc_1 = MapTreeModule_filterAux(comparer, f, MapTreeNode$2__get_Left(mn), acc);\n const acc_2 = MapTreeModule_filter1(comparer, f, MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), acc_1);\n comparer_mut = comparer;\n f_mut = f;\n m_mut = MapTreeNode$2__get_Right(mn);\n acc_mut = acc_2;\n continue MapTreeModule_filterAux;\n }\n else {\n return MapTreeModule_filter1(comparer, f, MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2), acc);\n }\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function MapTreeModule_filter(comparer, f, m) {\n return MapTreeModule_filterAux(comparer, f, m, MapTreeModule_empty());\n}\nexport function MapTreeModule_spliceOutSuccessor(m) {\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n if (MapTreeNode$2__get_Left(mn) == null) {\n return [MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeNode$2__get_Right(mn)];\n }\n else {\n const patternInput = MapTreeModule_spliceOutSuccessor(MapTreeNode$2__get_Left(mn));\n return [patternInput[0], patternInput[1], MapTreeModule_mk(patternInput[2], MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeNode$2__get_Right(mn))];\n }\n }\n else {\n return [MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2), MapTreeModule_empty()];\n }\n }\n else {\n throw new Error(\"internal error: Map.spliceOutSuccessor\");\n }\n}\nexport function MapTreeModule_remove(comparer, k, m) {\n if (m != null) {\n const m2 = value_1(m);\n const c = comparer.Compare(k, MapTreeLeaf$2__get_Key(m2)) | 0;\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n if (c < 0) {\n return MapTreeModule_rebalance(MapTreeModule_remove(comparer, k, MapTreeNode$2__get_Left(mn)), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeNode$2__get_Right(mn));\n }\n else if (c === 0) {\n if (MapTreeNode$2__get_Left(mn) == null) {\n return MapTreeNode$2__get_Right(mn);\n }\n else if (MapTreeNode$2__get_Right(mn) == null) {\n return MapTreeNode$2__get_Left(mn);\n }\n else {\n const patternInput = MapTreeModule_spliceOutSuccessor(MapTreeNode$2__get_Right(mn));\n return MapTreeModule_mk(MapTreeNode$2__get_Left(mn), patternInput[0], patternInput[1], patternInput[2]);\n }\n }\n else {\n return MapTreeModule_rebalance(MapTreeNode$2__get_Left(mn), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeModule_remove(comparer, k, MapTreeNode$2__get_Right(mn)));\n }\n }\n else if (c === 0) {\n return MapTreeModule_empty();\n }\n else {\n return m;\n }\n }\n else {\n return MapTreeModule_empty();\n }\n}\nexport function MapTreeModule_change(comparer, k, u, m) {\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const c = comparer.Compare(k, MapTreeLeaf$2__get_Key(mn)) | 0;\n if (c < 0) {\n return MapTreeModule_rebalance(MapTreeModule_change(comparer, k, u, MapTreeNode$2__get_Left(mn)), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeNode$2__get_Right(mn));\n }\n else if (c === 0) {\n const matchValue_1 = u(some(MapTreeLeaf$2__get_Value(mn)));\n if (matchValue_1 != null) {\n return MapTreeNode$2_$ctor_Z39DE9543(k, value_1(matchValue_1), MapTreeNode$2__get_Left(mn), MapTreeNode$2__get_Right(mn), MapTreeNode$2__get_Height(mn));\n }\n else if (MapTreeNode$2__get_Left(mn) == null) {\n return MapTreeNode$2__get_Right(mn);\n }\n else if (MapTreeNode$2__get_Right(mn) == null) {\n return MapTreeNode$2__get_Left(mn);\n }\n else {\n const patternInput = MapTreeModule_spliceOutSuccessor(MapTreeNode$2__get_Right(mn));\n return MapTreeModule_mk(MapTreeNode$2__get_Left(mn), patternInput[0], patternInput[1], patternInput[2]);\n }\n }\n else {\n return MapTreeModule_rebalance(MapTreeNode$2__get_Left(mn), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), MapTreeModule_change(comparer, k, u, MapTreeNode$2__get_Right(mn)));\n }\n }\n else {\n const c_1 = comparer.Compare(k, MapTreeLeaf$2__get_Key(m2)) | 0;\n if (c_1 < 0) {\n const matchValue_2 = u(undefined);\n if (matchValue_2 != null) {\n return MapTreeNode$2_$ctor_Z39DE9543(k, value_1(matchValue_2), MapTreeModule_empty(), m, 2);\n }\n else {\n return m;\n }\n }\n else if (c_1 === 0) {\n const matchValue_3 = u(some(MapTreeLeaf$2__get_Value(m2)));\n if (matchValue_3 != null) {\n return MapTreeLeaf$2_$ctor_5BDDA1(k, value_1(matchValue_3));\n }\n else {\n return MapTreeModule_empty();\n }\n }\n else {\n const matchValue_4 = u(undefined);\n if (matchValue_4 != null) {\n return MapTreeNode$2_$ctor_Z39DE9543(k, value_1(matchValue_4), m, MapTreeModule_empty(), 2);\n }\n else {\n return m;\n }\n }\n }\n }\n else {\n const matchValue = u(undefined);\n if (matchValue != null) {\n return MapTreeLeaf$2_$ctor_5BDDA1(k, value_1(matchValue));\n }\n else {\n return m;\n }\n }\n}\nexport function MapTreeModule_mem(comparer_mut, k_mut, m_mut) {\n MapTreeModule_mem: while (true) {\n const comparer = comparer_mut, k = k_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n const c = comparer.Compare(k, MapTreeLeaf$2__get_Key(m2)) | 0;\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n if (c < 0) {\n comparer_mut = comparer;\n k_mut = k;\n m_mut = MapTreeNode$2__get_Left(mn);\n continue MapTreeModule_mem;\n }\n else if (c === 0) {\n return true;\n }\n else {\n comparer_mut = comparer;\n k_mut = k;\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_mem;\n }\n }\n else {\n return c === 0;\n }\n }\n else {\n return false;\n }\n break;\n }\n}\nexport function MapTreeModule_iterOpt(f_mut, m_mut) {\n MapTreeModule_iterOpt: while (true) {\n const f = f_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n MapTreeModule_iterOpt(f, MapTreeNode$2__get_Left(mn));\n f(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn));\n f_mut = f;\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_iterOpt;\n }\n else {\n f(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2));\n }\n }\n break;\n }\n}\nexport function MapTreeModule_iter(f, m) {\n MapTreeModule_iterOpt(f, m);\n}\nexport function MapTreeModule_tryPickOpt(f_mut, m_mut) {\n MapTreeModule_tryPickOpt: while (true) {\n const f = f_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const matchValue = MapTreeModule_tryPickOpt(f, MapTreeNode$2__get_Left(mn));\n if (matchValue == null) {\n const matchValue_1 = f(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn));\n if (matchValue_1 == null) {\n f_mut = f;\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_tryPickOpt;\n }\n else {\n return matchValue_1;\n }\n }\n else {\n return matchValue;\n }\n }\n else {\n return f(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2));\n }\n }\n else {\n return undefined;\n }\n break;\n }\n}\nexport function MapTreeModule_tryPick(f, m) {\n return MapTreeModule_tryPickOpt(f, m);\n}\nexport function MapTreeModule_existsOpt(f_mut, m_mut) {\n MapTreeModule_existsOpt: while (true) {\n const f = f_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n if (MapTreeModule_existsOpt(f, MapTreeNode$2__get_Left(mn)) ? true : f(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn))) {\n return true;\n }\n else {\n f_mut = f;\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_existsOpt;\n }\n }\n else {\n return f(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2));\n }\n }\n else {\n return false;\n }\n break;\n }\n}\nexport function MapTreeModule_exists(f, m) {\n return MapTreeModule_existsOpt(f, m);\n}\nexport function MapTreeModule_forallOpt(f_mut, m_mut) {\n MapTreeModule_forallOpt: while (true) {\n const f = f_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n if (MapTreeModule_forallOpt(f, MapTreeNode$2__get_Left(mn)) && f(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn))) {\n f_mut = f;\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_forallOpt;\n }\n else {\n return false;\n }\n }\n else {\n return f(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2));\n }\n }\n else {\n return true;\n }\n break;\n }\n}\nexport function MapTreeModule_forall(f, m) {\n return MapTreeModule_forallOpt(f, m);\n}\nexport function MapTreeModule_map(f, m) {\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const l2 = MapTreeModule_map(f, MapTreeNode$2__get_Left(mn));\n const v2 = f(MapTreeLeaf$2__get_Value(mn));\n const r2 = MapTreeModule_map(f, MapTreeNode$2__get_Right(mn));\n return MapTreeNode$2_$ctor_Z39DE9543(MapTreeLeaf$2__get_Key(mn), v2, l2, r2, MapTreeNode$2__get_Height(mn));\n }\n else {\n return MapTreeLeaf$2_$ctor_5BDDA1(MapTreeLeaf$2__get_Key(m2), f(MapTreeLeaf$2__get_Value(m2)));\n }\n }\n else {\n return MapTreeModule_empty();\n }\n}\nexport function MapTreeModule_mapiOpt(f, m) {\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const l2 = MapTreeModule_mapiOpt(f, MapTreeNode$2__get_Left(mn));\n const v2 = f(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn));\n const r2 = MapTreeModule_mapiOpt(f, MapTreeNode$2__get_Right(mn));\n return MapTreeNode$2_$ctor_Z39DE9543(MapTreeLeaf$2__get_Key(mn), v2, l2, r2, MapTreeNode$2__get_Height(mn));\n }\n else {\n return MapTreeLeaf$2_$ctor_5BDDA1(MapTreeLeaf$2__get_Key(m2), f(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2)));\n }\n }\n else {\n return MapTreeModule_empty();\n }\n}\nexport function MapTreeModule_mapi(f, m) {\n return MapTreeModule_mapiOpt(f, m);\n}\nexport function MapTreeModule_foldBackOpt(f_mut, m_mut, x_mut) {\n MapTreeModule_foldBackOpt: while (true) {\n const f = f_mut, m = m_mut, x = x_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const x_1 = MapTreeModule_foldBackOpt(f, MapTreeNode$2__get_Right(mn), x);\n const x_2 = f(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), x_1);\n f_mut = f;\n m_mut = MapTreeNode$2__get_Left(mn);\n x_mut = x_2;\n continue MapTreeModule_foldBackOpt;\n }\n else {\n return f(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2), x);\n }\n }\n else {\n return x;\n }\n break;\n }\n}\nexport function MapTreeModule_foldBack(f, m, x) {\n return MapTreeModule_foldBackOpt(f, m, x);\n}\nexport function MapTreeModule_foldOpt(f_mut, x_mut, m_mut) {\n MapTreeModule_foldOpt: while (true) {\n const f = f_mut, x = x_mut, m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n f_mut = f;\n x_mut = f(MapTreeModule_foldOpt(f, x, MapTreeNode$2__get_Left(mn)), MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn));\n m_mut = MapTreeNode$2__get_Right(mn);\n continue MapTreeModule_foldOpt;\n }\n else {\n return f(x, MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2));\n }\n }\n else {\n return x;\n }\n break;\n }\n}\nexport function MapTreeModule_fold(f, x, m) {\n return MapTreeModule_foldOpt(f, x, m);\n}\nexport function MapTreeModule_foldSectionOpt(comparer, lo, hi, f, m, x) {\n const foldFromTo = (f_1_mut, m_1_mut, x_1_mut) => {\n foldFromTo: while (true) {\n const f_1 = f_1_mut, m_1 = m_1_mut, x_1 = x_1_mut;\n if (m_1 != null) {\n const m2 = value_1(m_1);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n const cLoKey = comparer.Compare(lo, MapTreeLeaf$2__get_Key(mn)) | 0;\n const cKeyHi = comparer.Compare(MapTreeLeaf$2__get_Key(mn), hi) | 0;\n const x_2 = (cLoKey < 0) ? foldFromTo(f_1, MapTreeNode$2__get_Left(mn), x_1) : x_1;\n const x_3 = ((cLoKey <= 0) && (cKeyHi <= 0)) ? f_1(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn), x_2) : x_2;\n if (cKeyHi < 0) {\n f_1_mut = f_1;\n m_1_mut = MapTreeNode$2__get_Right(mn);\n x_1_mut = x_3;\n continue foldFromTo;\n }\n else {\n return x_3;\n }\n }\n else if ((comparer.Compare(lo, MapTreeLeaf$2__get_Key(m2)) <= 0) && (comparer.Compare(MapTreeLeaf$2__get_Key(m2), hi) <= 0)) {\n return f_1(MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2), x_1);\n }\n else {\n return x_1;\n }\n }\n else {\n return x_1;\n }\n break;\n }\n };\n if (comparer.Compare(lo, hi) === 1) {\n return x;\n }\n else {\n return foldFromTo(f, m, x);\n }\n}\nexport function MapTreeModule_foldSection(comparer, lo, hi, f, m, x) {\n return MapTreeModule_foldSectionOpt(comparer, lo, hi, f, m, x);\n}\nexport function MapTreeModule_toList(m) {\n const loop = (m_1_mut, acc_mut) => {\n loop: while (true) {\n const m_1 = m_1_mut, acc = acc_mut;\n if (m_1 != null) {\n const m2 = value_1(m_1);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n m_1_mut = MapTreeNode$2__get_Left(mn);\n acc_mut = cons([MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn)], loop(MapTreeNode$2__get_Right(mn), acc));\n continue loop;\n }\n else {\n return cons([MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2)], acc);\n }\n }\n else {\n return acc;\n }\n break;\n }\n };\n return loop(m, empty_1());\n}\nexport function MapTreeModule_copyToArray(m, arr, i) {\n let j = i;\n MapTreeModule_iter((x, y) => {\n setItem(arr, j, [x, y]);\n j = ((j + 1) | 0);\n }, m);\n}\nexport function MapTreeModule_toArray(m) {\n const n = MapTreeModule_size(m) | 0;\n const res = fill(new Array(n), 0, n, [null, null]);\n MapTreeModule_copyToArray(m, res, 0);\n return res;\n}\nexport function MapTreeModule_ofList(comparer, l) {\n return fold_1((acc, tupledArg) => MapTreeModule_add(comparer, tupledArg[0], tupledArg[1], acc), MapTreeModule_empty(), l);\n}\nexport function MapTreeModule_mkFromEnumerator(comparer_mut, acc_mut, e_mut) {\n MapTreeModule_mkFromEnumerator: while (true) {\n const comparer = comparer_mut, acc = acc_mut, e = e_mut;\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const patternInput = e[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n comparer_mut = comparer;\n acc_mut = MapTreeModule_add(comparer, patternInput[0], patternInput[1], acc);\n e_mut = e;\n continue MapTreeModule_mkFromEnumerator;\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function MapTreeModule_ofArray(comparer, arr) {\n let res = MapTreeModule_empty();\n for (let idx = 0; idx <= (arr.length - 1); idx++) {\n const forLoopVar = item(idx, arr);\n res = MapTreeModule_add(comparer, forLoopVar[0], forLoopVar[1], res);\n }\n return res;\n}\nexport function MapTreeModule_ofSeq(comparer, c) {\n if (isArrayLike(c)) {\n return MapTreeModule_ofArray(comparer, c);\n }\n else if (c instanceof FSharpList) {\n return MapTreeModule_ofList(comparer, c);\n }\n else {\n const ie = getEnumerator(c);\n try {\n return MapTreeModule_mkFromEnumerator(comparer, MapTreeModule_empty(), ie);\n }\n finally {\n disposeSafe(ie);\n }\n }\n}\nexport class MapTreeModule_MapIterator$2 extends Record {\n constructor(stack, started) {\n super();\n this.stack = stack;\n this.started = started;\n }\n}\nexport function MapTreeModule_MapIterator$2_$reflection(gen0, gen1) {\n return record_type(\"Map.MapTreeModule.MapIterator`2\", [gen0, gen1], MapTreeModule_MapIterator$2, () => [[\"stack\", list_type(option_type(MapTreeLeaf$2_$reflection(gen0, gen1)))], [\"started\", bool_type]]);\n}\nexport function MapTreeModule_collapseLHS(stack_mut) {\n MapTreeModule_collapseLHS: while (true) {\n const stack = stack_mut;\n if (!isEmpty_1(stack)) {\n const rest = tail(stack);\n const m = head(stack);\n if (m != null) {\n const m2 = value_1(m);\n if (m2 instanceof MapTreeNode$2) {\n const mn = m2;\n stack_mut = ofArrayWithTail([MapTreeNode$2__get_Left(mn), MapTreeLeaf$2_$ctor_5BDDA1(MapTreeLeaf$2__get_Key(mn), MapTreeLeaf$2__get_Value(mn)), MapTreeNode$2__get_Right(mn)], rest);\n continue MapTreeModule_collapseLHS;\n }\n else {\n return stack;\n }\n }\n else {\n stack_mut = rest;\n continue MapTreeModule_collapseLHS;\n }\n }\n else {\n return empty_1();\n }\n break;\n }\n}\nexport function MapTreeModule_mkIterator(m) {\n return new MapTreeModule_MapIterator$2(MapTreeModule_collapseLHS(singleton(m)), false);\n}\nexport function MapTreeModule_notStarted() {\n throw new Error(\"enumeration not started\");\n}\nexport function MapTreeModule_alreadyFinished() {\n throw new Error(\"enumeration already finished\");\n}\nexport function MapTreeModule_current(i) {\n if (i.started) {\n const matchValue = i.stack;\n if (!isEmpty_1(matchValue)) {\n if (head(matchValue) != null) {\n const m = value_1(head(matchValue));\n if (m instanceof MapTreeNode$2) {\n throw new Error(\"Please report error: Map iterator, unexpected stack for current\");\n }\n else {\n return [MapTreeLeaf$2__get_Key(m), MapTreeLeaf$2__get_Value(m)];\n }\n }\n else {\n throw new Error(\"Please report error: Map iterator, unexpected stack for current\");\n }\n }\n else {\n return MapTreeModule_alreadyFinished();\n }\n }\n else {\n return MapTreeModule_notStarted();\n }\n}\nexport function MapTreeModule_moveNext(i) {\n if (i.started) {\n const matchValue = i.stack;\n if (!isEmpty_1(matchValue)) {\n if (head(matchValue) != null) {\n const m = value_1(head(matchValue));\n if (m instanceof MapTreeNode$2) {\n throw new Error(\"Please report error: Map iterator, unexpected stack for moveNext\");\n }\n else {\n i.stack = MapTreeModule_collapseLHS(tail(matchValue));\n return !isEmpty_1(i.stack);\n }\n }\n else {\n throw new Error(\"Please report error: Map iterator, unexpected stack for moveNext\");\n }\n }\n else {\n return false;\n }\n }\n else {\n i.started = true;\n return !isEmpty_1(i.stack);\n }\n}\nexport function MapTreeModule_mkIEnumerator(m) {\n let i = MapTreeModule_mkIterator(m);\n return {\n \"System.Collections.Generic.IEnumerator`1.get_Current\"() {\n return MapTreeModule_current(i);\n },\n \"System.Collections.IEnumerator.get_Current\"() {\n return MapTreeModule_current(i);\n },\n \"System.Collections.IEnumerator.MoveNext\"() {\n return MapTreeModule_moveNext(i);\n },\n \"System.Collections.IEnumerator.Reset\"() {\n i = MapTreeModule_mkIterator(m);\n },\n Dispose() {\n },\n };\n}\nexport function MapTreeModule_toSeq(s) {\n return unfold((en_1) => {\n if (en_1[\"System.Collections.IEnumerator.MoveNext\"]()) {\n return [en_1[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), en_1];\n }\n else {\n return undefined;\n }\n }, MapTreeModule_mkIEnumerator(s));\n}\nexport function MapTreeModule_leftmost(m_mut) {\n MapTreeModule_leftmost: while (true) {\n const m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n let matchResult, nd_1;\n if (m2 instanceof MapTreeNode$2) {\n if (MapTreeNode$2__get_Height(m2) > 1) {\n matchResult = 0;\n nd_1 = m2;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n if (MapTreeNode$2__get_Left(nd_1) == null) {\n return [MapTreeLeaf$2__get_Key(nd_1), MapTreeLeaf$2__get_Value(nd_1)];\n }\n else {\n m_mut = MapTreeNode$2__get_Left(nd_1);\n continue MapTreeModule_leftmost;\n }\n default:\n return [MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2)];\n }\n }\n else {\n throw new Error();\n }\n break;\n }\n}\nexport function MapTreeModule_rightmost(m_mut) {\n MapTreeModule_rightmost: while (true) {\n const m = m_mut;\n if (m != null) {\n const m2 = value_1(m);\n let matchResult, nd_1;\n if (m2 instanceof MapTreeNode$2) {\n if (MapTreeNode$2__get_Height(m2) > 1) {\n matchResult = 0;\n nd_1 = m2;\n }\n else {\n matchResult = 1;\n }\n }\n else {\n matchResult = 1;\n }\n switch (matchResult) {\n case 0:\n if (MapTreeNode$2__get_Right(nd_1) == null) {\n return [MapTreeLeaf$2__get_Key(nd_1), MapTreeLeaf$2__get_Value(nd_1)];\n }\n else {\n m_mut = MapTreeNode$2__get_Right(nd_1);\n continue MapTreeModule_rightmost;\n }\n default:\n return [MapTreeLeaf$2__get_Key(m2), MapTreeLeaf$2__get_Value(m2)];\n }\n }\n else {\n throw new Error();\n }\n break;\n }\n}\nexport class FSharpMap {\n constructor(comparer, tree) {\n this.comparer = comparer;\n this.tree = tree;\n }\n GetHashCode() {\n const this$ = this;\n return FSharpMap__ComputeHashCode(this$) | 0;\n }\n Equals(that) {\n const this$ = this;\n if (that instanceof FSharpMap) {\n const that_1 = that;\n const e1 = getEnumerator(this$);\n try {\n const e2 = getEnumerator(that_1);\n try {\n const loop = () => {\n const m1 = e1[\"System.Collections.IEnumerator.MoveNext\"]();\n if (m1 === e2[\"System.Collections.IEnumerator.MoveNext\"]()) {\n if (!m1) {\n return true;\n }\n else {\n const e1c = e1[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n const e2c = e2[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n if (equals(e1c[0], e2c[0]) && equals(e1c[1], e2c[1])) {\n return loop();\n }\n else {\n return false;\n }\n }\n }\n else {\n return false;\n }\n };\n return loop();\n }\n finally {\n disposeSafe(e2);\n }\n }\n finally {\n disposeSafe(e1);\n }\n }\n else {\n return false;\n }\n }\n toString() {\n const this$ = this;\n return (\"map [\" + join(\"; \", map_1((kv) => format(\"({0}, {1})\", kv[0], kv[1]), this$))) + \"]\";\n }\n get [Symbol.toStringTag]() {\n return \"FSharpMap\";\n }\n toJSON() {\n const this$ = this;\n return Array.from(this$);\n }\n GetEnumerator() {\n const _ = this;\n return MapTreeModule_mkIEnumerator(_.tree);\n }\n [Symbol.iterator]() {\n return toIterator(getEnumerator(this));\n }\n \"System.Collections.IEnumerable.GetEnumerator\"() {\n const _ = this;\n return MapTreeModule_mkIEnumerator(_.tree);\n }\n CompareTo(obj) {\n const m = this;\n if (obj instanceof FSharpMap) {\n const m2 = obj;\n return compareWith((kvp1, kvp2) => {\n const c = m.comparer.Compare(kvp1[0], kvp2[0]) | 0;\n return ((c !== 0) ? c : compare(kvp1[1], kvp2[1])) | 0;\n }, m, m2) | 0;\n }\n else {\n throw new Error(\"not comparable\\\\nParameter name: obj\");\n }\n }\n \"System.Collections.Generic.ICollection`1.Add2B595\"(x) {\n throw new Error(\"Map cannot be mutated\");\n }\n \"System.Collections.Generic.ICollection`1.Clear\"() {\n throw new Error(\"Map cannot be mutated\");\n }\n \"System.Collections.Generic.ICollection`1.Remove2B595\"(x) {\n throw new Error(\"Map cannot be mutated\");\n }\n \"System.Collections.Generic.ICollection`1.Contains2B595\"(x) {\n const m = this;\n return FSharpMap__ContainsKey(m, x[0]) && equals(FSharpMap__get_Item(m, x[0]), x[1]);\n }\n \"System.Collections.Generic.ICollection`1.CopyToZ3B4C077E\"(arr, i) {\n const m = this;\n MapTreeModule_copyToArray(m.tree, arr, i);\n }\n \"System.Collections.Generic.ICollection`1.get_IsReadOnly\"() {\n return true;\n }\n \"System.Collections.Generic.ICollection`1.get_Count\"() {\n const m = this;\n return FSharpMap__get_Count(m) | 0;\n }\n \"System.Collections.Generic.IReadOnlyCollection`1.get_Count\"() {\n const m = this;\n return FSharpMap__get_Count(m) | 0;\n }\n get size() {\n const m = this;\n return FSharpMap__get_Count(m) | 0;\n }\n clear() {\n throw new Error(\"Map cannot be mutated\");\n }\n delete(_arg) {\n throw new Error(\"Map cannot be mutated\");\n return false;\n }\n entries() {\n const m = this;\n return map_1((p) => [p[0], p[1]], m);\n }\n get(k) {\n const m = this;\n return FSharpMap__get_Item(m, k);\n }\n has(k) {\n const m = this;\n return FSharpMap__ContainsKey(m, k);\n }\n keys() {\n const m = this;\n return map_1((p) => p[0], m);\n }\n set(k, v) {\n const m = this;\n throw new Error(\"Map cannot be mutated\");\n return m;\n }\n values() {\n const m = this;\n return map_1((p) => p[1], m);\n }\n forEach(f, thisArg) {\n const m = this;\n iterate_1((p) => {\n f(p[1], p[0], m);\n }, m);\n }\n}\nexport function FSharpMap_$reflection(gen0, gen1) {\n return class_type(\"Map.FSharpMap\", [gen0, gen1], FSharpMap);\n}\nexport function FSharpMap_$ctor(comparer, tree) {\n return new FSharpMap(comparer, tree);\n}\nexport function FSharpMap_Empty(comparer) {\n return FSharpMap_$ctor(comparer, MapTreeModule_empty());\n}\nexport function FSharpMap__get_Comparer(m) {\n return m.comparer;\n}\nexport function FSharpMap__get_Tree(m) {\n return m.tree;\n}\nexport function FSharpMap__Add(m, key, value) {\n return FSharpMap_$ctor(m.comparer, MapTreeModule_add(m.comparer, key, value, m.tree));\n}\nexport function FSharpMap__Change(m, key, f) {\n return FSharpMap_$ctor(m.comparer, MapTreeModule_change(m.comparer, key, f, m.tree));\n}\nexport function FSharpMap__get_IsEmpty(m) {\n return m.tree == null;\n}\nexport function FSharpMap__get_Item(m, key) {\n return MapTreeModule_find(m.comparer, key, m.tree);\n}\nexport function FSharpMap__TryPick(m, f) {\n return MapTreeModule_tryPick(f, m.tree);\n}\nexport function FSharpMap__Exists(m, predicate) {\n return MapTreeModule_exists(predicate, m.tree);\n}\nexport function FSharpMap__Filter(m, predicate) {\n return FSharpMap_$ctor(m.comparer, MapTreeModule_filter(m.comparer, predicate, m.tree));\n}\nexport function FSharpMap__ForAll(m, predicate) {\n return MapTreeModule_forall(predicate, m.tree);\n}\nexport function FSharpMap__Fold(m, f, acc) {\n return MapTreeModule_foldBack(f, m.tree, acc);\n}\nexport function FSharpMap__FoldSection(m, lo, hi, f, acc) {\n return MapTreeModule_foldSection(m.comparer, lo, hi, f, m.tree, acc);\n}\nexport function FSharpMap__Iterate(m, f) {\n MapTreeModule_iter(f, m.tree);\n}\nexport function FSharpMap__MapRange(m, f) {\n return FSharpMap_$ctor(m.comparer, MapTreeModule_map(f, m.tree));\n}\nexport function FSharpMap__Map(m, f) {\n return FSharpMap_$ctor(m.comparer, MapTreeModule_mapi(f, m.tree));\n}\nexport function FSharpMap__Partition(m, predicate) {\n const patternInput = MapTreeModule_partition(m.comparer, predicate, m.tree);\n return [FSharpMap_$ctor(m.comparer, patternInput[0]), FSharpMap_$ctor(m.comparer, patternInput[1])];\n}\nexport function FSharpMap__get_Count(m) {\n return MapTreeModule_size(m.tree);\n}\nexport function FSharpMap__ContainsKey(m, key) {\n return MapTreeModule_mem(m.comparer, key, m.tree);\n}\nexport function FSharpMap__Remove(m, key) {\n return FSharpMap_$ctor(m.comparer, MapTreeModule_remove(m.comparer, key, m.tree));\n}\nexport function FSharpMap__TryGetValue(_, key, value) {\n const matchValue = MapTreeModule_tryFind(_.comparer, key, _.tree);\n if (matchValue == null) {\n return false;\n }\n else {\n const v = value_1(matchValue);\n value.contents = v;\n return true;\n }\n}\nexport function FSharpMap__get_Keys(_) {\n return map_2((kvp) => kvp[0], MapTreeModule_toArray(_.tree));\n}\nexport function FSharpMap__get_Values(_) {\n return map_2((kvp) => kvp[1], MapTreeModule_toArray(_.tree));\n}\nexport function FSharpMap__get_MinKeyValue(m) {\n return MapTreeModule_leftmost(m.tree);\n}\nexport function FSharpMap__get_MaxKeyValue(m) {\n return MapTreeModule_rightmost(m.tree);\n}\nexport function FSharpMap__TryFind(m, key) {\n return MapTreeModule_tryFind(m.comparer, key, m.tree);\n}\nexport function FSharpMap__ToList(m) {\n return MapTreeModule_toList(m.tree);\n}\nexport function FSharpMap__ToArray(m) {\n return MapTreeModule_toArray(m.tree);\n}\nexport function FSharpMap__ComputeHashCode(this$) {\n const combineHash = (x, y) => (((x << 1) + y) + 631);\n let res = 0;\n const enumerator = getEnumerator(this$);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const activePatternResult = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n res = (combineHash(res, structuralHash(activePatternResult[0])) | 0);\n res = (combineHash(res, structuralHash(activePatternResult[1])) | 0);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return res | 0;\n}\nexport function isEmpty(table) {\n return FSharpMap__get_IsEmpty(table);\n}\nexport function add(key, value, table) {\n return FSharpMap__Add(table, key, value);\n}\nexport function change(key, f, table) {\n return FSharpMap__Change(table, key, f);\n}\nexport function find(key, table) {\n return FSharpMap__get_Item(table, key);\n}\nexport function tryFind(key, table) {\n return FSharpMap__TryFind(table, key);\n}\nexport function remove(key, table) {\n return FSharpMap__Remove(table, key);\n}\nexport function containsKey(key, table) {\n return FSharpMap__ContainsKey(table, key);\n}\nexport function iterate(action, table) {\n FSharpMap__Iterate(table, action);\n}\nexport function tryPick(chooser, table) {\n return FSharpMap__TryPick(table, chooser);\n}\nexport function pick(chooser, table) {\n const matchValue = tryPick(chooser, table);\n if (matchValue != null) {\n return value_1(matchValue);\n }\n else {\n throw new Error();\n }\n}\nexport function exists(predicate, table) {\n return FSharpMap__Exists(table, predicate);\n}\nexport function filter(predicate, table) {\n return FSharpMap__Filter(table, predicate);\n}\nexport function partition(predicate, table) {\n return FSharpMap__Partition(table, predicate);\n}\nexport function forAll(predicate, table) {\n return FSharpMap__ForAll(table, predicate);\n}\nexport function map(mapping, table) {\n return FSharpMap__Map(table, mapping);\n}\nexport function fold(folder, state, table) {\n return MapTreeModule_fold(folder, state, FSharpMap__get_Tree(table));\n}\nexport function foldBack(folder, table, state) {\n return MapTreeModule_foldBack(folder, FSharpMap__get_Tree(table), state);\n}\nexport function toSeq(table) {\n return map_1((kvp) => [kvp[0], kvp[1]], table);\n}\nexport function findKey(predicate, table) {\n return pick_1((kvp) => {\n const k = kvp[0];\n if (predicate(k, kvp[1])) {\n return some(k);\n }\n else {\n return undefined;\n }\n }, table);\n}\nexport function tryFindKey(predicate, table) {\n return tryPick_1((kvp) => {\n const k = kvp[0];\n if (predicate(k, kvp[1])) {\n return some(k);\n }\n else {\n return undefined;\n }\n }, table);\n}\nexport function ofList(elements, comparer) {\n return FSharpMap_$ctor(comparer, MapTreeModule_ofSeq(comparer, elements));\n}\nexport function ofSeq(elements, comparer) {\n return FSharpMap_$ctor(comparer, MapTreeModule_ofSeq(comparer, elements));\n}\nexport function ofArray(elements, comparer) {\n return FSharpMap_$ctor(comparer, MapTreeModule_ofSeq(comparer, elements));\n}\nexport function toList(table) {\n return FSharpMap__ToList(table);\n}\nexport function toArray(table) {\n return FSharpMap__ToArray(table);\n}\nexport function keys(table) {\n return FSharpMap__get_Keys(table);\n}\nexport function values(table) {\n return FSharpMap__get_Values(table);\n}\nexport function minKeyValue(table) {\n return FSharpMap__get_MinKeyValue(table);\n}\nexport function maxKeyValue(table) {\n return FSharpMap__get_MaxKeyValue(table);\n}\nexport function empty(comparer) {\n return FSharpMap_Empty(comparer);\n}\nexport function count(table) {\n return FSharpMap__get_Count(table);\n}\n","import { FSharpRef, Record, Union } from \"../fable-library-js.4.17.0/Types.js\";\nimport { record_type, class_type, tuple_type, lambda_type, union_type, list_type, obj_type, string_type } from \"../fable-library-js.4.17.0/Reflection.js\";\nimport { FSharpResult$2 } from \"../fable-library-js.4.17.0/Result.js\";\nimport { defaultOf } from \"../fable-library-js.4.17.0/Util.js\";\nimport { addToDict, tryGetValue } from \"../fable-library-js.4.17.0/MapUtil.js\";\nimport { replace } from \"../fable-library-js.4.17.0/RegExp.js\";\n\nexport class ErrorReason extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"BadPrimitive\", \"BadPrimitiveExtra\", \"BadType\", \"BadField\", \"BadPath\", \"TooSmallArray\", \"FailMessage\", \"BadOneOf\"];\n }\n}\n\nexport function ErrorReason_$reflection() {\n return union_type(\"Thoth.Json.ErrorReason\", [], ErrorReason, () => [[[\"Item1\", string_type], [\"Item2\", obj_type]], [[\"Item1\", string_type], [\"Item2\", obj_type], [\"Item3\", string_type]], [[\"Item1\", string_type], [\"Item2\", obj_type]], [[\"Item1\", string_type], [\"Item2\", obj_type]], [[\"Item1\", string_type], [\"Item2\", obj_type], [\"Item3\", string_type]], [[\"Item1\", string_type], [\"Item2\", obj_type]], [[\"Item\", string_type]], [[\"Item\", list_type(string_type)]]]);\n}\n\nexport class CaseStrategy extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"PascalCase\", \"CamelCase\", \"SnakeCase\"];\n }\n}\n\nexport function CaseStrategy_$reflection() {\n return union_type(\"Thoth.Json.CaseStrategy\", [], CaseStrategy, () => [[], [], []]);\n}\n\nexport class ExtraCoders extends Record {\n constructor(Hash, Coders) {\n super();\n this.Hash = Hash;\n this.Coders = Coders;\n }\n}\n\nexport function ExtraCoders_$reflection() {\n return record_type(\"Thoth.Json.ExtraCoders\", [], ExtraCoders, () => [[\"Hash\", string_type], [\"Coders\", class_type(\"Microsoft.FSharp.Collections.FSharpMap`2\", [string_type, tuple_type(lambda_type(obj_type, obj_type), lambda_type(string_type, lambda_type(obj_type, union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [obj_type, tuple_type(string_type, ErrorReason_$reflection())], FSharpResult$2, () => [[[\"ResultValue\", obj_type]], [[\"ErrorValue\", tuple_type(string_type, ErrorReason_$reflection())]]]))))])]]);\n}\n\nexport class Util_Cache$1 {\n constructor() {\n this.cache = (new Map([]));\n }\n}\n\nexport function Util_Cache$1_$reflection(gen0) {\n return class_type(\"Thoth.Json.Util.Cache`1\", [gen0], Util_Cache$1);\n}\n\nexport function Util_Cache$1_$ctor() {\n return new Util_Cache$1();\n}\n\nexport function Util_Cache$1__GetOrAdd_43981464(__, key, factory) {\n let matchValue;\n let outArg = defaultOf();\n matchValue = [tryGetValue(__.cache, key, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return matchValue[1];\n }\n else {\n const x_1 = factory();\n addToDict(__.cache, key, x_1);\n return x_1;\n }\n}\n\nexport const Util_CachedEncoders = Util_Cache$1_$ctor();\n\nexport const Util_CachedDecoders = Util_Cache$1_$ctor();\n\nexport function Util_Casing_lowerFirst(str) {\n return str.slice(undefined, 0 + 1).toLowerCase() + str.slice(1, str.length);\n}\n\nexport function Util_Casing_convert(caseStrategy, fieldName) {\n switch (caseStrategy.tag) {\n case 2:\n return replace(Util_Casing_lowerFirst(fieldName), \"[A-Z]\", \"_$0\").toLowerCase();\n case 0:\n return fieldName;\n default:\n return Util_Casing_lowerFirst(fieldName);\n }\n}\n\n","import { toString as toString_1 } from \"../fable-library-js.4.17.0/Decimal.js\";\nimport { comparePrimitives, Lazy, uncurry2, disposeSafe, getEnumerator, defaultOf } from \"../fable-library-js.4.17.0/Util.js\";\nimport { empty, map as map_3, tryFind, add, toList } from \"../fable-library-js.4.17.0/Map.js\";\nimport { toString as toString_2 } from \"../fable-library-js.4.17.0/BigInt.js\";\nimport { toString as toString_3 } from \"../fable-library-js.4.17.0/Date.js\";\nimport { toString as toString_4 } from \"../fable-library-js.4.17.0/TimeSpan.js\";\nimport { defaultArg, map, defaultArgWith, some } from \"../fable-library-js.4.17.0/Option.js\";\nimport { toString as toString_5, FSharpRef } from \"../fable-library-js.4.17.0/Types.js\";\nimport { class_type, getGenerics, getGenericTypeDefinition, getTupleFields, getTupleElements, isTuple, isGenericType, getEnumUnderlyingType, isEnum, getElementType, isArray, getUnionCaseFields, getUnionFields, isUnion, getRecordElements, getRecordField, name, isRecord, fullName } from \"../fable-library-js.4.17.0/Reflection.js\";\nimport { item, setItem, fill, map as map_1 } from \"../fable-library-js.4.17.0/Array.js\";\nimport { Util_CachedEncoders, Util_Cache$1__GetOrAdd_43981464, CaseStrategy, Util_Casing_convert } from \"./Types.fs.js\";\nimport { mapIndexed, map as map_2, fold } from \"../fable-library-js.4.17.0/Seq.js\";\nimport { toFail, printf, toText } from \"../fable-library-js.4.17.0/String.js\";\n\n/**\n * **Description**\n * Encode a GUID\n * \n * **Parameters**\n * * `value` - parameter of type `System.Guid`\n * \n * **Output Type**\n * * `Value`\n * \n * **Exceptions**\n */\nexport function guid(value) {\n return value;\n}\n\n/**\n * **Description**\n * Encode a Decimal.\n * \n * **Parameters**\n * * `value` - parameter of type `decimal`\n * \n * **Output Type**\n * * `Value`\n * \n * **Exceptions**\n */\nexport function decimal(value) {\n return toString_1(value);\n}\n\nexport const nil = defaultOf();\n\n/**\n * **Description**\n * Encode an object\n * \n * **Parameters**\n * * `values` - parameter of type `(string * Value) list`\n * \n * **Output Type**\n * * `Value`\n * \n * **Exceptions**\n */\nexport function object(values) {\n const o = {};\n const enumerator = getEnumerator(values);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const forLoopVar = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n o[forLoopVar[0]] = forLoopVar[1];\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return o;\n}\n\n/**\n * **Description**\n * Encode a list\n * **Parameters**\n * * `values` - parameter of type `Value list`\n * \n * **Output Type**\n * * `Value`\n * \n * **Exceptions**\n */\nexport function list(values) {\n return Array.from(values);\n}\n\nexport function seq(values) {\n return Array.from(values);\n}\n\n/**\n * **Description**\n * Encode a dictionary\n * **Parameters**\n * * `values` - parameter of type `Map`\n * \n * **Output Type**\n * * `Value`\n * \n * **Exceptions**\n */\nexport function dict(values) {\n return object(toList(values));\n}\n\nexport function bigint(value) {\n return toString_2(value);\n}\n\nexport function datetimeOffset(value) {\n return toString_3(value, \"O\", {});\n}\n\n/**\n * **Description**\n * Encode a timespan\n * **Parameters**\n * * `value` - parameter of type `System.TimeSpan`\n * \n * **Output Type**\n * * `Value`\n * \n * **Exceptions**\n */\nexport function timespan(value) {\n return toString_4(value);\n}\n\nexport function sbyte(value) {\n return String(value);\n}\n\nexport function byte(value) {\n return String(value);\n}\n\nexport function int16(value) {\n return String(value);\n}\n\nexport function uint16(value) {\n return String(value);\n}\n\nexport function int64(value) {\n return String(value);\n}\n\nexport function uint64(value) {\n return String(value);\n}\n\nexport function unit() {\n return defaultOf();\n}\n\nexport function tuple2(enc1, enc2, v1, v2) {\n return [enc1(v1), enc2(v2)];\n}\n\nexport function tuple3(enc1, enc2, enc3, v1, v2, v3) {\n return [enc1(v1), enc2(v2), enc3(v3)];\n}\n\nexport function tuple4(enc1, enc2, enc3, enc4, v1, v2, v3, v4) {\n return [enc1(v1), enc2(v2), enc3(v3), enc4(v4)];\n}\n\nexport function tuple5(enc1, enc2, enc3, enc4, enc5, v1, v2, v3, v4, v5) {\n return [enc1(v1), enc2(v2), enc3(v3), enc4(v4), enc5(v5)];\n}\n\nexport function tuple6(enc1, enc2, enc3, enc4, enc5, enc6, v1, v2, v3, v4, v5, v6) {\n return [enc1(v1), enc2(v2), enc3(v3), enc4(v4), enc5(v5), enc6(v6)];\n}\n\nexport function tuple7(enc1, enc2, enc3, enc4, enc5, enc6, enc7, v1, v2, v3, v4, v5, v6, v7) {\n return [enc1(v1), enc2(v2), enc3(v3), enc4(v4), enc5(v5), enc6(v6), enc7(v7)];\n}\n\nexport function tuple8(enc1, enc2, enc3, enc4, enc5, enc6, enc7, enc8, v1, v2, v3, v4, v5, v6, v7, v8) {\n return [enc1(v1), enc2(v2), enc3(v3), enc4(v4), enc5(v5), enc6(v6), enc7(v7), enc8(v8)];\n}\n\nexport function Enum_byte(value) {\n return byte(value);\n}\n\nexport function Enum_sbyte(value) {\n return sbyte(value);\n}\n\nexport function Enum_int16(value) {\n return int16(value);\n}\n\nexport function Enum_uint16(value) {\n return uint16(value);\n}\n\nexport function Enum_int(value) {\n return value;\n}\n\nexport function Enum_uint32(value) {\n return value;\n}\n\n/**\n * **Description**\n * \n * The DateTime is always encoded using UTC representation\n * \n * **Parameters**\n * * `value` - parameter of type `System.DateTime`\n * \n * **Output Type**\n * * `Value`\n * \n * **Exceptions**\n */\nexport function datetime(value) {\n return toString_3(value, \"O\", {});\n}\n\n/**\n * **Description**\n * Convert a `Value` into a prettified string.\n * **Parameters**\n * * `space` - parameter of type `int` - Amount of indentation\n * * `value` - parameter of type `obj` - Value to convert\n * \n * **Output Type**\n * * `string`\n * \n * **Exceptions**\n */\nexport function toString(space, value) {\n return JSON.stringify(value, uncurry2(defaultOf()), some(space));\n}\n\n/**\n * **Description**\n * Encode an option\n * **Parameters**\n * * `encoder` - parameter of type `'a -> Value`\n * \n * **Output Type**\n * * `'a option -> Value`\n * \n * **Exceptions**\n */\nexport function option(encoder) {\n return (arg) => defaultArgWith(map(encoder, arg), () => nil);\n}\n\nfunction autoEncodeRecordsAndUnions(extra, caseStrategy, skipNullField, t) {\n let arg;\n const encoderRef = new FSharpRef(defaultOf());\n const extra_1 = add(fullName(t), encoderRef, extra);\n let encoder;\n if (isRecord(t, true)) {\n const setters = map_1((fi) => {\n const targetKey = Util_Casing_convert(caseStrategy, name(fi));\n const encode_1 = autoEncoder(extra_1, caseStrategy, skipNullField, fi[1]);\n return (source) => ((target) => {\n const value = getRecordField(source, fi);\n if (!skipNullField ? true : (skipNullField && !(value == null))) {\n target[targetKey]=encode_1(value);\n }\n return target;\n });\n }, getRecordElements(t, true));\n encoder = ((source_1) => fold((target_1, set$) => set$(source_1)(target_1), {}, setters));\n }\n else if (isUnion(t, true)) {\n encoder = ((value_1) => {\n const patternInput = getUnionFields(value_1, t, true);\n const info = patternInput[0];\n const fields = patternInput[1];\n const matchValue = fields.length | 0;\n if (matchValue === 0) {\n return name(info);\n }\n else {\n const len = matchValue | 0;\n const fieldTypes = getUnionCaseFields(info);\n const target_2 = fill(new Array(len + 1), 0, len + 1, null);\n setItem(target_2, 0, name(info));\n for (let i = 1; i <= len; i++) {\n const encode_2 = autoEncoder(extra_1, caseStrategy, skipNullField, item(i - 1, fieldTypes)[1]);\n setItem(target_2, i, encode_2(item(i - 1, fields)));\n }\n return target_2;\n }\n });\n }\n else {\n throw new Error((arg = fullName(t), toText(printf(\"Cannot generate auto encoder for %s. Please pass an extra encoder.\"))(arg)));\n }\n encoderRef.contents = encoder;\n return encoder;\n}\n\nfunction autoEncoder(extra, caseStrategy, skipNullField, t) {\n const fullname = fullName(t);\n const matchValue = tryFind(fullname, extra);\n if (matchValue == null) {\n if (isArray(t)) {\n const encoder = autoEncoder(extra, caseStrategy, skipNullField, getElementType(t));\n return (value) => seq(map_2(encoder, value));\n }\n else if (isEnum(t)) {\n const enumType = fullName(getEnumUnderlyingType(t));\n switch (enumType) {\n case \"System.SByte\":\n return sbyte;\n case \"System.Byte\":\n return byte;\n case \"System.Int16\":\n return int16;\n case \"System.UInt16\":\n return uint16;\n case \"System.Int32\":\n return (value_5) => value_5;\n case \"System.UInt32\":\n return (value_7) => value_7;\n default: {\n const arg = fullName(t);\n const clo_1 = toFail(printf(\"Cannot generate auto encoder for %s.\\nThoth.Json.Net only support the folluwing enum types:\\n- sbyte\\n- byte\\n- int16\\n- uint16\\n- int\\n- uint32\\nIf you can\\'t use one of these types, please pass an extra encoder.\\n \"))(arg);\n return clo_1;\n }\n }\n }\n else if (isGenericType(t)) {\n if (isTuple(t)) {\n const encoders = map_1((t_2) => autoEncoder(extra, caseStrategy, skipNullField, t_2), getTupleElements(t));\n return (value_9) => seq(mapIndexed((i, x) => item(i, encoders)(x), getTupleFields(value_9)));\n }\n else {\n const fullname_1 = fullName(getGenericTypeDefinition(t));\n if (fullname_1 === \"Microsoft.FSharp.Core.FSharpOption`1[System.Object]\") {\n const encoder_2 = new Lazy(() => option(autoEncoder(extra, caseStrategy, skipNullField, item(0, getGenerics(t)))));\n return (value_10) => {\n if (value_10 == null) {\n return nil;\n }\n else {\n return encoder_2.Value(value_10);\n }\n };\n }\n else if ((fullname_1 === \"Microsoft.FSharp.Collections.FSharpList`1[System.Object]\") ? true : (fullname_1 === \"Microsoft.FSharp.Collections.FSharpSet`1[System.Object]\")) {\n const encoder_3 = autoEncoder(extra, caseStrategy, skipNullField, item(0, getGenerics(t)));\n return (value_11) => seq(map_2(encoder_3, value_11));\n }\n else if (fullname_1 === \"Microsoft.FSharp.Collections.FSharpMap`2[System.Object,System.Object]\") {\n const keyType = item(0, getGenerics(t));\n const valueEncoder = autoEncoder(extra, caseStrategy, skipNullField, item(1, getGenerics(t)));\n if ((fullName(keyType) === \"System.String\") ? true : (fullName(keyType) === \"System.Guid\")) {\n return (value_12) => fold((target, _arg) => {\n const activePatternResult = _arg;\n target[activePatternResult[0]]=valueEncoder(activePatternResult[1]);\n return target;\n }, {}, value_12);\n }\n else {\n let keyEncoder;\n const clo_2 = autoEncoder(extra, caseStrategy, skipNullField, keyType);\n keyEncoder = (clo_2);\n return (value_13) => seq(map_2((_arg_1) => {\n const activePatternResult_1 = _arg_1;\n return [keyEncoder(activePatternResult_1[0]), valueEncoder(activePatternResult_1[1])];\n }, value_13));\n }\n }\n else {\n return autoEncodeRecordsAndUnions(extra, caseStrategy, skipNullField, t);\n }\n }\n }\n else {\n switch (fullname) {\n case \"System.Boolean\":\n return (value_14) => value_14;\n case \"Microsoft.FSharp.Core.Unit\":\n return unit;\n case \"System.String\":\n return (value_16) => value_16;\n case \"System.SByte\":\n return sbyte;\n case \"System.Byte\":\n return byte;\n case \"System.Int16\":\n return int16;\n case \"System.UInt16\":\n return uint16;\n case \"System.Int32\":\n return (value_22) => value_22;\n case \"System.UInt32\":\n return (value_24) => value_24;\n case \"System.Double\":\n return (value_26) => value_26;\n case \"System.Single\":\n return (value_28) => value_28;\n case \"System.DateTime\":\n return datetime;\n case \"System.DateTimeOffset\":\n return datetimeOffset;\n case \"System.TimeSpan\":\n return timespan;\n case \"System.Guid\":\n return guid;\n case \"System.Object\":\n return (x_1) => x_1;\n default:\n return autoEncodeRecordsAndUnions(extra, caseStrategy, skipNullField, t);\n }\n }\n }\n else {\n const encoderRef = matchValue;\n return (v) => encoderRef.contents(v);\n }\n}\n\nfunction makeExtra(extra) {\n if (extra != null) {\n return map_3((_arg, tupledArg) => (new FSharpRef(tupledArg[0])), extra.Coders);\n }\n else {\n return empty({\n Compare: comparePrimitives,\n });\n }\n}\n\nexport class Auto {\n constructor() {\n }\n}\n\nexport function Auto_$reflection() {\n return class_type(\"Thoth.Json.Encode.Auto\", undefined, Auto);\n}\n\nexport function Auto_generateBoxedEncoderCached_437914C6(t, caseStrategy, extra, skipNullField) {\n let y_1, y;\n const caseStrategy_1 = defaultArg(caseStrategy, new CaseStrategy(0, []));\n const skipNullField_1 = defaultArg(skipNullField, true);\n return Util_Cache$1__GetOrAdd_43981464(Util_CachedEncoders, (y_1 = ((y = fullName(t), toString_5(caseStrategy_1) + y)), defaultArg(map((e) => e.Hash, extra), \"\") + y_1), () => autoEncoder(makeExtra(extra), caseStrategy_1, skipNullField_1, t));\n}\n\nexport function Auto_generateBoxedEncoder_437914C6(t, caseStrategy, extra, skipNullField) {\n const caseStrategy_1 = defaultArg(caseStrategy, new CaseStrategy(0, []));\n const skipNullField_1 = defaultArg(skipNullField, true);\n return autoEncoder(makeExtra(extra), caseStrategy_1, skipNullField_1, t);\n}\n\n/**\n * **Description**\n * Convert a `Value` into a prettified string.\n * **Parameters**\n * * `space` - parameter of type `int` - Amount of indentation\n * * `value` - parameter of type `obj` - Value to convert\n * \n * **Output Type**\n * * `string`\n * \n * **Exceptions**\n */\nexport function encode(space, value) {\n return toString(space, value);\n}\n\n","import { trim } from \"./String.js\";\n// RFC 4122 compliant. From https://stackoverflow.com/a/13653180/3922220\n// const guidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;\n// Relax GUID parsing, see #1637\nconst guidRegex = /^[\\(\\{]{0,2}[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[\\)\\}]{0,2}$/;\nconst guidRegexNoHyphen = /^([0-9a-f]{8})([0-9a-f]{4})([0-9a-f]{4})([0-9a-f]{4})([0-9a-f]{12})$/;\nconst guidRegexHex = /^\\{0x[0-9a-f]{8},(0x[0-9a-f]{4},){2}\\{(0x[0-9a-f]{2},){7}0x[0-9a-f]{2}\\}\\}$/;\nconst guidHexCaptures = /^([0-9a-f]{8})-(([0-9a-f]{4})-)(([0-9a-f]{4})-)([0-9a-f]{2})([0-9a-f]{2})-([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/;\nexport function toString(str, format, _provider) {\n if (format && format?.length > 0) {\n switch (format) {\n case \"N\":\n return str.replace(/-/g, '');\n case \"D\":\n return str;\n case \"B\":\n return \"{\" + str + \"}\";\n case \"P\":\n return \"(\" + str + \")\";\n case \"X\":\n return str.replace(guidHexCaptures, \"{0x$1,0x$3,0x$5,{0x$6,0x$7,0x$8,0x$9,0x$10,0x$11,0x$12,0x$13}}\");\n default:\n throw new Error(\"Unrecognized Guid print format\");\n }\n }\n else {\n return str;\n }\n}\n/** Validates UUID as specified in RFC4122 (versions 1-5). */\nexport function parse(str) {\n function hyphenateGuid(str) {\n return str.replace(guidRegexNoHyphen, \"$1-$2-$3-$4-$5\");\n }\n const wsTrimAndLowered = str.trim().toLowerCase();\n if (guidRegex.test(wsTrimAndLowered)) {\n return trim(wsTrimAndLowered, \"{\", \"}\", \"(\", \")\");\n }\n else if (guidRegexNoHyphen.test(wsTrimAndLowered)) {\n return hyphenateGuid(wsTrimAndLowered);\n }\n else if (guidRegexHex.test(wsTrimAndLowered)) {\n return hyphenateGuid(wsTrimAndLowered.replace(/[\\{\\},]|0x/g, ''));\n }\n else {\n throw new Error(\"Guid should contain 32 digits with 4 dashes: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\");\n }\n}\nexport function tryParse(str, defValue) {\n try {\n defValue.contents = parse(str);\n return true;\n }\n catch {\n return false;\n }\n}\n// From https://gist.github.com/LeverOne/1308368\nexport function newGuid() {\n let b = \"\";\n for (let a = 0; a++ < 36;) {\n b += a * 51 & 52\n ? (a ^ 15 ? 8 ^ Math.random() * (a ^ 20 ? 16 : 4) : 4).toString(16)\n : \"-\";\n }\n return b;\n}\n// Maps for number <-> hex string conversion\nlet _convertMapsInitialized = false;\nlet _byteToHex;\nlet _hexToByte;\nfunction initConvertMaps() {\n _byteToHex = new Array(256);\n _hexToByte = {};\n for (let i = 0; i < 256; i++) {\n _byteToHex[i] = (i + 0x100).toString(16).substr(1);\n _hexToByte[_byteToHex[i]] = i;\n }\n _convertMapsInitialized = true;\n}\n/** Parse a UUID into it's component bytes */\n// Adapted from https://github.com/zefferus/uuid-parse\nexport function guidToArray(s) {\n if (!_convertMapsInitialized) {\n initConvertMaps();\n }\n let i = 0;\n const buf = new Uint8Array(16);\n s.toLowerCase().replace(/[0-9a-f]{2}/g, ((oct) => {\n switch (i) {\n // .NET saves first three byte groups with different endianness\n // See https://stackoverflow.com/a/16722909/3922220\n case 0:\n case 1:\n case 2:\n case 3:\n buf[3 - i++] = _hexToByte[oct];\n break;\n case 4:\n case 5:\n buf[9 - i++] = _hexToByte[oct];\n break;\n case 6:\n case 7:\n buf[13 - i++] = _hexToByte[oct];\n break;\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n case 13:\n case 14:\n case 15:\n buf[i++] = _hexToByte[oct];\n break;\n }\n }));\n // Zero out remaining bytes if string was short\n while (i < 16) {\n buf[i++] = 0;\n }\n return buf;\n}\n/** Convert UUID byte array into a string */\nexport function arrayToGuid(buf) {\n if (buf.length !== 16) {\n throw new Error(\"Byte array for GUID must be exactly 16 bytes long\");\n }\n if (!_convertMapsInitialized) {\n initConvertMaps();\n }\n const guid = _byteToHex[buf[3]] + _byteToHex[buf[2]] +\n _byteToHex[buf[1]] + _byteToHex[buf[0]] + \"-\" +\n _byteToHex[buf[5]] + _byteToHex[buf[4]] + \"-\" +\n _byteToHex[buf[7]] + _byteToHex[buf[6]] + \"-\" +\n _byteToHex[buf[8]] + _byteToHex[buf[9]] + \"-\" +\n _byteToHex[buf[10]] + _byteToHex[buf[11]] +\n _byteToHex[buf[12]] + _byteToHex[buf[13]] +\n _byteToHex[buf[14]] + _byteToHex[buf[15]];\n return guid;\n}\n","/**\n * DateTimeOffset functions.\n *\n * Note: DateOffset instances are always DateObjects in local\n * timezone (because JS dates are all kinds of messed up).\n * A local date returns UTC epoch when `.getTime()` is called.\n *\n * However, this means that in order to construct an UTC date\n * from a DateOffset with offset of +5 hours, you first need\n * to subtract those 5 hours, than add the \"local\" offset.\n * As said, all kinds of messed up.\n *\n * Basically; invariant: date.getTime() always return UTC time.\n */\nimport { fromFloat64, toFloat64 } from \"./BigInt.js\";\nimport DateTime, { create as createDate, dateOffsetToString, daysInMonth, parseRaw, ticksToUnixEpochMilliseconds, unixEpochMillisecondsToTicks } from \"./Date.js\";\nimport { compareDates, padWithZeros } from \"./Util.js\";\nexport default function DateTimeOffset(value, offset) {\n checkOffsetInRange(offset);\n const d = new Date(value);\n d.offset = offset != null ? offset : new Date().getTimezoneOffset() * -60000;\n return d;\n}\nexport function offset(value) {\n return value.offset || 0;\n}\nfunction checkOffsetInRange(offset) {\n if (offset != null && offset !== 0) {\n if (offset % 60000 !== 0) {\n throw new Error(\"Offset must be specified in whole minutes.\");\n }\n if (Math.abs(offset / 3600000) > 14) {\n throw new Error(\"Offset must be within plus or minus 14 hours.\");\n }\n }\n}\nexport function fromDate(date, offset) {\n let offset2 = 0;\n switch (date.kind) {\n case 1 /* DateKind.UTC */:\n if (offset != null && offset !== 0) {\n throw new Error(\"The UTC Offset for Utc DateTime instances must be 0.\");\n }\n offset2 = 0;\n break;\n case 2 /* DateKind.Local */:\n offset2 = date.getTimezoneOffset() * -60000;\n if (offset != null && offset !== offset2) {\n throw new Error(\"The UTC Offset of the local dateTime parameter does not match the offset argument.\");\n }\n break;\n case 0 /* DateKind.Unspecified */:\n default:\n if (offset == null) {\n offset2 = date.getTimezoneOffset() * -60000;\n }\n else {\n offset2 = offset;\n }\n break;\n }\n return DateTimeOffset(date.getTime(), offset2);\n}\nexport function fromTicks(ticks, offset) {\n const ms = ticksToUnixEpochMilliseconds(ticks) - offset;\n return DateTimeOffset(ms, offset);\n}\nexport function fromUnixTimeMilliseconds(ms) {\n return DateTimeOffset(toFloat64(ms), 0);\n}\nexport function fromUnixTimeSeconds(seconds) {\n return DateTimeOffset(toFloat64(seconds * 1000n), 0);\n}\nexport function getUtcTicks(date) {\n return unixEpochMillisecondsToTicks(date.getTime(), 0);\n}\nexport function minValue() {\n // This is \"0001-01-01T00:00:00.000Z\", actual JS min value is -8640000000000000\n return DateTimeOffset(-62135596800000, 0);\n}\nexport function maxValue() {\n // This is \"9999-12-31T23:59:59.999Z\", actual JS max value is 8640000000000000\n return DateTimeOffset(253402300799999, 0);\n}\nexport function parse(str) {\n const [date, offsetMatch] = parseRaw(str);\n const offset = offsetMatch == null\n ? date.getTimezoneOffset() * -60000\n : (offsetMatch === \"Z\" ? 0 : offsetMatch * 60000);\n return DateTimeOffset(date.getTime(), offset);\n}\nexport function tryParse(v, defValue) {\n try {\n defValue.contents = parse(v);\n return true;\n }\n catch (_err) {\n return false;\n }\n}\nexport function create(year, month, day, h, m, s, ms, offset) {\n if (offset == null) {\n offset = ms;\n ms = 0;\n }\n checkOffsetInRange(offset);\n let date;\n if (offset === 0) {\n date = new Date(Date.UTC(year, month - 1, day, h, m, s, ms));\n if (year <= 99) {\n date.setUTCFullYear(year, month - 1, day);\n }\n }\n else {\n const str = padWithZeros(year, 4) + \"-\" +\n padWithZeros(month, 2) + \"-\" +\n padWithZeros(day, 2) + \"T\" +\n padWithZeros(h, 2) + \":\" +\n padWithZeros(m, 2) + \":\" +\n padWithZeros(s, 2) + \".\" +\n padWithZeros(ms, 3) +\n dateOffsetToString(offset);\n date = new Date(str);\n }\n const dateValue = date.getTime();\n if (isNaN(dateValue)) {\n throw new Error(\"The parameters describe an unrepresentable Date\");\n }\n return DateTimeOffset(dateValue, offset);\n}\nexport function now() {\n const date = new Date();\n const offset = date.getTimezoneOffset() * -60000;\n return DateTimeOffset(date.getTime(), offset);\n}\nexport function utcNow() {\n const date = now();\n return DateTimeOffset(date.getTime(), 0);\n}\nexport function toUniversalTime(date) {\n return DateTime(date.getTime(), 1 /* DateKind.UTC */);\n}\nexport function toLocalTime(date) {\n return DateTime(date.getTime(), 2 /* DateKind.Local */);\n}\nexport function timeOfDay(d) {\n const d2 = new Date(d.getTime() + (d.offset ?? 0));\n return d2.getUTCHours() * 3600000\n + d2.getUTCMinutes() * 60000\n + d2.getUTCSeconds() * 1000\n + d2.getUTCMilliseconds();\n}\nexport function date(d) {\n const d2 = new Date(d.getTime() + (d.offset ?? 0));\n return createDate(d2.getUTCFullYear(), d2.getUTCMonth() + 1, d2.getUTCDate(), 0, 0, 0, 0);\n}\nexport function day(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCDate();\n}\nexport function hour(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCHours();\n}\nexport function millisecond(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCMilliseconds();\n}\nexport function minute(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCMinutes();\n}\nexport function month(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCMonth() + 1;\n}\nexport function second(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCSeconds();\n}\nexport function year(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCFullYear();\n}\nexport function dayOfWeek(d) {\n return new Date(d.getTime() + (d.offset ?? 0)).getUTCDay();\n}\nexport function dayOfYear(d) {\n const d2 = new Date(d.getTime() + (d.offset ?? 0));\n const _year = d2.getUTCFullYear();\n const _month = d2.getUTCMonth() + 1;\n let _day = d2.getUTCDate();\n for (let i = 1; i < _month; i++) {\n _day += daysInMonth(_year, i);\n }\n return _day;\n}\nexport function add(d, ts) {\n return DateTimeOffset(d.getTime() + ts, (d.offset ?? 0));\n}\nexport function addDays(d, v) {\n return add(d, v * 86400000);\n}\nexport function addHours(d, v) {\n return add(d, v * 3600000);\n}\nexport function addMinutes(d, v) {\n return add(d, v * 60000);\n}\nexport function addSeconds(d, v) {\n return add(d, v * 1000);\n}\nexport function addMilliseconds(d, v) {\n return add(d, v);\n}\nexport function addTicks(d, v) {\n return add(d, toFloat64(v / 10000n));\n}\nexport function addYears(d, v) {\n const newMonth = d.getUTCMonth() + 1;\n const newYear = d.getUTCFullYear() + v;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, d.getUTCDate());\n return create(newYear, newMonth, newDay, d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds(), (d.offset ?? 0));\n}\nexport function addMonths(d, v) {\n const d2 = new Date(d.getTime() + (d.offset ?? 0));\n let newMonth = d2.getUTCMonth() + 1 + v;\n let newMonth_ = 0;\n let yearOffset = 0;\n if (newMonth > 12) {\n newMonth_ = newMonth % 12;\n yearOffset = Math.floor(newMonth / 12);\n newMonth = newMonth_;\n }\n else if (newMonth < 1) {\n newMonth_ = 12 + newMonth % 12;\n yearOffset = Math.floor(newMonth / 12) + (newMonth_ === 12 ? -1 : 0);\n newMonth = newMonth_;\n }\n const newYear = d2.getUTCFullYear() + yearOffset;\n const _daysInMonth = daysInMonth(newYear, newMonth);\n const newDay = Math.min(_daysInMonth, d2.getUTCDate());\n return create(newYear, newMonth, newDay, d2.getUTCHours(), d2.getUTCMinutes(), d2.getUTCSeconds(), d2.getUTCMilliseconds(), (d.offset ?? 0));\n}\nexport function subtract(d, that) {\n return typeof that === \"number\"\n ? DateTimeOffset(d.getTime() - that, (d.offset ?? 0))\n : d.getTime() - that.getTime();\n}\nexport function equals(d1, d2) {\n return d1.getTime() === d2.getTime();\n}\nexport function equalsExact(d1, d2) {\n return d1.getTime() === d2.getTime() && d1.offset === d2.offset;\n}\nexport function compare(d1, d2) {\n return compareDates(d1, d2);\n}\nexport const compareTo = compare;\nexport function op_Addition(x, y) {\n return add(x, y);\n}\nexport function op_Subtraction(x, y) {\n return subtract(x, y);\n}\nexport function toOffset(d, offset) {\n return DateTimeOffset(d.getTime(), offset);\n}\nexport function toUnixTimeMilliseconds(d) {\n return fromFloat64(d.getTime());\n}\nexport function toUnixTimeSeconds(d) {\n return fromFloat64(d.getTime() / 1000.0);\n}\n","import { record_type, bool_type, list_type, option_type, class_type } from \"./Reflection.js\";\nimport { some, value as value_3 } from \"./Option.js\";\nimport { structuralHash, toIterator, disposeSafe, getEnumerator, isArrayLike } from \"./Util.js\";\nimport { toString, Record } from \"./Types.js\";\nimport { fold as fold_2, cons, singleton as singleton_1, empty as empty_1, ofArrayWithTail, tail, head, isEmpty as isEmpty_1, FSharpList } from \"./List.js\";\nimport { fold as fold_1, fill, setItem } from \"./Array.js\";\nimport { join } from \"./String.js\";\nimport { exists as exists_1, cache, forAll as forAll_1, fold as fold_3, reduce, iterate as iterate_1, map as map_1 } from \"./Seq.js\";\nimport { HashSet__get_Comparer, HashSet_$ctor_Z6150332D, HashSet } from \"./MutableSet.js\";\nexport class SetTreeLeaf$1 {\n constructor(k) {\n this.k = k;\n }\n}\nexport function SetTreeLeaf$1_$reflection(gen0) {\n return class_type(\"Set.SetTreeLeaf`1\", [gen0], SetTreeLeaf$1);\n}\nexport function SetTreeLeaf$1_$ctor_2B595(k) {\n return new SetTreeLeaf$1(k);\n}\nexport function SetTreeLeaf$1__get_Key(_) {\n return _.k;\n}\nexport class SetTreeNode$1 extends SetTreeLeaf$1 {\n constructor(v, left, right, h) {\n super(v);\n this.left = left;\n this.right = right;\n this.h = (h | 0);\n }\n}\nexport function SetTreeNode$1_$reflection(gen0) {\n return class_type(\"Set.SetTreeNode`1\", [gen0], SetTreeNode$1, SetTreeLeaf$1_$reflection(gen0));\n}\nexport function SetTreeNode$1_$ctor_5F465FC9(v, left, right, h) {\n return new SetTreeNode$1(v, left, right, h);\n}\nexport function SetTreeNode$1__get_Left(_) {\n return _.left;\n}\nexport function SetTreeNode$1__get_Right(_) {\n return _.right;\n}\nexport function SetTreeNode$1__get_Height(_) {\n return _.h;\n}\nexport function SetTreeModule_empty() {\n return undefined;\n}\nexport function SetTreeModule_countAux(t_mut, acc_mut) {\n SetTreeModule_countAux: while (true) {\n const t = t_mut, acc = acc_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n t_mut = SetTreeNode$1__get_Left(tn);\n acc_mut = SetTreeModule_countAux(SetTreeNode$1__get_Right(tn), acc + 1);\n continue SetTreeModule_countAux;\n }\n else {\n return (acc + 1) | 0;\n }\n }\n else {\n return acc | 0;\n }\n break;\n }\n}\nexport function SetTreeModule_count(s) {\n return SetTreeModule_countAux(s, 0);\n}\nexport function SetTreeModule_mk(l, k, r) {\n let tn, tn_1;\n let hl;\n const t = l;\n if (t != null) {\n const t2 = value_3(t);\n hl = ((t2 instanceof SetTreeNode$1) ? ((tn = t2, SetTreeNode$1__get_Height(tn))) : 1);\n }\n else {\n hl = 0;\n }\n let hr;\n const t_1 = r;\n if (t_1 != null) {\n const t2_1 = value_3(t_1);\n hr = ((t2_1 instanceof SetTreeNode$1) ? ((tn_1 = t2_1, SetTreeNode$1__get_Height(tn_1))) : 1);\n }\n else {\n hr = 0;\n }\n const m = ((hl < hr) ? hr : hl) | 0;\n if (m === 0) {\n return SetTreeLeaf$1_$ctor_2B595(k);\n }\n else {\n return SetTreeNode$1_$ctor_5F465FC9(k, l, r, m + 1);\n }\n}\nexport function SetTreeModule_rebalance(t1, v, t2) {\n let tn, tn_1, t_2, t2_3, tn_2, t_3, t2_4, tn_3;\n let t1h;\n const t = t1;\n if (t != null) {\n const t2_1 = value_3(t);\n t1h = ((t2_1 instanceof SetTreeNode$1) ? ((tn = t2_1, SetTreeNode$1__get_Height(tn))) : 1);\n }\n else {\n t1h = 0;\n }\n let t2h;\n const t_1 = t2;\n if (t_1 != null) {\n const t2_2 = value_3(t_1);\n t2h = ((t2_2 instanceof SetTreeNode$1) ? ((tn_1 = t2_2, SetTreeNode$1__get_Height(tn_1))) : 1);\n }\n else {\n t2h = 0;\n }\n if (t2h > (t1h + 2)) {\n const matchValue = value_3(t2);\n if (matchValue instanceof SetTreeNode$1) {\n const t2$0027 = matchValue;\n if (((t_2 = SetTreeNode$1__get_Left(t2$0027), (t_2 != null) ? ((t2_3 = value_3(t_2), (t2_3 instanceof SetTreeNode$1) ? ((tn_2 = t2_3, SetTreeNode$1__get_Height(tn_2))) : 1)) : 0)) > (t1h + 1)) {\n const matchValue_1 = value_3(SetTreeNode$1__get_Left(t2$0027));\n if (matchValue_1 instanceof SetTreeNode$1) {\n const t2l = matchValue_1;\n return SetTreeModule_mk(SetTreeModule_mk(t1, v, SetTreeNode$1__get_Left(t2l)), SetTreeLeaf$1__get_Key(t2l), SetTreeModule_mk(SetTreeNode$1__get_Right(t2l), SetTreeLeaf$1__get_Key(t2$0027), SetTreeNode$1__get_Right(t2$0027)));\n }\n else {\n throw new Error(\"internal error: Set.rebalance\");\n }\n }\n else {\n return SetTreeModule_mk(SetTreeModule_mk(t1, v, SetTreeNode$1__get_Left(t2$0027)), SetTreeLeaf$1__get_Key(t2$0027), SetTreeNode$1__get_Right(t2$0027));\n }\n }\n else {\n throw new Error(\"internal error: Set.rebalance\");\n }\n }\n else if (t1h > (t2h + 2)) {\n const matchValue_2 = value_3(t1);\n if (matchValue_2 instanceof SetTreeNode$1) {\n const t1$0027 = matchValue_2;\n if (((t_3 = SetTreeNode$1__get_Right(t1$0027), (t_3 != null) ? ((t2_4 = value_3(t_3), (t2_4 instanceof SetTreeNode$1) ? ((tn_3 = t2_4, SetTreeNode$1__get_Height(tn_3))) : 1)) : 0)) > (t2h + 1)) {\n const matchValue_3 = value_3(SetTreeNode$1__get_Right(t1$0027));\n if (matchValue_3 instanceof SetTreeNode$1) {\n const t1r = matchValue_3;\n return SetTreeModule_mk(SetTreeModule_mk(SetTreeNode$1__get_Left(t1$0027), SetTreeLeaf$1__get_Key(t1$0027), SetTreeNode$1__get_Left(t1r)), SetTreeLeaf$1__get_Key(t1r), SetTreeModule_mk(SetTreeNode$1__get_Right(t1r), v, t2));\n }\n else {\n throw new Error(\"internal error: Set.rebalance\");\n }\n }\n else {\n return SetTreeModule_mk(SetTreeNode$1__get_Left(t1$0027), SetTreeLeaf$1__get_Key(t1$0027), SetTreeModule_mk(SetTreeNode$1__get_Right(t1$0027), v, t2));\n }\n }\n else {\n throw new Error(\"internal error: Set.rebalance\");\n }\n }\n else {\n return SetTreeModule_mk(t1, v, t2);\n }\n}\nexport function SetTreeModule_add(comparer, k, t) {\n if (t != null) {\n const t2 = value_3(t);\n const c = comparer.Compare(k, SetTreeLeaf$1__get_Key(t2)) | 0;\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n if (c < 0) {\n return SetTreeModule_rebalance(SetTreeModule_add(comparer, k, SetTreeNode$1__get_Left(tn)), SetTreeLeaf$1__get_Key(tn), SetTreeNode$1__get_Right(tn));\n }\n else if (c === 0) {\n return t;\n }\n else {\n return SetTreeModule_rebalance(SetTreeNode$1__get_Left(tn), SetTreeLeaf$1__get_Key(tn), SetTreeModule_add(comparer, k, SetTreeNode$1__get_Right(tn)));\n }\n }\n else {\n const c_1 = comparer.Compare(k, SetTreeLeaf$1__get_Key(t2)) | 0;\n if (c_1 < 0) {\n return SetTreeNode$1_$ctor_5F465FC9(k, SetTreeModule_empty(), t, 2);\n }\n else if (c_1 === 0) {\n return t;\n }\n else {\n return SetTreeNode$1_$ctor_5F465FC9(k, t, SetTreeModule_empty(), 2);\n }\n }\n }\n else {\n return SetTreeLeaf$1_$ctor_2B595(k);\n }\n}\nexport function SetTreeModule_balance(comparer, t1, k, t2) {\n if (t1 != null) {\n const t1$0027 = value_3(t1);\n if (t2 != null) {\n const t2$0027 = value_3(t2);\n if (t1$0027 instanceof SetTreeNode$1) {\n const t1n = t1$0027;\n if (t2$0027 instanceof SetTreeNode$1) {\n const t2n = t2$0027;\n if ((SetTreeNode$1__get_Height(t1n) + 2) < SetTreeNode$1__get_Height(t2n)) {\n return SetTreeModule_rebalance(SetTreeModule_balance(comparer, t1, k, SetTreeNode$1__get_Left(t2n)), SetTreeLeaf$1__get_Key(t2n), SetTreeNode$1__get_Right(t2n));\n }\n else if ((SetTreeNode$1__get_Height(t2n) + 2) < SetTreeNode$1__get_Height(t1n)) {\n return SetTreeModule_rebalance(SetTreeNode$1__get_Left(t1n), SetTreeLeaf$1__get_Key(t1n), SetTreeModule_balance(comparer, SetTreeNode$1__get_Right(t1n), k, t2));\n }\n else {\n return SetTreeModule_mk(t1, k, t2);\n }\n }\n else {\n return SetTreeModule_add(comparer, k, SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(t2$0027), t1));\n }\n }\n else {\n return SetTreeModule_add(comparer, k, SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(t1$0027), t2));\n }\n }\n else {\n return SetTreeModule_add(comparer, k, t1);\n }\n }\n else {\n return SetTreeModule_add(comparer, k, t2);\n }\n}\nexport function SetTreeModule_split(comparer, pivot, t) {\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n const c = comparer.Compare(pivot, SetTreeLeaf$1__get_Key(tn)) | 0;\n if (c < 0) {\n const patternInput = SetTreeModule_split(comparer, pivot, SetTreeNode$1__get_Left(tn));\n return [patternInput[0], patternInput[1], SetTreeModule_balance(comparer, patternInput[2], SetTreeLeaf$1__get_Key(tn), SetTreeNode$1__get_Right(tn))];\n }\n else if (c === 0) {\n return [SetTreeNode$1__get_Left(tn), true, SetTreeNode$1__get_Right(tn)];\n }\n else {\n const patternInput_1 = SetTreeModule_split(comparer, pivot, SetTreeNode$1__get_Right(tn));\n return [SetTreeModule_balance(comparer, SetTreeNode$1__get_Left(tn), SetTreeLeaf$1__get_Key(tn), patternInput_1[0]), patternInput_1[1], patternInput_1[2]];\n }\n }\n else {\n const c_1 = comparer.Compare(SetTreeLeaf$1__get_Key(t2), pivot) | 0;\n if (c_1 < 0) {\n return [t, false, SetTreeModule_empty()];\n }\n else if (c_1 === 0) {\n return [SetTreeModule_empty(), true, SetTreeModule_empty()];\n }\n else {\n return [SetTreeModule_empty(), false, t];\n }\n }\n }\n else {\n return [SetTreeModule_empty(), false, SetTreeModule_empty()];\n }\n}\nexport function SetTreeModule_spliceOutSuccessor(t) {\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n if (SetTreeNode$1__get_Left(tn) == null) {\n return [SetTreeLeaf$1__get_Key(tn), SetTreeNode$1__get_Right(tn)];\n }\n else {\n const patternInput = SetTreeModule_spliceOutSuccessor(SetTreeNode$1__get_Left(tn));\n return [patternInput[0], SetTreeModule_mk(patternInput[1], SetTreeLeaf$1__get_Key(tn), SetTreeNode$1__get_Right(tn))];\n }\n }\n else {\n return [SetTreeLeaf$1__get_Key(t2), SetTreeModule_empty()];\n }\n }\n else {\n throw new Error(\"internal error: Set.spliceOutSuccessor\");\n }\n}\nexport function SetTreeModule_remove(comparer, k, t) {\n if (t != null) {\n const t2 = value_3(t);\n const c = comparer.Compare(k, SetTreeLeaf$1__get_Key(t2)) | 0;\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n if (c < 0) {\n return SetTreeModule_rebalance(SetTreeModule_remove(comparer, k, SetTreeNode$1__get_Left(tn)), SetTreeLeaf$1__get_Key(tn), SetTreeNode$1__get_Right(tn));\n }\n else if (c === 0) {\n if (SetTreeNode$1__get_Left(tn) == null) {\n return SetTreeNode$1__get_Right(tn);\n }\n else if (SetTreeNode$1__get_Right(tn) == null) {\n return SetTreeNode$1__get_Left(tn);\n }\n else {\n const patternInput = SetTreeModule_spliceOutSuccessor(SetTreeNode$1__get_Right(tn));\n return SetTreeModule_mk(SetTreeNode$1__get_Left(tn), patternInput[0], patternInput[1]);\n }\n }\n else {\n return SetTreeModule_rebalance(SetTreeNode$1__get_Left(tn), SetTreeLeaf$1__get_Key(tn), SetTreeModule_remove(comparer, k, SetTreeNode$1__get_Right(tn)));\n }\n }\n else if (c === 0) {\n return SetTreeModule_empty();\n }\n else {\n return t;\n }\n }\n else {\n return t;\n }\n}\nexport function SetTreeModule_mem(comparer_mut, k_mut, t_mut) {\n SetTreeModule_mem: while (true) {\n const comparer = comparer_mut, k = k_mut, t = t_mut;\n if (t != null) {\n const t2 = value_3(t);\n const c = comparer.Compare(k, SetTreeLeaf$1__get_Key(t2)) | 0;\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n if (c < 0) {\n comparer_mut = comparer;\n k_mut = k;\n t_mut = SetTreeNode$1__get_Left(tn);\n continue SetTreeModule_mem;\n }\n else if (c === 0) {\n return true;\n }\n else {\n comparer_mut = comparer;\n k_mut = k;\n t_mut = SetTreeNode$1__get_Right(tn);\n continue SetTreeModule_mem;\n }\n }\n else {\n return c === 0;\n }\n }\n else {\n return false;\n }\n break;\n }\n}\nexport function SetTreeModule_iter(f_mut, t_mut) {\n SetTreeModule_iter: while (true) {\n const f = f_mut, t = t_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n SetTreeModule_iter(f, SetTreeNode$1__get_Left(tn));\n f(SetTreeLeaf$1__get_Key(tn));\n f_mut = f;\n t_mut = SetTreeNode$1__get_Right(tn);\n continue SetTreeModule_iter;\n }\n else {\n f(SetTreeLeaf$1__get_Key(t2));\n }\n }\n break;\n }\n}\nexport function SetTreeModule_foldBackOpt(f_mut, t_mut, x_mut) {\n SetTreeModule_foldBackOpt: while (true) {\n const f = f_mut, t = t_mut, x = x_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n f_mut = f;\n t_mut = SetTreeNode$1__get_Left(tn);\n x_mut = f(SetTreeLeaf$1__get_Key(tn), SetTreeModule_foldBackOpt(f, SetTreeNode$1__get_Right(tn), x));\n continue SetTreeModule_foldBackOpt;\n }\n else {\n return f(SetTreeLeaf$1__get_Key(t2), x);\n }\n }\n else {\n return x;\n }\n break;\n }\n}\nexport function SetTreeModule_foldBack(f, m, x) {\n return SetTreeModule_foldBackOpt(f, m, x);\n}\nexport function SetTreeModule_foldOpt(f_mut, x_mut, t_mut) {\n SetTreeModule_foldOpt: while (true) {\n const f = f_mut, x = x_mut, t = t_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n f_mut = f;\n x_mut = f(SetTreeModule_foldOpt(f, x, SetTreeNode$1__get_Left(tn)), SetTreeLeaf$1__get_Key(tn));\n t_mut = SetTreeNode$1__get_Right(tn);\n continue SetTreeModule_foldOpt;\n }\n else {\n return f(x, SetTreeLeaf$1__get_Key(t2));\n }\n }\n else {\n return x;\n }\n break;\n }\n}\nexport function SetTreeModule_fold(f, x, m) {\n return SetTreeModule_foldOpt(f, x, m);\n}\nexport function SetTreeModule_forall(f_mut, t_mut) {\n SetTreeModule_forall: while (true) {\n const f = f_mut, t = t_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n if (f(SetTreeLeaf$1__get_Key(tn)) && SetTreeModule_forall(f, SetTreeNode$1__get_Left(tn))) {\n f_mut = f;\n t_mut = SetTreeNode$1__get_Right(tn);\n continue SetTreeModule_forall;\n }\n else {\n return false;\n }\n }\n else {\n return f(SetTreeLeaf$1__get_Key(t2));\n }\n }\n else {\n return true;\n }\n break;\n }\n}\nexport function SetTreeModule_exists(f_mut, t_mut) {\n SetTreeModule_exists: while (true) {\n const f = f_mut, t = t_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n if (f(SetTreeLeaf$1__get_Key(tn)) ? true : SetTreeModule_exists(f, SetTreeNode$1__get_Left(tn))) {\n return true;\n }\n else {\n f_mut = f;\n t_mut = SetTreeNode$1__get_Right(tn);\n continue SetTreeModule_exists;\n }\n }\n else {\n return f(SetTreeLeaf$1__get_Key(t2));\n }\n }\n else {\n return false;\n }\n break;\n }\n}\nexport function SetTreeModule_subset(comparer, a, b) {\n return SetTreeModule_forall((x) => SetTreeModule_mem(comparer, x, b), a);\n}\nexport function SetTreeModule_properSubset(comparer, a, b) {\n if (SetTreeModule_forall((x) => SetTreeModule_mem(comparer, x, b), a)) {\n return SetTreeModule_exists((x_1) => !SetTreeModule_mem(comparer, x_1, a), b);\n }\n else {\n return false;\n }\n}\nexport function SetTreeModule_filterAux(comparer_mut, f_mut, t_mut, acc_mut) {\n SetTreeModule_filterAux: while (true) {\n const comparer = comparer_mut, f = f_mut, t = t_mut, acc = acc_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n const acc_1 = f(SetTreeLeaf$1__get_Key(tn)) ? SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(tn), acc) : acc;\n comparer_mut = comparer;\n f_mut = f;\n t_mut = SetTreeNode$1__get_Left(tn);\n acc_mut = SetTreeModule_filterAux(comparer, f, SetTreeNode$1__get_Right(tn), acc_1);\n continue SetTreeModule_filterAux;\n }\n else if (f(SetTreeLeaf$1__get_Key(t2))) {\n return SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(t2), acc);\n }\n else {\n return acc;\n }\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function SetTreeModule_filter(comparer, f, s) {\n return SetTreeModule_filterAux(comparer, f, s, SetTreeModule_empty());\n}\nexport function SetTreeModule_diffAux(comparer_mut, t_mut, acc_mut) {\n SetTreeModule_diffAux: while (true) {\n const comparer = comparer_mut, t = t_mut, acc = acc_mut;\n if (acc == null) {\n return acc;\n }\n else if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n comparer_mut = comparer;\n t_mut = SetTreeNode$1__get_Left(tn);\n acc_mut = SetTreeModule_diffAux(comparer, SetTreeNode$1__get_Right(tn), SetTreeModule_remove(comparer, SetTreeLeaf$1__get_Key(tn), acc));\n continue SetTreeModule_diffAux;\n }\n else {\n return SetTreeModule_remove(comparer, SetTreeLeaf$1__get_Key(t2), acc);\n }\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function SetTreeModule_diff(comparer, a, b) {\n return SetTreeModule_diffAux(comparer, b, a);\n}\nexport function SetTreeModule_union(comparer, t1, t2) {\n if (t1 != null) {\n const t1$0027 = value_3(t1);\n if (t2 != null) {\n const t2$0027 = value_3(t2);\n if (t1$0027 instanceof SetTreeNode$1) {\n const t1n = t1$0027;\n if (t2$0027 instanceof SetTreeNode$1) {\n const t2n = t2$0027;\n if (SetTreeNode$1__get_Height(t1n) > SetTreeNode$1__get_Height(t2n)) {\n const patternInput = SetTreeModule_split(comparer, SetTreeLeaf$1__get_Key(t1n), t2);\n return SetTreeModule_balance(comparer, SetTreeModule_union(comparer, SetTreeNode$1__get_Left(t1n), patternInput[0]), SetTreeLeaf$1__get_Key(t1n), SetTreeModule_union(comparer, SetTreeNode$1__get_Right(t1n), patternInput[2]));\n }\n else {\n const patternInput_1 = SetTreeModule_split(comparer, SetTreeLeaf$1__get_Key(t2n), t1);\n return SetTreeModule_balance(comparer, SetTreeModule_union(comparer, SetTreeNode$1__get_Left(t2n), patternInput_1[0]), SetTreeLeaf$1__get_Key(t2n), SetTreeModule_union(comparer, SetTreeNode$1__get_Right(t2n), patternInput_1[2]));\n }\n }\n else {\n return SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(t2$0027), t1);\n }\n }\n else {\n return SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(t1$0027), t2);\n }\n }\n else {\n return t1;\n }\n }\n else {\n return t2;\n }\n}\nexport function SetTreeModule_intersectionAux(comparer_mut, b_mut, t_mut, acc_mut) {\n SetTreeModule_intersectionAux: while (true) {\n const comparer = comparer_mut, b = b_mut, t = t_mut, acc = acc_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n const acc_1 = SetTreeModule_intersectionAux(comparer, b, SetTreeNode$1__get_Right(tn), acc);\n const acc_2 = SetTreeModule_mem(comparer, SetTreeLeaf$1__get_Key(tn), b) ? SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(tn), acc_1) : acc_1;\n comparer_mut = comparer;\n b_mut = b;\n t_mut = SetTreeNode$1__get_Left(tn);\n acc_mut = acc_2;\n continue SetTreeModule_intersectionAux;\n }\n else if (SetTreeModule_mem(comparer, SetTreeLeaf$1__get_Key(t2), b)) {\n return SetTreeModule_add(comparer, SetTreeLeaf$1__get_Key(t2), acc);\n }\n else {\n return acc;\n }\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function SetTreeModule_intersection(comparer, a, b) {\n return SetTreeModule_intersectionAux(comparer, b, a, SetTreeModule_empty());\n}\nexport function SetTreeModule_partition1(comparer, f, k, acc1, acc2) {\n if (f(k)) {\n return [SetTreeModule_add(comparer, k, acc1), acc2];\n }\n else {\n return [acc1, SetTreeModule_add(comparer, k, acc2)];\n }\n}\nexport function SetTreeModule_partitionAux(comparer_mut, f_mut, t_mut, acc__mut, acc__1_mut) {\n SetTreeModule_partitionAux: while (true) {\n const comparer = comparer_mut, f = f_mut, t = t_mut, acc_ = acc__mut, acc__1 = acc__1_mut;\n const acc = [acc_, acc__1];\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n const acc_1 = SetTreeModule_partitionAux(comparer, f, SetTreeNode$1__get_Right(tn), acc[0], acc[1]);\n const acc_4 = SetTreeModule_partition1(comparer, f, SetTreeLeaf$1__get_Key(tn), acc_1[0], acc_1[1]);\n comparer_mut = comparer;\n f_mut = f;\n t_mut = SetTreeNode$1__get_Left(tn);\n acc__mut = acc_4[0];\n acc__1_mut = acc_4[1];\n continue SetTreeModule_partitionAux;\n }\n else {\n return SetTreeModule_partition1(comparer, f, SetTreeLeaf$1__get_Key(t2), acc[0], acc[1]);\n }\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function SetTreeModule_partition(comparer, f, s) {\n return SetTreeModule_partitionAux(comparer, f, s, SetTreeModule_empty(), SetTreeModule_empty());\n}\nexport function SetTreeModule_minimumElementAux(t_mut, n_mut) {\n SetTreeModule_minimumElementAux: while (true) {\n const t = t_mut, n = n_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n t_mut = SetTreeNode$1__get_Left(tn);\n n_mut = SetTreeLeaf$1__get_Key(tn);\n continue SetTreeModule_minimumElementAux;\n }\n else {\n return SetTreeLeaf$1__get_Key(t2);\n }\n }\n else {\n return n;\n }\n break;\n }\n}\nexport function SetTreeModule_minimumElementOpt(t) {\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n return some(SetTreeModule_minimumElementAux(SetTreeNode$1__get_Left(tn), SetTreeLeaf$1__get_Key(tn)));\n }\n else {\n return some(SetTreeLeaf$1__get_Key(t2));\n }\n }\n else {\n return undefined;\n }\n}\nexport function SetTreeModule_maximumElementAux(t_mut, n_mut) {\n SetTreeModule_maximumElementAux: while (true) {\n const t = t_mut, n = n_mut;\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n t_mut = SetTreeNode$1__get_Right(tn);\n n_mut = SetTreeLeaf$1__get_Key(tn);\n continue SetTreeModule_maximumElementAux;\n }\n else {\n return SetTreeLeaf$1__get_Key(t2);\n }\n }\n else {\n return n;\n }\n break;\n }\n}\nexport function SetTreeModule_maximumElementOpt(t) {\n if (t != null) {\n const t2 = value_3(t);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n return some(SetTreeModule_maximumElementAux(SetTreeNode$1__get_Right(tn), SetTreeLeaf$1__get_Key(tn)));\n }\n else {\n return some(SetTreeLeaf$1__get_Key(t2));\n }\n }\n else {\n return undefined;\n }\n}\nexport function SetTreeModule_minimumElement(s) {\n const matchValue = SetTreeModule_minimumElementOpt(s);\n if (matchValue == null) {\n throw new Error(\"Set contains no elements\");\n }\n else {\n return value_3(matchValue);\n }\n}\nexport function SetTreeModule_maximumElement(s) {\n const matchValue = SetTreeModule_maximumElementOpt(s);\n if (matchValue == null) {\n throw new Error(\"Set contains no elements\");\n }\n else {\n return value_3(matchValue);\n }\n}\nexport class SetTreeModule_SetIterator$1 extends Record {\n constructor(stack, started) {\n super();\n this.stack = stack;\n this.started = started;\n }\n}\nexport function SetTreeModule_SetIterator$1_$reflection(gen0) {\n return record_type(\"Set.SetTreeModule.SetIterator`1\", [gen0], SetTreeModule_SetIterator$1, () => [[\"stack\", list_type(option_type(SetTreeLeaf$1_$reflection(gen0)))], [\"started\", bool_type]]);\n}\nexport function SetTreeModule_collapseLHS(stack_mut) {\n SetTreeModule_collapseLHS: while (true) {\n const stack = stack_mut;\n if (!isEmpty_1(stack)) {\n const x = head(stack);\n const rest = tail(stack);\n if (x != null) {\n const x2 = value_3(x);\n if (x2 instanceof SetTreeNode$1) {\n const xn = x2;\n stack_mut = ofArrayWithTail([SetTreeNode$1__get_Left(xn), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(xn)), SetTreeNode$1__get_Right(xn)], rest);\n continue SetTreeModule_collapseLHS;\n }\n else {\n return stack;\n }\n }\n else {\n stack_mut = rest;\n continue SetTreeModule_collapseLHS;\n }\n }\n else {\n return empty_1();\n }\n break;\n }\n}\nexport function SetTreeModule_mkIterator(s) {\n return new SetTreeModule_SetIterator$1(SetTreeModule_collapseLHS(singleton_1(s)), false);\n}\nexport function SetTreeModule_notStarted() {\n throw new Error(\"Enumeration not started\");\n}\nexport function SetTreeModule_alreadyFinished() {\n throw new Error(\"Enumeration already started\");\n}\nexport function SetTreeModule_current(i) {\n if (i.started) {\n const matchValue = i.stack;\n if (isEmpty_1(matchValue)) {\n return SetTreeModule_alreadyFinished();\n }\n else if (head(matchValue) != null) {\n const t = value_3(head(matchValue));\n return SetTreeLeaf$1__get_Key(t);\n }\n else {\n throw new Error(\"Please report error: Set iterator, unexpected stack for current\");\n }\n }\n else {\n return SetTreeModule_notStarted();\n }\n}\nexport function SetTreeModule_moveNext(i) {\n if (i.started) {\n const matchValue = i.stack;\n if (!isEmpty_1(matchValue)) {\n if (head(matchValue) != null) {\n const t = value_3(head(matchValue));\n if (t instanceof SetTreeNode$1) {\n throw new Error(\"Please report error: Set iterator, unexpected stack for moveNext\");\n }\n else {\n i.stack = SetTreeModule_collapseLHS(tail(matchValue));\n return !isEmpty_1(i.stack);\n }\n }\n else {\n throw new Error(\"Please report error: Set iterator, unexpected stack for moveNext\");\n }\n }\n else {\n return false;\n }\n }\n else {\n i.started = true;\n return !isEmpty_1(i.stack);\n }\n}\nexport function SetTreeModule_mkIEnumerator(s) {\n let i = SetTreeModule_mkIterator(s);\n return {\n \"System.Collections.Generic.IEnumerator`1.get_Current\"() {\n return SetTreeModule_current(i);\n },\n \"System.Collections.IEnumerator.get_Current\"() {\n return SetTreeModule_current(i);\n },\n \"System.Collections.IEnumerator.MoveNext\"() {\n return SetTreeModule_moveNext(i);\n },\n \"System.Collections.IEnumerator.Reset\"() {\n i = SetTreeModule_mkIterator(s);\n },\n Dispose() {\n },\n };\n}\n/**\n * Set comparison. Note this can be expensive.\n */\nexport function SetTreeModule_compareStacks(comparer_mut, l1_mut, l2_mut) {\n SetTreeModule_compareStacks: while (true) {\n const comparer = comparer_mut, l1 = l1_mut, l2 = l2_mut;\n if (!isEmpty_1(l1)) {\n if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n if (head(l1) != null) {\n const x1_3 = value_3(head(l1));\n const x2_3 = value_3(head(l2));\n if (x1_3 instanceof SetTreeNode$1) {\n const x1n_2 = x1_3;\n if (SetTreeNode$1__get_Left(x1n_2) == null) {\n if (x2_3 instanceof SetTreeNode$1) {\n const x2n_2 = x2_3;\n if (SetTreeNode$1__get_Left(x2n_2) == null) {\n const c = comparer.Compare(SetTreeLeaf$1__get_Key(x1n_2), SetTreeLeaf$1__get_Key(x2n_2)) | 0;\n if (c !== 0) {\n return c | 0;\n }\n else {\n comparer_mut = comparer;\n l1_mut = cons(SetTreeNode$1__get_Right(x1n_2), tail(l1));\n l2_mut = cons(SetTreeNode$1__get_Right(x2n_2), tail(l2));\n continue SetTreeModule_compareStacks;\n }\n }\n else {\n let matchResult, t1_6, x1_4, t2_6, x2_4;\n if (!isEmpty_1(l1)) {\n if (head(l1) != null) {\n matchResult = 0;\n t1_6 = tail(l1);\n x1_4 = value_3(head(l1));\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult = 1;\n t2_6 = tail(l2);\n x2_4 = value_3(head(l2));\n }\n else {\n matchResult = 2;\n }\n }\n else {\n matchResult = 2;\n }\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult = 1;\n t2_6 = tail(l2);\n x2_4 = value_3(head(l2));\n }\n else {\n matchResult = 2;\n }\n }\n else {\n matchResult = 2;\n }\n switch (matchResult) {\n case 0:\n if (x1_4 instanceof SetTreeNode$1) {\n const x1n_3 = x1_4;\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x1n_3), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x1n_3), SetTreeModule_empty(), SetTreeNode$1__get_Right(x1n_3), 0)], t1_6);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x1_4))], t1_6);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n case 1:\n if (x2_4 instanceof SetTreeNode$1) {\n const x2n_3 = x2_4;\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x2n_3), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x2n_3), SetTreeModule_empty(), SetTreeNode$1__get_Right(x2n_3), 0)], t2_6);\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x2_4))], t2_6);\n continue SetTreeModule_compareStacks;\n }\n default:\n throw new Error(\"unexpected state in SetTree.compareStacks\");\n }\n }\n }\n else {\n const c_1 = comparer.Compare(SetTreeLeaf$1__get_Key(x1n_2), SetTreeLeaf$1__get_Key(x2_3)) | 0;\n if (c_1 !== 0) {\n return c_1 | 0;\n }\n else {\n comparer_mut = comparer;\n l1_mut = cons(SetTreeNode$1__get_Right(x1n_2), tail(l1));\n l2_mut = cons(SetTreeModule_empty(), tail(l2));\n continue SetTreeModule_compareStacks;\n }\n }\n }\n else {\n let matchResult_1, t1_7, x1_5, t2_7, x2_5;\n if (!isEmpty_1(l1)) {\n if (head(l1) != null) {\n matchResult_1 = 0;\n t1_7 = tail(l1);\n x1_5 = value_3(head(l1));\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_1 = 1;\n t2_7 = tail(l2);\n x2_5 = value_3(head(l2));\n }\n else {\n matchResult_1 = 2;\n }\n }\n else {\n matchResult_1 = 2;\n }\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_1 = 1;\n t2_7 = tail(l2);\n x2_5 = value_3(head(l2));\n }\n else {\n matchResult_1 = 2;\n }\n }\n else {\n matchResult_1 = 2;\n }\n switch (matchResult_1) {\n case 0:\n if (x1_5 instanceof SetTreeNode$1) {\n const x1n_4 = x1_5;\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x1n_4), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x1n_4), SetTreeModule_empty(), SetTreeNode$1__get_Right(x1n_4), 0)], t1_7);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x1_5))], t1_7);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n case 1:\n if (x2_5 instanceof SetTreeNode$1) {\n const x2n_4 = x2_5;\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x2n_4), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x2n_4), SetTreeModule_empty(), SetTreeNode$1__get_Right(x2n_4), 0)], t2_7);\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x2_5))], t2_7);\n continue SetTreeModule_compareStacks;\n }\n default:\n throw new Error(\"unexpected state in SetTree.compareStacks\");\n }\n }\n }\n else if (x2_3 instanceof SetTreeNode$1) {\n const x2n_5 = x2_3;\n if (SetTreeNode$1__get_Left(x2n_5) == null) {\n const c_2 = comparer.Compare(SetTreeLeaf$1__get_Key(x1_3), SetTreeLeaf$1__get_Key(x2n_5)) | 0;\n if (c_2 !== 0) {\n return c_2 | 0;\n }\n else {\n comparer_mut = comparer;\n l1_mut = cons(SetTreeModule_empty(), tail(l1));\n l2_mut = cons(SetTreeNode$1__get_Right(x2n_5), tail(l2));\n continue SetTreeModule_compareStacks;\n }\n }\n else {\n let matchResult_2, t1_8, x1_6, t2_8, x2_6;\n if (!isEmpty_1(l1)) {\n if (head(l1) != null) {\n matchResult_2 = 0;\n t1_8 = tail(l1);\n x1_6 = value_3(head(l1));\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_2 = 1;\n t2_8 = tail(l2);\n x2_6 = value_3(head(l2));\n }\n else {\n matchResult_2 = 2;\n }\n }\n else {\n matchResult_2 = 2;\n }\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_2 = 1;\n t2_8 = tail(l2);\n x2_6 = value_3(head(l2));\n }\n else {\n matchResult_2 = 2;\n }\n }\n else {\n matchResult_2 = 2;\n }\n switch (matchResult_2) {\n case 0:\n if (x1_6 instanceof SetTreeNode$1) {\n const x1n_5 = x1_6;\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x1n_5), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x1n_5), SetTreeModule_empty(), SetTreeNode$1__get_Right(x1n_5), 0)], t1_8);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x1_6))], t1_8);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n case 1:\n if (x2_6 instanceof SetTreeNode$1) {\n const x2n_6 = x2_6;\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x2n_6), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x2n_6), SetTreeModule_empty(), SetTreeNode$1__get_Right(x2n_6), 0)], t2_8);\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x2_6))], t2_8);\n continue SetTreeModule_compareStacks;\n }\n default:\n throw new Error(\"unexpected state in SetTree.compareStacks\");\n }\n }\n }\n else {\n const c_3 = comparer.Compare(SetTreeLeaf$1__get_Key(x1_3), SetTreeLeaf$1__get_Key(x2_3)) | 0;\n if (c_3 !== 0) {\n return c_3 | 0;\n }\n else {\n comparer_mut = comparer;\n l1_mut = tail(l1);\n l2_mut = tail(l2);\n continue SetTreeModule_compareStacks;\n }\n }\n }\n else {\n const x2 = value_3(head(l2));\n let matchResult_3, t1_2, x1, t2_2, x2_1;\n if (!isEmpty_1(l1)) {\n if (head(l1) != null) {\n matchResult_3 = 0;\n t1_2 = tail(l1);\n x1 = value_3(head(l1));\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_3 = 1;\n t2_2 = tail(l2);\n x2_1 = value_3(head(l2));\n }\n else {\n matchResult_3 = 2;\n }\n }\n else {\n matchResult_3 = 2;\n }\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_3 = 1;\n t2_2 = tail(l2);\n x2_1 = value_3(head(l2));\n }\n else {\n matchResult_3 = 2;\n }\n }\n else {\n matchResult_3 = 2;\n }\n switch (matchResult_3) {\n case 0:\n if (x1 instanceof SetTreeNode$1) {\n const x1n = x1;\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x1n), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x1n), SetTreeModule_empty(), SetTreeNode$1__get_Right(x1n), 0)], t1_2);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x1))], t1_2);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n case 1:\n if (x2_1 instanceof SetTreeNode$1) {\n const x2n = x2_1;\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x2n), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x2n), SetTreeModule_empty(), SetTreeNode$1__get_Right(x2n), 0)], t2_2);\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x2_1))], t2_2);\n continue SetTreeModule_compareStacks;\n }\n default:\n throw new Error(\"unexpected state in SetTree.compareStacks\");\n }\n }\n }\n else if (head(l1) != null) {\n const x1_1 = value_3(head(l1));\n let matchResult_4, t1_4, x1_2, t2_4, x2_2;\n if (!isEmpty_1(l1)) {\n if (head(l1) != null) {\n matchResult_4 = 0;\n t1_4 = tail(l1);\n x1_2 = value_3(head(l1));\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_4 = 1;\n t2_4 = tail(l2);\n x2_2 = value_3(head(l2));\n }\n else {\n matchResult_4 = 2;\n }\n }\n else {\n matchResult_4 = 2;\n }\n }\n else if (!isEmpty_1(l2)) {\n if (head(l2) != null) {\n matchResult_4 = 1;\n t2_4 = tail(l2);\n x2_2 = value_3(head(l2));\n }\n else {\n matchResult_4 = 2;\n }\n }\n else {\n matchResult_4 = 2;\n }\n switch (matchResult_4) {\n case 0:\n if (x1_2 instanceof SetTreeNode$1) {\n const x1n_1 = x1_2;\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x1n_1), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x1n_1), SetTreeModule_empty(), SetTreeNode$1__get_Right(x1n_1), 0)], t1_4);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x1_2))], t1_4);\n l2_mut = l2;\n continue SetTreeModule_compareStacks;\n }\n case 1:\n if (x2_2 instanceof SetTreeNode$1) {\n const x2n_1 = x2_2;\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeNode$1__get_Left(x2n_1), SetTreeNode$1_$ctor_5F465FC9(SetTreeLeaf$1__get_Key(x2n_1), SetTreeModule_empty(), SetTreeNode$1__get_Right(x2n_1), 0)], t2_4);\n continue SetTreeModule_compareStacks;\n }\n else {\n comparer_mut = comparer;\n l1_mut = l1;\n l2_mut = ofArrayWithTail([SetTreeModule_empty(), SetTreeLeaf$1_$ctor_2B595(SetTreeLeaf$1__get_Key(x2_2))], t2_4);\n continue SetTreeModule_compareStacks;\n }\n default:\n throw new Error(\"unexpected state in SetTree.compareStacks\");\n }\n }\n else {\n comparer_mut = comparer;\n l1_mut = tail(l1);\n l2_mut = tail(l2);\n continue SetTreeModule_compareStacks;\n }\n }\n else {\n return 1;\n }\n }\n else if (isEmpty_1(l2)) {\n return 0;\n }\n else {\n return -1;\n }\n break;\n }\n}\nexport function SetTreeModule_compare(comparer, t1, t2) {\n if (t1 == null) {\n if (t2 == null) {\n return 0;\n }\n else {\n return -1;\n }\n }\n else if (t2 == null) {\n return 1;\n }\n else {\n return SetTreeModule_compareStacks(comparer, singleton_1(t1), singleton_1(t2)) | 0;\n }\n}\nexport function SetTreeModule_choose(s) {\n return SetTreeModule_minimumElement(s);\n}\nexport function SetTreeModule_toList(t) {\n const loop = (t$0027_mut, acc_mut) => {\n loop: while (true) {\n const t$0027 = t$0027_mut, acc = acc_mut;\n if (t$0027 != null) {\n const t2 = value_3(t$0027);\n if (t2 instanceof SetTreeNode$1) {\n const tn = t2;\n t$0027_mut = SetTreeNode$1__get_Left(tn);\n acc_mut = cons(SetTreeLeaf$1__get_Key(tn), loop(SetTreeNode$1__get_Right(tn), acc));\n continue loop;\n }\n else {\n return cons(SetTreeLeaf$1__get_Key(t2), acc);\n }\n }\n else {\n return acc;\n }\n break;\n }\n };\n return loop(t, empty_1());\n}\nexport function SetTreeModule_copyToArray(s, arr, i) {\n let j = i;\n SetTreeModule_iter((x) => {\n setItem(arr, j, x);\n j = ((j + 1) | 0);\n }, s);\n}\nexport function SetTreeModule_toArray(s) {\n const n = SetTreeModule_count(s) | 0;\n const res = fill(new Array(n), 0, n, null);\n SetTreeModule_copyToArray(s, res, 0);\n return res;\n}\nexport function SetTreeModule_mkFromEnumerator(comparer_mut, acc_mut, e_mut) {\n SetTreeModule_mkFromEnumerator: while (true) {\n const comparer = comparer_mut, acc = acc_mut, e = e_mut;\n if (e[\"System.Collections.IEnumerator.MoveNext\"]()) {\n comparer_mut = comparer;\n acc_mut = SetTreeModule_add(comparer, e[\"System.Collections.Generic.IEnumerator`1.get_Current\"](), acc);\n e_mut = e;\n continue SetTreeModule_mkFromEnumerator;\n }\n else {\n return acc;\n }\n break;\n }\n}\nexport function SetTreeModule_ofArray(comparer, l) {\n return fold_1((acc, k) => SetTreeModule_add(comparer, k, acc), SetTreeModule_empty(), l);\n}\nexport function SetTreeModule_ofList(comparer, l) {\n return fold_2((acc, k) => SetTreeModule_add(comparer, k, acc), SetTreeModule_empty(), l);\n}\nexport function SetTreeModule_ofSeq(comparer, c) {\n if (isArrayLike(c)) {\n return SetTreeModule_ofArray(comparer, c);\n }\n else if (c instanceof FSharpList) {\n return SetTreeModule_ofList(comparer, c);\n }\n else {\n const ie = getEnumerator(c);\n try {\n return SetTreeModule_mkFromEnumerator(comparer, SetTreeModule_empty(), ie);\n }\n finally {\n disposeSafe(ie);\n }\n }\n}\nexport class FSharpSet {\n constructor(comparer, tree) {\n this.comparer = comparer;\n this.tree = tree;\n }\n GetHashCode() {\n const this$ = this;\n return FSharpSet__ComputeHashCode(this$) | 0;\n }\n Equals(that) {\n let that_1;\n const this$ = this;\n return (that instanceof FSharpSet) && ((that_1 = that, SetTreeModule_compare(FSharpSet__get_Comparer(this$), FSharpSet__get_Tree(this$), FSharpSet__get_Tree(that_1)) === 0));\n }\n toString() {\n const this$ = this;\n return (\"set [\" + join(\"; \", map_1((x) => {\n let copyOfStruct = x;\n return toString(copyOfStruct);\n }, this$))) + \"]\";\n }\n get [Symbol.toStringTag]() {\n return \"FSharpSet\";\n }\n toJSON() {\n const this$ = this;\n return Array.from(this$);\n }\n CompareTo(that) {\n const s = this;\n return SetTreeModule_compare(FSharpSet__get_Comparer(s), FSharpSet__get_Tree(s), FSharpSet__get_Tree(that)) | 0;\n }\n \"System.Collections.Generic.ICollection`1.Add2B595\"(x) {\n throw new Error(\"ReadOnlyCollection\");\n }\n \"System.Collections.Generic.ICollection`1.Clear\"() {\n throw new Error(\"ReadOnlyCollection\");\n }\n \"System.Collections.Generic.ICollection`1.Remove2B595\"(x) {\n throw new Error(\"ReadOnlyCollection\");\n }\n \"System.Collections.Generic.ICollection`1.Contains2B595\"(x) {\n const s = this;\n return SetTreeModule_mem(FSharpSet__get_Comparer(s), x, FSharpSet__get_Tree(s));\n }\n \"System.Collections.Generic.ICollection`1.CopyToZ3B4C077E\"(arr, i) {\n const s = this;\n SetTreeModule_copyToArray(FSharpSet__get_Tree(s), arr, i);\n }\n \"System.Collections.Generic.ICollection`1.get_IsReadOnly\"() {\n return true;\n }\n \"System.Collections.Generic.ICollection`1.get_Count\"() {\n const s = this;\n return FSharpSet__get_Count(s) | 0;\n }\n \"System.Collections.Generic.IReadOnlyCollection`1.get_Count\"() {\n const s = this;\n return FSharpSet__get_Count(s) | 0;\n }\n GetEnumerator() {\n const s = this;\n return SetTreeModule_mkIEnumerator(FSharpSet__get_Tree(s));\n }\n [Symbol.iterator]() {\n return toIterator(getEnumerator(this));\n }\n \"System.Collections.IEnumerable.GetEnumerator\"() {\n const s = this;\n return SetTreeModule_mkIEnumerator(FSharpSet__get_Tree(s));\n }\n get size() {\n const s = this;\n return FSharpSet__get_Count(s) | 0;\n }\n add(k) {\n const s = this;\n throw new Error(\"Set cannot be mutated\");\n return s;\n }\n clear() {\n throw new Error(\"Set cannot be mutated\");\n }\n delete(k) {\n throw new Error(\"Set cannot be mutated\");\n return false;\n }\n has(k) {\n const s = this;\n return FSharpSet__Contains(s, k);\n }\n keys() {\n const s = this;\n return map_1((x) => x, s);\n }\n values() {\n const s = this;\n return map_1((x) => x, s);\n }\n entries() {\n const s = this;\n return map_1((v) => [v, v], s);\n }\n forEach(f, thisArg) {\n const s = this;\n iterate_1((x) => {\n f(x, x, s);\n }, s);\n }\n}\nexport function FSharpSet_$reflection(gen0) {\n return class_type(\"Set.FSharpSet\", [gen0], FSharpSet);\n}\nexport function FSharpSet_$ctor(comparer, tree) {\n return new FSharpSet(comparer, tree);\n}\nexport function FSharpSet__get_Comparer(set$) {\n return set$.comparer;\n}\nexport function FSharpSet__get_Tree(set$) {\n return set$.tree;\n}\nexport function FSharpSet_Empty(comparer) {\n return FSharpSet_$ctor(comparer, SetTreeModule_empty());\n}\nexport function FSharpSet__Add(s, value) {\n return FSharpSet_$ctor(FSharpSet__get_Comparer(s), SetTreeModule_add(FSharpSet__get_Comparer(s), value, FSharpSet__get_Tree(s)));\n}\nexport function FSharpSet__Remove(s, value) {\n return FSharpSet_$ctor(FSharpSet__get_Comparer(s), SetTreeModule_remove(FSharpSet__get_Comparer(s), value, FSharpSet__get_Tree(s)));\n}\nexport function FSharpSet__get_Count(s) {\n return SetTreeModule_count(FSharpSet__get_Tree(s));\n}\nexport function FSharpSet__Contains(s, value) {\n return SetTreeModule_mem(FSharpSet__get_Comparer(s), value, FSharpSet__get_Tree(s));\n}\nexport function FSharpSet__Iterate(s, x) {\n SetTreeModule_iter(x, FSharpSet__get_Tree(s));\n}\nexport function FSharpSet__Fold(s, f, z) {\n const f_1 = f;\n return SetTreeModule_fold((x, z_1) => f_1(z_1, x), z, FSharpSet__get_Tree(s));\n}\nexport function FSharpSet__get_IsEmpty(s) {\n return FSharpSet__get_Tree(s) == null;\n}\nexport function FSharpSet__Partition(s, f) {\n if (FSharpSet__get_Tree(s) == null) {\n return [s, s];\n }\n else {\n const patternInput = SetTreeModule_partition(FSharpSet__get_Comparer(s), f, FSharpSet__get_Tree(s));\n return [FSharpSet_$ctor(FSharpSet__get_Comparer(s), patternInput[0]), FSharpSet_$ctor(FSharpSet__get_Comparer(s), patternInput[1])];\n }\n}\nexport function FSharpSet__Filter(s, f) {\n if (FSharpSet__get_Tree(s) == null) {\n return s;\n }\n else {\n return FSharpSet_$ctor(FSharpSet__get_Comparer(s), SetTreeModule_filter(FSharpSet__get_Comparer(s), f, FSharpSet__get_Tree(s)));\n }\n}\nexport function FSharpSet__Map(s, f, comparer) {\n return FSharpSet_$ctor(comparer, SetTreeModule_fold((acc, k) => SetTreeModule_add(comparer, f(k), acc), SetTreeModule_empty(), FSharpSet__get_Tree(s)));\n}\nexport function FSharpSet__Exists(s, f) {\n return SetTreeModule_exists(f, FSharpSet__get_Tree(s));\n}\nexport function FSharpSet__ForAll(s, f) {\n return SetTreeModule_forall(f, FSharpSet__get_Tree(s));\n}\nexport function FSharpSet_op_Subtraction(set1, set2) {\n if (FSharpSet__get_Tree(set1) == null) {\n return set1;\n }\n else if (FSharpSet__get_Tree(set2) == null) {\n return set1;\n }\n else {\n return FSharpSet_$ctor(FSharpSet__get_Comparer(set1), SetTreeModule_diff(FSharpSet__get_Comparer(set1), FSharpSet__get_Tree(set1), FSharpSet__get_Tree(set2)));\n }\n}\nexport function FSharpSet_op_Addition(set1, set2) {\n if (FSharpSet__get_Tree(set2) == null) {\n return set1;\n }\n else if (FSharpSet__get_Tree(set1) == null) {\n return set2;\n }\n else {\n return FSharpSet_$ctor(FSharpSet__get_Comparer(set1), SetTreeModule_union(FSharpSet__get_Comparer(set1), FSharpSet__get_Tree(set1), FSharpSet__get_Tree(set2)));\n }\n}\nexport function FSharpSet_Intersection(a, b) {\n if (FSharpSet__get_Tree(b) == null) {\n return b;\n }\n else if (FSharpSet__get_Tree(a) == null) {\n return a;\n }\n else {\n return FSharpSet_$ctor(FSharpSet__get_Comparer(a), SetTreeModule_intersection(FSharpSet__get_Comparer(a), FSharpSet__get_Tree(a), FSharpSet__get_Tree(b)));\n }\n}\nexport function FSharpSet_IntersectionMany(sets) {\n return reduce(FSharpSet_Intersection, sets);\n}\nexport function FSharpSet_Equality(a, b) {\n return SetTreeModule_compare(FSharpSet__get_Comparer(a), FSharpSet__get_Tree(a), FSharpSet__get_Tree(b)) === 0;\n}\nexport function FSharpSet_Compare(a, b) {\n return SetTreeModule_compare(FSharpSet__get_Comparer(a), FSharpSet__get_Tree(a), FSharpSet__get_Tree(b));\n}\nexport function FSharpSet__get_Choose(x) {\n return SetTreeModule_choose(FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__get_MinimumElement(x) {\n return SetTreeModule_minimumElement(FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__get_MaximumElement(x) {\n return SetTreeModule_maximumElement(FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__IsSubsetOf(x, otherSet) {\n return SetTreeModule_subset(FSharpSet__get_Comparer(x), FSharpSet__get_Tree(x), FSharpSet__get_Tree(otherSet));\n}\nexport function FSharpSet__IsSupersetOf(x, otherSet) {\n return SetTreeModule_subset(FSharpSet__get_Comparer(x), FSharpSet__get_Tree(otherSet), FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__IsProperSubsetOf(x, otherSet) {\n return SetTreeModule_properSubset(FSharpSet__get_Comparer(x), FSharpSet__get_Tree(x), FSharpSet__get_Tree(otherSet));\n}\nexport function FSharpSet__IsProperSupersetOf(x, otherSet) {\n return SetTreeModule_properSubset(FSharpSet__get_Comparer(x), FSharpSet__get_Tree(otherSet), FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__ToList(x) {\n return SetTreeModule_toList(FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__ToArray(x) {\n return SetTreeModule_toArray(FSharpSet__get_Tree(x));\n}\nexport function FSharpSet__ComputeHashCode(this$) {\n let res = 0;\n const enumerator = getEnumerator(this$);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const x_1 = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n res = ((((res << 1) + structuralHash(x_1)) + 631) | 0);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return Math.abs(res) | 0;\n}\nexport function isEmpty(set$) {\n return FSharpSet__get_IsEmpty(set$);\n}\nexport function contains(element, set$) {\n return FSharpSet__Contains(set$, element);\n}\nexport function add(value, set$) {\n return FSharpSet__Add(set$, value);\n}\nexport function singleton(value, comparer) {\n return FSharpSet__Add(FSharpSet_Empty(comparer), value);\n}\nexport function remove(value, set$) {\n return FSharpSet__Remove(set$, value);\n}\nexport function union(set1, set2) {\n return FSharpSet_op_Addition(set1, set2);\n}\nexport function unionMany(sets, comparer) {\n return fold_3(FSharpSet_op_Addition, FSharpSet_Empty(comparer), sets);\n}\nexport function intersect(set1, set2) {\n return FSharpSet_Intersection(set1, set2);\n}\nexport function intersectMany(sets) {\n return FSharpSet_IntersectionMany(sets);\n}\nexport function iterate(action, set$) {\n FSharpSet__Iterate(set$, action);\n}\nexport function empty(comparer) {\n return FSharpSet_Empty(comparer);\n}\nexport function forAll(predicate, set$) {\n return FSharpSet__ForAll(set$, predicate);\n}\nexport function exists(predicate, set$) {\n return FSharpSet__Exists(set$, predicate);\n}\nexport function filter(predicate, set$) {\n return FSharpSet__Filter(set$, predicate);\n}\nexport function partition(predicate, set$) {\n return FSharpSet__Partition(set$, predicate);\n}\nexport function fold(folder, state, set$) {\n return SetTreeModule_fold(folder, state, FSharpSet__get_Tree(set$));\n}\nexport function foldBack(folder, set$, state) {\n return SetTreeModule_foldBack(folder, FSharpSet__get_Tree(set$), state);\n}\nexport function map(mapping, set$, comparer) {\n return FSharpSet__Map(set$, mapping, comparer);\n}\nexport function count(set$) {\n return FSharpSet__get_Count(set$);\n}\nexport function ofList(elements, comparer) {\n return FSharpSet_$ctor(comparer, SetTreeModule_ofSeq(comparer, elements));\n}\nexport function ofArray(array, comparer) {\n return FSharpSet_$ctor(comparer, SetTreeModule_ofArray(comparer, array));\n}\nexport function toList(set$) {\n return FSharpSet__ToList(set$);\n}\nexport function toArray(set$) {\n return FSharpSet__ToArray(set$);\n}\nexport function toSeq(set$) {\n return map_1((x) => x, set$);\n}\nexport function ofSeq(elements, comparer) {\n return FSharpSet_$ctor(comparer, SetTreeModule_ofSeq(comparer, elements));\n}\nexport function difference(set1, set2) {\n return FSharpSet_op_Subtraction(set1, set2);\n}\nexport function isSubset(set1, set2) {\n return SetTreeModule_subset(FSharpSet__get_Comparer(set1), FSharpSet__get_Tree(set1), FSharpSet__get_Tree(set2));\n}\nexport function isSuperset(set1, set2) {\n return SetTreeModule_subset(FSharpSet__get_Comparer(set1), FSharpSet__get_Tree(set2), FSharpSet__get_Tree(set1));\n}\nexport function isProperSubset(set1, set2) {\n return SetTreeModule_properSubset(FSharpSet__get_Comparer(set1), FSharpSet__get_Tree(set1), FSharpSet__get_Tree(set2));\n}\nexport function isProperSuperset(set1, set2) {\n return SetTreeModule_properSubset(FSharpSet__get_Comparer(set1), FSharpSet__get_Tree(set2), FSharpSet__get_Tree(set1));\n}\nexport function minElement(set$) {\n return FSharpSet__get_MinimumElement(set$);\n}\nexport function maxElement(set$) {\n return FSharpSet__get_MaximumElement(set$);\n}\nexport function unionWith(s1, s2) {\n return fold_3((acc, x) => acc.add(x), s1, s2);\n}\nexport function newMutableSetWith(s1, s2) {\n if (s1 instanceof HashSet) {\n const s1_1 = s1;\n return HashSet_$ctor_Z6150332D(s2, HashSet__get_Comparer(s1_1));\n }\n else {\n return new Set(s2);\n }\n}\nexport function intersectWith(s1, s2) {\n const s2_1 = newMutableSetWith(s1, s2);\n iterate_1((x) => {\n if (!s2_1.has(x)) {\n s1.delete(x);\n }\n }, s1.values());\n}\nexport function exceptWith(s1, s2) {\n iterate_1((x) => {\n s1.delete(x);\n }, s2);\n}\nexport function isSubsetOf(s1, s2) {\n const s2_1 = newMutableSetWith(s1, s2);\n return forAll_1((value) => s2_1.has(value), s1.values());\n}\nexport function isSupersetOf(s1, s2) {\n return forAll_1((value) => s1.has(value), s2);\n}\nexport function isProperSubsetOf(s1, s2) {\n const s2_1 = newMutableSetWith(s1, s2);\n if (s2_1.size > s1.size) {\n return forAll_1((value) => s2_1.has(value), s1.values());\n }\n else {\n return false;\n }\n}\nexport function isProperSupersetOf(s1, s2) {\n const s2_1 = cache(s2);\n if (exists_1((arg) => !s1.has(arg), s2_1)) {\n return forAll_1((value_2) => s1.has(value_2), s2_1);\n }\n else {\n return false;\n }\n}\n","import { toFail, printf, toText, join } from \"../fable-library-js.4.17.0/String.js\";\nimport { Result_Map, FSharpResult$2 } from \"../fable-library-js.4.17.0/Result.js\";\nimport { Util_CachedDecoders, Util_Cache$1__GetOrAdd_43981464, CaseStrategy, Util_Casing_convert, ErrorReason } from \"./Types.fs.js\";\nimport { tryParse as tryParse_2 } from \"../fable-library-js.4.17.0/Guid.js\";\nimport { toString as toString_12, FSharpRef } from \"../fable-library-js.4.17.0/Types.js\";\nimport { tryParse as tryParse_3 } from \"../fable-library-js.4.17.0/Int32.js\";\nimport { parse, fromInt32, toUInt64, fromFloat64, toInt64, toFloat64 } from \"../fable-library-js.4.17.0/BigInt.js\";\nimport { tryParse as tryParse_4 } from \"../fable-library-js.4.17.0/Long.js\";\nimport { tryParse as tryParse_5 } from \"../fable-library-js.4.17.0/Decimal.js\";\nimport Decimal from \"../fable-library-js.4.17.0/Decimal.js\";\nimport { toUniversalTime, tryParse as tryParse_6, minValue } from \"../fable-library-js.4.17.0/Date.js\";\nimport { tryParse as tryParse_7, minValue as minValue_1 } from \"../fable-library-js.4.17.0/DateOffset.js\";\nimport { tryParse as tryParse_8 } from \"../fable-library-js.4.17.0/TimeSpan.js\";\nimport { map as map_4, defaultArg, some } from \"../fable-library-js.4.17.0/Option.js\";\nimport { ofArray, toArray, map as map_1, length, singleton, append as append_1, tail as tail_1, head as head_1, isEmpty, ofSeq, empty, reverse, fold, tryLast, cons } from \"../fable-library-js.4.17.0/List.js\";\nimport { int16ToString, numberHash, compare, uncurry3, defaultOf, comparePrimitives, uncurry2, int32ToString } from \"../fable-library-js.4.17.0/Util.js\";\nimport { map as map_2, tryFind, foldBack2, foldBack, fill, setItem, fold as fold_1, item } from \"../fable-library-js.4.17.0/Array.js\";\nimport { contains, fold as fold_2, toList, append, reverse as reverse_1 } from \"../fable-library-js.4.17.0/Seq.js\";\nimport { empty as empty_1, map as map_3, tryFind as tryFind_1, add, ofSeq as ofSeq_1, ofList } from \"../fable-library-js.4.17.0/Map.js\";\nimport { getGenerics, getGenericTypeDefinition, makeTuple, getTupleElements, isTuple, isGenericType, parseEnum, getEnumValues, getEnumUnderlyingType, isEnum, getElementType, isArray, isUnion, makeRecord, getRecordElements, isRecord, fullName, getUnionCaseFields, makeUnion as makeUnion_1, getUnionCases, name as name_3, class_type } from \"../fable-library-js.4.17.0/Reflection.js\";\nimport { ofSeq as ofSeq_2 } from \"../fable-library-js.4.17.0/Set.js\";\n\nexport function Helpers_isUndefined(o) {\n return (typeof o) === \"undefined\";\n}\n\nfunction genericMsg(msg, value_1, newLine) {\n try {\n return (((\"Expecting \" + msg) + \" but instead got:\") + (newLine ? \"\\n\" : \" \")) + (JSON.stringify(value_1, null, 4) + '');\n }\n catch (matchValue) {\n return ((\"Expecting \" + msg) + \" but decoder failed. Couldn\\'t report given value due to circular structure.\") + (newLine ? \"\\n\" : \" \");\n }\n}\n\nfunction errorToString(path, error) {\n const reason_1 = (error.tag === 2) ? genericMsg(error.fields[0], error.fields[1], true) : ((error.tag === 1) ? ((genericMsg(error.fields[0], error.fields[1], false) + \"\\nReason: \") + error.fields[2]) : ((error.tag === 3) ? genericMsg(error.fields[0], error.fields[1], true) : ((error.tag === 4) ? (genericMsg(error.fields[0], error.fields[1], true) + ((\"\\nNode `\" + error.fields[2]) + \"` is unkown.\")) : ((error.tag === 5) ? (((\"Expecting \" + error.fields[0]) + \".\\n\") + (JSON.stringify(error.fields[1], null, 4) + '')) : ((error.tag === 7) ? (\"The following errors were found:\\n\\n\" + join(\"\\n\\n\", error.fields[0])) : ((error.tag === 6) ? (\"The following `failure` occurred with the decoder: \" + error.fields[0]) : genericMsg(error.fields[0], error.fields[1], false)))))));\n if (error.tag === 7) {\n return reason_1;\n }\n else {\n return ((\"Error at: `\" + path) + \"`\\n\") + reason_1;\n }\n}\n\nexport function fromValue(path, decoder, value_1) {\n const matchValue = decoder(path, value_1);\n if (matchValue.tag === 1) {\n const error = matchValue.fields[0];\n return new FSharpResult$2(1, [errorToString(error[0], error[1])]);\n }\n else {\n return new FSharpResult$2(0, [matchValue.fields[0]]);\n }\n}\n\nexport function fromString(decoder, value_1) {\n try {\n return fromValue(\"$\", decoder, JSON.parse(value_1));\n }\n catch (matchValue) {\n if (matchValue instanceof SyntaxError) {\n return new FSharpResult$2(1, [\"Given an invalid JSON: \" + matchValue.message]);\n }\n else {\n throw matchValue;\n }\n }\n}\n\nexport function unsafeFromString(decoder, value_1) {\n const matchValue = fromString(decoder, value_1);\n if (matchValue.tag === 1) {\n throw new Error(matchValue.fields[0]);\n }\n else {\n return matchValue.fields[0];\n }\n}\n\nexport function decodeValue(path, decoder) {\n const decoder_1 = decoder;\n return (value_1) => fromValue(path, decoder_1, value_1);\n}\n\nexport function decodeString(decoder) {\n const decoder_1 = decoder;\n return (value_1) => fromString(decoder_1, value_1);\n}\n\nexport function string(path, value_1) {\n if (typeof value_1 === \"string\") {\n return new FSharpResult$2(0, [value_1]);\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"a string\", value_1])]]);\n }\n}\n\nexport function guid(path, value_1) {\n if (typeof value_1 === \"string\") {\n let matchValue;\n let outArg = \"00000000-0000-0000-0000-000000000000\";\n matchValue = [tryParse_2(value_1, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return new FSharpResult$2(0, [matchValue[1]]);\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"a guid\", value_1])]]);\n }\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"a guid\", value_1])]]);\n }\n}\n\nexport function unit(path, value_1) {\n if (value_1 == null) {\n return new FSharpResult$2(0, [undefined]);\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"null\", value_1])]]);\n }\n}\n\nexport const sbyte = (path) => ((value_2) => {\n const path_1 = path;\n const value_3 = value_2;\n if ((typeof value_3) === \"number\") {\n const value_1_1 = value_3;\n return (isFinite(value_1_1) && Math.floor(value_1_1) === value_1_1) ? (((-128 <= value_1_1) && (value_1_1 <= 127)) ? (new FSharpResult$2(0, [(value_1_1 + 0x80 & 0xFF) - 0x80])) : (new FSharpResult$2(1, [[path_1, new ErrorReason(1, [\"a sbyte\", value_1_1, \"Value was either too large or too small for a sbyte\"])]]))) : (new FSharpResult$2(1, [[path_1, new ErrorReason(1, [\"a sbyte\", value_1_1, \"Value is not an integral value\"])]]));\n }\n else if (typeof value_3 === \"string\") {\n let matchValue;\n let outArg = 0;\n matchValue = [tryParse_3(value_3, 511, false, 8, new FSharpRef(() => outArg, (v) => {\n outArg = (v | 0);\n })), outArg];\n return matchValue[0] ? (new FSharpResult$2(0, [matchValue[1]])) : (new FSharpResult$2(1, [[path_1, new ErrorReason(0, [\"a sbyte\", value_3])]]));\n }\n else {\n return new FSharpResult$2(1, [[path_1, new ErrorReason(0, [\"a sbyte\", value_3])]]);\n }\n});\n\nexport const byte = (path) => ((value_2) => {\n const path_1 = path;\n const value_3 = value_2;\n if ((typeof value_3) === \"number\") {\n const value_1_1 = value_3;\n return (isFinite(value_1_1) && Math.floor(value_1_1) === value_1_1) ? (((0 <= value_1_1) && (value_1_1 <= 255)) ? (new FSharpResult$2(0, [value_1_1 & 0xFF])) : (new FSharpResult$2(1, [[path_1, new ErrorReason(1, [\"a byte\", value_1_1, \"Value was either too large or too small for a byte\"])]]))) : (new FSharpResult$2(1, [[path_1, new ErrorReason(1, [\"a byte\", value_1_1, \"Value is not an integral value\"])]]));\n }\n else if (typeof value_3 === \"string\") {\n let matchValue;\n let outArg = 0;\n matchValue = [tryParse_3(value_3, 511, true, 8, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n return matchValue[0] ? (new FSharpResult$2(0, [matchValue[1]])) : (new FSharpResult$2(1, [[path_1, new ErrorReason(0, [\"a byte\", value_3])]]));\n }\n else {\n return new FSharpResult$2(1, [[path_1, new ErrorReason(0, [\"a byte\", value_3])]]);\n }\n});\n\nexport const int16 = (path) => ((value_2) => {\n const path_1 = path;\n const value_3 = value_2;\n if ((typeof value_3) === \"number\") {\n const value_1_1 = value_3;\n return (isFinite(value_1_1) && Math.floor(value_1_1) === value_1_1) ? (((-32768 <= value_1_1) && (value_1_1 <= 32767)) ? (new FSharpResult$2(0, [(value_1_1 + 0x8000 & 0xFFFF) - 0x8000])) : (new FSharpResult$2(1, [[path_1, new ErrorReason(1, [\"an int16\", value_1_1, \"Value was either too large or too small for an int16\"])]]))) : (new FSharpResult$2(1, [[path_1, new ErrorReason(1, [\"an int16\", value_1_1, \"Value is not an integral value\"])]]));\n }\n else if (typeof value_3 === \"string\") {\n let matchValue;\n let outArg = 0;\n matchValue = [tryParse_3(value_3, 511, false, 16, new FSharpRef(() => outArg, (v) => {\n outArg = (v | 0);\n })), outArg];\n return matchValue[0] ? (new FSharpResult$2(0, [matchValue[1]])) : (new FSharpResult$2(1, [[path_1, new ErrorReason(0, [\"an int16\", value_3])]]));\n }\n else {\n return new FSharpResult$2(1, [[path_1, new ErrorReason(0, [\"an int16\", value_3])]]);\n }\n});\n\nexport const uint16 = (path) => ((value_2) => {\n const path_1 = path;\n const value_3 = value_2;\n if ((typeof value_3) === \"number\") {\n const value_1_1 = value_3;\n return (isFinite(value_1_1) && Math.floor(value_1_1) === value_1_1) ? (((0 <= value_1_1) && (value_1_1 <= 65535)) ? (new FSharpResult$2(0, [value_1_1 & 0xFFFF])) : (new FSharpResult$2(1, [[path_1, new ErrorReason(1, [\"an uint16\", value_1_1, \"Value was either too large or too small for an uint16\"])]]))) : (new FSharpResult$2(1, [[path_1, new ErrorReason(1, [\"an uint16\", value_1_1, \"Value is not an integral value\"])]]));\n }\n else if (typeof value_3 === \"string\") {\n let matchValue;\n let outArg = 0;\n matchValue = [tryParse_3(value_3, 511, true, 16, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n return matchValue[0] ? (new FSharpResult$2(0, [matchValue[1]])) : (new FSharpResult$2(1, [[path_1, new ErrorReason(0, [\"an uint16\", value_3])]]));\n }\n else {\n return new FSharpResult$2(1, [[path_1, new ErrorReason(0, [\"an uint16\", value_3])]]);\n }\n});\n\nexport const int = (path) => ((value_2) => {\n const path_1 = path;\n const value_3 = value_2;\n if ((typeof value_3) === \"number\") {\n const value_1_1 = value_3;\n return (isFinite(value_1_1) && Math.floor(value_1_1) === value_1_1) ? (((-2147483648 <= value_1_1) && (value_1_1 <= 2147483647)) ? (new FSharpResult$2(0, [~~value_1_1])) : (new FSharpResult$2(1, [[path_1, new ErrorReason(1, [\"an int\", value_1_1, \"Value was either too large or too small for an int\"])]]))) : (new FSharpResult$2(1, [[path_1, new ErrorReason(1, [\"an int\", value_1_1, \"Value is not an integral value\"])]]));\n }\n else if (typeof value_3 === \"string\") {\n let matchValue;\n let outArg = 0;\n matchValue = [tryParse_3(value_3, 511, false, 32, new FSharpRef(() => outArg, (v) => {\n outArg = (v | 0);\n })), outArg];\n return matchValue[0] ? (new FSharpResult$2(0, [matchValue[1]])) : (new FSharpResult$2(1, [[path_1, new ErrorReason(0, [\"an int\", value_3])]]));\n }\n else {\n return new FSharpResult$2(1, [[path_1, new ErrorReason(0, [\"an int\", value_3])]]);\n }\n});\n\nexport const uint32 = (path) => ((value_2) => {\n const path_1 = path;\n const value_3 = value_2;\n if ((typeof value_3) === \"number\") {\n const value_1_1 = value_3;\n return (isFinite(value_1_1) && Math.floor(value_1_1) === value_1_1) ? (((0 <= value_1_1) && (value_1_1 <= 4294967295)) ? (new FSharpResult$2(0, [value_1_1 >>> 0])) : (new FSharpResult$2(1, [[path_1, new ErrorReason(1, [\"an uint32\", value_1_1, \"Value was either too large or too small for an uint32\"])]]))) : (new FSharpResult$2(1, [[path_1, new ErrorReason(1, [\"an uint32\", value_1_1, \"Value is not an integral value\"])]]));\n }\n else if (typeof value_3 === \"string\") {\n let matchValue;\n let outArg = 0;\n matchValue = [tryParse_3(value_3, 511, true, 32, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n return matchValue[0] ? (new FSharpResult$2(0, [matchValue[1]])) : (new FSharpResult$2(1, [[path_1, new ErrorReason(0, [\"an uint32\", value_3])]]));\n }\n else {\n return new FSharpResult$2(1, [[path_1, new ErrorReason(0, [\"an uint32\", value_3])]]);\n }\n});\n\nexport const int64 = (path) => ((value_2) => {\n const path_1 = path;\n const value_3 = value_2;\n if ((typeof value_3) === \"number\") {\n const value_1_1 = value_3;\n return (isFinite(value_1_1) && Math.floor(value_1_1) === value_1_1) ? (((toFloat64(-9223372036854775808n) <= value_1_1) && (value_1_1 <= toFloat64(9223372036854775807n))) ? (new FSharpResult$2(0, [toInt64(fromFloat64(value_1_1))])) : (new FSharpResult$2(1, [[path_1, new ErrorReason(1, [\"an int64\", value_1_1, \"Value was either too large or too small for an int64\"])]]))) : (new FSharpResult$2(1, [[path_1, new ErrorReason(1, [\"an int64\", value_1_1, \"Value is not an integral value\"])]]));\n }\n else if (typeof value_3 === \"string\") {\n let matchValue;\n let outArg = 0n;\n matchValue = [tryParse_4(value_3, 511, false, 64, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n return matchValue[0] ? (new FSharpResult$2(0, [matchValue[1]])) : (new FSharpResult$2(1, [[path_1, new ErrorReason(0, [\"an int64\", value_3])]]));\n }\n else {\n return new FSharpResult$2(1, [[path_1, new ErrorReason(0, [\"an int64\", value_3])]]);\n }\n});\n\nexport const uint64 = (path) => ((value_2) => {\n const path_1 = path;\n const value_3 = value_2;\n if ((typeof value_3) === \"number\") {\n const value_1_1 = value_3;\n return (isFinite(value_1_1) && Math.floor(value_1_1) === value_1_1) ? (((toFloat64(0n) <= value_1_1) && (value_1_1 <= toFloat64(18446744073709551615n))) ? (new FSharpResult$2(0, [toUInt64(fromFloat64(value_1_1))])) : (new FSharpResult$2(1, [[path_1, new ErrorReason(1, [\"an uint64\", value_1_1, \"Value was either too large or too small for an uint64\"])]]))) : (new FSharpResult$2(1, [[path_1, new ErrorReason(1, [\"an uint64\", value_1_1, \"Value is not an integral value\"])]]));\n }\n else if (typeof value_3 === \"string\") {\n let matchValue;\n let outArg = 0n;\n matchValue = [tryParse_4(value_3, 511, true, 64, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n return matchValue[0] ? (new FSharpResult$2(0, [matchValue[1]])) : (new FSharpResult$2(1, [[path_1, new ErrorReason(0, [\"an uint64\", value_3])]]));\n }\n else {\n return new FSharpResult$2(1, [[path_1, new ErrorReason(0, [\"an uint64\", value_3])]]);\n }\n});\n\nexport function bigint(path, value_1) {\n if ((typeof value_1) === \"number\") {\n return new FSharpResult$2(0, [fromInt32(value_1)]);\n }\n else if (typeof value_1 === \"string\") {\n try {\n return new FSharpResult$2(0, [parse(value_1)]);\n }\n catch (matchValue) {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"a bigint\", value_1])]]);\n }\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"a bigint\", value_1])]]);\n }\n}\n\nexport function bool(path, value_1) {\n if (typeof value_1 === \"boolean\") {\n return new FSharpResult$2(0, [value_1]);\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"a boolean\", value_1])]]);\n }\n}\n\nexport function float(path, value_1) {\n if ((typeof value_1) === \"number\") {\n return new FSharpResult$2(0, [value_1]);\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"a float\", value_1])]]);\n }\n}\n\nexport function float32(path, value_1) {\n if ((typeof value_1) === \"number\") {\n return new FSharpResult$2(0, [value_1]);\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"a float32\", value_1])]]);\n }\n}\n\nexport function decimal(path, value_1) {\n if ((typeof value_1) === \"number\") {\n return new FSharpResult$2(0, [new Decimal(value_1)]);\n }\n else if (typeof value_1 === \"string\") {\n let matchValue;\n let outArg = new Decimal(\"0\");\n matchValue = [tryParse_5(value_1, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return new FSharpResult$2(0, [matchValue[1]]);\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"a decimal\", value_1])]]);\n }\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"a decimal\", value_1])]]);\n }\n}\n\nexport function datetime(path, value_1) {\n if (typeof value_1 === \"string\") {\n let matchValue;\n let outArg = minValue();\n matchValue = [tryParse_6(value_1, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return new FSharpResult$2(0, [toUniversalTime(matchValue[1])]);\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"a datetime\", value_1])]]);\n }\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"a datetime\", value_1])]]);\n }\n}\n\nexport function datetimeOffset(path, value_1) {\n if (typeof value_1 === \"string\") {\n let matchValue;\n let outArg = minValue_1();\n matchValue = [tryParse_7(value_1, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return new FSharpResult$2(0, [matchValue[1]]);\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"a datetimeoffset\", value_1])]]);\n }\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"a datetime\", value_1])]]);\n }\n}\n\nexport function timespan(path, value_1) {\n if (typeof value_1 === \"string\") {\n let matchValue;\n let outArg = 0;\n matchValue = [tryParse_8(value_1, new FSharpRef(() => outArg, (v) => {\n outArg = v;\n })), outArg];\n if (matchValue[0]) {\n return new FSharpResult$2(0, [matchValue[1]]);\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"a timespan\", value_1])]]);\n }\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"a timespan\", value_1])]]);\n }\n}\n\nfunction decodeMaybeNull(path, decoder, value_1) {\n const matchValue = decoder(path, value_1);\n if (matchValue.tag === 1) {\n if (value_1 == null) {\n return new FSharpResult$2(0, [undefined]);\n }\n else {\n return new FSharpResult$2(1, [matchValue.fields[0]]);\n }\n }\n else {\n return new FSharpResult$2(0, [some(matchValue.fields[0])]);\n }\n}\n\nexport function optional(fieldName, decoder, path, value_1) {\n if (value_1 === null ? false : (Object.getPrototypeOf(value_1 || false) === Object.prototype)) {\n const fieldValue = value_1[fieldName];\n if (Helpers_isUndefined(fieldValue)) {\n return new FSharpResult$2(0, [undefined]);\n }\n else {\n return decodeMaybeNull((path + \".\") + fieldName, decoder, fieldValue);\n }\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(2, [\"an object\", value_1])]]);\n }\n}\n\nfunction badPathError(fieldNames, currentPath, value_1) {\n return new FSharpResult$2(1, [[defaultArg(currentPath, join(\".\", cons(\"$\", fieldNames))), new ErrorReason(4, [(\"an object with path `\" + join(\".\", fieldNames)) + \"`\", value_1, defaultArg(tryLast(fieldNames), \"\")])]]);\n}\n\nexport function optionalAt(fieldNames, decoder, firstPath, firstValue) {\n const _arg = fold((tupledArg, field_1) => {\n const curPath = tupledArg[0];\n const curValue = tupledArg[1];\n const res = tupledArg[2];\n if (res == null) {\n if (curValue == null) {\n return [curPath, curValue, new FSharpResult$2(0, [undefined])];\n }\n else if (curValue === null ? false : (Object.getPrototypeOf(curValue || false) === Object.prototype)) {\n return [(curPath + \".\") + field_1, curValue[field_1], undefined];\n }\n else {\n return [curPath, curValue, new FSharpResult$2(1, [[curPath, new ErrorReason(2, [\"an object\", curValue])]])];\n }\n }\n else {\n return [curPath, curValue, res];\n }\n }, [firstPath, firstValue, undefined], fieldNames);\n if (_arg[2] == null) {\n const lastValue = _arg[1];\n if (Helpers_isUndefined(lastValue)) {\n return new FSharpResult$2(0, [undefined]);\n }\n else {\n return decodeMaybeNull(_arg[0], decoder, lastValue);\n }\n }\n else {\n return _arg[2];\n }\n}\n\nexport function field(fieldName, decoder, path, value_1) {\n if (value_1 === null ? false : (Object.getPrototypeOf(value_1 || false) === Object.prototype)) {\n const fieldValue = value_1[fieldName];\n if (Helpers_isUndefined(fieldValue)) {\n return new FSharpResult$2(1, [[path, new ErrorReason(3, [(\"an object with a field named `\" + fieldName) + \"`\", value_1])]]);\n }\n else {\n return decoder((path + \".\") + fieldName, fieldValue);\n }\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(2, [\"an object\", value_1])]]);\n }\n}\n\nexport function at(fieldNames, decoder, firstPath, firstValue) {\n const _arg = fold((tupledArg, field_1) => {\n const curPath = tupledArg[0];\n const curValue = tupledArg[1];\n const res = tupledArg[2];\n if (res == null) {\n if (curValue == null) {\n return [curPath, curValue, badPathError(fieldNames, curPath, firstValue)];\n }\n else if (curValue === null ? false : (Object.getPrototypeOf(curValue || false) === Object.prototype)) {\n const curValue_1 = curValue[field_1];\n if (Helpers_isUndefined(curValue_1)) {\n return [curPath, curValue_1, badPathError(fieldNames, undefined, firstValue)];\n }\n else {\n return [(curPath + \".\") + field_1, curValue_1, undefined];\n }\n }\n else {\n return [curPath, curValue, new FSharpResult$2(1, [[curPath, new ErrorReason(2, [\"an object\", curValue])]])];\n }\n }\n else {\n return [curPath, curValue, res];\n }\n }, [firstPath, firstValue, undefined], fieldNames);\n if (_arg[2] == null) {\n return decoder(_arg[0], _arg[1]);\n }\n else {\n return _arg[2];\n }\n}\n\nexport function index(requestedIndex, decoder, path, value_1) {\n let copyOfStruct;\n const currentPath = ((path + \".[\") + int32ToString(requestedIndex)) + \"]\";\n if (Array.isArray(value_1)) {\n const vArray = value_1;\n if (requestedIndex < vArray.length) {\n return decoder(currentPath, item(requestedIndex, vArray));\n }\n else {\n return new FSharpResult$2(1, [[currentPath, new ErrorReason(5, [(((\"a longer array. Need index `\" + int32ToString(requestedIndex)) + \"` but there are only `\") + ((copyOfStruct = vArray.length, int32ToString(copyOfStruct)))) + \"` entries\", value_1])]]);\n }\n }\n else {\n return new FSharpResult$2(1, [[currentPath, new ErrorReason(0, [\"an array\", value_1])]]);\n }\n}\n\nexport function option(decoder, path, value_1) {\n if (value_1 == null) {\n return new FSharpResult$2(0, [undefined]);\n }\n else {\n return Result_Map(some, decoder(path, value_1));\n }\n}\n\nexport function list(decoder, path, value_1) {\n if (Array.isArray(value_1)) {\n let i = -1;\n return Result_Map(reverse, fold_1((acc, value_2) => {\n i = ((i + 1) | 0);\n if (acc.tag === 0) {\n const matchValue = decoder(((path + \".[\") + int32ToString(i)) + \"]\", value_2);\n if (matchValue.tag === 0) {\n return new FSharpResult$2(0, [cons(matchValue.fields[0], acc.fields[0])]);\n }\n else {\n return new FSharpResult$2(1, [matchValue.fields[0]]);\n }\n }\n else {\n return acc;\n }\n }, new FSharpResult$2(0, [empty()]), value_1));\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"a list\", value_1])]]);\n }\n}\n\nexport function seq(decoder, path, value_1) {\n if (Array.isArray(value_1)) {\n let i = -1;\n return Result_Map(reverse_1, fold_1((acc, value_2) => {\n i = ((i + 1) | 0);\n if (acc.tag === 0) {\n const matchValue = decoder(((path + \".[\") + int32ToString(i)) + \"]\", value_2);\n if (matchValue.tag === 0) {\n return new FSharpResult$2(0, [append([matchValue.fields[0]], acc.fields[0])]);\n }\n else {\n return new FSharpResult$2(1, [matchValue.fields[0]]);\n }\n }\n else {\n return acc;\n }\n }, new FSharpResult$2(0, [[]]), value_1));\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"a seq\", value_1])]]);\n }\n}\n\nexport function array(decoder, path, value_1) {\n if (Array.isArray(value_1)) {\n let i = -1;\n const tokens = value_1;\n return fold_1((acc, value_2) => {\n i = ((i + 1) | 0);\n if (acc.tag === 0) {\n const acc_1 = acc.fields[0];\n const matchValue = decoder(((path + \".[\") + int32ToString(i)) + \"]\", value_2);\n if (matchValue.tag === 0) {\n setItem(acc_1, i, matchValue.fields[0]);\n return new FSharpResult$2(0, [acc_1]);\n }\n else {\n return new FSharpResult$2(1, [matchValue.fields[0]]);\n }\n }\n else {\n return acc;\n }\n }, new FSharpResult$2(0, [fill(new Array(tokens.length), 0, tokens.length, null)]), tokens);\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"an array\", value_1])]]);\n }\n}\n\nexport function keys(path, value_1) {\n if (value_1 === null ? false : (Object.getPrototypeOf(value_1 || false) === Object.prototype)) {\n return new FSharpResult$2(0, [ofSeq(Object.keys(value_1))]);\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"an object\", value_1])]]);\n }\n}\n\nexport function keyValuePairs(decoder, path, value_1) {\n const matchValue = keys(path, value_1);\n if (matchValue.tag === 1) {\n return new FSharpResult$2(1, [matchValue.fields[0]]);\n }\n else {\n return Result_Map(reverse, fold((acc, prop) => {\n if (acc.tag === 0) {\n const matchValue_1 = decoder(path, value_1[prop]);\n if (matchValue_1.tag === 0) {\n return new FSharpResult$2(0, [cons([prop, matchValue_1.fields[0]], acc.fields[0])]);\n }\n else {\n return new FSharpResult$2(1, [matchValue_1.fields[0]]);\n }\n }\n else {\n return acc;\n }\n }, new FSharpResult$2(0, [empty()]), matchValue.fields[0]));\n }\n}\n\nexport function oneOf(decoders, path, value_1) {\n const runner = (decoders_1_mut, errors_mut) => {\n runner:\n while (true) {\n const decoders_1 = decoders_1_mut, errors = errors_mut;\n if (isEmpty(decoders_1)) {\n return new FSharpResult$2(1, [[path, new ErrorReason(7, [errors])]]);\n }\n else {\n const matchValue = fromValue(path, uncurry2(head_1(decoders_1)), value_1);\n if (matchValue.tag === 1) {\n decoders_1_mut = tail_1(decoders_1);\n errors_mut = append_1(errors, singleton(matchValue.fields[0]));\n continue runner;\n }\n else {\n return new FSharpResult$2(0, [matchValue.fields[0]]);\n }\n }\n break;\n }\n };\n return runner(decoders, empty());\n}\n\nexport function nil(output, path, value_1) {\n if (value_1 == null) {\n return new FSharpResult$2(0, [output]);\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"null\", value_1])]]);\n }\n}\n\nexport function value(_arg, v) {\n return new FSharpResult$2(0, [v]);\n}\n\nexport function succeed(output, _arg, _arg_1) {\n return new FSharpResult$2(0, [output]);\n}\n\nexport function fail(msg, path, _arg) {\n return new FSharpResult$2(1, [[path, new ErrorReason(6, [msg])]]);\n}\n\nexport function andThen(cb, decoder, path, value_1) {\n const matchValue = decoder(path, value_1);\n if (matchValue.tag === 0) {\n return cb(matchValue.fields[0], path, value_1);\n }\n else {\n return new FSharpResult$2(1, [matchValue.fields[0]]);\n }\n}\n\nexport function all(decoders, path, value_1) {\n const runner = (decoders_1_mut, values_mut) => {\n runner:\n while (true) {\n const decoders_1 = decoders_1_mut, values = values_mut;\n if (isEmpty(decoders_1)) {\n return new FSharpResult$2(0, [values]);\n }\n else {\n const matchValue = head_1(decoders_1)(path)(value_1);\n if (matchValue.tag === 1) {\n return new FSharpResult$2(1, [matchValue.fields[0]]);\n }\n else {\n decoders_1_mut = tail_1(decoders_1);\n values_mut = append_1(values, singleton(matchValue.fields[0]));\n continue runner;\n }\n }\n break;\n }\n };\n return runner(decoders, empty());\n}\n\nexport function map(ctor, d1, path, value_1) {\n const matchValue = d1(path, value_1);\n if (matchValue.tag === 1) {\n return new FSharpResult$2(1, [matchValue.fields[0]]);\n }\n else {\n return new FSharpResult$2(0, [ctor(matchValue.fields[0])]);\n }\n}\n\nexport function map2(ctor, d1, d2, path, value_1) {\n const matchValue = d1(path, value_1);\n const matchValue_1 = d2(path, value_1);\n const copyOfStruct = matchValue;\n if (copyOfStruct.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct.fields[0]]);\n }\n else {\n const copyOfStruct_1 = matchValue_1;\n if (copyOfStruct_1.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_1.fields[0]]);\n }\n else {\n return new FSharpResult$2(0, [ctor(copyOfStruct.fields[0], copyOfStruct_1.fields[0])]);\n }\n }\n}\n\nexport function map3(ctor, d1, d2, d3, path, value_1) {\n const matchValue = d1(path, value_1);\n const matchValue_1 = d2(path, value_1);\n const matchValue_2 = d3(path, value_1);\n const copyOfStruct = matchValue;\n if (copyOfStruct.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct.fields[0]]);\n }\n else {\n const copyOfStruct_1 = matchValue_1;\n if (copyOfStruct_1.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_1.fields[0]]);\n }\n else {\n const copyOfStruct_2 = matchValue_2;\n if (copyOfStruct_2.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_2.fields[0]]);\n }\n else {\n return new FSharpResult$2(0, [ctor(copyOfStruct.fields[0], copyOfStruct_1.fields[0], copyOfStruct_2.fields[0])]);\n }\n }\n }\n}\n\nexport function map4(ctor, d1, d2, d3, d4, path, value_1) {\n const matchValue = d1(path, value_1);\n const matchValue_1 = d2(path, value_1);\n const matchValue_2 = d3(path, value_1);\n const matchValue_3 = d4(path, value_1);\n const copyOfStruct = matchValue;\n if (copyOfStruct.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct.fields[0]]);\n }\n else {\n const copyOfStruct_1 = matchValue_1;\n if (copyOfStruct_1.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_1.fields[0]]);\n }\n else {\n const copyOfStruct_2 = matchValue_2;\n if (copyOfStruct_2.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_2.fields[0]]);\n }\n else {\n const copyOfStruct_3 = matchValue_3;\n if (copyOfStruct_3.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_3.fields[0]]);\n }\n else {\n return new FSharpResult$2(0, [ctor(copyOfStruct.fields[0], copyOfStruct_1.fields[0], copyOfStruct_2.fields[0], copyOfStruct_3.fields[0])]);\n }\n }\n }\n }\n}\n\nexport function map5(ctor, d1, d2, d3, d4, d5, path, value_1) {\n const matchValue = d1(path, value_1);\n const matchValue_1 = d2(path, value_1);\n const matchValue_2 = d3(path, value_1);\n const matchValue_3 = d4(path, value_1);\n const matchValue_4 = d5(path, value_1);\n const copyOfStruct = matchValue;\n if (copyOfStruct.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct.fields[0]]);\n }\n else {\n const copyOfStruct_1 = matchValue_1;\n if (copyOfStruct_1.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_1.fields[0]]);\n }\n else {\n const copyOfStruct_2 = matchValue_2;\n if (copyOfStruct_2.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_2.fields[0]]);\n }\n else {\n const copyOfStruct_3 = matchValue_3;\n if (copyOfStruct_3.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_3.fields[0]]);\n }\n else {\n const copyOfStruct_4 = matchValue_4;\n if (copyOfStruct_4.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_4.fields[0]]);\n }\n else {\n return new FSharpResult$2(0, [ctor(copyOfStruct.fields[0], copyOfStruct_1.fields[0], copyOfStruct_2.fields[0], copyOfStruct_3.fields[0], copyOfStruct_4.fields[0])]);\n }\n }\n }\n }\n }\n}\n\nexport function map6(ctor, d1, d2, d3, d4, d5, d6, path, value_1) {\n const matchValue = d1(path, value_1);\n const matchValue_1 = d2(path, value_1);\n const matchValue_2 = d3(path, value_1);\n const matchValue_3 = d4(path, value_1);\n const matchValue_4 = d5(path, value_1);\n const matchValue_5 = d6(path, value_1);\n const copyOfStruct = matchValue;\n if (copyOfStruct.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct.fields[0]]);\n }\n else {\n const copyOfStruct_1 = matchValue_1;\n if (copyOfStruct_1.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_1.fields[0]]);\n }\n else {\n const copyOfStruct_2 = matchValue_2;\n if (copyOfStruct_2.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_2.fields[0]]);\n }\n else {\n const copyOfStruct_3 = matchValue_3;\n if (copyOfStruct_3.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_3.fields[0]]);\n }\n else {\n const copyOfStruct_4 = matchValue_4;\n if (copyOfStruct_4.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_4.fields[0]]);\n }\n else {\n const copyOfStruct_5 = matchValue_5;\n if (copyOfStruct_5.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_5.fields[0]]);\n }\n else {\n return new FSharpResult$2(0, [ctor(copyOfStruct.fields[0], copyOfStruct_1.fields[0], copyOfStruct_2.fields[0], copyOfStruct_3.fields[0], copyOfStruct_4.fields[0], copyOfStruct_5.fields[0])]);\n }\n }\n }\n }\n }\n }\n}\n\nexport function map7(ctor, d1, d2, d3, d4, d5, d6, d7, path, value_1) {\n const matchValue = d1(path, value_1);\n const matchValue_1 = d2(path, value_1);\n const matchValue_2 = d3(path, value_1);\n const matchValue_3 = d4(path, value_1);\n const matchValue_4 = d5(path, value_1);\n const matchValue_5 = d6(path, value_1);\n const matchValue_6 = d7(path, value_1);\n const copyOfStruct = matchValue;\n if (copyOfStruct.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct.fields[0]]);\n }\n else {\n const copyOfStruct_1 = matchValue_1;\n if (copyOfStruct_1.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_1.fields[0]]);\n }\n else {\n const copyOfStruct_2 = matchValue_2;\n if (copyOfStruct_2.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_2.fields[0]]);\n }\n else {\n const copyOfStruct_3 = matchValue_3;\n if (copyOfStruct_3.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_3.fields[0]]);\n }\n else {\n const copyOfStruct_4 = matchValue_4;\n if (copyOfStruct_4.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_4.fields[0]]);\n }\n else {\n const copyOfStruct_5 = matchValue_5;\n if (copyOfStruct_5.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_5.fields[0]]);\n }\n else {\n const copyOfStruct_6 = matchValue_6;\n if (copyOfStruct_6.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_6.fields[0]]);\n }\n else {\n return new FSharpResult$2(0, [ctor(copyOfStruct.fields[0], copyOfStruct_1.fields[0], copyOfStruct_2.fields[0], copyOfStruct_3.fields[0], copyOfStruct_4.fields[0], copyOfStruct_5.fields[0], copyOfStruct_6.fields[0])]);\n }\n }\n }\n }\n }\n }\n }\n}\n\nexport function map8(ctor, d1, d2, d3, d4, d5, d6, d7, d8, path, value_1) {\n const matchValue = d1(path, value_1);\n const matchValue_1 = d2(path, value_1);\n const matchValue_2 = d3(path, value_1);\n const matchValue_3 = d4(path, value_1);\n const matchValue_4 = d5(path, value_1);\n const matchValue_5 = d6(path, value_1);\n const matchValue_6 = d7(path, value_1);\n const matchValue_7 = d8(path, value_1);\n const copyOfStruct = matchValue;\n if (copyOfStruct.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct.fields[0]]);\n }\n else {\n const copyOfStruct_1 = matchValue_1;\n if (copyOfStruct_1.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_1.fields[0]]);\n }\n else {\n const copyOfStruct_2 = matchValue_2;\n if (copyOfStruct_2.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_2.fields[0]]);\n }\n else {\n const copyOfStruct_3 = matchValue_3;\n if (copyOfStruct_3.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_3.fields[0]]);\n }\n else {\n const copyOfStruct_4 = matchValue_4;\n if (copyOfStruct_4.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_4.fields[0]]);\n }\n else {\n const copyOfStruct_5 = matchValue_5;\n if (copyOfStruct_5.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_5.fields[0]]);\n }\n else {\n const copyOfStruct_6 = matchValue_6;\n if (copyOfStruct_6.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_6.fields[0]]);\n }\n else {\n const copyOfStruct_7 = matchValue_7;\n if (copyOfStruct_7.tag === 1) {\n return new FSharpResult$2(1, [copyOfStruct_7.fields[0]]);\n }\n else {\n return new FSharpResult$2(0, [ctor(copyOfStruct.fields[0], copyOfStruct_1.fields[0], copyOfStruct_2.fields[0], copyOfStruct_3.fields[0], copyOfStruct_4.fields[0], copyOfStruct_5.fields[0], copyOfStruct_6.fields[0], copyOfStruct_7.fields[0])]);\n }\n }\n }\n }\n }\n }\n }\n }\n}\n\nexport function dict(decoder) {\n let d;\n const decoder_1 = decoder;\n d = ((path) => ((value_1) => keyValuePairs(decoder_1, path, value_1)));\n return (path_1) => ((value_2) => map((elements) => ofList(elements, {\n Compare: comparePrimitives,\n }), uncurry2(d), path_1, value_2));\n}\n\nfunction unwrapWith(errors, path, decoder, value_1) {\n const matchValue = decoder(path, value_1);\n if (matchValue.tag === 1) {\n void (errors.push(matchValue.fields[0]));\n return defaultOf();\n }\n else {\n return matchValue.fields[0];\n }\n}\n\nexport class Getters$1 {\n constructor(path, v) {\n let _this, _this_1;\n this.errors = [];\n this.required = ((_this = this, {\n Field(fieldName, decoder) {\n return unwrapWith(_this.errors, path, (path_1, value_1) => field(fieldName, decoder, path_1, value_1), v);\n },\n At(fieldNames, decoder_2) {\n return unwrapWith(_this.errors, path, (firstPath, firstValue) => at(fieldNames, decoder_2, firstPath, firstValue), v);\n },\n Raw(decoder_4) {\n return unwrapWith(_this.errors, path, decoder_4, v);\n },\n }));\n this.optional = ((_this_1 = this, {\n Field(fieldName_1, decoder_5) {\n return unwrapWith(_this_1.errors, path, (path_2, value_2) => optional(fieldName_1, decoder_5, path_2, value_2), v);\n },\n At(fieldNames_1, decoder_7) {\n return unwrapWith(_this_1.errors, path, (firstPath_1, firstValue_1) => optionalAt(fieldNames_1, decoder_7, firstPath_1, firstValue_1), v);\n },\n Raw(decoder_9) {\n const matchValue = decoder_9(path, v);\n if (matchValue.tag === 1) {\n const reason = matchValue.fields[0][1];\n const error = matchValue.fields[0];\n let matchResult, v_2;\n switch (reason.tag) {\n case 3:\n case 4: {\n matchResult = 1;\n break;\n }\n case 5:\n case 6:\n case 7: {\n matchResult = 2;\n break;\n }\n case 1: {\n matchResult = 0;\n v_2 = reason.fields[1];\n break;\n }\n case 2: {\n matchResult = 0;\n v_2 = reason.fields[1];\n break;\n }\n default: {\n matchResult = 0;\n v_2 = reason.fields[1];\n }\n }\n switch (matchResult) {\n case 0:\n if (v_2 == null) {\n return undefined;\n }\n else {\n void (_this_1.errors.push(error));\n return defaultOf();\n }\n case 1:\n return undefined;\n default: {\n void (_this_1.errors.push(error));\n return defaultOf();\n }\n }\n }\n else {\n return some(matchValue.fields[0]);\n }\n },\n }));\n }\n get Required() {\n const __ = this;\n return __.required;\n }\n get Optional() {\n const __ = this;\n return __.optional;\n }\n}\n\nexport function Getters$1_$reflection(gen0) {\n return class_type(\"Thoth.Json.Decode.Getters`1\", [gen0], Getters$1);\n}\n\nexport function Getters$1_$ctor_4A51B60E(path, v) {\n return new Getters$1(path, v);\n}\n\nexport function Getters$1__get_Errors(__) {\n return toList(__.errors);\n}\n\nexport function object(builder, path, v) {\n const getters = Getters$1_$ctor_4A51B60E(path, v);\n const result = builder(getters);\n const matchValue = Getters$1__get_Errors(getters);\n if (!isEmpty(matchValue)) {\n const errors = matchValue;\n if (length(errors) > 1) {\n return new FSharpResult$2(1, [[path, new ErrorReason(7, [map_1((tupledArg) => errorToString(tupledArg[0], tupledArg[1]), errors)])]]);\n }\n else {\n return new FSharpResult$2(1, [head_1(matchValue)]);\n }\n }\n else {\n return new FSharpResult$2(0, [result]);\n }\n}\n\nexport function tuple2(decoder1, decoder2) {\n let decoder_3;\n const decoder = decoder1;\n decoder_3 = ((path) => ((value_1) => index(0, decoder, path, value_1)));\n return (path_3) => ((value_4) => andThen(uncurry3((v1) => {\n let decoder_2;\n const decoder_1 = decoder2;\n decoder_2 = ((path_1) => ((value_2) => index(1, decoder_1, path_1, value_2)));\n return (path_2) => ((value_3) => andThen((v2, arg10$0040, arg20$0040) => succeed([v1, v2], arg10$0040, arg20$0040), uncurry2(decoder_2), path_2, value_3));\n }), uncurry2(decoder_3), path_3, value_4));\n}\n\nexport function tuple3(decoder1, decoder2, decoder3) {\n let decoder_5;\n const decoder = decoder1;\n decoder_5 = ((path) => ((value_1) => index(0, decoder, path, value_1)));\n return (path_5) => ((value_6) => andThen(uncurry3((v1) => {\n let decoder_4;\n const decoder_1 = decoder2;\n decoder_4 = ((path_1) => ((value_2) => index(1, decoder_1, path_1, value_2)));\n return (path_4) => ((value_5) => andThen(uncurry3((v2) => {\n let decoder_3;\n const decoder_2 = decoder3;\n decoder_3 = ((path_2) => ((value_3) => index(2, decoder_2, path_2, value_3)));\n return (path_3) => ((value_4) => andThen((v3, arg10$0040, arg20$0040) => succeed([v1, v2, v3], arg10$0040, arg20$0040), uncurry2(decoder_3), path_3, value_4));\n }), uncurry2(decoder_4), path_4, value_5));\n }), uncurry2(decoder_5), path_5, value_6));\n}\n\nexport function tuple4(decoder1, decoder2, decoder3, decoder4) {\n let decoder_7;\n const decoder = decoder1;\n decoder_7 = ((path) => ((value_1) => index(0, decoder, path, value_1)));\n return (path_7) => ((value_8) => andThen(uncurry3((v1) => {\n let decoder_6;\n const decoder_1 = decoder2;\n decoder_6 = ((path_1) => ((value_2) => index(1, decoder_1, path_1, value_2)));\n return (path_6) => ((value_7) => andThen(uncurry3((v2) => {\n let decoder_5;\n const decoder_2 = decoder3;\n decoder_5 = ((path_2) => ((value_3) => index(2, decoder_2, path_2, value_3)));\n return (path_5) => ((value_6) => andThen(uncurry3((v3) => {\n let decoder_4;\n const decoder_3 = decoder4;\n decoder_4 = ((path_3) => ((value_4) => index(3, decoder_3, path_3, value_4)));\n return (path_4) => ((value_5) => andThen((v4, arg10$0040, arg20$0040) => succeed([v1, v2, v3, v4], arg10$0040, arg20$0040), uncurry2(decoder_4), path_4, value_5));\n }), uncurry2(decoder_5), path_5, value_6));\n }), uncurry2(decoder_6), path_6, value_7));\n }), uncurry2(decoder_7), path_7, value_8));\n}\n\nexport function tuple5(decoder1, decoder2, decoder3, decoder4, decoder5) {\n let decoder_9;\n const decoder = decoder1;\n decoder_9 = ((path) => ((value_1) => index(0, decoder, path, value_1)));\n return (path_9) => ((value_10) => andThen(uncurry3((v1) => {\n let decoder_8;\n const decoder_1 = decoder2;\n decoder_8 = ((path_1) => ((value_2) => index(1, decoder_1, path_1, value_2)));\n return (path_8) => ((value_9) => andThen(uncurry3((v2) => {\n let decoder_7;\n const decoder_2 = decoder3;\n decoder_7 = ((path_2) => ((value_3) => index(2, decoder_2, path_2, value_3)));\n return (path_7) => ((value_8) => andThen(uncurry3((v3) => {\n let decoder_6;\n const decoder_3 = decoder4;\n decoder_6 = ((path_3) => ((value_4) => index(3, decoder_3, path_3, value_4)));\n return (path_6) => ((value_7) => andThen(uncurry3((v4) => {\n let decoder_5;\n const decoder_4 = decoder5;\n decoder_5 = ((path_4) => ((value_5) => index(4, decoder_4, path_4, value_5)));\n return (path_5) => ((value_6) => andThen((v5, arg10$0040, arg20$0040) => succeed([v1, v2, v3, v4, v5], arg10$0040, arg20$0040), uncurry2(decoder_5), path_5, value_6));\n }), uncurry2(decoder_6), path_6, value_7));\n }), uncurry2(decoder_7), path_7, value_8));\n }), uncurry2(decoder_8), path_8, value_9));\n }), uncurry2(decoder_9), path_9, value_10));\n}\n\nexport function tuple6(decoder1, decoder2, decoder3, decoder4, decoder5, decoder6) {\n let decoder_11;\n const decoder = decoder1;\n decoder_11 = ((path) => ((value_1) => index(0, decoder, path, value_1)));\n return (path_11) => ((value_12) => andThen(uncurry3((v1) => {\n let decoder_10;\n const decoder_1 = decoder2;\n decoder_10 = ((path_1) => ((value_2) => index(1, decoder_1, path_1, value_2)));\n return (path_10) => ((value_11) => andThen(uncurry3((v2) => {\n let decoder_9;\n const decoder_2 = decoder3;\n decoder_9 = ((path_2) => ((value_3) => index(2, decoder_2, path_2, value_3)));\n return (path_9) => ((value_10) => andThen(uncurry3((v3) => {\n let decoder_8;\n const decoder_3 = decoder4;\n decoder_8 = ((path_3) => ((value_4) => index(3, decoder_3, path_3, value_4)));\n return (path_8) => ((value_9) => andThen(uncurry3((v4) => {\n let decoder_7;\n const decoder_4 = decoder5;\n decoder_7 = ((path_4) => ((value_5) => index(4, decoder_4, path_4, value_5)));\n return (path_7) => ((value_8) => andThen(uncurry3((v5) => {\n let decoder_6;\n const decoder_5 = decoder6;\n decoder_6 = ((path_5) => ((value_6) => index(5, decoder_5, path_5, value_6)));\n return (path_6) => ((value_7) => andThen((v6, arg10$0040, arg20$0040) => succeed([v1, v2, v3, v4, v5, v6], arg10$0040, arg20$0040), uncurry2(decoder_6), path_6, value_7));\n }), uncurry2(decoder_7), path_7, value_8));\n }), uncurry2(decoder_8), path_8, value_9));\n }), uncurry2(decoder_9), path_9, value_10));\n }), uncurry2(decoder_10), path_10, value_11));\n }), uncurry2(decoder_11), path_11, value_12));\n}\n\nexport function tuple7(decoder1, decoder2, decoder3, decoder4, decoder5, decoder6, decoder7) {\n let decoder_13;\n const decoder = decoder1;\n decoder_13 = ((path) => ((value_1) => index(0, decoder, path, value_1)));\n return (path_13) => ((value_14) => andThen(uncurry3((v1) => {\n let decoder_12;\n const decoder_1 = decoder2;\n decoder_12 = ((path_1) => ((value_2) => index(1, decoder_1, path_1, value_2)));\n return (path_12) => ((value_13) => andThen(uncurry3((v2) => {\n let decoder_11;\n const decoder_2 = decoder3;\n decoder_11 = ((path_2) => ((value_3) => index(2, decoder_2, path_2, value_3)));\n return (path_11) => ((value_12) => andThen(uncurry3((v3) => {\n let decoder_10;\n const decoder_3 = decoder4;\n decoder_10 = ((path_3) => ((value_4) => index(3, decoder_3, path_3, value_4)));\n return (path_10) => ((value_11) => andThen(uncurry3((v4) => {\n let decoder_9;\n const decoder_4 = decoder5;\n decoder_9 = ((path_4) => ((value_5) => index(4, decoder_4, path_4, value_5)));\n return (path_9) => ((value_10) => andThen(uncurry3((v5) => {\n let decoder_8;\n const decoder_5 = decoder6;\n decoder_8 = ((path_5) => ((value_6) => index(5, decoder_5, path_5, value_6)));\n return (path_8) => ((value_9) => andThen(uncurry3((v6) => {\n let decoder_7;\n const decoder_6 = decoder7;\n decoder_7 = ((path_6) => ((value_7) => index(6, decoder_6, path_6, value_7)));\n return (path_7) => ((value_8) => andThen((v7, arg10$0040, arg20$0040) => succeed([v1, v2, v3, v4, v5, v6, v7], arg10$0040, arg20$0040), uncurry2(decoder_7), path_7, value_8));\n }), uncurry2(decoder_8), path_8, value_9));\n }), uncurry2(decoder_9), path_9, value_10));\n }), uncurry2(decoder_10), path_10, value_11));\n }), uncurry2(decoder_11), path_11, value_12));\n }), uncurry2(decoder_12), path_12, value_13));\n }), uncurry2(decoder_13), path_13, value_14));\n}\n\nexport function tuple8(decoder1, decoder2, decoder3, decoder4, decoder5, decoder6, decoder7, decoder8) {\n let decoder_15;\n const decoder = decoder1;\n decoder_15 = ((path) => ((value_1) => index(0, decoder, path, value_1)));\n return (path_15) => ((value_16) => andThen(uncurry3((v1) => {\n let decoder_14;\n const decoder_1 = decoder2;\n decoder_14 = ((path_1) => ((value_2) => index(1, decoder_1, path_1, value_2)));\n return (path_14) => ((value_15) => andThen(uncurry3((v2) => {\n let decoder_13;\n const decoder_2 = decoder3;\n decoder_13 = ((path_2) => ((value_3) => index(2, decoder_2, path_2, value_3)));\n return (path_13) => ((value_14) => andThen(uncurry3((v3) => {\n let decoder_12;\n const decoder_3 = decoder4;\n decoder_12 = ((path_3) => ((value_4) => index(3, decoder_3, path_3, value_4)));\n return (path_12) => ((value_13) => andThen(uncurry3((v4) => {\n let decoder_11;\n const decoder_4 = decoder5;\n decoder_11 = ((path_4) => ((value_5) => index(4, decoder_4, path_4, value_5)));\n return (path_11) => ((value_12) => andThen(uncurry3((v5) => {\n let decoder_10;\n const decoder_5 = decoder6;\n decoder_10 = ((path_5) => ((value_6) => index(5, decoder_5, path_5, value_6)));\n return (path_10) => ((value_11) => andThen(uncurry3((v6) => {\n let decoder_9;\n const decoder_6 = decoder7;\n decoder_9 = ((path_6) => ((value_7) => index(6, decoder_6, path_6, value_7)));\n return (path_9) => ((value_10) => andThen(uncurry3((v7) => {\n let decoder_8;\n const decoder_7 = decoder8;\n decoder_8 = ((path_7) => ((value_8) => index(7, decoder_7, path_7, value_8)));\n return (path_8) => ((value_9) => andThen((v8, arg10$0040, arg20$0040) => succeed([v1, v2, v3, v4, v5, v6, v7, v8], arg10$0040, arg20$0040), uncurry2(decoder_8), path_8, value_9));\n }), uncurry2(decoder_9), path_9, value_10));\n }), uncurry2(decoder_10), path_10, value_11));\n }), uncurry2(decoder_11), path_11, value_12));\n }), uncurry2(decoder_12), path_12, value_13));\n }), uncurry2(decoder_13), path_13, value_14));\n }), uncurry2(decoder_14), path_14, value_15));\n }), uncurry2(decoder_15), path_15, value_16));\n}\n\nfunction toMap(xs) {\n return ofSeq_1(xs, {\n Compare: compare,\n });\n}\n\nfunction toSet(xs) {\n return ofSeq_2(xs, {\n Compare: compare,\n });\n}\n\nfunction autoObject(decoderInfos, path, value_1) {\n if (!(value_1 === null ? false : (Object.getPrototypeOf(value_1 || false) === Object.prototype))) {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"an object\", value_1])]]);\n }\n else {\n return foldBack((tupledArg, acc) => {\n const name = tupledArg[0];\n if (acc.tag === 0) {\n return Result_Map((v) => cons(v, acc.fields[0]), tupledArg[1]((path + \".\") + name)(value_1[name]));\n }\n else {\n return acc;\n }\n }, decoderInfos, new FSharpResult$2(0, [empty()]));\n }\n}\n\nfunction autoObject2(keyDecoder, valueDecoder, path, value_1) {\n if (!(value_1 === null ? false : (Object.getPrototypeOf(value_1 || false) === Object.prototype))) {\n return new FSharpResult$2(1, [[path, new ErrorReason(0, [\"an object\", value_1])]]);\n }\n else {\n return fold_2((acc, name) => {\n if (acc.tag === 0) {\n const matchValue = keyDecoder(path, name);\n if (matchValue.tag === 0) {\n const _arg = valueDecoder((path + \".\") + name, value_1[name]);\n if (_arg.tag === 0) {\n return new FSharpResult$2(0, [cons([matchValue.fields[0], _arg.fields[0]], acc.fields[0])]);\n }\n else {\n return new FSharpResult$2(1, [_arg.fields[0]]);\n }\n }\n else {\n return new FSharpResult$2(1, [matchValue.fields[0]]);\n }\n }\n else {\n return acc;\n }\n }, new FSharpResult$2(0, [empty()]), Object.keys(value_1));\n }\n}\n\nfunction mixedArray(msg, decoders, path, values) {\n let arg, arg_2;\n if (decoders.length !== values.length) {\n return new FSharpResult$2(1, [[path, new ErrorReason(6, [(arg = (decoders.length | 0), (arg_2 = (values.length | 0), toText(printf(\"Expected %i %s but got %i\"))(arg)(msg)(arg_2)))])]]);\n }\n else {\n return foldBack2((value_1, decoder, acc) => {\n if (acc.tag === 0) {\n return Result_Map((v) => cons(v, acc.fields[0]), decoder(path)(value_1));\n }\n else {\n return acc;\n }\n }, values, decoders, new FSharpResult$2(0, [empty()]));\n }\n}\n\nfunction makeUnion(extra, caseStrategy, t, name, path, values) {\n const uci = tryFind((x) => (name_3(x) === name), getUnionCases(t, true));\n if (uci != null) {\n const uci_1 = uci;\n if (values.length === 0) {\n return new FSharpResult$2(0, [makeUnion_1(uci_1, [], true)]);\n }\n else {\n return Result_Map((values_1) => makeUnion_1(uci_1, toArray(values_1), true), mixedArray(\"union fields\", map_2((fi) => autoDecoder(extra, caseStrategy, false, fi[1]), getUnionCaseFields(uci_1)), path, values));\n }\n }\n else {\n return new FSharpResult$2(1, [[path, new ErrorReason(6, [((\"Cannot find case \" + name) + \" in \") + fullName(t)])]]);\n }\n}\n\nfunction autoDecodeRecordsAndUnions(extra, caseStrategy, isOptional, t) {\n let arg;\n const decoderRef = new FSharpRef(defaultOf());\n const extra_1 = add(fullName(t), decoderRef, extra);\n let decoder;\n if (isRecord(t, true)) {\n const decoders = map_2((fi) => [Util_Casing_convert(caseStrategy, name_3(fi)), autoDecoder(extra_1, caseStrategy, false, fi[1])], getRecordElements(t, true));\n decoder = ((path) => ((value_1) => Result_Map((xs) => makeRecord(t, toArray(xs), true), autoObject(decoders, path, value_1))));\n }\n else if (isUnion(t, true)) {\n decoder = ((path_1) => ((value_2) => {\n if (typeof value_2 === \"string\") {\n return makeUnion(extra_1, caseStrategy, t, value_2, path_1, []);\n }\n else if (Array.isArray(value_2)) {\n const values = value_2;\n return makeUnion(extra_1, caseStrategy, t, item(0, values), path_1, values.slice(1, values.length));\n }\n else {\n return new FSharpResult$2(1, [[path_1, new ErrorReason(0, [\"a string or array\", value_2])]]);\n }\n }));\n }\n else if (isOptional) {\n decoder = ((path_2) => ((value_3) => (new FSharpResult$2(1, [[path_2, new ErrorReason(2, [\"an extra coder for \" + fullName(t), value_3])]]))));\n }\n else {\n throw new Error((arg = fullName(t), toText(printf(\"Cannot generate auto decoder for %s. Please pass an extra decoder.\"))(arg)));\n }\n decoderRef.contents = decoder;\n return decoder;\n}\n\nfunction autoDecoder(extra, caseStrategy, isOptional, t) {\n let decoder_13, decoder_14, decoder_15;\n const fullname = fullName(t);\n const matchValue = tryFind_1(fullname, extra);\n if (matchValue == null) {\n if (isArray(t)) {\n const decoder = autoDecoder(extra, caseStrategy, false, getElementType(t));\n return (path_1) => ((value_2) => array(uncurry2(decoder), path_1, value_2));\n }\n else if (isEnum(t)) {\n const enumType = fullName(getEnumUnderlyingType(t));\n switch (enumType) {\n case \"System.SByte\":\n return (path_2) => ((value_4) => {\n const t_2 = t;\n const path_3 = path_2;\n const value_5 = value_4;\n const matchValue_1 = sbyte(path_3)(value_5);\n if (matchValue_1.tag === 1) {\n return new FSharpResult$2(1, [matchValue_1.fields[0]]);\n }\n else {\n const enumValue = matchValue_1.fields[0] | 0;\n return contains(enumValue, getEnumValues(t_2), {\n Equals: (x, y) => (x === y),\n GetHashCode: numberHash,\n }) ? (new FSharpResult$2(0, [parseEnum(t_2, enumValue.toString())])) : (new FSharpResult$2(1, [[path_3, new ErrorReason(1, [fullName(t_2), value_5, \"Unkown value provided for the enum\"])]]));\n }\n });\n case \"System.Byte\":\n return (path_4) => ((value_7) => {\n const t_3 = t;\n const path_5 = path_4;\n const value_8 = value_7;\n const matchValue_2 = byte(path_5)(value_8);\n if (matchValue_2.tag === 1) {\n return new FSharpResult$2(1, [matchValue_2.fields[0]]);\n }\n else {\n const enumValue_1 = matchValue_2.fields[0];\n return contains(enumValue_1, getEnumValues(t_3), {\n Equals: (x_1, y_1) => (x_1 === y_1),\n GetHashCode: numberHash,\n }) ? (new FSharpResult$2(0, [parseEnum(t_3, enumValue_1.toString())])) : (new FSharpResult$2(1, [[path_5, new ErrorReason(1, [fullName(t_3), value_8, \"Unkown value provided for the enum\"])]]));\n }\n });\n case \"System.Int16\":\n return (path_6) => ((value_10) => {\n const t_4 = t;\n const path_7 = path_6;\n const value_11 = value_10;\n const matchValue_3 = int16(path_7)(value_11);\n if (matchValue_3.tag === 1) {\n return new FSharpResult$2(1, [matchValue_3.fields[0]]);\n }\n else {\n const enumValue_2 = matchValue_3.fields[0] | 0;\n return contains(enumValue_2, getEnumValues(t_4), {\n Equals: (x_2, y_2) => (x_2 === y_2),\n GetHashCode: numberHash,\n }) ? (new FSharpResult$2(0, [parseEnum(t_4, int16ToString(enumValue_2))])) : (new FSharpResult$2(1, [[path_7, new ErrorReason(1, [fullName(t_4), value_11, \"Unkown value provided for the enum\"])]]));\n }\n });\n case \"System.UInt16\":\n return (path_8) => ((value_13) => {\n const t_5 = t;\n const path_9 = path_8;\n const value_14 = value_13;\n const matchValue_4 = uint16(path_9)(value_14);\n if (matchValue_4.tag === 1) {\n return new FSharpResult$2(1, [matchValue_4.fields[0]]);\n }\n else {\n const enumValue_3 = matchValue_4.fields[0];\n return contains(enumValue_3, getEnumValues(t_5), {\n Equals: (x_3, y_3) => (x_3 === y_3),\n GetHashCode: numberHash,\n }) ? (new FSharpResult$2(0, [parseEnum(t_5, enumValue_3.toString())])) : (new FSharpResult$2(1, [[path_9, new ErrorReason(1, [fullName(t_5), value_14, \"Unkown value provided for the enum\"])]]));\n }\n });\n case \"System.Int32\":\n return (path_10) => ((value_16) => {\n const t_6 = t;\n const path_11 = path_10;\n const value_17 = value_16;\n const matchValue_5 = int(path_11)(value_17);\n if (matchValue_5.tag === 1) {\n return new FSharpResult$2(1, [matchValue_5.fields[0]]);\n }\n else {\n const enumValue_4 = matchValue_5.fields[0] | 0;\n return contains(enumValue_4, getEnumValues(t_6), {\n Equals: (x_4, y_4) => (x_4 === y_4),\n GetHashCode: numberHash,\n }) ? (new FSharpResult$2(0, [parseEnum(t_6, int32ToString(enumValue_4))])) : (new FSharpResult$2(1, [[path_11, new ErrorReason(1, [fullName(t_6), value_17, \"Unkown value provided for the enum\"])]]));\n }\n });\n case \"System.UInt32\":\n return (path_12) => ((value_19) => {\n const t_7 = t;\n const path_13 = path_12;\n const value_20 = value_19;\n const matchValue_6 = uint32(path_13)(value_20);\n if (matchValue_6.tag === 1) {\n return new FSharpResult$2(1, [matchValue_6.fields[0]]);\n }\n else {\n const enumValue_5 = matchValue_6.fields[0];\n return contains(enumValue_5, getEnumValues(t_7), {\n Equals: (x_5, y_5) => (x_5 === y_5),\n GetHashCode: numberHash,\n }) ? (new FSharpResult$2(0, [parseEnum(t_7, enumValue_5.toString())])) : (new FSharpResult$2(1, [[path_13, new ErrorReason(1, [fullName(t_7), value_20, \"Unkown value provided for the enum\"])]]));\n }\n });\n default: {\n const arg = fullName(t);\n const clo_1 = toFail(printf(\"Cannot generate auto decoder for %s.\\nThoth.Json.Net only support the folluwing enum types:\\n- sbyte\\n- byte\\n- int16\\n- uint16\\n- int\\n- uint32\\nIf you can\\'t use one of these types, please pass an extra decoder.\\n \"))(arg);\n return (arg_1) => {\n const clo_2 = clo_1(arg_1);\n return clo_2;\n };\n }\n }\n }\n else if (isGenericType(t)) {\n if (isTuple(t)) {\n const decoders = map_2((t_8) => autoDecoder(extra, caseStrategy, false, t_8), getTupleElements(t));\n return (path_14) => ((value_21) => (Array.isArray(value_21) ? Result_Map((xs) => makeTuple(toArray(xs), t), mixedArray(\"tuple elements\", decoders, path_14, value_21)) : (new FSharpResult$2(1, [[path_14, new ErrorReason(0, [\"an array\", value_21])]]))));\n }\n else {\n const fullname_1 = fullName(getGenericTypeDefinition(t));\n switch (fullname_1) {\n case \"Microsoft.FSharp.Core.FSharpOption`1[System.Object]\":\n return (decoder_13 = autoDecoder(extra, caseStrategy, true, item(0, getGenerics(t))), (path_15) => ((value_22) => option(uncurry2(decoder_13), path_15, value_22)));\n case \"Microsoft.FSharp.Collections.FSharpList`1[System.Object]\":\n return (decoder_14 = autoDecoder(extra, caseStrategy, false, item(0, getGenerics(t))), (path_16) => ((value_23) => list(uncurry2(decoder_14), path_16, value_23)));\n case \"Microsoft.FSharp.Collections.FSharpMap`2[System.Object,System.Object]\": {\n const keyDecoder = autoDecoder(extra, caseStrategy, false, item(0, getGenerics(t)));\n const valueDecoder = autoDecoder(extra, caseStrategy, false, item(1, getGenerics(t)));\n let d_18;\n const decoders_1 = ofArray([(path_17) => ((value_24) => autoObject2(uncurry2(keyDecoder), uncurry2(valueDecoder), path_17, value_24)), (decoder_15 = tuple2(uncurry2(keyDecoder), uncurry2(valueDecoder)), (path_18) => ((value_25) => list(uncurry2(decoder_15), path_18, value_25)))]);\n d_18 = ((path_19) => ((value_26) => oneOf(decoders_1, path_19, value_26)));\n return (path_20) => ((value_28) => map(toMap, uncurry2(d_18), path_20, value_28));\n }\n case \"Microsoft.FSharp.Collections.FSharpSet`1[System.Object]\": {\n const decoder_16 = autoDecoder(extra, caseStrategy, false, item(0, getGenerics(t)));\n return (path_21) => ((value_29) => {\n const matchValue_7 = array(uncurry2(decoder_16), path_21, value_29);\n return (matchValue_7.tag === 0) ? (new FSharpResult$2(0, [toSet(matchValue_7.fields[0])])) : (new FSharpResult$2(1, [matchValue_7.fields[0]]));\n });\n }\n default:\n return autoDecodeRecordsAndUnions(extra, caseStrategy, isOptional, t);\n }\n }\n }\n else {\n switch (fullname) {\n case \"System.Boolean\":\n return (path_22) => ((value_31) => bool(path_22, value_31));\n case \"Microsoft.FSharp.Core.Unit\":\n return (path_23) => ((value_32) => unit(path_23, value_32));\n case \"System.String\":\n return (path_24) => ((value_33) => string(path_24, value_33));\n case \"System.SByte\":\n return sbyte;\n case \"System.Byte\":\n return byte;\n case \"System.Int16\":\n return int16;\n case \"System.UInt16\":\n return uint16;\n case \"System.Int32\":\n return int;\n case \"System.UInt32\":\n return uint32;\n case \"System.Double\":\n return (path_25) => ((value_34) => float(path_25, value_34));\n case \"System.Single\":\n return (path_26) => ((value_35) => float32(path_26, value_35));\n case \"System.DateTime\":\n return (path_27) => ((value_36) => datetime(path_27, value_36));\n case \"System.DateTimeOffset\":\n return (path_28) => ((value_37) => datetimeOffset(path_28, value_37));\n case \"System.TimeSpan\":\n return (path_29) => ((value_38) => timespan(path_29, value_38));\n case \"System.Guid\":\n return (path_30) => ((value_39) => guid(path_30, value_39));\n case \"System.Object\":\n return (_arg_6) => ((v) => (new FSharpResult$2(0, [v])));\n default:\n return autoDecodeRecordsAndUnions(extra, caseStrategy, isOptional, t);\n }\n }\n }\n else {\n const decoderRef = matchValue;\n return (path) => ((value_1) => decoderRef.contents(path)(value_1));\n }\n}\n\nfunction makeExtra(extra) {\n if (extra != null) {\n return map_3((_arg, tupledArg) => (new FSharpRef(tupledArg[1])), extra.Coders);\n }\n else {\n return empty_1({\n Compare: comparePrimitives,\n });\n }\n}\n\nexport class Auto {\n constructor() {\n }\n}\n\nexport function Auto_$reflection() {\n return class_type(\"Thoth.Json.Decode.Auto\", undefined, Auto);\n}\n\nexport function Auto_generateBoxedDecoderCached_Z6670B51(t, caseStrategy, extra) {\n let y_1, y;\n const caseStrategy_1 = defaultArg(caseStrategy, new CaseStrategy(0, []));\n return Util_Cache$1__GetOrAdd_43981464(Util_CachedDecoders, (y_1 = ((y = fullName(t), toString_12(caseStrategy_1) + y)), defaultArg(map_4((e) => e.Hash, extra), \"\") + y_1), () => autoDecoder(makeExtra(extra), caseStrategy_1, false, t));\n}\n\nexport function Auto_generateBoxedDecoder_Z6670B51(t, caseStrategy, extra) {\n const caseStrategy_1 = defaultArg(caseStrategy, new CaseStrategy(0, []));\n return autoDecoder(makeExtra(extra), caseStrategy_1, false, t);\n}\n\n","import { createElement } from \"react\";\nimport { fromFlatEntries } from \"./Flatten.js\";\n\nexport const MuiHelpers_reactElement = createElement;\n\nexport const MuiHelpers_reactElementTag = createElement;\n\nexport function MuiHelpers_createElement(el, properties) {\n return MuiHelpers_reactElement(el, fromFlatEntries(properties));\n}\n\nexport function MuiHelpers_createElementTag(tag, properties) {\n return MuiHelpers_reactElementTag(tag, fromFlatEntries(properties));\n}\n\n","import { substring } from \"../fable_modules/fable-library-js.4.17.0/String.js\";\nimport { disposeSafe, getEnumerator } from \"../fable_modules/fable-library-js.4.17.0/Util.js\";\n\nexport function fromFlatEntries(kvs) {\n const setProperty = (target_mut, key_mut, value_mut) => {\n setProperty:\n while (true) {\n const target = target_mut, key = key_mut, value = value_mut;\n const matchValue = key.indexOf(\".\") | 0;\n if (matchValue === -1) {\n target[key] = value;\n }\n else {\n const sepIdx = matchValue | 0;\n const topKey = substring(key, 0, sepIdx);\n const nestedKey = substring(key, sepIdx + 1);\n if (target[topKey] === undefined) {\n target[topKey] = {};\n }\n target_mut = target[topKey];\n key_mut = nestedKey;\n value_mut = value;\n continue setProperty;\n }\n break;\n }\n };\n const target_1 = {};\n const enumerator = getEnumerator(kvs);\n try {\n while (enumerator[\"System.Collections.IEnumerator.MoveNext\"]()) {\n const forLoopVar = enumerator[\"System.Collections.Generic.IEnumerator`1.get_Current\"]();\n setProperty(target_1, forLoopVar[0], forLoopVar[1]);\n }\n }\n finally {\n disposeSafe(enumerator);\n }\n return target_1;\n}\n\n","import { split } from \"./fable_modules/fable-library-js.4.17.0/String.js\";\nimport { item } from \"./fable_modules/fable-library-js.4.17.0/Array.js\";\nimport { createElement } from \"react\";\nimport React from \"react\";\nimport { equals, createObj } from \"./fable_modules/fable-library-js.4.17.0/Util.js\";\nimport { Interop_reactApi } from \"./fable_modules/Feliz.2.7.0/Interop.fs.js\";\nimport { ofArray } from \"./fable_modules/fable-library-js.4.17.0/List.js\";\nimport { defaultOf } from \"./fable_modules/fable-library-js.4.17.0/Util.js\";\nimport { React_createDisposable_3A5B6456, useReact_useEffect_Z5ECA432F, useReact_useRef_1505, useReact_useEffectOnce_3A5B6456 } from \"./fable_modules/Feliz.2.7.0/React.fs.js\";\nimport { PromiseBuilder__Delay_62FBFDE1, PromiseBuilder__Run_212F1D4B } from \"./fable_modules/Fable.Promise.2.0.0/Promise.fs.js\";\nimport { promise } from \"./fable_modules/Fable.Promise.2.0.0/PromiseImpl.fs.js\";\n\nexport function validateEmail(x) {\n const l = x.length > 5;\n const at = x.indexOf(\"@\") >= 0;\n const dot = x.indexOf(\".\") >= 0;\n const splitted = split(x, [\"@\"], undefined, 0);\n if (splitted.length > 1) {\n if (((((l && at) && dot) && (item(1, splitted).length > 2)) && (item(0, splitted).length > 0)) && (item(1, splitted).indexOf(\".\") >= 0)) {\n return !(((x.indexOf(\",\") >= 0) ? true : (x.indexOf(\"\\'\") >= 0)) ? true : (x.indexOf(\"\\\\\") >= 0));\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n}\n\nexport function Alert_alert(msg, onClose) {\n let elems;\n return createElement(\"div\", createObj(ofArray([[\"className\", \"alert-error\"], [\"onClick\", (_arg) => {\n onClose();\n }], (elems = [createElement(\"span\", {\n children: [msg],\n })], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems))])])));\n}\n\nexport function Alert_errorAlert(errMsg, dismiss) {\n if (errMsg != null) {\n return Alert_alert(errMsg, dismiss);\n }\n else {\n return defaultOf();\n }\n}\n\nexport function Alert_SnackError(alert_SnackErrorInputProps) {\n let elems;\n const dismiss = alert_SnackErrorInputProps.dismiss;\n const errMsg = alert_SnackErrorInputProps.errMsg;\n useReact_useEffectOnce_3A5B6456(() => {\n const pr = PromiseBuilder__Run_212F1D4B(promise, PromiseBuilder__Delay_62FBFDE1(promise, () => ((new Promise(resolve => setTimeout(resolve, 10000))).then(() => {\n dismiss();\n return Promise.resolve();\n }))));\n pr.then();\n });\n return createElement(\"div\", createObj(ofArray([[\"className\", \"snackbar\"], [\"onClick\", (_arg_2) => {\n dismiss();\n }], (elems = [Alert_alert(errMsg, dismiss)], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems))])])));\n}\n\nexport function Alert_snackError(errMsg, dismiss) {\n if (errMsg != null) {\n const errMsg_1 = errMsg;\n return createElement(Alert_SnackError, {\n errMsg: errMsg_1,\n dismiss: dismiss,\n });\n }\n else {\n return defaultOf();\n }\n}\n\nexport function LoadingIndicator_loadingIndicatorSmall() {\n return createElement(\"div\", {\n className: \"loading\",\n style: {\n width: 20,\n height: 20,\n },\n });\n}\n\nexport function LoadingIndicator_loadingIndicator() {\n return createElement(\"div\", {\n className: \"loading\",\n style: {\n width: 30,\n height: 30,\n },\n });\n}\n\nexport function LoadingIndicator_loadingIndicatorLarge() {\n return createElement(\"div\", {\n className: \"loading\",\n style: {\n width: 40,\n height: 40,\n },\n });\n}\n\nexport function Dialog_dialogTitle(txt) {\n let elems;\n return createElement(\"div\", createObj(ofArray([[\"style\", {\n display: \"flex\",\n gap: 20 + \"px \",\n alignItems: \"center\",\n }], (elems = [createElement(\"span\", {\n style: {\n fontSize: 1.2 + \"rem\",\n fontWeight: 500,\n },\n children: txt,\n })], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems))])])));\n}\n\nexport function Dialog_dialogContent(children) {\n return createElement(\"div\", {\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: ((20 + \"px \") + 20) + \"px\",\n },\n children: Interop_reactApi.Children.toArray(Array.from(children)),\n });\n}\n\nexport function Dialog_dialogActions(children) {\n return createElement(\"div\", {\n style: {\n display: \"flex\",\n gap: 20 + \"px \",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n children: Interop_reactApi.Children.toArray(Array.from(children)),\n });\n}\n\nexport function Dialog_Dialog(dialog_DialogInputProps) {\n let elems_1;\n const children = dialog_DialogInputProps.children;\n const onClose = dialog_DialogInputProps.onClose;\n const ref = useReact_useRef_1505(undefined);\n const closeEffect = (event) => {\n onClose();\n };\n useReact_useEffect_Z5ECA432F(() => {\n window.addEventListener(\"onclick\", closeEffect);\n return React_createDisposable_3A5B6456(() => {\n window.removeEventListener(\"onclick\", closeEffect);\n });\n });\n return createElement(\"div\", createObj(ofArray([[\"ref\", ref], [\"className\", \"dialog-backdrop\"], [\"onClick\", (event_1) => {\n if (equals(event_1.target, ref.current)) {\n window.removeEventListener(\"onclick\", closeEffect);\n onClose();\n }\n }], (elems_1 = [createElement(\"div\", {\n className: \"dialog\",\n children: Interop_reactApi.Children.toArray(Array.from(children)),\n })], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_1))])])));\n}\n\nexport function tryFocusInput(inputId) {\n try {\n window.document.getElementById(inputId).focus();\n }\n catch (matchValue) {\n }\n}\n\n","import { makeStyles } from \"@mui/styles\";\nimport { useTheme, createTheme, responsiveFontSizes } from \"@mui/material/styles\";\nimport { class_type } from \"../fable_modules/fable-library-js.4.17.0/Reflection.js\";\nimport { createObj } from \"../fable_modules/fable-library-js.4.17.0/Util.js\";\n\nexport const StyleImports_makeStyles_get = makeStyles;\n\nexport const StyleImports_makeStyles_getWithOpts = makeStyles;\n\nexport const StyleImports_makeStyles_obj = makeStyles;\n\nexport const StyleImports_makeStyles_objWithOpts = makeStyles;\n\nexport const StyleImports_responsiveFontSizes = responsiveFontSizes;\n\nexport const StyleImports_responsiveFontSizes_opts = responsiveFontSizes;\n\nexport const StyleImports_createTheme_argsArray = createTheme;\n\nexport const StyleImports_createTheme_unit = createTheme;\n\nexport const StyleImports_useTheme = useTheme;\n\nexport class StyleCreator$1 {\n constructor() {\n }\n}\n\nexport function StyleCreator$1_$reflection(gen0) {\n return class_type(\"Feliz.MaterialUI.StyleCreator`1\", [gen0], StyleCreator$1);\n}\n\nexport function StyleCreator$1_$ctor() {\n return new StyleCreator$1();\n}\n\n/**\n * Use with `makeStyles` etc. when returning an (anonymous) record of style\n * properties or functions. Simply unboxes the input to `string` (which it is\n * at runtime when returned by the JSS styling solution), so that the\n * properties can be used in `className` and `classes` props.\n */\nexport function StyleCreator$1__create_4EAC9E1E(_, styles) {\n return createObj(styles);\n}\n\n/**\n * Use with `makeStyles` etc. when returning an (anonymous) record of style\n * properties or functions. Simply unboxes the input to `string` (which it is\n * at runtime when returned by the JSS styling solution), so that the\n * properties can be used in `className` and `classes` props.\n */\nexport function StyleCreator$1__create_A7D96BD(_, getStyles) {\n return (arg_1) => createObj(getStyles(arg_1));\n}\n\n","import { Interop_reactApi } from \"./fable_modules/Feliz.2.7.0/Interop.fs.js\";\nimport react_google_recaptcha from \"react-google-recaptcha\";\nimport { createObj } from \"./fable_modules/fable-library-js.4.17.0/Util.js\";\n\nexport function recaptchaContainer(props) {\n return Interop_reactApi.createElement(react_google_recaptcha, createObj(props));\n}\n\n","import { Record, Union } from \"./fable_modules/fable-library-js.4.17.0/Types.js\";\nimport { option_type, int32_type, obj_type, record_type, lambda_type, unit_type, bool_type, union_type, string_type } from \"./fable_modules/fable-library-js.4.17.0/Reflection.js\";\nimport { GenericResponse_$reflection } from \"./Types.js\";\nimport { FetchError, FetchError_$reflection } from \"./fable_modules/Thoth.Fetch.3.0.1/Fetch.fs.js\";\nimport { FSharpResult$2 } from \"./fable_modules/fable-library-js.4.17.0/Result.js\";\nimport { Alert_snackError, LoadingIndicator_loadingIndicatorSmall, tryFocusInput, Dialog_dialogActions, Dialog_dialogContent, Dialog_dialogTitle, Dialog_Dialog, validateEmail } from \"./ViewHelpers.js\";\nimport { PromiseBuilder__Delay_62FBFDE1, PromiseBuilder__Run_212F1D4B } from \"./fable_modules/Fable.Promise.2.0.0/Promise.fs.js\";\nimport { promise } from \"./fable_modules/Fable.Promise.2.0.0/PromiseImpl.fs.js\";\nimport { Auto_generateBoxedEncoderCached_437914C6, Auto_generateBoxedEncoder_437914C6 } from \"./fable_modules/Thoth.Json.6.0.0/Encode.fs.js\";\nimport { Auto_generateBoxedDecoderCached_Z6670B51, Auto_generateBoxedDecoder_Z6670B51 } from \"./fable_modules/Thoth.Json.6.0.0/Decode.fs.js\";\nimport { unwrap, map, defaultArg, some } from \"./fable_modules/fable-library-js.4.17.0/Option.js\";\nimport { PromiseBuilder__Delay_62FBFDE1 as PromiseBuilder__Delay_62FBFDE1_1, PromiseBuilder__Run_212F1D4B as PromiseBuilder__Run_212F1D4B_1 } from \"./fable_modules/Fable.Promise.2.0.0/Promise.fs.js\";\nimport { promise as promise_1 } from \"./fable_modules/Fable.Promise.2.0.0/PromiseImpl.fs.js\";\nimport { Helper_fetch, Helper_withContentTypeJson, Helper_withProperties } from \"./fable_modules/Thoth.Fetch.3.0.1/Fetch.fs.js\";\nimport { Types_RequestProperties } from \"./fable_modules/Fable.Fetch.2.1.0/Fetch.fs.js\";\nimport { cons, ofArray, empty, singleton } from \"./fable_modules/fable-library-js.4.17.0/List.js\";\nimport { keyValueList } from \"./fable_modules/fable-library-js.4.17.0/MapUtil.js\";\nimport { toString } from \"./fable_modules/Thoth.Json.6.0.0/Encode.fs.js\";\nimport { fromString } from \"./fable_modules/Thoth.Json.6.0.0/Decode.fs.js\";\nimport { equals, createObj, uncurry2 } from \"./fable_modules/fable-library-js.4.17.0/Util.js\";\nimport { createElement } from \"react\";\nimport React from \"react\";\nimport * as react from \"react\";\nimport { StyleCreator$1_$ctor, StyleImports_makeStyles_get } from \"./Feliz.MaterialUI/Styles.js\";\nimport { StyleCreator$1__create_4EAC9E1E } from \"./Feliz.MaterialUI/Styles.js\";\nimport { MuiHelpers_createElement } from \"./Feliz.MaterialUI/Mui.js\";\nimport { Paper, TextField } from \"@mui/material\";\nimport { empty as empty_1, singleton as singleton_1, append, delay, toList } from \"./fable_modules/fable-library-js.4.17.0/Seq.js\";\nimport { Interop_reactApi } from \"./fable_modules/Feliz.2.7.0/Interop.fs.js\";\nimport { useReact_useReducer_2B9E6EA0, useFeliz_React__React_useState_Static_1505 } from \"./fable_modules/Feliz.2.7.0/React.fs.js\";\nimport { recaptchaContainer } from \"./Recaptcha.js\";\n\nclass PasswordRecoveryForm_Step extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"EmailStep\", \"RecaptchaStep\", \"FailedStep\", \"CompletedStep\"];\n }\n}\n\nfunction PasswordRecoveryForm_Step_$reflection() {\n return union_type(\"PasswordRecovery.PasswordRecoveryForm.Step\", [], PasswordRecoveryForm_Step, () => [[], [], [[\"Item\", string_type]], []]);\n}\n\nclass PasswordRecoveryForm_Model extends Record {\n constructor(Email, CurrentStep, ValidEmail, Processing, OnClose) {\n super();\n this.Email = Email;\n this.CurrentStep = CurrentStep;\n this.ValidEmail = ValidEmail;\n this.Processing = Processing;\n this.OnClose = OnClose;\n }\n}\n\nfunction PasswordRecoveryForm_Model_$reflection() {\n return record_type(\"PasswordRecovery.PasswordRecoveryForm.Model\", [], PasswordRecoveryForm_Model, () => [[\"Email\", string_type], [\"CurrentStep\", PasswordRecoveryForm_Step_$reflection()], [\"ValidEmail\", bool_type], [\"Processing\", bool_type], [\"OnClose\", lambda_type(unit_type, unit_type)]]);\n}\n\nclass PasswordRecoveryForm_Message extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"UpdateEmail\", \"GotoStep\", \"InvalidateEmail\", \"Commit\", \"ResetResponse\", \"SetError\", \"DismissError\"];\n }\n}\n\nfunction PasswordRecoveryForm_Message_$reflection() {\n return union_type(\"PasswordRecovery.PasswordRecoveryForm.Message\", [], PasswordRecoveryForm_Message, () => [[[\"Item\", string_type]], [[\"Item\", PasswordRecoveryForm_Step_$reflection()]], [], [], [[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [GenericResponse_$reflection(), FetchError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", GenericResponse_$reflection()]], [[\"ErrorValue\", FetchError_$reflection()]]])]], [[\"Item\", string_type]], []]);\n}\n\nfunction PasswordRecoveryForm_init(x) {\n return new PasswordRecoveryForm_Model(\"\", new PasswordRecoveryForm_Step(0, []), true, false, x);\n}\n\nfunction PasswordRecoveryForm_update(model, msg) {\n switch (msg.tag) {\n case 1:\n return new PasswordRecoveryForm_Model(model.Email, msg.fields[0], model.ValidEmail, model.Processing, model.OnClose);\n case 2:\n return new PasswordRecoveryForm_Model(model.Email, model.CurrentStep, false, model.Processing, model.OnClose);\n case 3:\n if (validateEmail(model.Email)) {\n return new PasswordRecoveryForm_Model(model.Email, model.CurrentStep, true, true, model.OnClose);\n }\n else {\n return new PasswordRecoveryForm_Model(model.Email, model.CurrentStep, false, model.Processing, model.OnClose);\n }\n case 4: {\n const res = msg.fields[0];\n if (res.tag === 1) {\n return new PasswordRecoveryForm_Model(model.Email, new PasswordRecoveryForm_Step(2, [\"Kunne ikke forespørre tilbakestilling av passord. Vennligst prøv igjen senere.\"]), model.ValidEmail, false, model.OnClose);\n }\n else {\n const x_2 = res.fields[0];\n if (x_2.Result === \"success\") {\n return new PasswordRecoveryForm_Model(model.Email, new PasswordRecoveryForm_Step(3, []), model.ValidEmail, model.Processing, model.OnClose);\n }\n else {\n return new PasswordRecoveryForm_Model(model.Email, new PasswordRecoveryForm_Step(2, [x_2.Message]), model.ValidEmail, false, model.OnClose);\n }\n }\n }\n case 5:\n return new PasswordRecoveryForm_Model(model.Email, new PasswordRecoveryForm_Step(2, [msg.fields[0]]), model.ValidEmail, model.Processing, model.OnClose);\n case 6:\n return new PasswordRecoveryForm_Model(model.Email, new PasswordRecoveryForm_Step(0, []), model.ValidEmail, model.Processing, model.OnClose);\n default:\n return new PasswordRecoveryForm_Model(msg.fields[0], model.CurrentStep, model.ValidEmail, model.Processing, model.OnClose);\n }\n}\n\nfunction PasswordRecoveryForm_requestReset(email, dispatch) {\n const pr_1 = PromiseBuilder__Run_212F1D4B(promise, PromiseBuilder__Delay_62FBFDE1(promise, () => {\n let body, decoder, data_1, caseStrategy_3, extra_3;\n return ((body = Auto_generateBoxedEncoder_437914C6(string_type, undefined, undefined, undefined)(email), (decoder = Auto_generateBoxedDecoder_Z6670B51(GenericResponse_$reflection(), undefined, undefined), (data_1 = some(body), (caseStrategy_3 = undefined, (extra_3 = undefined, (() => {\n let properties_2;\n try {\n const properties_3 = Helper_withProperties(singleton(new Types_RequestProperties(3, [\"cors\"])), (properties_2 = ofArray([new Types_RequestProperties(0, [\"POST\"]), new Types_RequestProperties(1, [keyValueList(Helper_withContentTypeJson(data_1, empty()), 0)])]), defaultArg(map((data_1_1) => cons(new Types_RequestProperties(2, [toString(0, Auto_generateBoxedEncoderCached_437914C6(obj_type, caseStrategy_3, extra_3)(data_1_1))]), properties_2), data_1), properties_2)));\n const pr = PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Helper_fetch(\"/api/account/request-recovery\", properties_3).then((_arg) => {\n let response_1, decoder_1_1;\n return ((response_1 = _arg, (decoder_1_1 = defaultArg(decoder, Auto_generateBoxedDecoderCached_Z6670B51(GenericResponse_$reflection(), unwrap(caseStrategy_3), unwrap(extra_3))), PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (((response_1.ok) ? PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (response_1.text().then((_arg_1) => {\n let matchValue;\n return Promise.resolve((matchValue = fromString(uncurry2(decoder_1_1), _arg_1), (matchValue.tag === 1) ? (new FSharpResult$2(1, [new FetchError(1, [matchValue.fields[0]])])) : (new FSharpResult$2(0, [matchValue.fields[0]]))));\n })))) : (Promise.resolve(new FSharpResult$2(1, [new FetchError(2, [response_1])])))).then((_arg_1_1) => (Promise.resolve(_arg_1_1)))))))));\n }))));\n return pr.then(void 0, ((arg) => (new FSharpResult$2(1, [new FetchError(3, [arg])]))));\n }\n catch (exn) {\n return PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Promise.resolve(new FSharpResult$2(1, [new FetchError(0, [exn])])))));\n }\n })())))))).then((_arg_2) => {\n dispatch(new PasswordRecoveryForm_Message(4, [_arg_2]));\n return Promise.resolve();\n });\n }));\n pr_1.then();\n}\n\nfunction PasswordRecoveryForm_requested(model) {\n return createElement(\"p\", {\n children: [`Tilbakestilling av passord ble forespurt for ${model.Email}. Om det eksisterer en brukerkonto med denne e-post adressen vil du motta en e-post med instruksjoner for hvordan du kan sette ett nytt passord.`],\n });\n}\n\nfunction PasswordRecoveryForm_failed(errMsg) {\n return createElement(\"p\", {\n children: [errMsg],\n });\n}\n\nconst PasswordRecoveryForm_useStyles = StyleImports_makeStyles_get((() => {\n let f1;\n const styles = StyleCreator$1_$ctor();\n f1 = ((theme) => ({\n paper: StyleCreator$1__create_4EAC9E1E(styles, singleton([\"backgroundColor\", \"var(--bg-main)\"])),\n }));\n return (arg) => {\n const o = f1(arg);\n return Object.assign({}, o);\n };\n})());\n\nfunction PasswordRecoveryForm_emailStep(model, dispatch) {\n const children = ofArray([createElement(\"p\", {\n children: [\"Forespør passordtilbakestilling ved å skrive inn e-post tilhørende brukerkonto\"],\n }), MuiHelpers_createElement(TextField, toList(delay(() => append(singleton_1([\"id\", \"recovery-email\"]), delay(() => append(singleton_1([\"defaultValue\", model.Email]), delay(() => append(singleton_1([\"error\", !model.ValidEmail]), delay(() => append(!model.ValidEmail ? singleton_1([\"helperText\", \"Invalid email\"]) : empty_1(), delay(() => append(singleton_1([\"onChange\", (e) => {\n dispatch(new PasswordRecoveryForm_Message(0, [e.target.value]));\n }]), delay(() => append(singleton_1([\"variant\", \"outlined\"]), delay(() => append(singleton_1([\"autoFocus\", true]), delay(() => append(singleton_1([\"label\", \"E-post adresse\"]), delay(() => append(singleton_1([\"type\", \"email\"]), delay(() => singleton_1([\"fullWidth\", true]))))))))))))))))))))))]);\n return createElement(\"div\", {\n children: Interop_reactApi.Children.toArray(Array.from(children)),\n });\n}\n\nfunction PasswordRecoveryForm_requestRecaptcha(passwordRecoveryForm_requestRecaptchaInputProps) {\n let elems;\n const dispatch = passwordRecoveryForm_requestRecaptchaInputProps.dispatch;\n const model = passwordRecoveryForm_requestRecaptchaInputProps.model;\n const patternInput = useFeliz_React__React_useState_Static_1505(false);\n return createElement(\"div\", createObj(ofArray([[\"style\", {\n minWidth: 300,\n }], (elems = [recaptchaContainer([[\"sitekey\", \"6Lfptv8mAAAAAOjwVLP08rOqUO0zDXpcQ4kvDCul\"], [\"onChange\", (s) => {\n if (s == null) {\n }\n else {\n const dispatch_1 = dispatch;\n const pr_1 = PromiseBuilder__Run_212F1D4B(promise, PromiseBuilder__Delay_62FBFDE1(promise, () => {\n let body, decoder, data_1, caseStrategy_3, extra_3;\n return ((body = Auto_generateBoxedEncoder_437914C6(string_type, undefined, undefined, undefined)(s), (decoder = Auto_generateBoxedDecoder_Z6670B51(GenericResponse_$reflection(), undefined, undefined), (data_1 = some(body), (caseStrategy_3 = undefined, (extra_3 = undefined, (() => {\n let properties_2;\n try {\n const properties_3 = Helper_withProperties(singleton(new Types_RequestProperties(3, [\"cors\"])), (properties_2 = ofArray([new Types_RequestProperties(0, [\"POST\"]), new Types_RequestProperties(1, [keyValueList(Helper_withContentTypeJson(data_1, empty()), 0)])]), defaultArg(map((data_1_1) => cons(new Types_RequestProperties(2, [toString(0, Auto_generateBoxedEncoderCached_437914C6(obj_type, caseStrategy_3, extra_3)(data_1_1))]), properties_2), data_1), properties_2)));\n const pr = PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Helper_fetch(\"/api/recaptcha\", properties_3).then((_arg) => {\n let response_1, decoder_1_1;\n return ((response_1 = _arg, (decoder_1_1 = defaultArg(decoder, Auto_generateBoxedDecoderCached_Z6670B51(GenericResponse_$reflection(), unwrap(caseStrategy_3), unwrap(extra_3))), PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (((response_1.ok) ? PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (response_1.text().then((_arg_1) => {\n let matchValue;\n return Promise.resolve((matchValue = fromString(uncurry2(decoder_1_1), _arg_1), (matchValue.tag === 1) ? (new FSharpResult$2(1, [new FetchError(1, [matchValue.fields[0]])])) : (new FSharpResult$2(0, [matchValue.fields[0]]))));\n })))) : (Promise.resolve(new FSharpResult$2(1, [new FetchError(2, [response_1])])))).then((_arg_1_1) => (Promise.resolve(_arg_1_1)))))))));\n }))));\n return pr.then(void 0, ((arg) => (new FSharpResult$2(1, [new FetchError(3, [arg])]))));\n }\n catch (exn) {\n return PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Promise.resolve(new FSharpResult$2(1, [new FetchError(0, [exn])])))));\n }\n })())))))).then((_arg_2) => {\n const res = _arg_2;\n if (res.tag === 1) {\n dispatch_1(new PasswordRecoveryForm_Message(5, [\"Kunne ikke starte tilbakestilling av passord. Vennligst prøv igjen senere.\"]));\n return Promise.resolve();\n }\n else {\n const x_1 = res.fields[0];\n if (x_1.Result === \"success\") {\n PasswordRecoveryForm_requestReset(model.Email, dispatch_1);\n return Promise.resolve();\n }\n else {\n dispatch_1(new PasswordRecoveryForm_Message(5, [x_1.Message]));\n return Promise.resolve();\n }\n }\n });\n }));\n pr_1.then();\n }\n }], [\"theme\", \"dark\"]])], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems))])])));\n}\n\nexport function PasswordRecoveryForm_PasswordRecoveryForm(passwordRecoveryForm_PasswordRecoveryFormInputProps) {\n const onClose = passwordRecoveryForm_PasswordRecoveryFormInputProps.onClose;\n const patternInput = useReact_useReducer_2B9E6EA0(PasswordRecoveryForm_update, PasswordRecoveryForm_init(onClose));\n const model_1 = patternInput[0];\n const dispatch = patternInput[1];\n const s = PasswordRecoveryForm_useStyles();\n return createElement(Dialog_Dialog, {\n onClose: () => {\n model_1.OnClose();\n },\n children: ofArray([Dialog_dialogTitle(\"Glemt passord\"), Dialog_dialogContent(toList(delay(() => {\n const matchValue = model_1.CurrentStep;\n return (matchValue.tag === 1) ? singleton_1(createElement(PasswordRecoveryForm_requestRecaptcha, {\n model: model_1,\n dispatch: dispatch,\n })) : ((matchValue.tag === 2) ? singleton_1(PasswordRecoveryForm_failed(matchValue.fields[0])) : ((matchValue.tag === 3) ? singleton_1(PasswordRecoveryForm_requested(model_1)) : singleton_1(PasswordRecoveryForm_emailStep(model_1, dispatch))));\n }))), Dialog_dialogActions(toList(delay(() => append(singleton_1(createElement(\"button\", {\n className: \"pill-button-small\",\n onClick: (_arg_1) => {\n model_1.OnClose();\n },\n children: \"Lukk\",\n })), delay(() => (equals(model_1.CurrentStep, new PasswordRecoveryForm_Step(0, [])) ? singleton_1(createElement(\"button\", {\n disabled: model_1.Email.length === 0,\n className: \"pill-button-small\",\n onClick: (_arg_2) => {\n if (validateEmail(model_1.Email)) {\n dispatch(new PasswordRecoveryForm_Message(1, [new PasswordRecoveryForm_Step(1, [])]));\n }\n else {\n dispatch(new PasswordRecoveryForm_Message(2, []));\n }\n },\n children: \"Neste\",\n })) : empty_1()))))))]),\n });\n}\n\nclass Model extends Record {\n constructor(Reference, UserId, NewPassword, RepeatPassword, Completed, Processing, ErrorMsg) {\n super();\n this.Reference = Reference;\n this.UserId = (UserId | 0);\n this.NewPassword = NewPassword;\n this.RepeatPassword = RepeatPassword;\n this.Completed = Completed;\n this.Processing = Processing;\n this.ErrorMsg = ErrorMsg;\n }\n}\n\nfunction Model_$reflection() {\n return record_type(\"PasswordRecovery.Model\", [], Model, () => [[\"Reference\", string_type], [\"UserId\", int32_type], [\"NewPassword\", string_type], [\"RepeatPassword\", string_type], [\"Completed\", bool_type], [\"Processing\", bool_type], [\"ErrorMsg\", option_type(string_type)]]);\n}\n\nclass Message extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"UpdateNew\", \"UpdateRepeat\", \"Commit\", \"UpdateResponse\", \"DismissError\"];\n }\n}\n\nfunction Message_$reflection() {\n return union_type(\"PasswordRecovery.Message\", [], Message, () => [[[\"Item\", string_type]], [[\"Item\", string_type]], [], [[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [GenericResponse_$reflection(), FetchError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", GenericResponse_$reflection()]], [[\"ErrorValue\", FetchError_$reflection()]]])]], []]);\n}\n\nfunction init(x, y) {\n return new Model(x, y, \"\", \"\", false, false, undefined);\n}\n\nfunction update(model, msg) {\n switch (msg.tag) {\n case 1:\n return new Model(model.Reference, model.UserId, model.NewPassword, msg.fields[0], model.Completed, model.Processing, model.ErrorMsg);\n case 2: {\n const validNew = model.NewPassword.length >= 8;\n if (validNew && (model.NewPassword === model.RepeatPassword)) {\n return new Model(model.Reference, model.UserId, model.NewPassword, model.RepeatPassword, model.Completed, true, undefined);\n }\n else if (!validNew) {\n return new Model(model.Reference, model.UserId, model.NewPassword, model.RepeatPassword, model.Completed, model.Processing, `Nytt passord må være minst ${8} tegn langt.`);\n }\n else {\n return new Model(model.Reference, model.UserId, model.NewPassword, model.RepeatPassword, model.Completed, model.Processing, \"Passord er ikke like.\");\n }\n }\n case 3: {\n const res = msg.fields[0];\n if (res.tag === 1) {\n return new Model(model.Reference, model.UserId, model.NewPassword, model.RepeatPassword, model.Completed, false, \"Kunne ikke sette nytt passord. Vennligst prøv igjen senere.\");\n }\n else {\n const x_2 = res.fields[0];\n if (x_2.Result === \"success\") {\n return new Model(model.Reference, model.UserId, model.NewPassword, model.RepeatPassword, true, model.Processing, model.ErrorMsg);\n }\n else {\n return new Model(model.Reference, model.UserId, model.NewPassword, model.RepeatPassword, model.Completed, false, x_2.Message);\n }\n }\n }\n case 4:\n return new Model(model.Reference, model.UserId, model.NewPassword, model.RepeatPassword, model.Completed, model.Processing, undefined);\n default:\n return new Model(model.Reference, model.UserId, msg.fields[0], model.RepeatPassword, model.Completed, model.Processing, model.ErrorMsg);\n }\n}\n\nfunction trySetPassword(reference, userId, newPassword, repeat, dispatch) {\n const pr_1 = PromiseBuilder__Run_212F1D4B(promise, PromiseBuilder__Delay_62FBFDE1(promise, () => {\n let body, decoder, data_1, caseStrategy_3, extra_3;\n dispatch(new Message(2, []));\n return ((newPassword.length >= 8) && (newPassword === repeat)) ? (((body = Auto_generateBoxedEncoder_437914C6(string_type, undefined, undefined, undefined)(newPassword), (decoder = Auto_generateBoxedDecoder_Z6670B51(GenericResponse_$reflection(), undefined, undefined), (data_1 = some(body), (caseStrategy_3 = undefined, (extra_3 = undefined, (() => {\n let properties_2;\n try {\n const properties_3 = Helper_withProperties(singleton(new Types_RequestProperties(3, [\"cors\"])), (properties_2 = ofArray([new Types_RequestProperties(0, [\"POST\"]), new Types_RequestProperties(1, [keyValueList(Helper_withContentTypeJson(data_1, empty()), 0)])]), defaultArg(map((data_1_1) => cons(new Types_RequestProperties(2, [toString(0, Auto_generateBoxedEncoderCached_437914C6(obj_type, caseStrategy_3, extra_3)(data_1_1))]), properties_2), data_1), properties_2)));\n const pr = PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Helper_fetch(`/api/account/password-recovery/${reference}?uid=${userId}`, properties_3).then((_arg) => {\n let response_1, decoder_1_1;\n return ((response_1 = _arg, (decoder_1_1 = defaultArg(decoder, Auto_generateBoxedDecoderCached_Z6670B51(GenericResponse_$reflection(), unwrap(caseStrategy_3), unwrap(extra_3))), PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (((response_1.ok) ? PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (response_1.text().then((_arg_1) => {\n let matchValue;\n return Promise.resolve((matchValue = fromString(uncurry2(decoder_1_1), _arg_1), (matchValue.tag === 1) ? (new FSharpResult$2(1, [new FetchError(1, [matchValue.fields[0]])])) : (new FSharpResult$2(0, [matchValue.fields[0]]))));\n })))) : (Promise.resolve(new FSharpResult$2(1, [new FetchError(2, [response_1])])))).then((_arg_1_1) => (Promise.resolve(_arg_1_1)))))))));\n }))));\n return pr.then(void 0, ((arg) => (new FSharpResult$2(1, [new FetchError(3, [arg])]))));\n }\n catch (exn) {\n return PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Promise.resolve(new FSharpResult$2(1, [new FetchError(0, [exn])])))));\n }\n })())))))).then((_arg_2) => {\n dispatch(new Message(3, [_arg_2]));\n return Promise.resolve();\n })) : (Promise.resolve());\n }));\n pr_1.then();\n}\n\nfunction newPasswordForm(model, dispatch) {\n let elems_1, elems, elems_2;\n const xs_4 = ofArray([createElement(\"span\", {\n style: {\n textAlign: \"center\",\n marginTop: 3 + \"vh\",\n },\n className: \"title is-4\",\n children: \"Sett nytt passord\",\n }), MuiHelpers_createElement(TextField, [[\"id\", \"password-field\"], [\"variant\", \"outlined\"], [\"label\", \"Nytt passord\"], [\"type\", \"password\"], [\"onChange\", (e) => {\n dispatch(new Message(0, [e.target.value]));\n }], [\"onKeyDown\", (e_1) => {\n if (e_1.code === \"Enter\") {\n tryFocusInput(\"repeat-field\");\n }\n }], [\"style\", {\n marginTop: 20 + \"px\",\n marginBottom: 20 + \"px\",\n minWidth: 250 + \"px\",\n }]]), MuiHelpers_createElement(TextField, [[\"id\", \"repeat-field\"], [\"variant\", \"outlined\"], [\"label\", \"Gjenta nytt passord\"], [\"type\", \"password\"], [\"onChange\", (e_2) => {\n dispatch(new Message(1, [e_2.target.value]));\n }], [\"style\", {\n marginTop: 20 + \"px\",\n marginBottom: 20 + \"px\",\n minWidth: 250 + \"px\",\n }]]), createElement(\"div\", createObj(ofArray([[\"style\", {\n textAlign: \"center\",\n }], (elems_1 = [createElement(\"button\", createObj(ofArray([[\"className\", \"pill-button\"], [\"style\", {\n maxWidth: 250 + \"px\",\n }], [\"onClick\", (_arg) => {\n if (!model.Processing) {\n trySetPassword(model.Reference, model.UserId, model.NewPassword, model.RepeatPassword, dispatch);\n }\n }], (elems = toList(delay(() => (model.Processing ? singleton_1(LoadingIndicator_loadingIndicatorSmall()) : singleton_1(\"Sett nytt passord\")))), [\"children\", Interop_reactApi.Children.toArray(Array.from(elems))])])))], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_1))])]))), createElement(\"div\", createObj(ofArray([[\"style\", {\n marginTop: 20 + \"px\",\n minHeight: 80 + \"px\",\n }], (elems_2 = [Alert_snackError(model.ErrorMsg, () => {\n dispatch(new Message(4, []));\n })], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_2))])])))]);\n return react.createElement(react.Fragment, {}, ...xs_4);\n}\n\nfunction completedView() {\n let elems;\n return createElement(\"div\", createObj(ofArray([[\"style\", {\n textAlign: \"center\",\n marginTop: 3 + \"vh\",\n }], (elems = [createElement(\"span\", {\n className: \"title is-4\",\n children: \"Passord oppdatert\",\n })], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems))])])));\n}\n\nexport function PasswordRecovery(passwordRecoveryInputProps) {\n let elems_1, elements;\n const userId = passwordRecoveryInputProps.userId;\n const reference = passwordRecoveryInputProps.reference;\n const patternInput = useReact_useReducer_2B9E6EA0(update, init(reference, userId));\n const model_1 = patternInput[0];\n return createElement(\"div\", createObj(ofArray([[\"style\", {\n display: \"flex\",\n justifyContent: \"center\",\n padding: 10,\n }], (elems_1 = [MuiHelpers_createElement(Paper, [[\"style\", {\n padding: 2 + \"vw\",\n display: \"flex\",\n flexDirection: \"column\",\n marginTop: 5 + \"vh\",\n maxWidth: 500,\n }], (elements = toList(delay(() => (model_1.Completed ? singleton_1(completedView()) : singleton_1(newPasswordForm(model_1, patternInput[1]))))), [\"children\", Interop_reactApi.Children.toArray(Array.from(elements))])])], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_1))])])));\n}\n\n","import { Record, Union } from \"./fable_modules/fable-library-js.4.17.0/Types.js\";\nimport { anonRecord_type, obj_type, record_type, bool_type, union_type, option_type, string_type } from \"./fable_modules/fable-library-js.4.17.0/Reflection.js\";\nimport { AppleAuthRequest_$reflection, AppleAuthRequest, GenericResponse_$reflection, OAuthRegisterRequest_$reflection, OAuthRegisterRequest, OAuthAuthResponse_$reflection, LoginRequest_$reflection, LoginRequest, LoginResponse_$reflection } from \"./Types.js\";\nimport { FetchError, FetchError_$reflection } from \"./fable_modules/Thoth.Fetch.3.0.1/Fetch.fs.js\";\nimport { FSharpResult$2 } from \"./fable_modules/fable-library-js.4.17.0/Result.js\";\nimport { toString, utcNow, op_Subtraction, parse, toUniversalTime } from \"./fable_modules/fable-library-js.4.17.0/Date.js\";\nimport { days } from \"./fable_modules/fable-library-js.4.17.0/TimeSpan.js\";\nimport { printf, toText } from \"./fable_modules/fable-library-js.4.17.0/String.js\";\nimport { PromiseBuilder__Delay_62FBFDE1, PromiseBuilder__Run_212F1D4B } from \"./fable_modules/Fable.Promise.2.0.0/Promise.fs.js\";\nimport { promise } from \"./fable_modules/Fable.Promise.2.0.0/PromiseImpl.fs.js\";\nimport { Auto_generateBoxedEncoderCached_437914C6, Auto_generateBoxedEncoder_437914C6 } from \"./fable_modules/Thoth.Json.6.0.0/Encode.fs.js\";\nimport { Auto_generateBoxedDecoderCached_Z6670B51, Auto_generateBoxedDecoder_Z6670B51 } from \"./fable_modules/Thoth.Json.6.0.0/Decode.fs.js\";\nimport { unwrap, map, defaultArg, some } from \"./fable_modules/fable-library-js.4.17.0/Option.js\";\nimport { PromiseBuilder__Delay_62FBFDE1 as PromiseBuilder__Delay_62FBFDE1_1, PromiseBuilder__Run_212F1D4B as PromiseBuilder__Run_212F1D4B_1 } from \"./fable_modules/Fable.Promise.2.0.0/Promise.fs.js\";\nimport { promise as promise_1 } from \"./fable_modules/Fable.Promise.2.0.0/PromiseImpl.fs.js\";\nimport { Helper_fetch, Helper_withContentTypeJson, Helper_withProperties } from \"./fable_modules/Thoth.Fetch.3.0.1/Fetch.fs.js\";\nimport { Types_RequestProperties } from \"./fable_modules/Fable.Fetch.2.1.0/Fetch.fs.js\";\nimport { cons, ofArray, empty, singleton } from \"./fable_modules/fable-library-js.4.17.0/List.js\";\nimport { keyValueList } from \"./fable_modules/fable-library-js.4.17.0/MapUtil.js\";\nimport { toString as toString_1 } from \"./fable_modules/Thoth.Json.6.0.0/Encode.fs.js\";\nimport { fromString } from \"./fable_modules/Thoth.Json.6.0.0/Decode.fs.js\";\nimport { equals, createObj, uncurry2 } from \"./fable_modules/fable-library-js.4.17.0/Util.js\";\nimport { createElement } from \"react\";\nimport React from \"react\";\nimport { empty as empty_1, singleton as singleton_1, append, delay, toList } from \"./fable_modules/fable-library-js.4.17.0/Seq.js\";\nimport { Interop_reactApi } from \"./fable_modules/Feliz.2.7.0/Interop.fs.js\";\nimport { useFeliz_React__React_useState_Static_1505, useReact_useReducer_2B9E6EA0 } from \"./fable_modules/Feliz.2.7.0/React.fs.js\";\nimport { MuiHelpers_createElement } from \"./Feliz.MaterialUI/Mui.js\";\nimport { Checkbox, FormControlLabel, TextField } from \"@mui/material\";\nimport { Alert_snackError, LoadingIndicator_loadingIndicatorSmall, tryFocusInput } from \"./ViewHelpers.js\";\nimport { PasswordRecoveryForm_PasswordRecoveryForm } from \"./PasswordRecovery.js\";\nimport { Interop_reactApi as Interop_reactApi_1 } from \"./fable_modules/Feliz.2.7.0/Interop.fs.js\";\nimport react_apple_login from \"react-apple-login\";\nimport { GoogleLogin } from \"@react-oauth/google\";\n\nclass LoginMode extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Normal\", \"Banned\"];\n }\n}\n\nfunction LoginMode_$reflection() {\n return union_type(\"Login.LoginMode\", [], LoginMode, () => [[], [[\"Item1\", option_type(string_type)], [\"Item2\", string_type]]]);\n}\n\nclass Model extends Record {\n constructor(Username, Password, Persist, ErrorMsg, ValidUsername, ValidPassword, Processing, Recover, Mode) {\n super();\n this.Username = Username;\n this.Password = Password;\n this.Persist = Persist;\n this.ErrorMsg = ErrorMsg;\n this.ValidUsername = ValidUsername;\n this.ValidPassword = ValidPassword;\n this.Processing = Processing;\n this.Recover = Recover;\n this.Mode = Mode;\n }\n}\n\nfunction Model_$reflection() {\n return record_type(\"Login.Model\", [], Model, () => [[\"Username\", string_type], [\"Password\", string_type], [\"Persist\", bool_type], [\"ErrorMsg\", option_type(string_type)], [\"ValidUsername\", bool_type], [\"ValidPassword\", bool_type], [\"Processing\", bool_type], [\"Recover\", bool_type], [\"Mode\", LoginMode_$reflection()]]);\n}\n\nclass Message extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"UpdateUsername\", \"UpdatePassword\", \"TogglePersist\", \"TryLogin\", \"LoginResponse\", \"SetError\", \"DismissError\", \"ToggleRecover\"];\n }\n}\n\nfunction Message_$reflection() {\n return union_type(\"Login.Message\", [], Message, () => [[[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [], [[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [LoginResponse_$reflection(), FetchError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", LoginResponse_$reflection()]], [[\"ErrorValue\", FetchError_$reflection()]]])]], [[\"Item\", string_type]], [], []]);\n}\n\nfunction init() {\n return new Model(\"\", \"\", true, undefined, true, true, false, false, new LoginMode(0, []));\n}\n\nfunction update(model, msg) {\n let matchValue, x_4, numDays, arg;\n switch (msg.tag) {\n case 1: {\n const x_1 = msg.fields[0];\n return new Model(model.Username, x_1, model.Persist, model.ErrorMsg, model.ValidUsername, x_1.length > 0, model.Processing, model.Recover, model.Mode);\n }\n case 2:\n return new Model(model.Username, model.Password, msg.fields[0], model.ErrorMsg, model.ValidUsername, model.ValidPassword, model.Processing, model.Recover, model.Mode);\n case 3: {\n const validUsername = model.Username.length > 0;\n const validPassword = model.Password.length > 0;\n if (validUsername && validPassword) {\n return new Model(model.Username, model.Password, model.Persist, undefined, true, true, true, model.Recover, model.Mode);\n }\n else {\n return new Model(model.Username, model.Password, model.Persist, model.ErrorMsg, validUsername, validPassword, model.Processing, model.Recover, model.Mode);\n }\n }\n case 4: {\n const res = msg.fields[0];\n if (res.tag === 0) {\n const x_3 = res.fields[0];\n switch (x_3.Result) {\n case \"success\": {\n window.location.reload(true);\n return model;\n }\n case \"banned\":\n return new Model(model.Username, model.Password, model.Persist, model.ErrorMsg, model.ValidUsername, model.ValidPassword, false, model.Recover, new LoginMode(1, [(matchValue = x_3.BanUntil, (matchValue != null) ? ((x_4 = toUniversalTime(parse(matchValue)), (numDays = (days(op_Subtraction(x_4, utcNow())) | 0), (arg = toString(x_4, \"dd/MM/yyyy\"), toText(printf(\"Til %s (%i dager igjen)\"))(arg)(numDays))))) : undefined), x_3.Message]));\n default:\n return new Model(model.Username, model.Password, model.Persist, x_3.Message, model.ValidUsername, model.ValidPassword, false, model.Recover, model.Mode);\n }\n }\n else {\n return new Model(model.Username, model.Password, model.Persist, \"Kunne ikke logge deg inn. Vennligst prøv igjen senere.\", model.ValidUsername, model.ValidPassword, false, model.Recover, model.Mode);\n }\n }\n case 5:\n return new Model(model.Username, model.Password, model.Persist, msg.fields[0], model.ValidUsername, model.ValidPassword, model.Processing, model.Recover, model.Mode);\n case 6:\n return new Model(model.Username, model.Password, model.Persist, undefined, model.ValidUsername, model.ValidPassword, model.Processing, model.Recover, model.Mode);\n case 7:\n return new Model(model.Username, model.Password, model.Persist, model.ErrorMsg, model.ValidUsername, model.ValidPassword, model.Processing, !model.Recover, model.Mode);\n default: {\n const x = msg.fields[0];\n return new Model(x, model.Password, model.Persist, model.ErrorMsg, x.length > 0, model.ValidPassword, model.Processing, model.Recover, model.Mode);\n }\n }\n}\n\nfunction tryLogin(username, password, persist, dispatch) {\n const pr_1 = PromiseBuilder__Run_212F1D4B(promise, PromiseBuilder__Delay_62FBFDE1(promise, () => {\n let body, decoder, data_1, caseStrategy_3, extra_3;\n dispatch(new Message(3, []));\n if ((username.trim().length > 0) && (password.trim().length > 0)) {\n const req = new LoginRequest(username, password, persist);\n return ((body = Auto_generateBoxedEncoder_437914C6(LoginRequest_$reflection(), undefined, undefined, undefined)(req), (decoder = Auto_generateBoxedDecoder_Z6670B51(LoginResponse_$reflection(), undefined, undefined), (data_1 = some(body), (caseStrategy_3 = undefined, (extra_3 = undefined, (() => {\n let properties_2;\n try {\n const properties_3 = Helper_withProperties(singleton(new Types_RequestProperties(3, [\"cors\"])), (properties_2 = ofArray([new Types_RequestProperties(0, [\"POST\"]), new Types_RequestProperties(1, [keyValueList(Helper_withContentTypeJson(data_1, empty()), 0)])]), defaultArg(map((data_1_1) => cons(new Types_RequestProperties(2, [toString_1(0, Auto_generateBoxedEncoderCached_437914C6(obj_type, caseStrategy_3, extra_3)(data_1_1))]), properties_2), data_1), properties_2)));\n const pr = PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Helper_fetch(\"/sign-in\", properties_3).then((_arg) => {\n let response_1, decoder_1_1;\n return ((response_1 = _arg, (decoder_1_1 = defaultArg(decoder, Auto_generateBoxedDecoderCached_Z6670B51(LoginResponse_$reflection(), unwrap(caseStrategy_3), unwrap(extra_3))), PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (((response_1.ok) ? PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (response_1.text().then((_arg_1) => {\n let matchValue;\n return Promise.resolve((matchValue = fromString(uncurry2(decoder_1_1), _arg_1), (matchValue.tag === 1) ? (new FSharpResult$2(1, [new FetchError(1, [matchValue.fields[0]])])) : (new FSharpResult$2(0, [matchValue.fields[0]]))));\n })))) : (Promise.resolve(new FSharpResult$2(1, [new FetchError(2, [response_1])])))).then((_arg_1_1) => (Promise.resolve(_arg_1_1)))))))));\n }))));\n return pr.then(void 0, ((arg) => (new FSharpResult$2(1, [new FetchError(3, [arg])]))));\n }\n catch (exn) {\n return PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Promise.resolve(new FSharpResult$2(1, [new FetchError(0, [exn])])))));\n }\n })())))))).then((_arg_2) => {\n dispatch(new Message(4, [_arg_2]));\n return Promise.resolve();\n });\n }\n else {\n return Promise.resolve();\n }\n }));\n pr_1.then();\n}\n\nfunction drawBanned(until, banReason) {\n let elems_2;\n return createElement(\"div\", createObj(ofArray([[\"style\", {\n width: 100 + \"%\",\n maxWidth: 500,\n padding: 5,\n display: \"flex\",\n flexDirection: \"column\",\n gap: ((10 + \"px \") + 0) + \"px\",\n }], (elems_2 = toList(delay(() => {\n let elems;\n return append(singleton_1(createElement(\"div\", createObj(ofArray([[\"style\", {\n padding: 5,\n textAlign: \"center\",\n borderRadius: 5,\n color: \"var(--sell)\",\n fontWeight: \"bold\",\n }], (elems = [createElement(\"span\", {\n children: [\"Denne brukeren er utestengt fra aksje.io.\"],\n })], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems))])])))), delay(() => {\n let matchValue, u, elems_1;\n return append((matchValue = until, (matchValue != null) ? ((u = matchValue, singleton_1(createElement(\"div\", createObj(ofArray([[\"style\", {\n textAlign: \"center\",\n color: \"var(--text-main)\",\n }], (elems_1 = [createElement(\"span\", {\n children: [u],\n })], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_1))])])))))) : (empty_1())), delay(() => singleton_1(createElement(\"p\", {\n style: {\n marginTop: 10,\n textAlign: \"center\",\n },\n children: banReason,\n }))));\n }));\n })), [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_2))])])));\n}\n\nexport function Login() {\n let elems_2;\n const patternInput = useReact_useReducer_2B9E6EA0(update, init());\n const model_1 = patternInput[0];\n const dispatch = patternInput[1];\n return createElement(\"form\", createObj(ofArray([[\"autoComplete\", \"on\"], [\"action\", \"#\"], [\"style\", {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }], (elems_2 = toList(delay(() => append(singleton_1(MuiHelpers_createElement(TextField, [[\"autoFocus\", true], [\"id\", \"username-field\"], [\"variant\", \"outlined\"], [\"label\", \"Brukernavn\"], [\"autoComplete\", \"username\"], [\"onChange\", (e) => {\n dispatch(new Message(0, [e.target.value]));\n }], [\"disabled\", !equals(model_1.Mode, new LoginMode(0, []))], [\"onKeyDown\", (e_1) => {\n if (e_1.code === \"Enter\") {\n e_1.preventDefault();\n tryFocusInput(\"password-field\");\n }\n }], [\"error\", !model_1.ValidUsername], [\"InputProps\", createObj(toList(delay(() => (!equals(model_1.Mode, new LoginMode(0, [])) ? singleton_1([\"style\", {\n color: \"var(--text-dim)\",\n }]) : empty_1()))))], [\"style\", {\n marginTop: 20 + \"px\",\n minWidth: 250 + \"px\",\n }]])), delay(() => append(singleton_1(MuiHelpers_createElement(TextField, [[\"id\", \"password-field\"], [\"variant\", \"outlined\"], [\"label\", \"Passord\"], [\"disabled\", !equals(model_1.Mode, new LoginMode(0, []))], [\"type\", \"password\"], [\"onChange\", (e_2) => {\n dispatch(new Message(1, [e_2.target.value]));\n }], [\"onKeyDown\", (e_3) => {\n if (e_3.code === \"Enter\") {\n e_3.preventDefault();\n tryLogin(model_1.Username, model_1.Password, model_1.Persist, dispatch);\n }\n }], [\"error\", !model_1.ValidPassword], [\"InputProps\", createObj(toList(delay(() => (!equals(model_1.Mode, new LoginMode(0, [])) ? singleton_1([\"style\", {\n color: \"var(--text-dim)\",\n }]) : empty_1()))))], [\"style\", {\n marginTop: 20 + \"px\",\n marginBottom: 20 + \"px\",\n minWidth: 250 + \"px\",\n }]])), delay(() => {\n let matchValue;\n return append((matchValue = model_1.Mode, (matchValue.tag === 1) ? singleton_1(drawBanned(matchValue.fields[0], matchValue.fields[1])) : append(singleton_1(MuiHelpers_createElement(FormControlLabel, [[\"label\", \"Hold meg innlogget\"], [\"control\", MuiHelpers_createElement(Checkbox, [[\"style\", {\n color: \"var(--text-main)\",\n }], [\"checked\", model_1.Persist], [\"onChange\", (e_4) => {\n dispatch(new Message(2, [e_4.target.checked]));\n }], [\"color\", \"primary\"]])]])), delay(() => {\n let elems;\n return append(singleton_1(createElement(\"button\", createObj(ofArray([[\"type\", \"submit\"], [\"className\", \"pill-button\"], [\"style\", {\n marginTop: 20,\n minWidth: 250,\n }], [\"onClick\", (e_5) => {\n e_5.preventDefault();\n tryLogin(model_1.Username, model_1.Password, model_1.Persist, dispatch);\n }], (elems = toList(delay(() => (model_1.Processing ? singleton_1(LoadingIndicator_loadingIndicatorSmall()) : singleton_1(\"Logg inn\")))), [\"children\", Interop_reactApi.Children.toArray(Array.from(elems))])])))), delay(() => {\n let elems_1;\n return singleton_1(createElement(\"div\", createObj(ofArray([[\"style\", {\n marginTop: 20,\n minWidth: 250 + \"px\",\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-around\",\n fontSize: 0.8 + \"rem\",\n }], (elems_1 = [createElement(\"a\", {\n href: \"/sign-up\",\n children: \"Registrer deg\",\n }), createElement(\"a\", {\n onClick: (_arg) => {\n dispatch(new Message(7, []));\n },\n children: \"Glemt passord?\",\n })], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_1))])]))));\n }));\n }))), delay(() => append(singleton_1(Alert_snackError(model_1.ErrorMsg, () => {\n dispatch(new Message(6, []));\n })), delay(() => (model_1.Recover ? singleton_1(createElement(PasswordRecoveryForm_PasswordRecoveryForm, {\n onClose: () => {\n dispatch(new Message(7, []));\n },\n })) : empty_1())))));\n })))))), [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_2))])])));\n}\n\nexport class OAuthTarget extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Google\", \"Apple\"];\n }\n}\n\nexport function OAuthTarget_$reflection() {\n return union_type(\"Login.OAuthTarget\", [], OAuthTarget, () => [[[\"Item\", OAuthAuthResponse_$reflection()]], [[\"Item\", OAuthAuthResponse_$reflection()]]]);\n}\n\nexport function OAuthRegister(oAuthRegisterInputProps) {\n let elems_2, children, elems_1;\n const target = oAuthRegisterInputProps.target;\n const patternInput = useFeliz_React__React_useState_Static_1505(\"\");\n const patternInput_1 = useFeliz_React__React_useState_Static_1505(true);\n const patternInput_2 = useFeliz_React__React_useState_Static_1505(false);\n const setProcessing = patternInput_2[1];\n const patternInput_3 = useFeliz_React__React_useState_Static_1505(undefined);\n const setErrMsg = patternInput_3[1];\n const patternInput_4 = useFeliz_React__React_useState_Static_1505(false);\n const terms = patternInput_4[0];\n const title = (target.tag === 1) ? \"Apple\" : \"Google\";\n return createElement(\"div\", createObj(ofArray([[\"style\", {\n display: \"flex\",\n flexDirection: \"column\",\n maxWidth: 515,\n gap: ((20 + \"px \") + 0) + \"px\",\n padding: 10,\n }], (elems_2 = [createElement(\"h1\", {\n style: {\n fontSize: 2 + \"rem\",\n color: \"var(--text-main)\",\n fontWeight: \"bold\",\n },\n children: `Registrer deg med ${title}-konto`,\n }), createElement(\"p\", {\n children: `Denne ${title}-kontoen og e-post adressen er ikke registrert på eksisterende aksje.io bruker. Fyll inn et brukernavn i feltet under for å komme i gang.`,\n }), MuiHelpers_createElement(TextField, [[\"autoFocus\", true], [\"id\", \"username-field\"], [\"variant\", \"outlined\"], [\"label\", \"Brukernavn\"], [\"autoComplete\", \"username\"], [\"onChange\", (e) => {\n const u = e.target.value;\n const trimmed_1 = u.trim();\n patternInput[1](trimmed_1);\n patternInput_1[1](trimmed_1.length > 0);\n }], [\"error\", !patternInput_1[0]], [\"style\", {\n minWidth: 250 + \"px\",\n }]]), createElement(\"span\", {\n children: [\"Kun brukernavnet er synlig for andre brukere på aksje.io.\"],\n }), MuiHelpers_createElement(TextField, [[\"id\", \"email-field\"], [\"variant\", \"outlined\"], [\"label\", \"E-post adresse\"], [\"type\", \"email\"], [\"disabled\", true], [\"value\", (target.tag === 1) ? target.fields[0].Email : target.fields[0].Email], [\"style\", {\n minWidth: 250 + \"px\",\n }]]), MuiHelpers_createElement(FormControlLabel, [[\"label\", (children = ofArray([\"Jeg har lest og aksepterer \", createElement(\"a\", {\n style: {\n textDecoration: \"underline\",\n },\n target: \"_blank\",\n href: \"/terms-of-use\",\n children: \"brukervilkårene\",\n })]), createElement(\"span\", {\n children: Interop_reactApi.Children.toArray(Array.from(children)),\n }))], [\"control\", MuiHelpers_createElement(Checkbox, [[\"style\", {\n color: \"var(--text-main)\",\n }], [\"checked\", terms], [\"onChange\", (e_1) => {\n patternInput_4[1](e_1.target.checked);\n }], [\"color\", \"primary\"]])]]), createElement(\"div\", createObj(ofArray([[\"style\", {\n display: \"flex\",\n justifyContent: \"center\",\n minHeight: 40,\n }], (elems_1 = toList(delay(() => {\n let elems;\n return terms ? singleton_1(createElement(\"button\", createObj(ofArray([[\"type\", \"submit\"], [\"className\", \"pill-button\"], [\"style\", {\n width: 250,\n }], [\"onClick\", (e_2) => {\n e_2.preventDefault();\n const pr_1 = PromiseBuilder__Run_212F1D4B(promise, PromiseBuilder__Delay_62FBFDE1(promise, () => {\n let body, decoder, data_1, caseStrategy_3, extra_3;\n const trimmed = patternInput[0].trim();\n if (!((trimmed.length >= 3) && (trimmed.length <= 16))) {\n setErrMsg(\"Brukernavnet må være mellom 3 og 16 tegn\");\n return Promise.resolve();\n }\n else {\n setErrMsg(undefined);\n setProcessing(true);\n const req = new OAuthRegisterRequest((target.tag === 1) ? target.fields[0].Token : target.fields[0].Token, trimmed);\n const requestPath = (target.tag === 1) ? \"/api/apple-auth/register\" : \"/api/google-auth/register\";\n return ((body = Auto_generateBoxedEncoder_437914C6(OAuthRegisterRequest_$reflection(), undefined, undefined, undefined)(req), (decoder = Auto_generateBoxedDecoder_Z6670B51(GenericResponse_$reflection(), undefined, undefined), (data_1 = some(body), (caseStrategy_3 = undefined, (extra_3 = undefined, (() => {\n let properties_2;\n try {\n const properties_3 = Helper_withProperties(singleton(new Types_RequestProperties(3, [\"cors\"])), (properties_2 = ofArray([new Types_RequestProperties(0, [\"POST\"]), new Types_RequestProperties(1, [keyValueList(Helper_withContentTypeJson(data_1, empty()), 0)])]), defaultArg(map((data_1_1) => cons(new Types_RequestProperties(2, [toString_1(0, Auto_generateBoxedEncoderCached_437914C6(obj_type, caseStrategy_3, extra_3)(data_1_1))]), properties_2), data_1), properties_2)));\n const pr = PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Helper_fetch(requestPath, properties_3).then((_arg) => {\n let response_1, decoder_1_1;\n return ((response_1 = _arg, (decoder_1_1 = defaultArg(decoder, Auto_generateBoxedDecoderCached_Z6670B51(GenericResponse_$reflection(), unwrap(caseStrategy_3), unwrap(extra_3))), PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (((response_1.ok) ? PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (response_1.text().then((_arg_1) => {\n let matchValue;\n return Promise.resolve((matchValue = fromString(uncurry2(decoder_1_1), _arg_1), (matchValue.tag === 1) ? (new FSharpResult$2(1, [new FetchError(1, [matchValue.fields[0]])])) : (new FSharpResult$2(0, [matchValue.fields[0]]))));\n })))) : (Promise.resolve(new FSharpResult$2(1, [new FetchError(2, [response_1])])))).then((_arg_1_1) => (Promise.resolve(_arg_1_1)))))))));\n }))));\n return pr.then(void 0, ((arg) => (new FSharpResult$2(1, [new FetchError(3, [arg])]))));\n }\n catch (exn) {\n return PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Promise.resolve(new FSharpResult$2(1, [new FetchError(0, [exn])])))));\n }\n })())))))).then((_arg_2) => {\n const res = _arg_2;\n if (res.tag === 0) {\n const x_1 = res.fields[0];\n if (x_1.Result === \"success\") {\n window.location.reload(true);\n return Promise.resolve();\n }\n else {\n setErrMsg(x_1.Message);\n setProcessing(false);\n return Promise.resolve();\n }\n }\n else {\n setErrMsg(\"Kunne ikke registrere bruker. Vennligst prøv igjen senere\");\n setProcessing(false);\n return Promise.resolve();\n }\n });\n }\n }));\n pr_1.then();\n }], (elems = toList(delay(() => (patternInput_2[0] ? singleton_1(LoadingIndicator_loadingIndicatorSmall()) : singleton_1(\"Registrer deg\")))), [\"children\", Interop_reactApi.Children.toArray(Array.from(elems))])])))) : empty_1();\n })), [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_1))])]))), Alert_snackError(patternInput_3[0], () => {\n setErrMsg(undefined);\n })], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_2))])])));\n}\n\nexport function AuthHolder(authHolderInputProps) {\n let elems_7;\n const authComponent = authHolderInputProps.authComponent;\n const patternInput = useFeliz_React__React_useState_Static_1505(undefined);\n const patternInput_1 = useFeliz_React__React_useState_Static_1505(undefined);\n const patternInput_2 = useFeliz_React__React_useState_Static_1505(undefined);\n const setBanned = patternInput_2[1];\n const patternInput_3 = useFeliz_React__React_useState_Static_1505(undefined);\n const setErrMsg = patternInput_3[1];\n const domain = window.location.host;\n return createElement(\"div\", createObj(ofArray([[\"className\", \"login-form\"], [\"style\", {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n }], (elems_7 = toList(delay(() => append(singleton_1(Alert_snackError(patternInput_3[0], () => {\n setErrMsg(undefined);\n })), delay(() => {\n let elems_6, elems_3, elems_2, elems_5, elems_4;\n const matchValue_5 = patternInput_2[0];\n if (matchValue_5 == null) {\n const matchValue_6 = patternInput[0];\n if (matchValue_6 == null) {\n const matchValue_7 = patternInput_1[0];\n if (matchValue_7 == null) {\n return singleton_1(createElement(\"div\", createObj(ofArray([[\"style\", {\n display: \"flex\",\n flexDirection: \"column\",\n gap: ((40 + \"px \") + 0) + \"px\",\n }], (elems_6 = [createElement(\"div\", createObj(ofArray([[\"style\", {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n marginTop: 50,\n gap: ((20 + \"px \") + 0) + \"px\",\n }], (elems_3 = [createElement(\"div\", createObj(ofArray([[\"style\", {\n padding: 2,\n }], (elems_2 = [Interop_reactApi_1.createElement(react_apple_login, {\n clientId: \"io.aksje.www\",\n redirectURI: `https://${domain}/apple-auth`,\n usePopup: true,\n callback: (res_2) => {\n console.log(some(\"apple login callback\"));\n console.log(some(res_2));\n const callback = res_2;\n const pr_1 = PromiseBuilder__Run_212F1D4B(promise, PromiseBuilder__Delay_62FBFDE1(promise, () => {\n let matchValue, body, decoder, data_1, caseStrategy_3, extra_3;\n if (callback.error == null) {\n const req = new AppleAuthRequest(callback.authorization.code, callback.authorization.id_token, (matchValue = callback.user, (matchValue != null) ? matchValue.email : undefined));\n return ((body = Auto_generateBoxedEncoder_437914C6(AppleAuthRequest_$reflection(), undefined, undefined, undefined)(req), (decoder = Auto_generateBoxedDecoder_Z6670B51(OAuthAuthResponse_$reflection(), undefined, undefined), (data_1 = some(body), (caseStrategy_3 = undefined, (extra_3 = undefined, (() => {\n let properties_2;\n try {\n const properties_3 = Helper_withProperties(singleton(new Types_RequestProperties(3, [\"cors\"])), (properties_2 = ofArray([new Types_RequestProperties(0, [\"POST\"]), new Types_RequestProperties(1, [keyValueList(Helper_withContentTypeJson(data_1, empty()), 0)])]), defaultArg(map((data_1_1) => cons(new Types_RequestProperties(2, [toString_1(0, Auto_generateBoxedEncoderCached_437914C6(obj_type, caseStrategy_3, extra_3)(data_1_1))]), properties_2), data_1), properties_2)));\n const pr = PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Helper_fetch(\"/api/apple-auth/authenticate\", properties_3).then((_arg) => {\n let response_1, decoder_1_1;\n return ((response_1 = _arg, (decoder_1_1 = defaultArg(decoder, Auto_generateBoxedDecoderCached_Z6670B51(OAuthAuthResponse_$reflection(), unwrap(caseStrategy_3), unwrap(extra_3))), PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (((response_1.ok) ? PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (response_1.text().then((_arg_1) => {\n let matchValue_1;\n return Promise.resolve((matchValue_1 = fromString(uncurry2(decoder_1_1), _arg_1), (matchValue_1.tag === 1) ? (new FSharpResult$2(1, [new FetchError(1, [matchValue_1.fields[0]])])) : (new FSharpResult$2(0, [matchValue_1.fields[0]]))));\n })))) : (Promise.resolve(new FSharpResult$2(1, [new FetchError(2, [response_1])])))).then((_arg_1_1) => (Promise.resolve(_arg_1_1)))))))));\n }))));\n return pr.then(void 0, ((arg) => (new FSharpResult$2(1, [new FetchError(3, [arg])]))));\n }\n catch (exn) {\n return PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Promise.resolve(new FSharpResult$2(1, [new FetchError(0, [exn])])))));\n }\n })())))))).then((_arg_2) => {\n let matchValue_2, x_1, numDays, arg_1;\n const res = _arg_2;\n if (res.tag === 0) {\n const r = res.fields[0];\n switch (r.Result.Result) {\n case \"success\": {\n window.location.reload(true);\n return Promise.resolve();\n }\n case \"not-exist\": {\n patternInput_1[1](r);\n return Promise.resolve();\n }\n case \"banned\": {\n setBanned([(matchValue_2 = r.Result.BanUntil, (matchValue_2 != null) ? ((x_1 = toUniversalTime(parse(matchValue_2)), (numDays = (days(op_Subtraction(x_1, utcNow())) | 0), (arg_1 = toString(x_1, \"dd/MM/yyyy\"), toText(printf(\"Til %s (%i dager igjen)\"))(arg_1)(numDays))))) : undefined), r.Result.Message]);\n return Promise.resolve();\n }\n default: {\n setErrMsg(r.Result.Message);\n return Promise.resolve();\n }\n }\n }\n else {\n setErrMsg(\"Kunne ikke logge deg inn. Vennligst prøv igjen senere.\");\n return Promise.resolve();\n }\n });\n }\n else {\n return Promise.resolve();\n }\n }));\n pr_1.then();\n },\n scope: \"email\",\n responseMode: \"query\",\n render: (renderProps) => {\n let elems_1, elems;\n return createElement(\"button\", createObj(ofArray([[\"onClick\", (_arg_7) => {\n renderProps.onClick();\n }], [\"style\", {\n backgroundColor: \"#202124\",\n color: \"#e8eaed\",\n fontSize: 15 + \"px\",\n minWidth: 190,\n maxWidth: 400,\n borderRadius: 25,\n height: 40,\n cursor: \"pointer\",\n }], (elems_1 = [createElement(\"div\", createObj(ofArray([[\"style\", {\n gap: ((0 + \"px \") + 5) + \"px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-around\",\n padding: ((0 + \"px \") + 5) + \"px\",\n }], (elems = [createElement(\"i\", {\n style: {\n fontSize: 25 + \"px\",\n },\n className: \"fab fa-apple px-2\",\n }), \"Logg inn med Apple\"], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems))])])))], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_1))])])));\n },\n })], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_2))])]))), Interop_reactApi_1.createElement(GoogleLogin, {\n size: \"large\",\n shape: \"pill\",\n theme: \"filled_black\",\n onSuccess: (x_15) => {\n const pr_3 = PromiseBuilder__Run_212F1D4B(promise, PromiseBuilder__Delay_62FBFDE1(promise, () => {\n let item_1, body_3, decoder_3, data_5, caseStrategy_12, extra_12;\n return ((item_1 = {\n Token: x_15.credential,\n }, (body_3 = Auto_generateBoxedEncoder_437914C6(anonRecord_type([\"Token\", string_type]), undefined, undefined, undefined)(item_1), (decoder_3 = Auto_generateBoxedDecoder_Z6670B51(OAuthAuthResponse_$reflection(), undefined, undefined), (data_5 = some(body_3), (caseStrategy_12 = undefined, (extra_12 = undefined, (() => {\n let properties_6;\n try {\n const properties_3_1 = Helper_withProperties(singleton(new Types_RequestProperties(3, [\"cors\"])), (properties_6 = ofArray([new Types_RequestProperties(0, [\"POST\"]), new Types_RequestProperties(1, [keyValueList(Helper_withContentTypeJson(data_5, empty()), 0)])]), defaultArg(map((data_1_2) => cons(new Types_RequestProperties(2, [toString_1(0, Auto_generateBoxedEncoderCached_437914C6(obj_type, caseStrategy_12, extra_12)(data_1_2))]), properties_6), data_5), properties_6)));\n const pr_2 = PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Helper_fetch(\"/api/google-auth/authenticate\", properties_3_1).then((_arg_3) => {\n let response_3, decoder_1_2;\n return ((response_3 = _arg_3, (decoder_1_2 = defaultArg(decoder_3, Auto_generateBoxedDecoderCached_Z6670B51(OAuthAuthResponse_$reflection(), unwrap(caseStrategy_12), unwrap(extra_12))), PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (((response_3.ok) ? PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (response_3.text().then((_arg_4) => {\n let matchValue_3;\n return Promise.resolve((matchValue_3 = fromString(uncurry2(decoder_1_2), _arg_4), (matchValue_3.tag === 1) ? (new FSharpResult$2(1, [new FetchError(1, [matchValue_3.fields[0]])])) : (new FSharpResult$2(0, [matchValue_3.fields[0]]))));\n })))) : (Promise.resolve(new FSharpResult$2(1, [new FetchError(2, [response_3])])))).then((_arg_1_2) => (Promise.resolve(_arg_1_2)))))))));\n }))));\n return pr_2.then(void 0, ((arg_3) => (new FSharpResult$2(1, [new FetchError(3, [arg_3])]))));\n }\n catch (exn_1) {\n return PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Promise.resolve(new FSharpResult$2(1, [new FetchError(0, [exn_1])])))));\n }\n })()))))))).then((_arg_5) => {\n let matchValue_4, x_4, numDays_1, arg_4;\n const res_1 = _arg_5;\n if (res_1.tag === 0) {\n const r_1 = res_1.fields[0];\n switch (r_1.Result.Result) {\n case \"success\": {\n window.location.reload(true);\n return Promise.resolve();\n }\n case \"not-exist\": {\n patternInput[1](r_1);\n return Promise.resolve();\n }\n case \"banned\": {\n setBanned([(matchValue_4 = r_1.Result.BanUntil, (matchValue_4 != null) ? ((x_4 = toUniversalTime(parse(matchValue_4)), (numDays_1 = (days(op_Subtraction(x_4, utcNow())) | 0), (arg_4 = toString(x_4, \"dd/MM/yyyy\"), toText(printf(\"Til %s (%i dager igjen)\"))(arg_4)(numDays_1))))) : undefined), r_1.Result.Message]);\n return Promise.resolve();\n }\n default: {\n setErrMsg(r_1.Result.Message);\n return Promise.resolve();\n }\n }\n }\n else {\n setErrMsg(\"Kunne ikke logge deg inn. Vennligst prøv igjen senere.\");\n return Promise.resolve();\n }\n });\n }));\n pr_3.then();\n },\n onError: (x_17) => {\n console.log(some(`onError: ${x_17}`));\n },\n })], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_3))])]))), createElement(\"div\", createObj(ofArray([[\"style\", {\n display: \"flex\",\n justifyContent: \"space-around\",\n gap: ((5 + \"px \") + 5) + \"px\",\n alignItems: \"center\",\n width: 100 + \"%\",\n maxWidth: 350,\n }], (elems_5 = [createElement(\"div\", {\n style: {\n flexGrow: 2,\n height: 2,\n backgroundColor: \"var(--text-main)\",\n },\n }), createElement(\"div\", createObj(ofArray([[\"style\", {\n flexGrow: 1,\n textAlign: \"center\",\n }], (elems_4 = [createElement(\"span\", {\n children: \"eller\",\n })], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_4))])]))), createElement(\"div\", {\n style: {\n flexGrow: 2,\n height: 2,\n backgroundColor: \"var(--text-main)\",\n },\n })], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_5))])]))), authComponent], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_6))])]))));\n }\n else {\n const arf = matchValue_7;\n return singleton_1(createElement(OAuthRegister, {\n target: new OAuthTarget(1, [arf]),\n }));\n }\n }\n else {\n const grf = matchValue_6;\n return singleton_1(createElement(OAuthRegister, {\n target: new OAuthTarget(0, [grf]),\n }));\n }\n }\n else {\n return singleton_1(drawBanned(matchValue_5[0], matchValue_5[1]));\n }\n })))), [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_7))])])));\n}\n\nexport function LoginHolder() {\n return createElement(AuthHolder, {\n authComponent: createElement(Login, null),\n });\n}\n\n","import { Union, Record } from \"./fable_modules/fable-library-js.4.17.0/Types.js\";\nimport { obj_type, union_type, record_type, option_type, bool_type, string_type } from \"./fable_modules/fable-library-js.4.17.0/Reflection.js\";\nimport { RegisterRequest_$reflection, RegisterRequest, GenericResponse_$reflection } from \"./Types.js\";\nimport { FetchError, FetchError_$reflection } from \"./fable_modules/Thoth.Fetch.3.0.1/Fetch.fs.js\";\nimport { FSharpResult$2 } from \"./fable_modules/fable-library-js.4.17.0/Result.js\";\nimport { isMatch } from \"./fable_modules/fable-library-js.4.17.0/RegExp.js\";\nimport { Alert_snackError, LoadingIndicator_loadingIndicatorSmall, validateEmail } from \"./ViewHelpers.js\";\nimport { PromiseBuilder__Delay_62FBFDE1, PromiseBuilder__Run_212F1D4B } from \"./fable_modules/Fable.Promise.2.0.0/Promise.fs.js\";\nimport { promise } from \"./fable_modules/Fable.Promise.2.0.0/PromiseImpl.fs.js\";\nimport { Auto_generateBoxedEncoderCached_437914C6, Auto_generateBoxedEncoder_437914C6 } from \"./fable_modules/Thoth.Json.6.0.0/Encode.fs.js\";\nimport { Auto_generateBoxedDecoderCached_Z6670B51, Auto_generateBoxedDecoder_Z6670B51 } from \"./fable_modules/Thoth.Json.6.0.0/Decode.fs.js\";\nimport { unwrap, map, defaultArg, some } from \"./fable_modules/fable-library-js.4.17.0/Option.js\";\nimport { PromiseBuilder__Delay_62FBFDE1 as PromiseBuilder__Delay_62FBFDE1_1, PromiseBuilder__Run_212F1D4B as PromiseBuilder__Run_212F1D4B_1 } from \"./fable_modules/Fable.Promise.2.0.0/Promise.fs.js\";\nimport { promise as promise_1 } from \"./fable_modules/Fable.Promise.2.0.0/PromiseImpl.fs.js\";\nimport { Helper_fetch, Helper_withContentTypeJson, Helper_withProperties } from \"./fable_modules/Thoth.Fetch.3.0.1/Fetch.fs.js\";\nimport { Types_RequestProperties } from \"./fable_modules/Fable.Fetch.2.1.0/Fetch.fs.js\";\nimport { cons, ofArray, empty, singleton } from \"./fable_modules/fable-library-js.4.17.0/List.js\";\nimport { keyValueList } from \"./fable_modules/fable-library-js.4.17.0/MapUtil.js\";\nimport { toString } from \"./fable_modules/Thoth.Json.6.0.0/Encode.fs.js\";\nimport { fromString } from \"./fable_modules/Thoth.Json.6.0.0/Decode.fs.js\";\nimport { createObj, uncurry2 } from \"./fable_modules/fable-library-js.4.17.0/Util.js\";\nimport { createElement } from \"react\";\nimport React from \"react\";\nimport { MuiHelpers_createElement } from \"./Feliz.MaterialUI/Mui.js\";\nimport { Checkbox, FormControlLabel, TextField } from \"@mui/material\";\nimport { Interop_reactApi } from \"./fable_modules/Feliz.2.7.0/Interop.fs.js\";\nimport { empty as empty_1, singleton as singleton_1, delay, toList } from \"./fable_modules/fable-library-js.4.17.0/Seq.js\";\nimport { recaptchaContainer } from \"./Recaptcha.js\";\nimport { useReact_useReducer_2B9E6EA0 } from \"./fable_modules/Feliz.2.7.0/React.fs.js\";\nimport { AuthHolder } from \"./Login.js\";\n\nclass Model extends Record {\n constructor(Username, Email, Password, PasswordRepeat, AcceptTerms, ValidUsername, ValidEmail, ValidPassword, Recaptched, Processing, ErrorMsg, Successful) {\n super();\n this.Username = Username;\n this.Email = Email;\n this.Password = Password;\n this.PasswordRepeat = PasswordRepeat;\n this.AcceptTerms = AcceptTerms;\n this.ValidUsername = ValidUsername;\n this.ValidEmail = ValidEmail;\n this.ValidPassword = ValidPassword;\n this.Recaptched = Recaptched;\n this.Processing = Processing;\n this.ErrorMsg = ErrorMsg;\n this.Successful = Successful;\n }\n}\n\nfunction Model_$reflection() {\n return record_type(\"Register.Model\", [], Model, () => [[\"Username\", string_type], [\"Email\", string_type], [\"Password\", string_type], [\"PasswordRepeat\", string_type], [\"AcceptTerms\", bool_type], [\"ValidUsername\", bool_type], [\"ValidEmail\", bool_type], [\"ValidPassword\", bool_type], [\"Recaptched\", bool_type], [\"Processing\", bool_type], [\"ErrorMsg\", option_type(string_type)], [\"Successful\", bool_type]]);\n}\n\nclass Message extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"UpdateUsername\", \"UpdateEmail\", \"UpdatePassword\", \"UpdatePasswordRepeat\", \"ToggleAcceptTerms\", \"TryRegister\", \"SetRecaptched\", \"RecaptchaResponse\", \"RegisterResponse\", \"DismissError\"];\n }\n}\n\nfunction Message_$reflection() {\n return union_type(\"Register.Message\", [], Message, () => [[[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", bool_type]], [], [[\"Item\", bool_type]], [[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [GenericResponse_$reflection(), FetchError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", GenericResponse_$reflection()]], [[\"ErrorValue\", FetchError_$reflection()]]])]], [[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [GenericResponse_$reflection(), FetchError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", GenericResponse_$reflection()]], [[\"ErrorValue\", FetchError_$reflection()]]])]], []]);\n}\n\nfunction init() {\n return new Model(\"\", \"\", \"\", \"\", false, true, true, true, false, false, undefined, false);\n}\n\nfunction validateCredentials(un, email, pw1, pw2) {\n const usernameLength = (un.length >= 3) && (un.length <= 16);\n const usernameChars = isMatch(/^[0-9A-Za-z]+$/gu, un);\n const email_1 = validateEmail(email);\n const pwLength = pw1.length >= 8;\n const pwsMatch = pw1 === pw2;\n if (usernameLength) {\n if (usernameChars) {\n if (email_1) {\n if (pwLength) {\n if (pwsMatch) {\n return new FSharpResult$2(0, [undefined]);\n }\n else {\n return new FSharpResult$2(1, [\"Passord er ikke like.\"]);\n }\n }\n else {\n return new FSharpResult$2(1, [\"Passordet er for kort.\"]);\n }\n }\n else {\n return new FSharpResult$2(1, [\"Ugyldig e-post adresse\"]);\n }\n }\n else {\n return new FSharpResult$2(1, [\"Brukernavn kan kun inneholder bokstaver og tall.\"]);\n }\n }\n else {\n return new FSharpResult$2(1, [\"Brukernavn må være mellom 3 og 16 tegn langt.\"]);\n }\n}\n\nfunction update(model, msg) {\n switch (msg.tag) {\n case 1:\n return new Model(model.Username, msg.fields[0], model.Password, model.PasswordRepeat, model.AcceptTerms, model.ValidUsername, model.ValidEmail, model.ValidPassword, model.Recaptched, model.Processing, model.ErrorMsg, model.Successful);\n case 2:\n return new Model(model.Username, model.Email, msg.fields[0], model.PasswordRepeat, model.AcceptTerms, model.ValidUsername, model.ValidEmail, model.ValidPassword, model.Recaptched, model.Processing, model.ErrorMsg, model.Successful);\n case 3:\n return new Model(model.Username, model.Email, model.Password, msg.fields[0], model.AcceptTerms, model.ValidUsername, model.ValidEmail, model.ValidPassword, model.Recaptched, model.Processing, model.ErrorMsg, model.Successful);\n case 4:\n return new Model(model.Username, model.Email, model.Password, model.PasswordRepeat, msg.fields[0], model.ValidUsername, model.ValidEmail, model.ValidPassword, model.Recaptched, model.Processing, model.ErrorMsg, model.Successful);\n case 5: {\n const matchValue = validateCredentials(model.Username, model.Email, model.Password, model.PasswordRepeat);\n if (matchValue.tag === 1) {\n return new Model(model.Username, model.Email, model.Password, model.PasswordRepeat, model.AcceptTerms, model.ValidUsername, model.ValidEmail, model.ValidPassword, model.Recaptched, model.Processing, matchValue.fields[0], model.Successful);\n }\n else {\n return new Model(model.Username, model.Email, model.Password, model.PasswordRepeat, model.AcceptTerms, model.ValidUsername, model.ValidEmail, model.ValidPassword, model.Recaptched, true, undefined, model.Successful);\n }\n }\n case 8: {\n const result = msg.fields[0];\n if (result.tag === 0) {\n const resp = result.fields[0];\n if (resp.Result === \"success\") {\n return new Model(model.Username, model.Email, model.Password, model.PasswordRepeat, model.AcceptTerms, model.ValidUsername, model.ValidEmail, model.ValidPassword, model.Recaptched, false, model.ErrorMsg, true);\n }\n else {\n return new Model(model.Username, model.Email, model.Password, model.PasswordRepeat, model.AcceptTerms, model.ValidUsername, model.ValidEmail, model.ValidPassword, model.Recaptched, false, resp.Message, model.Successful);\n }\n }\n else {\n return new Model(model.Username, model.Email, model.Password, model.PasswordRepeat, model.AcceptTerms, model.ValidUsername, model.ValidEmail, model.ValidPassword, model.Recaptched, false, \"Noe gikk galt, kunne ikke gjennomføre registrering. Vennligst prøv igjen senere.\", model.Successful);\n }\n }\n case 6:\n return new Model(model.Username, model.Email, model.Password, model.PasswordRepeat, model.AcceptTerms, model.ValidUsername, model.ValidEmail, model.ValidPassword, msg.fields[0], model.Processing, model.ErrorMsg, model.Successful);\n case 7: {\n const res = msg.fields[0];\n if (res.tag === 1) {\n return model;\n }\n else if (res.fields[0].Result === \"success\") {\n return new Model(model.Username, model.Email, model.Password, model.PasswordRepeat, model.AcceptTerms, model.ValidUsername, model.ValidEmail, model.ValidPassword, true, model.Processing, model.ErrorMsg, model.Successful);\n }\n else {\n return model;\n }\n }\n case 9:\n return new Model(model.Username, model.Email, model.Password, model.PasswordRepeat, model.AcceptTerms, model.ValidUsername, model.ValidEmail, model.ValidPassword, model.Recaptched, model.Processing, undefined, model.Successful);\n default:\n return new Model(msg.fields[0], model.Email, model.Password, model.PasswordRepeat, model.AcceptTerms, model.ValidUsername, model.ValidEmail, model.ValidPassword, model.Recaptched, model.Processing, model.ErrorMsg, model.Successful);\n }\n}\n\nfunction validateRecaptcha(token, dispatch) {\n const pr_1 = PromiseBuilder__Run_212F1D4B(promise, PromiseBuilder__Delay_62FBFDE1(promise, () => {\n let body, decoder, data_1, caseStrategy_3, extra_3;\n return ((body = Auto_generateBoxedEncoder_437914C6(string_type, undefined, undefined, undefined)(token), (decoder = Auto_generateBoxedDecoder_Z6670B51(GenericResponse_$reflection(), undefined, undefined), (data_1 = some(body), (caseStrategy_3 = undefined, (extra_3 = undefined, (() => {\n let properties_2;\n try {\n const properties_3 = Helper_withProperties(singleton(new Types_RequestProperties(3, [\"cors\"])), (properties_2 = ofArray([new Types_RequestProperties(0, [\"POST\"]), new Types_RequestProperties(1, [keyValueList(Helper_withContentTypeJson(data_1, empty()), 0)])]), defaultArg(map((data_1_1) => cons(new Types_RequestProperties(2, [toString(0, Auto_generateBoxedEncoderCached_437914C6(obj_type, caseStrategy_3, extra_3)(data_1_1))]), properties_2), data_1), properties_2)));\n const pr = PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Helper_fetch(\"/api/recaptcha\", properties_3).then((_arg) => {\n let response_1, decoder_1_1;\n return ((response_1 = _arg, (decoder_1_1 = defaultArg(decoder, Auto_generateBoxedDecoderCached_Z6670B51(GenericResponse_$reflection(), unwrap(caseStrategy_3), unwrap(extra_3))), PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (((response_1.ok) ? PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (response_1.text().then((_arg_1) => {\n let matchValue;\n return Promise.resolve((matchValue = fromString(uncurry2(decoder_1_1), _arg_1), (matchValue.tag === 1) ? (new FSharpResult$2(1, [new FetchError(1, [matchValue.fields[0]])])) : (new FSharpResult$2(0, [matchValue.fields[0]]))));\n })))) : (Promise.resolve(new FSharpResult$2(1, [new FetchError(2, [response_1])])))).then((_arg_1_1) => (Promise.resolve(_arg_1_1)))))))));\n }))));\n return pr.then(void 0, ((arg) => (new FSharpResult$2(1, [new FetchError(3, [arg])]))));\n }\n catch (exn) {\n return PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Promise.resolve(new FSharpResult$2(1, [new FetchError(0, [exn])])))));\n }\n })())))))).then((_arg_2) => {\n dispatch(new Message(7, [_arg_2]));\n return Promise.resolve();\n });\n }));\n pr_1.then();\n}\n\nfunction tryRegister(username, email, p1, p2, dispatch) {\n const pr_1 = PromiseBuilder__Run_212F1D4B(promise, PromiseBuilder__Delay_62FBFDE1(promise, () => {\n let body, decoder, data_1, caseStrategy_3, extra_3;\n dispatch(new Message(5, []));\n const matchValue = validateCredentials(username, email, p1, p2);\n if (matchValue.tag === 0) {\n const req = new RegisterRequest(username, p1, email);\n return ((body = Auto_generateBoxedEncoder_437914C6(RegisterRequest_$reflection(), undefined, undefined, undefined)(req), (decoder = Auto_generateBoxedDecoder_Z6670B51(GenericResponse_$reflection(), undefined, undefined), (data_1 = some(body), (caseStrategy_3 = undefined, (extra_3 = undefined, (() => {\n let properties_2;\n try {\n const properties_3 = Helper_withProperties(singleton(new Types_RequestProperties(3, [\"cors\"])), (properties_2 = ofArray([new Types_RequestProperties(0, [\"POST\"]), new Types_RequestProperties(1, [keyValueList(Helper_withContentTypeJson(data_1, empty()), 0)])]), defaultArg(map((data_1_1) => cons(new Types_RequestProperties(2, [toString(0, Auto_generateBoxedEncoderCached_437914C6(obj_type, caseStrategy_3, extra_3)(data_1_1))]), properties_2), data_1), properties_2)));\n const pr = PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Helper_fetch(\"/sign-up\", properties_3).then((_arg) => {\n let response_1, decoder_1_1;\n return ((response_1 = _arg, (decoder_1_1 = defaultArg(decoder, Auto_generateBoxedDecoderCached_Z6670B51(GenericResponse_$reflection(), unwrap(caseStrategy_3), unwrap(extra_3))), PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (((response_1.ok) ? PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (response_1.text().then((_arg_1) => {\n let matchValue_1;\n return Promise.resolve((matchValue_1 = fromString(uncurry2(decoder_1_1), _arg_1), (matchValue_1.tag === 1) ? (new FSharpResult$2(1, [new FetchError(1, [matchValue_1.fields[0]])])) : (new FSharpResult$2(0, [matchValue_1.fields[0]]))));\n })))) : (Promise.resolve(new FSharpResult$2(1, [new FetchError(2, [response_1])])))).then((_arg_1_1) => (Promise.resolve(_arg_1_1)))))))));\n }))));\n return pr.then(void 0, ((arg) => (new FSharpResult$2(1, [new FetchError(3, [arg])]))));\n }\n catch (exn) {\n return PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Promise.resolve(new FSharpResult$2(1, [new FetchError(0, [exn])])))));\n }\n })())))))).then((_arg_2) => {\n dispatch(new Message(8, [_arg_2]));\n return Promise.resolve();\n });\n }\n else {\n return Promise.resolve();\n }\n }));\n pr_1.then();\n}\n\nfunction registrationView(model, dispatch) {\n let elems_4, children, elems, elems_1, elems_3;\n return createElement(\"div\", createObj(ofArray([[\"style\", {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }], (elems_4 = [createElement(\"h1\", {\n style: {\n fontSize: 2 + \"rem\",\n color: \"var(--text-main)\",\n fontWeight: \"bold\",\n },\n children: \"Registrer deg\",\n }), MuiHelpers_createElement(TextField, [[\"autoFocus\", true], [\"id\", \"username-field\"], [\"variant\", \"outlined\"], [\"label\", \"Brukernavn\"], [\"autoComplete\", \"username\"], [\"onChange\", (e) => {\n dispatch(new Message(0, [e.target.value]));\n }], [\"onKeyDown\", (e_1) => {\n if (e_1.code === \"Enter\") {\n window.document.getElementById(\"email-field\").focus();\n }\n }], [\"error\", !model.ValidUsername], [\"style\", {\n marginTop: 20 + \"px\",\n minWidth: 250 + \"px\",\n }]]), MuiHelpers_createElement(TextField, [[\"id\", \"email-field\"], [\"variant\", \"outlined\"], [\"label\", \"E-post adresse\"], [\"type\", \"email\"], [\"autoComplete\", \"email\"], [\"onChange\", (e_2) => {\n dispatch(new Message(1, [e_2.target.value]));\n }], [\"onKeyDown\", (e_3) => {\n if (e_3.code === \"Enter\") {\n window.document.getElementById(\"password1-field\").focus();\n }\n }], [\"error\", !model.ValidEmail], [\"style\", {\n marginTop: 20 + \"px\",\n minWidth: 250 + \"px\",\n }]]), MuiHelpers_createElement(TextField, [[\"id\", \"password1-field\"], [\"variant\", \"outlined\"], [\"label\", \"Passord\"], [\"type\", \"password\"], [\"autoComplete\", \"new-password\"], [\"onChange\", (e_4) => {\n dispatch(new Message(2, [e_4.target.value]));\n }], [\"onKeyDown\", (e_5) => {\n if (e_5.code === \"Enter\") {\n window.document.getElementById(\"password2-field\").focus();\n }\n }], [\"error\", !model.ValidPassword], [\"style\", {\n marginTop: 20 + \"px\",\n minWidth: 250 + \"px\",\n }]]), MuiHelpers_createElement(TextField, [[\"id\", \"password2-field\"], [\"variant\", \"outlined\"], [\"label\", \"Gjenta passord\"], [\"type\", \"password\"], [\"onChange\", (e_6) => {\n dispatch(new Message(3, [e_6.target.value]));\n }], [\"error\", !model.ValidPassword], [\"style\", {\n marginTop: 20 + \"px\",\n marginBottom: 20 + \"px\",\n minWidth: 250 + \"px\",\n }]]), MuiHelpers_createElement(FormControlLabel, [[\"label\", (children = ofArray([\"Jeg har lest og aksepterer \", createElement(\"a\", {\n style: {\n textDecoration: \"underline\",\n },\n target: \"_blank\",\n href: \"/terms-of-use\",\n children: \"brukervilkårene\",\n })]), createElement(\"span\", {\n children: Interop_reactApi.Children.toArray(Array.from(children)),\n }))], [\"control\", MuiHelpers_createElement(Checkbox, [[\"style\", {\n color: \"var(--text-main)\",\n }], [\"checked\", model.AcceptTerms], [\"onChange\", (e_7) => {\n dispatch(new Message(4, [e_7.target.checked]));\n }], [\"color\", \"primary\"]])]]), createElement(\"div\", createObj(ofArray([[\"style\", {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-around\",\n minWidth: 250 + \"px\",\n fontSize: 0.8 + \"rem\",\n color: \"var(--text-main)\",\n }], (elems = [createElement(\"span\", {\n children: [\"Har du allerede en bruker?\"],\n }), createElement(\"a\", {\n style: {\n textDecoration: \"underline\",\n },\n href: \"/sign-in\",\n children: \"Logg inn\",\n })], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems))])]))), createElement(\"div\", createObj(ofArray([[\"style\", {\n marginTop: 15,\n }], (elems_1 = toList(delay(() => (model.AcceptTerms ? singleton_1(recaptchaContainer([[\"sitekey\", \"6Lfptv8mAAAAAOjwVLP08rOqUO0zDXpcQ4kvDCul\"], [\"onChange\", (s) => {\n if (s == null) {\n dispatch(new Message(6, [false]));\n }\n else {\n validateRecaptcha(s, dispatch);\n }\n }], [\"theme\", \"dark\"], [\"onExpired\", () => {\n dispatch(new Message(6, [false]));\n }]])) : empty_1()))), [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_1))])]))), createElement(\"div\", createObj(ofArray([[\"style\", {\n minHeight: 60 + \"px\",\n marginTop: 20 + \"px\",\n minWidth: 250 + \"px\",\n }], (elems_3 = toList(delay(() => {\n let elems_2;\n return (model.AcceptTerms && model.Recaptched) ? singleton_1(createElement(\"button\", createObj(ofArray([[\"className\", \"pill-button\"], [\"style\", {\n minWidth: 250 + \"px\",\n }], [\"onClick\", (_arg_1) => {\n tryRegister(model.Username, model.Email, model.Password, model.PasswordRepeat, dispatch);\n }], (elems_2 = toList(delay(() => (model.Processing ? singleton_1(LoadingIndicator_loadingIndicatorSmall()) : singleton_1(\"Registrer deg\")))), [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_2))])])))) : empty_1();\n })), [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_3))])]))), Alert_snackError(model.ErrorMsg, () => {\n dispatch(new Message(9, []));\n })], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_4))])])));\n}\n\nexport function Register() {\n let elems, value_19;\n const patternInput = useReact_useReducer_2B9E6EA0(update, init());\n const model_1 = patternInput[0];\n if (!model_1.Successful) {\n return registrationView(model_1, patternInput[1]);\n }\n else {\n return createElement(\"div\", createObj(ofArray([[\"style\", {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n }], (elems = [createElement(\"span\", {\n style: {\n fontSize: 1.7 + \"rem\",\n marginBottom: 25,\n padding: 10 + \"px\",\n },\n children: \"Brukerkonto opprettet!\",\n }), createElement(\"br\", {}), createElement(\"p\", createObj(ofArray([[\"style\", {\n maxWidth: 500,\n textAlign: \"center\",\n }], (value_19 = \"Du kan nå logge inn med din nye bruker på Aksje.io. Du må bekrefte din e-post adresse før du kan publisere innhold til Aksje.io. En e-post med instruksjoner om hvordan du kan bekrefte din e-post adresse er sendt til e-post adressen du registrerte brukeren med.\", [\"children\", value_19])]))), createElement(\"a\", {\n style: {\n marginTop: 20,\n },\n className: \"pill-button\",\n href: \"/sign-in\",\n children: \"Logg inn\",\n })], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems))])])));\n }\n}\n\nexport function RegisterHolder() {\n return createElement(AuthHolder, {\n authComponent: createElement(Register, null),\n });\n}\n\n","import { Union, Record } from \"./fable_modules/fable-library-js.4.17.0/Types.js\";\nimport { obj_type, tuple_type, union_type, record_type, bool_type, option_type, string_type } from \"./fable_modules/fable-library-js.4.17.0/Reflection.js\";\nimport { GenericResponse_$reflection } from \"./Types.js\";\nimport { FetchError, FetchError_$reflection } from \"./fable_modules/Thoth.Fetch.3.0.1/Fetch.fs.js\";\nimport { FSharpResult$2 } from \"./fable_modules/fable-library-js.4.17.0/Result.js\";\nimport { PromiseBuilder__Delay_62FBFDE1, PromiseBuilder__Run_212F1D4B } from \"./fable_modules/Fable.Promise.2.0.0/Promise.fs.js\";\nimport { promise } from \"./fable_modules/Fable.Promise.2.0.0/PromiseImpl.fs.js\";\nimport { Auto_generateBoxedEncoderCached_437914C6, Auto_generateBoxedEncoder_437914C6 } from \"./fable_modules/Thoth.Json.6.0.0/Encode.fs.js\";\nimport { Auto_generateBoxedDecoderCached_Z6670B51, Auto_generateBoxedDecoder_Z6670B51 } from \"./fable_modules/Thoth.Json.6.0.0/Decode.fs.js\";\nimport { unwrap, map, defaultArg, some } from \"./fable_modules/fable-library-js.4.17.0/Option.js\";\nimport { PromiseBuilder__Delay_62FBFDE1 as PromiseBuilder__Delay_62FBFDE1_1, PromiseBuilder__Run_212F1D4B as PromiseBuilder__Run_212F1D4B_1 } from \"./fable_modules/Fable.Promise.2.0.0/Promise.fs.js\";\nimport { promise as promise_1 } from \"./fable_modules/Fable.Promise.2.0.0/PromiseImpl.fs.js\";\nimport { Helper_fetch, Helper_withContentTypeJson, Helper_withProperties } from \"./fable_modules/Thoth.Fetch.3.0.1/Fetch.fs.js\";\nimport { Types_RequestProperties } from \"./fable_modules/Fable.Fetch.2.1.0/Fetch.fs.js\";\nimport { cons, ofArray, empty, singleton } from \"./fable_modules/fable-library-js.4.17.0/List.js\";\nimport { keyValueList } from \"./fable_modules/fable-library-js.4.17.0/MapUtil.js\";\nimport { toString } from \"./fable_modules/Thoth.Json.6.0.0/Encode.fs.js\";\nimport { fromString } from \"./fable_modules/Thoth.Json.6.0.0/Decode.fs.js\";\nimport { createObj, uncurry2 } from \"./fable_modules/fable-library-js.4.17.0/Util.js\";\nimport { createElement } from \"react\";\nimport React from \"react\";\nimport { Interop_reactApi } from \"./fable_modules/Feliz.2.7.0/Interop.fs.js\";\nimport { MuiHelpers_createElement } from \"./Feliz.MaterialUI/Mui.js\";\nimport { AccordionActions, Button, AccordionDetails, Typography, AccordionSummary, Accordion, TextField } from \"@mui/material\";\nimport { Alert_snackError } from \"./ViewHelpers.js\";\nimport { useReact_useReducer_2B9E6EA0 } from \"./fable_modules/Feliz.2.7.0/React.fs.js\";\nimport { empty as empty_1, singleton as singleton_1, delay, toList } from \"./fable_modules/fable-library-js.4.17.0/Seq.js\";\n\nclass Model extends Record {\n constructor(OldPassword, NewPassword, RepeatPassword, ErrorMsg, Processing, Changed) {\n super();\n this.OldPassword = OldPassword;\n this.NewPassword = NewPassword;\n this.RepeatPassword = RepeatPassword;\n this.ErrorMsg = ErrorMsg;\n this.Processing = Processing;\n this.Changed = Changed;\n }\n}\n\nfunction Model_$reflection() {\n return record_type(\"PasswordForm.Model\", [], Model, () => [[\"OldPassword\", string_type], [\"NewPassword\", string_type], [\"RepeatPassword\", string_type], [\"ErrorMsg\", option_type(string_type)], [\"Processing\", bool_type], [\"Changed\", bool_type]]);\n}\n\nclass Message extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"UpdateOld\", \"UpdateNew\", \"UpdateRepeat\", \"Commit\", \"UpdateResponse\", \"DismissError\"];\n }\n}\n\nfunction Message_$reflection() {\n return union_type(\"PasswordForm.Message\", [], Message, () => [[[\"Item\", string_type]], [[\"Item\", string_type]], [[\"Item\", string_type]], [], [[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [GenericResponse_$reflection(), FetchError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", GenericResponse_$reflection()]], [[\"ErrorValue\", FetchError_$reflection()]]])]], []]);\n}\n\nfunction init() {\n return new Model(\"\", \"\", \"\", undefined, false, false);\n}\n\nfunction update(model, msg) {\n switch (msg.tag) {\n case 1:\n return new Model(model.OldPassword, msg.fields[0], model.RepeatPassword, model.ErrorMsg, model.Processing, model.Changed);\n case 2:\n return new Model(model.OldPassword, model.NewPassword, msg.fields[0], model.ErrorMsg, model.Processing, model.Changed);\n case 3: {\n const validOld = model.OldPassword.length >= 0;\n const validNew = model.NewPassword.length >= 8;\n if ((validOld && validNew) && (model.NewPassword === model.RepeatPassword)) {\n return new Model(model.OldPassword, model.NewPassword, model.RepeatPassword, undefined, true, model.Changed);\n }\n else if (!validOld) {\n return new Model(model.OldPassword, model.NewPassword, model.RepeatPassword, `Gammelt passord er minst ${8} tegn.`, model.Processing, model.Changed);\n }\n else if (!validNew) {\n return new Model(model.OldPassword, model.NewPassword, model.RepeatPassword, `Nytt passord må være minst ${8} tegn.`, model.Processing, model.Changed);\n }\n else {\n return new Model(model.OldPassword, model.NewPassword, model.RepeatPassword, \"Passord er ikke like.\", model.Processing, model.Changed);\n }\n }\n case 4: {\n const res = msg.fields[0];\n if (res.tag === 1) {\n return new Model(model.OldPassword, model.NewPassword, model.RepeatPassword, \"Kunne ikke oppdatere passord. Vennligst prøv igjen senere.\", false, model.Changed);\n }\n else {\n const x_3 = res.fields[0];\n if (x_3.Result === \"success\") {\n return new Model(model.OldPassword, model.NewPassword, model.RepeatPassword, model.ErrorMsg, model.Processing, true);\n }\n else {\n return new Model(model.OldPassword, model.NewPassword, model.RepeatPassword, x_3.Message, false, model.Changed);\n }\n }\n }\n case 5:\n return new Model(model.OldPassword, model.NewPassword, model.RepeatPassword, undefined, model.Processing, model.Changed);\n default:\n return new Model(msg.fields[0], model.NewPassword, model.RepeatPassword, model.ErrorMsg, model.Processing, model.Changed);\n }\n}\n\nfunction commit(oldP, newP, repeatP, dispatch) {\n const pr_1 = PromiseBuilder__Run_212F1D4B(promise, PromiseBuilder__Delay_62FBFDE1(promise, () => {\n let body, decoder, data_1, caseStrategy_3, extra_3;\n dispatch(new Message(3, []));\n if (((oldP.length >= 0) && (newP.length >= 8)) && (newP === repeatP)) {\n return ((body = Auto_generateBoxedEncoder_437914C6(tuple_type(string_type, string_type), undefined, undefined, undefined)([oldP, newP]), (decoder = Auto_generateBoxedDecoder_Z6670B51(GenericResponse_$reflection(), undefined, undefined), (data_1 = some(body), (caseStrategy_3 = undefined, (extra_3 = undefined, (() => {\n let properties_2;\n try {\n const properties_3 = Helper_withProperties(singleton(new Types_RequestProperties(3, [\"cors\"])), (properties_2 = ofArray([new Types_RequestProperties(0, [\"POST\"]), new Types_RequestProperties(1, [keyValueList(Helper_withContentTypeJson(data_1, empty()), 0)])]), defaultArg(map((data_1_1) => cons(new Types_RequestProperties(2, [toString(0, Auto_generateBoxedEncoderCached_437914C6(obj_type, caseStrategy_3, extra_3)(data_1_1))]), properties_2), data_1), properties_2)));\n const pr = PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Helper_fetch(\"/api/account/change-password\", properties_3).then((_arg) => {\n let response_1, decoder_1_1;\n return ((response_1 = _arg, (decoder_1_1 = defaultArg(decoder, Auto_generateBoxedDecoderCached_Z6670B51(GenericResponse_$reflection(), unwrap(caseStrategy_3), unwrap(extra_3))), PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (((response_1.ok) ? PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (response_1.text().then((_arg_1) => {\n let matchValue;\n return Promise.resolve((matchValue = fromString(uncurry2(decoder_1_1), _arg_1), (matchValue.tag === 1) ? (new FSharpResult$2(1, [new FetchError(1, [matchValue.fields[0]])])) : (new FSharpResult$2(0, [matchValue.fields[0]]))));\n })))) : (Promise.resolve(new FSharpResult$2(1, [new FetchError(2, [response_1])])))).then((_arg_1_1) => (Promise.resolve(_arg_1_1)))))))));\n }))));\n return pr.then(void 0, ((arg) => (new FSharpResult$2(1, [new FetchError(3, [arg])]))));\n }\n catch (exn) {\n return PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Promise.resolve(new FSharpResult$2(1, [new FetchError(0, [exn])])))));\n }\n })())))))).then((_arg_2) => {\n dispatch(new Message(4, [_arg_2]));\n return Promise.resolve();\n });\n }\n else {\n return Promise.resolve();\n }\n }));\n pr_1.then();\n}\n\nfunction drawCompleted() {\n let elems;\n return createElement(\"div\", createObj(ofArray([[\"style\", {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: 100 + \"%\",\n }], (elems = [createElement(\"i\", {\n className: \"fas fa-check-circle\",\n style: {\n fontSize: 1.6 + \"rem\",\n color: \"var(--buy)\",\n marginRight: 5,\n },\n }), createElement(\"span\", {\n style: {\n fontSize: 1.6 + \"rem\",\n },\n children: \"Passord er endret.\",\n })], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems))])])));\n}\n\nfunction drawForm(model, dispatch) {\n const children = ofArray([MuiHelpers_createElement(TextField, [[\"style\", {\n marginTop: 10,\n marginBottom: 10,\n }], [\"type\", \"password\"], [\"onChange\", (e) => {\n dispatch(new Message(0, [e.target.value]));\n }], [\"variant\", \"outlined\"], [\"size\", \"small\"], [\"label\", \"Gammelt passord\"], [\"fullWidth\", true]]), MuiHelpers_createElement(TextField, [[\"style\", {\n marginTop: 10,\n marginBottom: 10,\n }], [\"type\", \"password\"], [\"onChange\", (e_1) => {\n dispatch(new Message(1, [e_1.target.value]));\n }], [\"variant\", \"outlined\"], [\"size\", \"small\"], [\"label\", \"Nytt passord\"], [\"fullWidth\", true]]), MuiHelpers_createElement(TextField, [[\"style\", {\n marginTop: 10,\n marginBottom: 10,\n }], [\"type\", \"password\"], [\"onChange\", (e_2) => {\n dispatch(new Message(2, [e_2.target.value]));\n }], [\"variant\", \"outlined\"], [\"size\", \"small\"], [\"label\", \"Gjenta nytt passord\"], [\"fullWidth\", true]]), Alert_snackError(model.ErrorMsg, () => {\n dispatch(new Message(5, []));\n })]);\n return createElement(\"div\", {\n children: Interop_reactApi.Children.toArray(Array.from(children)),\n });\n}\n\nexport function PasswordForm() {\n let elements_3, elements, children, children_1;\n const patternInput = useReact_useReducer_2B9E6EA0(update, init());\n const model_1 = patternInput[0];\n const dispatch = patternInput[1];\n return MuiHelpers_createElement(Accordion, [(elements_3 = [MuiHelpers_createElement(AccordionSummary, [[\"expandIcon\", createElement(\"i\", {\n className: \"fas fa-chevron-down\",\n })], (elements = [MuiHelpers_createElement(Typography, [[\"children\", \"Endre passord\"]])], [\"children\", Interop_reactApi.Children.toArray(Array.from(elements))])]), (children = toList(delay(() => (!model_1.Changed ? singleton_1(drawForm(model_1, dispatch)) : singleton_1(drawCompleted())))), MuiHelpers_createElement(AccordionDetails, [[\"children\", Interop_reactApi.Children.toArray(Array.from(children))]])), (children_1 = toList(delay(() => (!model_1.Changed ? singleton_1(MuiHelpers_createElement(Button, [[\"size\", \"small\"], [\"variant\", \"outlined\"], [\"children\", \"Endre passord\"], [\"onClick\", (_arg) => {\n if (!model_1.Processing) {\n commit(model_1.OldPassword, model_1.NewPassword, model_1.RepeatPassword, dispatch);\n }\n }]])) : empty_1()))), MuiHelpers_createElement(AccordionActions, [[\"children\", Interop_reactApi.Children.toArray(Array.from(children_1))]]))], [\"children\", Interop_reactApi.Children.toArray(Array.from(elements_3))])]);\n}\n\n","import { createElement } from \"react\";\nimport React from \"react\";\nimport { useReact_useEffectOnce_3A5B6456, useFeliz_React__React_useState_Static_1505 } from \"./fable_modules/Feliz.2.7.0/React.fs.js\";\nimport { PromiseBuilder__Delay_62FBFDE1, PromiseBuilder__Run_212F1D4B } from \"./fable_modules/Fable.Promise.2.0.0/Promise.fs.js\";\nimport { promise } from \"./fable_modules/Fable.Promise.2.0.0/PromiseImpl.fs.js\";\nimport { Auto_generateBoxedDecoderCached_Z6670B51, Auto_generateBoxedDecoder_Z6670B51 } from \"./fable_modules/Thoth.Json.6.0.0/Decode.fs.js\";\nimport { GenericResponse_$reflection, Session_$reflection } from \"./Types.js\";\nimport { string_type, obj_type, array_type } from \"./fable_modules/fable-library-js.4.17.0/Reflection.js\";\nimport { PromiseBuilder__Delay_62FBFDE1 as PromiseBuilder__Delay_62FBFDE1_1, PromiseBuilder__Run_212F1D4B as PromiseBuilder__Run_212F1D4B_1 } from \"./fable_modules/Fable.Promise.2.0.0/Promise.fs.js\";\nimport { promise as promise_1 } from \"./fable_modules/Fable.Promise.2.0.0/PromiseImpl.fs.js\";\nimport { FetchError } from \"./fable_modules/Thoth.Fetch.3.0.1/Fetch.fs.js\";\nimport { FSharpResult$2 } from \"./fable_modules/fable-library-js.4.17.0/Result.js\";\nimport { Helper_fetch, Helper_withContentTypeJson, Helper_withProperties } from \"./fable_modules/Thoth.Fetch.3.0.1/Fetch.fs.js\";\nimport { singleton as singleton_1, cons, ofArray, empty } from \"./fable_modules/fable-library-js.4.17.0/List.js\";\nimport { Types_RequestProperties } from \"./fable_modules/Fable.Fetch.2.1.0/Fetch.fs.js\";\nimport { keyValueList } from \"./fable_modules/fable-library-js.4.17.0/MapUtil.js\";\nimport { some, unwrap, map, defaultArg } from \"./fable_modules/fable-library-js.4.17.0/Option.js\";\nimport { toString } from \"./fable_modules/Thoth.Json.6.0.0/Encode.fs.js\";\nimport { Auto_generateBoxedEncoder_437914C6, Auto_generateBoxedEncoderCached_437914C6 } from \"./fable_modules/Thoth.Json.6.0.0/Encode.fs.js\";\nimport { fromString } from \"./fable_modules/Thoth.Json.6.0.0/Decode.fs.js\";\nimport { createObj, uncurry2 } from \"./fable_modules/fable-library-js.4.17.0/Util.js\";\nimport { MuiHelpers_createElement } from \"./Feliz.MaterialUI/Mui.js\";\nimport { AccordionActions, Button, AccordionDetails, ListItemText, ListItem, List, Typography, AccordionSummary, Accordion } from \"@mui/material\";\nimport { Interop_reactApi } from \"./fable_modules/Feliz.2.7.0/Interop.fs.js\";\nimport { append, singleton, delay, toList } from \"./fable_modules/fable-library-js.4.17.0/Seq.js\";\nimport { map as map_1 } from \"./fable_modules/fable-library-js.4.17.0/Array.js\";\nimport { LoadingIndicator_loadingIndicator } from \"./ViewHelpers.js\";\n\nexport function Sessions() {\n let elements_5, elements, children, children_1;\n const patternInput = useFeliz_React__React_useState_Static_1505(undefined);\n const sessions = patternInput[0];\n const patternInput_1 = useFeliz_React__React_useState_Static_1505(false);\n const setConfirm = patternInput_1[1];\n useReact_useEffectOnce_3A5B6456(() => {\n const pr_1 = PromiseBuilder__Run_212F1D4B(promise, PromiseBuilder__Delay_62FBFDE1(promise, () => {\n let decoder, data_1, caseStrategy_2, extra_2;\n return ((decoder = Auto_generateBoxedDecoder_Z6670B51(array_type(Session_$reflection()), undefined, undefined), (data_1 = undefined, (caseStrategy_2 = undefined, (extra_2 = undefined, (() => {\n let properties_2;\n try {\n const properties_3 = Helper_withProperties(empty(), (properties_2 = ofArray([new Types_RequestProperties(0, [\"GET\"]), new Types_RequestProperties(1, [keyValueList(Helper_withContentTypeJson(data_1, empty()), 0)])]), defaultArg(map((data_1_1) => cons(new Types_RequestProperties(2, [toString(0, Auto_generateBoxedEncoderCached_437914C6(obj_type, caseStrategy_2, extra_2)(data_1_1))]), properties_2), data_1), properties_2)));\n const pr = PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Helper_fetch(\"/api/account/sessions\", properties_3).then((_arg_1) => {\n let response_1, decoder_1_1;\n return ((response_1 = _arg_1, (decoder_1_1 = defaultArg(decoder, Auto_generateBoxedDecoderCached_Z6670B51(array_type(Session_$reflection()), unwrap(caseStrategy_2), unwrap(extra_2))), PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (((response_1.ok) ? PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (response_1.text().then((_arg_2) => {\n let matchValue;\n return Promise.resolve((matchValue = fromString(uncurry2(decoder_1_1), _arg_2), (matchValue.tag === 1) ? (new FSharpResult$2(1, [new FetchError(1, [matchValue.fields[0]])])) : (new FSharpResult$2(0, [matchValue.fields[0]]))));\n })))) : (Promise.resolve(new FSharpResult$2(1, [new FetchError(2, [response_1])])))).then((_arg_1_1) => (Promise.resolve(_arg_1_1)))))))));\n }))));\n return pr.then(void 0, ((arg) => (new FSharpResult$2(1, [new FetchError(3, [arg])]))));\n }\n catch (exn) {\n return PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Promise.resolve(new FSharpResult$2(1, [new FetchError(0, [exn])])))));\n }\n })()))))).then((_arg_3) => {\n const res = _arg_3;\n if (res.tag === 1) {\n return Promise.resolve();\n }\n else {\n patternInput[1](res.fields[0]);\n return Promise.resolve();\n }\n });\n }));\n pr_1.then();\n });\n return MuiHelpers_createElement(Accordion, [(elements_5 = [MuiHelpers_createElement(AccordionSummary, [[\"expandIcon\", createElement(\"i\", {\n className: \"fas fa-chevron-down\",\n })], (elements = [MuiHelpers_createElement(Typography, [[\"children\", \"Påloggede enheter\"]])], [\"children\", Interop_reactApi.Children.toArray(Array.from(elements))])]), (children = toList(delay(() => {\n let elems_3, elements_2;\n if (sessions != null) {\n const x_4 = sessions;\n return singleton(createElement(\"div\", createObj(ofArray([[\"style\", {}], (elems_3 = [MuiHelpers_createElement(List, [[\"dense\", true], (elements_2 = map_1((y) => {\n let elements_1;\n return MuiHelpers_createElement(ListItem, [(elements_1 = [MuiHelpers_createElement(ListItemText, [[\"primary\", y.Agent], [\"secondary\", y.IP]])], [\"children\", Interop_reactApi.Children.toArray(Array.from(elements_1))])]);\n }, x_4), [\"children\", Interop_reactApi.Children.toArray(Array.from(elements_2))])])], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_3))])]))));\n }\n else {\n return singleton(LoadingIndicator_loadingIndicator());\n }\n })), MuiHelpers_createElement(AccordionDetails, [[\"children\", Interop_reactApi.Children.toArray(Array.from(children))]])), (children_1 = toList(delay(() => (patternInput_1[0] ? append(singleton(MuiHelpers_createElement(Button, [[\"size\", \"small\"], [\"variant\", \"outlined\"], [\"children\", \"Logg ut\"], [\"onClick\", (_arg_7) => {\n const pr_3 = PromiseBuilder__Run_212F1D4B(promise, PromiseBuilder__Delay_62FBFDE1(promise, () => {\n let body_2, decoder_3, data_5, caseStrategy_11, extra_11;\n return ((body_2 = Auto_generateBoxedEncoder_437914C6(string_type, undefined, undefined, undefined)(\"\"), (decoder_3 = Auto_generateBoxedDecoder_Z6670B51(GenericResponse_$reflection(), undefined, undefined), (data_5 = some(body_2), (caseStrategy_11 = undefined, (extra_11 = undefined, (() => {\n let properties_6;\n try {\n const properties_3_1 = Helper_withProperties(singleton_1(new Types_RequestProperties(3, [\"cors\"])), (properties_6 = ofArray([new Types_RequestProperties(0, [\"DELETE\"]), new Types_RequestProperties(1, [keyValueList(Helper_withContentTypeJson(data_5, empty()), 0)])]), defaultArg(map((data_1_2) => cons(new Types_RequestProperties(2, [toString(0, Auto_generateBoxedEncoderCached_437914C6(obj_type, caseStrategy_11, extra_11)(data_1_2))]), properties_6), data_5), properties_6)));\n const pr_2 = PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Helper_fetch(\"/api/account/sessions\", properties_3_1).then((_arg_4) => {\n let response_3, decoder_1_2;\n return ((response_3 = _arg_4, (decoder_1_2 = defaultArg(decoder_3, Auto_generateBoxedDecoderCached_Z6670B51(GenericResponse_$reflection(), unwrap(caseStrategy_11), unwrap(extra_11))), PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (((response_3.ok) ? PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (response_3.text().then((_arg_5) => {\n let matchValue_1;\n return Promise.resolve((matchValue_1 = fromString(uncurry2(decoder_1_2), _arg_5), (matchValue_1.tag === 1) ? (new FSharpResult$2(1, [new FetchError(1, [matchValue_1.fields[0]])])) : (new FSharpResult$2(0, [matchValue_1.fields[0]]))));\n })))) : (Promise.resolve(new FSharpResult$2(1, [new FetchError(2, [response_3])])))).then((_arg_1_2) => (Promise.resolve(_arg_1_2)))))))));\n }))));\n return pr_2.then(void 0, ((arg_1) => (new FSharpResult$2(1, [new FetchError(3, [arg_1])]))));\n }\n catch (exn_1) {\n return PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Promise.resolve(new FSharpResult$2(1, [new FetchError(0, [exn_1])])))));\n }\n })())))))).then((_arg_6) => {\n const res_1 = _arg_6;\n if (res_1.tag === 0) {\n if (res_1.fields[0].Result === \"success\") {\n window.location.reload(true);\n return Promise.resolve();\n }\n else {\n return Promise.resolve();\n }\n }\n else {\n return Promise.resolve();\n }\n });\n }));\n pr_3.then();\n }], [\"style\", {\n marginRight: 5,\n }]])), delay(() => singleton(MuiHelpers_createElement(Button, [[\"size\", \"small\"], [\"variant\", \"outlined\"], [\"children\", \"Avbryt\"], [\"onClick\", (_arg_8) => {\n setConfirm(false);\n }]])))) : singleton(MuiHelpers_createElement(Button, [[\"size\", \"small\"], [\"variant\", \"outlined\"], [\"children\", \"Logg ut fra alle enheter\"], [\"onClick\", (_arg_9) => {\n setConfirm(true);\n }]]))))), MuiHelpers_createElement(AccordionActions, [[\"children\", Interop_reactApi.Children.toArray(Array.from(children_1))]]))], [\"children\", Interop_reactApi.Children.toArray(Array.from(elements_5))])]);\n}\n\n","import { Union, Record } from \"./fable_modules/fable-library-js.4.17.0/Types.js\";\nimport { obj_type, union_type, record_type, bool_type, option_type, string_type } from \"./fable_modules/fable-library-js.4.17.0/Reflection.js\";\nimport { AccountInfo_$reflection, GenericResponse_$reflection } from \"./Types.js\";\nimport { FetchError, FetchError_$reflection } from \"./fable_modules/Thoth.Fetch.3.0.1/Fetch.fs.js\";\nimport { FSharpResult$2 } from \"./fable_modules/fable-library-js.4.17.0/Result.js\";\nimport { PromiseBuilder__Delay_62FBFDE1, PromiseBuilder__Run_212F1D4B } from \"./fable_modules/Fable.Promise.2.0.0/Promise.fs.js\";\nimport { promise } from \"./fable_modules/Fable.Promise.2.0.0/PromiseImpl.fs.js\";\nimport { Auto_generateBoxedEncoderCached_437914C6, Auto_generateBoxedEncoder_437914C6 } from \"./fable_modules/Thoth.Json.6.0.0/Encode.fs.js\";\nimport { Auto_generateBoxedDecoderCached_Z6670B51, Auto_generateBoxedDecoder_Z6670B51 } from \"./fable_modules/Thoth.Json.6.0.0/Decode.fs.js\";\nimport { unwrap, map, defaultArg, some } from \"./fable_modules/fable-library-js.4.17.0/Option.js\";\nimport { PromiseBuilder__Delay_62FBFDE1 as PromiseBuilder__Delay_62FBFDE1_1, PromiseBuilder__Run_212F1D4B as PromiseBuilder__Run_212F1D4B_1 } from \"./fable_modules/Fable.Promise.2.0.0/Promise.fs.js\";\nimport { promise as promise_1 } from \"./fable_modules/Fable.Promise.2.0.0/PromiseImpl.fs.js\";\nimport { Helper_fetch, Helper_withContentTypeJson, Helper_withProperties } from \"./fable_modules/Thoth.Fetch.3.0.1/Fetch.fs.js\";\nimport { Types_RequestProperties } from \"./fable_modules/Fable.Fetch.2.1.0/Fetch.fs.js\";\nimport { cons, ofArray, empty, singleton } from \"./fable_modules/fable-library-js.4.17.0/List.js\";\nimport { keyValueList } from \"./fable_modules/fable-library-js.4.17.0/MapUtil.js\";\nimport { toString } from \"./fable_modules/Thoth.Json.6.0.0/Encode.fs.js\";\nimport { fromString } from \"./fable_modules/Thoth.Json.6.0.0/Decode.fs.js\";\nimport { createObj, uncurry2 } from \"./fable_modules/fable-library-js.4.17.0/Util.js\";\nimport { createElement } from \"react\";\nimport React from \"react\";\nimport { useReact_useEffectOnce_3A5B6456, useReact_useReducer_2B9E6EA0 } from \"./fable_modules/Feliz.2.7.0/React.fs.js\";\nimport { MuiHelpers_createElement } from \"./Feliz.MaterialUI/Mui.js\";\nimport { AccordionActions, Button, AccordionDetails, TextField, Typography, AccordionSummary, Accordion } from \"@mui/material\";\nimport { Interop_reactApi } from \"./fable_modules/Feliz.2.7.0/Interop.fs.js\";\nimport { empty as empty_1, singleton as singleton_1, append, delay, toList } from \"./fable_modules/fable-library-js.4.17.0/Seq.js\";\nimport { LoadingIndicator_loadingIndicator, Alert_snackError } from \"./ViewHelpers.js\";\nimport { PasswordForm } from \"./PasswordForm.js\";\nimport { Sessions } from \"./Sessions.js\";\n\nclass DeleteForm_Model extends Record {\n constructor(Password, ErrorMsg, Processing) {\n super();\n this.Password = Password;\n this.ErrorMsg = ErrorMsg;\n this.Processing = Processing;\n }\n}\n\nfunction DeleteForm_Model_$reflection() {\n return record_type(\"UserAccount.DeleteForm.Model\", [], DeleteForm_Model, () => [[\"Password\", string_type], [\"ErrorMsg\", option_type(string_type)], [\"Processing\", bool_type]]);\n}\n\nclass DeleteForm_Message extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"UpdatePassword\", \"DismissError\", \"Commit\", \"CommitResponse\"];\n }\n}\n\nfunction DeleteForm_Message_$reflection() {\n return union_type(\"UserAccount.DeleteForm.Message\", [], DeleteForm_Message, () => [[[\"Item\", string_type]], [], [], [[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [GenericResponse_$reflection(), FetchError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", GenericResponse_$reflection()]], [[\"ErrorValue\", FetchError_$reflection()]]])]]]);\n}\n\nfunction DeleteForm_init(emailRegistered) {\n return new DeleteForm_Model(\"\", undefined, false);\n}\n\nfunction DeleteForm_update(model, msg) {\n switch (msg.tag) {\n case 1:\n return new DeleteForm_Model(model.Password, undefined, model.Processing);\n case 2:\n if (model.Password.length > 0) {\n return new DeleteForm_Model(model.Password, undefined, true);\n }\n else {\n return new DeleteForm_Model(model.Password, \"Ugyldig passord\", model.Processing);\n }\n case 3: {\n const res = msg.fields[0];\n if (res.tag === 1) {\n const errMsg = \"Kunne ikke slette bruker. Vennligst prøv igjen senere. Om problemet vedvarer ta kontakt med support@quasaras.com\";\n return new DeleteForm_Model(model.Password, errMsg, false);\n }\n else {\n const x_1 = res.fields[0];\n if (x_1.Result === \"success\") {\n window.location.reload();\n return model;\n }\n else {\n return new DeleteForm_Model(model.Password, x_1.Message, false);\n }\n }\n }\n default:\n return new DeleteForm_Model(msg.fields[0], model.ErrorMsg, model.Processing);\n }\n}\n\nfunction DeleteForm_commit(password, emailRegistered, dispatch) {\n const pr_1 = PromiseBuilder__Run_212F1D4B(promise, PromiseBuilder__Delay_62FBFDE1(promise, () => {\n let body, decoder, data_1, caseStrategy_3, extra_3;\n dispatch(new DeleteForm_Message(2, []));\n return ((password.length > 0) ? true : !emailRegistered) ? (((body = Auto_generateBoxedEncoder_437914C6(string_type, undefined, undefined, undefined)(password), (decoder = Auto_generateBoxedDecoder_Z6670B51(GenericResponse_$reflection(), undefined, undefined), (data_1 = some(body), (caseStrategy_3 = undefined, (extra_3 = undefined, (() => {\n let properties_2;\n try {\n const properties_3 = Helper_withProperties(singleton(new Types_RequestProperties(3, [\"cors\"])), (properties_2 = ofArray([new Types_RequestProperties(0, [\"POST\"]), new Types_RequestProperties(1, [keyValueList(Helper_withContentTypeJson(data_1, empty()), 0)])]), defaultArg(map((data_1_1) => cons(new Types_RequestProperties(2, [toString(0, Auto_generateBoxedEncoderCached_437914C6(obj_type, caseStrategy_3, extra_3)(data_1_1))]), properties_2), data_1), properties_2)));\n const pr = PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Helper_fetch(\"/api/account/delete\", properties_3).then((_arg) => {\n let response_1, decoder_1_1;\n return ((response_1 = _arg, (decoder_1_1 = defaultArg(decoder, Auto_generateBoxedDecoderCached_Z6670B51(GenericResponse_$reflection(), unwrap(caseStrategy_3), unwrap(extra_3))), PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (((response_1.ok) ? PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (response_1.text().then((_arg_1) => {\n let matchValue;\n return Promise.resolve((matchValue = fromString(uncurry2(decoder_1_1), _arg_1), (matchValue.tag === 1) ? (new FSharpResult$2(1, [new FetchError(1, [matchValue.fields[0]])])) : (new FSharpResult$2(0, [matchValue.fields[0]]))));\n })))) : (Promise.resolve(new FSharpResult$2(1, [new FetchError(2, [response_1])])))).then((_arg_1_1) => (Promise.resolve(_arg_1_1)))))))));\n }))));\n return pr.then(void 0, ((arg) => (new FSharpResult$2(1, [new FetchError(3, [arg])]))));\n }\n catch (exn) {\n return PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Promise.resolve(new FSharpResult$2(1, [new FetchError(0, [exn])])))));\n }\n })())))))).then((_arg_2) => {\n dispatch(new DeleteForm_Message(3, [_arg_2]));\n return Promise.resolve();\n })) : (Promise.resolve());\n }));\n pr_1.then();\n}\n\nexport function DeleteForm_DeleteForm(deleteForm_DeleteFormInputProps) {\n let elements_3, elements, children_2, children, children_3;\n const emailRegistered = deleteForm_DeleteFormInputProps.emailRegistered;\n const patternInput = useReact_useReducer_2B9E6EA0(DeleteForm_update, DeleteForm_init(emailRegistered));\n const model_1 = patternInput[0];\n const dispatch = patternInput[1];\n return MuiHelpers_createElement(Accordion, [(elements_3 = [MuiHelpers_createElement(AccordionSummary, [[\"expandIcon\", createElement(\"i\", {\n className: \"fas fa-chevron-down\",\n })], (elements = [MuiHelpers_createElement(Typography, [[\"children\", \"Slett bruker\"]])], [\"children\", Interop_reactApi.Children.toArray(Array.from(elements))])]), (children_2 = singleton((children = toList(delay(() => append(singleton_1(createElement(\"p\", {\n style: {\n fontSize: 0.9 + \"rem\",\n },\n children: \"Brukerkontoen din vil bli permanent slettet. Den vil ikke kunne gjennopprettes.\",\n })), delay(() => append(emailRegistered ? singleton_1(MuiHelpers_createElement(TextField, [[\"style\", {\n marginTop: 10,\n marginBottom: 10,\n }], [\"required\", true], [\"type\", \"password\"], [\"variant\", \"outlined\"], [\"label\", \"Passord\"], [\"onChange\", (e) => {\n dispatch(new DeleteForm_Message(0, [e.target.value]));\n }], [\"size\", \"small\"], [\"fullWidth\", true]])) : empty_1(), delay(() => singleton_1(Alert_snackError(model_1.ErrorMsg, () => {\n dispatch(new DeleteForm_Message(1, []));\n })))))))), createElement(\"div\", {\n children: Interop_reactApi.Children.toArray(Array.from(children)),\n }))), MuiHelpers_createElement(AccordionDetails, [[\"children\", Interop_reactApi.Children.toArray(Array.from(children_2))]])), (children_3 = singleton(MuiHelpers_createElement(Button, [[\"size\", \"small\"], [\"variant\", \"outlined\"], [\"children\", \"Slett konto\"], [\"onClick\", (_arg_1) => {\n if (!model_1.Processing) {\n DeleteForm_commit(model_1.Password, emailRegistered, dispatch);\n }\n }]])), MuiHelpers_createElement(AccordionActions, [[\"children\", Interop_reactApi.Children.toArray(Array.from(children_3))]]))], [\"children\", Interop_reactApi.Children.toArray(Array.from(elements_3))])]);\n}\n\nclass Model extends Record {\n constructor(AccountInfo, EmailRequested, ErrorMsg) {\n super();\n this.AccountInfo = AccountInfo;\n this.EmailRequested = EmailRequested;\n this.ErrorMsg = ErrorMsg;\n }\n}\n\nfunction Model_$reflection() {\n return record_type(\"UserAccount.Model\", [], Model, () => [[\"AccountInfo\", option_type(AccountInfo_$reflection())], [\"EmailRequested\", bool_type], [\"ErrorMsg\", option_type(string_type)]]);\n}\n\nclass Message extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"UserInfoResponse\", \"EmailRequestResponse\", \"DismissError\"];\n }\n}\n\nfunction Message_$reflection() {\n return union_type(\"UserAccount.Message\", [], Message, () => [[[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [AccountInfo_$reflection(), FetchError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", AccountInfo_$reflection()]], [[\"ErrorValue\", FetchError_$reflection()]]])]], [[\"Item\", union_type(\"Microsoft.FSharp.Core.FSharpResult`2\", [GenericResponse_$reflection(), FetchError_$reflection()], FSharpResult$2, () => [[[\"ResultValue\", GenericResponse_$reflection()]], [[\"ErrorValue\", FetchError_$reflection()]]])]], []]);\n}\n\nfunction init() {\n return new Model(undefined, false, undefined);\n}\n\nfunction update(model, msg) {\n switch (msg.tag) {\n case 1: {\n const res_1 = msg.fields[0];\n if (res_1.tag === 0) {\n const x_1 = res_1.fields[0];\n if (x_1.Result === \"success\") {\n return new Model(model.AccountInfo, true, model.ErrorMsg);\n }\n else {\n return new Model(model.AccountInfo, model.EmailRequested, x_1.Message);\n }\n }\n else {\n return new Model(model.AccountInfo, model.EmailRequested, \"Kunne ikke forespørre ny e-post. Vennligst prøv igjen senere.\");\n }\n }\n case 2:\n return new Model(model.AccountInfo, model.EmailRequested, undefined);\n default: {\n const res = msg.fields[0];\n if (res.tag === 1) {\n return new Model(model.AccountInfo, model.EmailRequested, \"Kunne ikke laste kontoinformasjon. Vennligst prøv igjen senere.\");\n }\n else {\n return new Model(res.fields[0], model.EmailRequested, model.ErrorMsg);\n }\n }\n }\n}\n\nfunction fetchAccountInfo(dispatch) {\n const pr_1 = PromiseBuilder__Run_212F1D4B(promise, PromiseBuilder__Delay_62FBFDE1(promise, () => {\n let decoder, data_1, caseStrategy_2, extra_2;\n return ((decoder = Auto_generateBoxedDecoder_Z6670B51(AccountInfo_$reflection(), undefined, undefined), (data_1 = undefined, (caseStrategy_2 = undefined, (extra_2 = undefined, (() => {\n let properties_2;\n try {\n const properties_3 = Helper_withProperties(empty(), (properties_2 = ofArray([new Types_RequestProperties(0, [\"GET\"]), new Types_RequestProperties(1, [keyValueList(Helper_withContentTypeJson(data_1, empty()), 0)])]), defaultArg(map((data_1_1) => cons(new Types_RequestProperties(2, [toString(0, Auto_generateBoxedEncoderCached_437914C6(obj_type, caseStrategy_2, extra_2)(data_1_1))]), properties_2), data_1), properties_2)));\n const pr = PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Helper_fetch(\"/api/account/info\", properties_3).then((_arg) => {\n let response_1, decoder_1_1;\n return ((response_1 = _arg, (decoder_1_1 = defaultArg(decoder, Auto_generateBoxedDecoderCached_Z6670B51(AccountInfo_$reflection(), unwrap(caseStrategy_2), unwrap(extra_2))), PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (((response_1.ok) ? PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (response_1.text().then((_arg_1) => {\n let matchValue;\n return Promise.resolve((matchValue = fromString(uncurry2(decoder_1_1), _arg_1), (matchValue.tag === 1) ? (new FSharpResult$2(1, [new FetchError(1, [matchValue.fields[0]])])) : (new FSharpResult$2(0, [matchValue.fields[0]]))));\n })))) : (Promise.resolve(new FSharpResult$2(1, [new FetchError(2, [response_1])])))).then((_arg_1_1) => (Promise.resolve(_arg_1_1)))))))));\n }))));\n return pr.then(void 0, ((arg) => (new FSharpResult$2(1, [new FetchError(3, [arg])]))));\n }\n catch (exn) {\n return PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Promise.resolve(new FSharpResult$2(1, [new FetchError(0, [exn])])))));\n }\n })()))))).then((_arg_2) => {\n dispatch(new Message(0, [_arg_2]));\n return Promise.resolve();\n });\n }));\n pr_1.then();\n}\n\nfunction requestEmail(dispatch) {\n const pr_1 = PromiseBuilder__Run_212F1D4B(promise, PromiseBuilder__Delay_62FBFDE1(promise, () => {\n let body, decoder, data_1, caseStrategy_3, extra_3;\n return ((body = Auto_generateBoxedEncoder_437914C6(string_type, undefined, undefined, undefined)(\"\"), (decoder = Auto_generateBoxedDecoder_Z6670B51(GenericResponse_$reflection(), undefined, undefined), (data_1 = some(body), (caseStrategy_3 = undefined, (extra_3 = undefined, (() => {\n let properties_2;\n try {\n const properties_3 = Helper_withProperties(singleton(new Types_RequestProperties(3, [\"cors\"])), (properties_2 = ofArray([new Types_RequestProperties(0, [\"POST\"]), new Types_RequestProperties(1, [keyValueList(Helper_withContentTypeJson(data_1, empty()), 0)])]), defaultArg(map((data_1_1) => cons(new Types_RequestProperties(2, [toString(0, Auto_generateBoxedEncoderCached_437914C6(obj_type, caseStrategy_3, extra_3)(data_1_1))]), properties_2), data_1), properties_2)));\n const pr = PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Helper_fetch(\"/sign-up/resend\", properties_3).then((_arg) => {\n let response_1, decoder_1_1;\n return ((response_1 = _arg, (decoder_1_1 = defaultArg(decoder, Auto_generateBoxedDecoderCached_Z6670B51(GenericResponse_$reflection(), unwrap(caseStrategy_3), unwrap(extra_3))), PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (((response_1.ok) ? PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (response_1.text().then((_arg_1) => {\n let matchValue;\n return Promise.resolve((matchValue = fromString(uncurry2(decoder_1_1), _arg_1), (matchValue.tag === 1) ? (new FSharpResult$2(1, [new FetchError(1, [matchValue.fields[0]])])) : (new FSharpResult$2(0, [matchValue.fields[0]]))));\n })))) : (Promise.resolve(new FSharpResult$2(1, [new FetchError(2, [response_1])])))).then((_arg_1_1) => (Promise.resolve(_arg_1_1)))))))));\n }))));\n return pr.then(void 0, ((arg) => (new FSharpResult$2(1, [new FetchError(3, [arg])]))));\n }\n catch (exn) {\n return PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Promise.resolve(new FSharpResult$2(1, [new FetchError(0, [exn])])))));\n }\n })())))))).then((_arg_2) => {\n dispatch(new Message(1, [_arg_2]));\n return Promise.resolve();\n });\n }));\n pr_1.then();\n}\n\nfunction drawAccountInfo(accountInfo, emailRequested, dispatch) {\n let elems_4, elems_1, elems, elems_3;\n return createElement(\"div\", createObj(ofArray([[\"style\", {\n display: \"flex\",\n paddingBottom: 20 + \"px\",\n borderBottom: (((2 + \"px \") + \"solid\") + \" \") + \"#aaa\",\n marginBottom: 20 + \"px\",\n }], (elems_4 = [createElement(\"div\", createObj(ofArray([[\"style\", {\n marginRight: 20 + \"px\",\n display: \"flex\",\n alignItems: \"center\",\n }], (elems_1 = [createElement(\"div\", createObj(ofArray([[\"className\", \"user-avatar\"], [\"style\", {\n width: 100,\n height: 100,\n }], (elems = [createElement(\"img\", {\n alt: accountInfo.Username,\n src: `/api/user/image/${loggedInUserId}`,\n })], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems))])])))], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_1))])]))), createElement(\"div\", createObj(ofArray([[\"style\", {\n display: \"flex\",\n flexDirection: \"column\",\n }], (elems_3 = toList(delay(() => {\n const row = (x) => createElement(\"span\", {\n style: {\n fontSize: 0.9 + \"rem\",\n },\n children: x,\n });\n return append(singleton_1(createElement(\"span\", {\n style: {\n fontSize: 1.6 + \"rem\",\n fontWeight: \"bold\",\n },\n children: accountInfo.Username,\n })), delay(() => append(singleton_1(row(accountInfo.Email)), delay(() => {\n let elems_2;\n return append(singleton_1(createElement(\"div\", createObj(ofArray([[\"style\", {\n display: \"flex\",\n }], (elems_2 = toList(delay(() => append(singleton_1(row(`E-post bekreftet: ${accountInfo.EmailVerified ? \"Ja\" : \"Nei\"}`)), delay(() => (emailRequested ? singleton_1(createElement(\"span\", {\n style: {\n fontSize: 0.9 + \"rem\",\n marginLeft: 5,\n textDecorationLine: \"underline\",\n },\n children: \"E-post sendt\",\n })) : (!accountInfo.EmailVerified ? singleton_1(createElement(\"span\", {\n style: {\n fontSize: 0.9 + \"rem\",\n marginLeft: 15,\n cursor: \"pointer\",\n color: \"#000000\",\n textDecorationLine: \"underline\",\n },\n onClick: (_arg) => {\n requestEmail(dispatch);\n },\n children: \"Send ny bekreftelses e-post\",\n })) : empty_1())))))), [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_2))])])))), delay(() => append(singleton_1(row(`Medlem siden ${accountInfo.Joined}`)), delay(() => append(accountInfo.AppleRegistered ? singleton_1(row(\"Koblet mot Apple-konto\")) : empty_1(), delay(() => (accountInfo.GoogleRegistered ? singleton_1(row(\"Koblet mot Google-konto\")) : empty_1())))))));\n }))));\n })), [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_3))])])))], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_4))])])));\n}\n\nfunction DrawSettings(x) {\n const children = toList(delay(() => append(x.EmailRegistered ? singleton_1(createElement(PasswordForm, null)) : empty_1(), delay(() => append(singleton_1(createElement(Sessions, null)), delay(() => singleton_1(createElement(DeleteForm_DeleteForm, {\n emailRegistered: x.EmailRegistered,\n }))))))));\n return createElement(\"div\", {\n children: Interop_reactApi.Children.toArray(Array.from(children)),\n });\n}\n\nexport function UserAccount() {\n let elems_1, elems;\n const patternInput = useReact_useReducer_2B9E6EA0(update, init());\n const model_1 = patternInput[0];\n const dispatch = patternInput[1];\n useReact_useEffectOnce_3A5B6456(() => {\n fetchAccountInfo(dispatch);\n });\n return createElement(\"div\", createObj(ofArray([[\"style\", {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: 10,\n }], (elems_1 = [createElement(\"div\", createObj(ofArray([[\"style\", {\n maxWidth: 600,\n marginTop: 20,\n }], (elems = toList(delay(() => append(singleton_1(Alert_snackError(model_1.ErrorMsg, () => {\n dispatch(new Message(2, []));\n })), delay(() => {\n const matchValue = model_1.AccountInfo;\n if (matchValue != null) {\n const accountInfo = matchValue;\n return append(singleton_1(drawAccountInfo(accountInfo, model_1.EmailRequested, dispatch)), delay(() => singleton_1(createElement(DrawSettings, accountInfo))));\n }\n else {\n return singleton_1(LoadingIndicator_loadingIndicator());\n }\n })))), [\"children\", Interop_reactApi.Children.toArray(Array.from(elems))])])))], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_1))])])));\n}\n\n","import { createElement } from \"react\";\nimport React from \"react\";\nimport { useFeliz_React__React_useState_Static_1505 } from \"./fable_modules/Feliz.2.7.0/React.fs.js\";\nimport { uncurry2, createObj } from \"./fable_modules/fable-library-js.4.17.0/Util.js\";\nimport { singleton, append, delay, toList } from \"./fable_modules/fable-library-js.4.17.0/Seq.js\";\nimport { cons, empty, singleton as singleton_1, ofArray } from \"./fable_modules/fable-library-js.4.17.0/List.js\";\nimport { MuiHelpers_createElement } from \"./Feliz.MaterialUI/Mui.js\";\nimport { Button, TextField } from \"@mui/material\";\nimport { PromiseBuilder__Delay_62FBFDE1, PromiseBuilder__Run_212F1D4B } from \"./fable_modules/Fable.Promise.2.0.0/Promise.fs.js\";\nimport { promise } from \"./fable_modules/Fable.Promise.2.0.0/PromiseImpl.fs.js\";\nimport { Auto_generateBoxedEncoderCached_437914C6, Auto_generateBoxedEncoder_437914C6 } from \"./fable_modules/Thoth.Json.6.0.0/Encode.fs.js\";\nimport { obj_type, tuple_type, string_type, int32_type } from \"./fable_modules/fable-library-js.4.17.0/Reflection.js\";\nimport { Auto_generateBoxedDecoderCached_Z6670B51, Auto_generateBoxedDecoder_Z6670B51 } from \"./fable_modules/Thoth.Json.6.0.0/Decode.fs.js\";\nimport { GenericResponse_$reflection } from \"./Types.js\";\nimport { unwrap, map, defaultArg, some } from \"./fable_modules/fable-library-js.4.17.0/Option.js\";\nimport { PromiseBuilder__Delay_62FBFDE1 as PromiseBuilder__Delay_62FBFDE1_1, PromiseBuilder__Run_212F1D4B as PromiseBuilder__Run_212F1D4B_1 } from \"./fable_modules/Fable.Promise.2.0.0/Promise.fs.js\";\nimport { promise as promise_1 } from \"./fable_modules/Fable.Promise.2.0.0/PromiseImpl.fs.js\";\nimport { FetchError } from \"./fable_modules/Thoth.Fetch.3.0.1/Fetch.fs.js\";\nimport { FSharpResult$2 } from \"./fable_modules/fable-library-js.4.17.0/Result.js\";\nimport { Helper_fetch, Helper_withContentTypeJson, Helper_withProperties } from \"./fable_modules/Thoth.Fetch.3.0.1/Fetch.fs.js\";\nimport { Types_RequestProperties } from \"./fable_modules/Fable.Fetch.2.1.0/Fetch.fs.js\";\nimport { keyValueList } from \"./fable_modules/fable-library-js.4.17.0/MapUtil.js\";\nimport { toString } from \"./fable_modules/Thoth.Json.6.0.0/Encode.fs.js\";\nimport { fromString } from \"./fable_modules/Thoth.Json.6.0.0/Decode.fs.js\";\nimport { Interop_reactApi } from \"./fable_modules/Feliz.2.7.0/Interop.fs.js\";\nimport { Alert_snackError } from \"./ViewHelpers.js\";\n\nexport function Form() {\n let elems_3, elems_2;\n const patternInput = useFeliz_React__React_useState_Static_1505(\"\");\n const feedback = patternInput[0];\n const patternInput_1 = useFeliz_React__React_useState_Static_1505(1);\n const patternInput_2 = useFeliz_React__React_useState_Static_1505(undefined);\n const setErrMsg = patternInput_2[1];\n const patternInput_3 = useFeliz_React__React_useState_Static_1505(false);\n return createElement(\"div\", createObj(ofArray([[\"style\", {\n display: \"flex\",\n justifyContent: \"center\",\n padding: 2 + \"vw\",\n }], (elems_3 = [createElement(\"div\", createObj(ofArray([[\"style\", {\n maxWidth: 600,\n width: 100 + \"%\",\n display: \"flex\",\n flexDirection: \"column\",\n }], (elems_2 = toList(delay(() => append(singleton(createElement(\"span\", {\n style: {\n fontSize: 1.6 + \"rem\",\n },\n children: \"Tilbakemelding\",\n })), delay(() => {\n let value_24, elems_1;\n return !patternInput_3[0] ? append(singleton(createElement(\"span\", createObj(ofArray([[\"style\", {\n marginBottom: 10,\n }], (value_24 = \"Har du ett forslag til funksjonalitet? Er det noe som ikke fungerer godt nok? Har du bare lyst å lette tankene? (relevant til Aksje.io plattformen da)\", [\"children\", value_24])])))), delay(() => append(singleton(MuiHelpers_createElement(TextField, [[\"fullWidth\", true], [\"onChange\", (e) => {\n patternInput[1](e.target.value);\n }], [\"multiline\", true], [\"label\", `${feedback.length}/${1000}`], [\"error\", feedback.length > 1000], [\"variant\", \"outlined\"], [\"size\", \"small\"]])), delay(() => {\n let elems;\n return append(singleton(createElement(\"div\", createObj(ofArray([[\"style\", {\n padding: 10,\n textAlign: \"center\",\n }], (elems = [MuiHelpers_createElement(Button, [[\"size\", \"small\"], [\"variant\", \"outlined\"], [\"children\", \"Send inn\"], [\"onClick\", (_arg_3) => {\n const pr_1 = PromiseBuilder__Run_212F1D4B(promise, PromiseBuilder__Delay_62FBFDE1(promise, () => {\n let body, decoder, data_1, caseStrategy_3, extra_3;\n if (feedback.length === 0) {\n setErrMsg(\"Vennligst oppgi tilbakemelding\");\n return Promise.resolve();\n }\n else if (feedback.length < 20) {\n setErrMsg(\"Vennligst oppgi flere detaljer\");\n return Promise.resolve();\n }\n else if (feedback.length > 1000) {\n setErrMsg(\"Maks lengde på tilbakemelding nådd\");\n return Promise.resolve();\n }\n else {\n return ((body = Auto_generateBoxedEncoder_437914C6(tuple_type(int32_type, string_type), undefined, undefined, undefined)([patternInput_1[0], feedback]), (decoder = Auto_generateBoxedDecoder_Z6670B51(GenericResponse_$reflection(), undefined, undefined), (data_1 = some(body), (caseStrategy_3 = undefined, (extra_3 = undefined, (() => {\n let properties_2;\n try {\n const properties_3 = Helper_withProperties(singleton_1(new Types_RequestProperties(3, [\"cors\"])), (properties_2 = ofArray([new Types_RequestProperties(0, [\"POST\"]), new Types_RequestProperties(1, [keyValueList(Helper_withContentTypeJson(data_1, empty()), 0)])]), defaultArg(map((data_1_1) => cons(new Types_RequestProperties(2, [toString(0, Auto_generateBoxedEncoderCached_437914C6(obj_type, caseStrategy_3, extra_3)(data_1_1))]), properties_2), data_1), properties_2)));\n const pr = PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Helper_fetch(\"/api/feedback\", properties_3).then((_arg) => {\n let response_1, decoder_1_1;\n return ((response_1 = _arg, (decoder_1_1 = defaultArg(decoder, Auto_generateBoxedDecoderCached_Z6670B51(GenericResponse_$reflection(), unwrap(caseStrategy_3), unwrap(extra_3))), PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (((response_1.ok) ? PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (response_1.text().then((_arg_1) => {\n let matchValue;\n return Promise.resolve((matchValue = fromString(uncurry2(decoder_1_1), _arg_1), (matchValue.tag === 1) ? (new FSharpResult$2(1, [new FetchError(1, [matchValue.fields[0]])])) : (new FSharpResult$2(0, [matchValue.fields[0]]))));\n })))) : (Promise.resolve(new FSharpResult$2(1, [new FetchError(2, [response_1])])))).then((_arg_1_1) => (Promise.resolve(_arg_1_1)))))))));\n }))));\n return pr.then(void 0, ((arg) => (new FSharpResult$2(1, [new FetchError(3, [arg])]))));\n }\n catch (exn) {\n return PromiseBuilder__Run_212F1D4B_1(promise_1, PromiseBuilder__Delay_62FBFDE1_1(promise_1, () => (Promise.resolve(new FSharpResult$2(1, [new FetchError(0, [exn])])))));\n }\n })())))))).then((_arg_2) => {\n const res = _arg_2;\n if (res.tag === 0) {\n const x_1 = res.fields[0];\n if (x_1.Result === \"success\") {\n patternInput_3[1](true);\n return Promise.resolve();\n }\n else {\n setErrMsg(x_1.Message);\n return Promise.resolve();\n }\n }\n else {\n setErrMsg(\"Kunne ikke sende tilbakemelding. Vennligst prøv igjen senere.\");\n return Promise.resolve();\n }\n });\n }\n }));\n pr_1.then();\n }]])], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems))])])))), delay(() => singleton(Alert_snackError(patternInput_2[0], () => {\n setErrMsg(undefined);\n }))));\n })))) : singleton(createElement(\"div\", createObj(ofArray([[\"style\", {\n paddingTop: 50,\n textAlign: \"center\",\n }], (elems_1 = [createElement(\"span\", {\n style: {\n fontSize: 1.3 + \"rem\",\n },\n children: \"Din tilbakemelding er sendt til oss!\",\n }), createElement(\"p\", {\n style: {\n fontSize: 0.8 + \"rem\",\n marginTop: 10,\n },\n children: \"Takk for at du deler din mening, det settes stor pris på.\",\n })], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_1))])]))));\n })))), [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_2))])])))], [\"children\", Interop_reactApi.Children.toArray(Array.from(elems_3))])])));\n}\n\n","import { Union } from \"./fable_modules/fable-library-js.4.17.0/Types.js\";\nimport { union_type, int32_type, string_type } from \"./fable_modules/fable-library-js.4.17.0/Reflection.js\";\nimport { ofArray, singleton, tail, head, isEmpty } from \"./fable_modules/fable-library-js.4.17.0/List.js\";\nimport { Route_$007CInt$007C_$007C, Route_$007CQuery$007C_$007C } from \"./fable_modules/Feliz.Router.4.0.0/Router.fs.js\";\nimport { createElement } from \"react\";\nimport React from \"react\";\nimport { Interop_reactApi } from \"./fable_modules/Feliz.2.7.0/Interop.fs.js\";\nimport { useFeliz_React__React_useState_Static_1505 } from \"./fable_modules/Feliz.2.7.0/React.fs.js\";\nimport { RouterModule_urlSegments } from \"./fable_modules/Feliz.Router.4.0.0/Router.fs.js\";\nimport { createObj } from \"./fable_modules/fable-library-js.4.17.0/Util.js\";\nimport { singleton as singleton_1, delay, toList } from \"./fable_modules/fable-library-js.4.17.0/Seq.js\";\nimport { LoginHolder } from \"./Login.js\";\nimport { RegisterHolder } from \"./Register.js\";\nimport { UserAccount } from \"./UserAccount.js\";\nimport { Form } from \"./Feedback.js\";\nimport { PasswordRecovery } from \"./PasswordRecovery.js\";\nimport { Interop_reactApi as Interop_reactApi_1 } from \"./fable_modules/Feliz.2.7.0/Interop.fs.js\";\nimport { GoogleOAuthProvider } from \"@react-oauth/google\";\nimport { createRoot } from \"react-dom/client\";\nimport \"../assets/style.scss\";\n\n\nexport class Location extends Union {\n constructor(tag, fields) {\n super();\n this.tag = tag;\n this.fields = fields;\n }\n cases() {\n return [\"Login\", \"Register\", \"UserAccount\", \"PwRecovery\", \"Feedback\", \"NotFound\"];\n }\n}\n\nexport function Location_$reflection() {\n return union_type(\"Account.Location\", [], Location, () => [[], [], [], [[\"Item1\", string_type], [\"Item2\", int32_type]], [], []]);\n}\n\nexport function Location_FromUrl_7F866359(x) {\n let matchResult, reference, userId;\n if (!isEmpty(x)) {\n switch (head(x)) {\n case \"sign-in\": {\n if (isEmpty(tail(x))) {\n matchResult = 0;\n }\n else {\n matchResult = 5;\n }\n break;\n }\n case \"sign-up\": {\n if (isEmpty(tail(x))) {\n matchResult = 1;\n }\n else {\n matchResult = 5;\n }\n break;\n }\n case \"account\": {\n if (isEmpty(tail(x))) {\n matchResult = 2;\n }\n else {\n matchResult = 5;\n }\n break;\n }\n case \"feedback\": {\n if (isEmpty(tail(x))) {\n matchResult = 3;\n }\n else {\n matchResult = 5;\n }\n break;\n }\n case \"password-recovery\": {\n if (!isEmpty(tail(x))) {\n if (!isEmpty(tail(tail(x)))) {\n const activePatternResult = Route_$007CQuery$007C_$007C(head(tail(tail(x))));\n if (activePatternResult != null) {\n if (!isEmpty(activePatternResult)) {\n if (head(activePatternResult)[0] === \"uid\") {\n const activePatternResult_1 = Route_$007CInt$007C_$007C(head(activePatternResult)[1]);\n if (activePatternResult_1 != null) {\n if (isEmpty(tail(activePatternResult))) {\n if (isEmpty(tail(tail(tail(x))))) {\n matchResult = 4;\n reference = head(tail(x));\n userId = activePatternResult_1;\n }\n else {\n matchResult = 5;\n }\n }\n else {\n matchResult = 5;\n }\n }\n else {\n matchResult = 5;\n }\n }\n else {\n matchResult = 5;\n }\n }\n else {\n matchResult = 5;\n }\n }\n else {\n matchResult = 5;\n }\n }\n else {\n matchResult = 5;\n }\n }\n else {\n matchResult = 5;\n }\n break;\n }\n default:\n matchResult = 5;\n }\n }\n else {\n matchResult = 5;\n }\n switch (matchResult) {\n case 0:\n return new Location(0, []);\n case 1:\n return new Location(1, []);\n case 2:\n return new Location(2, []);\n case 3:\n return new Location(4, []);\n case 4:\n return new Location(3, [reference, userId]);\n default:\n return new Location(5, []);\n }\n}\n\nfunction notFound() {\n const children = singleton(createElement(\"span\", {\n children: [\"404 - Fant ikke siden\"],\n }));\n return createElement(\"div\", {\n children: Interop_reactApi.Children.toArray(Array.from(children)),\n });\n}\n\nexport function Account() {\n let elems;\n const location = useFeliz_React__React_useState_Static_1505(Location_FromUrl_7F866359(RouterModule_urlSegments(window.location.pathname + window.location.search, 2)))[0];\n const props_1 = [[\"clientId\", \"768029527019-r3c69btl1u386u0d709ahcl830e4v67k.apps.googleusercontent.com\"], [\"children\", singleton(createElement(\"div\", createObj(ofArray([[\"style\", {\n marginTop: 52,\n }], (elems = toList(delay(() => ((location.tag === 0) ? singleton_1(LoginHolder()) : ((location.tag === 1) ? singleton_1(RegisterHolder()) : ((location.tag === 2) ? singleton_1(createElement(UserAccount, null)) : ((location.tag === 4) ? singleton_1(createElement(Form, null)) : ((location.tag === 3) ? singleton_1(createElement(PasswordRecovery, {\n reference: location.fields[0],\n userId: location.fields[1],\n })) : singleton_1(notFound())))))))), [\"children\", Interop_reactApi.Children.toArray(Array.from(elems))])]))))]];\n return Interop_reactApi_1.createElement(GoogleOAuthProvider, createObj(props_1));\n}\n\nexport const root = createRoot(document.getElementById(\"aksjeio-app\"));\n\nroot.render(createElement(Account, null));\n\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk\"] = self[\"webpackChunk\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [96], () => (__webpack_require__(2173)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","isArrayLike","x","Array","isArray","ArrayBuffer","isView","disposeSafe","Dispose","isDisposable","sameConstructor","y","_Object$getPrototypeO","_Object$getPrototypeO2","Object","getPrototypeOf","constructor","Enumerator","_createClass","iter","_classCallCheck","this","current","key","value","cur","next","done","Error","getEnumerator","e","GetEnumerator","Symbol","iterator","toIterator","en","hasNext","undefined","Lazy","factory","isValueCreated","get","createdValue","padWithZeros","i","length","toString","padStart","dateOffset","date","date1","offset","kind","getTimezoneOffset","int32ToString","radix","ObjectRef","o","idMap","has","set","count","stringHash","s","h","len","charCodeAt","numberHash","combineHashCodes","hashes","h1","structuralHash","_typeof","bigintHash","_Object$getPrototypeO3","GetHashCode","isHashable","arrayHash","Date","getTime","dateHash","values","map","v","id","equalArraysWith","eq","equalArrays","equals","Equals","isEquatable","compareDates","_Object$getPrototypeO4","xKeys","keys","yKeys","sort","equalObjects","xtime","ytime","comparePrimitives","compareArrays","comp","j","compareArraysWith","compare","CompareTo","isComparable","_Object$getPrototypeO5","compareObjects","createObj","fields","_step","obj","_iterator","_createForOfIteratorHelper","n","kv","err","f","WeakMap","curried","uncurry2","f2","a1","a2","curry2","_curried$get","callStack","arguments","self","str","seqToString","_cons$name","cons","entries","_ref","_ref2","_slicedToArray","join","name","String","Union","cases","tag","concat","fieldStr","withParens","indexOf","unionToString","splice","other","Record","recordToJSON","_ref3","_ref4","recordToString","recordGetHashCode","thisNames","recordEquals","result","recordCompareTo","FSharpRef","contentsOrGetter","setter","getter","shortDays","longDays","shortMonths","longMonths","parseRepeatToken","format","pos","patternChar","tokenLength","internalPos","parseNextChar","parseQuotedString","beginPos","quoteChar","foundQuote","currentChar","dateToStringWithCustomFormat","utc","cursorPos","localizedDate","DateTime","token","day","dayOfWeek","precision","Math","pow","floor","millisecond","padEnd","hour","dateOffsetToString","minute","month","second","getHours","getFullYear","utcOffsetText","toLocalTime","sign","hours","parseInt","substring","minutes","_parseQuotedString2","nextChar","fromCharCode","nextChar2","isMinus","abs","dateToHalfUTCString","half","toISOString","_provider","_date$offset","_date$offset3","_date$offset2","dateWithOffset","d","replace","dateToStringWithOffset","toUTCString","toLocaleString","toLocaleDateString","toLocaleTimeString","printOffset","getMonth","getDate","getMinutes","getSeconds","getMilliseconds","dateToISOString","dateToStringWithKind","parseRaw","input","fail","trim","isNaN","m","exec","baseDate","timeInSeconds","timeParts","split","hourPart","parseFloat","toUpperCase","getUTCFullYear","getUTCMonth","getUTCDate","offsetInMinutes","parse","detectUTC","_parseRaw2","tryParse","defValue","contents","_err","utcNow","now","toUniversalTime","getUTCHours","getUTCMilliseconds","getUTCMinutes","getUTCSeconds","getUTCDay","getDay","op_Subtraction","that","ts","newDate","oldTzOffset","newTzOffset","add","symbol","isNumeric","multiply","BigInt","toFixed","dp","toPrecision","sd","toExponential","toHex","Number","asUintN","escape","matches","reg","startAt","global","lastIndex","lastMatchIndex","index","push","fsFormatRegExp","formatRegExp","isLessThan","numericCompare","printf","cont","strParts","strIdx","match","matchIndex","createPrinter","continuePrint","arg","toText","toFail","formatReplacement","rep","flags","padLength","toLowerCase","dateToString","zeroFlag","minusFlag","ch","pad","_strParts","_matches","_result","padArg","slice","_len2","args","_key2","_i","_args","_matches$","_padLength","delimiter","xs","from","isRight","padLeft","splitters","options","removeEmpty","filter","splits","RegExp","findSplits","candidate","startIndex","substr","Some","unwrap","opt","some","toArray","defaultArg","defaultValue","mapping","SR_inputWasEmpty","Helpers_allocateArrayFromCons","fill","target","targetIndex","start","source","setItem_1","item_2","fold","folder","state","array","folder_1","reduce","equalsWith","array1","array2","length1","length2","item","setItem","foldBack2","acc","differentLengths","size","foldBackIndexed2","_arg","FSharpList","_Record","head","tail","_this","_inherits","xs_1_mut","ys_1_mut","loop","xs_1","ys_1","matchValue","matchValue_1","xt","value_1","yt","i_mut","h_mut","t","c","ListEnumerator$1","it","_","FSharpList_get_Empty","FSharpList_Cons_305B8EAC","FSharpList__get_IsEmpty","FSharpList__get_Head","FSharpList__get_Tail","empty","singleton","isEmpty","FSharpList__get_Length","res","reverse","ofArrayWithTail","tail_1","item_1","ofArray","append","ys","Enumerator_notStarted","Enumerator_alreadyFinished","Enumerator_Seq","Enumerator_FromFunctions$1","dispose","Enumerator_noReset","Enumerator_FromFunctions$1_$ctor_58C54629","Enumerator_generateWhileSome","openf","compute","closef","started","curr","x_1","finish","mkSeq","Enumerator_Seq_$ctor_673A07F2","ofSeq","argName","Operators_NullArg","delay","generator","ar","singleton_1","toList","ofArray_1","xs_3","root","node","enumerator","xs_5","t_2","ofSeq_1","sources","outerOpt","innerOpt","finished","inner","outer","outerOpt_1","inner_1","outer_1","ie","Enumerator_concat","contains","comparer","found","iterate","action","unitVar","create","e_1","mapIndexed","NumberStyles","Interop_reactApi","react","ReactInterop_useEffectWithDeps","getDisposable","deps","useEffectReact","disposable","React_createDisposable_3A5B6456","useReact_useReducer_2B9E6EA0","update","initialState","useReducer","useReact_useEffectOnce_3A5B6456","effect","calledOnce","useRef","useReact_useEffect_311B4086","useReact_useRef_1505","initialValue","useReact_useCallbackRef_7C4B0DD6","callback","callbackFunction","dependencies_1","lastRenderCallbackRef","callbackRef","useCallback","useLayoutEffectReact","useFeliz_React__React_useState_Static_1505","initial","useState","getRange","unsigned","bitsize","style","_res","prefix","digits","AllowHexSpecifier","getRadix","invalidDigits","getInvalidDigits","test","regexMatch","_regexMatch","validResponse","isValid","_getRange2","umin","umax","_getRange4","min","max","_unused","RouterModule_String_$007CPrefix$007C","RouterModule_String_$007CSuffix$007C","suffix","search","idx","lastIndexOf","endsWith","RouterModule_urlSegments","path","mode","zs","collect","segment","segment_1","_len7","chars","_key7","trimEnd","y_1","decodeURIComponent","value_2","query","renderElement","areEqual","memoElementType","memo","name_1","displayName","Internal_memo_Z1716C242","destroyFunc","renderAfterCalled","onChange","ev","urlChanged","onUrlChanged","routeMode","window","location","pathname","hash","RouterModule_onUrlChange","hashMode","navigator","userAgent","addEventListener","removeEventListener","dependencies","useReact_useEffect_7331F961","disposeOption","ev_1","document","createEvent","initEvent","dispatchEvent","application","withKey","TypeInfo","fullname","generics","construct","parent","enumCases","fullName","getHashCode","getGenerics","fullnameHash","genHashes","_toConsumableArray","t1","t2","getRecordElements","k1","v1","k2","v2","record_type","tuple_type","option_type","generic","array_type","obj_type","string_type","bool_type","int32_type","info","elemType","getElementType","_t$generics","isGenericType","isEnum","getGenericTypeDefinition","getEnumUnderlyingType","_t$generics2","getEnumValues","parseEnum","_step2","_iterator2","getEnumCase","getUnionCases","getTupleElements","isTuple","isUnion","isRecord","startsWith","getUnionCaseFields","uci","makeUnion","expectedLength","declaringType","_construct","LoginRequest","Username","Password","Persist","_callSuper","LoginResponse","_Record2","Result","Message","BanUntil","_this2","LoginResponse_$reflection","OAuthAuthResponse","_Record3","Email","Token","_this3","OAuthAuthResponse_$reflection","AppleAuthRequest","_Record4","Code","IdToken","_this4","OAuthRegisterRequest","_Record5","_this5","GenericResponse","_Record6","_this6","GenericResponse_$reflection","RegisterRequest","_Record7","_this7","AccountInfo","_Record8","EmailVerified","EmailRegistered","AppleRegistered","GoogleRegistered","Joined","_this8","AccountInfo_$reflection","Session","_Record9","Agent","IP","Since","_this9","Session_$reflection","dashify","separator","charAt","keyValueList","definedCaseRule","kvPair","assign","caseRule","changeCase","tryGetValue","Types_HttpRequestHeaders","_Union","Types_RequestProperties","_Union2","FetchError","Helper_fetch","url","init","fetch","Helper_withContentTypeJson","data","headers","Helper_withProperties","custom","properties","list","FSharpResult$2","Result_Map","ResultValue","ErrorValue","signedRound","ceil","ms","days","firstDot","firstColon","r","PromiseBuilder__Delay_62FBFDE1","then","f1","er","Promise","reject","resolve","er_1","catch","er_2","er_3","PromiseBuilder__Run_212F1D4B","p","success","PromiseBuilder","MapTreeLeaf$2","k","MapTreeLeaf$2_$ctor_5BDDA1","MapTreeLeaf$2__get_Key","MapTreeLeaf$2__get_Value","MapTreeNode$2","_MapTreeLeaf$","left","right","MapTreeNode$2_$ctor_Z39DE9543","MapTreeNode$2__get_Left","MapTreeNode$2__get_Right","MapTreeNode$2__get_Height","MapTreeModule_sizeAux","acc_mut","m_mut","m2","mn","MapTreeModule_size","MapTreeModule_mk","l","hl","hr","m2_1","m_2","MapTreeModule_rebalance","m2_2","m_3","m2_3","t1h","t2h","t2$0027","t2l","matchValue_2","t1$0027","matchValue_3","t1r","MapTreeModule_add","Compare","MapTreeModule_empty","MapTreeModule_tryFind","comparer_mut","k_mut","MapTreeModule_iterOpt","f_mut","MapTreeModule_iter","MapTreeModule_mapiOpt","l2","r2","MapTreeModule_mapi","MapTreeModule_MapIterator$2","stack","MapTreeModule_collapseLHS","stack_mut","isEmpty_1","empty_1","rest","MapTreeModule_mkIterator","MapTreeModule_current","MapTreeModule_alreadyFinished","MapTreeModule_notStarted","MapTreeModule_mkIEnumerator","MapTreeModule_moveNext","FSharpMap","tree","this$","combineHash","activePatternResult","FSharpMap__ComputeHashCode","that_1","e1","e2","m1","e1c","e2c","map_1","_len3","_key3","str2","shift","pattern","intPart","decimalPart","_rep$split2","repInt","repDecimal","rightZeros","padRight","thousandGroups","thousands","toStringTag","b1","b2","compareWith","kvp1","kvp2","FSharpMap__ContainsKey","FSharpMap__get_Item","arr","MapTreeModule_copyToArray","FSharpMap__get_Count","thisArg","iterate_1","FSharpMap_$ctor","MapTreeModule_find","MapTreeModule_mem","table","FSharpMap__Add","tryFind","FSharpMap__TryFind","FSharpMap_Empty","ErrorReason","CaseStrategy","Util_Cache$1","cache","Map","Util_Cache$1_$ctor","Util_Cache$1__GetOrAdd_43981464","__","outArg","dict","addToDict","Util_CachedEncoders","Util_CachedDecoders","Util_Casing_lowerFirst","Util_Casing_convert","caseStrategy","fieldName","replacement","limit","_limit","tmp","withGroups","pLast","groups","_s","sub1","sub2","guid","seq","datetimeOffset","toString_3","timespan","seconds","milliseconds","toString_4","sbyte","byte","int16","uint16","unit","datetime","space","JSON","stringify","autoEncodeRecordsAndUnions","extra","skipNullField","encoder","encoderRef","extra_1","setters","fi","targetKey","encode_1","autoEncoder","source_1","target_1","set$","patternInput","case_","getUnionFields","fieldTypes","target_2","encode_2","map_2","value_5","value_7","encoders","value_9","fullname_1","encoder_2","option","value_10","Value","encoder_3","value_11","keyType","valueEncoder","value_12","keyEncoder","clo_2","value_13","_arg_1","activePatternResult_1","value_14","value_16","value_22","value_24","value_26","value_28","makeExtra","map_3","tupledArg","Coders","Auto_generateBoxedEncoderCached_437914C6","caseStrategy_1","skipNullField_1","toString_5","Hash","Auto_generateBoxedEncoder_437914C6","guidRegex","guidRegexNoHyphen","guidRegexHex","hyphenateGuid","wsTrimAndLowered","_len5","_key5","DateTimeOffset","checkOffsetInRange","offsetMatch","SetTreeLeaf$1","SetTreeLeaf$1_$ctor_2B595","SetTreeLeaf$1__get_Key","SetTreeNode$1","_SetTreeLeaf$","SetTreeNode$1_$ctor_5F465FC9","SetTreeNode$1__get_Left","SetTreeNode$1__get_Right","SetTreeNode$1__get_Height","SetTreeModule_countAux","t_mut","value_3","tn","SetTreeModule_count","SetTreeModule_mk","t2_1","SetTreeModule_rebalance","t2_3","t_3","t2_4","t2_2","SetTreeModule_add","c_1","SetTreeModule_empty","SetTreeModule_mem","SetTreeModule_iter","SetTreeModule_SetIterator$1","SetTreeModule_collapseLHS","x2","xn","SetTreeModule_mkIterator","SetTreeModule_current","SetTreeModule_alreadyFinished","SetTreeModule_notStarted","SetTreeModule_mkIEnumerator","SetTreeModule_moveNext","SetTreeModule_compare","l1_mut","l2_mut","SetTreeModule_compareStacks","l1","x1_3","x2_3","x1n_2","x2n_2","matchResult","t1_6","x1_4","t2_6","x2_4","x1n_3","x2n_3","matchResult_1","t1_7","x1_5","t2_7","x2_5","x1n_4","x2n_4","c_3","x2n_5","c_2","matchResult_2","t1_8","x1_6","t2_8","x2_6","x1n_5","x2n_6","matchResult_3","t1_2","x1","x2_1","x1n","x2n","matchResult_4","t1_4","x1_2","x2_2","x1n_1","x2n_1","SetTreeModule_copyToArray","SetTreeModule_ofSeq","fold_1","SetTreeModule_ofArray","fold_2","SetTreeModule_ofList","e_mut","SetTreeModule_mkFromEnumerator","FSharpSet","FSharpSet__ComputeHashCode","FSharpSet__get_Comparer","FSharpSet__get_Tree","FSharpSet__get_Count","FSharpSet__Contains","genericMsg","msg","newLine","errorToString","error","reason_1","fromValue","decoder","fromString","SyntaxError","message","path_1","value_1_1","isFinite","tryParse_3","int","uint32","requestedIndex","copyOfStruct","currentPath","vArray","tokens","acc_1","andThen","cb","tuple2","decoder1","decoder2","decoder_3","path_3","value_4","a3","uncurry3","decoder_2","decoder_1","path_2","arg10$0040","arg20$0040","toMap","forLoopVar","MapTreeModule_ofArray","MapTreeModule_ofList","MapTreeModule_mkFromEnumerator","MapTreeModule_ofSeq","toSet","FSharpSet_$ctor","mixedArray","decoders","arg_2","predicate","find","name_3","uci_1","makeUnion_1","values_1","autoDecoder","autoDecodeRecordsAndUnions","isOptional","decoderRef","_ref5","_ref6","makeRecord","decoderInfos","prototype","reduceRight","delegateArg","delegateArg_1","foldBack","autoObject","decoder_13","decoder_14","decoder_15","tryFind_1","enumValue","path_4","path_5","value_8","enumValue_1","path_6","t_4","path_7","enumValue_2","x_2","y_2","path_8","t_5","path_9","matchValue_4","enumValue_3","x_3","y_3","path_10","t_6","path_11","value_17","matchValue_5","enumValue_4","x_4","y_4","path_12","value_19","t_7","path_13","value_20","matchValue_6","enumValue_5","x_5","y_5","clo_1","arg_1","t_8","path_14","value_21","path_15","path_16","value_23","d_18","keyDecoder","valueDecoder","decoders_1","path_17","autoObject2","path_18","value_25","path_19","decoders_1_mut","errors_mut","errors","head_1","append_1","runner","oneOf","path_20","ctor","d1","decoder_16","path_21","value_29","matchValue_7","path_22","value_31","path_23","value_32","path_24","value_33","path_25","value_34","path_26","value_35","path_27","value_36","tryParse_6","path_28","value_37","tryParse_7","path_29","value_38","tryParse_8","path_30","value_39","tryParse_2","_arg_6","Auto_generateBoxedDecoderCached_Z6670B51","toString_12","map_4","Auto_generateBoxedDecoder_Z6670B51","MuiHelpers_reactElement","createElement","MuiHelpers_createElement","el","kvs","setProperty","target_mut","key_mut","value_mut","sepIdx","topKey","nestedKey","fromFlatEntries","validateEmail","at","dot","splitted","Alert_alert","onClose","elems","children","Children","Alert_SnackError","alert_SnackErrorInputProps","dismiss","errMsg","promise","setTimeout","_arg_2","Alert_snackError","errMsg_1","LoadingIndicator_loadingIndicatorSmall","className","width","height","LoadingIndicator_loadingIndicator","Dialog_dialogActions","display","gap","alignItems","justifyContent","Dialog_Dialog","dialog_DialogInputProps","elems_1","ref","closeEffect","event","event_1","tryFocusInput","inputId","getElementById","focus","StyleImports_makeStyles_get","makeStyles","StyleCreator$1","recaptchaContainer","props","react_google_recaptcha","PasswordRecoveryForm_Step","PasswordRecoveryForm_Model","CurrentStep","ValidEmail","Processing","OnClose","PasswordRecoveryForm_Message","PasswordRecoveryForm_update","model","PasswordRecoveryForm_useStyles","theme","paper","styles","PasswordRecoveryForm_requestRecaptcha","passwordRecoveryForm_requestRecaptchaInputProps","dispatch","minWidth","dispatch_1","pr_1","body","data_1","caseStrategy_3","extra_3","properties_2","properties_3","data_1_1","PromiseBuilder__Run_212F1D4B_1","promise_1","PromiseBuilder__Delay_62FBFDE1_1","response_1","decoder_1_1","ok","text","_arg_1_1","exn","email","PasswordRecoveryForm_requestReset","PasswordRecoveryForm_PasswordRecoveryForm","passwordRecoveryForm_PasswordRecoveryFormInputProps","model_1","fontSize","fontWeight","TextField","PasswordRecoveryForm_emailStep","flexDirection","onClick","disabled","Model","Reference","UserId","NewPassword","RepeatPassword","Completed","ErrorMsg","_Union3","validNew","newPasswordForm","elems_2","xs_4","textAlign","marginTop","code","marginBottom","e_2","maxWidth","reference","userId","newPassword","repeat","trySetPassword","minHeight","apply","PasswordRecovery","passwordRecoveryInputProps","elements","padding","Paper","LoginMode","ValidUsername","ValidPassword","Recover","Mode","numDays","validUsername","validPassword","reload","tryLogin","username","password","persist","req","toString_1","drawBanned","until","banReason","borderRadius","color","u","Login","preventDefault","e_3","FormControlLabel","Checkbox","e_4","checked","e_5","href","OAuthTarget","OAuthRegister","oAuthRegisterInputProps","patternInput_1","patternInput_2","setProcessing","patternInput_3","setErrMsg","patternInput_4","terms","title","trimmed_1","textDecoration","trimmed","requestPath","AuthHolder","authHolderInputProps","elems_7","authComponent","setBanned","domain","host","elems_6","elems_3","elems_5","elems_4","Interop_reactApi_1","react_apple_login","clientId","redirectURI","usePopup","res_2","console","log","authorization","id_token","user","scope","responseMode","render","renderProps","_arg_7","backgroundColor","cursor","GoogleLogin","shape","onSuccess","x_15","pr_3","body_3","data_5","caseStrategy_12","extra_12","credential","_len","_key","anonRecord_type","properties_6","properties_3_1","data_1_2","_arg_3","response_3","decoder_1_2","_arg_4","_arg_1_2","arg_3","exn_1","_arg_5","numDays_1","arg_4","res_1","r_1","onError","x_17","flexGrow","arf","grf","PasswordRepeat","AcceptTerms","Recaptched","Successful","validateCredentials","un","pw1","pw2","usernameLength","usernameChars","isMatch","email_1","pwLength","resp","registrationView","e_6","e_7","validateRecaptcha","p1","p2","tryRegister","Register","OldPassword","Changed","validOld","PasswordForm","elements_3","children_1","Accordion","AccordionSummary","Typography","marginRight","drawForm","AccordionDetails","Button","oldP","newP","repeatP","commit","AccordionActions","Sessions","elements_5","sessions","setConfirm","caseStrategy_2","extra_2","elements_2","List","elements_1","ListItem","ListItemText","body_2","caseStrategy_11","extra_11","_arg_8","_arg_9","DeleteForm_Model","DeleteForm_Message","DeleteForm_update","DeleteForm_DeleteForm","deleteForm_DeleteFormInputProps","children_2","children_3","emailRegistered","DeleteForm_commit","EmailRequested","DrawSettings","UserAccount","fetchAccountInfo","accountInfo","emailRequested","paddingBottom","borderBottom","alt","src","loggedInUserId","row","marginLeft","textDecorationLine","requestEmail","drawAccountInfo","Form","feedback","paddingTop","Location","Account","urlParams","URLSearchParams","entry","Route_$007CQuery$007C_$007C","Location_FromUrl_7F866359","props_1","GoogleOAuthProvider","createRoot","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","every","__esModule","a","ns","def","getOwnPropertyNames","forEach","definition","defineProperty","enumerable","prop","hasOwnProperty","call","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","bind","__webpack_exports__"],"sourceRoot":""}