tfrere HF Staff Cursor commited on
Commit
279ae3b
·
1 Parent(s): d2c9b9b

feat: add HF OAuth login and interactive likes on apps page

Browse files

- Enable hf_oauth in Space config (README.md)
- Add @huggingface/hub for OAuth login/redirect flow
- Create AuthContext with login, logout, liked spaces fetching, and
optimistic like/unlike toggle via HF REST API
- Add "Sign in with HF" button in the apps search bar (shows avatar
and username when logged in)
- Replace static like counts with interactive like buttons on AppCard
and InstallModal (filled pink heart when liked, outline when not)
- Show tooltip "Sign in to like this app" on hover when not logged in
- Graceful degradation: likes remain read-only when not authenticated

Co-authored-by: Cursor <cursoragent@cursor.com>

README.md CHANGED
@@ -5,6 +5,7 @@ colorFrom: blue
5
  colorTo: purple
6
  sdk: docker
7
  pinned: true
 
8
  thumbnail: >-
9
  https://cdn-uploads.huggingface.co/production/uploads/671faa3a541a76b548647676/XWNDlOu0R4fHXR0kCW3Wd.png
10
  short_description: All about Reachy Mini, from building to getting started
 
5
  colorTo: purple
6
  sdk: docker
7
  pinned: true
8
+ hf_oauth: true
9
  thumbnail: >-
10
  https://cdn-uploads.huggingface.co/production/uploads/671faa3a541a76b548647676/XWNDlOu0R4fHXR0kCW3Wd.png
11
  short_description: All about Reachy Mini, from building to getting started
package-lock.json CHANGED
@@ -10,9 +10,11 @@
10
  "dependencies": {
11
  "@emotion/react": "^11.14.0",
12
  "@emotion/styled": "^11.14.1",
 
13
  "@mui/icons-material": "^7.3.6",
14
  "@mui/material": "^7.3.6",
15
  "@react-spring/web": "^10.0.3",
 
16
  "framer-motion": "^12.23.26",
17
  "highlight.js": "^11.11.1",
18
  "react": "^19.2.0",
@@ -1070,6 +1072,30 @@
1070
  "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1071
  }
1072
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1073
  "node_modules/@humanfs/core": {
1074
  "version": "0.19.1",
1075
  "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
@@ -1978,6 +2004,19 @@
1978
  "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
1979
  }
1980
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
1981
  "node_modules/acorn": {
1982
  "version": "8.15.0",
1983
  "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
@@ -2019,6 +2058,16 @@
2019
  "url": "https://github.com/sponsors/epoberezkin"
2020
  }
2021
  },
 
 
 
 
 
 
 
 
 
 
2022
  "node_modules/ansi-styles": {
2023
  "version": "4.3.0",
2024
  "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -2042,6 +2091,12 @@
2042
  "dev": true,
2043
  "license": "Python-2.0"
2044
  },
 
 
 
 
 
 
2045
  "node_modules/babel-plugin-macros": {
2046
  "version": "3.1.0",
2047
  "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
@@ -2083,6 +2138,45 @@
2083
  "baseline-browser-mapping": "dist/cli.js"
2084
  }
2085
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2086
  "node_modules/brace-expansion": {
2087
  "version": "1.1.12",
2088
  "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
@@ -2129,6 +2223,44 @@
2129
  "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
2130
  }
2131
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2132
  "node_modules/callsites": {
2133
  "version": "3.1.0",
2134
  "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -2221,6 +2353,19 @@
2221
  "url": "https://github.com/sponsors/wooorm"
2222
  }
2223
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
2224
  "node_modules/clsx": {
2225
  "version": "2.1.1",
2226
  "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
@@ -2266,6 +2411,27 @@
2266
  "dev": true,
2267
  "license": "MIT"
2268
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2269
  "node_modules/convert-source-map": {
2270
  "version": "1.9.0",
2271
  "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
@@ -2285,6 +2451,12 @@
2285
  "url": "https://opencollective.com/express"
2286
  }
2287
  },
 
 
 
 
 
 
2288
  "node_modules/cosmiconfig": {
2289
  "version": "7.1.0",
2290
  "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
@@ -2367,6 +2539,15 @@
2367
  "dev": true,
2368
  "license": "MIT"
2369
  },
 
 
 
 
 
 
 
 
 
2370
  "node_modules/dequal": {
2371
  "version": "2.0.3",
2372
  "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
@@ -2375,6 +2556,16 @@
2375
  "node": ">=6"
2376
  }
2377
  },
 
 
 
 
 
 
 
 
 
 
2378
  "node_modules/devlop": {
2379
  "version": "1.1.0",
2380
  "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
@@ -2397,6 +2588,26 @@
2397
  "csstype": "^3.0.2"
2398
  }
2399
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2400
  "node_modules/electron-to-chromium": {
2401
  "version": "1.5.267",
2402
  "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz",
@@ -2404,6 +2615,22 @@
2404
  "dev": true,
2405
  "license": "ISC"
2406
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2407
  "node_modules/error-ex": {
2408
  "version": "1.3.4",
2409
  "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
@@ -2413,6 +2640,36 @@
2413
  "is-arrayish": "^0.2.1"
2414
  }
2415
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2416
  "node_modules/esbuild": {
2417
  "version": "0.25.12",
2418
  "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
@@ -2465,6 +2722,12 @@
2465
  "node": ">=6"
2466
  }
2467
  },
 
 
 
 
 
 
2468
  "node_modules/escape-string-regexp": {
2469
  "version": "4.0.0",
2470
  "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
@@ -2671,6 +2934,85 @@
2671
  "node": ">=0.10.0"
2672
  }
2673
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2674
  "node_modules/extend": {
2675
  "version": "3.0.2",
2676
  "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
@@ -2728,6 +3070,39 @@
2728
  "node": ">=16.0.0"
2729
  }
2730
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2731
  "node_modules/find-root": {
2732
  "version": "1.1.0",
2733
  "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
@@ -2772,6 +3147,15 @@
2772
  "dev": true,
2773
  "license": "ISC"
2774
  },
 
 
 
 
 
 
 
 
 
2775
  "node_modules/framer-motion": {
2776
  "version": "12.23.26",
2777
  "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.23.26.tgz",
@@ -2799,6 +3183,15 @@
2799
  }
2800
  }
2801
  },
 
 
 
 
 
 
 
 
 
2802
  "node_modules/fsevents": {
2803
  "version": "2.3.3",
2804
  "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -2832,6 +3225,43 @@
2832
  "node": ">=6.9.0"
2833
  }
2834
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2835
  "node_modules/glob-parent": {
2836
  "version": "6.0.2",
2837
  "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@@ -2858,6 +3288,18 @@
2858
  "url": "https://github.com/sponsors/sindresorhus"
2859
  }
2860
  },
 
 
 
 
 
 
 
 
 
 
 
 
2861
  "node_modules/has-flag": {
2862
  "version": "4.0.0",
2863
  "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -2868,6 +3310,18 @@
2868
  "node": ">=8"
2869
  }
2870
  },
 
 
 
 
 
 
 
 
 
 
 
 
2871
  "node_modules/hasown": {
2872
  "version": "2.0.2",
2873
  "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
@@ -2989,6 +3443,38 @@
2989
  "url": "https://opencollective.com/unified"
2990
  }
2991
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2992
  "node_modules/ignore": {
2993
  "version": "5.3.2",
2994
  "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
@@ -3025,11 +3511,26 @@
3025
  "node": ">=0.8.19"
3026
  }
3027
  },
 
 
 
 
 
 
3028
  "node_modules/inline-style-parser": {
3029
  "version": "0.2.7",
3030
  "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz",
3031
  "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="
3032
  },
 
 
 
 
 
 
 
 
 
3033
  "node_modules/is-alphabetical": {
3034
  "version": "2.0.1",
3035
  "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
@@ -3092,6 +3593,16 @@
3092
  "node": ">=0.10.0"
3093
  }
3094
  },
 
 
 
 
 
 
 
 
 
 
3095
  "node_modules/is-glob": {
3096
  "version": "4.0.3",
3097
  "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
@@ -3310,6 +3821,15 @@
3310
  "url": "https://github.com/sponsors/wooorm"
3311
  }
3312
  },
 
 
 
 
 
 
 
 
 
3313
  "node_modules/mdast-util-find-and-replace": {
3314
  "version": "3.0.2",
3315
  "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz",
@@ -3576,6 +4096,33 @@
3576
  "url": "https://opencollective.com/unified"
3577
  }
3578
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3579
  "node_modules/micromark": {
3580
  "version": "4.0.2",
3581
  "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz",
@@ -4111,6 +4658,39 @@
4111
  }
4112
  ]
4113
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4114
  "node_modules/minimatch": {
4115
  "version": "3.1.2",
4116
  "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -4171,6 +4751,15 @@
4171
  "dev": true,
4172
  "license": "MIT"
4173
  },
 
 
 
 
 
 
 
 
 
4174
  "node_modules/node-releases": {
4175
  "version": "2.0.27",
4176
  "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
@@ -4187,6 +4776,30 @@
4187
  "node": ">=0.10.0"
4188
  }
4189
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4190
  "node_modules/optionator": {
4191
  "version": "0.9.4",
4192
  "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
@@ -4290,6 +4903,15 @@
4290
  "url": "https://github.com/sponsors/sindresorhus"
4291
  }
4292
  },
 
 
 
 
 
 
 
 
 
4293
  "node_modules/path-exists": {
4294
  "version": "4.0.0",
4295
  "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -4316,6 +4938,12 @@
4316
  "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
4317
  "license": "MIT"
4318
  },
 
 
 
 
 
 
4319
  "node_modules/path-type": {
4320
  "version": "4.0.0",
4321
  "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
@@ -4404,6 +5032,19 @@
4404
  "url": "https://github.com/sponsors/wooorm"
4405
  }
4406
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
4407
  "node_modules/punycode": {
4408
  "version": "2.3.1",
4409
  "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
@@ -4414,6 +5055,45 @@
4414
  "node": ">=6"
4415
  }
4416
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4417
  "node_modules/react": {
4418
  "version": "19.2.3",
4419
  "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz",
@@ -4682,6 +5362,32 @@
4682
  "fsevents": "~2.3.2"
4683
  }
4684
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4685
  "node_modules/scheduler": {
4686
  "version": "0.27.0",
4687
  "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
@@ -4698,12 +5404,72 @@
4698
  "semver": "bin/semver.js"
4699
  }
4700
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4701
  "node_modules/set-cookie-parser": {
4702
  "version": "2.7.2",
4703
  "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz",
4704
  "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==",
4705
  "license": "MIT"
4706
  },
 
 
 
 
 
 
4707
  "node_modules/shebang-command": {
4708
  "version": "2.0.0",
4709
  "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -4727,6 +5493,78 @@
4727
  "node": ">=8"
4728
  }
4729
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4730
  "node_modules/source-map": {
4731
  "version": "0.5.7",
4732
  "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
@@ -4755,6 +5593,30 @@
4755
  "url": "https://github.com/sponsors/wooorm"
4756
  }
4757
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4758
  "node_modules/stringify-entities": {
4759
  "version": "4.0.4",
4760
  "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
@@ -4768,6 +5630,19 @@
4768
  "url": "https://github.com/sponsors/wooorm"
4769
  }
4770
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
4771
  "node_modules/strip-json-comments": {
4772
  "version": "3.1.1",
4773
  "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -4845,6 +5720,15 @@
4845
  "url": "https://github.com/sponsors/SuperchupuDev"
4846
  }
4847
  },
 
 
 
 
 
 
 
 
 
4848
  "node_modules/trim-lines": {
4849
  "version": "3.0.1",
4850
  "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
@@ -4882,6 +5766,19 @@
4882
  "node": ">= 0.8.0"
4883
  }
4884
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
4885
  "node_modules/unified": {
4886
  "version": "11.0.5",
4887
  "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
@@ -4976,6 +5873,15 @@
4976
  "url": "https://opencollective.com/unified"
4977
  }
4978
  },
 
 
 
 
 
 
 
 
 
4979
  "node_modules/update-browserslist-db": {
4980
  "version": "1.2.2",
4981
  "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.2.tgz",
@@ -5017,6 +5923,24 @@
5017
  "punycode": "^2.1.0"
5018
  }
5019
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5020
  "node_modules/vfile": {
5021
  "version": "6.0.3",
5022
  "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
 
10
  "dependencies": {
11
  "@emotion/react": "^11.14.0",
12
  "@emotion/styled": "^11.14.1",
13
+ "@huggingface/hub": "^2.8.1",
14
  "@mui/icons-material": "^7.3.6",
15
  "@mui/material": "^7.3.6",
16
  "@react-spring/web": "^10.0.3",
17
+ "express": "^4.21.2",
18
  "framer-motion": "^12.23.26",
19
  "highlight.js": "^11.11.1",
20
  "react": "^19.2.0",
 
1072
  "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
1073
  }
1074
  },
1075
+ "node_modules/@huggingface/hub": {
1076
+ "version": "2.8.1",
1077
+ "resolved": "https://registry.npmjs.org/@huggingface/hub/-/hub-2.8.1.tgz",
1078
+ "integrity": "sha512-VAsXdMiIHPteXQJhrwaBEiePTWiJ0zBSymHdnX4J+AijjNN0h3RzGfkKemXcu75gu/TmRLFY9l8+2Tkdmpis0w==",
1079
+ "license": "MIT",
1080
+ "dependencies": {
1081
+ "@huggingface/tasks": "^0.19.82"
1082
+ },
1083
+ "bin": {
1084
+ "hfjs": "dist/cli.js"
1085
+ },
1086
+ "engines": {
1087
+ "node": ">=18"
1088
+ },
1089
+ "optionalDependencies": {
1090
+ "cli-progress": "^3.12.0"
1091
+ }
1092
+ },
1093
+ "node_modules/@huggingface/tasks": {
1094
+ "version": "0.19.83",
1095
+ "resolved": "https://registry.npmjs.org/@huggingface/tasks/-/tasks-0.19.83.tgz",
1096
+ "integrity": "sha512-nBt3S6x+MWUTmfey1drQZRMuEopEbz2aEMUsoddfpCuzIYAMCsJDX7xeNuJnzvbVGis3gXXCRcLHVhFtHaaiyA==",
1097
+ "license": "MIT"
1098
+ },
1099
  "node_modules/@humanfs/core": {
1100
  "version": "0.19.1",
1101
  "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
 
2004
  "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0"
2005
  }
2006
  },
2007
+ "node_modules/accepts": {
2008
+ "version": "1.3.8",
2009
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
2010
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
2011
+ "license": "MIT",
2012
+ "dependencies": {
2013
+ "mime-types": "~2.1.34",
2014
+ "negotiator": "0.6.3"
2015
+ },
2016
+ "engines": {
2017
+ "node": ">= 0.6"
2018
+ }
2019
+ },
2020
  "node_modules/acorn": {
2021
  "version": "8.15.0",
2022
  "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
 
2058
  "url": "https://github.com/sponsors/epoberezkin"
2059
  }
2060
  },
2061
+ "node_modules/ansi-regex": {
2062
+ "version": "5.0.1",
2063
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2064
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2065
+ "license": "MIT",
2066
+ "optional": true,
2067
+ "engines": {
2068
+ "node": ">=8"
2069
+ }
2070
+ },
2071
  "node_modules/ansi-styles": {
2072
  "version": "4.3.0",
2073
  "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
 
2091
  "dev": true,
2092
  "license": "Python-2.0"
2093
  },
2094
+ "node_modules/array-flatten": {
2095
+ "version": "1.1.1",
2096
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
2097
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
2098
+ "license": "MIT"
2099
+ },
2100
  "node_modules/babel-plugin-macros": {
2101
  "version": "3.1.0",
2102
  "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
 
2138
  "baseline-browser-mapping": "dist/cli.js"
2139
  }
2140
  },
