diff --git a/src/problem1/README.md b/src/problem1/README.md
new file mode 100644
index 0000000000..e24abe1a21
--- /dev/null
+++ b/src/problem1/README.md
@@ -0,0 +1,22 @@
+# Three way to sum to n
+
+A solution for three way to sum to n problem
+
+## The problem
+
+Provide 3 unique implementations of the following function in JavaScript.
+
+**Input**: `n` - any integer
+
+_Assuming this input will always produce a result lesser than `Number.MAX_SAFE_INTEGER`_.
+
+**Output**: `return` - summation to `n`, i.e. `sum_to_n(5) === 1 + 2 + 3 + 4 + 5 === 15`.
+
+## Running the code
+
+Open terminal then running the script:
+
+```bash
+npx tsc three-way-sum.ts
+node .\three-way-sum.js
+```
diff --git a/src/problem1/three-way-sum.ts b/src/problem1/three-way-sum.ts
new file mode 100644
index 0000000000..e296ec3552
--- /dev/null
+++ b/src/problem1/three-way-sum.ts
@@ -0,0 +1,53 @@
+// Solution 1: Iterative
+const sum_to_n_a = function (n: number) {
+ let s = 0;
+ for (let i = 1; i <= n; i++) {
+ s += i;
+ }
+ return s;
+};
+
+// Solution 2: Array functional using reduce
+const sum_to_n_b = function (n: number) {
+ const arr = Array.from({ length: n }, (_, i) => i + 1);
+ return arr.reduce((a, v) => a + v, 0);
+};
+
+// Solution 3: Mathematical formula
+const sum_to_n_c = function (n: number) {
+ return (n * (n + 1)) / 2;
+};
+
+// Test Case
+const test = () => {
+ // Replace this test case whenever you want to change
+ const test_cases = [
+ { n: 0, expected: 0 },
+ { n: 1, expected: 1 },
+ { n: 50, expected: 1275 },
+ { n: 100, expected: 5050 },
+ { n: 5000, expected: 12502500 },
+ { n: 10000, expected: 50005000 },
+ ];
+
+ test_cases.forEach(({ n, expected }) => {
+ console.log(`\nTest case: n=${n}`);
+ const result_a = sum_to_n_a(n);
+ console.log(
+ `Function: Iterative, Input: ${n}, Output: ${result_a}`,
+ result_a === expected ? "✅ Correct" : `❌ Wrong Expected: ${expected}`,
+ );
+ const result_b = sum_to_n_b(n);
+ console.log(
+ `Function: Functional, Input: ${n}, Output: ${result_b}`,
+ result_b === expected ? "✅ Correct" : `❌ Wrong Expected: ${expected}`,
+ );
+ const result_c = sum_to_n_c(n);
+ console.log(
+ `Function: Mathematical, Input: ${n}, Output: ${result_c}`,
+ result_c === expected ? "✅ Correct" : `❌ Wrong Expected: ${expected}`,
+ );
+ });
+};
+
+test();
diff --git a/src/problem2/fancy-form/.gitignore b/src/problem2/fancy-form/.gitignore
new file mode 100644
index 0000000000..a547bf36d8
--- /dev/null
+++ b/src/problem2/fancy-form/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/src/problem2/fancy-form/.husky/pre-commit b/src/problem2/fancy-form/.husky/pre-commit
new file mode 100644
index 0000000000..83a8446f25
--- /dev/null
+++ b/src/problem2/fancy-form/.husky/pre-commit
@@ -0,0 +1 @@
+npm run lint:fix
\ No newline at end of file
diff --git a/src/problem2/fancy-form/.prettierignore b/src/problem2/fancy-form/.prettierignore
new file mode 100644
index 0000000000..1b8ac8894b
--- /dev/null
+++ b/src/problem2/fancy-form/.prettierignore
@@ -0,0 +1,3 @@
+# Ignore artifacts:
+build
+coverage
diff --git a/src/problem2/fancy-form/.prettierrc b/src/problem2/fancy-form/.prettierrc
new file mode 100644
index 0000000000..c9a73d72bd
--- /dev/null
+++ b/src/problem2/fancy-form/.prettierrc
@@ -0,0 +1,11 @@
+{
+ "tabWidth": 2,
+ "singleQuote": true,
+ "trailingComma": "es5",
+ "printWidth": 80,
+ "plugins": ["prettier-plugin-tailwindcss", "@trivago/prettier-plugin-sort-imports"],
+ "importOrder": ["^@core/(.*)$", "^@server/(.*)$", "^@ui/(.*)$", "^[./]"],
+ "importOrderSeparation": true,
+ "importOrderSortSpecifiers": true
+
+}
diff --git a/src/problem2/fancy-form/README.md b/src/problem2/fancy-form/README.md
new file mode 100644
index 0000000000..eea958e6b1
--- /dev/null
+++ b/src/problem2/fancy-form/README.md
@@ -0,0 +1,45 @@
+# Fancy Form
+
+This project is a functional web application for swapping tokens, built with React, TypeScript, Tailwind CSS, and Shadcn UI. It demonstrates a complete flow from form submission with validation to mock API interaction.
+
+## Screenshots
+
+
+
+## Features
+
+- **Token Swapping Interface**: A clean, responsive form for swapping tokens.
+- **Form Management**: Built with `react-hook-form` for robust form handling.
+- **Input Validation**: Schema-based validation using `zod` to ensure data integrity.
+- **Dynamic States**: Handles loading, success, and error states for a seamless user experience.
+- **Custom Hooks**: Features hooks for currency input formatting and currency calculations.
+- **Mock API**: Simulates blockchain transaction delays and responses.
+
+## Installation
+
+1. Clone the repository (if applicable).
+2. Navigate to the project directory.
+3. Install dependencies:
+
+ ```bash
+ npm install
+ ```
+
+## Usage
+
+Start the development server:
+
+```bash
+npm run dev
+```
+
+The application will be accessible at `http://localhost:5173`.
+
+## Technology Stack
+
+- **Language**: [TypeScript](https://www.typescriptlang.org/)
+- **Framework**: [React](https://react.dev/) + [Vite](https://vitejs.dev/)
+- **State Management**: [Zustand](https://zustand.dev/)
+- **Styling**: [Tailwind CSS](https://tailwindcss.com/)
+- **UI Components**: [Shadcn UI](https://ui.shadcn.com/)
+- **Icons**: [lucide-react](https://lucide.dev/)
diff --git a/src/problem2/fancy-form/components.json b/src/problem2/fancy-form/components.json
new file mode 100644
index 0000000000..301c1e68f4
--- /dev/null
+++ b/src/problem2/fancy-form/components.json
@@ -0,0 +1,25 @@
+{
+ "$schema": "https://ui.shadcn.com/schema.json",
+ "style": "radix-luma",
+ "rsc": false,
+ "tsx": true,
+ "tailwind": {
+ "config": "",
+ "css": "src/index.css",
+ "baseColor": "neutral",
+ "cssVariables": true,
+ "prefix": ""
+ },
+ "iconLibrary": "lucide",
+ "rtl": false,
+ "aliases": {
+ "components": "@/components",
+ "utils": "@/lib/utils",
+ "ui": "@/components/ui",
+ "lib": "@/lib",
+ "hooks": "@/hooks"
+ },
+ "menuColor": "default",
+ "menuAccent": "subtle",
+ "registries": {}
+}
diff --git a/src/problem2/fancy-form/eslint.config.js b/src/problem2/fancy-form/eslint.config.js
new file mode 100644
index 0000000000..a930f6cda3
--- /dev/null
+++ b/src/problem2/fancy-form/eslint.config.js
@@ -0,0 +1,38 @@
+import js from '@eslint/js';
+import prettier from 'eslint-plugin-prettier/recommended';
+import reactHooks from 'eslint-plugin-react-hooks';
+import reactRefresh from 'eslint-plugin-react-refresh';
+import { defineConfig, globalIgnores } from 'eslint/config';
+import globals from 'globals';
+import tseslint from 'typescript-eslint';
+
+export default defineConfig([
+ globalIgnores(['dist']),
+ {
+ files: ['**/*.{ts,tsx}'],
+ extends: [
+ js.configs.recommended,
+ tseslint.configs.recommended,
+ reactHooks.configs.flat.recommended,
+ reactRefresh.configs.vite,
+ prettier,
+ ],
+ languageOptions: {
+ globals: globals.browser,
+ },
+ rules: {
+ '@typescript-eslint/no-unused-vars': [
+ 'warn',
+ {
+ varsIgnorePattern: '^_',
+ argsIgnorePattern: '^_',
+ },
+ ],
+ 'react-hooks/exhaustive-deps': 'warn',
+ 'react-hooks/rules-of-hooks': 'error',
+ 'react/prop-types': 'off',
+ 'react/jsx-no-unescaped-entities': 'off',
+ 'no-unused-vars': 'off',
+ },
+ },
+]);
diff --git a/src/problem2/fancy-form/index.html b/src/problem2/fancy-form/index.html
new file mode 100644
index 0000000000..b4b859e881
--- /dev/null
+++ b/src/problem2/fancy-form/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ Fancy form
+
+
+
+
+
+
+
+
diff --git a/src/problem2/fancy-form/package-lock.json b/src/problem2/fancy-form/package-lock.json
new file mode 100644
index 0000000000..3c8f97ab18
--- /dev/null
+++ b/src/problem2/fancy-form/package-lock.json
@@ -0,0 +1,9082 @@
+{
+ "name": "fancy-form",
+ "version": "0.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "fancy-form",
+ "version": "0.0.0",
+ "dependencies": {
+ "@fontsource-variable/inter": "^5.2.8",
+ "@hookform/resolvers": "^5.2.2",
+ "@tailwindcss/vite": "^4.3.0",
+ "class-variance-authority": "^0.7.1",
+ "clsx": "^2.1.1",
+ "lucide-react": "^1.14.0",
+ "radix-ui": "^1.4.3",
+ "react": "^19.2.6",
+ "react-dom": "^19.2.6",
+ "react-hook-form": "^7.75.0",
+ "shadcn": "^4.7.0",
+ "tailwind-merge": "^3.6.0",
+ "tailwindcss": "^4.3.0",
+ "tw-animate-css": "^1.4.0",
+ "zod": "^4.4.3",
+ "zustand": "^5.0.13"
+ },
+ "devDependencies": {
+ "@eslint/js": "^10.0.1",
+ "@trivago/prettier-plugin-sort-imports": "^6.0.2",
+ "@types/node": "^24.12.4",
+ "@types/react": "^19.2.14",
+ "@types/react-dom": "^19.2.3",
+ "@vitejs/plugin-react": "^6.0.1",
+ "eslint": "^10.3.0",
+ "eslint-config-prettier": "^10.1.8",
+ "eslint-plugin-prettier": "^5.5.5",
+ "eslint-plugin-react-hooks": "^7.1.1",
+ "eslint-plugin-react-refresh": "^0.5.2",
+ "globals": "^17.6.0",
+ "husky": "^9.1.7",
+ "lint-staged": "^17.0.4",
+ "prettier": "^3.8.3",
+ "prettier-plugin-tailwindcss": "^0.8.0",
+ "typescript": "~6.0.2",
+ "typescript-eslint": "^8.59.3",
+ "vite": "^8.0.12"
+ }
+ },
+ "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==",
+ "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.3",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.3.tgz",
+ "integrity": "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==",
+ "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==",
+ "license": "MIT",
+ "peer": true,
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.29.0",
+ "@babel/types": "^7.29.0",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-annotate-as-pure": {
+ "version": "7.27.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
+ "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.27.3"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz",
+ "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.28.6",
+ "@babel/helper-validator-option": "^7.27.1",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-create-class-features-plugin": {
+ "version": "7.29.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.3.tgz",
+ "integrity": "sha512-RpLYy2sb51oNLjuu1iD3bwBqCBWUzjO0ocp+iaCP/lJtb2CPLcnC2Fftw+4sAzaMELGeWTgExSKADbdo0GFVzA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.27.3",
+ "@babel/helper-member-expression-to-functions": "^7.28.5",
+ "@babel/helper-optimise-call-expression": "^7.27.1",
+ "@babel/helper-replace-supers": "^7.28.6",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
+ "@babel/traverse": "^7.29.0",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-globals": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
+ "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-member-expression-to-functions": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz",
+ "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.28.5",
+ "@babel/types": "^7.28.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz",
+ "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.28.6",
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "@babel/traverse": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-optimise-call-expression": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz",
+ "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz",
+ "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-replace-supers": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz",
+ "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-member-expression-to-functions": "^7.28.5",
+ "@babel/helper-optimise-call-expression": "^7.27.1",
+ "@babel/traverse": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ }
+ },
+ "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz",
+ "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/traverse": "^7.27.1",
+ "@babel/types": "^7.27.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
+ "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "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==",
+ "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.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.3.tgz",
+ "integrity": "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.29.0"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz",
+ "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz",
+ "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-modules-commonjs": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz",
+ "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-module-transforms": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz",
+ "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-annotate-as-pure": "^7.27.3",
+ "@babel/helper-create-class-features-plugin": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
+ "@babel/plugin-syntax-typescript": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/preset-typescript": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz",
+ "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-validator-option": "^7.27.1",
+ "@babel/plugin-syntax-jsx": "^7.27.1",
+ "@babel/plugin-transform-modules-commonjs": "^7.27.1",
+ "@babel/plugin-transform-typescript": "^7.28.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ }
+ },
+ "node_modules/@babel/template": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
+ "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.29.0",
+ "@babel/generator": "^7.29.0",
+ "@babel/helper-globals": "^7.28.0",
+ "@babel/parser": "^7.29.0",
+ "@babel/template": "^7.28.6",
+ "@babel/types": "^7.29.0",
+ "debug": "^4.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/types": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
+ "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@dotenvx/dotenvx": {
+ "version": "1.65.0",
+ "resolved": "https://registry.npmjs.org/@dotenvx/dotenvx/-/dotenvx-1.65.0.tgz",
+ "integrity": "sha512-v4FA/Lw3pTEloLxBqTOaYDX6MNo0Jo7lGBsPZhwnJBqRJp0AzQg1ZZNxrFsh6HVC6QWeWrfIKLn0y2eyIXaVDg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "commander": "^11.1.0",
+ "dotenv": "^17.2.1",
+ "eciesjs": "^0.4.10",
+ "execa": "^5.1.1",
+ "fdir": "^6.2.0",
+ "ignore": "^5.3.0",
+ "object-treeify": "1.1.33",
+ "picomatch": "^4.0.4",
+ "which": "^4.0.0",
+ "yocto-spinner": "^1.1.0"
+ },
+ "bin": {
+ "dotenvx": "src/cli/dotenvx.js"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
+ "node_modules/@dotenvx/dotenvx/node_modules/commander": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
+ "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/@dotenvx/dotenvx/node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/@dotenvx/dotenvx/node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@dotenvx/dotenvx/node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/@dotenvx/dotenvx/node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@dotenvx/dotenvx/node_modules/isexe": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz",
+ "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@dotenvx/dotenvx/node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@dotenvx/dotenvx/node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@dotenvx/dotenvx/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "license": "ISC"
+ },
+ "node_modules/@dotenvx/dotenvx/node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@dotenvx/dotenvx/node_modules/which": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz",
+ "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^3.1.1"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/@ecies/ciphers": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/@ecies/ciphers/-/ciphers-0.2.6.tgz",
+ "integrity": "sha512-patgsRPKGkhhoBjETV4XxD0En4ui5fbX0hzayqI3M8tvNMGUoUvmyYAIWwlxBc1KX5cturfqByYdj5bYGRpN9g==",
+ "license": "MIT",
+ "engines": {
+ "bun": ">=1",
+ "deno": ">=2.7.10",
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "@noble/ciphers": "^1.0.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==",
+ "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.23.5",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz",
+ "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/object-schema": "^3.0.5",
+ "debug": "^4.3.1",
+ "minimatch": "^10.2.4"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ }
+ },
+ "node_modules/@eslint/config-helpers": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.5.tgz",
+ "integrity": "sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^1.2.1"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ }
+ },
+ "node_modules/@eslint/core": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz",
+ "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz",
+ "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "eslint": "^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@eslint/object-schema": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz",
+ "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ }
+ },
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.1.tgz",
+ "integrity": "sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^1.2.1",
+ "levn": "^0.4.1"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ }
+ },
+ "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/@fontsource-variable/inter": {
+ "version": "5.2.8",
+ "resolved": "https://registry.npmjs.org/@fontsource-variable/inter/-/inter-5.2.8.tgz",
+ "integrity": "sha512-kOfP2D+ykbcX/P3IFnokOhVRNoTozo5/JxhAIVYLpea/UBmCQ/YWPBfWIDuBImXX/15KH+eKh4xpEUyS2sQQGQ==",
+ "license": "OFL-1.1",
+ "funding": {
+ "url": "https://github.com/sponsors/ayuhito"
+ }
+ },
+ "node_modules/@hono/node-server": {
+ "version": "1.19.14",
+ "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.14.tgz",
+ "integrity": "sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.14.1"
+ },
+ "peerDependencies": {
+ "hono": "^4"
+ }
+ },
+ "node_modules/@hookform/resolvers": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-5.2.2.tgz",
+ "integrity": "sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==",
+ "license": "MIT",
+ "dependencies": {
+ "@standard-schema/utils": "^0.3.0"
+ },
+ "peerDependencies": {
+ "react-hook-form": "^7.55.0"
+ }
+ },
+ "node_modules/@humanfs/core": {
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz",
+ "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanfs/types": "^0.15.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/node": {
+ "version": "0.16.8",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz",
+ "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanfs/core": "^0.19.2",
+ "@humanfs/types": "^0.15.0",
+ "@humanwhocodes/retry": "^0.4.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/@humanfs/types": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz",
+ "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==",
+ "dev": true,
+ "license": "Apache-2.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/@inquirer/ansi": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-2.0.5.tgz",
+ "integrity": "sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
+ }
+ },
+ "node_modules/@inquirer/confirm": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.13.tgz",
+ "integrity": "sha512-wkGPC7yJ5WJk1DJ5SX7fzk+gfj4BM8cf5dDDi71B/551xHrdsZVRJOC0WyikXd0pEsb/9cLniuE4atbsMqmFkw==",
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/core": "^11.1.10",
+ "@inquirer/type": "^4.0.5"
+ },
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/core": {
+ "version": "11.1.10",
+ "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.1.10.tgz",
+ "integrity": "sha512-a4Q5BXHQAHa9eO202sTaFCHFYVB3x5fauDuThEAdZ9gfn76pSxiKU7wWcEH0N1O0XmQvNfQNU6QXpiRxmYQx+A==",
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/ansi": "^2.0.5",
+ "@inquirer/figures": "^2.0.5",
+ "@inquirer/type": "^4.0.5",
+ "cli-width": "^4.1.0",
+ "fast-wrap-ansi": "^0.2.0",
+ "mute-stream": "^3.0.0",
+ "signal-exit": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@inquirer/figures": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-2.0.5.tgz",
+ "integrity": "sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
+ }
+ },
+ "node_modules/@inquirer/type": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-4.0.5.tgz",
+ "integrity": "sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0"
+ },
+ "peerDependencies": {
+ "@types/node": ">=18"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
+ }
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "node_modules/@modelcontextprotocol/sdk": {
+ "version": "1.29.0",
+ "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz",
+ "integrity": "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@hono/node-server": "^1.19.9",
+ "ajv": "^8.17.1",
+ "ajv-formats": "^3.0.1",
+ "content-type": "^1.0.5",
+ "cors": "^2.8.5",
+ "cross-spawn": "^7.0.5",
+ "eventsource": "^3.0.2",
+ "eventsource-parser": "^3.0.0",
+ "express": "^5.2.1",
+ "express-rate-limit": "^8.2.1",
+ "hono": "^4.11.4",
+ "jose": "^6.1.3",
+ "json-schema-typed": "^8.0.2",
+ "pkce-challenge": "^5.0.0",
+ "raw-body": "^3.0.0",
+ "zod": "^3.25 || ^4.0",
+ "zod-to-json-schema": "^3.25.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@cfworker/json-schema": "^4.1.1",
+ "zod": "^3.25 || ^4.0"
+ },
+ "peerDependenciesMeta": {
+ "@cfworker/json-schema": {
+ "optional": true
+ },
+ "zod": {
+ "optional": false
+ }
+ }
+ },
+ "node_modules/@modelcontextprotocol/sdk/node_modules/ajv": {
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
+ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/@modelcontextprotocol/sdk/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "license": "MIT"
+ },
+ "node_modules/@mswjs/interceptors": {
+ "version": "0.41.9",
+ "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.41.9.tgz",
+ "integrity": "sha512-VVPPgHyQ6ShqnrmDWuxjmUIsO9gWyOZFmuOfLd9LfBGQJwZfy0gvv9pbHSJuoFNIYC7ZDX9aoFwowjcdSC4E8w==",
+ "license": "MIT",
+ "dependencies": {
+ "@open-draft/deferred-promise": "^2.2.0",
+ "@open-draft/logger": "^0.3.0",
+ "@open-draft/until": "^2.0.0",
+ "is-node-process": "^1.2.0",
+ "outvariant": "^1.4.3",
+ "strict-event-emitter": "^0.5.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@mswjs/interceptors/node_modules/@open-draft/deferred-promise": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz",
+ "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==",
+ "license": "MIT"
+ },
+ "node_modules/@napi-rs/wasm-runtime": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz",
+ "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==",
+ "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/ciphers": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz",
+ "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@noble/curves": {
+ "version": "1.9.7",
+ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz",
+ "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==",
+ "license": "MIT",
+ "dependencies": {
+ "@noble/hashes": "1.8.0"
+ },
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@noble/hashes": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz",
+ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==",
+ "license": "MIT",
+ "engines": {
+ "node": "^14.21.3 || >=16"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@open-draft/deferred-promise": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-3.0.0.tgz",
+ "integrity": "sha512-XW375UK8/9SqUVNVa6M0yEy8+iTi4QN5VZ7aZuRFQmy76LRwI9wy5F4YIBU6T+eTe2/DNDo8tqu8RHlwLHM6RA==",
+ "license": "MIT"
+ },
+ "node_modules/@open-draft/logger": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz",
+ "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-node-process": "^1.2.0",
+ "outvariant": "^1.4.0"
+ }
+ },
+ "node_modules/@open-draft/until": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz",
+ "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==",
+ "license": "MIT"
+ },
+ "node_modules/@oxc-project/types": {
+ "version": "0.129.0",
+ "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.129.0.tgz",
+ "integrity": "sha512-3oz8m3FGdr2nDXVqmFUw7jolKliC4MoyXYIG2c7gpjBnzUWQpUGIYcXYKxTdTi+N2jusvt610ckTMkxdwHkYEg==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/Boshen"
+ }
+ },
+ "node_modules/@pkgr/core": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz",
+ "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/pkgr"
+ }
+ },
+ "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-accessible-icon": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.7.tgz",
+ "integrity": "sha512-XM+E4WXl0OqUJFovy6GjmxxFyx9opfCAIUku4dlKRd5YEPqt4kALOkQOp0Of6reHuUkJuiPBEc5k0o4z4lTC8A==",
+ "license": "MIT",
+ "dependencies": {
+ "@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-accordion": {
+ "version": "1.2.12",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.12.tgz",
+ "integrity": "sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.3",
+ "@radix-ui/react-collapsible": "1.1.12",
+ "@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-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-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-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-aspect-ratio": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.7.tgz",
+ "integrity": "sha512-Yq6lvO9HQyPwev1onK1daHCHqXVLzPhSVjmsNjCa2Zcxy2f7uJD2itDtxknv6FzAKCwD1qQkeVDmX/cev13n/g==",
+ "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-avatar": {
+ "version": "1.1.10",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.10.tgz",
+ "integrity": "sha512-V8piFfWapM5OmNCXTzVQY+E1rDa53zY+MQ4Y7356v4fFz6vqCyUtIz2rUD44ZEdwg78/jKmMJHj07+C/Z/rcog==",
+ "license": "MIT",
+ "dependencies": {
+ "@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-is-hydrated": "0.1.0",
+ "@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-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-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-context-menu": {
+ "version": "2.2.16",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.2.16.tgz",
+ "integrity": "sha512-O8morBEW+HsVG28gYDZPTrT9UUovQUlJue5YO836tiTJhuIWBm/zQHc7j388sHWtdH/xUZurK9olD2+pcqx5ww==",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.3",
+ "@radix-ui/react-context": "1.1.2",
+ "@radix-ui/react-menu": "2.1.16",
+ "@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-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-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-form": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-form/-/react-form-0.1.8.tgz",
+ "integrity": "sha512-QM70k4Zwjttifr5a4sZFts9fn8FzHYvQ5PiB19O2HsYibaHSVt9fH9rzB0XZo/YcM+b7t/p7lYCT/F5eOeF5yQ==",
+ "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-label": "2.1.7",
+ "@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-hover-card": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-hover-card/-/react-hover-card-1.1.15.tgz",
+ "integrity": "sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg==",
+ "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-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-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-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.7",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.7.tgz",
+ "integrity": "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==",
+ "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-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-menubar": {
+ "version": "1.1.16",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-menubar/-/react-menubar-1.1.16.tgz",
+ "integrity": "sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA==",
+ "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-menu": "2.1.16",
+ "@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-navigation-menu": {
+ "version": "1.2.14",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.14.tgz",
+ "integrity": "sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==",
+ "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-id": "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-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"
+ },
+ "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-one-time-password-field": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-one-time-password-field/-/react-one-time-password-field-0.1.8.tgz",
+ "integrity": "sha512-ycS4rbwURavDPVjCb5iS3aG4lURFDILi6sKI/WITUMZ13gMmn/xGjpLoqBAalhJaDk8I3UbCM5GzKHrnzwHbvg==",
+ "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-primitive": "2.1.3",
+ "@radix-ui/react-roving-focus": "1.1.11",
+ "@radix-ui/react-use-controllable-state": "1.2.2",
+ "@radix-ui/react-use-effect-event": "0.0.2",
+ "@radix-ui/react-use-is-hydrated": "0.1.0",
+ "@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-password-toggle-field": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-password-toggle-field/-/react-password-toggle-field-0.1.3.tgz",
+ "integrity": "sha512-/UuCrDBWravcaMix4TdT+qlNdVwOM1Nck9kWx/vafXsdfj1ChfhOdfi3cy9SGBpWgTXwYCuboT/oYpJy3clqfw==",
+ "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-primitive": "2.1.3",
+ "@radix-ui/react-use-controllable-state": "1.2.2",
+ "@radix-ui/react-use-effect-event": "0.0.2",
+ "@radix-ui/react-use-is-hydrated": "0.1.0"
+ },
+ "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": {
+ "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-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-progress": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.7.tgz",
+ "integrity": "sha512-vPdg/tF6YC/ynuBIJlk1mm7Le0VgW6ub6J2UWnTQ7/D23KXcPI1qy+0vBkgKgd38RCMJavBXpB83HPNFMTb0Fg==",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/react-context": "1.1.2",
+ "@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-radio-group": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.3.8.tgz",
+ "integrity": "sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ==",
+ "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-direction": "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",
+ "@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-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-separator": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.7.tgz",
+ "integrity": "sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==",
+ "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-slider": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.3.6.tgz",
+ "integrity": "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==",
+ "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-primitive": "2.1.3",
+ "@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-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-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-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-toast": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.15.tgz",
+ "integrity": "sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g==",
+ "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-dismissable-layer": "1.1.11",
+ "@radix-ui/react-portal": "1.1.9",
+ "@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-controllable-state": "1.2.2",
+ "@radix-ui/react-use-layout-effect": "1.1.1",
+ "@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-toggle": {
+ "version": "1.1.10",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz",
+ "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.3",
+ "@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-toggle-group": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz",
+ "integrity": "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==",
+ "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-primitive": "2.1.3",
+ "@radix-ui/react-roving-focus": "1.1.11",
+ "@radix-ui/react-toggle": "1.1.10",
+ "@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-toolbar": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-toolbar/-/react-toolbar-1.1.11.tgz",
+ "integrity": "sha512-4ol06/1bLoFu1nwUqzdD4Y5RZ9oDdKeiHIsntug54Hcr1pgaHiPqHFEaXI1IFP/EsOfROQZ8Mig9VTIRza6Tjg==",
+ "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-primitive": "2.1.3",
+ "@radix-ui/react-roving-focus": "1.1.11",
+ "@radix-ui/react-separator": "1.1.7",
+ "@radix-ui/react-toggle-group": "1.1.11"
+ },
+ "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-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-is-hydrated": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.0.tgz",
+ "integrity": "sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==",
+ "license": "MIT",
+ "dependencies": {
+ "use-sync-external-store": "^1.5.0"
+ },
+ "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/@rolldown/binding-android-arm64": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0.tgz",
+ "integrity": "sha512-TWMZnRLMe63C2Lhyicviu7ZHaU4kxa6PS3rofvc9GmcvptzNN11BcfQ4Sl7MwTOsisQoa2keB/EBdNCAnUo8vA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-darwin-arm64": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0.tgz",
+ "integrity": "sha512-6XcD+8k0gPVItNagEw78/qqcBDwKcwDYS8V2hRmVsfUSIrd8cWe/CBvRDI5toqFyPfj+FJr6t8U6Xj2P2prEew==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-darwin-x64": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0.tgz",
+ "integrity": "sha512-iN/tWVXRQDWvmZlKdceP1Dwug9GDpEymhb9p4xnEe6zvCg5lFmzVljl+1qR1NVx3yfGpr2Na+CuLmv5IU8uzfQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-freebsd-x64": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0.tgz",
+ "integrity": "sha512-jjQMDvvwSOuhOwMszD/klSOjyWMM3zI64hWTj9KT5x4MxRbZAf+7vLQ6qouRhtsLVFHr3f0ILaJAfgENPiQdAQ==",
+ "cpu": [
+ "x64"
+ ],
+ "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",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0.tgz",
+ "integrity": "sha512-d//Dtg2x6/m3mbV64yUGNnDGNZaDGRpDLLNGerHQUVObuNaIQaaDp25yUiqGXtHEXX+NP2d0wAlmKgpYgIAJ2A==",
+ "cpu": [
+ "arm"
+ ],
+ "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",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0.tgz",
+ "integrity": "sha512-n7Ofp0mx+aB2cC+Sdy5YtMnXtY9lchnHbY+3Yt0uq9JsWQExf4f5Whu0tK0R8Jdc9S6RchTHjIFY7uc92puOVQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "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",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0.tgz",
+ "integrity": "sha512-EIVjy2cgd7uuMMo94FVkBp7F6DhcZAUwNURkSG3RwUmvAXR6s0ISxM81U+IydcZByPG0pZIHsf1b6kTxoFDgJA==",
+ "cpu": [
+ "arm64"
+ ],
+ "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",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0.tgz",
+ "integrity": "sha512-JEwwOPcwTLAcpDQlqSmjEmfs63xJnSiUNIGvLcDLUHCWK4XowpS/7c7tUsUH6uT/ct6bMUTdXKfI8967FYj6mg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "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",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0.tgz",
+ "integrity": "sha512-0wjCFhLrihtAubnT9iA0N++0pSV0z5Hg7tNGdNJ4RFaINceHadoF+kiFGyY1qSSNVIAZtLotG8Ju1bgDPkjnFA==",
+ "cpu": [
+ "s390x"
+ ],
+ "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",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0.tgz",
+ "integrity": "sha512-Dfn7iak9BcMMePxcoJfpSbWqnEyrp/dRF63/8qW/eHBdOZov6x5aShLLEYGYdIeSJ6vMLK/XCVB+lGIxm41bQA==",
+ "cpu": [
+ "x64"
+ ],
+ "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",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0.tgz",
+ "integrity": "sha512-5/utzzDmD/pD/bmuaUcbTf/sZYy0aztwIVlfpoW1fTjCZ0BaPOMVWGZL1zvgxyi7ZIVYWlxKONHmSbHuiOh8Jw==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-openharmony-arm64": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0.tgz",
+ "integrity": "sha512-ouJs8VcUomfLfpbUECqFMRqdV4x6aeAK3MA4m6vTrJJjKyWTV5KnxZx7Jd9G+GlDaQQxubcba00x16OyJ1meig==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-wasm32-wasi": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0.tgz",
+ "integrity": "sha512-E+oHKGiDA+lsKMmFtffDDw91EryDT7uJocrIuCHqhm6bCTM6xFK+3gaCkYOHfPwQr0cCNarSM2xaELoQDz9jJg==",
+ "cpu": [
+ "wasm32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/core": "1.10.0",
+ "@emnapi/runtime": "1.10.0",
+ "@napi-rs/wasm-runtime": "^1.1.4"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/binding-win32-arm64-msvc": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0.tgz",
+ "integrity": "sha512-yYK02n8Rngo+gbm1y6G0+7jk1sJ/2Wt7K0me0Y7k/ErBpyf+LJ2gFpqWVTcRV1rUepBlQRmpgWkTQCiiwrK0Ow==",
+ "cpu": [
+ "arm64"
+ ],
+ "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",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0.tgz",
+ "integrity": "sha512-14bpChMahXRRXiTwahSl+zzHPW6qQTXtkMuJBFlbo+pqSAews2d4BdCSHfrJ/MBsCZtpmTafsY+1QhBzitcmdg==",
+ "cpu": [
+ "x64"
+ ],
+ "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/@sec-ant/readable-stream": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
+ "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==",
+ "license": "MIT"
+ },
+ "node_modules/@sindresorhus/merge-streams": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz",
+ "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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.3.0",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.0.tgz",
+ "integrity": "sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/remapping": "^2.3.5",
+ "enhanced-resolve": "^5.21.0",
+ "jiti": "^2.6.1",
+ "lightningcss": "1.32.0",
+ "magic-string": "^0.30.21",
+ "source-map-js": "^1.2.1",
+ "tailwindcss": "4.3.0"
+ }
+ },
+ "node_modules/@tailwindcss/oxide": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.0.tgz",
+ "integrity": "sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20"
+ },
+ "optionalDependencies": {
+ "@tailwindcss/oxide-android-arm64": "4.3.0",
+ "@tailwindcss/oxide-darwin-arm64": "4.3.0",
+ "@tailwindcss/oxide-darwin-x64": "4.3.0",
+ "@tailwindcss/oxide-freebsd-x64": "4.3.0",
+ "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.0",
+ "@tailwindcss/oxide-linux-arm64-gnu": "4.3.0",
+ "@tailwindcss/oxide-linux-arm64-musl": "4.3.0",
+ "@tailwindcss/oxide-linux-x64-gnu": "4.3.0",
+ "@tailwindcss/oxide-linux-x64-musl": "4.3.0",
+ "@tailwindcss/oxide-wasm32-wasi": "4.3.0",
+ "@tailwindcss/oxide-win32-arm64-msvc": "4.3.0",
+ "@tailwindcss/oxide-win32-x64-msvc": "4.3.0"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-android-arm64": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.0.tgz",
+ "integrity": "sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-arm64": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.0.tgz",
+ "integrity": "sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-darwin-x64": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.0.tgz",
+ "integrity": "sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-freebsd-x64": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.0.tgz",
+ "integrity": "sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.0.tgz",
+ "integrity": "sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-gnu": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.0.tgz",
+ "integrity": "sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-arm64-musl": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.0.tgz",
+ "integrity": "sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-gnu": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.0.tgz",
+ "integrity": "sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-linux-x64-musl": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.0.tgz",
+ "integrity": "sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-wasm32-wasi": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.0.tgz",
+ "integrity": "sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA==",
+ "bundleDependencies": [
+ "@napi-rs/wasm-runtime",
+ "@emnapi/core",
+ "@emnapi/runtime",
+ "@tybys/wasm-util",
+ "@emnapi/wasi-threads",
+ "tslib"
+ ],
+ "cpu": [
+ "wasm32"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/core": "^1.10.0",
+ "@emnapi/runtime": "^1.10.0",
+ "@emnapi/wasi-threads": "^1.2.1",
+ "@napi-rs/wasm-runtime": "^1.1.4",
+ "@tybys/wasm-util": "^0.10.1",
+ "tslib": "^2.8.1"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-arm64-msvc": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.0.tgz",
+ "integrity": "sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@tailwindcss/oxide-win32-x64-msvc": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.0.tgz",
+ "integrity": "sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 20"
+ }
+ },
+ "node_modules/@tailwindcss/vite": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.3.0.tgz",
+ "integrity": "sha512-t6J3OrB5Fc0ExuhohouH0fWUGMYL6PTLhW+E7zIk/pdbnJARZDCwjBznFnkh5ynRnIRSI4YjtTH0t6USjJISrw==",
+ "license": "MIT",
+ "dependencies": {
+ "@tailwindcss/node": "4.3.0",
+ "@tailwindcss/oxide": "4.3.0",
+ "tailwindcss": "4.3.0"
+ },
+ "peerDependencies": {
+ "vite": "^5.2.0 || ^6 || ^7 || ^8"
+ }
+ },
+ "node_modules/@trivago/prettier-plugin-sort-imports": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@trivago/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-6.0.2.tgz",
+ "integrity": "sha512-3DgfkukFyC/sE/VuYjaUUWoFfuVjPK55vOFDsxD56XXynFMCZDYFogH2l/hDfOsQAm1myoU/1xByJ3tWqtulXA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@babel/generator": "^7.28.0",
+ "@babel/parser": "^7.28.0",
+ "@babel/traverse": "^7.28.0",
+ "@babel/types": "^7.28.0",
+ "javascript-natural-sort": "^0.7.1",
+ "lodash-es": "^4.17.21",
+ "minimatch": "^9.0.0",
+ "parse-imports-exports": "^0.2.4"
+ },
+ "engines": {
+ "node": ">= 20"
+ },
+ "peerDependencies": {
+ "@vue/compiler-sfc": "3.x",
+ "prettier": "2.x - 3.x",
+ "prettier-plugin-ember-template-tag": ">= 2.0.0",
+ "prettier-plugin-svelte": "3.x",
+ "svelte": "4.x || 5.x"
+ },
+ "peerDependenciesMeta": {
+ "@vue/compiler-sfc": {
+ "optional": true
+ },
+ "prettier-plugin-ember-template-tag": {
+ "optional": true
+ },
+ "prettier-plugin-svelte": {
+ "optional": true
+ },
+ "svelte": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@trivago/prettier-plugin-sort-imports/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/@trivago/prettier-plugin-sort-imports/node_modules/brace-expansion": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
+ "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@trivago/prettier-plugin-sort-imports/node_modules/minimatch": {
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@ts-morph/common": {
+ "version": "0.27.0",
+ "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.27.0.tgz",
+ "integrity": "sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-glob": "^3.3.3",
+ "minimatch": "^10.0.1",
+ "path-browserify": "^1.0.1"
+ }
+ },
+ "node_modules/@tybys/wasm-util": {
+ "version": "0.10.2",
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz",
+ "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==",
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@types/esrecurse": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz",
+ "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/estree": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
+ "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "24.12.4",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.4.tgz",
+ "integrity": "sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "undici-types": "~7.16.0"
+ }
+ },
+ "node_modules/@types/react": {
+ "version": "19.2.14",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz",
+ "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==",
+ "devOptional": true,
+ "license": "MIT",
+ "peer": true,
+ "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",
+ "peer": true,
+ "peerDependencies": {
+ "@types/react": "^19.2.0"
+ }
+ },
+ "node_modules/@types/set-cookie-parser": {
+ "version": "2.4.10",
+ "resolved": "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.10.tgz",
+ "integrity": "sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/statuses": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.6.tgz",
+ "integrity": "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==",
+ "license": "MIT"
+ },
+ "node_modules/@types/validate-npm-package-name": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/validate-npm-package-name/-/validate-npm-package-name-4.0.2.tgz",
+ "integrity": "sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw==",
+ "license": "MIT"
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "8.59.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.3.tgz",
+ "integrity": "sha512-PwFvSKsXGShKGW6n5bZOhGHEcCZXM8HofLK9fNsEwZXzFRjoY+XT1Vsf1zgyXdwTr0ZYz1/2tkZ0DBTT9jZjhw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.12.2",
+ "@typescript-eslint/scope-manager": "8.59.3",
+ "@typescript-eslint/type-utils": "8.59.3",
+ "@typescript-eslint/utils": "8.59.3",
+ "@typescript-eslint/visitor-keys": "8.59.3",
+ "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.59.3",
+ "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.59.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.3.tgz",
+ "integrity": "sha512-HPwA+hVkfcriajbNvTmZv4VRauibay+cWArYUYq7u7W7PmGShMxbPxLvrwDme55a6d5alG3nrYfhyJ/G28XlLg==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "8.59.3",
+ "@typescript-eslint/types": "8.59.3",
+ "@typescript-eslint/typescript-estree": "8.59.3",
+ "@typescript-eslint/visitor-keys": "8.59.3",
+ "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.59.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.3.tgz",
+ "integrity": "sha512-ECiUWa/KYRGDFUqTNehaRgzDshnJfkTABJxVemHk4ko22gcr0ukloKjWvyQ64g8YCV/UI47kN1dbmjf/GaQYng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/tsconfig-utils": "^8.59.3",
+ "@typescript-eslint/types": "^8.59.3",
+ "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.59.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.3.tgz",
+ "integrity": "sha512-t2LvZnoEfzKtnPjgeEu41xw5gxq9mQVfYy4OoZ4Vlt0sk3JwxmhCca/AR7DwOiHrjWgjAj6as4AhRLKSDfvZIA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.59.3",
+ "@typescript-eslint/visitor-keys": "8.59.3"
+ },
+ "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.59.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.3.tgz",
+ "integrity": "sha512-PcIJHjmaREXLgIAIzLnSY9VucEzz8FKXsRgFa1DmdGCK/5tJpW03TKJF01Q6VZd1lLdz2sIKPWaDUZN9dp//dw==",
+ "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.59.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.3.tgz",
+ "integrity": "sha512-g71d8QD8UaiHGvrJwyIS1hCX5r63w6Jll+4VEYhEAHXTDIqX1JgxhTAbEHtKntL9kuc4jRo7/GWw5xfCepSccQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.59.3",
+ "@typescript-eslint/typescript-estree": "8.59.3",
+ "@typescript-eslint/utils": "8.59.3",
+ "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.59.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.3.tgz",
+ "integrity": "sha512-ePFoH0g4ludssdRFqqDxQePCxU4WQyRa9+XVwjm7yLn0FKhMeoetC+qBEEI1Eyb1pGSDveTIT09Bvw2WhlGayg==",
+ "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.59.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.3.tgz",
+ "integrity": "sha512-CbRjVRAf7Lr9Kr8RopKcbY45p2VfmmHrm0ygOCYFi7oU8q19m0Fs/6iHS7kNOmwpp+ob07ZVcAqlxUod9lYdmg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/project-service": "8.59.3",
+ "@typescript-eslint/tsconfig-utils": "8.59.3",
+ "@typescript-eslint/types": "8.59.3",
+ "@typescript-eslint/visitor-keys": "8.59.3",
+ "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/semver": {
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz",
+ "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "8.59.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.3.tgz",
+ "integrity": "sha512-JAvT14goBzRzzzZyqq3P9BLArIxTtQURUtFgQ/V7FO+eU+Gg6ES+5ymOPP1wRxXcxAYeivCk4uS3jCKWI1K8Zg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.9.1",
+ "@typescript-eslint/scope-manager": "8.59.3",
+ "@typescript-eslint/types": "8.59.3",
+ "@typescript-eslint/typescript-estree": "8.59.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/visitor-keys": {
+ "version": "8.59.3",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.3.tgz",
+ "integrity": "sha512-f1UQF7ggd42YiwI5wGrRaPsa+P0CINBlrkLPmGfpq/u/I/oVtecoEIfFR9ag/oa1sLOsRNZ6xehf6qMZhQGBDg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "8.59.3",
+ "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/@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/accepts": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz",
+ "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-types": "^3.0.0",
+ "negotiator": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "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",
+ "peer": true,
+ "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/agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz",
+ "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==",
+ "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/ajv-formats": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz",
+ "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ajv-formats/node_modules/ajv": {
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
+ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ajv-formats/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "license": "MIT"
+ },
+ "node_modules/ansi-escapes": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz",
+ "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "environment": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "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==",
+ "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/ast-types": {
+ "version": "0.16.1",
+ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz",
+ "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==",
+ "license": "MIT",
+ "dependencies": {
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.10.29",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.29.tgz",
+ "integrity": "sha512-Asa2krT+XTPZINCS+2QcyS8WTkObE77RwkydwF7h6DmnKqbvlalz93m/dnphUyCa6SWSP51VgtEUf2FN+gelFQ==",
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.cjs"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/body-parser": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz",
+ "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==",
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "^3.1.2",
+ "content-type": "^1.0.5",
+ "debug": "^4.4.3",
+ "http-errors": "^2.0.0",
+ "iconv-lite": "^0.7.0",
+ "on-finished": "^2.4.1",
+ "qs": "^6.14.1",
+ "raw-body": "^3.0.1",
+ "type-is": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
+ "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.28.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz",
+ "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==",
+ "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",
+ "peer": true,
+ "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/bundle-name": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz",
+ "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==",
+ "license": "MIT",
+ "dependencies": {
+ "run-applescript": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001792",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001792.tgz",
+ "integrity": "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/chalk": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "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/cli-cursor": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz",
+ "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==",
+ "license": "MIT",
+ "dependencies": {
+ "restore-cursor": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-spinners": {
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz",
+ "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-truncate": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz",
+ "integrity": "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "slice-ansi": "^8.0.0",
+ "string-width": "^8.2.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-truncate/node_modules/string-width": {
+ "version": "8.2.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz",
+ "integrity": "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.5.0",
+ "strip-ansi": "^7.1.2"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cli-width": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz",
+ "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==",
+ "license": "ISC",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/cliui/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/cliui/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/cliui/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/cliui/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/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/code-block-writer": {
+ "version": "13.0.3",
+ "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz",
+ "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==",
+ "license": "MIT"
+ },
+ "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/commander": {
+ "version": "14.0.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz",
+ "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ }
+ },
+ "node_modules/content-disposition": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz",
+ "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "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==",
+ "license": "MIT"
+ },
+ "node_modules/cookie": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz",
+ "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.6.0"
+ }
+ },
+ "node_modules/cors": {
+ "version": "2.8.6",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz",
+ "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==",
+ "license": "MIT",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/cosmiconfig": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz",
+ "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==",
+ "license": "MIT",
+ "dependencies": {
+ "env-paths": "^2.2.1",
+ "import-fresh": "^3.3.0",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.9.5"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "license": "MIT",
+ "bin": {
+ "cssesc": "bin/cssesc"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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==",
+ "devOptional": true,
+ "license": "MIT"
+ },
+ "node_modules/data-uri-to-buffer": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
+ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
+ "license": "MIT",
+ "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/dedent": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz",
+ "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==",
+ "license": "MIT",
+ "peerDependencies": {
+ "babel-plugin-macros": "^3.1.0"
+ },
+ "peerDependenciesMeta": {
+ "babel-plugin-macros": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/default-browser": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz",
+ "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==",
+ "license": "MIT",
+ "dependencies": {
+ "bundle-name": "^4.1.0",
+ "default-browser-id": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/default-browser-id": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz",
+ "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/define-lazy-prop": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz",
+ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/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/diff": {
+ "version": "8.0.4",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz",
+ "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/dotenv": {
+ "version": "17.4.2",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz",
+ "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
+ }
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/eciesjs": {
+ "version": "0.4.18",
+ "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.18.tgz",
+ "integrity": "sha512-wG99Zcfcys9fZux7Cft8BAX/YrOJLJSZ3jyYPfhZHqN2E+Ffx+QXBDsv3gubEgPtV6dTzJMSQUwk1H98/t/0wQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@ecies/ciphers": "^0.2.5",
+ "@noble/ciphers": "^1.3.0",
+ "@noble/curves": "^1.9.7",
+ "@noble/hashes": "^1.8.0"
+ },
+ "engines": {
+ "bun": ">=1",
+ "deno": ">=2",
+ "node": ">=16"
+ }
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "license": "MIT"
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.354",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.354.tgz",
+ "integrity": "sha512-JaBHwWcfIdmSAfWM5l3uwjGd431j8YEMikZ+K/2nXVuBqJKyZ0f+2h4n4JY5AyNiZmnY9qQr2RU3v9DxDmHMNg==",
+ "license": "ISC"
+ },
+ "node_modules/emoji-regex": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz",
+ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==",
+ "license": "MIT"
+ },
+ "node_modules/encodeurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/enhanced-resolve": {
+ "version": "5.21.3",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.3.tgz",
+ "integrity": "sha512-QyL119InA+XXEkNLNTPCXPugSvOfhwv0JOlGNzvxs0hZaiHLNvXSpudUWsOlsXGWJh8G6ckCScEkVHfX3kw/2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.4",
+ "tapable": "^2.3.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/environment": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz",
+ "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
+ "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "license": "MIT"
+ },
+ "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": "10.3.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.3.0.tgz",
+ "integrity": "sha512-XbEXaRva5cF0ZQB8w6MluHA0kZZfV2DuCMJ3ozyEOHLwDpZX2Lmm/7Pp0xdJmI0GL1W05VH5VwIFHEm1Vcw2gw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.8.0",
+ "@eslint-community/regexpp": "^4.12.2",
+ "@eslint/config-array": "^0.23.5",
+ "@eslint/config-helpers": "^0.5.5",
+ "@eslint/core": "^1.2.1",
+ "@eslint/plugin-kit": "^0.7.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",
+ "cross-spawn": "^7.0.6",
+ "debug": "^4.3.2",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^9.1.2",
+ "eslint-visitor-keys": "^5.0.1",
+ "espree": "^11.2.0",
+ "esquery": "^1.7.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",
+ "minimatch": "^10.2.4",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ },
+ "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",
+ "peer": true,
+ "bin": {
+ "eslint-config-prettier": "bin/cli.js"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint-config-prettier"
+ },
+ "peerDependencies": {
+ "eslint": ">=7.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-prettier": {
+ "version": "5.5.5",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz",
+ "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prettier-linter-helpers": "^1.0.1",
+ "synckit": "^0.11.12"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint-plugin-prettier"
+ },
+ "peerDependencies": {
+ "@types/eslint": ">=8.0.0",
+ "eslint": ">=8.0.0",
+ "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0",
+ "prettier": ">=3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/eslint": {
+ "optional": true
+ },
+ "eslint-config-prettier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-plugin-react-hooks": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.1.1.tgz",
+ "integrity": "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==",
+ "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 || ^10.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": "9.1.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz",
+ "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@types/esrecurse": "^4.3.1",
+ "@types/estree": "^1.0.8",
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "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/espree": {
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz",
+ "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "acorn": "^8.16.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^5.0.1"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "license": "BSD-2-Clause",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "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/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/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/eventemitter3": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz",
+ "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/eventsource": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz",
+ "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==",
+ "license": "MIT",
+ "dependencies": {
+ "eventsource-parser": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/eventsource-parser": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.8.tgz",
+ "integrity": "sha512-70QWGkr4snxr0OXLRWsFLeRBIRPuQOvt4s8QYjmUlmlkyTZkRqS7EDVRZtzU3TiyDbXSzaOeF0XUKy8PchzukQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/execa": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz",
+ "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==",
+ "license": "MIT",
+ "dependencies": {
+ "@sindresorhus/merge-streams": "^4.0.0",
+ "cross-spawn": "^7.0.6",
+ "figures": "^6.1.0",
+ "get-stream": "^9.0.0",
+ "human-signals": "^8.0.1",
+ "is-plain-obj": "^4.1.0",
+ "is-stream": "^4.0.1",
+ "npm-run-path": "^6.0.0",
+ "pretty-ms": "^9.2.0",
+ "signal-exit": "^4.1.0",
+ "strip-final-newline": "^4.0.0",
+ "yoctocolors": "^2.1.1"
+ },
+ "engines": {
+ "node": "^18.19.0 || >=20.5.0"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/express": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz",
+ "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "accepts": "^2.0.0",
+ "body-parser": "^2.2.1",
+ "content-disposition": "^1.0.0",
+ "content-type": "^1.0.5",
+ "cookie": "^0.7.1",
+ "cookie-signature": "^1.2.1",
+ "debug": "^4.4.0",
+ "depd": "^2.0.0",
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "etag": "^1.8.1",
+ "finalhandler": "^2.1.0",
+ "fresh": "^2.0.0",
+ "http-errors": "^2.0.0",
+ "merge-descriptors": "^2.0.0",
+ "mime-types": "^3.0.0",
+ "on-finished": "^2.4.1",
+ "once": "^1.4.0",
+ "parseurl": "^1.3.3",
+ "proxy-addr": "^2.0.7",
+ "qs": "^6.14.0",
+ "range-parser": "^1.2.1",
+ "router": "^2.2.0",
+ "send": "^1.1.0",
+ "serve-static": "^2.2.0",
+ "statuses": "^2.0.1",
+ "type-is": "^2.0.1",
+ "vary": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/express-rate-limit": {
+ "version": "8.5.1",
+ "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.5.1.tgz",
+ "integrity": "sha512-5O6KYmyJEpuPJV5hNTXKbAHWRqrzyu+OI3vUnSd2kXFubIVpG7ezpgxQy76Zo5GQZtrQBg86hF+CM/NX+cioiQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ip-address": "^10.2.0"
+ },
+ "engines": {
+ "node": ">= 16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/express-rate-limit"
+ },
+ "peerDependencies": {
+ "express": ">= 4.11"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "license": "MIT"
+ },
+ "node_modules/fast-diff": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz",
+ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-string-truncated-width": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-3.0.3.tgz",
+ "integrity": "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==",
+ "license": "MIT"
+ },
+ "node_modules/fast-string-width": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-3.0.2.tgz",
+ "integrity": "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-string-truncated-width": "^3.0.2"
+ }
+ },
+ "node_modules/fast-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz",
+ "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/fastify"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fastify"
+ }
+ ],
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/fast-wrap-ansi": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.2.0.tgz",
+ "integrity": "sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-string-width": "^3.0.2"
+ }
+ },
+ "node_modules/fastq": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
+ "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/fetch-blob": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
+ "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ },
+ {
+ "type": "paypal",
+ "url": "https://paypal.me/jimmywarting"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "node-domexception": "^1.0.0",
+ "web-streams-polyfill": "^3.0.3"
+ },
+ "engines": {
+ "node": "^12.20 || >= 14.13"
+ }
+ },
+ "node_modules/figures": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz",
+ "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-unicode-supported": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz",
+ "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.4.0",
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "on-finished": "^2.4.1",
+ "parseurl": "^1.3.3",
+ "statuses": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "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/formdata-polyfill": {
+ "version": "4.0.10",
+ "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
+ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
+ "license": "MIT",
+ "dependencies": {
+ "fetch-blob": "^3.1.2"
+ },
+ "engines": {
+ "node": ">=12.20.0"
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz",
+ "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "11.3.5",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.5.tgz",
+ "integrity": "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==",
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=14.14"
+ }
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/fuzzysort": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/fuzzysort/-/fuzzysort-3.1.0.tgz",
+ "integrity": "sha512-sR9BNCjBg6LNgwvxlBd0sBABvQitkLzoVY9MYYROQVX/FvfJ4Mai9LsGhDgd8qYdds0bY77VzYd5iuB+v5rwQQ==",
+ "license": "MIT"
+ },
+ "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==",
+ "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-east-asian-width": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz",
+ "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-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/get-own-enumerable-keys": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-own-enumerable-keys/-/get-own-enumerable-keys-1.0.0.tgz",
+ "integrity": "sha512-PKsK2FSrQCyxcGHsGrLDcK0lx+0Ke+6e8KFFozA9/fIQLhQzPaRvJFdcz7+Axg3jUH/Mq+NI4xa5u/UT2tQskA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz",
+ "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
+ "license": "MIT",
+ "dependencies": {
+ "@sec-ant/readable-stream": "^0.4.1",
+ "is-stream": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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.6.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-17.6.0.tgz",
+ "integrity": "sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "license": "ISC"
+ },
+ "node_modules/graphql": {
+ "version": "16.14.0",
+ "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.14.0.tgz",
+ "integrity": "sha512-BBvQ/406p+4CZbTpCbVPSxfzrZrbnuWSP1ELYgyS6B+hNeKzgrdB4JczCa5VZUBQrDa9hUngm0KnexY6pJRN5Q==",
+ "license": "MIT",
+ "engines": {
+ "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz",
+ "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==",
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/headers-polyfill": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-5.0.1.tgz",
+ "integrity": "sha512-1TJ6Fih/b8h5TIcv+1+Hw0PDQWJTKDKzFZzcKOiW1wJza3XoAQlkCuXLbymPYB8+ZQyw8mHvdw560e8zVFIWyA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/set-cookie-parser": "^2.4.10",
+ "set-cookie-parser": "^3.0.1"
+ }
+ },
+ "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/hono": {
+ "version": "4.12.18",
+ "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.18.tgz",
+ "integrity": "sha512-RWzP96k/yv0PQfyXnWjs6zot20TqfpfsNXhOnev8d1InAxubW93L11/oNUc3tQqn2G0bSdAOBpX+2uDFHV7kdQ==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=16.9.0"
+ }
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
+ "license": "MIT",
+ "dependencies": {
+ "depd": "~2.0.0",
+ "inherits": "~2.0.4",
+ "setprototypeof": "~1.2.0",
+ "statuses": "~2.0.2",
+ "toidentifier": "~1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz",
+ "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
+ "node_modules/husky": {
+ "version": "9.1.7",
+ "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz",
+ "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "husky": "bin.js"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/typicode"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz",
+ "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+ "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/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "license": "ISC"
+ },
+ "node_modules/ip-address": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz",
+ "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "license": "MIT"
+ },
+ "node_modules/is-docker": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
+ "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==",
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-in-ssh": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz",
+ "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-inside-container": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
+ "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==",
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^3.0.0"
+ },
+ "bin": {
+ "is-inside-container": "cli.js"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-interactive": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz",
+ "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-node-process": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz",
+ "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==",
+ "license": "MIT"
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-obj": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-3.0.0.tgz",
+ "integrity": "sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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/is-promise": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
+ "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
+ "license": "MIT"
+ },
+ "node_modules/is-regexp": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-3.1.0.tgz",
+ "integrity": "sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz",
+ "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-unicode-supported": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz",
+ "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-wsl": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz",
+ "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==",
+ "license": "MIT",
+ "dependencies": {
+ "is-inside-container": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ },
+ "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==",
+ "license": "ISC"
+ },
+ "node_modules/javascript-natural-sort": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz",
+ "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/jiti": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz",
+ "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==",
+ "license": "MIT",
+ "bin": {
+ "jiti": "lib/jiti-cli.mjs"
+ }
+ },
+ "node_modules/jose": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.3.tgz",
+ "integrity": "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/panva"
+ }
+ },
+ "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==",
+ "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==",
+ "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==",
+ "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-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "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-schema-typed": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz",
+ "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==",
+ "license": "BSD-2-Clause"
+ },
+ "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==",
+ "license": "MIT",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/jsonfile": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz",
+ "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==",
+ "license": "MIT",
+ "dependencies": {
+ "universalify": "^2.0.0"
+ },
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.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/kleur": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
+ "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lightningcss": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz",
+ "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==",
+ "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"
+ ],
+ "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"
+ ],
+ "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"
+ ],
+ "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"
+ ],
+ "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"
+ ],
+ "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"
+ ],
+ "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"
+ ],
+ "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"
+ ],
+ "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"
+ ],
+ "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"
+ ],
+ "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"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "license": "MIT"
+ },
+ "node_modules/lint-staged": {
+ "version": "17.0.4",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-17.0.4.tgz",
+ "integrity": "sha512-+rU9lSUyVOZ/hDUmRLVGzyS2v73cDdQjX+XQz1AaOdIE4RysLq0HoPW2HrrgeNCLklkhi904VBU1bmgWLHVnkA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "listr2": "^10.2.1",
+ "picomatch": "^4.0.4",
+ "string-argv": "^0.3.2",
+ "tinyexec": "^1.1.2"
+ },
+ "bin": {
+ "lint-staged": "bin/lint-staged.js"
+ },
+ "engines": {
+ "node": ">=22.22.1"
+ },
+ "funding": {
+ "url": "https://opencollective.com/lint-staged"
+ },
+ "optionalDependencies": {
+ "yaml": "^2.8.4"
+ }
+ },
+ "node_modules/listr2": {
+ "version": "10.2.1",
+ "resolved": "https://registry.npmjs.org/listr2/-/listr2-10.2.1.tgz",
+ "integrity": "sha512-7I5knELsJKTUjXG+A6BkKAiGkW1i25fNa/xlUl9hFtk15WbE9jndA89xu5FzQKrY5llajE1hfZZFMILXkDHk/Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cli-truncate": "^5.2.0",
+ "eventemitter3": "^5.0.4",
+ "log-update": "^6.1.0",
+ "rfdc": "^1.4.1",
+ "wrap-ansi": "^10.0.0"
+ },
+ "engines": {
+ "node": ">=22.13.0"
+ }
+ },
+ "node_modules/listr2/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/listr2/node_modules/string-width": {
+ "version": "8.2.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz",
+ "integrity": "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.5.0",
+ "strip-ansi": "^7.1.2"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/listr2/node_modules/wrap-ansi": {
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-10.0.0.tgz",
+ "integrity": "sha512-SGcvg80f0wUy2/fXES19feHMz8E0JoXv2uNgHOu4Dgi2OrCy1lqwFYEJz1BLbDI0exjPMe/ZdzZ/YpGECBG/aQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.3",
+ "string-width": "^8.2.0",
+ "strip-ansi": "^7.1.2"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "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-es": {
+ "version": "4.18.1",
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.18.1.tgz",
+ "integrity": "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/log-symbols": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz",
+ "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^5.3.0",
+ "is-unicode-supported": "^1.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/log-symbols/node_modules/is-unicode-supported": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz",
+ "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/log-update": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz",
+ "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-escapes": "^7.0.0",
+ "cli-cursor": "^5.0.0",
+ "slice-ansi": "^7.1.0",
+ "strip-ansi": "^7.1.0",
+ "wrap-ansi": "^9.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/log-update/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/log-update/node_modules/is-fullwidth-code-point": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz",
+ "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.3.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/log-update/node_modules/slice-ansi": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz",
+ "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "is-fullwidth-code-point": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
+ },
+ "node_modules/log-update/node_modules/wrap-ansi": {
+ "version": "9.0.2",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz",
+ "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.1",
+ "string-width": "^7.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/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==",
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/lucide-react": {
+ "version": "1.14.0",
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.14.0.tgz",
+ "integrity": "sha512-+1mdWcfSJVUsaTIjN9zoezmUhfXo5l0vP7ekBMPo3jcS/aIkxHnXqAPsByszMZx/Y8oQBRJxJx5xg+RH3urzxA==",
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/media-typer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz",
+ "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/merge-descriptors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz",
+ "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "license": "MIT"
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/micromatch/node_modules/picomatch": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
+ "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.54.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
+ "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz",
+ "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "^1.54.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/mimic-function": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz",
+ "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "10.2.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
+ "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
+ "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/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/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/msw": {
+ "version": "2.14.6",
+ "resolved": "https://registry.npmjs.org/msw/-/msw-2.14.6.tgz",
+ "integrity": "sha512-ALe+N10S72cyx94cMcy3Zs4HhXCj35sgeAL4c+WTvKi0zWnbd8/h0lcFqv0mb2P+aSgAdD7p9HzvA0DiUPxsyg==",
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "@inquirer/confirm": "^6.0.11",
+ "@mswjs/interceptors": "^0.41.3",
+ "@open-draft/deferred-promise": "^3.0.0",
+ "@types/statuses": "^2.0.6",
+ "cookie": "^1.1.1",
+ "graphql": "^16.13.2",
+ "headers-polyfill": "^5.0.1",
+ "is-node-process": "^1.2.0",
+ "outvariant": "^1.4.3",
+ "path-to-regexp": "^6.3.0",
+ "picocolors": "^1.1.1",
+ "rettime": "^0.11.11",
+ "statuses": "^2.0.2",
+ "strict-event-emitter": "^0.5.1",
+ "tough-cookie": "^6.0.1",
+ "type-fest": "^5.5.0",
+ "until-async": "^3.0.2",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "msw": "cli/index.js"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/mswjs"
+ },
+ "peerDependencies": {
+ "typescript": ">= 4.8.x"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/msw/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/mute-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz",
+ "integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==",
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/nanoid": {
+ "version": "3.3.12",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz",
+ "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==",
+ "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/negotiator": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz",
+ "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/node-domexception": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
+ "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
+ "deprecated": "Use your platform's native DOMException instead",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ },
+ {
+ "type": "github",
+ "url": "https://paypal.me/jimmywarting"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.5.0"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
+ "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
+ "license": "MIT",
+ "dependencies": {
+ "data-uri-to-buffer": "^4.0.0",
+ "fetch-blob": "^3.1.4",
+ "formdata-polyfill": "^4.0.10"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/node-fetch"
+ }
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.44",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.44.tgz",
+ "integrity": "sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==",
+ "license": "MIT"
+ },
+ "node_modules/npm-run-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz",
+ "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^4.0.0",
+ "unicorn-magic": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/npm-run-path/node_modules/path-key": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
+ "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.4",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-treeify": {
+ "version": "1.1.33",
+ "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz",
+ "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10"
+ }
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "license": "MIT",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz",
+ "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-function": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/open": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/open/-/open-11.0.0.tgz",
+ "integrity": "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==",
+ "license": "MIT",
+ "dependencies": {
+ "default-browser": "^5.4.0",
+ "define-lazy-prop": "^3.0.0",
+ "is-in-ssh": "^1.0.0",
+ "is-inside-container": "^1.0.0",
+ "powershell-utils": "^0.1.0",
+ "wsl-utils": "^0.3.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/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/ora": {
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz",
+ "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==",
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^5.3.0",
+ "cli-cursor": "^5.0.0",
+ "cli-spinners": "^2.9.2",
+ "is-interactive": "^2.0.0",
+ "is-unicode-supported": "^2.0.0",
+ "log-symbols": "^6.0.0",
+ "stdin-discarder": "^0.2.2",
+ "string-width": "^7.2.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/outvariant": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz",
+ "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==",
+ "license": "MIT"
+ },
+ "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/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==",
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parse-imports-exports": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz",
+ "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parse-statements": "1.0.11"
+ }
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse-ms": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz",
+ "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse-statements": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz",
+ "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-to-regexp": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz",
+ "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==",
+ "license": "MIT"
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pkce-challenge": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz",
+ "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=16.20.0"
+ }
+ },
+ "node_modules/postcss": {
+ "version": "8.5.14",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz",
+ "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.11",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
+ "node_modules/postcss-selector-parser": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
+ "license": "MIT",
+ "dependencies": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/powershell-utils": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz",
+ "integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "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.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz",
+ "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==",
+ "dev": true,
+ "license": "MIT",
+ "peer": true,
+ "bin": {
+ "prettier": "bin/prettier.cjs"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
+ }
+ },
+ "node_modules/prettier-linter-helpers": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz",
+ "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-diff": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/prettier-plugin-tailwindcss": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.8.0.tgz",
+ "integrity": "sha512-V8ITGH87yuBDF6JpEZTOVlUz/saAwqb8f3HRgUj8Lh+tGCcrmorhsLpYqzygwFwK0PE2Ib6Mv3M7T/uE2tZV1g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=20.19"
+ },
+ "peerDependencies": {
+ "@ianvs/prettier-plugin-sort-imports": "*",
+ "@prettier/plugin-hermes": "*",
+ "@prettier/plugin-oxc": "*",
+ "@prettier/plugin-pug": "*",
+ "@shopify/prettier-plugin-liquid": "*",
+ "@trivago/prettier-plugin-sort-imports": "*",
+ "@zackad/prettier-plugin-twig": "*",
+ "prettier": "^3.0",
+ "prettier-plugin-astro": "*",
+ "prettier-plugin-css-order": "*",
+ "prettier-plugin-jsdoc": "*",
+ "prettier-plugin-marko": "*",
+ "prettier-plugin-multiline-arrays": "*",
+ "prettier-plugin-organize-attributes": "*",
+ "prettier-plugin-organize-imports": "*",
+ "prettier-plugin-sort-imports": "*",
+ "prettier-plugin-svelte": "*"
+ },
+ "peerDependenciesMeta": {
+ "@ianvs/prettier-plugin-sort-imports": {
+ "optional": true
+ },
+ "@prettier/plugin-hermes": {
+ "optional": true
+ },
+ "@prettier/plugin-oxc": {
+ "optional": true
+ },
+ "@prettier/plugin-pug": {
+ "optional": true
+ },
+ "@shopify/prettier-plugin-liquid": {
+ "optional": true
+ },
+ "@trivago/prettier-plugin-sort-imports": {
+ "optional": true
+ },
+ "@zackad/prettier-plugin-twig": {
+ "optional": true
+ },
+ "prettier-plugin-astro": {
+ "optional": true
+ },
+ "prettier-plugin-css-order": {
+ "optional": true
+ },
+ "prettier-plugin-jsdoc": {
+ "optional": true
+ },
+ "prettier-plugin-marko": {
+ "optional": true
+ },
+ "prettier-plugin-multiline-arrays": {
+ "optional": true
+ },
+ "prettier-plugin-organize-attributes": {
+ "optional": true
+ },
+ "prettier-plugin-organize-imports": {
+ "optional": true
+ },
+ "prettier-plugin-sort-imports": {
+ "optional": true
+ },
+ "prettier-plugin-svelte": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pretty-ms": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz",
+ "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==",
+ "license": "MIT",
+ "dependencies": {
+ "parse-ms": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/prompts": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz",
+ "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==",
+ "license": "MIT",
+ "dependencies": {
+ "kleur": "^3.0.3",
+ "sisteransi": "^1.0.5"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/prompts/node_modules/kleur": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz",
+ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "license": "MIT",
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "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/qs": {
+ "version": "6.15.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz",
+ "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "side-channel": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/radix-ui": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/radix-ui/-/radix-ui-1.4.3.tgz",
+ "integrity": "sha512-aWizCQiyeAenIdUbqEpXgRA1ya65P13NKn/W8rWkcN0OPkRDxdBVLWnIEDsS2RpwCK2nobI7oMUSmexzTDyAmA==",
+ "license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.3",
+ "@radix-ui/react-accessible-icon": "1.1.7",
+ "@radix-ui/react-accordion": "1.2.12",
+ "@radix-ui/react-alert-dialog": "1.1.15",
+ "@radix-ui/react-arrow": "1.1.7",
+ "@radix-ui/react-aspect-ratio": "1.1.7",
+ "@radix-ui/react-avatar": "1.1.10",
+ "@radix-ui/react-checkbox": "1.3.3",
+ "@radix-ui/react-collapsible": "1.1.12",
+ "@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-context-menu": "2.2.16",
+ "@radix-ui/react-dialog": "1.1.15",
+ "@radix-ui/react-direction": "1.1.1",
+ "@radix-ui/react-dismissable-layer": "1.1.11",
+ "@radix-ui/react-dropdown-menu": "2.1.16",
+ "@radix-ui/react-focus-guards": "1.1.3",
+ "@radix-ui/react-focus-scope": "1.1.7",
+ "@radix-ui/react-form": "0.1.8",
+ "@radix-ui/react-hover-card": "1.1.15",
+ "@radix-ui/react-label": "2.1.7",
+ "@radix-ui/react-menu": "2.1.16",
+ "@radix-ui/react-menubar": "1.1.16",
+ "@radix-ui/react-navigation-menu": "1.2.14",
+ "@radix-ui/react-one-time-password-field": "0.1.8",
+ "@radix-ui/react-password-toggle-field": "0.1.3",
+ "@radix-ui/react-popover": "1.1.15",
+ "@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-progress": "1.1.7",
+ "@radix-ui/react-radio-group": "1.3.8",
+ "@radix-ui/react-roving-focus": "1.1.11",
+ "@radix-ui/react-scroll-area": "1.2.10",
+ "@radix-ui/react-select": "2.2.6",
+ "@radix-ui/react-separator": "1.1.7",
+ "@radix-ui/react-slider": "1.3.6",
+ "@radix-ui/react-slot": "1.2.3",
+ "@radix-ui/react-switch": "1.2.6",
+ "@radix-ui/react-tabs": "1.1.13",
+ "@radix-ui/react-toast": "1.2.15",
+ "@radix-ui/react-toggle": "1.1.10",
+ "@radix-ui/react-toggle-group": "1.1.11",
+ "@radix-ui/react-toolbar": "1.1.11",
+ "@radix-ui/react-tooltip": "1.2.8",
+ "@radix-ui/react-use-callback-ref": "1.1.1",
+ "@radix-ui/react-use-controllable-state": "1.2.2",
+ "@radix-ui/react-use-effect-event": "0.0.2",
+ "@radix-ui/react-use-escape-keydown": "1.1.1",
+ "@radix-ui/react-use-is-hydrated": "0.1.0",
+ "@radix-ui/react-use-layout-effect": "1.1.1",
+ "@radix-ui/react-use-size": "1.1.1",
+ "@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/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz",
+ "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==",
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "~3.1.2",
+ "http-errors": "~2.0.1",
+ "iconv-lite": "~0.7.0",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/react": {
+ "version": "19.2.6",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz",
+ "integrity": "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/react-dom": {
+ "version": "19.2.6",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.6.tgz",
+ "integrity": "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "scheduler": "^0.27.0"
+ },
+ "peerDependencies": {
+ "react": "^19.2.6"
+ }
+ },
+ "node_modules/react-hook-form": {
+ "version": "7.75.0",
+ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.75.0.tgz",
+ "integrity": "sha512-Ovv94H+0p3sJ7B9B5QxPuCP1u8V/cHuVGyH55cSwodYDtoJwK+fqk3vjfIgSX59I2U/bU4z0nRJ9HMLpNiWEmw==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/react-hook-form"
+ },
+ "peerDependencies": {
+ "react": "^16.8.0 || ^17 || ^18 || ^19"
+ }
+ },
+ "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-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/recast": {
+ "version": "0.23.11",
+ "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz",
+ "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==",
+ "license": "MIT",
+ "dependencies": {
+ "ast-types": "^0.16.1",
+ "esprima": "~4.0.0",
+ "source-map": "~0.6.1",
+ "tiny-invariant": "^1.3.3",
+ "tslib": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "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-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/restore-cursor": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz",
+ "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==",
+ "license": "MIT",
+ "dependencies": {
+ "onetime": "^7.0.0",
+ "signal-exit": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/rettime": {
+ "version": "0.11.11",
+ "resolved": "https://registry.npmjs.org/rettime/-/rettime-0.11.11.tgz",
+ "integrity": "sha512-ILJRqVWBCTlg9r42fFgwVZx1gnFAcQF8mRoMkbgQfIrjEDf9nbBFDFx00oloOa+Q869FUtaYDXZvEfnecQSCoQ==",
+ "license": "MIT"
+ },
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rfdc": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz",
+ "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/rolldown": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0.tgz",
+ "integrity": "sha512-yD986aXDESFGS95spT1LAv0jssywP4npMEjmMHyN2/5+eE8qQJUype2AaKkRiLgBgyD0LFlubwAht7VmY8rGoA==",
+ "license": "MIT",
+ "dependencies": {
+ "@oxc-project/types": "=0.129.0",
+ "@rolldown/pluginutils": "1.0.0"
+ },
+ "bin": {
+ "rolldown": "bin/cli.mjs"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "optionalDependencies": {
+ "@rolldown/binding-android-arm64": "1.0.0",
+ "@rolldown/binding-darwin-arm64": "1.0.0",
+ "@rolldown/binding-darwin-x64": "1.0.0",
+ "@rolldown/binding-freebsd-x64": "1.0.0",
+ "@rolldown/binding-linux-arm-gnueabihf": "1.0.0",
+ "@rolldown/binding-linux-arm64-gnu": "1.0.0",
+ "@rolldown/binding-linux-arm64-musl": "1.0.0",
+ "@rolldown/binding-linux-ppc64-gnu": "1.0.0",
+ "@rolldown/binding-linux-s390x-gnu": "1.0.0",
+ "@rolldown/binding-linux-x64-gnu": "1.0.0",
+ "@rolldown/binding-linux-x64-musl": "1.0.0",
+ "@rolldown/binding-openharmony-arm64": "1.0.0",
+ "@rolldown/binding-wasm32-wasi": "1.0.0",
+ "@rolldown/binding-win32-arm64-msvc": "1.0.0",
+ "@rolldown/binding-win32-x64-msvc": "1.0.0"
+ }
+ },
+ "node_modules/rolldown/node_modules/@rolldown/pluginutils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0.tgz",
+ "integrity": "sha512-aKs/3GSWyV0mrhNmt/96/Z3yczC3yvrzYATCiCXQebBsGyYzjNdUphRVLeJQ67ySKVXRfMxt2lm12pmXvbPFQQ==",
+ "license": "MIT"
+ },
+ "node_modules/router": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz",
+ "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.4.0",
+ "depd": "^2.0.0",
+ "is-promise": "^4.0.0",
+ "parseurl": "^1.3.3",
+ "path-to-regexp": "^8.0.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ }
+ },
+ "node_modules/router/node_modules/path-to-regexp": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz",
+ "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==",
+ "license": "MIT",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/run-applescript": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz",
+ "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "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==",
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/send": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz",
+ "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "^4.4.3",
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "etag": "^1.8.1",
+ "fresh": "^2.0.0",
+ "http-errors": "^2.0.1",
+ "mime-types": "^3.0.2",
+ "ms": "^2.1.3",
+ "on-finished": "^2.4.1",
+ "range-parser": "^1.2.1",
+ "statuses": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/serve-static": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz",
+ "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==",
+ "license": "MIT",
+ "dependencies": {
+ "encodeurl": "^2.0.0",
+ "escape-html": "^1.0.3",
+ "parseurl": "^1.3.3",
+ "send": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/set-cookie-parser": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-3.1.0.tgz",
+ "integrity": "sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==",
+ "license": "MIT"
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "license": "ISC"
+ },
+ "node_modules/shadcn": {
+ "version": "4.7.0",
+ "resolved": "https://registry.npmjs.org/shadcn/-/shadcn-4.7.0.tgz",
+ "integrity": "sha512-70fwnesNrY1GgeD7Kdzn+3SsYeyfibm8immsA5L68+OusoPTvYF01oWExl8/latKpMpvVXcbgdbbE6VFBJQ38w==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.28.0",
+ "@babel/parser": "^7.28.0",
+ "@babel/plugin-transform-typescript": "^7.28.0",
+ "@babel/preset-typescript": "^7.27.1",
+ "@dotenvx/dotenvx": "^1.48.4",
+ "@modelcontextprotocol/sdk": "^1.26.0",
+ "@types/validate-npm-package-name": "^4.0.2",
+ "browserslist": "^4.26.2",
+ "commander": "^14.0.0",
+ "cosmiconfig": "^9.0.0",
+ "dedent": "^1.6.0",
+ "deepmerge": "^4.3.1",
+ "diff": "^8.0.2",
+ "execa": "^9.6.0",
+ "fast-glob": "^3.3.3",
+ "fs-extra": "^11.3.1",
+ "fuzzysort": "^3.1.0",
+ "https-proxy-agent": "^7.0.6",
+ "kleur": "^4.1.5",
+ "msw": "^2.10.4",
+ "node-fetch": "^3.3.2",
+ "open": "^11.0.0",
+ "ora": "^8.2.0",
+ "postcss": "^8.5.6",
+ "postcss-selector-parser": "^7.1.0",
+ "prompts": "^2.4.2",
+ "recast": "^0.23.11",
+ "stringify-object": "^5.0.0",
+ "tailwind-merge": "^3.0.1",
+ "ts-morph": "^26.0.0",
+ "tsconfig-paths": "^4.2.0",
+ "validate-npm-package-name": "^7.0.1",
+ "zod": "^3.24.1",
+ "zod-to-json-schema": "^3.24.6"
+ },
+ "bin": {
+ "shadcn": "dist/index.js"
+ }
+ },
+ "node_modules/shadcn/node_modules/zod": {
+ "version": "3.25.76",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
+ "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "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==",
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3",
+ "side-channel-list": "^1.0.0",
+ "side-channel-map": "^1.0.1",
+ "side-channel-weakmap": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-list": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
+ "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-weakmap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/sisteransi": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
+ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
+ "license": "MIT"
+ },
+ "node_modules/slice-ansi": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz",
+ "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.2.3",
+ "is-fullwidth-code-point": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ }
+ },
+ "node_modules/slice-ansi/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz",
+ "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-east-asian-width": "^1.3.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/stdin-discarder": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz",
+ "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/strict-event-emitter": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz",
+ "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==",
+ "license": "MIT"
+ },
+ "node_modules/string-argv": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz",
+ "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6.19"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+ "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^10.3.0",
+ "get-east-asian-width": "^1.0.0",
+ "strip-ansi": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/stringify-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-5.0.0.tgz",
+ "integrity": "sha512-zaJYxz2FtcMb4f+g60KsRNFOpVMUyuJgA51Zi5Z1DOTC3S59+OQiVOzE9GZt0x72uBGWKsQIuBKeF9iusmKFsg==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "get-own-enumerable-keys": "^1.0.0",
+ "is-obj": "^3.0.0",
+ "is-regexp": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/yeoman/stringify-object?sponsor=1"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
+ "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.2.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz",
+ "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/synckit": {
+ "version": "0.11.12",
+ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz",
+ "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@pkgr/core": "^0.2.9"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/synckit"
+ }
+ },
+ "node_modules/tagged-tag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz",
+ "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/tailwind-merge": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.6.0.tgz",
+ "integrity": "sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/dcastil"
+ }
+ },
+ "node_modules/tailwindcss": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.0.tgz",
+ "integrity": "sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==",
+ "license": "MIT"
+ },
+ "node_modules/tapable": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz",
+ "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==",
+ "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/tinyexec": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.1.2.tgz",
+ "integrity": "sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==",
+ "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==",
+ "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/tldts": {
+ "version": "7.0.30",
+ "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.30.tgz",
+ "integrity": "sha512-ELrFxuqsDdHUwoh0XxDbxuLD3Wnz49Z57IFvTtvWy1hJdcMZjXLIuonjilCiWHlT2GbE4Wlv1wKVTzDFnXH1aw==",
+ "license": "MIT",
+ "dependencies": {
+ "tldts-core": "^7.0.30"
+ },
+ "bin": {
+ "tldts": "bin/cli.js"
+ }
+ },
+ "node_modules/tldts-core": {
+ "version": "7.0.30",
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.30.tgz",
+ "integrity": "sha512-uiHN8PIB1VmWyS98eZYja4xzlYqeFZVjb4OuYlJQnZAuJhMw4PbKQOKgHKhBdJR3FE/t5mUQ1Kd80++B+qhD1Q==",
+ "license": "MIT"
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/tough-cookie": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.1.tgz",
+ "integrity": "sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "tldts": "^7.0.5"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "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/ts-morph": {
+ "version": "26.0.0",
+ "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-26.0.0.tgz",
+ "integrity": "sha512-ztMO++owQnz8c/gIENcM9XfCEzgoGphTv+nKpYNM1bgsdOVC/jRZuEBf6N+mLLDNg68Kl+GgUZfOySaRiG1/Ug==",
+ "license": "MIT",
+ "dependencies": {
+ "@ts-morph/common": "~0.27.0",
+ "code-block-writer": "^13.0.3"
+ }
+ },
+ "node_modules/tsconfig-paths": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz",
+ "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==",
+ "license": "MIT",
+ "dependencies": {
+ "json5": "^2.2.2",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+ "license": "0BSD"
+ },
+ "node_modules/tw-animate-css": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.4.0.tgz",
+ "integrity": "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/Wombosvideo"
+ }
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.6.0.tgz",
+ "integrity": "sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==",
+ "license": "(MIT OR CC0-1.0)",
+ "dependencies": {
+ "tagged-tag": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz",
+ "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==",
+ "license": "MIT",
+ "dependencies": {
+ "content-type": "^1.0.5",
+ "media-typer": "^1.1.0",
+ "mime-types": "^3.0.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz",
+ "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==",
+ "devOptional": true,
+ "license": "Apache-2.0",
+ "peer": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/typescript-eslint": {
+ "version": "8.59.3",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.3.tgz",
+ "integrity": "sha512-KgusgyDgG4LI8Ih/sWaCtZ06tckLAS5CvT5A4D1Q7bYVoAAyzwiZvE4BmwDHkhRVkvhRBepKeASoFzQetha7Fg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/eslint-plugin": "8.59.3",
+ "@typescript-eslint/parser": "8.59.3",
+ "@typescript-eslint/typescript-estree": "8.59.3",
+ "@typescript-eslint/utils": "8.59.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/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/unicorn-magic": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz",
+ "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/universalify": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 10.0.0"
+ }
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/until-async": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/until-async/-/until-async-3.0.2.tgz",
+ "integrity": "sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/kettanaito"
+ }
+ },
+ "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==",
+ "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/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+ "license": "MIT"
+ },
+ "node_modules/validate-npm-package-name": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz",
+ "integrity": "sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==",
+ "license": "ISC",
+ "engines": {
+ "node": "^20.17.0 || >=22.9.0"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/vite": {
+ "version": "8.0.12",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.12.tgz",
+ "integrity": "sha512-w2dDofOWv2QB09ZITZBsvKTVAlYvPR4IAmrY/v0ir9KvLs0xybR7i48wxhM1/oyBWO34wPns+bPGw5ZrZqDpZg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "lightningcss": "^1.32.0",
+ "picomatch": "^4.0.4",
+ "postcss": "^8.5.14",
+ "rolldown": "1.0.0",
+ "tinyglobby": "^0.2.16"
+ },
+ "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.18",
+ "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/web-streams-polyfill": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
+ "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "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": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/wrap-ansi/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/wrap-ansi/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/wrap-ansi/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/wrap-ansi/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/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "license": "ISC"
+ },
+ "node_modules/wsl-utils": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.1.tgz",
+ "integrity": "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==",
+ "license": "MIT",
+ "dependencies": {
+ "is-wsl": "^3.1.0",
+ "powershell-utils": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "license": "ISC"
+ },
+ "node_modules/yaml": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz",
+ "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==",
+ "license": "ISC",
+ "optional": true,
+ "bin": {
+ "yaml": "bin.mjs"
+ },
+ "engines": {
+ "node": ">= 14.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/eemeli"
+ }
+ },
+ "node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs/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/yargs/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/yargs/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/yargs/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/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/yocto-spinner": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-1.2.0.tgz",
+ "integrity": "sha512-Yw0hUB6UA3o4YUgKy3oSe9a4cxoaZ9sBfYDw+JSxo6Id0KoJGoxzPA24qqUXYKBWABs/zDSGTz9kww7t3F0XGw==",
+ "license": "MIT",
+ "dependencies": {
+ "yoctocolors": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=18.19"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/yoctocolors": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz",
+ "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/zod": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz",
+ "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==",
+ "license": "MIT",
+ "peer": true,
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
+ },
+ "node_modules/zod-to-json-schema": {
+ "version": "3.25.2",
+ "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz",
+ "integrity": "sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==",
+ "license": "ISC",
+ "peerDependencies": {
+ "zod": "^3.25.28 || ^4"
+ }
+ },
+ "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.13",
+ "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.13.tgz",
+ "integrity": "sha512-efI2tVaVQPqtOh114loML/Z80Y4NP3yc+Ff0fYiZJPauNeWZeIp/bRFD7I9bfmCOYBh/PHxlglQ9+wvlwnPikQ==",
+ "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
+ }
+ }
+ }
+ }
+}
diff --git a/src/problem2/fancy-form/package.json b/src/problem2/fancy-form/package.json
new file mode 100644
index 0000000000..7aa6a2b959
--- /dev/null
+++ b/src/problem2/fancy-form/package.json
@@ -0,0 +1,53 @@
+{
+ "name": "fancy-form",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "tsc -b && vite build",
+ "lint": "eslint .",
+ "lint:fix": "eslint . --fix",
+ "preview": "vite preview",
+ "prepare": "husky"
+ },
+ "dependencies": {
+ "@fontsource-variable/inter": "^5.2.8",
+ "@hookform/resolvers": "^5.2.2",
+ "@tailwindcss/vite": "^4.3.0",
+ "class-variance-authority": "^0.7.1",
+ "clsx": "^2.1.1",
+ "lucide-react": "^1.14.0",
+ "radix-ui": "^1.4.3",
+ "react": "^19.2.6",
+ "react-dom": "^19.2.6",
+ "react-hook-form": "^7.75.0",
+ "shadcn": "^4.7.0",
+ "tailwind-merge": "^3.6.0",
+ "tailwindcss": "^4.3.0",
+ "tw-animate-css": "^1.4.0",
+ "zod": "^4.4.3",
+ "zustand": "^5.0.13"
+ },
+ "devDependencies": {
+ "@eslint/js": "^10.0.1",
+ "@trivago/prettier-plugin-sort-imports": "^6.0.2",
+ "@types/node": "^24.12.4",
+ "@types/react": "^19.2.14",
+ "@types/react-dom": "^19.2.3",
+ "@vitejs/plugin-react": "^6.0.1",
+ "eslint": "^10.3.0",
+ "eslint-config-prettier": "^10.1.8",
+ "eslint-plugin-prettier": "^5.5.5",
+ "eslint-plugin-react-hooks": "^7.1.1",
+ "eslint-plugin-react-refresh": "^0.5.2",
+ "globals": "^17.6.0",
+ "husky": "^9.1.7",
+ "lint-staged": "^17.0.4",
+ "prettier": "^3.8.3",
+ "prettier-plugin-tailwindcss": "^0.8.0",
+ "typescript": "~6.0.2",
+ "typescript-eslint": "^8.59.3",
+ "vite": "^8.0.12"
+ }
+}
diff --git a/src/problem2/fancy-form/public/favicon.svg b/src/problem2/fancy-form/public/favicon.svg
new file mode 100644
index 0000000000..6893eb1323
--- /dev/null
+++ b/src/problem2/fancy-form/public/favicon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/problem2/fancy-form/public/icons.svg b/src/problem2/fancy-form/public/icons.svg
new file mode 100644
index 0000000000..e9522193d9
--- /dev/null
+++ b/src/problem2/fancy-form/public/icons.svg
@@ -0,0 +1,24 @@
+
diff --git a/src/problem2/fancy-form/screenshot.png b/src/problem2/fancy-form/screenshot.png
new file mode 100644
index 0000000000..8761211a50
Binary files /dev/null and b/src/problem2/fancy-form/screenshot.png differ
diff --git a/src/problem2/fancy-form/src/App.tsx b/src/problem2/fancy-form/src/App.tsx
new file mode 100644
index 0000000000..2483199765
--- /dev/null
+++ b/src/problem2/fancy-form/src/App.tsx
@@ -0,0 +1,14 @@
+import { SwapCard } from './components/form-card/FormCard';
+import { TooltipProvider } from './components/ui/tooltip';
+
+function App() {
+ return (
+
+
+
+
+
+ );
+}
+
+export default App;
diff --git a/src/problem2/fancy-form/src/assets/hero.png b/src/problem2/fancy-form/src/assets/hero.png
new file mode 100644
index 0000000000..02251f4b95
Binary files /dev/null and b/src/problem2/fancy-form/src/assets/hero.png differ
diff --git a/src/problem2/fancy-form/src/assets/react.svg b/src/problem2/fancy-form/src/assets/react.svg
new file mode 100644
index 0000000000..6c87de9bb3
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/react.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/problem2/fancy-form/src/assets/tokens/1INCH.svg b/src/problem2/fancy-form/src/assets/tokens/1INCH.svg
new file mode 100644
index 0000000000..5970f7bd55
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/1INCH.svg
@@ -0,0 +1,17 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/AAVE.svg b/src/problem2/fancy-form/src/assets/tokens/AAVE.svg
new file mode 100644
index 0000000000..10e65a3210
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/AAVE.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ACT.svg b/src/problem2/fancy-form/src/assets/tokens/ACT.svg
new file mode 100644
index 0000000000..2415fef55c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ACT.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ADA.svg b/src/problem2/fancy-form/src/assets/tokens/ADA.svg
new file mode 100644
index 0000000000..c57bee9598
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ADA.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/AEVO.svg b/src/problem2/fancy-form/src/assets/tokens/AEVO.svg
new file mode 100644
index 0000000000..26c36a62dd
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/AEVO.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/AGI.svg b/src/problem2/fancy-form/src/assets/tokens/AGI.svg
new file mode 100644
index 0000000000..2617764b4c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/AGI.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/AI16Z.svg b/src/problem2/fancy-form/src/assets/tokens/AI16Z.svg
new file mode 100644
index 0000000000..d6b38455f9
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/AI16Z.svg
@@ -0,0 +1,19 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/AIXBT.svg b/src/problem2/fancy-form/src/assets/tokens/AIXBT.svg
new file mode 100644
index 0000000000..2fd4c736d7
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/AIXBT.svg
@@ -0,0 +1,19 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/AKRO.svg b/src/problem2/fancy-form/src/assets/tokens/AKRO.svg
new file mode 100644
index 0000000000..33501e5c2e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/AKRO.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/AKT.svg b/src/problem2/fancy-form/src/assets/tokens/AKT.svg
new file mode 100644
index 0000000000..a0733cd5e8
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/AKT.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ALGO.svg b/src/problem2/fancy-form/src/assets/tokens/ALGO.svg
new file mode 100644
index 0000000000..0c79ab88fd
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ALGO.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ALPHA.svg b/src/problem2/fancy-form/src/assets/tokens/ALPHA.svg
new file mode 100644
index 0000000000..9d916fb949
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ALPHA.svg
@@ -0,0 +1,20 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ALT.svg b/src/problem2/fancy-form/src/assets/tokens/ALT.svg
new file mode 100644
index 0000000000..fb551dfa7d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ALT.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/AMP.svg b/src/problem2/fancy-form/src/assets/tokens/AMP.svg
new file mode 100644
index 0000000000..71bec9f9b4
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/AMP.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ANC.svg b/src/problem2/fancy-form/src/assets/tokens/ANC.svg
new file mode 100644
index 0000000000..bd414783cf
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ANC.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ANDR.svg b/src/problem2/fancy-form/src/assets/tokens/ANDR.svg
new file mode 100644
index 0000000000..fc7e23b4ef
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ANDR.svg
@@ -0,0 +1,48 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ANIME.svg b/src/problem2/fancy-form/src/assets/tokens/ANIME.svg
new file mode 100644
index 0000000000..975db35cd4
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ANIME.svg
@@ -0,0 +1,97 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ANKR.svg b/src/problem2/fancy-form/src/assets/tokens/ANKR.svg
new file mode 100644
index 0000000000..b8599f0165
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ANKR.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ANT.svg b/src/problem2/fancy-form/src/assets/tokens/ANT.svg
new file mode 100644
index 0000000000..f805ff79f5
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ANT.svg
@@ -0,0 +1,20 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ANY.svg b/src/problem2/fancy-form/src/assets/tokens/ANY.svg
new file mode 100644
index 0000000000..c504391175
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ANY.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/APE.svg b/src/problem2/fancy-form/src/assets/tokens/APE.svg
new file mode 100644
index 0000000000..26ff9cfd4e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/APE.svg
@@ -0,0 +1,14 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/APOLLO.svg b/src/problem2/fancy-form/src/assets/tokens/APOLLO.svg
new file mode 100644
index 0000000000..852aa5cea2
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/APOLLO.svg
@@ -0,0 +1,21 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/APT.svg b/src/problem2/fancy-form/src/assets/tokens/APT.svg
new file mode 100644
index 0000000000..df0a169047
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/APT.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/AR.svg b/src/problem2/fancy-form/src/assets/tokens/AR.svg
new file mode 100644
index 0000000000..5efc91fdb4
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/AR.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ARB.svg b/src/problem2/fancy-form/src/assets/tokens/ARB.svg
new file mode 100644
index 0000000000..2666c28ab2
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ARB.svg
@@ -0,0 +1,16 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ARCH.svg b/src/problem2/fancy-form/src/assets/tokens/ARCH.svg
new file mode 100644
index 0000000000..b6deb843a1
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ARCH.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ASA.svg b/src/problem2/fancy-form/src/assets/tokens/ASA.svg
new file mode 100644
index 0000000000..7023a06245
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ASA.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ASTRO.svg b/src/problem2/fancy-form/src/assets/tokens/ASTRO.svg
new file mode 100644
index 0000000000..23047ab947
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ASTRO.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ATOM-dATOM.svg b/src/problem2/fancy-form/src/assets/tokens/ATOM-dATOM.svg
new file mode 100644
index 0000000000..07e4a7d4c2
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ATOM-dATOM.svg
@@ -0,0 +1,20 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ATOM.svg b/src/problem2/fancy-form/src/assets/tokens/ATOM.svg
new file mode 100644
index 0000000000..f3f9d10429
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ATOM.svg
@@ -0,0 +1,9 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/AUDIO.svg b/src/problem2/fancy-form/src/assets/tokens/AUDIO.svg
new file mode 100644
index 0000000000..527d7ae79e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/AUDIO.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/AUT.svg b/src/problem2/fancy-form/src/assets/tokens/AUT.svg
new file mode 100644
index 0000000000..4f442bcfe1
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/AUT.svg
@@ -0,0 +1,208 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/AVA.svg b/src/problem2/fancy-form/src/assets/tokens/AVA.svg
new file mode 100644
index 0000000000..b88859ee56
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/AVA.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/AVAIL.svg b/src/problem2/fancy-form/src/assets/tokens/AVAIL.svg
new file mode 100644
index 0000000000..6b011a7f67
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/AVAIL.svg
@@ -0,0 +1,200 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/AVAX.svg b/src/problem2/fancy-form/src/assets/tokens/AVAX.svg
new file mode 100644
index 0000000000..e85981529c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/AVAX.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/AXL.svg b/src/problem2/fancy-form/src/assets/tokens/AXL.svg
new file mode 100644
index 0000000000..a0d81a72ff
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/AXL.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/AXS.svg b/src/problem2/fancy-form/src/assets/tokens/AXS.svg
new file mode 100644
index 0000000000..ab64a1a097
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/AXS.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/AXT.svg b/src/problem2/fancy-form/src/assets/tokens/AXT.svg
new file mode 100644
index 0000000000..a0be2a7e32
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/AXT.svg
@@ -0,0 +1,71 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BAKE.svg b/src/problem2/fancy-form/src/assets/tokens/BAKE.svg
new file mode 100644
index 0000000000..48e18cc4c8
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BAKE.svg
@@ -0,0 +1,16 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BAL.svg b/src/problem2/fancy-form/src/assets/tokens/BAL.svg
new file mode 100644
index 0000000000..274d48692b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BAL.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BAND.svg b/src/problem2/fancy-form/src/assets/tokens/BAND.svg
new file mode 100644
index 0000000000..fe0b053178
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BAND.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BAT.svg b/src/problem2/fancy-form/src/assets/tokens/BAT.svg
new file mode 100644
index 0000000000..6bea15edba
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BAT.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BCD.svg b/src/problem2/fancy-form/src/assets/tokens/BCD.svg
new file mode 100644
index 0000000000..2eae4d86ac
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BCD.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BCH.svg b/src/problem2/fancy-form/src/assets/tokens/BCH.svg
new file mode 100644
index 0000000000..c1b2185860
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BCH.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BCHA.svg b/src/problem2/fancy-form/src/assets/tokens/BCHA.svg
new file mode 100644
index 0000000000..d1c50093bd
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BCHA.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BCN.svg b/src/problem2/fancy-form/src/assets/tokens/BCN.svg
new file mode 100644
index 0000000000..446afbc222
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BCN.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BCNA.svg b/src/problem2/fancy-form/src/assets/tokens/BCNA.svg
new file mode 100644
index 0000000000..81cb2950dc
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BCNA.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BELT.svg b/src/problem2/fancy-form/src/assets/tokens/BELT.svg
new file mode 100644
index 0000000000..0711b1485c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BELT.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/problem2/fancy-form/src/assets/tokens/BERA.svg b/src/problem2/fancy-form/src/assets/tokens/BERA.svg
new file mode 100644
index 0000000000..e77de0c563
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BERA.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BETH.svg b/src/problem2/fancy-form/src/assets/tokens/BETH.svg
new file mode 100644
index 0000000000..46a2401959
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BETH.svg
@@ -0,0 +1,21 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BHC.svg b/src/problem2/fancy-form/src/assets/tokens/BHC.svg
new file mode 100644
index 0000000000..c1b2185860
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BHC.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BIT.svg b/src/problem2/fancy-form/src/assets/tokens/BIT.svg
new file mode 100644
index 0000000000..123a839eb5
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BIT.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BLAST.svg b/src/problem2/fancy-form/src/assets/tokens/BLAST.svg
new file mode 100644
index 0000000000..d931df3f89
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BLAST.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BLD.svg b/src/problem2/fancy-form/src/assets/tokens/BLD.svg
new file mode 100644
index 0000000000..1674899d4e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BLD.svg
@@ -0,0 +1,19 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BLOX.svg b/src/problem2/fancy-form/src/assets/tokens/BLOX.svg
new file mode 100644
index 0000000000..7a3045c57f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BLOX.svg
@@ -0,0 +1,23 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BLUR.svg b/src/problem2/fancy-form/src/assets/tokens/BLUR.svg
new file mode 100644
index 0000000000..bf1e280984
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BLUR.svg
@@ -0,0 +1,19 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BNB.svg b/src/problem2/fancy-form/src/assets/tokens/BNB.svg
new file mode 100644
index 0000000000..a7c6699768
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BNB.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BNT.svg b/src/problem2/fancy-form/src/assets/tokens/BNT.svg
new file mode 100644
index 0000000000..4c29bec3c9
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BNT.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BOLT.svg b/src/problem2/fancy-form/src/assets/tokens/BOLT.svg
new file mode 100644
index 0000000000..a74a21608e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BOLT.svg
@@ -0,0 +1,21 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BONK.svg b/src/problem2/fancy-form/src/assets/tokens/BONK.svg
new file mode 100644
index 0000000000..5df777e894
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BONK.svg
@@ -0,0 +1,424 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BOOT.svg b/src/problem2/fancy-form/src/assets/tokens/BOOT.svg
new file mode 100644
index 0000000000..2469b80cfd
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BOOT.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BRAINS.svg b/src/problem2/fancy-form/src/assets/tokens/BRAINS.svg
new file mode 100644
index 0000000000..5c6a1d4184
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BRAINS.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BRETT.svg b/src/problem2/fancy-form/src/assets/tokens/BRETT.svg
new file mode 100644
index 0000000000..a799d64779
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BRETT.svg
@@ -0,0 +1,34 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BRKL.svg b/src/problem2/fancy-form/src/assets/tokens/BRKL.svg
new file mode 100644
index 0000000000..5963d18244
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BRKL.svg
@@ -0,0 +1,276 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BTC.svg b/src/problem2/fancy-form/src/assets/tokens/BTC.svg
new file mode 100644
index 0000000000..cd3b1e78e2
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BTC.svg
@@ -0,0 +1,5 @@
+
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BTCST.svg b/src/problem2/fancy-form/src/assets/tokens/BTCST.svg
new file mode 100644
index 0000000000..63d5b3c441
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BTCST.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BTG.svg b/src/problem2/fancy-form/src/assets/tokens/BTG.svg
new file mode 100644
index 0000000000..41629e7d6a
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BTG.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BTM.svg b/src/problem2/fancy-form/src/assets/tokens/BTM.svg
new file mode 100644
index 0000000000..16fdbdfda4
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BTM.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BTMX.svg b/src/problem2/fancy-form/src/assets/tokens/BTMX.svg
new file mode 100644
index 0000000000..5e4a26a71e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BTMX.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BTSG.svg b/src/problem2/fancy-form/src/assets/tokens/BTSG.svg
new file mode 100644
index 0000000000..9b82cf6a0b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BTSG.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BTT.svg b/src/problem2/fancy-form/src/assets/tokens/BTT.svg
new file mode 100644
index 0000000000..736450a2db
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BTT.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BUNNY.svg b/src/problem2/fancy-form/src/assets/tokens/BUNNY.svg
new file mode 100644
index 0000000000..4bed16291f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BUNNY.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BUSD.svg b/src/problem2/fancy-form/src/assets/tokens/BUSD.svg
new file mode 100644
index 0000000000..b992764bd1
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BUSD.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/BUSDT.svg b/src/problem2/fancy-form/src/assets/tokens/BUSDT.svg
new file mode 100644
index 0000000000..08bbf0587d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/BUSDT.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/C98.svg b/src/problem2/fancy-form/src/assets/tokens/C98.svg
new file mode 100644
index 0000000000..3a0ff2bb70
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/C98.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CAKE.svg b/src/problem2/fancy-form/src/assets/tokens/CAKE.svg
new file mode 100644
index 0000000000..ce45fbe253
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CAKE.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CANTO.svg b/src/problem2/fancy-form/src/assets/tokens/CANTO.svg
new file mode 100644
index 0000000000..d2758becf9
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CANTO.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CARB.svg b/src/problem2/fancy-form/src/assets/tokens/CARB.svg
new file mode 100644
index 0000000000..02e14d0bfe
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CARB.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CAT.svg b/src/problem2/fancy-form/src/assets/tokens/CAT.svg
new file mode 100644
index 0000000000..8f81af95be
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CAT.svg
@@ -0,0 +1,65 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CEL.svg b/src/problem2/fancy-form/src/assets/tokens/CEL.svg
new file mode 100644
index 0000000000..02cfbd269c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CEL.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CELO.svg b/src/problem2/fancy-form/src/assets/tokens/CELO.svg
new file mode 100644
index 0000000000..5ff3c6c83c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CELO.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CETH.svg b/src/problem2/fancy-form/src/assets/tokens/CETH.svg
new file mode 100644
index 0000000000..448a94a7a7
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CETH.svg
@@ -0,0 +1,17 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CFX.svg b/src/problem2/fancy-form/src/assets/tokens/CFX.svg
new file mode 100644
index 0000000000..07e8c434db
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CFX.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CGAS.svg b/src/problem2/fancy-form/src/assets/tokens/CGAS.svg
new file mode 100644
index 0000000000..3c31d75c0c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CGAS.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CHEQ.svg b/src/problem2/fancy-form/src/assets/tokens/CHEQ.svg
new file mode 100644
index 0000000000..ed1621a482
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CHEQ.svg
@@ -0,0 +1,34 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CHOG.svg b/src/problem2/fancy-form/src/assets/tokens/CHOG.svg
new file mode 100644
index 0000000000..adee63f975
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CHOG.svg
@@ -0,0 +1,20 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CHSB.svg b/src/problem2/fancy-form/src/assets/tokens/CHSB.svg
new file mode 100644
index 0000000000..0118cfce5c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CHSB.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CHT.svg b/src/problem2/fancy-form/src/assets/tokens/CHT.svg
new file mode 100644
index 0000000000..19d6392712
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CHT.svg
@@ -0,0 +1,54 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CHZ.svg b/src/problem2/fancy-form/src/assets/tokens/CHZ.svg
new file mode 100644
index 0000000000..68897c58f1
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CHZ.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CKB.svg b/src/problem2/fancy-form/src/assets/tokens/CKB.svg
new file mode 100644
index 0000000000..888ff3323e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CKB.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CMDX.svg b/src/problem2/fancy-form/src/assets/tokens/CMDX.svg
new file mode 100644
index 0000000000..028d44e951
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CMDX.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CMST.svg b/src/problem2/fancy-form/src/assets/tokens/CMST.svg
new file mode 100644
index 0000000000..cd6cb419eb
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CMST.svg
@@ -0,0 +1,13 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CNT.svg b/src/problem2/fancy-form/src/assets/tokens/CNT.svg
new file mode 100644
index 0000000000..c098860f72
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CNT.svg
@@ -0,0 +1,110 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/COIN.svg b/src/problem2/fancy-form/src/assets/tokens/COIN.svg
new file mode 100644
index 0000000000..098ee36d37
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/COIN.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/COMP.svg b/src/problem2/fancy-form/src/assets/tokens/COMP.svg
new file mode 100644
index 0000000000..563bf3af25
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/COMP.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/COOK.svg b/src/problem2/fancy-form/src/assets/tokens/COOK.svg
new file mode 100644
index 0000000000..615625b404
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/COOK.svg
@@ -0,0 +1,40 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CRBRUS.svg b/src/problem2/fancy-form/src/assets/tokens/CRBRUS.svg
new file mode 100644
index 0000000000..d847b37b3c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CRBRUS.svg
@@ -0,0 +1,88 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CRE.svg b/src/problem2/fancy-form/src/assets/tokens/CRE.svg
new file mode 100644
index 0000000000..4008331be2
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CRE.svg
@@ -0,0 +1,42 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CRO.svg b/src/problem2/fancy-form/src/assets/tokens/CRO.svg
new file mode 100644
index 0000000000..75ddad7d51
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CRO.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CRV.svg b/src/problem2/fancy-form/src/assets/tokens/CRV.svg
new file mode 100644
index 0000000000..f9fa597fac
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CRV.svg
@@ -0,0 +1,790 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CTK.svg b/src/problem2/fancy-form/src/assets/tokens/CTK.svg
new file mode 100644
index 0000000000..96bfa4f618
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CTK.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/CW.svg b/src/problem2/fancy-form/src/assets/tokens/CW.svg
new file mode 100644
index 0000000000..e0d8eef0af
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/CW.svg
@@ -0,0 +1,13 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DAG.svg b/src/problem2/fancy-form/src/assets/tokens/DAG.svg
new file mode 100644
index 0000000000..a06db4c405
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DAG.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DAI.svg b/src/problem2/fancy-form/src/assets/tokens/DAI.svg
new file mode 100644
index 0000000000..00fdd7ae1b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DAI.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DAK.svg b/src/problem2/fancy-form/src/assets/tokens/DAK.svg
new file mode 100644
index 0000000000..bbfa1b2640
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DAK.svg
@@ -0,0 +1,20 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DARC.svg b/src/problem2/fancy-form/src/assets/tokens/DARC.svg
new file mode 100644
index 0000000000..8e131ded9b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DARC.svg
@@ -0,0 +1,9 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DASH.svg b/src/problem2/fancy-form/src/assets/tokens/DASH.svg
new file mode 100644
index 0000000000..17e5eb7146
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DASH.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DBC.svg b/src/problem2/fancy-form/src/assets/tokens/DBC.svg
new file mode 100644
index 0000000000..91e7b72378
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DBC.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DCR.svg b/src/problem2/fancy-form/src/assets/tokens/DCR.svg
new file mode 100644
index 0000000000..d97040bcfe
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DCR.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DEC.svg b/src/problem2/fancy-form/src/assets/tokens/DEC.svg
new file mode 100644
index 0000000000..025f6329b0
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DEC.svg
@@ -0,0 +1,38 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DEGEN.svg b/src/problem2/fancy-form/src/assets/tokens/DEGEN.svg
new file mode 100644
index 0000000000..44233e8e9d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DEGEN.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DENT.svg b/src/problem2/fancy-form/src/assets/tokens/DENT.svg
new file mode 100644
index 0000000000..10035d5a1a
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DENT.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DGB.svg b/src/problem2/fancy-form/src/assets/tokens/DGB.svg
new file mode 100644
index 0000000000..ecf85eb29f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DGB.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DIG.svg b/src/problem2/fancy-form/src/assets/tokens/DIG.svg
new file mode 100644
index 0000000000..b75f6740df
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DIG.svg
@@ -0,0 +1,54 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DKT.svg b/src/problem2/fancy-form/src/assets/tokens/DKT.svg
new file mode 100644
index 0000000000..8d1d5a5604
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DKT.svg
@@ -0,0 +1,65 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DODO.svg b/src/problem2/fancy-form/src/assets/tokens/DODO.svg
new file mode 100644
index 0000000000..514dd23b5e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DODO.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DOGE.svg b/src/problem2/fancy-form/src/assets/tokens/DOGE.svg
new file mode 100644
index 0000000000..f019ca4b5e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DOGE.svg
@@ -0,0 +1,124 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DOT.svg b/src/problem2/fancy-form/src/assets/tokens/DOT.svg
new file mode 100644
index 0000000000..db6de54b24
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DOT.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DPL.svg b/src/problem2/fancy-form/src/assets/tokens/DPL.svg
new file mode 100644
index 0000000000..e511541f14
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DPL.svg
@@ -0,0 +1,16 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DPX.svg b/src/problem2/fancy-form/src/assets/tokens/DPX.svg
new file mode 100644
index 0000000000..d96e812979
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DPX.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DRFT.svg b/src/problem2/fancy-form/src/assets/tokens/DRFT.svg
new file mode 100644
index 0000000000..3f64fd9620
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DRFT.svg
@@ -0,0 +1,83 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DROP.svg b/src/problem2/fancy-form/src/assets/tokens/DROP.svg
new file mode 100644
index 0000000000..dbb6c318b4
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DROP.svg
@@ -0,0 +1,13 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DSM.svg b/src/problem2/fancy-form/src/assets/tokens/DSM.svg
new file mode 100644
index 0000000000..b305f5f5ea
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DSM.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DUVT.svg b/src/problem2/fancy-form/src/assets/tokens/DUVT.svg
new file mode 100644
index 0000000000..4bced3bdb9
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DUVT.svg
@@ -0,0 +1,24 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DVPN.svg b/src/problem2/fancy-form/src/assets/tokens/DVPN.svg
new file mode 100644
index 0000000000..cb35dbc086
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DVPN.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DYDX.svg b/src/problem2/fancy-form/src/assets/tokens/DYDX.svg
new file mode 100644
index 0000000000..7977307c0f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DYDX.svg
@@ -0,0 +1,20 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/DYM.svg b/src/problem2/fancy-form/src/assets/tokens/DYM.svg
new file mode 100644
index 0000000000..e696de4fd5
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/DYM.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/EEUR.svg b/src/problem2/fancy-form/src/assets/tokens/EEUR.svg
new file mode 100644
index 0000000000..25f940a5b3
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/EEUR.svg
@@ -0,0 +1,16 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/EIGEN.svg b/src/problem2/fancy-form/src/assets/tokens/EIGEN.svg
new file mode 100644
index 0000000000..350b748dd4
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/EIGEN.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ELA.svg b/src/problem2/fancy-form/src/assets/tokens/ELA.svg
new file mode 100644
index 0000000000..7612168452
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ELA.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ELF.svg b/src/problem2/fancy-form/src/assets/tokens/ELF.svg
new file mode 100644
index 0000000000..fd3bc6cfe8
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ELF.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ENA.svg b/src/problem2/fancy-form/src/assets/tokens/ENA.svg
new file mode 100644
index 0000000000..2445033b08
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ENA.svg
@@ -0,0 +1,21 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ENJ.svg b/src/problem2/fancy-form/src/assets/tokens/ENJ.svg
new file mode 100644
index 0000000000..7b832779f7
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ENJ.svg
@@ -0,0 +1,63 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ENS.svg b/src/problem2/fancy-form/src/assets/tokens/ENS.svg
new file mode 100644
index 0000000000..94d385bc10
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ENS.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/EOS.svg b/src/problem2/fancy-form/src/assets/tokens/EOS.svg
new file mode 100644
index 0000000000..61de71db6d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/EOS.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/EPS.svg b/src/problem2/fancy-form/src/assets/tokens/EPS.svg
new file mode 100644
index 0000000000..ef8bb614e1
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/EPS.svg
@@ -0,0 +1,25 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ETC.svg b/src/problem2/fancy-form/src/assets/tokens/ETC.svg
new file mode 100644
index 0000000000..7b3e8b3869
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ETC.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ETH.svg b/src/problem2/fancy-form/src/assets/tokens/ETH.svg
new file mode 100644
index 0000000000..6a7cd5afc4
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ETH.svg
@@ -0,0 +1,9 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ETHBTC.svg b/src/problem2/fancy-form/src/assets/tokens/ETHBTC.svg
new file mode 100644
index 0000000000..bd01fc187e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ETHBTC.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ETN.svg b/src/problem2/fancy-form/src/assets/tokens/ETN.svg
new file mode 100644
index 0000000000..a13bc14247
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ETN.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/EUROC.svg b/src/problem2/fancy-form/src/assets/tokens/EUROC.svg
new file mode 100644
index 0000000000..81134495c6
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/EUROC.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/EUT.svg b/src/problem2/fancy-form/src/assets/tokens/EUT.svg
new file mode 100644
index 0000000000..56c4d324a5
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/EUT.svg
@@ -0,0 +1,208 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/EVMOS.svg b/src/problem2/fancy-form/src/assets/tokens/EVMOS.svg
new file mode 100644
index 0000000000..8d0b90acb4
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/EVMOS.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/EWT.svg b/src/problem2/fancy-form/src/assets/tokens/EWT.svg
new file mode 100644
index 0000000000..db6e0ec632
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/EWT.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/FARTCOIN.svg b/src/problem2/fancy-form/src/assets/tokens/FARTCOIN.svg
new file mode 100644
index 0000000000..9fa8534fdc
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/FARTCOIN.svg
@@ -0,0 +1,158 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/FBTC.svg b/src/problem2/fancy-form/src/assets/tokens/FBTC.svg
new file mode 100644
index 0000000000..89b376bbf9
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/FBTC.svg
@@ -0,0 +1,29 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/FEES.svg b/src/problem2/fancy-form/src/assets/tokens/FEES.svg
new file mode 100644
index 0000000000..f31a2e1f85
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/FEES.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/FET.svg b/src/problem2/fancy-form/src/assets/tokens/FET.svg
new file mode 100644
index 0000000000..20b53be3d1
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/FET.svg
@@ -0,0 +1,19 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/FIL.svg b/src/problem2/fancy-form/src/assets/tokens/FIL.svg
new file mode 100644
index 0000000000..a875441006
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/FIL.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/FIS.svg b/src/problem2/fancy-form/src/assets/tokens/FIS.svg
new file mode 100644
index 0000000000..ae28f926c9
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/FIS.svg
@@ -0,0 +1,20 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/FLIX.svg b/src/problem2/fancy-form/src/assets/tokens/FLIX.svg
new file mode 100644
index 0000000000..962e47fb2d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/FLIX.svg
@@ -0,0 +1,37 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/FLM.svg b/src/problem2/fancy-form/src/assets/tokens/FLM.svg
new file mode 100644
index 0000000000..73ba619981
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/FLM.svg
@@ -0,0 +1,13 @@
+
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/FLOW.svg b/src/problem2/fancy-form/src/assets/tokens/FLOW.svg
new file mode 100644
index 0000000000..7cf7e32db2
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/FLOW.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/FLUID.svg b/src/problem2/fancy-form/src/assets/tokens/FLUID.svg
new file mode 100644
index 0000000000..9202222f8f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/FLUID.svg
@@ -0,0 +1,53 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/FLUO.svg b/src/problem2/fancy-form/src/assets/tokens/FLUO.svg
new file mode 100644
index 0000000000..d4e4c7f345
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/FLUO.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/FRANK.svg b/src/problem2/fancy-form/src/assets/tokens/FRANK.svg
new file mode 100644
index 0000000000..6a49dcfec1
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/FRANK.svg
@@ -0,0 +1,268 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/FSGLP.svg b/src/problem2/fancy-form/src/assets/tokens/FSGLP.svg
new file mode 100644
index 0000000000..1392a246bb
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/FSGLP.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/FTM.svg b/src/problem2/fancy-form/src/assets/tokens/FTM.svg
new file mode 100644
index 0000000000..0f46c6923c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/FTM.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/FTT.svg b/src/problem2/fancy-form/src/assets/tokens/FTT.svg
new file mode 100644
index 0000000000..fcd829ef4f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/FTT.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/FTTC.svg b/src/problem2/fancy-form/src/assets/tokens/FTTC.svg
new file mode 100644
index 0000000000..b53103bc49
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/FTTC.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/FUN.svg b/src/problem2/fancy-form/src/assets/tokens/FUN.svg
new file mode 100644
index 0000000000..59cdc4bf25
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/FUN.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/GALA.svg b/src/problem2/fancy-form/src/assets/tokens/GALA.svg
new file mode 100644
index 0000000000..58a423f8bb
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/GALA.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/GAMBIT.svg b/src/problem2/fancy-form/src/assets/tokens/GAMBIT.svg
new file mode 100644
index 0000000000..b2ef5aadb3
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/GAMBIT.svg
@@ -0,0 +1,24 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/GAS.svg b/src/problem2/fancy-form/src/assets/tokens/GAS.svg
new file mode 100644
index 0000000000..3c31d75c0c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/GAS.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/GBT.svg b/src/problem2/fancy-form/src/assets/tokens/GBT.svg
new file mode 100644
index 0000000000..7dcf617c3e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/GBT.svg
@@ -0,0 +1,212 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/GLP.svg b/src/problem2/fancy-form/src/assets/tokens/GLP.svg
new file mode 100644
index 0000000000..c5eefed0ad
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/GLP.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/GM.svg b/src/problem2/fancy-form/src/assets/tokens/GM.svg
new file mode 100644
index 0000000000..7739426dcb
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/GM.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/GMX.svg b/src/problem2/fancy-form/src/assets/tokens/GMX.svg
new file mode 100644
index 0000000000..80a8c19e74
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/GMX.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/GNO.svg b/src/problem2/fancy-form/src/assets/tokens/GNO.svg
new file mode 100644
index 0000000000..b53b4961bc
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/GNO.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/GNS.svg b/src/problem2/fancy-form/src/assets/tokens/GNS.svg
new file mode 100644
index 0000000000..f47eaabf71
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/GNS.svg
@@ -0,0 +1,34 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/GOAT.svg b/src/problem2/fancy-form/src/assets/tokens/GOAT.svg
new file mode 100644
index 0000000000..f52285aaa9
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/GOAT.svg
@@ -0,0 +1,2174 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/GRASS.svg b/src/problem2/fancy-form/src/assets/tokens/GRASS.svg
new file mode 100644
index 0000000000..caa370fffe
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/GRASS.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/GRAV.svg b/src/problem2/fancy-form/src/assets/tokens/GRAV.svg
new file mode 100644
index 0000000000..658e155072
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/GRAV.svg
@@ -0,0 +1,44 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/GRT.svg b/src/problem2/fancy-form/src/assets/tokens/GRT.svg
new file mode 100644
index 0000000000..2d283004da
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/GRT.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/GT.svg b/src/problem2/fancy-form/src/assets/tokens/GT.svg
new file mode 100644
index 0000000000..6cb00ff5c5
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/GT.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/HBAR.svg b/src/problem2/fancy-form/src/assets/tokens/HBAR.svg
new file mode 100644
index 0000000000..62d8831906
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/HBAR.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/HDN.png b/src/problem2/fancy-form/src/assets/tokens/HDN.png
new file mode 100644
index 0000000000..fd7e612922
Binary files /dev/null and b/src/problem2/fancy-form/src/assets/tokens/HDN.png differ
diff --git a/src/problem2/fancy-form/src/assets/tokens/HDN.svg b/src/problem2/fancy-form/src/assets/tokens/HDN.svg
new file mode 100644
index 0000000000..f5fb0b1a70
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/HDN.svg
@@ -0,0 +1,9 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/HELMET.svg b/src/problem2/fancy-form/src/assets/tokens/HELMET.svg
new file mode 100644
index 0000000000..1a50859878
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/HELMET.svg
@@ -0,0 +1,9 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/HKT.svg b/src/problem2/fancy-form/src/assets/tokens/HKT.svg
new file mode 100644
index 0000000000..d2f5c930a7
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/HKT.svg
@@ -0,0 +1,45 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/HNT.svg b/src/problem2/fancy-form/src/assets/tokens/HNT.svg
new file mode 100644
index 0000000000..402e236890
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/HNT.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/HOPE.svg b/src/problem2/fancy-form/src/assets/tokens/HOPE.svg
new file mode 100644
index 0000000000..b7541ae4a9
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/HOPE.svg
@@ -0,0 +1,144 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/HOT.svg b/src/problem2/fancy-form/src/assets/tokens/HOT.svg
new file mode 100644
index 0000000000..eab9101a1f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/HOT.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/HT.svg b/src/problem2/fancy-form/src/assets/tokens/HT.svg
new file mode 100644
index 0000000000..72cdfdd097
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/HT.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/HUAHUA.svg b/src/problem2/fancy-form/src/assets/tokens/HUAHUA.svg
new file mode 100644
index 0000000000..e94cd98d8d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/HUAHUA.svg
@@ -0,0 +1,22 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/HUNY.svg b/src/problem2/fancy-form/src/assets/tokens/HUNY.svg
new file mode 100644
index 0000000000..b06f2f5457
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/HUNY.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/problem2/fancy-form/src/assets/tokens/HUSD.svg b/src/problem2/fancy-form/src/assets/tokens/HUSD.svg
new file mode 100644
index 0000000000..30b26c0373
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/HUSD.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/HYPE.svg b/src/problem2/fancy-form/src/assets/tokens/HYPE.svg
new file mode 100644
index 0000000000..24eb8536f1
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/HYPE.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/IBCX.svg b/src/problem2/fancy-form/src/assets/tokens/IBCX.svg
new file mode 100644
index 0000000000..061c6ccefe
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/IBCX.svg
@@ -0,0 +1,14 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ICP.svg b/src/problem2/fancy-form/src/assets/tokens/ICP.svg
new file mode 100644
index 0000000000..c7a99ba9bd
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ICP.svg
@@ -0,0 +1,16 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ICX.svg b/src/problem2/fancy-form/src/assets/tokens/ICX.svg
new file mode 100644
index 0000000000..53efc54ef9
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ICX.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/IDT.svg b/src/problem2/fancy-form/src/assets/tokens/IDT.svg
new file mode 100644
index 0000000000..91288c58bf
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/IDT.svg
@@ -0,0 +1,54 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/INIT.svg b/src/problem2/fancy-form/src/assets/tokens/INIT.svg
new file mode 100644
index 0000000000..47395f6439
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/INIT.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/INJ.svg b/src/problem2/fancy-form/src/assets/tokens/INJ.svg
new file mode 100644
index 0000000000..b6d304e498
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/INJ.svg
@@ -0,0 +1,14 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/INT.svg b/src/problem2/fancy-form/src/assets/tokens/INT.svg
new file mode 100644
index 0000000000..9ab0d29f35
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/INT.svg
@@ -0,0 +1,82 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ION.svg b/src/problem2/fancy-form/src/assets/tokens/ION.svg
new file mode 100644
index 0000000000..adad5f300f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ION.svg
@@ -0,0 +1,114 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/IOST.svg b/src/problem2/fancy-form/src/assets/tokens/IOST.svg
new file mode 100644
index 0000000000..8f791796a3
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/IOST.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/IOTX.svg b/src/problem2/fancy-form/src/assets/tokens/IOTX.svg
new file mode 100644
index 0000000000..97a8461838
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/IOTX.svg
@@ -0,0 +1,26 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/IOV.svg b/src/problem2/fancy-form/src/assets/tokens/IOV.svg
new file mode 100644
index 0000000000..2c37835fff
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/IOV.svg
@@ -0,0 +1,9 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/IP.svg b/src/problem2/fancy-form/src/assets/tokens/IP.svg
new file mode 100644
index 0000000000..be63bba6d7
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/IP.svg
@@ -0,0 +1,24 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/IRIS.svg b/src/problem2/fancy-form/src/assets/tokens/IRIS.svg
new file mode 100644
index 0000000000..59b13b5aa6
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/IRIS.svg
@@ -0,0 +1,51 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/IXO.svg b/src/problem2/fancy-form/src/assets/tokens/IXO.svg
new file mode 100644
index 0000000000..0d1fb10136
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/IXO.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/JPT.svg b/src/problem2/fancy-form/src/assets/tokens/JPT.svg
new file mode 100644
index 0000000000..14014e4cb8
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/JPT.svg
@@ -0,0 +1,54 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/JTO.svg b/src/problem2/fancy-form/src/assets/tokens/JTO.svg
new file mode 100644
index 0000000000..3ce7f51587
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/JTO.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/JUNO.svg b/src/problem2/fancy-form/src/assets/tokens/JUNO.svg
new file mode 100644
index 0000000000..d65fb3da31
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/JUNO.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/JUP.svg b/src/problem2/fancy-form/src/assets/tokens/JUP.svg
new file mode 100644
index 0000000000..adf9284819
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/JUP.svg
@@ -0,0 +1,34 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/KAITO.svg b/src/problem2/fancy-form/src/assets/tokens/KAITO.svg
new file mode 100644
index 0000000000..f51471047a
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/KAITO.svg
@@ -0,0 +1,16 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/KAS.svg b/src/problem2/fancy-form/src/assets/tokens/KAS.svg
new file mode 100644
index 0000000000..1c9ea6bc49
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/KAS.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/KBONK.svg b/src/problem2/fancy-form/src/assets/tokens/KBONK.svg
new file mode 100644
index 0000000000..5df777e894
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/KBONK.svg
@@ -0,0 +1,424 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/KCS.svg b/src/problem2/fancy-form/src/assets/tokens/KCS.svg
new file mode 100644
index 0000000000..a4b333dfb8
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/KCS.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/KFLOKI.svg b/src/problem2/fancy-form/src/assets/tokens/KFLOKI.svg
new file mode 100644
index 0000000000..d35699e87e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/KFLOKI.svg
@@ -0,0 +1,40 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/KLAY.svg b/src/problem2/fancy-form/src/assets/tokens/KLAY.svg
new file mode 100644
index 0000000000..6f1d4cabef
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/KLAY.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/KMD.svg b/src/problem2/fancy-form/src/assets/tokens/KMD.svg
new file mode 100644
index 0000000000..62598658bb
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/KMD.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/KNC.svg b/src/problem2/fancy-form/src/assets/tokens/KNC.svg
new file mode 100644
index 0000000000..d9ed00657f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/KNC.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/KPEPE.svg b/src/problem2/fancy-form/src/assets/tokens/KPEPE.svg
new file mode 100644
index 0000000000..92665e5502
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/KPEPE.svg
@@ -0,0 +1,28 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/KRT.svg b/src/problem2/fancy-form/src/assets/tokens/KRT.svg
new file mode 100644
index 0000000000..e6ea416cf6
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/KRT.svg
@@ -0,0 +1,248 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/KSHIB.svg b/src/problem2/fancy-form/src/assets/tokens/KSHIB.svg
new file mode 100644
index 0000000000..adbb2f009b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/KSHIB.svg
@@ -0,0 +1,17 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/KSM.svg b/src/problem2/fancy-form/src/assets/tokens/KSM.svg
new file mode 100644
index 0000000000..771f73596e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/KSM.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/KUJI.svg b/src/problem2/fancy-form/src/assets/tokens/KUJI.svg
new file mode 100644
index 0000000000..7c169dd724
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/KUJI.svg
@@ -0,0 +1,19 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LAYER.svg b/src/problem2/fancy-form/src/assets/tokens/LAYER.svg
new file mode 100644
index 0000000000..9e9036df30
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LAYER.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LBTC.svg b/src/problem2/fancy-form/src/assets/tokens/LBTC.svg
new file mode 100644
index 0000000000..1476de62ab
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LBTC.svg
@@ -0,0 +1,26 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LDO.svg b/src/problem2/fancy-form/src/assets/tokens/LDO.svg
new file mode 100644
index 0000000000..c8860768cf
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LDO.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LEO.svg b/src/problem2/fancy-form/src/assets/tokens/LEO.svg
new file mode 100644
index 0000000000..f94a11c945
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LEO.svg
@@ -0,0 +1,77 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LET.svg b/src/problem2/fancy-form/src/assets/tokens/LET.svg
new file mode 100644
index 0000000000..8f6a4a06e6
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LET.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LIKE.svg b/src/problem2/fancy-form/src/assets/tokens/LIKE.svg
new file mode 100644
index 0000000000..a0ac6ac6ac
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LIKE.svg
@@ -0,0 +1,41 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LINK.svg b/src/problem2/fancy-form/src/assets/tokens/LINK.svg
new file mode 100644
index 0000000000..8484106a43
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LINK.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LKT.svg b/src/problem2/fancy-form/src/assets/tokens/LKT.svg
new file mode 100644
index 0000000000..f224ae0ff2
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LKT.svg
@@ -0,0 +1,16 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LOOM.svg b/src/problem2/fancy-form/src/assets/tokens/LOOM.svg
new file mode 100644
index 0000000000..5ad0435613
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LOOM.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LOOP.svg b/src/problem2/fancy-form/src/assets/tokens/LOOP.svg
new file mode 100644
index 0000000000..6c69420439
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LOOP.svg
@@ -0,0 +1,35 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LOTA.svg b/src/problem2/fancy-form/src/assets/tokens/LOTA.svg
new file mode 100644
index 0000000000..10c742ae6d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LOTA.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LPLBTC_29MAY2025.svg b/src/problem2/fancy-form/src/assets/tokens/LPLBTC_29MAY2025.svg
new file mode 100644
index 0000000000..d75f81bcd5
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LPLBTC_29MAY2025.svg
@@ -0,0 +1,35 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LPT.svg b/src/problem2/fancy-form/src/assets/tokens/LPT.svg
new file mode 100644
index 0000000000..c026842d93
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LPT.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LPberaSTONE_10APR2025.svg b/src/problem2/fancy-form/src/assets/tokens/LPberaSTONE_10APR2025.svg
new file mode 100644
index 0000000000..24fd8ebe9a
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LPberaSTONE_10APR2025.svg
@@ -0,0 +1,29 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LPcmETH_26JUN2025.svg b/src/problem2/fancy-form/src/assets/tokens/LPcmETH_26JUN2025.svg
new file mode 100644
index 0000000000..dd4bb6fbbc
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LPcmETH_26JUN2025.svg
@@ -0,0 +1,31 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LRC.svg b/src/problem2/fancy-form/src/assets/tokens/LRC.svg
new file mode 100644
index 0000000000..2319bb063d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LRC.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LSI.svg b/src/problem2/fancy-form/src/assets/tokens/LSI.svg
new file mode 100644
index 0000000000..48618f66b3
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LSI.svg
@@ -0,0 +1,53 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LSK.svg b/src/problem2/fancy-form/src/assets/tokens/LSK.svg
new file mode 100644
index 0000000000..d7b38f123e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LSK.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LTC.svg b/src/problem2/fancy-form/src/assets/tokens/LTC.svg
new file mode 100644
index 0000000000..d734c3ac54
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LTC.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LUM.svg b/src/problem2/fancy-form/src/assets/tokens/LUM.svg
new file mode 100644
index 0000000000..8994d02ad5
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LUM.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LUNA.svg b/src/problem2/fancy-form/src/assets/tokens/LUNA.svg
new file mode 100644
index 0000000000..6a839981dd
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LUNA.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LUNAX.svg b/src/problem2/fancy-form/src/assets/tokens/LUNAX.svg
new file mode 100644
index 0000000000..afc19e17de
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LUNAX.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LUNC.svg b/src/problem2/fancy-form/src/assets/tokens/LUNC.svg
new file mode 100644
index 0000000000..fe40173c96
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LUNC.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LUNI.svg b/src/problem2/fancy-form/src/assets/tokens/LUNI.svg
new file mode 100644
index 0000000000..1721643744
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LUNI.svg
@@ -0,0 +1,29 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LUNR.svg b/src/problem2/fancy-form/src/assets/tokens/LUNR.svg
new file mode 100644
index 0000000000..1b8b15237f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LUNR.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LUV.svg b/src/problem2/fancy-form/src/assets/tokens/LUV.svg
new file mode 100644
index 0000000000..0f7342c490
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LUV.svg
@@ -0,0 +1,49 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/LVN.svg b/src/problem2/fancy-form/src/assets/tokens/LVN.svg
new file mode 100644
index 0000000000..65aac46ea5
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/LVN.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/Liquid Staking Index.svg b/src/problem2/fancy-form/src/assets/tokens/Liquid Staking Index.svg
new file mode 100644
index 0000000000..58533746be
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/Liquid Staking Index.svg
@@ -0,0 +1,29 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/M87.svg b/src/problem2/fancy-form/src/assets/tokens/M87.svg
new file mode 100644
index 0000000000..77f8c882b5
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/M87.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MANA.svg b/src/problem2/fancy-form/src/assets/tokens/MANA.svg
new file mode 100644
index 0000000000..0629467224
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MANA.svg
@@ -0,0 +1,26 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MANTA.svg b/src/problem2/fancy-form/src/assets/tokens/MANTA.svg
new file mode 100644
index 0000000000..1970537a1f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MANTA.svg
@@ -0,0 +1,25 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MARBLE.svg b/src/problem2/fancy-form/src/assets/tokens/MARBLE.svg
new file mode 100644
index 0000000000..4e9c2214f2
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MARBLE.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MATH.svg b/src/problem2/fancy-form/src/assets/tokens/MATH.svg
new file mode 100644
index 0000000000..144d40f0bb
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MATH.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MATIC.svg b/src/problem2/fancy-form/src/assets/tokens/MATIC.svg
new file mode 100644
index 0000000000..98d07c7d95
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MATIC.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MDX.svg b/src/problem2/fancy-form/src/assets/tokens/MDX.svg
new file mode 100644
index 0000000000..8f3b267801
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MDX.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ME.svg b/src/problem2/fancy-form/src/assets/tokens/ME.svg
new file mode 100644
index 0000000000..f354182728
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ME.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MED.svg b/src/problem2/fancy-form/src/assets/tokens/MED.svg
new file mode 100644
index 0000000000..900d139258
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MED.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MEME.svg b/src/problem2/fancy-form/src/assets/tokens/MEME.svg
new file mode 100644
index 0000000000..d784304a65
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MEME.svg
@@ -0,0 +1,13 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/METIS.svg b/src/problem2/fancy-form/src/assets/tokens/METIS.svg
new file mode 100644
index 0000000000..3bd43ffadb
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/METIS.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MEW.svg b/src/problem2/fancy-form/src/assets/tokens/MEW.svg
new file mode 100644
index 0000000000..dc9532c537
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MEW.svg
@@ -0,0 +1,25 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MIAW.svg b/src/problem2/fancy-form/src/assets/tokens/MIAW.svg
new file mode 100644
index 0000000000..ddf46721c7
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MIAW.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MILK.svg b/src/problem2/fancy-form/src/assets/tokens/MILK.svg
new file mode 100644
index 0000000000..e6a434e9c1
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MILK.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MINA.svg b/src/problem2/fancy-form/src/assets/tokens/MINA.svg
new file mode 100644
index 0000000000..d5aafd7398
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MINA.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MINE.svg b/src/problem2/fancy-form/src/assets/tokens/MINE.svg
new file mode 100644
index 0000000000..ff71cab9e7
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MINE.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MIOTA.svg b/src/problem2/fancy-form/src/assets/tokens/MIOTA.svg
new file mode 100644
index 0000000000..3d3c08c604
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MIOTA.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MIR.svg b/src/problem2/fancy-form/src/assets/tokens/MIR.svg
new file mode 100644
index 0000000000..0247791318
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MIR.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MKR.svg b/src/problem2/fancy-form/src/assets/tokens/MKR.svg
new file mode 100644
index 0000000000..9a639d1374
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MKR.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MMOG.svg b/src/problem2/fancy-form/src/assets/tokens/MMOG.svg
new file mode 100644
index 0000000000..6bb1f33b10
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MMOG.svg
@@ -0,0 +1,20 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MNT.svg b/src/problem2/fancy-form/src/assets/tokens/MNT.svg
new file mode 100644
index 0000000000..1aa231ddd4
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MNT.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MNTA.svg b/src/problem2/fancy-form/src/assets/tokens/MNTA.svg
new file mode 100644
index 0000000000..e3b7cfa957
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MNTA.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MNTL.svg b/src/problem2/fancy-form/src/assets/tokens/MNTL.svg
new file mode 100644
index 0000000000..71e1c497e9
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MNTL.svg
@@ -0,0 +1,17 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MON.svg b/src/problem2/fancy-form/src/assets/tokens/MON.svg
new file mode 100644
index 0000000000..be988333af
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MON.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MOODENG.svg b/src/problem2/fancy-form/src/assets/tokens/MOODENG.svg
new file mode 100644
index 0000000000..679ffc5b35
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MOODENG.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MORPHO.svg b/src/problem2/fancy-form/src/assets/tokens/MORPHO.svg
new file mode 100644
index 0000000000..a27a0fb363
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MORPHO.svg
@@ -0,0 +1,14 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/MYT.svg b/src/problem2/fancy-form/src/assets/tokens/MYT.svg
new file mode 100644
index 0000000000..92cbc6468d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/MYT.svg
@@ -0,0 +1,171 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/NANO.svg b/src/problem2/fancy-form/src/assets/tokens/NANO.svg
new file mode 100644
index 0000000000..9ed54dd843
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/NANO.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/NAS.svg b/src/problem2/fancy-form/src/assets/tokens/NAS.svg
new file mode 100644
index 0000000000..071766c17c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/NAS.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/NAT.svg b/src/problem2/fancy-form/src/assets/tokens/NAT.svg
new file mode 100644
index 0000000000..d72f7e18fc
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/NAT.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/NEAR.svg b/src/problem2/fancy-form/src/assets/tokens/NEAR.svg
new file mode 100644
index 0000000000..7bc784c808
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/NEAR.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/NEIROETH.svg b/src/problem2/fancy-form/src/assets/tokens/NEIROETH.svg
new file mode 100644
index 0000000000..3ced226feb
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/NEIROETH.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/NEO.svg b/src/problem2/fancy-form/src/assets/tokens/NEO.svg
new file mode 100644
index 0000000000..d4a90e1b27
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/NEO.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/NETA.svg b/src/problem2/fancy-form/src/assets/tokens/NETA.svg
new file mode 100644
index 0000000000..b617dbef98
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/NETA.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/NEX.svg b/src/problem2/fancy-form/src/assets/tokens/NEX.svg
new file mode 100644
index 0000000000..34be620b9e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/NEX.svg
@@ -0,0 +1,5 @@
+
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/NEXO.svg b/src/problem2/fancy-form/src/assets/tokens/NEXO.svg
new file mode 100644
index 0000000000..4f8507a40f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/NEXO.svg
@@ -0,0 +1,9 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/NGM.svg b/src/problem2/fancy-form/src/assets/tokens/NGM.svg
new file mode 100644
index 0000000000..ebdc8a035d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/NGM.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/NIM.svg b/src/problem2/fancy-form/src/assets/tokens/NIM.svg
new file mode 100644
index 0000000000..ec74006b7c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/NIM.svg
@@ -0,0 +1,23 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/NKN.svg b/src/problem2/fancy-form/src/assets/tokens/NKN.svg
new file mode 100644
index 0000000000..e008ac5d71
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/NKN.svg
@@ -0,0 +1,22 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/NMR.svg b/src/problem2/fancy-form/src/assets/tokens/NMR.svg
new file mode 100644
index 0000000000..fcb458cafa
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/NMR.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/NOT.svg b/src/problem2/fancy-form/src/assets/tokens/NOT.svg
new file mode 100644
index 0000000000..5561ccec77
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/NOT.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/NOTE.svg b/src/problem2/fancy-form/src/assets/tokens/NOTE.svg
new file mode 100644
index 0000000000..9f44e1971f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/NOTE.svg
@@ -0,0 +1,17 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/NTRN-dATOM.svg b/src/problem2/fancy-form/src/assets/tokens/NTRN-dATOM.svg
new file mode 100644
index 0000000000..5b3303f21b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/NTRN-dATOM.svg
@@ -0,0 +1,21 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/NTRN.svg b/src/problem2/fancy-form/src/assets/tokens/NTRN.svg
new file mode 100644
index 0000000000..150a6137d2
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/NTRN.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/NXM.svg b/src/problem2/fancy-form/src/assets/tokens/NXM.svg
new file mode 100644
index 0000000000..165bc3b984
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/NXM.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/OCEAN.svg b/src/problem2/fancy-form/src/assets/tokens/OCEAN.svg
new file mode 100644
index 0000000000..ad0f99d6ae
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/OCEAN.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/OCH.svg b/src/problem2/fancy-form/src/assets/tokens/OCH.svg
new file mode 100644
index 0000000000..51c3f8e039
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/OCH.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/OGN.svg b/src/problem2/fancy-form/src/assets/tokens/OGN.svg
new file mode 100644
index 0000000000..e15dbac858
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/OGN.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/OKB.svg b/src/problem2/fancy-form/src/assets/tokens/OKB.svg
new file mode 100644
index 0000000000..786f75ba42
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/OKB.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/OKT.svg b/src/problem2/fancy-form/src/assets/tokens/OKT.svg
new file mode 100644
index 0000000000..0afcd8a1cf
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/OKT.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/OM.svg b/src/problem2/fancy-form/src/assets/tokens/OM.svg
new file mode 100644
index 0000000000..6305bd1560
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/OM.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/OMG.svg b/src/problem2/fancy-form/src/assets/tokens/OMG.svg
new file mode 100644
index 0000000000..2d3d8ae8e6
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/OMG.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/OMG_2.svg b/src/problem2/fancy-form/src/assets/tokens/OMG_2.svg
new file mode 100644
index 0000000000..5735f9f726
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/OMG_2.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/OMI.svg b/src/problem2/fancy-form/src/assets/tokens/OMI.svg
new file mode 100644
index 0000000000..b1d5020084
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/OMI.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/OMNI.svg b/src/problem2/fancy-form/src/assets/tokens/OMNI.svg
new file mode 100644
index 0000000000..ea1ce8353d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/OMNI.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ONDO.svg b/src/problem2/fancy-form/src/assets/tokens/ONDO.svg
new file mode 100644
index 0000000000..84482f794d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ONDO.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ONE.svg b/src/problem2/fancy-form/src/assets/tokens/ONE.svg
new file mode 100644
index 0000000000..63c1260c06
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ONE.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ONT.svg b/src/problem2/fancy-form/src/assets/tokens/ONT.svg
new file mode 100644
index 0000000000..93378b4745
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ONT.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/OP.svg b/src/problem2/fancy-form/src/assets/tokens/OP.svg
new file mode 100644
index 0000000000..b5feac7946
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/OP.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/OPUL.svg b/src/problem2/fancy-form/src/assets/tokens/OPUL.svg
new file mode 100644
index 0000000000..c7ae4dbf3e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/OPUL.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ORDI.svg b/src/problem2/fancy-form/src/assets/tokens/ORDI.svg
new file mode 100644
index 0000000000..380181270d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ORDI.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ORION.svg b/src/problem2/fancy-form/src/assets/tokens/ORION.svg
new file mode 100644
index 0000000000..b5f9ba6fff
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ORION.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ORNE.svg b/src/problem2/fancy-form/src/assets/tokens/ORNE.svg
new file mode 100644
index 0000000000..d986b3f31e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ORNE.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/OSMO.svg b/src/problem2/fancy-form/src/assets/tokens/OSMO.svg
new file mode 100644
index 0000000000..e98545517b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/OSMO.svg
@@ -0,0 +1,121 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/OXT.svg b/src/problem2/fancy-form/src/assets/tokens/OXT.svg
new file mode 100644
index 0000000000..bba9547da1
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/OXT.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/OXY.svg b/src/problem2/fancy-form/src/assets/tokens/OXY.svg
new file mode 100644
index 0000000000..9175a0b900
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/OXY.svg
@@ -0,0 +1,22 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PAX.svg b/src/problem2/fancy-form/src/assets/tokens/PAX.svg
new file mode 100644
index 0000000000..32b0ef8211
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PAX.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PAXG.svg b/src/problem2/fancy-form/src/assets/tokens/PAXG.svg
new file mode 100644
index 0000000000..5ff89051f8
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PAXG.svg
@@ -0,0 +1,22 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PENDLE.svg b/src/problem2/fancy-form/src/assets/tokens/PENDLE.svg
new file mode 100644
index 0000000000..367540fbb0
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PENDLE.svg
@@ -0,0 +1,17 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PENGU.svg b/src/problem2/fancy-form/src/assets/tokens/PENGU.svg
new file mode 100644
index 0000000000..a5c99add38
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PENGU.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PEPE.svg b/src/problem2/fancy-form/src/assets/tokens/PEPE.svg
new file mode 100644
index 0000000000..1e6ba151a3
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PEPE.svg
@@ -0,0 +1,28 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PHT.svg b/src/problem2/fancy-form/src/assets/tokens/PHT.svg
new file mode 100644
index 0000000000..d515118058
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PHT.svg
@@ -0,0 +1,124 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PLAY.svg b/src/problem2/fancy-form/src/assets/tokens/PLAY.svg
new file mode 100644
index 0000000000..bae2577420
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PLAY.svg
@@ -0,0 +1,23 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PLQ.svg b/src/problem2/fancy-form/src/assets/tokens/PLQ.svg
new file mode 100644
index 0000000000..31b353bb45
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PLQ.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PLY.svg b/src/problem2/fancy-form/src/assets/tokens/PLY.svg
new file mode 100644
index 0000000000..c79b320445
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PLY.svg
@@ -0,0 +1,42 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PNUT.svg b/src/problem2/fancy-form/src/assets/tokens/PNUT.svg
new file mode 100644
index 0000000000..90abdb384d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PNUT.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/POL.svg b/src/problem2/fancy-form/src/assets/tokens/POL.svg
new file mode 100644
index 0000000000..ceff03709c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/POL.svg
@@ -0,0 +1,19 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/POLY.svg b/src/problem2/fancy-form/src/assets/tokens/POLY.svg
new file mode 100644
index 0000000000..b894fef5d5
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/POLY.svg
@@ -0,0 +1,55 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/POPCAT.svg b/src/problem2/fancy-form/src/assets/tokens/POPCAT.svg
new file mode 100644
index 0000000000..ab8fa4c5e5
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/POPCAT.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PORT.svg b/src/problem2/fancy-form/src/assets/tokens/PORT.svg
new file mode 100644
index 0000000000..d846537361
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PORT.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PROM.svg b/src/problem2/fancy-form/src/assets/tokens/PROM.svg
new file mode 100644
index 0000000000..044c9e3576
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PROM.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PSI.svg b/src/problem2/fancy-form/src/assets/tokens/PSI.svg
new file mode 100644
index 0000000000..674744b4e5
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PSI.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PSTAKE.svg b/src/problem2/fancy-form/src/assets/tokens/PSTAKE.svg
new file mode 100644
index 0000000000..caf13d8d63
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PSTAKE.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PTLBTC_29MAY2025.svg b/src/problem2/fancy-form/src/assets/tokens/PTLBTC_29MAY2025.svg
new file mode 100644
index 0000000000..afb01c923b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PTLBTC_29MAY2025.svg
@@ -0,0 +1,27 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PTMETH_26DEC2024.svg b/src/problem2/fancy-form/src/assets/tokens/PTMETH_26DEC2024.svg
new file mode 100644
index 0000000000..3256ec9f5f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PTMETH_26DEC2024.svg
@@ -0,0 +1,30 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PTberaSTONE_10APR2025.svg b/src/problem2/fancy-form/src/assets/tokens/PTberaSTONE_10APR2025.svg
new file mode 100644
index 0000000000..1444e75dfb
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PTberaSTONE_10APR2025.svg
@@ -0,0 +1,21 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PTcmETH_26JUN2025.svg b/src/problem2/fancy-form/src/assets/tokens/PTcmETH_26JUN2025.svg
new file mode 100644
index 0000000000..860a1e3892
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PTcmETH_26JUN2025.svg
@@ -0,0 +1,23 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PUDGY.svg b/src/problem2/fancy-form/src/assets/tokens/PUDGY.svg
new file mode 100644
index 0000000000..239424d8cd
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PUDGY.svg
@@ -0,0 +1,23 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PUMP.svg b/src/problem2/fancy-form/src/assets/tokens/PUMP.svg
new file mode 100644
index 0000000000..3b8ac28fda
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PUMP.svg
@@ -0,0 +1,67 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PUNDIX.svg b/src/problem2/fancy-form/src/assets/tokens/PUNDIX.svg
new file mode 100644
index 0000000000..a522d0d26e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PUNDIX.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PURR.svg b/src/problem2/fancy-form/src/assets/tokens/PURR.svg
new file mode 100644
index 0000000000..c8b82375cb
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PURR.svg
@@ -0,0 +1,62 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PURSE.svg b/src/problem2/fancy-form/src/assets/tokens/PURSE.svg
new file mode 100644
index 0000000000..9188e092de
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PURSE.svg
@@ -0,0 +1,22 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/PYTH.svg b/src/problem2/fancy-form/src/assets/tokens/PYTH.svg
new file mode 100644
index 0000000000..b34cc9ea3d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/PYTH.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/QCK.svg b/src/problem2/fancy-form/src/assets/tokens/QCK.svg
new file mode 100644
index 0000000000..358cb7dbbf
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/QCK.svg
@@ -0,0 +1,80 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/QKC.svg b/src/problem2/fancy-form/src/assets/tokens/QKC.svg
new file mode 100644
index 0000000000..e312777506
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/QKC.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/QNT.svg b/src/problem2/fancy-form/src/assets/tokens/QNT.svg
new file mode 100644
index 0000000000..a611eaa24a
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/QNT.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/QTUM.svg b/src/problem2/fancy-form/src/assets/tokens/QTUM.svg
new file mode 100644
index 0000000000..e96f6cf2ca
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/QTUM.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/RAY.svg b/src/problem2/fancy-form/src/assets/tokens/RAY.svg
new file mode 100644
index 0000000000..e769284e27
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/RAY.svg
@@ -0,0 +1,14 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/RBN.svg b/src/problem2/fancy-form/src/assets/tokens/RBN.svg
new file mode 100644
index 0000000000..ef40c376d8
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/RBN.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/REEF.svg b/src/problem2/fancy-form/src/assets/tokens/REEF.svg
new file mode 100644
index 0000000000..5c777f840f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/REEF.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/REGEN.svg b/src/problem2/fancy-form/src/assets/tokens/REGEN.svg
new file mode 100644
index 0000000000..242a4c66c9
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/REGEN.svg
@@ -0,0 +1,24 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/REN.svg b/src/problem2/fancy-form/src/assets/tokens/REN.svg
new file mode 100644
index 0000000000..bae08ca56f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/REN.svg
@@ -0,0 +1,16 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/REP.svg b/src/problem2/fancy-form/src/assets/tokens/REP.svg
new file mode 100644
index 0000000000..c311970b6d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/REP.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/REV.svg b/src/problem2/fancy-form/src/assets/tokens/REV.svg
new file mode 100644
index 0000000000..6dcaa131aa
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/REV.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/RLB.svg b/src/problem2/fancy-form/src/assets/tokens/RLB.svg
new file mode 100644
index 0000000000..344fe8e022
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/RLB.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/RLC.svg b/src/problem2/fancy-form/src/assets/tokens/RLC.svg
new file mode 100644
index 0000000000..c816edf016
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/RLC.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/RNDR.svg b/src/problem2/fancy-form/src/assets/tokens/RNDR.svg
new file mode 100644
index 0000000000..031e8816b3
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/RNDR.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ROAR.svg b/src/problem2/fancy-form/src/assets/tokens/ROAR.svg
new file mode 100644
index 0000000000..d29ab09634
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ROAR.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ROWAN.svg b/src/problem2/fancy-form/src/assets/tokens/ROWAN.svg
new file mode 100644
index 0000000000..6b395742d4
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ROWAN.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/RSR.svg b/src/problem2/fancy-form/src/assets/tokens/RSR.svg
new file mode 100644
index 0000000000..f85bb78c23
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/RSR.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/RUNE.svg b/src/problem2/fancy-form/src/assets/tokens/RUNE.svg
new file mode 100644
index 0000000000..ccbb65ceff
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/RUNE.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/RVN.svg b/src/problem2/fancy-form/src/assets/tokens/RVN.svg
new file mode 100644
index 0000000000..4d6d30eeef
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/RVN.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/S.svg b/src/problem2/fancy-form/src/assets/tokens/S.svg
new file mode 100644
index 0000000000..b216a1804f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/S.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SAFEMOON.svg b/src/problem2/fancy-form/src/assets/tokens/SAFEMOON.svg
new file mode 100644
index 0000000000..9ff12873a5
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SAFEMOON.svg
@@ -0,0 +1,27 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SAGA.svg b/src/problem2/fancy-form/src/assets/tokens/SAGA.svg
new file mode 100644
index 0000000000..53455ea0dd
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SAGA.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SAND.svg b/src/problem2/fancy-form/src/assets/tokens/SAND.svg
new file mode 100644
index 0000000000..4e01196b45
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SAND.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SAYVE.svg b/src/problem2/fancy-form/src/assets/tokens/SAYVE.svg
new file mode 100644
index 0000000000..2cea35fc51
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SAYVE.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SC.svg b/src/problem2/fancy-form/src/assets/tokens/SC.svg
new file mode 100644
index 0000000000..aebc27644b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SC.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SCRT.svg b/src/problem2/fancy-form/src/assets/tokens/SCRT.svg
new file mode 100644
index 0000000000..9451de4116
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SCRT.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SDT.svg b/src/problem2/fancy-form/src/assets/tokens/SDT.svg
new file mode 100644
index 0000000000..222a72897f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SDT.svg
@@ -0,0 +1,48 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SEI.svg b/src/problem2/fancy-form/src/assets/tokens/SEI.svg
new file mode 100644
index 0000000000..65ea99277e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SEI.svg
@@ -0,0 +1,14 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SET.svg b/src/problem2/fancy-form/src/assets/tokens/SET.svg
new file mode 100644
index 0000000000..f46a6ba24f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SET.svg
@@ -0,0 +1,65 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SGT.svg b/src/problem2/fancy-form/src/assets/tokens/SGT.svg
new file mode 100644
index 0000000000..a975dece90
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SGT.svg
@@ -0,0 +1,138 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SHD.svg b/src/problem2/fancy-form/src/assets/tokens/SHD.svg
new file mode 100644
index 0000000000..bdb7e6c29c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SHD.svg
@@ -0,0 +1,34 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SHIB.svg b/src/problem2/fancy-form/src/assets/tokens/SHIB.svg
new file mode 100644
index 0000000000..adbb2f009b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SHIB.svg
@@ -0,0 +1,17 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SHIDO.svg b/src/problem2/fancy-form/src/assets/tokens/SHIDO.svg
new file mode 100644
index 0000000000..bd7deeeb4b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SHIDO.svg
@@ -0,0 +1,20 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SITY.svg b/src/problem2/fancy-form/src/assets/tokens/SITY.svg
new file mode 100644
index 0000000000..7cfb8209bf
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SITY.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SLERF.svg b/src/problem2/fancy-form/src/assets/tokens/SLERF.svg
new file mode 100644
index 0000000000..713f29af95
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SLERF.svg
@@ -0,0 +1,24 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SNT.svg b/src/problem2/fancy-form/src/assets/tokens/SNT.svg
new file mode 100644
index 0000000000..cc8ad2df4c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SNT.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SNX.svg b/src/problem2/fancy-form/src/assets/tokens/SNX.svg
new file mode 100644
index 0000000000..14e0591389
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SNX.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SOL.svg b/src/problem2/fancy-form/src/assets/tokens/SOL.svg
new file mode 100644
index 0000000000..0568e80881
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SOL.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SOLETH.svg b/src/problem2/fancy-form/src/assets/tokens/SOLETH.svg
new file mode 100644
index 0000000000..c7f81893f8
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SOLETH.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SOM.svg b/src/problem2/fancy-form/src/assets/tokens/SOM.svg
new file mode 100644
index 0000000000..778bf9b5c9
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SOM.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SOMM.svg b/src/problem2/fancy-form/src/assets/tokens/SOMM.svg
new file mode 100644
index 0000000000..fa82d261ee
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SOMM.svg
@@ -0,0 +1,65 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SPEC.svg b/src/problem2/fancy-form/src/assets/tokens/SPEC.svg
new file mode 100644
index 0000000000..75c9b37b2b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SPEC.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SRM.svg b/src/problem2/fancy-form/src/assets/tokens/SRM.svg
new file mode 100644
index 0000000000..e488de82db
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SRM.svg
@@ -0,0 +1,20 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SRV.svg b/src/problem2/fancy-form/src/assets/tokens/SRV.svg
new file mode 100644
index 0000000000..b15a61c77f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SRV.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/STARS.svg b/src/problem2/fancy-form/src/assets/tokens/STARS.svg
new file mode 100644
index 0000000000..de6d376db8
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/STARS.svg
@@ -0,0 +1,16 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/STEEM.svg b/src/problem2/fancy-form/src/assets/tokens/STEEM.svg
new file mode 100644
index 0000000000..503009b90d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/STEEM.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/STMX.svg b/src/problem2/fancy-form/src/assets/tokens/STMX.svg
new file mode 100644
index 0000000000..976e86474b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/STMX.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/STORJ.svg b/src/problem2/fancy-form/src/assets/tokens/STORJ.svg
new file mode 100644
index 0000000000..85a332a6ce
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/STORJ.svg
@@ -0,0 +1,13 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/STRAX.svg b/src/problem2/fancy-form/src/assets/tokens/STRAX.svg
new file mode 100644
index 0000000000..a34822931d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/STRAX.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/STRD.svg b/src/problem2/fancy-form/src/assets/tokens/STRD.svg
new file mode 100644
index 0000000000..f25a48536c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/STRD.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/STREAM.svg b/src/problem2/fancy-form/src/assets/tokens/STREAM.svg
new file mode 100644
index 0000000000..fba4ce0609
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/STREAM.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/STRK.svg b/src/problem2/fancy-form/src/assets/tokens/STRK.svg
new file mode 100644
index 0000000000..22c139824d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/STRK.svg
@@ -0,0 +1,13 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/STT.svg b/src/problem2/fancy-form/src/assets/tokens/STT.svg
new file mode 100644
index 0000000000..d37590a8d3
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/STT.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/STX.svg b/src/problem2/fancy-form/src/assets/tokens/STX.svg
new file mode 100644
index 0000000000..ed89fc9276
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/STX.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SUI.svg b/src/problem2/fancy-form/src/assets/tokens/SUI.svg
new file mode 100644
index 0000000000..7687a88042
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SUI.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SUN.svg b/src/problem2/fancy-form/src/assets/tokens/SUN.svg
new file mode 100644
index 0000000000..1159b6cbfd
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SUN.svg
@@ -0,0 +1,60 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SUSHI.svg b/src/problem2/fancy-form/src/assets/tokens/SUSHI.svg
new file mode 100644
index 0000000000..e118f213b5
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SUSHI.svg
@@ -0,0 +1,26 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SWTH-LEGACY.svg b/src/problem2/fancy-form/src/assets/tokens/SWTH-LEGACY.svg
new file mode 100644
index 0000000000..60ba0650e1
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SWTH-LEGACY.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SWTH.svg b/src/problem2/fancy-form/src/assets/tokens/SWTH.svg
new file mode 100644
index 0000000000..353c1b5bcc
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SWTH.svg
@@ -0,0 +1,71 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/SXP.svg b/src/problem2/fancy-form/src/assets/tokens/SXP.svg
new file mode 100644
index 0000000000..89fd3b147e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/SXP.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TAO.svg b/src/problem2/fancy-form/src/assets/tokens/TAO.svg
new file mode 100644
index 0000000000..9f0dbfcf8e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TAO.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TEL.svg b/src/problem2/fancy-form/src/assets/tokens/TEL.svg
new file mode 100644
index 0000000000..2992514bf1
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TEL.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TFUEL.svg b/src/problem2/fancy-form/src/assets/tokens/TFUEL.svg
new file mode 100644
index 0000000000..d57d7d9493
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TFUEL.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/THETA.svg b/src/problem2/fancy-form/src/assets/tokens/THETA.svg
new file mode 100644
index 0000000000..8ff93f4019
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/THETA.svg
@@ -0,0 +1,13 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/THT.svg b/src/problem2/fancy-form/src/assets/tokens/THT.svg
new file mode 100644
index 0000000000..8ee5eb9ff3
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/THT.svg
@@ -0,0 +1,68 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TIA.svg b/src/problem2/fancy-form/src/assets/tokens/TIA.svg
new file mode 100644
index 0000000000..41d8ab96c1
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TIA.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TICK.svg b/src/problem2/fancy-form/src/assets/tokens/TICK.svg
new file mode 100644
index 0000000000..3be70db269
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TICK.svg
@@ -0,0 +1,17 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TITAN.svg b/src/problem2/fancy-form/src/assets/tokens/TITAN.svg
new file mode 100644
index 0000000000..d52faa138c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TITAN.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TLAND.svg b/src/problem2/fancy-form/src/assets/tokens/TLAND.svg
new file mode 100644
index 0000000000..9f9e3e2330
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TLAND.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TLM.svg b/src/problem2/fancy-form/src/assets/tokens/TLM.svg
new file mode 100644
index 0000000000..1fe3283fee
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TLM.svg
@@ -0,0 +1,16 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TOMO.svg b/src/problem2/fancy-form/src/assets/tokens/TOMO.svg
new file mode 100644
index 0000000000..45bda83d4b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TOMO.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TON.svg b/src/problem2/fancy-form/src/assets/tokens/TON.svg
new file mode 100644
index 0000000000..c1e0b91485
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TON.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TPC.svg b/src/problem2/fancy-form/src/assets/tokens/TPC.svg
new file mode 100644
index 0000000000..29f8a4af8d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TPC.svg
@@ -0,0 +1,17 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TRAXX.svg b/src/problem2/fancy-form/src/assets/tokens/TRAXX.svg
new file mode 100644
index 0000000000..05c2ec0999
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TRAXX.svg
@@ -0,0 +1,14 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TRB.svg b/src/problem2/fancy-form/src/assets/tokens/TRB.svg
new file mode 100644
index 0000000000..e319e65d7e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TRB.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TRU.svg b/src/problem2/fancy-form/src/assets/tokens/TRU.svg
new file mode 100644
index 0000000000..29ddc8ac24
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TRU.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TRUMP.svg b/src/problem2/fancy-form/src/assets/tokens/TRUMP.svg
new file mode 100644
index 0000000000..2571b5e20f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TRUMP.svg
@@ -0,0 +1,20 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TRX.svg b/src/problem2/fancy-form/src/assets/tokens/TRX.svg
new file mode 100644
index 0000000000..c105ddc307
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TRX.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TTT.svg b/src/problem2/fancy-form/src/assets/tokens/TTT.svg
new file mode 100644
index 0000000000..13e6080a8a
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TTT.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TUSD.svg b/src/problem2/fancy-form/src/assets/tokens/TUSD.svg
new file mode 100644
index 0000000000..712ec923da
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TUSD.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TWD.svg b/src/problem2/fancy-form/src/assets/tokens/TWD.svg
new file mode 100644
index 0000000000..014f525557
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TWD.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/TWT.svg b/src/problem2/fancy-form/src/assets/tokens/TWT.svg
new file mode 100644
index 0000000000..b67bf37535
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/TWT.svg
@@ -0,0 +1,77 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/Token.svg b/src/problem2/fancy-form/src/assets/tokens/Token.svg
new file mode 100644
index 0000000000..bed64e2942
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/Token.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/UBQ.svg b/src/problem2/fancy-form/src/assets/tokens/UBQ.svg
new file mode 100644
index 0000000000..139af049ce
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/UBQ.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/UMEE.svg b/src/problem2/fancy-form/src/assets/tokens/UMEE.svg
new file mode 100644
index 0000000000..f9243257df
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/UMEE.svg
@@ -0,0 +1,39 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/UNA.svg b/src/problem2/fancy-form/src/assets/tokens/UNA.svg
new file mode 100644
index 0000000000..077c1555e7
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/UNA.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/UNI.svg b/src/problem2/fancy-form/src/assets/tokens/UNI.svg
new file mode 100644
index 0000000000..37996b6c05
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/UNI.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/UOS.svg b/src/problem2/fancy-form/src/assets/tokens/UOS.svg
new file mode 100644
index 0000000000..eb07c3cce8
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/UOS.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/USC-Minted.svg b/src/problem2/fancy-form/src/assets/tokens/USC-Minted.svg
new file mode 100644
index 0000000000..466cda74f0
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/USC-Minted.svg
@@ -0,0 +1,37 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/USC.svg b/src/problem2/fancy-form/src/assets/tokens/USC.svg
new file mode 100644
index 0000000000..32bd9541f5
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/USC.svg
@@ -0,0 +1,37 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/USD.svg b/src/problem2/fancy-form/src/assets/tokens/USD.svg
new file mode 100644
index 0000000000..abf67ab105
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/USD.svg
@@ -0,0 +1,8 @@
+
+
\ No newline at end of file
diff --git a/src/problem2/fancy-form/src/assets/tokens/USDC-dATOM.svg b/src/problem2/fancy-form/src/assets/tokens/USDC-dATOM.svg
new file mode 100644
index 0000000000..7202b50ae7
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/USDC-dATOM.svg
@@ -0,0 +1,17 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/USDC.e.svg b/src/problem2/fancy-form/src/assets/tokens/USDC.e.svg
new file mode 100644
index 0000000000..eee4251a7b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/USDC.e.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/USDC.grv.svg b/src/problem2/fancy-form/src/assets/tokens/USDC.grv.svg
new file mode 100644
index 0000000000..458ab4901a
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/USDC.grv.svg
@@ -0,0 +1,14 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/USDC.svg b/src/problem2/fancy-form/src/assets/tokens/USDC.svg
new file mode 100644
index 0000000000..eee4251a7b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/USDC.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/USDP.svg b/src/problem2/fancy-form/src/assets/tokens/USDP.svg
new file mode 100644
index 0000000000..b7e76ff9d1
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/USDP.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/USDT.svg b/src/problem2/fancy-form/src/assets/tokens/USDT.svg
new file mode 100644
index 0000000000..8b3986d057
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/USDT.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/USDY.svg b/src/problem2/fancy-form/src/assets/tokens/USDY.svg
new file mode 100644
index 0000000000..118da5939c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/USDY.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/USK.svg b/src/problem2/fancy-form/src/assets/tokens/USK.svg
new file mode 100644
index 0000000000..15ba03fe9d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/USK.svg
@@ -0,0 +1,19 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/UST.svg b/src/problem2/fancy-form/src/assets/tokens/UST.svg
new file mode 100644
index 0000000000..2a0a597074
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/UST.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/USUAL.svg b/src/problem2/fancy-form/src/assets/tokens/USUAL.svg
new file mode 100644
index 0000000000..1bdf52827d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/USUAL.svg
@@ -0,0 +1,48 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/VDL.svg b/src/problem2/fancy-form/src/assets/tokens/VDL.svg
new file mode 100644
index 0000000000..d839e0da4d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/VDL.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/VET.svg b/src/problem2/fancy-form/src/assets/tokens/VET.svg
new file mode 100644
index 0000000000..88ebf982a5
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/VET.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/VIRTUAL.svg b/src/problem2/fancy-form/src/assets/tokens/VIRTUAL.svg
new file mode 100644
index 0000000000..7d623039a9
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/VIRTUAL.svg
@@ -0,0 +1,24 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/VKR.svg b/src/problem2/fancy-form/src/assets/tokens/VKR.svg
new file mode 100644
index 0000000000..cb3c68d595
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/VKR.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/VRTX.svg b/src/problem2/fancy-form/src/assets/tokens/VRTX.svg
new file mode 100644
index 0000000000..8cb3dc30ef
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/VRTX.svg
@@ -0,0 +1,22 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/W.svg b/src/problem2/fancy-form/src/assets/tokens/W.svg
new file mode 100644
index 0000000000..95823f2252
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/W.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/WAL.svg b/src/problem2/fancy-form/src/assets/tokens/WAL.svg
new file mode 100644
index 0000000000..8d06c07e14
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/WAL.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/WAVAX.svg b/src/problem2/fancy-form/src/assets/tokens/WAVAX.svg
new file mode 100644
index 0000000000..e244ad3aa6
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/WAVAX.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/WAVE.svg b/src/problem2/fancy-form/src/assets/tokens/WAVE.svg
new file mode 100644
index 0000000000..2ca6ac0708
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/WAVE.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/WBNB.svg b/src/problem2/fancy-form/src/assets/tokens/WBNB.svg
new file mode 100644
index 0000000000..e45c696b5c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/WBNB.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/WBTC.svg b/src/problem2/fancy-form/src/assets/tokens/WBTC.svg
new file mode 100644
index 0000000000..b597b84a4a
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/WBTC.svg
@@ -0,0 +1,9 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/WETH.svg b/src/problem2/fancy-form/src/assets/tokens/WETH.svg
new file mode 100644
index 0000000000..cba6f1d783
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/WETH.svg
@@ -0,0 +1,17 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/WHALE.svg b/src/problem2/fancy-form/src/assets/tokens/WHALE.svg
new file mode 100644
index 0000000000..a42a2449d8
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/WHALE.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/WIF.svg b/src/problem2/fancy-form/src/assets/tokens/WIF.svg
new file mode 100644
index 0000000000..6df4ea15a2
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/WIF.svg
@@ -0,0 +1,23 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/WIN.svg b/src/problem2/fancy-form/src/assets/tokens/WIN.svg
new file mode 100644
index 0000000000..bc2435409b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/WIN.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/WLD.svg b/src/problem2/fancy-form/src/assets/tokens/WLD.svg
new file mode 100644
index 0000000000..62191032d6
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/WLD.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/WMATIC.svg b/src/problem2/fancy-form/src/assets/tokens/WMATIC.svg
new file mode 100644
index 0000000000..ba0630b510
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/WMATIC.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/WMNT.svg b/src/problem2/fancy-form/src/assets/tokens/WMNT.svg
new file mode 100644
index 0000000000..8b8784b36a
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/WMNT.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/WMON.png b/src/problem2/fancy-form/src/assets/tokens/WMON.png
new file mode 100644
index 0000000000..452cae24b2
Binary files /dev/null and b/src/problem2/fancy-form/src/assets/tokens/WMON.png differ
diff --git a/src/problem2/fancy-form/src/assets/tokens/WRX.svg b/src/problem2/fancy-form/src/assets/tokens/WRX.svg
new file mode 100644
index 0000000000..543f570909
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/WRX.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/XCAD.svg b/src/problem2/fancy-form/src/assets/tokens/XCAD.svg
new file mode 100644
index 0000000000..545a88d1b9
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/XCAD.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/XDC.svg b/src/problem2/fancy-form/src/assets/tokens/XDC.svg
new file mode 100644
index 0000000000..c90381022e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/XDC.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/XEM.svg b/src/problem2/fancy-form/src/assets/tokens/XEM.svg
new file mode 100644
index 0000000000..da54e72a22
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/XEM.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/XKI.svg b/src/problem2/fancy-form/src/assets/tokens/XKI.svg
new file mode 100644
index 0000000000..dd5fea7cf0
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/XKI.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/XLM.svg b/src/problem2/fancy-form/src/assets/tokens/XLM.svg
new file mode 100644
index 0000000000..d836619c15
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/XLM.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/XMR.svg b/src/problem2/fancy-form/src/assets/tokens/XMR.svg
new file mode 100644
index 0000000000..475a95cb7d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/XMR.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/XPRT.svg b/src/problem2/fancy-form/src/assets/tokens/XPRT.svg
new file mode 100644
index 0000000000..7ecd4ace95
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/XPRT.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/XRP.svg b/src/problem2/fancy-form/src/assets/tokens/XRP.svg
new file mode 100644
index 0000000000..b3d441bf40
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/XRP.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/XSGD.svg b/src/problem2/fancy-form/src/assets/tokens/XSGD.svg
new file mode 100644
index 0000000000..f04caab93b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/XSGD.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/XTRA.svg b/src/problem2/fancy-form/src/assets/tokens/XTRA.svg
new file mode 100644
index 0000000000..1c6367d3be
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/XTRA.svg
@@ -0,0 +1,9 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/XTZ.svg b/src/problem2/fancy-form/src/assets/tokens/XTZ.svg
new file mode 100644
index 0000000000..28b924e5c7
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/XTZ.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/XVG.svg b/src/problem2/fancy-form/src/assets/tokens/XVG.svg
new file mode 100644
index 0000000000..537378cff6
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/XVG.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/XVS.svg b/src/problem2/fancy-form/src/assets/tokens/XVS.svg
new file mode 100644
index 0000000000..3176f9fb66
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/XVS.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/YAKI.svg b/src/problem2/fancy-form/src/assets/tokens/YAKI.svg
new file mode 100644
index 0000000000..5179eb95aa
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/YAKI.svg
@@ -0,0 +1,20 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/YAM.svg b/src/problem2/fancy-form/src/assets/tokens/YAM.svg
new file mode 100644
index 0000000000..2e8a654216
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/YAM.svg
@@ -0,0 +1,47 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/YFI.svg b/src/problem2/fancy-form/src/assets/tokens/YFI.svg
new file mode 100644
index 0000000000..b7674608b7
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/YFI.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/YieldUSD.svg b/src/problem2/fancy-form/src/assets/tokens/YieldUSD.svg
new file mode 100644
index 0000000000..e435a687c9
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/YieldUSD.svg
@@ -0,0 +1,17 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ZCH.svg b/src/problem2/fancy-form/src/assets/tokens/ZCH.svg
new file mode 100644
index 0000000000..1e9d4250d4
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ZCH.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ZEC.svg b/src/problem2/fancy-form/src/assets/tokens/ZEC.svg
new file mode 100644
index 0000000000..b6b86dcc1d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ZEC.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ZEN.svg b/src/problem2/fancy-form/src/assets/tokens/ZEN.svg
new file mode 100644
index 0000000000..b305169acb
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ZEN.svg
@@ -0,0 +1,20 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ZIL.svg b/src/problem2/fancy-form/src/assets/tokens/ZIL.svg
new file mode 100644
index 0000000000..c89e8ce16f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ZIL.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ZRO.svg b/src/problem2/fancy-form/src/assets/tokens/ZRO.svg
new file mode 100644
index 0000000000..e485e3b2ab
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ZRO.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ZRX.svg b/src/problem2/fancy-form/src/assets/tokens/ZRX.svg
new file mode 100644
index 0000000000..f42e914a6a
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ZRX.svg
@@ -0,0 +1,7 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ZWAP.svg b/src/problem2/fancy-form/src/assets/tokens/ZWAP.svg
new file mode 100644
index 0000000000..130d14d73b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ZWAP.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ampKUJI.svg b/src/problem2/fancy-form/src/assets/tokens/ampKUJI.svg
new file mode 100644
index 0000000000..2692787da5
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ampKUJI.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ampLUNA.svg b/src/problem2/fancy-form/src/assets/tokens/ampLUNA.svg
new file mode 100644
index 0000000000..ebeab58687
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ampLUNA.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/axlUSDC.svg b/src/problem2/fancy-form/src/assets/tokens/axlUSDC.svg
new file mode 100644
index 0000000000..fc879f679a
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/axlUSDC.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/bCFX.svg b/src/problem2/fancy-form/src/assets/tokens/bCFX.svg
new file mode 100644
index 0000000000..07e8c434db
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/bCFX.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/bNEO.svg b/src/problem2/fancy-form/src/assets/tokens/bNEO.svg
new file mode 100644
index 0000000000..561b2282d8
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/bNEO.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/beraSTONE.svg b/src/problem2/fancy-form/src/assets/tokens/beraSTONE.svg
new file mode 100644
index 0000000000..3da255f504
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/beraSTONE.svg
@@ -0,0 +1,20 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/cUSD.svg b/src/problem2/fancy-form/src/assets/tokens/cUSD.svg
new file mode 100644
index 0000000000..33407ebc96
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/cUSD.svg
@@ -0,0 +1,21 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/cbBTC.svg b/src/problem2/fancy-form/src/assets/tokens/cbBTC.svg
new file mode 100644
index 0000000000..77fee5c013
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/cbBTC.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/cbETH.svg b/src/problem2/fancy-form/src/assets/tokens/cbETH.svg
new file mode 100644
index 0000000000..5a18b92644
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/cbETH.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/cmETH.svg b/src/problem2/fancy-form/src/assets/tokens/cmETH.svg
new file mode 100644
index 0000000000..0a82791d04
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/cmETH.svg
@@ -0,0 +1,22 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/dATOM.svg b/src/problem2/fancy-form/src/assets/tokens/dATOM.svg
new file mode 100644
index 0000000000..b73e04155e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/dATOM.svg
@@ -0,0 +1,13 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/dGLP.svg b/src/problem2/fancy-form/src/assets/tokens/dGLP.svg
new file mode 100644
index 0000000000..84cac9cdeb
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/dGLP.svg
@@ -0,0 +1,20 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/dINJ.svg b/src/problem2/fancy-form/src/assets/tokens/dINJ.svg
new file mode 100644
index 0000000000..05b1763cc2
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/dINJ.svg
@@ -0,0 +1,20 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/dXCAD.svg b/src/problem2/fancy-form/src/assets/tokens/dXCAD.svg
new file mode 100644
index 0000000000..881f50fd02
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/dXCAD.svg
@@ -0,0 +1,13 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/eGLD.svg b/src/problem2/fancy-form/src/assets/tokens/eGLD.svg
new file mode 100644
index 0000000000..e42ad2510e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/eGLD.svg
@@ -0,0 +1,36 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/ePLAY.svg b/src/problem2/fancy-form/src/assets/tokens/ePLAY.svg
new file mode 100644
index 0000000000..bae2577420
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/ePLAY.svg
@@ -0,0 +1,23 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/esFLUO.svg b/src/problem2/fancy-form/src/assets/tokens/esFLUO.svg
new file mode 100644
index 0000000000..0b69ed3189
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/esFLUO.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/gZIL.svg b/src/problem2/fancy-form/src/assets/tokens/gZIL.svg
new file mode 100644
index 0000000000..27334389ba
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/gZIL.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/iSEI.svg b/src/problem2/fancy-form/src/assets/tokens/iSEI.svg
new file mode 100644
index 0000000000..246b86f8a1
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/iSEI.svg
@@ -0,0 +1,10 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/iUSD.svg b/src/problem2/fancy-form/src/assets/tokens/iUSD.svg
new file mode 100644
index 0000000000..ca263a0474
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/iUSD.svg
@@ -0,0 +1,5 @@
+
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/mETH.svg b/src/problem2/fancy-form/src/assets/tokens/mETH.svg
new file mode 100644
index 0000000000..6d6d5d0762
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/mETH.svg
@@ -0,0 +1,24 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/milkTIA.svg b/src/problem2/fancy-form/src/assets/tokens/milkTIA.svg
new file mode 100644
index 0000000000..d595abfa30
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/milkTIA.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/nLEND.svg b/src/problem2/fancy-form/src/assets/tokens/nLEND.svg
new file mode 100644
index 0000000000..d5c91b274f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/nLEND.svg
@@ -0,0 +1,19 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/nNEO.svg b/src/problem2/fancy-form/src/assets/tokens/nNEO.svg
new file mode 100644
index 0000000000..d4a90e1b27
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/nNEO.svg
@@ -0,0 +1,6 @@
+
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/rATOM.svg b/src/problem2/fancy-form/src/assets/tokens/rATOM.svg
new file mode 100644
index 0000000000..8cd5f8056f
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/rATOM.svg
@@ -0,0 +1,55 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/rSWTH.svg b/src/problem2/fancy-form/src/assets/tokens/rSWTH.svg
new file mode 100644
index 0000000000..d5250ff90d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/rSWTH.svg
@@ -0,0 +1,88 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/sARCH.svg b/src/problem2/fancy-form/src/assets/tokens/sARCH.svg
new file mode 100644
index 0000000000..3ec2b656f0
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/sARCH.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/stATOM.svg b/src/problem2/fancy-form/src/assets/tokens/stATOM.svg
new file mode 100644
index 0000000000..c3e505f8b3
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/stATOM.svg
@@ -0,0 +1,22 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/stDYDX.svg b/src/problem2/fancy-form/src/assets/tokens/stDYDX.svg
new file mode 100644
index 0000000000..6d851637a8
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/stDYDX.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/stDYM.svg b/src/problem2/fancy-form/src/assets/tokens/stDYM.svg
new file mode 100644
index 0000000000..d961755725
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/stDYM.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/stETH.svg b/src/problem2/fancy-form/src/assets/tokens/stETH.svg
new file mode 100644
index 0000000000..8c490e47f0
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/stETH.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/stEVMOS.svg b/src/problem2/fancy-form/src/assets/tokens/stEVMOS.svg
new file mode 100644
index 0000000000..a2a8888208
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/stEVMOS.svg
@@ -0,0 +1,16 @@
+
\ No newline at end of file
diff --git a/src/problem2/fancy-form/src/assets/tokens/stFLUO.svg b/src/problem2/fancy-form/src/assets/tokens/stFLUO.svg
new file mode 100644
index 0000000000..bf182c96de
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/stFLUO.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/stIBCX.svg b/src/problem2/fancy-form/src/assets/tokens/stIBCX.svg
new file mode 100644
index 0000000000..8a10d241d5
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/stIBCX.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/stINJ.svg b/src/problem2/fancy-form/src/assets/tokens/stINJ.svg
new file mode 100644
index 0000000000..6b97bec4f7
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/stINJ.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/stJUNO.svg b/src/problem2/fancy-form/src/assets/tokens/stJUNO.svg
new file mode 100644
index 0000000000..8d92f375c6
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/stJUNO.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/stLUNA.svg b/src/problem2/fancy-form/src/assets/tokens/stLUNA.svg
new file mode 100644
index 0000000000..606be7947d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/stLUNA.svg
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/src/problem2/fancy-form/src/assets/tokens/stOKT.svg b/src/problem2/fancy-form/src/assets/tokens/stOKT.svg
new file mode 100644
index 0000000000..33b541d11d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/stOKT.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/stOSMO.svg b/src/problem2/fancy-form/src/assets/tokens/stOSMO.svg
new file mode 100644
index 0000000000..73d296046b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/stOSMO.svg
@@ -0,0 +1,16 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/stSAGA.svg b/src/problem2/fancy-form/src/assets/tokens/stSAGA.svg
new file mode 100644
index 0000000000..d6092fc7cf
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/stSAGA.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/stSTARS.svg b/src/problem2/fancy-form/src/assets/tokens/stSTARS.svg
new file mode 100644
index 0000000000..ffc7def96a
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/stSTARS.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/stTIA.svg b/src/problem2/fancy-form/src/assets/tokens/stTIA.svg
new file mode 100644
index 0000000000..3d3e28470d
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/stTIA.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/stZIL.svg b/src/problem2/fancy-form/src/assets/tokens/stZIL.svg
new file mode 100644
index 0000000000..81323f746a
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/stZIL.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/stkATOM.svg b/src/problem2/fancy-form/src/assets/tokens/stkATOM.svg
new file mode 100644
index 0000000000..1e6c7a2b2c
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/stkATOM.svg
@@ -0,0 +1,20 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/stkDYDX.svg b/src/problem2/fancy-form/src/assets/tokens/stkDYDX.svg
new file mode 100644
index 0000000000..2d2883a9e6
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/stkDYDX.svg
@@ -0,0 +1,22 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/stkSTARS.svg b/src/problem2/fancy-form/src/assets/tokens/stkSTARS.svg
new file mode 100644
index 0000000000..97e87da6ea
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/stkSTARS.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/vZWAP.svg b/src/problem2/fancy-form/src/assets/tokens/vZWAP.svg
new file mode 100644
index 0000000000..0874b89e8b
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/vZWAP.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/veFLUO.svg b/src/problem2/fancy-form/src/assets/tokens/veFLUO.svg
new file mode 100644
index 0000000000..3624b5647a
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/veFLUO.svg
@@ -0,0 +1,18 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/wKAS.svg b/src/problem2/fancy-form/src/assets/tokens/wKAS.svg
new file mode 100644
index 0000000000..14185747c5
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/wKAS.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/problem2/fancy-form/src/assets/tokens/wstETH.svg b/src/problem2/fancy-form/src/assets/tokens/wstETH.svg
new file mode 100644
index 0000000000..15c8a9716e
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/tokens/wstETH.svg
@@ -0,0 +1,11 @@
+
diff --git a/src/problem2/fancy-form/src/assets/vite.svg b/src/problem2/fancy-form/src/assets/vite.svg
new file mode 100644
index 0000000000..5101b674df
--- /dev/null
+++ b/src/problem2/fancy-form/src/assets/vite.svg
@@ -0,0 +1 @@
+
diff --git a/src/problem2/fancy-form/src/common/constants/token-mapping.ts b/src/problem2/fancy-form/src/common/constants/token-mapping.ts
new file mode 100644
index 0000000000..b90fbc1e87
--- /dev/null
+++ b/src/problem2/fancy-form/src/common/constants/token-mapping.ts
@@ -0,0 +1,23 @@
+const iconModules = import.meta.glob<{ default: string }>(
+ '../../assets/tokens/*.{svg,png}',
+ {
+ eager: true,
+ query: '?url',
+ }
+);
+
+const iconMap: Record = {};
+
+for (const path in iconModules) {
+ const match = path.match(/\/([^/]+)\.(svg|png)$/);
+ if (match) {
+ const filename = match[1];
+ iconMap[filename.toUpperCase()] = iconModules[path].default;
+ }
+}
+
+export const TokenIconMap = iconMap;
+
+export const getTokenIcon = (currency: string): string | undefined => {
+ return TokenIconMap[currency.toUpperCase()];
+};
diff --git a/src/problem2/fancy-form/src/common/schemas/token.schema.ts b/src/problem2/fancy-form/src/common/schemas/token.schema.ts
new file mode 100644
index 0000000000..d983977677
--- /dev/null
+++ b/src/problem2/fancy-form/src/common/schemas/token.schema.ts
@@ -0,0 +1,15 @@
+import z from 'zod';
+
+export const tokenSchema = z
+ .object({
+ payAmount: z
+ .number({
+ error: 'Invalid amount. Please enter a valid amount.',
+ })
+ .positive({
+ message: 'Minimum amount must be greater than 0',
+ }),
+ })
+ .required();
+
+export type TokenSchemaType = z.infer;
diff --git a/src/problem2/fancy-form/src/common/types/token.ts b/src/problem2/fancy-form/src/common/types/token.ts
new file mode 100644
index 0000000000..9bd51e8c22
--- /dev/null
+++ b/src/problem2/fancy-form/src/common/types/token.ts
@@ -0,0 +1,18 @@
+export interface TokenResponse {
+ currency: string;
+ date: string;
+ price: number;
+}
+
+export interface Token extends TokenResponse {
+ symbol?: string;
+}
+
+export interface TokenBalanceResponse {
+ currency: string;
+ amount: number;
+}
+
+export interface TokenBalance extends TokenBalanceResponse {
+ symbol?: string;
+}
diff --git a/src/problem2/fancy-form/src/components/form-card/FormCard.tsx b/src/problem2/fancy-form/src/components/form-card/FormCard.tsx
new file mode 100644
index 0000000000..5d504ab0c4
--- /dev/null
+++ b/src/problem2/fancy-form/src/components/form-card/FormCard.tsx
@@ -0,0 +1,208 @@
+import {
+ type TokenSchemaType,
+ tokenSchema,
+} from '@/common/schemas/token.schema';
+import { useBalanceStore } from '@/store/balance.store';
+import { useTokenStore } from '@/store/token.store';
+import { zodResolver } from '@hookform/resolvers/zod';
+import { ArrowDown, CheckCircle, Loader2 } from 'lucide-react';
+import { useEffect, useMemo, useState } from 'react';
+import { FormProvider, useForm } from 'react-hook-form';
+
+import { Button } from '../ui/button';
+import { Tooltip, TooltipContent, TooltipTrigger } from '../ui/tooltip';
+import { InputCurrency } from './InputCurrency';
+
+/* ── Main component ─────────────────────────────────────────── */
+export function SwapCard() {
+ const [isSwapping, setIsSwapping] = useState(false);
+ const [isSuccess, setIsSuccess] = useState(false);
+
+ const form = useForm({
+ defaultValues: {
+ payAmount: 0,
+ },
+ resolver: zodResolver(tokenSchema),
+ });
+
+ const payAmount = form.watch('payAmount');
+
+ const {
+ fetchTokens,
+ loading: tokenLoading,
+ payToken,
+ recvToken,
+ setPayToken,
+ setRecvToken,
+ } = useTokenStore();
+
+ const {
+ fetchBalances,
+ loading: balanceLoading,
+ getBalanceByCurrency,
+ updateBalances,
+ } = useBalanceStore();
+
+ useEffect(() => {
+ fetchTokens();
+ fetchBalances();
+ }, []);
+
+ const exchangeRate = useMemo(() => {
+ if (!payToken?.price || !recvToken?.price) return 0;
+ return payToken.price / recvToken.price;
+ }, [payToken, recvToken]);
+
+ const receiveAmount = useMemo(() => {
+ const n = payAmount;
+ if (isNaN(n) || n <= 0) return '0.00';
+ return (n * exchangeRate).toFixed(6);
+ }, [payAmount, exchangeRate]);
+
+ const handleSwapDirection = () => {
+ const temp = payToken;
+ setPayToken(recvToken);
+ setRecvToken(temp);
+ form.setValue('payAmount', Number(receiveAmount));
+ };
+
+ const handleSwapAction = async (value: TokenSchemaType) => {
+ if (isSwapping || isSuccess) return;
+
+ const payTokenBalance = getBalanceByCurrency(payToken.currency);
+ const recvTokenBalance = getBalanceByCurrency(recvToken.currency);
+
+ if (value.payAmount > payTokenBalance.amount) {
+ form.setError('payAmount', {
+ message: 'Insufficient balance',
+ });
+ return;
+ }
+ setIsSwapping(true);
+ // Simulate blockchain delay
+ await new Promise((r) => setTimeout(r, 2000));
+
+ updateBalances(payTokenBalance.amount - value.payAmount, payToken.currency);
+ updateBalances(
+ recvTokenBalance.amount + Number(receiveAmount),
+ recvToken.currency
+ );
+
+ setIsSwapping(false);
+ setIsSuccess(true);
+
+ setTimeout(() => {
+ form.reset({
+ payAmount: 0,
+ });
+ setIsSuccess(false);
+ }, 3000);
+ };
+
+ return (
+
+
+ {/* Animated glow on card border */}
+
+
+ {/* Card header */}
+
+
+ Token Swapper
+
+
+
+
+
+
+
+
+
+
+
+
+ Swap Direction
+
+
+
+
+
+
+
Exchange Rate
+
+ 1
={' '}
+ {exchangeRate.toFixed(6)}
+
+
+
+
+
Slippage Tolerance
+
0.5%
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/problem2/fancy-form/src/components/form-card/InputCurrency.tsx b/src/problem2/fancy-form/src/components/form-card/InputCurrency.tsx
new file mode 100644
index 0000000000..bdaba6f391
--- /dev/null
+++ b/src/problem2/fancy-form/src/components/form-card/InputCurrency.tsx
@@ -0,0 +1,71 @@
+import type { Token } from '@/common/types/token';
+import { cn } from '@/lib/utils';
+import { useBalanceStore } from '@/store/balance.store';
+import { Controller, useFormContext } from 'react-hook-form';
+
+import { Field, FieldContent, FieldError } from '../ui/field';
+import { Input } from '../ui/input';
+import { TokenSelector } from './TokenSelector';
+
+interface InputCurrencyProps extends React.ComponentProps<'input'> {
+ label: string;
+ name: string;
+ token: Token;
+ setToken: (value: Token) => void;
+}
+export const InputCurrency = ({
+ name,
+ token,
+ setToken,
+ label,
+ className,
+ ...props
+}: InputCurrencyProps) => {
+ const { control } = useFormContext();
+ const { getBalanceByCurrency } = useBalanceStore();
+
+ const currentPayTokenBalance = getBalanceByCurrency(token?.currency || '');
+
+ return (
+
+
{
+ return (
+
+
+
+
+
+
Balance: ${currentPayTokenBalance.amount}
+
+
+ {
+ const numValue = parseFloat(e.target.value);
+ onChange(numValue);
+ }}
+ className={cn('text-display-lg!', className)}
+ {...props}
+ />
+
+
+
+
+
+ );
+ }}
+ />
+
+ );
+};
diff --git a/src/problem2/fancy-form/src/components/form-card/TokenSelector.tsx b/src/problem2/fancy-form/src/components/form-card/TokenSelector.tsx
new file mode 100644
index 0000000000..4e2abaae57
--- /dev/null
+++ b/src/problem2/fancy-form/src/components/form-card/TokenSelector.tsx
@@ -0,0 +1,112 @@
+import { getTokenIcon } from '@/common/constants/token-mapping';
+import type { Token } from '@/common/types/token';
+import { useDebounce } from '@/hooks/useDebounce';
+import { cn } from '@/lib/utils';
+import { useTokenStore } from '@/store/token.store';
+import { useMemo, useState } from 'react';
+
+import {
+ Dialog,
+ DialogContent,
+ DialogHeader,
+ DialogTitle,
+ DialogTrigger,
+} from '../ui/dialog';
+import { Input } from '../ui/input';
+
+interface Props {
+ selectedToken: Token | undefined;
+ onSelect: (value: Token) => void;
+}
+
+export function TokenSelector({ selectedToken, onSelect }: Props) {
+ const [search, setSearch] = useState('');
+ const searchDebounced = useDebounce(search, 500);
+ const [open, setOpen] = useState(false);
+ const { tokens } = useTokenStore();
+
+ const tokenIcon = getTokenIcon(selectedToken?.currency || 'ETH');
+
+ const filteredTokens = useMemo(
+ () =>
+ tokens?.filter((token) =>
+ token.currency.toLowerCase().includes(searchDebounced.toLowerCase())
+ ),
+ [tokens, searchDebounced]
+ );
+
+ return (
+
+ );
+}
diff --git a/src/problem2/fancy-form/src/components/ui/button.tsx b/src/problem2/fancy-form/src/components/ui/button.tsx
new file mode 100644
index 0000000000..a4c705e62d
--- /dev/null
+++ b/src/problem2/fancy-form/src/components/ui/button.tsx
@@ -0,0 +1,63 @@
+import { cn } from '@/lib/utils';
+import { type VariantProps, cva } from 'class-variance-authority';
+import { Slot } from 'radix-ui';
+import * as React from 'react';
+
+// eslint-disable-next-line react-refresh/only-export-components
+export const buttonVariants = cva(
+ "group/button inline-flex shrink-0 items-center justify-center rounded-4xl border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/30 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
+ {
+ variants: {
+ variant: {
+ default: 'bg-primary text-primary-foreground hover:bg-primary/80',
+ outline:
+ 'border-border bg-background hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:bg-transparent dark:hover:bg-input/30',
+ secondary:
+ 'bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground',
+ ghost:
+ 'hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50',
+ destructive:
+ 'bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40',
+ link: 'text-primary underline-offset-4 hover:underline',
+ },
+ size: {
+ default:
+ 'h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5',
+ xs: "h-6 gap-1 px-2.5 text-xs has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3",
+ sm: 'h-8 gap-1 px-3 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2',
+ lg: 'h-10 gap-1.5 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3',
+ icon: 'size-9',
+ 'icon-xs': "size-6 [&_svg:not([class*='size-'])]:size-3",
+ 'icon-sm': 'size-8',
+ 'icon-lg': 'size-10',
+ },
+ },
+ defaultVariants: {
+ variant: 'default',
+ size: 'default',
+ },
+ }
+);
+
+export function Button({
+ className,
+ variant = 'default',
+ size = 'default',
+ asChild = false,
+ ...props
+}: React.ComponentProps<'button'> &
+ VariantProps & {
+ asChild?: boolean;
+ }) {
+ const Comp = asChild ? Slot.Root : 'button';
+
+ return (
+
+ );
+}
diff --git a/src/problem2/fancy-form/src/components/ui/dialog.tsx b/src/problem2/fancy-form/src/components/ui/dialog.tsx
new file mode 100644
index 0000000000..f99889b508
--- /dev/null
+++ b/src/problem2/fancy-form/src/components/ui/dialog.tsx
@@ -0,0 +1,164 @@
+import { Button } from '@/components/ui/button';
+import { cn } from '@/lib/utils';
+import { XIcon } from 'lucide-react';
+import { Dialog as DialogPrimitive } from 'radix-ui';
+import * as React from 'react';
+
+function Dialog({
+ ...props
+}: React.ComponentProps) {
+ return ;
+}
+
+function DialogTrigger({
+ ...props
+}: React.ComponentProps) {
+ return ;
+}
+
+function DialogPortal({
+ ...props
+}: React.ComponentProps) {
+ return ;
+}
+
+function DialogClose({
+ ...props
+}: React.ComponentProps) {
+ return ;
+}
+
+function DialogOverlay({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+function DialogContent({
+ className,
+ children,
+ showCloseButton = true,
+ ...props
+}: React.ComponentProps & {
+ showCloseButton?: boolean;
+}) {
+ return (
+
+
+
+ {children}
+ {showCloseButton && (
+
+
+
+ )}
+
+
+ );
+}
+
+function DialogHeader({ className, ...props }: React.ComponentProps<'div'>) {
+ return (
+
+ );
+}
+
+function DialogFooter({
+ className,
+ showCloseButton = false,
+ children,
+ ...props
+}: React.ComponentProps<'div'> & {
+ showCloseButton?: boolean;
+}) {
+ return (
+
+ {children}
+ {showCloseButton && (
+
+
+
+ )}
+
+ );
+}
+
+function DialogTitle({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+function DialogDescription({
+ className,
+ ...props
+}: React.ComponentProps) {
+ return (
+
+ );
+}
+
+export {
+ Dialog,
+ DialogClose,
+ DialogContent,
+ DialogDescription,
+ DialogFooter,
+ DialogHeader,
+ DialogOverlay,
+ DialogPortal,
+ DialogTitle,
+ DialogTrigger,
+};
diff --git a/src/problem2/fancy-form/src/components/ui/field.tsx b/src/problem2/fancy-form/src/components/ui/field.tsx
new file mode 100644
index 0000000000..6c24c0f862
--- /dev/null
+++ b/src/problem2/fancy-form/src/components/ui/field.tsx
@@ -0,0 +1,235 @@
+import { Label } from '@/components/ui/label';
+import { Separator } from '@/components/ui/separator';
+import { cn } from '@/lib/utils';
+import { type VariantProps, cva } from 'class-variance-authority';
+import { useMemo } from 'react';
+
+function FieldSet({ className, ...props }: React.ComponentProps<'fieldset'>) {
+ return (
+