From 44706167751d5b37271cbfced5aec32c991e56a8 Mon Sep 17 00:00:00 2001 From: Maurus Decimus <11444311+mdecimus@users.noreply.github.com> Date: Mon, 20 Apr 2026 15:02:57 +0200 Subject: [PATCH] Initial commit --- .env.development | 8 + .github/workflows/build.yml | 40 + .gitignore | 46 +- .prettierrc | 5 + README.md | 151 +- build.sh | 9 + eslint.config.js | 31 + img/logo-red.svg | 25 + img/screencast-setup.gif | Bin 0 -> 265840 bytes index.html | 17 + package-lock.json | 7160 +++++++++++++++++ package.json | 69 + public/favicon.svg | Bin 0 -> 15406 bytes public/icons.svg | 24 + src/App.tsx | 18 + src/components/bootstrap/BootstrapWizard.tsx | 532 ++ src/components/common/EnterpriseUpsell.tsx | 47 + src/components/common/GlobalSearch.tsx | 240 + src/components/common/Logo.tsx | 81 + src/components/common/ObjectPicker.tsx | 135 + .../expression/ExpressionEditor.tsx | 175 + src/components/forms/DynamicForm.tsx | 1126 +++ src/components/forms/FieldWidget.tsx | 2331 ++++++ src/components/forms/FormEditionContext.ts | 18 + src/components/forms/OtpAuthField.tsx | 233 + src/components/layout/ErrorBoundary.tsx | 62 + src/components/layout/MainContent.tsx | 98 + src/components/layout/ProtectedRoute.tsx | 19 + src/components/layout/Sidebar.tsx | 354 + src/components/layout/TopBar.tsx | 155 + src/components/lists/DynamicList.tsx | 1356 ++++ src/components/ui/alert-dialog.tsx | 110 + src/components/ui/badge.tsx | 35 + src/components/ui/button.tsx | 52 + src/components/ui/card.tsx | 49 + src/components/ui/chart.tsx | 60 + src/components/ui/checkbox.tsx | 32 + src/components/ui/collapsible.tsx | 15 + src/components/ui/combobox.tsx | 142 + src/components/ui/command.tsx | 131 + src/components/ui/dialog.tsx | 101 + src/components/ui/dropdown-menu.tsx | 186 + src/components/ui/input.tsx | 28 + src/components/ui/label.tsx | 23 + src/components/ui/popover.tsx | 37 + src/components/ui/scroll-area.tsx | 44 + src/components/ui/select.tsx | 148 + src/components/ui/separator.tsx | 26 + src/components/ui/switch.tsx | 33 + src/components/ui/tabs.tsx | 59 + src/components/ui/textarea.tsx | 27 + src/components/ui/toast.tsx | 94 + src/components/ui/toaster.tsx | 30 + src/components/ui/tooltip.tsx | 36 + src/components/views/DynamicView.tsx | 543 ++ src/components/views/DynamicViewPage.tsx | 111 + src/features/actions/ActionPage.tsx | 483 ++ .../dashboard/components/DashboardChart.tsx | 252 + .../dashboard/components/DashboardView.tsx | 157 + .../dashboard/components/PeriodSelector.tsx | 119 + .../dashboard/components/StatCard.tsx | 122 + src/features/dashboard/helpers.ts | 246 + .../dashboard/stores/dashboardStore.ts | 30 + .../dashboard/stores/historyMetricsStore.ts | 109 + .../dashboard/stores/liveMetricsStore.ts | 169 + src/features/dashboard/types/metrics.ts | 48 + src/features/dashboard/types/schema.ts | 44 + .../tracing/components/LiveTracingPage.tsx | 351 + .../tracing/components/TraceDetailView.tsx | 208 + .../tracing/components/TraceTimeline.tsx | 348 + src/features/tracing/types.ts | 33 + .../troubleshoot/DeliveryTracePage.tsx | 678 ++ src/features/troubleshoot/types.ts | 73 + src/hooks/use-toast.ts | 187 + src/hooks/usePermissions.ts | 67 + src/i18n/en.json | 364 + src/i18n/index.ts | 27 + src/index.css | 141 + src/lib/basePath.ts | 15 + src/lib/debug.ts | 108 + src/lib/durationFormat.test.ts | 229 + src/lib/durationFormat.ts | 96 + src/lib/jmapErrors.ts | 48 + src/lib/jmapPatch.test.ts | 513 ++ src/lib/jmapPatch.ts | 91 + src/lib/jmapUtils.ts | 15 + src/lib/layout.ts | 195 + src/lib/objectOptions.ts | 161 + src/lib/schemaResolver.test.ts | 867 ++ src/lib/schemaResolver.ts | 268 + src/lib/utils.ts | 12 + src/main.tsx | 74 + src/pages/AdminPanel.tsx | 260 + src/pages/LoginPage.tsx | 89 + src/pages/NotFound.tsx | 24 + src/pages/OAuthCallback.tsx | 99 + src/services/api.ts | 129 + src/services/auth/oauth.test.ts | 104 + src/services/auth/oauth.ts | 182 + src/services/jmap/client.ts | 239 + src/stores/accountStore.test.ts | 109 + src/stores/accountStore.ts | 37 + src/stores/authStore.test.ts | 180 + src/stores/authStore.ts | 129 + src/stores/cacheStore.test.ts | 94 + src/stores/cacheStore.ts | 78 + src/stores/schemaStore.ts | 176 + src/stores/uiStore.ts | 77 + src/types/jmap.ts | 65 + src/types/schema.ts | 393 + src/vite-env.d.ts | 20 + tsconfig.app.json | 29 + tsconfig.json | 7 + tsconfig.node.json | 24 + vite.config.ts | 19 + 115 files changed, 26207 insertions(+), 21 deletions(-) create mode 100644 .env.development create mode 100644 .github/workflows/build.yml create mode 100644 .prettierrc create mode 100755 build.sh create mode 100644 eslint.config.js create mode 100644 img/logo-red.svg create mode 100644 img/screencast-setup.gif create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.svg create mode 100644 public/icons.svg create mode 100644 src/App.tsx create mode 100644 src/components/bootstrap/BootstrapWizard.tsx create mode 100644 src/components/common/EnterpriseUpsell.tsx create mode 100644 src/components/common/GlobalSearch.tsx create mode 100644 src/components/common/Logo.tsx create mode 100644 src/components/common/ObjectPicker.tsx create mode 100644 src/components/expression/ExpressionEditor.tsx create mode 100644 src/components/forms/DynamicForm.tsx create mode 100644 src/components/forms/FieldWidget.tsx create mode 100644 src/components/forms/FormEditionContext.ts create mode 100644 src/components/forms/OtpAuthField.tsx create mode 100644 src/components/layout/ErrorBoundary.tsx create mode 100644 src/components/layout/MainContent.tsx create mode 100644 src/components/layout/ProtectedRoute.tsx create mode 100644 src/components/layout/Sidebar.tsx create mode 100644 src/components/layout/TopBar.tsx create mode 100644 src/components/lists/DynamicList.tsx create mode 100644 src/components/ui/alert-dialog.tsx create mode 100644 src/components/ui/badge.tsx create mode 100644 src/components/ui/button.tsx create mode 100644 src/components/ui/card.tsx create mode 100644 src/components/ui/chart.tsx create mode 100644 src/components/ui/checkbox.tsx create mode 100644 src/components/ui/collapsible.tsx create mode 100644 src/components/ui/combobox.tsx create mode 100644 src/components/ui/command.tsx create mode 100644 src/components/ui/dialog.tsx create mode 100644 src/components/ui/dropdown-menu.tsx create mode 100644 src/components/ui/input.tsx create mode 100644 src/components/ui/label.tsx create mode 100644 src/components/ui/popover.tsx create mode 100644 src/components/ui/scroll-area.tsx create mode 100644 src/components/ui/select.tsx create mode 100644 src/components/ui/separator.tsx create mode 100644 src/components/ui/switch.tsx create mode 100644 src/components/ui/tabs.tsx create mode 100644 src/components/ui/textarea.tsx create mode 100644 src/components/ui/toast.tsx create mode 100644 src/components/ui/toaster.tsx create mode 100644 src/components/ui/tooltip.tsx create mode 100644 src/components/views/DynamicView.tsx create mode 100644 src/components/views/DynamicViewPage.tsx create mode 100644 src/features/actions/ActionPage.tsx create mode 100644 src/features/dashboard/components/DashboardChart.tsx create mode 100644 src/features/dashboard/components/DashboardView.tsx create mode 100644 src/features/dashboard/components/PeriodSelector.tsx create mode 100644 src/features/dashboard/components/StatCard.tsx create mode 100644 src/features/dashboard/helpers.ts create mode 100644 src/features/dashboard/stores/dashboardStore.ts create mode 100644 src/features/dashboard/stores/historyMetricsStore.ts create mode 100644 src/features/dashboard/stores/liveMetricsStore.ts create mode 100644 src/features/dashboard/types/metrics.ts create mode 100644 src/features/dashboard/types/schema.ts create mode 100644 src/features/tracing/components/LiveTracingPage.tsx create mode 100644 src/features/tracing/components/TraceDetailView.tsx create mode 100644 src/features/tracing/components/TraceTimeline.tsx create mode 100644 src/features/tracing/types.ts create mode 100644 src/features/troubleshoot/DeliveryTracePage.tsx create mode 100644 src/features/troubleshoot/types.ts create mode 100644 src/hooks/use-toast.ts create mode 100644 src/hooks/usePermissions.ts create mode 100644 src/i18n/en.json create mode 100644 src/i18n/index.ts create mode 100644 src/index.css create mode 100644 src/lib/basePath.ts create mode 100644 src/lib/debug.ts create mode 100644 src/lib/durationFormat.test.ts create mode 100644 src/lib/durationFormat.ts create mode 100644 src/lib/jmapErrors.ts create mode 100644 src/lib/jmapPatch.test.ts create mode 100644 src/lib/jmapPatch.ts create mode 100644 src/lib/jmapUtils.ts create mode 100644 src/lib/layout.ts create mode 100644 src/lib/objectOptions.ts create mode 100644 src/lib/schemaResolver.test.ts create mode 100644 src/lib/schemaResolver.ts create mode 100644 src/lib/utils.ts create mode 100644 src/main.tsx create mode 100644 src/pages/AdminPanel.tsx create mode 100644 src/pages/LoginPage.tsx create mode 100644 src/pages/NotFound.tsx create mode 100644 src/pages/OAuthCallback.tsx create mode 100644 src/services/api.ts create mode 100644 src/services/auth/oauth.test.ts create mode 100644 src/services/auth/oauth.ts create mode 100644 src/services/jmap/client.ts create mode 100644 src/stores/accountStore.test.ts create mode 100644 src/stores/accountStore.ts create mode 100644 src/stores/authStore.test.ts create mode 100644 src/stores/authStore.ts create mode 100644 src/stores/cacheStore.test.ts create mode 100644 src/stores/cacheStore.ts create mode 100644 src/stores/schemaStore.ts create mode 100644 src/stores/uiStore.ts create mode 100644 src/types/jmap.ts create mode 100644 src/types/schema.ts create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..dcf8960 --- /dev/null +++ b/.env.development @@ -0,0 +1,8 @@ +VITE_API_BASE_URL=http://localhost:8080 +VITE_OAUTH_CLIENT_ID=stalwart-webui +#VITE_ACCESS_TOKEN=OPEN_SESAME +VITE_OAUTH_SCOPES= + +# Dev-only debug logging (any non-empty value enables; only active when DEV=true) +VITE_DEBUG_JMAP=true +VITE_DEBUG_FORMS=true diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..5434166 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,40 @@ +name: Build and Release + +on: + push: + tags: + - 'v*' + +permissions: + contents: write + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v6 + + - uses: actions/setup-node@v6 + with: + node-version: 22 + cache: npm + + - run: npm ci + + - run: npm run typecheck + + - run: npx eslint src/ + + - run: npx vitest run + + - run: npm run build + + - name: Create webui.zip + working-directory: dist + run: zip -r ../webui.zip . + + - name: Upload release asset + uses: softprops/action-gh-release@v3 + with: + files: webui.zip diff --git a/.gitignore b/.gitignore index ad67955..4d704be 100644 --- a/.gitignore +++ b/.gitignore @@ -1,21 +1,29 @@ -# Generated by Cargo -# will have compiled files and executables -debug -target +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* -# These are backup files generated by rustfmt -**/*.rs.bk +node_modules +dist +dist-ssr +*.local -# MSVC Windows builds of rustc generate these, which store debugging information -*.pdb - -# Generated by cargo mutants -# Contains mutation testing data -**/mutants.out*/ - -# RustRover -# JetBrains specific template is maintained in a separate JetBrains.gitignore that can -# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore -# and can be added to the global gitignore or merged into this file. For a more nuclear -# option (not recommended) you can uncomment the following to ignore the entire idea folder. -#.idea/ +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +.ignore +scripts/ +*.md +!README.md +/SPEC-* diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..9db28a2 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,5 @@ +{ + "singleQuote": true, + "trailingComma": "all", + "printWidth": 120 +} diff --git a/README.md b/README.md index 449b42b..2d0adbb 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,149 @@ -# webui -Stalwart WebUI +

+ + + +

+ +

+ Web-based User Interface for Stalwart 🛡️ +

+ +
+ +

+ continuous integration +   + License: AGPL v3 +   + Documentation +

+

+ Mastodon +   + Twitter +

+

+ Discord +   + Matrix +

