{"version":3,"file":"1965.425c5191.js","mappings":"woCAGA,MAAMA,EAAgB,CACpBC,QAAS,CAAEC,KAAM,cAAeC,OAAQ,eACxCC,MAAO,CAAEF,KAAM,aAAcC,OAAQ,eAqChC,SAASE,EAAOC,GAQN,IARO,SACtBC,EAAQ,MACRC,EAAQ,UAAS,OACjBL,EAAM,KACND,EAAI,MACJO,EAAQ,IAAG,QACXC,EAAU,IAAG,QACbC,EAAU,KACGL,EACb,MAAMM,EAAUC,EAAAA,SACd,IACE,CACE,YAAYb,EAAcQ,GAAON,QACjC,cAAcF,EAAcQ,GAAOL,UACnCA,GAAU,WAAWA,KACrB,SAASU,EAAAA,eAAqBX,GAAQY,EAAAA,GAA8BZ,GAAQA,KAC5E,UAAUO,KACV,YAAYC,KACZ,YAAYC,MAEXI,OAAOC,SACPC,KAAK,MACV,CAACT,EAAOL,EAAQD,EAAMO,EAAOC,EAASC,IAGxC,OAAOE,EAAAA,SAAeK,IAAIX,GAAWY,GACnCN,EAAAA,eAAqBM,GACjBN,EAAAA,aAAmBM,EAAyD,CAC1E,eAAgBP,IAElBO,GAER,C,8FClDA,MAAMC,EAA0B,IAKzB,SAASC,EAAYf,GAA6D,IAA5D,MAAEgB,EAAK,SAAEC,EAAW,EAAC,SAAEhB,EAAQ,QAAEG,EAAO,QAAEC,GAAgBL,EACrF,MAAOkB,EAAaC,GAAkBZ,EAAAA,UAAe,GAC/Ca,EAAuBb,EAAAA,OAA4B,MACnDc,EAA2Bd,EAAAA,QAAa,KACxCa,EAAqBE,UACvBC,OAAOC,aAAaJ,EAAqBE,SACzCF,EAAqBE,QAAU,KACjC,IAEIG,EAAiBlB,EAAAA,OAAa,CAClCmB,aAAcA,KACZL,EAAyBC,UACzBH,GAAe,EAAK,EAEtBQ,aAAcA,KACZP,EAAqBE,QAAUC,OAAOK,YAAW,KAC/CT,GAAe,EAAM,GACpBL,EAAwB,IAIzBe,EAAQtB,EAAAA,SAAc,IACtBuB,OAAOC,SAASf,EAAMgB,KACjB,SAAUC,EAAAA,EAAAA,IAA+B,IAAbjB,EAAMgB,MAEpCC,EAAAA,EAAAA,IAAkBjB,EAAMkB,UAA8B,IAAlBlB,EAAMkB,UAAwB,OACxE,CAAClB,EAAMkB,UAAWlB,EAAMgB,MAE3BzB,EAAAA,WACE,IAAM,KACJc,EAAyBC,SAAS,GAEpC,IAGF,MAAMT,EAAQN,EAAAA,aAAmBN,EAAUwB,EAAeH,SAE1D,OAAKJ,GAAeF,EAAMmB,WACjBtB,GAIPuB,EAAAA,EAAAA,KAACrC,EAAAA,EAAO,CAENG,MAAM,QACNN,MACEyC,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAArC,SAAA,EACEmC,EAAAA,EAAAA,KAACG,EAAAA,EAAU,CAACC,OAAQxB,EAAMwB,UAC1BH,EAAAA,EAAAA,MAAA,OAAApC,SAAA,EACEmC,EAAAA,EAAAA,KAAA,KAAAnC,SAAIe,EAAMyB,UACTzB,EAAM0B,SAAS,KAACN,EAAAA,EAAAA,KAAA,QAAAnC,SAAM,MAAQ,IAAEe,EAAM2B,QAAQ,KAACP,EAAAA,EAAAA,KAAA,QAAAnC,SAAM,MAAQ,IAAE4B,QAItE1B,MAAO,EACPC,QAASA,QAAAA,EAAW,GACpBC,QAASA,QAAAA,EAAYY,EAAW,GAAK,GAAK,IAAKhB,SAE9CY,GAfI,GAAGG,EAAMwB,UAAUxB,EAAMkB,aAAajB,IAkBjD,C,sECjFO,SAASsB,EAAUvC,GAAmC,IAAlC,OAAEwC,KAAWI,GAAmB5C,EACzD,MAAM6C,EAAiBC,EAAAA,KACjBC,EAAaD,EAAAA,KACbE,EAAMF,EAAAA,GAAuBN,GAAQ,GACrCS,EAASH,EAAAA,GAAgBE,GAE/B,OAAOZ,EAAAA,EAAAA,KAAA,OAAKS,eAAgBA,KAAoBE,EAAYG,IAAKF,EAAKC,OAAQA,KAAYL,GAC5F,C,4HCAO,SAASO,EAAeC,GAAkC,IAAAC,EAC/D,OAAO,IAAIC,EAAAA,EAAY,CACrBC,eAAgB,CACdC,QAAS,CACPC,kBAAkB,EAClBC,sBAAsB,KACnBN,SAA4B,QAAhBC,EAAZD,EAAcG,sBAAc,IAAAF,OAAA,EAA5BA,EAA8BG,YAEhCJ,aAAY,EAAZA,EAAcG,mBAEhBH,GAEP,CAEO,SAASO,EAAkB3D,GAAyE,IAAxE,SAAEC,EAAQ,aAAEmD,GAA0DpD,EACvG,MAAM4D,EAASrD,EAAAA,OAAa4C,EAAeC,IAE3C,OACEhB,EAAAA,EAAAA,KAACyB,EAAAA,GAAmB,CAACD,OAAQA,EAAOtC,QAAQrB,UAC1CmC,EAAAA,EAAAA,KAAC0B,EAAAA,GAAa,CAACC,kBAAmBC,EAAAA,GAAqB/D,SAAEA,KAG/D,CAEO,SAASgE,EACdC,EACAC,GAC4B,IAAAC,EAC5B,MAAMC,EAAgBzB,IACpBR,EAAAA,EAAAA,KAACuB,EAAkB,CAACP,aAAce,EAAOlE,UACvCmC,EAAAA,EAAAA,KAAC8B,EAAS,IAAMtB,MAMpB,OAFAyB,EAAaC,YAAc,0BAA+C,QAA/CF,EAA0BF,EAAUI,mBAAW,IAAAF,EAAAA,EAAI,eAEvEC,CACT,C,yGCjDA,MAAME,EACJ,mIAEK,SAASC,EACdhC,GAIQ,IAAAiC,EAAAC,EAAAC,EAAA,IAHRC,EAAgBC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAChBG,EAASH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAA6B,QAA7BJ,EAAGQ,eAAeC,mBAAW,IAAAT,GAAO,QAAPA,EAA1BA,EAA4BU,aAAK,IAAAV,OAAA,EAAjCA,EAAmCO,UAC/CI,EAASP,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAA6B,QAA7BH,EAAGO,eAAeC,mBAAW,IAAAR,GAAO,QAAPA,EAA1BA,EAA4BS,aAAK,IAAAT,OAAA,EAAjCA,EAAmCU,UAE/C,MAAMlF,EAAQ+E,eAAeI,aAAe,SAAMN,EAC5CO,EAAWL,eAAeM,gBAA4C,QAA9BZ,EAAIM,eAAeC,mBAAW,IAAAP,GAAO,QAAPA,EAA1BA,EAA4BQ,aAAK,IAAAR,GAAjCA,EAAmCa,SAAWjB,EAAmB,GAC7GkB,GAAQC,EAAAA,EAAAA,GAAkB,CAC9BC,GAAI,IACJC,EAAGpD,EACHqD,GAAIb,QAAAA,EAAa,IACjBc,GAAI,eACJC,EAAGX,EACHY,GAAI9F,IAGN,IAAI+F,EAAS,GAAGhB,eAAeiB,+BAA+BT,IAAQH,IAMtE,OAJIV,IAEFqB,EAASA,EAAOE,QAAQ,MAAO,MAAMA,QAAQ,KAAM,OAE9CF,CACT,CAEO,SAASG,IAA0B,IAAAC,EAAAC,EACxC,OAAkC,QAAlCD,EAAQpB,eAAeC,mBAAW,IAAAmB,GAAO,QAAPA,EAA1BA,EAA4BlB,aAAK,IAAAkB,OAAA,EAAjCA,EAAmCrB,WACzC,IAAK,KACL,IAAK,MACH,MAAO,CAAEuB,MAAO,IAAKC,OAAQ,KAC/B,IAAK,KACH,MAAO,CAAED,MAAO,IAAKC,OAAQ,KAC/B,IAAK,IACH,OAA8B,QAA9BF,EAAIrB,eAAeC,mBAAW,IAAAoB,GAAO,QAAPA,EAA1BA,EAA4BnB,aAAK,IAAAmB,GAAjCA,EAAmCd,SAAiB,CAAEe,MAAO,IAAKC,OAAQ,KACvE,CAAED,MAAO,IAAKC,OAAQ,KAC/B,QACE,MAAO,CAAED,MAAO,IAAKC,OAAQ,KAEnC,CAEO,SAASC,IACd,MAAO,4BACT,CAEO,SAASC,EACdlE,GAIA,IAAAmE,EAAA,IAHA/B,EAAgBC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAChBG,EAASH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAA6B,QAA7B8B,EAAG1B,eAAeC,mBAAW,IAAAyB,GAAO,QAAPA,EAA1BA,EAA4BxB,aAAK,IAAAwB,OAAA,EAAjCA,EAAmC3B,UAC/CI,EAAkBP,UAAAC,OAAA,EAAAD,UAAA,QAAAE,EAElB,MAAM6B,EAAYR,IAEZpD,EAAMwB,EAAiBhC,EAAQoC,EAASI,EAAWI,GACnDnC,EAAS4D,EAAU7D,GAGzB,MAAO,CACL8D,IAAK,mDAHc7D,SAAAA,EAAQ6B,OAAS,YAAY7B,KAAY,WAGQD,aAAe4D,EAAUL,kBAAkBK,EAAUJ,gBACtHI,EAEP,CAEO,SAASC,EAAU7D,GAExB,MAAO,GAAGA,SAAWA,WACvB,C,2FC/DO,SAAS+D,EAAO/G,GAAgE,IAA/D,YAAEgH,EAAW,cAAEC,EAAa,aAAEC,KAAiBtE,GAAc5C,EACnF,OACEoC,EAAAA,EAAAA,KAAA,UAASQ,EAAOuE,UAAWC,IAAW,2DAA4DxE,EAAMuE,WAAWlH,UACjHoC,EAAAA,EAAAA,MAAA,OAAK8E,UAAU,oFAAmFlH,SAAA,EAChGmC,EAAAA,EAAAA,KAAA,OACE+E,UAAWC,IAAW,4BAA6B,CACjD,kBAAkBC,EAAAA,EAAAA,QACjBpH,SAEF+G,IAEFC,IAAiB7E,EAAAA,EAAAA,KAAA,OAAK+E,UAAU,oBAAmBlH,SAAEgH,KACtD7E,EAAAA,EAAAA,KAAA,OAAK+E,UAAU,oBAAmBlH,SAAEiH,QAI5C,C,uECjBO,SAASI,EAAWtH,GAAoC,IAAnC,MAAEuH,EAAK,KAAEC,EAAO,UAAiBxH,EAC3D,OACEoC,EAAAA,EAAAA,KAAA,OAAK+E,UAAU,kCAAiClH,SAC7CsH,EAAM3G,KAAI6G,IAAA,IAAC,MAAEC,EAAK,KAAEC,EAAI,SAAEC,EAAQ,eAAEC,GAAgBJ,EAAA,OACnDrF,EAAAA,EAAAA,KAAC0F,EAAAA,GAAM,CAELC,GAAIC,EAAAA,GACJC,GAAIN,EACJE,eAAgBA,EAChB3H,MAAM,MACNgI,SAAS,OACTC,OAAQP,EACRJ,KAAMA,EAAKvH,SAEVyH,GATIC,EAUE,KAIjB,C,+GCrBA,MAAMS,EAAoB,iEAUnB,SAASC,EAAUrI,GAaU,IAbiC,UACnEsI,EAAS,OACTC,EAAM,aACNC,EAAY,UACZC,EAAS,YACTC,EAAW,SACXC,EAAQ,aACRC,EAAY,YACZC,EAAW,UACXC,GAAY,EAAK,uBACjBC,EAAsB,UACtB5B,KACG6B,GAC6BhJ,EAChC,MAAMiJ,EAAkBF,aAAsB,EAAtBA,EAAyBF,EAAc,EAAGK,EAAAA,GAAUC,MACtEC,EAAkBL,aAAsB,EAAtBA,EAAyBF,EAAc,EAAGK,EAAAA,GAAUG,MAE5E,OACEhH,EAAAA,EAAAA,MAAA,OAAK8E,UAAWmC,IAAW,aAAcnC,GAAWlH,SAAA,EAClDmC,EAAAA,EAAAA,KAAA,OAAK+E,UAAU,0BAAyBlH,UACtCmC,EAAAA,EAAAA,KAAC0F,EAAAA,GAAM,CACLyB,MAAM,sBACNC,QAASjB,EACTrB,aAAa,gBACbhH,MAAM,kBACNsH,KAAK,QACLiC,UAAWnB,EACXoB,QAAQ,UACJV,KACAC,EACJ9B,UAAWmC,IAAWL,aAAe,EAAfA,EAAiB9B,UAAWiB,EAAmB,CACnE,2CAA4CE,SAIlDlG,EAAAA,EAAAA,KAAA,OAAK+E,UAAU,mCAAkClH,SAC9C2I,EAAahI,KAAI,CAAC+I,EAAYC,KAC7B,GAAID,IAAeT,EAAAA,GAAUW,IAC3B,OACEzH,EAAAA,EAAAA,KAAA,QAAqC+E,UAAU,6CAA4ClH,SAAC,KAAjF,GAAG0J,KAAcC,KAMhC,MAAME,EAAwBf,aAAsB,EAAtBA,EAC5BY,EACAT,EAAAA,GAAUS,YAEN/B,EAAWiB,IAAgBc,EAEjC,OACEvH,EAAAA,EAAAA,KAAC0F,EAAAA,GAAM,CAELyB,MAAO,cAAcI,IACrBF,UAAWf,EAAYiB,GACvBH,QAASb,EAAW,IAAMA,EAASgB,QAAc5E,EACjDoD,OAAQP,EACR1H,MAAM,kBACNsH,KAAK,WACDwB,KACAc,EACJ3C,UAAWmC,IAAWQ,aAAqB,EAArBA,EAAuB3C,UAAW,WAAY,CAClE,CAACiB,IAAqBR,IACrB3H,UAEHmC,EAAAA,EAAAA,KAAC2H,EAAAA,EAAuB,CAACrC,MAAOiC,EAAYb,UAAWlB,GAAYkB,KAb9Da,EAcE,OAIfvH,EAAAA,EAAAA,KAAA,OAAK+E,UAAU,SAAQlH,UACrBmC,EAAAA,EAAAA,KAAC0F,EAAAA,GAAM,CACLyB,MAAM,kBACNC,QAASf,EACTvB,aAAa,eACbhH,MAAM,kBACNsH,KAAK,QACLiC,UAAWjB,EACXkB,QAAQ,UACJV,KACAI,EACJjC,UAAWmC,IAAWF,aAAe,EAAfA,EAAiBjC,UAAWiB,EAAmB,CACnE,2CAA4CI,UAMxD,C,8ECxGA,MAAMwB,EAAyB,GACzBC,EAAiC,GACjCC,EAAiC,EAuBhC,SAASC,EAAkBnK,GAMuB,IANnB,KACpCoK,EAAI,aACJC,EAAeL,EAAsB,oBACrCM,EAAsBL,EAA8B,oBACpDM,EAAsBL,EAA8B,kBACpDM,GAC0BxK,EAC1B,MAAO6I,EAAa4B,GAAWlK,EAAAA,SAAuB,GAChDmK,EAAYC,KAAKC,OAAMR,aAAI,EAAJA,EAAMtF,SAAU,GAAKuF,GAGlD9J,EAAAA,WAAgB,IAAMkK,EAAQ,IAAI,CAACL,IAEnC,MAAMS,EAAatK,EAAAA,SAAc,KAC/B,MAAMmI,EAAeoC,GAAiBA,EAAO,GAAK,GAAKA,EAAO,EAAIJ,EAC5DK,EAAgBD,IACpBL,EAAQK,GACJN,GACFjJ,OAAOyJ,SAAS,CAAEC,IAAK,GACzB,EAGF,IAAIC,EAAQP,KAAKQ,IAAI,EAAGtC,EAAc8B,KAAKS,MAAMd,EAAsB,IACvE,MAAMe,EAAMV,KAAKW,IAAIZ,EAAY,EAAGQ,EAAQZ,EAAsB,GAKlE,OAJIe,EAAMH,EAAQ,EAAIZ,IACpBY,EAAQP,KAAKQ,IAAI,EAAGE,EAAMf,EAAsB,IAG3C,CACL5B,cACAH,OAAQA,IAAMwC,GAAcQ,GAAaZ,KAAKQ,IAAII,EAAW,EAAG,KAChE9C,UAAWA,IAAMsC,GAAcQ,GAAaZ,KAAKW,IAAIC,EAAW,EAAGb,EAAY,KAC/E/B,SAAWmC,IACLpC,EAAYoC,IAAOC,EAAaD,EAAO,EAAE,EAE/ClC,aAAc4C,MAAMC,KAAK,CAAE3G,OAAQuG,EAAMH,EAAQ,IAAK,CAACQ,EAAG9B,IAAUsB,EAAQtB,EAAQ,IACrF,GACA,CAACc,EAAWJ,EAAqBzB,EAAa2B,IAE3CmB,EAAgBpL,EAAAA,SAAc,KAClC,MAAM2K,EAAQrC,EAAcwB,EACtBgB,EAAMH,EAAQb,EACpB,OAAOD,EAAKwB,MAAMV,EAAOG,EAAI,GAC5B,CAACjB,EAAMvB,EAAawB,IAEjBzB,EAAerI,EAAAA,SACnB,IACEsL,EAAkB,CAChBC,MAAOpB,EACP7B,YAAaA,EACb0B,yBAEJ,CAACG,EAAW7B,EAAa0B,IAG3B,MAAO,IACFM,EACHvC,UAAWO,EAAc,EACzBL,aAAcK,EAAc6B,EAAY,EACxC7B,YAAaA,EAAc,EAC3B6B,YACAiB,gBACA/C,eAEJ,CAEO,IAAKM,EAAS,SAATA,GAAS,OAATA,EAAS,UAATA,EAAS,YAATA,EAAS,YAATA,EAAS,wBAATA,CAAS,MAoBd,SAAS2C,EAAiBpE,GAQ9B,IAR+B,MAChCqE,EAAK,YACLjD,EAAW,oBACX0B,EAAsB,GAKvB9C,EACC,MAAMF,EAAuC,GACvCwE,EAvBD,SAA0BD,GAC/B,MAAMC,EAAOpB,KAAKC,KAAKkB,EAAQ,IAC/B,OAAIC,GAAQ,EACH,EACEA,GAAQ,GACV,GACEA,GAAQ,GACV,GAEA,GAEX,CAYeC,CAAiBF,GAE9B,IAAIP,EAAW,EACf,IAAK,IAAIU,EAAI,EAAGA,GAAKH,IAASG,EACxBA,IAAMpD,GACE,IAANoD,GAAWA,IAAMH,GAASnB,KAAKuB,IAAID,EAAIpD,IAAgB0B,GAAuB0B,EAAIF,GAAS,KACzFR,IAAaU,EAAI,GACnB1E,EAAM4E,KAAKjD,EAAUW,KAEvBtC,EAAM4E,KAAKF,GACXV,EAAWU,IAGb1E,EAAM4E,KAAKF,GACXV,EAAWU,GAIf,OAAO1E,CACT,C,+ECtIO,SAAS6E,EAAapM,GAA0D,IAAzD,SAAEC,EAAQ,UAAEkH,GAA2CnH,EACnF,OACEoC,EAAAA,EAAAA,KAAA,OAAK+E,UAAWmC,IAAW,wDAAyDnC,GAAWlH,UAC7FmC,EAAAA,EAAAA,KAACiK,EAAAA,GAAG,CAAC7E,KAAK,QAAQ8E,QAAQ,WAAUrM,SACjCA,KAIT,C,sGCJe,SAASsM,EAAMvM,GAKK,IALJ,SAC7BC,EAAQ,YACRuM,GAAc,EAAI,cAClBvF,EAAa,aACbC,GAC+BlH,EAM/B,OAJAO,EAAAA,WAAgB,KAAM,IAAAkM,EACW,QAA/BA,EAAAC,SAASC,eAAe,eAAO,IAAAF,GAA/BA,EAAiCG,MAAMC,eAAe,aAAa,GAClE,KAIDxK,EAAAA,EAAAA,MAAA,OAAK8E,UAAU,WAAUlH,SAAA,EACvBmC,EAAAA,EAAAA,KAAC2E,EAAAA,EAAO,CAACC,aAAa5E,EAAAA,EAAAA,KAAC0K,EAAAA,EAAU,IAAK7F,cAAeA,EAAeC,aAAcA,KAClF9E,EAAAA,EAAAA,KAAA,OACE+E,UAAWmC,IAAW,8BAA+B,CAAE,sCAAuCkD,IAAevM,SAE5GA,MAIT,C,+GC3BA,MAAM8M,EAAqD,CAACC,EAAAA,GAAYC,MAAOD,EAAAA,GAAYE,SAAUF,EAAAA,GAAYG,OAC3GC,EAAgB,CACpB,CAACJ,EAAAA,GAAYE,UAAWF,EAAAA,GAAYE,SACpC,CAACF,EAAAA,GAAYK,gBAAiBL,EAAAA,GAAYE,SAC1C,CAACF,EAAAA,GAAYM,iBAAkBN,EAAAA,GAAYE,SAC3C,CAACF,EAAAA,GAAYG,OAAQH,EAAAA,GAAYG,MACjC,CAACH,EAAAA,GAAYO,aAAcP,EAAAA,GAAYG,MACvC,CAACH,EAAAA,GAAYQ,cAAeR,EAAAA,GAAYG,OAEpCM,EAAsB,CAC1BT,EAAAA,GAAYE,SACZF,EAAAA,GAAYK,eACZL,EAAAA,GAAYM,gBACZN,EAAAA,GAAYG,MACZH,EAAAA,GAAYO,YACZP,EAAAA,GAAYQ,cAGP,SAASV,IACd,MAAMY,GAAuBC,EAAAA,EAAAA,KACvBC,EAAcF,EAAqBG,WAAWC,MAAwBd,EAAAA,GAAYC,MAClFc,EAAcH,IAAeZ,EAAAA,GAAYC,MACzCe,EAAYzN,EAAAA,SAChB,IACEwM,EAAUnM,KAAKkN,IAAI,CACjBpG,MAAOuG,EAAAA,GAAoBH,GAC3BnG,KAAM+F,EAAqBQ,sBAAsB,CAAEJ,SACnDlG,SAAUmG,EACND,IAASd,EAAAA,GAAYC,MACrBG,EAAcQ,KAA8CE,EAChEjG,gBAAgB,OAEpB,CAAC+F,EAAYF,EAAsBK,IAGrC,OACE1L,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAArC,SAAA,EACEmC,EAAAA,EAAAA,KAACkF,EAAAA,EAAW,CAACE,KAAK,SAASD,MAAOyG,KAChCD,GAAeN,EAAoBU,SAASP,IAC5CxL,EAAAA,EAAAA,KAACgM,EAAAA,GAAK,CAAC5G,KAAK,QAAQL,UAAU,OAAOgB,QAAM,EAAAlI,SAAC,SAG1C,OAGV,C,yHCxCO,SAASoO,EAAYrO,GAAqE,IAApE,OAAEwC,EAAM,KAAE8L,EAAI,QAAEC,EAAO,YAAEC,EAAW,UAAErH,KAAcvE,GAAc5C,EAC7F,MAAMyO,GAAeC,EAAAA,EAAAA,IAAgB,CAAEC,UAAW,iBAC5CC,GACJvM,EAAAA,EAAAA,MAACyF,EAAAA,GAAM,IACA0G,EAAc,CAAEzG,GAAI,IAAKJ,KAAM,iBAAiBnF,KAAa,CAAEiH,UAAU,GAC9EvJ,MAAOsO,EAAc,OAAS,cAC9BK,MAAM,OACNrH,KAAK,OACLL,UAAW2H,IAAU,0BAA2B3H,MAC5CvE,EAAK3C,SAAA,CAERuC,QAAAA,EAAU,IAAK,IACf+L,GAAW,CAACQ,EAAAA,GAAkBC,IAAKD,EAAAA,GAAkBE,MAAMd,SAASI,IACnEnM,EAAAA,EAAAA,KAACiK,EAAAA,GAAG,CAAC7E,KAAK,QAAOvH,SAAEiP,EAAAA,GAA0BX,KAC3C,QAIU,IAAA9G,EAAlB,OAAK+G,GAcHpM,EAAAA,EAAAA,KAACrB,EAAAA,EAAY,CAACC,MAAOwN,EAAanO,QAAS,GAAGJ,SAC3C2O,KAbDvM,EAAAA,EAAAA,MAAAC,EAAAA,SAAA,CAAArC,SAAA,EACEmC,EAAAA,EAAAA,KAAC+M,EAAAA,GAAc,CAACC,UAAW,EAAGjI,UAAU,SAASkI,MAAOZ,EAAaxO,SAClE2O,KAEHxM,EAAAA,EAAAA,KAACkN,EAAAA,GAAO,CAACD,MAAOZ,EAActH,UAAU,eAAclH,SACrC,QADqCwH,EACnD6G,QAAAA,EAAQ9L,SAAM,IAAAiF,EAAAA,EAAI,QAW7B,C,yDC9CO,SAAS8H,EAAkBC,GAChC,MAAMC,EAAOD,EAAOE,UAAU,EAAG,GAGjC,MAAO,CAAEC,QAFOH,EAAOE,UAAU,EAAG,GAElBD,OACpB,CAEO,SAASG,EAAyBC,GAA6B,IAAA7P,EAAA8P,EAAAC,EAAAC,EACpE,IAAKH,EAAO,MAAO,IACnB,OAAQA,EAAMI,cACZ,KAAKC,EAAAA,GAAaC,KAChB,OAA0C,QAA1CnQ,EAAuB,QAAvB8P,EAAOD,EAAMO,kBAAU,IAAAN,EAAAA,EAAID,EAAMQ,iBAAS,IAAArQ,EAAAA,EAAI,IAChD,KAAKkQ,EAAAA,GAAaI,QAChB,OAAsB,QAAtBP,EAAOF,EAAMQ,iBAAS,IAAAN,EAAAA,EAAI,IAC5B,KAAKG,EAAAA,GAAaK,aAChB,OAA6B,QAA7BP,EAAOH,EAAMW,wBAAgB,IAAAR,EAAAA,EAAI,IAEvC,C,6DCAe,SAASS,EAAWC,IACjC,OAAa,EAAG7L,WAChB,IAAI8L,GAAO,OAAOD,GAElB,OADc/F,KAAKS,MAAMuF,EAAKC,WAAa,GAAK,CAElD,C,mDCrBA,MAAMC,GAAuB,IAAAC,eAAc,MAErCC,EAAe,CACnBC,UAAU,EACVC,MAAO,MAET,MAAMnN,UAAsB,EAAAI,UAC1B,WAAAgN,CAAYtO,GACVuO,MAAMvO,GACNwO,KAAKC,mBAAqBD,KAAKC,mBAAmBC,KAAKF,MACvDA,KAAK/B,MAAQ0B,CACf,CACA,+BAAOQ,CAAyBN,GAC9B,MAAO,CACLD,UAAU,EACVC,QAEJ,CACA,kBAAAI,GACE,MAAM,MACJJ,GACEG,KAAK/B,MACT,GAAc,OAAV4B,EAAgB,CAElB,IADA,IAAIO,EAAqBC,EAChBC,EAAO7M,UAAUC,OAAQ6M,EAAO,IAAInG,MAAMkG,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQ/M,UAAU+M,GAEsC,QAA9DJ,GAAuBC,EAAcL,KAAKxO,OAAOiP,eAA6C,IAAxBL,GAA0CA,EAAoBM,KAAKL,EAAa,CACrJE,OACAI,OAAQ,mBAEVX,KAAKY,SAASjB,EAChB,CACF,CACA,iBAAAkB,CAAkBhB,EAAOiB,GACvB,IAAIC,EAAqBC,EACuC,QAA/DD,GAAuBC,EAAehB,KAAKxO,OAAOyP,eAA6C,IAAxBF,GAA0CA,EAAoBL,KAAKM,EAAcnB,EAAOiB,EAClK,CACA,kBAAAI,CAAmBC,EAAWC,GAC5B,MAAM,SACJxB,GACEI,KAAK/B,OACH,UACJoD,GACErB,KAAKxO,MAQP,IAAI8P,EAAsBC,EADxB3B,GAAgC,OAApBwB,EAAUvB,OA8C9B,WACE,IAAI2B,EAAI/N,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,GACxEgO,EAAIhO,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,GAC5E,OAAO+N,EAAE9N,SAAW+N,EAAE/N,QAAU8N,EAAEE,MAAK,CAACC,EAAMnJ,KAAWoJ,OAAOC,GAAGF,EAAMF,EAAEjJ,KAC7E,CAlDgDsJ,CAAgBX,EAAUE,UAAWA,KAEd,QAAhEC,GAAwBC,EAAevB,KAAKxO,OAAOiP,eAA8C,IAAzBa,GAA2CA,EAAqBZ,KAAKa,EAAc,CAC1JtJ,KAAMoJ,EACNtJ,KAAMoJ,EAAUE,UAChBV,OAAQ,SAEVX,KAAKY,SAASjB,GAElB,CACA,MAAAoC,GACE,MAAM,SACJlT,EAAQ,eACRmT,EAAc,kBACdrP,EAAiB,SACjBsP,GACEjC,KAAKxO,OACH,SACJoO,EAAQ,MACRC,GACEG,KAAK/B,MACT,IAAIiE,EAAgBrT,EACpB,GAAI+Q,EAAU,CACZ,MAAMpO,EAAQ,CACZqO,QACAI,mBAAoBD,KAAKC,oBAE3B,GAA8B,mBAAnB+B,EACTE,EAAgBF,EAAexQ,QAC1B,GAAImB,EACTuP,GAAgB,IAAAC,eAAcxP,EAAmBnB,OAC5C,IAAiB,OAAbyQ,KAAqB,IAAAG,gBAAeH,GAG7C,MAAMpC,EAFNqC,EAAgBD,CAGlB,CACF,CACA,OAAO,IAAAE,eAAc1C,EAAqB4C,SAAU,CAClD5R,MAAO,CACLmP,WACAC,QACAI,mBAAoBD,KAAKC,qBAE1BiC,EACL,E","sources":["webpack://@finviz/website/./js/app/shared/components/Boxover.tsx","webpack://@finviz/website/./js/app/shared/components/ChartBoxover.tsx","webpack://@finviz/website/./js/app/shared/components/HoverChart.tsx","webpack://@finviz/website/./js/app/shared/components/QueryClientContext.tsx","webpack://@finviz/website/./js/app/shared/hover-chart.ts","webpack://@finviz/website/./js/main/components/SubMenu/SubMenu.tsx","webpack://@finviz/website/./js/main/components/SubMenu/SubMenuTabs.tsx","webpack://@finviz/website/./js/main/components/pagination/pagination.tsx","webpack://@finviz/website/./js/main/hooks/use-table-pagination.ts","webpack://@finviz/website/./js/main/modules/insider-trading/components/CenteredAlert.tsx","webpack://@finviz/website/./js/main/modules/insider-trading/components/Layout.tsx","webpack://@finviz/website/./js/main/modules/insider-trading/components/Navigation.tsx","webpack://@finviz/website/./js/main/modules/insider-trading/components/TickerButton.tsx","webpack://@finviz/website/./js/main/modules/insider-trading/utils.ts","webpack://@finviz/website/../node_modules/date-fns/esm/getQuarter/index.js","webpack://@finviz/website/../node_modules/react-error-boundary/dist/react-error-boundary.esm.js"],"sourcesContent":["import * as React from 'react'\r\nimport * as ReactDOMServer from 'react-dom/server'\r\n\r\nconst BOXOVER_THEME = {\r\n default: { body: 'tooltip_bdy', header: 'tooltip_hdr' },\r\n chart: { body: 'hoverchart', header: 'tabchrthdr' },\r\n}\r\n\r\ninterface BoxoverProps {\r\n children: React.ReactNode\r\n\r\n /**\r\n * Which tooltip design to use\r\n *\r\n * @default default\r\n */\r\n theme?: keyof typeof BOXOVER_THEME\r\n\r\n /**\r\n * Tooltip header\r\n */\r\n header?: string\r\n\r\n /**\r\n * Tooltip body, can be any react node\r\n */\r\n body: React.ReactNode\r\n\r\n /**\r\n * Delay in ms to show the tooltip\r\n *\r\n * @default 300\r\n */\r\n delay?: number\r\n\r\n offsetX?: number\r\n offsetY?: number\r\n}\r\n\r\n/**\r\n * This component composes boxover and forwards `data-boxover` prop to children\r\n */\r\nexport function Boxover({\r\n children,\r\n theme = 'default',\r\n header,\r\n body,\r\n delay = 300,\r\n offsetX = 100,\r\n offsetY = 100,\r\n}: BoxoverProps) {\r\n const boxover = React.useMemo(\r\n () =>\r\n [\r\n `cssbody=[${BOXOVER_THEME[theme].body}]`,\r\n `cssheader=[${BOXOVER_THEME[theme].header}]`,\r\n header && `header=[${header}]`,\r\n `body=[${React.isValidElement(body) ? ReactDOMServer.renderToString(body) : body}]`,\r\n `delay=[${delay}]`,\r\n `offsetx=[${offsetX}]`,\r\n `offsety=[${offsetY}]`,\r\n ]\r\n .filter(Boolean)\r\n .join(' '),\r\n [theme, header, body, delay, offsetX, offsetY]\r\n )\r\n\r\n return React.Children.map(children, (child) =>\r\n React.isValidElement(child)\r\n ? React.cloneElement(child as React.ReactElement<{ 'data-boxover': string }>, {\r\n 'data-boxover': boxover,\r\n })\r\n : child\r\n ) as unknown as JSX.Element\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { shortFormatNumber } from '../../../main/util'\r\nimport { Boxover } from './Boxover'\r\nimport { HoverChart } from './HoverChart'\r\n\r\nexport type ChartBoxoverEntry = {\r\n isDelisted?: boolean\r\n country: string\r\n company: string\r\n ticker: string\r\n industry: string\r\n marketCap?: number | null\r\n aum?: number | null\r\n}\r\n\r\ninterface Props {\r\n entry: ChartBoxoverEntry\r\n rowIndex?: number\r\n children: React.ReactElement\r\n offsetX?: number\r\n offsetY?: number\r\n}\r\n\r\nconst MOUSE_LEAVE_DEBOUNCE_MS = 250\r\n\r\n/**\r\n * Renders basic chart boxover for the stock ticker\r\n */\r\nexport function ChartBoxover({ entry, rowIndex = 0, children, offsetX, offsetY }: Props) {\r\n const [isMouseOver, setIsMouseOver] = React.useState(false)\r\n const mouseLeaveTimeoutRef = React.useRef(null)\r\n const clearMouseLeaveTimoutRef = React.useRef(() => {\r\n if (mouseLeaveTimeoutRef.current) {\r\n window.clearTimeout(mouseLeaveTimeoutRef.current)\r\n mouseLeaveTimeoutRef.current = null\r\n }\r\n })\r\n const mouseEventsRef = React.useRef({\r\n onMouseEnter: () => {\r\n clearMouseLeaveTimoutRef.current()\r\n setIsMouseOver(true)\r\n },\r\n onMouseLeave: () => {\r\n mouseLeaveTimeoutRef.current = window.setTimeout(() => {\r\n setIsMouseOver(false)\r\n }, MOUSE_LEAVE_DEBOUNCE_MS)\r\n },\r\n })\r\n\r\n const value = React.useMemo(() => {\r\n if (Number.isFinite(entry.aum)) {\r\n return 'AUM: ' + shortFormatNumber(entry.aum! * 1_000_000)\r\n }\r\n return shortFormatNumber(entry.marketCap ? entry.marketCap * 1_000_000 : null)\r\n }, [entry.marketCap, entry.aum])\r\n\r\n React.useEffect(\r\n () => () => {\r\n clearMouseLeaveTimoutRef.current()\r\n },\r\n []\r\n )\r\n\r\n const child = React.cloneElement(children, mouseEventsRef.current)\r\n\r\n if (!isMouseOver || entry.isDelisted) {\r\n return child\r\n }\r\n\r\n return (\r\n \r\n \r\n
\r\n {entry.company}\r\n {entry.industry} {entry.country} {value}\r\n
\r\n \r\n }\r\n delay={0}\r\n offsetX={offsetX ?? 50}\r\n offsetY={offsetY ?? (rowIndex < 10 ? 0 : -260)}\r\n >\r\n {child}\r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport * as utils from '../hover-chart'\r\n\r\nexport interface ImageProps\r\n extends React.DetailedHTMLProps, HTMLImageElement> {\r\n ticker: string\r\n}\r\n\r\nexport function HoverChart({ ticker, ...props }: ImageProps) {\r\n const referrerPolicy = utils.getReferrerPolicy()\r\n const dimensions = utils.getHoverChartDimensions()\r\n const url = utils.getHoverChartUrl(ticker, true)\r\n const srcSet = utils.getSrcSet(url)\r\n\r\n return \r\n}\r\n","import { DefaultOptions, MutationCache, QueryCache, QueryClient, QueryClientProvider } from '@tanstack/react-query'\r\nimport * as React from 'react'\r\nimport { ErrorBoundary } from 'react-error-boundary'\r\n\r\nimport { DefaultErrorBoundary } from '../../../main/components/error-view'\r\n\r\ninterface QueryClientConfig {\r\n queryCache?: QueryCache\r\n mutationCache?: MutationCache\r\n defaultOptions?: DefaultOptions\r\n}\r\n\r\ninterface QueryContextProps {\r\n queryOptions?: QueryClientConfig\r\n}\r\n\r\nexport function getQueryClient(queryOptions?: QueryClientConfig) {\r\n return new QueryClient({\r\n defaultOptions: {\r\n queries: {\r\n useErrorBoundary: true,\r\n refetchOnWindowFocus: false,\r\n ...queryOptions?.defaultOptions?.queries,\r\n },\r\n ...queryOptions?.defaultOptions,\r\n },\r\n ...queryOptions,\r\n })\r\n}\r\n\r\nexport function QueryClientContext({ children, queryOptions }: React.PropsWithChildren) {\r\n const client = React.useRef(getQueryClient(queryOptions))\r\n\r\n return (\r\n \r\n {children}\r\n \r\n )\r\n}\r\n\r\nexport function withQueryClientContext(\r\n Component: React.ComponentType,\r\n config?: QueryClientConfig\r\n): React.ComponentType {\r\n const hocComponent = (props: Props) => (\r\n \r\n \r\n \r\n )\r\n\r\n hocComponent.displayName = `withQueryClientContext(${Component.displayName ?? 'Component'})`\r\n\r\n return hocComponent\r\n}\r\n","import { HTMLAttributeReferrerPolicy } from 'react'\r\n\r\nimport { encodeQueryString } from '../queryString'\r\n\r\nconst DEFAULT_OVERLAYS =\r\n '&o[0][ot]=sma&o[0][op]=50&o[0][oc]=FF8F33C6&o[1][ot]=sma&o[1][op]=200&o[1][oc]=DCB3326D&o[2][ot]=patterns&o[2][op]=&o[2][oc]=000'\r\n\r\nexport function getHoverChartUrl(\r\n ticker: string,\r\n escaped: boolean = false,\r\n timeframe = FinvizSettings.hoverCharts?.stock?.timeframe,\r\n dateRange = FinvizSettings.hoverCharts?.stock?.dateRange\r\n): string {\r\n const theme = FinvizSettings.hasDarkTheme ? 'd' : undefined\r\n const overlays = FinvizSettings.hasUserPremium && FinvizSettings.hoverCharts?.stock?.patterns ? DEFAULT_OVERLAYS : ''\r\n const query = encodeQueryString({\r\n cs: 'm',\r\n t: ticker,\r\n tf: timeframe ?? 'd',\r\n ct: 'candle_stick',\r\n r: dateRange,\r\n tm: theme,\r\n })\r\n\r\n let imgUrl = `${FinvizSettings.nodeChartsDomain}/chart.ashx?${query}${overlays}`\r\n\r\n if (escaped) {\r\n // \"Escaping\" [ and ] because of how boxover.js works\r\n imgUrl = imgUrl.replace(/\\[/g, '[[').replace(/]/g, ']]')\r\n }\r\n return imgUrl\r\n}\r\n\r\nexport function getHoverChartDimensions() {\r\n switch (FinvizSettings.hoverCharts?.stock?.timeframe) {\r\n case 'i3':\r\n case 'i15':\r\n return { width: 584, height: 180 }\r\n case 'i5':\r\n return { width: 376, height: 180 }\r\n case 'd':\r\n if (FinvizSettings.hoverCharts?.stock?.patterns) return { width: 464, height: 230 }\r\n return { width: 324, height: 180 }\r\n default:\r\n return { width: 324, height: 180 }\r\n }\r\n}\r\n\r\nexport function getReferrerPolicy(): HTMLAttributeReferrerPolicy {\r\n return 'no-referrer-when-downgrade'\r\n}\r\n\r\nexport function getHoverChartImg(\r\n ticker: string,\r\n escaped: boolean = false,\r\n timeframe = FinvizSettings.hoverCharts?.stock?.timeframe,\r\n dateRange?: string\r\n) {\r\n const chartSize = getHoverChartDimensions()\r\n const referrerPolicy = getReferrerPolicy()\r\n const url = getHoverChartUrl(ticker, escaped, timeframe, dateRange)\r\n const srcSet = getSrcSet(url)\r\n const srcsetString = srcSet?.length ? ` srcset='${srcSet}'` : ''\r\n\r\n return {\r\n img: ``,\r\n ...chartSize,\r\n }\r\n}\r\n\r\nexport function getSrcSet(url: string) {\r\n // You must keep a space after , for refresh to work\r\n return `${url} 1x, ${url}&sf=2 2x`\r\n}\r\n","import classNames from 'classnames'\r\nimport { isRedesignEnabled } from 'finviz-charts/app/utils'\r\nimport * as React from 'react'\r\n\r\ninterface Props extends React.HTMLProps {\r\n leftContent?: React.ReactNode\r\n middleContent?: React.ReactNode\r\n rightContent?: React.ReactNode\r\n}\r\n\r\nexport function SubMenu({ leftContent, middleContent, rightContent, ...props }: Props) {\r\n return (\r\n
\r\n
\r\n \r\n {leftContent}\r\n
\r\n {middleContent &&
{middleContent}
}\r\n
{rightContent}
\r\n
\r\n \r\n )\r\n}\r\n","import { Link } from 'react-router-dom'\r\n\r\nimport { Button, ButtonSizeType } from '../button'\r\n\r\ninterface Props {\r\n items: Array<{ label: string; href: string; isActive: boolean; reloadDocument?: boolean }>\r\n size?: ButtonSizeType\r\n}\r\n\r\nexport function SubMenuTabs({ items, size = 'medium' }: Props) {\r\n return (\r\n
\r\n {items.map(({ label, href, isActive, reloadDocument }) => (\r\n \r\n {label}\r\n \r\n ))}\r\n
\r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport React from 'react'\r\n\r\nimport { PageItems, TablePaginationProps } from '../../hooks/use-table-pagination'\r\nimport { Button, ButtonComponentProps } from '../button'\r\nimport { LabelWithDelayedSpinner } from '../label-with-delayed-spinner'\r\n\r\nconst TEXT_LINK_CLASSES = 'text-link dark:text-link hover:text-link dark:hover:text-white'\r\n\r\ninterface PaginationProps\r\n extends Omit, 'paginatedData' | 'pageCount'>,\r\n ButtonComponentProps {\r\n isLoading?: boolean\r\n getPageItemButtonProps?: (page: number, pageItem: PageItems) => ButtonComponentProps\r\n className?: string\r\n}\r\n\r\nexport function Pagination({\r\n canGoBack,\r\n goBack,\r\n canGoForward,\r\n goForward,\r\n canGoToPage,\r\n goToPage,\r\n visiblePages,\r\n currentPage,\r\n isLoading = false,\r\n getPageItemButtonProps,\r\n className,\r\n ...buttonProps\r\n}: PaginationProps) {\r\n const prevButtonProps = getPageItemButtonProps?.(currentPage - 1, PageItems.prev) as ButtonComponentProps\r\n const nextButtonProps = getPageItemButtonProps?.(currentPage + 1, PageItems.next) as ButtonComponentProps\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n {visiblePages.map((pageNumber, index) => {\r\n if (pageNumber === PageItems.gap) {\r\n return (\r\n \r\n ⋯\r\n \r\n )\r\n }\r\n\r\n const pageNumberButtonProps = getPageItemButtonProps?.(\r\n pageNumber,\r\n PageItems.pageNumber\r\n ) as ButtonComponentProps\r\n const isActive = currentPage === pageNumber\r\n\r\n return (\r\n goToPage(pageNumber) : undefined}\r\n active={isActive}\r\n theme=\"chipTransparent\"\r\n size=\"small\"\r\n {...buttonProps}\r\n {...pageNumberButtonProps}\r\n className={classnames(pageNumberButtonProps?.className, 'relative', {\r\n [TEXT_LINK_CLASSES]: !isActive,\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","import React from 'react'\r\n\r\nconst DEFAULT_ITEMS_PER_PAGE = 30\r\nconst DEFAULT_NUMBER_OF_PAGE_BUTTONS = 10\r\nconst DEFAULT_MAX_SIDE_PREVIEW_PAGES = 3\r\n\r\nexport interface TablePaginationProps {\r\n canGoBack: boolean\r\n goBack?: () => void\r\n canGoForward: boolean\r\n goForward?: () => void\r\n goToPage?: (page: number) => void\r\n canGoToPage: (page: number) => boolean\r\n currentPage: number\r\n pageCount: number\r\n visiblePages: (number | PageItems.gap)[]\r\n paginatedData: T\r\n}\r\n\r\ninterface TablePaginationOptions {\r\n data: T[]\r\n itemsPerPage?: number\r\n numberOfPageButtons?: number\r\n maxSidePreviewPages?: number\r\n shouldResetScroll?: boolean\r\n}\r\n\r\nexport function useTablePagination({\r\n data,\r\n itemsPerPage = DEFAULT_ITEMS_PER_PAGE,\r\n numberOfPageButtons = DEFAULT_NUMBER_OF_PAGE_BUTTONS,\r\n maxSidePreviewPages = DEFAULT_MAX_SIDE_PREVIEW_PAGES,\r\n shouldResetScroll,\r\n}: TablePaginationOptions): TablePaginationProps {\r\n const [currentPage, setPage] = React.useState(0)\r\n const pageCount = Math.ceil((data?.length || 0) / itemsPerPage)\r\n\r\n // Reset currentPage to 0 when data changes\r\n React.useEffect(() => setPage(0), [data])\r\n\r\n const pagination = React.useMemo(() => {\r\n const canGoToPage = (page: number) => page - 1 >= 0 && page - 1 < pageCount\r\n const setPageState = (page: React.SetStateAction) => {\r\n setPage(page)\r\n if (shouldResetScroll) {\r\n window.scrollTo({ top: 0 })\r\n }\r\n }\r\n\r\n let start = Math.max(0, currentPage - Math.floor(numberOfPageButtons / 2))\r\n const end = Math.min(pageCount - 1, start + numberOfPageButtons - 1)\r\n if (end - start + 1 < numberOfPageButtons) {\r\n start = Math.max(0, end - numberOfPageButtons + 1)\r\n }\r\n\r\n return {\r\n canGoToPage,\r\n goBack: () => setPageState((prevPage) => Math.max(prevPage - 1, 0)),\r\n goForward: () => setPageState((prevPage) => Math.min(prevPage + 1, pageCount - 1)),\r\n goToPage: (page: number) => {\r\n if (canGoToPage(page)) setPageState(page - 1)\r\n },\r\n visiblePages: Array.from({ length: end - start + 1 }, (_, index) => start + index + 1),\r\n }\r\n }, [pageCount, numberOfPageButtons, currentPage, shouldResetScroll])\r\n\r\n const paginatedData = React.useMemo(() => {\r\n const start = currentPage * itemsPerPage\r\n const end = start + itemsPerPage\r\n return data.slice(start, end)\r\n }, [data, currentPage, itemsPerPage])\r\n\r\n const visiblePages = React.useMemo(\r\n () =>\r\n getStepPagination({\r\n pages: pageCount,\r\n currentPage: currentPage,\r\n maxSidePreviewPages,\r\n }),\r\n [pageCount, currentPage, maxSidePreviewPages]\r\n )\r\n\r\n return {\r\n ...pagination,\r\n canGoBack: currentPage > 0,\r\n canGoForward: currentPage < pageCount - 1,\r\n currentPage: currentPage + 1,\r\n pageCount,\r\n paginatedData,\r\n visiblePages,\r\n }\r\n}\r\n\r\nexport enum PageItems {\r\n gap = 'gap',\r\n prev = 'prev',\r\n next = 'next',\r\n pageNumber = 'pageNumber',\r\n}\r\n\r\nexport function getNumberOfSteps(pages: number) {\r\n const step = Math.ceil(pages / 10)\r\n if (step <= 1) {\r\n return 1\r\n } else if (step <= 10) {\r\n return 10\r\n } else if (step <= 50) {\r\n return 50\r\n } else {\r\n return 100\r\n }\r\n}\r\n\r\nexport function getStepPagination({\r\n pages,\r\n currentPage,\r\n maxSidePreviewPages = 5,\r\n}: {\r\n pages: number\r\n currentPage: number\r\n maxSidePreviewPages?: number\r\n}) {\r\n const items: Array = []\r\n const step = getNumberOfSteps(pages)\r\n\r\n let prevPage = 0\r\n for (let p = 1; p <= pages; ++p) {\r\n if (p !== currentPage) {\r\n if (p === 1 || p === pages || Math.abs(p - currentPage) <= maxSidePreviewPages || p % step === 0) {\r\n if (prevPage !== p - 1) {\r\n items.push(PageItems.gap)\r\n }\r\n items.push(p)\r\n prevPage = p\r\n }\r\n } else {\r\n items.push(p)\r\n prevPage = p\r\n }\r\n }\r\n\r\n return items\r\n}\r\n","import classnames from 'classnames'\r\n\r\nimport { Tag } from '../../../components'\r\n\r\ninterface Props {\r\n className?: string\r\n}\r\n\r\nexport function CenteredAlert({ children, className }: React.PropsWithChildren) {\r\n return (\r\n
\r\n \r\n {children}\r\n \r\n
\r\n )\r\n}\r\n","import classnames from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { SubMenu } from '../../../components/SubMenu/SubMenu'\r\nimport { Navigation } from './Navigation'\r\n\r\nexport interface Props {\r\n isContainer?: boolean\r\n rightContent?: React.ReactNode\r\n middleContent?: React.ReactNode\r\n}\r\n\r\nexport default function Layout({\r\n children,\r\n isContainer = true,\r\n middleContent,\r\n rightContent,\r\n}: React.PropsWithChildren) {\r\n // Remove min-height from react root element which is set on BE because of CLS\r\n React.useEffect(() => {\r\n document.getElementById('root')?.style.removeProperty('min-height')\r\n }, [])\r\n\r\n return (\r\n // Screen loader has min-h-64 (Website/js/main/components/loading.tsx)\r\n
\r\n } middleContent={middleContent} rightContent={rightContent} />\r\n \r\n {children}\r\n
\r\n \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nimport { Badge } from '../../../components'\r\nimport { SubMenuTabs } from '../../../components/SubMenu/SubMenuTabs'\r\nimport { INSIDER_VIEW_LABELS, InsiderView } from '../constants'\r\nimport { useInsiderTradingRouter } from '../hooks/useInsiderTradingRouter'\r\n\r\nconst MENU_TABS: Array = [InsiderView.Index, InsiderView.Managers, InsiderView.Funds]\r\nconst MENU_TABS_MAP = {\r\n [InsiderView.Managers]: InsiderView.Managers,\r\n [InsiderView.ManagerDetails]: InsiderView.Managers,\r\n [InsiderView.ManagerHoldings]: InsiderView.Managers,\r\n [InsiderView.Funds]: InsiderView.Funds,\r\n [InsiderView.FundDetails]: InsiderView.Funds,\r\n [InsiderView.FundHoldings]: InsiderView.Funds,\r\n}\r\nconst MANAGER_FUNDS_VIEWS = [\r\n InsiderView.Managers,\r\n InsiderView.ManagerDetails,\r\n InsiderView.ManagerHoldings,\r\n InsiderView.Funds,\r\n InsiderView.FundDetails,\r\n InsiderView.FundHoldings,\r\n]\r\n\r\nexport function Navigation() {\r\n const insiderTradingRouter = useInsiderTradingRouter()\r\n const activeView = (insiderTradingRouter.viewParams.view as InsiderView) || InsiderView.Index\r\n const isIndexPage = activeView === InsiderView.Index\r\n const menuItems = React.useMemo(\r\n () =>\r\n MENU_TABS.map((view) => ({\r\n label: INSIDER_VIEW_LABELS[view],\r\n href: insiderTradingRouter.getInsiderTradingLink({ view }),\r\n isActive: isIndexPage\r\n ? view === InsiderView.Index\r\n : MENU_TABS_MAP[activeView as keyof typeof MENU_TABS_MAP] === view,\r\n reloadDocument: true,\r\n })),\r\n [activeView, insiderTradingRouter, isIndexPage]\r\n )\r\n\r\n return (\r\n <>\r\n \r\n {!isIndexPage && MANAGER_FUNDS_VIEWS.includes(activeView) ? (\r\n \r\n Beta\r\n \r\n ) : null}\r\n \r\n )\r\n}\r\n","import classname from 'classnames'\r\nimport * as React from 'react'\r\n\r\nimport { ChartBoxover } from '../../../../app/shared/components/ChartBoxover'\r\nimport { Button, ButtonComponentProps, Tag, Tooltip, TooltipTrigger, useTooltipState } from '../../../components'\r\nimport { HoldingOptionType, HoldingOptionTypeLabelMap, TopInvestmentType } from '../constants'\r\n\r\ninterface Props extends Pick, ButtonComponentProps {\r\n className?: string\r\n putCall?: HoldingOptionType\r\n}\r\n\r\nexport function TickerButton({ ticker, name, putCall, boxoverData, className, ...props }: Props) {\r\n const tooltipState = useTooltipState({ placement: 'bottom-start' })\r\n const button = (\r\n \r\n {ticker ?? '-'}{' '}\r\n {putCall && [HoldingOptionType.Put, HoldingOptionType.Call].includes(putCall) ? (\r\n {HoldingOptionTypeLabelMap[putCall]}\r\n ) : null}\r\n \r\n )\r\n\r\n if (!boxoverData) {\r\n return (\r\n <>\r\n \r\n {button}\r\n \r\n \r\n {name ?? ticker ?? '-'}\r\n \r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n {button}\r\n \r\n )\r\n}\r\n","import { InstOwnFiler, InvestorType } from './constants'\r\n\r\nexport function getQuarterAndYear(period: string) {\r\n const year = period.substring(0, 4)\r\n const quarter = period.substring(4, 6)\r\n\r\n return { quarter, year }\r\n}\r\n\r\nexport function getInvestorNameFromFiler(filer?: InstOwnFiler | null) {\r\n if (!filer) return '-'\r\n switch (filer.investorType) {\r\n case InvestorType.Fund:\r\n return filer.seriesName ?? filer.filerName ?? '-'\r\n case InvestorType.Manager:\r\n return filer.filerName ?? '-'\r\n case InvestorType.OtherManager:\r\n return filer.otherManagerName ?? '-'\r\n }\r\n}\r\n","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the quarter\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2))\n * //=> 3\n */\nexport default function getQuarter(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var quarter = Math.floor(date.getMonth() / 3) + 1;\n return quarter;\n}","'use client';\nimport { createContext, Component, createElement, isValidElement, useContext, useState, useMemo, forwardRef } from 'react';\n\nconst ErrorBoundaryContext = createContext(null);\n\nconst initialState = {\n didCatch: false,\n error: null\n};\nclass ErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.resetErrorBoundary = this.resetErrorBoundary.bind(this);\n this.state = initialState;\n }\n static getDerivedStateFromError(error) {\n return {\n didCatch: true,\n error\n };\n }\n resetErrorBoundary() {\n const {\n error\n } = this.state;\n if (error !== null) {\n var _this$props$onReset, _this$props;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n (_this$props$onReset = (_this$props = this.props).onReset) === null || _this$props$onReset === void 0 ? void 0 : _this$props$onReset.call(_this$props, {\n args,\n reason: \"imperative-api\"\n });\n this.setState(initialState);\n }\n }\n componentDidCatch(error, info) {\n var _this$props$onError, _this$props2;\n (_this$props$onError = (_this$props2 = this.props).onError) === null || _this$props$onError === void 0 ? void 0 : _this$props$onError.call(_this$props2, error, info);\n }\n componentDidUpdate(prevProps, prevState) {\n const {\n didCatch\n } = this.state;\n const {\n resetKeys\n } = this.props;\n\n // There's an edge case where if the thing that triggered the error happens to *also* be in the resetKeys array,\n // we'd end up resetting the error boundary immediately.\n // This would likely trigger a second error to be thrown.\n // So we make sure that we don't check the resetKeys on the first call of cDU after the error is set.\n\n if (didCatch && prevState.error !== null && hasArrayChanged(prevProps.resetKeys, resetKeys)) {\n var _this$props$onReset2, _this$props3;\n (_this$props$onReset2 = (_this$props3 = this.props).onReset) === null || _this$props$onReset2 === void 0 ? void 0 : _this$props$onReset2.call(_this$props3, {\n next: resetKeys,\n prev: prevProps.resetKeys,\n reason: \"keys\"\n });\n this.setState(initialState);\n }\n }\n render() {\n const {\n children,\n fallbackRender,\n FallbackComponent,\n fallback\n } = this.props;\n const {\n didCatch,\n error\n } = this.state;\n let childToRender = children;\n if (didCatch) {\n const props = {\n error,\n resetErrorBoundary: this.resetErrorBoundary\n };\n if (typeof fallbackRender === \"function\") {\n childToRender = fallbackRender(props);\n } else if (FallbackComponent) {\n childToRender = createElement(FallbackComponent, props);\n } else if (fallback === null || isValidElement(fallback)) {\n childToRender = fallback;\n } else {\n throw error;\n }\n }\n return createElement(ErrorBoundaryContext.Provider, {\n value: {\n didCatch,\n error,\n resetErrorBoundary: this.resetErrorBoundary\n }\n }, childToRender);\n }\n}\nfunction hasArrayChanged() {\n let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return a.length !== b.length || a.some((item, index) => !Object.is(item, b[index]));\n}\n\nfunction assertErrorBoundaryContext(value) {\n if (value == null || typeof value.didCatch !== \"boolean\" || typeof value.resetErrorBoundary !== \"function\") {\n throw new Error(\"ErrorBoundaryContext not found\");\n }\n}\n\nfunction useErrorBoundary() {\n const context = useContext(ErrorBoundaryContext);\n assertErrorBoundaryContext(context);\n const [state, setState] = useState({\n error: null,\n hasError: false\n });\n const memoized = useMemo(() => ({\n resetBoundary: () => {\n context.resetErrorBoundary();\n setState({\n error: null,\n hasError: false\n });\n },\n showBoundary: error => setState({\n error,\n hasError: true\n })\n }), [context.resetErrorBoundary]);\n if (state.hasError) {\n throw state.error;\n }\n return memoized;\n}\n\nfunction withErrorBoundary(component, errorBoundaryProps) {\n const Wrapped = forwardRef((props, ref) => createElement(ErrorBoundary, errorBoundaryProps, createElement(component, {\n ...props,\n ref\n })));\n\n // Format for display in DevTools\n const name = component.displayName || component.name || \"Unknown\";\n Wrapped.displayName = \"withErrorBoundary(\".concat(name, \")\");\n return Wrapped;\n}\n\nexport { ErrorBoundary, ErrorBoundaryContext, useErrorBoundary, withErrorBoundary };\n"],"names":["BOXOVER_THEME","default","body","header","chart","Boxover","_ref","children","theme","delay","offsetX","offsetY","boxover","React","ReactDOMServer","filter","Boolean","join","map","child","MOUSE_LEAVE_DEBOUNCE_MS","ChartBoxover","entry","rowIndex","isMouseOver","setIsMouseOver","mouseLeaveTimeoutRef","clearMouseLeaveTimoutRef","current","window","clearTimeout","mouseEventsRef","onMouseEnter","onMouseLeave","setTimeout","value","Number","isFinite","aum","shortFormatNumber","marketCap","isDelisted","_jsx","_jsxs","_Fragment","HoverChart","ticker","company","industry","country","props","referrerPolicy","utils","dimensions","url","srcSet","src","getQueryClient","queryOptions","_queryOptions$default","QueryClient","defaultOptions","queries","useErrorBoundary","refetchOnWindowFocus","QueryClientContext","client","QueryClientProvider","ErrorBoundary","FallbackComponent","DefaultErrorBoundary","withQueryClientContext","Component","config","_Component$displayNam","hocComponent","displayName","DEFAULT_OVERLAYS","getHoverChartUrl","_FinvizSettings$hover","_FinvizSettings$hover2","_FinvizSettings$hover3","escaped","arguments","length","undefined","timeframe","FinvizSettings","hoverCharts","stock","dateRange","hasDarkTheme","overlays","hasUserPremium","patterns","query","encodeQueryString","cs","t","tf","ct","r","tm","imgUrl","nodeChartsDomain","replace","getHoverChartDimensions","_FinvizSettings$hover4","_FinvizSettings$hover5","width","height","getReferrerPolicy","getHoverChartImg","_FinvizSettings$hover6","chartSize","getSrcSet","img","SubMenu","leftContent","middleContent","rightContent","className","classNames","isRedesignEnabled","SubMenuTabs","items","size","_ref2","label","href","isActive","reloadDocument","Button","as","Link","to","rounding","active","TEXT_LINK_CLASSES","Pagination","canGoBack","goBack","canGoForward","goForward","canGoToPage","goToPage","visiblePages","currentPage","isLoading","getPageItemButtonProps","buttonProps","prevButtonProps","PageItems","prev","nextButtonProps","next","classnames","title","onClick","disabled","padding","pageNumber","index","gap","pageNumberButtonProps","LabelWithDelayedSpinner","DEFAULT_ITEMS_PER_PAGE","DEFAULT_NUMBER_OF_PAGE_BUTTONS","DEFAULT_MAX_SIDE_PREVIEW_PAGES","useTablePagination","data","itemsPerPage","numberOfPageButtons","maxSidePreviewPages","shouldResetScroll","setPage","pageCount","Math","ceil","pagination","page","setPageState","scrollTo","top","start","max","floor","end","min","prevPage","Array","from","_","paginatedData","slice","getStepPagination","pages","step","getNumberOfSteps","p","abs","push","CenteredAlert","Tag","variant","Layout","isContainer","_document$getElementB","document","getElementById","style","removeProperty","Navigation","MENU_TABS","InsiderView","Index","Managers","Funds","MENU_TABS_MAP","ManagerDetails","ManagerHoldings","FundDetails","FundHoldings","MANAGER_FUNDS_VIEWS","insiderTradingRouter","useInsiderTradingRouter","activeView","viewParams","view","isIndexPage","menuItems","INSIDER_VIEW_LABELS","getInsiderTradingLink","includes","Badge","TickerButton","name","putCall","boxoverData","tooltipState","useTooltipState","placement","button","align","classname","HoldingOptionType","Put","Call","HoldingOptionTypeLabelMap","TooltipTrigger","tabIndex","state","Tooltip","getQuarterAndYear","period","year","substring","quarter","getInvestorNameFromFiler","filer","_filer$seriesName","_filer$filerName","_filer$otherManagerNa","investorType","InvestorType","Fund","seriesName","filerName","Manager","OtherManager","otherManagerName","getQuarter","dirtyDate","date","getMonth","ErrorBoundaryContext","createContext","initialState","didCatch","error","constructor","super","this","resetErrorBoundary","bind","getDerivedStateFromError","_this$props$onReset","_this$props","_len","args","_key","onReset","call","reason","setState","componentDidCatch","info","_this$props$onError","_this$props2","onError","componentDidUpdate","prevProps","prevState","resetKeys","_this$props$onReset2","_this$props3","a","b","some","item","Object","is","hasArrayChanged","render","fallbackRender","fallback","childToRender","createElement","isValidElement","Provider"],"sourceRoot":""}