├── src ├── vite-env.d.ts ├── index.css ├── main.tsx ├── ModelView.css ├── util │ └── fetch.ts ├── App.tsx ├── App.css ├── components │ └── VrmLibrary.tsx ├── ModelView.tsx └── vrm.ts ├── src-tauri ├── build.rs ├── icons │ ├── 32x32.png │ ├── icon.icns │ ├── icon.ico │ ├── icon.png │ ├── 128x128.png │ ├── 128x128@2x.png │ ├── StoreLogo.png │ ├── Square30x30Logo.png │ ├── Square44x44Logo.png │ ├── Square71x71Logo.png │ ├── Square89x89Logo.png │ ├── Square107x107Logo.png │ ├── Square142x142Logo.png │ ├── Square150x150Logo.png │ ├── Square284x284Logo.png │ └── Square310x310Logo.png ├── .gitignore ├── Cargo.toml ├── tauri.conf.json └── src │ └── main.rs ├── postcss.config.js ├── tsconfig.json ├── tailwind.config.js ├── vite.config.ts ├── index.html ├── .gitignore ├── README.md ├── tsconfig.node.json ├── tsconfig.app.json ├── eslint.config.js ├── LICENSE ├── package.json ├── .github └── workflows │ └── build.yaml └── pnpm-lock.yaml /src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /src-tauri/build.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | tauri_build::build() 3 | } 4 | -------------------------------------------------------------------------------- /src-tauri/icons/32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cordx56/deskvrm/HEAD/src-tauri/icons/32x32.png -------------------------------------------------------------------------------- /src-tauri/icons/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cordx56/deskvrm/HEAD/src-tauri/icons/icon.icns -------------------------------------------------------------------------------- /src-tauri/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cordx56/deskvrm/HEAD/src-tauri/icons/icon.ico -------------------------------------------------------------------------------- /src-tauri/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cordx56/deskvrm/HEAD/src-tauri/icons/icon.png -------------------------------------------------------------------------------- /src-tauri/.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | /target/ 4 | -------------------------------------------------------------------------------- /src-tauri/icons/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cordx56/deskvrm/HEAD/src-tauri/icons/128x128.png -------------------------------------------------------------------------------- /src-tauri/icons/128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cordx56/deskvrm/HEAD/src-tauri/icons/128x128@2x.png -------------------------------------------------------------------------------- /src-tauri/icons/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cordx56/deskvrm/HEAD/src-tauri/icons/StoreLogo.png -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /src-tauri/icons/Square30x30Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cordx56/deskvrm/HEAD/src-tauri/icons/Square30x30Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square44x44Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cordx56/deskvrm/HEAD/src-tauri/icons/Square44x44Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square71x71Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cordx56/deskvrm/HEAD/src-tauri/icons/Square71x71Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square89x89Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cordx56/deskvrm/HEAD/src-tauri/icons/Square89x89Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square107x107Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cordx56/deskvrm/HEAD/src-tauri/icons/Square107x107Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square142x142Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cordx56/deskvrm/HEAD/src-tauri/icons/Square142x142Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square150x150Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cordx56/deskvrm/HEAD/src-tauri/icons/Square150x150Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square284x284Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cordx56/deskvrm/HEAD/src-tauri/icons/Square284x284Logo.png -------------------------------------------------------------------------------- /src-tauri/icons/Square310x310Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cordx56/deskvrm/HEAD/src-tauri/icons/Square310x310Logo.png -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { "path": "./tsconfig.app.json" }, 5 | { "path": "./tsconfig.node.json" } 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | export default { 3 | content: ["./src/**/*.{js,ts,jsx,tsx}"], 4 | theme: { 5 | extend: {}, 6 | }, 7 | plugins: [], 8 | }; 9 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | html, 6 | body { 7 | @apply w-full h-full; 8 | } 9 | #root { 10 | @apply w-full h-full; 11 | } 12 | 13 | * { 14 | @apply box-border; 15 | } 16 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite"; 2 | import react from "@vitejs/plugin-react"; 3 | import tsconfigPaths from "vite-tsconfig-paths"; 4 | 5 | // https://vite.dev/config/ 6 | export default defineConfig({ 7 | server: { 8 | port: 3000, 9 | }, 10 | plugins: [react(), tsconfigPaths()], 11 | }); 12 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | deskvrm 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /src/main.tsx: -------------------------------------------------------------------------------- 1 | import { StrictMode } from "react"; 2 | import { createRoot } from "react-dom/client"; 3 | import { BrowserRouter, Routes, Route } from "react-router-dom"; 4 | import "./index.css"; 5 | import App from "./App.tsx"; 6 | import ModelView from "./ModelView.tsx"; 7 | 8 | createRoot(document.getElementById("root")!).render( 9 | 10 | 11 | 12 | } /> 13 | } /> 14 | 15 | 16 | , 17 | ); 18 | -------------------------------------------------------------------------------- /src/ModelView.css: -------------------------------------------------------------------------------- 1 | .render { 2 | width: 100%; 3 | height: 100%; 4 | position: absolute; 5 | top: 0; 6 | left: 0; 7 | overflow: hidden; 8 | border: none; 9 | } 10 | 11 | .white { 12 | color: #fff; 13 | } 14 | 15 | /* 16 | .file { 17 | width: 100%; 18 | height: 100%; 19 | position: absolute; 20 | background-color: #fff; 21 | } 22 | .file .file-selector { 23 | position: relative; 24 | padding: 2em 1em; 25 | } 26 | .file input::file-selector-button { 27 | width: 100%; 28 | height: 100%; 29 | opacity: 0; 30 | position: absolute; 31 | top: 0; 32 | left: 0; 33 | } 34 | */ 35 | 36 | canvas { 37 | border: none; 38 | } 39 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # deskvrm 2 | 3 | 画面上に小さなVRMモデルを表示するアプリケーションです。 4 | Windows、macOSに対応。 5 | 6 | ダウンロードは[リリースページ](https://github.com/cordx56/deskvrm/releases)よりどうぞ。 7 | Windowsは `.msi` 、macOSは `dmg` が使えます。 8 | 9 | ## 実装状況 10 | 11 | 優先度順 12 | 13 | - [x] VRM表示 14 | - [x] 影の導入 15 | - [ ] モーションの導入 16 | - [ ] キャラクターがユーザの操作に反応する 17 | - [x] マウス追従 18 | 19 | ## 使い方 20 | 21 | 起動したらメニューでファイル選択をしてください。 22 | ファイル選択後、自動で起動します。 23 | 24 | ファイル選択後、少ししたらVRMが読み込まれ、マウスで掴むことで動かせます。 25 | モデルをダブルクリックして掴むと回転、スクロールで拡大・縮小。 26 | 3回クリックでメニューに戻ります。 27 | 28 | ## macOSでアプリが壊れる場合 29 | 30 | dmgファイルからアプリをApplicationsに移して実行しようとすると、「壊れている」という趣旨のメッセージが表示されることがあります。 31 | 以下のコマンドを実行することで、正しく実行することができます。 32 | 33 | ```bash 34 | sudo xattr -rd com.apple.quarantine /Applications/deskvrm.app 35 | ``` 36 | -------------------------------------------------------------------------------- /src/util/fetch.ts: -------------------------------------------------------------------------------- 1 | export const listModel = async (): Promise => { 2 | const resp = await fetch(new URL(`http://localhost:8108/vrm`)); 3 | if (resp.ok) { 4 | return (await resp.json()).models; 5 | } else { 6 | return []; 7 | } 8 | }; 9 | 10 | export const readModel = async (name: string): Promise => { 11 | const resp = await fetch(new URL(`http://localhost:8108/vrm/${name}`)); 12 | if (resp.ok) { 13 | return new Uint8Array(await resp.arrayBuffer()); 14 | } else { 15 | return null; 16 | } 17 | }; 18 | 19 | export const writeModel = async (name: string, body: ArrayBufferLike) => { 20 | await fetch(new URL(`http://localhost:8108/vrm/${name}`), { 21 | method: "POST", 22 | body, 23 | }); 24 | }; 25 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", 4 | "target": "ES2022", 5 | "lib": ["ES2023"], 6 | "module": "ESNext", 7 | "skipLibCheck": true, 8 | 9 | /* Bundler mode */ 10 | "moduleResolution": "bundler", 11 | "allowImportingTsExtensions": true, 12 | "isolatedModules": true, 13 | "moduleDetection": "force", 14 | "noEmit": true, 15 | 16 | /* Linting */ 17 | "strict": true, 18 | "noUnusedLocals": true, 19 | "noUnusedParameters": true, 20 | "noFallthroughCasesInSwitch": true, 21 | "noUncheckedSideEffectImports": true, 22 | 23 | "paths": { 24 | "@/*": ["./src/*"] 25 | } 26 | }, 27 | "include": ["vite.config.ts"] 28 | } 29 | -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import { appWindow } from "@tauri-apps/api/window"; 2 | import { emit } from "@tauri-apps/api/event"; 3 | import { exit } from "@tauri-apps/api/process"; 4 | import VrmLibrary from "@/components/VrmLibrary"; 5 | import "@/App.css"; 6 | 7 | export default () => { 8 | const onVrmSelect = async (name: string) => { 9 | emit("modelView", { vrm: encodeURIComponent(name) }); 10 | await appWindow.hide(); 11 | }; 12 | return ( 13 |
14 |

VRMモデル一覧

15 | 16 |

17 | 25 |