+ +## Features + +**Stalwart WebUI** is schema-driven single-page application for administering [Stalwart](https://stalw.art). After authentication the panel fetches a JSON schema from the server and dynamically generates all forms, lists, navigation, and layouts from that schema. Nothing is hardcoded. + +Key features: + +- **Schema-driven UI**: All forms, lists, and navigation are generated from a JSON schema fetched from `/api/schema` after login. No object types, field names, or layouts are hardcoded. +- **JMAP protocol**: All data operations (queries, creates, updates, deletes, blob uploads) use JMAP (RFC 8620) with method chaining and result references. +- **Permission-aware**: Every button, link, field, and section respects the user's permissions. Elements the user cannot access are hidden. + +## Screenshots + + + +## Get Started + +Stalwart WebUI is included with Stalwart Mail Server, to install Stalwart Mail Server on your server by following the instructions for your platform: + +- [Linux / MacOS](https://stalw.art/docs/install/linux) +- [Windows](https://stalw.art/docs/install/windows) +- [Docker](https://stalw.art/docs/install/docker) + +All documentation is available at [stalw.art/docs/get-started](https://stalw.art/docs/get-started). + +## Getting started + +Prerequisites: + +- Node.js 18 or later +- A running Stalwart instance (for JMAP API calls) + +Install dependencies: + +``` +npm install +``` + +### Environment variables + +Configuration is done through Vite environment variables. Copy or edit `.env.development` in the project root: + +``` +VITE_API_BASE_URL=http://localhost:443 +VITE_OAUTH_CLIENT_ID=stalwart-webui +VITE_ACCESS_TOKEN= +VITE_OAUTH_SCOPES= +``` + +| Variable | Description | +|---|---| +| `VITE_API_BASE_URL` | URL of the Stalwart server. Used for all API requests during development. In production builds (when empty or unset) requests are relative to the current origin. | +| `VITE_OAUTH_CLIENT_ID` | OAuth 2.0 client ID. Defaults to `stalwart-webui`. | +| `VITE_ACCESS_TOKEN` | When set, skips the OAuth flow entirely and uses this token for all requests. Useful for local development and testing. | +| `VITE_OAUTH_SCOPES` | Optional OAuth scopes. Omitted from the authorization request when empty. | + +### Bypassing OAuth for development + +Set `VITE_ACCESS_TOKEN` to a valid bearer token to skip the login page and go straight to the admin panel. You can obtain a token from the Stalwart server's token endpoint or use an API key: + +``` +VITE_ACCESS_TOKEN=your-bearer-token-here +``` + +### Running the dev server + +``` +npm run dev +``` + +This starts Vite's development server with hot module replacement, typically at `http://localhost:5173`. + +## Testing + +Run the unit tests (Vitest): + +``` +npm test +``` + +Run tests in watch mode: + +``` +npm run test:watch +``` + +## Building for production + +``` +npm run build +``` + +This runs the TypeScript compiler followed by Vite's production build. Output +goes to the `dist/` directory. + +To preview the production build locally: + +``` +npm run preview +``` + +## Support + +If you are having problems running Stalwart Mail Server, you found a bug or just have a question, +do not hesitate to reach us on [Github Discussions](https://github.com/stalwartlabs/mail-server/discussions), +[Reddit](https://www.reddit.com/r/stalwartlabs), [Discord](https://discord.gg/aVQr3jF8jd) or [Matrix](https://matrix.to/#/#stalwart:matrix.org). +Additionally you may purchase a subscription to obtain priority support from Stalwart Labs LLC + +## License + +This project is dual-licensed under the **GNU Affero General Public License v3.0** (AGPL-3.0; as published by the Free Software Foundation) and the **Stalwart Enterprise License v1 (SELv1)**: + +- The [GNU Affero General Public License v3.0](./LICENSES/AGPL-3.0-only.txt) is a free software license that ensures your freedom to use, modify, and distribute the software, with the condition that any modified versions of the software must also be distributed under the same license. +- The [Stalwart Enterprise License v1 (SELv1)](./LICENSES/LicenseRef-SEL.txt) is a proprietary license designed for commercial use. It offers additional features and greater flexibility for businesses that do not wish to comply with the AGPL-3.0 license requirements. + +Each file in this project contains a license notice at the top, indicating the applicable license(s). The license notice follows the [REUSE guidelines](https://reuse.software/) to ensure clarity and consistency. The full text of each license is available in the [LICENSES](./LICENSES/) directory. + +## Copyright + +Copyright (C) 2024, Stalwart Labs LLC diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..2febeec --- /dev/null +++ b/build.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -euo pipefail + +npm ci +npm run build + +mkdir -p .ignore +rm -f .ignore/webui.zip +cd dist && zip -r ../.ignore/webui.zip . diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..aafe486 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,31 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' +import prettierConfig from 'eslint-config-prettier' +import { defineConfig, globalIgnores } from 'eslint/config' + +export default defineConfig([ + globalIgnores(['dist']), + { + files: ['**/*.{ts,tsx}'], + extends: [ + js.configs.recommended, + tseslint.configs.recommended, + reactHooks.configs.flat.recommended, + reactRefresh.configs.vite, + prettierConfig, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + }, + { + files: ['src/components/ui/**/*.{ts,tsx}'], + rules: { + 'react-refresh/only-export-components': 'off', + }, + }, +]) diff --git a/img/logo-red.svg b/img/logo-red.svg new file mode 100644 index 0000000..eb8888a --- /dev/null +++ b/img/logo-red.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/img/screencast-setup.gif b/img/screencast-setup.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d79f0170fdad8f10b725dc8c322b0fe9ed867dd GIT binary patch literal 265840 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%0AxDwLPF89&LPRH|z%dg$% zI=K>QM+Ks35D6w{fF1ClgD5=AjtSKK;M`*-sxuHj?_8e#fpEl;d?1hz{6z$ckE;0uAY0!OG;upE*~anWxWy%p^vn|37#rDNddIuPJg#=97Z^&8TdO@B8|Pv@-3XNLvk{57Or zsm-Zob3^>8GzwL;CpS+aH`yweV_9}c%B`a1%8~P0 z&GRaWc`7q`7S(yz7AA0Dfoh*7rsYc6#D)wB6~gYRk%1Jws_?n@_bV<1zvLLr+2JsNl`)Ox?Ev}RbiuW zN%|feYEMb{MB3S(cA0xhIldCYa7o>ANyA8KS@7W+PyNaXJ6f<^y;0fOTV>~?$~p_m zs+Y@J{sH2K^d|cbF1tIP<$f>9srluDx5}&F6$9_B$7YO%G8{(U+fI-x+`m>dyOgHK zmI@bx(-SGlw0)H{@YRgjGp=j8ouF2l-$IYx;oy=Eisxn`z>EpPb?$PZFzUC6pde_v zs#>X?1mjv%|MOF7A)_#vZf^i0NqEp{MZld&`ZB>iCT9AxscLno>f55AmRR+0e&t_1 zZv1sFO%iaQ1m|)=TH(EHpVRW#%ABx77XuH*!(*7B6<)%N8cxD`A0%=I;h;!7e0~`5 zpGfN(IjLIEPRkI-ML$)Y0TDBx;_PT};RG0iRLdzUVWZKN$FOx6+QXj?w3%wvYCm=c z4>2Y>{1t5KfYVNw0iwxF`0WD? z$%FIMq7aBMb*v>Ojy=BYj0hRmfD3=b<0(0gZ2Db0PUONopHydU_X#bvz zo_)|-&u*<1zgb2?z=;8HDvCsb31La}6o8B5Ia`V}Cq_iswUH^%=;qMR-vLfzPoLnS z&V&w07{k5j36U*BdAnFwI;L0<77cAbia~1AJVT$h&Y;DdKeS5N#Y(B&l*UT2XFx*; zsY9Ri0vlR}ZPPG^-p4U^WYWf&_z` z!yW8Z)j-9J=b)xKTIxeFodU?y5uQxAG~+b86x8QNierhq>me2EAg4PPNdS2XH^Omu z&eCCUVuL;vxOT`Rg9ZQD;jhV1RKB6pnRJKzLDr9v5>8hoGe8GC9CQQKlE9F5gcS=O z{gC_WjmmaLB{U5(<97WKktBfOM*-f_R6r^UvEkXnphMYmkiEo)^VCqb^S*EnNltxo z3K|3F0?y(4`XavGm0TAhVZe~hCNUvi`-spA_Jx2TGZIboJoP|iZQu7k9slzLVc~KiGxtr*49?n-{2tBH*Vax-c0|;Pq%io(r>qLvc+4s+Hd!8`02jBzFR#* zz5Rn6etKYVba;69A3QxV`EYWQ15ZEv2TwnL{`|#@R~&eHc5ZHd{`Eh2`ahjF4m`c_ zA5!@rJpGL$=KVjz)0{W<|K`DAti%3S#yTS)E7&tQJV}e|vvGATm>u2&T+v*FF#;+Beh5(06uOdp6M@ z0r?SYe#bDinsjYzrs&=iC+|+{C?R=Nk{D~TehPA37t-S(@({`}2q;XWxCzxzibR+* z3Pm3TC{BllGo|gj!iF=FC-Ld5MQEaW*lw>%ECvcmlniTb*WLsYxKOAejGZNIFj){~ zf*Jw_t&vdsX~2kyg~Jh;0}fc=2Re~kN$?!OUv$qiOS?`$eEd4+xOpf5)y%-E11Z5k zi^@O7`Ypq;TKa3vpaGA>baDypJsNWNf+Lna1o9-vCUL0*MkN7~TD*;&Jw#qqfW8OH z!~Z#PHicjR3G(v!S*o)PkO;-gX~>rga0loyu%MOR+XR$SBhho1E7F`hX`TW|a&-@< z!kM1_7RV$ire*YWdpjI5QnzWvuZ0Dw$z|#04536TOwt~B33lWvYJ^Tx`zBKJ0uANK zo8wjjJ_T`s4QycqRJ>J$hp?wAq-4NP@es4D0>i9EXoVv+0O%$RMrhkR0_69 zqwJnCIyd*O*ev(|DuVmEO8c2y)O(evYz zv1L&A--~L2Y%`8H_e2u-e&WirUmqVG-uFkdy~^y8YHPXq*mq7{@1Hn#-{0Ns<$vbf zwFXXKZ{yDAzrWf4%(-8u&i*s!wjJCP=yCavYA}lS&zuY8^!5J#qaR_`?xFu-&i!w7 zz5n~@XETG4RU`aQock~NnXD1LGd`;IFZtoA6~AvYrt>fPaj2D;8XwdDm;7YaO07<3 zzWew&J9e^G=EwMbvwz7CPaXD;hsoX=$c1wb3R)*m-<1+|&ZUlwZbhc29y+v@cm9?F z@2Rv2r;fzkeBG~A%7-&DU(Ha-bq@6^gr63Vo3;vFJFC_GY#*9WZe6(3qNow2YU;bL zQ#cUji@W@O!cT5rL|~(sb;0}e##6G~KG;BUf4^Jiv;=M~2dQ|EjJ>uVj1#PRK)v2` zG^IYk6;4NR-{#V=Jhxv^6vq%Bqavnwu2gt>i-Vw_()pXzYj0VDC_y>Y&N)AX!WvQ% z9f?U49pd!lMyfI~DuN^$c!Z5))b1|t0^M3P1*;dcNaf_Oei9!7`@Pjkj#z1D%u$f|j<6Kmuhqz7}#>szx$ogAq@{lYJ&jjYe=F8fMmNQ zG&$X_9a5BwnBi3L#AUAqQ%XT^cEW0&4F--GI@ezSpyuB@sj#$m?GdV!dr-Q&y0`=YW1KBNrQu`V=(oQsmIs2RCQ0PpzAp<+XmA*# zWAEJzEeUF;b^uE*3VY7m%G?eRTR;rbt9h0*toG1%iIeyAyr#qAzJIRc{iy5Q7c+IU zYfq<-@tM$zS#OHicS84k^2#Zn?=UgYeAwR`aKkw7lW(=k+mE&`uW->{l@#SdyZho| zbYin#)ZJS(oRBihc?3J{{|)0byurJ*fXV3|QFhwQ^x9cW+SogMR(vS?;?5G5zi0fg z(^g*j&a#RDdC2|oR#D&1J6ulB^TbNX5%`De}M zNbj@a$6v1-|9MZy>3z}Q^sU+J&-(vV*CThzkKK3r-ckN%Bj`xq?86^6GBS}%#9~?b znCb7`eWq_TTk2jXH2#pBJ@?sU=OWKjAZC~G){BK3>01bHj1}&9}!-u+K3C(|B(sZiGC?E}Fcr5f%%s-|*dv{0|ocmZebORrB3rp(R_Z1#tZq>CL* zXbfXO(`{O1FYspwExCOU_3{`N7rlOdU8d=7PNqoqTV-XQy$`S8%(mtZr9Qh)0lZX9 z7mrNq%_jOG{86aTX89x$kA!U}{Ls&sm3VbJ$n){?WmhVVzM4ACv%aPey)h=T@}vZi2gCq04sBa!HrTe!4RN{EJSD_ELs*?4iOGy zxskqISnNXGQsg-{3f%UCAZT38eu*pf$K_e-Lk%h3C=p!Aev47y*h@!vNzxS^Pz!)n zxPmwqv_BeUQ9_wd0Lrkk!ORd`p4i+wXw4{Cck1}`_qcnDds790W1}E9E9Jb1qgs*3 zz+!q5CgZe961os!LOuTTY3i9qWj{<>Cq7M!7&c3yTu4vO)rJUMPfnsx!iYZ8^**@` z>CjG~XAqWzkGof_3Z+Abh}=ytuiO(CaZyC6O!FU+J#i!=>4iZi!8sGhM4WHTyfJq`6+VumZu&0W~LADBt-3|HPC}BgB zXpx0grzgGWR;eF{Hg$8isF;MYU`COr!>BMM4yDZo@cJmrqAOX1lnrsL0tPrr1sU&B z9=zLkQ88}so;>+rKL`=wLkE5@aH~^6CoBN41K^(2x**u>G>SY<y^~ zqmmq#y}nd965}GEnyv7)gxX{HtsNF`jxr@dl$$%b{oMh%{2N%>`Y!)47q1~>PV zwl!I_PZ-`dDxZ(B>&~!9^t4F6Q?6J5F8#1bL{>a7E`dP`|Q?+GO_0_ZL zJGpARwCYz+)y_=S-=9^01PywC20u;%FVIkBG;}YGXO_nIiA$FuE7MatU^z~%G3%@$PgQGV;)a^awVU<(OLt54n)UBA z85)<>o^B_bmFbxtH?)+f+alE62(Gh0*V(P_4`3m>?(05cAx={39D9xU>2YuXikn4C zQ&b;E*K;SHt;U1=MCg|n2xErkLw3EJ+I5sOXho=}5wE{jK?wqT{Y7AEOxRmIXh0Ge z13CU!@G!>30i)#2;v=x3niOYl6lj3iL!@)aY{VHgL!TwM6y5zG10sD4CWTe6QBzmP zL7h2vylnVm}Gj0qV&%~70CvHM(daf&y zpkn#X|5{T_m=DWajwnV%mtSS>GnnxW@XP}Ul8IZptzit;6W5z(FrXFC;!Q_54#<^G^;1tKR7QkUzcOnhA{t|GpH=;`RSkXA7C44O;EQr!G%j`;} zaNZ_pFa=S*i7*6(i2y_!)Bn=E|K%XAhzW!is`9fSL84GzD%kbmmWu1VO53K)RqHC`HgTAoS2AAV??*A|OQs zv4vg)1Ox#E1w=*AzZ4au$jRROYZrTbSWA|uI4R^E5cXFfl}Yu|XJPK`k8 zNlD zg63eZfWCifr(S1;p^;3@av5c=Bh#}h{B5aqTCMG_vO`FNqguDwnQlkz?wE*jw{MbX zc8y<5bMBVw)4F`5r2L)|2YWX_Wrn%M;%&WgGriY$d(U(A zUN!2Yo#{)A>!TO-r9ACRo9WBg?PEywXB+kBp6S0C*Uv2KFMQfxG}C{3x1S|7P-Zkx zac1Cd+(0U;m-KX?W@eynci6FMBY(x{Ez+X}r&Ei(aJh1r?cW z=noDOFQp|7POWygb`4Ilx}Wk44WoxdY=?%3Lywb(23bSto%=(xaovd|B%&9YO@!MM zAVw(IuoSmHE8l0g!qMYe)D*&>WM`9Os9&x*H)5a80E5_oJOeC=2AFqwZfN)USKon> za&w4>Lf8*}sU6dQ%~xZloIWBt3Kb?20XIipWN5E{FxbjvOt?5cOLnxd1+mEx*kKX& zS=XW7C73x{C2C)OS0Kpk97Jp2xSN0 z9F_ceKny{Jk#|~JKoA6erj%1G0RN8m+@dQ#3gxNGnn;n(#AlCOfgMd zYCiyB(_rFE$m~IG)V$zD9j8RMpqrPpc|90Efdn(as)rn}_`z?K*562EHI`7jJqKa0-%QmxD_eC{Xn7z>XsKJeyB6jmtU~_L5@{W*woZ+<#87FveEXdU6jffvc{L&TM8*&ZO;VivC zmI?a_S`y0%m}LrKIe`EA2^`S#yD@wI^MmWNR%<-1Wk;Sa9C@S>WP1w4!?LwR`M(Q| z?;wfVj>2pcM4i`$F+uS!|H=$yECThQpSl1$f23L~$BX?oT&vps4J;tk`K`t`*KoqZ zK$-tCXn0I5O!l7;+&@d8>z_d|e-xC9Atif#jHNThW^4WhV_vNDLC*g$X#|6a{=BG> zvI95&F1R`}C<=Xxa|)0|e>a)gr9-b)U9|EZp~h0+01uIeGA8g8Y%eprMnOaNe1L~* z-`%V4m?%mw2 z1H!PmFNZa`pU#8@)bGBQ;pXWz<>z|&et&OH=I@P~a9r-?&o}-qmHb_P@%P(@zyI9$ zJ1w)nZoL2V-2U$y`&%XZ+b{NaKkWY%K>U}Q?f*wF=Kg;bV{&-C|5>#Czl$*u!m4Nb z!bBu=eC7UMh%x(__}2unLhYd7<(U|aop_XTPr;eXs6A|NIHs)nsY0dh0{e<`iQr#30PQK3M$l$bfbw-k|(D^S>FK;;$;`0 zm8+HMyay?=kc;PQa5L$a==m;$N?MjVw@MAuf{$2(p>Q%il<2~?@7?I)+9+2ENqe+l zH^QJ4p_upk&OOA9?S^)L`HSgzk^tf4y#8k{1;Kb~_wk0EYpPGXZ}+q=NHKB*g&IO)Qv`Gy$q|{d%W>Gos7IQ`MWu z2tm*LNPt7wJ#gn?kCjU*z?>`u!u0L|;Aw;-0g{N33jnA4*A9RyK%9*Vh6nT0m5J(;g5+RWGd3z`Y9I~kODIU1vxOXemB}7t2 z(r89sW?-TLZ}Ny%^Xv^+D}tc+O7p}0AG14PK-DkAk_eWxMX{75;fJJXS3_8MwqS@9 zgNjz4VfVo18X90A8)rNa5EO}t?oYGz&`*8-_4l2oQhp2_RLDI^G_WHZDN9Mm{_90 zJ{UL@i-r@}`A)W1Z;2w<+It3>Xv_M25&>z4s*$H%bWuQja6?gzrwU;%ttL$sbAfkM zO=^RQz~{XI54DFR5R7F|gv2wy}% z8RxKe#=0JC>D`4v5$DAOaXB62BqSn`gt&+U%nRn>VrVvqG6Dk={((e8!IDqsIBpCa z$c^N@bdg%p41L8d;q1xfw2IfKg`woD(=TzW&`nbYu7oa|0Bsx^fWhK1pJOMOT*2dg zOYNi(Y%r8~fTzm_1wzRQf{13{?%1B{DRh{A15T8fO9dI6??iCp%<+WFXFO&WBDN{G=v#9DMmf_}(Sri`E4+Dm(Ef4; zOYIXu1Kd)9=^$PJt`o~#b`8U$&RaBL{+yqACq;hr5q#=+--r4B*jkou&sD7){S57PM^n^wv2O; z+=hAg+h={QY)_rU#Y^+ki&ci_wXv7Hs_{II(R+%`X#!;>Qome z^_Kh`MFGD&OVJBY-doBkKQag3l&*Y^I$>5p5WdHid7c-HC{eo3HU))onoWnhXi7Rh z3D~1uKh?E-ozoT$DABsp$PK9hMksOlo*v!daN{sru|q3cy_>6AM0?&vIS8$9cz-@6 zE8hs!(E3WrHe=m5tg%}MV?N;ah)bfUY_Qb#&&ze3wL`awALf?3^a)4p_-=3(v-QtV zSVmLP7uzq#-u)Sl9@Z%yVtqz*ZoVS%KV)&)EtyDekI?NOmK_{gvM}5pWn?_8P_p}K z?YTY19DaEB=+IYt$o3$Mzq#t9-SVkh+v8RC&DE|$%Pvp0C+ahrYXa<6Jl<`;X&r8^ ziyB%vyR$vX=6_V5j15{p3IX9sIvPtL$=ip1wXK|A zPQl=LrU0@y0u0vZJKTMj1SrqBe4Fe($9v%1X=N0S%a?=pHDX|3(mW5>l8J;paj5W> z^p`}pmf4f%(rNN?d|F{-9$S*}L@$xA5RXH#NnnKAH^3_#5I(a{ve!qw|D?nuuPRo0 z;;UGj2qr}$Hxeok$TrmHikGF?ZZ8XT{`_jUx9s_YGARj0APA%_Bms6>iA-R3a%T^Fsp>SImeZ02Il9ORzvDb097@^ehR` z0HAz0@}V%WQ8efDP8N5&;lvTVh(Ztm$ZO=rm@CCL+PftW;ZC|7LVz1$;6WJ3VFr{_ zw&0?GHNs$*Pa+I4iN4BSbGn@AWyEpxnxr8Sd>RWmy$VHwp@=uMt6RMC`3SDQOHorv zh{}ku)$r?BdIu}KmlRK9(o2F)pXQtBMZ>7(PWh`Jb7Tq#F zM`tWCGnQL3zD;E;k7(UKkhzY{{OOkYJ34cVnYrDXxy#Hft+JK=n30nO-;X{DRbf;K zGB{GAf1CdQ;lL4U2RT=E9MgXi=k`Aoiln6Ef2B~gwYC2{h4OFH|NlXuxc}Sq@5P}| zJUu-*6p9mvLhEPcRx_?tR|M#SWKO;g)4%{#yU#q6OL$|OI|7-q=n{Qdj-=x4aNA-Us z9h6%aTZ{UPG9mZ>opdnyfXJb6?yoM7*7*KQn)T>kNeAVH=5*aU&W7$^K?kniXQ)?p zxDWj+=%AB+mJ@Wqkhi(5wyF50AXn$Y`@zRe0o^xW`TVtQd-(Nr)rN+~6!t&! zSBKiRomQq>BUauI?f86u_l(LTV{i29(!=hYBj<*t*49Rc%56&QkAK@(<~XxH*cR0+#}BVw+z8nF3*#gm&_I@R915rP zCYk$gMY3Y9nesgCKl4}qRr85bSC{5FNe9XcbcLJ$Q<|mrXlWr8bIK?Au!7bU(W=n7 zqd(nb*LcaRNdtKLE z%oho2lrIRZ?oG~>OfR^5`cjYkp-73xDoUogGxxq+jfwUB!pROqF0n?D1EVFh>pp>H zY5XmL#cqvv{mPNYt-s!Bbx#p2qXnmYt*na)7ObSE1T*AP%pxtTt2A``Ws$Y})}!bE zO7MkKcTbsBna67@B?ZUCLpAuVU`>KTwZB55j-+l$7haX zx6BC%*Lxzzdtn!k`!#=wWBQaLq#a6w-7h4)yS#YW_KZ6 ziwdDUB+Jx9F=(X+s*|L!n=Hq3w5CSPN3086Qxd1ufpGpNruj^H#rMJKthf4KEl#6I z{Yr(lj&!`spsb}Bb-bR6hKFaH^SRUh+-8@sI3-zLX8;f`k&+c|yfXG28Am!}U-aTj5?Y(L+Dh9OZ~I?Qli^vL&+Xpe}1C~hsR04yfN)cdPX?ZVS#a= zD)GYQzPLH*V-3TlvX0dXq90vg0l4* zaAJLXh}OQ+CxRLop*YWjA=^O?`PJI8XW@R*;dqP|5az`p5tVm)A(fm*8{b+3%A-*w2y#( z*YktLDtZbPAD;@gpr@-@O0_M|RzHni`)G3x zI@I!fi*F=;b!w1G4q=H}1DWTqJTP?mJ)o>hZ_=fl5Guqi0=s{)?G0 z%(<9B-#1kSlBu6`zeMa0<-?G2q+g5K=mo*{wZ>bU&@ZEuMbNw)fY49P;TLH-8v8zi zbiFI<1cYB+0Mo8;Ru2Zol9dvNo63YwBQ@vTUxnJ91nib5+}bL|09lT zgi!)K1cj2ut@8mG0@1D{fhTb(u(*=~0jODhtLa9fn@c%IT=pl~0X!FRXn*D)uAh8y zqf+qf{#1)Bw=9O zB_n*Y&3Bd@^S9CZXcClAPgsyGgQL(SFzNU1lEc2Rt1X`I;VKCu*2v?ii`WOV*sF69 z6u=!rZ`8bg?YMgf4>ab*>?`>G0$)k(A;+U8YTjQdG})yD77SL35ahH0u_V|Q(tQ;` z5#Y%nmeoz#OH>M>&gJ%ZCG2i+thWk-M_7I}&aM6i+8sH=tg zl*>Yh00QbV27Z177Jc|)N6UG~M}pf)DEn1)1QCWL0bVBoE*!@Jgp!?048sa@TE(yi zf{q}<;3U9TA7M{Nf?-J<0bhYnLX;d=07fShhg8`|L~Qo@DX*!vzfnpdazXV-Ol83& zMlyFPA{i$oN2jmj5ogg{2{^>%5!l8gB}>_VLp!BHOs0s0AfpkBze7ttr}$XLmAUve zSt@@x;7eYhbaSP(W0jBj+;~R6F(sGUA1(jojsK{!U(Z%*E;xOHiGDrh@~+i)l72Dj zl<$Wv70Wki*;vgkw~PTd_hGvFv7U@%q0G`>88&c_b!8=;-zfq9=U*~2V>^6o7E%|m z%HsMyhyn)pV+QXugZ~dh0(|}-W(MG%Rix#6pdibZoFy@xWzwE?NId&EC|k}w8;j3A zT#&6s&Q_hyR%*}I5YJJ!U}(GNgn@GO_X~1N^b?Ow=bR@jMfQJm;@DE-`t>3i3RHa?VWWX>&%fzGibquv9rCSV7r={nA{> ztc!nchKc82Hpq`ukrfiph{*8?`f~_ukX1kBvelZu)R4KfmA@*+q!=*iNC`75%@ro| z>l!mHDDx2o`G~7vr5$-PQrY&83M{!`Vy$3jvVd8Z&Jw3YC;L~5%gl=E@aN|3G4#8(Byz)itCJhAN%KpUBe9f-9=woC6X_498iLZ9I-m|xC42PVD=U% zC`knBFCR`J0t6@FPaIyy{g$*~P!fZMJXZ309k=dYtPZ*clhu|V(XxU7)G*9}CiuB9 zgengFTE7&+Mi#L_oX)XKECPhmwZ(yjtTD1}a4Q^&gab#)$uI&MHNwNkf$lvI;xw%rHLFiB#W)QHiC{V4<(~1ZT@p-b5}x0))UuM$|*> zSA$HN!1`fMNsQ|PDTm%9mzLnbAv&f5Wx5~&$R47niUvUSC0J*WycrlqM3(EAfPo`7 z2>@iD4T4~RdyN2?h|EC)L+e(e7%&89e=f4@0L%VnVdcr-d$YPG5DzsF8&pfXVq(<)`$si#mFc$`doCKoj@q7eG1jimLUV`T;m^W3Q>;Zq-r@=LMknnoI zb)<<0_uvr(u!z+<#|FR{Au`6u%DN9F!cxX4dnrB5!t({#ZBIB2x&N)4~-Aw|P_ zDK;{v9vB&Wy1Mby+Zn_|D&7qSgqrlfm+2BrE0Zvn2|1NF+14f(o>x+zm+%0R7$g+~ z3~95kWgw@qX3wNM{MI4msmfKe+9^z3(zHH1_tUbQftw)Ps|1t)zr(&IpnY1j?-<9gVuF zI5IPg5Z0$@&4P8kW6wJ_{?MSs8~|}w%IUsRyMPuew+i*_@j&ImEs-ms zhK-*{i@-JqNB+CuigBmwNH6PS&~AZ{=ia*hVC|l=@w5OWgh`!9(%083=D-L z+jQ4bho%QJwF7S5Z5aFk7Qo_Iu+5>4{UvC!D<|T;eC(iYGi~Un_c#9G>+(yEkEc;Ej*;d0($LqF3Jp zN_z)Cd&BqU&BbD3nDit}e=<^Md>soPOC}6r+{M~-7(yy6WkG0t-q4x{5Ma^D?U)04H)s=pIefb?! zBmzP#w8EX)(7@F}mC;+w+4p>FMO>wbt_{TVgXpRn)Sn>1HD^Ir44^k&F?(iKWL~c+ zWcVD$1c8T5K1Ka~hC0uR;~E9MKM$_5K>vy<;mMj4ZI~0r!!oX+6od73@$&*+w?94A zKkynQU57eE0-&T~Is5MRfCa&0!Xm+?);Xn!*Lu?1r58g`Bo^3e)%rl}BG($sTEcN9 zHq;gc)I0%-Fu*$Hlg)D90jk!dK2nVhQe|mKQQ;p{I#pTVy?!XvRND&z6eYnUG(Oy9 zKtnXN1e)OT_3~~PzliNW&%YqdN*zv<9eO88j-igAlwo9 z6E(4aR_=2fzk6#?AB=<$0X4~^^U19s0`REqUNaOx?%aE4^YQIl3xKhNYi^Y%+<&uB z1)z?tI)j?6ZIT}^rT??^B$O$o>>6)A&FcP#!+FSbi;xU5*8BXa8^pm%a8-CXFwGb%VtUz_6r|I9{6cdHf%75&!iJSq)duNY^R(_UV5B)q9!?rwlVsfg zG#wp8ZN&X*5qYlfJkk_7(9SbAG^65R^KR3Y=a-|(uTO)HUqc1SsH+h`BwzP0#j{91 z3@ic>!byKnLBZF!E{S)+Xp7M)z0uWwyE%b5q+50o%TH<7P}ahZK~1~sp3RRu+MuQ2 z@covOb0gNaoEZ+Awzrw}JkQ}^;=P%Ey*o`0O6tQ=RMV1GU6H!lI~PEG{mt<32mZQR z@jR%K6UiX9)f}FN6xHyZ8kskx3o6=IxQ#BDr-|!bT$~#HcrwivzzFu6$tf~!Vq-j( zl5-RpC4nfGl`#3PgLH75_S$?7=f`MUW zGodq&O6EHF8AT)mOinK7t_Z2SlJ5YtP!x+KiJ1dvNqD_KAIZvj=K87qE?N@~F3F#v zyqav9FxqrlWY=S6D}1p(Pcz`X(RnNKh-~7os_Z)^`GLnTTN6JLS!D)Mzjq_sO~01q zR;)e6*2OX#^pmj#VzvV> z1}A8vicQBs1iyu%0JphC2G~qk83}rh3uJIR??TN4twhq%sv=0-L(bmQH(L-OfOLhe zcDi)OIo&^ol`4vqGkKMlNP`@VWkyVj#L*p#MSslO9Mr5L(76vvzm1e%Ssbq`7f`SaR?`j(qTkfj zS-JrHVlBIu2X!tfucg3GR)r0jM&(D0zBX!$9Cvcv^BPlH-$jqO<`+MH6VS4EbtWR< z>2LbkgUVNDshjku`P8F-qZfzm*h1qD{!qh>G*l-=j|&eRj;e zws>AN5`A-)8{<%DDLxejqZ|;1; zq{rC$o~UK^`}*q?8{G9f;Z*qg;W#^=rP_5akzwbhRqv| zC%wcZ0`+n%UQsQw@QHcAT7_0N5mdc#TlI8nPxFx+Wic}eG{{`V?EaZw%Py*yZ`~=@ ztNjsjVRJFot?MGK?wF^ggb;9h|6zO?N*KrHI#fTQ@-HS~X&FEFagsWP2Oq| z5GD?7?Iy;NuO>@4$R1|3E1_9XGL8jbmL-XQCINb4HBD0rB;?iA z8Pj`Y;1mlAlfcjoP&mP4EL#>!rflS1dBh{A%wufjRKDQyOqEZ~6x%?R7-vI=(tq#| zUlV}_;ssSmY$b3wFpOpM>P@{;%2+uqqKt3%Kh4Cs5QxyhQekr*Dwi%>xT!2p_Op{^ z=;V%f`lI}(t9hF77l`K)d_f>?q88{IF%c?dc3&2A-}|PgHkjms4h|&Yg6E1I%)|tR z7&vZ|Fz>bC{b*S!dwLRncQIe%jqE|74yVhYn2hHMBQTwO!y8D<%vKZ9kqU|9T|^kl zLhhSiPUL#h$T%x95aIG5*T9_AcU_JLIY)!*vS9*JY+gDJ$JaOlXbH0+%0yl6al&UE z9)*rGeN+4>fNZMpXXsqGcJc9Nj)t1PD7QT`#k&}!y>dJByt1j>30bY)I0rg1MW8^e22K;gz1Vj!nPYX7?_3#J;Ovz1yPIzt@nN9X`ET7xlsm>DX!K zT)MyWJF1=UI*Kvi{C@C6bmxVF)yp!Kv;38;_gCtBH&(orp6K+Rz4}mQ<6BUGA!hRZ z)z%N|-@_{n)xMmKdRn>uPt2Dm%A4<_*a7Q5$VyKYxXwj)X|As(2N>}k{9q$Waa_-- zjQga1BW5t*?8dDxabI+dP3$k7sV-!Cf5gY(0(Gv;@A@k**%=3jxCCkZqvtoz|J*BTj=xAT$@|sa`*r=6+V(B&fx(DH3d%si^xga zxIrK&VX!;t2=V6RDV*3cMZA?P%_OT}=vqv&1dA-rBpc}n^N6T0IJM!aEF3erc#Ebz zqHe|0UPovUN<;7=g@=itDHI(%!Y5`_YQQ9O?b1#%K?Ykit*QoxFp7$04m!7KU-qd8 z*^&%lp^o6h?U)piFp4G=PhJ9hn9?y-AY}|qWeIBDiYHrAYbAt~T1|76X(%j7g^kpk zB8$2S@X8hETY|Oj0r07G(2R+2HK-g*H>qN38`0G;ri?1F(qqY3(+5l(aP+4pSeeSd z3*|-C@#9FfBb}nSIvS}H#Udp%Ky}c-Lo69pl>%pyBp3jU$mR*uI3H3c64+x?gqWV= zg;YtA>rDu{rQ$?$q#E>+I8|baqCQ6!A9;~cMH3I}I9>#r^K5jDRQ+Oua5qC(qe-eu zYzsuDITDYuB_nJQm0>0VxSsR2J$}9-R5pzZ2Rgo@wlB=;b6|)ZUMzV#ZJ{=P>rzO5 z*bLf+33`$8;E+P6WVCK%9HkCJi!SQbj1!)?{~}|mms&;JT4LKrlb}@~ojG1;7yt&e zX?&CK;IqDeD>G%G4+y&`}E_NbIk!F`D$bRoAMya8Q0 znv^1f;FK?sII>995%{|Guo$`F44|&?lDC5**_tll{F2&A6`vbOCs}D$(Di8D`etZ0qG6%)4+PJ>74HXe~ z7tastALi|#>C`tH%+a*WXeXT@2Ff(AYQHyp~;_HK62Vz}1xG_>BbJ%Gd70 zZPSnagp2!2laa&@9Y1H zxCc?4$W`TxkDFFCqFog4@t?xpiadrZK7AwQxaTumRd(t6*hElADN*l%XSa&Xx{;rk zi+`v~K)g#}x=YY6BQ4c8f2=0X9ajjQb-DQ6<}ZUrQN8{ib%)Z65>x!opDP# zUPOy`Oa3mkA5!d=novl8=9cb9Pn&hiY<`}y=ayxjlOgS%uI`@G?3Qcip6um*^NL%3 zyn8~rdx4%?VXZs)nS0SM*Wy|C`0wr|&8{pyj~Ho>vMa9Tc6S&@^lomjWXkx_COk(^ zKh7?v@x;ER(mlv*Xiih*o#P&7xZPVjN}u;*>uYaUd{?;etE9=?v!PpsZdlYB>N#uW znY!|#QxMyxcj(ET3VXI^Pk+lZ(c90ZXUx>kbWS*Rg(^e{7x&nm5sZD8!hUgBhxRLt zZjYih*CGsw-MrPk@4u=z?i{p7sM>TKKYKOLwxn@N?tU|%?W=F3{mykf~h z0tsrVY=|Zyx3um1z@|-=x|URfDv)9o4L=1^T)hc74Nyc1azcUGS=cOm83h4 zzJHHqilsp;siuJB%F73P%MbRs>p@5AAx+OI|B74T6~J`j(ZFyZ>6is@6OH+agBl;8 zM<{;7bthSi$Soa>IWVuKpKvP%L;W1CS_k=cWDB6eLjyFJ znl>bgpgm%tOKZC96JKMYiX{okWphG-M784n3 z`zo;Y<*zjz`HT;W##1>uysIZw4e3W-YI9FFYV0&(Oc5*396ULeq|4mUvipn!bm{t8 z11w+@rm-lx=+e`Df~J#yK>D&pkYFHi#4UHD6-XNHs~rm>&wahr7~t}r2h4;hP6hV2 zT~Njb)B5T(<7n*{gAakvKV|DUFX|XWbn)`Krlz{IC7Q{K4&M@3B#_iR2JkW{NGz$L zjvHDJ(qNMIswi+K7%%9{RYkc_G``=OnE&|pNL$&WDlyc7AU3_e62t$k9xrdh3$ z{>J(%i3xsm_Urjw!?g<71PaLguJ!mV%c+x}($RBv(sPN>bIWONIov7jCZQCj(X#+m z4+9$p0*2AFC)bI8I#iF;pVOO4!B4k8{`S4k&NYK1pn*++FutHxlO0-Z3&R2z;UOjb zeTr8|Zl$_~Y=Aq9vhtU|Oaa*8ulsRm)OMbRh^}pdwP#%&Jd2)@oY+9c+yh1*g0QFW_7P#4&+aYqVf6*_cO|qCsax3PRe;c*YY$tIi)G% z8NS_mu?$*iUYVEUk-M{TUo^6I4_bG}!+O;td>~?BHo{WI{a8sP`+lU&7em`ukx$=6 z+E*Gn>_@ipTyYFAJf(T%q2U#0CBxI_uGC++;`-&7TjrITTUR_Pk9oehQuXqRSHQ8e zKdw~lTp=nQ^Om{FI&$^=7Xx31t3{qy{VNRuZd_%iUJd$!4SsMn<;m3$rJO$M8*2hG zWtDae!O4*WMHoj#Iz(ML7j^YgRMd^A=*-RND6$j|Y$?{N@Zq<)+%v30#*1dCo-x9L z0gBO#rW!}n9HOI7f-k*3er_Uazx(BcZusfMCCEWSblR)v^bcDRo8-h75>`pkydBRf zzpmLtgEAaq^3MIadXjRs*(U3YtbA{-lO0`_7*q5rChx^&VcZroN%qv9*vJsHSTnZV zAv*s@40At54E%l(5lfzA48l$Vap#G^ZtkmV&opJ98?Uwk4HV+aZMoZMAeW2uwKy_H6 z9gC*E+lS^J-Jad2y${&@!1WgEK#;3%x$oG8{O46>@h97P>p)fxof7= zN}6vkMOkdoj$xvtmuU6?LPnj2c^lcE$uFKJ#uqg2Bb#;Ll3b`yWCg4zO>>SA>04pW za430yrY-l2Igi*CWsA#HM*;bx3{`NuSOvNqoA&-;wBVPqyXJzPOKuPE<&-Ci=WB<` zuB(h!ovOUv*wz2q*`Y|y@%!?xBUAN0z1iv)eyhEG7(Ce+y7F6nruFidvDyop7oDw% z!h$0v&2Wl@BC2MKwohk6cx4eITh3oWG!a25w`E!>COH@4AOt3U`Q2|3YQEgPvS+xpy3m`WdFijw_Rr-P%X`&{Y^iF#Hu?;x9Rm`PbJE@Nm2X!lQ8od@ z+|ew$6~;+pc8xq$t`$d6XTWG%Y(Of{3HEb2-?RSs_qiYhSpo z#=;8&Pi6TlT4=YnBNF%oN4e7E=Gi_1n8tZeg$%RJ{!`|3nh-yJaZZv~XjZvX5|+I9 zQAy(yI$I#EFVRt^WUJjfC4-ZSs;HQW2im znB8gTFABtw;CgW=B~Sw0IiZ+u3N-=ai>v>Ki-&)iSn4Ppd`B?k=iCTte8QV%S)jX# z4?EiOjxVlXb)<=G}0N;%U29_6}H5AOF$z>H;PKefx6Zb#!fO^mfqFR6~qi{ce+Yy zN0*|wdF17lyX%ig4egC~v;!^Z3d>X!?1<&X`i5MT+=RmYH2z!M$=TrW!Qh_yH*Lwh z*l)|dC~3;~L_w3S(Ij4rZ*P<8?Vsg&z0|ikVel!>^Lk7)*6Ge&cmx`30VZtLz?A&Z zBOkoYWols{zraQah|ZjkP$KIRAQP(|=~a?)SLBkfp7{2t|Im1RwkgkZjby=I%hE^V zJWs9)y~{?u8d{KR?4gIR*Kfn~WH4QilG97N<|XB0iF%i4YL{9RKd-$sHs1T?v|nd% z+TVy{oR*E81nr{%7?_E^^0Cn=U@HmGpqn9gXr>V&>$~%z{+E_v{G$> zcI4WboA1A9?`Sn7+sDa?^iyBdDVL#yXxwrVvf0*Zj;c&tm#Dc95^q$dCYn15yH*Bq z#6RG&Fw5m7tyVzujdaN4bv^cXP+AR@BDaR&Ob&I^7#MZC{stzHQNIU)x~7eQcd_ zY3g)hwe!n6x$7$FzKR&C%Ahx;KhKBqi971vpr1t_Z15?+Q0k|bPC`wEZ=N33|L8M_ zk&RGzwR;%b`4!uOvrnEjQabkf-tfH;VcXfmP~Z2N7J9zr1o_{%}P4BQnDj& zKS=Rk#8!{xH9oXO`?)AqWhZBk=@#*s-ZSv5eqFr&(5Q(1|FHJn;cUhK!+w?sB4RdX zV{c*>RZWP!NA23wF4du`8U(S`sx9{3qbO>msM1e zh2Bdo&7pC1fe#xbhyC9?Q_QUj?}CU5Nxyw=)!m*uAmgL-Lf7;pN2;V&2f3rRRNjZC zH^BNkGZie2wRd;P-j@jUlz#ViuDiQ?ASm#v6X$C)>$bkXvLUh3EA2qalh-N^dm zMEPOc`|`fr&C*HdO})o`ivz*hHTNt(cszcx`d3b>>yI%t^Kt*q{qpd*h}G}yj|UWu zy!ok_KT#^XJ)nCw?y+SPSsD3M=(Kuj@3rc8}Lv+`4zta>Xc=Thg<^zW0So zlu+))haT3!+l{VTN(G`d3=-*Y$xiDx3N~e~`40Rl3yS(++oQIve%$+N@3~Upv?9N# zlLuS8mU20J)2^;k-)vfxa;32Bo}qQ$T<)N9wNlfbX;|NU$v@><9obKoS$zxDS}OI{ zO`on5F0)y1DLHDEaW46T*qaAcn!}ntUp?-7Gx$%XHCA@to&Cwun3igLR@1(>(v!C@ zqf|R9WWV@XKUrQJRPF9)`Vyq?v{~PlqvBL8?75QpWMxO|Lf?GT!L5!b?+>Cb^l!?3 zy*vM8^~d0a!Q-Z{_m7`^`1kL^5LoV=*^r}LyO!Drdowjosec{uK#d|ScbI71zrpoX zZA_{8Fg2`yQ{YT(LPzfCVOIZ^*k$!e>*k}J^p#g~57ehT<&N{``*&2Is=o|tJ}y4) z|EP7QJ`*eVt&DwOSMRdMTvqe9Dy4xvvj-Xr6>{I}tOq{XKGj(4X#U<5Ht^ZyOk-(O z?nhhJz`oDri_7!PKe{>wz63wGxUwntvv+>r;P%sttH;eh2aX56Mx8wg2Z8>}eMtcU zG<^;L0C@O6+!qb^`v2>ORaI4y2yG5FUG8&+{5;0!^X7u*Ekpz@rNnKeBy44+9i)|U za%#E?^3E7_J>^S=%8D-P7d$jIypb*r9Bxhm{$3ZbrfN7dCG9J!y7rp7mTLMAS_U?> z2$f`5kW$1=td=j%@Cx4KznqxWRlIfp*38X7H^|s16mRKie8tny*4ND5$Hc+k!p?)H zFt)xLVDIW@WpUfq=B~ACh`sGSC&&ACZb43-L08;E9lgV@`rf+g7w&c~)YJc#XHW!< zDDw`93b+v&8X6jM`+@6Kf|n=J_gaGQHIlzyqE9FxAS^ogZv6GTq>$@rA$MZJB8Xv; zN&gWaM%+U7 z-^tjlC_21XcX_YnxvK5`LC^1lVZfSk(7N@_4X21LwV zXBAZBmel4KSLGMi7Z=>m1X+7Ozz5OHoPo8JJ7%iHgEPL~^>fK!b(AeO} z#2&HW6RG5LO8Nf7>MuEUUkaKIO4`0wbW$t3s0~kso=zWi3?C0X9~v1OdG_Mj#Pr0A zm(M7(W0NzJ({nGUmtM}kel@o=Gru_ddU)}xf zLwDob8lG4GoBP@vP205b__W(U9YC$hKbHun54?yKAXq*}E) zOG$sAp||7XE3yttbKrcz?)*j53YY0V8u#UXH#6RpcYS~PKipT-uOB8K`dz^+X8k>f zo8Af5Hfemy$2&7L?ko8CF8=d^py#WX15fVkz2lERJCh67{B^v0ZNnpL4DtBe-D!Eg zmMJ@V_np!2Qm>7)M*PN8INgH(4PRS}hT_=udEnJ$dNNz+UEAnxLwu@OcBEC3SXOon zH-5sN^%=?1Hl(6S9Q+vL~tNvL>mo<7bo9=K~Gb(%s@6W@P;LYncQz#(<{y(GYhKgaw;1 zD)eSzk%6CNfbzmE`Q1put^3X~;T>EgXOt~Z{SZo}Cgru*8qJMb>;h3SRcs{Wd7@BJ zUi^kak-avYT#6YnR0IodCW^+6py&h#BhT3Agr7@TGd?P_0Z&#YM8){Y%M^qq31^)M zy)E$&dr>GCq+F|)=GRz9PP-dEKck|_NB+{iER=B#w*gmT)-&;ap<}l`s8$e&l+<~i z01?zN#9KPgGF{u@W7kE+;%5`ocGTG7gb7prY4Vn&a3jUl5^UQq98Y#!JfRm8zJ7NvMQFb>5V=7AW!@=c-qMb^}EOXjjzrlI4FxGHF{i{sGoz<;}Vzb)%#z^({?B}$Ws|fyCw`_)0jbgHL>zBtnSc1xH z`l2VVyB!{lAL#rMRc26PV>o_3X6dN(S#m+2wO4&45T(mWug@CDkp-uisIjql=^pNo ztm#e$Fy1B{=@u+W?~*+0sv6Su%ML{BI+>Gx$${TWW_WXf(hdkEWzTqc7KCFe(|jT8 z&`y*Hy&pizpFSiS*SP)!ECEpB$Cu(KIW?P+=@_VT!Y!hEd91xBTfN_ea*D{HgoL)M z!)`3%4>d6)PzIikg8V!~sy6>-B^rU$&zE9C<5<6!d%7>VpND#j{!x+hwzNnU{jGmF z+IiS}9iWTS;~1O~q^69|vJx4Outbw&oPjh9)7_OAo8jS9i8O$5YNyf!glG{C7qbzC zRFvKp(Q!WURxPkQ_M|)xfwOPuhmo|ID>4ah#q_J3E)c-bcnvp<}U;C<8B{7}@SpDnq2%Zno- zG$pDx&~|;dDrHJ-s(NGWCbN|_WWBYbUbU7P$w$I;Z@-Mcnc>tF0fFZKAnN)W$L_!? z)!T0oI8pdJ^w=SJ`WSG~rSL0Vf`8 zSs9r+nF@MrIhHvhBl%No)rk`D7!rs<|7nqL+M}cycj3N~x765>YPbzSO zeN8y`7$-!?Fe667zO!D1{hi{L?c+Gc7_zm~gLbI%W*_L>&5*&U_luD%*rjT2TX|BB zfxHCpt)VZ7dz{pW&l61X)XYXvwd4EhEo+#?Je%S9@$w=82rm@aWpOA)ko5-KhM_X~ z4H8OBzp}zLAMfxoQjm)A)8k^xGdg{lQ2E=GT3S7*77};42BqL zw38#+KzzgRWso|q6r>P$i~YA+@Ff7-#+f^2?n^c%R!WW^^Gu9jvnt=zH)bj<8E&> zcrRau?M90D{v#(wz!(-4l*ZsIO;6tog=U%TeT~3OEc4WKFUl9QDz_+Q?^kDjzc0Y~l+qpPLECC@0UQQ6DH&xT>V) zw{Ga<)Qf~^vb564`bw`~9lY(>6$d1)SUOc{VH@dV4xZNXu3kOMSDLgd;pG3~*!wfs zf`3&B>3X5|1N(alxckb>)xQT8=~@Prb+QKMe3O|#Z=<^jhjzY&qZ{19xmglkBzbJu5PrH9-zJON-7p8!b(axps4 zC{?Nr324?@fUqGi?q4Agr9)3{qTPW+#@{(Z$gF!Rw(yD#m2*1wx@ zBbiRofVm3|Q-cK|{1$Nfw_4Y51}6k!D<>#Q-bJmu3r4gk-d$R~t;~Y-4pYN9)vh&+ zO|$x$o%fnVzv|oRjk0e^ACxM4I{4!rD9vtnmpNG8;OytEh1+rH@+U9{;CPrh@?Q5) z+$P0;+JlO4h4WMZ)<>+Lo74JZBV)MF4i}CPe40?Qs zUMHU8hZkr=k@-ysbIi7Eo&s}jyw?$ZxR)+cq9+o>>c?Fvw*g>q;<`~FZZ8`GpI_78 zTV!{)CSng02x_D&p|=+mk(|C)+Vqi_T&VS#0aBJ=0lvTp4)t2OVON0(32B!t$c^#O z@mo2PC>fRgCyxA(VMmV?kIAvS?TZXjv%kL^t7AY?8$Q<=o@~Y%Hdhs~`i7SEVS%ihxD4)e8*nG*!8FP)9TPgFk39Vtze5dK){c$Pe_*l+`ar-n*(1ki zQlQ>9v~XNK_Q^~=X$QOPjY{-KYV>!9BIZKq!!jZ!Rno&O=pDATNoybkS@vQ)1M0Sf zvzzH6<>Dd%CcS3LJOlwM!WTQ~K&%;ZL-cfIaCQPvn*5N)dNAfAD~G_~I)H43iiw+P zbts(iZQ5i;2IE_=-8>HC!!*>HAZG_DOY?1(BkOIRLpE*oY`jCZ-ra12J+@D~Stf6@ z?H}GZ>s?ee^Z=QRJ^jgts4FYQ;}``Nq<_5AF+ ze3=gUdHMNWq4@=G^GhUo47m%+X?90!Qs}7|n4*5UxOHZG( z8^*E1Zo|is*TCy;;crV}%P5aEpa2@mIZQ_KfD)080&5po%it+9!3p_fJ}FcY6*RcU zB)q1`K1=2kgflJEgMf^ivy1{WX}rs2ib>~cFi@2~8%wteRUTFWfCdN%6$oL?q6!sY z;RR%v>;`=b+Hxub<~9Ud9D-vDV4K>^Db&jPLxw>l<9#y2bzzx|n*x8-E4&JjHETf2 zHJ~n_d;kN|B~%Nbli;%z5J9*A#){J)Au|N>T~<9GLU$Qi!>Hp||!Z5jrZ1m>uX%Wv`dVErD{9CLIiG;?YvLC_)ob}9$ZNo6 zx8?{(Jv%B;AK5PG#N6hH{E^fOR)9gIX%=Q=bVi*-NL#vlD+t#?KAUV+d%;;i>s+q^ zQ_$p;HJ}|5%J2lavD}hB*(PJ5N0TFiEaB_IE!kEOid&2D8a>z&qC3+fTPQD(0TV!5 zrax?R*JwKPY*H`mwiBciMnmoxA-SC(!f3kYPpZ5d-A3h|-gvkcFJb}%R#b!uhR9n{ zfp2CSo!Xnnju`GvwnG%a0#tBTC}XKVq7+@TSkql#%&}Dfi*f@)-N8|SZcGI7JfQ61 zAJvG9$oWa~A2x&I+||FSX1atPxDQ_qt#|GJviELV5t8ftAy@4%;v93vQp zs2Tb!%#A=+xBviB^{()9;nUxBPf!2k4ZV8`=)Zr)I|Mns3w9oY_1~Z`8iH#EFs%$B zot;_uhB;(R*qw(_ni}VdhWUzQcvptefx_qcMnq1Zh(?Z>sgFqXkF1o9$efPMu8&|e zN5=$5l_N)=xR0v!k9L-gYMze1V4w_NL>OM7=tWWtiYP|?6q6N-*(t?>@0pe6GaJok zn;Gm{GL$rjXU;3n{-?XOLQ#A8%rP*}vuMn}e=Kli%*L7jT1rQ-=J-wL@!M0+Liom) zBK|91o*LIL8?P{;JovAC*(LJX(=)+|@}&RTm-{Ko?qey9j~>$O%PA9C&d933WEUEh>Zyn{DM|-s@2EBxn$|EQqa@D7ynLQQTHgA5cL#e z#yw4tWrj^GvJ!J9JCB@VCZ zE-?vY7Hpk1+-8K`gLC{f(srxSy2@Dg_w6DTn1Y%8(@!Q9+uUzm62NGsqTze+Za>+# zJtl8*isy_qn+Dw|GDyg10C=4G_%deY*(LCJ5LlG}Uu-4&eW`vvGjr_=F!ArQ$TqMl zgjvY~^7_n;+0B@_r}!NT_xy=zu8A|`X&~i#6MP)dD}VtbeyqZ!K1?xvIKMXE#5Dg} zc6EJ?KJY4Y&N5>&285Jq*kqo}zQ4M)_iQ5Mo$l$HUL*4}GVT5uylNg*VqLOr!Z%^(QsVe;Td!#Rs#b}c z%Z`WEj+e`hmCKlKREcHtj)u$jwbh-QQ9L_WKZZx~-yQr|8u~Hv-$zc+ZVbXC)@3(o z{UgnOx=SkAjU3!fDfyW8Z}*nKUgqk~c^L$cC3Ac4UeW4a$-h0az^8JpPnD|$%ug{)8hh2tqiTATwew&>e&*DtS>|{1e5m%pCjywQDHw;2( zFlS+yV=)pF88G)5Sl%$h>~9r8)ygBdp{^*jefd#v+3RO!ITIN*X(DaHhf)u}af8vJ>D5$71&!>$oB{v+{VX$yx^n9 z+2`M_4<3D!d+KrSwB_=tsv@&6;TYP_HPUjLg!ubh{;yi{>EhYPrP9Cm&IbRkq<^Fd zm~RUF+eqKpGG`}tCTzEif4t1Dg9K0?Fa#aqpIYqhHSSd*3Ofz|s<|_R0Z1TZ8Dlr| zzqzjrceQ9R-~YjVWeDn~i8vgQy8<>$n!Vo6Z5!t)cw1Gf&U^M02#GRmIZXTLlYk=s zL>w1(Eh`Okgg8Hj?OE4aR+)9>Wl3ol3AS=f=YF_Q!TWkFyU*-Bv%FL&& zM!_1|cBnp@kvN78VYV1uQ|4^6be2Aw2vo5HX2Oq%fiE8ovC}2Oz75~Pu4*-==2?H2e0zk19!bj2RG8WGKO zP2M7=7xyXIfFW#cb0{8W_Bj{_<-JKoPYGm)XwyGUmg!Fqp8o=g{)ZtwBt}An92t9NzOlJK#Pgo3(5%0O_GCi!21Wp2ZPm}Ed2fBQB)7-jv@-IZ%&eDH7g7KqGjQ?jB?n3$ zyRA8-^Mmu_vz6Z#l4v1DwjGED0?DX-efEw)OT&oEBq$5N_XvDAF3 z#BR$aCpsxzu9{&3~*_46M zi2UI!O=7=gKCjo(+pDosq`{g0Z-2cda%CqkU zvE><;85LGP!15(PvZY^EtM;D?y1+eUT!YE*4MzII zQ33dkBtwG7{jnK{u$Drw-5ZFH>U?ohjAiPAE%^Mji zA(T_r=wLmqFx{4yRhVW?Jo%RUG=`Wh`T)L#Uaw>G1Vr+Z2D&2s8H+Jv4AK@Um}Jy4g!B`;1RC#i^zRga^(uU{gi0-e%|XYZJ_Jj)8XRT-PI z2S=5ewEwVT7XXZiAT-`&^n4c&p$qae<&{jXyner>jIt}`VP=LIQ(ToTujxkU%-^xj zE)zRHh+e;YFP!ytTQjC}DM zvWpW|J>}>DD&f!MZwAZI5imsMtM16ftV3J-(e0)HoyptX<{~?&gShLTNP;O}?R8KM zU1J=hZH|>UXQ?4_$RnTF7-AX}|gP664+>mFp(Yxpfh5+WLJnJdh-;I3# z?h@{WAo18L^*ms#FikLxS@J@e@k7rKxnZ&hxbq`uaH3w>9PguOb&4f~cOM8-w5Y~4 zhxF+GY=>#lju>o%(yUi7a7;+LVxVlS=puBJ=i^CYa8E+!MScd0pVksm@9B9taC(>! zKJiYjZvyDykNLLhY(KPbGH2dh-@0wG1^oaa$PRi@2Ey1c$Pg z1s9xXz$as>b6v~#T)IC^|BMQy&0`s*+oMN~+Wae=hM&Bczt@BlMDX@pi^KHj?J{k^ zP`(vMbP7j}9&zBplF+;)e2IzIy0>guvi*A)8h35!t&$PB6c;bId^eaJqbGd*0{EbpNe3ewcjL+*%{ zMyvZW#qLD|ZF@l|7$|GLKx?KiW`>w64B~ACaoXU%UgQfRJx%l=rp5x7qoalFanc4H zr^Y14e(alhl{cV~*cla0P>j~v3N{#a!Egic<6=;IUX_yzf6dBH5~Q> z&>0j`jJyyCI6b-*O+LozLaIJD3zkXK?YdrzX^1nH~|SWzYf4 zWQwV&2ReNodB$UK7Y{r0fvKaA;ASOy<``u(DcK7a6DLxh%!H3c8W@0yF*Z;k>O_y5 z;iH8@?v)8EqB1uX8|E7qp-j)sff)Kj$Bi;5o7C^tPMj8=JbJ7DkgSr_3iTkQgc3Sp zE#lFR+5UjcJ2wop9Teg%IEZ=iE)og@cPA4=jB1@r{c5`tER6>g;-{GsymmXqhWXul zlq$VC0&1cDOU8ry#!pX;hu|i|d?q6@CZozzPaq6caE9tYhO31TAB*uyW0T3oDN`qt z4Bx3-vc40O-iuR{nVX7JfkU(Vq;f{n1ryU_DO0kW>FY?-rG6936w~F#={Gm0Q)f)x zt(dOzDX%QR&ff2vuJgTQ{4<>bGutpR+s>BWR4(0dHrq{kSy^Pd*J$=xrsbna(|*6% z!M<7eTeBpr*;hXEBM2`QUwSNK{#}{dOAY$d%lM&1{I@OsPtN9liln6*+K~pt%#&!V zd+om>Nq_-!5HlAGGIoFisz4>2K@wY?JAhYUhcXt7-n=X@Jq(pl)LN^xE9^sUPU(%Q{WV!@%muR4)153Ki z6nz5}EVpx?0MS%{uV*|GGs1mB7^a$s^~9Vz0mxKYg`Gs7+l{5&we@V^zeHmAVyUc> ze|El$i6vZ~Wun%Q3h?%gQ_W$`S5#5J(3_B=l|tv_zGq2O36BC>{ixQfJVty?uavJY z$T(VS`_1oqAY96=aShgC1klzWqQ0-BZ^xW85)@lIe-0Im_|h3AWgV+#t#|c`XXpa^ zA;8X!$ZGKVLe;#OUu(>eO_)R+3koPns4=6nNvpT^M-gR@30eixHkY!zy{}v=M%Z!2 zIJ}pUI;2zRdL1+L+W1mUqcqH)YHiNHXlM~HS`I}6uFUw`7O9!s4zjy*-!44W?ryPN zM3ddU0lUa)yZi6$qQ2NY_-jXCwvU!INyw0A&EzsA3Cx{n{4m01dM8 zT3QM;&CzOYe`al~tKv}hzBEJvYE}dbQj1^BFuHe0Ct|!XY4N(O*s;DVo808sIKA9} za%lSE*iy{c{MWIK->CxT)PBjS^AkpZ(eE;@t6AyhN!r_Iv@~qf--OD*8qp6+vN=FB-y}t7D z65ZE=V(VSzWguHXcx^(&N--OB;S!zg6X-I{46H#nWe{%-!-uNHwX3}^s8~5m#>6jP zqI-8KZrwfp9bI35wb_dS67N;g&H#+94lr?&y9eYcQXmOD7bM|Que&oFf@OK#n78Yc zrX^v;>a!atf*6jCap^T6gXP0BSo}I84if`F4{uPBCH613yGS2RNoP$YQw8=`#`N$ab$Cbwa@o1vRy3F8MXg4*}ed zg1fM|N@RamQ$w!vs6y7Q!auNTy#z=QVlm9pm^{aktTGE1o)Xv@-=bJL`r#Hf2Bb+ZXy;yq1{**Aj{@PVBsYZo828o*pT=rqAD*oxXv#?FsE)~c6o)+JMyea#s~t3#SXytgN)CP z&q4V$RqHa}3yNaot^E&4Lq3*rIa^eBFD;$F8dHu#AOxvW4QdOw;p(Cu?5ifH2=57t1N`AC~B1ptrWvEU4x#9;L2xWnX8 zKWV`h40`C`QyemZhBOjk`-V=R%&Osz^L`TtfeSL96Nj8>cCzX3f%AGsGq*`0AuI8% z@e`MVma3-~Y=cHrRz`DHmR<%C3xm$yAADKe3i^NuUWNp(%N;C;1aF!JzrY7?2M5Q` zJT?rki1Q5onC9w=0`I>J{vt4+Xg_m0Wo=(^@Tp`a1Qsnc6Z}Ok208QvM+IC)vjxCx zrp9O!v#*rDi&n5H^BIfeR;a8l34H^cs`tNi-?-P-tD$ z!_8ulWPRa&G#+E9|F-d-_P0E>Fy+TiDz3--!C}dmP`ZmGHU4t-3-pp|HOTO2;gfH| z0I<}f!#ohk;xb6c%7Tju5Gdrp+kMl$-Wgqd%dzDa4f=9^b?fSfTQum)_3Znr*7)JZ z5Moa}EB1|kA%u&xlsB2ktyXh>SCK3%B#9orOi$-UC1~;4xvHsoqN4kvv!~}4?H}*x zT?h(T3c2+Yu#z?}v>WF)6GCSlk1mY=p;eOX&4zI5-f0Q$}>@@J&p$o0t9`}b;5 z3Cp&T&#pmZcGz4q)|?`j6RC8se#W_;Q1n^jEi&9{PJgx2c<>XjG4}q~6S_BFVVC^R zjkEBMCM0rIM4r8uUrD+{S|SI=p$jhSN&KKjuhwL2V0MYV53dZuwAVIyEI?1&q;gR# zj)+93z0b?~`S0!|KL0>_zy3}-xgU@Gmtq0^k1gFI`ls_+@%w zfuAlge3nndKuKOZP&OG~Dtd&-cup~Jmnujhv58wX`W_06rSM$1vA=s*q3w^>k7rju z62WUEG5#fKi%lwbIdA?5hWdPkc^A?8CD#SJ}OQwJ$q8 zmlPrK3rP?u`uj6MJ$O$XV6DvTcAgO&7aFT>1X(kb2imwJfK4XH3-UV#Y*^Cwy+@As z1q(cN0cFJ)djOtj9ep1}_DM_qnXh94(9_}^jy5;cr^HO;3F80*q~nDI^SCp2r2JJa z-B|TyE)y0e1^XhKSUdd{9eJb#Wh#-V;_HJN0xb5Z5abu# zo|Dv-huuLCnZ64Scxk37|vHF$vO23&s-Xs~2U; zZ4`dJk=Nr=V1@%Rv{Qt({iuCrpy?7{9)dbZ_r`|Gu-molE4ATY>>$dX(~HN9ElTEC-~s71Nt$6r6Odf!kO zYfJhej${U=zdbXXY8`MI_caLL$`3d|j@|N~!YB$P4`${d22j{)6$Y?0E{1s{Yp}+B z_J$yse<^wD5yEELx|A5&rM{r4(hL(vJlQh07X426s(QL-$!9qg|TtW zJ2#O)Ry>;mz-h<%xJ(QPd-8h)+#7tG)7SHQT8yg0SuN-119}WBi{|^kZvQVtqyRZY zU%A1Md&&iHEo(&EG7${Jz2XSCo#;q~@#y8se&#U--ba7X+iDUc)3?&hO0Dx$^lG#N z)GA#-f|Rnggxuv&)XO@d zoy)L#M!aq?Y;LVl8${^<9vSGNzM-XMka6hAk<1{k-69^bN#C6l)-Lo-RiRxL2LHPK6Sg&TxoZ^7LjSE& zLiPpUqS}m|7DvI!l_5szCjoIg@3fmLSq8Q3LW`{i?B#)>=m#hOmz*!N9-eSnkI2d7 zbo+&K0hrsoZg_P=4e6q}4Q15GlnuQ*Axby&V0E)X9YT8gm%BNSq4ANR^^YeDMLqyq zG+71xwi|GhY|OJSqNkr}Xc~p75XhMq-{vq%N&$24nUGX6LMM}bb>hY)==?SHI^tkp zW7CnGUt-@lkQnbr12STmP<^D23=HxJO_C>l;}F3@ZGN;38_G(W-h8W17n#q>-*NX+ zu>W;*0eTMLRt@Tdi}0O40^*v>&a8zLn_14+4>50vkN1W6Y1dgc+z+381=?>*ubcIw zhk%KL`8s!)oom%8!xc3)fICSSUxqPa0787e(&q;n^~A%I6HW~bi^fXv~@SIi4 zy)eluu=%Q+`<(~{r~<`3gW_xvv zcG4PeHS)|1Pz2_*dzr>(@amM!rm>SwUC8R~@cwPO^>h70Yh3erLde@$L_v>r;yy}9 z_EufIx8tTDjr$UKy-)AipJLDoV)i!Bg{8`P6Iax<)uRm3Su(v7Dv=Z4zo3$9WOfv? z9L!*YMVW@=Xt{7faQ%>TevPyDcjvc)PI42)+;iTqqkfsYrzw%avb$L!%G0jo73fq( z(p#&F*)V}l(etJy8l&f4oO|0*8abO_-Y8<(NT*c!AMVSkaz;^Xm|MawMlr7pokayS zy7R|K!-zur4u;`|SH%s}6XxL0k7;5dq{-83QttMK_Z!iDmp}KteHq_b_bA%`%A<8S z9rq|F&n0HFaP%2O-~^)UgAA}wA1dOXB}$j1vbrRXzv1le)Qvi=af4u?()qc&KJ^Fp zj|-=+bvqYW52Rda*;w|Jpv~c^FqTRuAth2wMcg5ng|sAenX2 zp@~fy6!AbZ>qEt|Sz(uzHN#T?VBxvFB3D=~88eSJ&l!jvfIEHgMLujInN_b>H7QVPc@D+CW-r0mkUL!M0^`b*%4 z!Fgwvr?7GWt@Sp-_Z&40A4A5n`d-@=AViwhnb}Q%~})Q(FV__1`7y* zG;v}lbDLhX{>2Zobms-1Bc-&dh%he`A;una(uW%NRO^W->f*TCHAd1bq>B z9}M{Ni91}CO6ad&kJf{4y?$+Rdc6Vz3d6fYP45rSj;;Y$omcp10TNdmFjD4fgy_|e zti+9c`@5CJdf6NuRSQPX-ch#;i}SNo2r)t-+L3F;7`GU)1xHB<9chyhaoD-aVr`Df zwc|Lj1ZG4;+4-BPj->Jxra?3gOOtGmegA^i=O|g%b$Ioc57(*PXBdstg6tcfMYEYX z`x0a5F)?Dk+Ct%2NeLGX(f7(J0JD5Bih{j<3c!8)pb$R9Bm%n5k+;F`#&aX#;6D9V zQHn&46~qNEWx95+pG{|}SjB#rQ&XD@5447BGa^PfPx=4q4twK)FNn)3Cb7qY5Hx;R z?KRyE5nGRoy2An{+MJOLENMb|D@8wm?^z3CU)6a?sS-C?DV*Vit-DxO zzGztioVx6AB!ngw|k(a(^D{DY7VPU3qNSB<#g zM=&8*i&0@IA+Kz04iQgs+^FzNTMlac(N!Ue!>GEWt}j8G13RWbJR1&sSbj+x|08ta z$D!3P{uL=biZlWu7C!XtE_Tm;RHXkrAcFH*DnOw?hZW|DK~$)pXmfMNa;fHReD}E1 zS$3y?{qBOhavwxsN6^y?=#4hy2#J@NbCsNN{lW@HC-JCjx$5S|h~lGBHd`Ou%MDLJ zW}igNeTKztCNBw8;kP#L(z$!}#JpfhhDtx0% z*l6|2Rfp5_J*Hb&0FD)1NpJH^fk+5aUJ_q$(bw1IEq- zIO&o?nPy)+eD^j-ZS*Ja7^zxyj5ecQv=DX-t$9{?i%Trd|0CJm*D(&q7>_&li}7*+ zXGiR2TkW7XBpz8&^wQq-@UIy}j-1|-{J2&%Q@IF%O6d54-a%dk-`!EjgQ$>}iV*l> zXdz~yBLBx;>+{-_8`Y(0acOCE>Gkx=a=f}oo%5YrWG$&mJ%4u2dV9Y52#Vn0v^yRU zbIqW>CQ7Q-7G70Ota5y-d~-^f<63RAR6}?DNXjR}Y=5F{dn$q*A0C4 z?S`H->E6}t5n@1ZbwgkCXWhupdSvM*V`mNhFB@<@4SGY;13L|anGFLzkii4#A!uXg z4{5#Ah9Lo&kt3;L7viv3^xvhR1kggcDR3N*f#f~CJVw4~WG*#Uj1+yK^=Xd_|Ean8ka0RPs*ZlCQkxewb;^XgvbJWWUI37g9SLO7tD&*bHs>bcmw1ahVf?ix(8^-@s0D zRZd0}YNf13+B&YrN`@tfIJGwz$xY7f8W3^9;<2bmK%v$V+eIg7CkN3dinUVmc_ktG z_ByN!K1oJWQlEL4UOndrca$E`D8p-+U;$j*NXKysdJ05l&-yT#dn^e+zgSzBIQA%jE94k_QbSj`@FL?&xzZjj`~idHJ&x9CndDWZ*)IxU^G z+BdXaV;(?;@DK31$8m5{osP{naoS1N|Hs&!ze5%O|Kp$a7-ojS*u~h_GIk=2eXX&T zy;1fhLz|GsFpM?(p0#XILn>Pu`;tnf>UE0(v zDNYKZfI{VK4ud?66#SD_%{ZMBu&HAvt;(S zHKy+n>SSUj+oFuNO~*|Go`J}AT5|h3D0zrx=7E+}D>dZr)lg)loj~NuLkJ4iBdw!m z>~!fcHi^e2Zh9Ujho?G_(7UcZ1)xI&PDc*gLy~}9>D#31C8*`Lkt=t@^iA2Pe^TZy zr^&(6XWPn>*fMMqGQ<-C*k*H72G5B)tD%g!m=qKSnr-uwGP@1_X)HJaLNyA;_Zg{) z@M3l!<(0&v_upm2B%^jgmGQcC!vwnePm|Vb{DLMa2l9C`{nA^zMgb<*7j=z4?3I1} zZT~g7@n1Uu)^U+ZDU5)$d_-ZkBM*I$cvg>xG|FYxK~G~ z-MPS-p7W>SE4ZWf4*_*eFc-#Cs@o-=aPLj$^JvrZm)aGbs+u3*7UFL+E?sgjj+Z01 zqCDar{4l%lD-Lv}Rlb+W|I=(hq+jzx;stHJdm5b%Si-_bEek!x&t+W=sRMGis3@`q z2LEF0Wn0%`*X;e0CpY>-<51yC-a69pbl1Lc!FZJ|g?vw9gRF^jDUS!nR1;xhncP_- zZJ^q?KWq4Jp#OxQ9i&DMT3~aaJ1w?tMOXju^y-V~(>l4@s9k2i$hO~AgU^d?AL6?Q zgJPf58f>Hvt>hFf4_)0@?7lkoukda6=l9)T7k?a6f3R-x@2kMUx>6d)P0UxN+Hcy1 zFYf=#)qGI8{ouzL!x{L~dpl~k{MAv zJ_Qm)-g0J)U1d9UTC_9yNT*@FYrHt99~b-y!LJdCk?1+EqMx?KTC(q@7JG1qNRN3a zaY1FSZ0~aWSY}CCEPdvMTR*c{`x0;ic)_0D}HV%`;hIwvlE%Orm()N9{ekmx{ zS&3J)6>BAbkq*lFO;QX9eO=+u9mTEuw)W;qf9Lf_ALn2H3R~(+7SN6ry%zD&myJC^ z7h+ydW~0%@!+jGl7vs(QNz#MyXglF1nIBur7Fe!xquqkszWsEiPa4XkIrc z>bIe8L6<}<-|mH`uHSroaNyI$JtTU0E^DZlKYF9S4yQLFV4f0bDHy!*CSioDafYbe zGOT`I>!R#8qrQCv^_+pBzK$`kU({Us;CzTE?{kf}9y!ldZ`@Y2td~S43)zuhhrsZe z>|f~yH_7Nx&f1NX3Z>`Xaaq(Vgnf>r!In{q7FvCZL;4-t%+DhPb+$Nz`2l)Ww+aRSCQ8=Yd{* zz0E+=O*;djkGb>9k5zB1hz1Iu%_w?-^P^W5;X(tt*Q9)hHQ9`*z1-%4kFsS^t`sys4;Rb+e0g#pw!bwXUcUeRxuN*q?YC#k z|Nfl6A^vaoV|n?%- zQ*i0&H65o4O|Sr6d0x~NOo9Zq5@C4w_LO00_m#XkT&Ii$)Gp9ea+gqn@{a`HVUlzw zB)TuOnTY?x(6c{#W0GA=rGx|M7Ea4NMV3!w4Y*V6u|%FbE@nzzS+Y+3%lz$AW;X*~ zrFvtf_zbz%#o=0}E$==6u? z#PuLJmXTaz6}iKf34%OXC~9jJ_7h@IE+dOhn2;4TTg}wX=s`^59W)!Q@^ovy-6Dj9 zmVVUt*Zhl1bgrSRceEF%X1R{9Z6*u%7RI49bhAfD-?3Pmo2iA|5ZtymAdY#X@Vs(_ z%hDSV!vOMr80ubbFO-l8xjp7Bwq2KWVlpxg{Tqi*i^SfR{A+97!-`9DUO7HJB0xYN zxH-LcH9;8S*)%g%lP@Rws1+Y_k~$j6@@)uSRZKCPTAzK;TR*jA;TqlE9;#(kgMtXiquUi}YhPWWYB zxLwW9_D@rdbuP}CC+vq${YVqA51(D=`8G<)U1DIJ(80QCmLBHFnYY(dDm+W^H^25kn=<-ITA3W%CSw zW&-a>gWTpQ*4yHEZYfL-nqrhrrX&e-94o+@^)3Yy)>|gfh4s`EKPh17$cxE>4FAJ)KnJ}6mBeRAX7 z_M2W+DjvTKmuNUwqwV=QH?CKrwnMVsZvOMl^pMoXD?5#WPoBCh9tcmCWM95_ZGQds z#>`|7|IbsD6Cvlt-DL*Mf3_6;9q=<0nW5WXX|2D$5qL&qw!8bvqxS3Tp;txbn*LpB z8~M8uULZ0rVsN!%`pDGf$07^x>sPzhLPxGmiY!KTUG3gGGIafy2rFR!DwADoFit>p z$;WoLH|aV#(Xcd`GikR!RX#lB>|7H6(C%PxU3kWgIhq*T-tZ~;i0pFF1X+u{QT4ir z{HGq&V@Z2s&XyNT7VST2PhR^J(S5Pp@ZO4{K-5yA*Y+`Be$}d0d$@2pI(&ZJTbqAs!0U=<$&pQY>FAm1do>RqANf+J9~C{f7F*pu zdE_gsBYI)4yZp(oBU{6J(Jc0_{k`Jd5%CuL%PPZ>L%e^#WlfeW%beY-CN6w0Dk%7* zE3P$mRcu>zFJ{&1X7=my1)pk*zn^bCkD8RS*|}fv*TMhnp9iyIzl_KJewoBZFXSxz zddhZvi}v!`vVh@_A&c0Lc~AF;wHNm?l47?746lC{U-&&K7xVKWSLBzgO9r zV>=2K_tTMx|KeSV|G~RJAX`uo^fEZ{|08!P{ukytRJqjkt+b77b^jlO>%^hKW$tSD zUxVwA-ZHauwLIl+?cjOnZkalqw{<>uC~p04ZY$^z+HyM=@;|HQMEvZ+{nKgd<(-SQg7p>TEk zP`IjP+-Ybzw5|RFTQ#@;zp&NAc4m85-;@6WR?NObnQC-!cZI{}(@X2v7YFGxh6`nfm+x7nou@phQsP6CzxY%1Bv$ zPY;YN9qB^Lr6CCkB&1Uq(lLUMj~=0nQpIIQ_+kXL_=LPA=)Qg!A#FiSK!g-OQdA2Q zkI~8-92y=OeKwZhQciQsc|Ji4dOI~eGdnlGu*h0ke*fX)rl$^{l^>qr-iQ6g$bxegLod7^J@H??igEr~*)2}%bU|cV z=3x<;kR}{fqVP#(EF3-@K}GON0}-bQLAD96P;o;zUfD=mzKI_=3+@}Ba&e@6-s9Wq zo4aRUc0c(OeiWA$scU(M9dYz`b6W&_bpO<#gn;>lu-vRTeS!{?CUO)%o@nVhEa5B= zVY`G4Nbq5R5MS-p;2NJU%P-TV^8=QXPk>EfT%yEYFxR4IKMMM54%*8{h3O!!iQJPI z5=mAD^+=1@Z37&dZnZ}aB&>3i&e2bqD}2m#I&Jk)q;9|E87_cKk}_TC;x@NG$ZVg$ z1toy}WQcf1P2R^+ww2OL?*dnDg|x@f3fR=Pk^C1{2LS%ZEQO5HMA?Sbsx++>w4luv zqmPH<+s*()Vt6$`i+uMT4H#D9;A9R;7sJPzP`eHBWzsX$p zx_({`zRv`dHW>Ybt{ct6vUfLH-r?6b9*moJe!leuf5pCxy@{{hNd%qocORu4kXwzh{u zdtepgpc` zUcNIi0u}$lDLm_vi;M)HDTa&BR>1I|w;bC$Y<-y4R_Q z)LRoK^&Kekc&|toPVR&c>NYpg3VacC9hlTf-^?0$5Ptv<-4BR6{dA@6u#byX--md+xa~+%qb3n5YFxv4?Sn3SCR5FfBXm%6K8zNAw6i~)zgC_vI|(W zVv?f`l@L&gnNfo7ei(;b(_upL2w=1&xXVsd5~kbFE$BfIR4`4lUg9%P9*O$^f;_`}Sv8TewvRp8S|!-DVx~U&>dJ-IYTVIJ7ADpXvKg(n<#!gX97kVwH?`iu56sw{ zw|;Z`d25Xhe8%qL=$n$w)>#<@z*)g+oFS054dCg3Q zw#N=Se9K>SfpOZK+IK$~6yntMOS)J1ba{rRg^z&J(e8%629&RoE*^Qxp5sNm+;=6@ z=`EKKI)B-WND1^DC_ALoTf39pzf)O6HbhOMIqBh1y)X>4=Z*vil1y=AR8}^llSPS< z63qeb89JHyRk7$0?NaxdQxWMHWfmbP*Cri`=0w%iUC_)uqx>m5o*_68sy(jsa-Ea< zIH<12tsx7nGD?v7nTp`1R?MmCFQE)s;Hz&*FyYLT7&j(F-~z4?gHX9ttt4~MG^UiH z(@N-qTsIN9eHV>9ADQum4|em#RN8NzDs9ZG1rDA#_5vdcyoF?S^g>pu=kQgqKqd!} zM$!MM`qlJhs`>T{!V+1hppW~6ns)Bo!lsit+J$ViP?!~m+A^YeQOA5UaCB$~Ojj8L zm}vBJ>kjiIe8?*oT`gGTS-LOtCr2!qRpCy**V8mp@!*7sXuH58=E$>QPb84e(KP%5 z;k0-1hG66({B}<|Rq(LpEsgkoWh*{R`6Xh{qDmWEZGmwY znzIXHL^`KmK}3&-YSga@UI4w(_6_bJ@y`1h-ya;BWnYvV1dYFs+_q;l#1CleYrY}>z7LJ+s~M=+cREtHE5!3xZ^lJYu6X^pd+Kk< zxf@rX6-%JnhMovDbSC06!J@u`(8U38qT*rPpeub`FS~qG;YsZF85@%yJ#oMsFNCvA zJFoD&4Y$`_RKReHYJ{p)~KtvGvkhpa`#`XtHN|0?m zdn614BQRt(lVHx@V;Wb~!$>eJEB0^--<%XRNQ7>(8AssYn=7zE27Hr^2LOTG2<*QK zZqUZz1k4S&X7J`?s3-!|e;YK z8wXs+VWUa1PI#CTULXVym=WM7GtY+LZ-DSX*cRY7?iMi)xM1Kz0s!t6@JY( zf%6e(y>JLWT$&n!&1?K1mPqDqt5xs?!Ob(_!4W|35MU2VUyq{aHAOc@^d`?iNCUZcoPeVQwyHBfQ38&cx$& zbtyKgz)~FC4rC0OjCCe^KZ{IpWx@QIfH&D{R_?MlQB%z|d$a&>rlh{k0|H#2ljQV^ zl|biIs=F%S@hWA^@?`oHO*j4~oB?gR0~ixQka3tj2=u27U2KW)t^*r7KsXB_R8mR= z3+}xdi_er2XHmE@yn3uytWoNYYVxK(XkMPpj(lTN4kRqkcCqL%rz#)Mq7Ya&Ksba4 z<)8pU27|^y5iHo|&PEepa)2l7DRd9h#WZNZr zjsgc^3eGlvj zj78beE{$0$2p24r1A%xbiJKPG^6lJOOLY$%hzEatVK`QCDsKi<*?p(b%{vRU1x6!4 z#Xc!vTX7H~E#UNEwJ#1_G74 zeXjQ$j}^#-+`R@4&xHIE0Eg<9zAsGFo{8n)u87$M$F9``#8>DVt8)`UoE_Lda+TBg z1kN@v#=AD6f{MkI?IhK!A&Pb;p&~@6AvLjL_aGn6k}52|aZw2LG^yVIaEO+qeb=?T zOOfsLcx-QVA(eFhRD)FzJ~`W}2t+F4vWf!{q0SFrBA}Fr!zboS169OS>n5`T5u3F% zbR;N_T1gug_WewkIuG-xN4Y0cr^#hNxU8TR=qYhv~#?zk!kVvi!&f>Q>pe zwR%4gn-c?EBF_f41|=gv^wk!(o_k-STEL1R=lJ?iS%=S$(M=unR6@d73i`$8!_x-{ zAXf9>D-QfqlJ*`@DfI#bxB}^*q)d^`yY5y5D|yc%Kf6c@lLZ2i@~KAo9JoS|(W3|^ z<4?f-7~Qr_Hd*r2eQQNF+v79@JCui2fDEQli4;`utqAgMHBt-WZsFxm#l63!q)fnx z(NX41Z#H7n9KK+)qxC9BXUlr4SYho=Jw&#Rt^~QvuH*rgm5ji&1?yfH>nzDvVx#FH z=&ALj*RjT|R^n`|KkI&z=8e;{Wv(R+?l#?25TI!UzROsz5#>*#Z%yAyM>u+9ZB+t zKB2yNd>=xz`AlcQplM@oXROe1gq9L)Z=`Zs1HgHwoWLZhMHH^_x zY7>}6R&=-k85~$a<;ElQ*W0y}JM_BxtjA;Dkjt`@S*c;H!F7W|IV6QDev8{I)0AXy=6GiQc$ivg(dB9vt-?eA$X*W)y zKyJgptjJIVKH2|I>Qf6u$~CKyt!GZ-qmZr9@VZuS<>5-}GD51TVq2Mml71NZM%r9o zbR+06Jux@rQGRJ{ukF~+t`UyX;qp0VNO+I-++fTU%m&nq^8m^$!4BilvViL3hx9Rx#xoVrO)3W%k2n8mR!akvo7@4lH z*D2BTgyK|-eH1_h44ij-7zch~6f$s+@M0k7MLNfEI1z+ieeqTF<#S@GGY;YZ_rU$3 z;*&$Z)Us&;&Qa@E0(5f>L5T3Mt#_6z*h*kuJQ+A~1U_a3=>Me{9+|)%83v7a3!tBd zQ4*6HsJu^rO$)F!ZdT$1BJ3K-p8~gtdM#=s(Wmg%X+E|XTT$A@R1Lj6TLED8d+gfz zAeoP&^hR}G$4(P~$mv+Nt>}Qjv>12IG2J2d4d90|jms4w^1I*-ZuZOM;ZDih>OVI| z=3r%0u`fJc-e@oOc|O#?MiF-bk+)uL$`#L+0yFEeo53wkT^-Anla-BVcUy!PKAC#` zhJ9SCjA;q(i-Vd0W8Zud+*SV23wN=NPyu00;&|Uab0vZ-T>i@nVgoUBs?*# zuw6eT42~%P;P|nUWw?mZ18)6fxTq55(C)($^D}Klh{FtZQ z{5^d0pUzGTo1*1YbTJQ`10Jg128}W}un;d-C&?$u5fkMoi9u7ps=xmd%-daLP}cua zxaIe97JqX4?k(f4m)=y&eR<(Z*r_NsHwUl1T9s4v&Qf>zevBCbLcz!GoU*T2^m=j! zc*^I|mnZ0PTIKOqUSE)V>nSu>)#g_t0R0v1Lo}E%!ajKE`EWPo!Q}7DS%4cEzFTDU z@GN@}BWsilwA|zjWWqzp!1I^r&u2qCGsjQ#_)kCdoMM1_3|0CTd7nNwP-Z~|0fegZ znFv~95jK7I0KW<&Fq2oVf!- zM{{B3lKjq=McI}uSxW9O8^!qEs*$@IQ&TP|EoJ9=$6+V_?;1#yQ0y6_k+ttR{K%l= zuGjQnzHx8hg-*9j`UiVyBBK11EJuI}=SPVOX1#$>(fmk+jOVjQ(#%I>^qsWSlmQnL zeD;XKBk6`x#l!G%Q)8>=xss0Wu#h)!+iWf8Q6j+@@r+0D{s)Syv1^u)ym?ijmBxAY z0vY?)g0His*$a#vH!`#id;nyTOvB#q=WWyUMQx`vo+Ew1NfkmnBQc){Iu++IaH~|w{i91wmD|b9*`2&wjhY1)q_xfKSYJ}yVDy7K_5&gpS_R;EOtyBSs6Q5*E#g`@ zRC;mZR@MMdvILJ4cUKp}%>LI>qNO19vOQhc`8F6X=-cql-N{Pr%!or0BMac?gf)*k zC2fJgk+=jL+W}Ij3o-~fuj)oeU)_^iyItR9R)6xZ=WqMl-Mdx*QWMtG%Sjgf&90_A zH9kO5mzJOhnRhWEsK6KpsFvyn-$|nKZl>vd`b1FtU1ij@VU%(gt{5OHoK4VMxaaDGZBGSPa`cZ{k>YRY9Ch6UcKkzZPsVNqANO{;CqZVKH z!9m0ntz0)^i_(38VWW|Zl-V8;J{0y#_>?}37pfB5Zm`^i2_m1FF=7Tql%>Mo1*3Kp zhYtiv4AFj}mjPNz9r2>V*_I(F`Cx1)li0^|7<0Bm2+5VT=+Yc>zh951ABRd-y`#9k zIki}Nbf|fga!=E9EGl_$CQEPj_b`O&&xTE!j8HF4@Nyh>a|n znTiYVdMimE7%_|OVNrVzF-NNBFYvrJCjz&a?{ zV_W*Z+jNnwMO4NUB{Cck{3Dgo5f$^5L0hFec_|WM^z@)*jNwx|IpIHhf}d>#4zRy+ z)7ThbGljC;Zoyn6ka7+zm|*{)bD~1_%s5!`Lbd^a9U$qlHQ?F8gz$K!!mGaxU>P4X za9yk@#SJ+4ggw3Sxsgg44ra*_o&(;iaMIYGiB4F4#4+j}n^fGRbevA7W4@6r`rpBy z79Nvss3c#tukIL>OZwi_aOO@5tc<7G!ijhfgP~9G@Pm@zI=3-Gf;J*)nByijU$U}i zaMEm&Bd=wi0b1j6+>v11BB_TrlOgtnlZMsBpe|l@Jm<7!PgkTs+@nOyB&R5FMdCA+ zj9~%ORt(kzC683sg+1bUHFApjo#-NOcAX=)ONn((5U-xVwXlMGdf>!}_3aYJAe&*l zgG^wsF^-+9M@`CS2|KXwW5anT|I`y%Krb~z)$HTr>pmF%yT~FreR+ZPYgF{QdQC1! z+DM}dEKp8|YFk`}pFcuPR1#tF4Kk^l6R)G#f)@m)F)*Po3D;3Q&v-vb<@!50R=L4u zDUEM|qfP{CiM5a50@tl{|xNvP2df{bJ16##i+^tnyvJcbBJU9ZisJz5(ip|_+ZY5a${1mnea<|bDnS4 znyV4Y&Nkyc_*HuQuM<0@KISKhn!t0KLy5yvstRPT8p4m?S8H}A@yQ&)Q^`(l?mW)V2lb;ES zcs*+=TiuY}xH}|bnb)ArX!x){MOBE5;{MB8_KDX+6@9_8*2Jlr;nf2rQ`EM@-2n%m47c5tb54S`CODU5 z-33*Cjx)Kkoh=4>f`cd{gkjKUgoyS#rF>Cip?jH?qfw$hTI0efet;h5-rYG4t|J;kc+cRdʲelZ9066P%t#w5{gJ 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..dc1ddff --- /dev/null +++ b/index.html @@ -0,0 +1,17 @@ + + + + + + + + + Portal + + + +

+ + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..5103447 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7160 @@ +{ + "name": "stalwart-webui", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "stalwart-webui", + "version": "0.0.0", + "dependencies": { + "@radix-ui/react-alert-dialog": "^1.1.15", + "@radix-ui/react-checkbox": "^1.3.3", + "@radix-ui/react-collapsible": "^1.1.12", + "@radix-ui/react-dialog": "^1.1.15", + "@radix-ui/react-dropdown-menu": "^2.1.16", + "@radix-ui/react-label": "^2.1.8", + "@radix-ui/react-popover": "^1.1.15", + "@radix-ui/react-scroll-area": "^1.2.10", + "@radix-ui/react-select": "^2.2.6", + "@radix-ui/react-separator": "^1.1.8", + "@radix-ui/react-slot": "^1.2.4", + "@radix-ui/react-switch": "^1.2.6", + "@radix-ui/react-tabs": "^1.1.13", + "@radix-ui/react-tooltip": "^1.2.8", + "@types/qrcode": "^1.5.6", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "^1.1.1", + "i18next": "^26.0.4", + "lucide-react": "^1.8.0", + "otpauth": "^9.5.0", + "qrcode": "^1.5.4", + "react": "^19.2.4", + "react-dom": "^19.2.4", + "react-i18next": "^17.0.2", + "react-markdown": "^10.1.0", + "react-router-dom": "^7.14.0", + "recharts": "^3.8.1", + "tailwind-merge": "^3.5.0", + "zustand": "^5.0.12" + }, + "devDependencies": { + "@eslint/js": "^9.39.4", + "@tailwindcss/vite": "^4.2.2", + "@types/node": "^24.12.2", + "@types/react": "^19.2.14", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^6.0.1", + "eslint": "^9.39.4", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.5.2", + "globals": "^17.4.0", + "prettier": "^3.8.2", + "tailwindcss": "^4.2.2", + "typescript": "~6.0.2", + "typescript-eslint": "^8.58.0", + "vite": "^8.0.4", + "vitest": "^4.1.4" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.2.tgz", + "integrity": "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.2.tgz", + "integrity": "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.14.0", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.5", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz", + "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz", + "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.5", + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.8.tgz", + "integrity": "sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.6" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz", + "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", + "license": "MIT" + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.3.tgz", + "integrity": "sha512-xK9sGVbJWYb08+mTJt3/YV24WxvxpXcXtP6B172paPZ+Ts69Re9dAr7lKwJoeIx8OoeuimEiRZ7umkiUVClmmQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, + "node_modules/@noble/hashes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-2.0.1.tgz", + "integrity": "sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==", + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.124.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.124.0.tgz", + "integrity": "sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-alert-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.15.tgz", + "integrity": "sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dialog": "1.1.15", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-alert-dialog/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz", + "integrity": "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.12.tgz", + "integrity": "sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", + "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.16.tgz", + "integrity": "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.8.tgz", + "integrity": "sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", + "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.16.tgz", + "integrity": "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.15.tgz", + "integrity": "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.10.tgz", + "integrity": "sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz", + "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-separator": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.8.tgz", + "integrity": "sha512-sDvqVY4itsKwwSMEe0jtKgfTh+72Sy3gPmQpjqcQneqQ4PFmr/1I0YA+2/puilhggCe2gJcx5EBAYFkWkdpa5g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.4.tgz", + "integrity": "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.4" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.4.tgz", + "integrity": "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.2.6.tgz", + "integrity": "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", + "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz", + "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", + "license": "MIT" + }, + "node_modules/@reduxjs/toolkit": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.11.2.tgz", + "integrity": "sha512-Kd6kAHTA6/nUpp8mySPqj3en3dm0tdMIgbttnQ1xFMVpufoj+ADi8pXLBsd4xzTRHQa7t/Jv8W5UnCuW4kuWMQ==", + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@standard-schema/utils": "^0.3.0", + "immer": "^11.0.0", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, + "node_modules/@reduxjs/toolkit/node_modules/immer": { + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/immer/-/immer-11.1.4.tgz", + "integrity": "sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.15.tgz", + "integrity": "sha512-YYe6aWruPZDtHNpwu7+qAHEMbQ/yRl6atqb/AhznLTnD3UY99Q1jE7ihLSahNWkF4EqRPVC4SiR4O0UkLK02tA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.15.tgz", + "integrity": "sha512-oArR/ig8wNTPYsXL+Mzhs0oxhxfuHRfG7Ikw7jXsw8mYOtk71W0OkF2VEVh699pdmzjPQsTjlD1JIOoHkLP1Fg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.15.tgz", + "integrity": "sha512-YzeVqOqjPYvUbJSWJ4EDL8ahbmsIXQpgL3JVipmN+MX0XnXMeWomLN3Fb+nwCmP/jfyqte5I3XRSm7OfQrbyxw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.15.tgz", + "integrity": "sha512-9Erhx956jeQ0nNTyif1+QWAXDRD38ZNjr//bSHrt6wDwB+QkAfl2q6Mn1k6OBPerznjRmbM10lgRb1Pli4xZPw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.15.tgz", + "integrity": "sha512-cVwk0w8QbZJGTnP/AHQBs5yNwmpgGYStL88t4UIaqcvYJWBfS0s3oqVLZPwsPU6M0zlW4GqjP0Zq5MnAGwFeGA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.15.tgz", + "integrity": "sha512-eBZ/u8iAK9SoHGanqe/jrPnY0JvBN6iXbVOsbO38mbz+ZJsaobExAm1Iu+rxa4S1l2FjG0qEZn4Rc6X8n+9M+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.15.tgz", + "integrity": "sha512-ZvRYMGrAklV9PEkgt4LQM6MjQX2P58HPAuecwYObY2DhS2t35R0I810bKi0wmaYORt6m/2Sm+Z+nFgb0WhXNcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.15.tgz", + "integrity": "sha512-VDpgGBzgfg5hLg+uBpCLoFG5kVvEyafmfxGUV0UHLcL5irxAK7PKNeC2MwClgk6ZAiNhmo9FLhRYgvMmedLtnQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.15.tgz", + "integrity": "sha512-y1uXY3qQWCzcPgRJATPSOUP4tCemh4uBdY7e3EZbVwCJTY3gLJWnQABgeUetvED+bt1FQ01OeZwvhLS2bpNrAQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.15.tgz", + "integrity": "sha512-023bTPBod7J3Y/4fzAN6QtpkSABR0rigtrwaP+qSEabUh5zf6ELr9Nc7GujaROuPY3uwdSIXWrvhn1KxOvurWA==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.15.tgz", + "integrity": "sha512-witB2O0/hU4CgfOOKUoeFgQ4GktPi1eEbAhaLAIpgD6+ZnhcPkUtPsoKKHRzmOoWPZue46IThdSgdo4XneOLYw==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.15.tgz", + "integrity": "sha512-UCL68NJ0Ud5zRipXZE9dF5PmirzJE4E4BCIOOssEnM7wLDsxjc6Qb0sGDxTNRTP53I6MZpygyCpY8Aa8sPfKPg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.15.tgz", + "integrity": "sha512-ApLruZq/ig+nhaE7OJm4lDjayUnOHVUa77zGeqnqZ9pn0ovdVbbNPerVibLXDmWeUZXjIYIT8V3xkT58Rm9u5Q==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.9.2", + "@emnapi/runtime": "1.9.2", + "@napi-rs/wasm-runtime": "^1.1.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.15.tgz", + "integrity": "sha512-KmoUoU7HnN+Si5YWJigfTws1jz1bKBYDQKdbLspz0UaqjjFkddHsqorgiW1mxcAj88lYUE6NC/zJNwT+SloqtA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.15.tgz", + "integrity": "sha512-3P2A8L+x75qavWLe/Dll3EYBJLQmtkJN8rfh+U/eR3MqMgL/h98PhYI+JFfXuDPgPeCB7iZAKiqii5vqOvnA0g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.7", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.7.tgz", + "integrity": "sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" + }, + "node_modules/@standard-schema/utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", + "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", + "license": "MIT" + }, + "node_modules/@tailwindcss/node": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.2.tgz", + "integrity": "sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.19.0", + "jiti": "^2.6.1", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.2.2" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.2.2.tgz", + "integrity": "sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.2.2", + "@tailwindcss/oxide-darwin-arm64": "4.2.2", + "@tailwindcss/oxide-darwin-x64": "4.2.2", + "@tailwindcss/oxide-freebsd-x64": "4.2.2", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.2", + "@tailwindcss/oxide-linux-arm64-gnu": "4.2.2", + "@tailwindcss/oxide-linux-arm64-musl": "4.2.2", + "@tailwindcss/oxide-linux-x64-gnu": "4.2.2", + "@tailwindcss/oxide-linux-x64-musl": "4.2.2", + "@tailwindcss/oxide-wasm32-wasi": "4.2.2", + "@tailwindcss/oxide-win32-arm64-msvc": "4.2.2", + "@tailwindcss/oxide-win32-x64-msvc": "4.2.2" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.2.tgz", + "integrity": "sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.2.tgz", + "integrity": "sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.2.tgz", + "integrity": "sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.2.tgz", + "integrity": "sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.2.tgz", + "integrity": "sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.2.tgz", + "integrity": "sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.2.tgz", + "integrity": "sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.2.tgz", + "integrity": "sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.2.tgz", + "integrity": "sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.2.tgz", + "integrity": "sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.8.1", + "@emnapi/runtime": "^1.8.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.1", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.2.tgz", + "integrity": "sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.2.tgz", + "integrity": "sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.2.2.tgz", + "integrity": "sha512-mEiF5HO1QqCLXoNEfXVA1Tzo+cYsrqV7w9Juj2wdUFyW07JRenqMG225MvPwr3ZD9N1bFQj46X7r33iHxLUW0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.2.2", + "@tailwindcss/oxide": "4.2.2", + "tailwindcss": "4.2.2" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7 || ^8" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", + "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, + "node_modules/@types/debug": { + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.12.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.2.tgz", + "integrity": "sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/qrcode": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.6.tgz", + "integrity": "sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/react": { + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "devOptional": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "license": "MIT" + }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", + "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.1.tgz", + "integrity": "sha512-eSkwoemjo76bdXl2MYqtxg51HNwUSkWfODUOQ3PaTLZGh9uIWWFZIjyjaJnex7wXDu+TRx+ATsnSxdN9YWfRTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.58.1", + "@typescript-eslint/type-utils": "8.58.1", + "@typescript-eslint/utils": "8.58.1", + "@typescript-eslint/visitor-keys": "8.58.1", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.58.1", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.1.tgz", + "integrity": "sha512-gGkiNMPqerb2cJSVcruigx9eHBlLG14fSdPdqMoOcBfh+vvn4iCq2C8MzUB89PrxOXk0y3GZ1yIWb9aOzL93bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.58.1", + "@typescript-eslint/types": "8.58.1", + "@typescript-eslint/typescript-estree": "8.58.1", + "@typescript-eslint/visitor-keys": "8.58.1", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.1.tgz", + "integrity": "sha512-gfQ8fk6cxhtptek+/8ZIqw8YrRW5048Gug8Ts5IYcMLCw18iUgrZAEY/D7s4hkI0FxEfGakKuPK/XUMPzPxi5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.58.1", + "@typescript-eslint/types": "^8.58.1", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.1.tgz", + "integrity": "sha512-TPYUEqJK6avLcEjumWsIuTpuYODTTDAtoMdt8ZZa93uWMTX13Nb8L5leSje1NluammvU+oI3QRr5lLXPgihX3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.1", + "@typescript-eslint/visitor-keys": "8.58.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.1.tgz", + "integrity": "sha512-JAr2hOIct2Q+qk3G+8YFfqkqi7sC86uNryT+2i5HzMa2MPjw4qNFvtjnw1IiA1rP7QhNKVe21mSSLaSjwA1Olw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.1.tgz", + "integrity": "sha512-HUFxvTJVroT+0rXVJC7eD5zol6ID+Sn5npVPWoFuHGg9Ncq5Q4EYstqR+UOqaNRFXi5TYkpXXkLhoCHe3G0+7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.1", + "@typescript-eslint/typescript-estree": "8.58.1", + "@typescript-eslint/utils": "8.58.1", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.1.tgz", + "integrity": "sha512-io/dV5Aw5ezwzfPBBWLoT+5QfVtP8O7q4Kftjn5azJ88bYyp/ZMCsyW1lpKK46EXJcaYMZ1JtYj+s/7TdzmQMw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.1.tgz", + "integrity": "sha512-w4w7WR7GHOjqqPnvAYbazq+Y5oS68b9CzasGtnd6jIeOIeKUzYzupGTB2T4LTPSv4d+WPeccbxuneTFHYgAAWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.58.1", + "@typescript-eslint/tsconfig-utils": "8.58.1", + "@typescript-eslint/types": "8.58.1", + "@typescript-eslint/visitor-keys": "8.58.1", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.5" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.1.tgz", + "integrity": "sha512-Ln8R0tmWC7pTtLOzgJzYTXSCjJ9rDNHAqTaVONF4FEi2qwce8mD9iSOxOpLFFvWp/wBFlew0mjM1L1ihYWfBdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.58.1", + "@typescript-eslint/types": "8.58.1", + "@typescript-eslint/typescript-estree": "8.58.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.1.tgz", + "integrity": "sha512-y+vH7QE8ycjoa0bWciFg7OpFcipUuem1ujhrdLtq1gByKwfbC7bPeKsiny9e0urg93DqwGcHey+bGRKCnF1nZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.58.1", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@vitejs/plugin-react": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.1.tgz", + "integrity": "sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "1.0.0-rc.7" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", + "babel-plugin-react-compiler": "^1.0.0", + "vite": "^8.0.0" + }, + "peerDependenciesMeta": { + "@rolldown/plugin-babel": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + } + } + }, + "node_modules/@vitest/expect": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.4.tgz", + "integrity": "sha512-iPBpra+VDuXmBFI3FMKHSFXp3Gx5HfmSCE8X67Dn+bwephCnQCaB7qWK2ldHa+8ncN8hJU8VTMcxjPpyMkUjww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.1.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.1.4", + "@vitest/utils": "4.1.4", + "chai": "^6.2.2", + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.4.tgz", + "integrity": "sha512-R9HTZBhW6yCSGbGQnDnH3QHfJxokKN4KB+Yvk9Q1le7eQNYwiCyKxmLmurSpFy6BzJanSLuEUDrD+j97Q+ZLPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "4.1.4", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.4.tgz", + "integrity": "sha512-ddmDHU0gjEUyEVLxtZa7xamrpIefdEETu3nZjWtHeZX4QxqJ7tRxSteHVXJOcr8jhiLoGAhkK4WJ3WqBpjx42A==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.4.tgz", + "integrity": "sha512-xTp7VZ5aXP5ZJrn15UtJUWlx6qXLnGtF6jNxHepdPHpMfz/aVPx+htHtgcAL2mDXJgKhpoo2e9/hVJsIeFbytQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "4.1.4", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.4.tgz", + "integrity": "sha512-MCjCFgaS8aZz+m5nTcEcgk/xhWv0rEH4Yl53PPlMXOZ1/Ka2VcZU6CJ+MgYCZbcJvzGhQRjVrGQNZqkGPttIKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.1.4", + "@vitest/utils": "4.1.4", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.4.tgz", + "integrity": "sha512-XxNdAsKW7C+FLydqFJLb5KhJtl3PGCMmYwFRfhvIgxJvLSXhhVI1zM8f1qD3Zg7RCjTSzDVyct6sghs9UEgBEQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.4.tgz", + "integrity": "sha512-13QMT+eysM5uVGa1rG4kegGYNp6cnQcsTc67ELFbhNLQO+vgsygtYJx2khvdt4gVQqSSpC/KT5FZZxUpP3Oatw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.1.4", + "convert-source-map": "^2.0.0", + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.16", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.16.tgz", + "integrity": "sha512-Lyf3aK28zpsD1yQMiiHD4RvVb6UdMoo8xzG2XzFIfR9luPzOpcBlAsT/qfB1XWS1bxWT+UtE4WmQgsp297FYOA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001787", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001787.tgz", + "integrity": "sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chai": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/cmdk": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.1.1.tgz", + "integrity": "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "^1.1.1", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-id": "^1.1.0", + "@radix-ui/react-primitive": "^2.0.2" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "react-dom": "^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", + "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "license": "MIT" + }, + "node_modules/decode-named-character-reference": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz", + "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==", + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.334", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.334.tgz", + "integrity": "sha512-mgjZAz7Jyx1SRCwEpy9wefDS7GvNPazLthHg8eQMJ76wBdGQQDW33TCrUTvQ4wzpmOrv2zrFoD3oNufMdyMpog==", + "dev": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/enhanced-resolve": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-toolkit": { + "version": "1.45.1", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.45.1.tgz", + "integrity": "sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw==", + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks" + ] + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.2", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.5.2.tgz", + "integrity": "sha512-hmgTH57GfzoTFjVN0yBwTggnsVUF2tcqi7RJZHqi9lIezSs4eFyAMktA68YD4r5kNw1mxyY4dmkyoFDb3FIqrA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": "^9 || ^10" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, + "node_modules/expect-type": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz", + "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", + "license": "MIT", + "dependencies": { + "void-elements": "3.1.0" + } + }, + "node_modules/html-url-attributes": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.1.tgz", + "integrity": "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/i18next": { + "version": "26.0.4", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-26.0.4.tgz", + "integrity": "sha512-gXF7U9bfioXPLv7mw8Qt2nfO7vij5MyINvPgVv99pX3fL1Y01pw2mKBFrlYpRxRCl2wz3ISenj6VsMJT2isfuA==", + "funding": [ + { + "type": "individual", + "url": "https://www.locize.com/i18next" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + }, + { + "type": "individual", + "url": "https://www.locize.com" + } + ], + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.29.2" + }, + "peerDependencies": { + "typescript": "^5 || ^6" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immer": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.2.0.tgz", + "integrity": "sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", + "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==", + "license": "MIT" + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.8.0.tgz", + "integrity": "sha512-WuvlsjngSk7TnTBJ1hsCy3ql9V9VOdcPkd3PKcSmM34vJD8KG6molxz7m7zbYFgICwsanQWmJ13JlYs4Zp7Arw==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz", + "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.37", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", + "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", + "dev": true, + "license": "MIT" + }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/otpauth": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/otpauth/-/otpauth-9.5.0.tgz", + "integrity": "sha512-Ldhc6UYl4baR5toGr8nfKC+L/b8/RgHKoIixAebgoNGzUUCET02g04rMEZ2ZsPfeVQhMHcuaOgb28nwMr81zCA==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "2.0.1" + }, + "funding": { + "url": "https://github.com/hectorm/otpauth?sponsor=1" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/postcss": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.9.tgz", + "integrity": "sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.2.tgz", + "integrity": "sha512-8c3mgTe0ASwWAJK+78dpviD+A8EqhndQPUBpNUIPt6+xWlIigCwfN01lWr9MAede4uqXGTEKeQWTvzb3vjia0Q==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", + "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==", + "license": "MIT", + "dependencies": { + "dijkstrajs": "^1.0.1", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/react": { + "version": "19.2.5", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.5.tgz", + "integrity": "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.5", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.5.tgz", + "integrity": "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.5" + } + }, + "node_modules/react-i18next": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-17.0.2.tgz", + "integrity": "sha512-shBftH2vaTWK2Bsp7FiL+cevx3xFJlvFxmsDFQSrJc+6twHkP0tv/bGa01VVWzpreUVVwU+3Hev5iFqRg65RwA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.29.2", + "html-parse-stringify": "^3.0.1", + "use-sync-external-store": "^1.6.0" + }, + "peerDependencies": { + "i18next": ">= 26.0.1", + "react": ">= 16.8.0", + "typescript": "^5 || ^6" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/react-is": { + "version": "19.2.5", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.5.tgz", + "integrity": "sha512-Dn0t8IQhCmeIT3wu+Apm1/YVsJXsGWi6k4sPdnBIdqMVtHtv0IGi6dcpNpNkNac0zB2uUAqNX3MHzN8c+z2rwQ==", + "license": "MIT", + "peer": true + }, + "node_modules/react-markdown": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-10.1.0.tgz", + "integrity": "sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "html-url-attributes": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "unified": "^11.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=18", + "react": ">=18" + } + }, + "node_modules/react-redux": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", + "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", + "license": "MIT", + "dependencies": { + "@types/use-sync-external-store": "^0.0.6", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25 || ^19", + "react": "^18.0 || ^19", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", + "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-router": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.14.0.tgz", + "integrity": "sha512-m/xR9N4LQLmAS0ZhkY2nkPA1N7gQ5TUVa5n8TgANuDTARbn1gt+zLPXEm7W0XDTbrQ2AJSJKhoa6yx1D8BcpxQ==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.14.0.tgz", + "integrity": "sha512-2G3ajSVSZMEtmTjIklRWlNvo8wICEpLihfD/0YMDxbWK2UyP5EGfnoIn9AIQGnF3G/FX0MRbHXdFcD+rL1ZreQ==", + "license": "MIT", + "dependencies": { + "react-router": "7.14.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/recharts": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-3.8.1.tgz", + "integrity": "sha512-mwzmO1s9sFL0TduUpwndxCUNoXsBw3u3E/0+A+cLcrSfQitSG62L32N69GhqUrrT5qKcAE3pCGVINC6pqkBBQg==", + "license": "MIT", + "workspaces": [ + "www" + ], + "dependencies": { + "@reduxjs/toolkit": "^1.9.0 || 2.x.x", + "clsx": "^2.1.1", + "decimal.js-light": "^2.5.1", + "es-toolkit": "^1.39.3", + "eventemitter3": "^5.0.1", + "immer": "^10.1.1", + "react-redux": "8.x.x || 9.x.x", + "reselect": "5.1.1", + "tiny-invariant": "^1.3.3", + "use-sync-external-store": "^1.2.2", + "victory-vendor": "^37.0.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-is": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "license": "MIT" + }, + "node_modules/redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "license": "MIT", + "peerDependencies": { + "redux": "^5.0.0" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "license": "ISC" + }, + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "license": "MIT" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/rolldown": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.15.tgz", + "integrity": "sha512-Ff31guA5zT6WjnGp0SXw76X6hzGRk/OQq2hE+1lcDe+lJdHSgnSX6nK3erbONHyCbpSj9a9E+uX/OvytZoWp2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.124.0", + "@rolldown/pluginutils": "1.0.0-rc.15" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.0-rc.15", + "@rolldown/binding-darwin-arm64": "1.0.0-rc.15", + "@rolldown/binding-darwin-x64": "1.0.0-rc.15", + "@rolldown/binding-freebsd-x64": "1.0.0-rc.15", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.15", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.15", + "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.15", + "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.15", + "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.15", + "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.15", + "@rolldown/binding-linux-x64-musl": "1.0.0-rc.15", + "@rolldown/binding-openharmony-arm64": "1.0.0-rc.15", + "@rolldown/binding-wasm32-wasi": "1.0.0-rc.15", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.15", + "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.15" + } + }, + "node_modules/rolldown/node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.15", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.15.tgz", + "integrity": "sha512-UromN0peaE53IaBRe9W7CjrZgXl90fqGpK+mIZbA3qSTeYqg3pqpROBdIPvOG3F5ereDHNwoHBI2e50n1BDr1g==", + "dev": true, + "license": "MIT" + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.0.0.tgz", + "integrity": "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-to-js": { + "version": "1.1.21", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz", + "integrity": "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.14" + } + }, + "node_modules/style-to-object": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", + "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", + "license": "MIT", + "dependencies": { + "inline-style-parser": "0.2.7" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tailwind-merge": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.5.0.tgz", + "integrity": "sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.2.tgz", + "integrity": "sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", + "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.1.1.tgz", + "integrity": "sha512-VKS/ZaQhhkKFMANmAOhhXVoIfBXblQxGX1myCQ2faQrfmobMftXeJPcZGp0gS07ocvGJWDLZGyOZDadDBqYIJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyrainbow": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", + "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typescript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.2.tgz", + "integrity": "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.58.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.1.tgz", + "integrity": "sha512-gf6/oHChByg9HJvhMO1iBexJh12AqqTfnuxscMDOVqfJW3htsdRJI/GfPpHTTcyeB8cSTUY2JcZmVgoyPqcrDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.58.1", + "@typescript-eslint/parser": "8.58.1", + "@typescript-eslint/typescript-estree": "8.58.1", + "@typescript-eslint/utils": "8.58.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.1.tgz", + "integrity": "sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz", + "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.2.tgz", + "integrity": "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz", + "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/victory-vendor": { + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.6.tgz", + "integrity": "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==", + "license": "MIT AND ISC", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, + "node_modules/vite": { + "version": "8.0.8", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.8.tgz", + "integrity": "sha512-dbU7/iLVa8KZALJyLOBOQ88nOXtNG8vxKuOT4I2mD+Ya70KPceF4IAmDsmU0h1Qsn5bPrvsY9HJstCRh3hG6Uw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.8", + "rolldown": "1.0.0-rc.15", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.1.0", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vitest": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.4.tgz", + "integrity": "sha512-tFuJqTxKb8AvfyqMfnavXdzfy3h3sWZRWwfluGbkeR7n0HUev+FmNgZ8SDrRBTVrVCjgH5cA21qGbCffMNtWvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "4.1.4", + "@vitest/mocker": "4.1.4", + "@vitest/pretty-format": "4.1.4", + "@vitest/runner": "4.1.4", + "@vitest/snapshot": "4.1.4", + "@vitest/spy": "4.1.4", + "@vitest/utils": "4.1.4", + "es-module-lexer": "^2.0.0", + "expect-type": "^1.3.0", + "magic-string": "^0.30.21", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^4.0.0-rc.1", + "tinybench": "^2.9.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.1.0", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.1.4", + "@vitest/browser-preview": "4.1.4", + "@vitest/browser-webdriverio": "4.1.4", + "@vitest/coverage-istanbul": "4.1.4", + "@vitest/coverage-v8": "4.1.4", + "@vitest/ui": "4.1.4", + "happy-dom": "*", + "jsdom": "*", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { + "optional": true + }, + "@vitest/coverage-istanbul": { + "optional": true + }, + "@vitest/coverage-v8": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "vite": { + "optional": false + } + } + }, + "node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "license": "ISC" + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "license": "ISC" + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } + }, + "node_modules/zustand": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.12.tgz", + "integrity": "sha512-i77ae3aZq4dhMlRhJVCYgMLKuSiZAaUPAct2AksxQ+gOtimhGMdXljRT21P5BNpeT4kXlLIckvkPM029OljD7g==", + "license": "MIT", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "immer": ">=9.0.6", + "react": ">=18.0.0", + "use-sync-external-store": ">=1.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + }, + "use-sync-external-store": { + "optional": true + } + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..7410d47 --- /dev/null +++ b/package.json @@ -0,0 +1,69 @@ +{ + "name": "stalwart-webui", + "private": true, + "version": "1.0.0", + "description": "Stalwart WebUI", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "typecheck": "tsc -p tsconfig.app.json --noEmit", + "lint": "eslint .", + "preview": "vite preview", + "test": "vitest run", + "test:watch": "vitest", + "format": "prettier --write src/", + "format:check": "prettier --check src/" + }, + "dependencies": { + "@radix-ui/react-alert-dialog": "^1.1.15", + "@radix-ui/react-checkbox": "^1.3.3", + "@radix-ui/react-collapsible": "^1.1.12", + "@radix-ui/react-dialog": "^1.1.15", + "@radix-ui/react-dropdown-menu": "^2.1.16", + "@radix-ui/react-label": "^2.1.8", + "@radix-ui/react-popover": "^1.1.15", + "@radix-ui/react-scroll-area": "^1.2.10", + "@radix-ui/react-select": "^2.2.6", + "@radix-ui/react-separator": "^1.1.8", + "@radix-ui/react-slot": "^1.2.4", + "@radix-ui/react-switch": "^1.2.6", + "@radix-ui/react-tabs": "^1.1.13", + "@radix-ui/react-tooltip": "^1.2.8", + "@types/qrcode": "^1.5.6", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "cmdk": "^1.1.1", + "i18next": "^26.0.4", + "lucide-react": "^1.8.0", + "otpauth": "^9.5.0", + "qrcode": "^1.5.4", + "react": "^19.2.4", + "react-dom": "^19.2.4", + "react-i18next": "^17.0.2", + "react-markdown": "^10.1.0", + "react-router-dom": "^7.14.0", + "recharts": "^3.8.1", + "tailwind-merge": "^3.5.0", + "zustand": "^5.0.12" + }, + "devDependencies": { + "@eslint/js": "^9.39.4", + "@tailwindcss/vite": "^4.2.2", + "@types/node": "^24.12.2", + "@types/react": "^19.2.14", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^6.0.1", + "eslint": "^9.39.4", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.5.2", + "globals": "^17.4.0", + "prettier": "^3.8.2", + "tailwindcss": "^4.2.2", + "typescript": "~6.0.2", + "typescript-eslint": "^8.58.0", + "vite": "^8.0.4", + "vitest": "^4.1.4" + } +} diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000000000000000000000000000000000000..22e759eceef2c80541ae89540d3f94556747a7b4 GIT binary patch literal 15406 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 literal 0 HcmV?d00001 diff --git a/public/icons.svg b/public/icons.svg new file mode 100644 index 0000000..e952219 --- /dev/null +++ b/public/icons.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..57fc917 --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,18 @@ +/* + * SPDX-FileCopyrightText: 2020 Stalwart Labs LLC + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL + */ + +import { Outlet } from 'react-router-dom'; +import { ErrorBoundary } from '@/components/layout/ErrorBoundary'; +import { Toaster } from '@/components/ui/toaster'; + +export default function App() { + return ( + + + + + ); +} diff --git a/src/components/bootstrap/BootstrapWizard.tsx b/src/components/bootstrap/BootstrapWizard.tsx new file mode 100644 index 0000000..3251169 --- /dev/null +++ b/src/components/bootstrap/BootstrapWizard.tsx @@ -0,0 +1,532 @@ +/* + * SPDX-FileCopyrightText: 2020 Stalwart Labs LLC + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL + */ + +import { useCallback, useEffect, useMemo, useState } from 'react'; +import { useTranslation } from 'react-i18next'; + +import { Button } from '@/components/ui/button'; +import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; +import { ArrowLeft, ArrowRight, Check, Copy, Loader2, Rocket } from 'lucide-react'; + +import { useSchemaStore } from '@/stores/schemaStore'; +import { FieldWidget } from '@/components/forms/FieldWidget'; +import { FormEditionContext } from '@/components/forms/FormEditionContext'; +import { DefaultLogo } from '@/components/common/Logo'; +import { toast } from '@/hooks/use-toast'; +import { resolveObject, resolveSchema, resolveForm, buildCreateDefaults, deepMerge } from '@/lib/schemaResolver'; +import { calculateJmapPatch } from '@/lib/jmapPatch'; +import { jmapGet, jmapSet, getAccountId } from '@/services/jmap/client'; +import { friendlySetError } from '@/lib/jmapErrors'; + +import type { Field, Fields, Form, FormField } from '@/types/schema'; +import type { JmapSetError, JmapSetResponse } from '@/types/jmap'; + +const BOOTSTRAP_VIEW = 'x:Bootstrap'; + +interface RenderableField { + formField: FormField; + field: Field; +} + +export function BootstrapWizard() { + const { t } = useTranslation(); + const schema = useSchemaStore((s) => s.schema); + + const resolved = useMemo(() => { + if (!schema) return null; + const obj = resolveObject(schema, BOOTSTRAP_VIEW); + if (!obj) return null; + const sch = resolveSchema(schema, obj.objectName); + if (!sch || sch.type !== 'single') return null; + const form = resolveForm(schema, BOOTSTRAP_VIEW, obj.objectName, sch.schemaName); + return { obj, sch, fields: sch.fields, form }; + }, [schema]); + + const [formData, setFormData] = useState>({}); + const [originalData, setOriginalData] = useState>({}); + const [currentPage, setCurrentPage] = useState(0); + const [loading, setLoading] = useState(true); + const [saving, setSaving] = useState(false); + const [fieldErrors, setFieldErrors] = useState>({}); + const [generalError, setGeneralError] = useState(null); + const [successExtras, setSuccessExtras] = useState | null>(null); + const [copied, setCopied] = useState(null); + + const sections = useMemo((): { title?: string; subtitle?: string; fields: RenderableField[] }[] => { + if (!resolved) return []; + const { fields, form } = resolved; + if (!form) return []; + return form.sections + .map((section) => { + const renderableFields: RenderableField[] = []; + for (const ff of section.fields) { + const field = fields.properties[ff.name]; + if (!field) continue; + if (field.update === 'serverSet') continue; + if (field.enterprise) continue; + renderableFields.push({ formField: ff, field }); + } + return { title: section.title, fields: renderableFields }; + }) + .filter((s) => s.fields.length > 0); + }, [resolved]); + + const fetchProperties = useMemo((): string[] => { + if (!resolved) return ['id']; + const set = new Set(['id']); + for (const section of sections) { + for (const rf of section.fields) set.add(rf.formField.name); + } + return Array.from(set); + }, [resolved, sections]); + + useEffect(() => { + if (!schema || !resolved) return; + const { obj, sch } = resolved; + + const ctrl = new AbortController(); + setLoading(true); + + (async () => { + try { + const accountId = getAccountId(obj.objectName); + const responses = await jmapGet(obj.objectName, accountId, ['singleton'], fetchProperties, ctrl.signal); + if (ctrl.signal.aborted) return; + + const server = (responses[0]?.[1]?.list as Array> | undefined)?.[0] ?? {}; + const defaults = buildCreateDefaults(schema, obj, sch); + const seeded = deepMerge(defaults, server); + setFormData(seeded); + setOriginalData({}); + } catch (err) { + if (ctrl.signal.aborted) return; + if (err instanceof DOMException && err.name === 'AbortError') return; + setGeneralError( + err instanceof Error ? err.message : t('bootstrap.failedToLoad', 'Failed to load bootstrap state.'), + ); + } finally { + if (!ctrl.signal.aborted) setLoading(false); + } + })(); + + return () => { + ctrl.abort(); + }; + }, [schema, resolved, fetchProperties, t]); + + const handleFieldChange = useCallback((fieldName: string, value: unknown) => { + setFormData((prev) => ({ ...prev, [fieldName]: value })); + setFieldErrors((prev) => { + if (!prev[fieldName]) return prev; + const copy = { ...prev }; + delete copy[fieldName]; + return copy; + }); + }, []); + + const validateSectionRequired = useCallback( + (sectionFields: RenderableField[], data: Record): Record => { + const errors: Record = {}; + for (const { formField, field } of sectionFields) { + if (field.update === 'serverSet' || field.update === 'immutable') continue; + const fieldType = field.type; + const eligible = + fieldType.type === 'string' || + fieldType.type === 'number' || + fieldType.type === 'utcDateTime' || + fieldType.type === 'enum' || + fieldType.type === 'blobId' || + fieldType.type === 'objectId'; + if (!eligible) continue; + if ('nullable' in fieldType && fieldType.nullable) continue; + const value = data[formField.name]; + const isEmpty = value === undefined || value === null || (typeof value === 'string' && value === ''); + if (isEmpty) errors[formField.name] = t('form.required', 'This field is required.'); + } + return errors; + }, + [t], + ); + + const applySetError = useCallback( + (error: JmapSetError): number | null => { + setGeneralError(friendlySetError(error)); + + const fieldToPage = new Map(); + sections.forEach((section, idx) => { + for (const rf of section.fields) { + if (!fieldToPage.has(rf.formField.name)) fieldToPage.set(rf.formField.name, idx); + } + }); + + const newErrors: Record = {}; + let earliest: number | null = null; + const record = (topLevel: string, msg: string) => { + if (!fieldToPage.has(topLevel)) return; + newErrors[topLevel] = msg; + const idx = fieldToPage.get(topLevel)!; + if (earliest === null || idx < earliest) earliest = idx; + }; + + if (error.properties) { + for (const prop of error.properties) { + const top = prop.split('/')[0]; + record(top, error.description ?? t('form.invalidValue', 'Invalid value.')); + } + } + if (error.validationErrors) { + for (const ve of error.validationErrors) { + const top = ve.property?.split('/')[0] ?? ''; + if (!top) continue; + const msg = + ve.type === 'Required' + ? t('form.required', 'This field is required.') + : ve.type === 'MaxLength' + ? t('form.maxLengthIs', 'Maximum length is {{max}}.', { max: ve.required }) + : ve.type === 'MinLength' + ? t('form.minLengthIs', 'Minimum length is {{min}}.', { min: ve.required }) + : ve.type === 'MaxValue' + ? t('form.maxValueIs', 'Maximum value is {{max}}.', { max: ve.required }) + : ve.type === 'MinValue' + ? t('form.minValueIs', 'Minimum value is {{min}}.', { min: ve.required }) + : t('form.invalidValue', 'Invalid value.'); + record(top, msg); + } + } + + if (Object.keys(newErrors).length > 0) setFieldErrors(newErrors); + return earliest; + }, + [sections, t], + ); + + const canGoBack = currentPage > 0; + const isLastPage = currentPage === sections.length - 1; + + const handleNext = useCallback(() => { + const current = sections[currentPage]; + if (!current) return; + const errs = validateSectionRequired(current.fields, formData); + if (Object.keys(errs).length > 0) { + setFieldErrors(errs); + setGeneralError(t('form.correctErrorsBelow', 'Please correct the errors below.')); + return; + } + setGeneralError(null); + setFieldErrors({}); + setCurrentPage((p) => Math.min(p + 1, sections.length - 1)); + }, [currentPage, sections, formData, validateSectionRequired, t]); + + const handleBack = useCallback(() => { + setGeneralError(null); + setFieldErrors({}); + setCurrentPage((p) => Math.max(p - 1, 0)); + }, []); + + const handleSubmit = useCallback(async () => { + if (!resolved) return; + const { obj } = resolved; + + let firstInvalid: number | null = null; + const allErrors: Record = {}; + sections.forEach((section, idx) => { + const errs = validateSectionRequired(section.fields, formData); + for (const [k, v] of Object.entries(errs)) { + allErrors[k] = v; + if (firstInvalid === null) firstInvalid = idx; + } + }); + if (firstInvalid !== null) { + setFieldErrors(allErrors); + setGeneralError(t('form.correctErrorsBelow', 'Please correct the errors below.')); + setCurrentPage(firstInvalid); + return; + } + + setSaving(true); + setGeneralError(null); + setFieldErrors({}); + + try { + const patch = calculateJmapPatch(originalData, formData); + + const accountId = getAccountId(obj.objectName); + const responses = await jmapSet(obj.objectName, accountId, { + update: { singleton: patch }, + }); + const setResult = responses[responses.length - 1]?.[1] as unknown as JmapSetResponse; + + if (setResult.updated && 'singleton' in setResult.updated) { + setSuccessExtras(setResult.updated.singleton ?? {}); + } else if (setResult.notUpdated && setResult.notUpdated.singleton) { + const earliest = applySetError(setResult.notUpdated.singleton); + if (earliest !== null) setCurrentPage(earliest); + } else { + setGeneralError(t('bootstrap.noConfirm', 'The server did not confirm the update.')); + } + } catch (err) { + setGeneralError( + err instanceof Error ? err.message : t('bootstrap.failedToComplete', 'Failed to complete setup.'), + ); + } finally { + setSaving(false); + } + }, [resolved, sections, formData, originalData, validateSectionRequired, applySetError, t]); + + const handleCopy = useCallback( + async (key: string, value: string) => { + try { + await navigator.clipboard.writeText(value); + setCopied(key); + setTimeout(() => setCopied((c) => (c === key ? null : c)), 1500); + } catch { + toast({ + title: t('bootstrap.copyFailed', 'Copy failed'), + description: t('bootstrap.clipboardBlocked', 'Your browser blocked clipboard access.'), + variant: 'destructive', + }); + } + }, + [t], + ); + + if (!schema || !resolved) { + return ( + +
+ + {t('form.loadingSchema', 'Loading schema...')} +
+
+ ); + } + + if (loading) { + return ( + +
+ + {t('bootstrap.loadingSetup', 'Loading setup...')} +
+
+ ); + } + + if (successExtras !== null) { + return ( + + + + ); + } + + if (sections.length === 0) { + return ( + +
+ {t('bootstrap.emptyForm', 'Setup form is empty. The server did not return any bootstrap fields.')} +
+
+ ); + } + + const current = sections[currentPage]; + + return ( + +
+
+

{t('bootstrap.welcome', 'Welcome to Stalwart')}

+

+ {t('bootstrap.welcomeSubtitle', "Let's get your server set up.")} +

+
+ + + + {generalError && ( +
+

{generalError}

+
+ )} + + + {current.title && ( + + {current.title} + + )} + +
+ + {current.fields.map(({ formField, field }) => ( + handleFieldChange(formField.name, v)} + readOnly={saving} + error={fieldErrors[formField.name]} + schema={schema} + /> + ))} + +
+
+
+ +
+ +
+ {t('bootstrap.stepOf', 'Step {{current}} of {{total}}', { + current: currentPage + 1, + total: sections.length, + })} +
+ {isLastPage ? ( + + ) : ( + + )} +
+
+
+ ); +} + +function WizardShell({ children }: { children: React.ReactNode }) { + return ( +
+
+ +
+
+
{children}
+
+
+ ); +} + +function ProgressIndicator({ total, current }: { total: number; current: number }) { + const { t } = useTranslation(); + return ( +
+ {Array.from({ length: total }, (_, i) => ( +
+ ))} +
+ ); +} + +function SuccessScreen({ + extras, + fields, + labelsByName, + onCopy, + copied, +}: { + extras: Record; + fields: Fields; + labelsByName: Map; + onCopy: (key: string, value: string) => void; + copied: string | null; +}) { + const { t } = useTranslation(); + const entries = Object.entries(extras).filter(([k, v]) => { + if (k === 'id' || k === 'blobId' || k === '@type') return false; + return typeof v === 'string' && v.length > 0; + }) as [string, string][]; + + const hasCredentials = entries.length > 0; + + return ( +
+
+
+ +
+
+

{t('bootstrap.complete', 'Setup complete')}

+

+ {hasCredentials + ? t( + 'bootstrap.credentialsCreated', + 'Your administrator account has been created. Write these down now: the password will not be shown again.', + ) + : t('bootstrap.configuredSuccessfully', 'Stalwart has been configured successfully.')} +

+
+
+ + {hasCredentials && ( + + + {entries.map(([key, value]) => { + const field = fields.properties[key]; + const label = labelsByName.get(key) ?? field?.description?.split('\n')[0] ?? key; + return ( +
+
{label}
+
+ {value} + +
+
+ ); + })} +
+
+ )} + +
+

+ {t('bootstrap.nextStepLabel', 'Next step:')}{' '} + {t( + 'bootstrap.nextStepBody', + 'restart Stalwart for the new configuration to take effect. Once restarted, sign in with the credentials above to continue administering your server.', + )} +

+
+
+ ); +} + +function labelsByFieldName(form: Form | null): Map { + const map = new Map(); + if (!form) return map; + for (const section of form.sections) { + for (const ff of section.fields) map.set(ff.name, ff.label); + } + return map; +} + +export default BootstrapWizard; diff --git a/src/components/common/EnterpriseUpsell.tsx b/src/components/common/EnterpriseUpsell.tsx new file mode 100644 index 0000000..d5b8c14 --- /dev/null +++ b/src/components/common/EnterpriseUpsell.tsx @@ -0,0 +1,47 @@ +/* + * SPDX-FileCopyrightText: 2020 Stalwart Labs LLC + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL + */ + +import { useTranslation } from 'react-i18next'; + +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from '@/components/ui/dialog'; +import { Button } from '@/components/ui/button'; + +interface EnterpriseUpsellProps { + open: boolean; + onClose: () => void; +} + +export function EnterpriseUpsell({ open, onClose }: EnterpriseUpsellProps) { + const { t } = useTranslation(); + + return ( + !isOpen && onClose()}> + + + {t('enterprise.trialTitle')} + {t('enterprise.trialDescription')} + + + +
+ + + + ); +} diff --git a/src/components/common/GlobalSearch.tsx b/src/components/common/GlobalSearch.tsx new file mode 100644 index 0000000..43e4b8b --- /dev/null +++ b/src/components/common/GlobalSearch.tsx @@ -0,0 +1,240 @@ +/* + * SPDX-FileCopyrightText: 2020 Stalwart Labs LLC + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL + */ + +import { useState, useCallback, useMemo, useRef, useEffect } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { useTranslation } from 'react-i18next'; +import { Search, List, Settings, Plus } from 'lucide-react'; +import { useSchemaStore, type SearchIndexEntry } from '@/stores/schemaStore'; +import { useAccountStore } from '@/stores/accountStore'; +import { resolveObject } from '@/lib/schemaResolver'; +import type { Schema } from '@/types/schema'; + +const MAX_RESULTS = 15; + +const TYPE_ORDER: Record = { + link: 0, + form: 1, + field: 2, +}; + +function getObjectKind(schema: Schema, viewName: string): 'singleton' | 'object' | null { + const resolved = resolveObject(schema, viewName); + if (!resolved) return null; + return resolved.objectType.type === 'singleton' ? 'singleton' : 'object'; +} + +function getActionInfo( + entryType: SearchIndexEntry['type'], + objectKind: 'singleton' | 'object' | null, + t: (key: string, fallback: string) => string, +): { label: string; Icon: typeof List } { + if (entryType === 'link') { + return objectKind === 'singleton' + ? { label: t('globalSearch.settings', 'Settings'), Icon: Settings } + : { label: t('globalSearch.list', 'List'), Icon: List }; + } + return objectKind === 'singleton' + ? { label: t('globalSearch.settings', 'Settings'), Icon: Settings } + : { label: t('globalSearch.create', 'Create'), Icon: Plus }; +} + +function getNavigationPath( + entryType: SearchIndexEntry['type'], + objectKind: 'singleton' | 'object' | null, + section: string, + viewName: string, +): string { + const encodedView = viewName; + if (entryType === 'link') { + return objectKind === 'singleton' ? `/${section}/${encodedView}/singleton` : `/${section}/${encodedView}`; + } + return objectKind === 'singleton' ? `/${section}/${encodedView}/singleton` : `/${section}/${encodedView}/new`; +} + +function friendlyName(viewName: string): string { + const stripped = viewName.replace(/^x:/, ''); + const parts = stripped.split('/'); + return parts[parts.length - 1]; +} + +export function GlobalSearch() { + const { t } = useTranslation(); + const navigate = useNavigate(); + const GROUP_LABELS: Record = { + link: t('globalSearch.pages', 'Pages'), + form: t('globalSearch.formSections', 'Form Sections'), + field: t('globalSearch.fields', 'Fields'), + }; + const [query, setQuery] = useState(''); + const [debouncedQuery, setDebouncedQuery] = useState(''); + const [dropdownOpen, setDropdownOpen] = useState(false); + const [activeIndex, setActiveIndex] = useState(-1); + const timerRef = useRef | null>(null); + const containerRef = useRef(null); + const inputRef = useRef(null); + + const schema = useSchemaStore((s) => s.schema); + const searchIndex = useSchemaStore((s) => s.searchIndex); + const hasObjectPermission = useAccountStore((s) => s.hasObjectPermission); + + const handleQueryChange = useCallback((value: string) => { + setQuery(value); + setActiveIndex(-1); + if (timerRef.current) clearTimeout(timerRef.current); + timerRef.current = setTimeout(() => setDebouncedQuery(value), 300); + }, []); + + useEffect(() => { + return () => { + if (timerRef.current) clearTimeout(timerRef.current); + }; + }, []); + + useEffect(() => { + function handleClickOutside(e: MouseEvent) { + if (containerRef.current && !containerRef.current.contains(e.target as Node)) { + setDropdownOpen(false); + } + } + document.addEventListener('mousedown', handleClickOutside); + return () => document.removeEventListener('mousedown', handleClickOutside); + }, []); + + const results = useMemo(() => { + if (!debouncedQuery.trim() || !schema) return []; + + const tokens = debouncedQuery + .toLowerCase() + .split(/\s+/) + .filter((s) => s.length > 0); + if (tokens.length === 0) return []; + + const filtered = searchIndex.filter((entry) => { + const haystack = (entry.text + ' ' + (entry.keywords?.join(' ') ?? '')).toLowerCase(); + for (const token of tokens) { + if (!haystack.includes(token)) return false; + } + const resolved = resolveObject(schema, entry.viewName); + if (!resolved) return false; + return hasObjectPermission(resolved.permissionPrefix, 'Get'); + }); + + filtered.sort((a, b) => TYPE_ORDER[a.type] - TYPE_ORDER[b.type]); + return filtered.slice(0, MAX_RESULTS); + }, [debouncedQuery, searchIndex, schema, hasObjectPermission]); + + const groups = useMemo(() => { + const map = new Map(); + for (const entry of results) { + const arr = map.get(entry.type); + if (arr) arr.push(entry); + else map.set(entry.type, [entry]); + } + return map; + }, [results]); + + const handleSelect = useCallback( + (entry: SearchIndexEntry) => { + if (!schema) return; + const objectKind = getObjectKind(schema, entry.viewName); + const path = getNavigationPath(entry.type, objectKind, entry.section, entry.viewName); + setDropdownOpen(false); + setQuery(''); + setDebouncedQuery(''); + navigate(path); + }, + [schema, navigate], + ); + + const handleKeyDown = useCallback( + (e: React.KeyboardEvent) => { + if (!dropdownOpen || results.length === 0) return; + if (e.key === 'ArrowDown') { + e.preventDefault(); + setActiveIndex((i) => (i + 1) % results.length); + } else if (e.key === 'ArrowUp') { + e.preventDefault(); + setActiveIndex((i) => (i - 1 + results.length) % results.length); + } else if (e.key === 'Enter' && activeIndex >= 0) { + e.preventDefault(); + handleSelect(results[activeIndex]); + } else if (e.key === 'Escape') { + setDropdownOpen(false); + } + }, + [dropdownOpen, results, activeIndex, handleSelect], + ); + + const showDropdown = dropdownOpen && debouncedQuery.trim().length > 0; + + return ( +
+
+ + { + handleQueryChange(e.target.value); + setDropdownOpen(true); + }} + onFocus={() => { + if (query.trim()) setDropdownOpen(true); + }} + onKeyDown={handleKeyDown} + className="flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 pl-9 text-sm shadow-sm transition-colors placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring" + /> + + {showDropdown && ( +
+ {results.length === 0 ? ( +
+ {t('globalSearch.noResults', 'No results found.')} +
+ ) : ( +
+ {Array.from(groups.entries()).map(([type, entries]) => ( +
+
{GROUP_LABELS[type]}
+ {entries.map((entry) => { + const flatIdx = results.indexOf(entry); + const objectKind = schema ? getObjectKind(schema, entry.viewName) : null; + const { label: actionLabel, Icon: ActionIcon } = getActionInfo(entry.type, objectKind, t); + + return ( + + ); + })} +
+ ))} +
+ )} +
+ )} +
+
+ ); +} diff --git a/src/components/common/Logo.tsx b/src/components/common/Logo.tsx new file mode 100644 index 0000000..bd8ecd5 --- /dev/null +++ b/src/components/common/Logo.tsx @@ -0,0 +1,81 @@ +/* + * SPDX-FileCopyrightText: 2020 Stalwart Labs LLC + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL + */ + +import { useState, useEffect } from 'react'; +import { useTranslation } from 'react-i18next'; +import { getApiBaseUrl } from '@/services/api'; + +export function DefaultLogo() { + const { t } = useTranslation(); + return ( + + + + + ); +} + +export default function Logo() { + const { t } = useTranslation(); + const [logoUrl, setLogoUrl] = useState(null); + const [failed, setFailed] = useState(false); + + useEffect(() => { + const controller = new AbortController(); + + async function fetchLogo() { + try { + const response = await fetch(`${getApiBaseUrl()}/logo`, { + signal: controller.signal, + }); + const contentType = response.headers.get('content-type') ?? ''; + + if (response.ok && contentType.startsWith('image/')) { + const blob = await response.blob(); + if (!controller.signal.aborted) { + const url = URL.createObjectURL(blob); + setLogoUrl(url); + } + } else { + if (!controller.signal.aborted) setFailed(true); + } + } catch { + if (!controller.signal.aborted) setFailed(true); + } + } + + fetchLogo(); + + return () => { + controller.abort(); + }; + }, []); + + useEffect(() => { + return () => { + if (logoUrl) { + URL.revokeObjectURL(logoUrl); + } + }; + }, [logoUrl]); + + if (logoUrl && !failed) { + return {t('logo.alt',; + } + + return ; +} diff --git a/src/components/common/ObjectPicker.tsx b/src/components/common/ObjectPicker.tsx new file mode 100644 index 0000000..ea92ce2 --- /dev/null +++ b/src/components/common/ObjectPicker.tsx @@ -0,0 +1,135 @@ +/* + * SPDX-FileCopyrightText: 2020 Stalwart Labs LLC + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL + */ + +import { useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { Loader2, Search, X } from 'lucide-react'; + +import { Badge } from '@/components/ui/badge'; +import { Button } from '@/components/ui/button'; +import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'; +import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from '@/components/ui/command'; +import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'; + +import { useObjectList, useObjectLabel, useNoPermissionMessage } from '@/lib/objectOptions'; +import type { Schema } from '@/types/schema'; + +interface ObjectPickerProps { + schema: Schema; + objectName: string; + value: string; + onChange: (id: string) => void; + onClear?: () => void; + placeholder?: string; +} + +export function ObjectPicker({ schema, objectName, value, onChange, onClear, placeholder }: ObjectPickerProps) { + const { t } = useTranslation(); + const list = useObjectList(objectName, schema); + const fromList = list.options.find((o) => o.id === value)?.label; + const { label: cheapLabel, loading: labelLoading } = useObjectLabel( + objectName, + fromList ? null : value || null, + schema, + ); + const display = fromList ?? cheapLabel; + const [open, setOpen] = useState(false); + const [tooltipOpen, setTooltipOpen] = useState(false); + const noPermissionMessage = useNoPermissionMessage(schema, objectName); + + const handleOpenChange = (next: boolean) => { + setOpen(next); + if (next) void list.ensureLoaded(); + }; + + return ( +
+ {value && ( + + {labelLoading ? : (display ?? value)} + {onClear && ( + + )} + + )} + {!value && placeholder && {placeholder}} + {noPermissionMessage ? ( + + + + + + {noPermissionMessage} + + + ) : ( + + + + + + + + + {list.loading && ( +
+ + {t('common.loading', 'Loading...')} +
+ )} + {!list.loading && {t('common.noResultsDot', 'No results.')}} + + {list.options.map((opt) => ( + { + onChange(opt.id); + setOpen(false); + }} + > + {opt.label} + + ))} + +
+
+
+
+ )} +
+ ); +} diff --git a/src/components/expression/ExpressionEditor.tsx b/src/components/expression/ExpressionEditor.tsx new file mode 100644 index 0000000..3d2af6c --- /dev/null +++ b/src/components/expression/ExpressionEditor.tsx @@ -0,0 +1,175 @@ +/* + * SPDX-FileCopyrightText: 2020 Stalwart Labs LLC + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL + */ + +import { useState, useEffect } from 'react'; +import { useTranslation } from 'react-i18next'; + +import { Input } from '@/components/ui/input'; +import { Button } from '@/components/ui/button'; +import { Separator } from '@/components/ui/separator'; + +import { X, Plus } from 'lucide-react'; + +function BufferedExprInput({ + value, + onCommit, + ...rest +}: { value: string; onCommit: (v: string) => void } & Omit< + React.InputHTMLAttributes, + 'onChange' | 'value' +>) { + const [local, setLocal] = useState(value); + + useEffect(() => { + setLocal(value); + }, [value]); + + const commit = () => { + if (local !== value) onCommit(local); + }; + + return ( + setLocal(e.target.value)} + onBlur={commit} + onKeyDown={(e) => { + if (e.key === 'Enter') commit(); + }} + /> + ); +} + +interface ExpressionEditorProps { + value: { + match: Record; + else: string; + }; + onChange: (value: { match: Record; else: string }) => void; + readOnly?: boolean; +} + +export function ExpressionEditor({ value, onChange, readOnly = false }: ExpressionEditorProps) { + const { t } = useTranslation(); + const [nextIndex, setNextIndex] = useState(() => { + const keys = Object.keys(value.match).map(Number).filter(Number.isFinite); + return keys.length > 0 ? Math.max(...keys) + 1 : 0; + }); + + const matchEntries = Object.entries(value.match); + + const handleConditionChange = (key: string, field: 'if' | 'then', fieldValue: string) => { + onChange({ + ...value, + match: { + ...value.match, + [key]: { ...value.match[key], [field]: fieldValue }, + }, + }); + }; + + const handleElseChange = (elseValue: string) => { + onChange({ ...value, else: elseValue }); + }; + + const handleAdd = () => { + const key = String(nextIndex); + setNextIndex(nextIndex + 1); + onChange({ + ...value, + match: { ...value.match, [key]: { if: '', then: '' } }, + }); + }; + + const handleRemove = (key: string) => { + const { [key]: _removed, ...rest } = value.match; + void _removed; + onChange({ ...value, match: rest }); + }; + + return ( +
+ {matchEntries.map(([key, entry], index) => ( +
+
+
+ + {t('expression.if', 'IF')} + + handleConditionChange(key, 'if', v)} + disabled={readOnly} + placeholder={t('expression.condition', 'Condition')} + className="flex-1" + /> + {!readOnly && ( + + )} +
+
+ + {t('expression.then', 'THEN')} + + handleConditionChange(key, 'then', v)} + disabled={readOnly} + placeholder={t('expression.result', 'Result')} + className="flex-1" + /> + {!readOnly &&
} +
+
+ {index < matchEntries.length - 1 && } +
+ ))} + + {!readOnly && ( +
+ +
+ )} + + {matchEntries.length > 0 && } +
+ {matchEntries.length > 0 && ( + + {t('expression.else', 'ELSE')} + + )} + 0 ? t('expression.defaultValue', 'Default value') : t('expression.value', 'Value') + } + className="flex-1" + /> + {!readOnly && matchEntries.length > 0 &&
} +
+
+ ); +} diff --git a/src/components/forms/DynamicForm.tsx b/src/components/forms/DynamicForm.tsx new file mode 100644 index 0000000..057192c --- /dev/null +++ b/src/components/forms/DynamicForm.tsx @@ -0,0 +1,1126 @@ +/* + * SPDX-FileCopyrightText: 2020 Stalwart Labs LLC + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL + */ + +import { useState, useEffect, useCallback, useMemo } from 'react'; +import { useNavigate, useBlocker } from 'react-router-dom'; +import { useTranslation } from 'react-i18next'; +import { Button } from '@/components/ui/button'; +import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; +import { Label } from '@/components/ui/label'; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; +import { + AlertDialog, + AlertDialogAction, + AlertDialogCancel, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, +} from '@/components/ui/alert-dialog'; +import { + Dialog, + DialogContent, + DialogHeader, + DialogTitle, + DialogDescription, + DialogFooter, +} from '@/components/ui/dialog'; +import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'; +import { ArrowLeft, Save, Trash2, Loader2 } from 'lucide-react'; + +import { useSchemaStore } from '@/stores/schemaStore'; +import { useAccountStore } from '@/stores/accountStore'; +import { usePermissions } from '@/hooks/usePermissions'; +import { + resolveObject, + resolveSchema, + resolveList, + resolveForm, + resolveVariantForm, + buildCreateDefaults, + buildEmbeddedDefaults, +} from '@/lib/schemaResolver'; +import { jmapGet, jmapSet, jmapRequest, getAccountId } from '@/services/jmap/client'; +import { calculateJmapPatch } from '@/lib/jmapPatch'; +import { friendlySetError } from '@/lib/jmapErrors'; +import { toast } from '@/hooks/use-toast'; +import { logFormChange } from '@/lib/debug'; +import { FieldWidget } from '@/components/forms/FieldWidget'; + +import type { Field, Fields, Form, FormField, Schema } from '@/types/schema'; +import type { JmapSetResponse, JmapSetError, JmapMethodCall } from '@/types/jmap'; + +interface DynamicFormProps { + viewName: string; + objectId: string | null; +} + +export function DynamicForm({ viewName, objectId }: DynamicFormProps) { + const { t } = useTranslation(); + const navigate = useNavigate(); + const schema = useSchemaStore((s) => s.schema); + const viewToSection = useSchemaStore((s) => s.viewToSection); + const edition = useAccountStore((s) => s.edition); + const { canUpdateObject, canDestroyObject } = usePermissions(); + + const resolved = useMemo(() => { + if (!schema) return null; + const obj = resolveObject(schema, viewName); + if (!obj) return null; + const sch = resolveSchema(schema, obj.objectName); + if (!sch) return null; + const list = resolveList(schema, viewName, obj.objectName); + return { obj, sch, list }; + }, [schema, viewName]); + + const isCreate = objectId === null; + const isSingleton = resolved?.obj.objectType.type === 'singleton'; + + const [formData, setFormData] = useState>({}); + const [originalData, setOriginalData] = useState>({}); + const [loading, setLoading] = useState(false); + const [saving, setSaving] = useState(false); + const [generalError, setGeneralError] = useState(null); + const [fieldErrors, setFieldErrors] = useState>({}); + + const [selectedVariant, setSelectedVariant] = useState(''); + + const [serverCreatedProps, setServerCreatedProps] = useState | null>(null); + const [createdObjectId, setCreatedObjectId] = useState(null); + + const [deleteConfirmOpen, setDeleteConfirmOpen] = useState(false); + + const currentFields = useMemo((): Fields | null => { + if (!resolved) return null; + const { sch } = resolved; + let fields: Fields | null; + if (sch.type === 'single') { + fields = sch.fields; + } else { + if (!selectedVariant) return null; + const variant = sch.variants.find((v) => v.name === selectedVariant); + fields = variant?.fields ?? null; + } + if (!fields || !schema) return fields; + const canGet = (prefix: string) => useAccountStore.getState().hasObjectPermission(prefix, 'Get'); + const filtered: Record = {}; + for (const [name, field] of Object.entries(fields.properties)) { + if (fieldReferencesInaccessibleObject(field, schema, canGet)) continue; + filtered[name] = field; + } + return { ...fields, properties: filtered }; + }, [resolved, selectedVariant, schema]); + + const currentForm = useMemo((): Form | null => { + if (!schema || !resolved) return null; + const { obj, sch } = resolved; + if (sch.type === 'single') { + return resolveForm(schema, viewName, obj.objectName, sch.schemaName); + } + if (!selectedVariant) return null; + const variant = sch.variants.find((v) => v.name === selectedVariant); + return resolveVariantForm(schema, viewName, obj.objectName, variant?.schemaName); + }, [schema, resolved, viewName, selectedVariant]); + + const parentForm = useMemo((): Form | null => { + if (!schema || !resolved) return null; + const { obj, sch } = resolved; + if (sch.type !== 'multiple') return null; + return schema.forms[viewName] ?? schema.forms[obj.objectName] ?? null; + }, [schema, resolved, viewName]); + + const fetchProperties = useMemo((): string[] => { + if (!schema || !resolved) return ['id']; + const { obj, sch } = resolved; + const set = new Set(['id']); + + const collectFromForm = (form: { sections: { fields: { name: string }[] }[] } | null | undefined) => { + if (!form) return; + for (const section of form.sections) { + for (const ff of section.fields) { + if (ff.name && ff.name !== '@type') set.add(ff.name); + } + } + }; + + if (sch.type === 'multiple') { + set.add('@type'); + collectFromForm(schema.forms[viewName] ?? schema.forms[obj.objectName]); + for (const variant of sch.variants) { + if (variant.schemaName) collectFromForm(schema.forms[variant.schemaName]); + } + } else { + const singleForm = resolveForm(schema, viewName, obj.objectName, sch.schemaName); + if (singleForm) { + collectFromForm(singleForm); + } else { + for (const name of Object.keys(sch.fields.properties)) set.add(name); + } + } + return Array.from(set); + }, [schema, resolved, viewName]); + + useEffect(() => { + if (!schema || !resolved) return; + const { obj, sch } = resolved; + + if (isCreate) { + const staticFilters = resolved.list?.filtersStatic; + if (sch.type === 'multiple') { + const variantFromFilter = typeof staticFilters?.['@type'] === 'string' ? staticFilters['@type'] : undefined; + const initialVariant = variantFromFilter ?? sch.variants[0]?.name ?? ''; + setSelectedVariant(initialVariant); + const defaults = buildCreateDefaults(schema, obj, sch, initialVariant, staticFilters); + setFormData(defaults); + setOriginalData(defaults); + } else { + const defaults = buildCreateDefaults(schema, obj, sch, undefined, staticFilters); + setFormData(defaults); + setOriginalData(defaults); + } + return; + } + + const ctrl = new AbortController(); + setLoading(true); + + (async () => { + try { + const accountId = getAccountId(obj.objectName); + const ids = isSingleton ? ['singleton'] : [objectId]; + const responses = await jmapGet(obj.objectName, accountId, ids, fetchProperties, ctrl.signal); + if (ctrl.signal.aborted) return; + + const result = responses[0]?.[1]; + const list = result?.list as Array> | undefined; + if (list?.[0]) { + const data = list[0]; + setFormData({ ...data }); + setOriginalData({ ...data }); + + if (sch.type === 'multiple') { + const variantType = (data['@type'] as string) ?? sch.variants[0]?.name ?? ''; + setSelectedVariant(variantType); + } + } else { + setGeneralError(t('form.objectNotFound', 'Object not found.')); + } + } catch (err) { + if (ctrl.signal.aborted) return; + if (err instanceof DOMException && err.name === 'AbortError') return; + setGeneralError(err instanceof Error ? err.message : t('form.failedToLoadData', 'Failed to load data.')); + } finally { + if (!ctrl.signal.aborted) setLoading(false); + } + })(); + + return () => { + ctrl.abort(); + }; + }, [schema, resolved, objectId, isCreate, isSingleton, fetchProperties, t]); + + useEffect(() => { + logFormChange(`${viewName}${objectId ? ` (${objectId})` : ' (new)'}`, formData); + }, [formData, viewName, objectId]); + + useEffect(() => { + return () => { + setGeneralError(null); + setFieldErrors({}); + }; + }, [viewName, objectId]); + + const isDirty = useMemo(() => { + return JSON.stringify(formData) !== JSON.stringify(originalData); + }, [formData, originalData]); + + useEffect(() => { + if (!isDirty) return; + const handler = (e: BeforeUnloadEvent) => { + e.preventDefault(); + }; + window.addEventListener('beforeunload', handler); + return () => window.removeEventListener('beforeunload', handler); + }, [isDirty]); + + const blocker = useBlocker(isDirty && !saving); + + const [pendingNavAfterCreate, setPendingNavAfterCreate] = useState(false); + useEffect(() => { + if (!pendingNavAfterCreate) return; + setPendingNavAfterCreate(false); + const section = viewToSection[viewName] ?? ''; + navigate(`/${section}/${viewName}`); + }, [pendingNavAfterCreate, viewName, viewToSection, navigate]); + + const handleFieldChange = useCallback((fieldName: string, value: unknown) => { + setFormData((prev) => ({ ...prev, [fieldName]: value })); + setFieldErrors((prev) => { + if (prev[fieldName]) { + const copy = { ...prev }; + delete copy[fieldName]; + return copy; + } + return prev; + }); + }, []); + + const handleVariantChange = useCallback( + (newVariant: string) => { + if (!schema || !resolved) return; + const { obj, sch } = resolved; + if (sch.type !== 'multiple') return; + + setSelectedVariant(newVariant); + + const newData = buildEmbeddedDefaults(schema, obj.objectName, {}, newVariant); + setFormData(newData); + }, + [schema, resolved], + ); + + const collectBlobUploads = useCallback( + ( + payload: Record, + fields: Fields | null, + original?: Record, + ): { blobMethodCalls: JmapMethodCall[]; patchedPayload: Record } => { + if (!fields) return { blobMethodCalls: [], patchedPayload: payload }; + + const blobMethodCalls: JmapMethodCall[] = []; + const patchedPayload = { ...payload }; + let blobIndex = 0; + + for (const [fieldName, fieldDef] of Object.entries(fields.properties)) { + if (fieldDef.type.type !== 'blobId') continue; + const value = payload[fieldName]; + if (typeof value !== 'string' || !value) continue; + + if (original && original[fieldName] === value) continue; + + const tag = `temp-blob-${blobIndex}`; + const accountId = getAccountId(resolved!.obj.objectName); + blobMethodCalls.push([ + 'Blob/upload', + { + accountId, + create: { + [tag]: { + data: [{ 'data:asText': value }], + type: 'application/octet-stream', + }, + }, + }, + `blob-${blobIndex}`, + ]); + patchedPayload[fieldName] = `#${tag}`; + blobIndex++; + } + + return { blobMethodCalls, patchedPayload }; + }, + [resolved], + ); + + const applySetError = useCallback( + (error: JmapSetError) => { + setGeneralError(friendlySetError(error)); + + const newFieldErrors: Record = {}; + const errorMsg = error.description ?? t('form.invalidValue', 'Invalid value.'); + + if (error.properties && error.properties.length > 0) { + for (const prop of error.properties) { + const topLevel = prop.split('/')[0]; + if (topLevel && currentFields?.properties[topLevel]) { + newFieldErrors[topLevel] = errorMsg; + } + } + } + + if (error.validationErrors && error.validationErrors.length > 0) { + for (const ve of error.validationErrors) { + if (ve.property && currentFields?.properties[ve.property]) { + const msg = + ve.type === 'Required' + ? t('form.required', 'This field is required.') + : ve.type === 'MaxLength' + ? t('form.maxLengthIs', 'Maximum length is {{max}}.', { max: ve.required }) + : ve.type === 'MinLength' + ? t('form.minLengthIs', 'Minimum length is {{min}}.', { min: ve.required }) + : ve.type === 'MaxValue' + ? t('form.maxValueIs', 'Maximum value is {{max}}.', { max: ve.required }) + : ve.type === 'MinValue' + ? t('form.minValueIs', 'Minimum value is {{min}}.', { min: ve.required }) + : t('form.invalidValue', 'Invalid value.'); + newFieldErrors[ve.property] = msg; + } else if (ve.property) { + setGeneralError((prev) => (prev ? `${prev}\n${ve.property}: ${ve.type}` : `${ve.property}: ${ve.type}`)); + } + } + } + + if (Object.keys(newFieldErrors).length > 0) { + setFieldErrors(newFieldErrors); + } + }, + [currentFields, t], + ); + + const validateRequired = useCallback( + (data: Record, fields: Fields, visibleFields?: Set): Record => { + const errors: Record = {}; + + for (const [fieldName, fieldDef] of Object.entries(fields.properties)) { + if (visibleFields && !visibleFields.has(fieldName)) continue; + if (fieldDef.update === 'serverSet') continue; + if (!isCreate && fieldDef.update === 'immutable') continue; + + const fieldType = fieldDef.type; + const requiredEligible = + fieldType.type === 'string' || + fieldType.type === 'number' || + fieldType.type === 'utcDateTime' || + fieldType.type === 'enum' || + fieldType.type === 'blobId' || + fieldType.type === 'objectId'; + if (!requiredEligible) continue; + if ('nullable' in fieldType && fieldType.nullable) continue; + + const value = data[fieldName]; + const isEmpty = value === undefined || value === null || (typeof value === 'string' && value === ''); + if (isEmpty) { + errors[fieldName] = t('form.required', 'This field is required.'); + } + } + + return errors; + }, + [isCreate, t], + ); + + const handleSave = useCallback(async () => { + if (!resolved) return; + const { obj, sch } = resolved; + + setSaving(true); + setGeneralError(null); + setFieldErrors({}); + + if (currentFields) { + const visibleFields = new Set(); + for (const section of parentForm?.sections ?? []) { + for (const ff of section.fields) visibleFields.add(ff.name); + } + for (const section of currentForm?.sections ?? []) { + for (const ff of section.fields) visibleFields.add(ff.name); + } + const validationErrors = validateRequired( + formData, + currentFields, + visibleFields.size > 0 ? visibleFields : undefined, + ); + if (Object.keys(validationErrors).length > 0) { + setFieldErrors(validationErrors); + setGeneralError(t('form.correctErrorsBelow', 'Please correct the errors below.')); + setSaving(false); + return; + } + } + + if (!isOtpAuthValid(formData)) { + setGeneralError(t('form.otpCodeRequired', 'Enter your current authenticator code to authorise this change.')); + setSaving(false); + return; + } + + try { + const accountId = getAccountId(obj.objectName); + const section = viewToSection[viewName] ?? ''; + + if (isCreate) { + const createPayload: Record = {}; + + const staticFilters = resolved.list?.filtersStatic; + if (staticFilters) { + const validKeys = new Set(['@type']); + if (currentFields) { + for (const k of Object.keys(currentFields.properties)) validKeys.add(k); + } + for (const [k, v] of Object.entries(staticFilters)) { + if (validKeys.has(k)) createPayload[k] = v; + } + } + + if (sch.type === 'multiple' && selectedVariant) { + createPayload['@type'] = selectedVariant; + } + + if (currentFields) { + for (const [fieldName, fieldDef] of Object.entries(currentFields.properties)) { + if (fieldDef.update === 'serverSet') continue; + if (fieldName in formData) { + const isSecret = + fieldDef.type.type === 'string' && + (fieldDef.type.format === 'secret' || fieldDef.type.format === 'secretText'); + if (isSecret && formData[fieldName] === '*****') continue; + createPayload[fieldName] = formData[fieldName]; + } + } + } + + const { blobMethodCalls, patchedPayload } = collectBlobUploads(createPayload, currentFields); + + let responses; + if (blobMethodCalls.length > 0) { + const setCall: JmapMethodCall = [ + `${obj.objectName}/set`, + { accountId, create: { 'new-0': patchedPayload } }, + 'set-0', + ]; + responses = await jmapRequest([...blobMethodCalls, setCall]); + } else { + responses = await jmapSet(obj.objectName, accountId, { + create: { 'new-0': patchedPayload }, + }); + } + + const setResponse = responses[responses.length - 1]; + const setResult = setResponse[1] as unknown as JmapSetResponse; + + if (setResult.created && setResult.created['new-0']) { + const createdData = setResult.created['new-0']; + const newId = createdData.id as string; + + const noisyKeys = new Set(['id', 'blobId']); + const extraKeys = Object.keys(createdData).filter((k) => !noisyKeys.has(k)); + if (extraKeys.length > 0) { + const extraProps: Record = {}; + for (const key of extraKeys) { + extraProps[key] = createdData[key]; + } + setOriginalData({ ...formData }); + setCreatedObjectId(newId); + setServerCreatedProps(extraProps); + } else { + toast({ + title: t('form.createdSuccess', 'Created successfully'), + variant: 'success', + }); + setOriginalData({ ...formData }); + navigate(`/${section}/${viewName}`); + } + } else if (setResult.notCreated && setResult.notCreated['new-0']) { + applySetError(setResult.notCreated['new-0']); + } + } else { + const rawPatch = calculateJmapPatch(originalData, formData); + + const patch: Record = {}; + for (const [patchKey, patchValue] of Object.entries(rawPatch)) { + const topLevelField = patchKey.split('/')[0]; + const fieldDef = currentFields?.properties[topLevelField]; + if (fieldDef && (fieldDef.update === 'immutable' || fieldDef.update === 'serverSet')) { + continue; + } + if ( + fieldDef?.type.type === 'string' && + (fieldDef.type.format === 'secret' || fieldDef.type.format === 'secretText') && + patchValue === '*****' + ) { + continue; + } + patch[patchKey] = patchValue; + } + + if (Object.keys(patch).length === 0) { + toast({ + title: t('form.noChangesToSave', 'No changes to save'), + variant: 'default', + }); + return; + } + + const blobMethodCalls: JmapMethodCall[] = []; + let blobIndex = 0; + const finalPatch = { ...patch }; + + for (const [patchKey, patchValue] of Object.entries(patch)) { + const topLevelField = patchKey.split('/')[0]; + const fieldDef = currentFields?.properties[topLevelField]; + if (fieldDef?.type.type !== 'blobId') continue; + if (typeof patchValue !== 'string') continue; + + const tag = `temp-blob-${blobIndex}`; + const accountId = getAccountId(obj.objectName); + blobMethodCalls.push([ + 'Blob/upload', + { + accountId, + create: { + [tag]: { + data: [{ 'data:asText': patchValue }], + type: 'application/octet-stream', + }, + }, + }, + `blob-${blobIndex}`, + ]); + finalPatch[patchKey] = `#${tag}`; + blobIndex++; + } + + const updateId = isSingleton ? 'singleton' : objectId!; + let responses; + + if (blobMethodCalls.length > 0) { + const setCall: JmapMethodCall = [ + `${obj.objectName}/set`, + { accountId, update: { [updateId]: finalPatch } }, + 'set-0', + ]; + responses = await jmapRequest([...blobMethodCalls, setCall]); + } else { + responses = await jmapSet(obj.objectName, accountId, { + update: { [updateId]: finalPatch }, + }); + } + + const setResponse = responses[responses.length - 1]; + const setResult = setResponse[1] as unknown as JmapSetResponse; + + if (setResult.updated && updateId in setResult.updated) { + toast({ + title: t('form.savedSuccess', 'Saved successfully'), + variant: 'success', + }); + + if (isSingleton) { + const getResponses = await jmapGet(obj.objectName, accountId, ['singleton'], fetchProperties); + const getResult = getResponses[0]?.[1]; + const list = getResult?.list as Array> | undefined; + if (list?.[0]) { + setFormData({ ...list[0] }); + setOriginalData({ ...list[0] }); + } + } else { + setOriginalData({ ...formData }); + navigate(`/${section}/${viewName}`); + } + } else if (setResult.notUpdated && setResult.notUpdated[updateId]) { + applySetError(setResult.notUpdated[updateId]); + } + } + } catch (err) { + setGeneralError(err instanceof Error ? err.message : t('form.failedToSave', 'Failed to save.')); + } finally { + setSaving(false); + } + }, [ + resolved, + currentFields, + currentForm, + parentForm, + isCreate, + viewName, + objectId, + formData, + originalData, + selectedVariant, + viewToSection, + isSingleton, + navigate, + collectBlobUploads, + applySetError, + validateRequired, + fetchProperties, + t, + ]); + + const handleDelete = useCallback(async () => { + if (!resolved || !objectId) return; + + setSaving(true); + setGeneralError(null); + + try { + const { obj } = resolved; + const accountId = getAccountId(obj.objectName); + const responses = await jmapSet(obj.objectName, accountId, { destroy: [objectId] }); + const setResponse = responses[responses.length - 1]; + const setResult = setResponse[1] as unknown as JmapSetResponse; + + if (setResult.destroyed && setResult.destroyed.includes(objectId)) { + const list = resolveList(schema!, viewName, obj.objectName); + const label = list?.singularName ?? obj.objectType.description; + toast({ + title: t('form.deletedSuccess', '{{name}} deleted successfully', { + name: label.charAt(0).toUpperCase() + label.slice(1), + }), + variant: 'success', + }); + setOriginalData({ ...formData }); + const section = viewToSection[viewName] ?? ''; + navigate(`/${section}/${viewName}`); + } else if (setResult.notDestroyed && setResult.notDestroyed[objectId]) { + const error = setResult.notDestroyed[objectId]; + setGeneralError(friendlySetError(error)); + } + } catch (err) { + setGeneralError(err instanceof Error ? err.message : t('form.failedToDelete', 'Failed to delete.')); + } finally { + setSaving(false); + } + }, [resolved, viewName, objectId, viewToSection, navigate, schema, formData, t]); + + const canEdit = isCreate || canUpdateObject(viewName); + const canDelete = !isCreate && !isSingleton && canDestroyObject(viewName); + + const titleForm = parentForm ?? currentForm; + + const formTitle = useMemo(() => { + if (!resolved || !schema) return ''; + const { obj } = resolved; + + if (isSingleton) return titleForm?.title ?? obj.objectType.description; + + const list = resolveList(schema, viewName, obj.objectName); + const name = list?.singularName ?? obj.objectType.description; + + if (isCreate) return t('form.createTitle', 'Create {{name}}', { name }); + + const labelProp = list?.labelProperty; + if (labelProp) { + const raw = formData[labelProp]; + if (typeof raw === 'string' && raw.length > 0) { + return t('form.editTitleWithValue', 'Edit {{name}}: {{value}}', { name, value: raw }); + } + } + return t('form.editTitle', 'Edit {{name}}', { name }); + }, [resolved, schema, isCreate, isSingleton, formData, viewName, titleForm, t]); + + const formSubtitle = useMemo(() => { + return titleForm?.subtitle; + }, [titleForm]); + + if (!schema || !resolved) { + return ( +
+ + {t('form.loadingSchema', 'Loading schema...')} +
+ ); + } + + if (loading) { + return ( +
+ + {t('form.loadingData', 'Loading data...')} +
+ ); + } + + const { sch } = resolved; + const readOnly = !canEdit; + + const combinedForm: Form | null = (() => { + if (sch.type !== 'multiple') return currentForm; + const parentSections = parentForm?.sections ?? []; + const variantSections = currentForm?.sections ?? []; + if (parentSections.length === 0 && variantSections.length === 0) return null; + return { + title: parentForm?.title ?? currentForm?.title, + subtitle: parentForm?.subtitle ?? currentForm?.subtitle, + sections: [...parentSections, ...variantSections], + }; + })(); + + const sectionsToRender = buildSections(combinedForm, currentFields, isCreate, edition); + + return ( +
+
+ +
+

{formTitle}

+ {formSubtitle &&

{formSubtitle}

} +
+
+ + {generalError && ( +
+

{generalError}

+
+ )} + + {sectionsToRender.map((section, sectionIdx) => ( + + {section.title && ( + + {section.title} + + )} + +
+ {section.fields.map((sf) => { + const { formField, field, visible, enterpriseDisabled } = sf; + if (!visible) return null; + + if (formField.name === '@type' && sch.type === 'multiple') { + return ( +
+ + +
+ ); + } + + const fieldValue = formData[formField.name]; + const fieldError = fieldErrors[formField.name]; + const fieldReadOnly = + readOnly || + (field.update === 'immutable' && !isCreate) || + field.update === 'serverSet' || + enterpriseDisabled; + + const widget = ( + handleFieldChange(formField.name, v)} + readOnly={fieldReadOnly} + error={fieldError} + schema={schema} + /> + ); + + if (enterpriseDisabled) { + return ( + + + +
{widget}
+
+ +

{t('enterprise.featureDisabled', 'This feature requires an Enterprise license.')}

+
+
+
+ ); + } + + return widget; + })} +
+
+
+ ))} + +
+
+ {canDelete && ( + + )} +
+
+ {isDirty && ( + {t('form.unsavedChangesLabel', 'Unsaved changes')} + )} + + {!readOnly && ( + + )} +
+
+ + { + if (!open && blocker.state === 'blocked') blocker.reset?.(); + }} + > + + + {t('form.unsavedChangesTitle', 'Unsaved changes')} + + {t('form.unsavedChanges', 'You have unsaved changes. Are you sure you want to leave?')} + + + + blocker.reset?.()}>{t('form.stay', 'Stay')} + { + setOriginalData({ ...formData }); + blocker.proceed?.(); + }} + > + {t('form.leave', 'Leave')} + + + + + + { + if (!open) setDeleteConfirmOpen(false); + }} + > + + + {(() => { + const list = resolved ? resolveList(schema, viewName, resolved.obj.objectName) : null; + const label = ( + list?.singularName ?? + resolved?.obj.objectType.description ?? + t('form.item', 'item') + ).toLowerCase(); + const titleLabel = label.charAt(0).toUpperCase() + label.slice(1); + return ( + <> + {t('form.deleteTitle', 'Delete {{name}}?', { name: titleLabel })} + + {t( + 'form.deleteDescription', + 'This action cannot be undone. This will permanently delete this {{name}}.', + { name: label }, + )} + + + ); + })()} + + + {t('common.cancel', 'Cancel')} + { + setDeleteConfirmOpen(false); + handleDelete(); + }} + className="bg-destructive text-destructive-foreground hover:bg-destructive/90" + > + {t('common.delete', 'Delete')} + + + + + + { + if (!open) { + setOriginalData({ ...formData }); + setServerCreatedProps(null); + setPendingNavAfterCreate(true); + } + }} + > + + + {t('form.createdSuccess', 'Created successfully')} + + {t( + 'form.createdServerGenerated', + 'The following values were generated by the server. Please save them now, they may not be retrievable later.', + )} + + +
+ {serverCreatedProps && + (() => { + const labelByName = new Map(); + for (const section of parentForm?.sections ?? []) { + for (const ff of section.fields) labelByName.set(ff.name, ff.label); + } + for (const section of currentForm?.sections ?? []) { + for (const ff of section.fields) labelByName.set(ff.name, ff.label); + } + return Object.entries(serverCreatedProps).map(([key, value]) => ( +
+ {labelByName.get(key) ?? key} + {String(value)} +
+ )); + })()} +
+ + + +
+
+
+ ); +} + +interface RenderableField { + formField: FormField; + field: Field; + visible: boolean; + enterpriseDisabled: boolean; +} + +interface RenderableSection { + title?: string; + fields: RenderableField[]; +} + +function buildSections( + form: Form | null, + fields: Fields | null, + isCreate: boolean, + edition: string, +): RenderableSection[] { + if (!form && !fields) return []; + + if (!form) { + const allFields = Object.entries(fields!.properties) + .map(([name, field]) => buildRenderableField({ name, label: name }, field, isCreate, edition)) + .filter((f): f is RenderableField => f !== null); + return [{ fields: allFields }]; + } + + return form.sections + .map((section) => { + const renderedFields = section.fields + .map((ff) => { + if (ff.name === '@type') { + const syntheticField: Field = { + description: '', + type: { type: 'string', format: 'string' }, + update: 'mutable', + }; + return { + formField: ff, + field: syntheticField, + visible: true, + enterpriseDisabled: false, + }; + } + const field = fields?.properties[ff.name]; + if (!field) return null; + return buildRenderableField(ff, field, isCreate, edition); + }) + .filter((f): f is RenderableField => f !== null); + + return { + title: section.title, + fields: renderedFields, + }; + }) + .filter((section) => section.fields.some((f) => f.visible)); +} + +function fieldReferencesInaccessibleObject( + field: Field, + schema: Schema, + canGet: (permissionPrefix: string) => boolean, +): boolean { + const isObjectAccessible = (objectName: string): boolean => { + const resolved = resolveObject(schema, objectName); + if (!resolved) return true; + return canGet(resolved.permissionPrefix); + }; + + const t = field.type; + switch (t.type) { + case 'objectId': + return !isObjectAccessible(t.objectName); + case 'object': + case 'objectList': + return !isObjectAccessible(t.objectName); + case 'set': + if (t.class.type === 'objectId') return !isObjectAccessible(t.class.objectName); + return false; + case 'map': + if (t.keyClass.type === 'objectId' && !isObjectAccessible(t.keyClass.objectName)) return true; + if (t.valueClass.type === 'object' && !isObjectAccessible(t.valueClass.objectName)) return true; + return false; + default: + return false; + } +} + +function buildRenderableField( + formField: FormField, + field: Field, + isCreate: boolean, + edition: string, +): RenderableField | null { + let visible = true; + let enterpriseDisabled = false; + + if (isCreate && field.update === 'serverSet') { + visible = false; + } + + if (field.enterprise) { + if (edition === 'oss') { + visible = false; + } else if (edition === 'community') { + enterpriseDisabled = true; + } + } + + return { formField, field, visible, enterpriseDisabled }; +} + +const SECRET_MASK_PLACEHOLDER = '*****'; + +function isOtpAuthValid(data: unknown): boolean { + if (data == null || typeof data !== 'object' || Array.isArray(data)) return true; + const obj = data as Record; + + for (const key of Object.keys(obj)) { + if (!isOtpAuthValid(obj[key])) return false; + } + + const hasOtpUrl = 'otpUrl' in obj; + const hasOtpCode = 'otpCode' in obj; + if (!hasOtpUrl || !hasOtpCode) return true; + + const otpUrl = obj.otpUrl; + const otpCode = obj.otpCode; + if (otpUrl == null || otpUrl === '') return true; + if (otpCode == null || otpCode === '' || otpCode === SECRET_MASK_PLACEHOLDER) { + return false; + } + return true; +} + +export default DynamicForm; diff --git a/src/components/forms/FieldWidget.tsx b/src/components/forms/FieldWidget.tsx new file mode 100644 index 0000000..ff42b99 --- /dev/null +++ b/src/components/forms/FieldWidget.tsx @@ -0,0 +1,2331 @@ +/* + * SPDX-FileCopyrightText: 2020 Stalwart Labs LLC + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL + */ + +import { useState, useEffect, type KeyboardEvent } from 'react'; +import { useTranslation } from 'react-i18next'; +import ReactMarkdown from 'react-markdown'; + +import { Input } from '@/components/ui/input'; +import { Textarea } from '@/components/ui/textarea'; +import { Button } from '@/components/ui/button'; +import { Switch } from '@/components/ui/switch'; +import { Badge } from '@/components/ui/badge'; +import { Checkbox } from '@/components/ui/checkbox'; +import { Label } from '@/components/ui/label'; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; +import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'; +import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'; +import { Combobox, type ComboboxOption } from '@/components/ui/combobox'; + +import { Plus, X, Eye, EyeOff, Loader2, Search, Check, ChevronRight } from 'lucide-react'; + +import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible'; + +import { ExpressionEditor } from '@/components/expression/ExpressionEditor'; +import { OtpAuthField } from '@/components/forms/OtpAuthField'; + +import { + bytesToHuman, + humanToBytes, + msToHuman, + humanToMs, + formatSize, + formatDuration, + SIZE_UNITS, + DURATION_UNITS, +} from '@/lib/durationFormat'; +import { resolveSchema, resolveVariantForm, resolveObject, buildEmbeddedDefaults } from '@/lib/schemaResolver'; +import { useAccountStore } from '@/stores/accountStore'; +import { useEffectiveEdition } from '@/components/forms/FormEditionContext'; +import { useObjectList, useObjectLabel, useNoPermissionMessage, type ObjectOption } from '@/lib/objectOptions'; +import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from '@/components/ui/command'; +import { jmapGet, getAccountId } from '@/services/jmap/client'; + +import type { Field, FormField, Schema, ScalarType, MapValueType, StringFormat, NumberFormat } from '@/types/schema'; + +export interface FieldWidgetProps { + field: Field; + formField: FormField; + value: unknown; + onChange: (value: unknown) => void; + readOnly: boolean; + error?: string; + schema: Schema; +} + +function getRequiredMarker(field: Field, readOnly: boolean): 'required' | 'optional' | null { + if (readOnly) return null; + if (field.update === 'serverSet') return null; + const t = field.type; + const eligible = + t.type === 'string' || + t.type === 'number' || + t.type === 'utcDateTime' || + t.type === 'enum' || + t.type === 'blobId' || + t.type === 'objectId'; + if (!eligible) return null; + if ('nullable' in t && t.nullable) return 'optional'; + return 'required'; +} + +export function FieldWidget(props: FieldWidgetProps) { + const { t } = useTranslation(); + const { field, formField, value, onChange, readOnly, error, schema } = props; + const ft = field.type; + const edition = useEffectiveEdition(); + + if (field.enterprise && edition === 'oss') return null; + + const marker = getRequiredMarker(field, readOnly); + + const isSelfContained = ft.type === 'object' && ft.objectName === 'x:OtpAuth'; + + const widget = (() => { + switch (ft.type) { + case 'string': + return ( + + ); + case 'number': + return ( + + ); + case 'utcDateTime': + return ; + case 'boolean': + return ; + case 'enum': + return ( + + ); + case 'blobId': + return ; + case 'objectId': + return ( + + ); + case 'object': + return ( + + ); + case 'objectList': + return ( + + ); + case 'set': + return ( + + ); + case 'map': + return ( + + ); + default: { + const _: never = ft; + void _; + return

