@ytsaurus/ui 1.64.0 → 1.65.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/README.md +7 -0
- package/dist/public/build/assets-manifest.json +37 -37
- package/dist/public/build/css/{577.b41224cd.chunk.css → 577.f8556dcc.chunk.css} +2 -2
- package/dist/public/build/css/577.f8556dcc.chunk.css.map +1 -0
- package/dist/public/build/css/{cluster-menu.1242e46d.chunk.css → cluster-menu.d8cafef3.chunk.css} +2 -2
- package/dist/public/build/css/cluster-menu.d8cafef3.chunk.css.map +1 -0
- package/dist/public/build/css/cluster-page-wrapper.4610796b.chunk.css +2 -0
- package/dist/public/build/css/cluster-page-wrapper.4610796b.chunk.css.map +1 -0
- package/dist/public/build/css/main.fb5dcfa3.css +10 -0
- package/dist/public/build/css/{main.b2af1626.css.map → main.fb5dcfa3.css.map} +1 -1
- package/dist/public/build/js/2081.b642c3c2.chunk.js +2 -0
- package/dist/public/build/js/{2081.56ca6548.chunk.js.map → 2081.b642c3c2.chunk.js.map} +1 -1
- package/dist/public/build/js/4016.37d0a2f0.chunk.js +3 -0
- package/dist/public/build/js/4016.37d0a2f0.chunk.js.map +1 -0
- package/dist/public/build/js/{6729.91ef11dc.chunk.js → 6729.6403cc56.chunk.js} +2 -2
- package/dist/public/build/js/6729.6403cc56.chunk.js.map +1 -0
- package/dist/public/build/js/{7077.7dab612c.chunk.js → 7077.fb18710a.chunk.js} +2 -2
- package/dist/public/build/js/7077.fb18710a.chunk.js.map +1 -0
- package/dist/public/build/js/acl.19d28cd7.chunk.js +2 -0
- package/dist/public/build/js/acl.19d28cd7.chunk.js.map +1 -0
- package/dist/public/build/js/{cluster-page-wrapper.eddde18f.chunk.js → cluster-page-wrapper.697b0741.chunk.js} +2 -2
- package/dist/public/build/js/cluster-page-wrapper.697b0741.chunk.js.map +1 -0
- package/dist/public/build/js/job.bddddc9e.chunk.js +2 -0
- package/dist/public/build/js/job.bddddc9e.chunk.js.map +1 -0
- package/dist/public/build/js/main.5d8871a8.js +3 -0
- package/dist/public/build/js/main.5d8871a8.js.map +1 -0
- package/dist/public/build/js/navigation-flow.c43f2927.chunk.js +2 -0
- package/dist/public/build/js/navigation-flow.c43f2927.chunk.js.map +1 -0
- package/dist/public/build/js/navigation.e4272357.chunk.js +2 -0
- package/dist/public/build/js/navigation.e4272357.chunk.js.map +1 -0
- package/dist/public/build/js/{runtime.7752c183.js → runtime.8fed68b1.js} +2 -2
- package/dist/public/build/js/{runtime.7752c183.js.map → runtime.8fed68b1.js.map} +1 -1
- package/dist/public/build/js/system.92b7afc7.chunk.js +2 -0
- package/dist/public/build/js/system.92b7afc7.chunk.js.map +1 -0
- package/dist/public/build/manifest.json +32 -32
- package/dist/public/favicon-dorn-yellow.png +0 -0
- package/dist/public/favicon-rubber.png +0 -0
- package/dist/server/configs/e2e/local.js +4 -0
- package/package.json +2 -2
- package/dist/public/build/css/577.b41224cd.chunk.css.map +0 -1
- package/dist/public/build/css/cluster-menu.1242e46d.chunk.css.map +0 -1
- package/dist/public/build/css/cluster-page-wrapper.0b6a786f.chunk.css +0 -2
- package/dist/public/build/css/cluster-page-wrapper.0b6a786f.chunk.css.map +0 -1
- package/dist/public/build/css/main.b2af1626.css +0 -10
- package/dist/public/build/js/2081.56ca6548.chunk.js +0 -2
- package/dist/public/build/js/4016.03291f63.chunk.js +0 -3
- package/dist/public/build/js/4016.03291f63.chunk.js.map +0 -1
- package/dist/public/build/js/6729.91ef11dc.chunk.js.map +0 -1
- package/dist/public/build/js/7077.7dab612c.chunk.js.map +0 -1
- package/dist/public/build/js/acl.cd1fe761.chunk.js +0 -2
- package/dist/public/build/js/acl.cd1fe761.chunk.js.map +0 -1
- package/dist/public/build/js/cluster-page-wrapper.eddde18f.chunk.js.map +0 -1
- package/dist/public/build/js/job.31c91355.chunk.js +0 -2
- package/dist/public/build/js/job.31c91355.chunk.js.map +0 -1
- package/dist/public/build/js/main.693c4cb1.js +0 -3
- package/dist/public/build/js/main.693c4cb1.js.map +0 -1
- package/dist/public/build/js/navigation-flow.f7bcba21.chunk.js +0 -2
- package/dist/public/build/js/navigation-flow.f7bcba21.chunk.js.map +0 -1
- package/dist/public/build/js/navigation.c8c7b9cc.chunk.js +0 -2
- package/dist/public/build/js/navigation.c8c7b9cc.chunk.js.map +0 -1
- package/dist/public/build/js/system.57ed0f9d.chunk.js +0 -2
- package/dist/public/build/js/system.57ed0f9d.chunk.js.map +0 -1
- /package/dist/public/build/js/{4016.03291f63.chunk.js.LICENSE.txt → 4016.37d0a2f0.chunk.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{main.693c4cb1.js.LICENSE.txt → main.5d8871a8.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"js/2081.56ca6548.chunk.js","mappings":"sNAOe,SAASA,EAAgBC,GAIb,IAADC,EAAAD,EAHtBE,KAAAA,OAAI,IAAAD,EAAG,iBAAgBA,EAAAE,EAAAH,EACvBI,KAAAA,OAAI,IAAAD,EAAG,IAAGA,EACPE,GAAIC,EAAAA,EAAAA,GAAAN,EAAAO,GAEP,OACIC,EAAAA,EAAAA,KAACC,EAAAA,GAAMC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CAACR,KAAMA,EAAME,KAAMA,GAAUC,GAAI,IAAAM,UACpCH,EAAAA,EAAAA,KAACI,EAAAA,EAAI,CAACC,QAAQ,SAG1B,C,mFCDA,SAASC,EAAUC,GACf,IAAOC,EAAuED,EAAvEC,UAAWC,EAA4DF,EAA5DE,IAAKC,EAAuDH,EAAvDG,MAAOC,EAAgDJ,EAAhDI,MAAOR,EAAyCI,EAAzCJ,SAAUS,EAA+BL,EAA/BK,SAAUC,EAAqBN,EAArBM,KAAMC,EAAeP,EAAfO,YAE/D,IAAKL,EACD,OAAO,KAGX,IAAMM,EAAOH,EAAW,MAAOZ,EAAAA,EAAAA,KAACI,EAAAA,EAAI,CAACC,QAAQ,YAAYQ,KAAMA,IACzDG,EAAUb,GACZc,EAAAA,EAAAA,MAACC,EAAAA,SAAc,CAAAf,SAAA,CACVY,EACAZ,KAGLY,EAGJ,OACIf,EAAAA,EAAAA,KAACmB,EAAAA,EAAI,CAACX,UAAWA,EAAWY,OAAO,SAAST,MAAOA,EAAOF,IAAKA,EAAKC,MAAOA,QAAAA,EAAS,OAAOP,SACtFW,EAAcA,EAAYE,GAAWA,GAGlD,CAEA,QAAeE,EAAAA,KAAWZ,E,uKChCpBe,GAAIC,EAAAA,EAAAA,GAAM,uBACVC,GAAYD,EAAAA,EAAAA,GAAM,oBAMXE,EAA2B,SAAAC,IAAAC,EAAAA,EAAAA,GAAAF,EAAAC,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAAJ,GAAA,SAAAA,IAAA,IAAAK,GAAAC,EAAAA,EAAAA,GAAA,KAAAN,GAAA,QAAAO,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAWlC,OAXkCP,EAAAF,EAAAU,KAAAC,MAAAX,EAAA,OAAAY,OAAAL,KAOpCM,OAAS,YAGLC,EAFmBZ,EAAKtB,MAAjBkC,WAEGZ,EAAKtB,MAAMmC,UACzB,EAACb,CAAC,CA2CD,OA3CAc,EAAAA,EAAAA,GAAAnB,EAAA,EAAAoB,IAAA,SAAAC,MAED,WACI,IAAAC,EASIC,KAAKxC,MARLyC,EAAIF,EAAJE,KACA7C,EAAQ2C,EAAR3C,SACAP,EAAIkD,EAAJlD,KACAqD,EAAQH,EAARG,SACAzC,EAASsC,EAATtC,UACAkC,EAASI,EAATJ,UACAQ,EAAeJ,EAAfI,gBACAC,EAAmBL,EAAnBK,oBAGJ,OACInD,EAAAA,EAAAA,KAACoD,EAAAA,EAAa,CAAAjD,UACVc,EAAAA,EAAAA,MAAA,OAAKT,UAAWa,EAAE,CAACgC,OAAQH,GAAkB1C,GAAWL,SAAA,EACpDc,EAAAA,EAAAA,MAAA,OAAKT,UAAWe,EAAU,CAAC3B,KAAAA,EAAMqD,SAAU,QAAQ9C,SAAA,EAC/Cc,EAAAA,EAAAA,MAAA,QACIT,UAAWe,EACP,UACA,CACI+B,UAAW,OAEfjC,EAAE,UAENkC,QAASR,KAAKP,OAAOrC,SAAA,CAEpB6C,GACDhD,EAAAA,EAAAA,KAAA,KAAAG,UACIH,EAAAA,EAAAA,KAACI,EAAAA,EAAI,CACDI,UAAWa,EAAE,UAAW,CAAC,gBAAiB8B,IAC1C9C,QAASqC,EAAY,aAAe,kBAI/CO,MAGHP,IAAa1C,EAAAA,EAAAA,KAACoD,EAAAA,EAAa,CAAAjD,SAAEA,QAI/C,KAACqB,CAAA,CAtDmC,CAASgC,EAAAA,WAwElC,SAASC,EAAmBlD,GACvC,IAAOkC,EAAYlC,EAAZkC,SACPiB,EAAkCxC,EAAAA,SAAeX,EAAMmC,WAAUiB,GAAAC,EAAAA,EAAAA,GAAAF,EAAA,GAA1DhB,EAASiB,EAAA,GAAEE,EAAYF,EAAA,GAExBG,EAAW5C,EAAAA,aACb,SAAC2B,GACGgB,EAAahB,GACTJ,GACAA,EAASI,EAEjB,GACA,CAACgB,EAAcpB,IAGnB,OAAOzC,EAAAA,EAAAA,KAACwB,GAA2BtB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKK,GAAK,IAAEkC,SAAUqB,EAAUpB,UAAWA,IAClF,CAvFalB,EACFuC,aAAe,CAClBnE,KAAM,IACN8C,WAAW,EACXQ,gBAAiB,M,6KCTnB5B,GAAQ0C,EAAAA,EAAAA,GAAG,aAEXC,GAAYC,EAAA,IAAAC,EAAAA,EAAAA,GAAAD,EACb,GAAK,SAAMC,EAAAA,EAAAA,GAAAD,EAAC,MACR,YAASC,EAAAA,EAAAA,GAAAD,EAAC,OACT,cAAWC,EAAAA,EAAAA,GAAAD,EACjB,gBAAiB,oBAAiBC,EAAAA,EAAAA,GAAAD,EAClC,iBAAkB,sBAAmBC,EAAAA,EAAAA,GAAAD,EACrC,gBAAiB,mBAAgBC,EAAAA,EAAAA,GAAAD,EACjC,iBAAkB,gBAAcA,GAafE,EAAQ,SAAAC,IAAA3C,EAAAA,EAAAA,GAAA0C,EAAAC,GAAA,IAAA1C,GAAAC,EAAAA,EAAAA,GAAAwC,GAAA,SAAAA,IAAA,IAAAvC,GAAAC,EAAAA,EAAAA,GAAA,KAAAsC,GAAA,QAAArC,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GASvB,OATuBP,EAAAF,EAAAU,KAAAC,MAAAX,EAAA,OAAAY,OAAAL,KACzBqB,QAAU,WACN,IAAAT,EAAyDjB,EAAKtB,MAAvD+D,EAAKxB,EAALwB,MAAOR,EAAQhB,EAARgB,SAAUS,EAAczB,EAAdyB,eAAgBC,EAAa1B,EAAb0B,cACnCV,GAKLA,GADkBW,EAAAA,EAAAA,IAAmBH,EAAOC,EAAgBC,GAEhE,EAAC3C,CAAC,CAiBD,OAjBAc,EAAAA,EAAAA,GAAAyB,EAAA,EAAAxB,IAAA,SAAAC,MAED,WACI,IAAA6B,EAA0C3B,KAAKxC,MAAxCC,EAASkE,EAATlE,UAAWmE,EAAKD,EAALC,MAAOL,EAAKI,EAALJ,MAAOM,EAAMF,EAANE,OAC1B7D,EAAOkD,EAAaK,GAAS,IAEnC,OACIrD,EAAAA,EAAAA,MAAA,QAAMT,UAAWc,EAAM,CAACsD,OAAAA,GAASpE,GAAY+C,QAASR,KAAKQ,QAAQpD,SAAA,CAC9DwE,IAAS3E,EAAAA,EAAAA,KAAA,QAAMQ,UAAWc,EAAM,SAASnB,SAAEwE,KAC5C3E,EAAAA,EAAAA,KAAC6E,EAAAA,EAAO,CACJrE,UAAWc,EAAM,QACjBN,QAASsD,EAAQQ,EAAAA,EAAOC,cAAcT,GAAS,YAAYnE,UAE3DH,EAAAA,EAAAA,KAACI,EAAAA,EAAI,CAACC,QAASU,EAAMF,KAAK,cAI1C,KAACuD,CAAA,CA1BwB,CAASlD,EAAAA,U,wMCS/B,SAAS8D,EAAWC,GAAsB,IAAhBC,EAAQlD,UAAAC,OAAA,QAAAkD,IAAAnD,UAAA,GAAAA,UAAA,GAAG,CAAC,EACrCxB,GAAYc,EAAAA,EAAAA,GAAM,iBAGlBd,EADA0E,EAASE,IACG5E,GACR,GACAc,EAAAA,EAAAA,GAAM4D,EAASE,IAAI9D,MAAnBA,CAA0B4D,EAASE,IAAIC,MAAInF,EAAAA,EAAAA,GAAA,GACpCgF,EAASE,IAAIE,QAIZ9E,IAGhB,IAAM+E,EA3BV,SAA0BN,EAAMO,GAC5B,IAAMjF,EAAQ,CAAC,EASf,OAPIiF,EAEAjF,EAAMkF,wBAA0B,CAACC,OAAQT,GAEzC1E,EAAMJ,SAAWwF,EAAAA,EAAQC,OAAOC,OAAOZ,IAGpC1E,CACX,CAgBsBuF,CAAiBb,EAAMC,EAASM,QAE5C9E,EAAQwE,EAASxE,OAASuE,EAEhC,OAAOjF,EAAAA,EAAAA,KAAA,QAAAE,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAUqF,GAAS,IAAE7E,MAAOA,EAAOF,UAAWA,IACzD,CAYO,SAASuF,EAAgCC,EAAMC,GAClD,IAAMC,EAASnD,KAAKoD,UAAUF,GAC9B,OAAOG,EAAAA,EAAOtB,OAAqB,aAAEoB,EAAOG,IAAIL,GAAO,CACnDlB,OAAQ,gBAEhB,CAEO,SAASwB,EAA2BN,EAAMC,GAC7C,IAAMC,EAASnD,KAAKoD,UAAUF,GAC9B,OACIjG,EAAAA,EAAAA,KAAA,QAAMQ,UAAU,oBAAmBL,SAC9BiG,EAAAA,EAAOtB,OAAsB,cAAEoB,EAAOG,IAAIL,KAGvD,CAEO,SAASO,EAAkBP,EAAMC,GACpC,IAAMpD,EAAQE,YAAAA,KAAMoD,UAAYpD,KAAKoD,UAAUF,GAAYI,IAAIL,GAAQA,EAAKC,GAC5E,OAAOjG,EAAAA,EAAAA,KAACwG,EAAY,CAAC3D,MAAOA,GAChC,CAEO,SAAS2D,EAAYhH,GAAW,IAATqD,EAAKrD,EAALqD,MAC1B,OACI7C,EAAAA,EAAAA,KAAA,QAAMQ,UAAU,oBAAmBL,SAC9BiG,EAAAA,EAAOtB,OAAiB,SAAEjC,EAAO,CAACiC,OAAQ,UAGvD,CAEO,SAAS2B,EAAmBC,GAI/B,MAAwB,YAAjBC,EAAAA,EAAAA,GAAOD,IACV1G,EAAAA,EAAAA,KAACmB,EAAAA,EAAI,CAACR,MAAM,QAAQ4C,QAJN,YACdqD,EAAAA,EAAAA,IAAeF,EAAO,CAACG,aAAa,GACxC,EAE2C1G,SAAC,SAIxCiG,EAAAA,EAAOtB,OAAOgC,QAEtB,CAOO,SAASC,EAASf,EAAMC,GAC3B,OAAOG,EAAAA,EAAOtB,OAAe,OAAEkB,EAAKC,GACxC,CAEA,SACIe,YApGJ,SAAyBhB,EAAMC,GAC3B,OAAOJ,OAAOO,EAAAA,EAAOtB,OAAuB,eAAEkB,EAAKC,IACvD,EAmGIgB,WAAY,CAAC,EACbC,IAAK,SAAUC,EAAYC,GACvBrE,KAAKkE,WAAWE,GApHxB,SAA2BC,GACvB,OAAOC,OAAOC,KAAKF,GAAWG,QAAO,SAACC,EAAc5E,GAGhD,OAFA4E,EAAa5E,GAAOwE,EAAUxE,GAEvB4E,CACX,GAAG,CAAC,EACR,CA8GsCC,CAAkBL,EACpD,EACAf,IAAK,SAAUc,GACX,OAAOpE,KAAKkE,WAAWE,IAAe,CAAC,CAC3C,E,6KCvHE7F,GAAQ0C,EAAAA,EAAAA,GAAG,mBAEX0D,EAAa,CACfC,QAAS,UACTC,QAAS,UACTC,KAAM,WAGJC,EAA0C,CAC5CC,OAAQ,UACRC,QAAS,UAGN,SAASC,EAAezI,GAAmD,IAAD0I,EAAhDC,EAAK3I,EAAL2I,MACvBlD,EAAOH,EAAAA,EAAOsD,eAAeD,GAC7BxH,EAA0B,QAArBuH,EAAGJ,EAAYK,UAAM,IAAAD,EAAAA,EAAI,UAEpC,OAAOlI,EAAAA,EAAAA,KAACqI,EAAAA,EAAK,CAAC1H,MAAOA,EAAOH,UAAWc,EAAM,SAAUgH,KAAK,OAAOrD,KAAMA,GAC7E,CAEO,SAASsD,EAAgBC,GAC5B,OADoCA,EAANC,QACdzI,EAAAA,EAAAA,KAAC0I,EAAAA,EAAW,CAACzD,KAAK,IAAItE,MAAM,WAAcmE,EAAAA,EAAOgC,QACrE,CAEO,SAAS6B,EAAcC,GAAkD,IAAhDC,EAAID,EAAJC,KACtBlI,EAAQ+G,EAAWmB,IAAS,OAC5B5D,EAAOH,EAAAA,EAAOgE,QAAQD,GAE5B,OAAO7I,EAAAA,EAAAA,KAACqI,EAAAA,EAAK,CAAC1H,MAAOA,EAAO2H,KAAK,OAAOrD,KAAMA,GAClD,CAEO,SAAS8D,EAAcC,GAA0B,IAAxB/D,EAAI+D,EAAJ/D,KAC5B,OACIhE,EAAAA,EAAAA,MAAA,OAAKT,UAAWc,EAAM,OAAQ,qCAAqCnB,SAAA,EAC/DH,EAAAA,EAAAA,KAAA,OAAKQ,UAAWc,EAAM,gBAAiBZ,MAAOuE,EAAK9E,SAC9C8E,KAELjF,EAAAA,EAAAA,KAACiJ,EAAAA,EAAe,CAAChE,KAAMA,EAAMvF,KAAK,iBAAiBE,KAAK,QAGpE,CAEO,SAASsJ,EAAWC,GAUvB,IATAlE,EAAIkE,EAAJlE,KACA1B,EAAO4F,EAAP5F,QACA6F,EAAYD,EAAZC,aAAYC,EAAAF,EACZrE,OAAAA,OAAM,IAAAuE,EAAG,SAACC,GAAC,OAAKA,CAAC,EAAAD,EAOjB,OACIpI,EAAAA,EAAAA,MAAA,OAAKT,UAAU,4DAA2DL,SAAA,EACtEH,EAAAA,EAAAA,KAACuJ,EAAAA,EAAa,CACVC,MAAM,UACNjG,QAAS,kBAAMA,aAAO,EAAPA,GAAW,EAC1B/C,UAAW,uCAAuCL,UAElDH,EAAAA,EAAAA,KAAC6E,EAAAA,EAAO,CACJrE,UAAWc,EAAM,4BACjBN,QAASoI,EAAetE,EAAOG,GAAQ,KAAK9E,SAE3C2E,EAAOG,OAEA,KAEhBjF,EAAAA,EAAAA,KAACiJ,EAAAA,EAAe,CAAChE,KAAMA,EAAMvF,KAAK,iBAAiBE,KAAK,QAGpE,C,oLCrEM0B,GAAQ0C,EAAAA,EAAAA,GAAG,gBAEXyF,EAAc,SAAAhI,IAAAC,EAAAA,EAAAA,GAAA+H,EAAAhI,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAA6H,GAAA,SAAAA,IAAA,IAAA5H,GAAAC,EAAAA,EAAAA,GAAA,KAAA2H,GAAA,QAAA1H,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAiBa,OAjBbP,EAAAF,EAAAU,KAAAC,MAAAX,EAAA,OAAAY,OAAAL,KAiBhBwH,SAAWxI,EAAAA,YAAiBW,CAAC,CAqD5B,OArD2Bc,EAAAA,EAAAA,GAAA8G,EAAA,EAAA7G,IAAA,iBAAAC,MAE5B,WACI,IAAAC,EAAiCC,KAAKxC,MAA/BoJ,EAAU7G,EAAV6G,WAAYC,EAAU9G,EAAV8G,WAEnB,OAAO5J,EAAAA,EAAAA,KAAC6J,EAAAA,EAAQ,CAACC,MAAOF,EAAY3E,KAAM0E,GAC9C,GAAC,CAAA/G,IAAA,aAAAC,MAED,SAAWkH,GAAW,IAADC,EAAAC,EACXC,EAA8B,QAAnBF,EAAGD,EAASI,eAAO,IAAAH,OAAA,EAAhBA,EAAkBI,KAChCC,EAA+B,QAAnBJ,EAAGF,EAASI,eAAO,IAAAF,OAAA,EAAhBA,EAAkBK,MACjCC,EAA+C,iBAAjBF,EAEpC,OACIpJ,EAAAA,EAAAA,MAAA,MAAwBT,UAAWc,EAAM,YAAYnB,SAAA,EACjDc,EAAAA,EAAAA,MAAA,OAAKT,UAAWc,EAAM,mBAAmBnB,SAAA,EACrCH,EAAAA,EAAAA,KAAA,OACIQ,UAAWc,EAAM,yBACjBkJ,MAAO,CAACC,gBAAiBV,EAASP,UAEtCxJ,EAAAA,EAAAA,KAAA,UAAQQ,UAAWc,EAAM,yBAAyBnB,SAC7CiG,EAAAA,EAAOtB,OAAsB,cAAEiF,EAAS/G,YAGjD/B,EAAAA,EAAAA,MAAA,OAAKT,UAAWc,EAAM,iBAAiBnB,SAAA,EACnCH,EAAAA,EAAAA,KAAA,QAAAG,SAAOiG,EAAAA,EAAOtB,OAAc,MAAEoF,KAC7BK,GAAwB,MACxBA,IAAwBvK,EAAAA,EAAAA,KAAA,QAAAG,SAAOiG,EAAAA,EAAOtB,OAAc,MAAEuF,UAbtDN,EAAS/G,KAiB1B,GAAC,CAAAJ,IAAA,qBAAAC,MAED,WAAsB,IAAD6H,EAAA,KACVd,EAAc7G,KAAKxC,MAAnBqJ,WAEP,OACIA,EAAW3H,OAAS,IAChBjC,EAAAA,EAAAA,KAAA,OAAKQ,UAAWc,EAAM,SAASnB,UAC3BH,EAAAA,EAAAA,KAAA,MAAIQ,UAAWc,EAAM,WAAWnB,SAC3BwK,IAAKf,GAAY,SAACG,GAAQ,OAAKW,EAAKE,WAAWb,EAAS,OAK7E,GAAC,CAAAnH,IAAA,SAAAC,MAED,WACI,OACI7C,EAAAA,EAAAA,KAAC6E,EAAAA,EAAO,CAACrE,UAAWc,IAASN,QAAS+B,KAAK8H,qBAAsBC,eAAa,EAAA3K,UAC1EH,EAAAA,EAAAA,KAAA,OAAAG,SAAM4C,KAAKgI,oBAGvB,KAACtB,CAAA,CAtEe,CAASjG,EAAAA,WAyE7B,SAAewH,EAAAA,EAAAA,GAAYvB,E,sWC7ErBnI,GAAQ0C,EAAAA,EAAAA,GAAG,mBAEXiH,EAAO,SAAAxJ,IAAAC,EAAAA,EAAAA,GAAAuJ,EAAAxJ,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAAqJ,GAAA,SAAAA,IAAA,OAAAnJ,EAAAA,EAAAA,GAAA,KAAAmJ,GAAAtJ,EAAAW,MAAA,KAAAN,UAAA,CAiDR,OAjDQW,EAAAA,EAAAA,GAAAsI,EAAA,EAAArI,IAAA,gBAAAC,MAYT,WACI,IAAOqI,EAAWnI,KAAKxC,MAAhB2K,QAEP,OACIjK,EAAAA,EAAAA,MAAA,OAAKT,UAAWc,EAAM,CAACgH,KAAM,KAAM,qBAAqB,IAAQ5H,MAAOwK,EAAQ/K,SAAA,EAC3EH,EAAAA,EAAAA,KAAA,QAAMQ,UAAU,uCAAsCL,SAAE+K,IAAe,KAEvElL,EAAAA,EAAAA,KAACiJ,EAAAA,EAAe,CACZhE,KAAMiG,EACNxL,KAAK,iBACLE,KAAK,IACLc,MAAO,QAAUwK,MAIjC,GAAC,CAAAtI,IAAA,qBAAAC,MAED,WACI,IAAAC,EAAkDC,KAAKxC,MAAhD4K,EAAUrI,EAAVqI,WAAYzE,EAAK5D,EAAL4D,MAAO0E,EAAWtI,EAAXsI,YAAaC,EAAOvI,EAAPuI,QAEvC,OACIpK,EAAAA,EAAAA,MAAA,OAAKT,UAAU,uCAAsCL,SAAA,EACjDH,EAAAA,EAAAA,KAACI,EAAAA,EAAI,CAACC,QAAQ,yBAAyB,YACvCL,EAAAA,EAAAA,KAACmB,EAAAA,EAAI,CAACR,MAAM,QAAQ4C,QAAS4H,EAAWhL,SAAC,UAGzCH,EAAAA,EAAAA,KAACsL,EAAAA,EAAW,CAACD,QAASA,EAASE,SAAUH,EAAaI,eAAgBJ,EAAYjL,UAC9EH,EAAAA,EAAAA,KAACyL,EAAAA,EAAK,CAAC/E,MAAOA,QAI9B,GAAC,CAAA9D,IAAA,SAAAC,MAED,WAGI,OAFgBE,KAAKxC,MAAdmG,MAEQ3D,KAAK2I,qBAAuB3I,KAAK4I,eACpD,KAACV,CAAA,CAjDQ,CAASzH,EAAAA,WAoDtB,SAAewH,EAAAA,EAAAA,GAAYC,G,2FClDrBW,EAAW,SAAAvH,IAAA3C,EAAAA,EAAAA,GAAAkK,EAAAvH,GAAA,IAAA1C,GAAAC,EAAAA,EAAAA,GAAAgK,GAAA,SAAAA,IAAA,IAAA/J,GAAAC,EAAAA,EAAAA,GAAA,KAAA8J,GAAA,QAAA7J,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAQX,OARWP,EAAAF,EAAAU,KAAAC,MAAAX,EAAA,OAAAY,OAAAL,KACb2J,gBAAkB,WACd,IAAA/I,EAAoCjB,EAAKtB,MAAlCuL,EAAIhJ,EAAJgJ,MAEPC,EAFgCjJ,EAAnBiJ,qBAEO,CAChBC,QAASF,EAAKG,KACdC,UAAW,gBAEnB,EAACrK,CAAC,CAoCD,OApCAc,EAAAA,EAAAA,GAAAiJ,EAAA,EAAAhJ,IAAA,SAAAC,MAED,WACI,IAAA6B,EAAwB3B,KAAKxC,MAAtBuL,EAAIpH,EAAJoH,KAAMK,EAAOzH,EAAPyH,QACbC,EAAqBC,EAAAA,GAAUC,8BAA8B,CAACH,QAAAA,EAASF,KAAMH,EAAKG,OAA3ExL,EAAG2L,EAAH3L,IAAKC,EAAK0L,EAAL1L,MAEZ,OACIO,EAAAA,EAAAA,MAACC,EAAAA,SAAc,CAAAf,SAAA,EACXH,EAAAA,EAAAA,KAACuM,EAAAA,EAAyB,CACtB7L,MAAOoL,EAAKG,KACZO,KAAI,uBAAAjK,OAAyBuJ,EAAKG,MAClCQ,aAAW,KAGfzM,EAAAA,EAAAA,KAACM,EAAAA,EAAS,CACNG,IAAKA,EACLK,YAAa,SAACgL,GAAI,OACd9L,EAAAA,EAAAA,KAACC,EAAAA,EAAM,CACHyM,aAAc,CACVC,UAAW,SACX3L,QAASN,GAEbU,OAAO,SACP1B,KAAK,iBACLE,KAAK,IACL6M,aAAW,EAAAtM,SAEV2L,GACI,KAGjB9L,EAAAA,EAAAA,KAACC,EAAAA,EAAM,CAACsD,QAASR,KAAK8I,gBAAiBnM,KAAK,iBAAiBE,KAAK,IAAI6M,aAAW,EAAAtM,UAC7EH,EAAAA,EAAAA,KAACI,EAAAA,EAAI,CAACS,KAAK,UAAUR,QAAQ,eAI7C,KAACuL,CAAA,CA5CY,CAAS1K,EAAAA,WAqDpB0L,EAAqB,CACvBb,oBAAAA,EAAAA,IAKJ,SAFkBc,EAAAA,EAAAA,KAVM,SAAC1E,GACrB,MAAO,CACHgE,SAASW,EAAAA,EAAAA,IAAW3E,GAE5B,GAM2CyE,EAE3C,CAAyBhB,G,2FC9DlB,SAASmB,EACZxM,GACD,IAADyM,EAAAC,EACQC,GAAWC,EAAAA,EAAAA,MACXC,GAAYC,EAAAA,EAAAA,IAAYC,EAAAA,GAAWC,EAAAA,IACnCjJ,GAAQkJ,EAAAA,EAAAA,IAAwBJ,GAEhClH,EAAsB,QAAhB8G,EAAGzM,EAAMkN,eAAO,IAAAT,OAAA,EAAbA,EAAeU,MAAK,SAAAlO,GAAA,IAAE0G,EAAM1G,EAAN0G,OAAM,OAAMkH,EAAUO,QAAUzH,CAAM,IAE3E,OACIlG,EAAAA,EAAAA,KAAC4N,EAAAA,GAAY1N,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACLK,GAAK,IACT2F,OAAQ3F,EAAMkN,SAAwB,QAAjBR,EAAG/G,aAAM,EAANA,EAAQA,cAAM,IAAA+G,EAAAA,EAAmB1M,EAAM2F,OAC/D5B,MAAO4B,EAAS5B,OAAQa,EACxB0I,OAAQ,SAAC5H,GAAgB,IAAD6H,EACdC,EAAuB,QAAhBD,EAAGvN,EAAMkN,eAAO,IAAAK,OAAA,EAAbA,EAAeJ,MAAK,SAAAlF,GAAA,IAAEtC,EAAMsC,EAANtC,OAAM,OAAMD,IAAeC,CAAM,IACvEgH,GACIc,EAAAA,EAAAA,GAAsB,CAClB/H,WAAAA,EACAzB,cAAeuJ,aAAO,EAAPA,EAASvJ,cACxBD,eAAgBwJ,aAAO,EAAPA,EAASxJ,eACzB0J,QAASV,EAAAA,KAGrB,IAGZ,C,eCPMjM,IAAQ0C,EAAAA,EAAAA,GAAG,8BAEJkK,GAAqB,CAC9BlH,YAAa,CAAC,YACdmH,QAAS,CAAC,QACVC,YAAa,CAAC,cACd3F,OAAQ,CAAC,UACT4F,OAAQ,CAAC,UACTC,IAAK,CAAC,cAAe,WACrBC,UAAW,CAAC,OACZC,UAAW,CAAC,OACZC,YAAa,CAAC,cACdC,eAAgB,CAAC,kBACjBC,UAAW,CAAC,eACZC,gBAAiB,CAAC,cAClBC,kBAAmB,CAAC,eACpBC,wBAAyB,CAAC,cAC1BC,UAAW,CAAC,eACZC,gBAAiB,CAAC,cAClBC,KAAM,CAAC,QACPC,IAAK,CAAC,OACNC,UAAW,CAAC,OACZC,UAAW,CAAC,OACZnD,KAAM,CAAC,UAAW,QAClBoD,UAAW,CAAC,YACZC,UAAW,CAAC,gBACZC,gBAAiB,CAAC,eAClBC,sBAAuB,CAAC,cACxBC,QAAS,CAAC,eACVC,cAAe,CAAC,cAChBC,UAAW,CAAC,YAAa,oBACzBC,aAAc,CAAC,iBAAkB,mBACjCC,OAAQ,CAAC,aAAc,iBAAkB,cACzCC,aAAc,CAAC,eACfC,aAAc,CAAC,eACfC,QAAS,CAAC,kBAAmB,eAC7BC,cAAe,CAAC,WAChBC,cAAe,CAAC,WAChBC,KAAM,CAAC,eACPC,WAAY,CAAC,cACbC,cAAe,CAAC,gBAChBC,QAAS,CAAC,WACVC,KAAM,CAAC,QACPC,cAAe,CAAC,eAAgB,wBAChCC,oBAAqB,CAAC,gBACtBC,oBAAqB,CAAC,gBACtBC,aAAc,CAAC,cAAe,uBAC9BC,mBAAoB,CAAC,eACrBC,mBAAoB,CAAC,eACrBC,kBAAmB,CAAC,mBAAoB,4BACxCC,wBAAyB,CAAC,oBAC1BC,wBAAyB,CAAC,oBAC1BC,eAAgB,CAAC,eACjBC,WAAY,CAAC,YAAa,qBAC1BC,iBAAkB,CAAC,aACnBC,iBAAkB,CAAC,aACnBC,SAAU,CAAC,YACXC,YAAa,CAAC,cACdC,YAAa,CAAC,aACdC,MAAO,CAAC,gBAAiB,aACzBrJ,MAAO,CAAC,SACRsJ,QAAS,CAAC,eACVC,cAAe,CAAC,cAChBC,YAAa,CAAC,cACdC,aAAc,CAAC,sBACfC,sBAAuB,CAAC,uBACxBC,4BAA6B,CAAC,uBAC9BC,4BAA6B,CAAC,uBAC9BC,qBAAsB,CAAC,sBACvBC,2BAA4B,CAAC,sBAC7BC,2BAA4B,CAAC,sBAC7BC,cAAe,CAAC,qBAAsB,uBACtCC,aAAc,CAAC,eACfC,WAAY,CAAC,YAAa,qBAC1BC,iBAAkB,CAAC,aACnBC,iBAAkB,CAAC,aACnBC,UAAW,CAAC,YACZtH,QAAS,CAAC,WACVuH,eAAgB,CAAC,wBA2DfC,GAAkB,CACpB9S,KAAM,IACN+S,SAAS,EACTC,YAAa,SACbjS,MAAO,QACPkS,UAAU,EACVC,SAAS,EACT7E,QAASV,EAAAA,GACTwF,WAAU,SAACjH,GACP,OAAOA,EAAKG,IAChB,EACA+G,QAAS,CACLC,MAAO,CACHhH,KAAM,CACF5F,IAAG,SAACyF,GACA,OAAOA,EAAKG,IAChB,EACAiH,MAAM,EACNC,MAAO,QAEX9C,cAAe,CACXhK,IAAG,SAACyF,GACA,OAAOA,EAAKsH,YAChB,EACAF,MAAM,EACNC,MAAO,QAEX7C,QAAS,CACLjK,IAAG,SAACyF,GACA,OAAOA,EAAKwE,OAChB,EACA4C,MAAM,EACNG,UAAWC,EAAAA,GACXH,MAAO,QAEXhL,MAAO,CACH9B,IAAG,SAACyF,GACA,OAAOA,EAAK3D,KAChB,EACA+K,MAAM,EACNC,MAAO,UAEX1E,YAAa,CACTpI,IAAG,SAACyF,GACA,OAAOA,EAAKyH,UAChB,EACAL,MAAM,EACNM,QAAS,KACTL,MAAO,OACPzG,aAAc,CAACC,UAAW,SAAU3L,QAAS,gBAEjDuP,KAAM,CACFlK,IAAG,SAACyF,GACA,OAAO1F,EAAAA,EAAOtB,OAAqB,aAAEgH,EAAKyE,KAC9C,EACA2C,MAAM,EACNC,MAAO,QAEXX,UAAW,CACPnM,IAAG,SAACyF,GACA,OAAOA,EAAK2H,WAAa,CAC7B,EACAP,KAAI,SAACpH,GAAO,IAAD4H,EACP,OAAqB,QAAdA,EAAC5H,EAAK2H,gBAAQ,IAAAC,GAAbA,EAAezR,OAAqB6J,EAAK2H,cAAjBtO,CACpC,EACAkO,UAAWC,EAAAA,GACXH,MAAO,QAEXxB,YAAa,CACTtL,IAAG,SAACyF,GACA,OAAOA,EAAK6H,aAAe,CAC/B,EACAT,KAAI,SAACpH,GACD,OAAOA,EAAK6H,YAAc,EAC9B,EACAN,UAAWC,EAAAA,GACXH,MAAO,QAEX1K,OAAQ,CACJpC,IAAG,SAACL,GACA,OAAOA,EAAKyC,MAChB,EACA0K,MAAO,SACPD,MAAM,EACNM,QAAS,IACT9G,aAAc,CAACC,UAAW,SAAU3L,QAAS,UAC7C4S,kBAAmBC,EAAAA,IAEvBnF,eAAgB,CACZrI,IAAG,SAACL,GACA,OAAOA,EAAK0I,cAChB,EACAyE,MAAO,SACPD,MAAM,EACNM,QAAS,IACT9G,aAAc,CACVC,UAAW,SACX3L,QAAS,kBAEb4S,kBAAmBC,EAAAA,IAEvB5E,KAAM,CACF5I,IAAG,SAACL,GACA,OAAOA,EAAKiJ,IAChB,EACAkE,MAAO,SACPD,MAAM,EACNM,QAAS,IACT9G,aAAc,CAACC,UAAW,SAAU3L,QAAS,SAEjDoN,YAAa,CACT/H,IAAG,SAACL,GACA,OAAOA,EAAK8N,UAChB,EACAZ,KAAI,SAAClN,GACD,OAAOA,EAAK8N,UAChB,EACAX,MAAO,SACPK,QAAS,IACT9G,aAAc,CAACC,UAAW,SAAU3L,QAAS,WAEjDiQ,eAAgB,CACZ5K,IAAG,SAACyF,GACA,OAAOA,EAAKiI,WAChB,EACAb,MAAM,EACNC,MAAO,QAEXV,eAAgB,CACZpM,IAAG,SAACyF,GACA,OAAOA,EAAKkI,mBAChB,EACAd,MAAM,EACNC,MAAO,QAEXvB,aAAc,CACVvL,IAAG,SAACyF,GACA,OAAOA,EAAKmI,kBAChB,EACAf,MAAM,EACNC,MAAO,QAEXjI,QAAS,CACL7E,IAAG,SAACyF,GACA,OAAOA,EAAKZ,OAChB,EACAgI,MAAM,EACNC,MAAO,QAEX7D,UAAW,CACPjJ,IAAG,SAACyF,GACA,OAAOA,EAAKoI,YAChB,EACAhB,MAAM,EACNC,MAAO,QAEX3B,MAAO,CACHnL,IAAG,SAACyF,GACA,OAAOA,EAAKqI,aAChB,EACAC,aAAY,SAAA5U,GAAuB,IAArB2T,EAAK3T,EAAL2T,MACV,OACInT,EAAAA,EAAAA,KAAC+M,EAAiB,CACdoG,MAAOA,EACPjN,OAAO,QACPxF,MAAM,QACN+M,QAAS,CACL,CACIvH,OAAQ,QACRxF,MAAO,WACP8D,eAAe,EACfD,gBAAgB,GAEpB,CACI2B,OAAQ,cACRxF,MAAO,QACP8D,eAAe,EACfD,gBAAgB,GAEpB,CACI2B,OAAQ,cACRxF,MAAO,QACP8D,eAAe,EACfD,gBAAgB,KAKpC,EACA8P,mBAAmB,EACnBlB,MAAO,UAEX7B,YAAa,CACTjL,IAAG,SAACyF,GACA,OAAOA,EAAKwI,UAChB,EACApB,MAAM,EACNmB,mBAAmB,EACnBlB,MAAO,SAEX5B,YAAa,CACTlL,IAAG,SAACyF,GACA,OAAOA,EAAKyI,SAChB,EACAF,mBAAmB,EACnBzP,QAAQ,GAEZ+K,UAAW,CACPtJ,IAAG,SAACyF,GACA,MAAO,CACHA,EAAK6D,WAAa7D,EAAK6D,UAAU1N,OACjC6J,EAAK6D,WAAa7D,EAAK0I,iBAAiBvS,OAEhD,EACAiR,MAAM,EACNC,MAAO,UAEX9E,OAAQ,CACJhI,IAAG,SAACyF,GACA,OAAOA,EAAKuC,MAChB,EACA6E,MAAM,EACNmB,mBAAmB,EACnBlB,MAAO,QAEX9B,SAAU,CACNhL,IAAG,SAACyF,GACA,OAAOA,EAAKuF,QAChB,EACA6B,MAAM,EACNmB,mBAAmB,EACnBlB,MAAO,QAEX7E,IAAK,CACDjI,IAAG,SAACyF,GACA,OAAOA,EAAK2I,WAChB,EACAJ,mBAAmB,EACnBlB,MAAO,SACPiB,aAAc,SAAA5L,GAA0B,IAAxB2K,EAAK3K,EAAL2K,MACZ,OACInT,EAAAA,EAAAA,KAAC+M,EAAiB,CACdoG,MAAOA,EACPjN,OAAO,MACPuH,QAAS,CACL,CACIvH,OAAQ,MACRxF,MAAO,WACP8D,eAAe,EACfD,gBAAgB,GAEpB,CACI2B,OAAQ,YACRxF,MAAO,QACP8D,eAAe,EACfD,gBAAgB,GAEpB,CACI2B,OAAQ,YACRxF,MAAO,QACP8D,eAAe,EACfD,gBAAgB,IAGxB7D,MAAM,OAGlB,GAEJ6N,UAAW,CACPlI,IAAG,SAACyF,GAAO,IAAD4I,EACN,OAAe,QAAfA,EAAO5I,EAAKwC,WAAG,IAAAoG,OAAA,EAARA,EAAUpK,KACrB,EACA+J,mBAAmB,EACnBzP,QAAQ,GAEZ4J,UAAW,CACPnI,IAAG,SAACyF,GAAO,IAAD6I,EACN,OAAe,QAAfA,EAAO7I,EAAKwC,WAAG,IAAAqG,OAAA,EAARA,EAAUC,KACrB,EACAP,mBAAmB,EACnBzP,QAAQ,GAEZsK,IAAK,CACD7I,IAAG,SAACyF,GAAO,IAAD+I,EACN,OAAe,QAAfA,EAAO/I,EAAKoD,WAAG,IAAA2F,OAAA,EAARA,EAAUnL,QACrB,EACA2K,mBAAmB,EACnBlB,MAAO,SACPiB,aAAc,SAAAxL,GAA0B,IAAxBuK,EAAKvK,EAALuK,MACZ,OACInT,EAAAA,EAAAA,KAAC+M,EAAiB,CACdoG,MAAOA,EACPjN,OAAO,MACPuH,QAAS,CACL,CACIvH,OAAQ,MACRxF,MAAO,WACP8D,eAAe,EACfD,gBAAgB,GAEpB,CACI2B,OAAQ,YACRxF,MAAO,QACP8D,eAAe,EACfD,gBAAgB,GAEpB,CACI2B,OAAQ,YACRxF,MAAO,QACP8D,eAAe,EACfD,gBAAgB,IAGxB7D,MAAM,OAGlB,GAEJ0O,UAAW,CACP/I,IAAG,SAACyF,GAAO,IAADgJ,EACN,OAAe,QAAfA,EAAOhJ,EAAKoD,WAAG,IAAA4F,OAAA,EAARA,EAAUxK,KACrB,EACA+J,mBAAmB,EACnBzP,QAAQ,GAEZuK,UAAW,CACP9I,IAAG,SAACyF,GAAO,IAADiJ,EACN,OAAe,QAAfA,EAAOjJ,EAAKoD,WAAG,IAAA6F,OAAA,EAARA,EAAUH,KACrB,EACAP,mBAAmB,EACnBzP,QAAQ,GAEZiL,OAAQ,CACJxJ,IAAG,SAACyF,GACA,OAAOA,EAAKkJ,cAChB,EACAX,mBAAmB,EACnBD,aAAc,SAAApL,GAA0B,IAAxBmK,EAAKnK,EAALmK,MACZ,OACInT,EAAAA,EAAAA,KAAC+M,EAAiB,CACdoG,MAAOA,EACPjN,OAAO,SACPxF,MAAM,SACN+M,QAAS,CACL,CACIvH,OAAQ,SACRxF,MAAO,WACP8D,eAAe,EACfD,gBAAgB,GAEpB,CACI2B,OAAQ,eACRxF,MAAO,QACP8D,eAAe,EACfD,gBAAgB,GAEpB,CACI2B,OAAQ,eACRxF,MAAO,QACP8D,eAAe,EACfD,gBAAgB,KAKpC,EACA4O,MAAO,UAEXpD,aAAc,CACV1J,IAAG,SAACyF,GACA,OAAOA,EAAKmJ,YAAYL,KAC5B,EACAP,mBAAmB,EACnBzP,QAAQ,GAEZkL,aAAc,CACVzJ,IAAG,SAACyF,GACA,OAAOA,EAAKmJ,YAAY3K,KAC5B,EACA+J,mBAAmB,EACnBzP,QAAQ,GAEZgL,aAAc,CACVvJ,IAAG,SAACyF,GACA,OAAOA,EAAKkJ,cAChB,EACA9B,MAAM,EACNC,MAAO,UAEXnD,QAAS,CACL3J,IAAG,SAACyF,GACA,OAAOA,EAAKoJ,eAChB,EACAb,mBAAmB,EACnBD,aAAc,SAAAjL,GAA0B,IAAxBgK,EAAKhK,EAALgK,MACZ,OACInT,EAAAA,EAAAA,KAAC+M,EAAiB,CACdoG,MAAOA,EACPjN,OAAO,UACPxF,MAAM,UACN+M,QAAS,CACL,CACIvH,OAAQ,UACRxF,MAAO,WACP8D,eAAe,EACfD,gBAAgB,GAEpB,CACI2B,OAAQ,gBACRxF,MAAO,QACP8D,eAAe,EACfD,gBAAgB,GAEpB,CACI2B,OAAQ,gBACRxF,MAAO,QACP8D,eAAe,EACfD,gBAAgB,KAKpC,EACA4O,MAAO,UAEXlD,cAAe,CACX5J,IAAG,SAACyF,GACA,OAAOA,EAAKkE,QAAQ4E,KACxB,EACAP,mBAAmB,EACnBzP,QAAQ,GAEZsL,cAAe,CACX7J,IAAG,SAACyF,GACA,OAAOA,EAAKkE,QAAQ1F,KACxB,EACA+J,mBAAmB,EACnBc,QAAQ,GAEZxE,aAAc,CACVtK,IAAG,SAACyF,GACA,OAAOA,EAAKsJ,mBAChB,EACAf,mBAAmB,EACnBD,aAAY,SAAAiB,GAAuB,IAArBlC,EAAKkC,EAALlC,MACV,OACInT,EAAAA,EAAAA,KAAC+M,EAAiB,CACdoG,MAAOA,EACPjN,OAAO,eACPxF,MAAM,eACN+M,QAAS,CACL,CACIvH,OAAQ,eACRxF,MAAO,WACP8D,eAAe,EACfD,gBAAgB,GAEpB,CACI2B,OAAQ,qBACRxF,MAAO,QACP8D,eAAe,EACfD,gBAAgB,GAEpB,CACI2B,OAAQ,qBACRxF,MAAO,QACP8D,eAAe,EACfD,gBAAgB,KAKpC,EACA4O,MAAO,UAEXvC,mBAAoB,CAChBvK,IAAG,SAACyF,GACA,OAAOA,EAAKwJ,YAAYV,KAC5B,EACAP,mBAAmB,EACnBzP,QAAQ,GAEZiM,mBAAoB,CAChBxK,IAAG,SAACyF,GACA,OAAOA,EAAKwJ,YAAYC,MAC5B,EACAlB,mBAAmB,EACnBzP,QAAQ,GAEZ4L,cAAe,CACXnK,IAAG,SAACyF,GACA,OAAOA,EAAK0J,oBAChB,EACAnB,mBAAmB,EACnBD,aAAY,SAAAqB,GAAuB,IAArBtC,EAAKsC,EAALtC,MACV,OACInT,EAAAA,EAAAA,KAAC+M,EAAiB,CACdoG,MAAOA,EACPjN,OAAO,gBACPxF,MAAM,gBACN+M,QAAS,CACL,CACIvH,OAAQ,gBACRxF,MAAO,WACP8D,eAAe,EACfD,gBAAgB,GAEpB,CACI2B,OAAQ,sBACRxF,MAAO,QACP8D,eAAe,GAEnB,CACI0B,OAAQ,sBACRxF,MAAO,QACP8D,eAAe,KAKnC,EACA2O,MAAO,UAEX1C,oBAAqB,CACjBpK,IAAG,SAACyF,GACA,OAAOA,EAAK4J,aAAad,KAC7B,EACAP,mBAAmB,EACnBzP,QAAQ,GAEZ8L,oBAAqB,CACjBrK,IAAG,SAACyF,GACA,OAAOA,EAAK4J,aAAaH,MAC7B,EACAlB,mBAAmB,EACnBzP,QAAQ,GAEZkM,kBAAmB,CACfzK,IAAG,SAACyF,GACA,OAAOA,EAAK6J,wBAChB,EACAtB,mBAAmB,EACnBD,aAAY,SAAAwB,GAAuB,IAArBzC,EAAKyC,EAALzC,MACV,OACInT,EAAAA,EAAAA,KAAC+M,EAAiB,CACdoG,MAAOA,EACPjN,OAAO,oBACPxF,MAAM,oBACN+M,QAAS,CACL,CACIvH,OAAQ,oBACRxF,MAAO,WACP8D,eAAe,GAEnB,CACI0B,OAAQ,0BACRxF,MAAO,QACP8D,eAAe,GAEnB,CACI0B,OAAQ,0BACRxF,MAAO,QACP8D,eAAe,KAKnC,EACA2O,MAAO,UAEXpC,wBAAyB,CACrB1K,IAAG,SAACyF,GACA,OAAOA,EAAK+J,iBAAiBjB,KACjC,EACAP,mBAAmB,EACnBzP,QAAQ,GAEZoM,wBAAyB,CACrB3K,IAAG,SAACyF,GACA,OAAOA,EAAK+J,iBAAiBN,MACjC,EACAlB,mBAAmB,EACnBzP,QAAQ,GAEZsM,WAAY,CACR7K,IAAG,SAACyF,GACA,OAAOA,EAAKgK,iBAChB,EACAzB,mBAAmB,EACnBD,aAAY,SAAA2B,GAAuB,IAArB5C,EAAK4C,EAAL5C,MACV,OACInT,EAAAA,EAAAA,KAAC+M,EAAiB,CACdoG,MAAOA,EACPjN,OAAO,aACPxF,MAAM,aACN+M,QAAS,CACL,CACIvH,OAAQ,aACRxF,MAAO,WACP8D,eAAe,GAEnB,CACI0B,OAAQ,mBACRxF,MAAO,QACP8D,eAAe,GAEnB,CACI0B,OAAQ,mBACRxF,MAAO,QACP8D,eAAe,KAKnC,EACA2O,MAAO,UAEXhC,iBAAkB,CACd9K,IAAG,SAACyF,GACA,OAAOA,EAAKkK,UAAUpB,KAC1B,EACAP,mBAAmB,EACnBzP,QAAQ,GAEZwM,iBAAkB,CACd/K,IAAG,SAACyF,GACA,OAAOA,EAAKkK,UAAUT,MAC1B,EACAlB,mBAAmB,EACnBzP,QAAQ,GAEZyN,WAAY,CACRhM,IAAG,SAACyF,GACA,OAAOA,EAAKmK,iBAChB,EACA7B,aAAY,SAAA8B,GAAuB,IAArB/C,EAAK+C,EAAL/C,MACV,OACInT,EAAAA,EAAAA,KAAC+M,EAAiB,CACdoG,MAAOA,EACPjN,OAAO,aACPxF,MAAM,aACN+M,QAAS,CACL,CACIvH,OAAQ,aACRxF,MAAO,WACP8D,eAAe,GAEnB,CACI0B,OAAQ,mBACRxF,MAAO,QACP8D,eAAe,GAEnB,CACI0B,OAAQ,mBACRxF,MAAO,QACP8D,eAAe,KAKnC,EACA2O,MAAO,UAEXb,iBAAkB,CACdjM,IAAG,SAACyF,GACA,OAAOA,EAAKqK,UAAUvB,KAC1B,EACAP,mBAAmB,EACnBzP,QAAQ,GAEZ2N,iBAAkB,CACdlM,IAAG,SAACyF,GACA,OAAOA,EAAKqK,UAAUZ,MAC1B,EACApC,MAAO,SACPkB,mBAAmB,EACnBzP,QAAQ,GAEZwN,aAAc,CACV/L,IAAG,SAACyF,GACA,OAAIA,EAAKsK,aAAetK,EAAKsK,YAAYC,KAAOvK,EAAKsK,YAAYC,IAAIpU,OAC1DqU,IACHxK,EAAKsK,YAAYC,KACjB,SAACE,EAAKC,GAAI,MAAqB,SAAfA,EAAKrO,MAAmBoO,EAAMA,EAAM,CAAC,GACrD,IAIA,CACZ,EACArD,MAAM,EACNC,MAAO,QAEXhD,MAAIjQ,EAAAA,EAAAA,GAAA,CACAmG,IAAG,SAACyF,GAAO,IAAD2K,EACN,OAAuB,QAAvBA,EAAO3K,EAAKsK,mBAAW,IAAAK,OAAA,EAAhBA,EAAkBC,QAAQvG,IACrC,EACA+C,KAAI,SAACpH,GAAO,IAAD6K,EACP,OAAuB,QAAvBA,EAAO7K,EAAKsK,mBAAW,IAAAO,GAAc,QAAdA,EAAhBA,EAAkBD,QAAQvG,YAAI,IAAAwG,OAAA,EAA9BA,EAAgC1U,MAC3C,EAEAkR,MAAO,UACJyD,GAAiB,UAAW,sBAEnCxG,YAAUlQ,EAAAA,EAAAA,GAAA,CACNmG,IAAG,SAACyF,GAAO,IAAD+K,EACN,OAAsB,QAAtBA,EAAO/K,EAAKgL,kBAAU,IAAAD,OAAA,EAAfA,EAAiBH,QAAQvG,IACpC,EACA+C,KAAI,SAACpH,GAAO,IAADiL,EACP,OAAsB,QAAtBA,EAAOjL,EAAKgL,kBAAU,IAAAC,GAAc,QAAdA,EAAfA,EAAiBL,QAAQvG,YAAI,IAAA4G,OAAA,EAA7BA,EAA+B9U,MAC1C,EAEAkR,MAAO,UACJyD,GAAiB,UAAW,qBAEnCnH,SAAOvP,EAAAA,EAAAA,GAAA,CACHmG,IAAG,SAACyF,GAAO,IAADkL,EACN,OAAuB,QAAvBA,EAAOlL,EAAKsK,mBAAW,IAAAY,OAAA,EAAhBA,EAAkBN,QAAQjH,OACrC,EACAyD,KAAI,SAACpH,GAAO,IAADmL,EACP,OAAuB,QAAvBA,EAAOnL,EAAKsK,mBAAW,IAAAa,GAAS,QAATA,EAAhBA,EAAkBP,eAAO,IAAAO,GAAS,QAATA,EAAzBA,EAA2BxH,eAAO,IAAAwH,OAAA,EAAlCA,EAAoChV,MAC/C,EACAkR,MAAO,UACJyD,GAAiB,aAAc,yBAEtClH,eAAaxP,EAAAA,EAAAA,GAAA,CACTmG,IAAG,SAACyF,GAAO,IAADoL,EACN,OAAsB,QAAtBA,EAAOpL,EAAKgL,kBAAU,IAAAI,OAAA,EAAfA,EAAiBR,QAAQjH,OACpC,EACAyD,KAAI,SAACpH,GAAO,IAADqL,EACP,OAAsB,QAAtBA,EAAOrL,EAAKgL,kBAAU,IAAAK,GAAS,QAATA,EAAfA,EAAiBT,eAAO,IAAAS,GAAS,QAATA,EAAxBA,EAA0B1H,eAAO,IAAA0H,OAAA,EAAjCA,EAAmClV,MAC9C,EACAkR,MAAO,UACJyD,GAAiB,aAAc,wBAEtC7H,WAAS7O,EAAAA,EAAAA,GAAA,CACLmG,IAAG,SAACyF,GAAO,IAADsL,EACN,OAAuB,QAAvBA,EAAOtL,EAAKsK,mBAAW,IAAAgB,OAAA,EAAhBA,EAAkBV,QAAQ3H,SACrC,EACAmE,KAAI,SAACpH,GAAO,IAADuL,EACP,OAAuB,QAAvBA,EAAOvL,EAAKsK,mBAAW,IAAAiB,GAAS,QAATA,EAAhBA,EAAkBX,eAAO,IAAAW,GAAW,QAAXA,EAAzBA,EAA2BtI,iBAAS,IAAAsI,OAAA,EAApCA,EAAsCpV,MACjD,EACAkR,MAAO,UACJyD,GAAiB,eAAgB,2BAExC5H,iBAAe9O,EAAAA,EAAAA,GAAA,CACXmG,IAAG,SAACyF,GAAO,IAADwL,EACN,OAAsB,QAAtBA,EAAOxL,EAAKgL,kBAAU,IAAAQ,OAAA,EAAfA,EAAiBZ,QAAQ3H,SACpC,EACAmE,KAAI,SAACpH,GAAO,IAADyL,EACP,OAAsB,QAAtBA,EAAOzL,EAAKgL,kBAAU,IAAAS,GAAS,QAATA,EAAfA,EAAiBb,eAAO,IAAAa,GAAW,QAAXA,EAAxBA,EAA0BxI,iBAAS,IAAAwI,OAAA,EAAnCA,EAAqCtV,MAChD,EACAkR,MAAO,UACJyD,GAAiB,eAAgB,0BAExC/H,mBAAiB3O,EAAAA,EAAAA,GAAA,CACbmG,IAAG,SAACyF,GAAO,IAAD0L,EACN,OAAuB,QAAvBA,EAAO1L,EAAKsK,mBAAW,IAAAoB,OAAA,EAAhBA,EAAkBd,QAAQ7H,iBACrC,EACAqE,KAAI,SAACpH,GAAO,IAAD2L,EACP,OAAuB,QAAvBA,EAAO3L,EAAKsK,mBAAW,IAAAqB,GAA2B,QAA3BA,EAAhBA,EAAkBf,QAAQ7H,yBAAiB,IAAA4I,OAAA,EAA3CA,EAA6CxV,MACxD,EACAkR,MAAO,UACJyD,GAAiB,QAAS,mCAEjC9H,yBAAuB5O,EAAAA,EAAAA,GAAA,CACnBmG,IAAG,SAACyF,GAAO,IAAD4L,EACN,OAAsB,QAAtBA,EAAO5L,EAAKgL,kBAAU,IAAAY,OAAA,EAAfA,EAAiBhB,QAAQ7H,iBACpC,EACAqE,KAAI,SAACpH,GAAO,IAAD6L,EACP,OAAsB,QAAtBA,EAAO7L,EAAKgL,kBAAU,IAAAa,GAA2B,QAA3BA,EAAfA,EAAiBjB,QAAQ7H,yBAAiB,IAAA8I,OAAA,EAA1CA,EAA4C1V,MACvD,EACAkR,MAAO,UACJyD,GAAiB,QAAS,kCAEjCrH,iBAAerP,EAAAA,EAAAA,GAAA,CACXmG,IAAG,SAACyF,GAAO,IAAD8L,EACN,OAAuB,QAAvBA,EAAO9L,EAAKsK,mBAAW,IAAAwB,OAAA,EAAhBA,EAAkBlB,QAAyB,eACtD,EACAxD,MAAM,EACNC,MAAO,UACJyD,GAAiB,QAAS,iCAEjCpH,uBAAqBtP,EAAAA,EAAAA,GAAA,CACjBmG,IAAG,SAACyF,GAAO,IAAD+L,EACN,OAAsB,QAAtBA,EAAO/L,EAAKgL,kBAAU,IAAAe,OAAA,EAAfA,EAAiBnB,QAAyB,eACrD,EACAxD,MAAM,EACNC,MAAO,UACJyD,GAAiB,QAAS,gCAEjCnF,SAAOvR,EAAAA,EAAAA,GAAA,CACHmG,IAAG,SAACyF,GAAO,IAADgM,EACN,OAAuB,QAAvBA,EAAOhM,EAAKsK,mBAAW,IAAA0B,OAAA,EAAhBA,EAAkBpB,QAAQjF,OACrC,EACAyB,KAAI,SAACpH,GAAO,IAADiM,EACP,OAAuB,QAAvBA,EAAOjM,EAAKsK,mBAAW,IAAA2B,GAAiB,QAAjBA,EAAhBA,EAAkBrB,QAAQjF,eAAO,IAAAsG,OAAA,EAAjCA,EAAmC9V,MAC9C,EACAkR,MAAO,UACJyD,GAAiB,aAAc,yBAEtClF,eAAaxR,EAAAA,EAAAA,GAAA,CACTmG,IAAG,SAACyF,GAAO,IAADkM,EACN,OAAsB,QAAtBA,EAAOlM,EAAKgL,kBAAU,IAAAkB,OAAA,EAAfA,EAAiBtB,QAAQjF,OACpC,EACAyB,KAAI,SAACpH,GAAO,IAADmM,EACP,OAAsB,QAAtBA,EAAOnM,EAAKgL,kBAAU,IAAAmB,GAAiB,QAAjBA,EAAfA,EAAiBvB,QAAQjF,eAAO,IAAAwG,OAAA,EAAhCA,EAAkChW,MAC7C,EACAkR,MAAO,UACJyD,GAAiB,aAAc,wBAEtCjI,WAASzO,EAAAA,EAAAA,GAAA,CACLmG,IAAG,SAACyF,GAAO,IAADoM,EACN,OAAuB,QAAvBA,EAAOpM,EAAKsK,mBAAW,IAAA8B,OAAA,EAAhBA,EAAkBxB,QAAQ/H,SACrC,EACAuE,KAAI,SAACpH,GAAO,IAADqM,EACP,OAAuB,QAAvBA,EAAOrM,EAAKsK,mBAAW,IAAA+B,GAAmB,QAAnBA,EAAhBA,EAAkBzB,QAAQ/H,iBAAS,IAAAwJ,OAAA,EAAnCA,EAAqClW,MAChD,EACAkR,MAAO,UACJyD,GAAiB,eAAgB,2BAExChI,iBAAe1O,EAAAA,EAAAA,GAAA,CACXmG,IAAG,SAACyF,GAAO,IAADsM,EACN,OAAsB,QAAtBA,EAAOtM,EAAKgL,kBAAU,IAAAsB,OAAA,EAAfA,EAAiB1B,QAAQ/H,SACpC,EACAuE,KAAI,SAACpH,GAAO,IAADuM,EACP,OAAsB,QAAtBA,EAAOvM,EAAKgL,kBAAU,IAAAuB,GAAmB,QAAnBA,EAAfA,EAAiB3B,QAAQ/H,iBAAS,IAAA0J,OAAA,EAAlCA,EAAoCpW,MAC/C,EACAkR,MAAO,UACJyD,GAAiB,eAAgB,0BAExCzE,cAAe,CACXmG,OAAO,EACPrF,MAAO,CACHsF,OAAQ,CACJlS,IAAG,SAACyF,GACA,OAAOA,EAAK0M,mBAAmB9O,QACnC,EACA0K,aAAc,SAAClO,GACX,OACIlG,EAAAA,EAAAA,KAAC+M,EAAiB,CACd7G,OAAO,uBACPiN,MAAOjN,EAAOiN,MACdzS,MAAM,gBACN+M,QAAS,CACL,CACIvH,OAAQ,uBACRxF,MAAO,WACP8D,eAAe,GAEnB,CACI0B,OAAQ,6BACRxF,MAAO,QACP8D,eAAe,GAEnB,CACI0B,OAAQ,6BACRxF,MAAO,QACP8D,eAAe,KAKnC,EACA6P,mBAAmB,EACnBlB,MAAO,UAEXsF,aAAc,CACVpS,IAAG,SAACyF,GACA,OAAOA,EAAK0M,mBAAmBpO,IACnC,EACAiK,mBAAmB,EACnBzP,QAAQ,GAEZ8T,aAAc,CACVrS,IAAG,SAACyF,GACA,OAAOA,EAAK0M,mBAAmBlO,KACnC,EACA+J,mBAAmB,EACnBzP,QAAQ,GAEZ+T,QAAS,CACLtS,IAAG,SAACyF,GACA,OAAOA,EAAK8M,oBAAoBlP,QACpC,EACA0K,aAAc,SAAClO,GACX,OACIlG,EAAAA,EAAAA,KAAC+M,EAAiB,CACd7G,OAAO,wBACPiN,MAAOjN,EAAOiN,MACdzS,MAAM,gBACN+M,QAAS,CACL,CACIvH,OAAQ,wBACRxF,MAAO,WACP8D,eAAe,GAEnB,CACI0B,OAAQ,8BACRxF,MAAO,QACP8D,eAAe,GAEnB,CACI0B,OAAQ,8BACRxF,MAAO,QACP8D,eAAe,KAKnC,EACA6P,mBAAmB,EACnBlB,MAAO,UAEX0F,cAAe,CACXxS,IAAG,SAACyF,GACA,OAAOA,EAAK8M,oBAAoBxO,IACpC,EACAiK,mBAAmB,EACnBzP,QAAQ,GAEZkU,cAAe,CACXzS,IAAG,SAACyF,GACA,OAAOA,EAAK8M,oBAAoBtO,KACpC,EACA+J,mBAAmB,EACnBzP,QAAQ,IAGhBmU,IAAK,CAAC,SAAU,YAEpB1J,UAv8BsC,CAC9CiJ,OAAO,EACPrF,MAAO,CACHtL,QAAS,CACLtB,IAAG,SAACyF,GACA,OAAOA,EAAKkN,SAAQ,OACxB,EACA9F,MAAM,EACNC,MAAO,UAEX8F,MAAO,CACH5S,IAAG,SAACyF,GACA,OAAOA,EAAKkN,SAASC,KACzB,EACA/F,MAAM,EACNC,MAAO,UAEX+F,UAAW,CACP7S,IAAG,SAACyF,GACA,OAAOA,EAAKkN,SAASE,SACzB,EACAhG,MAAM,EACNC,MAAO,UAEXgG,aAAc,CACV9S,IAAG,SAACyF,GACA,OAAOA,EAAKkN,SAASG,YACzB,EACAjG,MAAM,EACNC,MAAO,WAGf4F,IAAK,CAAC,UAAW,YAAa,iBAw6BtB5K,QAAS,CACL9H,IAAG,SAACyF,GACA,OAAOA,EAAKG,IAChB,EACAiH,MAAM,EACNM,QAAS,GACTL,MAAO,UAGfiG,KAAM,CACFzR,QAAS,CACLsL,MAAO,CACH,OACA,gBACA,YACA,cACA,QACA,cACA,OACA,SACA,iBACA,OACA,cACA,UACA,YACA,YAGRoG,QAAS,CACLpG,MAAO,CAAC,OAAQ,QAAS,WAAY,SAAU,YAAa,YAEhEqG,eAAgB,CACZrG,MAAO,CAAC,OAAQ,MAAO,SAAU,UAAW,YAEhDsG,UAAW,CACPtG,MAAO,CACH,OACA,aACA,aACA,eACA,gBACA,oBACA,YAGRuG,QAAS,CACLvG,MAAO,CAAC,OAAQ,eAAgB,gBAAiB,YAErDb,aAAc,CACVa,MAAO,CACH,OACA,OACA,UACA,YACA,oBACA,kBACA,UACA,cAGRwG,YAAa,CACTxG,MAAO,CACH,OACA,aACA,gBACA,kBACA,0BACA,wBACA,gBACA,oBAGRyG,OAAQ,CACJzG,MAAO,CACH,OACA,YACA,QACA,SACA,iBACA,OACA,cACA,YACA,cAKhB7L,UAAW,CACPS,KAAM,CACF8R,2BAA0B,WAAI,EAC9BC,2BAA0B,WAAI,KAK7BC,GAAiBnH,GAAgBM,QAAQoG,KAAKM,OAAOzG,MAElE,SAAS6G,GAAWC,EAA+BC,EAA6BC,GAC5E,OAAOF,SAAAA,EAAM9X,QACTjC,EAAAA,EAAAA,KAACka,GAAa,CAACD,SAAUA,EAAS9Z,SAC7BwK,IAAKoP,GAAM,SAACI,EAAKC,GAAK,OACnBpa,EAAAA,EAAAA,KAAC0I,EAAAA,EAAW,CAAW/H,MAAOqZ,aAAM,EAANA,EAASI,GAAQnV,KAAMkV,GAAnCA,EAA0C,MAIpE/T,EAAAA,EAAOtB,OAAOgC,QAEtB,CAEA,SAASoT,GAAaG,GAMlB,IALAla,EAAQka,EAARla,SAAQma,EAAAD,EACRJ,SAAAA,OAAQ,IAAAK,EAAG,cAAaA,EAKxB,OACIta,EAAAA,EAAAA,KAAA,OAAKQ,UAAWc,GAAM,iBAAkB,CAACiZ,OAAQ,gBAAkBN,IAAW9Z,SACzEA,GAGb,CAEA,IASaqa,GAAmC,CAC5CxT,YAAW,SAAChB,EAAMC,GACd,GAA6B,YAAzBU,EAAAA,EAAAA,GAAOX,EAAKgT,WAAyB/S,EAAWwU,WAXnC,cAWiE,CAC9E,IAAMC,EAAazU,EAAW0U,MAAMC,IAEpC,OAAOxU,EAAAA,EAAOtB,OAAe,OAAEkB,EAAKgT,SAAS0B,GACjD,CACJ,EACAzO,KAAI,SAACjG,GACD,OAAOhG,EAAAA,EAAAA,KAAC6a,EAAAA,EAAI,CAAC7O,QAAShG,EAAKiG,MAC/B,EACA9D,MAAK,SAACnC,GACF,OAAOhG,EAAAA,EAAAA,KAACiI,EAAAA,GAAe,CAACE,MAAOnC,EAAKmC,OACxC,EACAM,OAAM,SAACzC,GACH,OACIhG,EAAAA,EAAAA,KAACka,GAAa,CAAA/Z,UACVH,EAAAA,EAAAA,KAACuI,EAAAA,GAAgB,CAACE,OAAQzC,EAAKyC,UAG3C,EACAiG,eAAc,SAAC1I,GACX,OAAOA,EAAK0I,eAAiBoL,GAAW,CAAC,KAAM,CAAC,mBAAqB1T,EAAAA,EAAOtB,OAAOgC,QACvF,EACAwJ,QAAO,SAACtK,GACJ,OAAO8T,GAAW9T,EAAKsK,QAC3B,EACArB,KAAI,SAACjJ,GACD,OAAOA,EAAKiJ,KAAO6K,GAAW,CAAC,KAAM,CAAC,SAAW1T,EAAAA,EAAOtB,OAAOgC,QACnE,EAEAsH,YAAW,SAACpI,GACR,OAAOA,EAAK8N,WAAc,EACpBgG,GAAW,CAACjU,OAAOG,EAAK8N,aAAc,CAAC,WACvC1N,EAAAA,EAAOtB,OAAOgC,QACxB,EAEAuJ,cAAa,SAACrK,EAAMC,GAChB,OACIhF,EAAAA,EAAAA,MAAA,OACIT,UAAU,4DACVE,MAAOsF,EAAKoN,aAAajT,SAAA,EAEzBH,EAAAA,EAAAA,KAAA,QAAMQ,UAAU,uCAAsCL,SACjDiG,EAAAA,EAAOtB,OAAgB,QAAEkB,EAAKoN,gBAC5B,KAEPpT,EAAAA,EAAAA,KAACiJ,EAAAA,EAAe,CACZhE,KAAMe,EAAKoN,aACX1T,KAAK,iBACLE,KAAK,IACLc,MAAO,QAAUuF,MAIjC,EAEAuM,UAAS,SAACxM,GACN,OAAO8T,GAAW9T,EAAKyN,SAAU,GAAI,OACzC,EAEA9B,YAAW,SAAC3L,GACR,OAAO8T,GAAW9T,EAAK2N,WAAY,GAAI,OAC3C,EAEA1C,eAAc,SAACjL,GACX,OAAO8U,EAAAA,EAAAA,GAAY9U,EAAK+N,YAC5B,EACAtB,eAAc,SAACzM,GACX,OAAO8U,EAAAA,EAAAA,GAAY9U,EAAKgO,oBAC5B,EACApC,aAAY,SAAC5L,GACT,OAAO8U,EAAAA,EAAAA,GAAY9U,EAAKiO,mBAC5B,EAEAxF,YAAW,SAACzI,GAAO,IAAD+U,EACd,OAAsB,QAAfA,EAAA/U,EAAKuN,kBAAU,IAAAwH,OAAA,EAAfA,EAAiBC,gBAAiB5U,EAAAA,EAAOtB,OAAOgC,QAC3D,EAEAyJ,KAAI,SAACvK,GACD,OAAOhG,EAAAA,EAAAA,KAAA,QAAMQ,UAAU,qBAAoBL,SAAEiG,EAAAA,EAAOtB,OAAgB,QAAEkB,EAAKuK,OAC/E,EAEArF,QAAO,SAAClF,GACJ,IAAOkF,EAAWlF,EAAXkF,QAEP,OAAOlL,EAAAA,EAAAA,KAACiL,EAAO,CAACC,QAASA,GAC7B,EAEAoE,UAAS,SAACtJ,GACN,OACIhG,EAAAA,EAAAA,KAAA,QAAMQ,UAAU,oBAAmBL,SAC9BiG,EAAAA,EAAOtB,OAAiB,SAAEkB,EAAKkO,aAAc,CAC1CpP,OAAQ,UAIxB,EAEAqJ,QAAO,SAACnI,GACJ,OAAOhG,EAAAA,EAAAA,KAAC4L,EAAW,CAACE,KAAM9F,GAC9B,EAEAwL,MAAK,SAACxL,GACF,OAAOhG,EAAAA,EAAAA,KAAC6J,EAAAA,EAAQ,CAAChH,MAAOmD,EAAKmO,eAAiB,EAAGlP,KAAMe,EAAKiV,UAAWta,MAAM,WACjF,EAEA2Q,YAAW,SAACtL,GACR,OAAOI,EAAAA,EAAOtB,OAAc,MAAEkB,EAAKsO,WACvC,EAEA3E,UAAS,SAAC3J,GACN,OAAOA,EAAK2J,WACNuL,EAAAA,GAAAA,IAAalV,EAAKwO,iBAAiBvS,OAAQ+D,EAAK2J,UAAU1N,QAC1D,IACV,EAEAoP,SAAQ,SAACrL,GACL,OAAOI,EAAAA,EAAOtB,OAAe,OAAEkB,EAAKqL,SACxC,EAEAhD,OAAM,SAACrI,GACH,OAAOI,EAAAA,EAAOtB,OAAe,OAAEkB,EAAKqI,OACxC,EAEAgB,UAAS,SAACrJ,GACN,OAAOI,EAAAA,EAAOtB,OAAe,OAAEkB,EAAKgT,SACxC,EAEA1K,IAAG,SAACtI,GACA,OAAOhG,EAAAA,EAAAA,KAAC6J,EAAAA,EAAQ,CAAChH,MAAOmD,EAAKyO,aAAe,EAAGxP,KAAMe,EAAKmV,QAASxa,MAAM,WAC7E,EAEAuO,IAAG,SAAClJ,GAAO,IAADoV,EAAAC,EACN,OACIrb,EAAAA,EAAAA,KAAC6J,EAAAA,EAAQ,CACLhH,OAAe,QAARuY,EAAApV,EAAKkJ,WAAG,IAAAkM,OAAA,EAARA,EAAU1R,WAAY,EAC7BzE,KAAc,QAAVoW,EAAErV,EAAKkJ,WAAG,IAAAmM,OAAA,EAARA,EAAUH,aAChBva,MAAM,WAGlB,EAEAkP,OAAM,SAAC7J,GACH,OACIhG,EAAAA,EAAAA,KAACyJ,EAAAA,EAAc,CACXG,WAAY5D,EAAK4D,WACjBD,WAAY3D,EAAK2D,WACjBqL,eAAgBhP,EAAKgP,gBAAkB,GAGnD,EAEApF,aAAY,SAAC5J,GACT,OACIhG,EAAAA,EAAAA,KAAC6J,EAAAA,EAAQ,CACLhH,MAAOmD,EAAKgP,gBAAkB,EAC9B/P,KAAMe,EAAKsV,gBACX3a,MAAM,WAGlB,EAEAqP,QAAO,SAAChK,GACJ,OACIhG,EAAAA,EAAAA,KAAC6J,EAAAA,EAAQ,CAAChH,MAAOmD,EAAKkP,iBAAmB,EAAGjQ,KAAMe,EAAKuV,YAAa5a,MAAM,WAElF,EAEAgQ,aAAY,SAAC3K,GACT,IAAMf,GAAOiW,EAAAA,GAAAA,IAAalV,EAAKsP,YAAYV,MAAO5O,EAAKsP,YAAYC,QAEnE,OAAOvV,EAAAA,EAAAA,KAAC6J,EAAAA,EAAQ,CAAChH,MAAOmD,EAAKoP,qBAAuB,EAAGnQ,KAAMA,EAAMtE,MAAM,WAC7E,EAEA6P,cAAa,SAACxK,GACV,IAAMf,GAAOiW,EAAAA,GAAAA,IAAalV,EAAK0P,aAAad,MAAO5O,EAAK0P,aAAaH,QAErE,OAAOvV,EAAAA,EAAAA,KAAC6J,EAAAA,EAAQ,CAAChH,MAAOmD,EAAKwP,sBAAwB,EAAGvQ,KAAMA,EAAMtE,MAAM,WAC9E,EAEAmQ,kBAAiB,SAAC9K,GACd,IAAMf,GAAOiW,EAAAA,GAAAA,IAAalV,EAAK6P,iBAAiBjB,MAAO5O,EAAK6P,iBAAiBN,QAE7E,OAAOvV,EAAAA,EAAAA,KAAC6J,EAAAA,EAAQ,CAAChH,MAAOmD,EAAK2P,0BAA4B,EAAG1Q,KAAMA,EAAMtE,MAAM,WAClF,EAEAuQ,WAAU,SAAClL,GACP,IAAMf,GAAOiW,EAAAA,GAAAA,IAAalV,EAAKgQ,UAAUpB,MAAO5O,EAAKgQ,UAAUT,QAE/D,OAAOvV,EAAAA,EAAAA,KAAC6J,EAAAA,EAAQ,CAAChH,MAAOmD,EAAK8P,mBAAqB,EAAG7Q,KAAMA,EAAMtE,MAAM,WAC3E,EAEA0R,WAAU,SAACrM,GACP,IAAMf,GAAOiW,EAAAA,GAAAA,IAAalV,EAAKmQ,UAAUvB,MAAO5O,EAAKmQ,UAAUZ,QAE/D,OAAOvV,EAAAA,EAAAA,KAAC6J,EAAAA,EAAQ,CAAChH,MAAOmD,EAAKiQ,mBAAqB,EAAGhR,KAAMA,EAAMtE,MAAM,WAC3E,EAEAyR,aAAY,SAACpM,GACT,GAAIA,EAAKoQ,YAAa,CAClB,IAAMoF,EAAWC,IAAQC,IAAM1V,EAAKoQ,YAAYM,UAEhD,OACI1W,EAAAA,EAAAA,KAACka,GAAa,CAAA/Z,SACTwK,IAAK6Q,GAAU,SAACrT,GACb,IAAMiO,EAAcpQ,EAAKoQ,YAAYM,QAAQvO,GAC7CwT,EAAsBC,EAAAA,EAAazT,GAA5BlD,EAAI0W,EAAJ1W,KAAMtE,EAAKgb,EAALhb,MACPgE,EAAK,GAAApC,OAAM0C,EAAI,MAAA1C,OAAK6T,EAAYnU,QAEtC,OAAOjC,EAAAA,EAAAA,KAAC0I,EAAAA,EAAW,CAAC/H,MAAOA,EAAOsE,KAAMN,GAAYwD,EACxD,KAGZ,CAEA,OAAO,IACX,EAEAgI,KAAI,SAACnK,GAAO,IAAD6V,EACDhU,EAAuB,QAAnBgU,EAAG7V,EAAKoQ,mBAAW,IAAAyF,OAAA,EAAhBA,EAAkBnF,QAAQvG,KAEvC,OAAOtI,EAAOiS,GAAW,CAACjS,EAAK5F,SAAWmE,EAAAA,EAAOtB,OAAOgC,QAC5D,EAEAsJ,WAAU,SAACpK,GAAO,IAAD8V,EACPjU,EAAsB,QAAlBiU,EAAG9V,EAAK8Q,kBAAU,IAAAgF,OAAA,EAAfA,EAAiBpF,QAAQvG,KAEtC,OAAOtI,EAAOiS,GAAW,CAACjS,EAAK5F,SAAWmE,EAAAA,EAAOtB,OAAOgC,QAC5D,EAEA2I,QAAO,SAACzJ,GAAO,IAAD+V,EACJlU,EAAuB,QAAnBkU,EAAG/V,EAAKoQ,mBAAW,IAAA2F,OAAA,EAAhBA,EAAkBrF,QAAQjH,QAEvC,OAAO5H,EAAOiS,GAAW,CAACjS,EAAK5F,QAAS,CAAC,YAAcmE,EAAAA,EAAOtB,OAAOgC,QACzE,EAEA4I,cAAa,SAAC1J,GAAO,IAADgW,EACVnU,EAAsB,QAAlBmU,EAAGhW,EAAK8Q,kBAAU,IAAAkF,OAAA,EAAfA,EAAiBtF,QAAQjH,QAEtC,OAAO5H,EAAOiS,GAAW,CAACjS,EAAK5F,QAAS,CAAC,YAAcmE,EAAAA,EAAOtB,OAAOgC,QACzE,EAEAiI,UAAS,SAAC/I,GAAO,IAADiW,EACNpU,EAAuB,QAAnBoU,EAAGjW,EAAKoQ,mBAAW,IAAA6F,OAAA,EAAhBA,EAAkBvF,QAAQ3H,UAEvC,OAAOlH,EAAOiS,GAAW,CAACjS,EAAK5F,QAAS,CAAC,SAAWmE,EAAAA,EAAOtB,OAAOgC,QACtE,EAEAkI,gBAAe,SAAChJ,GAAO,IAADkW,EACZrU,EAAsB,QAAlBqU,EAAGlW,EAAK8Q,kBAAU,IAAAoF,OAAA,EAAfA,EAAiBxF,QAAQ3H,UAEtC,OAAOlH,EAAOiS,GAAW,CAACjS,EAAK5F,QAAS,CAAC,SAAWmE,EAAAA,EAAOtB,OAAOgC,QACtE,EAEA+H,kBAAiB,SAAC7I,GAAO,IAADmW,EACdtU,EAAuB,QAAnBsU,EAAGnW,EAAKoQ,mBAAW,IAAA+F,OAAA,EAAhBA,EAAkBzF,QAA2B,kBAE1D,OAAO7O,EAAOiS,GAAW,CAACjS,EAAK5F,QAAS,CAAC,YAAcmE,EAAAA,EAAOtB,OAAOgC,QACzE,EAEAgI,wBAAuB,SAAC9I,GAAO,IAADoW,EACpBvU,EAAsB,QAAlBuU,EAAGpW,EAAK8Q,kBAAU,IAAAsF,OAAA,EAAfA,EAAiB1F,QAA2B,kBAEzD,OAAO7O,EAAOiS,GAAW,CAACjS,EAAK5F,QAAS,CAAC,YAAcmE,EAAAA,EAAOtB,OAAOgC,QACzE,EAEAyI,gBAAe,SAACvJ,GAAO,IAADqW,EACZxU,EAAuB,QAAnBwU,EAAGrW,EAAKoQ,mBAAW,IAAAiG,OAAA,EAAhBA,EAAkB3F,QAAyB,gBAExD,OAAO7O,EAAOiS,GAAW,CAACjS,EAAK5F,QAAS,CAAC,YAAcmE,EAAAA,EAAOtB,OAAOgC,QACzE,EAEA0I,sBAAqB,SAACxJ,GAAO,IAADsW,EAClBzU,EAAsB,QAAlByU,EAAGtW,EAAK8Q,kBAAU,IAAAwF,OAAA,EAAfA,EAAiB5F,QAAyB,gBAEvD,OAAO7O,EAAOiS,GAAW,CAACjS,EAAK5F,QAAS,CAAC,YAAcmE,EAAAA,EAAOtB,OAAOgC,QACzE,EAEA2K,QAAO,SAACzL,GAAO,IAADuW,EACJ1U,EAAuB,QAAnB0U,EAAGvW,EAAKoQ,mBAAW,IAAAmG,OAAA,EAAhBA,EAAkB7F,QAAQjF,QAEvC,OAAO5J,EAAOiS,GAAW,CAACjS,EAAK5F,SAAWmE,EAAAA,EAAOtB,OAAOgC,QAC5D,EAEA4K,cAAa,SAAC1L,GAAO,IAADwW,EACV3U,EAAsB,QAAlB2U,EAAGxW,EAAK8Q,kBAAU,IAAA0F,OAAA,EAAfA,EAAiB9F,QAAQjF,QAEtC,OAAO5J,EAAOiS,GAAW,CAACjS,EAAK5F,SAAWmE,EAAAA,EAAOtB,OAAOgC,QAC5D,EAEA6H,UAAS,SAAC3I,GAAO,IAADyW,EACN5U,EAAuB,QAAnB4U,EAAGzW,EAAKoQ,mBAAW,IAAAqG,OAAA,EAAhBA,EAAkB/F,QAAQ/H,UAEvC,OAAO9G,EAAOiS,GAAW,CAACjS,EAAK5F,QAAS,CAAC,YAAcmE,EAAAA,EAAOtB,OAAOgC,QACzE,EAEA8H,gBAAe,SAAC5I,GAAO,IAAD0W,EACZ7U,EAAsB,QAAlB6U,EAAG1W,EAAK8Q,kBAAU,IAAA4F,OAAA,EAAfA,EAAiBhG,QAAQ/H,UAEtC,OAAO9G,EAAOiS,GAAW,CAACjS,EAAK5F,QAAS,CAAC,YAAcmE,EAAAA,EAAOtB,OAAOgC,QACzE,EAEAkL,qBAAoB,SAAChM,GACjB,IAAMf,GAAOiW,EAAAA,GAAAA,IAAalV,EAAKwS,mBAAmBpO,KAAMpE,EAAKwS,mBAAmBlO,MAAO,CACnFhC,KAAM,UAGV,OACItI,EAAAA,EAAAA,KAAC6J,EAAAA,EAAQ,CAAChH,MAAOmD,EAAKwS,mBAAmB9O,UAAY,EAAGzE,KAAMA,EAAMtE,MAAM,WAElF,EAEAkR,sBAAqB,SAAC7L,GAClB,IAAMf,GAAOiW,EAAAA,GAAAA,IAAalV,EAAK4S,oBAAoBxO,KAAMpE,EAAK4S,oBAAoBtO,MAAO,CACrFhC,KAAM,UAGV,OACItI,EAAAA,EAAAA,KAAC6J,EAAAA,EAAQ,CAAChH,MAAOmD,EAAK4S,oBAAoBlP,UAAY,EAAGzE,KAAMA,EAAMtE,MAAM,WAEnF,GAGG,SAASgc,KAA+C,IAA5BC,EAAoB5a,UAAAC,OAAA,QAAAkD,IAAAnD,UAAA,GAAAA,UAAA,GAAG,GACtD,GAAK4a,UAAAA,EAAY3a,OACb,OAAOyQ,GAEX,IAAMvE,EAAUuE,GAAgBM,QAAQC,MAAM9E,QACxC0O,EAAavG,IACfsG,GACA,SAACE,EAAKla,GAQF,OAPAka,EAAIla,GAAO,CACPyD,IAAG,SAACyF,GACA,OAAOA,EAAKkN,SAASpW,EACzB,EACAsQ,MAAM,EACNC,MAAO,UAEJ2J,CACX,GACA,CAAC3O,QAAAA,IAEC4O,EAAMC,IAAO,CAAC,EAAGtK,GAAiB,CACpCM,QAAS,CACLC,MAAO,CACH5D,UAAW,CACP4D,OAAK/S,EAAAA,EAAAA,GAAA,GACE2c,GAEPI,iBAAkBL,EAAW3a,OACvB,CAACib,MAAO,IAAMN,EAAW3a,aACzBkD,KAIlBiC,UAAWoT,KAGf,OADAuC,EAAI/J,QAASC,MAAO5D,UAAW0J,IAAM6D,EAC9BG,CACX,CAEA,SAASnG,GAAiB3Q,EAAoBvF,GAC1C,MAAO,CACH8S,QAASvN,EACTyG,aAAc,CACVC,UAAW,SACX3L,QAASN,GAGrB,C,wKCljDO,SAASyc,EAAiB5c,GAC7B,IAAOC,EAA8BD,EAA9BC,UAAWqC,EAAmBtC,EAAnBsC,MAAOua,EAAY7c,EAAZ6c,SACzB,OACIpd,EAAAA,EAAAA,KAACqd,EAAAA,EAAM,CACH7c,UAAWA,EACXqC,MAAOA,EACPya,UAAQ,EACR7P,QAAS8P,EAAAA,GACTH,SAAU,SAACI,GACP,IAAMC,GAAWC,EAAAA,EAAAA,IACb,CAAC7a,MAAAA,EAAO4a,SAAUD,GAClBG,EAAAA,EAAUC,WAEdR,EAASK,EACb,EACA9Y,MAAO,cAGnB,CAEO,SAASkZ,IACZ,IAAM3Q,GAAWC,EAAAA,EAAAA,MACXtK,GAAQwK,EAAAA,EAAAA,IAAYyQ,EAAAA,GAC1B,OACI9d,EAAAA,EAAAA,KAACmd,EAAgB,CACbta,MAAOA,EACPua,SAAU,SAACK,GACPvQ,ECzCT,SACHrK,GAEA,OAAO,SAACqK,GACJA,GAAS6Q,EAAAA,EAAAA,IAA8Blb,GAC3C,CACJ,CDmCyBmb,CAAuBP,GACpC,GAGZ,CAEO,SAASQ,EAA0Bze,GAAqC,IAAnCgB,EAAShB,EAATgB,UAClC0M,GAAWC,EAAAA,EAAAA,MAEXtK,GAAQwK,EAAAA,EAAAA,IAAY6Q,EAAAA,IAC1B,OACIle,EAAAA,EAAAA,KAACmd,EAAgB,CACb3c,UAAWA,EACXqC,MAAOA,EACPua,SAAU,SAACK,GAAQ,OAAKvQ,GAASiR,EAAAA,EAAAA,IAA4BV,GAAU,GAGnF,C,2NE/BA,SAASW,EAAapS,EAAiBE,GACnC,OAAQA,GACJ,IAAK,eACD,MAAM,uBAAN3J,OAA8ByJ,GAClC,IAAK,aACD,MAAM,sBAANzJ,OAA6ByJ,GACjC,IAAK,YACD,MAAM,qBAANzJ,OAA4ByJ,GAChC,QACI,MAAM,IAAIP,MAAM,8BAADlJ,OAA+B2J,IAE1D,CAwCO,SAASmS,EACZrS,EACAE,EACArE,EACAyW,EACAzV,GAEA,OAAO,SAACqE,EAAUqR,GACd,IAAMC,EAAmC,GAEnChS,EAAO4R,EAAapS,EAASE,IAE/BrD,GAAuB,eAAdqD,GAA4C,cAAdA,GACvCsS,EAASC,MAAKC,EAAAA,EAAAA,IAA0B,GAADnc,OAAIiK,EAAI,UAAU3D,IAG7D8V,IAASL,GAAyB,SAACzb,EAAOD,GACtC4b,EAASC,MACLC,EAAAA,EAAAA,IAA0B,GAADnc,OAClBiK,EAAI,gCAAAjK,OAA+BK,GACtCgc,MAAM/b,QACAsC,EACA,CAAC0Z,OAAQhc,EAAOic,MAAe,QAARlc,EAAgB,SAAW,SACxD,CACImc,aAAc,CACVF,OAAQ,OACRG,YAAa,CAACC,qBAAqB,MAKvD,IAEAN,IAAS9W,GAAM,SAAC7B,EAAMkZ,GAClB,IAAM5W,EAAO4W,EACPC,EAAUnZ,SAAAA,EAAMmC,MAAQ,kBAAoB,qBAC5CiX,EAAUpZ,aAAI,EAAJA,EAAMoZ,QAEjBC,EAAoCnT,EAAWqS,KAUhDC,EAASC,KAAK,CACVU,QAAAA,EACAG,WAAY,CACRpT,UAAAA,EACAF,QAAAA,EACA1D,KAAAA,EACAiX,MAAM,EACNH,QAAAA,KAhBRZ,EAASC,KAAInc,MAAbkc,GAAQgB,EAAAA,EAAAA,GA7ExB,SACIL,EAAiD3f,GAO1B,IAJnB8I,EAAI9I,EAAJ8I,KACSmX,EAACjgB,EAAV4f,QAIE5S,EAAO4R,EANF5e,EAAPwM,QAGSxM,EAAT0M,WAIEwT,EAAoB,oBAAZP,EACRC,EAAUM,EAAQD,EAAI,GAC5B,OAAQnX,GACJ,IAAK,MACD,IAAMG,EAAqB,oBAAZ0W,EACf,MAAO,CACH,CAACA,QAAS,MAAOG,WAAY,CAAC9S,KAAK,GAADjK,OAAKiK,EAAI,aAAamT,MAAOlX,GAC/D,CAAC0W,QAAS,MAAOG,WAAY,CAAC9S,KAAK,GAADjK,OAAKiK,EAAI,kBAAkBmT,MAAOP,IAG5E,IAAK,yBACL,IAAK,uBACL,IAAK,yBACD,MAAO,CAAC,CAACD,QAAS,MAAOG,WAAY,CAAC9S,KAAK,GAADjK,OAAKiK,EAAI,MAAAjK,OAAK+F,IAASqX,MAAOD,IAC5E,IAAK,eACD,MAAO,CACH,CAACP,QAAS,MAAOG,WAAY,CAAC9S,KAAK,GAADjK,OAAKiK,EAAI,qBAAqBmT,MAAOD,GACvE,CACIP,QAAS,MACTG,WAAY,CAAC9S,KAAK,GAADjK,OAAKiK,EAAI,2BAC1BmT,MAAOD,EAAQN,EAAU,KAGrC,QACI,MAAO,GAEnB,CA0CuBQ,CAAgCT,EAAS,CACxCnT,QAAAA,EACAE,UAAAA,EACAkT,QAAAA,EACA9W,KAAAA,KAehB,IAEA,IAAMuX,EAAiB,WACnB,OAAQ3T,GACJ,IAAK,eACD,OAAOgB,GAAS4S,EAAAA,EAAAA,IAAqB9T,IACzC,IAAK,aACD,OAAOkB,GAAS6S,EAAAA,EAAAA,IAAW,SAC/B,IAAK,YACD,OAAO7S,GAAS6S,EAAAA,EAAAA,IAAW,QAEvC,EAEA,OAAOC,EAAAA,EAAAA,IAAwBC,EAAAA,GAAUC,aAAaC,EAAAA,GAAQC,eAAgB,CAAC5B,SAAAA,IAAY,CACvF6B,YAAa,aAAerU,EAC5BsU,SAAS,EACTC,kBAAkB,EAClBC,WAAW,oBAADje,OAAsByJ,KAE/ByU,KAAKZ,GAAe,MACdA,EACf,CACJ,CAEO,SAAS9T,EACZ2U,GAEA,sBAAAlY,GAAAmY,EAAAA,EAAAA,GAAAC,IAAAA,MAAO,SAAAC,EAAO3T,GAAQ,IAAArF,EAAA,OAAA+Y,IAAAA,MAAA,SAAAE,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACC9T,EAAS+T,EAAwBP,IAAS,KAAD,EAAlD,OAAJ7Y,EAAIiZ,EAAAI,KAAAJ,EAAAK,OAAA,SAEHjU,EAAS,CACZ5E,KAAM8Y,EAAAA,EACNvZ,MAAI3H,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAMwgB,GAAW7Y,MACvB,wBAAAiZ,EAAAO,OAAA,GAAAR,EAAA,KACL,gBAAAS,GAAA,OAAA9Y,EAAAlG,MAAA,KAAAN,UAAA,EAPD,EAQJ,CA2BO,SAASif,EAAuBrY,GASpC,IARCoD,EAAOpD,EAAPoD,QACAE,EAAStD,EAATsD,UAQA,OAAO,SAACqV,EAAWhD,GACf,IAAMpW,EAAQoW,IACRiD,GAAOC,EAAAA,EAAAA,IAAmBtZ,GAC1BqE,EAAO4R,EAAapS,EAASE,GAAa,KAE1CwV,EAA2BrC,EAAoCnT,EAAW/D,GAEhF,OAAO6X,EAAAA,EAAAA,IACHC,EAAAA,GAAU5Z,IAAI8Z,EAAAA,GAAQwB,oBAAqB,CACvCnV,KAAAA,EACAoV,WAAW,CACP,kBACA,6BAA2Brf,QAAAid,EAAAA,EAAAA,GACvBkC,EACE,CAAC,wBACD,CACI,cACA,iBACA,uBACA,yBACA,uBACA,4BACHlC,EAAAA,EAAAA,GACW,eAAdtT,GAA4C,cAAdA,EAC5B,CAAC,SAAU,QACX,CAAC,cAGf,CACImU,YAAa,kCAAoC7T,EACjD+T,kBAAkB,EAClBsB,aAAa,mCAADtf,OAAqCiK,KAEvDiU,MAAK,SAAC5Y,GACJ,IAAMia,EAAmD,CAAC,EAoC1D,OAnCIJ,EACA/C,IAAS9W,EAAKka,sBAAsB,SAAC/b,GAAU,IAADgc,EAKlBC,EAJlBC,EACoB,QADjBF,EACLF,EAAY9b,EAAKsC,aAAK,IAAA0Z,EAAAA,EACrBF,EAAY9b,EAAKsC,MAAQ,CAAC8W,QAAS,GAAI+C,cAAe,GAAIha,MAAO,IAElEnC,EAAKwb,OAASA,GACdU,EAAI/Z,MAAQ,cACG,QAAf8Z,EAAIC,EAAI9C,eAAO,IAAA6C,GAAXA,EAAahgB,SACbigB,EAAI9C,SAAW,MAEnB8C,EAAI9C,SAAWpZ,EAAKoZ,SAEpB8C,EAAIC,eAAa,GAAA5f,OAAOyD,EAAKoc,UAAS,KAAA7f,OAAIyD,EAAKwb,KAAI,MAAAjf,OAAKyD,EAAKoZ,QAErE,IAEA/X,OAAOgb,OAAOP,EAAa,CACvBQ,IAAK,CACDna,MAAON,EAAKY,OAAS,cAAgB,GACrC2W,QAASvX,EAAK0a,aAElBC,aAAc,CACVra,MAAON,EAAK6G,eAAiB,cAAgB,GAC7C0Q,QAASvX,EAAK4a,sBAElBC,uBAAwB,CACpBva,MAAON,EAAK6a,uBAAyB,cAAgB,IAEzDC,qBAAsB,CAACxa,MAAON,EAAK8a,qBAAuB,cAAgB,IAC1EC,uBAAwB,CACpBza,MAAON,EAAK+a,uBAAyB,cAAgB,MAI1D,CACHd,YAAAA,EACAe,eAAgBhb,EAAKib,gBACrBxE,wBAAyBzW,EAAKkb,0BAC9Bla,KAAMhB,EAAKgB,KAEnB,GACJ,CACJ,CAEO,SAASma,IACZ,MAAO,CAAC1a,KAAM2a,EAAAA,EAClB,CAEA,SAAS5D,EACLnT,EACA/D,GAEA,OAAQ+D,GACJ,IAAK,eACD,OAAOgX,EAAAA,EAAAA,IAA6B/a,GACxC,IAAK,aACL,IAAK,YACD,OAAOgb,EAAAA,EAAAA,IAA+Bhb,GAC1C,QACI,OAAO,EAEnB,C,uZC7QOib,EAAcC,EAAAA,GAAdD,WACAE,EAAaC,EAAAA,GAAYH,WAAzBE,UAIA,SAASE,EACZC,GAEA,MAAO,CACHnb,KAAMob,EAAAA,GACN7b,KAAM,CAAC4b,YAAAA,GAEf,CAEA,IAAME,EAAqB,IAAIC,EAAAA,EAExB,SAASC,EAAQrkB,GAMF,IALlBoiB,EAAUpiB,EAAVoiB,WACAkC,EAAStkB,EAATskB,UAKA,OAAO,SAAC5W,GACJA,EAAS,CAAC5E,KAAMyb,EAAAA,GAAUC,UAE1B,IAAMC,GAAgBC,EAAAA,EAAAA,IAAkBtC,GAClCpD,EAAmCsF,EAAUK,KAAI,SAAC7b,GACpD,MAAO,CACH6W,QAAS,OACTG,YAAUpf,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACNsM,KAAK,SAADjK,OAAW+F,GACfsZ,WAAYqC,GACTG,EAAAA,GACAC,EAAAA,GAGf,IAEA,OAAOpE,EAAAA,GACFC,aAAaC,EAAAA,GAAQmE,uBAAwB,CAC1ChF,WAAY,CAACd,SAAAA,GACb+F,aAAcZ,EAAmBa,mBAEpC/D,MAAK,SAAC5Y,GACH,IAU4B4c,EAV5BC,GAAyBC,EAAAA,EAAAA,IAAkB9c,EAAM,uBAA1C+c,EAAOF,EAAPE,QAASle,EAAKge,EAALhe,MAEVme,EAAUD,EAAQT,KAAI,SAACW,GACzB,OAAOC,EAAAA,EAAMC,SAASF,IAAW,EACrC,IAEMG,EAAQ,GAERC,EAAiB,IAAIC,IAAcC,GAAAC,EAAAA,EAAAA,GAEpBR,GAAO,IAA5B,IAAAO,EAAAE,MAAAb,EAAAW,EAAAG,KAAAC,MAA8B,CAAC,IACFC,EADlBX,EAAML,EAAA5hB,MAAA6iB,GAAAL,EAAAA,EAAAA,GACMP,GAAM,IAAzB,IAAAY,EAAAJ,MAAAG,EAAAC,EAAAH,KAAAC,MAA2B,CAAC,IAAjBxf,EAAIyf,EAAA5iB,MACIG,EAAQgD,EAAhB6Y,OACFqG,EAAeS,IAAI3iB,KACpBiiB,EAAMxG,KAAKzY,GACXkf,EAAehe,IAAIlE,GAE3B,CAAC,OAAA4iB,GAAAF,EAAAG,EAAAD,EAAA,SAAAF,EAAAI,GAAA,CACL,CAAC,OAAAF,GAAAR,EAAAS,EAAAD,EAAA,SAAAR,EAAAU,GAAA,CAID,GAFA5Y,EAAS,CAAC5E,KAAMyb,EAAAA,GAAUgC,QAASle,KAAM,CAACod,MAAAA,KAEtCve,EACA,MAAMA,CAEd,IAAE,OACK,SAACA,GACAA,EAAMsf,OAASC,IAAAA,MAASC,UAI5BhZ,EAAS,CACL5E,KAAMyb,EAAAA,GAAUoC,QAChBte,KAAM,CAACnB,MAAAA,KALPwG,EAAS,CAAC5E,KAAMyb,EAAAA,GAAUmC,WAOlC,GACR,CACJ,CAEO,SAASpG,EAAqB7T,GACjC,OAAO,SAACiB,GACJ,OAAO+S,EAAAA,GACF5Z,IAAI8Z,EAAAA,GAAQiG,yBAA0B,CACnC5Z,KAAK,uBAADjK,OAAyB0J,GAC7B2V,YAAYsC,EAAAA,EAAAA,IAAkBmC,EAAAA,EAAKC,cAEtC7F,MAAK,SAAC3U,GACHoB,EAAS,CACL5E,KAAMie,EAAAA,GACN1e,KAAM,CAACiE,MAAI5L,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAM4L,GAAI,IAAE+S,OAAQ5S,MAEvC,GACR,CACJ,CAEO,SAASua,EACZC,GAEA,MAAO,CACHne,KAAMoe,EAAAA,GACN7e,KAAM,CAAC4e,WAAYA,EAAWE,QAEtC,CAEO,SAASxI,EAA4B2F,GACxC,OAAO,SAAC5W,GACJA,EAAS,CACL5E,KAAMse,EAAAA,GACN/e,KAAM,CAACic,UAAAA,IAEf,CACJ,CAEO,SAAS+C,EACZC,GAEA,MAAO,CACHxe,KAAMye,EAAAA,GACNlf,KAAMif,EAEd,CAEO,SAASE,EAAWhkB,EAAc6E,GACrC,OAAO,SAACqF,EAAUqR,GACd,IAAMpW,EAAQoW,IACR0I,GAAgBC,EAAAA,EAAAA,IAAa/e,IAAU,CAAC,EACxCf,GAASlH,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACR+mB,GAAa,IAAA9iB,EAAAA,EAAAA,GAAA,GACfnB,EAAO6E,IAGZqF,GAASia,EAAAA,EAAAA,IAAW7D,EAAWF,EAAYhc,GAC/C,CACJ,CAEO,SAASggB,EAAapkB,GACzB,OAAO,SAACkK,EAAUqR,GACd,IAAMpW,EAAQoW,IACRnX,EAAYigB,KAAMH,EAAAA,EAAAA,IAAa/e,GAAQnF,GAE7CkK,GAASia,EAAAA,EAAAA,IAAW7D,EAAWF,EAAYhc,GAC/C,CACJ,CAEO,SAASkgB,EAAoBC,GAChC,sBAAA/e,GAAAmY,EAAAA,EAAAA,GAAAC,IAAAA,MAAO,SAAAC,EAAO3T,GAAQ,OAAA0T,IAAAA,MAAA,SAAAE,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACZ9T,GACFia,EAAAA,EAAAA,IACI5D,EAAAA,GAAYH,WAAWoE,iBACvBnE,EAAAA,GAAWD,WACXmE,IAEN,KAAD,mBAAAzG,EAAAO,OAAA,GAAAR,EAAA,KACJ,gBAAAS,GAAA,OAAA9Y,EAAAlG,MAAA,KAAAN,UAAA,EARD,EASJ,CAEO,SAASylB,IACZ,OAAO,SAACva,EAAUqR,GACd,IAAMpW,EAAQoW,IAERqD,EAAa8F,IAAS,GACvBC,EAAAA,EAAAA,IAAsBxf,IAAU,SAChCyf,EAAAA,EAAAA,IAAuBzf,IAAU,SAGlC,IAAMyZ,EAAW3f,SAIrBiL,EAAS,CAAC5E,KAAMuf,EAAAA,GAAyB7D,WAEzChE,EAAAA,EAAAA,IACIC,EAAAA,GAAU6H,KAAK3H,EAAAA,GAAQmE,wBAAsBpkB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACzCsM,KAAM,sBACNoV,WAAAA,GACGwC,EAAAA,GACAC,EAAAA,IAEP,CACIhE,YAAa,sBACbG,WAAW,uBAADje,OAAyBqf,EAAWmG,KAAK,MACnDxH,kBAAkB,IAGrBE,MAAK,SAACwE,GACH,IAAMlL,EAAO,IAAIoL,IACX6C,EAAQ,IAAI7C,IAClBxG,IAASsG,GAAO,SAACjf,GACb,IAAM8F,EAAO,IAAIua,EAAAA,EAAKrgB,GACtB2Y,IAAS7S,EAAKiO,MAAM,SAACI,GACbA,GACAJ,EAAK7S,IAAIiT,EAEjB,IACIrO,EAAKyE,MACLyX,EAAM9gB,IAAI4E,EAAKyE,KAEvB,IAEArD,EAAS,CACL5E,KAAMuf,EAAAA,GAAyB9B,QAC/Ble,KAAM,CACFogB,mBAAmBzI,EAAAA,EAAAA,GAAIzF,GAAM7G,OAC7BgV,oBAAoB1I,EAAAA,EAAAA,GAAIwI,GAAO9U,SAG3C,IAAE,OACK,SAACxM,GACJwG,EAAS,CACL5E,KAAMuf,EAAAA,GAAyB1B,QAC/Bte,KAAM,CAACnB,MAAAA,IAEf,IACR,CACJ,C,0KCnQqByhB,GAAKxlB,EAAAA,EAAAA,IACtB,SAAAwlB,EAAYtgB,IAAM/F,EAAAA,EAAAA,GAAA,KAAAqmB,GAEdplB,KAAKC,KAAO6E,EAAK7E,KACjBD,KAAKkJ,KAAOpE,EAAK7E,KACjBD,KAAKoF,MAAQN,EAAKugB,KAAO,UAAY,SACrCrlB,KAAKslB,eAAiBtlB,KAAK0F,OAAS,SAAW1F,KAAKoF,MAEpDpF,KAAK0F,OAASsc,EAAAA,EAAMuD,WAAWzgB,EAAM,aAAc,EACnD9E,KAAKwlB,WAAaxD,EAAAA,EAAMC,SAASnd,EAAM,iBAAmB,GAC1D9E,KAAK8F,KAAOkc,EAAAA,EAAMC,SAASnd,EAAM,SACjC9E,KAAKmI,QAAU6Z,EAAAA,EAAMC,SAASnd,EAAM,YACpC9E,KAAKqQ,aAAe2R,EAAAA,EAAMC,SAASnd,EAAM,8BACzC9E,KAAKylB,SAAWzD,EAAAA,EAAMC,SAASnd,EAAM,aAErC9E,KAAK0lB,YAAc1D,EAAAA,EAAMC,SAASjiB,KAAKylB,SAAU,iBACjDzlB,KAAK2lB,UAAY3D,EAAAA,EAAMC,SAASjiB,KAAKylB,SAAU,eAC/CzlB,KAAK4lB,YAAc5D,EAAAA,EAAMC,SAASjiB,KAAKylB,SAAU,gBACrD,IAlBiBL,EAoBV7B,WAAa,CAAC,cAAe,SAAU,WAAY,OAAQ,UAAW,e,qCCgE1E,SAASvG,EAAWzX,GACvB,OAAO,SAAC4E,GAGJ,OAFAA,EAAS,CAAC5E,KAAMsgB,EAAAA,GAAY5E,UAErB9W,EAAS5E,IAASugB,EAAAA,GAAWC,KAzCjC,SAAC5b,EAAUqR,GACd,IAAMpS,GAAUW,EAAAA,EAAAA,IAAWyR,KAC3B,OAAOwK,QAAQC,IAAI,CACfC,EAAAA,EAAM5iB,IAAI,iBAAD9D,OAAkB4J,EAAO,eAClC8T,EAAAA,GAAU5Z,IAAI8Z,EAAAA,GAAQ+I,cAAe,CACjC1c,KAAM,qBACNoV,WAAYuG,EAAM7B,eAGrB7F,MAAK,SAAA7X,GAA4B,IAADI,GAAApF,EAAAA,EAAAA,GAAAgF,EAAA,GAAxBf,EAAImB,EAAA,GAAJnB,KAAOshB,EAAWngB,EAAA,GACjBogB,EAAUze,IAAK9C,GAAM,SAACwhB,GACxB,IAAMC,EAAoBvE,EAAAA,EAAMwE,cAC5BxE,EAAAA,EAAMC,SAASmE,GAAaE,EAAUrmB,OAG1C,OAAO,IAAImlB,GAAKjoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAAGmpB,GAAcC,GACvC,IAEApc,EAAS,CACL5E,KAAMsgB,EAAAA,GAAY7C,QAClBle,KAAM,CAACuhB,QAAAA,IAEf,IAAE,OACK,SAAC1iB,GACJwG,EAAS,CACL5E,KAAMsgB,EAAAA,GAAYzC,QAClBte,KAAM,CAACnB,MAAAA,IAEf,GACR,EA/DO,SAACwG,GACJ,OAAO6b,QAAQC,IAAI,CACf/I,EAAAA,GAAU6H,KAAK3H,EAAAA,GAAQqJ,qBAAsB,CACzChd,KAAM,oBACNoV,WAAYuG,EAAM7B,aAEtBrG,EAAAA,GAAU5Z,IAAI8Z,EAAAA,GAAQsJ,uBAAwB,CAACjd,KAAM,wBAEpDiU,MAAK,SAAAjhB,GAAyB,IAADgJ,GAAA5E,EAAAA,EAAAA,GAAApE,EAAA,GAAtBqI,EAAIW,EAAA,GAAEkhB,EAAUlhB,EAAA,GACd4gB,EAAUze,IAAK9C,GAAM,SAACwhB,GACxB,IAAMrmB,EAAO+hB,EAAAA,EAAMC,SAASqE,GACtBxgB,EAAOkc,EAAAA,EAAMC,SAASqE,EAAW,UAAY,UAC7CM,EAAQC,QAAQ7E,EAAAA,EAAMC,SAAS0E,EAAW,IAADnnB,OAAMS,IAAQ2mB,OACvD/H,EAAamD,EAAAA,EAAMwE,cAAcF,GACjCQ,EAAO,CAAC7mB,KAAAA,EAAM6F,KAAAA,EAAMuf,MAAOuB,GAEjC,OAAO,IAAIxB,GAAKjoB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAAG2pB,GAASjI,GAClC,IAEA1U,EAAS,CACL5E,KAAMsgB,EAAAA,GAAY7C,QAClBle,KAAM,CAACuhB,QAAAA,IAEf,IAAE,OACK,SAAC1iB,GACJwG,EAAS,CACL5E,KAAMsgB,EAAAA,GAAYzC,QAClBte,KAAM,CAACnB,MAAAA,IAEf,GACR,EA8CA,CACJ,CAEO,SAAS8f,EAAiBC,GAC7B,MAAO,CACHne,KAAMwhB,EAAAA,GACNjiB,KAAM,CAAC4e,WAAAA,GAEf,CAEO,SAASsD,EAAkBC,GAC9B,MAAO,CACH1hB,KAAMwhB,EAAAA,GACNjiB,KAAM,CAACmiB,YAAAA,GAEf,CAEO,SAASC,EAAiBC,GAC7B,MAAO,CACH5hB,KAAMwhB,EAAAA,GACNjiB,KAAM,CAACqiB,WAAAA,GAEf,CAEO,SAASC,EAAmBC,GAC/B,MAAO,CAAC9hB,KAAMwhB,EAAAA,GAAwBjiB,KAAM,CAACuiB,aAAAA,GACjD,CAEO,SAASC,IACZ,OAAO,SAACnd,GACJA,EAAS,CAAC5E,KAAMsgB,EAAAA,GAAY1C,WAChC,CACJ,C,mICnHaoE,EAA+B,SAACniB,GAAgB,OACzDA,EAAMoiB,WAAWC,oBAAqB,EAE7BC,GAAuCC,EAAAA,EAAAA,IAChD,CAACJ,IACD,SAAA9qB,GAAmD,IAAjDsiB,EAAWtiB,EAAXsiB,YAAaxD,EAAuB9e,EAAvB8e,wBAAyBzV,EAAIrJ,EAAJqJ,KACpC,OAAA3I,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACO4hB,GAAW,IACdjZ,KAAM,CAACA,KAAAA,GACP0M,OAAQe,IACJgI,GACA,SAACxB,EAAKja,EAAO8nB,GAGT,OADA7N,EADY6N,GACD,CAAC9nB,MAAAA,GACLia,CACX,GACA,CAAC,IAGb,IAGSoG,GAA+BwH,EAAAA,EAAAA,IACxC,CAACE,EAAAA,GAA+BC,EAAAA,KAChC,SAACC,EAAaC,GACV,OAAOD,GAAelB,QAAQmB,EAASC,6BAC3C,IAGS7H,GAAiCuH,EAAAA,EAAAA,IAC1C,CAACE,EAAAA,GAA+BC,EAAAA,KAChC,SAACC,EAAaC,GACV,OAAOD,GAAelB,QAAQmB,EAASE,+BAC3C,G,8UCFEC,GAAuBR,EAAAA,EAAAA,IACzB,CAACS,EAAAA,GAA+BC,EAAAA,IAChCC,EAAAA,GAGEC,GAAkCZ,EAAAA,EAAAA,IACpC,CAACQ,IACD,SAACK,GAAiB,OAAMA,EAAkBtpB,OAAS,EAAK,CAAC,YAAwB,EAAE,IAGjFupB,GAAoBd,EAAAA,EAAAA,IAAe,CAAC7G,EAAAA,GAhBpB,SAAC1b,GAAgB,OAAKA,EAAMoiB,WAAWtF,MAAMA,MAAMwB,WAAWgF,aAAc,IAgB9B,SAACxG,EAAOwB,GACxE,IAAMiF,EAAcjF,EAAWkF,MAAM,OACrC,OAAOC,IAAQ3G,GAAO,SAACnZ,GACnB,OAAO+f,IAAMH,GAAa,SAACjF,GAAU,IAAAqF,EAAA,OAAKhgB,SAAU,QAANggB,EAAJhgB,EAAMG,YAAI,IAAA6f,OAAA,EAAVA,EAAYL,cAAchR,WAAWgM,EAAW,GAC9F,GACJ,IAEMsF,GAAmBrB,EAAAA,EAAAA,IACrB,CAACc,EAAmBQ,EAAAA,GAAmCd,IACvD,SAACjG,EAAOgH,EAAYV,GAChB,IAAMW,EAAkBD,EAAW1pB,OAAOgpB,GAC1C,IAAKW,EAAgBjqB,OACjB,OAAOgjB,EAGX,IAAMkH,EAAYC,EAAAA,YAAW9pB,WAAC,GAADkd,EAAAA,EAAAA,GAAI0M,IACjC,OAAON,IAAQ3G,GAAO,SAACnZ,GACnB,OAAOqgB,EAAUrgB,EACrB,GACJ,IAGSugB,GAAkB3B,EAAAA,EAAAA,IAC3B,CAACqB,EAtCgB,SAAC5jB,GAAgB,OAAKA,EAAMmkB,OAAO/e,EAAAA,GAA2B,EAsC9C6d,EAAAA,GAAsBte,EAAAA,KACvD,SAACmY,EAAO7X,EAAWwP,EAAYzQ,GAC3B,OAAO/F,EAAAA,EAAOmmB,MAAMrZ,KAChB+R,EAAMd,KAAI,SAACoB,GAAC,OAAArlB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAUqlB,GAAC,IAAEpZ,QAAAA,GAAO,IAChCiB,GACAuP,EAAAA,EAAAA,IAAmBC,GAAY5J,QAAQC,MAE/C,IAGSuZ,GAA8B9B,EAAAA,EAAAA,IACvC,CAACU,EAAAA,IACDzO,EAAAA,IAGE8P,GAAoB/B,EAAAA,EAAAA,IACtB,CAAC8B,EAxDkB,SAACrkB,GAAgB,OAAKA,EAAMoiB,WAAWtF,MAAMA,MAAMxB,WAAY,EAK7D,SAACtb,GAAgB,OAAKukB,EAAAA,EAAAA,IAAmBvkB,IAAU0R,EAAAA,EAAe,IAoDvF,SAACnH,EAAiB+Q,EAAakJ,GAAa,MACxB,WAAhBlJ,EAA2BkJ,EAAgBja,EAAgBM,QAAQoG,KAAKqK,GAAaxQ,KAAK,IAG5F2Z,GAAiClC,EAAAA,EAAAA,IACnC,CAAC+B,IACD,SAACI,GAOG,OAN2BC,IAAAA,WAAO,GAADtN,EAAAA,EAAAA,GAC1BqN,EAAe1I,KACd,SAAC4I,GAAC,OAAM7e,EAAAA,GAA2B6e,EAAE,KAKjD,IAGSC,GAAwBtC,EAAAA,EAAAA,IACjC,CACIkC,EACAK,EAAAA,GACA3B,IAEJ,SAAC4B,EAA6BC,EAA8BC,GACxD,IAAMC,EAAqB,GAAA9qB,QAAAid,EAAAA,EAAAA,GACpB0N,IAA2B1N,EAAAA,EAAAA,GAC3B2N,IAA4B3N,EAAAA,EAAAA,GAC5B4N,IASP,OAN2BN,IAAAA,WAAO,GAADtN,EAAAA,EAAAA,GAC1B6N,EAAsBlJ,KACrB,SAAC4I,GAAC,OAAMO,EAAAA,EAA6BP,EAAE,KAKnD,IAGSpF,GAAwB+C,EAAAA,EAAAA,IAAe,CAACsC,IAAwB,SAACpL,GAC1E,OAAOA,EAAW2L,QAAQ,SAAW,CACzC,IAEa3F,GAAyB8C,EAAAA,EAAAA,IAAe,CAACsC,IAAwB,SAACpL,GAC3E,OAAOA,EAAW2L,QAAQ,SAAW,CACzC,IAOaC,GAAwB9C,EAAAA,EAAAA,IACjC,CAAC/C,EANkB,SAACxf,GAAgB,OACpCA,EAAMoiB,WAAWtF,MAAMA,MAAMgD,iBAAkB,EAKPwF,EAAAA,KACxC,SAACC,EAAcC,EAAaC,GACxB,OAAKF,GAIElO,EAAAA,EAAAA,GAAIoO,EAAWtmB,QAAQ4L,OAHnBya,CAIf,IAGSE,GAAyBnD,EAAAA,EAAAA,IAClC,CAAC9C,EAfmB,SAACzf,GAAgB,OACrCA,EAAMoiB,WAAWtF,MAAMA,MAAMiD,kBAAmB,EAcN4F,EAAAA,KAC1C,SAACJ,EAAcK,EAAcC,GACzB,OAAKN,GAIElO,EAAAA,EAAAA,GAAIwO,EAAY1mB,QAAQ4L,OAHpB6a,CAIf,IAGS7P,GAA8BwM,EAAAA,EAAAA,IACvC,CAlIkC,SAACviB,GAAgB,OAAKA,EAAMoiB,WAAWtF,MAAMA,MAAMnB,SAAU,IAmI/F,SAACmK,GACG,IAAMlR,GAAoByC,EAAAA,EAAAA,GAAOyO,GACjC,OAAmB,IAAflR,EAAI9a,OACG,CAAC0b,EAAAA,EAAUC,WAEfb,CACX,IAGSmR,EAA8B,CACvC,MACA,iBACA,SACA,UACA,QACA,aACA,eACA,WAGSC,GAAyCzD,EAAAA,EAAAA,IAClD,CAAC0D,EAAAA,KACD,SAACjC,GACG,OAAKA,EAIE+B,EAA4B/J,KAAI,SAAChc,GAAK,MAAM,CAACA,MAAAA,EAAM,IACrDkmB,OAAOlC,GACPhI,KAAI,SAAA3kB,GAAO,OAAAA,EAAL2I,KAAgB,IALhB,CAAC,MAMhB,G,ijBCtKSmmB,EAAqB,SAACnmB,GAAgB,OAAKA,EAAMoiB,WAAWtF,MAAM6B,KAAM,EAExEjD,EAAW,SAAC1b,GAAgB,OAAkBA,EAAMoiB,WAAWtF,MAAMA,MAAMA,KAAM,EAEjFmJ,GAAwC1D,EAAAA,EAAAA,IACjD,CAAC4D,IACD,SAAA9uB,GAAyB,IAAb2I,EAAK3I,EAAA,QAAL2I,MACR,GAAKA,EAAMlG,SAA4B,IAAjBkG,EAAMlG,QAA6B,QAAbkG,EAAM,IAAlD,CAGA,IAAMomB,EAAWjY,IACbnO,GACA,SAAC2U,EAAK9W,GAIF,MAHgB,MAAZA,EAAK,IACL8W,EAAI5V,IAAIlB,EAAKwoB,UAAU,IAEpB1R,CACX,GACA,IAAIqI,KAGR,GAAIoJ,EAAS3uB,KAcT,OAbI2uB,EAAS3uB,OAASuI,EAAMlG,SACxB,IAAIwsB,EAAAA,GAAUvnB,IAAI,CACdlE,KAAM,2BACNrC,MAAO,SACP+tB,YAAY,EACZhuB,MAAO,sBACPM,QACI,0GAIZutB,EAASrnB,IAAI,OAEN,SAAC4E,GACJ,OAAQyiB,EAAS5I,IAAI7Z,EAAK3D,MAC9B,EAEA,IAAMwmB,EAAW,IAAIxJ,IAAIhd,GACzB,OAAO,SAAC2D,GACJ,OAAO6iB,EAAShJ,IAAI7Z,EAAK3D,MAC7B,CAjCJ,CAmCJ,IAGSgjB,GAAgCT,EAAAA,EAAAA,IACzC,CAAC4D,EAAoBlD,EAAAA,KACrB,SAACtE,EAAOlK,GACJ,IAAMgS,EAAiBtY,IACnBsG,GACA,SAACE,EAAK+R,GAEF,OADA/R,EAAIgS,EAAAA,GAAqBD,GAAUE,IAAWC,EAAAA,IACvClS,CACX,GACA,CAAC,GAEL,OAAOE,IAAO,CAAC,EAAG,CAAC3D,QAASuV,GAAiB9H,EACjD,IAGS2G,GAA8B/C,EAAAA,EAAAA,IAAe,CAAC7G,IAAW,SAACoB,GAgBnE,OAfY3O,IACR2O,GACA,SAACnI,EAAKhR,GACF,IAAOiO,EAAQjO,EAARiO,KAQP,OAPA4E,IAAS5E,GAAM,SAACI,GACO,IAAD8U,EAAdnS,EAAI6I,IAAIxL,GACI,QAAZ8U,EAAAnS,EAAIzW,IAAI8T,UAAI,IAAA8U,GAAZA,EAAc/nB,IAAI4E,GAElBgR,EAAI/D,IAAIoB,EAAK,IAAIgL,IAAI,CAACrZ,IAE9B,IACOgR,CACX,GACA,IAAIoS,IAGZ,IAEapB,GAA+BpD,EAAAA,EAAAA,IAAe,CAAC7G,IAAW,SAACoB,GACpE,OAAO3O,IACH2O,GACA,SAACnI,EAAKhR,GAAU,IAADqjB,EAIJC,EAHD7e,EAAgB,QAAZ4e,EAAGrjB,EAAKyE,YAAI,IAAA4e,EAAAA,EAAIE,EAAAA,GAM1B,OALKvS,EAAI6I,IAAIpV,GAGI,QAAb6e,EAAAtS,EAAIzW,IAAIkK,UAAK,IAAA6e,GAAbA,EAAeloB,IAAI4E,GAFnBgR,EAAI/D,IAAIxI,EAAM,IAAI4U,IAAI,CAACrZ,KAIpBgR,CACX,GACA,IAAIoS,IAEZ,IAEMI,EAAwB,CAC1Blc,aAAc,CAAC,gBACf2G,KAAM,CAAC,QACP5R,MAAO,CAAC,SACRoI,KAAM,CAAC,QACP9H,OAAQ,CAAC,UACTiG,eAAgB,CAAC,kBACjBO,KAAM,CAAC,QACP6E,WAAY,CAAC,cACbC,YAAa,CAAC,eACdC,oBAAqB,CAAC,uBACtBC,mBAAoB,CAAC,sBACrB5C,SAAU,CAAC,YACXhD,OAAQ,CAAC,UACTkG,UAAW,CAAC,aACZD,WAAY,CAAC,cACbib,YAAa,CAAC,UACdC,WAAY,CAAC,UACbC,eAAgB,CAAC,UACjBC,UAAW,CAAC,UACZC,UAAW,CAAC,UACZC,MAAO,CAAC,UACRC,WAAY,CAAC,UACbC,mBAAoB,CAAC,UACrBC,kBAAmB,CAAC,UACpBC,mBAAoB,CAAC,UACrBC,iBAAkB,CAAC,UACnBC,kBAAmB,CAAC,UACpBC,aAAc,CAAC,UACfC,cAAe,CAAC,UAChBC,cAAe,CAAC,aAChBC,eAAgB,CAAC,aACjBC,cAAe,CAAC,aAChBC,eAAgB,CAAC,aACjBC,gBAAiB,CAAC,eAClBC,iBAAkB,CAAC,eACnBC,iBAAkB,CAAC,gBACnBC,kBAAmB,CAAC,gBACpBC,qBAAsB,CAAC,oBACvBC,sBAAuB,CAAC,oBACxB9H,IAAK,CAAC,eACN7Y,KAAM,CAAC,eACPV,QAAS,CAAC,eACVV,UAAW,CAAC,eACZgiB,iBAAkB,CAAC,eACnBC,eAAgB,CAAC,eACjBvf,QAAS,CAAC,eACV9C,UAAW,CAAC,eACZsiB,WAAY,CAAC,sBACbC,YAAa,CAAC,sBACdC,YAAa,CAAC,uBACdC,aAAc,CAAC,wBAebC,GAAmB3G,EAAAA,EAAAA,IACrB,CAAC4D,EAAoBR,IACrB,SAACwD,EAActD,GAAiB,IAADuD,EACpBhhB,EAAQ+gB,EAAY,QAApB/gB,KACP,MAAI,iBAAoBA,IAAqB,QAAbghB,EAAAhhB,EAAKihB,gBAAQ,IAAAD,OAAA,EAAbA,EAAgB,MAAOlC,EAAAA,GAC5C,SAAA7mB,GAAM,YAAgCrD,IAAhCqD,EAAJ+H,IAA8C,EAEpDkhB,EAA+BH,EAAY,QAAS/gB,KAAMyd,GAAa,SAACliB,GAAI,MAAK,CACpFA,EAAKyE,KACR,GACL,IAGEmhB,GAA4BhH,EAAAA,EAAAA,IAC9B,CACI4D,EACAb,EACA4D,EACAjD,IAEJ,SAACkD,EAAcK,EAAaC,EAAeC,GA6PvC,MA5P+B,CAE3Bze,aACIwW,QAAQ0H,EAAY,QAASle,eAC5B,SAACtH,GAAU,IAADgmB,EACP,OAAQ,KAAuB,QAAtBA,EAAKhmB,EAAKsH,oBAAY,IAAA0e,OAAA,EAAjBA,EAAmBvE,QAAQ+D,EAAY,QAASle,cAClE,EACJ2G,KAAM0X,EACFH,EAAY,QAASnX,IACrBwX,GACA,SAAC7lB,GAAI,OAAKA,EAAKiO,IAAI,IAEvB5R,MAAO0pB,EACPthB,KAAMqhB,EAENnpB,OAAQspB,EAAoB,SAAUT,EAAY,QAAS7oB,QAC3DiG,eAAgBqjB,EACZ,iBACAT,EAAY,QAAS5iB,gBAEzBO,KAAM8iB,EAAoB,OAAQT,EAAY,QAASriB,MACvD6E,WAAYke,EAA0BV,EAAY,QAASxd,YAE3DC,YAAake,EACT,cACAX,EAAY,QAASY,eAEzBle,oBAAqBie,EACjB,sBACAX,EAAY,QAASa,eAEzBle,mBAAoBge,EAChB,qBACAX,EAAY,QAASc,aAIzB/gB,SAAUghB,EACNf,EAAajY,QAAQhI,SACrB,YACA,SAACvF,GAAI,OAAKA,CAAI,IAElBuC,OAAQgkB,EAAqBf,EAAajY,QAAQhL,OAAQ,UAAU,SAACvC,GAAI,OAAKA,CAAI,IAClFyI,UAAW8d,EACPf,EAAajY,QAAQ9E,UACrB,aACA,SAACzI,GAAI,OAAKA,CAAI,IAElBwI,WAAY+d,EACRf,EAAajY,QAAQ/E,WACrB,cACA,SAACxI,GAAI,OAAKA,CAAI,IAIlByjB,YAAa8C,EACTf,EAAahjB,IAAIihB,YACjB,QACA,SAACzjB,GAAI,OAAKA,EAAK+D,OAAOyiB,YAAY,IAEtC9C,WAAY6C,EACRf,EAAahjB,IAAIkhB,WACjB,QACA,SAAC1jB,GAAI,OAAKA,EAAK+D,OAAO0iB,WAAW,IAErC9C,eAAgB4C,EACZf,EAAahjB,IAAImhB,eACjB,QACA,SAAC3jB,GAAI,OAAKA,EAAK+D,OAAO2iB,gBAAgB,IAE1C9C,UAAW2C,EACPf,EAAahjB,IAAIohB,UACjB,QACA,SAAC5jB,GAAI,OAAKA,EAAK+D,OAAO4iB,UAAU,IAEpC9C,UAAW0C,EACPf,EAAahjB,IAAIqhB,UACjB,QACA,SAAC7jB,GAAI,OAAKA,EAAK+D,OAAO8f,SAAS,IAEnCC,MAAOyC,EACHf,EAAahjB,IAAIshB,MACjB,QACA,SAAC9jB,GAAI,OAAKA,EAAK+D,OAAO+f,KAAK,IAE/BC,WAAYwC,EACRf,EAAahjB,IAAIuhB,WACjB,QACA,SAAC/jB,GAAI,OAAKA,EAAK+D,OAAO6iB,WAAW,IAErC5C,mBAAoBuC,EAChBf,EAAahjB,IAAIwhB,mBACjB,QACA,SAAChkB,GAAI,OAAKA,EAAK+D,OAAO8iB,oBAAoB,IAG9C5C,kBAAmBsC,EACff,EAAahjB,IAAIyhB,kBACjB,QACA,SAACjkB,GAAI,OAAKA,EAAK+D,OAAO+iB,cAAc,IAExC5C,mBAAoBqC,EAChBf,EAAahjB,IAAI0hB,mBACjB,SACA,SAAClkB,GAAI,OAAKA,EAAK+D,OAAO+iB,cAAc,IAGxC3C,iBAAkBoC,EACdf,EAAahjB,IAAI2hB,iBACjB,QACA,SAACnkB,GAAI,OAAKA,EAAK+D,OAAOgjB,aAAa,IAEvC3C,kBAAmBmC,EACff,EAAahjB,IAAI4hB,kBACjB,SACA,SAACpkB,GAAI,OAAKA,EAAK+D,OAAOgjB,aAAa,IAGvC1C,aAAckC,EACVf,EAAahjB,IAAI6hB,aACjB,QACA,SAACrkB,GAAI,OAAKA,EAAK+D,OAAOijB,SAAS,IAEnC1C,cAAeiC,EACXf,EAAahjB,IAAI8hB,cACjB,SACA,SAACtkB,GAAI,OAAKA,EAAK+D,OAAOijB,SAAS,IAInCzC,cAAegC,EACXf,EAAa/X,UAAU8W,cACvB,SACA,SAACvkB,GAAI,OAAKA,EAAKqK,SAAS,IAE5Bma,eAAgB+B,EACZf,EAAa/X,UAAU+W,eACvB,UACA,SAACxkB,GAAI,OAAKA,EAAKqK,SAAS,IAE5Boa,cAAe8B,EACXf,EAAa/X,UAAUgX,cACvB,SACA,SAACzkB,GAAI,OAAKA,EAAKkK,SAAS,IAE5Bwa,eAAgB6B,EACZf,EAAa/X,UAAUiX,eACvB,UACA,SAAC1kB,GAAI,OAAKA,EAAKkK,SAAS,IAE5Bya,gBAAiB4B,EACbf,EAAa/X,UAAUkX,gBACvB,SACA,SAAC3kB,GAAI,OAAKA,EAAKwJ,WAAW,IAE9Bob,iBAAkB2B,EACdf,EAAa/X,UAAUmX,iBACvB,UACA,SAAC5kB,GAAI,OAAKA,EAAKwJ,WAAW,IAE9Bqb,iBAAkB0B,EACdf,EAAa/X,UAAUoX,iBACvB,SACA,SAAC7kB,GAAI,OAAKA,EAAK4J,YAAY,IAE/Bkb,kBAAmByB,EACff,EAAa/X,UAAUqX,kBACvB,UACA,SAAC9kB,GAAI,OAAKA,EAAK4J,YAAY,IAE/Bmb,qBAAsBwB,EAClBf,EAAa/X,UAAUsX,qBACvB,SACA,SAAC/kB,GAAI,OAAKA,EAAK+J,gBAAgB,IAEnCib,sBAAuBuB,EACnBf,EAAa/X,UAAUuX,sBACvB,UACA,SAAChlB,GAAI,OAAKA,EAAK+J,gBAAgB,IAInCmT,IAAKqJ,EACDf,EAAa9X,QAAQwP,IACrB,OACA,SAACld,GAAI,OAAKA,EAAKsK,WAAW,IAC1B,GAEJjG,KAAMkiB,EACFf,EAAa9X,QAAQrJ,KACrB,QACA,SAACrE,GAAI,OAAKA,EAAKsK,YAAYM,OAAO,IAClC,GAEJjH,QAAS4iB,EACLf,EAAa9X,QAAQ/J,QACrB,WACA,SAAC3D,GAAI,OAAKA,EAAKsK,YAAYM,OAAO,IAClC,GAEJ3H,UAAWsjB,EACPf,EAAa9X,QAAQzK,UACrB,aACA,SAACjD,GAAI,OAAKA,EAAKsK,YAAYM,OAAO,IAClC,GAEJqa,iBAAkBsB,EACdf,EAAa9X,QAAQuX,iBACrB,qBACA,SAACjlB,GAAI,OAAKA,EAAKsK,YAAYM,OAAO,IAClC,GAEJsa,eAAgBqB,EACZf,EAAa9X,QAAQwX,eACrB,mBACA,SAACllB,GAAI,OAAKA,EAAKsK,YAAYM,OAAO,IAClC,GAEJjF,QAAS4gB,EACLf,EAAa9X,QAAQ/H,QACrB,WACA,SAAC3F,GAAI,OAAKA,EAAKsK,YAAYM,OAAO,IAClC,GAEJ/H,UAAW0jB,EACPf,EAAa9X,QAAQ7K,UACrB,aACA,SAAC7C,GAAI,OAAKA,EAAKsK,YAAYM,OAAO,IAClC,GAGJua,WAAYoB,EACRf,EAAa9X,QAAQyX,WACrB,QACA,SAACnlB,GAAI,OAAKA,EAAK0M,kBAAkB,IAErC0Y,YAAamB,EACTf,EAAa9X,QAAQ0X,YACrB,SACA,SAACplB,GAAI,OAAKA,EAAK0M,kBAAkB,IAErC2Y,YAAakB,EACTf,EAAa9X,QAAQ2X,YACrB,QACA,SAACrlB,GAAI,OAAKA,EAAK8M,mBAAmB,IAEtCwY,aAAciB,EACVf,EAAa9X,QAAQ4X,aACrB,SACA,SAACtlB,GAAI,OAAKA,EAAK8M,mBAAmB,IAI9C,IAGSma,GAAgCrI,EAAAA,EAAAA,IACzC,CAACgH,IACD,SAACsB,GACG,OAAO1c,IACH0c,GACA,SAAClW,EAAKqP,GACF,OAAOA,EAAYrP,EAAM,EAAIA,CACjC,GACA,EAER,IAGSkP,GAAoCtB,EAAAA,EAAAA,IAC7C,CAACgH,IACD,SAACuB,GACG,OAAOrH,IAAQqH,GAAwB,SAACC,GAAC,OAAKA,CAAC,GACnD,IAGSjG,GAAkCvC,EAAAA,EAAAA,IAC3C,CAACgH,IACD,SAACuB,GACG,IAAME,EAASC,IACXC,IACI/D,GACA,SAACgE,EAAQ1wB,GAAG,OAAKqwB,EAAuBrwB,EAA0C,KAI1F,OAAOkqB,IAAAA,WAAO,GAADtN,EAAAA,EAAAA,GAAI2T,GACrB,IAGJ,SAAS1B,EACL8B,EACA5B,EACA6B,GAEA,GAAKD,EAAL,CAIA,GAAyB,iBAAdA,EACP,OAAO,SAACznB,GACJ,OAAO+f,IACH2H,EAAQ1nB,IACR,SAAC9F,GAAI,OAAM,KAAMA,aAAI,EAAJA,EAAMylB,cAAc8B,QAAQgG,EAAU9H,eAAc,GAE7E,EAGJ,IAAOgI,EAAqCF,EAArCE,KAAMC,EAA+BH,EAA/BG,UAAWrF,EAAoBkF,EAApBlF,OAAQmD,EAAY+B,EAAZ/B,SAE1BmC,EAAgBnC,GAAY,GAElC,OAAQiC,GACJ,IAAK,QACD,GAAKjC,UAAAA,EAAUvvB,OACX,OAEJ,OAAO,SAAC6J,GACJ,OAAO+f,IAAM8H,GAAe,SAACC,GAAa,IAADC,EACrC,OAA+B,QAA/BA,EAAOlC,EAAYtrB,IAAIutB,UAAQ,IAAAC,OAAA,EAAxBA,EAA0BlO,IAAI7Z,EACzC,GACJ,EAEJ,IAAK,eACD,GAAK0lB,UAAAA,EAAUvvB,OACX,OAEJ,OAAO,SAAC6J,GACJ,OAAOgoB,IAAOH,GAAe,SAACC,GAAa,IAADG,EACtC,OAA+B,QAA/BA,EAAOpC,EAAYtrB,IAAIutB,UAAQ,IAAAG,OAAA,EAAxBA,EAA0BpO,IAAI7Z,EACzC,GACJ,EAEJ,QACI,IAAKuiB,EACD,OAEJ,IAAKqF,EACD,OAAOjC,EAAuBpD,EAAQ,IAAIa,IAAOsE,GAErD,IACI,IAAMQ,EAAK,IAAIC,OAAO5F,GACtB,OAAO,SAACviB,GACJ,OAAO+f,IAAM2H,EAAQ1nB,IAAO,SAACqO,GAAG,OAAK6Z,EAAGE,KAAK/Z,EAAI,GACrD,CACJ,CAAE,MAAO0L,GACL,OAAO,kBAAM,CAAM,CACvB,EAlDR,CAqDJ,CAEA,SAASkM,EACLnvB,EACAuxB,GAEA,GAAKA,GAAiB,QAATA,EAIb,OAAO,SAACroB,GACJ,MAAgB,aAATqoB,GAAuBroB,EAAKlJ,GAAOgnB,QAAQ9d,EAAKlJ,GAC3D,CACJ,CAEA,SAASqvB,EACLrvB,EACAC,GAEA,GAAc,QAAVA,EAIJ,OAAO,SAACiJ,GACJ,MAAiB,aAAVjJ,EAAuB+mB,QAAQ9d,EAAKlJ,KAASkJ,EAAKlJ,EAC7D,CACJ,CAEA,SAASovB,EAA0BmC,GAC/B,GAAKA,GAAiB,QAATA,EAIb,OAAO,SAACroB,GACJ,MAAa,aAATqoB,EAC2B,IAApBroB,EAAKgI,WAGThI,EAAKgI,WAAc,CAC9B,CACJ,CAEA,SAASue,EACL+B,EACAxxB,EACAyD,EACAguB,GAEA,IAAKC,EAAAA,EAAAA,GAAqBF,GAA1B,CAIA,IAAOG,EAAYH,EAAZG,KAAMC,EAAMJ,EAANI,GAEb,OAAO,SAAC1oB,GACJ,IAAMjJ,EAAawD,EAAIyF,GAAMlJ,GAEvB6xB,EAAYJ,EAAUxxB,EAAMZ,OAASY,EAE3C,OACI4xB,IAA6B,OAAfF,EAAK1xB,OAAiB,IAAY0xB,EAAK1xB,QACrD4xB,IAA2B,OAAbD,EAAG3xB,MAAiB6xB,IAAWF,EAAG3xB,MAExD,CAbA,CAcJ,C,mFC/mBaib,GAAgC4M,EAAAA,EAAAA,IACzC,CAACiK,EAAAA,KACD,SAAC7Q,GACG,IAAM8Q,EAAW,IAAIzP,IAAIrB,GACzB,OAAI8Q,EAASjP,IAAIhI,EAAAA,EAAUC,WAChB,CAACD,EAAAA,EAAUC,YAGtB4B,EAAAA,EAAAA,GAAWoV,EAASC,SACxB,G,iDCXSvnB,EAAY,SAACnF,GAAgB,OAAKA,EAAMmkB,QAAUwI,EAAAA,CAAa,C,0HCI/DC,G,UAAgBrK,EAAAA,EAAAA,KACzB,SAACviB,GAAK,OAAKA,EAAM6sB,OAAOpY,UAAU,IAClC,SAAC/U,GAAI,OAAKzB,EAAAA,EAAOmmB,MAAM0I,sBAAsB,CAACC,EAAAA,GAAWC,UAAQ3V,EAAAA,EAAAA,GAAM3X,GAAM,KAGpEujB,GAAuBV,EAAAA,EAAAA,IAAe,CAACqK,IAAgB,SAACK,GAAO,OACxExJ,IAAQwJ,GAAS,SAACpvB,GAAI,MAAc,UAATA,CAAgB,GAAC,IAGnCqvB,EAAoB,SAACltB,GAAK,OAAKA,EAAM6sB,OAAO7oB,OAAQ,C,yKCJjE,SAASmpB,EAAepqB,EAAiBqqB,GAYrC,IAXA,IAIMC,EAAuC7qB,IACzCO,EAAQygB,MALc,MAMtB,SAAC8J,GACG,OAAOC,SAASD,EAAY,GAChC,IAGGD,EAAavzB,OAVQ,GAWxBuzB,EAAa/W,KAViB,GAiBlC,OAJI8W,GACAC,EAAa/W,KAAK8W,GAGfC,CACX,CAUO,SAASG,EACZC,EACAC,EACAC,GAEA,OAAID,IAAaC,EACS,YAAfF,EAGW,YAAfA,EACDxvB,IAAAA,MAAa2vB,eAAeT,EAAeO,GAAWP,EAAeQ,KAAc,EACnF1vB,IAAAA,MAAa2vB,eAAeT,EAAeO,GAAWP,EAAeQ,IAAa,CAC5F,CASO,SAASE,EACZ9qB,EACA+qB,GAqBA,MAjB+B,YAA3BtvB,EAAAA,EAAAA,GAAOsvB,GACK5uB,OAAOC,KAAK2uB,GAAiBC,OAAM,SAACN,GAC5C,GAAqB,YAAfA,GAA2C,YAAfA,EAC9B,MAAM,IAAInqB,MACN,6DACImqB,EADJ,4BAOR,OAAOD,EAAiBC,EAAY1qB,EAAS+qB,EADjCL,GAEhB,IAEYD,EAAiB,UAAWzqB,EAAS+qB,EAIzD,CAeA,IAcME,EAAW,CACbC,aAAc,CACVC,UAAW,gBAEfC,oBAAqB,CACjBC,OAAQ,iBAEZC,mBAAoB,CAChBC,MAAO,UAEXC,mBAAoB,CAChBD,MAAO,iBAEXE,yBAA0B,CACtBN,UAAW,kBAqDNO,GAAsBlM,EAAAA,EAAAA,IAC/B,CAlFuB,SAACviB,GAAgB,OAAKA,EAAM6sB,OAAO9pB,OAAQ,EACvC,SAAC/C,GAAgB,OAAKA,EAAM6sB,OAAO6B,gBAAiB,EACvD,SAAC1uB,GAAgB,OAAKA,EAAM6sB,OAAO8B,aAAc,IAiFzE,SAACL,EAAOJ,EAAWE,GAAM,OAlDzBQ,EAkDkD,CAACN,MAAAA,EAAOJ,UAAAA,EAAWE,OAAAA,GAjDrES,EAiD8Eb,EA/CvE,SAACc,GACJ,SAASC,EAAYC,GAEjB,OADAC,QAAQC,KAAK,iBAAD90B,OAAkB00B,EAAW,MAAA10B,OAAe40B,KACjD,CACX,CAEA,IAAMG,EAAmCN,EAASC,GAElD,OAAKK,EAIDC,IAASD,GACFJ,EAAY,+DAGhBpD,IAAOwD,GAAiB,SAACz0B,EAAO8nB,GACnC,IAAM/nB,EAAM+nB,EACN6M,EAAaT,EAAYn0B,GAG/B,GAtJ0B,kBAsJtB40B,EACA,OAAO,EAGX,IAAK30B,EACD,OAAOq0B,EAAY,uBAAD30B,OAAwBK,EAAG,uCAGjD,IAAM60B,EA9ElB,SAA4BvsB,GACxB,IAAMwsB,EAAgBxsB,aAAO,EAAPA,EAASysB,MAAM,uBAGrC,GAAID,EAIA,MAAO,CAHiBA,EAAc,GACxBxsB,aAAO,EAAPA,EAASsjB,UAAUkJ,EAAcz1B,QAKvD,CAmEiC21B,CAAmBJ,GACxC,OAAKC,EAMDt1B,MAAM01B,QAAQh1B,GACPA,EAAMi1B,MAAK,SAAC9xB,GAAI,OAAKgwB,EAAmByB,EAAa,GAAIzxB,EAAK,IAE9DgwB,EAAmByB,EAAa,GAAI50B,GARpCq0B,EAAY,eAAD30B,OACCK,EAAG,iDAS9B,IAhCWs0B,EAAY,GAAD30B,OAAI00B,EAAW,sCAiCzC,EA9CG,IACHF,EACAC,CAiDuF,IAG9Ee,GAAiCrN,EAAAA,EAAAA,IAC1C,CAACkM,IACD,SAAC9L,GACG,OAAOA,EAAY,sBACvB,IAGSkN,GAAoCtN,EAAAA,EAAAA,IAC7C,CAACkM,IACD,SAAC9L,GACG,OAAOA,EAAY,qBACvB,IAGSF,GAAgCF,EAAAA,EAAAA,IACzC,CAACkM,IACD,SAAC9L,GACG,OAAOA,EAAY,qBACvB,IAGSmN,GAAsCvN,EAAAA,EAAAA,IAC/C,CAACkM,IACD,SAAC9L,GACG,OAAOA,EAAY,2BACvB,G,+CC9MSoN,EAAiB,CAC1Bt4B,KAAM,IACN+S,SAAS,EACThS,MAAO,QACPkS,UAAU,EACVC,SAAS,EACT7E,Q,SAASkqB,GACTnlB,QAAS,CACLC,MAAO,CACHmlB,QAAS,CACL/xB,IAAG,SAACyF,GACA,OAAOA,EAAKssB,OAChB,EACAllB,MAAM,EACNC,MAAO,OACPK,QAAS,WAEb6kB,QAAS,CACLnlB,MAAM,EACN7M,IAAG,SAACyF,GACA,OAAOA,EAAKusB,OAChB,EACAllB,MAAO,QACPK,QAAS,WAEbrL,MAAO,CACH+K,MAAM,EACN7M,IAAG,SAACyF,GACA,OAAOA,EAAK3D,KAChB,EACAgL,MAAO,UAGfiG,KAAM,CACFzR,QAAS,CACLsL,MAAO,CAAC,UAAW,UAAW,WAGtCwgB,KAAM,WAEVrsB,UAAW,CACPxE,IAAK,0BAgBN,SAAS01B,EAAuB94B,GAUR,IAT3B2M,EAAO3M,EAAP2M,QACAhE,EAAK3I,EAAL2I,MACAowB,EAAU/4B,EAAV+4B,WACAC,EAAYh5B,EAAZg5B,aACA/vB,EAAMjJ,EAANiJ,OACAiG,EAAclP,EAAdkP,eACAO,EAAIzP,EAAJyP,KACAwpB,EAAMj5B,EAANi5B,OACA3U,EAAStkB,EAATskB,UAEA,IAAK3X,EACD,MAAO,GAEX,IAAIusB,EAAS,GAwBb,OAvBIH,EACAG,GAAM,eAAAn2B,OAAmBg2B,EAAU,KAC5BC,SAAAA,EAAcv2B,SACrBy2B,GAAM,4BAAAn2B,OAAgCi2B,EAAazQ,KAAK,KAAI,MAE5Dtf,IACAiwB,GAAM,UAAAn2B,OAAckG,EAAM,MAE1BN,IACAuwB,GAAM,SAAAn2B,OAAa4F,EAAK,MAExBuG,IACAgqB,GAAM,kBAAAn2B,OAAsBmM,EAAc,MAE1C+pB,IACAC,GAAM,UAAAn2B,OAAck2B,EAAM,MAE1BxpB,IACAypB,GAAM,QAAAn2B,OAAY0M,EAAI,MAEtB6U,SAAAA,EAAW7hB,SACXy2B,GAAM,YAAAn2B,OAAgBuhB,aAAS,EAATA,EAAWiE,KAAK,KAAI,MAExC,IAANxlB,OAAW4J,EAAO,sBAAA5J,OAAqBm2B,EAC3C,C,8EC7FMC,EAAiB,WAKjB,IAJF7sB,EAAsB9J,UAAAC,OAAA,QAAAkD,IAAAnD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAACxC,EAAAwC,UAAAC,OAAA,EAAAD,UAAA,QAAAmD,EAC1BovB,EAAI/0B,EAAJ+0B,KAAMC,EAAEh1B,EAAFg1B,GACP5xB,EAAgBZ,UAAAC,OAAA,EAAAD,UAAA,QAAAmD,EAChB0yB,EAAO71B,UAAAC,OAAA,QAAAkD,IAAAnD,UAAA,IAAAA,UAAA,GAEP,IAAK8J,EAAKlJ,GACN,OAAsB,OAAf2xB,EAAK1xB,OAA+B,OAAb2xB,EAAG3xB,MAGrC,IAAM4xB,EAAYoD,EAAW/rB,EAAKlJ,GAAqBX,OAAS6J,EAAKlJ,GAErE,OACI6xB,IAA6B,OAAfF,EAAK1xB,OAAiB,IAAY0xB,EAAK1xB,QACrD4xB,IAA2B,OAAbD,EAAG3xB,MAAiB6xB,IAAWF,EAAG3xB,MAExD,EAEO,SAASwoB,EAAwBiG,EAA+B1U,GACnE,IAAOvD,EAAWiY,EAAXjY,QACD4S,EAAa,GAUnB,OATAtN,IAAS/B,GAAY,SAACiS,GAClB,IAAM+J,EACFvf,EAASyV,EAAAA,GAAqBD,GAC9ByF,EAAqBsE,IACrB3M,EAAWxN,MAAK,SAAC3S,GAA4B,OACzC6sB,EAAe7sB,EAAKkN,SAAU4f,EAAQ/J,EAAO,GAGzD,IACO5C,CACX,CAEO,SAASqI,EAAoB9rB,GAAyB,IAAvB+rB,EAAI/rB,EAAJ+rB,KAAMC,EAAEhsB,EAAFgsB,GACxC,OAAsB,OAAfD,EAAK1xB,OAA+B,OAAb2xB,EAAG3xB,KACrC,C","sources":["webpack://@ytsaurus/ui/./src/ui/components/AttributesButton/AttributesButton.tsx","webpack://@ytsaurus/ui/./src/ui/components/ChartLink/ChartLink.tsx","webpack://@ytsaurus/ui/./src/ui/components/CollapsibleSection/CollapsibleSection.tsx","webpack://@ytsaurus/ui/./src/ui/components/SortIcon/SortIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/templates/utils.js","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/NodeColumns.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/MemoryProgress/MemoryProgress.js","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/Version.js","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/NodeActions/NodeActions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/Nodes/NodesColumnHeader.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/tables.tsx","webpack://@ytsaurus/ui/./src/ui/pages/system/Nodes/NodeTypeSelector.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/system/nodes-ts.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/components/node-maintenance-modal.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/components/nodes/nodes.ts","webpack://@ytsaurus/ui/./src/ui/store/reducers/components/proxies/proxies/proxy.js","webpack://@ytsaurus/ui/./src/ui/store/actions/components/proxies/proxies.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/node-maintenance-modal.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/nodes/nodes/data.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/nodes/nodes/predicates.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/system/nodes.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/tables.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/thor/index.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/thor/support.ts","webpack://@ytsaurus/ui/./src/ui/utils/components/nodes/node.ts","webpack://@ytsaurus/ui/./src/ui/utils/components/nodes/setup.ts"],"sourcesContent":["import React from 'react';\n\nimport Button, {ButtonProps} from '../../components/Button/Button';\nimport Icon from '../../components/Icon/Icon';\n\nexport interface AttributesButtonProps extends ButtonProps {}\n\nexport default function AttributesButton({\n view = 'flat-secondary',\n size = 'm',\n ...rest\n}: AttributesButtonProps) {\n return (\n <Button view={view} size={size} {...rest}>\n <Icon awesome=\"at\" />\n </Button>\n );\n}\n","import React from 'react';\nimport Link, {LinkProps} from '../../components/Link/Link';\n\nimport Icon, {IconProps} from '../Icon/Icon';\n\ninterface Props {\n className?: string;\n theme?: LinkProps['theme'];\n face?: IconProps['face'];\n url?: string;\n title?: string;\n children?: React.ReactNode;\n hideIcon?: boolean;\n wrapContent?: (node: React.ReactNode) => React.ReactNode;\n}\n\nfunction ChartLink(props: Props) {\n const {className, url, title, theme, children, hideIcon, face, wrapContent} = props;\n\n if (!url) {\n return null;\n }\n\n const icon = hideIcon ? null : <Icon awesome=\"chart-bar\" face={face} />;\n const content = children ? (\n <React.Fragment>\n {icon}\n {children}\n </React.Fragment>\n ) : (\n icon\n );\n\n return (\n <Link className={className} target=\"_blank\" theme={theme} url={url} title={title ?? 'View'}>\n {wrapContent ? wrapContent(content) : content}\n </Link>\n );\n}\n\nexport default React.memo(ChartLink);\n","import React, {Component} from 'react';\nimport block from 'bem-cn-lite';\n\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\n\nimport './CollapsibleSection.scss';\nimport Icon from '../../components/Icon/Icon';\n\nconst b = block('collapsible-section');\nconst headingCN = block('elements-heading');\n\ntype PropsStateLess = CollapsibleSectionProps & {\n onToggle: Required<CollapsibleSectionProps>['onToggle'];\n};\n\nexport class CollapsibleSectionStateLess extends Component<PropsStateLess> {\n static defaultProps = {\n size: 'm',\n collapsed: false,\n marginDirection: 'top',\n };\n\n toggle = () => {\n const {onToggle} = this.props;\n\n onToggle(!this.props.collapsed);\n };\n\n render() {\n const {\n name,\n children,\n size,\n overview,\n className,\n collapsed,\n marginDirection,\n togglerRightPadding,\n } = this.props;\n\n return (\n <ErrorBoundary>\n <div className={b({margin: marginDirection}, className)}>\n <div className={headingCN({size, overview: 'yes'})}>\n <span\n className={headingCN(\n 'heading',\n {\n clickable: 'yes',\n },\n b('title'),\n )}\n onClick={this.toggle}\n >\n {name}\n <a>\n <Icon\n className={b('toggler', {'right-padding': togglerRightPadding})}\n awesome={collapsed ? 'angle-down' : 'angle-up'}\n />\n </a>\n </span>\n {overview}\n </div>\n\n {!collapsed && <ErrorBoundary>{children}</ErrorBoundary>}\n </div>\n </ErrorBoundary>\n );\n }\n}\n\nexport interface CollapsibleSectionProps {\n className?: string;\n name: React.ReactNode;\n collapsed?: boolean;\n onToggle?: (value: boolean) => void;\n\n size?: 'unset' | 'xs' | 's' | 'ss' | 'ns' | 'n' | 'm' | 'l';\n children?: React.ReactNode;\n overview?: React.ReactNode;\n\n marginDirection?: 'top' | 'bottom';\n\n togglerRightPadding?: 'small';\n}\n\nexport default function CollapsibleSection(props: CollapsibleSectionProps) {\n const {onToggle} = props;\n const [collapsed, setCollapsed] = React.useState(props.collapsed);\n\n const onChange = React.useCallback(\n (value: boolean) => {\n setCollapsed(value);\n if (onToggle) {\n onToggle(value);\n }\n },\n [setCollapsed, onToggle],\n );\n\n return <CollapsibleSectionStateLess {...props} onToggle={onChange} collapsed={collapsed} />;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport format from '../../common/hammer/format';\nimport Icon from '../../components/Icon/Icon';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {OrderType, nextSortOrderValue} from '../../utils/sort-helpers';\n\nimport './SortIcon.scss';\n\nconst block = cn('sort-icon');\n\nconst ICON_BY_TYPE = {\n ['']: 'sort',\n asc: 'sort-up',\n desc: 'sort-down',\n 'asc-undefined': 'arrow-to-bottom',\n 'desc-undefined': 'arrow-from-bottom',\n 'undefined-asc': 'arrow-from-top',\n 'undefined-desc': 'arrow-to-top',\n} as const;\n\ninterface Props {\n className?: string;\n label?: string;\n onChange?: (nextOrder: OrderType) => void;\n order?: OrderType;\n hidden?: boolean;\n allowUnordered?: boolean;\n withUndefined?: boolean;\n}\n\nexport default class SortIcon extends React.Component<Props> {\n onClick = () => {\n const {order, onChange, allowUnordered, withUndefined} = this.props;\n if (!onChange) {\n return;\n }\n\n const nextOrder = nextSortOrderValue(order, allowUnordered, withUndefined);\n onChange(nextOrder);\n };\n\n render() {\n const {className, label, order, hidden} = this.props;\n const icon = ICON_BY_TYPE[order || ''];\n\n return (\n <span className={block({hidden}, className)} onClick={this.onClick}>\n {label && <span className={block('label')}>{label}</span>}\n <Tooltip\n className={block('icon')}\n content={order ? format.ReadableField(order) : 'Unordered'}\n >\n <Icon awesome={icon} face=\"solid\" />\n </Tooltip>\n </span>\n );\n }\n}\n","import React from 'react';\nimport unipika from '../../common/thor/unipika';\nimport block from 'bem-cn-lite';\n\nimport Link from '../../components/Link/Link';\n\nimport hammer from '../../common/hammer';\nimport {showErrorPopup} from '../../utils/utils';\n\nimport './utils.scss';\n\nfunction wrapRenderMethods(templates) {\n return Object.keys(templates).reduce((newTemplates, key) => {\n newTemplates[key] = templates[key];\n\n return newTemplates;\n }, {});\n}\n\n/**\n * Template must be a scoped function, because they are bound to elements-table component instance\n * @param {ViewModel} item\n * @param {String} columnName\n */\nfunction defaultTemplate(item, columnName) {\n return String(hammer.format['ValueOrDefault'](item[columnName]));\n}\n\nfunction prepareTextProps(text, asHTML) {\n const props = {};\n\n if (asHTML) {\n // Need to render html strings\n props.dangerouslySetInnerHTML = {__html: text};\n } else {\n props.children = unipika.decode(String(text));\n }\n\n return props;\n}\n\nexport function renderText(text, settings = {}) {\n let className = block('elements-text');\n\n if (settings.mix) {\n className = className(\n false,\n block(settings.mix.block)(settings.mix.elem, {\n ...settings.mix.mods,\n }),\n );\n } else {\n className = className();\n }\n\n const textProps = prepareTextProps(text, settings.asHTML);\n\n const title = settings.title || text;\n\n return <span {...textProps} title={title} className={className} />;\n}\n\nexport function printColumnAsBytes(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Bytes'](column.get(item));\n}\n\nexport function printColumnAsNumber(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Number'](column.get(item));\n}\n\nexport function printColumnAsTimeDurationWithMs(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['TimeDuration'](column.get(item), {\n format: 'milliseconds',\n });\n}\n\nexport function printColumnAsReadableField(item, columnName) {\n const column = this.getColumn(columnName);\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['ReadableField'](column.get(item))}\n </span>\n );\n}\n\nexport function printColumnAsTime(item, columnName) {\n const value = this?.getColumn ? this.getColumn(columnName).get(item) : item[columnName];\n return <ColumnAsTime value={value} />;\n}\n\nexport function ColumnAsTime({value}) {\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['DateTime'](value, {format: 'full'})}\n </span>\n );\n}\n\nexport function printColumnAsError(error) {\n const showError = () => {\n showErrorPopup(error, {hideOopsMsg: true});\n };\n return typeof error === 'object' ? (\n <Link theme=\"ghost\" onClick={showError}>\n View\n </Link>\n ) : (\n hammer.format.NO_VALUE\n );\n}\n\n// Using prepared table data\nexport function asBytes(item, columnName) {\n return hammer.format['Bytes'](item[columnName]);\n}\n\nexport function asNumber(item, columnName) {\n return hammer.format['Number'](item[columnName]);\n}\n\nexport default {\n __default__: defaultTemplate,\n _templates: {},\n add: function (templateId, templates) {\n this._templates[templateId] = wrapRenderMethods(templates);\n },\n get: function (templateId) {\n return this._templates[templateId] || {};\n },\n};\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport format from '../../../common/hammer/format';\nimport Label, {LabelTheme} from '../../../components/Label/Label';\nimport StatusBlock from '../../../components/StatusBlock/StatusBlock';\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\nimport {Tooltip} from '../../../components/Tooltip/Tooltip';\nimport {ClickableText} from '../../../components/ClickableText/ClickableText';\n\nimport './NodeColumns.scss';\n\nconst block = cn('yt-node-columns');\n\nconst ROLE_THEME = {\n default: 'default',\n control: 'default',\n data: 'default',\n} as const;\n\nconst STATE_THEME: Record<string, LabelTheme> = {\n online: 'success',\n offline: 'danger',\n} as const;\n\nexport function NodeColumnState({state}: {state: 'online' | 'offline' | string}) {\n const text = format.FirstUppercase(state);\n const theme = STATE_THEME[state] ?? 'default';\n\n return <Label theme={theme} className={block('state')} type=\"text\" text={text} />;\n}\n\nexport function NodeColumnBanned({banned}: {banned: boolean}) {\n return banned ? <StatusBlock text=\"B\" theme=\"banned\" /> : format.NO_VALUE;\n}\n\nexport function NodeColumnRole({role}: {role: 'default' | 'control' | 'data'}) {\n const theme = ROLE_THEME[role] || 'info';\n const text = format.Address(role);\n\n return <Label theme={theme} type=\"text\" text={text} />;\n}\n\nexport function NodeColumnText({text}: {text: string}) {\n return (\n <div className={block('text', 'elements-column_with-hover-button')}>\n <div className={block('text-content')} title={text}>\n {text}\n </div>\n <ClipboardButton text={text} view=\"flat-secondary\" size=\"s\" />\n </div>\n );\n}\n\nexport function ClickableId({\n text,\n onClick,\n allowTooltip,\n format = (v) => v,\n}: {\n text: string;\n onClick?: () => void;\n allowTooltip?: boolean;\n format?: (v: string) => string;\n}) {\n return (\n <div className=\"elements-column_type_id elements-column_with-hover-button\">\n <ClickableText\n color=\"primary\"\n onClick={() => onClick?.()}\n className={'elements-monospace elements-ellipsis'}\n >\n <Tooltip\n className={block('clickable-column-tooltip')}\n content={allowTooltip ? format(text) : null}\n >\n {format(text)}\n </Tooltip>\n </ClickableText>\n \n <ClipboardButton text={text} view=\"flat-secondary\" size=\"s\" />\n </div>\n );\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {Progress} from '@gravity-ui/uikit';\n\nimport withVisible from '../../../../../hocs/withVisible';\nimport hammer from '../../../../../common/hammer';\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\n\nimport './MemoryProgress.scss';\n\nconst block = cn('nodes-memory');\n\nclass MemoryProgress extends Component {\n static propTypes = {\n // from parent\n memoryText: PropTypes.string.isRequired,\n memoryData: PropTypes.arrayOf(\n PropTypes.shape({\n color: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n value: PropTypes.number.isRequired,\n rawData: PropTypes.shape({\n limit: PropTypes.number,\n used: PropTypes.number,\n }),\n }),\n ).isRequired,\n };\n\n progress = React.createRef();\n\n renderProgress() {\n const {memoryText, memoryData} = this.props;\n\n return <Progress stack={memoryData} text={memoryText} />;\n }\n\n renderItem(category) {\n const rawDataUsed = category.rawData?.used;\n const rawDataLimit = category.rawData?.limit;\n const rawDataLimitIsNumber = typeof rawDataLimit === 'number';\n\n return (\n <li key={category.name} className={block('category')}>\n <div className={block('category-legend')}>\n <div\n className={block('category-legend-color')}\n style={{backgroundColor: category.color}}\n />\n <strong className={block('category-legend-title')}>\n {hammer.format['ReadableField'](category.name)}\n </strong>\n </div>\n <div className={block('category-data')}>\n <span>{hammer.format['Bytes'](rawDataUsed)}</span>\n {rawDataLimitIsNumber && ' / '}\n {rawDataLimitIsNumber && <span>{hammer.format['Bytes'](rawDataLimit)}</span>}\n </div>\n </li>\n );\n }\n\n renderPopupContent() {\n const {memoryData} = this.props;\n\n return (\n memoryData.length > 0 && (\n <div className={block('popup')}>\n <ul className={block('content')}>\n {map_(memoryData, (category) => this.renderItem(category))}\n </ul>\n </div>\n )\n );\n }\n\n render() {\n return (\n <Tooltip className={block()} content={this.renderPopupContent()} disableInline>\n <div>{this.renderProgress()}</div>\n </Tooltip>\n );\n }\n}\n\nexport default withVisible(MemoryProgress);\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport SimpleModal from '../../../../components/Modal/SimpleModal';\nimport Error from '../../../../components/Error/Error';\nimport Icon from '../../../../components/Icon/Icon';\nimport Link from '../../../../components/Link/Link';\n\nimport withVisible from '../../../../hocs/withVisible';\n\nconst block = cn('elements-column');\n\nclass Version extends Component {\n static propTypes = {\n // from parent component\n version: PropTypes.string.isRequired,\n error: PropTypes.object,\n\n // from hoc\n visible: PropTypes.bool.isRequired,\n handleClose: PropTypes.func.isRequired,\n handleShow: PropTypes.func.isRequired,\n };\n\n renderVersion() {\n const {version} = this.props;\n\n return (\n <div className={block({type: 'id', 'with-hover-button': true})} title={version}>\n <span className=\"elements-monospace elements-ellipsis\">{version}</span>\n \n <ClipboardButton\n text={version}\n view=\"flat-secondary\"\n size=\"s\"\n title={'Copy ' + version}\n />\n </div>\n );\n }\n\n renderErrorVersion() {\n const {handleShow, error, handleClose, visible} = this.props;\n\n return (\n <div className=\"elements-monospace elements-ellipsis\">\n <Icon awesome=\"exclamation-triangle\" /> Error  \n <Link theme=\"ghost\" onClick={handleShow}>\n View\n </Link>\n <SimpleModal visible={visible} onCancel={handleClose} onOutsideClick={handleClose}>\n <Error error={error} />\n </SimpleModal>\n </div>\n );\n }\n\n render() {\n const {error} = this.props;\n\n return error ? this.renderErrorVersion() : this.renderVersion();\n }\n}\n\nexport default withVisible(Version);\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';\nimport ChartLink from '../../../../../components/ChartLink/ChartLink';\n\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {showNodeMaintenance} from '../../../../../store/actions/components/node-maintenance-modal';\n\nimport UIFactory from '../../../../../UIFactory';\nimport {RootState} from '../../../../../store/reducers';\n\nexport type NodeActionsProps = {node: {host: string}} & ConnectedProps<typeof connector>;\n\nclass NodeActions extends React.Component<NodeActionsProps> {\n handleEditClick = () => {\n const {node, showNodeMaintenance} = this.props;\n\n showNodeMaintenance({\n address: node.host,\n component: 'cluster_node',\n });\n };\n\n render() {\n const {node, cluster} = this.props;\n const {url, title} = UIFactory.getComponentsNodeDashboardUrl({cluster, host: node.host});\n\n return (\n <React.Fragment>\n <ClickableAttributesButton\n title={node.host}\n path={`//sys/cluster_nodes/${node.host}`}\n withTooltip\n />\n\n <ChartLink\n url={url}\n wrapContent={(node) => (\n <Button\n tooltipProps={{\n placement: 'bottom',\n content: title,\n }}\n target=\"_blank\"\n view=\"flat-secondary\"\n size=\"m\"\n withTooltip\n >\n {node}\n </Button>\n )}\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 mapStateToProps = (state: RootState) => {\n return {\n cluster: getCluster(state),\n };\n};\n\nconst mapDispatchToProps = {\n showNodeMaintenance,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(NodeActions);\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {COMPONENTS_NODES_TABLE_ID} from '../../../../../constants/components/nodes/nodes';\nimport ColumnHeader, {\n ColumnHeaderProps,\n HasSortColumn,\n} from '../../../../../components/ColumnHeader/ColumnHeader';\nimport {toggleColumnSortOrder} from '../../../../../store/actions/tables';\nimport {getTables} from '../../../../../store/selectors/tables';\nimport {NodesTableColumnNames} from '../../../../../pages/components/tabs/nodes/tables';\nimport {oldSortStateToOrderType} from '../../../../../utils/sort-helpers';\n\nexport function NodesColumnHeader(\n props: HasSortColumn<NodesTableColumnNames> & Pick<ColumnHeaderProps, 'align'>,\n) {\n const dispatch = useDispatch();\n const sortState = useSelector(getTables)[COMPONENTS_NODES_TABLE_ID];\n const order = oldSortStateToOrderType(sortState);\n\n const column = props.options?.find(({column}) => sortState.field === column);\n\n return (\n <ColumnHeader\n {...props}\n column={props.options ? column?.column ?? props.column : props.column}\n order={column ? order : undefined}\n onSort={(columnName) => {\n const colInfo = props.options?.find(({column}) => columnName === column);\n dispatch(\n toggleColumnSortOrder({\n columnName,\n withUndefined: colInfo?.withUndefined,\n allowUnordered: colInfo?.allowUnordered,\n tableId: COMPONENTS_NODES_TABLE_ID,\n }),\n );\n }}\n />\n );\n}\n","import React from 'react';\n\nimport keys_ from 'lodash/keys';\nimport map_ from 'lodash/map';\nimport merge_ from 'lodash/merge';\nimport reduce_ from 'lodash/reduce';\nimport sortBy_ from 'lodash/sortBy';\n\nimport cn from 'bem-cn-lite';\n\nimport {Progress} from '@gravity-ui/uikit';\n\nimport {COMPONENTS_NODES_TABLE_ID} from '../../../../constants/components/nodes/nodes';\nimport {DESC_ASC_UNORDERED, compareArraysBySizeThenByItems} from '../../../../utils/sort-helpers';\n\nimport Version from '../../../../pages/components/tabs/nodes/Version';\nimport StatusBlock, {StatusBlockTheme} from '../../../../components/StatusBlock/StatusBlock';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport NodeActions from '../../../../pages/components/tabs/nodes/NodeActions/NodeActions';\nimport MemoryProgress from '../../../../pages/components/tabs/nodes/MemoryProgress/MemoryProgress';\nimport {Host} from '../../../../containers/Host/Host';\n\nimport hammer from '../../../../common/hammer';\nimport {TABLET_SLOTS, renderLabel} from '../../../../components/templates/components/nodes/nodes';\nimport type {Node, TabletSlotState} from '../../../../store/reducers/components/nodes/nodes/node';\nimport type {FIX_MY_TYPE} from '../../../../types';\nimport {NodeColumnBanned, NodeColumnState} from '../../../../pages/components/tabs/NodeColumns';\nimport {NodesColumnHeader} from '../../../../pages/components/tabs/nodes/Nodes/NodesColumnHeader';\nimport {ColumnInfo} from '../../../../components/ElementsTable/ElementsTableHeader';\nimport {progressText} from '../../../../utils/progress';\n\nimport './tables.scss';\n\nconst block = cn('components-nodes-templates');\n\nexport const PropertiesByColumn = {\n __default__: ['IOWeight'],\n actions: ['host'],\n alert_count: ['alertCount'],\n banned: ['banned'],\n chunks: ['chunks'],\n cpu: ['cpuProgress', 'cpuText'],\n cpu_limit: ['cpu'],\n cpu_usage: ['cpu'],\n data_center: ['dataCenter'],\n decommissioned: ['decommissioned'],\n elections: ['tabletSlots'],\n elections_chaos: ['chaosSlots'],\n follower_recovery: ['tabletSlots'],\n follower_recovery_chaos: ['chaosSlots'],\n following: ['tabletSlots'],\n following_chaos: ['chaosSlots'],\n full: ['full'],\n gpu: ['gpu'],\n gpu_usage: ['gpu'],\n gpu_limit: ['gpu'],\n host: ['cluster', 'host'],\n io_weight: ['IOWeight'],\n last_seen: ['lastSeenTime'],\n leader_recovery: ['tabletSlots'],\n leader_recovery_chaos: ['chaosSlots'],\n leading: ['tabletSlots'],\n leading_chaos: ['chaosSlots'],\n locations: ['locations', 'enabledLocations'],\n memory_total: ['memoryProgress', 'memoryTotalText'],\n memory: ['memoryData', 'memoryProgress', 'memoryText'],\n memory_limit: ['memoryTotal'],\n memory_usage: ['memoryTotal'],\n network: ['networkProgress', 'networkText'],\n network_usage: ['network'],\n network_limit: ['network'],\n none: ['tabletSlots'],\n none_chaos: ['chaosSlots'],\n physical_host: ['physicalHost'],\n flavors: ['flavors'],\n rack: ['rack'],\n removal_slots: ['removalSlots', 'removalSlotsProgress'],\n removal_slots_usage: ['removalSlots'],\n removal_slots_limit: ['removalSlots'],\n repair_slots: ['repairSlots', 'repairSlotsProgress'],\n repair_slots_usage: ['repairSlots'],\n repair_slots_limit: ['repairSlots'],\n replication_slots: ['replicationSlots', 'replicationSlotsProgress'],\n replication_slots_usage: ['replicationSlots'],\n replication_slots_limit: ['replicationSlots'],\n scheduler_jobs: ['disableJobs'],\n seal_slots: ['sealSlots', 'sealSlotsProgress'],\n seal_slots_usage: ['sealSlots'],\n seal_slots_limit: ['sealSlots'],\n sessions: ['sessions'],\n space_limit: ['spaceTotal'],\n space_usage: ['spaceUsed'],\n space: ['spaceProgress', 'spaceText'],\n state: ['state'],\n stopped: ['tabletSlots'],\n stopped_chaos: ['chaosSlots'],\n system_tags: ['systemTags'],\n tablet_cells: ['disableTabletCells'],\n tablet_memory_dynamic: ['tabletDynamicMemory'],\n tablet_memory_dynamic_usage: ['tabletDynamicMemory'],\n tablet_memory_dynamic_limit: ['tabletDynamicMemory'],\n tablet_memory_static: ['tabletStaticMemory'],\n tablet_memory_static_usage: ['tabletStaticMemory'],\n tablet_memory_static_limit: ['tabletStaticMemory'],\n tablet_memory: ['tabletStaticMemory', 'tabletDynamicMemory'],\n tablet_slots: ['tabletSlots'],\n user_slots: ['userSlots', 'userSlotsProgress'],\n user_slots_usage: ['userSlots'],\n user_slots_limit: ['userSlots'],\n user_tags: ['userTags'],\n version: ['version'],\n write_sessions: ['disableWriteSession'],\n} as const;\n\nexport type NodesTableColumnNames = keyof typeof PropertiesByColumn;\n\nexport type NodeWithProps<T extends keyof typeof PropertiesByColumn> = Pick<\n Node & {cluster: string},\n (typeof PropertiesByColumn)[T][number]\n>;\n\ntype ItemDef<P extends keyof typeof PropertiesByColumn> = {\n align?: 'left' | 'center' | 'right';\n get?: (node: NodeWithProps<P>) => void;\n sort?: ((node: NodeWithProps<P>) => void) | boolean;\n};\n\ntype Items = {\n [P in keyof typeof PropertiesByColumn]?: ItemDef<P> & {\n group?: boolean;\n items?: Record<string, ItemDef<P>>;\n set?: string[];\n };\n};\n\nconst ioWeight: NonNullable<Items['io_weight']> = {\n group: true,\n items: {\n default: {\n get(node) {\n return node.IOWeight.default;\n },\n sort: true,\n align: 'center',\n },\n cache: {\n get(node) {\n return node.IOWeight.cache;\n },\n sort: true,\n align: 'center',\n },\n ssd_blobs: {\n get(node) {\n return node.IOWeight.ssd_blobs;\n },\n sort: true,\n align: 'center',\n },\n ssd_journals: {\n get(node) {\n return node.IOWeight.ssd_journals;\n },\n sort: true,\n align: 'center',\n },\n },\n set: ['default', 'ssd_blobs', 'ssd_journals'],\n};\n\nconst nodesTableProps = {\n size: 's',\n virtual: true,\n virtualType: 'simple',\n theme: 'light',\n cssHover: true,\n striped: false,\n tableId: COMPONENTS_NODES_TABLE_ID,\n computeKey(node: NodeWithProps<'host'>) {\n return node.host;\n },\n columns: {\n items: {\n host: {\n get(node) {\n return node.host;\n },\n sort: true,\n align: 'left',\n },\n physical_host: {\n get(node) {\n return node.physicalHost;\n },\n sort: true,\n align: 'left',\n },\n flavors: {\n get(node) {\n return node.flavors;\n },\n sort: true,\n compareFn: compareArraysBySizeThenByItems,\n align: 'left',\n },\n state: {\n get(node) {\n return node.state;\n },\n sort: true,\n align: 'center',\n },\n data_center: {\n get(node) {\n return node.dataCenter;\n },\n sort: true,\n caption: 'DC',\n align: 'left',\n tooltipProps: {placement: 'bottom', content: 'Data Center'},\n },\n rack: {\n get(node) {\n return hammer.format['RackToVector'](node.rack);\n },\n sort: true,\n align: 'left',\n },\n user_tags: {\n get(node) {\n return node.userTags || -1;\n },\n sort(node) {\n return !node.userTags?.length ? undefined : node.userTags;\n },\n compareFn: compareArraysBySizeThenByItems,\n align: 'left',\n },\n system_tags: {\n get(node) {\n return node.systemTags || -1;\n },\n sort(node) {\n return node.systemTags || [];\n },\n compareFn: compareArraysBySizeThenByItems,\n align: 'left',\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 allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n decommissioned: {\n get(item) {\n return item.decommissioned;\n },\n align: 'center',\n sort: true,\n caption: 'D',\n tooltipProps: {\n placement: 'bottom',\n content: 'Decommissioned',\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n full: {\n get(item) {\n return item.full;\n },\n align: 'center',\n sort: true,\n caption: 'F',\n tooltipProps: {placement: 'bottom', content: 'Full'},\n },\n alert_count: {\n get(item) {\n return item.alertCount;\n },\n sort(item) {\n return item.alertCount;\n },\n align: 'center',\n caption: 'A',\n tooltipProps: {placement: 'bottom', content: 'Alerts'},\n },\n scheduler_jobs: {\n get(node) {\n return node.disableJobs;\n },\n sort: true,\n align: 'left',\n },\n write_sessions: {\n get(node) {\n return node.disableWriteSession;\n },\n sort: true,\n align: 'left',\n },\n tablet_cells: {\n get(node) {\n return node.disableTabletCells;\n },\n sort: true,\n align: 'left',\n },\n version: {\n get(node) {\n return node.version;\n },\n sort: true,\n align: 'left',\n },\n last_seen: {\n get(node) {\n return node.lastSeenTime;\n },\n sort: true,\n align: 'left',\n },\n space: {\n get(node) {\n return node.spaceProgress;\n },\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"space\"\n title=\"Space\"\n options={[\n {\n column: 'space',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'space_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'space_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\n ]}\n />\n );\n },\n sortWithUndefined: true,\n align: 'center',\n },\n space_limit: {\n get(node) {\n return node.spaceTotal;\n },\n sort: true,\n sortWithUndefined: true,\n align: 'right',\n },\n space_usage: {\n get(node) {\n return node.spaceUsed;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n locations: {\n get(node) {\n return [\n node.locations && node.locations.length,\n node.locations && node.enabledLocations.length,\n ];\n },\n sort: true,\n align: 'center',\n },\n chunks: {\n get(node) {\n return node.chunks;\n },\n sort: true,\n sortWithUndefined: true,\n align: 'left',\n },\n sessions: {\n get(node) {\n return node.sessions;\n },\n sort: true,\n sortWithUndefined: true,\n align: 'left',\n },\n cpu: {\n get(node) {\n return node.cpuProgress;\n },\n sortWithUndefined: true,\n align: 'center',\n renderHeader: ({align}: ColumnInfo) => {\n return (\n <NodesColumnHeader\n align={align}\n column=\"cpu\"\n options={[\n {\n column: 'cpu',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'cpu_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'cpu_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\n ]}\n title=\"CPU\"\n />\n );\n },\n },\n cpu_limit: {\n get(node) {\n return node.cpu?.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n cpu_usage: {\n get(node) {\n return node.cpu?.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n gpu: {\n get(node) {\n return node.gpu?.progress;\n },\n sortWithUndefined: true,\n align: 'center',\n renderHeader: ({align}: ColumnInfo) => {\n return (\n <NodesColumnHeader\n align={align}\n column=\"gpu\"\n options={[\n {\n column: 'gpu',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'gpu_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'gpu_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\n ]}\n title=\"GPU\"\n />\n );\n },\n },\n gpu_limit: {\n get(node) {\n return node.gpu?.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n gpu_usage: {\n get(node) {\n return node.gpu?.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n memory: {\n get(node) {\n return node.memoryProgress;\n },\n sortWithUndefined: true,\n renderHeader: ({align}: ColumnInfo) => {\n return (\n <NodesColumnHeader\n align={align}\n column=\"memory\"\n title=\"Memory\"\n options={[\n {\n column: 'memory',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'memory_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'memory_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n memory_usage: {\n get(node) {\n return node.memoryTotal.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n memory_limit: {\n get(node) {\n return node.memoryTotal.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n memory_total: {\n get(node) {\n return node.memoryProgress;\n },\n sort: true,\n align: 'center',\n },\n network: {\n get(node) {\n return node.networkProgress;\n },\n sortWithUndefined: true,\n renderHeader: ({align}: ColumnInfo) => {\n return (\n <NodesColumnHeader\n align={align}\n column=\"network\"\n title=\"Network\"\n options={[\n {\n column: 'network',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'network_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'network_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n network_usage: {\n get(node) {\n return node.network.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n network_limit: {\n get(node) {\n return node.network.limit;\n },\n sortWithUndefined: true,\n hiddne: true,\n },\n repair_slots: {\n get(node) {\n return node.repairSlotsProgress;\n },\n sortWithUndefined: true,\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"repair_slots\"\n title=\"Repair slots\"\n options={[\n {\n column: 'repair_slots',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'repair_slots_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'repair_slots_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n repair_slots_usage: {\n get(node) {\n return node.repairSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n repair_slots_limit: {\n get(node) {\n return node.repairSlots.limits;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n removal_slots: {\n get(node) {\n return node.removalSlotsProgress;\n },\n sortWithUndefined: true,\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"removal_slots\"\n title=\"Removal slots\"\n options={[\n {\n column: 'removal_slots',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'removal_slots_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'removal_slots_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n removal_slots_usage: {\n get(node) {\n return node.removalSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n removal_slots_limit: {\n get(node) {\n return node.removalSlots.limits;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n replication_slots: {\n get(node) {\n return node.replicationSlotsProgress;\n },\n sortWithUndefined: true,\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"replication_slots\"\n title=\"Replication slots\"\n options={[\n {\n column: 'replication_slots',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'replication_slots_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'replication_slots_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n replication_slots_usage: {\n get(node) {\n return node.replicationSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n replication_slots_limit: {\n get(node) {\n return node.replicationSlots.limits;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n seal_slots: {\n get(node) {\n return node.sealSlotsProgress;\n },\n sortWithUndefined: true,\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"seal_slots\"\n title=\"Seal slots\"\n options={[\n {\n column: 'seal_slots',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'seal_slots_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'seal_slots_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n seal_slots_usage: {\n get(node) {\n return node.sealSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n seal_slots_limit: {\n get(node) {\n return node.sealSlots.limits;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n user_slots: {\n get(node) {\n return node.userSlotsProgress;\n },\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"user_slots\"\n title=\"User slots\"\n options={[\n {\n column: 'user_slots',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'user_slots_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'user_slots_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n user_slots_usage: {\n get(node) {\n return node.userSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n user_slots_limit: {\n get(node) {\n return node.userSlots.limits;\n },\n align: 'center',\n sortWithUndefined: true,\n hidden: true,\n },\n tablet_slots: {\n get(node) {\n if (node.tabletSlots && node.tabletSlots.raw && node.tabletSlots.raw.length) {\n return reduce_(\n node.tabletSlots.raw,\n (sum, slot) => (slot.state === 'none' ? sum : sum + 1),\n 0,\n );\n }\n\n return -1;\n },\n sort: true,\n align: 'left',\n },\n none: {\n get(node) {\n return node.tabletSlots?.byState.none;\n },\n sort(node) {\n return node.tabletSlots?.byState.none?.length;\n },\n // sort: true,\n align: 'center',\n ...makeCaptionProps('TS None', 'Tablet Slots None'),\n },\n none_chaos: {\n get(node) {\n return node.chaosSlots?.byState.none;\n },\n sort(node) {\n return node.chaosSlots?.byState.none?.length;\n },\n // sort: true,\n align: 'center',\n ...makeCaptionProps('CS None', 'Chaos Slots None'),\n },\n leading: {\n get(node) {\n return node.tabletSlots?.byState.leading;\n },\n sort(node) {\n return node.tabletSlots?.byState?.leading?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS Leading', 'Tablet Slots Leading'),\n },\n leading_chaos: {\n get(node) {\n return node.chaosSlots?.byState.leading;\n },\n sort(node) {\n return node.chaosSlots?.byState?.leading?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS Leading', 'Chaos Slots Leading'),\n },\n following: {\n get(node) {\n return node.tabletSlots?.byState.following;\n },\n sort(node) {\n return node.tabletSlots?.byState?.following?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS Following', 'Tablet Slots Following'),\n },\n following_chaos: {\n get(node) {\n return node.chaosSlots?.byState.following;\n },\n sort(node) {\n return node.chaosSlots?.byState?.following?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS Following', 'Chaos Slots Following'),\n },\n follower_recovery: {\n get(node) {\n return node.tabletSlots?.byState.follower_recovery;\n },\n sort(node) {\n return node.tabletSlots?.byState.follower_recovery?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS FR', 'Tablet Slots Follower Recovery'),\n },\n follower_recovery_chaos: {\n get(node) {\n return node.chaosSlots?.byState.follower_recovery;\n },\n sort(node) {\n return node.chaosSlots?.byState.follower_recovery?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS FR', 'Chaos Slots Follower Recovery'),\n },\n leader_recovery: {\n get(node) {\n return node.tabletSlots?.byState['leader_recovery'];\n },\n sort: true,\n align: 'center',\n ...makeCaptionProps('TS LR', 'Tablet Slots Leader Recovery'),\n },\n leader_recovery_chaos: {\n get(node) {\n return node.chaosSlots?.byState['leader_recovery'];\n },\n sort: true,\n align: 'center',\n ...makeCaptionProps('CS LR', 'Chaos Slots Leader Recovery'),\n },\n stopped: {\n get(node) {\n return node.tabletSlots?.byState.stopped;\n },\n sort(node) {\n return node.tabletSlots?.byState.stopped?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS Stopped', 'Tablet Slots Stopped'),\n },\n stopped_chaos: {\n get(node) {\n return node.chaosSlots?.byState.stopped;\n },\n sort(node) {\n return node.chaosSlots?.byState.stopped?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS Stopped', 'Chaos Slots Stopped'),\n },\n elections: {\n get(node) {\n return node.tabletSlots?.byState.elections;\n },\n sort(node) {\n return node.tabletSlots?.byState.elections?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS Elections', 'Tablet Slots Elections'),\n },\n elections_chaos: {\n get(node) {\n return node.chaosSlots?.byState.elections;\n },\n sort(node) {\n return node.chaosSlots?.byState.elections?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS Elections', 'Chaos Slots Elections'),\n },\n tablet_memory: {\n group: true,\n items: {\n static: {\n get(node) {\n return node.tabletStaticMemory.progress;\n },\n renderHeader: (column: ColumnInfo) => {\n return (\n <NodesColumnHeader\n column=\"tablet_memory_static\"\n align={column.align}\n title=\"Static memory\"\n options={[\n {\n column: 'tablet_memory_static',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'tablet_memory_static_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'tablet_memory_static_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n sortWithUndefined: true,\n align: 'center',\n },\n static_usage: {\n get(node) {\n return node.tabletStaticMemory.used;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n static_limit: {\n get(node) {\n return node.tabletStaticMemory.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n dynamic: {\n get(node) {\n return node.tabletDynamicMemory.progress;\n },\n renderHeader: (column: ColumnInfo) => {\n return (\n <NodesColumnHeader\n column=\"tablet_memory_dynamic\"\n align={column.align}\n title=\"Static memory\"\n options={[\n {\n column: 'tablet_memory_dynamic',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'tablet_memory_dynamic_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'tablet_memory_dynamic_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n sortWithUndefined: true,\n align: 'center',\n },\n dynamic_usage: {\n get(node) {\n return node.tabletDynamicMemory.used;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n dynamic_limit: {\n get(node) {\n return node.tabletDynamicMemory.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n },\n set: ['static', 'dynamic'],\n },\n io_weight: ioWeight,\n actions: {\n get(node) {\n return node.host;\n },\n sort: false,\n caption: '',\n align: 'right',\n },\n } as Items,\n sets: {\n default: {\n items: [\n 'host',\n 'physical_host',\n 'user_tags',\n 'system_tags',\n 'state',\n 'data_center',\n 'rack',\n 'banned',\n 'decommissioned',\n 'full',\n 'alert_count',\n 'version',\n 'last_seen',\n 'actions',\n ],\n },\n storage: {\n items: ['host', 'space', 'sessions', 'chunks', 'io_weight', 'actions'],\n },\n cpu_and_memory: {\n items: ['host', 'cpu', 'memory', 'network', 'actions'],\n },\n resources: {\n items: [\n 'host',\n 'user_slots',\n 'seal_slots',\n 'repair_slots',\n 'removal_slots',\n 'replication_slots',\n 'actions',\n ],\n },\n tablets: {\n items: ['host', 'tablet_slots', 'tablet_memory', 'actions'],\n },\n tablet_slots: {\n items: [\n 'host',\n 'none',\n 'leading',\n 'following',\n 'follower_recovery',\n 'leader_recovery',\n 'stopped',\n 'elections',\n ],\n },\n chaos_slots: {\n items: [\n 'host',\n 'none_chaos',\n 'leading_chaos',\n 'following_chaos',\n 'follower_recovery_chaos',\n 'leader_recovery_chaos',\n 'stopped_chaos',\n 'elections_chaos',\n ],\n },\n custom: {\n items: [\n 'host',\n 'user_tags',\n 'state',\n 'banned',\n 'decommissioned',\n 'full',\n 'alert_count',\n 'last_seen',\n 'actions',\n ],\n },\n },\n },\n templates: {\n data: {\n onMemoryProgressMouseEnter() {},\n onMemoryProgressMouseLeave() {},\n },\n },\n};\n\nexport const defaultColumns = nodesTableProps.columns.sets.custom.items;\n\nfunction renderTags(tags?: Array<string | number>, themes?: StatusBlockTheme[], flexType?: 'flex') {\n return tags?.length ? (\n <TagsContainer flexType={flexType}>\n {map_(tags, (tag, index) => (\n <StatusBlock key={tag} theme={themes?.[index]} text={tag} />\n ))}\n </TagsContainer>\n ) : (\n hammer.format.NO_VALUE\n );\n}\n\nfunction TagsContainer({\n children,\n flexType = 'inline-flex',\n}: {\n children: React.ReactNode;\n flexType?: 'flex' | 'inline-flex';\n}) {\n return (\n <div className={block('tags-container', {inline: 'inline-flex' === flexType})}>\n {children}\n </div>\n );\n}\n\nconst IO_WEIGHT_PREFIX = 'io_weight_';\n\ntype Templates = {\n [P in keyof typeof PropertiesByColumn]?: (\n item: NodeWithProps<P>,\n columnName: string,\n ) => React.ReactNode;\n};\n\nexport const NODES_TABLE_TEMPLATES: Templates = {\n __default__(item, columnName) {\n if (typeof item.IOWeight === 'object' && columnName.startsWith(IO_WEIGHT_PREFIX)) {\n const mediumName = columnName.slice(IO_WEIGHT_PREFIX.length);\n\n return hammer.format['Number'](item.IOWeight[mediumName]);\n }\n },\n host(item) {\n return <Host address={item.host} />;\n },\n state(item) {\n return <NodeColumnState state={item.state} />;\n },\n banned(item) {\n return (\n <TagsContainer>\n <NodeColumnBanned banned={item.banned} />\n </TagsContainer>\n );\n },\n decommissioned(item) {\n return item.decommissioned ? renderTags(['D'], ['decommissioned']) : hammer.format.NO_VALUE;\n },\n flavors(item) {\n return renderTags(item.flavors);\n },\n full(item) {\n return item.full ? renderTags(['F'], ['full']) : hammer.format.NO_VALUE;\n },\n\n alert_count(item) {\n return item.alertCount! > 0\n ? renderTags([String(item.alertCount)], ['alerts'])\n : hammer.format.NO_VALUE;\n },\n\n physical_host(item, columnName) {\n return (\n <div\n className=\"elements-column_type_id elements-column_with-hover-button\"\n title={item.physicalHost}\n >\n <span className=\"elements-monospace elements-ellipsis\">\n {hammer.format['Address'](item.physicalHost)}\n </span>\n \n <ClipboardButton\n text={item.physicalHost}\n view=\"flat-secondary\"\n size=\"s\"\n title={'Copy ' + columnName}\n />\n </div>\n );\n },\n\n user_tags(item) {\n return renderTags(item.userTags, [], 'flex');\n },\n\n system_tags(item) {\n return renderTags(item.systemTags, [], 'flex');\n },\n\n scheduler_jobs(item) {\n return renderLabel(item.disableJobs);\n },\n write_sessions(item) {\n return renderLabel(item.disableWriteSession);\n },\n tablet_cells(item) {\n return renderLabel(item.disableTabletCells);\n },\n\n data_center(item) {\n return item.dataCenter?.toUpperCase() || hammer.format.NO_VALUE;\n },\n\n rack(item) {\n return <span className=\"elements-monospace\">{hammer.format['Address'](item.rack)}</span>;\n },\n\n version(item) {\n const {version} = item;\n\n return <Version version={version} />;\n },\n\n last_seen(item) {\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['DateTime'](item.lastSeenTime, {\n format: 'full',\n })}\n </span>\n );\n },\n\n actions(item) {\n return <NodeActions node={item} />;\n },\n\n space(item) {\n return <Progress value={item.spaceProgress || 0} text={item.spaceText} theme=\"success\" />;\n },\n\n space_limit(item) {\n return hammer.format['Bytes'](item.spaceTotal);\n },\n\n locations(item) {\n return item.locations\n ? progressText(item.enabledLocations.length, item.locations.length)\n : null;\n },\n\n sessions(item) {\n return hammer.format['Number'](item.sessions);\n },\n\n chunks(item) {\n return hammer.format['Number'](item.chunks);\n },\n\n io_weight(item) {\n return hammer.format['Number'](item.IOWeight);\n },\n\n cpu(item) {\n return <Progress value={item.cpuProgress || 0} text={item.cpuText} theme=\"success\" />;\n },\n\n gpu(item) {\n return (\n <Progress\n value={item.gpu?.progress || 0}\n text={item.gpu?.progressText}\n theme=\"success\"\n />\n );\n },\n\n memory(item) {\n return (\n <MemoryProgress\n memoryData={item.memoryData}\n memoryText={item.memoryText}\n memoryProgress={item.memoryProgress || 0}\n />\n );\n },\n\n memory_total(item) {\n return (\n <Progress\n value={item.memoryProgress || 0}\n text={item.memoryTotalText}\n theme=\"success\"\n />\n );\n },\n\n network(item) {\n return (\n <Progress value={item.networkProgress || 0} text={item.networkText} theme=\"success\" />\n );\n },\n\n repair_slots(item) {\n const text = progressText(item.repairSlots.usage, item.repairSlots.limits);\n\n return <Progress value={item.repairSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n removal_slots(item) {\n const text = progressText(item.removalSlots.usage, item.removalSlots.limits);\n\n return <Progress value={item.removalSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n replication_slots(item) {\n const text = progressText(item.replicationSlots.usage, item.replicationSlots.limits);\n\n return <Progress value={item.replicationSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n seal_slots(item) {\n const text = progressText(item.sealSlots.usage, item.sealSlots.limits);\n\n return <Progress value={item.sealSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n user_slots(item) {\n const text = progressText(item.userSlots.usage, item.userSlots.limits);\n\n return <Progress value={item.userSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n tablet_slots(item) {\n if (item.tabletSlots) {\n const statuses = sortBy_(keys_(item.tabletSlots.byState));\n\n return (\n <TagsContainer>\n {map_(statuses, (state: TabletSlotState) => {\n const tabletSlots = item.tabletSlots.byState[state]!;\n const {text, theme} = TABLET_SLOTS[state];\n const label = `${text}: ${tabletSlots.length}`;\n\n return <StatusBlock theme={theme} text={label} key={state} />;\n })}\n </TagsContainer>\n );\n }\n\n return null;\n },\n\n none(item) {\n const data = item.tabletSlots?.byState.none;\n\n return data ? renderTags([data.length]) : hammer.format.NO_VALUE;\n },\n\n none_chaos(item) {\n const data = item.chaosSlots?.byState.none;\n\n return data ? renderTags([data.length]) : hammer.format.NO_VALUE;\n },\n\n leading(item) {\n const data = item.tabletSlots?.byState.leading;\n\n return data ? renderTags([data.length], ['success']) : hammer.format.NO_VALUE;\n },\n\n leading_chaos(item) {\n const data = item.chaosSlots?.byState.leading;\n\n return data ? renderTags([data.length], ['success']) : hammer.format.NO_VALUE;\n },\n\n following(item) {\n const data = item.tabletSlots?.byState.following;\n\n return data ? renderTags([data.length], ['info']) : hammer.format.NO_VALUE;\n },\n\n following_chaos(item) {\n const data = item.chaosSlots?.byState.following;\n\n return data ? renderTags([data.length], ['info']) : hammer.format.NO_VALUE;\n },\n\n follower_recovery(item) {\n const data = item.tabletSlots?.byState['follower_recovery'];\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n follower_recovery_chaos(item) {\n const data = item.chaosSlots?.byState['follower_recovery'];\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n leader_recovery(item) {\n const data = item.tabletSlots?.byState['leader_recovery'];\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n leader_recovery_chaos(item) {\n const data = item.chaosSlots?.byState['leader_recovery'];\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n stopped(item) {\n const data = item.tabletSlots?.byState.stopped;\n\n return data ? renderTags([data.length]) : hammer.format.NO_VALUE;\n },\n\n stopped_chaos(item) {\n const data = item.chaosSlots?.byState.stopped;\n\n return data ? renderTags([data.length]) : hammer.format.NO_VALUE;\n },\n\n elections(item) {\n const data = item.tabletSlots?.byState.elections;\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n elections_chaos(item) {\n const data = item.chaosSlots?.byState.elections;\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n tablet_memory_static(item) {\n const text = progressText(item.tabletStaticMemory.used, item.tabletStaticMemory.limit, {\n type: 'bytes',\n });\n\n return (\n <Progress value={item.tabletStaticMemory.progress || 0} text={text} theme=\"success\" />\n );\n },\n\n tablet_memory_dynamic(item) {\n const text = progressText(item.tabletDynamicMemory.used, item.tabletDynamicMemory.limit, {\n type: 'bytes',\n });\n\n return (\n <Progress value={item.tabletDynamicMemory.progress || 0} text={text} theme=\"success\" />\n );\n },\n};\n\nexport function getNodeTablesProps(mediumList: string[] = []) {\n if (!mediumList?.length) {\n return nodesTableProps;\n }\n const actions = nodesTableProps.columns.items.actions;\n const allMediums = reduce_(\n mediumList,\n (acc, key) => {\n acc[key] = {\n get(node: Node) {\n return node.IOWeight[key];\n },\n sort: true,\n align: 'center',\n };\n return acc;\n },\n {actions} as {actions: typeof actions} & Record<string, FIX_MY_TYPE>,\n );\n const res = merge_({}, nodesTableProps, {\n columns: {\n items: {\n io_weight: {\n items: {\n ...allMediums,\n },\n groupHeaderStyle: mediumList.length\n ? {width: 100 * mediumList.length}\n : undefined,\n },\n },\n },\n templates: NODES_TABLE_TEMPLATES,\n });\n res.columns!.items!.io_weight!.set = mediumList;\n return res;\n}\n\nfunction makeCaptionProps(columnName: string, title: string) {\n return {\n caption: columnName,\n tooltipProps: {\n placement: 'bottom',\n content: title,\n },\n };\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {Select} from '@gravity-ui/uikit';\n\nimport {NODE_TYPE_ITEMS} from '../../../constants/components/nodes/nodes';\nimport {getSystemNodesNodeTypesToLoad} from '../../../store/selectors/system/nodes';\nimport {setSysmetNodesNodeType} from '../../../store/actions/system/nodes-ts';\nimport {NODE_TYPE, NodeType} from '../../../../shared/constants/system';\nimport {getComponentsNodesNodeTypes} from '../../../store/selectors/components/nodes/nodes';\nimport {componentsNodesSetNodeTypes} from '../../../store/actions/components/nodes/nodes';\nimport {updateListWithAll} from '../../../utils';\n\ntype NodeTypeSelectorProps = {\n className?: string;\n value: Array<NodeType>;\n onUpdate: (value: NodeTypeSelectorProps['value']) => void;\n};\n\nexport function NodeTypeSelector(props: NodeTypeSelectorProps) {\n const {className, value, onUpdate} = props;\n return (\n <Select\n className={className}\n value={value}\n multiple\n options={NODE_TYPE_ITEMS}\n onUpdate={(newVal) => {\n const newValue = updateListWithAll(\n {value, newValue: newVal as NodeType[]},\n NODE_TYPE.ALL_NODES,\n );\n onUpdate(newValue);\n }}\n label={'Node type:'}\n />\n );\n}\n\nexport function SystemNodeTypeSelector() {\n const dispatch = useDispatch();\n const value = useSelector(getSystemNodesNodeTypesToLoad);\n return (\n <NodeTypeSelector\n value={value}\n onUpdate={(newValue) => {\n dispatch(setSysmetNodesNodeType(newValue));\n }}\n />\n );\n}\n\nexport function ComponentsNodeTypeSelector({className}: {className?: string}) {\n const dispatch = useDispatch();\n\n const value = useSelector(getComponentsNodesNodeTypes);\n return (\n <NodeTypeSelector\n className={className}\n value={value}\n onUpdate={(newValue) => dispatch(componentsNodesSetNodeTypes(newValue))}\n />\n );\n}\n","import {ThunkAction} from 'redux-thunk';\nimport {NodeType} from '../../../../shared/constants/system';\nimport {setSettingSystemNodesNodeType} from '../settings/settings';\nimport {RootState} from '../../../store/reducers';\n\nexport function setSysmetNodesNodeType(\n value: Array<NodeType>,\n): ThunkAction<void, RootState, unknown, any> {\n return (dispatch) => {\n dispatch(setSettingSystemNodesNodeType(value));\n };\n}\n","import type {ThunkAction} from 'redux-thunk';\nimport forEach_ from 'lodash/forEach';\n\nimport {RootState} from '../../../store/reducers';\nimport {\n NODE_MAINTENANCE_PARTIAL,\n NODE_MAINTENANCE_RESET,\n} from '../../../constants/components/node-maintenance-modal';\nimport {\n NodeMaintenanceAction,\n NodeMaintenanceState,\n NodeResourceLimits,\n} from '../../../store/reducers/components/node-maintenance-modal';\nimport {\n isAllowedMaintenanceApiNodes,\n isAllowedMaintenanceApiProxies,\n} from '../../../store/selectors/components/node-maintenance-modal';\nimport {wrapApiPromiseByToaster} from '../../../utils/utils';\nimport {YTApiId, ytApiV3Id} from '../../../rum/rum-wrap-api';\nimport {AddMaintenanceParams, BatchSubRequest} from '../../../../shared/yt-types';\nimport {updateComponentsNode} from './nodes/nodes';\nimport {getCurrentUserName} from '../../../store/selectors/global';\nimport {prepareSetCommandForBatch} from '../../../utils/cypress-attributes';\nimport {getProxies} from './proxies/proxies';\n\ntype NodeMaintenanceThunkAction<T = Promise<unknown>> = ThunkAction<\n T,\n RootState,\n unknown,\n NodeMaintenanceAction\n>;\n\nfunction makeNodePath(address: string, component: AddMaintenanceParams['component']) {\n switch (component) {\n case 'cluster_node':\n return `//sys/cluster_nodes/${address}`;\n case 'http_proxy':\n return `//sys/http_proxies/${address}`;\n case 'rpc_proxy':\n return `//sys/rpc_proxies/${address}`;\n default:\n throw new Error(`Unexpected component type: ${component}`);\n }\n}\n\nfunction makeObsoleteMaintenanceRequests(\n command: 'add_maintenance' | 'remove_maintenance',\n {\n address,\n type,\n comment: c,\n component,\n }: Pick<AddMaintenanceParams, 'address' | 'type' | 'comment' | 'component'>,\n): Array<BatchSubRequest> {\n const path = makeNodePath(address, component);\n const isAdd = command === 'add_maintenance';\n const comment = isAdd ? c : '';\n switch (type) {\n case 'ban': {\n const banned = command === 'add_maintenance';\n return [\n {command: 'set', parameters: {path: `${path}/@banned`}, input: banned},\n {command: 'set', parameters: {path: `${path}/@ban_message`}, input: comment},\n ];\n }\n case 'disable_scheduler_jobs':\n case 'disable_tablet_cells':\n case 'disable_write_sessions':\n return [{command: 'set', parameters: {path: `${path}/@${type}`}, input: isAdd}];\n case 'decommission':\n return [\n {command: 'set', parameters: {path: `${path}/@decommissioned`}, input: isAdd},\n {\n command: 'set',\n parameters: {path: `${path}/@decommission_message`},\n input: isAdd ? comment : '',\n },\n ];\n default:\n return [];\n }\n}\n\nexport function applyMaintenance(\n address: string,\n component: NodeMaintenanceState['component'],\n data: NodeMaintenanceState['maintenance'],\n resourceLimitsOverrides?: Partial<NodeResourceLimits>,\n role?: string,\n): NodeMaintenanceThunkAction {\n return (dispatch, getState) => {\n const requests: Array<BatchSubRequest> = [];\n\n const path = makeNodePath(address, component);\n\n if (role && (component === 'http_proxy' || component === 'rpc_proxy')) {\n requests.push(prepareSetCommandForBatch(`${path}/@role`, role));\n }\n\n forEach_(resourceLimitsOverrides, (value, key) => {\n requests.push(\n prepareSetCommandForBatch(\n `${path}/@resource_limits_overrides/${key}`,\n isNaN(value!)\n ? undefined\n : {$value: value, $type: key === 'cpu' ? 'double' : 'int64'},\n {\n input_format: {\n $value: 'json',\n $attributes: {annotate_with_types: true},\n },\n },\n ),\n );\n });\n\n forEach_(data, (item, t) => {\n const type = t as AddMaintenanceParams['type'];\n const command = item?.state ? 'add_maintenance' : 'remove_maintenance';\n const comment = item?.comment;\n\n if (!isMaintenanceApiAllowedForComponent(component, getState())) {\n requests.push(\n ...makeObsoleteMaintenanceRequests(command, {\n address,\n component,\n comment,\n type,\n }),\n );\n } else {\n requests.push({\n command,\n parameters: {\n component,\n address,\n type,\n mine: true,\n comment,\n },\n });\n }\n });\n\n const reloadNodeData = () => {\n switch (component) {\n case 'cluster_node':\n return dispatch(updateComponentsNode(address));\n case 'http_proxy':\n return dispatch(getProxies('http'));\n case 'rpc_proxy':\n return dispatch(getProxies('rpc'));\n }\n };\n\n return wrapApiPromiseByToaster(ytApiV3Id.executeBatch(YTApiId.addMaintenance, {requests}), {\n toasterName: 'edit_node_' + address,\n isBatch: true,\n skipSuccessToast: true,\n errorTitle: `Failed to modify ${address}`,\n })\n .then(reloadNodeData)\n .catch(reloadNodeData);\n };\n}\n\nexport function showNodeMaintenance(\n params: Pick<NodeMaintenanceState, 'address' | 'component'>,\n): NodeMaintenanceThunkAction {\n return async (dispatch) => {\n const data = await dispatch(loadNodeMaintenanceData(params));\n\n return dispatch({\n type: NODE_MAINTENANCE_PARTIAL,\n data: {...params, ...data},\n });\n };\n}\n\nexport type MaintenanceRequestInfo = {\n user: string;\n comment: string;\n timestamp: string;\n type: AddMaintenanceParams['type'];\n};\n\ntype MaintenanceDataResponse = {\n banned?: boolean;\n ban?: boolean;\n ban_message?: string;\n decommissioned?: boolean;\n decommission_message?: string;\n disable_scheduler_jobs?: boolean;\n disable_tablet_cells?: boolean;\n disable_write_sessions?: boolean;\n\n resource_limits?: NodeResourceLimits;\n resource_limits_overrides?: Partial<NodeResourceLimits>;\n\n maintenance_requests?: Record<string, MaintenanceRequestInfo>;\n\n role?: string;\n};\n\nexport function loadNodeMaintenanceData({\n address,\n component,\n}: Pick<NodeMaintenanceState, 'address' | 'component'>): NodeMaintenanceThunkAction<\n Promise<{\n maintenance: NodeMaintenanceState['maintenance'];\n resourceLimits?: NodeResourceLimits;\n resourceLimitsOverrides?: Partial<NodeResourceLimits>;\n }>\n> {\n return (_dispatch, getState) => {\n const state = getState();\n const user = getCurrentUserName(state);\n const path = makeNodePath(address, component) + '/@';\n\n const allowMaintenanceRequests = isMaintenanceApiAllowedForComponent(component, state);\n\n return wrapApiPromiseByToaster(\n ytApiV3Id.get(YTApiId.maintenanceRequests, {\n path,\n attributes: [\n 'resource_limits',\n 'resource_limits_overrides',\n ...(allowMaintenanceRequests\n ? ['maintenance_requests']\n : [\n 'ban_message',\n 'decommissioned',\n 'decommission_message',\n 'disable_scheduler_jobs',\n 'disable_tablet_cells',\n 'disable_write_sessions',\n ]),\n ...(component === 'http_proxy' || component === 'rpc_proxy'\n ? ['banned', 'role']\n : ['banned']),\n ],\n }),\n {\n toasterName: 'maintenance_attributes_request_' + path,\n skipSuccessToast: true,\n errorContent: `Cannot load node attributes for ${path}`,\n },\n ).then((data: MaintenanceDataResponse) => {\n const maintenance: NodeMaintenanceState['maintenance'] = {};\n if (allowMaintenanceRequests) {\n forEach_(data.maintenance_requests, (item) => {\n const dst =\n maintenance[item.type] ??\n (maintenance[item.type] = {comment: '', othersComment: '', state: ''});\n\n if (item.user === user) {\n dst.state = 'maintenance';\n if (dst.comment?.length) {\n dst.comment += '\\n';\n }\n dst.comment += item.comment;\n } else {\n dst.othersComment += `${item.timestamp} ${item.user}\\t${item.comment}`;\n }\n });\n } else {\n Object.assign(maintenance, {\n ban: {\n state: data.banned ? 'maintenance' : '',\n comment: data.ban_message,\n },\n decommission: {\n state: data.decommissioned ? 'maintenance' : '',\n comment: data.decommission_message,\n },\n disable_scheduler_jobs: {\n state: data.disable_scheduler_jobs ? 'maintenance' : '',\n },\n disable_tablet_cells: {state: data.disable_tablet_cells ? 'maintenance' : ''},\n disable_write_sessions: {\n state: data.disable_write_sessions ? 'maintenance' : '',\n },\n } as typeof maintenance);\n }\n return {\n maintenance,\n resourceLimits: data.resource_limits,\n resourceLimitsOverrides: data.resource_limits_overrides,\n role: data.role,\n };\n });\n };\n}\n\nexport function closeNodeMaintenanceModal(): NodeMaintenanceAction {\n return {type: NODE_MAINTENANCE_RESET};\n}\n\nfunction isMaintenanceApiAllowedForComponent(\n component: AddMaintenanceParams['component'],\n state: RootState,\n) {\n switch (component) {\n case 'cluster_node':\n return isAllowedMaintenanceApiNodes(state);\n case 'http_proxy':\n case 'rpc_proxy':\n return isAllowedMaintenanceApiProxies(state);\n default:\n return false;\n }\n}\n","// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport omit_ from 'lodash/omit';\nimport forEach_ from 'lodash/forEach';\nimport compact_ from 'lodash/compact';\nimport type {ThunkAction} from 'redux-thunk';\n\nimport ypath from '../../../../common/thor/ypath';\n\nimport {setSetting} from '../../../../store/actions/settings';\nimport {NAMESPACES, SettingName} from '../../../../../shared/constants/settings';\nimport {\n getRequiredAttributes,\n useRacksFromAttributes,\n useTagsFromAttributes,\n} from '../../../../store/selectors/components/nodes/nodes';\nimport {getTemplates} from '../../../../store/selectors/settings';\nimport type {RootState} from '../../../../store/reducers';\nimport {Node} from '../../../../store/reducers/components/nodes/nodes/node';\nimport type {\n NodesAction,\n NodesState,\n} from '../../../../store/reducers/components/nodes/nodes/nodes';\nimport type {NodesSetupState} from '../../../../store/reducers/components/nodes/setup/setup';\nimport {\n APPLY_SETUP,\n CHANGE_CONTENT_MODE,\n CHANGE_HOST_FILTER,\n CHANGE_NODE_TYPE,\n COMPONENTS_NODES_UPDATE_NODE,\n GET_NODES,\n GET_NODES_FILTER_OPTIONS,\n} from '../../../../constants/components/nodes/nodes';\nimport {USE_CACHE, USE_MAX_SIZE} from '../../../../../shared/constants/yt-api';\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport type {ActionD, FIX_MY_TYPE, PartialDeep} from '../../../../types';\nimport {prepareAttributes} from '../../../../utils/cypress-attributes';\nimport {splitBatchResults, wrapApiPromiseByToaster} from '../../../../utils/utils';\nimport {NodeType} from '../../../../../shared/constants/system';\nimport {BatchSubRequest} from '../../../../../shared/yt-types';\n\nconst {COMPONENTS} = NAMESPACES;\nconst {TEMPLATES} = SettingName.COMPONENTS;\n\nexport type NodesThunkAction = ThunkAction<void, RootState, unknown, NodesAction>;\n\nexport function changeContentMode(\n contentMode: NodesState['contentMode'],\n): ActionD<typeof CHANGE_CONTENT_MODE, Pick<NodesState, 'contentMode'>> {\n return {\n type: CHANGE_CONTENT_MODE,\n data: {contentMode},\n };\n}\n\nconst updateNodeCanceler = new CancelHelper();\n\nexport function getNodes({\n attributes,\n nodeTypes,\n}: {\n attributes: ReturnType<typeof getRequiredAttributes>;\n nodeTypes: Array<NodeType>;\n}): NodesThunkAction {\n return (dispatch) => {\n dispatch({type: GET_NODES.REQUEST});\n\n const preparedAttrs = prepareAttributes(attributes);\n const requests: Array<BatchSubRequest> = nodeTypes.map((type) => {\n return {\n command: 'list',\n parameters: {\n path: `//sys/${type}`,\n attributes: preparedAttrs,\n ...USE_CACHE,\n ...USE_MAX_SIZE,\n },\n };\n });\n\n return ytApiV3Id\n .executeBatch(YTApiId.componentsClusterNodes, {\n parameters: {requests},\n cancellation: updateNodeCanceler.removeAllAndSave,\n })\n .then((data) => {\n const {results, error} = splitBatchResults(data, 'Failed to get nodes');\n\n const outputs = results.map((output) => {\n return ypath.getValue(output) || [];\n });\n\n const nodes = [];\n\n const collectedItems = new Set<string>();\n\n for (const output of outputs) {\n for (const item of output) {\n const {$value: name} = item;\n if (!collectedItems.has(name)) {\n nodes.push(item);\n collectedItems.add(name);\n }\n }\n }\n\n dispatch({type: GET_NODES.SUCCESS, data: {nodes}});\n\n if (error) {\n throw error;\n }\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_NODES.CANCELLED});\n return;\n }\n dispatch({\n type: GET_NODES.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nexport function updateComponentsNode(host: string): NodesThunkAction {\n return (dispatch) => {\n return ytApiV3Id\n .get(YTApiId.componentsUpdateNodeData, {\n path: `//sys/cluster_nodes/${host}`,\n attributes: prepareAttributes(Node.ATTRIBUTES),\n })\n .then((node) => {\n dispatch({\n type: COMPONENTS_NODES_UPDATE_NODE,\n data: {node: {...node, $value: host}},\n });\n });\n };\n}\n\nexport function changeHostFilter(\n hostFilter: string,\n): ActionD<typeof CHANGE_HOST_FILTER, Pick<NodesState, 'hostFilter'>> {\n return {\n type: CHANGE_HOST_FILTER,\n data: {hostFilter: hostFilter.trim()},\n };\n}\n\nexport function componentsNodesSetNodeTypes(nodeTypes: Array<NodeType>): NodesThunkAction {\n return (dispatch) => {\n dispatch({\n type: CHANGE_NODE_TYPE,\n data: {nodeTypes},\n });\n };\n}\n\nexport function applyPreset(\n setup: PartialDeep<NodesSetupState>,\n): ActionD<typeof APPLY_SETUP, PartialDeep<NodesSetupState>> {\n return {\n type: APPLY_SETUP,\n data: setup,\n };\n}\n\nexport function savePreset(name: string, data: FIX_MY_TYPE): NodesThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const prevTemplates = getTemplates(state) || {};\n const templates = {\n ...prevTemplates,\n [name]: data,\n };\n\n dispatch(setSetting(TEMPLATES, COMPONENTS, templates));\n };\n}\n\nexport function removePreset(name: string): NodesThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const templates = omit_(getTemplates(state), name);\n\n dispatch(setSetting(TEMPLATES, COMPONENTS, templates));\n };\n}\n\nexport function handleColumnsChange(selectedColumns: string[]): NodesThunkAction {\n return async (dispatch) => {\n await dispatch(\n setSetting(\n SettingName.COMPONENTS.SELECTED_COLUMNS,\n NAMESPACES.COMPONENTS,\n selectedColumns,\n ),\n );\n };\n}\n\nexport function getComponentsNodesFilterOptions(): NodesThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n\n const attributes = compact_([\n !useTagsFromAttributes(state) && 'tags',\n !useRacksFromAttributes(state) && 'rack',\n ]);\n\n if (0 === attributes.length) {\n return;\n }\n\n dispatch({type: GET_NODES_FILTER_OPTIONS.REQUEST});\n\n wrapApiPromiseByToaster(\n ytApiV3Id.list(YTApiId.componentsClusterNodes, {\n path: '//sys/cluster_nodes',\n attributes,\n ...USE_CACHE,\n ...USE_MAX_SIZE,\n }),\n {\n toasterName: 'node filter options',\n errorTitle: `Failed to load node ${attributes.join(',')}`,\n skipSuccessToast: true,\n },\n )\n .then((nodes) => {\n const tags = new Set<string>();\n const racks = new Set<string>();\n forEach_(nodes, (item) => {\n const node = new Node(item);\n forEach_(node.tags, (tag) => {\n if (tag) {\n tags.add(tag);\n }\n });\n if (node.rack) {\n racks.add(node.rack);\n }\n });\n\n dispatch({\n type: GET_NODES_FILTER_OPTIONS.SUCCESS,\n data: {\n filterOptionsTags: [...tags].sort(),\n filterOptionsRacks: [...racks].sort(),\n },\n });\n })\n .catch((error) => {\n dispatch({\n type: GET_NODES_FILTER_OPTIONS.FAILURE,\n data: {error},\n });\n });\n };\n}\n","import ypath from '../../../../../common/thor/ypath';\n\nexport default class Proxy {\n constructor(data) {\n // data comes in format like in /hosts/all, not like //sys/http_proxies\n this.name = data.name;\n this.host = data.name;\n this.state = data.dead ? 'offline' : 'online';\n this.effectiveState = this.banned ? 'banned' : this.state;\n\n this.banned = ypath.getBoolean(data, '/banned') || false;\n this.banMessage = ypath.getValue(data, '/ban_message') || '';\n this.role = ypath.getValue(data, '/role');\n this.version = ypath.getValue(data, '/version');\n this.physicalHost = ypath.getValue(data, '/annotations/physical_host');\n this.liveness = ypath.getValue(data, '/liveness');\n\n this.loadAverage = ypath.getValue(this.liveness, '/load_average');\n this.updatedAt = ypath.getValue(this.liveness, '/updated_at');\n this.networkLoad = ypath.getValue(this.liveness, '/network_coef');\n }\n\n static ATTRIBUTES = ['ban_message', 'banned', 'liveness', 'role', 'version', 'annotations'];\n}\n","import map_ from 'lodash/map';\n\nimport axios from 'axios';\nimport ypath from '../../../../common/thor/ypath';\n\nimport Proxy from '../../../../store/reducers/components/proxies/proxies/proxy';\nimport {\n GET_PROXIES,\n PROXIES_CHANGE_FILTERS,\n PROXY_TYPE,\n} from '../../../../constants/components/proxies/proxies';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\n\nfunction getRpcProxies() {\n return (dispatch) => {\n return Promise.all([\n ytApiV3Id.list(YTApiId.componentsRpcProxies, {\n path: '//sys/rpc_proxies',\n attributes: Proxy.ATTRIBUTES,\n }),\n ytApiV3Id.get(YTApiId.componentGetRpcProxies, {path: '//sys/rpc_proxies'}),\n ])\n .then(([data, proxiesMap]) => {\n const proxies = map_(data, (proxyData) => {\n const name = ypath.getValue(proxyData);\n const role = ypath.getValue(proxyData, '/role') || 'default';\n const alive = Boolean(ypath.getValue(proxiesMap, `/${name}`).alive);\n const attributes = ypath.getAttributes(proxyData);\n const meta = {name, role, dead: !alive};\n\n return new Proxy({...meta, ...attributes});\n });\n\n dispatch({\n type: GET_PROXIES.SUCCESS,\n data: {proxies},\n });\n })\n .catch((error) => {\n dispatch({\n type: GET_PROXIES.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nfunction getHttpProxies() {\n return (dispatch, getState) => {\n const cluster = getCluster(getState());\n return Promise.all([\n axios.get(`/api/yt-proxy/${cluster}/hosts-all`),\n ytApiV3Id.get(YTApiId.systemProxies, {\n path: '//sys/http_proxies',\n attributes: Proxy.ATTRIBUTES,\n }),\n ])\n .then(([{data}, cypressData]) => {\n const proxies = map_(data, (proxyData) => {\n const cypressAttributes = ypath.getAttributes(\n ypath.getValue(cypressData)[proxyData.name],\n );\n\n return new Proxy({...proxyData, ...cypressAttributes});\n });\n\n dispatch({\n type: GET_PROXIES.SUCCESS,\n data: {proxies},\n });\n })\n .catch((error) => {\n dispatch({\n type: GET_PROXIES.FAILURE,\n data: {error},\n });\n });\n };\n}\n\n/**\n *\n * @param {'http' | 'rpc'} type\n * @returns\n */\nexport function getProxies(type) {\n return (dispatch) => {\n dispatch({type: GET_PROXIES.REQUEST});\n\n return dispatch(type === PROXY_TYPE.HTTP ? getHttpProxies() : getRpcProxies());\n };\n}\n\nexport function changeHostFilter(hostFilter) {\n return {\n type: PROXIES_CHANGE_FILTERS,\n data: {hostFilter},\n };\n}\n\nexport function changeStateFilter(stateFilter) {\n return {\n type: PROXIES_CHANGE_FILTERS,\n data: {stateFilter},\n };\n}\n\nexport function changeRoleFilter(roleFilter) {\n return {\n type: PROXIES_CHANGE_FILTERS,\n data: {roleFilter},\n };\n}\n\nexport function changeBannedFilter(bannedFilter) {\n return {type: PROXIES_CHANGE_FILTERS, data: {bannedFilter}};\n}\n\nexport function resetProxyState() {\n return (dispatch) => {\n dispatch({type: GET_PROXIES.CANCELLED});\n };\n}\n","import reduce_ from 'lodash/reduce';\nimport {createSelector} from 'reselect';\n\nimport {RootState} from '../../reducers';\nimport {getClusterUiConfig} from '../global';\nimport {isSupportedNodeMaintenanceApi} from '../thor/support';\nimport {NodeResourceLimits} from '../../../store/reducers/components/node-maintenance-modal';\n\nexport const getNodeMaintenanceModalState = (state: RootState) =>\n state.components.nodeMaintenanceModal;\n\nexport const getNodeMaintenanceModalInitialValues = createSelector(\n [getNodeMaintenanceModalState],\n ({maintenance, resourceLimitsOverrides, role}) => {\n return {\n ...maintenance,\n role: {role},\n limits: reduce_(\n resourceLimitsOverrides,\n (acc, value, k) => {\n const key = k as keyof typeof acc;\n acc[key] = {value};\n return acc;\n },\n {} as Partial<Record<keyof NodeResourceLimits, {value?: number}>>,\n ),\n };\n },\n);\n\nexport const isAllowedMaintenanceApiNodes = createSelector(\n [isSupportedNodeMaintenanceApi, getClusterUiConfig],\n (isSupported, uiConfig) => {\n return isSupported && Boolean(uiConfig.enable_maintenance_api_nodes);\n },\n);\n\nexport const isAllowedMaintenanceApiProxies = createSelector(\n [isSupportedNodeMaintenanceApi, getClusterUiConfig],\n (isSupported, uiConfig) => {\n return isSupported && Boolean(uiConfig.enable_maintenance_api_proxies);\n },\n);\n","import filter_ from 'lodash/filter';\nimport some_ from 'lodash/some';\nimport union_ from 'lodash/union';\n\nimport hammer from '../../../../../common/hammer';\nimport {createSelector} from 'reselect';\n\nimport {concatByAnd} from '../../../../../common/hammer/predicate';\nimport {COMPONENTS_NODES_TABLE_ID} from '../../../../../constants/components/nodes/nodes';\nimport {RootState} from '../../../../../store/reducers';\nimport {AttributesByProperty} from '../../../../../store/reducers/components/nodes/nodes/node';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {getSelectedColumns} from '../../../../../store/selectors/settings';\nimport {getMediumListNoCache} from '../../../../../store/selectors/thor';\nimport type {ValueOf} from '../../../../../types';\nimport {createMediumsPredicates} from '../../../../../utils/components/nodes/setup';\nimport {\n PropertiesByColumn,\n defaultColumns,\n getNodeTablesProps,\n} from '../../../../../pages/components/tabs/nodes/tables';\nimport {\n getComponentNodesFilterPredicates,\n getComponentNodesFilterStatePredicate,\n getComponentNodesFiltersSetup,\n getComponentNodesIndexByRack,\n getComponentNodesIndexByTag,\n getNodes,\n getPropertiesRequiredForFilters,\n} from './predicates';\nimport {NODE_TYPE, NodeType} from '../../../../../../shared/constants/system';\n\nconst getContentMode = (state: RootState) => state.components.nodes.nodes.contentMode;\nconst getHostFilter = (state: RootState) => state.components.nodes.nodes.hostFilter.toLowerCase();\nconst getSortState = (state: RootState) => state.tables[COMPONENTS_NODES_TABLE_ID];\nconst getComponentsNodesNodeTypeRaw = (state: RootState) => state.components.nodes.nodes.nodeTypes;\n\nconst getCustomColumns = (state: RootState) => getSelectedColumns(state) || defaultColumns;\n\nconst getMediumsPredicates = createSelector(\n [getComponentNodesFiltersSetup, getMediumListNoCache],\n createMediumsPredicates,\n);\n\nconst getPropertiesRequiredForMediums = createSelector(\n [getMediumsPredicates],\n (mediumsPredicates) => (mediumsPredicates.length > 0 ? (['IOWeight'] as const) : []),\n);\n\nconst getFilteredByHost = createSelector([getNodes, getHostFilter], (nodes, hostFilter) => {\n const hostFilters = hostFilter.split(/\\s+/);\n return filter_(nodes, (node) => {\n return some_(hostFilters, (hostFilter) => node?.host?.toLowerCase().startsWith(hostFilter));\n });\n});\n\nconst getFilteredNodes = createSelector(\n [getFilteredByHost, getComponentNodesFilterPredicates, getMediumsPredicates],\n (nodes, predicates, mediumsPredicates) => {\n const predicatesArray = predicates.concat(mediumsPredicates);\n if (!predicatesArray.length) {\n return nodes;\n }\n\n const predicate = concatByAnd(...predicatesArray);\n return filter_(nodes, (node) => {\n return predicate(node);\n });\n },\n);\n\nexport const getVisibleNodes = createSelector(\n [getFilteredNodes, getSortState, getMediumListNoCache, getCluster],\n (nodes, sortState, mediumList, cluster) => {\n return hammer.utils.sort(\n nodes.map((n) => ({...n, cluster})),\n sortState,\n getNodeTablesProps(mediumList).columns.items,\n ) as typeof nodes;\n },\n);\n\nexport const getComponentNodesTableProps = createSelector(\n [getMediumListNoCache],\n getNodeTablesProps,\n);\n\nconst getVisibleColumns = createSelector(\n [getComponentNodesTableProps, getContentMode, getCustomColumns],\n (nodesTableProps, contentMode, customColumns) =>\n contentMode === 'custom' ? customColumns : nodesTableProps.columns.sets[contentMode].items,\n);\n\nconst getPropertiesRequiredForRender = createSelector(\n [getVisibleColumns],\n (visibleColumns /* : Array<keyof typeof PropertiesByColumn> */) => {\n const requiredProperties = union_(\n ...visibleColumns.map(\n (x) => (PropertiesByColumn as any)[x] as ValueOf<typeof PropertiesByColumn>,\n ),\n );\n\n return requiredProperties;\n },\n);\n\nexport const getRequiredAttributes = createSelector(\n [\n getPropertiesRequiredForRender,\n getPropertiesRequiredForFilters,\n getPropertiesRequiredForMediums,\n ],\n (propertiesRequiredForRender, propertiesRequiredForFilters, propertiesRequiredForMediums) => {\n const allRequiredProperties = [\n ...propertiesRequiredForRender,\n ...propertiesRequiredForFilters,\n ...propertiesRequiredForMediums,\n ];\n\n const requiredAttributes = union_(\n ...allRequiredProperties.map(\n (x) => (AttributesByProperty as any)[x] as ValueOf<typeof AttributesByProperty>,\n ),\n );\n\n return requiredAttributes;\n },\n);\n\nexport const useTagsFromAttributes = createSelector([getRequiredAttributes], (attributes) => {\n return attributes.indexOf('tags') >= 0;\n});\n\nexport const useRacksFromAttributes = createSelector([getRequiredAttributes], (attributes) => {\n return attributes.indexOf('rack') >= 0;\n});\n\nconst getFetchedTags = (state: RootState): string[] =>\n state.components.nodes.nodes.filterOptionsTags;\nconst getFetchedRacks = (state: RootState): string[] =>\n state.components.nodes.nodes.filterOptionsRacks;\n\nexport const getComponentNodesTags = createSelector(\n [useTagsFromAttributes, getFetchedTags, getComponentNodesIndexByTag],\n (useFromAttrs, fetchedTags, nodesByTag) => {\n if (!useFromAttrs) {\n return fetchedTags;\n }\n\n return [...nodesByTag.keys()].sort();\n },\n);\n\nexport const getComponentNodesRacks = createSelector(\n [useRacksFromAttributes, getFetchedRacks, getComponentNodesIndexByRack],\n (useFromAttrs, fetchedRacks, nodesByRack) => {\n if (!useFromAttrs) {\n return fetchedRacks;\n }\n\n return [...nodesByRack.keys()].sort();\n },\n);\n\nexport const getComponentsNodesNodeTypes = createSelector(\n [getComponentsNodesNodeTypeRaw],\n (types) => {\n const res: Array<NodeType> = [...types];\n if (res.length === 0) {\n return [NODE_TYPE.ALL_NODES];\n }\n return res;\n },\n);\n\nexport const COMPONENTS_AVAILABLE_STATES = [\n 'all',\n 'being_disposed',\n 'online',\n 'offline',\n 'mixed',\n 'registered',\n 'unregistered',\n 'unknown',\n];\n\nexport const getComponentNodesFilterSetupStateValue = createSelector(\n [getComponentNodesFilterStatePredicate],\n (predicate) => {\n if (!predicate) {\n return ['all'];\n }\n\n return COMPONENTS_AVAILABLE_STATES.map((state) => ({state}))\n .filter(predicate)\n .map(({state}) => state);\n },\n);\n","import cloneDeep_ from 'lodash/cloneDeep';\nimport every_ from 'lodash/every';\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport merge_ from 'lodash/merge';\nimport pickBy_ from 'lodash/pickBy';\nimport reduce_ from 'lodash/reduce';\nimport some_ from 'lodash/some';\nimport values_ from 'lodash/values';\nimport union_ from 'lodash/union';\n\nimport {createSelector} from 'reselect';\n\nimport {Toaster} from '@gravity-ui/uikit';\n\nimport {UNAWARE} from '../../../../../constants';\nimport {\n FlagState,\n NodeRange,\n TagFilter,\n groupFilterInitialState,\n} from '../../../../../store/reducers/components/nodes/setup/setup';\nimport {MEDIUM_COLS_PREFIX} from '../../../../../constants/components/nodes/nodes';\nimport {getMediumListNoCache} from '../../../../../store/selectors/thor';\nimport type {ValueOf} from '../../../../../types';\nimport {Node} from '../../../../reducers/components/nodes/nodes/node';\nimport {isRangeFilterDefined} from '../../../../../utils/components/nodes/setup';\n\nimport {RootState} from '../../../../reducers';\n\nexport const getSetupFiltersRaw = (state: RootState) => state.components.nodes.setup;\n\nexport const getNodes = (state: RootState): Array<Node> => state.components.nodes.nodes.nodes;\n\nexport const getComponentNodesFilterStatePredicate = createSelector(\n [getSetupFiltersRaw],\n ({default: {state}}) => {\n if (!state.length || (state.length === 1 && state[0] === 'all')) {\n return undefined;\n }\n const excludes = reduce_(\n state,\n (acc, item) => {\n if (item[0] === '!') {\n acc.add(item.substring(1));\n }\n return acc;\n },\n new Set<string>(),\n );\n\n if (excludes.size) {\n if (excludes.size !== state.length) {\n new Toaster().add({\n name: 'component-nodes-excludes',\n theme: 'danger',\n autoHiding: false,\n title: 'Unexpected behavior',\n content:\n 'Components/Nodes: It is not allowed to have excludes and includes for \"state\" filter at the same time',\n });\n }\n\n excludes.add('all');\n\n return (node: {state: string}) => {\n return !excludes.has(node.state);\n };\n } else {\n const includes = new Set(state);\n return (node: {state: string}) => {\n return includes.has(node.state);\n };\n }\n },\n);\n\nexport const getComponentNodesFiltersSetup = createSelector(\n [getSetupFiltersRaw, getMediumListNoCache],\n (setup, mediumList) => {\n const mediumDefaults = reduce_(\n mediumList,\n (acc, medium) => {\n acc[MEDIUM_COLS_PREFIX + medium] = cloneDeep_(groupFilterInitialState);\n return acc;\n },\n {} as Record<string, NodeRange>,\n );\n return merge_({}, {storage: mediumDefaults}, setup);\n },\n);\n\nexport const getComponentNodesIndexByTag = createSelector([getNodes], (nodes) => {\n const res = reduce_(\n nodes,\n (acc, node) => {\n const {tags} = node;\n forEach_(tags, (tag) => {\n if (acc.has(tag)) {\n acc.get(tag)?.add(node);\n } else {\n acc.set(tag, new Set([node]));\n }\n });\n return acc;\n },\n new Map<string, Set<Node>>(),\n );\n return res;\n});\n\nexport const getComponentNodesIndexByRack = createSelector([getNodes], (nodes) => {\n return reduce_(\n nodes,\n (acc, node) => {\n const rack = node.rack ?? UNAWARE;\n if (!acc.has(rack)) {\n acc.set(rack, new Set([node]));\n } else {\n acc.get(rack)?.add(node);\n }\n return acc;\n },\n new Map<string, Set<Node>>(),\n );\n});\n\nconst PropertiesByPredicate = {\n physicalHost: ['physicalHost'],\n tags: ['tags'],\n state: ['state'],\n rack: ['rack'],\n banned: ['banned'],\n decommissioned: ['decommissioned'],\n full: ['full'],\n alertCount: ['alertCount'],\n disableJobs: ['disableJobs'],\n disableWriteSession: ['disableWriteSession'],\n disableTabletCells: ['disableTabletCells'],\n sessions: ['sessions'],\n chunks: ['chunks'],\n spaceUsed: ['spaceUsed'],\n spaceTotal: ['spaceTotal'],\n blobSession: ['memory'],\n blockCache: ['memory'],\n chunkBlockMeta: ['memory'],\n chunkMeta: ['memory'],\n footprint: ['memory'],\n query: ['memory'],\n systemJobs: ['memory'],\n versionedChunkMeta: ['memory'],\n tabletDynamicUsed: ['memory'],\n tabletDynamicTotal: ['memory'],\n tabletStaticUsed: ['memory'],\n tabletStaticTotal: ['memory'],\n userJobsUsed: ['memory'],\n userJobsTotal: ['memory'],\n userSlotsUsed: ['userSlots'],\n userSlotsTotal: ['userSlots'],\n sealSlotsUsed: ['sealSlots'],\n sealSlotsTotal: ['sealSlots'],\n repairSlotsUsed: ['repairSlots'],\n repairSlotsTotal: ['repairSlots'],\n removalSlotsUsed: ['removalSlots'],\n removalSlotsTotal: ['removalSlots'],\n replicationSlotsUsed: ['replicationSlots'],\n replicationSlotsTotal: ['replicationSlots'],\n all: ['tabletSlots'],\n none: ['tabletSlots'],\n leading: ['tabletSlots'],\n following: ['tabletSlots'],\n followerRecovery: ['tabletSlots'],\n leaderRecovery: ['tabletSlots'],\n stopped: ['tabletSlots'],\n elections: ['tabletSlots'],\n staticUsed: ['tabletStaticMemory'],\n staticTotal: ['tabletStaticMemory'],\n dynamicUsed: ['tabletDynamicMemory'],\n dynamicTotal: ['tabletDynamicMemory'],\n} as const;\n\ntype NodeWithProps<T extends keyof typeof PropertiesByPredicate> = Pick<\n Node,\n (typeof PropertiesByPredicate)[T][number]\n>;\n\ntype Predicates = {\n [P in keyof typeof PropertiesByPredicate]:\n | false\n | undefined\n | ((node: NodeWithProps<P>) => boolean);\n};\n\nconst getRackPredicate = createSelector(\n [getSetupFiltersRaw, getComponentNodesIndexByRack],\n (setupFilters, nodesByRack) => {\n const {rack} = setupFilters.default;\n if ('string' !== typeof rack && rack.selected?.[0] === UNAWARE) {\n return ({rack}: {rack?: string}) => rack === undefined;\n }\n return createNodeTagPredicate<'rack'>(setupFilters.default.rack, nodesByRack, (node) => [\n node.rack,\n ]);\n },\n);\n\nconst getFilterPredicatesObject = createSelector(\n [\n getSetupFiltersRaw,\n getComponentNodesIndexByTag,\n getRackPredicate,\n getComponentNodesFilterStatePredicate,\n ],\n (setupFilters, nodesByTags, rackPredicate, statePredicate) => {\n const predicates: Predicates = {\n // filter by default\n physicalHost:\n Boolean(setupFilters.default.physicalHost) &&\n ((node) => {\n return -1 !== node.physicalHost?.indexOf(setupFilters.default.physicalHost);\n }),\n tags: createNodeTagPredicate<'tags'>(\n setupFilters.default.tag,\n nodesByTags,\n (node) => node.tags,\n ),\n state: statePredicate,\n rack: rackPredicate,\n\n banned: createFlagPredicate('banned', setupFilters.default.banned),\n decommissioned: createFlagPredicate(\n 'decommissioned',\n setupFilters.default.decommissioned,\n ),\n full: createFlagPredicate('full', setupFilters.default.full),\n alertCount: createAlertsFlagPredicate(setupFilters.default.alertCount),\n\n disableJobs: createAttributeStatePredicate(\n 'disableJobs',\n setupFilters.default.schedulerJobs,\n ),\n disableWriteSession: createAttributeStatePredicate(\n 'disableWriteSession',\n setupFilters.default.writeSessions,\n ),\n disableTabletCells: createAttributeStatePredicate(\n 'disableTabletCells',\n setupFilters.default.tabletCells,\n ),\n\n // filter by storage\n sessions: createRangePredicate(\n setupFilters.storage.sessions,\n 'sessions',\n (node) => node,\n ),\n chunks: createRangePredicate(setupFilters.storage.chunks, 'chunks', (node) => node),\n spaceUsed: createRangePredicate(\n setupFilters.storage.spaceUsed,\n 'spaceUsed',\n (node) => node,\n ),\n spaceTotal: createRangePredicate(\n setupFilters.storage.spaceTotal,\n 'spaceTotal',\n (node) => node,\n ),\n\n // filter by cpu\n blobSession: createRangePredicate(\n setupFilters.cpu.blobSession,\n 'used',\n (node) => node.memory.blob_session,\n ),\n blockCache: createRangePredicate(\n setupFilters.cpu.blockCache,\n 'used',\n (node) => node.memory.block_cache,\n ),\n chunkBlockMeta: createRangePredicate(\n setupFilters.cpu.chunkBlockMeta,\n 'used',\n (node) => node.memory.chunk_block_meta,\n ),\n chunkMeta: createRangePredicate(\n setupFilters.cpu.chunkMeta,\n 'used',\n (node) => node.memory.chunk_meta,\n ),\n footprint: createRangePredicate(\n setupFilters.cpu.footprint,\n 'used',\n (node) => node.memory.footprint,\n ),\n query: createRangePredicate(\n setupFilters.cpu.query,\n 'used',\n (node) => node.memory.query,\n ),\n systemJobs: createRangePredicate(\n setupFilters.cpu.systemJobs,\n 'used',\n (node) => node.memory.system_jobs,\n ),\n versionedChunkMeta: createRangePredicate(\n setupFilters.cpu.versionedChunkMeta,\n 'used',\n (node) => node.memory.versioned_chunk_meta,\n ),\n\n tabletDynamicUsed: createRangePredicate(\n setupFilters.cpu.tabletDynamicUsed,\n 'used',\n (node) => node.memory.tablet_dynamic,\n ),\n tabletDynamicTotal: createRangePredicate(\n setupFilters.cpu.tabletDynamicTotal,\n 'limit',\n (node) => node.memory.tablet_dynamic,\n ),\n\n tabletStaticUsed: createRangePredicate(\n setupFilters.cpu.tabletStaticUsed,\n 'used',\n (node) => node.memory.tablet_static,\n ),\n tabletStaticTotal: createRangePredicate(\n setupFilters.cpu.tabletStaticTotal,\n 'limit',\n (node) => node.memory.tablet_static,\n ),\n\n userJobsUsed: createRangePredicate(\n setupFilters.cpu.userJobsUsed,\n 'used',\n (node) => node.memory.user_jobs,\n ),\n userJobsTotal: createRangePredicate(\n setupFilters.cpu.userJobsTotal,\n 'limit',\n (node) => node.memory.user_jobs,\n ),\n\n // filter by resources\n userSlotsUsed: createRangePredicate(\n setupFilters.resources.userSlotsUsed,\n 'usage',\n (node) => node.userSlots,\n ),\n userSlotsTotal: createRangePredicate(\n setupFilters.resources.userSlotsTotal,\n 'limits',\n (node) => node.userSlots,\n ),\n sealSlotsUsed: createRangePredicate(\n setupFilters.resources.sealSlotsUsed,\n 'usage',\n (node) => node.sealSlots,\n ),\n sealSlotsTotal: createRangePredicate(\n setupFilters.resources.sealSlotsTotal,\n 'limits',\n (node) => node.sealSlots,\n ),\n repairSlotsUsed: createRangePredicate(\n setupFilters.resources.repairSlotsUsed,\n 'usage',\n (node) => node.repairSlots,\n ),\n repairSlotsTotal: createRangePredicate(\n setupFilters.resources.repairSlotsTotal,\n 'limits',\n (node) => node.repairSlots,\n ),\n removalSlotsUsed: createRangePredicate(\n setupFilters.resources.removalSlotsUsed,\n 'usage',\n (node) => node.removalSlots,\n ),\n removalSlotsTotal: createRangePredicate(\n setupFilters.resources.removalSlotsTotal,\n 'limits',\n (node) => node.removalSlots,\n ),\n replicationSlotsUsed: createRangePredicate(\n setupFilters.resources.replicationSlotsUsed,\n 'usage',\n (node) => node.replicationSlots,\n ),\n replicationSlotsTotal: createRangePredicate(\n setupFilters.resources.replicationSlotsTotal,\n 'limits',\n (node) => node.replicationSlots,\n ),\n\n // filter by tablets\n all: createRangePredicate(\n setupFilters.tablets.all,\n 'all',\n (node) => node.tabletSlots,\n true,\n ),\n none: createRangePredicate(\n setupFilters.tablets.none,\n 'none',\n (node) => node.tabletSlots.byState,\n true,\n ),\n leading: createRangePredicate(\n setupFilters.tablets.leading,\n 'leading',\n (node) => node.tabletSlots.byState,\n true,\n ),\n following: createRangePredicate(\n setupFilters.tablets.following,\n 'following',\n (node) => node.tabletSlots.byState,\n true,\n ),\n followerRecovery: createRangePredicate(\n setupFilters.tablets.followerRecovery,\n 'follower_recovery',\n (node) => node.tabletSlots.byState,\n true,\n ),\n leaderRecovery: createRangePredicate(\n setupFilters.tablets.leaderRecovery,\n 'leader_recovery',\n (node) => node.tabletSlots.byState,\n true,\n ),\n stopped: createRangePredicate(\n setupFilters.tablets.stopped,\n 'stopped',\n (node) => node.tabletSlots.byState,\n true,\n ),\n elections: createRangePredicate(\n setupFilters.tablets.elections,\n 'elections',\n (node) => node.tabletSlots.byState,\n true,\n ),\n\n staticUsed: createRangePredicate(\n setupFilters.tablets.staticUsed,\n 'used',\n (node) => node.tabletStaticMemory,\n ),\n staticTotal: createRangePredicate(\n setupFilters.tablets.staticTotal,\n 'limit',\n (node) => node.tabletStaticMemory,\n ),\n dynamicUsed: createRangePredicate(\n setupFilters.tablets.dynamicUsed,\n 'used',\n (node) => node.tabletDynamicMemory,\n ),\n dynamicTotal: createRangePredicate(\n setupFilters.tablets.dynamicTotal,\n 'limit',\n (node) => node.tabletDynamicMemory,\n ),\n };\n return predicates;\n },\n);\n\nexport const getComponentNodesFiltersCount = createSelector(\n [getFilterPredicatesObject],\n (filters) => {\n return reduce_(\n filters,\n (acc, predicate) => {\n return predicate ? acc + 1 : acc;\n },\n 0,\n );\n },\n);\n\nexport const getComponentNodesFilterPredicates = createSelector(\n [getFilterPredicatesObject],\n (filterPredicatesObject) => {\n return filter_(filterPredicatesObject, (p) => p) as Array<(node: Node) => boolean>;\n },\n);\n\nexport const getPropertiesRequiredForFilters = createSelector(\n [getFilterPredicatesObject],\n (filterPredicatesObject) => {\n const picked = values_(\n pickBy_(\n PropertiesByPredicate,\n (_value, key) => filterPredicatesObject[key as keyof typeof PropertiesByPredicate],\n ),\n ) as any;\n\n return union_(...picked) as Array<ValueOf<typeof PropertiesByPredicate>[number]>;\n },\n);\n\nfunction createNodeTagPredicate<K extends keyof typeof PropertiesByPredicate>(\n tagFilter: string | TagFilter,\n nodesByTags: Map<string, Set<NodeWithProps<K>>>,\n getTags: (node: NodeWithProps<K>) => Array<string>,\n): undefined | ((node: NodeWithProps<K>) => boolean) {\n if (!tagFilter) {\n return undefined;\n }\n\n if (typeof tagFilter === 'string') {\n return (node) => {\n return some_(\n getTags(node),\n (item) => -1 !== item?.toLowerCase().indexOf(tagFilter.toLowerCase()),\n );\n };\n }\n\n const {mode, useRegexp, filter, selected} = tagFilter;\n\n const selectedItems = selected || [];\n\n switch (mode) {\n case 'union': {\n if (!selected?.length) {\n return undefined;\n }\n return (node) => {\n return some_(selectedItems, (tagName) => {\n return nodesByTags.get(tagName)?.has(node);\n });\n };\n }\n case 'intersection': {\n if (!selected?.length) {\n return undefined;\n }\n return (node) => {\n return every_(selectedItems, (tagName) => {\n return nodesByTags.get(tagName)?.has(node);\n });\n };\n }\n default: {\n if (!filter) {\n return undefined;\n }\n if (!useRegexp) {\n return createNodeTagPredicate(filter, new Map(), getTags);\n }\n try {\n const re = new RegExp(filter);\n return (node) => {\n return some_(getTags(node), (tag) => re.test(tag));\n };\n } catch (e) {\n return () => false;\n }\n }\n }\n}\n\nfunction createFlagPredicate<T extends keyof typeof PropertiesByPredicate>(\n key: (typeof PropertiesByPredicate)[T][number],\n flag: FlagState,\n) {\n if (!flag || flag === 'all') {\n return undefined;\n }\n\n return (node: NodeWithProps<T>) => {\n return flag === 'disabled' ? !node[key] : Boolean(node[key]);\n };\n}\n\nfunction createAttributeStatePredicate<T extends keyof typeof PropertiesByPredicate>(\n key: (typeof PropertiesByPredicate)[T][number],\n value: FlagState,\n) {\n if (value === 'all') {\n return undefined;\n }\n\n return (node: NodeWithProps<T>) => {\n return value === 'disabled' ? Boolean(node[key]) : !node[key];\n };\n}\n\nfunction createAlertsFlagPredicate(flag: FlagState) {\n if (!flag || flag === 'all') {\n return undefined;\n }\n\n return (node: Pick<Node, 'alertCount'>) => {\n if (flag === 'disabled') {\n return node.alertCount === 0;\n }\n\n return node.alertCount! > 0;\n };\n}\n\nfunction createRangePredicate<T extends keyof typeof PropertiesByPredicate, U>(\n range: NodeRange,\n key: keyof U,\n get: (node: NodeWithProps<T>) => U,\n asArray?: boolean,\n) {\n if (!isRangeFilterDefined(range)) {\n return undefined;\n }\n\n const {from, to} = range;\n\n return (node: NodeWithProps<T>) => {\n const value: any = get(node)[key];\n\n const nodeValue = asArray ? value.length : value;\n\n return (\n nodeValue >= (from.value === null ? -Infinity : from.value) &&\n nodeValue <= (to.value === null ? Infinity : to.value)\n );\n };\n}\n","import {createSelector} from 'reselect';\n\nimport {getSettingSystemNodesNodeType} from '../../../store/selectors/settings-ts';\nimport {NODE_TYPE} from '../../../../shared/constants/system';\n\nexport const getSystemNodesNodeTypesToLoad = createSelector(\n [getSettingSystemNodesNodeType],\n (nodeTypes) => {\n const valueSet = new Set(nodeTypes);\n if (valueSet.has(NODE_TYPE.ALL_NODES)) {\n return [NODE_TYPE.ALL_NODES];\n }\n\n return [...valueSet.values()];\n },\n);\n","import {RootState} from '../../store/reducers';\nimport {initialState} from '../../store/reducers/tables';\n\nexport const getTables = (state: RootState) => state.tables || initialState;\n","import filter_ from 'lodash/filter';\nimport {createSelector} from 'reselect';\n\nimport hammer from '../../../common/hammer';\nimport {MediumType} from '../../../constants/index';\nexport {isSupportedSelector} from './support';\n\nexport const getMediumList = createSelector(\n (state) => state.global.mediumList,\n (data) => hammer.utils.sortInPredefinedOrder([MediumType.DEFAULT], [...data]),\n);\n\nexport const getMediumListNoCache = createSelector([getMediumList], (mediums) =>\n filter_(mediums, (item) => item !== 'cache'),\n);\n\nexport const getCurrentCluster = (state) => state.global.cluster;\n","import {createSelector} from 'reselect';\nimport map_ from 'lodash/map';\nimport isEmpty_ from 'lodash/isEmpty';\nimport every_ from 'lodash/every';\n\n// @ts-ignore\nimport hammer from '@ytsaurus/interface-helpers/lib/hammer';\n\nimport {RootState} from '../../../store/reducers';\n\nexport const _LOCAL_ARCADIA_VERSION = '(development)';\n\nfunction versionToArray(version: string, build?: string) {\n const VERSION_DELIMITER = '.';\n const VERSION_CHUNK_COUNT = 3;\n const VERSION_CHUNK_PLACEHOLDER = 0;\n\n const versionArray: Array<string | number> = map_(\n version.split(VERSION_DELIMITER),\n (subversion) => {\n return parseInt(subversion, 10);\n },\n );\n\n while (versionArray.length < VERSION_CHUNK_COUNT) {\n versionArray.push(VERSION_CHUNK_PLACEHOLDER);\n }\n\n if (build) {\n versionArray.push(build);\n }\n\n return versionArray;\n}\n\n/**\n * Returns true if versionA >= versionB and comparator === 'greater'\n * Returns true if versionA < versionB and comparator === 'smaller'\n * @param {String} comparator - 'greater', 'smaller'\n * @param {String} versionA\n * @param {String} versionB\n * @returns {boolean}\n */\nexport function _compareVersions(\n comparator: 'greater' | 'smaller',\n versionA: string,\n versionB: string,\n) {\n if (versionA === versionB) {\n return comparator === 'greater';\n }\n\n return comparator === 'greater'\n ? hammer.utils.compareVectors(versionToArray(versionA), versionToArray(versionB)) >= 0\n : hammer.utils.compareVectors(versionToArray(versionA), versionToArray(versionB)) < 0;\n}\n\n/**\n * Determines wheter a given version belongs to a versionInterval [a, b)\n * Left end included, right end excluded (intuitive limitations - features are supported starting from a specific build)\n * @param {String} version\n * @param {String|Object} versionInterval\n * @returns {boolean}\n */\nexport function _versionInInterval(\n version: string,\n versionInterval: MajorMinorPatch | MajorMinorPatchRange | typeof _LOCAL_ARCADIA_VERSION,\n) {\n let supported;\n\n if (typeof versionInterval === 'object') {\n supported = Object.keys(versionInterval).every((comparator) => {\n if (!(comparator === 'greater' || comparator === 'smaller')) {\n throw new Error(\n 'thor.support: feature description has unknown comparator \"' +\n comparator +\n '\",' +\n ' cannot check support.',\n );\n }\n const key = comparator as keyof typeof versionInterval;\n return _compareVersions(comparator, version, versionInterval[key]!);\n });\n } else {\n supported = _compareVersions('greater', version, versionInterval);\n }\n\n return supported;\n}\n\nfunction getVersionAndBuild(version?: string): [string, string | undefined] | undefined {\n const parsedVersion = version?.match(/(\\d+)\\.(\\d+)\\.(\\d+)/);\n let parsedBuild;\n\n if (parsedVersion) {\n const majorMinorPatch = parsedVersion[0];\n parsedBuild = version?.substring(parsedVersion.length);\n\n return [majorMinorPatch, parsedBuild];\n }\n return undefined;\n}\n\nconst getRawProxyVersion = (state: RootState) => state.global.version;\nconst getRawSchedulerVersion = (state: RootState) => state.global.schedulerVersion;\nconst getRawMasterVersion = (state: RootState) => state.global.masterVersion;\n\ntype MajorMinorPatch = `${number}.${number}.${number}`;\ntype MajorMinorPatchRange = {greater?: MajorMinorPatch; smaller?: MajorMinorPatch};\n\nexport type RawVersion = `${MajorMinorPatch}-${string}`;\n\nexport type Versions<T> = {proxy?: T | typeof _LOCAL_ARCADIA_VERSION; scheduler?: T; master?: T};\n\ntype FeatureVersions = Versions<MajorMinorPatch | Array<MajorMinorPatchRange>>;\ntype RawFeatureVersions = Versions<RawVersion>;\n\nconst FEATURES = {\n fieldsFilter: {\n scheduler: '22.1.9091155',\n } as FeatureVersions,\n effectiveExpiration: {\n master: '23.1.11146445',\n } as FeatureVersions,\n clusterNodeVersion: {\n proxy: '23.2.0',\n } as FeatureVersions,\n nodeMaintenanceApi: {\n proxy: '23.1.11106567',\n } as FeatureVersions,\n schedulingChildrenByPool: {\n scheduler: '23.1.11146742',\n } as FeatureVersions,\n};\n\nexport function _isFeatureSupported<T extends Record<string, FeatureVersions>>(\n rawVersions: RawFeatureVersions,\n features: T,\n) {\n return (featureName: keyof T) => {\n function failFeature(message: string) {\n console.warn(`thor.support \"${featureName as string}\" ${message}`);\n return false;\n }\n\n const featureVersions: FeatureVersions = features[featureName];\n\n if (!featureVersions) {\n return failFeature(`${featureName as string} is unknown, cannot check support.`);\n }\n\n if (isEmpty_(featureVersions)) {\n return failFeature('feature component version is unknown, cannot check support.');\n }\n\n return every_(featureVersions, (value, k) => {\n const key = k as keyof typeof rawVersions;\n const rawVersion = rawVersions[key];\n\n // yt-local in arcadia is meant to be of the freshest version\n if (rawVersion === _LOCAL_ARCADIA_VERSION) {\n return true;\n }\n\n if (!value) {\n return failFeature(`feature version of '${key}' is unknown, connot check support`);\n }\n\n const buildVersion = getVersionAndBuild(rawVersion);\n if (!buildVersion) {\n return failFeature(\n `version of '${key}' component is unknown, cannot check support.`,\n );\n }\n\n if (Array.isArray(value)) {\n return value.some((item) => _versionInInterval(buildVersion[0], item));\n } else {\n return _versionInInterval(buildVersion[0], value);\n }\n });\n };\n}\n\nexport const isSupportedSelector = createSelector(\n [getRawProxyVersion, getRawSchedulerVersion, getRawMasterVersion],\n (proxy, scheduler, master) => _isFeatureSupported({proxy, scheduler, master}, FEATURES),\n);\n\nexport const isSupportedEffectiveExpiration = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('effectiveExpiration');\n },\n);\n\nexport const isSupportedClusterNodeForVersions = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('clusterNodeVersion');\n },\n);\n\nexport const isSupportedNodeMaintenanceApi = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('nodeMaintenanceApi');\n },\n);\n\nexport const isSupportedSchedulingChildrenByPool = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('schedulingChildrenByPool');\n },\n);\n","import {COMPONENTS_NODES_NODE_TABLE_ID} from '../../../constants/components/nodes/nodes';\n\ninterface Node {\n cell_id: string;\n peer_id: string;\n state: string;\n}\n\nexport const nodeTableProps = {\n size: 's',\n virtual: false,\n theme: 'light',\n cssHover: true,\n striped: false,\n tableId: COMPONENTS_NODES_NODE_TABLE_ID,\n columns: {\n items: {\n cell_id: {\n get(node: Node) {\n return node.cell_id;\n },\n sort: true,\n align: 'left',\n caption: 'Cell ID',\n },\n peer_id: {\n sort: true,\n get(node: Node) {\n return node.peer_id;\n },\n align: 'right',\n caption: 'Peer ID',\n },\n state: {\n sort: true,\n get(node: Node) {\n return node.state;\n },\n align: 'right',\n },\n },\n sets: {\n default: {\n items: ['cell_id', 'peer_id', 'state'],\n },\n },\n mode: 'default',\n },\n templates: {\n key: 'components/nodes/node',\n },\n};\n\nexport type ComponentsNodesLinkParams = {\n cluster?: string;\n rackFilter?: string;\n rackSelected?: Array<string>;\n banned?: 'enabled';\n decommissioned?: 'enabled';\n alerts?: 'enabled';\n full?: 'enabled';\n state?: 'online' | 'offline' | string;\n nodeTypes?: Array<string>;\n};\n\nexport function makeComponentsNodesLink({\n cluster,\n state,\n rackFilter,\n rackSelected,\n banned,\n decommissioned,\n full,\n alerts,\n nodeTypes,\n}: ComponentsNodesLinkParams) {\n if (!cluster) {\n return '';\n }\n let search = '';\n if (rackFilter) {\n search += `rack=filter-${rackFilter}&`;\n } else if (rackSelected?.length) {\n search += `rack=mode-union,selected-${rackSelected.join('|')}&`;\n }\n if (banned) {\n search += `banned=${banned}&`;\n }\n if (state) {\n search += `state=${state}&`;\n }\n if (decommissioned) {\n search += `decommissioned=${decommissioned}&`;\n }\n if (alerts) {\n search += `alerts=${alerts}&`;\n }\n if (full) {\n search += `full=${full}&`;\n }\n if (nodeTypes?.length) {\n search += `nodeType=${nodeTypes?.join(',')}&`;\n }\n return `/${cluster}/components/nodes?${search}`;\n}\n","import {MEDIUM_COLS_PREFIX} from '../../../constants/components/nodes/nodes';\n\nimport forEach_ from 'lodash/forEach';\n\nimport type {Node} from '../../../store/reducers/components/nodes/nodes/node';\nimport type {\n NodeRange,\n NodesSetupState,\n} from '../../../store/reducers/components/nodes/setup/setup';\nimport type {FIX_MY_TYPE} from '../../../types';\n\nconst isCorrectRange = (\n node: Node['IOWeight'] = {},\n {from, to}: NodeRange,\n key: FIX_MY_TYPE,\n isArray = false,\n) => {\n if (!node[key]) {\n return from.value === null && to.value === null;\n }\n\n const nodeValue = isArray ? (node[key] as FIX_MY_TYPE).length : node[key];\n\n return (\n nodeValue >= (from.value === null ? -Infinity : from.value) &&\n nodeValue <= (to.value === null ? Infinity : to.value)\n );\n};\n\nexport function createMediumsPredicates(setupFilters: NodesSetupState, mediumList: FIX_MY_TYPE) {\n const {storage} = setupFilters;\n const predicates = [] as Array<(node: Pick<Node, 'IOWeight'>) => boolean>;\n forEach_(mediumList, (medium) => {\n const fromTo =\n storage[(MEDIUM_COLS_PREFIX + medium) as FIX_MY_TYPE as keyof typeof storage];\n if (isRangeFilterDefined(fromTo)) {\n predicates.push((node: Pick<Node, 'IOWeight'>) =>\n isCorrectRange(node.IOWeight, fromTo, medium),\n );\n }\n });\n return predicates;\n}\n\nexport function isRangeFilterDefined({from, to}: NodeRange) {\n return from.value !== null || to.value !== null;\n}\n"],"names":["AttributesButton","_ref","_ref$view","view","_ref$size","size","rest","_objectWithoutProperties","_excluded","_jsx","Button","_objectSpread","children","Icon","awesome","ChartLink","props","className","url","title","theme","hideIcon","face","wrapContent","icon","content","_jsxs","React","Link","target","b","block","headingCN","CollapsibleSectionStateLess","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","toggle","onToggle","collapsed","_createClass","key","value","_this$props","this","name","overview","marginDirection","togglerRightPadding","ErrorBoundary","margin","clickable","onClick","Component","CollapsibleSection","_React$useState","_React$useState2","_slicedToArray","setCollapsed","onChange","defaultProps","cn","ICON_BY_TYPE","_ICON_BY_TYPE","_defineProperty","SortIcon","_React$Component","order","allowUnordered","withUndefined","nextSortOrderValue","_this$props2","label","hidden","Tooltip","format","ReadableField","renderText","text","settings","undefined","mix","elem","mods","textProps","asHTML","dangerouslySetInnerHTML","__html","unipika","decode","String","prepareTextProps","printColumnAsTimeDurationWithMs","item","columnName","column","getColumn","hammer","get","printColumnAsReadableField","printColumnAsTime","ColumnAsTime","printColumnAsError","error","_typeof","showErrorPopup","hideOopsMsg","NO_VALUE","asNumber","__default__","_templates","add","templateId","templates","Object","keys","reduce","newTemplates","wrapRenderMethods","ROLE_THEME","default","control","data","STATE_THEME","online","offline","NodeColumnState","_STATE_THEME$state","state","FirstUppercase","Label","type","NodeColumnBanned","_ref2","banned","StatusBlock","NodeColumnRole","_ref3","role","Address","NodeColumnText","_ref4","ClipboardButton","ClickableId","_ref5","allowTooltip","_ref5$format","v","ClickableText","color","MemoryProgress","progress","memoryText","memoryData","Progress","stack","category","_category$rawData","_category$rawData2","rawDataUsed","rawData","used","rawDataLimit","limit","rawDataLimitIsNumber","style","backgroundColor","_this2","map_","renderItem","renderPopupContent","disableInline","renderProgress","withVisible","Version","version","handleShow","handleClose","visible","SimpleModal","onCancel","onOutsideClick","Error","renderErrorVersion","renderVersion","NodeActions","handleEditClick","node","showNodeMaintenance","address","host","component","cluster","_UIFactory$getCompone","UIFactory","getComponentsNodeDashboardUrl","ClickableAttributesButton","path","withTooltip","tooltipProps","placement","mapDispatchToProps","connect","getCluster","NodesColumnHeader","_props$options","_column$column","dispatch","useDispatch","sortState","useSelector","getTables","COMPONENTS_NODES_TABLE_ID","oldSortStateToOrderType","options","find","field","ColumnHeader","onSort","_props$options2","colInfo","toggleColumnSortOrder","tableId","PropertiesByColumn","actions","alert_count","chunks","cpu","cpu_limit","cpu_usage","data_center","decommissioned","elections","elections_chaos","follower_recovery","follower_recovery_chaos","following","following_chaos","full","gpu","gpu_usage","gpu_limit","io_weight","last_seen","leader_recovery","leader_recovery_chaos","leading","leading_chaos","locations","memory_total","memory","memory_limit","memory_usage","network","network_usage","network_limit","none","none_chaos","physical_host","flavors","rack","removal_slots","removal_slots_usage","removal_slots_limit","repair_slots","repair_slots_usage","repair_slots_limit","replication_slots","replication_slots_usage","replication_slots_limit","scheduler_jobs","seal_slots","seal_slots_usage","seal_slots_limit","sessions","space_limit","space_usage","space","stopped","stopped_chaos","system_tags","tablet_cells","tablet_memory_dynamic","tablet_memory_dynamic_usage","tablet_memory_dynamic_limit","tablet_memory_static","tablet_memory_static_usage","tablet_memory_static_limit","tablet_memory","tablet_slots","user_slots","user_slots_usage","user_slots_limit","user_tags","write_sessions","nodesTableProps","virtual","virtualType","cssHover","striped","computeKey","columns","items","sort","align","physicalHost","compareFn","compareArraysBySizeThenByItems","dataCenter","caption","userTags","_node$userTags","systemTags","allowedOrderTypes","DESC_ASC_UNORDERED","alertCount","disableJobs","disableWriteSession","disableTabletCells","lastSeenTime","spaceProgress","renderHeader","sortWithUndefined","spaceTotal","spaceUsed","enabledLocations","cpuProgress","_node$cpu","_node$cpu2","usage","_node$gpu","_node$gpu2","_node$gpu3","memoryProgress","memoryTotal","networkProgress","hiddne","repairSlotsProgress","_ref6","repairSlots","limits","removalSlotsProgress","_ref7","removalSlots","replicationSlotsProgress","_ref8","replicationSlots","sealSlotsProgress","_ref9","sealSlots","userSlotsProgress","_ref10","userSlots","tabletSlots","raw","reduce_","sum","slot","_node$tabletSlots","byState","_node$tabletSlots2","makeCaptionProps","_node$chaosSlots","chaosSlots","_node$chaosSlots2","_node$tabletSlots3","_node$tabletSlots4","_node$chaosSlots3","_node$chaosSlots4","_node$tabletSlots5","_node$tabletSlots6","_node$chaosSlots5","_node$chaosSlots6","_node$tabletSlots7","_node$tabletSlots8","_node$chaosSlots7","_node$chaosSlots8","_node$tabletSlots9","_node$chaosSlots9","_node$tabletSlots10","_node$tabletSlots11","_node$chaosSlots10","_node$chaosSlots11","_node$tabletSlots12","_node$tabletSlots13","_node$chaosSlots12","_node$chaosSlots13","group","static","tabletStaticMemory","static_usage","static_limit","dynamic","tabletDynamicMemory","dynamic_usage","dynamic_limit","set","IOWeight","cache","ssd_blobs","ssd_journals","sets","storage","cpu_and_memory","resources","tablets","chaos_slots","custom","onMemoryProgressMouseEnter","onMemoryProgressMouseLeave","defaultColumns","renderTags","tags","themes","flexType","TagsContainer","tag","index","_ref11","_ref11$flexType","inline","NODES_TABLE_TEMPLATES","startsWith","mediumName","slice","IO_WEIGHT_PREFIX","Host","renderLabel","_item$dataCenter","toUpperCase","spaceText","progressText","cpuText","_item$gpu","_item$gpu2","memoryTotalText","networkText","statuses","sortBy_","keys_","_TABLET_SLOTS$state","TABLET_SLOTS","_item$tabletSlots","_item$chaosSlots","_item$tabletSlots2","_item$chaosSlots2","_item$tabletSlots3","_item$chaosSlots3","_item$tabletSlots4","_item$chaosSlots4","_item$tabletSlots5","_item$chaosSlots5","_item$tabletSlots6","_item$chaosSlots6","_item$tabletSlots7","_item$chaosSlots7","getNodeTablesProps","mediumList","allMediums","acc","res","merge_","groupHeaderStyle","width","NodeTypeSelector","onUpdate","Select","multiple","NODE_TYPE_ITEMS","newVal","newValue","updateListWithAll","NODE_TYPE","ALL_NODES","SystemNodeTypeSelector","getSystemNodesNodeTypesToLoad","setSettingSystemNodesNodeType","setSysmetNodesNodeType","ComponentsNodeTypeSelector","getComponentsNodesNodeTypes","componentsNodesSetNodeTypes","makeNodePath","applyMaintenance","resourceLimitsOverrides","getState","requests","push","prepareSetCommandForBatch","forEach_","isNaN","$value","$type","input_format","$attributes","annotate_with_types","t","command","comment","isMaintenanceApiAllowedForComponent","parameters","mine","_toConsumableArray","c","isAdd","input","makeObsoleteMaintenanceRequests","reloadNodeData","updateComponentsNode","getProxies","wrapApiPromiseByToaster","ytApiV3Id","executeBatch","YTApiId","addMaintenance","toasterName","isBatch","skipSuccessToast","errorTitle","then","params","_asyncToGenerator","_regeneratorRuntime","_callee","_context","prev","next","loadNodeMaintenanceData","sent","abrupt","NODE_MAINTENANCE_PARTIAL","stop","_x","_dispatch","user","getCurrentUserName","allowMaintenanceRequests","maintenanceRequests","attributes","errorContent","maintenance","maintenance_requests","_maintenance$item$typ","_dst$comment","dst","othersComment","timestamp","assign","ban","ban_message","decommission","decommission_message","disable_scheduler_jobs","disable_tablet_cells","disable_write_sessions","resourceLimits","resource_limits","resource_limits_overrides","closeNodeMaintenanceModal","NODE_MAINTENANCE_RESET","isAllowedMaintenanceApiNodes","isAllowedMaintenanceApiProxies","COMPONENTS","NAMESPACES","TEMPLATES","SettingName","changeContentMode","contentMode","CHANGE_CONTENT_MODE","updateNodeCanceler","CancelHelper","getNodes","nodeTypes","GET_NODES","REQUEST","preparedAttrs","prepareAttributes","map","USE_CACHE","USE_MAX_SIZE","componentsClusterNodes","cancellation","removeAllAndSave","_step","_splitBatchResults","splitBatchResults","results","outputs","output","ypath","getValue","nodes","collectedItems","Set","_iterator","_createForOfIteratorHelper","s","n","done","_step2","_iterator2","has","err","e","f","SUCCESS","code","yt","CANCELLED","FAILURE","componentsUpdateNodeData","Node","ATTRIBUTES","COMPONENTS_NODES_UPDATE_NODE","changeHostFilter","hostFilter","CHANGE_HOST_FILTER","trim","CHANGE_NODE_TYPE","applyPreset","setup","APPLY_SETUP","savePreset","prevTemplates","getTemplates","setSetting","removePreset","omit_","handleColumnsChange","selectedColumns","SELECTED_COLUMNS","getComponentsNodesFilterOptions","compact_","useTagsFromAttributes","useRacksFromAttributes","GET_NODES_FILTER_OPTIONS","list","join","racks","filterOptionsTags","filterOptionsRacks","Proxy","dead","effectiveState","getBoolean","banMessage","liveness","loadAverage","updatedAt","networkLoad","GET_PROXIES","PROXY_TYPE","HTTP","Promise","all","axios","systemProxies","cypressData","proxies","proxyData","cypressAttributes","getAttributes","componentsRpcProxies","componentGetRpcProxies","proxiesMap","alive","Boolean","meta","PROXIES_CHANGE_FILTERS","changeStateFilter","stateFilter","changeRoleFilter","roleFilter","changeBannedFilter","bannedFilter","resetProxyState","getNodeMaintenanceModalState","components","nodeMaintenanceModal","getNodeMaintenanceModalInitialValues","createSelector","k","isSupportedNodeMaintenanceApi","getClusterUiConfig","isSupported","uiConfig","enable_maintenance_api_nodes","enable_maintenance_api_proxies","getMediumsPredicates","getComponentNodesFiltersSetup","getMediumListNoCache","createMediumsPredicates","getPropertiesRequiredForMediums","mediumsPredicates","getFilteredByHost","toLowerCase","hostFilters","split","filter_","some_","_node$host","getFilteredNodes","getComponentNodesFilterPredicates","predicates","predicatesArray","predicate","concatByAnd","getVisibleNodes","tables","utils","getComponentNodesTableProps","getVisibleColumns","getSelectedColumns","customColumns","getPropertiesRequiredForRender","visibleColumns","union_","x","getRequiredAttributes","getPropertiesRequiredForFilters","propertiesRequiredForRender","propertiesRequiredForFilters","propertiesRequiredForMediums","allRequiredProperties","AttributesByProperty","indexOf","getComponentNodesTags","getComponentNodesIndexByTag","useFromAttrs","fetchedTags","nodesByTag","getComponentNodesRacks","getComponentNodesIndexByRack","fetchedRacks","nodesByRack","types","COMPONENTS_AVAILABLE_STATES","getComponentNodesFilterSetupStateValue","getComponentNodesFilterStatePredicate","filter","getSetupFiltersRaw","excludes","substring","Toaster","autoHiding","includes","mediumDefaults","medium","MEDIUM_COLS_PREFIX","cloneDeep_","groupFilterInitialState","_acc$get","Map","_node$rack","_acc$get2","UNAWARE","PropertiesByPredicate","blobSession","blockCache","chunkBlockMeta","chunkMeta","footprint","query","systemJobs","versionedChunkMeta","tabletDynamicUsed","tabletDynamicTotal","tabletStaticUsed","tabletStaticTotal","userJobsUsed","userJobsTotal","userSlotsUsed","userSlotsTotal","sealSlotsUsed","sealSlotsTotal","repairSlotsUsed","repairSlotsTotal","removalSlotsUsed","removalSlotsTotal","replicationSlotsUsed","replicationSlotsTotal","followerRecovery","leaderRecovery","staticUsed","staticTotal","dynamicUsed","dynamicTotal","getRackPredicate","setupFilters","_rack$selected","selected","createNodeTagPredicate","getFilterPredicatesObject","nodesByTags","rackPredicate","statePredicate","_node$physicalHost","createFlagPredicate","createAlertsFlagPredicate","createAttributeStatePredicate","schedulerJobs","writeSessions","tabletCells","createRangePredicate","blob_session","block_cache","chunk_block_meta","chunk_meta","system_jobs","versioned_chunk_meta","tablet_dynamic","tablet_static","user_jobs","getComponentNodesFiltersCount","filters","filterPredicatesObject","p","picked","values_","pickBy_","_value","tagFilter","getTags","mode","useRegexp","selectedItems","tagName","_nodesByTags$get","every_","_nodesByTags$get2","re","RegExp","test","flag","range","asArray","isRangeFilterDefined","from","to","nodeValue","Infinity","getSettingSystemNodesNodeType","valueSet","values","initialState","getMediumList","global","sortInPredefinedOrder","MediumType","DEFAULT","mediums","getCurrentCluster","versionToArray","build","versionArray","subversion","parseInt","_compareVersions","comparator","versionA","versionB","compareVectors","_versionInInterval","versionInterval","every","FEATURES","fieldsFilter","scheduler","effectiveExpiration","master","clusterNodeVersion","proxy","nodeMaintenanceApi","schedulingChildrenByPool","isSupportedSelector","schedulerVersion","masterVersion","rawVersions","features","featureName","failFeature","message","console","warn","featureVersions","isEmpty_","rawVersion","buildVersion","parsedVersion","match","getVersionAndBuild","isArray","some","isSupportedEffectiveExpiration","isSupportedClusterNodeForVersions","isSupportedSchedulingChildrenByPool","nodeTableProps","COMPONENTS_NODES_NODE_TABLE_ID","cell_id","peer_id","makeComponentsNodesLink","rackFilter","rackSelected","alerts","search","isCorrectRange","fromTo"],"sourceRoot":""}
|
1
|
+
{"version":3,"file":"js/2081.b642c3c2.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/components/AttributesButton/AttributesButton.tsx","webpack://@ytsaurus/ui/./src/ui/components/ChartLink/ChartLink.tsx","webpack://@ytsaurus/ui/./src/ui/components/CollapsibleSection/CollapsibleSection.tsx","webpack://@ytsaurus/ui/./src/ui/components/SortIcon/SortIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/templates/utils.js","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/NodeColumns.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/MemoryProgress/MemoryProgress.js","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/Version.js","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/NodeActions/NodeActions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/Nodes/NodesColumnHeader.tsx","webpack://@ytsaurus/ui/./src/ui/pages/components/tabs/nodes/tables.tsx","webpack://@ytsaurus/ui/./src/ui/pages/system/Nodes/NodeTypeSelector.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/system/nodes-ts.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/components/node-maintenance-modal.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/components/nodes/nodes.ts","webpack://@ytsaurus/ui/./src/ui/store/reducers/components/proxies/proxies/proxy.js","webpack://@ytsaurus/ui/./src/ui/store/actions/components/proxies/proxies.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/node-maintenance-modal.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/nodes/nodes/data.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/components/nodes/nodes/predicates.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/system/nodes.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/tables.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/thor/index.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/thor/support.ts","webpack://@ytsaurus/ui/./src/ui/utils/components/nodes/node.ts","webpack://@ytsaurus/ui/./src/ui/utils/components/nodes/setup.ts"],"sourcesContent":["import React from 'react';\n\nimport Button, {ButtonProps} from '../../components/Button/Button';\nimport Icon from '../../components/Icon/Icon';\n\nexport interface AttributesButtonProps extends ButtonProps {}\n\nexport default function AttributesButton({\n view = 'flat-secondary',\n size = 'm',\n ...rest\n}: AttributesButtonProps) {\n return (\n <Button view={view} size={size} {...rest}>\n <Icon awesome=\"at\" />\n </Button>\n );\n}\n","import React from 'react';\nimport Link, {LinkProps} from '../../components/Link/Link';\n\nimport Icon, {IconProps} from '../Icon/Icon';\n\ninterface Props {\n className?: string;\n theme?: LinkProps['theme'];\n face?: IconProps['face'];\n url?: string;\n title?: string;\n children?: React.ReactNode;\n hideIcon?: boolean;\n wrapContent?: (node: React.ReactNode) => React.ReactNode;\n}\n\nfunction ChartLink(props: Props) {\n const {className, url, title, theme, children, hideIcon, face, wrapContent} = props;\n\n if (!url) {\n return null;\n }\n\n const icon = hideIcon ? null : <Icon awesome=\"chart-bar\" face={face} />;\n const content = children ? (\n <React.Fragment>\n {icon}\n {children}\n </React.Fragment>\n ) : (\n icon\n );\n\n return (\n <Link className={className} target=\"_blank\" theme={theme} url={url} title={title ?? 'View'}>\n {wrapContent ? wrapContent(content) : content}\n </Link>\n );\n}\n\nexport default React.memo(ChartLink);\n","import React, {Component} from 'react';\nimport block from 'bem-cn-lite';\n\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\n\nimport './CollapsibleSection.scss';\nimport Icon from '../../components/Icon/Icon';\n\nconst b = block('collapsible-section');\nconst headingCN = block('elements-heading');\n\ntype PropsStateLess = CollapsibleSectionProps & {\n onToggle: Required<CollapsibleSectionProps>['onToggle'];\n};\n\nexport class CollapsibleSectionStateLess extends Component<PropsStateLess> {\n static defaultProps = {\n size: 'm',\n collapsed: false,\n marginDirection: 'top',\n };\n\n toggle = () => {\n const {onToggle} = this.props;\n\n onToggle(!this.props.collapsed);\n };\n\n render() {\n const {\n name,\n children,\n size,\n overview,\n className,\n collapsed,\n marginDirection,\n togglerRightPadding,\n } = this.props;\n\n return (\n <ErrorBoundary>\n <div className={b({margin: marginDirection}, className)}>\n <div className={headingCN({size, overview: 'yes'})}>\n <span\n className={headingCN(\n 'heading',\n {\n clickable: 'yes',\n },\n b('title'),\n )}\n onClick={this.toggle}\n >\n {name}\n <a>\n <Icon\n className={b('toggler', {'right-padding': togglerRightPadding})}\n awesome={collapsed ? 'angle-down' : 'angle-up'}\n />\n </a>\n </span>\n {overview}\n </div>\n\n {!collapsed && <ErrorBoundary>{children}</ErrorBoundary>}\n </div>\n </ErrorBoundary>\n );\n }\n}\n\nexport interface CollapsibleSectionProps {\n className?: string;\n name: React.ReactNode;\n collapsed?: boolean;\n onToggle?: (value: boolean) => void;\n\n size?: 'unset' | 'xs' | 's' | 'ss' | 'ns' | 'n' | 'm' | 'l';\n children?: React.ReactNode;\n overview?: React.ReactNode;\n\n marginDirection?: 'top' | 'bottom';\n\n togglerRightPadding?: 'small';\n}\n\nexport default function CollapsibleSection(props: CollapsibleSectionProps) {\n const {onToggle} = props;\n const [collapsed, setCollapsed] = React.useState(props.collapsed);\n\n const onChange = React.useCallback(\n (value: boolean) => {\n setCollapsed(value);\n if (onToggle) {\n onToggle(value);\n }\n },\n [setCollapsed, onToggle],\n );\n\n return <CollapsibleSectionStateLess {...props} onToggle={onChange} collapsed={collapsed} />;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport format from '../../common/hammer/format';\nimport Icon from '../../components/Icon/Icon';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {OrderType, nextSortOrderValue} from '../../utils/sort-helpers';\n\nimport './SortIcon.scss';\n\nconst block = cn('sort-icon');\n\nconst ICON_BY_TYPE = {\n ['']: 'sort',\n asc: 'sort-up',\n desc: 'sort-down',\n 'asc-undefined': 'arrow-to-bottom',\n 'desc-undefined': 'arrow-from-bottom',\n 'undefined-asc': 'arrow-from-top',\n 'undefined-desc': 'arrow-to-top',\n} as const;\n\ninterface Props {\n className?: string;\n label?: string;\n onChange?: (nextOrder: OrderType) => void;\n order?: OrderType;\n hidden?: boolean;\n allowUnordered?: boolean;\n withUndefined?: boolean;\n}\n\nexport default class SortIcon extends React.Component<Props> {\n onClick = () => {\n const {order, onChange, allowUnordered, withUndefined} = this.props;\n if (!onChange) {\n return;\n }\n\n const nextOrder = nextSortOrderValue(order, allowUnordered, withUndefined);\n onChange(nextOrder);\n };\n\n render() {\n const {className, label, order, hidden} = this.props;\n const icon = ICON_BY_TYPE[order || ''];\n\n return (\n <span className={block({hidden}, className)} onClick={this.onClick}>\n {label && <span className={block('label')}>{label}</span>}\n <Tooltip\n className={block('icon')}\n content={order ? format.ReadableField(order) : 'Unordered'}\n >\n <Icon awesome={icon} face=\"solid\" />\n </Tooltip>\n </span>\n );\n }\n}\n","import React from 'react';\nimport unipika from '../../common/thor/unipika';\nimport block from 'bem-cn-lite';\n\nimport Link from '../../components/Link/Link';\n\nimport hammer from '../../common/hammer';\nimport {showErrorPopup} from '../../utils/utils';\n\nimport './utils.scss';\n\nfunction wrapRenderMethods(templates) {\n return Object.keys(templates).reduce((newTemplates, key) => {\n newTemplates[key] = templates[key];\n\n return newTemplates;\n }, {});\n}\n\n/**\n * Template must be a scoped function, because they are bound to elements-table component instance\n * @param {ViewModel} item\n * @param {String} columnName\n */\nfunction defaultTemplate(item, columnName) {\n return String(hammer.format['ValueOrDefault'](item[columnName]));\n}\n\nfunction prepareTextProps(text, asHTML) {\n const props = {};\n\n if (asHTML) {\n // Need to render html strings\n props.dangerouslySetInnerHTML = {__html: text};\n } else {\n props.children = unipika.decode(String(text));\n }\n\n return props;\n}\n\nexport function renderText(text, settings = {}) {\n let className = block('elements-text');\n\n if (settings.mix) {\n className = className(\n false,\n block(settings.mix.block)(settings.mix.elem, {\n ...settings.mix.mods,\n }),\n );\n } else {\n className = className();\n }\n\n const textProps = prepareTextProps(text, settings.asHTML);\n\n const title = settings.title || text;\n\n return <span {...textProps} title={title} className={className} />;\n}\n\nexport function printColumnAsBytes(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Bytes'](column.get(item));\n}\n\nexport function printColumnAsNumber(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Number'](column.get(item));\n}\n\nexport function printColumnAsTimeDurationWithMs(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['TimeDuration'](column.get(item), {\n format: 'milliseconds',\n });\n}\n\nexport function printColumnAsReadableField(item, columnName) {\n const column = this.getColumn(columnName);\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['ReadableField'](column.get(item))}\n </span>\n );\n}\n\nexport function printColumnAsTime(item, columnName) {\n const value = this?.getColumn ? this.getColumn(columnName).get(item) : item[columnName];\n return <ColumnAsTime value={value} />;\n}\n\nexport function ColumnAsTime({value}) {\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['DateTime'](value, {format: 'full'})}\n </span>\n );\n}\n\nexport function printColumnAsError(error) {\n const showError = () => {\n showErrorPopup(error, {hideOopsMsg: true});\n };\n return typeof error === 'object' ? (\n <Link theme=\"ghost\" onClick={showError}>\n View\n </Link>\n ) : (\n hammer.format.NO_VALUE\n );\n}\n\n// Using prepared table data\nexport function asBytes(item, columnName) {\n return hammer.format['Bytes'](item[columnName]);\n}\n\nexport function asNumber(item, columnName) {\n return hammer.format['Number'](item[columnName]);\n}\n\nexport default {\n __default__: defaultTemplate,\n _templates: {},\n add: function (templateId, templates) {\n this._templates[templateId] = wrapRenderMethods(templates);\n },\n get: function (templateId) {\n return this._templates[templateId] || {};\n },\n};\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport format from '../../../common/hammer/format';\nimport Label, {LabelTheme} from '../../../components/Label/Label';\nimport StatusBlock from '../../../components/StatusBlock/StatusBlock';\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\nimport {Tooltip} from '../../../components/Tooltip/Tooltip';\nimport {ClickableText} from '../../../components/ClickableText/ClickableText';\n\nimport './NodeColumns.scss';\n\nconst block = cn('yt-node-columns');\n\nconst ROLE_THEME = {\n default: 'default',\n control: 'default',\n data: 'default',\n} as const;\n\nconst STATE_THEME: Record<string, LabelTheme> = {\n online: 'success',\n offline: 'danger',\n} as const;\n\nexport function NodeColumnState({state}: {state: 'online' | 'offline' | string}) {\n const text = format.FirstUppercase(state);\n const theme = STATE_THEME[state] ?? 'default';\n\n return <Label theme={theme} className={block('state')} type=\"text\" text={text} />;\n}\n\nexport function NodeColumnBanned({banned}: {banned: boolean}) {\n return banned ? <StatusBlock text=\"B\" theme=\"banned\" /> : format.NO_VALUE;\n}\n\nexport function NodeColumnRole({role}: {role: 'default' | 'control' | 'data'}) {\n const theme = ROLE_THEME[role] || 'info';\n const text = format.Address(role);\n\n return <Label theme={theme} type=\"text\" text={text} />;\n}\n\nexport function NodeColumnText({text}: {text: string}) {\n return (\n <div className={block('text', 'elements-column_with-hover-button')}>\n <div className={block('text-content')} title={text}>\n {text}\n </div>\n <ClipboardButton text={text} view=\"flat-secondary\" size=\"s\" />\n </div>\n );\n}\n\nexport function ClickableId({\n text,\n onClick,\n allowTooltip,\n format = (v) => v,\n}: {\n text: string;\n onClick?: () => void;\n allowTooltip?: boolean;\n format?: (v: string) => string;\n}) {\n return (\n <div className=\"elements-column_type_id elements-column_with-hover-button\">\n <ClickableText\n color=\"primary\"\n onClick={() => onClick?.()}\n className={'elements-monospace elements-ellipsis'}\n >\n <Tooltip\n className={block('clickable-column-tooltip')}\n content={allowTooltip ? format(text) : null}\n >\n {format(text)}\n </Tooltip>\n </ClickableText>\n \n <ClipboardButton text={text} view=\"flat-secondary\" size=\"s\" />\n </div>\n );\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {Progress} from '@gravity-ui/uikit';\n\nimport withVisible from '../../../../../hocs/withVisible';\nimport hammer from '../../../../../common/hammer';\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\n\nimport './MemoryProgress.scss';\n\nconst block = cn('nodes-memory');\n\nclass MemoryProgress extends Component {\n static propTypes = {\n // from parent\n memoryText: PropTypes.string.isRequired,\n memoryData: PropTypes.arrayOf(\n PropTypes.shape({\n color: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n value: PropTypes.number.isRequired,\n rawData: PropTypes.shape({\n limit: PropTypes.number,\n used: PropTypes.number,\n }),\n }),\n ).isRequired,\n };\n\n progress = React.createRef();\n\n renderProgress() {\n const {memoryText, memoryData} = this.props;\n\n return <Progress stack={memoryData} text={memoryText} />;\n }\n\n renderItem(category) {\n const rawDataUsed = category.rawData?.used;\n const rawDataLimit = category.rawData?.limit;\n const rawDataLimitIsNumber = typeof rawDataLimit === 'number';\n\n return (\n <li key={category.name} className={block('category')}>\n <div className={block('category-legend')}>\n <div\n className={block('category-legend-color')}\n style={{backgroundColor: category.color}}\n />\n <strong className={block('category-legend-title')}>\n {hammer.format['ReadableField'](category.name)}\n </strong>\n </div>\n <div className={block('category-data')}>\n <span>{hammer.format['Bytes'](rawDataUsed)}</span>\n {rawDataLimitIsNumber && ' / '}\n {rawDataLimitIsNumber && <span>{hammer.format['Bytes'](rawDataLimit)}</span>}\n </div>\n </li>\n );\n }\n\n renderPopupContent() {\n const {memoryData} = this.props;\n\n return (\n memoryData.length > 0 && (\n <div className={block('popup')}>\n <ul className={block('content')}>\n {map_(memoryData, (category) => this.renderItem(category))}\n </ul>\n </div>\n )\n );\n }\n\n render() {\n return (\n <Tooltip className={block()} content={this.renderPopupContent()} disableInline>\n <div>{this.renderProgress()}</div>\n </Tooltip>\n );\n }\n}\n\nexport default withVisible(MemoryProgress);\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport SimpleModal from '../../../../components/Modal/SimpleModal';\nimport Error from '../../../../components/Error/Error';\nimport Icon from '../../../../components/Icon/Icon';\nimport Link from '../../../../components/Link/Link';\n\nimport withVisible from '../../../../hocs/withVisible';\n\nconst block = cn('elements-column');\n\nclass Version extends Component {\n static propTypes = {\n // from parent component\n version: PropTypes.string.isRequired,\n error: PropTypes.object,\n\n // from hoc\n visible: PropTypes.bool.isRequired,\n handleClose: PropTypes.func.isRequired,\n handleShow: PropTypes.func.isRequired,\n };\n\n renderVersion() {\n const {version} = this.props;\n\n return (\n <div className={block({type: 'id', 'with-hover-button': true})} title={version}>\n <span className=\"elements-monospace elements-ellipsis\">{version}</span>\n \n <ClipboardButton\n text={version}\n view=\"flat-secondary\"\n size=\"s\"\n title={'Copy ' + version}\n />\n </div>\n );\n }\n\n renderErrorVersion() {\n const {handleShow, error, handleClose, visible} = this.props;\n\n return (\n <div className=\"elements-monospace elements-ellipsis\">\n <Icon awesome=\"exclamation-triangle\" /> Error  \n <Link theme=\"ghost\" onClick={handleShow}>\n View\n </Link>\n <SimpleModal visible={visible} onCancel={handleClose} onOutsideClick={handleClose}>\n <Error error={error} />\n </SimpleModal>\n </div>\n );\n }\n\n render() {\n const {error} = this.props;\n\n return error ? this.renderErrorVersion() : this.renderVersion();\n }\n}\n\nexport default withVisible(Version);\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';\nimport ChartLink from '../../../../../components/ChartLink/ChartLink';\n\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {showNodeMaintenance} from '../../../../../store/actions/components/node-maintenance-modal';\n\nimport UIFactory from '../../../../../UIFactory';\nimport {RootState} from '../../../../../store/reducers';\n\nexport type NodeActionsProps = {node: {host: string}} & ConnectedProps<typeof connector>;\n\nclass NodeActions extends React.Component<NodeActionsProps> {\n handleEditClick = () => {\n const {node, showNodeMaintenance} = this.props;\n\n showNodeMaintenance({\n address: node.host,\n component: 'cluster_node',\n });\n };\n\n render() {\n const {node, cluster} = this.props;\n const {url, title} = UIFactory.getComponentsNodeDashboardUrl({cluster, host: node.host});\n\n return (\n <React.Fragment>\n <ClickableAttributesButton\n title={node.host}\n path={`//sys/cluster_nodes/${node.host}`}\n withTooltip\n />\n\n <ChartLink\n url={url}\n wrapContent={(node) => (\n <Button\n tooltipProps={{\n placement: 'bottom',\n content: title,\n }}\n target=\"_blank\"\n view=\"flat-secondary\"\n size=\"m\"\n withTooltip\n >\n {node}\n </Button>\n )}\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 mapStateToProps = (state: RootState) => {\n return {\n cluster: getCluster(state),\n };\n};\n\nconst mapDispatchToProps = {\n showNodeMaintenance,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(NodeActions);\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {COMPONENTS_NODES_TABLE_ID} from '../../../../../constants/components/nodes/nodes';\nimport ColumnHeader, {\n ColumnHeaderProps,\n HasSortColumn,\n} from '../../../../../components/ColumnHeader/ColumnHeader';\nimport {toggleColumnSortOrder} from '../../../../../store/actions/tables';\nimport {getTables} from '../../../../../store/selectors/tables';\nimport {NodesTableColumnNames} from '../../../../../pages/components/tabs/nodes/tables';\nimport {oldSortStateToOrderType} from '../../../../../utils/sort-helpers';\n\nexport function NodesColumnHeader(\n props: HasSortColumn<NodesTableColumnNames> & Pick<ColumnHeaderProps, 'align'>,\n) {\n const dispatch = useDispatch();\n const sortState = useSelector(getTables)[COMPONENTS_NODES_TABLE_ID];\n const order = oldSortStateToOrderType(sortState);\n\n const column = props.options?.find(({column}) => sortState.field === column);\n\n return (\n <ColumnHeader\n {...props}\n column={props.options ? column?.column ?? props.column : props.column}\n order={column ? order : undefined}\n onSort={(columnName) => {\n const colInfo = props.options?.find(({column}) => columnName === column);\n dispatch(\n toggleColumnSortOrder({\n columnName,\n withUndefined: colInfo?.withUndefined,\n allowUnordered: colInfo?.allowUnordered,\n tableId: COMPONENTS_NODES_TABLE_ID,\n }),\n );\n }}\n />\n );\n}\n","import React from 'react';\n\nimport keys_ from 'lodash/keys';\nimport map_ from 'lodash/map';\nimport merge_ from 'lodash/merge';\nimport reduce_ from 'lodash/reduce';\nimport sortBy_ from 'lodash/sortBy';\n\nimport cn from 'bem-cn-lite';\n\nimport {Progress} from '@gravity-ui/uikit';\n\nimport {COMPONENTS_NODES_TABLE_ID} from '../../../../constants/components/nodes/nodes';\nimport {DESC_ASC_UNORDERED, compareArraysBySizeThenByItems} from '../../../../utils/sort-helpers';\n\nimport Version from '../../../../pages/components/tabs/nodes/Version';\nimport StatusBlock, {StatusBlockTheme} from '../../../../components/StatusBlock/StatusBlock';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport NodeActions from '../../../../pages/components/tabs/nodes/NodeActions/NodeActions';\nimport MemoryProgress from '../../../../pages/components/tabs/nodes/MemoryProgress/MemoryProgress';\nimport {Host} from '../../../../containers/Host/Host';\n\nimport hammer from '../../../../common/hammer';\nimport {TABLET_SLOTS, renderLabel} from '../../../../components/templates/components/nodes/nodes';\nimport type {Node, TabletSlotState} from '../../../../store/reducers/components/nodes/nodes/node';\nimport type {FIX_MY_TYPE} from '../../../../types';\nimport {NodeColumnBanned, NodeColumnState} from '../../../../pages/components/tabs/NodeColumns';\nimport {NodesColumnHeader} from '../../../../pages/components/tabs/nodes/Nodes/NodesColumnHeader';\nimport {ColumnInfo} from '../../../../components/ElementsTable/ElementsTableHeader';\nimport {progressText} from '../../../../utils/progress';\n\nimport './tables.scss';\n\nconst block = cn('components-nodes-templates');\n\nexport const PropertiesByColumn = {\n __default__: ['IOWeight'],\n actions: ['host'],\n alert_count: ['alertCount'],\n banned: ['banned'],\n chunks: ['chunks'],\n cpu: ['cpuProgress', 'cpuText'],\n cpu_limit: ['cpu'],\n cpu_usage: ['cpu'],\n data_center: ['dataCenter'],\n decommissioned: ['decommissioned'],\n elections: ['tabletSlots'],\n elections_chaos: ['chaosSlots'],\n follower_recovery: ['tabletSlots'],\n follower_recovery_chaos: ['chaosSlots'],\n following: ['tabletSlots'],\n following_chaos: ['chaosSlots'],\n full: ['full'],\n gpu: ['gpu'],\n gpu_usage: ['gpu'],\n gpu_limit: ['gpu'],\n host: ['cluster', 'host'],\n io_weight: ['IOWeight'],\n last_seen: ['lastSeenTime'],\n leader_recovery: ['tabletSlots'],\n leader_recovery_chaos: ['chaosSlots'],\n leading: ['tabletSlots'],\n leading_chaos: ['chaosSlots'],\n locations: ['locations', 'enabledLocations'],\n memory_total: ['memoryProgress', 'memoryTotalText'],\n memory: ['memoryData', 'memoryProgress', 'memoryText'],\n memory_limit: ['memoryTotal'],\n memory_usage: ['memoryTotal'],\n network: ['networkProgress', 'networkText'],\n network_usage: ['network'],\n network_limit: ['network'],\n none: ['tabletSlots'],\n none_chaos: ['chaosSlots'],\n physical_host: ['physicalHost'],\n flavors: ['flavors'],\n rack: ['rack'],\n removal_slots: ['removalSlots', 'removalSlotsProgress'],\n removal_slots_usage: ['removalSlots'],\n removal_slots_limit: ['removalSlots'],\n repair_slots: ['repairSlots', 'repairSlotsProgress'],\n repair_slots_usage: ['repairSlots'],\n repair_slots_limit: ['repairSlots'],\n replication_slots: ['replicationSlots', 'replicationSlotsProgress'],\n replication_slots_usage: ['replicationSlots'],\n replication_slots_limit: ['replicationSlots'],\n scheduler_jobs: ['disableJobs'],\n seal_slots: ['sealSlots', 'sealSlotsProgress'],\n seal_slots_usage: ['sealSlots'],\n seal_slots_limit: ['sealSlots'],\n sessions: ['sessions'],\n space_limit: ['spaceTotal'],\n space_usage: ['spaceUsed'],\n space: ['spaceProgress', 'spaceText'],\n state: ['state'],\n stopped: ['tabletSlots'],\n stopped_chaos: ['chaosSlots'],\n system_tags: ['systemTags'],\n tablet_cells: ['disableTabletCells'],\n tablet_memory_dynamic: ['tabletDynamicMemory'],\n tablet_memory_dynamic_usage: ['tabletDynamicMemory'],\n tablet_memory_dynamic_limit: ['tabletDynamicMemory'],\n tablet_memory_static: ['tabletStaticMemory'],\n tablet_memory_static_usage: ['tabletStaticMemory'],\n tablet_memory_static_limit: ['tabletStaticMemory'],\n tablet_memory: ['tabletStaticMemory', 'tabletDynamicMemory'],\n tablet_slots: ['tabletSlots'],\n user_slots: ['userSlots', 'userSlotsProgress'],\n user_slots_usage: ['userSlots'],\n user_slots_limit: ['userSlots'],\n user_tags: ['userTags'],\n version: ['version'],\n write_sessions: ['disableWriteSession'],\n} as const;\n\nexport type NodesTableColumnNames = keyof typeof PropertiesByColumn;\n\nexport type NodeWithProps<T extends keyof typeof PropertiesByColumn> = Pick<\n Node & {cluster: string},\n (typeof PropertiesByColumn)[T][number]\n>;\n\ntype ItemDef<P extends keyof typeof PropertiesByColumn> = {\n align?: 'left' | 'center' | 'right';\n get?: (node: NodeWithProps<P>) => void;\n sort?: ((node: NodeWithProps<P>) => void) | boolean;\n};\n\ntype Items = {\n [P in keyof typeof PropertiesByColumn]?: ItemDef<P> & {\n group?: boolean;\n items?: Record<string, ItemDef<P>>;\n set?: string[];\n };\n};\n\nconst ioWeight: NonNullable<Items['io_weight']> = {\n group: true,\n items: {\n default: {\n get(node) {\n return node.IOWeight.default;\n },\n sort: true,\n align: 'center',\n },\n cache: {\n get(node) {\n return node.IOWeight.cache;\n },\n sort: true,\n align: 'center',\n },\n ssd_blobs: {\n get(node) {\n return node.IOWeight.ssd_blobs;\n },\n sort: true,\n align: 'center',\n },\n ssd_journals: {\n get(node) {\n return node.IOWeight.ssd_journals;\n },\n sort: true,\n align: 'center',\n },\n },\n set: ['default', 'ssd_blobs', 'ssd_journals'],\n};\n\nconst nodesTableProps = {\n size: 's',\n virtual: true,\n virtualType: 'simple',\n theme: 'light',\n cssHover: true,\n striped: false,\n tableId: COMPONENTS_NODES_TABLE_ID,\n computeKey(node: NodeWithProps<'host'>) {\n return node.host;\n },\n columns: {\n items: {\n host: {\n get(node) {\n return node.host;\n },\n sort: true,\n align: 'left',\n },\n physical_host: {\n get(node) {\n return node.physicalHost;\n },\n sort: true,\n align: 'left',\n },\n flavors: {\n get(node) {\n return node.flavors;\n },\n sort: true,\n compareFn: compareArraysBySizeThenByItems,\n align: 'left',\n },\n state: {\n get(node) {\n return node.state;\n },\n sort: true,\n align: 'center',\n },\n data_center: {\n get(node) {\n return node.dataCenter;\n },\n sort: true,\n caption: 'DC',\n align: 'left',\n tooltipProps: {placement: 'bottom', content: 'Data Center'},\n },\n rack: {\n get(node) {\n return hammer.format['RackToVector'](node.rack);\n },\n sort: true,\n align: 'left',\n },\n user_tags: {\n get(node) {\n return node.userTags || -1;\n },\n sort(node) {\n return !node.userTags?.length ? undefined : node.userTags;\n },\n compareFn: compareArraysBySizeThenByItems,\n align: 'left',\n },\n system_tags: {\n get(node) {\n return node.systemTags || -1;\n },\n sort(node) {\n return node.systemTags || [];\n },\n compareFn: compareArraysBySizeThenByItems,\n align: 'left',\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 allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n decommissioned: {\n get(item) {\n return item.decommissioned;\n },\n align: 'center',\n sort: true,\n caption: 'D',\n tooltipProps: {\n placement: 'bottom',\n content: 'Decommissioned',\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n full: {\n get(item) {\n return item.full;\n },\n align: 'center',\n sort: true,\n caption: 'F',\n tooltipProps: {placement: 'bottom', content: 'Full'},\n },\n alert_count: {\n get(item) {\n return item.alertCount;\n },\n sort(item) {\n return item.alertCount;\n },\n align: 'center',\n caption: 'A',\n tooltipProps: {placement: 'bottom', content: 'Alerts'},\n },\n scheduler_jobs: {\n get(node) {\n return node.disableJobs;\n },\n sort: true,\n align: 'left',\n },\n write_sessions: {\n get(node) {\n return node.disableWriteSession;\n },\n sort: true,\n align: 'left',\n },\n tablet_cells: {\n get(node) {\n return node.disableTabletCells;\n },\n sort: true,\n align: 'left',\n },\n version: {\n get(node) {\n return node.version;\n },\n sort: true,\n align: 'left',\n },\n last_seen: {\n get(node) {\n return node.lastSeenTime;\n },\n sort: true,\n align: 'left',\n },\n space: {\n get(node) {\n return node.spaceProgress;\n },\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"space\"\n title=\"Space\"\n options={[\n {\n column: 'space',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'space_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'space_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\n ]}\n />\n );\n },\n sortWithUndefined: true,\n align: 'center',\n },\n space_limit: {\n get(node) {\n return node.spaceTotal;\n },\n sort: true,\n sortWithUndefined: true,\n align: 'right',\n },\n space_usage: {\n get(node) {\n return node.spaceUsed;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n locations: {\n get(node) {\n return [\n node.locations && node.locations.length,\n node.locations && node.enabledLocations.length,\n ];\n },\n sort: true,\n align: 'center',\n },\n chunks: {\n get(node) {\n return node.chunks;\n },\n sort: true,\n sortWithUndefined: true,\n align: 'left',\n },\n sessions: {\n get(node) {\n return node.sessions;\n },\n sort: true,\n sortWithUndefined: true,\n align: 'left',\n },\n cpu: {\n get(node) {\n return node.cpuProgress;\n },\n sortWithUndefined: true,\n align: 'center',\n renderHeader: ({align}: ColumnInfo) => {\n return (\n <NodesColumnHeader\n align={align}\n column=\"cpu\"\n options={[\n {\n column: 'cpu',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'cpu_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'cpu_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\n ]}\n title=\"CPU\"\n />\n );\n },\n },\n cpu_limit: {\n get(node) {\n return node.cpu?.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n cpu_usage: {\n get(node) {\n return node.cpu?.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n gpu: {\n get(node) {\n return node.gpu?.progress;\n },\n sortWithUndefined: true,\n align: 'center',\n renderHeader: ({align}: ColumnInfo) => {\n return (\n <NodesColumnHeader\n align={align}\n column=\"gpu\"\n options={[\n {\n column: 'gpu',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'gpu_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'gpu_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\n ]}\n title=\"GPU\"\n />\n );\n },\n },\n gpu_limit: {\n get(node) {\n return node.gpu?.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n gpu_usage: {\n get(node) {\n return node.gpu?.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n memory: {\n get(node) {\n return node.memoryProgress;\n },\n sortWithUndefined: true,\n renderHeader: ({align}: ColumnInfo) => {\n return (\n <NodesColumnHeader\n align={align}\n column=\"memory\"\n title=\"Memory\"\n options={[\n {\n column: 'memory',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'memory_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'memory_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n memory_usage: {\n get(node) {\n return node.memoryTotal.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n memory_limit: {\n get(node) {\n return node.memoryTotal.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n memory_total: {\n get(node) {\n return node.memoryProgress;\n },\n sort: true,\n align: 'center',\n },\n network: {\n get(node) {\n return node.networkProgress;\n },\n sortWithUndefined: true,\n renderHeader: ({align}: ColumnInfo) => {\n return (\n <NodesColumnHeader\n align={align}\n column=\"network\"\n title=\"Network\"\n options={[\n {\n column: 'network',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'network_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'network_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n network_usage: {\n get(node) {\n return node.network.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n network_limit: {\n get(node) {\n return node.network.limit;\n },\n sortWithUndefined: true,\n hiddne: true,\n },\n repair_slots: {\n get(node) {\n return node.repairSlotsProgress;\n },\n sortWithUndefined: true,\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"repair_slots\"\n title=\"Repair slots\"\n options={[\n {\n column: 'repair_slots',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'repair_slots_usage',\n title: 'Usage',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'repair_slots_limit',\n title: 'Limit',\n withUndefined: true,\n allowUnordered: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n repair_slots_usage: {\n get(node) {\n return node.repairSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n repair_slots_limit: {\n get(node) {\n return node.repairSlots.limits;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n removal_slots: {\n get(node) {\n return node.removalSlotsProgress;\n },\n sortWithUndefined: true,\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"removal_slots\"\n title=\"Removal slots\"\n options={[\n {\n column: 'removal_slots',\n title: 'Progress',\n withUndefined: true,\n allowUnordered: true,\n },\n {\n column: 'removal_slots_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'removal_slots_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n removal_slots_usage: {\n get(node) {\n return node.removalSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n removal_slots_limit: {\n get(node) {\n return node.removalSlots.limits;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n replication_slots: {\n get(node) {\n return node.replicationSlotsProgress;\n },\n sortWithUndefined: true,\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"replication_slots\"\n title=\"Replication slots\"\n options={[\n {\n column: 'replication_slots',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'replication_slots_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'replication_slots_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n replication_slots_usage: {\n get(node) {\n return node.replicationSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n replication_slots_limit: {\n get(node) {\n return node.replicationSlots.limits;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n seal_slots: {\n get(node) {\n return node.sealSlotsProgress;\n },\n sortWithUndefined: true,\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"seal_slots\"\n title=\"Seal slots\"\n options={[\n {\n column: 'seal_slots',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'seal_slots_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'seal_slots_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n seal_slots_usage: {\n get(node) {\n return node.sealSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n seal_slots_limit: {\n get(node) {\n return node.sealSlots.limits;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n user_slots: {\n get(node) {\n return node.userSlotsProgress;\n },\n renderHeader({align}: ColumnInfo) {\n return (\n <NodesColumnHeader\n align={align}\n column=\"user_slots\"\n title=\"User slots\"\n options={[\n {\n column: 'user_slots',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'user_slots_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'user_slots_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n align: 'center',\n },\n user_slots_usage: {\n get(node) {\n return node.userSlots.usage;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n user_slots_limit: {\n get(node) {\n return node.userSlots.limits;\n },\n align: 'center',\n sortWithUndefined: true,\n hidden: true,\n },\n tablet_slots: {\n get(node) {\n if (node.tabletSlots && node.tabletSlots.raw && node.tabletSlots.raw.length) {\n return reduce_(\n node.tabletSlots.raw,\n (sum, slot) => (slot.state === 'none' ? sum : sum + 1),\n 0,\n );\n }\n\n return -1;\n },\n sort: true,\n align: 'left',\n },\n none: {\n get(node) {\n return node.tabletSlots?.byState.none;\n },\n sort(node) {\n return node.tabletSlots?.byState.none?.length;\n },\n // sort: true,\n align: 'center',\n ...makeCaptionProps('TS None', 'Tablet Slots None'),\n },\n none_chaos: {\n get(node) {\n return node.chaosSlots?.byState.none;\n },\n sort(node) {\n return node.chaosSlots?.byState.none?.length;\n },\n // sort: true,\n align: 'center',\n ...makeCaptionProps('CS None', 'Chaos Slots None'),\n },\n leading: {\n get(node) {\n return node.tabletSlots?.byState.leading;\n },\n sort(node) {\n return node.tabletSlots?.byState?.leading?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS Leading', 'Tablet Slots Leading'),\n },\n leading_chaos: {\n get(node) {\n return node.chaosSlots?.byState.leading;\n },\n sort(node) {\n return node.chaosSlots?.byState?.leading?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS Leading', 'Chaos Slots Leading'),\n },\n following: {\n get(node) {\n return node.tabletSlots?.byState.following;\n },\n sort(node) {\n return node.tabletSlots?.byState?.following?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS Following', 'Tablet Slots Following'),\n },\n following_chaos: {\n get(node) {\n return node.chaosSlots?.byState.following;\n },\n sort(node) {\n return node.chaosSlots?.byState?.following?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS Following', 'Chaos Slots Following'),\n },\n follower_recovery: {\n get(node) {\n return node.tabletSlots?.byState.follower_recovery;\n },\n sort(node) {\n return node.tabletSlots?.byState.follower_recovery?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS FR', 'Tablet Slots Follower Recovery'),\n },\n follower_recovery_chaos: {\n get(node) {\n return node.chaosSlots?.byState.follower_recovery;\n },\n sort(node) {\n return node.chaosSlots?.byState.follower_recovery?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS FR', 'Chaos Slots Follower Recovery'),\n },\n leader_recovery: {\n get(node) {\n return node.tabletSlots?.byState['leader_recovery'];\n },\n sort: true,\n align: 'center',\n ...makeCaptionProps('TS LR', 'Tablet Slots Leader Recovery'),\n },\n leader_recovery_chaos: {\n get(node) {\n return node.chaosSlots?.byState['leader_recovery'];\n },\n sort: true,\n align: 'center',\n ...makeCaptionProps('CS LR', 'Chaos Slots Leader Recovery'),\n },\n stopped: {\n get(node) {\n return node.tabletSlots?.byState.stopped;\n },\n sort(node) {\n return node.tabletSlots?.byState.stopped?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS Stopped', 'Tablet Slots Stopped'),\n },\n stopped_chaos: {\n get(node) {\n return node.chaosSlots?.byState.stopped;\n },\n sort(node) {\n return node.chaosSlots?.byState.stopped?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS Stopped', 'Chaos Slots Stopped'),\n },\n elections: {\n get(node) {\n return node.tabletSlots?.byState.elections;\n },\n sort(node) {\n return node.tabletSlots?.byState.elections?.length;\n },\n align: 'center',\n ...makeCaptionProps('TS Elections', 'Tablet Slots Elections'),\n },\n elections_chaos: {\n get(node) {\n return node.chaosSlots?.byState.elections;\n },\n sort(node) {\n return node.chaosSlots?.byState.elections?.length;\n },\n align: 'center',\n ...makeCaptionProps('CS Elections', 'Chaos Slots Elections'),\n },\n tablet_memory: {\n group: true,\n items: {\n static: {\n get(node) {\n return node.tabletStaticMemory.progress;\n },\n renderHeader: (column: ColumnInfo) => {\n return (\n <NodesColumnHeader\n column=\"tablet_memory_static\"\n align={column.align}\n title=\"Static memory\"\n options={[\n {\n column: 'tablet_memory_static',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'tablet_memory_static_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'tablet_memory_static_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n sortWithUndefined: true,\n align: 'center',\n },\n static_usage: {\n get(node) {\n return node.tabletStaticMemory.used;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n static_limit: {\n get(node) {\n return node.tabletStaticMemory.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n dynamic: {\n get(node) {\n return node.tabletDynamicMemory.progress;\n },\n renderHeader: (column: ColumnInfo) => {\n return (\n <NodesColumnHeader\n column=\"tablet_memory_dynamic\"\n align={column.align}\n title=\"Dynamic memory\"\n options={[\n {\n column: 'tablet_memory_dynamic',\n title: 'Progress',\n withUndefined: true,\n },\n {\n column: 'tablet_memory_dynamic_usage',\n title: 'Usage',\n withUndefined: true,\n },\n {\n column: 'tablet_memory_dynamic_limit',\n title: 'Limit',\n withUndefined: true,\n },\n ]}\n />\n );\n },\n sortWithUndefined: true,\n align: 'center',\n },\n dynamic_usage: {\n get(node) {\n return node.tabletDynamicMemory.used;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n dynamic_limit: {\n get(node) {\n return node.tabletDynamicMemory.limit;\n },\n sortWithUndefined: true,\n hidden: true,\n },\n },\n set: ['static', 'dynamic'],\n },\n io_weight: ioWeight,\n actions: {\n get(node) {\n return node.host;\n },\n sort: false,\n caption: '',\n align: 'right',\n },\n } as Items,\n sets: {\n default: {\n items: [\n 'host',\n 'physical_host',\n 'user_tags',\n 'system_tags',\n 'state',\n 'data_center',\n 'rack',\n 'banned',\n 'decommissioned',\n 'full',\n 'alert_count',\n 'version',\n 'last_seen',\n 'actions',\n ],\n },\n storage: {\n items: ['host', 'space', 'sessions', 'chunks', 'io_weight', 'actions'],\n },\n cpu_and_memory: {\n items: ['host', 'cpu', 'memory', 'network', 'actions'],\n },\n resources: {\n items: [\n 'host',\n 'user_slots',\n 'seal_slots',\n 'repair_slots',\n 'removal_slots',\n 'replication_slots',\n 'actions',\n ],\n },\n tablets: {\n items: ['host', 'tablet_slots', 'tablet_memory', 'actions'],\n },\n tablet_slots: {\n items: [\n 'host',\n 'none',\n 'leading',\n 'following',\n 'follower_recovery',\n 'leader_recovery',\n 'stopped',\n 'elections',\n ],\n },\n chaos_slots: {\n items: [\n 'host',\n 'none_chaos',\n 'leading_chaos',\n 'following_chaos',\n 'follower_recovery_chaos',\n 'leader_recovery_chaos',\n 'stopped_chaos',\n 'elections_chaos',\n ],\n },\n custom: {\n items: [\n 'host',\n 'user_tags',\n 'state',\n 'banned',\n 'decommissioned',\n 'full',\n 'alert_count',\n 'last_seen',\n 'actions',\n ],\n },\n },\n },\n templates: {\n data: {\n onMemoryProgressMouseEnter() {},\n onMemoryProgressMouseLeave() {},\n },\n },\n};\n\nexport const defaultColumns = nodesTableProps.columns.sets.custom.items;\n\nfunction renderTags(tags?: Array<string | number>, themes?: StatusBlockTheme[], flexType?: 'flex') {\n return tags?.length ? (\n <TagsContainer flexType={flexType}>\n {map_(tags, (tag, index) => (\n <StatusBlock key={tag} theme={themes?.[index]} text={tag} />\n ))}\n </TagsContainer>\n ) : (\n hammer.format.NO_VALUE\n );\n}\n\nfunction TagsContainer({\n children,\n flexType = 'inline-flex',\n}: {\n children: React.ReactNode;\n flexType?: 'flex' | 'inline-flex';\n}) {\n return (\n <div className={block('tags-container', {inline: 'inline-flex' === flexType})}>\n {children}\n </div>\n );\n}\n\nconst IO_WEIGHT_PREFIX = 'io_weight_';\n\ntype Templates = {\n [P in keyof typeof PropertiesByColumn]?: (\n item: NodeWithProps<P>,\n columnName: string,\n ) => React.ReactNode;\n};\n\nexport const NODES_TABLE_TEMPLATES: Templates = {\n __default__(item, columnName) {\n if (typeof item.IOWeight === 'object' && columnName.startsWith(IO_WEIGHT_PREFIX)) {\n const mediumName = columnName.slice(IO_WEIGHT_PREFIX.length);\n\n return hammer.format['Number'](item.IOWeight[mediumName]);\n }\n },\n host(item) {\n return <Host address={item.host} />;\n },\n state(item) {\n return <NodeColumnState state={item.state} />;\n },\n banned(item) {\n return (\n <TagsContainer>\n <NodeColumnBanned banned={item.banned} />\n </TagsContainer>\n );\n },\n decommissioned(item) {\n return item.decommissioned ? renderTags(['D'], ['decommissioned']) : hammer.format.NO_VALUE;\n },\n flavors(item) {\n return renderTags(item.flavors);\n },\n full(item) {\n return item.full ? renderTags(['F'], ['full']) : hammer.format.NO_VALUE;\n },\n\n alert_count(item) {\n return item.alertCount! > 0\n ? renderTags([String(item.alertCount)], ['alerts'])\n : hammer.format.NO_VALUE;\n },\n\n physical_host(item, columnName) {\n return (\n <div\n className=\"elements-column_type_id elements-column_with-hover-button\"\n title={item.physicalHost}\n >\n <span className=\"elements-monospace elements-ellipsis\">\n {hammer.format['Address'](item.physicalHost)}\n </span>\n \n <ClipboardButton\n text={item.physicalHost}\n view=\"flat-secondary\"\n size=\"s\"\n title={'Copy ' + columnName}\n />\n </div>\n );\n },\n\n user_tags(item) {\n return renderTags(item.userTags, [], 'flex');\n },\n\n system_tags(item) {\n return renderTags(item.systemTags, [], 'flex');\n },\n\n scheduler_jobs(item) {\n return renderLabel(item.disableJobs);\n },\n write_sessions(item) {\n return renderLabel(item.disableWriteSession);\n },\n tablet_cells(item) {\n return renderLabel(item.disableTabletCells);\n },\n\n data_center(item) {\n return item.dataCenter?.toUpperCase() || hammer.format.NO_VALUE;\n },\n\n rack(item) {\n return <span className=\"elements-monospace\">{hammer.format['Address'](item.rack)}</span>;\n },\n\n version(item) {\n const {version} = item;\n\n return <Version version={version} />;\n },\n\n last_seen(item) {\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['DateTime'](item.lastSeenTime, {\n format: 'full',\n })}\n </span>\n );\n },\n\n actions(item) {\n return <NodeActions node={item} />;\n },\n\n space(item) {\n return <Progress value={item.spaceProgress || 0} text={item.spaceText} theme=\"success\" />;\n },\n\n space_limit(item) {\n return hammer.format['Bytes'](item.spaceTotal);\n },\n\n locations(item) {\n return item.locations\n ? progressText(item.enabledLocations.length, item.locations.length)\n : null;\n },\n\n sessions(item) {\n return hammer.format['Number'](item.sessions);\n },\n\n chunks(item) {\n return hammer.format['Number'](item.chunks);\n },\n\n io_weight(item) {\n return hammer.format['Number'](item.IOWeight);\n },\n\n cpu(item) {\n return <Progress value={item.cpuProgress || 0} text={item.cpuText} theme=\"success\" />;\n },\n\n gpu(item) {\n return (\n <Progress\n value={item.gpu?.progress || 0}\n text={item.gpu?.progressText}\n theme=\"success\"\n />\n );\n },\n\n memory(item) {\n return (\n <MemoryProgress\n memoryData={item.memoryData}\n memoryText={item.memoryText}\n memoryProgress={item.memoryProgress || 0}\n />\n );\n },\n\n memory_total(item) {\n return (\n <Progress\n value={item.memoryProgress || 0}\n text={item.memoryTotalText}\n theme=\"success\"\n />\n );\n },\n\n network(item) {\n return (\n <Progress value={item.networkProgress || 0} text={item.networkText} theme=\"success\" />\n );\n },\n\n repair_slots(item) {\n const text = progressText(item.repairSlots.usage, item.repairSlots.limits);\n\n return <Progress value={item.repairSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n removal_slots(item) {\n const text = progressText(item.removalSlots.usage, item.removalSlots.limits);\n\n return <Progress value={item.removalSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n replication_slots(item) {\n const text = progressText(item.replicationSlots.usage, item.replicationSlots.limits);\n\n return <Progress value={item.replicationSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n seal_slots(item) {\n const text = progressText(item.sealSlots.usage, item.sealSlots.limits);\n\n return <Progress value={item.sealSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n user_slots(item) {\n const text = progressText(item.userSlots.usage, item.userSlots.limits);\n\n return <Progress value={item.userSlotsProgress || 0} text={text} theme=\"success\" />;\n },\n\n tablet_slots(item) {\n if (item.tabletSlots) {\n const statuses = sortBy_(keys_(item.tabletSlots.byState));\n\n return (\n <TagsContainer>\n {map_(statuses, (state: TabletSlotState) => {\n const tabletSlots = item.tabletSlots.byState[state]!;\n const {text, theme} = TABLET_SLOTS[state];\n const label = `${text}: ${tabletSlots.length}`;\n\n return <StatusBlock theme={theme} text={label} key={state} />;\n })}\n </TagsContainer>\n );\n }\n\n return null;\n },\n\n none(item) {\n const data = item.tabletSlots?.byState.none;\n\n return data ? renderTags([data.length]) : hammer.format.NO_VALUE;\n },\n\n none_chaos(item) {\n const data = item.chaosSlots?.byState.none;\n\n return data ? renderTags([data.length]) : hammer.format.NO_VALUE;\n },\n\n leading(item) {\n const data = item.tabletSlots?.byState.leading;\n\n return data ? renderTags([data.length], ['success']) : hammer.format.NO_VALUE;\n },\n\n leading_chaos(item) {\n const data = item.chaosSlots?.byState.leading;\n\n return data ? renderTags([data.length], ['success']) : hammer.format.NO_VALUE;\n },\n\n following(item) {\n const data = item.tabletSlots?.byState.following;\n\n return data ? renderTags([data.length], ['info']) : hammer.format.NO_VALUE;\n },\n\n following_chaos(item) {\n const data = item.chaosSlots?.byState.following;\n\n return data ? renderTags([data.length], ['info']) : hammer.format.NO_VALUE;\n },\n\n follower_recovery(item) {\n const data = item.tabletSlots?.byState['follower_recovery'];\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n follower_recovery_chaos(item) {\n const data = item.chaosSlots?.byState['follower_recovery'];\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n leader_recovery(item) {\n const data = item.tabletSlots?.byState['leader_recovery'];\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n leader_recovery_chaos(item) {\n const data = item.chaosSlots?.byState['leader_recovery'];\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n stopped(item) {\n const data = item.tabletSlots?.byState.stopped;\n\n return data ? renderTags([data.length]) : hammer.format.NO_VALUE;\n },\n\n stopped_chaos(item) {\n const data = item.chaosSlots?.byState.stopped;\n\n return data ? renderTags([data.length]) : hammer.format.NO_VALUE;\n },\n\n elections(item) {\n const data = item.tabletSlots?.byState.elections;\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n elections_chaos(item) {\n const data = item.chaosSlots?.byState.elections;\n\n return data ? renderTags([data.length], ['warning']) : hammer.format.NO_VALUE;\n },\n\n tablet_memory_static(item) {\n const text = progressText(item.tabletStaticMemory.used, item.tabletStaticMemory.limit, {\n type: 'bytes',\n });\n\n return (\n <Progress value={item.tabletStaticMemory.progress || 0} text={text} theme=\"success\" />\n );\n },\n\n tablet_memory_dynamic(item) {\n const text = progressText(item.tabletDynamicMemory.used, item.tabletDynamicMemory.limit, {\n type: 'bytes',\n });\n\n return (\n <Progress value={item.tabletDynamicMemory.progress || 0} text={text} theme=\"success\" />\n );\n },\n};\n\nexport function getNodeTablesProps(mediumList: string[] = []) {\n if (!mediumList?.length) {\n return nodesTableProps;\n }\n const actions = nodesTableProps.columns.items.actions;\n const allMediums = reduce_(\n mediumList,\n (acc, key) => {\n acc[key] = {\n get(node: Node) {\n return node.IOWeight[key];\n },\n sort: true,\n align: 'center',\n };\n return acc;\n },\n {actions} as {actions: typeof actions} & Record<string, FIX_MY_TYPE>,\n );\n const res = merge_({}, nodesTableProps, {\n columns: {\n items: {\n io_weight: {\n items: {\n ...allMediums,\n },\n groupHeaderStyle: mediumList.length\n ? {width: 100 * mediumList.length}\n : undefined,\n },\n },\n },\n templates: NODES_TABLE_TEMPLATES,\n });\n res.columns!.items!.io_weight!.set = mediumList;\n return res;\n}\n\nfunction makeCaptionProps(columnName: string, title: string) {\n return {\n caption: columnName,\n tooltipProps: {\n placement: 'bottom',\n content: title,\n },\n };\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {Select} from '@gravity-ui/uikit';\n\nimport {NODE_TYPE_ITEMS} from '../../../constants/components/nodes/nodes';\nimport {getSystemNodesNodeTypesToLoad} from '../../../store/selectors/system/nodes';\nimport {setSysmetNodesNodeType} from '../../../store/actions/system/nodes-ts';\nimport {NODE_TYPE, NodeType} from '../../../../shared/constants/system';\nimport {getComponentsNodesNodeTypes} from '../../../store/selectors/components/nodes/nodes';\nimport {componentsNodesSetNodeTypes} from '../../../store/actions/components/nodes/nodes';\nimport {updateListWithAll} from '../../../utils';\n\ntype NodeTypeSelectorProps = {\n className?: string;\n value: Array<NodeType>;\n onUpdate: (value: NodeTypeSelectorProps['value']) => void;\n};\n\nexport function NodeTypeSelector(props: NodeTypeSelectorProps) {\n const {className, value, onUpdate} = props;\n return (\n <Select\n className={className}\n value={value}\n multiple\n options={NODE_TYPE_ITEMS}\n onUpdate={(newVal) => {\n const newValue = updateListWithAll(\n {value, newValue: newVal as NodeType[]},\n NODE_TYPE.ALL_NODES,\n );\n onUpdate(newValue);\n }}\n label={'Node type:'}\n />\n );\n}\n\nexport function SystemNodeTypeSelector() {\n const dispatch = useDispatch();\n const value = useSelector(getSystemNodesNodeTypesToLoad);\n return (\n <NodeTypeSelector\n value={value}\n onUpdate={(newValue) => {\n dispatch(setSysmetNodesNodeType(newValue));\n }}\n />\n );\n}\n\nexport function ComponentsNodeTypeSelector({className}: {className?: string}) {\n const dispatch = useDispatch();\n\n const value = useSelector(getComponentsNodesNodeTypes);\n return (\n <NodeTypeSelector\n className={className}\n value={value}\n onUpdate={(newValue) => dispatch(componentsNodesSetNodeTypes(newValue))}\n />\n );\n}\n","import {ThunkAction} from 'redux-thunk';\nimport {NodeType} from '../../../../shared/constants/system';\nimport {setSettingSystemNodesNodeType} from '../settings/settings';\nimport {RootState} from '../../../store/reducers';\n\nexport function setSysmetNodesNodeType(\n value: Array<NodeType>,\n): ThunkAction<void, RootState, unknown, any> {\n return (dispatch) => {\n dispatch(setSettingSystemNodesNodeType(value));\n };\n}\n","import type {ThunkAction} from 'redux-thunk';\nimport forEach_ from 'lodash/forEach';\n\nimport {RootState} from '../../../store/reducers';\nimport {\n NODE_MAINTENANCE_PARTIAL,\n NODE_MAINTENANCE_RESET,\n} from '../../../constants/components/node-maintenance-modal';\nimport {\n NodeMaintenanceAction,\n NodeMaintenanceState,\n NodeResourceLimits,\n} from '../../../store/reducers/components/node-maintenance-modal';\nimport {\n isAllowedMaintenanceApiNodes,\n isAllowedMaintenanceApiProxies,\n} from '../../../store/selectors/components/node-maintenance-modal';\nimport {wrapApiPromiseByToaster} from '../../../utils/utils';\nimport {YTApiId, ytApiV3Id} from '../../../rum/rum-wrap-api';\nimport {AddMaintenanceParams, BatchSubRequest} from '../../../../shared/yt-types';\nimport {updateComponentsNode} from './nodes/nodes';\nimport {getCurrentUserName} from '../../../store/selectors/global';\nimport {prepareSetCommandForBatch} from '../../../utils/cypress-attributes';\nimport {getProxies} from './proxies/proxies';\n\ntype NodeMaintenanceThunkAction<T = Promise<unknown>> = ThunkAction<\n T,\n RootState,\n unknown,\n NodeMaintenanceAction\n>;\n\nfunction makeNodePath(address: string, component: AddMaintenanceParams['component']) {\n switch (component) {\n case 'cluster_node':\n return `//sys/cluster_nodes/${address}`;\n case 'http_proxy':\n return `//sys/http_proxies/${address}`;\n case 'rpc_proxy':\n return `//sys/rpc_proxies/${address}`;\n default:\n throw new Error(`Unexpected component type: ${component}`);\n }\n}\n\nfunction makeObsoleteMaintenanceRequests(\n command: 'add_maintenance' | 'remove_maintenance',\n {\n address,\n type,\n comment: c,\n component,\n }: Pick<AddMaintenanceParams, 'address' | 'type' | 'comment' | 'component'>,\n): Array<BatchSubRequest> {\n const path = makeNodePath(address, component);\n const isAdd = command === 'add_maintenance';\n const comment = isAdd ? c : '';\n switch (type) {\n case 'ban': {\n const banned = command === 'add_maintenance';\n return [\n {command: 'set', parameters: {path: `${path}/@banned`}, input: banned},\n {command: 'set', parameters: {path: `${path}/@ban_message`}, input: comment},\n ];\n }\n case 'disable_scheduler_jobs':\n case 'disable_tablet_cells':\n case 'disable_write_sessions':\n return [{command: 'set', parameters: {path: `${path}/@${type}`}, input: isAdd}];\n case 'decommission':\n return [\n {command: 'set', parameters: {path: `${path}/@decommissioned`}, input: isAdd},\n {\n command: 'set',\n parameters: {path: `${path}/@decommission_message`},\n input: isAdd ? comment : '',\n },\n ];\n default:\n return [];\n }\n}\n\nexport function applyMaintenance(\n address: string,\n component: NodeMaintenanceState['component'],\n data: NodeMaintenanceState['maintenance'],\n resourceLimitsOverrides?: Partial<NodeResourceLimits>,\n role?: string,\n): NodeMaintenanceThunkAction {\n return (dispatch, getState) => {\n const requests: Array<BatchSubRequest> = [];\n\n const path = makeNodePath(address, component);\n\n if (role && (component === 'http_proxy' || component === 'rpc_proxy')) {\n requests.push(prepareSetCommandForBatch(`${path}/@role`, role));\n }\n\n forEach_(resourceLimitsOverrides, (value, key) => {\n requests.push(\n prepareSetCommandForBatch(\n `${path}/@resource_limits_overrides/${key}`,\n isNaN(value!)\n ? undefined\n : {$value: value, $type: key === 'cpu' ? 'double' : 'int64'},\n {\n input_format: {\n $value: 'json',\n $attributes: {annotate_with_types: true},\n },\n },\n ),\n );\n });\n\n forEach_(data, (item, t) => {\n const type = t as AddMaintenanceParams['type'];\n const command = item?.state ? 'add_maintenance' : 'remove_maintenance';\n const comment = item?.comment;\n\n if (!isMaintenanceApiAllowedForComponent(component, getState())) {\n requests.push(\n ...makeObsoleteMaintenanceRequests(command, {\n address,\n component,\n comment,\n type,\n }),\n );\n } else {\n requests.push({\n command,\n parameters: {\n component,\n address,\n type,\n mine: true,\n comment,\n },\n });\n }\n });\n\n const reloadNodeData = () => {\n switch (component) {\n case 'cluster_node':\n return dispatch(updateComponentsNode(address));\n case 'http_proxy':\n return dispatch(getProxies('http'));\n case 'rpc_proxy':\n return dispatch(getProxies('rpc'));\n }\n };\n\n return wrapApiPromiseByToaster(ytApiV3Id.executeBatch(YTApiId.addMaintenance, {requests}), {\n toasterName: 'edit_node_' + address,\n isBatch: true,\n skipSuccessToast: true,\n errorTitle: `Failed to modify ${address}`,\n })\n .then(reloadNodeData)\n .catch(reloadNodeData);\n };\n}\n\nexport function showNodeMaintenance(\n params: Pick<NodeMaintenanceState, 'address' | 'component'>,\n): NodeMaintenanceThunkAction {\n return async (dispatch) => {\n const data = await dispatch(loadNodeMaintenanceData(params));\n\n return dispatch({\n type: NODE_MAINTENANCE_PARTIAL,\n data: {...params, ...data},\n });\n };\n}\n\nexport type MaintenanceRequestInfo = {\n user: string;\n comment: string;\n timestamp: string;\n type: AddMaintenanceParams['type'];\n};\n\ntype MaintenanceDataResponse = {\n banned?: boolean;\n ban?: boolean;\n ban_message?: string;\n decommissioned?: boolean;\n decommission_message?: string;\n disable_scheduler_jobs?: boolean;\n disable_tablet_cells?: boolean;\n disable_write_sessions?: boolean;\n\n resource_limits?: NodeResourceLimits;\n resource_limits_overrides?: Partial<NodeResourceLimits>;\n\n maintenance_requests?: Record<string, MaintenanceRequestInfo>;\n\n role?: string;\n};\n\nexport function loadNodeMaintenanceData({\n address,\n component,\n}: Pick<NodeMaintenanceState, 'address' | 'component'>): NodeMaintenanceThunkAction<\n Promise<{\n maintenance: NodeMaintenanceState['maintenance'];\n resourceLimits?: NodeResourceLimits;\n resourceLimitsOverrides?: Partial<NodeResourceLimits>;\n }>\n> {\n return (_dispatch, getState) => {\n const state = getState();\n const user = getCurrentUserName(state);\n const path = makeNodePath(address, component) + '/@';\n\n const allowMaintenanceRequests = isMaintenanceApiAllowedForComponent(component, state);\n\n return wrapApiPromiseByToaster(\n ytApiV3Id.get(YTApiId.maintenanceRequests, {\n path,\n attributes: [\n 'resource_limits',\n 'resource_limits_overrides',\n ...(allowMaintenanceRequests\n ? ['maintenance_requests']\n : [\n 'ban_message',\n 'decommissioned',\n 'decommission_message',\n 'disable_scheduler_jobs',\n 'disable_tablet_cells',\n 'disable_write_sessions',\n ]),\n ...(component === 'http_proxy' || component === 'rpc_proxy'\n ? ['banned', 'role']\n : ['banned']),\n ],\n }),\n {\n toasterName: 'maintenance_attributes_request_' + path,\n skipSuccessToast: true,\n errorContent: `Cannot load node attributes for ${path}`,\n },\n ).then((data: MaintenanceDataResponse) => {\n const maintenance: NodeMaintenanceState['maintenance'] = {};\n if (allowMaintenanceRequests) {\n forEach_(data.maintenance_requests, (item) => {\n const dst =\n maintenance[item.type] ??\n (maintenance[item.type] = {comment: '', othersComment: '', state: ''});\n\n if (item.user === user) {\n dst.state = 'maintenance';\n if (dst.comment?.length) {\n dst.comment += '\\n';\n }\n dst.comment += item.comment;\n } else {\n dst.othersComment += `${item.timestamp} ${item.user}\\t${item.comment}`;\n }\n });\n } else {\n Object.assign(maintenance, {\n ban: {\n state: data.banned ? 'maintenance' : '',\n comment: data.ban_message,\n },\n decommission: {\n state: data.decommissioned ? 'maintenance' : '',\n comment: data.decommission_message,\n },\n disable_scheduler_jobs: {\n state: data.disable_scheduler_jobs ? 'maintenance' : '',\n },\n disable_tablet_cells: {state: data.disable_tablet_cells ? 'maintenance' : ''},\n disable_write_sessions: {\n state: data.disable_write_sessions ? 'maintenance' : '',\n },\n } as typeof maintenance);\n }\n return {\n maintenance,\n resourceLimits: data.resource_limits,\n resourceLimitsOverrides: data.resource_limits_overrides,\n role: data.role,\n };\n });\n };\n}\n\nexport function closeNodeMaintenanceModal(): NodeMaintenanceAction {\n return {type: NODE_MAINTENANCE_RESET};\n}\n\nfunction isMaintenanceApiAllowedForComponent(\n component: AddMaintenanceParams['component'],\n state: RootState,\n) {\n switch (component) {\n case 'cluster_node':\n return isAllowedMaintenanceApiNodes(state);\n case 'http_proxy':\n case 'rpc_proxy':\n return isAllowedMaintenanceApiProxies(state);\n default:\n return false;\n }\n}\n","// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport omit_ from 'lodash/omit';\nimport forEach_ from 'lodash/forEach';\nimport compact_ from 'lodash/compact';\nimport type {ThunkAction} from 'redux-thunk';\n\nimport ypath from '../../../../common/thor/ypath';\n\nimport {setSetting} from '../../../../store/actions/settings';\nimport {NAMESPACES, SettingName} from '../../../../../shared/constants/settings';\nimport {\n getRequiredAttributes,\n useRacksFromAttributes,\n useTagsFromAttributes,\n} from '../../../../store/selectors/components/nodes/nodes';\nimport {getTemplates} from '../../../../store/selectors/settings';\nimport type {RootState} from '../../../../store/reducers';\nimport {Node} from '../../../../store/reducers/components/nodes/nodes/node';\nimport type {\n NodesAction,\n NodesState,\n} from '../../../../store/reducers/components/nodes/nodes/nodes';\nimport type {NodesSetupState} from '../../../../store/reducers/components/nodes/setup/setup';\nimport {\n APPLY_SETUP,\n CHANGE_CONTENT_MODE,\n CHANGE_HOST_FILTER,\n CHANGE_NODE_TYPE,\n COMPONENTS_NODES_UPDATE_NODE,\n GET_NODES,\n GET_NODES_FILTER_OPTIONS,\n} from '../../../../constants/components/nodes/nodes';\nimport {USE_CACHE, USE_MAX_SIZE} from '../../../../../shared/constants/yt-api';\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport type {ActionD, FIX_MY_TYPE, PartialDeep} from '../../../../types';\nimport {prepareAttributes} from '../../../../utils/cypress-attributes';\nimport {splitBatchResults, wrapApiPromiseByToaster} from '../../../../utils/utils';\nimport {NodeType} from '../../../../../shared/constants/system';\nimport {BatchSubRequest} from '../../../../../shared/yt-types';\n\nconst {COMPONENTS} = NAMESPACES;\nconst {TEMPLATES} = SettingName.COMPONENTS;\n\nexport type NodesThunkAction = ThunkAction<void, RootState, unknown, NodesAction>;\n\nexport function changeContentMode(\n contentMode: NodesState['contentMode'],\n): ActionD<typeof CHANGE_CONTENT_MODE, Pick<NodesState, 'contentMode'>> {\n return {\n type: CHANGE_CONTENT_MODE,\n data: {contentMode},\n };\n}\n\nconst updateNodeCanceler = new CancelHelper();\n\nexport function getNodes({\n attributes,\n nodeTypes,\n}: {\n attributes: ReturnType<typeof getRequiredAttributes>;\n nodeTypes: Array<NodeType>;\n}): NodesThunkAction {\n return (dispatch) => {\n dispatch({type: GET_NODES.REQUEST});\n\n const preparedAttrs = prepareAttributes(attributes);\n const requests: Array<BatchSubRequest> = nodeTypes.map((type) => {\n return {\n command: 'list',\n parameters: {\n path: `//sys/${type}`,\n attributes: preparedAttrs,\n ...USE_CACHE,\n ...USE_MAX_SIZE,\n },\n };\n });\n\n return ytApiV3Id\n .executeBatch(YTApiId.componentsClusterNodes, {\n parameters: {requests},\n cancellation: updateNodeCanceler.removeAllAndSave,\n })\n .then((data) => {\n const {results, error} = splitBatchResults(data, 'Failed to get nodes');\n\n const outputs = results.map((output) => {\n return ypath.getValue(output) || [];\n });\n\n const nodes = [];\n\n const collectedItems = new Set<string>();\n\n for (const output of outputs) {\n for (const item of output) {\n const {$value: name} = item;\n if (!collectedItems.has(name)) {\n nodes.push(item);\n collectedItems.add(name);\n }\n }\n }\n\n dispatch({type: GET_NODES.SUCCESS, data: {nodes}});\n\n if (error) {\n throw error;\n }\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_NODES.CANCELLED});\n return;\n }\n dispatch({\n type: GET_NODES.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nexport function updateComponentsNode(host: string): NodesThunkAction {\n return (dispatch) => {\n return ytApiV3Id\n .get(YTApiId.componentsUpdateNodeData, {\n path: `//sys/cluster_nodes/${host}`,\n attributes: prepareAttributes(Node.ATTRIBUTES),\n })\n .then((node) => {\n dispatch({\n type: COMPONENTS_NODES_UPDATE_NODE,\n data: {node: {...node, $value: host}},\n });\n });\n };\n}\n\nexport function changeHostFilter(\n hostFilter: string,\n): ActionD<typeof CHANGE_HOST_FILTER, Pick<NodesState, 'hostFilter'>> {\n return {\n type: CHANGE_HOST_FILTER,\n data: {hostFilter: hostFilter.trim()},\n };\n}\n\nexport function componentsNodesSetNodeTypes(nodeTypes: Array<NodeType>): NodesThunkAction {\n return (dispatch) => {\n dispatch({\n type: CHANGE_NODE_TYPE,\n data: {nodeTypes},\n });\n };\n}\n\nexport function applyPreset(\n setup: PartialDeep<NodesSetupState>,\n): ActionD<typeof APPLY_SETUP, PartialDeep<NodesSetupState>> {\n return {\n type: APPLY_SETUP,\n data: setup,\n };\n}\n\nexport function savePreset(name: string, data: FIX_MY_TYPE): NodesThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const prevTemplates = getTemplates(state) || {};\n const templates = {\n ...prevTemplates,\n [name]: data,\n };\n\n dispatch(setSetting(TEMPLATES, COMPONENTS, templates));\n };\n}\n\nexport function removePreset(name: string): NodesThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const templates = omit_(getTemplates(state), name);\n\n dispatch(setSetting(TEMPLATES, COMPONENTS, templates));\n };\n}\n\nexport function handleColumnsChange(selectedColumns: string[]): NodesThunkAction {\n return async (dispatch) => {\n await dispatch(\n setSetting(\n SettingName.COMPONENTS.SELECTED_COLUMNS,\n NAMESPACES.COMPONENTS,\n selectedColumns,\n ),\n );\n };\n}\n\nexport function getComponentsNodesFilterOptions(): NodesThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n\n const attributes = compact_([\n !useTagsFromAttributes(state) && 'tags',\n !useRacksFromAttributes(state) && 'rack',\n ]);\n\n if (0 === attributes.length) {\n return;\n }\n\n dispatch({type: GET_NODES_FILTER_OPTIONS.REQUEST});\n\n wrapApiPromiseByToaster(\n ytApiV3Id.list(YTApiId.componentsClusterNodes, {\n path: '//sys/cluster_nodes',\n attributes,\n ...USE_CACHE,\n ...USE_MAX_SIZE,\n }),\n {\n toasterName: 'node filter options',\n errorTitle: `Failed to load node ${attributes.join(',')}`,\n skipSuccessToast: true,\n },\n )\n .then((nodes) => {\n const tags = new Set<string>();\n const racks = new Set<string>();\n forEach_(nodes, (item) => {\n const node = new Node(item);\n forEach_(node.tags, (tag) => {\n if (tag) {\n tags.add(tag);\n }\n });\n if (node.rack) {\n racks.add(node.rack);\n }\n });\n\n dispatch({\n type: GET_NODES_FILTER_OPTIONS.SUCCESS,\n data: {\n filterOptionsTags: [...tags].sort(),\n filterOptionsRacks: [...racks].sort(),\n },\n });\n })\n .catch((error) => {\n dispatch({\n type: GET_NODES_FILTER_OPTIONS.FAILURE,\n data: {error},\n });\n });\n };\n}\n","import ypath from '../../../../../common/thor/ypath';\n\nexport default class Proxy {\n constructor(data) {\n // data comes in format like in /hosts/all, not like //sys/http_proxies\n this.name = data.name;\n this.host = data.name;\n this.state = data.dead ? 'offline' : 'online';\n this.effectiveState = this.banned ? 'banned' : this.state;\n\n this.banned = ypath.getBoolean(data, '/banned') || false;\n this.banMessage = ypath.getValue(data, '/ban_message') || '';\n this.role = ypath.getValue(data, '/role');\n this.version = ypath.getValue(data, '/version');\n this.physicalHost = ypath.getValue(data, '/annotations/physical_host');\n this.liveness = ypath.getValue(data, '/liveness');\n\n this.loadAverage = ypath.getValue(this.liveness, '/load_average');\n this.updatedAt = ypath.getValue(this.liveness, '/updated_at');\n this.networkLoad = ypath.getValue(this.liveness, '/network_coef');\n }\n\n static ATTRIBUTES = ['ban_message', 'banned', 'liveness', 'role', 'version', 'annotations'];\n}\n","import map_ from 'lodash/map';\n\nimport axios from 'axios';\nimport ypath from '../../../../common/thor/ypath';\n\nimport Proxy from '../../../../store/reducers/components/proxies/proxies/proxy';\nimport {\n GET_PROXIES,\n PROXIES_CHANGE_FILTERS,\n PROXY_TYPE,\n} from '../../../../constants/components/proxies/proxies';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\n\nfunction getRpcProxies() {\n return (dispatch) => {\n return Promise.all([\n ytApiV3Id.list(YTApiId.componentsRpcProxies, {\n path: '//sys/rpc_proxies',\n attributes: Proxy.ATTRIBUTES,\n }),\n ytApiV3Id.get(YTApiId.componentGetRpcProxies, {path: '//sys/rpc_proxies'}),\n ])\n .then(([data, proxiesMap]) => {\n const proxies = map_(data, (proxyData) => {\n const name = ypath.getValue(proxyData);\n const role = ypath.getValue(proxyData, '/role') || 'default';\n const alive = Boolean(ypath.getValue(proxiesMap, `/${name}`).alive);\n const attributes = ypath.getAttributes(proxyData);\n const meta = {name, role, dead: !alive};\n\n return new Proxy({...meta, ...attributes});\n });\n\n dispatch({\n type: GET_PROXIES.SUCCESS,\n data: {proxies},\n });\n })\n .catch((error) => {\n dispatch({\n type: GET_PROXIES.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nfunction getHttpProxies() {\n return (dispatch, getState) => {\n const cluster = getCluster(getState());\n return Promise.all([\n axios.get(`/api/yt-proxy/${cluster}/hosts-all`),\n ytApiV3Id.get(YTApiId.systemProxies, {\n path: '//sys/http_proxies',\n attributes: Proxy.ATTRIBUTES,\n }),\n ])\n .then(([{data}, cypressData]) => {\n const proxies = map_(data, (proxyData) => {\n const cypressAttributes = ypath.getAttributes(\n ypath.getValue(cypressData)[proxyData.name],\n );\n\n return new Proxy({...proxyData, ...cypressAttributes});\n });\n\n dispatch({\n type: GET_PROXIES.SUCCESS,\n data: {proxies},\n });\n })\n .catch((error) => {\n dispatch({\n type: GET_PROXIES.FAILURE,\n data: {error},\n });\n });\n };\n}\n\n/**\n *\n * @param {'http' | 'rpc'} type\n * @returns\n */\nexport function getProxies(type) {\n return (dispatch) => {\n dispatch({type: GET_PROXIES.REQUEST});\n\n return dispatch(type === PROXY_TYPE.HTTP ? getHttpProxies() : getRpcProxies());\n };\n}\n\nexport function changeHostFilter(hostFilter) {\n return {\n type: PROXIES_CHANGE_FILTERS,\n data: {hostFilter},\n };\n}\n\nexport function changeStateFilter(stateFilter) {\n return {\n type: PROXIES_CHANGE_FILTERS,\n data: {stateFilter},\n };\n}\n\nexport function changeRoleFilter(roleFilter) {\n return {\n type: PROXIES_CHANGE_FILTERS,\n data: {roleFilter},\n };\n}\n\nexport function changeBannedFilter(bannedFilter) {\n return {type: PROXIES_CHANGE_FILTERS, data: {bannedFilter}};\n}\n\nexport function resetProxyState() {\n return (dispatch) => {\n dispatch({type: GET_PROXIES.CANCELLED});\n };\n}\n","import reduce_ from 'lodash/reduce';\nimport {createSelector} from 'reselect';\n\nimport {RootState} from '../../reducers';\nimport {getClusterUiConfig} from '../global';\nimport {isSupportedNodeMaintenanceApi} from '../thor/support';\nimport {NodeResourceLimits} from '../../../store/reducers/components/node-maintenance-modal';\n\nexport const getNodeMaintenanceModalState = (state: RootState) =>\n state.components.nodeMaintenanceModal;\n\nexport const getNodeMaintenanceModalInitialValues = createSelector(\n [getNodeMaintenanceModalState],\n ({maintenance, resourceLimitsOverrides, role}) => {\n return {\n ...maintenance,\n role: {role},\n limits: reduce_(\n resourceLimitsOverrides,\n (acc, value, k) => {\n const key = k as keyof typeof acc;\n acc[key] = {value};\n return acc;\n },\n {} as Partial<Record<keyof NodeResourceLimits, {value?: number}>>,\n ),\n };\n },\n);\n\nexport const isAllowedMaintenanceApiNodes = createSelector(\n [isSupportedNodeMaintenanceApi, getClusterUiConfig],\n (isSupported, uiConfig) => {\n return isSupported && Boolean(uiConfig.enable_maintenance_api_nodes);\n },\n);\n\nexport const isAllowedMaintenanceApiProxies = createSelector(\n [isSupportedNodeMaintenanceApi, getClusterUiConfig],\n (isSupported, uiConfig) => {\n return isSupported && Boolean(uiConfig.enable_maintenance_api_proxies);\n },\n);\n","import filter_ from 'lodash/filter';\nimport some_ from 'lodash/some';\nimport union_ from 'lodash/union';\n\nimport hammer from '../../../../../common/hammer';\nimport {createSelector} from 'reselect';\n\nimport {concatByAnd} from '../../../../../common/hammer/predicate';\nimport {COMPONENTS_NODES_TABLE_ID} from '../../../../../constants/components/nodes/nodes';\nimport {RootState} from '../../../../../store/reducers';\nimport {AttributesByProperty} from '../../../../../store/reducers/components/nodes/nodes/node';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {getSelectedColumns} from '../../../../../store/selectors/settings';\nimport {getMediumListNoCache} from '../../../../../store/selectors/thor';\nimport type {ValueOf} from '../../../../../types';\nimport {createMediumsPredicates} from '../../../../../utils/components/nodes/setup';\nimport {\n PropertiesByColumn,\n defaultColumns,\n getNodeTablesProps,\n} from '../../../../../pages/components/tabs/nodes/tables';\nimport {\n getComponentNodesFilterPredicates,\n getComponentNodesFilterStatePredicate,\n getComponentNodesFiltersSetup,\n getComponentNodesIndexByRack,\n getComponentNodesIndexByTag,\n getNodes,\n getPropertiesRequiredForFilters,\n} from './predicates';\nimport {NODE_TYPE, NodeType} from '../../../../../../shared/constants/system';\n\nconst getContentMode = (state: RootState) => state.components.nodes.nodes.contentMode;\nconst getHostFilter = (state: RootState) => state.components.nodes.nodes.hostFilter.toLowerCase();\nconst getSortState = (state: RootState) => state.tables[COMPONENTS_NODES_TABLE_ID];\nconst getComponentsNodesNodeTypeRaw = (state: RootState) => state.components.nodes.nodes.nodeTypes;\n\nconst getCustomColumns = (state: RootState) => getSelectedColumns(state) || defaultColumns;\n\nconst getMediumsPredicates = createSelector(\n [getComponentNodesFiltersSetup, getMediumListNoCache],\n createMediumsPredicates,\n);\n\nconst getPropertiesRequiredForMediums = createSelector(\n [getMediumsPredicates],\n (mediumsPredicates) => (mediumsPredicates.length > 0 ? (['IOWeight'] as const) : []),\n);\n\nconst getFilteredByHost = createSelector([getNodes, getHostFilter], (nodes, hostFilter) => {\n const hostFilters = hostFilter.split(/\\s+/);\n return filter_(nodes, (node) => {\n return some_(hostFilters, (hostFilter) => node?.host?.toLowerCase().startsWith(hostFilter));\n });\n});\n\nconst getFilteredNodes = createSelector(\n [getFilteredByHost, getComponentNodesFilterPredicates, getMediumsPredicates],\n (nodes, predicates, mediumsPredicates) => {\n const predicatesArray = predicates.concat(mediumsPredicates);\n if (!predicatesArray.length) {\n return nodes;\n }\n\n const predicate = concatByAnd(...predicatesArray);\n return filter_(nodes, (node) => {\n return predicate(node);\n });\n },\n);\n\nexport const getVisibleNodes = createSelector(\n [getFilteredNodes, getSortState, getMediumListNoCache, getCluster],\n (nodes, sortState, mediumList, cluster) => {\n return hammer.utils.sort(\n nodes.map((n) => ({...n, cluster})),\n sortState,\n getNodeTablesProps(mediumList).columns.items,\n ) as typeof nodes;\n },\n);\n\nexport const getComponentNodesTableProps = createSelector(\n [getMediumListNoCache],\n getNodeTablesProps,\n);\n\nconst getVisibleColumns = createSelector(\n [getComponentNodesTableProps, getContentMode, getCustomColumns],\n (nodesTableProps, contentMode, customColumns) =>\n contentMode === 'custom' ? customColumns : nodesTableProps.columns.sets[contentMode].items,\n);\n\nconst getPropertiesRequiredForRender = createSelector(\n [getVisibleColumns],\n (visibleColumns /* : Array<keyof typeof PropertiesByColumn> */) => {\n const requiredProperties = union_(\n ...visibleColumns.map(\n (x) => (PropertiesByColumn as any)[x] as ValueOf<typeof PropertiesByColumn>,\n ),\n );\n\n return requiredProperties;\n },\n);\n\nexport const getRequiredAttributes = createSelector(\n [\n getPropertiesRequiredForRender,\n getPropertiesRequiredForFilters,\n getPropertiesRequiredForMediums,\n ],\n (propertiesRequiredForRender, propertiesRequiredForFilters, propertiesRequiredForMediums) => {\n const allRequiredProperties = [\n ...propertiesRequiredForRender,\n ...propertiesRequiredForFilters,\n ...propertiesRequiredForMediums,\n ];\n\n const requiredAttributes = union_(\n ...allRequiredProperties.map(\n (x) => (AttributesByProperty as any)[x] as ValueOf<typeof AttributesByProperty>,\n ),\n );\n\n return requiredAttributes;\n },\n);\n\nexport const useTagsFromAttributes = createSelector([getRequiredAttributes], (attributes) => {\n return attributes.indexOf('tags') >= 0;\n});\n\nexport const useRacksFromAttributes = createSelector([getRequiredAttributes], (attributes) => {\n return attributes.indexOf('rack') >= 0;\n});\n\nconst getFetchedTags = (state: RootState): string[] =>\n state.components.nodes.nodes.filterOptionsTags;\nconst getFetchedRacks = (state: RootState): string[] =>\n state.components.nodes.nodes.filterOptionsRacks;\n\nexport const getComponentNodesTags = createSelector(\n [useTagsFromAttributes, getFetchedTags, getComponentNodesIndexByTag],\n (useFromAttrs, fetchedTags, nodesByTag) => {\n if (!useFromAttrs) {\n return fetchedTags;\n }\n\n return [...nodesByTag.keys()].sort();\n },\n);\n\nexport const getComponentNodesRacks = createSelector(\n [useRacksFromAttributes, getFetchedRacks, getComponentNodesIndexByRack],\n (useFromAttrs, fetchedRacks, nodesByRack) => {\n if (!useFromAttrs) {\n return fetchedRacks;\n }\n\n return [...nodesByRack.keys()].sort();\n },\n);\n\nexport const getComponentsNodesNodeTypes = createSelector(\n [getComponentsNodesNodeTypeRaw],\n (types) => {\n const res: Array<NodeType> = [...types];\n if (res.length === 0) {\n return [NODE_TYPE.ALL_NODES];\n }\n return res;\n },\n);\n\nexport const COMPONENTS_AVAILABLE_STATES = [\n 'all',\n 'being_disposed',\n 'online',\n 'offline',\n 'mixed',\n 'registered',\n 'unregistered',\n 'unknown',\n];\n\nexport const getComponentNodesFilterSetupStateValue = createSelector(\n [getComponentNodesFilterStatePredicate],\n (predicate) => {\n if (!predicate) {\n return ['all'];\n }\n\n return COMPONENTS_AVAILABLE_STATES.map((state) => ({state}))\n .filter(predicate)\n .map(({state}) => state);\n },\n);\n","import cloneDeep_ from 'lodash/cloneDeep';\nimport every_ from 'lodash/every';\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport merge_ from 'lodash/merge';\nimport pickBy_ from 'lodash/pickBy';\nimport reduce_ from 'lodash/reduce';\nimport some_ from 'lodash/some';\nimport values_ from 'lodash/values';\nimport union_ from 'lodash/union';\n\nimport {createSelector} from 'reselect';\n\nimport {Toaster} from '@gravity-ui/uikit';\n\nimport {UNAWARE} from '../../../../../constants';\nimport {\n FlagState,\n NodeRange,\n TagFilter,\n groupFilterInitialState,\n} from '../../../../../store/reducers/components/nodes/setup/setup';\nimport {MEDIUM_COLS_PREFIX} from '../../../../../constants/components/nodes/nodes';\nimport {getMediumListNoCache} from '../../../../../store/selectors/thor';\nimport type {ValueOf} from '../../../../../types';\nimport {Node} from '../../../../reducers/components/nodes/nodes/node';\nimport {isRangeFilterDefined} from '../../../../../utils/components/nodes/setup';\n\nimport {RootState} from '../../../../reducers';\n\nexport const getSetupFiltersRaw = (state: RootState) => state.components.nodes.setup;\n\nexport const getNodes = (state: RootState): Array<Node> => state.components.nodes.nodes.nodes;\n\nexport const getComponentNodesFilterStatePredicate = createSelector(\n [getSetupFiltersRaw],\n ({default: {state}}) => {\n if (!state.length || (state.length === 1 && state[0] === 'all')) {\n return undefined;\n }\n const excludes = reduce_(\n state,\n (acc, item) => {\n if (item[0] === '!') {\n acc.add(item.substring(1));\n }\n return acc;\n },\n new Set<string>(),\n );\n\n if (excludes.size) {\n if (excludes.size !== state.length) {\n new Toaster().add({\n name: 'component-nodes-excludes',\n theme: 'danger',\n autoHiding: false,\n title: 'Unexpected behavior',\n content:\n 'Components/Nodes: It is not allowed to have excludes and includes for \"state\" filter at the same time',\n });\n }\n\n excludes.add('all');\n\n return (node: {state: string}) => {\n return !excludes.has(node.state);\n };\n } else {\n const includes = new Set(state);\n return (node: {state: string}) => {\n return includes.has(node.state);\n };\n }\n },\n);\n\nexport const getComponentNodesFiltersSetup = createSelector(\n [getSetupFiltersRaw, getMediumListNoCache],\n (setup, mediumList) => {\n const mediumDefaults = reduce_(\n mediumList,\n (acc, medium) => {\n acc[MEDIUM_COLS_PREFIX + medium] = cloneDeep_(groupFilterInitialState);\n return acc;\n },\n {} as Record<string, NodeRange>,\n );\n return merge_({}, {storage: mediumDefaults}, setup);\n },\n);\n\nexport const getComponentNodesIndexByTag = createSelector([getNodes], (nodes) => {\n const res = reduce_(\n nodes,\n (acc, node) => {\n const {tags} = node;\n forEach_(tags, (tag) => {\n if (acc.has(tag)) {\n acc.get(tag)?.add(node);\n } else {\n acc.set(tag, new Set([node]));\n }\n });\n return acc;\n },\n new Map<string, Set<Node>>(),\n );\n return res;\n});\n\nexport const getComponentNodesIndexByRack = createSelector([getNodes], (nodes) => {\n return reduce_(\n nodes,\n (acc, node) => {\n const rack = node.rack ?? UNAWARE;\n if (!acc.has(rack)) {\n acc.set(rack, new Set([node]));\n } else {\n acc.get(rack)?.add(node);\n }\n return acc;\n },\n new Map<string, Set<Node>>(),\n );\n});\n\nconst PropertiesByPredicate = {\n physicalHost: ['physicalHost'],\n tags: ['tags'],\n state: ['state'],\n rack: ['rack'],\n banned: ['banned'],\n decommissioned: ['decommissioned'],\n full: ['full'],\n alertCount: ['alertCount'],\n disableJobs: ['disableJobs'],\n disableWriteSession: ['disableWriteSession'],\n disableTabletCells: ['disableTabletCells'],\n sessions: ['sessions'],\n chunks: ['chunks'],\n spaceUsed: ['spaceUsed'],\n spaceTotal: ['spaceTotal'],\n blobSession: ['memory'],\n blockCache: ['memory'],\n chunkBlockMeta: ['memory'],\n chunkMeta: ['memory'],\n footprint: ['memory'],\n query: ['memory'],\n systemJobs: ['memory'],\n versionedChunkMeta: ['memory'],\n tabletDynamicUsed: ['memory'],\n tabletDynamicTotal: ['memory'],\n tabletStaticUsed: ['memory'],\n tabletStaticTotal: ['memory'],\n userJobsUsed: ['memory'],\n userJobsTotal: ['memory'],\n userSlotsUsed: ['userSlots'],\n userSlotsTotal: ['userSlots'],\n sealSlotsUsed: ['sealSlots'],\n sealSlotsTotal: ['sealSlots'],\n repairSlotsUsed: ['repairSlots'],\n repairSlotsTotal: ['repairSlots'],\n removalSlotsUsed: ['removalSlots'],\n removalSlotsTotal: ['removalSlots'],\n replicationSlotsUsed: ['replicationSlots'],\n replicationSlotsTotal: ['replicationSlots'],\n all: ['tabletSlots'],\n none: ['tabletSlots'],\n leading: ['tabletSlots'],\n following: ['tabletSlots'],\n followerRecovery: ['tabletSlots'],\n leaderRecovery: ['tabletSlots'],\n stopped: ['tabletSlots'],\n elections: ['tabletSlots'],\n staticUsed: ['tabletStaticMemory'],\n staticTotal: ['tabletStaticMemory'],\n dynamicUsed: ['tabletDynamicMemory'],\n dynamicTotal: ['tabletDynamicMemory'],\n} as const;\n\ntype NodeWithProps<T extends keyof typeof PropertiesByPredicate> = Pick<\n Node,\n (typeof PropertiesByPredicate)[T][number]\n>;\n\ntype Predicates = {\n [P in keyof typeof PropertiesByPredicate]:\n | false\n | undefined\n | ((node: NodeWithProps<P>) => boolean);\n};\n\nconst getRackPredicate = createSelector(\n [getSetupFiltersRaw, getComponentNodesIndexByRack],\n (setupFilters, nodesByRack) => {\n const {rack} = setupFilters.default;\n if ('string' !== typeof rack && rack.selected?.[0] === UNAWARE) {\n return ({rack}: {rack?: string}) => rack === undefined;\n }\n return createNodeTagPredicate<'rack'>(setupFilters.default.rack, nodesByRack, (node) => [\n node.rack,\n ]);\n },\n);\n\nconst getFilterPredicatesObject = createSelector(\n [\n getSetupFiltersRaw,\n getComponentNodesIndexByTag,\n getRackPredicate,\n getComponentNodesFilterStatePredicate,\n ],\n (setupFilters, nodesByTags, rackPredicate, statePredicate) => {\n const predicates: Predicates = {\n // filter by default\n physicalHost:\n Boolean(setupFilters.default.physicalHost) &&\n ((node) => {\n return -1 !== node.physicalHost?.indexOf(setupFilters.default.physicalHost);\n }),\n tags: createNodeTagPredicate<'tags'>(\n setupFilters.default.tag,\n nodesByTags,\n (node) => node.tags,\n ),\n state: statePredicate,\n rack: rackPredicate,\n\n banned: createFlagPredicate('banned', setupFilters.default.banned),\n decommissioned: createFlagPredicate(\n 'decommissioned',\n setupFilters.default.decommissioned,\n ),\n full: createFlagPredicate('full', setupFilters.default.full),\n alertCount: createAlertsFlagPredicate(setupFilters.default.alertCount),\n\n disableJobs: createAttributeStatePredicate(\n 'disableJobs',\n setupFilters.default.schedulerJobs,\n ),\n disableWriteSession: createAttributeStatePredicate(\n 'disableWriteSession',\n setupFilters.default.writeSessions,\n ),\n disableTabletCells: createAttributeStatePredicate(\n 'disableTabletCells',\n setupFilters.default.tabletCells,\n ),\n\n // filter by storage\n sessions: createRangePredicate(\n setupFilters.storage.sessions,\n 'sessions',\n (node) => node,\n ),\n chunks: createRangePredicate(setupFilters.storage.chunks, 'chunks', (node) => node),\n spaceUsed: createRangePredicate(\n setupFilters.storage.spaceUsed,\n 'spaceUsed',\n (node) => node,\n ),\n spaceTotal: createRangePredicate(\n setupFilters.storage.spaceTotal,\n 'spaceTotal',\n (node) => node,\n ),\n\n // filter by cpu\n blobSession: createRangePredicate(\n setupFilters.cpu.blobSession,\n 'used',\n (node) => node.memory.blob_session,\n ),\n blockCache: createRangePredicate(\n setupFilters.cpu.blockCache,\n 'used',\n (node) => node.memory.block_cache,\n ),\n chunkBlockMeta: createRangePredicate(\n setupFilters.cpu.chunkBlockMeta,\n 'used',\n (node) => node.memory.chunk_block_meta,\n ),\n chunkMeta: createRangePredicate(\n setupFilters.cpu.chunkMeta,\n 'used',\n (node) => node.memory.chunk_meta,\n ),\n footprint: createRangePredicate(\n setupFilters.cpu.footprint,\n 'used',\n (node) => node.memory.footprint,\n ),\n query: createRangePredicate(\n setupFilters.cpu.query,\n 'used',\n (node) => node.memory.query,\n ),\n systemJobs: createRangePredicate(\n setupFilters.cpu.systemJobs,\n 'used',\n (node) => node.memory.system_jobs,\n ),\n versionedChunkMeta: createRangePredicate(\n setupFilters.cpu.versionedChunkMeta,\n 'used',\n (node) => node.memory.versioned_chunk_meta,\n ),\n\n tabletDynamicUsed: createRangePredicate(\n setupFilters.cpu.tabletDynamicUsed,\n 'used',\n (node) => node.memory.tablet_dynamic,\n ),\n tabletDynamicTotal: createRangePredicate(\n setupFilters.cpu.tabletDynamicTotal,\n 'limit',\n (node) => node.memory.tablet_dynamic,\n ),\n\n tabletStaticUsed: createRangePredicate(\n setupFilters.cpu.tabletStaticUsed,\n 'used',\n (node) => node.memory.tablet_static,\n ),\n tabletStaticTotal: createRangePredicate(\n setupFilters.cpu.tabletStaticTotal,\n 'limit',\n (node) => node.memory.tablet_static,\n ),\n\n userJobsUsed: createRangePredicate(\n setupFilters.cpu.userJobsUsed,\n 'used',\n (node) => node.memory.user_jobs,\n ),\n userJobsTotal: createRangePredicate(\n setupFilters.cpu.userJobsTotal,\n 'limit',\n (node) => node.memory.user_jobs,\n ),\n\n // filter by resources\n userSlotsUsed: createRangePredicate(\n setupFilters.resources.userSlotsUsed,\n 'usage',\n (node) => node.userSlots,\n ),\n userSlotsTotal: createRangePredicate(\n setupFilters.resources.userSlotsTotal,\n 'limits',\n (node) => node.userSlots,\n ),\n sealSlotsUsed: createRangePredicate(\n setupFilters.resources.sealSlotsUsed,\n 'usage',\n (node) => node.sealSlots,\n ),\n sealSlotsTotal: createRangePredicate(\n setupFilters.resources.sealSlotsTotal,\n 'limits',\n (node) => node.sealSlots,\n ),\n repairSlotsUsed: createRangePredicate(\n setupFilters.resources.repairSlotsUsed,\n 'usage',\n (node) => node.repairSlots,\n ),\n repairSlotsTotal: createRangePredicate(\n setupFilters.resources.repairSlotsTotal,\n 'limits',\n (node) => node.repairSlots,\n ),\n removalSlotsUsed: createRangePredicate(\n setupFilters.resources.removalSlotsUsed,\n 'usage',\n (node) => node.removalSlots,\n ),\n removalSlotsTotal: createRangePredicate(\n setupFilters.resources.removalSlotsTotal,\n 'limits',\n (node) => node.removalSlots,\n ),\n replicationSlotsUsed: createRangePredicate(\n setupFilters.resources.replicationSlotsUsed,\n 'usage',\n (node) => node.replicationSlots,\n ),\n replicationSlotsTotal: createRangePredicate(\n setupFilters.resources.replicationSlotsTotal,\n 'limits',\n (node) => node.replicationSlots,\n ),\n\n // filter by tablets\n all: createRangePredicate(\n setupFilters.tablets.all,\n 'all',\n (node) => node.tabletSlots,\n true,\n ),\n none: createRangePredicate(\n setupFilters.tablets.none,\n 'none',\n (node) => node.tabletSlots.byState,\n true,\n ),\n leading: createRangePredicate(\n setupFilters.tablets.leading,\n 'leading',\n (node) => node.tabletSlots.byState,\n true,\n ),\n following: createRangePredicate(\n setupFilters.tablets.following,\n 'following',\n (node) => node.tabletSlots.byState,\n true,\n ),\n followerRecovery: createRangePredicate(\n setupFilters.tablets.followerRecovery,\n 'follower_recovery',\n (node) => node.tabletSlots.byState,\n true,\n ),\n leaderRecovery: createRangePredicate(\n setupFilters.tablets.leaderRecovery,\n 'leader_recovery',\n (node) => node.tabletSlots.byState,\n true,\n ),\n stopped: createRangePredicate(\n setupFilters.tablets.stopped,\n 'stopped',\n (node) => node.tabletSlots.byState,\n true,\n ),\n elections: createRangePredicate(\n setupFilters.tablets.elections,\n 'elections',\n (node) => node.tabletSlots.byState,\n true,\n ),\n\n staticUsed: createRangePredicate(\n setupFilters.tablets.staticUsed,\n 'used',\n (node) => node.tabletStaticMemory,\n ),\n staticTotal: createRangePredicate(\n setupFilters.tablets.staticTotal,\n 'limit',\n (node) => node.tabletStaticMemory,\n ),\n dynamicUsed: createRangePredicate(\n setupFilters.tablets.dynamicUsed,\n 'used',\n (node) => node.tabletDynamicMemory,\n ),\n dynamicTotal: createRangePredicate(\n setupFilters.tablets.dynamicTotal,\n 'limit',\n (node) => node.tabletDynamicMemory,\n ),\n };\n return predicates;\n },\n);\n\nexport const getComponentNodesFiltersCount = createSelector(\n [getFilterPredicatesObject],\n (filters) => {\n return reduce_(\n filters,\n (acc, predicate) => {\n return predicate ? acc + 1 : acc;\n },\n 0,\n );\n },\n);\n\nexport const getComponentNodesFilterPredicates = createSelector(\n [getFilterPredicatesObject],\n (filterPredicatesObject) => {\n return filter_(filterPredicatesObject, (p) => p) as Array<(node: Node) => boolean>;\n },\n);\n\nexport const getPropertiesRequiredForFilters = createSelector(\n [getFilterPredicatesObject],\n (filterPredicatesObject) => {\n const picked = values_(\n pickBy_(\n PropertiesByPredicate,\n (_value, key) => filterPredicatesObject[key as keyof typeof PropertiesByPredicate],\n ),\n ) as any;\n\n return union_(...picked) as Array<ValueOf<typeof PropertiesByPredicate>[number]>;\n },\n);\n\nfunction createNodeTagPredicate<K extends keyof typeof PropertiesByPredicate>(\n tagFilter: string | TagFilter,\n nodesByTags: Map<string, Set<NodeWithProps<K>>>,\n getTags: (node: NodeWithProps<K>) => Array<string>,\n): undefined | ((node: NodeWithProps<K>) => boolean) {\n if (!tagFilter) {\n return undefined;\n }\n\n if (typeof tagFilter === 'string') {\n return (node) => {\n return some_(\n getTags(node),\n (item) => -1 !== item?.toLowerCase().indexOf(tagFilter.toLowerCase()),\n );\n };\n }\n\n const {mode, useRegexp, filter, selected} = tagFilter;\n\n const selectedItems = selected || [];\n\n switch (mode) {\n case 'union': {\n if (!selected?.length) {\n return undefined;\n }\n return (node) => {\n return some_(selectedItems, (tagName) => {\n return nodesByTags.get(tagName)?.has(node);\n });\n };\n }\n case 'intersection': {\n if (!selected?.length) {\n return undefined;\n }\n return (node) => {\n return every_(selectedItems, (tagName) => {\n return nodesByTags.get(tagName)?.has(node);\n });\n };\n }\n default: {\n if (!filter) {\n return undefined;\n }\n if (!useRegexp) {\n return createNodeTagPredicate(filter, new Map(), getTags);\n }\n try {\n const re = new RegExp(filter);\n return (node) => {\n return some_(getTags(node), (tag) => re.test(tag));\n };\n } catch (e) {\n return () => false;\n }\n }\n }\n}\n\nfunction createFlagPredicate<T extends keyof typeof PropertiesByPredicate>(\n key: (typeof PropertiesByPredicate)[T][number],\n flag: FlagState,\n) {\n if (!flag || flag === 'all') {\n return undefined;\n }\n\n return (node: NodeWithProps<T>) => {\n return flag === 'disabled' ? !node[key] : Boolean(node[key]);\n };\n}\n\nfunction createAttributeStatePredicate<T extends keyof typeof PropertiesByPredicate>(\n key: (typeof PropertiesByPredicate)[T][number],\n value: FlagState,\n) {\n if (value === 'all') {\n return undefined;\n }\n\n return (node: NodeWithProps<T>) => {\n return value === 'disabled' ? Boolean(node[key]) : !node[key];\n };\n}\n\nfunction createAlertsFlagPredicate(flag: FlagState) {\n if (!flag || flag === 'all') {\n return undefined;\n }\n\n return (node: Pick<Node, 'alertCount'>) => {\n if (flag === 'disabled') {\n return node.alertCount === 0;\n }\n\n return node.alertCount! > 0;\n };\n}\n\nfunction createRangePredicate<T extends keyof typeof PropertiesByPredicate, U>(\n range: NodeRange,\n key: keyof U,\n get: (node: NodeWithProps<T>) => U,\n asArray?: boolean,\n) {\n if (!isRangeFilterDefined(range)) {\n return undefined;\n }\n\n const {from, to} = range;\n\n return (node: NodeWithProps<T>) => {\n const value: any = get(node)[key];\n\n const nodeValue = asArray ? value.length : value;\n\n return (\n nodeValue >= (from.value === null ? -Infinity : from.value) &&\n nodeValue <= (to.value === null ? Infinity : to.value)\n );\n };\n}\n","import {createSelector} from 'reselect';\n\nimport {getSettingSystemNodesNodeType} from '../../../store/selectors/settings-ts';\nimport {NODE_TYPE} from '../../../../shared/constants/system';\n\nexport const getSystemNodesNodeTypesToLoad = createSelector(\n [getSettingSystemNodesNodeType],\n (nodeTypes) => {\n const valueSet = new Set(nodeTypes);\n if (valueSet.has(NODE_TYPE.ALL_NODES)) {\n return [NODE_TYPE.ALL_NODES];\n }\n\n return [...valueSet.values()];\n },\n);\n","import {RootState} from '../../store/reducers';\nimport {initialState} from '../../store/reducers/tables';\n\nexport const getTables = (state: RootState) => state.tables || initialState;\n","import filter_ from 'lodash/filter';\nimport {createSelector} from 'reselect';\n\nimport hammer from '../../../common/hammer';\nimport {MediumType} from '../../../constants/index';\nexport {isSupportedSelector} from './support';\n\nexport const getMediumList = createSelector(\n (state) => state.global.mediumList,\n (data) => hammer.utils.sortInPredefinedOrder([MediumType.DEFAULT], [...data]),\n);\n\nexport const getMediumListNoCache = createSelector([getMediumList], (mediums) =>\n filter_(mediums, (item) => item !== 'cache'),\n);\n\nexport const getCurrentCluster = (state) => state.global.cluster;\n","import {createSelector} from 'reselect';\nimport map_ from 'lodash/map';\nimport isEmpty_ from 'lodash/isEmpty';\nimport every_ from 'lodash/every';\n\n// @ts-ignore\nimport hammer from '@ytsaurus/interface-helpers/lib/hammer';\n\nimport {RootState} from '../../../store/reducers';\n\nexport const _LOCAL_ARCADIA_VERSION = '(development)';\n\nfunction versionToArray(version: string, build?: string) {\n const VERSION_DELIMITER = '.';\n const VERSION_CHUNK_COUNT = 3;\n const VERSION_CHUNK_PLACEHOLDER = 0;\n\n const versionArray: Array<string | number> = map_(\n version.split(VERSION_DELIMITER),\n (subversion) => {\n return parseInt(subversion, 10);\n },\n );\n\n while (versionArray.length < VERSION_CHUNK_COUNT) {\n versionArray.push(VERSION_CHUNK_PLACEHOLDER);\n }\n\n if (build) {\n versionArray.push(build);\n }\n\n return versionArray;\n}\n\n/**\n * Returns true if versionA >= versionB and comparator === 'greater'\n * Returns true if versionA < versionB and comparator === 'smaller'\n * @param {String} comparator - 'greater', 'smaller'\n * @param {String} versionA\n * @param {String} versionB\n * @returns {boolean}\n */\nexport function _compareVersions(\n comparator: 'greater' | 'smaller',\n versionA: string,\n versionB: string,\n) {\n if (versionA === versionB) {\n return comparator === 'greater';\n }\n\n return comparator === 'greater'\n ? hammer.utils.compareVectors(versionToArray(versionA), versionToArray(versionB)) >= 0\n : hammer.utils.compareVectors(versionToArray(versionA), versionToArray(versionB)) < 0;\n}\n\n/**\n * Determines wheter a given version belongs to a versionInterval [a, b)\n * Left end included, right end excluded (intuitive limitations - features are supported starting from a specific build)\n * @param {String} version\n * @param {String|Object} versionInterval\n * @returns {boolean}\n */\nexport function _versionInInterval(\n version: string,\n versionInterval: MajorMinorPatch | MajorMinorPatchRange | typeof _LOCAL_ARCADIA_VERSION,\n) {\n let supported;\n\n if (typeof versionInterval === 'object') {\n supported = Object.keys(versionInterval).every((comparator) => {\n if (!(comparator === 'greater' || comparator === 'smaller')) {\n throw new Error(\n 'thor.support: feature description has unknown comparator \"' +\n comparator +\n '\",' +\n ' cannot check support.',\n );\n }\n const key = comparator as keyof typeof versionInterval;\n return _compareVersions(comparator, version, versionInterval[key]!);\n });\n } else {\n supported = _compareVersions('greater', version, versionInterval);\n }\n\n return supported;\n}\n\nfunction getVersionAndBuild(version?: string): [string, string | undefined] | undefined {\n const parsedVersion = version?.match(/(\\d+)\\.(\\d+)\\.(\\d+)/);\n let parsedBuild;\n\n if (parsedVersion) {\n const majorMinorPatch = parsedVersion[0];\n parsedBuild = version?.substring(parsedVersion.length);\n\n return [majorMinorPatch, parsedBuild];\n }\n return undefined;\n}\n\nconst getRawProxyVersion = (state: RootState) => state.global.version;\nconst getRawSchedulerVersion = (state: RootState) => state.global.schedulerVersion;\nconst getRawMasterVersion = (state: RootState) => state.global.masterVersion;\n\ntype MajorMinorPatch = `${number}.${number}.${number}`;\ntype MajorMinorPatchRange = {greater?: MajorMinorPatch; smaller?: MajorMinorPatch};\n\nexport type RawVersion = `${MajorMinorPatch}-${string}`;\n\nexport type Versions<T> = {proxy?: T | typeof _LOCAL_ARCADIA_VERSION; scheduler?: T; master?: T};\n\ntype FeatureVersions = Versions<MajorMinorPatch | Array<MajorMinorPatchRange>>;\ntype RawFeatureVersions = Versions<RawVersion>;\n\nconst FEATURES = {\n fieldsFilter: {\n scheduler: '22.1.9091155',\n } as FeatureVersions,\n effectiveExpiration: {\n master: '23.1.11146445',\n } as FeatureVersions,\n clusterNodeVersion: {\n proxy: '23.2.0',\n } as FeatureVersions,\n nodeMaintenanceApi: {\n proxy: '23.1.11106567',\n } as FeatureVersions,\n schedulingChildrenByPool: {\n scheduler: '23.1.11146742',\n } as FeatureVersions,\n};\n\nexport function _isFeatureSupported<T extends Record<string, FeatureVersions>>(\n rawVersions: RawFeatureVersions,\n features: T,\n) {\n return (featureName: keyof T) => {\n function failFeature(message: string) {\n console.warn(`thor.support \"${featureName as string}\" ${message}`);\n return false;\n }\n\n const featureVersions: FeatureVersions = features[featureName];\n\n if (!featureVersions) {\n return failFeature(`${featureName as string} is unknown, cannot check support.`);\n }\n\n if (isEmpty_(featureVersions)) {\n return failFeature('feature component version is unknown, cannot check support.');\n }\n\n return every_(featureVersions, (value, k) => {\n const key = k as keyof typeof rawVersions;\n const rawVersion = rawVersions[key];\n\n // yt-local in arcadia is meant to be of the freshest version\n if (rawVersion === _LOCAL_ARCADIA_VERSION) {\n return true;\n }\n\n if (!value) {\n return failFeature(`feature version of '${key}' is unknown, connot check support`);\n }\n\n const buildVersion = getVersionAndBuild(rawVersion);\n if (!buildVersion) {\n return failFeature(\n `version of '${key}' component is unknown, cannot check support.`,\n );\n }\n\n if (Array.isArray(value)) {\n return value.some((item) => _versionInInterval(buildVersion[0], item));\n } else {\n return _versionInInterval(buildVersion[0], value);\n }\n });\n };\n}\n\nexport const isSupportedSelector = createSelector(\n [getRawProxyVersion, getRawSchedulerVersion, getRawMasterVersion],\n (proxy, scheduler, master) => _isFeatureSupported({proxy, scheduler, master}, FEATURES),\n);\n\nexport const isSupportedEffectiveExpiration = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('effectiveExpiration');\n },\n);\n\nexport const isSupportedClusterNodeForVersions = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('clusterNodeVersion');\n },\n);\n\nexport const isSupportedNodeMaintenanceApi = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('nodeMaintenanceApi');\n },\n);\n\nexport const isSupportedSchedulingChildrenByPool = createSelector(\n [isSupportedSelector],\n (isSupported) => {\n return isSupported('schedulingChildrenByPool');\n },\n);\n","import {COMPONENTS_NODES_NODE_TABLE_ID} from '../../../constants/components/nodes/nodes';\n\ninterface Node {\n cell_id: string;\n peer_id: string;\n state: string;\n}\n\nexport const nodeTableProps = {\n size: 's',\n virtual: false,\n theme: 'light',\n cssHover: true,\n striped: false,\n tableId: COMPONENTS_NODES_NODE_TABLE_ID,\n columns: {\n items: {\n cell_id: {\n get(node: Node) {\n return node.cell_id;\n },\n sort: true,\n align: 'left',\n caption: 'Cell ID',\n },\n peer_id: {\n sort: true,\n get(node: Node) {\n return node.peer_id;\n },\n align: 'right',\n caption: 'Peer ID',\n },\n state: {\n sort: true,\n get(node: Node) {\n return node.state;\n },\n align: 'right',\n },\n },\n sets: {\n default: {\n items: ['cell_id', 'peer_id', 'state'],\n },\n },\n mode: 'default',\n },\n templates: {\n key: 'components/nodes/node',\n },\n};\n\nexport type ComponentsNodesLinkParams = {\n cluster?: string;\n rackFilter?: string;\n rackSelected?: Array<string>;\n banned?: 'enabled';\n decommissioned?: 'enabled';\n alerts?: 'enabled';\n full?: 'enabled';\n state?: 'online' | 'offline' | string;\n nodeTypes?: Array<string>;\n};\n\nexport function makeComponentsNodesLink({\n cluster,\n state,\n rackFilter,\n rackSelected,\n banned,\n decommissioned,\n full,\n alerts,\n nodeTypes,\n}: ComponentsNodesLinkParams) {\n if (!cluster) {\n return '';\n }\n let search = '';\n if (rackFilter) {\n search += `rack=filter-${rackFilter}&`;\n } else if (rackSelected?.length) {\n search += `rack=mode-union,selected-${rackSelected.join('|')}&`;\n }\n if (banned) {\n search += `banned=${banned}&`;\n }\n if (state) {\n search += `state=${state}&`;\n }\n if (decommissioned) {\n search += `decommissioned=${decommissioned}&`;\n }\n if (alerts) {\n search += `alerts=${alerts}&`;\n }\n if (full) {\n search += `full=${full}&`;\n }\n if (nodeTypes?.length) {\n search += `nodeType=${nodeTypes?.join(',')}&`;\n }\n return `/${cluster}/components/nodes?${search}`;\n}\n","import {MEDIUM_COLS_PREFIX} from '../../../constants/components/nodes/nodes';\n\nimport forEach_ from 'lodash/forEach';\n\nimport type {Node} from '../../../store/reducers/components/nodes/nodes/node';\nimport type {\n NodeRange,\n NodesSetupState,\n} from '../../../store/reducers/components/nodes/setup/setup';\nimport type {FIX_MY_TYPE} from '../../../types';\n\nconst isCorrectRange = (\n node: Node['IOWeight'] = {},\n {from, to}: NodeRange,\n key: FIX_MY_TYPE,\n isArray = false,\n) => {\n if (!node[key]) {\n return from.value === null && to.value === null;\n }\n\n const nodeValue = isArray ? (node[key] as FIX_MY_TYPE).length : node[key];\n\n return (\n nodeValue >= (from.value === null ? -Infinity : from.value) &&\n nodeValue <= (to.value === null ? Infinity : to.value)\n );\n};\n\nexport function createMediumsPredicates(setupFilters: NodesSetupState, mediumList: FIX_MY_TYPE) {\n const {storage} = setupFilters;\n const predicates = [] as Array<(node: Pick<Node, 'IOWeight'>) => boolean>;\n forEach_(mediumList, (medium) => {\n const fromTo =\n storage[(MEDIUM_COLS_PREFIX + medium) as FIX_MY_TYPE as keyof typeof storage];\n if (isRangeFilterDefined(fromTo)) {\n predicates.push((node: Pick<Node, 'IOWeight'>) =>\n isCorrectRange(node.IOWeight, fromTo, medium),\n );\n }\n });\n return predicates;\n}\n\nexport function isRangeFilterDefined({from, to}: NodeRange) {\n return from.value !== null || to.value !== null;\n}\n"],"names":["AttributesButton","_ref","_ref$view","view","_ref$size","size","rest","_objectWithoutProperties","_excluded","_jsx","Button","_objectSpread","children","Icon","awesome","ChartLink","props","className","url","title","theme","hideIcon","face","wrapContent","icon","content","_jsxs","React","Link","target","b","block","headingCN","CollapsibleSectionStateLess","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","toggle","onToggle","collapsed","_createClass","key","value","_this$props","this","name","overview","marginDirection","togglerRightPadding","ErrorBoundary","margin","clickable","onClick","Component","CollapsibleSection","_React$useState","_React$useState2","_slicedToArray","setCollapsed","onChange","defaultProps","cn","ICON_BY_TYPE","_ICON_BY_TYPE","_defineProperty","SortIcon","_React$Component","order","allowUnordered","withUndefined","nextSortOrderValue","_this$props2","label","hidden","Tooltip","format","ReadableField","renderText","text","settings","undefined","mix","elem","mods","textProps","asHTML","dangerouslySetInnerHTML","__html","unipika","decode","String","prepareTextProps","printColumnAsTimeDurationWithMs","item","columnName","column","getColumn","hammer","get","printColumnAsReadableField","printColumnAsTime","ColumnAsTime","printColumnAsError","error","_typeof","showErrorPopup","hideOopsMsg","NO_VALUE","asNumber","__default__","_templates","add","templateId","templates","Object","keys","reduce","newTemplates","wrapRenderMethods","ROLE_THEME","default","control","data","STATE_THEME","online","offline","NodeColumnState","_STATE_THEME$state","state","FirstUppercase","Label","type","NodeColumnBanned","_ref2","banned","StatusBlock","NodeColumnRole","_ref3","role","Address","NodeColumnText","_ref4","ClipboardButton","ClickableId","_ref5","allowTooltip","_ref5$format","v","ClickableText","color","MemoryProgress","progress","memoryText","memoryData","Progress","stack","category","_category$rawData","_category$rawData2","rawDataUsed","rawData","used","rawDataLimit","limit","rawDataLimitIsNumber","style","backgroundColor","_this2","map_","renderItem","renderPopupContent","disableInline","renderProgress","withVisible","Version","version","handleShow","handleClose","visible","SimpleModal","onCancel","onOutsideClick","Error","renderErrorVersion","renderVersion","NodeActions","handleEditClick","node","showNodeMaintenance","address","host","component","cluster","_UIFactory$getCompone","UIFactory","getComponentsNodeDashboardUrl","ClickableAttributesButton","path","withTooltip","tooltipProps","placement","mapDispatchToProps","connect","getCluster","NodesColumnHeader","_props$options","_column$column","dispatch","useDispatch","sortState","useSelector","getTables","COMPONENTS_NODES_TABLE_ID","oldSortStateToOrderType","options","find","field","ColumnHeader","onSort","_props$options2","colInfo","toggleColumnSortOrder","tableId","PropertiesByColumn","actions","alert_count","chunks","cpu","cpu_limit","cpu_usage","data_center","decommissioned","elections","elections_chaos","follower_recovery","follower_recovery_chaos","following","following_chaos","full","gpu","gpu_usage","gpu_limit","io_weight","last_seen","leader_recovery","leader_recovery_chaos","leading","leading_chaos","locations","memory_total","memory","memory_limit","memory_usage","network","network_usage","network_limit","none","none_chaos","physical_host","flavors","rack","removal_slots","removal_slots_usage","removal_slots_limit","repair_slots","repair_slots_usage","repair_slots_limit","replication_slots","replication_slots_usage","replication_slots_limit","scheduler_jobs","seal_slots","seal_slots_usage","seal_slots_limit","sessions","space_limit","space_usage","space","stopped","stopped_chaos","system_tags","tablet_cells","tablet_memory_dynamic","tablet_memory_dynamic_usage","tablet_memory_dynamic_limit","tablet_memory_static","tablet_memory_static_usage","tablet_memory_static_limit","tablet_memory","tablet_slots","user_slots","user_slots_usage","user_slots_limit","user_tags","write_sessions","nodesTableProps","virtual","virtualType","cssHover","striped","computeKey","columns","items","sort","align","physicalHost","compareFn","compareArraysBySizeThenByItems","dataCenter","caption","userTags","_node$userTags","systemTags","allowedOrderTypes","DESC_ASC_UNORDERED","alertCount","disableJobs","disableWriteSession","disableTabletCells","lastSeenTime","spaceProgress","renderHeader","sortWithUndefined","spaceTotal","spaceUsed","enabledLocations","cpuProgress","_node$cpu","_node$cpu2","usage","_node$gpu","_node$gpu2","_node$gpu3","memoryProgress","memoryTotal","networkProgress","hiddne","repairSlotsProgress","_ref6","repairSlots","limits","removalSlotsProgress","_ref7","removalSlots","replicationSlotsProgress","_ref8","replicationSlots","sealSlotsProgress","_ref9","sealSlots","userSlotsProgress","_ref10","userSlots","tabletSlots","raw","reduce_","sum","slot","_node$tabletSlots","byState","_node$tabletSlots2","makeCaptionProps","_node$chaosSlots","chaosSlots","_node$chaosSlots2","_node$tabletSlots3","_node$tabletSlots4","_node$chaosSlots3","_node$chaosSlots4","_node$tabletSlots5","_node$tabletSlots6","_node$chaosSlots5","_node$chaosSlots6","_node$tabletSlots7","_node$tabletSlots8","_node$chaosSlots7","_node$chaosSlots8","_node$tabletSlots9","_node$chaosSlots9","_node$tabletSlots10","_node$tabletSlots11","_node$chaosSlots10","_node$chaosSlots11","_node$tabletSlots12","_node$tabletSlots13","_node$chaosSlots12","_node$chaosSlots13","group","static","tabletStaticMemory","static_usage","static_limit","dynamic","tabletDynamicMemory","dynamic_usage","dynamic_limit","set","IOWeight","cache","ssd_blobs","ssd_journals","sets","storage","cpu_and_memory","resources","tablets","chaos_slots","custom","onMemoryProgressMouseEnter","onMemoryProgressMouseLeave","defaultColumns","renderTags","tags","themes","flexType","TagsContainer","tag","index","_ref11","_ref11$flexType","inline","NODES_TABLE_TEMPLATES","startsWith","mediumName","slice","IO_WEIGHT_PREFIX","Host","renderLabel","_item$dataCenter","toUpperCase","spaceText","progressText","cpuText","_item$gpu","_item$gpu2","memoryTotalText","networkText","statuses","sortBy_","keys_","_TABLET_SLOTS$state","TABLET_SLOTS","_item$tabletSlots","_item$chaosSlots","_item$tabletSlots2","_item$chaosSlots2","_item$tabletSlots3","_item$chaosSlots3","_item$tabletSlots4","_item$chaosSlots4","_item$tabletSlots5","_item$chaosSlots5","_item$tabletSlots6","_item$chaosSlots6","_item$tabletSlots7","_item$chaosSlots7","getNodeTablesProps","mediumList","allMediums","acc","res","merge_","groupHeaderStyle","width","NodeTypeSelector","onUpdate","Select","multiple","NODE_TYPE_ITEMS","newVal","newValue","updateListWithAll","NODE_TYPE","ALL_NODES","SystemNodeTypeSelector","getSystemNodesNodeTypesToLoad","setSettingSystemNodesNodeType","setSysmetNodesNodeType","ComponentsNodeTypeSelector","getComponentsNodesNodeTypes","componentsNodesSetNodeTypes","makeNodePath","applyMaintenance","resourceLimitsOverrides","getState","requests","push","prepareSetCommandForBatch","forEach_","isNaN","$value","$type","input_format","$attributes","annotate_with_types","t","command","comment","isMaintenanceApiAllowedForComponent","parameters","mine","_toConsumableArray","c","isAdd","input","makeObsoleteMaintenanceRequests","reloadNodeData","updateComponentsNode","getProxies","wrapApiPromiseByToaster","ytApiV3Id","executeBatch","YTApiId","addMaintenance","toasterName","isBatch","skipSuccessToast","errorTitle","then","params","_asyncToGenerator","_regeneratorRuntime","_callee","_context","prev","next","loadNodeMaintenanceData","sent","abrupt","NODE_MAINTENANCE_PARTIAL","stop","_x","_dispatch","user","getCurrentUserName","allowMaintenanceRequests","maintenanceRequests","attributes","errorContent","maintenance","maintenance_requests","_maintenance$item$typ","_dst$comment","dst","othersComment","timestamp","assign","ban","ban_message","decommission","decommission_message","disable_scheduler_jobs","disable_tablet_cells","disable_write_sessions","resourceLimits","resource_limits","resource_limits_overrides","closeNodeMaintenanceModal","NODE_MAINTENANCE_RESET","isAllowedMaintenanceApiNodes","isAllowedMaintenanceApiProxies","COMPONENTS","NAMESPACES","TEMPLATES","SettingName","changeContentMode","contentMode","CHANGE_CONTENT_MODE","updateNodeCanceler","CancelHelper","getNodes","nodeTypes","GET_NODES","REQUEST","preparedAttrs","prepareAttributes","map","USE_CACHE","USE_MAX_SIZE","componentsClusterNodes","cancellation","removeAllAndSave","_step","_splitBatchResults","splitBatchResults","results","outputs","output","ypath","getValue","nodes","collectedItems","Set","_iterator","_createForOfIteratorHelper","s","n","done","_step2","_iterator2","has","err","e","f","SUCCESS","code","yt","CANCELLED","FAILURE","componentsUpdateNodeData","Node","ATTRIBUTES","COMPONENTS_NODES_UPDATE_NODE","changeHostFilter","hostFilter","CHANGE_HOST_FILTER","trim","CHANGE_NODE_TYPE","applyPreset","setup","APPLY_SETUP","savePreset","prevTemplates","getTemplates","setSetting","removePreset","omit_","handleColumnsChange","selectedColumns","SELECTED_COLUMNS","getComponentsNodesFilterOptions","compact_","useTagsFromAttributes","useRacksFromAttributes","GET_NODES_FILTER_OPTIONS","list","join","racks","filterOptionsTags","filterOptionsRacks","Proxy","dead","effectiveState","getBoolean","banMessage","liveness","loadAverage","updatedAt","networkLoad","GET_PROXIES","PROXY_TYPE","HTTP","Promise","all","axios","systemProxies","cypressData","proxies","proxyData","cypressAttributes","getAttributes","componentsRpcProxies","componentGetRpcProxies","proxiesMap","alive","Boolean","meta","PROXIES_CHANGE_FILTERS","changeStateFilter","stateFilter","changeRoleFilter","roleFilter","changeBannedFilter","bannedFilter","resetProxyState","getNodeMaintenanceModalState","components","nodeMaintenanceModal","getNodeMaintenanceModalInitialValues","createSelector","k","isSupportedNodeMaintenanceApi","getClusterUiConfig","isSupported","uiConfig","enable_maintenance_api_nodes","enable_maintenance_api_proxies","getMediumsPredicates","getComponentNodesFiltersSetup","getMediumListNoCache","createMediumsPredicates","getPropertiesRequiredForMediums","mediumsPredicates","getFilteredByHost","toLowerCase","hostFilters","split","filter_","some_","_node$host","getFilteredNodes","getComponentNodesFilterPredicates","predicates","predicatesArray","predicate","concatByAnd","getVisibleNodes","tables","utils","getComponentNodesTableProps","getVisibleColumns","getSelectedColumns","customColumns","getPropertiesRequiredForRender","visibleColumns","union_","x","getRequiredAttributes","getPropertiesRequiredForFilters","propertiesRequiredForRender","propertiesRequiredForFilters","propertiesRequiredForMediums","allRequiredProperties","AttributesByProperty","indexOf","getComponentNodesTags","getComponentNodesIndexByTag","useFromAttrs","fetchedTags","nodesByTag","getComponentNodesRacks","getComponentNodesIndexByRack","fetchedRacks","nodesByRack","types","COMPONENTS_AVAILABLE_STATES","getComponentNodesFilterSetupStateValue","getComponentNodesFilterStatePredicate","filter","getSetupFiltersRaw","excludes","substring","Toaster","autoHiding","includes","mediumDefaults","medium","MEDIUM_COLS_PREFIX","cloneDeep_","groupFilterInitialState","_acc$get","Map","_node$rack","_acc$get2","UNAWARE","PropertiesByPredicate","blobSession","blockCache","chunkBlockMeta","chunkMeta","footprint","query","systemJobs","versionedChunkMeta","tabletDynamicUsed","tabletDynamicTotal","tabletStaticUsed","tabletStaticTotal","userJobsUsed","userJobsTotal","userSlotsUsed","userSlotsTotal","sealSlotsUsed","sealSlotsTotal","repairSlotsUsed","repairSlotsTotal","removalSlotsUsed","removalSlotsTotal","replicationSlotsUsed","replicationSlotsTotal","followerRecovery","leaderRecovery","staticUsed","staticTotal","dynamicUsed","dynamicTotal","getRackPredicate","setupFilters","_rack$selected","selected","createNodeTagPredicate","getFilterPredicatesObject","nodesByTags","rackPredicate","statePredicate","_node$physicalHost","createFlagPredicate","createAlertsFlagPredicate","createAttributeStatePredicate","schedulerJobs","writeSessions","tabletCells","createRangePredicate","blob_session","block_cache","chunk_block_meta","chunk_meta","system_jobs","versioned_chunk_meta","tablet_dynamic","tablet_static","user_jobs","getComponentNodesFiltersCount","filters","filterPredicatesObject","p","picked","values_","pickBy_","_value","tagFilter","getTags","mode","useRegexp","selectedItems","tagName","_nodesByTags$get","every_","_nodesByTags$get2","re","RegExp","test","flag","range","asArray","isRangeFilterDefined","from","to","nodeValue","Infinity","getSettingSystemNodesNodeType","valueSet","values","initialState","getMediumList","global","sortInPredefinedOrder","MediumType","DEFAULT","mediums","getCurrentCluster","versionToArray","build","versionArray","subversion","parseInt","_compareVersions","comparator","versionA","versionB","compareVectors","_versionInInterval","versionInterval","every","FEATURES","fieldsFilter","scheduler","effectiveExpiration","master","clusterNodeVersion","proxy","nodeMaintenanceApi","schedulingChildrenByPool","isSupportedSelector","schedulerVersion","masterVersion","rawVersions","features","featureName","failFeature","message","console","warn","featureVersions","isEmpty_","rawVersion","buildVersion","parsedVersion","match","getVersionAndBuild","isArray","some","isSupportedEffectiveExpiration","isSupportedClusterNodeForVersions","isSupportedSchedulingChildrenByPool","nodeTableProps","COMPONENTS_NODES_NODE_TABLE_ID","cell_id","peer_id","makeComponentsNodesLink","rackFilter","rackSelected","alerts","search","isCorrectRange","fromTo"],"sourceRoot":""}
|