From 2f103d607db932b283033b40658dee2b9731be8b Mon Sep 17 00:00:00 2001 From: Martin Ziegler Date: Tue, 2 Dec 2025 16:02:36 +0100 Subject: [PATCH] Implemented dual-nozzle AMS wiring visualization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Added AMSSectionDual component with CSS border-based wiring - Wiring connects AMS slots to hub to extruder with proper 90° corners - Supports future dynamic filament color display - Added TemperatureColumn with dual nozzle L/R display - Added JogPad, BedControls, ExtruderControls components - Added various control page icons 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- frontend/public/icons/ams-ht.png | Bin 0 -> 4314 bytes frontend/public/icons/ams-settings.svg | 1 + frontend/public/icons/ams-wiring-center.svg | 9 + frontend/public/icons/ams-wiring-left.svg | 17 + frontend/public/icons/ams-wiring-right.svg | 17 + frontend/public/icons/ams.png | Bin 0 -> 6447 bytes frontend/public/icons/chamber.svg | 1 + frontend/public/icons/dual-extruder.png | Bin 0 -> 19576 bytes frontend/public/icons/extruder-left-right.png | Bin 0 -> 6234 bytes frontend/public/icons/eye.svg | 51 ++ frontend/public/icons/heatbed.svg | 1 + frontend/public/icons/home.svg | 44 + frontend/public/icons/hotend.svg | 1 + frontend/public/icons/jogpad.png | Bin 0 -> 63625 bytes frontend/public/icons/jogpad.svg | 46 + frontend/public/icons/lamp.svg | 1 + frontend/public/icons/micro-sd.svg | 1 + frontend/public/icons/reload.svg | 1 + frontend/public/icons/settings.svg | 1 + frontend/public/icons/single-extruder1.png | Bin 0 -> 5124 bytes frontend/public/icons/single-extruder2.png | Bin 0 -> 14109 bytes frontend/public/icons/skip-objects.svg | 1 + frontend/public/icons/snowflake.svg | 53 ++ frontend/public/icons/speed.svg | 1 + frontend/public/icons/temperature.svg | 1 + frontend/public/icons/ventilation.svg | 1 + frontend/public/icons/video-camera.svg | 1 + frontend/public/icons/water.svg | 2 + frontend/public/icons/webcam.svg | 73 ++ .../src/components/control/AMSSectionDual.tsx | 337 ++++++++ .../src/components/control/BedControls.tsx | 99 +++ .../src/components/control/CameraFeed.tsx | 142 ++-- .../components/control/ExtruderControls.tsx | 98 +++ frontend/src/components/control/JogPad.tsx | 160 ++++ .../src/components/control/PrintControls.tsx | 2 +- .../src/components/control/PrintStatus.tsx | 244 ++++-- .../components/control/TemperatureColumn.tsx | 93 ++ frontend/src/index.css | 23 +- frontend/src/pages/ControlPage.tsx | 168 ++-- frontend/tailwind.config.js | 1 + .../{index-BarB10XI.js => index-BdU-188w.js} | 804 +++++++++--------- static/assets/index-Ca04bhbd.css | 1 + static/assets/index-DiPSi5MU.css | 1 - static/icons/ams-ht.png | Bin 0 -> 4314 bytes static/icons/ams-settings.svg | 1 + static/icons/ams-wiring-center.svg | 9 + static/icons/ams-wiring-left.svg | 17 + static/icons/ams-wiring-right.svg | 17 + static/icons/ams.png | Bin 0 -> 6447 bytes static/icons/chamber.svg | 1 + static/icons/dual-extruder.png | Bin 0 -> 19576 bytes static/icons/extruder-left-right.png | Bin 0 -> 6234 bytes static/icons/eye.svg | 51 ++ static/icons/heatbed.svg | 1 + static/icons/home.svg | 44 + static/icons/hotend.svg | 1 + static/icons/jogpad.png | Bin 0 -> 63625 bytes static/icons/jogpad.svg | 46 + static/icons/lamp.svg | 1 + static/icons/micro-sd.svg | 1 + static/icons/reload.svg | 1 + static/icons/settings.svg | 1 + static/icons/single-extruder1.png | Bin 0 -> 5124 bytes static/icons/single-extruder2.png | Bin 0 -> 14109 bytes static/icons/skip-objects.svg | 1 + static/icons/snowflake.svg | 53 ++ static/icons/speed.svg | 1 + static/icons/temperature.svg | 1 + static/icons/ventilation.svg | 1 + static/icons/video-camera.svg | 1 + static/icons/water.svg | 2 + static/icons/webcam.svg | 73 ++ static/index.html | 4 +- 73 files changed, 2205 insertions(+), 622 deletions(-) create mode 100644 frontend/public/icons/ams-ht.png create mode 100644 frontend/public/icons/ams-settings.svg create mode 100644 frontend/public/icons/ams-wiring-center.svg create mode 100644 frontend/public/icons/ams-wiring-left.svg create mode 100644 frontend/public/icons/ams-wiring-right.svg create mode 100644 frontend/public/icons/ams.png create mode 100644 frontend/public/icons/chamber.svg create mode 100644 frontend/public/icons/dual-extruder.png create mode 100644 frontend/public/icons/extruder-left-right.png create mode 100644 frontend/public/icons/eye.svg create mode 100644 frontend/public/icons/heatbed.svg create mode 100644 frontend/public/icons/home.svg create mode 100644 frontend/public/icons/hotend.svg create mode 100644 frontend/public/icons/jogpad.png create mode 100644 frontend/public/icons/jogpad.svg create mode 100644 frontend/public/icons/lamp.svg create mode 100644 frontend/public/icons/micro-sd.svg create mode 100644 frontend/public/icons/reload.svg create mode 100644 frontend/public/icons/settings.svg create mode 100644 frontend/public/icons/single-extruder1.png create mode 100644 frontend/public/icons/single-extruder2.png create mode 100644 frontend/public/icons/skip-objects.svg create mode 100644 frontend/public/icons/snowflake.svg create mode 100644 frontend/public/icons/speed.svg create mode 100644 frontend/public/icons/temperature.svg create mode 100644 frontend/public/icons/ventilation.svg create mode 100644 frontend/public/icons/video-camera.svg create mode 100644 frontend/public/icons/water.svg create mode 100644 frontend/public/icons/webcam.svg create mode 100644 frontend/src/components/control/AMSSectionDual.tsx create mode 100644 frontend/src/components/control/BedControls.tsx create mode 100644 frontend/src/components/control/ExtruderControls.tsx create mode 100644 frontend/src/components/control/JogPad.tsx create mode 100644 frontend/src/components/control/TemperatureColumn.tsx rename static/assets/{index-BarB10XI.js => index-BdU-188w.js} (63%) create mode 100644 static/assets/index-Ca04bhbd.css delete mode 100644 static/assets/index-DiPSi5MU.css create mode 100644 static/icons/ams-ht.png create mode 100644 static/icons/ams-settings.svg create mode 100644 static/icons/ams-wiring-center.svg create mode 100644 static/icons/ams-wiring-left.svg create mode 100644 static/icons/ams-wiring-right.svg create mode 100644 static/icons/ams.png create mode 100644 static/icons/chamber.svg create mode 100644 static/icons/dual-extruder.png create mode 100644 static/icons/extruder-left-right.png create mode 100644 static/icons/eye.svg create mode 100644 static/icons/heatbed.svg create mode 100644 static/icons/home.svg create mode 100644 static/icons/hotend.svg create mode 100644 static/icons/jogpad.png create mode 100644 static/icons/jogpad.svg create mode 100644 static/icons/lamp.svg create mode 100644 static/icons/micro-sd.svg create mode 100644 static/icons/reload.svg create mode 100644 static/icons/settings.svg create mode 100644 static/icons/single-extruder1.png create mode 100644 static/icons/single-extruder2.png create mode 100644 static/icons/skip-objects.svg create mode 100644 static/icons/snowflake.svg create mode 100644 static/icons/speed.svg create mode 100644 static/icons/temperature.svg create mode 100644 static/icons/ventilation.svg create mode 100644 static/icons/video-camera.svg create mode 100644 static/icons/water.svg create mode 100644 static/icons/webcam.svg diff --git a/frontend/public/icons/ams-ht.png b/frontend/public/icons/ams-ht.png new file mode 100644 index 0000000000000000000000000000000000000000..56370b7fc68db1b7ef32ee538d25f40d664032fa GIT binary patch literal 4314 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 IM6N<$g14`p^8f$< literal 0 HcmV?d00001 diff --git a/frontend/public/icons/ams-settings.svg b/frontend/public/icons/ams-settings.svg new file mode 100644 index 000000000..7578d938e --- /dev/null +++ b/frontend/public/icons/ams-settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/public/icons/ams-wiring-center.svg b/frontend/public/icons/ams-wiring-center.svg new file mode 100644 index 000000000..b321bad9e --- /dev/null +++ b/frontend/public/icons/ams-wiring-center.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/frontend/public/icons/ams-wiring-left.svg b/frontend/public/icons/ams-wiring-left.svg new file mode 100644 index 000000000..b4c0f1436 --- /dev/null +++ b/frontend/public/icons/ams-wiring-left.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/frontend/public/icons/ams-wiring-right.svg b/frontend/public/icons/ams-wiring-right.svg new file mode 100644 index 000000000..a24a8be06 --- /dev/null +++ b/frontend/public/icons/ams-wiring-right.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/frontend/public/icons/ams.png b/frontend/public/icons/ams.png new file mode 100644 index 0000000000000000000000000000000000000000..217f7645d81972bdea5ad585f4e5b57623b68d47 GIT binary patch literal 6447 zcmV+~8PMj5P)z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGqB>(^xB>_oNB=7(L00(qQO+^Rk3<3u@7Ib3TPXGWI zg-Jv~RCodHoLP@uSyF}1O{a&n-GdD(svB1|JVT>)N&Uc}Mu^|gfW!}^0SOTAjf#E* z3G)kRyXo(#6IVyhbmeEm51%TXUC3M5wRooaE5!XSN9)$xn8eV z(`r3U(`uSTil#wxYmzWLb0S->w$uv7m2@anRy7e@FjlLTZGde*(Sw1`TmPMx7v+C@ zT5l;=CrX%-rKDXrcYfMFcW&C=+MYZf9)cVg8pa@H(OQr#{k7}1)%C*ACTr1JkPG;) zN4Bl57gjb|i`If%!2kE8CiT;&Pp8ADN7KQRLrrcBC+FK*FG{}F&eqm+>06gIKxbay zAh=n`QYb6)=tXRP3&k4bAO>sZ6s&D^JsiFP{^FJC}G7M?`rnVYOVn znf^UCihqlpZ_BHxQ#7Y=Go4D}awJHlR9efKt!=bK0ayT8c3pE;tkUkXUy9ibsF?=+ zCi?f-DE2L`ES$8;oLimKIh{#a_9LyFIe|09ppEpC*VAb(#*DFUH{bfNoGB5D{3k8m z`n>x|7^wx7G;5aD%+gTSfMIdw2i;C+&9d0eq7gkhQaV&`{W}@X*_=2MqmQlz=d5i= zy=pQb@GG-Uz1r4|fu*GH0gew3r(>M}S$UjUmctoq*g#Vs20cu7Xj*em7qKo$?J78l zEoh;1Pb5bd30tZfSk)Dh{zdTr>7Q$}6&C>8+q%Toy{KyUee}gWUBp}Qn_YoGt2lRF z5b)OwR0;u78lG(oE}^Qm1Q-+~$K&JUX@75TIyyRLGj+n?qhejv$>@4Ik=(ZYa3eMV z#{5aGR=g|OBl${z2Hpjp)Oeb~K(?l#;;m$V?VEUwBR1$eiXPGbYyb2{xp=BLbi=x} zeP+6N@#3^ySJdghkCo_(pYAQ$qSI@*WMV5}$lp42G+O1uY%)#ezoE$7JzAdKZ>Q?*^Ld**qxzB&Gn z^_1b!uO2!_bN+}{MPWP>e+h^%@jD43PimkXdzc_d7RAR|%e+_!;^^pb+S}Vz{+2E^ zhi$56a%q)G`*)IcXhc?n21UMD0T~d{48(?iG?BBpLB`iN-T&_HZU(D!p_=*H@jIBF zz~(x-#8~m`s*ix{GYr9S9wHn3nK;pGd8`g_N{Lx(pk)TUBt1IXjYeThawi#J;QI6v z5{x0E2VOuB;@Y_l-K zOS-qeAF(j)M`wWGi)U=9tPq**dBkcEJ)AX>)#+9nZhH)nj6_y;N(S_s?tgE0&pDv4 zDV+;i6~C&Y=KM=R^Sso0>8aUUpN$PIwd!1Oq}9YHxzFnG7@`@%sy<*In_Oh5UTehY z9%f^@ys_l4&*06YSLd=|`Fh1)nUwCU=Ktxj@}>`Enbt5!lnN>FJgVmN2twBGfqNl*_!ASIs(7@S``cW%(eNy`*e8x{TzP#Pp zFc-q%aeS5hb6%&+@w-WIMUd`f)=4C75|M^VsyN0D7^0M61OVTe9O)=pe?Ueev1PVw zShuz*0joLY#lpB&8FC>okGds9%V(%@psrAf91-Fa5|h|Pu)&p zcE4GnV5F`!OrM;v3YD(GPKJ~2%AQAz^!LA*ae|}m0TL<1mR6iPTw9+;0qaq~hxqBf z8>pzfn*RHOg5e=Tiqq)$t7Sn;0qDs@Pgc-Y7+BA7S{d@TMuId5OKguA{5(xa62WZg zdzI~NzS7s?I60n<*LCINn^M_v2etjFGYkhfjI&kJb~LKa%Ep%N`VkWBNnJsKeVKpk z^^G&od!K$b-M({2epl1AYu}%~|L(hzf3<(Ex{_L~O!@|Pf7;!9;=W$o*_kd}xZu2; zj{mfOD{~;emgJu=aFW|MY1F4F5i-dB$XNV7r6ZK6iH7Q6jc$klNPM;}bm%c|0A< z&hz}2Io7I!{^hM()8G8;@1`&A-*^Ao!PTo*r@#KopH9E?yFZZWXZ>?>@Z=#$lJDxu z?e?9Iro)3HwYe~260WCn=g&>=z5m{H>Cz=Doc2#{TwKoq+Nuu8abZ+79FAr8AKYJG z`R)l;lHQlwgLScqHVc=Kp6!~I=7EvUwQKK9SFc{#@b8y*uvd1kNIqhK z|I)Ia9z6JOPlo}sokb@j$XYU82}t(UAVL*a(qry!>8fu>&$m1S@3&|N8p} zVZQkMOFdJ>@LWhT=!3(9>F(XTzWnka$q_Zmb?0HFyPw>ho;=CK$!gT3zyJk!xrGS3 zg%#V}v`XU?N}R=xP{U9uE^QAwyR{Ju!#q0N*}0I!m7BR*0Ab3{#T^ZVh-^+!vP-5_ zc90dl=u&lW_RnUu!>Uusqe~_WEomv~AAa}?tvFp0pK>3DFeF@=Jk&sZ_^-bh{?nV7 z!T*<^eeQ1r*rw6V)-MOL3o9#3vFP0S<(Hoi|DY3xfN8*SansCn&O;Zb<=tgi+(BmB zS*Y5(+C!%`Mzo{{rV#qG*tL?RbJJWpp>P`5(zVWC%oF(R^Qv92CYjDj%^7Y7fqzPl zJ`ak-8wtxIl^qSht=qSato)i6M*P?kH`@XP8$Q+&quTm=ytgl1&Pm99X40{G7?vau z+SYf4g=Uv19y&}M^QqtmzKFf-m7rTRw>S~@lYr8bk%knfnzOv!M^F>r?$2&qJd9A{ zy3M+qy5!W?0Qlcxzj07r3ij`pZ90+{`nSvJjO=t_8%jZGHGQh9yv~UGDLLCJZ}!km z{PF+EJ+PETN1^q1aG)zZ5m`CPIl5|tjNLe<{iLwqGu>*y5LQ8#KeWD1{(UO31`2IO zb!H_U8<8uQO9XgNkzkP_wngd0Kzg!a8(H}xS@_ZsFFA^ELGmL1$S7!0)Gq(&B0kbL zt}cTv>ol00*sgx?{S}tRC4V3~!fzkgOuylvpZKve`)AY`{Py2zV90C$BV|Vn**JYP z!+k^A{xgN~jP{~P#4l1! z^jxI)V!QWDdyyfx0aVbjX1kQa)$h zp>MyVRb#gFF91naFoqJmh*<+sBqfSNvD&|-RzO!tq+iVh=L-jFY)MAqoIF7KEc|;& z)W#fAAM9WKYqM&bWl+4PykxE2WiIq4SSW&VYqeL&+yr}vs%oiMK&V`V)M8}|uc_Tw`# zFvU0gJ3!2qCr{#{Yo%cfvpHffg5lpii;i)NPMhqugfGm${A-{h#udinlvWiR5Iqcn zP(y#ls$Y?ncFiobW2=`o9F;JuR^yca6DOlV!MnBLU;J)k($T;LuLeDnRgd}^mQ+(w8YYhAwPrfKad04lu*+Jwe28jB7 zlz1{kaX+Eapw{OTNYc(wp1P{$>4&Sg@-uCqrBAV~5w-TJSaafpnYGMuU) z>l~YjK?h%go(u$_zniyiN>HXu%?D(d(_r2pxW*y&HzyBL#3|3NihYN()Az{ zh-L5`WYuLX)+Mx|+3xIO<~0@napoua?YHZ8C?lIJwc3ct$cmx9F}o=~>R@eWAs%}| zxCO`<)#aqG2(bYR+E~4Y`A;TNQsvIhto~}=}PO`;s~m{x#^!?WxkGCFEu~K z?g=Jy==1`0-NumUuRZb58s!jaWe`I`IY`gr6!B&d~E3%(d^!B?Ezm+*`#y@@^ zH5`ZtEyGyumY+aI;yAU}SuW3BS;7Gy=U!A_T5LQB8JzuBG6-zx-++OVUJbNZv2@CR z<2_?&U@zcKEPCF$jkQS~5-~|6mY#%pOE$95f&@Rnf}E`3yd9@qlL zn9-mh;^kEQ%0I(yGlrBtyc8U$xYCt8R{W7e)v$9Dm;|3_@9ISnhdE+m^v0~Dz*k-p z**t-ZuuWkiv!nsTL@|b0O!C3Mi)_*6%_n~HO7GGy$t8#nah+*^Vv7zI-?2CRNZwb2 zs5oe93dYoNJmxDA=;-^+D==^v6tF(gRex+OY-0*y6(3MgQ8mBUH%7mEfa*-w?Y@2G zP`>>JWZ|^Zo;=aJYq33!VKj!Cxuu7fyc?LN0!V=Fuw?ssTD{>Pt)2y5t3CY1s0xe!<$&X;3XVKj z*hu`WKN<;#GkFOv^jQ$!N*}Lz&BSJo{E9;$Q@qii1K>@uZZ2Ko9 z)?#`~^7;Bk8;}^h+yfu8W~hb?dX=BqB1cStz^^9S@GmrrD_bFQeN={j(d`|sJbU-E z5rD>*5^X?ma}uN(XStz=#^&kC#z6K%2&4KB2770YccUm7@|6%$p|MYnD zSKRaZ84Wll$%=R1=_nu_a-N1(OY*b&Wjh7`J`Z{|#hxb_eCG|+*Uf*tp^4Tg^Q=ve zcvB})$Z&O#-a_&Xt$QT^|3|{zkM9gS0mt?@inw$8hJRR^-Bgs%ZwhAlNt5?1={p64T5Q*f#u&0)qRxvS6KlzhCntbn8 z{sCAnEWXd2)$gA4?X@SCF(Q%aPZ4C`)VLtb+5Udau2_8#hK5$IGY9EY_ca&;;Vyj$ zGro>3c$vf~if{>0v))&JG{uvMt?)&^Px@T%DIDl6oojk4hZj`bg>rEC^lw{A}lA3Y2U8|u^ZejoM2 z-~YYo+u#1q^z(oDP}}Wpg+*NJ>9XD$`tv{g)9HQnHRqVwf41d0{&U;srmc%x)4tBF z80om^JNv=~y*{vgjxR%#Jti=y;5f>IwpdR97Lq58YRFWRX-ZEc100{@;%0qD3H|I)uhE5F=H zbo^2Y*ByF({=eSuqhzQZQZwswsjN;a;+7?Jc`Lk7VM%9vn;<%G9f8xpPyzFP01%ag zV3uTUPn3PVZvIJ=KLqFkLo6p-gzEV|$|(pFxl8aiVv+$8&T`Ep^K_u*!yeyymVpGU zk00EcE%u6ut{&A)6v0_%^#8Uu;MY+(=>ow}N1UM!4jGGVj*OEMb_ zo;F4GYw171y)^$^%{$p7J(u;Juu6^rUMq!k%1s9k8En!m8i+@X^!LB0lW2+uyYyI} z+@|?UJx16jz=_6|c-XFnYKnNUD6hPK#o+iIjOjYSaQySdMCBv`V4VeVv^w+N9mz}S zv;`KdFWD=hNxJMvg{{%|%c67X4qunI%5-wfjc)nCg=lY;?!DTtz5m3VEQWq2|Ndq` z$ss?>GL*z*=4K_-%qEfW_0NfBG$`P#SbWjEuIx2selTeEDu{otFSs6N%r#syw(du@nrni5^=aoIo9vN$`EqkoOQ+5fat8k)$)48DttNFfBLIELM^~ z+-TvV+7{~Id!`_*&yc=u{)t1PWY_@7DzmMz8nr&rtAXwwpl=)ovHiOGS6sK7J zK+NK!^}OFF*&Is-U>bIS8iU0#Pb#2f*H|F)02x(&Yyun*j>V_-s`~FB9B~39oDmu< zozW#`zj5h0(RXX)W3e=nMj`ZPv}+QGJ&frfe5cevua;n}?i%CmX1%pSjQu3u6bR#44v0)ae5d(~=OKX@RUbj;( zkHNq7Pafv{bNN-t>`a^ED>107pzxN*PINE;Ye;QI(mvN1xEOA>xZ(|a)_LoH!Rf54EJk@Zb1-lK literal 0 HcmV?d00001 diff --git a/frontend/public/icons/chamber.svg b/frontend/public/icons/chamber.svg new file mode 100644 index 000000000..35c805812 --- /dev/null +++ b/frontend/public/icons/chamber.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/public/icons/dual-extruder.png b/frontend/public/icons/dual-extruder.png new file mode 100644 index 0000000000000000000000000000000000000000..37055084bd6254d7b2f9d8b31e31963839acbd5a GIT binary patch literal 19576 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=Nc|}c3UzS|{;+O$?Pj?@ zey@zqjmn!}y(OndPpu35-nI9<_pkj{^7x#6wCgcx2w}UC+&Ab#1~-d%p4{5JL+a?^)5KA4^5-%M+lO`UT`hkrU(b!mmCTR~=7yy$+%CIfTjVylvZ~~? z(oshX@!4t1AmgLD#Wu+>3e}9D1feywr80GoAn4rPe24Vmk9_7Avse=0`#daKN(9m7 zws0^^Qm>s1!|Hr0hIt>qr=eT6;g5V+NExg7KFN7bdmgRa>k{Mwf)02@Ag*c{{0M5y zDGGZTWv)=)`G{MVxKN-cPzVB;FO(77bZgvcZsKdI62C-W#?#05aO}%ZrYNMg-82>h zl!~|?Bc$!dvydEa;M+ev4nkX$OA3;^$~C zdDv?zrW?rStd4_OhSC`g6{n%NiKJ!VORKDt_)@yC=+3yQqMCu)zpC!WyTk+I3*AB) z)zYX<;eg<5I)y`mIhEJPXA_H}xbX^}q-XGrjpjrneskv$jYfV$hmcE{z_a+IT)>$$ zd(Au1#U0_iq@Iqa}fvfNa^F@!F6t#Kt6#o zCF3Q=@`j=S!N+R~WZptWFYGG=y-5O?e_;EA{pDDQr45 zQ-8Am)LcJ4V=EsDjT==I4Rz7MC(}{CC{qqXvWy$KJfO$V@2&dzn-u|h=bhtT&A`AV z@0C|xkul8v6q;sR#1~wCkK>nIwIaCixE9aQ#Oi9jvqOIu)N6CRC8f#!}qT?7wbyM;WNsw zg&*O1)_OE6pwO)lc*YPdOR%&t80t9s5YBX9+vkISF zxDIyl*@S}y>}R=W*TQ$2z+krEFeoRL3C;(yVzLSv$lto~-Nou4h!Q$_$48s~Z!&G? z3(f~lG0Yu9cOlDa@M##nMqwB&e@ieWSY@h_nUN8g2>8RV^%zZ#?m{x7u*#QWxxErp znd!!tx*^*e&~F4!m%D4d2|^b&y>9 z64AqFX)cL=L3JMU;N;|l)aM%U!2^_v?u%eLuqB}~IM4RpiTAuChmR1ZV)~b#{YY)N@OIs z#|<*}78e5g$Xwg%1g2tISD@So*a*ofriD&!Qv!8V$WhaxG_5)(O>9j`r1zJvT+wUA ztV(=e%4+c`CblI_HTI;+Wsjx;hJ&kiRZ8U)(#9&g26Q#Ks_e^wI#aZwf=XE#-xtsf zS_MAfgZ}G{^@hphk3C=KWyK+c4h9p3;@cnBt4Pi`j5fTr$jgcf2~4WPCtng*hfh+B zWs}C2O$DYu64JSyb`Hpxv=4n^djhD9RWj71?QvJ4bLHz@KoZ#-Opb zynN;dDC(%A_OdU8j&^{s&S|82IpwU(xvEdQo?@;%k-(7@y{`h_w_+9e6v-cA?#0x^ zBbYBfcOjg(#@h7`?V_K#osfPPShyw!4=02Ze(i?W=bwLGcJ1B`n$`GtUWIRcruMCf zPbn}>nCW?RL%WM0Dm+BRRrhaHDT;0)umwfY;fQ-ntaUDf(;4^dzen!A`)(FiOgNeu zc9iN?v6~ zeBA%f5n4=KLSn#V7%UcGAaqk#oS4l?v$9H-i+ao(9iQCKQRreT~M z?8X@4i3KZ%2mnmu;CFeVV4Na&rRL=uJ}jy>-M0HS`S8P!^c*Vj`Q=H^gsPqv5%_%H zz4ytXLx(8)ige<{3Gb6nKau%a{1Xejh@N&Q&a&1#a_Ep8JN66x=SSW9fT&#SJ@DW| za(ES^^XJZazX0tl&WWmd0AWbX;VNo9!7vRpA!M`$4#ry8RPquI0ev@)!die0+HOotdLqmh`J@f_^(%qXjmQXu8W z`R1E)W#E#!I#uK=jb3570|y?KXP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/public/icons/heatbed.svg b/frontend/public/icons/heatbed.svg new file mode 100644 index 000000000..cb8c96ca6 --- /dev/null +++ b/frontend/public/icons/heatbed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/public/icons/home.svg b/frontend/public/icons/home.svg new file mode 100644 index 000000000..7724a92a1 --- /dev/null +++ b/frontend/public/icons/home.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/public/icons/hotend.svg b/frontend/public/icons/hotend.svg new file mode 100644 index 000000000..4898efb77 --- /dev/null +++ b/frontend/public/icons/hotend.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/public/icons/jogpad.png b/frontend/public/icons/jogpad.png new file mode 100644 index 0000000000000000000000000000000000000000..6b72efb5d4c659bcd144b181c05bef5412a10538 GIT binary patch literal 63625 zcmagFRa9I}7cGhtJOpnaaBy%~vNGRP;o#t_{`=pdyyXOrCcY)$;9XUvzrwGL zu>ju^NS5LX;&5>F@fZ*j7-;phK;cv;m?S8ti9Zn6rJsK=NH7@u%p=F2T_Rl>=B6Ib_w zKkN2MDqhq1)7p8VVc?go_bBs~`@@H$u)=f`68H}h(G(c6C}+g97$FJf+B(dJ46wm5 zDxFA9!a<#|)q08;=Z_|J&J95n2rc3=U**nvC#~GbOlD(>NUSY7EK3~SL0UQ6w-*_&$ld~Nyg}j8v7rIAuzS2b3NrBC)8MKeGWy-lfry9ZoXs3OVIiMnR~vixkCpv1yK`VqwlHtvcjao<`?(WQQhU%PP$d| zV2sKnt+3Owo_vP7y0*6VmXhV)y5A{&uHIKoE_s>BPptKvc-j6V)*fO|3&8w> zFLsc$KE^1;hd_8!tTFT@@s`0KPDv5Wu|Jcy9sy_PWsb!0!ag!G4D8V;vMI+ul0Xkh zdi)o?q(!Qa&cezr($muMpsTCUloNocWE5fX-GR|QFaoK>EE8 z7r>Doz)1(#o1nw%+mbwFKp^NiuHkokL4^Ek`EB2jmiCU1-@IsQt@z8DshpfdyDMg=Cu!n{II#X5 z*Z$CEiu04y`W?OpqJc*WUd=FH(EhTj+lQ2=^SXxS?^6KXY=!w;l8C|+QDJ}I44d*2 z)jVf(^u5vX`WLX_$#xX+Q8n&Pai z8J{?->38I}sU?L&T`?+xi|mP+_~uWn;z(xKuWg{+`5

WJ5D+bGtjlT{AP#tV-yT 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⪚`d}D%wiZNT20;_wnL=BZpjc-P*xr>vEHHpy|~gv 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/public/icons/lamp.svg b/frontend/public/icons/lamp.svg new file mode 100644 index 000000000..e0b714d49 --- /dev/null +++ b/frontend/public/icons/lamp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/public/icons/micro-sd.svg b/frontend/public/icons/micro-sd.svg new file mode 100644 index 000000000..ce6e441ec --- /dev/null +++ b/frontend/public/icons/micro-sd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/public/icons/reload.svg b/frontend/public/icons/reload.svg new file mode 100644 index 000000000..5d3fae2f4 --- /dev/null +++ b/frontend/public/icons/reload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/public/icons/settings.svg b/frontend/public/icons/settings.svg new file mode 100644 index 000000000..a4c852ffe --- /dev/null +++ b/frontend/public/icons/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/public/icons/single-extruder1.png b/frontend/public/icons/single-extruder1.png new file mode 100644 index 0000000000000000000000000000000000000000..c31be02f5fe5cf054802d1682f7008b905309a31 GIT binary patch literal 5124 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

`qNq;~8us%JG@bs!8ca6H$lXn9ku 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 \ No newline at end of file diff --git a/frontend/public/icons/snowflake.svg b/frontend/public/icons/snowflake.svg new file mode 100644 index 000000000..91eb0e6d7 --- /dev/null +++ b/frontend/public/icons/snowflake.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/public/icons/speed.svg b/frontend/public/icons/speed.svg new file mode 100644 index 000000000..5af93bce8 --- /dev/null +++ b/frontend/public/icons/speed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/public/icons/temperature.svg b/frontend/public/icons/temperature.svg new file mode 100644 index 000000000..1c36dd1dc --- /dev/null +++ b/frontend/public/icons/temperature.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/public/icons/ventilation.svg b/frontend/public/icons/ventilation.svg new file mode 100644 index 000000000..689089968 --- /dev/null +++ b/frontend/public/icons/ventilation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/public/icons/video-camera.svg b/frontend/public/icons/video-camera.svg new file mode 100644 index 000000000..11b170197 --- /dev/null +++ b/frontend/public/icons/video-camera.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/public/icons/water.svg b/frontend/public/icons/water.svg new file mode 100644 index 000000000..4beef68b2 --- /dev/null +++ b/frontend/public/icons/water.svg @@ -0,0 +1,2 @@ + + diff --git a/frontend/public/icons/webcam.svg b/frontend/public/icons/webcam.svg new file mode 100644 index 000000000..78e3b7717 --- /dev/null +++ b/frontend/public/icons/webcam.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/src/components/control/AMSSectionDual.tsx b/frontend/src/components/control/AMSSectionDual.tsx new file mode 100644 index 000000000..bcd1860eb --- /dev/null +++ b/frontend/src/components/control/AMSSectionDual.tsx @@ -0,0 +1,337 @@ +import { useState } from 'react'; +import { useMutation } from '@tanstack/react-query'; +import { api } from '../../api/client'; +import type { PrinterStatus, AMSUnit } from '../../api/client'; +import { Loader2 } from 'lucide-react'; + +interface AMSSectionDualProps { + printerId: number; + status: PrinterStatus | null | undefined; + nozzleCount: number; +} + +function hexToRgb(hex: string | null): string { + if (!hex) return 'rgb(128, 128, 128)'; + const cleanHex = hex.replace('#', '').substring(0, 6); + const r = parseInt(cleanHex.substring(0, 2), 16) || 128; + const g = parseInt(cleanHex.substring(2, 4), 16) || 128; + const b = parseInt(cleanHex.substring(4, 6), 16) || 128; + return `rgb(${r}, ${g}, ${b})`; +} + +function isLightColor(hex: string | null): boolean { + if (!hex) return false; + const cleanHex = hex.replace('#', '').substring(0, 6); + const r = parseInt(cleanHex.substring(0, 2), 16) || 0; + const g = parseInt(cleanHex.substring(2, 4), 16) || 0; + const b = parseInt(cleanHex.substring(4, 6), 16) || 0; + const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255; + return luminance > 0.5; +} + +interface AMSPanelContentProps { + units: AMSUnit[]; + side: 'left' | 'right'; + isPrinting: boolean; + selectedAmsIndex: number; + onSelectAms: (index: number) => void; + selectedTray: number | null; + onSelectTray: (trayId: number | null) => void; +} + +function AMSPanelContent({ + units, + side, + isPrinting, + selectedAmsIndex, + onSelectAms, + selectedTray, + onSelectTray, +}: AMSPanelContentProps) { + const selectedUnit = units[selectedAmsIndex]; + const slotPrefix = side === 'left' ? 'A' : 'B'; + + return ( +

+
+ {side === 'left' ? 'Left Nozzle' : 'Right Nozzle'} +
+ + {/* AMS Tab Selectors - only show connected units */} +
+ {units.map((unit, index) => ( + + ))} +
+ + {/* AMS Content */} + {selectedUnit && ( +
+ {/* AMS Header - Humidity & Temp */} +
+ {selectedUnit.humidity !== null && ( + + + {selectedUnit.humidity} % + + )} + {selectedUnit.temp !== null && ( + + + {selectedUnit.temp}°C + + )} + ☀ +
+ + {/* Slot Labels */} +
+ {selectedUnit.tray.map((tray, index) => ( +
+ {slotPrefix}{index + 1} + +
+ ))} +
+ + {/* AMS Slots with integrated wiring */} +
+ {selectedUnit.tray.map((tray) => { + const globalTrayId = selectedUnit.id * 4 + tray.id; + const isSelected = selectedTray === globalTrayId; + const isEmpty = !tray.tray_type || tray.tray_type === '' || tray.tray_type === 'NONE'; + const isLight = isLightColor(tray.tray_color); + + return ( +
+ + {/* Vertical wire from slot center down */} +
+
+ ); + })} +
+ + {/* Wiring visualization - horizontal bar and hub */} +
+
+ {/* Horizontal bar connecting all slots (spans from first to last slot center) */} +
+ + {/* Center hub box on the horizontal bar */} +
+ + {/* Vertical wire from hub going down */} +
+ + {/* Horizontal wire from hub toward the center of the panel (extends beyond panel edge) */} + {side === 'left' && ( +
+ )} + {side === 'right' && ( +
+ )} +
+
+
+ )} + + {/* No AMS message */} + {units.length === 0 && ( +
+ No AMS connected to {side} nozzle +
+ )} +
+ ); +} + +export function AMSSectionDual({ printerId, status, nozzleCount }: AMSSectionDualProps) { + const isConnected = status?.connected ?? false; + const isPrinting = status?.state === 'RUNNING'; + const isDualNozzle = nozzleCount > 1; + const amsUnits: AMSUnit[] = status?.ams ?? []; + + // For dual nozzle, split AMS units between left and right + // In real implementation, this would be based on actual nozzle assignment + const leftUnits = isDualNozzle ? amsUnits.filter((_, i) => i % 2 === 0) : amsUnits; + const rightUnits = isDualNozzle ? amsUnits.filter((_, i) => i % 2 === 1) : []; + + const [leftAmsIndex, setLeftAmsIndex] = useState(0); + const [rightAmsIndex, setRightAmsIndex] = useState(0); + const [selectedTray, setSelectedTray] = useState(null); + + const loadMutation = useMutation({ + mutationFn: (trayId: number) => api.amsLoadFilament(printerId, trayId), + }); + + const unloadMutation = useMutation({ + mutationFn: () => api.amsUnloadFilament(printerId), + }); + + const handleLoad = () => { + if (selectedTray !== null) { + loadMutation.mutate(selectedTray); + } + }; + + const handleUnload = () => { + unloadMutation.mutate(); + }; + + const isLoading = loadMutation.isPending || unloadMutation.isPending; + + return ( +
+ {/* Center wiring and Extruder - absolutely centered between the two AMS panels */} + {isDualNozzle && ( + <> + {/* Center wiring: two vertical lines going down to extruder inlets */} + {/* Positioned to connect with horizontal wires from AMS panels */} +
+ {/* Left vertical line - connects to left AMS horizontal wire, goes to left extruder inlet */} +
+ {/* Right vertical line - connects to right AMS horizontal wire, goes to right extruder inlet */} +
+
+ {/* Extruder */} + Extruder + + )} + + {/* Dual Panel Layout */} +
+ {/* Left Nozzle Panel */} + + + {/* Right Nozzle Panel - only for dual nozzle */} + {isDualNozzle && ( + + )} +
+ + {/* Action Buttons Row with Extruder */} +
+ {/* Left buttons */} +
+ + +
+ + {/* Spacer */} +
+ + {/* Right buttons */} +
+ + +
+
+ + {/* Error messages */} + {(loadMutation.error || unloadMutation.error) && ( +

+ {(loadMutation.error || unloadMutation.error)?.message} +

+ )} +
+ ); +} diff --git a/frontend/src/components/control/BedControls.tsx b/frontend/src/components/control/BedControls.tsx new file mode 100644 index 000000000..e2a215b2a --- /dev/null +++ b/frontend/src/components/control/BedControls.tsx @@ -0,0 +1,99 @@ +import { useMutation } from '@tanstack/react-query'; +import { api, isConfirmationRequired } from '../../api/client'; +import type { PrinterStatus } from '../../api/client'; +import { useState } from 'react'; +import { ConfirmModal } from '../ConfirmModal'; + +interface BedControlsProps { + printerId: number; + status: PrinterStatus | null | undefined; +} + +export function BedControls({ printerId, status }: BedControlsProps) { + const isConnected = status?.connected ?? false; + + const [confirmModal, setConfirmModal] = useState<{ + token: string; + warning: string; + distance: number; + } | null>(null); + + const moveMutation = useMutation({ + mutationFn: ({ distance, token }: { distance: number; token?: string }) => + api.moveAxis(printerId, 'Z', distance, 1000, token), + onSuccess: (result, variables) => { + if (isConfirmationRequired(result)) { + setConfirmModal({ + token: result.token, + warning: result.warning, + distance: variables.distance, + }); + } + }, + }); + + const handleMove = (distance: number) => { + moveMutation.mutate({ distance }); + }; + + const handleConfirm = () => { + if (confirmModal) { + moveMutation.mutate({ distance: confirmModal.distance, token: confirmModal.token }); + setConfirmModal(null); + } + }; + + const isDisabled = !isConnected || moveMutation.isPending; + + return ( + <> +
+ + + Bed + + +
+ + {/* Confirmation Modal */} + {confirmModal && ( + setConfirmModal(null)} + /> + )} + + ); +} diff --git a/frontend/src/components/control/CameraFeed.tsx b/frontend/src/components/control/CameraFeed.tsx index f002c7594..55dae9a0b 100644 --- a/frontend/src/components/control/CameraFeed.tsx +++ b/frontend/src/components/control/CameraFeed.tsx @@ -55,84 +55,76 @@ export function CameraFeed({ printerId, isConnected }: CameraFeedProps) { }; return ( -
-
-
- - Camera -
-
- {streamEnabled && ( - <> - - - - )} - -
-
- -
- {!streamEnabled ? ( -
- - +
+ {!streamEnabled ? ( +
+
+ + {isConnected ? 'Click Start to view camera' : 'Printer not connected'} +
- ) : ( - <> - {isLoading && ( -
- -
- )} - {error ? ( -
- - {error} - -
- ) : ( - Camera stream - )} - - )} -
+
+ ) : ( + <> + {isLoading && ( +
+ +
+ )} + {error ? ( +
+ + {error} + +
+ ) : ( + Camera stream + )} + {/* Overlay controls */} +
+ + + +
+ + )}
); } diff --git a/frontend/src/components/control/ExtruderControls.tsx b/frontend/src/components/control/ExtruderControls.tsx new file mode 100644 index 000000000..0ebc48b90 --- /dev/null +++ b/frontend/src/components/control/ExtruderControls.tsx @@ -0,0 +1,98 @@ +import { useState } from 'react'; +import { useMutation } from '@tanstack/react-query'; +import type { PrinterStatus } from '../../api/client'; +import { ChevronUp, ChevronDown } from 'lucide-react'; + +interface ExtruderControlsProps { + printerId: number; + status: PrinterStatus | null | undefined; + nozzleCount: number; +} + +export function ExtruderControls({ status, nozzleCount }: ExtruderControlsProps) { + const isConnected = status?.connected ?? false; + const isPrinting = status?.state === 'RUNNING' || status?.state === 'PAUSE'; + const isDualNozzle = nozzleCount > 1; + + const [selectedNozzle, setSelectedNozzle] = useState<'left' | 'right'>('left'); + + // TODO: Add extrude/retract API calls when available + const extrudeMutation = useMutation({ + mutationFn: async ({ distance }: { distance: number }) => { + // Placeholder - implement when API is ready + console.log(`Extrude ${distance}mm on ${selectedNozzle} nozzle`); + }, + }); + + const handleExtrude = (distance: number) => { + extrudeMutation.mutate({ distance }); + }; + + const isDisabled = !isConnected || isPrinting || extrudeMutation.isPending; + + return ( +
+ {/* Left/Right Toggle - only for dual nozzle */} + {isDualNozzle && ( +
+ + +
+ )} + + {/* Extrude Up Button */} + + + {/* Extruder Image */} +
+ {isDualNozzle { + // Fallback if image doesn't load + (e.target as HTMLImageElement).style.display = 'none'; + }} + /> +
+ + {/* Retract Down Button */} + + + {/* Label */} + Extruder +
+ ); +} diff --git a/frontend/src/components/control/JogPad.tsx b/frontend/src/components/control/JogPad.tsx new file mode 100644 index 000000000..889e42885 --- /dev/null +++ b/frontend/src/components/control/JogPad.tsx @@ -0,0 +1,160 @@ +import { useMutation } from '@tanstack/react-query'; +import { api, isConfirmationRequired } from '../../api/client'; +import type { PrinterStatus } from '../../api/client'; +import { useState } from 'react'; +import { ConfirmModal } from '../ConfirmModal'; + +interface JogPadProps { + printerId: number; + status: PrinterStatus | null | undefined; +} + +export function JogPad({ printerId, status }: JogPadProps) { + const isConnected = status?.connected ?? false; + + const [confirmModal, setConfirmModal] = useState<{ + action: string; + token: string; + warning: string; + onConfirm: () => void; + } | null>(null); + + const homeMutation = useMutation({ + mutationFn: ({ axes, token }: { axes: string; token?: string }) => + api.homeAxes(printerId, axes, token), + onSuccess: (result) => { + if (isConfirmationRequired(result)) { + setConfirmModal({ + action: 'home', + token: result.token, + warning: result.warning, + onConfirm: () => homeMutation.mutate({ axes: 'XY', token: result.token }), + }); + } + }, + }); + + const moveMutation = useMutation({ + mutationFn: ({ axis, distance, token }: { axis: string; distance: number; token?: string }) => + api.moveAxis(printerId, axis, distance, 3000, token), + onSuccess: (result, variables) => { + if (isConfirmationRequired(result)) { + setConfirmModal({ + action: 'move', + token: result.token, + warning: result.warning, + onConfirm: () => + moveMutation.mutate({ + axis: variables.axis, + distance: variables.distance, + token: result.token, + }), + }); + } + }, + }); + + const handleHome = () => { + homeMutation.mutate({ axes: 'XY' }); + }; + + const handleMove = (axis: string, distance: number) => { + moveMutation.mutate({ axis, distance }); + }; + + const handleConfirm = () => { + if (confirmModal) { + confirmModal.onConfirm(); + setConfirmModal(null); + } + }; + + const isLoading = homeMutation.isPending || moveMutation.isPending; + const isDisabled = !isConnected || isLoading; + + return ( + <> +
+ {/* Use the actual jogpad.svg from mockup */} + Jog Pad + + {/* Invisible clickable areas overlaid on the SVG */} + {/* Outer ring - 10mm moves */} +
+ + {/* Confirmation Modal */} + {confirmModal && ( + setConfirmModal(null)} + /> + )} + + ); +} diff --git a/frontend/src/components/control/PrintControls.tsx b/frontend/src/components/control/PrintControls.tsx index c4cc2dc24..6483221f4 100644 --- a/frontend/src/components/control/PrintControls.tsx +++ b/frontend/src/components/control/PrintControls.tsx @@ -66,7 +66,7 @@ export function PrintControls({ printerId, status }: PrintControlsProps) { return ( <> -
+

Print Controls

diff --git a/frontend/src/components/control/PrintStatus.tsx b/frontend/src/components/control/PrintStatus.tsx index ff576f062..4460c830f 100644 --- a/frontend/src/components/control/PrintStatus.tsx +++ b/frontend/src/components/control/PrintStatus.tsx @@ -1,90 +1,190 @@ +import { useMutation, useQueryClient } from '@tanstack/react-query'; +import { useState } from 'react'; import type { PrinterStatus } from '../../api/client'; -import { Clock, Layers, FileText } from 'lucide-react'; +import { api, isConfirmationRequired } from '../../api/client'; +import { Pause, Square, Loader2 } from 'lucide-react'; +import { ConfirmModal } from '../ConfirmModal'; interface PrintStatusProps { printerId: number; status: PrinterStatus | null | undefined; } -function formatTime(seconds: number | null | undefined): string { - if (!seconds) return '--:--'; - const hours = Math.floor(seconds / 3600); - const mins = Math.floor((seconds % 3600) / 60); - if (hours > 0) { - return `${hours}h ${mins}m`; - } - return `${mins}m`; +function formatFinishTime(seconds: number | null | undefined): string { + if (!seconds) return 'N/A'; + const now = new Date(); + const finish = new Date(now.getTime() + seconds * 1000); + return finish.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); } -export function PrintStatus({ status }: PrintStatusProps) { - const isPrinting = status?.state === 'RUNNING' || status?.state === 'PAUSE'; +export function PrintStatus({ printerId, status }: PrintStatusProps) { + const queryClient = useQueryClient(); + const [confirmModal, setConfirmModal] = useState<{ + action: string; + token: string; + warning: string; + } | null>(null); + + const isConnected = status?.connected ?? false; + const isPrinting = status?.state === 'RUNNING'; + const isPaused = status?.state === 'PAUSE'; const progress = status?.progress ?? 0; + const pauseMutation = useMutation({ + mutationFn: () => api.pausePrint(printerId), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['printerStatuses'] }); + }, + }); + + const resumeMutation = useMutation({ + mutationFn: () => api.resumePrint(printerId), + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['printerStatuses'] }); + }, + }); + + const stopMutation = useMutation({ + mutationFn: (token?: string) => api.stopPrint(printerId, token), + onSuccess: (result) => { + if (isConfirmationRequired(result)) { + setConfirmModal({ + action: 'stop', + token: result.token, + warning: result.warning, + }); + } else { + queryClient.invalidateQueries({ queryKey: ['printerStatuses'] }); + } + }, + }); + + const handlePauseResume = () => { + if (isPrinting) { + pauseMutation.mutate(); + } else if (isPaused) { + resumeMutation.mutate(); + } + }; + + const handleStop = () => { + stopMutation.mutate(undefined); + }; + + const handleConfirmStop = () => { + if (confirmModal) { + stopMutation.mutate(confirmModal.token); + setConfirmModal(null); + } + }; + + const isLoading = pauseMutation.isPending || resumeMutation.isPending || stopMutation.isPending; + const canControl = isConnected && (isPrinting || isPaused); + return ( -
-
-

Print Status

- - {status?.state || 'IDLE'} - + <> +
Printing Progress
+
+ {/* Thumbnail */} +
+ {status?.subtask_name ? ( + { + (e.target as HTMLImageElement).style.display = 'none'; + (e.target as HTMLImageElement).parentElement!.innerHTML = 'Bambu
Lab
'; + }} + /> + ) : ( + Bambu
Lab
+ )} +
+ + {/* Info */} +
+
+ {status?.subtask_name || 'N/A'} +
+
+ {status?.state || 'N/A'} +
+ {/* Progress Bar */} +
+
+
+
+ Layer: {status?.layer_num ?? 'N/A'} / {status?.total_layers ?? 'N/A'}    {Math.round(progress)}% +
+
+ Estimated finish time: {formatFinishTime(status?.remaining_time)} +
+
+ + {/* Control Buttons */} +
+ + + +
- {isPrinting && status?.subtask_name && ( -
- - - {status.subtask_name} - -
+ {/* Error Message */} + {(pauseMutation.error || resumeMutation.error || stopMutation.error) && ( +

+ {(pauseMutation.error || resumeMutation.error || stopMutation.error)?.message} +

)} - {/* Progress Bar */} -
-
- Progress - {Math.round(progress)}% -
-
-
-
-
- - {/* Stats */} -
-
- -
-
Remaining
-
{formatTime(status?.remaining_time)}
-
-
-
- -
-
Layer
-
- {status?.layer_num ?? 0} / {status?.total_layers ?? 0} -
-
-
-
-
+ {/* Confirmation Modal */} + {confirmModal && ( + setConfirmModal(null)} + /> + )} + ); } diff --git a/frontend/src/components/control/TemperatureColumn.tsx b/frontend/src/components/control/TemperatureColumn.tsx new file mode 100644 index 000000000..8de73059c --- /dev/null +++ b/frontend/src/components/control/TemperatureColumn.tsx @@ -0,0 +1,93 @@ +import type { PrinterStatus } from '../../api/client'; + +interface Temperatures { + bed?: number; + bed_target?: number; + nozzle?: number; + nozzle_target?: number; + nozzle_2?: number; + nozzle_2_target?: number; + chamber?: number; +} + +interface TemperatureColumnProps { + printerId?: number; + status: PrinterStatus | null | undefined; + nozzleCount: number; +} + +export function TemperatureColumn({ status, nozzleCount }: TemperatureColumnProps) { + const temps = (status?.temperatures ?? {}) as Temperatures; + const isDualNozzle = nozzleCount > 1; + + return ( +
+ {/* Nozzle 1 (Left) */} +
+
+ +
+ {isDualNozzle && ( + + L + + )} + {Math.round(temps.nozzle ?? 0)} + /{Math.round(temps.nozzle_target ?? 0)} °C +
+ + {/* Nozzle 2 (Right) - only for dual nozzle */} + {isDualNozzle && ( +
+
+ +
+ + R + + {Math.round(temps.nozzle_2 ?? 0)} + /{Math.round(temps.nozzle_2_target ?? 0)} °C +
+ )} + + {/* Bed */} +
+
+ +
+ {/* Spacer to align with L/R badge (min-w-[18px]) */} + {isDualNozzle && } + {Math.round(temps.bed ?? 0)} + /{Math.round(temps.bed_target ?? 0)} °C +
+ + {/* Chamber */} +
+
+ +
+ {/* Spacer to align with L/R badge */} + {isDualNozzle && } + {Math.round(temps.chamber ?? 0)} + /{0} °C +
+ + {/* Air Condition - button */} + + + {/* Lamp - button */} + +
+ ); +} diff --git a/frontend/src/index.css b/frontend/src/index.css index 92892da6f..88e38b486 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -1,7 +1,9 @@ @import "tailwindcss"; - @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap'); +/* Enable class-based dark mode for Tailwind v4 */ +@custom-variant dark (&:where(.dark, .dark *)); + @theme { /* Bambu Lab brand colors - always the same */ --color-bambu-green: #00ae42; @@ -89,3 +91,22 @@ body { .animate-slide-in { animation: slide-in 0.2s ease-out; } + +/* Theme-aware icon inversion - only invert in dark mode */ +.icon-theme { + opacity: 0.5; +} + +.dark .icon-theme { + filter: invert(1); + opacity: 0.4; +} + +/* Jogpad theme styling - darken background in dark mode */ +.jogpad-theme { + /* Light mode - normal */ +} + +.dark .jogpad-theme { + filter: brightness(0.7) contrast(1.1); +} diff --git a/frontend/src/pages/ControlPage.tsx b/frontend/src/pages/ControlPage.tsx index 78a14c727..40557ff13 100644 --- a/frontend/src/pages/ControlPage.tsx +++ b/frontend/src/pages/ControlPage.tsx @@ -5,14 +5,12 @@ import { api } from '../api/client'; import type { PrinterStatus } from '../api/client'; import { CameraFeed } from '../components/control/CameraFeed'; import { PrintStatus } from '../components/control/PrintStatus'; -import { PrintControls } from '../components/control/PrintControls'; -import { TemperaturePanel } from '../components/control/TemperaturePanel'; -import { SpeedControl } from '../components/control/SpeedControl'; -import { FanControls } from '../components/control/FanControls'; -import { LightToggle } from '../components/control/LightToggle'; -import { MovementControls } from '../components/control/MovementControls'; -import { AMSPanel } from '../components/control/AMSPanel'; -import { Loader2, WifiOff } from 'lucide-react'; +import { TemperatureColumn } from '../components/control/TemperatureColumn'; +import { JogPad } from '../components/control/JogPad'; +import { BedControls } from '../components/control/BedControls'; +import { ExtruderControls } from '../components/control/ExtruderControls'; +import { AMSSectionDual } from '../components/control/AMSSectionDual'; +import { Loader2, WifiOff, Video, Webcam, HardDrive, Settings } from 'lucide-react'; export function ControlPage() { const [searchParams, setSearchParams] = useSearchParams(); @@ -89,7 +87,7 @@ export function ControlPage() { } return ( -
+
{/* Printer Tabs */}
@@ -125,79 +123,115 @@ export function ControlPage() {
- {/* Main Content */} + {/* Main Content - Bambu Studio Layout */} {selectedPrinter && ( -
-
+
+ {/* Left Panel - Camera & Print Progress */} +
+ {/* Camera Header Icons - same height as Control header */} +
+ + + + +
+ + {/* Camera Feed - Embedded directly */} +
+ +
+ + {/* Status Bar */} +
+ + {/* Print Progress with integrated controls */} +
+ +
+
+ + {/* Right Panel - Control */} +
+ {/* Control Header - same height as Camera header */} +
+ Control +
+ + + +
+
+ {/* Connection Warning */} {!selectedStatus?.connected && ( -
- - +
+ + Printer is not connected. Controls are disabled.
)} -
- {/* Left Column: Camera + Print Status */} -
- {/* Camera Feed */} - - - {/* Print Status & Controls */} - - - - {/* AMS Panel */} - -
- - {/* Right Column: Controls */} -
- {/* Temperature Panel */} - + {/* Top Section: Temp + Movement + Extruder */} +
+ {/* Temperature Column */} + - {/* Speed Control */} - + {/* Movement Column */} +
+ {/* Jog Section */} +
+ + +
- {/* Fan Controls */} - - - {/* Light Toggle */} - - - {/* Movement Controls */} - + {/* Extruder Section */} + +
+ + {/* AMS Section */} +
diff --git a/frontend/tailwind.config.js b/frontend/tailwind.config.js index 0b1e094fd..32f1598ae 100644 --- a/frontend/tailwind.config.js +++ b/frontend/tailwind.config.js @@ -1,5 +1,6 @@ /** @type {import('tailwindcss').Config} */ export default { + darkMode: 'class', content: [ "./index.html", "./src/**/*.{js,ts,jsx,tsx}", diff --git a/static/assets/index-BarB10XI.js b/static/assets/index-BdU-188w.js similarity index 63% rename from static/assets/index-BarB10XI.js rename to static/assets/index-BdU-188w.js index 9cd1bdb7e..fd054aa7e 100644 --- a/static/assets/index-BarB10XI.js +++ b/static/assets/index-BdU-188w.js @@ -1,18 +1,18 @@ -function Bte(t,e){for(var n=0;ni[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const a of r)if(a.type==="childList")for(const s of a.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&i(s)}).observe(document,{childList:!0,subtree:!0});function n(r){const a={};return r.integrity&&(a.integrity=r.integrity),r.referrerPolicy&&(a.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?a.credentials="include":r.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function i(r){if(r.ep)return;r.ep=!0;const a=n(r);fetch(r.href,a)}})();var Ay=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ys(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var xA={exports:{}},Ag={};var jj;function Hte(){if(jj)return Ag;jj=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(i,r,a){var s=null;if(a!==void 0&&(s=""+a),r.key!==void 0&&(s=""+r.key),"key"in r){a={};for(var o in r)o!=="key"&&(a[o]=r[o])}else a=r;return r=a.ref,{$$typeof:t,type:i,key:s,ref:r!==void 0?r:null,props:a}}return Ag.Fragment=e,Ag.jsx=n,Ag.jsxs=n,Ag}var Fj;function Vte(){return Fj||(Fj=1,xA.exports=Hte()),xA.exports}var m=Vte(),vA={exports:{}},Kt={};var zj;function $te(){if(zj)return Kt;zj=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),s=Symbol.for("react.context"),o=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),c=Symbol.for("react.memo"),u=Symbol.for("react.lazy"),f=Symbol.for("react.activity"),p=Symbol.iterator;function g(B){return B===null||typeof B!="object"?null:(B=p&&B[p]||B["@@iterator"],typeof B=="function"?B:null)}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,v={};function x(B,X,ae){this.props=B,this.context=X,this.refs=v,this.updater=ae||y}x.prototype.isReactComponent={},x.prototype.setState=function(B,X){if(typeof B!="object"&&typeof B!="function"&&B!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,B,X,"setState")},x.prototype.forceUpdate=function(B){this.updater.enqueueForceUpdate(this,B,"forceUpdate")};function M(){}M.prototype=x.prototype;function w(B,X,ae){this.props=B,this.context=X,this.refs=v,this.updater=ae||y}var E=w.prototype=new M;E.constructor=w,_(E,x.prototype),E.isPureReactComponent=!0;var T=Array.isArray;function P(){}var N={H:null,A:null,T:null,S:null},U=Object.prototype.hasOwnProperty;function C(B,X,ae){var ce=ae.ref;return{$$typeof:t,type:B,key:X,ref:ce!==void 0?ce:null,props:ae}}function k(B,X){return C(B.type,X,B.props)}function F(B){return typeof B=="object"&&B!==null&&B.$$typeof===t}function I(B){var X={"=":"=0",":":"=2"};return"$"+B.replace(/[=:]/g,function(ae){return X[ae]})}var q=/\/+/g;function L(B,X){return typeof B=="object"&&B!==null&&B.key!=null?I(""+B.key):X.toString(36)}function H(B){switch(B.status){case"fulfilled":return B.value;case"rejected":throw B.reason;default:switch(typeof B.status=="string"?B.then(P,P):(B.status="pending",B.then(function(X){B.status==="pending"&&(B.status="fulfilled",B.value=X)},function(X){B.status==="pending"&&(B.status="rejected",B.reason=X)})),B.status){case"fulfilled":return B.value;case"rejected":throw B.reason}}throw B}function V(B,X,ae,ce,xe){var ie=typeof B;(ie==="undefined"||ie==="boolean")&&(B=null);var ve=!1;if(B===null)ve=!0;else switch(ie){case"bigint":case"string":case"number":ve=!0;break;case"object":switch(B.$$typeof){case t:case e:ve=!0;break;case u:return ve=B._init,V(ve(B._payload),X,ae,ce,xe)}}if(ve)return xe=xe(B),ve=ce===""?"."+L(B,0):ce,T(xe)?(ae="",ve!=null&&(ae=ve.replace(q,"$&/")+"/"),V(xe,X,ae,"",function(we){return we})):xe!=null&&(F(xe)&&(xe=k(xe,ae+(xe.key==null||B&&B.key===xe.key?"":(""+xe.key).replace(q,"$&/")+"/")+ve)),X.push(xe)),1;ve=0;var Pe=ce===""?".":ce+":";if(T(B))for(var pe=0;pe>>1,se=V[Z];if(0>>1;Zr(ae,K))cer(xe,ae)?(V[Z]=xe,V[ce]=K,Z=ce):(V[Z]=ae,V[X]=K,Z=X);else if(cer(xe,K))V[Z]=xe,V[ce]=K,Z=ce;else break e}}return G}function r(V,G){var K=V.sortIndex-G.sortIndex;return K!==0?K:V.id-G.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var a=performance;t.unstable_now=function(){return a.now()}}else{var s=Date,o=s.now();t.unstable_now=function(){return s.now()-o}}var l=[],c=[],u=1,f=null,p=3,g=!1,y=!1,_=!1,v=!1,x=typeof setTimeout=="function"?setTimeout:null,M=typeof clearTimeout=="function"?clearTimeout:null,w=typeof setImmediate<"u"?setImmediate:null;function E(V){for(var G=n(c);G!==null;){if(G.callback===null)i(c);else if(G.startTime<=V)i(c),G.sortIndex=G.expirationTime,e(l,G);else break;G=n(c)}}function T(V){if(_=!1,E(V),!y)if(n(l)!==null)y=!0,P||(P=!0,I());else{var G=n(c);G!==null&&H(T,G.startTime-V)}}var P=!1,N=-1,U=5,C=-1;function k(){return v?!0:!(t.unstable_now()-CV&&k());){var Z=f.callback;if(typeof Z=="function"){f.callback=null,p=f.priorityLevel;var se=Z(f.expirationTime<=V);if(V=t.unstable_now(),typeof se=="function"){f.callback=se,E(V),G=!0;break t}f===n(l)&&i(l),E(V)}else i(l);f=n(l)}if(f!==null)G=!0;else{var B=n(c);B!==null&&H(T,B.startTime-V),G=!1}}break e}finally{f=null,p=K,g=!1}G=void 0}}finally{G?I():P=!1}}}var I;if(typeof w=="function")I=function(){w(F)};else if(typeof MessageChannel<"u"){var q=new MessageChannel,L=q.port2;q.port1.onmessage=F,I=function(){L.postMessage(null)}}else I=function(){x(F,0)};function H(V,G){N=x(function(){V(t.unstable_now())},G)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(V){V.callback=null},t.unstable_forceFrameRate=function(V){0>V||125Z?(V.sortIndex=K,e(c,V),n(l)===null&&V===n(c)&&(_?(M(N),N=-1):_=!0,H(T,K-Z))):(V.sortIndex=se,e(l,V),y||g||(y=!0,P||(P=!0,I()))),V},t.unstable_shouldYield=k,t.unstable_wrapCallback=function(V){var G=p;return function(){var K=p;p=G;try{return V.apply(this,arguments)}finally{p=K}}}})(_A)),_A}var Vj;function qte(){return Vj||(Vj=1,bA.exports=Wte()),bA.exports}var SA={exports:{}},qr={};var $j;function Xte(){if($j)return qr;$j=1;var t=pm();function e(l){var c="https://react.dev/errors/"+l;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),SA.exports=Xte(),SA.exports}var Wj;function Kte(){if(Wj)return Tg;Wj=1;var t=qte(),e=pm(),n=nG();function i(d){var h="https://react.dev/errors/"+d;if(1se||(d.current=Z[se],Z[se]=null,se--)}function ae(d,h){se++,Z[se]=d.current,d.current=h}var ce=B(null),xe=B(null),ie=B(null),ve=B(null);function Pe(d,h){switch(ae(ie,h),ae(xe,d),ae(ce,null),h.nodeType){case 9:case 11:d=(d=h.documentElement)&&(d=d.namespaceURI)?oj(d):0;break;default:if(d=h.tagName,h=h.namespaceURI)h=oj(h),d=lj(h,d);else switch(d){case"svg":d=1;break;case"math":d=2;break;default:d=0}}X(ce),ae(ce,d)}function pe(){X(ce),X(xe),X(ie)}function we(d){d.memoizedState!==null&&ae(ve,d);var h=ce.current,b=lj(h,d.type);h!==b&&(ae(xe,d),ae(ce,b))}function ze(d){xe.current===d&&(X(ce),X(xe)),ve.current===d&&(X(ve),Sg._currentValue=K)}var ue,ht;function z(d){if(ue===void 0)try{throw Error()}catch(b){var h=b.stack.trim().match(/\n( *(at )?)/);ue=h&&h[1]||"",ht=-1i[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))i(r);new MutationObserver(r=>{for(const a of r)if(a.type==="childList")for(const s of a.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&i(s)}).observe(document,{childList:!0,subtree:!0});function n(r){const a={};return r.integrity&&(a.integrity=r.integrity),r.referrerPolicy&&(a.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?a.credentials="include":r.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function i(r){if(r.ep)return;r.ep=!0;const a=n(r);fetch(r.href,a)}})();var _y=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Ys(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var mA={exports:{}},Sg={};var Uj;function zte(){if(Uj)return Sg;Uj=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.fragment");function n(i,r,a){var s=null;if(a!==void 0&&(s=""+a),r.key!==void 0&&(s=""+r.key),"key"in r){a={};for(var o in r)o!=="key"&&(a[o]=r[o])}else a=r;return r=a.ref,{$$typeof:t,type:i,key:s,ref:r!==void 0?r:null,props:a}}return Sg.Fragment=e,Sg.jsx=n,Sg.jsxs=n,Sg}var jj;function Bte(){return jj||(jj=1,mA.exports=zte()),mA.exports}var g=Bte(),gA={exports:{}},Kt={};var Fj;function Hte(){if(Fj)return Kt;Fj=1;var t=Symbol.for("react.transitional.element"),e=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),a=Symbol.for("react.consumer"),s=Symbol.for("react.context"),o=Symbol.for("react.forward_ref"),l=Symbol.for("react.suspense"),c=Symbol.for("react.memo"),u=Symbol.for("react.lazy"),f=Symbol.for("react.activity"),p=Symbol.iterator;function m(B){return B===null||typeof B!="object"?null:(B=p&&B[p]||B["@@iterator"],typeof B=="function"?B:null)}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,v={};function x(B,X,ae){this.props=B,this.context=X,this.refs=v,this.updater=ae||y}x.prototype.isReactComponent={},x.prototype.setState=function(B,X){if(typeof B!="object"&&typeof B!="function"&&B!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,B,X,"setState")},x.prototype.forceUpdate=function(B){this.updater.enqueueForceUpdate(this,B,"forceUpdate")};function M(){}M.prototype=x.prototype;function w(B,X,ae){this.props=B,this.context=X,this.refs=v,this.updater=ae||y}var E=w.prototype=new M;E.constructor=w,_(E,x.prototype),E.isPureReactComponent=!0;var T=Array.isArray;function P(){}var N={H:null,A:null,T:null,S:null},U=Object.prototype.hasOwnProperty;function C(B,X,ae){var ce=ae.ref;return{$$typeof:t,type:B,key:X,ref:ce!==void 0?ce:null,props:ae}}function k(B,X){return C(B.type,X,B.props)}function F(B){return typeof B=="object"&&B!==null&&B.$$typeof===t}function I(B){var X={"=":"=0",":":"=2"};return"$"+B.replace(/[=:]/g,function(ae){return X[ae]})}var q=/\/+/g;function L(B,X){return typeof B=="object"&&B!==null&&B.key!=null?I(""+B.key):X.toString(36)}function H(B){switch(B.status){case"fulfilled":return B.value;case"rejected":throw B.reason;default:switch(typeof B.status=="string"?B.then(P,P):(B.status="pending",B.then(function(X){B.status==="pending"&&(B.status="fulfilled",B.value=X)},function(X){B.status==="pending"&&(B.status="rejected",B.reason=X)})),B.status){case"fulfilled":return B.value;case"rejected":throw B.reason}}throw B}function V(B,X,ae,ce,xe){var ie=typeof B;(ie==="undefined"||ie==="boolean")&&(B=null);var ve=!1;if(B===null)ve=!0;else switch(ie){case"bigint":case"string":case"number":ve=!0;break;case"object":switch(B.$$typeof){case t:case e:ve=!0;break;case u:return ve=B._init,V(ve(B._payload),X,ae,ce,xe)}}if(ve)return xe=xe(B),ve=ce===""?"."+L(B,0):ce,T(xe)?(ae="",ve!=null&&(ae=ve.replace(q,"$&/")+"/"),V(xe,X,ae,"",function(we){return we})):xe!=null&&(F(xe)&&(xe=k(xe,ae+(xe.key==null||B&&B.key===xe.key?"":(""+xe.key).replace(q,"$&/")+"/")+ve)),X.push(xe)),1;ve=0;var Pe=ce===""?".":ce+":";if(T(B))for(var pe=0;pe>>1,se=V[Z];if(0>>1;Zr(ae,K))cer(xe,ae)?(V[Z]=xe,V[ce]=K,Z=ce):(V[Z]=ae,V[X]=K,Z=X);else if(cer(xe,K))V[Z]=xe,V[ce]=K,Z=ce;else break e}}return G}function r(V,G){var K=V.sortIndex-G.sortIndex;return K!==0?K:V.id-G.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var a=performance;t.unstable_now=function(){return a.now()}}else{var s=Date,o=s.now();t.unstable_now=function(){return s.now()-o}}var l=[],c=[],u=1,f=null,p=3,m=!1,y=!1,_=!1,v=!1,x=typeof setTimeout=="function"?setTimeout:null,M=typeof clearTimeout=="function"?clearTimeout:null,w=typeof setImmediate<"u"?setImmediate:null;function E(V){for(var G=n(c);G!==null;){if(G.callback===null)i(c);else if(G.startTime<=V)i(c),G.sortIndex=G.expirationTime,e(l,G);else break;G=n(c)}}function T(V){if(_=!1,E(V),!y)if(n(l)!==null)y=!0,P||(P=!0,I());else{var G=n(c);G!==null&&H(T,G.startTime-V)}}var P=!1,N=-1,U=5,C=-1;function k(){return v?!0:!(t.unstable_now()-CV&&k());){var Z=f.callback;if(typeof Z=="function"){f.callback=null,p=f.priorityLevel;var se=Z(f.expirationTime<=V);if(V=t.unstable_now(),typeof se=="function"){f.callback=se,E(V),G=!0;break t}f===n(l)&&i(l),E(V)}else i(l);f=n(l)}if(f!==null)G=!0;else{var B=n(c);B!==null&&H(T,B.startTime-V),G=!1}}break e}finally{f=null,p=K,m=!1}G=void 0}}finally{G?I():P=!1}}}var I;if(typeof w=="function")I=function(){w(F)};else if(typeof MessageChannel<"u"){var q=new MessageChannel,L=q.port2;q.port1.onmessage=F,I=function(){L.postMessage(null)}}else I=function(){x(F,0)};function H(V,G){N=x(function(){V(t.unstable_now())},G)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(V){V.callback=null},t.unstable_forceFrameRate=function(V){0>V||125Z?(V.sortIndex=K,e(c,V),n(l)===null&&V===n(c)&&(_?(M(N),N=-1):_=!0,H(T,K-Z))):(V.sortIndex=se,e(l,V),y||m||(y=!0,P||(P=!0,I()))),V},t.unstable_shouldYield=k,t.unstable_wrapCallback=function(V){var G=p;return function(){var K=p;p=G;try{return V.apply(this,arguments)}finally{p=K}}}})(yA)),yA}var Hj;function Gte(){return Hj||(Hj=1,vA.exports=$te()),vA.exports}var bA={exports:{}},qr={};var Vj;function Wte(){if(Vj)return qr;Vj=1;var t=um();function e(l){var c="https://react.dev/errors/"+l;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),bA.exports=Wte(),bA.exports}var Gj;function qte(){if(Gj)return wg;Gj=1;var t=Gte(),e=um(),n=tG();function i(d){var h="https://react.dev/errors/"+d;if(1se||(d.current=Z[se],Z[se]=null,se--)}function ae(d,h){se++,Z[se]=d.current,d.current=h}var ce=B(null),xe=B(null),ie=B(null),ve=B(null);function Pe(d,h){switch(ae(ie,h),ae(xe,d),ae(ce,null),h.nodeType){case 9:case 11:d=(d=h.documentElement)&&(d=d.namespaceURI)?sj(d):0;break;default:if(d=h.tagName,h=h.namespaceURI)h=sj(h),d=oj(h,d);else switch(d){case"svg":d=1;break;case"math":d=2;break;default:d=0}}X(ce),ae(ce,d)}function pe(){X(ce),X(xe),X(ie)}function we(d){d.memoizedState!==null&&ae(ve,d);var h=ce.current,b=oj(h,d.type);h!==b&&(ae(xe,d),ae(ce,b))}function ze(d){xe.current===d&&(X(ce),X(xe)),ve.current===d&&(X(ve),vg._currentValue=K)}var ue,ht;function z(d){if(ue===void 0)try{throw Error()}catch(b){var h=b.stack.trim().match(/\n( *(at )?)/);ue=h&&h[1]||"",ht=-1)":-1R||_e[S]!==Fe[R]){var Je=` `+_e[S].replace(" at new "," at ");return d.displayName&&Je.includes("")&&(Je=Je.replace("",d.displayName)),Je}while(1<=S&&0<=R);break}}}finally{W=!1,Error.prepareStackTrace=b}return(b=d?d.displayName||d.name:"")?z(b):""}function J(d,h){switch(d.tag){case 26:case 27:case 5:return z(d.type);case 16:return z("Lazy");case 13:return d.child!==h&&h!==null?z("Suspense Fallback"):z("Suspense");case 19:return z("SuspenseList");case 0:case 15:return re(d.type,!1);case 11:return re(d.type.render,!1);case 1:return re(d.type,!0);case 31:return z("Activity");default:return""}}function ee(d){try{var h="",b=null;do h+=J(d,b),b=d,d=d.return;while(d);return h}catch(S){return` Error generating stack: `+S.message+` -`+S.stack}}var oe=Object.prototype.hasOwnProperty,ke=t.unstable_scheduleCallback,Ne=t.unstable_cancelCallback,te=t.unstable_shouldYield,j=t.unstable_requestPaint,O=t.unstable_now,Y=t.unstable_getCurrentPriorityLevel,me=t.unstable_ImmediatePriority,ye=t.unstable_UserBlockingPriority,he=t.unstable_NormalPriority,Ze=t.unstable_LowPriority,Le=t.unstable_IdlePriority,Xe=t.log,at=t.unstable_setDisableYieldValue,Ie=null,Re=null;function pt(d){if(typeof Xe=="function"&&at(d),Re&&typeof Re.setStrictMode=="function")try{Re.setStrictMode(Ie,d)}catch{}}var nt=Math.clz32?Math.clz32:de,tt=Math.log,ut=Math.LN2;function de(d){return d>>>=0,d===0?32:31-(tt(d)/ut|0)|0}var it=256,fe=262144,Oe=4194304;function Me(d){var h=d&42;if(h!==0)return h;switch(d&-d){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return d&261888;case 262144:case 524288:case 1048576:case 2097152:return d&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return d&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return d}}function ge(d,h,b){var S=d.pendingLanes;if(S===0)return 0;var R=0,D=d.suspendedLanes,$=d.pingedLanes;d=d.warmLanes;var ne=S&134217727;return ne!==0?(S=ne&~D,S!==0?R=Me(S):($&=ne,$!==0?R=Me($):b||(b=ne&~d,b!==0&&(R=Me(b))))):(ne=S&~D,ne!==0?R=Me(ne):$!==0?R=Me($):b||(b=S&~d,b!==0&&(R=Me(b)))),R===0?0:h!==0&&h!==R&&(h&D)===0&&(D=R&-R,b=h&-h,D>=b||D===32&&(b&4194048)!==0)?h:R}function Be(d,h){return(d.pendingLanes&~(d.suspendedLanes&~d.pingedLanes)&h)===0}function ct(d,h){switch(d){case 1:case 2:case 4:case 8:case 64:return h+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return h+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function bt(){var d=Oe;return Oe<<=1,(Oe&62914560)===0&&(Oe=4194304),d}function Rt(d){for(var h=[],b=0;31>b;b++)h.push(d);return h}function on(d,h){d.pendingLanes|=h,h!==268435456&&(d.suspendedLanes=0,d.pingedLanes=0,d.warmLanes=0)}function Dt(d,h,b,S,R,D){var $=d.pendingLanes;d.pendingLanes=b,d.suspendedLanes=0,d.pingedLanes=0,d.warmLanes=0,d.expiredLanes&=b,d.entangledLanes&=b,d.errorRecoveryDisabledLanes&=b,d.shellSuspendCounter=0;var ne=d.entanglements,_e=d.expirationTimes,Fe=d.hiddenUpdates;for(b=$&~b;0"u")return null;try{return d.activeElement||d.body}catch{return d.body}}var Ti=/[\n"\\]/g;function Cn(d){return d.replace(Ti,function(h){return"\\"+h.charCodeAt(0).toString(16)+" "})}function Js(d,h,b,S,R,D,$,ne){d.name="",$!=null&&typeof $!="function"&&typeof $!="symbol"&&typeof $!="boolean"?d.type=$:d.removeAttribute("type"),h!=null?$==="number"?(h===0&&d.value===""||d.value!=h)&&(d.value=""+cn(h)):d.value!==""+cn(h)&&(d.value=""+cn(h)):$!=="submit"&&$!=="reset"||d.removeAttribute("value"),h!=null?mr(d,$,cn(h)):b!=null?mr(d,$,cn(b)):S!=null&&d.removeAttribute("value"),R==null&&D!=null&&(d.defaultChecked=!!D),R!=null&&(d.checked=R&&typeof R!="function"&&typeof R!="symbol"),ne!=null&&typeof ne!="function"&&typeof ne!="symbol"&&typeof ne!="boolean"?d.name=""+cn(ne):d.removeAttribute("name")}function Pn(d,h,b,S,R,D,$,ne){if(D!=null&&typeof D!="function"&&typeof D!="symbol"&&typeof D!="boolean"&&(d.type=D),h!=null||b!=null){if(!(D!=="submit"&&D!=="reset"||h!=null)){Xt(d);return}b=b!=null?""+cn(b):"",h=h!=null?""+cn(h):b,ne||h===d.value||(d.value=h),d.defaultValue=h}S=S??R,S=typeof S!="function"&&typeof S!="symbol"&&!!S,d.checked=ne?d.checked:!!S,d.defaultChecked=!!S,$!=null&&typeof $!="function"&&typeof $!="symbol"&&typeof $!="boolean"&&(d.name=$),Xt(d)}function mr(d,h,b){h==="number"&&yi(d.ownerDocument)===d||d.defaultValue===""+b||(d.defaultValue=""+b)}function Qi(d,h,b,S){if(d=d.options,h){h={};for(var R=0;R"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),xM=!1;if(cl)try{var zm={};Object.defineProperty(zm,"passive",{get:function(){xM=!0}}),window.addEventListener("test",zm,zm),window.removeEventListener("test",zm,zm)}catch{xM=!1}var kc=null,vM=null,vv=null;function lL(){if(vv)return vv;var d,h=vM,b=h.length,S,R="value"in kc?kc.value:kc.textContent,D=R.length;for(d=0;d=Vm),pL=" ",mL=!1;function gL(d,h){switch(d){case"keyup":return cee.indexOf(h.keyCode)!==-1;case"keydown":return h.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function xL(d){return d=d.detail,typeof d=="object"&&"data"in d?d.data:null}var Kf=!1;function dee(d,h){switch(d){case"compositionend":return xL(h);case"keypress":return h.which!==32?null:(mL=!0,pL);case"textInput":return d=h.data,d===pL&&mL?null:d;default:return null}}function fee(d,h){if(Kf)return d==="compositionend"||!wM&&gL(d,h)?(d=lL(),vv=vM=kc=null,Kf=!1,d):null;switch(d){case"paste":return null;case"keypress":if(!(h.ctrlKey||h.altKey||h.metaKey)||h.ctrlKey&&h.altKey){if(h.char&&1=h)return{node:b,offset:h-d};d=S}e:{for(;b;){if(b.nextSibling){b=b.nextSibling;break e}b=b.parentNode}b=void 0}b=EL(b)}}function TL(d,h){return d&&h?d===h?!0:d&&d.nodeType===3?!1:h&&h.nodeType===3?TL(d,h.parentNode):"contains"in d?d.contains(h):d.compareDocumentPosition?!!(d.compareDocumentPosition(h)&16):!1:!1}function CL(d){d=d!=null&&d.ownerDocument!=null&&d.ownerDocument.defaultView!=null?d.ownerDocument.defaultView:window;for(var h=yi(d.document);h instanceof d.HTMLIFrameElement;){try{var b=typeof h.contentWindow.location.href=="string"}catch{b=!1}if(b)d=h.contentWindow;else break;h=yi(d.document)}return h}function AM(d){var h=d&&d.nodeName&&d.nodeName.toLowerCase();return h&&(h==="input"&&(d.type==="text"||d.type==="search"||d.type==="tel"||d.type==="url"||d.type==="password")||h==="textarea"||d.contentEditable==="true")}var bee=cl&&"documentMode"in document&&11>=document.documentMode,Yf=null,TM=null,qm=null,CM=!1;function NL(d,h,b){var S=b.window===b?b.document:b.nodeType===9?b:b.ownerDocument;CM||Yf==null||Yf!==yi(S)||(S=Yf,"selectionStart"in S&&AM(S)?S={start:S.selectionStart,end:S.selectionEnd}:(S=(S.ownerDocument&&S.ownerDocument.defaultView||window).getSelection(),S={anchorNode:S.anchorNode,anchorOffset:S.anchorOffset,focusNode:S.focusNode,focusOffset:S.focusOffset}),qm&&Wm(qm,S)||(qm=S,S=dy(TM,"onSelect"),0>=$,R-=$,Co=1<<32-nt(h)+R|b<Qt?(xn=kt,kt=null):xn=kt.sibling;var wn=Ve(De,kt,je[Qt],rt);if(wn===null){kt===null&&(kt=xn);break}d&&kt&&wn.alternate===null&&h(De,kt),Ee=D(wn,Ee,Qt),Sn===null?It=wn:Sn.sibling=wn,Sn=wn,kt=xn}if(Qt===je.length)return b(De,kt),yn&&dl(De,Qt),It;if(kt===null){for(;QtQt?(xn=kt,kt=null):xn=kt.sibling;var eu=Ve(De,kt,wn.value,rt);if(eu===null){kt===null&&(kt=xn);break}d&&kt&&eu.alternate===null&&h(De,kt),Ee=D(eu,Ee,Qt),Sn===null?It=eu:Sn.sibling=eu,Sn=eu,kt=xn}if(wn.done)return b(De,kt),yn&&dl(De,Qt),It;if(kt===null){for(;!wn.done;Qt++,wn=je.next())wn=st(De,wn.value,rt),wn!==null&&(Ee=D(wn,Ee,Qt),Sn===null?It=wn:Sn.sibling=wn,Sn=wn);return yn&&dl(De,Qt),It}for(kt=S(kt);!wn.done;Qt++,wn=je.next())wn=Ye(kt,De,Qt,wn.value,rt),wn!==null&&(d&&wn.alternate!==null&&kt.delete(wn.key===null?Qt:wn.key),Ee=D(wn,Ee,Qt),Sn===null?It=wn:Sn.sibling=wn,Sn=wn);return d&&kt.forEach(function(zte){return h(De,zte)}),yn&&dl(De,Qt),It}function jn(De,Ee,je,rt){if(typeof je=="object"&&je!==null&&je.type===_&&je.key===null&&(je=je.props.children),typeof je=="object"&&je!==null){switch(je.$$typeof){case g:e:{for(var It=je.key;Ee!==null;){if(Ee.key===It){if(It=je.type,It===_){if(Ee.tag===7){b(De,Ee.sibling),rt=R(Ee,je.props.children),rt.return=De,De=rt;break e}}else if(Ee.elementType===It||typeof It=="object"&&It!==null&&It.$$typeof===U&&Sd(It)===Ee.type){b(De,Ee.sibling),rt=R(Ee,je.props),Jm(rt,je),rt.return=De,De=rt;break e}b(De,Ee);break}else h(De,Ee);Ee=Ee.sibling}je.type===_?(rt=xd(je.props.children,De.mode,rt,je.key),rt.return=De,De=rt):(rt=Cv(je.type,je.key,je.props,null,De.mode,rt),Jm(rt,je),rt.return=De,De=rt)}return $(De);case y:e:{for(It=je.key;Ee!==null;){if(Ee.key===It)if(Ee.tag===4&&Ee.stateNode.containerInfo===je.containerInfo&&Ee.stateNode.implementation===je.implementation){b(De,Ee.sibling),rt=R(Ee,je.children||[]),rt.return=De,De=rt;break e}else{b(De,Ee);break}else h(De,Ee);Ee=Ee.sibling}rt=LM(je,De.mode,rt),rt.return=De,De=rt}return $(De);case U:return je=Sd(je),jn(De,Ee,je,rt)}if(H(je))return Nt(De,Ee,je,rt);if(I(je)){if(It=I(je),typeof It!="function")throw Error(i(150));return je=It.call(je),Bt(De,Ee,je,rt)}if(typeof je.then=="function")return jn(De,Ee,Lv(je),rt);if(je.$$typeof===w)return jn(De,Ee,Pv(De,je),rt);Iv(De,je)}return typeof je=="string"&&je!==""||typeof je=="number"||typeof je=="bigint"?(je=""+je,Ee!==null&&Ee.tag===6?(b(De,Ee.sibling),rt=R(Ee,je),rt.return=De,De=rt):(b(De,Ee),rt=OM(je,De.mode,rt),rt.return=De,De=rt),$(De)):b(De,Ee)}return function(De,Ee,je,rt){try{Qm=0;var It=jn(De,Ee,je,rt);return oh=null,It}catch(kt){if(kt===sh||kt===Dv)throw kt;var Sn=Wa(29,kt,null,De.mode);return Sn.lanes=rt,Sn.return=De,Sn}finally{}}}var Md=QL(!0),JL=QL(!1),Uc=!1;function qM(d){d.updateQueue={baseState:d.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function XM(d,h){d=d.updateQueue,h.updateQueue===d&&(h.updateQueue={baseState:d.baseState,firstBaseUpdate:d.firstBaseUpdate,lastBaseUpdate:d.lastBaseUpdate,shared:d.shared,callbacks:null})}function jc(d){return{lane:d,tag:0,payload:null,callback:null,next:null}}function Fc(d,h,b){var S=d.updateQueue;if(S===null)return null;if(S=S.shared,(Tn&2)!==0){var R=S.pending;return R===null?h.next=h:(h.next=R.next,R.next=h),S.pending=h,h=Tv(d),IL(d,null,b),h}return Av(d,S,h,b),Tv(d)}function eg(d,h,b){if(h=h.updateQueue,h!==null&&(h=h.shared,(b&4194048)!==0)){var S=h.lanes;S&=d.pendingLanes,b|=S,h.lanes=b,Wn(d,b)}}function KM(d,h){var b=d.updateQueue,S=d.alternate;if(S!==null&&(S=S.updateQueue,b===S)){var R=null,D=null;if(b=b.firstBaseUpdate,b!==null){do{var $={lane:b.lane,tag:b.tag,payload:b.payload,callback:null,next:null};D===null?R=D=$:D=D.next=$,b=b.next}while(b!==null);D===null?R=D=h:D=D.next=h}else R=D=h;b={baseState:S.baseState,firstBaseUpdate:R,lastBaseUpdate:D,shared:S.shared,callbacks:S.callbacks},d.updateQueue=b;return}d=b.lastBaseUpdate,d===null?b.firstBaseUpdate=h:d.next=h,b.lastBaseUpdate=h}var YM=!1;function tg(){if(YM){var d=ah;if(d!==null)throw d}}function ng(d,h,b,S){YM=!1;var R=d.updateQueue;Uc=!1;var D=R.firstBaseUpdate,$=R.lastBaseUpdate,ne=R.shared.pending;if(ne!==null){R.shared.pending=null;var _e=ne,Fe=_e.next;_e.next=null,$===null?D=Fe:$.next=Fe,$=_e;var Je=d.alternate;Je!==null&&(Je=Je.updateQueue,ne=Je.lastBaseUpdate,ne!==$&&(ne===null?Je.firstBaseUpdate=Fe:ne.next=Fe,Je.lastBaseUpdate=_e))}if(D!==null){var st=R.baseState;$=0,Je=Fe=_e=null,ne=D;do{var Ve=ne.lane&-536870913,Ye=Ve!==ne.lane;if(Ye?(gn&Ve)===Ve:(S&Ve)===Ve){Ve!==0&&Ve===rh&&(YM=!0),Je!==null&&(Je=Je.next={lane:0,tag:ne.tag,payload:ne.payload,callback:null,next:null});e:{var Nt=d,Bt=ne;Ve=h;var jn=b;switch(Bt.tag){case 1:if(Nt=Bt.payload,typeof Nt=="function"){st=Nt.call(jn,st,Ve);break e}st=Nt;break e;case 3:Nt.flags=Nt.flags&-65537|128;case 0:if(Nt=Bt.payload,Ve=typeof Nt=="function"?Nt.call(jn,st,Ve):Nt,Ve==null)break e;st=f({},st,Ve);break e;case 2:Uc=!0}}Ve=ne.callback,Ve!==null&&(d.flags|=64,Ye&&(d.flags|=8192),Ye=R.callbacks,Ye===null?R.callbacks=[Ve]:Ye.push(Ve))}else Ye={lane:Ve,tag:ne.tag,payload:ne.payload,callback:ne.callback,next:null},Je===null?(Fe=Je=Ye,_e=st):Je=Je.next=Ye,$|=Ve;if(ne=ne.next,ne===null){if(ne=R.shared.pending,ne===null)break;Ye=ne,ne=Ye.next,Ye.next=null,R.lastBaseUpdate=Ye,R.shared.pending=null}}while(!0);Je===null&&(_e=st),R.baseState=_e,R.firstBaseUpdate=Fe,R.lastBaseUpdate=Je,D===null&&(R.shared.lanes=0),$c|=$,d.lanes=$,d.memoizedState=st}}function eI(d,h){if(typeof d!="function")throw Error(i(191,d));d.call(h)}function tI(d,h){var b=d.callbacks;if(b!==null)for(d.callbacks=null,d=0;dD?D:8;var $=V.T,ne={};V.T=ne,mE(d,!1,h,b);try{var _e=R(),Fe=V.S;if(Fe!==null&&Fe(ne,_e),_e!==null&&typeof _e=="object"&&typeof _e.then=="function"){var Je=Nee(_e,S);ag(d,h,Je,Za(d))}else ag(d,h,S,Za(d))}catch(st){ag(d,h,{then:function(){},status:"rejected",reason:st},Za())}finally{G.p=D,$!==null&&ne.types!==null&&($.types=ne.types),V.T=$}}function Lee(){}function hE(d,h,b,S){if(d.tag!==5)throw Error(i(476));var R=DI(d).queue;kI(d,R,h,K,b===null?Lee:function(){return OI(d),b(S)})}function DI(d){var h=d.memoizedState;if(h!==null)return h;h={memoizedState:K,baseState:K,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ml,lastRenderedState:K},next:null};var b={};return h.next={memoizedState:b,baseState:b,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ml,lastRenderedState:b},next:null},d.memoizedState=h,d=d.alternate,d!==null&&(d.memoizedState=h),h}function OI(d){var h=DI(d);h.next===null&&(h=d.alternate.memoizedState),ag(d,h.next.queue,{},Za())}function pE(){return Dr(Sg)}function LI(){return Ni().memoizedState}function II(){return Ni().memoizedState}function Iee(d){for(var h=d.return;h!==null;){switch(h.tag){case 24:case 3:var b=Za();d=jc(b);var S=Fc(h,d,b);S!==null&&(Na(S,h,b),eg(S,h,b)),h={cache:VM()},d.payload=h;return}h=h.return}}function Uee(d,h,b){var S=Za();b={lane:S,revertLane:0,gesture:null,action:b,hasEagerState:!1,eagerState:null,next:null},Wv(d)?jI(h,b):(b=kM(d,h,b,S),b!==null&&(Na(b,d,S),FI(b,h,S)))}function UI(d,h,b){var S=Za();ag(d,h,b,S)}function ag(d,h,b,S){var R={lane:S,revertLane:0,gesture:null,action:b,hasEagerState:!1,eagerState:null,next:null};if(Wv(d))jI(h,R);else{var D=d.alternate;if(d.lanes===0&&(D===null||D.lanes===0)&&(D=h.lastRenderedReducer,D!==null))try{var $=h.lastRenderedState,ne=D($,b);if(R.hasEagerState=!0,R.eagerState=ne,Ga(ne,$))return Av(d,h,R,0),qn===null&&Ev(),!1}catch{}finally{}if(b=kM(d,h,R,S),b!==null)return Na(b,d,S),FI(b,h,S),!0}return!1}function mE(d,h,b,S){if(S={lane:2,revertLane:qE(),gesture:null,action:S,hasEagerState:!1,eagerState:null,next:null},Wv(d)){if(h)throw Error(i(479))}else h=kM(d,b,S,2),h!==null&&Na(h,d,2)}function Wv(d){var h=d.alternate;return d===Zt||h!==null&&h===Zt}function jI(d,h){ch=Fv=!0;var b=d.pending;b===null?h.next=h:(h.next=b.next,b.next=h),d.pending=h}function FI(d,h,b){if((b&4194048)!==0){var S=h.lanes;S&=d.pendingLanes,b|=S,h.lanes=b,Wn(d,b)}}var sg={readContext:Dr,use:Hv,useCallback:bi,useContext:bi,useEffect:bi,useImperativeHandle:bi,useLayoutEffect:bi,useInsertionEffect:bi,useMemo:bi,useReducer:bi,useRef:bi,useState:bi,useDebugValue:bi,useDeferredValue:bi,useTransition:bi,useSyncExternalStore:bi,useId:bi,useHostTransitionStatus:bi,useFormState:bi,useActionState:bi,useOptimistic:bi,useMemoCache:bi,useCacheRefresh:bi};sg.useEffectEvent=bi;var zI={readContext:Dr,use:Hv,useCallback:function(d,h){return ca().memoizedState=[d,h===void 0?null:h],d},useContext:Dr,useEffect:wI,useImperativeHandle:function(d,h,b){b=b!=null?b.concat([d]):null,$v(4194308,4,TI.bind(null,h,d),b)},useLayoutEffect:function(d,h){return $v(4194308,4,d,h)},useInsertionEffect:function(d,h){$v(4,2,d,h)},useMemo:function(d,h){var b=ca();h=h===void 0?null:h;var S=d();if(Ed){pt(!0);try{d()}finally{pt(!1)}}return b.memoizedState=[S,h],S},useReducer:function(d,h,b){var S=ca();if(b!==void 0){var R=b(h);if(Ed){pt(!0);try{b(h)}finally{pt(!1)}}}else R=h;return S.memoizedState=S.baseState=R,d={pending:null,lanes:0,dispatch:null,lastRenderedReducer:d,lastRenderedState:R},S.queue=d,d=d.dispatch=Uee.bind(null,Zt,d),[S.memoizedState,d]},useRef:function(d){var h=ca();return d={current:d},h.memoizedState=d},useState:function(d){d=lE(d);var h=d.queue,b=UI.bind(null,Zt,h);return h.dispatch=b,[d.memoizedState,b]},useDebugValue:dE,useDeferredValue:function(d,h){var b=ca();return fE(b,d,h)},useTransition:function(){var d=lE(!1);return d=kI.bind(null,Zt,d.queue,!0,!1),ca().memoizedState=d,[!1,d]},useSyncExternalStore:function(d,h,b){var S=Zt,R=ca();if(yn){if(b===void 0)throw Error(i(407));b=b()}else{if(b=h(),qn===null)throw Error(i(349));(gn&127)!==0||oI(S,h,b)}R.memoizedState=b;var D={value:b,getSnapshot:h};return R.queue=D,wI(cI.bind(null,S,D,d),[d]),S.flags|=2048,dh(9,{destroy:void 0},lI.bind(null,S,D,b,h),null),b},useId:function(){var d=ca(),h=qn.identifierPrefix;if(yn){var b=No,S=Co;b=(S&~(1<<32-nt(S)-1)).toString(32)+b,h="_"+h+"R_"+b,b=zv++,0<\/script>",D=D.removeChild(D.firstChild);break;case"select":D=typeof S.is=="string"?$.createElement("select",{is:S.is}):$.createElement("select"),S.multiple?D.multiple=!0:S.size&&(D.size=S.size);break;default:D=typeof S.is=="string"?$.createElement(R,{is:S.is}):$.createElement(R)}}D[hi]=h,D[Ai]=S;e:for($=h.child;$!==null;){if($.tag===5||$.tag===6)D.appendChild($.stateNode);else if($.tag!==4&&$.tag!==27&&$.child!==null){$.child.return=$,$=$.child;continue}if($===h)break e;for(;$.sibling===null;){if($.return===null||$.return===h)break e;$=$.return}$.sibling.return=$.return,$=$.sibling}h.stateNode=D;e:switch(Lr(D,R,S),R){case"button":case"input":case"select":case"textarea":S=!!S.autoFocus;break e;case"img":S=!0;break e;default:S=!1}S&&xl(h)}}return ti(h),NE(h,h.type,d===null?null:d.memoizedProps,h.pendingProps,b),null;case 6:if(d&&h.stateNode!=null)d.memoizedProps!==S&&xl(h);else{if(typeof S!="string"&&h.stateNode===null)throw Error(i(166));if(d=ie.current,nh(h)){if(d=h.stateNode,b=h.memoizedProps,S=null,R=kr,R!==null)switch(R.tag){case 27:case 5:S=R.memoizedProps}d[hi]=h,d=!!(d.nodeValue===b||S!==null&&S.suppressHydrationWarning===!0||aj(d.nodeValue,b)),d||Lc(h,!0)}else d=fy(d).createTextNode(S),d[hi]=h,h.stateNode=d}return ti(h),null;case 31:if(b=h.memoizedState,d===null||d.memoizedState!==null){if(S=nh(h),b!==null){if(d===null){if(!S)throw Error(i(318));if(d=h.memoizedState,d=d!==null?d.dehydrated:null,!d)throw Error(i(557));d[hi]=h}else vd(),(h.flags&128)===0&&(h.memoizedState=null),h.flags|=4;ti(h),d=!1}else b=FM(),d!==null&&d.memoizedState!==null&&(d.memoizedState.hydrationErrors=b),d=!0;if(!d)return h.flags&256?(Xa(h),h):(Xa(h),null);if((h.flags&128)!==0)throw Error(i(558))}return ti(h),null;case 13:if(S=h.memoizedState,d===null||d.memoizedState!==null&&d.memoizedState.dehydrated!==null){if(R=nh(h),S!==null&&S.dehydrated!==null){if(d===null){if(!R)throw Error(i(318));if(R=h.memoizedState,R=R!==null?R.dehydrated:null,!R)throw Error(i(317));R[hi]=h}else vd(),(h.flags&128)===0&&(h.memoizedState=null),h.flags|=4;ti(h),R=!1}else R=FM(),d!==null&&d.memoizedState!==null&&(d.memoizedState.hydrationErrors=R),R=!0;if(!R)return h.flags&256?(Xa(h),h):(Xa(h),null)}return Xa(h),(h.flags&128)!==0?(h.lanes=b,h):(b=S!==null,d=d!==null&&d.memoizedState!==null,b&&(S=h.child,R=null,S.alternate!==null&&S.alternate.memoizedState!==null&&S.alternate.memoizedState.cachePool!==null&&(R=S.alternate.memoizedState.cachePool.pool),D=null,S.memoizedState!==null&&S.memoizedState.cachePool!==null&&(D=S.memoizedState.cachePool.pool),D!==R&&(S.flags|=2048)),b!==d&&b&&(h.child.flags|=8192),Zv(h,h.updateQueue),ti(h),null);case 4:return pe(),d===null&&ZE(h.stateNode.containerInfo),ti(h),null;case 10:return hl(h.type),ti(h),null;case 19:if(X(Ci),S=h.memoizedState,S===null)return ti(h),null;if(R=(h.flags&128)!==0,D=S.rendering,D===null)if(R)lg(S,!1);else{if(_i!==0||d!==null&&(d.flags&128)!==0)for(d=h.child;d!==null;){if(D=jv(d),D!==null){for(h.flags|=128,lg(S,!1),d=D.updateQueue,h.updateQueue=d,Zv(h,d),h.subtreeFlags=0,d=b,b=h.child;b!==null;)UL(b,d),b=b.sibling;return ae(Ci,Ci.current&1|2),yn&&dl(h,S.treeForkCount),h.child}d=d.sibling}S.tail!==null&&O()>ny&&(h.flags|=128,R=!0,lg(S,!1),h.lanes=4194304)}else{if(!R)if(d=jv(D),d!==null){if(h.flags|=128,R=!0,d=d.updateQueue,h.updateQueue=d,Zv(h,d),lg(S,!0),S.tail===null&&S.tailMode==="hidden"&&!D.alternate&&!yn)return ti(h),null}else 2*O()-S.renderingStartTime>ny&&b!==536870912&&(h.flags|=128,R=!0,lg(S,!1),h.lanes=4194304);S.isBackwards?(D.sibling=h.child,h.child=D):(d=S.last,d!==null?d.sibling=D:h.child=D,S.last=D)}return S.tail!==null?(d=S.tail,S.rendering=d,S.tail=d.sibling,S.renderingStartTime=O(),d.sibling=null,b=Ci.current,ae(Ci,R?b&1|2:b&1),yn&&dl(h,S.treeForkCount),d):(ti(h),null);case 22:case 23:return Xa(h),QM(),S=h.memoizedState!==null,d!==null?d.memoizedState!==null!==S&&(h.flags|=8192):S&&(h.flags|=8192),S?(b&536870912)!==0&&(h.flags&128)===0&&(ti(h),h.subtreeFlags&6&&(h.flags|=8192)):ti(h),b=h.updateQueue,b!==null&&Zv(h,b.retryQueue),b=null,d!==null&&d.memoizedState!==null&&d.memoizedState.cachePool!==null&&(b=d.memoizedState.cachePool.pool),S=null,h.memoizedState!==null&&h.memoizedState.cachePool!==null&&(S=h.memoizedState.cachePool.pool),S!==b&&(h.flags|=2048),d!==null&&X(_d),null;case 24:return b=null,d!==null&&(b=d.memoizedState.cache),h.memoizedState.cache!==b&&(h.flags|=2048),hl(Ii),ti(h),null;case 25:return null;case 30:return null}throw Error(i(156,h.tag))}function Hee(d,h){switch(UM(h),h.tag){case 1:return d=h.flags,d&65536?(h.flags=d&-65537|128,h):null;case 3:return hl(Ii),pe(),d=h.flags,(d&65536)!==0&&(d&128)===0?(h.flags=d&-65537|128,h):null;case 26:case 27:case 5:return ze(h),null;case 31:if(h.memoizedState!==null){if(Xa(h),h.alternate===null)throw Error(i(340));vd()}return d=h.flags,d&65536?(h.flags=d&-65537|128,h):null;case 13:if(Xa(h),d=h.memoizedState,d!==null&&d.dehydrated!==null){if(h.alternate===null)throw Error(i(340));vd()}return d=h.flags,d&65536?(h.flags=d&-65537|128,h):null;case 19:return X(Ci),null;case 4:return pe(),null;case 10:return hl(h.type),null;case 22:case 23:return Xa(h),QM(),d!==null&&X(_d),d=h.flags,d&65536?(h.flags=d&-65537|128,h):null;case 24:return hl(Ii),null;case 25:return null;default:return null}}function uU(d,h){switch(UM(h),h.tag){case 3:hl(Ii),pe();break;case 26:case 27:case 5:ze(h);break;case 4:pe();break;case 31:h.memoizedState!==null&&Xa(h);break;case 13:Xa(h);break;case 19:X(Ci);break;case 10:hl(h.type);break;case 22:case 23:Xa(h),QM(),d!==null&&X(_d);break;case 24:hl(Ii)}}function cg(d,h){try{var b=h.updateQueue,S=b!==null?b.lastEffect:null;if(S!==null){var R=S.next;b=R;do{if((b.tag&d)===d){S=void 0;var D=b.create,$=b.inst;S=D(),$.destroy=S}b=b.next}while(b!==R)}}catch(ne){Dn(h,h.return,ne)}}function Hc(d,h,b){try{var S=h.updateQueue,R=S!==null?S.lastEffect:null;if(R!==null){var D=R.next;S=D;do{if((S.tag&d)===d){var $=S.inst,ne=$.destroy;if(ne!==void 0){$.destroy=void 0,R=h;var _e=b,Fe=ne;try{Fe()}catch(Je){Dn(R,_e,Je)}}}S=S.next}while(S!==D)}}catch(Je){Dn(h,h.return,Je)}}function dU(d){var h=d.updateQueue;if(h!==null){var b=d.stateNode;try{tI(h,b)}catch(S){Dn(d,d.return,S)}}}function fU(d,h,b){b.props=Ad(d.type,d.memoizedProps),b.state=d.memoizedState;try{b.componentWillUnmount()}catch(S){Dn(d,h,S)}}function ug(d,h){try{var b=d.ref;if(b!==null){switch(d.tag){case 26:case 27:case 5:var S=d.stateNode;break;case 30:S=d.stateNode;break;default:S=d.stateNode}typeof b=="function"?d.refCleanup=b(S):b.current=S}}catch(R){Dn(d,h,R)}}function Ro(d,h){var b=d.ref,S=d.refCleanup;if(b!==null)if(typeof S=="function")try{S()}catch(R){Dn(d,h,R)}finally{d.refCleanup=null,d=d.alternate,d!=null&&(d.refCleanup=null)}else if(typeof b=="function")try{b(null)}catch(R){Dn(d,h,R)}else b.current=null}function hU(d){var h=d.type,b=d.memoizedProps,S=d.stateNode;try{e:switch(h){case"button":case"input":case"select":case"textarea":b.autoFocus&&S.focus();break e;case"img":b.src?S.src=b.src:b.srcSet&&(S.srcset=b.srcSet)}}catch(R){Dn(d,d.return,R)}}function RE(d,h,b){try{var S=d.stateNode;ute(S,d.type,b,h),S[Ai]=h}catch(R){Dn(d,d.return,R)}}function pU(d){return d.tag===5||d.tag===3||d.tag===26||d.tag===27&&Kc(d.type)||d.tag===4}function PE(d){e:for(;;){for(;d.sibling===null;){if(d.return===null||pU(d.return))return null;d=d.return}for(d.sibling.return=d.return,d=d.sibling;d.tag!==5&&d.tag!==6&&d.tag!==18;){if(d.tag===27&&Kc(d.type)||d.flags&2||d.child===null||d.tag===4)continue e;d.child.return=d,d=d.child}if(!(d.flags&2))return d.stateNode}}function kE(d,h,b){var S=d.tag;if(S===5||S===6)d=d.stateNode,h?(b.nodeType===9?b.body:b.nodeName==="HTML"?b.ownerDocument.body:b).insertBefore(d,h):(h=b.nodeType===9?b.body:b.nodeName==="HTML"?b.ownerDocument.body:b,h.appendChild(d),b=b._reactRootContainer,b!=null||h.onclick!==null||(h.onclick=ll));else if(S!==4&&(S===27&&Kc(d.type)&&(b=d.stateNode,h=null),d=d.child,d!==null))for(kE(d,h,b),d=d.sibling;d!==null;)kE(d,h,b),d=d.sibling}function Qv(d,h,b){var S=d.tag;if(S===5||S===6)d=d.stateNode,h?b.insertBefore(d,h):b.appendChild(d);else if(S!==4&&(S===27&&Kc(d.type)&&(b=d.stateNode),d=d.child,d!==null))for(Qv(d,h,b),d=d.sibling;d!==null;)Qv(d,h,b),d=d.sibling}function mU(d){var h=d.stateNode,b=d.memoizedProps;try{for(var S=d.type,R=h.attributes;R.length;)h.removeAttributeNode(R[0]);Lr(h,S,b),h[hi]=d,h[Ai]=b}catch(D){Dn(d,d.return,D)}}var vl=!1,Fi=!1,DE=!1,gU=typeof WeakSet=="function"?WeakSet:Set,xr=null;function Vee(d,h){if(d=d.containerInfo,eA=yy,d=CL(d),AM(d)){if("selectionStart"in d)var b={start:d.selectionStart,end:d.selectionEnd};else e:{b=(b=d.ownerDocument)&&b.defaultView||window;var S=b.getSelection&&b.getSelection();if(S&&S.rangeCount!==0){b=S.anchorNode;var R=S.anchorOffset,D=S.focusNode;S=S.focusOffset;try{b.nodeType,D.nodeType}catch{b=null;break e}var $=0,ne=-1,_e=-1,Fe=0,Je=0,st=d,Ve=null;t:for(;;){for(var Ye;st!==b||R!==0&&st.nodeType!==3||(ne=$+R),st!==D||S!==0&&st.nodeType!==3||(_e=$+S),st.nodeType===3&&($+=st.nodeValue.length),(Ye=st.firstChild)!==null;)Ve=st,st=Ye;for(;;){if(st===d)break t;if(Ve===b&&++Fe===R&&(ne=$),Ve===D&&++Je===S&&(_e=$),(Ye=st.nextSibling)!==null)break;st=Ve,Ve=st.parentNode}st=Ye}b=ne===-1||_e===-1?null:{start:ne,end:_e}}else b=null}b=b||{start:0,end:0}}else b=null;for(tA={focusedElem:d,selectionRange:b},yy=!1,xr=h;xr!==null;)if(h=xr,d=h.child,(h.subtreeFlags&1028)!==0&&d!==null)d.return=h,xr=d;else for(;xr!==null;){switch(h=xr,D=h.alternate,d=h.flags,h.tag){case 0:if((d&4)!==0&&(d=h.updateQueue,d=d!==null?d.events:null,d!==null))for(b=0;b title"))),Lr(D,S,b),D[hi]=d,Te(D),S=D;break e;case"link":var $=Sj("link","href",R).get(S+(b.href||""));if($){for(var ne=0;ne<$.length;ne++)if(D=$[ne],D.getAttribute("href")===(b.href==null||b.href===""?null:b.href)&&D.getAttribute("rel")===(b.rel==null?null:b.rel)&&D.getAttribute("title")===(b.title==null?null:b.title)&&D.getAttribute("crossorigin")===(b.crossOrigin==null?null:b.crossOrigin)){$.splice(ne,1);break t}}D=R.createElement(S),Lr(D,S,b),R.head.appendChild(D);break;case"meta":if($=Sj("meta","content",R).get(S+(b.content||""))){for(ne=0;ne<$.length;ne++)if(D=$[ne],D.getAttribute("content")===(b.content==null?null:""+b.content)&&D.getAttribute("name")===(b.name==null?null:b.name)&&D.getAttribute("property")===(b.property==null?null:b.property)&&D.getAttribute("http-equiv")===(b.httpEquiv==null?null:b.httpEquiv)&&D.getAttribute("charset")===(b.charSet==null?null:b.charSet)){$.splice(ne,1);break t}}D=R.createElement(S),Lr(D,S,b),R.head.appendChild(D);break;default:throw Error(i(468,S))}D[hi]=d,Te(D),S=D}d.stateNode=S}else wj(R,d.type,d.stateNode);else d.stateNode=_j(R,S,d.memoizedProps);else D!==S?(D===null?b.stateNode!==null&&(b=b.stateNode,b.parentNode.removeChild(b)):D.count--,S===null?wj(R,d.type,d.stateNode):_j(R,S,d.memoizedProps)):S===null&&d.stateNode!==null&&RE(d,d.memoizedProps,b.memoizedProps)}break;case 27:Aa(h,d),Ta(d),S&512&&(Fi||b===null||Ro(b,b.return)),b!==null&&S&4&&RE(d,d.memoizedProps,b.memoizedProps);break;case 5:if(Aa(h,d),Ta(d),S&512&&(Fi||b===null||Ro(b,b.return)),d.flags&32){R=d.stateNode;try{To(R,"")}catch(Nt){Dn(d,d.return,Nt)}}S&4&&d.stateNode!=null&&(R=d.memoizedProps,RE(d,R,b!==null?b.memoizedProps:R)),S&1024&&(DE=!0);break;case 6:if(Aa(h,d),Ta(d),S&4){if(d.stateNode===null)throw Error(i(162));S=d.memoizedProps,b=d.stateNode;try{b.nodeValue=S}catch(Nt){Dn(d,d.return,Nt)}}break;case 3:if(my=null,R=to,to=hy(h.containerInfo),Aa(h,d),to=R,Ta(d),S&4&&b!==null&&b.memoizedState.isDehydrated)try{wh(h.containerInfo)}catch(Nt){Dn(d,d.return,Nt)}DE&&(DE=!1,wU(d));break;case 4:S=to,to=hy(d.stateNode.containerInfo),Aa(h,d),Ta(d),to=S;break;case 12:Aa(h,d),Ta(d);break;case 31:Aa(h,d),Ta(d),S&4&&(S=d.updateQueue,S!==null&&(d.updateQueue=null,Jv(d,S)));break;case 13:Aa(h,d),Ta(d),d.child.flags&8192&&d.memoizedState!==null!=(b!==null&&b.memoizedState!==null)&&(ty=O()),S&4&&(S=d.updateQueue,S!==null&&(d.updateQueue=null,Jv(d,S)));break;case 22:R=d.memoizedState!==null;var _e=b!==null&&b.memoizedState!==null,Fe=vl,Je=Fi;if(vl=Fe||R,Fi=Je||_e,Aa(h,d),Fi=Je,vl=Fe,Ta(d),S&8192)e:for(h=d.stateNode,h._visibility=R?h._visibility&-2:h._visibility|1,R&&(b===null||_e||vl||Fi||Td(d)),b=null,h=d;;){if(h.tag===5||h.tag===26){if(b===null){_e=b=h;try{if(D=_e.stateNode,R)$=D.style,typeof $.setProperty=="function"?$.setProperty("display","none","important"):$.display="none";else{ne=_e.stateNode;var st=_e.memoizedProps.style,Ve=st!=null&&st.hasOwnProperty("display")?st.display:null;ne.style.display=Ve==null||typeof Ve=="boolean"?"":(""+Ve).trim()}}catch(Nt){Dn(_e,_e.return,Nt)}}}else if(h.tag===6){if(b===null){_e=h;try{_e.stateNode.nodeValue=R?"":_e.memoizedProps}catch(Nt){Dn(_e,_e.return,Nt)}}}else if(h.tag===18){if(b===null){_e=h;try{var Ye=_e.stateNode;R?fj(Ye,!0):fj(_e.stateNode,!1)}catch(Nt){Dn(_e,_e.return,Nt)}}}else if((h.tag!==22&&h.tag!==23||h.memoizedState===null||h===d)&&h.child!==null){h.child.return=h,h=h.child;continue}if(h===d)break e;for(;h.sibling===null;){if(h.return===null||h.return===d)break e;b===h&&(b=null),h=h.return}b===h&&(b=null),h.sibling.return=h.return,h=h.sibling}S&4&&(S=d.updateQueue,S!==null&&(b=S.retryQueue,b!==null&&(S.retryQueue=null,Jv(d,b))));break;case 19:Aa(h,d),Ta(d),S&4&&(S=d.updateQueue,S!==null&&(d.updateQueue=null,Jv(d,S)));break;case 30:break;case 21:break;default:Aa(h,d),Ta(d)}}function Ta(d){var h=d.flags;if(h&2){try{for(var b,S=d.return;S!==null;){if(pU(S)){b=S;break}S=S.return}if(b==null)throw Error(i(160));switch(b.tag){case 27:var R=b.stateNode,D=PE(d);Qv(d,D,R);break;case 5:var $=b.stateNode;b.flags&32&&(To($,""),b.flags&=-33);var ne=PE(d);Qv(d,ne,$);break;case 3:case 4:var _e=b.stateNode.containerInfo,Fe=PE(d);kE(d,Fe,_e);break;default:throw Error(i(161))}}catch(Je){Dn(d,d.return,Je)}d.flags&=-3}h&4096&&(d.flags&=-4097)}function wU(d){if(d.subtreeFlags&1024)for(d=d.child;d!==null;){var h=d;wU(h),h.tag===5&&h.flags&1024&&h.stateNode.reset(),d=d.sibling}}function bl(d,h){if(h.subtreeFlags&8772)for(h=h.child;h!==null;)xU(d,h.alternate,h),h=h.sibling}function Td(d){for(d=d.child;d!==null;){var h=d;switch(h.tag){case 0:case 11:case 14:case 15:Hc(4,h,h.return),Td(h);break;case 1:Ro(h,h.return);var b=h.stateNode;typeof b.componentWillUnmount=="function"&&fU(h,h.return,b),Td(h);break;case 27:yg(h.stateNode);case 26:case 5:Ro(h,h.return),Td(h);break;case 22:h.memoizedState===null&&Td(h);break;case 30:Td(h);break;default:Td(h)}d=d.sibling}}function _l(d,h,b){for(b=b&&(h.subtreeFlags&8772)!==0,h=h.child;h!==null;){var S=h.alternate,R=d,D=h,$=D.flags;switch(D.tag){case 0:case 11:case 15:_l(R,D,b),cg(4,D);break;case 1:if(_l(R,D,b),S=D,R=S.stateNode,typeof R.componentDidMount=="function")try{R.componentDidMount()}catch(Fe){Dn(S,S.return,Fe)}if(S=D,R=S.updateQueue,R!==null){var ne=S.stateNode;try{var _e=R.shared.hiddenCallbacks;if(_e!==null)for(R.shared.hiddenCallbacks=null,R=0;R<_e.length;R++)eI(_e[R],ne)}catch(Fe){Dn(S,S.return,Fe)}}b&&$&64&&dU(D),ug(D,D.return);break;case 27:mU(D);case 26:case 5:_l(R,D,b),b&&S===null&&$&4&&hU(D),ug(D,D.return);break;case 12:_l(R,D,b);break;case 31:_l(R,D,b),b&&$&4&&bU(R,D);break;case 13:_l(R,D,b),b&&$&4&&_U(R,D);break;case 22:D.memoizedState===null&&_l(R,D,b),ug(D,D.return);break;case 30:break;default:_l(R,D,b)}h=h.sibling}}function OE(d,h){var b=null;d!==null&&d.memoizedState!==null&&d.memoizedState.cachePool!==null&&(b=d.memoizedState.cachePool.pool),d=null,h.memoizedState!==null&&h.memoizedState.cachePool!==null&&(d=h.memoizedState.cachePool.pool),d!==b&&(d!=null&&d.refCount++,b!=null&&Ym(b))}function LE(d,h){d=null,h.alternate!==null&&(d=h.alternate.memoizedState.cache),h=h.memoizedState.cache,h!==d&&(h.refCount++,d!=null&&Ym(d))}function no(d,h,b,S){if(h.subtreeFlags&10256)for(h=h.child;h!==null;)MU(d,h,b,S),h=h.sibling}function MU(d,h,b,S){var R=h.flags;switch(h.tag){case 0:case 11:case 15:no(d,h,b,S),R&2048&&cg(9,h);break;case 1:no(d,h,b,S);break;case 3:no(d,h,b,S),R&2048&&(d=null,h.alternate!==null&&(d=h.alternate.memoizedState.cache),h=h.memoizedState.cache,h!==d&&(h.refCount++,d!=null&&Ym(d)));break;case 12:if(R&2048){no(d,h,b,S),d=h.stateNode;try{var D=h.memoizedProps,$=D.id,ne=D.onPostCommit;typeof ne=="function"&&ne($,h.alternate===null?"mount":"update",d.passiveEffectDuration,-0)}catch(_e){Dn(h,h.return,_e)}}else no(d,h,b,S);break;case 31:no(d,h,b,S);break;case 13:no(d,h,b,S);break;case 23:break;case 22:D=h.stateNode,$=h.alternate,h.memoizedState!==null?D._visibility&2?no(d,h,b,S):dg(d,h):D._visibility&2?no(d,h,b,S):(D._visibility|=2,fh(d,h,b,S,(h.subtreeFlags&10256)!==0||!1)),R&2048&&OE($,h);break;case 24:no(d,h,b,S),R&2048&&LE(h.alternate,h);break;default:no(d,h,b,S)}}function fh(d,h,b,S,R){for(R=R&&((h.subtreeFlags&10256)!==0||!1),h=h.child;h!==null;){var D=d,$=h,ne=b,_e=S,Fe=$.flags;switch($.tag){case 0:case 11:case 15:fh(D,$,ne,_e,R),cg(8,$);break;case 23:break;case 22:var Je=$.stateNode;$.memoizedState!==null?Je._visibility&2?fh(D,$,ne,_e,R):dg(D,$):(Je._visibility|=2,fh(D,$,ne,_e,R)),R&&Fe&2048&&OE($.alternate,$);break;case 24:fh(D,$,ne,_e,R),R&&Fe&2048&&LE($.alternate,$);break;default:fh(D,$,ne,_e,R)}h=h.sibling}}function dg(d,h){if(h.subtreeFlags&10256)for(h=h.child;h!==null;){var b=d,S=h,R=S.flags;switch(S.tag){case 22:dg(b,S),R&2048&&OE(S.alternate,S);break;case 24:dg(b,S),R&2048&&LE(S.alternate,S);break;default:dg(b,S)}h=h.sibling}}var fg=8192;function hh(d,h,b){if(d.subtreeFlags&fg)for(d=d.child;d!==null;)EU(d,h,b),d=d.sibling}function EU(d,h,b){switch(d.tag){case 26:hh(d,h,b),d.flags&fg&&d.memoizedState!==null&&Rte(b,to,d.memoizedState,d.memoizedProps);break;case 5:hh(d,h,b);break;case 3:case 4:var S=to;to=hy(d.stateNode.containerInfo),hh(d,h,b),to=S;break;case 22:d.memoizedState===null&&(S=d.alternate,S!==null&&S.memoizedState!==null?(S=fg,fg=16777216,hh(d,h,b),fg=S):hh(d,h,b));break;default:hh(d,h,b)}}function AU(d){var h=d.alternate;if(h!==null&&(d=h.child,d!==null)){h.child=null;do h=d.sibling,d.sibling=null,d=h;while(d!==null)}}function hg(d){var h=d.deletions;if((d.flags&16)!==0){if(h!==null)for(var b=0;bjn&&($=jn,jn=Bt,Bt=$);var De=AL(ne,Bt),Ee=AL(ne,jn);if(De&&Ee&&(Ye.rangeCount!==1||Ye.anchorNode!==De.node||Ye.anchorOffset!==De.offset||Ye.focusNode!==Ee.node||Ye.focusOffset!==Ee.offset)){var je=st.createRange();je.setStart(De.node,De.offset),Ye.removeAllRanges(),Bt>jn?(Ye.addRange(je),Ye.extend(Ee.node,Ee.offset)):(je.setEnd(Ee.node,Ee.offset),Ye.addRange(je))}}}}for(st=[],Ye=ne;Ye=Ye.parentNode;)Ye.nodeType===1&&st.push({element:Ye,left:Ye.scrollLeft,top:Ye.scrollTop});for(typeof ne.focus=="function"&&ne.focus(),ne=0;neb?32:b,V.T=null,b=zE,zE=null;var D=Wc,$=wl;if(Ji=0,gh=Wc=null,wl=0,(Tn&6)!==0)throw Error(i(331));var ne=Tn;if(Tn|=4,TU(D.current),MU(D,D.current,$,b),Tn=ne,gg(0,!1),Re&&typeof Re.onPostCommitFiberRoot=="function")try{Re.onPostCommitFiberRoot(Ie,D)}catch{}return!0}finally{G.p=R,V.T=S,GU(d,h)}}function qU(d,h,b){h=gs(b,h),h=yE(d.stateNode,h,2),d=Fc(d,h,2),d!==null&&(on(d,2),Po(d))}function Dn(d,h,b){if(d.tag===3)qU(d,d,b);else for(;h!==null;){if(h.tag===3){qU(h,d,b);break}else if(h.tag===1){var S=h.stateNode;if(typeof h.type.getDerivedStateFromError=="function"||typeof S.componentDidCatch=="function"&&(Gc===null||!Gc.has(S))){d=gs(b,d),b=XI(2),S=Fc(h,b,2),S!==null&&(KI(b,S,h,d),on(S,2),Po(S));break}}h=h.return}}function $E(d,h,b){var S=d.pingCache;if(S===null){S=d.pingCache=new Wee;var R=new Set;S.set(h,R)}else R=S.get(h),R===void 0&&(R=new Set,S.set(h,R));R.has(b)||(IE=!0,R.add(b),d=Zee.bind(null,d,h,b),h.then(d,d))}function Zee(d,h,b){var S=d.pingCache;S!==null&&S.delete(h),d.pingedLanes|=d.suspendedLanes&b,d.warmLanes&=~b,qn===d&&(gn&b)===b&&(_i===4||_i===3&&(gn&62914560)===gn&&300>O()-ty?(Tn&2)===0&&xh(d,0):UE|=b,mh===gn&&(mh=0)),Po(d)}function XU(d,h){h===0&&(h=bt()),d=gd(d,h),d!==null&&(on(d,h),Po(d))}function Qee(d){var h=d.memoizedState,b=0;h!==null&&(b=h.retryLane),XU(d,b)}function Jee(d,h){var b=0;switch(d.tag){case 31:case 13:var S=d.stateNode,R=d.memoizedState;R!==null&&(b=R.retryLane);break;case 19:S=d.stateNode;break;case 22:S=d.stateNode._retryCache;break;default:throw Error(i(314))}S!==null&&S.delete(h),XU(d,b)}function ete(d,h){return ke(d,h)}var ly=null,yh=null,GE=!1,cy=!1,WE=!1,Xc=0;function Po(d){d!==yh&&d.next===null&&(yh===null?ly=yh=d:yh=yh.next=d),cy=!0,GE||(GE=!0,nte())}function gg(d,h){if(!WE&&cy){WE=!0;do for(var b=!1,S=ly;S!==null;){if(d!==0){var R=S.pendingLanes;if(R===0)var D=0;else{var $=S.suspendedLanes,ne=S.pingedLanes;D=(1<<31-nt(42|d)+1)-1,D&=R&~($&~ne),D=D&201326741?D&201326741|1:D?D|2:0}D!==0&&(b=!0,QU(S,D))}else D=gn,D=ge(S,S===qn?D:0,S.cancelPendingCommit!==null||S.timeoutHandle!==-1),(D&3)===0||Be(S,D)||(b=!0,QU(S,D));S=S.next}while(b);WE=!1}}function tte(){KU()}function KU(){cy=GE=!1;var d=0;Xc!==0&&fte()&&(d=Xc);for(var h=O(),b=null,S=ly;S!==null;){var R=S.next,D=YU(S,h);D===0?(S.next=null,b===null?ly=R:b.next=R,R===null&&(yh=b)):(b=S,(d!==0||(D&3)!==0)&&(cy=!0)),S=R}Ji!==0&&Ji!==5||gg(d),Xc!==0&&(Xc=0)}function YU(d,h){for(var b=d.suspendedLanes,S=d.pingedLanes,R=d.expirationTimes,D=d.pendingLanes&-62914561;0ne)break;var Je=_e.transferSize,st=_e.initiatorType;Je&&sj(st)&&(_e=_e.responseEnd,$+=Je*(_e"u"?null:document;function vj(d,h,b){var S=bh;if(S&&typeof h=="string"&&h){var R=Cn(h);R='link[rel="'+d+'"][href="'+R+'"]',typeof b=="string"&&(R+='[crossorigin="'+b+'"]'),xj.has(R)||(xj.add(R),d={rel:d,crossOrigin:b,href:h},S.querySelector(R)===null&&(h=S.createElement("link"),Lr(h,"link",d),Te(h),S.head.appendChild(h)))}}function _te(d){Ml.D(d),vj("dns-prefetch",d,null)}function Ste(d,h){Ml.C(d,h),vj("preconnect",d,h)}function wte(d,h,b){Ml.L(d,h,b);var S=bh;if(S&&d&&h){var R='link[rel="preload"][as="'+Cn(h)+'"]';h==="image"&&b&&b.imageSrcSet?(R+='[imagesrcset="'+Cn(b.imageSrcSet)+'"]',typeof b.imageSizes=="string"&&(R+='[imagesizes="'+Cn(b.imageSizes)+'"]')):R+='[href="'+Cn(d)+'"]';var D=R;switch(h){case"style":D=_h(d);break;case"script":D=Sh(d)}Ss.has(D)||(d=f({rel:"preload",href:h==="image"&&b&&b.imageSrcSet?void 0:d,as:h},b),Ss.set(D,d),S.querySelector(R)!==null||h==="style"&&S.querySelector(bg(D))||h==="script"&&S.querySelector(_g(D))||(h=S.createElement("link"),Lr(h,"link",d),Te(h),S.head.appendChild(h)))}}function Mte(d,h){Ml.m(d,h);var b=bh;if(b&&d){var S=h&&typeof h.as=="string"?h.as:"script",R='link[rel="modulepreload"][as="'+Cn(S)+'"][href="'+Cn(d)+'"]',D=R;switch(S){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":D=Sh(d)}if(!Ss.has(D)&&(d=f({rel:"modulepreload",href:d},h),Ss.set(D,d),b.querySelector(R)===null)){switch(S){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(b.querySelector(_g(D)))return}S=b.createElement("link"),Lr(S,"link",d),Te(S),b.head.appendChild(S)}}}function Ete(d,h,b){Ml.S(d,h,b);var S=bh;if(S&&d){var R=Ce(S).hoistableStyles,D=_h(d);h=h||"default";var $=R.get(D);if(!$){var ne={loading:0,preload:null};if($=S.querySelector(bg(D)))ne.loading=5;else{d=f({rel:"stylesheet",href:d,"data-precedence":h},b),(b=Ss.get(D))&&lA(d,b);var _e=$=S.createElement("link");Te(_e),Lr(_e,"link",d),_e._p=new Promise(function(Fe,Je){_e.onload=Fe,_e.onerror=Je}),_e.addEventListener("load",function(){ne.loading|=1}),_e.addEventListener("error",function(){ne.loading|=2}),ne.loading|=4,py($,h,S)}$={type:"stylesheet",instance:$,count:1,state:ne},R.set(D,$)}}}function Ate(d,h){Ml.X(d,h);var b=bh;if(b&&d){var S=Ce(b).hoistableScripts,R=Sh(d),D=S.get(R);D||(D=b.querySelector(_g(R)),D||(d=f({src:d,async:!0},h),(h=Ss.get(R))&&cA(d,h),D=b.createElement("script"),Te(D),Lr(D,"link",d),b.head.appendChild(D)),D={type:"script",instance:D,count:1,state:null},S.set(R,D))}}function Tte(d,h){Ml.M(d,h);var b=bh;if(b&&d){var S=Ce(b).hoistableScripts,R=Sh(d),D=S.get(R);D||(D=b.querySelector(_g(R)),D||(d=f({src:d,async:!0,type:"module"},h),(h=Ss.get(R))&&cA(d,h),D=b.createElement("script"),Te(D),Lr(D,"link",d),b.head.appendChild(D)),D={type:"script",instance:D,count:1,state:null},S.set(R,D))}}function yj(d,h,b,S){var R=(R=ie.current)?hy(R):null;if(!R)throw Error(i(446));switch(d){case"meta":case"title":return null;case"style":return typeof b.precedence=="string"&&typeof b.href=="string"?(h=_h(b.href),b=Ce(R).hoistableStyles,S=b.get(h),S||(S={type:"style",instance:null,count:0,state:null},b.set(h,S)),S):{type:"void",instance:null,count:0,state:null};case"link":if(b.rel==="stylesheet"&&typeof b.href=="string"&&typeof b.precedence=="string"){d=_h(b.href);var D=Ce(R).hoistableStyles,$=D.get(d);if($||(R=R.ownerDocument||R,$={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},D.set(d,$),(D=R.querySelector(bg(d)))&&!D._p&&($.instance=D,$.state.loading=5),Ss.has(d)||(b={rel:"preload",as:"style",href:b.href,crossOrigin:b.crossOrigin,integrity:b.integrity,media:b.media,hrefLang:b.hrefLang,referrerPolicy:b.referrerPolicy},Ss.set(d,b),D||Cte(R,d,b,$.state))),h&&S===null)throw Error(i(528,""));return $}if(h&&S!==null)throw Error(i(529,""));return null;case"script":return h=b.async,b=b.src,typeof b=="string"&&h&&typeof h!="function"&&typeof h!="symbol"?(h=Sh(b),b=Ce(R).hoistableScripts,S=b.get(h),S||(S={type:"script",instance:null,count:0,state:null},b.set(h,S)),S):{type:"void",instance:null,count:0,state:null};default:throw Error(i(444,d))}}function _h(d){return'href="'+Cn(d)+'"'}function bg(d){return'link[rel="stylesheet"]['+d+"]"}function bj(d){return f({},d,{"data-precedence":d.precedence,precedence:null})}function Cte(d,h,b,S){d.querySelector('link[rel="preload"][as="style"]['+h+"]")?S.loading=1:(h=d.createElement("link"),S.preload=h,h.addEventListener("load",function(){return S.loading|=1}),h.addEventListener("error",function(){return S.loading|=2}),Lr(h,"link",b),Te(h),d.head.appendChild(h))}function Sh(d){return'[src="'+Cn(d)+'"]'}function _g(d){return"script[async]"+d}function _j(d,h,b){if(h.count++,h.instance===null)switch(h.type){case"style":var S=d.querySelector('style[data-href~="'+Cn(b.href)+'"]');if(S)return h.instance=S,Te(S),S;var R=f({},b,{"data-href":b.href,"data-precedence":b.precedence,href:null,precedence:null});return S=(d.ownerDocument||d).createElement("style"),Te(S),Lr(S,"style",R),py(S,b.precedence,d),h.instance=S;case"stylesheet":R=_h(b.href);var D=d.querySelector(bg(R));if(D)return h.state.loading|=4,h.instance=D,Te(D),D;S=bj(b),(R=Ss.get(R))&&lA(S,R),D=(d.ownerDocument||d).createElement("link"),Te(D);var $=D;return $._p=new Promise(function(ne,_e){$.onload=ne,$.onerror=_e}),Lr(D,"link",S),h.state.loading|=4,py(D,b.precedence,d),h.instance=D;case"script":return D=Sh(b.src),(R=d.querySelector(_g(D)))?(h.instance=R,Te(R),R):(S=b,(R=Ss.get(D))&&(S=f({},b),cA(S,R)),d=d.ownerDocument||d,R=d.createElement("script"),Te(R),Lr(R,"link",S),d.head.appendChild(R),h.instance=R);case"void":return null;default:throw Error(i(443,h.type))}else h.type==="stylesheet"&&(h.state.loading&4)===0&&(S=h.instance,h.state.loading|=4,py(S,b.precedence,d));return h.instance}function py(d,h,b){for(var S=b.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),R=S.length?S[S.length-1]:null,D=R,$=0;$ title"):null)}function Nte(d,h,b){if(b===1||h.itemProp!=null)return!1;switch(d){case"meta":case"title":return!0;case"style":if(typeof h.precedence!="string"||typeof h.href!="string"||h.href==="")break;return!0;case"link":if(typeof h.rel!="string"||typeof h.href!="string"||h.href===""||h.onLoad||h.onError)break;switch(h.rel){case"stylesheet":return d=h.disabled,typeof h.precedence=="string"&&d==null;default:return!0}case"script":if(h.async&&typeof h.async!="function"&&typeof h.async!="symbol"&&!h.onLoad&&!h.onError&&h.src&&typeof h.src=="string")return!0}return!1}function Mj(d){return!(d.type==="stylesheet"&&(d.state.loading&3)===0)}function Rte(d,h,b,S){if(b.type==="stylesheet"&&(typeof S.media!="string"||matchMedia(S.media).matches!==!1)&&(b.state.loading&4)===0){if(b.instance===null){var R=_h(S.href),D=h.querySelector(bg(R));if(D){h=D._p,h!==null&&typeof h=="object"&&typeof h.then=="function"&&(d.count++,d=gy.bind(d),h.then(d,d)),b.state.loading|=4,b.instance=D,Te(D);return}D=h.ownerDocument||h,S=bj(S),(R=Ss.get(R))&&lA(S,R),D=D.createElement("link"),Te(D);var $=D;$._p=new Promise(function(ne,_e){$.onload=ne,$.onerror=_e}),Lr(D,"link",S),b.instance=D}d.stylesheets===null&&(d.stylesheets=new Map),d.stylesheets.set(b,h),(h=b.state.preload)&&(b.state.loading&3)===0&&(d.count++,b=gy.bind(d),h.addEventListener("load",b),h.addEventListener("error",b))}}var uA=0;function Pte(d,h){return d.stylesheets&&d.count===0&&vy(d,d.stylesheets),0uA?50:800)+h);return d.unsuspend=b,function(){d.unsuspend=null,clearTimeout(S),clearTimeout(R)}}:null}function gy(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)vy(this,this.stylesheets);else if(this.unsuspend){var d=this.unsuspend;this.unsuspend=null,d()}}}var xy=null;function vy(d,h){d.stylesheets=null,d.unsuspend!==null&&(d.count++,xy=new Map,h.forEach(kte,d),xy=null,gy.call(d))}function kte(d,h){if(!(h.state.loading&4)){var b=xy.get(d);if(b)var S=b.get(null);else{b=new Map,xy.set(d,b);for(var R=d.querySelectorAll("link[data-precedence],style[data-precedence]"),D=0;D"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),yA.exports=Kte(),yA.exports}var Zte=Yte();const Vt=t=>typeof t=="string",Cg=()=>{let t,e;const n=new Promise((i,r)=>{t=i,e=r});return n.resolve=t,n.reject=e,n},Xj=t=>t==null?"":""+t,Qte=(t,e,n)=>{t.forEach(i=>{e[i]&&(n[i]=e[i])})},Jte=/###/g,Kj=t=>t&&t.indexOf("###")>-1?t.replace(Jte,"."):t,Yj=t=>!t||Vt(t),d0=(t,e,n)=>{const i=Vt(e)?e.split("."):e;let r=0;for(;r{const{obj:i,k:r}=d0(t,e,Object);if(i!==void 0||e.length===1){i[r]=n;return}let a=e[e.length-1],s=e.slice(0,e.length-1),o=d0(t,s,Object);for(;o.obj===void 0&&s.length;)a=`${s[s.length-1]}.${a}`,s=s.slice(0,s.length-1),o=d0(t,s,Object),o?.obj&&typeof o.obj[`${o.k}.${a}`]<"u"&&(o.obj=void 0);o.obj[`${o.k}.${a}`]=n},ene=(t,e,n,i)=>{const{obj:r,k:a}=d0(t,e,Object);r[a]=r[a]||[],r[a].push(n)},R_=(t,e)=>{const{obj:n,k:i}=d0(t,e);if(n&&Object.prototype.hasOwnProperty.call(n,i))return n[i]},tne=(t,e,n)=>{const i=R_(t,n);return i!==void 0?i:R_(e,n)},iG=(t,e,n)=>{for(const i in e)i!=="__proto__"&&i!=="constructor"&&(i in t?Vt(t[i])||t[i]instanceof String||Vt(e[i])||e[i]instanceof String?n&&(t[i]=e[i]):iG(t[i],e[i],n):t[i]=e[i]);return t},Mh=t=>t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var nne={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const ine=t=>Vt(t)?t.replace(/[&<>"'\/]/g,e=>nne[e]):t;class rne{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){const n=this.regExpMap.get(e);if(n!==void 0)return n;const i=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,i),this.regExpQueue.push(e),i}}const ane=[" ",",","?","!",";"],sne=new rne(20),one=(t,e,n)=>{e=e||"",n=n||"";const i=ane.filter(s=>e.indexOf(s)<0&&n.indexOf(s)<0);if(i.length===0)return!0;const r=sne.getRegExp(`(${i.map(s=>s==="?"?"\\?":s).join("|")})`);let a=!r.test(t);if(!a){const s=t.indexOf(n);s>0&&!r.test(t.substring(0,s))&&(a=!0)}return a},cN=(t,e,n=".")=>{if(!t)return;if(t[e])return Object.prototype.hasOwnProperty.call(t,e)?t[e]:void 0;const i=e.split(n);let r=t;for(let a=0;a-1&&lt?.replace("_","-"),lne={type:"logger",log(t){this.output("log",t)},warn(t){this.output("warn",t)},error(t){this.output("error",t)},output(t,e){console?.[t]?.apply?.(console,e)}};class P_{constructor(e,n={}){this.init(e,n)}init(e,n={}){this.prefix=n.prefix||"i18next:",this.logger=e||lne,this.options=n,this.debug=n.debug}log(...e){return this.forward(e,"log","",!0)}warn(...e){return this.forward(e,"warn","",!0)}error(...e){return this.forward(e,"error","")}deprecate(...e){return this.forward(e,"warn","WARNING DEPRECATED: ",!0)}forward(e,n,i,r){return r&&!this.debug?null:(Vt(e[0])&&(e[0]=`${i}${this.prefix} ${e[0]}`),this.logger[n](e))}create(e){return new P_(this.logger,{prefix:`${this.prefix}:${e}:`,...this.options})}clone(e){return e=e||this.options,e.prefix=e.prefix||this.prefix,new P_(this.logger,e)}}var Ho=new P_;let zS=class{constructor(){this.observers={}}on(e,n){return e.split(" ").forEach(i=>{this.observers[i]||(this.observers[i]=new Map);const r=this.observers[i].get(n)||0;this.observers[i].set(n,r+1)}),this}off(e,n){if(this.observers[e]){if(!n){delete this.observers[e];return}this.observers[e].delete(n)}}emit(e,...n){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([r,a])=>{for(let s=0;s{for(let s=0;s-1&&this.options.ns.splice(n,1)}getResource(e,n,i,r={}){const a=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,s=r.ignoreJSONStructure!==void 0?r.ignoreJSONStructure:this.options.ignoreJSONStructure;let o;e.indexOf(".")>-1?o=e.split("."):(o=[e,n],i&&(Array.isArray(i)?o.push(...i):Vt(i)&&a?o.push(...i.split(a)):o.push(i)));const l=R_(this.data,o);return!l&&!n&&!i&&e.indexOf(".")>-1&&(e=o[0],n=o[1],i=o.slice(2).join(".")),l||!s||!Vt(i)?l:cN(this.data?.[e]?.[n],i,a)}addResource(e,n,i,r,a={silent:!1}){const s=a.keySeparator!==void 0?a.keySeparator:this.options.keySeparator;let o=[e,n];i&&(o=o.concat(s?i.split(s):i)),e.indexOf(".")>-1&&(o=e.split("."),r=n,n=o[1]),this.addNamespaces(n),Zj(this.data,o,r),a.silent||this.emit("added",e,n,i,r)}addResources(e,n,i,r={silent:!1}){for(const a in i)(Vt(i[a])||Array.isArray(i[a]))&&this.addResource(e,n,a,i[a],{silent:!0});r.silent||this.emit("added",e,n,i)}addResourceBundle(e,n,i,r,a,s={silent:!1,skipCopy:!1}){let o=[e,n];e.indexOf(".")>-1&&(o=e.split("."),r=i,i=n,n=o[1]),this.addNamespaces(n);let l=R_(this.data,o)||{};s.skipCopy||(i=JSON.parse(JSON.stringify(i))),r?iG(l,i,a):l={...l,...i},Zj(this.data,o,l),s.silent||this.emit("added",e,n,i)}removeResourceBundle(e,n){this.hasResourceBundle(e,n)&&delete this.data[e][n],this.removeNamespaces(n),this.emit("removed",e,n)}hasResourceBundle(e,n){return this.getResource(e,n)!==void 0}getResourceBundle(e,n){return n||(n=this.options.defaultNS),this.getResource(e,n)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){const n=this.getDataByLanguage(e);return!!(n&&Object.keys(n)||[]).find(r=>n[r]&&Object.keys(n[r]).length>0)}toJSON(){return this.data}}var rG={processors:{},addPostProcessor(t){this.processors[t.name]=t},handle(t,e,n,i,r){return t.forEach(a=>{e=this.processors[a]?.process(e,n,i,r)??e}),e}};const aG=Symbol("i18next/PATH_KEY");function cne(){const t=[],e=Object.create(null);let n;return e.get=(i,r)=>(n?.revoke?.(),r===aG?t:(t.push(r),n=Proxy.revocable(i,e),n.proxy)),Proxy.revocable(Object.create(null),e).proxy}function uN(t,e){const{[aG]:n}=t(cne());return n.join(e?.keySeparator??".")}const Jj={},wA=t=>!Vt(t)&&typeof t!="boolean"&&typeof t!="number";class k_ extends zS{constructor(e,n={}){super(),Qte(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],e,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=Ho.create("translator")}changeLanguage(e){e&&(this.language=e)}exists(e,n={interpolation:{}}){const i={...n};if(e==null)return!1;const r=this.resolve(e,i);if(r?.res===void 0)return!1;const a=wA(r.res);return!(i.returnObjects===!1&&a)}extractFromKey(e,n){let i=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;i===void 0&&(i=":");const r=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let a=n.ns||this.options.defaultNS||[];const s=i&&e.indexOf(i)>-1,o=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!one(e,i,r);if(s&&!o){const l=e.match(this.interpolator.nestingRegexp);if(l&&l.length>0)return{key:e,namespaces:Vt(a)?[a]:a};const c=e.split(i);(i!==r||i===r&&this.options.ns.indexOf(c[0])>-1)&&(a=c.shift()),e=c.join(r)}return{key:e,namespaces:Vt(a)?[a]:a}}translate(e,n,i){let r=typeof n=="object"?{...n}:n;if(typeof r!="object"&&this.options.overloadTranslationOptionHandler&&(r=this.options.overloadTranslationOptionHandler(arguments)),typeof r=="object"&&(r={...r}),r||(r={}),e==null)return"";typeof e=="function"&&(e=uN(e,{...this.options,...r})),Array.isArray(e)||(e=[String(e)]);const a=r.returnDetails!==void 0?r.returnDetails:this.options.returnDetails,s=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,{key:o,namespaces:l}=this.extractFromKey(e[e.length-1],r),c=l[l.length-1];let u=r.nsSeparator!==void 0?r.nsSeparator:this.options.nsSeparator;u===void 0&&(u=":");const f=r.lng||this.language,p=r.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(f?.toLowerCase()==="cimode")return p?a?{res:`${c}${u}${o}`,usedKey:o,exactUsedKey:o,usedLng:f,usedNS:c,usedParams:this.getUsedParamsDetails(r)}:`${c}${u}${o}`:a?{res:o,usedKey:o,exactUsedKey:o,usedLng:f,usedNS:c,usedParams:this.getUsedParamsDetails(r)}:o;const g=this.resolve(e,r);let y=g?.res;const _=g?.usedKey||o,v=g?.exactUsedKey||o,x=["[object Number]","[object Function]","[object RegExp]"],M=r.joinArrays!==void 0?r.joinArrays:this.options.joinArrays,w=!this.i18nFormat||this.i18nFormat.handleAsObject,E=r.count!==void 0&&!Vt(r.count),T=k_.hasDefaultValue(r),P=E?this.pluralResolver.getSuffix(f,r.count,r):"",N=r.ordinal&&E?this.pluralResolver.getSuffix(f,r.count,{ordinal:!1}):"",U=E&&!r.ordinal&&r.count===0,C=U&&r[`defaultValue${this.options.pluralSeparator}zero`]||r[`defaultValue${P}`]||r[`defaultValue${N}`]||r.defaultValue;let k=y;w&&!y&&T&&(k=C);const F=wA(k),I=Object.prototype.toString.apply(k);if(w&&k&&F&&x.indexOf(I)<0&&!(Vt(M)&&Array.isArray(k))){if(!r.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const q=this.options.returnedObjectHandler?this.options.returnedObjectHandler(_,k,{...r,ns:l}):`key '${o} (${this.language})' returned an object instead of string.`;return a?(g.res=q,g.usedParams=this.getUsedParamsDetails(r),g):q}if(s){const q=Array.isArray(k),L=q?[]:{},H=q?v:_;for(const V in k)if(Object.prototype.hasOwnProperty.call(k,V)){const G=`${H}${s}${V}`;T&&!y?L[V]=this.translate(G,{...r,defaultValue:wA(C)?C[V]:void 0,joinArrays:!1,ns:l}):L[V]=this.translate(G,{...r,joinArrays:!1,ns:l}),L[V]===G&&(L[V]=k[V])}y=L}}else if(w&&Vt(M)&&Array.isArray(y))y=y.join(M),y&&(y=this.extendTranslation(y,e,r,i));else{let q=!1,L=!1;!this.isValidLookup(y)&&T&&(q=!0,y=C),this.isValidLookup(y)||(L=!0,y=o);const V=(r.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&L?void 0:y,G=T&&C!==y&&this.options.updateMissing;if(L||q||G){if(this.logger.log(G?"updateKey":"missingKey",f,c,o,G?C:y),s){const B=this.resolve(o,{...r,keySeparator:!1});B&&B.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let K=[];const Z=this.languageUtils.getFallbackCodes(this.options.fallbackLng,r.lng||this.language);if(this.options.saveMissingTo==="fallback"&&Z&&Z[0])for(let B=0;B{const ce=T&&ae!==y?ae:V;this.options.missingKeyHandler?this.options.missingKeyHandler(B,c,X,ce,G,r):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(B,c,X,ce,G,r),this.emit("missingKey",B,c,X,y)};this.options.saveMissing&&(this.options.saveMissingPlurals&&E?K.forEach(B=>{const X=this.pluralResolver.getSuffixes(B,r);U&&r[`defaultValue${this.options.pluralSeparator}zero`]&&X.indexOf(`${this.options.pluralSeparator}zero`)<0&&X.push(`${this.options.pluralSeparator}zero`),X.forEach(ae=>{se([B],o+ae,r[`defaultValue${ae}`]||C)})}):se(K,o,C))}y=this.extendTranslation(y,e,r,g,i),L&&y===o&&this.options.appendNamespaceToMissingKey&&(y=`${c}${u}${o}`),(L||q)&&this.options.parseMissingKeyHandler&&(y=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${c}${u}${o}`:o,q?y:void 0,r))}return a?(g.res=y,g.usedParams=this.getUsedParamsDetails(r),g):y}extendTranslation(e,n,i,r,a){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...i},i.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!i.skipInterpolation){i.interpolation&&this.interpolator.init({...i,interpolation:{...this.options.interpolation,...i.interpolation}});const l=Vt(e)&&(i?.interpolation?.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let c;if(l){const f=e.match(this.interpolator.nestingRegexp);c=f&&f.length}let u=i.replace&&!Vt(i.replace)?i.replace:i;if(this.options.interpolation.defaultVariables&&(u={...this.options.interpolation.defaultVariables,...u}),e=this.interpolator.interpolate(e,u,i.lng||this.language||r.usedLng,i),l){const f=e.match(this.interpolator.nestingRegexp),p=f&&f.length;ca?.[0]===f[0]&&!i.context?(this.logger.warn(`It seems you are nesting recursively key: ${f[0]} in key: ${n[0]}`),null):this.translate(...f,n),i)),i.interpolation&&this.interpolator.reset()}const s=i.postProcess||this.options.postProcess,o=Vt(s)?[s]:s;return e!=null&&o?.length&&i.applyPostProcessor!==!1&&(e=rG.handle(o,e,n,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(i)},...i}:i,this)),e}resolve(e,n={}){let i,r,a,s,o;return Vt(e)&&(e=[e]),e.forEach(l=>{if(this.isValidLookup(i))return;const c=this.extractFromKey(l,n),u=c.key;r=u;let f=c.namespaces;this.options.fallbackNS&&(f=f.concat(this.options.fallbackNS));const p=n.count!==void 0&&!Vt(n.count),g=p&&!n.ordinal&&n.count===0,y=n.context!==void 0&&(Vt(n.context)||typeof n.context=="number")&&n.context!=="",_=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);f.forEach(v=>{this.isValidLookup(i)||(o=v,!Jj[`${_[0]}-${v}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(o)&&(Jj[`${_[0]}-${v}`]=!0,this.logger.warn(`key "${r}" for languages "${_.join(", ")}" won't get resolved as namespace "${o}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),_.forEach(x=>{if(this.isValidLookup(i))return;s=x;const M=[u];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(M,u,x,v,n);else{let E;p&&(E=this.pluralResolver.getSuffix(x,n.count,n));const T=`${this.options.pluralSeparator}zero`,P=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(p&&(n.ordinal&&E.indexOf(P)===0&&M.push(u+E.replace(P,this.options.pluralSeparator)),M.push(u+E),g&&M.push(u+T)),y){const N=`${u}${this.options.contextSeparator||"_"}${n.context}`;M.push(N),p&&(n.ordinal&&E.indexOf(P)===0&&M.push(N+E.replace(P,this.options.pluralSeparator)),M.push(N+E),g&&M.push(N+T))}}let w;for(;w=M.pop();)this.isValidLookup(i)||(a=w,i=this.getResource(x,v,w,n))}))})}),{res:i,usedKey:r,exactUsedKey:a,usedLng:s,usedNS:o}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e==="")}getResource(e,n,i,r={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,n,i,r):this.resourceStore.getResource(e,n,i,r)}getUsedParamsDetails(e={}){const n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],i=e.replace&&!Vt(e.replace);let r=i?e.replace:e;if(i&&typeof e.count<"u"&&(r.count=e.count),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!i){r={...r};for(const a of n)delete r[a]}return r}static hasDefaultValue(e){const n="defaultValue";for(const i in e)if(Object.prototype.hasOwnProperty.call(e,i)&&n===i.substring(0,n.length)&&e[i]!==void 0)return!0;return!1}}class e4{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Ho.create("languageUtils")}getScriptPartFromCode(e){if(e=O0(e),!e||e.indexOf("-")<0)return null;const n=e.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(e){if(e=O0(e),!e||e.indexOf("-")<0)return e;const n=e.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(e){if(Vt(e)&&e.indexOf("-")>-1){let n;try{n=Intl.getCanonicalLocales(e)[0]}catch{}return n&&this.options.lowerCaseLng&&(n=n.toLowerCase()),n||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}getBestMatchFromCodes(e){if(!e)return null;let n;return e.forEach(i=>{if(n)return;const r=this.formatLanguageCode(i);(!this.options.supportedLngs||this.isSupportedCode(r))&&(n=r)}),!n&&this.options.supportedLngs&&e.forEach(i=>{if(n)return;const r=this.getScriptPartFromCode(i);if(this.isSupportedCode(r))return n=r;const a=this.getLanguagePartFromCode(i);if(this.isSupportedCode(a))return n=a;n=this.options.supportedLngs.find(s=>{if(s===a)return s;if(!(s.indexOf("-")<0&&a.indexOf("-")<0)&&(s.indexOf("-")>0&&a.indexOf("-")<0&&s.substring(0,s.indexOf("-"))===a||s.indexOf(a)===0&&a.length>1))return s})}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(e,n){if(!e)return[];if(typeof e=="function"&&(e=e(n)),Vt(e)&&(e=[e]),Array.isArray(e))return e;if(!n)return e.default||[];let i=e[n];return i||(i=e[this.getScriptPartFromCode(n)]),i||(i=e[this.formatLanguageCode(n)]),i||(i=e[this.getLanguagePartFromCode(n)]),i||(i=e.default),i||[]}toResolveHierarchy(e,n){const i=this.getFallbackCodes((n===!1?[]:n)||this.options.fallbackLng||[],e),r=[],a=s=>{s&&(this.isSupportedCode(s)?r.push(s):this.logger.warn(`rejecting language code not found in supportedLngs: ${s}`))};return Vt(e)&&(e.indexOf("-")>-1||e.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&a(this.formatLanguageCode(e)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&a(this.getScriptPartFromCode(e)),this.options.load!=="currentOnly"&&a(this.getLanguagePartFromCode(e))):Vt(e)&&a(this.formatLanguageCode(e)),i.forEach(s=>{r.indexOf(s)<0&&a(this.formatLanguageCode(s))}),r}}const t4={zero:0,one:1,two:2,few:3,many:4,other:5},n4={select:t=>t===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class une{constructor(e,n={}){this.languageUtils=e,this.options=n,this.logger=Ho.create("pluralResolver"),this.pluralRulesCache={}}addRule(e,n){this.rules[e]=n}clearCache(){this.pluralRulesCache={}}getRule(e,n={}){const i=O0(e==="dev"?"en":e),r=n.ordinal?"ordinal":"cardinal",a=JSON.stringify({cleanedCode:i,type:r});if(a in this.pluralRulesCache)return this.pluralRulesCache[a];let s;try{s=new Intl.PluralRules(i,{type:r})}catch{if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),n4;if(!e.match(/-|_/))return n4;const l=this.languageUtils.getLanguagePartFromCode(e);s=this.getRule(l,n)}return this.pluralRulesCache[a]=s,s}needsPlural(e,n={}){let i=this.getRule(e,n);return i||(i=this.getRule("dev",n)),i?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,n,i={}){return this.getSuffixes(e,i).map(r=>`${n}${r}`)}getSuffixes(e,n={}){let i=this.getRule(e,n);return i||(i=this.getRule("dev",n)),i?i.resolvedOptions().pluralCategories.sort((r,a)=>t4[r]-t4[a]).map(r=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${r}`):[]}getSuffix(e,n,i={}){const r=this.getRule(e,i);return r?`${this.options.prepend}${i.ordinal?`ordinal${this.options.prepend}`:""}${r.select(n)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix("dev",n,i))}}const i4=(t,e,n,i=".",r=!0)=>{let a=tne(t,e,n);return!a&&r&&Vt(n)&&(a=cN(t,n,i),a===void 0&&(a=cN(e,n,i))),a},MA=t=>t.replace(/\$/g,"$$$$");class dne{constructor(e={}){this.logger=Ho.create("interpolator"),this.options=e,this.format=e?.interpolation?.format||(n=>n),this.init(e)}init(e={}){e.interpolation||(e.interpolation={escapeValue:!0});const{escape:n,escapeValue:i,useRawValueToEscape:r,prefix:a,prefixEscaped:s,suffix:o,suffixEscaped:l,formatSeparator:c,unescapeSuffix:u,unescapePrefix:f,nestingPrefix:p,nestingPrefixEscaped:g,nestingSuffix:y,nestingSuffixEscaped:_,nestingOptionsSeparator:v,maxReplaces:x,alwaysFormat:M}=e.interpolation;this.escape=n!==void 0?n:ine,this.escapeValue=i!==void 0?i:!0,this.useRawValueToEscape=r!==void 0?r:!1,this.prefix=a?Mh(a):s||"{{",this.suffix=o?Mh(o):l||"}}",this.formatSeparator=c||",",this.unescapePrefix=u?"":f||"-",this.unescapeSuffix=this.unescapePrefix?"":u||"",this.nestingPrefix=p?Mh(p):g||Mh("$t("),this.nestingSuffix=y?Mh(y):_||Mh(")"),this.nestingOptionsSeparator=v||",",this.maxReplaces=x||1e3,this.alwaysFormat=M!==void 0?M:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const e=(n,i)=>n?.source===i?(n.lastIndex=0,n):new RegExp(i,"g");this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,n,i,r){let a,s,o;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=g=>{if(g.indexOf(this.formatSeparator)<0){const x=i4(n,l,g,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(x,void 0,i,{...r,...n,interpolationkey:g}):x}const y=g.split(this.formatSeparator),_=y.shift().trim(),v=y.join(this.formatSeparator).trim();return this.format(i4(n,l,_,this.options.keySeparator,this.options.ignoreJSONStructure),v,i,{...r,...n,interpolationkey:_})};this.resetRegExp();const u=r?.missingInterpolationHandler||this.options.missingInterpolationHandler,f=r?.interpolation?.skipOnVariables!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:g=>MA(g)},{regex:this.regexp,safeValue:g=>this.escapeValue?MA(this.escape(g)):MA(g)}].forEach(g=>{for(o=0;a=g.regex.exec(e);){const y=a[1].trim();if(s=c(y),s===void 0)if(typeof u=="function"){const v=u(e,a,r);s=Vt(v)?v:""}else if(r&&Object.prototype.hasOwnProperty.call(r,y))s="";else if(f){s=a[0];continue}else this.logger.warn(`missed to pass in variable ${y} for interpolating ${e}`),s="";else!Vt(s)&&!this.useRawValueToEscape&&(s=Xj(s));const _=g.safeValue(s);if(e=e.replace(a[0],_),f?(g.regex.lastIndex+=s.length,g.regex.lastIndex-=a[0].length):g.regex.lastIndex=0,o++,o>=this.maxReplaces)break}}),e}nest(e,n,i={}){let r,a,s;const o=(l,c)=>{const u=this.nestingOptionsSeparator;if(l.indexOf(u)<0)return l;const f=l.split(new RegExp(`${u}[ ]*{`));let p=`{${f[1]}`;l=f[0],p=this.interpolate(p,s);const g=p.match(/'/g),y=p.match(/"/g);((g?.length??0)%2===0&&!y||y.length%2!==0)&&(p=p.replace(/'/g,'"'));try{s=JSON.parse(p),c&&(s={...c,...s})}catch(_){return this.logger.warn(`failed parsing options string in nesting for key ${l}`,_),`${l}${u}${p}`}return s.defaultValue&&s.defaultValue.indexOf(this.prefix)>-1&&delete s.defaultValue,l};for(;r=this.nestingRegexp.exec(e);){let l=[];s={...i},s=s.replace&&!Vt(s.replace)?s.replace:s,s.applyPostProcessor=!1,delete s.defaultValue;const c=/{.*}/.test(r[1])?r[1].lastIndexOf("}")+1:r[1].indexOf(this.formatSeparator);if(c!==-1&&(l=r[1].slice(c).split(this.formatSeparator).map(u=>u.trim()).filter(Boolean),r[1]=r[1].slice(0,c)),a=n(o.call(this,r[1].trim(),s),s),a&&r[0]===e&&!Vt(a))return a;Vt(a)||(a=Xj(a)),a||(this.logger.warn(`missed to resolve ${r[1]} for nesting ${e}`),a=""),l.length&&(a=l.reduce((u,f)=>this.format(u,f,i.lng,{...i,interpolationkey:r[1].trim()}),a.trim())),e=e.replace(r[0],a),this.regexp.lastIndex=0}return e}}const fne=t=>{let e=t.toLowerCase().trim();const n={};if(t.indexOf("(")>-1){const i=t.split("(");e=i[0].toLowerCase().trim();const r=i[1].substring(0,i[1].length-1);e==="currency"&&r.indexOf(":")<0?n.currency||(n.currency=r.trim()):e==="relativetime"&&r.indexOf(":")<0?n.range||(n.range=r.trim()):r.split(";").forEach(s=>{if(s){const[o,...l]=s.split(":"),c=l.join(":").trim().replace(/^'+|'+$/g,""),u=o.trim();n[u]||(n[u]=c),c==="false"&&(n[u]=!1),c==="true"&&(n[u]=!0),isNaN(c)||(n[u]=parseInt(c,10))}})}return{formatName:e,formatOptions:n}},r4=t=>{const e={};return(n,i,r)=>{let a=r;r&&r.interpolationkey&&r.formatParams&&r.formatParams[r.interpolationkey]&&r[r.interpolationkey]&&(a={...a,[r.interpolationkey]:void 0});const s=i+JSON.stringify(a);let o=e[s];return o||(o=t(O0(i),r),e[s]=o),o(n)}},hne=t=>(e,n,i)=>t(O0(n),i)(e);class pne{constructor(e={}){this.logger=Ho.create("formatter"),this.options=e,this.init(e)}init(e,n={interpolation:{}}){this.formatSeparator=n.interpolation.formatSeparator||",";const i=n.cacheInBuiltFormats?r4:hne;this.formats={number:i((r,a)=>{const s=new Intl.NumberFormat(r,{...a});return o=>s.format(o)}),currency:i((r,a)=>{const s=new Intl.NumberFormat(r,{...a,style:"currency"});return o=>s.format(o)}),datetime:i((r,a)=>{const s=new Intl.DateTimeFormat(r,{...a});return o=>s.format(o)}),relativetime:i((r,a)=>{const s=new Intl.RelativeTimeFormat(r,{...a});return o=>s.format(o,a.range||"day")}),list:i((r,a)=>{const s=new Intl.ListFormat(r,{...a});return o=>s.format(o)})}}add(e,n){this.formats[e.toLowerCase().trim()]=n}addCached(e,n){this.formats[e.toLowerCase().trim()]=r4(n)}format(e,n,i,r={}){const a=n.split(this.formatSeparator);if(a.length>1&&a[0].indexOf("(")>1&&a[0].indexOf(")")<0&&a.find(o=>o.indexOf(")")>-1)){const o=a.findIndex(l=>l.indexOf(")")>-1);a[0]=[a[0],...a.splice(1,o)].join(this.formatSeparator)}return a.reduce((o,l)=>{const{formatName:c,formatOptions:u}=fne(l);if(this.formats[c]){let f=o;try{const p=r?.formatParams?.[r.interpolationkey]||{},g=p.locale||p.lng||r.locale||r.lng||i;f=this.formats[c](o,g,{...u,...r,...p})}catch(p){this.logger.warn(p)}return f}else this.logger.warn(`there was no format function for ${c}`);return o},e)}}const mne=(t,e)=>{t.pending[e]!==void 0&&(delete t.pending[e],t.pendingCount--)};class gne extends zS{constructor(e,n,i,r={}){super(),this.backend=e,this.store=n,this.services=i,this.languageUtils=i.languageUtils,this.options=r,this.logger=Ho.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(i,r.backend,r)}queueLoad(e,n,i,r){const a={},s={},o={},l={};return e.forEach(c=>{let u=!0;n.forEach(f=>{const p=`${c}|${f}`;!i.reload&&this.store.hasResourceBundle(c,f)?this.state[p]=2:this.state[p]<0||(this.state[p]===1?s[p]===void 0&&(s[p]=!0):(this.state[p]=1,u=!1,s[p]===void 0&&(s[p]=!0),a[p]===void 0&&(a[p]=!0),l[f]===void 0&&(l[f]=!0)))}),u||(o[c]=!0)}),(Object.keys(a).length||Object.keys(s).length)&&this.queue.push({pending:s,pendingCount:Object.keys(s).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(a),pending:Object.keys(s),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(l)}}loaded(e,n,i){const r=e.split("|"),a=r[0],s=r[1];n&&this.emit("failedLoading",a,s,n),!n&&i&&this.store.addResourceBundle(a,s,i,void 0,void 0,{skipCopy:!0}),this.state[e]=n?-1:2,n&&i&&(this.state[e]=0);const o={};this.queue.forEach(l=>{ene(l.loaded,[a],s),mne(l,e),n&&l.errors.push(n),l.pendingCount===0&&!l.done&&(Object.keys(l.loaded).forEach(c=>{o[c]||(o[c]={});const u=l.loaded[c];u.length&&u.forEach(f=>{o[c][f]===void 0&&(o[c][f]=!0)})}),l.done=!0,l.errors.length?l.callback(l.errors):l.callback())}),this.emit("loaded",o),this.queue=this.queue.filter(l=>!l.done)}read(e,n,i,r=0,a=this.retryTimeout,s){if(!e.length)return s(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:n,fcName:i,tried:r,wait:a,callback:s});return}this.readingCalls++;const o=(c,u)=>{if(this.readingCalls--,this.waitingReads.length>0){const f=this.waitingReads.shift();this.read(f.lng,f.ns,f.fcName,f.tried,f.wait,f.callback)}if(c&&u&&r{this.read.call(this,e,n,i,r+1,a*2,s)},a);return}s(c,u)},l=this.backend[i].bind(this.backend);if(l.length===2){try{const c=l(e,n);c&&typeof c.then=="function"?c.then(u=>o(null,u)).catch(o):o(null,c)}catch(c){o(c)}return}return l(e,n,o)}prepareLoading(e,n,i={},r){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),r&&r();Vt(e)&&(e=this.languageUtils.toResolveHierarchy(e)),Vt(n)&&(n=[n]);const a=this.queueLoad(e,n,i,r);if(!a.toLoad.length)return a.pending.length||r(),null;a.toLoad.forEach(s=>{this.loadOne(s)})}load(e,n,i){this.prepareLoading(e,n,{},i)}reload(e,n,i){this.prepareLoading(e,n,{reload:!0},i)}loadOne(e,n=""){const i=e.split("|"),r=i[0],a=i[1];this.read(r,a,"read",void 0,void 0,(s,o)=>{s&&this.logger.warn(`${n}loading namespace ${a} for language ${r} failed`,s),!s&&o&&this.logger.log(`${n}loaded namespace ${a} for language ${r}`,o),this.loaded(e,s,o)})}saveMissing(e,n,i,r,a,s={},o=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(n)){this.logger.warn(`did not save key "${i}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(i==null||i==="")){if(this.backend?.create){const l={...s,isUpdate:a},c=this.backend.create.bind(this.backend);if(c.length<6)try{let u;c.length===5?u=c(e,n,i,r,l):u=c(e,n,i,r),u&&typeof u.then=="function"?u.then(f=>o(null,f)).catch(o):o(null,u)}catch(u){o(u)}else c(e,n,i,r,o,l)}!e||!e[0]||this.store.addResource(e[0],n,i,r)}}}const a4=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:t=>{let e={};if(typeof t[1]=="object"&&(e=t[1]),Vt(t[1])&&(e.defaultValue=t[1]),Vt(t[2])&&(e.tDescription=t[2]),typeof t[2]=="object"||typeof t[3]=="object"){const n=t[3]||t[2];Object.keys(n).forEach(i=>{e[i]=n[i]})}return e},interpolation:{escapeValue:!0,format:t=>t,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),s4=t=>(Vt(t.ns)&&(t.ns=[t.ns]),Vt(t.fallbackLng)&&(t.fallbackLng=[t.fallbackLng]),Vt(t.fallbackNS)&&(t.fallbackNS=[t.fallbackNS]),t.supportedLngs?.indexOf?.("cimode")<0&&(t.supportedLngs=t.supportedLngs.concat(["cimode"])),typeof t.initImmediate=="boolean"&&(t.initAsync=t.initImmediate),t),Ty=()=>{},xne=t=>{Object.getOwnPropertyNames(Object.getPrototypeOf(t)).forEach(n=>{typeof t[n]=="function"&&(t[n]=t[n].bind(t))})};class f0 extends zS{constructor(e={},n){if(super(),this.options=s4(e),this.services={},this.logger=Ho,this.modules={external:[]},xne(this),n&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,n),this;setTimeout(()=>{this.init(e,n)},0)}}init(e={},n){this.isInitializing=!0,typeof e=="function"&&(n=e,e={}),e.defaultNS==null&&e.ns&&(Vt(e.ns)?e.defaultNS=e.ns:e.ns.indexOf("translation")<0&&(e.defaultNS=e.ns[0]));const i=a4();this.options={...i,...this.options,...s4(e)},this.options.interpolation={...i.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator);const r=c=>c?typeof c=="function"?new c:c:null;if(!this.options.isClone){this.modules.logger?Ho.init(r(this.modules.logger),this.options):Ho.init(null,this.options);let c;this.modules.formatter?c=this.modules.formatter:c=pne;const u=new e4(this.options);this.store=new Qj(this.options.resources,this.options);const f=this.services;f.logger=Ho,f.resourceStore=this.store,f.languageUtils=u,f.pluralResolver=new une(u,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==i.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),c&&(!this.options.interpolation.format||this.options.interpolation.format===i.interpolation.format)&&(f.formatter=r(c),f.formatter.init&&f.formatter.init(f,this.options),this.options.interpolation.format=f.formatter.format.bind(f.formatter)),f.interpolator=new dne(this.options),f.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},f.backendConnector=new gne(r(this.modules.backend),f.resourceStore,f,this.options),f.backendConnector.on("*",(g,...y)=>{this.emit(g,...y)}),this.modules.languageDetector&&(f.languageDetector=r(this.modules.languageDetector),f.languageDetector.init&&f.languageDetector.init(f,this.options.detection,this.options)),this.modules.i18nFormat&&(f.i18nFormat=r(this.modules.i18nFormat),f.i18nFormat.init&&f.i18nFormat.init(this)),this.translator=new k_(this.services,this.options),this.translator.on("*",(g,...y)=>{this.emit(g,...y)}),this.modules.external.forEach(g=>{g.init&&g.init(this)})}if(this.format=this.options.interpolation.format,n||(n=Ty),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const c=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);c.length>0&&c[0]!=="dev"&&(this.options.lng=c[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(c=>{this[c]=(...u)=>this.store[c](...u)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(c=>{this[c]=(...u)=>(this.store[c](...u),this)});const o=Cg(),l=()=>{const c=(u,f)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),o.resolve(f),n(u,f)};if(this.languages&&!this.isInitialized)return c(null,this.t.bind(this));this.changeLanguage(this.options.lng,c)};return this.options.resources||!this.options.initAsync?l():setTimeout(l,0),o}loadResources(e,n=Ty){let i=n;const r=Vt(e)?e:this.language;if(typeof e=="function"&&(i=e),!this.options.resources||this.options.partialBundledLanguages){if(r?.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return i();const a=[],s=o=>{if(!o||o==="cimode")return;this.services.languageUtils.toResolveHierarchy(o).forEach(c=>{c!=="cimode"&&a.indexOf(c)<0&&a.push(c)})};r?s(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(l=>s(l)),this.options.preload?.forEach?.(o=>s(o)),this.services.backendConnector.load(a,this.options.ns,o=>{!o&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),i(o)})}else i(null)}reloadResources(e,n,i){const r=Cg();return typeof e=="function"&&(i=e,e=void 0),typeof n=="function"&&(i=n,n=void 0),e||(e=this.languages),n||(n=this.options.ns),i||(i=Ty),this.services.backendConnector.reload(e,n,a=>{r.resolve(),i(a)}),r}use(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return e.type==="backend"&&(this.modules.backend=e),(e.type==="logger"||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type==="languageDetector"&&(this.modules.languageDetector=e),e.type==="i18nFormat"&&(this.modules.i18nFormat=e),e.type==="postProcessor"&&rG.addPostProcessor(e),e.type==="formatter"&&(this.modules.formatter=e),e.type==="3rdParty"&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&!(["cimode","dev"].indexOf(e)>-1)){for(let n=0;n-1)&&this.store.hasLanguageSomeTranslations(i)){this.resolvedLanguage=i;break}}!this.resolvedLanguage&&this.languages.indexOf(e)<0&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,n){this.isLanguageChangingTo=e;const i=Cg();this.emit("languageChanging",e);const r=o=>{this.language=o,this.languages=this.services.languageUtils.toResolveHierarchy(o),this.resolvedLanguage=void 0,this.setResolvedLanguage(o)},a=(o,l)=>{l?this.isLanguageChangingTo===e&&(r(l),this.translator.changeLanguage(l),this.isLanguageChangingTo=void 0,this.emit("languageChanged",l),this.logger.log("languageChanged",l)):this.isLanguageChangingTo=void 0,i.resolve((...c)=>this.t(...c)),n&&n(o,(...c)=>this.t(...c))},s=o=>{!e&&!o&&this.services.languageDetector&&(o=[]);const l=Vt(o)?o:o&&o[0],c=this.store.hasLanguageSomeTranslations(l)?l:this.services.languageUtils.getBestMatchFromCodes(Vt(o)?[o]:o);c&&(this.language||r(c),this.translator.language||this.translator.changeLanguage(c),this.services.languageDetector?.cacheUserLanguage?.(c)),this.loadResources(c,u=>{a(u,c)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?s(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(s):this.services.languageDetector.detect(s):s(e),i}getFixedT(e,n,i){const r=(a,s,...o)=>{let l;typeof s!="object"?l=this.options.overloadTranslationOptionHandler([a,s].concat(o)):l={...s},l.lng=l.lng||r.lng,l.lngs=l.lngs||r.lngs,l.ns=l.ns||r.ns,l.keyPrefix!==""&&(l.keyPrefix=l.keyPrefix||i||r.keyPrefix);const c=this.options.keySeparator||".";let u;return l.keyPrefix&&Array.isArray(a)?u=a.map(f=>(typeof f=="function"&&(f=uN(f,{...this.options,...s})),`${l.keyPrefix}${c}${f}`)):(typeof a=="function"&&(a=uN(a,{...this.options,...s})),u=l.keyPrefix?`${l.keyPrefix}${c}${a}`:a),this.t(u,l)};return Vt(e)?r.lng=e:r.lngs=e,r.ns=n,r.keyPrefix=i,r}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,n={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const i=n.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,a=this.languages[this.languages.length-1];if(i.toLowerCase()==="cimode")return!0;const s=(o,l)=>{const c=this.services.backendConnector.state[`${o}|${l}`];return c===-1||c===0||c===2};if(n.precheck){const o=n.precheck(this,s);if(o!==void 0)return o}return!!(this.hasResourceBundle(i,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||s(i,e)&&(!r||s(a,e)))}loadNamespaces(e,n){const i=Cg();return this.options.ns?(Vt(e)&&(e=[e]),e.forEach(r=>{this.options.ns.indexOf(r)<0&&this.options.ns.push(r)}),this.loadResources(r=>{i.resolve(),n&&n(r)}),i):(n&&n(),Promise.resolve())}loadLanguages(e,n){const i=Cg();Vt(e)&&(e=[e]);const r=this.options.preload||[],a=e.filter(s=>r.indexOf(s)<0&&this.services.languageUtils.isSupportedCode(s));return a.length?(this.options.preload=r.concat(a),this.loadResources(s=>{i.resolve(),n&&n(s)}),i):(n&&n(),Promise.resolve())}dir(e){if(e||(e=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!e)return"rtl";try{const r=new Intl.Locale(e);if(r&&r.getTextInfo){const a=r.getTextInfo();if(a&&a.direction)return a.direction}}catch{}const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],i=this.services?.languageUtils||new e4(a4());return e.toLowerCase().indexOf("-latn")>1?"ltr":n.indexOf(i.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(e={},n){const i=new f0(e,n);return i.createInstance=f0.createInstance,i}cloneInstance(e={},n=Ty){const i=e.forkResourceStore;i&&delete e.forkResourceStore;const r={...this.options,...e,isClone:!0},a=new f0(r);if((e.debug!==void 0||e.prefix!==void 0)&&(a.logger=a.logger.clone(e)),["store","services","language"].forEach(o=>{a[o]=this[o]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},i){const o=Object.keys(this.store.data).reduce((l,c)=>(l[c]={...this.store.data[c]},l[c]=Object.keys(l[c]).reduce((u,f)=>(u[f]={...l[c][f]},u),l[c]),l),{});a.store=new Qj(o,r),a.services.resourceStore=a.store}return a.translator=new k_(a.services,r),a.translator.on("*",(o,...l)=>{a.emit(o,...l)}),a.init(r,n),a.translator.options=r,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const wa=f0.createInstance();wa.createInstance;wa.dir;wa.init;wa.loadResources;wa.reloadResources;wa.use;wa.changeLanguage;wa.getFixedT;wa.t;wa.exists;wa.setDefaultNamespace;wa.hasLoadedNamespace;wa.loadNamespaces;wa.loadLanguages;const vne=(t,e,n,i)=>{const r=[n,{code:e,...i||{}}];if(t?.services?.logger?.forward)return t.services.logger.forward(r,"warn","react-i18next::",!0);_f(r[0])&&(r[0]=`react-i18next:: ${r[0]}`),t?.services?.logger?.warn?t.services.logger.warn(...r):console?.warn&&console.warn(...r)},o4={},sG=(t,e,n,i)=>{_f(n)&&o4[n]||(_f(n)&&(o4[n]=new Date),vne(t,e,n,i))},oG=(t,e)=>()=>{if(t.isInitialized)e();else{const n=()=>{setTimeout(()=>{t.off("initialized",n)},0),e()};t.on("initialized",n)}},dN=(t,e,n)=>{t.loadNamespaces(e,oG(t,n))},l4=(t,e,n,i)=>{if(_f(n)&&(n=[n]),t.options.preload&&t.options.preload.indexOf(e)>-1)return dN(t,n,i);n.forEach(r=>{t.options.ns.indexOf(r)<0&&t.options.ns.push(r)}),t.loadLanguages(e,oG(t,i))},yne=(t,e,n={})=>!e.languages||!e.languages.length?(sG(e,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:e.languages}),!0):e.hasLoadedNamespace(t,{lng:n.lng,precheck:(i,r)=>{if(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&i.services.backendConnector.backend&&i.isLanguageChangingTo&&!r(i.isLanguageChangingTo,t))return!1}}),_f=t=>typeof t=="string",bne=t=>typeof t=="object"&&t!==null,_ne=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,Sne={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},wne=t=>Sne[t],Mne=t=>t.replace(_ne,wne);let fN={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:Mne};const Ene=(t={})=>{fN={...fN,...t}},Ane=()=>fN;let lG;const Tne=t=>{lG=t},Cne=()=>lG,Nne={type:"3rdParty",init(t){Ene(t.options.react),Tne(t)}},Rne=A.createContext();class Pne{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(n=>{this.usedNamespaces[n]||(this.usedNamespaces[n]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}var EA={exports:{}},AA={};var c4;function kne(){if(c4)return AA;c4=1;var t=pm();function e(f,p){return f===p&&(f!==0||1/f===1/p)||f!==f&&p!==p}var n=typeof Object.is=="function"?Object.is:e,i=t.useState,r=t.useEffect,a=t.useLayoutEffect,s=t.useDebugValue;function o(f,p){var g=p(),y=i({inst:{value:g,getSnapshot:p}}),_=y[0].inst,v=y[1];return a(function(){_.value=g,_.getSnapshot=p,l(_)&&v({inst:_})},[f,g,p]),r(function(){return l(_)&&v({inst:_}),f(function(){l(_)&&v({inst:_})})},[f]),s(g),g}function l(f){var p=f.getSnapshot;f=f.value;try{var g=p();return!n(f,g)}catch{return!0}}function c(f,p){return p()}var u=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?c:o;return AA.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:u,AA}var u4;function cG(){return u4||(u4=1,EA.exports=kne()),EA.exports}var xP=cG();const Dne=(t,e)=>_f(e)?e:bne(e)&&_f(e.defaultValue)?e.defaultValue:Array.isArray(t)?t[t.length-1]:t,One={t:Dne,ready:!1},Lne=()=>()=>{},vP=(t,e={})=>{const{i18n:n}=e,{i18n:i,defaultNS:r}=A.useContext(Rne)||{},a=n||i||Cne();a&&!a.reportNamespaces&&(a.reportNamespaces=new Pne),a||sG(a,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const s=A.useMemo(()=>({...Ane(),...a?.options?.react,...e}),[a,e]),{useSuspense:o,keyPrefix:l}=s,c=r||a?.options?.defaultNS,u=_f(c)?[c]:c||["translation"],f=A.useMemo(()=>u,u);a?.reportNamespaces?.addUsedNamespaces?.(f);const p=A.useRef(0),g=A.useCallback(C=>{if(!a)return Lne;const{bindI18n:k,bindI18nStore:F}=s,I=()=>{p.current+=1,C()};return k&&a.on(k,I),F&&a.store.on(F,I),()=>{k&&k.split(" ").forEach(q=>a.off(q,I)),F&&F.split(" ").forEach(q=>a.store.off(q,I))}},[a,s]),y=A.useRef(),_=A.useCallback(()=>{if(!a)return One;const C=!!(a.isInitialized||a.initializedStoreOnce)&&f.every(H=>yne(H,a,s)),k=e.lng||a.language,F=p.current,I=y.current;if(I&&I.ready===C&&I.lng===k&&I.keyPrefix===l&&I.revision===F)return I;const L={t:a.getFixedT(k,s.nsMode==="fallback"?f:f[0],l),ready:C,lng:k,keyPrefix:l,revision:F};return y.current=L,L},[a,f,l,s,e.lng]),[v,x]=A.useState(0),{t:M,ready:w}=xP.useSyncExternalStore(g,_,_);A.useEffect(()=>{if(a&&!w&&!o){const C=()=>x(k=>k+1);e.lng?l4(a,e.lng,f,C):dN(a,f,C)}},[a,e.lng,f,w,o,v]);const E=a||{},T=A.useRef(null),P=A.useRef(),N=C=>{const k=Object.getOwnPropertyDescriptors(C);k.__original&&delete k.__original;const F=Object.create(Object.getPrototypeOf(C),k);if(!Object.prototype.hasOwnProperty.call(F,"__original"))try{Object.defineProperty(F,"__original",{value:C,writable:!1,enumerable:!1,configurable:!1})}catch{}return F},U=A.useMemo(()=>{const C=E,k=C?.language;let F=C;C&&(T.current&&T.current.__original===C?P.current!==k?(F=N(C),T.current=F,P.current=k):F=T.current:(F=N(C),T.current=F,P.current=k));const I=[M,F,w];return I.t=M,I.i18n=F,I.ready=w,I},[M,E,w,E.resolvedLanguage,E.language,E.languages]);if(a&&o&&!w)throw new Promise(C=>{const k=()=>C();e.lng?l4(a,e.lng,f,k):dN(a,f,k)});return U},{slice:Ine,forEach:Une}=[];function jne(t){return Une.call(Ine.call(arguments,1),e=>{if(e)for(const n in e)t[n]===void 0&&(t[n]=e[n])}),t}function Fne(t){return typeof t!="string"?!1:[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(n=>n.test(t))}const d4=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,zne=function(t,e){const i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:"/"},r=encodeURIComponent(e);let a=`${t}=${r}`;if(i.maxAge>0){const s=i.maxAge-0;if(Number.isNaN(s))throw new Error("maxAge should be a Number");a+=`; Max-Age=${Math.floor(s)}`}if(i.domain){if(!d4.test(i.domain))throw new TypeError("option domain is invalid");a+=`; Domain=${i.domain}`}if(i.path){if(!d4.test(i.path))throw new TypeError("option path is invalid");a+=`; Path=${i.path}`}if(i.expires){if(typeof i.expires.toUTCString!="function")throw new TypeError("option expires is invalid");a+=`; Expires=${i.expires.toUTCString()}`}if(i.httpOnly&&(a+="; HttpOnly"),i.secure&&(a+="; Secure"),i.sameSite)switch(typeof i.sameSite=="string"?i.sameSite.toLowerCase():i.sameSite){case!0:a+="; SameSite=Strict";break;case"lax":a+="; SameSite=Lax";break;case"strict":a+="; SameSite=Strict";break;case"none":a+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return i.partitioned&&(a+="; Partitioned"),a},f4={create(t,e,n,i){let r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:"/",sameSite:"strict"};n&&(r.expires=new Date,r.expires.setTime(r.expires.getTime()+n*60*1e3)),i&&(r.domain=i),document.cookie=zne(t,e,r)},read(t){const e=`${t}=`,n=document.cookie.split(";");for(let i=0;i-1&&(i=window.location.hash.substring(window.location.hash.indexOf("?")));const a=i.substring(1).split("&");for(let s=0;s0&&a[s].substring(0,o)===e&&(n=a[s].substring(o+1))}}return n}},Vne={name:"hash",lookup(t){let{lookupHash:e,lookupFromHashIndex:n}=t,i;if(typeof window<"u"){const{hash:r}=window.location;if(r&&r.length>2){const a=r.substring(1);if(e){const s=a.split("&");for(let o=0;o0&&s[o].substring(0,l)===e&&(i=s[o].substring(l+1))}}if(i)return i;if(!i&&n>-1){const s=r.match(/\/([a-zA-Z-]*)/g);return Array.isArray(s)?s[typeof n=="number"?n:0]?.replace("/",""):void 0}}}return i}};let Eh=null;const h4=()=>{if(Eh!==null)return Eh;try{if(Eh=typeof window<"u"&&window.localStorage!==null,!Eh)return!1;const t="i18next.translate.boo";window.localStorage.setItem(t,"foo"),window.localStorage.removeItem(t)}catch{Eh=!1}return Eh};var $ne={name:"localStorage",lookup(t){let{lookupLocalStorage:e}=t;if(e&&h4())return window.localStorage.getItem(e)||void 0},cacheUserLanguage(t,e){let{lookupLocalStorage:n}=e;n&&h4()&&window.localStorage.setItem(n,t)}};let Ah=null;const p4=()=>{if(Ah!==null)return Ah;try{if(Ah=typeof window<"u"&&window.sessionStorage!==null,!Ah)return!1;const t="i18next.translate.boo";window.sessionStorage.setItem(t,"foo"),window.sessionStorage.removeItem(t)}catch{Ah=!1}return Ah};var Gne={name:"sessionStorage",lookup(t){let{lookupSessionStorage:e}=t;if(e&&p4())return window.sessionStorage.getItem(e)||void 0},cacheUserLanguage(t,e){let{lookupSessionStorage:n}=e;n&&p4()&&window.sessionStorage.setItem(n,t)}},Wne={name:"navigator",lookup(t){const e=[];if(typeof navigator<"u"){const{languages:n,userLanguage:i,language:r}=navigator;if(n)for(let a=0;a0?e:void 0}},qne={name:"htmlTag",lookup(t){let{htmlTag:e}=t,n;const i=e||(typeof document<"u"?document.documentElement:null);return i&&typeof i.getAttribute=="function"&&(n=i.getAttribute("lang")),n}},Xne={name:"path",lookup(t){let{lookupFromPathIndex:e}=t;if(typeof window>"u")return;const n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);return Array.isArray(n)?n[typeof e=="number"?e:0]?.replace("/",""):void 0}},Kne={name:"subdomain",lookup(t){let{lookupFromSubdomainIndex:e}=t;const n=typeof e=="number"?e+1:1,i=typeof window<"u"&&window.location?.hostname?.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(i)return i[n]}};let uG=!1;try{document.cookie,uG=!0}catch{}const dG=["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"];uG||dG.splice(1,1);const Yne=()=>({order:dG,lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:t=>t});class fG{constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type="languageDetector",this.detectors={},this.init(e,n)}init(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=e,this.options=jne(n,this.options||{},Yne()),typeof this.options.convertDetectedLanguage=="string"&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=r=>r.replace("-","_")),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=i,this.addDetector(Bne),this.addDetector(Hne),this.addDetector($ne),this.addDetector(Gne),this.addDetector(Wne),this.addDetector(qne),this.addDetector(Xne),this.addDetector(Kne),this.addDetector(Vne)}addDetector(e){return this.detectors[e.name]=e,this}detect(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,n=[];return e.forEach(i=>{if(this.detectors[i]){let r=this.detectors[i].lookup(this.options);r&&typeof r=="string"&&(r=[r]),r&&(n=n.concat(r))}}),n=n.filter(i=>i!=null&&!Fne(i)).map(i=>this.options.convertDetectedLanguage(i)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?n:n.length>0?n[0]:null}cacheUserLanguage(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;n&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(e)>-1||n.forEach(i=>{this.detectors[i]&&this.detectors[i].cacheUserLanguage(e,this.options)}))}}fG.type="languageDetector";const Zne={nav:{printers:"Printers",control:"Control",archives:"Archives",queue:"Queue",stats:"Statistics",profiles:"Profiles",maintenance:"Maintenance",settings:"Settings",collapseSidebar:"Collapse sidebar",expandSidebar:"Expand sidebar",update:"Update",updateAvailable:"Update available: v{{version}}",viewOnGithub:"View on GitHub",keyboardShortcuts:"Keyboard shortcuts (?)",switchToLight:"Switch to light mode",switchToDark:"Switch to dark mode"},common:{save:"Save",cancel:"Cancel",delete:"Delete",edit:"Edit",add:"Add",close:"Close",confirm:"Confirm",loading:"Loading...",error:"Error",success:"Success",warning:"Warning",enabled:"Enabled",disabled:"Disabled",yes:"Yes",no:"No",on:"On",off:"Off",all:"All",none:"None",search:"Search",filter:"Filter",sort:"Sort",refresh:"Refresh",download:"Download",upload:"Upload",actions:"Actions",status:"Status",name:"Name",description:"Description",date:"Date",time:"Time",hours:"hours",minutes:"minutes",seconds:"seconds",noPrinters:"No printers configured",noData:"No data available",required:"Required",optional:"Optional"},printers:{title:"Printers",addPrinter:"Add Printer",editPrinter:"Edit Printer",deletePrinter:"Delete Printer",printerName:"Printer Name",serialNumber:"Serial Number",ipAddress:"IP Address",accessCode:"Access Code",model:"Model",nozzleCount:"Nozzle Count",autoArchive:"Auto Archive",status:{idle:"Idle",printing:"Printing",paused:"Paused",offline:"Offline",error:"Error",finished:"Finished",unknown:"Unknown"},temperatures:{nozzle:"Nozzle",bed:"Bed",chamber:"Chamber"},progress:"{{percent}}% complete",timeRemaining:"{{time}} remaining",deleteConfirm:'Are you sure you want to delete "{{name}}"?',maintenanceOk:"Maintenance OK",maintenanceWarning:"{{count}} warning",maintenanceWarning_plural:"{{count}} warnings",maintenanceDue:"{{count}} due",maintenanceDue_plural:"{{count}} due"},archives:{title:"Print Archives",searchPlaceholder:"Search archives...",filterByPrinter:"Filter by printer",filterByStatus:"Filter by status",sortBy:"Sort by",sortNewest:"Newest first",sortOldest:"Oldest first",sortName:"Name",sortDuration:"Duration",noArchives:"No archives found",printTime:"Print Time",filamentUsed:"Filament Used",cost:"Cost",reprint:"Reprint",preview:"Preview",deleteArchive:"Delete Archive",deleteConfirm:"Are you sure you want to delete this archive?",favorite:"Favorite",unfavorite:"Remove from favorites",viewDetails:"View Details",status:{completed:"Completed",failed:"Failed",stopped:"Stopped"}},queue:{title:"Print Queue",addToQueue:"Add to Queue",clearQueue:"Clear Queue",emptyQueue:"Queue is empty",position:"Position",scheduledTime:"Scheduled Time",moveUp:"Move Up",moveDown:"Move Down",remove:"Remove",startNow:"Start Now",status:{pending:"Pending",printing:"Printing",completed:"Completed",failed:"Failed",cancelled:"Cancelled"}},stats:{title:"Statistics",overview:"Overview",totalPrints:"Total Prints",successRate:"Success Rate",totalPrintTime:"Total Print Time",totalFilament:"Total Filament Used",totalCost:"Total Cost",averagePrintTime:"Average Print Time",printsPerDay:"Prints per Day",byPrinter:"By Printer",byMaterial:"By Material",byMonth:"By Month",last7Days:"Last 7 Days",last30Days:"Last 30 Days",last90Days:"Last 90 Days",allTime:"All Time"},profiles:{title:"Filament Profiles",addProfile:"Add Profile",editProfile:"Edit Profile",deleteProfile:"Delete Profile",material:"Material",brand:"Brand",color:"Color",diameter:"Diameter",density:"Density",costPerKg:"Cost per kg",spoolWeight:"Spool Weight",noProfiles:"No profiles configured",deleteConfirm:"Are you sure you want to delete this profile?"},maintenance:{title:"Maintenance",overview:"Overview",allOk:"All maintenance up to date",dueCount:"{{count}} item due",dueCount_plural:"{{count}} items due",warningCount:"{{count}} warning",warningCount_plural:"{{count}} warnings",totalPrintTime:"Total Print Time",nextMaintenance:"Next Maintenance",nothingDue:"Nothing due",tasks:"Tasks",lastPerformed:"Last performed",interval:"Interval",hoursRemaining:"{{hours}}h remaining",hoursOverdue:"{{hours}}h overdue",markDone:"Mark as Done",performMaintenance:"Perform Maintenance",history:"History",noHistory:"No maintenance history",editPrintHours:"Edit Print Hours",currentHours:"Current Hours",types:{lubricateRails:"Lubricate Linear Rails",cleanNozzle:"Clean Nozzle/Hotend",checkBelts:"Check Belt Tension",cleanBuildPlate:"Clean Build Plate",checkExtruder:"Check Extruder Gears",checkCooling:"Check Cooling Fans",generalInspection:"General Inspection"}},settings:{title:"Settings",general:"General",appearance:"Appearance",notifications:"Notifications",smartPlugs:"Smart Plugs",spoolman:"Spoolman",updates:"Updates",language:"Language",languageDescription:"Select your preferred language",theme:"Theme",themeLight:"Light",themeDark:"Dark",themeSystem:"System",defaultView:"Default View",defaultViewDescription:"Page to show when opening the app",checkForUpdates:"Check for Updates",autoUpdate:"Auto Update",currentVersion:"Current Version",latestVersion:"Latest Version",upToDate:"You are up to date",updateAvailable:"Update available",notificationLanguage:"Notification Language",notificationLanguageDescription:"Language for push notifications",notificationProviders:"Notification Providers",addProvider:"Add Provider",editProvider:"Edit Provider",providerType:"Provider Type",testNotification:"Test Notification",testSuccess:"Test notification sent successfully",testFailed:"Failed to send test notification",quietHours:"Quiet Hours",quietHoursDescription:"Do not disturb during these hours",quietHoursStart:"Start",quietHoursEnd:"End",events:{title:"Notification Events",printStart:"Print Started",printComplete:"Print Completed",printFailed:"Print Failed",printStopped:"Print Stopped",printProgress:"Progress Milestones",printProgressDescription:"Notify at 25%, 50%, 75%",printerOffline:"Printer Offline",printerError:"Printer Error",filamentLow:"Low Filament",maintenanceDue:"Maintenance Due",maintenanceDueDescription:"Notify when maintenance is needed"},smartPlug:{title:"Smart Plugs",add:"Add Smart Plug",edit:"Edit Smart Plug",name:"Name",ipAddress:"IP Address",linkedPrinter:"Linked Printer",autoOn:"Auto Power On",autoOnDescription:"Turn on when print starts",autoOff:"Auto Power Off",autoOffDescription:"Turn off after print completes",offDelay:"Off Delay",offDelayMinutes:"Minutes after print",offDelayTemp:"When nozzle below temperature",currentState:"Current State",turnOn:"Turn On",turnOff:"Turn Off"},spoolmanEnabled:"Enable Spoolman Integration",spoolmanUrl:"Spoolman URL",spoolmanConnected:"Connected",spoolmanDisconnected:"Disconnected"},notification:{printStarted:{title:"Print Started",body:"{{printer}}: {{filename}} has started printing"},printCompleted:{title:"Print Completed",body:"{{printer}}: {{filename}} completed successfully"},printFailed:{title:"Print Failed",body:"{{printer}}: {{filename}} has failed"},printStopped:{title:"Print Stopped",body:"{{printer}}: {{filename}} was stopped"},printProgress:{title:"Print Progress",body:"{{printer}}: {{filename}} is {{percent}}% complete"},printerOffline:{title:"Printer Offline",body:"{{printer}} is offline"},printerError:{title:"Printer Error",body:"{{printer}}: {{error}}"},filamentLow:{title:"Low Filament",body:"{{printer}}: Filament is running low"},maintenanceDue:{title:"Maintenance Due",body:"{{printer}}: {{items}} need attention"}},errors:{generic:"Something went wrong",networkError:"Network error. Please check your connection.",notFound:"Not found",unauthorized:"Unauthorized",serverError:"Server error",validationError:"Please check your input",printerConnectionFailed:"Failed to connect to printer",saveFailed:"Failed to save changes",deleteFailed:"Failed to delete",loadFailed:"Failed to load data"},confirm:{delete:"Are you sure you want to delete this?",unsavedChanges:"You have unsaved changes. Are you sure you want to leave?",clearQueue:"Are you sure you want to clear the queue?"}},Qne={nav:{printers:"Drucker",control:"Steuerung",archives:"Archiv",queue:"Warteschlange",stats:"Statistiken",profiles:"Profile",maintenance:"Wartung",settings:"Einstellungen",collapseSidebar:"Seitenleiste einklappen",expandSidebar:"Seitenleiste ausklappen",update:"Update",updateAvailable:"Update verfügbar: v{{version}}",viewOnGithub:"Auf GitHub ansehen",keyboardShortcuts:"Tastaturkürzel (?)",switchToLight:"Zum hellen Modus wechseln",switchToDark:"Zum dunklen Modus wechseln"},common:{save:"Speichern",cancel:"Abbrechen",delete:"Löschen",edit:"Bearbeiten",add:"Hinzufügen",close:"Schließen",confirm:"Bestätigen",loading:"Lädt...",error:"Fehler",success:"Erfolg",warning:"Warnung",enabled:"Aktiviert",disabled:"Deaktiviert",yes:"Ja",no:"Nein",on:"An",off:"Aus",all:"Alle",none:"Keine",search:"Suchen",filter:"Filtern",sort:"Sortieren",refresh:"Aktualisieren",download:"Herunterladen",upload:"Hochladen",actions:"Aktionen",status:"Status",name:"Name",description:"Beschreibung",date:"Datum",time:"Zeit",hours:"Stunden",minutes:"Minuten",seconds:"Sekunden",noPrinters:"Keine Drucker konfiguriert",noData:"Keine Daten verfügbar",required:"Erforderlich",optional:"Optional"},printers:{title:"Drucker",addPrinter:"Drucker hinzufügen",editPrinter:"Drucker bearbeiten",deletePrinter:"Drucker löschen",printerName:"Druckername",serialNumber:"Seriennummer",ipAddress:"IP-Adresse",accessCode:"Zugangscode",model:"Modell",nozzleCount:"Düsenanzahl",autoArchive:"Automatische Archivierung",status:{idle:"Bereit",printing:"Druckt",paused:"Pausiert",offline:"Offline",error:"Fehler",finished:"Fertig",unknown:"Unbekannt"},temperatures:{nozzle:"Düse",bed:"Druckbett",chamber:"Kammer"},progress:"{{percent}}% abgeschlossen",timeRemaining:"Noch {{time}}",deleteConfirm:'Möchten Sie "{{name}}" wirklich löschen?',maintenanceOk:"Wartung OK",maintenanceWarning:"{{count}} Warnung",maintenanceWarning_plural:"{{count}} Warnungen",maintenanceDue:"{{count}} fällig",maintenanceDue_plural:"{{count}} fällig"},archives:{title:"Druckarchiv",searchPlaceholder:"Archiv durchsuchen...",filterByPrinter:"Nach Drucker filtern",filterByStatus:"Nach Status filtern",sortBy:"Sortieren nach",sortNewest:"Neueste zuerst",sortOldest:"Älteste zuerst",sortName:"Name",sortDuration:"Dauer",noArchives:"Keine Archive gefunden",printTime:"Druckzeit",filamentUsed:"Verbrauchtes Filament",cost:"Kosten",reprint:"Erneut drucken",preview:"Vorschau",deleteArchive:"Archiv löschen",deleteConfirm:"Möchten Sie dieses Archiv wirklich löschen?",favorite:"Favorit",unfavorite:"Aus Favoriten entfernen",viewDetails:"Details anzeigen",status:{completed:"Abgeschlossen",failed:"Fehlgeschlagen",stopped:"Gestoppt"}},queue:{title:"Druckwarteschlange",addToQueue:"Zur Warteschlange hinzufügen",clearQueue:"Warteschlange leeren",emptyQueue:"Warteschlange ist leer",position:"Position",scheduledTime:"Geplante Zeit",moveUp:"Nach oben",moveDown:"Nach unten",remove:"Entfernen",startNow:"Jetzt starten",status:{pending:"Ausstehend",printing:"Druckt",completed:"Abgeschlossen",failed:"Fehlgeschlagen",cancelled:"Abgebrochen"}},stats:{title:"Statistiken",overview:"Übersicht",totalPrints:"Gesamtdrucke",successRate:"Erfolgsrate",totalPrintTime:"Gesamtdruckzeit",totalFilament:"Gesamtverbrauch Filament",totalCost:"Gesamtkosten",averagePrintTime:"Durchschnittliche Druckzeit",printsPerDay:"Drucke pro Tag",byPrinter:"Nach Drucker",byMaterial:"Nach Material",byMonth:"Nach Monat",last7Days:"Letzte 7 Tage",last30Days:"Letzte 30 Tage",last90Days:"Letzte 90 Tage",allTime:"Gesamt"},profiles:{title:"Filament-Profile",addProfile:"Profil hinzufügen",editProfile:"Profil bearbeiten",deleteProfile:"Profil löschen",material:"Material",brand:"Marke",color:"Farbe",diameter:"Durchmesser",density:"Dichte",costPerKg:"Kosten pro kg",spoolWeight:"Spulengewicht",noProfiles:"Keine Profile konfiguriert",deleteConfirm:"Möchten Sie dieses Profil wirklich löschen?"},maintenance:{title:"Wartung",overview:"Übersicht",allOk:"Alle Wartungen aktuell",dueCount:"{{count}} Aufgabe fällig",dueCount_plural:"{{count}} Aufgaben fällig",warningCount:"{{count}} Warnung",warningCount_plural:"{{count}} Warnungen",totalPrintTime:"Gesamtdruckzeit",nextMaintenance:"Nächste Wartung",nothingDue:"Nichts fällig",tasks:"Aufgaben",lastPerformed:"Zuletzt durchgeführt",interval:"Intervall",hoursRemaining:"{{hours}}h verbleibend",hoursOverdue:"{{hours}}h überfällig",markDone:"Als erledigt markieren",performMaintenance:"Wartung durchführen",history:"Verlauf",noHistory:"Kein Wartungsverlauf",editPrintHours:"Druckstunden bearbeiten",currentHours:"Aktuelle Stunden",types:{lubricateRails:"Linearschienen schmieren",cleanNozzle:"Düse/Hotend reinigen",checkBelts:"Riemenspannung prüfen",cleanBuildPlate:"Druckbett reinigen",checkExtruder:"Extruderzahnräder prüfen",checkCooling:"Kühlungslüfter prüfen",generalInspection:"Allgemeine Inspektion"}},settings:{title:"Einstellungen",general:"Allgemein",appearance:"Erscheinungsbild",notifications:"Benachrichtigungen",smartPlugs:"Smart Plugs",spoolman:"Spoolman",updates:"Updates",language:"Sprache",languageDescription:"Wählen Sie Ihre bevorzugte Sprache",theme:"Design",themeLight:"Hell",themeDark:"Dunkel",themeSystem:"System",defaultView:"Standardansicht",defaultViewDescription:"Seite, die beim Öffnen der App angezeigt wird",checkForUpdates:"Nach Updates suchen",autoUpdate:"Automatische Updates",currentVersion:"Aktuelle Version",latestVersion:"Neueste Version",upToDate:"Sie sind auf dem neuesten Stand",updateAvailable:"Update verfügbar",notificationLanguage:"Benachrichtigungssprache",notificationLanguageDescription:"Sprache für Push-Benachrichtigungen",notificationProviders:"Benachrichtigungsanbieter",addProvider:"Anbieter hinzufügen",editProvider:"Anbieter bearbeiten",providerType:"Anbietertyp",testNotification:"Testbenachrichtigung",testSuccess:"Testbenachrichtigung erfolgreich gesendet",testFailed:"Testbenachrichtigung konnte nicht gesendet werden",quietHours:"Ruhezeiten",quietHoursDescription:"Keine Störungen während dieser Zeiten",quietHoursStart:"Beginn",quietHoursEnd:"Ende",events:{title:"Benachrichtigungsereignisse",printStart:"Druck gestartet",printComplete:"Druck abgeschlossen",printFailed:"Druck fehlgeschlagen",printStopped:"Druck gestoppt",printProgress:"Fortschrittsmeldungen",printProgressDescription:"Bei 25%, 50%, 75% benachrichtigen",printerOffline:"Drucker offline",printerError:"Druckerfehler",filamentLow:"Filament niedrig",maintenanceDue:"Wartung fällig",maintenanceDueDescription:"Benachrichtigen, wenn Wartung erforderlich"},smartPlug:{title:"Smart Plugs",add:"Smart Plug hinzufügen",edit:"Smart Plug bearbeiten",name:"Name",ipAddress:"IP-Adresse",linkedPrinter:"Verknüpfter Drucker",autoOn:"Automatisch einschalten",autoOnDescription:"Einschalten beim Druckstart",autoOff:"Automatisch ausschalten",autoOffDescription:"Ausschalten nach Druckende",offDelay:"Ausschaltverzögerung",offDelayMinutes:"Minuten nach Druck",offDelayTemp:"Wenn Düse unter Temperatur",currentState:"Aktueller Status",turnOn:"Einschalten",turnOff:"Ausschalten"},spoolmanEnabled:"Spoolman-Integration aktivieren",spoolmanUrl:"Spoolman URL",spoolmanConnected:"Verbunden",spoolmanDisconnected:"Nicht verbunden"},notification:{printStarted:{title:"Druck gestartet",body:"{{printer}}: {{filename}} wird gedruckt"},printCompleted:{title:"Druck abgeschlossen",body:"{{printer}}: {{filename}} erfolgreich abgeschlossen"},printFailed:{title:"Druck fehlgeschlagen",body:"{{printer}}: {{filename}} ist fehlgeschlagen"},printStopped:{title:"Druck gestoppt",body:"{{printer}}: {{filename}} wurde gestoppt"},printProgress:{title:"Druckfortschritt",body:"{{printer}}: {{filename}} ist zu {{percent}}% abgeschlossen"},printerOffline:{title:"Drucker offline",body:"{{printer}} ist offline"},printerError:{title:"Druckerfehler",body:"{{printer}}: {{error}}"},filamentLow:{title:"Filament niedrig",body:"{{printer}}: Filament geht zur Neige"},maintenanceDue:{title:"Wartung fällig",body:"{{printer}}: {{items}} benötigen Aufmerksamkeit"}},errors:{generic:"Etwas ist schiefgelaufen",networkError:"Netzwerkfehler. Bitte überprüfen Sie Ihre Verbindung.",notFound:"Nicht gefunden",unauthorized:"Nicht autorisiert",serverError:"Serverfehler",validationError:"Bitte überprüfen Sie Ihre Eingabe",printerConnectionFailed:"Verbindung zum Drucker fehlgeschlagen",saveFailed:"Speichern fehlgeschlagen",deleteFailed:"Löschen fehlgeschlagen",loadFailed:"Laden der Daten fehlgeschlagen"},confirm:{delete:"Möchten Sie dies wirklich löschen?",unsavedChanges:"Sie haben ungespeicherte Änderungen. Möchten Sie wirklich verlassen?",clearQueue:"Möchten Sie die Warteschlange wirklich leeren?"}},Jne={en:{translation:Zne},de:{translation:Qne}};wa.use(fG).use(Nne).init({resources:Jne,fallbackLng:"en",supportedLngs:["en","de"],detection:{order:["localStorage","navigator","htmlTag"],lookupLocalStorage:"bambutrack_language",caches:["localStorage"]},interpolation:{escapeValue:!1},react:{useSuspense:!1}});const m4=[{code:"en",name:"English",nativeName:"English"},{code:"de",name:"German",nativeName:"Deutsch"}];var g4="popstate";function eie(t={}){function e(i,r){let{pathname:a,search:s,hash:o}=i.location;return hN("",{pathname:a,search:s,hash:o},r.state&&r.state.usr||null,r.state&&r.state.key||"default")}function n(i,r){return typeof r=="string"?r:L0(r)}return nie(e,n,null,t)}function mi(t,e){if(t===!1||t===null||typeof t>"u")throw new Error(e)}function Ws(t,e){if(!t){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}function tie(){return Math.random().toString(36).substring(2,10)}function x4(t,e){return{usr:t.state,key:t.key,idx:e}}function hN(t,e,n=null,i){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof e=="string"?mm(e):e,state:n,key:e&&e.key||i||tie()}}function L0({pathname:t="/",search:e="",hash:n=""}){return e&&e!=="?"&&(t+=e.charAt(0)==="?"?e:"?"+e),n&&n!=="#"&&(t+=n.charAt(0)==="#"?n:"#"+n),t}function mm(t){let e={};if(t){let n=t.indexOf("#");n>=0&&(e.hash=t.substring(n),t=t.substring(0,n));let i=t.indexOf("?");i>=0&&(e.search=t.substring(i),t=t.substring(0,i)),t&&(e.pathname=t)}return e}function nie(t,e,n,i={}){let{window:r=document.defaultView,v5Compat:a=!1}=i,s=r.history,o="POP",l=null,c=u();c==null&&(c=0,s.replaceState({...s.state,idx:c},""));function u(){return(s.state||{idx:null}).idx}function f(){o="POP";let v=u(),x=v==null?null:v-c;c=v,l&&l({action:o,location:_.location,delta:x})}function p(v,x){o="PUSH";let M=hN(_.location,v,x);c=u()+1;let w=x4(M,c),E=_.createHref(M);try{s.pushState(w,"",E)}catch(T){if(T instanceof DOMException&&T.name==="DataCloneError")throw T;r.location.assign(E)}a&&l&&l({action:o,location:_.location,delta:1})}function g(v,x){o="REPLACE";let M=hN(_.location,v,x);c=u();let w=x4(M,c),E=_.createHref(M);s.replaceState(w,"",E),a&&l&&l({action:o,location:_.location,delta:0})}function y(v){return iie(v)}let _={get action(){return o},get location(){return t(r,s)},listen(v){if(l)throw new Error("A history only accepts one active listener");return r.addEventListener(g4,f),l=v,()=>{r.removeEventListener(g4,f),l=null}},createHref(v){return e(r,v)},createURL:y,encodeLocation(v){let x=y(v);return{pathname:x.pathname,search:x.search,hash:x.hash}},push:p,replace:g,go(v){return s.go(v)}};return _}function iie(t,e=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),mi(n,"No window.location.(origin|href) available to create URL");let i=typeof t=="string"?t:L0(t);return i=i.replace(/ $/,"%20"),!e&&i.startsWith("//")&&(i=n+i),new URL(i,n)}function hG(t,e,n="/"){return rie(t,e,n,!1)}function rie(t,e,n,i){let r=typeof e=="string"?mm(e):e,a=cc(r.pathname||"/",n);if(a==null)return null;let s=pG(t);aie(s);let o=null;for(let l=0;o==null&&l{let u={relativePath:c===void 0?s.path||"":c,caseSensitive:s.caseSensitive===!0,childrenIndex:o,route:s};if(u.relativePath.startsWith("/")){if(!u.relativePath.startsWith(i)&&l)return;mi(u.relativePath.startsWith(i),`Absolute route path "${u.relativePath}" nested under path "${i}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),u.relativePath=u.relativePath.slice(i.length)}let f=tc([i,u.relativePath]),p=n.concat(u);s.children&&s.children.length>0&&(mi(s.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${f}".`),pG(s.children,e,p,f,l)),!(s.path==null&&!s.index)&&e.push({path:f,score:fie(f,s.index),routesMeta:p})};return t.forEach((s,o)=>{if(s.path===""||!s.path?.includes("?"))a(s,o);else for(let l of mG(s.path))a(s,o,!0,l)}),e}function mG(t){let e=t.split("/");if(e.length===0)return[];let[n,...i]=e,r=n.endsWith("?"),a=n.replace(/\?$/,"");if(i.length===0)return r?[a,""]:[a];let s=mG(i.join("/")),o=[];return o.push(...s.map(l=>l===""?a:[a,l].join("/"))),r&&o.push(...s),o.map(l=>t.startsWith("/")&&l===""?"/":l)}function aie(t){t.sort((e,n)=>e.score!==n.score?n.score-e.score:hie(e.routesMeta.map(i=>i.childrenIndex),n.routesMeta.map(i=>i.childrenIndex)))}var sie=/^:[\w-]+$/,oie=3,lie=2,cie=1,uie=10,die=-2,v4=t=>t==="*";function fie(t,e){let n=t.split("/"),i=n.length;return n.some(v4)&&(i+=die),e&&(i+=lie),n.filter(r=>!v4(r)).reduce((r,a)=>r+(sie.test(a)?oie:a===""?cie:uie),i)}function hie(t,e){return t.length===e.length&&t.slice(0,-1).every((i,r)=>i===e[r])?t[t.length-1]-e[e.length-1]:0}function pie(t,e,n=!1){let{routesMeta:i}=t,r={},a="/",s=[];for(let o=0;o{if(u==="*"){let y=o[p]||"";s=a.slice(0,a.length-y.length).replace(/(.)\/+$/,"$1")}const g=o[p];return f&&!g?c[u]=void 0:c[u]=(g||"").replace(/%2F/g,"/"),c},{}),pathname:a,pathnameBase:s,pattern:t}}function mie(t,e=!1,n=!0){Ws(t==="*"||!t.endsWith("*")||t.endsWith("/*"),`Route path "${t}" will be treated as if it were "${t.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${t.replace(/\*$/,"/*")}".`);let i=[],r="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(s,o,l)=>(i.push({paramName:o,isOptional:l!=null}),l?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return t.endsWith("*")?(i.push({paramName:"*"}),r+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?r+="\\/*$":t!==""&&t!=="/"&&(r+="(?:(?=\\/|$))"),[new RegExp(r,e?void 0:"i"),i]}function gie(t){try{return t.split("/").map(e=>decodeURIComponent(e).replace(/\//g,"%2F")).join("/")}catch(e){return Ws(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${e}).`),t}}function cc(t,e){if(e==="/")return t;if(!t.toLowerCase().startsWith(e.toLowerCase()))return null;let n=e.endsWith("/")?e.length-1:e.length,i=t.charAt(n);return i&&i!=="/"?null:t.slice(n)||"/"}var xie=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,vie=t=>xie.test(t);function yie(t,e="/"){let{pathname:n,search:i="",hash:r=""}=typeof t=="string"?mm(t):t,a;if(n)if(vie(n))a=n;else{if(n.includes("//")){let s=n;n=n.replace(/\/\/+/g,"/"),Ws(!1,`Pathnames cannot have embedded double slashes - normalizing ${s} -> ${n}`)}n.startsWith("/")?a=y4(n.substring(1),"/"):a=y4(n,e)}else a=e;return{pathname:a,search:Sie(i),hash:wie(r)}}function y4(t,e){let n=e.replace(/\/+$/,"").split("/");return t.split("/").forEach(r=>{r===".."?n.length>1&&n.pop():r!=="."&&n.push(r)}),n.length>1?n.join("/"):"/"}function TA(t,e,n,i){return`Cannot include a '${t}' character in a manually specified \`to.${e}\` field [${JSON.stringify(i)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function bie(t){return t.filter((e,n)=>n===0||e.route.path&&e.route.path.length>0)}function gG(t){let e=bie(t);return e.map((n,i)=>i===e.length-1?n.pathname:n.pathnameBase)}function xG(t,e,n,i=!1){let r;typeof t=="string"?r=mm(t):(r={...t},mi(!r.pathname||!r.pathname.includes("?"),TA("?","pathname","search",r)),mi(!r.pathname||!r.pathname.includes("#"),TA("#","pathname","hash",r)),mi(!r.search||!r.search.includes("#"),TA("#","search","hash",r)));let a=t===""||r.pathname==="",s=a?"/":r.pathname,o;if(s==null)o=n;else{let f=e.length-1;if(!i&&s.startsWith("..")){let p=s.split("/");for(;p[0]==="..";)p.shift(),f-=1;r.pathname=p.join("/")}o=f>=0?e[f]:"/"}let l=yie(r,o),c=s&&s!=="/"&&s.endsWith("/"),u=(a||s===".")&&n.endsWith("/");return!l.pathname.endsWith("/")&&(c||u)&&(l.pathname+="/"),l}var tc=t=>t.join("/").replace(/\/\/+/g,"/"),_ie=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),Sie=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,wie=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t;function Mie(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var vG=["POST","PUT","PATCH","DELETE"];new Set(vG);var Eie=["GET",...vG];new Set(Eie);var gm=A.createContext(null);gm.displayName="DataRouter";var BS=A.createContext(null);BS.displayName="DataRouterState";A.createContext(!1);var yG=A.createContext({isTransitioning:!1});yG.displayName="ViewTransition";var Aie=A.createContext(new Map);Aie.displayName="Fetchers";var Tie=A.createContext(null);Tie.displayName="Await";var rl=A.createContext(null);rl.displayName="Navigation";var Tx=A.createContext(null);Tx.displayName="Location";var al=A.createContext({outlet:null,matches:[],isDataRoute:!1});al.displayName="Route";var yP=A.createContext(null);yP.displayName="RouteError";function Cie(t,{relative:e}={}){mi(Cx(),"useHref() may be used only in the context of a component.");let{basename:n,navigator:i}=A.useContext(rl),{hash:r,pathname:a,search:s}=Nx(t,{relative:e}),o=a;return n!=="/"&&(o=a==="/"?n:tc([n,a])),i.createHref({pathname:o,search:s,hash:r})}function Cx(){return A.useContext(Tx)!=null}function Sc(){return mi(Cx(),"useLocation() may be used only in the context of a component."),A.useContext(Tx).location}var bG="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function _G(t){A.useContext(rl).static||A.useLayoutEffect(t)}function HS(){let{isDataRoute:t}=A.useContext(al);return t?Vie():Nie()}function Nie(){mi(Cx(),"useNavigate() may be used only in the context of a component.");let t=A.useContext(gm),{basename:e,navigator:n}=A.useContext(rl),{matches:i}=A.useContext(al),{pathname:r}=Sc(),a=JSON.stringify(gG(i)),s=A.useRef(!1);return _G(()=>{s.current=!0}),A.useCallback((l,c={})=>{if(Ws(s.current,bG),!s.current)return;if(typeof l=="number"){n.go(l);return}let u=xG(l,JSON.parse(a),r,c.relative==="path");t==null&&e!=="/"&&(u.pathname=u.pathname==="/"?e:tc([e,u.pathname])),(c.replace?n.replace:n.push)(u,c.state,c)},[e,n,a,r,t])}var Rie=A.createContext(null);function Pie(t){let e=A.useContext(al).outlet;return A.useMemo(()=>e&&A.createElement(Rie.Provider,{value:t},e),[e,t])}function Nx(t,{relative:e}={}){let{matches:n}=A.useContext(al),{pathname:i}=Sc(),r=JSON.stringify(gG(n));return A.useMemo(()=>xG(t,JSON.parse(r),i,e==="path"),[t,r,i,e])}function kie(t,e){return SG(t,e)}function SG(t,e,n,i,r){mi(Cx(),"useRoutes() may be used only in the context of a component.");let{navigator:a}=A.useContext(rl),{matches:s}=A.useContext(al),o=s[s.length-1],l=o?o.params:{},c=o?o.pathname:"/",u=o?o.pathnameBase:"/",f=o&&o.route;{let M=f&&f.path||"";wG(c,!f||M.endsWith("*")||M.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${c}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. +`+S.stack}}var oe=Object.prototype.hasOwnProperty,ke=t.unstable_scheduleCallback,Ne=t.unstable_cancelCallback,te=t.unstable_shouldYield,j=t.unstable_requestPaint,O=t.unstable_now,Y=t.unstable_getCurrentPriorityLevel,me=t.unstable_ImmediatePriority,ye=t.unstable_UserBlockingPriority,he=t.unstable_NormalPriority,Ze=t.unstable_LowPriority,Le=t.unstable_IdlePriority,qe=t.log,at=t.unstable_setDisableYieldValue,Ie=null,Re=null;function pt(d){if(typeof qe=="function"&&at(d),Re&&typeof Re.setStrictMode=="function")try{Re.setStrictMode(Ie,d)}catch{}}var tt=Math.clz32?Math.clz32:de,et=Math.log,ut=Math.LN2;function de(d){return d>>>=0,d===0?32:31-(et(d)/ut|0)|0}var nt=256,fe=262144,Oe=4194304;function Me(d){var h=d&42;if(h!==0)return h;switch(d&-d){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return d&261888;case 262144:case 524288:case 1048576:case 2097152:return d&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return d&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return d}}function ge(d,h,b){var S=d.pendingLanes;if(S===0)return 0;var R=0,D=d.suspendedLanes,$=d.pingedLanes;d=d.warmLanes;var ne=S&134217727;return ne!==0?(S=ne&~D,S!==0?R=Me(S):($&=ne,$!==0?R=Me($):b||(b=ne&~d,b!==0&&(R=Me(b))))):(ne=S&~D,ne!==0?R=Me(ne):$!==0?R=Me($):b||(b=S&~d,b!==0&&(R=Me(b)))),R===0?0:h!==0&&h!==R&&(h&D)===0&&(D=R&-R,b=h&-h,D>=b||D===32&&(b&4194048)!==0)?h:R}function Be(d,h){return(d.pendingLanes&~(d.suspendedLanes&~d.pingedLanes)&h)===0}function ct(d,h){switch(d){case 1:case 2:case 4:case 8:case 64:return h+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return h+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function bt(){var d=Oe;return Oe<<=1,(Oe&62914560)===0&&(Oe=4194304),d}function Rt(d){for(var h=[],b=0;31>b;b++)h.push(d);return h}function on(d,h){d.pendingLanes|=h,h!==268435456&&(d.suspendedLanes=0,d.pingedLanes=0,d.warmLanes=0)}function Dt(d,h,b,S,R,D){var $=d.pendingLanes;d.pendingLanes=b,d.suspendedLanes=0,d.pingedLanes=0,d.warmLanes=0,d.expiredLanes&=b,d.entangledLanes&=b,d.errorRecoveryDisabledLanes&=b,d.shellSuspendCounter=0;var ne=d.entanglements,_e=d.expirationTimes,Fe=d.hiddenUpdates;for(b=$&~b;0"u")return null;try{return d.activeElement||d.body}catch{return d.body}}var Ti=/[\n"\\]/g;function Cn(d){return d.replace(Ti,function(h){return"\\"+h.charCodeAt(0).toString(16)+" "})}function Js(d,h,b,S,R,D,$,ne){d.name="",$!=null&&typeof $!="function"&&typeof $!="symbol"&&typeof $!="boolean"?d.type=$:d.removeAttribute("type"),h!=null?$==="number"?(h===0&&d.value===""||d.value!=h)&&(d.value=""+cn(h)):d.value!==""+cn(h)&&(d.value=""+cn(h)):$!=="submit"&&$!=="reset"||d.removeAttribute("value"),h!=null?mr(d,$,cn(h)):b!=null?mr(d,$,cn(b)):S!=null&&d.removeAttribute("value"),R==null&&D!=null&&(d.defaultChecked=!!D),R!=null&&(d.checked=R&&typeof R!="function"&&typeof R!="symbol"),ne!=null&&typeof ne!="function"&&typeof ne!="symbol"&&typeof ne!="boolean"?d.name=""+cn(ne):d.removeAttribute("name")}function Pn(d,h,b,S,R,D,$,ne){if(D!=null&&typeof D!="function"&&typeof D!="symbol"&&typeof D!="boolean"&&(d.type=D),h!=null||b!=null){if(!(D!=="submit"&&D!=="reset"||h!=null)){Xt(d);return}b=b!=null?""+cn(b):"",h=h!=null?""+cn(h):b,ne||h===d.value||(d.value=h),d.defaultValue=h}S=S??R,S=typeof S!="function"&&typeof S!="symbol"&&!!S,d.checked=ne?d.checked:!!S,d.defaultChecked=!!S,$!=null&&typeof $!="function"&&typeof $!="symbol"&&typeof $!="boolean"&&(d.name=$),Xt(d)}function mr(d,h,b){h==="number"&&yi(d.ownerDocument)===d||d.defaultValue===""+b||(d.defaultValue=""+b)}function Qi(d,h,b,S){if(d=d.options,h){h={};for(var R=0;R"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),mM=!1;if(ll)try{var Im={};Object.defineProperty(Im,"passive",{get:function(){mM=!0}}),window.addEventListener("test",Im,Im),window.removeEventListener("test",Im,Im)}catch{mM=!1}var kc=null,gM=null,hv=null;function oL(){if(hv)return hv;var d,h=gM,b=h.length,S,R="value"in kc?kc.value:kc.textContent,D=R.length;for(d=0;d=Fm),hL=" ",pL=!1;function mL(d,h){switch(d){case"keyup":return oee.indexOf(h.keyCode)!==-1;case"keydown":return h.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function gL(d){return d=d.detail,typeof d=="object"&&"data"in d?d.data:null}var Xf=!1;function cee(d,h){switch(d){case"compositionend":return gL(h);case"keypress":return h.which!==32?null:(pL=!0,hL);case"textInput":return d=h.data,d===hL&&pL?null:d;default:return null}}function uee(d,h){if(Xf)return d==="compositionend"||!_M&&mL(d,h)?(d=oL(),hv=gM=kc=null,Xf=!1,d):null;switch(d){case"paste":return null;case"keypress":if(!(h.ctrlKey||h.altKey||h.metaKey)||h.ctrlKey&&h.altKey){if(h.char&&1=h)return{node:b,offset:h-d};d=S}e:{for(;b;){if(b.nextSibling){b=b.nextSibling;break e}b=b.parentNode}b=void 0}b=ML(b)}}function AL(d,h){return d&&h?d===h?!0:d&&d.nodeType===3?!1:h&&h.nodeType===3?AL(d,h.parentNode):"contains"in d?d.contains(h):d.compareDocumentPosition?!!(d.compareDocumentPosition(h)&16):!1:!1}function TL(d){d=d!=null&&d.ownerDocument!=null&&d.ownerDocument.defaultView!=null?d.ownerDocument.defaultView:window;for(var h=yi(d.document);h instanceof d.HTMLIFrameElement;){try{var b=typeof h.contentWindow.location.href=="string"}catch{b=!1}if(b)d=h.contentWindow;else break;h=yi(d.document)}return h}function MM(d){var h=d&&d.nodeName&&d.nodeName.toLowerCase();return h&&(h==="input"&&(d.type==="text"||d.type==="search"||d.type==="tel"||d.type==="url"||d.type==="password")||h==="textarea"||d.contentEditable==="true")}var vee=ll&&"documentMode"in document&&11>=document.documentMode,Kf=null,EM=null,Vm=null,AM=!1;function CL(d,h,b){var S=b.window===b?b.document:b.nodeType===9?b:b.ownerDocument;AM||Kf==null||Kf!==yi(S)||(S=Kf,"selectionStart"in S&&MM(S)?S={start:S.selectionStart,end:S.selectionEnd}:(S=(S.ownerDocument&&S.ownerDocument.defaultView||window).getSelection(),S={anchorNode:S.anchorNode,anchorOffset:S.anchorOffset,focusNode:S.focusNode,focusOffset:S.focusOffset}),Vm&&Hm(Vm,S)||(Vm=S,S=sy(EM,"onSelect"),0>=$,R-=$,To=1<<32-tt(h)+R|b<Qt?(xn=kt,kt=null):xn=kt.sibling;var wn=Ve(De,kt,je[Qt],rt);if(wn===null){kt===null&&(kt=xn);break}d&&kt&&wn.alternate===null&&h(De,kt),Ee=D(wn,Ee,Qt),Sn===null?It=wn:Sn.sibling=wn,Sn=wn,kt=xn}if(Qt===je.length)return b(De,kt),yn&&ul(De,Qt),It;if(kt===null){for(;QtQt?(xn=kt,kt=null):xn=kt.sibling;var eu=Ve(De,kt,wn.value,rt);if(eu===null){kt===null&&(kt=xn);break}d&&kt&&eu.alternate===null&&h(De,kt),Ee=D(eu,Ee,Qt),Sn===null?It=eu:Sn.sibling=eu,Sn=eu,kt=xn}if(wn.done)return b(De,kt),yn&&ul(De,Qt),It;if(kt===null){for(;!wn.done;Qt++,wn=je.next())wn=st(De,wn.value,rt),wn!==null&&(Ee=D(wn,Ee,Qt),Sn===null?It=wn:Sn.sibling=wn,Sn=wn);return yn&&ul(De,Qt),It}for(kt=S(kt);!wn.done;Qt++,wn=je.next())wn=Ye(kt,De,Qt,wn.value,rt),wn!==null&&(d&&wn.alternate!==null&&kt.delete(wn.key===null?Qt:wn.key),Ee=D(wn,Ee,Qt),Sn===null?It=wn:Sn.sibling=wn,Sn=wn);return d&&kt.forEach(function(jte){return h(De,jte)}),yn&&ul(De,Qt),It}function jn(De,Ee,je,rt){if(typeof je=="object"&&je!==null&&je.type===_&&je.key===null&&(je=je.props.children),typeof je=="object"&&je!==null){switch(je.$$typeof){case m:e:{for(var It=je.key;Ee!==null;){if(Ee.key===It){if(It=je.type,It===_){if(Ee.tag===7){b(De,Ee.sibling),rt=R(Ee,je.props.children),rt.return=De,De=rt;break e}}else if(Ee.elementType===It||typeof It=="object"&&It!==null&&It.$$typeof===U&&bd(It)===Ee.type){b(De,Ee.sibling),rt=R(Ee,je.props),Km(rt,je),rt.return=De,De=rt;break e}b(De,Ee);break}else h(De,Ee);Ee=Ee.sibling}je.type===_?(rt=md(je.props.children,De.mode,rt,je.key),rt.return=De,De=rt):(rt=wv(je.type,je.key,je.props,null,De.mode,rt),Km(rt,je),rt.return=De,De=rt)}return $(De);case y:e:{for(It=je.key;Ee!==null;){if(Ee.key===It)if(Ee.tag===4&&Ee.stateNode.containerInfo===je.containerInfo&&Ee.stateNode.implementation===je.implementation){b(De,Ee.sibling),rt=R(Ee,je.children||[]),rt.return=De,De=rt;break e}else{b(De,Ee);break}else h(De,Ee);Ee=Ee.sibling}rt=DM(je,De.mode,rt),rt.return=De,De=rt}return $(De);case U:return je=bd(je),jn(De,Ee,je,rt)}if(H(je))return Ct(De,Ee,je,rt);if(I(je)){if(It=I(je),typeof It!="function")throw Error(i(150));return je=It.call(je),zt(De,Ee,je,rt)}if(typeof je.then=="function")return jn(De,Ee,Rv(je),rt);if(je.$$typeof===w)return jn(De,Ee,Av(De,je),rt);Pv(De,je)}return typeof je=="string"&&je!==""||typeof je=="number"||typeof je=="bigint"?(je=""+je,Ee!==null&&Ee.tag===6?(b(De,Ee.sibling),rt=R(Ee,je),rt.return=De,De=rt):(b(De,Ee),rt=kM(je,De.mode,rt),rt.return=De,De=rt),$(De)):b(De,Ee)}return function(De,Ee,je,rt){try{Xm=0;var It=jn(De,Ee,je,rt);return sh=null,It}catch(kt){if(kt===ah||kt===Cv)throw kt;var Sn=Wa(29,kt,null,De.mode);return Sn.lanes=rt,Sn.return=De,Sn}finally{}}}var Sd=ZL(!0),QL=ZL(!1),Uc=!1;function GM(d){d.updateQueue={baseState:d.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function WM(d,h){d=d.updateQueue,h.updateQueue===d&&(h.updateQueue={baseState:d.baseState,firstBaseUpdate:d.firstBaseUpdate,lastBaseUpdate:d.lastBaseUpdate,shared:d.shared,callbacks:null})}function jc(d){return{lane:d,tag:0,payload:null,callback:null,next:null}}function Fc(d,h,b){var S=d.updateQueue;if(S===null)return null;if(S=S.shared,(Tn&2)!==0){var R=S.pending;return R===null?h.next=h:(h.next=R.next,R.next=h),S.pending=h,h=Sv(d),LL(d,null,b),h}return _v(d,S,h,b),Sv(d)}function Ym(d,h,b){if(h=h.updateQueue,h!==null&&(h=h.shared,(b&4194048)!==0)){var S=h.lanes;S&=d.pendingLanes,b|=S,h.lanes=b,Wn(d,b)}}function qM(d,h){var b=d.updateQueue,S=d.alternate;if(S!==null&&(S=S.updateQueue,b===S)){var R=null,D=null;if(b=b.firstBaseUpdate,b!==null){do{var $={lane:b.lane,tag:b.tag,payload:b.payload,callback:null,next:null};D===null?R=D=$:D=D.next=$,b=b.next}while(b!==null);D===null?R=D=h:D=D.next=h}else R=D=h;b={baseState:S.baseState,firstBaseUpdate:R,lastBaseUpdate:D,shared:S.shared,callbacks:S.callbacks},d.updateQueue=b;return}d=b.lastBaseUpdate,d===null?b.firstBaseUpdate=h:d.next=h,b.lastBaseUpdate=h}var XM=!1;function Zm(){if(XM){var d=rh;if(d!==null)throw d}}function Qm(d,h,b,S){XM=!1;var R=d.updateQueue;Uc=!1;var D=R.firstBaseUpdate,$=R.lastBaseUpdate,ne=R.shared.pending;if(ne!==null){R.shared.pending=null;var _e=ne,Fe=_e.next;_e.next=null,$===null?D=Fe:$.next=Fe,$=_e;var Je=d.alternate;Je!==null&&(Je=Je.updateQueue,ne=Je.lastBaseUpdate,ne!==$&&(ne===null?Je.firstBaseUpdate=Fe:ne.next=Fe,Je.lastBaseUpdate=_e))}if(D!==null){var st=R.baseState;$=0,Je=Fe=_e=null,ne=D;do{var Ve=ne.lane&-536870913,Ye=Ve!==ne.lane;if(Ye?(gn&Ve)===Ve:(S&Ve)===Ve){Ve!==0&&Ve===ih&&(XM=!0),Je!==null&&(Je=Je.next={lane:0,tag:ne.tag,payload:ne.payload,callback:null,next:null});e:{var Ct=d,zt=ne;Ve=h;var jn=b;switch(zt.tag){case 1:if(Ct=zt.payload,typeof Ct=="function"){st=Ct.call(jn,st,Ve);break e}st=Ct;break e;case 3:Ct.flags=Ct.flags&-65537|128;case 0:if(Ct=zt.payload,Ve=typeof Ct=="function"?Ct.call(jn,st,Ve):Ct,Ve==null)break e;st=f({},st,Ve);break e;case 2:Uc=!0}}Ve=ne.callback,Ve!==null&&(d.flags|=64,Ye&&(d.flags|=8192),Ye=R.callbacks,Ye===null?R.callbacks=[Ve]:Ye.push(Ve))}else Ye={lane:Ve,tag:ne.tag,payload:ne.payload,callback:ne.callback,next:null},Je===null?(Fe=Je=Ye,_e=st):Je=Je.next=Ye,$|=Ve;if(ne=ne.next,ne===null){if(ne=R.shared.pending,ne===null)break;Ye=ne,ne=Ye.next,Ye.next=null,R.lastBaseUpdate=Ye,R.shared.pending=null}}while(!0);Je===null&&(_e=st),R.baseState=_e,R.firstBaseUpdate=Fe,R.lastBaseUpdate=Je,D===null&&(R.shared.lanes=0),$c|=$,d.lanes=$,d.memoizedState=st}}function JL(d,h){if(typeof d!="function")throw Error(i(191,d));d.call(h)}function eI(d,h){var b=d.callbacks;if(b!==null)for(d.callbacks=null,d=0;dD?D:8;var $=V.T,ne={};V.T=ne,hE(d,!1,h,b);try{var _e=R(),Fe=V.S;if(Fe!==null&&Fe(ne,_e),_e!==null&&typeof _e=="object"&&typeof _e.then=="function"){var Je=Tee(_e,S);tg(d,h,Je,Za(d))}else tg(d,h,S,Za(d))}catch(st){tg(d,h,{then:function(){},status:"rejected",reason:st},Za())}finally{G.p=D,$!==null&&ne.types!==null&&($.types=ne.types),V.T=$}}function Dee(){}function dE(d,h,b,S){if(d.tag!==5)throw Error(i(476));var R=kI(d).queue;PI(d,R,h,K,b===null?Dee:function(){return DI(d),b(S)})}function kI(d){var h=d.memoizedState;if(h!==null)return h;h={memoizedState:K,baseState:K,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:pl,lastRenderedState:K},next:null};var b={};return h.next={memoizedState:b,baseState:b,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:pl,lastRenderedState:b},next:null},d.memoizedState=h,d=d.alternate,d!==null&&(d.memoizedState=h),h}function DI(d){var h=kI(d);h.next===null&&(h=d.alternate.memoizedState),tg(d,h.next.queue,{},Za())}function fE(){return Dr(vg)}function OI(){return Ni().memoizedState}function LI(){return Ni().memoizedState}function Oee(d){for(var h=d.return;h!==null;){switch(h.tag){case 24:case 3:var b=Za();d=jc(b);var S=Fc(h,d,b);S!==null&&(Na(S,h,b),Ym(S,h,b)),h={cache:BM()},d.payload=h;return}h=h.return}}function Lee(d,h,b){var S=Za();b={lane:S,revertLane:0,gesture:null,action:b,hasEagerState:!1,eagerState:null,next:null},Bv(d)?UI(h,b):(b=RM(d,h,b,S),b!==null&&(Na(b,d,S),jI(b,h,S)))}function II(d,h,b){var S=Za();tg(d,h,b,S)}function tg(d,h,b,S){var R={lane:S,revertLane:0,gesture:null,action:b,hasEagerState:!1,eagerState:null,next:null};if(Bv(d))UI(h,R);else{var D=d.alternate;if(d.lanes===0&&(D===null||D.lanes===0)&&(D=h.lastRenderedReducer,D!==null))try{var $=h.lastRenderedState,ne=D($,b);if(R.hasEagerState=!0,R.eagerState=ne,Ga(ne,$))return _v(d,h,R,0),qn===null&&bv(),!1}catch{}finally{}if(b=RM(d,h,R,S),b!==null)return Na(b,d,S),jI(b,h,S),!0}return!1}function hE(d,h,b,S){if(S={lane:2,revertLane:GE(),gesture:null,action:S,hasEagerState:!1,eagerState:null,next:null},Bv(d)){if(h)throw Error(i(479))}else h=RM(d,b,S,2),h!==null&&Na(h,d,2)}function Bv(d){var h=d.alternate;return d===Zt||h!==null&&h===Zt}function UI(d,h){lh=Ov=!0;var b=d.pending;b===null?h.next=h:(h.next=b.next,b.next=h),d.pending=h}function jI(d,h,b){if((b&4194048)!==0){var S=h.lanes;S&=d.pendingLanes,b|=S,h.lanes=b,Wn(d,b)}}var ng={readContext:Dr,use:Uv,useCallback:bi,useContext:bi,useEffect:bi,useImperativeHandle:bi,useLayoutEffect:bi,useInsertionEffect:bi,useMemo:bi,useReducer:bi,useRef:bi,useState:bi,useDebugValue:bi,useDeferredValue:bi,useTransition:bi,useSyncExternalStore:bi,useId:bi,useHostTransitionStatus:bi,useFormState:bi,useActionState:bi,useOptimistic:bi,useMemoCache:bi,useCacheRefresh:bi};ng.useEffectEvent=bi;var FI={readContext:Dr,use:Uv,useCallback:function(d,h){return la().memoizedState=[d,h===void 0?null:h],d},useContext:Dr,useEffect:SI,useImperativeHandle:function(d,h,b){b=b!=null?b.concat([d]):null,Fv(4194308,4,AI.bind(null,h,d),b)},useLayoutEffect:function(d,h){return Fv(4194308,4,d,h)},useInsertionEffect:function(d,h){Fv(4,2,d,h)},useMemo:function(d,h){var b=la();h=h===void 0?null:h;var S=d();if(wd){pt(!0);try{d()}finally{pt(!1)}}return b.memoizedState=[S,h],S},useReducer:function(d,h,b){var S=la();if(b!==void 0){var R=b(h);if(wd){pt(!0);try{b(h)}finally{pt(!1)}}}else R=h;return S.memoizedState=S.baseState=R,d={pending:null,lanes:0,dispatch:null,lastRenderedReducer:d,lastRenderedState:R},S.queue=d,d=d.dispatch=Lee.bind(null,Zt,d),[S.memoizedState,d]},useRef:function(d){var h=la();return d={current:d},h.memoizedState=d},useState:function(d){d=sE(d);var h=d.queue,b=II.bind(null,Zt,h);return h.dispatch=b,[d.memoizedState,b]},useDebugValue:cE,useDeferredValue:function(d,h){var b=la();return uE(b,d,h)},useTransition:function(){var d=sE(!1);return d=PI.bind(null,Zt,d.queue,!0,!1),la().memoizedState=d,[!1,d]},useSyncExternalStore:function(d,h,b){var S=Zt,R=la();if(yn){if(b===void 0)throw Error(i(407));b=b()}else{if(b=h(),qn===null)throw Error(i(349));(gn&127)!==0||sI(S,h,b)}R.memoizedState=b;var D={value:b,getSnapshot:h};return R.queue=D,SI(lI.bind(null,S,D,d),[d]),S.flags|=2048,uh(9,{destroy:void 0},oI.bind(null,S,D,b,h),null),b},useId:function(){var d=la(),h=qn.identifierPrefix;if(yn){var b=Co,S=To;b=(S&~(1<<32-tt(S)-1)).toString(32)+b,h="_"+h+"R_"+b,b=Lv++,0<\/script>",D=D.removeChild(D.firstChild);break;case"select":D=typeof S.is=="string"?$.createElement("select",{is:S.is}):$.createElement("select"),S.multiple?D.multiple=!0:S.size&&(D.size=S.size);break;default:D=typeof S.is=="string"?$.createElement(R,{is:S.is}):$.createElement(R)}}D[hi]=h,D[Ai]=S;e:for($=h.child;$!==null;){if($.tag===5||$.tag===6)D.appendChild($.stateNode);else if($.tag!==4&&$.tag!==27&&$.child!==null){$.child.return=$,$=$.child;continue}if($===h)break e;for(;$.sibling===null;){if($.return===null||$.return===h)break e;$=$.return}$.sibling.return=$.return,$=$.sibling}h.stateNode=D;e:switch(Lr(D,R,S),R){case"button":case"input":case"select":case"textarea":S=!!S.autoFocus;break e;case"img":S=!0;break e;default:S=!1}S&&gl(h)}}return ti(h),TE(h,h.type,d===null?null:d.memoizedProps,h.pendingProps,b),null;case 6:if(d&&h.stateNode!=null)d.memoizedProps!==S&&gl(h);else{if(typeof S!="string"&&h.stateNode===null)throw Error(i(166));if(d=ie.current,th(h)){if(d=h.stateNode,b=h.memoizedProps,S=null,R=kr,R!==null)switch(R.tag){case 27:case 5:S=R.memoizedProps}d[hi]=h,d=!!(d.nodeValue===b||S!==null&&S.suppressHydrationWarning===!0||rj(d.nodeValue,b)),d||Lc(h,!0)}else d=oy(d).createTextNode(S),d[hi]=h,h.stateNode=d}return ti(h),null;case 31:if(b=h.memoizedState,d===null||d.memoizedState!==null){if(S=th(h),b!==null){if(d===null){if(!S)throw Error(i(318));if(d=h.memoizedState,d=d!==null?d.dehydrated:null,!d)throw Error(i(557));d[hi]=h}else gd(),(h.flags&128)===0&&(h.memoizedState=null),h.flags|=4;ti(h),d=!1}else b=UM(),d!==null&&d.memoizedState!==null&&(d.memoizedState.hydrationErrors=b),d=!0;if(!d)return h.flags&256?(Xa(h),h):(Xa(h),null);if((h.flags&128)!==0)throw Error(i(558))}return ti(h),null;case 13:if(S=h.memoizedState,d===null||d.memoizedState!==null&&d.memoizedState.dehydrated!==null){if(R=th(h),S!==null&&S.dehydrated!==null){if(d===null){if(!R)throw Error(i(318));if(R=h.memoizedState,R=R!==null?R.dehydrated:null,!R)throw Error(i(317));R[hi]=h}else gd(),(h.flags&128)===0&&(h.memoizedState=null),h.flags|=4;ti(h),R=!1}else R=UM(),d!==null&&d.memoizedState!==null&&(d.memoizedState.hydrationErrors=R),R=!0;if(!R)return h.flags&256?(Xa(h),h):(Xa(h),null)}return Xa(h),(h.flags&128)!==0?(h.lanes=b,h):(b=S!==null,d=d!==null&&d.memoizedState!==null,b&&(S=h.child,R=null,S.alternate!==null&&S.alternate.memoizedState!==null&&S.alternate.memoizedState.cachePool!==null&&(R=S.alternate.memoizedState.cachePool.pool),D=null,S.memoizedState!==null&&S.memoizedState.cachePool!==null&&(D=S.memoizedState.cachePool.pool),D!==R&&(S.flags|=2048)),b!==d&&b&&(h.child.flags|=8192),Wv(h,h.updateQueue),ti(h),null);case 4:return pe(),d===null&&KE(h.stateNode.containerInfo),ti(h),null;case 10:return fl(h.type),ti(h),null;case 19:if(X(Ci),S=h.memoizedState,S===null)return ti(h),null;if(R=(h.flags&128)!==0,D=S.rendering,D===null)if(R)rg(S,!1);else{if(_i!==0||d!==null&&(d.flags&128)!==0)for(d=h.child;d!==null;){if(D=Dv(d),D!==null){for(h.flags|=128,rg(S,!1),d=D.updateQueue,h.updateQueue=d,Wv(h,d),h.subtreeFlags=0,d=b,b=h.child;b!==null;)IL(b,d),b=b.sibling;return ae(Ci,Ci.current&1|2),yn&&ul(h,S.treeForkCount),h.child}d=d.sibling}S.tail!==null&&O()>Zv&&(h.flags|=128,R=!0,rg(S,!1),h.lanes=4194304)}else{if(!R)if(d=Dv(D),d!==null){if(h.flags|=128,R=!0,d=d.updateQueue,h.updateQueue=d,Wv(h,d),rg(S,!0),S.tail===null&&S.tailMode==="hidden"&&!D.alternate&&!yn)return ti(h),null}else 2*O()-S.renderingStartTime>Zv&&b!==536870912&&(h.flags|=128,R=!0,rg(S,!1),h.lanes=4194304);S.isBackwards?(D.sibling=h.child,h.child=D):(d=S.last,d!==null?d.sibling=D:h.child=D,S.last=D)}return S.tail!==null?(d=S.tail,S.rendering=d,S.tail=d.sibling,S.renderingStartTime=O(),d.sibling=null,b=Ci.current,ae(Ci,R?b&1|2:b&1),yn&&ul(h,S.treeForkCount),d):(ti(h),null);case 22:case 23:return Xa(h),YM(),S=h.memoizedState!==null,d!==null?d.memoizedState!==null!==S&&(h.flags|=8192):S&&(h.flags|=8192),S?(b&536870912)!==0&&(h.flags&128)===0&&(ti(h),h.subtreeFlags&6&&(h.flags|=8192)):ti(h),b=h.updateQueue,b!==null&&Wv(h,b.retryQueue),b=null,d!==null&&d.memoizedState!==null&&d.memoizedState.cachePool!==null&&(b=d.memoizedState.cachePool.pool),S=null,h.memoizedState!==null&&h.memoizedState.cachePool!==null&&(S=h.memoizedState.cachePool.pool),S!==b&&(h.flags|=2048),d!==null&&X(yd),null;case 24:return b=null,d!==null&&(b=d.memoizedState.cache),h.memoizedState.cache!==b&&(h.flags|=2048),fl(Ii),ti(h),null;case 25:return null;case 30:return null}throw Error(i(156,h.tag))}function zee(d,h){switch(LM(h),h.tag){case 1:return d=h.flags,d&65536?(h.flags=d&-65537|128,h):null;case 3:return fl(Ii),pe(),d=h.flags,(d&65536)!==0&&(d&128)===0?(h.flags=d&-65537|128,h):null;case 26:case 27:case 5:return ze(h),null;case 31:if(h.memoizedState!==null){if(Xa(h),h.alternate===null)throw Error(i(340));gd()}return d=h.flags,d&65536?(h.flags=d&-65537|128,h):null;case 13:if(Xa(h),d=h.memoizedState,d!==null&&d.dehydrated!==null){if(h.alternate===null)throw Error(i(340));gd()}return d=h.flags,d&65536?(h.flags=d&-65537|128,h):null;case 19:return X(Ci),null;case 4:return pe(),null;case 10:return fl(h.type),null;case 22:case 23:return Xa(h),YM(),d!==null&&X(yd),d=h.flags,d&65536?(h.flags=d&-65537|128,h):null;case 24:return fl(Ii),null;case 25:return null;default:return null}}function cU(d,h){switch(LM(h),h.tag){case 3:fl(Ii),pe();break;case 26:case 27:case 5:ze(h);break;case 4:pe();break;case 31:h.memoizedState!==null&&Xa(h);break;case 13:Xa(h);break;case 19:X(Ci);break;case 10:fl(h.type);break;case 22:case 23:Xa(h),YM(),d!==null&&X(yd);break;case 24:fl(Ii)}}function ag(d,h){try{var b=h.updateQueue,S=b!==null?b.lastEffect:null;if(S!==null){var R=S.next;b=R;do{if((b.tag&d)===d){S=void 0;var D=b.create,$=b.inst;S=D(),$.destroy=S}b=b.next}while(b!==R)}}catch(ne){Dn(h,h.return,ne)}}function Hc(d,h,b){try{var S=h.updateQueue,R=S!==null?S.lastEffect:null;if(R!==null){var D=R.next;S=D;do{if((S.tag&d)===d){var $=S.inst,ne=$.destroy;if(ne!==void 0){$.destroy=void 0,R=h;var _e=b,Fe=ne;try{Fe()}catch(Je){Dn(R,_e,Je)}}}S=S.next}while(S!==D)}}catch(Je){Dn(h,h.return,Je)}}function uU(d){var h=d.updateQueue;if(h!==null){var b=d.stateNode;try{eI(h,b)}catch(S){Dn(d,d.return,S)}}}function dU(d,h,b){b.props=Md(d.type,d.memoizedProps),b.state=d.memoizedState;try{b.componentWillUnmount()}catch(S){Dn(d,h,S)}}function sg(d,h){try{var b=d.ref;if(b!==null){switch(d.tag){case 26:case 27:case 5:var S=d.stateNode;break;case 30:S=d.stateNode;break;default:S=d.stateNode}typeof b=="function"?d.refCleanup=b(S):b.current=S}}catch(R){Dn(d,h,R)}}function No(d,h){var b=d.ref,S=d.refCleanup;if(b!==null)if(typeof S=="function")try{S()}catch(R){Dn(d,h,R)}finally{d.refCleanup=null,d=d.alternate,d!=null&&(d.refCleanup=null)}else if(typeof b=="function")try{b(null)}catch(R){Dn(d,h,R)}else b.current=null}function fU(d){var h=d.type,b=d.memoizedProps,S=d.stateNode;try{e:switch(h){case"button":case"input":case"select":case"textarea":b.autoFocus&&S.focus();break e;case"img":b.src?S.src=b.src:b.srcSet&&(S.srcset=b.srcSet)}}catch(R){Dn(d,d.return,R)}}function CE(d,h,b){try{var S=d.stateNode;lte(S,d.type,b,h),S[Ai]=h}catch(R){Dn(d,d.return,R)}}function hU(d){return d.tag===5||d.tag===3||d.tag===26||d.tag===27&&Kc(d.type)||d.tag===4}function NE(d){e:for(;;){for(;d.sibling===null;){if(d.return===null||hU(d.return))return null;d=d.return}for(d.sibling.return=d.return,d=d.sibling;d.tag!==5&&d.tag!==6&&d.tag!==18;){if(d.tag===27&&Kc(d.type)||d.flags&2||d.child===null||d.tag===4)continue e;d.child.return=d,d=d.child}if(!(d.flags&2))return d.stateNode}}function RE(d,h,b){var S=d.tag;if(S===5||S===6)d=d.stateNode,h?(b.nodeType===9?b.body:b.nodeName==="HTML"?b.ownerDocument.body:b).insertBefore(d,h):(h=b.nodeType===9?b.body:b.nodeName==="HTML"?b.ownerDocument.body:b,h.appendChild(d),b=b._reactRootContainer,b!=null||h.onclick!==null||(h.onclick=ol));else if(S!==4&&(S===27&&Kc(d.type)&&(b=d.stateNode,h=null),d=d.child,d!==null))for(RE(d,h,b),d=d.sibling;d!==null;)RE(d,h,b),d=d.sibling}function qv(d,h,b){var S=d.tag;if(S===5||S===6)d=d.stateNode,h?b.insertBefore(d,h):b.appendChild(d);else if(S!==4&&(S===27&&Kc(d.type)&&(b=d.stateNode),d=d.child,d!==null))for(qv(d,h,b),d=d.sibling;d!==null;)qv(d,h,b),d=d.sibling}function pU(d){var h=d.stateNode,b=d.memoizedProps;try{for(var S=d.type,R=h.attributes;R.length;)h.removeAttributeNode(R[0]);Lr(h,S,b),h[hi]=d,h[Ai]=b}catch(D){Dn(d,d.return,D)}}var xl=!1,Fi=!1,PE=!1,mU=typeof WeakSet=="function"?WeakSet:Set,xr=null;function Bee(d,h){if(d=d.containerInfo,QE=py,d=TL(d),MM(d)){if("selectionStart"in d)var b={start:d.selectionStart,end:d.selectionEnd};else e:{b=(b=d.ownerDocument)&&b.defaultView||window;var S=b.getSelection&&b.getSelection();if(S&&S.rangeCount!==0){b=S.anchorNode;var R=S.anchorOffset,D=S.focusNode;S=S.focusOffset;try{b.nodeType,D.nodeType}catch{b=null;break e}var $=0,ne=-1,_e=-1,Fe=0,Je=0,st=d,Ve=null;t:for(;;){for(var Ye;st!==b||R!==0&&st.nodeType!==3||(ne=$+R),st!==D||S!==0&&st.nodeType!==3||(_e=$+S),st.nodeType===3&&($+=st.nodeValue.length),(Ye=st.firstChild)!==null;)Ve=st,st=Ye;for(;;){if(st===d)break t;if(Ve===b&&++Fe===R&&(ne=$),Ve===D&&++Je===S&&(_e=$),(Ye=st.nextSibling)!==null)break;st=Ve,Ve=st.parentNode}st=Ye}b=ne===-1||_e===-1?null:{start:ne,end:_e}}else b=null}b=b||{start:0,end:0}}else b=null;for(JE={focusedElem:d,selectionRange:b},py=!1,xr=h;xr!==null;)if(h=xr,d=h.child,(h.subtreeFlags&1028)!==0&&d!==null)d.return=h,xr=d;else for(;xr!==null;){switch(h=xr,D=h.alternate,d=h.flags,h.tag){case 0:if((d&4)!==0&&(d=h.updateQueue,d=d!==null?d.events:null,d!==null))for(b=0;b title"))),Lr(D,S,b),D[hi]=d,Te(D),S=D;break e;case"link":var $=_j("link","href",R).get(S+(b.href||""));if($){for(var ne=0;ne<$.length;ne++)if(D=$[ne],D.getAttribute("href")===(b.href==null||b.href===""?null:b.href)&&D.getAttribute("rel")===(b.rel==null?null:b.rel)&&D.getAttribute("title")===(b.title==null?null:b.title)&&D.getAttribute("crossorigin")===(b.crossOrigin==null?null:b.crossOrigin)){$.splice(ne,1);break t}}D=R.createElement(S),Lr(D,S,b),R.head.appendChild(D);break;case"meta":if($=_j("meta","content",R).get(S+(b.content||""))){for(ne=0;ne<$.length;ne++)if(D=$[ne],D.getAttribute("content")===(b.content==null?null:""+b.content)&&D.getAttribute("name")===(b.name==null?null:b.name)&&D.getAttribute("property")===(b.property==null?null:b.property)&&D.getAttribute("http-equiv")===(b.httpEquiv==null?null:b.httpEquiv)&&D.getAttribute("charset")===(b.charSet==null?null:b.charSet)){$.splice(ne,1);break t}}D=R.createElement(S),Lr(D,S,b),R.head.appendChild(D);break;default:throw Error(i(468,S))}D[hi]=d,Te(D),S=D}d.stateNode=S}else Sj(R,d.type,d.stateNode);else d.stateNode=bj(R,S,d.memoizedProps);else D!==S?(D===null?b.stateNode!==null&&(b=b.stateNode,b.parentNode.removeChild(b)):D.count--,S===null?Sj(R,d.type,d.stateNode):bj(R,S,d.memoizedProps)):S===null&&d.stateNode!==null&&CE(d,d.memoizedProps,b.memoizedProps)}break;case 27:Aa(h,d),Ta(d),S&512&&(Fi||b===null||No(b,b.return)),b!==null&&S&4&&CE(d,d.memoizedProps,b.memoizedProps);break;case 5:if(Aa(h,d),Ta(d),S&512&&(Fi||b===null||No(b,b.return)),d.flags&32){R=d.stateNode;try{Ao(R,"")}catch(Ct){Dn(d,d.return,Ct)}}S&4&&d.stateNode!=null&&(R=d.memoizedProps,CE(d,R,b!==null?b.memoizedProps:R)),S&1024&&(PE=!0);break;case 6:if(Aa(h,d),Ta(d),S&4){if(d.stateNode===null)throw Error(i(162));S=d.memoizedProps,b=d.stateNode;try{b.nodeValue=S}catch(Ct){Dn(d,d.return,Ct)}}break;case 3:if(uy=null,R=to,to=ly(h.containerInfo),Aa(h,d),to=R,Ta(d),S&4&&b!==null&&b.memoizedState.isDehydrated)try{Sh(h.containerInfo)}catch(Ct){Dn(d,d.return,Ct)}PE&&(PE=!1,SU(d));break;case 4:S=to,to=ly(d.stateNode.containerInfo),Aa(h,d),Ta(d),to=S;break;case 12:Aa(h,d),Ta(d);break;case 31:Aa(h,d),Ta(d),S&4&&(S=d.updateQueue,S!==null&&(d.updateQueue=null,Xv(d,S)));break;case 13:Aa(h,d),Ta(d),d.child.flags&8192&&d.memoizedState!==null!=(b!==null&&b.memoizedState!==null)&&(Yv=O()),S&4&&(S=d.updateQueue,S!==null&&(d.updateQueue=null,Xv(d,S)));break;case 22:R=d.memoizedState!==null;var _e=b!==null&&b.memoizedState!==null,Fe=xl,Je=Fi;if(xl=Fe||R,Fi=Je||_e,Aa(h,d),Fi=Je,xl=Fe,Ta(d),S&8192)e:for(h=d.stateNode,h._visibility=R?h._visibility&-2:h._visibility|1,R&&(b===null||_e||xl||Fi||Ed(d)),b=null,h=d;;){if(h.tag===5||h.tag===26){if(b===null){_e=b=h;try{if(D=_e.stateNode,R)$=D.style,typeof $.setProperty=="function"?$.setProperty("display","none","important"):$.display="none";else{ne=_e.stateNode;var st=_e.memoizedProps.style,Ve=st!=null&&st.hasOwnProperty("display")?st.display:null;ne.style.display=Ve==null||typeof Ve=="boolean"?"":(""+Ve).trim()}}catch(Ct){Dn(_e,_e.return,Ct)}}}else if(h.tag===6){if(b===null){_e=h;try{_e.stateNode.nodeValue=R?"":_e.memoizedProps}catch(Ct){Dn(_e,_e.return,Ct)}}}else if(h.tag===18){if(b===null){_e=h;try{var Ye=_e.stateNode;R?dj(Ye,!0):dj(_e.stateNode,!1)}catch(Ct){Dn(_e,_e.return,Ct)}}}else if((h.tag!==22&&h.tag!==23||h.memoizedState===null||h===d)&&h.child!==null){h.child.return=h,h=h.child;continue}if(h===d)break e;for(;h.sibling===null;){if(h.return===null||h.return===d)break e;b===h&&(b=null),h=h.return}b===h&&(b=null),h.sibling.return=h.return,h=h.sibling}S&4&&(S=d.updateQueue,S!==null&&(b=S.retryQueue,b!==null&&(S.retryQueue=null,Xv(d,b))));break;case 19:Aa(h,d),Ta(d),S&4&&(S=d.updateQueue,S!==null&&(d.updateQueue=null,Xv(d,S)));break;case 30:break;case 21:break;default:Aa(h,d),Ta(d)}}function Ta(d){var h=d.flags;if(h&2){try{for(var b,S=d.return;S!==null;){if(hU(S)){b=S;break}S=S.return}if(b==null)throw Error(i(160));switch(b.tag){case 27:var R=b.stateNode,D=NE(d);qv(d,D,R);break;case 5:var $=b.stateNode;b.flags&32&&(Ao($,""),b.flags&=-33);var ne=NE(d);qv(d,ne,$);break;case 3:case 4:var _e=b.stateNode.containerInfo,Fe=NE(d);RE(d,Fe,_e);break;default:throw Error(i(161))}}catch(Je){Dn(d,d.return,Je)}d.flags&=-3}h&4096&&(d.flags&=-4097)}function SU(d){if(d.subtreeFlags&1024)for(d=d.child;d!==null;){var h=d;SU(h),h.tag===5&&h.flags&1024&&h.stateNode.reset(),d=d.sibling}}function yl(d,h){if(h.subtreeFlags&8772)for(h=h.child;h!==null;)gU(d,h.alternate,h),h=h.sibling}function Ed(d){for(d=d.child;d!==null;){var h=d;switch(h.tag){case 0:case 11:case 14:case 15:Hc(4,h,h.return),Ed(h);break;case 1:No(h,h.return);var b=h.stateNode;typeof b.componentWillUnmount=="function"&&dU(h,h.return,b),Ed(h);break;case 27:mg(h.stateNode);case 26:case 5:No(h,h.return),Ed(h);break;case 22:h.memoizedState===null&&Ed(h);break;case 30:Ed(h);break;default:Ed(h)}d=d.sibling}}function bl(d,h,b){for(b=b&&(h.subtreeFlags&8772)!==0,h=h.child;h!==null;){var S=h.alternate,R=d,D=h,$=D.flags;switch(D.tag){case 0:case 11:case 15:bl(R,D,b),ag(4,D);break;case 1:if(bl(R,D,b),S=D,R=S.stateNode,typeof R.componentDidMount=="function")try{R.componentDidMount()}catch(Fe){Dn(S,S.return,Fe)}if(S=D,R=S.updateQueue,R!==null){var ne=S.stateNode;try{var _e=R.shared.hiddenCallbacks;if(_e!==null)for(R.shared.hiddenCallbacks=null,R=0;R<_e.length;R++)JL(_e[R],ne)}catch(Fe){Dn(S,S.return,Fe)}}b&&$&64&&uU(D),sg(D,D.return);break;case 27:pU(D);case 26:case 5:bl(R,D,b),b&&S===null&&$&4&&fU(D),sg(D,D.return);break;case 12:bl(R,D,b);break;case 31:bl(R,D,b),b&&$&4&&yU(R,D);break;case 13:bl(R,D,b),b&&$&4&&bU(R,D);break;case 22:D.memoizedState===null&&bl(R,D,b),sg(D,D.return);break;case 30:break;default:bl(R,D,b)}h=h.sibling}}function kE(d,h){var b=null;d!==null&&d.memoizedState!==null&&d.memoizedState.cachePool!==null&&(b=d.memoizedState.cachePool.pool),d=null,h.memoizedState!==null&&h.memoizedState.cachePool!==null&&(d=h.memoizedState.cachePool.pool),d!==b&&(d!=null&&d.refCount++,b!=null&&Wm(b))}function DE(d,h){d=null,h.alternate!==null&&(d=h.alternate.memoizedState.cache),h=h.memoizedState.cache,h!==d&&(h.refCount++,d!=null&&Wm(d))}function no(d,h,b,S){if(h.subtreeFlags&10256)for(h=h.child;h!==null;)wU(d,h,b,S),h=h.sibling}function wU(d,h,b,S){var R=h.flags;switch(h.tag){case 0:case 11:case 15:no(d,h,b,S),R&2048&&ag(9,h);break;case 1:no(d,h,b,S);break;case 3:no(d,h,b,S),R&2048&&(d=null,h.alternate!==null&&(d=h.alternate.memoizedState.cache),h=h.memoizedState.cache,h!==d&&(h.refCount++,d!=null&&Wm(d)));break;case 12:if(R&2048){no(d,h,b,S),d=h.stateNode;try{var D=h.memoizedProps,$=D.id,ne=D.onPostCommit;typeof ne=="function"&&ne($,h.alternate===null?"mount":"update",d.passiveEffectDuration,-0)}catch(_e){Dn(h,h.return,_e)}}else no(d,h,b,S);break;case 31:no(d,h,b,S);break;case 13:no(d,h,b,S);break;case 23:break;case 22:D=h.stateNode,$=h.alternate,h.memoizedState!==null?D._visibility&2?no(d,h,b,S):og(d,h):D._visibility&2?no(d,h,b,S):(D._visibility|=2,dh(d,h,b,S,(h.subtreeFlags&10256)!==0||!1)),R&2048&&kE($,h);break;case 24:no(d,h,b,S),R&2048&&DE(h.alternate,h);break;default:no(d,h,b,S)}}function dh(d,h,b,S,R){for(R=R&&((h.subtreeFlags&10256)!==0||!1),h=h.child;h!==null;){var D=d,$=h,ne=b,_e=S,Fe=$.flags;switch($.tag){case 0:case 11:case 15:dh(D,$,ne,_e,R),ag(8,$);break;case 23:break;case 22:var Je=$.stateNode;$.memoizedState!==null?Je._visibility&2?dh(D,$,ne,_e,R):og(D,$):(Je._visibility|=2,dh(D,$,ne,_e,R)),R&&Fe&2048&&kE($.alternate,$);break;case 24:dh(D,$,ne,_e,R),R&&Fe&2048&&DE($.alternate,$);break;default:dh(D,$,ne,_e,R)}h=h.sibling}}function og(d,h){if(h.subtreeFlags&10256)for(h=h.child;h!==null;){var b=d,S=h,R=S.flags;switch(S.tag){case 22:og(b,S),R&2048&&kE(S.alternate,S);break;case 24:og(b,S),R&2048&&DE(S.alternate,S);break;default:og(b,S)}h=h.sibling}}var lg=8192;function fh(d,h,b){if(d.subtreeFlags&lg)for(d=d.child;d!==null;)MU(d,h,b),d=d.sibling}function MU(d,h,b){switch(d.tag){case 26:fh(d,h,b),d.flags&lg&&d.memoizedState!==null&&Cte(b,to,d.memoizedState,d.memoizedProps);break;case 5:fh(d,h,b);break;case 3:case 4:var S=to;to=ly(d.stateNode.containerInfo),fh(d,h,b),to=S;break;case 22:d.memoizedState===null&&(S=d.alternate,S!==null&&S.memoizedState!==null?(S=lg,lg=16777216,fh(d,h,b),lg=S):fh(d,h,b));break;default:fh(d,h,b)}}function EU(d){var h=d.alternate;if(h!==null&&(d=h.child,d!==null)){h.child=null;do h=d.sibling,d.sibling=null,d=h;while(d!==null)}}function cg(d){var h=d.deletions;if((d.flags&16)!==0){if(h!==null)for(var b=0;bjn&&($=jn,jn=zt,zt=$);var De=EL(ne,zt),Ee=EL(ne,jn);if(De&&Ee&&(Ye.rangeCount!==1||Ye.anchorNode!==De.node||Ye.anchorOffset!==De.offset||Ye.focusNode!==Ee.node||Ye.focusOffset!==Ee.offset)){var je=st.createRange();je.setStart(De.node,De.offset),Ye.removeAllRanges(),zt>jn?(Ye.addRange(je),Ye.extend(Ee.node,Ee.offset)):(je.setEnd(Ee.node,Ee.offset),Ye.addRange(je))}}}}for(st=[],Ye=ne;Ye=Ye.parentNode;)Ye.nodeType===1&&st.push({element:Ye,left:Ye.scrollLeft,top:Ye.scrollTop});for(typeof ne.focus=="function"&&ne.focus(),ne=0;neb?32:b,V.T=null,b=jE,jE=null;var D=Wc,$=Sl;if(Ji=0,mh=Wc=null,Sl=0,(Tn&6)!==0)throw Error(i(331));var ne=Tn;if(Tn|=4,AU(D.current),wU(D,D.current,$,b),Tn=ne,fg(0,!1),Re&&typeof Re.onPostCommitFiberRoot=="function")try{Re.onPostCommitFiberRoot(Ie,D)}catch{}return!0}finally{G.p=R,V.T=S,$U(d,h)}}function WU(d,h,b){h=gs(b,h),h=xE(d.stateNode,h,2),d=Fc(d,h,2),d!==null&&(on(d,2),Ro(d))}function Dn(d,h,b){if(d.tag===3)WU(d,d,b);else for(;h!==null;){if(h.tag===3){WU(h,d,b);break}else if(h.tag===1){var S=h.stateNode;if(typeof h.type.getDerivedStateFromError=="function"||typeof S.componentDidCatch=="function"&&(Gc===null||!Gc.has(S))){d=gs(b,d),b=qI(2),S=Fc(h,b,2),S!==null&&(XI(b,S,h,d),on(S,2),Ro(S));break}}h=h.return}}function HE(d,h,b){var S=d.pingCache;if(S===null){S=d.pingCache=new $ee;var R=new Set;S.set(h,R)}else R=S.get(h),R===void 0&&(R=new Set,S.set(h,R));R.has(b)||(OE=!0,R.add(b),d=Kee.bind(null,d,h,b),h.then(d,d))}function Kee(d,h,b){var S=d.pingCache;S!==null&&S.delete(h),d.pingedLanes|=d.suspendedLanes&b,d.warmLanes&=~b,qn===d&&(gn&b)===b&&(_i===4||_i===3&&(gn&62914560)===gn&&300>O()-Yv?(Tn&2)===0&&gh(d,0):LE|=b,ph===gn&&(ph=0)),Ro(d)}function qU(d,h){h===0&&(h=bt()),d=pd(d,h),d!==null&&(on(d,h),Ro(d))}function Yee(d){var h=d.memoizedState,b=0;h!==null&&(b=h.retryLane),qU(d,b)}function Zee(d,h){var b=0;switch(d.tag){case 31:case 13:var S=d.stateNode,R=d.memoizedState;R!==null&&(b=R.retryLane);break;case 19:S=d.stateNode;break;case 22:S=d.stateNode._retryCache;break;default:throw Error(i(314))}S!==null&&S.delete(h),qU(d,b)}function Qee(d,h){return ke(d,h)}var iy=null,vh=null,VE=!1,ry=!1,$E=!1,Xc=0;function Ro(d){d!==vh&&d.next===null&&(vh===null?iy=vh=d:vh=vh.next=d),ry=!0,VE||(VE=!0,ete())}function fg(d,h){if(!$E&&ry){$E=!0;do for(var b=!1,S=iy;S!==null;){if(d!==0){var R=S.pendingLanes;if(R===0)var D=0;else{var $=S.suspendedLanes,ne=S.pingedLanes;D=(1<<31-tt(42|d)+1)-1,D&=R&~($&~ne),D=D&201326741?D&201326741|1:D?D|2:0}D!==0&&(b=!0,ZU(S,D))}else D=gn,D=ge(S,S===qn?D:0,S.cancelPendingCommit!==null||S.timeoutHandle!==-1),(D&3)===0||Be(S,D)||(b=!0,ZU(S,D));S=S.next}while(b);$E=!1}}function Jee(){XU()}function XU(){ry=VE=!1;var d=0;Xc!==0&&ute()&&(d=Xc);for(var h=O(),b=null,S=iy;S!==null;){var R=S.next,D=KU(S,h);D===0?(S.next=null,b===null?iy=R:b.next=R,R===null&&(vh=b)):(b=S,(d!==0||(D&3)!==0)&&(ry=!0)),S=R}Ji!==0&&Ji!==5||fg(d),Xc!==0&&(Xc=0)}function KU(d,h){for(var b=d.suspendedLanes,S=d.pingedLanes,R=d.expirationTimes,D=d.pendingLanes&-62914561;0ne)break;var Je=_e.transferSize,st=_e.initiatorType;Je&&aj(st)&&(_e=_e.responseEnd,$+=Je*(_e"u"?null:document;function xj(d,h,b){var S=yh;if(S&&typeof h=="string"&&h){var R=Cn(h);R='link[rel="'+d+'"][href="'+R+'"]',typeof b=="string"&&(R+='[crossorigin="'+b+'"]'),gj.has(R)||(gj.add(R),d={rel:d,crossOrigin:b,href:h},S.querySelector(R)===null&&(h=S.createElement("link"),Lr(h,"link",d),Te(h),S.head.appendChild(h)))}}function yte(d){wl.D(d),xj("dns-prefetch",d,null)}function bte(d,h){wl.C(d,h),xj("preconnect",d,h)}function _te(d,h,b){wl.L(d,h,b);var S=yh;if(S&&d&&h){var R='link[rel="preload"][as="'+Cn(h)+'"]';h==="image"&&b&&b.imageSrcSet?(R+='[imagesrcset="'+Cn(b.imageSrcSet)+'"]',typeof b.imageSizes=="string"&&(R+='[imagesizes="'+Cn(b.imageSizes)+'"]')):R+='[href="'+Cn(d)+'"]';var D=R;switch(h){case"style":D=bh(d);break;case"script":D=_h(d)}Ss.has(D)||(d=f({rel:"preload",href:h==="image"&&b&&b.imageSrcSet?void 0:d,as:h},b),Ss.set(D,d),S.querySelector(R)!==null||h==="style"&&S.querySelector(gg(D))||h==="script"&&S.querySelector(xg(D))||(h=S.createElement("link"),Lr(h,"link",d),Te(h),S.head.appendChild(h)))}}function Ste(d,h){wl.m(d,h);var b=yh;if(b&&d){var S=h&&typeof h.as=="string"?h.as:"script",R='link[rel="modulepreload"][as="'+Cn(S)+'"][href="'+Cn(d)+'"]',D=R;switch(S){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":D=_h(d)}if(!Ss.has(D)&&(d=f({rel:"modulepreload",href:d},h),Ss.set(D,d),b.querySelector(R)===null)){switch(S){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(b.querySelector(xg(D)))return}S=b.createElement("link"),Lr(S,"link",d),Te(S),b.head.appendChild(S)}}}function wte(d,h,b){wl.S(d,h,b);var S=yh;if(S&&d){var R=Ce(S).hoistableStyles,D=bh(d);h=h||"default";var $=R.get(D);if(!$){var ne={loading:0,preload:null};if($=S.querySelector(gg(D)))ne.loading=5;else{d=f({rel:"stylesheet",href:d,"data-precedence":h},b),(b=Ss.get(D))&&sA(d,b);var _e=$=S.createElement("link");Te(_e),Lr(_e,"link",d),_e._p=new Promise(function(Fe,Je){_e.onload=Fe,_e.onerror=Je}),_e.addEventListener("load",function(){ne.loading|=1}),_e.addEventListener("error",function(){ne.loading|=2}),ne.loading|=4,cy($,h,S)}$={type:"stylesheet",instance:$,count:1,state:ne},R.set(D,$)}}}function Mte(d,h){wl.X(d,h);var b=yh;if(b&&d){var S=Ce(b).hoistableScripts,R=_h(d),D=S.get(R);D||(D=b.querySelector(xg(R)),D||(d=f({src:d,async:!0},h),(h=Ss.get(R))&&oA(d,h),D=b.createElement("script"),Te(D),Lr(D,"link",d),b.head.appendChild(D)),D={type:"script",instance:D,count:1,state:null},S.set(R,D))}}function Ete(d,h){wl.M(d,h);var b=yh;if(b&&d){var S=Ce(b).hoistableScripts,R=_h(d),D=S.get(R);D||(D=b.querySelector(xg(R)),D||(d=f({src:d,async:!0,type:"module"},h),(h=Ss.get(R))&&oA(d,h),D=b.createElement("script"),Te(D),Lr(D,"link",d),b.head.appendChild(D)),D={type:"script",instance:D,count:1,state:null},S.set(R,D))}}function vj(d,h,b,S){var R=(R=ie.current)?ly(R):null;if(!R)throw Error(i(446));switch(d){case"meta":case"title":return null;case"style":return typeof b.precedence=="string"&&typeof b.href=="string"?(h=bh(b.href),b=Ce(R).hoistableStyles,S=b.get(h),S||(S={type:"style",instance:null,count:0,state:null},b.set(h,S)),S):{type:"void",instance:null,count:0,state:null};case"link":if(b.rel==="stylesheet"&&typeof b.href=="string"&&typeof b.precedence=="string"){d=bh(b.href);var D=Ce(R).hoistableStyles,$=D.get(d);if($||(R=R.ownerDocument||R,$={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},D.set(d,$),(D=R.querySelector(gg(d)))&&!D._p&&($.instance=D,$.state.loading=5),Ss.has(d)||(b={rel:"preload",as:"style",href:b.href,crossOrigin:b.crossOrigin,integrity:b.integrity,media:b.media,hrefLang:b.hrefLang,referrerPolicy:b.referrerPolicy},Ss.set(d,b),D||Ate(R,d,b,$.state))),h&&S===null)throw Error(i(528,""));return $}if(h&&S!==null)throw Error(i(529,""));return null;case"script":return h=b.async,b=b.src,typeof b=="string"&&h&&typeof h!="function"&&typeof h!="symbol"?(h=_h(b),b=Ce(R).hoistableScripts,S=b.get(h),S||(S={type:"script",instance:null,count:0,state:null},b.set(h,S)),S):{type:"void",instance:null,count:0,state:null};default:throw Error(i(444,d))}}function bh(d){return'href="'+Cn(d)+'"'}function gg(d){return'link[rel="stylesheet"]['+d+"]"}function yj(d){return f({},d,{"data-precedence":d.precedence,precedence:null})}function Ate(d,h,b,S){d.querySelector('link[rel="preload"][as="style"]['+h+"]")?S.loading=1:(h=d.createElement("link"),S.preload=h,h.addEventListener("load",function(){return S.loading|=1}),h.addEventListener("error",function(){return S.loading|=2}),Lr(h,"link",b),Te(h),d.head.appendChild(h))}function _h(d){return'[src="'+Cn(d)+'"]'}function xg(d){return"script[async]"+d}function bj(d,h,b){if(h.count++,h.instance===null)switch(h.type){case"style":var S=d.querySelector('style[data-href~="'+Cn(b.href)+'"]');if(S)return h.instance=S,Te(S),S;var R=f({},b,{"data-href":b.href,"data-precedence":b.precedence,href:null,precedence:null});return S=(d.ownerDocument||d).createElement("style"),Te(S),Lr(S,"style",R),cy(S,b.precedence,d),h.instance=S;case"stylesheet":R=bh(b.href);var D=d.querySelector(gg(R));if(D)return h.state.loading|=4,h.instance=D,Te(D),D;S=yj(b),(R=Ss.get(R))&&sA(S,R),D=(d.ownerDocument||d).createElement("link"),Te(D);var $=D;return $._p=new Promise(function(ne,_e){$.onload=ne,$.onerror=_e}),Lr(D,"link",S),h.state.loading|=4,cy(D,b.precedence,d),h.instance=D;case"script":return D=_h(b.src),(R=d.querySelector(xg(D)))?(h.instance=R,Te(R),R):(S=b,(R=Ss.get(D))&&(S=f({},b),oA(S,R)),d=d.ownerDocument||d,R=d.createElement("script"),Te(R),Lr(R,"link",S),d.head.appendChild(R),h.instance=R);case"void":return null;default:throw Error(i(443,h.type))}else h.type==="stylesheet"&&(h.state.loading&4)===0&&(S=h.instance,h.state.loading|=4,cy(S,b.precedence,d));return h.instance}function cy(d,h,b){for(var S=b.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),R=S.length?S[S.length-1]:null,D=R,$=0;$ title"):null)}function Tte(d,h,b){if(b===1||h.itemProp!=null)return!1;switch(d){case"meta":case"title":return!0;case"style":if(typeof h.precedence!="string"||typeof h.href!="string"||h.href==="")break;return!0;case"link":if(typeof h.rel!="string"||typeof h.href!="string"||h.href===""||h.onLoad||h.onError)break;switch(h.rel){case"stylesheet":return d=h.disabled,typeof h.precedence=="string"&&d==null;default:return!0}case"script":if(h.async&&typeof h.async!="function"&&typeof h.async!="symbol"&&!h.onLoad&&!h.onError&&h.src&&typeof h.src=="string")return!0}return!1}function wj(d){return!(d.type==="stylesheet"&&(d.state.loading&3)===0)}function Cte(d,h,b,S){if(b.type==="stylesheet"&&(typeof S.media!="string"||matchMedia(S.media).matches!==!1)&&(b.state.loading&4)===0){if(b.instance===null){var R=bh(S.href),D=h.querySelector(gg(R));if(D){h=D._p,h!==null&&typeof h=="object"&&typeof h.then=="function"&&(d.count++,d=dy.bind(d),h.then(d,d)),b.state.loading|=4,b.instance=D,Te(D);return}D=h.ownerDocument||h,S=yj(S),(R=Ss.get(R))&&sA(S,R),D=D.createElement("link"),Te(D);var $=D;$._p=new Promise(function(ne,_e){$.onload=ne,$.onerror=_e}),Lr(D,"link",S),b.instance=D}d.stylesheets===null&&(d.stylesheets=new Map),d.stylesheets.set(b,h),(h=b.state.preload)&&(b.state.loading&3)===0&&(d.count++,b=dy.bind(d),h.addEventListener("load",b),h.addEventListener("error",b))}}var lA=0;function Nte(d,h){return d.stylesheets&&d.count===0&&hy(d,d.stylesheets),0lA?50:800)+h);return d.unsuspend=b,function(){d.unsuspend=null,clearTimeout(S),clearTimeout(R)}}:null}function dy(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)hy(this,this.stylesheets);else if(this.unsuspend){var d=this.unsuspend;this.unsuspend=null,d()}}}var fy=null;function hy(d,h){d.stylesheets=null,d.unsuspend!==null&&(d.count++,fy=new Map,h.forEach(Rte,d),fy=null,dy.call(d))}function Rte(d,h){if(!(h.state.loading&4)){var b=fy.get(d);if(b)var S=b.get(null);else{b=new Map,fy.set(d,b);for(var R=d.querySelectorAll("link[data-precedence],style[data-precedence]"),D=0;D"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),xA.exports=qte(),xA.exports}var Kte=Xte();const Vt=t=>typeof t=="string",Mg=()=>{let t,e;const n=new Promise((i,r)=>{t=i,e=r});return n.resolve=t,n.reject=e,n},qj=t=>t==null?"":""+t,Yte=(t,e,n)=>{t.forEach(i=>{e[i]&&(n[i]=e[i])})},Zte=/###/g,Xj=t=>t&&t.indexOf("###")>-1?t.replace(Zte,"."):t,Kj=t=>!t||Vt(t),o0=(t,e,n)=>{const i=Vt(e)?e.split("."):e;let r=0;for(;r{const{obj:i,k:r}=o0(t,e,Object);if(i!==void 0||e.length===1){i[r]=n;return}let a=e[e.length-1],s=e.slice(0,e.length-1),o=o0(t,s,Object);for(;o.obj===void 0&&s.length;)a=`${s[s.length-1]}.${a}`,s=s.slice(0,s.length-1),o=o0(t,s,Object),o?.obj&&typeof o.obj[`${o.k}.${a}`]<"u"&&(o.obj=void 0);o.obj[`${o.k}.${a}`]=n},Qte=(t,e,n,i)=>{const{obj:r,k:a}=o0(t,e,Object);r[a]=r[a]||[],r[a].push(n)},A_=(t,e)=>{const{obj:n,k:i}=o0(t,e);if(n&&Object.prototype.hasOwnProperty.call(n,i))return n[i]},Jte=(t,e,n)=>{const i=A_(t,n);return i!==void 0?i:A_(e,n)},nG=(t,e,n)=>{for(const i in e)i!=="__proto__"&&i!=="constructor"&&(i in t?Vt(t[i])||t[i]instanceof String||Vt(e[i])||e[i]instanceof String?n&&(t[i]=e[i]):nG(t[i],e[i],n):t[i]=e[i]);return t},wh=t=>t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");var ene={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};const tne=t=>Vt(t)?t.replace(/[&<>"'\/]/g,e=>ene[e]):t;class nne{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){const n=this.regExpMap.get(e);if(n!==void 0)return n;const i=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,i),this.regExpQueue.push(e),i}}const ine=[" ",",","?","!",";"],rne=new nne(20),ane=(t,e,n)=>{e=e||"",n=n||"";const i=ine.filter(s=>e.indexOf(s)<0&&n.indexOf(s)<0);if(i.length===0)return!0;const r=rne.getRegExp(`(${i.map(s=>s==="?"?"\\?":s).join("|")})`);let a=!r.test(t);if(!a){const s=t.indexOf(n);s>0&&!r.test(t.substring(0,s))&&(a=!0)}return a},sN=(t,e,n=".")=>{if(!t)return;if(t[e])return Object.prototype.hasOwnProperty.call(t,e)?t[e]:void 0;const i=e.split(n);let r=t;for(let a=0;a-1&&lt?.replace("_","-"),sne={type:"logger",log(t){this.output("log",t)},warn(t){this.output("warn",t)},error(t){this.output("error",t)},output(t,e){console?.[t]?.apply?.(console,e)}};class T_{constructor(e,n={}){this.init(e,n)}init(e,n={}){this.prefix=n.prefix||"i18next:",this.logger=e||sne,this.options=n,this.debug=n.debug}log(...e){return this.forward(e,"log","",!0)}warn(...e){return this.forward(e,"warn","",!0)}error(...e){return this.forward(e,"error","")}deprecate(...e){return this.forward(e,"warn","WARNING DEPRECATED: ",!0)}forward(e,n,i,r){return r&&!this.debug?null:(Vt(e[0])&&(e[0]=`${i}${this.prefix} ${e[0]}`),this.logger[n](e))}create(e){return new T_(this.logger,{prefix:`${this.prefix}:${e}:`,...this.options})}clone(e){return e=e||this.options,e.prefix=e.prefix||this.prefix,new T_(this.logger,e)}}var Bo=new T_;let US=class{constructor(){this.observers={}}on(e,n){return e.split(" ").forEach(i=>{this.observers[i]||(this.observers[i]=new Map);const r=this.observers[i].get(n)||0;this.observers[i].set(n,r+1)}),this}off(e,n){if(this.observers[e]){if(!n){delete this.observers[e];return}this.observers[e].delete(n)}}emit(e,...n){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([r,a])=>{for(let s=0;s{for(let s=0;s-1&&this.options.ns.splice(n,1)}getResource(e,n,i,r={}){const a=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,s=r.ignoreJSONStructure!==void 0?r.ignoreJSONStructure:this.options.ignoreJSONStructure;let o;e.indexOf(".")>-1?o=e.split("."):(o=[e,n],i&&(Array.isArray(i)?o.push(...i):Vt(i)&&a?o.push(...i.split(a)):o.push(i)));const l=A_(this.data,o);return!l&&!n&&!i&&e.indexOf(".")>-1&&(e=o[0],n=o[1],i=o.slice(2).join(".")),l||!s||!Vt(i)?l:sN(this.data?.[e]?.[n],i,a)}addResource(e,n,i,r,a={silent:!1}){const s=a.keySeparator!==void 0?a.keySeparator:this.options.keySeparator;let o=[e,n];i&&(o=o.concat(s?i.split(s):i)),e.indexOf(".")>-1&&(o=e.split("."),r=n,n=o[1]),this.addNamespaces(n),Yj(this.data,o,r),a.silent||this.emit("added",e,n,i,r)}addResources(e,n,i,r={silent:!1}){for(const a in i)(Vt(i[a])||Array.isArray(i[a]))&&this.addResource(e,n,a,i[a],{silent:!0});r.silent||this.emit("added",e,n,i)}addResourceBundle(e,n,i,r,a,s={silent:!1,skipCopy:!1}){let o=[e,n];e.indexOf(".")>-1&&(o=e.split("."),r=i,i=n,n=o[1]),this.addNamespaces(n);let l=A_(this.data,o)||{};s.skipCopy||(i=JSON.parse(JSON.stringify(i))),r?nG(l,i,a):l={...l,...i},Yj(this.data,o,l),s.silent||this.emit("added",e,n,i)}removeResourceBundle(e,n){this.hasResourceBundle(e,n)&&delete this.data[e][n],this.removeNamespaces(n),this.emit("removed",e,n)}hasResourceBundle(e,n){return this.getResource(e,n)!==void 0}getResourceBundle(e,n){return n||(n=this.options.defaultNS),this.getResource(e,n)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){const n=this.getDataByLanguage(e);return!!(n&&Object.keys(n)||[]).find(r=>n[r]&&Object.keys(n[r]).length>0)}toJSON(){return this.data}}var iG={processors:{},addPostProcessor(t){this.processors[t.name]=t},handle(t,e,n,i,r){return t.forEach(a=>{e=this.processors[a]?.process(e,n,i,r)??e}),e}};const rG=Symbol("i18next/PATH_KEY");function one(){const t=[],e=Object.create(null);let n;return e.get=(i,r)=>(n?.revoke?.(),r===rG?t:(t.push(r),n=Proxy.revocable(i,e),n.proxy)),Proxy.revocable(Object.create(null),e).proxy}function oN(t,e){const{[rG]:n}=t(one());return n.join(e?.keySeparator??".")}const Qj={},_A=t=>!Vt(t)&&typeof t!="boolean"&&typeof t!="number";class C_ extends US{constructor(e,n={}){super(),Yte(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],e,this),this.options=n,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=Bo.create("translator")}changeLanguage(e){e&&(this.language=e)}exists(e,n={interpolation:{}}){const i={...n};if(e==null)return!1;const r=this.resolve(e,i);if(r?.res===void 0)return!1;const a=_A(r.res);return!(i.returnObjects===!1&&a)}extractFromKey(e,n){let i=n.nsSeparator!==void 0?n.nsSeparator:this.options.nsSeparator;i===void 0&&(i=":");const r=n.keySeparator!==void 0?n.keySeparator:this.options.keySeparator;let a=n.ns||this.options.defaultNS||[];const s=i&&e.indexOf(i)>-1,o=!this.options.userDefinedKeySeparator&&!n.keySeparator&&!this.options.userDefinedNsSeparator&&!n.nsSeparator&&!ane(e,i,r);if(s&&!o){const l=e.match(this.interpolator.nestingRegexp);if(l&&l.length>0)return{key:e,namespaces:Vt(a)?[a]:a};const c=e.split(i);(i!==r||i===r&&this.options.ns.indexOf(c[0])>-1)&&(a=c.shift()),e=c.join(r)}return{key:e,namespaces:Vt(a)?[a]:a}}translate(e,n,i){let r=typeof n=="object"?{...n}:n;if(typeof r!="object"&&this.options.overloadTranslationOptionHandler&&(r=this.options.overloadTranslationOptionHandler(arguments)),typeof r=="object"&&(r={...r}),r||(r={}),e==null)return"";typeof e=="function"&&(e=oN(e,{...this.options,...r})),Array.isArray(e)||(e=[String(e)]);const a=r.returnDetails!==void 0?r.returnDetails:this.options.returnDetails,s=r.keySeparator!==void 0?r.keySeparator:this.options.keySeparator,{key:o,namespaces:l}=this.extractFromKey(e[e.length-1],r),c=l[l.length-1];let u=r.nsSeparator!==void 0?r.nsSeparator:this.options.nsSeparator;u===void 0&&(u=":");const f=r.lng||this.language,p=r.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(f?.toLowerCase()==="cimode")return p?a?{res:`${c}${u}${o}`,usedKey:o,exactUsedKey:o,usedLng:f,usedNS:c,usedParams:this.getUsedParamsDetails(r)}:`${c}${u}${o}`:a?{res:o,usedKey:o,exactUsedKey:o,usedLng:f,usedNS:c,usedParams:this.getUsedParamsDetails(r)}:o;const m=this.resolve(e,r);let y=m?.res;const _=m?.usedKey||o,v=m?.exactUsedKey||o,x=["[object Number]","[object Function]","[object RegExp]"],M=r.joinArrays!==void 0?r.joinArrays:this.options.joinArrays,w=!this.i18nFormat||this.i18nFormat.handleAsObject,E=r.count!==void 0&&!Vt(r.count),T=C_.hasDefaultValue(r),P=E?this.pluralResolver.getSuffix(f,r.count,r):"",N=r.ordinal&&E?this.pluralResolver.getSuffix(f,r.count,{ordinal:!1}):"",U=E&&!r.ordinal&&r.count===0,C=U&&r[`defaultValue${this.options.pluralSeparator}zero`]||r[`defaultValue${P}`]||r[`defaultValue${N}`]||r.defaultValue;let k=y;w&&!y&&T&&(k=C);const F=_A(k),I=Object.prototype.toString.apply(k);if(w&&k&&F&&x.indexOf(I)<0&&!(Vt(M)&&Array.isArray(k))){if(!r.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");const q=this.options.returnedObjectHandler?this.options.returnedObjectHandler(_,k,{...r,ns:l}):`key '${o} (${this.language})' returned an object instead of string.`;return a?(m.res=q,m.usedParams=this.getUsedParamsDetails(r),m):q}if(s){const q=Array.isArray(k),L=q?[]:{},H=q?v:_;for(const V in k)if(Object.prototype.hasOwnProperty.call(k,V)){const G=`${H}${s}${V}`;T&&!y?L[V]=this.translate(G,{...r,defaultValue:_A(C)?C[V]:void 0,joinArrays:!1,ns:l}):L[V]=this.translate(G,{...r,joinArrays:!1,ns:l}),L[V]===G&&(L[V]=k[V])}y=L}}else if(w&&Vt(M)&&Array.isArray(y))y=y.join(M),y&&(y=this.extendTranslation(y,e,r,i));else{let q=!1,L=!1;!this.isValidLookup(y)&&T&&(q=!0,y=C),this.isValidLookup(y)||(L=!0,y=o);const V=(r.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&L?void 0:y,G=T&&C!==y&&this.options.updateMissing;if(L||q||G){if(this.logger.log(G?"updateKey":"missingKey",f,c,o,G?C:y),s){const B=this.resolve(o,{...r,keySeparator:!1});B&&B.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let K=[];const Z=this.languageUtils.getFallbackCodes(this.options.fallbackLng,r.lng||this.language);if(this.options.saveMissingTo==="fallback"&&Z&&Z[0])for(let B=0;B{const ce=T&&ae!==y?ae:V;this.options.missingKeyHandler?this.options.missingKeyHandler(B,c,X,ce,G,r):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(B,c,X,ce,G,r),this.emit("missingKey",B,c,X,y)};this.options.saveMissing&&(this.options.saveMissingPlurals&&E?K.forEach(B=>{const X=this.pluralResolver.getSuffixes(B,r);U&&r[`defaultValue${this.options.pluralSeparator}zero`]&&X.indexOf(`${this.options.pluralSeparator}zero`)<0&&X.push(`${this.options.pluralSeparator}zero`),X.forEach(ae=>{se([B],o+ae,r[`defaultValue${ae}`]||C)})}):se(K,o,C))}y=this.extendTranslation(y,e,r,m,i),L&&y===o&&this.options.appendNamespaceToMissingKey&&(y=`${c}${u}${o}`),(L||q)&&this.options.parseMissingKeyHandler&&(y=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${c}${u}${o}`:o,q?y:void 0,r))}return a?(m.res=y,m.usedParams=this.getUsedParamsDetails(r),m):y}extendTranslation(e,n,i,r,a){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...i},i.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!i.skipInterpolation){i.interpolation&&this.interpolator.init({...i,interpolation:{...this.options.interpolation,...i.interpolation}});const l=Vt(e)&&(i?.interpolation?.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables);let c;if(l){const f=e.match(this.interpolator.nestingRegexp);c=f&&f.length}let u=i.replace&&!Vt(i.replace)?i.replace:i;if(this.options.interpolation.defaultVariables&&(u={...this.options.interpolation.defaultVariables,...u}),e=this.interpolator.interpolate(e,u,i.lng||this.language||r.usedLng,i),l){const f=e.match(this.interpolator.nestingRegexp),p=f&&f.length;ca?.[0]===f[0]&&!i.context?(this.logger.warn(`It seems you are nesting recursively key: ${f[0]} in key: ${n[0]}`),null):this.translate(...f,n),i)),i.interpolation&&this.interpolator.reset()}const s=i.postProcess||this.options.postProcess,o=Vt(s)?[s]:s;return e!=null&&o?.length&&i.applyPostProcessor!==!1&&(e=iG.handle(o,e,n,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(i)},...i}:i,this)),e}resolve(e,n={}){let i,r,a,s,o;return Vt(e)&&(e=[e]),e.forEach(l=>{if(this.isValidLookup(i))return;const c=this.extractFromKey(l,n),u=c.key;r=u;let f=c.namespaces;this.options.fallbackNS&&(f=f.concat(this.options.fallbackNS));const p=n.count!==void 0&&!Vt(n.count),m=p&&!n.ordinal&&n.count===0,y=n.context!==void 0&&(Vt(n.context)||typeof n.context=="number")&&n.context!=="",_=n.lngs?n.lngs:this.languageUtils.toResolveHierarchy(n.lng||this.language,n.fallbackLng);f.forEach(v=>{this.isValidLookup(i)||(o=v,!Qj[`${_[0]}-${v}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(o)&&(Qj[`${_[0]}-${v}`]=!0,this.logger.warn(`key "${r}" for languages "${_.join(", ")}" won't get resolved as namespace "${o}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),_.forEach(x=>{if(this.isValidLookup(i))return;s=x;const M=[u];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(M,u,x,v,n);else{let E;p&&(E=this.pluralResolver.getSuffix(x,n.count,n));const T=`${this.options.pluralSeparator}zero`,P=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(p&&(n.ordinal&&E.indexOf(P)===0&&M.push(u+E.replace(P,this.options.pluralSeparator)),M.push(u+E),m&&M.push(u+T)),y){const N=`${u}${this.options.contextSeparator||"_"}${n.context}`;M.push(N),p&&(n.ordinal&&E.indexOf(P)===0&&M.push(N+E.replace(P,this.options.pluralSeparator)),M.push(N+E),m&&M.push(N+T))}}let w;for(;w=M.pop();)this.isValidLookup(i)||(a=w,i=this.getResource(x,v,w,n))}))})}),{res:i,usedKey:r,exactUsedKey:a,usedLng:s,usedNS:o}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e==="")}getResource(e,n,i,r={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,n,i,r):this.resourceStore.getResource(e,n,i,r)}getUsedParamsDetails(e={}){const n=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],i=e.replace&&!Vt(e.replace);let r=i?e.replace:e;if(i&&typeof e.count<"u"&&(r.count=e.count),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!i){r={...r};for(const a of n)delete r[a]}return r}static hasDefaultValue(e){const n="defaultValue";for(const i in e)if(Object.prototype.hasOwnProperty.call(e,i)&&n===i.substring(0,n.length)&&e[i]!==void 0)return!0;return!1}}class Jj{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Bo.create("languageUtils")}getScriptPartFromCode(e){if(e=R0(e),!e||e.indexOf("-")<0)return null;const n=e.split("-");return n.length===2||(n.pop(),n[n.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(n.join("-"))}getLanguagePartFromCode(e){if(e=R0(e),!e||e.indexOf("-")<0)return e;const n=e.split("-");return this.formatLanguageCode(n[0])}formatLanguageCode(e){if(Vt(e)&&e.indexOf("-")>-1){let n;try{n=Intl.getCanonicalLocales(e)[0]}catch{}return n&&this.options.lowerCaseLng&&(n=n.toLowerCase()),n||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}getBestMatchFromCodes(e){if(!e)return null;let n;return e.forEach(i=>{if(n)return;const r=this.formatLanguageCode(i);(!this.options.supportedLngs||this.isSupportedCode(r))&&(n=r)}),!n&&this.options.supportedLngs&&e.forEach(i=>{if(n)return;const r=this.getScriptPartFromCode(i);if(this.isSupportedCode(r))return n=r;const a=this.getLanguagePartFromCode(i);if(this.isSupportedCode(a))return n=a;n=this.options.supportedLngs.find(s=>{if(s===a)return s;if(!(s.indexOf("-")<0&&a.indexOf("-")<0)&&(s.indexOf("-")>0&&a.indexOf("-")<0&&s.substring(0,s.indexOf("-"))===a||s.indexOf(a)===0&&a.length>1))return s})}),n||(n=this.getFallbackCodes(this.options.fallbackLng)[0]),n}getFallbackCodes(e,n){if(!e)return[];if(typeof e=="function"&&(e=e(n)),Vt(e)&&(e=[e]),Array.isArray(e))return e;if(!n)return e.default||[];let i=e[n];return i||(i=e[this.getScriptPartFromCode(n)]),i||(i=e[this.formatLanguageCode(n)]),i||(i=e[this.getLanguagePartFromCode(n)]),i||(i=e.default),i||[]}toResolveHierarchy(e,n){const i=this.getFallbackCodes((n===!1?[]:n)||this.options.fallbackLng||[],e),r=[],a=s=>{s&&(this.isSupportedCode(s)?r.push(s):this.logger.warn(`rejecting language code not found in supportedLngs: ${s}`))};return Vt(e)&&(e.indexOf("-")>-1||e.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&a(this.formatLanguageCode(e)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&a(this.getScriptPartFromCode(e)),this.options.load!=="currentOnly"&&a(this.getLanguagePartFromCode(e))):Vt(e)&&a(this.formatLanguageCode(e)),i.forEach(s=>{r.indexOf(s)<0&&a(this.formatLanguageCode(s))}),r}}const e4={zero:0,one:1,two:2,few:3,many:4,other:5},t4={select:t=>t===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})};class lne{constructor(e,n={}){this.languageUtils=e,this.options=n,this.logger=Bo.create("pluralResolver"),this.pluralRulesCache={}}addRule(e,n){this.rules[e]=n}clearCache(){this.pluralRulesCache={}}getRule(e,n={}){const i=R0(e==="dev"?"en":e),r=n.ordinal?"ordinal":"cardinal",a=JSON.stringify({cleanedCode:i,type:r});if(a in this.pluralRulesCache)return this.pluralRulesCache[a];let s;try{s=new Intl.PluralRules(i,{type:r})}catch{if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),t4;if(!e.match(/-|_/))return t4;const l=this.languageUtils.getLanguagePartFromCode(e);s=this.getRule(l,n)}return this.pluralRulesCache[a]=s,s}needsPlural(e,n={}){let i=this.getRule(e,n);return i||(i=this.getRule("dev",n)),i?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,n,i={}){return this.getSuffixes(e,i).map(r=>`${n}${r}`)}getSuffixes(e,n={}){let i=this.getRule(e,n);return i||(i=this.getRule("dev",n)),i?i.resolvedOptions().pluralCategories.sort((r,a)=>e4[r]-e4[a]).map(r=>`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:""}${r}`):[]}getSuffix(e,n,i={}){const r=this.getRule(e,i);return r?`${this.options.prepend}${i.ordinal?`ordinal${this.options.prepend}`:""}${r.select(n)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix("dev",n,i))}}const n4=(t,e,n,i=".",r=!0)=>{let a=Jte(t,e,n);return!a&&r&&Vt(n)&&(a=sN(t,n,i),a===void 0&&(a=sN(e,n,i))),a},SA=t=>t.replace(/\$/g,"$$$$");class cne{constructor(e={}){this.logger=Bo.create("interpolator"),this.options=e,this.format=e?.interpolation?.format||(n=>n),this.init(e)}init(e={}){e.interpolation||(e.interpolation={escapeValue:!0});const{escape:n,escapeValue:i,useRawValueToEscape:r,prefix:a,prefixEscaped:s,suffix:o,suffixEscaped:l,formatSeparator:c,unescapeSuffix:u,unescapePrefix:f,nestingPrefix:p,nestingPrefixEscaped:m,nestingSuffix:y,nestingSuffixEscaped:_,nestingOptionsSeparator:v,maxReplaces:x,alwaysFormat:M}=e.interpolation;this.escape=n!==void 0?n:tne,this.escapeValue=i!==void 0?i:!0,this.useRawValueToEscape=r!==void 0?r:!1,this.prefix=a?wh(a):s||"{{",this.suffix=o?wh(o):l||"}}",this.formatSeparator=c||",",this.unescapePrefix=u?"":f||"-",this.unescapeSuffix=this.unescapePrefix?"":u||"",this.nestingPrefix=p?wh(p):m||wh("$t("),this.nestingSuffix=y?wh(y):_||wh(")"),this.nestingOptionsSeparator=v||",",this.maxReplaces=x||1e3,this.alwaysFormat=M!==void 0?M:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){const e=(n,i)=>n?.source===i?(n.lastIndex=0,n):new RegExp(i,"g");this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,n,i,r){let a,s,o;const l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=m=>{if(m.indexOf(this.formatSeparator)<0){const x=n4(n,l,m,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(x,void 0,i,{...r,...n,interpolationkey:m}):x}const y=m.split(this.formatSeparator),_=y.shift().trim(),v=y.join(this.formatSeparator).trim();return this.format(n4(n,l,_,this.options.keySeparator,this.options.ignoreJSONStructure),v,i,{...r,...n,interpolationkey:_})};this.resetRegExp();const u=r?.missingInterpolationHandler||this.options.missingInterpolationHandler,f=r?.interpolation?.skipOnVariables!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:m=>SA(m)},{regex:this.regexp,safeValue:m=>this.escapeValue?SA(this.escape(m)):SA(m)}].forEach(m=>{for(o=0;a=m.regex.exec(e);){const y=a[1].trim();if(s=c(y),s===void 0)if(typeof u=="function"){const v=u(e,a,r);s=Vt(v)?v:""}else if(r&&Object.prototype.hasOwnProperty.call(r,y))s="";else if(f){s=a[0];continue}else this.logger.warn(`missed to pass in variable ${y} for interpolating ${e}`),s="";else!Vt(s)&&!this.useRawValueToEscape&&(s=qj(s));const _=m.safeValue(s);if(e=e.replace(a[0],_),f?(m.regex.lastIndex+=s.length,m.regex.lastIndex-=a[0].length):m.regex.lastIndex=0,o++,o>=this.maxReplaces)break}}),e}nest(e,n,i={}){let r,a,s;const o=(l,c)=>{const u=this.nestingOptionsSeparator;if(l.indexOf(u)<0)return l;const f=l.split(new RegExp(`${u}[ ]*{`));let p=`{${f[1]}`;l=f[0],p=this.interpolate(p,s);const m=p.match(/'/g),y=p.match(/"/g);((m?.length??0)%2===0&&!y||y.length%2!==0)&&(p=p.replace(/'/g,'"'));try{s=JSON.parse(p),c&&(s={...c,...s})}catch(_){return this.logger.warn(`failed parsing options string in nesting for key ${l}`,_),`${l}${u}${p}`}return s.defaultValue&&s.defaultValue.indexOf(this.prefix)>-1&&delete s.defaultValue,l};for(;r=this.nestingRegexp.exec(e);){let l=[];s={...i},s=s.replace&&!Vt(s.replace)?s.replace:s,s.applyPostProcessor=!1,delete s.defaultValue;const c=/{.*}/.test(r[1])?r[1].lastIndexOf("}")+1:r[1].indexOf(this.formatSeparator);if(c!==-1&&(l=r[1].slice(c).split(this.formatSeparator).map(u=>u.trim()).filter(Boolean),r[1]=r[1].slice(0,c)),a=n(o.call(this,r[1].trim(),s),s),a&&r[0]===e&&!Vt(a))return a;Vt(a)||(a=qj(a)),a||(this.logger.warn(`missed to resolve ${r[1]} for nesting ${e}`),a=""),l.length&&(a=l.reduce((u,f)=>this.format(u,f,i.lng,{...i,interpolationkey:r[1].trim()}),a.trim())),e=e.replace(r[0],a),this.regexp.lastIndex=0}return e}}const une=t=>{let e=t.toLowerCase().trim();const n={};if(t.indexOf("(")>-1){const i=t.split("(");e=i[0].toLowerCase().trim();const r=i[1].substring(0,i[1].length-1);e==="currency"&&r.indexOf(":")<0?n.currency||(n.currency=r.trim()):e==="relativetime"&&r.indexOf(":")<0?n.range||(n.range=r.trim()):r.split(";").forEach(s=>{if(s){const[o,...l]=s.split(":"),c=l.join(":").trim().replace(/^'+|'+$/g,""),u=o.trim();n[u]||(n[u]=c),c==="false"&&(n[u]=!1),c==="true"&&(n[u]=!0),isNaN(c)||(n[u]=parseInt(c,10))}})}return{formatName:e,formatOptions:n}},i4=t=>{const e={};return(n,i,r)=>{let a=r;r&&r.interpolationkey&&r.formatParams&&r.formatParams[r.interpolationkey]&&r[r.interpolationkey]&&(a={...a,[r.interpolationkey]:void 0});const s=i+JSON.stringify(a);let o=e[s];return o||(o=t(R0(i),r),e[s]=o),o(n)}},dne=t=>(e,n,i)=>t(R0(n),i)(e);class fne{constructor(e={}){this.logger=Bo.create("formatter"),this.options=e,this.init(e)}init(e,n={interpolation:{}}){this.formatSeparator=n.interpolation.formatSeparator||",";const i=n.cacheInBuiltFormats?i4:dne;this.formats={number:i((r,a)=>{const s=new Intl.NumberFormat(r,{...a});return o=>s.format(o)}),currency:i((r,a)=>{const s=new Intl.NumberFormat(r,{...a,style:"currency"});return o=>s.format(o)}),datetime:i((r,a)=>{const s=new Intl.DateTimeFormat(r,{...a});return o=>s.format(o)}),relativetime:i((r,a)=>{const s=new Intl.RelativeTimeFormat(r,{...a});return o=>s.format(o,a.range||"day")}),list:i((r,a)=>{const s=new Intl.ListFormat(r,{...a});return o=>s.format(o)})}}add(e,n){this.formats[e.toLowerCase().trim()]=n}addCached(e,n){this.formats[e.toLowerCase().trim()]=i4(n)}format(e,n,i,r={}){const a=n.split(this.formatSeparator);if(a.length>1&&a[0].indexOf("(")>1&&a[0].indexOf(")")<0&&a.find(o=>o.indexOf(")")>-1)){const o=a.findIndex(l=>l.indexOf(")")>-1);a[0]=[a[0],...a.splice(1,o)].join(this.formatSeparator)}return a.reduce((o,l)=>{const{formatName:c,formatOptions:u}=une(l);if(this.formats[c]){let f=o;try{const p=r?.formatParams?.[r.interpolationkey]||{},m=p.locale||p.lng||r.locale||r.lng||i;f=this.formats[c](o,m,{...u,...r,...p})}catch(p){this.logger.warn(p)}return f}else this.logger.warn(`there was no format function for ${c}`);return o},e)}}const hne=(t,e)=>{t.pending[e]!==void 0&&(delete t.pending[e],t.pendingCount--)};class pne extends US{constructor(e,n,i,r={}){super(),this.backend=e,this.store=n,this.services=i,this.languageUtils=i.languageUtils,this.options=r,this.logger=Bo.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(i,r.backend,r)}queueLoad(e,n,i,r){const a={},s={},o={},l={};return e.forEach(c=>{let u=!0;n.forEach(f=>{const p=`${c}|${f}`;!i.reload&&this.store.hasResourceBundle(c,f)?this.state[p]=2:this.state[p]<0||(this.state[p]===1?s[p]===void 0&&(s[p]=!0):(this.state[p]=1,u=!1,s[p]===void 0&&(s[p]=!0),a[p]===void 0&&(a[p]=!0),l[f]===void 0&&(l[f]=!0)))}),u||(o[c]=!0)}),(Object.keys(a).length||Object.keys(s).length)&&this.queue.push({pending:s,pendingCount:Object.keys(s).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(a),pending:Object.keys(s),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(l)}}loaded(e,n,i){const r=e.split("|"),a=r[0],s=r[1];n&&this.emit("failedLoading",a,s,n),!n&&i&&this.store.addResourceBundle(a,s,i,void 0,void 0,{skipCopy:!0}),this.state[e]=n?-1:2,n&&i&&(this.state[e]=0);const o={};this.queue.forEach(l=>{Qte(l.loaded,[a],s),hne(l,e),n&&l.errors.push(n),l.pendingCount===0&&!l.done&&(Object.keys(l.loaded).forEach(c=>{o[c]||(o[c]={});const u=l.loaded[c];u.length&&u.forEach(f=>{o[c][f]===void 0&&(o[c][f]=!0)})}),l.done=!0,l.errors.length?l.callback(l.errors):l.callback())}),this.emit("loaded",o),this.queue=this.queue.filter(l=>!l.done)}read(e,n,i,r=0,a=this.retryTimeout,s){if(!e.length)return s(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:n,fcName:i,tried:r,wait:a,callback:s});return}this.readingCalls++;const o=(c,u)=>{if(this.readingCalls--,this.waitingReads.length>0){const f=this.waitingReads.shift();this.read(f.lng,f.ns,f.fcName,f.tried,f.wait,f.callback)}if(c&&u&&r{this.read.call(this,e,n,i,r+1,a*2,s)},a);return}s(c,u)},l=this.backend[i].bind(this.backend);if(l.length===2){try{const c=l(e,n);c&&typeof c.then=="function"?c.then(u=>o(null,u)).catch(o):o(null,c)}catch(c){o(c)}return}return l(e,n,o)}prepareLoading(e,n,i={},r){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),r&&r();Vt(e)&&(e=this.languageUtils.toResolveHierarchy(e)),Vt(n)&&(n=[n]);const a=this.queueLoad(e,n,i,r);if(!a.toLoad.length)return a.pending.length||r(),null;a.toLoad.forEach(s=>{this.loadOne(s)})}load(e,n,i){this.prepareLoading(e,n,{},i)}reload(e,n,i){this.prepareLoading(e,n,{reload:!0},i)}loadOne(e,n=""){const i=e.split("|"),r=i[0],a=i[1];this.read(r,a,"read",void 0,void 0,(s,o)=>{s&&this.logger.warn(`${n}loading namespace ${a} for language ${r} failed`,s),!s&&o&&this.logger.log(`${n}loaded namespace ${a} for language ${r}`,o),this.loaded(e,s,o)})}saveMissing(e,n,i,r,a,s={},o=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(n)){this.logger.warn(`did not save key "${i}" as the namespace "${n}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(i==null||i==="")){if(this.backend?.create){const l={...s,isUpdate:a},c=this.backend.create.bind(this.backend);if(c.length<6)try{let u;c.length===5?u=c(e,n,i,r,l):u=c(e,n,i,r),u&&typeof u.then=="function"?u.then(f=>o(null,f)).catch(o):o(null,u)}catch(u){o(u)}else c(e,n,i,r,o,l)}!e||!e[0]||this.store.addResource(e[0],n,i,r)}}}const r4=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:t=>{let e={};if(typeof t[1]=="object"&&(e=t[1]),Vt(t[1])&&(e.defaultValue=t[1]),Vt(t[2])&&(e.tDescription=t[2]),typeof t[2]=="object"||typeof t[3]=="object"){const n=t[3]||t[2];Object.keys(n).forEach(i=>{e[i]=n[i]})}return e},interpolation:{escapeValue:!0,format:t=>t,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),a4=t=>(Vt(t.ns)&&(t.ns=[t.ns]),Vt(t.fallbackLng)&&(t.fallbackLng=[t.fallbackLng]),Vt(t.fallbackNS)&&(t.fallbackNS=[t.fallbackNS]),t.supportedLngs?.indexOf?.("cimode")<0&&(t.supportedLngs=t.supportedLngs.concat(["cimode"])),typeof t.initImmediate=="boolean"&&(t.initAsync=t.initImmediate),t),Sy=()=>{},mne=t=>{Object.getOwnPropertyNames(Object.getPrototypeOf(t)).forEach(n=>{typeof t[n]=="function"&&(t[n]=t[n].bind(t))})};class l0 extends US{constructor(e={},n){if(super(),this.options=a4(e),this.services={},this.logger=Bo,this.modules={external:[]},mne(this),n&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,n),this;setTimeout(()=>{this.init(e,n)},0)}}init(e={},n){this.isInitializing=!0,typeof e=="function"&&(n=e,e={}),e.defaultNS==null&&e.ns&&(Vt(e.ns)?e.defaultNS=e.ns:e.ns.indexOf("translation")<0&&(e.defaultNS=e.ns[0]));const i=r4();this.options={...i,...this.options,...a4(e)},this.options.interpolation={...i.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator);const r=c=>c?typeof c=="function"?new c:c:null;if(!this.options.isClone){this.modules.logger?Bo.init(r(this.modules.logger),this.options):Bo.init(null,this.options);let c;this.modules.formatter?c=this.modules.formatter:c=fne;const u=new Jj(this.options);this.store=new Zj(this.options.resources,this.options);const f=this.services;f.logger=Bo,f.resourceStore=this.store,f.languageUtils=u,f.pluralResolver=new lne(u,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==i.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),c&&(!this.options.interpolation.format||this.options.interpolation.format===i.interpolation.format)&&(f.formatter=r(c),f.formatter.init&&f.formatter.init(f,this.options),this.options.interpolation.format=f.formatter.format.bind(f.formatter)),f.interpolator=new cne(this.options),f.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},f.backendConnector=new pne(r(this.modules.backend),f.resourceStore,f,this.options),f.backendConnector.on("*",(m,...y)=>{this.emit(m,...y)}),this.modules.languageDetector&&(f.languageDetector=r(this.modules.languageDetector),f.languageDetector.init&&f.languageDetector.init(f,this.options.detection,this.options)),this.modules.i18nFormat&&(f.i18nFormat=r(this.modules.i18nFormat),f.i18nFormat.init&&f.i18nFormat.init(this)),this.translator=new C_(this.services,this.options),this.translator.on("*",(m,...y)=>{this.emit(m,...y)}),this.modules.external.forEach(m=>{m.init&&m.init(this)})}if(this.format=this.options.interpolation.format,n||(n=Sy),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){const c=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);c.length>0&&c[0]!=="dev"&&(this.options.lng=c[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(c=>{this[c]=(...u)=>this.store[c](...u)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(c=>{this[c]=(...u)=>(this.store[c](...u),this)});const o=Mg(),l=()=>{const c=(u,f)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),o.resolve(f),n(u,f)};if(this.languages&&!this.isInitialized)return c(null,this.t.bind(this));this.changeLanguage(this.options.lng,c)};return this.options.resources||!this.options.initAsync?l():setTimeout(l,0),o}loadResources(e,n=Sy){let i=n;const r=Vt(e)?e:this.language;if(typeof e=="function"&&(i=e),!this.options.resources||this.options.partialBundledLanguages){if(r?.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return i();const a=[],s=o=>{if(!o||o==="cimode")return;this.services.languageUtils.toResolveHierarchy(o).forEach(c=>{c!=="cimode"&&a.indexOf(c)<0&&a.push(c)})};r?s(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(l=>s(l)),this.options.preload?.forEach?.(o=>s(o)),this.services.backendConnector.load(a,this.options.ns,o=>{!o&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),i(o)})}else i(null)}reloadResources(e,n,i){const r=Mg();return typeof e=="function"&&(i=e,e=void 0),typeof n=="function"&&(i=n,n=void 0),e||(e=this.languages),n||(n=this.options.ns),i||(i=Sy),this.services.backendConnector.reload(e,n,a=>{r.resolve(),i(a)}),r}use(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return e.type==="backend"&&(this.modules.backend=e),(e.type==="logger"||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type==="languageDetector"&&(this.modules.languageDetector=e),e.type==="i18nFormat"&&(this.modules.i18nFormat=e),e.type==="postProcessor"&&iG.addPostProcessor(e),e.type==="formatter"&&(this.modules.formatter=e),e.type==="3rdParty"&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&!(["cimode","dev"].indexOf(e)>-1)){for(let n=0;n-1)&&this.store.hasLanguageSomeTranslations(i)){this.resolvedLanguage=i;break}}!this.resolvedLanguage&&this.languages.indexOf(e)<0&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,n){this.isLanguageChangingTo=e;const i=Mg();this.emit("languageChanging",e);const r=o=>{this.language=o,this.languages=this.services.languageUtils.toResolveHierarchy(o),this.resolvedLanguage=void 0,this.setResolvedLanguage(o)},a=(o,l)=>{l?this.isLanguageChangingTo===e&&(r(l),this.translator.changeLanguage(l),this.isLanguageChangingTo=void 0,this.emit("languageChanged",l),this.logger.log("languageChanged",l)):this.isLanguageChangingTo=void 0,i.resolve((...c)=>this.t(...c)),n&&n(o,(...c)=>this.t(...c))},s=o=>{!e&&!o&&this.services.languageDetector&&(o=[]);const l=Vt(o)?o:o&&o[0],c=this.store.hasLanguageSomeTranslations(l)?l:this.services.languageUtils.getBestMatchFromCodes(Vt(o)?[o]:o);c&&(this.language||r(c),this.translator.language||this.translator.changeLanguage(c),this.services.languageDetector?.cacheUserLanguage?.(c)),this.loadResources(c,u=>{a(u,c)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?s(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(s):this.services.languageDetector.detect(s):s(e),i}getFixedT(e,n,i){const r=(a,s,...o)=>{let l;typeof s!="object"?l=this.options.overloadTranslationOptionHandler([a,s].concat(o)):l={...s},l.lng=l.lng||r.lng,l.lngs=l.lngs||r.lngs,l.ns=l.ns||r.ns,l.keyPrefix!==""&&(l.keyPrefix=l.keyPrefix||i||r.keyPrefix);const c=this.options.keySeparator||".";let u;return l.keyPrefix&&Array.isArray(a)?u=a.map(f=>(typeof f=="function"&&(f=oN(f,{...this.options,...s})),`${l.keyPrefix}${c}${f}`)):(typeof a=="function"&&(a=oN(a,{...this.options,...s})),u=l.keyPrefix?`${l.keyPrefix}${c}${a}`:a),this.t(u,l)};return Vt(e)?r.lng=e:r.lngs=e,r.ns=n,r.keyPrefix=i,r}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,n={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;const i=n.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,a=this.languages[this.languages.length-1];if(i.toLowerCase()==="cimode")return!0;const s=(o,l)=>{const c=this.services.backendConnector.state[`${o}|${l}`];return c===-1||c===0||c===2};if(n.precheck){const o=n.precheck(this,s);if(o!==void 0)return o}return!!(this.hasResourceBundle(i,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||s(i,e)&&(!r||s(a,e)))}loadNamespaces(e,n){const i=Mg();return this.options.ns?(Vt(e)&&(e=[e]),e.forEach(r=>{this.options.ns.indexOf(r)<0&&this.options.ns.push(r)}),this.loadResources(r=>{i.resolve(),n&&n(r)}),i):(n&&n(),Promise.resolve())}loadLanguages(e,n){const i=Mg();Vt(e)&&(e=[e]);const r=this.options.preload||[],a=e.filter(s=>r.indexOf(s)<0&&this.services.languageUtils.isSupportedCode(s));return a.length?(this.options.preload=r.concat(a),this.loadResources(s=>{i.resolve(),n&&n(s)}),i):(n&&n(),Promise.resolve())}dir(e){if(e||(e=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!e)return"rtl";try{const r=new Intl.Locale(e);if(r&&r.getTextInfo){const a=r.getTextInfo();if(a&&a.direction)return a.direction}}catch{}const n=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],i=this.services?.languageUtils||new Jj(r4());return e.toLowerCase().indexOf("-latn")>1?"ltr":n.indexOf(i.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(e={},n){const i=new l0(e,n);return i.createInstance=l0.createInstance,i}cloneInstance(e={},n=Sy){const i=e.forkResourceStore;i&&delete e.forkResourceStore;const r={...this.options,...e,isClone:!0},a=new l0(r);if((e.debug!==void 0||e.prefix!==void 0)&&(a.logger=a.logger.clone(e)),["store","services","language"].forEach(o=>{a[o]=this[o]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},i){const o=Object.keys(this.store.data).reduce((l,c)=>(l[c]={...this.store.data[c]},l[c]=Object.keys(l[c]).reduce((u,f)=>(u[f]={...l[c][f]},u),l[c]),l),{});a.store=new Zj(o,r),a.services.resourceStore=a.store}return a.translator=new C_(a.services,r),a.translator.on("*",(o,...l)=>{a.emit(o,...l)}),a.init(r,n),a.translator.options=r,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}const wa=l0.createInstance();wa.createInstance;wa.dir;wa.init;wa.loadResources;wa.reloadResources;wa.use;wa.changeLanguage;wa.getFixedT;wa.t;wa.exists;wa.setDefaultNamespace;wa.hasLoadedNamespace;wa.loadNamespaces;wa.loadLanguages;const gne=(t,e,n,i)=>{const r=[n,{code:e,...i||{}}];if(t?.services?.logger?.forward)return t.services.logger.forward(r,"warn","react-i18next::",!0);vf(r[0])&&(r[0]=`react-i18next:: ${r[0]}`),t?.services?.logger?.warn?t.services.logger.warn(...r):console?.warn&&console.warn(...r)},s4={},aG=(t,e,n,i)=>{vf(n)&&s4[n]||(vf(n)&&(s4[n]=new Date),gne(t,e,n,i))},sG=(t,e)=>()=>{if(t.isInitialized)e();else{const n=()=>{setTimeout(()=>{t.off("initialized",n)},0),e()};t.on("initialized",n)}},lN=(t,e,n)=>{t.loadNamespaces(e,sG(t,n))},o4=(t,e,n,i)=>{if(vf(n)&&(n=[n]),t.options.preload&&t.options.preload.indexOf(e)>-1)return lN(t,n,i);n.forEach(r=>{t.options.ns.indexOf(r)<0&&t.options.ns.push(r)}),t.loadLanguages(e,sG(t,i))},xne=(t,e,n={})=>!e.languages||!e.languages.length?(aG(e,"NO_LANGUAGES","i18n.languages were undefined or empty",{languages:e.languages}),!0):e.hasLoadedNamespace(t,{lng:n.lng,precheck:(i,r)=>{if(n.bindI18n&&n.bindI18n.indexOf("languageChanging")>-1&&i.services.backendConnector.backend&&i.isLanguageChangingTo&&!r(i.isLanguageChangingTo,t))return!1}}),vf=t=>typeof t=="string",vne=t=>typeof t=="object"&&t!==null,yne=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,bne={"&":"&","&":"&","<":"<","<":"<",">":">",">":">","'":"'","'":"'",""":'"',""":'"'," ":" "," ":" ","©":"©","©":"©","®":"®","®":"®","…":"…","…":"…","/":"/","/":"/"},_ne=t=>bne[t],Sne=t=>t.replace(yne,_ne);let cN={bindI18n:"languageChanged",bindI18nStore:"",transEmptyNodeValue:"",transSupportBasicHtmlNodes:!0,transWrapTextNodes:"",transKeepBasicHtmlNodesFor:["br","strong","i","p"],useSuspense:!0,unescape:Sne};const wne=(t={})=>{cN={...cN,...t}},Mne=()=>cN;let oG;const Ene=t=>{oG=t},Ane=()=>oG,Tne={type:"3rdParty",init(t){wne(t.options.react),Ene(t)}},Cne=A.createContext();class Nne{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(n=>{this.usedNamespaces[n]||(this.usedNamespaces[n]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}}var wA={exports:{}},MA={};var l4;function Rne(){if(l4)return MA;l4=1;var t=um();function e(f,p){return f===p&&(f!==0||1/f===1/p)||f!==f&&p!==p}var n=typeof Object.is=="function"?Object.is:e,i=t.useState,r=t.useEffect,a=t.useLayoutEffect,s=t.useDebugValue;function o(f,p){var m=p(),y=i({inst:{value:m,getSnapshot:p}}),_=y[0].inst,v=y[1];return a(function(){_.value=m,_.getSnapshot=p,l(_)&&v({inst:_})},[f,m,p]),r(function(){return l(_)&&v({inst:_}),f(function(){l(_)&&v({inst:_})})},[f]),s(m),m}function l(f){var p=f.getSnapshot;f=f.value;try{var m=p();return!n(f,m)}catch{return!0}}function c(f,p){return p()}var u=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?c:o;return MA.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:u,MA}var c4;function lG(){return c4||(c4=1,wA.exports=Rne()),wA.exports}var pP=lG();const Pne=(t,e)=>vf(e)?e:vne(e)&&vf(e.defaultValue)?e.defaultValue:Array.isArray(t)?t[t.length-1]:t,kne={t:Pne,ready:!1},Dne=()=>()=>{},mP=(t,e={})=>{const{i18n:n}=e,{i18n:i,defaultNS:r}=A.useContext(Cne)||{},a=n||i||Ane();a&&!a.reportNamespaces&&(a.reportNamespaces=new Nne),a||aG(a,"NO_I18NEXT_INSTANCE","useTranslation: You will need to pass in an i18next instance by using initReactI18next");const s=A.useMemo(()=>({...Mne(),...a?.options?.react,...e}),[a,e]),{useSuspense:o,keyPrefix:l}=s,c=r||a?.options?.defaultNS,u=vf(c)?[c]:c||["translation"],f=A.useMemo(()=>u,u);a?.reportNamespaces?.addUsedNamespaces?.(f);const p=A.useRef(0),m=A.useCallback(C=>{if(!a)return Dne;const{bindI18n:k,bindI18nStore:F}=s,I=()=>{p.current+=1,C()};return k&&a.on(k,I),F&&a.store.on(F,I),()=>{k&&k.split(" ").forEach(q=>a.off(q,I)),F&&F.split(" ").forEach(q=>a.store.off(q,I))}},[a,s]),y=A.useRef(),_=A.useCallback(()=>{if(!a)return kne;const C=!!(a.isInitialized||a.initializedStoreOnce)&&f.every(H=>xne(H,a,s)),k=e.lng||a.language,F=p.current,I=y.current;if(I&&I.ready===C&&I.lng===k&&I.keyPrefix===l&&I.revision===F)return I;const L={t:a.getFixedT(k,s.nsMode==="fallback"?f:f[0],l),ready:C,lng:k,keyPrefix:l,revision:F};return y.current=L,L},[a,f,l,s,e.lng]),[v,x]=A.useState(0),{t:M,ready:w}=pP.useSyncExternalStore(m,_,_);A.useEffect(()=>{if(a&&!w&&!o){const C=()=>x(k=>k+1);e.lng?o4(a,e.lng,f,C):lN(a,f,C)}},[a,e.lng,f,w,o,v]);const E=a||{},T=A.useRef(null),P=A.useRef(),N=C=>{const k=Object.getOwnPropertyDescriptors(C);k.__original&&delete k.__original;const F=Object.create(Object.getPrototypeOf(C),k);if(!Object.prototype.hasOwnProperty.call(F,"__original"))try{Object.defineProperty(F,"__original",{value:C,writable:!1,enumerable:!1,configurable:!1})}catch{}return F},U=A.useMemo(()=>{const C=E,k=C?.language;let F=C;C&&(T.current&&T.current.__original===C?P.current!==k?(F=N(C),T.current=F,P.current=k):F=T.current:(F=N(C),T.current=F,P.current=k));const I=[M,F,w];return I.t=M,I.i18n=F,I.ready=w,I},[M,E,w,E.resolvedLanguage,E.language,E.languages]);if(a&&o&&!w)throw new Promise(C=>{const k=()=>C();e.lng?o4(a,e.lng,f,k):lN(a,f,k)});return U},{slice:One,forEach:Lne}=[];function Ine(t){return Lne.call(One.call(arguments,1),e=>{if(e)for(const n in e)t[n]===void 0&&(t[n]=e[n])}),t}function Une(t){return typeof t!="string"?!1:[/<\s*script.*?>/i,/<\s*\/\s*script\s*>/i,/<\s*img.*?on\w+\s*=/i,/<\s*\w+\s*on\w+\s*=.*?>/i,/javascript\s*:/i,/vbscript\s*:/i,/expression\s*\(/i,/eval\s*\(/i,/alert\s*\(/i,/document\.cookie/i,/document\.write\s*\(/i,/window\.location/i,/innerHTML/i].some(n=>n.test(t))}const u4=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/,jne=function(t,e){const i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{path:"/"},r=encodeURIComponent(e);let a=`${t}=${r}`;if(i.maxAge>0){const s=i.maxAge-0;if(Number.isNaN(s))throw new Error("maxAge should be a Number");a+=`; Max-Age=${Math.floor(s)}`}if(i.domain){if(!u4.test(i.domain))throw new TypeError("option domain is invalid");a+=`; Domain=${i.domain}`}if(i.path){if(!u4.test(i.path))throw new TypeError("option path is invalid");a+=`; Path=${i.path}`}if(i.expires){if(typeof i.expires.toUTCString!="function")throw new TypeError("option expires is invalid");a+=`; Expires=${i.expires.toUTCString()}`}if(i.httpOnly&&(a+="; HttpOnly"),i.secure&&(a+="; Secure"),i.sameSite)switch(typeof i.sameSite=="string"?i.sameSite.toLowerCase():i.sameSite){case!0:a+="; SameSite=Strict";break;case"lax":a+="; SameSite=Lax";break;case"strict":a+="; SameSite=Strict";break;case"none":a+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}return i.partitioned&&(a+="; Partitioned"),a},d4={create(t,e,n,i){let r=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{path:"/",sameSite:"strict"};n&&(r.expires=new Date,r.expires.setTime(r.expires.getTime()+n*60*1e3)),i&&(r.domain=i),document.cookie=jne(t,e,r)},read(t){const e=`${t}=`,n=document.cookie.split(";");for(let i=0;i-1&&(i=window.location.hash.substring(window.location.hash.indexOf("?")));const a=i.substring(1).split("&");for(let s=0;s0&&a[s].substring(0,o)===e&&(n=a[s].substring(o+1))}}return n}},Bne={name:"hash",lookup(t){let{lookupHash:e,lookupFromHashIndex:n}=t,i;if(typeof window<"u"){const{hash:r}=window.location;if(r&&r.length>2){const a=r.substring(1);if(e){const s=a.split("&");for(let o=0;o0&&s[o].substring(0,l)===e&&(i=s[o].substring(l+1))}}if(i)return i;if(!i&&n>-1){const s=r.match(/\/([a-zA-Z-]*)/g);return Array.isArray(s)?s[typeof n=="number"?n:0]?.replace("/",""):void 0}}}return i}};let Mh=null;const f4=()=>{if(Mh!==null)return Mh;try{if(Mh=typeof window<"u"&&window.localStorage!==null,!Mh)return!1;const t="i18next.translate.boo";window.localStorage.setItem(t,"foo"),window.localStorage.removeItem(t)}catch{Mh=!1}return Mh};var Hne={name:"localStorage",lookup(t){let{lookupLocalStorage:e}=t;if(e&&f4())return window.localStorage.getItem(e)||void 0},cacheUserLanguage(t,e){let{lookupLocalStorage:n}=e;n&&f4()&&window.localStorage.setItem(n,t)}};let Eh=null;const h4=()=>{if(Eh!==null)return Eh;try{if(Eh=typeof window<"u"&&window.sessionStorage!==null,!Eh)return!1;const t="i18next.translate.boo";window.sessionStorage.setItem(t,"foo"),window.sessionStorage.removeItem(t)}catch{Eh=!1}return Eh};var Vne={name:"sessionStorage",lookup(t){let{lookupSessionStorage:e}=t;if(e&&h4())return window.sessionStorage.getItem(e)||void 0},cacheUserLanguage(t,e){let{lookupSessionStorage:n}=e;n&&h4()&&window.sessionStorage.setItem(n,t)}},$ne={name:"navigator",lookup(t){const e=[];if(typeof navigator<"u"){const{languages:n,userLanguage:i,language:r}=navigator;if(n)for(let a=0;a0?e:void 0}},Gne={name:"htmlTag",lookup(t){let{htmlTag:e}=t,n;const i=e||(typeof document<"u"?document.documentElement:null);return i&&typeof i.getAttribute=="function"&&(n=i.getAttribute("lang")),n}},Wne={name:"path",lookup(t){let{lookupFromPathIndex:e}=t;if(typeof window>"u")return;const n=window.location.pathname.match(/\/([a-zA-Z-]*)/g);return Array.isArray(n)?n[typeof e=="number"?e:0]?.replace("/",""):void 0}},qne={name:"subdomain",lookup(t){let{lookupFromSubdomainIndex:e}=t;const n=typeof e=="number"?e+1:1,i=typeof window<"u"&&window.location?.hostname?.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);if(i)return i[n]}};let cG=!1;try{document.cookie,cG=!0}catch{}const uG=["querystring","cookie","localStorage","sessionStorage","navigator","htmlTag"];cG||uG.splice(1,1);const Xne=()=>({order:uG,lookupQuerystring:"lng",lookupCookie:"i18next",lookupLocalStorage:"i18nextLng",lookupSessionStorage:"i18nextLng",caches:["localStorage"],excludeCacheFor:["cimode"],convertDetectedLanguage:t=>t});class dG{constructor(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.type="languageDetector",this.detectors={},this.init(e,n)}init(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{languageUtils:{}},n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};this.services=e,this.options=Ine(n,this.options||{},Xne()),typeof this.options.convertDetectedLanguage=="string"&&this.options.convertDetectedLanguage.indexOf("15897")>-1&&(this.options.convertDetectedLanguage=r=>r.replace("-","_")),this.options.lookupFromUrlIndex&&(this.options.lookupFromPathIndex=this.options.lookupFromUrlIndex),this.i18nOptions=i,this.addDetector(Fne),this.addDetector(zne),this.addDetector(Hne),this.addDetector(Vne),this.addDetector($ne),this.addDetector(Gne),this.addDetector(Wne),this.addDetector(qne),this.addDetector(Bne)}addDetector(e){return this.detectors[e.name]=e,this}detect(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.options.order,n=[];return e.forEach(i=>{if(this.detectors[i]){let r=this.detectors[i].lookup(this.options);r&&typeof r=="string"&&(r=[r]),r&&(n=n.concat(r))}}),n=n.filter(i=>i!=null&&!Une(i)).map(i=>this.options.convertDetectedLanguage(i)),this.services&&this.services.languageUtils&&this.services.languageUtils.getBestMatchFromCodes?n:n.length>0?n[0]:null}cacheUserLanguage(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.options.caches;n&&(this.options.excludeCacheFor&&this.options.excludeCacheFor.indexOf(e)>-1||n.forEach(i=>{this.detectors[i]&&this.detectors[i].cacheUserLanguage(e,this.options)}))}}dG.type="languageDetector";const Kne={nav:{printers:"Printers",control:"Control",archives:"Archives",queue:"Queue",stats:"Statistics",profiles:"Profiles",maintenance:"Maintenance",settings:"Settings",collapseSidebar:"Collapse sidebar",expandSidebar:"Expand sidebar",update:"Update",updateAvailable:"Update available: v{{version}}",viewOnGithub:"View on GitHub",keyboardShortcuts:"Keyboard shortcuts (?)",switchToLight:"Switch to light mode",switchToDark:"Switch to dark mode"},common:{save:"Save",cancel:"Cancel",delete:"Delete",edit:"Edit",add:"Add",close:"Close",confirm:"Confirm",loading:"Loading...",error:"Error",success:"Success",warning:"Warning",enabled:"Enabled",disabled:"Disabled",yes:"Yes",no:"No",on:"On",off:"Off",all:"All",none:"None",search:"Search",filter:"Filter",sort:"Sort",refresh:"Refresh",download:"Download",upload:"Upload",actions:"Actions",status:"Status",name:"Name",description:"Description",date:"Date",time:"Time",hours:"hours",minutes:"minutes",seconds:"seconds",noPrinters:"No printers configured",noData:"No data available",required:"Required",optional:"Optional"},printers:{title:"Printers",addPrinter:"Add Printer",editPrinter:"Edit Printer",deletePrinter:"Delete Printer",printerName:"Printer Name",serialNumber:"Serial Number",ipAddress:"IP Address",accessCode:"Access Code",model:"Model",nozzleCount:"Nozzle Count",autoArchive:"Auto Archive",status:{idle:"Idle",printing:"Printing",paused:"Paused",offline:"Offline",error:"Error",finished:"Finished",unknown:"Unknown"},temperatures:{nozzle:"Nozzle",bed:"Bed",chamber:"Chamber"},progress:"{{percent}}% complete",timeRemaining:"{{time}} remaining",deleteConfirm:'Are you sure you want to delete "{{name}}"?',maintenanceOk:"Maintenance OK",maintenanceWarning:"{{count}} warning",maintenanceWarning_plural:"{{count}} warnings",maintenanceDue:"{{count}} due",maintenanceDue_plural:"{{count}} due"},archives:{title:"Print Archives",searchPlaceholder:"Search archives...",filterByPrinter:"Filter by printer",filterByStatus:"Filter by status",sortBy:"Sort by",sortNewest:"Newest first",sortOldest:"Oldest first",sortName:"Name",sortDuration:"Duration",noArchives:"No archives found",printTime:"Print Time",filamentUsed:"Filament Used",cost:"Cost",reprint:"Reprint",preview:"Preview",deleteArchive:"Delete Archive",deleteConfirm:"Are you sure you want to delete this archive?",favorite:"Favorite",unfavorite:"Remove from favorites",viewDetails:"View Details",status:{completed:"Completed",failed:"Failed",stopped:"Stopped"}},queue:{title:"Print Queue",addToQueue:"Add to Queue",clearQueue:"Clear Queue",emptyQueue:"Queue is empty",position:"Position",scheduledTime:"Scheduled Time",moveUp:"Move Up",moveDown:"Move Down",remove:"Remove",startNow:"Start Now",status:{pending:"Pending",printing:"Printing",completed:"Completed",failed:"Failed",cancelled:"Cancelled"}},stats:{title:"Statistics",overview:"Overview",totalPrints:"Total Prints",successRate:"Success Rate",totalPrintTime:"Total Print Time",totalFilament:"Total Filament Used",totalCost:"Total Cost",averagePrintTime:"Average Print Time",printsPerDay:"Prints per Day",byPrinter:"By Printer",byMaterial:"By Material",byMonth:"By Month",last7Days:"Last 7 Days",last30Days:"Last 30 Days",last90Days:"Last 90 Days",allTime:"All Time"},profiles:{title:"Filament Profiles",addProfile:"Add Profile",editProfile:"Edit Profile",deleteProfile:"Delete Profile",material:"Material",brand:"Brand",color:"Color",diameter:"Diameter",density:"Density",costPerKg:"Cost per kg",spoolWeight:"Spool Weight",noProfiles:"No profiles configured",deleteConfirm:"Are you sure you want to delete this profile?"},maintenance:{title:"Maintenance",overview:"Overview",allOk:"All maintenance up to date",dueCount:"{{count}} item due",dueCount_plural:"{{count}} items due",warningCount:"{{count}} warning",warningCount_plural:"{{count}} warnings",totalPrintTime:"Total Print Time",nextMaintenance:"Next Maintenance",nothingDue:"Nothing due",tasks:"Tasks",lastPerformed:"Last performed",interval:"Interval",hoursRemaining:"{{hours}}h remaining",hoursOverdue:"{{hours}}h overdue",markDone:"Mark as Done",performMaintenance:"Perform Maintenance",history:"History",noHistory:"No maintenance history",editPrintHours:"Edit Print Hours",currentHours:"Current Hours",types:{lubricateRails:"Lubricate Linear Rails",cleanNozzle:"Clean Nozzle/Hotend",checkBelts:"Check Belt Tension",cleanBuildPlate:"Clean Build Plate",checkExtruder:"Check Extruder Gears",checkCooling:"Check Cooling Fans",generalInspection:"General Inspection"}},settings:{title:"Settings",general:"General",appearance:"Appearance",notifications:"Notifications",smartPlugs:"Smart Plugs",spoolman:"Spoolman",updates:"Updates",language:"Language",languageDescription:"Select your preferred language",theme:"Theme",themeLight:"Light",themeDark:"Dark",themeSystem:"System",defaultView:"Default View",defaultViewDescription:"Page to show when opening the app",checkForUpdates:"Check for Updates",autoUpdate:"Auto Update",currentVersion:"Current Version",latestVersion:"Latest Version",upToDate:"You are up to date",updateAvailable:"Update available",notificationLanguage:"Notification Language",notificationLanguageDescription:"Language for push notifications",notificationProviders:"Notification Providers",addProvider:"Add Provider",editProvider:"Edit Provider",providerType:"Provider Type",testNotification:"Test Notification",testSuccess:"Test notification sent successfully",testFailed:"Failed to send test notification",quietHours:"Quiet Hours",quietHoursDescription:"Do not disturb during these hours",quietHoursStart:"Start",quietHoursEnd:"End",events:{title:"Notification Events",printStart:"Print Started",printComplete:"Print Completed",printFailed:"Print Failed",printStopped:"Print Stopped",printProgress:"Progress Milestones",printProgressDescription:"Notify at 25%, 50%, 75%",printerOffline:"Printer Offline",printerError:"Printer Error",filamentLow:"Low Filament",maintenanceDue:"Maintenance Due",maintenanceDueDescription:"Notify when maintenance is needed"},smartPlug:{title:"Smart Plugs",add:"Add Smart Plug",edit:"Edit Smart Plug",name:"Name",ipAddress:"IP Address",linkedPrinter:"Linked Printer",autoOn:"Auto Power On",autoOnDescription:"Turn on when print starts",autoOff:"Auto Power Off",autoOffDescription:"Turn off after print completes",offDelay:"Off Delay",offDelayMinutes:"Minutes after print",offDelayTemp:"When nozzle below temperature",currentState:"Current State",turnOn:"Turn On",turnOff:"Turn Off"},spoolmanEnabled:"Enable Spoolman Integration",spoolmanUrl:"Spoolman URL",spoolmanConnected:"Connected",spoolmanDisconnected:"Disconnected"},notification:{printStarted:{title:"Print Started",body:"{{printer}}: {{filename}} has started printing"},printCompleted:{title:"Print Completed",body:"{{printer}}: {{filename}} completed successfully"},printFailed:{title:"Print Failed",body:"{{printer}}: {{filename}} has failed"},printStopped:{title:"Print Stopped",body:"{{printer}}: {{filename}} was stopped"},printProgress:{title:"Print Progress",body:"{{printer}}: {{filename}} is {{percent}}% complete"},printerOffline:{title:"Printer Offline",body:"{{printer}} is offline"},printerError:{title:"Printer Error",body:"{{printer}}: {{error}}"},filamentLow:{title:"Low Filament",body:"{{printer}}: Filament is running low"},maintenanceDue:{title:"Maintenance Due",body:"{{printer}}: {{items}} need attention"}},errors:{generic:"Something went wrong",networkError:"Network error. Please check your connection.",notFound:"Not found",unauthorized:"Unauthorized",serverError:"Server error",validationError:"Please check your input",printerConnectionFailed:"Failed to connect to printer",saveFailed:"Failed to save changes",deleteFailed:"Failed to delete",loadFailed:"Failed to load data"},confirm:{delete:"Are you sure you want to delete this?",unsavedChanges:"You have unsaved changes. Are you sure you want to leave?",clearQueue:"Are you sure you want to clear the queue?"}},Yne={nav:{printers:"Drucker",control:"Steuerung",archives:"Archiv",queue:"Warteschlange",stats:"Statistiken",profiles:"Profile",maintenance:"Wartung",settings:"Einstellungen",collapseSidebar:"Seitenleiste einklappen",expandSidebar:"Seitenleiste ausklappen",update:"Update",updateAvailable:"Update verfügbar: v{{version}}",viewOnGithub:"Auf GitHub ansehen",keyboardShortcuts:"Tastaturkürzel (?)",switchToLight:"Zum hellen Modus wechseln",switchToDark:"Zum dunklen Modus wechseln"},common:{save:"Speichern",cancel:"Abbrechen",delete:"Löschen",edit:"Bearbeiten",add:"Hinzufügen",close:"Schließen",confirm:"Bestätigen",loading:"Lädt...",error:"Fehler",success:"Erfolg",warning:"Warnung",enabled:"Aktiviert",disabled:"Deaktiviert",yes:"Ja",no:"Nein",on:"An",off:"Aus",all:"Alle",none:"Keine",search:"Suchen",filter:"Filtern",sort:"Sortieren",refresh:"Aktualisieren",download:"Herunterladen",upload:"Hochladen",actions:"Aktionen",status:"Status",name:"Name",description:"Beschreibung",date:"Datum",time:"Zeit",hours:"Stunden",minutes:"Minuten",seconds:"Sekunden",noPrinters:"Keine Drucker konfiguriert",noData:"Keine Daten verfügbar",required:"Erforderlich",optional:"Optional"},printers:{title:"Drucker",addPrinter:"Drucker hinzufügen",editPrinter:"Drucker bearbeiten",deletePrinter:"Drucker löschen",printerName:"Druckername",serialNumber:"Seriennummer",ipAddress:"IP-Adresse",accessCode:"Zugangscode",model:"Modell",nozzleCount:"Düsenanzahl",autoArchive:"Automatische Archivierung",status:{idle:"Bereit",printing:"Druckt",paused:"Pausiert",offline:"Offline",error:"Fehler",finished:"Fertig",unknown:"Unbekannt"},temperatures:{nozzle:"Düse",bed:"Druckbett",chamber:"Kammer"},progress:"{{percent}}% abgeschlossen",timeRemaining:"Noch {{time}}",deleteConfirm:'Möchten Sie "{{name}}" wirklich löschen?',maintenanceOk:"Wartung OK",maintenanceWarning:"{{count}} Warnung",maintenanceWarning_plural:"{{count}} Warnungen",maintenanceDue:"{{count}} fällig",maintenanceDue_plural:"{{count}} fällig"},archives:{title:"Druckarchiv",searchPlaceholder:"Archiv durchsuchen...",filterByPrinter:"Nach Drucker filtern",filterByStatus:"Nach Status filtern",sortBy:"Sortieren nach",sortNewest:"Neueste zuerst",sortOldest:"Älteste zuerst",sortName:"Name",sortDuration:"Dauer",noArchives:"Keine Archive gefunden",printTime:"Druckzeit",filamentUsed:"Verbrauchtes Filament",cost:"Kosten",reprint:"Erneut drucken",preview:"Vorschau",deleteArchive:"Archiv löschen",deleteConfirm:"Möchten Sie dieses Archiv wirklich löschen?",favorite:"Favorit",unfavorite:"Aus Favoriten entfernen",viewDetails:"Details anzeigen",status:{completed:"Abgeschlossen",failed:"Fehlgeschlagen",stopped:"Gestoppt"}},queue:{title:"Druckwarteschlange",addToQueue:"Zur Warteschlange hinzufügen",clearQueue:"Warteschlange leeren",emptyQueue:"Warteschlange ist leer",position:"Position",scheduledTime:"Geplante Zeit",moveUp:"Nach oben",moveDown:"Nach unten",remove:"Entfernen",startNow:"Jetzt starten",status:{pending:"Ausstehend",printing:"Druckt",completed:"Abgeschlossen",failed:"Fehlgeschlagen",cancelled:"Abgebrochen"}},stats:{title:"Statistiken",overview:"Übersicht",totalPrints:"Gesamtdrucke",successRate:"Erfolgsrate",totalPrintTime:"Gesamtdruckzeit",totalFilament:"Gesamtverbrauch Filament",totalCost:"Gesamtkosten",averagePrintTime:"Durchschnittliche Druckzeit",printsPerDay:"Drucke pro Tag",byPrinter:"Nach Drucker",byMaterial:"Nach Material",byMonth:"Nach Monat",last7Days:"Letzte 7 Tage",last30Days:"Letzte 30 Tage",last90Days:"Letzte 90 Tage",allTime:"Gesamt"},profiles:{title:"Filament-Profile",addProfile:"Profil hinzufügen",editProfile:"Profil bearbeiten",deleteProfile:"Profil löschen",material:"Material",brand:"Marke",color:"Farbe",diameter:"Durchmesser",density:"Dichte",costPerKg:"Kosten pro kg",spoolWeight:"Spulengewicht",noProfiles:"Keine Profile konfiguriert",deleteConfirm:"Möchten Sie dieses Profil wirklich löschen?"},maintenance:{title:"Wartung",overview:"Übersicht",allOk:"Alle Wartungen aktuell",dueCount:"{{count}} Aufgabe fällig",dueCount_plural:"{{count}} Aufgaben fällig",warningCount:"{{count}} Warnung",warningCount_plural:"{{count}} Warnungen",totalPrintTime:"Gesamtdruckzeit",nextMaintenance:"Nächste Wartung",nothingDue:"Nichts fällig",tasks:"Aufgaben",lastPerformed:"Zuletzt durchgeführt",interval:"Intervall",hoursRemaining:"{{hours}}h verbleibend",hoursOverdue:"{{hours}}h überfällig",markDone:"Als erledigt markieren",performMaintenance:"Wartung durchführen",history:"Verlauf",noHistory:"Kein Wartungsverlauf",editPrintHours:"Druckstunden bearbeiten",currentHours:"Aktuelle Stunden",types:{lubricateRails:"Linearschienen schmieren",cleanNozzle:"Düse/Hotend reinigen",checkBelts:"Riemenspannung prüfen",cleanBuildPlate:"Druckbett reinigen",checkExtruder:"Extruderzahnräder prüfen",checkCooling:"Kühlungslüfter prüfen",generalInspection:"Allgemeine Inspektion"}},settings:{title:"Einstellungen",general:"Allgemein",appearance:"Erscheinungsbild",notifications:"Benachrichtigungen",smartPlugs:"Smart Plugs",spoolman:"Spoolman",updates:"Updates",language:"Sprache",languageDescription:"Wählen Sie Ihre bevorzugte Sprache",theme:"Design",themeLight:"Hell",themeDark:"Dunkel",themeSystem:"System",defaultView:"Standardansicht",defaultViewDescription:"Seite, die beim Öffnen der App angezeigt wird",checkForUpdates:"Nach Updates suchen",autoUpdate:"Automatische Updates",currentVersion:"Aktuelle Version",latestVersion:"Neueste Version",upToDate:"Sie sind auf dem neuesten Stand",updateAvailable:"Update verfügbar",notificationLanguage:"Benachrichtigungssprache",notificationLanguageDescription:"Sprache für Push-Benachrichtigungen",notificationProviders:"Benachrichtigungsanbieter",addProvider:"Anbieter hinzufügen",editProvider:"Anbieter bearbeiten",providerType:"Anbietertyp",testNotification:"Testbenachrichtigung",testSuccess:"Testbenachrichtigung erfolgreich gesendet",testFailed:"Testbenachrichtigung konnte nicht gesendet werden",quietHours:"Ruhezeiten",quietHoursDescription:"Keine Störungen während dieser Zeiten",quietHoursStart:"Beginn",quietHoursEnd:"Ende",events:{title:"Benachrichtigungsereignisse",printStart:"Druck gestartet",printComplete:"Druck abgeschlossen",printFailed:"Druck fehlgeschlagen",printStopped:"Druck gestoppt",printProgress:"Fortschrittsmeldungen",printProgressDescription:"Bei 25%, 50%, 75% benachrichtigen",printerOffline:"Drucker offline",printerError:"Druckerfehler",filamentLow:"Filament niedrig",maintenanceDue:"Wartung fällig",maintenanceDueDescription:"Benachrichtigen, wenn Wartung erforderlich"},smartPlug:{title:"Smart Plugs",add:"Smart Plug hinzufügen",edit:"Smart Plug bearbeiten",name:"Name",ipAddress:"IP-Adresse",linkedPrinter:"Verknüpfter Drucker",autoOn:"Automatisch einschalten",autoOnDescription:"Einschalten beim Druckstart",autoOff:"Automatisch ausschalten",autoOffDescription:"Ausschalten nach Druckende",offDelay:"Ausschaltverzögerung",offDelayMinutes:"Minuten nach Druck",offDelayTemp:"Wenn Düse unter Temperatur",currentState:"Aktueller Status",turnOn:"Einschalten",turnOff:"Ausschalten"},spoolmanEnabled:"Spoolman-Integration aktivieren",spoolmanUrl:"Spoolman URL",spoolmanConnected:"Verbunden",spoolmanDisconnected:"Nicht verbunden"},notification:{printStarted:{title:"Druck gestartet",body:"{{printer}}: {{filename}} wird gedruckt"},printCompleted:{title:"Druck abgeschlossen",body:"{{printer}}: {{filename}} erfolgreich abgeschlossen"},printFailed:{title:"Druck fehlgeschlagen",body:"{{printer}}: {{filename}} ist fehlgeschlagen"},printStopped:{title:"Druck gestoppt",body:"{{printer}}: {{filename}} wurde gestoppt"},printProgress:{title:"Druckfortschritt",body:"{{printer}}: {{filename}} ist zu {{percent}}% abgeschlossen"},printerOffline:{title:"Drucker offline",body:"{{printer}} ist offline"},printerError:{title:"Druckerfehler",body:"{{printer}}: {{error}}"},filamentLow:{title:"Filament niedrig",body:"{{printer}}: Filament geht zur Neige"},maintenanceDue:{title:"Wartung fällig",body:"{{printer}}: {{items}} benötigen Aufmerksamkeit"}},errors:{generic:"Etwas ist schiefgelaufen",networkError:"Netzwerkfehler. Bitte überprüfen Sie Ihre Verbindung.",notFound:"Nicht gefunden",unauthorized:"Nicht autorisiert",serverError:"Serverfehler",validationError:"Bitte überprüfen Sie Ihre Eingabe",printerConnectionFailed:"Verbindung zum Drucker fehlgeschlagen",saveFailed:"Speichern fehlgeschlagen",deleteFailed:"Löschen fehlgeschlagen",loadFailed:"Laden der Daten fehlgeschlagen"},confirm:{delete:"Möchten Sie dies wirklich löschen?",unsavedChanges:"Sie haben ungespeicherte Änderungen. Möchten Sie wirklich verlassen?",clearQueue:"Möchten Sie die Warteschlange wirklich leeren?"}},Zne={en:{translation:Kne},de:{translation:Yne}};wa.use(dG).use(Tne).init({resources:Zne,fallbackLng:"en",supportedLngs:["en","de"],detection:{order:["localStorage","navigator","htmlTag"],lookupLocalStorage:"bambutrack_language",caches:["localStorage"]},interpolation:{escapeValue:!1},react:{useSuspense:!1}});const p4=[{code:"en",name:"English",nativeName:"English"},{code:"de",name:"German",nativeName:"Deutsch"}];var m4="popstate";function Qne(t={}){function e(i,r){let{pathname:a,search:s,hash:o}=i.location;return uN("",{pathname:a,search:s,hash:o},r.state&&r.state.usr||null,r.state&&r.state.key||"default")}function n(i,r){return typeof r=="string"?r:P0(r)}return eie(e,n,null,t)}function mi(t,e){if(t===!1||t===null||typeof t>"u")throw new Error(e)}function Ws(t,e){if(!t){typeof console<"u"&&console.warn(e);try{throw new Error(e)}catch{}}}function Jne(){return Math.random().toString(36).substring(2,10)}function g4(t,e){return{usr:t.state,key:t.key,idx:e}}function uN(t,e,n=null,i){return{pathname:typeof t=="string"?t:t.pathname,search:"",hash:"",...typeof e=="string"?dm(e):e,state:n,key:e&&e.key||i||Jne()}}function P0({pathname:t="/",search:e="",hash:n=""}){return e&&e!=="?"&&(t+=e.charAt(0)==="?"?e:"?"+e),n&&n!=="#"&&(t+=n.charAt(0)==="#"?n:"#"+n),t}function dm(t){let e={};if(t){let n=t.indexOf("#");n>=0&&(e.hash=t.substring(n),t=t.substring(0,n));let i=t.indexOf("?");i>=0&&(e.search=t.substring(i),t=t.substring(0,i)),t&&(e.pathname=t)}return e}function eie(t,e,n,i={}){let{window:r=document.defaultView,v5Compat:a=!1}=i,s=r.history,o="POP",l=null,c=u();c==null&&(c=0,s.replaceState({...s.state,idx:c},""));function u(){return(s.state||{idx:null}).idx}function f(){o="POP";let v=u(),x=v==null?null:v-c;c=v,l&&l({action:o,location:_.location,delta:x})}function p(v,x){o="PUSH";let M=uN(_.location,v,x);c=u()+1;let w=g4(M,c),E=_.createHref(M);try{s.pushState(w,"",E)}catch(T){if(T instanceof DOMException&&T.name==="DataCloneError")throw T;r.location.assign(E)}a&&l&&l({action:o,location:_.location,delta:1})}function m(v,x){o="REPLACE";let M=uN(_.location,v,x);c=u();let w=g4(M,c),E=_.createHref(M);s.replaceState(w,"",E),a&&l&&l({action:o,location:_.location,delta:0})}function y(v){return tie(v)}let _={get action(){return o},get location(){return t(r,s)},listen(v){if(l)throw new Error("A history only accepts one active listener");return r.addEventListener(m4,f),l=v,()=>{r.removeEventListener(m4,f),l=null}},createHref(v){return e(r,v)},createURL:y,encodeLocation(v){let x=y(v);return{pathname:x.pathname,search:x.search,hash:x.hash}},push:p,replace:m,go(v){return s.go(v)}};return _}function tie(t,e=!1){let n="http://localhost";typeof window<"u"&&(n=window.location.origin!=="null"?window.location.origin:window.location.href),mi(n,"No window.location.(origin|href) available to create URL");let i=typeof t=="string"?t:P0(t);return i=i.replace(/ $/,"%20"),!e&&i.startsWith("//")&&(i=n+i),new URL(i,n)}function fG(t,e,n="/"){return nie(t,e,n,!1)}function nie(t,e,n,i){let r=typeof e=="string"?dm(e):e,a=lc(r.pathname||"/",n);if(a==null)return null;let s=hG(t);iie(s);let o=null;for(let l=0;o==null&&l{let u={relativePath:c===void 0?s.path||"":c,caseSensitive:s.caseSensitive===!0,childrenIndex:o,route:s};if(u.relativePath.startsWith("/")){if(!u.relativePath.startsWith(i)&&l)return;mi(u.relativePath.startsWith(i),`Absolute route path "${u.relativePath}" nested under path "${i}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),u.relativePath=u.relativePath.slice(i.length)}let f=ec([i,u.relativePath]),p=n.concat(u);s.children&&s.children.length>0&&(mi(s.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${f}".`),hG(s.children,e,p,f,l)),!(s.path==null&&!s.index)&&e.push({path:f,score:uie(f,s.index),routesMeta:p})};return t.forEach((s,o)=>{if(s.path===""||!s.path?.includes("?"))a(s,o);else for(let l of pG(s.path))a(s,o,!0,l)}),e}function pG(t){let e=t.split("/");if(e.length===0)return[];let[n,...i]=e,r=n.endsWith("?"),a=n.replace(/\?$/,"");if(i.length===0)return r?[a,""]:[a];let s=pG(i.join("/")),o=[];return o.push(...s.map(l=>l===""?a:[a,l].join("/"))),r&&o.push(...s),o.map(l=>t.startsWith("/")&&l===""?"/":l)}function iie(t){t.sort((e,n)=>e.score!==n.score?n.score-e.score:die(e.routesMeta.map(i=>i.childrenIndex),n.routesMeta.map(i=>i.childrenIndex)))}var rie=/^:[\w-]+$/,aie=3,sie=2,oie=1,lie=10,cie=-2,x4=t=>t==="*";function uie(t,e){let n=t.split("/"),i=n.length;return n.some(x4)&&(i+=cie),e&&(i+=sie),n.filter(r=>!x4(r)).reduce((r,a)=>r+(rie.test(a)?aie:a===""?oie:lie),i)}function die(t,e){return t.length===e.length&&t.slice(0,-1).every((i,r)=>i===e[r])?t[t.length-1]-e[e.length-1]:0}function fie(t,e,n=!1){let{routesMeta:i}=t,r={},a="/",s=[];for(let o=0;o{if(u==="*"){let y=o[p]||"";s=a.slice(0,a.length-y.length).replace(/(.)\/+$/,"$1")}const m=o[p];return f&&!m?c[u]=void 0:c[u]=(m||"").replace(/%2F/g,"/"),c},{}),pathname:a,pathnameBase:s,pattern:t}}function hie(t,e=!1,n=!0){Ws(t==="*"||!t.endsWith("*")||t.endsWith("/*"),`Route path "${t}" will be treated as if it were "${t.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${t.replace(/\*$/,"/*")}".`);let i=[],r="^"+t.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(s,o,l)=>(i.push({paramName:o,isOptional:l!=null}),l?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return t.endsWith("*")?(i.push({paramName:"*"}),r+=t==="*"||t==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?r+="\\/*$":t!==""&&t!=="/"&&(r+="(?:(?=\\/|$))"),[new RegExp(r,e?void 0:"i"),i]}function pie(t){try{return t.split("/").map(e=>decodeURIComponent(e).replace(/\//g,"%2F")).join("/")}catch(e){return Ws(!1,`The URL path "${t}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${e}).`),t}}function lc(t,e){if(e==="/")return t;if(!t.toLowerCase().startsWith(e.toLowerCase()))return null;let n=e.endsWith("/")?e.length-1:e.length,i=t.charAt(n);return i&&i!=="/"?null:t.slice(n)||"/"}var mie=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,gie=t=>mie.test(t);function xie(t,e="/"){let{pathname:n,search:i="",hash:r=""}=typeof t=="string"?dm(t):t,a;if(n)if(gie(n))a=n;else{if(n.includes("//")){let s=n;n=n.replace(/\/\/+/g,"/"),Ws(!1,`Pathnames cannot have embedded double slashes - normalizing ${s} -> ${n}`)}n.startsWith("/")?a=v4(n.substring(1),"/"):a=v4(n,e)}else a=e;return{pathname:a,search:bie(i),hash:_ie(r)}}function v4(t,e){let n=e.replace(/\/+$/,"").split("/");return t.split("/").forEach(r=>{r===".."?n.length>1&&n.pop():r!=="."&&n.push(r)}),n.length>1?n.join("/"):"/"}function EA(t,e,n,i){return`Cannot include a '${t}' character in a manually specified \`to.${e}\` field [${JSON.stringify(i)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function vie(t){return t.filter((e,n)=>n===0||e.route.path&&e.route.path.length>0)}function mG(t){let e=vie(t);return e.map((n,i)=>i===e.length-1?n.pathname:n.pathnameBase)}function gG(t,e,n,i=!1){let r;typeof t=="string"?r=dm(t):(r={...t},mi(!r.pathname||!r.pathname.includes("?"),EA("?","pathname","search",r)),mi(!r.pathname||!r.pathname.includes("#"),EA("#","pathname","hash",r)),mi(!r.search||!r.search.includes("#"),EA("#","search","hash",r)));let a=t===""||r.pathname==="",s=a?"/":r.pathname,o;if(s==null)o=n;else{let f=e.length-1;if(!i&&s.startsWith("..")){let p=s.split("/");for(;p[0]==="..";)p.shift(),f-=1;r.pathname=p.join("/")}o=f>=0?e[f]:"/"}let l=xie(r,o),c=s&&s!=="/"&&s.endsWith("/"),u=(a||s===".")&&n.endsWith("/");return!l.pathname.endsWith("/")&&(c||u)&&(l.pathname+="/"),l}var ec=t=>t.join("/").replace(/\/\/+/g,"/"),yie=t=>t.replace(/\/+$/,"").replace(/^\/*/,"/"),bie=t=>!t||t==="?"?"":t.startsWith("?")?t:"?"+t,_ie=t=>!t||t==="#"?"":t.startsWith("#")?t:"#"+t;function Sie(t){return t!=null&&typeof t.status=="number"&&typeof t.statusText=="string"&&typeof t.internal=="boolean"&&"data"in t}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var xG=["POST","PUT","PATCH","DELETE"];new Set(xG);var wie=["GET",...xG];new Set(wie);var fm=A.createContext(null);fm.displayName="DataRouter";var jS=A.createContext(null);jS.displayName="DataRouterState";A.createContext(!1);var vG=A.createContext({isTransitioning:!1});vG.displayName="ViewTransition";var Mie=A.createContext(new Map);Mie.displayName="Fetchers";var Eie=A.createContext(null);Eie.displayName="Await";var il=A.createContext(null);il.displayName="Navigation";var wx=A.createContext(null);wx.displayName="Location";var rl=A.createContext({outlet:null,matches:[],isDataRoute:!1});rl.displayName="Route";var gP=A.createContext(null);gP.displayName="RouteError";function Aie(t,{relative:e}={}){mi(Mx(),"useHref() may be used only in the context of a component.");let{basename:n,navigator:i}=A.useContext(il),{hash:r,pathname:a,search:s}=Ex(t,{relative:e}),o=a;return n!=="/"&&(o=a==="/"?n:ec([n,a])),i.createHref({pathname:o,search:s,hash:r})}function Mx(){return A.useContext(wx)!=null}function Sc(){return mi(Mx(),"useLocation() may be used only in the context of a component."),A.useContext(wx).location}var yG="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function bG(t){A.useContext(il).static||A.useLayoutEffect(t)}function FS(){let{isDataRoute:t}=A.useContext(rl);return t?Bie():Tie()}function Tie(){mi(Mx(),"useNavigate() may be used only in the context of a component.");let t=A.useContext(fm),{basename:e,navigator:n}=A.useContext(il),{matches:i}=A.useContext(rl),{pathname:r}=Sc(),a=JSON.stringify(mG(i)),s=A.useRef(!1);return bG(()=>{s.current=!0}),A.useCallback((l,c={})=>{if(Ws(s.current,yG),!s.current)return;if(typeof l=="number"){n.go(l);return}let u=gG(l,JSON.parse(a),r,c.relative==="path");t==null&&e!=="/"&&(u.pathname=u.pathname==="/"?e:ec([e,u.pathname])),(c.replace?n.replace:n.push)(u,c.state,c)},[e,n,a,r,t])}var Cie=A.createContext(null);function Nie(t){let e=A.useContext(rl).outlet;return A.useMemo(()=>e&&A.createElement(Cie.Provider,{value:t},e),[e,t])}function Ex(t,{relative:e}={}){let{matches:n}=A.useContext(rl),{pathname:i}=Sc(),r=JSON.stringify(mG(n));return A.useMemo(()=>gG(t,JSON.parse(r),i,e==="path"),[t,r,i,e])}function Rie(t,e){return _G(t,e)}function _G(t,e,n,i,r){mi(Mx(),"useRoutes() may be used only in the context of a component.");let{navigator:a}=A.useContext(il),{matches:s}=A.useContext(rl),o=s[s.length-1],l=o?o.params:{},c=o?o.pathname:"/",u=o?o.pathnameBase:"/",f=o&&o.route;{let M=f&&f.path||"";SG(c,!f||M.endsWith("*")||M.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${c}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. -Please change the parent to .`)}let p=Sc(),g;if(e){let M=typeof e=="string"?mm(e):e;mi(u==="/"||M.pathname?.startsWith(u),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${u}" but pathname "${M.pathname}" was given in the \`location\` prop.`),g=M}else g=p;let y=g.pathname||"/",_=y;if(u!=="/"){let M=u.replace(/^\//,"").split("/");_="/"+y.replace(/^\//,"").split("/").slice(M.length).join("/")}let v=hG(t,{pathname:_});Ws(f||v!=null,`No routes matched location "${g.pathname}${g.search}${g.hash}" `),Ws(v==null||v[v.length-1].route.element!==void 0||v[v.length-1].route.Component!==void 0||v[v.length-1].route.lazy!==void 0,`Matched leaf route at location "${g.pathname}${g.search}${g.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let x=Uie(v&&v.map(M=>Object.assign({},M,{params:Object.assign({},l,M.params),pathname:tc([u,a.encodeLocation?a.encodeLocation(M.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:M.pathname]),pathnameBase:M.pathnameBase==="/"?u:tc([u,a.encodeLocation?a.encodeLocation(M.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:M.pathnameBase])})),s,n,i,r);return e&&x?A.createElement(Tx.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...g},navigationType:"POP"}},x):x}function Die(){let t=Hie(),e=Mie(t)?`${t.status} ${t.statusText}`:t instanceof Error?t.message:JSON.stringify(t),n=t instanceof Error?t.stack:null,i="rgba(200,200,200, 0.5)",r={padding:"0.5rem",backgroundColor:i},a={padding:"2px 4px",backgroundColor:i},s=null;return console.error("Error handled by React Router default ErrorBoundary:",t),s=A.createElement(A.Fragment,null,A.createElement("p",null,"💿 Hey developer 👋"),A.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",A.createElement("code",{style:a},"ErrorBoundary")," or"," ",A.createElement("code",{style:a},"errorElement")," prop on your route.")),A.createElement(A.Fragment,null,A.createElement("h2",null,"Unexpected Application Error!"),A.createElement("h3",{style:{fontStyle:"italic"}},e),n?A.createElement("pre",{style:r},n):null,s)}var Oie=A.createElement(Die,null),Lie=class extends A.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,e){return e.location!==t.location||e.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:e.error,location:e.location,revalidation:t.revalidation||e.revalidation}}componentDidCatch(t,e){this.props.onError?this.props.onError(t,e):console.error("React Router caught the following error during render",t)}render(){return this.state.error!==void 0?A.createElement(al.Provider,{value:this.props.routeContext},A.createElement(yP.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function Iie({routeContext:t,match:e,children:n}){let i=A.useContext(gm);return i&&i.static&&i.staticContext&&(e.route.errorElement||e.route.ErrorBoundary)&&(i.staticContext._deepestRenderedBoundaryId=e.route.id),A.createElement(al.Provider,{value:t},n)}function Uie(t,e=[],n=null,i=null,r=null){if(t==null){if(!n)return null;if(n.errors)t=n.matches;else if(e.length===0&&!n.initialized&&n.matches.length>0)t=n.matches;else return null}let a=t,s=n?.errors;if(s!=null){let u=a.findIndex(f=>f.route.id&&s?.[f.route.id]!==void 0);mi(u>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(s).join(",")}`),a=a.slice(0,Math.min(a.length,u+1))}let o=!1,l=-1;if(n)for(let u=0;u=0?a=a.slice(0,l+1):a=[a[0]];break}}}let c=n&&i?(u,f)=>{i(u,{location:n.location,params:n.matches?.[0]?.params??{},errorInfo:f})}:void 0;return a.reduceRight((u,f,p)=>{let g,y=!1,_=null,v=null;n&&(g=s&&f.route.id?s[f.route.id]:void 0,_=f.route.errorElement||Oie,o&&(l<0&&p===0?(wG("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),y=!0,v=null):l===p&&(y=!0,v=f.route.hydrateFallbackElement||null)));let x=e.concat(a.slice(0,p+1)),M=()=>{let w;return g?w=_:y?w=v:f.route.Component?w=A.createElement(f.route.Component,null):f.route.element?w=f.route.element:w=u,A.createElement(Iie,{match:f,routeContext:{outlet:u,matches:x,isDataRoute:n!=null},children:w})};return n&&(f.route.ErrorBoundary||f.route.errorElement||p===0)?A.createElement(Lie,{location:n.location,revalidation:n.revalidation,component:_,error:g,children:M(),routeContext:{outlet:null,matches:x,isDataRoute:!0},onError:c}):M()},null)}function bP(t){return`${t} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function jie(t){let e=A.useContext(gm);return mi(e,bP(t)),e}function Fie(t){let e=A.useContext(BS);return mi(e,bP(t)),e}function zie(t){let e=A.useContext(al);return mi(e,bP(t)),e}function _P(t){let e=zie(t),n=e.matches[e.matches.length-1];return mi(n.route.id,`${t} can only be used on routes that contain a unique "id"`),n.route.id}function Bie(){return _P("useRouteId")}function Hie(){let t=A.useContext(yP),e=Fie("useRouteError"),n=_P("useRouteError");return t!==void 0?t:e.errors?.[n]}function Vie(){let{router:t}=jie("useNavigate"),e=_P("useNavigate"),n=A.useRef(!1);return _G(()=>{n.current=!0}),A.useCallback(async(r,a={})=>{Ws(n.current,bG),n.current&&(typeof r=="number"?t.navigate(r):await t.navigate(r,{fromRouteId:e,...a}))},[t,e])}var b4={};function wG(t,e,n){!e&&!b4[t]&&(b4[t]=!0,Ws(!1,n))}A.memo($ie);function $ie({routes:t,future:e,state:n,unstable_onError:i}){return SG(t,void 0,n,i,e)}function Gie(t){return Pie(t.context)}function Lo(t){mi(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function Wie({basename:t="/",children:e=null,location:n,navigationType:i="POP",navigator:r,static:a=!1}){mi(!Cx(),"You cannot render a inside another . You should never have more than one in your app.");let s=t.replace(/^\/*/,"/"),o=A.useMemo(()=>({basename:s,navigator:r,static:a,future:{}}),[s,r,a]);typeof n=="string"&&(n=mm(n));let{pathname:l="/",search:c="",hash:u="",state:f=null,key:p="default"}=n,g=A.useMemo(()=>{let y=cc(l,s);return y==null?null:{location:{pathname:y,search:c,hash:u,state:f,key:p},navigationType:i}},[s,l,c,u,f,p,i]);return Ws(g!=null,` is not able to match the URL "${l}${c}${u}" because it does not start with the basename, so the won't render anything.`),g==null?null:A.createElement(rl.Provider,{value:o},A.createElement(Tx.Provider,{children:e,value:g}))}function qie({children:t,location:e}){return kie(pN(t),e)}function pN(t,e=[]){let n=[];return A.Children.forEach(t,(i,r)=>{if(!A.isValidElement(i))return;let a=[...e,r];if(i.type===A.Fragment){n.push.apply(n,pN(i.props.children,a));return}mi(i.type===Lo,`[${typeof i.type=="string"?i.type:i.type.name}] is not a component. All component children of must be a or `),mi(!i.props.index||!i.props.children,"An index route cannot have child routes.");let s={id:i.props.id||a.join("-"),caseSensitive:i.props.caseSensitive,element:i.props.element,Component:i.props.Component,index:i.props.index,path:i.props.path,middleware:i.props.middleware,loader:i.props.loader,action:i.props.action,hydrateFallbackElement:i.props.hydrateFallbackElement,HydrateFallback:i.props.HydrateFallback,errorElement:i.props.errorElement,ErrorBoundary:i.props.ErrorBoundary,hasErrorBoundary:i.props.hasErrorBoundary===!0||i.props.ErrorBoundary!=null||i.props.errorElement!=null,shouldRevalidate:i.props.shouldRevalidate,handle:i.props.handle,lazy:i.props.lazy};i.props.children&&(s.children=pN(i.props.children,a)),n.push(s)}),n}var s_="get",o_="application/x-www-form-urlencoded";function VS(t){return t!=null&&typeof t.tagName=="string"}function Xie(t){return VS(t)&&t.tagName.toLowerCase()==="button"}function Kie(t){return VS(t)&&t.tagName.toLowerCase()==="form"}function Yie(t){return VS(t)&&t.tagName.toLowerCase()==="input"}function Zie(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}function Qie(t,e){return t.button===0&&(!e||e==="_self")&&!Zie(t)}function mN(t=""){return new URLSearchParams(typeof t=="string"||Array.isArray(t)||t instanceof URLSearchParams?t:Object.keys(t).reduce((e,n)=>{let i=t[n];return e.concat(Array.isArray(i)?i.map(r=>[n,r]):[[n,i]])},[]))}function Jie(t,e){let n=mN(t);return e&&e.forEach((i,r)=>{n.has(r)||e.getAll(r).forEach(a=>{n.append(r,a)})}),n}var Cy=null;function ere(){if(Cy===null)try{new FormData(document.createElement("form"),0),Cy=!1}catch{Cy=!0}return Cy}var tre=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function CA(t){return t!=null&&!tre.has(t)?(Ws(!1,`"${t}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${o_}"`),null):t}function nre(t,e){let n,i,r,a,s;if(Kie(t)){let o=t.getAttribute("action");i=o?cc(o,e):null,n=t.getAttribute("method")||s_,r=CA(t.getAttribute("enctype"))||o_,a=new FormData(t)}else if(Xie(t)||Yie(t)&&(t.type==="submit"||t.type==="image")){let o=t.form;if(o==null)throw new Error('Cannot submit a