2141
+ "node_modules/body-parser": {
2142
+ "version": "1.20.4",
2143
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz",
2144
+ "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==",
2145
+ "license": "MIT",
2146
+ "dependencies": {
2147
+ "bytes": "~3.1.2",
2148
+ "content-type": "~1.0.5",
2149
+ "debug": "2.6.9",
2150
+ "depd": "2.0.0",
2151
+ "destroy": "~1.2.0",
2152
+ "http-errors": "~2.0.1",
2153
+ "iconv-lite": "~0.4.24",
2154
+ "on-finished": "~2.4.1",
2155
+ "qs": "~6.14.0",
2156
+ "raw-body": "~2.5.3",
2157
+ "type-is": "~1.6.18",
2158
+ "unpipe": "~1.0.0"
2159
+ },
2160
+ "engines": {
2161
+ "node": ">= 0.8",
2162
+ "npm": "1.2.8000 || >= 1.4.16"
2163
+ }
2164
+ },
2165
+ "node_modules/body-parser/node_modules/debug": {
2166
+ "version": "2.6.9",
2167
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
2168
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
2169
+ "license": "MIT",
2170
+ "dependencies": {
2171
+ "ms": "2.0.0"
2172
+ }
2173
+ },
2174
+ "node_modules/body-parser/node_modules/ms": {
2175
+ "version": "2.0.0",
2176
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
2177
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
2178
+ "license": "MIT"
2179
+ },
2180
  "node_modules/brace-expansion": {
2181
  "version": "1.1.12",
2182
  "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
 
2223
  "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
2224
  }
2225
  },
2226
+ "node_modules/bytes": {
2227
+ "version": "3.1.2",
2228
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
2229
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
2230
+ "license": "MIT",
2231
+ "engines": {
2232
+ "node": ">= 0.8"
2233
+ }
2234
+ },
2235
+ "node_modules/call-bind-apply-helpers": {
2236
+ "version": "1.0.2",
2237
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
2238
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
2239
+ "license": "MIT",
2240
+ "dependencies": {
2241
+ "es-errors": "^1.3.0",
2242
+ "function-bind": "^1.1.2"
2243
+ },
2244
+ "engines": {
2245
+ "node": ">= 0.4"
2246
+ }
2247
+ },
2248
+ "node_modules/call-bound": {
2249
+ "version": "1.0.4",
2250
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
2251
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
2252
+ "license": "MIT",
2253
+ "dependencies": {
2254
+ "call-bind-apply-helpers": "^1.0.2",
2255
+ "get-intrinsic": "^1.3.0"
2256
+ },
2257
+ "engines": {
2258
+ "node": ">= 0.4"
2259
+ },
2260
+ "funding": {
2261
+ "url": "https://github.com/sponsors/ljharb"
2262
+ }
2263
+ },
2264
  "node_modules/callsites": {
2265
  "version": "3.1.0",
2266
  "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
 
2353
  "url": "https://github.com/sponsors/wooorm"
2354
  }
2355
  },
2356
+ "node_modules/cli-progress": {
2357
+ "version": "3.12.0",
2358
+ "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz",
2359
+ "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==",
2360
+ "license": "MIT",
2361
+ "optional": true,
2362
+ "dependencies": {
2363
+ "string-width": "^4.2.3"
2364
+ },
2365
+ "engines": {
2366
+ "node": ">=4"
2367
+ }
2368
+ },
2369
  "node_modules/clsx": {
2370
  "version": "2.1.1",
2371
  "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
 
2411
  "dev": true,
2412
  "license": "MIT"
2413
  },
2414
+ "node_modules/content-disposition": {
2415
+ "version": "0.5.4",
2416
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
2417
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
2418
+ "license": "MIT",
2419
+ "dependencies": {
2420
+ "safe-buffer": "5.2.1"
2421
+ },
2422
+ "engines": {
2423
+ "node": ">= 0.6"
2424
+ }
2425
+ },
2426
+ "node_modules/content-type": {
2427
+ "version": "1.0.5",
2428
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
2429
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
2430
+ "license": "MIT",
2431
+ "engines": {
2432
+ "node": ">= 0.6"
2433
+ }
2434
+ },
2435
  "node_modules/convert-source-map": {
2436
  "version": "1.9.0",
2437
  "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
 
2451
  "url": "https://opencollective.com/express"
2452
  }
2453
  },
2454
+ "node_modules/cookie-signature": {
2455
+ "version": "1.0.7",
2456
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz",
2457
+ "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==",
2458
+ "license": "MIT"
2459
+ },
2460
  "node_modules/cosmiconfig": {
2461
  "version": "7.1.0",
2462
  "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
 
2539
  "dev": true,
2540
  "license": "MIT"
2541
  },
2542
+ "node_modules/depd": {
2543
+ "version": "2.0.0",
2544
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
2545
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
2546
+ "license": "MIT",
2547
+ "engines": {
2548
+ "node": ">= 0.8"
2549
+ }
2550
+ },
2551
  "node_modules/dequal": {
2552
  "version": "2.0.3",
2553
  "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
 
2556
  "node": ">=6"
2557
  }
2558
  },
2559
+ "node_modules/destroy": {
2560
+ "version": "1.2.0",
2561
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
2562
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
2563
+ "license": "MIT",
2564
+ "engines": {
2565
+ "node": ">= 0.8",
2566
+ "npm": "1.2.8000 || >= 1.4.16"
2567
+ }
2568
+ },
2569
  "node_modules/devlop": {
2570
  "version": "1.1.0",
2571
  "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz",
 
2588
  "csstype": "^3.0.2"
2589
  }
2590
  },
2591
+ "node_modules/dunder-proto": {
2592
+ "version": "1.0.1",
2593
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
2594
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
2595
+ "license": "MIT",
2596
+ "dependencies": {
2597
+ "call-bind-apply-helpers": "^1.0.1",
2598
+ "es-errors": "^1.3.0",
2599
+ "gopd": "^1.2.0"
2600
+ },
2601
+ "engines": {
2602
+ "node": ">= 0.4"
2603
+ }
2604
+ },
2605
+ "node_modules/ee-first": {
2606
+ "version": "1.1.1",
2607
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
2608
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
2609
+ "license": "MIT"
2610
+ },
2611
  "node_modules/electron-to-chromium": {
2612
  "version": "1.5.267",
2613
  "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz",
 
2615
  "dev": true,
2616
  "license": "ISC"
2617
  },
2618
+ "node_modules/emoji-regex": {
2619
+ "version": "8.0.0",
2620
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
2621
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
2622
+ "license": "MIT",
2623
+ "optional": true
2624
+ },
2625
+ "node_modules/encodeurl": {
2626
+ "version": "2.0.0",
2627
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
2628
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
2629
+ "license": "MIT",
2630
+ "engines": {
2631
+ "node": ">= 0.8"
2632
+ }
2633
+ },
2634
  "node_modules/error-ex": {
2635
  "version": "1.3.4",
2636
  "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
 
2640
  "is-arrayish": "^0.2.1"
2641
  }
2642
  },
2643
+ "node_modules/es-define-property": {
2644
+ "version": "1.0.1",
2645
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
2646
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
2647
+ "license": "MIT",
2648
+ "engines": {
2649
+ "node": ">= 0.4"
2650
+ }
2651
+ },
2652
+ "node_modules/es-errors": {
2653
+ "version": "1.3.0",
2654
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
2655
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
2656
+ "license": "MIT",
2657
+ "engines": {
2658
+ "node": ">= 0.4"
2659
+ }
2660
+ },
2661
+ "node_modules/es-object-atoms": {
2662
+ "version": "1.1.1",
2663
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
2664
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
2665
+ "license": "MIT",
2666
+ "dependencies": {
2667
+ "es-errors": "^1.3.0"
2668
+ },
2669
+ "engines": {
2670
+ "node": ">= 0.4"
2671
+ }
2672
+ },
2673
  "node_modules/esbuild": {
2674
  "version": "0.25.12",
2675
  "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
 
2722
  "node": ">=6"
2723
  }
2724
  },
2725
+ "node_modules/escape-html": {
2726
+ "version": "1.0.3",
2727
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
2728
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
2729
+ "license": "MIT"
2730
+ },
2731
  "node_modules/escape-string-regexp": {
2732
  "version": "4.0.0",
2733
  "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
 
2934
  "node": ">=0.10.0"
2935
  }
2936
  },
2937
+ "node_modules/etag": {
2938
+ "version": "1.8.1",
2939
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
2940
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
2941
+ "license": "MIT",
2942
+ "engines": {
2943
+ "node": ">= 0.6"
2944
+ }
2945
+ },
2946
+ "node_modules/express": {
2947
+ "version": "4.22.1",
2948
+ "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz",
2949
+ "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==",
2950
+ "license": "MIT",
2951
+ "dependencies": {
2952
+ "accepts": "~1.3.8",
2953
+ "array-flatten": "1.1.1",
2954
+ "body-parser": "~1.20.3",
2955
+ "content-disposition": "~0.5.4",
2956
+ "content-type": "~1.0.4",
2957
+ "cookie": "~0.7.1",
2958
+ "cookie-signature": "~1.0.6",
2959
+ "debug": "2.6.9",
2960
+ "depd": "2.0.0",
2961
+ "encodeurl": "~2.0.0",
2962
+ "escape-html": "~1.0.3",
2963
+ "etag": "~1.8.1",
2964
+ "finalhandler": "~1.3.1",
2965
+ "fresh": "~0.5.2",
2966
+ "http-errors": "~2.0.0",
2967
+ "merge-descriptors": "1.0.3",
2968
+ "methods": "~1.1.2",
2969
+ "on-finished": "~2.4.1",
2970
+ "parseurl": "~1.3.3",
2971
+ "path-to-regexp": "~0.1.12",
2972
+ "proxy-addr": "~2.0.7",
2973
+ "qs": "~6.14.0",
2974
+ "range-parser": "~1.2.1",
2975
+ "safe-buffer": "5.2.1",
2976
+ "send": "~0.19.0",
2977
+ "serve-static": "~1.16.2",
2978
+ "setprototypeof": "1.2.0",
2979
+ "statuses": "~2.0.1",
2980
+ "type-is": "~1.6.18",
2981
+ "utils-merge": "1.0.1",
2982
+ "vary": "~1.1.2"
2983
+ },
2984
+ "engines": {
2985
+ "node": ">= 0.10.0"
2986
+ },
2987
+ "funding": {
2988
+ "type": "opencollective",
2989
+ "url": "https://opencollective.com/express"
2990
+ }
2991
+ },
2992
+ "node_modules/express/node_modules/cookie": {
2993
+ "version": "0.7.2",
2994
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
2995
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
2996
+ "license": "MIT",
2997
+ "engines": {
2998
+ "node": ">= 0.6"
2999
+ }
3000
+ },
3001
+ "node_modules/express/node_modules/debug": {
3002
+ "version": "2.6.9",
3003
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
3004
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
3005
+ "license": "MIT",
3006
+ "dependencies": {
3007
+ "ms": "2.0.0"
3008
+ }
3009
+ },
3010
+ "node_modules/express/node_modules/ms": {
3011
+ "version": "2.0.0",
3012
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
3013
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
3014
+ "license": "MIT"
3015
+ },
3016
  "node_modules/extend": {
3017
  "version": "3.0.2",
3018
  "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
 
3070
  "node": ">=16.0.0"
3071
  }
3072
  },
3073
+ "node_modules/finalhandler": {
3074
+ "version": "1.3.2",
3075
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz",
3076
+ "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==",
3077
+ "license": "MIT",
3078
+ "dependencies": {
3079
+ "debug": "2.6.9",
3080
+ "encodeurl": "~2.0.0",
3081
+ "escape-html": "~1.0.3",
3082
+ "on-finished": "~2.4.1",
3083
+ "parseurl": "~1.3.3",
3084
+ "statuses": "~2.0.2",
3085
+ "unpipe": "~1.0.0"
3086
+ },
3087
+ "engines": {
3088
+ "node": ">= 0.8"
3089
+ }
3090
+ },
3091
+ "node_modules/finalhandler/node_modules/debug": {
3092
+ "version": "2.6.9",
3093
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
3094
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
3095
+ "license": "MIT",
3096
+ "dependencies": {
3097
+ "ms": "2.0.0"
3098
+ }
3099
+ },
3100
+ "node_modules/finalhandler/node_modules/ms": {
3101
+ "version": "2.0.0",
3102
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
3103
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
3104
+ "license": "MIT"
3105
+ },
3106
  "node_modules/find-root": {
3107
  "version": "1.1.0",
3108
  "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
 
3147
  "dev": true,
3148
  "license": "ISC"
3149
  },
3150
+ "node_modules/forwarded": {
3151
+ "version": "0.2.0",
3152
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
3153
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
3154
+ "license": "MIT",
3155
+ "engines": {
3156
+ "node": ">= 0.6"
3157
+ }
3158
+ },
3159
  "node_modules/framer-motion": {
3160
  "version": "12.23.26",
3161
  "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.23.26.tgz",
 
3183
  }
3184
  }
3185
  },
3186
+ "node_modules/fresh": {
3187
+ "version": "0.5.2",
3188
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
3189
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
3190
+ "license": "MIT",
3191
+ "engines": {
3192
+ "node": ">= 0.6"
3193
+ }
3194
+ },
3195
  "node_modules/fsevents": {
3196
  "version": "2.3.3",
3197
  "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
 
3225
  "node": ">=6.9.0"
3226
  }
3227
  },
3228
+ "node_modules/get-intrinsic": {
3229
+ "version": "1.3.0",
3230
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
3231
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
3232
+ "license": "MIT",
3233
+ "dependencies": {
3234
+ "call-bind-apply-helpers": "^1.0.2",
3235
+ "es-define-property": "^1.0.1",
3236
+ "es-errors": "^1.3.0",
3237
+ "es-object-atoms": "^1.1.1",
3238
+ "function-bind": "^1.1.2",
3239
+ "get-proto": "^1.0.1",
3240
+ "gopd": "^1.2.0",
3241
+ "has-symbols": "^1.1.0",
3242
+ "hasown": "^2.0.2",
3243
+ "math-intrinsics": "^1.1.0"
3244
+ },
3245
+ "engines": {
3246
+ "node": ">= 0.4"
3247
+ },
3248
+ "funding": {
3249
+ "url": "https://github.com/sponsors/ljharb"
3250
+ }
3251
+ },
3252
+ "node_modules/get-proto": {
3253
+ "version": "1.0.1",
3254
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
3255
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
3256
+ "license": "MIT",
3257
+ "dependencies": {
3258
+ "dunder-proto": "^1.0.1",
3259
+ "es-object-atoms": "^1.0.0"
3260
+ },
3261
+ "engines": {
3262
+ "node": ">= 0.4"
3263
+ }
3264
+ },
3265
  "node_modules/glob-parent": {
3266
  "version": "6.0.2",
3267
  "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
 
3288
  "url": "https://github.com/sponsors/sindresorhus"
3289
  }
3290
  },
3291
+ "node_modules/gopd": {
3292
+ "version": "1.2.0",
3293
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
3294
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
3295
+ "license": "MIT",
3296
+ "engines": {
3297
+ "node": ">= 0.4"
3298
+ },
3299
+ "funding": {
3300
+ "url": "https://github.com/sponsors/ljharb"
3301
+ }
3302
+ },
3303
  "node_modules/has-flag": {
3304
  "version": "4.0.0",
3305
  "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
 
3310
  "node": ">=8"
3311
  }
3312
  },
3313
+ "node_modules/has-symbols": {
3314
+ "version": "1.1.0",
3315
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
3316
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
3317
+ "license": "MIT",
3318
+ "engines": {
3319
+ "node": ">= 0.4"
3320
+ },
3321
+ "funding": {
3322
+ "url": "https://github.com/sponsors/ljharb"
3323
+ }
3324
+ },
3325
  "node_modules/hasown": {
3326
  "version": "2.0.2",
3327
  "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
 
3443
  "url": "https://opencollective.com/unified"
3444
  }
3445
  },
3446
+ "node_modules/http-errors": {
3447
+ "version": "2.0.1",
3448
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
3449
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
3450
+ "license": "MIT",
3451
+ "dependencies": {
3452
+ "depd": "~2.0.0",
3453
+ "inherits": "~2.0.4",
3454
+ "setprototypeof": "~1.2.0",
3455
+ "statuses": "~2.0.2",
3456
+ "toidentifier": "~1.0.1"
3457
+ },
3458
+ "engines": {
3459
+ "node": ">= 0.8"
3460
+ },
3461
+ "funding": {
3462
+ "type": "opencollective",
3463
+ "url": "https://opencollective.com/express"
3464
+ }
3465
+ },
3466
+ "node_modules/iconv-lite": {
3467
+ "version": "0.4.24",
3468
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
3469
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
3470
+ "license": "MIT",
3471
+ "dependencies": {
3472
+ "safer-buffer": ">= 2.1.2 < 3"
3473
+ },
3474
+ "engines": {
3475
+ "node": ">=0.10.0"
3476
+ }
3477
+ },
3478
  "node_modules/ignore": {
3479
  "version": "5.3.2",
3480
  "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
 
3511
  "node": ">=0.8.19"
3512
  }