Unsupported field type

; + } + } + })(); + + if (isSelfContained) { + return ( +
+ {widget} + {error &&

{error}

} +
+ ); + } + + return ( +
+
+ +
+ {field.description && ( +
+ {field.description.replace(/\\n/g, '\n')} +
+ )} + {widget} + {error &&

{error}

} +
+ ); +} + +interface BufferedInputProps extends Omit, 'onChange' | 'value'> { + value: string; + onCommit: (v: string) => void; +} + +function BufferedInput({ value, onCommit, onBlur, onKeyDown, ...rest }: BufferedInputProps) { + const [local, setLocal] = useState(value); + + useEffect(() => { + setLocal(value); + }, [value]); + + const commit = () => { + if (local !== value) onCommit(local); + }; + + return ( + setLocal(e.target.value)} + onBlur={(e) => { + commit(); + onBlur?.(e); + }} + onKeyDown={(e) => { + if (e.key === 'Enter' && (rest.type ?? 'text') !== 'textarea') { + commit(); + } + onKeyDown?.(e); + }} + /> + ); +} + +interface BufferedTextareaProps extends Omit, 'onChange' | 'value'> { + value: string; + onCommit: (v: string) => void; +} + +function BufferedTextarea({ value, onCommit, onBlur, ...rest }: BufferedTextareaProps) { + const [local, setLocal] = useState(value); + + useEffect(() => { + setLocal(value); + }, [value]); + + return ( +