@ytsaurus/ui 1.72.0 → 1.73.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/public/build/assets-manifest.json +26 -26
- package/dist/public/build/css/yt-monaco-editor.43c1d967.chunk.css +2 -0
- package/dist/public/build/css/yt-monaco-editor.43c1d967.chunk.css.map +1 -0
- package/dist/public/build/js/3302.dff164d9.chunk.js +3 -0
- package/dist/public/build/js/3302.dff164d9.chunk.js.map +1 -0
- package/dist/public/build/js/{chyt.eff6e270.chunk.js → chyt.8c82dc61.chunk.js} +2 -2
- package/dist/public/build/js/{chyt.eff6e270.chunk.js.map → chyt.8c82dc61.chunk.js.map} +1 -1
- package/dist/public/build/js/{cluster-page-wrapper.434bb4ef.chunk.js → cluster-page-wrapper.7c7301b9.chunk.js} +2 -2
- package/dist/public/build/js/{cluster-page-wrapper.434bb4ef.chunk.js.map → cluster-page-wrapper.7c7301b9.chunk.js.map} +1 -1
- package/dist/public/build/js/{components.233a938d.chunk.js → components.a4b032ee.chunk.js} +2 -2
- package/dist/public/build/js/components.a4b032ee.chunk.js.map +1 -0
- package/dist/public/build/js/main.afa006d1.js +3 -0
- package/dist/public/build/js/main.afa006d1.js.map +1 -0
- package/dist/public/build/js/{navigation.f5cf971c.chunk.js → navigation.0adc0583.chunk.js} +2 -2
- package/dist/public/build/js/{navigation.f5cf971c.chunk.js.map → navigation.0adc0583.chunk.js.map} +1 -1
- package/dist/public/build/js/{query-tracker.64472502.chunk.js → query-tracker.5f5e3683.chunk.js} +2 -2
- package/dist/public/build/js/{query-tracker.64472502.chunk.js.map → query-tracker.5f5e3683.chunk.js.map} +1 -1
- package/dist/public/build/js/{query-widget.2271e15c.chunk.js → query-widget.4bd0f75f.chunk.js} +2 -2
- package/dist/public/build/js/{query-widget.2271e15c.chunk.js.map → query-widget.4bd0f75f.chunk.js.map} +1 -1
- package/dist/public/build/js/{runtime.c88113bf.js → runtime.30501cea.js} +2 -2
- package/dist/public/build/js/{runtime.c88113bf.js.map → runtime.30501cea.js.map} +1 -1
- package/dist/public/build/js/yt-monaco-editor.00e55e53.chunk.js +2 -0
- package/dist/public/build/js/yt-monaco-editor.00e55e53.chunk.js.map +1 -0
- package/dist/public/build/manifest.json +22 -22
- package/package.json +2 -2
- package/dist/public/build/css/yt-monaco-editor.e7c3868b.chunk.css +0 -2
- package/dist/public/build/css/yt-monaco-editor.e7c3868b.chunk.css.map +0 -1
- package/dist/public/build/js/3337.31ee332d.chunk.js +0 -3
- package/dist/public/build/js/3337.31ee332d.chunk.js.map +0 -1
- package/dist/public/build/js/components.233a938d.chunk.js.map +0 -1
- package/dist/public/build/js/main.c46b0cfa.js +0 -3
- package/dist/public/build/js/main.c46b0cfa.js.map +0 -1
- package/dist/public/build/js/yt-monaco-editor.59382231.chunk.js +0 -2
- package/dist/public/build/js/yt-monaco-editor.59382231.chunk.js.map +0 -1
- /package/dist/public/build/js/{3337.31ee332d.chunk.js.LICENSE.txt → 3302.dff164d9.chunk.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{main.c46b0cfa.js.LICENSE.txt → main.afa006d1.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"js/components.233a938d.chunk.js","mappings":"4cAqBMA,GAAIC,EAAAA,EAAAA,GAAG,mBAEN,SAASC,EAAcC,GAC1B,OAAOC,IAAKD,GAAO,SAACE,GAChB,OAAAC,EAAAA,EAAAA,GAAA,GAAWD,EACf,GACJ,CAEA,IAAME,GAAaC,EAAAA,EAAAA,KAAe,kBAC9BC,EAAAA,EAAAA,KAAA,OAAKC,UAAWV,EAAE,eAAeW,UAC7BF,EAAAA,EAAAA,KAACG,EAAAA,EAAI,CAACC,KAAK,QAAQC,QAAQ,UACzB,IAGJC,GAAeC,EAAAA,EAAAA,KACjB,SAAAC,GAQO,IAPHZ,EAAIY,EAAJZ,KACAa,EAAUD,EAAVC,WACAC,EAAYF,EAAZE,aACAC,EAAUH,EAAVG,WACAC,EAAYJ,EAAZI,aACAC,EAAgBL,EAAhBK,iBACAC,EAAoBN,EAApBM,qBAEMC,GAAUJ,IAAef,EAAKoB,SAC9Bf,EAAYV,EAAE,YAAa,CAC7B0B,SAAUrB,EAAKsB,SAAWH,GAAU,MACpCI,WAAYT,GAAgBK,GAAU,MACtCC,UAAWD,GAAU,QAGzB,OACIK,EAAAA,EAAAA,MAAA,OAAKnB,UAAWA,EAAUC,SAAA,CACrBO,GAAcb,EAAKsB,UAAWlB,EAAAA,EAAAA,KAACF,EAAU,KAC1CsB,EAAAA,EAAAA,MAAA,OAAKnB,UAAWV,EAAE,kBAAkBW,SAAA,CAC/BN,EAAKyB,YAAarB,EAAAA,EAAAA,KAACG,EAAAA,EAAI,CAACE,QAAQ,QAChCO,EAAahB,MAEjBmB,GAAUD,IACPd,EAAAA,EAAAA,KAAA,QACIC,UAAWV,EAAE,mBACb+B,QAAST,EACT,YAAWjB,EAAK2B,KAAKrB,UAErBF,EAAAA,EAAAA,KAACG,EAAAA,EAAI,CAACE,QAAQ,aAGpBU,IAAUf,EAAAA,EAAAA,KAACG,EAAAA,EAAI,CAACF,UAAWV,EAAE,kBAAmBc,QAAQ,WAGtE,IAGEmB,GAAeC,EAAAA,EAAAA,KACjB,SAAAC,GASO,IARHhC,EAAKgC,EAALhC,MACAe,EAAUiB,EAAVjB,WACAE,EAAUe,EAAVf,WACAC,EAAYc,EAAZd,aACAC,EAAgBa,EAAhBb,iBACAH,EAAYgB,EAAZhB,aACAiB,EAAaD,EAAbC,cAAaC,EAAAF,EACbZ,qBAAAA,OAAoB,IAAAc,GAAOA,EAoBrBC,EAAOpB,EAAa,SAAW,UAC/BqB,EAAO,CAAC,cAAeH,GAE7B,OACI3B,EAAAA,EAAAA,KAAA,OAAKC,UAAWV,EAAE,OAAQuC,GAAM5B,UAC5BF,EAAAA,EAAAA,KAAC+B,IAAS,CAACnB,aAvBF,SAACoB,EAAOC,GACrB,IAAMrC,EAAOF,EAAMsC,GACnB,OACIhC,EAAAA,EAAAA,KAACM,EAAY,CAET0B,MAAOA,EACPpC,KAAMA,EACNoB,UAAWP,EACXA,WAAYA,EACZE,WAAYA,EACZD,aAAcA,EACdE,aAAcA,EACdC,iBAAkBA,EAClBC,qBAAsBA,GATjBmB,EAYjB,EAO2CC,OAAQxC,EAAMwC,OAAQL,KAAMA,KAG3E,IAGiBM,EAAc,SAAAC,IAAAC,EAAAA,EAAAA,GAAAF,EAAAC,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAAJ,GAkC/B,SAAAA,EAAYK,GAAQ,IAADC,GAAAC,EAAAA,EAAAA,GAAA,KAAAP,GACf,IAAOzC,EAAuC8C,EAAvC9C,MAAOiD,EAAgCH,EAAhCG,WAAYC,EAAoBJ,EAApBI,kBAC1BH,EAAAH,EAAAO,KAAA,KAAML,IA0CVM,WAAa,SAACvB,GACVkB,EAAKM,iBAAgB,SAAAC,GAAc,IAAZtD,EAAKsD,EAALtD,MAEbsC,GADNtC,GAAKuD,EAAAA,EAAAA,GAAOvD,IACQwD,WAAU,SAACtD,GAAI,OAAKA,EAAK2B,OAASA,CAAI,IACpD4B,EAAczD,EAAMsC,GAG1B,OAFAtC,EAAMsC,IAAMnC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAOsD,GAAW,IAAEjC,SAAUiC,EAAYjC,UAE/C,CAACxB,MAAAA,EACZ,GACJ,EAAC+C,EAEDW,eAAiB,WACbX,EAAKM,iBAAgB,SAAAM,GAAc,IAAZ3D,EAAK2D,EAAL3D,MACb4D,EAAab,EAAKc,qBAWxB,OAVA7D,GAAKuD,EAAAA,EAAAA,GAAOvD,GACZ8D,IAAM9D,GAAO,SAACE,EAAMoC,GACXsB,EAAW1D,EAAK2B,QAGhB3B,EAAKsB,SAAYtB,EAAKoB,WACvBtB,EAAMsC,IAAMnC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAOD,GAAI,IAAEsB,SAAS,KAE1C,IAEO,CAACxB,MAAAA,EACZ,GACJ,EAAC+C,EAEDgB,iBAAmB,WACfhB,EAAKM,iBAAgB,SAAAW,GAAc,IAAZhE,EAAKgE,EAALhE,MACb4D,EAAab,EAAKc,qBAWxB,OAVA7D,GAAKuD,EAAAA,EAAAA,GAAOvD,GACZ8D,IAAM9D,GAAO,SAACE,EAAMoC,GACXsB,EAAW1D,EAAK2B,OAGjB3B,EAAKsB,UAAYtB,EAAKoB,WACtBtB,EAAMsC,IAAMnC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAOD,GAAI,IAAEsB,SAAS,IAE1C,IAEO,CAACxB,MAAAA,EACZ,GACJ,EAAC+C,EAEDkB,YAAc,WACVlB,EAAKM,iBAAgB,SAAAa,GAAc,IAAZlE,EAAKkE,EAALlE,MACbmE,EAAepB,EAAKc,qBAW1B,OAVA7D,GAAKuD,EAAAA,EAAAA,GAAOvD,GACZ8D,IAAM9D,GAAO,SAACE,EAAMoC,GACX6B,EAAajE,EAAK2B,QAGlB3B,EAAKoB,WACNtB,EAAMsC,IAAMnC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAOD,GAAI,IAAEsB,SAAUtB,EAAKsB,WAEhD,IAEO,CAACxB,MAAAA,EACZ,GACJ,EAAC+C,EAEDqB,sBAAwB,SAACC,GACrBtB,EAAKK,WAAWiB,EAAMC,cAAcC,aAAa,aACrD,EAACxB,EAEDyB,eAAiB,SAAAC,GAA2B,IAAzBC,EAAQD,EAARC,SAAUC,EAAQF,EAARE,SACrBD,IAAaC,GAIjB5B,EAAKM,iBAAgB,SAAAuB,GAAc,IAAZ5E,EAAK4E,EAAL5E,MACnBA,GAAKuD,EAAAA,EAAAA,GAAOvD,GAEZ,IAAcmE,EAAgBpB,EAAK8B,kBAA5B7E,MACD8E,EAAY9E,EAAMwD,WAAU,SAACtD,GAAI,OAAKA,EAAK2B,OAASsC,EAAaO,GAAU7C,IAAI,IAC/EkD,EAAU/E,EAAMwD,WAAU,SAACtD,GAAI,OAAKA,EAAK2B,OAASsC,EAAaQ,GAAU9C,IAAI,IAEnFmD,EAAkBhF,EAAMiF,OAAOH,EAAW,GAAnCI,GAAqCC,EAAAA,EAAAA,GAAAH,EAAA,GAA9B,GAGd,OAFAhF,EAAMiF,OAAOF,EAAS,EAAGG,GAElB,CAAClF,MAAAA,EACZ,GACJ,EAAC+C,EAEDqC,mBAAqB,WACjBrC,EAAKM,iBAAgB,SAAAgC,GACjB,MAAO,CACHrF,MAFoBqF,EAALrF,MAEFsF,MAAK,SAACC,EAAG1F,GAClB,IAAM2F,EAAWD,EAAEE,SAAWF,EAAE1D,KAC1B6D,EAAW7F,EAAE4F,SAAW5F,EAAEgC,KAEhC,OAAO2D,EAASG,cAAcD,EAClC,IAER,GACJ,EAAC3C,EAED6C,kBAAoB,WAChB7C,EAAK8C,UAAS,SAACC,GAAS,MAAM,CAC1B5C,kBAAmB4C,EAAU5C,iBAChC,GACL,EAACH,EAEDgD,cAAgB,SAACC,GACbjD,EAAK8C,SAAS,CAACG,OAAAA,GACnB,EAlJI,IAAMC,EAAQ,CACV/C,iBAAAA,EACA8C,OAAQ,IAKO,OAHf/C,GACAiD,OAAOC,OAAOF,EAAO,CAACjG,MAAOD,EAAcC,KAE/C+C,EAAKkD,MAAQA,EAAMlD,CACvB,CAySC,OAzSAqD,EAAAA,EAAAA,GAAA3D,EAAA,EAAAF,IAAA,QAAA8D,IAED,WACI,OAAOC,KAAKxD,MAAMG,WAAaqD,KAAKL,MAAMjG,MAAQsG,KAAKxD,MAAM9C,KACjE,GAAC,CAAAuC,IAAA,sBAAA8D,IAED,WACI,OAAOC,KAAKtG,MAAMuG,OAAM,SAACrG,GAAI,OAAKA,EAAKsB,OAAO,GAClD,GAAC,CAAAe,IAAA,uBAAA8D,IAED,WACI,OAAQC,KAAKtG,MAAMwG,MAAK,SAACtG,GAAI,OAAKA,EAAKsB,OAAO,GAClD,GAEA,CAAAe,IAAA,kBAAAkE,MAGA,SAAgBC,GAAO,IAADC,EAAA,KACXC,EAAYN,KAAKxD,MAAjB8D,SAEP,GAAIN,KAAKxD,MAAMG,WAAY,CACvB,IAAOjD,EAAS0G,EAAK,CAAC1G,MAAOsG,KAAKL,MAAMjG,OAAS,KAA1CA,MACPsG,KAAKT,SAAS,CAAC7F,MAAAA,IAAQ,WACnB4G,EAAS,CAAC5G,OAAKuD,EAAAA,EAAAA,GAAMoD,EAAKV,MAAMjG,QACpC,GACJ,KAAO,CAEH,IAAOA,EAAS0G,EAAK,CAAC1G,MAAOsG,KAAKxD,MAAM9C,OAAS,KAA1CA,MACP4G,EAAS,CAAC5G,OAAKuD,EAAAA,EAAAA,GAAMvD,IACzB,CACJ,GAAC,CAAAuC,IAAA,kBAAAkE,MA8GD,WACI,OACInG,EAAAA,EAAAA,KAACuG,EAAAA,EAAS,CACNC,YAAY,YACZC,SAAUT,KAAKP,cACfU,MAAOH,KAAKL,MAAMD,OAClBgB,UAAU,GAGtB,GAAC,CAAAzE,IAAA,iBAAAkE,MAED,WACI,IAAAQ,EAA6DX,KAAKxD,MAA3DoE,EAAYD,EAAZC,aAAclG,EAAYiG,EAAZjG,aAAcD,EAAUkG,EAAVlG,WAAYkC,EAAUgE,EAAVhE,WACzCkE,EAAW,CACbC,KAAM,IACN7G,UAAWV,EAAE,kBAGjB,OACI6B,EAAAA,EAAAA,MAAA,OAAKnB,UAAWV,EAAE,YAAYW,SAAA,CACzB0G,GAAgBZ,KAAKe,kBACrBpE,IACGvB,EAAAA,EAAAA,MAAC4F,EAAAA,GAAMnH,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKgH,GAAQ,IAAEvF,QAAS0E,KAAKV,kBAAkBpF,SAAA,CAAC,cAEnDF,EAAAA,EAAAA,KAAA,QAAMC,UAAU,0BAAyBC,SACpC+G,IAAQjB,KAAKtG,OAAO,SAACE,GAAI,OAAKA,EAAKsB,OAAO,IAAEgB,aAIxDxB,IACGV,EAAAA,EAAAA,KAACgH,EAAAA,GAAMnH,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACCgH,GAAQ,IACZ7F,SAAUgF,KAAKkB,oBACf5F,QAAS0E,KAAK5C,eAAelD,SAChC,aAIJQ,IACGV,EAAAA,EAAAA,KAACgH,EAAAA,GAAMnH,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKgH,GAAQ,IAAEvF,QAAS0E,KAAKrC,YAAYzD,SAAC,kBAInDQ,IACEV,EAAAA,EAAAA,KAACgH,EAAAA,GAAMnH,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACCgH,GAAQ,IACZ7F,SAAUgF,KAAKmB,qBACf7F,QAAS0E,KAAKvC,iBAAiBvD,SAClC,gBAIJO,IACGT,EAAAA,EAAAA,KAACgH,EAAAA,GAAMnH,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKgH,GAAQ,IAAEvF,QAAS0E,KAAKlB,mBAAmB5E,SAAC,oBAMxE,GAAC,CAAA+B,IAAA,oBAAAkE,MAED,SAAkBzG,GACd,IAAM0H,EAAK,IAAIC,OAAOC,IAActB,KAAKL,MAAMD,QAAS,KACxD,OAAOuB,IAAQvH,GAAO,SAACE,GAAI,OAAKwH,EAAGG,KAAK3H,EAAK2B,KAAK,GACtD,GAAC,CAAAU,IAAA,cAAAkE,MAED,SAAYzG,GAERA,EAD4BsG,KAAKxD,MAA1BgF,kBACqB9H,EAAQuH,IAAQvH,GAAO,SAACE,GAAI,OAAMA,EAAKoB,QAAQ,IAE3E,IAAM6C,EAAemC,KAAKyB,kBAAkB/H,GAC5C,OAAOsG,KAAKL,MAAM/C,iBACZqE,IAAQpD,GAAc,SAACjE,GAAI,OAAKA,EAAKsB,OAAO,IAC5C2C,CACV,GAAC,CAAA5B,IAAA,kBAAAkE,MAED,WACI,IAAMuB,EAAU1B,KAAK2B,YAAY3B,KAAKtG,OACtCkI,EAA0BC,IAAWH,GAAS,SAAC9H,GAAI,OAAKA,EAAKyB,SAAS,IAACyG,GAAAjD,EAAAA,EAAAA,GAAA+C,EAAA,GAAhEG,EAAQD,EAAA,GACf,MAAO,CAACpI,MADcoI,EAAA,GACPC,SAAAA,EACnB,GAAC,CAAA9F,IAAA,qBAAAkE,MAED,WACI,OAAO6B,IACHhC,KAAK2B,YAAY3B,KAAKtG,QACtB,SAACuI,EAAKrI,GAEF,OADAqI,EAAIrI,EAAK2B,MAAQ3B,EACVqI,CACX,GACA,CAAC,EAET,GAAC,CAAAhG,IAAA,aAAAkE,MAED,WACI,IAAA+B,EAAuElC,KAAKxD,MAArE/B,EAAUyH,EAAVzH,WAAYC,EAAYwH,EAAZxH,aAAcE,EAAYsH,EAAZtH,aAAcV,EAAQgI,EAARhI,SAAUyC,EAAUuF,EAAVvF,WAEzDwF,EAA0BnC,KAAKzB,kBAAxB7E,EAAKyI,EAALzI,MAAOqI,EAAQI,EAARJ,SAER9H,EAAYV,EACd,UACA,CACI6I,SAAUzF,OAAa0F,EAAY,KACnCC,MAAO5I,EAAMwC,YAASmG,EAAY,OAEtC,iBAGJ,OACIjH,EAAAA,EAAAA,MAAA,OAAKnB,UAAWA,EAAUC,SAAA,CACrB6H,EAAS7F,OAAS,IACfd,EAAAA,EAAAA,MAACmH,EAAAA,SAAc,CAAArI,SAAA,EACXF,EAAAA,EAAAA,KAACwB,EAAY,CACTgH,SAAS,IACT7H,YAAY,EACZF,YAAY,EACZC,aAAcA,EACdhB,MAAOqI,EACPnH,aAAcA,EACd6H,YAAalJ,EAAE,YAAa,CAACmJ,OAAQ,QACrC7H,iBAAkBmF,KAAKlC,wBAE1BpE,EAAMwC,OAAS,IAAKlC,EAAAA,EAAAA,KAAA,OAAKC,UAAWV,EAAE,kBAG9CG,EAAMwC,OAAS,IACZlC,EAAAA,EAAAA,KAACwB,EAAY,CACT9B,MAAOA,EACPgB,aAAcA,EACdD,WAAYA,EACZG,aAAcA,EACd4H,SAAS,IACTC,YAAalJ,EAAE,YAAa,CAACmJ,OAAQ,QACrCC,UAAW3C,KAAK9B,eAChBrD,iBAAkBmF,KAAKlC,sBACvB8E,eAAa,KAGnBb,EAAS7F,SAAWxC,EAAMwC,QAAUhC,IAGlD,GAAC,CAAA+B,IAAA,SAAAkE,MAED,WACI,IAAA0C,EAA4C7C,KAAKxD,MAA1CG,EAAUkG,EAAVlG,WAAYlC,EAAUoI,EAAVpI,WAAYR,EAAS4I,EAAT5I,UACzB6I,EAAavJ,EACf,CACI6I,SAAUzF,EAAa,WAAQ0F,EAC/BU,SAAUtI,OAAa4H,EAAY,MAEvCpI,GAEJ,OACImB,EAAAA,EAAAA,MAAA,OAAKnB,UAAW6I,EAAW5I,SAAA,CACtB8F,KAAKgD,iBACLhD,KAAKiD,eAGlB,KAAC9G,CAAA,CAvV8B,CAAS+G,EAAAA,WAAvB/G,EACVgH,WAAaC,IAAAA,QAChBA,IAAAA,MAAgB,CACZ7H,KAAM6H,IAAAA,OAAiBC,WACvBnI,QAASkI,IAAAA,KAAeC,WACxBhI,UAAW+H,IAAAA,KACXjE,QAASiE,IAAAA,OACTpI,SAAUoI,IAAAA,QAPDjH,EAyBVmH,aAAe,CAClB1I,aAAc,SAAA2I,GAAA,IAAEhI,EAAIgI,EAAJhI,KAAIiI,EAAAD,EAAEpE,QAAAA,OAAO,IAAAqE,EAAGjI,EAAIiI,EAAA,OAAMC,EAAAA,EAAAA,IAAWtE,EAAS,CAACuE,QAAQ,GAAO,EAC9EjJ,YAAY,EACZkC,YAAY,EACZjC,cAAc,EACdkG,cAAc,EACdhE,kBAAkB,E,qJCzIpB+G,GAAQnK,EAAAA,EAAAA,GAAG,qBAEXoK,EAAQ,SAAAxH,IAAAC,EAAAA,EAAAA,GAAAuH,EAAAxH,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAAqH,GAAA,SAAAA,IAAA,IAAAnH,GAAAC,EAAAA,EAAAA,GAAA,KAAAkH,GAAA,QAAAC,EAAAC,UAAA5H,OAAA6H,EAAA,IAAAC,MAAAH,GAAAI,EAAA,EAAAA,EAAAJ,EAAAI,IAAAF,EAAAE,GAAAH,UAAAG,GAmCwC,OAnCxCxH,EAAAH,EAAAO,KAAAqH,MAAA5H,EAAA,OAAA6H,OAAAJ,KAsBVpE,MAAQ,CACJyE,cAAc,GACjB3H,EAED4H,OAAS9B,EAAAA,YAAiB9F,EAE1B6H,OAAS,kBACL7H,EAAK8C,UAAS,SAACC,GAAS,MAAM,CAC1B4E,cAAe5E,EAAU4E,aAC5B,GAAG,EAAD3H,EAEP8H,KAAO,kBAAM9H,EAAK8C,SAAS,CAAC6E,cAAc,GAAO,EAAD3H,EAEhD+H,MAAQ,kBAAM/H,EAAK8C,SAAS,CAAC6E,cAAc,GAAQ,EAAD3H,CAAC,CAkDlD,OAlDiDqD,EAAAA,EAAAA,GAAA8D,EAAA,EAAA3H,IAAA,eAAAkE,MAElD,WACI,IAAAQ,EAA0BX,KAAKxD,MAAxBiI,EAAM9D,EAAN8D,OAAQC,EAAO/D,EAAP+D,QAETC,EAAc,CAChBrJ,QAAqB,UAAZoJ,EAAsB1E,KAAKsE,YAASjC,EAC7CuC,aAA0B,UAAZF,EAAsB1E,KAAKuE,UAAOlC,EAChDwC,aAA0B,UAAZH,EAAsB1E,KAAKwE,WAAQnC,GAGrD,OAAOE,EAAAA,aAAmBkC,EAAQE,EACtC,GAAC,CAAA1I,IAAA,iBAAAkE,MAED,WACI,IAAO2E,EAAY9E,KAAKxD,MAAjBsI,SACPC,EAAoB/E,KAAKxD,MAAMsI,SAAxB7I,EAAG8I,EAAH9I,IAAK+I,EAAID,EAAJC,KACNC,EAAWC,EAAAA,EAAUnF,IAAI9D,GAAKkJ,YAEpC,OAAO5C,EAAAA,eAAqBuC,GACtBvC,EAAAA,aAAmBuC,GACnBG,EAASpI,KAAKmD,KAAMgF,EAC9B,GAAC,CAAA/I,IAAA,cAAAkE,MAED,WACI,IAAA+B,EAA4BlC,KAAKxD,MAA1B4I,EAAKlD,EAALkD,MAAOC,EAAUnD,EAAVmD,WAEd,OACIrL,EAAAA,EAAAA,KAACsL,EAAAA,GAAKzL,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACF0L,UAAWF,EACXG,QAASxF,KAAKwE,MACdD,MAAM,EACNkB,UAAWzF,KAAKqE,OAChBqB,UAAQ,GACJN,GAAK,IAAAlL,SAER8F,KAAK2F,mBAGlB,GAAC,CAAA1J,IAAA,SAAAkE,MAED,WACI,IAAOlG,EAAa+F,KAAKxD,MAAlBvC,UAEP,OACImB,EAAAA,EAAAA,MAAA,QAAMnB,UAAW0J,EAAM,KAAM1J,GAAY2L,IAAK5F,KAAKqE,OAAOnK,SAAA,CACrD8F,KAAK6F,eACL7F,KAAKL,MAAMyE,cAAgBpE,KAAK8F,gBAG7C,KAAClC,CAAA,CArFS,CAASV,EAAAA,WAAjBU,EAiBKN,aAAe,CAClByC,iBAAkB,EAClBV,WAAY,CAAC,aAAc,YAqEnC,S,qJCzFMW,EAAU,IAAIC,EAAAA,EAUCC,EAAe,SAAA9J,IAAAC,EAAAA,EAAAA,GAAA6J,EAAA9J,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAA2J,GAAA,SAAAA,IAAA,OAAAxJ,EAAAA,EAAAA,GAAA,KAAAwJ,GAAA5J,EAAA4H,MAAA,KAAAJ,UAAA,CA+B/B,OA/B+BhE,EAAAA,EAAAA,GAAAoG,EAAA,EAAAjK,IAAA,qBAAAkE,MAChC,WACI,IAAAQ,EAAmCX,KAAKxD,MAAjC2J,EAAKxF,EAALwF,MAAOC,EAAMzF,EAANyF,OAAQC,EAAS1F,EAAT0F,UAElBF,GAASC,GACTJ,EAAQM,IAAI,CACRC,MAAO,SACPhL,KAAM,UACNiL,WAAY,IACZC,MAAO,8BACPC,QAASL,EAAaA,EAAsBM,QAAUC,EAAAA,EAAOC,OAAOC,SACpEC,QAAS,CACL,CACIC,MAAO,QACP1L,QAAS,kBAAM2L,EAAAA,EAAAA,IAAeZ,EAAqB,KAKvE,GAAC,CAAApK,IAAA,SAAAkE,MAED,WACI,IAAA+B,EAAsElC,KAAKxD,MAAK0K,EAAAhF,EAAzEiF,gBAAAA,OAAe,IAAAD,GAAQA,EAAEf,EAAKjE,EAALiE,MAAOE,EAASnE,EAATmE,UAAWD,EAAMlE,EAANkE,OAAQlM,EAAQgI,EAARhI,SAI1D,OAAIiM,IAAUgB,GAFUf,EAMjBlM,GAHIF,EAAAA,EAAAA,KAACoN,EAAAA,EAAK,CAACjB,MAAOE,GAI7B,KAACH,CAAA,CA/B+B,CAAShD,EAAAA,U,+JCZvCS,GAAQnK,EAAAA,EAAAA,GAAG,WAOV,SAAS6N,EAAS7M,GAAsD,IAApDN,EAAQM,EAARN,SAAUc,EAAQR,EAARQ,SACjC,OAAOhB,EAAAA,EAAAA,KAAA,QAAMC,UAAW0J,EAAM,YAAa,CAAC3I,SAAAA,IAAWd,SAAEA,GAC7D,CAEO,SAASoN,EAAI5L,GAAqB,IAAnBxB,EAAQwB,EAARxB,SAClB,OAAOF,EAAAA,EAAAA,KAAA,QAAMC,UAAW0J,EAAM,QAAQzJ,SAAEA,GAC5C,CAEO,SAASqN,EAAavK,GAAqB,IAAnB9C,EAAQ8C,EAAR9C,SAC3B,OACIF,EAAAA,EAAAA,KAACqN,EAAS,CAAAnN,UACNF,EAAAA,EAAAA,KAACsN,EAAI,CAAApN,SAAEA,KAGnB,CAEO,SAASsN,EAAOnK,GAAgC,IAA9BnD,EAAQmD,EAARnD,SAAUD,EAASoD,EAATpD,UAC/B,OAAOD,EAAAA,EAAAA,KAAA,QAAMC,UAAW0J,EAAM,UAAW1J,GAAWC,SAAEA,GAC1D,CAEO,SAASuN,EAAY/J,GAAgC,IAA9BxD,EAAQwD,EAARxD,SAAUD,EAASyD,EAATzD,UACpC,OAAOD,EAAAA,EAAAA,KAAA,QAAMC,UAAW0J,EAAM,gBAAiB1J,GAAWC,SAAEA,GAChE,CAEO,SAASwN,EAAM9J,GAAqB,IAAnB1D,EAAQ0D,EAAR1D,SACpB,OAAOF,EAAAA,EAAAA,KAAA,QAAMC,UAAW0J,EAAM,WAAWzJ,SAAEA,GAC/C,CAEO,SAASyN,EAAOxJ,GAA4E,IAA1EyJ,EAAIzJ,EAAJyJ,KAAMtM,EAAO6C,EAAP7C,QACrBuM,EAAWC,EAAAA,EAAQC,YAAYH,GAAI/N,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAClCmO,EAAAA,IAAwB,IAC3BtE,QAAQ,KAEZ,OACI1J,EAAAA,EAAAA,KAAA,QACIsB,QAASA,EACTrB,UAAW0J,EAAM,WACjBsE,wBAAyB,CAACC,OAAQL,IAG9C,C,oMC3CA,SAASM,EAAsB3L,GAC3B,IAAA4L,EAQI5L,EAPA6L,SAAAA,OAAQ,IAAAD,EAAG,IAAGA,EAAAE,EAOd9L,EANAiE,SAAAA,OAAQ,IAAA6H,EAAG,WAAO,EAACA,EACnBC,EAKA/L,EALA+L,OACApI,EAIA3D,EAJA2D,MACAqI,EAGAhM,EAHAgM,eACAC,EAEAjM,EAFAiM,UACGC,GAAIC,EAAAA,EAAAA,GACPnM,EAAKoM,GAETC,EAA0BtG,EAAAA,WAAoCuG,GAAAjK,EAAAA,EAAAA,GAAAgK,EAAA,GAAvDE,EAAKD,EAAA,GAAEE,EAAQF,EAAA,GAEhBG,EAAkB1G,EAAAA,SAAc,WAClC,OAAO2G,IAAUzI,EAAiB4H,EACtC,GAAG,CAACA,EAAU5H,IAER0I,EAAe5G,EAAAA,aACjB,SAACqF,GACGoB,EAASpB,GACTqB,EAAgBrB,EACpB,GACA,CAACqB,EAAiBD,IAGhBI,EAAgB7G,EAAAA,aAClB,SAAC8G,GACOZ,GACAA,EAAUY,GAEA,UAAVA,EAAEpN,KAAmBuM,GACrBA,EAAea,EAEvB,GACA,CAACb,EAAgBC,IAGfa,EAAa/G,EAAAA,aACf,SAAC8G,GACGL,OAAS3G,GAELkG,GACAA,EAAOc,EAEf,GACA,CAACL,EAAUT,IAGf,OACIvO,EAAAA,EAAAA,KAACuG,EAAAA,GAAS1G,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACN4G,SAAU0I,GACNT,GAAI,IACRvI,WAAiBkC,IAAV0G,EAAsB5I,EAAQ4I,EACrCR,OAAQe,EACRb,UAAWW,IAGvB,CAEA,QAAe7G,EAAAA,KAAW4F,E,qJChEX,SAASoB,EAAarG,GAAoC,IAADsG,EACpE,OAAAA,EAAA,SAAAC,IAAApN,EAAAA,EAAAA,GAAAqN,EAAAD,GAAA,IAAAnN,GAAAC,EAAAA,EAAAA,GAAAmN,GAAA,SAAAA,IAAA,OAAAhN,EAAAA,EAAAA,GAAA,KAAAgN,GAAApN,EAAA4H,MAAA,KAAAJ,UAAA,CAQK,OARLhE,EAAAA,EAAAA,GAAA4J,EAAA,EAAAzN,IAAA,SAAAkE,MAGI,WACI,OAAOwJ,EAAAA,cACH3P,EAAAA,EAAAA,KAACkJ,GAASrJ,EAAAA,EAAAA,GAAA,GAAKmG,KAAKxD,QACpBoN,SAASC,eAAeC,EAAAA,GAEhC,KAACJ,CAAA,CARL,CAA+BnH,EAAAA,WAAeiH,EACnCO,YAAW,aAAA5F,QAAgB6F,EAAAA,EAAAA,IAAe9G,GAAU,KAAAsG,CASnE,C,gQCXM7F,GAAQnK,EAAAA,EAAAA,GAAG,cAOF,SAASyQ,EAASzP,GAA8C,IAA5C0P,EAAY1P,EAAZ0P,aAAcC,EAAU3P,EAAV2P,WAC7C,OACI/O,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,EAAM,QAAQzJ,SAAA,EAC1BkB,EAAAA,EAAAA,MAAA,KAAGnB,UAAW0J,EAAM,WAAWzJ,SAAA,EAC3BF,EAAAA,EAAAA,KAAA,QAAMC,UAAW0J,EAAM,aAAazJ,SAAC,aACrCF,EAAAA,EAAAA,KAAA,QAAMC,UAAW0J,EAAM,cAAczJ,SAAEgQ,QAG3C9O,EAAAA,EAAAA,MAAA,KAAGnB,UAAW0J,EAAM,SAASzJ,SAAA,EACzBF,EAAAA,EAAAA,KAAA,QAAMC,UAAW0J,EAAM,aAAazJ,SAAC,WACrCF,EAAAA,EAAAA,KAAA,QAAMC,UAAW0J,EAAM,cAAczJ,SAAEiQ,SAIvD,C,6MC+BO,SAASC,EAAiBC,GAC7B,MAAO,CACHxO,KAAMyO,EAAAA,GACNtF,KAAM,CAACqF,WAAAA,GAEf,CAEO,SAASE,EAAoBC,GAChC,MAAO,CACH3O,KAAMyO,EAAAA,GACNtF,KAAM,CAACwF,cAAAA,GAEf,CAEO,SAASC,EAAiBC,GAC7B,MAAO,CACH7O,KAAMyO,EAAAA,GACNtF,KAAM,CAAC0F,WAAAA,GAEf,CAgBA,SAASC,EAAaC,EAAuBC,GACzC,IAAMC,EAAM9I,IACR4I,GACA,SAAC3I,EAAK9B,EAAOtE,GACT,IAAOkP,EAA0B5K,EAA1B4K,MAAOC,EAAmB7K,EAAnB6K,OAAQC,EAAW9K,EAAX8K,QAQtB,OALAhJ,EADUpG,GACDkP,EACT9I,EAAI+I,QAAUA,EACd/I,EAAIgJ,SAAWA,EACfhJ,EAAIiJ,QAAUH,EAAQE,EAEfhJ,CACX,GACA,CAAC+I,OAAQ,EAAGC,QAAS,EAAGC,OAAQ,EAAGL,QAAAA,IAGvC,OAAAhR,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACOiR,GAAG,IACNE,OAAQF,EAAIE,aAAU3I,EACtB4I,QAASH,EAAIG,cAAW5I,EACxB6I,OAAQJ,EAAII,aAAU7I,GAE9B,CAuBO,SAAS8I,EAA8BnG,GAM1C,IAAO6F,EAAgC7F,EAAhC6F,QAASlL,EAAuBqF,EAAvBrF,MAAO9D,EAAgBmJ,EAAhBnJ,KAAMmP,EAAUhG,EAAVgG,OAC7B,MAAO,CACHnP,KAAMyO,EAAAA,GACNtF,KAAM,CACFoG,YAAazL,GAAS,MACtB6K,cAAeK,GAAW,MAC1BH,WAAY7O,GAAQ,MACpBwP,kBAAyBhJ,IAAX2I,EAAuB,MAAQA,GAGzD,C,0BC3IMrH,GAAQnK,EAAAA,EAAAA,GAAG,gBAEV8R,EAAyBC,EAAAA,GAAzBD,sBAgBP,SAASE,EAAYhP,GACjB,IAAOqO,EAAoBrO,EAApBqO,QAASvP,EAAWkB,EAAXlB,QACVmQ,EAhBV,SAAmBZ,GACf,IAAMa,EAAaC,IAASd,EAAS,KACrC,OAAK,IAAMa,EACAb,EAGJA,EAAQe,OAAO,EAAGF,EAAa,GAAKb,EAAQe,OAAOF,EAAa,EAAG,GAC9E,CAS2BG,CAAUhB,GAE3BiB,EAAcvJ,EAAAA,aAAkB,WAClCjH,EAAQuP,EACZ,GAAG,CAACvP,EAASuP,IAEPkB,GACFN,aAAc,EAAdA,EAAgBvP,WAAW2O,aAAO,EAAPA,EAAS3O,QAChC2O,GAEA7Q,EAAAA,EAAAA,KAACgS,EAAAA,EAAO,CAACtF,QAASmE,EAAQ3Q,UACtBkB,EAAAA,EAAAA,MAAA,QAAMnB,UAAW0J,EAAM,WAAWzJ,SAAA,CAAEuR,EAAiB,IAAS,SAIpEQ,EAAW1J,EAAAA,SAAc,WAC3B,GAAKsI,GAAYS,EAIjB,IAAK,IAADY,EACMpB,EAAM,IAAIzJ,OAAOiK,GAAuBa,KAAKtB,GACnD,OAAOC,SAAW,QAARoB,EAAHpB,EAAKsB,cAAM,IAAAF,OAAA,EAAXA,EAAaG,IACxB,CAAE,MAAOhD,GACL,MACJ,CACJ,GAAG,CAACwB,IAEJ,OACIzP,EAAAA,EAAAA,MAACmH,EAAAA,SAAc,CAAArI,SAAA,EACXF,EAAAA,EAAAA,KAACsS,EAAAA,EAAa,CAACrS,UAAW0J,EAAM,QAAS4I,MAAO,UAAWjR,QAASwQ,EAAY5R,SAC3E6R,KAEL/R,EAAAA,EAAAA,KAACwS,EAAAA,EAAe,CACZ5E,KAAMiD,EACN4B,UAAWR,EACXS,KAAK,iBACL5L,KAAK,IACL6L,cACIvR,EAAAA,EAAAA,MAAA,OAAAlB,SAAA,CAAK,eAEA0S,QAAQX,KACLjS,EAAAA,EAAAA,KAAA,OAAAE,UACIF,EAAAA,EAAAA,KAAC6S,EAAAA,EAAI,CAACN,MAAM,YAAWrS,SAAC,yCAQxD,CAEO,SAAS4S,EAAsBtQ,GAClC,IAAOqO,EAAWrO,EAAXqO,QACDkC,GAAWC,EAAAA,EAAAA,MAEX1R,EAAUiH,EAAAA,aAAkB,WAC9BwK,EAAS5B,EAA8B,CAACN,QAAAA,IAC5C,GAAG,CAACA,IAEJ,OAAO7Q,EAAAA,EAAAA,KAACwR,EAAW,CAACX,QAASA,EAASvP,QAASA,GACnD,C,kHCzFa2R,GAAa,CACtBC,IAAK,sBACL3G,MAAO,QACP4G,SAAS,EACTC,UAAU,EACVlI,UAAW,CACPjJ,IAAK,sBACL+I,KAAM,CACFqI,U,SAAWpG,GACXqG,gBAAe,SAAC1T,EAAM2T,GAClB,OAAQA,GACJ,IAAK,WACDC,EAAAA,GAAAA,MAAiBT,SAAS3C,EAAiBxQ,IAC3C,MACJ,IAAK,WACD4T,EAAAA,GAAAA,MAAiBT,SAASxC,EAAoB,CAAC3Q,KAC/C,MACJ,IAAK,QACD4T,EAAAA,GAAAA,MAAiBT,SAAStC,EAAiB,CAAC7Q,KAGxD,IAGR6T,QAAS,CACL/T,MAAO,CACHgU,QAAS,CACL3N,IAAG,SAACnG,GACA,OAAOA,EAAK8T,QAAQC,MAAM,eAAe,EAC7C,EACAC,MAAO,OACP5O,MAAM,EACNG,QAAS,QAEb0L,QAAS,CACL9K,IAAG,SAACnG,GACA,OAAOA,EAAKiR,OAChB,EACA+C,MAAO,OACP5O,MAAM,EACNG,QAAS,WAEbQ,MAAO,CACHI,IAAG,SAACnG,GACA,OAAOA,EAAK+F,KAChB,EACAiO,MAAO,OACP5O,MAAM,EACNG,QAAS,SAEb6L,OAAQ,CACJjL,IAAG,SAACnG,GACA,OAAOA,EAAKoR,MAChB,EACA4C,MAAO,SACP5O,MAAM,EACNG,QAAS,IACT0O,aAAc,CAACtI,UAAW,SAAUmB,QAAS,WAEjD7K,KAAM,CACFkE,IAAG,SAACnG,GACA,OAAOA,EAAKiC,IAChB,EACA+R,MAAO,OACP5O,MAAM,EACNG,QAAS,QAEbgH,MAAO,CACHpG,IAAG,SAACnG,GACA,OAAOA,EAAKuM,KAChB,EACAyH,MAAO,SACP5O,MAAM,EACNG,QAAS,SAEb2O,WAAY,CACR/N,IAAG,SAACnG,GACA,OAAOA,EAAKkU,UAChB,EACAF,MAAO,QACP5O,MAAM,EACNG,QAAS,eAGjB4O,KAAM,CACFC,SAAU,CACNtU,MAAO,CAAC,UAAW,UAAW,QAAS,SAAU,OAAQ,QAAS,kBAMrEuU,IAAiBpU,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACvBoT,IAAU,IACbiB,QAASC,EAAAA,GACTV,SAAO5T,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACAoT,GAAWQ,SAAO,IACrBW,KAAM,e,sDC7FRC,GAAiB,SAACC,EAAiCrS,GACrD,IAAMvC,EAAQsI,IACVsM,GACA,SAACrM,EAAKrI,GACF,IAAMuG,EAAQvG,EAAKqC,GACnB,GAAKgG,EAAIsM,IAAIpO,GAEN,CACH,IAAMqO,EAAQvM,EAAIlC,IAAII,GACtB8B,EAAIwM,IAAItO,EAAOqO,EAAQ,EAC3B,MAJIvM,EAAIwM,IAAItO,EAAO,GAKnB,OAAO8B,CACX,GACA,IAAIyM,KAGR,OAAOzR,EAAAA,EAAAA,GAAIvD,EAAMiV,WAAWC,KAAI,SAAApU,GAAoB,IAADkB,GAAAmD,EAAAA,EAAAA,GAAArE,EAAA,GAAjBZ,EAAI8B,EAAA,GAAE8S,EAAK9S,EAAA,GACzC,MAAO,CACHkM,KAAMhB,GAAAA,EAAOC,OAAsB,cAAEgI,OAAOjV,IAC5CuG,MAAOvG,EACP4U,MAAAA,EAER,GACJ,EAEA,SAASM,GACLC,EACAlR,EACAwM,EACA2E,GAEA,IAAMC,EAAgBC,KAASF,GAE3BtV,EAAQqV,EAYZ,MAVmB,KAAf1E,GAAsB4E,IACtBvV,EAAQmE,GASN,CANkB,CACpB+J,KAAM,MACNzH,MAAO,MACPqO,MAAOW,KAAOzV,GAAO,SAACE,GAAI,OAAKA,EAAK4U,KAAK,MAGtBrK,QAAAlH,EAAAA,EAAAA,GAAKvD,GAChC,CAEA,IAAM0V,GAAa,SAACzP,GAAgB,OAAKA,EAAM0P,WAAWC,WAAWC,OAAQ,EAEvEC,GAAgB,SAAC7P,GAAgB,OAAKA,EAAM0P,WAAWC,WAAWjF,UAAW,EAS7EoF,IAAoBC,EAAAA,GAAAA,IAAe,CAACN,GAAYI,KAAgB,SAACD,EAASlF,GAC5E,OAAKA,EAGEpJ,IAAQsO,GAAS,SAAAvS,GAAA,IAAE0Q,EAAO1Q,EAAP0Q,QAAO,OAAMA,aAAO,EAAPA,EAASiC,cAAcC,SAASvF,EAAW,IAFvEkF,CAGf,IAEMM,IAAaH,EAAAA,GAAAA,IACf,CAhBqB,SAAC/P,GAAgB,OAAKA,EAAM0P,WAAWC,WAAW9E,aAAc,EACnE,SAAC7K,GAAgB,OAAKA,EAAM0P,WAAWC,WAAW5E,UAAW,EAC5D,SAAC/K,GAAgB,OAAKA,EAAM0P,WAAWC,WAAWlE,WAAY,EAC7D,SAACzL,GAAgB,OAAKA,EAAM0P,WAAWC,WAAWjE,YAAa,IAcnF,SAACR,EAAShP,EAAM8D,EAAOqL,GACnB,OAAOhJ,IACH,CACI6I,QAAAA,EACAhP,KAAAA,EACA8D,MAAAA,EACAqL,OAAAA,IAEJ,SAAC/I,EAAK9B,EAAO2P,GAKT,MAJc,QAAV3P,IAEA8B,EADY6N,GACD3P,GAER8B,CACX,GACA,CAAC,EAOT,IAGE8N,IAAwBL,EAAAA,GAAAA,IAAe,CAACG,KAAa,SAACG,GAExD,OAD+BA,EAAxBnF,SAAoBlC,EAAAA,EAAAA,GAAIqH,EAAOpH,GAE1C,IAEMqH,IAAqBP,EAAAA,GAAAA,IAAe,CAACG,KAAa,SAACG,GAErD,OAD4BA,EAArBnU,MAAiB8M,EAAAA,EAAAA,GAAIqH,EAAOE,GAEvC,IAEMC,IAAsBT,EAAAA,GAAAA,IAAe,CAACG,KAAa,SAACG,GAEtD,OAD6BA,EAAtBrQ,OAAkBgJ,EAAAA,EAAAA,GAAIqH,EAAOI,GAExC,IAEMC,IAAuBX,EAAAA,GAAAA,IAAe,CAACG,KAAa,SAACG,GAEvD,OAD8BA,EAAvBhF,QAAmBrC,EAAAA,EAAAA,GAAIqH,EAAOM,GAEzC,IAEMC,IAAqBb,EAAAA,GAAAA,IAAe,CAACD,GAAmBI,KAAa,SAAC7K,EAAMgL,GAC9E,OAAO/O,IAAQ+D,EAAMgL,EACzB,IAEaQ,IAAoBd,EAAAA,GAAAA,IAC7B,CAACa,GA9DuB,SAAC5Q,GAAgB,OACzCA,EAAM8Q,OAAOtC,EAAAA,GAAuC,IA8DpD,SAACoB,EAASmB,GAAS,OACf9J,GAAAA,EAAO+J,MAAM3R,KAAKuQ,EAASmB,EAAWzC,GAAkBR,QAAQ/T,MAAM,IAGxEkX,IAAiBlB,EAAAA,GAAAA,IAAe,CAACN,KAAa,SAACyB,GAAQ,OACzDxC,GAAewC,EAAU,UAAU,IAEjCC,IAAcpB,EAAAA,GAAAA,IAAe,CAACN,KAAa,SAACyB,GAAQ,OAAKxC,GAAewC,EAAU,OAAO,IACzFE,IAAerB,EAAAA,GAAAA,IAAe,CAACN,KAAa,SAACyB,GAAQ,OAAKxC,GAAewC,EAAU,QAAQ,IAE3FG,IAAetB,EAAAA,GAAAA,IAAe,CAACN,KAAa,SAACvE,GAAO,OAAKwD,GAAexD,EAAS,SAAS,IAE1FoG,IAAqBvB,EAAAA,GAAAA,IACvB,CAACD,GAAmBM,KACpB,SAAC/K,EAAMgL,GACH,IAAMtW,EAAQuH,IAAQ+D,EAAMgL,GAC5B,OAAO3B,GAAe3U,EAAO,UACjC,IAEEwX,IAAkBxB,EAAAA,GAAAA,IAAe,CAACD,GAAmBQ,KAAqB,SAACjL,EAAMgL,GACnF,IAAMtW,EAAQuH,IAAQ+D,EAAMgL,GAC5B,OAAO3B,GAAe3U,EAAO,OACjC,IACMyX,IAAmBzB,EAAAA,GAAAA,IACrB,CAACD,GAAmBU,KACpB,SAACnL,EAAMgL,GACH,IAAMtW,EAAQuH,IAAQ+D,EAAMgL,GAC5B,OAAO3B,GAAe3U,EAAO,QACjC,IAGE0X,IAAmB1B,EAAAA,GAAAA,IACrB,CAACD,GAAmBY,KACpB,SAACrL,EAAMgL,GACH,IAAMtW,EAAQuH,IAAQ+D,EAAMgL,GAC5B,OAAO3B,GAAe3U,EAAO,SACjC,IAGS2X,IAAwB3B,EAAAA,GAAAA,IACjC,CAACkB,GAAgBK,GAAoBzB,GAAeO,IACpDjB,IAESwC,IAAqB5B,EAAAA,GAAAA,IAC9B,CAACoB,GAAaI,GAAiB1B,GAAeS,IAC9CnB,IAESyC,IAAuB7B,EAAAA,GAAAA,IAChC,CAACqB,GAAcI,GAAkB3B,GAAeW,IAChDrB,IAGS0C,IAAuB9B,EAAAA,GAAAA,IAChC,CAACsB,GAAcI,GAAkB5B,GAAea,IAChDvB,I,wECnLS2C,GAAsB,SAC/B9R,GAAgB,OAEfA,EAAM0P,WAAWC,WAA2BoC,gBAAiB,EAE5DC,GAAa,SAAChS,GAAgB,OAChCA,EAAM0P,WAAWC,WAAWsC,OAAQ,EAE3BC,GAAsB,SAAClS,GAAgB,OAChDA,EAAM0P,WAAWC,WAAWwC,kBAAmB,EAEtCC,IAAyBrC,EAAAA,GAAAA,IAClC,CAACiC,GAAYF,GAAqBI,KAClC,WAAkD,IAAjDD,EAAO9N,UAAA5H,OAAA,QAAAmG,IAAAyB,UAAA,GAAAA,UAAA,GAAG,GAAI4M,EAAS5M,UAAA5H,OAAA,EAAA4H,UAAA,QAAAzB,EAAEyP,EAAkBhO,UAAA5H,OAAA,EAAA4H,UAAA,QAAAzB,EAClC8D,EAAQyL,EAAQA,EAAQ1V,OAAS,GACjC6O,EAAQiH,GAAyBJ,GACnClY,EAAQkY,EAAQK,MAAM,EAAGL,EAAQ1V,OAAS,GAc9C,OAZI4V,IACApY,EAAQA,EAAMgG,QAAO,SAAC9F,GAAI,YAAqByI,IAAhBzI,EAAKsR,MAAoB,KAG5DxR,GAAQwY,EAAAA,GAAAA,IAAqBxY,EAAOgX,GAEhCvK,GACAzM,EAAMiF,OAAO,EAAG,EAAGwH,GAEnB4E,GACArR,EAAMyY,KAAKpH,GAERrR,CACX,IAGS0Y,IAAmC1C,EAAAA,GAAAA,IAC5C,CAACiC,GAAYU,GAAAA,KACb,WAAmC,IAAlCT,EAAO9N,UAAA5H,OAAA,QAAAmG,IAAAyB,UAAA,GAAAA,UAAA,GAAG,GAAIwO,EAAcxO,UAAA5H,OAAA,EAAA4H,UAAA,QAAAzB,EACnBkQ,EAAe,IAAIC,IACnBzH,EAAQiH,GAAyBJ,GACvChS,OAAO6S,KAAK1H,QAAAA,EAAS,CAAC,GAAG2H,SAAQ,SAAC5C,GAC9B,IAAM7T,EAAM6T,EACR/E,SAAAA,EAAQ9O,IACRsW,EAAajM,IAAIrK,EAEzB,IACA,IAAM6O,EAAgF,GACtF,SAAS6H,EAAS9W,EAAgCN,GAA+B,IAAjBqX,EAAS9O,UAAA5H,OAAA,QAAAmG,IAAAyB,UAAA,GAAAA,UAAA,GAAG,GACpEyO,EAAahE,IAAI1S,IACjBiP,EAAIqH,KAAK,CAACtW,KAAAA,EAAMN,KAAAA,EAAMqX,UAAAA,GAE9B,CAcA,OAZAD,EAAS,iBAAkB,kBAAmB,eAC9CA,EAAS,mBAAoB,oBAAqB,eAClDA,EAAS,YAAa,cACtBA,EAAS,mBAAoB,oBAAqB,MAClDA,EAASL,EAAiB,eAAiB,OAAQ,SACnDK,EAAS,aAAc,gBACvBA,EAAS,YAAa,eACtBA,EAAS,YAAa,eACtBA,EAAS,SAAU,UACnBA,EAAS,UAAW,WACpBA,EAAS,SAAU,UAEZ7H,CACX,IAGJ,SAASkH,GAAyBJ,GAC9B,OAAOA,EAAQA,EAAQ1V,OAAS,EACpC,C,mDC1CMyH,IAAQnK,EAAAA,EAAAA,GAAG,oBAMXqZ,GAA2B,CAC7BC,gBAAgB,GAGpB,SAASC,GAAalI,GAClB,MAAmB,UAAZA,GAAmC,UAAZA,CAClC,CAAC,IAEKmI,GAAe,SAAAvJ,IAAApN,EAAAA,EAAAA,GAAA2W,EAAAvJ,GAAA,IAAAnN,GAAAC,EAAAA,EAAAA,GAAAyW,GAAA,SAAAA,IAAA,IAAAvW,GAAAC,EAAAA,EAAAA,GAAA,KAAAsW,GAAA,QAAAnP,EAAAC,UAAA5H,OAAA6H,EAAA,IAAAC,MAAAH,GAAAI,EAAA,EAAAA,EAAAJ,EAAAI,IAAAF,EAAAE,GAAAH,UAAAG,GAmKf,OAnKexH,EAAAH,EAAAO,KAAAqH,MAAA5H,EAAA,OAAA6H,OAAAJ,KAIjBkP,cAAgB,SAAAzY,GAAmC,IAE3CkM,EAFgBmE,EAAOrQ,EAAb0Y,IAAMrI,QACbM,EAAiC1O,EAAKD,MAAtC2O,8BA0BP,OAvBIzE,EADY,UAAZmE,GAEI7Q,EAAAA,EAAAA,KAACuI,EAAAA,SAAc,CAAArI,UACXkB,EAAAA,EAAAA,MAACkR,EAAAA,EAAa,CACVC,MAAM,UACNjR,QAAS,WACL6P,EAA8B,CAACxL,MAAO,SAC1C,EAAEzF,SAAA,EAEFF,EAAAA,EAAAA,KAACG,EAAAA,EAAI,CAACE,QAAS,yBAA2B,IACzCuM,GAAAA,EAAOC,OAAiB,SAAEgE,QAIpB,UAAZA,EACGjE,GAAAA,EAAOC,OAAiB,SAAEgE,IAGhC7Q,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,GAAM,WAAWzJ,UAC7BF,EAAAA,EAAAA,KAAC8S,EAAqB,CAACjC,QAASA,OAKrC7Q,EAAAA,EAAAA,KAAA,QAAMC,UAAW0J,GAAM,SAASzJ,SAAEwM,GAC7C,EAACjK,EACD0W,aAAe,SAAClX,EAA+BmX,GAC3C,IACMjT,EADQiT,EAAPF,IACWjX,GACZyK,EAAWvG,EAAiCyG,GAAAA,EAAOC,OAAe,OAAE1G,GAAjDyG,GAAAA,EAAOC,OAAOC,SACjCxL,EAAW6E,EAEX,WACI1D,EAAKnB,QAAQW,EAAKmX,EACtB,OAHA/Q,EAIN,OACIrI,EAAAA,EAAAA,KAAA,QACIC,UAAW0J,GAAM,QAAS,CAAC0P,UAAWzG,QAAQtR,KAC9CA,QAASA,EACTmL,MAAOnL,EAAU,gDAA6C+G,EAAUnI,SAEvEwM,GAGb,EAACjK,EAsCD6W,kBAAoB,SAACnT,GACjB1D,EAAKD,MAAM+W,yBAAyBpT,EACxC,EAAC1D,EAuDDnB,QAAU,SAACW,EAA+B+I,GACtC,IAAOmG,EAAiC1O,EAAKD,MAAtC2O,8BAEYqI,EACfxO,EADAkO,IAAMrI,QAGJA,EADYkI,GAAaS,QACWnR,EAAbmR,EAEvB7T,EAAuB,UAAf6T,EAAyB,aAAUnR,EAG7C8I,EADQ,WAARlP,GAA4B,YAARA,EACU,CAAC4O,QAAAA,EAASlL,MAAOA,GAAS1D,GACzC,WAARA,EACuB,CAAC4O,QAAAA,EAASG,QAAQ,GAElB,CAACH,QAAAA,EAAShP,KAAMI,EAAK0D,MAAAA,GAE3D,EAAClD,CAAC,CAnBD,OAmBAqD,EAAAA,EAAAA,GAAAkT,EAAA,EAAA/W,IAAA,aAAAkE,MAlKD,WACI,MAAO,EACX,GAAC,CAAAlE,IAAA,iBAAAkE,MAkDD,SAAAzE,GAQsC,IAPlCG,EAAIH,EAAJG,KACAN,EAAIG,EAAJH,KACAqX,EAASlX,EAATkX,UAMA,MAAO,CACHrX,KAAMqX,GAAarX,EACnBkL,MAAOlL,EACPwH,UAAU,EACV0Q,OAAQzT,KAAKmT,aAAaO,KAAK1T,KAAMnE,GACrC+R,MAAO,QACP+F,OAAQ3T,KAAK4T,aAAa/X,EAAMN,EAAMqX,GAE9C,GAAC,CAAA3W,IAAA,eAAAkE,MAED,SAAalE,EAA+BV,EAAcqX,GACtD,IAAAjS,EAAiDX,KAAKxD,MAA/CkU,EAAS/P,EAAT+P,UAAWmD,EAA2BlT,EAA3BkT,4BAClB7W,EAAwB0T,GAAa,CAAC,EAA/BnD,EAAMvQ,EAANuQ,OAAQuG,EAAK9W,EAAL8W,MACf,OACI9Z,EAAAA,EAAAA,KAAC+Z,GAAAA,EAAY,CACTxG,OAAQtR,EACRwK,MAAOlL,EACPyY,WAAYpB,GAAarX,EACzB0Y,OAAQ,SAAC1G,EAAQuG,GACbD,EAA4B,CAACtG,OAAAA,EAAQuG,MAAAA,GACzC,EACAA,MAAO7X,IAAQsR,EAASuG,EAAQ,GAChCI,eAAa,GAGzB,GAAC,CAAAjY,IAAA,SAAAkE,MAMD,WAAU,IAADE,EAAA,KACE8T,EAAkBnU,KAAKxD,MAAvB2X,eACD1G,EAAgD,CAClD,CACIlS,KAAM,UACNkY,OAAQzT,KAAKiT,cACblQ,UAAU,EACVqR,aAAc,SAAClB,GAAG,OAAKA,EAAIrI,OAAO,EAClC8I,OAAQ3T,KAAK4T,aAAa,UAAW,cACxCzP,QAAAlH,EAAAA,EAAAA,GAEEkX,EAAevF,KAAI,SAAChV,GAAI,OAAKyG,EAAKgU,eAAeza,EAAK,MAG7DsI,EAA8DlC,KAAKxD,MAA5D9C,EAAKwI,EAALxI,MAAO4a,EAAOpS,EAAPoS,QAASlO,EAAMlE,EAANkE,OAAQmO,EAAOrS,EAAPqS,QAASzC,EAAkB5P,EAAlB4P,mBAClC0C,EAAiBC,GAAAA,GAAUC,yBAAyBH,GAE1D,OACInZ,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,KAAQzJ,SAAA,EACpBkB,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,GAAM,kBAAkBzJ,SAAA,CACnCsa,IACGpZ,EAAAA,EAAAA,MAACuZ,GAAAA,EAAI,CACDC,KAAKC,EAAAA,GAAAA,GAAeL,EAAeM,YAAa,CAACC,UAAWR,IAC5DS,OAAO,SACP/a,UAAW0J,GAAM,mBAAmBzJ,SAAA,CAEnCsa,EAAe/N,OAAS,aAAa,KAACzM,EAAAA,EAAAA,KAACG,EAAAA,EAAI,CAACE,QAAQ,sBAG7DL,EAAAA,EAAAA,KAACib,GAAAA,EAAQ,CACLxO,MAAO,eACPC,QAAS,eACTwO,eAAgBpD,EAChBrR,SAAUT,KAAKsT,wBAGvBtZ,EAAAA,EAAAA,KAACmb,GAAAA,GAAW,CACR/O,OAAQA,EACRkO,QAASA,EACTtP,KAAMtL,EACN+T,QAASA,EACTlH,MAAO,WACP6O,SAAUvC,GACVwC,aAAcrV,KAAKqV,iBAInC,GAAC,CAAApZ,IAAA,eAAAkE,MAED,SAAa+S,GACT,OAAOvP,GAAM,MAAO,CAAC2R,QAASvC,GAAaG,EAAIrI,UACnD,KAACmI,CAAA,CAhJgB,CAASzQ,EAAAA,WA0LxBgT,GAAqB,CACvBpK,8BAAAA,EACA0I,4BLhFG,SAAqCnC,GACxC,MAAO,CACH7V,KAAMyO,EAAAA,GACNtF,KAAM,CAAC0M,iBAAAA,GAEf,EK4EI6B,yBL1EG,SAAkCzB,GACrC,MAAO,CACHjW,KAAMyO,EAAAA,GACNtF,KAAM,CAAC8M,mBAAAA,GAEf,GK0EA,UAFkB0D,EAAAA,EAAAA,KA1BM,SAAC7V,GACrB,IAAA8V,EAA0B9V,EAAM0P,WAAWC,WAApCgF,EAAOmB,EAAPnB,QAASlO,EAAMqP,EAANrP,OACVmO,GAAUmB,EAAAA,EAAAA,IAAW/V,GAErBjG,EAAQqY,GAAuBpS,GAC/B+Q,EAAYe,GAAoB9R,GAEhCwU,EAAiB/B,GAAiCzS,GAExD,MAAO,CACH2U,QAASA,EACTlO,OAAQA,EACRmO,QAAAA,EACA7a,MAAAA,EACAgX,UAAAA,EACAoB,mBAAoBD,GAAoBlS,GACxCwU,eAAAA,EAER,GAQ2CoB,GAE3C,CAAyBvC,I,8EChMnBzZ,IAAIC,EAAAA,EAAAA,GAAG,uBAEb,SAASmc,KACL,IAAM5I,GAAWC,EAAAA,EAAAA,MAEX4I,EAAWrT,EAAAA,aAAkB,WAC/BwK,GN1BG,SAACA,EAAU8I,GACd9I,EAAS,CAAClR,KAAMia,EAAAA,GAAkBC,UAElC,IAAMxB,GAAUmB,EAAAA,EAAAA,IAAWG,KAE3B,OAAOG,EAAAA,EACFjW,IAAG,iBAAAoE,OAAwCoQ,EAAO,gCAClD0B,MAAK,SAAAzb,GAAa,IAgFRkB,EAAEqP,EAAO5E,EAAU0K,EAChCqF,EACAC,EACAC,EAnFUpR,EAAIxK,EAAJwK,KACE4M,GA+EG7G,GAAFrP,EA/EwBsJ,EAAK4M,SA+E3B7G,MAAO5E,EAAKzK,EAALyK,MAAU0K,GAAQlI,EAAAA,EAAAA,GAAAjN,EAAAkN,GACxCsN,EAAgBvL,EAAaI,EAAO,SACpCoL,EAAgBhQ,GAASwE,EAAaxE,EAAO,SAC7CiQ,EAAmBzc,IAAKkX,EAAUlG,GAElC,GAANxG,QAAAlH,EAAAA,EAAAA,GAAWmZ,GAAgB,CAAED,EAAeD,KAnF1B3G,EAsFtB,SAAwBA,GACpB,OAAO5V,IAAK4V,GAAS,SAAC3V,GAClB,IAAMyc,EAAkBzc,EAAKqR,QAAU,UAAY,SAOnD,OANArR,EAAK+F,MAAQ/F,EAAK+F,MAAQ/F,EAAK+F,MAAQ0W,EACnCzc,EAAKuM,QACLvM,EAAK+F,MAAQ,SAGjB/F,EAAKoR,OAAS4B,QAAQhT,EAAKoR,QACpBpR,CACX,GACJ,CAjGgC0c,CAAetR,EAAKuK,SAMpC,OAJAxC,EAAS,CACLlR,KAAMia,EAAAA,GAAkBS,QACxBvR,KAAM,CAAC4M,QAAAA,EAASrC,QAAAA,KAEbvK,CACX,IAAE,OACK,SAACmB,GAKJ,OAJA4G,EAAS,CACLlR,KAAMia,EAAAA,GAAkBU,QACxBxR,KAAM,CAACmB,MAAAA,KAEJsQ,QAAQC,OAAOvQ,EAC1B,GACR,GMGA,GAAG,CAAC4G,IAIJ,OAFA4J,EAAAA,GAAAA,IAAWf,GAEJ,IACX,CAAC,IAIKgB,GAAU,SAAAnN,IAAApN,EAAAA,EAAAA,GAAAua,EAAAnN,GAAA,IAAAnN,GAAAC,EAAAA,EAAAA,GAAAqa,GAAA,SAAAA,IAAA,IAAAna,GAAAC,EAAAA,EAAAA,GAAA,KAAAka,GAAA,QAAA/S,EAAAC,UAAA5H,OAAA6H,EAAA,IAAAC,MAAAH,GAAAI,EAAA,EAAAA,EAAAJ,EAAAI,IAAAF,EAAAE,GAAAH,UAAAG,GAkGV,OAlGUxH,EAAAH,EAAAO,KAAAqH,MAAA5H,EAAA,OAAA6H,OAAAJ,KAyFZ8S,eAAiB,SAAC1W,GAAmB,IAAD2W,GAQhCC,EAP6Bta,EAAKD,MAA3Bua,oBAMK,QALLD,EACH,CACIE,OAAO,EACPC,MAAM,EACNC,IAAK,OACP/W,UAAM,IAAA2W,EAAAA,EAAI,MAEpB,EAACra,CAAC,CAmHD,OAnHAqD,EAAAA,EAAAA,GAAA8W,EAAA,EAAA3a,IAAA,gBAAAkE,MAjGD,WAAiB,IAADE,EAAA,KACZM,EAaIX,KAAKxD,MAZL6N,EAAU1J,EAAV0J,WACAD,EAAgBzJ,EAAhByJ,iBACAI,EAAa7J,EAAb6J,cACA2M,EAAkBxW,EAAlBwW,mBACA5M,EAAmB5J,EAAnB4J,oBACAG,EAAU/J,EAAV+J,WACA0M,EAAezW,EAAfyW,gBACA3M,EAAgB9J,EAAhB8J,iBACAW,EAAWzK,EAAXyK,YACAiM,EAAgB1W,EAAhB0W,iBACAC,EAAiB3W,EAAjB2W,kBACAjM,EAAY1K,EAAZ0K,aAGJ,OACIjQ,EAAAA,EAAAA,MAAA,OAAKnB,UAAWV,GAAE,WAAWW,SAAA,EACzBF,EAAAA,EAAAA,KAAA,OAAKC,UAAWV,GAAE,SAAU,CAACmU,SAAS,IAAOxT,UACzCF,EAAAA,EAAAA,KAACud,EAAAA,EAAM,CACH7W,UAAQ,EACRI,KAAK,IACLjF,KAAK,OAELsE,MAAOkK,EACPhC,SAAUmP,EAAAA,GACVlX,SAAU8J,EACV5J,YAAY,kBAJP6J,MAQbrQ,EAAAA,EAAAA,KAAA,OAAKC,UAAWV,GAAE,SAAU,CAACsR,SAAS,IAAO3Q,UACzCF,EAAAA,EAAAA,KAACyd,EAAAA,EAAM,CACHtX,MAAO,CAACqK,GACR9Q,MAAOyd,EACP1W,SAAU,SAACiX,GAAI,OAAKnN,EAAoBmN,EAAK,GAAG,EAChD1Q,MAAM,WACN2Q,MAAM,MACNC,YAAU,OAIlB5d,EAAAA,EAAAA,KAAA,OAAKC,UAAWV,GAAE,SAAU,CAACsC,MAAM,IAAO3B,UACtCF,EAAAA,EAAAA,KAACyd,EAAAA,EAAM,CACHtX,MAAO,CAACuK,GACRhR,MAAO0d,EACP3W,SAAU,SAACiX,GAAI,OAAKjN,EAAiBiN,EAAK,GAAG,EAC7C1Q,MAAM,QACN2Q,MAAM,MACNC,YAAU,OAIlB5d,EAAAA,EAAAA,KAAA,OAAKC,UAAWV,GAAE,SAAU,CAACoG,OAAO,IAAOzF,UACvCF,EAAAA,EAAAA,KAACyd,EAAAA,EAAM,CACHtX,MAAO,CAACiL,GACR1R,MAAO2d,EACP5W,SAAU,SAACiX,GAAI,OAAKJ,EAAkBI,EAAK,GAAG,EAC9C1Q,MAAM,SACN2Q,MAAM,MACNC,YAAU,OAIlB5d,EAAAA,EAAAA,KAAA,OAAKC,UAAWV,GAAE,SAAU,CAACyR,QAAQ,IAAO9Q,UACxCF,EAAAA,EAAAA,KAACyd,EAAAA,EAAM,CACHtX,MAAO,CAAC0O,OAAOxD,IACf3R,MAAOsG,KAAK6X,iBACZpX,SAAU,SAACiX,GAAI,OAAKrX,EAAKwW,eAAea,EAAK,GAAG,EAChD1Q,MAAM,UACN2Q,MAAM,MACNC,YAAU,QAK9B,GAAC,CAAA3b,IAAA,iBAAAkE,MAED,WAEI,OAD4BH,KAAKxD,MAA1Bsb,kBACkBlJ,KAAI,SAAApU,GAAuB,IAArB2F,EAAK3F,EAAL2F,MAAUuI,GAAIC,EAAAA,EAAAA,GAAAnO,EAAAoO,IACzC,OAAA/O,EAAAA,EAAAA,GAAA,CACIsG,MAAO0O,OAAO1O,IACXuI,EAEX,GACJ,GAAC,CAAAzM,IAAA,iBAAAkE,MAaD,WAAkB,IAAD4X,EAAA,KACb7V,EAAmClC,KAAKxD,MAAjC0N,EAAYhI,EAAZgI,aAAcC,EAAUjI,EAAViI,WAErB,OACInQ,EAAAA,EAAAA,KAACge,EAAAA,GAAM,CAACC,WAAYC,GAAAA,GAAche,SAC7B,SAAAwB,GAAA,IAAEyc,EAAQzc,EAARyc,SAAQ,OACP/c,EAAAA,EAAAA,MAAA,OAAKnB,UAAWV,GAAE,WAAY,CAAC6e,OAAQD,IAAWje,SAAA,CAC7C6d,EAAKM,iBAENre,EAAAA,EAAAA,KAACiQ,EAAS,CAACC,aAAcA,EAAcC,WAAYA,MACjD,GAItB,GAAC,CAAAlO,IAAA,sBAAAkE,MAED,WACI,IAAA0C,EAAkE7C,KAAKxD,MAAhE+N,EAAmB1H,EAAnB0H,oBAAqBH,EAAgBvH,EAAhBuH,iBAAkBK,EAAgB5H,EAAhB4H,iBAoD9C,MAlDwE,CACpEqD,WAAY,SAAClU,GAAI,OAAKI,EAAAA,EAAAA,KAACse,GAAAA,GAAY,CAACnY,MAAOvG,EAAKkU,YAAc,EAC9DjS,KAAM,SAACjC,GAAI,OACPI,EAAAA,EAAAA,KAACue,GAAAA,GAAW,CACR3Q,KAAMhO,EAAKiC,KACXP,QAAS,kBAAMmP,EAAiB7Q,EAAKiC,KAAK,EAC1CgL,OAAQA,EAAAA,EAAO2R,eACjB,EAENrS,MAAO,SAACvM,GAAI,OAAK6e,EAAAA,GAAAA,IAAmB7e,EAAKuM,MAAM,EAC/CuH,QAAS,SAAC9T,GACN,OACII,EAAAA,EAAAA,KAAC0e,GAAAA,EAAI,CACDhL,QAAS9T,EAAK8T,QACdpS,QAAS,kBAAM8O,EAAiBxQ,EAAK8T,QAAQ,EAC7CiL,SAAO,GAGnB,EACAhZ,MAAO,SAAC/F,GAAI,OAAKI,EAAAA,EAAAA,KAAC4e,GAAAA,GAAe,CAACjZ,MAAO/F,EAAK+F,OAAS,EACvDqL,OAAQ,SAACpR,GAAI,OAAKI,EAAAA,EAAAA,KAAC6e,GAAAA,GAAgB,CAAC7N,OAAQpR,EAAKoR,QAAU,EAC3D8N,eAAgB5T,GAAAA,GAAUnF,IAAI,cAAc+Y,eAC5CC,KAAM7T,GAAAA,GAAUnF,IAAI,cAAcgZ,KAClCC,OAAQ9T,GAAAA,GAAUnF,IAAI,cAAciZ,OACpCnO,QAAO,SAACjR,GACJ,IAAMiR,EAAUjR,EAAKiR,QACfoO,EAA6B,UAAZpO,EAIvB,OAAIoO,GAH+B,UAAZpO,GAKfzP,EAAAA,EAAAA,MAACkR,EAAAA,EAAa,CACVC,MAAM,UACNjR,QANQ,WAAH,OAASiP,EAAoBM,EAAS,EAO3C5Q,WAAWT,EAAAA,EAAAA,GAAG,iBAAHA,CAAqB,YAE5B,CAACqR,QAAqB,UAAZA,EAAsB,aAAUxI,GAC1C,wCACFnI,SAAA,CAED+e,IAAkBjf,EAAAA,EAAAA,KAACG,EAAAA,EAAI,CAACE,QAAQ,yBAChCwM,EAAAA,EAAOqS,eAAerO,OAIxB7Q,EAAAA,EAAAA,KAAC8S,EAAqB,CAACjC,QAASA,GAE/C,EAGR,GAAC,CAAA5O,IAAA,SAAAkE,MAED,WACI,IAAAgZ,EAAmCnZ,KAAKxD,MAAjC+S,EAAO4J,EAAP5J,QAAS+E,EAAO6E,EAAP7E,QAASlO,EAAM+S,EAAN/S,OACnBgT,EAAiB9E,IAAYlO,EAEnCiT,EAAyBrZ,KAAKxD,MAAvB2J,EAAKkT,EAALlT,MAAUuC,GAAIC,EAAAA,EAAAA,GAAA0Q,EAAAnJ,IAErB,OACI9U,EAAAA,EAAAA,MAACke,EAAAA,EAAa,CAAApf,SAAA,EACVF,EAAAA,EAAAA,KAAC2b,GAAiB,KAClB3b,EAAAA,EAAAA,KAACkM,EAAAA,GAAerM,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAK6O,GAAI,IAAEvC,MAAOyG,QAAQzG,GAAQE,UAAWF,EAAMjM,UAC/DkB,EAAAA,EAAAA,MAAA,OAAKnB,UAAWV,KAAIW,SAAA,EAChBF,EAAAA,EAAAA,KAACuf,EAAAA,EAAkB,CACfhe,KAAK,UACLtB,UAAWV,GAAE,WACbigB,WAAW,EACX1Y,KAAM2Y,GAAAA,GAAoBvf,UAE1BF,EAAAA,EAAAA,KAACgZ,GAAe,OAGpBhZ,EAAAA,EAAAA,KAAC0f,EAAAA,GAAe,CAAAxf,UACZkB,EAAAA,EAAAA,MAACme,EAAAA,EAAkB,CACfhe,KAAK,UACLtB,UAAWV,GAAE,WACbigB,WAAW,EACX1Y,KAAM2Y,GAAAA,GAAoBvf,SAAA,CAEzB8F,KAAK2Z,kBAEN3f,EAAAA,EAAAA,KAAC4f,EAAAA,GAAa/f,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACNoU,IAAiB,IACrB4L,UAAWT,EACX1f,MAAO6V,EACPrK,UAAWlF,KAAK8Z,sCAQhD,KAAClD,CAAA,CArNW,CAASrU,EAAAA,WAiQnBgT,GAAqB,CACvBnL,iBAAAA,EACAG,oBAAAA,EACAE,iBAAAA,EACA6M,kBNzPG,SAA2BlM,GAC9B,MAAO,CACHvP,KAAMyO,EAAAA,GACNtF,KAAM,CAACoG,YAAAA,GAEf,EMqPI2L,mBNnPG,SAA4B1L,GAC/B,MAAO,CACHxP,KAAMyO,EAAAA,GACNtF,KAAM,CAACqG,aAAcA,IAAgB,GAE7C,GMmPA,UAFkBmK,EAAAA,EAAAA,KAjDM,SAAC7V,GACrB,IAAA8V,EAUI9V,EAAM0P,WAAWC,WATjBgF,EAAOmB,EAAPnB,QACAlO,EAAMqP,EAANrP,OACAD,EAAKsP,EAALtP,MACAkE,EAAUoL,EAAVpL,WACAG,EAAaiL,EAAbjL,cACAE,EAAU+K,EAAV/K,WACAU,EAAWqK,EAAXrK,YACAC,EAAYoK,EAAZpK,aACS0O,EAAUtE,EAAnBlG,QAGEA,EAAUiB,GAAkB7Q,GAC5BwX,EAAqB9F,GAAsB1R,GAC3CyX,EAAkB9F,GAAmB3R,GACrC0X,EAAmB9F,GAAqB5R,GACxCmY,EAAoBtG,GAAqB7R,GAK/C,MAAO,CACH2U,QAAAA,EACAlO,OAAAA,EACAD,MAAAA,EACAoJ,QAAAA,EACArF,aARiBqF,EAAQrT,OASzBiO,WARe4P,EAAW7d,OAS1BmO,WAAAA,EACAG,cAAAA,EACAE,WAAAA,EACAU,YAAAA,EACAC,aAAAA,EACA8L,mBAAAA,EACAC,gBAAAA,EACAC,iBAAAA,EACAS,kBAAAA,EAER,GAU2CvC,GAE3C,CAAyBqB,I,sFC7TnBoD,GAAY,SAAAvQ,IAAApN,EAAAA,EAAAA,GAAA2d,EAAAvQ,GAAA,IAAAnN,GAAAC,EAAAA,EAAAA,GAAAyd,GAAA,SAAAA,IAAA,IAAAvd,GAAAC,EAAAA,EAAAA,GAAA,KAAAsd,GAAA,QAAAnW,EAAAC,UAAA5H,OAAA6H,EAAA,IAAAC,MAAAH,GAAAI,EAAA,EAAAA,EAAAJ,EAAAI,IAAAF,EAAAE,GAAAH,UAAAG,GAsBZ,OAtBYxH,EAAAH,EAAAO,KAAAqH,MAAA5H,EAAA,OAAA6H,OAAAJ,KAgBdkW,gBAAkB,WACd,IAAAtZ,EAAsBlE,EAAKD,MAApB0d,EAAKvZ,EAALuZ,MAAOre,EAAI8E,EAAJ9E,KACdY,EAAKD,MAAM2d,oBAAoB,CAC3BzM,QAASwM,EAAME,KACfC,UAAWxe,IAASye,GAAAA,GAAWC,KAAO,aAAe,aAE7D,EAAC9d,CAAC,CAiBD,OAjBAqD,EAAAA,EAAAA,GAAAka,EAAA,EAAA/d,IAAA,eAAA8D,IArBD,WAGI,MAAO,CACHwF,UAAW,SACXmB,QAJY1G,KAAKxD,MAAd0d,MAIYlP,OAAS,cAAgB,YAEhD,GAAC,CAAA/O,IAAA,WAAA8D,IAED,WAGI,OAFeC,KAAKxD,MAAbX,OAESye,GAAAA,GAAWC,KAAO,qBAAuB,mBAC7D,GAAC,CAAAte,IAAA,SAAAkE,MAUD,WACI,IAAO+Z,EAASla,KAAKxD,MAAd0d,MAEP,OACI9e,EAAAA,EAAAA,MAACmH,EAAAA,SAAc,CAAArI,SAAA,EACXF,EAAAA,EAAAA,KAACwgB,GAAAA,EAAyB,CACtB/T,MAAOyT,EAAME,KACbK,KAAI,GAAAtW,OAAKnE,KAAK0a,SAAQ,KAAAvW,OAAI+V,EAAME,MAChCO,aAAW,KAEf3gB,EAAAA,EAAAA,KAACgH,GAAAA,EAAM,CAAC1F,QAAS0E,KAAKia,gBAAiBvN,KAAK,iBAAiB5L,KAAK,IAAI6Z,aAAW,EAAAzgB,UAC7EF,EAAAA,EAAAA,KAACG,EAAAA,EAAI,CAACC,KAAK,UAAUC,QAAQ,eAI7C,KAAC2f,CAAA,CAvCa,CAASzX,EAAAA,WA0CrBgT,GAAqB,CACvB4E,oBAAAA,GAAAA,IAKJ,UAFkB3E,EAAAA,EAAAA,IAAQ,KAAMD,GAEhC,CAAyByE,I,mDCrDzB,SAASY,GAAuBpgB,GAA6C,IAADqgB,EAAArgB,EAA1CsgB,SAAAA,OAAQ,IAAAD,EAAG,CAAC,EAACA,EAC3C,OAAOjb,OAAO6S,KAAKqI,GAAUlM,KAAI,SAAC3S,GAC9B,IAAA8e,EAA8BD,EAAS7e,GAAhCJ,EAAIkf,EAAJlf,KAAMmf,EAAID,EAAJC,KAAMC,EAAOF,EAAPE,QACnB,OACI7f,EAAAA,EAAAA,MAAA,OAAAlB,SAAA,EACIF,EAAAA,EAAAA,KAACsN,GAAAA,GAAI,CAAApN,UACDF,EAAAA,EAAAA,KAACkhB,GAAAA,EAAK,CAAC3U,MAAM,SAAS1K,KAAK,OAAO+L,KAAMf,EAAAA,EAAO2R,cAAc3c,OAEhE,QACDT,EAAAA,EAAAA,MAACkM,GAAAA,GAAI,CAAApN,SAAA,EACDF,EAAAA,EAAAA,KAACmhB,GAAAA,EAAW,CAACtf,KAAK,OAAON,KAAMyf,IAC9B,MACDhhB,EAAAA,EAAAA,KAACyN,GAAAA,GAAY,CAAAvN,SAAE+gB,SARbhf,EAYlB,GACJ,CAEO,IAAMmf,GAAsB7Y,EAAAA,KAAWqY,I,wBCoBxCjX,IAAQnK,EAAAA,EAAAA,GAAG,cAEJ6hB,GAAS,SAAAjf,IAAAC,EAAAA,EAAAA,GAAAgf,EAAAjf,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAA8e,GAAA,SAAAA,IAAA,OAAA3e,EAAAA,EAAAA,GAAA,KAAA2e,GAAA/e,EAAA4H,MAAA,KAAAJ,UAAA,CAqHjB,OArHiBhE,EAAAA,EAAAA,GAAAub,EAAA,EAAApf,IAAA,uBAAAkE,MAwBlB,WACIH,KAAKxD,MAAM8e,aACf,GAAC,CAAArf,IAAA,YAAAkE,MAED,WACI,IAAOob,EAAiBvb,KAAKxD,MAAtB+e,cACPC,EAA6Bxb,KAAKxD,MAAM0d,MAAjCE,EAAIoB,EAAJpB,KAAMqB,EAAYD,EAAZC,aACb,OAAOhH,GAAAA,GAAUiH,4BAA4B,CAACtB,KAAAA,EAAMqB,aAAAA,EAAcF,cAAAA,GACtE,GAAC,CAAAtf,IAAA,gBAAAkE,MAED,WACI,IAAAwb,EAUI3b,KAAKxD,MAAM0d,MATXva,EAAKgc,EAALhc,MACAqL,EAAM2Q,EAAN3Q,OACA4Q,EAAUD,EAAVC,WACAC,EAAIF,EAAJE,KACAC,EAAWH,EAAXG,YACAC,EAAWJ,EAAXI,YACAlR,EAAO8Q,EAAP9Q,QACAmR,EAASL,EAATK,UACAC,EAAmBN,EAAnBM,oBAGJ,OACIjiB,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,QACLkE,OAAOnG,EAAAA,EAAAA,KAAC4e,GAAAA,GAAe,CAACjZ,MAAOA,KAEnC,CACI1D,IAAK,OACLkE,OAAOnG,EAAAA,EAAAA,KAACmiB,GAAAA,GAAc,CAACN,KAAMA,KAEjC,CACI5f,IAAK,SACLkE,OACInG,EAAAA,EAAAA,KAACkhB,GAAAA,EAAK,CACFtT,KAAMgU,GAAc,OACpBrV,MAAOqV,EAAa,UAAY,SAChC/f,KAAK,SAGbugB,QAASxP,QAAQ5B,IAErB,CACI/O,IAAK,cACLkE,OAAOnG,EAAAA,EAAAA,KAACohB,GAAmB,CAACN,SAAUmB,IACtCG,SAAUlN,KAAS+M,IAEvB,CACIhgB,IAAK,UACLkE,MAAO0K,GAEX,CACI5O,IAAK,eACLkE,MAAO2b,EACPM,QAASxP,QAAQkP,IAErB,CACI7f,IAAK,eACLkE,MAAO4b,EACPK,QAASxP,QAAQmP,IAErB,CACI9f,IAAK,aACLkE,MAAOyG,GAAAA,EAAOC,OAAiB,SAAEmV,GACjCI,QAASxP,QAAQoP,MAKrC,GAAC,CAAA/f,IAAA,SAAAkE,MAED,WACI,IAAAQ,EAA6BX,KAAKxD,MAA3B0d,EAAKvZ,EAALuZ,MAAOoB,EAAW3a,EAAX2a,YAEd,OACIpB,IACI9e,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,KAAQzJ,SAAA,EACpBkB,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,GAAM,UAAUzJ,SAAA,EAC5BF,EAAAA,EAAAA,KAAA,MAAIC,UAAW0J,GAAM,SAASzJ,SAAEggB,EAAME,QAEtCpgB,EAAAA,EAAAA,KAACgH,GAAAA,EAAM,CAAC0L,KAAK,iBAAiB5L,KAAK,IAAIxF,QAASggB,EAAYphB,UACxDF,EAAAA,EAAAA,KAACG,EAAAA,EAAI,CAACE,QAAQ,QAAQD,KAAM,eAInC4F,KAAKqc,YACLrc,KAAKsc,kBAItB,KAACjB,CAAA,CArHiB,CAASnY,EAAAA,WAAlBmY,GACFkB,WAAanZ,KAAAA,MAAgB,CAChCwY,WAAYxY,KAAAA,OAAiBC,WAC7BmZ,eAAgBpZ,KAAAA,OAAiBC,WACjCwY,KAAMzY,KAAAA,OAAiBC,WACvB1D,MAAOyD,KAAAA,OAAiBC,WACxB+W,KAAMhX,KAAAA,OAAiBC,WACvB9H,KAAM6H,KAAAA,OAAiBC,WACvBoY,aAAcrY,KAAAA,OACd4H,OAAQ5H,KAAAA,KAAeC,WAEvB2Y,UAAW5Y,KAAAA,OACX0Y,YAAa1Y,KAAAA,OACb2Y,YAAa3Y,KAAAA,SA2GrB,IAOMqZ,IAAYjH,EAAAA,EAAAA,KAPM,SAAC7V,GACrB,MAAO,CACH4U,SAASmB,EAAAA,EAAAA,IAAW/V,GACpB4b,eAAemB,EAAAA,EAAAA,IAAwB/c,GAE/C,IAIA,UAAegd,EAAAA,GAAAA,IAAQF,GAAWlT,GAAAA,EAAlC,CAA6C8R,I,kDCtLhCuB,GAA0B,CACnCxC,KAAM,CACFra,IAAG,SAACma,GACA,OAAOA,EAAME,IACjB,EACApb,MAAM,EACN4O,MAAO,QAEXjO,MAAO,CACHI,IAAG,SAACma,GACA,OAAOA,EAAMva,KACjB,EACAX,MAAM,EACN4O,MAAO,UAEXiO,KAAM,CACF9b,IAAG,SAACma,GACA,OAAOA,EAAM2B,IACjB,EACA7c,MAAM,EACN4O,MAAO,QAEX/C,QAAS,CACL9K,IAAG,SAACma,GACA,OAAOA,EAAMrP,OACjB,EACA7L,MAAM,EACN4O,MAAO,QAEX5C,OAAQ,CACJjL,IAAG,SAACma,GACA,OAAOtN,QAAQsN,EAAMlP,OACzB,EACAhM,MAAM,EACNG,QAAS,IACTyO,MAAO,SACPC,aAAc,CAACtI,UAAW,SAAUmB,QAAS,WAEjDmW,aAAc,CACV9c,IAAG,SAACma,GACA,OAAOA,EAAM4B,WACjB,EACA9c,MAAM,EACN4O,MAAO,SAEXkP,WAAY,CACR/c,IAAG,SAACma,GACA,OAAOA,EAAM8B,SACjB,EACAhd,MAAM,EACN4O,MAAO,SAEXmP,aAAc,CACVhd,IAAG,SAACma,GACA,OAAOA,EAAM6B,WACjB,EACA/c,MAAM,EACN4O,MAAO,SAEX7G,QAAS,CACLhH,IAAG,SAACma,GACA,OAAOA,EAAME,IACjB,EACApb,MAAM,EACNG,QAAS,GACTyO,MAAO,U,kBCtDTS,GAAiB,SAACC,EAASrS,GAC7B,IAAMvC,EAAQkN,GAAAA,EAAOoW,YAAYC,YAAY3O,EAASrS,GAEtD,OAAOtC,IAAKD,GAAO,SAAC8U,EAAO5U,GAAI,MAAM,CACjCgO,KAAMhB,GAAAA,EAAOC,OAAuB,eAAEjN,GACtCuG,MAAOvG,EACP4U,MAAAA,EACH,GACL,EAEMM,GAAiB,SAACC,EAAUlR,EAAcwM,EAAY6S,GACxD,IAAIxjB,EAAQqV,EAYZ,MAVmB,KAAf1E,GAAsC,QAAjB6S,IACrBxjB,EAAQmE,GASN,CANkB,CACpB+J,KAAM,MACNzH,MAAO,MACPqO,MAAOW,KAAOzV,GAAO,SAACE,GAAI,OAAKA,EAAK4U,KAAK,MAGtBrK,QAAAlH,EAAAA,EAAAA,GAAKvD,GAChC,EAEMyjB,GAAa,SAACxd,GAAK,OAAKA,EAAM0P,WAAWf,QAAQA,QAAQA,OAAQ,EACjEkB,GAAgB,SAAC7P,GAAK,OAAKA,EAAM0P,WAAWf,QAAQA,QAAQjE,UAAW,EACvE+S,GAAiB,SAACzd,GAAK,OAAKA,EAAM0P,WAAWf,QAAQA,QAAQlD,WAAY,EACzEiS,GAAgB,SAAC1d,GAAK,OAAKA,EAAM0P,WAAWf,QAAQA,QAAQgP,UAAW,EAIvEC,IAAmB7N,EAAAA,GAAAA,IACrB,CAACF,GAAe4N,GAAgBC,GAJZ,SAAC1d,GAAK,OAAKA,EAAM0P,WAAWf,QAAQA,QAAQjD,YAAa,IAK7E,SAAChB,EAAYe,EAAakS,EAAYjS,GAClC,MAAO,CAAChB,WAAAA,EAAYe,YAAAA,EAAakS,WAAAA,EAAYjS,aAAAA,EACjD,IAGEmS,IAAqB9N,EAAAA,GAAAA,IACvB,CAACyN,GAAYI,KACb,SAACjP,EAASmP,GACN,OAAOC,GAAcpP,EAASmP,EAClC,IAGJ,SAASC,GAAcpP,EAAO9T,GAAwD,IAArD6P,EAAU7P,EAAV6P,WAAYe,EAAW5Q,EAAX4Q,YAAakS,EAAU9iB,EAAV8iB,WAAYjS,EAAY7Q,EAAZ6Q,aAC5DsS,EAAsC,SAAjBtS,EACrBuS,EAAaC,KAAS,CACxBxT,EAAa,SAAA3O,GAAA,IAAE0e,EAAI1e,EAAJ0e,KAAI,OAAMA,aAAI,EAAJA,EAAMzK,cAAcC,SAASvF,EAAW,OAAGhI,EACpE+I,GAA+B,QAAhBA,EAAwB,SAAApO,GAAO,OAAAA,EAAL2C,QAAqByL,CAAW,OAAG/I,EAC5Eib,GAA6B,QAAfA,EAAuB,SAAAjgB,GAAM,OAAAA,EAAJwe,OAAmByB,CAAU,OAAGjb,EACtD,QAAjBgJ,EAAyB,SAAA3N,GAAQ,OAAAA,EAANsN,SAAuB2S,CAAkB,OAAGtb,IAE3E,OAAOub,EAAW1hB,OAAS+E,IAAQqN,EAASwP,GAAAA,YAAW5Z,WAAC,GAADjH,EAAAA,EAAAA,GAAI2gB,KAAetP,CAC9E,CAEA,IAAMyP,IAAcrO,EAAAA,GAAAA,IAAe,CAACyN,KAAa,SAACjD,GAAK,OAAK7L,GAAe6L,EAAO,OAAO,IAEnF8D,IAAkBtO,EAAAA,GAAAA,IACpB,CAACyN,GAAYI,KACb,SACIjP,EAAO1Q,GAGOA,EAAV0f,WAGL,IACOW,EAAWP,GAAcpP,GAHpB3F,EAAAA,EAAAA,GAAA/K,EAAAgL,KAIX,OAAOyF,GAAe4P,EAAU,OACpC,IAGElN,IAAerB,EAAAA,GAAAA,IAAe,CAACyN,KAAa,SAACjD,GAAK,OAAK7L,GAAe6L,EAAO,QAAQ,IAErF/I,IAAmBzB,EAAAA,GAAAA,IAAe,CAACyN,KAAa,SAACjD,GAAK,OAAK7L,GAAe6L,EAAO,QAAQ,IAElFgE,IAAoBxO,EAAAA,GAAAA,IAC7B,CAAC8N,GAjDgB,SAAC7d,GAAK,OAAKA,EAAM8Q,OAAO0N,GAAAA,GAA6B,IAkDtE,SAAC7P,EAASoC,GAAS,OAAK9J,GAAAA,EAAO+J,MAAM3R,KAAKsP,EAASoC,EAAWkM,GAAwB,IAG7EwB,IAAW1O,EAAAA,GAAAA,IACpB,CAACqO,GAAaC,GAAiBxO,GAAe4N,IAC9CtO,IAGSuP,IAAY3O,EAAAA,GAAAA,IACrB,CAACqB,GAAcI,GAAkB3B,GAAe6N,IAChDvO,I,oHCzEEnL,IAAQnK,EAAAA,EAAAA,GAAG,0BAOV,SAAS8kB,KACZ,IAAMvR,GAAWwR,EAAAA,GAAAA,KACjB1V,EAA0BtG,EAAAA,WAAqCuG,GAAAjK,EAAAA,EAAAA,GAAAgK,EAAA,GAAxD1C,EAAK2C,EAAA,GAAE0V,EAAQ1V,EAAA,GAEhB2V,GAAgBC,EAAAA,EAAAA,IAAYC,GAAAA,IAClCC,GAA6CF,EAAAA,EAAAA,IAAYG,GAAAA,IAAlDnR,EAAOkR,EAAPlR,QAAS2M,EAASuE,EAATvE,UAAWyE,EAAcF,EAAdE,eAErBC,EACY,iBAAd1E,EACM,CACI,MACA,yBACA,yBACA,uBACA,gBAEJ,CAAC,OAEL2E,EAA+B,iBAAd3E,EACjB4E,EAAgC,iBAAd5E,EAExB,OAAO3M,GACH1T,EAAAA,EAAAA,KAACklB,GAAAA,GAAU,CACP9C,SAAO,EACP+C,YAAa,CACT1Y,OACIzM,EAAAA,EAAAA,KAAAolB,EAAAA,SAAA,CAAAllB,UACIF,EAAAA,EAAAA,KAAC0e,GAAAA,EAAI,CAACC,SAAO,EAAC0G,QAAQrlB,EAAAA,EAAAA,KAAAolB,EAAAA,SAAA,CAAAllB,SAAE,WAAgBwT,QAASA,OAI7D+Q,cAAeA,EACfjZ,QAAS,kBAAMuH,GAASuS,EAAAA,GAAAA,MAA4B,EACpDC,MAAK,eAAA/kB,GAAAglB,EAAAA,GAAAA,GAAAC,KAAAA,MAAE,SAAAC,EAAOC,GAAI,IAAAC,EAAAC,EAAAC,EAAAC,EAAArX,EAAAsX,EAAAC,EAAApE,EAAA,OAAA4D,KAAAA,MAAA,SAAAS,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAAAR,EAGVD,EAAK9J,WAAUgK,EAAAD,EADfS,OAASP,EAAMD,EAANC,OAAcC,EAAOF,EAAbhE,KAAkBnT,GAAIC,EAAAA,EAAAA,GAAAkX,EAAAjX,IAGrCoX,EAAOhe,IACT0G,GACA,SAACzG,EAAKrI,EAAM0mB,GAAO,IAADC,EACR1kB,EAAOykB,EACb5kB,EAA8C,QAA9C6kB,EAAyB9B,aAAa,EAAbA,EAAgB5iB,UAAK,IAAA0kB,EAAAA,EAAI,CAAC,EAA5C5gB,EAAKjE,EAALiE,MAAOsb,EAAOvf,EAAPuf,QAOd,OALIrO,QAAQjN,KAAWiN,QAAQhT,aAAI,EAAJA,EAAM+F,QAChC/F,SAAAA,EAAMqhB,SAAWA,KAAYrhB,aAAI,EAAJA,EAAMqhB,YAEpChZ,EAAIpG,GAAQjC,GAETqI,CACX,GACA,CAAC,GAGCge,EAAaje,IACf8d,GACA,SAAC7d,EAAKrI,EAAMkW,GAAO,IAAD0Q,EACRvkB,EAAM6T,EAIZ,OAH6B,QAAzB0Q,EAAA/B,EAAcqB,OAAO7jB,UAAI,IAAAukB,OAAA,EAAzBA,EAA2BrgB,UAAUvG,aAAI,EAAJA,EAAMuG,SAC3C8B,EAAIhG,GAAOrC,aAAI,EAAJA,EAAMuG,OAEd8B,CACX,GACA,CAAC,GAGC4Z,EAAO4C,EAAc5C,KAAKA,OAASkE,EAAQlE,KAAOkE,EAAQlE,UAAOxZ,EAEvE,IACI0K,GAAS0T,EAAAA,GAAAA,IAAiB/S,EAAS2M,EAAW2F,EAAMC,EAAYpE,GACpE,CAAE,MAAOxS,GACLmV,EAASnV,EACb,CAAC,wBAAA6W,EAAAQ,OAAA,GAAAhB,EAAA,KACJ,gBAAAiB,GAAA,OAAAnmB,EAAA0J,MAAA,KAAAJ,UAAA,EAxCI,GAyCL8c,OAAM,GAAAzc,QAAAlH,EAAAA,EAAAA,GACCtD,IAAKolB,GAAyB,SAACxjB,GAC9B,IAAMkL,EAAQlL,EAAKslB,MAAM,YAAY,GACrC,MAAO,CACHtlB,KAAAA,EACAM,KAAM,MACN4K,MAAOI,EAAAA,EAAO2R,cAAc/R,QAAAA,EAASlL,GACrCqlB,OAAO,GAADzc,QAAAlH,EAAAA,EAAAA,GAAM6jB,GAAsBvlB,KAAK0B,EAAAA,EAAAA,IAAK8jB,EAAAA,GAAAA,GAAgB,CAAC5a,MAErE,MAAElJ,EAAAA,EAAAA,GACG+hB,EAEC,CACI,CACIzjB,KAAM,SACNM,KAAM,MACN4K,MAAO,SACPma,OAAO,CACHI,GAAuB,MAAOlC,GAC9BkC,GAAuB,MAAOlC,GAC9BkC,GAAuB,UAAWlC,GAClCkC,GAAuB,oBAAqBlC,GAC5CkC,GAAuB,wBAAyBlC,GAChDkC,GAAuB,gBAAiBlC,GACxCkC,GAAuB,eAAgBlC,GACvCkC,GAAuB,mBAAoBlC,GAC3CkC,GAAuB,aAAclC,GACrCkC,GAAuB,gBAAiBlC,GACxCkC,GAAuB,cAAelC,IAAe3a,QAAAlH,EAAAA,EAAAA,IAClD8jB,EAAAA,GAAAA,GAAgB,CAAC5a,QAlBhC,KAqBClJ,EAAAA,EAAAA,GACFgiB,EAEC,CACI,CACI1jB,KAAM,OACNM,KAAM,MACN4K,MAAO,OACPma,OAAQ,CACJ,CACIrlB,KAAM,OACNM,KAAM,OACNsD,QAAS,WAVzB,OAiBd,IACR,CAEA,SAAS2hB,GAAsBjlB,GAAyD,IAArBolB,IAAWnd,UAAA5H,OAAA,QAAAmG,IAAAyB,UAAA,KAAAA,UAAA,GAC1E,MAAM,CACF,CACIvI,KAAM,QACNM,KAAM,QACNsD,QAAS,QACT+hB,OAAQC,GAAgBtlB,IAE5B,CACIN,KAAM,UACNM,KAAM,WACNsD,QAAS,UACT+hB,OAAQ,SAACb,GAAwB,IAADe,EAC5B,OAAmB,QAAZA,EAAAf,EAAOxkB,UAAK,IAAAulB,GAAZA,EAAczhB,MAAQ,CAAC,EAAI,CAAC3E,UAAU,EACjD,IACHmJ,QAAAlH,EAAAA,EAAAA,GACGgkB,EACE,CACI,CACI1lB,KAAM,gBACNM,KAAM,WACNsD,QAAS,uBACT+hB,OAAQ,CACJlmB,UAAU,KAItB,IAEd,CAEA,SAASmmB,GAAgBtlB,GAAqC,IAADwlB,EAKzDrkB,EAA6E,QAA7EqkB,EAJ+D,CAC3DC,IAAK,CAAC,UAAW,UACjBC,aAAc,CAAC,UAAW,mBAE0C1lB,UAAK,IAAAwlB,EAAAA,EAAI,GAAEhkB,GAAAwB,EAAAA,EAAAA,GAAA7B,EAAA,GAAAwkB,EAAAnkB,EAAA,GAA5EokB,OAAW,IAAAD,EAAG,UAASA,EAAAE,EAAArkB,EAAA,GAC9B,MAAO,CACHskB,QAAS,CACL,CAACxhB,MAAO,GAAI6G,MAAOya,GACnB,CAACthB,MAAO,cAAe6G,WAJiB,IAAA0a,EAAG,WAAUA,IAOjE,CAEA,SAASV,GACLzlB,EACAqmB,GACD,IAADC,EAAAC,EAkBQH,EAAuB,QAAhBE,EAjBuE,CAChFE,IAAK,CAAC5iB,QAAS,OACf6iB,IAAK,CAAC7iB,QAAS,OACf8iB,YAAa,CACTpb,OAAQ,SAEZqb,cAAe,CACXrb,OAAQ,SAEZsb,iBAAkB,CACdtb,OAAQ,SAEZub,sBAAuB,CACnBvb,OAAQ,UAIQtL,UAAK,IAAAsmB,EAAAA,EAAI,CAAC,EAElC,MAAO,CACHhmB,KAAM,SACNN,KAAAA,EACA4D,SAASwiB,aAAO,EAAPA,EAASxiB,UAAW0H,EAAAA,EAAO2R,cAAcjd,GAClD2lB,OAAQ,CACJra,OAAuB,QAAjBib,EAAEH,aAAO,EAAPA,EAAS9a,cAAM,IAAAib,EAAAA,EAAK,SAC5BO,kBAAkB,EAClBC,aAAcV,aAAQ,EAARA,EAAWrmB,GACzBgnB,sBAAuB5e,GAAM,iBAC7B6e,qBAAsB,WAGlC,CCtMA,IAAM7e,IAAQnK,EAAAA,EAAAA,GAAG,sBAEjB,SAASipB,GAAcjoB,GAAU,IAARqB,EAAIrB,EAAJqB,KACfkR,GAAWC,EAAAA,EAAAA,MAEjB0V,EAA+BngB,EAAAA,SAAc,WACzC,MAAO,CACHqT,SAAU,kBAAM7I,GAASoQ,EAAAA,GAAAA,IAAWthB,GAAM,EAC1C8mB,WAAY,kBAAM5V,GAAS6V,EAAAA,GAAAA,MAAkB,EAErD,GAAG,CAAC7V,EAAUlR,IALP+Z,EAAQ8M,EAAR9M,SAAU+M,EAAUD,EAAVC,WASjB,OAFAhM,EAAAA,GAAAA,IAAWf,EAAU,CAAC+M,WAAAA,IAEf,IACX,CAEO,IAAME,GAAO,SAAAzmB,IAAAC,EAAAA,EAAAA,GAAAwmB,EAAAzmB,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAAsmB,GAAA,SAAAA,IAAA,IAAApmB,GAAAC,EAAAA,EAAAA,GAAA,KAAAmmB,GAAA,QAAAhf,EAAAC,UAAA5H,OAAA6H,EAAA,IAAAC,MAAAH,GAAAI,EAAA,EAAAA,EAAAJ,EAAAI,IAAAF,EAAAE,GAAAH,UAAAG,GAgKd,OAhKcxH,EAAAH,EAAAO,KAAAqH,MAAA5H,EAAA,OAAA6H,OAAAJ,KAwChBpE,MAAQ,CACJmjB,YAAa,MAChBrmB,EAyGD6Q,gBAAkB,SAAC4M,EAAOle,GACtB,IAAA2E,EAAqClE,EAAKD,MAAnC8R,EAAO3N,EAAP2N,QAASyU,EAAiBpiB,EAAjBoiB,kBACVC,EAAiB,CAACrf,GAAM,cAAeA,GAAM,cAC7Cmf,EAAcxU,EAAQtS,GAE5BS,EAAK8C,SAAS,CAACujB,YAAAA,IACfC,EAAkBE,GAAAA,GAAYD,EAClC,EAACvmB,EAEDymB,cAAgB,SAACtpB,GACb,IAAOiC,EAAQY,EAAKD,MAAbX,KAEP,OAAO7B,EAAAA,EAAAA,KAACggB,GAAY,CAACne,KAAMA,EAAMqe,MAAOtgB,GAC5C,EAAC6C,CAAC,CAtED,OAsEAqD,EAAAA,EAAAA,GAAA+iB,EAAA,EAAA5mB,IAAA,mBAAA8D,IApED,WAAwB,IAADrE,EACnB,OAAAA,EAAA,IAAAynB,EAAAA,GAAAA,GAAAznB,EACK4e,GAAAA,GAAWC,KAAO,CACf7gB,MAAO,CACH,OACA,QACA,SACA,OACA,UACA,eACA,eACA,aACA,cAEPypB,EAAAA,GAAAA,GAAAznB,EACA4e,GAAAA,GAAW8I,IAAM,CACd1pB,MAAO,CAAC,OAAQ,QAAS,SAAU,OAAQ,UAAW,aACzDgC,CAET,GAAC,CAAAO,IAAA,aAAA8D,IAED,WACI,IAAAmC,EAA+BlC,KAAKxD,MAA7BX,EAAIqG,EAAJrG,KAAMud,EAAclX,EAAdkX,eAEb,MAAO,CACHtY,KAAM,IACNoM,IAAKvJ,KACL4C,MAAO,QACP4G,SAAS,EACTC,UAAU,EACVyM,UAAWT,EACXiK,YAAarjB,KAAKsN,gBAClBY,QAASiQ,GAAAA,GACT1Q,QAAS,CACL/T,MAAOkjB,GACP7O,KAAM/N,KAAKsjB,iBACXlV,KAAMvS,GAEVqJ,UAAW,CACPkV,KAAMyI,EAAQU,WACd5jB,MAAOkjB,EAAQW,YACfxY,OAAQ6X,EAAQY,aAChB5H,KAAMgH,EAAQa,WACd7G,aAAcgG,EAAQc,kBACtB5G,aAAc8F,EAAQe,kBACtB9G,WAAY+F,EAAQgB,gBACpB9c,QAAS/G,KAAKkjB,cACdrY,QAASgY,EAAQ5P,eAErB6Q,WAAU,SAAC5J,GACP,OAAOA,EAAME,IACjB,EAER,GAAC,CAAAne,IAAA,gBAAAkE,MAiBD,WACI,IAAA0C,EAYI7C,KAAKxD,MAXL4c,EAAcvW,EAAduW,eACA/O,EAAUxH,EAAVwH,WACAD,EAAgBvH,EAAhBuH,iBACAgB,EAAWvI,EAAXuI,YACAkM,EAAiBzU,EAAjByU,kBACAyM,EAAMlhB,EAANkhB,OACAzG,EAAUza,EAAVya,WACA0G,EAAgBnhB,EAAhBmhB,iBACA3Y,EAAYxI,EAAZwI,aACA0L,EAAkBlU,EAAlBkU,mBACAkN,EAAKphB,EAALohB,MAGJ,OACI7oB,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,GAAM,WAAWzJ,SAAA,EAC7BF,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,GAAM,SAAU,CAACyW,MAAM,IAAOlgB,UAC1CF,EAAAA,EAAAA,KAACud,EAAAA,EAAM,CACH7W,UAAQ,EACRI,KAAK,IACLuH,SAAU,IACVlI,MAAOkK,EACPrP,SAAUoe,EACV9Y,SAAU8J,EACV5J,YAAY,uBAIpBxG,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,GAAM,SAAU,CAAChE,OAAO,IAAOzF,UAC3CF,EAAAA,EAAAA,KAACyd,EAAAA,EAAM,CACH/d,MAAOqqB,EACP5jB,MAAO,CAACiL,GACRpQ,SAAUoe,EACV3Y,SAAU,SAACiX,GAAI,OAAKJ,EAAkBI,EAAK,GAAG,EAC9C1Q,MAAM,SACN2Q,MAAM,MACNC,YAAU,OAIlB5d,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,GAAM,SAAU,CAACkY,MAAM,IAAO3hB,UAC1CF,EAAAA,EAAAA,KAACyd,EAAAA,EAAM,CACH/d,MAAOuqB,EACP9jB,MAAO,CAACmd,GACRtiB,SAAUoe,EACV3Y,SAAU,SAACiX,GAAI,OAAKsM,EAAiBtM,EAAK,GAAG,EAC7C1Q,MAAM,QACN2Q,MAAM,MACNC,YAAU,OAIlB5d,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,GAAM,UAAUzJ,UAC5BF,EAAAA,EAAAA,KAACyd,EAAAA,EAAM,CACHzQ,MAAM,UACNtN,MAAO,CACH,CAACyG,MAAO,MAAOsG,MAAO,OACtB,CAACtG,MAAO,OAAQsG,MAAO,QACvB,CAACtG,MAAO,QAASsG,MAAO,UAE5BtG,MAAO,CAAC0O,OAAOxD,QAAAA,EAAgB,QAC/BrQ,SAAUoe,EACV3Y,SAAU,SAAAzD,GAAc,IAAZmD,GAAWtB,EAAAA,EAAAA,GAAA7B,EAAA,GAAN,GACb+Z,EAAmB5W,EACvB,EACAwX,MAAM,MACNC,YAAU,QAK9B,GAAC,CAAA3b,IAAA,iBAAAkE,MAED,WAAkB,IAADE,EAAA,KACb8Y,EAAgDnZ,KAAKxD,MAA9C2N,EAAUgP,EAAVhP,WAAYD,EAAYiP,EAAZjP,aAAcga,EAAW/K,EAAX+K,YAC3BC,GAAUC,EAAAA,GAAAA,IAAYF,EAAajB,GAAAA,IAEzC,OACIjpB,EAAAA,EAAAA,KAACge,EAAAA,GAAM,CAACC,WAAYC,GAAAA,GAAche,SAC7B,SAAAwD,GAAA,IAAEya,EAAQza,EAARya,SAAQ,OACP/c,EAAAA,EAAAA,MAAA,OACInB,UAAW0J,GAAM,WAAY,CACzByU,OAAQD,EACR0I,MAAOsD,IACRjqB,SAAA,CAEFmG,EAAKgY,iBAENre,EAAAA,EAAAA,KAACiQ,EAAS,CAACC,aAAcA,EAAcC,WAAYA,MACjD,GAItB,GAAC,CAAAlO,IAAA,gBAAAkE,MAED,WACI,IAAAkZ,EAA4CrZ,KAAKxD,MAA1C8R,EAAO+K,EAAP/K,QAAS+V,EAAWhL,EAAXgL,YAAaH,EAAW7K,EAAX6K,YACtBpB,EAAe9iB,KAAKL,MAApBmjB,YAEP,OACI1nB,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,GAAM,WAAWzJ,SAAA,EAC7BF,EAAAA,EAAAA,KAAC4f,EAAAA,GAAa/f,EAAAA,EAAAA,GAAA,CAACH,MAAO4U,GAAatO,KAAKiN,cAEvCmX,EAAAA,GAAAA,IAAYF,EAAajB,GAAAA,MACtBjpB,EAAAA,EAAAA,KAACqhB,GAAS,CAACnB,MAAO4I,EAAaxH,YAAa+I,MAI5D,GAAC,CAAApoB,IAAA,SAAAkE,MAED,WACI,OACI/E,EAAAA,EAAAA,MAACke,EAAAA,EAAa,CAAApf,SAAA,EACVF,EAAAA,EAAAA,KAACyoB,GAAc,CAAC5mB,KAAMmE,KAAKxD,MAAMX,QACjC7B,EAAAA,EAAAA,KAACkM,EAAAA,GAAerM,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKmG,KAAKxD,OAAK,IAAAtC,UAC3BkB,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,KAAQzJ,SAAA,EACpBkB,EAAAA,EAAAA,MAACse,EAAAA,GAAe,CAAAxf,SAAA,CACX8F,KAAK2Z,iBACL3Z,KAAKsc,oBAEVtiB,EAAAA,EAAAA,KAACskB,GAAoB,YAKzC,IAAC,EAAAriB,IAAA,aAAAkE,MApPD,SAAkBvG,EAAM0qB,GACpB,OACIlpB,EAAAA,EAAAA,MAAA,OACInB,UAAU,4DACVwM,MAAO7M,EAAKwgB,KAAKlgB,SAAA,EAEjBF,EAAAA,EAAAA,KAAA,QAAMC,UAAU,uCAAsCC,SACjD0M,GAAAA,EAAOC,OAAgB,QAAEjN,EAAKwgB,QAC5B,KAEPpgB,EAAAA,EAAAA,KAACwS,EAAAA,EAAe,CACZ5E,KAAMhO,EAAKwgB,KACX1N,KAAK,iBACL5L,KAAK,IACL2F,MAAO,QAAU6d,MAIjC,GAAC,CAAAroB,IAAA,cAAAkE,MAED,SAAmBvG,GACf,OAAOI,EAAAA,EAAAA,KAAC4e,GAAAA,GAAe,CAACjZ,MAAO/F,EAAK+F,OACxC,GAAC,CAAA1D,IAAA,eAAAkE,MAED,SAAoBvG,GAChB,OAAOI,EAAAA,EAAAA,KAAC6e,GAAAA,GAAgB,CAAC7N,OAAQpR,EAAKoR,QAC1C,GAAC,CAAA/O,IAAA,aAAAkE,MAED,SAAkBvG,GACd,OAAOI,EAAAA,EAAAA,KAACmiB,GAAAA,GAAc,CAACN,KAAMjiB,EAAKiiB,MACtC,GAAC,CAAA5f,IAAA,gBAAAkE,MAED,SAAqBvG,GACjB,OAAOI,EAAAA,EAAAA,KAACuqB,GAAAA,GAAc,CAAC3c,KAAMhO,EAAKiR,SACtC,GAAC,CAAA5O,IAAA,oBAAAkE,MAED,SAAyBvG,GACrB,OAAOI,EAAAA,EAAAA,KAAA,QAAAE,SAAO0M,GAAAA,EAAOC,OAAe,OAAEjN,EAAKkiB,YAAa,CAAC0I,OAAQ,KACrE,GAAC,CAAAvoB,IAAA,oBAAAkE,MAED,SAAyBvG,GAAO,IAAD6qB,EAC3B,OAAOzqB,EAAAA,EAAAA,KAAA,QAAAE,UAAuB,QAAhBuqB,EAAA7qB,EAAKmiB,mBAAW,IAAA0I,OAAA,EAAhBA,EAAkBC,YAAY,KAAM9d,GAAAA,EAAOC,OAAOC,UACpE,GAAC,CAAA7K,IAAA,kBAAAkE,MAED,SAAuBvG,GACnB,OAAOI,EAAAA,EAAAA,KAAA,QAAAE,SAAO0M,GAAAA,EAAOC,OAAiB,SAAEjN,EAAKoiB,UAAW,CAACnV,OAAQ,WACrE,KAACgc,CAAA,CA1Fe,CAAS3f,EAAAA,WAAhB2f,GACF8B,YAAcvhB,KAAAA,QACjBA,KAAAA,MAAgB,CACZwE,KAAMxE,KAAAA,OAAiBC,WACvBlD,MAAOiD,KAAAA,OAAiBC,cA+RpC,IAwCMkS,GAAqB,CACvBwB,mBAAAA,GAAAA,GACA3M,iBAAAA,GAAAA,GACAkN,kBAAAA,GAAAA,GACA0M,iBAAAA,GAAAA,GACAjB,kBAAAA,GAAAA,GACAsB,YAAAA,GAAAA,GAEAlK,oBAAAA,GAAAA,IAGJ,UAAe3E,EAAAA,EAAAA,KAnDS,SAAC7V,GACrB,IAAO0P,EAAsB1P,EAAtB0P,WAAYuV,EAAUjlB,EAAVilB,OACnBC,EAUIxV,EAAWf,QAAQA,QATnBgG,EAAOuQ,EAAPvQ,QACAlO,EAAMye,EAANze,OACAD,EAAK0e,EAAL1e,MACAE,EAASwe,EAATxe,UACAiI,EAAOuW,EAAPvW,QACAjE,EAAUwa,EAAVxa,WACAe,EAAWyZ,EAAXzZ,YACAC,EAAYwZ,EAAZxZ,aACAiS,EAAUuH,EAAVvH,WAEG4G,EAAeU,EAAfV,YAEDY,EAAiB5G,GAAkBve,GACnCokB,EAAS1F,GAAU1e,GACnBskB,EAAQ7F,GAASze,GACjByZ,EAAiB9E,IAAYlO,EAEnC,MAAO,CACHkO,QAAAA,EACAlO,OAAAA,EACAD,MAAAA,EACAE,UAAAA,EAEA6D,aAAc4a,EAAe5oB,OAC7BiO,WAAYmE,EAAQpS,OACpBoS,QAASwW,EACTZ,YAAAA,EACAH,OAAAA,EACAE,MAAAA,EACA7Y,YAAAA,EACAf,WAAAA,EACAiT,WAAAA,EACAjS,aAAAA,EACA+N,eAAAA,EAER,GAawC7D,GAAxC,CAA4DsN,I,gJC1YtDkC,IAAkBrV,EAAAA,GAAAA,IAAesV,GAAAA,IAAc,eAACC,EAAOnhB,UAAA5H,OAAA,QAAAmG,IAAAyB,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAC,OAC9DohB,KAAWD,GAAS,SAACna,EAAK9F,EAAMzJ,GAAI,OAAKuP,EAAIqH,KAAK,CAAC5W,KAAAA,EAAMyJ,KAAAA,EAAMmgB,WAAW,GAAO,GAAE,GAAG,IAG7EC,IAAa1V,EAAAA,GAAAA,IACtB,CAXqB,WAAH,MAAU,CAC5BnU,KAAM,MACNyJ,KAAMqgB,GAAAA,GACNF,WAAW,EACd,EAOsBJ,KACnB,SAACO,EAAeC,GAAY,OAAMD,GAAanhB,QAAAlH,EAAAA,EAAAA,GAAKsoB,GAAY,I,YCH9D5hB,IAAQnK,EAAAA,EAAAA,GAAG,wBAEXgsB,GAAc,SAAAppB,IAAAC,EAAAA,EAAAA,GAAAmpB,EAAAppB,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAAipB,GAAA,SAAAA,IAAA,IAAA/oB,GAAAC,EAAAA,EAAAA,GAAA,KAAA8oB,GAAA,QAAA3hB,EAAAC,UAAA5H,OAAA6H,EAAA,IAAAC,MAAAH,GAAAI,EAAA,EAAAA,EAAAJ,EAAAI,IAAAF,EAAAE,GAAAH,UAAAG,GAgCd,OAhCcxH,EAAAH,EAAAO,KAAAqH,MAAA5H,EAAA,OAAA6H,OAAAJ,KAkBhB0hB,kBAAoB,SAACC,GACjB,IAAA/kB,EAAgClE,EAAKD,MAA9BmpB,EAAWhlB,EAAXglB,YAAarlB,EAAQK,EAARL,SAEpBqlB,EAAYD,EAAO1gB,MACK,mBAAb1E,GACPA,EAASolB,EAEjB,EAACjpB,EAEDmpB,kBAAoB,SAACC,EAAKtqB,GACtB,IAAOuqB,EAAgBrpB,EAAKD,MAArBspB,aAEPD,EAAIE,kBACJD,EAAavqB,EACjB,EAACkB,CAAC,CA+BD,OA/BAqD,EAAAA,EAAAA,GAAA0lB,EAAA,EAAAvpB,IAAA,eAAAkE,MAED,SAAaulB,GAAS,IAADrlB,EAAA,KACV9E,EAAmBmqB,EAAnBnqB,KAAM4pB,EAAaO,EAAbP,UAEb,OACI/pB,EAAAA,EAAAA,MAAA,OACIE,QAAS,kBAAM+E,EAAKolB,kBAAkBC,EAAO,EAC7CzrB,UAAW0J,GAAM,UAAUzJ,SAAA,CAG1BqB,GAEC4pB,IACEnrB,EAAAA,EAAAA,KAAA,QACIsB,QAAS,SAACuqB,GAAG,OAAKxlB,EAAKulB,kBAAkBC,EAAKtqB,EAAK,EACnDtB,UAAW0J,GAAM,SAASzJ,UAE1BF,EAAAA,EAAAA,KAACG,EAAAA,EAAI,CAACC,KAAK,QAAQC,QAAQ,cAT9BkB,EAcjB,GAAC,CAAAU,IAAA,SAAAkE,MAED,WAAU,IAAD4X,EAAA,KACEkN,EAAWjlB,KAAKxD,MAAhByoB,QAEP,OACIjrB,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,KAAQzJ,SAAEP,IAAKsrB,GAAS,SAACS,GAAM,OAAK3N,EAAKiO,aAAaN,EAAO,KAErF,KAACF,CAAA,CA/De,CAAStiB,EAAAA,WAoE7B,UAAesS,EAAAA,EAAAA,KAFS,SAAC7V,GAAK,MAAM,CAACslB,QAASG,GAAWzlB,GAAO,GAExB,CAACgmB,YAAAA,GAAAA,GAAaG,aAAAA,GAAAA,IAAtD,CAAqEN,I,0KC1E/D7hB,IAAQnK,EAAAA,EAAAA,GAAG,sBAsBIysB,GAAgB,SAAAC,IAAA7pB,EAAAA,EAAAA,GAAA4pB,EAAAC,GAAA,IAAA5pB,GAAAC,EAAAA,EAAAA,GAAA0pB,GAAA,SAAAA,IAAA,IAAAxpB,GAAAC,EAAAA,EAAAA,GAAA,KAAAupB,GAAA,QAAApiB,EAAAC,UAAA5H,OAAA6H,EAAA,IAAAC,MAAAH,GAAAI,EAAA,EAAAA,EAAAJ,EAAAI,IAAAF,EAAAE,GAAAH,UAAAG,GAiD/B,OAjD+BxH,EAAAH,EAAAO,KAAAqH,MAAA5H,EAAA,OAAA6H,OAAAJ,KAmBjCgF,MAAiC,KAAItM,EACrCkD,MAAe,CAAC,EAAClD,EAgBjB0pB,iBAAmB,WAAO,IAADC,EACrBC,EAEI5pB,EAAKD,MADL2D,MAAQmmB,EAASD,EAATC,UAAW5mB,EAAM2mB,EAAN3mB,OAEvBjD,EAAK6D,SAASZ,GAAS4mB,GACb,QAAVF,EAAA3pB,EAAKsM,aAAK,IAAAqd,GAAVA,EAAYG,OAChB,EAAC9pB,EAED+pB,eAAiB,SAAC9mB,GACd,IACY4mB,EACR7pB,EAAKD,MADL2D,MAAQmmB,UAEZ7pB,EAAK6D,SAASZ,EAAQ4mB,EAC1B,EAAC7pB,CAAC,CAhCD,OAgCAqD,EAAAA,EAAAA,GAAAmmB,EAAA,EAAAhqB,IAAA,WAAAkE,MA3BD,SAAST,EAAgB4mB,GACrB,IACIG,EADGnmB,EAAYN,KAAKxD,MAAjB8D,SAEP,GAAIgmB,EACA,IAEI,IAAIjlB,OAAO3B,EACf,CAAE,MAAO2J,GACLod,EAAepd,EAAY1C,OAC/B,CAEJrG,EAAS,CAACZ,OAAAA,EAAQ4mB,UAAAA,EAAWG,YAAAA,GACjC,GAAC,CAAAxqB,IAAA,SAAAkE,MAiBD,WAAU,IAADE,EAAA,KACLM,EAUIX,KAAKxD,MATLvC,EAAS0G,EAAT1G,UACA6G,EAAIH,EAAJG,KAAI4lB,EAAA/lB,EACJH,YAAAA,OAAW,IAAAkmB,EAAG,kBAAiBA,EAAAC,EAAAhmB,EAC/BimB,kBAAAA,OAAiB,IAAAD,EAAG,kBAAiBA,EACrCxmB,EAAKQ,EAALR,MACA0mB,EAAGlmB,EAAHkmB,IAGGne,GADK/H,EAARL,UACOqI,EAAAA,EAAAA,GAAAhI,EAAAiI,KAEJ0d,EAAqBnmB,EAArBmmB,UAAW5mB,EAAUS,EAAVT,OACXyG,EAASnG,KAAKL,MAAdwG,MAEP,OACI/K,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,GAAM,KAAM1J,GAAWC,SAAA,EACnCkB,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,GAAM,YAAYzJ,SAAA,EAC9BF,EAAAA,EAAAA,KAACmO,GAAAA,GAAqBtO,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACd6O,GAAI,IACRoe,WAAY,SAAC/d,GACT1I,EAAK0I,MAAQA,CACjB,EACAvI,YAAa8lB,GAAYM,GAAmCpmB,EAC5DqmB,IAAKA,EACL/lB,KAAMA,EACNX,MAAOT,EACPe,SAAUT,KAAKwmB,eACfvsB,UAAW0J,GAAM,UACjB0E,SAAU,QAEdrO,EAAAA,EAAAA,KAACgH,GAAAA,EAAM,CACH0L,KAAM4Z,EAAY,cAAWjkB,EAC7BvB,KAAMA,EACN+lB,IAAK,cACLvrB,QAAS,kBAAM+E,EAAK8lB,kBAAkB,EAACjsB,SAC1C,UAIJosB,GAAangB,IAASnM,EAAAA,EAAAA,KAAA,QAAMC,UAAW0J,GAAM,SAASzJ,SAAEiM,aAAK,EAALA,EAAOQ,YAG5E,IAAC,EAAA1K,IAAA,2BAAAkE,MA7FD,SAAgC3D,EAAcmD,GAC1C,GAAIA,EAAMonB,aAAevqB,EAAM2D,MAAMT,OACjC,OAAO,KAGX,IAII,OADY,IAAI2B,OAAO7E,EAAM2D,MAAMT,QAC5B,CAACqnB,WAAYvqB,EAAM2D,MAAMT,OAAQyG,WAAO9D,EACnD,CAAE,MAAO8D,GACL,MAAO,CACH4gB,WAAYvqB,EAAM2D,MAAMT,OACxByG,MAAAA,EAER,CACJ,KAAC8f,CAAA,CAjBgC,CAAS1jB,EAAAA,e,0DC1BxCoB,IAAQnK,EAAAA,EAAAA,GAAG,gBAqBjB,SAASwtB,GAAYxqB,GACjB,IAAOvC,EAA2DuC,EAA3DvC,UAAWqG,EAAgD9D,EAAhD8D,SAAU5G,EAAsC8C,EAAtC9C,MAAO8G,EAA+BhE,EAA/BgE,YAAaL,EAAkB3D,EAAlB2D,MAAUuI,GAAIC,EAAAA,EAAAA,GAAInM,EAAKoM,IAEjE+Y,EAAUpf,EAAAA,SAAc,WAC1B,OAAO5I,IAAKD,GAAO,SAACyG,GAAK,MAAM,CAACA,MAAAA,EAAOyH,KAAMzH,EAAM,GACvD,GAAG,CAACzG,IAEJ,OACIM,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,GAAM,KAAM1J,GAAWC,UACnCF,EAAAA,EAAAA,KAACyd,EAAAA,GAAM5d,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACC6O,GAAI,IACRvI,MAAOA,GAAS,GAChB8mB,UAAQ,EACRxmB,SAAUH,EACV5G,MAAOioB,EACPnhB,YAAaA,EACbmX,MAAM,MACNuP,iBAAkB,MAIlC,CAEA,SAAe3kB,EAAAA,KAAWykB,I,gBCnCpBrjB,IAAQnK,EAAAA,EAAAA,GAAG,eAEX2tB,GAAmB,CAAC,SAAU,QAAS,gBAwBvC7E,GAAyC,CAC3ClU,KAAM,SACN1O,OAAQ,GACR4mB,WAAW,EACXrrB,SAAU,GACVwrB,YAAa,IAGXW,GAA6D,CAC/D1nB,OAAQ,SACR2nB,MAAO,QACPC,aAAc,gBAGlB,SAASC,GAAW/qB,GAChB,IACI2D,EAOA3D,EAPA2D,MACAG,EAMA9D,EANA8D,SACArG,EAKAuC,EALAvC,UAASutB,EAKThrB,EAJAsE,KAAAA,OAAI,IAAA0mB,EAAG,IAAGA,EACV9tB,EAGA8C,EAHA9C,MACA+tB,EAEAjrB,EAFAirB,kBAAiBC,EAEjBlrB,EADAmrB,aAAAA,OAAY,IAAAD,EAAGP,GAAgBO,EAEnCE,EAKIznB,EAJAiO,KAAAA,OAAI,IAAAwZ,EAAGtF,GAAalU,KAAIwZ,EAAAC,EAIxB1nB,EAHAT,OAAAA,OAAM,IAAAmoB,EAAGvF,GAAa5iB,OAAMmoB,EAAAC,EAG5B3nB,EAFAlF,SAAAA,OAAQ,IAAA6sB,EAAGxF,GAAarnB,SAAQ6sB,EAChCxB,EACAnmB,EADAmmB,UAGEnd,EAAe5G,EAAAA,aACjB,SAACwlB,GACG,IAAM5nB,EAAQ6B,IACV+lB,GACA,SAAC9lB,EAAK9B,EAAOlE,GAIT,YAHcoG,IAAVlC,IACA8B,EAAIhG,GAAOkE,GAER8B,CACX,GACA,CAAC,GAEL3B,EAASH,EACb,GACA,CAACG,IAGC0nB,EAAqBzlB,EAAAA,aACvB,SAACyd,GACG7W,GAAYtP,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAAGsG,GAAU6f,GAC/B,GACA,CAAC7W,EAAchJ,IAGb8nB,EAAqB1lB,EAAAA,aACvB,SAACtH,GACGkO,GAAYtP,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAAGsG,GAAK,IAAElF,SAAAA,IAC5B,GACA,CAACkO,EAAchJ,IAGb+nB,EAAgB3lB,EAAAA,SAAc,WAChC,OAAOtH,CACX,GAAG,CAACA,IAEEktB,EACO,WAAT/Z,GACIpU,EAAAA,EAAAA,KAACisB,GAAgB,CACbhsB,UAAW0J,GAAM,WACjBkjB,IAAK,cACL/lB,KAAMA,EACNX,MAAO,CAACT,OAAAA,EAAQ4mB,UAAAA,GAChBhmB,SAAU0nB,KAGdhuB,EAAAA,EAAAA,KAACgtB,GAAW,CACR/sB,UAAW0J,GAAM,WACjBxD,MAAO+nB,EACP5nB,SAAU2nB,EACVvuB,MAAOA,EACP8G,YAAainB,EACbZ,IAAI,gBAIVuB,EAAQT,EAAa/Y,KAAI,SAACyZ,GAC5B,IAAMC,EAAWD,EACjB,MAAO,CACHE,MAAMvuB,EAAAA,EAAAA,KAACG,EAAAA,EAAI,CAACE,QAAS+sB,GAAMkB,KAC3B1gB,KAAM0gB,EAAS,GAAGE,cAAgBF,EAASG,UAAU,GACrDC,OAAQ,kBAAMvf,GAAYtP,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAAGsG,GAAK,IAAEiO,KAAMka,IAAU,EAE9D,IAEA,OACIltB,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,GAAM,KAAM1J,GAAWC,SAAA,CAClCiuB,GACDnuB,EAAAA,EAAAA,KAAC2uB,GAAAA,EAAY,CACTjvB,MAAO0uB,EACPQ,UACI5uB,EAAAA,EAAAA,KAACgH,GAAAA,EAAM,CAACF,KAAMA,EAAM6W,MAAO,OAAQkP,IAAK,cAAc3sB,UAClDF,EAAAA,EAAAA,KAACG,EAAAA,EAAI,CAACE,QAAS+sB,GAAMhZ,WAM7C,CAEA,SAAe7L,EAAAA,KAAWglB,I,iEC7GpB5jB,IAAQnK,EAAAA,EAAAA,GAAG,qBAEXqvB,GAAmBzlB,KAAAA,MAAgB,CACrC0lB,KAAM1lB,KAAAA,MAAgB,CAClBjD,MAAOiD,KAAAA,OACP2lB,MAAO3lB,KAAAA,KAAeC,aACvBA,WACH2lB,GAAI5lB,KAAAA,MAAgB,CAChBjD,MAAOiD,KAAAA,OACP2lB,MAAO3lB,KAAAA,KAAeC,aACvBA,aAGM4lB,GAAU,SAAA7sB,IAAAC,EAAAA,EAAAA,GAAA4sB,EAAA7sB,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAA0sB,GAkEnB,SAAAA,EAAYzsB,GAAQ,IAADC,EAQkC,OARlCC,EAAAA,EAAAA,GAAA,KAAAusB,IACfxsB,EAAAH,EAAAO,KAAA,KAAML,IAHVmD,MAAQ,CAAC,EAAClD,EA8CVysB,iBAAmB,WACf,IAAAvoB,EAA+ClE,EAAKD,MAA7CmpB,EAAWhlB,EAAXglB,YAAarK,EAAW3a,EAAX2a,YAAa6N,EAAUxoB,EAAVwoB,WACjCC,EAAiD3sB,EAAKkD,MAA/C0pB,EAAcD,EAAdC,eAAgBC,EAAYF,EAAZE,aAAiBC,GAAK5gB,EAAAA,EAAAA,GAAAygB,EAAAxgB,IAEzCygB,GAAkBC,EAAaptB,OAAS,GACxCitB,EAAWG,EAAcC,GAG7B5D,EAAYlpB,EAAKkD,OACjBlD,EAAK8C,SAAS,CAAC8pB,gBAAgB,GAAQ/N,EAC3C,EAAC7e,EAEDwrB,mBAAqB,SAACuB,GAClB,IAAO7pB,EAASlD,EAAKkD,MAAK,QAAnBA,MAED0gB,GAASoJ,EAAAA,GAAAA,IAAkB,CAACtpB,MAAOR,EAAO6pB,SAAAA,GAAW,OAE3D/sB,EAAK8C,SAAS,CACVmqB,SAAA7vB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACO4C,EAAKkD,MAAK,SAAQ,IACrBA,MAAO0gB,KAGnB,EAAC5jB,EAWDktB,wBAA0B,SAACC,EAAShf,EAAO3O,EAAKkE,GAC5C,IAAM0pB,EAAwB,KAAV1pB,EAAe,MAAO2pB,EAAAA,GAAAA,IAAW3pB,GAC/C4pB,GAAWC,MAAMH,GAEvBptB,EAAK8C,UAAQ4jB,EAAAA,GAAAA,GAAC,CAAC,EACVyG,GAAO/vB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACD4C,EAAKkD,MAAMiqB,IAAQ,IAAAzG,EAAAA,GAAAA,GAAA,GACrBvY,GAAK/Q,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACC4C,EAAKkD,MAAMiqB,GAAShf,IAAM,IAAAuY,EAAAA,GAAAA,GAAA,GAC5BlnB,EAAM,CACHkE,MAAO4pB,EAAUF,EAAcptB,EAAKkD,MAAMiqB,GAAShf,GAAO3O,GAAKkE,MAC/D4oB,MAAOgB,QAK3B,EAACttB,EAEDwtB,uBAAyB,SAACL,EAAS3tB,EAAKkE,GACpC1D,EAAK8C,UAAQ4jB,EAAAA,GAAAA,GAAC,CAAC,EACVyG,GAAO/vB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACD4C,EAAKkD,MAAMiqB,IAAQ,IAAAzG,EAAAA,GAAAA,GAAA,GACrBlnB,EAAMkE,KAGnB,EAAC1D,EAEDytB,6BAA+B,SAAA1vB,GAAA,IAAEwa,EAAMxa,EAANwa,OAAM,OAAMvY,EAAK8C,SAAS,CAAC8pB,eAAgBrU,EAAO9Z,SAAU,EAADuB,EAE5F0tB,yBAA2B,SAACb,GAAY,OAAK7sB,EAAK8C,SAAS,CAAC+pB,aAAAA,GAAe,EAzGvE7sB,EAAKkD,OAAK9F,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACH4C,EAAKD,MAAM+sB,OAAK,IACnBF,gBAAgB,EAChBC,aAAc,KAGlB7sB,EAAKkD,MAAK,QAASA,MAAQlD,EAAKD,MAAM4tB,WAAW3tB,CACrD,CAbC,OAaAqD,EAAAA,EAAAA,GAAAmpB,EAAA,EAAAhtB,IAAA,iBAAA8D,IAED,WACI,MAAO,CAAC,CAAC0S,KAAM,QAAS4X,QAASrqB,KAAKkpB,iBAAkBoB,MAAO,OACnE,GAAC,CAAAruB,IAAA,SAAA8D,IAED,WACI,OAAOpG,IAAKqG,KAAKxD,MAAM+tB,YAAY,SAAC5qB,GAChC,MAAO,CACH8G,MAAOG,GAAAA,EAAOC,OAAO2jB,SAAS7qB,GAC9BQ,MAAOR,EAEf,GACJ,GAAC,CAAA1D,IAAA,aAAA8D,IAED,WACI,IAAO0qB,EAA0BC,GAAAA,GAA1BD,QAASE,EAAiBD,GAAAA,GAAjBC,SAAUC,EAAOF,GAAAA,GAAPE,IAE1B,MAAO,CACH,CAAChjB,KAAMhB,GAAAA,EAAOC,OAAuB,eAAE+jB,GAAMzqB,MAAOyqB,GACpD,CAAChjB,KAAMhB,GAAAA,EAAOC,OAAuB,eAAE4jB,GAAUtqB,MAAOsqB,GACxD,CACI7iB,KAAMhB,GAAAA,EAAOC,OAAuB,eAAE8jB,GACtCxqB,MAAOwqB,GAGnB,GAAC,CAAA1uB,IAAA,yBAAAkE,MAED,SAAuBypB,EAAShf,GAAQ,IAADvK,EAAA,KACnC,MAAO,CACH,SAACF,GAAK,OAAKE,EAAKspB,wBAAwBC,EAAShf,EAAO,OAAQzK,EAAM,EACtE,SAACA,GAAK,OAAKE,EAAKspB,wBAAwBC,EAAShf,EAAO,KAAMzK,EAAM,EAE5E,GAAC,CAAAlE,IAAA,oBAAAkE,MA2BD,SAAkBypB,EAAS3tB,EAAKkE,GAC5BH,KAAKT,UAAQ4jB,EAAAA,GAAAA,GAAC,CAAC,EACVyG,GAAO/vB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACDmG,KAAKL,MAAMiqB,IAAQ,IAAAzG,EAAAA,GAAAA,GAAA,GACrBlnB,EAAMkE,KAGnB,GAAC,CAAAlE,IAAA,oBAAAkE,MAiCD,SAAAzE,GAA8E,IAA3D8E,EAAW9E,EAAX8E,YAAaF,EAAQ5E,EAAR4E,SAAUH,EAAKzE,EAALyE,MAAO0qB,EAAOnvB,EAAPmvB,QAAOC,EAAApvB,EAAEmL,OAAAA,OAAM,IAAAikB,EAAG,QAAOA,EAChEC,EACS,WAAXlkB,EAAsB,SAAC1G,GAAK,OAAK6qB,OAAO7qB,GAAO8qB,UAAU,EAAGrkB,GAAAA,EAAOC,OAAOA,GACxEqkB,EAA0B,KAAV/qB,GAA0B,OAAVA,EAAiB,GAAK4qB,EAAU5qB,GAEtE,OACInG,EAAAA,EAAAA,KAACud,EAAAA,EAAM,CACHzW,KAAK,IACLuH,SAAU,IACVwiB,QAASA,EACTM,WAAW,EACX7qB,SAAUA,EACVH,MAAO+qB,EACP1qB,YAAaA,GAGzB,GAAC,CAAAvE,IAAA,mBAAAkE,MAED,SAAAnD,GAAqF,IAAnEwD,EAAWxD,EAAXwD,YAAaF,EAAQtD,EAARsD,SAAUH,EAAKnD,EAALmD,MAAKirB,EAAApuB,EAAEhC,SAAAA,OAAQ,IAAAowB,GAAQA,EAAAC,EAAAruB,EAAE6tB,QAAAA,OAAO,IAAAQ,GAAQA,EAC7E,OACIrxB,EAAAA,EAAAA,KAACud,EAAAA,EAAM,CACHzW,KAAK,IACLuH,SAAU,IACVlI,MAAOA,EACP0qB,QAASA,EACTM,WAAW,EACXnwB,SAAUA,EACVsF,SAAUA,EACVE,YAAaA,GAGzB,GAAC,CAAAvE,IAAA,mBAAAkE,MAED,SAAA9C,GAAsF,IAApE3D,EAAK2D,EAAL3D,MAAO4G,EAAQjD,EAARiD,SAAUH,EAAK9C,EAAL8C,MAAKmrB,EAAAjuB,EAAErC,SAAAA,OAAQ,IAAAswB,GAAQA,EAAElD,EAAK/qB,EAAL+qB,MAAKmD,EAAAluB,EAAEwtB,QAAAA,OAAO,IAAAU,GAAQA,EAC9E,OACIvxB,EAAAA,EAAAA,KAACutB,GAAU,CACPpnB,MAAOA,EACP0qB,QAASA,EACTM,WAAW,EACXnwB,SAAUA,EACVsF,SAAUA,EACV5G,MAAOA,EACPiuB,aAAcS,EACdX,kBAAmB,kBAG/B,GAAC,CAAAxrB,IAAA,qBAAAkE,MAED,SAAmBypB,EAAShf,GAA0B,IAAnB/D,EAAM/C,UAAA5H,OAAA,QAAAmG,IAAAyB,UAAA,GAAAA,UAAA,GAAG,QACxC0nB,EAAwCxrB,KAAKyrB,uBAAuB7B,EAAShf,GAAM8gB,GAAA7sB,EAAAA,EAAAA,GAAA2sB,EAAA,GAA5EG,EAAaD,EAAA,GAAEE,EAAcF,EAAA,GAE9BhsB,EAASM,KAAKL,MAAMiqB,GAAShf,GAEnCihB,EAAyDnsB,EAAOopB,KAAlDgD,EAAeD,EAAtB9C,MAA+BgD,EAAeF,EAAtB1rB,MAC/B6rB,EAAqDtsB,EAAOspB,GAA9CiD,EAAaD,EAApBjD,MAA6BmD,EAAaF,EAApB7rB,MAE7B,OACI/E,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,GAAM,iBAAiBzJ,SAAA,CAClC8F,KAAKmsB,kBAAkB,CACpB3rB,YAAa,YACbF,SAAUqrB,EACVxrB,MAAO4rB,EACPlB,SAAUiB,EACVjlB,OAAAA,IAGH7G,KAAKmsB,kBAAkB,CACpB3rB,YAAa,UACbF,SAAUsrB,EACVzrB,MAAO+rB,EACPrB,SAAUoB,EACVplB,OAAAA,MAIhB,GAAC,CAAA5K,IAAA,qBAAAkE,MAED,WACI,IAAOR,EAASK,KAAKL,MAAK,QAAnBA,MACP,OACI3F,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,GAAM,UAAUzJ,UAC5BF,EAAAA,EAAAA,KAACyd,EAAAA,EAAM,CACHtX,MAAOR,EACPjG,MAAOsG,KAAK+jB,OACZqI,YAAU,EACV3rB,SAAUT,KAAKioB,mBACfznB,YAAa,mBACbmX,MAAM,MACNuP,iBAAkB,EAClBtP,YAAU,EACVqP,UAAQ,KAIxB,GAAC,CAAAhrB,IAAA,mBAAAkE,MAED,SAAiBypB,EAASruB,GAAO,IAADwc,EAAA,KACtB5X,EAAQH,KAAKL,MAAMiqB,GAASruB,GAElC,OACIvB,EAAAA,EAAAA,KAACqyB,GAAAA,EAAW,CACRvrB,KAAK,IACLvF,KAAMA,EACN4E,MAAOA,EACPzG,MAAOsG,KAAKssB,WACZhsB,SAAU,SAACisB,GAAE,OAAKxU,EAAKyU,kBAAkB5C,EAASruB,EAAMgxB,EAAGvX,OAAO7U,MAAM,GAGpF,GAAC,CAAAlE,IAAA,iBAAAkE,MAED,SAAeyH,EAAM1M,EAASoF,GAC1B,OACItG,EAAAA,EAAAA,KAACib,GAAAA,EAAQ,CACLnU,KAAK,IAEL4F,QAASkB,EACT1M,QAASA,EACToF,SAAUA,EACVrG,UAAW0J,GAAM,aAJZiE,EAOjB,GAAC,CAAA3L,IAAA,uBAAAkE,MAED,WAAwB,IAADssB,EAAA,KACb7C,EAAU,UAChB1nB,EAA8BlC,KAAKxD,MAA5BkwB,EAAQxqB,EAARwqB,SAAUC,EAASzqB,EAATyqB,UAEjB,OACI3yB,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,gBACLkE,MAAOH,KAAK4sB,iBAAiB,CACzBzsB,MAAOH,KAAKL,MAAMiqB,GAAuB,aACzCppB,YAAa,iCACbF,SAAU,SAACH,GAAK,OACZssB,EAAKxC,uBAAuBL,EAAS,eAAgBzpB,EAAM,KAGvE,CACIlE,IAAK,OACLkE,MAAOH,KAAK6sB,iBAAiB,CACzBnzB,MAAOgzB,EACPvsB,MAAOH,KAAKL,MAAMiqB,GAAc,IAChCtpB,SAAU,SAACH,GAAK,OAAKssB,EAAKxC,uBAAuBL,EAAS,MAAOzpB,EAAM,KAG/E,CACIlE,IAAK,SACLkE,MAAOH,KAAK8sB,sBAEhB,CACI7wB,IAAK,QACLkE,MAAOH,KAAK6sB,iBAAiB,CACzBnzB,MAAOizB,EACPxsB,MAAOH,KAAKL,MAAMiqB,GAAe,KACjCxB,MAAO,CAAC,SAAU,SAClB9nB,SAAU,SAACH,GAAK,OACZssB,EAAKxC,uBAAuBL,EAAS,OAAQzpB,EAAM,KAG/D,CACIlE,IAAK,SACLkE,MAAOH,KAAK+sB,iBAAiBnD,EAAS,WAE1C,CACI3tB,IAAK,iBACLkE,MAAOH,KAAK+sB,iBAAiBnD,EAAS,mBAE1C,CACI3tB,IAAK,OACLkE,MAAOH,KAAK+sB,iBAAiBnD,EAAS,SAE1C,CACI3tB,IAAK,SACLkE,MAAOH,KAAK+sB,iBAAiBnD,EAAS,eAE1C,CACI3tB,IAAK,iBACLkE,MAAOH,KAAK+sB,iBAAiBnD,EAAS,kBAE1C,CACI3tB,IAAK,iBACLkE,MAAOH,KAAK+sB,iBAAiBnD,EAAS,kBAE1C,CACI3tB,IAAK,eACLkE,MAAOH,KAAK+sB,iBAAiBnD,EAAS,kBAK1D,GAAC,CAAA3tB,IAAA,uBAAAkE,MAED,WAAwB,IAAD6sB,EAAA,KACZC,EAAcjtB,KAAKxD,MAAnBywB,WACDrD,EAAU,UAEhB,OACIxuB,EAAAA,EAAAA,MAAC8xB,EAAAA,SAAQ,CAAAhzB,SAAA,EACLF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,WACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,WAAY,WAExD,CACI3tB,IAAK,SACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,SAAU,eAK9D5vB,EAAAA,EAAAA,KAAA,MAAIC,UAAW0J,GAAM,WAAWzJ,SAAC,WAEjCF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,OACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,cAE5C,CACI3tB,IAAK,QACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,mBAKpD5vB,EAAAA,EAAAA,KAAA,MAAIC,UAAW0J,GAAM,WAAWzJ,SAAC,eAEjCF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAOC,IAAKszB,GAAY,SAACG,GAAM,MAAM,CACjCnxB,IAAK2K,GAAAA,EAAOC,OAAiB,SAAEumB,GAC/BjtB,MAAO6sB,EAAKG,mBACRvD,EACAyD,GAAAA,GAAqBD,EACrB,UAEP,QAIjB,GAAC,CAAAnxB,IAAA,mBAAAkE,MAED,WACI,IAAMypB,EAAU,MAEhB,OACIxuB,EAAAA,EAAAA,MAAC8xB,EAAAA,SAAQ,CAAAhzB,SAAA,EACLF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,eACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,gBAE5C,CACI3tB,IAAK,cACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,eAE5C,CACI3tB,IAAK,mBACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,mBAE5C,CACI3tB,IAAK,aACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,cAE5C,CACI3tB,IAAK,YACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,cAE5C,CACI3tB,IAAK,QACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,UAE5C,CACI3tB,IAAK,cACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,eAE5C,CACI3tB,IAAK,uBACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,2BAKpD5vB,EAAAA,EAAAA,KAAA,MAAIC,UAAW0J,GAAM,WAAWzJ,SAAC,oBAEjCF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,OACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,sBAE5C,CACI3tB,IAAK,QACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,2BAKpD5vB,EAAAA,EAAAA,KAAA,MAAIC,UAAW0J,GAAM,WAAWzJ,SAAC,mBAEjCF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,OACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,qBAE5C,CACI3tB,IAAK,QACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,0BAKpD5vB,EAAAA,EAAAA,KAAA,MAAIC,UAAW0J,GAAM,WAAWzJ,SAAC,eAEjCF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,OACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,iBAE5C,CACI3tB,IAAK,QACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,uBAMhE,GAAC,CAAA3tB,IAAA,yBAAAkE,MAED,WACI,IAAMypB,EAAU,YAEhB,OACIxuB,EAAAA,EAAAA,MAAC8xB,EAAAA,SAAQ,CAAAhzB,SAAA,EACLF,EAAAA,EAAAA,KAAA,MAAIC,UAAW0J,GAAM,WAAWzJ,SAAC,gBAEjCF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,kBACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,gBAAiB,WAE7D,CACI3tB,IAAK,mBACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,iBAAkB,eAKtE5vB,EAAAA,EAAAA,KAAA,MAAIC,UAAW0J,GAAM,WAAWzJ,SAAC,gBAEjCF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,kBACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,gBAAiB,WAE7D,CACI3tB,IAAK,mBACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,iBAAkB,eAKtE5vB,EAAAA,EAAAA,KAAA,MAAIC,UAAW0J,GAAM,WAAWzJ,SAAC,kBAEjCF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,oBACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,kBAAmB,WAE/D,CACI3tB,IAAK,qBACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,mBAAoB,eAKxE5vB,EAAAA,EAAAA,KAAA,MAAIC,UAAW0J,GAAM,WAAWzJ,SAAC,mBAEjCF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,qBACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,mBAAoB,WAEhE,CACI3tB,IAAK,sBACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,mBAAoB,eAKxE5vB,EAAAA,EAAAA,KAAA,MAAIC,UAAW0J,GAAM,WAAWzJ,SAAC,uBAEjCF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,yBACLkE,MAAOH,KAAKmtB,mBACRvD,EACA,uBACA,WAGR,CACI3tB,IAAK,0BACLkE,MAAOH,KAAKmtB,mBACRvD,EACA,wBACA,gBAO5B,GAAC,CAAA3tB,IAAA,uBAAAkE,MAED,WACI,IAAMypB,EAAU,UAEhB,OACIxuB,EAAAA,EAAAA,MAAC8xB,EAAAA,SAAQ,CAAAhzB,SAAA,EACLF,EAAAA,EAAAA,KAAA,MAAIC,UAAW0J,GAAM,WAAWzJ,SAAC,kBAEjCF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,aACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,MAAO,WAEnD,CACI3tB,IAAK,OACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,OAAQ,WAEpD,CACI3tB,IAAK,UACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,UAAW,WAEvD,CACI3tB,IAAK,YACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,YAAa,WAEzD,CACI3tB,IAAK,oBACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,mBAAoB,WAEhE,CACI3tB,IAAK,kBACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,iBAAkB,WAE9D,CACI3tB,IAAK,UACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,UAAW,WAEvD,CACI3tB,IAAK,YACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,YAAa,eAKjE5vB,EAAAA,EAAAA,KAAA,MAAIC,UAAW0J,GAAM,WAAWzJ,SAAC,mBAEjCF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,cACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,eAE5C,CACI3tB,IAAK,eACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,gBAE5C,CACI3tB,IAAK,eACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,gBAE5C,CACI3tB,IAAK,gBACLkE,MAAOH,KAAKmtB,mBAAmBvD,EAAS,sBAMhE,GAAC,CAAA3tB,IAAA,gBAAAkE,MAED,WACI,IAAAmtB,EAAuCttB,KAAKL,MAArC0pB,EAAciE,EAAdjE,eAAgBC,EAAYgE,EAAZhE,aAEvB,OACIluB,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,KAAQzJ,SAAA,EACpBF,EAAAA,EAAAA,KAACuf,EAAAA,EAAkB,CAACzY,KAAK,IAAIvF,KAAK,UAAUtB,UAAW0J,GAAM,WAAWzJ,SACnE8F,KAAKutB,0BAGVvzB,EAAAA,EAAAA,KAACuf,EAAAA,EAAkB,CAACzY,KAAK,IAAIvF,KAAK,UAASrB,SACtC8F,KAAKwtB,0BAGVxzB,EAAAA,EAAAA,KAACuf,EAAAA,EAAkB,CAACzY,KAAK,IAAIvF,KAAK,iBAAgBrB,SAC7C8F,KAAKytB,sBAGVzzB,EAAAA,EAAAA,KAACuf,EAAAA,EAAkB,CAACzY,KAAK,IAAIvF,KAAK,YAAWrB,SACxC8F,KAAK0tB,4BAGV1zB,EAAAA,EAAAA,KAACuf,EAAAA,EAAkB,CAACzY,KAAK,IAAIvF,KAAK,UAASrB,SACtC8F,KAAK2tB,0BAGV3zB,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,GAAM,YAAYzJ,UAC9BF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,OACLkE,MAAOH,KAAK4tB,eACR,mBACAvE,EACArpB,KAAKkqB,+BAGb,CACIjuB,IAAK,gBACLkE,MAAOH,KAAK4sB,iBAAiB,CACzBpsB,YAAa,yBACbF,SAAUN,KAAKmqB,yBACfhqB,MAAOmpB,EACPtuB,UAAWquB,EACXwB,QAASxB,GAAkBC,EAAaptB,OAAS,WAOrElC,EAAAA,EAAAA,KAAC6zB,GAAAA,EAAM,CAACzY,SAAUpV,KAAK8tB,mBAGnC,GAAC,CAAA7xB,IAAA,SAAAkE,MAED,WACI,IAAA0C,EAA+B7C,KAAKxD,MAA7B4f,EAAOvZ,EAAPuZ,QAASd,EAAWzY,EAAXyY,YAEhB,OACIthB,EAAAA,EAAAA,KAAC+zB,GAAAA,EAAK,CACFjtB,KAAK,IACL2F,MAAM,QACN2V,QAASA,EACT4R,SAAU1S,EACV5U,QAAS1G,KAAKsc,gBACd2R,UAAWjuB,KAAKkpB,kBAG5B,GAAC,CAAAjtB,IAAA,oBAAAkE,MAED,WACI,IAAAgZ,EAA+BnZ,KAAKxD,MAA7B4f,EAAOjD,EAAPiD,QAAS8R,EAAW/U,EAAX+U,YAEZ9R,GACA8R,GAER,GAAC,CAAAjyB,IAAA,qBAAAkE,MAED,SAAmBguB,GACf,IAAA9U,EAA+BrZ,KAAKxD,MAA7B4f,EAAO/C,EAAP+C,QAAS8R,EAAW7U,EAAX6U,aAEXC,EAAU/R,SAAWA,GACtB8R,GAER,IAAC,EAAAjyB,IAAA,kBAAAkE,MA9sBD,SAAuByK,GACnB,IAAMwjB,EAAQC,KAAWC,GAAAA,GAAa1jB,IAAQ,kBAAMie,GAAiBxlB,UAAU,IAE/E,OAAOD,KAAAA,MAAgBgrB,GAAO/qB,UAClC,GAAC,CAAApH,IAAA,kBAAAkE,MAED,SAAuBR,EAAOnD,EAAOotB,EAAShf,GAC1C,OAAKjL,EAAMiqB,IAAajqB,EAAMiqB,GAAShf,GAGhC,KAFIpO,EAAMotB,GAAShf,EAG9B,GAAC,CAAA3O,IAAA,2BAAAkE,MAED,SAAgC3D,EAAOmD,GACnC,IAAOstB,EAAqBzwB,EAArBywB,WAAY1D,EAAS/sB,EAAT+sB,MACZgF,EAAW5uB,EAAX4uB,QACDC,EAAaxsB,IACfirB,GACA,SAAChrB,EAAKmrB,GACF,IAAMnxB,EAAMoxB,GAAAA,GAAqBD,EAEjC,OADAnrB,EAAIhG,GAAOsyB,EAAQtyB,IAAQstB,EAAMgF,QAAQtyB,GAClCgG,CACX,GACA,CAAC,GAEL,MAAO,CAACssB,SAAO10B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAM00B,GAAYC,GACrC,KAACvF,CAAA,CA9DkB,CAAS/lB,EAAAA,WAAnB+lB,GACFwF,WAAarrB,KAAAA,MAAgB,CAACsnB,GAAAA,GAAWD,QAASC,GAAAA,GAAWC,SAAUD,GAAAA,GAAWE,MA+vB7F,UAAepV,EAAAA,EAAAA,KAXS,SAAC7V,GACrB,MAAO,CACH4pB,OAAOmF,EAAAA,GAAAA,IAA8B/uB,GACrCstB,YAAY0B,EAAAA,GAAAA,IAAqBhvB,GACjC+sB,UAAUkC,EAAAA,GAAAA,IAAsBjvB,GAChCgtB,WAAWkC,EAAAA,GAAAA,IAAuBlvB,GAClC4qB,WAAYuE,GAAAA,GACZ1E,YAAY2E,EAAAA,GAAAA,IAAuCpvB,GAE3D,GAEwC,CACpCgmB,YAAAA,GAAAA,GACAwD,WAAAA,GAAAA,GACA+E,YAAac,GAAAA,IAHjB,CAIG/F,I,wFC3yBI,SAASgG,GAAmB7U,GAC/B,OAAO,SAACrN,GAEJ,OADAA,EAAS,CAAClR,KAAMqzB,GAAAA,KACTC,GAAAA,GACFpvB,IAAUqvB,GAAAA,GAAQC,eAAgB,CAC/B5U,KAAK,uBAADtW,OAAyBiW,GAC7BkV,YAAYC,EAAAA,GAAAA,IAAkBC,GAAAA,EAAKC,cAEtCxZ,MAAK,SAACyZ,GACH3iB,EAAS,CACLlR,KAAM8zB,GAAAA,GACN3qB,KAAM,CAACoV,KAAAA,EAAMsV,KAAAA,IAErB,IAAE,OACK,SAACvpB,GACJ4G,EAAS,CACLlR,KAAM+zB,GAAAA,GACN5qB,KAAMmB,GAEd,GACR,CACJ,C,gBCzBa0pB,IAAiBngB,EAAAA,GAAAA,IAC1B,CALiB,SAAC/P,GAAgB,OAAKA,EAAM8Q,OAAOqf,GAAAA,GAAgC,EACjE,SAACC,EAAmBvzB,GAAwC,OAC/EA,EAAMkzB,KAAKM,WAAY,IAIvB,SAACtf,EAAWsf,GAAW,OACnBA,EACMppB,GAAAA,EAAO+J,MAAM3R,KAAKgxB,EAAYC,IAAKvf,EAAWwf,GAAAA,EAAeziB,QAAQ/T,OACrE,EAAE,ICfHy2B,GAAe,SAACxwB,GAAgB,OAAKA,EAAM0P,WAAWqgB,KAAKA,IAAK,EAEhEU,GAAmB,SAACzwB,GAAgB,IAAA0wB,EAAA,OAA6B,QAA7BA,EAAKF,GAAaxwB,GAAO+vB,YAAI,IAAAW,OAAA,EAAxBA,EAA0BjW,IAAK,EAExEkW,GAAoB,SAAC3wB,GAAgB,IAAA4wB,EAAA,OAAoC,QAApCA,EAAK5wB,EAAM0P,WAAWqgB,KAAKA,KAAKA,YAAI,IAAAa,OAAA,EAA/BA,EAAiCC,UAAW,EAEtFC,GAAgB,SAAC9wB,GAAgB,IAAA+wB,EAAA,OAAoC,QAApCA,EAAK/wB,EAAM0P,WAAWqgB,KAAKA,KAAKA,YAAI,IAAAgB,OAAA,EAA/BA,EAAiC1X,MAAO,E,YCW9E2X,GAAsB,SAACjB,GAA2B,OAC3DA,EAAKkB,aAAelB,EAAKmB,gBAAkBnB,EAAKoB,eAAgB,EAEpE,SAASC,GAAgBv2B,GAAgE,IAA9Dk1B,EAAIl1B,EAAJk1B,KAEnBsB,EAQAtB,EARAsB,WACAC,EAOAvB,EAPAuB,WACAJ,EAMAnB,EANAmB,eACAD,EAKAlB,EALAkB,YACAM,EAIAxB,EAJAwB,QACAJ,EAGApB,EAHAoB,gBACAK,EAEAzB,EAFAyB,YACAnP,EACA0N,EADA1N,IAEJ,OACIhoB,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,MACLkE,OAAOnG,EAAAA,EAAAA,KAACo3B,GAAAA,EAAQ,CAACjxB,MAAOywB,GAAe,EAAGhpB,KAAMspB,EAAS3qB,MAAM,aAEnE,CACItK,IAAK,SACLkE,OACInG,EAAAA,EAAAA,KAACq3B,GAAAA,EAAc,CACXL,WAAYA,EACZC,WAAYA,EACZJ,eAAgBA,GAAkB,KAI9C,CACI50B,IAAK,MACLkE,OACInG,EAAAA,EAAAA,KAACo3B,GAAAA,EAAQ,CACLjxB,OAAO6hB,aAAG,EAAHA,EAAKsP,WAAY,EACxB1pB,KAAMoa,aAAG,EAAHA,EAAKuP,aACXhrB,MAAM,YAGd6V,aAAiB/Z,IAAR2f,GAEb,CACI/lB,IAAK,UACLkE,OACInG,EAAAA,EAAAA,KAACo3B,GAAAA,EAAQ,CAACjxB,MAAO2wB,GAAmB,EAAGlpB,KAAMupB,EAAa5qB,MAAM,eAMxF,CAEA,SAAehE,EAAAA,KAAWwuB,I,eCxDbS,GAAmB,SAAC9B,GAAwB,MACrD,CACIA,EAAK+B,UAAUC,MACfhC,EAAKiC,UAAUD,MACfhC,EAAKkC,YAAYF,MACjBhC,EAAKmC,aAAaH,MAClBhC,EAAKoC,iBAAiBJ,OACxBxxB,MAAK,SAACtG,GAAI,YAAqB,IAATA,CAAoB,GAAE,EAElD,SAASm4B,GAAcrC,GACnB,IAAM+B,GAAYF,EAAAA,GAAAA,IAAa7B,EAAK+B,UAAUC,MAAOhC,EAAK+B,UAAU3R,QAC9D6R,GAAYJ,EAAAA,GAAAA,IAAa7B,EAAKiC,UAAUD,MAAOhC,EAAKiC,UAAU7R,QAC9D8R,GAAcL,EAAAA,GAAAA,IAAa7B,EAAKkC,YAAYF,MAAOhC,EAAKkC,YAAY9R,QACpE+R,GAAeN,EAAAA,GAAAA,IAAa7B,EAAKmC,aAAaH,MAAOhC,EAAKmC,aAAa/R,QACvEkS,GAAmBT,EAAAA,GAAAA,IACrB7B,EAAKoC,iBAAiBJ,MACtBhC,EAAKoC,iBAAiBhS,QAG1B,OACI9lB,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,aACLkE,OACInG,EAAAA,EAAAA,KAACo3B,GAAAA,EAAQ,CAACjxB,MAAOuvB,EAAK+B,UAAUC,MAAO9pB,KAAM6pB,EAAWlrB,MAAM,aAGtE,CACItK,IAAK,aACLkE,OACInG,EAAAA,EAAAA,KAACo3B,GAAAA,EAAQ,CAACjxB,MAAOuvB,EAAKiC,UAAUD,MAAO9pB,KAAM+pB,EAAWprB,MAAM,aAGtE,CACItK,IAAK,eACLkE,OACInG,EAAAA,EAAAA,KAACo3B,GAAAA,EAAQ,CACLjxB,MAAOuvB,EAAKkC,YAAYF,MACxB9pB,KAAMgqB,EACNrrB,MAAM,aAIlB,CACItK,IAAK,gBACLkE,OACInG,EAAAA,EAAAA,KAACo3B,GAAAA,EAAQ,CACLjxB,MAAOuvB,EAAKmC,aAAaH,MACzB9pB,KAAMiqB,EACNtrB,MAAM,aAIlB,CACItK,IAAK,oBACLkE,OACInG,EAAAA,EAAAA,KAACo3B,GAAAA,EAAQ,CACLjxB,MAAOuvB,EAAKoC,iBAAiBJ,MAC7B9pB,KAAMoqB,EACNzrB,MAAM,eAOlC,CAEA,SAAehE,EAAAA,KAAWwvB,ICxE1B,IAAMpuB,IAAQnK,EAAAA,EAAAA,GAAG,gBAUJy4B,GAAiB,SAACvC,GAAsB,OACjDA,EAAKwC,eAAiBxC,EAAKyC,UAAYzC,EAAK0C,QAAUxyB,OAAO6S,KAAKid,EAAK2C,UAAUn2B,OAAS,CAAE,EAEhG,SAASo2B,GAAY5C,GACjB,IAAM6C,EAAUrN,KACZwK,EAAK2C,UACL,SAACvnB,EAAK3K,EAAOlE,GAAG,OAAK6O,EAAIqH,KAAK,CAAClW,IAAAA,EAAKkE,MAAAA,GAAO,GAC3C,IAGJ,OACI/E,EAAAA,EAAAA,MAAAgkB,EAAAA,SAAA,CAAAllB,SAAA,EACIF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNjiB,UAAW0J,GAAM,QACjBjK,MAAO,CACH,CACIuC,IAAK,QACLkE,OACInG,EAAAA,EAAAA,KAACo3B,GAAAA,EAAQ,CACLjxB,MAAOuvB,EAAKwC,eAAiB,EAC7BtqB,KAAM8nB,EAAK8C,UACXjsB,MAAM,aAIlB,CACItK,IAAK,WACLkE,MAAOyG,GAAAA,EAAOC,OAAe,OAAE6oB,EAAKyC,WAExC,CACIl2B,IAAK,SACLkE,MAAOyG,GAAAA,EAAOC,OAAe,OAAE6oB,EAAK0C,YAK/CG,EAAQr2B,OAAS,IAAKlC,EAAAA,EAAAA,KAAA,MAAIC,UAAW0J,GAAM,WAAWzJ,SAAC,eAExDF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CAACxiB,MAAO64B,MAG9B,CAEA,SAAehwB,EAAAA,KAAW+vB,I,wCCtDpBG,GAAMC,OAAeD,GAQrBhlB,GAAqC,CACvC,CACIlS,KAAM,UACNkY,OAAM,SAAAjZ,GAAS,IAAP0Y,EAAG1Y,EAAH0Y,IACE0B,GAAM+d,EAAAA,GAAAA,IAA4Bzf,EAAI0f,QAASH,GAAGle,SAExD,OAAOrB,EAAI0f,SACP54B,EAAAA,EAAAA,KAAC2a,GAAAA,EAAI,CAACC,IAAKA,EAAKrO,MAAM,QAAQssB,QAAM,EAAA34B,SAC/BgZ,EAAI0f,UAGThsB,GAAAA,EAAOC,OAAOC,QAEtB,GAEJ,CACIvL,KAAM,UACNkY,OAAM,SAAA/X,GACF,OADOA,EAAHwX,IACO4f,OACf,GAEJ,CACIv3B,KAAM,QACNkY,OAAM,SAAAzW,GAAS,IAAPkW,EAAGlW,EAAHkW,IACJ6f,EAAsBC,GAAAA,EAAa9f,EAAIvT,OAAhCiI,EAAImrB,EAAJnrB,KAAMrB,EAAKwsB,EAALxsB,MAEb,OAAO2M,EAAIvT,OAAQ3F,EAAAA,EAAAA,KAACi5B,GAAAA,EAAW,CAAC1sB,MAAOA,EAAOqB,KAAMA,IAAWhB,GAAAA,EAAOC,OAAOC,QACjF,IAIR,SAASosB,GAAe71B,GAA0D,IAAxD2yB,EAAW3yB,EAAX2yB,YACtB,OACIh2B,EAAAA,EAAAA,KAACmb,GAAAA,GAAW,CACR1H,QAASA,GACTzI,KAAMgrB,EACNmD,WAAY,EACZC,YAAU,EACVhe,SAAU,CAACrS,UAAU,IAGjC,CAEA,SAAeR,EAAAA,KAAW2wB,I,gBC1CnB,SAASG,GAAgB74B,GA+BN,IA9BtBg2B,EAAUh2B,EAAVg2B,WACAxlB,EAAMxQ,EAANwQ,OACA4Q,EAAUphB,EAAVohB,WACA0X,EAAU94B,EAAV84B,WACAxa,EAActe,EAAdse,eACAya,EAAqB/4B,EAArB+4B,sBACAC,EAAWh5B,EAAXg5B,YACAC,EAAmBj5B,EAAnBi5B,oBACAC,EAAkBl5B,EAAlBk5B,mBACA3a,EAAIve,EAAJue,KACA4a,EAAYn5B,EAAZm5B,aACA1X,EAAmBzhB,EAAnByhB,oBACAtc,EAAKnF,EAALmF,MACAi0B,EAAIp5B,EAAJo5B,KAkBMC,EAAYjtB,GAAAA,EAAOC,OAAuB,eAAElH,GAC5Cm0B,EA5CV,SAAuBn0B,GACnB,OAAQA,GACJ,IAAK,SACD,MAAO,UACX,IAAK,UACD,MAAO,SACX,QACI,MAAO,UAEnB,CAmCuBo0B,CAAcp0B,GAEjC,MAAO,CACH,CACI1D,IAAK,QACLkE,OAAOnG,EAAAA,EAAAA,KAACkhB,GAAAA,EAAK,CAAC3U,MAAOutB,EAAYj4B,KAAK,OAAO+L,KAAMisB,KAEvD,CACI53B,IAAK,OACLkE,MAAOyG,GAAAA,EAAOC,OAAgB,QAAE+sB,GAChCxX,QAASxP,QAAQgnB,IAErB,CACI33B,IAAK,SACLkE,OACInG,EAAAA,EAAAA,KAACkhB,GAAAA,EAAK,CACFtT,KAAMgU,GAAc,OACpBrV,MAAQqV,EAAwB,UAAX,SACrB/f,KAAK,SAGbugB,QAASxP,QAAQ5B,IAErB,CACI/O,IAAK,cACLkE,OAAOnG,EAAAA,EAAAA,KAACohB,GAAmB,CAACN,SAAUmB,IACtCG,SAAUlN,KAAS+M,IAEvB,CACIhgB,IAAK,iBACLkE,OACInG,EAAAA,EAAAA,KAACkhB,GAAAA,EAAK,CACFtT,KAAM2rB,GAAgD,iBACtDhtB,MAAM,UACN1K,KAAK,SAGbugB,QAASxP,QAAQkM,IAErB,CACI7c,IAAK,OACLkE,OAAOnG,EAAAA,EAAAA,KAACkhB,GAAAA,EAAK,CAACtT,KAAK,OAAOrB,MAAM,SAAS1K,KAAK,SAC9CugB,QAASxP,QAAQmM,IAErB,CACI9c,IAAK,SACLkE,OAAOnG,EAAAA,EAAAA,KAACkhB,GAAAA,EAAK,CAACtT,KAAM4oB,EAAYjqB,MAAM,SAAS1K,KAAK,SACpDugB,QAASoU,EAAc,GAE3B,CACIv0B,IAAK,iBACLkE,OAAO6zB,EAAAA,GAAAA,GAAYR,IAEvB,CACIv3B,IAAK,iBACLkE,OAAO6zB,EAAAA,GAAAA,GAAYP,IAEvB,CACIx3B,IAAK,eACLkE,OAAO6zB,EAAAA,GAAAA,GAAYN,IAEvB,CACIz3B,IAAK,cACLkE,MAAOmzB,aAAU,EAAVA,EAAY9K,cACnBpM,QAASxP,QAAQ0mB,IAErB,CACIr3B,IAAK,YACLkE,MAAOyG,GAAAA,EAAOC,OAAiB,SAAE8sB,EAAc,CAC3C9sB,OAAQ,UAIxB,CClFA,IAAMlD,IAAQnK,EAAAA,EAAAA,GAAG,aA+BjB,SAASy6B,GAAez5B,GAAU,IAAR4f,EAAI5f,EAAJ4f,KAChBrN,GAAWC,EAAAA,EAAAA,MAEX4I,EAAWrT,EAAAA,aAAkB,WAC/BwK,EAASkiB,GAAmB7U,GAChC,GAAG,CAACrN,EAAUqN,IAGd,OADAzD,EAAAA,GAAAA,IAAWf,EAAU,CAACse,QAAS,KAAWC,UAAW/Z,IAC9C,IACX,CAtCyBhX,KAAAA,MAAgB,CACrCgxB,UAAWhxB,KAAAA,QACPA,KAAAA,MAAgB,CACZixB,oBAAqBjxB,KAAAA,OAAiBC,WACtCixB,gBAAiBlxB,KAAAA,OAAiBC,WAClCkxB,cAAenxB,KAAAA,OAAiBC,WAChCmxB,YAAapxB,KAAAA,OAAiBC,WAC9BoxB,WAAYrxB,KAAAA,OAAiBC,WAC7BqxB,kBAAmBtxB,KAAAA,KAAeC,WAClCsxB,iBAAkBvxB,KAAAA,KAAeC,WACjCuxB,QAASxxB,KAAAA,KAAeC,WACxBwxB,KAAMzxB,KAAAA,KAAeC,WACrB0V,KAAM3V,KAAAA,KAAeC,WACrByxB,YAAa1xB,KAAAA,OAAiBC,WAC9B0xB,cAAe3xB,KAAAA,OAAiBC,cAGxC2sB,YAAa5sB,KAAAA,MAAgB,CACzB4xB,QAAS5xB,KAAAA,OAAiBC,WAC1B4sB,IAAK7sB,KAAAA,MAAgBC,aAEzB+W,KAAMhX,KAAAA,OAAiBC,WACvB2V,OAAQ5V,KAAAA,QAAkBA,KAAAA,QAC1B4H,OAAQ5H,KAAAA,KAAeC,WACvBmwB,YAAapwB,KAAAA,KAAeC,WAC5BqwB,mBAAoBtwB,KAAAA,KAAeC,WACnCowB,oBAAqBrwB,KAAAA,KAAeC,aAYvC,IAEK4xB,GAAQ,SAAA74B,IAAAC,EAAAA,EAAAA,GAAA44B,EAAA74B,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAA04B,GAAA,SAAAA,IAAA,OAAAv4B,EAAAA,EAAAA,GAAA,KAAAu4B,GAAA34B,EAAA4H,MAAA,KAAAJ,UAAA,CAmPT,OAnPShE,EAAAA,EAAAA,GAAAm1B,EAAA,EAAAh5B,IAAA,uBAAAkE,MAWV,WACIH,KAAKxD,MAAM8e,aACf,GAAC,CAAArf,IAAA,YAAAkE,MAED,WACI,IAAOob,EAAiBvb,KAAKxD,MAAtB+e,cACP2Z,EAA6Bl1B,KAAKxD,MAAMkzB,KAAjCjU,EAAYyZ,EAAZzZ,aAAcrB,EAAI8a,EAAJ9a,KACrB,OAAO3F,GAAAA,GAAUiH,4BAA4B,CAACtB,KAAAA,EAAMqB,aAAAA,EAAcF,cAAAA,GACtE,GAAC,CAAAtf,IAAA,iBAAAkE,MAED,SAAeg1B,EAAUn5B,GACrB,OACIhC,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,GAAM,YAAYzJ,UAC9BF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,OACLkE,OACI/E,EAAAA,EAAAA,MAAA,QAAAlB,SAAA,CACKi7B,EAASJ,cAAc,KAExB/6B,EAAAA,EAAAA,KAACwS,EAAAA,EAAe,CACZE,KAAK,iBACL9E,KAAMutB,EAASJ,cACfj0B,KAAK,UAKrB,CAAC7E,IAAK,kBAAmBkE,MAAOnE,EAAQ,GACxC,CAACC,IAAK,UAAWkE,MAAOg1B,EAASP,QAAQ3J,YACzC,CAAChvB,IAAK,OAAQkE,MAAOg1B,EAASpc,KAAKkS,YACnC,CAAChvB,IAAK,cAAekE,MAAOg1B,EAASL,aACrC,CAAC74B,IAAK,WAAYkE,MAAOg1B,EAASZ,eAClC,CACIt4B,IAAK,SACLkE,MAAOyG,GAAAA,EAAOC,OAAe,OAAEsuB,EAASX,cAE5C,CACIv4B,IAAK,aACLkE,OACInG,EAAAA,EAAAA,KAACo3B,GAAAA,EAAQ,CACLjxB,MAAOg1B,EAASC,iBAChBxtB,KAAMutB,EAASE,aACf9uB,MAAM,aAIlB,CACItK,IAAK,kBACLkE,OACInG,EAAAA,EAAAA,KAACs7B,GAAAA,GAASC,eAAc,CACpBp1B,MAAOg1B,EAASb,gBAChBztB,OAAO,WAInB,CACI5K,IAAK,kBACLkE,OACInG,EAAAA,EAAAA,KAACs7B,GAAAA,GAASC,eAAc,CACpBp1B,MAAOg1B,EAASd,oBAChBxtB,OAAO,eAlDS7K,EA0DhD,GAAC,CAAAC,IAAA,kBAAAkE,MAED,WAAmB,IAAD1D,EAAA,KACP23B,EAAap0B,KAAKxD,MAAMkzB,KAAxB0E,UAEP,OACIA,IACIp6B,EAAAA,EAAAA,KAACuf,EAAAA,EAAkB,CACfzY,KAAK,IACLvF,KAAK,YACLtB,UAAW0J,GAAM,aACjB6V,WAAS,EAAAtf,SAERP,IAAKy6B,GAAW,SAACe,EAAUn5B,GAAK,OAAKS,EAAK+4B,eAAeL,EAAUn5B,EAAM,KAI1F,GAAC,CAAAC,IAAA,eAAAkE,MAED,WACI,IAAO6Y,EAAUhZ,KAAKxD,MAAMkzB,KAArB1W,OAEP,OACIA,aAAM,EAANA,EAAQ9c,QAAS,IACblC,EAAAA,EAAAA,KAACuf,EAAAA,EAAkB,CAACzY,KAAK,IAAIvF,KAAK,SAAStB,UAAW0J,GAAM,UAAW6V,WAAS,EAAAtf,SAC3EP,IAAKqf,GAAQ,SAACyc,GAAK,OAChBz7B,EAAAA,EAAAA,KAAC07B,GAAAA,EAAK,CAAqBvvB,MAAOsvB,GAAtBA,EAAM9uB,QAAyB,KAK/D,GAAC,CAAA1K,IAAA,oBAAAkE,MAED,WACI,IAAO6vB,EAAehwB,KAAKxD,MAApBwzB,YAEP,OACIA,EAAY9zB,OAAS,IACjBlC,EAAAA,EAAAA,KAACuf,EAAAA,EAAkB,CAACzY,KAAK,IAAIvF,KAAK,eAAeie,WAAW,EAAMtf,UAC9DF,EAAAA,EAAAA,KAACk5B,GAAe,CAAClD,YAAaA,KAI9C,GAAC,CAAA/zB,IAAA,gBAAAkE,MAED,WACI,IAAAw1B,EAA+B31B,KAAKxD,MAAMkzB,KAAnCkG,EAAUD,EAAVC,WAAYC,EAAQF,EAARE,SAEnB,OACI77B,EAAAA,EAAAA,KAACuf,EAAAA,EAAkB,CAACzY,KAAK,IAAIvF,KAAK,UAAUtB,UAAW0J,GAAM,WAAWzJ,UACpEF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAK,CACD,CACIuC,IAAK,cACLkE,MAAOxG,IAAKi8B,GAAY,SAACE,GAAG,OAAK97B,EAAAA,EAAAA,KAACkhB,GAAAA,EAAK,CAAWtT,KAAMkuB,GAAXA,EAAkB,IAC/D1Z,SAASwZ,aAAU,EAAVA,EAAY15B,QAAS,GAElC,CACID,IAAK,YACLkE,MAAOxG,IAAKk8B,GAAU,SAACC,GAAG,OAAK97B,EAAAA,EAAAA,KAACkhB,GAAAA,EAAK,CAAWtT,KAAMkuB,GAAXA,EAAkB,IAC7D1Z,SAASyZ,aAAQ,EAARA,EAAU35B,QAAS,IAC/BiI,QAAAlH,EAAAA,EAAAA,GACEo2B,GAAiBrzB,KAAKxD,MAAMkzB,WAKnD,GAAC,CAAAzzB,IAAA,gBAAAkE,MAED,WACI,IAAOuvB,EAAQ1vB,KAAKxD,MAAbkzB,KAGP,OAFgBuC,GAAevC,KAIvB11B,EAAAA,EAAAA,KAACuf,EAAAA,EAAkB,CAACzY,KAAK,IAAIvF,KAAK,UAAUtB,UAAW0J,GAAM,WAAY6V,WAAS,EAAAtf,UAC9EF,EAAAA,EAAAA,KAACs4B,IAAWz4B,EAAAA,EAAAA,GAAA,GAAK61B,KAIjC,GAAC,CAAAzzB,IAAA,qBAAAkE,MAED,WACI,IAAOuvB,EAAQ1vB,KAAKxD,MAAbkzB,KAGP,OAFgBiB,GAAoBjB,KAI5B11B,EAAAA,EAAAA,KAACuf,EAAAA,EAAkB,CACfzY,KAAK,IACLvF,KAAK,iBACLtB,UAAW0J,GAAM,OACjB6V,WAAS,EAAAtf,UAETF,EAAAA,EAAAA,KAAC+2B,GAAgB,CAAMrB,KAAAA,KAIvC,GAAC,CAAAzzB,IAAA,kBAAAkE,MAED,WACI,IAAOuvB,EAAQ1vB,KAAKxD,MAAbkzB,KAGP,OAFgB8B,GAAiB9B,KAIzB11B,EAAAA,EAAAA,KAACuf,EAAAA,EAAkB,CACfzY,KAAK,IACLvF,KAAK,YACLtB,UAAW0J,GAAM,aACjB6V,WAAS,EAAAtf,UAETF,EAAAA,EAAAA,KAAC+3B,IAAal4B,EAAAA,EAAAA,GAAA,GAAK61B,KAInC,GAAC,CAAAzzB,IAAA,aAAAkE,MAED,WACI,IAAAQ,EAA+DX,KAAKxD,MAA7D+X,EAAO5T,EAAP4T,QAAS+G,EAAW3a,EAAX2a,YAAalS,EAAazI,EAAbyI,cAAe/C,EAAS1F,EAAT0F,UAAWqpB,EAAI/uB,EAAJ+uB,KAEvD,OACIt0B,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,KAAS8E,UAAWW,EAAe2sB,UAAW,EAAE77B,SAAA,EAC5DkB,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,GAAM,UAAUzJ,SAAA,EAC5BF,EAAAA,EAAAA,KAAC2a,GAAAA,EAAI,CACDke,QAAM,EACNje,KAAKohB,EAAAA,GAAAA,IAAuB,CAACzhB,QAAAA,EAAS6F,KAAMsV,aAAI,EAAJA,EAAMtV,OAClDngB,UAAW0J,GAAM,QAAQzJ,SAExBw1B,aAAI,EAAJA,EAAMtV,QAGXpgB,EAAAA,EAAAA,KAACgH,GAAAA,EAAM,CAAC0L,KAAK,iBAAiB5L,KAAK,IAAIxF,QAASggB,EAAYphB,UACxDF,EAAAA,EAAAA,KAACG,EAAAA,EAAI,CAACE,QAAQ,QAAQD,KAAM,eAInCiM,IAAarM,EAAAA,EAAAA,KAACoN,GAAAA,EAAK,CAACjB,MAAOE,IAE3BuG,QAAQ8iB,KACLt0B,EAAAA,EAAAA,MAACmH,EAAAA,SAAc,CAAArI,SAAA,CACV8F,KAAKqc,YACLrc,KAAKi2B,gBACLj2B,KAAKk2B,eACLl2B,KAAKm2B,kBACLn2B,KAAKo2B,oBACLp2B,KAAKq2B,qBACLr2B,KAAKs2B,gBACLt2B,KAAKu2B,uBAK1B,GAAC,CAAAt6B,IAAA,SAAAkE,MAED,WACI,OACI/E,EAAAA,EAAAA,MAACmH,EAAAA,SAAc,CAAArI,SAAA,EACXF,EAAAA,EAAAA,KAACi6B,GAAe,CAAC7Z,KAAMpa,KAAKxD,MAAM4d,OACjCpa,KAAKw2B,eAGlB,KAACvB,CAAA,CAnPS,CAAS/xB,EAAAA,WAqQjBqS,GAAqB,CACvB0Z,mBAAAA,IAGJ,UAAetS,EAAAA,GAAAA,KAAQnH,EAAAA,EAAAA,KAnBC,SAAC7V,GACrB,IAAA82B,EAAyCtG,GAAaxwB,GAA/C+vB,EAAI+G,EAAJ/G,KAAMtpB,EAAMqwB,EAANrwB,OAAQD,EAAKswB,EAALtwB,MAAOE,EAASowB,EAATpwB,UAG5B,MAAO,CACHkO,SAHYmB,EAAAA,EAAAA,IAAW/V,GAIvBwG,MAAAA,EACAE,UAAAA,EACAD,OAAAA,EACAspB,KAAAA,EACAM,YAAaN,GAAQG,GAAelwB,EAAO,CAAC+vB,KAAAA,IAC5CnU,eAAemB,EAAAA,EAAAA,IAAwB/c,GAE/C,GAMgD4V,IAAqBhM,GAAAA,EAArE,CAAgF0rB,I,oDChS1EtxB,IAAQnK,EAAAA,EAAAA,GAAG,oBAWjB,SAASk9B,KACL,IAAM3pB,GAAWC,EAAAA,EAAAA,MAEXsiB,GAAa5Q,EAAAA,EAAAA,IAAYiY,GAAAA,IACzBC,GAAYlY,EAAAA,EAAAA,IAAYmY,GAAAA,IAExBjhB,EAAWrT,EAAAA,aACb,WACIwK,EAAS+pB,GAAAA,GAAQ5yB,WAAC,EAADJ,WACrB,GACA,CAACiJ,IAKL,OAFAgqB,EAAAA,GAAAA,IAA6BnhB,OAAUvT,EAAW,CAACitB,WAAAA,EAAYsH,UAAAA,IAExD,IACX,CAAC,IAEKI,GAAK,SAAAvtB,IAAApN,EAAAA,EAAAA,GAAA26B,EAAAvtB,GAAA,IAAAnN,GAAAC,EAAAA,EAAAA,GAAAy6B,GAAA,SAAAA,IAAA,IAAAv6B,GAAAC,EAAAA,EAAAA,GAAA,KAAAs6B,GAAA,QAAAnzB,EAAAC,UAAA5H,OAAA6H,EAAA,IAAAC,MAAAH,GAAAI,EAAA,EAAAA,EAAAJ,EAAAI,IAAAF,EAAAE,GAAAH,UAAAG,GAqGN,OArGMxH,EAAAH,EAAAO,KAAAqH,MAAA5H,EAAA,OAAA6H,OAAAJ,KACPpE,MAAe,CACX+lB,OAAQ,GACRuR,oBAAgB50B,EAChB60B,gBAAiBz6B,EAAKD,MAAM06B,gBAC5BC,MAAO,IAmCX16B,EACA26B,iBAAmBC,MACf,SAACJ,GAAwE,OAALnzB,UAAA5H,OAAA,QAAAmG,IAAAyB,UAAA,GAAAA,UAAA,GAAG,IAC7D5G,WAAU,SAACwyB,GAAI,OAAKuH,IAAmBvH,EAAKtV,IAAI,GAAC,IAC9D3d,EAED66B,mBAAqB,SAAA98B,GAAA,IAAEe,EAAIf,EAAJe,KAAI,OAAsBkB,EAAK8C,SAAS,CAACmmB,OAAQnqB,GAAO,EAADkB,EAE9E6Q,gBAAkB,SAACiqB,EAAoCv7B,GACnD,IAAA2E,EAAmDlE,EAAKD,MAAjD26B,EAAKx2B,EAALw2B,MAAOK,EAAc72B,EAAd62B,eAAgBzU,EAAiBpiB,EAAjBoiB,kBAE9B,GAAIyU,EAAgB,CAChB,IAAMxU,EAAiB,CAACrf,GAAM,aAAcA,GAAM,cAElDlH,EAAK8C,SAAS,CAAC03B,eAAgBE,EAAMn7B,GAAOoe,KAAM+c,MAAAA,IAClDpU,EAAkBE,GAAAA,GAAYD,EAClC,CACJ,EAACvmB,EAEDg7B,oBAAsB,SAAA/7B,GAA4C,IAA1ChC,EAAKgC,EAALhC,MACb+9B,EAAuBh7B,EAAKD,MAA5Bi7B,oBAEDvP,EAAgBjnB,IAAQvH,GAAO,SAAC6T,GAAM,OAAKA,EAAOrS,OAAO,IACzDg8B,EAAe,GAAA/yB,QAAAlH,EAAAA,EAAAA,GAAOtD,IAAKuuB,GAAe,SAAC3a,GAAM,OAAKA,EAAOhS,IAAI,KAAC,CAAE,YAE1EkB,EAAK8C,SAAS,CAAC23B,gBAAAA,IACfO,EAAoBP,EACxB,EAACz6B,EAED2M,cAAgB,SAACyc,GAGb,OAFYA,EAAI6R,SAGZ,KAAKC,GAAAA,GAAQC,WACT/R,EAAIgS,iBACJp7B,EAAKq7B,uBACL,MAEJ,KAAKH,GAAAA,GAAQI,SACTlS,EAAIgS,iBACJp7B,EAAKu7B,uBACL,MAEJ,KAAKL,GAAAA,GAAQM,OACTpS,EAAIgS,iBACJp7B,EAAKD,MAAM6nB,cAIvB,EAAC5nB,EAEDy7B,uBAAqB1Y,EAAAA,GAAAA,GAAAC,KAAAA,MAAG,SAAAC,IAAA,IAAApE,EAAA,OAAAmE,KAAAA,MAAA,SAAAS,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OACF,OAAX9E,EAAe7e,EAAKD,MAApB8e,YAAW4E,EAAAE,KAAA,EAEZ9E,IAAc,KAAD,mBAAA4E,EAAAQ,OAAA,GAAAhB,EAAA,KACtBjjB,EAED07B,wBAAuB,eAAA96B,GAAAmiB,EAAAA,GAAAA,GAAAC,KAAAA,MAAG,SAAA2Y,EAAOj4B,GAAa,IAAAk4B,EAAA,OAAA5Y,KAAAA,MAAA,SAAA6Y,GAAA,cAAAA,EAAAnY,KAAAmY,EAAAlY,MAAA,OAClB,OAAjBiY,EAAqB57B,EAAKD,MAA1B67B,kBAAiBC,EAAAlY,KAAA,EAElBiY,EAAkBl4B,GAAoC,KAAD,mBAAAm4B,EAAA5X,OAAA,GAAA0X,EAAA,KAC9D,gBAAAzX,GAAA,OAAAtjB,EAAA6G,MAAA,KAAAJ,UAAA,EAJsB,GAItBrH,CAAC,CAqLD,OArLAqD,EAAAA,EAAAA,GAAAk3B,EAAA,EAAA/6B,IAAA,aAAA8D,IA7FD,WACI,IAAOw4B,EAAmBv4B,KAAKxD,MAAxB+7B,gBACArB,EAAmBl3B,KAAKL,MAAxBu3B,gBAEDzpB,EAAUzL,IACZu2B,EAAgB9qB,QAAQ/T,OACxB,SAACuI,GAA4B,IAAvBu2B,EAAO10B,UAAA5H,OAAA,QAAAmG,IAAAyB,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAG7H,EAAG6H,UAAA5H,OAAA,EAAA4H,UAAA,QAAAzB,EAKnB,MAJe,WAAYm2B,GAAWA,EAAQC,QACvB,YAARx8B,GACXgG,EAAIkQ,KAAKlW,GAENgG,CACX,GACA,IAGJ,OAAOtI,IAAK8T,GAAS,SAACF,GAAM,MAAM,CAC9BhS,KAAMgS,EACNrS,QAASw9B,KAAUxB,EAAiB3pB,GACpCpO,QAASyH,GAAAA,EAAOC,OAAsB,cAAE0G,GAC3C,GACL,GAAC,CAAAtR,IAAA,gBAAA8D,IAED,WACI,IAAAmC,EAA6BlC,KAAKxD,MAA3B26B,EAAKj1B,EAALi1B,MAAOjT,EAAWhiB,EAAXgiB,YACP+S,EAAkBj3B,KAAKL,MAAvBs3B,eAIP,OAFiB7S,EAAAA,GAAAA,IAAYF,EAAajB,GAAAA,IAExBjjB,KAAKo3B,iBAAiBH,EAAgBE,IAAU,CACtE,GAAC,CAAAl7B,IAAA,uBAAAkE,MAiED,WACI,IAAOg3B,EAASn3B,KAAKxD,MAAd26B,MACDn7B,EAAQgE,KAAK24B,cAEf38B,GAAS,GAAKA,EAAQm7B,EAAMj7B,OAAS,GACrC8D,KAAKT,SAAS,CAAC03B,eAAgBE,EAAMn7B,EAAQ,GAAGoe,MAExD,GAAC,CAAAne,IAAA,uBAAAkE,MAED,WACI,IAAOg3B,EAASn3B,KAAKxD,MAAd26B,MACDn7B,EAAQgE,KAAK24B,cAEf38B,EAAQ,GACRgE,KAAKT,SAAS,CAAC03B,eAAgBE,EAAMn7B,EAAQ,GAAGoe,MAExD,GAAC,CAAAne,IAAA,gBAAAkE,MAED,SAAciY,EAAiByI,GAC3B,IAAAhe,EAQI7C,KAAKxD,MAPL4N,EAAgBvH,EAAhBuH,iBACAC,EAAUxH,EAAVwH,WACAuuB,EAAW/1B,EAAX+1B,YACAC,EAAah2B,EAAbg2B,cACA1uB,EAAUtH,EAAVsH,WACAD,EAAYrH,EAAZqH,aACA4uB,EAAWj2B,EAAXi2B,YAEEC,EAAa5uB,IAAeD,EAElC,OACI9O,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,GAAM,UAAW,CAACyU,OAAAA,EAAQyI,MAAAA,IAAQ3mB,SAAA,EAC9CF,EAAAA,EAAAA,KAACud,EAAAA,EAAM,CACHtd,UAAW0J,GAAM,gBACjBjD,UAAQ,EACRP,MAAOkK,EACP/J,SAAU8J,EACV5J,YAAY,kBACZqmB,IAAK,iBAGTzrB,EAAAA,EAAAA,MAAC4F,GAAAA,EAAM,CACH/G,UAAW0J,GAAM,gBACjB7C,KAAK,IACLxF,QAASu9B,EACT59B,SAAU89B,EAAW7+B,SAAA,EAErBF,EAAAA,EAAAA,KAACG,EAAAA,EAAI,CAACE,QAAQ,WAAW,WAASy+B,MAGtC9+B,EAAAA,EAAAA,KAAC4J,GAAAA,EAAQ,CACL3J,UAAW0J,GAAM,gBACjBe,QAAQ,QACRW,WAAY,CAAC,UACbZ,QACIrJ,EAAAA,EAAAA,MAAC4F,GAAAA,EAAM,CAAChG,SAAU49B,IAAgBI,GAAAA,GAAaC,OAAQpS,IAAK,cAAc3sB,SAAA,EACtEF,EAAAA,EAAAA,KAACG,EAAAA,EAAI,CAACE,QAAQ,QAAQD,KAAK,UAAU,aAI7C0K,UACI9K,EAAAA,EAAAA,KAACmC,GAAAA,EAAc,CACXzC,MAAOsG,KAAKk5B,WACZ54B,SAAUN,KAAKy3B,oBACfx9B,UAAW0J,GAAM,+BAK7B3J,EAAAA,EAAAA,KAACm/B,GAAAA,GAA0B,CAACl/B,UAAW0J,GAAM,oBAGzD,GAAC,CAAA1H,IAAA,iBAAAkE,MAED,WAAkB,IAADE,EAAA,KACb8Y,EAAsEnZ,KAAKxD,MAApEo8B,EAAWzf,EAAXyf,YAAatkB,EAAO6E,EAAP7E,QAASpK,EAAYiP,EAAZjP,aAAcga,EAAW/K,EAAX+K,YAAa/Z,EAAUgP,EAAVhP,WAClDga,GAAUC,EAAAA,GAAAA,IAAYF,EAAajB,GAAAA,IAEzC,OACIjpB,EAAAA,EAAAA,KAACge,EAAAA,GAAM,CAACC,UAAWkM,EAA0B,EAAhBjM,GAAAA,IAAqBA,GAAAA,GAAekhB,SAAUjV,EAAQjqB,SAC9E,SAACsC,GACE,IAAO2b,EAAY3b,EAAZ2b,SACP,OACI/c,EAAAA,EAAAA,MAAA,OACInB,UAAW0J,GAAM,WAAY,CACzByU,OAAQD,EACR0I,MAAOsD,IACRjqB,SAAA,EAEHkB,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,GAAM,gBAAgBzJ,SAAA,CACjCmG,EAAKgY,cAAcF,EAAUgM,IAC9BnqB,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,GAAM,aACtB3J,EAAAA,EAAAA,KAACq/B,GAAAA,EAAM,CAACjd,QAAS9H,KACjBta,EAAAA,EAAAA,KAACiQ,EAAS,CAACC,aAAcA,EAAcC,WAAYA,QAGvDnQ,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,GAAM,iBAAiBzJ,UACnCF,EAAAA,EAAAA,KAACs/B,GAAAA,EAAW,CACRx4B,KAAK,IACLX,MAAOy4B,EACPl/B,MAAO6/B,GAAAA,GACPh+B,KAAK,gCACLkF,SAAUJ,EAAK83B,6BAIvBn+B,EAAAA,EAAAA,KAACwrB,GAAc,CAACllB,SAAUD,EAAKi3B,uBAG3C,GAGZ,GAAC,CAAAr7B,IAAA,gBAAAkE,MAED,WACI,IAAAkZ,EACIrZ,KAAKxD,MADFo8B,EAAWvf,EAAXuf,YAAazB,EAAK9d,EAAL8d,MAAOjT,EAAW7K,EAAX6K,YAAa9K,EAAcC,EAAdD,eAAgBiL,EAAWhL,EAAXgL,YAAakU,EAAelf,EAAfkf,gBAErEnP,EAA0CppB,KAAKL,MAAxCs3B,EAAc7N,EAAd6N,eAAgBC,EAAe9N,EAAf8N,gBAEjBsC,GAAWpV,EAAAA,GAAAA,IAAYF,EAAajB,GAAAA,IAEpCxV,GAAO5T,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACN0+B,EAAgB9qB,SAAO,IAC1BM,MAAIlU,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACG0+B,EAAgB9qB,QAAQM,MAAI,IAC/B0rB,OAAQ,CAAC//B,MAAOw9B,KAEpB9oB,KAAMwqB,IAGV,OACIx9B,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,GAAM,UAAW,CAACkd,MAAO2Y,IAAWt/B,SAAA,EAChDF,EAAAA,EAAAA,KAAC4f,EAAAA,GAAa/f,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACN0+B,GAAe,IACnBlV,YAAarjB,KAAKsN,gBAClBuM,UAAWT,EACX3L,QAASA,EACT/T,MAAOy9B,EACPjqB,IAAKvJ,KACLuB,UAAWqzB,EAAgBrzB,UAC3ByzB,cAAe34B,KAAK24B,iBAGvBa,IACGx/B,EAAAA,EAAAA,KAACi7B,GAAQ,CACL7a,KAAM6c,EACN3b,YAAa+I,EACbjb,cAAepJ,KAAKoJ,kBAKxC,GAAC,CAAAnN,IAAA,SAAAkE,MAED,WACI,IAAOic,EAAWpc,KAAKxD,MAAhB4f,QACAsJ,EAAU1lB,KAAKL,MAAf+lB,OAEP,OACItqB,EAAAA,EAAAA,MAACke,EAAAA,EAAa,CAAApf,SAAA,EACVF,EAAAA,EAAAA,KAAC08B,GAAY,KACb18B,EAAAA,EAAAA,KAACkM,EAAAA,GAAerM,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKmG,KAAKxD,OAAK,IAAAtC,UAC3BkB,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,KAAS8E,UAAWzI,KAAKoJ,cAAe2sB,UAAW,EAAE77B,SAAA,EACjEkB,EAAAA,EAAAA,MAACse,EAAAA,GAAe,CAAAxf,SAAA,CACX8F,KAAK2Z,iBACL3Z,KAAKsc,oBAGVtiB,EAAAA,EAAAA,KAACivB,GAAU,CAEP7M,QAASA,EACTd,YAAatb,KAAKk4B,uBAFbxS,IAKT1rB,EAAAA,EAAAA,KAACskB,GAAoB,YAKzC,KAAC0Y,CAAA,CA1RM,CAASz0B,EAAAA,WA+TdgT,GAAqB,CACvB8iB,kBAAAA,GAAAA,GACAtV,kBAAAA,GAAAA,GACA3Y,iBAAAA,GAAAA,GACAia,YAAAA,GAAAA,GACAoT,oBAAAA,GAAAA,IAGEhb,IAAYjH,EAAAA,EAAAA,KA1CM,SAAC7V,GACrB,IAAOukB,EAAevkB,EAAMilB,OAArBV,YACPqM,EACI5wB,EAAM0P,WAAW8nB,MAAMA,MADpByB,EAAWrI,EAAXqI,YAAazB,EAAK5G,EAAL4G,MAAO7iB,EAAOic,EAAPjc,QAASlO,EAAMmqB,EAANnqB,OAAQD,EAAKoqB,EAALpqB,MAAOE,EAASkqB,EAATlqB,UAAWgE,EAAUkmB,EAAVlmB,WAGxDqvB,GAAeC,EAAAA,GAAAA,IAAgBh6B,GAC/Bu3B,GAAkB0C,EAAAA,GAAAA,IAAmBj6B,IAAUk6B,GAAAA,GAC/CzgB,EAAiB9E,IAAYlO,EAE7BmyB,GAAkBuB,EAAAA,GAAAA,IAA4Bn6B,GAE9C63B,GAAiBuC,EAAAA,GAAAA,IAAyBp6B,GAEhD,MAAO,CACH2U,QAAAA,EACAlO,OAAAA,EACAD,MAAAA,EACAE,UAAAA,EAEA8wB,MAAOuC,EACPvvB,WAAYgtB,EAAMj7B,OAClBgO,aAAcwvB,EAAax9B,OAC3Bg7B,gBAAAA,EACA7sB,WAAAA,EACAuuB,YAAAA,EACA1U,YAAAA,EACA9K,eAAAA,EACAmf,gBAAAA,EACAf,eAAAA,EACAZ,WAAWC,EAAAA,GAAAA,IAA4Bl3B,GACvCm5B,aAAakB,EAAAA,GAAAA,IAA8Br6B,GAEnD,GAU2C4V,IAE3C,UAAeoH,EAAAA,GAAAA,IAAQF,GAAWwd,GAAAA,EAAlC,CAA+CjD,I,sFCzZzClc,GAAW,IAAIof,GAAAA,EAEd,SAASC,KACZ,OAAO,SAACptB,GAIJ,OAHAA,EAAS,CAAClR,KAAMu+B,GAAAA,GAAWrkB,UAE3B+E,GAASuf,oBACFlL,GAAAA,GACFmL,KAAKlL,GAAAA,GAAQmL,iBAAkB,CAC5BC,WAAY,CACR/f,KAAM,uBACN6U,WAAY,CAAC,KAAM,OAAQ,6BAE/BmL,aAAc3f,GAAS4f,kBAE1BzkB,MAAK,SAAC0kB,GACH5tB,EAAS,CACLlR,KAAMu+B,GAAAA,GAAW7jB,QACjBvR,KAAM,CAAC21B,OAAAA,IAEf,IAAE,OACK,SAACx0B,GACAA,EAAMy0B,OAASC,KAAAA,MAASC,UACxB/tB,EAAS,CAAClR,KAAMu+B,GAAAA,GAAWU,YAE3B/tB,EAAS,CACLlR,KAAMu+B,GAAAA,GAAW5jB,QACjBxR,KAAM,CAACmB,MAAAA,IAGnB,GACR,CACJ,CA6BO,SAAS40B,KACZ,MAAO,CACHl/B,KAAMm/B,GAAAA,GAEd,CCqBA,IAcMzlB,GAAqB,CACvB0lB,aDnEG,SAAsBC,EAAY3/B,GACrC,OAAO,SAACwR,GAGJ,OAFAA,EAAS,CAAClR,KAAMs/B,GAAAA,GAAeplB,UAExB8kB,KAAAA,GACFpsB,IAAI,CAACgM,KAAK,wBAADtW,OAA0B+2B,EAAE,WAAW3/B,GAChD0a,MAAK,WACFlJ,EAAS,CAAClR,KAAMs/B,GAAAA,GAAe5kB,UAC/BxJ,EAASotB,MACTptB,EAASguB,KACb,IAAE,OACK,SAAC50B,GACJ4G,EAAS,CACLlR,KAAMs/B,GAAAA,GAAe3kB,QACrBxR,KAAM,CAACmB,MAAAA,IAEf,GACR,CACJ,ECkDIi1B,eDhDG,SAAwBF,GAC3B,MAAO,CACHr/B,KAAMw/B,GAAAA,GACNr2B,KAAM,CAACk2B,GAAAA,GAEf,EC4CIH,gBAAAA,IAGJ,UAAevlB,EAAAA,EAAAA,KApBS,SAAC7V,GACrB,IAAA27B,EACI37B,EAAM0P,WAAWsrB,OADdY,EAAMD,EAANC,OAAQC,EAAWF,EAAXE,YAGf,MAAO,CACHlnB,QAJmCgnB,EAAXG,YAKxBr1B,OAL+Ck1B,EAAVI,WAMrCv1B,MAN0Dm1B,EAATK,UAOjDt1B,UAPyEi1B,EAAbM,cAQ5Dxf,QAASof,EACTK,OAAQN,EAEhB,GAQwChmB,GAAxC,EAtEA,SAAa/a,GAYE,IAXLshC,EAAWthC,EAAjBe,KACA2/B,EAAE1gC,EAAF0gC,GACAW,EAAMrhC,EAANqhC,OACA5hC,EAASO,EAATP,UACAmiB,EAAO5hB,EAAP4hB,QACAgf,EAAc5gC,EAAd4gC,eACAL,EAAevgC,EAAfugC,gBACAE,EAAYzgC,EAAZygC,aACA3mB,EAAO9Z,EAAP8Z,QACAnO,EAAK3L,EAAL2L,MACAE,EAAS7L,EAAT6L,UAEA01B,GAA2BC,EAAAA,EAAAA,UAASF,GAAYG,GAAAp9B,EAAAA,EAAAA,GAAAk9B,EAAA,GAAzCxgC,EAAI0gC,EAAA,GAAEC,EAAUD,EAAA,GAKvB,OACI7gC,EAAAA,EAAAA,MAAA,OAAKnB,UAAWA,EAAUC,SAAA,CACrB4hC,GACD9hC,EAAAA,EAAAA,KAACgH,GAAAA,EAAM,CAACF,KAAK,IAAI4L,KAAK,iBAAiBpR,QAN5B,WAAH,OAAS8/B,EAAeF,EAAI,EAMwBz0B,MAAM,YAAWvM,UACzEF,EAAAA,EAAAA,KAACG,EAAAA,EAAI,CAACE,QAAQ,aAGjB+hB,GAAW8e,IAAOW,IACf7hC,EAAAA,EAAAA,KAAC+zB,GAAAA,EAAK,CACFoO,kBAXU,WAAH,OAAS5gC,IAASugC,CAAY,EAYrC7N,UAdM,WAAH,OAASgN,EAAaC,EAAI3/B,EAAM,EAenCyyB,SAAU+M,EACVzmB,QAASA,EACT8H,QAASA,EACT3V,MAAM,YACNC,SACItL,EAAAA,EAAAA,MAAC8xB,EAAAA,SAAQ,CAAAhzB,SAAA,EACLF,EAAAA,EAAAA,KAACuG,GAAAA,EAAS,CACNO,KAAK,IACLX,MAAO5E,EACPkF,SAAUy7B,EACV17B,YAAY,kBAEf2F,IAASnM,EAAAA,EAAAA,KAACoN,GAAAA,EAAK,CAACjB,MAAOE,WAOpD,IC3CA,IAAMkP,GAAqB,CAAC6mB,oB,SAAAA,IAE5B,UAAe5mB,EAAAA,EAAAA,IAAQ,KAAMD,GAA7B,EAzBA,SAAkB/a,GAAqE,IAAnE0gC,EAAE1gC,EAAF0gC,GAAI3/B,EAAIf,EAAJe,KAAMiT,EAAKhU,EAALgU,MAAOvU,EAASO,EAATP,UAAWmiC,EAAmB5hC,EAAnB4hC,oBAQ5C,OACIhhC,EAAAA,EAAAA,MAAA,OAAKnB,UAAWA,EAAUC,SAAA,CACrB0M,GAAAA,EAAOC,OAAe,OAAE2H,IACzBxU,EAAAA,EAAAA,KAACgH,GAAAA,EAAM,CACHF,KAAK,IACL4L,KAAK,iBACLpR,QAbQ,WAAH,OACb8gC,EAAoB,CAChB31B,MAAOlL,EACPkf,KAAK,wBAADtW,OAA0B+2B,GAC9BmB,UAAW,sBACZ,EASK51B,MAAM,0BAAyBvM,SAClC,WAKb,IC9BA,IAAMyJ,IAAQnK,EAAAA,EAAAA,GAAG,qBAEX8iC,GAAgB,CAClB7uB,QAAS,CACL/T,MAAO,CACHwhC,GAAI,CACAttB,MAAO,QAEXrS,KAAM,CACFqS,MAAO,QAEX2uB,mBAAoB,CAChB3uB,MAAO,QAEX4uB,WAAY,CACR5uB,MAAO,OACPzO,QAAS,eAGjB4O,KAAM,CACF2b,QAAS,CACLhwB,MAAO,CAAC,KAAM,OAAQ,gBAG9B0U,KAAM,WAEV7H,MAAO,QACP4G,SAAS,EACTC,UAAU,EACVF,IAAKvJ,GAAM,SACXmgB,WAAU,SAAClqB,GACP,OAAOA,EAAKshC,EAChB,GAmGE3lB,GAAqB,CACvB4kB,UAAAA,GACAsC,iBH3EG,WACH,OAAO,SAAC1vB,GACJ+N,GAASuf,oBACTttB,EAAS,CAAClR,KAAMu+B,GAAAA,GAAWU,WAC/B,CACJ,GGyEA,UAAetlB,EAAAA,EAAAA,KAlBS,SAAC7V,GACrB,IAAA27B,EAAoD37B,EAAM0P,WAAWsrB,OAErE,MAAO,CACHrmB,QAHUgnB,EAAPhnB,QAIHlO,OAJkBk1B,EAANl1B,OAKZD,MALyBm1B,EAALn1B,MAMpBE,UANoCi1B,EAATj1B,UAO3Bs0B,OAP4CW,EAANX,OAQtCpmB,SAASmB,EAAAA,EAAAA,IAAW/V,GAE5B,GAOwC4V,GAAxC,EAzFA,SAAgB/Y,GACZ,IAAO+X,EAAwC/X,EAAxC+X,QAAS4lB,EAA+B39B,EAA/B29B,UAAWsC,EAAoBjgC,EAApBigC,kBAC3BC,EAAAA,EAAAA,YAAU,WAEN,OADAvC,IACOsC,CACX,GAAG,CAACloB,IAEJ,IAaMrP,EAAY,CACdg2B,GAde,SAACthC,GAAW,OAAKI,EAAAA,EAAAA,KAAC2iC,GAAAA,GAAW,CAACzB,GAAIthC,EAAKshC,IAAO,EAe7D3/B,KAdiB,SAAC3B,GAAW,OAC7BI,EAAAA,EAAAA,KAAC4iC,GAAI,CAAC3iC,UAAW0J,GAAM,QAASpI,KAAM3B,EAAK2B,KAAM2/B,GAAIthC,EAAKshC,IAAM,EAchEsB,WAZsB,SAAC5iC,GAAW,OAClCI,EAAAA,EAAAA,KAAC6iC,GAAS,CACNruB,MAAO5U,EAA+B,yBAAc,WACpDK,UAAW0J,GAAM,cACjBpI,KAAM3B,EAAK2B,KACX2/B,GAAIthC,EAAKshC,IACX,GASC5mB,EAA6C9X,EAA7C8X,QAASlO,EAAoC5J,EAApC4J,OAAQD,EAA4B3J,EAA5B2J,MAAOE,EAAqB7J,EAArB6J,UAAWs0B,EAAUn+B,EAAVm+B,OACpCvhB,EAAiB9E,IAAYlO,EAEnC,OACIpM,EAAAA,EAAAA,KAACsf,EAAAA,EAAa,CAAApf,UACVF,EAAAA,EAAAA,KAACkM,EAAAA,EAAe,CAACE,OAAQkO,EAASnO,MAAOA,EAAOE,UAAWA,EAAUnM,UACjEF,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,GAAM,CAAC2Q,QAAS8E,IAAiBlf,SAC5Ckf,GACGpf,EAAAA,EAAAA,KAACq/B,GAAAA,EAAM,KAEPr/B,EAAAA,EAAAA,KAAC4f,EAAAA,GAAa/f,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACNyiC,IAAa,IACjBp3B,UAAWA,EACXxL,MAAOihC,EACPztB,IAAKvJ,aAOjC,I,gBCjGMA,IAAQnK,EAAAA,EAAAA,GAAG,gBAEjB,SAASsjC,KACL,IAAOpN,GAAQhR,EAAAA,EAAAA,IAAYyR,IAApBT,KAEP,OAAKA,EAIc,YAAfA,EAAK/vB,OACE3F,EAAAA,EAAAA,KAAC07B,GAAAA,EAAK,CAAC/uB,QAAQ,qBAItBvL,EAAAA,EAAAA,MAAAgkB,EAAAA,SAAA,CAAAllB,SAAA,CACKy2B,GAAoBjB,KACjB11B,EAAAA,EAAAA,KAACuf,EAAAA,EAAkB,CACfzY,KAAK,IACLvF,KAAK,oBACLtB,UAAW0J,GAAM,OACjB6V,WAAW,EAAMtf,UAEjBF,EAAAA,EAAAA,KAAC+2B,GAAgB,CAAMrB,KAAAA,MAG9BuC,GAAevC,KACZ11B,EAAAA,EAAAA,KAACuf,EAAAA,EAAkB,CACfzY,KAAK,IACLvF,KAAK,UACLtB,UAAW0J,GAAM,WACjB6V,WAAW,EAAMtf,UAEjBF,EAAAA,EAAAA,KAACs4B,IAAWz4B,EAAAA,EAAAA,GAAA,GAAK61B,MAGxB8B,GAAiB9B,KACd11B,EAAAA,EAAAA,KAACuf,EAAAA,EAAkB,CACfzY,KAAK,IACLvF,KAAK,iBACLtB,UAAW0J,GAAM,aACjB6V,WAAW,EAAMtf,UAEjBF,EAAAA,EAAAA,KAAC+3B,IAAal4B,EAAAA,EAAAA,GAAA,GAAK61B,SApCxB,IAyCf,CAEA,SAAentB,EAAAA,KAAWu6B,I,mLC9CbC,GAAsB,SAACp9B,GAAgB,OAAKA,EAAM0P,WAAWqgB,KAAKsN,OAAO52B,MAAO,EAEhF62B,GAAuB,SAACt9B,GAAgB,OAAKA,EAAM0P,WAAWqgB,KAAKsN,OAAO1oB,OAAQ,EAElF4oB,GAAqB,SAACv9B,GAAgB,OAAKA,EAAM0P,WAAWqgB,KAAKsN,OAAO72B,KAAM,EAE9Eg3B,GAAwB,SAACx9B,GAAgB,OAAKA,EAAM0P,WAAWqgB,KAAKsN,OAAOI,QAAS,EAEpFC,GAAsB,SAAC19B,GAAgB,OAAKA,EAAM0P,WAAWqgB,KAAKsN,OAAOt9B,MAAO,EAEhF49B,GAAyB,SAAC39B,GAAgB,OAAKA,EAAM0P,WAAWqgB,KAAKsN,OAAO5iB,IAAK,EAEjFmjB,GAAyB,SAAC59B,GAAgB,OAAKA,EAAM0P,WAAWqgB,KAAKsN,OAAOQ,SAAU,EAEtFC,GAAgC,SAAC99B,GAAgB,OAC1DA,EAAM0P,WAAWqgB,KAAKsN,OAAOU,gBAAiB,EAE5CC,GAA0B,SAACh+B,GAAgB,IAAA4wB,EAAA,OAAwC,QAAxCA,EAAK5wB,EAAM0P,WAAWqgB,KAAKsN,OAAOA,cAAM,IAAAzM,OAAA,EAAnCA,EAAqCxlB,KAAM,EAE3F6yB,GAA4B,SAACj+B,GAAgB,IAAA+wB,EAAA,OACZ,QADYA,EAC/C/wB,EAAM0P,WAAWqgB,KAAKsN,OAAOA,cAAM,IAAAtM,OAAA,EAAnCA,EAAqCmN,OAAQ,EAE3CC,GAA2B,SAACn+B,GAAgB,IAAAo+B,EAAA,OAAwC,QAAxCA,EAAKp+B,EAAM0P,WAAWqgB,KAAKsN,OAAOA,cAAM,IAAAe,OAAA,EAAnCA,EAAqCttB,MAAO,EAEtFutB,GAAoC,SAACr+B,GAAgB,OAC9DA,EAAM0P,WAAWqgB,KAAKsN,OAAOiB,eAAgB,EAEpCC,IAAsCxuB,EAAAA,GAAAA,IAC/C,CAACiuB,IACDQ,IAGSC,GAAqC,SAACz+B,GAAgB,IAAA0+B,EAAA,OAC5B,QAD4BA,EAC/D1+B,EAAM0P,WAAWqgB,KAAKsN,OAAOA,cAAM,IAAAqB,OAAA,EAAnCA,EAAqCtzB,MAAMuzB,aAAc,EAEhDC,GAAkC,SAAC5+B,GAAgB,IAAA6+B,EAAA,OACzB,QADyBA,EAC5D7+B,EAAM0P,WAAWqgB,KAAKsN,OAAOA,cAAM,IAAAwB,OAAA,EAAnCA,EAAqCzzB,MAAM0zB,SAAU,EAEzD,SAASN,GAAsBpzB,GAC3B,IAAAvQ,EAIIuQ,GAAS,CAAC,EAAC2zB,EAAAlkC,EAHXmkC,oBAAqBC,OAAQ,IAAAF,EAAGG,IAAGH,EAAAI,EAAAtkC,EACnCukC,4BAA6BC,OAAO,IAAAF,EAAGD,IAAGC,EAAAG,EAAAzkC,EAC1C0kC,2BAA4BC,OAAM,IAAAF,EAAGJ,IAAGI,EAG5C,MAAO,CACHL,SAAAA,EACAI,QAAAA,EACAG,OAAAA,EACAC,UAAWR,EAAWI,EAAUG,EAExC,CAEO,IAAME,IAAuC3vB,EAAAA,GAAAA,IAChD,CAACiuB,KACD,SAAC5yB,GACG,IAAArP,GAA4DqP,aAAK,EAALA,EAAOu0B,iBAAkB,CAAC,EAA/EvkC,EAAMW,EAANX,OAAQwkC,EAAO7jC,EAAP6jC,QAASC,EAAO9jC,EAAP8jC,QAAS9N,EAAKh2B,EAALg2B,MAAO+N,EAAK/jC,EAAL+jC,MAAUC,GAAM/2B,EAAAA,EAAAA,GAAAjN,EAAAkN,IAExD,MAAO,CACH8oB,MAAAA,EACA+N,MAAAA,EACA1kC,OAAAA,EACAykC,QAAAA,EACAD,QAAAA,EACAI,MAAQjO,EAAYA,EAAQkO,KAAK,CAAC7kC,EAAQwkC,EAASC,GAAOr7B,QAAAlH,EAAAA,EAAAA,GAAK4iC,KAASH,MAAxD,EAExB,IAkBEI,IAAkCpwB,EAAAA,GAAAA,IACpC,CAACkuB,GAA2BloB,EAAAA,KAC5B,SAACmoB,EAAStpB,GACN,IAAMwrB,EAA8C,CAAC,EAEjDC,EAAkB,EAClBC,EAAc,EA2BlB,OAzBAC,KAASrC,GAAS,SAAA7gC,EAAUmjC,GAAgB,IAAxBp1B,EAAK/N,EAAL+N,MAChBq1B,EAAyCr1B,EAAMu0B,eAAxC5N,EAAK0O,EAAL1O,MAA0BhpB,GAAL03B,EAAdX,OAAuB92B,EAAAA,EAAAA,GAAAy3B,EAAAlwB,KAC/BmwB,EAAON,EAAYI,GAAc,CACnC5kC,KAAM4kC,EACNG,OAAQ,SACRC,aAAcpC,GAAsBpzB,GACpCy1B,SAAUz1B,EAAM0zB,UAAU/M,MAC1B+O,cAAe,EACfC,aAAc31B,EAAMuzB,cAAc5M,MAClCiP,kBAAmB,EACnBC,cAAe71B,EAAMu0B,eACrBuB,iBAAkBnP,QAAAA,EAASkO,KAAKC,KAASn3B,IACzCo4B,UAAU,EACVlsB,IAAI,IAADzQ,OAAMoQ,EAAO,mDAAApQ,OAAkDg8B,IAGtEH,EAAkBe,KAAK,CAACf,EAAiBK,EAAIK,eAC7CT,EAAcc,KAAK,CAACd,EAAaI,EAAIG,UACzC,IAEAN,KAASH,GAAa,SAACnmC,GACnBA,EAAK+mC,kBAAoBX,EACzBpmC,EAAK6mC,cAAgBR,CACzB,IAEOF,CACX,IAGEiB,IAAoCtxB,EAAAA,GAAAA,IACtC,CAACkuB,GAA2BkC,GAAiCpqB,EAAAA,KAC7D,SAACmoB,EAASoD,EAAa1sB,GACnB,IAAMwrB,GAA2ClmC,EAAAA,EAAAA,GAAA,GAAOonC,GAwBxD,OAtBAf,KAASrC,GAAS,SAAAxgC,EAAU8iC,GAAgB,IAAxBe,EAAK7jC,EAAL6jC,MACVC,EAASpB,EAAYI,IAAe,CAAC,EAC3CD,KAASgB,GAAO,SAACtnC,EAAMwnC,GACnBrB,EAAYqB,GAAY,CACpB7lC,KAAM6lC,EACNd,OAAQH,EACRI,aAAcpC,GAAsBvkC,GACpC4mC,SAAU5mC,EAAK6kC,UAAU/M,MACzB+O,cAAeU,EAAOX,SACtBE,aAAc9mC,EAAK0kC,cAAc5M,MACjCiP,kBAAmBQ,EAAOT,aAC1BE,eAAa/mC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACND,EAAK0lC,gBAAc,IACtBG,MAAO0B,EAAON,mBAElBA,iBAAkBjB,KAAKC,KAASjmC,EAAK0lC,iBACrC1qB,IAAI,IAADzQ,OAAMoQ,EAAO,yCAAApQ,OAAwCi9B,EAAQ,kBAAAj9B,OAAiBg8B,GAEzF,GACJ,KAEakB,EAAAA,GAAAA,aAAYtB,GAAa,SAACnmC,GAAI,OAAKA,EAAK0mC,MAAM,IAAE,SAEjE,IAGSgB,IAA4C5xB,EAAAA,GAAAA,IACrD,CAACsxB,GAAmCvD,GAA+BJ,KACnE,SAACkE,EAAM7D,EAAkBh+B,GACrB,IAAM8Z,EAAY,IAAIhH,IAAIkrB,GACtB5yB,GAAgBjR,EAAAA,EAAAA,GAAA,GAAO0nC,GAyB3B,OAxBI7hC,EACAoL,GAAM02B,EAAAA,GAAAA,YACF12B,GACA,SAAClR,GACG,OAAsC,IAA/BA,EAAK2B,KAAKkmC,QAAQ/hC,EAC7B,IACA,GAGJoL,EAAI5Q,SAAWP,IAAKmR,EAAI5Q,UAAU,SAACN,GAC/B,OAAK4f,EAAUjL,IAAI3U,EAAK2B,OAGpB1B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACOD,GAAI,IACPM,SAAU,GACVo1B,YAAUz1B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACHD,EAAK01B,YAAU,IAClBoS,aAAa,MAPd9nC,CAWf,IAEGkR,CACX,IAGS62B,IAAiCjyB,EAAAA,GAAAA,IAC1C,CAAC4xB,GAA2C/D,KAC5C,SAACgE,EAAI7jC,GAAmB,IAAhB8/B,GAAe3+B,EAAAA,EAAAA,GAAAnB,EAAA,GAAN,GACb,OAAK6jC,GAGLK,GAAgBL,EAAM/D,IACfqE,EAAAA,GAAAA,aAAYN,IAHR,EAIf,IAGJ,SAASK,GAAgBL,EAAgD/D,GACrE,IAAAr/B,EAAwBq/B,GAAa,CAAC,EAA/BjwB,EAAMpP,EAANoP,OAAQuG,EAAK3V,EAAL2V,MACXvG,GAAUuG,IACVguB,EAAAA,GAAAA,UAASP,GAAMQ,EAAAA,GAAAA,IAAwBx0B,EAAQuG,GAAQ,CACnDvY,KAAM,CACFyD,KAAI,SAACpF,GACD,OAAOA,EAAK01B,WAAW/zB,IAC3B,EACAymC,mBAAmB,GAEvBxB,SAAU,CACNxhC,KAAI,SAACpF,GACD,OAAOA,EAAK01B,WAAWkR,QAC3B,EACAwB,mBAAmB,GAEvBtB,aAAc,CACV1hC,KAAI,SAACpF,GACD,OAAOA,EAAK01B,WAAWoR,YAC3B,EACAsB,mBAAmB,GAEvBpB,cAAe,CACX5hC,KAAI,SAACpF,GACD,OAAOA,EAAK01B,WAAWuR,gBAC3B,EACAmB,mBAAmB,GAEvBzB,aAAc,CACVvhC,KAAI,SAACpF,GACD,OAAOA,EAAK01B,WAAWiR,aAAa3B,QACxC,EACAoD,mBAAmB,IAInC,CAEA,IAAMC,IAAwBvyB,EAAAA,GAAAA,IAAe,CAACouB,KAA2B,SAACrtB,GACtE,IAAAyxB,EAAgBrC,KAASpvB,GAAlB0xB,GAAyBtjC,EAAAA,EAAAA,GAAAqjC,EAAA,GAApB,GACZ,YAAqC7/B,KAA9B8/B,aAAK,EAALA,EAAOC,mBAClB,IAEMC,IAA2C3yB,EAAAA,GAAAA,IAC7C,CAACuyB,GAAuBnE,GAA0BpoB,EAAAA,GAAYoqB,KAC9D,SAACwC,EAAc7xB,EAAQ8D,EAASspB,GAC5B,IAAIoC,EAAc,EACdsC,EAAY,EACZC,EAAa,EAEXC,EAA+CH,GAAYzoC,EAAAA,EAAAA,GAAA,GAAOgkC,GAAW,CAAC,EAwCpF,OAtCAqC,KAASzvB,GAAQ,SAAC7W,EAAM2B,GACpB,IAAM+kC,EAASgC,EAAe1oC,EAAKwoC,mBAAqB,SAClDjB,EAAStD,EAAQyC,IAAW,CAAC,EAC7BD,EAAOoC,EAAalnC,GAAQ,CAC9BA,KAAMA,EACN+kC,OAAAA,EAEAC,aAAcpC,GAAsBvkC,GACpC4mC,SAAU5mC,EAAK6kC,UAAU/M,MACzB+O,cAAeU,EAAOX,SACtBE,aAAc9mC,EAAK0kC,cAAc5M,MACjCiP,kBAAmBQ,EAAOT,aAC1BE,eAAa/mC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACND,EAAK0lC,gBAAc,IACtBG,MAAO0B,EAAON,mBAElBA,iBAAkBjB,KAAKC,KAASjmC,EAAK0lC,iBACrC1qB,IAAI,IAADzQ,OAAMoQ,EAAO,qBAAApQ,OAAoBu+B,mBAAmBnnC,KAEtD+mC,IACDE,EAAazB,KAAK,CAACyB,EAAYnC,EAAIQ,mBACnCZ,EAAcc,KAAK,CAACd,EAAaI,EAAIG,WACrC+B,EAAYxB,KAAK,CAACwB,EAAWlC,EAAIK,eAEzC,IAEK4B,GACDpC,KAASuC,GAAc,SAAC7oC,GAChBA,EAAKknC,WAITlnC,EAAKgnC,cAAcnB,MAAQ+C,EAC3B5oC,EAAK+mC,kBAAoB4B,EACzB3oC,EAAK6mC,cAAgBR,EACzB,IAGGwC,CACX,IAGSE,IAA+BjzB,EAAAA,GAAAA,IACxC,CAAC2yB,KACD,SAACO,GAGG,OAFavB,EAAAA,GAAAA,aAAYuB,GAAkB,SAAChpC,GAAI,OAAKA,EAAK0mC,MAAM,IAEpD,SAChB,IAGSuC,IAAmCnzB,EAAAA,GAAAA,IAC5C,CAACizB,GAA8BlF,GAA+BJ,KAC9D,SAACkE,EAAM7D,EAAkBh+B,GACrB,IAAM8Z,EAAY,IAAIhH,IAAIkrB,GA0B1B,OAxBIh+B,GACM8hC,EAAAA,GAAAA,YAAWD,GAAM,SAAC3nC,GACpB,OAAsC,IAA/BA,EAAK2B,KAAKkmC,QAAQ/hC,EAC7B,KAEG7F,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACI0nC,GAAI,IACPrnC,SAAUP,IAAK4nC,aAAI,EAAJA,EAAMrnC,UAAU,SAACN,GAC5B,OAAK4f,EAAUjL,IAAI3U,EAAK2B,OAGF1B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACfD,GAAI,IACP01B,YAAUz1B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACHD,EAAK01B,YAAU,IAClBoS,aAAa,IAEjBxnC,SAAU,KARHN,CAWf,KAKZ,IAGSkpC,IAAsCpzB,EAAAA,GAAAA,IAC/C,CAACmzB,GAAkC7E,KACnC,SAACuD,EAAIjjC,GAAmB,IAAhBk/B,GAAe3+B,EAAAA,EAAAA,GAAAP,EAAA,GAAN,GAOb,OANIk/B,GAAa+D,GACbK,GAAgBL,EAAM/D,GAGX+D,GAAYM,EAAAA,GAAAA,aAAYN,GAAjB,EAG1B,I,iCClVE59B,IAAQnK,EAAAA,EAAAA,GAAG,sBAEXupC,GAAgBp/B,GAAM,YAE5B,SAASq/B,KACL,IAAMpC,GAAgBliB,EAAAA,EAAAA,IAAY2gB,KAAyC,CAAC,EACtEqB,GAAehiB,EAAAA,EAAAA,IAAY0f,KAAuC,CAAC,EACnEoC,GAAW9hB,EAAAA,EAAAA,IAAY6f,KAAoC,CAAC,EAC5DgC,GAAe7hB,EAAAA,EAAAA,IAAYwf,IAEjC,OACI9iC,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,GAAM,KAAM,oBAAoBzJ,SAAA,EAC5CF,EAAAA,EAAAA,KAAA,OAAKC,UAAW,4CAA4CC,SAAC,WAC7DF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNxiB,MAAO,CACH,CACIuC,IAAK,iBACLkE,OACInG,EAAAA,EAAAA,KAACipC,GAAkB,CAACj+B,KAAM47B,EAAe3mC,UAAW8oC,KAExD9oC,UAAW0J,GAAM,eAErB,CACI1H,IAAK,gBACLkE,OAAOnG,EAAAA,EAAAA,KAACkpC,IAAkBrpC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAK6mC,GAAY,IAAEzmC,UAAW8oC,OAE5D,CACI9mC,IAAK,YACLkE,OAAOnG,EAAAA,EAAAA,KAACkpC,IAAkBrpC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAK2mC,GAAQ,IAAEvmC,UAAW8oC,OAExD,CACI9mC,IAAK,gBACLkE,OAAOnG,EAAAA,EAAAA,KAACmpC,GAAY,CAACn+B,KAAMu7B,EAActmC,UAAW8oC,WAM5E,CAEA,IAAMK,GAAyE,CAC3EroC,OAAQsoC,GAAAA,EAA4B,GACpC7D,QAAS6D,GAAAA,EAA4B,GACrC1D,MAAO0D,GAAAA,EAA4B,GACnC9D,QAAS8D,GAAAA,EAA4B,IAiBlC,SAASJ,GAAmBzmC,GAC/B,IACIvC,EAIAuC,EAJAvC,UAASqpC,EAIT9mC,EAHAwI,KAAO0sB,EAAK4R,EAAL5R,MAAO+N,EAAK6D,EAAL7D,MAAU/2B,GAAIC,EAAAA,EAAAA,GAAA26B,EAAA16B,IAC5B26B,EAEA/mC,EAFA+mC,UACAC,EACAhnC,EADAgnC,kBAGJ9gB,EAA+BngB,EAAAA,SAAc,WACzC,IAAIkhC,EAAW,EACTC,EAAQ/pC,IAAK+O,GAAM,SAACvI,EAAOlE,GAC7BwnC,GAAYtjC,GAAS,EACrB,IAAM4nB,EAAK,IAAM5nB,EAAUs/B,EAC3B,MAAO,CACHt/B,MAAO6pB,MAAMjC,GAAK,EAAIA,EACtB9rB,IAAKA,EACLsQ,MAAO,GAEf,IAEA,MAAO,CACHm3B,MAAAA,EACA97B,KAAM27B,EACA18B,EAAAA,EAAO88B,MAAMjS,QAAAA,EAAS+R,GAAS,GAAAt/B,OAC5B0C,EAAAA,EAAO88B,MAAMjS,QAAAA,EAAS+R,GAAS,OAAAt/B,OAAM0C,EAAAA,EAAO88B,MAAMlE,IAC3D/4B,SACItL,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,GAAM,oBAAoBzJ,SAAA,CACrCP,IAAK+pC,GAAO,SAAC9pC,EAAMoC,GAAW,IAAD4nC,EACnB3nC,EAAOrC,EAAPqC,IAGP,OAFArC,EAAK2S,MAAmB,QAAdq3B,EAAGR,GAAOnnC,UAAI,IAAA2nC,EAAAA,GAAIC,EAAAA,GAAAA,GAA2B7nC,EAAO,IAG1DZ,EAAAA,EAAAA,MAACmH,EAAAA,SAAc,CAAArI,SAAA,EACXF,EAAAA,EAAAA,KAAA,OACI8pC,MAAO,CACHC,gBAAiBnqC,EAAK2S,MACtBy3B,aAAc,MACdrsB,MAAO,MACPssB,OAAQ,UAGhBjqC,EAAAA,EAAAA,KAAA,OAAAE,SAAM+B,KACNjC,EAAAA,EAAAA,KAAA,OAAAE,SAAM2M,EAAAA,EAAO88B,MAAMnnC,EAAMwI,KAAK/I,QAVbA,EAa7B,IACCunC,IACGpoC,EAAAA,EAAAA,MAACmH,EAAAA,SAAc,CAAArI,SAAA,EACXF,EAAAA,EAAAA,KAAA,WACAA,EAAAA,EAAAA,KAAA,OAAAE,SAAMspC,KACNxpC,EAAAA,EAAAA,KAAA,OAAAE,SAAM2M,EAAAA,EAAO88B,MAAMnnC,EAAMwI,KAAKy6B,eAMtD,GAAG,CAACjjC,EAAMwI,OAhDH0+B,EAAKhhB,EAALghB,MAAO97B,EAAI8a,EAAJ9a,KAAMlB,EAAOgc,EAAPhc,QAkDpB,OACI1M,EAAAA,EAAAA,KAACgS,EAAAA,EAAO,CAACtF,QAASA,EAASzM,UAAWA,EAAUC,UAC5CF,EAAAA,EAAAA,KAACo3B,GAAAA,EAAQ,CAACsS,MAAOA,EAAO97B,KAAMA,KAG1C,CAEO,SAASs7B,GAAmB1mC,GAM/B,IAAOvC,EAAsCuC,EAAtCvC,UAAWy3B,EAA2Bl1B,EAA3Bk1B,MAAO+N,EAAoBjjC,EAApBijC,MACnB73B,EADuCpL,EAAb+mC,UAE1B18B,EAAAA,EAAO88B,MAAMjS,GAAM,GAAAvtB,OAChB0C,EAAAA,EAAO88B,MAAMjS,GAAM,OAAAvtB,OAAM0C,EAAAA,EAAO88B,MAAMlE,IAC/C,OACIzlC,EAAAA,EAAAA,KAAA,OAAKC,UAAWA,EAAUC,UACtBF,EAAAA,EAAAA,KAACo3B,GAAAA,EAAQ,CAACjxB,OAASuxB,GAAS,IAAM+N,GAAS,GAAM,IAAK73B,KAAMA,EAAMrB,MAAO,UAGrF,CAEO,SAAS48B,GAAa3mC,GASzB,IACIvC,EAEAuC,EAFAvC,UAASiqC,EAET1nC,EADAwI,KAAO45B,EAAQsF,EAARtF,SAAUI,EAAOkF,EAAPlF,QAASG,EAAM+E,EAAN/E,OAAQC,EAAS8E,EAAT9E,UAEtC+E,EAA+B5hC,EAAAA,SAAc,WACzC,IAAMmhC,EAAQ,CACV,CACIvjC,MAAQi/B,EAAYR,EAAY,IAChCr4B,MAAO,UACPtK,IAAK,aAET,CACIkE,MAAQ6+B,EAAUJ,EAAY,IAC9Br4B,MAAO,UACPtK,IAAK,WAET,CACIkE,MAAQg/B,EAASP,EAAY,IAC7Br4B,MAAO,SACPtK,IAAK,WAEXyD,QAAO,SAAAlF,GAAO,OAAAA,EAAL2F,MAAmB,CAAC,IAC/B,MAAO,CACHujC,MAAAA,EACA97B,KAAM,CAACw3B,EAAWR,GAAUwF,KAAK,OACjC19B,SACI1M,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,GAAM,oBAAoBzJ,SACrCP,IAAK,GAADwK,QAAAlH,EAAAA,EAAAA,GAAKymC,GAAK,CAAE,CAACznC,IAAK,WAAqBsK,MAAO,WAAU,SAAA7K,GAAmB,IAAjBO,EAAGP,EAAHO,IAAKsK,EAAK7K,EAAL6K,MAChE,OACInL,EAAAA,EAAAA,MAACmH,EAAAA,SAAc,CAAArI,SAAA,EACXF,EAAAA,EAAAA,KAAA,OACIC,UAAW0J,GAAM,eAAgB,CAC7B4C,MAAAA,OAGRvM,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,GAAM,0BAA0BzJ,SACnC,aAAR+B,EAAqB,QAAUA,KAEpCjC,EAAAA,EAAAA,KAAA,OAAAE,SAAM2M,EAAAA,EAAOmkB,OAAOxuB,EAAMwI,KAAK/I,QATdA,EAY7B,MAIhB,GAAG,CAACO,EAAMwI,OAzCH0+B,EAAKS,EAALT,MAAO97B,EAAIu8B,EAAJv8B,KAAMlB,EAAOy9B,EAAPz9B,QA2CpB,OAAKk4B,GAAY5U,MAAM4U,GACZ/3B,EAAAA,EAAOC,UAId9M,EAAAA,EAAAA,KAACgS,EAAAA,EAAO,CAAC/R,UAAWA,EAAWyM,QAASA,EAASnB,UAAW,CAAC,MAAO,UAAUrL,UAC1EF,EAAAA,EAAAA,KAACo3B,GAAAA,EAAQ,CAACsS,MAAOA,EAAO97B,KAAMA,KAG1C,CAEA,SAAerF,EAAAA,KAAWygC,IChN1B,IAAMr/B,IAAQnK,EAAAA,EAAAA,GAAG,6BAEX6qC,GAAoB1gC,GAAM,YAYhC,SAAS2gC,GAAuB9nC,GAC5B,IAAO9C,EAA4E8C,EAA5E9C,MAAO4a,EAAqE9X,EAArE8X,QAASlO,EAA4D5J,EAA5D4J,OAAQm+B,EAAoD/nC,EAApD+nC,aAActwB,EAAsCzX,EAAtCyX,OAAQuwB,EAA8BhoC,EAA9BgoC,gBAAiB9zB,EAAalU,EAAbkU,UAEhE+zB,EAAaliC,EAAAA,aAAkB,SAACgL,EAAgBm3B,GAClDzwB,EAAO,CAAC,CAAC1G,OAAAA,EAAQuG,MAAO4wB,IAC5B,GAAG,IAEGC,EAAkBpiC,EAAAA,SAAc,WAClC,OAAOP,IACH0O,GACA,SAACzO,EAAKrI,GACF,IAAO2T,EAAiB3T,EAAjB2T,OAAQuG,EAASla,EAATka,MACf,OAAKvG,GAAWuG,GAGhB7R,EAAIsL,GAAUuG,EACP7R,GAHIA,CAIf,GACA,CAAC,EAET,GAAG,CAACyO,IAEEjD,EAAUlL,EAAAA,SAAc,WAC1B,SAAS4c,EAAY5jB,EAAckL,GAC/B,MAAO,CACHlL,KAAAA,EACAoY,QACI3Z,EAAAA,EAAAA,KAAC+Z,GAAAA,EAAY,CACTE,OAAQwwB,EACRl3B,OAAQhS,EACRkL,MAAOA,EACPqN,MAAO6wB,EAAgBppC,GACvBqpC,kBAAmB,CAAC,OAAQ,SAI5C,CA8GA,MA7G8C,EAAA/qC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAEnCslB,EAAY,OAAQqlB,IAAgB,IACvC/wB,OAAQ,SAAAjZ,GAAkB,IAAXZ,EAAIY,EAAT0Y,IAEF3X,EAGA3B,EAHA2B,KACAspC,EAEAjrC,EAFAirC,MAAKC,EAELlrC,EADA01B,WAAawR,EAAQgE,EAARhE,SAAUY,EAAWoD,EAAXpD,YAAa9sB,EAAGkwB,EAAHlwB,IAExC,OACIxZ,EAAAA,EAAAA,MAACmH,EAAAA,SAAc,CAAArI,SAAA,CACV4mC,IACG9mC,EAAAA,EAAAA,KAACgH,GAAAA,EAAM,CAAC0L,KAAM,iBAAiBxS,UAC3BF,EAAAA,EAAAA,KAACG,EAAAA,EAAI,CAACE,QAASqnC,EAAc,cAAgB,kBAGrD1nC,EAAAA,EAAAA,KAAC2a,GAAAA,EAAI,CACD1a,UAAW0J,GAAM,OAAQ,CACrBkhC,MAAOh2B,OAAOg2B,KAElBt+B,MAAO,UACPqO,IAAKA,EACLie,QAAM,EAAA34B,SAELqB,MAIjB,KAAC1B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAIEslB,EAAY,gBAAiB,mBAAiB,IACjD1L,OAAQ,SAAA/X,GAID,IAADqpC,EAAArpC,EAHFwX,IACIoc,WAAasR,EAAamE,EAAbnE,cAAeE,EAAQiE,EAARjE,SAAUR,EAAMyE,EAANzE,OAG1C,OACItmC,EAAAA,EAAAA,KAACipC,GAAkB,CACfj+B,KAAM47B,EACN3mC,UAAWoqC,GACXd,WAAYzC,EACZ0C,kBACI1C,EACI,IAEA1lC,EAAAA,EAAAA,MAAAgkB,EAAAA,SAAA,CAAAllB,SAAA,CAAE,UACQF,EAAAA,EAAAA,KAACuN,GAAAA,GAAa,CAAArN,SAAEomC,IAAuB,aAMrE,EACA1yB,MAAO,SACP+J,MAAO,OAAG9d,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAGPslB,EAAY,eAAgB,kBAAgB,IAC/C1L,OAAQ,SAAAzW,GAID,IAADgoC,EAAAhoC,EAHFkW,IACIoc,WAAaoR,EAAYsE,EAAZtE,aAAcC,EAAiBqE,EAAjBrE,kBAG/B,OACI3mC,EAAAA,EAAAA,KAACkpC,GAAkB,CACfjpC,UAAWoqC,GACX3S,MAAOgP,EACPjB,MAAOkB,EACP4C,WAAW,GAGvB,EACA31B,MAAO,SACP+J,MAAO,OAAG9d,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAGPslB,EAAY,WAAY,cAAY,IACvC1L,OAAQ,SAAApW,GAID,IAAD4nC,EAAA5nC,EAHF6V,IACIoc,WAAakR,EAAQyE,EAARzE,SAAUC,EAAawE,EAAbxE,cAG3B,OACIzmC,EAAAA,EAAAA,KAACkpC,GAAkB,CACfjpC,UAAWoqC,GACX3S,MAAO8O,EACPf,MAAOgB,EACP8C,WAAW,GAGvB,EACA31B,MAAO,SACP+J,MAAO,OAAG9d,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAGPslB,EAAY,eAAgB,kBAAgB,IAC/C1L,OAAQ,SAAA/V,GAID,IAFc6iC,EAAY7iC,EAD7BwV,IACIoc,WAAaiR,aAGjB,OAAOvmC,EAAAA,EAAAA,KAACmpC,GAAY,CAACn+B,KAAMu7B,EAActmC,UAAWoqC,IACxD,EACAz2B,MAAO,SACP+J,MAAO,MAInB,GAAG,CAAC6sB,EAAiBC,EAAYE,IAEjC,OACI3qC,EAAAA,EAAAA,KAACmb,GAAAA,GAAW,CACR/O,OAAQA,EACRkO,QAASA,EACTtP,KAAMtL,EACN+T,QAASA,EACT2lB,YAAU,EACVhe,SAAU8vB,GAAAA,GACV7vB,aAAc,SAAAzX,GAA+B,IAAhBkjC,EAAQljC,EAArB0xB,WAAawR,SACzB,OAAOn9B,GAAM,MAAO,CAChBw9B,OAAQL,GAEhB,EACAqE,WAAY,SAACjyB,GAAG,OAAKqxB,EAAarxB,EAAI,GAGlD,CAEA,SAAe3Q,EAAAA,KAAW+hC,I,gBCnJnB,SAASc,GAA+B7pC,GAC3C,OAAO,SAACwR,EAAU8I,GACd,IAAM6nB,GAAgBzgC,EAAAA,EAAAA,GAAOwgC,GAA8B5nB,MACrD7Z,EAAQ0hC,EAAiB+D,QAAQlmC,IACxB,IAAXS,EACA0hC,EAAiBvrB,KAAK5W,GAEtBmiC,EAAiB/+B,OAAO3C,EAAO,GAEnC+Q,EAAS,CACLlR,KAAMwpC,GAAAA,GACNrgC,KAAM,CAAC04B,iBAAAA,IAEf,CACJ,CAWO,SAAS4H,GAAqBtgC,GAIjC,MAAO,CACHnJ,KAAMwpC,GAAAA,GACNrgC,KAAAA,EAER,CC9EA,SAASugC,KACL,IAAMx4B,GAAWC,EAAAA,EAAAA,MACXsH,GAAUoK,EAAAA,EAAAA,IAAYue,IACtB72B,GAASsY,EAAAA,EAAAA,IAAYqe,IACrBrjC,GAAQglB,EAAAA,EAAAA,IAAYijB,IACpBnE,GAAY9e,EAAAA,EAAAA,IAAY6e,IAExBiI,EAAoBjjC,EAAAA,aAAkB,SAAC3I,GACzCmT,EAASq4B,GAA+BxrC,EAAK2B,MACjD,GAAG,IAEGkqC,EAAaljC,EAAAA,aAAkB,SAACuR,GAClC/G,EDwBD,SAA4BywB,GAC/B,OAAO,SAACzwB,GACJA,EAAS,CACLlR,KAAMwpC,GAAAA,GACNrgC,KAAM,CAACw4B,UAAAA,IAEf,CACJ,CC/BiBkI,CAAmB5xB,GAChC,GAAG,IAEH,OACI9Z,EAAAA,EAAAA,KAACsqC,GAAsB,CACnBl+B,OAAQA,EACRkO,QAASA,EACT5a,MAAOA,EACPua,OAAQwxB,EACRlB,aAAciB,EACdhB,gBAAiB,gBACjB9zB,UAAW8sB,GAGvB,CAEA,SAAej7B,EAAAA,KAAWgjC,IC7B1B,SAASI,KACL,IAAM54B,GAAWC,EAAAA,EAAAA,MACXsH,GAAUoK,EAAAA,EAAAA,IAAYue,IACtB72B,GAASsY,EAAAA,EAAAA,IAAYqe,IACrBrjC,GAAQglB,EAAAA,EAAAA,IAAYokB,IACpBtF,GAAY9e,EAAAA,EAAAA,IAAYsf,IAExByH,EAAaljC,EAAAA,aAAkB,SAACi7B,GFuDnC,IAAiCS,EEtDhClxB,GFsDgCkxB,EEtDCT,EFuD9B,SAACzwB,GACJA,EAAS,CACLlR,KAAMwpC,GAAAA,GACNrgC,KAAM,CAACi5B,gBAAAA,IAEf,GE3DA,GAAG,IAEGuH,EAAoBjjC,EAAAA,aAAkB,SAAC3I,GACzCmT,EAASq4B,GAA+BxrC,EAAK2B,MACjD,GAAG,IAEH,OACIvB,EAAAA,EAAAA,KAACsqC,GAAsB,CACnB5qC,MAAOA,EACP0M,OAAQA,EACRkO,QAASA,EACTiwB,aAAciB,EACdvxB,OAAQwxB,EACRjB,gBAAiB,kBACjB9zB,UAAW8sB,GAGvB,CAEA,SAAej7B,EAAAA,KAAWojC,IC9B1B,IAAMhiC,IAAQnK,EAAAA,EAAAA,GAAG,6BAEjB,SAASosC,KACL,IAAM74B,GAAWC,EAAAA,EAAAA,MACXowB,GAAW1e,EAAAA,EAAAA,IAAYye,IACvBz9B,GAASgf,EAAAA,EAAAA,IAAY2e,IAErBwI,EAAiBtjC,EAAAA,aAAkB,SAACpC,GACtC4M,EACIu4B,GAAqB,CACjBlI,SAAUj9B,IAGtB,GAAG,IAEG2lC,EAAevjC,EAAAA,aAAkB,SAAC7C,GACpCqN,EAASu4B,GAAqB,CAAC5lC,OAAAA,IACnC,GAAG,IAEH,OACItE,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,GAAM,KAAM,oBAAoBzJ,SAAA,EAC5CF,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,GAAM,UAAUzJ,UAC5BF,EAAAA,EAAAA,KAACud,EAAAA,EAAM,CACHpX,MAAOT,EACPY,SAAUwlC,EACVtlC,YACiB,UAAb48B,EACM,+BACA,iCAIlBpjC,EAAAA,EAAAA,KAAC+rC,GAAAA,EAAiB,CACdjlC,KAAK,IACLX,MAAOi9B,EACP38B,SAAUolC,EACVtqC,KAAK,0BACL7B,MAAO,CACH,CACIyG,MAAO,SACPyH,KAAM,UAEV,CACIzH,MAAO,QACPyH,KAAM,0BAM9B,CAEA,SAAerF,EAAAA,KAAWqjC,ICjD1B,IAAMjiC,IAAQnK,EAAAA,EAAAA,GAAG,qBAQjB,SAASwsC,GAAexrC,GAAyC,IAAvCmT,EAAKnT,EAALmT,MAChBZ,GAAWC,EAAAA,EAAAA,MAEX7G,GAAQuY,EAAAA,EAAAA,IAAYwe,IAEpB9iB,EAAO6rB,mBAAmBt4B,EAAMu4B,OAAO9rB,MAEvCxE,EAAWrT,EAAAA,aAAkB,WAC/BwK,EJbD,SAA6BqN,GAChC,OAAO,SAACrN,EAAU8I,GAGd,OAFA9I,EAAS,CAAClR,KAAMsqC,GAAAA,GAA0BnhC,KAAM,CAACoV,KAAAA,KAE1C+U,GAAAA,GACFpvB,IAAIqvB,GAAAA,GAAQgX,gBAAiB,CAC1B3rB,KAAK,uBAADtW,OAAyBiW,EAAI,yDAEpCnE,MAAK,SAAC+mB,GACeM,GAAuBznB,OACvBuE,GAIlBrN,EAAS,CACLlR,KAAMwqC,GAAAA,GACNrhC,KAAM,CAACg4B,OAAAA,IAEf,IAAE,OACK,SAAC72B,GACcm3B,GAAuBznB,OACvBuE,GAIlBrN,EAAS,CACLlR,KAAMyqC,GAAAA,GACNthC,KAAMmB,GAEd,GACR,CACJ,CIlBiBogC,CAAoBnsB,GACjC,GAAG,CAACrN,EAAUqN,KAEdzD,EAAAA,GAAAA,IAAWf,EAAU,CAACse,QAAS,OAE/B,IAAMkJ,GAAW1e,EAAAA,EAAAA,IAAYye,IAE7B,OACInjC,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,KAAQzJ,UACpBkB,EAAAA,EAAAA,MAACmH,EAAAA,SAAc,CAAArI,SAAA,CACViM,IAASnM,EAAAA,EAAAA,KAACwsC,GAAAA,EAAU,CAACrgC,MAAOA,KAC7BnM,EAAAA,EAAAA,KAACgpC,GAAgB,KACjBhpC,EAAAA,EAAAA,KAAC4rC,GAAsB,IACT,UAAbxI,GAAuBpjC,EAAAA,EAAAA,KAACurC,GAAW,KAAMvrC,EAAAA,EAAAA,KAAC2rC,GAAU,QAIrE,CAEA,SAAepjC,EAAAA,KAAWyjC,ICpC1B,IAAMriC,IAAQnK,EAAAA,EAAAA,GAAG,aAuBjB,SAASitC,GAAQjsC,GAmBiB,IAlB9BmF,EAAKnF,EAALmF,MACA+mC,EAAIlsC,EAAJksC,KACA7Q,EAAQr7B,EAARq7B,SACAjC,EAAIp5B,EAAJo5B,KACA5oB,EAAMxQ,EAANwQ,OAAM27B,EAAAnsC,EACNohB,WAAAA,OAAU,IAAA+qB,EAAG,GAAEA,EACf7tB,EAActe,EAAdse,eACAya,EAAqB/4B,EAArB+4B,sBACAxa,EAAIve,EAAJue,KACAyX,EAAUh2B,EAAVg2B,WACA8C,EAAU94B,EAAV84B,WACAK,EAAYn5B,EAAZm5B,aACAH,EAAWh5B,EAAXg5B,YACAE,EAAkBl5B,EAAlBk5B,mBACAD,EAAmBj5B,EAAnBi5B,oBACAhY,EAAYjhB,EAAZihB,aACArB,EAAI5f,EAAJ4f,KACA6B,EAAmBzhB,EAAnByhB,oBAEMV,GAAgBmD,EAAAA,EAAAA,IAAYhC,EAAAA,IAE5BkqB,EAAiBrkC,EAAAA,SAAc,WACjC,OAAO8wB,GAAiB,CACpB7C,WAAAA,EACA5U,WAAAA,EACA5Q,OAAAA,EACAsoB,WAAAA,EACAxa,eAAAA,EACAya,sBAAAA,EACAC,YAAAA,EACAE,mBAAAA,EACAD,oBAAAA,EACA1a,KAAAA,EACA4a,aAAAA,EACAC,KAAAA,EACAj0B,MAAAA,EACAsc,oBAAAA,GAER,GAAG,CACCuU,EACA5U,EACA5Q,EACAsoB,EACAxa,EACAya,EACAC,EACAE,EACAD,EACA1a,EACA4a,EACAC,EACAj0B,EACAsc,IAGE4qB,EAAYtkC,EAAAA,SACd,iBAAM,CACF,CACItG,IAAK,OACLkE,OAAOnG,EAAAA,EAAAA,KAAC8sC,GAAI,CAACptC,MAAOgtC,IACpBtqB,QAASxP,QAAQ85B,aAAI,EAAJA,EAAMxqC,SAE3B,CACID,IAAK,YACLkE,OAAOnG,EAAAA,EAAAA,KAAC8sC,GAAI,CAACptC,MAAOm8B,IACpBzZ,QAASxP,QAAQipB,aAAQ,EAARA,EAAU35B,SAElC,GACD,CAACwqC,EAAM7Q,IAGLkR,EAAWxkC,EAAAA,SAAc,WAC3B,OAAOkS,GAAAA,GAAUuyB,wCAAwC,CACrD5sB,KAAAA,EACAqB,aAAAA,EACAF,cAAAA,GAER,GAAG,CAACnB,EAAMqB,EAAcF,IAExB,OACIvhB,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,KAAQzJ,UACpBF,EAAAA,EAAAA,KAACkiB,GAAAA,GAAS,CACNjiB,UAAW0J,GAAM,SAAU,CAAC9H,KAAM,SAClCnC,MAAOmkB,KAAS,CAAC+oB,EAAgBC,EAAWE,OAI5D,CAEA,SAASD,GAAIprC,GAAoC,IAAlChC,EAAKgC,EAALhC,MACX,OACIM,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,GAAM,QAAQzJ,SACzBP,IAAKD,GAAO,SAACo8B,GAAG,OACb97B,EAAAA,EAAAA,KAACkhB,GAAAA,EAAK,CAAWtT,KAAMkuB,GAAXA,EAAkB,KAI9C,CAEA,SAAevzB,EAAAA,KAAWkkC,IC/H1B,IAAM9iC,IAAQnK,EAAAA,EAAAA,GAAG,kBAEjB,SAASytC,KACL,IAAMjuB,GAAS0F,EAAAA,EAAAA,IAAY+R,IAC3B,OACIz2B,EAAAA,EAAAA,KAAA,OAAAE,SACKP,IAAKqf,GAAQ,SAACpf,EAAMoC,GAAK,OACtBhC,EAAAA,EAAAA,KAAC07B,GAAAA,EAAK,CAACz7B,UAAW0J,GAAM,QAASwC,MAAOvM,GAAWoC,EAAS,KAI5E,CAEA,SAAeuG,EAAAA,KAAW0kC,ICE1B,IAAMx5B,GAAuC,CACzC,CACIlS,KAAM,UACNkY,OAAM,SAAAjZ,GAAS,IAAP0Y,EAAG1Y,EAAH0Y,IACJ,OACIlZ,EAAAA,EAAAA,KAACkhB,GAAAA,EAAK,CAAC3U,MAAO2M,EAAI0hB,QAAU,UAAY,SAAS16B,SAC5CgZ,EAAI0hB,QAAU,UAAY,YAGvC,GAEJ,CACIr5B,KAAM,OACNkY,OAAM,SAAA/X,GAAS,IAAPwX,EAAGxX,EAAHwX,IACJ,OACI9X,EAAAA,EAAAA,MAAA,QAAAlB,SAAA,CACKgZ,EAAI6hB,cAAc,KAEnB/6B,EAAAA,EAAAA,KAACwS,EAAAA,EAAe,CAACE,KAAK,iBAAiB9E,KAAMsL,EAAI6hB,cAAej0B,KAAK,QAGjF,EACA8M,MAAO,QAEX,CACIrS,KAAM,OACNkY,OAAM,SAAAzW,GAAS,IAAPkW,EAAGlW,EAAHkW,IACJ,OAAOtG,QAAQsG,EAAI6F,MAAMkS,UAC7B,EACArd,MAAO,UAEX,CACIrS,KAAM,cACNkY,OAAM,SAAApW,GACF,OADOA,EAAH6V,IACO4hB,WACf,GAEJ,CACIv5B,KAAM,WACNkY,OAAM,SAAA/V,GAAS,IAAPwV,EAAGxV,EAAHwV,IACJ,OAAOrM,EAAAA,EAAOmkB,OAAO9X,EAAIqhB,cAC7B,EACA3mB,MAAO,SAEX,CACIrS,KAAM,SACNkY,OAAM,SAAA7V,GAAS,IAAPsV,EAAGtV,EAAHsV,IACJ,OAAOrM,EAAAA,EAAOmkB,OAAO9X,EAAIshB,YAC7B,EACA5mB,MAAO,SAEX,CACIrS,KAAM,aACNkY,OAAM,SAAAtV,GAAS,IAAP+U,EAAG/U,EAAH+U,IACJ,OAAQA,EAAIkiB,kBAGRp7B,EAAAA,EAAAA,KAACo3B,GAAAA,EAAQ,CAACjxB,MAAO+S,EAAIkiB,iBAAkBxtB,KAAMsL,EAAImiB,aAAc9uB,MAAM,YAFrEM,EAAAA,EAAOC,QAIf,GAEJ,CACIvL,KAAM,kBACNkY,OAAM,SAAAnV,GAAS,IAAP4U,EAAG5U,EAAH4U,IACJ,OAAOrM,EAAAA,EAAO88B,MAAMzwB,EAAIohB,gBAC5B,EACA1mB,MAAO,QACP+J,MAAO,KAEX,CACIpc,KAAM,kBACNkY,OAAM,SAAA1U,GAAS,IAAPmU,EAAGnU,EAAHmU,IACJ,OAAOrM,EAAAA,EAAO88B,MAAMzwB,EAAImhB,oBAC5B,EACAzmB,MAAO,QACP+J,MAAO,MAIf,SAASuvB,KACL,IAAOxX,GAAQhR,EAAAA,EAAAA,IAAYyR,IAApBT,KAEP,OAAMA,GAAQA,EAAK0E,UAAUl4B,OAAS,GAKlClC,EAAAA,EAAAA,KAACmb,GAAAA,GAAW,CACR1H,QAASA,GACTzI,KAAM0qB,EAAK0E,UACXjB,WAAY,EACZC,YAAU,EACVhe,SAAU,CACNrS,UAAU,KAVX,IAcf,CAEA,SAAeR,EAAAA,KAAW2kC,ICtH1B,SAASC,KACL,IAAOzX,GAAQhR,EAAAA,EAAAA,IAAYyR,IAApBT,KACDM,GAActR,EAAAA,EAAAA,KAAY,SAAC/e,GAAgB,OAAK+vB,GAAQG,GAAelwB,EAAO,CAAC+vB,KAAAA,GAAM,IAE3F,OAAMA,GAAQM,EAAY9zB,OAAS,GAI5BlC,EAAAA,EAAAA,KAACk5B,GAAe,CAAClD,YAAaA,IAH1B,IAIf,CAEA,SAAeztB,EAAAA,KAAW4kC,ICX1B,IAAMC,GAAc,IAAIlN,GAAAA,ECNXmN,GAAiC,SAAC1nC,GAAgB,OAC3DA,EAAM0P,WAAWqgB,KAAK4X,oBAAoBtiC,IAAK,EACtCuiC,GAAkC,SAAC5nC,GAAgB,OAC5DA,EAAM0P,WAAWqgB,KAAK4X,oBAAoBnhC,KAAM,E,uBCC9CxC,IAAQnK,EAAAA,EAAAA,GAAG,6BAWV,SAASguC,GAAuBhtC,GAA0B,IAAxB4f,EAAI5f,EAAJ4f,KAC/BrN,GAAWC,EAAAA,EAAAA,MAEjBzK,EAAAA,WAAgB,WACZwK,EFXD,SACHqN,GAEA,OAAO,SAACrN,GAGJ,OAFAA,EAAS,CAAClR,KAAM4rC,GAAAA,GAA2B1xB,QAAS/Q,KAAM,CAACoV,KAAAA,KAEpD+U,GAAAA,GACFpvB,IAAIqvB,GAAAA,GAAQsY,wBAAyB,CAClClN,WAAY,CACR/f,KAAK,uBAADtW,OAAyBiW,EAAI,wDAErCqgB,aAAc2M,GAAYO,mBAE7B1xB,MAAK,SAACjR,GACH+H,EAAS,CAAClR,KAAM4rC,GAAAA,GAA2BlxB,QAASvR,KAAM,CAACA,KAAAA,IAC/D,IAAE,OACK,SAACmB,IACCyhC,EAAAA,GAAAA,GAAYzhC,IACb4G,EAAS,CAAClR,KAAM4rC,GAAAA,GAA2BjxB,QAASxR,KAAM,CAACmB,MAAAA,IAEnE,GACR,CACJ,CEXiB0hC,CAA4BztB,GACzC,GAAG,CAACA,EAAMrN,IAEV,IAAM/H,GAAO0Z,EAAAA,EAAAA,IAAY2oB,IACnBlhC,GAAQuY,EAAAA,EAAAA,IAAY6oB,IAEpBO,GAAkBppB,EAAAA,EAAAA,IAAYqpB,GAAAA,IAEpC,OAAO5hC,GACHnM,EAAAA,EAAAA,KAACoN,GAAAA,EAAK,CAACjB,MAAOA,KAEdnM,EAAAA,EAAAA,KAACguC,GAAAA,EAAI,CACD/tC,UAAW0J,GAAM,QACjBxD,MAAO6E,EACPoQ,SAAU0yB,EACVG,SAAO,EACPC,aAAW,GAGvB,CCdA,IAAMvkC,IAAQnK,EAAAA,EAAAA,GAAG,aAQjB,SAAS2uC,GAAQ3tC,GAAoD,IAAlDmT,EAAKnT,EAALmT,MACTZ,GAAWC,EAAAA,EAAAA,MAEjB4R,GAAkDF,EAAAA,EAAAA,IAAYyR,IAAvDT,EAAI9Q,EAAJ8Q,KAAMpb,EAAOsK,EAAPtK,QAASlO,EAAMwY,EAANxY,OAAQD,EAAKyY,EAALzY,MAAOE,EAASuY,EAATvY,UAE/B+T,EAAO6rB,mBAAmBt4B,EAAMu4B,OAAO9rB,MACvCoW,GAAa9R,EAAAA,EAAAA,IAAY4R,IAEzB1a,EAAWrT,EAAAA,aAAkB,WAC/BwK,EAASkiB,GAAmB7U,GAChC,GAAG,CAACrN,EAAUqN,KAEdzD,EAAAA,GAAAA,IAAWf,EAAU,CAACse,QAAS,OAE/B,IAAM9a,EAAiB9E,KAAalO,GAAUgU,KAASsV,aAAI,EAAJA,EAAMtV,OAEvD4V,GAActR,EAAAA,EAAAA,KAAY,SAAC/e,GAAgB,OAAK+vB,GAAQG,GAAelwB,EAAO,CAAC+vB,KAAAA,GAAM,IAErF0Y,EAAWz6B,EAAMiH,IACjByzB,EAAW9lC,EAAAA,SACb,eAAA+lC,EAAAC,EAAAC,EAAA,OACIC,EAAAA,GAAAA,IACIL,EACAM,GAAAA,IAAOH,EAAA,IAAAplB,EAAAA,GAAAA,GAAAolB,EAEFG,GAAAA,GAAQC,aAAe,CAACC,KAAMh8B,QAAQ8iB,GAAQM,EAAY9zB,OAAS,MAAGinB,EAAAA,GAAAA,GAAAolB,EACtEG,GAAAA,GAAQG,UAAY,CAACD,KAAMh8B,QAAQ8iB,SAAe,QAAX4Y,EAAJ5Y,EAAM0E,iBAAS,IAAAkU,OAAA,EAAfA,EAAiBpsC,WAAQinB,EAAAA,GAAAA,GAAAolB,EAC5DG,GAAAA,GAAQ1V,aAAe,CAAC4V,KAAMh8B,QAAQ8iB,GAAQM,EAAY9zB,OAAS,MAAGinB,EAAAA,GAAAA,GAAAolB,EACtEG,GAAAA,GAAQI,OAAS,CAACF,KAAMh8B,QAAQ4jB,GAAauY,QAASvY,IAAW+X,GAEtE,MAAIC,EAAA,IAAArlB,EAAAA,GAAAA,GAAAqlB,EAECE,GAAAA,GAAQM,QAAU,YAAS7lB,EAAAA,GAAAA,GAAAqlB,EAC3BE,GAAAA,GAAQC,aAAe,gBAAcH,GAE7C,GACL,CAAC9Y,EAAM0Y,EAAU5X,EAAYR,IAGjC,OACIh2B,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,KAAQzJ,UACpBF,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,GAAM,UAAW,CAAC2Q,QAAS8E,IAAiBlf,UACxDF,EAAAA,EAAAA,KAACkM,EAAAA,EAAe,CAACE,OAAQA,EAAQD,MAAOA,EAAOE,UAAWA,EAAUnM,UAChEkB,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,KAAQzJ,SAAA,EACpBkB,EAAAA,EAAAA,MAAA,OAAKnB,UAAW0J,GAAM,OAAQ,4CAA4CzJ,SAAA,CACrEkgB,GACDpgB,EAAAA,EAAAA,KAACwS,EAAAA,EAAe,CAAC5E,KAAMwS,EAAMtZ,KAAK,IAAI4L,KAAK,oBAC1C1S,EAAAA,EAAAA,KAACq/B,GAAAA,EAAM,CAACjd,QAAShD,QAEpBA,IACEhe,EAAAA,EAAAA,MAACmH,EAAAA,SAAc,CAAArI,SAAA,EACXF,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,GAAM,QAAQzJ,SACzBw1B,IAAQ11B,EAAAA,EAAAA,KAACysC,IAAQ5sC,EAAAA,EAAAA,GAAA,GAAK61B,OAG3B11B,EAAAA,EAAAA,KAAA,OAAKC,UAAW0J,GAAM,UAAW,oBAAoBzJ,UACjDF,EAAAA,EAAAA,KAACivC,GAAAA,GAAIpvC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKwuC,GAAQ,IAAExV,QAAM,QAG9Bz3B,EAAAA,EAAAA,MAAC8tC,EAAAA,GAAM,CAAAhvC,SAAA,EACHF,EAAAA,EAAAA,KAACmvC,EAAAA,GAAK,CACF1uB,KAAI,GAAAtW,OAAKwJ,EAAM8M,KAAI,KAAAtW,OAAIukC,GAAAA,GAAQM,SAC/B3uB,UAAWyiB,MAEf9iC,EAAAA,EAAAA,KAACmvC,EAAAA,GAAK,CACF1uB,KAAI,GAAAtW,OAAKwJ,EAAM8M,KAAI,KAAAtW,OAAIukC,GAAAA,GAAQC,cAC/BtuB,UAAW2rB,MAEfhsC,EAAAA,EAAAA,KAACmvC,EAAAA,GAAK,CACF1uB,KAAI,GAAAtW,OAAKwJ,EAAM8M,KAAI,KAAAtW,OAAIukC,GAAAA,GAAQG,WAC/BxuB,UAAW6sB,MAEfltC,EAAAA,EAAAA,KAACmvC,EAAAA,GAAK,CACF1uB,KAAI,GAAAtW,OAAKwJ,EAAM8M,KAAI,KAAAtW,OAAIukC,GAAAA,GAAQ1V,cAC/B3Y,UAAW8sB,MAEfntC,EAAAA,EAAAA,KAACmvC,EAAAA,GAAK,CACF1uB,KAAI,GAAAtW,OAAKwJ,EAAM8M,KAAI,KAAAtW,OAAIukC,GAAAA,GAAQI,QAC/Br1B,OAAQ,kBAAMzZ,EAAAA,EAAAA,KAACitC,GAAU,GAAG,KAEhCjtC,EAAAA,EAAAA,KAACmvC,EAAAA,GAAK,CACF1uB,KAAI,GAAAtW,OAAKwJ,EAAM8M,KAAI,KAAAtW,OAAIukC,GAAAA,GAAQU,sBAC/B31B,OAAQ,kBACJzZ,EAAAA,EAAAA,KAACwtC,GAAuB,CAACptB,KAAMzM,EAAMu4B,OAAO9rB,MAAQ,KAG5DpgB,EAAAA,EAAAA,KAACqvC,EAAAA,GAAQ,CACLvgB,KAAMnb,EAAMiH,IACZoU,GAAE,GAAA7kB,OAAKwJ,EAAMiH,IAAG,KAAAzQ,OAAIukC,GAAAA,GAAQM,yBAUpE,CAEA,SAAezmC,EAAAA,KAAW4lC,I,wCC3GpB5uC,IAAIoK,EAAAA,EAAAA,GAAM2lC,GAAAA,GAAKC,YAsDrB,SAASC,KACL,IAAMj1B,GAAUmK,EAAAA,EAAAA,IAAYhJ,EAAAA,IAC5B,OAAO1b,EAAAA,EAAAA,KAACqvC,EAAAA,GAAQ,CAACrgB,IAAIygB,EAAAA,GAAAA,IAAuBl1B,EAAS,KACzD,CAoBA,UAAeiB,EAAAA,EAAAA,KARS,SAAC7V,GAErB,MAAO,CACH+pC,gBAFoBC,EAAAA,GAAAA,IAAmBhqC,GAEP2pC,GAAAA,GAAKC,YACrCK,QAASC,GAAAA,GAEjB,GAEA,EA3EO,SAAmBrvC,GAA4D,IAA1DmT,EAAKnT,EAALmT,MAAKm8B,EAAAtvC,EAAEkvC,eAAAA,OAAc,IAAAI,EAAGC,GAAAA,EAAWD,EAAEF,EAAOpvC,EAAPovC,QAASzU,EAAQ36B,EAAR26B,SAChE34B,GAAQisC,EAAAA,GAAAA,IAAa96B,EAAMiH,IAAKo1B,GAAAA,GAGhCC,EAAaP,IAAmBM,GAAAA,EAAIE,aAAeF,GAAAA,EAAIG,aAAeT,EAEtEU,GAAgBC,EAAAA,EAAAA,IAAUlV,EAASmV,SAAU,CAC/C7vB,KAAK,GAADtW,OAAKwJ,EAAM8M,KAAI,KAAAtW,OAAI6lC,GAAAA,EAAIO,MAAK,YAGpC,OACIvwC,EAAAA,EAAAA,KAAA,OAAKC,UAAU,yBAAwBC,UACnCkB,EAAAA,EAAAA,MAAA,WAASnB,UAAWV,GAAE,KAAM,yBAAyBW,SAAA,EAC/CkwC,IACEpwC,EAAAA,EAAAA,KAAA,OAAKC,UAAWV,GAAE,WAAWW,UACzBF,EAAAA,EAAAA,KAACivC,GAAAA,GAAIpvC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACG2C,GAAK,IACTzB,OAAQgvC,GAAAA,EACR9vC,UAAWV,GAAE,QACbs5B,QAAM,EACN/xB,KAAM8oC,QAKlB5vC,EAAAA,EAAAA,KAAA,OAAKC,UAAWV,GAAE,cAAcW,UAC5BkB,EAAAA,EAAAA,MAAC8tC,EAAAA,GAAM,CAAAhvC,SAAA,EACHF,EAAAA,EAAAA,KAACmvC,EAAAA,GAAK,CAAC1uB,KAAI,GAAAtW,OAAKwJ,EAAM8M,KAAI,KAAAtW,OAAI6lC,GAAAA,EAAIO,MAAK,UAAUlwB,UAAW8tB,MAC5DnuC,EAAAA,EAAAA,KAACmvC,EAAAA,GAAK,CAAC1uB,KAAI,GAAAtW,OAAKwJ,EAAM8M,KAAI,KAAAtW,OAAI6lC,GAAAA,EAAIO,OAASlwB,UAAW2c,MACtDh9B,EAAAA,EAAAA,KAACmvC,EAAAA,GAAK,CAAC1uB,KAAI,GAAAtW,OAAKwJ,EAAM8M,KAAI,KAAAtW,OAAI6lC,GAAAA,EAAIQ,UAAYnwB,UAAWzD,MACzD5c,EAAAA,EAAAA,KAACmvC,EAAAA,GAAK,CACF1uB,KAAI,GAAAtW,OAAKwJ,EAAM8M,KAAI,KAAAtW,OAAI6lC,GAAAA,EAAIG,cAC3B12B,OAAQ,kBAAMzZ,EAAAA,EAAAA,KAAC6oB,GAAO,CAAuBhnB,KAAMye,GAAAA,GAAWC,MAAlCD,GAAAA,GAAWC,KAA+B,KAE1EvgB,EAAAA,EAAAA,KAACmvC,EAAAA,GAAK,CACF1uB,KAAI,GAAAtW,OAAKwJ,EAAM8M,KAAI,KAAAtW,OAAI6lC,GAAAA,EAAIS,aAC3Bh3B,OAAQ,kBAAMzZ,EAAAA,EAAAA,KAAC6oB,GAAO,CAAsBhnB,KAAMye,GAAAA,GAAW8I,KAAjC9I,GAAAA,GAAW8I,IAA6B,KAExEppB,EAAAA,EAAAA,KAACmvC,EAAAA,GAAK,CAAC1uB,KAAI,GAAAtW,OAAKwJ,EAAM8M,KAAI,KAAAtW,OAAI6lC,GAAAA,EAAIU,QAAUrwB,UAAWswB,MACvD3wC,EAAAA,EAAAA,KAACmvC,EAAAA,GAAK,CACF1uB,KAAI,GAAAtW,OAAKwJ,EAAM8M,KAAI,KAAAtW,OAAI6lC,GAAAA,EAAIE,cAC3B7vB,UAAWmvB,MAEfxvC,EAAAA,EAAAA,KAACmvC,EAAAA,GAAK,CAAC1uB,KAAI,GAAAtW,OAAKwJ,EAAM8M,KAAI,SAASJ,UAAWuwB,GAAAA,KAC9C5wC,EAAAA,EAAAA,KAACqvC,EAAAA,GAAQ,CAACvgB,KAAMnb,EAAMiH,IAAKoU,GAAE,GAAA7kB,OAAKwJ,EAAMiH,IAAG,KAAAzQ,OAAI8lC,cAMvE,I,4BCjEMtmC,IAAQnK,EAAAA,EAAAA,GAAG,8BAEjB,SAASqxC,GAAuBrwC,GAAgC,IAA9BmT,EAAKnT,EAALmT,MAC9B,OACIvS,EAAAA,EAAAA,MAAC8tC,EAAAA,GAAM,CAAAhvC,SAAA,EACHF,EAAAA,EAAAA,KAACmvC,EAAAA,GAAK,CACF1uB,KAAI,GAAAtW,OAAKwJ,EAAM8M,KAAI,KAAAtW,OAAI2mC,GAAAA,EAAcP,MAAK,UAC1ClwB,UAAW0wB,MAEf/wC,EAAAA,EAAAA,KAACmvC,EAAAA,GAAK,CAAC1uB,KAAM,GAAIhH,OAAQ,kBAAMzZ,EAAAA,EAAAA,KAACgxC,GAAAA,EAAW,CAACC,KAAM3B,GAAAA,GAAKC,YAAc,MAGjF,CAEA,SAASwB,KACL,OACI/wC,EAAAA,EAAAA,KAACgxC,GAAAA,EAAW,CAACC,KAAM3B,GAAAA,GAAKC,WAAWrvC,UAC/BF,EAAAA,EAAAA,KAACkxC,GAAqB,KAGlC,CAEA,SAASA,KACL,IAAM32B,GAAUmK,EAAAA,EAAAA,IAAYhJ,EAAAA,IACtBy1B,GAAWzsB,EAAAA,EAAAA,IAAY0R,IACvBgb,GAAUC,EAAAA,EAAAA,MAEV3xC,EAAQ6I,EAAAA,SAAc,WACxB,IAAM+oC,EAAS,EACXtxC,EAAAA,EAAAA,KAACuxC,GAAAA,EAAe,CAAcC,MAAMxV,EAAAA,GAAAA,IAAuB,CAACzhB,QAAAA,IAAUra,SACjE,UADgB,WAczB,OAVIixC,GACAG,EAAOn5B,MACHnY,EAAAA,EAAAA,KAACuxC,GAAAA,EAAe,CAEZC,MAAMxV,EAAAA,GAAAA,IAAuB,CAACzhB,QAAAA,EAAS6F,KAAM+wB,IAAWjxC,SAEvDixC,GAHG,WAOTG,CACX,GAAG,CAAC/2B,EAAS42B,IAEb,OACInxC,EAAAA,EAAAA,KAACyxC,GAAAA,EAAW,CAACC,SAAUN,EAAQj5B,KAAMw5B,UAAQ,EAAC1xC,UAAW0J,GAAM,eAAezJ,SACzER,GAGb,CAEA,SAAe6I,EAAAA,KAAWsoC,G,4FC7DpBtxC,GAAIoK,EAAAA,EAAAA,GAAM,oBAMD,SAASinC,IACpB,IACOgB,GADOC,EAAAA,EAAAA,MACM3F,OAAb0F,IAEP,OACI5xC,EAAAA,EAAAA,KAAA,OAAKC,UAAWV,EAAE,CAACgN,MAAO,YAAYrM,UAClCF,EAAAA,EAAAA,KAAA,KAAGC,UAAWV,EAAE,aAAaW,SACxB0xC,EAAG,mBAAAznC,OACqByC,EAAAA,EAAOC,OAAsB,cAAE+kC,GAAI,yBACtD,6CAItB,C,wLCCME,GAAkBp8B,EAAAA,EAAAA,IACpB,CAACq8B,EAAAA,GAAWC,EAAAA,GAAgBC,EAAAA,EAAeC,EAAAA,GAAwBC,EAAAA,KACnE,SACItlC,EACAulC,EACAC,EACAC,EACAC,GAEA,OAAA1yC,EAAAA,EAAAA,GAAA,CACIgN,OAAAA,EACAulC,YAAAA,EACAC,QAAAA,EACAC,iBAAAA,EACAC,YAAAA,EACA7oC,QAAQ,IACL8oC,EAAAA,EAAAA,KAEX,IAGSC,GAA4B/8B,EAAAA,EAAAA,IAAe,CAACo8B,GAAkBY,KAE9DC,GAAkCj9B,EAAAA,EAAAA,IAAe,CAACo8B,GAAkBY,KAEpEE,GAAuBl9B,EAAAA,EAAAA,IAAe,CAACo8B,GAAkBY,KAEzDG,GAAqCn9B,EAAAA,EAAAA,IAAe,CAACo8B,GAAkBY,KAEvEI,GAAsCp9B,EAAAA,EAAAA,IAAe,CAACo8B,GAAkBY,KAExEK,GAAuCr9B,EAAAA,EAAAA,IAAe,CAACo8B,GAAkBY,KAEzEM,GAA0Bt9B,EAAAA,EAAAA,IAAe,CAACo8B,GAAkBY,KAE5D3E,GAAyCr4B,EAAAA,EAAAA,IAAe,CAACo8B,GAAkBY,KAE3EO,GAA6Bv9B,EAAAA,EAAAA,IAAe,CAACo8B,GAAkBY,KAE/DQ,GAA0Bx9B,EAAAA,EAAAA,IAAe,CAACo8B,GAAkBY,I,iJCxDlE,SAASS,EAAmBjH,GAQ/B,IAAO3xB,EAAoB2xB,EAApB3xB,QAAY7L,GAAIC,EAAAA,EAAAA,GAAIu9B,EAAMt9B,GAC3BkC,EAAG,IAAA3G,OAAOoQ,GAAWke,EAAAA,EAAGle,QAAO,KAAApQ,OAAImlC,EAAAA,GAAK8D,YACxCC,ECjBH,SAA+CnH,EAAWoH,GAC7D,IAAMxiC,EAAM,IAAIyiC,gBAehB,OAdA3tC,OAAO6S,KAAKyzB,GAAQsH,QAAO,SAACvrC,EAAK6N,GAC7B,IACe29B,EADTttC,EAAQ+lC,EAAOp2B,GACrB,GAAIA,KAAKw9B,EACL,GAAmB,QAAnBG,EAAIH,EAAKx9B,GAAG6R,eAAO,IAAA8rB,GAAfA,EAAiBC,UAAW,CAAC,IAADC,EAAAC,EACtBvN,EAAqB,QAAlBsN,EAAGL,EAAKx9B,GAAG6R,eAAO,IAAAgsB,GAAW,QAAXC,EAAfD,EAAiBD,iBAAS,IAAAE,OAAA,EAA1BA,EAAA/wC,KAAA8wC,EAA6BxtC,QAC7BkC,IAARg+B,GACAv1B,EAAI+iC,OAAO/9B,EAAGuwB,EAAM,GAE5B,MACIv1B,EAAI+iC,OAAO/9B,EAAG3P,EAAQ,IAG9B,OAAO8B,CACX,GAAG6I,GACIA,CACX,CDAmBgjC,CAAoBplC,GAAMqlC,EAAAA,EAAAA,MAAuB9iB,WAChE,OAAOoiB,EAAM,GAAAlpC,OAAM2G,EAAG,KAAA3G,OAAIkpC,GAAWviC,CACzC,CEfO,SAASkrB,IAAiF,IAADx7B,EAAAsJ,UAAA5H,OAAA,QAAAmG,IAAAyB,UAAA,GAAAA,UAAA,GAAJ,CAAC,EAArDsW,EAAI5f,EAAJ4f,KAAM7F,EAAO/Z,EAAP+Z,QAC1C,OAAO6F,EAAI,IAAAjW,OACDoQ,GAAWke,EAAAA,EAAGle,QAAO,KAAApQ,OAAImlC,EAAAA,GAAKC,WAAU,KAAAplC,OAAI2mC,EAAAA,EAAcP,MAAK,KAAApmC,OAAIiW,GAAI,IAAAjW,OACvEoQ,GAAWke,EAAAA,EAAGle,QAAO,KAAApQ,OAAImlC,EAAAA,GAAKC,WAAU,KAAAplC,OAAI2mC,EAAAA,EAAcP,MACxE,CAEO,SAASyD,EAAaz5B,EAAiB7G,GAC1C,MAAM,IAANvJ,OAAWoQ,EAAO,KAAApQ,OAAImlC,EAAAA,GAAKC,WAAU,KAAAplC,OAAI2mC,EAAAA,EAAcL,YAAW,UAAAtmC,OAASuJ,EAC/E,CAEO,SAASugC,EAAiBvyC,GAQ7B,IAPAwyC,EAAIxyC,EAAJwyC,KACAC,EAAQzyC,EAARyyC,SACA55B,EAAO7Y,EAAP6Y,QAMA,MAAM,IAANpQ,OAAWoQ,GAAWke,EAAAA,EAAGle,QAAO,KAAApQ,OAAImlC,EAAAA,GAAK8E,WAAU,UAAAjqC,OAAS+pC,EAAI,cAAA/pC,OAAagqC,EACjF,CAEO,SAASE,EAAgBC,EAAiB/5B,GAC7C,MAAM,IAANpQ,OAAWoQ,GAAWke,EAAAA,EAAGle,QAAO,KAAApQ,OAAImlC,EAAAA,GAAKiF,SAAQ,aAAApqC,OAAYmqC,EACjE,C,kRCnBO,SAASE,EAAmBC,GAC/B,OAAO90C,IAAK80C,GAAa,SAACC,GACtB,IAeIC,EACAC,EACAjvC,EAjBEkvC,EAAeC,IAAAA,SACjBJ,EACA,6CAEEK,EAAaD,IAAAA,SAAeJ,EAAY,2CACxCM,EAAUF,IAAAA,SAAeJ,EAAY,mCACrC1R,EAAS8R,IAAAA,SAAeJ,EAAY,kCACpCO,EAASH,IAAAA,SAAeJ,EAAY,mBAEpCvN,EAAS2N,IAAAA,SAAeJ,EAAY,wBACpCQ,EAAQJ,IAAAA,SAAeJ,EAAY,WACnCxT,EAAK4T,IAAAA,SAAeJ,EAAY,QActC,OAZkBQ,EAAQA,EAAMhzC,OAAS,KAQrC0yC,GADAD,EAAOQ,IAAMD,GAAO,SAACP,GAAI,MAAoB,YAAfA,EAAKhvC,KAAmB,KAAKuvC,EAAM,IAC9CxhC,QACnB/N,EAAQgvC,EAAKhvC,OAGV,CACHu7B,GAAAA,EACA+T,OAAAA,EACAtvC,MAAAA,EACAwhC,OAAAA,EACA6N,QAAAA,EACAhS,OAAAA,EACA6R,aAAAA,EACAE,WAAAA,EACAG,MAAAA,EACAP,KAAAA,EACAC,YAAAA,EAER,GACJ,CAEO,SAASQ,EAAepqC,GAC3B,IAWM+F,EAAQnE,EAAAA,EAAOoW,YAAYqyB,QAAQrqC,EAAM,CAC3C,CAACzJ,KAAM,UAAWM,KAAM,OACxB,CAACN,KAAM,QAASM,KAAM,gBACtB,CAACN,KAAM,SAAUM,KAAM,OACvB,CAACN,KAAM,eAAgBM,KAAM,OAC7B,CAACN,KAAM,aAAcM,KAAM,OAC3B,CAACN,KAAM,cAAeM,KAAM,SAGhC,OAAOmJ,EAAK9I,OAAS6O,EAAM,GApBN,CACjBo2B,OAAQ,QACR6N,QAAS,EACT7X,MAAO,GACP6F,OAAQ,EACR6R,aAAc,EACdE,WAAY,EACZN,YAAa,EACba,SAAS,EAajB,CAEA,SAASC,EAAoBC,EAAKC,GAC9B,IAAMC,EAAkBZ,IAAAA,SAAeW,EAAO,oBACxCE,EAAiBb,IAAAA,SAAeW,EAAO,mBAEvCG,EAAWd,IAAAA,SAAea,EAAgB,iBAC1CE,EAAWf,IAAAA,SAAeY,EAAiB,iBAE3CI,EAAYhB,IAAAA,SAAea,EAAgB,yBAC3CI,EAAYjB,IAAAA,SAAeY,EAAiB,yBAElD,OAAA71C,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACO21C,GAAG,IACNQ,gCAAiClB,IAAAA,SAAeW,EAAO,oCACvDQ,yBAA0BnB,IAAAA,SAAeW,EAAO,+BAAgC,EAChFS,uBAAwBpB,IAAAA,SAAeW,EAAO,2BAC9CU,kBAAmBrB,IAAAA,SAAeW,EAAO,8BACzCW,iBAAkBtB,IAAAA,SAAeW,EAAO,6BACxCY,gBAAiBvB,IAAAA,SAAeW,EAAO,oBACvCR,OAAQH,IAAAA,SAAeW,EAAO,WAC9Ba,KAAMxB,IAAAA,SAAeW,EAAO,SAC5BC,gBAAAA,EACAC,eAAAA,EAEAY,aAAcX,EACdY,mBAAoBX,EACpBY,kBAAmBZ,EAAWD,EAC9Bc,yBAAyBC,EAAAA,EAAAA,IAAgB,IAAMf,EAAYC,GAE3De,qBAAsBd,EACtBe,2BAA4Bd,EAC5Be,0BAA2Bf,EAAYD,EACvCiB,iCAAiCJ,EAAAA,EAAAA,IAAgB,IAAMb,EAAaC,IAE5E,CAEO,SAASiB,EAAevC,EAAa5Q,GACxC,IAAI7gB,EAAcpW,EAAAA,EAAOoW,YAAYqyB,QACjCZ,EACA,CACI,CAAClzC,KAAM,UAAWM,KAAM,OACxB,CAACN,KAAM,SAAUM,KAAM,OACvB,CAACN,KAAM,eAAgBM,KAAM,OAC7B,CAACN,KAAM,aAAcM,KAAM,OAC3B,CAACN,KAAM,cAAeM,KAAM,UAEhC,UAGJmhB,EAAYre,OAAO,EAAG,GAEtBqe,EAAchb,IACVgb,GACA,SAAClS,EAAKq2B,GACF,IAAM8P,EAAcpT,EAAQsD,EAAOA,QAAQ8P,YACrCC,EAAcpC,IAAAA,SAAemC,EAAa,UAOhD,OANAnmC,EAAIq2B,EAAOA,SAAOtnC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACdo3C,YAAAA,GACG1B,EAAoB,CAAC,EAAG0B,IACxB9P,GAAM,IACThK,MAAO+Z,IAEJpmC,CACX,GACA,CAAC,GAGL,IAAMqmC,EAAanvC,IACf67B,GACA,SAAC/yB,EAAK3K,EAAOlE,GAYT,OAXI+gB,EAAY/gB,GACZ6O,EAAIqH,KAAK6K,EAAY/gB,IAErB6O,EAAIqH,MAAItY,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CACLo3C,YAAa9wC,EAAM8wC,aAChB1B,EAAoB,CAAC,EAAGpvC,EAAM8wC,cAAY,IAC7C9P,OAAQllC,EACRk7B,MAAOh3B,EAAM8wC,YAAY9Z,MACzBsX,YAAa,KAGd3jC,CACX,GACA,IAGE4hB,EAAW1qB,IACbmvC,GACA,SAACrmC,EAAKq2B,GACF,IAAMrL,EAAMqL,aAAM,EAANA,EAAQkP,gBAIpB,OAHIva,IACAhrB,EAAIgrB,GAAOhrB,EAAIgrB,GAAOhrB,EAAIgrB,GAAO,EAAI,GAElChrB,CACX,GACA,CAAC,GAGL,OAAOqmC,EAAWviC,KAAI,SAACuyB,GAAM,OAAAtnC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACtBsnC,GAAM,IACTiQ,gBAAiBjQ,UAAAA,EAAQkP,iBAAuD,IAArC3jB,EAASyU,EAAOkP,kBAA6B,GAEhG,CAEO,SAASgB,EAAyB98B,EAAS+8B,GAC9C,MAAM,IAANntC,OAAWoQ,EAAO,wCAAApQ,OAAuCmtC,EAC7D,CAEO,SAAS7H,EAAuBl1B,EAAS4sB,EAAQ8O,GACpD,IAAMsB,EAAYtB,EAA2BuB,EAAAA,GAAWC,UAAYD,EAAAA,GAAWtH,aAC/E,MAAM,IAAN/lC,OAAWoQ,EAAO,KAAApQ,OAAImlC,EAAAA,GAAKoI,oBAAmB,KAAAvtC,OAAIotC,EAAS,kBAAAptC,OAAiBg9B,EAChF,CAEO,SAASwQ,EAA4Bp9B,EAAS4sB,GACjD,MAAM,IAANh9B,OAAWoQ,EAAO,KAAApQ,OAAImlC,EAAAA,GAAKsI,mBAAkB,KAAAztC,OAAIqtC,EAAAA,GAAWK,YAAW,kBAAA1tC,OAAiBg9B,EAC5F,CAEO,SAAS2Q,EAAyBv9B,GACrC,MAAM,IAANpQ,OAAWoQ,EAAO,KAAApQ,OAAImlC,EAAAA,GAAKoI,oBAC/B,CAEO,SAASK,EAA0Bx9B,GACtC,MAAM,IAANpQ,OAAWoQ,EAAO,KAAApQ,OAAImlC,EAAAA,GAAKsI,mBAC/B,CAMO,SAASI,EAAqB9W,GACjC,MAAM,sBAAN/2B,OAA6B+2B,EACjC,CAEO,SAAS+W,EAAwB19B,EAAS+8B,GAC7C,MAAM,IAANntC,OAAWoQ,EAAO,uCAAApQ,OAAsCmtC,EAC5D,CAEO,SAASY,EAAsB39B,EAAS4sB,GAC3C,MAAM,IAANh9B,OAAWoQ,EAAO,KAAApQ,OAAImlC,EAAAA,GAAKsI,mBAAkB,KAAAztC,OAAIqtC,EAAAA,GAAWK,YAAW,kBAAA1tC,OAAiBg9B,EAC5F,CAMO,SAASgR,EAAoBjX,GAChC,MAAM,qBAAN/2B,OAA4B+2B,EAChC,C","sources":["webpack://@ytsaurus/ui/./src/ui/components/ColumnSelector/ColumnSelector.js","webpack://@ytsaurus/ui/./src/ui/components/Dropdown/Dropdown.js","webpack://@ytsaurus/ui/./src/ui/components/LoadDataHandler/LoadDataHandler.tsx","webpack://@ytsaurus/ui/./src/ui/components/Text/Text.tsx","webpack://@ytsaurus/ui/./src/ui/components/TextInputWithDebounce/TextInputWithDebounce.tsx","webpack://@ytsaurus/ui/./src/ui/hocs/withSplit.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/TableInfo/TableInfo.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/components/versions/versions_v2.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Versions/VersionCell.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Versions/tables_v2.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/versions/versions_v2.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/versions/versions_v2-ts.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Versions/VersionSummary.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Versions/VersionsV2.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Proxies/ProxyActions/ProxyActions.tsx","webpack://@ytsaurus/ui/./src/ui/components/MaintenanceRequests/MaintenanceRequests.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Proxies/ProxyCard/ProxyCard.tsx","webpack://@ytsaurus/ui/./src/ui/utils/components/proxies/table.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/proxies/proxies.js","webpack://@ytsaurus/ui/./src/ui/pages/components/NodeMaintenanceModal/NodeMaintenanceModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Proxies/Proxies.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/nodes/filters-presets.js","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/FilterPresets/FiltersPresets.js","webpack://@ytsaurus/ui/./src/ui/components/Filter/FilterWithRegExp.tsx","webpack://@ytsaurus/ui/./src/ui/components/TagSelector/TagSelector.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/SetupModal/TagsFilter/TagsFilter.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/SetupModal/SetupModal.js","webpack://@ytsaurus/ui/./src/ui/store/actions/components/node/node.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/nodes/node-card.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/node/node.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeCpuAndMemory/NodeCpuAndMemory.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeResources/NodeResources.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeStorage/NodeStorage.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeTabletSlots/NodeTabletSlots.tsx","webpack://@ytsaurus/ui/./src/ui/utils/components/nodes/node-meta-items.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/NodeCard/NodeCard.js","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/Nodes/Nodes.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/components/shards.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Shards/Name.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Shards/NodeCount.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/Shards/Shards.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeGeneralTab/NodeGeneralTab.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/node/memory.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeBundlesTotal/NodeBundlesTotal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeMemoryDetailsTable/NodeMemoryDetailsTable.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/components/node/memory.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeBundles/NodeBundles.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeTables/NodeTables.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeMemoryUsage/NodeMemoryUsageToolbar.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeMemoryUsage/NodeMemoryUsage.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeMeta/NodeMeta.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeAlerts/NodeAlerts.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeLocations/NodeLocations.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeTabletSlotsTab/NodeTabletSlotsTab.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/components/node/unrecognized-options.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/node/unrecognized-options.ts","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodeUnrecognizedOptions/NodeUnrecognizedOptions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/node/NodePage.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/Components/Components.js","webpack://@ytsaurus/ui/./src/ui/pages/components/Components/ComponentsTopRowContent.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/Placeholder.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/thor/unipika.ts","webpack://@ytsaurus/ui/./src/ui/utils/app-url/navigation.ts","webpack://@ytsaurus/ui/./src/ui/utils/app-url/utils.ts","webpack://@ytsaurus/ui/./src/ui/utils/app-url/index.ts","webpack://@ytsaurus/ui/./src/ui/utils/components/tablet-cells/index.js"],"sourcesContent":["import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\nimport {sortableContainer, sortableElement, sortableHandle} from 'react-sortable-hoc';\nimport ReactList from 'react-list';\n\nimport each_ from 'lodash/each';\nimport escapeRegExp_ from 'lodash/escapeRegExp';\nimport filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\nimport partition_ from 'lodash/partition';\nimport reduce_ from 'lodash/reduce';\n\nimport {TextInput} from '@gravity-ui/uikit';\nimport Icon from '../../components/Icon/Icon';\n\nimport {renderText} from '../../components/templates/utils';\n\nimport './ColumnSelector.scss';\nimport Button from '../Button/Button';\n\nconst b = cn('column-selector');\n\nexport function makeItemsCopy(items) {\n return map_(items, (item) => {\n return {...item};\n });\n}\n\nconst DragHandle = sortableHandle(() => (\n <div className={b('drag-handle')}>\n <Icon face=\"solid\" awesome=\"list\" />\n </div>\n));\n\nconst SortableItem = sortableElement(\n ({\n item,\n isSortable,\n isSelectable,\n isDisabled,\n itemRenderer,\n onCheckBoxChange,\n withClickableHandler,\n }) => {\n const active = !isDisabled && !item.disabled;\n const className = b('list-item', {\n selected: item.checked && active && 'yes',\n selectable: isSelectable && active && 'yes',\n disabled: !active && 'yes',\n });\n\n return (\n <div className={className}>\n {isSortable && item.checked && <DragHandle />}\n <div className={b('list-item-name')}>\n {item.keyColumn && <Icon awesome=\"key\" />}\n {itemRenderer(item)}\n </div>\n {active && withClickableHandler && (\n <span\n className={b('list-item-check')}\n onClick={onCheckBoxChange}\n data-item={item.name}\n >\n <Icon awesome=\"check\" />\n </span>\n )}\n {!active && <Icon className={b('list-item-lock')} awesome=\"lock\" />}\n </div>\n );\n },\n);\n\nconst SortableList = sortableContainer(\n ({\n items,\n isSortable,\n isDisabled,\n itemRenderer,\n onCheckBoxChange,\n isSelectable,\n useStaticSize,\n withClickableHandler = true,\n }) => {\n const renderer = (index, key) => {\n const item = items[index];\n return (\n <SortableItem\n key={key}\n index={index}\n item={item}\n disabled={!isSortable}\n isSortable={isSortable}\n isDisabled={isDisabled}\n isSelectable={isSelectable}\n itemRenderer={itemRenderer}\n onCheckBoxChange={onCheckBoxChange}\n withClickableHandler={withClickableHandler}\n />\n );\n };\n // Use 'simple' placement for draggable items because 'uniform' produces bugs when items are dragged outside the viewport\n const type = isSortable ? 'simple' : 'uniform';\n const mods = {'static-size': useStaticSize};\n\n return (\n <div className={b('list', mods)}>\n <ReactList itemRenderer={renderer} length={items.length} type={type} />\n </div>\n );\n },\n);\n\nexport default class ColumnSelector extends Component {\n static itemsProps = PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n checked: PropTypes.bool.isRequired,\n keyColumn: PropTypes.bool,\n caption: PropTypes.string,\n disabled: PropTypes.bool,\n }),\n );\n\n static propTypes = {\n className: PropTypes.string,\n items: ColumnSelector.itemsProps.isRequired,\n showDisabledItems: PropTypes.bool,\n isSortable: PropTypes.bool,\n isSelectable: PropTypes.bool,\n isFilterable: PropTypes.bool,\n showSelectedOnly: PropTypes.bool,\n isHeadless: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n children: PropTypes.node,\n itemRenderer: PropTypes.func,\n };\n\n static defaultProps = {\n itemRenderer: ({name, caption = name}) => renderText(caption, {asHTML: false}),\n isSortable: false,\n isHeadless: false,\n isSelectable: true,\n isFilterable: true,\n showSelectedOnly: false,\n };\n\n constructor(props) {\n const {items, isHeadless, showSelectedOnly} = props;\n super(props);\n\n const state = {\n showSelectedOnly,\n filter: '',\n };\n if (isHeadless) {\n Object.assign(state, {items: makeItemsCopy(items)});\n }\n this.state = state;\n }\n\n get items() {\n return this.props.isHeadless ? this.state.items : this.props.items;\n }\n\n get buttonALLisDisabled() {\n return this.items.every((item) => item.checked);\n }\n\n get buttonNONEisDisabled() {\n return !this.items.some((item) => item.checked);\n }\n\n /*\n Takes items from the proper place (props or state), modifies them and writes them back at the same place.\n */\n withActualItems(func) {\n const {onChange} = this.props;\n // headless widget keeps its state to itself, but calls onChange as a way of notifying caller about changes\n if (this.props.isHeadless) {\n const {items} = func({items: this.state.items || []});\n this.setState({items}, () => {\n onChange({items: [...this.state.items]});\n });\n } else {\n // widget inside modal passes all changes to the modal component where they are put into state\n const {items} = func({items: this.props.items || []});\n onChange({items: [...items]});\n }\n }\n\n toggleItem = (name) => {\n this.withActualItems(({items}) => {\n items = [...items];\n const index = items.findIndex((item) => item.name === name);\n const changedItem = items[index];\n items[index] = {...changedItem, checked: !changedItem.checked};\n\n return {items};\n });\n };\n\n selectAllItems = () => {\n this.withActualItems(({items}) => {\n const visibleMap = this.getVisibleItemsMap();\n items = [...items];\n each_(items, (item, index) => {\n if (!visibleMap[item.name]) {\n return;\n }\n if (!item.checked && !item.disabled) {\n items[index] = {...item, checked: true};\n }\n });\n\n return {items};\n });\n };\n\n deselectAllItems = () => {\n this.withActualItems(({items}) => {\n const visibleMap = this.getVisibleItemsMap();\n items = [...items];\n each_(items, (item, index) => {\n if (!visibleMap[item.name]) {\n return;\n }\n if (item.checked && !item.disabled) {\n items[index] = {...item, checked: false};\n }\n });\n\n return {items};\n });\n };\n\n invertItems = () => {\n this.withActualItems(({items}) => {\n const visibleItems = this.getVisibleItemsMap();\n items = [...items];\n each_(items, (item, index) => {\n if (!visibleItems[item.name]) {\n return;\n }\n if (!item.disabled) {\n items[index] = {...item, checked: !item.checked};\n }\n });\n\n return {items};\n });\n };\n\n _handleCheckBoxChange = (event) => {\n this.toggleItem(event.currentTarget.getAttribute('data-item'));\n };\n\n _handleSortEnd = ({oldIndex, newIndex}) => {\n if (oldIndex === newIndex) {\n return;\n }\n\n this.withActualItems(({items}) => {\n items = [...items];\n\n const {items: visibleItems} = this.getVisibleItems();\n const fromIndex = items.findIndex((item) => item.name === visibleItems[oldIndex].name);\n const toIndex = items.findIndex((item) => item.name === visibleItems[newIndex].name);\n\n const [removed] = items.splice(fromIndex, 1);\n items.splice(toIndex, 0, removed);\n\n return {items};\n });\n };\n\n _handleDefaultSort = () => {\n this.withActualItems(({items}) => {\n return {\n items: items.sort((a, b) => {\n const aCaption = a.caption || a.name;\n const bCaption = b.caption || b.name;\n\n return aCaption.localeCompare(bCaption);\n }),\n };\n });\n };\n\n _toggleShownItems = () => {\n this.setState((prevState) => ({\n showSelectedOnly: !prevState.showSelectedOnly,\n }));\n };\n\n _changeFilter = (filter) => {\n this.setState({filter});\n };\n\n renderSearchBox() {\n return (\n <TextInput\n placeholder=\"Search...\"\n onUpdate={this._changeFilter}\n value={this.state.filter}\n hasClear={true}\n />\n );\n }\n\n renderControls() {\n const {isFilterable, isSelectable, isSortable, isHeadless} = this.props;\n const btnProps = {\n size: 'm',\n className: b('controls-item'),\n };\n\n return (\n <div className={b('controls')}>\n {isFilterable && this.renderSearchBox()}\n {isHeadless && (\n <Button {...btnProps} onClick={this._toggleShownItems}>\n Selected \n <span className=\"elements-secondary-text\">\n {filter_(this.items, (item) => item.checked).length}\n </span>\n </Button>\n )}\n {isSelectable && (\n <Button\n {...btnProps}\n disabled={this.buttonALLisDisabled}\n onClick={this.selectAllItems}\n >\n Add all\n </Button>\n )}\n {isSelectable && (\n <Button {...btnProps} onClick={this.invertItems}>\n Invert list\n </Button>\n )}\n {!isSelectable && (\n <Button\n {...btnProps}\n disabled={this.buttonNONEisDisabled}\n onClick={this.deselectAllItems}\n >\n Remove all\n </Button>\n )}\n {isSortable && (\n <Button {...btnProps} onClick={this._handleDefaultSort}>\n Default sort\n </Button>\n )}\n </div>\n );\n }\n\n filterItemsByName(items) {\n const re = new RegExp(escapeRegExp_(this.state.filter), 'i');\n return filter_(items, (item) => re.test(item.name));\n }\n\n filterItems(items) {\n const {showDisabledItems} = this.props;\n items = showDisabledItems ? items : filter_(items, (item) => !item.disabled);\n\n const visibleItems = this.filterItemsByName(items);\n return this.state.showSelectedOnly\n ? filter_(visibleItems, (item) => item.checked)\n : visibleItems;\n }\n\n getVisibleItems() {\n const toSplit = this.filterItems(this.items);\n const [keyItems, items] = partition_(toSplit, (item) => item.keyColumn);\n return {items, keyItems};\n }\n\n getVisibleItemsMap() {\n return reduce_(\n this.filterItems(this.items),\n (acc, item) => {\n acc[item.name] = item;\n return acc;\n },\n {},\n );\n }\n\n renderList() {\n const {isSortable, isSelectable, itemRenderer, children, isHeadless} = this.props;\n\n const {items, keyItems} = this.getVisibleItems();\n\n const className = b(\n 'content',\n {\n headless: isHeadless ? undefined : 'no',\n empty: items.length ? undefined : 'yes',\n },\n 'pretty-scroll',\n );\n\n return (\n <div className={className}>\n {keyItems.length > 0 && (\n <React.Fragment>\n <SortableList\n lockAxis=\"y\"\n isDisabled={false}\n isSortable={false}\n isSelectable={isSelectable}\n items={keyItems}\n itemRenderer={itemRenderer}\n helperClass={b('list-item', {helper: 'yes'})}\n onCheckBoxChange={this._handleCheckBoxChange}\n />\n {items.length > 0 && <div className={b('separator')} />}\n </React.Fragment>\n )}\n {items.length > 0 && (\n <SortableList\n items={items}\n isSelectable={isSelectable}\n isSortable={isSortable}\n itemRenderer={itemRenderer}\n lockAxis=\"y\"\n helperClass={b('list-item', {helper: 'yes'})}\n onSortEnd={this._handleSortEnd}\n onCheckBoxChange={this._handleCheckBoxChange}\n useDragHandle\n />\n )}\n {!keyItems.length && !items.length && children}\n </div>\n );\n }\n\n render() {\n const {isHeadless, isSortable, className} = this.props;\n const classNames = b(\n {\n headless: isHeadless ? 'yes' : undefined,\n sortable: isSortable ? undefined : 'no',\n },\n className,\n );\n return (\n <div className={classNames}>\n {this.renderControls()}\n {this.renderList()}\n </div>\n );\n }\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport templates from '../templates/templates';\n\nimport {Popup} from '@gravity-ui/uikit';\n\nconst block = cn('elements-dropdown');\n\nclass Dropdown extends Component {\n static propTypes = {\n button: PropTypes.oneOfType([PropTypes.element, PropTypes.object]).isRequired,\n className: PropTypes.string,\n popup: PropTypes.object,\n directions: PropTypes.array,\n trigger: PropTypes.oneOf(['click', 'hover']).isRequired,\n template: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.shape({\n key: PropTypes.string.isRequired,\n data: PropTypes.object,\n }),\n ]).isRequired,\n zIndexGroupLevel: PropTypes.number,\n };\n\n static defaultProps = {\n zIndexGroupLevel: 1,\n directions: ['bottom-end', 'top-end'],\n };\n\n state = {\n popupVisible: false,\n };\n\n anchor = React.createRef();\n\n toggle = () =>\n this.setState((prevState) => ({\n popupVisible: !prevState.popupVisible,\n }));\n\n open = () => this.setState({popupVisible: true});\n\n close = () => this.setState({popupVisible: false});\n\n renderButton() {\n const {button, trigger} = this.props;\n\n const actionProps = {\n onClick: trigger === 'click' ? this.toggle : undefined,\n onMouseEnter: trigger === 'hover' ? this.open : undefined,\n onMouseLeave: trigger === 'hover' ? this.close : undefined,\n };\n\n return React.cloneElement(button, actionProps);\n }\n\n renderTemplate() {\n const {template} = this.props;\n const {key, data} = this.props.template;\n const renderer = templates.get(key).__default__;\n\n return React.isValidElement(template)\n ? React.cloneElement(template)\n : renderer.call(this, data);\n }\n\n renderPopup() {\n const {popup, directions} = this.props;\n\n return (\n <Popup\n placement={directions}\n onClose={this.close}\n open={true}\n anchorRef={this.anchor}\n hasArrow\n {...popup}\n >\n {this.renderTemplate()}\n </Popup>\n );\n }\n\n render() {\n const {className} = this.props;\n\n return (\n <span className={block(null, className)} ref={this.anchor}>\n {this.renderButton()}\n {this.state.popupVisible && this.renderPopup()}\n </span>\n );\n }\n}\n\nexport default Dropdown;\n","import React, {Component} from 'react';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport Error from '../../components/Error/Error';\nimport hammer from '../../common/hammer';\n\nimport {showErrorPopup} from '../../utils/utils';\nimport {YTError} from '../../types';\n\nconst toaster = new Toaster();\n\ninterface LoadDataHandlerProps {\n alwaysShowError?: boolean;\n loaded: boolean;\n error: boolean;\n errorData?: YTError;\n children: React.ReactNode;\n}\n\nexport default class LoadDataHandler extends Component<LoadDataHandlerProps> {\n componentDidUpdate() {\n const {error, loaded, errorData} = this.props;\n\n if (error && loaded) {\n toaster.add({\n theme: 'danger',\n name: 'network',\n autoHiding: 500000,\n title: 'Oops! something went wrong.',\n content: errorData ? (errorData as YTError).message : hammer.format.NO_VALUE,\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(errorData as YTError),\n },\n ],\n });\n }\n }\n\n render() {\n const {alwaysShowError = false, error, errorData, loaded, children} = this.props;\n\n const initialLoading = !loaded;\n\n if (error && (alwaysShowError || initialLoading)) {\n return <Error error={errorData} />;\n }\n\n return children;\n }\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport './Text.scss';\nimport unipika from '../../common/thor/unipika';\nimport {UNIPIKA_ESCAPED_SETTINGS} from '../../utils';\n\nconst block = cn('yt-text');\n\ninterface Props {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function Secondary({children, disabled}: Props & {disabled?: boolean}) {\n return <span className={block('secondary', {disabled})}>{children}</span>;\n}\n\nexport function Bold({children}: Props) {\n return <span className={block('bold')}>{children}</span>;\n}\n\nexport function SecondaryBold({children}: Props) {\n return (\n <Secondary>\n <Bold>{children}</Bold>\n </Secondary>\n );\n}\n\nexport function Warning({children, className}: Props) {\n return <span className={block('warning', className)}>{children}</span>;\n}\n\nexport function WarningLight({children, className}: Props) {\n return <span className={block('warning-light', className)}>{children}</span>;\n}\n\nexport function NoWrap({children}: Props) {\n return <span className={block('no-wrap')}>{children}</span>;\n}\n\nexport function Escaped({text, onClick}: {text: string; onClick?: (e: React.MouseEvent) => void}) {\n const textNode = unipika.prettyprint(text, {\n ...UNIPIKA_ESCAPED_SETTINGS,\n asHTML: true,\n });\n return (\n <span\n onClick={onClick}\n className={block('escaped')}\n dangerouslySetInnerHTML={{__html: textNode}}\n />\n );\n}\n","import React from 'react';\nimport throttle_ from 'lodash/throttle';\n\nimport {TextInput, TextInputProps} from '@gravity-ui/uikit';\n\nexport interface TextInputWithDebounceProps extends TextInputProps {\n debounce?: number;\n onBlur?: (e: React.FocusEvent) => void;\n onEnterKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\nfunction TextInputWithDebounce(props: TextInputWithDebounceProps) {\n const {\n debounce = 400,\n onUpdate = () => {},\n onBlur,\n value,\n onEnterKeyDown,\n onKeyDown,\n ...rest\n } = props;\n\n const [input, setInput] = React.useState<string | undefined>();\n\n const handleChangeExt = React.useMemo(() => {\n return throttle_(onUpdate as any, debounce);\n }, [debounce, onUpdate]);\n\n const handleChange = React.useCallback(\n (text: string) => {\n setInput(text);\n handleChangeExt(text);\n },\n [handleChangeExt, setInput],\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (onKeyDown) {\n onKeyDown(e);\n }\n if (e.key === 'Enter' && onEnterKeyDown) {\n onEnterKeyDown(e);\n }\n },\n [onEnterKeyDown, onKeyDown],\n );\n\n const handleBlur = React.useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n setInput(undefined);\n\n if (onBlur) {\n onBlur(e);\n }\n },\n [setInput, onBlur],\n );\n\n return (\n <TextInput\n onUpdate={handleChange}\n {...rest}\n value={input === undefined ? value : input}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n />\n );\n}\n\nexport default React.memo(TextInputWithDebounce);\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {getDisplayName} from '../utils';\nimport {SPLIT_PANE_ID} from '../constants/index';\n\nexport default function withSplit<P>(Component: React.ComponentType<P>) {\n return class WithSplit extends React.Component<P> {\n static displayName = `WithSplit(${getDisplayName(Component)})`;\n\n render() {\n return ReactDOM.createPortal(\n <Component {...this.props} />,\n document.getElementById(SPLIT_PANE_ID)!,\n );\n }\n };\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport './TableInfo.scss';\n\nconst block = cn('table-info');\n\ntype TableInfoProps = {\n showingItems: number;\n totalItems: number;\n};\n\nexport default function TableInfo({showingItems, totalItems}: TableInfoProps) {\n return (\n <div className={block('info')}>\n <p className={block('showing')}>\n <span className={block('info-text')}>Showing</span>\n <span className={block('info-count')}>{showingItems}</span>\n </p>\n\n <p className={block('total')}>\n <span className={block('info-text')}>Total</span>\n <span className={block('info-count')}>{totalItems}</span>\n </p>\n </div>\n );\n}\n\nTableInfo.propTypes = {\n showingItems: PropTypes.number.isRequired,\n totalItems: PropTypes.number.isRequired,\n};\n","import axios from 'axios';\n\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {\n CHANGE_VERSION_SUMMARY_PARTIAL,\n DISCOVER_VERSIONS,\n} from '../../../../constants/components/versions/versions_v2';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../../../store/reducers';\nimport {\n HostType,\n SummaryItem,\n VersionHostInfo,\n VersionSummaryItem,\n VersionsAction,\n} from '../../../../store/reducers/components/versions/versions_v2';\nimport {SortState} from '../../../../types';\n\nexport interface DiscoverVersionsData {\n details: Array<VersionHostInfo>;\n summary: Record<'total' | 'error' | string, VersionSummary>;\n}\n\ntype VersionSummary = Record<HostType, SummaryItem>;\n\ntype NodesThunkAction<T = void> = ThunkAction<Promise<T>, RootState, unknown, any>;\n\nexport function getVersions(): NodesThunkAction<DiscoverVersionsData> {\n return (dispatch, getState) => {\n dispatch({type: DISCOVER_VERSIONS.REQUEST});\n\n const cluster = getCluster(getState());\n\n return axios\n .get<DiscoverVersionsData>(`/api/yt-proxy/${cluster}/internal-discover_versions`)\n .then(({data}) => {\n const summary = prepareSummary(data.summary);\n const details = prepareDetails(data.details);\n\n dispatch({\n type: DISCOVER_VERSIONS.SUCCESS,\n data: {summary, details},\n });\n return data;\n })\n .catch((error) => {\n dispatch({\n type: DISCOVER_VERSIONS.FAILURE,\n data: {error},\n });\n return Promise.reject(error);\n });\n };\n}\n\nexport function changeHostFilter(hostFilter: string): VersionsAction {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {hostFilter},\n };\n}\n\nexport function changeVersionFilter(versionFilter: string): VersionsAction {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {versionFilter},\n };\n}\n\nexport function changeTypeFilter(typeFilter: string): VersionsAction {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {typeFilter},\n };\n}\n\nexport function changeStateFilter(stateFilter: string): VersionsAction {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {stateFilter},\n };\n}\n\nexport function changeBannedFilter(bannedFilter: 'all' | boolean): VersionsAction {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {bannedFilter: bannedFilter || false},\n };\n}\n\nfunction prepareGroup(group: VersionSummary, version: string) {\n const res = reduce_(\n group,\n (acc, value, type) => {\n const {total, banned, offline} = value;\n\n const k = type as HostType;\n acc[k] = total;\n acc.banned += banned;\n acc.offline += offline;\n acc.online += total - offline;\n\n return acc;\n },\n {banned: 0, offline: 0, online: 0, version} as VersionSummaryItem,\n );\n\n return {\n ...res,\n banned: res.banned || undefined,\n offline: res.offline || undefined,\n online: res.online || undefined,\n };\n}\n\nfunction prepareSummary({total, error, ...versions}: DiscoverVersionsData['summary']) {\n const preparedTotal = prepareGroup(total, 'total');\n const preparedError = error && prepareGroup(error, 'error');\n const preparedVersions = map_(versions, prepareGroup);\n\n return [...preparedVersions, preparedError, preparedTotal];\n}\n\nfunction prepareDetails(details: DiscoverVersionsData['details']) {\n return map_(details, (item) => {\n const calculatedState = item.offline ? 'offline' : 'online';\n item.state = item.state ? item.state : calculatedState;\n if (item.error) {\n item.state = 'error';\n }\n\n item.banned = Boolean(item.banned);\n return item;\n });\n}\n\nexport function changeVersionStateTypeFilters(data: {\n version?: string;\n state?: string;\n type?: string;\n banned?: boolean;\n}) {\n const {version, state, type, banned} = data;\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {\n stateFilter: state || 'all',\n versionFilter: version || 'all',\n typeFilter: type || 'all',\n bannedFilter: banned === undefined ? 'all' : banned,\n },\n };\n}\n\nexport function setVersionsSummarySortState(summarySortState: SortState) {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {summarySortState},\n };\n}\n\nexport function changeCheckedHideOffline(checkedHideOffline: boolean) {\n return {\n type: CHANGE_VERSION_SUMMARY_PARTIAL,\n data: {checkedHideOffline},\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport indexOf_ from 'lodash/indexOf';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport {ClickableText} from '../../../../components/ClickableText/ClickableText';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\n\nimport './VersionCell.scss';\nimport {useDispatch} from 'react-redux';\nimport {changeVersionStateTypeFilters} from '../../../../store/actions/components/versions/versions_v2';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\nimport {uiSettings} from '../../../../config/ui-settings';\n\nconst block = cn('version-cell');\n\nconst {reHashFromNodeVersion} = uiSettings;\n\nfunction shortHash(version: string) {\n const tildaIndex = indexOf_(version, '~');\n if (-1 === tildaIndex) {\n return version;\n }\n\n return version.substr(0, tildaIndex + 1) + version.substr(tildaIndex + 1, 16);\n}\n\ninterface Props {\n version: string;\n onClick: (version: string) => void;\n}\n\nfunction VersionCell(props: Props) {\n const {version, onClick} = props;\n const visibleVersion = shortHash(version);\n\n const handleClick = React.useCallback(() => {\n onClick(version);\n }, [onClick, version]);\n\n const versionContent =\n visibleVersion?.length === version?.length ? (\n version\n ) : (\n <Tooltip content={version}>\n <span className={block('tooltip')}>{visibleVersion + '\\u2026'} </span>\n </Tooltip>\n );\n\n const hashPart = React.useMemo(() => {\n if (!version || !reHashFromNodeVersion) {\n return undefined;\n }\n\n try {\n const res = new RegExp(reHashFromNodeVersion).exec(version);\n return res?.groups?.hash;\n } catch (e) {\n return undefined;\n }\n }, [version]);\n\n return (\n <React.Fragment>\n <ClickableText className={block('text')} color={'primary'} onClick={handleClick}>\n {versionContent}\n </ClickableText>\n <ClipboardButton\n text={version}\n shiftText={hashPart}\n view=\"flat-secondary\"\n size=\"s\"\n hoverContent={\n <div>\n Copy version\n {Boolean(hashPart) && (\n <div>\n <Text color=\"secondary\">Hold SHIFT-key to copy hash</Text>\n </div>\n )}\n </div>\n }\n />\n </React.Fragment>\n );\n}\n\nexport function VersionCellWithAction(props: Omit<Props, 'onClick'>) {\n const {version} = props;\n const dispatch = useDispatch();\n\n const onClick = React.useCallback(() => {\n dispatch(changeVersionStateTypeFilters({version}));\n }, [version]);\n\n return <VersionCell version={version} onClick={onClick} />;\n}\n","import {COMPONENTS_VERSIONS_DETAILED_TABLE_ID} from '../../../../constants/components/versions/versions_v2';\nimport {\n changeHostFilter,\n changeTypeFilter,\n changeVersionFilter,\n} from '../../../../store/actions/components/versions/versions_v2';\nimport {getWindowStore} from '../../../../store/window-store';\nimport {showErrorPopup} from '../../../../utils/utils';\n\nexport const tableProps = {\n css: 'components-versions',\n theme: 'light',\n striped: false,\n cssHover: true,\n templates: {\n key: 'components/versions',\n data: {\n showError: showErrorPopup,\n handleItemClick(item, column) {\n switch (column) {\n case 'address':\n getWindowStore().dispatch(changeHostFilter(item));\n break;\n case 'version':\n getWindowStore().dispatch(changeVersionFilter([item]));\n break;\n case 'type':\n getWindowStore().dispatch(changeTypeFilter([item]));\n break;\n }\n },\n },\n },\n columns: {\n items: {\n address: {\n get(item) {\n return item.address.match(/[^/]+(?=:)/g)[0];\n },\n align: 'left',\n sort: true,\n caption: 'Host',\n },\n version: {\n get(item) {\n return item.version;\n },\n align: 'left',\n sort: true,\n caption: 'Version',\n },\n state: {\n get(item) {\n return item.state;\n },\n align: 'left',\n sort: true,\n caption: 'State',\n },\n banned: {\n get(item) {\n return item.banned;\n },\n align: 'center',\n sort: true,\n caption: 'B',\n tooltipProps: {placement: 'bottom', content: 'Banned'},\n },\n type: {\n get(item) {\n return item.type;\n },\n align: 'left',\n sort: true,\n caption: 'Type',\n },\n error: {\n get(item) {\n return item.error;\n },\n align: 'center',\n sort: true,\n caption: 'Error',\n },\n start_time: {\n get(item) {\n return item.start_time;\n },\n align: 'right',\n sort: true,\n caption: 'Start time',\n },\n },\n sets: {\n detailed: {\n items: ['address', 'version', 'state', 'banned', 'type', 'error', 'start_time'],\n },\n },\n },\n};\n\nexport const detailsTableProps = {\n ...tableProps,\n tableId: COMPONENTS_VERSIONS_DETAILED_TABLE_ID,\n columns: {\n ...tableProps.columns,\n mode: 'detailed',\n },\n};\n","import filter_ from 'lodash/filter';\nimport isEmpty_ from 'lodash/isEmpty';\nimport reduce_ from 'lodash/reduce';\nimport sumBy_ from 'lodash/sumBy';\n\nimport hammer from '../../../../common/hammer';\nimport {createSelector} from 'reselect';\nimport {detailsTableProps} from '../../../../pages/components/tabs/Versions/tables_v2';\n\nimport {COMPONENTS_VERSIONS_DETAILED_TABLE_ID} from '../../../../constants/components/versions/versions_v2';\nimport {RootState} from '../../../../store/reducers';\nimport {VersionHostInfo} from '../../../../store/reducers/components/versions/versions_v2';\n\nconst aggregateItems = (proxies: Array<VersionHostInfo>, key: keyof VersionHostInfo) => {\n const items = reduce_(\n proxies,\n (acc, item) => {\n const value = item[key];\n if (!acc.has(value)) {\n acc.set(value, 1);\n } else {\n const count = acc.get(value);\n acc.set(value, count + 1);\n }\n return acc;\n },\n new Map(),\n );\n\n return [...items.entries()].map(([item, count]) => {\n return {\n text: hammer.format['ReadableField'](String(item)),\n value: item,\n count,\n };\n });\n};\n\nfunction getSelectItems(\n allItems: ReturnType<typeof aggregateItems>,\n visibleItems: ReturnType<typeof aggregateItems>,\n hostFilter: string,\n otherFilters: Partial<ReturnType<typeof getFilters>>,\n) {\n const isAllSelected = isEmpty_(otherFilters);\n\n let items = allItems;\n\n if (hostFilter !== '' || !isAllSelected) {\n items = visibleItems;\n }\n\n const allItemsSection = {\n text: 'All',\n value: 'all',\n count: sumBy_(items, (item) => item.count),\n };\n\n return [allItemsSection, ...items];\n}\n\nconst getDetails = (state: RootState) => state.components.versionsV2.details;\n\nconst getHostFilter = (state: RootState) => state.components.versionsV2.hostFilter;\nconst getVersionFilter = (state: RootState) => state.components.versionsV2.versionFilter;\nconst getTypeFilter = (state: RootState) => state.components.versionsV2.typeFilter;\nconst getStateFilter = (state: RootState) => state.components.versionsV2.stateFilter;\nconst getBannedFilter = (state: RootState) => state.components.versionsV2.bannedFilter;\n\nconst getDetailsSortState = (state: RootState) =>\n state.tables[COMPONENTS_VERSIONS_DETAILED_TABLE_ID];\n\nconst getFilteredByHost = createSelector([getDetails, getHostFilter], (details, hostFilter) => {\n if (!hostFilter) {\n return details;\n }\n return filter_(details, ({address}) => address?.toLowerCase().includes(hostFilter));\n});\n\nconst getFilters = createSelector(\n [getVersionFilter, getTypeFilter, getStateFilter, getBannedFilter],\n (version, type, state, banned) => {\n return reduce_(\n {\n version,\n type,\n state,\n banned,\n },\n (acc, value, k) => {\n if (value !== 'all') {\n const key = k as keyof typeof acc;\n acc[key] = value as any;\n }\n return acc;\n },\n {} as Partial<{\n version: typeof version;\n type: typeof version;\n state: typeof state;\n banned: typeof banned;\n }>,\n );\n },\n);\n\nconst getFiltersSkipVersion = createSelector([getFilters], (filters) => {\n const {version: _x, ...rest} = filters;\n return rest;\n});\n\nconst getFiltersSkipType = createSelector([getFilters], (filters) => {\n const {type: _x, ...rest} = filters;\n return rest;\n});\n\nconst getFiltersSkipState = createSelector([getFilters], (filters) => {\n const {state: _x, ...rest} = filters;\n return rest;\n});\n\nconst getFiltersSkipBanned = createSelector([getFilters], (filters) => {\n const {banned: _x, ...rest} = filters;\n return rest;\n});\n\nconst getFilteredDetails = createSelector([getFilteredByHost, getFilters], (data, filters) => {\n return filter_(data, filters) as Array<VersionHostInfo>;\n});\n\nexport const getVisibleDetails = createSelector(\n [getFilteredDetails, getDetailsSortState],\n (details, sortState): typeof details =>\n hammer.utils.sort(details, sortState, detailsTableProps.columns.items),\n);\n\nconst getAllVersions = createSelector([getDetails], (versions) =>\n aggregateItems(versions, 'version'),\n);\nconst getAllTypes = createSelector([getDetails], (versions) => aggregateItems(versions, 'type'));\nconst getAllStates = createSelector([getDetails], (versions) => aggregateItems(versions, 'state'));\n\nconst getAllBanned = createSelector([getDetails], (version) => aggregateItems(version, 'banned'));\n\nconst getVisibleVersions = createSelector(\n [getFilteredByHost, getFiltersSkipVersion],\n (data, filters) => {\n const items = filter_(data, filters) as Array<VersionHostInfo>;\n return aggregateItems(items, 'version');\n },\n);\nconst getVisibleTypes = createSelector([getFilteredByHost, getFiltersSkipType], (data, filters) => {\n const items = filter_(data, filters) as Array<VersionHostInfo>;\n return aggregateItems(items, 'type');\n});\nconst getVisibleStates = createSelector(\n [getFilteredByHost, getFiltersSkipState],\n (data, filters) => {\n const items = filter_(data, filters) as Array<VersionHostInfo>;\n return aggregateItems(items, 'state');\n },\n);\n\nconst getVisibleBanned = createSelector(\n [getFilteredByHost, getFiltersSkipBanned],\n (data, filters) => {\n const items = filter_(data, filters) as Array<VersionHostInfo>;\n return aggregateItems(items, 'banned');\n },\n);\n\nexport const getVersionSelectItems = createSelector(\n [getAllVersions, getVisibleVersions, getHostFilter, getFiltersSkipVersion],\n getSelectItems,\n);\nexport const getTypeSelectItems = createSelector(\n [getAllTypes, getVisibleTypes, getHostFilter, getFiltersSkipType],\n getSelectItems,\n);\nexport const getStatesSelectItems = createSelector(\n [getAllStates, getVisibleStates, getHostFilter, getFiltersSkipState],\n getSelectItems,\n);\n\nexport const getBannedSelectItems = createSelector(\n [getAllBanned, getVisibleBanned, getHostFilter, getFiltersSkipBanned],\n getSelectItems,\n);\n","import {createSelector} from 'reselect';\nimport {RootState} from '../../../../store/reducers';\nimport {FIX_MY_TYPE, SortState} from '../../../../types';\nimport {sortArrayBySortState} from '../../../../utils/sort-helpers';\nimport {VersionSummaryItem} from '../../../../store/reducers/components/versions/versions_v2';\nimport {isSupportedClusterNodeForVersions} from '../../../../store/selectors/thor/support';\n\nexport const getSummarySortState = (\n state: RootState,\n): undefined | SortState<keyof VersionSummaryItem> =>\n (state.components.versionsV2 as FIX_MY_TYPE).summarySortState;\n\nconst getSummary = (state: RootState): Array<VersionSummaryItem> =>\n state.components.versionsV2.summary;\n\nexport const getHideOfflineValue = (state: RootState): boolean =>\n state.components.versionsV2.checkedHideOffline;\n\nexport const getVersionsSummaryData = createSelector(\n [getSummary, getSummarySortState, getHideOfflineValue],\n (summary = [], sortState, checkedHideOffline) => {\n const error = summary[summary.length - 2];\n const total = getTotalElementOfSummary(summary);\n let items = summary.slice(0, summary.length - 2);\n\n if (checkedHideOffline) {\n items = items.filter((item) => item.online !== undefined);\n }\n\n items = sortArrayBySortState(items, sortState);\n\n if (error) {\n items.splice(0, 0, error);\n }\n if (total) {\n items.push(total);\n }\n return items;\n },\n);\n\nexport const getVersionsSummaryVisibleColumns = createSelector(\n [getSummary, isSupportedClusterNodeForVersions],\n (summary = [], useClusterNode) => {\n const visibleTypes = new Set<string>();\n const total = getTotalElementOfSummary(summary);\n Object.keys(total ?? {}).forEach((k) => {\n const key = k as keyof typeof total;\n if (total?.[key]) {\n visibleTypes.add(key);\n }\n });\n const res: Array<{type: keyof VersionSummaryItem; name: string; shortName: string}> = [];\n function tryToAdd(type: keyof VersionSummaryItem, name: string, shortName = '') {\n if (visibleTypes.has(type)) {\n res.push({type, name, shortName});\n }\n }\n\n tryToAdd('primary_master', 'Primary Masters', 'Pri Masters');\n tryToAdd('secondary_master', 'Secondary masters', 'Sec Masters');\n tryToAdd('scheduler', 'Schedulers');\n tryToAdd('controller_agent', 'Controller Agents', 'CA');\n tryToAdd(useClusterNode ? 'cluster_node' : 'node', 'Nodes');\n tryToAdd('http_proxy', 'HTTP Proxies');\n tryToAdd('rpc_proxy', 'RPC Proxies');\n tryToAdd('job_proxy', 'Job Proxies');\n tryToAdd('online', 'Online');\n tryToAdd('offline', 'Offline');\n tryToAdd('banned', 'Banned');\n\n return res;\n },\n);\n\nfunction getTotalElementOfSummary(summary: ReturnType<typeof getSummary>) {\n return summary[summary.length - 1];\n}\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {Checkbox} from '@gravity-ui/uikit';\n\nimport {RootState} from '../../../../store/reducers';\nimport DataTableYT from '../../../../components/DataTableYT/DataTableYT';\nimport * as DT100 from '@gravity-ui/react-data-table';\nimport {\n getHideOfflineValue,\n getSummarySortState,\n getVersionsSummaryData,\n getVersionsSummaryVisibleColumns,\n} from '../../../../store/selectors/components/versions/versions_v2-ts';\n\nimport hammer from '../../../../common/hammer';\n\nimport {ClickableText} from '../../../../components/ClickableText/ClickableText';\nimport Icon from '../../../../components/Icon/Icon';\nimport Link from '../../../../components/Link/Link';\nimport ColumnHeader from '../../../../components/ColumnHeader/ColumnHeader';\nimport {\n changeCheckedHideOffline,\n changeVersionStateTypeFilters,\n setVersionsSummarySortState,\n} from '../../../../store/actions/components/versions/versions_v2';\nimport {VersionSummaryItem} from '../../../../store/reducers/components/versions/versions_v2';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {formatByParams} from '../../../../utils/format';\nimport UIFactory from '../../../../UIFactory';\n\nimport {VersionCellWithAction} from './VersionCell';\nimport './VersionSummary.scss';\n\nconst block = cn('versions-summary');\n\ntype Props = ConnectedProps<typeof connector>;\n\ntype RenderData = {row: VersionSummaryItem; index: number};\n\nconst SETTINGS: DT100.Settings = {\n displayIndices: false,\n};\n\nfunction isSpecialRow(version: string) {\n return version === 'error' || version === 'total';\n}\n\nclass VersionsSummary extends React.Component<Props> {\n getColumns(): Array<DT100.Column<VersionSummaryItem>> {\n return [];\n }\n renderVersion = ({row: {version}}: RenderData) => {\n const {changeVersionStateTypeFilters} = this.props;\n let content;\n if (version === 'error') {\n content = (\n <React.Fragment>\n <ClickableText\n color=\"primary\"\n onClick={() => {\n changeVersionStateTypeFilters({state: 'error'});\n }}\n >\n <Icon awesome={'exclamation-triangle'} />{' '}\n {hammer.format['Readable'](version)}\n </ClickableText>\n </React.Fragment>\n );\n } else if (version === 'total') {\n content = hammer.format['Readable'](version);\n } else {\n content = (\n <div className={block('version')}>\n <VersionCellWithAction version={version} />\n </div>\n );\n }\n\n return <span className={block('value')}>{content}</span>;\n };\n renderNumber = (key: keyof VersionSummaryItem, rowData: RenderData) => {\n const {row} = rowData;\n const value = row[key];\n const content = !value ? hammer.format.NO_VALUE : hammer.format['Number'](value);\n const onClick = !value\n ? undefined\n : () => {\n this.onClick(key, rowData);\n };\n return (\n <span\n className={block('value', {clickable: Boolean(onClick)})}\n onClick={onClick}\n title={onClick ? 'Click to set corresponding filter values' : undefined}\n >\n {content}\n </span>\n );\n };\n\n makeColumnInfo({\n type,\n name,\n shortName,\n }: {\n type: keyof VersionSummaryItem;\n name: string;\n shortName?: string;\n }): DT100.Column<VersionSummaryItem> {\n return {\n name: shortName || name,\n title: name,\n sortable: false,\n render: this.renderNumber.bind(this, type),\n align: 'right',\n header: this.renderHeader(type, name, shortName),\n };\n }\n\n renderHeader(key: keyof VersionSummaryItem, name: string, shortName?: string) {\n const {sortState, setVersionsSummarySortState} = this.props;\n const {column, order} = sortState || {};\n return (\n <ColumnHeader<typeof key>\n column={key}\n title={name}\n shortTitle={shortName || name}\n onSort={(column, order) => {\n setVersionsSummarySortState({column, order});\n }}\n order={key === column ? order : ''}\n withUndefined\n />\n );\n }\n\n handleHideOffline = (value: boolean) => {\n this.props.changeCheckedHideOffline(value);\n };\n\n render() {\n const {visibleColumns} = this.props;\n const columns: Array<DT100.Column<VersionSummaryItem>> = [\n {\n name: 'version',\n render: this.renderVersion,\n sortable: false,\n sortAccessor: (row) => row.version,\n header: this.renderHeader('version', 'Versions'),\n },\n\n ...visibleColumns.map((item) => this.makeColumnInfo(item)),\n ];\n\n const {items, loading, loaded, cluster, checkedHideOffline} = this.props;\n const monitoringLink = UIFactory.getVersionMonitoringLink(cluster);\n\n return (\n <div className={block()}>\n <div className={block('header-actions')}>\n {monitoringLink && (\n <Link\n url={formatByParams(monitoringLink.urlTemplate, {ytCluster: cluster})}\n target=\"_blank\"\n className={block('monitoring-link')}\n >\n {monitoringLink.title || 'Monitoring'} <Icon awesome=\"external-link\" />\n </Link>\n )}\n <Checkbox\n title={'Hide offline'}\n content={'Hide offline'}\n defaultChecked={checkedHideOffline}\n onUpdate={this.handleHideOffline}\n />\n </div>\n <DataTableYT\n loaded={loaded}\n loading={loading}\n data={items}\n columns={columns}\n theme={'versions'}\n settings={SETTINGS}\n rowClassName={this.rowClassName}\n />\n </div>\n );\n }\n\n rowClassName(row: VersionSummaryItem) {\n return block('row', {special: isSpecialRow(row.version)});\n }\n\n onClick = (key: keyof VersionSummaryItem, data: RenderData) => {\n const {changeVersionStateTypeFilters} = this.props;\n const {\n row: {version: rowVersion},\n } = data;\n const isSpecial = isSpecialRow(rowVersion);\n const version = !isSpecial ? rowVersion : undefined;\n\n const state = rowVersion === 'error' ? 'error' : undefined;\n\n if (key === 'online' || key === 'offline') {\n changeVersionStateTypeFilters({version, state: state || key});\n } else if (key === 'banned') {\n changeVersionStateTypeFilters({version, banned: true});\n } else {\n changeVersionStateTypeFilters({version, type: key, state});\n }\n };\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {loading, loaded} = state.components.versionsV2;\n const cluster = getCluster(state);\n\n const items = getVersionsSummaryData(state);\n const sortState = getSummarySortState(state);\n\n const visibleColumns = getVersionsSummaryVisibleColumns(state);\n\n return {\n loading: loading as boolean,\n loaded: loaded as boolean,\n cluster,\n items,\n sortState,\n checkedHideOffline: getHideOfflineValue(state),\n visibleColumns,\n };\n};\n\nconst mapDispatchToProps = {\n changeVersionStateTypeFilters,\n setVersionsSummarySortState,\n changeCheckedHideOffline,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(VersionsSummary);\n","import {Sticky, StickyContainer} from 'react-sticky';\nimport React from 'react';\nimport {ConnectedProps, connect, useDispatch} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport CollapsibleSection from '../../../../components/CollapsibleSection/CollapsibleSection';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport TableInfo from '../../../../pages/components/TableInfo/TableInfo';\nimport Filter from '../../../../components/Filter/Filter';\nimport Select from '../../../../components/Select/Select';\n\nimport {ClickableText} from '../../../../components/ClickableText/ClickableText';\nimport Icon from '../../../../components/Icon/Icon';\n\nimport format from '../../../../common/hammer/format';\n\nimport {VersionCellWithAction} from '../../../../pages/components/tabs/Versions/VersionCell';\n\nimport {\n getBannedSelectItems,\n getStatesSelectItems,\n getTypeSelectItems,\n getVersionSelectItems,\n getVisibleDetails,\n} from '../../../../store/selectors/components/versions/versions_v2';\nimport {\n changeBannedFilter,\n changeHostFilter,\n changeStateFilter,\n changeTypeFilter,\n changeVersionFilter,\n getVersions,\n} from '../../../../store/actions/components/versions/versions_v2';\nimport {DEBOUNCE_TIME} from '../../../../constants/components/versions/versions_v2';\nimport {HEADER_HEIGHT} from '../../../../constants/index';\nimport {useUpdater} from '../../../../hooks/use-updater';\nimport VersionsSummary from './VersionSummary';\nimport {RootState} from '../../../../store/reducers';\n\nimport templates, {ColumnAsTime, printColumnAsError} from '../../../../components/templates/utils';\nimport {VersionHostInfo} from '../../../../store/reducers/components/versions/versions_v2';\nimport {ClickableId, NodeColumnBanned, NodeColumnState} from '../NodeColumns';\nimport {Host} from '../../../../containers/Host/Host';\n\nimport {detailsTableProps} from './tables_v2';\n\nimport './Versions.scss';\nimport {UI_COLLAPSIBLE_SIZE} from '../../../../constants/global';\n\nconst b = cn('components-versions');\n\nfunction VersionsV2Updater() {\n const dispatch = useDispatch();\n\n const updateFn = React.useCallback(() => {\n dispatch(getVersions());\n }, [dispatch]);\n\n useUpdater(updateFn);\n\n return null;\n}\n\ntype ReduxProps = ConnectedProps<typeof connector>;\n\nclass VersionsV2 extends React.Component<ReduxProps> {\n renderFilters() {\n const {\n hostFilter,\n changeHostFilter,\n versionFilter,\n versionSelectItems,\n changeVersionFilter,\n typeFilter,\n typeSelectItems,\n changeTypeFilter,\n stateFilter,\n stateSelectItems,\n changeStateFilter,\n bannedFilter,\n } = this.props;\n\n return (\n <div className={b('filters')}>\n <div className={b('filter', {address: true})}>\n <Filter\n hasClear\n size=\"m\"\n type=\"text\"\n key={hostFilter}\n value={hostFilter}\n debounce={DEBOUNCE_TIME}\n onChange={changeHostFilter}\n placeholder=\"Filter host...\"\n />\n </div>\n\n <div className={b('filter', {version: true})}>\n <Select\n value={[versionFilter]}\n items={versionSelectItems}\n onUpdate={(vals) => changeVersionFilter(vals[0])}\n label=\"Version:\"\n width=\"max\"\n hideFilter\n />\n </div>\n\n <div className={b('filter', {type: true})}>\n <Select\n value={[typeFilter]}\n items={typeSelectItems}\n onUpdate={(vals) => changeTypeFilter(vals[0])}\n label=\"Type:\"\n width=\"max\"\n hideFilter\n />\n </div>\n\n <div className={b('filter', {state: true})}>\n <Select\n value={[stateFilter]}\n items={stateSelectItems}\n onUpdate={(vals) => changeStateFilter(vals[0])}\n label=\"State:\"\n width=\"max\"\n hideFilter\n />\n </div>\n\n <div className={b('filter', {banned: true})}>\n <Select\n value={[String(bannedFilter)]}\n items={this.getBannedItems()}\n onUpdate={(vals) => this.onBannedChange(vals[0])}\n label=\"Banned:\"\n width=\"max\"\n hideFilter\n />\n </div>\n </div>\n );\n }\n\n getBannedItems() {\n const {bannedSelectItems} = this.props;\n return bannedSelectItems.map(({value, ...rest}) => {\n return {\n value: String(value),\n ...rest,\n };\n });\n }\n\n onBannedChange = (value: string) => {\n const {changeBannedFilter} = this.props;\n const v =\n {\n false: false,\n true: true,\n all: 'all' as const,\n }[value] ?? 'all';\n changeBannedFilter(v);\n };\n\n renderOverview() {\n const {showingItems, totalItems} = this.props;\n\n return (\n <Sticky topOffset={-HEADER_HEIGHT}>\n {({isSticky}) => (\n <div className={b('overview', {sticky: isSticky})}>\n {this.renderFilters()}\n\n <TableInfo showingItems={showingItems} totalItems={totalItems} />\n </div>\n )}\n </Sticky>\n );\n }\n\n getDetailsTemplates() {\n const {changeVersionFilter, changeHostFilter, changeTypeFilter} = this.props;\n\n const res: Record<string, (item: VersionHostInfo) => React.ReactNode> = {\n start_time: (item) => <ColumnAsTime value={item.start_time} />,\n type: (item) => (\n <ClickableId\n text={item.type}\n onClick={() => changeTypeFilter(item.type)}\n format={format.ReadableField}\n />\n ),\n error: (item) => printColumnAsError(item.error),\n address: (item) => {\n return (\n <Host\n address={item.address}\n onClick={() => changeHostFilter(item.address)}\n useText\n />\n );\n },\n state: (item) => <NodeColumnState state={item.state} />,\n banned: (item) => <NodeColumnBanned banned={item.banned} />,\n decommissioned: templates.get('components').decommissioned,\n full: templates.get('components').full,\n alerts: templates.get('components').alerts,\n version(item) {\n const version = item.version;\n const versionIsError = version === 'error';\n const versionIsTotal = version === 'total';\n const handleClick = () => changeVersionFilter(version);\n\n if (versionIsError || versionIsTotal) {\n return (\n <ClickableText\n color=\"primary\"\n onClick={handleClick}\n className={cn('elements-table')(\n `cell_type`,\n {version: version === 'error' ? 'error' : undefined},\n 'elements-monospace elements-ellipsis',\n )}\n >\n {versionIsError && <Icon awesome=\"exclamation-triangle\" />}\n {format.FirstUppercase(version)}\n </ClickableText>\n );\n } else {\n return <VersionCellWithAction version={version} />;\n }\n },\n };\n return res;\n }\n\n render() {\n const {details, loading, loaded} = this.props;\n const initialLoading = loading && !loaded;\n\n const {error, ...rest} = this.props;\n\n return (\n <ErrorBoundary>\n <VersionsV2Updater />\n <LoadDataHandler {...rest} error={Boolean(error)} errorData={error}>\n <div className={b()}>\n <CollapsibleSection\n name=\"Summary\"\n className={b('summary')}\n collapsed={false}\n size={UI_COLLAPSIBLE_SIZE}\n >\n <VersionsSummary />\n </CollapsibleSection>\n\n <StickyContainer>\n <CollapsibleSection\n name=\"Details\"\n className={b('details')}\n collapsed={false}\n size={UI_COLLAPSIBLE_SIZE}\n >\n {this.renderOverview()}\n\n <ElementsTable\n {...detailsTableProps}\n isLoading={initialLoading}\n items={details}\n templates={this.getDetailsTemplates()}\n />\n </CollapsibleSection>\n </StickyContainer>\n </div>\n </LoadDataHandler>\n </ErrorBoundary>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {\n loading,\n loaded,\n error,\n hostFilter,\n versionFilter,\n typeFilter,\n stateFilter,\n bannedFilter,\n details: allDetails,\n } = state.components.versionsV2;\n\n const details = getVisibleDetails(state);\n const versionSelectItems = getVersionSelectItems(state);\n const typeSelectItems = getTypeSelectItems(state);\n const stateSelectItems = getStatesSelectItems(state);\n const bannedSelectItems = getBannedSelectItems(state);\n\n const showingItems = details.length;\n const totalItems = allDetails.length;\n\n return {\n loading,\n loaded,\n error,\n details,\n showingItems,\n totalItems,\n hostFilter,\n versionFilter,\n typeFilter,\n stateFilter,\n bannedFilter,\n versionSelectItems,\n typeSelectItems,\n stateSelectItems,\n bannedSelectItems,\n };\n};\n\nconst mapDispatchToProps = {\n changeHostFilter,\n changeVersionFilter,\n changeTypeFilter,\n changeStateFilter,\n changeBannedFilter,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(VersionsV2);\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport ClickableAttributesButton from '../../../../../components/AttributesButton/ClickableAttributesButton';\nimport Button from '../../../../../components/Button/Button';\nimport Icon from '../../../../../components/Icon/Icon';\n\nimport {PROXY_TYPE} from '../../../../../constants/components/proxies/proxies';\nimport {showNodeMaintenance} from '../../../../../store/actions/components/node-maintenance-modal';\n\ntype ReduxProps = ConnectedProps<typeof connector>;\n\ntype Props = {\n type: 'http_proxy' | 'rpc_proxy';\n proxy: {host: string; banned: boolean};\n};\n\nclass ProxyActions extends React.Component<ReduxProps & Props> {\n get tooltipProps() {\n const {proxy} = this.props;\n\n return {\n placement: 'bottom',\n content: proxy.banned ? 'Unban proxy' : 'Ban proxy',\n };\n }\n\n get basePath() {\n const {type} = this.props;\n\n return type === PROXY_TYPE.HTTP ? '//sys/http_proxies' : '//sys/rpc_proxies';\n }\n\n handleEditClick = () => {\n const {proxy, type} = this.props;\n this.props.showNodeMaintenance({\n address: proxy.host,\n component: type === PROXY_TYPE.HTTP ? 'http_proxy' : 'rpc_proxy',\n });\n };\n\n render() {\n const {proxy} = this.props;\n\n return (\n <React.Fragment>\n <ClickableAttributesButton\n title={proxy.host}\n path={`${this.basePath}/${proxy.host}`}\n withTooltip\n />\n <Button onClick={this.handleEditClick} view=\"flat-secondary\" size=\"m\" withTooltip>\n <Icon face=\"regular\" awesome=\"pencil\" />\n </Button>\n </React.Fragment>\n );\n }\n}\n\nconst mapDispatchToProps = {\n showNodeMaintenance,\n};\n\nconst connector = connect(null, mapDispatchToProps);\n\nexport default connector(ProxyActions);\n","import React from 'react';\n\nimport format from '../../common/hammer/format';\nimport {MaintenanceRequestInfo} from '../../store/actions/components/node-maintenance-modal';\nimport {SubjectCard} from '../../components/SubjectLink/SubjectLink';\nimport {Bold, WarningLight} from '../../components/Text/Text';\nimport Label from '../../components/Label/Label';\n\nexport type MaintenanceRequestsProps = {\n requests?: Record<string, MaintenanceRequestInfo>;\n};\n\nfunction MaintenanceRequestsImpl({requests = {}}: MaintenanceRequestsProps) {\n return Object.keys(requests).map((key) => {\n const {type, user, comment} = requests[key];\n return (\n <div key={key}>\n <Bold>\n <Label theme=\"danger\" type=\"text\" text={format.ReadableField(type)} />\n </Bold>\n {' by '}\n <Bold>\n <SubjectCard type=\"user\" name={user} />\n {': '}\n <WarningLight>{comment}</WarningLight>\n </Bold>\n </div>\n );\n });\n}\n\nexport const MaintenanceRequests = React.memo(MaintenanceRequestsImpl);\n","import React, {Component} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport {compose} from 'redux';\nimport cn from 'bem-cn-lite';\nimport isEmpty_ from 'lodash/isEmpty';\n\nimport hammer from '../../../../../common/hammer';\n\nimport {MaintenanceRequests} from '../../../../../components/MaintenanceRequests/MaintenanceRequests';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport Button from '../../../../../components/Button/Button';\nimport Label from '../../../../../components/Label/Label';\nimport Icon from '../../../../../components/Icon/Icon';\n\nimport {getCluster, getCurrentClusterConfig} from '../../../../../store/selectors/global';\nimport withSplit from '../../../../../hocs/withSplit';\n\nimport './ProxyCard.scss';\nimport UIFactory from '../../../../../UIFactory';\nimport {NodeColumnRole, NodeColumnState} from '../../NodeColumns';\nimport type {RootState} from '../../../../../store/reducers';\nimport {MaintenanceRequestInfo} from '../../../../../store/actions/components/node-maintenance-modal';\n\ntype ProxyProps = {\n banMessage: string;\n effectiveState: string;\n role: 'data' | 'default' | 'control';\n state: string;\n host: string;\n name: string;\n physicalHost: string;\n banned: boolean;\n version: string;\n maintenanceRequests: Record<string, MaintenanceRequestInfo>;\n\n updatedAt?: string;\n loadAverage?: number;\n networkLoad?: number;\n};\n\ntype OwnProps = {\n proxy: ProxyProps;\n handleClose: () => void;\n isYpCluster: boolean;\n};\n\ntype StateProps = ReturnType<typeof mapStateToProps>;\n\ntype ProxyCardProps = OwnProps & StateProps;\n\nconst block = cn('proxy-card');\n\nexport class ProxyCard extends Component<ProxyCardProps> {\n static proxyProps = PropTypes.shape({\n banMessage: PropTypes.string.isRequired,\n effectiveState: PropTypes.string.isRequired,\n role: PropTypes.string.isRequired,\n state: PropTypes.string.isRequired,\n host: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n physicalHost: PropTypes.string,\n banned: PropTypes.bool.isRequired,\n\n updatedAt: PropTypes.string,\n loadAverage: PropTypes.number,\n networkLoad: PropTypes.number,\n });\n\n static propTypes = {\n // from parent\n proxy: ProxyCard.proxyProps.isRequired,\n handleClose: PropTypes.func.isRequired,\n\n isYpCluster: PropTypes.bool.isRequired,\n };\n\n componentWillUnmount() {\n this.props.handleClose();\n }\n\n renderTop() {\n const {clusterConfig} = this.props;\n const {host, physicalHost} = this.props.proxy;\n return UIFactory.renderComponentsNodeCardTop({host, physicalHost, clusterConfig});\n }\n\n renderContent() {\n const {\n state,\n banned,\n banMessage,\n role,\n loadAverage,\n networkLoad,\n version,\n updatedAt,\n maintenanceRequests,\n } = this.props.proxy;\n\n return (\n <MetaTable\n items={[\n {\n key: 'state',\n value: <NodeColumnState state={state} />,\n },\n {\n key: 'role',\n value: <NodeColumnRole role={role} />,\n },\n {\n key: 'Banned',\n value: (\n <Label\n text={banMessage || 'True'}\n theme={banMessage ? 'warning' : 'danger'}\n type=\"text\"\n />\n ),\n visible: Boolean(banned),\n },\n {\n key: 'Maintenance',\n value: <MaintenanceRequests requests={maintenanceRequests} />,\n visible: !isEmpty_(maintenanceRequests),\n },\n {\n key: 'version',\n value: version,\n },\n {\n key: 'load average',\n value: loadAverage,\n visible: Boolean(loadAverage),\n },\n {\n key: 'network load',\n value: networkLoad,\n visible: Boolean(networkLoad),\n },\n {\n key: 'updated at',\n value: hammer.format['DateTime'](updatedAt),\n visible: Boolean(updatedAt),\n },\n ]}\n />\n );\n }\n\n render() {\n const {proxy, handleClose} = this.props;\n\n return (\n proxy && (\n <div className={block()}>\n <div className={block('header')}>\n <h3 className={block('proxy')}>{proxy.host}</h3>\n\n <Button view=\"flat-secondary\" size=\"m\" onClick={handleClose}>\n <Icon awesome=\"times\" face={'light'} />\n </Button>\n </div>\n\n {this.renderTop()}\n {this.renderContent()}\n </div>\n )\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n return {\n cluster: getCluster(state),\n clusterConfig: getCurrentClusterConfig(state),\n };\n};\n\nconst connector = connect(mapStateToProps);\n\nexport default compose(connector, withSplit)(ProxyCard);\n","export const proxiesTableColumnItems = {\n host: {\n get(proxy) {\n return proxy.host;\n },\n sort: true,\n align: 'left',\n },\n state: {\n get(proxy) {\n return proxy.state;\n },\n sort: true,\n align: 'center',\n },\n role: {\n get(proxy) {\n return proxy.role;\n },\n sort: true,\n align: 'left',\n },\n version: {\n get(proxy) {\n return proxy.version;\n },\n sort: true,\n align: 'left',\n },\n banned: {\n get(proxy) {\n return Boolean(proxy.banned);\n },\n sort: true,\n caption: 'B',\n align: 'center',\n tooltipProps: {placement: 'bottom', content: 'Banned'},\n },\n load_average: {\n get(proxy) {\n return proxy.loadAverage;\n },\n sort: true,\n align: 'right',\n },\n updated_at: {\n get(proxy) {\n return proxy.updatedAt;\n },\n sort: true,\n align: 'right',\n },\n network_load: {\n get(proxy) {\n return proxy.networkLoad;\n },\n sort: true,\n align: 'right',\n },\n actions: {\n get(proxy) {\n return proxy.host;\n },\n sort: false,\n caption: '',\n align: 'right',\n },\n};\n","import compact_ from 'lodash/compact';\nimport filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\nimport sumBy_ from 'lodash/sumBy';\n\nimport hammer from '../../../../common/hammer';\nimport {concatByAnd} from '../../../../common/hammer/predicate';\nimport {createSelector} from 'reselect';\nimport {proxiesTableColumnItems} from '../../../../utils/components/proxies/table';\nimport {COMPONENTS_PROXIES_TABLE_ID} from '../../../../constants/components/proxies/proxies';\n\nconst aggregateItems = (proxies, key) => {\n const items = hammer.aggregation.countValues(proxies, key);\n\n return map_(items, (count, item) => ({\n text: hammer.format['FirstUppercase'](item),\n value: item,\n count,\n }));\n};\n\nconst getSelectItems = (allItems, visibleItems, hostFilter, selectFilter) => {\n let items = allItems;\n\n if (hostFilter !== '' || selectFilter !== 'all') {\n items = visibleItems;\n }\n\n const allItemsSection = {\n text: 'All',\n value: 'all',\n count: sumBy_(items, (item) => item.count),\n };\n\n return [allItemsSection, ...items];\n};\n\nconst getProxies = (state) => state.components.proxies.proxies.proxies;\nconst getHostFilter = (state) => state.components.proxies.proxies.hostFilter;\nconst getStateFilter = (state) => state.components.proxies.proxies.stateFilter;\nconst getRoleFilter = (state) => state.components.proxies.proxies.roleFilter;\nconst getBannedFilter = (state) => state.components.proxies.proxies.bannedFilter;\nconst getSortState = (state) => state.tables[COMPONENTS_PROXIES_TABLE_ID];\n\nconst getFiltersObject = createSelector(\n [getHostFilter, getStateFilter, getRoleFilter, getBannedFilter],\n (hostFilter, stateFilter, roleFilter, bannedFilter) => {\n return {hostFilter, stateFilter, roleFilter, bannedFilter};\n },\n);\n\nconst getFilteredProxies = createSelector(\n [getProxies, getFiltersObject],\n (proxies, filtersObject) => {\n return filterProxies(proxies, filtersObject);\n },\n);\n\nfunction filterProxies(proxies, {hostFilter, stateFilter, roleFilter, bannedFilter}) {\n const bannedFilterAsBool = bannedFilter === 'true';\n const predicates = compact_([\n hostFilter ? ({host}) => host?.toLowerCase().includes(hostFilter) : undefined,\n stateFilter && stateFilter !== 'all' ? ({state}) => state === stateFilter : undefined,\n roleFilter && roleFilter !== 'all' ? ({role}) => role === roleFilter : undefined,\n bannedFilter !== 'all' ? ({banned}) => banned === bannedFilterAsBool : undefined,\n ]);\n return predicates.length ? filter_(proxies, concatByAnd(...predicates)) : proxies;\n}\n\nconst getAllRoles = createSelector([getProxies], (proxy) => aggregateItems(proxy, 'role'));\n\nconst getVisibleRoles = createSelector(\n [getProxies, getFiltersObject],\n function (\n proxies,\n {\n // eslint-disable-next-line no-unused-vars\n roleFilter,\n ...rest\n },\n ) {\n const filtered = filterProxies(proxies, rest);\n return aggregateItems(filtered, 'role');\n },\n);\n\nconst getAllStates = createSelector([getProxies], (proxy) => aggregateItems(proxy, 'state'));\n\nconst getVisibleStates = createSelector([getProxies], (proxy) => aggregateItems(proxy, 'state'));\n\nexport const getVisibleProxies = createSelector(\n [getFilteredProxies, getSortState],\n (proxies, sortState) => hammer.utils.sort(proxies, sortState, proxiesTableColumnItems),\n);\n\nexport const getRoles = createSelector(\n [getAllRoles, getVisibleRoles, getHostFilter, getStateFilter],\n getSelectItems,\n);\n\nexport const getStates = createSelector(\n [getAllStates, getVisibleStates, getHostFilter, getRoleFilter],\n getSelectItems,\n);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport format from '../../../common/hammer/format';\n\nimport {AddMaintenanceParams} from '../../../../shared/yt-types';\nimport {YTDFDialog, makeErrorFields} from '../../../components/Dialog';\nimport type {\n NodeMaintenanceState,\n NodeResourceLimits,\n} from '../../../store/reducers/components/node-maintenance-modal';\nimport {\n getNodeMaintenanceModalInitialValues,\n getNodeMaintenanceModalState,\n} from '../../../store/selectors/components/node-maintenance-modal';\nimport {\n applyMaintenance,\n closeNodeMaintenanceModal,\n} from '../../../store/actions/components/node-maintenance-modal';\nimport {useThunkDispatch} from '../../../store/thunkDispatch';\nimport {YTError} from '../../../../@types/types';\nimport {Host} from '../../../containers/Host/Host';\n\nimport './NodeMaintenanceModal.scss';\n\nconst block = cn('node-maintenance-modal');\n\ntype FormValues = NodeMaintenanceState['maintenance'] & {\n limits: Partial<{[K in keyof NodeResourceLimits]: {value?: number}}>;\n role: {role?: string};\n};\n\nexport function NodeMaintenanceModal() {\n const dispatch = useThunkDispatch();\n const [error, setError] = React.useState<YTError | undefined>();\n\n const initialValues = useSelector(getNodeMaintenanceModalInitialValues);\n const {address, component, resourceLimits} = useSelector(getNodeMaintenanceModalState);\n\n const allowedMaintenanceTypes: Array<AddMaintenanceParams['type']> =\n component === 'cluster_node'\n ? [\n 'ban',\n 'disable_scheduler_jobs',\n 'disable_write_sessions',\n 'disable_tablet_cells',\n 'decommission',\n ]\n : ['ban'];\n\n const allowLimitsTab = component === 'cluster_node';\n const allowChangeRole = component !== 'cluster_node';\n\n return address ? (\n <YTDFDialog<FormValues>\n visible\n headerProps={{\n title: (\n <>\n <Host useText prefix={<>Edit </>} address={address} />\n </>\n ),\n }}\n initialValues={initialValues}\n onClose={() => dispatch(closeNodeMaintenanceModal())}\n onAdd={async (form) => {\n const {\n values: {limits, role: roleTab, ...rest},\n } = form.getState();\n\n const diff = reduce_(\n rest,\n (acc, item, t) => {\n const type = t as keyof typeof rest;\n const {state, comment} = initialValues?.[type] ?? {};\n if (\n Boolean(state) !== Boolean(item?.state) ||\n (item?.comment && comment !== item?.comment)\n ) {\n acc[type] = item;\n }\n return acc;\n },\n {} as Partial<FormValues>,\n );\n\n const limitsDiff = reduce_(\n limits,\n (acc, item, k) => {\n const key = k as keyof typeof limits;\n if (initialValues.limits[key]?.value !== item?.value) {\n acc[key] = item?.value;\n }\n return acc;\n },\n {} as Partial<NodeResourceLimits>,\n );\n\n const role = initialValues.role.role !== roleTab.role ? roleTab.role : undefined;\n\n try {\n dispatch(applyMaintenance(address, component, diff, limitsDiff, role));\n } catch (e: any) {\n setError(e);\n }\n }}\n fields={[\n ...map_(allowedMaintenanceTypes, (name) => {\n const title = name.split('disable_')[1];\n return {\n name,\n type: 'tab' as const,\n title: format.ReadableField(title ?? name),\n fields: [...makeMaintenanceFields(name), ...makeErrorFields([error])],\n };\n }),\n ...(!allowLimitsTab\n ? []\n : [\n {\n name: 'limits',\n type: 'tab' as const,\n title: 'Limits',\n fields: [\n makeResourceLimitField('cpu', resourceLimits),\n makeResourceLimitField('gpu', resourceLimits),\n makeResourceLimitField('network', resourceLimits),\n makeResourceLimitField('replication_slots', resourceLimits),\n makeResourceLimitField('replication_data_size', resourceLimits),\n makeResourceLimitField('removal_slots', resourceLimits),\n makeResourceLimitField('repair_slots', resourceLimits),\n makeResourceLimitField('repair_data_size', resourceLimits),\n makeResourceLimitField('seal_slots', resourceLimits),\n makeResourceLimitField('system_memory', resourceLimits),\n makeResourceLimitField('user_memory', resourceLimits),\n ...makeErrorFields([error]),\n ],\n },\n ]),\n ...(!allowChangeRole\n ? []\n : [\n {\n name: 'role',\n type: 'tab' as const,\n title: 'Role',\n fields: [\n {\n name: 'role',\n type: 'text' as const,\n caption: 'Role',\n },\n ],\n },\n ]),\n ]}\n />\n ) : null;\n}\n\nfunction makeMaintenanceFields(type: AddMaintenanceParams['type'], allowOthers = true) {\n return [\n {\n name: 'state',\n type: 'radio' as const,\n caption: 'State',\n extras: makeRadioExtras(type),\n },\n {\n name: 'comment',\n type: 'textarea' as const,\n caption: 'Comment',\n extras: (values: FormValues) => {\n return values[type]?.state ? {} : {disabled: true};\n },\n },\n ...(allowOthers\n ? [\n {\n name: 'otherComments',\n type: 'textarea' as const,\n caption: 'Other users comments',\n extras: {\n disabled: true,\n },\n },\n ]\n : []),\n ];\n}\n\nfunction makeRadioExtras(type: AddMaintenanceParams['type']) {\n const labels: Partial<Record<typeof type, [string, string]>> = {\n ban: ['Enabled', 'Banned'],\n decommission: ['Enabled', 'Decommissioned'],\n };\n const [activeLabel = 'Enabled', maintenanceLabel = 'Disabled'] = labels[type] ?? [];\n return {\n options: [\n {value: '', label: activeLabel},\n {value: 'maintenance', label: maintenanceLabel},\n ],\n };\n}\n\nfunction makeResourceLimitField(\n name: keyof NodeResourceLimits,\n defaults?: Partial<Record<typeof name, number>>,\n) {\n const OPTIONS: Partial<Record<typeof name, {format?: 'Bytes'; caption?: string}>> = {\n cpu: {caption: 'CPU'},\n gpu: {caption: 'GPU'},\n user_memory: {\n format: 'Bytes',\n },\n system_memory: {\n format: 'Bytes',\n },\n repair_data_size: {\n format: 'Bytes',\n },\n replication_data_size: {\n format: 'Bytes',\n },\n };\n\n const options = OPTIONS[name] ?? {};\n\n return {\n type: 'number' as const,\n name,\n caption: options?.caption || format.ReadableField(name),\n extras: {\n format: options?.format ?? ('Number' as const),\n showDefaultValue: true,\n defaultValue: defaults?.[name],\n defaultValueClassName: block('limit-default'),\n bottomLineVisibility: 'focused' as const,\n },\n };\n}\n","import {Sticky, StickyContainer} from 'react-sticky';\nimport React, {Component} from 'react';\nimport {connect, useDispatch} from 'react-redux';\nimport hammer from '../../../../common/hammer';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport ProxyActions from '../../../../pages/components/tabs/Proxies/ProxyActions/ProxyActions';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport TableInfo from '../../../../pages/components/TableInfo/TableInfo';\nimport Filter from '../../../../components/Filter/Filter';\nimport Select from '../../../../components/Select/Select';\nimport ProxyCard from './ProxyCard/ProxyCard';\n\nimport {\n changeBannedFilter,\n changeHostFilter,\n changeRoleFilter,\n changeStateFilter,\n getProxies,\n resetProxyState,\n} from '../../../../store/actions/components/proxies/proxies';\nimport {\n getRoles,\n getStates,\n getVisibleProxies,\n} from '../../../../store/selectors/components/proxies/proxies';\nimport {mergeScreen, splitScreen as splitScreenAction} from '../../../../store/actions/global';\nimport {proxiesTableColumnItems} from '../../../../utils/components/proxies/table';\nimport {showNodeMaintenance} from '../../../../store/actions/components/node-maintenance-modal';\nimport {useUpdater} from '../../../../hooks/use-updater';\nimport {HEADER_HEIGHT} from '../../../../constants/index';\nimport {isPaneSplit} from '../../../../utils';\nimport {\n COMPONENTS_PROXIES_TABLE_ID,\n PROXY_TYPE,\n SPLIT_TYPE,\n} from '../../../../constants/components/proxies/proxies';\nimport {NodeColumnBanned, NodeColumnRole, NodeColumnState, NodeColumnText} from '../NodeColumns';\nimport {NodeMaintenanceModal} from '../../NodeMaintenanceModal/NodeMaintenanceModal';\n\nimport './Proxies.scss';\n\nconst block = cn('components-proxies');\n\nfunction ProxiesUpdater({type}) {\n const dispatch = useDispatch();\n\n const {updateFn, destructFn} = React.useMemo(() => {\n return {\n updateFn: () => dispatch(getProxies(type)),\n destructFn: () => dispatch(resetProxyState()),\n };\n }, [dispatch, type]);\n\n useUpdater(updateFn, {destructFn});\n\n return null;\n}\n\nexport class Proxies extends Component {\n static selectProps = PropTypes.arrayOf(\n PropTypes.shape({\n text: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n }),\n );\n\n static propTypes = {\n // from parent\n type: PropTypes.oneOf([PROXY_TYPE.HTTP, PROXY_TYPE.RPC]).isRequired,\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n totalItems: PropTypes.number.isRequired,\n showingItems: PropTypes.number.isRequired,\n initialLoading: PropTypes.bool.isRequired,\n hostFilter: PropTypes.string.isRequired,\n stateFilter: PropTypes.string.isRequired,\n roleFilter: PropTypes.string.isRequired,\n states: Proxies.selectProps.isRequired,\n roles: Proxies.selectProps.isRequired,\n proxies: PropTypes.arrayOf(PropTypes.object).isRequired,\n splitScreen: PropTypes.shape({\n isSplit: PropTypes.bool.isRequired,\n paneClassNames: PropTypes.array.isRequired,\n type: PropTypes.string.isRequired,\n }).isRequired,\n\n changeHostFilter: PropTypes.func.isRequired,\n changeStateFilter: PropTypes.func.isRequired,\n changeRoleFilter: PropTypes.func.isRequired,\n\n splitScreenAction: PropTypes.func.isRequired,\n mergeScreen: PropTypes.func.isRequired,\n };\n\n state = {\n activeProxy: null,\n };\n\n static renderHost(item, columnName) {\n return (\n <div\n className=\"elements-column_type_id elements-column_with-hover-button\"\n title={item.host}\n >\n <span className=\"elements-monospace elements-ellipsis\">\n {hammer.format['Address'](item.host)}\n </span>\n \n <ClipboardButton\n text={item.host}\n view=\"flat-secondary\"\n size=\"s\"\n title={'Copy ' + columnName}\n />\n </div>\n );\n }\n\n static renderState(item) {\n return <NodeColumnState state={item.state} />;\n }\n\n static renderBanned(item) {\n return <NodeColumnBanned banned={item.banned} />;\n }\n\n static renderRole(item) {\n return <NodeColumnRole role={item.role} />;\n }\n\n static renderVersion(item) {\n return <NodeColumnText text={item.version} />;\n }\n\n static renderLoadAverage(item) {\n return <span>{hammer.format['Number'](item.loadAverage, {digits: 2})}</span>;\n }\n\n static renderNetworkLoad(item) {\n return <span>{item.networkLoad?.toPrecision(3) || hammer.format.NO_VALUE}</span>;\n }\n\n static renderUpdatedAt(item) {\n return <span>{hammer.format['DateTime'](item.updatedAt, {format: 'short'})}</span>;\n }\n\n get tableColumnsSets() {\n return {\n [PROXY_TYPE.HTTP]: {\n items: [\n 'host',\n 'state',\n 'banned',\n 'role',\n 'version',\n 'load_average',\n 'network_load',\n 'updated_at',\n 'actions',\n ],\n },\n [PROXY_TYPE.RPC]: {\n items: ['host', 'state', 'banned', 'role', 'version', 'actions'],\n },\n };\n }\n\n get tableProps() {\n const {type, initialLoading} = this.props;\n\n return {\n size: 's',\n css: block(),\n theme: 'light',\n striped: false,\n cssHover: true,\n isLoading: initialLoading,\n onItemClick: this.handleItemClick,\n tableId: COMPONENTS_PROXIES_TABLE_ID,\n columns: {\n items: proxiesTableColumnItems,\n sets: this.tableColumnsSets,\n mode: type,\n },\n templates: {\n host: Proxies.renderHost,\n state: Proxies.renderState,\n banned: Proxies.renderBanned,\n role: Proxies.renderRole,\n load_average: Proxies.renderLoadAverage,\n network_load: Proxies.renderNetworkLoad,\n updated_at: Proxies.renderUpdatedAt,\n actions: this.renderActions,\n version: Proxies.renderVersion,\n },\n computeKey(proxy) {\n return proxy.host;\n },\n };\n }\n\n handleItemClick = (proxy, index) => {\n const {proxies, splitScreenAction} = this.props;\n const paneClassNames = [block('proxy-pane'), block('info-pane')];\n const activeProxy = proxies[index];\n\n this.setState({activeProxy});\n splitScreenAction(SPLIT_TYPE, paneClassNames);\n };\n\n renderActions = (item) => {\n const {type} = this.props;\n\n return <ProxyActions type={type} proxy={item} />;\n };\n\n renderFilters() {\n const {\n initialLoading,\n hostFilter,\n changeHostFilter,\n stateFilter,\n changeStateFilter,\n states,\n roleFilter,\n changeRoleFilter,\n bannedFilter,\n changeBannedFilter,\n roles,\n } = this.props;\n\n return (\n <div className={block('filters')}>\n <div className={block('filter', {host: true})}>\n <Filter\n hasClear\n size=\"m\"\n debounce={500}\n value={hostFilter}\n disabled={initialLoading}\n onChange={changeHostFilter}\n placeholder=\"Filter hosts...\"\n />\n </div>\n\n <div className={block('filter', {state: true})}>\n <Select\n items={states}\n value={[stateFilter]}\n disabled={initialLoading}\n onUpdate={(vals) => changeStateFilter(vals[0])}\n label=\"State:\"\n width=\"max\"\n hideFilter\n />\n </div>\n\n <div className={block('filter', {role: true})}>\n <Select\n items={roles}\n value={[roleFilter]}\n disabled={initialLoading}\n onUpdate={(vals) => changeRoleFilter(vals[0])}\n label=\"Role:\"\n width=\"max\"\n hideFilter\n />\n </div>\n\n <div className={block('filter')}>\n <Select\n label=\"Banned:\"\n items={[\n {value: 'all', title: 'All'},\n {value: 'true', title: 'True'},\n {value: 'false', title: 'False'},\n ]}\n value={[String(bannedFilter ?? 'all')]}\n disabled={initialLoading}\n onUpdate={([value]) => {\n changeBannedFilter(value);\n }}\n width=\"max\"\n hideFilter\n />\n </div>\n </div>\n );\n }\n\n renderOverview() {\n const {totalItems, showingItems, splitScreen} = this.props;\n const isSplit = isPaneSplit(splitScreen, SPLIT_TYPE);\n\n return (\n <Sticky topOffset={-HEADER_HEIGHT}>\n {({isSticky}) => (\n <div\n className={block('overview', {\n sticky: isSticky,\n split: isSplit,\n })}\n >\n {this.renderFilters()}\n\n <TableInfo showingItems={showingItems} totalItems={totalItems} />\n </div>\n )}\n </Sticky>\n );\n }\n\n renderContent() {\n const {proxies, mergeScreen, splitScreen} = this.props;\n const {activeProxy} = this.state;\n\n return (\n <div className={block('content')}>\n <ElementsTable items={proxies} {...this.tableProps} />\n\n {isPaneSplit(splitScreen, SPLIT_TYPE) && (\n <ProxyCard proxy={activeProxy} handleClose={mergeScreen} />\n )}\n </div>\n );\n }\n\n render() {\n return (\n <ErrorBoundary>\n <ProxiesUpdater type={this.props.type} />\n <LoadDataHandler {...this.props}>\n <div className={block()}>\n <StickyContainer>\n {this.renderOverview()}\n {this.renderContent()}\n </StickyContainer>\n <NodeMaintenanceModal />\n </div>\n </LoadDataHandler>\n </ErrorBoundary>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {components, global} = state;\n const {\n loading,\n loaded,\n error,\n errorData,\n proxies,\n hostFilter,\n stateFilter,\n bannedFilter,\n roleFilter,\n } = components.proxies.proxies;\n const {splitScreen} = global;\n\n const visibleProxies = getVisibleProxies(state);\n const states = getStates(state);\n const roles = getRoles(state);\n const initialLoading = loading && !loaded;\n\n return {\n loading,\n loaded,\n error,\n errorData,\n\n showingItems: visibleProxies.length,\n totalItems: proxies.length,\n proxies: visibleProxies,\n splitScreen,\n states,\n roles,\n stateFilter,\n hostFilter,\n roleFilter,\n bannedFilter,\n initialLoading,\n };\n};\n\nconst mapDispatchToProps = {\n changeBannedFilter,\n changeHostFilter,\n changeStateFilter,\n changeRoleFilter,\n splitScreenAction,\n mergeScreen,\n\n showNodeMaintenance,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Proxies);\n","import {initialFiltersState} from '../../../../store/reducers/components/nodes/setup/setup';\nimport {createSelector} from 'reselect';\nimport transform_ from 'lodash/transform';\nimport {getTemplates} from '../../../../store/selectors/settings';\n\nconst getDefaultPreset = () => ({\n name: 'All',\n data: initialFiltersState,\n isDefault: true,\n});\n\nconst getSavedPresets = createSelector(getTemplates, (presets = {}) =>\n transform_(presets, (res, data, name) => res.push({name, data, isDefault: false}), []),\n);\n\nexport const getPresets = createSelector(\n [getDefaultPreset, getSavedPresets],\n (defaultPreset, savedPresets) => [defaultPreset, ...savedPresets],\n);\n","import React, {Component} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport Icon from '../../../../../components/Icon/Icon';\n\nimport {getPresets} from '../../../../../store/selectors/components/nodes/filters-presets';\nimport {applyPreset, removePreset} from '../../../../../store/actions/components/nodes/nodes';\n\nimport './FiltersPresets.scss';\n\nconst block = cn('nodes-filters-preset');\n\nclass FiltersPresets extends Component {\n static propTypes = {\n // from connect\n presets: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n data: PropTypes.object.isRequired,\n isDefault: PropTypes.bool.isRequired,\n }).isRequired,\n ).isRequired,\n\n applyPreset: PropTypes.func.isRequired,\n removePreset: PropTypes.func.isRequired,\n\n // from parent\n onChange: PropTypes.func,\n };\n\n handlePresetClick = (preset) => {\n const {applyPreset, onChange} = this.props;\n\n applyPreset(preset.data);\n if (typeof onChange === 'function') {\n onChange(preset);\n }\n };\n\n handleRemoveClick = (evt, name) => {\n const {removePreset} = this.props;\n\n evt.stopPropagation();\n removePreset(name);\n };\n\n renderPreset(preset) {\n const {name, isDefault} = preset;\n\n return (\n <div\n onClick={() => this.handlePresetClick(preset)}\n className={block('preset')}\n key={name}\n >\n {name}\n\n {!isDefault && (\n <span\n onClick={(evt) => this.handleRemoveClick(evt, name)}\n className={block('close')}\n >\n <Icon face=\"solid\" awesome=\"times\" />\n </span>\n )}\n </div>\n );\n }\n\n render() {\n const {presets} = this.props;\n\n return (\n <div className={block()}>{map_(presets, (preset) => this.renderPreset(preset))}</div>\n );\n }\n}\n\nconst mapStateToProps = (state) => ({presets: getPresets(state)});\n\nexport default connect(mapStateToProps, {applyPreset, removePreset})(FiltersPresets);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport Button from '../Button/Button';\n\nimport TextInputWithDebounce, {\n TextInputWithDebounceProps,\n} from '../TextInputWithDebounce/TextInputWithDebounce';\n\nimport './FilterWithRegExp.scss';\nconst block = cn('filter-with-regexp');\n\ntype Props = Omit<TextInputWithDebounceProps, 'onChange' | 'value'> & {\n className?: string;\n value: FilterWithRegExpValue;\n onChange: (value: Props['value']) => void;\n placeholderRegexp?: string;\n\n hideError?: boolean;\n};\n\nexport interface FilterWithRegExpValue {\n filter: string;\n useRegexp?: boolean;\n regexpError?: string;\n}\n\ninterface State {\n error?: Error;\n prevFilter?: string;\n}\n\nexport default class FilterWithRegExp extends React.PureComponent<Props, State> {\n static getDerivedStateFromProps(props: Props, state: State) {\n if (state.prevFilter === props.value.filter) {\n return null;\n }\n\n try {\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _re = new RegExp(props.value.filter);\n return {prevFilter: props.value.filter, error: undefined};\n } catch (error) {\n return {\n prevFilter: props.value.filter,\n error,\n };\n }\n }\n\n input: HTMLInputElement | null = null;\n state: State = {};\n\n onChange(filter: string, useRegexp?: boolean) {\n const {onChange} = this.props;\n let regexpError;\n if (useRegexp) {\n try {\n // eslint-disable-next-line no-new\n new RegExp(filter);\n } catch (e) {\n regexpError = (e as Error).message;\n }\n }\n onChange({filter, useRegexp, regexpError});\n }\n\n toggleRegexpMode = () => {\n const {\n value: {useRegexp, filter},\n } = this.props;\n this.onChange(filter, !useRegexp);\n this.input?.focus();\n };\n\n onFilterChange = (filter: string) => {\n const {\n value: {useRegexp},\n } = this.props;\n this.onChange(filter, useRegexp);\n };\n\n render() {\n const {\n className,\n size,\n placeholder = 'Enter filter...',\n placeholderRegexp = 'Enter regexp...',\n value,\n pin,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onChange,\n ...rest\n } = this.props;\n const {useRegexp, filter} = value;\n const {error} = this.state;\n\n return (\n <div className={block(null, className)}>\n <div className={block('controls')}>\n <TextInputWithDebounce\n {...rest}\n controlRef={(input) => {\n this.input = input as HTMLInputElement;\n }}\n placeholder={useRegexp ? placeholderRegexp || placeholder : placeholder}\n pin={pin}\n size={size}\n value={filter}\n onUpdate={this.onFilterChange}\n className={block('filter')}\n debounce={400}\n />\n <Button\n view={useRegexp ? 'action' : undefined}\n size={size}\n pin={'clear-brick'}\n onClick={() => this.toggleRegexpMode()}\n >\n .*\n </Button>\n </div>\n {useRegexp && error && <span className={block('error')}>{error?.message}</span>}\n </div>\n );\n }\n}\n","import React from 'react';\nimport map_ from 'lodash/map';\n\nimport cn from 'bem-cn-lite';\n\nimport Select from '../../components/Select/Select';\nconst block = cn('tag-selector');\n\nexport interface TagSelectorValue {\n concatBy: 'AND' | 'OR';\n items: Array<string>;\n}\n\ntype SelectProps = React.ComponentProps<typeof Select>;\n\nexport interface TagSelectorProps {\n className?: string;\n\n value?: Array<string>;\n onChange: (v: TagSelectorProps['value']) => void;\n\n items?: Array<string>;\n\n placeholder?: string;\n pin?: SelectProps['pin'];\n}\n\nfunction TagSelector(props: TagSelectorProps) {\n const {className, onChange, items, placeholder, value, ...rest} = props;\n\n const options = React.useMemo(() => {\n return map_(items, (value) => ({value, text: value}));\n }, [items]);\n\n return (\n <div className={block(null, className)}>\n <Select\n {...rest}\n value={value || []}\n multiple\n onUpdate={onChange}\n items={options}\n placeholder={placeholder}\n width=\"max\"\n maxVisibleValues={3}\n />\n </div>\n );\n}\n\nexport default React.memo(TagSelector);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport reduce_ from 'lodash/reduce';\n\nimport FilterWithRegExp, {\n FilterWithRegExpValue,\n} from '../../../../../../components/Filter/FilterWithRegExp';\nimport TagSelector from '../../../../../../components/TagSelector/TagSelector';\n\nimport './TagsFilter.scss';\nimport Button from '../../../../../../components/Button/Button';\nimport {DropdownMenu} from '@gravity-ui/uikit';\nimport Icon, {IconName} from '../../../../../../components/Icon/Icon';\n\nconst block = cn('tags-filter');\n\nconst TAG_FILTER_MODES = ['filter', 'union', 'intersection'] as const;\n\ntype TagFilterMode = (typeof TAG_FILTER_MODES)[number];\n\ninterface TagsFilterValue extends FilterWithRegExpValue {\n mode?: TagFilterMode;\n selected?: Array<string>;\n}\n\ninterface Props {\n className?: string;\n\n size?: 's' | 'm' | 'l' | 'xl';\n\n value: TagsFilterValue;\n onChange: (v: Props['value']) => void;\n\n items?: Array<string>;\n\n allowedModes?: Array<TagsFilterValue['mode']>;\n\n selectPlaceholder?: string;\n}\n\nconst defaultValue: Required<Props['value']> = {\n mode: 'filter',\n filter: '',\n useRegexp: false,\n selected: [],\n regexpError: '',\n};\n\nconst ICONS: Record<Required<TagsFilterValue>['mode'], IconName> = {\n filter: 'filter',\n union: 'union',\n intersection: 'intersection',\n};\n\nfunction TagsFilter(props: Props) {\n const {\n value,\n onChange,\n className,\n size = 'm',\n items,\n selectPlaceholder,\n allowedModes = TAG_FILTER_MODES,\n } = props;\n const {\n mode = defaultValue.mode,\n filter = defaultValue.filter,\n selected = defaultValue.selected,\n useRegexp,\n } = value;\n\n const handleChange = React.useCallback(\n (v: Props['value']) => {\n const value = reduce_(\n v,\n (acc, value, key) => {\n if (value !== undefined) {\n acc[key] = value;\n }\n return acc;\n },\n {} as any,\n );\n onChange(value);\n },\n [onChange],\n );\n\n const handleFilterChange = React.useCallback(\n (diff: FilterWithRegExpValue) => {\n handleChange({...value, ...diff});\n },\n [handleChange, value],\n );\n\n const handleSelectChange = React.useCallback(\n (selected?: Array<string>) => {\n handleChange({...value, selected});\n },\n [handleChange, value],\n );\n\n const selectedItems = React.useMemo(() => {\n return selected;\n }, [selected]);\n\n const control =\n mode === 'filter' ? (\n <FilterWithRegExp\n className={block('control')}\n pin={'round-brick'}\n size={size}\n value={{filter, useRegexp}}\n onChange={handleFilterChange}\n />\n ) : (\n <TagSelector\n className={block('control')}\n value={selectedItems}\n onChange={handleSelectChange}\n items={items}\n placeholder={selectPlaceholder}\n pin=\"round-brick\"\n />\n );\n\n const modes = allowedModes.map((m) => {\n const itemMode = m!;\n return {\n icon: <Icon awesome={ICONS[itemMode]} />,\n text: itemMode[0].toUpperCase() + itemMode.substring(1),\n action: () => handleChange({...value, mode: itemMode}),\n };\n });\n\n return (\n <div className={block(null, className)}>\n {control}\n <DropdownMenu\n items={modes}\n switcher={\n <Button size={size} width={'auto'} pin={'clear-round'}>\n <Icon awesome={ICONS[mode]} />\n </Button>\n }\n />\n </div>\n );\n}\n\nexport default React.memo(TagsFilter);\n","import React, {Component, Fragment} from 'react';\nimport {Checkbox} from '@gravity-ui/uikit';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport hammer from '../../../../../common/hammer';\nimport cn from 'bem-cn-lite';\n\nimport mapValues_ from 'lodash/mapValues';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport CollapsibleSection from '../../../../../components/CollapsibleSection/CollapsibleSection';\nimport RadioButton from '../../../../../components/RadioButton/RadioButton';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport Hotkey from '../../../../../components/Hotkey/Hotkey';\nimport Filter from '../../../../../components/Filter/Filter';\nimport Modal from '../../../../../components/Modal/Modal';\nimport Select from '../../../../../components/Select/Select';\n\nimport {initialState} from '../../../../../store/reducers/components/nodes/setup/setup';\nimport {\n applyPreset,\n getComponentsNodesFilterOptions,\n savePreset,\n} from '../../../../../store/actions/components/nodes/nodes';\nimport {FLAG_STATE, MEDIUM_COLS_PREFIX} from '../../../../../constants/components/nodes/nodes';\nimport {parseBytes, updateListWithAll} from '../../../../../utils';\n\nimport {getMediumListNoCache} from '../../../../../store/selectors/thor';\nimport TagsFilter from './TagsFilter/TagsFilter';\nimport {\n getComponentNodesFiltersSetup,\n getComponentNodesRacks,\n getComponentNodesTags,\n} from '../../../../../store/selectors/components/nodes/nodes';\nimport {\n COMPONENTS_AVAILABLE_STATES,\n getComponentNodesFilterSetupStateValue,\n} from '../../../../../store/selectors/components/nodes/nodes/data';\n\nimport './SetupModal.scss';\n\nconst block = cn('nodes-setup-modal');\n\nconst groupFilterProps = PropTypes.shape({\n from: PropTypes.shape({\n value: PropTypes.number,\n valid: PropTypes.bool.isRequired,\n }).isRequired,\n to: PropTypes.shape({\n value: PropTypes.number,\n valid: PropTypes.bool.isRequired,\n }).isRequired,\n});\n\nexport class SetupModal extends Component {\n static radioProps = PropTypes.oneOf([FLAG_STATE.ENABLED, FLAG_STATE.DISABLED, FLAG_STATE.ALL]);\n\n static propTypes = {\n // from parent\n visible: PropTypes.bool,\n handleClose: PropTypes.func.isRequired,\n\n // from connect\n setup: PropTypes.shape({\n default: PropTypes.shape({\n physicalHost: PropTypes.string.isRequired,\n tag: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired,\n state: PropTypes.arrayOf(PropTypes.string),\n schedulerJobs: SetupModal.radioProps.isRequired,\n writeSessions: SetupModal.radioProps.isRequired,\n tabletCells: SetupModal.radioProps.isRequired,\n rack: PropTypes.oneOfType([\n PropTypes.string.isRequired,\n PropTypes.object.isRequired,\n ]).isRequired,\n banned: SetupModal.radioProps.isRequired,\n decommissioned: SetupModal.radioProps.isRequired,\n full: SetupModal.radioProps.isRequired,\n alerts: SetupModal.radioProps.isRequired,\n }).isRequired,\n storage: SetupModal.createPropTypes('storage'),\n cpu: SetupModal.createPropTypes('cpu'),\n resources: SetupModal.createPropTypes('resources'),\n tablets: SetupModal.createPropTypes('tablets'),\n }),\n\n applyPreset: PropTypes.func.isRequired,\n savePreset: PropTypes.func.isRequired,\n };\n\n static createPropTypes(group) {\n const inner = mapValues_(initialState[group], () => groupFilterProps.isRequired);\n\n return PropTypes.shape(inner).isRequired;\n }\n\n static getCurrentValue(state, props, section, group) {\n if (!state[section] || !state[section][group]) {\n return props[section][group];\n }\n return null;\n }\n\n static getDerivedStateFromProps(props, state) {\n const {mediumList, setup} = props;\n const {storage} = state;\n const newStorage = reduce_(\n mediumList,\n (acc, medium) => {\n const key = MEDIUM_COLS_PREFIX + medium;\n acc[key] = storage[key] || setup.storage[key];\n return acc;\n },\n {},\n );\n return {storage: {...storage, ...newStorage}};\n }\n\n state = {};\n\n constructor(props) {\n super(props);\n this.state = {\n ...this.props.setup,\n saveAsTemplate: false,\n templateName: '',\n };\n\n this.state.default.state = this.props.stateValue;\n }\n\n get hotkeySettings() {\n return [{keys: 'enter', handler: this.handleApplySetup, scope: 'all'}];\n }\n\n get states() {\n return map_(this.props.nodeStates, (state) => {\n return {\n title: hammer.format.Readable(state),\n value: state,\n };\n });\n }\n\n get radioItems() {\n const {ENABLED, DISABLED, ALL} = FLAG_STATE;\n\n return [\n {text: hammer.format['FirstUppercase'](ALL), value: ALL},\n {text: hammer.format['FirstUppercase'](ENABLED), value: ENABLED},\n {\n text: hammer.format['FirstUppercase'](DISABLED),\n value: DISABLED,\n },\n ];\n }\n\n prepareFiltersCallback(section, group) {\n return [\n (value) => this.handleValueFilterChange(section, group, 'from', value),\n (value) => this.handleValueFilterChange(section, group, 'to', value),\n ];\n }\n\n handleApplySetup = () => {\n const {applyPreset, handleClose, savePreset} = this.props;\n const {saveAsTemplate, templateName, ...setup} = this.state;\n\n if (saveAsTemplate && templateName.length > 0) {\n savePreset(templateName, setup);\n }\n\n applyPreset(this.state);\n this.setState({saveAsTemplate: false}, handleClose);\n };\n\n handleSelectChange = (newValue) => {\n const {state} = this.state.default;\n\n const values = updateListWithAll({value: state, newValue}, 'all');\n\n this.setState({\n default: {\n ...this.state.default,\n state: values,\n },\n });\n };\n\n handleRadioChange(section, key, value) {\n this.setState({\n [section]: {\n ...this.state[section],\n [key]: value,\n },\n });\n }\n\n handleValueFilterChange = (section, group, key, value) => {\n const parsedValue = value === '' ? null : parseBytes(value);\n const isValid = !isNaN(parsedValue);\n\n this.setState({\n [section]: {\n ...this.state[section],\n [group]: {\n ...this.state[section][group],\n [key]: {\n value: isValid ? parsedValue : this.state[section][group][key].value,\n valid: isValid,\n },\n },\n },\n });\n };\n\n handleTextFilterChange = (section, key, value) => {\n this.setState({\n [section]: {\n ...this.state[section],\n [key]: value,\n },\n });\n };\n\n handleTemplateCheckboxChange = ({target}) => this.setState({saveAsTemplate: target.checked});\n\n handleTemplateNameChange = (templateName) => this.setState({templateName});\n\n renderValueFilter({placeholder, onChange, value, invalid, format = 'Bytes'}) {\n const formatter =\n format === 'Number' ? (value) => Number(value).toString() : hammer.format[format];\n const preparedValue = value === '' || value === null ? '' : formatter(value);\n\n return (\n <Filter\n size=\"m\"\n debounce={500}\n invalid={invalid}\n autofocus={false}\n onChange={onChange}\n value={preparedValue}\n placeholder={placeholder}\n />\n );\n }\n\n renderTextFilter({placeholder, onChange, value, disabled = false, invalid = false}) {\n return (\n <Filter\n size=\"m\"\n debounce={500}\n value={value}\n invalid={invalid}\n autofocus={false}\n disabled={disabled}\n onChange={onChange}\n placeholder={placeholder}\n />\n );\n }\n\n renderTagsFilter({items, onChange, value, disabled = false, modes, invalid = false}) {\n return (\n <TagsFilter\n value={value}\n invalid={invalid}\n autofocus={false}\n disabled={disabled}\n onChange={onChange}\n items={items}\n allowedModes={modes}\n selectPlaceholder={'Select tags...'}\n />\n );\n }\n\n renderFiltersGroup(section, group, format = 'Bytes') {\n const [firstCallback, secondCallback] = this.prepareFiltersCallback(section, group);\n\n const filter = this.state[section][group];\n\n const {valid: fromFilterValid, value: fromFilterValue} = filter.from;\n const {valid: toFilterValid, value: toFilterValue} = filter.to;\n\n return (\n <div className={block('filters-group')}>\n {this.renderValueFilter({\n placeholder: 'From X...',\n onChange: firstCallback,\n value: fromFilterValue,\n invalid: !fromFilterValid,\n format,\n })}\n\n {this.renderValueFilter({\n placeholder: 'To Y...',\n onChange: secondCallback,\n value: toFilterValue,\n invalid: !toFilterValid,\n format,\n })}\n </div>\n );\n }\n\n renderStatesSelect() {\n const {state} = this.state.default;\n return (\n <div className={block('select')}>\n <Select\n value={state}\n items={this.states}\n filterable\n onUpdate={this.handleSelectChange}\n placeholder={'Select states...'}\n width=\"max\"\n maxVisibleValues={5}\n hideFilter\n multiple\n />\n </div>\n );\n }\n\n renderRadioGroup(section, name) {\n const value = this.state[section][name];\n\n return (\n <RadioButton\n size=\"m\"\n name={name}\n value={value}\n items={this.radioItems}\n onChange={(ev) => this.handleRadioChange(section, name, ev.target.value)}\n />\n );\n }\n\n renderCheckBox(text, checked, onChange) {\n return (\n <Checkbox\n size=\"l\"\n key={text}\n content={text}\n checked={checked}\n onChange={onChange}\n className={block('checkbox')}\n />\n );\n }\n\n renderDefaultFilters() {\n const section = 'default';\n const {nodeTags, nodeRacks} = this.props;\n\n return (\n <MetaTable\n items={[\n {\n key: 'physical host',\n value: this.renderTextFilter({\n value: this.state[section]['physicalHost'],\n placeholder: 'Enter physical host address...',\n onChange: (value) =>\n this.handleTextFilterChange(section, 'physicalHost', value),\n }),\n },\n {\n key: 'tags',\n value: this.renderTagsFilter({\n items: nodeTags,\n value: this.state[section]['tag'],\n onChange: (value) => this.handleTextFilterChange(section, 'tag', value),\n }),\n },\n {\n key: 'states',\n value: this.renderStatesSelect(),\n },\n {\n key: 'racks',\n value: this.renderTagsFilter({\n items: nodeRacks,\n value: this.state[section]['rack'],\n modes: ['filter', 'union'],\n onChange: (value) =>\n this.handleTextFilterChange(section, 'rack', value),\n }),\n },\n {\n key: 'banned',\n value: this.renderRadioGroup(section, 'banned'),\n },\n {\n key: 'decommissioned',\n value: this.renderRadioGroup(section, 'decommissioned'),\n },\n {\n key: 'full',\n value: this.renderRadioGroup(section, 'full'),\n },\n {\n key: 'alerts',\n value: this.renderRadioGroup(section, 'alertCount'),\n },\n {\n key: 'scheduler jobs',\n value: this.renderRadioGroup(section, 'schedulerJobs'),\n },\n {\n key: 'write sessions',\n value: this.renderRadioGroup(section, 'writeSessions'),\n },\n {\n key: 'tablet cells',\n value: this.renderRadioGroup(section, 'tabletCells'),\n },\n ]}\n />\n );\n }\n\n renderStorageFilters() {\n const {mediumList} = this.props;\n const section = 'storage';\n\n return (\n <Fragment>\n <MetaTable\n items={[\n {\n key: 'sessions',\n value: this.renderFiltersGroup(section, 'sessions', 'Number'),\n },\n {\n key: 'chunks',\n value: this.renderFiltersGroup(section, 'chunks', 'Number'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Space</h4>\n\n <MetaTable\n items={[\n {\n key: 'used',\n value: this.renderFiltersGroup(section, 'spaceUsed'),\n },\n {\n key: 'total',\n value: this.renderFiltersGroup(section, 'spaceTotal'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>IO weight</h4>\n\n <MetaTable\n items={map_(mediumList, (medium) => ({\n key: hammer.format['Readable'](medium),\n value: this.renderFiltersGroup(\n section,\n MEDIUM_COLS_PREFIX + medium,\n 'Number',\n ),\n }))}\n />\n </Fragment>\n );\n }\n\n renderCpuFilters() {\n const section = 'cpu';\n\n return (\n <Fragment>\n <MetaTable\n items={[\n {\n key: 'blob session',\n value: this.renderFiltersGroup(section, 'blobSession'),\n },\n {\n key: 'block cache',\n value: this.renderFiltersGroup(section, 'blockCache'),\n },\n {\n key: 'chunk block meta',\n value: this.renderFiltersGroup(section, 'chunkBlockMeta'),\n },\n {\n key: 'chunk meta',\n value: this.renderFiltersGroup(section, 'chunkMeta'),\n },\n {\n key: 'footprint',\n value: this.renderFiltersGroup(section, 'footprint'),\n },\n {\n key: 'query',\n value: this.renderFiltersGroup(section, 'query'),\n },\n {\n key: 'system jobs',\n value: this.renderFiltersGroup(section, 'systemJobs'),\n },\n {\n key: 'versioned chunk meta',\n value: this.renderFiltersGroup(section, 'versionedChunkMeta'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Tablet dynamic</h4>\n\n <MetaTable\n items={[\n {\n key: 'used',\n value: this.renderFiltersGroup(section, 'tabletDynamicUsed'),\n },\n {\n key: 'total',\n value: this.renderFiltersGroup(section, 'tabletDynamicTotal'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Tablet static</h4>\n\n <MetaTable\n items={[\n {\n key: 'used',\n value: this.renderFiltersGroup(section, 'tabletStaticUsed'),\n },\n {\n key: 'total',\n value: this.renderFiltersGroup(section, 'tabletStaticTotal'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>User jobs</h4>\n\n <MetaTable\n items={[\n {\n key: 'used',\n value: this.renderFiltersGroup(section, 'userJobsUsed'),\n },\n {\n key: 'total',\n value: this.renderFiltersGroup(section, 'userJobsTotal'),\n },\n ]}\n />\n </Fragment>\n );\n }\n\n renderResourcesFilters() {\n const section = 'resources';\n\n return (\n <Fragment>\n <h4 className={block('heading')}>User slots</h4>\n\n <MetaTable\n items={[\n {\n key: 'user slots used',\n value: this.renderFiltersGroup(section, 'userSlotsUsed', 'Number'),\n },\n {\n key: 'user slots total',\n value: this.renderFiltersGroup(section, 'userSlotsTotal', 'Number'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Seal slots</h4>\n\n <MetaTable\n items={[\n {\n key: 'seal slots used',\n value: this.renderFiltersGroup(section, 'sealSlotsUsed', 'Number'),\n },\n {\n key: 'seal slots total',\n value: this.renderFiltersGroup(section, 'sealSlotsTotal', 'Number'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Repair slots</h4>\n\n <MetaTable\n items={[\n {\n key: 'repair slots used',\n value: this.renderFiltersGroup(section, 'repairSlotsUsed', 'Number'),\n },\n {\n key: 'repair slots total',\n value: this.renderFiltersGroup(section, 'repairSlotsTotal', 'Number'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Removal slots</h4>\n\n <MetaTable\n items={[\n {\n key: 'removal slots used',\n value: this.renderFiltersGroup(section, 'removalSlotsUsed', 'Number'),\n },\n {\n key: 'removal slots total',\n value: this.renderFiltersGroup(section, 'removalSlotsUsed', 'Number'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Replication slots</h4>\n\n <MetaTable\n items={[\n {\n key: 'replication slots used',\n value: this.renderFiltersGroup(\n section,\n 'replicationSlotsUsed',\n 'Number',\n ),\n },\n {\n key: 'replication slots total',\n value: this.renderFiltersGroup(\n section,\n 'replicationSlotsTotal',\n 'Number',\n ),\n },\n ]}\n />\n </Fragment>\n );\n }\n\n renderTabletsFilters() {\n const section = 'tablets';\n\n return (\n <Fragment>\n <h4 className={block('heading')}>Tablet slots</h4>\n\n <MetaTable\n items={[\n {\n key: 'all states',\n value: this.renderFiltersGroup(section, 'all', 'Number'),\n },\n {\n key: 'none',\n value: this.renderFiltersGroup(section, 'none', 'Number'),\n },\n {\n key: 'leading',\n value: this.renderFiltersGroup(section, 'leading', 'Number'),\n },\n {\n key: 'following',\n value: this.renderFiltersGroup(section, 'following', 'Number'),\n },\n {\n key: 'Follower Recovery',\n value: this.renderFiltersGroup(section, 'followerRecovery', 'Number'),\n },\n {\n key: 'Leader Recovery',\n value: this.renderFiltersGroup(section, 'leaderRecovery', 'Number'),\n },\n {\n key: 'stopped',\n value: this.renderFiltersGroup(section, 'stopped', 'Number'),\n },\n {\n key: 'elections',\n value: this.renderFiltersGroup(section, 'elections', 'Number'),\n },\n ]}\n />\n\n <h4 className={block('heading')}>Tablet memory</h4>\n\n <MetaTable\n items={[\n {\n key: 'static used',\n value: this.renderFiltersGroup(section, 'staticUsed'),\n },\n {\n key: 'static total',\n value: this.renderFiltersGroup(section, 'staticTotal'),\n },\n {\n key: 'dynamic used',\n value: this.renderFiltersGroup(section, 'dynamicUsed'),\n },\n {\n key: 'dynamic total',\n value: this.renderFiltersGroup(section, 'dynamicTotal'),\n },\n ]}\n />\n </Fragment>\n );\n }\n\n renderContent() {\n const {saveAsTemplate, templateName} = this.state;\n\n return (\n <div className={block()}>\n <CollapsibleSection size=\"s\" name=\"Default\" className={block('default')}>\n {this.renderDefaultFilters()}\n </CollapsibleSection>\n\n <CollapsibleSection size=\"s\" name=\"Storage\">\n {this.renderStorageFilters()}\n </CollapsibleSection>\n\n <CollapsibleSection size=\"s\" name=\"CPU and memory\">\n {this.renderCpuFilters()}\n </CollapsibleSection>\n\n <CollapsibleSection size=\"s\" name=\"Resources\">\n {this.renderResourcesFilters()}\n </CollapsibleSection>\n\n <CollapsibleSection size=\"s\" name=\"Tablets\">\n {this.renderTabletsFilters()}\n </CollapsibleSection>\n\n <div className={block('template')}>\n <MetaTable\n items={[\n {\n key: 'save',\n value: this.renderCheckBox(\n 'Save as template',\n saveAsTemplate,\n this.handleTemplateCheckboxChange,\n ),\n },\n {\n key: 'template name',\n value: this.renderTextFilter({\n placeholder: 'Enter template name...',\n onChange: this.handleTemplateNameChange,\n value: templateName,\n disabled: !saveAsTemplate,\n invalid: saveAsTemplate && templateName.length < 1,\n }),\n },\n ]}\n />\n </div>\n\n <Hotkey settings={this.hotkeySettings} />\n </div>\n );\n }\n\n render() {\n const {visible, handleClose} = this.props;\n\n return (\n <Modal\n size=\"m\"\n title=\"Setup\"\n visible={visible}\n onCancel={handleClose}\n content={this.renderContent()}\n onConfirm={this.handleApplySetup}\n />\n );\n }\n\n componentDidMount() {\n const {visible, loadOptions} = this.props;\n\n if (visible) {\n loadOptions();\n }\n }\n\n componentDidUpdate(prevProps) {\n const {visible, loadOptions} = this.props;\n\n if (!prevProps.visible && visible) {\n loadOptions();\n }\n }\n}\n\nconst mapStateToProps = (state) => {\n return {\n setup: getComponentNodesFiltersSetup(state),\n mediumList: getMediumListNoCache(state),\n nodeTags: getComponentNodesTags(state),\n nodeRacks: getComponentNodesRacks(state),\n nodeStates: COMPONENTS_AVAILABLE_STATES,\n stateValue: getComponentNodesFilterSetupStateValue(state),\n };\n};\n\nexport default connect(mapStateToProps, {\n applyPreset,\n savePreset,\n loadOptions: getComponentsNodesFilterOptions,\n})(SetupModal);\n","import type {ThunkAction} from 'redux-thunk';\n\n// import ypath from '../../../../common/thor/ypath';\nimport {\n NODE_LOAD_FAILURE,\n NODE_LOAD_REQUEST,\n NODE_LOAD_SUCCESS,\n} from '../../../../constants/components/nodes/node';\nimport {Node} from '../../../../store/reducers/components/nodes/nodes/node';\nimport type {RootState} from '../../../../store/reducers';\nimport type {NodeLoadAction} from '../../../../store/reducers/components/node/node';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {prepareAttributes} from '../../../../utils/cypress-attributes';\n\ntype NodeLoadThunkAction = ThunkAction<any, RootState, any, NodeLoadAction>;\n\nexport function loadNodeAttributes(host: string): NodeLoadThunkAction {\n return (dispatch) => {\n dispatch({type: NODE_LOAD_REQUEST});\n return ytApiV3Id\n .get<Node>(YTApiId.nodeAttributes, {\n path: `//sys/cluster_nodes/${host}`,\n attributes: prepareAttributes(Node.ATTRIBUTES),\n })\n .then((node) => {\n dispatch({\n type: NODE_LOAD_SUCCESS,\n data: {host, node},\n });\n })\n .catch((error: Error) => {\n dispatch({\n type: NODE_LOAD_FAILURE,\n data: error,\n });\n });\n };\n}\n","import {createSelector} from 'reselect';\n\nimport {COMPONENTS_NODES_NODE_TABLE_ID} from '../../../../constants/components/nodes/nodes';\nimport type {RootState} from '../../../../store/reducers';\nimport type {Node} from '../../../../store/reducers/components/nodes/nodes/node';\nimport {nodeTableProps} from '../../../../utils/components/nodes/node';\nimport hammer from '../../../../common/hammer';\n\nconst getSortState = (state: RootState) => state.tables[COMPONENTS_NODES_NODE_TABLE_ID];\nconst getTabletSlots = (_state: RootState, props: {node: Pick<Node, 'tabletSlots'>}) =>\n props.node.tabletSlots;\n\nexport const getSortedItems = createSelector(\n [getSortState, getTabletSlots],\n (sortState, tabletSlots) =>\n tabletSlots\n ? hammer.utils.sort(tabletSlots.raw, sortState, nodeTableProps.columns.items)\n : [],\n);\n","import type {RootState} from '../../../../store/reducers/index';\n\nexport const nodeSelector = (state: RootState) => state.components.node.node;\n\nexport const nodeHostSelector = (state: RootState) => nodeSelector(state).node?.host;\n\nexport const getNodeAlertCount = (state: RootState) => state.components.node.node.node?.alertCount;\n\nexport const getNodeAlerts = (state: RootState) => state.components.node.node.node?.alerts;\n","import React from 'react';\n\nimport {Progress} from '@gravity-ui/uikit';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\n\nimport type {Node} from '../../../../../store/reducers/components/nodes/nodes/node';\nimport MemoryProgress from '../../nodes/MemoryProgress/MemoryProgress';\n\ninterface NodeCpuAndMemoryProps {\n cpuProgress: Node['cpuProgress'];\n cpuText: Node['cpuText'];\n memoryData?: Node['memoryData'];\n memoryProgress: Node['memoryProgress'];\n memoryText: Node['memoryText'];\n networkProgress: Node['networkProgress'];\n networkText: Node['networkText'];\n gpu?: Node['gpu'];\n}\n\nexport const hasCpuAndMemoryMeta = (node: NodeCpuAndMemoryProps) =>\n node.cpuProgress || node.memoryProgress || node.networkProgress;\n\nfunction NodeCpuAndMemory({node}: {node: NodeCpuAndMemoryProps}): ReturnType<React.VFC> {\n const {\n memoryData,\n memoryText,\n memoryProgress,\n cpuProgress,\n cpuText,\n networkProgress,\n networkText,\n gpu,\n } = node;\n return (\n <MetaTable\n items={[\n {\n key: 'cpu',\n value: <Progress value={cpuProgress || 0} text={cpuText} theme=\"success\" />,\n },\n {\n key: 'memory',\n value: (\n <MemoryProgress\n memoryData={memoryData}\n memoryText={memoryText}\n memoryProgress={memoryProgress || 0}\n />\n ),\n },\n {\n key: 'gpu',\n value: (\n <Progress\n value={gpu?.progress || 0}\n text={gpu?.progressText}\n theme=\"success\"\n />\n ),\n visible: gpu !== undefined,\n },\n {\n key: 'network',\n value: (\n <Progress value={networkProgress || 0} text={networkText} theme=\"success\" />\n ),\n },\n ]}\n />\n );\n}\n\nexport default React.memo(NodeCpuAndMemory);\n","import React from 'react';\n\nimport {Progress} from '@gravity-ui/uikit';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\n\nimport type {Node} from '../../../../../store/reducers/components/nodes/nodes/node';\nimport {progressText} from '../../../../../utils/progress';\n\ninterface NodeResourcesProps {\n removalSlots: Node['removalSlots'];\n repairSlots: Node['repairSlots'];\n replicationSlots: Node['replicationSlots'];\n sealSlots: Node['sealSlots'];\n userSlots: Node['userSlots'];\n}\n\nexport const hasResourcesMeta = (node: NodeResourcesProps) =>\n [\n node.userSlots.usage,\n node.sealSlots.usage,\n node.repairSlots.usage,\n node.removalSlots.usage,\n node.replicationSlots.usage,\n ].some((item) => typeof item !== 'undefined');\n\nfunction NodeResources(node: NodeResourcesProps): ReturnType<React.VFC> {\n const userSlots = progressText(node.userSlots.usage, node.userSlots.limits);\n const sealSlots = progressText(node.sealSlots.usage, node.sealSlots.limits);\n const repairSlots = progressText(node.repairSlots.usage, node.repairSlots.limits);\n const removalSlots = progressText(node.removalSlots.usage, node.removalSlots.limits);\n const replicationSLots = progressText(\n node.replicationSlots.usage,\n node.replicationSlots.limits,\n );\n\n return (\n <MetaTable\n items={[\n {\n key: 'user slots',\n value: (\n <Progress value={node.userSlots.usage} text={userSlots} theme=\"success\" />\n ),\n },\n {\n key: 'seal slots',\n value: (\n <Progress value={node.sealSlots.usage} text={sealSlots} theme=\"success\" />\n ),\n },\n {\n key: 'repair slots',\n value: (\n <Progress\n value={node.repairSlots.usage}\n text={repairSlots}\n theme=\"success\"\n />\n ),\n },\n {\n key: 'removal slots',\n value: (\n <Progress\n value={node.removalSlots.usage}\n text={removalSlots}\n theme=\"success\"\n />\n ),\n },\n {\n key: 'replication slots',\n value: (\n <Progress\n value={node.replicationSlots.usage}\n text={replicationSLots}\n theme=\"success\"\n />\n ),\n },\n ]}\n />\n );\n}\n\nexport default React.memo(NodeResources);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport transform_ from 'lodash/transform';\n\nimport {Progress} from '@gravity-ui/uikit';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\n\nimport type {Node} from '../../../../../store/reducers/components/nodes/nodes/node';\nimport hammer from '../../../../../common/hammer';\n\nimport './NodeStorage.scss';\n\nconst block = cn('node-storage');\n\ninterface NodeStorageProps {\n chunks: Node['chunks'];\n IOWeight: Node['IOWeight'];\n sessions: Node['sessions'];\n spaceProgress: Node['spaceProgress'];\n spaceText: Node['spaceText'];\n}\n\nexport const hasStorageMeta = (node: NodeStorageProps) =>\n node.spaceProgress || node.sessions || node.chunks || Object.keys(node.IOWeight).length > 0;\n\nfunction NodeStorage(node: NodeStorageProps): ReturnType<React.VFC> {\n const ioItems = transform_(\n node.IOWeight,\n (res, value, key) => res.push({key, value}),\n [] as Array<{key: string; value: number}>,\n );\n\n return (\n <>\n <MetaTable\n className={block('meta')}\n items={[\n {\n key: 'space',\n value: (\n <Progress\n value={node.spaceProgress || 0}\n text={node.spaceText}\n theme=\"success\"\n />\n ),\n },\n {\n key: 'sessions',\n value: hammer.format['Number'](node.sessions),\n },\n {\n key: 'chunks',\n value: hammer.format['Number'](node.chunks),\n },\n ]}\n />\n\n {ioItems.length > 0 && <h4 className={block('heading')}>IO weight</h4>}\n\n <MetaTable items={ioItems} />\n </>\n );\n}\n\nexport default React.memo(NodeStorage);\n","import React from 'react';\n\nimport type {Column} from '@gravity-ui/react-data-table';\n\nimport type {YTConfig} from '../../../../../../shared/yt-types';\nimport hammer from '../../../../../common/hammer';\nimport {TABLET_SLOTS} from '../../../../../components/templates/components/nodes/nodes';\nimport DataTableYT from '../../../../../components/DataTableYT/DataTableYT';\nimport Link from '../../../../../components/Link/Link';\nimport StatusBlock from '../../../../../components/StatusBlock/StatusBlock';\nimport {genTabletCellBundlesCellUrl} from '../../../../../utils/tablet_cell_bundles';\n\nconst YT = (window as any).YT as YTConfig;\n\ntype TabletSlot = any;\n\ninterface TabletSlotsProps {\n tabletSlots: TabletSlot[];\n}\n\nconst columns: Array<Column<TabletSlot>> = [\n {\n name: 'Cell ID',\n render({row}) {\n const url = genTabletCellBundlesCellUrl(row.cell_id, YT.cluster);\n\n return row.cell_id ? (\n <Link url={url} theme=\"ghost\" routed>\n {row.cell_id}\n </Link>\n ) : (\n hammer.format.NO_VALUE\n );\n },\n },\n {\n name: 'Peer ID',\n render({row}) {\n return row.peer_id;\n },\n },\n {\n name: 'State',\n render({row}) {\n const {text, theme} = TABLET_SLOTS[row.state as keyof typeof TABLET_SLOTS];\n\n return row.state ? <StatusBlock theme={theme} text={text} /> : hammer.format.NO_VALUE;\n },\n },\n];\n\nfunction NodeTabletSlots({tabletSlots}: TabletSlotsProps): ReturnType<React.VFC> {\n return (\n <DataTableYT\n columns={columns}\n data={tabletSlots}\n startIndex={1}\n useThemeYT\n settings={{sortable: false}}\n />\n );\n}\n\nexport default React.memo(NodeTabletSlots);\n","import React from 'react';\nimport isEmpty_ from 'lodash/isEmpty';\n\nimport hammer from '../../../common/hammer';\nimport Label from '../../../components/Label/Label';\nimport {MaintenanceRequests} from '../../../components/MaintenanceRequests/MaintenanceRequests';\nimport {MetaTableItem} from '../../../components/MetaTable/MetaTable';\nimport {renderLabel} from '../../../components/templates/components/nodes/nodes';\nimport type {Node} from '../../../store/reducers/components/nodes/nodes/node';\n\nfunction getStateTheme(state: Node['state']) {\n switch (state) {\n case 'online':\n return 'success';\n case 'offline':\n return 'danger';\n default:\n return 'default';\n }\n}\n\nexport function getNodeMetaItems({\n alertCount,\n banned,\n banMessage,\n dataCenter,\n decommissioned,\n decommissionedMessage,\n disableJobs,\n disableWriteSession,\n disableTabletCells,\n full,\n lastSeenTime,\n maintenanceRequests,\n state,\n rack,\n}: Pick<\n Node,\n | 'alertCount'\n | 'banned'\n | 'banMessage'\n | 'dataCenter'\n | 'decommissioned'\n | 'decommissionedMessage'\n | 'disableJobs'\n | 'disableWriteSession'\n | 'disableTabletCells'\n | 'full'\n | 'lastSeenTime'\n | 'maintenanceRequests'\n | 'state'\n | 'rack'\n>): Array<MetaTableItem> {\n const stateText = hammer.format['FirstUppercase'](state);\n const stateTheme = getStateTheme(state);\n\n return [\n {\n key: 'state',\n value: <Label theme={stateTheme} type=\"text\" text={stateText} />,\n },\n {\n key: 'rack',\n value: hammer.format['Address'](rack),\n visible: Boolean(rack),\n },\n {\n key: 'banned',\n value: (\n <Label\n text={banMessage || 'True'}\n theme={!banMessage ? 'danger' : 'warning'}\n type=\"text\"\n />\n ),\n visible: Boolean(banned),\n },\n {\n key: 'maintenance',\n value: <MaintenanceRequests requests={maintenanceRequests} />,\n visible: !isEmpty_(maintenanceRequests),\n },\n {\n key: 'decommissioned',\n value: (\n <Label\n text={decommissionedMessage ? decommissionedMessage : 'Decommissioned'}\n theme=\"default\"\n type=\"text\"\n />\n ),\n visible: Boolean(decommissioned),\n },\n {\n key: 'full',\n value: <Label text=\"Full\" theme=\"danger\" type=\"text\" />,\n visible: Boolean(full),\n },\n {\n key: 'alerts',\n value: <Label text={alertCount} theme=\"danger\" type=\"text\" />,\n visible: alertCount! > 0,\n },\n {\n key: 'scheduler_jobs',\n value: renderLabel(disableJobs),\n },\n {\n key: 'write_sessions',\n value: renderLabel(disableWriteSession),\n },\n {\n key: 'tablet_cells',\n value: renderLabel(disableTabletCells),\n },\n {\n key: 'data_center',\n value: dataCenter?.toUpperCase(),\n visible: Boolean(dataCenter),\n },\n {\n key: 'last_seen',\n value: hammer.format['DateTime'](lastSeenTime, {\n format: 'full',\n }),\n },\n ];\n}\n","import React, {Component} from 'react';\nimport {connect, useDispatch} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport {compose} from 'redux';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {Progress} from '@gravity-ui/uikit';\n\nimport Icon from '../../../../../components/Icon/Icon';\nimport Link from '../../../../../components/Link/Link';\nimport Label from '../../../../../components/Label/Label';\nimport Alert from '../../../../../components/Alert/Alert';\nimport Button from '../../../../../components/Button/Button';\nimport Error from '../../../../../components/Error/Error';\nimport MetaTable, {Template} from '../../../../../components/MetaTable/MetaTable';\nimport CollapsibleSection from '../../../../../components/CollapsibleSection/CollapsibleSection';\n\nimport {loadNodeAttributes} from '../../../../../store/actions/components/node/node';\nimport {getSortedItems} from '../../../../../store/selectors/components/nodes/node-card';\n\nimport {nodeSelector} from '../../../../../store/selectors/components/node/node';\nimport {getCluster, getCurrentClusterConfig} from '../../../../../store/selectors/global';\nimport hammer from '../../../../../common/hammer';\nimport NodeCpuAndMemory, {\n hasCpuAndMemoryMeta,\n} from '../../../../../pages/components/tabs/node/NodeCpuAndMemory/NodeCpuAndMemory';\nimport NodeResources, {\n hasResourcesMeta,\n} from '../../../../../pages/components/tabs/node/NodeResources/NodeResources';\nimport NodeStorage, {\n hasStorageMeta,\n} from '../../../../../pages/components/tabs/node/NodeStorage/NodeStorage';\nimport NodeTabletSlots from '../../../../../pages/components/tabs/node/NodeTabletSlots/NodeTabletSlots';\nimport {useUpdater} from '../../../../../hooks/use-updater';\n\nimport withSplit from '../../../../../hocs/withSplit';\nimport UIFactory from '../../../../../UIFactory';\nimport ClipboardButton from '../../../../../components/ClipboardButton/ClipboardButton';\nimport {makeComponentsNodesUrl} from '../../../../../utils/app-url';\nimport {getNodeMetaItems} from '../../../../../utils/components/nodes/node-meta-items';\n\nimport './NodeCard.scss';\n\nconst block = cn('node-card');\n\nexport const nodeProps = PropTypes.shape({\n locations: PropTypes.arrayOf(\n PropTypes.shape({\n low_watermark_space: PropTypes.number.isRequired,\n available_space: PropTypes.number.isRequired,\n session_count: PropTypes.number.isRequired,\n chunk_count: PropTypes.number.isRequired,\n used_space: PropTypes.number.isRequired,\n throttling_writes: PropTypes.bool.isRequired,\n throttling_reads: PropTypes.bool.isRequired,\n enabled: PropTypes.bool.isRequired,\n sick: PropTypes.bool.isRequired,\n full: PropTypes.bool.isRequired,\n medium_name: PropTypes.string.isRequired,\n location_uuid: PropTypes.string.isRequired,\n }),\n ),\n tabletSlots: PropTypes.shape({\n byState: PropTypes.object.isRequired,\n raw: PropTypes.array.isRequired,\n }),\n host: PropTypes.string.isRequired,\n alerts: PropTypes.arrayOf(PropTypes.object),\n banned: PropTypes.bool.isRequired,\n disableJobs: PropTypes.bool.isRequired,\n disableTabletCells: PropTypes.bool.isRequired,\n disableWriteSession: PropTypes.bool.isRequired,\n});\n\nfunction NodeCardUpdater({host}) {\n const dispatch = useDispatch();\n\n const updateFn = React.useCallback(() => {\n dispatch(loadNodeAttributes(host));\n }, [dispatch, host]);\n\n useUpdater(updateFn, {timeout: 15 * 1000, onlyOnce: !host});\n return null;\n}\n\nclass NodeCard extends Component {\n static propTypes = {\n // from parent\n handleClose: PropTypes.func.isRequired,\n handleKeyDown: PropTypes.func,\n // from connect\n node: nodeProps,\n tabletSlots: PropTypes.array,\n loadNodeAttributes: PropTypes.func.isRequired,\n };\n\n componentWillUnmount() {\n this.props.handleClose();\n }\n\n renderTop() {\n const {clusterConfig} = this.props;\n const {physicalHost, host} = this.props.node;\n return UIFactory.renderComponentsNodeCardTop({host, physicalHost, clusterConfig});\n }\n\n renderLocation(location, index) {\n return (\n <div className={block('location')} key={index}>\n <MetaTable\n items={[\n {\n key: 'uuid',\n value: (\n <span>\n {location.location_uuid}\n \n <ClipboardButton\n view=\"flat-secondary\"\n text={location.location_uuid}\n size=\"s\"\n />\n </span>\n ),\n },\n {key: 'location number', value: index + 1},\n {key: 'enabled', value: location.enabled.toString()},\n {key: 'full', value: location.full.toString()},\n {key: 'medium name', value: location.medium_name},\n {key: 'sessions', value: location.session_count},\n {\n key: 'chunks',\n value: hammer.format['Number'](location.chunk_count),\n },\n {\n key: 'used space',\n value: (\n <Progress\n value={location.locationProgress}\n text={location.locationText}\n theme=\"success\"\n />\n ),\n },\n {\n key: 'available space',\n value: (\n <Template.FormattedValue\n value={location.available_space}\n format=\"Bytes\"\n />\n ),\n },\n {\n key: 'watermark space',\n value: (\n <Template.FormattedValue\n value={location.low_watermark_space}\n format=\"Bytes\"\n />\n ),\n },\n ]}\n />\n </div>\n );\n }\n\n renderLocations() {\n const {locations} = this.props.node;\n\n return (\n locations && (\n <CollapsibleSection\n size=\"s\"\n name=\"Locations\"\n className={block('locations')}\n collapsed\n >\n {map_(locations, (location, index) => this.renderLocation(location, index))}\n </CollapsibleSection>\n )\n );\n }\n\n renderAlerts() {\n const {alerts} = this.props.node;\n\n return (\n alerts?.length > 0 && (\n <CollapsibleSection size=\"s\" name=\"Alerts\" className={block('alerts')} collapsed>\n {map_(alerts, (alert) => (\n <Alert key={alert.message} error={alert} />\n ))}\n </CollapsibleSection>\n )\n );\n }\n\n renderTabletSlots() {\n const {tabletSlots} = this.props;\n\n return (\n tabletSlots.length > 0 && (\n <CollapsibleSection size=\"s\" name=\"Tablet slots\" collapsed={false}>\n <NodeTabletSlots tabletSlots={tabletSlots} />\n </CollapsibleSection>\n )\n );\n }\n\n renderDefault() {\n const {systemTags, userTags} = this.props.node;\n\n return (\n <CollapsibleSection size=\"s\" name=\"Default\" className={block('default')}>\n <MetaTable\n items={[\n {\n key: 'system_tags',\n value: map_(systemTags, (tag) => <Label key={tag} text={tag} />),\n visible: systemTags?.length > 0,\n },\n {\n key: 'user_tags',\n value: map_(userTags, (tag) => <Label key={tag} text={tag} />),\n visible: userTags?.length > 0,\n },\n ...getNodeMetaItems(this.props.node),\n ]}\n />\n </CollapsibleSection>\n );\n }\n\n renderStorage() {\n const {node} = this.props;\n const hasMeta = hasStorageMeta(node);\n\n return (\n hasMeta && (\n <CollapsibleSection size=\"s\" name=\"Storage\" className={block('storage')} collapsed>\n <NodeStorage {...node} />\n </CollapsibleSection>\n )\n );\n }\n\n renderCpuAndMemory() {\n const {node} = this.props;\n const hasMeta = hasCpuAndMemoryMeta(node);\n\n return (\n hasMeta && (\n <CollapsibleSection\n size=\"s\"\n name=\"CPU and memory\"\n className={block('cpu')}\n collapsed\n >\n <NodeCpuAndMemory {...{node}} />\n </CollapsibleSection>\n )\n );\n }\n\n renderResources() {\n const {node} = this.props;\n const hasMeta = hasResourcesMeta(node);\n\n return (\n hasMeta && (\n <CollapsibleSection\n size=\"s\"\n name=\"Resources\"\n className={block('resources')}\n collapsed\n >\n <NodeResources {...node} />\n </CollapsibleSection>\n )\n );\n }\n\n renderCard() {\n const {cluster, handleClose, handleKeyDown, errorData, node} = this.props;\n\n return (\n <div className={block()} onKeyDown={handleKeyDown} tabIndex={-1}>\n <div className={block('header')}>\n <Link\n routed\n url={makeComponentsNodesUrl({cluster, host: node?.host})}\n className={block('node')}\n >\n {node?.host}\n </Link>\n\n <Button view=\"flat-secondary\" size=\"m\" onClick={handleClose}>\n <Icon awesome=\"times\" face={'light'} />\n </Button>\n </div>\n\n {errorData && <Error error={errorData} />}\n\n {Boolean(node) && (\n <React.Fragment>\n {this.renderTop()}\n {this.renderDefault()}\n {this.renderAlerts()}\n {this.renderLocations()}\n {this.renderTabletSlots()}\n {this.renderCpuAndMemory()}\n {this.renderStorage()}\n {this.renderResources()}\n </React.Fragment>\n )}\n </div>\n );\n }\n\n render() {\n return (\n <React.Fragment>\n <NodeCardUpdater host={this.props.host} />\n {this.renderCard()}\n </React.Fragment>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {node, loaded, error, errorData} = nodeSelector(state);\n const cluster = getCluster(state);\n\n return {\n cluster,\n error,\n errorData,\n loaded,\n node,\n tabletSlots: node && getSortedItems(state, {node}),\n clusterConfig: getCurrentClusterConfig(state),\n };\n};\n\nconst mapDispatchToProps = {\n loadNodeAttributes,\n};\n\nexport default compose(connect(mapStateToProps, mapDispatchToProps), withSplit)(NodeCard);\n","import React from 'react';\nimport {Sticky, StickyContainer} from 'react-sticky';\nimport {ConnectedProps, connect, useDispatch, useSelector} from 'react-redux';\nimport hammer from '../../../../../common/hammer';\nimport {compose} from 'redux';\nimport cn from 'bem-cn-lite';\nimport memoize_ from 'lodash/memoize';\nimport filter_ from 'lodash/filter';\nimport reduce_ from 'lodash/reduce';\nimport map_ from 'lodash/map';\nimport includes_ from 'lodash/includes';\n\nimport ColumnSelector from '../../../../../components/ColumnSelector/ColumnSelector';\nimport ElementsTable from '../../../../../components/ElementsTable/ElementsTable';\nimport Radiobutton from '../../../../../components/RadioButton/RadioButton';\nimport TableInfo from '../../../../../pages/components/TableInfo/TableInfo';\nimport Dropdown from '../../../../../components/Dropdown/Dropdown';\nimport Button from '../../../../../components/Button/Button';\nimport Filter from '../../../../../components/Filter/Filter';\nimport Icon from '../../../../../components/Icon/Icon';\nimport Loader from '../../../../../components/Loader/Loader';\n\nimport LoadDataHandler from '../../../../../components/LoadDataHandler/LoadDataHandler';\nimport ErrorBoundary from '../../../../../components/ErrorBoundary/ErrorBoundary';\nimport FiltersPresets from '../FilterPresets/FiltersPresets';\nimport SetupModal from '../SetupModal/SetupModal';\nimport NodeCard from '../NodeCard/NodeCard';\n\nimport {ComponentsNodeTypeSelector} from '../../../../../pages/system/Nodes/NodeTypeSelector';\n\nimport {\n getComponentNodesFiltersCount,\n getComponentNodesTableProps,\n getComponentsNodesNodeTypes,\n getRequiredAttributes,\n getVisibleNodes,\n} from '../../../../../store/selectors/components/nodes/nodes';\nimport {getSelectedColumns} from '../../../../../store/selectors/settings';\nimport {getSettingsEnableSideBar} from '../../../../../store/selectors/settings-ts';\nimport {defaultColumns} from '../../../../../pages/components/tabs/nodes/tables';\nimport withVisible, {WithVisibleProps} from '../../../../../hocs/withVisible';\nimport {useUpdaterWithMemoizedParams} from '../../../../../hooks/use-updater';\nimport {isPaneSplit} from '../../../../../utils';\nimport {\n changeContentMode,\n changeHostFilter,\n getNodes,\n handleColumnsChange,\n} from '../../../../../store/actions/components/nodes/nodes';\nimport type {NodesState} from '../../../../../store/reducers/components/nodes/nodes/nodes';\n\nimport {mergeScreen, splitScreen as splitScreenAction} from '../../../../../store/actions/global';\nimport {HEADER_HEIGHT, KeyCode} from '../../../../../constants/index';\nimport {\n CONTENT_MODE,\n CONTENT_MODE_ITEMS,\n SPLIT_TYPE,\n} from '../../../../../constants/components/nodes/nodes';\nimport {RootState} from '../../../../../store/reducers';\n\nimport {NodeMaintenanceModal} from '../../../NodeMaintenanceModal/NodeMaintenanceModal';\n\nimport './Nodes.scss';\n\nconst block = cn('components-nodes');\n\ntype ReduxProps = ConnectedProps<typeof connector>;\n\ntype State = {\n preset: string;\n activeNodeHost?: string;\n selectedColumns: ReduxProps['selectedColumns'];\n nodes: Array<unknown>;\n};\n\nfunction NodesUpdater() {\n const dispatch = useDispatch();\n\n const attributes = useSelector(getRequiredAttributes);\n const nodeTypes = useSelector(getComponentsNodesNodeTypes);\n\n const updateFn = React.useCallback(\n (...args: Parameters<typeof getNodes>) => {\n dispatch(getNodes(...args));\n },\n [dispatch],\n );\n\n useUpdaterWithMemoizedParams(updateFn, undefined, {attributes, nodeTypes});\n\n return null;\n}\n\nclass Nodes extends React.Component<ReduxProps & WithVisibleProps, State> {\n state: State = {\n preset: '',\n activeNodeHost: undefined,\n selectedColumns: this.props.selectedColumns,\n nodes: [],\n };\n\n get allColumns() {\n const {nodesTableProps} = this.props;\n const {selectedColumns} = this.state;\n\n const columns = reduce_(\n nodesTableProps.columns.items,\n (acc, colInfo = {}, key) => {\n const hidden = 'hidden' in colInfo && colInfo.hidden;\n if (!hidden && key !== 'actions') {\n acc.push(key);\n }\n return acc;\n },\n [] as Array<string>,\n );\n\n return map_(columns, (column) => ({\n name: column,\n checked: includes_(selectedColumns, column),\n caption: hammer.format['ReadableField'](column),\n }));\n }\n\n get selectedIndex() {\n const {nodes, splitScreen} = this.props;\n const {activeNodeHost} = this.state;\n\n const hasSplit = isPaneSplit(splitScreen, SPLIT_TYPE);\n\n return hasSplit ? this.getSelectedIndex(activeNodeHost, nodes) : -1;\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n getSelectedIndex = memoize_(\n (activeNodeHost: State['activeNodeHost'], nodes: ReduxProps['nodes'] = []) =>\n nodes.findIndex((node) => activeNodeHost === node.host),\n );\n\n handlePresetChange = ({name}: {name: string}) => this.setState({preset: name});\n\n handleItemClick = (_node: ReduxProps['nodes'][number], index: number) => {\n const {nodes, sideBarEnabled, splitScreenAction} = this.props;\n\n if (sideBarEnabled) {\n const paneClassNames = [block('node-pane'), block('info-pane')];\n\n this.setState({activeNodeHost: nodes[index].host, nodes});\n splitScreenAction(SPLIT_TYPE, paneClassNames);\n }\n };\n\n handleColumnsChange = ({items}: {items: Nodes['allColumns']}) => {\n const {handleColumnsChange} = this.props;\n\n const selectedItems = filter_(items, (column) => column.checked);\n const selectedColumns = [...map_(selectedItems, (column) => column.name), 'actions'];\n\n this.setState({selectedColumns});\n handleColumnsChange(selectedColumns);\n };\n\n handleKeyDown = (evt: React.KeyboardEvent<HTMLInputElement>) => {\n const key = evt.keyCode;\n\n switch (key) {\n case KeyCode.ARROW_DOWN: {\n evt.preventDefault();\n this.selectNextSuggestion();\n break;\n }\n case KeyCode.ARROW_UP: {\n evt.preventDefault();\n this.selectPrevSuggestion();\n break;\n }\n case KeyCode.ESCAPE: {\n evt.preventDefault();\n this.props.mergeScreen();\n break;\n }\n }\n };\n\n handleSetupModalClose = async () => {\n const {handleClose} = this.props;\n\n await handleClose();\n };\n\n handleContentModeChange = async (value: string) => {\n const {changeContentMode} = this.props;\n\n await changeContentMode(value as NodesState['contentMode']);\n };\n\n selectNextSuggestion() {\n const {nodes} = this.props;\n const index = this.selectedIndex;\n\n if (index >= 0 && index < nodes.length - 1) {\n this.setState({activeNodeHost: nodes[index + 1].host});\n }\n }\n\n selectPrevSuggestion() {\n const {nodes} = this.props;\n const index = this.selectedIndex;\n\n if (index > 0) {\n this.setState({activeNodeHost: nodes[index - 1].host});\n }\n }\n\n renderFilters(sticky: boolean, split: boolean) {\n const {\n changeHostFilter,\n hostFilter,\n contentMode,\n toggleVisible,\n totalItems,\n showingItems,\n filterCount,\n } = this.props;\n const isFiltered = totalItems !== showingItems;\n\n return (\n <div className={block('filters', {sticky, split})}>\n <Filter\n className={block('filters-item')}\n hasClear\n value={hostFilter}\n onChange={changeHostFilter}\n placeholder=\"Filter hosts...\"\n pin={'round-round'}\n />\n\n <Button\n className={block('filters-item')}\n size=\"m\"\n onClick={toggleVisible}\n selected={isFiltered}\n >\n <Icon awesome=\"filter\" /> Filter {filterCount}\n </Button>\n\n <Dropdown\n className={block('filters-item')}\n trigger=\"click\"\n directions={['bottom']}\n button={\n <Button disabled={contentMode !== CONTENT_MODE.CUSTOM} pin={'round-round'}>\n <Icon awesome=\"table\" face=\"light\" />\n Columns\n </Button>\n }\n template={\n <ColumnSelector\n items={this.allColumns}\n onChange={this.handleColumnsChange}\n className={block('custom-column-selector')}\n />\n }\n />\n\n <ComponentsNodeTypeSelector className={block('filters-item')} />\n </div>\n );\n }\n\n renderOverview() {\n const {contentMode, loading, showingItems, splitScreen, totalItems} = this.props;\n const isSplit = isPaneSplit(splitScreen, SPLIT_TYPE);\n\n return (\n <Sticky topOffset={isSplit ? HEADER_HEIGHT * 2 : -HEADER_HEIGHT} relative={isSplit}>\n {(props) => {\n const {isSticky} = props;\n return (\n <div\n className={block('overview', {\n sticky: isSticky,\n split: isSplit,\n })}\n >\n <div className={block('overview-top')}>\n {this.renderFilters(isSticky, isSplit)}\n <div className={block('spacer')} />\n <Loader visible={loading} />\n <TableInfo showingItems={showingItems} totalItems={totalItems} />\n </div>\n\n <div className={block('table-presets')}>\n <Radiobutton\n size=\"m\"\n value={contentMode}\n items={CONTENT_MODE_ITEMS}\n name=\"components-nodes-content-mode\"\n onUpdate={this.handleContentModeChange}\n />\n </div>\n\n <FiltersPresets onChange={this.handlePresetChange} />\n </div>\n );\n }}\n </Sticky>\n );\n }\n\n renderContent() {\n const {contentMode, nodes, splitScreen, initialLoading, mergeScreen, nodesTableProps} =\n this.props;\n const {activeNodeHost, selectedColumns} = this.state;\n\n const hasSplit = isPaneSplit(splitScreen, SPLIT_TYPE);\n\n const columns = {\n ...nodesTableProps.columns,\n sets: {\n ...nodesTableProps.columns.sets,\n custom: {items: selectedColumns},\n },\n mode: contentMode,\n };\n\n return (\n <div className={block('content', {split: hasSplit})}>\n <ElementsTable\n {...nodesTableProps}\n onItemClick={this.handleItemClick}\n isLoading={initialLoading}\n columns={columns}\n items={nodes}\n css={block()}\n templates={nodesTableProps.templates}\n selectedIndex={this.selectedIndex}\n />\n\n {hasSplit && (\n <NodeCard\n host={activeNodeHost}\n handleClose={mergeScreen}\n handleKeyDown={this.handleKeyDown}\n />\n )}\n </div>\n );\n }\n\n render() {\n const {visible} = this.props;\n const {preset} = this.state;\n\n return (\n <ErrorBoundary>\n <NodesUpdater />\n <LoadDataHandler {...this.props}>\n <div className={block()} onKeyDown={this.handleKeyDown} tabIndex={-1}>\n <StickyContainer>\n {this.renderOverview()}\n {this.renderContent()}\n </StickyContainer>\n\n <SetupModal\n key={preset}\n visible={visible}\n handleClose={this.handleSetupModalClose}\n />\n\n <NodeMaintenanceModal />\n </div>\n </LoadDataHandler>\n </ErrorBoundary>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {splitScreen} = state.global;\n const {contentMode, nodes, loading, loaded, error, errorData, hostFilter} =\n state.components.nodes.nodes;\n\n const visibleNodes = getVisibleNodes(state);\n const selectedColumns = getSelectedColumns(state) || defaultColumns;\n const initialLoading = loading && !loaded;\n\n const nodesTableProps = getComponentNodesTableProps(state);\n\n const sideBarEnabled = getSettingsEnableSideBar(state);\n\n return {\n loading,\n loaded,\n error,\n errorData,\n\n nodes: visibleNodes,\n totalItems: nodes.length,\n showingItems: visibleNodes.length,\n selectedColumns,\n hostFilter,\n contentMode,\n splitScreen,\n initialLoading,\n nodesTableProps,\n sideBarEnabled,\n nodeTypes: getComponentsNodesNodeTypes(state),\n filterCount: getComponentNodesFiltersCount(state),\n };\n};\n\nconst mapDispatchToProps = {\n changeContentMode,\n splitScreenAction,\n changeHostFilter,\n mergeScreen,\n handleColumnsChange,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default compose(connector, withVisible)(Nodes);\n","// @ts-expect-error\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport CancelHelper from '../../../utils/cancel-helper';\nimport {\n CLOSE_SHARD_NAME_EDITOR,\n GET_SHARDS,\n OPEN_SHARD_NAME_EDITOR,\n SET_SHARD_NAME,\n} from '../../../constants/components/shards';\nimport {YTApiId, ytApiV3Id} from '../../../rum/rum-wrap-api';\nimport type {AppThunkDispatch} from '../../../store/thunkDispatch';\nimport type {ShardsAction} from '../../../store/reducers/components/shards';\n\nconst requests = new CancelHelper();\n\nexport function getShards() {\n return (dispatch: AppThunkDispatch<ShardsAction>) => {\n dispatch({type: GET_SHARDS.REQUEST});\n\n requests.removeAllRequests();\n return ytApiV3Id\n .list(YTApiId.componentsShards, {\n parameters: {\n path: '//sys/cypress_shards',\n attributes: ['id', 'name', 'total_account_statistics'],\n },\n cancellation: requests.saveCancelToken,\n })\n .then((shards) => {\n dispatch({\n type: GET_SHARDS.SUCCESS,\n data: {shards},\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_SHARDS.CANCELLED});\n } else {\n dispatch({\n type: GET_SHARDS.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function setShardName(id: string, name: string) {\n return (dispatch: AppThunkDispatch<ShardsAction>) => {\n dispatch({type: SET_SHARD_NAME.REQUEST});\n\n return yt.v3\n .set({path: `//sys/cypress_shards/${id}/@name`}, name)\n .then(() => {\n dispatch({type: SET_SHARD_NAME.SUCCESS});\n dispatch(getShards());\n dispatch(closeNameEditor());\n })\n .catch((error: unknown) => {\n dispatch({\n type: SET_SHARD_NAME.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nexport function openNameEditor(id: string) {\n return {\n type: OPEN_SHARD_NAME_EDITOR,\n data: {id},\n };\n}\n\nexport function closeNameEditor() {\n return {\n type: CLOSE_SHARD_NAME_EDITOR,\n } as const;\n}\n\nexport function abortAllRequests() {\n return (dispatch: AppThunkDispatch<ShardsAction>) => {\n requests.removeAllRequests();\n dispatch({type: GET_SHARDS.CANCELLED});\n };\n}\n","import React, {Fragment, useState} from 'react';\nimport {ResolveThunks, connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport {TextInput} from '@gravity-ui/uikit';\nimport Button from '../../../../components/Button/Button';\nimport Modal from '../../../../components/Modal/Modal';\nimport Error from '../../../../components/Error/Error';\nimport Icon from '../../../../components/Icon/Icon';\n\nimport {\n closeNameEditor,\n openNameEditor,\n setShardName,\n} from '../../../../store/actions/components/shards';\nimport type {RootState} from '../../../../store/reducers';\n\nName.propTypes = {\n // from parent\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n className: PropTypes.string.isRequired,\n\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n visible: PropTypes.bool.isRequired,\n editId: PropTypes.string.isRequired,\n\n setShardName: PropTypes.func.isRequired,\n openNameEditor: PropTypes.func.isRequired,\n closeNameEditor: PropTypes.func.isRequired,\n};\n\ntype OwnProps = {\n id: string;\n name: string;\n className: string;\n};\n\ntype StateProps = ReturnType<typeof mapStateToProps>;\n\ntype DispatchProps = ResolveThunks<typeof mapDispatchToProps>;\n\ntype NameProps = OwnProps & StateProps & DispatchProps;\n\nfunction Name({\n name: initialName,\n id,\n editId,\n className,\n visible,\n openNameEditor,\n closeNameEditor,\n setShardName,\n loading,\n error,\n errorData,\n}: NameProps) {\n const [name, changeName] = useState(initialName);\n const handleConfirm = () => setShardName(id, name);\n const handleOpen = () => openNameEditor(id);\n const isConfirmDisabled = () => name === initialName;\n\n return (\n <div className={className}>\n {initialName}\n <Button size=\"m\" view=\"flat-secondary\" onClick={handleOpen} title=\"Edit name\">\n <Icon awesome=\"pencil\" />\n </Button>\n\n {visible && id === editId && (\n <Modal\n isConfirmDisabled={isConfirmDisabled}\n onConfirm={handleConfirm}\n onCancel={closeNameEditor}\n loading={loading}\n visible={visible}\n title=\"Edit name\"\n content={\n <Fragment>\n <TextInput\n size=\"m\"\n value={name}\n onUpdate={changeName}\n placeholder=\"Enter name...\"\n />\n {error && <Error error={errorData} />}\n </Fragment>\n }\n />\n )}\n </div>\n );\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {nameId, nameVisible, nameLoading, nameLoaded, nameError, nameErrorData} =\n state.components.shards;\n\n return {\n loading: nameLoading,\n loaded: nameLoaded,\n error: nameError,\n errorData: nameErrorData,\n visible: nameVisible,\n editId: nameId,\n };\n};\n\nconst mapDispatchToProps = {\n setShardName,\n openNameEditor,\n closeNameEditor,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Name);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport hammer from '../../../../common/hammer';\nimport {ResolveThunks, connect} from 'react-redux';\n\nimport Button from '../../../../components/Button/Button';\n\nimport {openAttributesModal} from '../../../../store/actions/modals/attributes-modal';\n\nNodeCount.propTypes = {\n // from parent\n count: PropTypes.number.isRequired,\n className: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n\n // from connect\n openAttributesModal: PropTypes.func.isRequired,\n};\n\ntype OwnProps = {\n count: number;\n className: string;\n id: string;\n name: string;\n};\n\ntype DispatchProps = ResolveThunks<typeof mapDispatchToProps>;\n\ntype NodeCountProps = OwnProps & DispatchProps;\n\nfunction NodeCount({id, name, count, className, openAttributesModal}: NodeCountProps) {\n const handleClick = () =>\n openAttributesModal({\n title: name,\n path: `//sys/cypress_shards/${id}`,\n attribute: 'account_statistics',\n });\n\n return (\n <div className={className}>\n {hammer.format['Number'](count)}\n <Button\n size=\"m\"\n view=\"flat-secondary\"\n onClick={handleClick}\n title=\"view account statistics\"\n >\n View\n </Button>\n </div>\n );\n}\n\nconst mapDispatchToProps = {openAttributesModal};\n\nexport default connect(null, mapDispatchToProps)(NodeCount);\n","import React, {useEffect} from 'react';\nimport {ResolveThunks, connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport {FormattedId} from '../../../../components/formatters';\n\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport {Loader} from '@gravity-ui/uikit';\n\nimport Name from './Name';\nimport NodeCount from './NodeCount';\n\nimport {abortAllRequests, getShards} from '../../../../store/actions/components/shards';\nimport type {Shard} from '../../../../store/reducers/components/shards';\n\nimport './Shards.scss';\nimport {getCluster} from '../../../../store/selectors/global';\nimport type {RootState} from '../../../../store/reducers';\n\nconst block = cn('components-shards');\n\nconst tableSettings = {\n columns: {\n items: {\n id: {\n align: 'left',\n },\n name: {\n align: 'left',\n },\n account_statistics: {\n align: 'left',\n },\n node_count: {\n align: 'left',\n caption: 'Node count',\n },\n },\n sets: {\n default: {\n items: ['id', 'name', 'node_count'],\n },\n },\n mode: 'default',\n },\n theme: 'light',\n striped: false,\n cssHover: true,\n css: block('table'),\n computeKey(item: Shard) {\n return item.id;\n },\n};\n\ntype OwnProps = {\n id: string;\n name: string;\n className: string;\n};\n\ntype StateProps = ReturnType<typeof mapStateToProps>;\n\ntype DispatchProps = ResolveThunks<typeof mapDispatchToProps>;\n\ntype ShardsProps = OwnProps & StateProps & DispatchProps;\n\nfunction Shards(props: ShardsProps) {\n const {cluster, getShards, abortAllRequests} = props;\n useEffect(() => {\n getShards();\n return abortAllRequests;\n }, [cluster]);\n\n const idTemplate = (item: Shard) => <FormattedId id={item.id} />;\n const nameTemplate = (item: Shard) => (\n <Name className={block('name')} name={item.name} id={item.id} />\n );\n const nodeCountTemplate = (item: Shard) => (\n <NodeCount\n count={item['total_account_statistics']['node_count']}\n className={block('node-count')}\n name={item.name}\n id={item.id}\n />\n );\n\n const templates = {\n id: idTemplate,\n name: nameTemplate,\n node_count: nodeCountTemplate,\n };\n\n const {loading, loaded, error, errorData, shards} = props;\n const initialLoading = loading && !loaded;\n\n return (\n <ErrorBoundary>\n <LoadDataHandler loaded={loading} error={error} errorData={errorData}>\n <div className={block({loading: initialLoading})}>\n {initialLoading ? (\n <Loader />\n ) : (\n <ElementsTable\n {...tableSettings}\n templates={templates}\n items={shards}\n css={block()}\n />\n )}\n </div>\n </LoadDataHandler>\n </ErrorBoundary>\n );\n}\n\nShards.propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n shards: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n total_account_statistics: PropTypes.shape({\n node_count: PropTypes.number.isRequired,\n }).isRequired,\n }),\n ).isRequired,\n\n getShards: PropTypes.func.isRequired,\n abortAllRequests: PropTypes.func.isRequired,\n cluster: PropTypes.string.isRequired,\n};\n\nconst mapStateToProps = (state: RootState) => {\n const {loading, loaded, error, errorData, shards} = state.components.shards;\n\n return {\n loading,\n loaded,\n error,\n errorData,\n shards,\n cluster: getCluster(state),\n };\n};\n\nconst mapDispatchToProps = {\n getShards,\n abortAllRequests,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Shards);\n","import {useSelector} from 'react-redux';\nimport React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport CollapsibleSection from '../../../../../components/CollapsibleSection/CollapsibleSection';\nimport NodeCpuAndMemory, {\n hasCpuAndMemoryMeta,\n} from '../../../../../pages/components/tabs/node/NodeCpuAndMemory/NodeCpuAndMemory';\nimport NodeResources, {\n hasResourcesMeta,\n} from '../../../../../pages/components/tabs/node/NodeResources/NodeResources';\nimport NodeStorage, {\n hasStorageMeta,\n} from '../../../../../pages/components/tabs/node/NodeStorage/NodeStorage';\nimport {nodeSelector} from '../../../../../store/selectors/components/node/node';\n\nimport './NodeGeneralTab.scss';\nimport Alert from '../../../../../components/Alert/Alert';\n\nconst block = cn('node-general');\n\nfunction NodeGeneralTab(): ReturnType<React.VFC> {\n const {node} = useSelector(nodeSelector);\n\n if (!node) {\n return null;\n }\n\n if (node.state === 'offline') {\n return <Alert message=\"Node is Offline\" />;\n }\n\n return (\n <>\n {hasCpuAndMemoryMeta(node) && (\n <CollapsibleSection\n size=\"s\"\n name=\"Compute Resources\"\n className={block('cpu')}\n collapsed={false}\n >\n <NodeCpuAndMemory {...{node}} />\n </CollapsibleSection>\n )}\n {hasStorageMeta(node) && (\n <CollapsibleSection\n size=\"s\"\n name=\"Storage\"\n className={block('storage')}\n collapsed={false}\n >\n <NodeStorage {...node} />\n </CollapsibleSection>\n )}\n {hasResourcesMeta(node) && (\n <CollapsibleSection\n size=\"s\"\n name=\"Slot Resources\"\n className={block('resources')}\n collapsed={false}\n >\n <NodeResources {...node} />\n </CollapsibleSection>\n )}\n </>\n );\n}\n\nexport default React.memo(NodeGeneralTab);\n","import forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport max_ from 'lodash/max';\nimport sum_ from 'lodash/sum';\nimport toArray_ from 'lodash/toArray';\n\nimport type {RootState} from '../../../../store/reducers';\nimport {createSelector} from 'reselect';\nimport {NodeMemoryUsagePreload} from '../../../../types/components/node';\nimport {\n TreeNode,\n filterTree,\n flattenTree,\n prepareTree,\n sortTree,\n} from '../../../../common/hammer/tree-list';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {SortState} from '../../../../types';\nimport {orderTypeToOldSortState} from '../../../../utils/sort-helpers';\n\nexport const nodeMemorySelector = (state: RootState) => state.components.node.memory;\n\nexport const getNodeMemoryLoaded = (state: RootState) => state.components.node.memory.loaded;\n\nexport const getNodeMemoryLoading = (state: RootState) => state.components.node.memory.loading;\n\nexport const getNodeMemoryError = (state: RootState) => state.components.node.memory.error;\n\nexport const getNodeMemoryViewMode = (state: RootState) => state.components.node.memory.viewMode;\n\nexport const getNodeMemoryFilter = (state: RootState) => state.components.node.memory.filter;\n\nexport const getNodeMemoryStateHost = (state: RootState) => state.components.node.memory.host;\n\nexport const getNodeMemorySortOrder = (state: RootState) => state.components.node.memory.sortOrder;\n\nexport const getNodeMemoryCollapsedBundles = (state: RootState) =>\n state.components.node.memory.collapsedBundles;\n\nconst getNodeMemoryUsageTotal = (state: RootState) => state.components.node.memory.memory?.total;\n\nconst getNodeMemoryUsageBundles = (state: RootState) =>\n state.components.node.memory.memory?.bundles;\n\nconst getNodeMemoryUsageTables = (state: RootState) => state.components.node.memory.memory?.tables;\n\nexport const getNodeMemoryUsageTablesSortOrder = (state: RootState) =>\n state.components.node.memory.tablesSortOrder;\n\nexport const getNodeMemoryUsageTotalStorePreload = createSelector(\n [getNodeMemoryUsageTotal],\n calculateStorePreload,\n);\n\nexport const getNodeMemoryUsageTotalTableStatic = (state: RootState) =>\n state.components.node.memory.memory?.total.tablet_static;\n\nexport const getNodeMemoryUsageTotalRowCache = (state: RootState) =>\n state.components.node.memory.memory?.total.row_cache;\n\nfunction calculateStorePreload(total?: NodeMemoryUsagePreload) {\n const {\n preload_store_count: allCount = NaN,\n preload_pending_store_count: pending = NaN,\n preload_failed_store_count: failed = NaN,\n } = total || {};\n\n return {\n allCount,\n pending,\n failed,\n completed: allCount - pending - failed,\n };\n}\n\nexport const getNodeMemoryUsageTotalTabletDynamic = createSelector(\n [getNodeMemoryUsageTotal],\n (total) => {\n const {active, passive, backing, usage, limit, ...others} = total?.tablet_dynamic || {};\n\n return {\n usage,\n limit,\n active,\n backing,\n passive,\n other: !usage ? 0 : usage - sum_([active, passive, backing, ...toArray_(others)]),\n };\n },\n);\n\nexport interface NodeMemoryInfo {\n name: string;\n parent: string;\n storePreload: ReturnType<typeof calculateStorePreload>;\n rowCache: number;\n rowCacheLimit: number;\n tabletStatic: number;\n tabletStaticLimit: number;\n tabletDynamic: Record<string, number>;\n tabletDynamicSum: number;\n isBundle?: boolean;\n isCollapsed?: boolean;\n url: string;\n}\n\nconst getNodeMemoryUsageBundlesByName = createSelector(\n [getNodeMemoryUsageBundles, getCluster],\n (bundles, cluster) => {\n const itemsByName: Record<string, NodeMemoryInfo> = {};\n\n let maxTabletStatic = 0;\n let maxRowCache = 0;\n\n forEach_(bundles, ({total}, bundleName) => {\n const {usage, limit: _ignore, ...rest} = total.tablet_dynamic;\n const tmp = (itemsByName[bundleName] = {\n name: bundleName,\n parent: '<Root>',\n storePreload: calculateStorePreload(total),\n rowCache: total.row_cache.usage,\n rowCacheLimit: 0,\n tabletStatic: total.tablet_static.usage,\n tabletStaticLimit: 0,\n tabletDynamic: total.tablet_dynamic,\n tabletDynamicSum: usage ?? sum_(toArray_(rest)),\n isBundle: true,\n url: `/${cluster}/tablet_cell_bundles/tablet_cells?activeBundle=${bundleName}`,\n });\n\n maxTabletStatic = max_([maxTabletStatic, tmp.tabletStatic])!;\n maxRowCache = max_([maxRowCache, tmp.rowCache])!;\n });\n\n forEach_(itemsByName, (item) => {\n item.tabletStaticLimit = maxTabletStatic;\n item.rowCacheLimit = maxRowCache;\n });\n\n return itemsByName;\n },\n);\n\nconst getNodeMemoryUsageBundlesTreeRoot = createSelector(\n [getNodeMemoryUsageBundles, getNodeMemoryUsageBundlesByName, getCluster],\n (bundles, bundlesInfo, cluster) => {\n const itemsByName: Record<string, NodeMemoryInfo> = {...bundlesInfo};\n\n forEach_(bundles, ({cells}, bundleName) => {\n const bundle = itemsByName[bundleName] || {};\n forEach_(cells, (item, cellName) => {\n itemsByName[cellName] = {\n name: cellName,\n parent: bundleName,\n storePreload: calculateStorePreload(item),\n rowCache: item.row_cache.usage,\n rowCacheLimit: bundle.rowCache,\n tabletStatic: item.tablet_static.usage,\n tabletStaticLimit: bundle.tabletStatic,\n tabletDynamic: {\n ...item.tablet_dynamic,\n limit: bundle.tabletDynamicSum,\n },\n tabletDynamicSum: sum_(toArray_(item.tablet_dynamic)),\n url: `/${cluster}/tablet_cell_bundles/tablet_cells?id=${cellName}&activeBundle=${bundleName}`,\n };\n });\n });\n\n const root = prepareTree(itemsByName, (item) => item.parent)['<Root>'];\n return root;\n },\n);\n\nexport const getNodeMemoryUsageBundlesTreeRootFiltered = createSelector(\n [getNodeMemoryUsageBundlesTreeRoot, getNodeMemoryCollapsedBundles, getNodeMemoryFilter],\n (root, collapsedBundles, filter) => {\n const collapsed = new Set(collapsedBundles);\n let res: typeof root = {...root};\n if (filter) {\n res = filterTree(\n res,\n (item) => {\n return item.name.indexOf(filter) !== -1;\n },\n false,\n );\n } else {\n res.children = map_(res.children, (item) => {\n if (!collapsed.has(item.name)) {\n return item;\n } else {\n return {\n ...item,\n children: [],\n attributes: {\n ...item.attributes,\n isCollapsed: true,\n },\n };\n }\n });\n }\n return res;\n },\n);\n\nexport const getNodeMemoryUsageBundlesItems = createSelector(\n [getNodeMemoryUsageBundlesTreeRootFiltered, getNodeMemorySortOrder],\n (root, [sortOrder]) => {\n if (!root) {\n return [];\n }\n sortTreeInPlace(root, sortOrder);\n return flattenTree(root);\n },\n);\n\nfunction sortTreeInPlace(root: TreeNode<NodeMemoryInfo, NodeMemoryInfo>, sortOrder?: SortState) {\n const {column, order} = sortOrder || {};\n if (column && order) {\n sortTree(root, orderTypeToOldSortState(column, order), {\n name: {\n sort(item) {\n return item.attributes.name;\n },\n sortWithUndefined: true,\n },\n rowCache: {\n sort(item) {\n return item.attributes.rowCache;\n },\n sortWithUndefined: true,\n },\n tabletStatic: {\n sort(item) {\n return item.attributes.tabletStatic;\n },\n sortWithUndefined: true,\n },\n tabletDynamic: {\n sort(item) {\n return item.attributes.tabletDynamicSum;\n },\n sortWithUndefined: true,\n },\n storePreload: {\n sort(item) {\n return item.attributes.storePreload.allCount;\n },\n sortWithUndefined: true,\n },\n });\n }\n}\n\nconst allowBundlesForTables = createSelector([getNodeMemoryUsageTables], (tables) => {\n const [first] = toArray_(tables);\n return first?.tablet_cell_bundle !== undefined;\n});\n\nconst getNodeMemoryUsageTablesAndBundlesByName = createSelector(\n [allowBundlesForTables, getNodeMemoryUsageTables, getCluster, getNodeMemoryUsageBundlesByName],\n (allowBundles, tables, cluster, bundles) => {\n let maxRowCache = 0;\n let maxStatic = 0;\n let maxDynamic = 0;\n\n const tablesByName: Record<string, NodeMemoryInfo> = allowBundles ? {...bundles} : {};\n\n forEach_(tables, (item, name) => {\n const parent = allowBundles ? item.tablet_cell_bundle : '<Root>';\n const bundle = bundles[parent] || {};\n const tmp = (tablesByName[name] = {\n name: name,\n parent,\n\n storePreload: calculateStorePreload(item),\n rowCache: item.row_cache.usage,\n rowCacheLimit: bundle.rowCache,\n tabletStatic: item.tablet_static.usage,\n tabletStaticLimit: bundle.tabletStatic,\n tabletDynamic: {\n ...item.tablet_dynamic,\n limit: bundle.tabletDynamicSum,\n },\n tabletDynamicSum: sum_(toArray_(item.tablet_dynamic)),\n url: `/${cluster}/navigation?path=${encodeURIComponent(name)}`,\n });\n if (!allowBundles) {\n maxDynamic = max_([maxDynamic, tmp.tabletDynamicSum])!;\n maxRowCache = max_([maxRowCache, tmp.rowCache])!;\n maxStatic = max_([maxStatic, tmp.tabletStatic])!;\n }\n });\n\n if (!allowBundles) {\n forEach_(tablesByName, (item) => {\n if (item.isBundle) {\n return;\n }\n\n item.tabletDynamic.limit = maxDynamic;\n item.tabletStaticLimit = maxStatic;\n item.rowCacheLimit = maxRowCache;\n });\n }\n\n return tablesByName;\n },\n);\n\nexport const getNodeMemoryUsageTablesTree = createSelector(\n [getNodeMemoryUsageTablesAndBundlesByName],\n (tablesAndBundles) => {\n const tree = prepareTree(tablesAndBundles, (item) => item.parent);\n\n return tree['<Root>'];\n },\n);\n\nexport const getNodeMemoryUsageTablesFiltered = createSelector(\n [getNodeMemoryUsageTablesTree, getNodeMemoryCollapsedBundles, getNodeMemoryFilter],\n (root, collapsedBundles, filter) => {\n const collapsed = new Set(collapsedBundles);\n let res: typeof root;\n if (filter) {\n res = filterTree(root, (item: TreeNode<NodeMemoryInfo, NodeMemoryInfo>) => {\n return item.name.indexOf(filter) !== -1;\n });\n } else {\n res = {\n ...root,\n children: map_(root?.children, (item) => {\n if (!collapsed.has(item.name)) {\n return item;\n }\n const res: typeof item = {\n ...item,\n attributes: {\n ...item.attributes,\n isCollapsed: true,\n },\n children: [],\n };\n return res;\n }),\n };\n }\n\n return res;\n },\n);\n\nexport const getNodeMemoryUsageTablesItemsSorted = createSelector(\n [getNodeMemoryUsageTablesFiltered, getNodeMemoryUsageTablesSortOrder],\n (root, [sortOrder]) => {\n if (sortOrder && root) {\n sortTreeInPlace(root, sortOrder);\n }\n\n const items = !root ? [] : flattenTree(root);\n\n return items;\n },\n);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {Progress} from '@gravity-ui/uikit';\n\nimport format from '../../../../../common/hammer/format';\n\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\n\nimport {\n getNodeMemoryUsageTotalRowCache,\n getNodeMemoryUsageTotalStorePreload,\n getNodeMemoryUsageTotalTableStatic,\n getNodeMemoryUsageTotalTabletDynamic,\n} from '../../../../../store/selectors/components/node/memory';\nimport {\n STACKED_PROGRESS_BAR_COLORS,\n getProgressBarColorByIndex,\n} from '../../../../../constants/colors';\n\nimport './NodeBundlesTotal.scss';\n\nconst block = cn('node-bundles-total');\n\nconst progressClass = block('progress');\n\nfunction NodeBundlesTotal() {\n const tabletDynamic = useSelector(getNodeMemoryUsageTotalTabletDynamic) || {};\n const tabletStatic = useSelector(getNodeMemoryUsageTotalTableStatic) || {};\n const rowCache = useSelector(getNodeMemoryUsageTotalRowCache) || {};\n const storePreload = useSelector(getNodeMemoryUsageTotalStorePreload);\n\n return (\n <div className={block(null, 'elements-section')}>\n <div className={'elements-heading elements-heading_size_xs'}>Total</div>\n <MetaTable\n items={[\n {\n key: 'Tablet dynamic',\n value: (\n <TabletDynamicTotal data={tabletDynamic} className={progressClass} />\n ),\n className: block('meta-value'),\n },\n {\n key: 'Tablet static',\n value: <UsageLimitProgress {...tabletStatic} className={progressClass} />,\n },\n {\n key: 'Row cache',\n value: <UsageLimitProgress {...rowCache} className={progressClass} />,\n },\n {\n key: 'Store preload',\n value: <StorePreload data={storePreload} className={progressClass} />,\n },\n ]}\n />\n </div>\n );\n}\n\nconst COLORS: Partial<Record<keyof TabletDynamicTotalProps['data'], string>> = {\n active: STACKED_PROGRESS_BAR_COLORS[4],\n backing: STACKED_PROGRESS_BAR_COLORS[7],\n other: STACKED_PROGRESS_BAR_COLORS[2],\n passive: STACKED_PROGRESS_BAR_COLORS[0],\n};\n\ninterface TabletDynamicTotalProps {\n className?: string;\n data: {\n usage?: number;\n limit?: number;\n active?: number;\n backing?: number;\n passive?: number;\n other?: number;\n };\n hideLimit?: boolean;\n limitTooltipTitle?: React.ReactNode;\n}\n\nexport function TabletDynamicTotal(props: TabletDynamicTotalProps) {\n const {\n className,\n data: {usage, limit, ...rest},\n hideLimit,\n limitTooltipTitle,\n } = props;\n\n const {stack, text, content} = React.useMemo(() => {\n let usageSum = 0;\n const stack = map_(rest, (value, key) => {\n usageSum += value || 0;\n const v = (100 * value!) / limit!;\n return {\n value: isNaN(v) ? 0 : v,\n key: key as keyof typeof props.data,\n color: '',\n };\n });\n\n return {\n stack,\n text: hideLimit\n ? format.Bytes(usage ?? usageSum)\n : `${format.Bytes(usage ?? usageSum)} / ${format.Bytes(limit)}`,\n content: (\n <div className={block('progress-tooltip')}>\n {map_(stack, (item, index) => {\n const {key} = item;\n item.color = COLORS[key] ?? getProgressBarColorByIndex(index, 8);\n\n return (\n <React.Fragment key={key}>\n <div\n style={{\n backgroundColor: item.color,\n borderRadius: '50%',\n width: '1em',\n height: '1em',\n }}\n />\n <div>{key}</div>\n <div>{format.Bytes(props.data[key])}</div>\n </React.Fragment>\n );\n })}\n {limitTooltipTitle && (\n <React.Fragment>\n <div />\n <div>{limitTooltipTitle}</div>\n <div>{format.Bytes(props.data.limit)}</div>\n </React.Fragment>\n )}\n </div>\n ),\n };\n }, [props.data]);\n\n return (\n <Tooltip content={content} className={className}>\n <Progress stack={stack} text={text} />\n </Tooltip>\n );\n}\n\nexport function UsageLimitProgress(props: {\n className?: string;\n usage?: number;\n limit?: number;\n hideLimit?: boolean;\n}) {\n const {className, usage, limit, hideLimit} = props;\n const text = hideLimit\n ? format.Bytes(usage)\n : `${format.Bytes(usage)} / ${format.Bytes(limit)}`;\n return (\n <div className={className}>\n <Progress value={((usage || 0) / (limit || 0)) * 100} text={text} theme={'info'} />\n </div>\n );\n}\n\nexport function StorePreload(props: {\n className?: string;\n data: {\n allCount: number;\n pending: number;\n failed: number;\n completed: number;\n };\n}) {\n const {\n className,\n data: {allCount, pending, failed, completed},\n } = props;\n const {stack, text, content} = React.useMemo(() => {\n const stack = [\n {\n value: (completed / allCount) * 100,\n theme: 'success' as const,\n key: 'completed' as const,\n },\n {\n value: (pending / allCount) * 100,\n theme: 'default' as const,\n key: 'pending' as const,\n },\n {\n value: (failed / allCount) * 100,\n theme: 'danger' as const,\n key: 'failed' as const,\n },\n ].filter(({value}) => value > 0);\n return {\n stack,\n text: [completed, allCount].join(' / '),\n content: (\n <div className={block('progress-tooltip')}>\n {map_([...stack, {key: 'allCount' as const, theme: 'info'}], ({key, theme}) => {\n return (\n <React.Fragment key={key}>\n <div\n className={block('color-circle', {\n theme,\n })}\n />\n <div className={block('progress-tooltip-title')}>\n {key === 'allCount' ? 'Total' : key}\n </div>\n <div>{format.Number(props.data[key])}</div>\n </React.Fragment>\n );\n })}\n </div>\n ),\n };\n }, [props.data]);\n\n if (!allCount || isNaN(allCount)) {\n return format.NO_VALUE;\n }\n\n return (\n <Tooltip className={className} content={content} placement={['top', 'bottom']}>\n <Progress stack={stack} text={text} />\n </Tooltip>\n );\n}\n\nexport default React.memo(NodeBundlesTotal);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport reduce_ from 'lodash/reduce';\n\nimport {Column} from '@gravity-ui/react-data-table';\n\nimport {FlatItem} from '../../../../../common/hammer/tree-list';\nimport Link from '../../../../../components/Link/Link';\nimport Icon from '../../../../../components/Icon/Icon';\nimport Button from '../../../../../components/Button/Button';\nimport ColumnHeader from '../../../../../components/ColumnHeader/ColumnHeader';\nimport DataTableYT, {\n DATA_TABLE_YT_SETTINGS,\n} from '../../../../../components/DataTableYT/DataTableYT';\nimport {NodeMemoryInfo} from '../../../../../store/selectors/components/node/memory';\n\nimport {\n StorePreload,\n TabletDynamicTotal,\n UsageLimitProgress,\n} from '../NodeBundlesTotal/NodeBundlesTotal';\nimport {OrderType} from '../../../../../utils/sort-helpers';\nimport {SortState} from '../../../../../types';\nimport {SecondaryBold} from '../../../../../components/Text/Text';\n\nimport './NodeMemoryDetailsTable.scss';\n\nconst block = cn('node-memory-details-table');\n\nconst progressClassName = block('progress');\n\ninterface Props {\n items: Array<FlatItem<NodeMemoryInfo, NodeMemoryInfo>>;\n loading?: boolean;\n loaded?: boolean;\n toggleExpand: (v: Props['items'][0]) => void;\n onSort: (sortOrder: Array<SortState>) => void;\n nameColumnTitle: string;\n sortState: Array<SortState>;\n}\n\nfunction NodeMemoryDetailsTable(props: Props) {\n const {items, loading, loaded, toggleExpand, onSort, nameColumnTitle, sortState} = props;\n\n const toggleSort = React.useCallback((column: string, nextOrder: OrderType) => {\n onSort([{column, order: nextOrder}]);\n }, []);\n\n const sortStateByName = React.useMemo(() => {\n return reduce_(\n sortState,\n (acc, item) => {\n const {column, order} = item;\n if (!column || !order) {\n return acc;\n }\n acc[column] = order;\n return acc;\n },\n {} as Record<string, OrderType>,\n );\n }, [sortState]);\n\n const columns = React.useMemo(() => {\n function headerProps(name: string, title: string) {\n return {\n name,\n header: (\n <ColumnHeader\n onSort={toggleSort}\n column={name}\n title={title}\n order={sortStateByName[name]}\n allowedOrderTypes={['desc', 'asc']}\n />\n ),\n };\n }\n const res: Array<Column<(typeof items)[0]>> = [\n {\n ...headerProps('name', nameColumnTitle),\n render: ({row: item}) => {\n const {\n name,\n level,\n attributes: {isBundle, isCollapsed, url},\n } = item;\n return (\n <React.Fragment>\n {isBundle && (\n <Button view={'flat-secondary'}>\n <Icon awesome={isCollapsed ? 'angle-right' : 'angle-down'} />\n </Button>\n )}\n <Link\n className={block('name', {\n level: String(level),\n })}\n theme={'primary'}\n url={url}\n routed\n >\n {name}\n </Link>\n </React.Fragment>\n );\n },\n },\n\n {\n ...headerProps('tabletDynamic', 'Tablet dynamic'),\n render: ({\n row: {\n attributes: {tabletDynamic, isBundle, parent},\n },\n }) => {\n return (\n <TabletDynamicTotal\n data={tabletDynamic}\n className={progressClassName}\n hideLimit={!isBundle}\n limitTooltipTitle={\n isBundle ? (\n ''\n ) : (\n <>\n Total <SecondaryBold>{parent}</SecondaryBold> usage\n </>\n )\n }\n />\n );\n },\n align: 'center',\n width: 220,\n },\n {\n ...headerProps('tabletStatic', 'Tablet static'),\n render: ({\n row: {\n attributes: {tabletStatic, tabletStaticLimit},\n },\n }) => {\n return (\n <UsageLimitProgress\n className={progressClassName}\n usage={tabletStatic}\n limit={tabletStaticLimit}\n hideLimit={true}\n />\n );\n },\n align: 'center',\n width: 220,\n },\n {\n ...headerProps('rowCache', 'Row cache'),\n render: ({\n row: {\n attributes: {rowCache, rowCacheLimit},\n },\n }) => {\n return (\n <UsageLimitProgress\n className={progressClassName}\n usage={rowCache}\n limit={rowCacheLimit}\n hideLimit={true}\n />\n );\n },\n align: 'center',\n width: 220,\n },\n {\n ...headerProps('storePreload', 'Store preload'),\n render: ({\n row: {\n attributes: {storePreload},\n },\n }) => {\n return <StorePreload data={storePreload} className={progressClassName} />;\n },\n align: 'center',\n width: 220,\n },\n ];\n return res;\n }, [nameColumnTitle, toggleSort, sortStateByName]);\n\n return (\n <DataTableYT\n loaded={loaded}\n loading={loading}\n data={items}\n columns={columns}\n useThemeYT\n settings={DATA_TABLE_YT_SETTINGS}\n rowClassName={({attributes: {isBundle}}) => {\n return block('row', {\n bundle: isBundle,\n });\n }}\n onRowClick={(row) => toggleExpand(row)}\n />\n );\n}\n\nexport default React.memo(NodeMemoryDetailsTable);\n","import type {ThunkAction} from 'redux-thunk';\n\nimport {\n NODE_MEMORY_LOAD_FAILURE,\n NODE_MEMORY_LOAD_REQUEST,\n NODE_MEMORY_LOAD_SUCCESS,\n NODE_MEMORY_PARTIAL,\n} from '../../../../constants/components/nodes/memory';\nimport type {RootState} from '../../../../store/reducers';\nimport type {NodeMemoryLoadAction} from '../../../../store/reducers/components/node/memory';\nimport type {MemoryUsage} from '../../../../types/components/node';\nimport {\n getNodeMemoryCollapsedBundles,\n getNodeMemoryStateHost,\n} from '../../../../store/selectors/components/node/memory';\nimport {SortState} from '../../../../types';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\n\ntype NodeMemoryThunkAction = ThunkAction<any, RootState, any, NodeMemoryLoadAction>;\n\nexport function loadNodeMemoryUsage(host: string): NodeMemoryThunkAction {\n return (dispatch, getState) => {\n dispatch({type: NODE_MEMORY_LOAD_REQUEST, data: {host}});\n\n return ytApiV3Id\n .get(YTApiId.nodeMemoryUsage, {\n path: `//sys/cluster_nodes/${host}/orchid/tablet_slot_manager/memory_usage_statistics`,\n })\n .then((memory: MemoryUsage) => {\n const stateHost = getNodeMemoryStateHost(getState());\n if (stateHost !== host) {\n return;\n }\n\n dispatch({\n type: NODE_MEMORY_LOAD_SUCCESS,\n data: {memory},\n });\n })\n .catch((error: Error) => {\n const stateHost = getNodeMemoryStateHost(getState());\n if (stateHost !== host) {\n return;\n }\n\n dispatch({\n type: NODE_MEMORY_LOAD_FAILURE,\n data: error,\n });\n });\n };\n}\n\nexport function setNodeBundlesSort(sortOrder: Array<SortState>): NodeMemoryThunkAction {\n return (dispatch) => {\n dispatch({\n type: NODE_MEMORY_PARTIAL,\n data: {sortOrder},\n });\n };\n}\n\nexport function toggleNodeMemoryBundleExpanded(name: string): NodeMemoryThunkAction {\n return (dispatch, getState) => {\n const collapsedBundles = [...getNodeMemoryCollapsedBundles(getState())];\n const index = collapsedBundles.indexOf(name);\n if (index === -1) {\n collapsedBundles.push(name);\n } else {\n collapsedBundles.splice(index, 1);\n }\n dispatch({\n type: NODE_MEMORY_PARTIAL,\n data: {collapsedBundles},\n });\n };\n}\n\nexport function setNodeMemoryTablesSort(tablesSortOrder: Array<SortState>): NodeMemoryThunkAction {\n return (dispatch) => {\n dispatch({\n type: NODE_MEMORY_PARTIAL,\n data: {tablesSortOrder},\n });\n };\n}\n\nexport function setNodeMemoryFilters(data: {\n viewMode?: 'cells' | 'tables';\n filter?: string;\n}): NodeMemoryLoadAction {\n return {\n type: NODE_MEMORY_PARTIAL,\n data,\n };\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport NodeMemoryDetailsTable from '../NodeMemoryDetailsTable/NodeMemoryDetailsTable';\n\nimport {\n setNodeBundlesSort,\n toggleNodeMemoryBundleExpanded,\n} from '../../../../../store/actions/components/node/memory';\nimport {\n getNodeMemoryLoaded,\n getNodeMemoryLoading,\n getNodeMemorySortOrder,\n getNodeMemoryUsageBundlesItems,\n} from '../../../../../store/selectors/components/node/memory';\nimport {SortState} from '../../../../../types';\n\nfunction NodeBundles() {\n const dispatch = useDispatch();\n const loading = useSelector(getNodeMemoryLoading);\n const loaded = useSelector(getNodeMemoryLoaded);\n const items = useSelector(getNodeMemoryUsageBundlesItems);\n const sortOrder = useSelector(getNodeMemorySortOrder);\n\n const toggleExpandState = React.useCallback((item: (typeof items)[0]) => {\n dispatch(toggleNodeMemoryBundleExpanded(item.name));\n }, []);\n\n const handleSort = React.useCallback((order: SortState[]) => {\n dispatch(setNodeBundlesSort(order));\n }, []);\n\n return (\n <NodeMemoryDetailsTable\n loaded={loaded}\n loading={loading}\n items={items}\n onSort={handleSort}\n toggleExpand={toggleExpandState}\n nameColumnTitle={'Bundle / Cell'}\n sortState={sortOrder}\n />\n );\n}\n\nexport default React.memo(NodeBundles);\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {\n getNodeMemoryLoaded,\n getNodeMemoryLoading,\n getNodeMemoryUsageTablesItemsSorted,\n getNodeMemoryUsageTablesSortOrder,\n} from '../../../../../store/selectors/components/node/memory';\nimport NodeMemoryDetailsTable from '../NodeMemoryDetailsTable/NodeMemoryDetailsTable';\nimport {\n setNodeMemoryTablesSort,\n toggleNodeMemoryBundleExpanded,\n} from '../../../../../store/actions/components/node/memory';\nimport {SortState} from '../../../../../types';\n\nfunction NodeTables() {\n const dispatch = useDispatch();\n const loading = useSelector(getNodeMemoryLoading);\n const loaded = useSelector(getNodeMemoryLoaded);\n const items = useSelector(getNodeMemoryUsageTablesItemsSorted);\n const sortOrder = useSelector(getNodeMemoryUsageTablesSortOrder);\n\n const handleSort = React.useCallback((sortOrder: Array<SortState>) => {\n dispatch(setNodeMemoryTablesSort(sortOrder));\n }, []);\n\n const toggleExpandState = React.useCallback((item: (typeof items)[0]) => {\n dispatch(toggleNodeMemoryBundleExpanded(item.name));\n }, []);\n\n return (\n <NodeMemoryDetailsTable\n items={items}\n loaded={loaded}\n loading={loading}\n toggleExpand={toggleExpandState}\n onSort={handleSort}\n nameColumnTitle={'Bundles / Table'}\n sortState={sortOrder}\n />\n );\n}\n\nexport default React.memo(NodeTables);\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport CustomRadioButton from '../../../../../components/RadioButton/RadioButton';\nimport {\n getNodeMemoryFilter,\n getNodeMemoryViewMode,\n} from '../../../../../store/selectors/components/node/memory';\nimport {setNodeMemoryFilters} from '../../../../../store/actions/components/node/memory';\nimport Filter from '../../../../../components/Filter/Filter';\n\nimport './NodeMemoryUsageToolbar.scss';\n\nconst block = cn('node-memory-usage-toolbar');\n\nfunction NodeMemoryUsageToolbar() {\n const dispatch = useDispatch();\n const viewMode = useSelector(getNodeMemoryViewMode);\n const filter = useSelector(getNodeMemoryFilter);\n\n const handleViewMode = React.useCallback((value: string) => {\n dispatch(\n setNodeMemoryFilters({\n viewMode: value as typeof viewMode,\n }),\n );\n }, []);\n\n const handleFilter = React.useCallback((filter: string) => {\n dispatch(setNodeMemoryFilters({filter}));\n }, []);\n\n return (\n <div className={block(null, 'elements-section')}>\n <div className={block('filter')}>\n <Filter\n value={filter}\n onChange={handleFilter}\n placeholder={\n viewMode === 'cells'\n ? 'Filter by Bundle, Cell id...'\n : 'Filter by Bundle, Path...'\n }\n />\n </div>\n <CustomRadioButton\n size=\"m\"\n value={viewMode}\n onUpdate={handleViewMode}\n name=\"navigation-tablets-mode\"\n items={[\n {\n value: 'tables',\n text: 'Tables',\n },\n {\n value: 'cells',\n text: 'Bundles and cells',\n },\n ]}\n />\n </div>\n );\n}\n\nexport default React.memo(NodeMemoryUsageToolbar);\n","import cn from 'bem-cn-lite';\nimport React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport type {RouteComponentProps} from 'react-router';\n\nimport NodeBundles from '../../../../../pages/components/tabs/node/NodeBundles/NodeBundles';\nimport NodeTables from '../../../../../pages/components/tabs/node/NodeTables/NodeTables';\nimport {loadNodeMemoryUsage} from '../../../../../store/actions/components/node/memory';\nimport {\n getNodeMemoryError,\n getNodeMemoryViewMode,\n} from '../../../../../store/selectors/components/node/memory';\nimport {useUpdater} from '../../../../../hooks/use-updater';\nimport ErrorBlock from '../../../../../components/Error/Error';\nimport NodeBundlesTotal from '../NodeBundlesTotal/NodeBundlesTotal';\nimport NodeMemoryUsageToolbar from './NodeMemoryUsageToolbar';\n\nconst block = cn('node-memory-usage');\n\ninterface RouteParams {\n host: string;\n}\n\ninterface Props extends RouteComponentProps<RouteParams> {}\n\nfunction NodeMemoryUsage({match}: Props): ReturnType<React.VFC> {\n const dispatch = useDispatch();\n\n const error = useSelector(getNodeMemoryError);\n\n const host = decodeURIComponent(match.params.host);\n\n const updateFn = React.useCallback(() => {\n dispatch(loadNodeMemoryUsage(host));\n }, [dispatch, host]);\n\n useUpdater(updateFn, {timeout: 15 * 1000});\n\n const viewMode = useSelector(getNodeMemoryViewMode);\n\n return (\n <div className={block()}>\n <React.Fragment>\n {error && <ErrorBlock error={error} />}\n <NodeBundlesTotal />\n <NodeMemoryUsageToolbar />\n {viewMode === 'cells' ? <NodeBundles /> : <NodeTables />}\n </React.Fragment>\n </div>\n );\n}\n\nexport default React.memo(NodeMemoryUsage);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport compact_ from 'lodash/compact';\nimport map_ from 'lodash/map';\n\nimport Label from '../../../../../components/Label/Label';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport type {Node} from '../../../../../store/reducers/components/nodes/nodes/node';\nimport {getCurrentClusterConfig} from '../../../../../store/selectors/global';\nimport UIFactory from '../../../../../UIFactory';\nimport {getNodeMetaItems} from '../../../../../utils/components/nodes/node-meta-items';\n\nimport './NodeMeta.scss';\n\nconst block = cn('node-meta');\n\ninterface Props {\n state: Node['state'];\n tags: Node['tags'];\n userTags: Node['userTags'];\n rack: Node['rack'];\n banned: Node['banned'];\n banMessage?: Node['banMessage'];\n decommissioned: Node['decommissioned'];\n decommissionedMessage?: Node['decommissionedMessage'];\n full: Node['full'];\n alertCount?: Node['alertCount'];\n dataCenter: Node['dataCenter'];\n lastSeenTime: Node['lastSeenTime'];\n disableJobs: Node['disableJobs'];\n disableTabletCells: Node['disableTabletCells'];\n disableWriteSession: Node['disableWriteSession'];\n physicalHost: Node['physicalHost'];\n host: Node['host'];\n maintenanceRequests?: Node['maintenanceRequests'];\n}\n\nfunction NodeMeta({\n state,\n tags,\n userTags,\n rack,\n banned,\n banMessage = '',\n decommissioned,\n decommissionedMessage,\n full,\n alertCount,\n dataCenter,\n lastSeenTime,\n disableJobs,\n disableTabletCells,\n disableWriteSession,\n physicalHost,\n host,\n maintenanceRequests,\n}: Props): ReturnType<React.VFC> {\n const clusterConfig = useSelector(getCurrentClusterConfig);\n\n const metaTableItems = React.useMemo(() => {\n return getNodeMetaItems({\n alertCount,\n banMessage,\n banned,\n dataCenter,\n decommissioned,\n decommissionedMessage,\n disableJobs,\n disableTabletCells,\n disableWriteSession,\n full,\n lastSeenTime,\n rack,\n state,\n maintenanceRequests,\n });\n }, [\n alertCount,\n banMessage,\n banned,\n dataCenter,\n decommissioned,\n decommissionedMessage,\n disableJobs,\n disableTabletCells,\n disableWriteSession,\n full,\n lastSeenTime,\n rack,\n state,\n maintenanceRequests,\n ]);\n\n const tagsItems = React.useMemo(\n () => [\n {\n key: 'tags',\n value: <Tags items={tags} />,\n visible: Boolean(tags?.length),\n },\n {\n key: 'user_tags',\n value: <Tags items={userTags} />,\n visible: Boolean(userTags?.length),\n },\n ],\n [tags, userTags],\n );\n\n const urlItems = React.useMemo(() => {\n return UIFactory.getExtraMetaTableItemsForComponentsNode({\n host,\n physicalHost,\n clusterConfig,\n });\n }, [host, physicalHost, clusterConfig]);\n\n return (\n <div className={block()}>\n <MetaTable\n className={block('column', {type: 'meta'})}\n items={compact_([metaTableItems, tagsItems, urlItems])}\n />\n </div>\n );\n}\n\nfunction Tags({items}: {items?: Array<string>}) {\n return (\n <div className={block('tags')}>\n {map_(items, (tag) => (\n <Label key={tag} text={tag} />\n ))}\n </div>\n );\n}\n\nexport default React.memo(NodeMeta);\n","import React from 'react';\n\nimport map_ from 'lodash/map';\n\nimport cn from 'bem-cn-lite';\n\nimport {getNodeAlerts} from '../../../../../store/selectors/components/node/node';\nimport {useSelector} from 'react-redux';\nimport Alert from '../../../../../components/Alert/Alert';\n\nimport './NodeAlerts.scss';\n\nconst block = cn('yt-node-alerts');\n\nfunction NodeAlerts() {\n const alerts = useSelector(getNodeAlerts);\n return (\n <div>\n {map_(alerts, (item, index) => (\n <Alert className={block('item')} error={item} key={index} />\n ))}\n </div>\n );\n}\n\nexport default React.memo(NodeAlerts);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport type {Column} from '@gravity-ui/react-data-table';\nimport {Progress} from '@gravity-ui/uikit';\n\nimport format from '../../../../../common/hammer/format';\nimport DataTableYT from '../../../../../components/DataTableYT/DataTableYT';\nimport {nodeSelector} from '../../../../../store/selectors/components/node/node';\nimport Label from '../../../../../components/Label/Label';\nimport ClipboardButton from '../../../../../components/ClipboardButton/ClipboardButton';\n\ninterface LocationInfo {\n enabled?: boolean;\n full?: boolean;\n location_uuid?: string;\n medium_name?: string;\n session_count?: number;\n chunk_count?: number;\n\n locationText?: string;\n locationProgress?: number;\n\n available_space?: number;\n low_watermark_space?: number;\n}\n\nconst columns: Array<Column<LocationInfo>> = [\n {\n name: 'Enabled',\n render({row}) {\n return (\n <Label theme={row.enabled ? 'success' : 'danger'}>\n {row.enabled ? 'Enabled' : 'Disabled'}\n </Label>\n );\n },\n },\n {\n name: 'Uuid',\n render({row}) {\n return (\n <span>\n {row.location_uuid}\n \n <ClipboardButton view=\"flat-secondary\" text={row.location_uuid} size=\"s\" />\n </span>\n );\n },\n align: 'left',\n },\n {\n name: 'Full',\n render({row}) {\n return Boolean(row.full).toString();\n },\n align: 'center',\n },\n {\n name: 'Medium name',\n render({row}) {\n return row.medium_name;\n },\n },\n {\n name: 'Sessions',\n render({row}) {\n return format.Number(row.session_count);\n },\n align: 'right',\n },\n {\n name: 'Chunks',\n render({row}) {\n return format.Number(row.chunk_count);\n },\n align: 'right',\n },\n {\n name: 'Used space',\n render({row}) {\n return !row.locationProgress ? (\n format.NO_VALUE\n ) : (\n <Progress value={row.locationProgress} text={row.locationText} theme=\"success\" />\n );\n },\n },\n {\n name: 'Available space',\n render({row}) {\n return format.Bytes(row.available_space);\n },\n align: 'right',\n width: 200,\n },\n {\n name: 'Watermark space',\n render({row}) {\n return format.Bytes(row.low_watermark_space);\n },\n align: 'right',\n width: 200,\n },\n];\n\nfunction NodeLocations(): ReturnType<React.VFC> {\n const {node} = useSelector(nodeSelector);\n\n if (!(node && node.locations.length > 0)) {\n return null;\n }\n\n return (\n <DataTableYT\n columns={columns}\n data={node.locations}\n startIndex={1}\n useThemeYT\n settings={{\n sortable: false,\n }}\n />\n );\n}\n\nexport default React.memo(NodeLocations);\n","import {useSelector} from 'react-redux';\nimport React from 'react';\n\nimport NodeTabletSlots from '../../../../../pages/components/tabs/node/NodeTabletSlots/NodeTabletSlots';\nimport type {RootState} from '../../../../../store/reducers';\nimport {getSortedItems} from '../../../../../store/selectors/components/nodes/node-card';\nimport {nodeSelector} from '../../../../../store/selectors/components/node/node';\n\nfunction NodeTabletSlotsTab(): ReturnType<React.VFC> {\n const {node} = useSelector(nodeSelector);\n const tabletSlots = useSelector((state: RootState) => node && getSortedItems(state, {node}));\n\n if (!(node && tabletSlots.length > 0)) {\n return null;\n }\n\n return <NodeTabletSlots tabletSlots={tabletSlots} />;\n}\n\nexport default React.memo(NodeTabletSlotsTab);\n","import {ThunkAction} from 'redux-thunk';\n\nimport {RootState} from '../../../reducers';\nimport {NodeUnrecognizedOptionsAction} from '../../../reducers/components/node/unrecognized-options';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {NODE_UNRECOGNIEZED_OPTIONS} from '../../../../constants/components/nodes/node';\nimport CancelHelper, {isCancelled} from '../../../../utils/cancel-helper';\n\nconst cancelHeler = new CancelHelper();\n\nexport function loadNodeUnrecognizedOptions(\n host: string,\n): ThunkAction<any, RootState, unknown, NodeUnrecognizedOptionsAction> {\n return (dispatch) => {\n dispatch({type: NODE_UNRECOGNIEZED_OPTIONS.REQUEST, data: {host}});\n\n return ytApiV3Id\n .get(YTApiId.nodeUnrecognizedOptions, {\n parameters: {\n path: `//sys/cluster_nodes/${host}/orchid/dynamic_config_manager/unrecognized_options`,\n },\n cancellation: cancelHeler.removeAllAndSave,\n })\n .then((data) => {\n dispatch({type: NODE_UNRECOGNIEZED_OPTIONS.SUCCESS, data: {data}});\n })\n .catch((error: any) => {\n if (!isCancelled(error)) {\n dispatch({type: NODE_UNRECOGNIEZED_OPTIONS.FAILURE, data: {error}});\n }\n });\n };\n}\n","import {RootState} from '../../../reducers';\n\nexport const getNodeUnrecognizedOptionsData = (state: RootState) =>\n state.components.node.unrecognizedOptions.data;\nexport const getNodeUnrecognizedOptionsError = (state: RootState) =>\n state.components.node.unrecognizedOptions.error;\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport './NodeUnrecognizedOptions.scss';\n\nconst block = cn('node-unrecognized-options');\n\nimport {loadNodeUnrecognizedOptions} from '../../../../../store/actions/components/node/unrecognized-options';\nimport {\n getNodeUnrecognizedOptionsData,\n getNodeUnrecognizedOptionsError,\n} from '../../../../../store/selectors/components/node/unrecognized-options';\nimport Error from '../../../../../components/Error/Error';\nimport Yson from '../../../../../components/Yson/Yson';\nimport {getNodeUnrecognizedOptionsYsonSettings} from '../../../../../store/selectors/thor/unipika';\n\nexport function NodeUnrecognizedOptions({host}: {host: string}) {\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n dispatch(loadNodeUnrecognizedOptions(host));\n }, [host, dispatch]);\n\n const data = useSelector(getNodeUnrecognizedOptionsData);\n const error = useSelector(getNodeUnrecognizedOptionsError);\n\n const unipikaSettings = useSelector(getNodeUnrecognizedOptionsYsonSettings);\n\n return error ? (\n <Error error={error} />\n ) : (\n <Yson\n className={block('yson')}\n value={data}\n settings={unipikaSettings}\n folding\n virtualized\n />\n );\n}\n","import {useDispatch, useSelector} from 'react-redux';\nimport {Redirect, Route, RouteComponentProps, Switch} from 'react-router';\nimport React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport Tabs from '../../../../components/Tabs/Tabs';\nimport Loader from '../../../../components/Loader/Loader';\nimport NodeGeneralTab from '../../../../pages/components/tabs/node/NodeGeneralTab/NodeGeneralTab';\nimport NodeMemoryUsage from '../../../../pages/components/tabs/node/NodeMemoryUsage/NodeMemoryUsage';\nimport {NodeTab} from '../../../../constants/components/nodes/node';\nimport {loadNodeAttributes} from '../../../../store/actions/components/node/node';\nimport {useUpdater} from '../../../../hooks/use-updater';\nimport {makeTabProps} from '../../../../utils';\nimport type {RootState} from '../../../../store/reducers';\nimport {getNodeAlertCount, nodeSelector} from '../../../../store/selectors/components/node/node';\nimport {getSortedItems} from '../../../../store/selectors/components/nodes/node-card';\nimport NodeMeta from './NodeMeta/NodeMeta';\n\nimport './NodePage.scss';\nimport NodeAlerts from './NodeAlerts/NodeAlerts';\nimport NodeLocations from './NodeLocations/NodeLocations';\nimport NodeTabletSlotsTab from './NodeTabletSlotsTab/NodeTabletSlotsTab';\nimport {NodeUnrecognizedOptions} from './NodeUnrecognizedOptions/NodeUnrecognizedOptions';\n\nconst block = cn('node-page');\n\ninterface RouteParams {\n host: string;\n}\n\nexport interface NodeDetailsProps extends RouteComponentProps<RouteParams> {}\n\nfunction NodePage({match}: NodeDetailsProps): ReturnType<React.VFC> {\n const dispatch = useDispatch();\n\n const {node, loading, loaded, error, errorData} = useSelector(nodeSelector);\n\n const host = decodeURIComponent(match.params.host);\n const alertCount = useSelector(getNodeAlertCount);\n\n const updateFn = React.useCallback(() => {\n dispatch(loadNodeAttributes(host));\n }, [dispatch, host]);\n\n useUpdater(updateFn, {timeout: 15 * 1000});\n\n const initialLoading = loading && (!loaded || host !== node?.host);\n\n const tabletSlots = useSelector((state: RootState) => node && getSortedItems(state, {node}));\n\n const matchUrl = match.url;\n const tabProps = React.useMemo(\n () =>\n makeTabProps(\n matchUrl,\n NodeTab,\n {\n [NodeTab.MEMORY_USAGE]: {show: Boolean(node && tabletSlots.length > 0)},\n [NodeTab.LOCATIONS]: {show: Boolean(node?.locations?.length)},\n [NodeTab.TABLET_SLOTS]: {show: Boolean(node && tabletSlots.length > 0)},\n [NodeTab.ALERTS]: {show: Boolean(alertCount), counter: alertCount},\n },\n null,\n {\n [NodeTab.GENERAL]: 'General',\n [NodeTab.MEMORY_USAGE]: 'Memory usage',\n },\n ),\n [node, matchUrl, alertCount, tabletSlots],\n );\n\n return (\n <div className={block()}>\n <div className={block('content', {loading: initialLoading})}>\n <LoadDataHandler loaded={loaded} error={error} errorData={errorData}>\n <div className={block()}>\n <div className={block('host', 'elements-heading elements-heading_size_l')}>\n {host}\n <ClipboardButton text={host} size=\"l\" view=\"flat-secondary\" />\n {<Loader visible={initialLoading} />}\n </div>\n {!initialLoading && (\n <React.Fragment>\n <div className={block('meta')}>\n {node && <NodeMeta {...node} />}\n </div>\n\n <div className={block('heading', 'elements-section')}>\n <Tabs {...tabProps} routed />\n </div>\n\n <Switch>\n <Route\n path={`${match.path}/${NodeTab.GENERAL}`}\n component={NodeGeneralTab}\n />\n <Route\n path={`${match.path}/${NodeTab.MEMORY_USAGE}`}\n component={NodeMemoryUsage}\n />\n <Route\n path={`${match.path}/${NodeTab.LOCATIONS}`}\n component={NodeLocations}\n />\n <Route\n path={`${match.path}/${NodeTab.TABLET_SLOTS}`}\n component={NodeTabletSlotsTab}\n />\n <Route\n path={`${match.path}/${NodeTab.ALERTS}`}\n render={() => <NodeAlerts />}\n />\n <Route\n path={`${match.path}/${NodeTab.UNRECOGNIZED_OPTIONS}`}\n render={() => (\n <NodeUnrecognizedOptions host={match.params.host} />\n )}\n />\n <Redirect\n from={match.url}\n to={`${match.url}/${NodeTab.GENERAL}`}\n />\n </Switch>\n </React.Fragment>\n )}\n </div>\n </LoadDataHandler>\n </div>\n </div>\n );\n}\n\nexport default React.memo(NodePage);\n","import React from 'react';\nimport block from 'bem-cn-lite';\nimport PropTypes from 'prop-types';\nimport {connect, useSelector} from 'react-redux';\nimport {Redirect, Route, Switch, matchPath} from 'react-router';\n\nimport VersionsV2 from '../tabs/Versions/VersionsV2';\nimport Proxies from '../tabs/Proxies/Proxies';\nimport Nodes from '../tabs/nodes/Nodes/Nodes';\nimport Shards from '../tabs/Shards/Shards';\nimport NodePage from '../tabs/node/NodePage';\n\nimport Placeholder from '../Placeholder';\nimport Tabs from '../../../components/Tabs/Tabs';\n\nimport {PROXY_TYPE} from '../../../constants/components/proxies/proxies';\nimport {DEFAULT_TAB, Tab} from '../../../constants/components/main';\nimport {getLastVisitedTabs} from '../../../store/selectors/settings';\nimport {makeTabProps} from '../../../utils';\nimport {Page} from '../../../constants/index';\n\nimport {getCluster} from '../../../store/selectors/global';\nimport {tabletActiveBundleLink} from '../../../utils/components/tablet-cells';\n\nimport './Component.scss';\nimport {UI_TAB_SIZE} from '../../../constants/global';\n\nconst b = block(Page.COMPONENTS);\n\nexport function Components({match, lastVisitedTab = DEFAULT_TAB, tabSize, location}) {\n const props = makeTabProps(match.url, Tab);\n\n // Because of the redirect\n const defaultTab = lastVisitedTab === Tab.TABLET_CELLS ? Tab.HTTP_PROXIES : lastVisitedTab;\n\n const nodePageMatch = matchPath(location.pathname, {\n path: `${match.path}/${Tab.NODES}/:host`,\n });\n\n return (\n <div className=\"elements-page__content\">\n <section className={b(null, 'elements-main-section')}>\n {!nodePageMatch && (\n <div className={b('heading')}>\n <Tabs\n {...props}\n active={DEFAULT_TAB}\n className={b('tabs')}\n routed\n size={tabSize}\n />\n </div>\n )}\n\n <div className={b('tab-viewer')}>\n <Switch>\n <Route path={`${match.path}/${Tab.NODES}/:host`} component={NodePage} />\n <Route path={`${match.path}/${Tab.NODES}`} component={Nodes} />\n <Route path={`${match.path}/${Tab.VERSIONS}`} component={VersionsV2} />\n <Route\n path={`${match.path}/${Tab.HTTP_PROXIES}`}\n render={() => <Proxies key={PROXY_TYPE.HTTP} type={PROXY_TYPE.HTTP} />}\n />\n <Route\n path={`${match.path}/${Tab.RPC_PROXIES}`}\n render={() => <Proxies key={PROXY_TYPE.RPC} type={PROXY_TYPE.RPC} />}\n />\n <Route path={`${match.path}/${Tab.SHARDS}`} component={Shards} />\n <Route\n path={`${match.path}/${Tab.TABLET_CELLS}`}\n component={RedirectToTabletCells}\n />\n <Route path={`${match.path}/:tab`} component={Placeholder} />\n <Redirect from={match.url} to={`${match.url}/${defaultTab}`} />\n </Switch>\n </div>\n </section>\n </div>\n );\n}\n\nfunction RedirectToTabletCells() {\n const cluster = useSelector(getCluster);\n return <Redirect to={tabletActiveBundleLink(cluster, '')} />;\n}\n\nComponents.propTypes = {\n // from react-router\n match: PropTypes.shape({\n path: PropTypes.string.isRequired,\n url: PropTypes.string.isRequired,\n }).isRequired,\n // from connect\n lastVisitedTab: PropTypes.string,\n};\n\nconst mapStateToProps = (state) => {\n const lastVisitedTabs = getLastVisitedTabs(state);\n return {\n lastVisitedTab: lastVisitedTabs[Page.COMPONENTS],\n tabSize: UI_TAB_SIZE,\n };\n};\n\nexport default connect(mapStateToProps)(Components);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport {Route, RouteComponentProps, Switch, useHistory} from 'react-router';\nimport cn from 'bem-cn-lite';\nimport {Breadcrumbs, BreadcrumbsItem} from '../../../components/Breadcrumbs';\nimport {Tab as ComponentsTab} from '../../../constants/components/main';\nimport {Page} from '../../../constants/index';\nimport {RowWithName} from '../../../containers/AppNavigation/TopRowContent/SectionName';\nimport {nodeHostSelector} from '../../../store/selectors/components/node/node';\nimport {getCluster} from '../../../store/selectors/global';\nimport {makeComponentsNodesUrl} from '../../../utils/app-url';\n\nimport './ComponentsTopRowContent.scss';\n\nconst block = cn('components-top-row-content');\n\nfunction ComponentsTopRowContent({match}: RouteComponentProps) {\n return (\n <Switch>\n <Route\n path={`${match.path}/${ComponentsTab.NODES}/:host`}\n component={ComponentsNodeTopRowContent}\n />\n <Route path={''} render={() => <RowWithName page={Page.COMPONENTS} />} />\n </Switch>\n );\n}\n\nfunction ComponentsNodeTopRowContent() {\n return (\n <RowWithName page={Page.COMPONENTS}>\n <ComponentsBreadcrumbs />\n </RowWithName>\n );\n}\n\nfunction ComponentsBreadcrumbs() {\n const cluster = useSelector(getCluster);\n const nodeHost = useSelector(nodeHostSelector);\n const history = useHistory();\n\n const items = React.useMemo(() => {\n const result = [\n <BreadcrumbsItem key=\"<Root>\" href={makeComponentsNodesUrl({cluster})}>\n {'<Root>'}\n </BreadcrumbsItem>,\n ];\n if (nodeHost) {\n result.push(\n <BreadcrumbsItem\n key=\"<Root>\"\n href={makeComponentsNodesUrl({cluster, host: nodeHost})}\n >\n {nodeHost}\n </BreadcrumbsItem>,\n );\n }\n return result;\n }, [cluster, nodeHost]);\n\n return (\n <Breadcrumbs navigate={history.push} showRoot className={block('breadcrumbs')}>\n {items}\n </Breadcrumbs>\n );\n}\n\nexport default React.memo(ComponentsTopRowContent);\n","import React from 'react';\nimport block from 'bem-cn-lite';\nimport {useRouteMatch} from 'react-router';\n\nimport hammer from '../../common/hammer';\n\nconst b = block('elements-message');\n\ninterface MatchParams {\n tab: string;\n}\n\nexport default function Placeholder() {\n const match = useRouteMatch<MatchParams>();\n const {tab} = match.params;\n\n return (\n <div className={b({theme: 'warning'})}>\n <p className={b('paragraph')}>\n {tab\n ? `Viewer for tab \"${hammer.format['ReadableField'](tab)}\" is not implemented.`\n : 'Viewer for this tab is not implemented.'}\n </p>\n </div>\n );\n}\n","import {createSelector} from 'reselect';\nimport clone_ from 'lodash/clone';\n\nimport {\n getFormat,\n getShowDecoded,\n shouldCompact,\n shouldEscapeWhitespace,\n useBinaryAsHex,\n} from '../../../store/selectors/settings';\nimport {getUnipikaSettingsFromConfig} from '../../../common/thor/unipika-settings';\n\nexport interface YsonSettings {\n format: string;\n showDecoded: boolean;\n compact: boolean;\n escapeWhitespace: boolean;\n binaryAsHex: boolean;\n asHTML: boolean;\n}\n\n/**\n * !!! Do not use this selector directly, result should be copied by another selector !!!\n * unipika.format && unipika.foramtRaw mix different properties into settings-object.\n * So, to minimize side-effects each UI-component should use his-own copy of settings-object.\n */\nconst getYsonSettings = createSelector(\n [getFormat, getShowDecoded, shouldCompact, shouldEscapeWhitespace, useBinaryAsHex],\n (\n format: string,\n showDecoded: boolean,\n compact: boolean,\n escapeWhitespace: boolean,\n binaryAsHex: boolean,\n ): YsonSettings => {\n return {\n format,\n showDecoded,\n compact,\n escapeWhitespace,\n binaryAsHex,\n asHTML: true,\n ...getUnipikaSettingsFromConfig(),\n };\n },\n);\n\nexport const getJobGeneralYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getJobSpecificationYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getTableYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getOperationAttributesYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getOperationExperimentsYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getNavigationMountConfigYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getEditJsonYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getNodeUnrecognizedOptionsYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getPreviewCellYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getFlowSpecYsonSettings = createSelector([getYsonSettings], clone_);\n","import {Page} from '../../../shared/constants/settings';\nimport YT from '../../config/yt-config';\nimport type {Tab as NavigationTab} from '../../constants/navigation';\nimport {ValueOf} from '../../types';\n\nimport {TabletErrorsByPathState} from '../../store/reducers/navigation/tabs/tablet-errors/tablet-errors-by-path';\nimport {getNavigationParams} from '../../store/reducers/navigation/url-mapping';\nimport {makeURLSearchParams} from './utils';\n\nexport function makeNavigationLink(params: {\n path: string;\n cluster?: string;\n navmode?: ValueOf<typeof NavigationTab>;\n teMode?: 'request_errors';\n teTime?: TabletErrorsByPathState['timeRangeFilter'];\n teMethods?: Array<string>;\n}) {\n const {cluster, ...rest} = params;\n const res = `/${cluster || YT.cluster}/${Page.NAVIGATION}`;\n const search = makeURLSearchParams(rest, getNavigationParams()).toString();\n return search ? `${res}?${search}` : res;\n}\n","import {LocationParameters} from '../../store/location';\n\nexport function makeURLSearchParams<T extends object>(params: T, info: LocationParameters) {\n const res = new URLSearchParams();\n Object.keys(params).reduce((acc, k) => {\n const value = params[k as keyof T];\n if (k in info) {\n if (info[k].options?.serialize) {\n const tmp = info[k].options?.serialize?.(value);\n if (tmp !== undefined) {\n res.append(k, tmp + '');\n }\n } else {\n res.append(k, value + '');\n }\n }\n return acc;\n }, res);\n return res;\n}\n","import {Page} from '../../../shared/constants/settings';\nimport {Tab as ComponentsTab} from '../../constants/components/main';\nimport YT from '../../config/yt-config';\n\nexport * from './navigation';\n\nexport function makeComponentsNodesUrl({host, cluster}: {host?: string; cluster?: string} = {}) {\n return host\n ? `/${cluster || YT.cluster}/${Page.COMPONENTS}/${ComponentsTab.NODES}/${host}`\n : `/${cluster || YT.cluster}/${Page.COMPONENTS}/${ComponentsTab.NODES}`;\n}\n\nexport function makeProxyUrl(cluster: string, address: string) {\n return `/${cluster}/${Page.COMPONENTS}/${ComponentsTab.RPC_PROXIES}?host=${address}`;\n}\n\nexport function makeSchedulingUrl({\n pool,\n poolTree,\n cluster,\n}: {\n pool: string;\n poolTree: string;\n cluster?: string;\n}) {\n return `/${cluster || YT.cluster}/${Page.SCHEDULING}?pool=${pool}&poolTree=${poolTree}`;\n}\n\nexport function makeAccountsUrl(account: string, cluster?: string) {\n return `/${cluster || YT.cluster}/${Page.ACCOUNTS}?account=${account}`;\n}\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '../../../common/hammer';\n\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {Page} from '../../../constants';\nimport {TabletsTab} from '../../../constants/tablets';\nimport {nanToUndefined} from '../../utils';\n\nexport function prepareTabletCells(tabletCells) {\n return map_(tabletCells, (tabletCell) => {\n const uncompressed = ypath.getValue(\n tabletCell,\n '/@total_statistics/uncompressed_data_size',\n );\n const compressed = ypath.getValue(tabletCell, '/@total_statistics/compressed_data_size');\n const tablets = ypath.getValue(tabletCell, '/@total_statistics/tablet_count');\n const memory = ypath.getValue(tabletCell, '/@total_statistics/memory_size');\n const health = ypath.getValue(tabletCell, '/@status/health');\n\n const bundle = ypath.getValue(tabletCell, '/@tablet_cell_bundle');\n const peers = ypath.getValue(tabletCell, '/@peers');\n const id = ypath.getValue(tabletCell, '/@id');\n\n const peerCount = peers ? peers.length : 0;\n\n let peer;\n let peerAddress;\n let state;\n\n if (peerCount) {\n peer = find_(peers, (peer) => peer.state === 'leading') || peers[0];\n peerAddress = peer.address;\n state = peer.state;\n }\n\n return {\n id,\n health,\n state,\n bundle,\n tablets,\n memory,\n uncompressed,\n compressed,\n peers,\n peer,\n peerAddress,\n };\n });\n}\n\nexport function aggregateTotal(data) {\n const initialTotal = {\n bundle: 'total',\n tablets: 0,\n nodes: [],\n memory: 0,\n uncompressed: 0,\n compressed: 0,\n tabletCells: 0,\n isTotal: true,\n };\n\n const total = hammer.aggregation.prepare(data, [\n {name: 'tablets', type: 'sum'},\n {name: 'nodes', type: 'concat-array'},\n {name: 'memory', type: 'sum'},\n {name: 'uncompressed', type: 'sum'},\n {name: 'compressed', type: 'sum'},\n {name: 'tabletCells', type: 'sum'},\n ]);\n\n return data.length ? total[0] : initialTotal;\n}\n\nfunction collectBundlesAttrs(dst, attrs) {\n const resource_limits = ypath.getValue(attrs, '/resource_limits');\n const resource_usage = ypath.getValue(attrs, '/resource_usage');\n\n const tc_usage = ypath.getValue(resource_usage, '/tablet_count');\n const tc_limit = ypath.getValue(resource_limits, '/tablet_count');\n\n const tsm_usage = ypath.getValue(resource_usage, '/tablet_static_memory');\n const tsm_limit = ypath.getValue(resource_limits, '/tablet_static_memory');\n\n return {\n ...dst,\n bundle_controller_target_config: ypath.getValue(attrs, '/bundle_controller_target_config'),\n enable_bundle_controller: ypath.getValue(attrs, '/enable_bundle_controller') || false,\n enable_bundle_balancer: ypath.getValue(attrs, '/enable_bundle_balancer'),\n changelog_account: ypath.getValue(attrs, '/options/changelog_account'),\n snapshot_account: ypath.getValue(attrs, '/options/snapshot_account'),\n node_tag_filter: ypath.getValue(attrs, '/node_tag_filter'),\n health: ypath.getValue(attrs, '/health'),\n zone: ypath.getValue(attrs, '/zone'),\n resource_limits,\n resource_usage,\n\n tablet_count: tc_usage,\n tablet_count_limit: tc_limit,\n tablet_count_free: tc_limit - tc_usage,\n tablet_count_percentage: nanToUndefined((100 * tc_usage) / tc_limit),\n\n tablet_static_memory: tsm_usage,\n tablet_static_memory_limit: tsm_limit,\n tablet_static_memory_free: tsm_limit - tsm_usage,\n tablet_static_memory_percentage: nanToUndefined((100 * tsm_usage) / tsm_limit),\n };\n}\n\nexport function prepareBundles(tabletCells, bundles) {\n let aggregation = hammer.aggregation.prepare(\n tabletCells,\n [\n {name: 'tablets', type: 'sum'},\n {name: 'memory', type: 'sum'},\n {name: 'uncompressed', type: 'sum'},\n {name: 'compressed', type: 'sum'},\n {name: 'tabletCells', type: 'count'},\n ],\n 'bundle',\n );\n\n aggregation.splice(0, 1);\n\n aggregation = reduce_(\n aggregation,\n (res, bundle) => {\n const $attributes = bundles[bundle.bundle].$attributes;\n const bundleNodes = ypath.getValue($attributes, '/nodes');\n res[bundle.bundle] = {\n $attributes,\n ...collectBundlesAttrs({}, $attributes),\n ...bundle,\n nodes: bundleNodes,\n };\n return res;\n },\n {},\n );\n\n const bundleList = reduce_(\n bundles,\n (res, value, key) => {\n if (aggregation[key]) {\n res.push(aggregation[key]);\n } else {\n res.push({\n $attributes: value.$attributes,\n ...collectBundlesAttrs({}, value.$attributes),\n bundle: key,\n nodes: value.$attributes.nodes,\n tabletCells: 0,\n });\n }\n return res;\n },\n [],\n );\n\n const nodeTags = reduce_(\n bundleList,\n (res, bundle) => {\n const tag = bundle?.node_tag_filter;\n if (tag) {\n res[tag] = res[tag] ? res[tag] + 1 : 1;\n }\n return res;\n },\n {},\n );\n\n return bundleList.map((bundle) => ({\n ...bundle,\n unique_node_tag: bundle?.node_tag_filter ? nodeTags[bundle.node_tag_filter] === 1 : true,\n }));\n}\n\nexport function tabletCellNavigationLink(cluster, cellId) {\n return `/${cluster}/navigation?path=//sys/tablet_cells/${cellId}`;\n}\n\nexport function tabletActiveBundleLink(cluster, bundle, enable_bundle_controller) {\n const tabletTab = enable_bundle_controller ? TabletsTab.INSTANCES : TabletsTab.TABLET_CELLS;\n return `/${cluster}/${Page.TABLET_CELL_BUNDLES}/${tabletTab}?activeBundle=${bundle}`;\n}\n\nexport function tabletActiveChaosBundleLink(cluster, bundle) {\n return `/${cluster}/${Page.CHAOS_CELL_BUNDLES}/${TabletsTab.CHAOS_CELLS}?activeBundle=${bundle}`;\n}\n\nexport function tabletCellBundleRootLink(cluster) {\n return `/${cluster}/${Page.TABLET_CELL_BUNDLES}`;\n}\n\nexport function tabletChaosBundleRootLink(cluster) {\n return `/${cluster}/${Page.CHAOS_CELL_BUNDLES}`;\n}\n\nexport function tabletCellBundlesLink(cluster) {\n return `/${cluster}/${Page.TABLET_CELL_BUNDLES}`;\n}\n\nexport function tabletAttributesPath(id) {\n return `//sys/tablet_cells/${id}`;\n}\n\nexport function chaosCellNavigationLink(cluster, cellId) {\n return `/${cluster}/navigation?path=//sys/chaos_cells/${cellId}`;\n}\n\nexport function chaosActiveBundleLink(cluster, bundle) {\n return `/${cluster}/${Page.CHAOS_CELL_BUNDLES}/${TabletsTab.CHAOS_CELLS}?activeBundle=${bundle}`;\n}\n\nexport function chaosCellBundlesLink(cluster) {\n return `/${cluster}/${Page.CHAOS_CELL_BUNDLES}`;\n}\n\nexport function chaosAttributesPath(id) {\n return `//sys/chaos_cells/${id}`;\n}\n"],"names":["b","cn","makeItemsCopy","items","map_","item","_objectSpread","DragHandle","sortableHandle","_jsx","className","children","Icon","face","awesome","SortableItem","sortableElement","_ref","isSortable","isSelectable","isDisabled","itemRenderer","onCheckBoxChange","withClickableHandler","active","disabled","selected","checked","selectable","_jsxs","keyColumn","onClick","name","SortableList","sortableContainer","_ref2","useStaticSize","_ref2$withClickableHa","type","mods","ReactList","index","key","length","ColumnSelector","_Component","_inherits","_super","_createSuper","props","_this","_classCallCheck","isHeadless","showSelectedOnly","call","toggleItem","withActualItems","_ref3","_toConsumableArray","findIndex","changedItem","selectAllItems","_ref4","visibleMap","getVisibleItemsMap","each_","deselectAllItems","_ref5","invertItems","_ref6","visibleItems","_handleCheckBoxChange","event","currentTarget","getAttribute","_handleSortEnd","_ref7","oldIndex","newIndex","_ref8","getVisibleItems","fromIndex","toIndex","_items$splice","splice","removed","_slicedToArray","_handleDefaultSort","_ref9","sort","a","aCaption","caption","bCaption","localeCompare","_toggleShownItems","setState","prevState","_changeFilter","filter","state","Object","assign","_createClass","get","this","every","some","value","func","_this2","onChange","TextInput","placeholder","onUpdate","hasClear","_this$props","isFilterable","btnProps","size","renderSearchBox","Button","filter_","buttonALLisDisabled","buttonNONEisDisabled","re","RegExp","escapeRegExp_","test","showDisabledItems","filterItemsByName","toSplit","filterItems","_partition_","partition_","_partition_2","keyItems","reduce_","acc","_this$props2","_this$getVisibleItems2","headless","undefined","empty","React","lockAxis","helperClass","helper","onSortEnd","useDragHandle","_this$props3","classNames","sortable","renderControls","renderList","Component","itemsProps","PropTypes","isRequired","defaultProps","_ref10","_ref10$caption","renderText","asHTML","block","Dropdown","_len","arguments","args","Array","_key","apply","concat","popupVisible","anchor","toggle","open","close","button","trigger","actionProps","onMouseEnter","onMouseLeave","template","_this$props$template","data","renderer","templates","__default__","popup","directions","Popup","placement","onClose","anchorRef","hasArrow","renderTemplate","ref","renderButton","renderPopup","zIndexGroupLevel","toaster","Toaster","LoadDataHandler","error","loaded","errorData","add","theme","autoHiding","title","content","message","hammer","format","NO_VALUE","actions","label","showErrorPopup","_this$props2$alwaysSh","alwaysShowError","Error","Secondary","Bold","SecondaryBold","Warning","WarningLight","NoWrap","Escaped","text","textNode","unipika","prettyprint","UNIPIKA_ESCAPED_SETTINGS","dangerouslySetInnerHTML","__html","TextInputWithDebounce","_props$debounce","debounce","_props$onUpdate","onBlur","onEnterKeyDown","onKeyDown","rest","_objectWithoutProperties","_excluded","_React$useState","_React$useState2","input","setInput","handleChangeExt","throttle_","handleChange","handleKeyDown","e","handleBlur","withSplit","_WithSplit","_React$Component","WithSplit","ReactDOM","document","getElementById","SPLIT_PANE_ID","displayName","getDisplayName","TableInfo","showingItems","totalItems","changeHostFilter","hostFilter","CHANGE_VERSION_SUMMARY_PARTIAL","changeVersionFilter","versionFilter","changeTypeFilter","typeFilter","prepareGroup","group","version","res","total","banned","offline","online","changeVersionStateTypeFilters","stateFilter","bannedFilter","reHashFromNodeVersion","uiSettings","VersionCell","visibleVersion","tildaIndex","indexOf_","substr","shortHash","handleClick","versionContent","Tooltip","hashPart","_res$groups","exec","groups","hash","ClickableText","color","ClipboardButton","shiftText","view","hoverContent","Boolean","Text","VersionCellWithAction","dispatch","useDispatch","tableProps","css","striped","cssHover","showError","handleItemClick","column","getWindowStore","columns","address","match","align","tooltipProps","start_time","sets","detailed","detailsTableProps","tableId","COMPONENTS_VERSIONS_DETAILED_TABLE_ID","mode","aggregateItems","proxies","has","count","set","Map","entries","map","String","getSelectItems","allItems","otherFilters","isAllSelected","isEmpty_","sumBy_","getDetails","components","versionsV2","details","getHostFilter","getFilteredByHost","createSelector","toLowerCase","includes","getFilters","k","getFiltersSkipVersion","filters","getFiltersSkipType","_excluded2","getFiltersSkipState","_excluded3","getFiltersSkipBanned","_excluded4","getFilteredDetails","getVisibleDetails","tables","sortState","utils","getAllVersions","versions","getAllTypes","getAllStates","getAllBanned","getVisibleVersions","getVisibleTypes","getVisibleStates","getVisibleBanned","getVersionSelectItems","getTypeSelectItems","getStatesSelectItems","getBannedSelectItems","getSummarySortState","summarySortState","getSummary","summary","getHideOfflineValue","checkedHideOffline","getVersionsSummaryData","getTotalElementOfSummary","slice","sortArrayBySortState","push","getVersionsSummaryVisibleColumns","isSupportedClusterNodeForVersions","useClusterNode","visibleTypes","Set","keys","forEach","tryToAdd","shortName","SETTINGS","displayIndices","isSpecialRow","VersionsSummary","renderVersion","row","renderNumber","rowData","clickable","handleHideOffline","changeCheckedHideOffline","rowVersion","render","bind","header","renderHeader","setVersionsSummarySortState","order","ColumnHeader","shortTitle","onSort","withUndefined","visibleColumns","sortAccessor","makeColumnInfo","loading","cluster","monitoringLink","UIFactory","getVersionMonitoringLink","Link","url","formatByParams","urlTemplate","ytCluster","target","Checkbox","defaultChecked","DataTableYT","settings","rowClassName","special","mapDispatchToProps","connect","_state$components$ver","getCluster","VersionsV2Updater","updateFn","getState","DISCOVER_VERSIONS","REQUEST","axios","then","preparedTotal","preparedError","preparedVersions","calculatedState","prepareDetails","SUCCESS","FAILURE","Promise","reject","useUpdater","VersionsV2","onBannedChange","_false$true$all$value","changeBannedFilter","false","true","all","versionSelectItems","typeSelectItems","stateSelectItems","changeStateFilter","Filter","DEBOUNCE_TIME","Select","vals","width","hideFilter","getBannedItems","bannedSelectItems","_this3","Sticky","topOffset","HEADER_HEIGHT","isSticky","sticky","renderFilters","ColumnAsTime","ClickableId","ReadableField","printColumnAsError","Host","useText","NodeColumnState","NodeColumnBanned","decommissioned","full","alerts","versionIsError","FirstUppercase","_this$props4","initialLoading","_this$props5","ErrorBoundary","CollapsibleSection","collapsed","UI_COLLAPSIBLE_SIZE","StickyContainer","renderOverview","ElementsTable","isLoading","getDetailsTemplates","allDetails","ProxyActions","handleEditClick","proxy","showNodeMaintenance","host","component","PROXY_TYPE","HTTP","ClickableAttributesButton","path","basePath","withTooltip","MaintenanceRequestsImpl","_ref$requests","requests","_requests$key","user","comment","Label","SubjectCard","MaintenanceRequests","ProxyCard","handleClose","clusterConfig","_this$props$proxy","physicalHost","renderComponentsNodeCardTop","_this$props$proxy2","banMessage","role","loadAverage","networkLoad","updatedAt","maintenanceRequests","MetaTable","NodeColumnRole","visible","renderTop","renderContent","proxyProps","effectiveState","connector","getCurrentClusterConfig","compose","proxiesTableColumnItems","load_average","updated_at","network_load","aggregation","countValues","selectFilter","getProxies","getStateFilter","getRoleFilter","roleFilter","getFiltersObject","getFilteredProxies","filtersObject","filterProxies","bannedFilterAsBool","predicates","compact_","concatByAnd","getAllRoles","getVisibleRoles","filtered","getVisibleProxies","COMPONENTS_PROXIES_TABLE_ID","getRoles","getStates","NodeMaintenanceModal","useThunkDispatch","setError","initialValues","useSelector","getNodeMaintenanceModalInitialValues","_useSelector","getNodeMaintenanceModalState","resourceLimits","allowedMaintenanceTypes","allowLimitsTab","allowChangeRole","YTDFDialog","headerProps","_Fragment","prefix","closeNodeMaintenanceModal","onAdd","_asyncToGenerator","_regeneratorRuntime","_callee","form","_form$getState","_form$getState$values","limits","roleTab","diff","limitsDiff","_context","prev","next","values","t","_initialValues$type","_initialValues$limits","applyMaintenance","stop","_x","fields","split","makeMaintenanceFields","makeErrorFields","makeResourceLimitField","allowOthers","extras","makeRadioExtras","_values$type","_labels$type","ban","decommission","_ref4$","activeLabel","_ref4$2","options","defaults","_OPTIONS$name","_options$format","cpu","gpu","user_memory","system_memory","repair_data_size","replication_data_size","showDefaultValue","defaultValue","defaultValueClassName","bottomLineVisibility","ProxiesUpdater","_React$useMemo","destructFn","resetProxyState","Proxies","activeProxy","splitScreenAction","paneClassNames","SPLIT_TYPE","renderActions","_defineProperty","RPC","onItemClick","tableColumnsSets","renderHost","renderState","renderBanned","renderRole","renderLoadAverage","renderNetworkLoad","renderUpdatedAt","computeKey","states","changeRoleFilter","roles","splitScreen","isSplit","isPaneSplit","mergeScreen","columnName","NodeColumnText","digits","_item$networkLoad","toPrecision","selectProps","global","_components$proxies$p","visibleProxies","getSavedPresets","getTemplates","presets","transform_","isDefault","getPresets","initialFiltersState","defaultPreset","savedPresets","FiltersPresets","handlePresetClick","preset","applyPreset","handleRemoveClick","evt","removePreset","stopPropagation","renderPreset","FilterWithRegExp","_React$PureComponent","toggleRegexpMode","_this$input","_this$props$value","useRegexp","focus","onFilterChange","regexpError","_this$props$placehold","_this$props$placehold2","placeholderRegexp","pin","controlRef","prevFilter","TagSelector","multiple","maxVisibleValues","TAG_FILTER_MODES","ICONS","union","intersection","TagsFilter","_props$size","selectPlaceholder","_props$allowedModes","allowedModes","_value$mode","_value$filter","_value$selected","v","handleFilterChange","handleSelectChange","selectedItems","control","modes","m","itemMode","icon","toUpperCase","substring","action","DropdownMenu","switcher","groupFilterProps","from","valid","to","SetupModal","handleApplySetup","savePreset","_this$state","saveAsTemplate","templateName","setup","newValue","updateListWithAll","default","handleValueFilterChange","section","parsedValue","parseBytes","isValid","isNaN","handleTextFilterChange","handleTemplateCheckboxChange","handleTemplateNameChange","stateValue","handler","scope","nodeStates","Readable","ENABLED","FLAG_STATE","DISABLED","ALL","invalid","_ref2$format","formatter","Number","toString","preparedValue","autofocus","_ref3$disabled","_ref3$invalid","_ref4$disabled","_ref4$invalid","_this$prepareFiltersC","prepareFiltersCallback","_this$prepareFiltersC2","firstCallback","secondCallback","_filter$from","fromFilterValid","fromFilterValue","_filter$to","toFilterValid","toFilterValue","renderValueFilter","filterable","RadioButton","radioItems","ev","handleRadioChange","_this4","nodeTags","nodeRacks","renderTextFilter","renderTagsFilter","renderStatesSelect","renderRadioGroup","_this5","mediumList","Fragment","renderFiltersGroup","medium","MEDIUM_COLS_PREFIX","_this$state2","renderDefaultFilters","renderStorageFilters","renderCpuFilters","renderResourcesFilters","renderTabletsFilters","renderCheckBox","Hotkey","hotkeySettings","Modal","onCancel","onConfirm","loadOptions","prevProps","inner","mapValues_","initialState","storage","newStorage","radioProps","getComponentNodesFiltersSetup","getMediumListNoCache","getComponentNodesTags","getComponentNodesRacks","COMPONENTS_AVAILABLE_STATES","getComponentNodesFilterSetupStateValue","getComponentsNodesFilterOptions","loadNodeAttributes","NODE_LOAD_REQUEST","ytApiV3Id","YTApiId","nodeAttributes","attributes","prepareAttributes","Node","ATTRIBUTES","node","NODE_LOAD_SUCCESS","NODE_LOAD_FAILURE","getSortedItems","COMPONENTS_NODES_NODE_TABLE_ID","_state","tabletSlots","raw","nodeTableProps","nodeSelector","nodeHostSelector","_nodeSelector$node","getNodeAlertCount","_state$components$nod","alertCount","getNodeAlerts","_state$components$nod2","hasCpuAndMemoryMeta","cpuProgress","memoryProgress","networkProgress","NodeCpuAndMemory","memoryData","memoryText","cpuText","networkText","Progress","MemoryProgress","progress","progressText","hasResourcesMeta","userSlots","usage","sealSlots","repairSlots","removalSlots","replicationSlots","NodeResources","replicationSLots","hasStorageMeta","spaceProgress","sessions","chunks","IOWeight","NodeStorage","ioItems","spaceText","YT","window","genTabletCellBundlesCellUrl","cell_id","routed","peer_id","_TABLET_SLOTS","TABLET_SLOTS","StatusBlock","NodeTabletSlots","startIndex","useThemeYT","getNodeMetaItems","dataCenter","decommissionedMessage","disableJobs","disableWriteSession","disableTabletCells","lastSeenTime","rack","stateText","stateTheme","getStateTheme","renderLabel","NodeCardUpdater","timeout","onlyOnce","locations","low_watermark_space","available_space","session_count","chunk_count","used_space","throttling_writes","throttling_reads","enabled","sick","medium_name","location_uuid","byState","NodeCard","_this$props$node","location","locationProgress","locationText","Template","FormattedValue","renderLocation","alert","Alert","_this$props$node2","systemTags","userTags","tag","tabIndex","makeComponentsNodesUrl","renderDefault","renderAlerts","renderLocations","renderTabletSlots","renderCpuAndMemory","renderStorage","renderResources","renderCard","_nodeSelector","NodesUpdater","getRequiredAttributes","nodeTypes","getComponentsNodesNodeTypes","getNodes","useUpdaterWithMemoizedParams","Nodes","activeNodeHost","selectedColumns","nodes","getSelectedIndex","memoize_","handlePresetChange","_node","sideBarEnabled","handleColumnsChange","keyCode","KeyCode","ARROW_DOWN","preventDefault","selectNextSuggestion","ARROW_UP","selectPrevSuggestion","ESCAPE","handleSetupModalClose","handleContentModeChange","_callee2","changeContentMode","_context2","nodesTableProps","colInfo","hidden","includes_","selectedIndex","contentMode","toggleVisible","filterCount","isFiltered","CONTENT_MODE","CUSTOM","allColumns","ComponentsNodeTypeSelector","relative","Loader","Radiobutton","CONTENT_MODE_ITEMS","hasSplit","custom","visibleNodes","getVisibleNodes","getSelectedColumns","defaultColumns","getComponentNodesTableProps","getSettingsEnableSideBar","getComponentNodesFiltersCount","withVisible","CancelHelper","getShards","GET_SHARDS","removeAllRequests","list","componentsShards","parameters","cancellation","saveCancelToken","shards","code","yt","CANCELLED","closeNameEditor","CLOSE_SHARD_NAME_EDITOR","setShardName","id","SET_SHARD_NAME","openNameEditor","OPEN_SHARD_NAME_EDITOR","_state$components$sha","nameId","nameVisible","nameLoading","nameLoaded","nameError","nameErrorData","editId","initialName","_useState","useState","_useState2","changeName","isConfirmDisabled","openAttributesModal","attribute","tableSettings","account_statistics","node_count","abortAllRequests","useEffect","FormattedId","Name","NodeCount","NodeGeneralTab","getNodeMemoryLoaded","memory","getNodeMemoryLoading","getNodeMemoryError","getNodeMemoryViewMode","viewMode","getNodeMemoryFilter","getNodeMemoryStateHost","getNodeMemorySortOrder","sortOrder","getNodeMemoryCollapsedBundles","collapsedBundles","getNodeMemoryUsageTotal","getNodeMemoryUsageBundles","bundles","getNodeMemoryUsageTables","_state$components$nod3","getNodeMemoryUsageTablesSortOrder","tablesSortOrder","getNodeMemoryUsageTotalStorePreload","calculateStorePreload","getNodeMemoryUsageTotalTableStatic","_state$components$nod4","tablet_static","getNodeMemoryUsageTotalRowCache","_state$components$nod5","row_cache","_ref$preload_store_co","preload_store_count","allCount","NaN","_ref$preload_pending_","preload_pending_store_count","pending","_ref$preload_failed_s","preload_failed_store_count","failed","completed","getNodeMemoryUsageTotalTabletDynamic","tablet_dynamic","passive","backing","limit","others","other","sum_","toArray_","getNodeMemoryUsageBundlesByName","itemsByName","maxTabletStatic","maxRowCache","forEach_","bundleName","_total$tablet_dynamic","tmp","parent","storePreload","rowCache","rowCacheLimit","tabletStatic","tabletStaticLimit","tabletDynamic","tabletDynamicSum","isBundle","max_","getNodeMemoryUsageBundlesTreeRoot","bundlesInfo","cells","bundle","cellName","prepareTree","getNodeMemoryUsageBundlesTreeRootFiltered","root","filterTree","indexOf","isCollapsed","getNodeMemoryUsageBundlesItems","sortTreeInPlace","flattenTree","sortTree","orderTypeToOldSortState","sortWithUndefined","allowBundlesForTables","_toArray_","first","tablet_cell_bundle","getNodeMemoryUsageTablesAndBundlesByName","allowBundles","maxStatic","maxDynamic","tablesByName","encodeURIComponent","getNodeMemoryUsageTablesTree","tablesAndBundles","getNodeMemoryUsageTablesFiltered","getNodeMemoryUsageTablesItemsSorted","progressClass","NodeBundlesTotal","TabletDynamicTotal","UsageLimitProgress","StorePreload","COLORS","STACKED_PROGRESS_BAR_COLORS","_props$data","hideLimit","limitTooltipTitle","usageSum","stack","Bytes","_COLORS$key","getProgressBarColorByIndex","style","backgroundColor","borderRadius","height","_props$data2","_React$useMemo2","join","progressClassName","NodeMemoryDetailsTable","toggleExpand","nameColumnTitle","toggleSort","nextOrder","sortStateByName","allowedOrderTypes","level","_item$attributes","_ref2$row$attributes","_ref3$row$attributes","_ref4$row$attributes","DATA_TABLE_YT_SETTINGS","onRowClick","toggleNodeMemoryBundleExpanded","NODE_MEMORY_PARTIAL","setNodeMemoryFilters","NodeBundles","toggleExpandState","handleSort","setNodeBundlesSort","NodeTables","NodeMemoryUsageToolbar","handleViewMode","handleFilter","CustomRadioButton","NodeMemoryUsage","decodeURIComponent","params","NODE_MEMORY_LOAD_REQUEST","nodeMemoryUsage","NODE_MEMORY_LOAD_SUCCESS","NODE_MEMORY_LOAD_FAILURE","loadNodeMemoryUsage","ErrorBlock","NodeMeta","tags","_ref$banMessage","metaTableItems","tagsItems","Tags","urlItems","getExtraMetaTableItemsForComponentsNode","NodeAlerts","NodeLocations","NodeTabletSlotsTab","cancelHeler","getNodeUnrecognizedOptionsData","unrecognizedOptions","getNodeUnrecognizedOptionsError","NodeUnrecognizedOptions","NODE_UNRECOGNIEZED_OPTIONS","nodeUnrecognizedOptions","removeAllAndSave","isCancelled","loadNodeUnrecognizedOptions","unipikaSettings","getNodeUnrecognizedOptionsYsonSettings","Yson","folding","virtualized","NodePage","matchUrl","tabProps","_node$locations","_makeTabProps","_makeTabProps2","makeTabProps","NodeTab","MEMORY_USAGE","show","LOCATIONS","ALERTS","counter","GENERAL","Tabs","Switch","Route","UNRECOGNIZED_OPTIONS","Redirect","Page","COMPONENTS","RedirectToTabletCells","tabletActiveBundleLink","lastVisitedTab","getLastVisitedTabs","tabSize","UI_TAB_SIZE","_ref$lastVisitedTab","DEFAULT_TAB","Tab","defaultTab","TABLET_CELLS","HTTP_PROXIES","nodePageMatch","matchPath","pathname","NODES","VERSIONS","RPC_PROXIES","SHARDS","Shards","Placeholder","ComponentsTopRowContent","ComponentsTab","ComponentsNodeTopRowContent","RowWithName","page","ComponentsBreadcrumbs","nodeHost","history","useHistory","result","BreadcrumbsItem","href","Breadcrumbs","navigate","showRoot","tab","useRouteMatch","getYsonSettings","getFormat","getShowDecoded","shouldCompact","shouldEscapeWhitespace","useBinaryAsHex","showDecoded","compact","escapeWhitespace","binaryAsHex","getUnipikaSettingsFromConfig","getJobGeneralYsonSettings","clone_","getJobSpecificationYsonSettings","getTableYsonSettings","getOperationAttributesYsonSettings","getOperationExperimentsYsonSettings","getNavigationMountConfigYsonSettings","getEditJsonYsonSettings","getPreviewCellYsonSettings","getFlowSpecYsonSettings","makeNavigationLink","NAVIGATION","search","info","URLSearchParams","reduce","_info$k$options","serialize","_info$k$options2","_info$k$options2$seri","append","makeURLSearchParams","getNavigationParams","makeProxyUrl","makeSchedulingUrl","pool","poolTree","SCHEDULING","makeAccountsUrl","account","ACCOUNTS","prepareTabletCells","tabletCells","tabletCell","peer","peerAddress","uncompressed","ypath","compressed","tablets","health","peers","find_","aggregateTotal","prepare","isTotal","collectBundlesAttrs","dst","attrs","resource_limits","resource_usage","tc_usage","tc_limit","tsm_usage","tsm_limit","bundle_controller_target_config","enable_bundle_controller","enable_bundle_balancer","changelog_account","snapshot_account","node_tag_filter","zone","tablet_count","tablet_count_limit","tablet_count_free","tablet_count_percentage","nanToUndefined","tablet_static_memory","tablet_static_memory_limit","tablet_static_memory_free","tablet_static_memory_percentage","prepareBundles","$attributes","bundleNodes","bundleList","unique_node_tag","tabletCellNavigationLink","cellId","tabletTab","TabletsTab","INSTANCES","TABLET_CELL_BUNDLES","tabletActiveChaosBundleLink","CHAOS_CELL_BUNDLES","CHAOS_CELLS","tabletCellBundleRootLink","tabletChaosBundleRootLink","tabletAttributesPath","chaosCellNavigationLink","chaosActiveBundleLink","chaosAttributesPath"],"sourceRoot":""}
|