26 |
27 | ); 28 | }; 29 | -------------------------------------------------------------------------------- /src/App.css: -------------------------------------------------------------------------------- 1 | .color { 2 | @apply bg-white dark:bg-neutral-900 text-black dark:text-neutral-300; 3 | } 4 | 5 | .ui { 6 | @apply p-4 w-full h-full overflow-hidden border-0 color; 7 | } 8 | 9 | .ui button { 10 | @apply my-1 px-4 py-1 border border-sky-500 bg-transparent hover:bg-sky-500/50 rounded-lg transition-all; 11 | } 12 | .ui input { 13 | @apply my-1 px-4 py-1 border border-sky-500 bg-transparent hover:bg-sky-500/50 rounded-lg transition-all; 14 | } 15 | .ui input[type="file"] { 16 | @apply px-2 py-0; 17 | } 18 | .ui ::file-selector-button { 19 | @apply pr-3 py-1 color bg-transparent border-y-0 border-l-0 border-r border-sky-500; 20 | } 21 | 22 | .ui a { 23 | @apply text-sky-500 cursor-pointer; 24 | } 25 | .ui p { 26 | @apply my-3; 27 | } 28 | 29 | .ui h3 { 30 | @apply my-1 text-xl; 31 | } 32 | -------------------------------------------------------------------------------- /tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", 4 | "target": "ES2020", 5 | "useDefineForClassFields": true, 6 | "lib": ["ES2020", "DOM", "DOM.Iterable"], 7 | "module": "ESNext", 8 | "skipLibCheck": true, 9 | 10 | /* Bundler mode */ 11 | "moduleResolution": "bundler", 12 | "allowImportingTsExtensions": true, 13 | "isolatedModules": true, 14 | "moduleDetection": "force", 15 | "noEmit": true, 16 | "jsx": "react-jsx", 17 | 18 | /* Linting */ 19 | "strict": true, 20 | "noUnusedLocals": true, 21 | "noUnusedParameters": true, 22 | "noFallthroughCasesInSwitch": true, 23 | "noUncheckedSideEffectImports": true, 24 | 25 | 26 | "paths": { 27 | "@/*": ["./src/*"] 28 | } 29 | }, 30 | "include": ["src"] 31 | } 32 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import js from '@eslint/js' 2 | import globals from 'globals' 3 | import reactHooks from 'eslint-plugin-react-hooks' 4 | import reactRefresh from 'eslint-plugin-react-refresh' 5 | import tseslint from 'typescript-eslint' 6 | 7 | export default tseslint.config( 8 | { ignores: ['dist'] }, 9 | { 10 | extends: [js.configs.recommended, ...tseslint.configs.recommended], 11 | files: ['**/*.{ts,tsx}'], 12 | languageOptions: { 13 | ecmaVersion: 2020, 14 | globals: globals.browser, 15 | }, 16 | plugins: { 17 | 'react-hooks': reactHooks, 18 | 'react-refresh': reactRefresh, 19 | }, 20 | rules: { 21 | ...reactHooks.configs.recommended.rules, 22 | 'react-refresh/only-export-components': [ 23 | 'warn', 24 | { allowConstantExport: true }, 25 | ], 26 | }, 27 | }, 28 | ) 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 cordx56 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src-tauri/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "app" 3 | version = "0.1.0" 4 | description = "A Tauri App" 5 | authors = ["you"] 6 | license = "" 7 | repository = "" 8 | default-run = "app" 9 | edition = "2021" 10 | rust-version = "1.60" 11 | 12 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 13 | 14 | [build-dependencies] 15 | tauri-build = { version = "1.5.5", features = [] } 16 | 17 | [dependencies] 18 | serde_json = "1.0" 19 | serde = { version = "1.0", features = ["derive"] } 20 | tauri = { version = "1.8.1", features = [ "macos-private-api", "api-all"] } 21 | window-shadows = "0.2.2" 22 | mouse_position = "0.1.4" 23 | axum = { version = "0.8.2", features = ["tokio", "http1"] } 24 | tokio = { version = "1.29.1", features = ["full"] } 25 | tower-http = { version = "0.6.2", features = ["cors"] } 26 | log = "0.4.25" 27 | simple_logger = "5.0.0" 28 | 29 | [features] 30 | # this feature is used for production builds or when `devPath` points to the filesystem and the built-in dev server is disabled. 31 | # If you use cargo directly instead of tauri's cli you can use this feature flag to switch between tauri's `dev` and `build` modes. 32 | # DO NOT REMOVE!! 33 | custom-protocol = [ "tauri/custom-protocol" ] 34 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "deskvrm", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc -b && vite build", 9 | "lint": "eslint .", 10 | "preview": "vite preview", 11 | "tauri": "tauri", 12 | "fmt": "prettier -w src/**/* src/*" 13 | }, 14 | "dependencies": { 15 | "@pixiv/three-vrm": "^3.3.2", 16 | "@pixiv/three-vrm-animation": "^3.3.3", 17 | "@tauri-apps/api": "^1.6.0", 18 | "autoprefixer": "^10.4.20", 19 | "postcss": "^8.5.1", 20 | "react": "^18.3.1", 21 | "react-dom": "^18.3.1", 22 | "react-router-dom": "^7.1.3", 23 | "tailwindcss": "^3.4.17", 24 | "three": "^0.172.0" 25 | }, 26 | "devDependencies": { 27 | "@eslint/js": "^9.17.0", 28 | "@tauri-apps/cli": "^1.6.0", 29 | "@types/react": "^18.3.18", 30 | "@types/react-dom": "^18.3.5", 31 | "@types/three": "^0.172.0", 32 | "@vitejs/plugin-react": "^4.3.4", 33 | "eslint": "^9.17.0", 34 | "eslint-plugin-react-hooks": "^5.0.0", 35 | "eslint-plugin-react-refresh": "^0.4.16", 36 | "globals": "^15.14.0", 37 | "prettier": "^3.4.2", 38 | "typescript": "~5.6.2", 39 | "typescript-eslint": "^8.18.2", 40 | "vite": "^6.0.5", 41 | "vite-tsconfig-paths": "^5.1.4" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src-tauri/tauri.conf.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../node_modules/@tauri-apps/cli/schema.json", 3 | "build": { 4 | "beforeBuildCommand": "npm run build", 5 | "beforeDevCommand": "npm run dev", 6 | "devPath": "http://localhost:3000", 7 | "distDir": "../dist" 8 | }, 9 | "package": { 10 | "productName": "deskvrm", 11 | "version": "0.0.3" 12 | }, 13 | "tauri": { 14 | "allowlist": { 15 | "all": true 16 | }, 17 | "bundle": { 18 | "active": true, 19 | "category": "DeveloperTool", 20 | "copyright": "2025 cordx56", 21 | "deb": { 22 | "depends": [] 23 | }, 24 | "externalBin": [], 25 | "icon": [ 26 | "icons/32x32.png", 27 | "icons/128x128.png", 28 | "icons/128x128@2x.png", 29 | "icons/icon.icns", 30 | "icons/icon.ico" 31 | ], 32 | "identifier": "cx.cordx.deskvrm", 33 | "longDescription": "", 34 | "macOS": { 35 | "entitlements": null, 36 | "exceptionDomain": "", 37 | "frameworks": [], 38 | "providerShortName": null, 39 | "signingIdentity": null 40 | }, 41 | "resources": [], 42 | "shortDescription": "", 43 | "targets": "all", 44 | "windows": { 45 | "certificateThumbprint": null, 46 | "digestAlgorithm": "sha256", 47 | "timestampUrl": "" 48 | } 49 | }, 50 | "security": { 51 | "csp": null 52 | }, 53 | "updater": { 54 | "active": false 55 | }, 56 | "windows": [ 57 | { 58 | "label": "config", 59 | "fullscreen": false, 60 | "width": 500, 61 | "height": 500, 62 | "resizable": true, 63 | "title": "deskvrm config", 64 | "alwaysOnTop": true 65 | } 66 | ], 67 | "macOSPrivateApi": true 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/components/VrmLibrary.tsx: -------------------------------------------------------------------------------- 1 | import { useState, useEffect, ChangeEventHandler } from "react"; 2 | import { listModel, writeModel } from "@/util/fetch"; 3 | 4 | type Props = { 5 | onSelect: (path: string) => any; 6 | }; 7 | 8 | export default ({ onSelect }: Props) => { 9 | const [models, setModels] = useState([]); 10 | const [processing, setProcessing] = useState(false); 11 | const readModels = async () => { 12 | const models = await listModel(); 13 | setModels(models); 14 | }; 15 | useEffect(() => { 16 | readModels(); 17 | }, []); 18 | 19 | const onFileChange: ChangeEventHandler = async (e) => { 20 | if (e.target instanceof HTMLInputElement) { 21 | let files = e.target.files; 22 | if (files && files.length === 1) { 23 | const file = files[0]; 24 | if (file.name.endsWith(".vrm")) { 25 | setProcessing(true); 26 | (async () => { 27 | await writeModel(file.name, await file.arrayBuffer()); 28 | e.target.files = null; 29 | await readModels(); 30 | setProcessing(false); 31 | })(); 32 | return; 33 | } 34 | } 35 | } 36 | alert("VRMモデルを選択してください"); 37 | }; 38 | return ( 39 |
40 | {processing ? ( 41 |

処理中

42 | ) : ( 43 | <> 44 | 57 |

58 | VRMモデルをインポート: 59 | 60 |

61 | 62 | )} 63 |
64 | ); 65 | }; 66 | -------------------------------------------------------------------------------- /.github/workflows/build.yaml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | tags: 4 | - v* 5 | 6 | permissions: 7 | contents: write 8 | 9 | jobs: 10 | build-for-macos: 11 | runs-on: macos-latest 12 | steps: 13 | - uses: actions/checkout@v4 14 | 15 | - uses: mozilla-actions/sccache-action@v0.0.7 16 | - uses: actions/checkout@v4 17 | with: 18 | repository: cordx56/secret-dotfiles 19 | path: secret-dotfiles 20 | token: ${{ secrets.PAT }} 21 | - run: | 22 | cat secret-dotfiles/env/sccache >> $GITHUB_ENV 23 | echo RUSTC_WRAPPER=sccache >> $GITHUB_ENV 24 | 25 | - uses: pnpm/action-setup@v4 26 | with: 27 | version: 9 28 | - run: | 29 | rustup toolchain install --profile=minimal stable 30 | rustup target add aarch64-apple-darwin 31 | - run: pnpm install 32 | - run: pnpm tauri build --bundles dmg 33 | - uses: actions/upload-artifact@v4 34 | with: 35 | name: deskvrm-release-dmg 36 | path: src-tauri/target/**/*.dmg 37 | build-for-windows: 38 | runs-on: windows-latest 39 | steps: 40 | - uses: actions/checkout@v4 41 | 42 | - uses: mozilla-actions/sccache-action@v0.0.7 43 | - uses: actions/checkout@v4 44 | with: 45 | repository: cordx56/secret-dotfiles 46 | path: secret-dotfiles 47 | token: ${{ secrets.PAT }} 48 | - run: | 49 | cat secret-dotfiles/env/sccache >> $GITHUB_ENV 50 | echo RUSTC_WRAPPER=sccache >> $GITHUB_ENV 51 | 52 | - uses: pnpm/action-setup@v4 53 | with: 54 | version: 9 55 | - shell: pwsh 56 | run: | 57 | rustup toolchain install --profile=minimal stable 58 | rustup target add x86_64-pc-windows-msvc 59 | - shell: pwsh 60 | run: pnpm install 61 | - shell: pwsh 62 | run: pnpm tauri build --bundles msi 63 | - uses: actions/upload-artifact@v4 64 | with: 65 | name: deskvrm-release-msi 66 | path: src-tauri/target/**/*.msi 67 | release: 68 | runs-on: ubuntu-latest 69 | needs: 70 | - build-for-macos 71 | - build-for-windows 72 | steps: 73 | - uses: actions/download-artifact@v4 74 | - name: Release 75 | uses: softprops/action-gh-release@v2 76 | with: 77 | body: auto deskvrm release 78 | draft: true 79 | files: | 80 | ./**/*.dmg 81 | ./**/*.msi 82 | -------------------------------------------------------------------------------- /src/ModelView.tsx: -------------------------------------------------------------------------------- 1 | import { useRef, useState, useEffect, MouseEventHandler } from "react"; 2 | import { useParams } from "react-router-dom"; 3 | import { listen } from "@tauri-apps/api/event"; 4 | import { 5 | appWindow, 6 | currentMonitor, 7 | getAll, 8 | LogicalPosition, 9 | } from "@tauri-apps/api/window"; 10 | import { VRM, VRMHumanBoneName } from "@pixiv/three-vrm"; 11 | import "@/ModelView.css"; 12 | import { loadModel } from "./vrm"; 13 | import { readModel } from "@/util/fetch"; 14 | 15 | function App() { 16 | const render = useRef(null); 17 | const { vrm } = useParams<{ vrm: string }>(); 18 | 19 | const [clickCount, setClickCount] = useState(0); 20 | 21 | const [mouseX, setMouseX] = useState(0); 22 | const [mouseY, setMouseY] = useState(0); 23 | const [moveOffset, setMoveOffset] = useState<{ x: number; y: number } | null>( 24 | null, 25 | ); 26 | 27 | const onUpdateRef = useRef((_vrm: VRM | null) => {}); 28 | useEffect(() => { 29 | onUpdateRef.current = async (vrm: VRM | null) => { 30 | if (vrm) { 31 | const monitor = await currentMonitor(); 32 | if (monitor) { 33 | const windowPosition = await appWindow.outerPosition(); 34 | const rotationY = Math.max( 35 | Math.min( 36 | ((Math.PI / 4) * (mouseX - windowPosition.x)) / 37 | (monitor.position.x + monitor.size.width), 38 | Math.PI / 4, 39 | ), 40 | Math.PI / -4, 41 | ); 42 | const rotationX = Math.max( 43 | Math.min( 44 | ((Math.PI / 4) * (windowPosition.y - mouseY)) / 45 | (monitor.position.y + monitor.size.height), 46 | Math.PI / 4, 47 | ), 48 | Math.PI / -4, 49 | ); 50 | let head = vrm.humanoid.getRawBoneNode(VRMHumanBoneName.Head); 51 | if (head) { 52 | head.rotation.x = rotationX; 53 | head.rotation.y = rotationY; 54 | } 55 | } 56 | } 57 | }; 58 | 59 | if (moveOffset) { 60 | appWindow.setPosition( 61 | new LogicalPosition(mouseX - moveOffset.x, mouseY - moveOffset.y), 62 | ); 63 | } 64 | }, [mouseX, mouseY]); 65 | 66 | const onClick: MouseEventHandler = async (e) => { 67 | e.preventDefault(); 68 | if (clickCount === 2) { 69 | const configWindow = getAll().find((v) => v.label === "config"); 70 | if (configWindow) { 71 | await configWindow.show(); 72 | await appWindow.close(); 73 | } 74 | } 75 | }; 76 | const onMouseDown: MouseEventHandler = async () => { 77 | setTimeout(() => { 78 | setClickCount(0); 79 | }, 600); 80 | setClickCount((prev) => prev + 1); 81 | const pos = (await appWindow.outerPosition()).toLogical( 82 | await appWindow.scaleFactor(), 83 | ); 84 | if (clickCount == 0) { 85 | setMoveOffset({ x: mouseX - pos.x, y: mouseY - pos.y }); 86 | } 87 | }; 88 | 89 | useEffect(() => { 90 | (async () => { 91 | if (vrm) { 92 | const model = await readModel(vrm); 93 | if (model) { 94 | loadModel(render.current!, model.buffer, 2, onUpdateRef); 95 | } 96 | } else { 97 | appWindow.close(); 98 | } 99 | })(); 100 | listen("mouse_position", (event: any) => { 101 | setMouseX(event.payload.x); 102 | setMouseY(event.payload.y); 103 | }); 104 | }, []); 105 | 106 | return ( 107 | <> 108 |
{ 113 | setMoveOffset(null); 114 | }} 115 | className="render" 116 | >
117 | 118 | ); 119 | } 120 | 121 | export default App; 122 | -------------------------------------------------------------------------------- /src/vrm.ts: -------------------------------------------------------------------------------- 1 | import * as Three from "three"; 2 | // @ts-ignore 3 | import { GLTFLoader } from "three/addons/loaders/GLTFLoader"; 4 | // @ts-ignore 5 | import { OrbitControls } from "three/addons/controls/OrbitControls"; 6 | import { VRM, VRMLoaderPlugin, VRMHumanBoneName } from "@pixiv/three-vrm"; 7 | import { VRMAnimationLoaderPlugin } from "@pixiv/three-vrm-animation"; 8 | import { MutableRefObject } from "react"; 9 | 10 | import { appWindow, LogicalSize } from "@tauri-apps/api/window"; 11 | import { emit } from "@tauri-apps/api/event"; 12 | 13 | export const loadModel = ( 14 | render: HTMLDivElement, 15 | model: ArrayBuffer, 16 | lightP: number, 17 | onUpdate: MutableRefObject, 18 | ) => { 19 | const scene = new Three.Scene(); 20 | 21 | const renderer = new Three.WebGLRenderer({ 22 | antialias: true, 23 | alpha: true, 24 | }); 25 | renderer.setPixelRatio(window.devicePixelRatio); 26 | renderer.setSize(render.clientWidth, render.clientHeight); 27 | renderer.setClearAlpha(0); 28 | renderer.shadowMap.enabled = true; 29 | const elem = renderer.domElement; 30 | 31 | if (render.hasChildNodes()) { 32 | return; 33 | } 34 | render.appendChild(elem); 35 | 36 | const camera = new Three.PerspectiveCamera( 37 | 30.0, 38 | render.clientWidth / render.clientHeight, 39 | 0.1, 40 | 20.0, 41 | ); 42 | camera.position.set(0.0, 0.0, -2.8); 43 | camera.rotation.set(0, Math.PI, 0); 44 | 45 | const light = new Three.DirectionalLight(0xffffff, lightP); 46 | light.position.set(0.0, 0.0, -1).normalize(); 47 | scene.add(light); 48 | const shadowLight = new Three.DirectionalLight(0xffffff, 1); 49 | shadowLight.position.set(-0.5, -3.0, -10.0).normalize(); 50 | shadowLight.castShadow = true; 51 | shadowLight.shadow.mapSize.width = 2048; 52 | shadowLight.shadow.mapSize.height = 2048; 53 | //shadowLight.shadow.radius = 5; 54 | scene.add(shadowLight); 55 | 56 | let vrm: VRM | null = null; 57 | let mixer: Three.AnimationMixer | null = null; 58 | 59 | const loader = new GLTFLoader(); 60 | loader.register((parser: any) => { 61 | return new VRMLoaderPlugin(parser); 62 | }); 63 | loader.register((parser: any) => { 64 | return new VRMAnimationLoaderPlugin(parser); 65 | }); 66 | loader.parse( 67 | model, 68 | "test.vrm", 69 | (gltf: any) => { 70 | vrm = gltf.userData.vrm; 71 | 72 | if (vrm) { 73 | scene.add(vrm.scene); 74 | 75 | vrm.humanoid 76 | .getRawBoneNode(VRMHumanBoneName.LeftUpperArm) 77 | ?.rotateZ(Math.PI / 2.6); 78 | vrm.humanoid 79 | .getRawBoneNode(VRMHumanBoneName.RightUpperArm) 80 | ?.rotateZ(Math.PI / -2.6); 81 | vrm.scene.traverse((object) => { 82 | object.castShadow = true; 83 | }); 84 | 85 | /* 86 | loader.load("/ashi_batabata.vrma", (gltf: any) => { 87 | if (vrm) { 88 | const vrmAnimations = gltf.userData.vrmAnimations; 89 | if (vrmAnimations == null) { 90 | return; 91 | } 92 | animation = vrmAnimations[0] ?? null; 93 | // animation 94 | //mixer = new Three.AnimationMixer(vrm.scene); 95 | //const clip = createVRMAnimationClip(animation, vrm); 96 | //mixer.clipAction(clip).play(); 97 | } 98 | }); 99 | */ 100 | } 101 | }, 102 | (progress: any) => { 103 | console.log("loading: ", (100.0 * progress.loaded) / progress.total, "%"); 104 | }, 105 | (error: any) => { 106 | console.error(error); 107 | }, 108 | ); 109 | 110 | const back = new Three.Mesh( 111 | new Three.BoxGeometry(100, 100, 1), 112 | new Three.ShadowMaterial({ opacity: 0.5 }), 113 | ); 114 | back.position.set(0, 0, 2); 115 | back.receiveShadow = true; 116 | scene.add(back); 117 | 118 | const clock = new Three.Clock(); 119 | clock.start(); 120 | 121 | // mouse events 122 | let mouseWheel = 0; 123 | elem.addEventListener("wheel", (e) => { 124 | mouseWheel -= e.deltaY / 10; 125 | }); 126 | let mouseDownTime = 0; 127 | let mouseDownCount = 0; 128 | elem.addEventListener("mousedown", () => { 129 | mouseDownTime = new Date().getTime(); 130 | mouseDownCount += 1; 131 | }); 132 | elem.addEventListener("mouseleave", () => { 133 | emit("cursor_grab", { grab: false }); 134 | }); 135 | elem.addEventListener("mouseup", () => { 136 | emit("cursor_grab", { grab: false }); 137 | if (new Date().getTime() - mouseDownTime < 500) { 138 | if (mouseDownCount === 2) { 139 | // show menu 140 | } 141 | } else { 142 | mouseDownCount = 0; 143 | } 144 | }); 145 | elem.addEventListener("mousemove", (e) => { 146 | if (mouseDownCount === 2) { 147 | if (vrm) { 148 | emit("cursor_grab", { grab: true }); 149 | vrm.scene.rotation.x -= e.movementY / 100 / Math.PI / 2; 150 | vrm.scene.rotation.y += e.movementX / 100 / Math.PI / 2; 151 | } 152 | } 153 | }); 154 | 155 | const update = async () => { 156 | requestAnimationFrame(update); 157 | 158 | //const delta = clock.getDelta(); 159 | if (mixer) { 160 | // animation 161 | //mixer.update(delta); 162 | } 163 | if (vrm) { 164 | //vrm.update(delta); 165 | } 166 | 167 | if (vrm) { 168 | vrm.scene.position.x = 0; 169 | vrm.scene.position.y = 0; 170 | vrm.scene.position.z = 0; 171 | const currentBounding = new Three.Box3().setFromObject(vrm.scene); 172 | vrm.scene.position.x = 173 | (currentBounding.max.x + currentBounding.min.x) / -2; 174 | vrm.scene.position.y = 175 | (currentBounding.max.y + currentBounding.min.y) / -2; 176 | vrm.scene.position.z = 177 | (currentBounding.max.z + currentBounding.min.z) / -2; 178 | const vrmBounding = new Three.Box3().setFromObject(vrm.scene); 179 | 180 | back.position.z = vrmBounding.max.z + 1; 181 | 182 | const vFOV = (camera.fov * Math.PI) / 180; 183 | const tan = Math.tan(vFOV / 2); 184 | camera.position.z = 185 | (vrmBounding.max.y - vrmBounding.min.y + 0.1) / -2 / tan; 186 | 187 | const aspect = 188 | (vrmBounding.max.x - vrmBounding.min.x) / 189 | (vrmBounding.max.y - vrmBounding.min.y); 190 | const width = (500 + mouseWheel) * aspect; 191 | const height = 500 + mouseWheel; 192 | appWindow.setSize(new LogicalSize(width, height)); 193 | renderer.setSize(width, height); 194 | renderer.setPixelRatio(window.devicePixelRatio); 195 | camera.aspect = aspect; 196 | camera.updateProjectionMatrix(); 197 | } 198 | 199 | if (onUpdate.current) { 200 | onUpdate.current(vrm); 201 | } 202 | 203 | renderer.render(scene, camera); 204 | }; 205 | update(); 206 | }; 207 | -------------------------------------------------------------------------------- /src-tauri/src/main.rs: -------------------------------------------------------------------------------- 1 | // Prevents additional console window on Windows in release, DO NOT REMOVE!! 2 | #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] 3 | use mouse_position::mouse_position::Mouse; 4 | use std::path::PathBuf; 5 | use tauri::Manager; 6 | 7 | #[derive(serde::Serialize, Clone)] 8 | struct MousePosition { 9 | x: i32, 10 | y: i32, 11 | } 12 | #[derive(serde::Deserialize, Clone)] 13 | struct CursorGrab { 14 | grab: bool, 15 | } 16 | #[derive(serde::Deserialize, Clone)] 17 | struct ModelViewParam { 18 | vrm: String, 19 | } 20 | #[derive(serde::Serialize, Clone)] 21 | struct ModelList { 22 | models: Vec, 23 | } 24 | 25 | fn main() { 26 | simple_logger::init_with_env().unwrap(); 27 | tauri::Builder::default() 28 | .setup(|app| { 29 | let app_handle = app.app_handle(); 30 | tauri::async_runtime::spawn(async move { 31 | let handle = app_handle.clone(); 32 | app_handle.listen_global("cursor_grab", move |ev| { 33 | if let Some(payload) = ev.payload() { 34 | if let Ok(data) = serde_json::from_str::(payload) { 35 | if let Some(win) = handle.get_focused_window() { 36 | let _ = win.set_cursor_grab(data.grab); 37 | } 38 | } 39 | } 40 | }); 41 | 42 | let handle = app_handle.clone(); 43 | app_handle.listen_global("modelView", move |ev| { 44 | if let Some(payload) = ev.payload() { 45 | if let Ok(data) = serde_json::from_str::(payload) { 46 | if let Ok(window) = tauri::WindowBuilder::new( 47 | &handle, 48 | "modelView", 49 | tauri::WindowUrl::App(format!("/model-view/{}", data.vrm).into()), 50 | ) 51 | .title("deskvrm") 52 | .inner_size(300.0, 500.0) 53 | .resizable(false) 54 | .decorations(false) 55 | .transparent(true) 56 | .always_on_top(true) 57 | .build() 58 | { 59 | let _ = window.show(); 60 | //#[cfg(any(windows, target_os = "macos"))] 61 | //let _ = set_shadow(&window, false); 62 | } 63 | } 64 | } 65 | }); 66 | 67 | loop { 68 | match Mouse::get_mouse_position() { 69 | Mouse::Position { x, y } => { 70 | let _ = app_handle.emit_all("mouse_position", MousePosition { x, y }); 71 | } 72 | _ => {} 73 | } 74 | std::thread::sleep(std::time::Duration::from_millis(10)); 75 | } 76 | }); 77 | 78 | let app_handle = app.app_handle(); 79 | tauri::async_runtime::spawn(async move { 80 | use axum::{ 81 | http::StatusCode, 82 | routing::{get, post}, 83 | Json, 84 | }; 85 | use tower_http::cors::{AllowMethods, Any, CorsLayer}; 86 | 87 | let data_dir = app_handle.path_resolver().app_data_dir().unwrap(); 88 | let data_dir2 = data_dir.clone(); 89 | let data_dir3 = data_dir.clone(); 90 | 91 | let app = axum::Router::new() 92 | .route( 93 | "/vrm", 94 | get(|| async move { 95 | let vrm_dir = data_dir3.join("vrm"); 96 | if let Ok(mut files) = tokio::fs::read_dir(&vrm_dir).await { 97 | let mut models = Vec::new(); 98 | while let Ok(Some(file)) = files.next_entry().await { 99 | let filename = file.file_name().to_string_lossy().to_string(); 100 | if filename.ends_with(".vrm") { 101 | models.push(filename); 102 | } 103 | } 104 | (StatusCode::OK, Json(ModelList { models })) 105 | } else { 106 | let _ = tokio::fs::create_dir_all(&vrm_dir).await; 107 | (StatusCode::OK, Json(ModelList { models: Vec::new() })) 108 | } 109 | }), 110 | ) 111 | .route( 112 | "/vrm/{vrm}", 113 | get(|p: axum::extract::Path| async move { 114 | if let Ok(data) = tokio::fs::read( 115 | data_dir 116 | .join("vrm") 117 | .join(PathBuf::from(&p.0).file_name().unwrap()), 118 | ) 119 | .await 120 | { 121 | (axum::http::StatusCode::OK, data) 122 | } else { 123 | (axum::http::StatusCode::NOT_FOUND, Vec::new()) 124 | } 125 | }), 126 | ) 127 | .route( 128 | "/vrm/{vrm}", 129 | post( 130 | |p: axum::extract::Path, body: axum::body::Bytes| async move { 131 | if let Ok(_) = tokio::fs::write( 132 | data_dir2 133 | .join("vrm") 134 | .join(PathBuf::from(&p.0).file_name().unwrap()), 135 | body, 136 | ) 137 | .await 138 | { 139 | (axum::http::StatusCode::OK, Vec::new()) 140 | } else { 141 | (axum::http::StatusCode::INTERNAL_SERVER_ERROR, Vec::new()) 142 | } 143 | }, 144 | ), 145 | ) 146 | .layer( 147 | CorsLayer::new() 148 | .allow_origin(Any) 149 | .allow_methods(AllowMethods::any()), 150 | ) 151 | .layer(axum::extract::DefaultBodyLimit::max(1024 * 1024 * 1024)); 152 | axum::serve( 153 | tokio::net::TcpListener::bind( 154 | "127.0.0.1:8108".parse::().unwrap(), 155 | ) 156 | .await 157 | .unwrap(), 158 | app, 159 | ) 160 | .await 161 | .unwrap(); 162 | }); 163 | 164 | Ok(()) 165 | }) 166 | .run(tauri::generate_context!()) 167 | .expect("error while running tauri application"); 168 | } 169 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@pixiv/three-vrm': 12 | specifier: ^3.3.2 13 | version: 3.3.2(three@0.172.0) 14 | '@pixiv/three-vrm-animation': 15 | specifier: ^3.3.3 16 | version: 3.3.3(three@0.172.0) 17 | '@tauri-apps/api': 18 | specifier: ^1.6.0 19 | version: 1.6.0 20 | autoprefixer: 21 | specifier: ^10.4.20 22 | version: 10.4.20(postcss@8.5.1) 23 | postcss: 24 | specifier: ^8.5.1 25 | version: 8.5.1 26 | react: 27 | specifier: ^18.3.1 28 | version: 18.3.1 29 | react-dom: 30 | specifier: ^18.3.1 31 | version: 18.3.1(react@18.3.1) 32 | react-router-dom: 33 | specifier: ^7.1.3 34 | version: 7.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 35 | tailwindcss: 36 | specifier: ^3.4.17 37 | version: 3.4.17 38 | three: 39 | specifier: ^0.172.0 40 | version: 0.172.0 41 | devDependencies: 42 | '@eslint/js': 43 | specifier: ^9.17.0 44 | version: 9.18.0 45 | '@tauri-apps/cli': 46 | specifier: ^1.6.0 47 | version: 1.6.3 48 | '@types/react': 49 | specifier: ^18.3.18 50 | version: 18.3.18 51 | '@types/react-dom': 52 | specifier: ^18.3.5 53 | version: 18.3.5(@types/react@18.3.18) 54 | '@types/three': 55 | specifier: ^0.172.0 56 | version: 0.172.0 57 | '@vitejs/plugin-react': 58 | specifier: ^4.3.4 59 | version: 4.3.4(vite@6.0.7(jiti@1.21.7)(yaml@2.7.0)) 60 | eslint: 61 | specifier: ^9.17.0 62 | version: 9.18.0(jiti@1.21.7) 63 | eslint-plugin-react-hooks: 64 | specifier: ^5.0.0 65 | version: 5.1.0(eslint@9.18.0(jiti@1.21.7)) 66 | eslint-plugin-react-refresh: 67 | specifier: ^0.4.16 68 | version: 0.4.18(eslint@9.18.0(jiti@1.21.7)) 69 | globals: 70 | specifier: ^15.14.0 71 | version: 15.14.0 72 | prettier: 73 | specifier: ^3.4.2 74 | version: 3.4.2 75 | typescript: 76 | specifier: ~5.6.2 77 | version: 5.6.3 78 | typescript-eslint: 79 | specifier: ^8.18.2 80 | version: 8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.6.3) 81 | vite: 82 | specifier: ^6.0.5 83 | version: 6.0.7(jiti@1.21.7)(yaml@2.7.0) 84 | vite-tsconfig-paths: 85 | specifier: ^5.1.4 86 | version: 5.1.4(typescript@5.6.3)(vite@6.0.7(jiti@1.21.7)(yaml@2.7.0)) 87 | 88 | packages: 89 | 90 | '@alloc/quick-lru@5.2.0': 91 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 92 | engines: {node: '>=10'} 93 | 94 | '@ampproject/remapping@2.3.0': 95 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 96 | engines: {node: '>=6.0.0'} 97 | 98 | '@babel/code-frame@7.26.2': 99 | resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} 100 | engines: {node: '>=6.9.0'} 101 | 102 | '@babel/compat-data@7.26.5': 103 | resolution: {integrity: sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==} 104 | engines: {node: '>=6.9.0'} 105 | 106 | '@babel/core@7.26.0': 107 | resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} 108 | engines: {node: '>=6.9.0'} 109 | 110 | '@babel/generator@7.26.5': 111 | resolution: {integrity: sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==} 112 | engines: {node: '>=6.9.0'} 113 | 114 | '@babel/helper-compilation-targets@7.26.5': 115 | resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} 116 | engines: {node: '>=6.9.0'} 117 | 118 | '@babel/helper-module-imports@7.25.9': 119 | resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} 120 | engines: {node: '>=6.9.0'} 121 | 122 | '@babel/helper-module-transforms@7.26.0': 123 | resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} 124 | engines: {node: '>=6.9.0'} 125 | peerDependencies: 126 | '@babel/core': ^7.0.0 127 | 128 | '@babel/helper-plugin-utils@7.26.5': 129 | resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} 130 | engines: {node: '>=6.9.0'} 131 | 132 | '@babel/helper-string-parser@7.25.9': 133 | resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} 134 | engines: {node: '>=6.9.0'} 135 | 136 | '@babel/helper-validator-identifier@7.25.9': 137 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} 138 | engines: {node: '>=6.9.0'} 139 | 140 | '@babel/helper-validator-option@7.25.9': 141 | resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} 142 | engines: {node: '>=6.9.0'} 143 | 144 | '@babel/helpers@7.26.0': 145 | resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} 146 | engines: {node: '>=6.9.0'} 147 | 148 | '@babel/parser@7.26.5': 149 | resolution: {integrity: sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==} 150 | engines: {node: '>=6.0.0'} 151 | hasBin: true 152 | 153 | '@babel/plugin-transform-react-jsx-self@7.25.9': 154 | resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} 155 | engines: {node: '>=6.9.0'} 156 | peerDependencies: 157 | '@babel/core': ^7.0.0-0 158 | 159 | '@babel/plugin-transform-react-jsx-source@7.25.9': 160 | resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} 161 | engines: {node: '>=6.9.0'} 162 | peerDependencies: 163 | '@babel/core': ^7.0.0-0 164 | 165 | '@babel/template@7.25.9': 166 | resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} 167 | engines: {node: '>=6.9.0'} 168 | 169 | '@babel/traverse@7.26.5': 170 | resolution: {integrity: sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==} 171 | engines: {node: '>=6.9.0'} 172 | 173 | '@babel/types@7.26.5': 174 | resolution: {integrity: sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==} 175 | engines: {node: '>=6.9.0'} 176 | 177 | '@esbuild/aix-ppc64@0.24.2': 178 | resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} 179 | engines: {node: '>=18'} 180 | cpu: [ppc64] 181 | os: [aix] 182 | 183 | '@esbuild/android-arm64@0.24.2': 184 | resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} 185 | engines: {node: '>=18'} 186 | cpu: [arm64] 187 | os: [android] 188 | 189 | '@esbuild/android-arm@0.24.2': 190 | resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} 191 | engines: {node: '>=18'} 192 | cpu: [arm] 193 | os: [android] 194 | 195 | '@esbuild/android-x64@0.24.2': 196 | resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} 197 | engines: {node: '>=18'} 198 | cpu: [x64] 199 | os: [android] 200 | 201 | '@esbuild/darwin-arm64@0.24.2': 202 | resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} 203 | engines: {node: '>=18'} 204 | cpu: [arm64] 205 | os: [darwin] 206 | 207 | '@esbuild/darwin-x64@0.24.2': 208 | resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} 209 | engines: {node: '>=18'} 210 | cpu: [x64] 211 | os: [darwin] 212 | 213 | '@esbuild/freebsd-arm64@0.24.2': 214 | resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} 215 | engines: {node: '>=18'} 216 | cpu: [arm64] 217 | os: [freebsd] 218 | 219 | '@esbuild/freebsd-x64@0.24.2': 220 | resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} 221 | engines: {node: '>=18'} 222 | cpu: [x64] 223 | os: [freebsd] 224 | 225 | '@esbuild/linux-arm64@0.24.2': 226 | resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} 227 | engines: {node: '>=18'} 228 | cpu: [arm64] 229 | os: [linux] 230 | 231 | '@esbuild/linux-arm@0.24.2': 232 | resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} 233 | engines: {node: '>=18'} 234 | cpu: [arm] 235 | os: [linux] 236 | 237 | '@esbuild/linux-ia32@0.24.2': 238 | resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} 239 | engines: {node: '>=18'} 240 | cpu: [ia32] 241 | os: [linux] 242 | 243 | '@esbuild/linux-loong64@0.24.2': 244 | resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} 245 | engines: {node: '>=18'} 246 | cpu: [loong64] 247 | os: [linux] 248 | 249 | '@esbuild/linux-mips64el@0.24.2': 250 | resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} 251 | engines: {node: '>=18'} 252 | cpu: [mips64el] 253 | os: [linux] 254 | 255 | '@esbuild/linux-ppc64@0.24.2': 256 | resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} 257 | engines: {node: '>=18'} 258 | cpu: [ppc64] 259 | os: [linux] 260 | 261 | '@esbuild/linux-riscv64@0.24.2': 262 | resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} 263 | engines: {node: '>=18'} 264 | cpu: [riscv64] 265 | os: [linux] 266 | 267 | '@esbuild/linux-s390x@0.24.2': 268 | resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} 269 | engines: {node: '>=18'} 270 | cpu: [s390x] 271 | os: [linux] 272 | 273 | '@esbuild/linux-x64@0.24.2': 274 | resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} 275 | engines: {node: '>=18'} 276 | cpu: [x64] 277 | os: [linux] 278 | 279 | '@esbuild/netbsd-arm64@0.24.2': 280 | resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} 281 | engines: {node: '>=18'} 282 | cpu: [arm64] 283 | os: [netbsd] 284 | 285 | '@esbuild/netbsd-x64@0.24.2': 286 | resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} 287 | engines: {node: '>=18'} 288 | cpu: [x64] 289 | os: [netbsd] 290 | 291 | '@esbuild/openbsd-arm64@0.24.2': 292 | resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} 293 | engines: {node: '>=18'} 294 | cpu: [arm64] 295 | os: [openbsd] 296 | 297 | '@esbuild/openbsd-x64@0.24.2': 298 | resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} 299 | engines: {node: '>=18'} 300 | cpu: [x64] 301 | os: [openbsd] 302 | 303 | '@esbuild/sunos-x64@0.24.2': 304 | resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} 305 | engines: {node: '>=18'} 306 | cpu: [x64] 307 | os: [sunos] 308 | 309 | '@esbuild/win32-arm64@0.24.2': 310 | resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} 311 | engines: {node: '>=18'} 312 | cpu: [arm64] 313 | os: [win32] 314 | 315 | '@esbuild/win32-ia32@0.24.2': 316 | resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} 317 | engines: {node: '>=18'} 318 | cpu: [ia32] 319 | os: [win32] 320 | 321 | '@esbuild/win32-x64@0.24.2': 322 | resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} 323 | engines: {node: '>=18'} 324 | cpu: [x64] 325 | os: [win32] 326 | 327 | '@eslint-community/eslint-utils@4.4.1': 328 | resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} 329 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 330 | peerDependencies: 331 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 332 | 333 | '@eslint-community/regexpp@4.12.1': 334 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 335 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 336 | 337 | '@eslint/config-array@0.19.1': 338 | resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} 339 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 340 | 341 | '@eslint/core@0.10.0': 342 | resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} 343 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 344 | 345 | '@eslint/eslintrc@3.2.0': 346 | resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} 347 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 348 | 349 | '@eslint/js@9.18.0': 350 | resolution: {integrity: sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==} 351 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 352 | 353 | '@eslint/object-schema@2.1.5': 354 | resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} 355 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 356 | 357 | '@eslint/plugin-kit@0.2.5': 358 | resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} 359 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 360 | 361 | '@humanfs/core@0.19.1': 362 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 363 | engines: {node: '>=18.18.0'} 364 | 365 | '@humanfs/node@0.16.6': 366 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 367 | engines: {node: '>=18.18.0'} 368 | 369 | '@humanwhocodes/module-importer@1.0.1': 370 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 371 | engines: {node: '>=12.22'} 372 | 373 | '@humanwhocodes/retry@0.3.1': 374 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 375 | engines: {node: '>=18.18'} 376 | 377 | '@humanwhocodes/retry@0.4.1': 378 | resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} 379 | engines: {node: '>=18.18'} 380 | 381 | '@isaacs/cliui@8.0.2': 382 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 383 | engines: {node: '>=12'} 384 | 385 | '@jridgewell/gen-mapping@0.3.8': 386 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} 387 | engines: {node: '>=6.0.0'} 388 | 389 | '@jridgewell/resolve-uri@3.1.2': 390 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 391 | engines: {node: '>=6.0.0'} 392 | 393 | '@jridgewell/set-array@1.2.1': 394 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 395 | engines: {node: '>=6.0.0'} 396 | 397 | '@jridgewell/sourcemap-codec@1.5.0': 398 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 399 | 400 | '@jridgewell/trace-mapping@0.3.25': 401 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 402 | 403 | '@nodelib/fs.scandir@2.1.5': 404 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 405 | engines: {node: '>= 8'} 406 | 407 | '@nodelib/fs.stat@2.0.5': 408 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 409 | engines: {node: '>= 8'} 410 | 411 | '@nodelib/fs.walk@1.2.8': 412 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 413 | engines: {node: '>= 8'} 414 | 415 | '@pixiv/three-vrm-animation@3.3.3': 416 | resolution: {integrity: sha512-epIqsoRf2Rc1hCwuVWTk5HZc2elr58gZSNFNb4SVKzQ1ntxd+DDeFJ3ktjXE3K2aWjXmVe6AyeDLBGKCGfmcpw==} 417 | peerDependencies: 418 | three: '>=0.137' 419 | 420 | '@pixiv/three-vrm-core@3.3.2': 421 | resolution: {integrity: sha512-vDxRVVPzxXjTIl/XrWQZff+3rwNZ+P1F//njLhQslj83aZ9xu8QVsGpBs6u00infeGXzX1f98S3ibY/Gjpj3Sg==} 422 | peerDependencies: 423 | three: '>=0.137' 424 | 425 | '@pixiv/three-vrm-core@3.3.3': 426 | resolution: {integrity: sha512-5I5Q0DhdnBAg6W0jBFAIn7NBQ7XIpmylZ6GcX3oGUhiYw44mTxfONIHTl6C7XedESJ8lpKGy0jZZIA7QMWE2Lg==} 427 | peerDependencies: 428 | three: '>=0.137' 429 | 430 | '@pixiv/three-vrm-materials-hdr-emissive-multiplier@3.3.2': 431 | resolution: {integrity: sha512-wKsv/Goom6kelMh2bOJ8Ungk48mOkBaZrKGuLOzODWS0Vj5pAj04etpaXKxWp+BKyHDcS93ttkYMUWi1/5MVeg==} 432 | peerDependencies: 433 | three: '>=0.137' 434 | 435 | '@pixiv/three-vrm-materials-mtoon@3.3.2': 436 | resolution: {integrity: sha512-0Z/Mx2zKtKYaz+pntsSq8bHEo6NcDZHUJ55Yq7F3V/BxqkuhhSMaY+9wauXuNk5ifcnY1eQtqJ2xaFAao6ndAg==} 437 | peerDependencies: 438 | three: '>=0.137' 439 | 440 | '@pixiv/three-vrm-materials-v0compat@3.3.2': 441 | resolution: {integrity: sha512-8L+ILx18GFaPmY/hcptW32JFp1Tvuyo26V7prq8jq6xkqLgjhYFpOLmRB4qE2fMveNITtYpXAC3nF93a4IgqfA==} 442 | peerDependencies: 443 | three: '>=0.137' 444 | 445 | '@pixiv/three-vrm-node-constraint@3.3.2': 446 | resolution: {integrity: sha512-Gt7b2aWmX9elcucMa4A0WIfmDb5aKvX8/XoHajWwlfqWRO/TLKwuI0WpC9UQ7S1vz10Pax79TMfZri8VMRf/GQ==} 447 | peerDependencies: 448 | three: '>=0.137' 449 | 450 | '@pixiv/three-vrm-springbone@3.3.2': 451 | resolution: {integrity: sha512-GxgjXUOewgEjxlysK2csyGwNR7nYGTJNqsMlg8qOXI6Xz2CwrLZKFp5yQUQinEjTWf0NVlwktAM4JN5Jkh75/w==} 452 | peerDependencies: 453 | three: '>=0.137' 454 | 455 | '@pixiv/three-vrm@3.3.2': 456 | resolution: {integrity: sha512-c2Z7kj91/pwZCjX2LT2sPhQ3gkzGKA1eE8F5AZp8JHpZF6yn+GpWPQ3g9kBbwnTgpuJSC62IGjg4KnKHa7ctwQ==} 457 | peerDependencies: 458 | three: '>=0.137' 459 | 460 | '@pixiv/types-vrm-0.0@3.3.2': 461 | resolution: {integrity: sha512-PXvYXGxP3n8TTOLCYiblLCsWc9AWUWiy5V8AeEm5ADDD5yaMa02Z8zw5/eoHDSPl/Byf/OpNLgeO1wReLE31iw==} 462 | 463 | '@pixiv/types-vrm-0.0@3.3.3': 464 | resolution: {integrity: sha512-+nqVpgwwwDsy2UiQd+r6vaziqvpzWwYVGw04ry2yKJ5RjRC36t+KQ8YhLLgSr9xDG5wC/JJk/r19Q3bBKeGJKA==} 465 | 466 | '@pixiv/types-vrmc-materials-hdr-emissive-multiplier-1.0@3.3.2': 467 | resolution: {integrity: sha512-PLmNZ2ae91Va+Ye8dvfpJl2MBI7WRVlwNpHebJKgXUbg9qppWdNO8CHNIk5WF1XhQMIFuwbnB/ys496LutHQTA==} 468 | 469 | '@pixiv/types-vrmc-materials-mtoon-1.0@3.3.2': 470 | resolution: {integrity: sha512-X3IV31N6CJ/LUGzfgBbLYujPePhtmorqan8OPzuVSDoQ1IdJwWsSYmjWKqMUZuyxJYk+0ls5iVeNabOnBM2bpA==} 471 | 472 | '@pixiv/types-vrmc-node-constraint-1.0@3.3.2': 473 | resolution: {integrity: sha512-ncpM3Ok4EtjZ+2T+bbTavmk+qpXqEaee1zdWZZr+I7pzJgpoH2ghwJ77Ri75XQhPpTaPCA//etpRAnUyZkMoJg==} 474 | 475 | '@pixiv/types-vrmc-springbone-1.0@3.3.2': 476 | resolution: {integrity: sha512-C7a7UYq943JiF9K7JTuLvsdRLR7ZcURwLD0JaGn/3vHkoWJPkm/rrDB3txKtD3oGtlkmynIi0MgRuwDL80z10w==} 477 | 478 | '@pixiv/types-vrmc-springbone-extended-collider-1.0@3.3.2': 479 | resolution: {integrity: sha512-6pVCndF+09s14PKmqoRpA01rYjpWh/clnP6Q/d6q2IUPDtjrxor4m696eN8yU7qNJmqkCdrLODOoFxBftcCEKQ==} 480 | 481 | '@pixiv/types-vrmc-vrm-1.0@2.0.3': 482 | resolution: {integrity: sha512-RMP34Bk1qLFQv/CRB1Zqvn2qMFfWQfP2Hms5QrrfoBsW9XroZdEe0zPLNbGmUPYh4F7VtBb+B7+RCuymRtpehA==} 483 | 484 | '@pixiv/types-vrmc-vrm-1.0@3.3.2': 485 | resolution: {integrity: sha512-FGvu2a6txJ9W/S8yIujFY9a8YMgKmSfIxHPnXj2aNFCaPhdnLb7LkG5b1bkxITUE5oHseLhSnEBv0Ni3nCKbzw==} 486 | 487 | '@pixiv/types-vrmc-vrm-1.0@3.3.3': 488 | resolution: {integrity: sha512-/EqTI0MakfG4J2tMHLHS0lYmH3NjjyV2mFTEEbb9qkCO1yM31bsmwUSE3lY/BWuN3+r03+YQJQbIErj+sLxXDQ==} 489 | 490 | '@pixiv/types-vrmc-vrm-animation-1.0@3.3.3': 491 | resolution: {integrity: sha512-6R8pgWLEyqXHNgrun/RJo+fdKO2w5gURpRTClQK8C5Iqh1FUYil6lC/EkMU+w06t5aFEx6JX1f/OEqBiih8vZQ==} 492 | 493 | '@pkgjs/parseargs@0.11.0': 494 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 495 | engines: {node: '>=14'} 496 | 497 | '@rollup/rollup-android-arm-eabi@4.30.1': 498 | resolution: {integrity: sha512-pSWY+EVt3rJ9fQ3IqlrEUtXh3cGqGtPDH1FQlNZehO2yYxCHEX1SPsz1M//NXwYfbTlcKr9WObLnJX9FsS9K1Q==} 499 | cpu: [arm] 500 | os: [android] 501 | 502 | '@rollup/rollup-android-arm64@4.30.1': 503 | resolution: {integrity: sha512-/NA2qXxE3D/BRjOJM8wQblmArQq1YoBVJjrjoTSBS09jgUisq7bqxNHJ8kjCHeV21W/9WDGwJEWSN0KQ2mtD/w==} 504 | cpu: [arm64] 505 | os: [android] 506 | 507 | '@rollup/rollup-darwin-arm64@4.30.1': 508 | resolution: {integrity: sha512-r7FQIXD7gB0WJ5mokTUgUWPl0eYIH0wnxqeSAhuIwvnnpjdVB8cRRClyKLQr7lgzjctkbp5KmswWszlwYln03Q==} 509 | cpu: [arm64] 510 | os: [darwin] 511 | 512 | '@rollup/rollup-darwin-x64@4.30.1': 513 | resolution: {integrity: sha512-x78BavIwSH6sqfP2xeI1hd1GpHL8J4W2BXcVM/5KYKoAD3nNsfitQhvWSw+TFtQTLZ9OmlF+FEInEHyubut2OA==} 514 | cpu: [x64] 515 | os: [darwin] 516 | 517 | '@rollup/rollup-freebsd-arm64@4.30.1': 518 | resolution: {integrity: sha512-HYTlUAjbO1z8ywxsDFWADfTRfTIIy/oUlfIDmlHYmjUP2QRDTzBuWXc9O4CXM+bo9qfiCclmHk1x4ogBjOUpUQ==} 519 | cpu: [arm64] 520 | os: [freebsd] 521 | 522 | '@rollup/rollup-freebsd-x64@4.30.1': 523 | resolution: {integrity: sha512-1MEdGqogQLccphhX5myCJqeGNYTNcmTyaic9S7CG3JhwuIByJ7J05vGbZxsizQthP1xpVx7kd3o31eOogfEirw==} 524 | cpu: [x64] 525 | os: [freebsd] 526 | 527 | '@rollup/rollup-linux-arm-gnueabihf@4.30.1': 528 | resolution: {integrity: sha512-PaMRNBSqCx7K3Wc9QZkFx5+CX27WFpAMxJNiYGAXfmMIKC7jstlr32UhTgK6T07OtqR+wYlWm9IxzennjnvdJg==} 529 | cpu: [arm] 530 | os: [linux] 531 | 532 | '@rollup/rollup-linux-arm-musleabihf@4.30.1': 533 | resolution: {integrity: sha512-B8Rcyj9AV7ZlEFqvB5BubG5iO6ANDsRKlhIxySXcF1axXYUyqwBok+XZPgIYGBgs7LDXfWfifxhw0Ik57T0Yug==} 534 | cpu: [arm] 535 | os: [linux] 536 | 537 | '@rollup/rollup-linux-arm64-gnu@4.30.1': 538 | resolution: {integrity: sha512-hqVyueGxAj3cBKrAI4aFHLV+h0Lv5VgWZs9CUGqr1z0fZtlADVV1YPOij6AhcK5An33EXaxnDLmJdQikcn5NEw==} 539 | cpu: [arm64] 540 | os: [linux] 541 | 542 | '@rollup/rollup-linux-arm64-musl@4.30.1': 543 | resolution: {integrity: sha512-i4Ab2vnvS1AE1PyOIGp2kXni69gU2DAUVt6FSXeIqUCPIR3ZlheMW3oP2JkukDfu3PsexYRbOiJrY+yVNSk9oA==} 544 | cpu: [arm64] 545 | os: [linux] 546 | 547 | '@rollup/rollup-linux-loongarch64-gnu@4.30.1': 548 | resolution: {integrity: sha512-fARcF5g296snX0oLGkVxPmysetwUk2zmHcca+e9ObOovBR++9ZPOhqFUM61UUZ2EYpXVPN1redgqVoBB34nTpQ==} 549 | cpu: [loong64] 550 | os: [linux] 551 | 552 | '@rollup/rollup-linux-powerpc64le-gnu@4.30.1': 553 | resolution: {integrity: sha512-GLrZraoO3wVT4uFXh67ElpwQY0DIygxdv0BNW9Hkm3X34wu+BkqrDrkcsIapAY+N2ATEbvak0XQ9gxZtCIA5Rw==} 554 | cpu: [ppc64] 555 | os: [linux] 556 | 557 | '@rollup/rollup-linux-riscv64-gnu@4.30.1': 558 | resolution: {integrity: sha512-0WKLaAUUHKBtll0wvOmh6yh3S0wSU9+yas923JIChfxOaaBarmb/lBKPF0w/+jTVozFnOXJeRGZ8NvOxvk/jcw==} 559 | cpu: [riscv64] 560 | os: [linux] 561 | 562 | '@rollup/rollup-linux-s390x-gnu@4.30.1': 563 | resolution: {integrity: sha512-GWFs97Ruxo5Bt+cvVTQkOJ6TIx0xJDD/bMAOXWJg8TCSTEK8RnFeOeiFTxKniTc4vMIaWvCplMAFBt9miGxgkA==} 564 | cpu: [s390x] 565 | os: [linux] 566 | 567 | '@rollup/rollup-linux-x64-gnu@4.30.1': 568 | resolution: {integrity: sha512-UtgGb7QGgXDIO+tqqJ5oZRGHsDLO8SlpE4MhqpY9Llpzi5rJMvrK6ZGhsRCST2abZdBqIBeXW6WPD5fGK5SDwg==} 569 | cpu: [x64] 570 | os: [linux] 571 | 572 | '@rollup/rollup-linux-x64-musl@4.30.1': 573 | resolution: {integrity: sha512-V9U8Ey2UqmQsBT+xTOeMzPzwDzyXmnAoO4edZhL7INkwQcaW1Ckv3WJX3qrrp/VHaDkEWIBWhRwP47r8cdrOow==} 574 | cpu: [x64] 575 | os: [linux] 576 | 577 | '@rollup/rollup-win32-arm64-msvc@4.30.1': 578 | resolution: {integrity: sha512-WabtHWiPaFF47W3PkHnjbmWawnX/aE57K47ZDT1BXTS5GgrBUEpvOzq0FI0V/UYzQJgdb8XlhVNH8/fwV8xDjw==} 579 | cpu: [arm64] 580 | os: [win32] 581 | 582 | '@rollup/rollup-win32-ia32-msvc@4.30.1': 583 | resolution: {integrity: sha512-pxHAU+Zv39hLUTdQQHUVHf4P+0C47y/ZloorHpzs2SXMRqeAWmGghzAhfOlzFHHwjvgokdFAhC4V+6kC1lRRfw==} 584 | cpu: [ia32] 585 | os: [win32] 586 | 587 | '@rollup/rollup-win32-x64-msvc@4.30.1': 588 | resolution: {integrity: sha512-D6qjsXGcvhTjv0kI4fU8tUuBDF/Ueee4SVX79VfNDXZa64TfCW1Slkb6Z7O1p7vflqZjcmOVdZlqf8gvJxc6og==} 589 | cpu: [x64] 590 | os: [win32] 591 | 592 | '@tauri-apps/api@1.6.0': 593 | resolution: {integrity: sha512-rqI++FWClU5I2UBp4HXFvl+sBWkdigBkxnpJDQUWttNyG7IZP4FwQGhTNL5EOw0vI8i6eSAJ5frLqO7n7jbJdg==} 594 | engines: {node: '>= 14.6.0', npm: '>= 6.6.0', yarn: '>= 1.19.1'} 595 | 596 | '@tauri-apps/cli-darwin-arm64@1.6.3': 597 | resolution: {integrity: sha512-fQN6IYSL8bG4NvkdKE4sAGF4dF/QqqQq4hOAU+t8ksOzHJr0hUlJYfncFeJYutr/MMkdF7hYKadSb0j5EE9r0A==} 598 | engines: {node: '>= 10'} 599 | cpu: [arm64] 600 | os: [darwin] 601 | 602 | '@tauri-apps/cli-darwin-x64@1.6.3': 603 | resolution: {integrity: sha512-1yTXZzLajKAYINJOJhZfmMhCzweHSgKQ3bEgJSn6t+1vFkOgY8Yx4oFgWcybrrWI5J1ZLZAl47+LPOY81dLcyA==} 604 | engines: {node: '>= 10'} 605 | cpu: [x64] 606 | os: [darwin] 607 | 608 | '@tauri-apps/cli-linux-arm-gnueabihf@1.6.3': 609 | resolution: {integrity: sha512-CjTEr9r9xgjcvos09AQw8QMRPuH152B1jvlZt4PfAsyJNPFigzuwed5/SF7XAd8bFikA7zArP4UT12RdBxrx7w==} 610 | engines: {node: '>= 10'} 611 | cpu: [arm] 612 | os: [linux] 613 | 614 | '@tauri-apps/cli-linux-arm64-gnu@1.6.3': 615 | resolution: {integrity: sha512-G9EUUS4M8M/Jz1UKZqvJmQQCKOzgTb8/0jZKvfBuGfh5AjFBu8LHvlFpwkKVm1l4951Xg4ulUp6P9Q7WRJ9XSA==} 616 | engines: {node: '>= 10'} 617 | cpu: [arm64] 618 | os: [linux] 619 | 620 | '@tauri-apps/cli-linux-arm64-musl@1.6.3': 621 | resolution: {integrity: sha512-MuBTHJyNpZRbPVG8IZBN8+Zs7aKqwD22tkWVBcL1yOGL4zNNTJlkfL+zs5qxRnHlUsn6YAlbW/5HKocfpxVwBw==} 622 | engines: {node: '>= 10'} 623 | cpu: [arm64] 624 | os: [linux] 625 | 626 | '@tauri-apps/cli-linux-x64-gnu@1.6.3': 627 | resolution: {integrity: sha512-Uvi7M+NK3tAjCZEY1WGel+dFlzJmqcvu3KND+nqa22762NFmOuBIZ4KJR/IQHfpEYqKFNUhJfCGnpUDfiC3Oxg==} 628 | engines: {node: '>= 10'} 629 | cpu: [x64] 630 | os: [linux] 631 | 632 | '@tauri-apps/cli-linux-x64-musl@1.6.3': 633 | resolution: {integrity: sha512-rc6B342C0ra8VezB/OJom9j/N+9oW4VRA4qMxS2f4bHY2B/z3J9NPOe6GOILeg4v/CV62ojkLsC3/K/CeF3fqQ==} 634 | engines: {node: '>= 10'} 635 | cpu: [x64] 636 | os: [linux] 637 | 638 | '@tauri-apps/cli-win32-arm64-msvc@1.6.3': 639 | resolution: {integrity: sha512-cSH2qOBYuYC4UVIFtrc1YsGfc5tfYrotoHrpTvRjUGu0VywvmyNk82+ZsHEnWZ2UHmu3l3lXIGRqSWveLln0xg==} 640 | engines: {node: '>= 10'} 641 | cpu: [arm64] 642 | os: [win32] 643 | 644 | '@tauri-apps/cli-win32-ia32-msvc@1.6.3': 645 | resolution: {integrity: sha512-T8V6SJQqE4PSWmYBl0ChQVmS6AR2hXFHURH2DwAhgSGSQ6uBXgwlYFcfIeQpBQA727K2Eq8X2hGfvmoySyHMRw==} 646 | engines: {node: '>= 10'} 647 | cpu: [ia32] 648 | os: [win32] 649 | 650 | '@tauri-apps/cli-win32-x64-msvc@1.6.3': 651 | resolution: {integrity: sha512-HUkWZ+lYHI/Gjkh2QjHD/OBDpqLVmvjZGpLK9losur1Eg974Jip6k+vsoTUxQBCBDfj30eDBct9E1FvXOspWeg==} 652 | engines: {node: '>= 10'} 653 | cpu: [x64] 654 | os: [win32] 655 | 656 | '@tauri-apps/cli@1.6.3': 657 | resolution: {integrity: sha512-q46umd6QLRKDd4Gg6WyZBGa2fWvk0pbeUA5vFomm4uOs1/17LIciHv2iQ4UD+2Yv5H7AO8YiE1t50V0POiEGEw==} 658 | engines: {node: '>= 10'} 659 | hasBin: true 660 | 661 | '@tweenjs/tween.js@23.1.3': 662 | resolution: {integrity: sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==} 663 | 664 | '@types/babel__core@7.20.5': 665 | resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 666 | 667 | '@types/babel__generator@7.6.8': 668 | resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} 669 | 670 | '@types/babel__template@7.4.4': 671 | resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 672 | 673 | '@types/babel__traverse@7.20.6': 674 | resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} 675 | 676 | '@types/cookie@0.6.0': 677 | resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} 678 | 679 | '@types/estree@1.0.6': 680 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 681 | 682 | '@types/json-schema@7.0.15': 683 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 684 | 685 | '@types/prop-types@15.7.14': 686 | resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} 687 | 688 | '@types/react-dom@18.3.5': 689 | resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==} 690 | peerDependencies: 691 | '@types/react': ^18.0.0 692 | 693 | '@types/react@18.3.18': 694 | resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==} 695 | 696 | '@types/stats.js@0.17.3': 697 | resolution: {integrity: sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==} 698 | 699 | '@types/three@0.172.0': 700 | resolution: {integrity: sha512-LrUtP3FEG26Zg5WiF0nbg8VoXiKokBLTcqM2iLvM9vzcfEiYmmBAPGdBgV0OYx9fvWlY3R/3ERTZcD9X5sc0NA==} 701 | 702 | '@types/webxr@0.5.20': 703 | resolution: {integrity: sha512-JGpU6qiIJQKUuVSKx1GtQnHJGxRjtfGIhzO2ilq43VZZS//f1h1Sgexbdk+Lq+7569a6EYhOWrUpIruR/1Enmg==} 704 | 705 | '@typescript-eslint/eslint-plugin@8.19.1': 706 | resolution: {integrity: sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg==} 707 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 708 | peerDependencies: 709 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 710 | eslint: ^8.57.0 || ^9.0.0 711 | typescript: '>=4.8.4 <5.8.0' 712 | 713 | '@typescript-eslint/parser@8.19.1': 714 | resolution: {integrity: sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==} 715 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 716 | peerDependencies: 717 | eslint: ^8.57.0 || ^9.0.0 718 | typescript: '>=4.8.4 <5.8.0' 719 | 720 | '@typescript-eslint/scope-manager@8.19.1': 721 | resolution: {integrity: sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==} 722 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 723 | 724 | '@typescript-eslint/type-utils@8.19.1': 725 | resolution: {integrity: sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==} 726 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 727 | peerDependencies: 728 | eslint: ^8.57.0 || ^9.0.0 729 | typescript: '>=4.8.4 <5.8.0' 730 | 731 | '@typescript-eslint/types@8.19.1': 732 | resolution: {integrity: sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==} 733 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 734 | 735 | '@typescript-eslint/typescript-estree@8.19.1': 736 | resolution: {integrity: sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==} 737 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 738 | peerDependencies: 739 | typescript: '>=4.8.4 <5.8.0' 740 | 741 | '@typescript-eslint/utils@8.19.1': 742 | resolution: {integrity: sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==} 743 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 744 | peerDependencies: 745 | eslint: ^8.57.0 || ^9.0.0 746 | typescript: '>=4.8.4 <5.8.0' 747 | 748 | '@typescript-eslint/visitor-keys@8.19.1': 749 | resolution: {integrity: sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==} 750 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 751 | 752 | '@vitejs/plugin-react@4.3.4': 753 | resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} 754 | engines: {node: ^14.18.0 || >=16.0.0} 755 | peerDependencies: 756 | vite: ^4.2.0 || ^5.0.0 || ^6.0.0 757 | 758 | '@webgpu/types@0.1.52': 759 | resolution: {integrity: sha512-eI883Nlag2hGIkhXxAnq8s4APpqXWuPL3Gbn2ghiU12UjLvfCbVqHK4XfXl3eLRTatqcMmeK7jws7IwWsGfbzw==} 760 | 761 | acorn-jsx@5.3.2: 762 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 763 | peerDependencies: 764 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 765 | 766 | acorn@8.14.0: 767 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 768 | engines: {node: '>=0.4.0'} 769 | hasBin: true 770 | 771 | ajv@6.12.6: 772 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 773 | 774 | ansi-regex@5.0.1: 775 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 776 | engines: {node: '>=8'} 777 | 778 | ansi-regex@6.1.0: 779 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 780 | engines: {node: '>=12'} 781 | 782 | ansi-styles@4.3.0: 783 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 784 | engines: {node: '>=8'} 785 | 786 | ansi-styles@6.2.1: 787 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 788 | engines: {node: '>=12'} 789 | 790 | any-promise@1.3.0: 791 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 792 | 793 | anymatch@3.1.3: 794 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 795 | engines: {node: '>= 8'} 796 | 797 | arg@5.0.2: 798 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 799 | 800 | argparse@2.0.1: 801 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 802 | 803 | autoprefixer@10.4.20: 804 | resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} 805 | engines: {node: ^10 || ^12 || >=14} 806 | hasBin: true 807 | peerDependencies: 808 | postcss: ^8.1.0 809 | 810 | balanced-match@1.0.2: 811 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 812 | 813 | binary-extensions@2.3.0: 814 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 815 | engines: {node: '>=8'} 816 | 817 | brace-expansion@1.1.11: 818 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 819 | 820 | brace-expansion@2.0.1: 821 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 822 | 823 | braces@3.0.3: 824 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 825 | engines: {node: '>=8'} 826 | 827 | browserslist@4.24.4: 828 | resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} 829 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 830 | hasBin: true 831 | 832 | callsites@3.1.0: 833 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 834 | engines: {node: '>=6'} 835 | 836 | camelcase-css@2.0.1: 837 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 838 | engines: {node: '>= 6'} 839 | 840 | caniuse-lite@1.0.30001692: 841 | resolution: {integrity: sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==} 842 | 843 | chalk@4.1.2: 844 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 845 | engines: {node: '>=10'} 846 | 847 | chokidar@3.6.0: 848 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 849 | engines: {node: '>= 8.10.0'} 850 | 851 | color-convert@2.0.1: 852 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 853 | engines: {node: '>=7.0.0'} 854 | 855 | color-name@1.1.4: 856 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 857 | 858 | commander@4.1.1: 859 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 860 | engines: {node: '>= 6'} 861 | 862 | concat-map@0.0.1: 863 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 864 | 865 | convert-source-map@2.0.0: 866 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 867 | 868 | cookie@1.0.2: 869 | resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} 870 | engines: {node: '>=18'} 871 | 872 | cross-spawn@7.0.6: 873 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 874 | engines: {node: '>= 8'} 875 | 876 | cssesc@3.0.0: 877 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 878 | engines: {node: '>=4'} 879 | hasBin: true 880 | 881 | csstype@3.1.3: 882 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 883 | 884 | debug@4.4.0: 885 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 886 | engines: {node: '>=6.0'} 887 | peerDependencies: 888 | supports-color: '*' 889 | peerDependenciesMeta: 890 | supports-color: 891 | optional: true 892 | 893 | deep-is@0.1.4: 894 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 895 | 896 | didyoumean@1.2.2: 897 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 898 | 899 | dlv@1.1.3: 900 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 901 | 902 | eastasianwidth@0.2.0: 903 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 904 | 905 | electron-to-chromium@1.5.80: 906 | resolution: {integrity: sha512-LTrKpW0AqIuHwmlVNV+cjFYTnXtM9K37OGhpe0ZI10ScPSxqVSryZHIY3WnCS5NSYbBODRTZyhRMS2h5FAEqAw==} 907 | 908 | emoji-regex@8.0.0: 909 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 910 | 911 | emoji-regex@9.2.2: 912 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 913 | 914 | esbuild@0.24.2: 915 | resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} 916 | engines: {node: '>=18'} 917 | hasBin: true 918 | 919 | escalade@3.2.0: 920 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 921 | engines: {node: '>=6'} 922 | 923 | escape-string-regexp@4.0.0: 924 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 925 | engines: {node: '>=10'} 926 | 927 | eslint-plugin-react-hooks@5.1.0: 928 | resolution: {integrity: sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==} 929 | engines: {node: '>=10'} 930 | peerDependencies: 931 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 932 | 933 | eslint-plugin-react-refresh@0.4.18: 934 | resolution: {integrity: sha512-IRGEoFn3OKalm3hjfolEWGqoF/jPqeEYFp+C8B0WMzwGwBMvlRDQd06kghDhF0C61uJ6WfSDhEZE/sAQjduKgw==} 935 | peerDependencies: 936 | eslint: '>=8.40' 937 | 938 | eslint-scope@8.2.0: 939 | resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} 940 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 941 | 942 | eslint-visitor-keys@3.4.3: 943 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 944 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 945 | 946 | eslint-visitor-keys@4.2.0: 947 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 948 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 949 | 950 | eslint@9.18.0: 951 | resolution: {integrity: sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==} 952 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 953 | hasBin: true 954 | peerDependencies: 955 | jiti: '*' 956 | peerDependenciesMeta: 957 | jiti: 958 | optional: true 959 | 960 | espree@10.3.0: 961 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 962 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 963 | 964 | esquery@1.6.0: 965 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 966 | engines: {node: '>=0.10'} 967 | 968 | esrecurse@4.3.0: 969 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 970 | engines: {node: '>=4.0'} 971 | 972 | estraverse@5.3.0: 973 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 974 | engines: {node: '>=4.0'} 975 | 976 | esutils@2.0.3: 977 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 978 | engines: {node: '>=0.10.0'} 979 | 980 | fast-deep-equal@3.1.3: 981 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 982 | 983 | fast-glob@3.3.3: 984 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 985 | engines: {node: '>=8.6.0'} 986 | 987 | fast-json-stable-stringify@2.1.0: 988 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 989 | 990 | fast-levenshtein@2.0.6: 991 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 992 | 993 | fastq@1.18.0: 994 | resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} 995 | 996 | fflate@0.8.2: 997 | resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} 998 | 999 | file-entry-cache@8.0.0: 1000 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 1001 | engines: {node: '>=16.0.0'} 1002 | 1003 | fill-range@7.1.1: 1004 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1005 | engines: {node: '>=8'} 1006 | 1007 | find-up@5.0.0: 1008 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1009 | engines: {node: '>=10'} 1010 | 1011 | flat-cache@4.0.1: 1012 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 1013 | engines: {node: '>=16'} 1014 | 1015 | flatted@3.3.2: 1016 | resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} 1017 | 1018 | foreground-child@3.3.0: 1019 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} 1020 | engines: {node: '>=14'} 1021 | 1022 | fraction.js@4.3.7: 1023 | resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} 1024 | 1025 | fsevents@2.3.3: 1026 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1027 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1028 | os: [darwin] 1029 | 1030 | function-bind@1.1.2: 1031 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1032 | 1033 | gensync@1.0.0-beta.2: 1034 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1035 | engines: {node: '>=6.9.0'} 1036 | 1037 | glob-parent@5.1.2: 1038 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1039 | engines: {node: '>= 6'} 1040 | 1041 | glob-parent@6.0.2: 1042 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1043 | engines: {node: '>=10.13.0'} 1044 | 1045 | glob@10.4.5: 1046 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 1047 | hasBin: true 1048 | 1049 | globals@11.12.0: 1050 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1051 | engines: {node: '>=4'} 1052 | 1053 | globals@14.0.0: 1054 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1055 | engines: {node: '>=18'} 1056 | 1057 | globals@15.14.0: 1058 | resolution: {integrity: sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==} 1059 | engines: {node: '>=18'} 1060 | 1061 | globrex@0.1.2: 1062 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 1063 | 1064 | graphemer@1.4.0: 1065 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1066 | 1067 | has-flag@4.0.0: 1068 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1069 | engines: {node: '>=8'} 1070 | 1071 | hasown@2.0.2: 1072 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 1073 | engines: {node: '>= 0.4'} 1074 | 1075 | ignore@5.3.2: 1076 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1077 | engines: {node: '>= 4'} 1078 | 1079 | import-fresh@3.3.0: 1080 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1081 | engines: {node: '>=6'} 1082 | 1083 | imurmurhash@0.1.4: 1084 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1085 | engines: {node: '>=0.8.19'} 1086 | 1087 | is-binary-path@2.1.0: 1088 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1089 | engines: {node: '>=8'} 1090 | 1091 | is-core-module@2.16.1: 1092 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 1093 | engines: {node: '>= 0.4'} 1094 | 1095 | is-extglob@2.1.1: 1096 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1097 | engines: {node: '>=0.10.0'} 1098 | 1099 | is-fullwidth-code-point@3.0.0: 1100 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1101 | engines: {node: '>=8'} 1102 | 1103 | is-glob@4.0.3: 1104 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1105 | engines: {node: '>=0.10.0'} 1106 | 1107 | is-number@7.0.0: 1108 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1109 | engines: {node: '>=0.12.0'} 1110 | 1111 | isexe@2.0.0: 1112 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1113 | 1114 | jackspeak@3.4.3: 1115 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 1116 | 1117 | jiti@1.21.7: 1118 | resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} 1119 | hasBin: true 1120 | 1121 | js-tokens@4.0.0: 1122 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1123 | 1124 | js-yaml@4.1.0: 1125 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1126 | hasBin: true 1127 | 1128 | jsesc@3.1.0: 1129 | resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 1130 | engines: {node: '>=6'} 1131 | hasBin: true 1132 | 1133 | json-buffer@3.0.1: 1134 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1135 | 1136 | json-schema-traverse@0.4.1: 1137 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1138 | 1139 | json-stable-stringify-without-jsonify@1.0.1: 1140 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1141 | 1142 | json5@2.2.3: 1143 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1144 | engines: {node: '>=6'} 1145 | hasBin: true 1146 | 1147 | keyv@4.5.4: 1148 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1149 | 1150 | levn@0.4.1: 1151 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1152 | engines: {node: '>= 0.8.0'} 1153 | 1154 | lilconfig@3.1.3: 1155 | resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} 1156 | engines: {node: '>=14'} 1157 | 1158 | lines-and-columns@1.2.4: 1159 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1160 | 1161 | locate-path@6.0.0: 1162 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1163 | engines: {node: '>=10'} 1164 | 1165 | lodash.merge@4.6.2: 1166 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1167 | 1168 | loose-envify@1.4.0: 1169 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1170 | hasBin: true 1171 | 1172 | lru-cache@10.4.3: 1173 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1174 | 1175 | lru-cache@5.1.1: 1176 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1177 | 1178 | merge2@1.4.1: 1179 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1180 | engines: {node: '>= 8'} 1181 | 1182 | meshoptimizer@0.18.1: 1183 | resolution: {integrity: sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw==} 1184 | 1185 | micromatch@4.0.8: 1186 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1187 | engines: {node: '>=8.6'} 1188 | 1189 | minimatch@3.1.2: 1190 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1191 | 1192 | minimatch@9.0.5: 1193 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1194 | engines: {node: '>=16 || 14 >=14.17'} 1195 | 1196 | minipass@7.1.2: 1197 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1198 | engines: {node: '>=16 || 14 >=14.17'} 1199 | 1200 | ms@2.1.3: 1201 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1202 | 1203 | mz@2.7.0: 1204 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1205 | 1206 | nanoid@3.3.8: 1207 | resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} 1208 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1209 | hasBin: true 1210 | 1211 | natural-compare@1.4.0: 1212 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1213 | 1214 | node-releases@2.0.19: 1215 | resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} 1216 | 1217 | normalize-path@3.0.0: 1218 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1219 | engines: {node: '>=0.10.0'} 1220 | 1221 | normalize-range@0.1.2: 1222 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 1223 | engines: {node: '>=0.10.0'} 1224 | 1225 | object-assign@4.1.1: 1226 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1227 | engines: {node: '>=0.10.0'} 1228 | 1229 | object-hash@3.0.0: 1230 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 1231 | engines: {node: '>= 6'} 1232 | 1233 | optionator@0.9.4: 1234 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1235 | engines: {node: '>= 0.8.0'} 1236 | 1237 | p-limit@3.1.0: 1238 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1239 | engines: {node: '>=10'} 1240 | 1241 | p-locate@5.0.0: 1242 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1243 | engines: {node: '>=10'} 1244 | 1245 | package-json-from-dist@1.0.1: 1246 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 1247 | 1248 | parent-module@1.0.1: 1249 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1250 | engines: {node: '>=6'} 1251 | 1252 | path-exists@4.0.0: 1253 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1254 | engines: {node: '>=8'} 1255 | 1256 | path-key@3.1.1: 1257 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1258 | engines: {node: '>=8'} 1259 | 1260 | path-parse@1.0.7: 1261 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1262 | 1263 | path-scurry@1.11.1: 1264 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 1265 | engines: {node: '>=16 || 14 >=14.18'} 1266 | 1267 | picocolors@1.1.1: 1268 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1269 | 1270 | picomatch@2.3.1: 1271 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1272 | engines: {node: '>=8.6'} 1273 | 1274 | pify@2.3.0: 1275 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 1276 | engines: {node: '>=0.10.0'} 1277 | 1278 | pirates@4.0.6: 1279 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 1280 | engines: {node: '>= 6'} 1281 | 1282 | postcss-import@15.1.0: 1283 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 1284 | engines: {node: '>=14.0.0'} 1285 | peerDependencies: 1286 | postcss: ^8.0.0 1287 | 1288 | postcss-js@4.0.1: 1289 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 1290 | engines: {node: ^12 || ^14 || >= 16} 1291 | peerDependencies: 1292 | postcss: ^8.4.21 1293 | 1294 | postcss-load-config@4.0.2: 1295 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} 1296 | engines: {node: '>= 14'} 1297 | peerDependencies: 1298 | postcss: '>=8.0.9' 1299 | ts-node: '>=9.0.0' 1300 | peerDependenciesMeta: 1301 | postcss: 1302 | optional: true 1303 | ts-node: 1304 | optional: true 1305 | 1306 | postcss-nested@6.2.0: 1307 | resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} 1308 | engines: {node: '>=12.0'} 1309 | peerDependencies: 1310 | postcss: ^8.2.14 1311 | 1312 | postcss-selector-parser@6.1.2: 1313 | resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} 1314 | engines: {node: '>=4'} 1315 | 1316 | postcss-value-parser@4.2.0: 1317 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1318 | 1319 | postcss@8.5.1: 1320 | resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} 1321 | engines: {node: ^10 || ^12 || >=14} 1322 | 1323 | prelude-ls@1.2.1: 1324 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1325 | engines: {node: '>= 0.8.0'} 1326 | 1327 | prettier@3.4.2: 1328 | resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==} 1329 | engines: {node: '>=14'} 1330 | hasBin: true 1331 | 1332 | punycode@2.3.1: 1333 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1334 | engines: {node: '>=6'} 1335 | 1336 | queue-microtask@1.2.3: 1337 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1338 | 1339 | react-dom@18.3.1: 1340 | resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} 1341 | peerDependencies: 1342 | react: ^18.3.1 1343 | 1344 | react-refresh@0.14.2: 1345 | resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} 1346 | engines: {node: '>=0.10.0'} 1347 | 1348 | react-router-dom@7.1.3: 1349 | resolution: {integrity: sha512-qQGTE+77hleBzv9SIUIkGRvuFBQGagW+TQKy53UTZAO/3+YFNBYvRsNIZ1GT17yHbc63FylMOdS+m3oUriF1GA==} 1350 | engines: {node: '>=20.0.0'} 1351 | peerDependencies: 1352 | react: '>=18' 1353 | react-dom: '>=18' 1354 | 1355 | react-router@7.1.3: 1356 | resolution: {integrity: sha512-EezYymLY6Guk/zLQ2vRA8WvdUhWFEj5fcE3RfWihhxXBW7+cd1LsIiA3lmx+KCmneAGQuyBv820o44L2+TtkSA==} 1357 | engines: {node: '>=20.0.0'} 1358 | peerDependencies: 1359 | react: '>=18' 1360 | react-dom: '>=18' 1361 | peerDependenciesMeta: 1362 | react-dom: 1363 | optional: true 1364 | 1365 | react@18.3.1: 1366 | resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} 1367 | engines: {node: '>=0.10.0'} 1368 | 1369 | read-cache@1.0.0: 1370 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 1371 | 1372 | readdirp@3.6.0: 1373 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1374 | engines: {node: '>=8.10.0'} 1375 | 1376 | resolve-from@4.0.0: 1377 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1378 | engines: {node: '>=4'} 1379 | 1380 | resolve@1.22.10: 1381 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} 1382 | engines: {node: '>= 0.4'} 1383 | hasBin: true 1384 | 1385 | reusify@1.0.4: 1386 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1387 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1388 | 1389 | rollup@4.30.1: 1390 | resolution: {integrity: sha512-mlJ4glW020fPuLi7DkM/lN97mYEZGWeqBnrljzN0gs7GLctqX3lNWxKQ7Gl712UAX+6fog/L3jh4gb7R6aVi3w==} 1391 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1392 | hasBin: true 1393 | 1394 | run-parallel@1.2.0: 1395 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1396 | 1397 | scheduler@0.23.2: 1398 | resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} 1399 | 1400 | semver@6.3.1: 1401 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1402 | hasBin: true 1403 | 1404 | semver@7.6.3: 1405 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 1406 | engines: {node: '>=10'} 1407 | hasBin: true 1408 | 1409 | set-cookie-parser@2.7.1: 1410 | resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} 1411 | 1412 | shebang-command@2.0.0: 1413 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1414 | engines: {node: '>=8'} 1415 | 1416 | shebang-regex@3.0.0: 1417 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1418 | engines: {node: '>=8'} 1419 | 1420 | signal-exit@4.1.0: 1421 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1422 | engines: {node: '>=14'} 1423 | 1424 | source-map-js@1.2.1: 1425 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1426 | engines: {node: '>=0.10.0'} 1427 | 1428 | string-width@4.2.3: 1429 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1430 | engines: {node: '>=8'} 1431 | 1432 | string-width@5.1.2: 1433 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1434 | engines: {node: '>=12'} 1435 | 1436 | strip-ansi@6.0.1: 1437 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1438 | engines: {node: '>=8'} 1439 | 1440 | strip-ansi@7.1.0: 1441 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1442 | engines: {node: '>=12'} 1443 | 1444 | strip-json-comments@3.1.1: 1445 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1446 | engines: {node: '>=8'} 1447 | 1448 | sucrase@3.35.0: 1449 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 1450 | engines: {node: '>=16 || 14 >=14.17'} 1451 | hasBin: true 1452 | 1453 | supports-color@7.2.0: 1454 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1455 | engines: {node: '>=8'} 1456 | 1457 | supports-preserve-symlinks-flag@1.0.0: 1458 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1459 | engines: {node: '>= 0.4'} 1460 | 1461 | tailwindcss@3.4.17: 1462 | resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} 1463 | engines: {node: '>=14.0.0'} 1464 | hasBin: true 1465 | 1466 | thenify-all@1.6.0: 1467 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1468 | engines: {node: '>=0.8'} 1469 | 1470 | thenify@3.3.1: 1471 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1472 | 1473 | three@0.172.0: 1474 | resolution: {integrity: sha512-6HMgMlzU97MsV7D/tY8Va38b83kz8YJX+BefKjspMNAv0Vx6dxMogHOrnRl/sbMIs3BPUKijPqDqJ/+UwJbIow==} 1475 | 1476 | to-regex-range@5.0.1: 1477 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1478 | engines: {node: '>=8.0'} 1479 | 1480 | ts-api-utils@2.0.0: 1481 | resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} 1482 | engines: {node: '>=18.12'} 1483 | peerDependencies: 1484 | typescript: '>=4.8.4' 1485 | 1486 | ts-interface-checker@0.1.13: 1487 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1488 | 1489 | tsconfck@3.1.4: 1490 | resolution: {integrity: sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==} 1491 | engines: {node: ^18 || >=20} 1492 | hasBin: true 1493 | peerDependencies: 1494 | typescript: ^5.0.0 1495 | peerDependenciesMeta: 1496 | typescript: 1497 | optional: true 1498 | 1499 | turbo-stream@2.4.0: 1500 | resolution: {integrity: sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==} 1501 | 1502 | type-check@0.4.0: 1503 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1504 | engines: {node: '>= 0.8.0'} 1505 | 1506 | typescript-eslint@8.19.1: 1507 | resolution: {integrity: sha512-LKPUQpdEMVOeKluHi8md7rwLcoXHhwvWp3x+sJkMuq3gGm9yaYJtPo8sRZSblMFJ5pcOGCAak/scKf1mvZDlQw==} 1508 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1509 | peerDependencies: 1510 | eslint: ^8.57.0 || ^9.0.0 1511 | typescript: '>=4.8.4 <5.8.0' 1512 | 1513 | typescript@5.6.3: 1514 | resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} 1515 | engines: {node: '>=14.17'} 1516 | hasBin: true 1517 | 1518 | update-browserslist-db@1.1.2: 1519 | resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} 1520 | hasBin: true 1521 | peerDependencies: 1522 | browserslist: '>= 4.21.0' 1523 | 1524 | uri-js@4.4.1: 1525 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1526 | 1527 | util-deprecate@1.0.2: 1528 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1529 | 1530 | vite-tsconfig-paths@5.1.4: 1531 | resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==} 1532 | peerDependencies: 1533 | vite: '*' 1534 | peerDependenciesMeta: 1535 | vite: 1536 | optional: true 1537 | 1538 | vite@6.0.7: 1539 | resolution: {integrity: sha512-RDt8r/7qx9940f8FcOIAH9PTViRrghKaK2K1jY3RaAURrEUbm9Du1mJ72G+jlhtG3WwodnfzY8ORQZbBavZEAQ==} 1540 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1541 | hasBin: true 1542 | peerDependencies: 1543 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 1544 | jiti: '>=1.21.0' 1545 | less: '*' 1546 | lightningcss: ^1.21.0 1547 | sass: '*' 1548 | sass-embedded: '*' 1549 | stylus: '*' 1550 | sugarss: '*' 1551 | terser: ^5.16.0 1552 | tsx: ^4.8.1 1553 | yaml: ^2.4.2 1554 | peerDependenciesMeta: 1555 | '@types/node': 1556 | optional: true 1557 | jiti: 1558 | optional: true 1559 | less: 1560 | optional: true 1561 | lightningcss: 1562 | optional: true 1563 | sass: 1564 | optional: true 1565 | sass-embedded: 1566 | optional: true 1567 | stylus: 1568 | optional: true 1569 | sugarss: 1570 | optional: true 1571 | terser: 1572 | optional: true 1573 | tsx: 1574 | optional: true 1575 | yaml: 1576 | optional: true 1577 | 1578 | which@2.0.2: 1579 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1580 | engines: {node: '>= 8'} 1581 | hasBin: true 1582 | 1583 | word-wrap@1.2.5: 1584 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1585 | engines: {node: '>=0.10.0'} 1586 | 1587 | wrap-ansi@7.0.0: 1588 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1589 | engines: {node: '>=10'} 1590 | 1591 | wrap-ansi@8.1.0: 1592 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1593 | engines: {node: '>=12'} 1594 | 1595 | yallist@3.1.1: 1596 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 1597 | 1598 | yaml@2.7.0: 1599 | resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} 1600 | engines: {node: '>= 14'} 1601 | hasBin: true 1602 | 1603 | yocto-queue@0.1.0: 1604 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1605 | engines: {node: '>=10'} 1606 | 1607 | snapshots: 1608 | 1609 | '@alloc/quick-lru@5.2.0': {} 1610 | 1611 | '@ampproject/remapping@2.3.0': 1612 | dependencies: 1613 | '@jridgewell/gen-mapping': 0.3.8 1614 | '@jridgewell/trace-mapping': 0.3.25 1615 | 1616 | '@babel/code-frame@7.26.2': 1617 | dependencies: 1618 | '@babel/helper-validator-identifier': 7.25.9 1619 | js-tokens: 4.0.0 1620 | picocolors: 1.1.1 1621 | 1622 | '@babel/compat-data@7.26.5': {} 1623 | 1624 | '@babel/core@7.26.0': 1625 | dependencies: 1626 | '@ampproject/remapping': 2.3.0 1627 | '@babel/code-frame': 7.26.2 1628 | '@babel/generator': 7.26.5 1629 | '@babel/helper-compilation-targets': 7.26.5 1630 | '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) 1631 | '@babel/helpers': 7.26.0 1632 | '@babel/parser': 7.26.5 1633 | '@babel/template': 7.25.9 1634 | '@babel/traverse': 7.26.5 1635 | '@babel/types': 7.26.5 1636 | convert-source-map: 2.0.0 1637 | debug: 4.4.0 1638 | gensync: 1.0.0-beta.2 1639 | json5: 2.2.3 1640 | semver: 6.3.1 1641 | transitivePeerDependencies: 1642 | - supports-color 1643 | 1644 | '@babel/generator@7.26.5': 1645 | dependencies: 1646 | '@babel/parser': 7.26.5 1647 | '@babel/types': 7.26.5 1648 | '@jridgewell/gen-mapping': 0.3.8 1649 | '@jridgewell/trace-mapping': 0.3.25 1650 | jsesc: 3.1.0 1651 | 1652 | '@babel/helper-compilation-targets@7.26.5': 1653 | dependencies: 1654 | '@babel/compat-data': 7.26.5 1655 | '@babel/helper-validator-option': 7.25.9 1656 | browserslist: 4.24.4 1657 | lru-cache: 5.1.1 1658 | semver: 6.3.1 1659 | 1660 | '@babel/helper-module-imports@7.25.9': 1661 | dependencies: 1662 | '@babel/traverse': 7.26.5 1663 | '@babel/types': 7.26.5 1664 | transitivePeerDependencies: 1665 | - supports-color 1666 | 1667 | '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': 1668 | dependencies: 1669 | '@babel/core': 7.26.0 1670 | '@babel/helper-module-imports': 7.25.9 1671 | '@babel/helper-validator-identifier': 7.25.9 1672 | '@babel/traverse': 7.26.5 1673 | transitivePeerDependencies: 1674 | - supports-color 1675 | 1676 | '@babel/helper-plugin-utils@7.26.5': {} 1677 | 1678 | '@babel/helper-string-parser@7.25.9': {} 1679 | 1680 | '@babel/helper-validator-identifier@7.25.9': {} 1681 | 1682 | '@babel/helper-validator-option@7.25.9': {} 1683 | 1684 | '@babel/helpers@7.26.0': 1685 | dependencies: 1686 | '@babel/template': 7.25.9 1687 | '@babel/types': 7.26.5 1688 | 1689 | '@babel/parser@7.26.5': 1690 | dependencies: 1691 | '@babel/types': 7.26.5 1692 | 1693 | '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.0)': 1694 | dependencies: 1695 | '@babel/core': 7.26.0 1696 | '@babel/helper-plugin-utils': 7.26.5 1697 | 1698 | '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.0)': 1699 | dependencies: 1700 | '@babel/core': 7.26.0 1701 | '@babel/helper-plugin-utils': 7.26.5 1702 | 1703 | '@babel/template@7.25.9': 1704 | dependencies: 1705 | '@babel/code-frame': 7.26.2 1706 | '@babel/parser': 7.26.5 1707 | '@babel/types': 7.26.5 1708 | 1709 | '@babel/traverse@7.26.5': 1710 | dependencies: 1711 | '@babel/code-frame': 7.26.2 1712 | '@babel/generator': 7.26.5 1713 | '@babel/parser': 7.26.5 1714 | '@babel/template': 7.25.9 1715 | '@babel/types': 7.26.5 1716 | debug: 4.4.0 1717 | globals: 11.12.0 1718 | transitivePeerDependencies: 1719 | - supports-color 1720 | 1721 | '@babel/types@7.26.5': 1722 | dependencies: 1723 | '@babel/helper-string-parser': 7.25.9 1724 | '@babel/helper-validator-identifier': 7.25.9 1725 | 1726 | '@esbuild/aix-ppc64@0.24.2': 1727 | optional: true 1728 | 1729 | '@esbuild/android-arm64@0.24.2': 1730 | optional: true 1731 | 1732 | '@esbuild/android-arm@0.24.2': 1733 | optional: true 1734 | 1735 | '@esbuild/android-x64@0.24.2': 1736 | optional: true 1737 | 1738 | '@esbuild/darwin-arm64@0.24.2': 1739 | optional: true 1740 | 1741 | '@esbuild/darwin-x64@0.24.2': 1742 | optional: true 1743 | 1744 | '@esbuild/freebsd-arm64@0.24.2': 1745 | optional: true 1746 | 1747 | '@esbuild/freebsd-x64@0.24.2': 1748 | optional: true 1749 | 1750 | '@esbuild/linux-arm64@0.24.2': 1751 | optional: true 1752 | 1753 | '@esbuild/linux-arm@0.24.2': 1754 | optional: true 1755 | 1756 | '@esbuild/linux-ia32@0.24.2': 1757 | optional: true 1758 | 1759 | '@esbuild/linux-loong64@0.24.2': 1760 | optional: true 1761 | 1762 | '@esbuild/linux-mips64el@0.24.2': 1763 | optional: true 1764 | 1765 | '@esbuild/linux-ppc64@0.24.2': 1766 | optional: true 1767 | 1768 | '@esbuild/linux-riscv64@0.24.2': 1769 | optional: true 1770 | 1771 | '@esbuild/linux-s390x@0.24.2': 1772 | optional: true 1773 | 1774 | '@esbuild/linux-x64@0.24.2': 1775 | optional: true 1776 | 1777 | '@esbuild/netbsd-arm64@0.24.2': 1778 | optional: true 1779 | 1780 | '@esbuild/netbsd-x64@0.24.2': 1781 | optional: true 1782 | 1783 | '@esbuild/openbsd-arm64@0.24.2': 1784 | optional: true 1785 | 1786 | '@esbuild/openbsd-x64@0.24.2': 1787 | optional: true 1788 | 1789 | '@esbuild/sunos-x64@0.24.2': 1790 | optional: true 1791 | 1792 | '@esbuild/win32-arm64@0.24.2': 1793 | optional: true 1794 | 1795 | '@esbuild/win32-ia32@0.24.2': 1796 | optional: true 1797 | 1798 | '@esbuild/win32-x64@0.24.2': 1799 | optional: true 1800 | 1801 | '@eslint-community/eslint-utils@4.4.1(eslint@9.18.0(jiti@1.21.7))': 1802 | dependencies: 1803 | eslint: 9.18.0(jiti@1.21.7) 1804 | eslint-visitor-keys: 3.4.3 1805 | 1806 | '@eslint-community/regexpp@4.12.1': {} 1807 | 1808 | '@eslint/config-array@0.19.1': 1809 | dependencies: 1810 | '@eslint/object-schema': 2.1.5 1811 | debug: 4.4.0 1812 | minimatch: 3.1.2 1813 | transitivePeerDependencies: 1814 | - supports-color 1815 | 1816 | '@eslint/core@0.10.0': 1817 | dependencies: 1818 | '@types/json-schema': 7.0.15 1819 | 1820 | '@eslint/eslintrc@3.2.0': 1821 | dependencies: 1822 | ajv: 6.12.6 1823 | debug: 4.4.0 1824 | espree: 10.3.0 1825 | globals: 14.0.0 1826 | ignore: 5.3.2 1827 | import-fresh: 3.3.0 1828 | js-yaml: 4.1.0 1829 | minimatch: 3.1.2 1830 | strip-json-comments: 3.1.1 1831 | transitivePeerDependencies: 1832 | - supports-color 1833 | 1834 | '@eslint/js@9.18.0': {} 1835 | 1836 | '@eslint/object-schema@2.1.5': {} 1837 | 1838 | '@eslint/plugin-kit@0.2.5': 1839 | dependencies: 1840 | '@eslint/core': 0.10.0 1841 | levn: 0.4.1 1842 | 1843 | '@humanfs/core@0.19.1': {} 1844 | 1845 | '@humanfs/node@0.16.6': 1846 | dependencies: 1847 | '@humanfs/core': 0.19.1 1848 | '@humanwhocodes/retry': 0.3.1 1849 | 1850 | '@humanwhocodes/module-importer@1.0.1': {} 1851 | 1852 | '@humanwhocodes/retry@0.3.1': {} 1853 | 1854 | '@humanwhocodes/retry@0.4.1': {} 1855 | 1856 | '@isaacs/cliui@8.0.2': 1857 | dependencies: 1858 | string-width: 5.1.2 1859 | string-width-cjs: string-width@4.2.3 1860 | strip-ansi: 7.1.0 1861 | strip-ansi-cjs: strip-ansi@6.0.1 1862 | wrap-ansi: 8.1.0 1863 | wrap-ansi-cjs: wrap-ansi@7.0.0 1864 | 1865 | '@jridgewell/gen-mapping@0.3.8': 1866 | dependencies: 1867 | '@jridgewell/set-array': 1.2.1 1868 | '@jridgewell/sourcemap-codec': 1.5.0 1869 | '@jridgewell/trace-mapping': 0.3.25 1870 | 1871 | '@jridgewell/resolve-uri@3.1.2': {} 1872 | 1873 | '@jridgewell/set-array@1.2.1': {} 1874 | 1875 | '@jridgewell/sourcemap-codec@1.5.0': {} 1876 | 1877 | '@jridgewell/trace-mapping@0.3.25': 1878 | dependencies: 1879 | '@jridgewell/resolve-uri': 3.1.2 1880 | '@jridgewell/sourcemap-codec': 1.5.0 1881 | 1882 | '@nodelib/fs.scandir@2.1.5': 1883 | dependencies: 1884 | '@nodelib/fs.stat': 2.0.5 1885 | run-parallel: 1.2.0 1886 | 1887 | '@nodelib/fs.stat@2.0.5': {} 1888 | 1889 | '@nodelib/fs.walk@1.2.8': 1890 | dependencies: 1891 | '@nodelib/fs.scandir': 2.1.5 1892 | fastq: 1.18.0 1893 | 1894 | '@pixiv/three-vrm-animation@3.3.3(three@0.172.0)': 1895 | dependencies: 1896 | '@pixiv/three-vrm-core': 3.3.3(three@0.172.0) 1897 | '@pixiv/types-vrmc-vrm-1.0': 3.3.3 1898 | '@pixiv/types-vrmc-vrm-animation-1.0': 3.3.3 1899 | three: 0.172.0 1900 | 1901 | '@pixiv/three-vrm-core@3.3.2(three@0.172.0)': 1902 | dependencies: 1903 | '@pixiv/types-vrm-0.0': 3.3.2 1904 | '@pixiv/types-vrmc-vrm-1.0': 3.3.2 1905 | three: 0.172.0 1906 | 1907 | '@pixiv/three-vrm-core@3.3.3(three@0.172.0)': 1908 | dependencies: 1909 | '@pixiv/types-vrm-0.0': 3.3.3 1910 | '@pixiv/types-vrmc-vrm-1.0': 3.3.3 1911 | three: 0.172.0 1912 | 1913 | '@pixiv/three-vrm-materials-hdr-emissive-multiplier@3.3.2(three@0.172.0)': 1914 | dependencies: 1915 | '@pixiv/types-vrmc-materials-hdr-emissive-multiplier-1.0': 3.3.2 1916 | three: 0.172.0 1917 | 1918 | '@pixiv/three-vrm-materials-mtoon@3.3.2(three@0.172.0)': 1919 | dependencies: 1920 | '@pixiv/types-vrm-0.0': 3.3.2 1921 | '@pixiv/types-vrmc-materials-mtoon-1.0': 3.3.2 1922 | three: 0.172.0 1923 | 1924 | '@pixiv/three-vrm-materials-v0compat@3.3.2(three@0.172.0)': 1925 | dependencies: 1926 | '@pixiv/types-vrm-0.0': 3.3.2 1927 | '@pixiv/types-vrmc-materials-mtoon-1.0': 3.3.2 1928 | three: 0.172.0 1929 | 1930 | '@pixiv/three-vrm-node-constraint@3.3.2(three@0.172.0)': 1931 | dependencies: 1932 | '@pixiv/types-vrmc-node-constraint-1.0': 3.3.2 1933 | three: 0.172.0 1934 | 1935 | '@pixiv/three-vrm-springbone@3.3.2(three@0.172.0)': 1936 | dependencies: 1937 | '@pixiv/types-vrm-0.0': 3.3.2 1938 | '@pixiv/types-vrmc-springbone-1.0': 3.3.2 1939 | '@pixiv/types-vrmc-springbone-extended-collider-1.0': 3.3.2 1940 | three: 0.172.0 1941 | 1942 | '@pixiv/three-vrm@3.3.2(three@0.172.0)': 1943 | dependencies: 1944 | '@pixiv/three-vrm-core': 3.3.2(three@0.172.0) 1945 | '@pixiv/three-vrm-materials-hdr-emissive-multiplier': 3.3.2(three@0.172.0) 1946 | '@pixiv/three-vrm-materials-mtoon': 3.3.2(three@0.172.0) 1947 | '@pixiv/three-vrm-materials-v0compat': 3.3.2(three@0.172.0) 1948 | '@pixiv/three-vrm-node-constraint': 3.3.2(three@0.172.0) 1949 | '@pixiv/three-vrm-springbone': 3.3.2(three@0.172.0) 1950 | three: 0.172.0 1951 | 1952 | '@pixiv/types-vrm-0.0@3.3.2': {} 1953 | 1954 | '@pixiv/types-vrm-0.0@3.3.3': {} 1955 | 1956 | '@pixiv/types-vrmc-materials-hdr-emissive-multiplier-1.0@3.3.2': {} 1957 | 1958 | '@pixiv/types-vrmc-materials-mtoon-1.0@3.3.2': {} 1959 | 1960 | '@pixiv/types-vrmc-node-constraint-1.0@3.3.2': {} 1961 | 1962 | '@pixiv/types-vrmc-springbone-1.0@3.3.2': {} 1963 | 1964 | '@pixiv/types-vrmc-springbone-extended-collider-1.0@3.3.2': {} 1965 | 1966 | '@pixiv/types-vrmc-vrm-1.0@2.0.3': {} 1967 | 1968 | '@pixiv/types-vrmc-vrm-1.0@3.3.2': {} 1969 | 1970 | '@pixiv/types-vrmc-vrm-1.0@3.3.3': {} 1971 | 1972 | '@pixiv/types-vrmc-vrm-animation-1.0@3.3.3': 1973 | dependencies: 1974 | '@pixiv/types-vrmc-vrm-1.0': 2.0.3 1975 | 1976 | '@pkgjs/parseargs@0.11.0': 1977 | optional: true 1978 | 1979 | '@rollup/rollup-android-arm-eabi@4.30.1': 1980 | optional: true 1981 | 1982 | '@rollup/rollup-android-arm64@4.30.1': 1983 | optional: true 1984 | 1985 | '@rollup/rollup-darwin-arm64@4.30.1': 1986 | optional: true 1987 | 1988 | '@rollup/rollup-darwin-x64@4.30.1': 1989 | optional: true 1990 | 1991 | '@rollup/rollup-freebsd-arm64@4.30.1': 1992 | optional: true 1993 | 1994 | '@rollup/rollup-freebsd-x64@4.30.1': 1995 | optional: true 1996 | 1997 | '@rollup/rollup-linux-arm-gnueabihf@4.30.1': 1998 | optional: true 1999 | 2000 | '@rollup/rollup-linux-arm-musleabihf@4.30.1': 2001 | optional: true 2002 | 2003 | '@rollup/rollup-linux-arm64-gnu@4.30.1': 2004 | optional: true 2005 | 2006 | '@rollup/rollup-linux-arm64-musl@4.30.1': 2007 | optional: true 2008 | 2009 | '@rollup/rollup-linux-loongarch64-gnu@4.30.1': 2010 | optional: true 2011 | 2012 | '@rollup/rollup-linux-powerpc64le-gnu@4.30.1': 2013 | optional: true 2014 | 2015 | '@rollup/rollup-linux-riscv64-gnu@4.30.1': 2016 | optional: true 2017 | 2018 | '@rollup/rollup-linux-s390x-gnu@4.30.1': 2019 | optional: true 2020 | 2021 | '@rollup/rollup-linux-x64-gnu@4.30.1': 2022 | optional: true 2023 | 2024 | '@rollup/rollup-linux-x64-musl@4.30.1': 2025 | optional: true 2026 | 2027 | '@rollup/rollup-win32-arm64-msvc@4.30.1': 2028 | optional: true 2029 | 2030 | '@rollup/rollup-win32-ia32-msvc@4.30.1': 2031 | optional: true 2032 | 2033 | '@rollup/rollup-win32-x64-msvc@4.30.1': 2034 | optional: true 2035 | 2036 | '@tauri-apps/api@1.6.0': {} 2037 | 2038 | '@tauri-apps/cli-darwin-arm64@1.6.3': 2039 | optional: true 2040 | 2041 | '@tauri-apps/cli-darwin-x64@1.6.3': 2042 | optional: true 2043 | 2044 | '@tauri-apps/cli-linux-arm-gnueabihf@1.6.3': 2045 | optional: true 2046 | 2047 | '@tauri-apps/cli-linux-arm64-gnu@1.6.3': 2048 | optional: true 2049 | 2050 | '@tauri-apps/cli-linux-arm64-musl@1.6.3': 2051 | optional: true 2052 | 2053 | '@tauri-apps/cli-linux-x64-gnu@1.6.3': 2054 | optional: true 2055 | 2056 | '@tauri-apps/cli-linux-x64-musl@1.6.3': 2057 | optional: true 2058 | 2059 | '@tauri-apps/cli-win32-arm64-msvc@1.6.3': 2060 | optional: true 2061 | 2062 | '@tauri-apps/cli-win32-ia32-msvc@1.6.3': 2063 | optional: true 2064 | 2065 | '@tauri-apps/cli-win32-x64-msvc@1.6.3': 2066 | optional: true 2067 | 2068 | '@tauri-apps/cli@1.6.3': 2069 | dependencies: 2070 | semver: 7.6.3 2071 | optionalDependencies: 2072 | '@tauri-apps/cli-darwin-arm64': 1.6.3 2073 | '@tauri-apps/cli-darwin-x64': 1.6.3 2074 | '@tauri-apps/cli-linux-arm-gnueabihf': 1.6.3 2075 | '@tauri-apps/cli-linux-arm64-gnu': 1.6.3 2076 | '@tauri-apps/cli-linux-arm64-musl': 1.6.3 2077 | '@tauri-apps/cli-linux-x64-gnu': 1.6.3 2078 | '@tauri-apps/cli-linux-x64-musl': 1.6.3 2079 | '@tauri-apps/cli-win32-arm64-msvc': 1.6.3 2080 | '@tauri-apps/cli-win32-ia32-msvc': 1.6.3 2081 | '@tauri-apps/cli-win32-x64-msvc': 1.6.3 2082 | 2083 | '@tweenjs/tween.js@23.1.3': {} 2084 | 2085 | '@types/babel__core@7.20.5': 2086 | dependencies: 2087 | '@babel/parser': 7.26.5 2088 | '@babel/types': 7.26.5 2089 | '@types/babel__generator': 7.6.8 2090 | '@types/babel__template': 7.4.4 2091 | '@types/babel__traverse': 7.20.6 2092 | 2093 | '@types/babel__generator@7.6.8': 2094 | dependencies: 2095 | '@babel/types': 7.26.5 2096 | 2097 | '@types/babel__template@7.4.4': 2098 | dependencies: 2099 | '@babel/parser': 7.26.5 2100 | '@babel/types': 7.26.5 2101 | 2102 | '@types/babel__traverse@7.20.6': 2103 | dependencies: 2104 | '@babel/types': 7.26.5 2105 | 2106 | '@types/cookie@0.6.0': {} 2107 | 2108 | '@types/estree@1.0.6': {} 2109 | 2110 | '@types/json-schema@7.0.15': {} 2111 | 2112 | '@types/prop-types@15.7.14': {} 2113 | 2114 | '@types/react-dom@18.3.5(@types/react@18.3.18)': 2115 | dependencies: 2116 | '@types/react': 18.3.18 2117 | 2118 | '@types/react@18.3.18': 2119 | dependencies: 2120 | '@types/prop-types': 15.7.14 2121 | csstype: 3.1.3 2122 | 2123 | '@types/stats.js@0.17.3': {} 2124 | 2125 | '@types/three@0.172.0': 2126 | dependencies: 2127 | '@tweenjs/tween.js': 23.1.3 2128 | '@types/stats.js': 0.17.3 2129 | '@types/webxr': 0.5.20 2130 | '@webgpu/types': 0.1.52 2131 | fflate: 0.8.2 2132 | meshoptimizer: 0.18.1 2133 | 2134 | '@types/webxr@0.5.20': {} 2135 | 2136 | '@typescript-eslint/eslint-plugin@8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.6.3))(eslint@9.18.0(jiti@1.21.7))(typescript@5.6.3)': 2137 | dependencies: 2138 | '@eslint-community/regexpp': 4.12.1 2139 | '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.6.3) 2140 | '@typescript-eslint/scope-manager': 8.19.1 2141 | '@typescript-eslint/type-utils': 8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.6.3) 2142 | '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.6.3) 2143 | '@typescript-eslint/visitor-keys': 8.19.1 2144 | eslint: 9.18.0(jiti@1.21.7) 2145 | graphemer: 1.4.0 2146 | ignore: 5.3.2 2147 | natural-compare: 1.4.0 2148 | ts-api-utils: 2.0.0(typescript@5.6.3) 2149 | typescript: 5.6.3 2150 | transitivePeerDependencies: 2151 | - supports-color 2152 | 2153 | '@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.6.3)': 2154 | dependencies: 2155 | '@typescript-eslint/scope-manager': 8.19.1 2156 | '@typescript-eslint/types': 8.19.1 2157 | '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.6.3) 2158 | '@typescript-eslint/visitor-keys': 8.19.1 2159 | debug: 4.4.0 2160 | eslint: 9.18.0(jiti@1.21.7) 2161 | typescript: 5.6.3 2162 | transitivePeerDependencies: 2163 | - supports-color 2164 | 2165 | '@typescript-eslint/scope-manager@8.19.1': 2166 | dependencies: 2167 | '@typescript-eslint/types': 8.19.1 2168 | '@typescript-eslint/visitor-keys': 8.19.1 2169 | 2170 | '@typescript-eslint/type-utils@8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.6.3)': 2171 | dependencies: 2172 | '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.6.3) 2173 | '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.6.3) 2174 | debug: 4.4.0 2175 | eslint: 9.18.0(jiti@1.21.7) 2176 | ts-api-utils: 2.0.0(typescript@5.6.3) 2177 | typescript: 5.6.3 2178 | transitivePeerDependencies: 2179 | - supports-color 2180 | 2181 | '@typescript-eslint/types@8.19.1': {} 2182 | 2183 | '@typescript-eslint/typescript-estree@8.19.1(typescript@5.6.3)': 2184 | dependencies: 2185 | '@typescript-eslint/types': 8.19.1 2186 | '@typescript-eslint/visitor-keys': 8.19.1 2187 | debug: 4.4.0 2188 | fast-glob: 3.3.3 2189 | is-glob: 4.0.3 2190 | minimatch: 9.0.5 2191 | semver: 7.6.3 2192 | ts-api-utils: 2.0.0(typescript@5.6.3) 2193 | typescript: 5.6.3 2194 | transitivePeerDependencies: 2195 | - supports-color 2196 | 2197 | '@typescript-eslint/utils@8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.6.3)': 2198 | dependencies: 2199 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@1.21.7)) 2200 | '@typescript-eslint/scope-manager': 8.19.1 2201 | '@typescript-eslint/types': 8.19.1 2202 | '@typescript-eslint/typescript-estree': 8.19.1(typescript@5.6.3) 2203 | eslint: 9.18.0(jiti@1.21.7) 2204 | typescript: 5.6.3 2205 | transitivePeerDependencies: 2206 | - supports-color 2207 | 2208 | '@typescript-eslint/visitor-keys@8.19.1': 2209 | dependencies: 2210 | '@typescript-eslint/types': 8.19.1 2211 | eslint-visitor-keys: 4.2.0 2212 | 2213 | '@vitejs/plugin-react@4.3.4(vite@6.0.7(jiti@1.21.7)(yaml@2.7.0))': 2214 | dependencies: 2215 | '@babel/core': 7.26.0 2216 | '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) 2217 | '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) 2218 | '@types/babel__core': 7.20.5 2219 | react-refresh: 0.14.2 2220 | vite: 6.0.7(jiti@1.21.7)(yaml@2.7.0) 2221 | transitivePeerDependencies: 2222 | - supports-color 2223 | 2224 | '@webgpu/types@0.1.52': {} 2225 | 2226 | acorn-jsx@5.3.2(acorn@8.14.0): 2227 | dependencies: 2228 | acorn: 8.14.0 2229 | 2230 | acorn@8.14.0: {} 2231 | 2232 | ajv@6.12.6: 2233 | dependencies: 2234 | fast-deep-equal: 3.1.3 2235 | fast-json-stable-stringify: 2.1.0 2236 | json-schema-traverse: 0.4.1 2237 | uri-js: 4.4.1 2238 | 2239 | ansi-regex@5.0.1: {} 2240 | 2241 | ansi-regex@6.1.0: {} 2242 | 2243 | ansi-styles@4.3.0: 2244 | dependencies: 2245 | color-convert: 2.0.1 2246 | 2247 | ansi-styles@6.2.1: {} 2248 | 2249 | any-promise@1.3.0: {} 2250 | 2251 | anymatch@3.1.3: 2252 | dependencies: 2253 | normalize-path: 3.0.0 2254 | picomatch: 2.3.1 2255 | 2256 | arg@5.0.2: {} 2257 | 2258 | argparse@2.0.1: {} 2259 | 2260 | autoprefixer@10.4.20(postcss@8.5.1): 2261 | dependencies: 2262 | browserslist: 4.24.4 2263 | caniuse-lite: 1.0.30001692 2264 | fraction.js: 4.3.7 2265 | normalize-range: 0.1.2 2266 | picocolors: 1.1.1 2267 | postcss: 8.5.1 2268 | postcss-value-parser: 4.2.0 2269 | 2270 | balanced-match@1.0.2: {} 2271 | 2272 | binary-extensions@2.3.0: {} 2273 | 2274 | brace-expansion@1.1.11: 2275 | dependencies: 2276 | balanced-match: 1.0.2 2277 | concat-map: 0.0.1 2278 | 2279 | brace-expansion@2.0.1: 2280 | dependencies: 2281 | balanced-match: 1.0.2 2282 | 2283 | braces@3.0.3: 2284 | dependencies: 2285 | fill-range: 7.1.1 2286 | 2287 | browserslist@4.24.4: 2288 | dependencies: 2289 | caniuse-lite: 1.0.30001692 2290 | electron-to-chromium: 1.5.80 2291 | node-releases: 2.0.19 2292 | update-browserslist-db: 1.1.2(browserslist@4.24.4) 2293 | 2294 | callsites@3.1.0: {} 2295 | 2296 | camelcase-css@2.0.1: {} 2297 | 2298 | caniuse-lite@1.0.30001692: {} 2299 | 2300 | chalk@4.1.2: 2301 | dependencies: 2302 | ansi-styles: 4.3.0 2303 | supports-color: 7.2.0 2304 | 2305 | chokidar@3.6.0: 2306 | dependencies: 2307 | anymatch: 3.1.3 2308 | braces: 3.0.3 2309 | glob-parent: 5.1.2 2310 | is-binary-path: 2.1.0 2311 | is-glob: 4.0.3 2312 | normalize-path: 3.0.0 2313 | readdirp: 3.6.0 2314 | optionalDependencies: 2315 | fsevents: 2.3.3 2316 | 2317 | color-convert@2.0.1: 2318 | dependencies: 2319 | color-name: 1.1.4 2320 | 2321 | color-name@1.1.4: {} 2322 | 2323 | commander@4.1.1: {} 2324 | 2325 | concat-map@0.0.1: {} 2326 | 2327 | convert-source-map@2.0.0: {} 2328 | 2329 | cookie@1.0.2: {} 2330 | 2331 | cross-spawn@7.0.6: 2332 | dependencies: 2333 | path-key: 3.1.1 2334 | shebang-command: 2.0.0 2335 | which: 2.0.2 2336 | 2337 | cssesc@3.0.0: {} 2338 | 2339 | csstype@3.1.3: {} 2340 | 2341 | debug@4.4.0: 2342 | dependencies: 2343 | ms: 2.1.3 2344 | 2345 | deep-is@0.1.4: {} 2346 | 2347 | didyoumean@1.2.2: {} 2348 | 2349 | dlv@1.1.3: {} 2350 | 2351 | eastasianwidth@0.2.0: {} 2352 | 2353 | electron-to-chromium@1.5.80: {} 2354 | 2355 | emoji-regex@8.0.0: {} 2356 | 2357 | emoji-regex@9.2.2: {} 2358 | 2359 | esbuild@0.24.2: 2360 | optionalDependencies: 2361 | '@esbuild/aix-ppc64': 0.24.2 2362 | '@esbuild/android-arm': 0.24.2 2363 | '@esbuild/android-arm64': 0.24.2 2364 | '@esbuild/android-x64': 0.24.2 2365 | '@esbuild/darwin-arm64': 0.24.2 2366 | '@esbuild/darwin-x64': 0.24.2 2367 | '@esbuild/freebsd-arm64': 0.24.2 2368 | '@esbuild/freebsd-x64': 0.24.2 2369 | '@esbuild/linux-arm': 0.24.2 2370 | '@esbuild/linux-arm64': 0.24.2 2371 | '@esbuild/linux-ia32': 0.24.2 2372 | '@esbuild/linux-loong64': 0.24.2 2373 | '@esbuild/linux-mips64el': 0.24.2 2374 | '@esbuild/linux-ppc64': 0.24.2 2375 | '@esbuild/linux-riscv64': 0.24.2 2376 | '@esbuild/linux-s390x': 0.24.2 2377 | '@esbuild/linux-x64': 0.24.2 2378 | '@esbuild/netbsd-arm64': 0.24.2 2379 | '@esbuild/netbsd-x64': 0.24.2 2380 | '@esbuild/openbsd-arm64': 0.24.2 2381 | '@esbuild/openbsd-x64': 0.24.2 2382 | '@esbuild/sunos-x64': 0.24.2 2383 | '@esbuild/win32-arm64': 0.24.2 2384 | '@esbuild/win32-ia32': 0.24.2 2385 | '@esbuild/win32-x64': 0.24.2 2386 | 2387 | escalade@3.2.0: {} 2388 | 2389 | escape-string-regexp@4.0.0: {} 2390 | 2391 | eslint-plugin-react-hooks@5.1.0(eslint@9.18.0(jiti@1.21.7)): 2392 | dependencies: 2393 | eslint: 9.18.0(jiti@1.21.7) 2394 | 2395 | eslint-plugin-react-refresh@0.4.18(eslint@9.18.0(jiti@1.21.7)): 2396 | dependencies: 2397 | eslint: 9.18.0(jiti@1.21.7) 2398 | 2399 | eslint-scope@8.2.0: 2400 | dependencies: 2401 | esrecurse: 4.3.0 2402 | estraverse: 5.3.0 2403 | 2404 | eslint-visitor-keys@3.4.3: {} 2405 | 2406 | eslint-visitor-keys@4.2.0: {} 2407 | 2408 | eslint@9.18.0(jiti@1.21.7): 2409 | dependencies: 2410 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@1.21.7)) 2411 | '@eslint-community/regexpp': 4.12.1 2412 | '@eslint/config-array': 0.19.1 2413 | '@eslint/core': 0.10.0 2414 | '@eslint/eslintrc': 3.2.0 2415 | '@eslint/js': 9.18.0 2416 | '@eslint/plugin-kit': 0.2.5 2417 | '@humanfs/node': 0.16.6 2418 | '@humanwhocodes/module-importer': 1.0.1 2419 | '@humanwhocodes/retry': 0.4.1 2420 | '@types/estree': 1.0.6 2421 | '@types/json-schema': 7.0.15 2422 | ajv: 6.12.6 2423 | chalk: 4.1.2 2424 | cross-spawn: 7.0.6 2425 | debug: 4.4.0 2426 | escape-string-regexp: 4.0.0 2427 | eslint-scope: 8.2.0 2428 | eslint-visitor-keys: 4.2.0 2429 | espree: 10.3.0 2430 | esquery: 1.6.0 2431 | esutils: 2.0.3 2432 | fast-deep-equal: 3.1.3 2433 | file-entry-cache: 8.0.0 2434 | find-up: 5.0.0 2435 | glob-parent: 6.0.2 2436 | ignore: 5.3.2 2437 | imurmurhash: 0.1.4 2438 | is-glob: 4.0.3 2439 | json-stable-stringify-without-jsonify: 1.0.1 2440 | lodash.merge: 4.6.2 2441 | minimatch: 3.1.2 2442 | natural-compare: 1.4.0 2443 | optionator: 0.9.4 2444 | optionalDependencies: 2445 | jiti: 1.21.7 2446 | transitivePeerDependencies: 2447 | - supports-color 2448 | 2449 | espree@10.3.0: 2450 | dependencies: 2451 | acorn: 8.14.0 2452 | acorn-jsx: 5.3.2(acorn@8.14.0) 2453 | eslint-visitor-keys: 4.2.0 2454 | 2455 | esquery@1.6.0: 2456 | dependencies: 2457 | estraverse: 5.3.0 2458 | 2459 | esrecurse@4.3.0: 2460 | dependencies: 2461 | estraverse: 5.3.0 2462 | 2463 | estraverse@5.3.0: {} 2464 | 2465 | esutils@2.0.3: {} 2466 | 2467 | fast-deep-equal@3.1.3: {} 2468 | 2469 | fast-glob@3.3.3: 2470 | dependencies: 2471 | '@nodelib/fs.stat': 2.0.5 2472 | '@nodelib/fs.walk': 1.2.8 2473 | glob-parent: 5.1.2 2474 | merge2: 1.4.1 2475 | micromatch: 4.0.8 2476 | 2477 | fast-json-stable-stringify@2.1.0: {} 2478 | 2479 | fast-levenshtein@2.0.6: {} 2480 | 2481 | fastq@1.18.0: 2482 | dependencies: 2483 | reusify: 1.0.4 2484 | 2485 | fflate@0.8.2: {} 2486 | 2487 | file-entry-cache@8.0.0: 2488 | dependencies: 2489 | flat-cache: 4.0.1 2490 | 2491 | fill-range@7.1.1: 2492 | dependencies: 2493 | to-regex-range: 5.0.1 2494 | 2495 | find-up@5.0.0: 2496 | dependencies: 2497 | locate-path: 6.0.0 2498 | path-exists: 4.0.0 2499 | 2500 | flat-cache@4.0.1: 2501 | dependencies: 2502 | flatted: 3.3.2 2503 | keyv: 4.5.4 2504 | 2505 | flatted@3.3.2: {} 2506 | 2507 | foreground-child@3.3.0: 2508 | dependencies: 2509 | cross-spawn: 7.0.6 2510 | signal-exit: 4.1.0 2511 | 2512 | fraction.js@4.3.7: {} 2513 | 2514 | fsevents@2.3.3: 2515 | optional: true 2516 | 2517 | function-bind@1.1.2: {} 2518 | 2519 | gensync@1.0.0-beta.2: {} 2520 | 2521 | glob-parent@5.1.2: 2522 | dependencies: 2523 | is-glob: 4.0.3 2524 | 2525 | glob-parent@6.0.2: 2526 | dependencies: 2527 | is-glob: 4.0.3 2528 | 2529 | glob@10.4.5: 2530 | dependencies: 2531 | foreground-child: 3.3.0 2532 | jackspeak: 3.4.3 2533 | minimatch: 9.0.5 2534 | minipass: 7.1.2 2535 | package-json-from-dist: 1.0.1 2536 | path-scurry: 1.11.1 2537 | 2538 | globals@11.12.0: {} 2539 | 2540 | globals@14.0.0: {} 2541 | 2542 | globals@15.14.0: {} 2543 | 2544 | globrex@0.1.2: {} 2545 | 2546 | graphemer@1.4.0: {} 2547 | 2548 | has-flag@4.0.0: {} 2549 | 2550 | hasown@2.0.2: 2551 | dependencies: 2552 | function-bind: 1.1.2 2553 | 2554 | ignore@5.3.2: {} 2555 | 2556 | import-fresh@3.3.0: 2557 | dependencies: 2558 | parent-module: 1.0.1 2559 | resolve-from: 4.0.0 2560 | 2561 | imurmurhash@0.1.4: {} 2562 | 2563 | is-binary-path@2.1.0: 2564 | dependencies: 2565 | binary-extensions: 2.3.0 2566 | 2567 | is-core-module@2.16.1: 2568 | dependencies: 2569 | hasown: 2.0.2 2570 | 2571 | is-extglob@2.1.1: {} 2572 | 2573 | is-fullwidth-code-point@3.0.0: {} 2574 | 2575 | is-glob@4.0.3: 2576 | dependencies: 2577 | is-extglob: 2.1.1 2578 | 2579 | is-number@7.0.0: {} 2580 | 2581 | isexe@2.0.0: {} 2582 | 2583 | jackspeak@3.4.3: 2584 | dependencies: 2585 | '@isaacs/cliui': 8.0.2 2586 | optionalDependencies: 2587 | '@pkgjs/parseargs': 0.11.0 2588 | 2589 | jiti@1.21.7: {} 2590 | 2591 | js-tokens@4.0.0: {} 2592 | 2593 | js-yaml@4.1.0: 2594 | dependencies: 2595 | argparse: 2.0.1 2596 | 2597 | jsesc@3.1.0: {} 2598 | 2599 | json-buffer@3.0.1: {} 2600 | 2601 | json-schema-traverse@0.4.1: {} 2602 | 2603 | json-stable-stringify-without-jsonify@1.0.1: {} 2604 | 2605 | json5@2.2.3: {} 2606 | 2607 | keyv@4.5.4: 2608 | dependencies: 2609 | json-buffer: 3.0.1 2610 | 2611 | levn@0.4.1: 2612 | dependencies: 2613 | prelude-ls: 1.2.1 2614 | type-check: 0.4.0 2615 | 2616 | lilconfig@3.1.3: {} 2617 | 2618 | lines-and-columns@1.2.4: {} 2619 | 2620 | locate-path@6.0.0: 2621 | dependencies: 2622 | p-locate: 5.0.0 2623 | 2624 | lodash.merge@4.6.2: {} 2625 | 2626 | loose-envify@1.4.0: 2627 | dependencies: 2628 | js-tokens: 4.0.0 2629 | 2630 | lru-cache@10.4.3: {} 2631 | 2632 | lru-cache@5.1.1: 2633 | dependencies: 2634 | yallist: 3.1.1 2635 | 2636 | merge2@1.4.1: {} 2637 | 2638 | meshoptimizer@0.18.1: {} 2639 | 2640 | micromatch@4.0.8: 2641 | dependencies: 2642 | braces: 3.0.3 2643 | picomatch: 2.3.1 2644 | 2645 | minimatch@3.1.2: 2646 | dependencies: 2647 | brace-expansion: 1.1.11 2648 | 2649 | minimatch@9.0.5: 2650 | dependencies: 2651 | brace-expansion: 2.0.1 2652 | 2653 | minipass@7.1.2: {} 2654 | 2655 | ms@2.1.3: {} 2656 | 2657 | mz@2.7.0: 2658 | dependencies: 2659 | any-promise: 1.3.0 2660 | object-assign: 4.1.1 2661 | thenify-all: 1.6.0 2662 | 2663 | nanoid@3.3.8: {} 2664 | 2665 | natural-compare@1.4.0: {} 2666 | 2667 | node-releases@2.0.19: {} 2668 | 2669 | normalize-path@3.0.0: {} 2670 | 2671 | normalize-range@0.1.2: {} 2672 | 2673 | object-assign@4.1.1: {} 2674 | 2675 | object-hash@3.0.0: {} 2676 | 2677 | optionator@0.9.4: 2678 | dependencies: 2679 | deep-is: 0.1.4 2680 | fast-levenshtein: 2.0.6 2681 | levn: 0.4.1 2682 | prelude-ls: 1.2.1 2683 | type-check: 0.4.0 2684 | word-wrap: 1.2.5 2685 | 2686 | p-limit@3.1.0: 2687 | dependencies: 2688 | yocto-queue: 0.1.0 2689 | 2690 | p-locate@5.0.0: 2691 | dependencies: 2692 | p-limit: 3.1.0 2693 | 2694 | package-json-from-dist@1.0.1: {} 2695 | 2696 | parent-module@1.0.1: 2697 | dependencies: 2698 | callsites: 3.1.0 2699 | 2700 | path-exists@4.0.0: {} 2701 | 2702 | path-key@3.1.1: {} 2703 | 2704 | path-parse@1.0.7: {} 2705 | 2706 | path-scurry@1.11.1: 2707 | dependencies: 2708 | lru-cache: 10.4.3 2709 | minipass: 7.1.2 2710 | 2711 | picocolors@1.1.1: {} 2712 | 2713 | picomatch@2.3.1: {} 2714 | 2715 | pify@2.3.0: {} 2716 | 2717 | pirates@4.0.6: {} 2718 | 2719 | postcss-import@15.1.0(postcss@8.5.1): 2720 | dependencies: 2721 | postcss: 8.5.1 2722 | postcss-value-parser: 4.2.0 2723 | read-cache: 1.0.0 2724 | resolve: 1.22.10 2725 | 2726 | postcss-js@4.0.1(postcss@8.5.1): 2727 | dependencies: 2728 | camelcase-css: 2.0.1 2729 | postcss: 8.5.1 2730 | 2731 | postcss-load-config@4.0.2(postcss@8.5.1): 2732 | dependencies: 2733 | lilconfig: 3.1.3 2734 | yaml: 2.7.0 2735 | optionalDependencies: 2736 | postcss: 8.5.1 2737 | 2738 | postcss-nested@6.2.0(postcss@8.5.1): 2739 | dependencies: 2740 | postcss: 8.5.1 2741 | postcss-selector-parser: 6.1.2 2742 | 2743 | postcss-selector-parser@6.1.2: 2744 | dependencies: 2745 | cssesc: 3.0.0 2746 | util-deprecate: 1.0.2 2747 | 2748 | postcss-value-parser@4.2.0: {} 2749 | 2750 | postcss@8.5.1: 2751 | dependencies: 2752 | nanoid: 3.3.8 2753 | picocolors: 1.1.1 2754 | source-map-js: 1.2.1 2755 | 2756 | prelude-ls@1.2.1: {} 2757 | 2758 | prettier@3.4.2: {} 2759 | 2760 | punycode@2.3.1: {} 2761 | 2762 | queue-microtask@1.2.3: {} 2763 | 2764 | react-dom@18.3.1(react@18.3.1): 2765 | dependencies: 2766 | loose-envify: 1.4.0 2767 | react: 18.3.1 2768 | scheduler: 0.23.2 2769 | 2770 | react-refresh@0.14.2: {} 2771 | 2772 | react-router-dom@7.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 2773 | dependencies: 2774 | react: 18.3.1 2775 | react-dom: 18.3.1(react@18.3.1) 2776 | react-router: 7.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 2777 | 2778 | react-router@7.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 2779 | dependencies: 2780 | '@types/cookie': 0.6.0 2781 | cookie: 1.0.2 2782 | react: 18.3.1 2783 | set-cookie-parser: 2.7.1 2784 | turbo-stream: 2.4.0 2785 | optionalDependencies: 2786 | react-dom: 18.3.1(react@18.3.1) 2787 | 2788 | react@18.3.1: 2789 | dependencies: 2790 | loose-envify: 1.4.0 2791 | 2792 | read-cache@1.0.0: 2793 | dependencies: 2794 | pify: 2.3.0 2795 | 2796 | readdirp@3.6.0: 2797 | dependencies: 2798 | picomatch: 2.3.1 2799 | 2800 | resolve-from@4.0.0: {} 2801 | 2802 | resolve@1.22.10: 2803 | dependencies: 2804 | is-core-module: 2.16.1 2805 | path-parse: 1.0.7 2806 | supports-preserve-symlinks-flag: 1.0.0 2807 | 2808 | reusify@1.0.4: {} 2809 | 2810 | rollup@4.30.1: 2811 | dependencies: 2812 | '@types/estree': 1.0.6 2813 | optionalDependencies: 2814 | '@rollup/rollup-android-arm-eabi': 4.30.1 2815 | '@rollup/rollup-android-arm64': 4.30.1 2816 | '@rollup/rollup-darwin-arm64': 4.30.1 2817 | '@rollup/rollup-darwin-x64': 4.30.1 2818 | '@rollup/rollup-freebsd-arm64': 4.30.1 2819 | '@rollup/rollup-freebsd-x64': 4.30.1 2820 | '@rollup/rollup-linux-arm-gnueabihf': 4.30.1 2821 | '@rollup/rollup-linux-arm-musleabihf': 4.30.1 2822 | '@rollup/rollup-linux-arm64-gnu': 4.30.1 2823 | '@rollup/rollup-linux-arm64-musl': 4.30.1 2824 | '@rollup/rollup-linux-loongarch64-gnu': 4.30.1 2825 | '@rollup/rollup-linux-powerpc64le-gnu': 4.30.1 2826 | '@rollup/rollup-linux-riscv64-gnu': 4.30.1 2827 | '@rollup/rollup-linux-s390x-gnu': 4.30.1 2828 | '@rollup/rollup-linux-x64-gnu': 4.30.1 2829 | '@rollup/rollup-linux-x64-musl': 4.30.1 2830 | '@rollup/rollup-win32-arm64-msvc': 4.30.1 2831 | '@rollup/rollup-win32-ia32-msvc': 4.30.1 2832 | '@rollup/rollup-win32-x64-msvc': 4.30.1 2833 | fsevents: 2.3.3 2834 | 2835 | run-parallel@1.2.0: 2836 | dependencies: 2837 | queue-microtask: 1.2.3 2838 | 2839 | scheduler@0.23.2: 2840 | dependencies: 2841 | loose-envify: 1.4.0 2842 | 2843 | semver@6.3.1: {} 2844 | 2845 | semver@7.6.3: {} 2846 | 2847 | set-cookie-parser@2.7.1: {} 2848 | 2849 | shebang-command@2.0.0: 2850 | dependencies: 2851 | shebang-regex: 3.0.0 2852 | 2853 | shebang-regex@3.0.0: {} 2854 | 2855 | signal-exit@4.1.0: {} 2856 | 2857 | source-map-js@1.2.1: {} 2858 | 2859 | string-width@4.2.3: 2860 | dependencies: 2861 | emoji-regex: 8.0.0 2862 | is-fullwidth-code-point: 3.0.0 2863 | strip-ansi: 6.0.1 2864 | 2865 | string-width@5.1.2: 2866 | dependencies: 2867 | eastasianwidth: 0.2.0 2868 | emoji-regex: 9.2.2 2869 | strip-ansi: 7.1.0 2870 | 2871 | strip-ansi@6.0.1: 2872 | dependencies: 2873 | ansi-regex: 5.0.1 2874 | 2875 | strip-ansi@7.1.0: 2876 | dependencies: 2877 | ansi-regex: 6.1.0 2878 | 2879 | strip-json-comments@3.1.1: {} 2880 | 2881 | sucrase@3.35.0: 2882 | dependencies: 2883 | '@jridgewell/gen-mapping': 0.3.8 2884 | commander: 4.1.1 2885 | glob: 10.4.5 2886 | lines-and-columns: 1.2.4 2887 | mz: 2.7.0 2888 | pirates: 4.0.6 2889 | ts-interface-checker: 0.1.13 2890 | 2891 | supports-color@7.2.0: 2892 | dependencies: 2893 | has-flag: 4.0.0 2894 | 2895 | supports-preserve-symlinks-flag@1.0.0: {} 2896 | 2897 | tailwindcss@3.4.17: 2898 | dependencies: 2899 | '@alloc/quick-lru': 5.2.0 2900 | arg: 5.0.2 2901 | chokidar: 3.6.0 2902 | didyoumean: 1.2.2 2903 | dlv: 1.1.3 2904 | fast-glob: 3.3.3 2905 | glob-parent: 6.0.2 2906 | is-glob: 4.0.3 2907 | jiti: 1.21.7 2908 | lilconfig: 3.1.3 2909 | micromatch: 4.0.8 2910 | normalize-path: 3.0.0 2911 | object-hash: 3.0.0 2912 | picocolors: 1.1.1 2913 | postcss: 8.5.1 2914 | postcss-import: 15.1.0(postcss@8.5.1) 2915 | postcss-js: 4.0.1(postcss@8.5.1) 2916 | postcss-load-config: 4.0.2(postcss@8.5.1) 2917 | postcss-nested: 6.2.0(postcss@8.5.1) 2918 | postcss-selector-parser: 6.1.2 2919 | resolve: 1.22.10 2920 | sucrase: 3.35.0 2921 | transitivePeerDependencies: 2922 | - ts-node 2923 | 2924 | thenify-all@1.6.0: 2925 | dependencies: 2926 | thenify: 3.3.1 2927 | 2928 | thenify@3.3.1: 2929 | dependencies: 2930 | any-promise: 1.3.0 2931 | 2932 | three@0.172.0: {} 2933 | 2934 | to-regex-range@5.0.1: 2935 | dependencies: 2936 | is-number: 7.0.0 2937 | 2938 | ts-api-utils@2.0.0(typescript@5.6.3): 2939 | dependencies: 2940 | typescript: 5.6.3 2941 | 2942 | ts-interface-checker@0.1.13: {} 2943 | 2944 | tsconfck@3.1.4(typescript@5.6.3): 2945 | optionalDependencies: 2946 | typescript: 5.6.3 2947 | 2948 | turbo-stream@2.4.0: {} 2949 | 2950 | type-check@0.4.0: 2951 | dependencies: 2952 | prelude-ls: 1.2.1 2953 | 2954 | typescript-eslint@8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.6.3): 2955 | dependencies: 2956 | '@typescript-eslint/eslint-plugin': 8.19.1(@typescript-eslint/parser@8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.6.3))(eslint@9.18.0(jiti@1.21.7))(typescript@5.6.3) 2957 | '@typescript-eslint/parser': 8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.6.3) 2958 | '@typescript-eslint/utils': 8.19.1(eslint@9.18.0(jiti@1.21.7))(typescript@5.6.3) 2959 | eslint: 9.18.0(jiti@1.21.7) 2960 | typescript: 5.6.3 2961 | transitivePeerDependencies: 2962 | - supports-color 2963 | 2964 | typescript@5.6.3: {} 2965 | 2966 | update-browserslist-db@1.1.2(browserslist@4.24.4): 2967 | dependencies: 2968 | browserslist: 4.24.4 2969 | escalade: 3.2.0 2970 | picocolors: 1.1.1 2971 | 2972 | uri-js@4.4.1: 2973 | dependencies: 2974 | punycode: 2.3.1 2975 | 2976 | util-deprecate@1.0.2: {} 2977 | 2978 | vite-tsconfig-paths@5.1.4(typescript@5.6.3)(vite@6.0.7(jiti@1.21.7)(yaml@2.7.0)): 2979 | dependencies: 2980 | debug: 4.4.0 2981 | globrex: 0.1.2 2982 | tsconfck: 3.1.4(typescript@5.6.3) 2983 | optionalDependencies: 2984 | vite: 6.0.7(jiti@1.21.7)(yaml@2.7.0) 2985 | transitivePeerDependencies: 2986 | - supports-color 2987 | - typescript 2988 | 2989 | vite@6.0.7(jiti@1.21.7)(yaml@2.7.0): 2990 | dependencies: 2991 | esbuild: 0.24.2 2992 | postcss: 8.5.1 2993 | rollup: 4.30.1 2994 | optionalDependencies: 2995 | fsevents: 2.3.3 2996 | jiti: 1.21.7 2997 | yaml: 2.7.0 2998 | 2999 | which@2.0.2: 3000 | dependencies: 3001 | isexe: 2.0.0 3002 | 3003 | word-wrap@1.2.5: {} 3004 | 3005 | wrap-ansi@7.0.0: 3006 | dependencies: 3007 | ansi-styles: 4.3.0 3008 | string-width: 4.2.3 3009 | strip-ansi: 6.0.1 3010 | 3011 | wrap-ansi@8.1.0: 3012 | dependencies: 3013 | ansi-styles: 6.2.1 3014 | string-width: 5.1.2 3015 | strip-ansi: 7.1.0 3016 | 3017 | yallist@3.1.1: {} 3018 | 3019 | yaml@2.7.0: {} 3020 | 3021 | yocto-queue@0.1.0: {} 3022 | --------------------------------------------------------------------------------