From 6cdceccde798a8dfbfe7e9ad5feb20c016a4dde5 Mon Sep 17 00:00:00 2001 From: Putoo <290555932@qq.com> Date: Tue, 21 Apr 2026 16:54:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DesignTimeBuild/.dtbcache.v2 | Bin 0 -> 325735 bytes ...b71de6c1-fc3e-4629-87de-9d94f19b3022.vsidx | Bin 0 -> 36822 bytes .vs/Kx.SeaTime.slnx/v18/.futdcache.v2 | Bin 0 -> 709 bytes .vs/Kx.SeaTime.slnx/v18/.suo | Bin 0 -> 18944 bytes .../v18/DocumentLayout.backup.json | 27 + .vs/Kx.SeaTime.slnx/v18/DocumentLayout.json | 27 + .../kx.seatime.metadata.v10.bin | Bin 0 -> 3684 bytes .../kx.seatime.projects.v10.bin | Bin 0 -> 136492 bytes .../kx.seatime.strings.v10.bin | Bin 0 -> 190870 bytes Kx.SeaTime.slnx | 7 + .../Application.Domain.Entity.csproj | 13 + Service/Application.Domain.Entity/Class1.cs | 7 + .../Application.Domain.csproj | 13 + Service/Application.Domain/Class1.cs | 7 + .../RequestParms/Login/LoginParms.cs | 12 + .../Application.Service.Pub.csproj | 19 + Service/Application.Service.Pub/Class1.cs | 7 + .../Application.Service.Tool.csproj | 9 + Service/Application.Service.Tool/Class1.cs | 7 + .../Application.Web/Application.Web.csproj | 18 + .../Application.Web.csproj.user | 8 + Service/Application.Web/Common/JwtHandle.cs | 40 + Service/Application.Web/Common/StateHelper.cs | 21 + .../Controllers/Login/LoginController.cs | 26 + Service/Application.Web/GlobalUsings.cs | 16 + Service/Application.Web/Plug/Timer/AutoJob.cs | 22 + .../Application.Web/Plug/Timer/JobStart.cs | 68 + .../Plug/Timer/TimerJobManager.cs | 56 + Service/Application.Web/Program.cs | 109 + .../Properties/launchSettings.json | 23 + .../Application.Web/applicationsettings.json | 33 + .../appsettings.Development.json | 8 + Service/Application.Web/appsettings.json | 9 + Web/nuxt.config.ts | 54 + Web/package-lock.json | 11099 ++++++++++++++++ Web/package.json | 24 + Web/src/app.vue | 42 + Web/src/assets/css/style.css | 199 + Web/src/composables/layout.ts | 19 + Web/src/composables/useAuth.ts | 164 + Web/src/extends/cryptoEXTEND.ts | 182 + Web/src/extends/dateEXTEND.ts | 181 + Web/src/extends/requestEXTEND.ts | 356 + Web/src/extends/validateEXTEND.ts | 260 + Web/src/layouts/default.vue | 211 + Web/src/layouts/empty.vue | 17 + Web/src/pages/auth/login.vue | 469 + Web/src/pages/home/index.vue | 438 + Web/src/pages/index.vue | 13 + Web/src/services/commonSERVICE.ts | 209 + Web/src/services/userSERVICE.ts | 105 + Web/src/stores/app.ts | 216 + Web/src/stores/user.ts | 106 + Web/src/types/api.ts | 54 + Web/src/types/common.ts | 63 + Web/src/types/user.ts | 39 + Web/src/utils/base64.ts | 44 + Web/src/utils/regex.ts | 141 + Web/tsconfig.json | 3 + 59 files changed, 15320 insertions(+) create mode 100644 .vs/Kx.SeaTime.slnx/DesignTimeBuild/.dtbcache.v2 create mode 100644 .vs/Kx.SeaTime.slnx/FileContentIndex/b71de6c1-fc3e-4629-87de-9d94f19b3022.vsidx create mode 100644 .vs/Kx.SeaTime.slnx/v18/.futdcache.v2 create mode 100644 .vs/Kx.SeaTime.slnx/v18/.suo create mode 100644 .vs/Kx.SeaTime.slnx/v18/DocumentLayout.backup.json create mode 100644 .vs/Kx.SeaTime.slnx/v18/DocumentLayout.json create mode 100644 .vs/ProjectEvaluation/kx.seatime.metadata.v10.bin create mode 100644 .vs/ProjectEvaluation/kx.seatime.projects.v10.bin create mode 100644 .vs/ProjectEvaluation/kx.seatime.strings.v10.bin create mode 100644 Kx.SeaTime.slnx create mode 100644 Service/Application.Domain.Entity/Application.Domain.Entity.csproj create mode 100644 Service/Application.Domain.Entity/Class1.cs create mode 100644 Service/Application.Domain/Application.Domain.csproj create mode 100644 Service/Application.Domain/Class1.cs create mode 100644 Service/Application.Domain/RequestParms/Login/LoginParms.cs create mode 100644 Service/Application.Service.Pub/Application.Service.Pub.csproj create mode 100644 Service/Application.Service.Pub/Class1.cs create mode 100644 Service/Application.Service.Tool/Application.Service.Tool.csproj create mode 100644 Service/Application.Service.Tool/Class1.cs create mode 100644 Service/Application.Web/Application.Web.csproj create mode 100644 Service/Application.Web/Application.Web.csproj.user create mode 100644 Service/Application.Web/Common/JwtHandle.cs create mode 100644 Service/Application.Web/Common/StateHelper.cs create mode 100644 Service/Application.Web/Controllers/Login/LoginController.cs create mode 100644 Service/Application.Web/GlobalUsings.cs create mode 100644 Service/Application.Web/Plug/Timer/AutoJob.cs create mode 100644 Service/Application.Web/Plug/Timer/JobStart.cs create mode 100644 Service/Application.Web/Plug/Timer/TimerJobManager.cs create mode 100644 Service/Application.Web/Program.cs create mode 100644 Service/Application.Web/Properties/launchSettings.json create mode 100644 Service/Application.Web/applicationsettings.json create mode 100644 Service/Application.Web/appsettings.Development.json create mode 100644 Service/Application.Web/appsettings.json create mode 100644 Web/nuxt.config.ts create mode 100644 Web/package-lock.json create mode 100644 Web/package.json create mode 100644 Web/src/app.vue create mode 100644 Web/src/assets/css/style.css create mode 100644 Web/src/composables/layout.ts create mode 100644 Web/src/composables/useAuth.ts create mode 100644 Web/src/extends/cryptoEXTEND.ts create mode 100644 Web/src/extends/dateEXTEND.ts create mode 100644 Web/src/extends/requestEXTEND.ts create mode 100644 Web/src/extends/validateEXTEND.ts create mode 100644 Web/src/layouts/default.vue create mode 100644 Web/src/layouts/empty.vue create mode 100644 Web/src/pages/auth/login.vue create mode 100644 Web/src/pages/home/index.vue create mode 100644 Web/src/pages/index.vue create mode 100644 Web/src/services/commonSERVICE.ts create mode 100644 Web/src/services/userSERVICE.ts create mode 100644 Web/src/stores/app.ts create mode 100644 Web/src/stores/user.ts create mode 100644 Web/src/types/api.ts create mode 100644 Web/src/types/common.ts create mode 100644 Web/src/types/user.ts create mode 100644 Web/src/utils/base64.ts create mode 100644 Web/src/utils/regex.ts create mode 100644 Web/tsconfig.json diff --git a/.vs/Kx.SeaTime.slnx/DesignTimeBuild/.dtbcache.v2 b/.vs/Kx.SeaTime.slnx/DesignTimeBuild/.dtbcache.v2 new file mode 100644 index 0000000000000000000000000000000000000000..9a3a2a2192af5c7bf11d104d7d1ece3bbef629da GIT binary patch literal 325735 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 N4?_L`D4$d8-JdT%L?_OHK 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 literal 0 HcmV?d00001 diff --git a/.vs/Kx.SeaTime.slnx/FileContentIndex/b71de6c1-fc3e-4629-87de-9d94f19b3022.vsidx b/.vs/Kx.SeaTime.slnx/FileContentIndex/b71de6c1-fc3e-4629-87de-9d94f19b3022.vsidx new file mode 100644 index 0000000000000000000000000000000000000000..7f1d835a4e0a352011cccd6162e9acc74815b143 GIT binary patch literal 36822 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 literal 0 HcmV?d00001 diff --git a/.vs/Kx.SeaTime.slnx/v18/.suo b/.vs/Kx.SeaTime.slnx/v18/.suo new file mode 100644 index 0000000000000000000000000000000000000000..a58503f6a490af94115b15e48ecf6eed892c3a43 GIT binary patch literal 18944 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 GGyDgJ9WZ?W literal 0 HcmV?d00001 diff --git a/.vs/Kx.SeaTime.slnx/v18/DocumentLayout.backup.json b/.vs/Kx.SeaTime.slnx/v18/DocumentLayout.backup.json new file mode 100644 index 0000000..75b0785 --- /dev/null +++ b/.vs/Kx.SeaTime.slnx/v18/DocumentLayout.backup.json @@ -0,0 +1,27 @@ +{ + "Version": 1, + "WorkspaceRootPath": "D:\\Program\\Kg.SeaTime\\", + "Documents": [], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": -1, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" + }, + { + "$type": "Bookmark", + "Name": "ST:128:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/.vs/Kx.SeaTime.slnx/v18/DocumentLayout.json b/.vs/Kx.SeaTime.slnx/v18/DocumentLayout.json new file mode 100644 index 0000000..75b0785 --- /dev/null +++ b/.vs/Kx.SeaTime.slnx/v18/DocumentLayout.json @@ -0,0 +1,27 @@ +{ + "Version": 1, + "WorkspaceRootPath": "D:\\Program\\Kg.SeaTime\\", + "Documents": [], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": -1, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" + }, + { + "$type": "Bookmark", + "Name": "ST:128:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/.vs/ProjectEvaluation/kx.seatime.metadata.v10.bin b/.vs/ProjectEvaluation/kx.seatime.metadata.v10.bin new file mode 100644 index 0000000000000000000000000000000000000000..2f98899dfea96beec93dcd2913cf70049ff9cfb4 GIT binary patch literal 3684 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 literal 0 HcmV?d00001 diff --git a/.vs/ProjectEvaluation/kx.seatime.projects.v10.bin b/.vs/ProjectEvaluation/kx.seatime.projects.v10.bin new file mode 100644 index 0000000000000000000000000000000000000000..f57e2e38ed773132a8c28fc6a65c27c809998118 GIT binary patch literal 136492 zcmeEPcYxGX_nl-Wv&qf?7DPm*BUNF-`E-885A zZ5my-Q5OTVrB`mmd?8*3P@=_cJ&adE=6%*2ql3+kM| z!X}z7audY~!!0m3U-{i$gNG4JxOS0i3DD7z3AeDwEf8SFTu`{Mc-p-(GV6mC%vG1R z8|4?T=!2Eak?W`TUp!Ps2H-%5>GtpvPRt|E)ZCK>i6J2T)1{?celQ7uS2X_yH&3v$V7;NE#EyG|dA8Z}&QX9WZ zZNp$YAKW7hw)epfW@7VhM}2ml9M3&{u%nrHf71~@*r~|vAoi$p80=Eyb`)UOaPe+_ zWcP4GJw%=1W3s1aO?NN{$n7P-{leh>K6pSFJkSSwhrxq< z@Zd0bNRiuH)OlzaJWNEg!-p5UM-&$u?vZ9<#{v6U7s?Sjs>nSwOdf3}I?e7q{Gv#* zPg!K&vdDgBV&jm-bvj2@+rO-m$C!!vox1+y<+EgOk2Mny6m}_vJgzMA__D|o$|6rJ zt3xN1MV?$1c}iL2sd*%md|Eikr~8M)8DVgM4-O22XZqk-Veo7pJjbkk`K!TXcCLTe zo@e&isKE1!+;hYsHpuLFumUge!3)jAPi<5F%yChXJ4i%c90o5baxWC%rDmeRwU_Va zO?#IWxfcs?u=#k)hKKtz@#TK;A?9a&6nI6EJ6J>xHGeC9CFtjse&jIot0fA&s>mHG zB8QtbYrPgkUR~r46W|DQ(#&y(`3+s;gCot8y3GwDul2!E=BFp$bo~j3FBjAE=puKd zC_ct)S5-w`=SPk;A3Stu5P5x(J4Qr~GuJ(L+yK9!8~n%{%^Ll02^zY|2gjR3Ru_)& zBX9P>TTE+f-ewM&qQKjW+*?KKcbGjMRads4&I#tSncrPmqWDDf zo{Ad-@XjK4f+&8MIkd96+y%uanf1*614|UY+nn6*tN^^H$ekpL-)pw&wc_9sk(13+ ztqMVkgF5ds&z;aU0H+kWlST3S!`JEu{A@mGCR)}1X~?m19(kz9y2D!B4~Bav%IG46g9O zm0|F6A6yj%zwp5?!}n;bi`-RWK-PpKzw#r$4uflba9tQ&?}Oij!Eb$VLm2$7$o)n% zv@r~R??-M5gFpD-k7nY>^>6z(m_HS{n?&)S!{9GI_^X-NzwfB}-kkiK4{i?E`MZB4 zyI~MT?q*TvmM~c4gT-dzocj{q6#)suD-Xj6#lj5WWDcB?a0OTf(gq3)*ajQ}g$6PP zvIZ&`2~;#t$-s67wl}Z?{T=yN*}zT)su|vlioel=}G;DM<40JNk*>HOqMd)JK#Rj?>=w_h1kq}M~13i_q7cViEgnM}w z_GbBg4D4(8_T94MCo0y_pWZPBj#WJCInKcGVgCf9Fepv-L<1*<*^>>N6829u za9Y?u-M|^j#{jlB(7>67TY;^gMel3_=Sa_G($6(;p5ay^bv~&<1}^Y+^+I|V8Mrvu z)l1Z_UTWa703B@La%r0eh8VcQD?5~BuQV_$h`NepcaTFqT-3s0xmpg>h#c>l9B*Wf zcWsV0D#sh0}T73Qr2^-?b!yN589if_!kuaqG#bH?%~S@UXihQmELOx<{EAlj=<|2fj5Y}Y2YnB z|8q~?ruUA4cRlYtdhZ+fKzcldJ~S{dus;gf^TpgD$}?txfrWwnv4KT_{fU9a(#8_j zy41k3fcezmI~A|+a&3NQU_}tIGO+PE%dRr;h1dTtWxiG$Si=_;vh}YFd>z9AyQ<3&$fHWk_j{6c26WYE}V)@)8%U>+DQ|sz_xtbX0f!1 z0@Ix(OWGzJ)7^*l7MeCqV+UlkFOK}Ii3&v658+ibQAvB-<#5|8Zzo3XU}8tp?Il~O zZ1S<6HSENhr;3T4P4@t{Sd}gALZq6BT@}LqRX0(?^J|(S*R{+d8BdRFZ4-4&cZRHY zH`Xg^sw?C8ZpS@9;`M3uCf-2e4H>1qM!d$E(r?1{o3j1gd7bl+=0sW$X~}DyMp_eT zW1_8xv}4R3MB4MBXS#D_dwa44Z%_H+#XUx1ooJn=`oMQD?imvALd%Qgs~6wuCM?Ew zm;LRLPidbAs?-CQ2N{{1onTf%HeYuGtfqjLEp@Ds+s&g1eZisC0 zDrF5<*3~9P1ZA!c=klt5hlvS67bdb&uj6+r>n>$YGI6)*^Y(|bP~dceek9`X>8hlxxz@kmg|qb8CfQKineA-Zx#n(upEx(WO_V%wu$FWAD?65g}{E%#7lwwvWZs$`_+*B znpxd1IoHJNLBty--VE%wWSb`5Ht`M*yJ5U$nRw51hsu7u&k^!2r+ftTtq+yOCqRMW zBkuWp6AMh~Eu{CciAA3G3BAQ8mU!M$ddp0F%IS@Jy`1Cu8IctxR+{c`+2ZG{b2zzG zazwsRZSmPm*1nqYYfOB_`WW@KoG{m#Sm)Khp6oX!zLg#ic|K^#QiYtZzcaDXixN}f z_j0-uy%&@ICR5z}1l|vFnipP6azC2*$t%~E-p?j}@w{JI%Woz&OOMm`?MJMZZqV8(86>QV!gls7RAs4MlBmW~9K>Cd-n?2pi5fvYHIu02v9*(; z+jYF!c#Fv=E4Ig7V@Z#zn?yY?w!VyQAX*{oc@2|j6lNPI(IjZ4sp{kI%4(*1+dPRD zG7>G>-&RSq_PjRq+9uJ?^Y)saDTc);XSqbJ_lRNt~Z_$H_x^klODHlDJUTz;U`L ziHoI;OBjD?5|<_2mu39mBrf-uA!M#dVrbCnl}QW>?5mP|A0SV~T8tW=#MJ>aLbZ2I z5+eij+9XB=_UI(WNE_F&?ARo(514UD+z{9|`r~;MW5y?Ob5cAAGb^_wacdBBo7(%^ zm32oF69Rr>5_bmnU8-M`)UkWFKW6u^jeC=r>>UU9(VLRQ{Vd7z;{kcLJg7=Pq^yTk zJySglkFeyUNlXilpvRJ!F5BmbKc2)BL0_Is;;F!XTGjWAzsJwAmKjOROu8f3{w&%4 zbE>V`e$?}fnv=u}K|L?35qK$ymnDi<81rfpuLb>?>+kRD#NSBb&7kaCNxU7{?1`!`8u_&-V3E7KP$t6iFl@VCRvY#fg-19!8 zw<3v^+WS0-RoeR^i7&OcI*B#f`zndAwYN5jb)L7Lb$*k?w@G(V!se)ALlWP4)J9U@ zC$Wix%_-mqdOs%dlk|A7{mkSLr}c}neq{oPaf1IXiOn*S_V0nsSl5f-B#b1scr_QX z=Het0DZf4=C2L`{sjOrwXf35IOIc}U6?i3Jr}$zng+f^;GW4=3RPelt^eUyWUC`e4 zs+Ap-wWD88WybE5LX{wP=M<_2_AXwlsK%IGQ>Y%`HB>D%Q>Yc7wG~=N^>#PEmAb5< zUJCUY>mAmz{|!=T7?f_rGU9q(izC-Kg(fL?B)z6Aw|ffBQtl{v&FQsBp{4XVdaY7u z9oTJBXzN9_W7Hlgv=5jL?1LyR?jrW&7@5Lj>5eIM@=Ay{JEzb^cqw#EpUi5mUu(#*!LvP;{_Vc{`=^c>5fzo5ey=Aw&d+CE@w`k*FMjevEp($~fjl<|2 zp288HcO<=|QaIZ4`q1l}LO;*zPw$u%j+LG}j_>|bI6mcHnoi)piBUU|K_{hfa)6)W zkLIbwPfOwS06&BHjdJe?q%bh$+h?*C4?RoqXDjO*#h#nOd9n1u zP}fDO+{MbeL|K#`IE2W2i#HTT;eqWCL33q!dFSEev5<=!UyeN_s>rH!k}j7Z@c z>A8GWHZp~4Q|<%~$0$;xQy7zSC(^r)-q;kbPq}x|8%OVk6mCqplXxiJl(JpENgJQS z%?e-&Z(-|qGx$~p-ngJU6ZQOSf9CQ2N4(z`2#NkP=zDcs{R_mY{M!hN1M zh2H%sJm7f`(t9X{hdpm9y+=}b)bpm%dn|?Np7%JtCsKGa<=)4(pQ8743eR}nv-D=9 zFjIQ$;Vkytdop-VS+i+*k9^N7YmR5}{l0-0Qg|`tN4%8c`y2NexwkK;@JdS9c$KZZ zmcrbW|H|g|6yA_F-X!x@3U7PfJM`X7;k_X4{S-b3>cw-9mn-ZuVX^)dDUqv{DSRH3TSaCL z8SiDx7dhUSIo@jRVGaB8RSI9H{8ub%+2)I^Wu2^lJtKwpjr6|t%WdGkeaCVeQ}{k5 zZmW2%Y)avWl>fTuN5+X8&Yu|ba|*u%_^%$$e*eZ+#Ix6C*7Q50+!VklB3oojMLu6l zKEcmv3=5_u>rB#1S+G1WO|QU$?RgHpLJJw`v6ZYP`$4OMvMO5QLEu%kRLK$}xSb^) z8+;$zvxXfk>=@KgS(Ib!PBONN@9iwTs;bUilvPbxyIS5JR+q6gh|lGS)MWj&EY!B# z`Sj}0+s#5<&#OnTzJ&&syHFmP4Xq;IYNV{jtcNU`Ft(|M-7R;qjBQ5TvziNwJ#Hb} zZJFb>%JEv~cx`gLwmDwA9B+>tuYHc!A;;S@$LpBmb;|KN=XhOmyskN3w;Zo~j@Ltb z=*bb<%R(>9T`EUtZ*nU+F8j!F*_YYT-hMgU{yZWSivw8CffjmO?kbi(NR~dB@oQwQ zhbZe%WgVuh!`TYsa0Kf((!x=eU+QQJeJpofLcC_}YoVXC(VtPrSUA=SUO)5bJkG-L zmb-~{%;Ow(f`t=3?liD%^~c8 zcx&i+S6CQoxyAIaWNC3%GRzWpCB-bwm*3mtDzb6}hqIhOuV$SiEL`K28Y%0%*21VD zZnPK2eI28$>nw~7`0Fi9;cE!^Wp-OH%S7VZn8rdSDn_AGbkehUv+f%BlnYe?WcWZ_|t!Bm!i z#KNP#JB{vR7N+~|<8+^}@T98dDGN_qNE-Yc_!-MJM&VhDpGVJN*Akd1%voadoY>43 zn@8CfJTEMVA5`#z?Ku`+u$YAx#pWfkd0A{;5h2YO(%0mR2)ruXHheeKmRCXxb1l3s zklPFgZ&-NK;sS$q+U6&6-n_*}HP122mFuzi)VzYv=* z#b&kGtPz{9#O7&9@;Tz$8D>fU%<~y<3C^p}V%_gz=L2P~$o1etyXR-N3 zY)2N!pE@@OtW7jmQr};W8AZi3$O-Wbdh}TM^b{cgUl}6n(-?H*aC5`%N z9s&(SPHA)&_AMg3i?F(iO*gUWE;c>HW(|AUGmX83-Aiot7Mp#< zW?!+{Pi%OZO<;dv9UwLbvi9C-93<@HtYk~ho;Wy-L(*nT@&8bP4-`lKVGKMxjUxnb zq}U7*=uyHtT5S4=O<%DY&y%rV8vTWR3^xvrP4hDeqjG|WfjbPxrE4aN3zWqh7ay~g zC0?N7_%u#PC-^q4s9~bm9hSj~=|nM3O7kT&PEPa0NbszneG0QidmblswzH-+P7`sb z(=NstY2LUd_{rmzD~)z$v76bB-<&8emd1c|aj{eER_%d-X?_5UGetcH0i2b_*=cE= zlg7EUSU`oHr^3!xVT1C+E>K|?s<4al!xoB98D&$8_{ovi=*9VAm#Eq{oX(y-RQDs&y+Q2Qa&M_ zpK@Y(DW901a$T`bc~r$Z<+|c>rF@$-5S{XE)l@{vbyGU!QNyNFu7|ChDZeu!<#(x+ zPl`x6vAmSuou6`Du}*nZ#X9A>;&P>Yn=}xe@@>^rM9OtjI^|KrrcrF@$-5S{XE)l@{vbyGU!QNyNF zu7^#he2PjrpHWIq?Dt2c`~h{AKNyj6VtFZlC_m-8Vx97+ign6$#pO!*HfbO_<=d*M z5-At=R=O#j@~C0cDc8fMQ~q!`9|Pr0!qkXFKcW)-XhfpP<|TSsa4aRn6GhI=n{GfS zJgNbmaNWQdbr({`&D%C!x(VqlQfdB5TA4E!vZE?poC(S2zi-vw;e<6(*z1ulHr@!P`6VrIvvv`B>iYT2^ zSU+p%!hD)2UtxXMstfbJ)Gy4ZgR)xI_dmKY?{NIWyw5DFu)dP&!n{`cg?YzPTHzE2 zOwY=?Ft3q*;a9!FdYD8JeO~J#oMrtYoJU1_xkdDmp^NZ5Em0&bvhi9Pb4#T1^)%k_ z(#BN2=~-{_6{oV^2^y4zMIUu4bz!Db7tSxD6R3+!QbpcPBfp4Fn=Zn%`K`PcRYWIC z7h$r>Dxy=Qi!eogk@x*pQeyBvNaMqFnub0P=B4qGH&FA_Sm0S4#)Y2saT<%1^$9JR zH(5>YFzRYJjDF$8Y2+8t!>EgJ82utkqKfEY)I~Uqevzeq5qY976DNA^4h~eWg7gbH z?yCRt?bG0@i{)v27VKa-t68C{S*fb|JgORfxar<-oQ8Qrt9!FbRTJ5pva2a~Z*&TD zZwSo%^@$!y>v=bl)^lt?TVhIBm&W>>9X|%& zr15P!!5@IhlU)S_yIyKQu=Aw`1iN2qKrjH|0Qt&g13yB`>19>%+t!UDJ=M7v-SNF- zH>L4|cTVxMlOO%$b;nPV{5hKZMUuZplfOxFb2Rz8B;9C|pC58`w?vagk}QrU6a2+k zRp?zY3PQVLN>cAi4w;ms-jy6OB}u(2Iiw{?y(>9nT9SHKa>xQn>Rrhpyjf~+|C zyHXfUdb^T|CcRzBMw8yIREQ?MU8xvNdb?67n)Eufog%jn?~2!<9imCELpw&3UWY12 zlU|2*iYAQ$c`@#eDm3_m^a8gEztbx0Vz){~`3Yc^1a>J9u2EZTTh!(0QlZ$biE0Jd zm3ga)>IJAFB5I;$0cz3WDKF{TlCGoZ-E!%=lCG!d`nhxiNjFqPf6~j$X;P`Z%OW>$bG})ev;f@kq3my10~s8kq3pzgC%*0A`cCdhe`5qMb7pI zsS-z_D~^!tk%~P^7ww9pCD})jeZyowN%mLdF=6spNgk)j zPYsi&N%C|>o)IPoNOGVe&kU1iN%Cw(o)ad|mE?JfJU>hhlH>)7yf92&B*}{vc}bYO zRFan|lHW@T4$rO_EXm6iIV4>23P}!Ct3qe>Opz5S>4ppk0X0pH0v{MCZ>Y z{JO9n^ZeO_6N#qtrxQ*kn$Dk4&@DvgPbugbqVp#e>>Z->rxolMqVp#f92lbWrxqL> zqVp#g92TPUrx(sFdcX7M7tSr3&Yxk>FGT0hF*r6v=g%@YAw=iTGdMX!=g%}aEkx(f zH5d@0^Jg2J6{7R!8=M=W^Jg3k3eov<4lWAO`Lhl#4bl1Y4(A*_=J_)Zt_acjb5F9^ zt=$b*$=e_r^DS}nLgND(yrpS^;RU#w-^yx&5e2wL++Psg9U}{HEz7WUbBrp$XjxvG zW3+i4O-8rG*aBS7I$9bSCu%4tc3b0y0^BG=rFoM!$7}OuZQi2ITeW!`O}3E8;C5Pk zwRL1?esz*7DB=!pmgUYI-I?E=G~A=b7b?YV8lgU&`Hf1$?IXTm=|g=xV*C56$R|iHw>dzM?6ihQ)5LN;t$6wGOI;J7w2~RKi_>F)1+a4vc#O z{Z<0hs8!O>? zSuv40(kQM}n*_hZTL~`^u<&Amdof-rz{{eQSHjM#Vdu55GdJY$%elgPqX2J;8r}*! zZ-=W{A3TyU9$J`G1Lm(XY7s1*`g8IJl~LaQY7h1cSj5?UQDxJE)>g`uw{ zv^ET_lhAqz`Mv)}Lf;C=+vyDw_)Y^GCGfolHc8+I4g4s9pEU5Z1b)%LuM+r81DhrA zy9Qhda9OgTA6q0)q=8}yB>4SOzo&*R@?{DD{@x@dl#-BT%Z%|`i;ODJ#cT;U8Yq-N zMgv(1RM0?02~^U+b`scL13O4yM-5b#z)k`{6|W~dOQ@=ZcJZKU652H!Rb4_g!cjFP zR4W`+TS9fhQM*Z~ZaAu*gzAT*8c3+2gc^CBXe^;7;i#q(+C2<4lTh<8)Ivfn!*#Wi zQ0s718`~Y+0c~xbQ0=6-2id{i!PZ^^9W=0~1UhPMQ}C?M0nq7xTlG5jfX&#C1RzIL{X5C}Ey2&AWv;h^C1P z_;YPs$RF6y!^OUHiJ*$zvAER6Wo&6I2HUuc-#T**voX}hmE85&7-r)t?pSLc6&^fX!WGOC@YNC?;YGJs(bq_rBO)r{i1?L^l<-ep zB`po^7ke-R*LpqR?;t&A6uV>aDv8lH#<1%%aGj`$3wzDrx0J;JWZ-(6@HiVch*;bx zyqj!{_jY6kZnpU|0I~nlyoIoDR*`pr61`QUw~1Pc-3_?i#&i4%{RZ4&V*+zrT(Q{w z853=Op;uHP%_`cgrp-HLZ8G3l*@iUl(&&D&KN6j!(Yv*Ik2E)l*6!v$7Q51{kW?lY zmJiT-8Eay)&6xXaOyRh0^4{YW<9;7}AOvpd%+>B}Jj4}&Y)rNBh>b^WOtbNrjp;TX zxABCHC;59?8&BJK#>TTYX4sf%V-^R*#%vqU+n8hH1vB1Vc8z1v$t~Nfg zv6yTUOKdE)vCPJ&HkNa}9UCibthDjDja4?ju<@mh)i&1H_{zrDHrCo$XJb7Vc(d`X zjSc+4sf~>`zPGW-=Asw)!N!mLg{h67xs02QUv2!x72No1QX8%faP2l5MK+50`%wq{ z0h8$<=^*96a*%dV;J|j^I4I--0~rTd2NfJtbWq8`b`G|8u!Dmg9aMI(lY=S_c6LzJ z!7dJ}IoQ=fbw`}FH5}A*P|HDW2X!3m=F~u42lX7(chJB=LkEompd5Z;0gyr9bD;Pn1ibv40mv~gAop{aWK-s zwGKu(80}z;gX9aHE5p9E^8xvx8e4-0I*q2e&)8!@&fOq=ktN?sRaM zgGmnVc5sh_dmT)6aG!%I4(@mGfP)7eJmlbE2U8t9;^0vS(;PhJV7i0H9X#RSNe53k zc-p};4xV)|!@*3Bo`qQso^vqU!SfF0IC#Oqiw<6L@Unwf9K7n_H3xGYyw0D-Ie62- zTMpiK@Q#Cb9lYn@eFq;n_|U;Tr#3!vFyFxf2MZmp63gXZ`HSa|odlP*y<1#C7jf~~ zPn;|kJ6Pgise@$>K6S9%!DkLuI9Tc6a|f#&eBqe*(!pwnDuJ>Wg(hM>4PRvAuhY};kIGn3BS)vBUo5C$xUrx{ z!o4IG)No@#jS?ywQGy!yI_GL#ilPRi#63U>Nev$@p{e1cB}6rRG*;E{WpH9u4X)A> zl6!DtRSm<9RW%}2HP-UUsg;3s{HIhkc>gD5HP-VVWi`HW%97Ri){%?5^pLU|zO!v* zH8${R?aHTZ2WeR8O zBsRq1t|c~vrzJLorzJLow|y+JfmmWAme}C$C}W8YPsSsb*!ZVQY>0_nOKb>FOKhyA zSDM7eMsm>-8{d=pV~LGTjM5StKhV<>8$Z(15*t6!QxY4z#)UODex|qe8XLc`RIIUK z_)Ce$8XN!rG&X+a5gu!7B>W>h*4P-v#e`#x4Zh_mpT@>-Jbkpr#%6liZKkpDJ8R$d zFV@%){r~T3Y=|3&a%yb2e5WX+g|)`U7J6D^qljLtvGFg^*eGVA|2mD01XuJfO=H6# zSDMC#Nlt5QB_HqzYx|6F6EfVF6i4V#|U*l_4+jg3Njh5rhT zjSTlR*4UtkJoOf|qDWX{Bg+wrH8#ZW3;y>S8{)3ypRTbXKJxtgX>9O4Of0eyi)_Rq z8~g#%ze{9eq!8KQml}MP4Qa(P8&z?6v>Hb&vmt)QMIDb=W}_;`tHoHkR-3=Ru3pDA zmf7$%VYrZ>KR9F5dXm=#iyeB>EnE+7Tv+bJQ&tHUKIK(vZ;0is+8oPl@VBm2p;N90 zsjQ6G6S9LP~(I>CC7;gmY?P3*xksNsqI0W}rsRc-ZIUcRPEoaM31Mpcx!(1vf` zxNxK|^`$SbkEkqgg>8RrVVwoCe=gzMs;P*C>!$QM9<^8c9M^lL&+%AhL(aM7(D8`A zb<=A#>ticQ`$8XE841Jw%+ z{TgGwde;-nY~%}N==V*0kCadAq2++))A~7fZ4|8^uOjKG>b^gc*7sA9w7&WVbS$$W z1Uh1w4Gw}Q1rf_^aPq9AR4tsalE&X#X2T50Y@kA6thgbyLSn@Y#EKh2Hzrox;2^|` z8=e?Qthf;f_{54EJS}3yjX>ciR@@NZk@;UKZt$y|8B{EcB{%+!k{bnoN^+x8VMwN9 zyRfr;$SL?!VjMe&8Ug{29m7uLkQ2*v2uOCQ&&Ftp9*^HR7e>NCFoH_cn1W69y<%~pg_>0s_+gC1U+^U-Vu?49@PX@QqW`9 zLjK^Ux?qkgA?WeFL#BpcN)z<>!6A9NC)Kf0MAsD214;;b)DoaC=ux|H>jXXO6ov#n zcJrP8SkU7;=MMxu)=_RGLeN9QIf5SRRdkM^2S+4I&||GbNecEr3wl_Eo>Lw{kGdju zTp;LCPk1-Qf*#ZXi3L4kL607>phqm|@n046s9)$BTvahqyUL3nty_Fk`(51SuOGJO z)WLPGT6c(ZX{*zw?)2z!n@+uV^f6@$dekr6Izf*Hh2|aOZs|5H7W9Y(Jq)+AnRtKG z5r4g)hj&!Qf*!G;$5BOY&LG5s9Hc{?)oPL63&=9-yS4 zhliFF^zhJDRLRJx!?gTfMm9sz*nEEgr{5d`op zrYGnT0)(JP$n^w0LVzde5du6xj}YJqdIUf$=<#%4`F0xK!g^87>J6v9G zK4+c7$*nTQikM$`EztVXZ)-K<*O>T<^)c#eQ%v`3O|0|kUr+WM6W>aYr8fAb3Jn9_ znb_z>HD%QICfa(QnAo+Thw!wZM2h?96a2=+T9q z7WC*!FBbIp7YKTEW1{~$L67dNtu#T89^^_B^yo=W3wrEDPYZhVqW4b}^w^vI{x=JH z?8E*4&jmg9Wi49JV?TOY&|`mkTF~PFdjAeVj{~`jXWnk%Ar#3Ijn8Va0+Tv7iUWs0I1TSQFYb^VftP zs@8<=$;)+GE)h9ei4+j~b8A9xtENh<7%S8rbW?i8*r>hIE5_=*(n|!#f*!G;hqr$E zz_eIeUN6$9*T0Mskhn^nD_THeggO~xL5~s>iXNm=XDkkW#96NMq0jQDeCV@WH>J<= zSkS{i%eC}HS$T+%?a`}~>ZQP=R5tWAq2q8Un?A>5K@WMEEuYFpM8fr|(E8wwQrXZ4Z~2;v zNVslFCp@Yto$#mCiKr7E3wp?emrrFQBH?vo^x$-{GPpU#=dqxNJTq3P`|8zs zV`B@U(KTs&l{RVUcZhs9m@ml@3wpT6;F~nQO()Qk&pjNmb!n`ZLl?Z5DK#LtjFlP? zD4K)=Wd1g!@m+p;Hi{>&>g+>zd@tEeY5d?_6X)?O^MaM+Pm=sOnv4ZKVnGk@FexYy z6Tm-G(8CA`dhmp)Qjy}*Nw-P@yA%l5s4ccF>hgrBAOsGo6<}BHY)w=zKn)R56EzD^ zixx*h(zPXBN71|G(sdlow1NmAAF>szMV0Fk_LS-UqSslV-chJV}XKZbjCzR&ADM{7a)5+5x@^hp9JDe-Z#0DXy%Q?^p#iN@<$5$4dGHu6^x6Pls z&%GYdc2)NsIOwr5_XnHchRfn18(aMMK?u$2-Y0}IWsoBVM0 zqp`$CEb+1JBtE>OGM4zrQMc%4CN>UPT&J^KIJ~6vMSnBVX?E}77e$iCn2GtFy8d)t zBzdfvc%ZOLDdcfwk;j)so=_HfVp$zJsVp*<_=qJwVu_DatqO;iN8;nmLi6+6)zvzX z_=u%AVkwSTii4^fznY2t`;Pj5E5&gZzpz=IQn`kSng(j|Uv2MS9Rs`3t81Vh|JCP8 zeEiqYKqLNZOl1xJYieM3{%dBSIsdgVaF!>Z(IL-@8arn-* zmEt&`ALW%U#WAp?6h{DH5X(hLaRdQ;+vrJgga9GM5pq2#jsS>tHU5se8fP=jT317O zv93m}t6{j+{gBSj* zO^h(zL2`B|LzSb=A(NUB%Adk_efiWhoGu^Q=daQ}-P4`l1k7LZm(z?MkeCtNm zKnypr+;|f=o9>0acZ>3FC3l;N+a>1?HgJcD2|*VovQkg;;!b7VrL0LN?hZ6D?osHy zW^KRBWE1z1r)I+xsy^J$h8{5Spocs}uOv`=8ttXE@G6{)wr0R*44O#p4Qd4l%Cer7(h?!YFtKd>vc5-vsA3BVF+as z9>+bB(n8N97lcism$wT4-t_iKVqfV|y=A{7_V<_r$Q+nNZ|Sl8LCHYB;NT<<@nQ~T z%wb6!o^)q$`Z|K%kx3jSJ(f5+iFX3+mp&o8Z^-VKEb{x;-|ycstmW7wjtkm7K8X_o z`@|$p3ha}UI3=)8P2#k`K0OqFMiK)8{Qsk_#^pT1V_l8lxO~Pxf}Z6OG$Vj*ydG`E)gg@buBT8duQUcDfovS^HnDt0DUT-__L+HxA|0)wq%`2!}CT z>uOv@PwQ$7rx)vL{0nq7u4bbDI$ezstgSR%jcdr2rmHcMoYvL2mY&wt7)9@&sH-uW z{r)%WYK-Cj|L3|I*Rd9@t1*_I*44P4p4QbENAKUEt8oMOG}hH9OIPDYj!>+t@%PZx z5O*d2bX^Vc`Q_hGS7Sh|tFboL)%fS@YII9e8Kb+{^bnghe8Jr_jlG23OKkQQn|;J) zU$N;bHv5Uqt`;}@3+n)}IWTRYcNzx?`#3Av631IOIE_QnW=rv(Yv3j@(4xTcVGKMx zjUxnbq}U7*=uyHtT5S4=O<%DYZyD&9Mt@-+!;OPu)BG)mMxX89vJ&P}Ads>HyYfIk7ysg@?RVTfK@snFU?3o_C`v z)(e;Gic38+yav39eVa7E5s6rYeOonE;w;b2hd#@rhE1R4df44e9+8uEf$KCz34 zGn|W*8m6p5Cp=2*LMOa@O+_SJH>DFE)s#;7)9TpL36FI(WVXsDb`gml7tv2|x(J`o{31)DiUiB?SA{M@RT;m?Qoo3lM_3l?YA`Lau7-Ea z>Zi6?R|ER$yEg3!hFIcUUKglh1XDs-(;_DzIN3`L2u|%%1A-H|)PUgmG8`ahwhgha zhM0M~!=$J{Rs5_ZLX3iten?W1zebZONp6lNElIl3WLlD2qDfDTqBxpN$dYzJpmySf zd+Y5=VKnLON+z20b|o84db?5~n)G(1Vl)}+YRKz*tgC^xO0#79S`W5*hA5r z^1^g`Nq0~*r_3Gds zU6DP)WKT)%rN~}ka&JlQqsV>3$H^CuP@7^3s1791R+^CuS^7NYZ~7tSnt$MWYF z937(bXBf^dx^(^=gJVPVaq4h5-k+avLWn+5(I*A;$szg_MV}hbr-kU#6@5lP4+zl% z6@6wvpB19dR&=bZ@xRyAh!riA&c&lz=VF>RAJgV^Z9cBeC$#ybHlNbw)7pGSnZ=^n zXMM?y8seQ6{TV`T;|0?lTnRIUIaHgo3KaUBHfJld*qu=c%hRHwjg|1cteD6gX%ttg zO#(@y5?&zi=M*h&`i~VY#>a{lLc1YWwBR7vwh(ZL6)lFKku4QH8p{D`A|yVriw8B8 z(C%TVnS`2$p%xNqDIveERuXC*j%s7OgFB$D&7p56%{|Bt_QXWmOQ3@W_LM+J4Rn$~ zX8~YAf$VP=33ZjwA_;99MGH~ZMNi4Ck)W$L!pW0Y%<1-s8Y^=2Lxs6pe zzOeD7jny{R*!arE*EZJLSZ8Csjc;sxYh#0r?_xy@{7n=s&UJ8}gYz8>a&Uoz3mshK z;9>`tIJnfoWex^AxZJ@I2Uj>4>flNT!yH`YV7P;;9gJ{rjf0U6u5~cV!Dt6#99-vM ztb^+vjB{{If&&fod2qv#T3d}q=lTtPM@7U=kRN5Tv)x` zh7Y%Vc-WF(55MHD!Vc+4yC0D`s^$5EN59P9Ox<7TCh-6-2?;z{SVGZaicqw`Lm@bU zhYO1sSgeIGjIa2E5 z*V}Gbe6VF0Y~_Qk!(D3Qcd2a{Z0Cb}gu(Vc z*uhL}-tDN*Jl%vneXygMcz@FoKG>Lp?;DJf0sB z$Md5+o()V3AGrR3$%w~9#B>?)c*%%q@`!&T4C6^2@sCUVsT}-i;!jBYnH>CCh0n;r zXDWPF4*nc*w#%N)7Cn1j_H0f#M4eQ4Aq?Y1mYgGd@KT}q$x)9U>@8%Emx;e1@mF%< zU-fXd^qOdCu59V`aENZ{jWCQiS@Lz+$IyK7Rw%@D_u_JgvdyI}X^- zx-e2Mw}}rPfxz-`V$UcZW{@Abdft!)H%j%S5-w` z=SPk;A3Stu5P5x(J4Qr~GuJ(L+yK9!8~n%{%^Ll02^zY|2gjR3Ru_)&BX9P>TTE+< zab^kdR`b{)ORg>f-ewM&qQKjW+*?KKcbGjMZ8xe!@f<>{@1AIj4i}}mv~VQUaas$#;o*)5Mb!FUY}dg*!QTp~5pccvj&Ra`1`@uatvtr||7_@Ett70=Vi7 zm#8T)U~>^vu4`u?!}U+O1~-?XsmR5*DGNa@2(G(Le@FgRHn5X{Dh75oP?Za78>q$= zO^q$Z{FdQgCOoub#zZRvmHDrYfwoj5YG?4F&BPvTonQy{AY-E=6T}zPo%z7U6@I%I zVi~fo2D-6x8E>&`F7Kn9XRQR^_(;5JMwyejPd>U!2Gufwvug&`mGhTt7NG`5`5*%| zGdwD|X0~ukmo1uFQnn}nP>bcFWQ&3T4u~gP6as{7QONaVi$cK322SC+|9+dXj?w=_ z$LI}nQq|mAodAW>PclirL3ow^^CHfHTcLP z+nJ%TnaY}_tmjnQvkg2Sv^PibFDU*+&%#UG!|?}>v`|dd*8qZ(&K1+NX>`9{wQS67judz&zJ@L1zTW$Y+zAfe_~*< zw6TP>E;X<$U_Ldd%IpNl!$!wzfgW)!i%#SS9NLoK}F;&BD&GGq# zF~1u4&2Tr;+f46w11>$*4%WVf2(<$E5@QcpGC_%v?u@L>W3x^MyJh$`QWAAJ-9F)& z^|V>vH_?Fc?K!EN?i`kGNUu=_jWc-4E7Bx`rWrg#2fLGNmO=9j-$TlpzvP@g%QIWB zI^S%m%~mYoqpdS&lL?%*8gG}u9tv-tK?l#lo($=jK_|s^X0>y?#=3EJH2?hULew`$ z^J40ox3FV0O}x!dG);M7%Ai{YFL~v=vu@w)!ScS@Q=@xnvzIpa*0K9&b6=XTd-d)| z^9@fiiWf~@lBal%rx@isNfRl>9O4Dpykkk5;CI_+$$_;^IHtP~GhIj_7{@erKt}sw z_R&gG!qZAp!qZAp!YfNjD#7a?8`+;%^PNmy)lKYdx(5)c%4T;VQq9D!3gOXK-9!z~ zuPKMM7A15dH8NQsEvT@%prS6K^2#hK$l)BZ?uK(r?1{ zo3j1gDTwGH&55)i(vtTk8fi_Wjfu7%(oWX7C+qAb+u{cY?lIEh%7X4`Z1sSQI2eAn z5`o7vp9&ip^v+1+Ajx-PIT7vk@!(9tJww*Q&m4TK3oWk=e&pa=J%q(l-DNL&n%K(> z`MpH16uY;HeLPm|>Au{H{Y>ny5ccr^Z!d5lx!xuY^0(IXX) z%ENsICjud5HB)-CIJSf3Df66(A^eW5v}c=mKCtJQ@@u#ff6>HC0sgXyR|5Ohko}rj z-LGY?iPwXOH%z=4*l&4ly2E%+Vd6d09V#n-pU1v;yYqpvK2(;kE5#k^pTRL1zM7VW zj?LgWaY-QVDs zD&%zbor#TJl$b)lm(wGMK;E@(GR0kM;A#1(9hu>Q}}4Cq^P*R12`#* zy%@--trw*_lci!&DtR1mEdME@RA(`36s0;l!}ntH6pB@;#NEubNsJ0kw9!e7@lLdJ zI9RbNRWSDls#NE4RH#aIo;rl`C8^G5$ebhwW%yQE9%cWbCe;POgjgO;stf&T?ILz! zUJ@6pe#R12LR3mze3IBqO);4nmnvekc*#Q&TO^7i>Tne&kx2P52AAsgqD^IOtwhx& z%!Zbzx|H6wlc>6kwg1%;Rigj@U5P63;8{+Is=<8tyqw`$qG|{|Em3s^y;!2^Um#I6 zl!^Z9B&x1tZKX+64I@{YMAcQ~v_#c#dRn6DYI^@fiK-FocdkTL!kx{V=S3+4pQNxj zB|Y)Lu_T41(&K%_G79-Iiq@x`IX!E+!afrgA52!HM8wJzJ`c*RA~T1K_x9wA9Pi5< zZ?*QYhJE=eg|AcMH6&|X%QjzRE$d|c>lrD$Z>0CFUv5K+KOA7WjVXMea$lC$hfOK` zkn-O_UBj!X_crQBmJsTwBRLZPxmeY;tVN4ejiRT;sz%e(VpU`4ZCkM_Lq1^cY>6?e z%J*8{{_dizYRaOBhK#K)V`~tf%Mq!`x2Cl$)VAFD^y<*t%|czzt4FWCg$9Kx*`JcZ{mOYDg9nxKPzDbxXKI*vL^*hr^-as*G4D|h)9F5*!4ny*5sg1d z_o)n?_St9XKAXXe489iZOuDl&c+Pic(|taJIT@@I>3*NVCbbto1c5)2`6+{+{lH)7{+hvWDsVFa zQ6nq=-7iDa%>aIhEet5ipxAd4{CbR$g_-sGk))f-!t&iT-GVG^-*xB~W|7JAD^@%N zvsoJz2vy9ALr}a$LM6J}WwCwMb9bP-V-}S?mmS$Dn+RSvRmoy!KddUlcFCfe3fnb{ z>dL8+MNQ?@%A&S%>SVE-a_VML&vQ_p^)<+%VHO)jry9|1oJA8A+En&}d$4;}3{9rEcWnR&Y!^3LQx=^?2wUqSTkA@0 zgO{OhS#;0RA=g84J+s)$>omL7i-GQ7P6V))rvoTDMeoSVgYJVM1cjl?H?=Vvj6&=Pa*gqr!7Iv?ZLBa@H^VP_eIr!dUKg9&#J52#+|Dn9Sa{pQI~Lxx@VG{8H=BjKQ`*MPY3xD; zxHLv(Q6-J4Y3!O7`hHtPK#|x`b}oU0DA|YK5$J2eNW&CvQf#i^{tV?83HYS}D~&W4 zP9?ze;9>7JoQ+Bo*N4r)UwbQ7>s5I)P`2`C@{7Afhn#XGcQAb0uX(Tp{#iohaG!>g) zlichstY#v(xv*M@O-r`gDvj2{ZX-5lq_}A-taf6vhuE|in+{^Lr`U94nNDeR7WOS7 zyo<0#i!s(BgRU6DJdwdDeL<-R$mgS6kwH_4435eEX`R7nb;0XIC&!A-^74D5$llMJ0$?bRnbRvJVoRM!4?yWq78QzcoZp-3!F~i+Kyzo!R6{fhZMYLRD zGJ^?OOyn$gXZFu(7ve5|KO=C-Svj-Iorz%B5Va1Auv7%wDXegH9 z9;~$IVnxGP(U1p(R!NB!4X^ap`=^e?pOhJl5XK2sv#$y*j1wg@sD*K~%;1<<(a_5X zWjgXQLhO$e!nnK?CCEH^yFfG`oQIS69P=MF!1E^}<=d*M5?V+?w^TQ!C-$hl(r39I zHZ6WN#gn&VeS93cjU(a>T&!p)u9*2^q7f+%6eq$**8@roPz#9Yvs}vzZpB$1D;nnI zBYci?RqZ_0xkpqMv?im@0@**BM552}ZPiqXb6g}`H>J<n3IhB%wc zCo>pvhEI<;wxVPP^|4jHrXmuqo6-r7YDy7shdDy%%%Z_J zfd16^LK-i6H$^@98z#@1=t<`>jyDLe_%{f;F!f3D3iD~Ae1-K5vTm8Tz<%Mo%WhfU z|LDTJ!|@B>S9W22(bk1|S@sK4gIUN0M(wlEtkbiyF3c;8U-(t8u(&vR!z7C6^I8{q zLKS&3s)#-^bP*oqek(zdSkdr3U!G8mx0H6wO;N09xGYvQbzV+2;4Z$x}HIcp1bDQoB=QjUASXZ;U>}vEZr>oHqBxO}2 zuMlg}_$n>L;`9}Q*M+Zxu~W3Z25{!jr}fZsK=Wz6uWO@dy$_MJo{J-CJ?}=+dX5d~ zSkX{u1pXq^u4Mq{@%LMP+PmX7Np4npeL3Xsl60d<{tTH%la>L@DOn`R;^>l|4B#e3 z=7<)?iiS*CtZ2wVFr;1zjVd&3+>>>yq)?SM?$zdGZQiHNDcZbWn-6I7L1mhFh&I0{ z;IQI{vv`GH!kx;mTD($-N#_fr`E(0O=L@6xbSp{c3#0jT8%gI2 zqxp0!vnXHXQWP?lSrnp>r^&-5U;2!POIHk#WWMm3B+rs$zU-MK&z0nP>I6AopFdqO zNRk&Q^1?8Akt8ox$T#$P*A;^$dATBogiBr_$)Sq8(kJV49?|l1`LhXX zhv@v-1a(7n{%nET|mRaQCkU!&aw$bNz z{+xr0LUjJDgG)nn{=CCEM^~Od^WcgQoj>;^i{0AYaFx6_qcPtSA2QPTfCle?nqYVV zt}ZZWj3~f0yfqT&?ig8sYgvY+n`2Y~M$7Wj9HY(aXfnDb#ungu*3pvRU=uZLSM0XN z4F$MShD!4$ZI0LG&Dy+0o40E7HevF%Ow{&hR@>7;_G2M?ddPk}WIqwIpA6Ygh3uzk zC-F>{>thw*S>94|oh*6#NTZFov*bT{Us;S9EYi+gl{Z8JZc91zVz@-5w-tN zdiakK;Xjog{&Ph5FQtb^&A`8w9{yWI?VC#v|2-nyEj=6&;af@%FNz2+EUGuNx>O}E!{*k7Crb}cMbvJU9-fW}FDO0SjtF;34=;=e&y*gXjR>!>b>S6D53dwa z`*vFwzJ2N8Q4{tKTNl3L)`eFtJ$$E#U9D1j_|6gGRZ9=wB_h09>EXLZgjX*;yhcQL z&8-WsReE^TEky0o!|OzJX1CJAqwdA(mL48ed%dj-uU~q2gNVL2EIqtYM0n%U!<$5e zH!VGU_lWRjrH40<2yan(c*}_JR{7y+K2;T>bp^DkU<#|PA40QT1?*8lKKytQ?JIDx zmO^y!BKSj5m zw!29LPocJRnF6qUteaAp!QK_b6SVk|<~|j$FCBiRpD3A@9&8M{av^JknX0hnZvwjC_h@qfA zBk1sc|JT}i2Ut-gad-o;RlC%zl8i`FG3T&m&v0hUIig}d6*I1gii(Oki=v)6M^;!+ zk_ak65F|@Bo`@)z-Y3uMo@L+2^2gobe^p;s*X!6y1X?^k|gqN-^n?}Pz&cWKf( zvwvB=IiO(H)|>fUO(h3-|7gr?5{yNa42-G0X;3usm2JI&(&9?q4ZwdEUCDu=SF{eQ zw+^ni4v7{XR~vgQ`-{~nw*Kzy(0c2zdh76dE6gnKKb5ZJh-ej6RB~j!6_2z3KDv^l z>el|;HJ||?I6SK}qS?A=e zb4tc3XGF;TK^Y^%5JqL453|lkS?AP{VR@g^vQFo$b9&Y}BkP=*as0oH)r>AB0JAM(-ms#{xL|LzeMnB0sI!h?*)*Hz$>yWAIBdNEGvL~1g<)`Jfc{_ z@hS;`y4jRQ)F`6HvQv?tVof3{D|C|xv;fK@s3?G@5m*5v5mXkyY7wkn0L>z3UH~m3 zXc+*l(vhqY(V7vhm7=vHS|=N|ZbYrKQR_w2CL7f@qITJ+_7Qc+My(&w2HB_$BkCB@ zM(H3nj%br?)TR+_mPMOKv_%$e8PQhRTw6!9O*U#<*Ve9LJMm+&eKdFQ)^6#^wqpcU z1+Y^DI~Tw%5$qbk@@sInh<1;t?znd`--xR?%kTETlrN7vJB8=`1)iJ2^CC8e zl_|U`!ZcC06kVM`)hW6rgSw~a+5)n$p;xnqu&1v^wQD(wKYfIay&?1sz9ICDz9IAt zzajLEzajJ+Ktt#^f`-s<2o0g%7#hO8{0s^++B?jssBT94tPJkE66nHFmg~WO!v223 z6?0wi4ipZG-u1z|!RYBnte6{vcZkp_w%ruG!-T`#E8*tg9Vr~;9!E>+91{b3g{I?N z$lnLpgA>Gsv|RzgJmIaOA2%mOm0CyR8o9E;ni@EM~SfBqsi(|Xr@{RJj zo?IyYQch}ckxwO`>*b7#quDo@UEM6<0rTKXUBt^h9;|b&2u=B1Z>|)s@^SU1n|LXn zB04q7^)7DVJ8fO#)hlgut-Fd`E!Dy`p2*)MtfjkftuIt9J%sCg8Cq0$iiod|*uQA} z72goC%ajG&vOfC8h<*J6_Vueva#O@h(j?6*d|p0+8g5QUK+ig-S30j6ZV?``@ZkNh zd8T5YklPM#_4(9rTS)K4W@=nQB3xs|JYtUf7>`=;9t++b!kwPZrL}^0w{TB7*Bb5> zmn8{H6wUh_*O{&2Kl~!Szd#=dS@OAsJSYtC3K|P}NO;&!ntYPaE#(pM9~OiZ(QH*P z*DjcSVzwC2FMdWeA1%=R<9H%{tU&t~%*Ug-IDA^)_?;%2RvJDynz@)anooFaF^`+8 z7x9Ggq_2sqO)T_pX67 zK`&bVk7vDnlklAIyzqkXqVSUNvha%Vs_>fdx~qx_ZwhY-Zwvi|8dnk%`uq9`wZcGQ zkgJCY?+Js2A;M5$m@r&;Ul`%4IKoI_l$S^HJYKv;ynYQI3!{ZG5|mcP3gcWFOc*ar z5Iz+q3X@#RQd?S48 z6^n%LgoUoEDJ&9x5Ecu4O8HUvNmwE*^}0kZ)g=7tC5c?9Psj;)F(P4^kQa)SVx>eW zRT?Rcl_pA=B8n>IuA*F_G*wJVluBhaWp$;Q(p+hwv{YItYba|fYbk3h>nQ7L*auoG z>nUxNwn{sty|$)NXvbVC2vaj+_Wj|$q&hF-o61|t+e$yB zMtR5Aurd9W0ZOehP#L7WtGuTSR)#1;m0`+o<$Yy@@_{l^8Kr!ve58D=j8?`dW0i5r zC)$?r$^_+8Wukwu@tX0v@rLoH@s{zn(a)$c-ZA&|iTA3=?k<`;v? zQhhBbF9x0UdNnA|wA+n(wbHG(n)$ibTBY91&o{gE?nZV_z8bbWt?v)c1Y&AKPy~Pr$Uzj(l4WdzHq>Vz*bTx5{Is@2&KWm1;M9+UvG^UBW_eymI~4Y%lD#)@D|^L1(Vs398*zXM?*3W@(4H z@3+b}t>y0rvQEC)TMfGTRYB(WEM3s__rN4Zw|F-3S1x~BD*wA5Bn*) zIsG9mOZJ0crPT?%@p@EW4_-9u-K8Mx)|=X$Us!x&{m2^s&9r^{-}`O$_et+744Y33 z8HCksje#AnGQ-D|%a3|QmPUDM9lCyte+i4OZK+im*QxTt+0k=@45!jiDEg&kqNUgMkeaiTG?&kp2h@I@pv;b7HW#c^dX4TvH&_b= z&FgmTj4;n93q2hQn+T*?%rg?!4|>g7BdDpU)J7q^Kr1a0D_X{rxWD_pDLr(r_wbpJgBxEB3?AWAw7#thL^T7^KB0HDXOq zMll?=+RDyjO#HOi>UFBYqk2=dseU3Vig;S>`c{x+{UpCs3Bg=n)w|_oR>xdpv3!wH zzw9qcAx$#@4A($%9U4N~deoFvDA87;gmkC2iS8so4BNeIK|G(ohyRizABA&InQLG{Y4GnScdf$@$(H-7C_i*MUvW^sOj}-^x4SS* ziyI*}QKqrHv^LYMG&X*KRY+)deV9U9S^~^ujt=SYJoNI}LqYNOU~-zGueL$O49paL zL1nTJOGmMcRQqN-XhE-KF7ApnTB*0F+1 zEI(cxjWs>@P2QmQSiuQ5hL2h}t!j1p*$=jaK{?)@VZ5_h8U3uR!=X@bh2_FzzK|aq zEsRZNV$j|;wbv?DPz~xu*d3<9eyi7TJwt=T^{t<=YS^ZFb#ug+Ny6>3OLu*^4*l(I z4c1#V>*jHsh-DI6q3UZoldbBJBOjBFjgDt_w4b?hFgNBBoeB@4>fZEm)|*eWJcn4>}3$^qZm8yuq+`L3^5SHDX$^RZxfD%=7^g z?mW$B!Z!Rnj1n^!wBhU_Cz?7&KOLIn13~S=ktZL)KV4aA)SJO;c2*4KGg{6l{&y0X*!n|E0b8~#UUTX+ zrxZyJ1I*R+)h0P0n!&ha2E%3fL-NN-!?A61C-F05=&&#ddM+;6g?3Sph-YC}+=b5C z&gY{>z+IfFf0E zMw@Nb0yfWwb>CUXPc|euO(b!pl`y$rTl1_RQNF9JHB95T`%8Jh=o}Dwx$tD}>B~iL zo`S+<>%miAABW>^akMyg-z(w+DcbgICH8HNFE4(bce_Rj(s5QAt+(t3;=K9{aXg2W zv?Xvr?U!4n*8sTAUAR992Y^W)1lcJv#H6!jqjFrBe<`S}k%z0t118Ck_7wOaq%u7E zhUd4Yo5AI?ox-(`k=AY}jZGHIAx3>uJ$qc~)$=dfxJOX4i}zo>N6Olc;hF** zI68W)!elp8?rlr7z~1c(cWnl#38xLs(jobo9m4q7ZWZD``mNA4?#-^<+aV8oH-1sg zCBo3I5H0oM&gY0~hWRhHM;_aVC(zQG8<1_Vxq;y~#~T0>TYQ#8am)SX_Hf?ZR5j@2 z#eZE6AR{y7Km4tr^D|tm!PO#>jONnB!^)c=OqR}uKP7I#^)Os%E8HKQm?+DAta2MpZZI8%-f?YU zudwACt<_b!yB%CAqkC;)1}@41xzwrPwp$l>qRKGpM=$X>1oMv+&Ws1gVD=Xu zm|Hf2%JWvMn_IKu>^);cXKDS&6#fd*ENE97oyyyMqrRLEUP)51j3Zqf>ZZ}*LHTloC zGzY4!=1P6F*Ae^qGVXB%oj!9Q?842V(y0|97uvkJfbD_@4<--5Ger68q36Q;#435F zVkPJ%b{uKO9leqK7{(K8&nQ?)#tTi{tdLga5mn)XIvv2ZJwE5lb%{@Vo%niv#dOqbC0diYLp zjj_o_v|DGEN@bhWI=@Jum}dNs?dWLRKpR9|SUojCbIfG^ealFjyw9nSYrBJ8bSpMu z2gTmzj2778+k-0ZaU>Z)@HML&Fx<2nJ&r}7{r)&y#2y6tjZ#d7zG|$x)A8d?Z2-Q*DyVGj;7vGiLZVz8{yF)Sb%}zyaWotvR*=Ba2Tf^P%+;+D%)lAX_U~~Mm z)axq4VxZUl?E)Ag3= zxGJ~UXPBMvr{!vRnEl+kx471d2T0J-&1vqG| zbc3|3Rr5pR+YibvBK=jPwOnbu2w_sRzDt`&It|J$+^I4&vhh09`P6X7@E5`cLF#uO zVv8IN#RgaWF-1KeIL{X%5nm`e8PjSfJ$$y!%d?0H7lJs3qQhTHkJsFVOI}ZxAubvcM>lXKJ+SX1NikxU5~VG!J{GE|Fb zz_%;)mqmI}(hOf|Xz>%PxC;`UtOIH;BPtmbhnMIX0CvGY{#hpo5tuQcNmoa>BAl_1 zLXL9}gZ1$K@q=OQ!b~B9HsVQklY9E%XG%7V?L*?0kO|a?%ZL6XR3Gflt`o zXawbI*nf!3r2$k}qzXnR4v6rz{RXN#zh2I?>m=kWRDUQF0?IC!xm_DT zn4;V&Dls#6RU)2@*C!Vj3%=1gx3kcSIF?C=>5X=NWQ39npLr4yMz zqia^8&szQHqMj6yZ_5*eoILW)I}_YGA2yorKB5~}l(F}R*LP>1970>}sC_TTuHHvQ z7Un)Ij7}7exSJo`=Sx= z%)1QrQQogUiAViBLi@>IIKBHAn0fGCoE2#Zm*5*N$l!Vsl+nKJ;9nW z+rsVB55`U@0Bi~9Jev3?EEZ13ksi7At~8lDt%Z$=Mf?6C-3l>?Y1%%dP2@+fXbm-D zJq#*cMA-`;c3NwOaQE-u&*R^5EvdGIrHyv*;lo~|VbXQaLI{pzhH2Me?6Eq;3g1YR z4u^2LFb@Xwc~qcp2>eU^1K?v-?O!0*Z{O7~_Wo^g$9}N!5^o7q;T$H)r>+~>oX8Dv~t>{Y8l7~Um#^Y5ySUJVvQ&QbkTV1$_RS1{$fonCNr zdGu)9xAXG#TT~vfRp#I;E4z7gY>P~ zt+`9;tajsEj$LDNIdG$J_j2>GVtI3-Q)@KN$MQ6brbl3>hZ}WD_Z&BN0D*tJTeNtF zK>c)Fy9J_LjSQ;MJ~=a1NtV7+S;~j*V0<~x)MGJf~Ks&LG9qn$BRE* z)b;G+mp|2Sr~G8ABpmo@WxcY<()fn5I3&8yNw(;t%0{c#%|%w&g%Go(3A+IA0{ML@ ziIf4q>wmbtxo((@w##8?f!)`{=t`ov;=iSC-8uDMUUtNgll4do=fV9Jc zZliH&h&C0^D)hPtluI%lVQGaUJFXFtC5V-mS0su@J#`M%Fdvq2`W>kq)xhp$web-5 zF%m-4UQ`RhR|`$Nx)pwv0iRrS9|zqE449RS{`j2> z$A^Q{-T<(6J*cr|#=8`QoSrZ%BR&#eUEQj73? z#ow=J)vs~0sA25hluh+s%`;6sjSY+UQ%w># z56Iq)tQ7kn)t5V!&c-2XYNi3LZ4DvZ_DqZwKAG=yS{-^tqSM_6DYDk?9yHc6GDA^l z2zfV8B`hW84v~q6zJ={dHAw8gC?^k?4P@TBI&$^S$kkU@b2;>dHkS2f9jscF2M8B8 z)|RpCU8Y$d>ACiTyMJ@!Bf4_7hE2}WuV+CzJ~c3CQlG-#O#k}pdXwMCBPmT|jU=)6 zSg$rK<&lNEdsLB7{mlsj3ePKcs;@~(gx9a%N=eN{D~=G_X~o1UbaMn&T)eVKL+}w% zn3T7Z#Kw*FK!i0$k?w4sTzpe+izIbI{L@$>Z`0L;b;4{-z3t9L(da2YQwmO}(=k0Z z(?HCX7tOG;5q|G{BDO{Tz zKez~>dW=pz|zA0U#6ydR7Mp=O>RV@9Jwk zb8zz^*_>}Gcep~aHA30ya-v*RLfmrs#(6p&&>q|+A4wLDLfcCh&PQ*!V#Moqt&f&H z&!+S7yJS-aQhF^h zV!GL)1U`ym1Gaa;aP=ry4;r7kA_+kI-`1OV-%XBRb7hR>AyM{Ek~^|ZxU+0Z1Swnk zw{4(8wZo)rNS1_9XouhRq2^FxDG670WyLfBl`PCi7*TcVF*Gww7cHjaMCYQIH>Z>{ zl9@36U7K%`W`n337*uF6d`2GS+Rz*qYEcc8t}A56v+$=EFi3tlhKX_o>PqzKMZ3T& z*0@6KNtKye4TfXI03M)m4hY`U5 zT`~z#IF1$bET?B^i`B}*^m)}TVX7J}tT6rr>RT7>NQ6(#x{& zVZn1N7~pk}0KZa=j6*R4*7piG7}d0V+3malfDxp4sLQX+TA z6j-Wv8^L}EtXi+yJ!sZOs`d$Xzxp<8?sW9UA9Ru5w*AEDk5CHE#pvPI!KfNWaTZt~ zwX(&PByknXB;Dxyv}8Ukyg7nh>qts92h)`U`2 zE7;#)+nSnv*3dl;68$<8=RDYhQxNe?3gRJ6XL9e2=KdR=Kg z?acoQan?dCSm}d{!W*>(@R^eg_WNhdA{wlfwDEtXDd9tQ-_Y4sP-F-$pc9EAN{E~P=!0no>E7+z)2;{fi}FmW`5o`{K`vV{8Y*dlP0+4}q8o!A_R27kH{`<5T<1td(x2 zTLYYn(n3n$XT(kmp=!iWJNRODu|8v7TWGQy3{_D{6)rTRpgxvv;pp!}(m+2Ikz*-9 z6VY79IjoB_OfR%<@7EDK@5bHCVl$QpTn%`gIKBdJx*S#=$~U3p<3EH$Xu%7@IO--T za&H=qj8BfqM}a@4Y2o<^)3TOR`D@O3Qr%f+dks0uyRxVb3gN=iSYp4`mC& ze!br%QEP*c2FsYKRiJU!wBIoY4caR&;9KHeat5rwx3lINhv>??jJ1#Gk)HGr!4*1VtYFhJt|I7%ckauJeKPhpleg$w-nU|%T6Tz zT6T+KlYx?0ufjLQ_3FHr5$hVfB-L1zG#hWep(94iR^r`p(8)%_)7Rs-=snHznAfrT zR%%K~Z%91HjBB%ilwY;lb`(jHDsl)pQ3gza#EG=_cKr#4F5u*eA*y$v9ry>1V=`E7Hv?sjggp zFTb^Xy~$qoZ}^fb)Mgflz0fwX2Ul14#uvS@^`qHqhh#pea=c$7K33y1{Osu6;^^4JyJKT>#k&t4jz73NIyyT#{&4F4{KE&c zzc~iAL-h5aBYw~a0H_VWCxE^_%X@xwjbGa(Lpb@ia3@5=4xcv9qpx%mgY06^!8;2p zGwV2>Bm3Nc`GMPn8YN4M)u8?2XgP!?j8{F@+N8cuyVCBP+f2|4FOMsoH@&vNVAap7 zGYzMtHF!e>Pg>3SckthUdPrckKO1mRVW$RvZGGNDV48e+sPLWq0M!K zJVuh>asuwSHq(Jqw@S&6JN&%ZM80@K_>ayXA6H=6sFC~*^|IHZIa)YBzgD-TH>inU z7F+{lM54)Vhw|YV9^W~Gg9ZzYSYHwO6uYmCtlTGFxyyGOsI(6Mc?{(j1aahUjji2Z zumSutV6lcR0l5~ZgnzX`5R@?DY>uzlJi9nq^dikr~nJ}t?LB%I8(*Chi(o7!}K~CY{OzW z#By)TruPPSh~aS;mM?l3CA)*jJALzW<-=@pT7@`oRMuOaBf2h_)H^B_92fVIiztla znQHe%d#Odd#I_!GId#>ojKm|Kn<<{_)9w@oW>c`#m+fv^C7CcO2p>z3qLk5YCJ4hB zsf42QOPT(@pbDhJojh~4o_IEid{ljhd35XTY%Csd4GIv?*4e>dBHDZUL^DWu)K`H1` zu=nhpg0~>!8YFAQ-bxa?y@+*%G(%kl_wuL{ z(_nb_ISI+J#m$`G*r3gvUv_hwIltznHgkT(-QLV`TSjHb*v$F(?BHfD()2EG z<|1vSZ|3}7?%ZZB((u2NG}+npck64lyzC^N=;VJWvdp(mCi2XHpH1ZG6#R`hGq6mm?3L%8797m z-;IptOC#iO9F|97y+A$AusY?j>$i|LKFX#6?BFw2t3`@fYQj*?Py_wT9_E^bOOlX^mW!+fshpA$Y<8B@^ zJ4}i#!rRode^3t^wYgpg9U&@-OAeN*vm?& z4rf6P+KA`tMi|2pE0UJmhnkpqxZA{=dHMP zX}H+|*34Z5|HCbmRV+LKx`sGedCY03ZFKyiXXB=!b7nxORqKZU5uQ7)$9|;VX&c}z zTxD-JS{rm`nao#3Eq5augNnoLf^=U1VmHXfIfEBTXq@}5EjO3}a(S=fAsBR&i!cs* z#zsfgh&c-_5q|X_-2UlS14AUw$Mw)1L-!}q$ARXWzME0Xz1b>4 z&gH~7B6Nb4KEZW>l(AF?e7Cd_aqfy<EGbTXGKZMBokI8Q|%!L)2{&E~uBx*yNt-eZ$; z+}r3L8Gbk8mI2pXr!FXb&=(|jIOYP7AUcEaBCDiD0 z0+FAqZ=T{#oNdze&kM}pA@#H)tSN7MRcZ0(&odpu-^DNpr_^D9YHWN&#H*p|Tuz0A2DGWmGLNk?HWMm6^z7%b?v0I~6uP7?Gmt{K(2dU1 zp*;w7*H%z z7jaj@GMRDHv}Z$~rsU$$Nw!OWmXh}j+y04Q|I4Z zT5PR!-{P4mx1lL}YUC+9FwcWk%+1aQIcnZZsbmF|xvAi3SXWcZyB#BM9nS08schl5 z_T}K(rg1YwUfZt{elV_O+3JnRUay=M1w_ZQ`~X{-813>^R z*t|C?_iv^@gIN=Pxz5kp;sKhvZG7IG8s^{Dn`#h1GVqlZo5XLij<=FwFbxo?x(uh(o$xJXx6E_9zrxngrZ*65QK?hZ-u)2_Ie zntQQh+*nzwO^%m2+H3iO7*gr*DS1re*36`1&vo{*;cY|tR^(EWcS$dP&U=^@1ABz< zW5WdExWSorbZILeO<~6ePLg{6>O)iimAS^wx#V&Aq!q1eN^&Y`AXsNegon00T&`(D zI^$$FS`+D981l3m2ZL#A(zd-5RlJ-{f)&CcWKnb^LUOVoXvaD zTtn=!)d2BUIP&zyge@mN5sR3Z4OsL&=R#Y;Kr&l1SJ&Qh zA#K!_cl3h>VN)%>y3Rzg#gR`ZUN0pX(_qF0gqi43%m|$#WmKgR zv8ay{Q|V9u!+}A^*mCASwLTw%S&O#%@%p)4L$+r)`4vnzGH;$E@&!U<+9pkj^xP<+ znTEC|&#)*s0d`aqErD#6Y&76uD~Q=j>M$bFpUnu#WC-Ob|2X5L6GDTyde`J+z?PLWoS#pY)e*67>|r_7-O2NDZ5j z`#*nV#w7l!)Q@+>G0ITfpP1^lzsRwqG|Vqz-e3|F;I^h>2DxGZIIN(I!S63EFJ9mJ ztmrGd$%(@E8Pb|Q z>(j$n5Xi^#%0LUk&#;Xl=k~B%xIa2EK{j8Q^(tjLKWaGB$Ou{p2gfR=Qs;bRuw=-} zK-fIQCWXLi8(#EM0dKc=U`mP`#5!TI5HEKzjX^ApKQlB21KLmkK*=14sgkMpyaQsT z$ntPTMwl~vYZh)u1FfXNG50wKiCt&P^oe0- zix^)2B8AUAW1d)c?wHADZGgXVc=%EAZ0c6e8ItE#f^lA@t@EQZDDl|z$PLTcn8N>P zc!H8Z(KjAR$U51vQv|+#%W8s#=wuM>W6*-B%k(Z{ip3F0EPehRW}sYP4ReFW#2C;Z zS#!X@o$ah#+KeT+PQ!D)#wE@P*vXUe^MA4UTU?2NTs zjLF@ROA)-AOBOId;&&n7_8Ep_7EWq*!DbsMHbK{S>ao4xVKb2mwbuUBEhYjYzVj>r z+C70Rf6v9BhE~pP7zB2h#CE4?I^vpC2D})W8IX*TG*lTLv9C%A}%}Lr2Va|lXuvjny0l}Zx5TFbgCmK$4P^DoyZ?VIcLmt}JzDihU zn=J#Nc{cSGMNx$l)>=CwKL%9jMh3sx3T~WPI5c$Guz8T<*(r$@+$-TtsE%~v8BYeJ zXfi2(-@m0af6sALTeM?cHxrPIhRhE(%PpZh()3Ky#llxm^b|;(*79Z+&2+n+`Z6w` zg}5eoN2aV@hIJE|EK5E9bMlVq_o_^W+r`a0IAlm~D3^kkjSOOZ=4H~^C5B={Q8b$j zi0T73Vpu9x%y$3SB1&LNV-~&J;KSfgH07HhXkVc3qJ$ej#@rrs{)LskW~d$S*wQhx zJ8l_J{Bv87SObILlWZ7EeM%X@!2{ee&iFxQ>8rx|DfyOHe{T8)Hs+P0Ut!1CG)1#$ z0EsF`i;J#_BO`)|5r8Bqtrj4VPtC)(1a}f@5upcHy~ytz%!wk!3@Eq$woJc= z5Vr;jB#3dxGXU*)m@?>$dexaC($Hy&OHCdvFPc?EtirJmD=TNgnxGOcK!`u0-Sn0W zepH8xnjkl}h?JPd9?`!+N_J8`{qoK0>|KHE(@yqMgq3ZnKb{0ZhMYRu0d_yZKp*y9> z*4!2y&S0mcHE`1ma4~_Cwn{&1wR?16E(45(u}f!?SYL=piQ%O40G&9W^(|xP%l|M0 zY2fH7n1%?HMoI(mhEm9BC2nHB@2+05_Iv+W(RT4LpK;lr|AFnXY8d3{X2;foiXH{n zeAX)>H5j@jgE7^6;+smVG1sUWY+8vZQ&KE)9jJ()y_JAPmSXj7S4+$Q{5J zSpSzB_3$;FHV9cxYCW>zxxU+NJr*E?tD%x(K&=`*+ZEo|EIS6-K(dz*TbbTZG0Ths zj`6$aFK$|T0K+WY+bReK(6Nv*_cb1XMaXf>8jf}r2G1=;Luh!)Cxj*9|7;nE3A8C^ zknEjVY)kG2BeQFUAVzoGva1Gl!yFKaLhx0mg%^Jf$KiH?S;M)-o%7O!P-+zNCgN7ewR4Agr5D%HkMW(TXaap{VN#r0u62ybP$>W z_l&KYr@%@EA8ieR=NjV1Ne7C3R@nc;N@J28v@s7ln}y*9_;-~&I7M*p=juMXXMGK< zt&#&bMZ687A$78D$otTp!vumgx<<{t_;0u5Grkm5*7OoNnIGy^#7V+)$9O(QQ?L1L zNfA@R+L;ib^jm~54(VwG^2NxN2ZF66{5@Rv`b0Yz2)9h}(MGUi3NQJHYt%G@G1lJa zv}8IeCJT_$zh5Gw?}%bxT0F53N>rDpoo|>C1K7yZ*!}Y59jW7Yx0=cb) z!x}hD4{<8rF5}3=jR36;csgsdj3khtsyawyg~fWaN+R*Qun}Q|hY0ldwE4IWOCh`= zF>>JKKeh zClVik7<6)JKu&$tXf0D1N(l^yb%xHUuKIn#bvz1$=#`)`DJClpJVmq8Jgno@~Q3@^Omg#swQqJdt8y zgl88k>n0Q*{7jz9W2WSnzaHH1!HZLoP~HqHAJ;BymY;AbxLXA=E4l=QG}{6k;zZba z(WKIdPe!{M195jI`yA>LzWBa%i3)vaE4&sbqJ(zv)qt8kC74$f)l^pK1Y2qfkh zGXfSzvGnlrNAOAD6XCNYZawy~J3_pRkd>7)l~2V=$jRb`eiS(-af8X*My1d(`p#Ba$PlyzHYQ7&~Y3Tn4DGk0DORYCS^JsBwd8JsIn5@)_ zljA{g;#q`>cSg*SyH>t~r|dai#g|Qq`gmuA&6QOH@XI*Ba}j`MS`l-78_97^(LuPy z8qe7bYEjA?1acP$tUetZ3U{)RlH9Zkj19%8YtehhJ~og9%*et`gddjBM9H(JR2;;q zNN0>2EyDOm(pf?s*IShEBGu^^{`Vhj)rm5D@szL$(_53^ielNn;4C*V?e*w9^~~t( z4+r7FrH%5zY6S_scsz%b1QVr5l2ASyLZQAYI!Z3e$qff^lXy|{X?UGhyd(zlrZCF_ zNr4>A5qnJS(SR3JlbIHw0ahv61xq-aLRh%Ft_jlEa#Zt1(ys=AF2qrrc${D%_?B}K z^}RSmOCZ*Tvub)qE(O{}dXnx7hdFgE&N7Ewu{evX-1D$CO1fzxP1{>_uWadY*%%yHi)Dx2usXmN6O z^Z{a$j*XYb?v57=#k-}s!sy-7!-<)>*$0K<-2DPNH$HsloHy|1`!^&uo9N%f{o+(* za%%MMXfQc?cYJhe>TYRjYWeQURG~0ds}yUs${6}r9KL^~#NiM+=xn}wLn5=3!kaU* zh1s#02QznPXCF@99Uq??zgrqBOx>L*l^)KG&yCKM&^_E*3p$;k=7vC`2++n0QYbys zh~1xObK|xfKmHgY@k0s4p?c+-U4E<#+o}TmC%ht%&hHLvtI`8f2-YGSx^MDl?5N92yY zCFYe^WFWX+ylr!2CJD`seeYjvk958sWM7AY{KRqLRC!@;zAWDzhd9*BPkOLo%U?6f zCpZnKmAD;k-rHFnCLYWVw0(Xdj5bX3igp}9?TpO``PLpqvZLHnjIJ!dU<14wOkq?` zAy#r=!-h0#GKF#Jo_l3ISw=Jgj7^S#cp)Ot7b0}HK2s?WU>DfMZgl|xn7eorH-Lwo zgw~e$%?gK3v%Q!oM+gIi#5c*OwHWIPE}GYIIgrFnWfR{kca(d@3QdKL0dBwOCF0Rb zd69Rn^|sjnnP^AMug1<}Sgm2}NdRXv2#)BJutX~@A4-TO?zoA3q^Zi`3MX{oB7JjS540d>6}%$%w2-swhsT<)9`EIMgk+YY)c-d%cv z#}SWS(qcGySK1XM7yCrE5mokVJ!U>WRTxm%$)H;nej249s0>5=%+f0v z6=-Ws*LP?w<{63TVpxN1XY!nAhTtIo(t*zoO>S%Jijxtm+7^p8vb{iP7HFDk@v!nH z2oLh#2X)Bb?rZn>n&Zbf_xgdh%UQ>Y3=}5;{3#~Epq6t1o26AH-S25RMZ&u=o&Oo$ zR7S8_wi7}p3u)JrXP{;f4n>-Hx>b8kQe$Sgrvy6uv^r~uY=L7lBFB>f*Hd)UPiG)} zB_&-{bL{yaJcuF#k-o)&~D0WpkAS5L{2_dv2 zofU_xa+&A&Mi9!^Tc3WWNI9-N*b zeCFzZwJqcw9Kp+3p%CECLp>9lKQfkbYv&hdVzYsc_12ael+S)8B+(p(-USB*V;@%L zR_tNOKk-~iBJJ1`#&SP0@*c5W+3H9or5RLq9F_%8$6=ysLXnp@^zz?_t>*ck;*b0` z#b|dy^ZeV$=4UgJk+WeU_Vh1zu4C9{!Wo0sh0yB~MGZH}*_c$e+`FN`qocK-+;Yt? z2CEdFE;qfM-nYfoIbY%EEj)ggrQ={+F9aT|m2zO0OGU!YR+=we_5{mal%-myvDE=| zoz`d4t*qiEH1EKR?n+5y!6`&vmNT0UTw0nnzM8dsl((Vtc=ZlJRLHZ79LdF?^kRW- zbwLX-cRuB)xBdf{%j-E4-P^!J0lIYIT_QQ~%F|gy?)X9z-d~Imkms$}*<=znw7noa zDk$5%TKG7zmeyKbgc2`@wKwH4I-Dzvj+SG4Bht;0RPM?4rC&FWl6_2mV~QjPqV zuDcaAdmD5v9T1+t-bZhtPZgGS6mNl9zMS5wMW1$X=JAB=4#M{%y%ey|m3QhHW!Ww& z;0iREx5g;c&6haN&s6_qRPb|GK5$=lWJ(k7sGdplx=ow3Vkm-xR=EPWM2 zRk}Tod!HOKTLcPwXwW(WN4TG>{)qXznKdLG9>glVWz^vp(&P;_q9Y0Q=xlQFldT-w zd-%QuUFtBgkgWD3ah{;*X6Why;<&ftdn}K!*hep{JkgBYDSC%gXaPSZ69)JkrHWgg zwxK7A$q}rX+ieD1SMWMKwJxW;ZjZySNm4E|R3n8;{!6NRGJ_ zPFucZ}5kAR0!zS0kko6V3mw@tM%9zYkZlxpem=tsNV}(SL zlw=}A;!X2-FF*dq}h^h`5F~K>OzB zhHvPqQpYSF9(6ErIRF=IF0U3sCG69Vx6jC;Pc0?#^QWRP{kEw=pt!P{1zv=-)Ju_R)g#lg715xwiM=ab3bqK57FsR%>SJQz|+otCi49{v&8Hl-HomwKjqF=rNat-q}!$YQq zDs6Dq&3UhvL>dW)5k1hRXE$(CN*BERudb;D{ZwzW8JM4+oiT48)RP6aD6KK6Lg zFSFa72-|;;-Sh>sv`CK7nTSk;Kx0utBc?|c@d7IFu zRPG8?hc>j)nFjRz8o5H!#U_5kS9iSs#RoLk2bD6j)vSE|i14Kn!7j$wwc`;aPixn8 z@+*$d(?J}M=F`snuV9=HA;V&zwJe;hZr-OC7juVjvR$vu;06Qi_tmq&K9XQC&BX~1 zGGR3ZMfvdodRj!3s_=GP%|c1=6G9@uyz&C}EzCE5Rj1X&+RG}HGGT~EFczA^W5leE zDQ}6A_M#b9RsvYr;f4yOcdgQeYQ5;cfAHTB`G+lxzFB2uWai1-Aa+cQ1l8Gzk(lC< zz?K9-i(cSSPH4{v63aSj_~#!?zglQQBgR?F55ZUU?$^C#$)fN$FFK7__M=L6_RJ6P zhap$~5O6YqJg9ebb z6Kb~r2m9dJ(gs+SHUd`wbwgscTuV)8)u!_Zx!4e|?&EOEisgS2t?j1>t`b9F{HFIHk(mFlA> zt;H_FKrK%vO#s=8w^@p5wBg8i&Pbt}pFy&soM{}e>ySzrTI5~8IRb3AXC{7?44mCq z70mL(9>2Ev=%8RDSXek(?v~nFHb-JXugzlf~K_9X#RNwMDMS zi@-0r+Nrl`f@BvW(&>_53*C)F@}^p)5igxU4eVVDaHHmp1(=`|MgoQahr3o-PvrWAU8>A@+meaSnAbvViSTn>vxG;UV?Rl6 zu`b~MRvuX**)icgCTu_<-zsYaODzY`@`$;9p_^2FQ7N<~FPm|ZDQujgY`$&HI$J$m zOcc6pfaq>j6(N|T5RwQF1T|MJye~I1QRP(N1>LI*^Q)1m>SqzZ{ac%ys($_a>cGi* z(Ha?`q2cCQkHS07b`WB2HE0$pn3ORQ=r)f!Gb5%C(zZ}%kTewAL=g-5`9%9{EQC=j zxR=NRYB~aBGJA^Ix~3;96e|BlqWrU;O#Iw<{?f<#7)u}R@6>`a}@YF z@kUq;;95=x=t1=d=5jz{fUL=L*y~$2^EY!pAN@s64dR#^)^`6_ybDT2L-#yv(lsnO zlK#KpcQ)xgrak5a?`+P@)8a^${~F>yZ_v(;=UU`)EZtLHsD=OavDq0s^gTMwA7k=S zkdLB#Ovp!xKgOiwm=qZsm&8f=n34}Id7pn31ZF`>7Nkf)iWCJ{QHm4=W>K0gN`<0; z9+#5iQgU31j7yPmL2z74N(&QGVL~cQ26daLL-;1MMy*SF%i=$k>Y>Pz0AL>DZJ2n-XAC0%b~|ObL`Jfifl4r?k3YJtbIA2~SKFxP>WUjglZ= z5@MAE`I5ANJ32&{l7KD=f+cC8BrTMLJSAzUBn_2>Jf#A6tR&5rq}ft|$y3tSg)vJ7 zCUQymvn2dk68ni5>5nAuBHL>J5hVpDuj5quCz_@IvAgMbxA znQibPMR;uSi=f~`pzzq@msID8fL~IbN4hY|BaIJ%!Xu4e0)$9R$y#-#cf zQ?LMJC=Wp8gBvOco+!$Rf>}W@D+p!I=lQj!@3zi5c@p%s{(1!fd9CtYDi!7qWL-DE~VB9pbijDlYR zg&76En5+e66d)~qXGXy<8e)71F3c!}qL8jAq$|oui>yO085a?2_{F#sg>*$3v7(Gv zQOHvi@)UU*7K%I#3q_uWAd&!+juoY2Md?^kI#!g96{TZELB7by15N4*J_reXP*?Cl zUBL$t1Rq3Jd=NqKL1e`T5d__%*6|@wxGTj`ZUGWqs!vJvDXu=ogEJvm@ zK)Eka?hBOr3}u{IYC@Jld@z)89x?o4DC46Ox2+oF$MjettGvDNr4K*D#cW`i+zIRq z>7Fz85O()+7M8+p1y2UY(sSoiHvPIkyaJ23(FLQX11*rF^U3V`W?!{a`^*f-F!)$K z3A%8>s*`eG>GFLQx-$2v;?>%nu8qd_b*M$6%#*ju&YY{$qd)z55E-m5C!NU(AEY9^KQ*=q6YlhtHXyb0c*Abn{~! z=Y`q<+*QI+C#;XTlWKV2y>1hSXjEv02V(jaT~nps%&5G>pB^D@jhVqhu@NBeWu@_E z9zKIAEP{@;=1WDzfQ=5*BWH|7@kx))MlC;&Nb}AH9?Q@DgvL`IZ}%sdITJNtwY8_R zW%NrP*DTM{eL|BcDu=OtAAqF?-6t~-Jdydpkx`TWp7FjbMOuwo(Am?dFP~I;`sv}x zs`#%>>nD@p$3htxNBBfpTxNKyiww5@+8avMH`CUjEhL#9IYbCr%HgiQhHyt}ZhMen z67fOjPKfbJ$s~5fL!sEK^37iR&FW=Zte!FlVda5CoFSgdF@yx=b84Z>x>xE|UfU^PI-D z7T465uLHwL$8>TC!_W%puC6I-IWD5?oLm>Cz|&=1J161d>gF*=;8f^OEtd%=Ao2T3My8WNAkJLuhobqVqWy?s=m5N1{c;>J}j+rs% z{W!nSh$wK2fLjIYGPf)4LpFsrWY#+HxJjBMz)1@Q&^ZL?p^z7DEyY_2SLt0pA$ zC7oYVNpCf}W3MxOY-h;>odsIV%V7C4t%jR=>xev4ubGE|qVx1PY0Mo2pFlteRU%BZ zHWM`i3ke<)=B3vxks`xH;R??)=}-y_62-TD0f!g8P<&bG3NL-ogu*8h!`jdd;eK^5 zwomZ7S8iX?!5_}=>im|ydN=ZN{h1lmXyLExO@7pmRd+bZ+Gpva#bSz+-JD%Xhw8om zdz4xyxkXP2(L2-^jnFg)4-uc6{rUCfHgt*o`IV49Pa)VZ9b^guAQzKu4_=?#hlkDZ z@ew{A&ploK{v%#qae%uIU$Efr!M`JwcDrgA4Zrt8!=ZqF`%wv@zr+0?Ri{<2?WsRq z{N!<^I*SuX#DebbU8_`|E`HcuM>4+Rf*2?7skcHTw!;0(9n=mwAHJ=G^*t|Uo_zv8 zEfeqKARVR}m*_(gXTDDs>p1`FG{}u%&+O-)|LEHXKYDnLyd3G406o@X_fv+jmwZ-B z%Km-Ge);U-xio%$UiqQb*^dH`E4@1TA=4-M)RFHqeV+$|z(E=t0ea$-QmEB#cuWsy z-F*3&I(ip>)(&dd`NsjB=rgVE3BjPXjNzuOI)y+XI5SV-Q*TeM;E+gTDAdzdOlg^u z^J}8T25bl*C}*^|DW}KyH3Y5ftO8qXp(nlXQ{MNI_x-+c&L?kAsHVphcXwcUfYdm7 zVwfB!^=4m!7FUs{3Za5X6ghw*@bIA*Gmpxe3mVWbbe{4Se)^Jr8UJ}R6L=%^u+nHO z0}+w3SG2dLh`6UBj!Tu^mLsh_4upqL=c|Ic#*>B|T0twjvmp%R0xpKEbJV7*GJE*z zN{9&gh`z-eC|;8hPp8#`zS|8jlgZ770Uwao$lLW}E02#Mf=Q3Am)ey5&W8<(S zsXs|=L}yfDHZ9Pjf@p5P25 A{q;nzUT!nnqvzgmID7Nr%V11VrRax9Ga`6AI&WD zeTU$%aXt}>?3-zB%(i=b-c640U%=JVdT(vdyVB&Indgu9R61)P)+>|adpX|0UdXIs z;luSpe)Pk2xKz-ei4WHixsd)$K;kcxrgTX4xY8Kb%kZTBQeh^E=c0+vUISIhIW0(m z1!o(bf*o%70k~++61JO06$3!Wlen}TQqXk25LxN`-%p#>;6fsev;qvn_b?oNDs#Xt zw|-@s4hX?TNJZk7Col;kVW+=cTzu2pua9w`PzqqmS#BeFhv;5(dojEu-i6B8s%M0= zV9pLP&lR3`SW77G6!d_|X*FvZCdLuriih4>Yy2FS&@;TO>pLcO~Z6ak-c0 z$Qk7^T4Jf^vn?zE*e#x0z)XrQ{a|$X_Z}eb?C|V4NIHS3aTYE4??R)qD>&Il=zk6$ zz>{&Qm0TpQ85!hl5a3c=11qS>q18FK5Hj8j|$IOVCkf|(*>Vj!Rmr7HXGqI~?hZcjziW$_JsbHj`Wnw$g z!%KoBNdi!A4i~Xj$){F)4qKhm6p|he+|6#}Quh(yt4u@&g7C;fh&7F7I))Hdlp`wX z!O-1Swbl68zSVXuCZK6dTo?^@vIzHMlSqU-5#cOQccuRBlZB8MB(l|f!iH`NWZG)( zM^mIO=_PkX4mO@Q-Bw#U4{L71a0@3NVi}!z7vvYl$&Q1&HL?$xm>xwtFU=JrUHNoC z0jeEhF?bN*LO+`rgWA534JZ56m}TDciwxEw;}y^P=iVm)*dF^|#mtVFaIGxmx&7L+ zQ#MIxAhPa?)l{WcSUzRP$xJ!AyuD{EKe`wH@)L)3 z8tJg@qr|bvL*jv>i6}jW(qs7ovhn}o9;`Tf@lXHW-&a6#aTLh~Bui!?UpnjBo(bE~ zB1ny-=1~Y>GO`qx&$VxK$x3rNF; zJXnOrfepSt zf8z}Q4}bJF#$tw1Jyvtvkl=Ke<=D#S0#kuGSTd*qzesvmwZxLE;2iA zc)X{IUGlbUND)zR*=#TVD)`V$A>a^XJwLztw0`r8P(*GbH5{KM$d-{R!|_6J2ZYWCe!xK1TSCMH(>o^n4-Wnv5x!8LVlG!ph-CoJxL)&~q*RwVywvRp;$xzz81mPBJfZWo$IU*qMYX;i`U+t7M` ziW^|JtFlxzdnP2fDPSgrnF_)X=9h!#zPVZ8^Ow*1LR^P|KSdlIGl~6NA0p@bV9h)> zGmAc@g0B`&Tb~XEoIUlXjqz2Wm|sBgV=KLk(+EiB&+P6cVf64Q;WWMr8gBP5IPEYWm&7~YMPApc zU<{$1&wL)4z2pyRwEyAX%z3j8|JLXHzy2V?%W-)cWm#~}wpdn}(q~#H-5e#*iZIXC zzMrTwiCz5f{qK@ci}96i^4eNKf~bQ8fSb{;VVTIqLvl9{FV0#<*5kn zJ-zajzXj{use2doILV#!Dk^j>AzL?hcu7#RPc_*G3el(7ow*yHiq=z*2jwk=Npvzl zcF6lNF?IH(I0!2a@Yd2g#~#<4P*vBkk&8kpOcp>Qg~C53rnCXvYfILMvQ` zRG5@s0?GbjNcI;)LR~O6{I@D$NDt-SKn(KR_L`Ilj}{MycLKh88bznE0Y4jfnAfhV zr)5ynT|I1qF~^^?#%_iz=N|{6vs*ZBICO#${Q3kwWC*mwu?RhrD024BH0qTw3(Qyq z%vhxASb8OR^mvu%7tE$?44kpZb8fohU=a>Lsjx!V3yb&br#q=tSX4SzQiPu3A z)hYI=Gm)$_!F49G+JR46ybhA6&Uj`!@KsON;daI+E@aREb@F2;V^rWoI(HnO80%ND zkXErE6${xtn@nOk$vvCQZfr6QOC)k*lYOw9%%@<9M5)*Z%c&%mQ;g+QHkMOqSR#=d zo9ct*R2r5@%qC(fiC&4(D`lexZ6`TmNM!U%W8I&)s2rKAYHm7O$_UWd;u|k!r&zq) zUZ}yncPC}dCzV(tFw@E4fmQe!_m=b3*4mZV-EKSl;@-VZaL1&3ShE(Mexlz%onIZ%?@tiA7@oRMpKbS)2;@37mW%X`<%lau5RK8MRdcxOmmpy}{7Y$I~vha^^x ze%(Tx61qwzcLQn%;Wtn2-E;*YJgN5?KZ0{XwLw?nWbR31k$yt}M(Ye)R<{!~>lK9g z1ltjGV&uNVVD944MZP93F5qS&f(NXERr^-cODlAJ0T;cb4ltD&*`EZ6#~UIbD{i9T zA&4dT##7i{Q2gnNGSKv~1ScJdamzt}gifW7`jvqrdopeGPNa+wUGDKm;cOPA5zJO@ zHYTZgsXxW845Z4T*{6@)bU7q}SDpnw5%VPA!$&{4^$MJ5uC}8KGt0QC zclXCPZ`^u_8>_U+;~UM^$exH zbjvRytPt**2Hnc*U&n8XxyV|vJ7Qy{GOmdtLIs}w(SQ-IY}tojR`F2&;q~3G@z!8j zXB#hH`bhD+%31^AKD6X__(k{N=*hs)%!rL#M!jUP5^HDPKF&1HF+KByU@?MV{AmM+ zr(fqon%uv6A5=B1%Dr_&q`=K*M*DsQ?G(CZ);#FL`rGfL69&7y-!k{&i$T4}uDZ(% zA{(&HF^H@4o_IqVOi*lr$;>kDJd{j5R%(+IKRgS8MMk#%43C zMi<5tp$t7dv#Fa__mAI;;PMo8-9sV9&#KI=sN6Md>gi?uD!&)*V7)kj_dxDQul6VJ zh2VY+ngr%wM))O#;(cpx>?V85R!jrhDUVxDnTz0^&F6iAycdq)nU0^(QdN1S#xx)OAwr*YW7`qvMT<)_aa#k zNUGZ7r@GU*^(TYS9|Yk22uP5fcChJv7$_k7)_yPCqp~rfvkc^(tctrjTeVRmn1fmZ z?}Z54WXtx!kSLNbA8tik*;TE~=LftAyD6Qsgu**bU0X|V~P<>Jh67oH6{ zC_@AM)8A6R{JqHIZFkCtwyV=7HcIx0pWWtogod3qgCYIh-5nYeJ~q?sfxAPmf4H?T zTMF3j^ar=QE257?hLZ+&>gg6b)eqh-3kPqcEW^coN;W4Ph6VUuH1mYl0QY5}W}aT{ zq{{AyMQV3toY5X>*M?xr_StNE_{#nHafIbkc6j}(-_(9B_Ll9V8+tw$>1ywN=*j-c zGIwrlQ0Edg-pdZkkTlWyz#UX(&G&L#W+!=+g$5p%Wz^f|X&D;1}$E$XBQBo! z9z?`nlb#5~tq-!>o`skY3oiM3fEYNI;)f>i>Mi`LfhwNnQhNjnkPCTEtKP%&NSkT# zB;QETcO1>X>GA_t7 zMY{kO^Z?JVwKrbi!4LZJxYBup_q(p&`nkGB{^E--p5T#yN(1563D;Y=k*-;~d^q>P zn|DT#o6$$f)T-2^G{s#8GfXBi?$CANZvUY@6D0rH&XHW3 zIxnK_+^JOh;L(QcZcZnwNYEjQ=WcHkMffJa zhR1eRFf&egMPN7Ow68N8Ly!XZ5RlBEl=?L5nB4a^Sw1&3+Ed9cdx%8mNWS8zfF~g6 z9V63I9Cc-o)v!&pyzLpD>5%ScUCMZ-orxWm-C00`V;SX zE>_-kG+uJc-Q3I~MsLH$FiP(MrdX5KtsA%OvtJM%7qgiKkdGy9PT`=_J#96Ihmvrw z4zK?mAkR;L!ezm|{BTmrbSp0fYwg*YK2jSk?wxG}m1g#OXn+`=VyQtd)^4dm%m-+% zKE2#%=2Dw7?a~r_i#pBv507~#25!t|n5oG$nCjC8vo{?P^Oq2wNSzIo}Hob+8f?xCxLc#X2M5`aqJc6upg&Uhh8m&&ROTP#n-J~qxK*GL-G5oIC^rq zP>t^1d4gcd2cgfUE9bBp`7V^(9IJ~C`|7bjqKoH(F zJ>?Y84G_D*yKYtq@9y^yMQ~NTS?zUjD|r}z`GvJLafkY&F?#1HiJ#Yc9uC7if$G&^ z5aA~ySrXNruwjJ2RKT&ev0I{LA{jkQ zQ5^MG-z)*^V3^WN;PaQAIw;Cj9^txXfEUn*s!ESV4poqlk$c_47Kb?@v#30%Xr5xq zDkjzl74$KQVi3{=2Awu(JvtqPV{txT?v}+%j z#91Q7hANbwqc9Ntcn}ykm_tn2X!)0wE|%#`WY?EN*f7S~+8>DY! zK{Fvj`sLHI&nKTfQbqff9K6y|d;0QcCgxOT5gxh_5gYwlTWnR|K&k9k1i=cwM#z(( z<5sY&;!pWHXx}vm-CGCe>4%&g8;Gy+iI)DbhE|H(n5lfb_4xbMe(BNeFu^u{{)W|cc51cLO;UCdAlXq zWIeLPZ?2`mEMr6gHoK&c@WgA8o|vkt+R_MXQD4hM-xcd@w7c|{(T&+#eYS!=8cN3%cXDR5%3f^MxX0viSuHUTCyD;t(4aS*Bk<2F82(|_Yh?fEhSSpvn6M#*UnZ*z-^H9 zB-vz(kkufS`);mPo<7bq9A8CFtf4+X#F0T6o5k(F15>u(>c#%Slz1*%~};jSEQ+ z3)<;d*8AI3r>)rMVs$b`GDNLf>T*|J6fYy_99DF8>hX*DmSN)`0L{>JA*A!xkIb)ctr>9X zb)C(O?nrAJ@ZY_!{>3{+{`QMv3*J(H;_!~ltYEths%t!}Q(qwz6QYpe04}JJIhbPa zg5?Dnu}>n#3i@pXL-YOdH4Nfv}JUk6R(!T=-$3Flft z_@vc+(WKZw^irNJuQL}0{mZ6H$_Q}}j9UZp#nuUJ_}YMi6yy4`J24QW30dG}W z$$i%8HTm6oY-e2ETc-PFdisH)h>m=mvrr4qYe6FeJsQE#0|lUpn3{6KLdeg%3fGY9 z$2Bc(d@~T~s``cxL0p;ZX=P-TU7=J!B*wg8gcAygrQ3i=T@LbXtwnse)Y5kA9rO_v z8WK9L=+!tc>yE+OT74qNWQ@WA7LEM%V`5eQc1Q|5N2tbnqjr#s=#P_Jz;L_FmheJa zBCMNG3d7(aXX+G?>iWZ!_?Sz;V)N#h{bur@9ke$vjpv)|^-im~2D>*;zdcBk()514 zxxs!63}<#4>E zvYiEu+K6A8kWFW^gx1xp3^yY#VylBiCPPvlviJ~JVC`1&(=Y0epl^Dm97231OTSqz z&nO;}>c--nrW-1|oU>*U;TV)Q!_R{n&*;#e(8e=fw82M#oR*QF9gskTy)Nx`sCT4+ z&}fAxwarM6FQp|qB3*!=No}FIPDg_Y>R&}m7V%VqgeOvnOlf!s5yyZO4*BsMO+D%emjuW9FWWA&_ zi}36MO%%|BjajISy-sjNwF2mo?ts@6WAOX%3nPEf&RzWY#7tOxN09Cg*_-hdUZK1* zdQ`8zW1)AHAmPp+e1$~vT2>L%tmsoVo#}Qv_2phSfKxU@=I^p7^Vc){*Rr^on;|dOoOhi6YSR*F?eH_4 zrnjzrS(5 z>{cY&JClEQ4-PQIsyq|08%0;h*dNcvb_tI{jqrqz6f(10cAuXm>XAt?Qie=jrxV2( z{MAG<77b=r3*l0t2sJ>p3lAHW)ytGk{)sqY?ri9?u%WdvQ0Wa9K2JbJ!}g#miUD@@ z=@OY>U=@IEBRuO&+&st@)CqNf0xCAmnhA9AL&NQk_zHy76>9!--~+($+Yf3Uh)$=~ zVWZnpi%PNKHpC8^bRSnNio!fsI-Z1fN`=l6Y*ThZghzSE(XV$ZXHF1j^DRVZjxt03 zzxKYZIj$o~FXp0=hNMJ_A_4Ixf;SNj2~7|LsSBhTfdEKC;%x}(GCMuSHo6;NlYN^$ zjhm#I*^77W4ey2{CN?(0>xlK6U+kBC@PlI`{N#sq*x?BO2Rr=c-{3E^vg%aTsndN< zHz;kyNDmacPF7Y{R#sJ3R#s;8BC6s%STl;H{Ju@MJ4Bg2c`stufsI^H$?<~huzYHk z;-&Tud>COC(+6#%T*PFFvDDtm6)iMz@6{vRoH!iuu0DR z4Vm8nk;ky6;0z{gK$pqPdqEW{1(-&t9o0UIj6723qSH=AZ`Bn9nz?LyH60QT990Me zJ&%_VBP@~2O|qfg#hm^WZl*L$=$tk};4q<76L#A@qjWr{ELM`nQ_8WyKo2QDLwtAT zcnDR?(n#I}OJFwAm8&-7UOY5rA3}H5DH|MjtA&wQ0ksu>jQ*&hfLx!YZMZjC{&bDDvpx_R2k$^EG4rUNiG8T60dAYjoDBbx9-pB0}9NdH)`W{~X7kGI*ws zBxHw~uow=T2y4h%h%FNvv^*ZuGgz6^p^mwqXb5`III2KAt6Ovjz^a5Q*M~c7R?kQV z4QUaqFqOtuwFWbWyy%kMDF)F;T3uPoP;^E}&>zfp$YMUe+=_6}U~_Pn4uhbrhfAjk zIUPnF7^<-nb>X(M1Jkx?@Hk)_d)oM`XMKUKUEq!WAe=MRjF0D-hFro07T=_@wR@cA zH|k@(L}|UJ5tE0iocv&T=d>qDnxYec3L64X${rY~G=WMnV*>!%`l*B*^OHKIhU~O3 z_rb=-O-htVrv8}odenG*ka~s_dccI?F-~**VEHmS4Id`VWdMJZs*dRMs9r;toR3uc zxJ{J;inUr~KR_Kc7LnJ%Ld&iGxJ^>S14O4A(X6OPN{x7mOyr;Lq4r&%6)ozC*|s2=Q3nPk^HE(jZ0cw5 zuxCsU(UdY1X#SXZM}$E=H84*LaH9|lmBvJHWP#DYrLkigp>h%BjA4;ceaz`g1n>}V ze^HIR9&3mBU%L0Jb?-qBdDZ!i?X~+dm&j7l9kaeataUfwqC}Nn;bMNDg{LOnvDlhm zH+F`KQ3c4TZOlgd>sYuLHwkPc!L(*=fb^TkZEnvP7fz&p!F3haWFy^~NQ_o*Z6c`j+%A^TxTa}&5ffKU552{yod=wdZ9Z1b>=UYef4;I0IMjjn;eKEe zmltI++6RP=gZb({AQayaSX?-0sjzykmfo=^C38;QwIR2QZ;cC9Oh9l~?qdc7H4C)GF9Dc)=j`h>zg(iilTr zwC;XUYsC>+m`sJ^_K6c(S!s%Vk?zG{V{nHjC(GC;Dg433-oCKRBADk#RKnWhO5z(@;L(cHAskp-05N66k*|FZuuu$<<2E zce3Sni&wADynFTCxp&?njy}DfyA>L(J44l?_Fz6Pmf66-L0-m^Y^9m?MxeMH56xok z=Hp4#lBg~}-v=B4Dna}&b7PKYtfsD8+XxLOuwTuMJrt5d<`!woq%JP3!-9kh%3^P~ zXXZe0_S*8yyEm^b>S!+i=KK1^>sO07sPcPSeL`Wq``6|jsrlopJJ`laU8KV&se&=g zSDwAn=*1R@Tp#YezY0In9q8DxS80jdO6l-~QFwcsTu8cQ1F_o5fv(3dmf!QI2{QAb=&Hv4_;K(H34()Zh>N z_utFi=Ril4_{`5IoMnyGGeeTWMfF^{bQ7CWxmmq27msa`t~83WDE~B-00z^0JzG#i z0-d!!wHd1aR{!?R6%b9H;TA@|sWkDXSf{v=dziS|N5fT%&rxf+5hNEcC{+;Dg!!Ep z{QS#q5=OB(~L@3x3ReKzgz%-5Air5z@BB50XX%GXmUTv%`+#{ z@h7>fJKb?`9kq!~B6f`;IW|%Y702<+*ogiBbZgQbS;haOg5LRb2n~YU%L5@wz>S>@3GCr=4x_#Qihl5 zVV81^&TAkhIMhfRbwhFs1FcRigYbRBP_F2`qvAyxhCZDEL?dmAuB z4B19@`9>S5=QDf@a6e=@u}5LJTHxnwcJ6CKN?;D8EsL==<+J>A;4wl?1+5 z7&;g&^*Thfh1#{KJROq$JPnCWpr`y#@JIG$3qYdOs-ROeSivLlW3!IqUF z6l)@sZCdw-q?QIRpgNvT?FA;(#ng}Gc-U5kBq+JWjkqVi7AzCbZQ7)(lFmW zB&Atc2%NU?cZTH5Tq^mQj4U&=OH1$Fx-qAXEdTC1BTF$wPL!3Um`{KP_^H^UNm3B9 zv)swoVlmaw^1p^Kv>0g~Bxc$-QP%Qr$RTEV5Lsj`8R!<14@;T>=4uvN91F}S%d@+> zuqot&A(s%Yd~1}-u@Pq2WjU#h^|Qj{@Y=9vSU6u>zzkE_Co_zhJ%P=%H6+86oJy5D z+Y<9=xaRtqV$P>FY-};lhHEu&oieyB$2rX&_F~dD(tG}NB^!M|$Iy8enGbSQO_*es zhU~0k2^kuRZ3?-bb1M^ft{k1m9-6~H&6bkz;=t#PqOT}VzZaD|V7QRrtG z;h`R~8fMV7q{OB2M;k{1QzEraY#qt5svw(%W4XX@IXo{We6OY;5zzkbTk0o*Dj>&A2Wd4Z zx)PpDAy#Bdy881z!QlsYwIAjuqf9Kdr0JoAU=_I}IEmgsj!#+vQ>M<(Mxle&YiA5=Ji>A}bbQgxTwic&(X5qL!N*ClwJjwToWP|c`q*-jW5YM7#`$2O$v!zYN#N3hac%Wf$7Ka%f1RxR^@}JLC3q^%F3z)veHseG6ZH^@ADx4BD*n#_?Y3OD6?mz zrBF$sw-Ah^ta#eKzsQWVyZN|<1H6cN-+a|jK&J+uupX;btngPOtx6s_eWsoVS+o;7 zKtI>Q`Ccr&2uDC~MdW-2X^|sZO3h!7vP^l@<>-fSyfBzf`HCk8oIl+{Wb*|HZSBktD*)19dEZ4v+RD)K*5 zZbZ%W48$ku{KdB**+ak*hM(4ye>t*FvfZoJg|+J(dlA zXa8tP@`##Pv! zX7&eZ(wn7nK-DnlhCkz}&KX3;IHj1Xv<7;!qPuWHR)+YCUJ`yeiV%~TAYmM~4J>~= z(hw%mi#P>Ttpu#@`p?V}H)-7)XajLNr!fXPWkzE7AFHX9J6gsgWRYucz1+UqyNh3w{NfDGjJQhHT(r45R+>9Wvij9DXj|EMeWu#Hu zCo`;rV>BB_vOCCFD@ONpIzRw!cpWl+%3U#)`}ZSI|4&ES$%gBOiD9qj{)c%wk*GbI zdC%_xCw|yK?t;O?VL+V`!E9bLUj#}2VKLASp3#oCez)ZJ;7$<@;u_LZ0=a??xz+o3 z$6f?_?Mk~*(BnLsdCl*V>|%FU$crz%V-A?6C}EttZ3n{XOFcNa{qFJUpo9f`K)i=zcZ@B5R`;I7^J#hOir=rboyLB^{y_ zh{F{-4xDnn7^@wB`|Iz|Pfe9tke0QkvZ0lxrsnfTr`Y*D=D|Tag^-7k$&E`nUU#s1pa`N0$&=pDsSt zUmRRt{fX%O=8s+Vmx{+vf14Ql2j_QocDk57=;#^YD5k8%)a6}HlNP;oakB6Cf`w_$ z9kJzBwbO>9nAE?A01;)*C`8R51JoTPuc>vH^Pamp+{D(k~ZSh<2~G@mN84#YYaq{vA@!W1sB)4s*i(OjB@jqm6m`A~rUbAs-evRw#qJp$b zO-ZcrIpw3|?u{>UhVDf9{Kd(XFNJ|PFNRhZh&x7=Lj5bNK+4toI(YIL+g!Q2#}@kyVujL?<2*&xT8v zZMA9xV+*>GIki?TT%I`h;l$-$cdK@J6;O&VCf#40Qx1S10+5Vq5(EG81Y+_}pw69g z^hgDURw5>#j1zfyRr*ya0w#k00avmK z)vpY-Cnr(=(}=?VQ&;R>YEFn0BAXQFs$~m=;4e(HyZxyn^h(4aIMf1e{X>nctsv2W zPU{B%Gk$}cP#swL_;bGlg>g(l@JHc}fS$`a-{kxm;+t=rq17nRt~r|<|jes}?^np6K8jBA=?UQRW;C@Q!DyrYT4 zvI%>ibPO_v47JgNRv|N@yVH$wYZFF%y1#q>>RfSVV!BGfm22-mezdT-j9=}_`{y%_ z_<8s)()uR(BNw`x5%MF&OkBpUzr~|k5VV-biNQYq4`u{Sx5ycQtn_`@XnHK1c6F5q ztKUX_b4#tRKCIp-oRdampk%XfF{%_%apwg3zZl|)7o1f}Z=yV#xLRB*Fk;^>{a@R>Ge7h^0BhE zi`0N?Iy3!hrM$7h>0efsPIG=R4YJ(q^!DP728SU3TmXcaEU;a^Vb1!WQMYM(to&Nw(IaYJ4@{kvTp) z>Fh&+4t|~wXL8ZP>)nLef?|K#f zrMtR8sD?;es?v#C$(5b0We~Ez`8^J36P^=_yT8>;R%fM{(a=N9NV%I$6b3SeYb#B? zvS+C#=7G`HI8^CkmiBD{0G4>ERh9pf8CxZ7>WHA^PovlWR}iwthWFvMRfHGQ`L>N% zM>jeBtLRgennGw;1RW_+#XG8q`h{ePajl2#&K6~;QEMsjnQ{XI7jZMeNItYm!$?5s z4U1kc=M$f_aU|l|qv0B~)b?p8W^)o_q>&^)g&SMa0{|scPj-zX<_FVfxFe^=2d&1Q zs(lhY!%D1%P31+e>it{eH?@^OqXuu2t9#9LSS4iORi)eA_EtyzscN@05<1eYZ*8Vl zvRI?54AI=BO#94xnV@iqmq?EG(`+?U14aFZ9D$-}jqx|hZ!`k;2jSMUMc&R-IW6GR zWS^FuI8Q?u?p>=aM`*g1Pe0%~9}ZDR_HoMXny+?J)4}QnQ4FU)8zL})%M@@QYYN#S zB9-Zk?caYeV(2E4XX;2Nd2=!{JA8R5D+g^(d3H`Oj$#LLwkSHpNBQ14^$Xl&@>-HJ zCFzA#9nm^RvYfDT;djwsc7jDwn_VYk8)ZSu5x6H?nXEAFMz%oF`rtrjziN> z*9}`8vRp%rgQMwaZZsax_=#G+Th^ZPak%VZ;wzDE7j{9pb5hKU9%jFF@-U`6W1EGj zd5~#si(&Qh=cC-hd2JbgDsb(r_YHKI>npn3k6(QT-PA_%xb>R0$?BD(XHlu(L4Y`( z50B}qLuN4aiUUzlD4$Ps5*9zA7?zQ_cV+{gXJYM^OxgEtS zmjvea9^blW1wSy3)*f_Bo9EaO$xYguXhBU4s2A5}9(3>5a3{~x{4OljGIBaryExx<3rCFCfHdQSUXMY|%NhYaip5{QaFL=v`<}K$v&eXaz&6vO z2NOPl`tUVRCrz(T;@~+y|9Q8bK;hVu=Y3xe$4X#U%TE&H8-^=nXmLTUys~)H)q~fM zd0FjmZndho-l)i{EVUI-X+YxA7I!ryX*VU;_wdgKVo_TV^+xL6P(J04V+7P@tm$;Kn9X z9aKTc@u~VaT4~jLb+~?vTynGc)FU=mcg+BJy!6^As5a!P(+mW2Qm@4|-xTNd+SCd*jhWW5;i}bWj`^b|7;*Wy15*@K^cSv!wkdLuqZhP zYXhrA+UufNB26dN82L(DypsvMq3UnU#O$;E`IQor-y>=tdQkNyP^K1ypYTNzioIHf znexY#Y)lO>E6>PfrYd!x^ak0`qsQUz%peXFTFq8b5Rw~~+3}R0rM3Q%Ur=f_A<+XD zK2He?XhR8)jOo&U|EJm&vnFNegdUgwXgVVd@V9|5GmMz(!5YXuQ$q{1*8c`HAoWx` zZ%Q-aI%b5L9#uK}WcWCs8ClkU;#SE}a5fvp|`ny6NZEezcjQ52Q9)*wox*J;e;F2%kriyQc%LRu;C+@Ao5JiR#6YKcw$Jq>R5KSwpp&gIj8ar4#h^VR%cFqzp9rl^Eo~U z8x2*}px7nWCUaIZOP`?CH`Alv$qH;HsA<6i)IInHXqI6YCap;ixO+Igy5p<{WDTdu z3Sx&C;%)Y%p5D)fxoUXx7lt#5a!M`h!S3qxT{3`9(S&S<+eJpURck2L)Td-4(yprB-&jrCHf?I&x z7H$D7ly1ROya&?#RFsvw&#LVmpWdnqwNqPfic6~dVZGUL3!?2!x1inIa0?Kf#x1Bc zJ(?sP(fc5&2eUMrn-k9(a>zo6w8bi9IY*&FJv*GPBMqpMfnaJY-#UX`5$ z$98>6cYQi`cRYTS>mF7VR9uE6LAG3g<~6^d?zPgaSL<$_ZtShf!h@S-7a(eSI3j;+ zqvn@xm7VgoTX1dmnp;rrbl4ZfEA^+xx<6VTM=C9kX_byAyOqcz1zELyL8~^rE?0YA zmuo#woS(RaKdC0?zDFvY*S$La)UQ{{-rT1WJTNJD-I{g026RNSzTwGiv+S{<+43e= zyXw)`^}85VJc6T5zmq+mxmyj7vh8)hpyG|#w%?g;zm=UpfroV`s(P&3t$Iw`jl414 zjXX+rBOgc9&@4EqcNX{&$yo-@x16lu|Cmiioo%}+HlGKjRbSb0{JrD59SB#I^dGN5 ziS_im9mrFc66D|iaUPCKCmqh!{ltvTl@UwD!4LA1B)HLs}SW9iKK5DB~;Pm67K5?FmUG<`NS zJKJ8%?M;s{?M;tBq`ht10yBaDe#snhZx%4JVID_6BDB6}nXJSC_(mtev* zx0&{)2eDK3^xB=KhOjjr30|T#o`3a%7DY$n@t{17$LGO!a!TvhcXG;17(q_m05F!C z4)5e8*Y=qXXuIP0>uw(;ZgrKZqPb7Yrw&opZG`cXzbQE z>#cHwOn_V6O6`b#rv|G(M@9Hh&s%NjbI3?|-LLE*%9!vE%bUNKmBlFJI=AX2WjW+w$75i7!hQ1i-t%C9fTH96|p z73m0g9_gW6<2X0ac3^RAcb(LkmI3bOcQ zK$DCba~NsJe^YOYUWau*Wi-?bHR$zMgQl2*CQ(Ddo%LEHFpQQ#C*c&}hC*@tbZbU3 zY~hir9v5{LuCJJ(r)3TON5jZeE`QW+_R`rvrp267rTR9`aNHa8mvDopBD{qDfY zhJ8(Ri`vQGIH2g*20D_K+3Zcbsi5%zQ@Y_d=0t3K(BcJaPVYO?6DclS{_w-gmnRnP zFHtZ(T5h)BWW=S57cQ$^!_<&1{6+$meCUtt_2k1`W^L($BN*XWZaA-mKNJ)WMX3@F z3ih_TwXsp({Za9=dTl2@0>l5GNzSmP4;G<2PyP z@7YvDKn{<1VkP3*GQM3yVD$u-8{YyeqS=f0K3kl=R-8GnWgrBkQr z4G%}(B^Nr=j6KYOcH(tf(PN&zrNA0VS=01q>ur487=&0(8RnH>AahWXt7_kk1H&o) zM1N=o(LBVDNUyP;sk%A3nYh6FS}rff_;tYcv+-=xq3on-HPuc~T-;!w+;RPo(~GS8 zKB9?+W9}9ZA(!b$`#$4q=o6E>@7}QbINIkv40qom!>7QLj}GR!{^r`|je((gznOeRD6i~m%Py9c*!s%^uK)neF+c! z>53E=sczxW-8MNn+~Vkcf9SI`mW|=l7r~VqTe-?Qd|ddASQa8UB%kPjlxLJ%8|BzS z)R8Pe5-*lQ={J5{Z*`Qf?Xeg@y~CuX?WkY)+3d#i?);ZerWfy*#wf-Q?WC*-nxp5* zi<99Gh0;09x|DAcSNFJtI7W!cPNTgiI@K$p4q-*#z#93YY>`LZV&Vp}xo8Pmc~GPw zfxKX)rujhMKd<+mw6}U@bYgR>;4TyjM=+*>8DaRIw5tcGwvx*O^5N5NiBBfA%r#MhFe-LU5g-`aW-x!b5nLyv;aXN3z>mlA0 z2*KF$t<|61U9EKMogSj#HV_G)BHoP z2ECQl7v;Irp%uh)K#&vu^txOk8q0`&@^j|FcCFj3S8I3RzfNjuK;~Vfdqtz%cX1t^I^wa6(I`z4Jxk@@o)2#FZ|6ywhXd zyM|-SaVew6DYZMb28c!JMPeXwyCB+iRJz;7^{)CiE(XwHCoCIKJ#1`kmMDIEx3sX; zYh(QY)R9^GW0WgM6CiwF>nvY6w+@7ADnY}SHH+vPScsAdN z`C4j}w_24adJ*6lg%>`WTmzSB6fs5%;QvM$ft#m)0ujcJTj@;}3di+=j16-YP-^Wu zCPxbB*2Oyr{9XJQaq~`_lt#sPF)i|>sCC01MJYcKtVxK&)gHCCDBj}vxSG*EBfJT< zOhJ=D5VZo;S`|dsqogSC8@3v$jkg(1mm{LG6;*^J3^;!4f48L}^s1>k*Ocz=PCq3;%;AHIN4wK_bAuB6 zD_pD8qiH<5p)&p#FK!NLSUk3A;RF6B?8IXm`d!-)bR9i5aA(5@{2JGFDfA!tuuQMl zdw6JouXvdAdg3dVjXn9i*-Tc(1}I-!O+wN7G6~bE?+Q$(c~m!0X>Lv96%W)tRKp)* z>ce)cTI{xv>Z;t>K)By0Kg37fncZo;>LKXOb#RgV@q~-yNsV&+59RbjS|MaR<8Tf)85 z#D|@xX#(=T!<@jsZXuDk)7*9oiGZEvu2a}!$es(i&5+x>-m-QJ3t6q(fddsHWby)Z z&=lmX`;W)!F2 zqFSU!s^oS0^8pe|T=C)SA=ENj+96X7uRTZwka`9HcvVGwKccZ=FXprnuYlbu;T|vP zBPDXfj$DFOtg(k{^QcsbO7RwEZL13!f+8CtuXor)6Wbreh87AfSt#UfFG^U$s_h;e z7)lY+&t07<&J<^7X2`R}CLSROizuQ%zZu%Y*c6>UM$f;Gi8ikw+T=pKyBC+*%`%j{ zWD!KJgFwwcQnrnkbiTn?0ZG?m^@*4=3$r931zs(o^Y_#2Wu;@3*7W z90d#Svr%MI_W5XB8~I}8oK^M%@o%W!IwLyjABbh?2l#n1{)x&q+ajr;ad= z-O7_aR!DYxtJ{^MOM9(yvtA*+S_nFkERryhN7$H*tHbVUtPxI!De3X~JP1{mxdxLN zUqtpL)2{MI$*l9wkIEk30I3^0vZFB33)y(9Es%7FA4M(+iM*Eas_dlOxTd zECx{g`E%*T_SJWbGuGvG$@&|cH<>hI%MXvo-9BAGwr~5Mw-BogVO;aSejck!vQN@F z2MdwR8nnjXJ~DMw{H~;+nE(2l=|Rj%5;LeeJQn@L%I`oJ!~Aca2mSWNxw?*)HRWcv zy%W_Qtdm@E53Z)(Ij7b5?KeX(jPjhEMWi3`$Tk(vv52PJlBZUAK2tZzWDp=H*)Zwv z^&`D+%|CrEi%+r#GRwl`-$*6DZ?)$#LzASlbvhv}S5j#X!@r#^(UnquGb9Ygkv>Ci zE*M=8!HQCD$T@2EBRWIr6V>!j;2DDJQCz(gF7X95j%qdhY4n-Ge5=VDOQ`){XR|)##N3@136Re48{$v>^n|G ztICOUuv`OYBKvCob_VkU!hXrI5XkDG9006LdT0Du0O1!i7zF-}k1!SDDT7JkeBO8V zfb2qmAgBU?*_dD?Y6rxyM1Dt$3yFyYw&#F`fF03}fr~}u#0@_)^~ddUcO6@&Bn5_r zwNStYPPUtEdzG(Nx554ZRM#zR80*Qu}UMVS8=5gSi1a$ z;tR8eyfqjvJMz;qr##kezY^`eiw(yvj=frvF8&3=bToPXJ}XY|@QhvDihAuPgT#wH z%;m_#PS*11B@OzD3vcbJ;dD^i^2$EaAmaz<0Wv0=7Oqi3JqP$;-h1a|^AU6{}AQ6$2#2p&jIY_Y75JwT| z4O|!$#Mok^R&H%|ILS3|iQk*f(cy);bWADmD+q)&RzhJW#kqkQaVT4<*9;UOzOT5P z_@pn6-4v~-z54JJkvz!g|5+79*8_Q+iUkOqOx4rPK1s zD^}kB`t=kmY~euN`pF7|cu3CZ!BwYe@9V`Zsc5|WE-P!XNX(l)f27=N%z%020<9T! z&SF#;k?E82tM$-b)IC;T!z|M;#8PuFObiNHOPZF0WTYWB%NeWs_0U1$_R*= zGoguP1Ya}qe4q;+udfTQ%o3572*{b%7|5Q-bm@x&rt|U)L|yl>laAolbn9-&<-q@+#>p78=ZH2rp(hz_}8-^XQ!hvqsAXxgvehU@kVR zl3Hh?DGQ|on*{x^AL=By*G=Beok;(hADUEWejzl2Cun3g(Ss>V1`tY*StS(fyx)^WeKOa)!;hqXTz zisybILsVVX%iV2*6PtvQkc0 za&cvyS`Uko`&YS)lrde7x5n`g{;Jk!(T6#IG3Isuhn?e=Vrf6X_ai{itaG9wyzJ1Z zo<1gk#ysota(q5k?PmkK*^JS~+!yP>j;brD=o7R^N_DTYB+` z&H}ZLJYlGh@57=utnZrd)@MB>HGyXF576cHll!iy(&`~s(yKdB%5TxsqhZ~6yu-Tz z6AbY&z*`Ox7C@yzhkBexV_2+~PF7*d0DyVZ76q#QnOE@3SNWbv0rw$ zg@=!8;-p3}>uqF`U90E`MfHxNo(FauMH(|a$}7*8L@* z>nnclPzdtWJStJqhTVUISW-E^FQ{aE^5Y7RVtzcyu|5FKizDIz?PWGKb&yMy+anDk z|5Uej^iF_^dNj^qE>9gAsZs(mYyt3@B}W! z-(0uBEBzqZvF%p5(O4(7kmc!-53iqluktQjl4DY71=~lr=NhT#u}86k*&fMf^$PA6 zKFZh+vyThS;~M(L&tghS|D0ea#;6`i>8)LyR0+3jOr`lz?v?R+1kbJGc1m*3ZOFIm zbE`0gcJ$MGA)FuOC4Em#tv+=7EoEX9w^td8Pr5xrn;Uxox+=`i)e^3u@dhUv?z(&6 zSkSR>0xx2s(tT`16tfY_A>L(FYgIlm7Q5u@RO>B`)J2iKPkbaPB5F87Co~ex9-o!9 za5B$7^>M{A(`Sqa@naoWhmp!mvZ5x{)1e60!lGxf#iGzOP)*(Sn;OjTbYzcxWSJQ5 z(|r@Z!{ui6#vIA@;{C=*NDUL*nUip%ktx&}sWHv@97Fw{-=OAyy#g2L_D0W-z)`~U zNWPvJVy1*fj%P~Ur(&pqGraCICx7O*r29L}7R0pIe2lqhH#EEQAuB6;;j%S$9ki!=s{>fxjKi2Sy7%O{eft z$!-CauG+eSzhhu${QkkakRR_U_W`+NEObwtT{D_qNmW^MU`1sem9sTQhR zq^KxbFrRF~%b-lJm@SH3@beaUjFMG&tp?q&KrD=M;!4GQ64g>LUdxJ6(ZPM6uRg_@_E|mJDmPYpTh)47>>=YKBJq_zS-!8$o{(}{P2F!t`}r(H<$REf_w2~uv%X}V457SsO!2TJ2|Gynhq literal 0 HcmV?d00001 diff --git a/Kx.SeaTime.slnx b/Kx.SeaTime.slnx new file mode 100644 index 0000000..39bca3f --- /dev/null +++ b/Kx.SeaTime.slnx @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Service/Application.Domain.Entity/Application.Domain.Entity.csproj b/Service/Application.Domain.Entity/Application.Domain.Entity.csproj new file mode 100644 index 0000000..8f5e89a --- /dev/null +++ b/Service/Application.Domain.Entity/Application.Domain.Entity.csproj @@ -0,0 +1,13 @@ + + + + net10.0 + enable + enable + + + + + + + diff --git a/Service/Application.Domain.Entity/Class1.cs b/Service/Application.Domain.Entity/Class1.cs new file mode 100644 index 0000000..0921ef7 --- /dev/null +++ b/Service/Application.Domain.Entity/Class1.cs @@ -0,0 +1,7 @@ +namespace Application.Domain.Entity +{ + public class Class1 + { + + } +} diff --git a/Service/Application.Domain/Application.Domain.csproj b/Service/Application.Domain/Application.Domain.csproj new file mode 100644 index 0000000..12fb8c3 --- /dev/null +++ b/Service/Application.Domain/Application.Domain.csproj @@ -0,0 +1,13 @@ + + + + net10.0 + enable + enable + + + + + + + diff --git a/Service/Application.Domain/Class1.cs b/Service/Application.Domain/Class1.cs new file mode 100644 index 0000000..11a0161 --- /dev/null +++ b/Service/Application.Domain/Class1.cs @@ -0,0 +1,7 @@ +namespace Application.Domain +{ + public class Class1 + { + + } +} diff --git a/Service/Application.Domain/RequestParms/Login/LoginParms.cs b/Service/Application.Domain/RequestParms/Login/LoginParms.cs new file mode 100644 index 0000000..5c42ad0 --- /dev/null +++ b/Service/Application.Domain/RequestParms/Login/LoginParms.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Application.Domain +{ + public class LoginParms + { + public string name { get; set; } + public string pwd { get; set; } + } +} diff --git a/Service/Application.Service.Pub/Application.Service.Pub.csproj b/Service/Application.Service.Pub/Application.Service.Pub.csproj new file mode 100644 index 0000000..07bdb7a --- /dev/null +++ b/Service/Application.Service.Pub/Application.Service.Pub.csproj @@ -0,0 +1,19 @@ + + + + net10.0 + enable + enable + + + + + + + + + + + + + diff --git a/Service/Application.Service.Pub/Class1.cs b/Service/Application.Service.Pub/Class1.cs new file mode 100644 index 0000000..00188bd --- /dev/null +++ b/Service/Application.Service.Pub/Class1.cs @@ -0,0 +1,7 @@ +namespace Application.Service.Pub +{ + public class Class1 + { + + } +} diff --git a/Service/Application.Service.Tool/Application.Service.Tool.csproj b/Service/Application.Service.Tool/Application.Service.Tool.csproj new file mode 100644 index 0000000..b760144 --- /dev/null +++ b/Service/Application.Service.Tool/Application.Service.Tool.csproj @@ -0,0 +1,9 @@ + + + + net10.0 + enable + enable + + + diff --git a/Service/Application.Service.Tool/Class1.cs b/Service/Application.Service.Tool/Class1.cs new file mode 100644 index 0000000..29aeb8d --- /dev/null +++ b/Service/Application.Service.Tool/Class1.cs @@ -0,0 +1,7 @@ +namespace Application.Service.Tool +{ + public class Class1 + { + + } +} diff --git a/Service/Application.Web/Application.Web.csproj b/Service/Application.Web/Application.Web.csproj new file mode 100644 index 0000000..f94eefc --- /dev/null +++ b/Service/Application.Web/Application.Web.csproj @@ -0,0 +1,18 @@ + + + + net10.0 + enable + enable + True + + + + + + + + + + + diff --git a/Service/Application.Web/Application.Web.csproj.user b/Service/Application.Web/Application.Web.csproj.user new file mode 100644 index 0000000..2c8f5c1 --- /dev/null +++ b/Service/Application.Web/Application.Web.csproj.user @@ -0,0 +1,8 @@ + + + + https + ApiControllerEmptyScaffolder + root/Common/Api + + \ No newline at end of file diff --git a/Service/Application.Web/Common/JwtHandle.cs b/Service/Application.Web/Common/JwtHandle.cs new file mode 100644 index 0000000..6b543d4 --- /dev/null +++ b/Service/Application.Web/Common/JwtHandle.cs @@ -0,0 +1,40 @@ +using Microsoft.AspNetCore.Authentication.JwtBearer; + +namespace Application.Web +{ + ///

+ /// JWT验证 + /// + public class JwtHandle : IJwtValidator + { + public int Priority => 1; + public void ValidateAsync(TokenValidatedContext context, JwtTokenInfo tokenInfo) + { + string userId = StateHelper.userId; + if (string.IsNullOrEmpty(userId)) + { + throw new JwtValidationException( + message: "未登录", + statusCode: 200, + errorCode: 401); // 自定义错误码:用户禁用 + } + //var userService = App.GetService(); + + //var userInfo = userService.GetUserInfoAsyc(userId); + //if (userInfo == null) + //{ + // throw new JwtValidationException( + // message: "未登录", + // statusCode: 200, + // errorCode: 401); // 自定义错误码:用户禁用 + //} + //if (userInfo.token != StateHelper.sid) + //{ + // throw new JwtValidationException( + // message: "未登录", + // statusCode: 200, + // errorCode: 401); // 自定义错误码:用户禁用 + //} + } + } +} diff --git a/Service/Application.Web/Common/StateHelper.cs b/Service/Application.Web/Common/StateHelper.cs new file mode 100644 index 0000000..d39a2d1 --- /dev/null +++ b/Service/Application.Web/Common/StateHelper.cs @@ -0,0 +1,21 @@ +namespace Application.Web +{ + public class StateHelper + { + public static string userId + { + get { + var token = App.HttpContext.GetTokenInfo(); + return token.Claims["userId"]; + } + } + public static string sid + { + get + { + var token = App.HttpContext.GetTokenInfo(); + return token.Claims["sid"]; + } + } + } +} diff --git a/Service/Application.Web/Controllers/Login/LoginController.cs b/Service/Application.Web/Controllers/Login/LoginController.cs new file mode 100644 index 0000000..cf18d1f --- /dev/null +++ b/Service/Application.Web/Controllers/Login/LoginController.cs @@ -0,0 +1,26 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; + +namespace Application.Web.Controllers.Login +{ + /// + /// 登录接口 + /// + [ApiExplorerSettings(GroupName = "Login")] + [Route("[controller]/[action]")] + [ApiController] + public class LoginController : ControllerBase + { + + /// + /// 登录接口 + /// + /// + /// + [HttpPost] + public async Task Login([FromBody] LoginParms parms) + { + return PoAction.Ok(parms.name); + } + } +} diff --git a/Service/Application.Web/GlobalUsings.cs b/Service/Application.Web/GlobalUsings.cs new file mode 100644 index 0000000..dc70310 --- /dev/null +++ b/Service/Application.Web/GlobalUsings.cs @@ -0,0 +1,16 @@ +global using Photon.Core; +global using Photon.Core.Jwt; +global using Photon.Core.Services; +global using Photon.Core.SqlSugar; +global using Photon.Core.Assist; +global using Photon.Core.Timer; + +global using Application.Service.Pub; +global using Application.Domain; +global using Application.Domain.Entity; +global using Microsoft.AspNetCore.Authorization; +global using Microsoft.AspNetCore.Mvc; +global using Application.Web; + + + \ No newline at end of file diff --git a/Service/Application.Web/Plug/Timer/AutoJob.cs b/Service/Application.Web/Plug/Timer/AutoJob.cs new file mode 100644 index 0000000..2fdfca2 --- /dev/null +++ b/Service/Application.Web/Plug/Timer/AutoJob.cs @@ -0,0 +1,22 @@ +using Quartz; +namespace Application.Web; + +public class AutoJob: ITimerAutoJob +{ + public async Task Execute(IJobExecutionContext context) + { + string jobId = context.JobDetail.Key.Name; + if (jobId == "DayHandle") + { + + ////处理日红包 + //await businessService.HandleRedPack(); + //Console.WriteLine($"{DateTime.Now.ToString("yyyy-MMMM-dd")}:红包奖金池已处理!"); + + } + else + { + Console.WriteLine("定时程序测试执行"); + } + } +} \ No newline at end of file diff --git a/Service/Application.Web/Plug/Timer/JobStart.cs b/Service/Application.Web/Plug/Timer/JobStart.cs new file mode 100644 index 0000000..8be7cd5 --- /dev/null +++ b/Service/Application.Web/Plug/Timer/JobStart.cs @@ -0,0 +1,68 @@ +using Quartz; +using Quartz.Spi; + +namespace Application.Web; +public class JobStart: ITimerAutoStart +{ + private readonly ISchedulerFactory _schedulerFactory; + private readonly IJobFactory _jobFactory; + + public JobStart( + ISchedulerFactory schedulerFactory, + IJobFactory jobFactory) + { + _schedulerFactory = schedulerFactory; + _jobFactory = jobFactory; + } + + public IScheduler Scheduler { get; private set; } + + public async Task StartAsync(CancellationToken cancellationToken) + { + Scheduler = await _schedulerFactory.GetScheduler(cancellationToken); + Scheduler.JobFactory = _jobFactory; + + // 创建作业 + var job = JobBuilder.Create() + .WithIdentity("DayHandle", "Handle") + .Build(); + + // 创建触发器 + var trigger = TriggerBuilder.Create() + .WithIdentity($"DayHandle_trigger", "Handle") + .WithCronSchedule("0 0 0 * * ? ") + .Build(); + + await Scheduler.ScheduleJob(job, trigger, cancellationToken); + await Scheduler.Start(cancellationToken); + + Console.WriteLine("----航海时代V3自动程序已启动-----"); + } + + public async Task Begin() + { + Scheduler = await _schedulerFactory.GetScheduler(); + Scheduler.JobFactory = _jobFactory; + + // 创建作业 + var job = JobBuilder.Create() + .WithIdentity("111", "test") + .Build(); + + // 创建触发器 + var trigger = TriggerBuilder.Create() + .WithIdentity($"111_trigger", "test") + .WithCronSchedule("0/1 * * * * ? ") + .Build(); + + await Scheduler.ScheduleJob(job, trigger); + await Scheduler.Start(); + + Console.WriteLine("----探玩驿站自动程序已启动-----"); + } + + public async Task StopAsync(CancellationToken cancellationToken) + { + await Scheduler?.Shutdown(cancellationToken); + } +} \ No newline at end of file diff --git a/Service/Application.Web/Plug/Timer/TimerJobManager.cs b/Service/Application.Web/Plug/Timer/TimerJobManager.cs new file mode 100644 index 0000000..a301aab --- /dev/null +++ b/Service/Application.Web/Plug/Timer/TimerJobManager.cs @@ -0,0 +1,56 @@ +using Quartz; + +namespace Application.Web; + +public class TimerJobManager : ITimerJobManager +{ + private readonly IScheduler _scheduler; + + public TimerJobManager(IScheduler scheduler) + { + _scheduler = scheduler; + } + + public async Task CreateAndStartTask(string jobId, string group, string cronExpression) + { + // 创建作业 + var job = JobBuilder.Create() + .WithIdentity(jobId, group) + .Build(); + + // 创建触发器 + var trigger = TriggerBuilder.Create() + .WithIdentity($"{jobId}_trigger", group) + .WithCronSchedule(cronExpression) + .Build(); + + // 安排作业 + await _scheduler.ScheduleJob(job, trigger); + + // 启动调度器(如果尚未启动) + if (!_scheduler.IsStarted) + { + await _scheduler.Start(); + } + } + + public async Task PauseTask(string jobId) + { + await _scheduler.PauseJob(new JobKey(jobId, "default")); + } + + public async Task ResumeTask(string jobId, string group) + { + await _scheduler.ResumeJob(new JobKey(jobId, group)); + } + + public async Task DeleteTask(string jobId, string group) + { + await _scheduler.DeleteJob(new JobKey(jobId, group)); + } + + public async Task DeleteTask(string jobId) + { + await _scheduler.DeleteJob(new JobKey(jobId)); + } +} \ No newline at end of file diff --git a/Service/Application.Web/Program.cs b/Service/Application.Web/Program.cs new file mode 100644 index 0000000..2c8a65b --- /dev/null +++ b/Service/Application.Web/Program.cs @@ -0,0 +1,109 @@ + +using Microsoft.OpenApi.Models; + + +var builder = WebApplication.CreateBuilder(args); + +builder.Services.Inject(new List { +"Application.Web","Application.Domain" +});//框架初始化 + +builder.Configuration.RegisterConfig();//注入配置 +builder.Services.InjectMemory(); +builder.Services.InjectSql(builder.Configuration); + +#region JWT与接口配置 + +Dictionary groups = new Dictionary(); +groups.Add("Login", new OpenApiInfo +{ + Title = "登录接口文档", + Version = "v1", + Description = "航海时代登录相关接口。", +}); +groups.Add("User", new OpenApiInfo +{ + Title = "用户接口文档", + Version = "v1", + Description = "航海时代用户相关接口。", +}); + +builder.Services.InjectJwt(builder.Configuration, new OpenApiInfo +{ + Title = "航海时代接口文档", + Version = "v1", + Description = "航海时代接口文档,包含航海时代的所有接口,项目采用AI开发。", +}, "Application.Web", op => +{ + op.AddTransient(); +}, groups); + +#endregion + +//定时功能 +builder.Services.InjectTimer(services => +{ + services.AddTransient();//注册管理器 + services.AddSingleton(); + services.AddHostedService(); +}); + +//日志 +builder.Logging.InjectLog(); +// Add services to the container. + + +builder.Services.AddControllers(); +// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi + +#region 配置跨域处理,允许所有来源 + +builder.Services.AddCors(options => +{ + options.AddPolicy("all", builder => + { + builder.AllowAnyOrigin() //允许任何来源的主机访问 + .AllowAnyMethod() + .AllowAnyHeader(); + }); +}); + +#endregion 配置跨域处理,允许所有来源 + +var app = builder.Build(); + +app.Services.UseInject();//启用框架 +app.Configuration.UseConfig();//启用配置 + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.UseExceptionHandler("/Home/Error"); + // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. + app.UseHsts(); + + + #region 测试swagger配置 + app.UseJwtSwagger("swagger", "航海时代接口文档",new List { + new JwtGroupConfig(){ groupId="Login", groupName="登录接口文档"}, + new JwtGroupConfig(){ groupId="User", groupName="用户接口文档"} + }); + + #endregion +} + +app.UseCors("all"); +app.UseStaticFiles(); +app.UseHttpsRedirection(); + +app.UseAuthentication(); +app.UseAuthorization(); +app.MapControllers(); + +app.MapControllerRoute( + name: "default", + pattern: "{controller=Home}/{action=Index}/{id?}") + .WithStaticAssets(); + +SnowflakeAssist.Initialize(0, 0); +app.Run(); diff --git a/Service/Application.Web/Properties/launchSettings.json b/Service/Application.Web/Properties/launchSettings.json new file mode 100644 index 0000000..49188e6 --- /dev/null +++ b/Service/Application.Web/Properties/launchSettings.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": false, + "applicationUrl": "http://localhost:5031", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": false, + "applicationUrl": "https://localhost:7198;http://localhost:5031", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Service/Application.Web/applicationsettings.json b/Service/Application.Web/applicationsettings.json new file mode 100644 index 0000000..4ade55b --- /dev/null +++ b/Service/Application.Web/applicationsettings.json @@ -0,0 +1,33 @@ +{ + "AutoProgram": 0, + "Redis": { + "connection": "127.0.0.1,password=,defaultdatabase=1" + }, + "SqlData": [ + { + "type": 0, + "name": "KgDb", + "connect": "data source=kx.iyba.cn;database=kx.petera;user id=root;password=1f5ozxRGE3Y;pooling=true;port=23306;sslmode=Required;charset=utf8mb4;" + } + ], + "JwtTokenOptions": { + "Issuer": "kx.petera", + "Audience": "kx.petera", + "SecurityKey": "DAbdA9fF9MYXDCFBEb75WKWWDAbDBWQi" + }, + "ResUrl": { + "local": "http://192.168.0.142:5298", + "resUrl": "http://localhost:12206", + "imgCDN": "/", + "videoCDN": "/" + }, + "Sms": { + "SmsType": 1, + "AccessKey": "AKIDVptgCRP5UcT4PTGm1yf5E6pKYVBajeKn", + "Secret": "FG2atxlKflcEclgKhnc9XeU3LM6YjdGf", + "signName": "探玩驿站", + "TemplateCode": "963929", + "SmsSdkAppId": "1400523979", + "SmsOnTime": 300 + } +} \ No newline at end of file diff --git a/Service/Application.Web/appsettings.Development.json b/Service/Application.Web/appsettings.Development.json new file mode 100644 index 0000000..0c208ae --- /dev/null +++ b/Service/Application.Web/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/Service/Application.Web/appsettings.json b/Service/Application.Web/appsettings.json new file mode 100644 index 0000000..10f68b8 --- /dev/null +++ b/Service/Application.Web/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/Web/nuxt.config.ts b/Web/nuxt.config.ts new file mode 100644 index 0000000..e2cb124 --- /dev/null +++ b/Web/nuxt.config.ts @@ -0,0 +1,54 @@ +// https://nuxt.com/docs/api/configuration/nuxt-config +export default defineNuxtConfig({ + srcDir: 'src/', + + future: { + compatibilityVersion: 4 + }, + + devtools: { enabled: true }, + + // 开发服务器配置 + devServer: { + port: 5068, + }, + + modules: [ + '@pinia/nuxt' + ], + + // 自动导入配置 - 使用完整路径 + imports: { + dirs: [ + 'stores', + 'composables', + 'extends', + 'services' + ] + }, + + pinia: { + storesDirs: ['./src/stores/**'] + }, + + typescript: { + strict: true, + shim: false + }, + + app: { + head: { + title: '航海时代', + meta: [ + { charset: 'utf-8' }, + { name: 'viewport', content: 'width=device-width, initial-scale=1' }, + { name: 'keywords', content: '航海时代2|纵横四海|雄霸四海' }, + { name: 'description', content: '航海时代是2022年推出的一款以航海为背景的wap文字游戏,让玩家穿越到15世纪的大航海时代,了解各地不同的风土人情;淋漓尽致的演绎航海时代的血雨腥风。' } + ] + } + }, + + css: ['~/assets/css/style.css'], + + compatibilityDate: '2024-04-03' +}) \ No newline at end of file diff --git a/Web/package-lock.json b/Web/package-lock.json new file mode 100644 index 0000000..7d5f832 --- /dev/null +++ b/Web/package-lock.json @@ -0,0 +1,11099 @@ +{ + "name": "kx-ui-framework", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "kx-ui-framework", + "version": "1.0.0", + "hasInstallScript": true, + "dependencies": { + "pinia": "^3.0.4", + "vue": "^3.5.11" + }, + "devDependencies": { + "@nuxt/devtools": "^2.0.0", + "@pinia/nuxt": "^0.11.3", + "nuxt": "^4.4.2", + "typescript": "^5.4.3" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bomb.sh/tab": { + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/@bomb.sh/tab/-/tab-0.0.14.tgz", + "integrity": "sha512-cHMk2LI430MVoX1unTt9oK1iZzQS4CYDz97MSxKLNErW69T43Z2QLFTpdS/3jVOIKrIADWfuxQ+nQNJkNV7E4w==", + "dev": true, + "license": "MIT", + "bin": { + "tab": "dist/bin/cli.mjs" + }, + "peerDependencies": { + "cac": "^6.7.14", + "citty": "^0.1.6 || ^0.2.0", + "commander": "^13.1.0" + }, + "peerDependenciesMeta": { + "cac": { + "optional": true + }, + "citty": { + "optional": true + }, + "commander": { + "optional": true + } + } + }, + "node_modules/@clack/core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-1.2.0.tgz", + "integrity": "sha512-qfxof/3T3t9DPU/Rj3OmcFyZInceqj/NVtO9rwIuJqCUgh32gwPjpFQQp/ben07qKlhpwq7GzfWpST4qdJ5Drg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-wrap-ansi": "^0.1.3", + "sisteransi": "^1.0.5" + } + }, + "node_modules/@clack/prompts": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-1.2.0.tgz", + "integrity": "sha512-4jmztR9fMqPMjz6H/UZXj0zEmE43ha1euENwkckKKel4XpSfokExPo5AiVStdHSAlHekz4d0CA/r45Ok1E4D3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@clack/core": "1.2.0", + "fast-string-width": "^1.1.0", + "fast-wrap-ansi": "^0.1.3", + "sisteransi": "^1.0.5" + } + }, + "node_modules/@cloudflare/kv-asset-handler": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.4.2.tgz", + "integrity": "sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==", + "dev": true, + "license": "MIT OR Apache-2.0", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@colordx/core": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@colordx/core/-/core-5.0.3.tgz", + "integrity": "sha512-xBQ0MYRTNNxW3mS2sJtlQTT7C3Sasqgh1/PsHva7fyDb5uqYY+gv9V0utDdX8X80mqzbGz3u/IDJdn2d/uW09g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@dxup/nuxt": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@dxup/nuxt/-/nuxt-0.4.0.tgz", + "integrity": "sha512-28LDotpr9G2knUse3cQYsOo6NJq5yhABv4ByRVRYJUmzf9Q31DI7rpRek4POlKy1aAcYyKgu5J2616pyqLohYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@dxup/unimport": "^0.1.2", + "@nuxt/kit": "^4.2.2", + "chokidar": "^5.0.0", + "pathe": "^2.0.3", + "tinyglobby": "^0.2.15" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/@dxup/nuxt/node_modules/@nuxt/kit": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-4.4.2.tgz", + "integrity": "sha512-5+IPRNX2CjkBhuWUwz0hBuLqiaJPRoKzQ+SvcdrQDbAyE+VDeFt74VpSFr5/R0ujrK4b+XnSHUJWdS72w6hsog==", + "dev": true, + "license": "MIT", + "dependencies": { + "c12": "^3.3.3", + "consola": "^3.4.2", + "defu": "^6.1.4", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.6.1", + "klona": "^2.0.6", + "mlly": "^1.8.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "rc9": "^3.0.0", + "scule": "^1.3.0", + "semver": "^7.7.4", + "tinyglobby": "^0.2.15", + "ufo": "^1.6.3", + "unctx": "^2.5.0", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/@dxup/unimport": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@dxup/unimport/-/unimport-0.1.2.tgz", + "integrity": "sha512-/B8YJGPzaYq1NbsQmwgP8EZqg40NpTw4ZB3suuI0TplbxKHeK94jeaawLmVhCv+YwUnOpiWEz9U6SeThku/8JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", + "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", + "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@ioredis/commands": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.5.1.tgz", + "integrity": "sha512-JH8ZL/ywcJyR9MmJ5BNqZllXNZQqQbnVZOqpPQqE1vHiFgAw4NHbvE0FOduNU8IX9babitBT46571OnPTT0Zcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1" + } + }, + "node_modules/@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-2.0.3.tgz", + "integrity": "sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "consola": "^3.2.3", + "detect-libc": "^2.0.0", + "https-proxy-agent": "^7.0.5", + "node-fetch": "^2.6.7", + "nopt": "^8.0.0", + "semver": "^7.5.3", + "tar": "^7.4.0" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.3.tgz", + "integrity": "sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nuxt/cli": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/@nuxt/cli/-/cli-3.34.0.tgz", + "integrity": "sha512-KVI4xSo96UtUUbmxr9ouWTytbj1LzTw5alsM4vC/gSY/l8kPMRAlq0XpNSAVTDJyALzLY70WhaIMX24LJLpdFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bomb.sh/tab": "^0.0.14", + "@clack/prompts": "^1.1.0", + "c12": "^3.3.3", + "citty": "^0.2.1", + "confbox": "^0.2.4", + "consola": "^3.4.2", + "debug": "^4.4.3", + "defu": "^6.1.4", + "exsolve": "^1.0.8", + "fuse.js": "^7.1.0", + "fzf": "^0.5.2", + "giget": "^3.1.2", + "jiti": "^2.6.1", + "listhen": "^1.9.0", + "nypm": "^0.6.5", + "ofetch": "^1.5.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^2.1.0", + "pkg-types": "^2.3.0", + "scule": "^1.3.0", + "semver": "^7.7.4", + "srvx": "^0.11.9", + "std-env": "^3.10.0", + "tinyclip": "^0.1.12", + "tinyexec": "^1.0.2", + "ufo": "^1.6.3", + "youch": "^4.1.0" + }, + "bin": { + "nuxi": "bin/nuxi.mjs", + "nuxi-ng": "bin/nuxi.mjs", + "nuxt": "bin/nuxi.mjs", + "nuxt-cli": "bin/nuxi.mjs" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + }, + "peerDependencies": { + "@nuxt/schema": "^4.3.1" + }, + "peerDependenciesMeta": { + "@nuxt/schema": { + "optional": true + } + } + }, + "node_modules/@nuxt/cli/node_modules/perfect-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-2.1.0.tgz", + "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nuxt/cli/node_modules/std-env": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nuxt/devalue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nuxt/devalue/-/devalue-2.0.2.tgz", + "integrity": "sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nuxt/devtools": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@nuxt/devtools/-/devtools-2.7.0.tgz", + "integrity": "sha512-BtIklVYny14Ykek4SHeexAHoa28MEV9kz223ZzvoNYqE0f+YVV+cJP69ovZHf+HUVpxaAMJfWKLHXinWXiCZ4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nuxt/devtools-kit": "2.7.0", + "@nuxt/devtools-wizard": "2.7.0", + "@nuxt/kit": "^3.19.3", + "@vue/devtools-core": "^7.7.7", + "@vue/devtools-kit": "^7.7.7", + "birpc": "^2.6.1", + "consola": "^3.4.2", + "destr": "^2.0.5", + "error-stack-parser-es": "^1.0.5", + "execa": "^8.0.1", + "fast-npm-meta": "^0.4.7", + "get-port-please": "^3.2.0", + "hookable": "^5.5.3", + "image-meta": "^0.2.2", + "is-installed-globally": "^1.0.0", + "launch-editor": "^2.11.1", + "local-pkg": "^1.1.2", + "magicast": "^0.3.5", + "nypm": "^0.6.2", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^1.0.0", + "pkg-types": "^2.3.0", + "semver": "^7.7.3", + "simple-git": "^3.28.0", + "sirv": "^3.0.2", + "structured-clone-es": "^1.0.0", + "tinyglobby": "^0.2.15", + "vite-plugin-inspect": "^11.3.3", + "vite-plugin-vue-tracer": "^1.0.1", + "which": "^5.0.0", + "ws": "^8.18.3" + }, + "bin": { + "devtools": "cli.mjs" + }, + "peerDependencies": { + "vite": ">=6.0" + } + }, + "node_modules/@nuxt/devtools-kit": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@nuxt/devtools-kit/-/devtools-kit-2.7.0.tgz", + "integrity": "sha512-MIJdah6CF6YOW2GhfKnb8Sivu6HpcQheqdjOlZqShBr+1DyjtKQbAKSCAyKPaoIzZP4QOo2SmTFV6aN8jBeEIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^3.19.3", + "execa": "^8.0.1" + }, + "peerDependencies": { + "vite": ">=6.0" + } + }, + "node_modules/@nuxt/devtools-wizard": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@nuxt/devtools-wizard/-/devtools-wizard-2.7.0.tgz", + "integrity": "sha512-iWuWR0U6BRpF7D6xrgq9ZkQ6ajsw2EA/gVmbU9V5JPKRUtV6DVpCPi+h34VFNeQ104Sf531XgvT0sl3h93AjXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "consola": "^3.4.2", + "diff": "^8.0.2", + "execa": "^8.0.1", + "magicast": "^0.3.5", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "prompts": "^2.4.2", + "semver": "^7.7.3" + }, + "bin": { + "devtools-wizard": "cli.mjs" + } + }, + "node_modules/@nuxt/kit": { + "version": "3.21.2", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.21.2.tgz", + "integrity": "sha512-Bd6m6mrDrqpBEbX+g0rc66/ALd1sxlgdx5nfK9MAYO0yKLTOSK7McSYz1KcOYn3LQFCXOWfvXwaqih/b+REI1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "c12": "^3.3.3", + "consola": "^3.4.2", + "defu": "^6.1.4", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.6.1", + "klona": "^2.0.6", + "knitwork": "^1.3.0", + "mlly": "^1.8.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "rc9": "^3.0.0", + "scule": "^1.3.0", + "semver": "^7.7.4", + "tinyglobby": "^0.2.15", + "ufo": "^1.6.3", + "unctx": "^2.5.0", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/@nuxt/nitro-server": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@nuxt/nitro-server/-/nitro-server-4.4.2.tgz", + "integrity": "sha512-iMTfraWcpA0MuEnnEI8JFK/4DODY4ss1CfB8m3sBVOqW9jpY1Z6hikxzrtN+CadtepW2aOI5d8TdX5hab+Sb4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-typescript": "^7.28.6", + "@nuxt/devalue": "^2.0.2", + "@nuxt/kit": "4.4.2", + "@unhead/vue": "^2.1.12", + "@vue/shared": "^3.5.30", + "consola": "^3.4.2", + "defu": "^6.1.4", + "destr": "^2.0.5", + "devalue": "^5.6.3", + "errx": "^0.1.0", + "escape-string-regexp": "^5.0.0", + "exsolve": "^1.0.8", + "h3": "^1.15.6", + "impound": "^1.1.5", + "klona": "^2.0.6", + "mocked-exports": "^0.1.1", + "nitropack": "^2.13.1", + "nypm": "^0.6.5", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "rou3": "^0.8.1", + "std-env": "^4.0.0", + "ufo": "^1.6.3", + "unctx": "^2.5.0", + "unstorage": "^1.17.4", + "vue": "^3.5.30", + "vue-bundle-renderer": "^2.2.0", + "vue-devtools-stub": "^0.1.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@babel/plugin-proposal-decorators": "^7.25.0", + "@rollup/plugin-babel": "^6.0.0 || ^7.0.0", + "nuxt": "^4.4.2" + }, + "peerDependenciesMeta": { + "@babel/plugin-proposal-decorators": { + "optional": true + }, + "@rollup/plugin-babel": { + "optional": true + } + } + }, + "node_modules/@nuxt/nitro-server/node_modules/@nuxt/kit": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-4.4.2.tgz", + "integrity": "sha512-5+IPRNX2CjkBhuWUwz0hBuLqiaJPRoKzQ+SvcdrQDbAyE+VDeFt74VpSFr5/R0ujrK4b+XnSHUJWdS72w6hsog==", + "dev": true, + "license": "MIT", + "dependencies": { + "c12": "^3.3.3", + "consola": "^3.4.2", + "defu": "^6.1.4", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.6.1", + "klona": "^2.0.6", + "mlly": "^1.8.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "rc9": "^3.0.0", + "scule": "^1.3.0", + "semver": "^7.7.4", + "tinyglobby": "^0.2.15", + "ufo": "^1.6.3", + "unctx": "^2.5.0", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/@nuxt/schema": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-4.4.2.tgz", + "integrity": "sha512-/q6C7Qhiricgi+PKR7ovBnJlKTL0memCbA1CzRT+itCW/oeYzUfeMdQ35mGntlBoyRPNrMXbzuSUhfDbSCU57w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/shared": "^3.5.30", + "defu": "^6.1.4", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "std-env": "^4.0.0" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/@nuxt/telemetry": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@nuxt/telemetry/-/telemetry-2.8.0.tgz", + "integrity": "sha512-zAwXY24KYvpLTmiV+osagd2EHkfs5IF+7oDZYTQoit5r0kPlwaCNlzHp5I/wUAWT4LBw6lG8gZ6bWidAdv/erQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "citty": "^0.2.1", + "consola": "^3.4.2", + "ofetch": "^2.0.0-alpha.3", + "rc9": "^3.0.0", + "std-env": "^4.0.0" + }, + "bin": { + "nuxt-telemetry": "bin/nuxt-telemetry.mjs" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "@nuxt/kit": ">=3.0.0" + } + }, + "node_modules/@nuxt/telemetry/node_modules/ofetch": { + "version": "2.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-2.0.0-alpha.3.tgz", + "integrity": "sha512-zpYTCs2byOuft65vI3z43Dd6iSdFbOZZLb9/d21aCpx2rGastVU9dOCv0lu4ykc1Ur1anAYjDi3SUvR0vq50JA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nuxt/vite-builder": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@nuxt/vite-builder/-/vite-builder-4.4.2.tgz", + "integrity": "sha512-fJaIwMA8ID6BU5EqmoDvnhq4qYDJeWjdHk4jfqy8D3Nm7CoUW0BvX7Ee92XoO05rtUiClGlk/NQ1Ii8hs3ZIbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nuxt/kit": "4.4.2", + "@rollup/plugin-replace": "^6.0.3", + "@vitejs/plugin-vue": "^6.0.4", + "@vitejs/plugin-vue-jsx": "^5.1.4", + "autoprefixer": "^10.4.27", + "consola": "^3.4.2", + "cssnano": "^7.1.3", + "defu": "^6.1.4", + "escape-string-regexp": "^5.0.0", + "exsolve": "^1.0.8", + "get-port-please": "^3.2.0", + "jiti": "^2.6.1", + "knitwork": "^1.3.0", + "magic-string": "^0.30.21", + "mlly": "^1.8.1", + "mocked-exports": "^0.1.1", + "nypm": "^0.6.5", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "postcss": "^8.5.8", + "seroval": "^1.5.1", + "std-env": "^4.0.0", + "ufo": "^1.6.3", + "unenv": "^2.0.0-rc.24", + "vite": "^7.3.1", + "vite-node": "^5.3.0", + "vite-plugin-checker": "^0.12.0", + "vue-bundle-renderer": "^2.2.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@babel/plugin-proposal-decorators": "^7.25.0", + "@babel/plugin-syntax-jsx": "^7.25.0", + "nuxt": "4.4.2", + "rolldown": "^1.0.0-beta.38", + "rollup-plugin-visualizer": "^6.0.0 || ^7.0.1", + "vue": "^3.3.4" + }, + "peerDependenciesMeta": { + "@babel/plugin-proposal-decorators": { + "optional": true + }, + "@babel/plugin-syntax-jsx": { + "optional": true + }, + "rolldown": { + "optional": true + }, + "rollup-plugin-visualizer": { + "optional": true + } + } + }, + "node_modules/@nuxt/vite-builder/node_modules/@nuxt/kit": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-4.4.2.tgz", + "integrity": "sha512-5+IPRNX2CjkBhuWUwz0hBuLqiaJPRoKzQ+SvcdrQDbAyE+VDeFt74VpSFr5/R0ujrK4b+XnSHUJWdS72w6hsog==", + "dev": true, + "license": "MIT", + "dependencies": { + "c12": "^3.3.3", + "consola": "^3.4.2", + "defu": "^6.1.4", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.6.1", + "klona": "^2.0.6", + "mlly": "^1.8.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "rc9": "^3.0.0", + "scule": "^1.3.0", + "semver": "^7.7.4", + "tinyglobby": "^0.2.15", + "ufo": "^1.6.3", + "unctx": "^2.5.0", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/@oxc-minify/binding-android-arm-eabi": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-android-arm-eabi/-/binding-android-arm-eabi-0.117.0.tgz", + "integrity": "sha512-5Hf2KsGRjxp3HnPU/mse7cQJa5tWfMFUPZQcgSMVsv2JZnGFFOIDzA0Oja2KDD+VPJqMpEJKc2dCHAGZgJxsGg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-android-arm64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-android-arm64/-/binding-android-arm64-0.117.0.tgz", + "integrity": "sha512-uuxGwxA5J4Sap+gz4nxyM/rer6q2A4X1Oe8HpE0CZQyb5cSBULQ15btZiVG3xOBctI5O+c2dwR1aZAP4oGKcLw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-darwin-arm64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-darwin-arm64/-/binding-darwin-arm64-0.117.0.tgz", + "integrity": "sha512-lLBf75cxUSLydumToKtGTwbLqO/1urScblJ33Vx0uF38M2ZbL2x51AybBV5vlfLjYNrxvQ8ov0Bj/OhsVO/biA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-darwin-x64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-darwin-x64/-/binding-darwin-x64-0.117.0.tgz", + "integrity": "sha512-wBWwP1voLZMuN4hpe1HRtkPBd4/o/1qan5XssmmI/hewBvGHEHkyvVLS0zu+cKqXDxYzYvb/p+EqU+xSXhEl4A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-freebsd-x64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-freebsd-x64/-/binding-freebsd-x64-0.117.0.tgz", + "integrity": "sha512-pYSacHw698oH2vb70iP1cHk6x0zhvAuOvdskvNtEqvfziu8MSjKXa699vA9Cx72+DH5rwVuj1I3f+7no2fWglA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-arm-gnueabihf": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.117.0.tgz", + "integrity": "sha512-Ugm4Qj7F2+bccjhHCjjnSNHBDPyvjPXWrntID4WJpSrPqt+Az/o0EGdty9sWOjQXRZiTVpa80uqCWZQUn94yTA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-arm-musleabihf": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.117.0.tgz", + "integrity": "sha512-qrY6ZviO9wVRI/jl4nRZO4B9os8jaJQemMeWIyFInZNk3lhqihId8iBqMKibJnRaf+JRxLM9j68atXkFRhOHrg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-arm64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.117.0.tgz", + "integrity": "sha512-2VLJHKEFBRhCihT/8uesuDPhXpbWu1OlHCxqQ7pdFVqKik1Maj5E9oSDcYzxqfaCRStvTHkmLVWJBK5CVcIadg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-arm64-musl": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.117.0.tgz", + "integrity": "sha512-C3zapJconWpl2Y7LR3GkRkH6jxpuV2iVUfkFcHT5Ffn4Zu7l88mZa2dhcfdULZDybN1Phka/P34YUzuskUUrXw==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-ppc64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.117.0.tgz", + "integrity": "sha512-2T/Bm+3/qTfuNS4gKSzL8qbiYk+ErHW2122CtDx+ilZAzvWcJ8IbqdZIbEWOlwwe03lESTxPwTBLFqVgQU2OeQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-riscv64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.117.0.tgz", + "integrity": "sha512-MKLjpldYkeoB4T+yAi4aIAb0waifxUjLcKkCUDmYAY3RqBJTvWK34KtfaKZL0IBMIXfD92CbKkcxQirDUS9Xcg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-riscv64-musl": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.117.0.tgz", + "integrity": "sha512-UFVcbPvKUStry6JffriobBp8BHtjmLLPl4bCY+JMxIn/Q3pykCpZzRwFTcDurG/kY8tm+uSNfKKdRNa5Nh9A7g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-s390x-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.117.0.tgz", + "integrity": "sha512-B9GyPQ1NKbvpETVAMyJMfRlD3c6UJ7kiuFUAlx9LTYiQL+YIyT6vpuRlq1zgsXxavZluVrfeJv6x0owV4KDx4Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-x64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.117.0.tgz", + "integrity": "sha512-fXfhtr+WWBGNy4M5GjAF5vu/lpulR4Me34FjTyaK9nDrTZs7LM595UDsP1wliksqp4hD/KdoqHGmbCrC+6d4vA==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-linux-x64-musl": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-linux-x64-musl/-/binding-linux-x64-musl-0.117.0.tgz", + "integrity": "sha512-jFBgGbx1oLadb83ntJmy1dWlAHSQanXTS21G4PgkxyONmxZdZ/UMKr7KsADzMuoPsd2YhJHxzRpwJd9U+4BFBw==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-openharmony-arm64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-openharmony-arm64/-/binding-openharmony-arm64-0.117.0.tgz", + "integrity": "sha512-nxPd9vx1vYz8IlIMdl9HFdOK/ood1H5hzbSFsyO8JU55tkcJoBL8TLCbuFf9pHpOy27l2gcPyV6z3p4eAcTH5Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-wasm32-wasi": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-wasm32-wasi/-/binding-wasm32-wasi-0.117.0.tgz", + "integrity": "sha512-pSvjJ6cCCfEXSteWSiVfZhdRzvpmS3tLhlXrXTYiuTDFrkRCobRP39SRwAzK23rE9i/m2JAaES2xPEW6+xu85g==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.1.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@oxc-minify/binding-win32-arm64-msvc": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.117.0.tgz", + "integrity": "sha512-9NoT9baFrWPdJRIZVQ1jzPZW9TjPT2sbzQyDdoK7uD1V8JXCe1L2y7sp9k2ldZZheaIcmtNwHc7jyD7kYz/0XQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-win32-ia32-msvc": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.117.0.tgz", + "integrity": "sha512-E51LTjkRei5u2dpFiYSObuh+e43xg45qlmilSTd0XDGFdYJCOv62Q0MEn61TR+efQYPNleYwWdTS9t+tp9p/4w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-minify/binding-win32-x64-msvc": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-minify/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.117.0.tgz", + "integrity": "sha512-I8vniPOxWQdxfIbXNvQLaJ1n8SrnqES6wuiAX10CU72sKsizkds9kDaJ1KzWvDy39RKhTBmD1cJsU2uxPFgizQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-android-arm-eabi": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm-eabi/-/binding-android-arm-eabi-0.117.0.tgz", + "integrity": "sha512-XarGPJpaobgKjfm7xRfCGWWszuPbm/OeP91NdMhxtcLZ/qLTmWF0P0z0gqmr0Uysi1F1v1BNtcST11THMrcEOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-android-arm64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm64/-/binding-android-arm64-0.117.0.tgz", + "integrity": "sha512-EPTs2EBijGmyhPso4rXAL0NSpECXER9IaVKFZEv83YcA6h4uhKW47kmYt+OZcSp130zhHx+lTWILDQ/LDkCRNA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-darwin-arm64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.117.0.tgz", + "integrity": "sha512-3bAEpyih6r/Kb+Xzn1em1qBMClOS7NsVWgF86k95jpysR5ix/HlKFKSy7cax6PcS96HeHR4kjlME20n/XK1zNg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-darwin-x64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.117.0.tgz", + "integrity": "sha512-W7S99zFwVZhSbCxvjfZkioStFU249DBc4TJw/kK6kfKwx2Zew+jvizX5Y3ZPkAh7fBVUSNOdSeOqLBHLiP50tw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-freebsd-x64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.117.0.tgz", + "integrity": "sha512-xH76lqSdjCSY0KUMPwLXlvQ3YEm3FFVEQmgiOCGNf+stZ6E4Mo3nC102Bo8yKd7aW0foIPAFLYsHgj7vVI/axw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm-gnueabihf": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.117.0.tgz", + "integrity": "sha512-9Hdm1imzrn4RdMYnQKKcy+7p7QsSPIrgVIZmpGSJT02nYDuBWLdG1pdYMPFoEo46yiXry3tS3RoHIpNbT1IiyQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm-musleabihf": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.117.0.tgz", + "integrity": "sha512-Itszer/VCeYhYVJLcuKnHktlY8QyGnVxapltP68S1XRGlV6IsM9HQAElJRMwQhT6/GkMjOhANmkv2Qu/9v44lw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.117.0.tgz", + "integrity": "sha512-jBxD7DtlHQ36ivjjZdH0noQJgWNouenzpLmXNKnYaCsBfo3jY95m5iyjYQEiWkvkhJ3TJUAs7tQ1/kEpY7x/Kg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm64-musl": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.117.0.tgz", + "integrity": "sha512-QagKTDF4lrz8bCXbUi39Uq5xs7C7itAseKm51f33U+Dyar9eJY/zGKqfME9mKLOiahX7Fc1J3xMWVS0AdDXLPg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-ppc64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.117.0.tgz", + "integrity": "sha512-RPddpcE/0xxWaommWy0c5i/JdrXcXAkxBS2GOrAUh5LKmyCh03hpJedOAWszG4ADsKQwoUQQ1/tZVGRhZIWtKA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-riscv64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.117.0.tgz", + "integrity": "sha512-ur/WVZF9FSOiZGxyP+nfxZzuv6r5OJDYoVxJnUR7fM/hhXLh4V/be6rjbzm9KLCDBRwYCEKJtt+XXNccwd06IA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-riscv64-musl": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.117.0.tgz", + "integrity": "sha512-ujGcAx8xAMvhy7X5sBFi3GXML1EtyORuJZ5z2T6UV3U416WgDX/4OCi3GnoteeenvxIf6JgP45B+YTHpt71vpA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-s390x-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.117.0.tgz", + "integrity": "sha512-hbsfKjUwRjcMZZvvmpZSc+qS0bHcHRu8aV/I3Ikn9BzOA0ZAgUE7ctPtce5zCU7bM8dnTLi4sJ1Pi9YHdx6Urw==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-x64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.117.0.tgz", + "integrity": "sha512-1QrTrf8rige7UPJrYuDKJLQOuJlgkt+nRSJLBMHWNm9TdivzP48HaK3f4q18EjNlglKtn03lgjMu4fryDm8X4A==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-x64-musl": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.117.0.tgz", + "integrity": "sha512-gRvK6HPzF5ITRL68fqb2WYYs/hGviPIbkV84HWCgiJX+LkaOpp+HIHQl3zVZdyKHwopXToTbXbtx/oFjDjl8pg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-openharmony-arm64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-openharmony-arm64/-/binding-openharmony-arm64-0.117.0.tgz", + "integrity": "sha512-QPJvFbnnDZZY7xc+xpbIBWLThcGBakwaYA9vKV8b3+oS5MGfAZUoTFJcix5+Zg2Ri46sOfrUim6Y6jsKNcssAQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-wasm32-wasi": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-wasm32-wasi/-/binding-wasm32-wasi-0.117.0.tgz", + "integrity": "sha512-+XRSNA0xt3pk/6CUHM7pykVe7M8SdifJk8LX1+fIp/zefvR3HBieZCbwG5un8gogNgh7srLycoh/cQA9uozv5g==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.1.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@oxc-parser/binding-win32-arm64-msvc": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.117.0.tgz", + "integrity": "sha512-GpxeGS+Vo030DsrXeRPc7OSJOQIyAHkM3mzwBcnQjg/79XnOIDDMXJ5X6/aNdkVt/+Pv35pqKzGA4TQau97x8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-win32-ia32-msvc": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.117.0.tgz", + "integrity": "sha512-tchWEYiso1+objTZirmlR+w3fcIel6PVBOJ8NuC2Jr30dxBOiKUfFLovJLANwHg1+TzeD6pVSLIIIEf2T5o5lQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-win32-x64-msvc": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.117.0.tgz", + "integrity": "sha512-ysRJAjIbB4e5y+t9PZs7TwbgOV/GVT//s30AORLCT/pedYwpYzHq6ApXK7is9fvyfZtgT3anNir8+esurmyaDw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.117.0.tgz", + "integrity": "sha512-C/kPXBphID44fXdsa2xSOCuzX8fKZiFxPsvucJ6Yfkr6CJlMA+kNLPNKyLoI+l9XlDsNxBrz6h7IIjKU8pB69w==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@oxc-transform/binding-android-arm-eabi": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-android-arm-eabi/-/binding-android-arm-eabi-0.117.0.tgz", + "integrity": "sha512-17giX7h5VR9Eodru4OoSCFdgwLFIaUxeEn8JWe0vMZrAuRbT9NiDTy5dXdbGQBoO8aXPkbGS38FGlvbi31aujw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-android-arm64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-android-arm64/-/binding-android-arm64-0.117.0.tgz", + "integrity": "sha512-1LrDd1CPochtLx04pAafdah6QtOQQj0/Evttevi+0u8rCI5FKucIG7pqBHkIQi/y7pycFYIj+GebhET80maeUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-darwin-arm64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-darwin-arm64/-/binding-darwin-arm64-0.117.0.tgz", + "integrity": "sha512-K1Xo52xJOvFfHSkz2ax9X5Qsku23RCfTIPbHZWdUCAQ1TQooI+sFcewSubhVUJ4DVK12/tYT//XXboumin+FHA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-darwin-x64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-darwin-x64/-/binding-darwin-x64-0.117.0.tgz", + "integrity": "sha512-ftFT/8Laolfq49mRRWLkIhd1AbJ0MI5bW3LwddvdoAg9zXwkx4qhzTYyBPRZhvXWftts+NjlHfHsXCOqI4tPtw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-freebsd-x64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-freebsd-x64/-/binding-freebsd-x64-0.117.0.tgz", + "integrity": "sha512-QDRyw0atg9BMnwOwnJeW6REzWPLEjiWtsCc2Sj612F1hCdvP+n0L3o8sHinEWM+BiOkOYtUxHA69WjUslc3G+g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-arm-gnueabihf": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.117.0.tgz", + "integrity": "sha512-UvpvOjyQVgiIJahIpMT0qAsLJT8O1ibHTBgXGOsZkQgw1xmjARPQ07dpRcucPPn6cqCF3wrxfbqtr2vFHaMkdA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-arm-musleabihf": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.117.0.tgz", + "integrity": "sha512-cIhztGFjKk8ngP+/7EPkEhzWMGr2neezxgWirSn/f/MirjH234oHHGJ2diKIbGQEsy0aOuJMTkL9NLfzfmH51A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-arm64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.117.0.tgz", + "integrity": "sha512-mXbDfvDN0RZVg7v4LohNzU0kK3fMAZgkUKTkpFVgxEvzibEG5VpSznkypUwHI4a8U8pz+K6mGaLetX3Xt+CvvA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-arm64-musl": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.117.0.tgz", + "integrity": "sha512-ykxpPQp0eAcSmhy0Y3qKvdanHY4d8THPonDfmCoktUXb6r0X6qnjpJB3V+taN1wevW55bOEZd97kxtjTKjqhmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-ppc64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.117.0.tgz", + "integrity": "sha512-Rvspti4Kr7eq6zSrURK5WjscfWQPvmy/KjJZV45neRKW8RLonE3r9+NgrwSLGoHvQ3F24fbqlkplox1RtlhH5A==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-riscv64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.117.0.tgz", + "integrity": "sha512-Dr2ZW9ZZ4l1eQ5JUEUY3smBh4JFPCPuybWaDZTLn3ADZjyd8ZtNXEjeMT8rQbbhbgSL9hEgbwaqraole3FNThQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-riscv64-musl": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.117.0.tgz", + "integrity": "sha512-oD1Bnes1bIC3LVBSrWEoSUBj6fvatESPwAVWfJVGVQlqWuOs/ZBn1e4Nmbipo3KGPHK7DJY75r/j7CQCxhrOFQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-s390x-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.117.0.tgz", + "integrity": "sha512-qT//IAPLvse844t99Kff5j055qEbXfwzWgvCMb0FyjisnB8foy25iHZxZIocNBe6qwrCYWUP1M8rNrB/WyfS1Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-x64-gnu": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.117.0.tgz", + "integrity": "sha512-2YEO5X+KgNzFqRVO5dAkhjcI5gwxus4NSWVl/+cs2sI6P0MNPjqE3VWPawl4RTC11LvetiiZdHcujUCPM8aaUw==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-linux-x64-musl": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-linux-x64-musl/-/binding-linux-x64-musl-0.117.0.tgz", + "integrity": "sha512-3wqWbTSaIFZvDr1aqmTul4cg8PRWYh6VC52E8bLI7ytgS/BwJLW+sDUU2YaGIds4sAf/1yKeJRmudRCDPW9INg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-openharmony-arm64": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-openharmony-arm64/-/binding-openharmony-arm64-0.117.0.tgz", + "integrity": "sha512-Ebxx6NPqhzlrjvx4+PdSqbOq+li0f7X59XtJljDghkbJsbnkHvhLmPR09ifHt5X32UlZN63ekjwcg/nbmHLLlA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-wasm32-wasi": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-wasm32-wasi/-/binding-wasm32-wasi-0.117.0.tgz", + "integrity": "sha512-Nn8mmcBiQ0XKHLTb05QBlH+CDkn7jf5YDVv9FtKhy4zJT0NEU9y3dXVbfcurOpsVrG9me4ktzDQNCaAoJjUQyw==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^1.1.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@oxc-transform/binding-win32-arm64-msvc": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.117.0.tgz", + "integrity": "sha512-15cbsF8diXWGnHrTsVgVeabETiT/KdMAfRAcot99xsaVecJs3pITNNjC6Qj+/TPNpehbgIFjlhhxOVSbQsTBgg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-win32-ia32-msvc": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.117.0.tgz", + "integrity": "sha512-I6DkhCuFX6p9rckdWiLuZfBWrrYUC7sNX+zLaCfa5zvrPNwo1/29KkefvqXVxu3AWT/6oZAbtc0A8/mqhETJPQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-transform/binding-win32-x64-msvc": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/@oxc-transform/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.117.0.tgz", + "integrity": "sha512-V7YzavQnYcRJBeJkp0qpb3FKrlm5I57XJetCYB4jsjStuboQmnFMZ/XQH55Szlf/kVyeU9ddQwv72gJJ5BrGjQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", + "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.3", + "is-glob": "^4.0.3", + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.6", + "@parcel/watcher-darwin-arm64": "2.5.6", + "@parcel/watcher-darwin-x64": "2.5.6", + "@parcel/watcher-freebsd-x64": "2.5.6", + "@parcel/watcher-linux-arm-glibc": "2.5.6", + "@parcel/watcher-linux-arm-musl": "2.5.6", + "@parcel/watcher-linux-arm64-glibc": "2.5.6", + "@parcel/watcher-linux-arm64-musl": "2.5.6", + "@parcel/watcher-linux-x64-glibc": "2.5.6", + "@parcel/watcher-linux-x64-musl": "2.5.6", + "@parcel/watcher-win32-arm64": "2.5.6", + "@parcel/watcher-win32-ia32": "2.5.6", + "@parcel/watcher-win32-x64": "2.5.6" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", + "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", + "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", + "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", + "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", + "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", + "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", + "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", + "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", + "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", + "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-wasm": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.5.6.tgz", + "integrity": "sha512-byAiBZ1t3tXQvc8dMD/eoyE7lTXYorhn+6uVW5AC+JGI1KtJC/LvDche5cfUE+qiefH+Ybq0bUCJU0aB1cSHUA==", + "bundleDependencies": [ + "napi-wasm" + ], + "dev": true, + "license": "MIT", + "dependencies": { + "is-glob": "^4.0.3", + "napi-wasm": "^1.1.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-wasm/node_modules/napi-wasm": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", + "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", + "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", + "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@pinia/nuxt": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@pinia/nuxt/-/nuxt-0.11.3.tgz", + "integrity": "sha512-7WVNHpWx4qAEzOlnyrRC88kYrwnlR/PrThWT0XI1dSNyUAXu/KBv9oR37uCgYkZroqP5jn8DfzbkNF3BtKvE9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^4.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "pinia": "^3.0.4" + } + }, + "node_modules/@pinia/nuxt/node_modules/@nuxt/kit": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-4.4.2.tgz", + "integrity": "sha512-5+IPRNX2CjkBhuWUwz0hBuLqiaJPRoKzQ+SvcdrQDbAyE+VDeFt74VpSFr5/R0ujrK4b+XnSHUJWdS72w6hsog==", + "dev": true, + "license": "MIT", + "dependencies": { + "c12": "^3.3.3", + "consola": "^3.4.2", + "defu": "^6.1.4", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.6.1", + "klona": "^2.0.6", + "mlly": "^1.8.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "rc9": "^3.0.0", + "scule": "^1.3.0", + "semver": "^7.7.4", + "tinyglobby": "^0.2.15", + "ufo": "^1.6.3", + "unctx": "^2.5.0", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.29", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", + "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", + "dev": true, + "license": "MIT" + }, + "node_modules/@poppinss/colors": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@poppinss/colors/-/colors-4.1.6.tgz", + "integrity": "sha512-H9xkIdFswbS8n1d6vmRd8+c10t2Qe+rZITbbDHHkQixH5+2x1FDGmi/0K+WgWiqQFKPSlIYB7jlH6Kpfn6Fleg==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^4.1.5" + } + }, + "node_modules/@poppinss/colors/node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@poppinss/dumper": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@poppinss/dumper/-/dumper-0.7.0.tgz", + "integrity": "sha512-0UTYalzk2t6S4rA2uHOz5bSSW2CHdv4vggJI6Alg90yvl0UgXs6XSXpH96OH+bRkX4J/06djv29pqXJ0lq5Kag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@poppinss/colors": "^4.1.5", + "@sindresorhus/is": "^7.0.2", + "supports-color": "^10.0.0" + } + }, + "node_modules/@poppinss/exception": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@poppinss/exception/-/exception-1.2.3.tgz", + "integrity": "sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.2.tgz", + "integrity": "sha512-izyXV/v+cHiRfozX62W9htOAvwMo4/bXKDrQ+vom1L1qRuexPock/7VZDAhnpHCLNejd3NJ6hiab+tO0D44Rgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/plugin-alias": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-6.0.0.tgz", + "integrity": "sha512-tPCzJOtS7uuVZd+xPhoy5W4vThe6KWXNmsFCNktaAh5RTqcLiSfT4huPQIXkgJ6YCOjJHvecOAzQxLFhPxKr+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "rollup": ">=4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "29.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-29.0.2.tgz", + "integrity": "sha512-S/ggWH1LU7jTyi9DxZOKyxpVd4hF/OZ0JrEbeLjXk/DFXwRny0tjD2c992zOUYQobLrVkRVMDdmHP16HKP7GRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "fdir": "^6.2.0", + "is-reference": "1.2.1", + "magic-string": "^0.30.3", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=16.0.0 || 14 >= 14.17" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-inject": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", + "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-json": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", + "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.1.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.3.tgz", + "integrity": "sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-6.0.3.tgz", + "integrity": "sha512-J4RZarRvQAm5IF0/LwUUg+obsm+xZhYnbMXmXROyoSE1ATJe3oXSb9L5MMppdxP2ylNSjv6zFBwKYjcKMucVfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-terser": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-1.0.0.tgz", + "integrity": "sha512-FnCxhTBx6bMOYQrar6C8h3scPt8/JwIzw3+AJ2K++6guogH5fYaIFia+zZuhqv0eo1RN7W1Pz630SyvLbDjhtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "serialize-javascript": "^7.0.3", + "smob": "^1.0.0", + "terser": "^5.17.4" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", + "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.1.tgz", + "integrity": "sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.1.tgz", + "integrity": "sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.1.tgz", + "integrity": "sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.1.tgz", + "integrity": "sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.1.tgz", + "integrity": "sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.1.tgz", + "integrity": "sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.1.tgz", + "integrity": "sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.1.tgz", + "integrity": "sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==", + "cpu": [ + "arm" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.1.tgz", + "integrity": "sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.1.tgz", + "integrity": "sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.1.tgz", + "integrity": "sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.1.tgz", + "integrity": "sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==", + "cpu": [ + "loong64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.1.tgz", + "integrity": "sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.1.tgz", + "integrity": "sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.1.tgz", + "integrity": "sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.1.tgz", + "integrity": "sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.1.tgz", + "integrity": "sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.1.tgz", + "integrity": "sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.1.tgz", + "integrity": "sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.1.tgz", + "integrity": "sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.1.tgz", + "integrity": "sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.1.tgz", + "integrity": "sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.1.tgz", + "integrity": "sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.1.tgz", + "integrity": "sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.1.tgz", + "integrity": "sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@simple-git/args-pathspec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@simple-git/args-pathspec/-/args-pathspec-1.0.2.tgz", + "integrity": "sha512-nEFVejViHUoL8wU8GTcwqrvqfUG40S5ts6S4fr1u1Ki5CklXlRDYThPVA/qurTmCYFGnaX3XpVUmICLHdvhLaA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@simple-git/argv-parser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@simple-git/argv-parser/-/argv-parser-1.0.3.tgz", + "integrity": "sha512-NMKv9sJcSN2VvnPT9Ja7eKfGy8Q8mMFLwPTCcuZMtv3+mYcLIZflg31S/tp2XCCyiY7YAx6cgBHQ0fwA2fWHpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@simple-git/args-pathspec": "^1.0.2" + } + }, + "node_modules/@sindresorhus/is": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-7.2.0.tgz", + "integrity": "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@speed-highlight/core": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@speed-highlight/core/-/core-1.2.15.tgz", + "integrity": "sha512-BMq1K3DsElxDWawkX6eLg9+CKJrTVGCBAWVuHXVUV2u0s2711qiChLSId6ikYPfxhdYocLNt3wWwSvDiTvFabw==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@unhead/vue": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-2.1.13.tgz", + "integrity": "sha512-HYy0shaHRnLNW9r85gppO8IiGz0ONWVV3zGdlT8CQ0tbTwixznJCIiyqV4BSV1aIF1jJIye0pd1p/k6Eab8Z/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookable": "^6.0.1", + "unhead": "2.1.13" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + }, + "peerDependencies": { + "vue": ">=3.5.18" + } + }, + "node_modules/@unhead/vue/node_modules/hookable": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-6.1.0.tgz", + "integrity": "sha512-ZoKZSJgu8voGK2geJS+6YtYjvIzu9AOM/KZXsBxr83uhLL++e9pEv/dlgwgy3dvHg06kTz6JOh1hk3C8Ceiymw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vercel/nft": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-1.5.0.tgz", + "integrity": "sha512-IWTDeIoWhQ7ZtRO/JRKH+jhmeQvZYhtGPmzw/QGDY+wDCQqfm25P9yIdoAFagu4fWsK4IwZXDFIjrmp5rRm/sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@mapbox/node-pre-gyp": "^2.0.0", + "@rollup/pluginutils": "^5.1.3", + "acorn": "^8.6.0", + "acorn-import-attributes": "^1.9.5", + "async-sema": "^3.1.1", + "bindings": "^1.4.0", + "estree-walker": "2.0.2", + "glob": "^13.0.0", + "graceful-fs": "^4.2.9", + "node-gyp-build": "^4.2.2", + "picomatch": "^4.0.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "nft": "out/cli.js" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.5.tgz", + "integrity": "sha512-bL3AxKuQySfk1iGcBsQnoRVexTPJq0Z/ixFVM8OhVJAP6ZXXXLtM7NFKWhLl30Kg7uTBqIaPXbh+nuQCuBDedg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "1.0.0-rc.2" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vitejs/plugin-vue-jsx": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-5.1.5.tgz", + "integrity": "sha512-jIAsvHOEtWpslLOI2MeElGFxH7M8pM83BU/Tor4RLyiwH0FM4nUW3xdvbw20EeU9wc5IspQwMq225K3CMnJEpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.29.0", + "@babel/plugin-syntax-typescript": "^7.28.6", + "@babel/plugin-transform-typescript": "^7.28.6", + "@rolldown/pluginutils": "^1.0.0-rc.2", + "@vue/babel-plugin-jsx": "^2.0.1" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "vue": "^3.0.0" + } + }, + "node_modules/@vue-macros/common": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vue-macros/common/-/common-3.1.2.tgz", + "integrity": "sha512-h9t4ArDdniO9ekYHAD95t9AZcAbb19lEGK+26iAjUODOIJKmObDNBSe4+6ELQAA3vtYiFPPBtHh7+cQCKi3Dng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/compiler-sfc": "^3.5.22", + "ast-kit": "^2.1.2", + "local-pkg": "^1.1.2", + "magic-string-ast": "^1.0.2", + "unplugin-utils": "^0.3.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/vue-macros" + }, + "peerDependencies": { + "vue": "^2.7.0 || ^3.2.25" + }, + "peerDependenciesMeta": { + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-2.0.1.tgz", + "integrity": "sha512-uZ66EaFbnnZSYqYEyplWvn46GhZ1KuYSThdT68p+am7MgBNbQ3hphTL9L+xSIsWkdktwhPYLwPgVWqo96jDdRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-2.0.1.tgz", + "integrity": "sha512-a8CaLQjD/s4PVdhrLD/zT574ZNPnZBOY+IhdtKWRB4HRZ0I2tXBi5ne7d9eCfaYwp5gU5+4KIyFTV1W1YL9xZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.4", + "@babel/types": "^7.28.4", + "@vue/babel-helper-vue-transform-on": "2.0.1", + "@vue/babel-plugin-resolve-type": "2.0.1", + "@vue/shared": "^3.5.22" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + } + } + }, + "node_modules/@vue/babel-plugin-resolve-type": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-2.0.1.tgz", + "integrity": "sha512-ybwgIuRGRRBhOU37GImDoWQoz+TlSqap65qVI6iwg/J7FfLTLmMf97TS7xQH9I7Qtr/gp161kYVdhr1ZMraSYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/parser": "^7.28.4", + "@vue/compiler-sfc": "^3.5.22" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.32.tgz", + "integrity": "sha512-4x74Tbtqnda8s/NSD6e1Dr5p1c8HdMU5RWSjMSUzb8RTcUQqevDCxVAitcLBKT+ie3o0Dl9crc/S/opJM7qBGQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.2", + "@vue/shared": "3.5.32", + "entities": "^7.0.1", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.32.tgz", + "integrity": "sha512-ybHAu70NtiEI1fvAUz3oXZqkUYEe5J98GjMDpTGl5iHb0T15wQYLR4wE3h9xfuTNA+Cm2f4czfe8B4s+CCH57Q==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.5.32", + "@vue/shared": "3.5.32" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.32.tgz", + "integrity": "sha512-8UYUYo71cP/0YHMO814TRZlPuUUw3oifHuMR7Wp9SNoRSrxRQnhMLNlCeaODNn6kNTJsjFoQ/kqIj4qGvya4Xg==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.2", + "@vue/compiler-core": "3.5.32", + "@vue/compiler-dom": "3.5.32", + "@vue/compiler-ssr": "3.5.32", + "@vue/shared": "3.5.32", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.21", + "postcss": "^8.5.8", + "source-map-js": "^1.2.1" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.32.tgz", + "integrity": "sha512-Gp4gTs22T3DgRotZ8aA/6m2jMR+GMztvBXUBEUOYOcST+giyGWJ4WvFd7QLHBkzTxkfOt8IELKNdpzITLbA2rw==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.32", + "@vue/shared": "3.5.32" + } + }, + "node_modules/@vue/devtools-api": { + "version": "7.7.9", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.9.tgz", + "integrity": "sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g==", + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^7.7.9" + } + }, + "node_modules/@vue/devtools-core": { + "version": "7.7.9", + "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-7.7.9.tgz", + "integrity": "sha512-48jrBSwG4GVQRvVeeXn9p9+dlx+ISgasM7SxZZKczseohB0cBz+ITKr4YbLWjmJdy45UHL7UMPlR4Y0CWTRcSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^7.7.9", + "@vue/devtools-shared": "^7.7.9", + "mitt": "^3.0.1", + "nanoid": "^5.1.0", + "pathe": "^2.0.3", + "vite-hot-client": "^2.0.4" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@vue/devtools-kit": { + "version": "7.7.9", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.9.tgz", + "integrity": "sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA==", + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^7.7.9", + "birpc": "^2.3.0", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.2" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.7.9", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.9.tgz", + "integrity": "sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==", + "license": "MIT", + "dependencies": { + "rfdc": "^1.4.1" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.32.tgz", + "integrity": "sha512-/ORasxSGvZ6MN5gc+uE364SxFdJ0+WqVG0CENXaGW58TOCdrAW76WWaplDtECeS1qphvtBZtR+3/o1g1zL4xPQ==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.5.32" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.32.tgz", + "integrity": "sha512-pDrXCejn4UpFDFmMd27AcJEbHaLemaE5o4pbb7sLk79SRIhc6/t34BQA7SGNgYtbMnvbF/HHOftYBgFJtUoJUQ==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.32", + "@vue/shared": "3.5.32" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.32.tgz", + "integrity": "sha512-1CDVv7tv/IV13V8Nip1k/aaObVbWqRlVCVezTwx3K07p7Vxossp5JU1dcPNhJk3w347gonIUT9jQOGutyJrSVQ==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.5.32", + "@vue/runtime-core": "3.5.32", + "@vue/shared": "3.5.32", + "csstype": "^3.2.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.32.tgz", + "integrity": "sha512-IOjm2+JQwRFS7W28HNuJeXQle9KdZbODFY7hFGVtnnghF51ta20EWAZJHX+zLGtsHhaU6uC9BGPV52KVpYryMQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.5.32", + "@vue/shared": "3.5.32" + }, + "peerDependencies": { + "vue": "3.5.32" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.32.tgz", + "integrity": "sha512-ksNyrmRQzWJJ8n3cRDuSF7zNNontuJg1YHnmWRJd2AMu8Ij2bqwiiri2lH5rHtYPZjj4STkNcgcmiQqlOjiYGg==", + "license": "MIT" + }, + "node_modules/abbrev": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz", + "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ansis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-4.2.0.tgz", + "integrity": "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/archiver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", + "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.2", + "async": "^3.2.4", + "buffer-crc32": "^1.0.0", + "readable-stream": "^4.0.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^6.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", + "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "^10.0.0", + "graceful-fs": "^4.2.0", + "is-stream": "^2.0.1", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/archiver-utils/node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/archiver-utils/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/archiver-utils/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/archiver-utils/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ast-kit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-2.2.0.tgz", + "integrity": "sha512-m1Q/RaVOnTp9JxPX+F+Zn7IcLYMzM8kZofDImfsKZd8MbR+ikdOzTeztStWqfrqIxZnYWryyI9ePm3NGjnZgGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.5", + "pathe": "^2.0.3" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/ast-walker-scope": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/ast-walker-scope/-/ast-walker-scope-0.8.3.tgz", + "integrity": "sha512-cbdCP0PGOBq0ASG+sjnKIoYkWMKhhz+F/h9pRexUdX2Hd38+WOlBkRKlqkGOSm0YQpcFMQBJeK4WspUAkwsEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.4", + "ast-kit": "^2.1.3" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-sema": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz", + "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/autoprefixer": { + "version": "10.4.27", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz", + "integrity": "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001774", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/b4a": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.0.tgz", + "integrity": "sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/bare-events": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } + }, + "node_modules/bare-fs": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.0.tgz", + "integrity": "sha512-xzqKsCFxAek9aezYhjJuJRXBIaYlg/0OGDTZp+T8eYmYMlm66cs6cYko02drIyjN2CBbi+I6L7YfXyqpqtKRXA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } + } + }, + "node_modules/bare-os": { + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.8.7.tgz", + "integrity": "sha512-G4Gr1UsGeEy2qtDTZwL7JFLo2wapUarz7iTMcYcMFdS89AIQuBoyjgXZz0Utv7uHs3xA9LckhVbeBi8lEQrC+w==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "bare": ">=1.14.0" + } + }, + "node_modules/bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-os": "^3.0.1" + } + }, + "node_modules/bare-stream": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.12.0.tgz", + "integrity": "sha512-w28i8lkBgREV3rPXGbgK+BO66q+ZpKqRWrZLiCdmmUlLPrQ45CzkvRhN+7lnv00Gpi2zy5naRxnUFAxCECDm9g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "streamx": "^2.25.0", + "teex": "^1.0.1" + }, + "peerDependencies": { + "bare-abort-controller": "*", + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + }, + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, + "node_modules/bare-url": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.0.tgz", + "integrity": "sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-path": "^3.0.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.17", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.17.tgz", + "integrity": "sha512-HdrkN8eVG2CXxeifv/VdJ4A4RSra1DTW8dc/hdxzhGHN8QePs6gKaWM9pHPcpCoxYZJuOZ8drHmbdpLHjCYjLA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/birpc": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.9.0.tgz", + "integrity": "sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c12": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/c12/-/c12-3.3.4.tgz", + "integrity": "sha512-cM0ApFQSBXuourJejzwv/AuPRvAxordTyParRVcHjjtXirtkzM0uK2L9TTn9s0cXZbG7E55jCivRQzoxYmRAlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^5.0.0", + "confbox": "^0.2.4", + "defu": "^6.1.6", + "dotenv": "^17.3.1", + "exsolve": "^1.0.8", + "giget": "^3.2.0", + "jiti": "^2.6.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^2.1.0", + "pkg-types": "^2.3.0", + "rc9": "^3.0.1" + }, + "peerDependencies": { + "magicast": "*" + }, + "peerDependenciesMeta": { + "magicast": { + "optional": true + } + } + }, + "node_modules/c12/node_modules/perfect-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-2.1.0.tgz", + "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001787", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001787.tgz", + "integrity": "sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/citty": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.2.2.tgz", + "integrity": "sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/cluster-key-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true, + "license": "MIT" + }, + "node_modules/compatx": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/compatx/-/compatx-0.2.0.tgz", + "integrity": "sha512-6gLRNt4ygsi5NyMVhceOCFv14CIdDFN7fQjX1U4+47qVE/+kjPoXMK65KWK+dWxmFzMTuKazoQ9sch6pM0p5oA==", + "dev": true, + "license": "MIT" + }, + "node_modules/compress-commons": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", + "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^6.0.0", + "is-stream": "^2.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/compress-commons/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/confbox": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz", + "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie-es": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-2.0.1.tgz", + "integrity": "sha512-aVf4A4hI2w70LnF7GG+7xDQUkliwiXWXFvTjkip4+b64ygDQ2sJPRSKFDHbxn8o0xu9QzPkMuuiWIXyFSE2slA==", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-anything": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-4.0.5.tgz", + "integrity": "sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==", + "license": "MIT", + "dependencies": { + "is-what": "^5.2.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", + "dev": true, + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/croner": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/croner/-/croner-10.0.1.tgz", + "integrity": "sha512-ixNtAJndqh173VQ4KodSdJEI6nuioBWI0V1ITNKhZZsO0pEMoDxz539T4FTTbSZ/xIOSuDnzxLVRqBVSvPNE2g==", + "dev": true, + "funding": [ + { + "type": "other", + "url": "https://paypal.me/hexagonpp" + }, + { + "type": "github", + "url": "https://github.com/sponsors/hexagon" + } + ], + "license": "MIT", + "engines": { + "node": ">=18.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crossws": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", + "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==", + "dev": true, + "license": "MIT", + "dependencies": { + "uncrypto": "^0.1.3" + } + }, + "node_modules/css-declaration-sorter": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.4.0.tgz", + "integrity": "sha512-LTuzjPoyA2vMGKKcaOqKSp7Ub2eGrNfKiZH4LpezxpNrsICGCSFvsQOI29psISxNZtaXibkC2CXzrQ5enMeGGw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-select": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", + "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.1.4.tgz", + "integrity": "sha512-T9PNS7y+5Nc9Qmu9mRONqfxG1RVY7Vuvky0XN6MZ+9hqplesTEwnj9r0ROtVuSwUVfaDhVlavuzWIVLUgm4hkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^7.0.12", + "lilconfig": "^3.1.3" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/cssnano-preset-default": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.12.tgz", + "integrity": "sha512-B3Eoouzw/sl2zANI0AL9KbacummJTCww+fkHaDBMZad/xuVx8bUduPLly6hKVQAlrmvYkS1jB1CVQEKm3gn0AA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^5.0.1", + "postcss-calc": "^10.1.1", + "postcss-colormin": "^7.0.7", + "postcss-convert-values": "^7.0.9", + "postcss-discard-comments": "^7.0.6", + "postcss-discard-duplicates": "^7.0.2", + "postcss-discard-empty": "^7.0.1", + "postcss-discard-overridden": "^7.0.1", + "postcss-merge-longhand": "^7.0.5", + "postcss-merge-rules": "^7.0.8", + "postcss-minify-font-values": "^7.0.1", + "postcss-minify-gradients": "^7.0.2", + "postcss-minify-params": "^7.0.6", + "postcss-minify-selectors": "^7.0.6", + "postcss-normalize-charset": "^7.0.1", + "postcss-normalize-display-values": "^7.0.1", + "postcss-normalize-positions": "^7.0.1", + "postcss-normalize-repeat-style": "^7.0.1", + "postcss-normalize-string": "^7.0.1", + "postcss-normalize-timing-functions": "^7.0.1", + "postcss-normalize-unicode": "^7.0.6", + "postcss-normalize-url": "^7.0.1", + "postcss-normalize-whitespace": "^7.0.1", + "postcss-ordered-values": "^7.0.2", + "postcss-reduce-initial": "^7.0.6", + "postcss-reduce-transforms": "^7.0.1", + "postcss-svgo": "^7.1.1", + "postcss-unique-selectors": "^7.0.5" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/cssnano-utils": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.1.tgz", + "integrity": "sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/db0": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/db0/-/db0-0.3.4.tgz", + "integrity": "sha512-RiXXi4WaNzPTHEOu8UPQKMooIbqOEyqA1t7Z6MsdxSCeb8iUC9ko3LcmsLmeUt2SM5bctfArZKkRQggKZz7JNw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@electric-sql/pglite": "*", + "@libsql/client": "*", + "better-sqlite3": "*", + "drizzle-orm": "*", + "mysql2": "*", + "sqlite3": "*" + }, + "peerDependenciesMeta": { + "@electric-sql/pglite": { + "optional": true + }, + "@libsql/client": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "drizzle-orm": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "sqlite3": { + "optional": true + } + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defu": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz", + "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "dev": true, + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/devalue": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.7.1.tgz", + "integrity": "sha512-MUbZ586EgQqdRnC4yDrlod3BEdyvE4TapGYHMW2CiaW+KkkFmWEFqBUaLltEZCGi0iFXCEjRF0OjF0DV2QHjOA==", + "dev": true, + "license": "MIT" + }, + "node_modules/diff": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", + "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-prop": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-10.1.0.tgz", + "integrity": "sha512-MVUtAugQMOff5RnBy2d9N31iG0lNwg1qAoAOn7pOK5wf94WIaE3My2p3uwTQuvS2AcqchkcR3bHByjaM0mmi7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^5.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dotenv": { + "version": "17.4.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.1.tgz", + "integrity": "sha512-k8DaKGP6r1G30Lx8V4+pCsLzKr8vLmV2paqEj1Y55GdAgJuIqpRp5FfajGF8KtwMxCz9qJc6wUIJnm053d/WCw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true, + "license": "MIT" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.334", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.334.tgz", + "integrity": "sha512-mgjZAz7Jyx1SRCwEpy9wefDS7GvNPazLthHg8eQMJ76wBdGQQDW33TCrUTvQ4wzpmOrv2zrFoD3oNufMdyMpog==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-stack-parser-es": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/error-stack-parser-es/-/error-stack-parser-es-1.0.5.tgz", + "integrity": "sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/errx": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/errx/-/errx-0.1.0.tgz", + "integrity": "sha512-fZmsRiDNv07K6s2KkKFTiD2aIvECa7++PKyD5NC32tpRw46qZA3sOz+aM+/V9V0GDHxVTKLziveV4JhzBHDp9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/esbuild": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", + "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.7", + "@esbuild/android-arm": "0.27.7", + "@esbuild/android-arm64": "0.27.7", + "@esbuild/android-x64": "0.27.7", + "@esbuild/darwin-arm64": "0.27.7", + "@esbuild/darwin-x64": "0.27.7", + "@esbuild/freebsd-arm64": "0.27.7", + "@esbuild/freebsd-x64": "0.27.7", + "@esbuild/linux-arm": "0.27.7", + "@esbuild/linux-arm64": "0.27.7", + "@esbuild/linux-ia32": "0.27.7", + "@esbuild/linux-loong64": "0.27.7", + "@esbuild/linux-mips64el": "0.27.7", + "@esbuild/linux-ppc64": "0.27.7", + "@esbuild/linux-riscv64": "0.27.7", + "@esbuild/linux-s390x": "0.27.7", + "@esbuild/linux-x64": "0.27.7", + "@esbuild/netbsd-arm64": "0.27.7", + "@esbuild/netbsd-x64": "0.27.7", + "@esbuild/openbsd-arm64": "0.27.7", + "@esbuild/openbsd-x64": "0.27.7", + "@esbuild/openharmony-arm64": "0.27.7", + "@esbuild/sunos-x64": "0.27.7", + "@esbuild/win32-arm64": "0.27.7", + "@esbuild/win32-ia32": "0.27.7", + "@esbuild/win32-x64": "0.27.7" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exsolve": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.8.tgz", + "integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-npm-meta": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/fast-npm-meta/-/fast-npm-meta-0.4.8.tgz", + "integrity": "sha512-ybZVlDZ2PkO79dosM+6CLZfKWRH8MF0PiWlw8M4mVWJl8IEJrPfxYc7Tsu830Dwj/R96LKXfePGTSzKWbPJ08w==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/fast-string-truncated-width": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-1.2.1.tgz", + "integrity": "sha512-Q9acT/+Uu3GwGj+5w/zsGuQjh9O1TyywhIwAxHudtWrgF09nHOPrvTLhQevPbttcxjr/SNN7mJmfOw/B1bXgow==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-string-width": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-1.1.0.tgz", + "integrity": "sha512-O3fwIVIH5gKB38QNbdg+3760ZmGz0SZMgvwJbA1b2TGXceKE6A2cOlfogh1iw8lr049zPyd7YADHy+B7U4W9bQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-string-truncated-width": "^1.2.0" + } + }, + "node_modules/fast-wrap-ansi": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.1.6.tgz", + "integrity": "sha512-HlUwET7a5gqjURj70D5jl7aC3Zmy4weA1SHUfM0JFI0Ptq987NH2TwbBFLoERhfwk+E+eaq4EK3jXoT+R3yp3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-string-width": "^1.1.0" + } + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/fuse.js": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.3.0.tgz", + "integrity": "sha512-plz8RVjfcDedTGfVngWH1jmJvBvAwi1v2jecfDerbEnMcmOYUEEwKFTHbNoCiYyzaK2Ws8lABkTCcRSqCY1q4w==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/krisk" + } + }, + "node_modules/fzf": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fzf/-/fzf-0.5.2.tgz", + "integrity": "sha512-Tt4kuxLXFKHy8KT40zwsUPUkg1CrsgY25FxA2U/j/0WgEDCk3ddc/zLTCCcbSHX9FcKtLuVaDGtGE/STWC+j3Q==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", + "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-port-please": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.2.0.tgz", + "integrity": "sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A==", + "dev": true, + "license": "MIT" + }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/giget": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/giget/-/giget-3.2.0.tgz", + "integrity": "sha512-GvHTWcykIR/fP8cj8dMpuMMkvaeJfPvYnhq0oW+chSeIr+ldX21ifU2Ms6KBoyKZQZmVaUAAhQ2EZ68KJF8a7A==", + "dev": true, + "license": "MIT", + "bin": { + "giget": "dist/cli.mjs" + } + }, + "node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "4.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.0.tgz", + "integrity": "sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.5", + "is-path-inside": "^4.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.4.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/gzip-size": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-7.0.0.tgz", + "integrity": "sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/h3": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.11.tgz", + "integrity": "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cookie-es": "^1.2.3", + "crossws": "^0.3.5", + "defu": "^6.1.6", + "destr": "^2.0.5", + "iron-webcrypto": "^1.2.1", + "node-mock-http": "^1.0.4", + "radix3": "^1.1.2", + "ufo": "^1.6.3", + "uncrypto": "^0.1.3" + } + }, + "node_modules/h3/node_modules/cookie-es": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.3.tgz", + "integrity": "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/http-shutdown": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/http-shutdown/-/http-shutdown-1.2.2.tgz", + "integrity": "sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/httpxy": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/httpxy/-/httpxy-0.5.0.tgz", + "integrity": "sha512-qwX7QX/rK2visT10/b7bSeZWQOMlSm3svTD0pZpU+vJjNUP0YHtNv4c3z+MO+MSnGuRFWJFdCZiV+7F7dXIOzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-meta": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/image-meta/-/image-meta-0.2.2.tgz", + "integrity": "sha512-3MOLanc3sb3LNGWQl1RlQlNWURE5g32aUphrDyFeCsxBTk08iE3VNe4CwsUZ0Qs1X+EfX0+r29Sxdpza4B+yRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/impound": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/impound/-/impound-1.1.5.tgz", + "integrity": "sha512-5AUn+QE0UofqNHu5f2Skf6Svukdg4ehOIq8O0EtqIx4jta0CDZYBPqpIHt0zrlUTiFVYlLpeH39DoikXBjPKpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.31", + "es-module-lexer": "^2.0.0", + "pathe": "^2.0.3", + "unplugin": "^3.0.0", + "unplugin-utils": "^0.3.1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ioredis": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.10.1.tgz", + "integrity": "sha512-HuEDBTI70aYdx1v6U97SbNx9F1+svQKBDo30o0b9fw055LMepzpOOd0Ccg9Q6tbqmBSJaMuY0fB7yw9/vjBYCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ioredis/commands": "1.5.1", + "cluster-key-slot": "^1.1.0", + "debug": "^4.3.4", + "denque": "^2.1.0", + "lodash.defaults": "^4.2.0", + "lodash.isarguments": "^3.1.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0", + "standard-as-callback": "^2.1.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ioredis" + } + }, + "node_modules/iron-webcrypto": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", + "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/brc-dd" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-in-ssh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz", + "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-installed-globally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-1.0.0.tgz", + "integrity": "sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-directory": "^4.0.1", + "is-path-inside": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-what": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-5.5.0.tgz", + "integrity": "sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/knitwork": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/knitwork/-/knitwork-1.3.0.tgz", + "integrity": "sha512-4LqMNoONzR43B1W0ek0fhXMsDNW/zxa1NdFAVMY+k28pgZLovR4G3PB5MrpTxCy1QaZCqNoiaKPr5w5qZHfSNw==", + "dev": true, + "license": "MIT" + }, + "node_modules/launch-editor": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.13.2.tgz", + "integrity": "sha512-4VVDnbOpLXy/s8rdRCSXb+zfMeFR0WlJWpET1iA9CQdlZDfwyLjUuGQzXU4VeOoey6AicSAluWan7Etga6Kcmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.1.1", + "shell-quote": "^1.8.3" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/listhen": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.9.1.tgz", + "integrity": "sha512-4EhoyVcXEpNlY5HJRSQpH7Rba94M8N2JmI62ePjl0lrJKXSfG0F1FAgHGxBoz/T3pe41sUEwkIRRIcaUL0/Ofw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/watcher": "^2.5.6", + "@parcel/watcher-wasm": "^2.5.6", + "citty": "^0.2.2", + "consola": "^3.4.2", + "crossws": ">=0.2.0 <0.5.0", + "defu": "^6.1.6", + "get-port-please": "^3.2.0", + "h3": "^1.15.11", + "http-shutdown": "^1.2.2", + "jiti": "^2.6.1", + "mlly": "^1.8.2", + "node-forge": "^1.4.0", + "pathe": "^2.0.3", + "std-env": "^4.0.0", + "tinyclip": "^0.1.12", + "ufo": "^1.6.3", + "untun": "^0.1.3", + "uqr": "^0.1.2" + }, + "bin": { + "listen": "bin/listhen.mjs", + "listhen": "bin/listhen.mjs" + } + }, + "node_modules/local-pkg": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.2.tgz", + "integrity": "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==", + "dev": true, + "license": "MIT", + "dependencies": { + "mlly": "^1.7.4", + "pkg-types": "^2.3.0", + "quansync": "^0.2.11" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/lodash": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-regexp": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/magic-regexp/-/magic-regexp-0.10.0.tgz", + "integrity": "sha512-Uly1Bu4lO1hwHUW0CQeSWuRtzCMNO00CmXtS8N6fyvB3B979GOEEeAkiTUDsmbYLAbvpUS/Kt5c4ibosAzVyVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "estree-walker": "^3.0.3", + "magic-string": "^0.30.12", + "mlly": "^1.7.2", + "regexp-tree": "^0.1.27", + "type-level-regexp": "~0.1.17", + "ufo": "^1.5.4", + "unplugin": "^2.0.0" + } + }, + "node_modules/magic-regexp/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/magic-regexp/node_modules/unplugin": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz", + "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "acorn": "^8.15.0", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magic-string-ast": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/magic-string-ast/-/magic-string-ast-1.0.3.tgz", + "integrity": "sha512-CvkkH1i81zl7mmb94DsRiFeG9V2fR2JeuK8yDgS8oiZSFa++wWLEgZ5ufEOyLHbvSbD1gTRKv9NdX69Rnvr9JA==", + "dev": true, + "license": "MIT", + "dependencies": { + "magic-string": "^0.30.19" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/magicast": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", + "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.4", + "@babel/types": "^7.25.4", + "source-map-js": "^1.2.0" + } + }, + "node_modules/mdn-data": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.1.0.tgz", + "integrity": "sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa" + ], + "license": "MIT", + "bin": { + "mime": "bin/cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" + }, + "node_modules/mlly": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.2.tgz", + "integrity": "sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.16.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.3" + } + }, + "node_modules/mlly/node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mlly/node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/mocked-exports": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/mocked-exports/-/mocked-exports-0.1.1.tgz", + "integrity": "sha512-aF7yRQr/Q0O2/4pIXm6PZ5G+jAd7QS4Yu8m+WEeEHGnbo+7mE36CbLSDQiXYV8bVL3NfmdeqPJct0tUlnjVSnA==", + "dev": true, + "license": "MIT" + }, + "node_modules/mrmime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.7.tgz", + "integrity": "sha512-ua3NDgISf6jdwezAheMOk4mbE1LXjm1DfMUDMuJf4AqxLFK3ccGpgWizwa5YV7Yz9EpXwEaWoRXSb/BnV0t5dQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, + "node_modules/nanotar": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/nanotar/-/nanotar-0.3.0.tgz", + "integrity": "sha512-Kv2JYYiCzt16Kt5QwAc9BFG89xfPNBx+oQL4GQXD9nLqPkZBiNaqaCWtwnbk/q7UVsTYevvM1b0UF8zmEI4pCg==", + "dev": true, + "license": "MIT" + }, + "node_modules/nitropack": { + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/nitropack/-/nitropack-2.13.3.tgz", + "integrity": "sha512-C8vO7RxkU0AQ3HbYUumuG6MVM5JjRaBchke/rYFOp3EvrLtTBHZYhDVGECdpa27vNuOYRzm3GtQMn2YDOjDJLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cloudflare/kv-asset-handler": "^0.4.2", + "@rollup/plugin-alias": "^6.0.0", + "@rollup/plugin-commonjs": "^29.0.2", + "@rollup/plugin-inject": "^5.0.5", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^16.0.3", + "@rollup/plugin-replace": "^6.0.3", + "@rollup/plugin-terser": "^1.0.0", + "@vercel/nft": "^1.5.0", + "archiver": "^7.0.1", + "c12": "^3.3.4", + "chokidar": "^5.0.0", + "citty": "^0.2.2", + "compatx": "^0.2.0", + "confbox": "^0.2.4", + "consola": "^3.4.2", + "cookie-es": "^2.0.1", + "croner": "^10.0.1", + "crossws": "^0.3.5", + "db0": "^0.3.4", + "defu": "^6.1.6", + "destr": "^2.0.5", + "dot-prop": "^10.1.0", + "esbuild": "^0.27.5", + "escape-string-regexp": "^5.0.0", + "etag": "^1.8.1", + "exsolve": "^1.0.8", + "globby": "^16.2.0", + "gzip-size": "^7.0.0", + "h3": "^1.15.10", + "hookable": "^5.5.3", + "httpxy": "^0.5.0", + "ioredis": "^5.10.1", + "jiti": "^2.6.1", + "klona": "^2.0.6", + "knitwork": "^1.3.0", + "listhen": "^1.9.1", + "magic-string": "^0.30.21", + "magicast": "^0.5.2", + "mime": "^4.1.0", + "mlly": "^1.8.2", + "node-fetch-native": "^1.6.7", + "node-mock-http": "^1.0.4", + "ofetch": "^1.5.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^2.1.0", + "pkg-types": "^2.3.0", + "pretty-bytes": "^7.1.0", + "radix3": "^1.1.2", + "rollup": "^4.60.1", + "rollup-plugin-visualizer": "^7.0.1", + "scule": "^1.3.0", + "semver": "^7.7.4", + "serve-placeholder": "^2.0.2", + "serve-static": "^2.2.1", + "source-map": "^0.7.6", + "std-env": "^4.0.0", + "ufo": "^1.6.3", + "ultrahtml": "^1.6.0", + "uncrypto": "^0.1.3", + "unctx": "^2.5.0", + "unenv": "2.0.0-rc.24", + "unimport": "^6.0.2", + "unplugin-utils": "^0.3.1", + "unstorage": "^1.17.5", + "untyped": "^2.0.0", + "unwasm": "^0.5.3", + "youch": "^4.1.1", + "youch-core": "^0.3.3" + }, + "bin": { + "nitro": "dist/cli/index.mjs", + "nitropack": "dist/cli/index.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "xml2js": "^0.6.2" + }, + "peerDependenciesMeta": { + "xml2js": { + "optional": true + } + } + }, + "node_modules/nitropack/node_modules/magicast": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.2.tgz", + "integrity": "sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "source-map-js": "^1.2.1" + } + }, + "node_modules/nitropack/node_modules/perfect-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-2.1.0.tgz", + "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", + "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-forge": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", + "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", + "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", + "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", + "dev": true, + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-mock-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.4.tgz", + "integrity": "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", + "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", + "dev": true, + "license": "MIT" + }, + "node_modules/nopt": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz", + "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "^3.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nuxt": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/nuxt/-/nuxt-4.4.2.tgz", + "integrity": "sha512-iWVFpr/YEqVU/CenqIHMnIkvb2HE/9f+q8oxZ+pj2et+60NljGRClCgnmbvGPdmNFE0F1bEhoBCYfqbDOCim3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@dxup/nuxt": "^0.4.0", + "@nuxt/cli": "^3.34.0", + "@nuxt/devtools": "^3.2.3", + "@nuxt/kit": "4.4.2", + "@nuxt/nitro-server": "4.4.2", + "@nuxt/schema": "4.4.2", + "@nuxt/telemetry": "^2.7.0", + "@nuxt/vite-builder": "4.4.2", + "@unhead/vue": "^2.1.12", + "@vue/shared": "^3.5.30", + "c12": "^3.3.3", + "chokidar": "^5.0.0", + "compatx": "^0.2.0", + "consola": "^3.4.2", + "cookie-es": "^2.0.0", + "defu": "^6.1.4", + "devalue": "^5.6.3", + "errx": "^0.1.0", + "escape-string-regexp": "^5.0.0", + "exsolve": "^1.0.8", + "hookable": "^6.0.1", + "ignore": "^7.0.5", + "impound": "^1.1.5", + "jiti": "^2.6.1", + "klona": "^2.0.6", + "knitwork": "^1.3.0", + "magic-string": "^0.30.21", + "mlly": "^1.8.1", + "nanotar": "^0.3.0", + "nypm": "^0.6.5", + "ofetch": "^1.5.1", + "ohash": "^2.0.11", + "on-change": "^6.0.2", + "oxc-minify": "^0.117.0", + "oxc-parser": "^0.117.0", + "oxc-transform": "^0.117.0", + "oxc-walker": "^0.7.0", + "pathe": "^2.0.3", + "perfect-debounce": "^2.1.0", + "picomatch": "^4.0.3", + "pkg-types": "^2.3.0", + "rou3": "^0.8.1", + "scule": "^1.3.0", + "semver": "^7.7.4", + "std-env": "^4.0.0", + "tinyglobby": "^0.2.15", + "ufo": "^1.6.3", + "ultrahtml": "^1.6.0", + "uncrypto": "^0.1.3", + "unctx": "^2.5.0", + "unimport": "^6.0.1", + "unplugin": "^3.0.0", + "unrouting": "^0.1.5", + "untyped": "^2.0.0", + "vue": "^3.5.30", + "vue-router": "^5.0.3" + }, + "bin": { + "nuxi": "bin/nuxt.mjs", + "nuxt": "bin/nuxt.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@parcel/watcher": "^2.1.0", + "@types/node": ">=18.12.0" + }, + "peerDependenciesMeta": { + "@parcel/watcher": { + "optional": true + }, + "@types/node": { + "optional": true + } + } + }, + "node_modules/nuxt/node_modules/@nuxt/devtools": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@nuxt/devtools/-/devtools-3.2.4.tgz", + "integrity": "sha512-VPbFy7hlPzWpEZk4BsuVpNuHq1ZYGV9xezjb7/NGuePuNLqeNn74YZugU+PCtva7OwKhEeTXmMK0Mqo/6+nwNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nuxt/devtools-kit": "3.2.4", + "@nuxt/devtools-wizard": "3.2.4", + "@nuxt/kit": "^4.4.2", + "@vue/devtools-core": "^8.1.0", + "@vue/devtools-kit": "^8.1.0", + "birpc": "^4.0.0", + "consola": "^3.4.2", + "destr": "^2.0.5", + "error-stack-parser-es": "^1.0.5", + "execa": "^8.0.1", + "fast-npm-meta": "^1.4.2", + "get-port-please": "^3.2.0", + "hookable": "^6.1.0", + "image-meta": "^0.2.2", + "is-installed-globally": "^1.0.0", + "launch-editor": "^2.13.1", + "local-pkg": "^1.1.2", + "magicast": "^0.5.2", + "nypm": "^0.6.5", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "perfect-debounce": "^2.1.0", + "pkg-types": "^2.3.0", + "semver": "^7.7.4", + "simple-git": "^3.33.0", + "sirv": "^3.0.2", + "structured-clone-es": "^2.0.0", + "tinyglobby": "^0.2.15", + "vite-plugin-inspect": "^11.3.3", + "vite-plugin-vue-tracer": "^1.3.0", + "which": "^6.0.1", + "ws": "^8.19.0" + }, + "bin": { + "devtools": "cli.mjs" + }, + "peerDependencies": { + "@vitejs/devtools": "*", + "vite": ">=6.0" + }, + "peerDependenciesMeta": { + "@vitejs/devtools": { + "optional": true + } + } + }, + "node_modules/nuxt/node_modules/@nuxt/devtools-kit": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@nuxt/devtools-kit/-/devtools-kit-3.2.4.tgz", + "integrity": "sha512-Yxy2Xgmq5hf3dQy983V0xh0OJV2mYwRZz9eVIGc3EaribdFGPDNGMMbYqX9qCty3Pbxn/bCF3J0UyPaNlHVayQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^4.4.2", + "execa": "^8.0.1" + }, + "peerDependencies": { + "vite": ">=6.0" + } + }, + "node_modules/nuxt/node_modules/@nuxt/devtools-wizard": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@nuxt/devtools-wizard/-/devtools-wizard-3.2.4.tgz", + "integrity": "sha512-5tu2+Quu9XTxwtpzM8CUN0UKn/bzZIfJcoGd+at5Yy1RiUQJ4E52tRK0idW1rMSUDkbkvX3dSnu8Tpj7SAtWdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@clack/prompts": "^1.1.0", + "consola": "^3.4.2", + "diff": "^8.0.3", + "execa": "^8.0.1", + "magicast": "^0.5.2", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "semver": "^7.7.4" + }, + "bin": { + "devtools-wizard": "cli.mjs" + } + }, + "node_modules/nuxt/node_modules/@nuxt/devtools/node_modules/birpc": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-4.0.0.tgz", + "integrity": "sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/nuxt/node_modules/@nuxt/kit": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-4.4.2.tgz", + "integrity": "sha512-5+IPRNX2CjkBhuWUwz0hBuLqiaJPRoKzQ+SvcdrQDbAyE+VDeFt74VpSFr5/R0ujrK4b+XnSHUJWdS72w6hsog==", + "dev": true, + "license": "MIT", + "dependencies": { + "c12": "^3.3.3", + "consola": "^3.4.2", + "defu": "^6.1.4", + "destr": "^2.0.5", + "errx": "^0.1.0", + "exsolve": "^1.0.8", + "ignore": "^7.0.5", + "jiti": "^2.6.1", + "klona": "^2.0.6", + "mlly": "^1.8.1", + "ohash": "^2.0.11", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0", + "rc9": "^3.0.0", + "scule": "^1.3.0", + "semver": "^7.7.4", + "tinyglobby": "^0.2.15", + "ufo": "^1.6.3", + "unctx": "^2.5.0", + "untyped": "^2.0.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/nuxt/node_modules/@vue/devtools-core": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-8.1.1.tgz", + "integrity": "sha512-bCCsSABp1/ot4j8xJEycM6Mtt2wbuucfByr6hMgjbYhrtlscOJypZKvy8f1FyWLYrLTchB5Qz216Lm92wfbq0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^8.1.1", + "@vue/devtools-shared": "^8.1.1" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/nuxt/node_modules/@vue/devtools-kit": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-8.1.1.tgz", + "integrity": "sha512-gVBaBv++i+adg4JpH71k9ppl4soyR7Y2McEqO5YNgv0BI1kMZ7BDX5gnwkZ5COYgiCyhejZG+yGNrBAjj6Coqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^8.1.1", + "birpc": "^2.6.1", + "hookable": "^5.5.3", + "perfect-debounce": "^2.0.0" + } + }, + "node_modules/nuxt/node_modules/@vue/devtools-kit/node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/nuxt/node_modules/@vue/devtools-shared": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-8.1.1.tgz", + "integrity": "sha512-+h4ttmJYl/txpxHKaoZcaKpC+pvckgLzIDiSQlaQ7kKthKh8KuwoLW2D8hPJEnqKzXOvu15UHEoGyngAXCz0EQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/nuxt/node_modules/fast-npm-meta": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/fast-npm-meta/-/fast-npm-meta-1.4.2.tgz", + "integrity": "sha512-XXyd9d3ie/JeIIjm6WeKalvapGGFI4ShAjPJM78vgUFYzoEsuNSjvvVTuht0XZcwbVdOnEEGzhxwguRbxkIcDg==", + "dev": true, + "license": "MIT", + "bin": { + "fast-npm-meta": "dist/cli.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/nuxt/node_modules/hookable": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-6.1.0.tgz", + "integrity": "sha512-ZoKZSJgu8voGK2geJS+6YtYjvIzu9AOM/KZXsBxr83uhLL++e9pEv/dlgwgy3dvHg06kTz6JOh1hk3C8Ceiymw==", + "dev": true, + "license": "MIT" + }, + "node_modules/nuxt/node_modules/isexe": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=20" + } + }, + "node_modules/nuxt/node_modules/magicast": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.2.tgz", + "integrity": "sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "source-map-js": "^1.2.1" + } + }, + "node_modules/nuxt/node_modules/perfect-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-2.1.0.tgz", + "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/nuxt/node_modules/structured-clone-es": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/structured-clone-es/-/structured-clone-es-2.0.0.tgz", + "integrity": "sha512-5UuAHmBLXYPCl22xWJrFuGmIhBKQzxISPVz6E7nmTmTcAOpUzlbjKJsRrCE4vADmMQ0dzeCnlWn9XufnAGf76Q==", + "dev": true, + "license": "ISC" + }, + "node_modules/nuxt/node_modules/which": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^4.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/nypm": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.5.tgz", + "integrity": "sha512-K6AJy1GMVyfyMXRVB88700BJqNUkByijGJM8kEHpLdcAt+vSQAVfkWWHYzuRXHSY6xA2sNc5RjTj0p9rE2izVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "citty": "^0.2.0", + "pathe": "^2.0.3", + "tinyexec": "^1.0.2" + }, + "bin": { + "nypm": "dist/cli.mjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, + "node_modules/ofetch": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz", + "integrity": "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "destr": "^2.0.5", + "node-fetch-native": "^1.6.7", + "ufo": "^1.6.1" + } + }, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/on-change": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/on-change/-/on-change-6.0.2.tgz", + "integrity": "sha512-08+12qcOVEA0fS9g/VxKS27HaT94nRutUT77J2dr8zv/unzXopvhBuF8tNLWsoLQ5IgrQ6eptGeGqUYat82U1w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sindresorhus/on-change?sponsor=1" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/open/-/open-11.0.0.tgz", + "integrity": "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.4.0", + "define-lazy-prop": "^3.0.0", + "is-in-ssh": "^1.0.0", + "is-inside-container": "^1.0.0", + "powershell-utils": "^0.1.0", + "wsl-utils": "^0.3.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/oxc-minify": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/oxc-minify/-/oxc-minify-0.117.0.tgz", + "integrity": "sha512-JHsv/b+bmBJkAzkHXgTN7RThloVxLHPT0ojHfjqxVeHuQB7LPpLUbJ2qfwz37sto9stZ9+AVwUP4b3gtR7p/Tw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxc-minify/binding-android-arm-eabi": "0.117.0", + "@oxc-minify/binding-android-arm64": "0.117.0", + "@oxc-minify/binding-darwin-arm64": "0.117.0", + "@oxc-minify/binding-darwin-x64": "0.117.0", + "@oxc-minify/binding-freebsd-x64": "0.117.0", + "@oxc-minify/binding-linux-arm-gnueabihf": "0.117.0", + "@oxc-minify/binding-linux-arm-musleabihf": "0.117.0", + "@oxc-minify/binding-linux-arm64-gnu": "0.117.0", + "@oxc-minify/binding-linux-arm64-musl": "0.117.0", + "@oxc-minify/binding-linux-ppc64-gnu": "0.117.0", + "@oxc-minify/binding-linux-riscv64-gnu": "0.117.0", + "@oxc-minify/binding-linux-riscv64-musl": "0.117.0", + "@oxc-minify/binding-linux-s390x-gnu": "0.117.0", + "@oxc-minify/binding-linux-x64-gnu": "0.117.0", + "@oxc-minify/binding-linux-x64-musl": "0.117.0", + "@oxc-minify/binding-openharmony-arm64": "0.117.0", + "@oxc-minify/binding-wasm32-wasi": "0.117.0", + "@oxc-minify/binding-win32-arm64-msvc": "0.117.0", + "@oxc-minify/binding-win32-ia32-msvc": "0.117.0", + "@oxc-minify/binding-win32-x64-msvc": "0.117.0" + } + }, + "node_modules/oxc-parser": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/oxc-parser/-/oxc-parser-0.117.0.tgz", + "integrity": "sha512-l3cbgK5wUvWDVNWM/JFU77qDdGZK1wudnLsFcrRyNo/bL1CyU8pC25vDhMHikVY29lbK2InTWsX42RxVSutUdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "^0.117.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxc-parser/binding-android-arm-eabi": "0.117.0", + "@oxc-parser/binding-android-arm64": "0.117.0", + "@oxc-parser/binding-darwin-arm64": "0.117.0", + "@oxc-parser/binding-darwin-x64": "0.117.0", + "@oxc-parser/binding-freebsd-x64": "0.117.0", + "@oxc-parser/binding-linux-arm-gnueabihf": "0.117.0", + "@oxc-parser/binding-linux-arm-musleabihf": "0.117.0", + "@oxc-parser/binding-linux-arm64-gnu": "0.117.0", + "@oxc-parser/binding-linux-arm64-musl": "0.117.0", + "@oxc-parser/binding-linux-ppc64-gnu": "0.117.0", + "@oxc-parser/binding-linux-riscv64-gnu": "0.117.0", + "@oxc-parser/binding-linux-riscv64-musl": "0.117.0", + "@oxc-parser/binding-linux-s390x-gnu": "0.117.0", + "@oxc-parser/binding-linux-x64-gnu": "0.117.0", + "@oxc-parser/binding-linux-x64-musl": "0.117.0", + "@oxc-parser/binding-openharmony-arm64": "0.117.0", + "@oxc-parser/binding-wasm32-wasi": "0.117.0", + "@oxc-parser/binding-win32-arm64-msvc": "0.117.0", + "@oxc-parser/binding-win32-ia32-msvc": "0.117.0", + "@oxc-parser/binding-win32-x64-msvc": "0.117.0" + } + }, + "node_modules/oxc-transform": { + "version": "0.117.0", + "resolved": "https://registry.npmjs.org/oxc-transform/-/oxc-transform-0.117.0.tgz", + "integrity": "sha512-u1Stl2uhDh9bFuOGjGXQIqx46IRUNMyHQkq59LayXNGS2flNv7RpZpRSWs5S5deuNP6jJZ12gtMBze+m4dOhmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxc-transform/binding-android-arm-eabi": "0.117.0", + "@oxc-transform/binding-android-arm64": "0.117.0", + "@oxc-transform/binding-darwin-arm64": "0.117.0", + "@oxc-transform/binding-darwin-x64": "0.117.0", + "@oxc-transform/binding-freebsd-x64": "0.117.0", + "@oxc-transform/binding-linux-arm-gnueabihf": "0.117.0", + "@oxc-transform/binding-linux-arm-musleabihf": "0.117.0", + "@oxc-transform/binding-linux-arm64-gnu": "0.117.0", + "@oxc-transform/binding-linux-arm64-musl": "0.117.0", + "@oxc-transform/binding-linux-ppc64-gnu": "0.117.0", + "@oxc-transform/binding-linux-riscv64-gnu": "0.117.0", + "@oxc-transform/binding-linux-riscv64-musl": "0.117.0", + "@oxc-transform/binding-linux-s390x-gnu": "0.117.0", + "@oxc-transform/binding-linux-x64-gnu": "0.117.0", + "@oxc-transform/binding-linux-x64-musl": "0.117.0", + "@oxc-transform/binding-openharmony-arm64": "0.117.0", + "@oxc-transform/binding-wasm32-wasi": "0.117.0", + "@oxc-transform/binding-win32-arm64-msvc": "0.117.0", + "@oxc-transform/binding-win32-ia32-msvc": "0.117.0", + "@oxc-transform/binding-win32-x64-msvc": "0.117.0" + } + }, + "node_modules/oxc-walker": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/oxc-walker/-/oxc-walker-0.7.0.tgz", + "integrity": "sha512-54B4KUhrzbzc4sKvKwVYm7E2PgeROpGba0/2nlNZMqfDyca+yOor5IMb4WLGBatGDT0nkzYdYuzylg7n3YfB7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "magic-regexp": "^0.10.0" + }, + "peerDependencies": { + "oxc-parser": ">=0.98.0" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.3.tgz", + "integrity": "sha512-JvNw9Y81y33E+BEYPr0U7omo+U9AySnsMsEiXgwT6yqd31VQWTLNQqmT4ou5eqPFUrTfIDFta2wKhB1hyohtAQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pinia": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-3.0.4.tgz", + "integrity": "sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^7.7.7" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "typescript": ">=4.5.0", + "vue": "^3.5.11" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/pkg-types": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", + "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.2.2", + "exsolve": "^1.0.7", + "pathe": "^2.0.3" + } + }, + "node_modules/postcss": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.9.tgz", + "integrity": "sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.1.1.tgz", + "integrity": "sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12 || ^20.9 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.38" + } + }, + "node_modules/postcss-colormin": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.7.tgz", + "integrity": "sha512-sBQ628lSj3VQpDquQel8Pen5mmjFPsO4pH9lDLaHB1AVkMRHtkl0pRB5DCWznc9upWsxint/kV+AveSj7W1tew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@colordx/core": "^5.0.0", + "browserslist": "^4.28.1", + "caniuse-api": "^3.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-convert-values": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.9.tgz", + "integrity": "sha512-l6uATQATZaCa0bckHV+r6dLXfWtUBKXxO3jK+AtxxJJtgMPD+VhhPCCx51I4/5w8U5uHV67g3w7PXj+V3wlMlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-discard-comments": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.6.tgz", + "integrity": "sha512-Sq+Fzj1Eg5/CPf1ERb0wS1Im5cvE2gDXCE+si4HCn1sf+jpQZxDI4DXEp8t77B/ImzDceWE2ebJQFXdqZ6GRJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.1.1" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.2.tgz", + "integrity": "sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-discard-empty": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.1.tgz", + "integrity": "sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.1.tgz", + "integrity": "sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.5.tgz", + "integrity": "sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^7.0.5" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-merge-rules": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.8.tgz", + "integrity": "sha512-BOR1iAM8jnr7zoQSlpeBmCsWV5Uudi/+5j7k05D0O/WP3+OFMPD86c1j/20xiuRtyt45bhxw/7hnhZNhW2mNFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^5.0.1", + "postcss-selector-parser": "^7.1.1" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.1.tgz", + "integrity": "sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.2.tgz", + "integrity": "sha512-fVY3AB8Um7SJR5usHqTY2Ngf9qh8IRN+FFzrBP0ONJy6yYXsP7xyjK2BvSAIrpgs1cST+H91V0TXi3diHLYJtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@colordx/core": "^5.0.0", + "cssnano-utils": "^5.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-minify-params": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.6.tgz", + "integrity": "sha512-YOn02gC68JijlaXVuKvFSCvQOhTpblkcfDre2hb/Aaa58r2BIaK4AtE/cyZf2wV7YKAG+UlP9DT+By0ry1E4VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "cssnano-utils": "^5.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.6.tgz", + "integrity": "sha512-lIbC0jy3AAwDxEgciZlBullDiMBeBCT+fz5G8RcA9MWqh/hfUkpOI3vNDUNEZHgokaoiv0juB9Y8fGcON7rU/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "postcss-selector-parser": "^7.1.1" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.1.tgz", + "integrity": "sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.1.tgz", + "integrity": "sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.1.tgz", + "integrity": "sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.1.tgz", + "integrity": "sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-normalize-string": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.1.tgz", + "integrity": "sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.1.tgz", + "integrity": "sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.6.tgz", + "integrity": "sha512-z6bwTV84YW6ZvvNoaNLuzRW4/uWxDKYI1iIDrzk6D2YTL7hICApy+Q1LP6vBEsljX8FM7YSuV9qI79XESd4ddQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-normalize-url": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.1.tgz", + "integrity": "sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.1.tgz", + "integrity": "sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-ordered-values": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.2.tgz", + "integrity": "sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-utils": "^5.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.6.tgz", + "integrity": "sha512-G6ZyK68AmrPdMB6wyeA37ejnnRG2S8xinJrZJnOv+IaRKf6koPAVbQsiC7MfkmXaGmF1UO+QCijb27wfpxuRNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.1.tgz", + "integrity": "sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.1.1.tgz", + "integrity": "sha512-zU9H9oEDrUFKa0JB7w+IYL7Qs9ey1mZyjhbf0KLxwJDdDRtoPvCmaEfknzqfHj44QS9VD6c5sJnBAVYTLRg/Sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^4.0.1" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.5.tgz", + "integrity": "sha512-3QoYmEt4qg/rUWDn6Tc8+ZVPmbp4G1hXDtCNWDx0st8SjtCbRcxRXDDM1QrEiXGG3A45zscSJFb4QH90LViyxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.1.1" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/powershell-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz", + "integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-bytes": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-7.1.0.tgz", + "integrity": "sha512-nODzvTiYVRGRqAOvE84Vk5JDPyyxsVk0/fbA/bq7RqlnhksGpset09XTxbpvLTIjoaF7K8Z8DG8yHtKGTPSYRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/radix3": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", + "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/rc9": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rc9/-/rc9-3.0.1.tgz", + "integrity": "sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "defu": "^6.1.6", + "destr": "^2.0.5" + } + }, + "node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/readdirp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", + "dev": true, + "license": "MIT", + "dependencies": { + "redis-errors": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", + "dev": true, + "license": "MIT", + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "license": "MIT" + }, + "node_modules/rollup": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.1.tgz", + "integrity": "sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.60.1", + "@rollup/rollup-android-arm64": "4.60.1", + "@rollup/rollup-darwin-arm64": "4.60.1", + "@rollup/rollup-darwin-x64": "4.60.1", + "@rollup/rollup-freebsd-arm64": "4.60.1", + "@rollup/rollup-freebsd-x64": "4.60.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.1", + "@rollup/rollup-linux-arm-musleabihf": "4.60.1", + "@rollup/rollup-linux-arm64-gnu": "4.60.1", + "@rollup/rollup-linux-arm64-musl": "4.60.1", + "@rollup/rollup-linux-loong64-gnu": "4.60.1", + "@rollup/rollup-linux-loong64-musl": "4.60.1", + "@rollup/rollup-linux-ppc64-gnu": "4.60.1", + "@rollup/rollup-linux-ppc64-musl": "4.60.1", + "@rollup/rollup-linux-riscv64-gnu": "4.60.1", + "@rollup/rollup-linux-riscv64-musl": "4.60.1", + "@rollup/rollup-linux-s390x-gnu": "4.60.1", + "@rollup/rollup-linux-x64-gnu": "4.60.1", + "@rollup/rollup-linux-x64-musl": "4.60.1", + "@rollup/rollup-openbsd-x64": "4.60.1", + "@rollup/rollup-openharmony-arm64": "4.60.1", + "@rollup/rollup-win32-arm64-msvc": "4.60.1", + "@rollup/rollup-win32-ia32-msvc": "4.60.1", + "@rollup/rollup-win32-x64-gnu": "4.60.1", + "@rollup/rollup-win32-x64-msvc": "4.60.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-visualizer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-7.0.1.tgz", + "integrity": "sha512-UJUT4+1Ho4OcWmPYU3sYXgUqI8B8Ayfe06MX7y0qCJ1K8aGoKtR/NDd/2nZqM7ADkrzny+I99Ul7GgyoiVNAgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "open": "^11.0.0", + "picomatch": "^4.0.2", + "source-map": "^0.7.4", + "yargs": "^18.0.0" + }, + "bin": { + "rollup-plugin-visualizer": "dist/bin/cli.js" + }, + "engines": { + "node": ">=22" + }, + "peerDependencies": { + "rolldown": "1.x || ^1.0.0-beta || ^1.0.0-rc", + "rollup": "2.x || 3.x || 4.x" + }, + "peerDependenciesMeta": { + "rolldown": { + "optional": true + }, + "rollup": { + "optional": true + } + } + }, + "node_modules/rou3": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/rou3/-/rou3-0.8.1.tgz", + "integrity": "sha512-ePa+XGk00/3HuCqrEnK3LxJW7I0SdNg6EFzKUJG73hMAdDcOUC/i/aSz7LSDwLrGr33kal/rqOGydzwl6U7zBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", + "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/scule": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz", + "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==", + "dev": true, + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serialize-javascript": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz", + "integrity": "sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/seroval": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.5.2.tgz", + "integrity": "sha512-xcRN39BdsnO9Tf+VzsE7b3JyTJASItIV1FVFewJKCFcW4s4haIKS3e6vj8PGB9qBwC7tnuOywQMdv5N4qkzi7Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/serve-placeholder": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/serve-placeholder/-/serve-placeholder-2.0.2.tgz", + "integrity": "sha512-/TMG8SboeiQbZJWRlfTCqMs2DD3SZgWp0kDQePz9yUuCnDfDh/92gf7/PxGhzXTKBIPASIHxFcZndoNbp6QOLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "defu": "^6.1.4" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-git": { + "version": "3.35.2", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.35.2.tgz", + "integrity": "sha512-ZMjl06lzTm1EScxEGuM6+mEX+NQd14h/B3x0vWU+YOXAMF8sicyi1K4cjTfj5is+35ChJEHDl1EjypzYFWH2FA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@kwsites/file-exists": "^1.1.1", + "@kwsites/promise-deferred": "^1.1.1", + "@simple-git/args-pathspec": "^1.0.2", + "@simple-git/argv-parser": "^1.0.3", + "debug": "^4.4.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/steveukx/git-js?sponsor=1" + } + }, + "node_modules/sirv": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", + "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/smob": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/smob/-/smob-1.6.1.tgz", + "integrity": "sha512-KAkBqZl3c2GvNgNhcoyJae1aKldDW0LO279wF9bk1PnluRTETKBq0WyzRXxEhoQLk56yHaOY4JCBEKDuJIET5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/source-map": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 12" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/srvx": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/srvx/-/srvx-0.11.15.tgz", + "integrity": "sha512-iXsux0UcOjdvs0LCMa2Ws3WwcDUozA3JN3BquNXkaFPP7TpRqgunKdEgoZ/uwb1J6xaYHfxtz9Twlh6yzwM6Tg==", + "dev": true, + "license": "MIT", + "bin": { + "srvx": "bin/srvx.mjs" + }, + "engines": { + "node": ">=20.16.0" + } + }, + "node_modules/standard-as-callback": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", + "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==", + "dev": true, + "license": "MIT" + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.0.0.tgz", + "integrity": "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/streamx": { + "version": "2.25.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.25.0.tgz", + "integrity": "sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==", + "dev": true, + "license": "MIT", + "dependencies": { + "events-universal": "^1.0.0", + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", + "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/structured-clone-es": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/structured-clone-es/-/structured-clone-es-1.0.0.tgz", + "integrity": "sha512-FL8EeKFFyNQv5cMnXI31CIMCsFarSVI2bF0U0ImeNE3g/F1IvJQyqzOXxPBRXiwQfyBTlbNe88jh1jFW0O/jiQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/stylehacks": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.8.tgz", + "integrity": "sha512-I3f053GBLIiS5Fg6OMFhq/c+yW+5Hc2+1fgq7gElDMMSqwlRb3tBf2ef6ucLStYRpId4q//bQO1FjcyNyy4yDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "postcss-selector-parser": "^7.1.1" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/superjson": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.6.tgz", + "integrity": "sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==", + "license": "MIT", + "dependencies": { + "copy-anything": "^4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/supports-color": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", + "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svgo": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.1.tgz", + "integrity": "sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^11.1.0", + "css-select": "^5.1.0", + "css-tree": "^3.0.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.1.1", + "sax": "^1.5.0" + }, + "bin": { + "svgo": "bin/svgo.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/tagged-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", + "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tar": { + "version": "7.5.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz", + "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tar-stream": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.8.tgz", + "integrity": "sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "bare-fs": "^4.5.5", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "streamx": "^2.12.5" + } + }, + "node_modules/terser": { + "version": "5.46.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", + "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.15.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/text-decoder": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", + "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyclip": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/tinyclip/-/tinyclip-0.1.12.tgz", + "integrity": "sha512-Ae3OVUqifDw0wBriIBS7yVaW44Dp6eSHQcyq4Igc7eN2TJH/2YsicswaW+J/OuMvhpDPOKEgpAZCjkb4hpoyeA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^16.14.0 || >= 17.3.0" + } + }, + "node_modules/tinyexec": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.1.1.tgz", + "integrity": "sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "optional": true + }, + "node_modules/type-fest": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.5.0.tgz", + "integrity": "sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "dependencies": { + "tagged-tag": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-level-regexp": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/type-level-regexp/-/type-level-regexp-0.1.17.tgz", + "integrity": "sha512-wTk4DH3cxwk196uGLK/E9pE45aLfeKJacKmcEgEOA/q5dnPGNxXt0cfYdFxb57L+sEpf1oJH4Dnx/pnRcku9jg==", + "dev": true, + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ufo": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/ultrahtml": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.6.0.tgz", + "integrity": "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==", + "dev": true, + "license": "MIT" + }, + "node_modules/uncrypto": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/unctx": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/unctx/-/unctx-2.5.0.tgz", + "integrity": "sha512-p+Rz9x0R7X+CYDkT+Xg8/GhpcShTlU8n+cf9OtOEf7zEQsNcCZO1dPKNRDqvUTaq+P32PMMkxWHwfrxkqfqAYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.15.0", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21", + "unplugin": "^2.3.11" + } + }, + "node_modules/unctx/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/unctx/node_modules/unplugin": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.11.tgz", + "integrity": "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "acorn": "^8.15.0", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/unenv": { + "version": "2.0.0-rc.24", + "resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.24.tgz", + "integrity": "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pathe": "^2.0.3" + } + }, + "node_modules/unhead": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/unhead/-/unhead-2.1.13.tgz", + "integrity": "sha512-jO9M1sI6b2h/1KpIu4Jeu+ptumLmUKboRRLxys5pYHFeT+lqTzfNHbYUX9bxVDhC1FBszAGuWcUVlmvIPsah8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookable": "^6.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/unhead/node_modules/hookable": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-6.1.0.tgz", + "integrity": "sha512-ZoKZSJgu8voGK2geJS+6YtYjvIzu9AOM/KZXsBxr83uhLL++e9pEv/dlgwgy3dvHg06kTz6JOh1hk3C8Ceiymw==", + "dev": true, + "license": "MIT" + }, + "node_modules/unicorn-magic": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz", + "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unimport": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unimport/-/unimport-6.0.2.tgz", + "integrity": "sha512-ZSOkrDw380w+KIPniY3smyXh2h7H9v2MNr9zejDuh239o5sdea44DRAYrv+rfUi2QGT186P2h0GPGKvy8avQ5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.16.0", + "escape-string-regexp": "^5.0.0", + "estree-walker": "^3.0.3", + "local-pkg": "^1.1.2", + "magic-string": "^0.30.21", + "mlly": "^1.8.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "pkg-types": "^2.3.0", + "scule": "^1.3.0", + "strip-literal": "^3.1.0", + "tinyglobby": "^0.2.15", + "unplugin": "^3.0.0", + "unplugin-utils": "^0.3.1" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/unimport/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/unplugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-3.0.0.tgz", + "integrity": "sha512-0Mqk3AT2TZCXWKdcoaufeXNukv2mTrEZExeXlHIOZXdqYoHHr4n51pymnwV8x2BOVxwXbK2HLlI7usrqMpycdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "picomatch": "^4.0.3", + "webpack-virtual-modules": "^0.6.2" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/unplugin-utils": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.3.1.tgz", + "integrity": "sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==", + "dev": true, + "license": "MIT", + "dependencies": { + "pathe": "^2.0.3", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" + } + }, + "node_modules/unrouting": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/unrouting/-/unrouting-0.1.7.tgz", + "integrity": "sha512-+0hfD+CVWtD636rc5Fn9VEjjTEDhdqgMpbwAuVoUmydSHDaMNiFW93SJG4LV++RoGSEAyvQN5uABAscYpDphpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^5.0.0", + "ufo": "^1.6.3" + } + }, + "node_modules/unstorage": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.5.tgz", + "integrity": "sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "^3.1.3", + "chokidar": "^5.0.0", + "destr": "^2.0.5", + "h3": "^1.15.10", + "lru-cache": "^11.2.7", + "node-fetch-native": "^1.6.7", + "ofetch": "^1.5.1", + "ufo": "^1.6.3" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.8.0", + "@azure/cosmos": "^4.2.0", + "@azure/data-tables": "^13.3.0", + "@azure/identity": "^4.6.0", + "@azure/keyvault-secrets": "^4.9.0", + "@azure/storage-blob": "^12.26.0", + "@capacitor/preferences": "^6 || ^7 || ^8", + "@deno/kv": ">=0.9.0", + "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", + "@planetscale/database": "^1.19.0", + "@upstash/redis": "^1.34.3", + "@vercel/blob": ">=0.27.1", + "@vercel/functions": "^2.2.12 || ^3.0.0", + "@vercel/kv": "^1 || ^2 || ^3", + "aws4fetch": "^1.0.20", + "db0": ">=0.2.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.4.2", + "uploadthing": "^7.4.4" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@deno/kv": { + "optional": true + }, + "@netlify/blobs": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/blob": { + "optional": true + }, + "@vercel/functions": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "aws4fetch": { + "optional": true + }, + "db0": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "ioredis": { + "optional": true + }, + "uploadthing": { + "optional": true + } + } + }, + "node_modules/unstorage/node_modules/lru-cache": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.3.tgz", + "integrity": "sha512-JvNw9Y81y33E+BEYPr0U7omo+U9AySnsMsEiXgwT6yqd31VQWTLNQqmT4ou5eqPFUrTfIDFta2wKhB1hyohtAQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/untun": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/untun/-/untun-0.1.3.tgz", + "integrity": "sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "citty": "^0.1.5", + "consola": "^3.2.3", + "pathe": "^1.1.1" + }, + "bin": { + "untun": "bin/untun.mjs" + } + }, + "node_modules/untun/node_modules/citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + } + }, + "node_modules/untun/node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/untyped": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/untyped/-/untyped-2.0.0.tgz", + "integrity": "sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "citty": "^0.1.6", + "defu": "^6.1.4", + "jiti": "^2.4.2", + "knitwork": "^1.2.0", + "scule": "^1.3.0" + }, + "bin": { + "untyped": "dist/cli.mjs" + } + }, + "node_modules/untyped/node_modules/citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + } + }, + "node_modules/unwasm": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/unwasm/-/unwasm-0.5.3.tgz", + "integrity": "sha512-keBgTSfp3r6+s9ZcSma+0chwxQdmLbB5+dAD9vjtB21UTMYuKAxHXCU1K2CbCtnP09EaWeRvACnXk0EJtUx+hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "exsolve": "^1.0.8", + "knitwork": "^1.3.0", + "magic-string": "^0.30.21", + "mlly": "^1.8.0", + "pathe": "^2.0.3", + "pkg-types": "^2.3.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uqr": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uqr/-/uqr-0.1.3.tgz", + "integrity": "sha512-0rjE8iEJe4YmT9TOhwsZtqCMRLc5DXZUI2UEYUUg63ikBkqqE5EYWaI0etFe/5KUcmcYwLih2RND1kq+hrUJXA==", + "dev": true, + "license": "MIT" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.2.tgz", + "integrity": "sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-dev-rpc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vite-dev-rpc/-/vite-dev-rpc-1.1.0.tgz", + "integrity": "sha512-pKXZlgoXGoE8sEKiKJSng4hI1sQ4wi5YT24FCrwrLt6opmkjlqPPVmiPWWJn8M8byMxRGzp1CrFuqQs4M/Z39A==", + "dev": true, + "license": "MIT", + "dependencies": { + "birpc": "^2.4.0", + "vite-hot-client": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 || ^7.0.0-0" + } + }, + "node_modules/vite-hot-client": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/vite-hot-client/-/vite-hot-client-2.1.0.tgz", + "integrity": "sha512-7SpgZmU7R+dDnSmvXE1mfDtnHLHQSisdySVR7lO8ceAXvM0otZeuQQ6C8LrS5d/aYyP/QZ0hI0L+dIPrm4YlFQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0" + } + }, + "node_modules/vite-node": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-5.3.0.tgz", + "integrity": "sha512-8f20COPYJujc3OKPX6OuyBy3ZIv2det4eRRU4GY1y2MjbeGSUmPjedxg1b72KnTagCofwvZ65ThzjxDW2AtQFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "es-module-lexer": "^2.0.0", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "vite": "^7.3.1" + }, + "bin": { + "vite-node": "dist/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://opencollective.com/antfu" + } + }, + "node_modules/vite-plugin-checker": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/vite-plugin-checker/-/vite-plugin-checker-0.12.0.tgz", + "integrity": "sha512-CmdZdDOGss7kdQwv73UyVgLPv0FVYe5czAgnmRX2oKljgEvSrODGuClaV3PDR2+3ou7N/OKGauDDBjy2MB07Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "chokidar": "^4.0.3", + "npm-run-path": "^6.0.0", + "picocolors": "^1.1.1", + "picomatch": "^4.0.3", + "tiny-invariant": "^1.3.3", + "tinyglobby": "^0.2.15", + "vscode-uri": "^3.1.0" + }, + "engines": { + "node": ">=16.11" + }, + "peerDependencies": { + "@biomejs/biome": ">=1.7", + "eslint": ">=9.39.1", + "meow": "^13.2.0", + "optionator": "^0.9.4", + "oxlint": ">=1", + "stylelint": ">=16", + "typescript": "*", + "vite": ">=5.4.21", + "vls": "*", + "vti": "*", + "vue-tsc": "~2.2.10 || ^3.0.0" + }, + "peerDependenciesMeta": { + "@biomejs/biome": { + "optional": true + }, + "eslint": { + "optional": true + }, + "meow": { + "optional": true + }, + "optionator": { + "optional": true + }, + "oxlint": { + "optional": true + }, + "stylelint": { + "optional": true + }, + "typescript": { + "optional": true + }, + "vls": { + "optional": true + }, + "vti": { + "optional": true + }, + "vue-tsc": { + "optional": true + } + } + }, + "node_modules/vite-plugin-checker/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/vite-plugin-checker/node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-checker/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-checker/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/vite-plugin-checker/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-inspect": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-11.3.3.tgz", + "integrity": "sha512-u2eV5La99oHoYPHE6UvbwgEqKKOQGz86wMg40CCosP6q8BkB6e5xPneZfYagK4ojPJSj5anHCrnvC20DpwVdRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansis": "^4.1.0", + "debug": "^4.4.1", + "error-stack-parser-es": "^1.0.5", + "ohash": "^2.0.11", + "open": "^10.2.0", + "perfect-debounce": "^2.0.0", + "sirv": "^3.0.1", + "unplugin-utils": "^0.3.0", + "vite-dev-rpc": "^1.1.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/vite-plugin-inspect/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-inspect/node_modules/perfect-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-2.1.0.tgz", + "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite-plugin-inspect/node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vite-plugin-vue-tracer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/vite-plugin-vue-tracer/-/vite-plugin-vue-tracer-1.3.0.tgz", + "integrity": "sha512-Cgfce6VikzOw5MUJTpeg50s5rRjzU1Vr61ZjuHunVVHLjZZ5AUlgyExHthZ3r59vtoz9W2rDt23FYG81avYBKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "estree-walker": "^3.0.3", + "exsolve": "^1.0.8", + "magic-string": "^0.30.21", + "pathe": "^2.0.3", + "source-map-js": "^1.2.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^6.0.0 || ^7.0.0", + "vue": "^3.5.0" + } + }, + "node_modules/vite-plugin-vue-tracer/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/vscode-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue": { + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.32.tgz", + "integrity": "sha512-vM4z4Q9tTafVfMAK7IVzmxg34rSzTFMyIe0UUEijUCkn9+23lj0WRfA83dg7eQZIUlgOSGrkViIaCfqSAUXsMw==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.5.32", + "@vue/compiler-sfc": "3.5.32", + "@vue/runtime-dom": "3.5.32", + "@vue/server-renderer": "3.5.32", + "@vue/shared": "3.5.32" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-bundle-renderer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/vue-bundle-renderer/-/vue-bundle-renderer-2.2.0.tgz", + "integrity": "sha512-sz/0WEdYH1KfaOm0XaBmRZOWgYTEvUDt6yPYaUzl4E52qzgWLlknaPPTTZmp6benaPTlQAI/hN1x3tAzZygycg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ufo": "^1.6.1" + } + }, + "node_modules/vue-devtools-stub": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/vue-devtools-stub/-/vue-devtools-stub-0.1.0.tgz", + "integrity": "sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue-router": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-5.0.4.tgz", + "integrity": "sha512-lCqDLCI2+fKVRl2OzXuzdSWmxXFLQRxQbmHugnRpTMyYiT+hNaycV0faqG5FBHDXoYrZ6MQcX87BvbY8mQ20Bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/generator": "^7.28.6", + "@vue-macros/common": "^3.1.1", + "@vue/devtools-api": "^8.0.6", + "ast-walker-scope": "^0.8.3", + "chokidar": "^5.0.0", + "json5": "^2.2.3", + "local-pkg": "^1.1.2", + "magic-string": "^0.30.21", + "mlly": "^1.8.0", + "muggle-string": "^0.4.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "scule": "^1.3.0", + "tinyglobby": "^0.2.15", + "unplugin": "^3.0.0", + "unplugin-utils": "^0.3.1", + "yaml": "^2.8.2" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@pinia/colada": ">=0.21.2", + "@vue/compiler-sfc": "^3.5.17", + "pinia": "^3.0.4", + "vue": "^3.5.0" + }, + "peerDependenciesMeta": { + "@pinia/colada": { + "optional": true + }, + "@vue/compiler-sfc": { + "optional": true + }, + "pinia": { + "optional": true + } + } + }, + "node_modules/vue-router/node_modules/@vue/devtools-api": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-8.1.1.tgz", + "integrity": "sha512-bsDMJ07b3GN1puVwJb/fyFnj/U2imyswK5UQVLZwVl7O05jDrt6BHxeG5XffmOOdasOj/bOmIjxJvGPxU7pcqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^8.1.1" + } + }, + "node_modules/vue-router/node_modules/@vue/devtools-kit": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-8.1.1.tgz", + "integrity": "sha512-gVBaBv++i+adg4JpH71k9ppl4soyR7Y2McEqO5YNgv0BI1kMZ7BDX5gnwkZ5COYgiCyhejZG+yGNrBAjj6Coqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^8.1.1", + "birpc": "^2.6.1", + "hookable": "^5.5.3", + "perfect-debounce": "^2.0.0" + } + }, + "node_modules/vue-router/node_modules/@vue/devtools-shared": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-8.1.1.tgz", + "integrity": "sha512-+h4ttmJYl/txpxHKaoZcaKpC+pvckgLzIDiSQlaQ7kKthKh8KuwoLW2D8hPJEnqKzXOvu15UHEoGyngAXCz0EQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue-router/node_modules/perfect-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-2.1.0.tgz", + "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/webpack-virtual-modules": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ws": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/wsl-utils": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.1.tgz", + "integrity": "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0", + "powershell-utils": "^0.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yargs": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^9.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "string-width": "^7.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^22.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/youch": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/youch/-/youch-4.1.1.tgz", + "integrity": "sha512-mxW3qiSnl+GRxXsaUMzv2Mbada1Y8CDltET9UxejDQe6DBYlSekghl5U5K0ReAikcHDi0G1vKZEmmo/NWAGKLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@poppinss/colors": "^4.1.6", + "@poppinss/dumper": "^0.7.0", + "@speed-highlight/core": "^1.2.14", + "cookie-es": "^3.0.1", + "youch-core": "^0.3.3" + } + }, + "node_modules/youch-core": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/youch-core/-/youch-core-0.3.3.tgz", + "integrity": "sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@poppinss/exception": "^1.2.2", + "error-stack-parser-es": "^1.0.5" + } + }, + "node_modules/youch/node_modules/cookie-es": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-3.1.1.tgz", + "integrity": "sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg==", + "dev": true, + "license": "MIT" + }, + "node_modules/zip-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.0", + "compress-commons": "^6.0.2", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + } + } +} diff --git a/Web/package.json b/Web/package.json new file mode 100644 index 0000000..c925389 --- /dev/null +++ b/Web/package.json @@ -0,0 +1,24 @@ +{ + "name": "sea-time", + "version": "1.0.0", + "description": "航海时代是2022年推出的一款以航海为背景的wap文字游戏,让玩家穿越到15世纪的大航海时代,了解各地不同的风土人情;淋漓尽致的演绎航海时代的血雨腥风。", + "private": true, + "type": "module", + "scripts": { + "build": "nuxt build", + "dev": "nuxt dev", + "generate": "nuxt generate", + "preview": "nuxt preview", + "postinstall": "nuxt prepare" + }, + "dependencies": { + "pinia": "^3.0.4", + "vue": "^3.5.11" + }, + "devDependencies": { + "@pinia/nuxt": "^0.11.3", + "@nuxt/devtools": "^2.0.0", + "nuxt": "^4.4.2", + "typescript": "^5.4.3" + } +} \ No newline at end of file diff --git a/Web/src/app.vue b/Web/src/app.vue new file mode 100644 index 0000000..84a983e --- /dev/null +++ b/Web/src/app.vue @@ -0,0 +1,42 @@ + + + + + \ No newline at end of file diff --git a/Web/src/assets/css/style.css b/Web/src/assets/css/style.css new file mode 100644 index 0000000..c5493c0 --- /dev/null +++ b/Web/src/assets/css/style.css @@ -0,0 +1,199 @@ +/* + * 全局样式定义 + * 此文件通过 nuxt.config.ts 全局引用 + */ + +/* CSS变量定义 - 主题色 */ +:root { + --primary-color: #409eff; + --success-color: #67c23a; + --warning-color: #e6a23c; + --danger-color: #f56c6c; + --info-color: #909399; + + --text-color: #303133; + --text-color-secondary: #606266; + --text-color-placeholder: #c0c4cc; + + --border-color: #dcdfe6; + --border-color-light: #e4e7ed; + --border-color-lighter: #ebeef5; + + --bg-color: #ffffff; + --bg-color-page: #f5f7fa; + --bg-color-overlay: #ffffff; + + --border-radius: 4px; + --border-radius-small: 2px; + + --box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); + --box-shadow-light: 0 2px 8px 0 rgba(0, 0, 0, 0.06); +} + +/* 深色主题 */ +[data-theme='dark'] { + --text-color: #e5eaf3; + --text-color-secondary: #a3a6ad; + --text-color-placeholder: #8d9095; + + --border-color: #4c4d4f; + --border-color-light: #414243; + --border-color-lighter: #363637; + + --bg-color: #1d1e1f; + --bg-color-page: #141414; + --bg-color-overlay: #262727; + + --box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.4); + --box-shadow-light: 0 2px 8px 0 rgba(0, 0, 0, 0.3); +} + +/* 重置样式 */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +html, +body { + width: 100%; + height: 100%; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, + sans-serif; + font-size: 14px; + line-height: 1.5; + color: var(--text-color); + background-color: var(--bg-color-page); +} + +#app { + width: 100%; + height: 100%; +} + +/* 链接样式 */ +a { + color: var(--primary-color); + text-decoration: none; +} + +a:hover { + color: #66b1ff; +} + +/* 按钮样式 */ +button { + cursor: pointer; + border: none; + outline: none; + font-size: 14px; +} + +button:disabled { + cursor: not-allowed; + opacity: 0.6; +} + +/* 输入框样式 */ +input, +textarea { + font-family: inherit; + font-size: inherit; + outline: none; +} + +/* 滚动条样式 */ +::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +::-webkit-scrollbar-track { + background: var(--bg-color-page); +} + +::-webkit-scrollbar-thumb { + background: #c0c4cc; + border-radius: 4px; +} + +::-webkit-scrollbar-thumb:hover { + background: #909399; +} + +/* 工具类 - 文本对齐 */ +.text-center { + text-align: center; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +/* 工具类 - 间距 */ +.mt-10 { + margin-top: 10px; +} + +.mt-20 { + margin-top: 20px; +} + +.mb-10 { + margin-bottom: 10px; +} + +.mb-20 { + margin-bottom: 20px; +} + +.p-20 { + padding: 20px; +} + +/* 工具类 - 颜色 */ +.text-primary { + color: var(--primary-color); +} + +.text-success { + color: var(--success-color); +} + +.text-warning { + color: var(--warning-color); +} + +.text-danger { + color: var(--danger-color); +} + +.text-info { + color: var(--info-color); +} + +/* 工具类 - 背景 */ +.bg-primary { + background-color: var(--primary-color); +} + +.bg-success { + background-color: var(--success-color); +} + +.bg-warning { + background-color: var(--warning-color); +} + +.bg-danger { + background-color: var(--danger-color); +} + +.bg-info { + background-color: var(--info-color); +} \ No newline at end of file diff --git a/Web/src/composables/layout.ts b/Web/src/composables/layout.ts new file mode 100644 index 0000000..7fef45b --- /dev/null +++ b/Web/src/composables/layout.ts @@ -0,0 +1,19 @@ +/** + * 页面布局常量 + * 用于统一管理页面布局配置 + * + * 使用方式: + * import { LAYOUT } from '@/composables/layout' + * definePageMeta({ + * layout: LAYOUT.EMPTY + * }) + */ + +// 定义布局常量 +export const layout = { + default: 'default', + empty: 'empty' +} as const + +// 类型定义 +export type LayoutValue = typeof layout.default | typeof layout.empty \ No newline at end of file diff --git a/Web/src/composables/useAuth.ts b/Web/src/composables/useAuth.ts new file mode 100644 index 0000000..55e5e86 --- /dev/null +++ b/Web/src/composables/useAuth.ts @@ -0,0 +1,164 @@ +/** + * 权限校验组合式函数 + * 提供登录检查、权限验证等功能 + */ +import { useUserStore } from '~/stores/user' +import { useAppStore } from '~/stores/app' + +/** + * 权限校验hook + * 用于页面/组件中的权限校验 + */ +export const useAuth = () => { + const userStore = useUserStore() + const appStore = useAppStore() + + /** + * 检查是否已登录 + * @returns boolean 是否已登录 + */ + const isAuthenticated = (): boolean => { + return userStore.isLogin + } + + /** + * 检查是否未登录 + * @returns boolean 是否未登录 + */ + const isGuest = (): boolean => { + return !userStore.isLogin + } + + /** + * 检查是否拥有指定角色 + * @param roles 角色数组 + * @returns boolean 是否有权限 + */ + const hasRole = (roles: string | string[]): boolean => { + if (!userStore.isLogin) return false + + const userRole = userStore.userRole + const roleList = Array.isArray(roles) ? roles : [roles] + + return roleList.includes(userRole) + } + + /** + * 检查是否为管理员 + * @returns boolean 是否为管理员 + */ + const isAdmin = (): boolean => { + return hasRole('admin') + } + + /** + * 获取当前用户ID + * @returns number 用户ID + */ + const getUserId = (): number => { + return userStore.userId + } + + /** + * 获取当前用户信息 + * @returns IUserInfo | null 用户信息 + */ + const getUserInfo = () => { + return userStore.userInfo + } + + /** + * 获取当前用户昵称 + * @returns string 用户昵称 + */ + const getNickname = (): string => { + return userStore.userNickname + } + + /** + * 跳转到登录页(如果未登录) + * @param redirectUrl 登录后重定向的URL + */ + const requireAuth = (redirectUrl?: string) => { + if (!userStore.isLogin) { + if (typeof window !== 'undefined') { + const url = redirectUrl || window.location.href + window.location.href = `/login?redirect=${encodeURIComponent(url)}` + } + return false + } + return true + } + + /** + * 跳转到登录页(如果已登录) + * @param redirectUrl 登录后重定向的URL + */ + const requireGuest = (redirectUrl: string = '/') => { + if (userStore.isLogin) { + if (typeof window !== 'undefined') { + window.location.href = redirectUrl + } + return false + } + return true + } + + /** + * 检查功能权限(基于角色) + * @param permission 权限标识 + * @returns boolean 是否有权限 + */ + const hasPermission = (permission: string): boolean => { + // 简化实现,实际项目中可以结合后端返回的权限列表 + if (!userStore.isLogin) return false + + // 管理员拥有所有权限 + if (userStore.userRole === 'admin') return true + + // TODO: 可以从用户信息中获取权限列表进行匹配 + return false + } + + /** + * 登出 + * @param redirectUrl 退出后重定向的URL + */ + const logout = async (redirectUrl: string = '/login') => { + try { + // 调用退出登录API(如果需要) + // const userService = new UserSERVICE() + // await userService.logout() + } finally { + // 清除用户状态 + userStore.clearUserInfo() + + // 跳转到登录页 + if (typeof window !== 'undefined') { + window.location.href = redirectUrl + } + } + } + + return { + // 状态 + isLogin: computed(() => userStore.isLogin), + userInfo: computed(() => userStore.userInfo), + userId: computed(() => userStore.userId), + nickname: computed(() => userStore.userNickname), + userRole: computed(() => userStore.userRole), + + // 方法 + isAuthenticated, + isGuest, + hasRole, + isAdmin, + getUserId, + getUserInfo, + getNickname, + requireAuth, + requireGuest, + hasPermission, + logout + } +} \ No newline at end of file diff --git a/Web/src/extends/cryptoEXTEND.ts b/Web/src/extends/cryptoEXTEND.ts new file mode 100644 index 0000000..d6e3953 --- /dev/null +++ b/Web/src/extends/cryptoEXTEND.ts @@ -0,0 +1,182 @@ +/** + * 加密解密工具类(支持实例化) + * 提供Base64加密解密、AES加解密等功能 + */ +export class CryptoEXTEND { + // 默认加密密钥 + private static readonly DEFAULT_KEY = 'kx-ui-framework-key' + + // 实例密钥 + private key: string + + /** + * 构造函数:初始化加密密钥 + * @param key 加密密钥(不同实例可传入不同密钥) + */ + constructor(key?: string) { + this.key = key || CryptoEXTEND.DEFAULT_KEY + } + + /** + * Base64加密字符串 + * @param data 需要加密的字符串 + * @returns 加密后的Base64字符串 + */ + encryptBase64(data: string): string { + if (!data) return '' + try { + return btoa(encodeURIComponent(data)) + } catch (error) { + console.error('Base64加密失败:', error) + return '' + } + } + + /** + * Base64解密字符串 + * @param data 需要解密的Base64字符串 + * @returns 解密后的原始字符串 + */ + decryptBase64(data: string): string { + if (!data) return '' + try { + return decodeURIComponent(atob(data)) + } catch (error) { + console.error('Base64解密失败:', error) + return '' + } + } + + /** + * 加密字符串(Base64 + 密钥拼接) + * @param data 需要加密的字符串 + * @returns 加密后的字符串 + */ + encrypt(data: string): string { + if (!data) return '' + try { + const encryptStr = data + this.key + return btoa(encodeURIComponent(encryptStr)) + } catch (error) { + console.error('加密失败:', error) + return '' + } + } + + /** + * 解密字符串 + * @param data 需要解密的字符串 + * @returns 解密后的原始字符串 + */ + decrypt(data: string): string { + if (!data) return '' + try { + const decryptStr = decodeURIComponent(atob(data)) + return decryptStr.replace(this.key, '') + } catch (error) { + console.error('解密失败:', error) + return '' + } + } + + /** + * 验证加密字符串是否有效(匹配当前密钥) + * @param data 加密后的字符串 + * @returns boolean 有效返回true,否则返回false + */ + validate(data: string): boolean { + try { + const decryptStr = this.decrypt(data) + return decryptStr !== data && decryptStr.length > 0 + } catch (error) { + return false + } + } + + /** + * MD5加密(简化版,实际项目建议使用crypto-js) + * @param data 需要加密的字符串 + * @returns MD5哈希值 + */ + static md5(data: string): string { + if (!data) return '' + // 简化实现,实际项目中建议使用专业的MD5库 + let hash = 0 + for (let i = 0; i < data.length; i++) { + const char = data.charCodeAt(i) + hash = ((hash << 5) - hash) + char + hash = hash & hash + } + return Math.abs(hash).toString(16) + } + + /** + * SHA256加密 + * @param data 需要加密的字符串 + * @returns SHA256哈希值 + */ + static sha256(data: string): Promise { + if (!data) return Promise.resolve('') + // 使用Web Crypto API + const encoder = new TextEncoder() + const dataBuffer = encoder.encode(data) + return crypto.subtle.digest('SHA-256', dataBuffer).then(hash => { + return Array.from(new Uint8Array(hash)) + .map(b => b.toString(16).padStart(2, '0')) + .join('') + }) + } + + /** + * 生成随机字符串 + * @param length 字符串长度 + * @returns 随机字符串 + */ + static randomString(length: number = 32): string { + const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' + let result = '' + for (let i = 0; i < length; i++) { + result += chars.charAt(Math.floor(Math.random() * chars.length)) + } + return result + } + + /** + * 生成随机数字 + * @param min 最小值 + * @param max 最大值 + * @returns 随机数字 + */ + static randomNumber(min: number, max: number): number { + return Math.floor(Math.random() * (max - min + 1)) + min + } + + /** + * URL参数编码 + * @param data 需要编码的数据对象 + * @returns 编码后的URL参数字符串 + */ + static urlEncode(data: Record): string { + const params = new URLSearchParams() + for (const key in data) { + if (data[key] !== undefined && data[key] !== null) { + params.append(key, String(data[key])) + } + } + return params.toString() + } + + /** + * URL参数解码 + * @param query URL参数字符串 + * @returns 解码后的数据对象 + */ + static urlDecode(query: string): Record { + const params = new URLSearchParams(query) + const result: Record = {} + params.forEach((value, key) => { + result[key] = value + }) + return result + } +} \ No newline at end of file diff --git a/Web/src/extends/dateEXTEND.ts b/Web/src/extends/dateEXTEND.ts new file mode 100644 index 0000000..a3f1bb5 --- /dev/null +++ b/Web/src/extends/dateEXTEND.ts @@ -0,0 +1,181 @@ +/** + * 日期处理工具类(静态工具) + * 提供日期格式化、日期差计算等功能 + */ +export class DateEXTEND { + /** + * 格式化时间戳为本地时间字符串 + * @param timestamp 时间戳(毫秒) + * @returns 格式化后的时间字符串(如:2026-04-09 23:59:59) + */ + static format(timestamp: number | Date): string { + if (!timestamp) return '' + const date = timestamp instanceof Date ? timestamp : new Date(timestamp) + const year = date.getFullYear() + const month = String(date.getMonth() + 1).padStart(2, '0') + const day = String(date.getDate()).padStart(2, '0') + const hour = String(date.getHours()).padStart(2, '0') + const minute = String(date.getMinutes()).padStart(2, '0') + const second = String(date.getSeconds()).padStart(2, '0') + return `${year}-${month}-${day} ${hour}:${minute}:${second}` + } + + /** + * 格式化日期(仅日期部分) + * @param timestamp 时间戳(毫秒) + * @returns 格式化后的日期字符串(如:2026-04-09) + */ + static formatDate(timestamp: number | Date): string { + if (!timestamp) return '' + const date = timestamp instanceof Date ? timestamp : new Date(timestamp) + const year = date.getFullYear() + const month = String(date.getMonth() + 1).padStart(2, '0') + const day = String(date.getDate()).padStart(2, '0') + return `${year}-${month}-${day}` + } + + /** + * 格式化时间(仅时间部分) + * @param timestamp 时间戳(毫秒) + * @returns 格式化后的时间字符串(如:23:59:59) + */ + static formatTime(timestamp: number | Date): string { + if (!timestamp) return '' + const date = timestamp instanceof Date ? timestamp : new Date(timestamp) + const hour = String(date.getHours()).padStart(2, '0') + const minute = String(date.getMinutes()).padStart(2, '0') + const second = String(date.getSeconds()).padStart(2, '0') + return `${hour}:${minute}:${second}` + } + + /** + * 计算两个时间戳的天数差 + * @param start 开始时间戳 + * @param end 结束时间戳 + * @returns 天数差(正数:end在start之后;负数:end在start之前) + */ + static diffDay(start: number, end: number): number { + const oneDay = 1000 * 60 * 60 * 24 + return Math.floor((end - start) / oneDay) + } + + /** + * 计算两个时间戳的小时差 + * @param start 开始时间戳 + * @param end 结束时间戳 + * @returns 小时差 + */ + static diffHour(start: number, end: number): number { + const oneHour = 1000 * 60 * 60 + return Math.floor((end - start) / oneHour) + } + + /** + * 计算两个时间戳的分钟差 + * @param start 开始时间戳 + * @param end 结束时间戳 + * @returns 分钟差 + */ + static diffMinute(start: number, end: number): number { + const oneMinute = 1000 * 60 + return Math.floor((end - start) / oneMinute) + } + + /** + * 判断是否为今天 + * @param timestamp 时间戳(毫秒) + * @returns boolean 是今天返回true,否则返回false + */ + static isToday(timestamp: number | Date): boolean { + const today = new Date() + const target = timestamp instanceof Date ? timestamp : new Date(timestamp) + return ( + today.getFullYear() === target.getFullYear() && + today.getMonth() === target.getMonth() && + today.getDate() === target.getDate() + ) + } + + /** + * 判断是否为昨天 + * @param timestamp 时间戳(毫秒) + * @returns boolean 是昨天返回true,否则返回false + */ + static isYesterday(timestamp: number | Date): boolean { + const yesterday = new Date() + yesterday.setDate(yesterday.getDate() - 1) + const target = timestamp instanceof Date ? timestamp : new Date(timestamp) + return ( + yesterday.getFullYear() === target.getFullYear() && + yesterday.getMonth() === target.getMonth() && + yesterday.getDate() === target.getDate() + ) + } + + /** + * 智能时间显示(聊天场景使用) + * @param timestamp 时间戳(毫秒) + * @returns 智能时间字符串 + */ + static smartFormat(timestamp: number | Date): string { + const now = Date.now() + const target = timestamp instanceof Date ? timestamp.getTime() : timestamp + const diff = now - target + + // 小于1分钟 + if (diff < 60 * 1000) { + return '刚刚' + } + + // 小于1小时 + if (diff < 60 * 60 * 1000) { + return `${Math.floor(diff / (60 * 1000))}分钟前` + } + + // 小于24小时 + if (diff < 24 * 60 * 60 * 1000) { + return `${Math.floor(diff / (60 * 60 * 1000))}小时前` + } + + // 今天是显示时间 + if (this.isToday(target)) { + return this.formatTime(target) + } + + // 昨天显示昨天 + 时间 + if (this.isYesterday(target)) { + return `昨天 ${this.formatTime(target)}` + } + + // 其他显示日期时间 + return this.format(target) + } + + /** + * 获取当前时间戳(毫秒) + * @returns 当前时间戳 + */ + static now(): number { + return Date.now() + } + + /** + * 获取今天开始的时间戳 + * @returns 今天开始的时间戳 + */ + static getTodayStart(): number { + const today = new Date() + today.setHours(0, 0, 0, 0) + return today.getTime() + } + + /** + * 获取今天结束的时间戳 + * @returns 今天结束的时间戳 + */ + static getTodayEnd(): number { + const today = new Date() + today.setHours(23, 59, 59, 999) + return today.getTime() + } +} \ No newline at end of file diff --git a/Web/src/extends/requestEXTEND.ts b/Web/src/extends/requestEXTEND.ts new file mode 100644 index 0000000..5fb0aef --- /dev/null +++ b/Web/src/extends/requestEXTEND.ts @@ -0,0 +1,356 @@ +/** + * 网络请求工具类(支持实例化) + * 基于ofetch封装统一的请求逻辑,支持拦截器配置 + */ +export class RequestEXTEND { + private baseURL: string + private timeout: number + private headers: Record + + // 静态默认配置 + private static defaultBaseURL = '' + private static defaultTimeout = 30000 + private static defaultHeaders: Record = { + 'Content-Type': 'application/json' + } + + // 静态拦截器 + private static requestInterceptors: Array<{ + onFulfilled?: (config: any) => any + onRejected?: (error: any) => any + }> = [] + + private static responseInterceptors: Array<{ + onFulfilled?: (response: any) => any + onRejected?: (error: any) => any + }> = [] + + /** + * 构造函数:初始化请求配置 + * @param config 自定义请求配置(可选) + */ + constructor(config?: { + baseURL?: string + timeout?: number + headers?: Record + }) { + this.baseURL = config?.baseURL || RequestEXTEND.defaultBaseURL + this.timeout = config?.timeout || RequestEXTEND.defaultTimeout + this.headers = { + ...RequestEXTEND.defaultHeaders, + ...config?.headers + } + } + + /** + * 设置静态默认配置 + */ + static setDefaultConfig(config: { + baseURL?: string + timeout?: number + headers?: Record + }) { + if (config.baseURL) this.defaultBaseURL = config.baseURL + if (config.timeout) this.defaultTimeout = config.timeout + if (config.headers) this.defaultHeaders = { ...this.defaultHeaders, ...config.headers } + } + + /** + * 添加请求拦截器(静态方法) + */ + static addRequestInterceptor(interceptor: { + onFulfilled?: (config: any) => any + onRejected?: (error: any) => any + }) { + this.requestInterceptors.push(interceptor) + } + + /** + * 添加响应拦截器(静态方法) + */ + static addResponseInterceptor(interceptor: { + onFulfilled?: (response: any) => any + onRejected?: (error: any) => any + }) { + this.responseInterceptors.push(interceptor) + } + + /** + * 执行请求拦截器链 + */ + private async executeRequestInterceptors(config: any): Promise { + let result = config + for (const interceptor of RequestEXTEND.requestInterceptors) { + try { + if (interceptor.onFulfilled) { + result = await interceptor.onFulfilled(result) + } + } catch (error) { + if (interceptor.onRejected) { + result = await interceptor.onRejected(error) + } else { + throw error + } + } + } + return result + } + + /** + * 执行响应拦截器链 + */ + private async executeResponseInterceptors(response: any): Promise { + let result = response + for (const interceptor of RequestEXTEND.responseInterceptors) { + try { + if (interceptor.onFulfilled) { + result = await interceptor.onFulfilled(result) + } + } catch (error) { + if (interceptor.onRejected) { + result = await interceptor.onRejected(error) + } else { + throw error + } + } + } + return result + } + + /** + * 构建请求URL + */ + private buildURL(url: string, params?: Record): string { + let fullURL = url + // 处理相对路径 + if (!url.startsWith('http://') && !url.startsWith('https://')) { + fullURL = this.baseURL + url + } + // 处理查询参数 + if (params && Object.keys(params).length > 0) { + const searchParams = new URLSearchParams() + for (const key in params) { + const value = params[key] + if (value !== undefined && value !== null) { + searchParams.append(key, String(value)) + } + } + const queryString = searchParams.toString() + if (queryString) { + fullURL += (fullURL.includes('?') ? '&' : '?') + queryString + } + } + return fullURL + } + + /** + * 通用请求方法 + */ + private async request( + method: string, + url: string, + options: { + params?: Record + data?: any + headers?: Record + } = {} + ): Promise { + const { params, data, headers } = options + + // 构建配置 + const config: any = { + method: method.toUpperCase(), + headers: { + ...this.headers, + ...headers + }, + timeout: this.timeout + } + + // 添加Body(GET/HEAD请求不添加body) + if (data && method.toUpperCase() !== 'GET' && method.toUpperCase() !== 'HEAD') { + if (data instanceof FormData) { + config.body = data + delete config.headers['Content-Type'] + } else { + config.body = JSON.stringify(data) + } + } + + // 处理查询参数(GET请求) + if (params && method.toUpperCase() === 'GET') { + url = this.buildURL(url, params) + } else { + url = this.buildURL(url, undefined) + } + + // 执行请求拦截器 + config.url = url + const interceptedConfig = await this.executeRequestInterceptors(config) + + try { + // 发起请求 + const response = await fetch(interceptedConfig.url, { + method: interceptedConfig.method, + headers: interceptedConfig.headers, + body: interceptedConfig.body, + signal: interceptedConfig.timeout ? AbortSignal.timeout(interceptedConfig.timeout) : undefined + }) + + // 处理响应 + let result + const contentType = response.headers.get('content-type') + if (contentType && contentType.includes('application/json')) { + result = await response.json() + } else { + result = await response.text() + } + + // 包装响应 + const wrappedResponse = { + data: result, + status: response.status, + statusText: response.statusText, + headers: response.headers + } + + // 执行响应拦截器 + return await this.executeResponseInterceptors(wrappedResponse) + } catch (error: any) { + // 执行错误拦截器 + const errorResponse = { + message: error.message || '网络请求失败', + code: error.code || 'NETWORK_ERROR', + status: error.status || 0 + } + throw errorResponse + } + } + + /** + * GET请求 + */ + async get(url: string, options?: { + params?: Record + headers?: Record + }): Promise { + return this.request('GET', url, options) + } + + /** + * POST请求 + */ + async post(url: string, data?: any, options?: { + params?: Record + headers?: Record + }): Promise { + return this.request('POST', url, { ...options, data }) + } + + /** + * PUT请求 + */ + async put(url: string, data?: any, options?: { + params?: Record + headers?: Record + }): Promise { + return this.request('PUT', url, { ...options, data }) + } + + /** + * DELETE请求 + */ + async delete(url: string, options?: { + params?: Record + headers?: Record + }): Promise { + return this.request('DELETE', url, options) + } + + /** + * PATCH请求 + */ + async patch(url: string, data?: any, options?: { + params?: Record + headers?: Record + }): Promise { + return this.request('PATCH', url, { ...options, data }) + } + + /** + * 文件上传 + */ + async upload(url: string, file: File | FormData, options?: { + params?: Record + headers?: Record + }): Promise { + const formData = file instanceof FormData ? file : new FormData() + if (file instanceof File) { + formData.append('file', file) + } + return this.request('POST', url, { + ...options, + data: formData + }) + } + + /** + * 文件下载 + */ + async download(url: string, filename?: string): Promise { + const response = await fetch(this.buildURL(url), { + method: 'GET', + headers: this.headers + }) + + if (!response.ok) { + throw new Error('下载失败') + } + + const blob = await response.blob() + const downloadURL = window.URL.createObjectURL(blob) + const link = document.createElement('a') + link.href = downloadURL + link.download = filename || 'download' + document.body.appendChild(link) + link.click() + document.body.removeChild(link) + window.URL.revokeObjectURL(downloadURL) + } +} + +// 导出默认实例 +export const request = new RequestEXTEND() + +// 添加默认的Token拦截器(示例) +RequestEXTEND.addRequestInterceptor({ + onFulfilled: (config) => { + // 从localStorage获取Token + const token = typeof localStorage !== 'undefined' ? localStorage.getItem('token') : '' + if (token) { + config.headers = { + ...config.headers, + Authorization: `Bearer ${token}` + } + } + return config + } +}) + +// 添加默认的响应错误处理拦截器 +RequestEXTEND.addResponseInterceptor({ + onRejected: (error: any) => { + if (error.status === 401) { + // Token过期,清除登录状态 + if (typeof localStorage !== 'undefined') { + localStorage.removeItem('token') + localStorage.removeItem('userInfo') + } + // 跳转到登录页 + if (typeof window !== 'undefined') { + window.location.href = '/login' + } + } + return Promise.reject(error) + } +}) \ No newline at end of file diff --git a/Web/src/extends/validateEXTEND.ts b/Web/src/extends/validateEXTEND.ts new file mode 100644 index 0000000..3605563 --- /dev/null +++ b/Web/src/extends/validateEXTEND.ts @@ -0,0 +1,260 @@ +/** + * 表单校验工具类(静态工具) + * 提供手机号、邮箱、身份证等常用校验功能 + */ +export class ValidateEXTEND { + /** + * 校验手机号(中国大陆) + * @param phone 手机号 + * @returns boolean 是否有效 + */ + static isPhone(phone: string): boolean { + if (!phone) return false + const reg = /^1[3-9]\d{9}$/ + return reg.test(phone) + } + + /** + * 校验邮箱 + * @param email 邮箱地址 + * @returns boolean 是否有效 + */ + static isEmail(email: string): boolean { + if (!email) return false + const reg = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/ + return reg.test(email) + } + + /** + * 校验身份证号(中国大陆) + * @param idCard 身份证号 + * @returns boolean 是否有效 + */ + static isIdCard(idCard: string): boolean { + if (!idCard) return false + const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/ + return reg.test(idCard) + } + + /** + * 校验URL + * @param url URL地址 + * @returns boolean 是否有效 + */ + static isUrl(url: string): boolean { + if (!url) return false + try { + new URL(url) + return true + } catch { + return false + } + } + + /** + * 校验IP地址 + * @param ip IP地址 + * @returns boolean 是否有效 + */ + static isIP(ip: string): boolean { + if (!ip) return false + const reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/ + return reg.test(ip) + } + + /** + * 校验邮政编码(中国大陆) + * @param code 邮政编码 + * @returns boolean 是否有效 + */ + static isPostalCode(code: string): boolean { + if (!code) return false + const reg = /^[1-9]\d{5}$/ + return reg.test(code) + } + + /** + * 校验车牌号(中国大陆) + * @param plate 车牌号 + * @returns boolean 是否有效 + */ + static isCarPlate(plate: string): boolean { + if (!plate) return false + const reg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-Z0-9]{4,5}[A-Z0-9挂学警港澳]$/ + return reg.test(plate) + } + + /** + * 校验用户名(字母开头,允许字母数字下划线) + * @param username 用户名 + * @returns boolean 是否有效 + */ + static isUsername(username: string): boolean { + if (!username) return false + const reg = /^[a-zA-Z][a-zA-Z0-9_]{3,15}$/ + return reg.test(username) + } + + /** + * 校验密码强度(8-20位,包含字母和数字) + * @param password 密码 + * @returns boolean 是否有效 + */ + static isPassword(password: string): boolean { + if (!password) return false + const reg = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,20}$/ + return reg.test(password) + } + + /** + * 校验强密码(8-20位,包含大小写字母和数字) + * @param password 密码 + * @returns boolean 是否有效 + */ + static isStrongPassword(password: string): boolean { + if (!password) return false + const reg = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,20}$/ + return reg.test(password) + } + + /** + * 校验金额(正数,最多两位小数) + * @param amount 金额 + * @returns boolean 是否有效 + */ + static isAmount(amount: string | number): boolean { + if (amount === '' || amount === null || amount === undefined) return false + const reg = /^[0-9]+(\.[0-9]{1,2})?$/ + return reg.test(String(amount)) + } + + /** + * 校验中文名(2-10个中文字符) + * @param name 姓名 + * @returns boolean 是否有效 + */ + static isChineseName(name: string): boolean { + if (!name) return false + const reg = /^[\u4e00-\u9fa5]{2,10}$/ + return reg.test(name) + } + + /** + * 校验QQ号 + * @param qq QQ号 + * @returns boolean 是否有效 + */ + static isQQ(qq: string): boolean { + if (!qq) return false + const reg = /^[1-9]\d{4,10}$/ + return reg.test(qq) + } + + /** + * 校验微信号 + * @param wechat 微信号 + * @returns boolean 是否有效 + */ + static isWeChat(wechat: string): boolean { + if (!wechat) return false + const reg = /^[a-zA-Z][a-zA-Z0-9_-]{5,19}$/ + return reg.test(wechat) + } + + /** + * 校验银行卡号(简单校验Luhn算法) + * @param cardNo 银行卡号 + * @returns boolean 是否有效 + */ + static isBankCard(cardNo: string): boolean { + if (!cardNo) return false + // 去除空格 + const card = cardNo.replace(/\s/g, '') + // 只能是16或19位数字 + if (!/^\d{16}|\d{19}$/.test(card)) return false + // Luhn算法校验 + let sum = 0 + let isEven = false + for (let i = card.length - 1; i >= 0; i--) { + let digit = parseInt(card.charAt(i)) + if (isEven) { + digit *= 2 + if (digit > 9) { + digit -= 9 + } + } + sum += digit + isEven = !isEven + } + return sum % 10 === 0 + } + + /** + * 校验座机电话(中国大陆) + * @param phone 座机电话 + * @returns boolean 是否有效 + */ + static isLandline(phone: string): boolean { + if (!phone) return false + const reg = /^(0\d{2,3}-?)?\d{7,8}$/ + return reg.test(phone) + } + + /** + * 校验非空 + * @param value 值 + * @returns boolean 是否有效 + */ + static isRequired(value: any): boolean { + if (value === null || value === undefined) return false + if (typeof value === 'string') return value.trim().length > 0 + if (Array.isArray(value)) return value.length > 0 + return true + } + + /** + * 校验最小长度 + * @param value 值 + * @param min 最小长度 + * @returns boolean 是否有效 + */ + static minLength(value: string, min: number): boolean { + if (!value) return false + return value.trim().length >= min + } + + /** + * 校验最大长度 + * @param value 值 + * @param max 最大长度 + * @returns boolean 是否有效 + */ + static maxLength(value: string, max: number): boolean { + if (!value) return false + return value.trim().length <= max + } + + /** + * 校验范围 + * @param value 值 + * @param min 最小值 + * @param max 最大值 + * @returns boolean 是否有效 + */ + static inRange(value: number, min: number, max: number): boolean { + if (value === null || value === undefined) return false + return value >= min && value <= max + } + + /** + * 校验数组长度范围 + * @param value 数组 + * @param min 最小长度 + * @param max 最大长度 + * @returns boolean 是否有效 + */ + static arrayLengthInRange(value: any[], min: number, max: number): boolean { + if (!Array.isArray(value)) return false + return value.length >= min && value.length <= max + } +} \ No newline at end of file diff --git a/Web/src/layouts/default.vue b/Web/src/layouts/default.vue new file mode 100644 index 0000000..fcc8088 --- /dev/null +++ b/Web/src/layouts/default.vue @@ -0,0 +1,211 @@ + + + + + \ No newline at end of file diff --git a/Web/src/layouts/empty.vue b/Web/src/layouts/empty.vue new file mode 100644 index 0000000..10e30ba --- /dev/null +++ b/Web/src/layouts/empty.vue @@ -0,0 +1,17 @@ + + + + + \ No newline at end of file diff --git a/Web/src/pages/auth/login.vue b/Web/src/pages/auth/login.vue new file mode 100644 index 0000000..3776af1 --- /dev/null +++ b/Web/src/pages/auth/login.vue @@ -0,0 +1,469 @@ + + + + + \ No newline at end of file diff --git a/Web/src/pages/home/index.vue b/Web/src/pages/home/index.vue new file mode 100644 index 0000000..2f1696b --- /dev/null +++ b/Web/src/pages/home/index.vue @@ -0,0 +1,438 @@ + + + + + \ No newline at end of file diff --git a/Web/src/pages/index.vue b/Web/src/pages/index.vue new file mode 100644 index 0000000..37c88a0 --- /dev/null +++ b/Web/src/pages/index.vue @@ -0,0 +1,13 @@ + + + \ No newline at end of file diff --git a/Web/src/services/commonSERVICE.ts b/Web/src/services/commonSERVICE.ts new file mode 100644 index 0000000..c039cd7 --- /dev/null +++ b/Web/src/services/commonSERVICE.ts @@ -0,0 +1,209 @@ +/** + * 通用API服务 + * 提供字典查询、文件上传等通用接口 + */ +import type { IDictParams, IDictResponse, IUploadParams } from '~/types/api' +import type { IUploadResponse, IPageResponse, IPageParams } from '~/types/common' +import { RequestEXTEND } from '~/extends/requestEXTEND' + +export class CommonSERVICE { + // 私有属性:请求工具实例 + private request: RequestEXTEND + + /** + * 构造函数:初始化请求工具 + * @param config 自定义请求配置(可选) + */ + constructor(config?: { timeout?: number; headers?: Record; baseURL?: string }) { + this.request = new RequestEXTEND(config) + } + + /** + * 字典查询接口 + * @param type 字典类型 + * @returns 字典项列表 + */ + async getDict(type: string): Promise { + try { + const response = await this.request.get('/api/common/dict', { + params: { type } + }) + if (response.code !== 200 && response.code !== 0) { + throw new Error(response.message || '获取字典失败') + } + return response.data || [] + } catch (error) { + console.error('获取字典接口异常:', error) + return [] + } + } + + /** + * 文件上传接口 + * @param file 要上传的文件 + * @returns 上传后的文件信息 + */ + async upload(file: File): Promise { + try { + const formData = new FormData() + formData.append('file', file) + const response = await this.request.post('/api/common/upload', formData) + if (response.code !== 200 && response.code !== 0) { + throw new Error(response.message || '文件上传失败') + } + return response.data + } catch (error) { + console.error('文件上传接口异常:', error) + throw error + } + } + + /** + * 多文件上传接口 + * @param files 要上传的文件数组 + * @returns 上传后的文件信息列表 + */ + async uploadMultiple(files: File[]): Promise { + try { + const formData = new FormData() + files.forEach((file, index) => { + formData.append(`files_${index}`, file) + }) + const response = await this.request.post<{ code: number; message: string; data: IUploadResponse['data'][] }>( + '/api/common/uploadMultiple', + formData + ) + if (response.code !== 200 && response.code !== 0) { + throw new Error(response.message || '文件上传失败') + } + return response.data || [] + } catch (error) { + console.error('多文件上传接口异常:', error) + throw error + } + } + + /** + * 获取上传进度(需要自行实现) + * @param file 要上传的文件 + * @param onProgress 上传进度回调 + * @returns 上传后的文件信息 + */ + async uploadWithProgress( + file: File, + onProgress: (percent: number) => void + ): Promise { + return new Promise((resolve, reject) => { + const xhr = new XMLHttpRequest() + const formData = new FormData() + formData.append('file', file) + + xhr.upload.addEventListener('progress', (event) => { + if (event.lengthComputable) { + const percent = Math.round((event.loaded / event.total) * 100) + onProgress(percent) + } + }) + + xhr.addEventListener('load', () => { + if (xhr.status >= 200 && xhr.status < 300) { + try { + const response = JSON.parse(xhr.responseText) + if (response.code === 200 || response.code === 0) { + resolve(response.data) + } else { + reject(new Error(response.message || '文件上传失败')) + } + } catch (error) { + reject(error) + } + } else { + reject(new Error('文件上传失败')) + } + }) + + xhr.addEventListener('error', () => { + reject(new Error('文件上传失败')) + }) + + xhr.open('POST', '/api/common/upload') + xhr.send(formData) + }) + } + + /** + * 获取配置信息 + * @param key 配置键 + * @returns 配置值 + */ + async getConfig(key: string): Promise { + try { + const response = await this.request.get<{ code: number; message: string; data: { value: string } }>( + '/api/common/config', + { params: { key } } + ) + if (response.code === 200 || response.code === 0) { + return response.data?.value || null + } + return null + } catch (error) { + console.error('获取配置接口异常:', error) + return null + } + } + + /** + * 获取应用版本信息 + * @returns 版本信息 + */ + async getVersion(): Promise<{ version: string; buildTime: string }> { + try { + const response = await this.request.get<{ code: number; message: string; data: { version: string; buildTime: string } }>('/api/common/version') + if (response.code === 200 || response.code === 0) { + return response.data || { version: '1.0.0', buildTime: '' } + } + return { version: '1.0.0', buildTime: '' } + } catch (error) { + console.error('获取版本信息接口异常:', error) + return { version: '1.0.0', buildTime: '' } + } + } + + /** + * 发送短信验证码 + * @param phone 手机号 + * @param type 验证码类型(login/register/reset) + * @returns 发送结果 + */ + async sendSmsCode(phone: string, type: string = 'login'): Promise { + try { + const response = await this.request.post<{ code: number; message: string }>('/api/common/sms/send', { + phone, + type + }) + return response.code === 200 || response.code === 0 + } catch (error) { + console.error('发送短信验证码接口异常:', error) + return false + } + } + + /** + * 验证短信验证码 + * @param phone 手机号 + * @param code 验证码 + * @returns 验证结果 + */ + async verifySmsCode(phone: string, code: string): Promise { + try { + const response = await this.request.post<{ code: number; message: string }>('/api/common/sms/verify', { + phone, + code + }) + return response.code === 200 || response.code === 0 + } catch (error) { + console.error('验证短信验证码接口异常:', error) + return false + } + } +} \ No newline at end of file diff --git a/Web/src/services/userSERVICE.ts b/Web/src/services/userSERVICE.ts new file mode 100644 index 0000000..31f9e19 --- /dev/null +++ b/Web/src/services/userSERVICE.ts @@ -0,0 +1,105 @@ +/** + * 用户相关API服务 + * 提供用户登录、获取用户信息、退出登录等接口 + */ +import type { ILoginParams, ILoginResponse, IGetUserInfoResponse, ILogoutResponse } from '~/types/api' +import { RequestEXTEND } from '~/extends/requestEXTEND' + +export class UserSERVICE { + // 私有属性:请求工具实例 + private request: RequestEXTEND + + /** + * 构造函数:初始化请求工具 + * @param config 自定义请求配置(可选) + */ + constructor(config?: { timeout?: number; headers?: Record; baseURL?: string }) { + this.request = new RequestEXTEND(config) + } + + /** + * 用户登录接口 + * @param params 登录请求参数 + * @returns 登录响应数据 + */ + async login(params: ILoginParams): Promise { + try { + const response = await this.request.post('/api/user/login', params) + if (response.code !== 200 && response.code !== 0) { + throw new Error(response.message || '登录失败') + } + return response.data + } catch (error) { + console.error('登录接口异常:', error) + throw error + } + } + + /** + * 获取用户信息接口(需携带Token) + * @param userId 用户ID(可选,默认取当前登录用户ID) + * @returns 用户信息 + */ + async getInfo(userId?: number): Promise { + try { + const response = await this.request.get('/api/user/info', { + params: userId ? { userId } : undefined + }) + if (response.code !== 200 && response.code !== 0) { + throw new Error(response.message || '获取用户信息失败') + } + return response.data + } catch (error) { + console.error('获取用户信息接口异常:', error) + throw error + } + } + + /** + * 退出登录接口 + * @returns 退出结果 + */ + async logout(): Promise { + try { + const response = await this.request.post('/api/user/logout') + return response.code === 200 || response.code === 0 + } catch (error) { + console.error('退出登录接口异常:', error) + return false + } + } + + /** + * 更新用户信息 + * @param data 用户信息 + * @returns 更新结果 + */ + async updateInfo(data: Partial): Promise { + try { + const response = await this.request.put('/api/user/update', data) + return response.code === 200 || response.code === 0 + } catch (error) { + console.error('更新用户信息接口异常:', error) + return false + } + } + + /** + * 修改密码 + * @param oldPassword 旧密码 + * @param newPassword 新密码 + * @returns 修改结果 + */ + async changePassword(oldPassword: string, newPassword: string): Promise { + try { + const response = await this.request.post('/api/user/changePassword', { + oldPassword, + newPassword + }) + return response.code === 200 || response.code === 0 + } catch (error) { + console.error('修改密码接口异常:', error) + return false + } + } +} \ No newline at end of file diff --git a/Web/src/stores/app.ts b/Web/src/stores/app.ts new file mode 100644 index 0000000..40eb1da --- /dev/null +++ b/Web/src/stores/app.ts @@ -0,0 +1,216 @@ +/** + * 应用状态仓库 + * 管理全局应用状态,如主题、加载态、配置等 + */ +import { defineStore } from 'pinia' + +// 主题类型 +export type ThemeMode = 'light' | 'dark' | 'auto' + +// 语言类型 +export type Locale = 'zh-CN' | 'en-US' + +// 应用配置 +export interface IAppConfig { + theme: ThemeMode + locale: Locale + sidebarCollapsed: boolean + showDebug: boolean +} + +// localStorage key +const STORAGE_KEY = 'app-config-store' + +export const useAppStore = defineStore('app', { + // 1. 原始状态 + state: () => ({ + // 主题模式 + theme: 'light' as ThemeMode, + // 当前语言 + locale: 'zh-CN' as Locale, + // 侧边栏是否收起 + sidebarCollapsed: false, + // 是否显示调试信息 + showDebug: false, + // 全局加载态 + isLoading: false, + // 加载提示文字 + loadingText: '', + // 设备类型 + device: 'desktop' as 'desktop' | 'mobile' | 'tablet', + // 浏览器是否在线 + isOnline: true, + // 屏幕宽度 + screenWidth: 0, + // 屏幕高度 + screenHeight: 0 + }), + + // 2. 只读计算属性 + getters: { + // 判断是否为浅色主题 + isLightTheme: (state) => state.theme === 'light', + + // 判断是否为深色主题 + isDarkTheme: (state) => state.theme === 'dark', + + // 判断是否为移动端 + isMobile: (state) => state.device === 'mobile', + + // 判断是否为平板 + isTablet: (state) => state.device === 'tablet', + + // 判断是否为桌面端 + isDesktop: (state) => state.device === 'desktop', + + // 获取主题class + themeClass: (state) => `theme-${state.theme}`, + + // 判断是否有加载态 + hasLoading: (state) => state.isLoading + }, + + // 3. 状态修改入口 + actions: { + // 设置主题 + setTheme(theme: ThemeMode) { + this.theme = theme + this.syncToLocalStorage() + // 应用主题到html元素 + if (typeof document !== 'undefined') { + document.documentElement.setAttribute('data-theme', theme) + } + }, + + // 切换主题 + toggleTheme() { + this.theme = this.theme === 'light' ? 'dark' : 'light' + this.syncToLocalStorage() + if (typeof document !== 'undefined') { + document.documentElement.setAttribute('data-theme', this.theme) + } + }, + + // 设置语言 + setLocale(locale: Locale) { + this.locale = locale + this.syncToLocalStorage() + }, + + // 切换侧边栏收起状态 + toggleSidebar() { + this.sidebarCollapsed = !this.sidebarCollapsed + this.syncToLocalStorage() + }, + + // 设置侧边栏收起状态 + setSidebarCollapsed(collapsed: boolean) { + this.sidebarCollapsed = collapsed + this.syncToLocalStorage() + }, + + // 设置调试模式 + setShowDebug(show: boolean) { + this.showDebug = show + this.syncToLocalStorage() + }, + + // 开始加载 + startLoading(text: string = '加载中...') { + this.isLoading = true + this.loadingText = text + }, + + // 结束加载 + endLoading() { + this.isLoading = false + this.loadingText = '' + }, + + // 设置设备类型 + setDevice(device: 'desktop' | 'mobile' | 'tablet') { + this.device = device + }, + + // 设置网络状态 + setOnlineStatus(isOnline: boolean) { + this.isOnline = isOnline + }, + + // 更新屏幕尺寸 + updateScreenSize(width: number, height: number) { + this.screenWidth = width + this.screenHeight = height + + // 根据宽度自动判断设备类型 + if (width < 768) { + this.device = 'mobile' + } else if (width < 1024) { + this.device = 'tablet' + } else { + this.device = 'desktop' + } + }, + + // 初始化应用配置 + initConfig(config: Partial) { + if (config.theme) this.setTheme(config.theme) + if (config.locale) this.setLocale(config.locale) + if (config.sidebarCollapsed !== undefined) this.setSidebarCollapsed(config.sidebarCollapsed) + if (config.showDebug !== undefined) this.setShowDebug(config.showDebug) + }, + + // 重置所有状态 + reset() { + this.theme = 'light' + this.locale = 'zh-CN' + this.sidebarCollapsed = false + this.showDebug = false + this.isLoading = false + this.loadingText = '' + this.clearLocalStorage() + }, + + // 同步到localStorage + syncToLocalStorage() { + if (typeof localStorage !== 'undefined') { + const data = { + theme: this.theme, + locale: this.locale, + sidebarCollapsed: this.sidebarCollapsed, + showDebug: this.showDebug + } + localStorage.setItem(STORAGE_KEY, JSON.stringify(data)) + } + }, + + // 从localStorage恢复 + restoreFromLocalStorage() { + if (typeof localStorage !== 'undefined') { + const stored = localStorage.getItem(STORAGE_KEY) + if (stored) { + try { + const data = JSON.parse(stored) + this.theme = data.theme || 'light' + this.locale = data.locale || 'zh-CN' + this.sidebarCollapsed = data.sidebarCollapsed || false + this.showDebug = data.showDebug || false + // 应用主题 + if (typeof document !== 'undefined') { + document.documentElement.setAttribute('data-theme', this.theme) + } + } catch (e) { + console.error('恢复应用配置失败:', e) + } + } + } + }, + + // 清除localStorage + clearLocalStorage() { + if (typeof localStorage !== 'undefined') { + localStorage.removeItem(STORAGE_KEY) + } + } + } +}) \ No newline at end of file diff --git a/Web/src/stores/user.ts b/Web/src/stores/user.ts new file mode 100644 index 0000000..54b494c --- /dev/null +++ b/Web/src/stores/user.ts @@ -0,0 +1,106 @@ +/** + * 用户状态仓库 + * 管理用户登录信息、Token等核心状态 + */ +import { defineStore } from 'pinia' +import type { IUserInfo } from '~/types/user' + +// 仓库命名规范:use+业务域+Store +export const useUserStore = defineStore('user', { + // 1. 原始状态:仅存基础数据,不做任何计算、判断 + state: () => ({ + userInfo: null as IUserInfo | null, + token: '', + isLoading: false as boolean + }), + + // 2. 只读计算属性:封装派生逻辑,全局只读 + getters: { + // 判断是否登录 + isLogin: (state) => !!state.token, + + // 获取用户ID + userId: (state) => state.userInfo?.id ?? 0, + + // 格式化用户昵称 + userNickname: (state) => state.userInfo?.nickname || state.userInfo?.username || '未知用户', + + // 获取用户头像 + userAvatar: (state) => state.userInfo?.avatar || '', + + // 获取用户角色 + userRole: (state) => state.userInfo?.role || 'user' + }, + + // 3. 唯一状态修改入口:所有状态变更必须走actions + actions: { + // 设置用户信息与Token + setUserInfo(data: IUserInfo, token: string) { + this.userInfo = data + this.token = token + this.isLoading = false + // 同步到localStorage + this.syncToLocalStorage() + }, + + // 仅更新Token + setToken(token: string) { + this.token = token + this.syncToLocalStorage() + }, + + // 退出登录:清空用户状态 + clearUserInfo() { + this.userInfo = null + this.token = '' + this.isLoading = false + this.clearLocalStorage() + }, + + // 设置登录加载态 + setLoginLoading(loading: boolean) { + this.isLoading = loading + }, + + // 更新用户信息(部分更新) + updateUserInfo(partialData: Partial) { + if (this.userInfo) { + this.userInfo = { ...this.userInfo, ...partialData } + this.syncToLocalStorage() + } + }, + + // 同步到localStorage + syncToLocalStorage() { + if (typeof localStorage !== 'undefined') { + localStorage.setItem('user-auth-store', JSON.stringify({ + token: this.token, + userInfo: this.userInfo + })) + } + }, + + // 从localStorage恢复 + restoreFromLocalStorage() { + if (typeof localStorage !== 'undefined') { + const stored = localStorage.getItem('user-auth-store') + if (stored) { + try { + const data = JSON.parse(stored) + this.token = data.token || '' + this.userInfo = data.userInfo || null + } catch (e) { + console.error('恢复用户状态失败:', e) + } + } + } + }, + + // 清除localStorage + clearLocalStorage() { + if (typeof localStorage !== 'undefined') { + localStorage.removeItem('user-auth-store') + } + } + } +}) \ No newline at end of file diff --git a/Web/src/types/api.ts b/Web/src/types/api.ts new file mode 100644 index 0000000..aa3f3ec --- /dev/null +++ b/Web/src/types/api.ts @@ -0,0 +1,54 @@ +/** + * API服务相关类型定义 + */ + +import type { IUserInfo } from './user' +import type { ICommonResponse, IPageParams, IDictItem } from './common' + +// 用户登录请求参数 +export type ILoginParams = { + username: string + password: string +} + +// 用户登录响应体 +export type ILoginResponse = ICommonResponse<{ + token: string + userInfo: IUserInfo +}> + +// 获取用户信息响应体 +export type IGetUserInfoResponse = ICommonResponse + +// 退出登录响应体 +export type ILogoutResponse = ICommonResponse + +// 字典查询请求参数 +export type IDictParams = { + type: string +} + +// 字典查询响应体 +export type IDictResponse = ICommonResponse + +// 文件上传请求参数 +export type IUploadParams = FormData + +// 请求配置选项 +export interface IRequestConfig { + timeout?: number + headers?: Record + baseURL?: string +} + +// 请求拦截器 +export interface IRequestInterceptor { + onFulfilled?: (config: any) => any + onRejected?: (error: any) => any +} + +// 响应拦截器 +export interface IResponseInterceptor { + onFulfilled?: (response: any) => any + onRejected?: (error: any) => any +} \ No newline at end of file diff --git a/Web/src/types/common.ts b/Web/src/types/common.ts new file mode 100644 index 0000000..8e5e9ea --- /dev/null +++ b/Web/src/types/common.ts @@ -0,0 +1,63 @@ +/** + * 通用类型定义 + */ + +// 分页请求参数 +export interface IPageParams { + page: number + pageSize: number + keyword?: string +} + +// 分页响应数据 +export interface IPageData { + list: T[] + total: number + page: number + pageSize: number +} + +// 分页响应体 +export interface IPageResponse { + code: number + message: string + data: IPageData +} + +// 通用响应体 +export interface ICommonResponse { + code: number + message: string + data?: T +} + +// 字典项 +export interface IDictItem { + label: string + value: string | number +} + +// 字典响应 +export interface IDictResponse { + code: number + message: string + data: IDictItem[] +} + +// 文件上传响应 +export interface IUploadResponse { + code: number + message: string + data: { + url: string + filename: string + } +} + +// 文件信息 +export interface IFileInfo { + name: string + url: string + size: number + type: string +} \ No newline at end of file diff --git a/Web/src/types/user.ts b/Web/src/types/user.ts new file mode 100644 index 0000000..63f488d --- /dev/null +++ b/Web/src/types/user.ts @@ -0,0 +1,39 @@ +/** + * 用户相关类型定义 + */ + +export interface IUserInfo { + id: number + username: string + nickname: string + avatar?: string + email?: string + phone?: string + role?: string + createTime?: number +} + +export interface ILoginParams { + username: string + password: string +} + +export interface ILoginResponse { + code: number + message: string + data: { + token: string + userInfo: IUserInfo + } +} + +export interface IGetUserInfoResponse { + code: number + message: string + data: IUserInfo +} + +export interface ILogoutResponse { + code: number + message: string +} \ No newline at end of file diff --git a/Web/src/utils/base64.ts b/Web/src/utils/base64.ts new file mode 100644 index 0000000..69b5a1b --- /dev/null +++ b/Web/src/utils/base64.ts @@ -0,0 +1,44 @@ +/** + * Base64 编解码工具(底层基础工具) + */ + +/** + * Base64编码 + * @param str 要编码的字符串 + * @returns 编码后的Base64字符串 + */ +export function encode(str: string): string { + return btoa(encodeURIComponent(str)) +} + +/** + * Base64解码 + * @param base64 要解码的Base64字符串 + * @returns 解码后的原始字符串 + */ +export function decode(base64: string): string { + return decodeURIComponent(atob(base64)) +} + +/** + * URL安全的Base64编码 + * @param str 要编码的字符串 + * @returns 编码后的Base64字符串 + */ +export function encodeURLSafe(str: string): string { + return encode(str).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '') +} + +/** + * URL安全的Base64解码 + * @param base64 要解码的Base64字符串 + * @returns 解码后的原始字符串 + */ +export function decodeURLSafe(base64: string): string { + let str = base64.replace(/-/g, '+').replace(/_/g, '/') + // 补齐等号 + while (str.length % 4) { + str += '=' + } + return decode(str) +} \ No newline at end of file diff --git a/Web/src/utils/regex.ts b/Web/src/utils/regex.ts new file mode 100644 index 0000000..f0a3bc4 --- /dev/null +++ b/Web/src/utils/regex.ts @@ -0,0 +1,141 @@ +/** + * 正则校验工具(底层基础工具) + */ + +// 常用正则表达式 +export const Regexp = { + // 手机号(中国大陆) + phone: /^1[3-9]\d{9}$/, + + // 邮箱 + email: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/, + + // 身份证号(中国大陆) + idCard: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/, + + // URL + url: /^https?:\/\/([\w.-]+\.)+[\w.-]+(\/[\w.-]*)*(\?[\w=&.-]*)?$/, + + // IP地址 + ip: /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/, + + // 邮政编码(中国大陆) + postalCode: /^[1-9]\d{5}$/, + + // 用户名(字母开头,允许字母数字下划线) + username: /^[a-zA-Z][a-zA-Z0-9_]{3,15}$/, + + // 密码(8-20位,包含字母和数字) + password: /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,20}$/, + + // 强密码(8-20位,包含大小写字母和数字) + strongPassword: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,20}$/, + + // 金额(正数,最多两位小数) + amount: /^[0-9]+(\.[0-9]{1,2})?$/, + + // 中文名(2-10个中文字符) + chineseName: /^[\u4e00-\u9fa5]{2,10}$/, + + // QQ号 + qq: /^[1-9]\d{4,10}$/, + + // 微信号 + wechat: /^[a-zA-Z][a-zA-Z0-9_-]{5,19}$/, + + // 银行卡号(16或19位数字) + bankCard: /^\d{16}|\d{19}$/, + + // 座机电话(中国大陆) + landline: /^(0\d{2,3}-?)?\d{7,8}$/, + + // 车牌号(中国大陆) + carPlate: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-Z0-9]{4,5}[A-Z0-9挂学警港澳]$/, + + // 整数 + integer: /^-?\d+$/, + + // 正整数 + positiveInteger: /^[1-9]\d*$/, + + // 负整数 + negativeInteger: /^-[1-9]\d*$/, + + // 浮点数 + float: /^-?\d+(\.\d+)?$/, + + // 正浮点数 + positiveFloat: /^[1-9]\d*(\.\d+)?$|^0\.\d+$/, + + // 颜色值(hex) + hexColor: /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/, + + // 日期格式(yyyy-mm-dd) + date: /^\d{4}-\d{2}-\d{2}$/, + + // 时间格式(HH:mm:ss) + time: /^([01]\d|2[0-3]):([0-5]\d):([0-5]\d)$/, + + // 日期时间格式(yyyy-mm-dd HH:mm:ss) + dateTime: /^\d{4}-\d{2}-\d{2} ([01]\d|2[0-3]):([0-5]\d):([0-5]\d)$/, + + // IPv6地址(简化) + ipv6: /^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$/, + + // Mac地址 + mac: /^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$/, + + // 端口号 + port: /^([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/, + + // 16进制颜色 + hex: /^[0-9A-Fa-f]+$/ +} + +/** + * 校验字符串是否符合指定正则表达式 + * @param value 要校验的值 + * @param pattern 正则表达式 + * @returns boolean 是否匹配 + */ +export function test(value: string, pattern: RegExp): boolean { + if (!value) return false + return pattern.test(value) +} + +/** + * 从字符串中提取匹配的内容 + * @param str 要匹配的字符串 + * @param pattern 正则表达式 + * @param group 分组索引(可选) + * @returns 匹配的结果数组 + */ +export function match(str: string, pattern: RegExp, group?: number): string | string[] | null { + const result = str.match(pattern) + if (!result) return null + if (group !== undefined) { + return result[group] || null + } + return result +} + +/** + * 替换字符串中匹配的内容 + * @param str 要处理的字符串 + * @param pattern 正则表达式 + * @param replacement 替换内容 + * @returns 替换后的字符串 + */ +export function replace(str: string, pattern: RegExp, replacement: string): string { + return str.replace(pattern, replacement) +} + +/** + * 分割字符串 + * @param str 要处理的字符串 + * @param pattern 正则表达式 + * @returns 分割后的字符串数组 + */ +export function split(str: string, pattern: RegExp | string): string[] { + return str.split(pattern) +} \ No newline at end of file diff --git a/Web/tsconfig.json b/Web/tsconfig.json new file mode 100644 index 0000000..eb97e3f --- /dev/null +++ b/Web/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "./.nuxt/tsconfig.json" +} \ No newline at end of file