3513
  },
3514
+ "node_modules/inherits": {
3515
+ "version": "2.0.4",
3516
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
3517
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
3518
+ "license": "ISC"
3519
+ },
3520
  "node_modules/inline-style-parser": {
3521
  "version": "0.2.7",
3522
  "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz",
3523
  "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="
3524
  },
3525
+ "node_modules/ipaddr.js": {
3526
+ "version": "1.9.1",
3527
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
3528
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
3529
+ "license": "MIT",
3530
+ "engines": {
3531
+ "node": ">= 0.10"
3532
+ }
3533
+ },
3534
  "node_modules/is-alphabetical": {
3535
  "version": "2.0.1",
3536
  "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
 
3593
  "node": ">=0.10.0"
3594
  }
3595
  },
3596
+ "node_modules/is-fullwidth-code-point": {
3597
+ "version": "3.0.0",
3598
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
3599
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
3600
+ "license": "MIT",
3601
+ "optional": true,
3602
+ "engines": {
3603
+ "node": ">=8"
3604
+ }
3605
+ },
3606
  "node_modules/is-glob": {
3607
  "version": "4.0.3",
3608
  "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
 
3821
  "url": "https://github.com/sponsors/wooorm"
3822
  }
3823
  },
3824
+ "node_modules/math-intrinsics": {
3825
+ "version": "1.1.0",
3826
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
3827
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
3828
+ "license": "MIT",
3829
+ "engines": {
3830
+ "node": ">= 0.4"
3831
+ }
3832
+ },
3833
  "node_modules/mdast-util-find-and-replace": {
3834
  "version": "3.0.2",
3835
  "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz",
 
4096
  "url": "https://opencollective.com/unified"
4097
  }
4098
  },
4099
+ "node_modules/media-typer": {
4100
+ "version": "0.3.0",
4101
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
4102
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
4103
+ "license": "MIT",
4104
+ "engines": {
4105
+ "node": ">= 0.6"
4106
+ }
4107
+ },
4108
+ "node_modules/merge-descriptors": {
4109
+ "version": "1.0.3",
4110
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
4111
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
4112
+ "license": "MIT",
4113
+ "funding": {
4114
+ "url": "https://github.com/sponsors/sindresorhus"
4115
+ }
4116
+ },
4117
+ "node_modules/methods": {
4118
+ "version": "1.1.2",
4119
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
4120
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
4121
+ "license": "MIT",
4122
+ "engines": {
4123
+ "node": ">= 0.6"
4124
+ }
4125
+ },
4126
  "node_modules/micromark": {
4127
  "version": "4.0.2",
4128
  "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz",
 
4658
  }
4659
  ]
4660
  },
4661
+ "node_modules/mime": {
4662
+ "version": "1.6.0",
4663
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
4664
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
4665
+ "license": "MIT",
4666
+ "bin": {
4667
+ "mime": "cli.js"
4668
+ },
4669
+ "engines": {
4670
+ "node": ">=4"
4671
+ }
4672
+ },
4673
+ "node_modules/mime-db": {
4674
+ "version": "1.52.0",
4675
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
4676
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
4677
+ "license": "MIT",
4678
+ "engines": {
4679
+ "node": ">= 0.6"
4680
+ }
4681
+ },
4682
+ "node_modules/mime-types": {
4683
+ "version": "2.1.35",
4684
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
4685
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
4686
+ "license": "MIT",
4687
+ "dependencies": {
4688
+ "mime-db": "1.52.0"
4689
+ },
4690
+ "engines": {
4691
+ "node": ">= 0.6"
4692
+ }
4693
+ },
4694
  "node_modules/minimatch": {
4695
  "version": "3.1.2",
4696
  "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
 
4751
  "dev": true,
4752
  "license": "MIT"
4753
  },
4754
+ "node_modules/negotiator": {
4755
+ "version": "0.6.3",
4756
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
4757
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
4758
+ "license": "MIT",
4759
+ "engines": {
4760
+ "node": ">= 0.6"
4761
+ }
4762
+ },
4763
  "node_modules/node-releases": {
4764
  "version": "2.0.27",
4765
  "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
 
4776
  "node": ">=0.10.0"
4777
  }
4778
  },
4779
+ "node_modules/object-inspect": {
4780
+ "version": "1.13.4",
4781
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
4782
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
4783
+ "license": "MIT",
4784
+ "engines": {
4785
+ "node": ">= 0.4"
4786
+ },
4787
+ "funding": {
4788
+ "url": "https://github.com/sponsors/ljharb"
4789
+ }
4790
+ },
4791
+ "node_modules/on-finished": {
4792
+ "version": "2.4.1",
4793
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
4794
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
4795
+ "license": "MIT",
4796
+ "dependencies": {
4797
+ "ee-first": "1.1.1"
4798
+ },
4799
+ "engines": {
4800
+ "node": ">= 0.8"
4801
+ }
4802
+ },
4803
  "node_modules/optionator": {
4804
  "version": "0.9.4",
4805
  "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
 
4903
  "url": "https://github.com/sponsors/sindresorhus"
4904
  }
4905
  },
4906
+ "node_modules/parseurl": {
4907
+ "version": "1.3.3",
4908
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
4909
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
4910
+ "license": "MIT",
4911
+ "engines": {
4912
+ "node": ">= 0.8"
4913
+ }
4914
+ },
4915
  "node_modules/path-exists": {
4916
  "version": "4.0.0",
4917
  "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
 
4938
  "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
4939
  "license": "MIT"
4940
  },
4941
+ "node_modules/path-to-regexp": {
4942
+ "version": "0.1.12",
4943
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
4944
+ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
4945
+ "license": "MIT"
4946
+ },
4947
  "node_modules/path-type": {
4948
  "version": "4.0.0",
4949
  "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
 
5032
  "url": "https://github.com/sponsors/wooorm"
5033
  }
5034
  },
5035
+ "node_modules/proxy-addr": {
5036
+ "version": "2.0.7",
5037
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
5038
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
5039
+ "license": "MIT",
5040
+ "dependencies": {
5041
+ "forwarded": "0.2.0",
5042
+ "ipaddr.js": "1.9.1"
5043
+ },
5044
+ "engines": {
5045
+ "node": ">= 0.10"
5046
+ }
5047
+ },
5048
  "node_modules/punycode": {
5049
  "version": "2.3.1",
5050
  "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
 
5055
  "node": ">=6"
5056
  }
5057
  },
5058
+ "node_modules/qs": {
5059
+ "version": "6.14.1",
5060
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz",
5061
+ "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==",
5062
+ "license": "BSD-3-Clause",
5063
+ "dependencies": {
5064
+ "side-channel": "^1.1.0"
5065
+ },
5066
+ "engines": {
5067
+ "node": ">=0.6"
5068
+ },
5069
+ "funding": {
5070
+ "url": "https://github.com/sponsors/ljharb"
5071
+ }
5072
+ },
5073
+ "node_modules/range-parser": {
5074
+ "version": "1.2.1",
5075
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
5076
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
5077
+ "license": "MIT",
5078
+ "engines": {
5079
+ "node": ">= 0.6"
5080
+ }
5081
+ },
5082
+ "node_modules/raw-body": {
5083
+ "version": "2.5.3",
5084
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz",
5085
+ "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==",
5086
+ "license": "MIT",
5087
+ "dependencies": {
5088
+ "bytes": "~3.1.2",
5089
+ "http-errors": "~2.0.1",
5090
+ "iconv-lite": "~0.4.24",
5091
+ "unpipe": "~1.0.0"
5092
+ },
5093
+ "engines": {
5094
+ "node": ">= 0.8"
5095
+ }
5096
+ },
5097
  "node_modules/react": {
5098
  "version": "19.2.3",
5099
  "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz",
 
5362
  "fsevents": "~2.3.2"
5363
  }
5364
  },
5365
+ "node_modules/safe-buffer": {
5366
+ "version": "5.2.1",
5367
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
5368
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
5369
+ "funding": [
5370
+ {
5371
+ "type": "github",
5372
+ "url": "https://github.com/sponsors/feross"
5373
+ },
5374
+ {
5375
+ "type": "patreon",
5376
+ "url": "https://www.patreon.com/feross"
5377
+ },
5378
+ {
5379
+ "type": "consulting",
5380
+ "url": "https://feross.org/support"
5381
+ }
5382
+ ],
5383
+ "license": "MIT"
5384
+ },
5385
+ "node_modules/safer-buffer": {
5386
+ "version": "2.1.2",
5387
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
5388
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
5389
+ "license": "MIT"
5390
+ },
5391
  "node_modules/scheduler": {
5392
  "version": "0.27.0",
5393
  "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz",
 
5404
  "semver": "bin/semver.js"
5405
  }
5406
  },
5407
+ "node_modules/send": {
5408
+ "version": "0.19.2",
5409
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz",
5410
+ "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==",
5411
+ "license": "MIT",
5412
+ "dependencies": {
5413
+ "debug": "2.6.9",
5414
+ "depd": "2.0.0",
5415
+ "destroy": "1.2.0",
5416
+ "encodeurl": "~2.0.0",
5417
+ "escape-html": "~1.0.3",
5418
+ "etag": "~1.8.1",
5419
+ "fresh": "~0.5.2",
5420
+ "http-errors": "~2.0.1",
5421
+ "mime": "1.6.0",
5422
+ "ms": "2.1.3",
5423
+ "on-finished": "~2.4.1",
5424
+ "range-parser": "~1.2.1",
5425
+ "statuses": "~2.0.2"
5426
+ },
5427
+ "engines": {
5428
+ "node": ">= 0.8.0"
5429
+ }
5430
+ },
5431
+ "node_modules/send/node_modules/debug": {
5432
+ "version": "2.6.9",
5433
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
5434
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
5435
+ "license": "MIT",
5436
+ "dependencies": {
5437
+ "ms": "2.0.0"
5438
+ }
5439
+ },
5440
+ "node_modules/send/node_modules/debug/node_modules/ms": {
5441
+ "version": "2.0.0",
5442
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
5443
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
5444
+ "license": "MIT"
5445
+ },
5446
+ "node_modules/serve-static": {
5447
+ "version": "1.16.3",
5448
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz",
5449
+ "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==",
5450
+ "license": "MIT",
5451
+ "dependencies": {
5452
+ "encodeurl": "~2.0.0",
5453
+ "escape-html": "~1.0.3",
5454
+ "parseurl": "~1.3.3",
5455
+ "send": "~0.19.1"
5456
+ },
5457
+ "engines": {
5458
+ "node": ">= 0.8.0"
5459
+ }
5460
+ },
5461
  "node_modules/set-cookie-parser": {
5462
  "version": "2.7.2",
5463
  "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz",
5464
  "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==",
5465
  "license": "MIT"
5466
  },
5467
+ "node_modules/setprototypeof": {
5468
+ "version": "1.2.0",
5469
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
5470
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
5471
+ "license": "ISC"
5472
+ },
5473
  "node_modules/shebang-command": {
5474
  "version": "2.0.0",
5475
  "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
 
5493
  "node": ">=8"
5494
  }
5495
  },
5496
+ "node_modules/side-channel": {
5497
+ "version": "1.1.0",
5498
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
5499
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
5500
+ "license": "MIT",
5501
+ "dependencies": {
5502
+ "es-errors": "^1.3.0",
5503
+ "object-inspect": "^1.13.3",
5504
+ "side-channel-list": "^1.0.0",
5505
+ "side-channel-map": "^1.0.1",
5506
+ "side-channel-weakmap": "^1.0.2"
5507
+ },
5508
+ "engines": {
5509
+ "node": ">= 0.4"
5510
+ },
5511
+ "funding": {
5512
+ "url": "https://github.com/sponsors/ljharb"
5513
+ }
5514
+ },
5515
+ "node_modules/side-channel-list": {
5516
+ "version": "1.0.0",
5517
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
5518
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
5519
+ "license": "MIT",
5520
+ "dependencies": {
5521
+ "es-errors": "^1.3.0",
5522
+ "object-inspect": "^1.13.3"
5523
+ },
5524
+ "engines": {
5525
+ "node": ">= 0.4"
5526
+ },
5527
+ "funding": {
5528
+ "url": "https://github.com/sponsors/ljharb"
5529
+ }
5530
+ },
5531
+ "node_modules/side-channel-map": {
5532
+ "version": "1.0.1",
5533
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
5534
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
5535
+ "license": "MIT",
5536
+ "dependencies": {
5537
+ "call-bound": "^1.0.2",
5538
+ "es-errors": "^1.3.0",
5539
+ "get-intrinsic": "^1.2.5",
5540
+ "object-inspect": "^1.13.3"
5541
+ },
5542
+ "engines": {
5543
+ "node": ">= 0.4"
5544
+ },
5545
+ "funding": {
5546
+ "url": "https://github.com/sponsors/ljharb"
5547
+ }
5548
+ },
5549
+ "node_modules/side-channel-weakmap": {
5550
+ "version": "1.0.2",
5551
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
5552
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
5553
+ "license": "MIT",
5554
+ "dependencies": {
5555
+ "call-bound": "^1.0.2",
5556
+ "es-errors": "^1.3.0",
5557
+ "get-intrinsic": "^1.2.5",
5558
+ "object-inspect": "^1.13.3",
5559
+ "side-channel-map": "^1.0.1"
5560
+ },
5561
+ "engines": {
5562
+ "node": ">= 0.4"
5563
+ },
5564
+ "funding": {
5565
+ "url": "https://github.com/sponsors/ljharb"
5566
+ }
5567
+ },
5568
  "node_modules/source-map": {
5569
  "version": "0.5.7",
5570
  "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
 
5593
  "url": "https://github.com/sponsors/wooorm"
5594
  }
5595
  },
5596
+ "node_modules/statuses": {
5597
+ "version": "2.0.2",
5598
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
5599
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
5600
+ "license": "MIT",
5601
+ "engines": {
5602
+ "node": ">= 0.8"
5603
+ }
5604
+ },
5605
+ "node_modules/string-width": {
5606
+ "version": "4.2.3",
5607
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
5608
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
5609
+ "license": "MIT",
5610
+ "optional": true,
5611
+ "dependencies": {
5612
+ "emoji-regex": "^8.0.0",
5613
+ "is-fullwidth-code-point": "^3.0.0",
5614
+ "strip-ansi": "^6.0.1"
5615
+ },
5616
+ "engines": {
5617
+ "node": ">=8"
5618
+ }
5619
+ },
5620
  "node_modules/stringify-entities": {
5621
  "version": "4.0.4",
5622
  "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz",
 
5630
  "url": "https://github.com/sponsors/wooorm"
5631
  }
5632
  },
5633
+ "node_modules/strip-ansi": {
5634
+ "version": "6.0.1",
5635
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
5636
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
5637
+ "license": "MIT",
5638
+ "optional": true,
5639
+ "dependencies": {
5640
+ "ansi-regex": "^5.0.1"
5641
+ },
5642
+ "engines": {
5643
+ "node": ">=8"
5644
+ }
5645
+ },
5646
  "node_modules/strip-json-comments": {
5647
  "version": "3.1.1",
5648
  "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
 
5720
  "url": "https://github.com/sponsors/SuperchupuDev"
5721
  }
5722
  },
5723
+ "node_modules/toidentifier": {
5724
+ "version": "1.0.1",
5725
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
5726
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
5727
+ "license": "MIT",
5728
+ "engines": {
5729
+ "node": ">=0.6"
5730
+ }
5731
+ },
5732
  "node_modules/trim-lines": {
5733
  "version": "3.0.1",
5734
  "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
 
5766
  "node": ">= 0.8.0"
5767
  }
5768
  },
5769
+ "node_modules/type-is": {
5770
+ "version": "1.6.18",
5771
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
5772
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
5773
+ "license": "MIT",
5774
+ "dependencies": {
5775
+ "media-typer": "0.3.0",
5776
+ "mime-types": "~2.1.24"
5777
+ },
5778
+ "engines": {
5779
+ "node": ">= 0.6"
5780
+ }
5781
+ },
5782
  "node_modules/unified": {
5783
  "version": "11.0.5",
5784
  "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
 
5873
  "url": "https://opencollective.com/unified"
5874
  }
