From ee452efa6ae646834b8346cae17e9dc03d78280c Mon Sep 17 00:00:00 2001 From: clawd Date: Wed, 18 Feb 2026 09:55:39 +0000 Subject: [PATCH] feat: stabilization + recipe edit/create UI --- .gitignore | 5 + Gehirnanatomie-Zusammenfassung.pdf | Bin 0 -> 44498 bytes .../01KHPTHD73XRVXTKRMFMAWAPA9/hero.webp | Bin 0 -> 110 bytes .../hero_thumb.webp | Bin 0 -> 106 bytes .../01KHPW02KFYAZN8Z8R0ZA6MQST/hero.webp | Bin 0 -> 97060 bytes .../hero_thumb.webp | Bin 0 -> 24586 bytes .../01KHPW02KZQ9A19V49F192HNKB/hero.webp | Bin 0 -> 69946 bytes .../hero_thumb.webp | Bin 0 -> 23138 bytes .../01KHPW02MFRCZ1EMDZX2YEMPWR/hero.webp | Bin 0 -> 58006 bytes .../hero_thumb.webp | Bin 0 -> 18298 bytes backend/data/recipes.db | Bin 0 -> 4096 bytes backend/data/recipes.db-shm | Bin 0 -> 32768 bytes backend/data/recipes.db-wal | Bin 0 -> 1219552 bytes backend/package-lock.json | 2561 +++++ backend/package.json | 32 + backend/src/app.ts | 43 + backend/src/db/connection.ts | 24 + backend/src/db/migrate.ts | 35 + backend/src/db/migrations/001_initial.sql | 136 + backend/src/index.ts | 18 + backend/src/routes/bot.ts | 43 + backend/src/routes/categories.ts | 15 + backend/src/routes/health.ts | 7 + backend/src/routes/images.ts | 40 + backend/src/routes/notes.ts | 34 + backend/src/routes/recipes.ts | 59 + backend/src/routes/shopping.ts | 41 + backend/src/routes/tags.ts | 15 + backend/src/schemas/note.schema.ts | 5 + backend/src/schemas/recipe.schema.ts | 31 + backend/src/schemas/shopping.schema.ts | 7 + backend/src/services/image.service.ts | 51 + backend/src/services/note.service.ts | 26 + backend/src/services/recipe.service.ts | 197 + backend/src/services/shopping.service.ts | 64 + backend/src/services/tag.service.ts | 26 + backend/tsconfig.json | 18 + features/DATA-MODEL.md | 366 + features/DESIGN-CONCEPT.md | 344 + features/LESSONS-FROM-WERK.md | 27 + features/TECH-STACK.md | 418 + frontend/.gitignore | 24 + frontend/README.md | 73 + frontend/eslint.config.js | 23 + frontend/index.html | 13 + frontend/package-lock.json | 8320 +++++++++++++++++ frontend/package.json | 39 + frontend/src/App.tsx | 26 + frontend/src/api/categories.ts | 6 + frontend/src/api/client.ts | 17 + frontend/src/api/recipes.ts | 74 + frontend/src/api/shopping.ts | 45 + frontend/src/api/types.ts | 62 + frontend/src/components/ErrorBoundary.tsx | 45 + frontend/src/components/layout/AppShell.tsx | 13 + frontend/src/components/layout/BottomNav.tsx | 33 + frontend/src/components/recipe/RecipeCard.tsx | 58 + .../src/components/recipe/RecipeCardSmall.tsx | 34 + frontend/src/components/ui/Badge.tsx | 20 + frontend/src/components/ui/Button.tsx | 22 + frontend/src/components/ui/EmptyState.tsx | 15 + frontend/src/components/ui/Skeleton.tsx | 15 + frontend/src/main.tsx | 24 + frontend/src/pages/HomePage.tsx | 71 + frontend/src/pages/PlaceholderPage.tsx | 9 + frontend/src/pages/RecipeFormPage.tsx | 486 + frontend/src/pages/RecipePage.tsx | 193 + frontend/src/pages/SearchPage.tsx | 62 + frontend/src/pages/ShoppingPage.tsx | 281 + frontend/src/styles/globals.css | 32 + frontend/tsconfig.app.json | 28 + frontend/tsconfig.json | 7 + frontend/tsconfig.node.json | 26 + frontend/vite.config.ts | 34 + gehirn_pdf.py | 242 + 75 files changed, 15160 insertions(+) create mode 100644 .gitignore create mode 100644 Gehirnanatomie-Zusammenfassung.pdf create mode 100644 backend/data/images/recipes/01KHPTHD73XRVXTKRMFMAWAPA9/hero.webp create mode 100644 backend/data/images/recipes/01KHPTHD73XRVXTKRMFMAWAPA9/hero_thumb.webp create mode 100644 backend/data/images/recipes/01KHPW02KFYAZN8Z8R0ZA6MQST/hero.webp create mode 100644 backend/data/images/recipes/01KHPW02KFYAZN8Z8R0ZA6MQST/hero_thumb.webp create mode 100644 backend/data/images/recipes/01KHPW02KZQ9A19V49F192HNKB/hero.webp create mode 100644 backend/data/images/recipes/01KHPW02KZQ9A19V49F192HNKB/hero_thumb.webp create mode 100644 backend/data/images/recipes/01KHPW02MFRCZ1EMDZX2YEMPWR/hero.webp create mode 100644 backend/data/images/recipes/01KHPW02MFRCZ1EMDZX2YEMPWR/hero_thumb.webp create mode 100644 backend/data/recipes.db create mode 100644 backend/data/recipes.db-shm create mode 100644 backend/data/recipes.db-wal create mode 100644 backend/package-lock.json create mode 100644 backend/package.json create mode 100644 backend/src/app.ts create mode 100644 backend/src/db/connection.ts create mode 100644 backend/src/db/migrate.ts create mode 100644 backend/src/db/migrations/001_initial.sql create mode 100644 backend/src/index.ts create mode 100644 backend/src/routes/bot.ts create mode 100644 backend/src/routes/categories.ts create mode 100644 backend/src/routes/health.ts create mode 100644 backend/src/routes/images.ts create mode 100644 backend/src/routes/notes.ts create mode 100644 backend/src/routes/recipes.ts create mode 100644 backend/src/routes/shopping.ts create mode 100644 backend/src/routes/tags.ts create mode 100644 backend/src/schemas/note.schema.ts create mode 100644 backend/src/schemas/recipe.schema.ts create mode 100644 backend/src/schemas/shopping.schema.ts create mode 100644 backend/src/services/image.service.ts create mode 100644 backend/src/services/note.service.ts create mode 100644 backend/src/services/recipe.service.ts create mode 100644 backend/src/services/shopping.service.ts create mode 100644 backend/src/services/tag.service.ts create mode 100644 backend/tsconfig.json create mode 100644 features/DATA-MODEL.md create mode 100644 features/DESIGN-CONCEPT.md create mode 100644 features/LESSONS-FROM-WERK.md create mode 100644 features/TECH-STACK.md create mode 100644 frontend/.gitignore create mode 100644 frontend/README.md create mode 100644 frontend/eslint.config.js create mode 100644 frontend/index.html create mode 100644 frontend/package-lock.json create mode 100644 frontend/package.json create mode 100644 frontend/src/App.tsx create mode 100644 frontend/src/api/categories.ts create mode 100644 frontend/src/api/client.ts create mode 100644 frontend/src/api/recipes.ts create mode 100644 frontend/src/api/shopping.ts create mode 100644 frontend/src/api/types.ts create mode 100644 frontend/src/components/ErrorBoundary.tsx create mode 100644 frontend/src/components/layout/AppShell.tsx create mode 100644 frontend/src/components/layout/BottomNav.tsx create mode 100644 frontend/src/components/recipe/RecipeCard.tsx create mode 100644 frontend/src/components/recipe/RecipeCardSmall.tsx create mode 100644 frontend/src/components/ui/Badge.tsx create mode 100644 frontend/src/components/ui/Button.tsx create mode 100644 frontend/src/components/ui/EmptyState.tsx create mode 100644 frontend/src/components/ui/Skeleton.tsx create mode 100644 frontend/src/main.tsx create mode 100644 frontend/src/pages/HomePage.tsx create mode 100644 frontend/src/pages/PlaceholderPage.tsx create mode 100644 frontend/src/pages/RecipeFormPage.tsx create mode 100644 frontend/src/pages/RecipePage.tsx create mode 100644 frontend/src/pages/SearchPage.tsx create mode 100644 frontend/src/pages/ShoppingPage.tsx create mode 100644 frontend/src/styles/globals.css create mode 100644 frontend/tsconfig.app.json create mode 100644 frontend/tsconfig.json create mode 100644 frontend/tsconfig.node.json create mode 100644 frontend/vite.config.ts create mode 100644 gehirn_pdf.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6bc31b4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +node_modules/ +dist/ +*.db +data/ +.env diff --git a/Gehirnanatomie-Zusammenfassung.pdf b/Gehirnanatomie-Zusammenfassung.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ef49eb52caef02a983482d574c6d06c4934a9b76 GIT binary patch literal 44498 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 z

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 Vdi$)7UY4XM1j;TYrDd$m{$F>@=*<8C literal 0 HcmV?d00001 diff --git a/backend/data/images/recipes/01KHPTHD73XRVXTKRMFMAWAPA9/hero.webp b/backend/data/images/recipes/01KHPTHD73XRVXTKRMFMAWAPA9/hero.webp new file mode 100644 index 0000000000000000000000000000000000000000..5366e53f308a4b309ff81a8f04fa911812dae2e4 GIT binary patch literal 110 zcmWIYbaP8%U| GWdHyR{Vl=( literal 0 HcmV?d00001 diff --git a/backend/data/images/recipes/01KHPW02KFYAZN8Z8R0ZA6MQST/hero.webp b/backend/data/images/recipes/01KHPW02KFYAZN8Z8R0ZA6MQST/hero.webp new file mode 100644 index 0000000000000000000000000000000000000000..c784cf2e5080eb23fb5d8ef862c786bc5e9beba1 GIT binary patch literal 97060 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


7L+K?{g$Y@~^?U=N@-}|Jpo)P+~G;KT17@x>NA- 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 NDaZsGjU4a*0066lSoi<{ literal 0 HcmV?d00001 diff --git a/backend/data/images/recipes/01KHPW02MFRCZ1EMDZX2YEMPWR/hero.webp b/backend/data/images/recipes/01KHPW02MFRCZ1EMDZX2YEMPWR/hero.webp new file mode 100644 index 0000000000000000000000000000000000000000..a6536cae6c59d02a0e3113ea5916a5bed48124bf GIT binary patch literal 58006 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

u3^K%%wXa9}|=2QCYkfApzp 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 literal 0 HcmV?d00001 diff --git a/backend/data/images/recipes/01KHPW02MFRCZ1EMDZX2YEMPWR/hero_thumb.webp b/backend/data/images/recipes/01KHPW02MFRCZ1EMDZX2YEMPWR/hero_thumb.webp new file mode 100644 index 0000000000000000000000000000000000000000..1992d1d435ca343b6c776cd8eacddd79086d79a1 GIT binary patch literal 18298 zcmV(nK=Qv*Nk&F;M*sj>O z^A7lh;lhP6!^VzEy4zVTr6qJ$@Buvgk<*M#z@m39cF8+(j@V6EK zlf^1v7Ei86{ynrHn>Uzrr4irLXPMu5>j?I`HFAG{o(Od0vwLU)snDCt1`a{Uixn1x z7{Jh$I^1U;FDr8!nb}H;OiWL@RDz*&p{NEt5vH4;_pBHqOQ@+!jabKvy9Fn;hK-P2 z9ILL&WEHDx8PYZ{*|Y7{_7-%?)p)!ILJToyLUOuc(JeVs2#pc5@!W)+h!gRo zGMJQ`W*G)p7(gaa(0v9%ZzC6477$XY;p^fdqy9)rj0TP)2M_^{N!^$MOq5q%9(|k8 zIvem~gg+FbNdJVVY>>Qzwj2>Xsm^hI(?a6apao%>vkL2jip2eLJm7Ocu-|D7eJ7-* zI5m161y7a0K2w0+e!YDTQc(QJh(f5VuW8Sv1(fDw(|AKAdS9`vIgLzR>o(-alxFN} zmo><;nO-!CIxmu7efet~8;!w^=h!AOm}H*eVpbguTfD#H*)^R)mKy$Yoa4}< zohR_X^jVFlQB-o=d*~m}04424nZHx{KuVaxQL<05=!?cHE_^+CD*_L z|9HfBj(l6*^-RazQq)(Oq!;Fa;FCW6G)mG9HDRD^8!TCPn4gBx_~gSSaG=0yzjiQS zSeW9zr^8w^p{xXp^Y~%pd%chB2XVQMEnY}~n`=(UC~lyjBrhVztP+x4?*wQ-(VACToiU2hwk{|r-RdYD_R5w%??#oIQJlltyr8`8gcl>GpA#&S^)sYjGnVW zBvT%_&}EI|1zIbFG+P9qizzaMQ838h__Hf3Vu@d?`oMNs?V|cALMj2!FpT=O+(_`< zA2Us)jfI;H4U0Q|Rns1QH}u!ctFm`FFhuR_VJihEv=F=~`T75lxZ4e*`aQ6pw>tl} zpYUqDDeGv!yT6;2VTcmrsMIgFh(=pgUut*|D|5k3NrbCn2;XBQ<&D4OLzOtD zq2*tWT?kSQuJLuCMOBGxA0&i+l7sf@<8?D?S;@uJxy+`-XO7_I!Y}kzUNHVKXp-x7 z10dUbtkw^oLo9j*WxiC-z;{JR8<)Sor2;y;zgeOJm*|xc>$eE8YDmtJYOL99=WvH7 ztRM~1a{iq9NEi7jUty2MVX^@vCY37JtNrH9?NPn*CX0SXY@uX-Zo>5`#X4(0}b@VTRn)`rNP6l;_A1bw;r-ax*rW zZ$ZmvepH(+aop`%?Vg@BP9=}x*wDN|Uu6zcHUf}J7;-$3)s>B{|1N{_dvXqhWN%xn z-c@gV`T-s`)awMgUB+$O3)S`QgicLYixzW>v=E?Re$kl}vODe&nt!ynVd9#rfQ7%j zbY9(1&eJ$2A}s|O`@Qu(f#`k{m)3rFrt0LYNVXaOQ2f4mlUEEZ)0;Uu_n(Z5Pq=zz#oj$A?z#?$G zad|NaJ~IM%2E=e|7pUHtL=w|B7%b252KC$DL1|ZLoE3RFpE+a7vKznrdl7XIyyf#B z6QLMN=d^1q5)oTE^9xsmRHx!J)Tuclpzx=!0&oN8n%W`sFa)3Gz&_!++P~)TM1b|P z!-`;Bf?n$C7ys)M{xCj(XUejUp(-Cpa^p`XBejn_H~{|h*YIM7XXz`{exE+v=ggVy zDSiE02DY(3xf3PH{5IYr?ix?5YQ+aJ@_zlD0}RgWn_@xMDDVoO_VR+ciQ4@ZVZ1c((%vBhA{_rT zUlLCDIe~5n#Sb0V%pH^{rHs(EAFkmh&#fEymiV*wm8X$xDrca27c(=-r~0Yzc8dIU ztDm4IZ(j!1dsa8UeKO<#Pi!n3Zctd1a|l-R|4M2YA#vTv-O;M&oib?O24t_YTO|;G z`0b8M1(Y`bCI~8hP&Js;?`C>Xkz4V&#h-I?9a1x43QM7I!=p(wXJ{M7s!JTe*2bN@ zlmNFiV$zYAvt|Ie7>3^CW03-lZDCJHUV3Jn;IpwM`iF13zTB;!-wgkAG9Jn47}5Y~ zT3;i;kqx6J)+8%wZVl$w4AgFb;1Q#I=*L1_{re!d^?>mgS5A7Xdi}4)EhxUjw$0VY z8$SkEcKo_{E5g_6T=;BT4}-g*g?bafJH|nT2?J8(wza)GrL8>pTW-s@${yR|tr)KlsQLQwK z4qOCW@QWRh6cq@fZGI`G5oUZ6|35}$T!SRMe_gg$9VI_@pYsB$UmIw7`LvTPUO)8Y zax}KJm+Jj-s-ZZ-Ud*U~^AM=%l&wR?;J&0Eh_b1epe;xB7M{1~2{gcytrm%HzD=Gw zCUr;p-4qGhP(D~SoeKWy%OX6!-iLlMS*GnDKf*MT3f0#WbAHu1svIWtkyO0@cR|Xf z&zVwURWCG)!=qo0w#oxC*|x%{!EHY4c2y?{fZ|%w9>fkY3m{D|r&*|zXKA2nFx$Y+ zx~2HszsrI}727BCa5dz_voyrpNj{w^@ftbde{ulnkue09w8exNd^P3{)Uq5#$TfT# z9uSdvsZdNAd=xyfWxqZI@b}2yx%;D{rx{ldxe_wL(o9EIyP8AV3tg08Mls`g+FQ_c zp1?3wY9ry>!xexXf7Cf*AWy*heY@P4^XR=S2z-aO=RbRp^G85{OK~4Z@ZrP*E#%{! zmVbv`apj|~Uhc6NC^k3l9u;F`E18~Ean_W+QQ^B_hluv^Z}@qXkj;+TgBrT-oNt;! zsUL8bT(hZy4uKV^916pl7aJNZiR)q!WH~!pZKf(v7d$zLWI)2w z@MKuO$^dW{wE#*{(Wwi&bUJg@sod(~P#w?py&Jmx-$;AcJ3X7@Kxy{w@F1E_klW8I z<8kO?-M-3pV$EaLdG?OsA*}RSm|n(#-O&d>+zt^Oh_Es~K}-<$Om^)>4s@@K8YUdzFosPN=4Kyh)u4aoaLRk=;tnzZh4XOQ zkL@6Ukv@Qgxc^iE4&S#YKUz^g->g6f_FO5jNedPK91kkhIW!{X_)n2am3IHPL3^l{ zX!6F4gNR|&V!U!&$n&e*%_5$j?^*AuLc|E+QU7rp+mUIyj!rhMN(HzJD56v4HB;_odqU)J+^-~TfFgw9kfX_QJ>sD zre?5>UoE|ISyd8b!9Y=tJH@C(%1-tmM#Xe`Rj1uP99k1^ni3swPA*`p@=0(&E6^yh z#^y@rJ1o}juPg{i!xp6XB!k5@v}2&HY8f8l$y=9sa9OPU+*9i`u$H>_Y$`{Dq%|8K zssycWiWd!@c-Jp`6e?UIAxy@HfW0O6b<~0CC8MxfrSQQt#7yc=MC=4pu_p{k!lCZWagB1F9R@>V+gTI}I z7Yiidm-G!JT-u9nj{Vy=-x0P`1-e4oPFrcy)&W0F6hd-&v_wK9#4MOd{d$Bj3ti!A z+rKSgQ~Sxt$yI(owkg7}Uv!J!1}X^cpX%BsWYnV^Ec<4P>{D?9K9@U|*IRjm^bf+} ziYC!f7MiyI@iXpZTy|oJii6d1iS~U)*9Y#2ffZ{E0vt7zK@DxC_lY67&wmn@tmPy} zo`LNLJ1Uoecf?`JYJB#)$Q$IVFy<@ZbI?!}qL|u4+kxOTvj{XbzKaI9j|KLi{w$~~ z%+6g2zO>8xsElzvpU*jJ2rWZ4o%>m^lfpJtsH?X>QmaqqJcP%|!(_Wf$tP!z4tKd! z^JNzr#P)MD=hw-n!3|;F>H1HELfhcDgXf>Cv&ZO6_O00c5DVu#aGot722zde@o5zzu^j;E}Pn{AHJix+7@b> z*OcunC>T$fxzo$hp1JBB|GXx(z|v7(Np_uJVInND4bi6;5!c)H1J9)*iyq?TX5i8xz+QaZg6AvU49$mP#D}mxTj-A!QM~guSBLVM&OYa(5S>2~n;cgbT@F<9ki=p#5#ZfMAT@&9|a z%+_pp2sKAB{yGyU{l2U)q=`1HG8v@s*(p2pb43!Y6g&5za8-`6%TsPGyG;6z*kwv^ zs}bsqw0=;cFz)k@@bymz2UO)U9tFSGl;m@^zZ3yH25|^EO4g8JRro6R8?{N3Wy2iF zqU7jwnrDmbe`N~Fd==#`%S5d-_;%XrU1OB;yWo=>ic=IeE##y+s!I2>Md`5J+=6$i z-o2PB;m_r6LfH}4hh_b>j8(XL}Ti z9K^M>NLyjPJ8)n#qNp}iAIv1OL0+);1u+w%Lul{;$wnzLFb=aN;?&A1Lc8 z!gIkD_R?@bBQh&Yti8#PGT2wgre}>|zZm1Ude|C=j9Vg85nyB*SP|s0XApXOl5yCP z@3J+gI#Ps6R26IK@yG>lxqo?p>YW3Lo?qc z9nPAvf?cHWVjejkjx`0CtZsIQMO3V)u56 z<3QeV^se<`Z%gGp;;s)7b?C~H{B)uh?91Xi=wRoHk>Kxau|Kn_?R^Va4%K69bgGsf zGz*QR#-xmpwNz|i660LP;WNILAfGGA2mUNiZTP=*9i2I*tpl-_5$xcjYU@s%njU&; zS3L~)gWrNTs@0@1@Un$c$1=GNk;IZkH~e~K0>Xm~h|V1-4bN%@?;ge&hou(cZC{yomCcWOY0t>jq~xXY zy8)>Vy^zb^5BED3c((*(7M;n&y`2U!*t*g;m9xst+|G6<{V!0$2uy(J>@<9-f|%FB z(>QOhKX8F&O!*vAuku6uUh$rw%Eoe^BfnA*pp{LK2e7&JD1rGT{a4id1`tpGODAj> zzo#r{I1`}rJ(9fRS`!u-x&v%`6H=n2*SdTMqS>*%uZYJ^c_g9(8e$uRFQN|3>2Pzk z8`^2vDGaHEiE}Md!@q^}c!?w0H>3ej9{OCaNtUg+DR+c3s9nom#IQ$ld%WPO?LP0p!Mei~vDW?mU|Z$0o* zO@U_CgLU{Eqlh((e9~d%M=g&N?7cq}<1X@dAM+*vX||=;Rn2&RDzducz^5Bgw&-~B z#bRd6`>fky>5N{HvQIeZsW>oJir}vm>f8x@_d3Bji-W1soix}dG>Z1!U#=hUMr2lj ziytnQC@U9r?vX=<*y$9uiR)WF_l-Q3>9GeJu?7xl^(vQRBd^#X42TY!*U10-rg;V&Bza(KEe>473sw4H;Q|BlFz*T zVl*Xkt4w1G5l+z6zhvK!DQ~^#oe*!bM8^#sEPl>UY^~D<$V*H;fr|Ev2C;5DTGrH+ znm`ETDer_MT?g)~qY>;MYl-6R4P__Zhjr7-RivV_b#T9dcb2L2+x&EP)0`zzo_rTc z{WLy{bI(rtIN(__>nW27JN93I64;J^kVB6EstXT52t`*AHUd_g#9c0EA+L#!0OKnq^WERuo}G=LuVVOn^?St#DI{vAPFdPxw)q0E6CJqoPdEd+ZwDWlXB}r#0Y$R{% zFy_BuOAenajqq!W7ReLH4a@WG+Z6J(tRDWkU zX&t6h^p0gM{)KNUys%#%PbNyGE;w$?MMxEvc+ka60?YG^55HuS|8RafI;13^pfoQ1_UerryuSrfw`@W*!l>k+<3E>z`|PRnw}e} zJxFLU`ac3t$;5SQti1W2D-@3B#RC>Ol_@f$^NL+nRufhwg&Q`p!fI8v2xv$i>q!W7 z_n7S6SS=?PbHQw~B@5z(Qk@kF>5E zn3;7M_L5eU%D%O*o&#<=EF{%a^*dEw{Mg34;VNgNzPmWav4d8@MkdbOlv1qG&~Dpo zp)T0b5bK?%9>I>QC!mH#e9JwKQe%D8-upwL$e1o$xw+V5PFsjN^UTO_Y?TQ1cmw|= zD1IXtf%ki`40h~yN#fw4bu)|U7Yx4|hdt@OOKxE}WWq^_TtSETeK0mFw)6yOwu5}v zx4f)<&>6~y3fxXfr2ha41RB@3X^@!@scp-bV)yTB_Z&qTf)V_A2JX@m?V2nen!_B; ztJgamppNB8-to}dds}oF+cGhW2noACY)X^r_jT*U7Y9k+wTK;KM1=jU+glP)HU0dv zGm#-iH~{dd7eizRu@UUITOha8p#=TmjHuK}O)Mn&7{}H+SxV3%ffxW|D4Za06!l(E z$pBp+Gi%ThZr!tc3m%1NooMzVFebP88i@zsO|ouXEMOUc zNQWCftV5oh&&5|W)AbIOMiZ+~9{(l-0c=VL(XvR@pNME!8IH9zK#O7|7dqxd|BiJD zl&rPSwl6gZQO&a1(y2j2B5}_!YLM(w^BW@Ve+dge)wWe)PRsdJ-=Ap04XtO=*&${##yWgNq zWPsr_4m~ zlAJh)FArH(OLqOxlUmUYKtZ?pv_4hwm@D8KH_*Y?veq zi7{^9%QC9AU|-9uk0u?9VStyFH6!BdDn7L%Hpm%lO0R#zlL&vWDbWRbU1tv6GZDZ= z+3BKe$c2Ur#8|pK@KY}_u)?YhL5cqI+zwkH%{!;6<%EA?%_e-0)!9%uDZMG&{o;laF4}GFyS3ArA-j)nIXf5Bp{|Lu`o_^<$Mo zJhH}+fDUK0RI1I!q@gY0X#3Sx;-m3%X1hHpEs~Z6kCLBgWr+o9p!5W$n|m|@Eo^B+ z{u|zu);MzWik~|JK_O2F|4m--Jepyv=V8knRVB*H`zsoYGPC+(gkTZQX%=r4y@oy# zMI1bdbsiRVh^ShmnXP%hmCX~t4=byy@-*||DrAa>T7JY4Mz{YIXC36`LpB2*oWKXY zaQ~lp#5=B@ZmvN3_V)EWa3|8vwIEHN-oXZui$lHGb@_3AsFgE%%(>4!ub=4QN(c;f zHh$)_KhveB(Pvjtr|db8~19Ot^H@T4Bl`?r2?K05?4x*CvN99jKSL;?GSa0UV?`@gt&;1VuVK#enBj0l&bm)%4k*1E# z-c`e6DYS1!xWgf-fm`Lj&kcsurM5+m9?D8bl=5n}fBQ&A!@l>HcR1fO@GH8(#ptC0 zrNxyd8`GGSeVPUcvZzK>^C)oqj}gTXBvWy#7(&JXAGf9UU zL-XrlL^Yym^+{txPlm4#+2(!JW{~RyC9V&Rj@`_M*w?L>2u=qdkg?WE5V(8<2cMB@ zHVDWYb6T@h#FF23gD`-PAmhZW^%fy=FJ*MM-qF5MjrjK0Sn5CEaA=oD5UyqQM$rcx z))(!sbwdSDq1{Le04jm^QzLj@I>DaF*y(E?BpM!xv`@*40)IE&`%6k*asI(A7T#-a zUgDM7wFaz=RFUqwH7W+gA+!p6U#3v}d;uiRqI}&3AQbgZuAcoGG4a@D#jM> zw!_xKj7TeZ#;&KRTt1OxWu@|&4Ych^gf}u9GrBKiplDen@ExTK{b4$!gzOEne>a3! z2w;z#Qma~qLspaCYy+5}I0xDWe$VByi;OtyoI2a;-NS2OGm z=MlSyaa?=;Q8xIP@{2pc6|PO45D4*rVmOd=TUp-0hk`o=QDbReaz^h;p{QbcZW2Bt zEW{eJivtcwp4;UJ@)*u*7(xq1lv-M`=1cVV4x>4k_q~_u{ItYV*q?3p{~b+VS>7V3 zpa`~45ZL;5e~jbH)a0R#+wkBi4$dFsmh~gh(T`6+$z=;?_?ms=EN)o&)^B=h_AB{R z-PphuB-&(_BK7jAd-fM@C72ycvpqMkqT9S0K>HBO}^S4>&Iy6G+Kwe=a*{jZMcmy}# zB!!b~Qqv{U$+!M_`2|IwQiU{tDS_0ilYLrw3XT4ST<8Nwf#@QNJeRaw*4i!_E0e0GY!G9}>_5|oV$LxU! zi+E9rzX2wz6<+$Kp%VupLX=RBUq1$ywVu+JqfF_QpF!gbGcGbxxO2s$0N;BeLv)~d zyym2kyJQypfTpCJ14p$y)b7MY>BCI{%*0SX7pqb$_Jce97`UuFvmv^2nQH7O^0Om% zLi|9GZmpBAXlr`1cG@lCk*Y7!K0+z5p#vIgG;2ZfgVs%}h_O2L{3)55(>#U>Ie=C7 zpO6%~HppLH0ndRZA;?u23PUSx721;3nqR~{*=mfi_W3Z@S|>F@^>X3x$tQ_SivJ?@ zJp9XT%a1GbSxSyWv_jlmz0>XN4w@>c*B>%w#nt&>(jm8r!+&ZJdT+Ywf2*O;{=(=PmrDzTR z|B$ap305m~iMQd#ImTUED!e{gEoAJ$rM3qt^s$QN2_y4CZ8GM<^ zpXa9}^2CG{Y!ilsm(>Ly5yG(}wIP@zDS;L$_ylL7-HUzDo*?Pn!Ov5;s9fO4l@mD^ zR9jQOs(8$61(fGR9-{<P1N6YJ4BiWSMI8JcWpcm>1wh>J-BbW1FiX_lI_P4n_*t za2;3<&&ZU=Q}xj)R+LYSo+#<$w@mE?lP1MJr!qR3J+rk&NJ>aph_~MMH)im0SB^d| zoLV&xs&Sc8fPUH&BxL?g6V`~ejbX##r^(Yvjdn2-Kutocqg_T1Xa-@fk(!${wM_jv z&%-q;t*x`qAMPlmVv!YN>b%&dfiR1G^@_l8`7ECSVmI|k41Q)@HsufoU#u6}oOzmH;jLI!TkT9&^*)2VsYJ}SlDyd+=r_QWLj(U4gq00F*^ZvX;b>uF z--Go}BN$Le!MO~D+4bn6OZ*yxM=}+U7gr6o6^49d<6r0SQl-cgjP~x3z%`BDY-Jy6 zCh~qln5YXudnFzxZVr<7uC#Xond6xtHd2ZThx=e!Z;0?}sHM^YkxsSv4xhJ<=f8_% zn-J@_PPb(@yYnGbWJ<%1zz5d-dSF(x<$bv8AdlGw6H|rG4+Bf^sA$@$h>aj%L;5w-&hyYxFDD;yA}q?`90u z)>M6E4aXl%+_D{dl~2bIEJoe^H-!`n7O76ifR8CL7Q7f;Tra#TbO64E)NW8<3MM7y z4_WRw71r)Nvy!s1!<&eP$pD2ns)b|&tgO%AW9yBj!6D&f;&ixcMpk_yT`N(snoPb` zvjtSlDo*C{A!TZWUa^{~)sIrj)_!lx*iai*vG-~~c}1QMD~?c6ZRUP^vFOt<}Q##b>(9Y~T|<)B@j`YdT*7{Xlt z#+a1duKt(#Jv3RpC-h;;g_+;~d5bam+>hcA*oT_u{ZltP3hrKzJ^4)_gtdZsaSQ^^ z9EXF@+ay8`pj|&xjSEv|3Ub~M)%o>=ygcojT8JHzhdjVHIDPe~Vz(}H*JZK117oHC zF)FK}3Gnkav4fErp6z*@r*ro){0>{&={hf5vJx?JSW3suWDa#vA&A?^+2@=FW znkzl8nB%4eKE~e&)62G5;G2AD<9o^MA~N|@4gKnaavdy#(n*R7a=U`;bNfL>7!oj) zs|7|f#0v=C&n!W^a!za60#4i>e@?O%0d+>#VR_z6}r7J;>1gi5+FkoEX0FMh)X$oyqo)2zsT~6 zu#B+Jz^3Y=V66AP!fE}cUC}O;;h`{@z;kOZp}YfZ2F|5>7hIZhm^44vTb$F&l{^TX^|8b3uf_67%qb9gxcXDLDZ$0$_~C8E^A=uplz5<9%^W`8Sfl^4<)! zXn`*gX$o^V`f%HO{IC9y{+fMg?X^%bCNDjeVHF$F4yLM*T65`{8ehzl%=KGul^1kj!)fC68F^d9_i2pRvdsAeS z-&}7Eq^ss2K=${Hyv>BBy-k@zq!Te|&JR1gS6SNx9lQ6z$hrn3d%#dEbV~6OyzRfq znqG7Y)W*}N>Bjt^Od23cTF%`2h!%&>koZ=w*eO9OiPA4ZAyv!9r8o6b_mX7@s%6>R z?P~tSJd2Zj5)Mo9;&*oD30_okvh}eL=0|Z~mY4C!SpcM|5$OGl!=^fT?7!yTkvttAB^mG9?&(8*SGr+mXj#rVW*cE^~ zuGlC3J|q6BVn#=!Zr9yL>zlx0W3&G zvJ=9S1}#8jPq1PLK4bcH~ z0%YE3K1%0vZhUWbtVnr&3rK#!-u#&kJ4uGi(|5_X)xaXv*uqd~brTI*samq^;5vK= z1l4)QT$`Y=IoWtI^D=cpnjZg%EyqBV_7DPnbNwBvq=^Z9zy%E%lwOi?waO6g8dyYt zr$zr_y__t^k5Y!R8WaZ}Br+LO3`_gdJGBFLQDo7Q1tW^*ekGw6uW0j8W8vxn-(w7* z9%bKKh)CAAR<7Pv(U+>jXjM~+yDTtRP9@NtI1xHDCRo_y6ea&l-A6hsRpk}K4$*sD zY~)7B79_4g5h_Nj@D7u|LoOWh^I$drBZ&VJ#XfRt_R+GSwCpu*UYo|3dcyhqo)hhl zJOGoQP*W(?)hS-QaPZ4MZV>y^J0onrd0R$`;AcI+Sq83;C8UBFDXqYd8C3n!@{s{q z(|x>noHx=JMSH&A1pUu5rCjt~=D;q8OcVo9j}Kqwe1a0jwo|8t$eux;ZJmgw zHo>^;nQI5UkUdDB%y^V-uAAw*G?WLDS0R`C9&M1fZODfp#(Z+_CHaEk<52RqCIZ>Q zOeP*S6T-}eVLW)1rj^9yo(3h3t(8;KQ~q|+Te*KE63JeDsLY&PCcYfv!xblPIh+L@#S&y zk=K$G3wcJnmopJkreKa~_$cnkgm12sy2?eo^B>I{XK1%Z>IMEwa&T7n;p# zo?gUV#tAo5npA!eI0)c35Zf}DpHwFUF9bM_8dHp(&jP=9Ec&pTNd>uA>0_29N(mE; zcYj%*EnLjiJYgH$ww%U+_Q6+)m>d2i8bg8w?LWS&^IGJXf`688_y z0L(5M^FISI*rw^Mn$V)65E;cmr}2y!y4I-^^25`XpUeSU{{)8bf_DfwqZ>hqCwls+ zo4O~}0Xj9qQMXSDPf0-N2^xsdrV0~Aa0t?AsNei(3Q~RpT3x!8`-OR(9Z@4>m1!cB zI*Z>;y)?%9Ae-Phu(nP_RlI(p9&IcF#Ve4M>}#G-?#L%2B!V#l62@zq{=WVRsI~#M z7R{UNKixh52@tBOHBM4UKul~5&<5a%b3`FIx*QX85vrADu(<+?-8GB}hJG04EF4(F zrSwaHImA*_^L&k&n$g54GAhQ@C*SgJRXz{=bB==u?8}zkDOuZz<2Qh^0Ih1R0}#en z(a)lC!Sr;q*&Oj&u2{$h=lfg8)DIDHZ1DI+{-=y=+|AV7_DS*=47Eo#o6p+>p&IE> z{gb3`6nHXO*7V)C%s0UMYe>3%e)`AX<<{$Hl>R~XWX+U+jG9H6s(Fd!oXG6mO3#S7 zs8FBlqgTRgSEUj5!<6p$<&T0GnC)w|q3j5}X6p01&eo4gwgZF2`975h$w@hY`(s@A z(NrGJ3}Tx2B&Q1r9_;$e^*j0>l7rPWlbKLL@({d$tmR_q!T1BLpz@*Q=AJ2XmdK_? zizg0RV*N4bH2kze21egm(ffN0@uB0*Gt}xEcugIG4md#8da|CKBt0eztof&p0WA%S(646JXc>7H{Z^!fM|513M7o#YG; z=4DfFGx(2Q&iu%OIk!io#yY{oXS67$Tcmlvy*LikuQlf5a;|Kx_Ah{;mwv6qry*jI ziKxHhgBQ4(PB=%h00Hsjiry2X#<-$mzT>?-cmNlTE`^L@LicFahDN?ki)*g)_dX&W zfYu`j#gPqo$B0|cTz)3ino;7%U8A=X)kfbU7oWCrryzu zT*b^z-9di5#(25vV-OKR^HLMU82@P7B_Z3`gmj=~0O)U+-j8Ehqej2}`t^@!i-vgx z1Q(GKhk&;S{@8o=o_8j?PD-lD-~ZZ62FuV6*SK&jMsAqCzBIe|3L(6J-!Wt<^D&7l zU$SdROOq!afeoQ;`FXHxJd2QKHC%WJzE}vxoyw9krljsb>(`Uz8<#x#Ypnf3J9pmb z$*(N}QcWq3z`2Vu6CFBTcWr4`4pH13wArFb<5C;m0q>bzgWBk-@n3UBmpit!yzrt{ zY;y^BWZ)U(#d2~4PdBO^^virX@4LxQ3eh3&l3;_dMxw@xHAZ(!Bx&U=q;?pdwSJdz zwo9ZVDm03_pDzCjyNjqqAxcoSceck#&k@&a%NQBEql{&H9D?1ZTxF~?sv-*jf^f3@ zLoa_`L81N>`I25Z&G0}U8`1LzJ!k^_xEhpOP=_ea`K&y5ul4Xzdwx5K_`+S?X_|94uJ{|cUA7)k_}36Sk>#TIp@N$_?#pRNI+^3dK5v9pY+WHevrL>h z8zb>U@wauLb#r~>N&7R{9l;W93-+9vr42OJrfWyS(dp-^rON0>MYw|AYCb8ZvB zpSX|q>jCU(dMkCEYfq%qvz1!Z0TJ>`CzUm0j)w)@jtzDCh!brL1d)=INGs5g*E$<= z{Th9ER;Zf}3gl5PkhfKp?U}AeXB4RFcQ~uJ@uQM`W3s8Gp(@0Ow4m5b)>LlI;=$}y z5M)p${(oWnOOnE(4dE<$Fn$qa1^xwEtX+FI5Ev~+>kvVLqoJ8$y#`MMn{~|w+atfj##OU zlO6awuYytA40aqW0nn<0JuNB%8K3_}Gg?11&q9_2nF++5ehnEB?_sqls>a7tSe?JU zD4iI|?*2`ECfRWzhg~k{eU^CG=i`JTyQht?)>HSHHs3e{t@dQ~b|g6jtIgH-_j{}Z z3v@^d?zoPf^R^t^cbyw#qNv8WRDN!CpZu<#7b^$rBSp`ZR(YD{(Fv#~4i|_pvn3dd z^5TeSh7^~sE}yIM>{f9B<034Vd^E(wF7 zhnms=k;1mSJCQw#(r@5QiYJ6c;i9pzL`xG2`SU|K8Y)v%TGVl!femNS=IDw{Xrvg>z1C#8qTVU*the2_#JZM6*z2$K_6XU)M~ zdELXY@CHamuU-7Gz6jEEI=#ekQ=$r(8)0h}w`wnE5sDOY#l0wGiyLP-)34wD$0ue- z2UeM=)Z26d^aOE^nsN*nd*VrbeVA`d!n6ZUGadCnEy=EbjSa=rbulu17;*8;+On+;XN{RU)u-_gxeICsDv=KA7yBk$P9NlG#(dQI< zf_5e<05$XGX=#5`jjzI%1?ICQRSZZ}%Hs@)@_f&4uGzPEKQ^3q6TJL$O?FJk6i^=v z2myki=9y^fO}7X9R|(w85c(HV1tI7-8&M`V+gnDGv37~J&d$IO&?oja4|5+0Zmj

ZsFIfYeSuNDEgk(Xt~oAFebwZ z`+Ot^h{}OPecgPy3Np!d87%vnUo4j2q+O%hkp{#wB9zpmrSHyfjZadER$annSd|VZ z{S`uI0Wp(N#`sYHTyMALgT5d?E@*_2o+WW@x1S zZQ|Ab7@dg3zWp=kxq|GbuB>*Yi^Y}@orS>sd#KQHvSs0x4P1`$?@lAWZsU0jh3sd%=#-V(#I2{{>?~1 zMkyScBL!V>OD$$?J)|iBlaW@eTp0YMGXcO$U-K00M`FlSo|q=3wHmZp2c5P0;Hv;9 zibGFHwfUiN!sh~YCn+DYG~5*-+JpNyDTMEvtUn_hejMHf5V_K=Tm@|)f29fgAgT(~ zYngPdy$>NLcuIXeA;DkGXn349vFQ%2be?5c!I8oG~pGbRup;Lm^M=m251WfB-3{ zGx}%M89-uwDaAfXv7Cr*Gya*n<<1n>1GaZ942?JbN+CbC^iS?Z6&D2n&q;1hJa8M> zH{TSSUG6ES?Q98Vf4a%AmC{~u;Eg~eez%B_e!@$?X3@&iylwikHFn{h9&K)tv71v4 zNezvVXC@RF$x)WWq-h4%Kl1aEsX!=rK zCBU;|2XJ4mmEUcD4~5Dbi0Lt3A&g%$G~NjZODlSGmzKl0gv)Fs_TgI!WV&w)56s^Q z4G+ewkH@jen4jh}@e@^CA=dQ6&`l^Id0S!I-bfJ|`a2DA$$}RH0ttpo@yiFNEV-bD zlhZl8s2hC3+n$Y6YlZ9EzYUxN&}SQDsZoQaZVG}PXsfZu5$+{P?O+|by?u^2fK7Z! z=FI~VeSK8f;GdP7lUDv#A!EVe=qJMzN%hM#DEbZ#q8nmQ1HJ?=#*95&`QivkYSIBK ze~hoQ@fk>{4RU|FQs?yycUZLSxCCpLrzKex2V2$S(f>l~)3OBN>C!`b9h|~xwe;%- zHao(eXgT$B{dq+&5akhus3DYJr&W`ag#HG<@b*fXSG4NVG(n{=)6@J+jT_n26|Av7 zE4sp(OOSAqmkQwm8D}mA3M|91bZ~Hu^U8V5%YQx}UN1@pT;1ob{=Qh6ZU8^Xgz#$- ze2IehR{qYX^WDgS4#%GhwY$!YA87LTi|M=ZlU=teJS-^}g})`7u4GqhFt|&zJ)#D< zGYh`{Wwpr-0~vUNEh{aH5XuXXfmYkvt-$0XO`MKjHmufb^s;n zrr|Ea+sKwt*stY13CDBbGEc*y@!A^Hlp%YDh5C0qA~Jq#OA#7j@+gIh}k%4e*m?*nlenh0Js5P9hy+O^k2!t*^I-8;$+oSdq2U|U zWcsS4q$eVqfU$Xf#?}ALI_E)jPR;21%&HAa(Nc5%_%EGyy-2f zHOc*5GMM7I;e z$Sm>rZA>?b)Qq&;s<{GmN8lC?xP%D++qZbl1Ci+$i8Jfq0-~TQciT$T6m_1BZxi{3 z><|s0rgYrc)B|JHfR4Rvr??LWa&qTmhsV;-EJCI zKgfvAF+=sz{o=KO5kruX_M{GHO*&pYQ+F7-nuWr@_P>jn6V*4eW*?8db(*btJ@|az zo9~^%*X4|$iovyGfVxAagnE*qI-4Bc(_8o$P*syo+*>=@ro;H{u;4H~@K3p@kS$7% Jrf3z8KmZEaUA6!K literal 0 HcmV?d00001 diff --git a/backend/data/recipes.db b/backend/data/recipes.db new file mode 100644 index 0000000000000000000000000000000000000000..159e90adb13561c0365c22e76084c658383a62f1 GIT binary patch literal 4096 zcmWFz^vNtqRY=P(%1ta$FlG>7U}9o$P*7lCU|@t|AVoG{WYFvV#S79dK(-m98b?E5 nGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nC=3Arqf-Z% literal 0 HcmV?d00001 diff --git a/backend/data/recipes.db-shm b/backend/data/recipes.db-shm new file mode 100644 index 0000000000000000000000000000000000000000..d981ebd95eb6b4743e470a96653c4c18f72c2bf8 GIT binary patch literal 32768 zcmeI5cXU-n5Qo1_50DTbjr4>xRK(sZ7Qo)Sq9PXT9V;sK-my2V*elp8_JU%^ioN$< za8~clxhJ{)5q;;8clpgZlbPLn@6PNu`_9Qj|beZRJsa$9$HME;qD9Gmyzjn5(5G$$D6n$0uKH!U#j zJoeudn)Wj7ZQ94w&lQ;#oAwRHC1(2tet)wA0>9L3S>TtOtqA-|vjYRa%51f1jcIK# zS7)|9@Z)TQJ!>>=G96^^gIb@(A}I?mfD{ z23sf0+vntS@j3XoKAvAE`o4emZ*w94{~IqA>x8xSoWk0MHdSn*F}xoghq0nI^gHuQ zRX#m&o#@$#+jr;Zsi=LbI9N#~A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F z0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+A|L`HAOa#F0wN#+ zA|L`H&}{;ZoWsrB#_iqya&G&;Sx<>#>jzO`eGO`9ux<^l%**^Nz(Op+QY^!AtjNj? zXLZ(^+u&sAew#R#Teu@bvrlK*S*)ARaEg@%0?nMyg-qox?&01v#LL_e*{qkj$t&|% z0xev?Mcm2V+!y;?lOcf|)(>6Tgb-+B6g#sA2XPWt@&Hfr24C_kf0E_;xH{i%O!7B@ zJnI>^fmkGpKs#Hr3wv@fCvz1K@)U3K6~8f?Y**y!b^1H1op0R|H|!Y6NdkevY{RbX z#UY%+)jY)0yv5i2Zp|liT(N7=>F+3Vf%OU9sAD822?XXz!Y0zPheGSvx^Y?}DM-2q z%*Tjyh05?az9Y0GSpOy*hM;af^vlTLqZiTyncl4KEBjO{p#)47)C zc$e?!=LYHY$CkL1O&H7W?8DJq%>6vfOMJvH{DE`1u0qsesrBs1#d~&oJt(^}Hf3Lq z;SwIP3DmF!<2as4JjQE$Mxm<~sjiqZYGxhI<5s3*RL*lI**do508Zd? o9_MvFr7O&DP}H;&sAnq<00>qKRp8x;= literal 0 HcmV?d00001 diff --git a/backend/data/recipes.db-wal b/backend/data/recipes.db-wal new file mode 100644 index 0000000000000000000000000000000000000000..2329b5bde57c1309b16c875a43920d6ed676f078 GIT binary patch literal 1219552 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

|m*YTtS8G#Chtu2Ua}9}O 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�@-+h zVqF!v^#uyL7RWvF^j_6|fxDd_eBH9|-gS%IFYqgd{}un-g7yjz{}fB*y_009U< z00Izz00ba#{snlhmes^A=qy~VSrc49c5nsVNwr_#xi|OTYyREs>u4T<-tr{Ff00k| zjpPa@2tWV=5P$##AOHafKmY;|fWRUaXw#eAZXI9EnC0OC$*J|G&YtFu4qs=h!{Ke( zxzBefv!ozDfNdC~g8+I+O+q)j(#n`Jt2XU$bqzNi?6W&vI}fz^T`id<1&!zjQWH|5 zfrpG{NcLr|x-TR}plN8xJJ8eFIlODvaF4&Ize#SUSn>cF;ZPpxu#F5|C>@frH)Lg( zePCZxe`njFR-e;PavZu!H$w(Aq=!Tv(v|dKRr>|La_9q>{`r4bn`pd%o_`BNst%sw zPm(K`AOHafKmY;|fB*y_009U<00Iy=I|4bG00rF@`rO6&9TB;82ManFa`OlZIu6JI zt)d5|_6vOQ=fC{)$)80x%XJ5jGW?hLqn5v%ox?_}5P$##AOHafKmY;|fB*y_0D z;N^@Y0AM@INaxiDhW*2xJ4c-Mot{>w^N_b^sA=D>%#se5vvZ)`(K+IFwfQ}reO|7q zS?G(z(kU?}91eyi#8@Lan$Nk}Zbs9dr{6bxz~|XPq7n{`4DIx(?YVX2uFY$eRsAG> zq1o;0+_|Ik(2j$<+WOpW14Hu3{$fP~TBW;dWoZ*NY7;cbKmY;|fB*y_009U< z00Iy=KLVL}fubE3ns|X?oeR0~0tFohkjbvguW(QekRi#~94^OAlTOMRKyiVG@tc)RBtd3*#w2U50wy)r=%sSdM!|L@6xz}t1wp*30hsn|{W_vO?nu?5x39`zv(0F_z z9u0=Yn9?SzujEC>YL{B#IEEa8(vtmVrI}H(Y@4PTBUz(JOJ)k7=lN%uRhLPv>2wU4 zMO(Aqw4kQ!CrWHac#G|UN!|kkL0_Tc=sqmpBJBywGGs@{z>5qCILP)3-1wc(wYUau z4byl51OHQoe}#X6e};d8e}vq?1OW&@00Izz00bZa0SG_<0uX?}Vh}Ls*-F-+lP=2S z3%z{7$rn0ZnciH<>d3*Yrw63Q3;g@f@2~jUx(9mY`U1~0{LB3Fi{XH=j}U+W1Rwwb z2tWV=5P$##AOHaf%tfG#gbgfXNjwI*pxpwDK>w)y0m}rv2@_$xVs3$k7%IuS5v_3sqzFbXI z(9EaV2`km)hX%4fZ?s>RCM5UUQh0zAdg@ZnVIPqaEyHa zp8~4>PZzv@|R>1kiR66z(VT|N_7a;eu1Aoz53+8>=16I@d7&jj|~4R`GW}p z5P$##AOHafKmY;|fB*y_0D;9Su%6p%wmVwgZ9N{ZU71KP0U64HW6b2Bw$cMr`vumR ze)i07-M8E;_Y3@r;eW+Hw^$Dx`wamIKmY;|fB*y_009U<00I!W=mmJLmer02Y2j+k zbYRCuc~C~;b15}a`vpGoM)%Dh|HHnwAzt93f93!H0uX=z1Rwwb2tWV=5P$##mac%F zGtqbf6O9+Bqlc;X3q*f@n0vwZ!7FLMfS!K~!#~EK;!lz*m>>WF2tWV=5P$##AOHaf zKmY;|I6DFxIX7!}^mO(6yV`fUhJ8cB{vKanN1ywkyWicSpLsEtUEJ2(;cW4>wC-|t zwL4ut_sBr2L$`r*lQaU_c(KLgfau5tHnm^i6Q79wPy2m8zCw-{IHmLpoSnl)s}O(y z1Rwwb2tWV=5P$##AOHaf%r21m;Xg3!AMS8DI|tewog;2no8Qyf=hgHJ6zf%(yVComwSH1K|-CyW<1Umiz!{0&vV1fVyAOHafKmY;|fB*y_009UU`b_!1C6%NN0u3f_{ zX>_a7C^_xl>G1S>TAO>C<5)a-GOlnw|O5XTcjv{=jbT~{>iBnM@s2d4H5jQ*K> z`^tvbuhGT}%x)D~AL{7q_qKGp`+D5|mX1SdIvOGK zE#-j8Dh0&=i?lq%=0ehz`**eNYqdN3J4bdNa<%!r66A~XYnMErYstS%-NAQ!<0n^g z|Nh`f8ZS`Bk23rz{xSX}Kgz#lz7IXthX4d1009U<00Izz00bZa0SG`q7SNv3FYFj8 z%Uzt`zoE}AZfh>=q~NrR3%en5$0I1{OCbA~6EAR2qH*=}e?IWvG+w}9*{q2dAU7~U z00Izz00bZa0SG_<0uX?}MJTY_kb45XtKGfN(e8EjH}^F6jSLUBxH~+>PM}ML^bs$x z$l?Wd-R*9={

rtty>zEcw~KyF}y00bZa0SG_<0uX=z1Rwwb2tc5iK=zz{v2GJX z&fTs z%d~j}oya4=y8#3s009U<00Izz00bZa0SG{#gg{QBKtcJ1+42ZTqnD_ICb(VsaSvy^ z?jTJW$c$6?iN>if|9QNoiO$qne#`K;kw2Iq009U<00Izz00bZa0SG_<0!u+)dXsLM zyS7#ynvYF0CRb+o#GS5T-_WqX$Jf`<=RWA}cehAs2ovehxEKr45fA07lVUiMp44xT zOa{lq zw2LWnwJ~QGbK91NQ7kfxJgn>JL%a3PdyjWNbo=}7O8n5_`j-_CRayENv!#OJPg^SZ zyZNL1<(AWyPg*7|moJ4U0*(O!5P$##AOHafKmY;|fB*!F2y80nm@Yb>H5wTs%d$F_ z$ZD%9?V2CVI!>pz+{_5AQVRwHL$=6oVa*3hZ>}So zKgeu&owRvb8AI+fXY&p3QMSF3tg*&umwyAZI*!%T-^480zJj+h>*$^_tX|KM{mwRE zyH(kGm@M65wkLz5smPd^Age43jmIbA(O_7NDQ&X)N?v5FcBv(fV+exMlKp0-nNhNA zo2D6Jqbt&qnG))G{#j<#Wm0Q89Ybc(*6cSes44r25}Oh3VtZhc_rO3NvlTjy?!)pe z(w?v^Lw1BE*K6o)wO`=&`>Wpc;^F%rq~j47`G*+(75)YO8U6|W5&oy-CMF0#00Izz z00bZa0SG_<0uX=z1TJ6!gPyHqjXLSVAYYWp7kc@ElP`3-GQGKy)saJ4PyS`bBe;I* z`k!9*yU|Zdc?A6P4F59ug9!oqMi<-Ca!Djvms*k6mK0l7TN>FrwuNQcmF0zOZ&5;MJ{tIQ z32A8aJ>;VcUueVkr93I+YxbcnrY)DIK>2{SPs#U(mM?h%AtmrHm!|apo->j>y4XM< zX+qxFXJ<5XX5KmHcg~Eg_q-Pym<jjOKP5A9R7-Pvb#e>yQ2DNcrp zp{!nvjAo{D`7`H?TD82iT-VN&>Koc>xvoVGqh?gsS_MOEP%s1qL-V{KX>4p(&l($A zqPBH$d858{abe|@R+=}eXE(HSYqfc}x?DG^r?l0z+LBS-&|pExiCa`uV^7((nAkSyL~tCD1Q} zUf`SmNe#!_A^{|T1dsp{Kmter2_OL^fCP{L5>e7rI(Kcha4lTFMy9mAJ$zwD+LkY@Zq& z4WtUe*^KTFj7`V#fpEK|C-I@2tFQ3nhjEeD<#4MmFpnRcnVHO`lgUCTR7k@hF?%rI zcZUDtOT|rSQY}WBO={K#P7dg~iQrT+R*Yu-dC0q%GHcUM4EZ*15O3%oJ^ zNcC$s-}P-~FW^!?)$}8vw^N0lph>!@J^=@DK>|ns2_OL^fCP{L5Ih1^-(t%$Jr5%g0q zbovqWC=Q?-_pz>Q=>;zPm)n2)&$T-@nZ1C``-ng<(wo(}nq(n&p>iTP)y;+E29x>q^3qZ5%zC}NRxMRdYm-|SH#Uq@TC`LxRSnawp;%t6 zYiCR6H-{TeHc?L+$E;OKW^!?Vc62tF$>zc{>9L)wB#s*}HD1y9-Fa=cE<&(EZL+ig z;SbAI?JR^POhZh=3fNTCO4Su@qi$3xaPY)xxq5b33u?JK3w>BUIoxow>3*g0a%)wl zM-$0HOfTq}Ow>P~+{OODYJG4DLL!1i!zrz4GQn%sHpF1{GT?u*QeuG=A<7~zU)ro| zo2x7UBZO)kj))GZ%;9ETm_lGAl1+|{CX1u9p;#so%b7jZ*M1>dVm1&_!bDu!62Y_r zdM265&PHRtL~%Bq3x#&J7sxOx6r&15nuVNf>jmDm^v4_0&)qV>>;-Ie(Xguv0p z=zX`qLS*6AbvXCEqCO%)p_ACn)O>75CU!H2pCsCdvRK=M^nKti&Wa?WwA1vleTQT> z)BLd=kvL!moTcq!dx}Krk|>LIGrb=>WG6Dq5-5q1=xpT;lthup>yYJ-o!}yFOKL!N z#3nnv?tuZXYWFH$x0(@-rFa`14gng}r;Ug15=qsCSx|@g+ky#i$0@u6gLE#cs zGl9sm0DZG9;N)AIR~Ml4N=4r&ErQvDQG-(k7M9mm)+!~iDQL8KHLw#& z*dsY06QwYCC9eq~0#t;+XD~R})(d>>_^bc!>B{%+VfF$}`U!!4pMHyeoqm-*O20@y z0|#(H0!RP}AOR$R1dsp{Kmter2_OL^fCOH61ne^L5U0pD4s&BSH#TzvN+foQWNt*! zCMzByLPK808q=~D7@Ik9$KPH$dXdE!km%P0`aSwIY;ZvWNB{{S0VIF~kN^@u0!RP} zAOR$R1YX<(Y+(8@AS*TzHU#W3V8he`g2q-Yy}-xz{O-WJzI~?Z^}baY@Lna*$Gum9 zoxq3a8|W*ki(a9AR()FiE%jP;U46*=7v5iF*W!W%kN^@u0!RP}AOR$R1dsp{_?ag# z3SI;?)=HwPg4(t!@A4v0n5jN-6PT1GUP9o!Qy*>`eZK~-z1ppp+PMr}qD*YdEX$#b znfkL#hb|E;&RyPr7e*@lR$i|FQnpRutqu!axAHyIyw5URd5uFi9TgOiY&WwUD$LxT z-9&-=iuDx*W{cf!MV%M?%pzVO9*+RE{^2(}b$@4zmfKkc?W{#Szo5Oer=81kd zagR%1Xk}h>!dZJ-t`5v_U$vXA4&YBA(^bLAoE!%4YhHZHlw8wtPAEdjm8K+s=z@TLP0s}IK(IH@C$dwe@9FEEaIoc_ z5Cl1U-MZy^R_{Je2zy&j2t9QgZ21{|ns2_OL^fCP{L5gV8XO5!7I%=xA#CXd{^En*dU^E~&%Be_3rO_u1^NvA4s38i0!RP}AOR$R z1dsp{Kmter2_OL^fCOGl1dd485#5)_-WX5i@;Am~Y2C6&pe2A*4wAqU6kNrc)zS+L zeEIIL{obXv+f2Q{mO#Hux9B%tOby4nA^{|T1dsp{Kmter2_OL^fCP{L5_m}wU>bn6 zR%Xf}maB4TwOk)+X2Yb?F=9<8sY=Hbme_H~Ov(tPu4c4adIA4cGavuI|Ni7tre5G_ z(_Y}|mlRKIED}HhNB{{S0VIF~kN^@u0!RP}Ac3D@0JU@zcg_5x03FL0bSwxt&c z-SFFA|A#xSdJoeJxYSPx5LaM}UZA(rMVh21sG>dr2XR3HNB{{S0VIF~kN^@u0!RP} zAOR%s!Xt2*6amZmbZTl=_oowck>X^i7|QC!$Y^Fdmv`-6tn6Ow+`ZVbd$E1@Vq3d7 zpBf(v6tXjgd^(#+WFoVXsYqDfy;#~Vj*TSz;cPe>@~6iAfox??LH@xnRZl)Ko(M5}1;Dy)WSR*8W1dsp{Kmter2_OL^fCP{L53KtHX*57!H@)B|mMfg?u_f8ot{G$2W)Ajn>uK;Nc5 z>HPtGzy%2)0VIF~kN^@u0!RP}AOR%svrM3IP9BVe!;RQ=`=OZ-qum(@v}c}+)8U9O zJQEBjd|`iTG9ArtU97E?A<4X<#mh!bi{cTe(aDOu&0loh@Xf=vN0!RP}AOR$R1dsp{Kmter2_OL^fCPR- z0+&c((%&RS{z>x@>|s@C=>`7rwuJ*%8QN{kkAS*21o|+o(;@Y7^WoB`!B+{}QPPSD-*h4n9f>C+ z;rMJSoZZEW{RVDwzF1jXSTU;FiK)$s7A=E8_DNe@<$@1e1;*N361Dlkpin zmYyv5vi`Y3c5de?33o3gYh?pW@tM_rO=}w7i%B;~C5QJ5WJu`x^al5^pS=y-8_COSTri;QOr?dtW|)#qCbK%y){tSI1Hoi^B$3D_ zqdwncaBL!5=(&mD zR5DhKX8m~xUzjp$(=Xs4`8ID7yu$Xf*H}w0@ZeW|XKU4QXNlPhP*rdH5l{uP5hUp% z%SWI-pq^26wW_|EU5N`4Kmter2_OL^fCP{L5C8uv?AD%i<|9aUD@8i<5%lOb zw&M==Rab2L5%A(}MT8~pU_S*zXWYRa#Q}`neQf-;^a6kWr|&QJ@#; z&Fa_Go4k*BBc8wW{JQ(Qa1a+HfCP{L5vPtItgrvSZPmC5v40x*0PN zWOIXnQe{KSt(T1@1DXmgp0AZy6B-JeEmsc#s+{{-40HuLEJtqSE`)XAm|^9LC88!i$J4I-gyJMx(1g*EWhE#0H0xR z1T1w)ru=#&oz%mbn15zE9@sYZ=&^s0BCA@4$NxL6HLVrc-A$v2vo#=nN`uM#dU@%n zc4oa^UaOWWr?ttgiyIrpDJ@#6mZ0Z3t73VzuAMEN-yCi@*+e~QK(N0yo@6qUi~F;q zv%yR@7oJIvwM%-cB#s*}HD1y9-8l<$fKQedmg{Wvv93=8mI{oxTB*9C0X`rChBT|? z>e*o}sO9P`^kMbnaKp`}`<2GatyP&GO(Y93y`X0@QU7>y7yARN^}#6!i3k=Ar`n^A zacUc4G@lABSt+qViqJE>=1ZG(ZF9BNhY=A5sM31;*f0K(NH#e(nk_q z{^Gw>zrySVTP;+^xy5*bDSiE_B)p1iKXn(1(|>er(wbG{Ud`^nc6`q`cnag4=UappSV@(g*3y zbXa{%eZRV@4tq16>VWDTP~F1Slf3m# zrvUBj-}=Vrea)udx(+A5SJX!&knALOGc_OEk%@htC-;*?o27lM2-@3D)5rE5lHE-6 z$9BYaBiNn-jgUlHw43Su*daTS*C2hMBub*Ql~7O;MIwU{!a6&_MckIufb57(c6!|d z176kcRlIIBBOFWdHaZ*vbZ4J79=eyePZCDqynP-oaV-1ZtUj9W^O=<#Lkq=jVRh= z#Y04B#>-e!TJ{1rhxP9a?fdR8vwQ?H{bzxGk3LPm1|M)i0!RP}AOR$R1dsp{Kmter z2_OL^fCOHY1Z=V-3`iaum_7{1icN$K0ecMCFtvc7u~kbiF#Eu5fB13X<*)R5uMq5> zm_Q$=m(vf^JLoGsv7P@h3Ai8uB!C2v01`j~NB{{S0VMDeCeWDu7`JT(#{oZJ*mCQo zcFsN**t*N>i$;Z6v^Ndt75J!tBY~MM&&f>Pnd^X?ona>BQ@}dhvt-Fo=z%iNGRt7s zOgm>2MZ1k>v$L~1uylbgIH%=J;DG5+W?{Yx$>qSj8g4GiEKr=C-Hb)Xvx^egy)!Fx zvA&{!MZf(#&;75Wr+=GKIg?bd~pljscU(dRiP%6;2NqMgWg^T$!z>F;M5~30U zr_!gy-vW;cNq7xhesvcYVq0!in^(ytg2lPZ`xnBI3cs7zD}bPFQ+P0}AH3K!B0m9V zcx`$Uo2*_dyo%pv8IE7$&`n1L#@Pat-$Y@J<}H@pZUwHhEnfX+O`*(d{HRy&=H6oJ zf%*;7r^x@Zwutvhs~59lyi{j6}3%ML-& zey`ru->h8Wz8nW0Y|3E6ZI4U0jwKmtc#unBhWo1Bbaj9M05uVu%*kQ!zUI|Uh-{27 zzY#F@f0SQnIZiGC@0rtZks!)@1$mHJ-Zy(h5QbV#1vf$Yal1axvV~Fr?BQNA&5=r> z7o_#g3I%+wLHZuyaFENB_6Sm29wZBFxfPs(QVLzjbB3y{UY{2ZFj#^p4ho`qi69(k z`4co5v>j)>W>faER)EjK0IUgI#MJ;4!W{Pc5gcV_w)6r6ANcqG_WxX3Qe58+-wskF1C3!_z}Qn4B~XaMkfxoIZ5nna|N-n&81{VKY}ZuxUCns z>WOCpv;XnTWz3I&()TgFz_;l)z-r(t^dIRLAi}^W>Bs0tz=Gg|^Z_Ww1qmPlB!C2v z01`j~NB{{S0VIF~kN^^R&I!m=5>!c6VNGN&UwdE;p%(dPFlvBO1=cbI>}2OS_}b2o z+xTbjC4l4LN&su{B!D&8v8XKWAdf@XvKRQx|MR;SKKJVVf5+ku%JgA@K107l{~kWz zf&`EN5RAvYR0mq7x=_KeENYmt;iKqFYu&kFYq*d@}2Smso(YB%zOX+vnU2!ki`CtWy}K8Cb}x2!6es2)#mP`Hl+}xo(adx% z@7lds*}d4gd$D8pV*BpJwsvtoH9i(7WM>NbbT*U7L}nvXk+8gbv9w(r8%g-X*>E)E zPmTKn*~nZj>JyJh5ry|yzF#p6UzWMxWJ@nFxNz5}&;HwcZ)bV|m-?x`dV!bNkjLgC z0VIF~kN^@u0!RP}AOR$R1dzasgFyTDabJ~1r(U2(qtU4s=qc{h3-lCs>IHg=e`LJ? zt9g$`V_PrKx7eZ==%-cq;d%jQ-FI0BW=DAX!Z&RQ2{=myV;(`Q_ z01`j~NB{{S0VIF~kibirK;t#G!N|~1D@RpV@V zbJgS5{i8#=f5So=jLeqB$IcJnMZWjBrvd^JLMH-A;cU|Ku-f%D~ zxAbi957aX)CwA=&II;6;M-AwX>W<#+Nn>LZdaR=vr?k?%Q9Zk%om;ET!_{SI%qeYk zt+r%TH#At4jjeYZ)nRR<)l_Y&W~}et-ac*XbEt7t9Ecn{CJ1~SZ?;?8cbY!3zGzg; zfobv2H^-HHZF#k{WNchpGZxD0ur(*-`~5DzcG;+{4ZqHqU+=7t&v!b|H5S>S@G7xX zal1qMPWI;^PJot%p=4AoAp@FK?7W>GIvpJAa|p(}%3f_Pdx1y3@RsY9Us4V*djT6= zwAc%b>f?_Zja8y?M_M zJb&c*CC^^>U%NNl*SH>ay~TCC@(tx}O4RuzT!0G_Kmter2_OL^fCPTp1hR*mkqDv3 zj)#~%*dflj* ze_S#{?WS=1)IMI9KSolMIfAiuw3%!dENNO(uD@Tv=Go8|5Y24SPW% zIlSK@F)=e8i|EP8@mM%I5=dnyca|vSxP>$`$7a&x$vsROwbn0@8Ol4; z_U|{Nc)`>j%>3zv(Re-|og7Jyj!k7FJGWH${!+$Rt}scn6a*=QuM*mwkS->C(}_TI zB%X|f*$^{>`3XY{F0>wfqIT7?l zMuXXzRti#1xHXqirfLG3f@WFzAGKSEP%x8k-oI zjb#0)>@EaF%b;^{Vq=!-CFjBu(edK=OmuuK7a7kM+STiE{LbHyTC0|qv^99sXp!Z$ zT6Lpb+g!K*g2JR8d4*MKAs0;+it&7UY9yXz&qphEUysyOse1O@TBTx|=xZky`8&tF zNj`njmU8ksTe~MY77fQI!;x^L5D13@x!}&y<81hpHcG2TRZcj#q)V;!j2AMonbGmk zR3;V}3FI@oNosb7G-C%j;$R2GR4hJH45bPqb0e{txkP$rIl|qml?;2Im`zNT7Mt%E zal!_23BAhF&B@6`Xe1sEjHfdBV0(K*QbD-;!kf}VinqZP;j=(&mDR5DhKX8m~x zUzjp$(=Xs4`8ID7d~NS#U)?RezybAv{2#A22ARFUA@AXBKLQ1^5hUqiGamuuB7lqp zZ}xsp9rQlrecC(g4SCOb4}0IqWZ{AYkN^@u0!RP}AOR$R1dsp{_?aNkVfx*pkv!B{ z+^t+Z*je1ICOptt+^zQ8-&x$PxZBrJ+@pot+gaSLR@>8A+^r=W>@4n9d<|HOd(~N8 z`3Sm|QeF87x|K~``3So8M_u^{x)nj4`3QQ{JDqU{lihln&bWg;ik8l}gUN2~NoU-_ zWVceJGwxuIZe!bzps%`O+mC=3cPk<+aR>V;7&_w)_9zbES>4B;*Op%3_dok{-}(4w z|LtFyy}(}ky9IiY-mHF2y~+ECH{$s_&#$|`>wcr_d#>0Vk2qiL_@LuBoQ4Y$ zKmter2_S*zgFwT^=OY_O1c9r**(_Z$IT6jwOeMzV65;9W_}DJfr%Dzg^Hj<#L{xLi zR9l0fN7~sMM1VS_EmcbOy0%e=;72TW&#*QLA+NNkQ7IezEMsL2rmG;Z(s0AcXEGZQ zvuL{>p=hRY7n|-PVN~%-LuVmPsqEYFU^h z(qKw#69Nd;AS%@&6je$PS*xmj<(9j65U-*5A`8KFw4ty`P|~={T9t{ZKyiF-Mo;AY zbLr{CRJ)QrVZj{n+6F{=(xNcSRpqgxS~K4)u2&1iDee60ctofcs+G0X^@;(sjB>So z)^NkaCQ(V_<<`2SQ+&GV8G6#!)sEOBy#?t20xW%}tIJW)d^eF<*Wvw{vxD&0acf z35ljHm)N}Qspie#PUZS}w!d`|=4h=aE}8MNTBE92<6$kpLxpK8(1Hro@inRgsyJ<} z;b8-U5ga4=Gw&84PyuAv;=`Vi~3c5jq6H=2T*!)3T(XVbl;ae2obCdS7hWmkSK zmX2g5q7yscL1Hu78jFuMZA)^N`*;NIdEvNnXxwvGk*NhDSv$`FekdNV9sdC=(797?h&}fr)-hi&I!KM8D zH^67u8v#pQk}1C)NhkGiCgz`+jt90)J$ft^q{yn4;qm`Y!>#34BZoumoo?!NcZ9dQZz01C+>umI~u1~X9D~z~Wsk#E+=8Om!(yW%N zXNR>Qyp~w#!|KW5hMP_IE7mWobaHw$ku1dYf}Y7l{o~19><_Hg2dChX0t<&z?NP_R z#@mJ%&8I?3!Z*0tGrZ59C zUtn(^qZ%bl#HG#7=4J!1DyvlrOweaN&IxScN23t%sxsGm}wph@)s^^98eevVlRsDofR@Mb0f7bJiLkN^@u z0!RP}AOR$R1dsp{c)kc&=j?m6L6`mdT0#Mwgt?aND$iS3-rw*~hULcd~*5P&93-svKI_(8|RA8O<0>y6aRHwZF zIIVQ5m^$qRirs3VE_;D)P0hBw0Mo(sXic{51$c3{Cc|Pc&`-J0X)h4$Rvf^Xy@ZY1 zmc78M=5BfSxxb{#Ue8IvSOBr)m3%aoAG4bx3Ft)K>|ns2_OL^ zfCP{L5NwGwG(M^v&M>@#Ia;%`D1%FBEcjy z`y>;`x|#2f?Ky~ZqnRp@?TVs}Cla)YqQh-T8pz5dSshS3F4d({m-o1EGS3^OC<4@d z$3`_W7n&`)?J_w3VM+JtG6?e!3Fds+Cz-exw$t*lBTmuAll{r8Wo$NHW-XJ5vRK=M zEPW8GJRzg8Z6p0K*2ljBqT)+vsoz zFh={d@zA}zeUdN==k4?8mIQuqTUotR(4t&|-7bLqZV89(+4*uHu0A3hc_qKxW)t91 z>A3vJUCnE+hcga2bTfk>5hWtC9DOj3Wj8%2T*7K55Lp)BaoZMf@~zFQ3s8EcqPLy^ zIAwqjf6K^+KJrjQIH+?;k|e-TY)aDaY>HWgvX@)L04}kQB!xZsGNn%m`>x^AL{Wf4 zOqzbjvl6AhVTa2AcfT4q%^JWJ_m#%^wG<_45V>;lQ$fI3iCJVb;>yo@!ZWiO!q(+^IazkBm3 z7GJZGOP8 z<oP92^b(hx{jS919ZyL}m@KFIr0yA5llbO0R*8w*>!%WJjfOWWM$&#Va17)6N zmcg!>b`HEA>^7b))6VX|(gnKUoR&9%1Excnh50JPt_1UHxVb2^Kyh|!${kfv{^_JWmq%hTWlob0vftY`PK>mLxVx`AKsI3PIs zUJvd8U48~D+i6GlFd2^vS1@NALA37|?7cDoRLj}m6r4pJy4k6Na4o%Dxcqv4t!$(=I-SRVNR+|l+0e0D%@UqkVGI_5cTQ3uYp_Ws@O>n|-yFSmdg;E$*9_}U69H|tB zoCG0KsVK>=LHZuyFzZo4l=cWxTOQQB!2O^8Le53sCV1(a z`uY*jhv*0Bn_B4jgp?GvV6;BnJl;A#3Kef%ZcAJ}jtfCP{L5AYuZ#?$DzVzt}OfPWAdsu+D z0$cO~y`3)7Bt1bD^$GP;>I0CMpsJoxb#>7DwD)t~hrI9fp7YLnLvR5uNB{{S0VIF~ zkN^@u0!RP}Ac3D10+&e28} zI2kI2vU)Kxnwie!UAq@6yB9lmFLvx+Y~Q`u)-KMc#>WDM>`Wn_&Snys$ZTXP5|(!_ zmbQyyBME;v8;*wjsd0ZG8=1>Rec}-*qVR#7?^g_uE6ZGPvZWUYpPRqy$;KyYOfRt4 z`_PZ57x-Cu=&>D000|%gB!C2v01`j~NB{{SffomX_7B0nDvRe&FVL$l>Cg-G7I)|c zdW$>s0=>l@dV${JPQ5^n%A!**&{N#07w9SO)C=?!cj^UtihpFi0CZ@&N29T=7wB7T z(F^p`D*SN0082fvZ7=XYKl0@_U-HRMc)dRmY;GdZx2aFMiPz@g(FtE1&j;2L2_OL^ zfCP{L5{CG9+u zQ8TJLI`}4yjm_#=V?#^Swk|Gj)VD4!tenzH^G5aThIVeP2071-a^0w&(pJ}MOGb4= zgH_qsdbd#>)<(2Uxw;9Z+EmS0KdSq7h%#oBHg3MQyjof^Hm{6AWA8%M=~$gyLB zz{m0SquzI#KC-@ORLp^C@y|EMmE8AX>nmobht20Z9q4-4*rD($u~c!pL;6nk=OIpj zmWH8ZR4pL`npNyXqK8fg$NC(C5pW6oZ|eo@bKh|M=}mw0TCY1VcwI{Zeay8)AEY&jM(oL^%04mVmE(KvmKe(o1wKN8&MW( zoA9H1b76%QNknP?xMuqf$!`8QXFDQsteQWz*`6Yix+KY>-TYC`4%vy!f_F)hBsyDa z0QgMgb@*-0PH+*o+jCMlRpgCzxddp?ZjEgmy}#Ac1YGiV zr(UX7O7N4{22@-`Y5x{x`wEeH5He9FG7Cv&a{@y=tk_8$OXja?wr3*}s4dth znK;(X-`8xJK_{=W(+mfG8R(}(yj4sYb!;{>Wx~cA~7betffiTf4{Eo)>zYZ5>2eZ~ba#`yx^5 zo6R5mvM9=mYmdt_FsP^ls&hbf3s+C_);pa7jMVdf}A1<6j*8n&>rJ#58} zVGBha!xr|phb`<_hAr&zVJmJATR7AjwxV^|imhP_Cv**4IMO+6)r@c~#oOp`2r#Jo zwDHirynT`|3g_+f=$0SMa9dfuQ_!MZg555F{B8+{?%DZrAg(?l9C;GW$&o<5+gngTf`OW&(K83-E5)7I5;d&8rJgdZnVbo&Y#y zfDeDm$cH}iP(wJVb4d`iABJL6l744X%p#P%+#&{WiG3s~>@_D-`joKm8ZJ!~1vtc{ z>32LUQTiKpxD0UjtAW$30lXxHJvJ|UAP4!(KU6}1|13}8rL1NxKY|-0cinQ}b8q=q z=11VB;79O%`Yrl(`c?WU{UZGg{RI6ez%GN5%`Nhc%iJjD#%XRG=EiPrY~}`(NbEYv+<-bzRy;(6`o9eRx8n;u^!t0h z9JyXS&YTNu^h*N$9(|gAjs7!y#03c;0VIF~kN^@u0!RP}AOR$R1dsp{crg*M*(6~= zQXmfjY&JU)bUtX zB!C2v01`j~NB{{SfghUy#uvc&0x)PEev!r(xb>Qj&TDps4J)F_VJjh*0Wx?W~4gRZ5|7`fw z<(~~l+Wy&6%Rd_&keR>owtqI9)#;xN2TcEL_+atRhP@8|Y}mK>XTu)%&xUP>e>UuQ z_-BK&afg34M6tT|CXNB)3v>ii!1w~px4%7pF}^@E=A;BvFunkLhr#O(-arK73-C|{ z&vkr(*SS9VCtrEb{eQ*c3wY=Uc8D(k1-KvqB!C2v01`j~NB{{S0VIF~kN^@u0?#i2 z9w5MD1_*eL;tSm3`-SxJ*$>}~@dcjWuEo0{0VIF~kN^@u0!RP}AOR$R1dsp{_^A_k z7V!n%^Xrd=|3Ux2{ay$t&=FtY4}R*kLxD&D2_OL^fCP{L5o|&4>=6K#WZ5;9_YO&IavBCF;SYE{; zmSr*5Op>UXCt4E3X^>Y@OPZM$huHPQ+LW1JQCr-)Si5zPZO~GU4p;i;u^L)Cb)*)l zR<rU|noPYend5vRDkN^@u0!RP}Ac3C+ z0s-*Auds#?uUGK?C?5E5Qsd}DO(*|hhj_G zci3yDeTPq$wC}KIP5TbJ?X>SwSK4^)Ia0KHEuy_Ix4`j)}_yX`vV1r=z zT|*4x3p_9J1^&%(@Av-Yj^($r_yS(~z8&KWKoKrT00|%gB!C2v01`j~NB{{S0VIF~ zkihdofCm=vnt=tL+xP-!kKH!-nNB{{S0VIF~ zkN^_+PbPrz1%8zH0*5S){q6VytM-A&v15YJ8Fe7*&j)9tndx{kHId8sX8fZQ<1=G< zW23HRjq}EOy$&CTYW$<=e!uMs9n$ph>5-As{!rT$dixN@7idEn)BOI^LEmY84C4!6 ze1U~!qskwul}+}s`=R24WtaE@DtiN8_4^;b?dLx8d%yj*^~&7BfBViH^CPg+q(Hwy zx9A0WJ6(hwT#x_~Kmter2_OL^fCP{L52;jgJKi*_lEh66y|lh)R7_(6QI(D<7UKe_`5spLmR{g@{_3H?!;bH%EWW^DXI`KW(>fheA6M^H z$Gy*ZKj_VSe&G2d&o6oQy8qg};l9T8sOv4R>y>XPZ&RYqC!OztOK?E~NB{{S0VIF~ zkU*P2?65Nu5$S%x*`7j)P3B_3WMXDCG!adtU@oIw(qnNfe0(WmELXCJKnS77j_`RH zKGBklj%TKmfoRU}3+Jcj#&tdo(sv5x?9$ZcS)+D-b794(C2DIM^>TGd$sObs>ySC> zpP8HX>EY3tk=aCSa&%{zDZZ4Cao=GM~vqgVA5%%rc-lZZRKungH z9N@C{?>A@P%weY&M&tQ>baEs)IyRN%qq_f`pzwV@s+pu&3WAiuR|)M-NEZ{n=|mtp z5>H0L@!3?kJz#og5A!#~mdlm$Vr316c2zquwOP@k<$0ra(iT^_;KNqIvD8GMSV$!& zg1*RTFgw%gi(bL;8_d3yC%jC|{>!amW|G-rVa``bB-0b&NOTu5MPu1WSJ&n%B`|81 z@*WOt#42kx8K2Q(>B)jG>z^xR=XS1=aQ9NORyG!v`H!KRHnFy}yjiP@NjFG^K_|4k zB3%ql`D2OD*u=%m6H}$d=KDpQuz_4cud;M=axxJbiH8H@sZ2f?pG*69mg`^QqM8p%OlEb2 z@1*A3IZUkwlj)H}BAbl*e3QYkiENR}>O1L9PVuKVF0l&jJ!pQhO|eshqk&W*IGfS^ zfwAdWJ`mnnh@7jhMA$F%xX9~rxK$UJ#}CfTOy<(bWFZtPq+yVlJ=lMS|KrWKQj9d4 z#J^^_IY2~zkBqShg-${HIj!qi@TMJ2Rni@UXCgPq0MF2&b?wYXQEMLUbTl~QVFaksL`+gaSLKk{@I zcPoP29mPHB9am>@x1L7nEbdmcI6I5GwI`0w;%=o#haW+@N4K%MKZ3rB z2#X&5?c>d1w z>+bKm-{|_DtEhZd`DN!L&R07==s0eFH=KwI5OF|I0Qu)NcnQ>NP5Jj}A4t(7(xPiae)QoXKi)N2Mir8=xlmSEZPH(2n*=3|tE^R-mx?oxuZe19ZFRk304<|jZJ#yV@UTf#(s;SGF6q={aWpwP zq8CSeqjS0B&ULZ3Zhaam(VmItm9k9tYcTs;+q$?6{QzBNz$|#B1bMyo>yT;6eqiScppNX^g1 z(vi$WbYkZ_NNh%1g8>Mmp$yGWtnpzAT~Ig5P=7vP1Nu;4gtcmujgWaxXjp@3*bDRQ zIa;s5Lw27^P#scw3F|f-x6`9e!pdj3c;>>JC5XEMoX zI2CM9I`=-&tO9H7DP^d9V5ixY_jeI<^QKFq&gMnFw;WDfh;c?RZ`ogM~ zTd#rb%A(125gsWhUU#uUvAJE9bTJ;Aoyq0$$%$|>nDYhOFS*`{ej7I+nCFHZ&0$&M z@6hIm9EP5%Yth;oyy}eFx#kN^Vw2jW0WkwxgCSj<(<453UM41jp}ElHv^m?zCbfHg zo=wae3~YEIz=N;?Z?-Dnm|84V;n9SLbk(Tv2c^TjVP&&+UMp2=TOVRCq2Yp)wL5OD zLnIXl`F(jkRG7-nW^--xkls2-tiw5f_DD1*uc3+T`5azyFv$y6$-$|-Z)_?ymDT5_ z3)!*gcDuVhxT=C>WU0VozD z`dn}#9-1A=%%#GS?fLs2kgaO77x9v@UNbfT%&OM5xZqEmclylUofno$P1Fzc{>9KZC^i)Y4H{kUPPcZw!HlJty-eq6ZbvF7~*QeR56-HdGR9%5@ zb4COVX;#bCv%^{tUQ5sjqk3|<;bznQiuKDXotz#`BnvUUpl32s|9Em2`va@>!6|s8 zz{25Fd(<&bZ9|OaQ=ui{8{F&}Uh}2Ry0*F6djCX37@$h)@ngUEM>&XXaIZr7}Y3YA}(!qHZv{=>X~FJI~$Gp62;kcE@Zwn`kEbN%s;T;Pq_W; z&$yOe;Hf`4Q1E`?Qx7tGfqmY0n)U)L>fi;i7f`@f;0c=K_5xM!=a{8{ItZ2nZ-x_b zK>|ns2_OL^fCP{L5~nvWdZ)cWvRg~uX)n;DyzaCYNOmifJM9IM z-8$Y5dx1=k&b7l{Ad~D?cy`zeKyjD0vcp~=lkCigAIb=aHnWZk#8 z?pEIJ{9~p1(;M_C2?-zpB!C2v01|kK6Bu<#LX9yXsw$|25Rnjx5Sb7gA$CF>gg6ON z2yqeOCd5OCmk>CwarB{EU?H+_YXYu*yHhV!xqXEVu5b|rOdr-@mZ)a1eTB#ir4_>_ z$wWR2mKQb!Zeb_V;%1E%JBecn=DJ{}o9)?%1ao)nlS~}zMvd8MussKHZj=^buFT*U ziK30$6xbxu;bw*fRWq&=J5`d^0mb7|T`G0CmIQT?H_+n|JV!pvYb^=a!=XbC-OScz z7bPOISWtFRl--TYgUzPhb{U-Yu%!ER8KioM1aoHWlT6$&lUXU7Q^f3uQ?!{es8|!( zY^KbbC=q3`wz<4f2Pb)UmW#N+B<1`vG{e|n2NWWftL%fDI9_Y|ZnHf*QC3+T-#J3@Yk?>Kt(Ag==qu)(FJy z7N8@4NIy45A82*&I$ZQ#Q6G`u7EWR>!My0%4Ynf_do#3_WV1As6+y#c($loxVEYcq zzQHC9`E_EuHLM6Y)g?(5?R=h;pI|343*IG3lIU!O^McPrhS}V8c8!a;!4d$B1Gq&E zJ7SZaUiZL&SG9W;uiJA{I9240b-4r>xVtsBarFLHOS=X#jQ);+4EwEtEVc%+b9*2| zv1K5`UUMMBC(A&FJ?lV*-S$8hy9P3pSqHNBxNwrk6eEfvzyrBsqZ*kDz2g^zHODV} z>Kearq&A?9h5e543lCz) z_*LD))swtSolXJXNc~&i7`?C6neAZ}(HPv18amQOB@_{q123JCOO5ebT4n8B#gp&`#icepdCE& z>YaiXmjiM25#h)y`Qz1@$oiL7N zH$5m^!fGZESr*_sWLv<=w>GaXK71GvOKk`(rJCR6&9uHbW-p-9cMJ6U^jq}n^sDqy`bGK~`U(0` zh(!1h{Q!L*6ykyekN^@u0!RP}AOR$R1dsp{Kmter2|Sks>@w)nRFQAI=Eh@g+~&q* zZWMFlG&c@&V>dT8a|22wCQLFnpbnH34-ujAFJld8*$ar7{Qo)i;qU$`i!WfOUl8c` z=+pFT^q=XMU_4z-E_(0a38oU?V9unQc5a zFnt)16`Kef0`?fNVQK+EW2=^4;D64SF1uX4>o2|DD}(`0OrVc@N9c#?9rP8{q5h5f zW_3zcydUzedGGN)p@uv$^BP){tiwG^mJEd+DD!~- z3%K=|`5A4ZXt(ifnRa#umM+i*=d`?G955ZqEX-FSb|sis!_7sR1&RYl9dHr>{~~bR z0lRl*g)Y`t6tL*Gn<-7%iBxf`ihFR-rBIJT9o{>Hy{~88ODGj6Hv$iV_tQCcNK}sq z>L9bn-Zoj^#Q_R(#hYFulEBQ$RXf@GgoAtC zx(Q~bv|${CvyYmt8j`^5{*Ua}&-ckqx*yI{PY51nIWLIHp+ly7Qrib$eLIosAvpEW zeN6-Pri*~-q{I>LW0IDIfh?EggfxAFWYF~El7tg*&}-8f>BDf|V9V2>d7Sm^UUvNh z!c{l$>m3IKM_**%9?<1yu(F+YbPtp9xNrq?wh=`8e!<==13q!t(OVHP|K;{COF}^U7s(5YY~M} z<>6jl&5=rB$Vm_)m5P$=8l>+L4znH=L}`y8wdFz0TW$r-nw$7lR)xdOu(9lyN{r4kblt~7!ImA{HLprsf1>Z>pP{SW=Y zFMh<-3*08qFVijh4*E@c8@>NIX($Rs0!RP}AOR$R1dsp{Kmter2_OL^@X{tgrDKF; zsU2!&t=%ULkqw?aafoHr9pX85FOkBezG*b`zz(sn4MPiNZd#@RSZgIz9bzd~hal7L zP&0`ulWt8XsY=Hbem67GBcQ*U;cw{$8Y}Pm+uQ%-&3|R;1^&sj7kHXJ37!Q1^wRDo zY&{Y{0!RP}AOR$R1dsp{Kmter2_S(NB>`D-5<6Q#UIHg`C~y+67jQCr0VlH;IL=zt z(hF={_P;;>s(ap_WO{+ap6?3~S73`?ptsXSnxrSFqCTO1N__zG5>(YQs;&-tpZ0#v z`;hmY-gDkrZ^+9o!37B*0VIF~kN^@u0!RP}AOR%sA|Y^@6agdcbSmr52WO+1>3A|V zk<0jI{G$`&Gh>Ha#Z$AoKavMto7>gy|J(n5-|zc>yVn1?RI3E5 zsa$@oFguxibTawKWb({p^5Mzk>B;0nlgYlx zxpYomlk;-iGMUT|$;n7M7%#*Vv0!E?7%IrsVj{pD<7I)!dA>A`42zXiE;!ZK3vB+| zyM2H0@+TuiFL2oNz%$khTqTPhyNL)O0*C-2fCwN0hyWsh2p|H8z}103|Cio)mBp`& zUcjs_G3W)%WP@J7Og88R%w&UJz)Uvk1xzXnqh7#7HtGdTWTRfdL^kRLOyp;*7XTep z)}+xG>IKG3L^_579lJ?`JQ zIu;N15)nWI5CKF05kLeG0Ym^1_!$tmB=J7^)?2$b-8utT3;T>C6r$#}v44c0?Z@#- zXCaPPf;e6&p{i}Qbzp$6qVDatE~tA_x_#yH=3eK@W2>wAJ&C zUDzKyh+8(*_RhjR>bc#ZKNy|&2j>HeQZRTXw0OoJGoA_u&iEGrm*1D?=esxGItO1N zg?SI6ZQGQ50!pGA&yN2wTY>;;si0m|cRRXR>TUHxV}IK+xMxiA$InC}XM)3S3{PD; zWcBH~VVEiN&%`2)(3X}ULR(7Kx75*y?P7hs)7VhklGdldWF+Fn<;I@0=;%WdhLy0-%}+EyjG)x7fX-ku5*b3k%9ZGi5B=EmIZpLT98J1SZd>q{d7@fVLsFr zT~u0cM;8_4?T?)aFAmn(@Dwa)FZ>_q1unicxpKp|BmYDE1+3z_!C!#1!w({W2p|H8 z03v`0AOeU0B7g`W0*C-2fC!innC#(U@E0)af`)MfL>FoDHuy#R3y5Si{WyY8=I{8} zXI3wKT+<7@d03C&5v)gGnsq#Z2p|H803v`0AOeU0B7g`W0*C-2fC&8j2>gH7BRE8c z(ANumbmv8d7gpka5?nCrcq=1*NbHF7-lx28^DcRQ=y{)~by{qC2zr(K_P?YW-k zeA4-P=WW6_g*OTb$2S~rb(DU7K#&6>fCwN0hyWsh2>kjWkeqYKGAGV3jzM0p3Cq`csFWPfCw*6nWDUAX0$9`VA=!ApT81Kl}d?~h!S1Q7pPQ^PgKYJ zfJ!ytv?c;0!S_ODFbUaOIE@a zq7hD6Q(nq=PR}@*Sq{}I8D%*fkfY&3xjz?X#;M!2xwR~N2%DMf^=!&Yp;oB|DrqIV z9G4Rl*woZbb>MH#m)sPzh@RJ)k}CU?*_BG55Uf@T)q}glJh-8>8!Gs-6W8~))bn2F z6c=y>p<@P9k*$UE!DKqNxExuN3&Bib0)m`Q=$sU>MP2ulYJ54dR9h-1mKKZhQlT>F zo++2+UZcIgYx^yMa6R?{J=aPxp;T(AQZ^q+70CJ^nc&8T zs$}Y|3wQ4{n_7H|baI_ObF`b3vZt&W2koie0h7bns;x@Zo$06f?Hg8|snboHiq(xK_2+KVkunuepHOeMUQ z^9MtVtI1L*elQbDv9m>k6H*-Q%Ur)NkPk3iF0T}`ic*QiDp?Q`Z3f3@3VfpXR7$eF zA<@??jWh`Pi_77>lB^{lng`MsX0+anOE}1WmktU3>X;^fdGz%HuJ+&l(RK6A6!90B z^~??92n47`por_edIY2vLCgC(&u5_`!DCR9fYc(m+cW2R0P7JDH1UH7AOeU0B7g`W z0*C-2fCwN0R|f(H*Kd>F(pZncq>(h%BTz<_i^h5c%BY&qSdTy%Rr?w15h$aIyOF$u zqguF;dIY0twUK%Rqgt}jdITeiuaSBLqv|X}-ob2bR4HZ1JD9DFDw_;>2eY+N{gEN> zpji=Q%sXgO?-=tADx-QDW8OiNqQ#hZP#M*p81oJ)qe>A&96{Ek+Ze_XP))YC~$Lbs#nCkkYCped(3=)9hLE zsdbY3>UdWmMo_kUlfEm<`A}`CTK1=l!D@CjogZ}4WJ$ND+Iu9CSpuwFEt)r~Z}}z( zwfaz;mM-2y)1mdD+S=LPZK{Bl+Gq`0Ep*+)h{|@KukTAXvr>yH(TKkm2}G+!<>0>9 z`nNsk^8iyu5{NY+!CFg|sGS`U1jshYge`QB6H_ePg}+h; zH&x1&wc<*oQcjl>i-A&}O5S*zuC+HyXLPy9q|G|9%bxDt4DQtETqMU=E`yC$-*7`q z7T1@mUXK@~5Y4wGZNUhd(8m{hVQsLh`W{AQc`XFS#CTY)trat?gT9+4&yu+EIGMJ= zY}EJndW?JGve2~=b1&Py-f)NIr6nlYRjMYla&9@XeDEE3V$qgJlCg7YQxmw4@pAPfOGjfZjYHm2Q_3a8J!Ip#P*;pqbQ8OFD-J+Wg9cP3c1Y;{NEo zbe+WLEObxlyBCye@xWpsUIyQkcqTkBI-6sHNe6bwDkV?_79$^dZ&Er75;1?v9aJ8P zl#sN7n`#5ZWkIUJa*~4n^V?E!w++54>l&`>u%v*z>m)+4KkQ1jmP)Rbi^Y<%99P1{ zKzQ(wGaLG?y2Niiv8>Z)Xip*+Am1CLM{MuFqfTw#-Fu+%#Hh`7A!lG;7_zmhUk<=} zSzZpus-82aO<1JcYLhM$gL}i)e*259Y3+Zm2L+81cDwoeZHX z5No;6?Y-@&4?wLZ`>WyQRBSDht7hWz(0*?Mvfpiz!E!_0ZL50#%=R$DAC=)^y?Igh z6kL#G7_^3WNrkCy!=?23H$^S%-H>kBN+#%+vx+~SO9soUsnF2X!{q z%ce>1t~o{YUYTIbhjfj{rL()8#!jo=JR_}KxeV_qSa^`B5oVrZRcmZ_=&FMkCo$Bs z`WGjd#dF0}un=7f=L*GmIlDNR2~(H2B^4gOu!6}8TU*ccxl3Nu9U^^X>a*n03KG|@ zx3=JIP7nb{n(apG!h#fr#}di=**dk*brEyFpnq9qmDOlksU-ase=e5@E-4fI5A@y# zr(sEfhr{WC)REWtz!9UjDkKHo;M&a4o^R}Tr2XywdqL(vK!yJDBft0~azR;)Dz)fZ zESZy&MQx@C#Zu;A}E zl5cgO7nlwI`B(no+q>Y& zxeKmWIv*6?@W$i5MU|E4>oh<8OSvSjiSk}w3(6oE}u~))}wJ?{`z~D^|f4xQhE39yllNAQF z#K^J0TFyhIGAnOkEf=8fm{owg*jRpjzfH&v*1n-tB_l^xmIvD%`DS75yIOrRa%5*6 zd%e$SG-cyBi>sS^Z*OS#T?ef`#QOt&3vhL_JlM?0Hw)`JKdcQ#&Nw(LtvF^O zLnPKr3mGEM3hV8CsEr3f@}!lMb%IMuuZ$QuA+TJdMZUOL`(0Y)F>+*Mg{^)?GIDHX z?O=Q(M49M;zx$Yi+q(9OTL52lj5M(&+3o_Ri zWXDjDfvgi`IO+*9eA5Xs9O(ra4hMqFjR-Q(^n&cUnK?ysim`&gz?wX8P~F_aX88qX zJ^6)iBk~Jp2J%ZrM&*}`%pkwe$|%2ZLX%(kqLW`ZGRQ9+>*N=XsQkj-Air>IkY8Ac z2Kn{6nCGt0DRnp)cqok@eK-2f{$vis7B~;Z77m7D%NfKLNCvTm9&Y z6k9me7h6s*wp?Fqp}~mQ!WpC3dUMQ)3>~B0&VW#l8RP8R==gXh3hfTN{kj5va9fM_ zwTzUY9BeiQ_>Xd!eapd@1LEFKF~`Uwfnlvy23`S%%a7gPyY@C{0FO?sCLh~>bb=gP zT;fsY8qza{wOANa&Hi#hx}%8la~I7PVmU;Q(&^8fAumjT@4df?D{0B<|y zkkvz8D83tMPgs_LjzG~-1{@BCdVveyx#s#i?kfHv@fQ%qw=m)l#P5jzCH{x_r1;O` zr^UY$KLVKu9~1vne7E=zknw{EAOeU0B7g`W0*C-2fCwN0hyWsh2p|H#00e9nP^5_* z-Fda0N87ozolDy}wVj~t9NNyV?QGi4s_j6DM0oPr4%C4b!Oe2e_2-c8_x%M*80$FN&Wd?eK#LAOeU0B7g`W0*C-2fCwN0hyWsh2p|H# z>IhhEJTt{HRx9jy!D=Bpw-sC;rYwS$gB=V07_cL10Y)O5zFuJWUH6~7^rO#z(Brv* z@wt?Coeo%b1_yW=H{d@20ym_zSdEB$(d5h<3-kA4pcar=g9Pon(AOeU0B7g`W z0*C-2fCwN0&te3+YagY)%@*dqAi!|N<*yHF_Bp}V-Lku`HhJ)9@5Oxx@Ku077_C~K zgSfhr&;b`|p%vv5z&qT%p{r2n2AX@5RIuxnowIVB%}T4;*~lG8xj-kh=|{uZ!5m6F z%(o$TCAe3^%{dE66bFGi5F`R+1tD|?{N9NdI@j3}z@y)$l{6&{MZx72Tt1&u5Z!`k z_q>{!(nmYJ0HUAnCDYA`*D<1xIAag})h7o)G0Y(?YJ_KqTe;T;{_Ieq^a$M4^CUC% zV#?Jy$2fiLQ7w>$XTorD+U3`P*{biUN1^p`EmVVNh~NLQ8UMvGwMl27o%bZ;CZ6*Q zC(O=j;YouSfZbss*I8&f`_7(&dM`xa+^`_&VZv#XnJQ3D4k**-V|`j27tfr8lOC&| zAUy}|eEmp+-gz>!)8zU`8Sm}%dixQ^KGlz>dM=!D_pW9wqj3gX!?L4?2#=?j8%VGX z!`WsSn;Cfksvm4{8d`~Vzc#5pxK_NLx&AhKt@SWt9k~{q>-%vAy5UTb%XXOOoS~Ol zrWuR=GKQJ&2Nm224Q{si&ovS1j4WS@dRYa9dh~yfnOeS$+wtkG7yMan1U?} z7g069>=vvhluZjaFI4BZ~4+iAKz zM7KV=ouXS2wvYvse)rI=8@7;Yk$wjc7N82SwOAbVjGb;FngGs2Fag{bVhLaip#-pn zNCMbGAc2?U9i({(`~CuNc*l2N^T~hxv-?QiL96(7M*N}pJ@NC9Yw+!GfFDEv5kLeG z0Ym^1Km-s0L;w*$1P}p401^15AOJt(S=%xGR@NUVoh_77EB?`sRima0cce1K(jBQ} zR^P%hk;)VH5K6-cFqoUjfckoYn_uxVL>cg5|;LVKq@8T8l&EmJkN5n^dDFerw zAOeU0B7g`W0*C-2fCwN0hyWsh2p|H_E(ApW1WO9E&iAU;9_HuSJz6|*o>bMHr!{u3 z;p1#)U+vX_ohNA<=Fe-jX^944r(aNYo|IUfhf2Hiy&|rJyS|*Hmp>uUyJ>|U0cw)t zVW1aSz2@~FzW9mgk2Jl&Q<}fP)8aQElHkkFu4%#1A_9m2B7g`W0*C-2fCwN0hyWsh z2p|H#76@2)2Wul6s7v4=0R;{g`~@7uU%)~91#Tvz?E4Em^@YEFBAdAETgatz@|v8N=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@fastify/accept-negotiator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-2.0.1.tgz", + "integrity": "sha512-/c/TW2bO/v9JeEgoD/g1G5GxGeCF1Hafdf79WPmUlgYiBXummY0oX3VVq4yFkKKVBKDNlaDUYoab7g38RpPqCQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@fastify/ajv-compiler": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-4.0.5.tgz", + "integrity": "sha512-KoWKW+MhvfTRWL4qrhUwAAZoaChluo0m0vbiJlGMt2GXvL4LVPQEjt8kSpHI3IBq5Rez8fg+XeH3cneztq+C7A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^3.0.0" + } + }, + "node_modules/@fastify/busboy": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-3.2.0.tgz", + "integrity": "sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==", + "license": "MIT" + }, + "node_modules/@fastify/cors": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/@fastify/cors/-/cors-11.2.0.tgz", + "integrity": "sha512-LbLHBuSAdGdSFZYTLVA3+Ch2t+sA6nq3Ejc6XLAKiQ6ViS2qFnvicpj0htsx03FyYeLs04HfRNBsz/a8SvbcUw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "fastify-plugin": "^5.0.0", + "toad-cache": "^3.7.0" + } + }, + "node_modules/@fastify/deepmerge": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@fastify/deepmerge/-/deepmerge-3.2.0.tgz", + "integrity": "sha512-aO5giNgFN+rD4fMUAkro9nEL7c9gh5Q3lh0ZGKMDAhQAytf22HLicF/qZ2EYTDmH+XL2WvdazwBfOdmp6NiwBg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@fastify/error": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@fastify/error/-/error-4.2.0.tgz", + "integrity": "sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@fastify/fast-json-stringify-compiler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.3.tgz", + "integrity": "sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "fast-json-stringify": "^6.0.0" + } + }, + "node_modules/@fastify/forwarded": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@fastify/forwarded/-/forwarded-3.0.1.tgz", + "integrity": "sha512-JqDochHFqXs3C3Ml3gOY58zM7OqO9ENqPo0UqAjAjH8L01fRZqwX9iLeX34//kiJubF7r2ZQHtBRU36vONbLlw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@fastify/merge-json-schemas": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.2.1.tgz", + "integrity": "sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/@fastify/multipart": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@fastify/multipart/-/multipart-9.4.0.tgz", + "integrity": "sha512-Z404bzZeLSXTBmp/trCBuoVFX28pM7rhv849Q5TsbTFZHuk1lc4QjQITTPK92DKVpXmNtJXeHSSc7GYvqFpxAQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^3.0.0", + "@fastify/deepmerge": "^3.0.0", + "@fastify/error": "^4.0.0", + "fastify-plugin": "^5.0.0", + "secure-json-parse": "^4.0.0" + } + }, + "node_modules/@fastify/proxy-addr": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@fastify/proxy-addr/-/proxy-addr-5.1.0.tgz", + "integrity": "sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/forwarded": "^3.0.0", + "ipaddr.js": "^2.1.0" + } + }, + "node_modules/@fastify/send": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@fastify/send/-/send-4.1.0.tgz", + "integrity": "sha512-TMYeQLCBSy2TOFmV95hQWkiTYgC/SEx7vMdV+wnZVX4tt8VBLKzmH8vV9OzJehV0+XBfg+WxPMt5wp+JBUKsVw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@lukeed/ms": "^2.0.2", + "escape-html": "~1.0.3", + "fast-decode-uri-component": "^1.0.1", + "http-errors": "^2.0.0", + "mime": "^3" + } + }, + "node_modules/@fastify/static": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@fastify/static/-/static-9.0.0.tgz", + "integrity": "sha512-r64H8Woe/vfilg5RTy7lwWlE8ZZcTrc3kebYFMEUBrMqlydhQyoiExQXdYAy2REVpST/G35+stAM8WYp1WGmMA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/accept-negotiator": "^2.0.0", + "@fastify/send": "^4.0.0", + "content-disposition": "^1.0.1", + "fastify-plugin": "^5.0.0", + "fastq": "^1.17.1", + "glob": "^13.0.0" + } + }, + "node_modules/@img/colour": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", + "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", + "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", + "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", + "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", + "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", + "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", + "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", + "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-riscv64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", + "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", + "cpu": [ + "riscv64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", + "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", + "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", + "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", + "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", + "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", + "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", + "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", + "cpu": [ + "ppc64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-riscv64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", + "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", + "cpu": [ + "riscv64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-riscv64": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", + "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", + "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", + "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", + "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", + "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.7.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", + "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", + "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", + "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@isaacs/cliui": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@lukeed/ms": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@lukeed/ms/-/ms-2.0.2.tgz", + "integrity": "sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@pinojs/redact": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz", + "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==", + "license": "MIT" + }, + "node_modules/@types/better-sqlite3": { + "version": "7.6.13", + "resolved": "https://registry.npmjs.org/@types/better-sqlite3/-/better-sqlite3-7.6.13.tgz", + "integrity": "sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/sharp": { + "version": "0.31.1", + "resolved": "https://registry.npmjs.org/@types/sharp/-/sharp-0.31.1.tgz", + "integrity": "sha512-5nWwamN9ZFHXaYEincMSuza8nNfOof8nmO+mcI+Agx1uMUk4/pQnNIcix+9rLPXzKrm1pS34+6WRDbDV0Jn7ag==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/abstract-logging": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", + "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==", + "license": "MIT" + }, + "node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/avvio": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-9.2.0.tgz", + "integrity": "sha512-2t/sy01ArdHHE0vRH5Hsay+RtCZt3dLPji7W7/MMOCEgze5b7SNDC4j5H6FnVgPkI1MTNFGzHdHrVXDDl7QSSQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/error": "^4.0.0", + "fastq": "^1.17.1" + } + }, + "node_modules/balanced-match": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.2.tgz", + "integrity": "sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==", + "license": "MIT", + "dependencies": { + "jackspeak": "^4.2.3" + }, + "engines": { + "node": "20 || >=22" + } + }, + "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==", + "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/better-sqlite3": { + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.6.2.tgz", + "integrity": "sha512-8VYKM3MjCa9WcaSAI3hzwhmyHVlH8tiGFwf0RlTsZPWJ1I5MkzjiudCo4KC4DxOaL/53A5B1sI/IbldNFDbsKA==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "bindings": "^1.5.0", + "prebuild-install": "^7.1.1" + }, + "engines": { + "node": "20.x || 22.x || 23.x || 24.x || 25.x" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/brace-expansion": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", + "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "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.1.13" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC" + }, + "node_modules/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "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==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/esbuild": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-decode-uri-component": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", + "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-json-stringify": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-6.3.0.tgz", + "integrity": "sha512-oRCntNDY/329HJPlmdNLIdogNtt6Vyjb1WuT01Soss3slIdyUp8kAcDU3saQTOquEK8KFVfwIIF7FebxUAu+yA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/merge-json-schemas": "^0.2.0", + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^3.0.0", + "json-schema-ref-resolver": "^3.0.0", + "rfdc": "^1.2.0" + } + }, + "node_modules/fast-querystring": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", + "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==", + "license": "MIT", + "dependencies": { + "fast-decode-uri-component": "^1.0.1" + } + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastify": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.7.4.tgz", + "integrity": "sha512-e6l5NsRdaEP8rdD8VR0ErJASeyaRbzXYpmkrpr2SuvuMq6Si3lvsaVy5C+7gLanEkvjpMDzBXWE5HPeb/hgTxA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/ajv-compiler": "^4.0.5", + "@fastify/error": "^4.0.0", + "@fastify/fast-json-stringify-compiler": "^5.0.0", + "@fastify/proxy-addr": "^5.0.0", + "abstract-logging": "^2.0.1", + "avvio": "^9.0.0", + "fast-json-stringify": "^6.0.0", + "find-my-way": "^9.0.0", + "light-my-request": "^6.0.0", + "pino": "^10.1.0", + "process-warning": "^5.0.0", + "rfdc": "^1.3.1", + "secure-json-parse": "^4.0.0", + "semver": "^7.6.0", + "toad-cache": "^3.7.0" + } + }, + "node_modules/fastify-plugin": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-5.1.0.tgz", + "integrity": "sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/find-my-way": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-9.4.0.tgz", + "integrity": "sha512-5Ye4vHsypZRYtS01ob/iwHzGRUDELlsoCftI/OZFhcLs1M0tkGPcXldE80TAZC5yYuJMBPJQQ43UHlqbJWiX2w==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-querystring": "^1.0.0", + "safe-regex2": "^5.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "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/get-tsconfig": { + "version": "4.13.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.6.tgz", + "integrity": "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT" + }, + "node_modules/glob": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.5.tgz", + "integrity": "sha512-BzXxZg24Ibra1pbQ/zE7Kys4Ua1ks7Bn6pKLkVPZ9FZe4JQS6/Q7ef3LG1H+k7lUf5l4T3PLSyYyYJVYUvfgTw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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==", + "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/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/jackspeak": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^9.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/json-schema-ref-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-3.0.0.tgz", + "integrity": "sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/light-my-request": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.6.0.tgz", + "integrity": "sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause", + "dependencies": { + "cookie": "^1.0.1", + "process-warning": "^4.0.0", + "set-cookie-parser": "^2.6.0" + } + }, + "node_modules/light-my-request/node_modules/process-warning": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz", + "integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", + "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "license": "MIT" + }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "license": "MIT" + }, + "node_modules/node-abi": { + "version": "3.87.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.87.0.tgz", + "integrity": "sha512-+CGM1L1CgmtheLcBuleyYOn7NWPVu0s0EJH2C4puxgEZb9h8QpR9G2dBfZJOAUhi7VQxuBPMd0hiISWcTyiYyQ==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/on-exit-leak-free": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", + "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/pino": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-10.3.1.tgz", + "integrity": "sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==", + "license": "MIT", + "dependencies": { + "@pinojs/redact": "^0.4.0", + "atomic-sleep": "^1.0.0", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^3.0.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^5.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^4.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-3.0.0.tgz", + "integrity": "sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==", + "license": "MIT", + "dependencies": { + "split2": "^4.0.0" + } + }, + "node_modules/pino-std-serializers": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.1.0.tgz", + "integrity": "sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==", + "license": "MIT" + }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/process-warning": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", + "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", + "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "license": "MIT" + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "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/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==", + "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/safe-regex2": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ret": "~0.5.0" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/secure-json-parse": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.1.0.tgz", + "integrity": "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/sharp": { + "version": "0.34.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", + "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.2", + "semver": "^7.7.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.5", + "@img/sharp-darwin-x64": "0.34.5", + "@img/sharp-libvips-darwin-arm64": "1.2.4", + "@img/sharp-libvips-darwin-x64": "1.2.4", + "@img/sharp-libvips-linux-arm": "1.2.4", + "@img/sharp-libvips-linux-arm64": "1.2.4", + "@img/sharp-libvips-linux-ppc64": "1.2.4", + "@img/sharp-libvips-linux-riscv64": "1.2.4", + "@img/sharp-libvips-linux-s390x": "1.2.4", + "@img/sharp-libvips-linux-x64": "1.2.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", + "@img/sharp-libvips-linuxmusl-x64": "1.2.4", + "@img/sharp-linux-arm": "0.34.5", + "@img/sharp-linux-arm64": "0.34.5", + "@img/sharp-linux-ppc64": "0.34.5", + "@img/sharp-linux-riscv64": "0.34.5", + "@img/sharp-linux-s390x": "0.34.5", + "@img/sharp-linux-x64": "0.34.5", + "@img/sharp-linuxmusl-arm64": "0.34.5", + "@img/sharp-linuxmusl-x64": "0.34.5", + "@img/sharp-wasm32": "0.34.5", + "@img/sharp-win32-arm64": "0.34.5", + "@img/sharp-win32-ia32": "0.34.5", + "@img/sharp-win32-x64": "0.34.5" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "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/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "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": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/sonic-boom": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.1.tgz", + "integrity": "sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==", + "license": "MIT", + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/thread-stream": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-4.0.0.tgz", + "integrity": "sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA==", + "license": "MIT", + "dependencies": { + "real-require": "^0.2.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/toad-cache": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz", + "integrity": "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "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==", + "license": "0BSD", + "optional": true + }, + "node_modules/tsx": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", + "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.27.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ulid": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/ulid/-/ulid-3.0.2.tgz", + "integrity": "sha512-yu26mwteFYzBAot7KVMqFGCVpsF6g8wXfJzQUHvu1no3+rRRSFcSV2nKeYvNPLD2J4b08jYBDhHUjeH0ygIl9w==", + "license": "MIT", + "bin": { + "ulid": "dist/cli.js" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "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==", + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/backend/package.json b/backend/package.json new file mode 100644 index 0000000..1e82bad --- /dev/null +++ b/backend/package.json @@ -0,0 +1,32 @@ +{ + "name": "backend", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "dev": "tsx watch src/index.ts", + "build": "tsc", + "start": "node dist/index.js", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@fastify/cors": "^11.2.0", + "@fastify/multipart": "^9.4.0", + "@fastify/static": "^9.0.0", + "@types/sharp": "^0.31.1", + "better-sqlite3": "^12.6.2", + "fastify": "^5.7.4", + "sharp": "^0.34.5", + "ulid": "^3.0.2", + "zod": "^4.3.6" + }, + "devDependencies": { + "@types/better-sqlite3": "^7.6.13", + "@types/node": "^25.2.3", + "tsx": "^4.21.0", + "typescript": "^5.9.3" + } +} diff --git a/backend/src/app.ts b/backend/src/app.ts new file mode 100644 index 0000000..6e611f0 --- /dev/null +++ b/backend/src/app.ts @@ -0,0 +1,43 @@ +import Fastify from 'fastify'; +import cors from '@fastify/cors'; +import { healthRoutes } from './routes/health.js'; +import { categoryRoutes } from './routes/categories.js'; +import { recipeRoutes } from './routes/recipes.js'; +import { noteRoutes } from './routes/notes.js'; +import { shoppingRoutes } from './routes/shopping.js'; +import { tagRoutes } from './routes/tags.js'; +import { imageRoutes } from './routes/images.js'; +import { botRoutes } from './routes/bot.js'; + +export async function buildApp() { + const app = Fastify({ logger: true }); + + await app.register(cors, { origin: true }); + await app.after(); + + await app.register(healthRoutes); + await app.after(); + + await app.register(categoryRoutes); + await app.after(); + + await app.register(recipeRoutes); + await app.after(); + + await app.register(noteRoutes); + await app.after(); + + await app.register(shoppingRoutes); + await app.after(); + + await app.register(tagRoutes); + await app.after(); + + await app.register(imageRoutes); + await app.after(); + + await app.register(botRoutes); + await app.after(); + + return app; +} diff --git a/backend/src/db/connection.ts b/backend/src/db/connection.ts new file mode 100644 index 0000000..2576205 --- /dev/null +++ b/backend/src/db/connection.ts @@ -0,0 +1,24 @@ +import Database from 'better-sqlite3'; +import path from 'path'; +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const DB_PATH = path.resolve(__dirname, '../../data/recipes.db'); + +let db: Database.Database | null = null; + +export function getDb(): Database.Database { + if (!db) { + db = new Database(DB_PATH); + db.pragma('journal_mode = WAL'); + db.pragma('foreign_keys = ON'); + } + return db; +} + +export function closeDb(): void { + if (db) { + db.close(); + db = null; + } +} diff --git a/backend/src/db/migrate.ts b/backend/src/db/migrate.ts new file mode 100644 index 0000000..e39d3b6 --- /dev/null +++ b/backend/src/db/migrate.ts @@ -0,0 +1,35 @@ +import fs from 'fs'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import { getDb } from './connection.js'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const MIGRATIONS_DIR = path.resolve(__dirname, 'migrations'); + +export function runMigrations(): void { + const db = getDb(); + + db.exec(` + CREATE TABLE IF NOT EXISTS _migrations ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL UNIQUE, + applied_at TEXT NOT NULL DEFAULT (datetime('now')) + ) + `); + + const applied = new Set( + db.prepare('SELECT name FROM _migrations').all().map((r: any) => r.name) + ); + + const files = fs.readdirSync(MIGRATIONS_DIR) + .filter(f => f.endsWith('.sql')) + .sort(); + + for (const file of files) { + if (applied.has(file)) continue; + const sql = fs.readFileSync(path.join(MIGRATIONS_DIR, file), 'utf-8'); + console.log(`Running migration: ${file}`); + db.exec(sql); + db.prepare('INSERT INTO _migrations (name) VALUES (?)').run(file); + } +} diff --git a/backend/src/db/migrations/001_initial.sql b/backend/src/db/migrations/001_initial.sql new file mode 100644 index 0000000..b057e72 --- /dev/null +++ b/backend/src/db/migrations/001_initial.sql @@ -0,0 +1,136 @@ +-- Categories +CREATE TABLE IF NOT EXISTS categories ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL UNIQUE, + slug TEXT NOT NULL UNIQUE, + icon TEXT, + sort_order INTEGER NOT NULL DEFAULT 0, + created_at TEXT NOT NULL DEFAULT (datetime('now')) +); + +INSERT OR IGNORE INTO categories (id, name, slug, sort_order) VALUES + ('01BACKEN00000000000000000', 'Backen', 'backen', 1), + ('01TORTEN00000000000000000', 'Torten', 'torten', 2), + ('01FRUEHSTUECK000000000000', 'FrĂŒhstĂŒck', 'fruehstueck', 3), + ('01MITTAG00000000000000000', 'Mittag', 'mittag', 4), + ('01ABEND000000000000000000', 'Abend', 'abend', 5), + ('01SNACKS0000000000000000A', 'Snacks', 'snacks', 6), + ('01DESSERTS000000000000000', 'Desserts', 'desserts', 7); + +-- Tags +CREATE TABLE IF NOT EXISTS tags ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL UNIQUE, + slug TEXT NOT NULL UNIQUE, + created_at TEXT NOT NULL DEFAULT (datetime('now')) +); + +-- Recipes +CREATE TABLE IF NOT EXISTS recipes ( + id TEXT PRIMARY KEY, + title TEXT NOT NULL, + slug TEXT NOT NULL UNIQUE, + description TEXT, + category_id TEXT REFERENCES categories(id) ON DELETE SET NULL, + difficulty TEXT CHECK(difficulty IN ('easy', 'medium', 'hard')) DEFAULT 'medium', + prep_time INTEGER, + cook_time INTEGER, + total_time INTEGER, + servings INTEGER DEFAULT 4, + image_url TEXT, + source_url TEXT, + is_favorite INTEGER NOT NULL DEFAULT 0, + created_at TEXT NOT NULL DEFAULT (datetime('now')), + updated_at TEXT NOT NULL DEFAULT (datetime('now')) +); + +-- Recipe Tags (many-to-many) +CREATE TABLE IF NOT EXISTS recipe_tags ( + recipe_id TEXT NOT NULL REFERENCES recipes(id) ON DELETE CASCADE, + tag_id TEXT NOT NULL REFERENCES tags(id) ON DELETE CASCADE, + PRIMARY KEY (recipe_id, tag_id) +); + +-- Ingredients +CREATE TABLE IF NOT EXISTS ingredients ( + id TEXT PRIMARY KEY, + recipe_id TEXT NOT NULL REFERENCES recipes(id) ON DELETE CASCADE, + amount REAL, + unit TEXT, + name TEXT NOT NULL, + group_name TEXT, + sort_order INTEGER NOT NULL DEFAULT 0 +); + +-- Steps +CREATE TABLE IF NOT EXISTS steps ( + id TEXT PRIMARY KEY, + recipe_id TEXT NOT NULL REFERENCES recipes(id) ON DELETE CASCADE, + step_number INTEGER NOT NULL, + instruction TEXT NOT NULL, + duration_minutes INTEGER, + image_url TEXT +); + +-- Notes +CREATE TABLE IF NOT EXISTS notes ( + id TEXT PRIMARY KEY, + recipe_id TEXT NOT NULL REFERENCES recipes(id) ON DELETE CASCADE, + content TEXT NOT NULL, + created_at TEXT NOT NULL DEFAULT (datetime('now')) +); + +-- Shopping Items +CREATE TABLE IF NOT EXISTS shopping_items ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL, + amount REAL, + unit TEXT, + checked INTEGER NOT NULL DEFAULT 0, + recipe_id TEXT REFERENCES recipes(id) ON DELETE SET NULL, + created_at TEXT NOT NULL DEFAULT (datetime('now')) +); + +-- FTS5 for recipes +CREATE VIRTUAL TABLE IF NOT EXISTS recipes_fts USING fts5( + title, description, content=recipes, content_rowid=rowid +); + +CREATE TRIGGER IF NOT EXISTS recipes_ai AFTER INSERT ON recipes BEGIN + INSERT INTO recipes_fts(rowid, title, description) VALUES (new.rowid, new.title, new.description); +END; + +CREATE TRIGGER IF NOT EXISTS recipes_ad AFTER DELETE ON recipes BEGIN + INSERT INTO recipes_fts(recipes_fts, rowid, title, description) VALUES ('delete', old.rowid, old.title, old.description); +END; + +CREATE TRIGGER IF NOT EXISTS recipes_au AFTER UPDATE ON recipes BEGIN + INSERT INTO recipes_fts(recipes_fts, rowid, title, description) VALUES ('delete', old.rowid, old.title, old.description); + INSERT INTO recipes_fts(rowid, title, description) VALUES (new.rowid, new.title, new.description); +END; + +-- FTS5 for ingredients +CREATE VIRTUAL TABLE IF NOT EXISTS ingredients_fts USING fts5( + name, content=ingredients, content_rowid=rowid +); + +CREATE TRIGGER IF NOT EXISTS ingredients_ai AFTER INSERT ON ingredients BEGIN + INSERT INTO ingredients_fts(rowid, name) VALUES (new.rowid, new.name); +END; + +CREATE TRIGGER IF NOT EXISTS ingredients_ad AFTER DELETE ON ingredients BEGIN + INSERT INTO ingredients_fts(ingredients_fts, rowid, name) VALUES ('delete', old.rowid, old.name); +END; + +CREATE TRIGGER IF NOT EXISTS ingredients_au AFTER UPDATE ON ingredients BEGIN + INSERT INTO ingredients_fts(ingredients_fts, rowid, name) VALUES ('delete', old.rowid, old.name); + INSERT INTO ingredients_fts(rowid, name) VALUES (new.rowid, new.name); +END; + +-- Indexes +CREATE INDEX IF NOT EXISTS idx_recipes_category ON recipes(category_id); +CREATE INDEX IF NOT EXISTS idx_recipes_slug ON recipes(slug); +CREATE INDEX IF NOT EXISTS idx_recipes_favorite ON recipes(is_favorite); +CREATE INDEX IF NOT EXISTS idx_ingredients_recipe ON ingredients(recipe_id); +CREATE INDEX IF NOT EXISTS idx_steps_recipe ON steps(recipe_id); +CREATE INDEX IF NOT EXISTS idx_notes_recipe ON notes(recipe_id); diff --git a/backend/src/index.ts b/backend/src/index.ts new file mode 100644 index 0000000..1a68dd5 --- /dev/null +++ b/backend/src/index.ts @@ -0,0 +1,18 @@ +import { buildApp } from './app.js'; +import { runMigrations } from './db/migrate.js'; + +const PORT = Number(process.env.PORT || 6001); + +async function main() { + console.log('Running migrations...'); + runMigrations(); + + const app = await buildApp(); + await app.listen({ port: PORT, host: '0.0.0.0' }); + console.log(`Server running on http://localhost:${PORT}`); +} + +main().catch((err) => { + console.error(err); + process.exit(1); +}); diff --git a/backend/src/routes/bot.ts b/backend/src/routes/bot.ts new file mode 100644 index 0000000..6ae3f28 --- /dev/null +++ b/backend/src/routes/bot.ts @@ -0,0 +1,43 @@ +import { FastifyInstance } from 'fastify'; +import * as recipeSvc from '../services/recipe.service.js'; +import * as imageSvc from '../services/image.service.js'; + +export async function botRoutes(app: FastifyInstance) { + const BOT_TOKEN = process.env.BOT_API_TOKEN; + + app.addHook('onRequest', async (request, reply) => { + if (!BOT_TOKEN) return reply.status(503).send({ error: 'Bot API not configured' }); + const auth = request.headers.authorization; + if (!auth || auth !== `Bearer ${BOT_TOKEN}`) { + return reply.status(401).send({ error: 'Unauthorized' }); + } + }); + + app.get('/api/bot/recipes', async (request) => { + const query = request.query as any; + return recipeSvc.listRecipes({ + page: query.page ? Number(query.page) : undefined, + limit: query.limit ? Number(query.limit) : undefined, + }); + }); + + app.post('/api/bot/recipes', async (request, reply) => { + const body = request.body as recipeSvc.CreateRecipeInput; + if (!body.title) return reply.status(400).send({ error: 'title required' }); + const recipe = recipeSvc.createRecipe(body); + return reply.status(201).send(recipe); + }); + + app.post('/api/bot/recipes/:id/image-url', async (request, reply) => { + const { id } = request.params as { id: string }; + const { url } = request.body as { url: string }; + if (!url) return reply.status(400).send({ error: 'url required' }); + try { + const result = await imageSvc.downloadAndSaveImage(id, url); + if (!result) return reply.status(404).send({ error: 'Recipe not found' }); + return result; + } catch (e: any) { + return reply.status(400).send({ error: e.message }); + } + }); +} diff --git a/backend/src/routes/categories.ts b/backend/src/routes/categories.ts new file mode 100644 index 0000000..5b8a245 --- /dev/null +++ b/backend/src/routes/categories.ts @@ -0,0 +1,15 @@ +import { FastifyInstance } from 'fastify'; +import { listCategories, createCategory } from '../services/recipe.service.js'; + +export async function categoryRoutes(app: FastifyInstance) { + app.get('/api/categories', async () => { + return listCategories(); + }); + + app.post('/api/categories', async (request, reply) => { + const { name } = request.body as { name: string }; + if (!name) return reply.status(400).send({ error: 'name required' }); + const cat = createCategory(name); + return reply.status(201).send(cat); + }); +} diff --git a/backend/src/routes/health.ts b/backend/src/routes/health.ts new file mode 100644 index 0000000..b4fd42c --- /dev/null +++ b/backend/src/routes/health.ts @@ -0,0 +1,7 @@ +import { FastifyInstance } from 'fastify'; + +export async function healthRoutes(app: FastifyInstance) { + app.get('/api/health', async () => { + return { status: 'ok', timestamp: new Date().toISOString() }; + }); +} diff --git a/backend/src/routes/images.ts b/backend/src/routes/images.ts new file mode 100644 index 0000000..4d1e6fa --- /dev/null +++ b/backend/src/routes/images.ts @@ -0,0 +1,40 @@ +import { FastifyInstance } from 'fastify'; +import multipart from '@fastify/multipart'; +import fastifyStatic from '@fastify/static'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import * as svc from '../services/image.service.js'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + +export async function imageRoutes(app: FastifyInstance) { + await app.register(multipart, { limits: { fileSize: 10 * 1024 * 1024 } }); + await app.after(); + + await app.register(fastifyStatic, { + root: path.resolve(__dirname, '../../data/images'), + prefix: '/images/', + decorateReply: false, + }); + await app.after(); + + app.post('/api/recipes/:id/image', async (request, reply) => { + const { id } = request.params as { id: string }; + const file = await request.file(); + if (!file) return reply.status(400).send({ error: 'No file uploaded' }); + const buffer = await file.toBuffer(); + const result = await svc.saveRecipeImage(id, buffer); + if (!result) return reply.status(404).send({ error: 'Recipe not found' }); + return result; + }); + + app.post('/api/recipes/:id/steps/:stepNumber/image', async (request, reply) => { + const { id, stepNumber } = request.params as { id: string; stepNumber: string }; + const file = await request.file(); + if (!file) return reply.status(400).send({ error: 'No file uploaded' }); + const buffer = await file.toBuffer(); + const result = await svc.saveStepImage(id, Number(stepNumber), buffer); + if (!result) return reply.status(404).send({ error: 'Step not found' }); + return result; + }); +} diff --git a/backend/src/routes/notes.ts b/backend/src/routes/notes.ts new file mode 100644 index 0000000..df28020 --- /dev/null +++ b/backend/src/routes/notes.ts @@ -0,0 +1,34 @@ +import { FastifyInstance } from 'fastify'; +import * as svc from '../services/note.service.js'; + +export async function noteRoutes(app: FastifyInstance) { + app.get('/api/recipes/:id/notes', async (request) => { + const { id } = request.params as { id: string }; + return svc.listNotes(id); + }); + + app.post('/api/recipes/:id/notes', async (request, reply) => { + const { id } = request.params as { id: string }; + const { content } = request.body as { content: string }; + if (!content) return reply.status(400).send({ error: 'content required' }); + const note = svc.createNote(id, content); + if (!note) return reply.status(404).send({ error: 'Recipe not found' }); + return reply.status(201).send(note); + }); + + app.put('/api/notes/:id', async (request, reply) => { + const { id } = request.params as { id: string }; + const { content } = request.body as { content: string }; + if (!content) return reply.status(400).send({ error: 'content required' }); + const note = svc.updateNote(id, content); + if (!note) return reply.status(404).send({ error: 'Not found' }); + return note; + }); + + app.delete('/api/notes/:id', async (request, reply) => { + const { id } = request.params as { id: string }; + const ok = svc.deleteNote(id); + if (!ok) return reply.status(404).send({ error: 'Not found' }); + return { ok: true }; + }); +} diff --git a/backend/src/routes/recipes.ts b/backend/src/routes/recipes.ts new file mode 100644 index 0000000..0df0957 --- /dev/null +++ b/backend/src/routes/recipes.ts @@ -0,0 +1,59 @@ +import { FastifyInstance } from 'fastify'; +import * as svc from '../services/recipe.service.js'; + +export async function recipeRoutes(app: FastifyInstance) { + app.get('/api/recipes/search', async (request) => { + const { q } = request.query as { q?: string }; + if (!q) return { data: [], total: 0 }; + const results = svc.searchRecipes(q); + return { data: results, total: results.length }; + }); + + app.get('/api/recipes', async (request) => { + const query = request.query as any; + return svc.listRecipes({ + page: query.page ? Number(query.page) : undefined, + limit: query.limit ? Number(query.limit) : undefined, + category_id: query.category_id, + category_slug: query.category, + favorite: query.favorite !== undefined ? query.favorite === 'true' : undefined, + difficulty: query.difficulty, + maxTime: query.maxTime ? Number(query.maxTime) : undefined, + }); + }); + + app.get('/api/recipes/:slug', async (request, reply) => { + const { slug } = request.params as { slug: string }; + const recipe = svc.getRecipeBySlug(slug); + if (!recipe) return reply.status(404).send({ error: 'Not found' }); + return recipe; + }); + + app.post('/api/recipes', async (request, reply) => { + const body = request.body as svc.CreateRecipeInput; + if (!body.title) return reply.status(400).send({ error: 'title required' }); + const recipe = svc.createRecipe(body); + return reply.status(201).send(recipe); + }); + + app.put('/api/recipes/:id', async (request, reply) => { + const { id } = request.params as { id: string }; + const recipe = svc.updateRecipe(id, request.body as any); + if (!recipe) return reply.status(404).send({ error: 'Not found' }); + return recipe; + }); + + app.delete('/api/recipes/:id', async (request, reply) => { + const { id } = request.params as { id: string }; + const ok = svc.deleteRecipe(id); + if (!ok) return reply.status(404).send({ error: 'Not found' }); + return { ok: true }; + }); + + app.patch('/api/recipes/:id/favorite', async (request, reply) => { + const { id } = request.params as { id: string }; + const result = svc.toggleFavorite(id); + if (!result) return reply.status(404).send({ error: 'Not found' }); + return result; + }); +} diff --git a/backend/src/routes/shopping.ts b/backend/src/routes/shopping.ts new file mode 100644 index 0000000..7f705a2 --- /dev/null +++ b/backend/src/routes/shopping.ts @@ -0,0 +1,41 @@ +import { FastifyInstance } from 'fastify'; +import * as svc from '../services/shopping.service.js'; + +export async function shoppingRoutes(app: FastifyInstance) { + app.get('/api/shopping', async () => { + return svc.listItems(); + }); + + app.post('/api/shopping/from-recipe/:id', async (request, reply) => { + const { id } = request.params as { id: string }; + const items = svc.addFromRecipe(id); + if (!items) return reply.status(404).send({ error: 'Recipe not found' }); + return reply.status(201).send({ added: items.length }); + }); + + app.post('/api/shopping', async (request, reply) => { + const { name, amount, unit } = request.body as { name: string; amount?: number; unit?: string }; + if (!name) return reply.status(400).send({ error: 'name required' }); + const item = svc.addItem(name, amount, unit); + return reply.status(201).send(item); + }); + + app.patch('/api/shopping/:id/check', async (request, reply) => { + const { id } = request.params as { id: string }; + const item = svc.toggleCheck(id); + if (!item) return reply.status(404).send({ error: 'Not found' }); + return item; + }); + + app.delete('/api/shopping/checked', async () => { + const count = svc.deleteChecked(); + return { ok: true, deleted: count }; + }); + + app.delete('/api/shopping/:id', async (request, reply) => { + const { id } = request.params as { id: string }; + const ok = svc.deleteItem(id); + if (!ok) return reply.status(404).send({ error: 'Not found' }); + return { ok: true }; + }); +} diff --git a/backend/src/routes/tags.ts b/backend/src/routes/tags.ts new file mode 100644 index 0000000..1d9ff71 --- /dev/null +++ b/backend/src/routes/tags.ts @@ -0,0 +1,15 @@ +import { FastifyInstance } from 'fastify'; +import * as svc from '../services/tag.service.js'; + +export async function tagRoutes(app: FastifyInstance) { + app.get('/api/tags', async () => { + return svc.listTags(); + }); + + app.get('/api/tags/:name/recipes', async (request, reply) => { + const { name } = request.params as { name: string }; + const result = svc.getRecipesByTag(name); + if (!result) return reply.status(404).send({ error: 'Tag not found' }); + return result; + }); +} diff --git a/backend/src/schemas/note.schema.ts b/backend/src/schemas/note.schema.ts new file mode 100644 index 0000000..8062d51 --- /dev/null +++ b/backend/src/schemas/note.schema.ts @@ -0,0 +1,5 @@ +import { z } from 'zod'; + +export const createNoteSchema = z.object({ + content: z.string().min(1), +}); diff --git a/backend/src/schemas/recipe.schema.ts b/backend/src/schemas/recipe.schema.ts new file mode 100644 index 0000000..bed7f58 --- /dev/null +++ b/backend/src/schemas/recipe.schema.ts @@ -0,0 +1,31 @@ +import { z } from 'zod'; + +export const ingredientSchema = z.object({ + amount: z.number().optional(), + unit: z.string().optional(), + name: z.string().min(1), + group_name: z.string().optional(), + sort_order: z.number().optional(), +}); + +export const stepSchema = z.object({ + step_number: z.number().int().min(1), + instruction: z.string().min(1), + duration_minutes: z.number().int().optional(), +}); + +export const createRecipeSchema = z.object({ + title: z.string().min(1), + description: z.string().optional(), + category_id: z.string().optional(), + difficulty: z.enum(['easy', 'medium', 'hard']).optional(), + prep_time: z.number().int().optional(), + cook_time: z.number().int().optional(), + servings: z.number().int().optional(), + image_url: z.string().optional(), + source_url: z.string().optional(), + ingredients: z.array(ingredientSchema).optional(), + steps: z.array(stepSchema).optional(), +}); + +export const updateRecipeSchema = createRecipeSchema.partial(); diff --git a/backend/src/schemas/shopping.schema.ts b/backend/src/schemas/shopping.schema.ts new file mode 100644 index 0000000..909c6a2 --- /dev/null +++ b/backend/src/schemas/shopping.schema.ts @@ -0,0 +1,7 @@ +import { z } from 'zod'; + +export const createShoppingItemSchema = z.object({ + name: z.string().min(1), + amount: z.number().optional(), + unit: z.string().optional(), +}); diff --git a/backend/src/services/image.service.ts b/backend/src/services/image.service.ts new file mode 100644 index 0000000..92e67d1 --- /dev/null +++ b/backend/src/services/image.service.ts @@ -0,0 +1,51 @@ +import { getDb } from '../db/connection.js'; +import sharp from 'sharp'; +import path from 'path'; +import fs from 'fs'; +import { fileURLToPath } from 'url'; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const DATA_DIR = path.resolve(__dirname, '../../data/images'); + +async function ensureDir(dir: string) { + await fs.promises.mkdir(dir, { recursive: true }); +} + +export async function saveRecipeImage(recipeId: string, buffer: Buffer) { + const db = getDb(); + const recipe = db.prepare('SELECT id FROM recipes WHERE id = ?').get(recipeId); + if (!recipe) return null; + + const dir = path.join(DATA_DIR, 'recipes', recipeId); + await ensureDir(dir); + + await sharp(buffer).resize({ width: 1200, withoutEnlargement: true }).webp({ quality: 80 }).toFile(path.join(dir, 'hero.webp')); + await sharp(buffer).resize({ width: 400, withoutEnlargement: true }).webp({ quality: 70 }).toFile(path.join(dir, 'hero_thumb.webp')); + + const imagePath = `/images/recipes/${recipeId}/hero.webp`; + db.prepare('UPDATE recipes SET image_url = ?, updated_at = datetime(\'now\') WHERE id = ?').run(imagePath, recipeId); + return { image_url: imagePath, thumb_url: `/images/recipes/${recipeId}/hero_thumb.webp` }; +} + +export async function saveStepImage(recipeId: string, stepNumber: number, buffer: Buffer) { + const db = getDb(); + const step = db.prepare('SELECT id FROM steps WHERE recipe_id = ? AND step_number = ?').get(recipeId, stepNumber) as any; + if (!step) return null; + + const dir = path.join(DATA_DIR, 'recipes', recipeId, 'steps'); + await ensureDir(dir); + + const filename = `step_${stepNumber}.webp`; + await sharp(buffer).resize({ width: 1200, withoutEnlargement: true }).webp({ quality: 80 }).toFile(path.join(dir, filename)); + + const imageUrl = `/images/recipes/${recipeId}/steps/${filename}`; + db.prepare('UPDATE steps SET image_url = ? WHERE id = ?').run(imageUrl, step.id); + return { image_url: imageUrl }; +} + +export async function downloadAndSaveImage(recipeId: string, url: string) { + const response = await fetch(url); + if (!response.ok) throw new Error(`Failed to download image: ${response.status}`); + const buffer = Buffer.from(await response.arrayBuffer()); + return saveRecipeImage(recipeId, buffer); +} diff --git a/backend/src/services/note.service.ts b/backend/src/services/note.service.ts new file mode 100644 index 0000000..57b83c1 --- /dev/null +++ b/backend/src/services/note.service.ts @@ -0,0 +1,26 @@ +import { getDb } from '../db/connection.js'; +import { ulid } from 'ulid'; + +export function listNotes(recipeId: string) { + return getDb().prepare('SELECT * FROM notes WHERE recipe_id = ? ORDER BY created_at DESC').all(recipeId); +} + +export function createNote(recipeId: string, content: string) { + const db = getDb(); + const recipe = db.prepare('SELECT id FROM recipes WHERE id = ?').get(recipeId); + if (!recipe) return null; + const id = ulid(); + db.prepare('INSERT INTO notes (id, recipe_id, content) VALUES (?, ?, ?)').run(id, recipeId, content); + return db.prepare('SELECT * FROM notes WHERE id = ?').get(id); +} + +export function updateNote(id: string, content: string) { + const db = getDb(); + const result = db.prepare('UPDATE notes SET content = ? WHERE id = ?').run(content, id); + if (result.changes === 0) return null; + return db.prepare('SELECT * FROM notes WHERE id = ?').get(id); +} + +export function deleteNote(id: string): boolean { + return getDb().prepare('DELETE FROM notes WHERE id = ?').run(id).changes > 0; +} diff --git a/backend/src/services/recipe.service.ts b/backend/src/services/recipe.service.ts new file mode 100644 index 0000000..63bbd20 --- /dev/null +++ b/backend/src/services/recipe.service.ts @@ -0,0 +1,197 @@ +import { getDb } from '../db/connection.js'; +import { ulid } from 'ulid'; + +function slugify(text: string): string { + return text + .toLowerCase() + .replace(/Ă€/g, 'ae').replace(/ö/g, 'oe').replace(/ĂŒ/g, 'ue').replace(/ß/g, 'ss') + .replace(/[^a-z0-9]+/g, '-') + .replace(/^-|-$/g, ''); +} + +function ensureUniqueSlug(baseSlug: string, excludeId?: string): string { + const db = getDb(); + let slug = baseSlug; + let i = 1; + while (true) { + const existing = excludeId + ? db.prepare('SELECT id FROM recipes WHERE slug = ? AND id != ?').get(slug, excludeId) + : db.prepare('SELECT id FROM recipes WHERE slug = ?').get(slug); + if (!existing) return slug; + slug = `${baseSlug}-${i++}`; + } +} + +export interface CreateRecipeInput { + title: string; + description?: string; + category_id?: string; + difficulty?: 'easy' | 'medium' | 'hard'; + prep_time?: number; + cook_time?: number; + servings?: number; + image_url?: string; + source_url?: string; + ingredients?: { amount?: number; unit?: string; name: string; group_name?: string; sort_order?: number }[]; + steps?: { step_number: number; instruction: string; duration_minutes?: number }[]; +} + +function mapTimeFields(row: any) { + if (!row) return row; + row.prep_time_min = row.prep_time ?? null; + row.cook_time_min = row.cook_time ?? null; + row.total_time_min = row.total_time ?? null; + return row; +} + +export function listRecipes(opts: { + page?: number; limit?: number; category_id?: string; category_slug?: string; + favorite?: boolean; difficulty?: string; maxTime?: number; +}) { + const db = getDb(); + const page = opts.page || 1; + const limit = opts.limit || 20; + const offset = (page - 1) * limit; + const conditions: string[] = []; + const params: any[] = []; + + if (opts.category_id) { conditions.push('r.category_id = ?'); params.push(opts.category_id); } + if (opts.category_slug) { conditions.push('c.slug = ?'); params.push(opts.category_slug); } + if (opts.favorite !== undefined) { conditions.push('r.is_favorite = ?'); params.push(opts.favorite ? 1 : 0); } + if (opts.difficulty) { conditions.push('r.difficulty = ?'); params.push(opts.difficulty); } + if (opts.maxTime) { conditions.push('r.total_time <= ?'); params.push(opts.maxTime); } + + const where = conditions.length ? 'WHERE ' + conditions.join(' AND ') : ''; + const countRow = db.prepare(`SELECT COUNT(*) as total FROM recipes r LEFT JOIN categories c ON r.category_id = c.id ${where}`).get(...params) as any; + const rows = db.prepare( + `SELECT r.*, c.name as category_name, c.slug as category_slug FROM recipes r LEFT JOIN categories c ON r.category_id = c.id ${where} ORDER BY r.created_at DESC LIMIT ? OFFSET ?` + ).all(...params, limit, offset); + + const data = rows.map(mapTimeFields); + return { data, total: countRow.total, page, limit, totalPages: Math.ceil(countRow.total / limit) }; +} + +export function getRecipeBySlug(slug: string) { + const db = getDb(); + const recipe = db.prepare( + 'SELECT r.*, c.name as category_name FROM recipes r LEFT JOIN categories c ON r.category_id = c.id WHERE r.slug = ?' + ).get(slug) as any; + if (!recipe) return null; + + recipe.ingredients = db.prepare('SELECT * FROM ingredients WHERE recipe_id = ? ORDER BY sort_order').all(recipe.id); + recipe.steps = db.prepare('SELECT * FROM steps WHERE recipe_id = ? ORDER BY step_number').all(recipe.id); + recipe.notes = db.prepare('SELECT * FROM notes WHERE recipe_id = ? ORDER BY created_at DESC').all(recipe.id); + const tagRows = db.prepare( + 'SELECT t.name FROM tags t JOIN recipe_tags rt ON t.id = rt.tag_id WHERE rt.recipe_id = ?' + ).all(recipe.id) as { name: string }[]; + recipe.tags = tagRows.map(t => t.name); + mapTimeFields(recipe); + return recipe; +} + +export function createRecipe(input: CreateRecipeInput) { + const db = getDb(); + const id = ulid(); + const slug = ensureUniqueSlug(slugify(input.title)); + const totalTime = (input.prep_time || 0) + (input.cook_time || 0) || null; + + const insertRecipe = db.prepare(` + INSERT INTO recipes (id, title, slug, description, category_id, difficulty, prep_time, cook_time, total_time, servings, image_url, source_url) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + `); + + const insertIngredient = db.prepare(` + INSERT INTO ingredients (id, recipe_id, amount, unit, name, group_name, sort_order) + VALUES (?, ?, ?, ?, ?, ?, ?) + `); + + const insertStep = db.prepare(` + INSERT INTO steps (id, recipe_id, step_number, instruction, duration_minutes) + VALUES (?, ?, ?, ?, ?) + `); + + const transaction = db.transaction(() => { + insertRecipe.run(id, input.title, slug, input.description || null, input.category_id || null, + input.difficulty || 'medium', input.prep_time || null, input.cook_time || null, totalTime, + input.servings || 4, input.image_url || null, input.source_url || null); + + if (input.ingredients) { + for (let i = 0; i < input.ingredients.length; i++) { + const ing = input.ingredients[i]; + insertIngredient.run(ulid(), id, ing.amount || null, ing.unit || null, ing.name, ing.group_name || null, ing.sort_order ?? i); + } + } + + if (input.steps) { + for (const step of input.steps) { + insertStep.run(ulid(), id, step.step_number, step.instruction, step.duration_minutes || null); + } + } + }); + + transaction(); + return getRecipeBySlug(slug); +} + +export function updateRecipe(id: string, input: Partial) { + const db = getDb(); + const existing = db.prepare('SELECT * FROM recipes WHERE id = ?').get(id) as any; + if (!existing) return null; + + const slug = input.title ? ensureUniqueSlug(slugify(input.title), id) : existing.slug; + const totalTime = ((input.prep_time ?? existing.prep_time) || 0) + ((input.cook_time ?? existing.cook_time) || 0) || null; + + db.prepare(` + UPDATE recipes SET title=?, slug=?, description=?, category_id=?, difficulty=?, prep_time=?, cook_time=?, total_time=?, servings=?, image_url=?, source_url=?, updated_at=datetime('now') + WHERE id=? + `).run( + input.title ?? existing.title, slug, input.description ?? existing.description, + input.category_id ?? existing.category_id, input.difficulty ?? existing.difficulty, + input.prep_time ?? existing.prep_time, input.cook_time ?? existing.cook_time, totalTime, + input.servings ?? existing.servings, input.image_url ?? existing.image_url, + input.source_url ?? existing.source_url, id + ); + + return getRecipeBySlug(slug); +} + +export function deleteRecipe(id: string): boolean { + const result = getDb().prepare('DELETE FROM recipes WHERE id = ?').run(id); + return result.changes > 0; +} + +export function toggleFavorite(id: string) { + const db = getDb(); + const recipe = db.prepare('SELECT is_favorite FROM recipes WHERE id = ?').get(id) as any; + if (!recipe) return null; + const newVal = recipe.is_favorite ? 0 : 1; + db.prepare('UPDATE recipes SET is_favorite = ? WHERE id = ?').run(newVal, id); + return { id, is_favorite: newVal }; +} + +export function searchRecipes(query: string) { + const db = getDb(); + // Add * for prefix matching + const ftsQuery = query.trim().split(/\s+/).map(t => `"${t}"*`).join(' '); + return db.prepare(` + SELECT r.*, c.name as category_name + FROM recipes_fts fts + JOIN recipes r ON r.rowid = fts.rowid + LEFT JOIN categories c ON r.category_id = c.id + WHERE recipes_fts MATCH ? + ORDER BY rank + `).all(ftsQuery).map(mapTimeFields); +} + +export function listCategories() { + return getDb().prepare('SELECT * FROM categories ORDER BY sort_order').all(); +} + +export function createCategory(name: string) { + const db = getDb(); + const id = ulid(); + const slug = name.toLowerCase().replace(/Ă€/g,'ae').replace(/ö/g,'oe').replace(/ĂŒ/g,'ue').replace(/ß/g,'ss').replace(/[^a-z0-9]+/g,'-').replace(/^-|-$/g,''); + const maxOrder = (db.prepare('SELECT MAX(sort_order) as m FROM categories').get() as any).m || 0; + db.prepare('INSERT INTO categories (id, name, slug, sort_order) VALUES (?, ?, ?, ?)').run(id, name, slug, maxOrder + 1); + return { id, name, slug, sort_order: maxOrder + 1 }; +} diff --git a/backend/src/services/shopping.service.ts b/backend/src/services/shopping.service.ts new file mode 100644 index 0000000..8d69e66 --- /dev/null +++ b/backend/src/services/shopping.service.ts @@ -0,0 +1,64 @@ +import { getDb } from '../db/connection.js'; +import { ulid } from 'ulid'; + +export function listItems() { + const db = getDb(); + const items = db.prepare(` + SELECT si.*, r.title as recipe_title + FROM shopping_items si + LEFT JOIN recipes r ON si.recipe_id = r.id + ORDER BY si.checked, si.created_at DESC + `).all() as any[]; + + const grouped: Record = {}; + for (const item of items) { + const key = item.recipe_id || '_custom'; + if (!grouped[key]) { + grouped[key] = { recipe_id: item.recipe_id, recipe_title: item.recipe_title || 'Eigene EintrĂ€ge', items: [] }; + } + grouped[key].items.push(item); + } + return Object.values(grouped); +} + +export function addFromRecipe(recipeId: string) { + const db = getDb(); + const recipe = db.prepare('SELECT id FROM recipes WHERE id = ?').get(recipeId); + if (!recipe) return null; + const ingredients = db.prepare('SELECT * FROM ingredients WHERE recipe_id = ?').all(recipeId) as any[]; + const insert = db.prepare('INSERT INTO shopping_items (id, name, amount, unit, recipe_id) VALUES (?, ?, ?, ?, ?)'); + const added: any[] = []; + const txn = db.transaction(() => { + for (const ing of ingredients) { + const id = ulid(); + insert.run(id, ing.name, ing.amount, ing.unit, recipeId); + added.push({ id, name: ing.name, amount: ing.amount, unit: ing.unit, recipe_id: recipeId, checked: 0 }); + } + }); + txn(); + return added; +} + +export function addItem(name: string, amount?: number, unit?: string) { + const db = getDb(); + const id = ulid(); + db.prepare('INSERT INTO shopping_items (id, name, amount, unit) VALUES (?, ?, ?, ?)').run(id, name, amount ?? null, unit ?? null); + return db.prepare('SELECT * FROM shopping_items WHERE id = ?').get(id); +} + +export function toggleCheck(id: string) { + const db = getDb(); + const item = db.prepare('SELECT * FROM shopping_items WHERE id = ?').get(id) as any; + if (!item) return null; + const newVal = item.checked ? 0 : 1; + db.prepare('UPDATE shopping_items SET checked = ? WHERE id = ?').run(newVal, id); + return { ...item, checked: newVal }; +} + +export function deleteItem(id: string): boolean { + return getDb().prepare('DELETE FROM shopping_items WHERE id = ?').run(id).changes > 0; +} + +export function deleteChecked(): number { + return getDb().prepare('DELETE FROM shopping_items WHERE checked = 1').run().changes; +} diff --git a/backend/src/services/tag.service.ts b/backend/src/services/tag.service.ts new file mode 100644 index 0000000..8aac5dd --- /dev/null +++ b/backend/src/services/tag.service.ts @@ -0,0 +1,26 @@ +import { getDb } from '../db/connection.js'; + +export function listTags() { + return getDb().prepare(` + SELECT t.*, COUNT(rt.recipe_id) as recipe_count + FROM tags t + LEFT JOIN recipe_tags rt ON t.id = rt.tag_id + GROUP BY t.id + ORDER BY t.name + `).all(); +} + +export function getRecipesByTag(tagName: string) { + const db = getDb(); + const tag = db.prepare('SELECT * FROM tags WHERE name = ? OR slug = ?').get(tagName, tagName) as any; + if (!tag) return null; + const recipes = db.prepare(` + SELECT r.*, c.name as category_name + FROM recipes r + JOIN recipe_tags rt ON r.id = rt.recipe_id + LEFT JOIN categories c ON r.category_id = c.id + WHERE rt.tag_id = ? + ORDER BY r.created_at DESC + `).all(tag.id); + return { tag, recipes }; +} diff --git a/backend/tsconfig.json b/backend/tsconfig.json new file mode 100644 index 0000000..e4bcdef --- /dev/null +++ b/backend/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "ES2022", + "moduleResolution": "bundler", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "outDir": "./dist", + "rootDir": "./src", + "declaration": true, + "resolveJsonModule": true, + "sourceMap": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} diff --git a/features/DATA-MODEL.md b/features/DATA-MODEL.md new file mode 100644 index 0000000..601a72f --- /dev/null +++ b/features/DATA-MODEL.md @@ -0,0 +1,366 @@ +# đŸ—„ïž Luna Recipes — Datenmodell + +## 1. Entity-Relationship Übersicht + +``` +┌──────────┐ ┌──────────────┐ ┌──────────┐ +│ Category │────<│ Recipe │>────│ Tag │ +└──────────┘ └──────┬───────┘ └──────────┘ + │ + ┌─────────┌──────────┐ + │ │ │ + ┌─────┮──┐ ┌────┮───┐ ┌───┮────┐ + │Ingredi-│ │ Step │ │ Note │ + │ ent │ │ │ │ │ + └────┬───┘ └────────┘ └────────┘ + │ + ┌────┮────────┐ + │ShoppingItem │ + └─────────────┘ +``` + +## 2. EntitĂ€ten im Detail + +### Recipe (Rezept) +| Feld | Typ | Beschreibung | +|---|---|---| +| id | TEXT (ULID) | PrimĂ€rschlĂŒssel | +| title | TEXT | Rezeptname | +| slug | TEXT | URL-freundlicher Name (unique) | +| description | TEXT | Kurzbeschreibung | +| image_path | TEXT | Pfad zum Hauptbild | +| category_id | TEXT | FK → Category | +| servings | INTEGER | Anzahl Portionen | +| prep_time_min | INTEGER | Vorbereitungszeit in Minuten | +| cook_time_min | INTEGER | Koch-/Backzeit in Minuten | +| total_time_min | INTEGER | Gesamtzeit (computed oder manuell) | +| difficulty | TEXT | 'easy', 'medium', 'hard' | +| source_url | TEXT | Originalquelle (Pinterest-Link etc.) | +| is_favorite | INTEGER | 0/1 Boolean | +| is_draft | INTEGER | 0/1 Entwurf | +| created_at | TEXT | ISO 8601 Timestamp | +| updated_at | TEXT | ISO 8601 Timestamp | +| created_by | TEXT | 'user' oder 'bot' | + +### Category (Kategorie) +| Feld | Typ | Beschreibung | +|---|---|---| +| id | TEXT (ULID) | PrimĂ€rschlĂŒssel | +| name | TEXT | Anzeigename | +| slug | TEXT | URL-freundlich (unique) | +| icon | TEXT | Emoji oder Icon-Name | +| sort_order | INTEGER | Sortierung | +| is_default | INTEGER | Vom System vorgegeben | + +**Standard-Kategorien:** Backen, Torten, FrĂŒhstĂŒck, Mittag, Abend, Snacks, Desserts + +### Tag +| Feld | Typ | Beschreibung | +|---|---|---| +| id | TEXT (ULID) | PrimĂ€rschlĂŒssel | +| name | TEXT | Tag-Name (unique, lowercase) | + +### RecipeTag (n:m VerknĂŒpfung) +| Feld | Typ | Beschreibung | +|---|---|---| +| recipe_id | TEXT | FK → Recipe | +| tag_id | TEXT | FK → Tag | + +### Ingredient (Zutat) +| Feld | Typ | Beschreibung | +|---|---|---| +| id | TEXT (ULID) | PrimĂ€rschlĂŒssel | +| recipe_id | TEXT | FK → Recipe | +| amount | REAL | Menge (nullable fĂŒr "eine Prise") | +| unit | TEXT | Einheit (g, ml, EL, TL, StĂŒck, ...) | +| name | TEXT | Zutatname | +| group_name | TEXT | Optionale Gruppe ("FĂŒr den Teig", "FĂŒr die Creme") | +| sort_order | INTEGER | Reihenfolge | + +### Step (Zubereitungsschritt) +| Feld | Typ | Beschreibung | +|---|---|---| +| id | TEXT (ULID) | PrimĂ€rschlĂŒssel | +| recipe_id | TEXT | FK → Recipe | +| step_number | INTEGER | Schrittnummer | +| instruction | TEXT | Anweisung | +| image_path | TEXT | Optionales Bild zum Schritt | +| timer_minutes | INTEGER | Timer in Minuten (nullable) | +| timer_label | TEXT | Timer-Beschreibung ("Im Ofen backen") | + +### Note (Notiz) +| Feld | Typ | Beschreibung | +|---|---|---| +| id | TEXT (ULID) | PrimĂ€rschlĂŒssel | +| recipe_id | TEXT | FK → Recipe | +| content | TEXT | Markdown-Text | +| created_at | TEXT | ISO 8601 | +| updated_at | TEXT | ISO 8601 | + +### ShoppingItem (Einkaufslisteneintrag) +| Feld | Typ | Beschreibung | +|---|---|---| +| id | TEXT (ULID) | PrimĂ€rschlĂŒssel | +| ingredient_id | TEXT | FK → Ingredient (nullable) | +| recipe_id | TEXT | FK → Recipe (nullable, fĂŒr Gruppierung) | +| name | TEXT | Anzeigename | +| amount | REAL | Menge | +| unit | TEXT | Einheit | +| is_checked | INTEGER | 0/1 abgehakt | +| is_custom | INTEGER | 0/1 manuell hinzugefĂŒgt | +| sort_order | INTEGER | Sortierung | +| created_at | TEXT | ISO 8601 | + +## 3. SQLite Schema + +```sql +-- Pragmas +PRAGMA journal_mode = WAL; +PRAGMA foreign_keys = ON; + +-- ============================================================ +-- Kategorien +-- ============================================================ +CREATE TABLE categories ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL, + slug TEXT NOT NULL UNIQUE, + icon TEXT DEFAULT 'đŸœïž', + sort_order INTEGER DEFAULT 0, + is_default INTEGER DEFAULT 0 +); + +INSERT INTO categories (id, name, slug, icon, sort_order, is_default) VALUES + ('cat_backen', 'Backen', 'backen', '🧁', 1, 1), + ('cat_torten', 'Torten', 'torten', '🎂', 2, 1), + ('cat_fruehstueck','FrĂŒhstĂŒck', 'fruehstueck','đŸ„', 3, 1), + ('cat_mittag', 'Mittag', 'mittag', '🍝', 4, 1), + ('cat_abend', 'Abend', 'abend', 'đŸ„˜', 5, 1), + ('cat_snacks', 'Snacks', 'snacks', 'đŸ„š', 6, 1), + ('cat_desserts', 'Desserts', 'desserts', '🍼', 7, 1); + +-- ============================================================ +-- Tags +-- ============================================================ +CREATE TABLE tags ( + id TEXT PRIMARY KEY, + name TEXT NOT NULL UNIQUE +); + +CREATE INDEX idx_tags_name ON tags(name); + +-- ============================================================ +-- Rezepte +-- ============================================================ +CREATE TABLE recipes ( + id TEXT PRIMARY KEY, + title TEXT NOT NULL, + slug TEXT NOT NULL UNIQUE, + description TEXT, + image_path TEXT, + category_id TEXT NOT NULL REFERENCES categories(id), + servings INTEGER DEFAULT 4, + prep_time_min INTEGER, + cook_time_min INTEGER, + total_time_min INTEGER, + difficulty TEXT DEFAULT 'medium' CHECK(difficulty IN ('easy','medium','hard')), + source_url TEXT, + is_favorite INTEGER DEFAULT 0, + is_draft INTEGER DEFAULT 0, + created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ','now')), + updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ','now')), + created_by TEXT DEFAULT 'user' +); + +CREATE INDEX idx_recipes_category ON recipes(category_id); +CREATE INDEX idx_recipes_favorite ON recipes(is_favorite) WHERE is_favorite = 1; +CREATE INDEX idx_recipes_slug ON recipes(slug); + +-- Volltextsuche +CREATE VIRTUAL TABLE recipes_fts USING fts5( + title, description, content='recipes', content_rowid='rowid' +); + +-- Trigger fĂŒr FTS-Sync +CREATE TRIGGER recipes_ai AFTER INSERT ON recipes BEGIN + INSERT INTO recipes_fts(rowid, title, description) + VALUES (new.rowid, new.title, new.description); +END; + +CREATE TRIGGER recipes_ad AFTER DELETE ON recipes BEGIN + INSERT INTO recipes_fts(recipes_fts, rowid, title, description) + VALUES ('delete', old.rowid, old.title, old.description); +END; + +CREATE TRIGGER recipes_au AFTER UPDATE ON recipes BEGIN + INSERT INTO recipes_fts(recipes_fts, rowid, title, description) + VALUES ('delete', old.rowid, old.title, old.description); + INSERT INTO recipes_fts(rowid, title, description) + VALUES (new.rowid, new.title, new.description); +END; + +-- Auto-Update updated_at +CREATE TRIGGER recipes_updated AFTER UPDATE ON recipes BEGIN + UPDATE recipes SET updated_at = strftime('%Y-%m-%dT%H:%M:%SZ','now') + WHERE id = new.id; +END; + +-- ============================================================ +-- Recipe-Tags (n:m) +-- ============================================================ +CREATE TABLE recipe_tags ( + recipe_id TEXT NOT NULL REFERENCES recipes(id) ON DELETE CASCADE, + tag_id TEXT NOT NULL REFERENCES tags(id) ON DELETE CASCADE, + PRIMARY KEY (recipe_id, tag_id) +); + +CREATE INDEX idx_recipe_tags_tag ON recipe_tags(tag_id); + +-- ============================================================ +-- Zutaten +-- ============================================================ +CREATE TABLE ingredients ( + id TEXT PRIMARY KEY, + recipe_id TEXT NOT NULL REFERENCES recipes(id) ON DELETE CASCADE, + amount REAL, + unit TEXT, + name TEXT NOT NULL, + group_name TEXT, + sort_order INTEGER DEFAULT 0 +); + +CREATE INDEX idx_ingredients_recipe ON ingredients(recipe_id); + +-- Zutaten-Volltextsuche (fĂŒr "Suche nach Zutat") +CREATE VIRTUAL TABLE ingredients_fts USING fts5( + name, content='ingredients', content_rowid='rowid' +); + +CREATE TRIGGER ingredients_ai AFTER INSERT ON ingredients BEGIN + INSERT INTO ingredients_fts(rowid, name) VALUES (new.rowid, new.name); +END; + +CREATE TRIGGER ingredients_ad AFTER DELETE ON ingredients BEGIN + INSERT INTO ingredients_fts(ingredients_fts, rowid, name) + VALUES ('delete', old.rowid, old.name); +END; + +-- ============================================================ +-- Zubereitungsschritte +-- ============================================================ +CREATE TABLE steps ( + id TEXT PRIMARY KEY, + recipe_id TEXT NOT NULL REFERENCES recipes(id) ON DELETE CASCADE, + step_number INTEGER NOT NULL, + instruction TEXT NOT NULL, + image_path TEXT, + timer_minutes INTEGER, + timer_label TEXT +); + +CREATE INDEX idx_steps_recipe ON steps(recipe_id); + +-- ============================================================ +-- Notizen +-- ============================================================ +CREATE TABLE notes ( + id TEXT PRIMARY KEY, + recipe_id TEXT NOT NULL REFERENCES recipes(id) ON DELETE CASCADE, + content TEXT NOT NULL, + created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ','now')), + updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ','now')) +); + +CREATE INDEX idx_notes_recipe ON notes(recipe_id); + +-- ============================================================ +-- Einkaufsliste +-- ============================================================ +CREATE TABLE shopping_items ( + id TEXT PRIMARY KEY, + ingredient_id TEXT REFERENCES ingredients(id) ON DELETE SET NULL, + recipe_id TEXT REFERENCES recipes(id) ON DELETE SET NULL, + name TEXT NOT NULL, + amount REAL, + unit TEXT, + is_checked INTEGER DEFAULT 0, + is_custom INTEGER DEFAULT 0, + sort_order INTEGER DEFAULT 0, + created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ','now')) +); + +CREATE INDEX idx_shopping_recipe ON shopping_items(recipe_id); +CREATE INDEX idx_shopping_checked ON shopping_items(is_checked); +``` + +## 4. Beispiel-Queries + +```sql +-- Alle Rezepte einer Kategorie, neuste zuerst +SELECT r.*, c.name as category_name, c.icon as category_icon +FROM recipes r +JOIN categories c ON r.category_id = c.id +WHERE c.slug = 'torten' AND r.is_draft = 0 +ORDER BY r.created_at DESC; + +-- Volltextsuche +SELECT r.* +FROM recipes r +JOIN recipes_fts ON recipes_fts.rowid = r.rowid +WHERE recipes_fts MATCH 'schokolade' +ORDER BY rank; + +-- Rezepte die eine bestimmte Zutat enthalten +SELECT DISTINCT r.* +FROM recipes r +JOIN ingredients i ON i.recipe_id = r.id +JOIN ingredients_fts ON ingredients_fts.rowid = i.rowid +WHERE ingredients_fts MATCH 'mascarpone'; + +-- Komplettansicht eines Rezepts +SELECT r.*, c.name as category_name +FROM recipes r +JOIN categories c ON r.category_id = c.id +WHERE r.slug = 'schwarzwaelder-kirschtorte'; + +-- Zutaten fĂŒr Einkaufsliste generieren +INSERT INTO shopping_items (id, ingredient_id, recipe_id, name, amount, unit) +SELECT + 'shop_' || hex(randomblob(8)), + i.id, + i.recipe_id, + i.name, + i.amount, + i.unit +FROM ingredients i +WHERE i.recipe_id = ?; + +-- Einkaufsliste gruppiert nach Rezept +SELECT si.*, r.title as recipe_title +FROM shopping_items si +LEFT JOIN recipes r ON si.recipe_id = r.id +ORDER BY si.is_checked ASC, r.title, si.sort_order; +``` + +## 5. ID-Strategie + +**ULID** (Universally Unique Lexicographically Sortable Identifier) statt Auto-Increment: +- Sortierbar nach Erstellzeitpunkt +- Generierbar auf Client und Server (offline-fĂ€hig) +- Keine Kollisionen bei Bot-API + UI gleichzeitig +- Format: `01ARZ3NDEKTSV4RRFFQ69G5FAV` (26 Zeichen) + +## 6. Bild-Speicherung + +``` +/data/images/ + recipes/ + {recipe_id}/ + hero.webp ← Hauptbild (max 1200px breit) + hero_thumb.webp ← Thumbnail (400px) + step_{n}.webp ← Schrittbilder +``` + +- Format: WebP (beste Kompression fĂŒr Web) +- Thumbnails automatisch beim Upload generiert +- Bilder werden ĂŒber statische Route ausgeliefert: `/images/recipes/{id}/hero.webp` diff --git a/features/DESIGN-CONCEPT.md b/features/DESIGN-CONCEPT.md new file mode 100644 index 0000000..880b87d --- /dev/null +++ b/features/DESIGN-CONCEPT.md @@ -0,0 +1,344 @@ +# 🎹 Luna Recipes — Design-Konzept + +## 1. Farbschema + +Warm, einladend, modern-feminin ohne kitschig zu wirken. Inspiriert von Backzutaten: Vanille, Karamell, Beeren. + +| Rolle | Farbe | Hex | Verwendung | +|---|---|---|---| +| **Primary** | Dusty Rose | `#C4737E` | Buttons, aktive States, Akzente | +| **Primary Light** | Soft Blush | `#F2D7DB` | Hover, Badges, Tags | +| **Secondary** | Warm Caramel | `#D4A574` | SekundĂ€re Buttons, Icons | +| **Background** | Cream White | `#FBF8F5` | Seitenhintergrund | +| **Surface** | Pure White | `#FFFFFF` | Cards, Modals | +| **Text Primary** | Espresso | `#2D2016` | Überschriften, Body | +| **Text Secondary** | Warm Grey | `#7A6E65` | Subtexte, Metadaten | +| **Success** | Sage Green | `#7BAE7F` | Timer fertig, Erfolg | +| **Error** | Berry Red | `#C94C4C` | Fehler, Löschen | +| **Border** | Sand | `#E8E0D8` | Trennlinien, Card-Borders | + +### Dark Mode (optional, Phase 2) +- Background: `#1A1614` +- Surface: `#2D2620` +- Text: `#F5EDE8` + +## 2. Typografie + +| Rolle | Font | Gewicht | GrĂ¶ĂŸe | +|---|---|---|---| +| **Logo/Brand** | *Playfair Display* | 700 | 28px | +| **H1** | *Playfair Display* | 600 | 24px | +| **H2** | *Playfair Display* | 600 | 20px | +| **H3** | *Inter* | 600 | 17px | +| **Body** | *Inter* | 400 | 15px | +| **Small/Meta** | *Inter* | 400 | 13px | +| **Kochmodus** | *Inter* | 500 | 22–28px | +| **Timer** | *JetBrains Mono* | 500 | 48px | + +> Playfair Display fĂŒr Eleganz in Überschriften, Inter als saubere UI-Schrift. Monospace nur fĂŒr Timer-Anzeige. + +## 3. Screen-Übersicht + +``` +┌─────────────────────────────────────────────┐ +│ App-Struktur │ +├────────────────────────────────────────────── +│ │ +│ đŸ“± Bottom Navigation: │ +│ [Startseite] [Suche] [+Neu] [Liste] [Me] │ +│ │ +│ Screens: │ +│ ├── Startseite (Feed) │ +│ ├── Kategorie-Ansicht │ +│ ├── Suche + Filter │ +│ ├── Rezept-Detail │ +│ │ ├── Kochmodus (Fullscreen) │ +│ │ └── Notizen-Sheet │ +│ ├── Rezept erstellen/bearbeiten │ +│ ├── Einkaufsliste │ +│ ├── Profil / Einstellungen │ +│ └── Onboarding (Erststart) │ +│ │ +└─────────────────────────────────────────────┘ +``` + +## 4. Component-Liste + +### Layout +- `AppShell` — Wrapper mit Bottom-Nav +- `BottomNav` — 5 Icons, aktiver State mit Farbe + Label +- `TopBar` — Kontextuell: Titel, Back-Button, Actions +- `FullscreenOverlay` — FĂŒr Kochmodus + +### Cards +- `RecipeCard` — Foto (3:4), Titel, Kategorie-Badge, Dauer, Favorit-Herz +- `RecipeCardSmall` — Horizontal, Thumbnail links, Infos rechts +- `CategoryCard` — Rundes Bild + Label darunter + +### Rezept-Detail +- `HeroImage` — Parallax-Scroll Foto oben +- `RecipeMeta` — Dauer, Portionen, Schwierigkeit als Icons +- `IngredientList` — Checkbare Zutatenliste mit Mengenrechner +- `StepList` — Nummerierte Schritte mit optionalen Bildern +- `NoteSection` — Eigene Notizen mit Bearbeiten-Button +- `ActionBar` — Kochmodus starten, zur Liste hinzufĂŒgen, Teilen + +### Kochmodus +- `CookingStep` — Großer Text, Schrittnummer, Swipe-Geste +- `CookingTimer` — Kreisförmiger Countdown, Vibration bei Ende +- `CookingProgress` — Fortschrittsbalken oben +- `CookingNav` — Vor/ZurĂŒck-Buttons unten + +### Suche & Filter +- `SearchBar` — Prominent, mit Mikrofon-Icon (Phase 2) +- `FilterChips` — Horizontale Scroll-Chips (Kategorie, Zeit, Zutat) +- `FilterSheet` — Bottom-Sheet mit erweiterten Filtern + +### Einkaufsliste +- `ShoppingItem` — Checkbox + Zutat + Menge + Rezeptherkunft +- `ShoppingSection` — Gruppiert nach Rezept oder Abteilung +- `AddItemInput` — Schnelles HinzufĂŒgen eigener EintrĂ€ge + +### Formulare +- `RecipeForm` — Multi-Step Formular fĂŒr Rezepterstellung +- `ImageUpload` — Drag/Drop + Kamera-Auslöser +- `IngredientInput` — Menge + Einheit + Zutat als Inline-Row +- `StepInput` — Textfeld + optionales Bild + Timer-Feld + +### Allgemein +- `Button` — Primary, Secondary, Ghost, Danger Varianten +- `Badge` — Kategorie-Tags farblich kodiert +- `Toast` — Erfolgs-/Fehlermeldungen +- `EmptyState` — Illustration + Text wenn Liste leer +- `Skeleton` — Loading-Platzhalter fĂŒr Cards + +## 5. Wireframe-Beschreibungen + +### 5.1 Startseite (Feed) + +``` +┌──────────────────────────┐ +│ 🍰 Luna Recipes [đŸ‘€] │ ← TopBar mit Logo + Profil-Avatar +├─────────────────────────── +│ ○Backen ○Torten ○Mittag │ ← Horizontale Kategorie-Chips (scrollbar) +│ ○FrĂŒhstĂŒck ○Snacks ... │ +├─────────────────────────── +│ ┌────────┐ ┌────────┐ │ +│ │ đŸ“· │ │ đŸ“· │ │ ← Pinterest-artiges Masonry Grid +│ │ │ │ groß │ │ Unterschiedliche Höhen +│ │ Titel │ │ │ │ Tap → Rezept-Detail +│ │ 30min ❀│ │ Titel │ │ +│ └────────┘ │ 45min ❀│ │ +│ ┌────────┐ └────────┘ │ +│ │ đŸ“· │ ┌────────┐ │ +│ │ Titel │ │ đŸ“· │ │ +│ │ 20min ❀│ │ Titel │ │ +│ └────────┘ └────────┘ │ +├─────────────────────────── +│ [🏠] [🔍] [➕] [🛒] [đŸ‘€] │ ← Bottom Navigation +└──────────────────────────┘ +``` + +- Standard: Alle Rezepte, neuste zuerst +- Kategorie-Chips filtern den Feed inline +- Pull-to-Refresh +- Endlos-Scroll mit Lazy Loading +- Favorit-Herz direkt auf der Card antippbar + +### 5.2 Suche + Filter + +``` +┌──────────────────────────┐ +│ [← ] 🔍 Suche... [✕] │ ← Autofokus auf Suchfeld +├─────────────────────────── +│ Letzte Suchen: │ +│ Schokoladentorte Pasta │ ← Antippbare Tags +├─────────────────────────── +│ [Kategorie â–Œ] [Zeit â–Œ] │ ← Filter-Chips +│ [Schwierigkeit â–Œ] │ +├─────────────────────────── +│ 3 Ergebnisse │ +│ ┌────────────────────┐ │ +│ │ đŸ–Œ │ SchwarzwĂ€lder │ │ ← RecipeCardSmall Layout +│ │ │ Kirschtorte │ │ Horizontal fĂŒr Suchergebnisse +│ │ │ ⏱90min ⭐Mittel │ │ +│ └────────────────────┘ │ +│ ┌────────────────────┐ │ +│ │ đŸ–Œ │ Schoko-Mousse │ │ +│ └────────────────────┘ │ +└──────────────────────────┘ +``` + +- Suche durchsucht: Titel, Zutaten, Tags, Notizen +- Debounced (300ms) Live-Ergebnisse +- Filter kombinierbar (AND-VerknĂŒpfung) +- Zeitfilter: <15min, 15–30, 30–60, >60min + +### 5.3 Rezept-Detail + +``` +┌──────────────────────────┐ +│ [←] [❀] [⋯]│ ← Floating ĂŒber Hero-Bild +│ │ +│ ┌──────────────┐ │ +│ │ │ │ ← Hero-Image, 16:10 +│ │ đŸ“· Foto │ │ Parallax beim Scrollen +│ │ │ │ +│ └──────────────┘ │ +├─────────────────────────── +│ SchwarzwĂ€lder Kirschtorte│ ← H1 Playfair Display +│ đŸ· Torten ⏱ 90min │ +│ đŸ‘€ 8 Portionen ⭐ Mittel │ +├─────────────────────────── +│ [🍳 Kochen] [🛒 Liste] │ ← Primary + Secondary Button +├─────────────────────────── +│ ── Zutaten ──────────────│ +│ Portionen: [−] 8 [+] │ ← Mengenrechner +│ ☐ 200g Mehl │ +│ ☐ 150g Zucker │ ← Antippbar → Einkaufsliste +│ ☐ 5 Eier │ +│ ☐ 500ml Sahne │ +│ ... │ +├─────────────────────────── +│ ── Zubereitung ──────────│ +│ 1. Eier trennen und... │ +│ 2. Mehl mit Kakao... │ ← Kompakte Schritt-Liste +│ 3. Backofen auf 180°... │ +│ ... │ +├─────────────────────────── +│ ── Meine Notizen ────────│ +│ 📝 "NĂ€chstes Mal weniger │ ← Editierbar +│ Zucker, dafĂŒr mehr │ +│ Kirschen!" │ +│ [✏ Bearbeiten] │ +├─────────────────────────── +│ [🏠] [🔍] [➕] [🛒] [đŸ‘€] │ +└──────────────────────────┘ +``` + +- Drei-Punkte-MenĂŒ (⋯): Bearbeiten, Teilen, Löschen +- Zutaten-Checkbox → einzeln zur Einkaufsliste +- Portionen-Rechner skaliert alle Mengen live +- Notizen: Inline-Edit, Markdown-UnterstĂŒtzung + +### 5.4 Kochmodus (Fullscreen) + +``` +┌──────────────────────────┐ +│ Schritt 3 von 12 [✕] │ ← Progress-Info + Schließen +│ ████████░░░░░░░░░░░░░░░░ │ ← Fortschrittsbalken +├─────────────────────────── +│ │ +│ │ +│ Backofen auf 180°C │ ← GROSSE SCHRIFT (22–28px) +│ Ober-/Unterhitze │ Zentriert +│ vorheizen. │ Max 3-4 Zeilen +│ │ +│ │ +│ ┌──────────┐ │ +│ │ 05:00 │ │ ← Timer (falls Schritt Timer hat) +│ │ ▶ Start │ │ Kreisförmig +│ └──────────┘ │ +│ │ +├─────────────────────────── +│ [← ZurĂŒck] [Weiter →] │ ← Navigation + Swipe-Geste +└──────────────────────────┘ +``` + +- Bildschirm bleibt an (Wake Lock API) +- Swipe links/rechts fĂŒr Navigation +- Timer: Antippen startet, Vibration + Sound bei 0:00 +- Mehrere Timer gleichzeitig möglich (Badge-Anzeige) +- Schließen fragt "Wirklich beenden?" + +### 5.5 Einkaufsliste + +``` +┌──────────────────────────┐ +│ Einkaufsliste [🗑 ✓] │ ← Erledigte löschen +├─────────────────────────── +│ [+ Eigenen Artikel ...] │ ← Quick-Add Input +├─────────────────────────── +│ 🍰 SchwarzwĂ€lder Kirsch. │ ← Gruppiert nach Rezept +│ ☐ 200g Mehl │ +│ ☑ 150g Zucker │ ← Durchgestrichen +│ ☐ 5 Eier │ +│ ☐ 500ml Sahne │ +├─────────────────────────── +│ đŸ„— Caesar Salad │ +│ ☐ 1 Römersalat │ +│ ☐ Parmesan │ +├─────────────────────────── +│ 📝 Eigene │ +│ ☐ KĂŒchenrolle │ +├─────────────────────────── +│ [🏠] [🔍] [➕] [🛒] [đŸ‘€] │ +└──────────────────────────┘ +``` + +- Gleiche Zutaten aus verschiedenen Rezepten werden zusammengefasst (Phase 2) +- Wisch nach links → Artikel entfernen +- Sortierbar: nach Rezept oder nach Abteilung +- Offline verfĂŒgbar (PWA!) + +### 5.6 Rezept erstellen/bearbeiten + +``` +┌──────────────────────────┐ +│ [✕] Neues Rezept [Save] │ +├─────────────────────────── +│ Schritt 1 von 4 │ +│ ●───○───○───○ │ ← Stepper +├─────────────────────────── +│ │ +│ [đŸ“· Foto hinzufĂŒgen] │ ← Kamera oder Galerie +│ │ +│ Titel * │ +│ [________________________]│ +│ │ +│ Kategorie * │ +│ [Backen â–Œ] │ +│ │ +│ Tags │ +│ [Schoko] [Torte] [+ ...]│ +│ │ +│ Portionen Dauer │ +│ [_8_] [_90_] min │ +│ │ +│ Schwierigkeit │ +│ ○ Einfach ● Mittel ○ Pro│ +│ │ +│ [Weiter →] │ +└──────────────────────────┘ +``` + +- 4 Schritte: Basis → Zutaten → Zubereitung → Vorschau +- Auto-Save als Entwurf +- Zutaten: dynamische Rows (Menge + Einheit + Name) +- Zubereitung: Schritte mit optionalem Timer pro Schritt + +### 5.7 Profil / Einstellungen + +- Anzahl Rezepte, Favoriten +- Kategorien verwalten (eigene hinzufĂŒgen) +- Einheiten-PrĂ€ferenz (metrisch/imperial) +- Dark Mode Toggle +- Daten exportieren/importieren +- App-Version & Info + +## 6. Design-Prinzipien + +1. **Fotos im Fokus** — Große, appetitliche Bilder treiben die Navigation +2. **One-Thumb-Use** — Alle wichtigen Aktionen im Daumenbereich +3. **Kochmodus = Stressfrei** — Große Schrift, einfache Navigation, keine Ablenkung +4. **Schnelles Wiederfinden** — Suche, Kategorien, Favoriten auf max 2 Taps +5. **Offline First** — Einkaufsliste und gespeicherte Rezepte immer verfĂŒgbar + +## 7. Animationen & Micro-Interactions + +- Card-Tap: Sanftes Scale-Up (0.98 → 1.0) +- Favorit-Herz: Kurze Bounce-Animation + Farbwechsel +- Kochmodus-Swipe: Slide-Transition zwischen Schritten +- Timer-Ende: Pulsieren + Vibration +- Pull-to-Refresh: Custom Cupcake-Animation (Phase 2) +- Page-Transitions: Shared Element Transition fĂŒr Hero-Image (Card → Detail) diff --git a/features/LESSONS-FROM-WERK.md b/features/LESSONS-FROM-WERK.md new file mode 100644 index 0000000..2bd02aa --- /dev/null +++ b/features/LESSONS-FROM-WERK.md @@ -0,0 +1,27 @@ +# Lessons from WERK — Was wir bei der Rezept-App NICHT wiederholen + +## Architektur +- **Kein Monorepo** — Eine App, ein Repo, fertig +- **Kein shared-stubs Chaos** — Kein Packages-Ordner, alles in einem Projekt +- **SQLite statt PostgreSQL** — Kein Docker fĂŒr DB nötig, einfacher +- **Kein SSR** — Reines SPA/PWA, kein hydrateRoot-Desaster + +## Frontend +- **Relative API-URLs** — Kein hardcoded localhost in .env +- **Keine Radix Dialog Forms** — Forms als eigene Seiten/Routes +- **Mobile-first testen** — Von Anfang an, nicht nachtrĂ€glich + +## Backend +- **Fastify JWT richtig** — `register(jwt); await app.after();` +- **NODE_ENV=production** in Deployment, immer +- **Kein pino-pretty** in Production + +## Deployment +- **Docker simpel** — Ein Container, ein Service +- **Keine Caddy URI-Rewrites** — Einfaches Routing +- **CORS von Anfang an richtig** — Mit Port testen + +## Vorgehen +- **Inkrementell** — Erst lauffĂ€higes Minimum, dann Features +- **Jeden Schritt testen** — Nicht 5 Features auf einmal, einzeln bauen + verifizieren +- **Agent-Tasks klein halten** — Ein Task = eine Sache diff --git a/features/TECH-STACK.md b/features/TECH-STACK.md new file mode 100644 index 0000000..86c1fd9 --- /dev/null +++ b/features/TECH-STACK.md @@ -0,0 +1,418 @@ +# ⚙ Luna Recipes — Tech-Stack + +## 1. Übersicht + +``` +┌─────────────────────────────────────────┐ +│ Frontend (PWA) │ +│ React 19 + Vite + TailwindCSS v4 │ +│ React Router v7 · Tanstack Query v5 │ +├────────────────────────────────────────── +│ Backend (API) │ +│ Fastify v5 + better-sqlite3 │ +│ Bild-Upload: @fastify/multipart │ +├────────────────────────────────────────── +│ Datenbank │ +│ SQLite (WAL-Mode) + FTS5 │ +└─────────────────────────────────────────┘ +``` + +## 2. Frontend + +### Core +| Paket | Version | Zweck | +|---|---|---| +| `react` | ^19.0 | UI-Framework | +| `react-dom` | ^19.0 | DOM-Rendering | +| `vite` | ^6.x | Build-Tool, Dev-Server, HMR | +| `tailwindcss` | ^4.x | Utility-first CSS | +| `react-router` | ^7.x | Client-Side Routing | +| `@tanstack/react-query` | ^5.x | Server-State, Caching, Mutations | + +### UI & Interaktion +| Paket | Zweck | +|---|---| +| `react-masonry-css` | Pinterest-artiges Grid-Layout | +| `framer-motion` | Animationen, Page-Transitions, Swipe-Gesten | +| `react-hot-toast` | Toast-Benachrichtigungen | +| `lucide-react` | Icon-Set (sauber, konsistent) | +| `react-hook-form` + `zod` | Formulare + Validierung | + +### PWA +| Paket | Zweck | +|---|---| +| `vite-plugin-pwa` | Service Worker Generation, Manifest | +| `workbox` (via Plugin) | Caching-Strategien, Offline-Support | + +### Projektstruktur + +``` +frontend/ +├── public/ +│ ├── icons/ ← PWA Icons (192, 512px) +│ └── manifest.webmanifest +├── src/ +│ ├── main.tsx +│ ├── App.tsx +│ ├── api/ ← API-Client (fetch-Wrapper) +│ │ ├── client.ts +│ │ ├── recipes.ts +│ │ ├── shopping.ts +│ │ └── types.ts +│ ├── components/ +│ │ ├── layout/ ← AppShell, BottomNav, TopBar +│ │ ├── recipe/ ← RecipeCard, IngredientList, StepList +│ │ ├── cooking/ ← CookingStep, CookingTimer +│ │ ├── shopping/ ← ShoppingItem, ShoppingSection +│ │ ├── forms/ ← RecipeForm, ImageUpload +│ │ └── ui/ ← Button, Badge, Input, Skeleton +│ ├── pages/ +│ │ ├── HomePage.tsx +│ │ ├── SearchPage.tsx +│ │ ├── RecipePage.tsx +│ │ ├── CookingModePage.tsx +│ │ ├── ShoppingPage.tsx +│ │ ├── CreateRecipePage.tsx +│ │ └── SettingsPage.tsx +│ ├── hooks/ ← useRecipes, useTimer, useWakeLock +│ ├── lib/ ← Hilfsfunktionen, Konstanten +│ └── styles/ +│ └── globals.css ← Tailwind-Imports, Custom Properties +├── index.html +├── tailwind.config.ts +├── vite.config.ts +├── tsconfig.json +└── package.json +``` + +### PWA-Konfiguration (vite.config.ts) + +```typescript +import { VitePWA } from 'vite-plugin-pwa'; + +export default defineConfig({ + plugins: [ + react(), + VitePWA({ + registerType: 'autoUpdate', + includeAssets: ['icons/*.png'], + manifest: { + name: 'Luna Recipes', + short_name: 'Luna', + description: 'Deine persönliche Rezeptsammlung', + theme_color: '#C4737E', + background_color: '#FBF8F5', + display: 'standalone', + orientation: 'portrait', + start_url: '/', + icons: [ + { src: 'icons/icon-192.png', sizes: '192x192', type: 'image/png' }, + { src: 'icons/icon-512.png', sizes: '512x512', type: 'image/png' }, + { src: 'icons/icon-512-maskable.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' }, + ], + }, + workbox: { + runtimeCaching: [ + { + urlPattern: /\/api\/recipes/, + handler: 'StaleWhileRevalidate', + options: { cacheName: 'recipes-cache', expiration: { maxEntries: 200 } }, + }, + { + urlPattern: /\/images\//, + handler: 'CacheFirst', + options: { cacheName: 'image-cache', expiration: { maxEntries: 500, maxAgeSeconds: 30 * 24 * 60 * 60 } }, + }, + ], + }, + }), + ], +}); +``` + +### Tailwind Theme (tailwind.config.ts) + +```typescript +export default { + theme: { + extend: { + colors: { + primary: { DEFAULT: '#C4737E', light: '#F2D7DB' }, + secondary: '#D4A574', + cream: '#FBF8F5', + espresso: '#2D2016', + 'warm-grey': '#7A6E65', + sage: '#7BAE7F', + berry: '#C94C4C', + sand: '#E8E0D8', + }, + fontFamily: { + display: ['Playfair Display', 'serif'], + sans: ['Inter', 'system-ui', 'sans-serif'], + mono: ['JetBrains Mono', 'monospace'], + }, + }, + }, +}; +``` + +## 3. Backend + +### Core +| Paket | Zweck | +|---|---| +| `fastify` v5 | HTTP-Framework (schnell, Schema-basiert) | +| `better-sqlite3` | SQLite-Treiber (synchron, schnell) | +| `@fastify/multipart` | Bild-Upload | +| `@fastify/static` | Statische Dateien (Bilder) | +| `@fastify/cors` | CORS fĂŒr Frontend | +| `@fastify/rate-limit` | Rate-Limiting (Bot-API Schutz) | +| `sharp` | Bild-Verarbeitung (Resize, WebP) | +| `ulid` | ID-Generierung | +| `zod` | Request-Validierung | + +### Projektstruktur + +``` +backend/ +├── src/ +│ ├── index.ts ← Server-Start +│ ├── app.ts ← Fastify-App Setup +│ ├── db/ +│ │ ├── connection.ts ← SQLite-Verbindung +│ │ ├── migrate.ts ← Schema-Migrationen +│ │ └── migrations/ ← SQL-Dateien +│ ├── routes/ +│ │ ├── recipes.ts ← CRUD + Suche +│ │ ├── categories.ts ← Kategorien +│ │ ├── shopping.ts ← Einkaufsliste +│ │ ├── notes.ts ← Notizen +│ │ ├── images.ts ← Bild-Upload +│ │ └── bot.ts ← Bot-API (Token-Auth) +│ ├── services/ +│ │ ├── recipe.service.ts +│ │ ├── shopping.service.ts +│ │ └── image.service.ts +│ ├── schemas/ ← Zod-Schemas +│ └── lib/ ← Hilfsfunktionen +├── data/ +│ ├── luna.db ← SQLite-Datenbank +│ └── images/ ← Hochgeladene Bilder +├── tsconfig.json +└── package.json +``` + +### Authentifizierung + +Einfaches Token-System (Single-User App): + +``` +# .env +BOT_API_TOKEN=geheimer-bot-token-hier +ADMIN_TOKEN=optionaler-admin-token +``` + +- **Frontend:** Kein Auth nötig (lokale Nutzung / privat) +- **Bot-API:** Bearer-Token im Header: `Authorization: Bearer {BOT_API_TOKEN}` +- **Optional Phase 2:** Session-basierte Auth falls öffentlich gehostet + +## 4. API-Endpunkte + +### Rezepte + +| Methode | Pfad | Beschreibung | +|---|---|---| +| `GET` | `/api/recipes` | Alle Rezepte (paginiert, filterbar) | +| `GET` | `/api/recipes/:slug` | Einzelnes Rezept (komplett mit Zutaten, Steps, Notes) | +| `POST` | `/api/recipes` | Neues Rezept erstellen | +| `PUT` | `/api/recipes/:id` | Rezept aktualisieren | +| `DELETE` | `/api/recipes/:id` | Rezept löschen | +| `PATCH` | `/api/recipes/:id/favorite` | Favorit togglen | +| `GET` | `/api/recipes/search` | Volltextsuche | + +#### Query-Parameter fĂŒr `GET /api/recipes` + +| Parameter | Typ | Beschreibung | +|---|---|---| +| `category` | string | Filter nach Kategorie-Slug | +| `favorite` | boolean | Nur Favoriten | +| `difficulty` | string | easy/medium/hard | +| `maxTime` | number | Maximale Gesamtzeit in Minuten | +| `ingredient` | string | EnthĂ€lt Zutat (Textsuche) | +| `page` | number | Seite (default: 1) | +| `limit` | number | EintrĂ€ge pro Seite (default: 20, max: 50) | +| `sort` | string | `newest`, `oldest`, `title`, `time` | + +#### Request-Body `POST /api/recipes` + +```json +{ + "title": "SchwarzwĂ€lder Kirschtorte", + "description": "Klassiker der deutschen Backkunst", + "category_id": "cat_torten", + "servings": 12, + "prep_time_min": 45, + "cook_time_min": 35, + "difficulty": "medium", + "source_url": "https://pinterest.com/...", + "tags": ["schokolade", "kirschen", "sahne"], + "ingredients": [ + { "amount": 200, "unit": "g", "name": "Mehl", "group_name": "Teig" }, + { "amount": 150, "unit": "g", "name": "Zucker", "group_name": "Teig" }, + { "amount": 500, "unit": "ml", "name": "Sahne", "group_name": "FĂŒllung" } + ], + "steps": [ + { "instruction": "Eier trennen und Eiweiß steif schlagen.", "timer_minutes": null }, + { "instruction": "Teig in Springform fĂŒllen und backen.", "timer_minutes": 35, "timer_label": "Backen" } + ] +} +``` + +### Kategorien + +| Methode | Pfad | Beschreibung | +|---|---|---| +| `GET` | `/api/categories` | Alle Kategorien | +| `POST` | `/api/categories` | Neue Kategorie (custom) | + +### Notizen + +| Methode | Pfad | Beschreibung | +|---|---|---| +| `GET` | `/api/recipes/:id/notes` | Notizen eines Rezepts | +| `POST` | `/api/recipes/:id/notes` | Notiz hinzufĂŒgen | +| `PUT` | `/api/notes/:id` | Notiz bearbeiten | +| `DELETE` | `/api/notes/:id` | Notiz löschen | + +### Einkaufsliste + +| Methode | Pfad | Beschreibung | +|---|---|---| +| `GET` | `/api/shopping` | Aktuelle Einkaufsliste | +| `POST` | `/api/shopping/from-recipe/:id` | Zutaten eines Rezepts hinzufĂŒgen | +| `POST` | `/api/shopping` | Eigenen Eintrag hinzufĂŒgen | +| `PATCH` | `/api/shopping/:id/check` | Abhaken/Enthaken | +| `DELETE` | `/api/shopping/:id` | Eintrag entfernen | +| `DELETE` | `/api/shopping/checked` | Alle abgehakten entfernen | + +### Bilder + +| Methode | Pfad | Beschreibung | +|---|---|---| +| `POST` | `/api/recipes/:id/image` | Hauptbild hochladen (multipart) | +| `POST` | `/api/recipes/:id/steps/:n/image` | Schrittbild hochladen | + +### Bot-API + +Alle Bot-Endpunkte erfordern `Authorization: Bearer {token}`. + +| Methode | Pfad | Beschreibung | +|---|---|---| +| `POST` | `/api/bot/recipes` | Rezept per Bot erstellen (wie POST /api/recipes) | +| `POST` | `/api/bot/recipes/:id/image` | Bild per URL importieren | +| `GET` | `/api/bot/recipes` | Rezepte auflisten (fĂŒr Bot-Abfragen) | + +#### Bot-spezifisches Feld + +```json +{ + "image_url": "https://example.com/foto.jpg", + "...normaler recipe body..." +} +``` + +Das Backend lĂ€dt das Bild herunter, konvertiert zu WebP, erstellt Thumbnail. + +### Tags + +| Methode | Pfad | Beschreibung | +|---|---|---| +| `GET` | `/api/tags` | Alle Tags (mit Anzahl Rezepte) | +| `GET` | `/api/tags/:name/recipes` | Rezepte eines Tags | + +## 5. Deployment + +### Entwicklung + +```bash +# Backend +cd backend && npm install && npm run dev # Port 3000 + +# Frontend +cd frontend && npm install && npm run dev # Port 5173 (Proxy → 3000) +``` + +### Produktion + +```bash +# Frontend bauen +cd frontend && npm run build # → dist/ + +# Backend serviert Frontend-Build als Static Files +# Alles als ein Prozess: +cd backend && NODE_ENV=production npm start +``` + +### Docker (empfohlen) + +```dockerfile +FROM node:22-alpine + +WORKDIR /app + +# Backend Dependencies +COPY backend/package*.json backend/ +RUN cd backend && npm ci --production + +# Frontend Build +COPY frontend/ frontend/ +RUN cd frontend && npm ci && npm run build + +# Backend Source +COPY backend/ backend/ + +# Daten-Verzeichnis +VOLUME /app/data + +ENV NODE_ENV=production +ENV DATABASE_PATH=/app/data/luna.db +ENV IMAGES_PATH=/app/data/images + +EXPOSE 3000 +CMD ["node", "backend/dist/index.js"] +``` + +```yaml +# docker-compose.yml +services: + luna: + build: . + ports: + - "3000:3000" + volumes: + - ./data:/app/data + environment: + - BOT_API_TOKEN=${BOT_API_TOKEN} + restart: unless-stopped +``` + +## 6. Performance-Überlegungen + +- **SQLite WAL-Mode** → Paralleles Lesen wĂ€hrend Schreiben +- **FTS5** → Schnelle Volltextsuche ohne externen Service +- **Bild-Thumbnails** → Kleine Bilder fĂŒr Card-Grid, große nur bei Detail +- **Stale-While-Revalidate** → Instant UI, Background-Refresh +- **CacheFirst fĂŒr Bilder** → Bilder Ă€ndern sich selten +- **Lazy Loading** → Bilder + Seiten on-demand laden +- **Bundle-Splitting** → Kochmodus als separater Chunk + +## 7. Offline-Strategie (PWA) + +| Ressource | Strategie | Cache | +|---|---|---| +| App-Shell (HTML/JS/CSS) | Precache | Beim Build | +| API-Responses | StaleWhileRevalidate | Runtime | +| Bilder | CacheFirst | Runtime, max 500 | +| Einkaufsliste | NetworkFirst | Runtime | + +Die Einkaufsliste bekommt NetworkFirst, damit im Laden immer der aktuellste Stand gezeigt wird, aber offline trotzdem funktioniert. diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..d2e7761 --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,73 @@ +# React + TypeScript + Vite + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) (or [oxc](https://oxc.rs) when used in [rolldown-vite](https://vite.dev/guide/rolldown)) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## React Compiler + +The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation). + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules: + +```js +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + + // Remove tseslint.configs.recommended and replace with this + tseslint.configs.recommendedTypeChecked, + // Alternatively, use this for stricter rules + tseslint.configs.strictTypeChecked, + // Optionally, add this for stylistic rules + tseslint.configs.stylisticTypeChecked, + + // Other configs... + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` + +You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules: + +```js +// eslint.config.js +import reactX from 'eslint-plugin-react-x' +import reactDom from 'eslint-plugin-react-dom' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + // Other configs... + // Enable lint rules for React + reactX.configs['recommended-typescript'], + // Enable lint rules for React DOM + reactDom.configs.recommended, + ], + languageOptions: { + parserOptions: { + project: ['./tsconfig.node.json', './tsconfig.app.json'], + tsconfigRootDir: import.meta.dirname, + }, + // other options... + }, + }, +]) +``` diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js new file mode 100644 index 0000000..5e6b472 --- /dev/null +++ b/frontend/eslint.config.js @@ -0,0 +1,23 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' +import { defineConfig, globalIgnores } from 'eslint/config' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + js.configs.recommended, + tseslint.configs.recommended, + reactHooks.configs.flat.recommended, + reactRefresh.configs.vite, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + }, +]) diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..8e7493d --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,13 @@ + + + + + + + Luna Recipes + + +
+ + + diff --git a/frontend/package-lock.json b/frontend/package-lock.json new file mode 100644 index 0000000..61c3d43 --- /dev/null +++ b/frontend/package-lock.json @@ -0,0 +1,8320 @@ +{ + "name": "frontend", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "frontend", + "version": "0.0.0", + "dependencies": { + "@tanstack/react-query": "^5.90.21", + "framer-motion": "^12.34.1", + "lucide-react": "^0.574.0", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "react-hot-toast": "^2.6.0", + "react-masonry-css": "^1.0.16", + "react-router": "^7.13.0" + }, + "devDependencies": { + "@eslint/js": "^9.39.1", + "@tailwindcss/vite": "^4.1.18", + "@types/node": "^24.10.1", + "@types/react": "^19.2.7", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "eslint": "^9.39.1", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.5.0", + "tailwindcss": "^4.1.18", + "typescript": "~5.9.3", + "typescript-eslint": "^8.48.0", + "vite": "^7.3.1", + "vite-plugin-pwa": "^1.2.0" + } + }, + "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/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-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-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.6.tgz", + "integrity": "sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "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-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.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==", + "dev": true, + "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==", + "dev": true, + "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/helper-wrap-function": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", + "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", + "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", + "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-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "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-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", + "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", + "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-class-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", + "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-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", + "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-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", + "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-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", + "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", + "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-numeric-separator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", + "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-object-rest-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", + "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-optional-chaining": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", + "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" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", + "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", + "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-regexp-modifiers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.0.tgz", + "integrity": "sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.29.0", + "@babel/plugin-transform-async-to-generator": "^7.28.6", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.28.6", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.29.0", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.29.0", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", + "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@isaacs/cliui": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "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==", + "dev": true, + "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/@rolldown/pluginutils": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz", + "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz", + "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==", + "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-terser": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", + "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "serialize-javascript": "^6.0.1", + "smob": "^1.0.0", + "terser": "^5.17.4" + }, + "engines": { + "node": ">=14.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.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", + "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", + "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", + "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", + "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", + "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", + "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", + "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", + "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", + "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", + "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", + "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", + "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", + "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", + "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", + "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", + "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", + "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", + "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", + "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", + "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", + "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", + "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", + "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", + "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", + "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "node_modules/@surma/rollup-plugin-off-main-thread/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.18.tgz", + "integrity": "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "enhanced-resolve": "^5.18.3", + "jiti": "^2.6.1", + "lightningcss": "1.30.2", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.18" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz", + "integrity": "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.18", + "@tailwindcss/oxide-darwin-arm64": "4.1.18", + "@tailwindcss/oxide-darwin-x64": "4.1.18", + "@tailwindcss/oxide-freebsd-x64": "4.1.18", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.18", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.18", + "@tailwindcss/oxide-linux-x64-musl": "4.1.18", + "@tailwindcss/oxide-wasm32-wasi": "4.1.18", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.18" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz", + "integrity": "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz", + "integrity": "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz", + "integrity": "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz", + "integrity": "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz", + "integrity": "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz", + "integrity": "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz", + "integrity": "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz", + "integrity": "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz", + "integrity": "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz", + "integrity": "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.0", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz", + "integrity": "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz", + "integrity": "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.18.tgz", + "integrity": "sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.1.18", + "@tailwindcss/oxide": "4.1.18", + "tailwindcss": "4.1.18" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7" + } + }, + "node_modules/@tanstack/query-core": { + "version": "5.90.20", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.20.tgz", + "integrity": "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.90.21", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.21.tgz", + "integrity": "sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.90.20" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "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/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.10.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.13.tgz", + "integrity": "sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "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/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.0.tgz", + "integrity": "sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.56.0", + "@typescript-eslint/type-utils": "8.56.0", + "@typescript-eslint/utils": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.56.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/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/@typescript-eslint/parser": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.0.tgz", + "integrity": "sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.56.0", + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.0.tgz", + "integrity": "sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.56.0", + "@typescript-eslint/types": "^8.56.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.0.tgz", + "integrity": "sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.0.tgz", + "integrity": "sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.0.tgz", + "integrity": "sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0", + "@typescript-eslint/utils": "8.56.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.0.tgz", + "integrity": "sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.0.tgz", + "integrity": "sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.56.0", + "@typescript-eslint/tsconfig-utils": "8.56.0", + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0", + "debug": "^4.4.3", + "minimatch": "^9.0.5", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/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/@typescript-eslint/utils": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.0.tgz", + "integrity": "sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.56.0", + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.0.tgz", + "integrity": "sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.56.0", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.0.tgz", + "integrity": "sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.4.tgz", + "integrity": "sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.29.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-rc.3", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.18.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "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/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz", + "integrity": "sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.6", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.0.tgz", + "integrity": "sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.6", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz", + "integrity": "sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.6" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "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/baseline-browser-mapping": { + "version": "2.9.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", + "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "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.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "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/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001770", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001770.tgz", + "integrity": "sha512-x/2CLQ1jHENRbHg5PSId2sXq1CIO1CISvwWAj027ltMVG2UNgW+w9oH2+HzgEIRFembL8bUlXtfbBHR1fCg2xw==", + "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/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "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/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/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "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": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/core-js-compat": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz", + "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "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/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "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/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.286", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.286.tgz", + "integrity": "sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==", + "dev": true, + "license": "ISC" + }, + "node_modules/enhanced-resolve": { + "version": "5.19.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz", + "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-abstract": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", + "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" + } + }, + "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-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", + "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.2", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.26", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.26.tgz", + "integrity": "sha512-1RETEylht2O6FM/MvgnyvT+8K21wLqDNg4qD51Zj3guhjt433XbnnkVttHMyaVyAFD03QSV4LPS5iE3VQmO7XQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "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-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/framer-motion": { + "version": "12.34.1", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.34.1.tgz", + "integrity": "sha512-kcZyNaYQfvE2LlH6+AyOaJAQV4rGp5XbzfhsZpiSZcwDMfZUHhuxLWeyRzf5I7jip3qKRpuimPA9pXXfr111kQ==", + "license": "MIT", + "dependencies": { + "motion-dom": "^12.34.1", + "motion-utils": "^12.29.2", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "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/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "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-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true, + "license": "ISC" + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "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": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/balanced-match": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.2.tgz", + "integrity": "sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "jackspeak": "^4.2.3" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", + "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", + "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/goober": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.18.tgz", + "integrity": "sha512-2vFqsaDVIT9Gz7N6kAL++pLpp41l3PfDuusHcjnGLfR6+huZkl6ziX+zgVC3ZxpqWhzH6pyDdGrCeDhMIvwaxw==", + "license": "MIT", + "peerDependencies": { + "csstype": "^3.0.10" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "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/jackspeak": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^9.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jake": { + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.6", + "filelist": "^1.0.4", + "picocolors": "^1.1.1" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "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/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "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/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "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/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", + "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.30.2", + "lightningcss-darwin-arm64": "1.30.2", + "lightningcss-darwin-x64": "1.30.2", + "lightningcss-freebsd-x64": "1.30.2", + "lightningcss-linux-arm-gnueabihf": "1.30.2", + "lightningcss-linux-arm64-gnu": "1.30.2", + "lightningcss-linux-arm64-musl": "1.30.2", + "lightningcss-linux-x64-gnu": "1.30.2", + "lightningcss-linux-x64-musl": "1.30.2", + "lightningcss-win32-arm64-msvc": "1.30.2", + "lightningcss-win32-x64-msvc": "1.30.2" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", + "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", + "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", + "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", + "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", + "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", + "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", + "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", + "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", + "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", + "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.2", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", + "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "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/lucide-react": { + "version": "0.574.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.574.0.tgz", + "integrity": "sha512-dJ8xb5juiZVIbdSn3HTyHsjjIwUwZ4FNwV0RtYDScOyySOeie1oXZTymST6YPJ4Qwt3Po8g4quhYl4OxtACiuQ==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/motion-dom": { + "version": "12.34.1", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.34.1.tgz", + "integrity": "sha512-SC7ZC5dRcGwku2g7EsPvI4q/EzHumUbqsDNumBmZTLFg+goBO5LTJvDu9MAxx+0mtX4IA78B2be/A3aRjY0jnw==", + "license": "MIT", + "dependencies": { + "motion-utils": "^12.29.2" + } + }, + "node_modules/motion-utils": { + "version": "12.29.2", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.29.2.tgz", + "integrity": "sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A==", + "license": "MIT" + }, + "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/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "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/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=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.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "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/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-bytes": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz", + "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.4" + } + }, + "node_modules/react-hot-toast": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.6.0.tgz", + "integrity": "sha512-bH+2EBMZ4sdyou/DPrfgIouFpcRLCJ+HoCA32UoAYHn6T3Ur5yfcDCeSr5mwldl6pFOsiocmrXMuoCJ1vV8bWg==", + "license": "MIT", + "dependencies": { + "csstype": "^3.1.3", + "goober": "^2.1.16" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=16", + "react-dom": ">=16" + } + }, + "node_modules/react-masonry-css": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/react-masonry-css/-/react-masonry-css-1.0.16.tgz", + "integrity": "sha512-KSW0hR2VQmltt/qAa3eXOctQDyOu7+ZBevtKgpNDSzT7k5LA/0XntNa9z9HKCdz3QlxmJHglTZ18e4sX4V8zZQ==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.0.0" + } + }, + "node_modules/react-refresh": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-router": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.13.0.tgz", + "integrity": "sha512-PZgus8ETambRT17BUm/LL8lX3Of+oiLaPuVTRH3l1eLvSPpKO3AvhAEb5N7ihAFZQrYDqkvvWfFh9p0z9VsjLw==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/rollup": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", + "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", + "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.57.1", + "@rollup/rollup-android-arm64": "4.57.1", + "@rollup/rollup-darwin-arm64": "4.57.1", + "@rollup/rollup-darwin-x64": "4.57.1", + "@rollup/rollup-freebsd-arm64": "4.57.1", + "@rollup/rollup-freebsd-x64": "4.57.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", + "@rollup/rollup-linux-arm-musleabihf": "4.57.1", + "@rollup/rollup-linux-arm64-gnu": "4.57.1", + "@rollup/rollup-linux-arm64-musl": "4.57.1", + "@rollup/rollup-linux-loong64-gnu": "4.57.1", + "@rollup/rollup-linux-loong64-musl": "4.57.1", + "@rollup/rollup-linux-ppc64-gnu": "4.57.1", + "@rollup/rollup-linux-ppc64-musl": "4.57.1", + "@rollup/rollup-linux-riscv64-gnu": "4.57.1", + "@rollup/rollup-linux-riscv64-musl": "4.57.1", + "@rollup/rollup-linux-s390x-gnu": "4.57.1", + "@rollup/rollup-linux-x64-gnu": "4.57.1", + "@rollup/rollup-linux-x64-musl": "4.57.1", + "@rollup/rollup-openbsd-x64": "4.57.1", + "@rollup/rollup-openharmony-arm64": "4.57.1", + "@rollup/rollup-win32-arm64-msvc": "4.57.1", + "@rollup/rollup-win32-ia32-msvc": "4.57.1", + "@rollup/rollup-win32-x64-gnu": "4.57.1", + "@rollup/rollup-win32-x64-msvc": "4.57.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "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/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "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/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.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "deprecated": "The work that was done in this beta branch won't be included in future versions", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "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==", + "dev": true, + "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/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true, + "license": "MIT" + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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/tailwindcss": { + "version": "4.1.18", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", + "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", + "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", + "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/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", + "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "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==", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.0.tgz", + "integrity": "sha512-c7toRLrotJ9oixgdW7liukZpsnq5CZ7PuKztubGYlNppuTqhIoWfhgHo/7EU0v06gS2l/x0i2NEFK1qMIf0rIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.56.0", + "@typescript-eslint/parser": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0", + "@typescript-eslint/utils": "8.56.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "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/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "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-plugin-pwa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-1.2.0.tgz", + "integrity": "sha512-a2xld+SJshT9Lgcv8Ji4+srFJL4k/1bVbd1x06JIkvecpQkwkvCncD1+gSzcdm3s+owWLpMJerG3aN5jupJEVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.6", + "pretty-bytes": "^6.1.1", + "tinyglobby": "^0.2.10", + "workbox-build": "^7.4.0", + "workbox-window": "^7.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vite-pwa/assets-generator": "^1.0.0", + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "workbox-build": "^7.4.0", + "workbox-window": "^7.4.0" + }, + "peerDependenciesMeta": { + "@vite-pwa/assets-generator": { + "optional": true + } + } + }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "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/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-background-sync": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-7.4.0.tgz", + "integrity": "sha512-8CB9OxKAgKZKyNMwfGZ1XESx89GryWTfI+V5yEj8sHjFH8MFelUwYXEyldEK6M6oKMmn807GoJFUEA1sC4XS9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "7.4.0" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-7.4.0.tgz", + "integrity": "sha512-+eZQwoktlvo62cI0b+QBr40v5XjighxPq3Fzo9AWMiAosmpG5gxRHgTbGGhaJv/q/MFVxwFNGh/UwHZ/8K88lA==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.0" + } + }, + "node_modules/workbox-build": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.4.0.tgz", + "integrity": "sha512-Ntk1pWb0caOFIvwz/hfgrov/OJ45wPEhI5PbTywQcYjyZiVhT3UrwwUPl6TRYbTm4moaFYithYnl1lvZ8UjxcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.24.4", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-replace": "^2.4.1", + "@rollup/plugin-terser": "^0.4.3", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^11.0.1", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.79.2", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "7.4.0", + "workbox-broadcast-update": "7.4.0", + "workbox-cacheable-response": "7.4.0", + "workbox-core": "7.4.0", + "workbox-expiration": "7.4.0", + "workbox-google-analytics": "7.4.0", + "workbox-navigation-preload": "7.4.0", + "workbox-precaching": "7.4.0", + "workbox-range-requests": "7.4.0", + "workbox-recipes": "7.4.0", + "workbox-routing": "7.4.0", + "workbox-strategies": "7.4.0", + "workbox-streams": "7.4.0", + "workbox-sw": "7.4.0", + "workbox-window": "7.4.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/workbox-build/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/workbox-build/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/workbox-build/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/workbox-build/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/workbox-build/node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/workbox-build/node_modules/rollup": { + "version": "2.79.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", + "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-7.4.0.tgz", + "integrity": "sha512-0Fb8795zg/x23ISFkAc7lbWes6vbw34DGFIMw31cwuHPgDEC/5EYm6m/ZkylLX0EnEbbOyOCLjKgFS/Z5g0HeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.0" + } + }, + "node_modules/workbox-core": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-7.4.0.tgz", + "integrity": "sha512-6BMfd8tYEnN4baG4emG9U0hdXM4gGuDU3ectXuVHnj71vwxTFI7WOpQJC4siTOlVtGqCUtj0ZQNsrvi6kZZTAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-expiration": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-7.4.0.tgz", + "integrity": "sha512-V50p4BxYhtA80eOvulu8xVfPBgZbkxJ1Jr8UUn0rvqjGhLDqKNtfrDfjJKnLz2U8fO2xGQJTx/SKXNTzHOjnHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "7.4.0" + } + }, + "node_modules/workbox-google-analytics": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-7.4.0.tgz", + "integrity": "sha512-MVPXQslRF6YHkzGoFw1A4GIB8GrKym/A5+jYDUSL+AeJw4ytQGrozYdiZqUW1TPQHW8isBCBtyFJergUXyNoWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-background-sync": "7.4.0", + "workbox-core": "7.4.0", + "workbox-routing": "7.4.0", + "workbox-strategies": "7.4.0" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-7.4.0.tgz", + "integrity": "sha512-etzftSgdQfjMcfPgbfaZCfM2QuR1P+4o8uCA2s4rf3chtKTq/Om7g/qvEOcZkG6v7JZOSOxVYQiOu6PbAZgU6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.0" + } + }, + "node_modules/workbox-precaching": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-7.4.0.tgz", + "integrity": "sha512-VQs37T6jDqf1rTxUJZXRl3yjZMf5JX/vDPhmx2CPgDDKXATzEoqyRqhYnRoxl6Kr0rqaQlp32i9rtG5zTzIlNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.0", + "workbox-routing": "7.4.0", + "workbox-strategies": "7.4.0" + } + }, + "node_modules/workbox-range-requests": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-7.4.0.tgz", + "integrity": "sha512-3Vq854ZNuP6Y0KZOQWLaLC9FfM7ZaE+iuQl4VhADXybwzr4z/sMmnLgTeUZLq5PaDlcJBxYXQ3U91V7dwAIfvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.0" + } + }, + "node_modules/workbox-recipes": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-7.4.0.tgz", + "integrity": "sha512-kOkWvsAn4H8GvAkwfJTbwINdv4voFoiE9hbezgB1sb/0NLyTG4rE7l6LvS8lLk5QIRIto+DjXLuAuG3Vmt3cxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-cacheable-response": "7.4.0", + "workbox-core": "7.4.0", + "workbox-expiration": "7.4.0", + "workbox-precaching": "7.4.0", + "workbox-routing": "7.4.0", + "workbox-strategies": "7.4.0" + } + }, + "node_modules/workbox-routing": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-7.4.0.tgz", + "integrity": "sha512-C/ooj5uBWYAhAqwmU8HYQJdOjjDKBp9MzTQ+otpMmd+q0eF59K+NuXUek34wbL0RFrIXe/KKT+tUWcZcBqxbHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.0" + } + }, + "node_modules/workbox-strategies": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-7.4.0.tgz", + "integrity": "sha512-T4hVqIi5A4mHi92+5EppMX3cLaVywDp8nsyUgJhOZxcfSV/eQofcOA6/EMo5rnTNmNTpw0rUgjAI6LaVullPpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.0" + } + }, + "node_modules/workbox-streams": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-7.4.0.tgz", + "integrity": "sha512-QHPBQrey7hQbnTs5GrEVoWz7RhHJXnPT+12qqWM378orDMo5VMJLCkCM1cnCk+8Eq92lccx/VgRZ7WAzZWbSLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.4.0", + "workbox-routing": "7.4.0" + } + }, + "node_modules/workbox-sw": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.4.0.tgz", + "integrity": "sha512-ltU+Kr3qWR6BtbdlMnCjobZKzeV1hN+S6UvDywBrwM19TTyqA03X66dzw1tEIdJvQ4lYKkBFox6IAEhoSEZ8Xw==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-window": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-7.4.0.tgz", + "integrity": "sha512-/bIYdBLAVsNR3v7gYGaV4pQW3M3kEPx5E8vDxGvxo6khTrGtSSCS7QiFKv9ogzBgZiy0OXLP9zO28U/1nF1mfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "7.4.0" + } + }, + "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/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } + } + } +} diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..9bc9d3a --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,39 @@ +{ + "name": "frontend", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@tanstack/react-query": "^5.90.21", + "framer-motion": "^12.34.1", + "lucide-react": "^0.574.0", + "react": "^19.2.0", + "react-dom": "^19.2.0", + "react-hot-toast": "^2.6.0", + "react-masonry-css": "^1.0.16", + "react-router": "^7.13.0" + }, + "devDependencies": { + "@eslint/js": "^9.39.1", + "@tailwindcss/vite": "^4.1.18", + "@types/node": "^24.10.1", + "@types/react": "^19.2.7", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^5.1.1", + "eslint": "^9.39.1", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.4.24", + "globals": "^16.5.0", + "tailwindcss": "^4.1.18", + "typescript": "~5.9.3", + "typescript-eslint": "^8.48.0", + "vite": "^7.3.1", + "vite-plugin-pwa": "^1.2.0" + } +} diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx new file mode 100644 index 0000000..57978e3 --- /dev/null +++ b/frontend/src/App.tsx @@ -0,0 +1,26 @@ +import { BrowserRouter, Routes, Route } from 'react-router' +import { AppShell } from './components/layout/AppShell' +import { HomePage } from './pages/HomePage' +import { RecipePage } from './pages/RecipePage' +import { SearchPage } from './pages/SearchPage' +import { PlaceholderPage } from './pages/PlaceholderPage' +import { RecipeFormPage } from './pages/RecipeFormPage' +import { ShoppingPage } from './pages/ShoppingPage' + +export default function App() { + return ( + + + }> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + + + ) +} diff --git a/frontend/src/api/categories.ts b/frontend/src/api/categories.ts new file mode 100644 index 0000000..5c179e1 --- /dev/null +++ b/frontend/src/api/categories.ts @@ -0,0 +1,6 @@ +import { apiFetch } from './client' +import type { Category } from './types' + +export function fetchCategories() { + return apiFetch('/categories') +} diff --git a/frontend/src/api/client.ts b/frontend/src/api/client.ts new file mode 100644 index 0000000..9d3f251 --- /dev/null +++ b/frontend/src/api/client.ts @@ -0,0 +1,17 @@ +const BASE_URL = '/api' + +export async function apiFetch(path: string, options?: RequestInit): Promise { + const method = options?.method?.toUpperCase() || 'GET'; + const headers: Record = { ...options?.headers as Record }; + if (['POST', 'PUT', 'PATCH'].includes(method)) { + headers['Content-Type'] = headers['Content-Type'] || 'application/json'; + } + const res = await fetch(`${BASE_URL}${path}`, { + ...options, + headers, + }) + if (!res.ok) { + throw new Error(`API Error: ${res.status} ${res.statusText}`) + } + return res.json() +} diff --git a/frontend/src/api/recipes.ts b/frontend/src/api/recipes.ts new file mode 100644 index 0000000..ab19fff --- /dev/null +++ b/frontend/src/api/recipes.ts @@ -0,0 +1,74 @@ +import { apiFetch } from './client' +import type { Recipe, PaginatedResponse } from './types' + +interface RecipeListParams { + category?: string + favorite?: boolean + sort?: string + page?: number + limit?: number +} + +export function fetchRecipes(params?: RecipeListParams) { + const sp = new URLSearchParams() + if (params?.category) sp.set('category', params.category) + if (params?.favorite) sp.set('favorite', 'true') + if (params?.sort) sp.set('sort', params.sort) + if (params?.page) sp.set('page', String(params.page)) + if (params?.limit) sp.set('limit', String(params.limit)) + const qs = sp.toString() + return apiFetch>(`/recipes${qs ? `?${qs}` : ''}`) +} + +export function fetchRecipe(slug: string) { + return apiFetch(`/recipes/${slug}`) +} + +export function searchRecipes(q: string) { + return apiFetch>(`/recipes/search?q=${encodeURIComponent(q)}`) +} + +export function toggleFavorite(id: string) { + return apiFetch(`/recipes/${id}/favorite`, { method: 'PATCH' }) +} + +export interface RecipeFormData { + title: string + description?: string + category_id?: string + difficulty?: 'easy' | 'medium' | 'hard' + prep_time?: number + cook_time?: number + servings?: number + image_url?: string + source_url?: string + ingredients?: { amount?: number; unit?: string; name: string; group_name?: string; sort_order?: number }[] + steps?: { step_number: number; instruction: string; duration_minutes?: number }[] +} + +export function createRecipe(data: RecipeFormData) { + return apiFetch('/recipes', { + method: 'POST', + body: JSON.stringify(data), + }) +} + +export function updateRecipe(id: string, data: RecipeFormData) { + return apiFetch(`/recipes/${id}`, { + method: 'PUT', + body: JSON.stringify(data), + }) +} + +export function deleteRecipe(id: string) { + return apiFetch<{ ok: boolean }>(`/recipes/${id}`, { method: 'DELETE' }) +} + +export function uploadRecipeImage(id: string, file: File) { + const formData = new FormData() + formData.append('file', file) + return fetch(`/api/recipes/${id}/image`, { method: 'POST', body: formData }).then(r => { + if (!r.ok) throw new Error('Upload failed') + return r.json() as Promise<{ image_url: string }> + }) +} diff --git a/frontend/src/api/shopping.ts b/frontend/src/api/shopping.ts new file mode 100644 index 0000000..1d9045b --- /dev/null +++ b/frontend/src/api/shopping.ts @@ -0,0 +1,45 @@ +import { apiFetch } from './client' + +export interface ShoppingItem { + id: string + name: string + amount?: number + unit?: string + checked: boolean + recipe_id?: string + recipe_title?: string + created_at?: string +} + +export interface ShoppingGroup { + recipe_title: string + recipe_id?: string + items: ShoppingItem[] +} + +export function fetchShopping() { + return apiFetch('/shopping') +} + +export function addFromRecipe(recipeId: string) { + return apiFetch<{ added: number }>(`/shopping/from-recipe/${recipeId}`, { method: 'POST' }) +} + +export function addCustomItem(item: { name: string; amount?: number; unit?: string }) { + return apiFetch('/shopping', { + method: 'POST', + body: JSON.stringify(item), + }) +} + +export function toggleCheck(id: string) { + return apiFetch(`/shopping/${id}/check`, { method: 'PATCH' }) +} + +export function deleteItem(id: string) { + return apiFetch(`/shopping/${id}`, { method: 'DELETE' }) +} + +export function deleteChecked() { + return apiFetch('/shopping/checked', { method: 'DELETE' }) +} diff --git a/frontend/src/api/types.ts b/frontend/src/api/types.ts new file mode 100644 index 0000000..6d5184c --- /dev/null +++ b/frontend/src/api/types.ts @@ -0,0 +1,62 @@ +export interface Category { + id: string + name: string + slug: string + icon?: string + recipe_count?: number +} + +export interface Recipe { + id: string + title: string + slug: string + description?: string + category_id?: string + category_name?: string + category_slug?: string + servings?: number + prep_time_min?: number + cook_time_min?: number + total_time_min?: number + difficulty?: 'easy' | 'medium' | 'hard' + image_url?: string + thumbnail_url?: string + is_favorite: boolean + tags?: string[] + ingredients?: Ingredient[] + steps?: Step[] + notes?: Note[] + created_at?: string + updated_at?: string +} + +export interface Ingredient { + id?: string + amount?: number + unit?: string + name: string + group_name?: string +} + +export interface Step { + id?: string + step_number: number + instruction: string + timer_minutes?: number + timer_label?: string + image_url?: string +} + +export interface Note { + id: string + content: string + created_at: string +} + +export interface PaginatedResponse { + data: T[] + total: number + page: number + limit: number + totalPages: number +} diff --git a/frontend/src/components/ErrorBoundary.tsx b/frontend/src/components/ErrorBoundary.tsx new file mode 100644 index 0000000..af899f0 --- /dev/null +++ b/frontend/src/components/ErrorBoundary.tsx @@ -0,0 +1,45 @@ +import { Component, type ReactNode } from 'react' + +interface Props { + children: ReactNode +} + +interface State { + hasError: boolean + error?: Error +} + +export class ErrorBoundary extends Component { + constructor(props: Props) { + super(props) + this.state = { hasError: false } + } + + static getDerivedStateFromError(error: Error): State { + return { hasError: true, error } + } + + render() { + if (this.state.hasError) { + return ( +
+
+ đŸ˜” +

Etwas ist schiefgelaufen

+

{this.state.error?.message}

+ +
+
+ ) + } + return this.props.children + } +} diff --git a/frontend/src/components/layout/AppShell.tsx b/frontend/src/components/layout/AppShell.tsx new file mode 100644 index 0000000..c0187bb --- /dev/null +++ b/frontend/src/components/layout/AppShell.tsx @@ -0,0 +1,13 @@ +import { Outlet } from 'react-router' +import { BottomNav } from './BottomNav' + +export function AppShell() { + return ( +
+
+ +
+ +
+ ) +} diff --git a/frontend/src/components/layout/BottomNav.tsx b/frontend/src/components/layout/BottomNav.tsx new file mode 100644 index 0000000..2fe39b8 --- /dev/null +++ b/frontend/src/components/layout/BottomNav.tsx @@ -0,0 +1,33 @@ +import { NavLink } from 'react-router' +import { Home, Search, PlusCircle, ShoppingCart, User } from 'lucide-react' + +const navItems = [ + { to: '/', icon: Home, label: 'Home' }, + { to: '/search', icon: Search, label: 'Suche' }, + { to: '/new', icon: PlusCircle, label: 'Neu' }, + { to: '/shopping', icon: ShoppingCart, label: 'Einkauf' }, + { to: '/profile', icon: User, label: 'Profil' }, +] + +export function BottomNav() { + return ( + + ) +} diff --git a/frontend/src/components/recipe/RecipeCard.tsx b/frontend/src/components/recipe/RecipeCard.tsx new file mode 100644 index 0000000..ca30b50 --- /dev/null +++ b/frontend/src/components/recipe/RecipeCard.tsx @@ -0,0 +1,58 @@ +import { Link } from 'react-router' +import { Heart, Clock } from 'lucide-react' +import { useMutation, useQueryClient } from '@tanstack/react-query' +import { toggleFavorite } from '../../api/recipes' +import type { Recipe } from '../../api/types' + +const gradients = [ + 'from-primary/60 to-secondary/60', + 'from-secondary/60 to-sage/60', + 'from-primary-light to-primary/40', + 'from-sage/40 to-secondary/60', +] + +export function RecipeCard({ recipe }: { recipe: Recipe }) { + const qc = useQueryClient() + const favMutation = useMutation({ + mutationFn: () => toggleFavorite(recipe.id), + onSuccess: () => qc.invalidateQueries({ queryKey: ['recipes'] }), + }) + + const gradient = gradients[recipe.title.length % gradients.length] + const totalTime = recipe.total_time_min || ((recipe.prep_time_min || 0) + (recipe.cook_time_min || 0)) + + return ( +
+ + {recipe.image_url ? ( + {recipe.title} + ) : ( +
+ 🍰 +
+ )} + +
+ +

{recipe.title}

+ +
+ {totalTime > 0 && ( + + {totalTime} min + + )} + +
+
+
+ ) +} diff --git a/frontend/src/components/recipe/RecipeCardSmall.tsx b/frontend/src/components/recipe/RecipeCardSmall.tsx new file mode 100644 index 0000000..14fae77 --- /dev/null +++ b/frontend/src/components/recipe/RecipeCardSmall.tsx @@ -0,0 +1,34 @@ +import { Link } from 'react-router' +import { Clock } from 'lucide-react' +import type { Recipe } from '../../api/types' + +const gradients = [ + 'from-primary/60 to-secondary/60', + 'from-secondary/60 to-sage/60', +] + +export function RecipeCardSmall({ recipe }: { recipe: Recipe }) { + const gradient = gradients[recipe.title.length % gradients.length] + const totalTime = recipe.total_time_min || ((recipe.prep_time_min || 0) + (recipe.cook_time_min || 0)) + + return ( + + {recipe.image_url ? ( + {recipe.title} + ) : ( +
+ 🍰 +
+ )} +
+

{recipe.title}

+
+ {totalTime > 0 && ( + {totalTime} min + )} + {recipe.difficulty && ⭐ {recipe.difficulty}} +
+
+ + ) +} diff --git a/frontend/src/components/ui/Badge.tsx b/frontend/src/components/ui/Badge.tsx new file mode 100644 index 0000000..17e58a2 --- /dev/null +++ b/frontend/src/components/ui/Badge.tsx @@ -0,0 +1,20 @@ +interface Props { + children: React.ReactNode + active?: boolean + onClick?: () => void +} + +export function Badge({ children, active, onClick }: Props) { + return ( + + {children} + + ) +} diff --git a/frontend/src/components/ui/Button.tsx b/frontend/src/components/ui/Button.tsx new file mode 100644 index 0000000..6c785e3 --- /dev/null +++ b/frontend/src/components/ui/Button.tsx @@ -0,0 +1,22 @@ +import type { ButtonHTMLAttributes } from 'react' + +type Variant = 'primary' | 'secondary' | 'ghost' + +const styles: Record = { + primary: 'bg-primary text-white hover:bg-primary/90', + secondary: 'bg-secondary text-white hover:bg-secondary/90', + ghost: 'bg-transparent text-espresso hover:bg-sand/50', +} + +interface Props extends ButtonHTMLAttributes { + variant?: Variant +} + +export function Button({ variant = 'primary', className = '', ...props }: Props) { + return ( + +

+ {isEdit ? 'Rezept bearbeiten' : 'Neues Rezept'} +

+ + +
+ {/* Image */} +
+ + + {imagePreview ? ( +
+ Preview + +
+ ) : ( + + )} +
+ + {/* Title */} +
+ + setTitle(e.target.value)} + placeholder="z.B. Omas Apfelkuchen" + className={inputClass} + required + /> +
+ + {/* Description */} +
+ +