{"version":3,"file":"home.27ddbf2d.js","mappings":";krCAgBA,MAAMA,EAAS,mBAMTC,EAAoD,CACxDC,OAAQC,EAAAA,GAAW,QACnBC,MAAOC,eAAeC,aAAeC,EAAAA,GAAMC,KAAOD,EAAAA,GAAME,MACxDC,MALgC,IAMhCC,OALiC,GAMjCC,YAAY,EACZC,UAAU,EACVC,OAAO,EACPC,OAAQ,CACN,CACEL,MAZ4B,IAa5BC,OAZ6B,GAa7BK,UAAWC,EAAAA,GAAUC,GACrBC,MAAOC,EAAAA,GAAUC,OACjBrB,OAAQA,EACRsB,WAAYC,EAAAA,GAAWC,gBACvBC,aAAa,EACbC,WAAW,EACXC,aAAa,EACbC,UAAW,KACXC,SAAS,EACTC,MAAO,CACL,CACEnB,OAxByB,GAyBzBoB,SAAU,CACR,CACEC,KAAMC,EAAAA,GAAiBT,gBACvBU,SAAU,UAexB,MAAMV,UAAwBW,EAAAA,UAC5BC,MAA8B,CAC5BC,SAAS,EACTC,SAAS,EACTC,YAAa,MAGfC,OAAwB,KACxBC,aAA8C,KAE9CC,iBAAAA,GACEC,KAAKC,WAAW,IAAI,KAClBD,KAAKE,SAAS,CAAEN,YAAatC,GAA6B,GAE9D,CAEA6C,oBAAAA,GACsB,OAAhBH,KAAKH,SACPG,KAAKF,cAAcM,WACnBC,aAAaL,KAAKH,QAEtB,CAEAS,MAAAA,GACE,MAAM,QAAEZ,EAAO,QAAEC,EAAO,YAAEC,GAAgBI,KAAKP,MAE/C,OACEc,EAAAA,EAAAA,KAAA,SACExC,MAAM,MACNyC,YAAY,IACZC,YAAY,IAEZC,OAAO,IACPC,MAAO,CAAEC,WAAYlB,EAAU,SAAW,WAAYmB,UAEtDN,EAAAA,EAAAA,KAAA,SAAAM,UACEC,EAAAA,EAAAA,MAAA,MAAAD,SAAA,EACEN,EAAAA,EAAAA,KAAA,MAAI,eAAa,uTAAsTM,SACpUjB,IACCW,EAAAA,EAAAA,KAAA,OAAKQ,GAAG,4BAA4BJ,MAAO,CAAE5C,MAAO,IAAKC,OAAQ,IAAK6C,UACpEN,EAAAA,EAAAA,KAACS,EAAAA,GAAW,CAACC,OAAQrB,SAI3BkB,EAAAA,EAAAA,MAAA,MAAII,OAAO,MAAKL,SAAA,EACdN,EAAAA,EAAAA,KAAA,UACEQ,GAAG,WACHI,UAAU,wBACVC,UAAWzB,EACX0B,QAAUC,GAAMtB,KAAKuB,MAAMD,EAAG,QAAQT,SACvC,UAGDN,EAAAA,EAAAA,KAAA,OACEiB,IAAI,6BACJzD,MAAM,KACNC,OAAO,IACPyD,IAAI,GAEJf,OAAO,IACPC,MAAO,CAAEe,QAAShE,eAAeiE,mBAAqB,OAAS,YAEjEpB,EAAAA,EAAAA,KAAA,UACEQ,GAAG,WACHI,UAAU,wBACVC,UAAWzB,EACX0B,QAAUC,GAAMtB,KAAKuB,MAAMD,EAAG,QAAQT,SACvC,kBAQb,CAEAU,KAAAA,CAAMD,EAAeM,GACnBN,EAAEO,iBACF7B,KAAKE,SAAS,CAAEP,SAAS,IACzBK,KAAKC,WAAW,MAAQ2B,OAAWE,GAAW,EAChD,CAEA7B,WAAa,MAAH,IAAA8B,EAAG,KAAH,OAAGC,iBAA+D,IAAxDC,EAAQC,UAAAC,OAAA,QAAAL,IAAAI,UAAA,GAAAA,UAAA,GAAG,GAAIE,EAAmBF,UAAAC,OAAA,EAAAD,UAAA,QAAAJ,EAAEO,IAAQH,UAAAC,OAAA,QAAAL,IAAAI,UAAA,KAAAA,UAAA,GAG9D,GAFIG,GAA4B,OAAhBN,EAAKlC,QAAiBQ,aAAa0B,EAAKlC,QAEpDyC,SAASC,OAGX,YADIF,IAAUN,EAAKlC,OAAS2C,OAAOC,YAAW,IAAMV,EAAK9B,WAAWgC,EAAUG,IAAW,OAM3FL,EAAKjC,cAAe4C,EAAAA,EAAAA,IAAsB,6BAA6BT,KACvE,MAAMU,QAAaZ,EAAKjC,aACxB,GAAI6C,EAAM,CACR,MAAMC,EAAYC,EAAQF,GACZG,EAAAA,GAAMC,gBAAgB,SAAU1F,GAE5CyF,EAAAA,GAAMC,gBAAgB,SAAU1F,GAAS2F,iBAAiBH,EAAQF,IAElEG,EAAAA,GAAMG,OAAOL,GAAWM,OAE1Bd,MAEAL,EAAK7B,SAAS,CACZR,SAAS,EACTC,QAASgD,EAAKhD,SAElB,CAEI0C,IACFN,EAAKlC,OAAS2C,OAAOC,YAAW,IAAMV,EAAK9B,WAAWgC,EAAUG,IAAmC,KAAvBO,GAAMQ,SAAW,KAEjG,CAAC,EAhCY,GA4Cf,SAASN,EAAQO,GACf,MAAO,CACLC,MAAOD,EAAKE,IACZC,OAAQH,EAAKI,OACbC,KAAMC,MAAMC,KAAK,IAAIC,OAAOR,EAAKE,IAAInB,SAAS0B,KAAKC,GAAMC,SAASD,EAAG,MACrEzG,OAAQA,EACRgB,UAAW,KACXM,WAAY,mBACZI,WAAW,EACXC,aAAa,EACbgF,YAAa,KACbC,WAAY,KACZC,kBAAmBd,EAAKe,eACxBC,mBAAoB,IACpBC,uBAAwB,EACxBC,yBAA0B,EAE9B,CAEA,IAAIC,GACJ,WACE,MAAMC,EAASlC,SAASmC,eAAe,uBACvCF,EAAOG,EAAAA,WAAoBF,GAC3BD,EAAKjE,QAAOC,EAAAA,EAAAA,KAAC1B,EAAe,IAC9B,CAMA8F,wEC5MA,MAAMC,GAAcC,EAAAA,EAAAA,GAAiC,gBAyC9C,SAASC,EAAoBC,GAElC,MAAMC,EAAiB1C,SAASmC,eAAe,gBACzCQ,EAAiBF,EAAYN,eAAe,gBAC9CO,GAAkBC,IACpBD,EAAeE,UAAYD,EAAeC,WAI5C,MAAMC,EAAkB7C,SAASmC,eAAe,gBAC1CW,EAAkBL,EAAYN,eAAe,gBAC/CU,GAAmBC,IACrBD,EAAgBD,UAAYE,EAAgBF,UAEhD,CAEOlD,eAAeqD,IACpB,MAAMjC,QAAaV,EAAAA,EAAAA,IAAmBF,OAAO8C,SAASC,SAAU,CAC9DC,QAAS,CACP,eAAgBC,EAAAA,GAAYC,KAC5B,oBAAqB,OACrB,UAAWhI,eAAeC,aAAe,OAASD,eAAeiE,mBAAqB,QAAU,YAIpG,IAAKyB,EAAM,OAEX,MAAM2B,GAAc,IAAIY,WAAYC,gBAAgBxC,EAAM,aACpDyC,GAAiBhB,EAAAA,EAAAA,GAAiC,eAAgBE,GAExE,OAAKH,GAAgBiB,GAAkBjB,EAAYkB,SAAWD,EAAeC,QAEzElB,EAAYmB,UAAYF,EAAeE,SACzCvD,OAAO8C,SAASU,SAGXjB,QANP,CAOF,CAUC,IARoBkB,EAUhBC,EAA0B,SAA1BA,GAA0B,OAA1BA,EAAAA,EAA0B,uBAA1BA,EAAAA,EAA0B,uBAA1BA,EAAAA,EAA0B,kBAA1BA,CAA0B,EAA1BA,GAA0B,IAM/B,GAAItB,GAAaqB,SAAU,CAGzB,SAASE,IACP,OAAKzI,eAAe0I,gBAGfC,EAAAA,EAAAA,IAA4B,GAAO,GAIjCH,EAA2BI,QAHzBJ,EAA2BK,QAH3BL,EAA2BM,IAOtC,CA5BmBP,EAiBgB,IAAvBrB,EAAYqB,UAhBxBQ,EAAAA,EAAAA,GAAgCR,GAAUjE,iBACxC,MAAM+C,QAAoBM,IAEtBN,GAlFR,SAAqBA,GAEnB,MAAM2B,EAAiBpE,SAASqE,uBAAuB,gBACjDC,EAAiB7B,EAAY4B,uBAAuB,gBACtDD,EAAevE,SAAWyE,EAAezE,QAC3CuB,MAAMC,KAAK+C,GAAgBG,SAAQ,CAACC,EAAGC,KACrC,MAAMC,EAAaN,EAAeO,KAAKF,GACjCG,EAAaN,EAAeK,KAAKF,GACnCC,GAAcE,IAChBF,EAAW9B,UAAYgC,EAAWhC,UACpC,IAIJJ,EAAoBC,GAGpB,MAAMoC,EAAoB7E,SAASmC,eAAe,sBAC5C2C,EAAoBrC,EAAYN,eAAe,sBACjD0C,GAAqBC,IACvBD,EAAkBjC,UAAYkC,EAAkBlC,YAG9CxH,eAAe0I,gBAAkB1I,eAAeiE,qBAClD,gCAA0E0F,MAAKC,IAA4B,IAA3B,mBAAEC,GAAoBD,EACpGC,GAAoB,IAKxB/E,OAAOgF,OAAO,QAAS,UAAW,CAAEC,eAAgB,UAEjB,IAA/BjF,OAAOkF,oBACTlF,OAAOmF,sBAC+B,mBAAtBnF,OAAOoF,YACvBpF,OAAOoF,WAAW,kCAEtB,CA8CMC,CAAY9C,EAEhB,KAuBA0B,EAAAA,EAAAA,GAAgCN,GAA2BnE,iBACzD,MAAM8F,QAAuBpF,EAAAA,EAAAA,IAAoB,0BAE7CoF,GCrFD,SAAuBC,GAC5B,MAAMC,EAAOlF,EAAAA,GAAMC,gBAAgB,SAAU,OACzCiF,GAAMA,EAAKhF,iBAAiBH,EAAQ,OAAQ,MAAOkF,IAEvD,MAAME,EAAUnF,EAAAA,GAAMC,gBAAgB,SAAU,UAC5CkF,GAASA,EAAQjF,iBAAiBH,EAAQ,QAAS,SAAUkF,IAEjE,MAAMG,EAAUpF,EAAAA,GAAMC,gBAAgB,SAAU,WAC5CmF,GAASA,EAAQlF,iBAAiBH,EAAQ,QAAS,UAAWkF,IAElE,MAAMI,EAAOrF,EAAAA,GAAMC,gBAAgB,SAAU,gBACzCoF,GAAMA,EAAKnF,iBAAiBH,EAAQ,OAAQ,eAAgBkF,IAE3DC,GAASC,GAAYC,GAAYC,GAGpC3F,OAAO4F,QAAQC,eAAe,gCAAiC,CAC7DC,MAAO,CACLC,oBAAqBzF,EAAAA,GAAM0F,MACxBC,QAAO,CAACC,EAAeC,KACtBD,EAAIE,KAAKD,EAAItL,QACNqL,IACN,IACFG,KAAK,OAIhB,CD2DMC,CAAchB,EAElB,KAEArB,EAAAA,EAAAA,GAAgCsC,EAAAA,IAAwB/G,iBACtD,MAAMgH,GAAiBC,EAAAA,EAAAA,GAAQC,EAAAA,GAAUC,OAAQC,EAAAA,GAAaC,SACxDC,EAAiB1E,EAAY2E,YAAaN,EAAAA,EAAAA,GAAQC,EAAAA,GAAUM,MAAOJ,EAAAA,GAAaC,SAAW,MAE1FI,EAAaC,SAAqBC,QAAQnB,IAAI,CAACQ,EAAgBM,IAEtE,IACMG,IACEjH,OAAOoH,kBAAkB7D,UAAY0D,EAAY1D,SACnDvD,OAAO8C,SAASU,SAElB6D,EAAAA,EAAkBC,eAAetH,OAAOoH,kBAAmBH,IAGzDC,IACElH,OAAOuH,kBAAkBhE,UAAY2D,EAAY3D,SACnDvD,OAAO8C,SAASU,SAElB6D,EAAAA,EAAkBC,eAAetH,OAAOuH,kBAAmBL,GAE/D,CAAE,MAAO,CACX,GACF,CClIO,SAAS7G,EAAQkE,EAAe1J,EAAgB0K,GACrD,MAAO,IACFA,EAAQhB,GACX1J,OAAQA,EACRgB,UAAW,MACXM,WAAY,QACZI,WAAW,EACXC,aAAa,EACbgL,gBAAgB,EAChBhG,YAAa,KACbC,WAAY,KACZC,kBAAmB,IACnBE,mBAAoB,IACpBC,uBAAwB,EACxBC,yBAA0B,EAE9B,yDC3CO,IAAK2F,EAAgB,SAAhBA,GAAgB,OAAhBA,EAAgB,oBAAhBA,EAAgB,cAAhBA,CAAgB,MAKrB,MAAMC,EAAqD,CAChE,CAACD,EAAiBE,UAAW,WAC7B,CAACF,EAAiBG,OAAQ,SAEfC,EAAmB,kBCJ1BC,EAAc5M,eAAeiE,mBAC7B4I,EAAUC,OAAOC,QAAQP,GAAkBrG,KAAIyD,IAAA,IAAEoD,EAAOC,GAAMrD,EAAA,MAAM,CAAEoD,MAAOA,EAA2BC,QAAO,IAC/GC,EAAWN,OAAcxI,EAAY,OAQ5B,SAAS+I,EAAWC,GAA0D,IAAzD,UAAEC,EAAS,OAAEC,EAAM,eAAEC,GAAkCH,EACzF,OACEvK,EAAAA,EAAAA,KAAC2K,EAAAA,GAAM,CACL,aAAW,mBACXzN,MAAO6M,EAAc,OAAS,cAC9Ba,KAAMb,EAAc,SAAW,UAC/Bc,SAAUR,EACVzJ,UAAWkK,IAAW,CAAE,6BAA8Bf,EAAa,OAAQA,EAAa,UAAWA,IACnGI,MAAOH,EAAQe,MAAMC,GAAWA,EAAOb,QAAUM,IACjDQ,cAAcjL,EAAAA,EAAAA,KAACkL,EAAAA,GAAI,CAACC,KAAK,cAAc3N,MAAOuM,EAAc,GAAK,KACjEqB,SAAUC,IAAe,IAAd,MAAElB,GAAOkB,EAClBX,EAAeP,EAAM,EAEvBmB,UAAU,aACVC,YAAY,aACZf,UAAWA,EACX3J,SAAU2J,EACVgB,OAAQzB,EAAc,EAAI,EAE1B3J,MAAO2J,OAAcxI,EAAY,CAAE9D,OAAQ,QAAS6C,SAEnD0J,EAAQ1G,KAAKoD,IACZ1G,EAAAA,EAAAA,KAACyL,EAAAA,GAAY,CACXb,KAAK,QAELC,SAAUR,EACVqB,YAAY,kBACZC,OAAQlB,IAAW/D,EAAKyD,YAAS5I,EACjC4I,MAAOzD,EAAKpG,SAEXoG,EAAK0D,OAND1D,EAAKyD,UAWpB,gBC5CA,MAAMJ,EAAc5M,eAAeiE,mBAEpB,SAASwK,IACtB,MAAM1M,GAAQ2M,EAAAA,EAAAA,IAAgB,CAAEP,UAAW,eACrCQ,EAAS5M,EAAM6M,SAAS,QAE9B,OACExL,EAAAA,EAAAA,MAAAyL,EAAAA,SAAA,CAAA1L,SAAA,CACGyJ,GACC/J,EAAAA,EAAAA,KAACiM,EAAAA,GAAM,CACLC,GAAIC,EAAAA,GACJjN,MAAOA,EACPhC,MAAM,OACN+N,aAAa,cACbmB,MAAM,mBACNxB,KAAK,SACLe,OAAQG,EACRlL,UAAU,OAAMN,SAEfqJ,EAAiBD,EAAiBG,UAGrCtJ,EAAAA,EAAAA,MAAC0L,EAAAA,GAAM,CACLC,GAAIC,EAAAA,GACJjN,MAAOA,EACPkN,MAAM,mBACNlP,MAAM,OACN0N,KAAK,OACLhK,UAAU,4CACVR,MAAO,CAAEiM,SAAU,IACnBC,aAAa,oBAAmBhM,SAAA,CAE/BqJ,EAAiBD,EAAiBG,QACnC7J,EAAAA,EAAAA,KAACkL,EAAAA,GAAI,CAACC,KAAK,cAAcvK,UAAU,QAAQpD,MAAOuM,EAAc,GAAK,SAGzE/J,EAAAA,EAAAA,KAACuM,EAAAA,GAAO,CACNrN,MAAOA,EACP,aAAW,kBACX0B,UAAU,qBACViK,SAAUd,EAAc,UAAY,OACpCyB,OAAQzB,EAAc,EAAI,EAAEzJ,UAE5BC,EAAAA,EAAAA,MAAA,OAAKK,UAAU,2CAA0CN,SAAA,EACvDN,EAAAA,EAAAA,KAACwM,EAAAA,GAAS,CAAC5B,KAAK,QAAQhK,UAAU,2BAA0BN,SAAC,oDAG7DN,EAAAA,EAAAA,KAACiM,EAAAA,GAAM,CACLC,GAAG,IACHO,KAAK,gFACLvP,MAAM,SACNwP,YAAY,aACZ9B,KAAK,QAAOtK,SACb,qBAOX,CCxDA,MACMqM,EAAyB,2BACzBC,EAAyBzJ,MAAMC,KAAKrB,SAAS8K,iBAFpB,sBAsBhB,SAASC,IACtB,MAAOrC,EAAQsC,GAAaC,EAAAA,SAnB9B,WACE,MAAM7C,GAAQ8C,EAAAA,EAAAA,IAAUnD,GACxB,IAAIW,EAASf,EAAiBG,MAC9B,MAAMqD,EAAc/C,EAGpB,OADIhN,eAAe0I,gBAAoBqH,IAAazC,EAASyC,GACtDzC,CACT,CAY6C0C,KACpC3C,EAAW4C,GAAgBJ,EAAAA,UAAe,GAEjDA,EAAAA,WAAgB,KAEdjL,SAAS8K,iBAAiBF,GAAwBrG,SAAS+G,IACzDA,EAAQC,QAAQ,GAChB,GACD,IAEH,MAAMC,EAAqB9L,UACzB,GAAI+L,IAAkB/C,EAAQ,CAC5BsC,EAAUS,GACVJ,GAAa,GACb,UACQK,EAAAA,EAAAA,IAAiB3D,EAAkB0D,SAzBjD/L,iBACE,MAAM+C,QAAoBM,IACtBN,EACFD,EAAoBC,GAEpBzC,SAASgD,SAASU,QAEtB,CAmBciI,GAA6BC,OACrC,CAAE,MACAZ,EAAUtC,EACZ,CACA2C,GAAa,EACf,GAGF,OACEpN,EAAAA,EAAAA,KAAAgM,EAAAA,SAAA,CAAA1L,SACGsM,EAAuBtJ,KAAK+J,GAC3BlJ,EAAAA,aACEhH,eAAe0I,gBACb7F,EAAAA,EAAAA,KAACsK,EAAW,CAACE,UAAWA,EAAWC,OAAQA,EAAQC,eAAgB6C,KAEnEvN,EAAAA,EAAAA,KAAC4L,EAAU,IAEbyB,MAKV,CC1CA,SAASO,EAAe9Q,GACtB,MAAO,CACLE,OAAQC,EAAAA,GAAW,QACnBO,MAAO,IACPC,OAAQ,IACRoQ,SAAU,EACVC,UAAW,EACXpQ,YAAY,EACZC,UAAU,EACVC,OAAO,EACPmQ,QAAQC,EAAAA,EAAAA,KACRC,2BAA4BC,EAAAA,GAA2BC,WACvDjR,MAAOC,eAAeC,aAAeC,EAAAA,GAAMC,KAAOD,EAAAA,GAAME,MACxDM,OAAQ,CACN,CACEL,MAAO,EACPgB,WAAW,EACXC,aAAa,EACbC,UAAW,KACXjB,OAAQ,IACRK,UAAWC,EAAAA,GAAUqQ,IACrBnQ,MAAOC,EAAAA,GAAUC,OACjBrB,OAAQA,EAERsB,WAAYC,EAAAA,GAAWgQ,MACvB9P,aAAa,EAEbK,MAAO,CACL,CACEnB,OAAQ,IACRoB,SAAU,CACR,CACEC,KAAMC,EAAAA,GAAiBuP,YACvBtP,SAAU,SAQ1B,EA/CI7B,eAAe0I,gBAAkB1I,eAAeiE,qBAClD,gCAA0E0F,MAAKC,IAA4B,IAA3B,mBAAEC,GAAoBD,EACpGC,GAAoB,KAwDxBuH,EAAAA,EAAAA,IAAM,WACJ,MAAM/G,GAAUlD,EAAAA,EAAAA,GAA6B,cACvCN,EAAOwK,EAAAA,WAA0BzM,SAASmC,eAAe,iBAE/D3B,EAAAA,GAAMG,OAAOJ,EAAQ,OAAQ,MAAOkF,IAAU7E,OAC9CJ,EAAAA,GAAMG,OAAOJ,EAAQ,QAAS,SAAUkF,IAAU7E,OAClDJ,EAAAA,GAAMG,OAAOJ,EAAQ,QAAS,UAAWkF,IAAU7E,OACnDJ,EAAAA,GAAMG,OAAOJ,EAAQ,OAAQ,eAAgBkF,IAAU7E,OAEvDqB,EAAKjE,QACHQ,EAAAA,EAAAA,MAAAyL,EAAAA,SAAA,CAAA1L,SAAA,EACEN,EAAAA,EAAAA,KAAA,OAAKY,UAAU,WAAUN,UACvBN,EAAAA,EAAAA,KAACS,EAAAA,GAAW,CAACC,OAAQkN,EAAe,YAEtC5N,EAAAA,EAAAA,KAAA,OAAKY,UAAU,WAAUN,UACvBN,EAAAA,EAAAA,KAACS,EAAAA,GAAW,CAACC,OAAQkN,EAAe,eAEtC5N,EAAAA,EAAAA,KAAA,OAAKY,UAAU,WAAUN,UACvBN,EAAAA,EAAAA,KAACS,EAAAA,GAAW,CAACC,OAAQkN,EAAe,gBAEtC5N,EAAAA,EAAAA,KAAA,OAAKY,UAAU,4BAA2BN,UACxCN,EAAAA,EAAAA,KAACS,EAAAA,GAAW,CAACC,OAAQkN,EAAe,wBA9B5C,WACE,MAAMa,EAAiB1M,SAASmC,eJ/Dc,oBIiE1CuK,GACWD,EAAAA,WAA0BC,GAClC1O,QAAOC,EAAAA,EAAAA,KAAC0O,EAAoB,IAErC,CA4BEC,EACF,8GCzGO,SAASjG,EAAQ5J,EAAiB8P,GACvC,OAAOzM,EAAAA,EAAAA,IAAqB,qBAAsB,CAAE0M,MAAO,CAAEC,EAAGhQ,EAAMiQ,GAAIH,IAC5E,CAEO,SAASI,IAAgD,IAAhCH,EAAKlN,UAAAC,OAAA,QAAAL,IAAAI,UAAA,GAAAA,UAAA,GAAGM,OAAO8C,SAASkK,OACtD,OAAO9M,EAAAA,EAAAA,IAAqB,8BAA8B0M,IAC5D,CAOO,SAASK,EAASnI,GAAoF,IAAnF,KAAEjI,EAAI,QAAE8P,EAAO,KAAE/L,GAAgEkE,EACzG,OAAO5E,EAAAA,EAAAA,IAA8B,2BAA4B,CAC/DgN,OAAQ,OACRlK,QAAS,CACP,eAAgBC,EAAAA,GAAYkK,gBAE9BC,KAAM,IAAIC,gBAAgB,CACxBC,KAAM1M,EAAK2M,QAAQ,yBAA0B,IAC7C1Q,OACA8P,aAGN,uIClBIa,EAAe,EAyBnB,SAASC,EAAwBC,GAC/B,MAAMC,EAAcC,EAAAA,EAASC,eAAeH,EAAQI,WACpD,GAAIH,EAAa,CACf,MAAMI,GAAgBC,EAAAA,EAAAA,IAAyBL,GAE1CI,EAAcE,SAASN,EAAYzE,OACtC6E,EAAc3H,KAAKuH,EAAYzE,MAG7B6E,EAAcpO,QAChBuO,EAAwBH,EAAeL,EAAQ7Q,KAEnD,CACF,CAEA,IAAIsR,EAAwD,KA0B5D,MAAMD,EAA0BE,KAzBhC5O,eAA8B6O,EAAmBC,GAC/CC,EAAAA,EAAcC,iBAAiB,CAC7B3R,KAAM4R,EAAAA,EAAYC,0BAEpBP,GAAwBvQ,WACxBuQ,GAAyBjO,EAAAA,EAAAA,IACvB,2BACA,CAAE0M,MAAO,CAAEC,EAAGwB,EAAQhI,KAAK,KAAMsI,GAAIL,KACrC,GAGF,IACE,MAAM1N,QAAauN,EACnBI,EAAAA,EAAcK,mBAAmB,CAC/B/R,KAAM4R,EAAAA,EAAYI,0BAClBjO,KAAMA,GAEV,CAAE,MAAOkO,GACPP,EAAAA,EAAcK,mBAAmB,CAC/B/R,KAAM4R,EAAAA,EAAYM,uBAClBD,SAEJ,CACF,GAEyD,IAAK,CAAEE,UAAU,IA4G1E,EA1GgB,CACdC,cAAAA,CAAenB,EAAmBoB,GAC3BA,GACHX,EAAAA,EAAcC,iBAAiB,CAC7B3R,KAAM4R,EAAAA,EAAYU,uBAItBZ,EAAAA,EAAcC,iBAAiB,CAC7B3R,KAAM4R,EAAAA,EAAYW,iBAClBF,OACApB,aAEJ,EAEAuB,iBAAAA,CAAkBhB,EAAmBC,GAC/BD,GACFH,EAAwBG,EAASC,EAErC,EAEAgB,oBAAAA,GACEnB,GAAwBvQ,UAC1B,EAEA2R,kBAAAA,GACEhB,EAAAA,EAAcC,iBAAiB,CAC7B3R,KAAM4R,EAAAA,EAAYU,sBAEtB,EAEAK,eAAAA,CAAgB9B,EAAkB+B,EAAYd,GAC5CjB,EAAQgC,KAAKC,UAAU,CAACF,EAAId,IAC5BJ,EAAAA,EAAcC,iBAAiB,CAC7B3R,KAAM4R,EAAAA,EAAYmB,kBAEtB,EAEAF,IAAAA,CAAKhC,EAAkBmC,EAAmBC,EAAiBC,GACzD,GAAIF,EAAY,EAAG,CACjB,MAAMG,EAAYtC,EAAQuC,mBACtBD,IAActC,EAAQgC,KAAK1T,SA5GrC,SAAgB0R,EAAkB1R,EAAeyT,EAAYd,GAC3DnB,EAAexR,EAEf,SAASkU,IACPxC,EAAQgC,KAAK1T,QAAQ0R,EAAQgC,KAAK1T,QAAU,KAAMmU,QAAQ,GAAI,CAAE7O,EAAGmO,EAAIW,EAAGzB,IAC1EJ,EAAAA,EAAcC,iBAAiB,CAAE3R,KAAM4R,EAAAA,EAAY4B,iBAC/C3C,EAAQgC,KAAK1T,QAAU,IAAOwR,EAAe,MAC/C8C,sBAAsBJ,EAE1B,CAPAA,EAQF,CAmGQK,CAAO7C,EAASsC,EAAWF,EAASC,EAExC,KAAO,CACL,MAAMC,EAAYtC,EAAQ8C,uBACtBR,IAActC,EAAQgC,KAAK1T,SArGrC,SAAiB0R,EAAkB1R,EAAeyT,EAAYd,GAC5DnB,EAAexR,EAEf,SAASkU,IACPxC,EAAQgC,KAAK1T,QAAQ0R,EAAQgC,KAAK1T,QAAU,KAAMmU,QAAQ,GAAI,CAAE7O,EAAGmO,EAAIW,EAAGzB,IAC1EJ,EAAAA,EAAcC,iBAAiB,CAAE3R,KAAM4R,EAAAA,EAAY4B,iBAC/C3C,EAAQgC,KAAK1T,QAAU,IAAOwR,EAAe,MAC/C8C,sBAAsBJ,EAE1B,CAPAA,EAQF,CA4FQO,CAAQ/C,EAASsC,EAAWF,EAASC,EAEzC,CACF,EAEAjS,MAAAA,GACEyQ,EAAAA,EAAcC,iBAAiB,CAAE3R,KAAM4R,EAAAA,EAAY4B,gBACrD,EAEAK,gBAAAA,CAAiBhD,EAAkB1R,EAAeyT,EAAYd,GAC5DjB,EAAQgC,KAAK1T,MAAM,EAAG,CAAEsF,EAAGmO,EAAIW,EAAGzB,IAClCjB,EAAQgC,KAAK1T,MAAMA,EAAO,CAAEsF,EAAGmO,EAAIW,EAAGzB,IACtCJ,EAAAA,EAAcC,iBAAiB,CAAE3R,KAAM4R,EAAAA,EAAY4B,gBACrD,EAEAM,YAAAA,CACEjD,EACAkD,GAEAlD,EAAQmD,WAAWD,GACnBlD,EAAQgC,KAAKoB,iBAAiBF,GAC9BrC,EAAAA,EAAcC,iBAAiB,CAAE3R,KAAM4R,EAAAA,EAAY4B,iBAGnD,MAAM1C,EAAcC,EAAAA,EAASC,eAAeH,EAAQI,WAChDH,IACFY,EAAAA,EAAcC,iBAAiB,CAC7B3R,KAAM4R,EAAAA,EAAYW,iBAClBF,KAAMxB,EAAQqD,MAAMjI,MAAMoG,GAASA,EAAKhG,OAASyE,EAAYzE,OAC7D4E,UAAWJ,EAAQI,YAErBL,EAAwBC,GAE5B,EAEApG,cAAAA,CAAeoG,EAAmB9M,GAC3B8M,GAAY9M,IAEjB8M,EAAQsD,WAAWpQ,GACnB2N,EAAAA,EAAcK,mBAAmB,CAAE/R,KAAM4R,EAAAA,EAAYwC,YAAa1N,QAAS3C,EAAK2C,UAEhFkK,EAAwBC,GAC1B,EAEAwD,aAAAA,CAAcC,GACZ5C,EAAAA,EAAcC,iBAAiB,CAC7B3R,KAAM4R,EAAAA,EAAY2C,mBAClBD,oBAEJ,EAEAE,WAAAA,GACE9C,EAAAA,EAAcC,iBAAiB,CAC7B3R,KAAM4R,EAAAA,EAAY6C,WAClBC,UAAU,GAEd,4ECjLF,MAAMhD,UAAsBiD,EAAAA,WAC1B5C,kBAAAA,CAAmB6C,GACjB,IAAIC,EAAU,CACZC,OAAQC,EAAAA,EAAeC,cACvBJ,OAAQA,GAGVjU,KAAKsU,SAASJ,EAChB,CAEAlD,gBAAAA,CAAiBiD,GACf,IAAIC,EAAU,CACZC,OAAQC,EAAAA,EAAeG,YACvBN,OAAQA,GAGVjU,KAAKsU,SAASJ,EAChB,EAGF,MACA,EADmB,IAAInD,iFCtBvB,MAAME,EAAcuD,IAAU,CAC5B3B,eAAgB,KAChBT,iBAAkB,KAClBR,iBAAkB,KAElBV,wBAAyB,KACzBG,0BAA2B,KAC3BE,uBAAwB,KACxBI,qBAAsB,KAEtB8C,aAAc,KACdC,YAAa,KAEbjB,YAAa,KAEbG,mBAAoB,KAEpBE,WAAY,OAGRM,EAAiBI,IAAU,CAC/BH,cAAe,KACfE,YAAa,0FCtBf,MAAMI,UAAcC,EAAAA,aAClBC,oBAAsB,SAEtBC,UAAAA,GACE9U,KAAK+U,KAAKJ,EAAMK,aAClB,CAEAC,iBAAAA,CAAkB7S,GAChBpC,KAAKkV,GAAGP,EAAMK,aAAc5S,EAC9B,CAEA+S,oBAAAA,CAAqB/S,GACnBpC,KAAKoV,eAAeT,EAAMK,aAAc5S,EAC1C,EAGF,UCbA,IAAIiT,EACAC,EAEAC,EAEAC,EAHAC,EAA4C,CAAC,EAE7CC,GAAY,EA0BhB,IAAItF,EAAW,IAvBf,cAAuBuE,EACrBtE,cAAAA,CAAeC,GACb,GAAIA,IAAcgF,EAAY,OAAOD,CAEvC,CAEAM,aAAAA,GACE,OAAOF,CACT,CAEAG,cAAAA,GACE,OAAOL,CACT,CAEAxB,QAAAA,GACE,OAAO2B,CACT,CAEA/B,gBAAAA,GACE,OAAO6B,GACT,GAMFpF,EAASyF,cAAgB9E,EAAAA,EAAc+E,UAAS,SAAU5B,GACxD,IAAID,EAASC,EAAQD,OAErB,OAAQA,EAAO5U,MACb,KAAK4R,EAAAA,EAAY4B,eACfzC,EAAS0E,aACT,MAEF,KAAK7D,EAAAA,EAAYW,iBACXqC,EAAOvC,OAAS2D,IAClBA,EAAepB,EAAOvC,KACtB4D,EAAarB,EAAO3D,UACpBF,EAAS0E,cAEX,MAEF,KAAK7D,EAAAA,EAAYmB,iBAEfiD,OAAevT,EACfsO,EAAS0E,aACT,MAEF,KAAK7D,EAAAA,EAAYC,wBACfd,EAAS0E,aACT,MAEF,KAAK7D,EAAAA,EAAYI,0BACfoE,EAAkB,IAAKA,KAAoBxB,EAAO7Q,MAClDgN,EAAS0E,aACT,MAEF,KAAK7D,EAAAA,EAAYU,qBACjB,KAAKV,EAAAA,EAAYM,uBACfkE,EAAkB,CAAC,EACnBrF,EAAS0E,aACT,MAEF,KAAK7D,EAAAA,EAAYwC,YACf8B,EAAetB,EAAOlO,QACtBqK,EAAS0E,aACT,MAEF,KAAK7D,EAAAA,EAAY2C,mBACf4B,EAAoBvB,EAAON,iBAC3BvD,EAAS0E,aACT,MAEF,KAAK7D,EAAAA,EAAY6C,WACf4B,EAAYzB,EAAOF,SACnB3D,EAAS0E,aAGf,IAEA,sGCnEO,SAASiB,EAAoBzO,GAWT,IAXU,MACnCvJ,EAAQ,IAAG,OACXC,EAAS,IAAG,OACZX,EAAM,UACNgB,EAAS,aACT2X,EAAY,2BACZxH,EAA6BC,EAAAA,GAA2BwH,QAAO,eAC/DC,EAAc,MACdzY,EAAK,OACL6Q,EAASC,IAA4B,YACrCzP,GAAc,GACSwI,EACvB,MAAO,CACL/J,OAAQC,EAAAA,GAAW,QACnBO,QACAC,SACAoQ,SAAU,EACVC,UAAW,EACXpQ,YAAY,EACZC,UAAU,EACVsQ,6BACA0H,iBACAzY,QACA6Q,SACAlQ,OAAQ,CACN,CACEL,MAAO,EACPgB,WAAW,EACXC,aAAa,EACbC,UAAW,KACXjB,SACAK,YACAG,MAAOC,EAAAA,GAAUC,OACjBrB,OAAQA,EACR8Y,WAAY,EACZxX,WAAYC,EAAAA,GAAWgQ,MACvB9P,cACAI,SAAS,EACTC,MAAO,CACL,CACEnB,SACAoB,SAAU4W,MAMtB,CAEO,SAASzH,IACd,IACE,OAAO6H,KAAKC,OAAMC,EAAAA,EAAAA,IAAiB,gBACrC,CAAE,MACA,MACF,CACF,gCChFO,SAASzR,EAAuB9D,GACrC,MAAMwV,GADwDrU,UAAAC,OAAA,QAAAL,IAAAI,UAAA,GAAAA,UAAA,GAAGI,UAClDmC,eAAe1D,GACxByV,EAAiBD,GAAqB,WAAfA,EAAGE,SAAoD,qBAA5BF,EAAGG,aAAa,QAYxE,GAVKF,GACHhU,OAAO4F,QAAQC,eAAe,sBAAuB,CACnDC,MAAO,CACLiO,GAAIA,EAAK,MAAQ,KACjBE,QAASF,GAAIE,QACbpX,KAAMkX,GAAIG,aAAa,YAKxBF,EAAgB,OAAO,KAE5B,IACE,OAAOJ,KAAKC,MAAME,EAAGI,YACvB,CAAE,MAAOrV,GAEP,OADA8G,OAAOwO,iBAAiBtV,GACjB,IACT,CACF,2FCiBO,SAASuV,EAAOvP,GAON,IAPO,MACtBwP,EAAQ,IAAG,QACXC,EAAU,EAAC,eACXC,GAAiB,EAAK,eACtBC,EAAc,iBACdC,EAAgB,SAChBrW,GACayG,EACb,MAAO6P,EAASC,GAAc7J,EAAAA,UAAe,IACtC8J,EAAaC,GAAkB/J,EAAAA,UAAe,GAmBrD,OAjBAA,EAAAA,WAAgB,KACd,MAAMgK,EAAoB/U,OAAOC,YAAW,IAAM2U,GAAW,IAAON,GAEpE,IAAIU,EAQJ,OAPIT,EAAU,IACZS,EAAgBhV,OAAOC,YAAW,KAEhC,GADA6U,GAAe,GACXN,EAAgB,MAAM,IAAIS,KAAO,GACpCV,IAGE,KACL1W,aAAakX,GACblX,aAAamX,EAAc,CAC5B,GACA,CAACV,EAAOC,EAASC,IAEfG,EAEDE,GACK9W,EAAAA,EAAAA,KAAAgM,EAAAA,SAAA,CAAA1L,SAAGqW,KAGL3W,EAAAA,EAAAA,KAAAgM,EAAAA,SAAA,CAAA1L,SAAGA,KANWN,EAAAA,EAAAA,KAAAgM,EAAAA,SAAA,CAAA1L,SAAGoW,GAO1B,mFCtEO,IAAKS,EAAoB,SAApBA,GAAoB,OAApBA,EAAAA,EAAoB,qBAApBA,EAAAA,EAAoB,uBAApBA,EAAAA,EAAoB,2BAApBA,EAAAA,EAAoB,6BAApBA,CAAoB,MAYzB,MAAMC,EAAsBpK,EAAAA,cAGhC,CACDqK,KAAMA,OACNC,KAAMA,SAGD,SAASC,IACd,OAAOvK,EAAAA,WAAiBoK,EAC1B,uLCdO,SAASI,EAAoB3E,GAClC,MAAO/G,EAAQ2L,GAAazK,EAAAA,UAAe,IACpC0K,EAAcC,GAAmB3K,EAAAA,SAAyC,OAC3E,SAAE4K,EAAQ,YAAEC,IAAgBC,EAAAA,EAAAA,GAAkB,CAAE1Y,UAAWsY,IAE3DK,EAAU/K,EAAAA,OAAa,CAC3BqK,KAAM,SAAChK,GAAqE,IAA/C2K,EAAqCrW,UAAAC,OAAA,QAAAL,IAAAI,UAAA,GAAAA,UAAA,GAAG,CAAC,EACpEkW,GAAY,KAAMI,EAAAA,EAAAA,GAAkBhW,OAAOiW,kBAC3CP,EAAgB,CAAEtK,UAAS2K,YAC3BP,GAAU,EACZ,EACAH,KAAMA,IAAMG,GAAU,KAGlBU,EAAgBnL,EAAAA,SAAc,KAClC,MAAM,SAAEoL,EAAWjB,EAAAA,GAAqBkB,YAAeX,GAAcM,SAAW,CAAC,EACjF,MAAO,CACL,4CAA6C,CAC3Cb,EAAAA,GAAqBmB,QACrBnB,EAAAA,GAAqBoB,UACrBrI,SAASkI,GACX,kEAAmE,CACjEjB,EAAAA,GAAqBoB,SACrBpB,EAAAA,GAAqBqB,aACrBtI,SAASkI,GACX,6CAA8C,CAC5CjB,EAAAA,GAAqBkB,WACrBlB,EAAAA,GAAqBqB,aACrBtI,SAASkI,GACX,iEAAkE,CAChEjB,EAAAA,GAAqBmB,QACrBnB,EAAAA,GAAqBkB,YACrBnI,SAASkI,GACZ,GACA,CAACV,GAAcM,UAEZS,EAAmBzL,EAAAA,SACvB,IAAO0K,GAAcM,QAAQU,OAAS1L,EAAAA,SAAiB2L,EAAAA,GACvD,CAACjB,GAAcM,QAAQU,SAGzB,OACEnY,EAAAA,EAAAA,MAAC6W,EAAAA,GAAoBwB,SAAQ,CAACzO,MAAO4N,EAAQc,QAAQvY,SAAA,CAClDuS,EAAMvS,SACNwL,IACC9L,EAAAA,EAAAA,KAACyY,EAAgB,CAAAnY,UACfN,EAAAA,EAAAA,KAAC2Y,EAAAA,GAAc,CACbG,KAAK,QACL,aAAW,eACXlY,UAAWmY,IACTZ,EACA,4KAEFa,eAAa,EAEbC,KAAMnN,EACNoN,QAASnB,EAAQc,QAAQvB,KAEzB6B,OAAO,EACPC,UAAU,EAEVC,WAAW,EAEXC,cAAc,EACdC,uBAAuB,EACvBC,iBAAiB,EACjBC,iBAAiB,EAEjBrZ,MAAO,CACL5C,MAAOoa,EAASpa,MAChBC,OAAQma,EAASna,OACjBic,UAAW,aAAa9B,EAAS+B,WAAW/B,EAASgC,gBAAgBhC,EAAS3Z,SAC9E4b,WAAY,QACZvZ,SAEDoX,GAAcrK,cAM3B,gBCzFO,SAASyM,EACdC,GAEA,MAAMC,EAAcD,EAAiBC,aAAeD,EAAiB5O,MAAQ,YACvE8O,EAA2BpH,IAC/B,MAAM6E,GAAeH,EAAAA,EAAAA,MACrB,OAAOvX,EAAAA,EAAAA,KAAC+Z,EAAgB,IAAMlH,EAAaqH,oBAAqBxC,GAAgB,EAKlF,OAFAuC,EAAwBD,YAAc,2BAA2BA,KAE1DC,CACT,+HCUO,SAASE,EAAYpT,GAMmB,IANlB,UAC3BnG,EAAS,UACTwZ,EAAY,QAAO,QACnBC,EAAO,YACPC,EAAW,SACXha,GAC2CyG,EAC3C,MAAM2Q,GAAeH,EAAAA,EAAAA,MAiBrB,OAfAvK,EAAAA,WAAgB,KACd,IAAIuN,EAOJ,OANID,IACFC,EAAYtY,OAAOC,YAAW,KAC5BwV,EAAaJ,MAAM,GAClBgD,IAGE,KACDC,GACFza,aAAaya,EACf,CACD,GACA,CAAC7C,EAAc4C,KAGhB/Z,EAAAA,EAAAA,MAAA,OACEK,UAAWmY,IACTnY,EACA,0JACAN,SAAA,EAEFN,EAAAA,EAAAA,KAAA,OAAKY,UAAU,uBAAsBN,SAAEA,KACvCN,EAAAA,EAAAA,KAAA,OAAAM,SACG+Z,IACCra,EAAAA,EAAAA,KAACiM,EAAAA,GAAM,CAACC,GAAIyM,EAAAA,EAAuBzb,MAAM,OAAMoD,SAC5C8Z,QAMb,4FChEO,SAASnC,EAAkBC,GAChC,MAAM1a,EAAQ0a,GAAgB1a,OAASyE,OAAOuY,WACxC/c,EAASya,GAAgBza,QAAUwE,OAAOwY,YAC1Cxc,EAAQia,GAAgBja,OAAS,EAEvC,MAAO,CACL2b,IAAK1B,GAAgBwC,WAAa,EAClCf,KAAMzB,GAAgByC,YAAc,EACpC1c,MAAO2c,KAAKC,MAAO,EAAI5c,EAAS,KAAO,IACvCT,MAAOod,KAAKC,MAAMrd,EAAQS,GAC1BR,OAAQmd,KAAKC,MAAMpd,EAASQ,GAC5B6c,cAAetd,EACfud,eAAgBtd,EAEpB,CAEO,SAASqa,IAAuG,IAArF,QAAE1Y,GAAU,EAAI,SAAE4b,GAAW,GAAiDrZ,UAAAC,OAAA,QAAAL,IAAAI,UAAA,GAAAA,UAAA,GAAG,CAAC,EAClH,MAAOiW,EAAUC,GAAe7K,EAAAA,SAAeiL,EAAkBhW,OAAOiW,iBAsBxE,OApBAlL,EAAAA,WAAgB,KACd,IAAK5N,EAAS,OAEd,MAAM6b,EAAeC,KAAUC,IAC7B,MAAMvD,EAAWuD,EAAGC,cAChBxD,GACFC,GAAY,IAAMI,EAAkBL,IACtC,GACC,IAMH,OAJA3V,OAAOiW,gBAAgBmD,iBAAiB,SAAUJ,GAC9CD,GAAU/Y,OAAOiW,gBAAgBmD,iBAAiB,SAAUJ,GAChEA,EAAa,CAAEG,cAAenZ,OAAOiW,iBAE9B,KACLjW,OAAOiW,gBAAgBoD,oBAAoB,SAAUL,GACrDhZ,OAAOiW,gBAAgBoD,oBAAoB,SAAUL,EAAa,CACnE,GACA,CAAC7b,EAAS4b,IAENhO,EAAAA,SAAc,KAAM,CAAG4K,WAAUC,iBAAgB,CAACD,GAC3D,mBClCA2D,EAAOC,QAAQ/H,WAAa,EAA5B,qCCKA,IAAIgI,EAAY,EAAQ,MAEpBC,EAAU,EA+FZ,SAASjI,IACPhU,KAAKkc,sBAAwB,CAAC,EAC9Blc,KAAKmc,sBAAwB,CAAC,EAC9Bnc,KAAKoc,sBAAwB,CAAC,EAC9Bpc,KAAKqc,2BAA4B,EACjCrc,KAAKsc,2BAA6B,IACpC,CASAtI,EAAWuI,UAAUzG,SAAS,SAAS1T,GACrC,IAAIrB,EA9GM,MA8GSkb,IAEnB,OADAjc,KAAKkc,sBAAsBnb,GAAMqB,EAC1BrB,CACT,EAOAiT,EAAWuI,UAAUC,WAAW,SAASzb,GACvCib,EACEhc,KAAKkc,sBAAsBnb,GAC3B,0EACAA,UAEKf,KAAKkc,sBAAsBnb,EACpC,EASAiT,EAAWuI,UAAUE,QAAQ,SAASC,GACpCV,EACEhc,KAAKqc,0BACL,+DAEF,IAAK,IAAIM,EAAK,EAAGA,EAAKD,EAAIva,OAAQwa,IAAM,CACtC,IAAI5b,EAAK2b,EAAIC,GACT3c,KAAKmc,sBAAsBpb,GAC7Bib,EACEhc,KAAKoc,sBAAsBrb,GAC3B,gFAEAA,IAIJib,EACEhc,KAAKkc,sBAAsBnb,GAC3B,uEACAA,GAEFf,KAAK4c,2BAA2B7b,GAClC,CACF,EAOAiT,EAAWuI,UAAUjI,SAAS,SAASJ,GACrC8H,GACGhc,KAAKqc,0BACN,wEAEFrc,KAAK6c,6BAA6B3I,GAClC,IACE,IAAK,IAAInT,KAAMf,KAAKkc,sBACdlc,KAAKmc,sBAAsBpb,IAG/Bf,KAAK4c,2BAA2B7b,EAEpC,CAAE,QACAf,KAAK8c,6BACP,CACF,EAOA9I,EAAWuI,UAAUQ,cAAc,WACjC,OAAO/c,KAAKqc,yBACd,EASArI,EAAWuI,UAAUK,2BAA2B,SAAS7b,GACvDf,KAAKmc,sBAAsBpb,IAAM,EACjCf,KAAKkc,sBAAsBnb,GAAIf,KAAKsc,4BACpCtc,KAAKoc,sBAAsBrb,IAAM,CACnC,EAQAiT,EAAWuI,UAAUM,6BAA6B,SAAS3I,GACzD,IAAK,IAAInT,KAAMf,KAAKkc,sBAClBlc,KAAKmc,sBAAsBpb,IAAM,EACjCf,KAAKoc,sBAAsBrb,IAAM,EAEnCf,KAAKsc,2BAA6BpI,EAClClU,KAAKqc,2BAA4B,CACnC,EAOArI,EAAWuI,UAAUO,4BAA4B,WAC/C9c,KAAKsc,2BAA6B,KAClCtc,KAAKqc,2BAA4B,CACnC,EAGFP,EAAOC,QAAU/H,yBCrMjB8H,EAAOC,QA5BS,SAASiB,EAAWC,EAAQC,EAAGC,EAAGC,EAAGC,EAAG/b,EAAGgc,GAOzD,IAAKN,EAAW,CACd,IAAI1L,EACJ,QAAexP,IAAXmb,EACF3L,EAAQ,IAAImG,MACV,qIAGG,CACL,IAAI8F,EAAO,CAACL,EAAGC,EAAGC,EAAGC,EAAG/b,EAAGgc,GACvBE,EAAW,EACflM,EAAQ,IAAImG,MACV,wBACAwF,EAAOlN,QAAQ,OAAO,WAAa,OAAOwN,EAAKC,IAAa,IAEhE,CAGA,MADAlM,EAAMmM,YAAc,EACdnM,CACR,CACF,0BCEAwK,EAAOC,QAfS,SAAS2B,GACvB,IACIC,EADAC,EAAM,CAAC,EAEX,KAAMF,aAAelT,SAAW9G,MAAMma,QAAQH,GAC5C,MAAM,IAAIjG,MAAM,+CAElB,IAAKkG,KAAOD,EACLA,EAAII,eAAeH,KAGxBC,EAAID,GAAOA,GAEb,OAAOC,CACT,4JCnCA,SAASG,IAYP,OAXAA,EAAWvT,OAAOwT,OAASxT,OAAOwT,OAAOC,OAAS,SAAUC,GAC1D,IAAK,IAAIC,EAAI,EAAGA,EAAIjc,UAAUC,OAAQgc,IAAK,CACzC,IAAIhK,EAASjS,UAAUic,GACvB,IAAK,IAAIR,KAAOxJ,EACV3J,OAAO+R,UAAUuB,eAAeM,KAAKjK,EAAQwJ,KAC/CO,EAAOP,GAAOxJ,EAAOwJ,GAG3B,CACA,OAAOO,CACT,EACOH,EAASM,MAAMre,KAAMkC,UAC9B,CACA,SAASoc,EAA8BnK,EAAQoK,GAC7C,GAAc,MAAVpK,EAAgB,MAAO,CAAC,EAC5B,IAEIwJ,EAAKQ,EAFLD,EAAS,CAAC,EACVM,EAAahU,OAAOiU,KAAKtK,GAE7B,IAAKgK,EAAI,EAAGA,EAAIK,EAAWrc,OAAQgc,IACjCR,EAAMa,EAAWL,GACbI,EAASG,QAAQf,IAAQ,IAC7BO,EAAOP,GAAOxJ,EAAOwJ,IAEvB,OAAOO,CACT,CAEA,MAAMS,EAAgB,MAChBC,EAAiB,oCACvB,SAASC,EAAcC,GACrB,OAAiB,MAAVA,GAA4C,iBAAnBA,EAAOrI,OACzC,CA0CA,SAASsI,EAAmBC,GAI1B,YAHa,IAATA,IACFA,EAAO,IAEF,IAAInP,gBAAgC,iBAATmP,GAAqBtb,MAAMma,QAAQmB,IAASA,aAAgBnP,gBAAkBmP,EAAOxU,OAAOiU,KAAKO,GAAMvW,QAAO,CAACwW,EAAMtB,KACrJ,IAAIjT,EAAQsU,EAAKrB,GACjB,OAAOsB,EAAKC,OAAOxb,MAAMma,QAAQnT,GAASA,EAAM7G,KAAIsb,GAAK,CAACxB,EAAKwB,KAAM,CAAC,CAACxB,EAAKjT,IAAQ,GACnF,IACL,CAoBA,IAAI0U,EAA6B,KAcjC,MAAMC,EAAwB,IAAIC,IAAI,CAAC,oCAAqC,sBAAuB,eACnG,SAASC,EAAeC,GACtB,OAAe,MAAXA,GAAoBH,EAAsBI,IAAID,GAI3CA,EAFE,IAGX,CACA,SAASE,EAAsBxB,EAAQyB,GACrC,IAAIjQ,EACAuE,EACAuL,EACAI,EACAhQ,EACJ,GA7FOiP,EADcC,EA8FHZ,IA7F+C,SAAjCY,EAAOrI,QAAQoJ,cA6FpB,CAIzB,IAAIC,EAAO5B,EAAOxH,aAAa,UAC/BzC,EAAS6L,GAAO,QAAcA,EAAMH,GAAY,KAChDjQ,EAASwO,EAAOxH,aAAa,WAAaiI,EAC1Ca,EAAUD,EAAerB,EAAOxH,aAAa,aAAekI,EAC5DgB,EAAW,IAAIG,SAAS7B,EAC1B,MAAO,GA1GT,SAAyBY,GACvB,OAAOD,EAAcC,IAA4C,WAAjCA,EAAOrI,QAAQoJ,aACjD,CAwGaG,CAAgB9B,IApG7B,SAAwBY,GACtB,OAAOD,EAAcC,IAA4C,UAAjCA,EAAOrI,QAAQoJ,aACjD,CAkGwCI,CAAe/B,KAA4B,WAAhBA,EAAO7e,MAAqC,UAAhB6e,EAAO7e,MAAmB,CACrH,IAAI6gB,EAAOhC,EAAOgC,KAClB,GAAY,MAARA,EACF,MAAM,IAAIzI,MAAM,sEAMlB,IAAIqI,EAAO5B,EAAOxH,aAAa,eAAiBwJ,EAAKxJ,aAAa,UAUlE,GATAzC,EAAS6L,GAAO,QAAcA,EAAMH,GAAY,KAChDjQ,EAASwO,EAAOxH,aAAa,eAAiBwJ,EAAKxJ,aAAa,WAAaiI,EAC7Ea,EAAUD,EAAerB,EAAOxH,aAAa,iBAAmB6I,EAAeW,EAAKxJ,aAAa,aAAekI,EAEhHgB,EAAW,IAAIG,SAASG,EAAMhC,IAlDlC,WACE,GAAmC,OAA/BkB,EACF,IACE,IAAIW,SAASzd,SAAS6d,cAAc,QAEpC,GACAf,GAA6B,CAC/B,CAAE,MAAO9d,GACP8d,GAA6B,CAC/B,CAEF,OAAOA,CACT,CA2CSgB,GAAgC,CACnC,IAAI,KACF1U,EAAI,KACJrM,EAAI,MACJqL,GACEwT,EACJ,GAAa,UAAT7e,EAAkB,CACpB,IAAIghB,EAAS3U,EAAOA,EAAO,IAAM,GACjCkU,EAASU,OAAOD,EAAS,IAAK,KAC9BT,EAASU,OAAOD,EAAS,IAAK,IAChC,MAAW3U,GACTkU,EAASU,OAAO5U,EAAMhB,EAE1B,CACF,KAAO,IAAImU,EAAcX,GACvB,MAAM,IAAIzG,MAAM,sFAEhB/H,EAASiP,EACT1K,EAAS,KACTuL,EAAUZ,EACVhP,EAAOsO,CACT,CA/IF,IAAuBY,EAqJrB,OAJIc,GAAwB,eAAZJ,IACd5P,EAAOgQ,EACPA,OAAW9d,GAEN,CACLmS,SACAvE,OAAQA,EAAOmQ,cACfL,UACAI,WACAhQ,OAEJ,CAEA,MAAM2Q,EAAY,CAAC,UAAW,WAAY,iBAAkB,UAAW,QAAS,SAAU,KAAM,sBAC9FC,EAAa,CAAC,eAAgB,gBAAiB,YAAa,MAAO,QAAS,KAAM,YAClFC,EAAa,CAAC,iBAAkB,UAAW,QAAS,SAAU,SAAU,WAAY,SAAU,WAAY,sBAC5G,SAASC,EAAoBC,EAAQC,GACnC,OAAO,QAAa,CAClBjB,SAAkB,MAARiB,OAAe,EAASA,EAAKjB,SACvCkB,OAAQ9C,EAAS,CAAC,EAAW,MAAR6C,OAAe,EAASA,EAAKC,OAAQ,CACxDC,oBAAoB,IAEtBC,SAAS,QAAqB,CAC5Bve,OAAgB,MAARoe,OAAe,EAASA,EAAKpe,SAEvCwe,eAAwB,MAARJ,OAAe,EAASA,EAAKI,gBAAkBC,IAC/DN,SACAO,mBAAoB,OACnBC,YACL,CAeA,SAASF,IACP,IAAIG,EACJ,IAAI3hB,EAA8B,OAArB2hB,EAAU5e,aAAkB,EAAS4e,EAAQC,4BAM1D,OALI5hB,GAASA,EAAM6hB,SACjB7hB,EAAQse,EAAS,CAAC,EAAGte,EAAO,CAC1B6hB,OAAQC,EAAkB9hB,EAAM6hB,WAG7B7hB,CACT,CACA,SAAS8hB,EAAkBD,GACzB,IAAKA,EAAQ,OAAO,KACpB,IAAI7W,EAAUD,OAAOC,QAAQ6W,GACzBE,EAAa,CAAC,EAClB,IAAK,IAAK7D,EAAK8D,KAAQhX,EAGrB,GAAIgX,GAAsB,uBAAfA,EAAIC,OACbF,EAAW7D,GAAO,IAAI,KAAyB8D,EAAIE,OAAQF,EAAIG,WAAYH,EAAIre,MAAuB,IAAjBqe,EAAII,eACpF,GAAIJ,GAAsB,UAAfA,EAAIC,OAAoB,CAExC,GAAID,EAAIK,UAAW,CACjB,IAAIC,EAAmBvf,OAAOif,EAAIK,WAClC,GAAgC,mBAArBC,EACT,IAEE,IAAIzQ,EAAQ,IAAIyQ,EAAiBN,EAAIO,SAGrC1Q,EAAM2Q,MAAQ,GACdT,EAAW7D,GAAOrM,CACpB,CAAE,MAAOhQ,GAET,CAEJ,CACA,GAAuB,MAAnBkgB,EAAW7D,GAAc,CAC3B,IAAIrM,EAAQ,IAAImG,MAAMgK,EAAIO,SAG1B1Q,EAAM2Q,MAAQ,GACdT,EAAW7D,GAAOrM,CACpB,CACF,MACEkQ,EAAW7D,GAAO8D,EAGtB,OAAOD,CACT,CA0BA,MACMU,GAAsB,iBAAsB,gBAIlD,SAASC,EAAc7a,GACrB,IAAI,SACFqY,EAAQ,SACR9e,EAAQ,OACRggB,EAAM,OACNre,GACE8E,EACA8a,EAAa,WACS,MAAtBA,EAAWhJ,UACbgJ,EAAWhJ,SAAU,QAAqB,CACxC5W,SACA6f,UAAU,KAGd,IAAItB,EAAUqB,EAAWhJ,SACpB3Z,EAAO6iB,GAAgB,WAAe,CACzCrO,OAAQ8M,EAAQ9M,OAChB3O,SAAUyb,EAAQzb,YAEhB,mBACFid,GACE1B,GAAU,CAAC,EACX3gB,EAAW,eAAkBsiB,IAC/BD,GAAsBL,EAAsBA,GAAoB,IAAMI,EAAaE,KAAaF,EAAaE,EAAS,GACrH,CAACF,EAAcC,IAElB,OADA,mBAAsB,IAAMxB,EAAQ0B,OAAOviB,IAAW,CAAC6gB,EAAS7gB,IAC5C,gBAAoB,KAAQ,CAC9Cyf,SAAUA,EACV9e,SAAUA,EACVyE,SAAU7F,EAAM6F,SAChBod,eAAgBjjB,EAAMwU,OACtB0O,UAAW5B,GAEf,CA0EA,MAAM6B,EAA8B,oBAAXpgB,aAAqD,IAApBA,OAAOF,eAAqE,IAAlCE,OAAOF,SAAS6d,cAC9G0C,EAAqB,gCAIrBC,EAAoB,cAAiB,SAAqBC,EAAOC,GACrE,IAeIC,GAfA,QACA5hB,EAAO,SACP6hB,EAAQ,eACRC,EAAc,QACdpT,EAAO,MACPtQ,EAAK,OACLye,EAAM,GACNkF,EAAE,mBACFC,GACEN,EACJO,EAAOhF,EAA8ByE,EAAOxC,IAC1C,SACFZ,GACE,aAAiB,MAGjB4D,GAAa,EACjB,GAAkB,iBAAPH,GAAmBP,EAAmBW,KAAKJ,KAEpDH,EAAeG,EAEXR,GACF,IACE,IAAIa,EAAa,IAAIC,IAAIlhB,OAAO8C,SAAS0H,MACrC2W,EAAYP,EAAGQ,WAAW,MAAQ,IAAIF,IAAID,EAAWI,SAAWT,GAAM,IAAIM,IAAIN,GAC9EU,GAAO,QAAcH,EAAUpe,SAAUoa,GACzCgE,EAAUI,SAAWN,EAAWM,QAAkB,MAARD,EAE5CV,EAAKU,EAAOH,EAAUnU,OAASmU,EAAUK,KAEzCT,GAAa,CAEjB,CAAE,MAAOjiB,GAGT,CAIJ,IAAI0L,GAAO,QAAQoW,EAAI,CACrBF,aAEEe,EAyMN,SAA6Bb,EAAIc,GAC/B,IAAI,OACFhG,EACAnO,QAASoU,EAAW,MACpB1kB,EAAK,mBACL4jB,EAAkB,SAClBH,QACY,IAAVgB,EAAmB,CAAC,EAAIA,EACxBE,GAAW,UACX9e,GAAW,UACXwe,GAAO,QAAgBV,EAAI,CAC7BF,aAEF,OAAO,eAAkBmB,IACvB,GArnBJ,SAAgCA,EAAOnG,GACrC,QAAwB,IAAjBmG,EAAMC,QAEZpG,GAAqB,UAAXA,GANb,SAAyBmG,GACvB,SAAUA,EAAME,SAAWF,EAAMG,QAAUH,EAAMI,SAAWJ,EAAMK,SACpE,CAMGC,CAAgBN,GAEnB,CA8mBQO,CAAuBP,EAAOnG,GAAS,CACzCmG,EAAMxiB,iBAGN,IAAIkO,OAA0BjO,IAAhBqiB,EAA4BA,GAAc,QAAW7e,MAAc,QAAWwe,GAC5FM,EAAShB,EAAI,CACXrT,UACAtQ,QACA4jB,qBACAH,YAEJ,IACC,CAAC5d,EAAU8e,EAAUN,EAAMK,EAAa1kB,EAAOye,EAAQkF,EAAIC,EAAoBH,GACpF,CApOwB2B,CAAoBzB,EAAI,CAC5CrT,UACAtQ,QACAye,SACAmF,qBACAH,aAQF,OAGE,gBAAoB,IAAKnF,EAAS,CAAC,EAAGuF,EAAM,CAC1CtW,KAAMiW,GAAgBjW,EACtB3L,QAASkiB,GAAcJ,EAAiB9hB,EAX5C,SAAqBgjB,GACfhjB,GAASA,EAAQgjB,GAChBA,EAAMS,kBACTb,EAAgBI,EAEpB,EAOIrB,IAAKA,EACL9E,OAAQA,IAGd,IAOA,MAAM6G,EAAuB,cAAiB,SAAwBC,EAAOhC,GAC3E,IACI,eAAgBiC,EAAkB,OAAM,cACxCC,GAAgB,EAChB/jB,UAAWgkB,EAAgB,GAAE,IAC7BC,GAAM,EACNzkB,MAAO0kB,EAAS,GAChBjC,EAAE,SACFviB,GACEmkB,EACJ1B,EAAOhF,EAA8B0G,EAAOxE,GAC1CsD,GAAO,QAAgBV,EAAI,CAC7BF,SAAUI,EAAKJ,WAEb5d,GAAW,UACXggB,EAAc,aAAiB,OAC/B,UACF3C,GACE,aAAiB,MACjB4C,EAAa5C,EAAU6C,eAAiB7C,EAAU6C,eAAe1B,GAAMve,SAAWue,EAAKve,SACvFkgB,EAAmBngB,EAASC,SAC5BmgB,EAAuBJ,GAAeA,EAAYK,YAAcL,EAAYK,WAAWrgB,SAAWggB,EAAYK,WAAWrgB,SAASC,SAAW,KAC5I2f,IACHO,EAAmBA,EAAiB5F,cACpC6F,EAAuBA,EAAuBA,EAAqB7F,cAAgB,KACnF0F,EAAaA,EAAW1F,eAE1B,IAGI1e,EAHAykB,EAAWH,IAAqBF,IAAeH,GAAOK,EAAiB7B,WAAW2B,IAA8D,MAA/CE,EAAiBI,OAAON,EAAWpjB,QACpI2jB,EAAoC,MAAxBJ,IAAiCA,IAAyBH,IAAeH,GAAOM,EAAqB9B,WAAW2B,IAAkE,MAAnDG,EAAqBG,OAAON,EAAWpjB,SAClL4jB,EAAcH,EAAWX,OAAkBnjB,EAG7CX,EAD2B,mBAAlBgkB,EACGA,EAAc,CACxBS,WACAE,cAQU,CAACX,EAAeS,EAAW,SAAW,KAAME,EAAY,UAAY,MAAME,OAAOC,SAASpd,KAAK,KAE7G,IAAIlI,EAA6B,mBAAd0kB,EAA2BA,EAAU,CACtDO,WACAE,cACGT,EACL,OAAoB,gBAAoBvC,EAAM/E,EAAS,CAAC,EAAGuF,EAAM,CAC/D,eAAgByC,EAChB5kB,UAAWA,EACX6hB,IAAKA,EACLriB,MAAOA,EACPyiB,GAAIA,IACkB,mBAAbviB,EAA0BA,EAAS,CAC5C+kB,WACAE,cACGjlB,EACP,IAUA,MAAMqlB,EAAoB,cAAiB,CAAC9S,EAAO4P,KACjD,IAAImD,EAASC,IACb,OAAoB,gBAAoBC,EAAUtI,EAAS,CAAC,EAAG3K,EAAO,CACpE+S,OAAQA,EACRnD,IAAKA,IACJ,IAKL,MAAMqD,EAAwB,cAAiB,CAACC,EAAOC,KACrD,IAAI,eACApD,EAAc,QACdpT,EAAO,MACPtQ,EAAK,OACLiQ,EAASiP,EAAa,OACtB1K,EAAM,SACNuS,EAAQ,OACRL,EAAM,SACNjD,EAAQ,mBACRG,GACEiD,EACJlT,EAAQkL,EAA8BgI,EAAO7F,GAC3CgG,EAAsC,QAAzB/W,EAAOmQ,cAA0B,MAAQ,OACtD6G,EA4MN,SAAuBzS,EAAQ0S,GAC7B,IAAI,SACFzD,QACa,IAAXyD,EAAoB,CAAC,EAAIA,GACzB,SACFhH,GACE,aAAiB,MACjBiH,EAAe,aAAiB,MACnCA,IAAqI,SAAiB,GACvJ,IAAKC,GAASD,EAAaE,QAAQC,OAAO,GAGtCjD,EAAO/F,EAAS,CAAC,GAAG,QAAgB9J,GAAkB,IAAK,CAC7DiP,cAOE5d,GAAW,UACf,GAAc,MAAV2O,IAGF6P,EAAKtU,OAASlK,EAASkK,OAInBqX,EAAMG,MAAMjgB,OAAO,CACrB,IAAIkgB,EAAS,IAAIpX,gBAAgBiU,EAAKtU,QACtCyX,EAAOC,OAAO,SACdpD,EAAKtU,OAASyX,EAAOE,WAAa,IAAMF,EAAOE,WAAa,EAC9D,CAEIlT,GAAqB,MAAXA,IAAmB4S,EAAMG,MAAMjgB,QAC7C+c,EAAKtU,OAASsU,EAAKtU,OAASsU,EAAKtU,OAAOO,QAAQ,MAAO,WAAa,UAMrD,MAAb4P,IACFmE,EAAKve,SAA6B,MAAlBue,EAAKve,SAAmBoa,GAAW,QAAU,CAACA,EAAUmE,EAAKve,YAE/E,OAAO,QAAWue,EACpB,CAzPmBsD,CAAcnT,EAAQ,CACrCiP,aAgBF,OAAoB,gBAAoB,OAAQnF,EAAS,CACvDiF,IAAKuD,EACL7W,OAAQ+W,EACRxS,OAAQyS,EACRF,SAAUrD,EAAiBqD,EAlBTnC,IAElB,GADAmC,GAAYA,EAASnC,GACjBA,EAAMS,iBAAkB,OAC5BT,EAAMxiB,iBACN,IAAIwlB,EAAYhD,EAAMiD,YAAYD,UAC9BE,GAA6B,MAAbF,OAAoB,EAASA,EAAU3Q,aAAa,gBAAkBhH,EAC1FyW,EAAOkB,GAAahD,EAAM1I,cAAe,CACvCjM,OAAQ6X,EACRxX,UACAtQ,QACAyjB,WACAG,sBACA,GAODjQ,GAAO,IASZ,SAASoU,EAAkBC,GACzB,IAAI,OACFC,EAAM,WACNC,GACEF,EAKJ,OA0RF,SAA8BG,GAC5B,IAAI,OACFF,EAAM,WACNC,QACa,IAAXC,EAAoB,CAAC,EAAIA,GACzB,OACFC,GACEC,EAAqBC,EAAeC,uBACpC,sBACFC,EAAqB,mBACrB5E,GACE6E,EAAmBC,EAAoBH,uBACvC,SACFrI,GACE,aAAiB,MACjBra,GAAW,UACXwhB,GAAU,UACVnB,GAAa,UAEjB,aAAgB,KACdnjB,OAAOue,QAAQqH,kBAAoB,SAC5B,KACL5lB,OAAOue,QAAQqH,kBAAoB,MAAM,IAE1C,IA4FL,SAAqBhmB,EAAUmW,GAC7B,IAAI,QACF8P,GACE9P,GAAW,CAAC,EAChB,aAAgB,KACd,IAAIqI,EAAkB,MAAXyH,EAAkB,CAC3BA,gBACEvmB,EAEJ,OADAU,OAAOoZ,iBAAiB,WAAYxZ,EAAUwe,GACvC,KACLpe,OAAOqZ,oBAAoB,WAAYzZ,EAAUwe,EAAK,CACvD,GACA,CAACxe,EAAUimB,GAChB,CAvGEC,CAAY,eAAkB,KAC5B,GAAyB,SAArB3C,EAAWlmB,MAAkB,CAC/B,IAAIke,GAAO+J,EAASA,EAAOpiB,EAAUwhB,GAAW,OAASxhB,EAASqY,IAClE4K,EAAqB5K,GAAOnb,OAAOgmB,OACrC,CACAC,eAAeC,QAAQf,GAAcgB,EAAgCvS,KAAKwS,UAAUL,IACpF/lB,OAAOue,QAAQqH,kBAAoB,MAAM,GACxC,CAACT,EAAYD,EAAQ/B,EAAWlmB,MAAO6F,EAAUwhB,KAE5B,oBAAbxkB,WAET,mBAAsB,KACpB,IACE,IAAIumB,EAAmBJ,eAAeK,QAAQnB,GAAcgB,GACxDE,IACFN,EAAuBnS,KAAKC,MAAMwS,GAEtC,CAAE,MAAOvnB,GAET,IACC,CAACqmB,IAGJ,mBAAsB,KACpB,IAAIoB,EAAwBrB,GAAuB,MAAb/H,EAAmB,CAACra,EAAUwhB,IAAYY,EAChF3J,EAAS,CAAC,EAAGzY,EAAU,CACrBC,UAAU,QAAcD,EAASC,SAAUoa,IAAara,EAASC,WAC/DuhB,GAAWY,EACXsB,EAAqC,MAAVnB,OAAiB,EAASA,EAAOoB,wBAAwBV,GAAsB,IAAM/lB,OAAOgmB,SAASO,GACpI,MAAO,IAAMC,GAA4BA,GAA0B,GAClE,CAACnB,EAAQlI,EAAU+H,IAGtB,mBAAsB,KAEpB,IAA8B,IAA1BO,EAIJ,GAAqC,iBAA1BA,EAAX,CAKA,GAAI3iB,EAAS0e,KAAM,CACjB,IAAIzN,EAAKjU,SAASmC,eAAeykB,mBAAmB5jB,EAAS0e,KAAK+C,MAAM,KACxE,GAAIxQ,EAEF,YADAA,EAAG4S,gBAGP,EAE2B,IAAvB9F,GAIJ7gB,OAAO4mB,SAAS,EAAG,EAdnB,MAFE5mB,OAAO4mB,SAAS,EAAGnB,EAgBA,GACpB,CAAC3iB,EAAU2iB,EAAuB5E,IAEzC,CAnXEgG,CAAqB,CACnB3B,SACAC,eAEK,IACT,CAQA,IAAII,EAOAI,EAQJ,SAASL,EAAqBwB,GAC5B,IAAIC,EAAM,aAAiB,MAE3B,OADCA,IAA6G,SAAiB,GACxHA,CACT,CACA,SAASrB,EAAmBoB,GAC1B,IAAI7pB,EAAQ,aAAiB,MAE7B,OADCA,IAA+G,SAAiB,GAC1HA,CACT,CAsCA,SAAS+pB,EAAgBC,GAEvB,IAAIC,EAAyB,SAAa3K,EAAmB0K,IACzDE,EAAwB,UAAa,GACrCrkB,GAAW,UACXskB,EAAe,WAAc,IAtmBnC,SAAoCC,EAAgBC,GAClD,IAAIF,EAAe7K,EAAmB8K,GAetC,OAdIC,GAMFA,EAAoBjjB,SAAQ,CAACC,EAAG6W,KACzBiM,EAAanK,IAAI9B,IACpBmM,EAAoBC,OAAOpM,GAAK9W,SAAQ6D,IACtCkf,EAAatJ,OAAO3C,EAAKjT,EAAM,GAEnC,IAGGkf,CACT,CAylBEI,CAA2B1kB,EAASkK,OAAQma,EAAsBvQ,QAAU,KAAOsQ,EAAuBtQ,UAAU,CAAC9T,EAASkK,SAC1H4U,GAAW,UACX6F,EAAkB,eAAkB,CAACC,EAAUC,KACjD,MAAMC,EAAkBrL,EAAuC,mBAAbmL,EAA0BA,EAASN,GAAgBM,GACrGP,EAAsBvQ,SAAU,EAChCgL,EAAS,IAAMgG,EAAiBD,EAAgB,GAC/C,CAAC/F,EAAUwF,IACd,MAAO,CAACA,EAAcK,EACxB,CACA,SAASI,IACP,GAAwB,oBAAb/nB,SACT,MAAM,IAAImV,MAAM,gHAEpB,CAKA,SAAS2O,IACP,IAAI,OACFyB,GACEC,EAAqBC,EAAeuC,YACpC,SACF3K,GACE,aAAiB,MACjB4K,GAAiB,UACrB,OAAO,eAAkB,SAAUrM,EAAQ3F,QACzB,IAAZA,IACFA,EAAU,CAAC,GAEb8R,IACA,IAAI,OACFpW,EAAM,OACNvE,EAAM,QACN8P,EAAO,SACPI,EAAQ,KACRhQ,GACE8P,EAAsBxB,EAAQyB,GAClCkI,EAAOzD,SAAS7L,EAAQtE,QAAUA,EAAQ,CACxCoP,mBAAoB9K,EAAQ8K,mBAC5BzD,WACAhQ,OACA6W,WAAYlO,EAAQ7I,QAAUA,EAC9B8a,YAAajS,EAAQiH,SAAWA,EAChCzP,QAASwI,EAAQxI,QACjBtQ,MAAO8Y,EAAQ9Y,MACfgrB,YAAaF,GAEjB,GAAG,CAAC1C,EAAQlI,EAAU4K,GACxB,EAvHA,SAAWxC,GACTA,EAAqC,qBAAI,uBACzCA,EAA0B,UAAI,YAC9BA,EAAiC,iBAAI,mBACrCA,EAA2B,WAAI,YAChC,EALD,CAKGA,IAAmBA,EAAiB,CAAC,IAExC,SAAWI,GACTA,EAAiC,YAAI,cACrCA,EAA0C,qBAAI,sBAC/C,CAHD,CAGGA,IAAwBA,EAAsB,CAAC,IAiQlD,MAAMQ,EAAiC,gCACvC,IAAIJ,EAAuB,CAAC,kICx3BxBmC,GAAmB,SACrB,SAA2BC,GACzB,IAAIC,EAAKD,GAAI,MAAEE,GAAUD,EAAIxX,GAAQ,QAAUwX,EAAI,CAAC,UACpD,MAAMtS,GAAU,UAChBuS,EAAQA,GAASvS,EACjB,MAAMwS,EAAc1X,EAAM/R,QACpBA,GAAU,SAAUgjB,IACT,MAAfyG,GAA+BA,EAAYzG,GACvCA,EAAMS,kBAED,MAAT+F,GAAyBA,EAAMhT,MAAM,IAEjChX,GAAW,IAAAkqB,UACf,KAAsB,IAAAC,MACpB,MACA,CACE,aAAc,gBACdtpB,QAAS,QACTupB,KAAM,OACNC,OAAQ,eACRC,cAAe,QACfC,eAAgB,QAChBC,YAAa,QACbC,QAAS,YACTttB,OAAQ,MACRD,MAAO,MACP8C,SAAU,EACQ,IAAA0qB,KAAI,OAAQ,CAAEC,GAAI,IAAKC,GAAI,IAAKC,GAAI,KAAMC,GAAI,QAC9C,IAAAJ,KAAI,OAAQ,CAAEC,GAAI,IAAKC,GAAI,KAAMC,GAAI,KAAMC,GAAI,UAIrE,IASF,OAPAvY,GAAQ,SAAc,QAAe,CACnC,sBAAuB,GACvBvS,YACCuS,GAAQ,CACT/R,YAEF+R,GAAQ,OAAUA,EAEpB,IAEEwY,GAAgB,SAAW,SAAwBxY,GACrD,MAAMyY,EAAYnB,EAAiBtX,GACnC,OAAO,OA/CK,SA+CkByY,EAChC,yHCnDIC,EAAU,SACVC,GAAY,SACd,SAAoB3Y,GAClB,MAAM4P,GAAM,IAAAgJ,QAAO,MACbvV,GAAU,QAAWuM,EAAK8I,IACzBG,EAAgBC,IAAqB,IAAA5f,WAC1C,MAAQmK,IAAW,QAAS,CAAEA,UAASpX,KAAM+T,EAAM/T,SAarD,OAXA,IAAA8sB,YAAU,KACHnJ,EAAI5J,SAET8S,GAAkB,QAASlJ,EAAI5J,SAAS,GACvC,IACHhG,GAAQ,SAAc,QAAe,CACnCiG,KAAO4S,GAA8B,MAAZxV,OAA6B,EAAX,UAC1CrD,GAAQ,CACT4P,KAAK,QAAaA,EAAK5P,EAAM4P,OAE/B5P,GAAQ,OAAWA,EAErB,KAEW,SAAW,SAAiBA,GACvC,MAAMyY,EAAYE,EAAU3Y,GAC5B,OAAO,OAAc0Y,EAASD,EAChC","sources":["webpack://@finviz/website/./js/app/home/market_sentiment.tsx","webpack://@finviz/website/./js/app/home/refresh.ts","webpack://@finviz/website/./js/app/home/indices-data.ts","webpack://@finviz/website/./js/app/home/signals-switch/types.ts","webpack://@finviz/website/./js/app/home/signals-switch/EliteSwitch.tsx","webpack://@finviz/website/./js/app/home/signals-switch/FreeSwitch.tsx","webpack://@finviz/website/./js/app/home/signals-switch/index.tsx","webpack://@finviz/website/./js/app/home/index.tsx","webpack://@finviz/website/./js/app/maps/services/api.ts","webpack://@finviz/website/./js/app/maps/store/action-creators.ts","webpack://@finviz/website/./js/app/maps/store/appDispatcher.ts","webpack://@finviz/website/./js/app/maps/store/constants.ts","webpack://@finviz/website/./js/app/maps/store/store.ts","webpack://@finviz/website/./js/app/maps/store/mapStore.ts","webpack://@finviz/website/./js/app/shared/chartLayoutConfig.ts","webpack://@finviz/website/./js/app/shared/parseJSONFromScript.ts","webpack://@finviz/website/./js/main/components/delayed.tsx","webpack://@finviz/website/./js/main/components/notification/hooks.ts","webpack://@finviz/website/./js/main/components/notification/notification-wrapper.tsx","webpack://@finviz/website/./js/main/components/notification/with-notification-context.tsx","webpack://@finviz/website/./js/main/components/notification/notification.tsx","webpack://@finviz/website/./js/main/hooks/useVisualViewport.ts","webpack://@finviz/website/../node_modules/flux/index.js","webpack://@finviz/website/../node_modules/flux/lib/Dispatcher.js","webpack://@finviz/website/../node_modules/flux/lib/invariant.js","webpack://@finviz/website/../node_modules/keymirror/index.js","webpack://@finviz/website/../node_modules/react-router-dom/dist/index.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/5KB2YIDT.js","webpack://@finviz/website/../node_modules/@ariakit/react-core/esm/__chunks/JJ3MV4KB.js"],"sourcesContent":["import { Component, MouseEvent } from 'react'\r\nimport ReactDOM from 'react-dom/client'\r\n\r\nimport { CancelablePromise, apiRequest } from '../../main/services/api'\r\nimport { Instrument } from '../../main/types'\r\nimport {\r\n ChartElementType,\r\n ChartLayout,\r\n LayoutType,\r\n Quote,\r\n RootChartConfigObject,\r\n ScaleType,\r\n TIMEFRAME,\r\n Theme,\r\n} from '../charts-lib'\r\n\r\nconst ticker = 'market_sentiment'\r\n\r\ninterface MarketSentimentProps {}\r\n\r\nconst MARKET_SENTIMENT_WIDTH_PX = 160\r\nconst MARKET_SENTIMENT_HEIGHT_PX = 40\r\nconst marketSentimentChartConfig: RootChartConfigObject = {\r\n layout: LayoutType['1h1v'],\r\n theme: FinvizSettings.hasDarkTheme ? Theme.dark : Theme.light,\r\n width: MARKET_SENTIMENT_WIDTH_PX,\r\n height: MARKET_SENTIMENT_HEIGHT_PX,\r\n scrollable: false,\r\n editable: false,\r\n cross: false,\r\n charts: [\r\n {\r\n width: MARKET_SENTIMENT_WIDTH_PX,\r\n height: MARKET_SENTIMENT_HEIGHT_PX,\r\n timeframe: TIMEFRAME.i3,\r\n scale: ScaleType.Linear,\r\n ticker: ticker,\r\n instrument: Instrument.MarketSentiment,\r\n refreshData: false,\r\n premarket: false,\r\n aftermarket: false,\r\n dateRange: null,\r\n stretch: true,\r\n panes: [\r\n {\r\n height: MARKET_SENTIMENT_HEIGHT_PX,\r\n elements: [\r\n {\r\n type: ChartElementType.MarketSentiment,\r\n overlays: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n}\r\n\r\ninterface MarketSentimentState {\r\n loading: boolean\r\n enabled: boolean\r\n chartConfig: RootChartConfigObject | null\r\n}\r\n\r\nclass MarketSentiment extends Component {\r\n state: MarketSentimentState = {\r\n loading: true,\r\n enabled: false,\r\n chartConfig: null,\r\n }\r\n\r\n _timer: number | null = null\r\n _lastRequest: CancelablePromise | null = null\r\n\r\n componentDidMount() {\r\n this._fetchData('', () => {\r\n this.setState({ chartConfig: marketSentimentChartConfig })\r\n })\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this._timer !== null) {\r\n this._lastRequest?.cancel?.()\r\n clearTimeout(this._timer)\r\n }\r\n }\r\n\r\n render() {\r\n const { loading, enabled, chartConfig } = this.state\r\n\r\n return (\r\n \r\n \r\n \r\n Click BULL for positive market sentiment
Click BEAR for negative market sentiment] offsetx=[-200] offsety=[20] delay=[100]\">\r\n {chartConfig && (\r\n
\r\n \r\n
\r\n )}\r\n \r\n \r\n this._vote(e, 'bull')}\r\n >\r\n Bull\r\n \r\n \r\n this._vote(e, 'bear')}\r\n >\r\n Bear\r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n _vote(e: MouseEvent, sentiment: string) {\r\n e.preventDefault()\r\n this.setState({ enabled: false })\r\n this._fetchData('?b=' + sentiment, undefined, false)\r\n }\r\n\r\n _fetchData = async (urlQuery = '', callback?: Function, setTimer = true) => {\r\n if (setTimer && this._timer !== null) clearTimeout(this._timer)\r\n\r\n if (document.hidden) {\r\n // console.log(`${+new Date()} Document is hidden, canceling refresh`)\r\n if (setTimer) this._timer = window.setTimeout(() => this._fetchData(urlQuery, callback), 1000)\r\n return\r\n }\r\n\r\n // console.log(`${+new Date()} Document is visible, refreshing`)\r\n\r\n this._lastRequest = apiRequest(`/api/market_sentiment.ashx${urlQuery}`)\r\n const json = await this._lastRequest\r\n if (json) {\r\n const quoteData = getData(json)\r\n const quote = Quote.findByAttribute('ticker', ticker)\r\n if (quote) {\r\n Quote.findByAttribute('ticker', ticker)!.updateAttributes(getData(json))\r\n } else {\r\n Quote.create(quoteData).save()\r\n }\r\n callback?.()\r\n\r\n this.setState({\r\n loading: false,\r\n enabled: json.enabled,\r\n })\r\n }\r\n\r\n if (setTimer) {\r\n this._timer = window.setTimeout(() => this._fetchData(urlQuery, callback), (json?.refresh ?? 30) * 1000)\r\n }\r\n }\r\n}\r\n\r\ninterface QuoteData {\r\n refresh: number\r\n enabled: boolean\r\n sum: number[]\r\n weight: number[]\r\n time: string\r\n visibleMinutes: number\r\n}\r\n\r\nfunction getData(data: QuoteData) {\r\n return {\r\n close: data.sum,\r\n volume: data.weight,\r\n date: Array.from('1'.repeat(data.sum.length)).map((x) => parseInt(x, 10)),\r\n ticker: ticker,\r\n timeframe: 'i3',\r\n instrument: 'market_sentiment',\r\n premarket: false,\r\n aftermarket: false,\r\n afterChange: null,\r\n afterClose: null,\r\n drawMinutesPerDay: data.visibleMinutes,\r\n marketStartMinutes: 570,\r\n premarketLengthMinutes: 0,\r\n aftermarketLengthMinutes: 0,\r\n }\r\n}\r\n\r\nlet root: ReactDOM.Root\r\nfunction mount() {\r\n const rootEl = document.getElementById('js-market-sentiment')\r\n root = ReactDOM.createRoot(rootEl!)\r\n root.render()\r\n}\r\n\r\nfunction unmount() {\r\n root.unmount?.()\r\n}\r\n\r\nmount()\r\n\r\nexport { mount, unmount }\r\n","import { ContentType, apiRequest } from '../../main/services/api'\r\nimport { mapPerf } from '../maps/services/api'\r\nimport mapActionCreators from '../maps/store/action-creators'\r\nimport { MapSubtypeId, MapTypeId } from '../maps/types'\r\nimport { getMapsRefreshInterval } from '../maps/utils'\r\nimport { intervalCallbackOnWindowVisible } from '../shared/documentVisibility'\r\nimport { isStockFastRefreshAvailable } from '../shared/isStockFastRefreshAvailable'\r\nimport { parseJSONFromScript } from '../shared/parseJSONFromScript'\r\nimport { Indices, updateIndices } from './indices-data'\r\n\r\ninterface RefreshInfo {\r\n userId: string\r\n version: number\r\n interval: number\r\n hasGeoMaps: boolean\r\n}\r\n\r\nconst refreshInfo = parseJSONFromScript('refresh-init')\r\n\r\nfunction refreshPage(newDocument: Document) {\r\n // Replace market stats\r\n const oldMarketStats = document.getElementsByClassName('market-stats')\r\n const newMarketStats = newDocument.getElementsByClassName('market-stats')\r\n if (oldMarketStats.length === newMarketStats.length) {\r\n Array.from(oldMarketStats).forEach((_, index) => {\r\n const oldElement = oldMarketStats.item(index)\r\n const newElement = newMarketStats.item(index)\r\n if (oldElement && newElement) {\r\n oldElement.innerHTML = newElement.innerHTML\r\n }\r\n })\r\n }\r\n\r\n replaceSignalTables(newDocument)\r\n\r\n // Replace bottom\r\n const oldHomepageBottom = document.getElementById('js-homepage_bottom')\r\n const newHomepageBottom = newDocument.getElementById('js-homepage_bottom')\r\n if (oldHomepageBottom && newHomepageBottom) {\r\n oldHomepageBottom.innerHTML = newHomepageBottom.innerHTML\r\n }\r\n\r\n if (FinvizSettings.hasUserPremium || FinvizSettings.hasRedesignEnabled) {\r\n import(/* webpackChunkName: \"recent_quotes\" */ '../shared/recent_quotes').then(({ RenderRecentQuotes }) => {\r\n RenderRecentQuotes()\r\n })\r\n }\r\n\r\n // Send refresh event to google analytics\r\n window.gtag?.('event', 'refresh', { event_category: 'page' })\r\n // Refresh any ads that might be on the page\r\n if (window.finvizBannersLoaded === true) {\r\n window.initFinvizBanners?.()\r\n } else if (typeof window.refreshAds === 'function') {\r\n window.refreshAds('#js-homepage_bottom [id*=IC_D_]')\r\n }\r\n}\r\n\r\nexport function replaceSignalTables(newDocument: Document) {\r\n // Replace left signals table\r\n const oldSignalsLeft = document.getElementById('js-signals_1')\r\n const newSignalsLeft = newDocument.getElementById('js-signals_1')\r\n if (oldSignalsLeft && newSignalsLeft) {\r\n oldSignalsLeft.innerHTML = newSignalsLeft.innerHTML\r\n }\r\n\r\n // Replace right signals table\r\n const oldSignalsRight = document.getElementById('js-signals_2')\r\n const newSignalsRight = newDocument.getElementById('js-signals_2')\r\n if (oldSignalsRight && newSignalsRight) {\r\n oldSignalsRight.innerHTML = newSignalsRight.innerHTML\r\n }\r\n}\r\n\r\nexport async function getRefreshData() {\r\n const data = await apiRequest(window.location.pathname, {\r\n headers: {\r\n 'Content-Type': ContentType.Html,\r\n 'X-Is-Ajax-Request': 'true',\r\n 'X-Theme': FinvizSettings.hasDarkTheme ? 'dark' : FinvizSettings.hasRedesignEnabled ? 'light' : 'legacy',\r\n },\r\n })\r\n\r\n if (!data) return undefined\r\n\r\n const newDocument = new DOMParser().parseFromString(data, 'text/html')\r\n const newRefreshInfo = parseJSONFromScript('refresh-init', newDocument)\r\n\r\n if (!refreshInfo || !newRefreshInfo || refreshInfo.userId !== newRefreshInfo.userId) return undefined\r\n\r\n if (refreshInfo.version !== newRefreshInfo.version) {\r\n window.location.reload()\r\n }\r\n\r\n return newDocument\r\n}\r\n\r\nfunction initRefresh(interval: number) {\r\n intervalCallbackOnWindowVisible(interval, async function handleRefresh() {\r\n const newDocument = await getRefreshData()\r\n\r\n if (newDocument) {\r\n refreshPage(newDocument)\r\n }\r\n })\r\n}\r\n\r\nenum IndicesPollingIntervalInMs {\r\n Default = 3000,\r\n Reduced = 60000,\r\n Free = 180000,\r\n}\r\n\r\nif (refreshInfo?.interval) {\r\n initRefresh(refreshInfo.interval * 1000)\r\n\r\n function getIndicesRefreshInterval() {\r\n if (!FinvizSettings.hasUserPremium) {\r\n return IndicesPollingIntervalInMs.Free\r\n }\r\n if (!isStockFastRefreshAvailable(false, false)) {\r\n return IndicesPollingIntervalInMs.Reduced\r\n }\r\n\r\n return IndicesPollingIntervalInMs.Default\r\n }\r\n\r\n intervalCallbackOnWindowVisible(getIndicesRefreshInterval, async function handleRefresh() {\r\n const newIndicesData = await apiRequest('/api/indices_data.ashx')\r\n\r\n if (newIndicesData) {\r\n updateIndices(newIndicesData)\r\n }\r\n })\r\n\r\n intervalCallbackOnWindowVisible(getMapsRefreshInterval, async function handleRefresh() {\r\n const perfDataSecReq = mapPerf(MapTypeId.Sector, MapSubtypeId.DayPerf)\r\n const perfDataGeoReq = refreshInfo.hasGeoMaps ? mapPerf(MapTypeId.World, MapSubtypeId.DayPerf) : null\r\n\r\n const [perfDataSec, perfDataGeo] = await Promise.all([perfDataSecReq, perfDataGeoReq])\r\n\r\n try {\r\n if (perfDataSec) {\r\n if (window.FinvizIndexSecMap.version !== perfDataSec.version) {\r\n window.location.reload()\r\n }\r\n mapActionCreators.updatePerfData(window.FinvizIndexSecMap, perfDataSec)\r\n }\r\n\r\n if (perfDataGeo) {\r\n if (window.FinvizIndexGeoMap.version !== perfDataGeo.version) {\r\n window.location.reload()\r\n }\r\n mapActionCreators.updatePerfData(window.FinvizIndexGeoMap, perfDataGeo)\r\n }\r\n } catch {}\r\n })\r\n}\r\n","import { Quote } from '../charts-lib'\r\nimport './market_sentiment'\r\nimport './refresh'\r\n\r\ninterface Index {\r\n ticker: string\r\n timeframe: string\r\n volume: number[]\r\n date: number[]\r\n open: number[]\r\n high: number[]\r\n low: number[]\r\n close: number[]\r\n lastOpen: null\r\n lastHigh: null\r\n lastLow: null\r\n lastClose: number\r\n lastVolume: null\r\n lastDate: number\r\n prevClose: number\r\n afterClose: null\r\n afterChange: null\r\n relativeVolume: number\r\n}\r\n\r\nexport type Indices = Record\r\n\r\nexport function getData(index: string, ticker: string, indices: Indices) {\r\n return {\r\n ...indices[index],\r\n ticker: ticker, // use text?\r\n timeframe: 'i10',\r\n instrument: 'stock',\r\n premarket: false,\r\n aftermarket: false,\r\n hasChartEvents: false,\r\n afterChange: null,\r\n afterClose: null,\r\n drawMinutesPerDay: 390,\r\n marketStartMinutes: 570,\r\n premarketLengthMinutes: 0,\r\n aftermarketLengthMinutes: 0,\r\n }\r\n}\r\n\r\nexport function updateIndices(indices: Indices) {\r\n const dowQ = Quote.findByAttribute('ticker', 'DOW')\r\n if (dowQ) dowQ.updateAttributes(getData('^DJI', 'DOW', indices))\r\n\r\n const nasdaqQ = Quote.findByAttribute('ticker', 'NASDAQ')\r\n if (nasdaqQ) nasdaqQ.updateAttributes(getData('^IXIC', 'NASDAQ', indices))\r\n\r\n const sap500Q = Quote.findByAttribute('ticker', 'S&P 500')\r\n if (sap500Q) sap500Q.updateAttributes(getData('^GSPC', 'S&P 500', indices))\r\n\r\n const rutQ = Quote.findByAttribute('ticker', 'RUSSELL 2000')\r\n if (rutQ) rutQ.updateAttributes(getData('^RUT', 'RUSSELL 2000', indices))\r\n\r\n if (!dowQ || !nasdaqQ || !sap500Q || !rutQ) {\r\n // Temporary code below\r\n // additional info gaining for https://finvizcom.sentry.io/issues/3963831382/?project=33153&referrer=issue-stream&statsPeriod=14d&stream_index=0\r\n window.Sentry?.captureMessage('indices-data.ts updateIndices', {\r\n extra: {\r\n allAvailableTickers: Quote.all()\r\n .reduce((acc: string[], cur: { ticker: string }) => {\r\n acc.push(cur.ticker)\r\n return acc\r\n }, [])\r\n .join(','),\r\n },\r\n })\r\n }\r\n}\r\n","export enum HPSignalInterval {\r\n intraday = 'intraday',\r\n daily = 'daily',\r\n}\r\n\r\nexport const HP_SIGNAL_LABELS: Record = {\r\n [HPSignalInterval.intraday]: 'Intraday',\r\n [HPSignalInterval.daily]: 'Daily',\r\n}\r\nexport const HP_SIGNAL_COOKIE = 'signalsInterval'\r\nexport const HP_SIGNAL_SWITCH_RENDER_SELECTOR = 'js-switches-root'\r\n","import classNames from 'classnames'\r\n\r\nimport { Icon, Select, SelectOption } from '../../../main/components'\r\nimport { HPSignalInterval, HP_SIGNAL_LABELS } from './types'\r\n\r\nconst IS_REDESIGN = FinvizSettings.hasRedesignEnabled\r\nconst OPTIONS = Object.entries(HP_SIGNAL_LABELS).map(([value, label]) => ({ value: value as HPSignalInterval, label }))\r\nconst ROUNDING = IS_REDESIGN ? undefined : 'none'\r\n\r\ntype EliteSwitchProps = {\r\n isLoading: boolean\r\n signal: HPSignalInterval\r\n onSignalChange: (signals: HPSignalInterval) => void\r\n}\r\n\r\nexport default function EliteSwitch({ isLoading, signal, onSignalChange }: EliteSwitchProps) {\r\n return (\r\n option.value === signal)}\r\n rightContent={}\r\n onChange={({ value }) => {\r\n onSignalChange(value)\r\n }}\r\n placement=\"bottom-end\"\r\n orientation=\"horizontal\"\r\n isLoading={isLoading}\r\n disabled={isLoading}\r\n gutter={IS_REDESIGN ? 0 : 1}\r\n // override height defined by button to not stretch old hp signal tables\r\n style={IS_REDESIGN ? undefined : { height: 'auto' }}\r\n >\r\n {OPTIONS.map((item) => (\r\n \r\n {item.label}\r\n \r\n ))}\r\n \r\n )\r\n}\r\n","import React from 'react'\r\n\r\nimport { Button, Icon, Paragraph } from '../../../main/components'\r\nimport { Popover, PopoverTrigger, usePopoverState } from '../../../main/components/popover'\r\nimport { HPSignalInterval, HP_SIGNAL_LABELS } from './types'\r\n\r\nconst IS_REDESIGN = FinvizSettings.hasRedesignEnabled\r\n\r\nexport default function FreeSwitch() {\r\n const state = usePopoverState({ placement: 'bottom-end' })\r\n const isOpen = state.useState('open')\r\n\r\n return (\r\n <>\r\n {IS_REDESIGN ? (\r\n \r\n {HP_SIGNAL_LABELS[HPSignalInterval.daily]}\r\n \r\n ) : (\r\n \r\n {HP_SIGNAL_LABELS[HPSignalInterval.daily]}\r\n \r\n \r\n )}\r\n \r\n
\r\n \r\n Get access to intraday data with Finviz*Elite.\r\n \r\n \r\n Subscribe\r\n \r\n
\r\n \r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport * as ReactDOM from 'react-dom'\r\n\r\nimport { setCookieRequest } from '../../../main/services/api'\r\nimport { getCookie } from '../../shared/cookie'\r\nimport { getRefreshData, replaceSignalTables } from '../refresh'\r\nimport EliteSwitch from './EliteSwitch'\r\nimport FreeSwitch from './FreeSwitch'\r\nimport { HPSignalInterval, HP_SIGNAL_COOKIE } from './types'\r\n\r\nconst HEADER_SWITCH_SELECTOR = '.js-signal-switch'\r\nconst SWITCH_BUTTON_SELECTOR = '.js-signal-switch-button'\r\nconst signalSwitchesElements = Array.from(document.querySelectorAll(HEADER_SWITCH_SELECTOR))\r\n\r\nfunction getSignalsCookie() {\r\n const value = getCookie(HP_SIGNAL_COOKIE)\r\n let signal = HPSignalInterval.daily\r\n const castedValue = value as HPSignalInterval\r\n\r\n if (FinvizSettings.hasUserPremium && !!castedValue) signal = castedValue\r\n return signal\r\n}\r\n\r\nasync function handleSignalIntervalChange() {\r\n const newDocument = await getRefreshData()\r\n if (newDocument) {\r\n replaceSignalTables(newDocument)\r\n } else {\r\n document.location.reload()\r\n }\r\n}\r\n\r\nexport default function HomepageSignals() {\r\n const [signal, setSignal] = React.useState(getSignalsCookie())\r\n const [isLoading, setIsLoading] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n // remove inlined buttons from html template\r\n document.querySelectorAll(SWITCH_BUTTON_SELECTOR).forEach((element) => {\r\n element.remove()\r\n })\r\n }, [])\r\n\r\n const handleSignalChange = async (changedSignal: HPSignalInterval) => {\r\n if (changedSignal !== signal) {\r\n setSignal(changedSignal)\r\n setIsLoading(true)\r\n try {\r\n await setCookieRequest(HP_SIGNAL_COOKIE, changedSignal)\r\n await handleSignalIntervalChange().catch()\r\n } catch {\r\n setSignal(signal)\r\n }\r\n setIsLoading(false)\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {signalSwitchesElements.map((element) =>\r\n ReactDOM.createPortal(\r\n FinvizSettings.hasUserPremium ? (\r\n \r\n ) : (\r\n \r\n ),\r\n element\r\n )\r\n )}\r\n \r\n )\r\n}\r\n","import ReactDOMClient from 'react-dom/client'\r\n\r\nimport { SpecificChartFunctionality } from '../../main/constants'\r\nimport {\r\n ChartElementType,\r\n ChartLayout,\r\n Instrument,\r\n LayoutType,\r\n Quote,\r\n ScaleType,\r\n TIMEFRAME,\r\n Theme,\r\n} from '../charts-lib'\r\nimport { getCustomColorsFromCookies } from '../shared/chartLayoutConfig'\r\nimport { parseJSONFromScript } from '../shared/parseJSONFromScript'\r\nimport { ready } from '../shared/ready'\r\nimport type { Indices } from './indices-data'\r\nimport { getData } from './indices-data'\r\nimport './market_sentiment'\r\nimport './refresh'\r\nimport SignalIntervalSwitch from './signals-switch'\r\nimport { HP_SIGNAL_SWITCH_RENDER_SELECTOR } from './signals-switch/types'\r\n\r\nif (FinvizSettings.hasUserPremium || FinvizSettings.hasRedesignEnabled) {\r\n import(/* webpackChunkName: \"recent_quotes\" */ '../shared/recent_quotes').then(({ RenderRecentQuotes }) => {\r\n RenderRecentQuotes()\r\n })\r\n}\r\n\r\nfunction getChartConfig(ticker: string) {\r\n return {\r\n layout: LayoutType['1h1v'],\r\n width: 320,\r\n height: 190,\r\n barWidth: 3,\r\n barMargin: 1,\r\n scrollable: false,\r\n editable: false,\r\n cross: false,\r\n colors: getCustomColorsFromCookies(),\r\n specificChartFunctionality: SpecificChartFunctionality.smallIndex,\r\n theme: FinvizSettings.hasDarkTheme ? Theme.dark : Theme.light,\r\n charts: [\r\n {\r\n width: 0,\r\n premarket: false,\r\n aftermarket: false,\r\n dateRange: null,\r\n height: 190,\r\n timeframe: TIMEFRAME.i10,\r\n scale: ScaleType.Linear,\r\n ticker: ticker,\r\n // leftOffset: 0,\r\n instrument: Instrument.Stock,\r\n refreshData: false,\r\n // stretch: true,\r\n panes: [\r\n {\r\n height: 190,\r\n elements: [\r\n {\r\n type: ChartElementType.CandleStick,\r\n overlays: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n }\r\n}\r\n\r\nfunction renderSignalIntervalSwitch() {\r\n const signalSwitches = document.getElementById(HP_SIGNAL_SWITCH_RENDER_SELECTOR)\r\n\r\n if (signalSwitches) {\r\n const root = ReactDOMClient.createRoot(signalSwitches)\r\n root.render()\r\n }\r\n}\r\n\r\nready(function () {\r\n const indices = parseJSONFromScript('js-indices')!\r\n const root = ReactDOMClient.createRoot(document.getElementById('home_indexes')!)\r\n\r\n Quote.create(getData('^DJI', 'DOW', indices)).save()\r\n Quote.create(getData('^IXIC', 'NASDAQ', indices)).save()\r\n Quote.create(getData('^GSPC', 'S&P 500', indices)).save()\r\n Quote.create(getData('^RUT', 'RUSSELL 2000', indices)).save()\r\n\r\n root.render(\r\n <>\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n )\r\n\r\n renderSignalIntervalSwitch()\r\n})\r\n","import { ContentType, apiRequest } from '../../../main/services/api'\r\nimport { MapSubtypeId, MapTypeId, PerfData } from '../types'\r\n\r\nexport function mapPerf(type: MapTypeId, subtype: MapSubtypeId) {\r\n return apiRequest(`/api/map_perf.ashx`, { query: { t: type, st: subtype } })\r\n}\r\n\r\nexport function mapPerfScreener(query = window.location.search) {\r\n return apiRequest(`/api/map_perf_screener.ashx${query}`)\r\n}\r\n\r\nexport interface UploadMapResponse {\r\n imgUrl: string\r\n shareUrl: string\r\n}\r\n\r\nexport function uploadMap({ type, subtype, data }: { type: MapTypeId; subtype: MapSubtypeId; data: string }) {\r\n return apiRequest(`/publish_map_submit.ashx`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': ContentType.FormUrlEncoded,\r\n },\r\n body: new URLSearchParams({\r\n file: data.replace('data:image/png;base64,', ''),\r\n type,\r\n subtype,\r\n }),\r\n })\r\n}\r\n","import debounce from 'lodash.debounce'\r\n\r\nimport { CancelablePromise, apiRequest } from '../../../main/services/api'\r\nimport Treemap from '../treemap'\r\nimport { MapData, MapDataNode, MapTypeId, PerfData, Scale } from '../types'\r\nimport { getVisibleTooltipTickers } from '../utils'\r\nimport AppDispatcher from './appDispatcher'\r\nimport { ActionTypes } from './constants'\r\nimport mapStore from './mapStore'\r\n\r\nvar _targetScale = 1\r\nfunction zoomIn(treemap: Treemap, scale: number, tx: number, ty: number) {\r\n _targetScale = scale\r\n animate()\r\n function animate() {\r\n treemap.zoom.scale(+(treemap.zoom.scale() + 0.05).toFixed(2), { x: tx, y: ty })\r\n AppDispatcher.handleViewAction({ type: ActionTypes.RENDER_TREEMAP })\r\n if (treemap.zoom.scale() + 0.05 < _targetScale + 0.00001) {\r\n requestAnimationFrame(animate)\r\n }\r\n }\r\n}\r\n\r\nfunction zoomOut(treemap: Treemap, scale: number, tx: number, ty: number) {\r\n _targetScale = scale\r\n animate()\r\n function animate() {\r\n treemap.zoom.scale(+(treemap.zoom.scale() - 0.05).toFixed(2), { x: tx, y: ty })\r\n AppDispatcher.handleViewAction({ type: ActionTypes.RENDER_TREEMAP })\r\n if (treemap.zoom.scale() - 0.05 > _targetScale - 0.00001) {\r\n requestAnimationFrame(animate)\r\n }\r\n }\r\n}\r\n\r\nfunction updateVisibleSparklines(treemap: Treemap) {\r\n const hoveredNode = mapStore.getHoveredNode(treemap.mapNodeId)\r\n if (hoveredNode) {\r\n const tickersToLoad = getVisibleTooltipTickers(hoveredNode)\r\n\r\n if (!tickersToLoad.includes(hoveredNode.name)) {\r\n tickersToLoad.push(hoveredNode.name)\r\n }\r\n\r\n if (tickersToLoad.length) {\r\n debouncedLoadSparklines(tickersToLoad, treemap.type)\r\n }\r\n }\r\n}\r\n\r\nlet _lastSparklinesRequest: CancelablePromise | null = null\r\nasync function loadSparklines(tickers: string[], mapType: string) {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.LOAD_SPARKLINES_STARTED,\r\n })\r\n _lastSparklinesRequest?.cancel?.()\r\n _lastSparklinesRequest = apiRequest(\r\n '/api/map_sparklines.ashx',\r\n { query: { t: tickers.join(','), ty: mapType } },\r\n true\r\n )\r\n\r\n try {\r\n const data = await _lastSparklinesRequest\r\n AppDispatcher.handleServerAction({\r\n type: ActionTypes.LOAD_SPARKLINES_COMPLETED,\r\n data: data,\r\n })\r\n } catch (error) {\r\n AppDispatcher.handleServerAction({\r\n type: ActionTypes.LOAD_SPARKLINES_FAILED,\r\n error,\r\n })\r\n }\r\n}\r\n\r\nconst debouncedLoadSparklines = debounce(loadSparklines, 200, { trailing: true })\r\n\r\nconst actions = {\r\n setHoveredNode(mapNodeId: string, node: MapDataNode | undefined) {\r\n if (!node) {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.RESET_SPARKLINE_DATA,\r\n })\r\n }\r\n\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.SET_HOVERED_NODE,\r\n node,\r\n mapNodeId,\r\n })\r\n },\r\n\r\n loadSparklineData(tickers: string[], mapType: MapTypeId) {\r\n if (tickers) {\r\n debouncedLoadSparklines(tickers, mapType)\r\n }\r\n },\r\n\r\n loadSparklinesCancel() {\r\n _lastSparklinesRequest?.cancel?.()\r\n },\r\n\r\n resetSparklineData() {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.RESET_SPARKLINE_DATA,\r\n })\r\n },\r\n\r\n changeTranslate(treemap: Treemap, tx: number, ty: number) {\r\n treemap.zoom.translate([tx, ty])\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.CHANGE_TRANSLATE,\r\n })\r\n },\r\n\r\n zoom(treemap: Treemap, direction: number, offsetX: number, offsetY: number) {\r\n if (direction > 0) {\r\n const zoomLevel = treemap.getNextZoomLevel()\r\n if (zoomLevel !== treemap.zoom.scale()) {\r\n zoomIn(treemap, zoomLevel, offsetX, offsetY)\r\n }\r\n } else {\r\n const zoomLevel = treemap.getPreviousZoomLevel()\r\n if (zoomLevel !== treemap.zoom.scale()) {\r\n zoomOut(treemap, zoomLevel, offsetX, offsetY)\r\n }\r\n }\r\n },\r\n\r\n render() {\r\n AppDispatcher.handleViewAction({ type: ActionTypes.RENDER_TREEMAP })\r\n },\r\n\r\n zoomAndTranslate(treemap: Treemap, scale: number, tx: number, ty: number) {\r\n treemap.zoom.scale(1, { x: tx, y: ty })\r\n treemap.zoom.scale(scale, { x: tx, y: ty })\r\n AppDispatcher.handleViewAction({ type: ActionTypes.RENDER_TREEMAP })\r\n },\r\n\r\n updateLayout(\r\n treemap: Treemap,\r\n props: { width: number; height: number; data: MapData; scale: Scale; dataHash: string }\r\n ) {\r\n treemap.updateData(props)\r\n treemap.zoom.updateDimensions(props)\r\n AppDispatcher.handleViewAction({ type: ActionTypes.RENDER_TREEMAP })\r\n\r\n // Update hovered node if any\r\n const hoveredNode = mapStore.getHoveredNode(treemap.mapNodeId)\r\n if (hoveredNode) {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.SET_HOVERED_NODE,\r\n node: treemap.nodes.find((node) => node.name === hoveredNode.name),\r\n mapNodeId: treemap.mapNodeId,\r\n })\r\n updateVisibleSparklines(treemap)\r\n }\r\n },\r\n\r\n updatePerfData(treemap?: Treemap, data?: PerfData) {\r\n if (!treemap || !data) return\r\n\r\n treemap.updatePerf(data)\r\n AppDispatcher.handleServerAction({ type: ActionTypes.UPDATE_DATA, version: data.version })\r\n\r\n updateVisibleSparklines(treemap)\r\n },\r\n\r\n _setOnPublish(getPublishCanvas: () => HTMLCanvasElement) {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.SET_PUBLISH_CANVAS,\r\n getPublishCanvas,\r\n })\r\n },\r\n\r\n setupWidget() {\r\n AppDispatcher.handleViewAction({\r\n type: ActionTypes.SET_WIDGET,\r\n isWidget: true,\r\n })\r\n },\r\n}\r\n\r\nexport default actions\r\n","import { Dispatcher } from 'flux'\r\n\r\nimport { PayloadSources } from './constants'\r\n\r\nclass AppDispatcher extends Dispatcher {\r\n handleServerAction(action: any) {\r\n var payload = {\r\n source: PayloadSources.SERVER_ACTION,\r\n action: action,\r\n }\r\n //console.log(action, payload);\r\n this.dispatch(payload)\r\n }\r\n\r\n handleViewAction(action: any) {\r\n var payload = {\r\n source: PayloadSources.VIEW_ACTION,\r\n action: action,\r\n }\r\n //console.log(action, payload);\r\n this.dispatch(payload)\r\n }\r\n}\r\n\r\nconst dispatcher = new AppDispatcher()\r\nexport default dispatcher\r\n","import keyMirror from 'keymirror'\r\n\r\nconst ActionTypes = keyMirror({\r\n RENDER_TREEMAP: null,\r\n CHANGE_TRANSLATE: null,\r\n SET_HOVERED_NODE: null,\r\n\r\n LOAD_SPARKLINES_STARTED: null,\r\n LOAD_SPARKLINES_COMPLETED: null,\r\n LOAD_SPARKLINES_FAILED: null,\r\n RESET_SPARKLINE_DATA: null,\r\n\r\n INIT_STARTED: null,\r\n INIT_FAILED: null,\r\n\r\n UPDATE_DATA: null,\r\n\r\n SET_PUBLISH_CANVAS: null,\r\n\r\n SET_WIDGET: null,\r\n})\r\n\r\nconst PayloadSources = keyMirror({\r\n SERVER_ACTION: null,\r\n VIEW_ACTION: null,\r\n})\r\n\r\nexport { ActionTypes, PayloadSources }\r\n","import { EventEmitter } from 'events'\r\n\r\nclass Store extends EventEmitter {\r\n static CHANGE_EVENT = 'change'\r\n\r\n emitChange() {\r\n this.emit(Store.CHANGE_EVENT)\r\n }\r\n\r\n addChangeListener(callback: (...args: any[]) => void) {\r\n this.on(Store.CHANGE_EVENT, callback)\r\n }\r\n\r\n removeChangeListener(callback: (...args: any[]) => void) {\r\n this.removeListener(Store.CHANGE_EVENT, callback)\r\n }\r\n}\r\n\r\nexport default Store\r\n","import { MapDataNode } from '../types'\r\nimport AppDispatcher from './appDispatcher'\r\nimport { ActionTypes } from './constants'\r\nimport Store from './store'\r\n\r\nlet _hoveredNode: MapDataNode\r\nlet _mapNodeId: string\r\nlet _sparklinesData: Record = {}\r\nlet _dataVersion: number\r\nlet _isWidget = false\r\nlet _getPublishCanvas: () => HTMLCanvasElement\r\n\r\nclass MapStore extends Store {\r\n getHoveredNode(mapNodeId: string) {\r\n if (mapNodeId === _mapNodeId) return _hoveredNode\r\n return undefined\r\n }\r\n\r\n getSparklines() {\r\n return _sparklinesData\r\n }\r\n\r\n getDataVersion() {\r\n return _dataVersion\r\n }\r\n\r\n isWidget() {\r\n return _isWidget\r\n }\r\n\r\n getPublishCanvas() {\r\n return _getPublishCanvas()\r\n }\r\n}\r\n\r\nvar mapStore = new MapStore()\r\n\r\n// @ts-ignore\r\nmapStore.dispatchToken = AppDispatcher.register(function (payload: any) {\r\n var action = payload.action\r\n\r\n switch (action.type) {\r\n case ActionTypes.RENDER_TREEMAP:\r\n mapStore.emitChange()\r\n break\r\n\r\n case ActionTypes.SET_HOVERED_NODE:\r\n if (action.node !== _hoveredNode) {\r\n _hoveredNode = action.node\r\n _mapNodeId = action.mapNodeId\r\n mapStore.emitChange()\r\n }\r\n break\r\n\r\n case ActionTypes.CHANGE_TRANSLATE:\r\n // @ts-ignore\r\n _hoveredNode = undefined\r\n mapStore.emitChange()\r\n break\r\n\r\n case ActionTypes.LOAD_SPARKLINES_STARTED:\r\n mapStore.emitChange()\r\n break\r\n\r\n case ActionTypes.LOAD_SPARKLINES_COMPLETED:\r\n _sparklinesData = { ..._sparklinesData, ...action.data }\r\n mapStore.emitChange()\r\n break\r\n\r\n case ActionTypes.RESET_SPARKLINE_DATA:\r\n case ActionTypes.LOAD_SPARKLINES_FAILED:\r\n _sparklinesData = {}\r\n mapStore.emitChange()\r\n break\r\n\r\n case ActionTypes.UPDATE_DATA:\r\n _dataVersion = action.version\r\n mapStore.emitChange()\r\n break\r\n\r\n case ActionTypes.SET_PUBLISH_CANVAS:\r\n _getPublishCanvas = action.getPublishCanvas\r\n mapStore.emitChange()\r\n break\r\n\r\n case ActionTypes.SET_WIDGET:\r\n _isWidget = action.isWidget\r\n mapStore.emitChange()\r\n break\r\n }\r\n})\r\n\r\nexport default mapStore\r\n","import { SpecificChartFunctionality } from '../../main/constants'\r\nimport { ChartConfigChartPaneElement, Instrument, LayoutType, ScaleType, TIMEFRAME, Theme } from '../charts-lib'\r\nimport { getParsedCookies } from './cookie'\r\n\r\ninterface PaneElementProps extends ChartConfigChartPaneElement {\r\n label?: string\r\n fromDate?: string\r\n toDate?: string\r\n min?: number\r\n tickers: string[]\r\n}\r\n\r\ninterface StaticChartConfigProps {\r\n width?: number\r\n height?: number\r\n ticker: string\r\n timeframe: TIMEFRAME\r\n paneElements: PaneElementProps[]\r\n specificChartFunctionality?: SpecificChartFunctionality\r\n colorsOverride?: Array\r\n theme?: Theme\r\n colors?: ReturnType\r\n refreshData?: boolean\r\n}\r\n\r\nexport function getStaticChartConfig({\r\n width = 800,\r\n height = 400,\r\n ticker,\r\n timeframe,\r\n paneElements,\r\n specificChartFunctionality = SpecificChartFunctionality.default,\r\n colorsOverride,\r\n theme,\r\n colors = getCustomColorsFromCookies(),\r\n refreshData = false,\r\n}: StaticChartConfigProps) {\r\n return {\r\n layout: LayoutType['1h1v'],\r\n width,\r\n height,\r\n barWidth: 1,\r\n barMargin: 0,\r\n scrollable: false,\r\n editable: false,\r\n specificChartFunctionality,\r\n colorsOverride,\r\n theme,\r\n colors,\r\n charts: [\r\n {\r\n width: 0,\r\n premarket: false,\r\n aftermarket: false,\r\n dateRange: null,\r\n height,\r\n timeframe,\r\n scale: ScaleType.Linear,\r\n ticker: ticker,\r\n leftOffset: 0,\r\n instrument: Instrument.Stock,\r\n refreshData,\r\n stretch: true,\r\n panes: [\r\n {\r\n height,\r\n elements: paneElements,\r\n },\r\n ],\r\n },\r\n ],\r\n }\r\n}\r\n\r\nexport function getCustomColorsFromCookies() {\r\n try {\r\n return JSON.parse(getParsedCookies('customColors') as string)\r\n } catch {\r\n return undefined\r\n }\r\n}\r\n","export function parseJSONFromScript(id: string, doc: Document = document): T | null {\r\n const el = doc.getElementById(id)\r\n const isValidElement = el && el.tagName === 'SCRIPT' && el.getAttribute('type') === 'application/json'\r\n\r\n if (!isValidElement) {\r\n window.Sentry?.captureMessage('parseJSONFromScript', {\r\n extra: {\r\n el: el ? 'yes' : 'no',\r\n tagName: el?.tagName,\r\n type: el?.getAttribute('type'),\r\n },\r\n })\r\n }\r\n\r\n if (!isValidElement) return null\r\n\r\n try {\r\n return JSON.parse(el.textContent!)\r\n } catch (e) {\r\n Sentry.captureException(e)\r\n return null\r\n }\r\n}\r\n","import * as React from 'react'\r\n\r\nexport interface DelayedProps {\r\n /**\r\n * The delay in milliseconds before the component is rendered.\r\n *\r\n * @default 300\r\n */\r\n delay?: number\r\n\r\n /**\r\n * Delay in milliseconds before rendering timeout state.\r\n */\r\n timeout?: number\r\n\r\n /**\r\n * Throw on timeout (suspense)\r\n */\r\n throwOnTimeout?: boolean\r\n\r\n /**\r\n * Component visible during the delay.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n delayComponent?: React.ReactNode\r\n\r\n /**\r\n * Component visible when timeout is over.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n timeoutComponent?: React.ReactNode\r\n\r\n /**\r\n * Component visible when delay is over.\r\n * If rendering text, wrap it in a `span` to prevent error — see PR#608\r\n */\r\n children?: React.ReactNode\r\n}\r\n\r\nexport function Delayed({\r\n delay = 300,\r\n timeout = 0,\r\n throwOnTimeout = false,\r\n delayComponent,\r\n timeoutComponent,\r\n children,\r\n}: DelayedProps) {\r\n const [visible, setVisible] = React.useState(false)\r\n const [hasTimedOut, setHasTimedOut] = React.useState(false)\r\n\r\n React.useEffect(() => {\r\n const visibilityTimeout = window.setTimeout(() => setVisible(true), delay)\r\n\r\n let failedTimeout: number\r\n if (timeout > 0) {\r\n failedTimeout = window.setTimeout(() => {\r\n setHasTimedOut(true)\r\n if (throwOnTimeout) throw new Error()\r\n }, timeout)\r\n }\r\n\r\n return () => {\r\n clearTimeout(visibilityTimeout)\r\n clearTimeout(failedTimeout)\r\n }\r\n }, [delay, timeout, throwOnTimeout])\r\n\r\n if (!visible) return <>{delayComponent}\r\n\r\n if (hasTimedOut) {\r\n return <>{timeoutComponent}\r\n }\r\n\r\n return <>{children}\r\n}\r\n","import * as React from 'react'\r\n\r\nexport type NotificationContextType = ReturnType\r\n\r\nexport enum NotificationPosition {\r\n TopLeft,\r\n TopRight,\r\n BottomLeft,\r\n BottomRight,\r\n}\r\n\r\nexport interface NotificationOptions {\r\n position?: NotificationPosition\r\n inline?: boolean\r\n}\r\n\r\nexport const NotificationContext = React.createContext<{\r\n show: (element: JSX.Element, options?: NotificationOptions) => void\r\n hide: () => void\r\n}>({\r\n show: () => {},\r\n hide: () => {},\r\n})\r\n\r\nexport function useNotification() {\r\n return React.useContext(NotificationContext)\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { getVisualViewport, useVisualViewport } from '../../hooks/useVisualViewport'\r\nimport { NotificationContext, NotificationOptions, NotificationPosition } from './hooks'\r\n\r\ninterface NotificationState {\r\n element: JSX.Element\r\n options: Partial\r\n}\r\n\r\nexport function NotificationWrapper(props: React.PropsWithChildren) {\r\n const [isOpen, setIsOpen] = React.useState(false)\r\n const [notification, setNotification] = React.useState(null)\r\n const { viewport, setViewport } = useVisualViewport({ enabled: !!notification })\r\n\r\n const context = React.useRef({\r\n show: (element: JSX.Element, options: Partial = {}) => {\r\n setViewport(() => getVisualViewport(window.visualViewport))\r\n setNotification({ element, options })\r\n setIsOpen(true)\r\n },\r\n hide: () => setIsOpen(false),\r\n })\r\n\r\n const positionClass = React.useMemo(() => {\r\n const { position = NotificationPosition.BottomLeft } = notification?.options ?? {}\r\n return {\r\n '[--inset-t:1rem] items-start pt-inset-top': [\r\n NotificationPosition.TopLeft,\r\n NotificationPosition.TopRight,\r\n ].includes(position),\r\n '[--inset-r:1rem] justify-end landscape-secondary:pr-inset-right': [\r\n NotificationPosition.TopRight,\r\n NotificationPosition.BottomRight,\r\n ].includes(position),\r\n '[--inset-b:1rem] items-end pb-inset-bottom': [\r\n NotificationPosition.BottomLeft,\r\n NotificationPosition.BottomRight,\r\n ].includes(position),\r\n '[--inset-l:1rem] justify-start landscape-primary:pl-inset-left': [\r\n NotificationPosition.TopLeft,\r\n NotificationPosition.BottomLeft,\r\n ].includes(position),\r\n }\r\n }, [notification?.options])\r\n\r\n const WrapperComponent = React.useMemo(\r\n () => (notification?.options.inline ? React.Fragment : Ariakit.Portal),\r\n [notification?.options.inline]\r\n )\r\n\r\n return (\r\n \r\n {props.children}\r\n {isOpen && (\r\n \r\n \r\n {notification?.element}\r\n \r\n \r\n )}\r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { NotificationContextType, useNotification } from './hooks'\r\n\r\nexport function withNotificationContext(\r\n WrappedComponent: React.ComponentType\r\n) {\r\n const displayName = WrappedComponent.displayName ?? WrappedComponent.name ?? 'Component'\r\n const WithNotificationContext = (props: Omit) => {\r\n const notification = useNotification()\r\n return \r\n }\r\n\r\n WithNotificationContext.displayName = `withNotificationContext(${displayName})`\r\n\r\n return WithNotificationContext\r\n}\r\n","import * as Ariakit from '@ariakit/react'\r\nimport classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { Button } from '../button'\r\nimport { useNotification } from './hooks'\r\n\r\ninterface NotificationProps {\r\n className?: string\r\n /**\r\n * Default button text\r\n * @default Close\r\n */\r\n closeText?: string\r\n\r\n /**\r\n * Custom buttons. Overrides `closeText`\r\n */\r\n actions?: JSX.Element\r\n\r\n /**\r\n * When set, the notification will automatically close\r\n */\r\n timeoutInMs?: number\r\n}\r\n\r\nexport function Notification({\r\n className,\r\n closeText = 'Close',\r\n actions,\r\n timeoutInMs,\r\n children,\r\n}: React.PropsWithChildren) {\r\n const notification = useNotification()\r\n\r\n React.useEffect(() => {\r\n let timeoutId: number\r\n if (timeoutInMs) {\r\n timeoutId = window.setTimeout(() => {\r\n notification.hide()\r\n }, timeoutInMs)\r\n }\r\n\r\n return () => {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId)\r\n }\r\n }\r\n }, [notification, timeoutInMs])\r\n\r\n return (\r\n \r\n
{children}
\r\n
\r\n {actions ?? (\r\n \r\n )}\r\n
\r\n \r\n )\r\n}\r\n","import throttle from 'lodash.throttle'\r\nimport * as React from 'react'\r\n\r\nexport function getVisualViewport(visualViewport: VisualViewport | null) {\r\n const width = visualViewport?.width ?? window.innerWidth\r\n const height = visualViewport?.height ?? window.innerHeight\r\n const scale = visualViewport?.scale ?? 1\r\n\r\n return {\r\n top: visualViewport?.offsetTop ?? 0,\r\n left: visualViewport?.offsetLeft ?? 0,\r\n scale: Math.round((1 / scale) * 100) / 100,\r\n width: Math.round(width * scale),\r\n height: Math.round(height * scale),\r\n unscaledWidth: width,\r\n unscaledHeight: height,\r\n }\r\n}\r\n\r\nexport function useVisualViewport({ enabled = true, onScroll = true }: { enabled?: boolean; onScroll?: boolean } = {}) {\r\n const [viewport, setViewport] = React.useState(getVisualViewport(window.visualViewport))\r\n\r\n React.useEffect(() => {\r\n if (!enabled) return\r\n\r\n const handleChange = throttle((ev: Event) => {\r\n const viewport = ev.currentTarget as VisualViewport\r\n if (viewport) {\r\n setViewport(() => getVisualViewport(viewport))\r\n }\r\n }, 50)\r\n\r\n window.visualViewport?.addEventListener('resize', handleChange)\r\n if (onScroll) window.visualViewport?.addEventListener('scroll', handleChange)\r\n handleChange({ currentTarget: window.visualViewport } as Event)\r\n\r\n return () => {\r\n window.visualViewport?.removeEventListener('resize', handleChange)\r\n window.visualViewport?.removeEventListener('scroll', handleChange)\r\n }\r\n }, [enabled, onScroll])\r\n\r\n return React.useMemo(() => ({ viewport, setViewport }), [viewport])\r\n}\r\n","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\nmodule.exports.Dispatcher = require('./lib/Dispatcher')\n","/*\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule Dispatcher\n * @typechecks\n */\n\n\"use strict\";\n\nvar invariant = require('./invariant');\n\nvar _lastID = 1;\nvar _prefix = 'ID_';\n\n/**\n * Dispatcher is used to broadcast payloads to registered callbacks. This is\n * different from generic pub-sub systems in two ways:\n *\n * 1) Callbacks are not subscribed to particular events. Every payload is\n * dispatched to every registered callback.\n * 2) Callbacks can be deferred in whole or part until other callbacks have\n * been executed.\n *\n * For example, consider this hypothetical flight destination form, which\n * selects a default city when a country is selected:\n *\n * var flightDispatcher = new Dispatcher();\n *\n * // Keeps track of which country is selected\n * var CountryStore = {country: null};\n *\n * // Keeps track of which city is selected\n * var CityStore = {city: null};\n *\n * // Keeps track of the base flight price of the selected city\n * var FlightPriceStore = {price: null}\n *\n * When a user changes the selected city, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'city-update',\n * selectedCity: 'paris'\n * });\n *\n * This payload is digested by `CityStore`:\n *\n * flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'city-update') {\n * CityStore.city = payload.selectedCity;\n * }\n * });\n *\n * When the user selects a country, we dispatch the payload:\n *\n * flightDispatcher.dispatch({\n * actionType: 'country-update',\n * selectedCountry: 'australia'\n * });\n *\n * This payload is digested by both stores:\n *\n * CountryStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * CountryStore.country = payload.selectedCountry;\n * }\n * });\n *\n * When the callback to update `CountryStore` is registered, we save a reference\n * to the returned token. Using this token with `waitFor()`, we can guarantee\n * that `CountryStore` is updated before the callback that updates `CityStore`\n * needs to query its data.\n *\n * CityStore.dispatchToken = flightDispatcher.register(function(payload) {\n * if (payload.actionType === 'country-update') {\n * // `CountryStore.country` may not be updated.\n * flightDispatcher.waitFor([CountryStore.dispatchToken]);\n * // `CountryStore.country` is now guaranteed to be updated.\n *\n * // Select the default city for the new country\n * CityStore.city = getDefaultCityForCountry(CountryStore.country);\n * }\n * });\n *\n * The usage of `waitFor()` can be chained, for example:\n *\n * FlightPriceStore.dispatchToken =\n * flightDispatcher.register(function(payload) {\n * switch (payload.actionType) {\n * case 'country-update':\n * flightDispatcher.waitFor([CityStore.dispatchToken]);\n * FlightPriceStore.price =\n * getFlightPriceStore(CountryStore.country, CityStore.city);\n * break;\n *\n * case 'city-update':\n * FlightPriceStore.price =\n * FlightPriceStore(CountryStore.country, CityStore.city);\n * break;\n * }\n * });\n *\n * The `country-update` payload will be guaranteed to invoke the stores'\n * registered callbacks in order: `CountryStore`, `CityStore`, then\n * `FlightPriceStore`.\n */\n\n function Dispatcher() {\n this.$Dispatcher_callbacks = {};\n this.$Dispatcher_isPending = {};\n this.$Dispatcher_isHandled = {};\n this.$Dispatcher_isDispatching = false;\n this.$Dispatcher_pendingPayload = null;\n }\n\n /**\n * Registers a callback to be invoked with every dispatched payload. Returns\n * a token that can be used with `waitFor()`.\n *\n * @param {function} callback\n * @return {string}\n */\n Dispatcher.prototype.register=function(callback) {\n var id = _prefix + _lastID++;\n this.$Dispatcher_callbacks[id] = callback;\n return id;\n };\n\n /**\n * Removes a callback based on its token.\n *\n * @param {string} id\n */\n Dispatcher.prototype.unregister=function(id) {\n invariant(\n this.$Dispatcher_callbacks[id],\n 'Dispatcher.unregister(...): `%s` does not map to a registered callback.',\n id\n );\n delete this.$Dispatcher_callbacks[id];\n };\n\n /**\n * Waits for the callbacks specified to be invoked before continuing execution\n * of the current callback. This method should only be used by a callback in\n * response to a dispatched payload.\n *\n * @param {array} ids\n */\n Dispatcher.prototype.waitFor=function(ids) {\n invariant(\n this.$Dispatcher_isDispatching,\n 'Dispatcher.waitFor(...): Must be invoked while dispatching.'\n );\n for (var ii = 0; ii < ids.length; ii++) {\n var id = ids[ii];\n if (this.$Dispatcher_isPending[id]) {\n invariant(\n this.$Dispatcher_isHandled[id],\n 'Dispatcher.waitFor(...): Circular dependency detected while ' +\n 'waiting for `%s`.',\n id\n );\n continue;\n }\n invariant(\n this.$Dispatcher_callbacks[id],\n 'Dispatcher.waitFor(...): `%s` does not map to a registered callback.',\n id\n );\n this.$Dispatcher_invokeCallback(id);\n }\n };\n\n /**\n * Dispatches a payload to all registered callbacks.\n *\n * @param {object} payload\n */\n Dispatcher.prototype.dispatch=function(payload) {\n invariant(\n !this.$Dispatcher_isDispatching,\n 'Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.'\n );\n this.$Dispatcher_startDispatching(payload);\n try {\n for (var id in this.$Dispatcher_callbacks) {\n if (this.$Dispatcher_isPending[id]) {\n continue;\n }\n this.$Dispatcher_invokeCallback(id);\n }\n } finally {\n this.$Dispatcher_stopDispatching();\n }\n };\n\n /**\n * Is this Dispatcher currently dispatching.\n *\n * @return {boolean}\n */\n Dispatcher.prototype.isDispatching=function() {\n return this.$Dispatcher_isDispatching;\n };\n\n /**\n * Call the callback stored with the given id. Also do some internal\n * bookkeeping.\n *\n * @param {string} id\n * @internal\n */\n Dispatcher.prototype.$Dispatcher_invokeCallback=function(id) {\n this.$Dispatcher_isPending[id] = true;\n this.$Dispatcher_callbacks[id](this.$Dispatcher_pendingPayload);\n this.$Dispatcher_isHandled[id] = true;\n };\n\n /**\n * Set up bookkeeping needed when dispatching.\n *\n * @param {object} payload\n * @internal\n */\n Dispatcher.prototype.$Dispatcher_startDispatching=function(payload) {\n for (var id in this.$Dispatcher_callbacks) {\n this.$Dispatcher_isPending[id] = false;\n this.$Dispatcher_isHandled[id] = false;\n }\n this.$Dispatcher_pendingPayload = payload;\n this.$Dispatcher_isDispatching = true;\n };\n\n /**\n * Clear bookkeeping used for dispatching.\n *\n * @internal\n */\n Dispatcher.prototype.$Dispatcher_stopDispatching=function() {\n this.$Dispatcher_pendingPayload = null;\n this.$Dispatcher_isDispatching = false;\n };\n\n\nmodule.exports = Dispatcher;\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule invariant\n */\n\n\"use strict\";\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (false) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n 'Invariant Violation: ' +\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","/**\n * Copyright 2013-2014 Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n\"use strict\";\n\n/**\n * Constructs an enumeration with keys equal to their value.\n *\n * For example:\n *\n * var COLORS = keyMirror({blue: null, red: null});\n * var myColor = COLORS.blue;\n * var isColorValid = !!COLORS[myColor];\n *\n * The last line could not be performed if the values of the generated enum were\n * not equal to their keys.\n *\n * Input: {key1: val1, key2: val2}\n * Output: {key1: key1, key2: key2}\n *\n * @param {object} obj\n * @return {object}\n */\nvar keyMirror = function(obj) {\n var ret = {};\n var key;\n if (!(obj instanceof Object && !Array.isArray(obj))) {\n throw new Error('keyMirror(...): Argument must be an object.');\n }\n for (key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n ret[key] = key;\n }\n return ret;\n};\n\nmodule.exports = keyMirror;\n","/**\n * React Router DOM v6.16.0\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nimport * as React from 'react';\nimport { UNSAFE_mapRouteProperties, Router, UNSAFE_NavigationContext, useHref, useResolvedPath, useLocation, UNSAFE_DataRouterStateContext, useNavigate, createPath, UNSAFE_useRouteId, UNSAFE_RouteContext, useMatches, useNavigation, unstable_useBlocker, UNSAFE_DataRouterContext } from 'react-router';\nexport { AbortedDeferredError, Await, MemoryRouter, Navigate, NavigationType, Outlet, Route, Router, RouterProvider, Routes, UNSAFE_DataRouterContext, UNSAFE_DataRouterStateContext, UNSAFE_LocationContext, UNSAFE_NavigationContext, UNSAFE_RouteContext, UNSAFE_useRouteId, createMemoryRouter, createPath, createRoutesFromChildren, createRoutesFromElements, defer, generatePath, isRouteErrorResponse, json, matchPath, matchRoutes, parsePath, redirect, redirectDocument, renderMatches, resolvePath, unstable_useBlocker, useActionData, useAsyncError, useAsyncValue, useHref, useInRouterContext, useLoaderData, useLocation, useMatch, useMatches, useNavigate, useNavigation, useNavigationType, useOutlet, useOutletContext, useParams, useResolvedPath, useRevalidator, useRouteError, useRouteLoaderData, useRoutes } from 'react-router';\nimport { stripBasename, UNSAFE_warning, createRouter, createBrowserHistory, createHashHistory, UNSAFE_ErrorResponseImpl, UNSAFE_invariant, joinPaths } from '@remix-run/router';\n\nfunction _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nconst defaultMethod = \"get\";\nconst defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n return object != null && typeof object.tagName === \"string\";\n}\nfunction isButtonElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n return event.button === 0 && (\n // Ignore everything but left clicks\n !target || target === \"_self\") &&\n // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ;\n}\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nfunction createSearchParams(init) {\n if (init === void 0) {\n init = \"\";\n }\n return new URLSearchParams(typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]);\n }, []));\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n let searchParams = createSearchParams(locationSearch);\n if (defaultSearchParams) {\n // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n // web extensions. Relevant Bugzilla tickets:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach(value => {\n searchParams.append(key, value);\n });\n }\n });\n }\n return searchParams;\n}\n// One-time check for submitter support\nlet _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0);\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\nconst supportedFormEncTypes = new Set([\"application/x-www-form-urlencoded\", \"multipart/form-data\", \"text/plain\"]);\nfunction getFormEncType(encType) {\n if (encType != null && !supportedFormEncTypes.has(encType)) {\n process.env.NODE_ENV !== \"production\" ? UNSAFE_warning(false, \"\\\"\" + encType + \"\\\" is not a valid `encType` for `
`/`` \" + (\"and will default to \\\"\" + defaultEncType + \"\\\"\")) : void 0;\n return null;\n }\n return encType;\n}\nfunction getFormSubmissionInfo(target, basename) {\n let method;\n let action;\n let encType;\n let formData;\n let body;\n if (isFormElement(target)) {\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n formData = new FormData(target);\n } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n let form = target.form;\n if (form == null) {\n throw new Error(\"Cannot submit a