5875
  },
5876
+ "node_modules/unpipe": {
5877
+ "version": "1.0.0",
5878
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
5879
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
5880
+ "license": "MIT",
5881
+ "engines": {
5882
+ "node": ">= 0.8"
5883
+ }
5884
+ },
5885
  "node_modules/update-browserslist-db": {
5886
  "version": "1.2.2",
5887
  "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.2.tgz",
 
5923
  "punycode": "^2.1.0"
5924
  }
5925
  },
5926
+ "node_modules/utils-merge": {
5927
+ "version": "1.0.1",
5928
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
5929
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
5930
+ "license": "MIT",
5931
+ "engines": {
5932
+ "node": ">= 0.4.0"
5933
+ }
5934
+ },
5935
+ "node_modules/vary": {
5936
+ "version": "1.1.2",
5937
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
5938
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
5939
+ "license": "MIT",
5940
+ "engines": {
5941
+ "node": ">= 0.8"
5942
+ }
5943
+ },
5944
  "node_modules/vfile": {
5945
  "version": "6.0.3",
5946
  "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz",
package.json CHANGED
@@ -12,12 +12,13 @@
12
  "start:prod": "NODE_ENV=production node server/index.js"
13
  },
14
  "dependencies": {
15
- "express": "^4.21.2",
16
  "@emotion/react": "^11.14.0",
17
  "@emotion/styled": "^11.14.1",
 
18
  "@mui/icons-material": "^7.3.6",
19
  "@mui/material": "^7.3.6",
20
  "@react-spring/web": "^10.0.3",
 
21
  "framer-motion": "^12.23.26",
22
  "highlight.js": "^11.11.1",
23
  "react": "^19.2.0",
 
12
  "start:prod": "NODE_ENV=production node server/index.js"
13
  },
14
  "dependencies": {
 
15
  "@emotion/react": "^11.14.0",
16
  "@emotion/styled": "^11.14.1",
17
+ "@huggingface/hub": "^2.8.1",
18
  "@mui/icons-material": "^7.3.6",
19
  "@mui/material": "^7.3.6",
20
  "@react-spring/web": "^10.0.3",
21
+ "express": "^4.21.2",
22
  "framer-motion": "^12.23.26",
23
  "highlight.js": "^11.11.1",
24
  "react": "^19.2.0",
src/App.jsx CHANGED
@@ -3,6 +3,7 @@ import { HashRouter, Routes, Route, useLocation } from 'react-router-dom';
3
  import { ThemeProvider, CssBaseline } from '@mui/material';
4
  import theme from './theme/theme';
5
  import { AppsProvider } from './context/AppsContext';
 
6
 
7
  import Home from './pages/Home';
8
  import Download from './pages/Download';
@@ -46,20 +47,22 @@ export default function App() {
46
  return (
47
  <ThemeProvider theme={theme}>
48
  <CssBaseline />
49
- <AppsProvider>
50
- <HashRouter>
51
- <ScrollToTop />
52
- <Routes>
53
- <Route path="/" element={<Home />} />
54
- <Route path="/getting-started" element={<GettingStarted />} />
55
- <Route path="https://huggingface.co/docs/reachy_mini/" element={<Build />} />
56
- <Route path="/download" element={<Download />} />
57
- <Route path="https://huggingface.co/docs/reachy_mini/troubleshooting" element={<FAQ />} />
58
- <Route path="/apps" element={<Apps />} />
59
- <Route path="/buy" element={<Buy />} />
60
- </Routes>
61
- </HashRouter>
62
- </AppsProvider>
 
 
63
  </ThemeProvider>
64
  );
65
  }
 
3
  import { ThemeProvider, CssBaseline } from '@mui/material';
4
  import theme from './theme/theme';
5
  import { AppsProvider } from './context/AppsContext';
6
+ import { AuthProvider } from './context/AuthContext';
7
 
8
  import Home from './pages/Home';
9
  import Download from './pages/Download';
 
47
  return (
48
  <ThemeProvider theme={theme}>
49
  <CssBaseline />
50
+ <AuthProvider>
51
+ <AppsProvider>
52
+ <HashRouter>
53
+ <ScrollToTop />
54
+ <Routes>
55
+ <Route path="/" element={<Home />} />
56
+ <Route path="/getting-started" element={<GettingStarted />} />
57
+ <Route path="https://huggingface.co/docs/reachy_mini/" element={<Build />} />
58
+ <Route path="/download" element={<Download />} />
59
+ <Route path="https://huggingface.co/docs/reachy_mini/troubleshooting" element={<FAQ />} />
60
+ <Route path="/apps" element={<Apps />} />
61
+ <Route path="/buy" element={<Buy />} />
62
+ </Routes>
63
+ </HashRouter>
64
+ </AppsProvider>
65
+ </AuthProvider>
66
  </ThemeProvider>
67
  );
68
  }
src/components/InstallModal.jsx CHANGED
@@ -8,16 +8,20 @@ import {
8
  DialogContent,
9
  IconButton,
10
  Link,
 
11
  Typography,
12
  } from '@mui/material';
13
  import CloseIcon from '@mui/icons-material/Close';
14
  import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder';
 
15
  import VerifiedIcon from '@mui/icons-material/Verified';
16
  import DownloadIcon from '@mui/icons-material/Download';
17
  import OpenInNewIcon from '@mui/icons-material/OpenInNew';
18
  import ComputerIcon from '@mui/icons-material/Computer';
 
19
 
20
  function InstallModal({ open, onClose, app }) {
 
21
  // Detect Linux users
22
  const isLinux = useMemo(() => {
23
  if (typeof navigator === 'undefined') return false;
@@ -37,7 +41,9 @@ function InstallModal({ open, onClose, app }) {
37
 
38
  const author = app.extra?.author || app.id?.split('/')?.[0] || null;
39
  const isOfficial = app.isOfficial;
40
- const likes = app.extra?.likes || 0;
 
 
41
  const lastModified = app.extra?.lastModified || null;
42
  const formattedDate = lastModified
43
  ? new Date(lastModified).toLocaleDateString('en-US', {
@@ -164,10 +170,47 @@ function InstallModal({ open, onClose, app }) {
164
 
165
  {/* Stats row */}
166
  <Box sx={{ display: 'flex', alignItems: 'center', gap: 2, mt: 1 }}>
167
- <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5 }}>
168
- <FavoriteBorderIcon sx={{ fontSize: 14, color: '#999' }} />
169
- <Typography sx={{ fontSize: 12, color: '#999' }}>{likes}</Typography>
170
- </Box>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
171
  {formattedDate && (
172
  <Typography sx={{ fontSize: 12, color: '#aaa' }}>
173
  Updated {formattedDate}
 
8
  DialogContent,
9
  IconButton,
10
  Link,
11
+ Tooltip,
12
  Typography,
13
  } from '@mui/material';
14
  import CloseIcon from '@mui/icons-material/Close';
15
  import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder';
16
+ import FavoriteIcon from '@mui/icons-material/Favorite';
17
  import VerifiedIcon from '@mui/icons-material/Verified';
18
  import DownloadIcon from '@mui/icons-material/Download';
19
  import OpenInNewIcon from '@mui/icons-material/OpenInNew';
20
  import ComputerIcon from '@mui/icons-material/Computer';
21
+ import { useAuth } from '../context/AuthContext';
22
 
23
  function InstallModal({ open, onClose, app }) {
24
+ const { isLoggedIn, isSpaceLiked, toggleLike } = useAuth();
25
  // Detect Linux users
26
  const isLinux = useMemo(() => {
27
  if (typeof navigator === 'undefined') return false;
 
41
 
42
  const author = app.extra?.author || app.id?.split('/')?.[0] || null;
43
  const isOfficial = app.isOfficial;
44
+ const baseLikes = app.extra?.likes || 0;
45
+ const isLiked = isSpaceLiked(app.id);
46
+ const displayedLikes = baseLikes + (isLiked ? 1 : 0);
47
  const lastModified = app.extra?.lastModified || null;
48
  const formattedDate = lastModified
49
  ? new Date(lastModified).toLocaleDateString('en-US', {
 
170
 
171
  {/* Stats row */}
172
  <Box sx={{ display: 'flex', alignItems: 'center', gap: 2, mt: 1 }}>
173
+ <Tooltip
174
+ title={isLoggedIn ? '' : 'Sign in to like this app'}
175
+ arrow
176
+ placement="top"
177
+ disableHoverListener={isLoggedIn}
178
+ >
179
+ <Box
180
+ component="button"
181
+ onClick={() => toggleLike(app.id)}
182
+ sx={{
183
+ display: 'flex',
184
+ alignItems: 'center',
185
+ gap: 0.5,
186
+ border: 'none',
187
+ bgcolor: 'transparent',
188
+ cursor: 'pointer',
189
+ p: 0.5,
190
+ m: -0.5,
191
+ borderRadius: '6px',
192
+ transition: 'all 0.15s ease',
193
+ '&:hover': {
194
+ bgcolor: 'rgba(236, 72, 153, 0.08)',
195
+ },
196
+ }}
197
+ >
198
+ {isLiked ? (
199
+ <FavoriteIcon sx={{ fontSize: 14, color: '#ec4899' }} />
200
+ ) : (
201
+ <FavoriteBorderIcon sx={{ fontSize: 14, color: '#999' }} />
202
+ )}
203
+ <Typography
204
+ sx={{
205
+ fontSize: 12,
206
+ color: isLiked ? '#ec4899' : '#999',
207
+ fontWeight: isLiked ? 600 : 400,
208
+ }}
209
+ >
210
+ {displayedLikes}
211
+ </Typography>
212
+ </Box>
213
+ </Tooltip>
214
  {formattedDate && (
215
  <Typography sx={{ fontSize: 12, color: '#aaa' }}>
216
  Updated {formattedDate}
src/context/AuthContext.jsx ADDED
@@ -0,0 +1,178 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { createContext, useContext, useState, useEffect, useCallback, useRef } from 'react';
2
+ import { oauthLoginUrl, oauthHandleRedirectIfPresent } from '@huggingface/hub';
3
+
4
+ const AuthContext = createContext(null);
5
+
6
+ const HF_API = 'https://huggingface.co';
7
+
8
+ /**
9
+ * Fetch all space IDs liked by a user.
10
+ * Returns a Set of lowercase space IDs (e.g. "pollen-robotics/reachy-mini-teleop").
11
+ */
12
+ async function fetchUserLikedSpaces(username) {
13
+ try {
14
+ const response = await fetch(`${HF_API}/api/users/${username}/likes`);
15
+ if (!response.ok) return new Set();
16
+ const likes = await response.json();
17
+ // Filter only spaces and return their repo names as a Set
18
+ return new Set(
19
+ likes
20
+ .filter((item) => item.repo?.type === 'space')
21
+ .map((item) => item.repo.name.toLowerCase())
22
+ );
23
+ } catch (err) {
24
+ console.error('[Auth] Failed to fetch user likes:', err);
25
+ return new Set();
26
+ }
27
+ }
28
+
29
+ // Provider component
30
+ export function AuthProvider({ children }) {
31
+ const [user, setUser] = useState(null); // { name, avatarUrl, accessToken }
32
+ const [likedSpaceIds, setLikedSpaceIds] = useState(new Set());
33
+ const [isLoading, setIsLoading] = useState(true);
34
+ const pendingLikes = useRef(new Set()); // Track in-flight like/unlike requests
35
+
36
+ // On mount: check if user just completed OAuth redirect
37
+ useEffect(() => {
38
+ async function handleOAuth() {
39
+ try {
40
+ const oauthResult = await oauthHandleRedirectIfPresent();
41
+ if (oauthResult) {
42
+ const { accessToken, userInfo } = oauthResult;
43
+ const userData = {
44
+ name: userInfo.name,
45
+ preferredUsername: userInfo.preferred_username || userInfo.name,
46
+ avatarUrl: userInfo.picture,
47
+ accessToken: accessToken,
48
+ };
49
+ setUser(userData);
50
+
51
+ // Fetch user's liked spaces
52
+ const likes = await fetchUserLikedSpaces(userData.preferredUsername);
53
+ setLikedSpaceIds(likes);
54
+
55
+ console.log(
56
+ `[Auth] Logged in as ${userData.preferredUsername}, ${likes.size} liked spaces`
57
+ );
58
+ }
59
+ } catch (err) {
60
+ console.error('[Auth] OAuth error:', err);
61
+ } finally {
62
+ setIsLoading(false);
63
+ }
64
+ }
65
+
66
+ handleOAuth();
67
+ }, []);
68
+
69
+ // Login: redirect to HF OAuth
70
+ const login = useCallback(async () => {
71
+ try {
72
+ const loginUrl = await oauthLoginUrl();
73
+ window.location.href = loginUrl;
74
+ } catch (err) {
75
+ console.error('[Auth] Failed to get OAuth URL:', err);
76
+ }
77
+ }, []);
78
+
79
+ // Logout: clear state
80
+ const logout = useCallback(() => {
81
+ setUser(null);
82
+ setLikedSpaceIds(new Set());
83
+ }, []);
84
+
85
+ // Check if a space is liked
86
+ const isSpaceLiked = useCallback(
87
+ (spaceId) => {
88
+ return likedSpaceIds.has(spaceId?.toLowerCase());
89
+ },
90
+ [likedSpaceIds]
91
+ );
92
+
93
+ // Toggle like/unlike with optimistic update
94
+ const toggleLike = useCallback(
95
+ async (spaceId) => {
96
+ if (!user) {
97
+ // Not logged in -> trigger login
98
+ login();
99
+ return;
100
+ }
101
+
102
+ const spaceIdLower = spaceId?.toLowerCase();
103
+ if (!spaceIdLower) return;
104
+
105
+ // Prevent duplicate requests for the same space
106
+ if (pendingLikes.current.has(spaceIdLower)) return;
107
+ pendingLikes.current.add(spaceIdLower);
108
+
109
+ const wasLiked = likedSpaceIds.has(spaceIdLower);
110
+ const method = wasLiked ? 'DELETE' : 'POST';
111
+
112
+ // Optimistic update
113
+ setLikedSpaceIds((prev) => {
114
+ const next = new Set(prev);
115
+ if (wasLiked) {
116
+ next.delete(spaceIdLower);
117
+ } else {
118
+ next.add(spaceIdLower);
119
+ }
120
+ return next;
121
+ });
122
+
123
+ try {
124
+ const response = await fetch(`${HF_API}/api/spaces/${spaceId}/like`, {
125
+ method,
126
+ headers: {
127
+ Authorization: `Bearer ${user.accessToken}`,
128
+ },
129
+ });
130
+
131
+ if (!response.ok) {
132
+ throw new Error(`Like API returned ${response.status}`);
133
+ }
134
+ } catch (err) {
135
+ console.error(`[Auth] Failed to ${wasLiked ? 'unlike' : 'like'} ${spaceId}:`, err);
136
+ // Revert optimistic update on error
137
+ setLikedSpaceIds((prev) => {
138
+ const reverted = new Set(prev);
139
+ if (wasLiked) {
140
+ reverted.add(spaceIdLower);
141
+ } else {
142
+ reverted.delete(spaceIdLower);
143
+ }
144
+ return reverted;
145
+ });
146
+ } finally {
147
+ pendingLikes.current.delete(spaceIdLower);
148
+ }
149
+ },
150
+ [user, likedSpaceIds, login]
151
+ );
152
+
153
+ return (
154
+ <AuthContext.Provider
155
+ value={{
156
+ user,
157
+ isLoggedIn: !!user,
158
+ isLoading,
159
+ likedSpaceIds,
160
+ login,
161
+ logout,
162
+ isSpaceLiked,
163
+ toggleLike,
164
+ }}
165
+ >
166
+ {children}
167
+ </AuthContext.Provider>
168
+ );
169
+ }
170
+
171
+ // Hook to use auth context
172
+ export function useAuth() {
173
+ const context = useContext(AuthContext);
174
+ if (!context) {
175
+ throw new Error('useAuth must be used within an AuthProvider');
176
+ }
177
+ return context;
178
+ }
src/pages/Apps.jsx CHANGED
@@ -1,4 +1,4 @@
1
- import { useState, useMemo } from 'react';
2
  import {
3
  Box,
4
  Container,
@@ -12,30 +12,37 @@ import {
12
  Link,
13
  IconButton,
14
  Button,
 
15
  } from '@mui/material';
16
  import SearchIcon from '@mui/icons-material/Search';
17
  import CloseIcon from '@mui/icons-material/Close';
18
  import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder';
 
19
  import AccessTimeIcon from '@mui/icons-material/AccessTime';
20
  import VerifiedIcon from '@mui/icons-material/Verified';
21
  import DownloadIcon from '@mui/icons-material/Download';
22
  import OpenInNewIcon from '@mui/icons-material/OpenInNew';
 
23
  import Layout from '../components/Layout';
24
  import ReachiesCarousel from '../components/ReachiesCarousel';
25
  import { useApps } from '../context/AppsContext';
 
26
  import InstallModal from '../components/InstallModal';
27
 
28
  // App Card Component
29
- function AppCard({ app, onInstallClick }) {
30
  const isOfficial = app.isOfficial;
31
  const isPythonApp = app.extra?.isPythonApp !== false; // Default to true for backwards compatibility
32
  const cardData = app.extra?.cardData || {};
33
  const author = app.extra?.author || app.id?.split('/')?.[0] || null;
34
- const likes = app.extra?.likes || 0;
35
  const lastModified = app.extra?.lastModified || null;
36
  const emoji = cardData.emoji || (isPythonApp ? '📦' : '🌐');
37
  const spaceUrl = app.url || `https://huggingface.co/spaces/${app.id}`;
38
 
 
 
 
39
  const formattedDate = lastModified
40
  ? new Date(lastModified).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' })
41
  : null;
@@ -168,19 +175,52 @@ function AppCard({ app, onInstallClick }) {
168
  )}
169
  </Box>
170
 
171
- {/* Likes */}
172
- <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5, flexShrink: 0 }}>
173
- <FavoriteBorderIcon sx={{ fontSize: 16, color: '#666666' }} />
174
- <Typography
 
 
 
 
 
 
 
 
 
 
175
  sx={{
176
- fontSize: 12,
177
- fontWeight: 600,
178
- color: '#666666',
 
 
 
 
 
 
 
 
 
 
179
  }}
180
  >
181
- {likes}
182
- </Typography>
183
- </Box>
 
 
 
 
 
 
 
 
 
 
 
 
 
184
  </Box>
185
 
186
  {/* Content */}
@@ -294,6 +334,7 @@ function AppCard({ app, onInstallClick }) {
294
  export default function Apps() {
295
  // Get apps from context (cached globally)
296
  const { apps, loading, error } = useApps();
 
297
  const [searchQuery, setSearchQuery] = useState('');
298
  const [officialOnly, setOfficialOnly] = useState(false);
299
 
@@ -311,6 +352,13 @@ export default function Apps() {
311
  setSelectedApp(null);
312
  };
313
 
 
 
 
 
 
 
 
314
  // Filter apps based on search and official toggle
315
  const filteredApps = useMemo(() => {
316
  let result = apps;
@@ -542,6 +590,72 @@ export default function Apps() {
542
  }
543
  sx={{ m: 0 }}
544
  />
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
545
  </Box>
546
  </Container>
547
 
@@ -582,6 +696,9 @@ export default function Apps() {
582
  key={app.id || index}
583
  app={app}
584
  onInstallClick={handleInstallClick}
 
 
 
585
  />
586
  ))}
587
  </Box>
 
1
+ import { useState, useMemo, useCallback } from 'react';
2
  import {
3
  Box,
4
  Container,
 
12
  Link,
13
  IconButton,
14
  Button,
15
+ Tooltip,
16
  } from '@mui/material';
17
  import SearchIcon from '@mui/icons-material/Search';
18
  import CloseIcon from '@mui/icons-material/Close';
19
  import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder';
20
+ import FavoriteIcon from '@mui/icons-material/Favorite';
21
  import AccessTimeIcon from '@mui/icons-material/AccessTime';
22
  import VerifiedIcon from '@mui/icons-material/Verified';
23
  import DownloadIcon from '@mui/icons-material/Download';
24
  import OpenInNewIcon from '@mui/icons-material/OpenInNew';
25
+ import LogoutIcon from '@mui/icons-material/Logout';
26
  import Layout from '../components/Layout';
27
  import ReachiesCarousel from '../components/ReachiesCarousel';
28
  import { useApps } from '../context/AppsContext';
29
+ import { useAuth } from '../context/AuthContext';
30
  import InstallModal from '../components/InstallModal';
31
 
32
  // App Card Component
33
+ function AppCard({ app, onInstallClick, isLiked, onToggleLike, isLoggedIn }) {
34
  const isOfficial = app.isOfficial;
35
  const isPythonApp = app.extra?.isPythonApp !== false; // Default to true for backwards compatibility
36
  const cardData = app.extra?.cardData || {};
37
  const author = app.extra?.author || app.id?.split('/')?.[0] || null;
38
+ const baseLikes = app.extra?.likes || 0;
39
  const lastModified = app.extra?.lastModified || null;
40
  const emoji = cardData.emoji || (isPythonApp ? '📦' : '🌐');
41
  const spaceUrl = app.url || `https://huggingface.co/spaces/${app.id}`;
42
 
43
+ // Compute displayed likes: adjust based on like state vs original data
44
+ const displayedLikes = baseLikes + (isLiked ? 1 : 0);
45
+
46
  const formattedDate = lastModified
47
  ? new Date(lastModified).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' })
48
  : null;
 
175
  )}
176
  </Box>
177
 
178
+ {/* Likes - Interactive */}
179
+ <Tooltip
180
+ title={isLoggedIn ? '' : 'Sign in to like this app'}
181
+ arrow
182
+ placement="top"
183
+ disableHoverListener={isLoggedIn}
184
+ >
185
+ <Box
186
+ component="button"
187
+ onClick={(e) => {
188
+ e.preventDefault();
189
+ e.stopPropagation();
190
+ onToggleLike?.(app.id);
191
+ }}
192
  sx={{
193
+ display: 'flex',
194
+ alignItems: 'center',
195
+ gap: 0.5,
196
+ flexShrink: 0,
197
+ border: 'none',
198
+ bgcolor: 'transparent',
199
+ cursor: 'pointer',
200
+ p: 0.5,
201
+ borderRadius: '6px',
202
+ transition: 'all 0.15s ease',
203
+ '&:hover': {
204
+ bgcolor: 'rgba(236, 72, 153, 0.08)',
205
+ },
206
  }}
207
  >
208
+ {isLiked ? (
209
+ <FavoriteIcon sx={{ fontSize: 16, color: '#ec4899' }} />
210
+ ) : (
211
+ <FavoriteBorderIcon sx={{ fontSize: 16, color: '#666666' }} />
212
+ )}
213
+ <Typography
214
+ sx={{
215
+ fontSize: 12,
216
+ fontWeight: 600,
217
+ color: isLiked ? '#ec4899' : '#666666',
218
+ }}
219
+ >
220
+ {displayedLikes}
221
+ </Typography>
222
+ </Box>
223
+ </Tooltip>
224
  </Box>
225
 
226
  {/* Content */}
 
334
  export default function Apps() {
335
  // Get apps from context (cached globally)
336
  const { apps, loading, error } = useApps();
337
+ const { user, isLoggedIn, login, logout, isSpaceLiked, toggleLike } = useAuth();
338
  const [searchQuery, setSearchQuery] = useState('');
339
  const [officialOnly, setOfficialOnly] = useState(false);
340
 
 
352
  setSelectedApp(null);
353
  };
354
 
355
+ const handleToggleLike = useCallback(
356
+ (spaceId) => {
357
+ toggleLike(spaceId);
358
+ },
359
+ [toggleLike]
360
+ );
361
+
362
  // Filter apps based on search and official toggle
363
  const filteredApps = useMemo(() => {
364
  let result = apps;
 
590
  }
591
  sx={{ m: 0 }}
592
  />
593
+
594
+ {/* Separator */}
595
+ <Box sx={{ width: '1px', height: '24px', bgcolor: 'rgba(0, 0, 0, 0.1)' }} />
596
+
597
+ {/* Auth: Login / User */}
598
+ {isLoggedIn ? (
599
+ <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
600
+ <Avatar
601
+ src={user?.avatarUrl}
602
+ sx={{
603
+ width: 28,
604
+ height: 28,
605
+ fontSize: 12,
606
+ fontWeight: 600,
607
+ bgcolor: '#FF9500',
608
+ }}
609
+ >
610
+ {user?.name?.charAt(0)?.toUpperCase()}
611
+ </Avatar>
612
+ <Typography
613
+ sx={{
614
+ fontSize: 13,
615
+ fontWeight: 600,
616
+ color: '#333',
617
+ maxWidth: 100,
618
+ overflow: 'hidden',
619
+ textOverflow: 'ellipsis',
620
+ whiteSpace: 'nowrap',
621
+ }}
622
+ >
623
+ {user?.preferredUsername || user?.name}
624
+ </Typography>
625
+ <Tooltip title="Sign out">
626
+ <IconButton onClick={logout} size="small" sx={{ color: '#999' }}>
627
+ <LogoutIcon sx={{ fontSize: 18 }} />
628
+ </IconButton>
629
+ </Tooltip>
630
+ </Box>
631
+ ) : (
632
+ <Button
633
+ onClick={login}
634
+ variant="text"
635
+ size="small"
636
+ sx={{
637
+ textTransform: 'none',
638
+ fontWeight: 600,
639
+ fontSize: 13,
640
+ color: '#333',
641
+ gap: 0.75,
642
+ px: 1.5,
643
+ borderRadius: '8px',
644
+ whiteSpace: 'nowrap',
645
+ '&:hover': {
646
+ bgcolor: 'rgba(0, 0, 0, 0.04)',
647
+ },
648
+ }}
649
+ >
650
+ <Box
651
+ component="img"
652
+ src="/assets/hf-logo.svg"
653
+ alt=""
654
+ sx={{ height: 16 }}
655
+ />
656
+ Sign in
657
+ </Button>
658
+ )}
659
  </Box>
660
  </Container>
661
 
 
696
  key={app.id || index}
697
  app={app}
698
  onInstallClick={handleInstallClick}
699
+ isLiked={isSpaceLiked(app.id)}
700
+ onToggleLike={handleToggleLike}
701
+ isLoggedIn={isLoggedIn}
702
  />
703
  ))}
704
  </Box>
yarn.lock CHANGED
@@ -16,7 +16,7 @@
16
  resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz"
17
  integrity sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==
18
 
19
- "@babel/core@^7.24.4", "@babel/core@^7.28.5":
20
  version "7.28.5"
21
  resolved "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz"
22
  integrity sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==
@@ -198,7 +198,7 @@
198
  resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz"
199
  integrity sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==
200
 
201
- "@emotion/is-prop-valid@^1.3.0":
202
  version "1.4.0"
203
  resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.4.0.tgz"
204
  integrity sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==
@@ -210,7 +210,7 @@
210
  resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz"
211
  integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==
212
 
213
- "@emotion/react@^11.14.0":
214
  version "11.14.0"
215
  resolved "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz"
216
  integrity sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==
@@ -240,7 +240,7 @@
240
  resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz"
241
  integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==
242
 
243
- "@emotion/styled@^11.14.1":
244
  version "11.14.1"
245
  resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.1.tgz"
246
  integrity sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==
@@ -272,136 +272,11 @@
272
  resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz"
273
  integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==
274
 
275
- "@esbuild/aix-ppc64@0.25.12":
276
- version "0.25.12"
277
- resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz#80fcbe36130e58b7670511e888b8e88a259ed76c"
278
- integrity sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==
279
-
280
- "@esbuild/android-arm64@0.25.12":
281
- version "0.25.12"
282
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz#8aa4965f8d0a7982dc21734bf6601323a66da752"
283
- integrity sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==
284
-
285
- "@esbuild/android-arm@0.25.12":
286
- version "0.25.12"
287
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.12.tgz#300712101f7f50f1d2627a162e6e09b109b6767a"
288
- integrity sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==
289
-
290
- "@esbuild/android-x64@0.25.12":
291
- version "0.25.12"
292
- resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.12.tgz#87dfb27161202bdc958ef48bb61b09c758faee16"
293
- integrity sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==
294
-
295
  "@esbuild/darwin-arm64@0.25.12":
296
  version "0.25.12"
297
  resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz"
298
  integrity sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==
299
 
300
- "@esbuild/darwin-x64@0.25.12":
301
- version "0.25.12"
302
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz#146400a8562133f45c4d2eadcf37ddd09718079e"
303
- integrity sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==
304
-
305
- "@esbuild/freebsd-arm64@0.25.12":
306
- version "0.25.12"
307
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz#1c5f9ba7206e158fd2b24c59fa2d2c8bb47ca0fe"
308
- integrity sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==
309
-
310
- "@esbuild/freebsd-x64@0.25.12":
311
- version "0.25.12"
312
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz#ea631f4a36beaac4b9279fa0fcc6ca29eaeeb2b3"
313
- integrity sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==
314
-
315
- "@esbuild/linux-arm64@0.25.12":
316
- version "0.25.12"
317
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz#e1066bce58394f1b1141deec8557a5f0a22f5977"
318
- integrity sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==
319
-
320
- "@esbuild/linux-arm@0.25.12":
321
- version "0.25.12"
322
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz#452cd66b20932d08bdc53a8b61c0e30baf4348b9"
323
- integrity sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==
324
-
325
- "@esbuild/linux-ia32@0.25.12":
326
- version "0.25.12"
327
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz#b24f8acc45bcf54192c7f2f3be1b53e6551eafe0"
328
- integrity sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==
329
-
330
- "@esbuild/linux-loong64@0.25.12":
331
- version "0.25.12"
332
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz#f9cfffa7fc8322571fbc4c8b3268caf15bd81ad0"
333
- integrity sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==
334
-
335
- "@esbuild/linux-mips64el@0.25.12":
336
- version "0.25.12"
337
- resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz#575a14bd74644ffab891adc7d7e60d275296f2cd"
338
- integrity sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==
339
-
340
- "@esbuild/linux-ppc64@0.25.12":
341
- version "0.25.12"
342
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz#75b99c70a95fbd5f7739d7692befe60601591869"
343
- integrity sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==
344
-
345
- "@esbuild/linux-riscv64@0.25.12":
346
- version "0.25.12"
347
- resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz#2e3259440321a44e79ddf7535c325057da875cd6"
348
- integrity sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==
349
-
350
- "@esbuild/linux-s390x@0.25.12":
351
- version "0.25.12"
352
- resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz#17676cabbfe5928da5b2a0d6df5d58cd08db2663"
353
- integrity sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==
354
-
355
- "@esbuild/linux-x64@0.25.12":
356
- version "0.25.12"
357
- resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz#0583775685ca82066d04c3507f09524d3cd7a306"
358
- integrity sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==
359
-
360
- "@esbuild/netbsd-arm64@0.25.12":
361
- version "0.25.12"
362
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz#f04c4049cb2e252fe96b16fed90f70746b13f4a4"
363
- integrity sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==
364
-
365
- "@esbuild/netbsd-x64@0.25.12":
366
- version "0.25.12"
367
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz#77da0d0a0d826d7c921eea3d40292548b258a076"
368
- integrity sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==
369
-
370
- "@esbuild/openbsd-arm64@0.25.12":
371
- version "0.25.12"
372
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz#6296f5867aedef28a81b22ab2009c786a952dccd"
373
- integrity sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==
374
-
375
- "@esbuild/openbsd-x64@0.25.12":
376
- version "0.25.12"
377
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz#f8d23303360e27b16cf065b23bbff43c14142679"
378
- integrity sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==
379
-
380
- "@esbuild/openharmony-arm64@0.25.12":
381
- version "0.25.12"
382
- resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz#49e0b768744a3924be0d7fd97dd6ce9b2923d88d"
383
- integrity sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==
384
-
385
- "@esbuild/sunos-x64@0.25.12":
386
- version "0.25.12"
387
- resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz#a6ed7d6778d67e528c81fb165b23f4911b9b13d6"
388
- integrity sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==
389
-
390
- "@esbuild/win32-arm64@0.25.12":
391
- version "0.25.12"
392
- resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz#9ac14c378e1b653af17d08e7d3ce34caef587323"
393
- integrity sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==
394
-
395
- "@esbuild/win32-ia32@0.25.12":
396
- version "0.25.12"
397
- resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz#918942dcbbb35cc14fca39afb91b5e6a3d127267"
398
- integrity sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==
399
-
400
- "@esbuild/win32-x64@0.25.12":
401
- version "0.25.12"
402
- resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz#9bdad8176be7811ad148d1f8772359041f46c6c5"
403
- integrity sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==
404
-
405
  "@eslint-community/eslint-utils@^4.8.0":
406
  version "4.9.0"
407
  resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz"
@@ -452,7 +327,7 @@
452
  minimatch "^3.1.2"
453
  strip-json-comments "^3.1.1"
454
 
455
- "@eslint/js@9.39.1", "@eslint/js@^9.39.1":
456
  version "9.39.1"
457
  resolved "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz"
458
  integrity sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==
@@ -470,6 +345,20 @@
470
  "@eslint/core" "^0.17.0"
471
  levn "^0.4.1"
472
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
473
  "@humanfs/core@^0.19.1":
474
  version "0.19.1"
475
  resolved "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz"
@@ -666,116 +555,11 @@
666
  resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.53.tgz"
667
  integrity sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==
668
 
669
- "@rollup/rollup-android-arm-eabi@4.53.3":
670
- version "4.53.3"
671
- resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.3.tgz#7e478b66180c5330429dd161bf84dad66b59c8eb"
672
- integrity sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==
673
-
674
- "@rollup/rollup-android-arm64@4.53.3":
675
- version "4.53.3"
676
- resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.3.tgz#2b025510c53a5e3962d3edade91fba9368c9d71c"
677
- integrity sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==
678
-
679
  "@rollup/rollup-darwin-arm64@4.53.3":
680
  version "4.53.3"
681
  resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz"
682
  integrity sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==
683
 
684
- "@rollup/rollup-darwin-x64@4.53.3":
685
- version "4.53.3"
686
- resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.3.tgz#2bf5f2520a1f3b551723d274b9669ba5b75ed69c"
687
- integrity sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==
688
-
689
- "@rollup/rollup-freebsd-arm64@4.53.3":
690
- version "4.53.3"
691
- resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.3.tgz#4bb9cc80252564c158efc0710153c71633f1927c"
692
- integrity sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==
693
-
694
- "@rollup/rollup-freebsd-x64@4.53.3":
695
- version "4.53.3"
696
- resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.3.tgz#2301289094d49415a380cf942219ae9d8b127440"
697
- integrity sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==
698
-
699
- "@rollup/rollup-linux-arm-gnueabihf@4.53.3":
700
- version "4.53.3"
701
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.3.tgz#1d03d776f2065e09fc141df7d143476e94acca88"
702
- integrity sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==
703
-
704
- "@rollup/rollup-linux-arm-musleabihf@4.53.3":
705
- version "4.53.3"
706
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.3.tgz#8623de0e040b2fd52a541c602688228f51f96701"
707
- integrity sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==
708
-
709
- "@rollup/rollup-linux-arm64-gnu@4.53.3":
710
- version "4.53.3"
711
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.3.tgz#ce2d1999bc166277935dde0301cde3dd0417fb6e"
712
- integrity sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==
713
-
714
- "@rollup/rollup-linux-arm64-musl@4.53.3":
715
- version "4.53.3"
716
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.3.tgz#88c2523778444da952651a2219026416564a4899"
717
- integrity sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==
718
-
719
- "@rollup/rollup-linux-loong64-gnu@4.53.3":
720
- version "4.53.3"
721
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.3.tgz#578ca2220a200ac4226c536c10c8cc6e4f276714"
722
- integrity sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==
723
-
724
- "@rollup/rollup-linux-ppc64-gnu@4.53.3":
725
- version "4.53.3"
726
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.3.tgz#aa338d3effd4168a20a5023834a74ba2c3081293"
727
- integrity sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==
728
-
729
- "@rollup/rollup-linux-riscv64-gnu@4.53.3":
730
- version "4.53.3"
731
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.3.tgz#16ba582f9f6cff58119aa242782209b1557a1508"
732
- integrity sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==
733
-
734
- "@rollup/rollup-linux-riscv64-musl@4.53.3":
735
- version "4.53.3"
736
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.3.tgz#e404a77ebd6378483888b8064c703adb011340ab"
737
- integrity sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==
738
-
739
- "@rollup/rollup-linux-s390x-gnu@4.53.3":
740
- version "4.53.3"
741
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.3.tgz#92ad52d306227c56bec43d96ad2164495437ffe6"
742
- integrity sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==
743
-
744
- "@rollup/rollup-linux-x64-gnu@4.53.3":
745
- version "4.53.3"
746
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.3.tgz#fd0dea3bb9aa07e7083579f25e1c2285a46cb9fa"
747
- integrity sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==
748
-
749
- "@rollup/rollup-linux-x64-musl@4.53.3":
750
- version "4.53.3"
751
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.3.tgz#37a3efb09f18d555f8afc490e1f0444885de8951"
752
- integrity sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==
753
-
754
- "@rollup/rollup-openharmony-arm64@4.53.3":
755
- version "4.53.3"
756
- resolved "https://registry.yarnpkg.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.3.tgz#c489bec9f4f8320d42c9b324cca220c90091c1f7"
757
- integrity sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==
758
-
759
- "@rollup/rollup-win32-arm64-msvc@4.53.3":
760
- version "4.53.3"
761
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.3.tgz#152832b5f79dc22d1606fac3db946283601b7080"
762
- integrity sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==
763
-
764
- "@rollup/rollup-win32-ia32-msvc@4.53.3":
765
- version "4.53.3"
766
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.3.tgz#54d91b2bb3bf3e9f30d32b72065a4e52b3a172a5"
767
- integrity sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==
768
-
769
- "@rollup/rollup-win32-x64-gnu@4.53.3":
770
- version "4.53.3"
771
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.3.tgz#df9df03e61a003873efec8decd2034e7f135c71e"
772
- integrity sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==
773
-
774
- "@rollup/rollup-win32-x64-msvc@4.53.3":
775
- version "4.53.3"
776
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.3.tgz#38ae84f4c04226c1d56a3b17296ef1e0460ecdfe"
777
- integrity sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==
778
-
779
  "@types/babel__core@^7.20.5":
780
  version "7.20.5"
781
  resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz"
@@ -823,7 +607,7 @@
823
  dependencies:
824
  "@types/estree" "*"
825
 
826
- "@types/estree@*", "@types/estree@1.0.8", "@types/estree@^1.0.0", "@types/estree@^1.0.6":
827
  version "1.0.8"
828
  resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz"
829
  integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
@@ -872,7 +656,7 @@
872
  resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz"
873
  integrity sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==
874
 
875
- "@types/react@^19.2.5":
876
  version "19.2.7"
877
  resolved "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz"
878
  integrity sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==
@@ -908,7 +692,7 @@
908
 
909
  accepts@~1.3.8:
910
  version "1.3.8"
911
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
912
  integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
913
  dependencies:
914
  mime-types "~2.1.34"
@@ -919,7 +703,7 @@ acorn-jsx@^5.3.2:
919
  resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
920
  integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
921
 
922
- acorn@^8.15.0:
923
  version "8.15.0"
924
  resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz"
925
  integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==
@@ -934,6 +718,11 @@ ajv@^6.12.4:
934
  json-schema-traverse "^0.4.1"
935
  uri-js "^4.2.2"
936
 
 
 
 
 
 
937
  ansi-styles@^4.1.0:
938
  version "4.3.0"
939
  resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
@@ -948,7 +737,7 @@ argparse@^2.0.1:
948
 
949
  array-flatten@1.1.1:
950
  version "1.1.1"
951
- resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
952
  integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
953
 
954
  babel-plugin-macros@^3.1.0:
@@ -977,7 +766,7 @@ baseline-browser-mapping@^2.9.0:
977
 
978
  body-parser@~1.20.3:
979
  version "1.20.4"
980
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.4.tgz#f8e20f4d06ca8a50a71ed329c15dccad1cdc547f"
981
  integrity sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==
982
  dependencies:
983
  bytes "~3.1.2"
@@ -1001,7 +790,7 @@ brace-expansion@^1.1.7:
1001
  balanced-match "^1.0.0"
1002
  concat-map "0.0.1"
1003
 
1004
- browserslist@^4.24.0:
1005
  version "4.28.1"
1006
  resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz"
1007
  integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==
@@ -1014,12 +803,12 @@ browserslist@^4.24.0:
1014
 
1015
  bytes@~3.1.2:
1016
  version "3.1.2"
1017
- resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
1018
  integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
1019
 
1020
  call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
1021
  version "1.0.2"
1022
- resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6"
1023
  integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
1024
  dependencies:
1025
  es-errors "^1.3.0"
@@ -1027,7 +816,7 @@ call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
1027
 
1028
  call-bound@^1.0.2:
1029
  version "1.0.4"
1030
- resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a"
1031
  integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==
1032
  dependencies:
1033
  call-bind-apply-helpers "^1.0.2"
@@ -1076,6 +865,13 @@ character-reference-invalid@^2.0.0:
1076
  resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz"
1077
  integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==
1078
 
 
 
 
 
 
 
 
1079
  clsx@^2.1.1:
1080
  version "2.1.1"
1081
  resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz"
@@ -1105,14 +901,14 @@ concat-map@0.0.1:
1105
 
1106
  content-disposition@~0.5.4:
1107
  version "0.5.4"
1108
- resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
1109
  integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
1110
  dependencies:
1111
  safe-buffer "5.2.1"
1112
 
1113
  content-type@~1.0.4, content-type@~1.0.5:
1114
  version "1.0.5"
1115
- resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
1116
  integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
1117
 
1118
  convert-source-map@^1.5.0:
@@ -1127,7 +923,7 @@ convert-source-map@^2.0.0:
1127
 
1128
  cookie-signature@~1.0.6:
1129
  version "1.0.7"
1130
- resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.7.tgz#ab5dd7ab757c54e60f37ef6550f481c426d10454"
1131
  integrity sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==
1132
 
1133
  cookie@^1.0.1:
@@ -1137,7 +933,7 @@ cookie@^1.0.1:
1137
 
1138
  cookie@~0.7.1:
1139
  version "0.7.2"
1140
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7"
1141
  integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==
1142
 
1143
  cosmiconfig@^7.0.0:
@@ -1165,13 +961,6 @@ csstype@^3.0.2, csstype@^3.1.3, csstype@^3.2.2:
1165
  resolved "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz"
1166
  integrity sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==
1167
 
1168
- debug@2.6.9:
1169
- version "2.6.9"
1170
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
1171
- integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
1172
- dependencies:
1173
- ms "2.0.0"
1174
-
1175
  debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.3.2:
1176
  version "4.4.3"
1177
  resolved "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz"
@@ -1179,6 +968,13 @@ debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.3.2:
1179
  dependencies:
1180
  ms "^2.1.3"
1181
 
 
 
 
 
 
 
 
1182
  decode-named-character-reference@^1.0.0:
1183
  version "1.2.0"
1184
  resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz"
@@ -1191,9 +987,9 @@ deep-is@^0.1.3:
1191
  resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
1192
  integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
1193
 
1194
- depd@2.0.0, depd@~2.0.0:
1195
  version "2.0.0"
1196
- resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
1197
  integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
1198
 
1199
  dequal@^2.0.0:
@@ -1201,9 +997,9 @@ dequal@^2.0.0:
1201
  resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz"
1202
  integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
1203
 
1204
- destroy@1.2.0, destroy@~1.2.0:
1205
  version "1.2.0"
1206
- resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
1207
  integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
1208
 
1209
  devlop@^1.0.0, devlop@^1.1.0:
@@ -1223,7 +1019,7 @@ dom-helpers@^5.0.1:
1223
 
1224
  dunder-proto@^1.0.1:
1225
  version "1.0.1"
1226
- resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a"
1227
  integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==
1228
  dependencies:
1229
  call-bind-apply-helpers "^1.0.1"
@@ -1232,7 +1028,7 @@ dunder-proto@^1.0.1:
1232
 
1233
  ee-first@1.1.1:
1234
  version "1.1.1"
1235
- resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
1236
  integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
1237
 
1238
  electron-to-chromium@^1.5.263:
@@ -1240,9 +1036,14 @@ electron-to-chromium@^1.5.263:
1240
  resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz"
1241
  integrity sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==
1242
 
 
 
 
 
 
1243
  encodeurl@~2.0.0:
1244
  version "2.0.0"
1245
- resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
1246
  integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
1247
 
1248
  error-ex@^1.3.1:
@@ -1254,17 +1055,17 @@ error-ex@^1.3.1:
1254
 
1255
  es-define-property@^1.0.1:
1256
  version "1.0.1"
1257
- resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa"
1258
  integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==
1259
 
1260
  es-errors@^1.3.0:
1261
  version "1.3.0"
1262
- resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
1263
  integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
1264
 
1265
  es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
1266
  version "1.1.1"
1267
- resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1"
1268
  integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==
1269
  dependencies:
1270
  es-errors "^1.3.0"
@@ -1308,7 +1109,7 @@ escalade@^3.2.0:
1308
 
1309
  escape-html@~1.0.3:
1310
  version "1.0.3"
1311
- resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
1312
  integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
1313
 
1314
  escape-string-regexp@^4.0.0:
@@ -1355,7 +1156,7 @@ eslint-visitor-keys@^4.2.1:
1355
  resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz"
1356
  integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==
1357
 
1358
- eslint@^9.39.1:
1359
  version "9.39.1"
1360
  resolved "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz"
1361
  integrity sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==
@@ -1435,12 +1236,12 @@ esutils@^2.0.2:
1435
 
1436
  etag@~1.8.1:
1437
  version "1.8.1"
1438
- resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
1439
  integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
1440
 
1441
  express@^4.21.2:
1442
  version "4.22.1"
1443
- resolved "https://registry.yarnpkg.com/express/-/express-4.22.1.tgz#1de23a09745a4fffdb39247b344bb5eaff382069"
1444
  integrity sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==
1445
  dependencies:
1446
  accepts "~1.3.8"
@@ -1509,7 +1310,7 @@ file-entry-cache@^8.0.0:
1509
 
1510
  finalhandler@~1.3.1:
1511
  version "1.3.2"
1512
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.2.tgz#1ebc2228fc7673aac4a472c310cc05b77d852b88"
1513
  integrity sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==
1514
  dependencies:
1515
  debug "2.6.9"
@@ -1548,7 +1349,7 @@ flatted@^3.2.9:
1548
 
1549
  forwarded@0.2.0:
1550
  version "0.2.0"
1551
- resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
1552
  integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
1553
 
1554
  framer-motion@^12.23.26:
@@ -1562,7 +1363,7 @@ framer-motion@^12.23.26:
1562
 
1563
  fresh@~0.5.2:
1564
  version "0.5.2"
1565
- resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
1566
  integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
1567
 
1568
  fsevents@~2.3.2, fsevents@~2.3.3:
@@ -1582,7 +1383,7 @@ gensync@^1.0.0-beta.2:
1582
 
1583
  get-intrinsic@^1.2.5, get-intrinsic@^1.3.0:
1584
  version "1.3.0"
1585
- resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01"
1586
  integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==
1587
  dependencies:
1588
  call-bind-apply-helpers "^1.0.2"
@@ -1598,7 +1399,7 @@ get-intrinsic@^1.2.5, get-intrinsic@^1.3.0:
1598
 
1599
  get-proto@^1.0.1:
1600
  version "1.0.1"
1601
- resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1"
1602
  integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==
1603
  dependencies:
1604
  dunder-proto "^1.0.1"
@@ -1623,7 +1424,7 @@ globals@^16.5.0:
1623
 
1624
  gopd@^1.2.0:
1625
  version "1.2.0"
1626
- resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1"
1627
  integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
1628
 
1629
  has-flag@^4.0.0:
@@ -1633,7 +1434,7 @@ has-flag@^4.0.0:
1633
 
1634
  has-symbols@^1.1.0:
1635
  version "1.1.0"
1636
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338"
1637
  integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
1638
 
1639
  hasown@^2.0.2:
@@ -1719,7 +1520,7 @@ html-url-attributes@^3.0.0:
1719
 
1720
  http-errors@~2.0.0, http-errors@~2.0.1:
1721
  version "2.0.1"
1722
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.1.tgz#36d2f65bc909c8790018dd36fb4d93da6caae06b"
1723
  integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==
1724
  dependencies:
1725
  depd "~2.0.0"
@@ -1730,7 +1531,7 @@ http-errors@~2.0.0, http-errors@~2.0.1:
1730
 
1731
  iconv-lite@~0.4.24:
1732
  version "0.4.24"
1733
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
1734
  integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
1735
  dependencies:
1736
  safer-buffer ">= 2.1.2 < 3"
@@ -1755,7 +1556,7 @@ imurmurhash@^0.1.4:
1755
 
1756
  inherits@~2.0.4:
1757
  version "2.0.4"
1758
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
1759
  integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
1760
 
1761
  inline-style-parser@0.2.7:
@@ -1765,7 +1566,7 @@ inline-style-parser@0.2.7:
1765
 
1766
  ipaddr.js@1.9.1:
1767
  version "1.9.1"
1768
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
1769
  integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
1770
 
1771
  is-alphabetical@^2.0.0:
@@ -1803,6 +1604,11 @@ is-extglob@^2.1.1:
1803
  resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
1804
  integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
1805
 
 
 
 
 
 
1806
  is-glob@^4.0.0, is-glob@^4.0.3:
1807
  version "4.0.3"
1808
  resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
@@ -1934,7 +1740,7 @@ markdown-table@^3.0.0:
1934
 
1935
  math-intrinsics@^1.1.0:
1936
  version "1.1.0"
1937
- resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9"
1938
  integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==
1939
 
1940
  mdast-util-find-and-replace@^3.0.0:
@@ -2119,17 +1925,17 @@ mdast-util-to-string@^4.0.0:
2119
 
2120
  media-typer@0.3.0:
2121
  version "0.3.0"
2122
- resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
2123
  integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
2124
 
2125
  merge-descriptors@1.0.3:
2126
  version "1.0.3"
2127
- resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5"
2128
  integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==
2129
 
2130
  methods@~1.1.2:
2131
  version "1.1.2"
2132
- resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
2133
  integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
2134
 
2135
  micromark-core-commonmark@^2.0.0:
@@ -2407,19 +2213,19 @@ micromark@^4.0.0:
2407
 
2408
  mime-db@1.52.0:
2409
  version "1.52.0"
2410
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
2411
  integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
2412
 
2413
  mime-types@~2.1.24, mime-types@~2.1.34:
2414
  version "2.1.35"
2415
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
2416
  integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
2417
  dependencies:
2418
  mime-db "1.52.0"
2419
 
2420
  mime@1.6.0:
2421
  version "1.6.0"
2422
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
2423
  integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
2424
 
2425
  minimatch@^3.1.2:
@@ -2441,16 +2247,16 @@ motion-utils@^12.23.6:
2441
  resolved "https://registry.npmjs.org/motion-utils/-/motion-utils-12.23.6.tgz"
2442
  integrity sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==
2443
 
 
 
 
 
 
2444
  ms@2.0.0:
2445
  version "2.0.0"
2446
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
2447
  integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
2448
 
2449
- ms@2.1.3, ms@^2.1.3:
2450
- version "2.1.3"
2451
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
2452
- integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
2453
-
2454
  nanoid@^3.3.11:
2455
  version "3.3.11"
2456
  resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz"
@@ -2463,7 +2269,7 @@ natural-compare@^1.4.0:
2463
 
2464
  negotiator@0.6.3:
2465
  version "0.6.3"
2466
- resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
2467
  integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
2468
 
2469
  node-releases@^2.0.27:
@@ -2478,12 +2284,12 @@ object-assign@^4.1.1:
2478
 
2479
  object-inspect@^1.13.3:
2480
  version "1.13.4"
2481
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213"
2482
  integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==
2483
 
2484
  on-finished@~2.4.1:
2485
  version "2.4.1"
2486
- resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
2487
  integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
2488
  dependencies:
2489
  ee-first "1.1.1"
@@ -2546,7 +2352,7 @@ parse-json@^5.0.0:
2546
 
2547
  parseurl@~1.3.3:
2548
  version "1.3.3"
2549
- resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
2550
  integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
2551
 
2552
  path-exists@^4.0.0:
@@ -2566,7 +2372,7 @@ path-parse@^1.0.7:
2566
 
2567
  path-to-regexp@~0.1.12:
2568
  version "0.1.12"
2569
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7"
2570
  integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==
2571
 
2572
  path-type@^4.0.0:
@@ -2579,7 +2385,7 @@ picocolors@^1.1.1:
2579
  resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz"
2580
  integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
2581
 
2582
- picomatch@^4.0.3:
2583
  version "4.0.3"
2584
  resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz"
2585
  integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==
@@ -2614,7 +2420,7 @@ property-information@^7.0.0:
2614
 
2615
  proxy-addr@~2.0.7:
2616
  version "2.0.7"
2617
- resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
2618
  integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
2619
  dependencies:
2620
  forwarded "0.2.0"
@@ -2627,19 +2433,19 @@ punycode@^2.1.0:
2627
 
2628
  qs@~6.14.0:
2629
  version "6.14.1"
2630
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.1.tgz#a41d85b9d3902f31d27861790506294881871159"
2631
  integrity sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==
2632
  dependencies:
2633
  side-channel "^1.1.0"
2634
 
2635
  range-parser@~1.2.1:
2636
  version "1.2.1"
2637
- resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
2638
  integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
2639
 
2640
  raw-body@~2.5.3:
2641
  version "2.5.3"
2642
- resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.3.tgz#11c6650ee770a7de1b494f197927de0c923822e2"
2643
  integrity sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==
2644
  dependencies:
2645
  bytes "~3.1.2"
@@ -2647,7 +2453,7 @@ raw-body@~2.5.3:
2647
  iconv-lite "~0.4.24"
2648
  unpipe "~1.0.0"
2649
 
2650
- react-dom@^19.2.0:
2651
  version "19.2.3"
2652
  resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz"
2653
  integrity sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==
@@ -2711,7 +2517,7 @@ react-transition-group@^4.4.5:
2711
  loose-envify "^1.4.0"
2712
  prop-types "^15.6.2"
2713
 
2714
- react@^19.2.0:
2715
  version "19.2.3"
2716
  resolved "https://registry.npmjs.org/react/-/react-19.2.3.tgz"
2717
  integrity sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==
@@ -2816,12 +2622,12 @@ rollup@^4.43.0:
2816
 
2817
  safe-buffer@5.2.1:
2818
  version "5.2.1"
2819
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
2820
  integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
2821
 
2822
  "safer-buffer@>= 2.1.2 < 3":
2823
  version "2.1.2"
2824
- resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
2825
  integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
2826
 
2827
  scheduler@^0.27.0:
@@ -2836,7 +2642,7 @@ semver@^6.3.1:
2836
 
2837
  send@~0.19.0, send@~0.19.1:
2838
  version "0.19.2"
2839
- resolved "https://registry.yarnpkg.com/send/-/send-0.19.2.tgz#59bc0da1b4ea7ad42736fd642b1c4294e114ff29"
2840
  integrity sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==
2841
  dependencies:
2842
  debug "2.6.9"
@@ -2855,7 +2661,7 @@ send@~0.19.0, send@~0.19.1:
2855
 
2856
  serve-static@~1.16.2:
2857
  version "1.16.3"
2858
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.3.tgz#a97b74d955778583f3862a4f0b841eb4d5d78cf9"
2859
  integrity sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==
2860
  dependencies:
2861
  encodeurl "~2.0.0"
@@ -2868,9 +2674,9 @@ set-cookie-parser@^2.6.0:
2868
  resolved "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz"
2869
  integrity sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==
2870
 
2871
- setprototypeof@1.2.0, setprototypeof@~1.2.0:
2872
  version "1.2.0"
2873
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
2874
  integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
2875
 
2876
  shebang-command@^2.0.0:
@@ -2887,7 +2693,7 @@ shebang-regex@^3.0.0:
2887
 
2888
  side-channel-list@^1.0.0:
2889
  version "1.0.0"
2890
- resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad"
2891
  integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==
2892
  dependencies:
2893
  es-errors "^1.3.0"
@@ -2895,7 +2701,7 @@ side-channel-list@^1.0.0:
2895
 
2896
  side-channel-map@^1.0.1:
2897
  version "1.0.1"
2898
- resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42"
2899
  integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==
2900
  dependencies:
2901
  call-bound "^1.0.2"
@@ -2905,7 +2711,7 @@ side-channel-map@^1.0.1:
2905
 
2906
  side-channel-weakmap@^1.0.2:
2907
  version "1.0.2"
2908
- resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea"
2909
  integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==
2910
  dependencies:
2911
  call-bound "^1.0.2"
@@ -2916,7 +2722,7 @@ side-channel-weakmap@^1.0.2:
2916
 
2917
  side-channel@^1.1.0:
2918
  version "1.1.0"
2919
- resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9"
2920
  integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==
2921
  dependencies:
2922
  es-errors "^1.3.0"
@@ -2942,9 +2748,18 @@ space-separated-tokens@^2.0.0:
2942
 
2943
  statuses@~2.0.1, statuses@~2.0.2:
2944
  version "2.0.2"
2945
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382"
2946
  integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==
2947
 
 
 
 
 
 
 
 
 
 
2948
  stringify-entities@^4.0.0:
2949
  version "4.0.4"
2950
  resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz"
@@ -2953,6 +2768,13 @@ stringify-entities@^4.0.0:
2953
  character-entities-html4 "^2.0.0"
2954
  character-entities-legacy "^3.0.0"
2955
 
 
 
 
 
 
 
 
2956
  strip-json-comments@^3.1.1:
2957
  version "3.1.1"
2958
  resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
@@ -2999,7 +2821,7 @@ tinyglobby@^0.2.15:
2999
 
3000
  toidentifier@~1.0.1:
3001
  version "1.0.1"
3002
- resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
3003
  integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
3004
 
3005
  trim-lines@^3.0.0:
@@ -3026,7 +2848,7 @@ type-check@^0.4.0, type-check@~0.4.0:
3026
 
3027
  type-is@~1.6.18:
3028
  version "1.6.18"
3029
- resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
3030
  integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
3031
  dependencies:
3032
  media-typer "0.3.0"
@@ -3093,7 +2915,7 @@ unist-util-visit@^5.0.0:
3093
 
3094
  unpipe@~1.0.0:
3095
  version "1.0.0"
3096
- resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
3097
  integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
3098
 
3099
  update-browserslist-db@^1.2.0:
@@ -3113,12 +2935,12 @@ uri-js@^4.2.2:
3113
 
3114
  utils-merge@1.0.1:
3115
  version "1.0.1"
3116
- resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
3117
  integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
3118
 
3119
  vary@~1.1.2:
3120
  version "1.1.2"
3121
- resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
3122
  integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
3123
 
3124
  vfile-message@^4.0.0:
@@ -3137,7 +2959,7 @@ vfile@^6.0.0:
3137
  "@types/unist" "^3.0.0"
3138
  vfile-message "^4.0.0"
3139
 
3140
- vite@^7.2.4:
3141
  version "7.2.7"
3142
  resolved "https://registry.npmjs.org/vite/-/vite-7.2.7.tgz"
3143
  integrity sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==
 
16
  resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz"
17
  integrity sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==
18
 
19
+ "@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.24.4", "@babel/core@^7.28.5":
20
  version "7.28.5"
21
  resolved "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz"
22
  integrity sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==
 
198
  resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz"
199
  integrity sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==
200
 
201
+ "@emotion/is-prop-valid@*", "@emotion/is-prop-valid@^1.3.0":
202
  version "1.4.0"
203
  resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.4.0.tgz"
204
  integrity sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==
 
210
  resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz"
211
  integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==
212
 
213
+ "@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.14.0", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0":
214
  version "11.14.0"
215
  resolved "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz"
216
  integrity sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==
 
240
  resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz"
241
  integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==
242
 
243
+ "@emotion/styled@^11.14.1", "@emotion/styled@^11.3.0":
244
  version "11.14.1"
245
  resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.1.tgz"
246
  integrity sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==
 
272
  resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz"
273
  integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==
274
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
275
  "@esbuild/darwin-arm64@0.25.12":
276
  version "0.25.12"
277
  resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz"
278
  integrity sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==
279
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
280
  "@eslint-community/eslint-utils@^4.8.0":
281
  version "4.9.0"
282
  resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz"
 
327
  minimatch "^3.1.2"
328
  strip-json-comments "^3.1.1"
329
 
330
+ "@eslint/js@^9.39.1", "@eslint/js@9.39.1":
331
  version "9.39.1"
332
  resolved "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz"
333
  integrity sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==
 
345
  "@eslint/core" "^0.17.0"
346
  levn "^0.4.1"
347
 
348
+ "@huggingface/hub@^2.8.1":
349
+ version "2.8.1"
350
+ resolved "https://registry.npmjs.org/@huggingface/hub/-/hub-2.8.1.tgz"
351
+ integrity sha512-VAsXdMiIHPteXQJhrwaBEiePTWiJ0zBSymHdnX4J+AijjNN0h3RzGfkKemXcu75gu/TmRLFY9l8+2Tkdmpis0w==
352
+ dependencies:
353
+ "@huggingface/tasks" "^0.19.82"
354
+ optionalDependencies:
355
+ cli-progress "^3.12.0"
356
+
357
+ "@huggingface/tasks@^0.19.82":
358
+ version "0.19.83"
359
+ resolved "https://registry.npmjs.org/@huggingface/tasks/-/tasks-0.19.83.tgz"
360
+ integrity sha512-nBt3S6x+MWUTmfey1drQZRMuEopEbz2aEMUsoddfpCuzIYAMCsJDX7xeNuJnzvbVGis3gXXCRcLHVhFtHaaiyA==
361
+
362
  "@humanfs/core@^0.19.1":
363
  version "0.19.1"
364
  resolved "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz"
 
555
  resolved "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.53.tgz"
556
  integrity sha512-vENRlFU4YbrwVqNDZ7fLvy+JR1CRkyr01jhSiDpE1u6py3OMzQfztQU2jxykW3ALNxO4kSlqIDeYyD0Y9RcQeQ==
557
 
 
 
 
 
 
 
 
 
 
 
558
  "@rollup/rollup-darwin-arm64@4.53.3":
559
  version "4.53.3"
560
  resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.3.tgz"
561
  integrity sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==
562
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
563
  "@types/babel__core@^7.20.5":
564
  version "7.20.5"
565
  resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz"
 
607
  dependencies:
608
  "@types/estree" "*"
609
 
610
+ "@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.6", "@types/estree@1.0.8":
611
  version "1.0.8"
612
  resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz"
613
  integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
 
656
  resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz"
657
  integrity sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==
658
 
659
+ "@types/react@*", "@types/react@^17.0.0 || ^18.0.0 || ^19.0.0", "@types/react@^19.2.0", "@types/react@^19.2.5", "@types/react@>=18":
660
  version "19.2.7"
661
  resolved "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz"
662
  integrity sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==
 
692
 
693
  accepts@~1.3.8:
694
  version "1.3.8"
695
+ resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz"
696
  integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
697
  dependencies:
698
  mime-types "~2.1.34"
 
703
  resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
704
  integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
705
 
706
+ "acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.15.0:
707
  version "8.15.0"
708
  resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz"
709
  integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==
 
718
  json-schema-traverse "^0.4.1"
719
  uri-js "^4.2.2"
720
 
721
+ ansi-regex@^5.0.1:
722
+ version "5.0.1"
723
+ resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
724
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
725
+
726
  ansi-styles@^4.1.0:
727
  version "4.3.0"
728
  resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
 
737
 
738
  array-flatten@1.1.1:
739
  version "1.1.1"
740
+ resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz"
741
  integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
742
 
743
  babel-plugin-macros@^3.1.0:
 
766
 
767
  body-parser@~1.20.3:
768
  version "1.20.4"
769
+ resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz"
770
  integrity sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==
771
  dependencies:
772
  bytes "~3.1.2"
 
790
  balanced-match "^1.0.0"
791
  concat-map "0.0.1"
792
 
793
+ browserslist@^4.24.0, "browserslist@>= 4.21.0":
794
  version "4.28.1"
795
  resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz"
796
  integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==
 
803
 
804
  bytes@~3.1.2:
805
  version "3.1.2"
806
+ resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz"
807
  integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
808
 
809
  call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
810
  version "1.0.2"
811
+ resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz"
812
  integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
813
  dependencies:
814
  es-errors "^1.3.0"
 
816
 
817
  call-bound@^1.0.2:
818
  version "1.0.4"
819
+ resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz"
820
  integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==
821
  dependencies:
822
  call-bind-apply-helpers "^1.0.2"
 
865
  resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz"
866
  integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==
867
 
868
+ cli-progress@^3.12.0:
869
+ version "3.12.0"
870
+ resolved "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz"
871
+ integrity sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==
872
+ dependencies:
873
+ string-width "^4.2.3"
874
+
875
  clsx@^2.1.1:
876
  version "2.1.1"
877
  resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz"
 
901
 
902
  content-disposition@~0.5.4:
903
  version "0.5.4"
904
+ resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz"
905
  integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
906
  dependencies:
907
  safe-buffer "5.2.1"
908
 
909
  content-type@~1.0.4, content-type@~1.0.5:
910
  version "1.0.5"
911
+ resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz"
912
  integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
913
 
914
  convert-source-map@^1.5.0:
 
923
 
924
  cookie-signature@~1.0.6:
925
  version "1.0.7"
926
+ resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz"
927
  integrity sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==
928
 
929
  cookie@^1.0.1:
 
933
 
934
  cookie@~0.7.1:
935
  version "0.7.2"
936
+ resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz"
937
  integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==
938
 
939
  cosmiconfig@^7.0.0:
 
961
  resolved "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz"
962
  integrity sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==
963
 
 
 
 
 
 
 
 
964
  debug@^4.0.0, debug@^4.1.0, debug@^4.3.1, debug@^4.3.2:
965
  version "4.4.3"
966
  resolved "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz"
 
968
  dependencies:
969
  ms "^2.1.3"
970
 
971
+ debug@2.6.9:
972
+ version "2.6.9"
973
+ resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
974
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
975
+ dependencies:
976
+ ms "2.0.0"
977
+
978
  decode-named-character-reference@^1.0.0:
979
  version "1.2.0"
980
  resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz"
 
987
  resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
988
  integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
989
 
990
+ depd@~2.0.0, depd@2.0.0:
991
  version "2.0.0"
992
+ resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz"
993
  integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
994
 
995
  dequal@^2.0.0:
 
997
  resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz"
998
  integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
999
 
1000
+ destroy@~1.2.0, destroy@1.2.0:
1001
  version "1.2.0"
1002
+ resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz"
1003
  integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
1004
 
1005
  devlop@^1.0.0, devlop@^1.1.0:
 
1019
 
1020
  dunder-proto@^1.0.1:
1021
  version "1.0.1"
1022
+ resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz"
1023
  integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==
1024
  dependencies:
1025
  call-bind-apply-helpers "^1.0.1"
 
1028
 
1029
  ee-first@1.1.1:
1030
  version "1.1.1"
1031
+ resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
1032
  integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
1033
 
1034
  electron-to-chromium@^1.5.263:
 
1036
  resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz"
1037
  integrity sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==
1038
 
1039
+ emoji-regex@^8.0.0:
1040
+ version "8.0.0"
1041
+ resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
1042
+ integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
1043
+
1044
  encodeurl@~2.0.0:
1045
  version "2.0.0"
1046
+ resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz"
1047
  integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
1048
 
1049
  error-ex@^1.3.1:
 
1055
 
1056
  es-define-property@^1.0.1:
1057
  version "1.0.1"
1058
+ resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz"
1059
  integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==
1060
 
1061
  es-errors@^1.3.0:
1062
  version "1.3.0"
1063
+ resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz"
1064
  integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
1065
 
1066
  es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
1067
  version "1.1.1"
1068
+ resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz"
1069
  integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==
1070
  dependencies:
1071
  es-errors "^1.3.0"
 
1109
 
1110
  escape-html@~1.0.3:
1111
  version "1.0.3"
1112
+ resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz"
1113
  integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
1114
 
1115
  escape-string-regexp@^4.0.0:
 
1156
  resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz"
1157
  integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==
1158
 
1159
+ "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", eslint@^9.39.1, eslint@>=8.40:
1160
  version "9.39.1"
1161
  resolved "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz"
1162
  integrity sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==
 
1236
 
1237
  etag@~1.8.1:
1238
  version "1.8.1"
1239
+ resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz"
1240
  integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
1241
 
1242
  express@^4.21.2:
1243
  version "4.22.1"
1244
+ resolved "https://registry.npmjs.org/express/-/express-4.22.1.tgz"
1245
  integrity sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==
1246
  dependencies:
1247
  accepts "~1.3.8"
 
1310
 
1311
  finalhandler@~1.3.1:
1312
  version "1.3.2"
1313
+ resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz"
1314
  integrity sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==
1315
  dependencies:
1316
  debug "2.6.9"
 
1349
 
1350
  forwarded@0.2.0:
1351
  version "0.2.0"
1352
+ resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz"
1353
  integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
1354
 
1355
  framer-motion@^12.23.26:
 
1363
 
1364
  fresh@~0.5.2:
1365
  version "0.5.2"
1366
+ resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz"
1367
  integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
1368
 
1369
  fsevents@~2.3.2, fsevents@~2.3.3:
 
1383
 
1384
  get-intrinsic@^1.2.5, get-intrinsic@^1.3.0:
1385
  version "1.3.0"
1386
+ resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz"
1387
  integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==
1388
  dependencies:
1389
  call-bind-apply-helpers "^1.0.2"
 
1399
 
1400
  get-proto@^1.0.1:
1401
  version "1.0.1"
1402
+ resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz"
1403
  integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==
1404
  dependencies:
1405
  dunder-proto "^1.0.1"
 
1424
 
1425
  gopd@^1.2.0:
1426
  version "1.2.0"
1427
+ resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz"
1428
  integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
1429
 
1430
  has-flag@^4.0.0:
 
1434
 
1435
  has-symbols@^1.1.0:
1436
  version "1.1.0"
1437
+ resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz"
1438
  integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
1439
 
1440
  hasown@^2.0.2:
 
1520
 
1521
  http-errors@~2.0.0, http-errors@~2.0.1:
1522
  version "2.0.1"
1523
+ resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz"
1524
  integrity sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==
1525
  dependencies:
1526
  depd "~2.0.0"
 
1531
 
1532
  iconv-lite@~0.4.24:
1533
  version "0.4.24"
1534
+ resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"
1535
  integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
1536
  dependencies:
1537
  safer-buffer ">= 2.1.2 < 3"
 
1556
 
1557
  inherits@~2.0.4:
1558
  version "2.0.4"
1559
+ resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
1560
  integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
1561
 
1562
  inline-style-parser@0.2.7:
 
1566
 
1567
  ipaddr.js@1.9.1:
1568
  version "1.9.1"
1569
+ resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
1570
  integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
1571
 
1572
  is-alphabetical@^2.0.0:
 
1604
  resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
1605
  integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
1606
 
1607
+ is-fullwidth-code-point@^3.0.0:
1608
+ version "3.0.0"
1609
+ resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"
1610
+ integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
1611
+
1612
  is-glob@^4.0.0, is-glob@^4.0.3:
1613
  version "4.0.3"
1614
  resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
 
1740
 
1741
  math-intrinsics@^1.1.0:
1742
  version "1.1.0"
1743
+ resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz"
1744
  integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==
1745
 
1746
  mdast-util-find-and-replace@^3.0.0:
 
1925
 
1926
  media-typer@0.3.0:
1927
  version "0.3.0"
1928
+ resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"
1929
  integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
1930
 
1931
  merge-descriptors@1.0.3:
1932
  version "1.0.3"
1933
+ resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz"
1934
  integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==
1935
 
1936
  methods@~1.1.2:
1937
  version "1.1.2"
1938
+ resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz"
1939
  integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
1940
 
1941
  micromark-core-commonmark@^2.0.0:
 
2213
 
2214
  mime-db@1.52.0:
2215
  version "1.52.0"
2216
+ resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
2217
  integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
2218
 
2219
  mime-types@~2.1.24, mime-types@~2.1.34:
2220
  version "2.1.35"
2221
+ resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
2222
  integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
2223
  dependencies:
2224
  mime-db "1.52.0"
2225
 
2226
  mime@1.6.0:
2227
  version "1.6.0"
2228
+ resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz"
2229
  integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
2230
 
2231
  minimatch@^3.1.2:
 
2247
  resolved "https://registry.npmjs.org/motion-utils/-/motion-utils-12.23.6.tgz"
2248
  integrity sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==
2249
 
2250
+ ms@^2.1.3, ms@2.1.3:
2251
+ version "2.1.3"
2252
+ resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
2253
+ integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
2254
+
2255
  ms@2.0.0:
2256
  version "2.0.0"
2257
+ resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
2258
  integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
2259
 
 
 
 
 
 
2260
  nanoid@^3.3.11:
2261
  version "3.3.11"
2262
  resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz"
 
2269
 
2270
  negotiator@0.6.3:
2271
  version "0.6.3"
2272
+ resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz"
2273
  integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
2274
 
2275
  node-releases@^2.0.27:
 
2284
 
2285
  object-inspect@^1.13.3:
2286
  version "1.13.4"
2287
+ resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz"
2288
  integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==
2289
 
2290
  on-finished@~2.4.1:
2291
  version "2.4.1"
2292
+ resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz"
2293
  integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
2294
  dependencies:
2295
  ee-first "1.1.1"
 
2352
 
2353
  parseurl@~1.3.3:
2354
  version "1.3.3"
2355
+ resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz"
2356
  integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
2357
 
2358
  path-exists@^4.0.0:
 
2372
 
2373
  path-to-regexp@~0.1.12:
2374
  version "0.1.12"
2375
+ resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz"
2376
  integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==
2377
 
2378
  path-type@^4.0.0:
 
2385
  resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz"
2386
  integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
2387
 
2388
+ "picomatch@^3 || ^4", picomatch@^4.0.3:
2389
  version "4.0.3"
2390
  resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz"
2391
  integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==
 
2420
 
2421
  proxy-addr@~2.0.7:
2422
  version "2.0.7"
2423
+ resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz"
2424
  integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
2425
  dependencies:
2426
  forwarded "0.2.0"
 
2433
 
2434
  qs@~6.14.0:
2435
  version "6.14.1"
2436
+ resolved "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz"
2437
  integrity sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==
2438
  dependencies:
2439
  side-channel "^1.1.0"
2440
 
2441
  range-parser@~1.2.1:
2442
  version "1.2.1"
2443
+ resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"
2444
  integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
2445
 
2446
  raw-body@~2.5.3:
2447
  version "2.5.3"
2448
+ resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz"
2449
  integrity sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==
2450
  dependencies:
2451
  bytes "~3.1.2"
 
2453
  iconv-lite "~0.4.24"
2454
  unpipe "~1.0.0"
2455
 
2456
+ "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^18.0.0 || ^19.0.0", react-dom@^19.2.0, react-dom@>=16.6.0, react-dom@>=18:
2457
  version "19.2.3"
2458
  resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz"
2459
  integrity sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==
 
2517
  loose-envify "^1.4.0"
2518
  prop-types "^15.6.2"
2519
 
2520
+ "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^17.0.0 || ^18.0.0 || ^19.0.0", "react@^18.0.0 || ^19.0.0", react@^19.2.0, react@^19.2.3, react@>=16.6.0, react@>=16.8.0, react@>=18:
2521
  version "19.2.3"
2522
  resolved "https://registry.npmjs.org/react/-/react-19.2.3.tgz"
2523
  integrity sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==
 
2622
 
2623
  safe-buffer@5.2.1:
2624
  version "5.2.1"
2625
+ resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
2626
  integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
2627
 
2628
  "safer-buffer@>= 2.1.2 < 3":
2629
  version "2.1.2"
2630
+ resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
2631
  integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
2632
 
2633
  scheduler@^0.27.0:
 
2642
 
2643
  send@~0.19.0, send@~0.19.1:
2644
  version "0.19.2"
2645
+ resolved "https://registry.npmjs.org/send/-/send-0.19.2.tgz"
2646
  integrity sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==
2647
  dependencies:
2648
  debug "2.6.9"
 
2661
 
2662
  serve-static@~1.16.2:
2663
  version "1.16.3"
2664
+ resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz"
2665
  integrity sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==
2666
  dependencies:
2667
  encodeurl "~2.0.0"
 
2674
  resolved "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz"
2675
  integrity sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==
2676
 
2677
+ setprototypeof@~1.2.0, setprototypeof@1.2.0:
2678
  version "1.2.0"
2679
+ resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz"
2680
  integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
2681
 
2682
  shebang-command@^2.0.0:
 
2693
 
2694
  side-channel-list@^1.0.0:
2695
  version "1.0.0"
2696
+ resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz"
2697
  integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==
2698
  dependencies:
2699
  es-errors "^1.3.0"
 
2701
 
2702
  side-channel-map@^1.0.1:
2703
  version "1.0.1"
2704
+ resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz"
2705
  integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==
2706
  dependencies:
2707
  call-bound "^1.0.2"
 
2711
 
2712
  side-channel-weakmap@^1.0.2:
2713
  version "1.0.2"
2714
+ resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz"
2715
  integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==
2716
  dependencies:
2717
  call-bound "^1.0.2"
 
2722
 
2723
  side-channel@^1.1.0:
2724
  version "1.1.0"
2725
+ resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz"
2726
  integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==
2727
  dependencies:
2728
  es-errors "^1.3.0"
 
2748
 
2749
  statuses@~2.0.1, statuses@~2.0.2:
2750
  version "2.0.2"
2751
+ resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz"
2752
  integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==
2753
 
2754
+ string-width@^4.2.3:
2755
+ version "4.2.3"
2756
+ resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
2757
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
2758
+ dependencies:
2759
+ emoji-regex "^8.0.0"
2760
+ is-fullwidth-code-point "^3.0.0"
2761
+ strip-ansi "^6.0.1"
2762
+
2763
  stringify-entities@^4.0.0:
2764
  version "4.0.4"
2765
  resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz"
 
2768
  character-entities-html4 "^2.0.0"
2769
  character-entities-legacy "^3.0.0"
2770
 
2771
+ strip-ansi@^6.0.1:
2772
+ version "6.0.1"
2773
+ resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
2774
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
2775
+ dependencies:
2776
+ ansi-regex "^5.0.1"
2777
+
2778
  strip-json-comments@^3.1.1:
2779
  version "3.1.1"
2780
  resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
 
2821
 
2822
  toidentifier@~1.0.1:
2823
  version "1.0.1"
2824
+ resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz"
2825
  integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
2826
 
2827
  trim-lines@^3.0.0:
 
2848
 
2849
  type-is@~1.6.18:
2850
  version "1.6.18"
2851
+ resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz"
2852
  integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
2853
  dependencies:
2854
  media-typer "0.3.0"
 
2915
 
2916
  unpipe@~1.0.0:
2917
  version "1.0.0"
2918
+ resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
2919
  integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
2920
 
2921
  update-browserslist-db@^1.2.0:
 
2935
 
2936
  utils-merge@1.0.1:
2937
  version "1.0.1"
2938
+ resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz"
2939
  integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
2940
 
2941
  vary@~1.1.2:
2942
  version "1.1.2"
2943
+ resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz"
2944
  integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
2945
 
2946
  vfile-message@^4.0.0:
 
2959
  "@types/unist" "^3.0.0"
2960
  vfile-message "^4.0.0"
2961
 
2962
+ "vite@^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", vite@^7.2.4:
2963
  version "7.2.7"
2964
  resolved "https://registry.npmjs.org/vite/-/vite-7.2.7.tgz"
2965
  integrity sha512-ITcnkFeR3+fI8P1wMgItjGrR10170d8auB4EpMLPqmx6uxElH3a/hHGQabSHKdqd4FXWO1nFIp9rRn7JQ34ACQ==